@sma1lboy/kobe 0.7.38 → 0.7.40
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 +186 -170
- package/package.json +1 -1
package/dist/cli/index.js
CHANGED
|
@@ -1,103 +1,104 @@
|
|
|
1
1
|
#!/usr/bin/env bun
|
|
2
2
|
// @bun
|
|
3
|
-
var hL=Object.defineProperty;var PL=(f)=>f;function vL(f,J){this[f]=PL.bind(null,J)}var jf=(f,J)=>{for(var Y in J)hL(f,Y,{get:J[Y],enumerable:!0,configurable:!0,set:vL.bind(J,Y)})};var C=(f,J)=>()=>(f&&(J=f(f=0)),J);var $Z=import.meta.require;import{basename as mL}from"path";function cL(f){let J="";for(let Y=0;Y<f.length;Y++){let z=f[Y];if(z==="*")if(f[Y+1]==="*")J+=".*",Y++;else J+="[^/]*";else if(z==="?")J+="[^/]";else if(z&&"\\^$.|+()[]{}".includes(z))J+=`\\${z}`;else J+=z}return new RegExp(`^${J}$`)}function rZ(f,J){let Y;try{Y=cL(f)}catch{return!1}return Y.test(J)||Y.test(mL(J))}var hQ=()=>{};var e8={};jf(e8,{prevVendorWithin:()=>PQ,nextVendorWithin:()=>GY,nextVendor:()=>nL,isBuiltinVendor:()=>Q1,coerceVendorId:()=>mY,BUILTIN_VENDORS:()=>vY,ALL_VENDORS:()=>mf});function Q1(f){return f==="claude"||f==="codex"||f==="copilot"}function nL(f){let J=mf.indexOf(f);return mf[(J+1)%mf.length]??mf[0]}function GY(f,J){if(f.length===0)return J;let Y=f.indexOf(J);return f[(Y+1)%f.length]??f[0]??J}function PQ(f,J){if(f.length===0)return J;let Y=f.indexOf(J);if(Y<0)return f[f.length-1]??J;return f[(Y-1+f.length)%f.length]??J}function mY(f){let J=f?.trim();return J&&J.length>0?J:"claude"}var vY,mf;var K1=C(()=>{vY=["claude","codex","copilot"],mf=[...vY]});var pZ;var f9=C(()=>{pZ={$schema:"https://json.schemastore.org/package.json",name:"@sma1lboy/kobe",version:"0.7.38",description:"TUI orchestrator for Claude Code (codename)",type:"module",packageManager:"bun@1.3.13",bin:{kobe:"dist/cli/index.js"},files:["dist/cli","dist/web-ui","dist/*.wav","README.md","LICENSE"],publishConfig:{access:"public"},repository:{type:"git",url:"git+https://github.com/Sma1lboy/kobe.git"},homepage:"https://github.com/Sma1lboy/kobe#readme",bugs:{url:"https://github.com/Sma1lboy/kobe/issues"},engines:{bun:">=1.3.11"},scripts:{dev:"env KOBE_DEV=1 bun --preload @opentui/solid/preload --conditions=browser ./src/cli/index.ts","dev:sandbox":"mkdir -p .dev-sandbox/home && env KOBE_DEV=1 KOBE_HOME_DIR=$PWD/.dev-sandbox/home KOBE_TMUX_SOCKET=kobe-sandbox bun --preload @opentui/solid/preload --conditions=browser ./src/cli/index.ts","dev:sandbox:reset":"env KOBE_TMUX_SOCKET=kobe-sandbox bun ./src/cli/index.ts kill-sessions","dev:version":"bash ../../scripts/dev-version.sh",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","test:fast":"vitest run --passWithNoTests","test:socket":"KOBE_INCLUDE_SOCKET=1 vitest run test/daemon --pool forks --minWorkers=1 --maxWorkers=1 --passWithNoTests","test:behavior":"KOBE_INCLUDE_BEHAVIOR=1 vitest run test/behavior --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.2.4","@opentui/solid":"0.2.4",ws:"^8.18.0","solid-js":"1.9.13"},devDependencies:{"@biomejs/biome":"1.9.4","@sma1lboy/kobe-daemon":"0.7.11","@tsconfig/bun":"1.0.10","@types/bun":"1.3.14","@types/node":"25.6.2",knip:"^6.14.2","kobe-web":"workspace:*","node-pty":"^1.1.0",typescript:"5.8.2",vitest:"2.1.9"},trustedDependencies:[]}});import{createHash as J9}from"crypto";import{homedir as iL}from"os";import{join as cY}from"path";function Y9(){return process.env.KOBE_DEV==="1"}function OJ(){return process.env.KOBE_HOME_DIR??iL()}function ef(){return cY(OJ(),".kobe")}function v1(){return cY(OJ(),".config","kobe","state.json")}function lL(){return cY(ef(),"settings")}function z9(){return cY(lL(),"keybindings.yaml")}function vQ(){return cY(ef(),"issue-assets")}function _Z(f,J,Y){let z=J9("sha1").update(`${J}@${f}:${Y??22}`).digest("hex").slice(0,16);return cY(ef(),"ssh",`${z}.sock`)}function G9(f){let J=J9("sha1").update(f).digest("hex").slice(0,16);return cY(ef(),"worktree-init",J)}var lf=()=>{};var X9={};jf(X9,{repoSlug:()=>nY,releasePageUrl:()=>iQ,recommendedGlobalInstallCommand:()=>nQ,isNewerSemver:()=>mQ,fetchReleaseSummaries:()=>rL,fetchReleaseNotesRange:()=>dQ,fetchReleaseNotes:()=>$L,compareSemver:()=>oZ,checkLatestVersion:()=>xG,UPDATE_SCRIPT_URL:()=>sZ,UPDATE_COMMAND:()=>wJ,PACKAGE_NAME:()=>cQ,CURRENT_VERSION:()=>o0});function nY(){let f=pZ.repository?.url;if(!f)return null;let J=f.match(/github\.com[:/]([^/]+)\/([^/.]+)/);if(!J||!J[1]||!J[2])return null;return`${J[1]}/${J[2]}`}function nQ(){return`npm install -g ${cQ}@latest`}async function aL(f){let J=new AbortController,Y=setTimeout(()=>J.abort(),tZ);try{let z=f.replace("/","%2F"),G=await fetch(`https://registry.npmjs.org/${z}/latest`,{signal:J.signal,headers:{accept:"application/json"}});if(!G.ok)return null;let Z=await G.json();if(typeof Z.version!=="string")return null;return Z.version}catch{return null}finally{clearTimeout(Y)}}function mQ(f,J){return oZ(f,J)>0}function oZ(f,J){let Y=(Z)=>Z.split("-")[0]??Z,z=Y(f).split(".").map((Z)=>Number.parseInt(Z,10)),G=Y(J).split(".").map((Z)=>Number.parseInt(Z,10));for(let Z=0;Z<3;Z++){let q=z[Z]??0,Q=G[Z]??0;if(Number.isNaN(q)||Number.isNaN(Q))return 0;if(q>Q)return 1;if(q<Q)return-1}return 0}async function xG(f={}){let J=process.env.KOBE_FAKE_UPDATE;if(J)return{current:o0,latest:J,hasUpdate:mQ(J,o0)};if(Y9()&&!f.force)return null;let Y=await aL(cQ);if(!Y)return null;return{current:o0,latest:Y,hasUpdate:mQ(Y,o0)}}function Z9(f){if(typeof f!=="string")return null;return f.match(/^v(\d+\.\d+\.\d+)$/)?.[1]??null}async function $L(f){let J=nY();if(!J)return null;let Y=`v${f}`,z=new AbortController,G=setTimeout(()=>z.abort(),tZ);try{let Z=await fetch(`https://api.github.com/repos/${J}/releases/tags/${Y}`,{signal:z.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!Z.ok)return null;let q=await Z.json();if(typeof q.body!=="string"||typeof q.html_url!=="string")return null;return{body:q.body,url:q.html_url,version:f}}catch{return null}finally{clearTimeout(G)}}async function dQ(f){let J=nY();if(!J)return[];let Y=f.limit??100,z=new AbortController,G=setTimeout(()=>z.abort(),tZ);try{let Z=await fetch(`https://api.github.com/repos/${J}/releases?per_page=${Y}`,{signal:z.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!Z.ok)return[];let q=await Z.json();if(!Array.isArray(q))return[];return q.map((Q)=>{let H=Z9(Q.tag_name);if(!H||typeof Q.html_url!=="string"||typeof Q.body!=="string")return null;if(oZ(H,f.current)<=0)return null;if(oZ(H,f.latest)>0)return null;return{version:H,url:Q.html_url,body:Q.body}}).filter((Q)=>Q!==null)}catch{return[]}finally{clearTimeout(G)}}async function rL(f=12){let J=nY();if(!J)return[];let Y=new AbortController,z=setTimeout(()=>Y.abort(),tZ);try{let G=await fetch(`https://api.github.com/repos/${J}/releases?per_page=${f}`,{signal:Y.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!G.ok)return[];let Z=await G.json();if(!Array.isArray(Z))return[];return Z.map((q)=>{let Q=Z9(q.tag_name);if(!Q||typeof q.html_url!=="string")return null;return{version:Q,url:q.html_url}}).filter((q)=>q!==null)}catch{return[]}finally{clearTimeout(z)}}function iQ(f){let J=nY();if(!J)return null;return`https://github.com/${J}/releases/tag/v${f}`}var o0,cQ,sZ="https://raw.githubusercontent.com/Sma1lboy/kobe/main/scripts/update.sh",wJ,tZ=3000;var U1=C(()=>{f9();lf();o0=pZ.version,cQ=pZ.name;wJ=`curl -fsSL ${sZ} | sh`});import{spawn as pL,spawnSync as _L}from"child_process";import{existsSync as Q9}from"fs";import{mkdir as oL,readFile as sL,readdir as tL}from"fs/promises";function dY(f){return`'${f.replace(/'/g,"'\\''")}'`}function eL(f){return/^[A-Za-z0-9_@%+=:,./-]+$/.test(f)?f:dY(f)}function B9(f){return f.map(dY).join(" ")}function fM(f,J){let Y=B9(f);return J?`cd ${dY(J)} && ${Y}`:Y}function JM(f){if(!f)return"";let J=Object.entries(f).filter(([Y])=>/^[A-Za-z_][A-Za-z0-9_]*$/.test(Y));if(J.length===0)return"";return`${J.map(([Y,z])=>`${Y}=${dY(z)}`).join(" ")} `}function wG(f,J={}){let Y=["ssh"];if(J.tty)Y.push("-tt");if(J.batch)Y.push("-o","BatchMode=yes");if(Y.push("-o","ControlMaster=auto","-o",`ControlPath=${f.controlPath}`,"-o","ControlPersist=300"),Y.push("-o","StrictHostKeyChecking=accept-new"),f.port)Y.push("-p",String(f.port));if(f.auth.kind==="key"&&f.auth.keyPath)Y.push("-i",f.auth.keyPath);return Y.push(`${f.user}@${f.host}`),Y}function j9(f,J={}){return new Promise((Y)=>{let[z,...G]=f,Z="",q="",Q=!1,H=(V)=>{if(Q)return;Q=!0,Y({stdout:Z,stderr:q,exitCode:V})},B;try{B=pL(z??"",G,{cwd:J.cwd,env:J.env,shell:!1,signal:J.signal})}catch{H(-1);return}B.stdout?.setEncoding("utf8"),B.stdout?.on("data",(V)=>{Z+=V}),B.stderr?.setEncoding("utf8"),B.stderr?.on("data",(V)=>{q+=V}),B.on("error",()=>H(-1)),B.on("close",(V)=>H(V??-1))})}class eZ{isRemote=!1;run(f,J={}){return j9(f,{cwd:J.cwd,env:J.env?{...process.env,...J.env}:process.env,signal:J.signal})}async exists(f){return Q9(f)}existsSync(f){return Q9(f)}async mkdirp(f){await oL(f,{recursive:!0})}async readFile(f){try{return await sL(f,"utf8")}catch{return null}}async readdir(f){try{return await tL(f)}catch{return[]}}wrapCommand(f){return f}ensureReady(){}}class bz{spec;spawn;isRemote=!0;masterUp=!1;spawnAsync;constructor(f,J=H9,Y){this.spec=f;this.spawn=J;this.spawnAsync=Y??(this.spawn===H9?YM:async(z,G)=>this.spawn(z,G))}ensureReady(){if(this.masterUp)return;if(this.spawn([...wG(this.spec,{batch:!0}),"-O","check"]).exitCode===0){this.masterUp=!0;return}let J=[...wG(this.spec,{batch:this.spec.auth.kind!=="password"}),"-fN"];if(this.spec.auth.kind==="password"){let Y=this.spec.auth.getPassword();if(Y!=null){this.spawn(["sshpass","-e",...J],{SSHPASS:Y}),this.masterUp=!0;return}}this.spawn(J),this.masterUp=!0}async run(f,J={}){this.ensureReady();let Y=`${JM(J.env)}${B9(f)}`,z=J.cwd?`cd ${dY(J.cwd)} && ${Y}`:Y;return this.spawnAsync([...wG(this.spec,{batch:!0}),z],void 0,{signal:J.signal})}async exists(f){return(await this.run(["test","-e",f])).exitCode===0}existsSync(f){return this.ensureReady(),this.spawn([...wG(this.spec,{batch:!0}),fM(["test","-e",f])]).exitCode===0}async mkdirp(f){await this.run(["mkdir","-p",f])}async readFile(f){let J=await this.run(["cat",f]);return J.exitCode===0?J.stdout:null}async readdir(f){let J=await this.run(["ls","-1A",f]);if(J.exitCode!==0)return[];return J.stdout.split(`
|
|
4
|
-
`).filter((Y)=>Y.length>0)}wrapCommand(f,J={}){let Y=J.cwd?`cd ${
|
|
3
|
+
var dL=Object.defineProperty;var iL=(f)=>f;function lL(f,J){this[f]=iL.bind(null,J)}var jf=(f,J)=>{for(var Y in J)dL(f,Y,{get:J[Y],enumerable:!0,configurable:!0,set:lL.bind(J,Y)})};var k=(f,J)=>()=>(f&&(J=f(f=0)),J);var pX=import.meta.require;import{basename as aL}from"path";function $L(f){let J="";for(let Y=0;Y<f.length;Y++){let z=f[Y];if(z==="*")if(f[Y+1]==="*")J+=".*",Y++;else J+="[^/]*";else if(z==="?")J+="[^/]";else if(z&&"\\^$.|+()[]{}".includes(z))J+=`\\${z}`;else J+=z}return new RegExp(`^${J}$`)}function _X(f,J){let Y;try{Y=$L(f)}catch{return!1}return Y.test(J)||Y.test(aL(J))}var mQ=()=>{};var J9={};jf(J9,{prevVendorWithin:()=>cQ,nextVendorWithin:()=>qY,nextVendor:()=>rL,isBuiltinVendor:()=>Q1,coerceVendorId:()=>iY,BUILTIN_VENDORS:()=>dY,ALL_VENDORS:()=>cf});function Q1(f){return f==="claude"||f==="codex"||f==="copilot"}function rL(f){let J=cf.indexOf(f);return cf[(J+1)%cf.length]??cf[0]}function qY(f,J){if(f.length===0)return J;let Y=f.indexOf(J);return f[(Y+1)%f.length]??f[0]??J}function cQ(f,J){if(f.length===0)return J;let Y=f.indexOf(J);if(Y<0)return f[f.length-1]??J;return f[(Y-1+f.length)%f.length]??J}function iY(f){let J=f?.trim();return J&&J.length>0?J:"claude"}var dY,cf;var U1=k(()=>{dY=["claude","codex","copilot"],cf=[...dY]});var oX;var Y9=k(()=>{oX={$schema:"https://json.schemastore.org/package.json",name:"@sma1lboy/kobe",version:"0.7.40",description:"TUI orchestrator for Claude Code (codename)",type:"module",packageManager:"bun@1.3.13",bin:{kobe:"dist/cli/index.js"},files:["dist/cli","dist/web-ui","dist/*.wav","README.md","LICENSE"],publishConfig:{access:"public"},repository:{type:"git",url:"git+https://github.com/Sma1lboy/kobe.git"},homepage:"https://github.com/Sma1lboy/kobe#readme",bugs:{url:"https://github.com/Sma1lboy/kobe/issues"},engines:{bun:">=1.3.11"},scripts:{dev:"env KOBE_DEV=1 bun --preload @opentui/solid/preload --conditions=browser ./src/cli/index.ts","dev:sandbox":"mkdir -p .dev-sandbox/home && env KOBE_DEV=1 KOBE_HOME_DIR=$PWD/.dev-sandbox/home KOBE_TMUX_SOCKET=kobe-sandbox bun --preload @opentui/solid/preload --conditions=browser ./src/cli/index.ts","dev:sandbox:reset":"env KOBE_TMUX_SOCKET=kobe-sandbox bun ./src/cli/index.ts kill-sessions","dev:version":"bash ../../scripts/dev-version.sh",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","test:fast":"vitest run --passWithNoTests","test:socket":"KOBE_INCLUDE_SOCKET=1 vitest run test/daemon --pool forks --minWorkers=1 --maxWorkers=1 --passWithNoTests","test:behavior":"KOBE_INCLUDE_BEHAVIOR=1 vitest run test/behavior --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.2.4","@opentui/solid":"0.2.4",ws:"^8.18.0","solid-js":"1.9.13"},devDependencies:{"@biomejs/biome":"1.9.4","@sma1lboy/kobe-daemon":"0.7.11","@tsconfig/bun":"1.0.10","@types/bun":"1.3.14","@types/node":"25.6.2",knip:"^6.14.2","kobe-web":"workspace:*","node-pty":"^1.1.0",typescript:"5.8.2",vitest:"2.1.9"},trustedDependencies:[]}});import{createHash as z9}from"crypto";import{homedir as _L}from"os";import{join as lY}from"path";function G9(){return process.env.KOBE_DEV==="1"}function OJ(){return process.env.KOBE_HOME_DIR??_L()}function ef(){return lY(OJ(),".kobe")}function m1(){return lY(OJ(),".config","kobe","state.json")}function oL(){return lY(ef(),"settings")}function X9(){return lY(oL(),"keybindings.yaml")}function nQ(){return lY(ef(),"issue-assets")}function sX(f,J,Y){let z=z9("sha1").update(`${J}@${f}:${Y??22}`).digest("hex").slice(0,16);return lY(ef(),"ssh",`${z}.sock`)}function Z9(f){let J=z9("sha1").update(f).digest("hex").slice(0,16);return lY(ef(),"worktree-init",J)}var lf=()=>{};var Q9={};jf(Q9,{repoSlug:()=>aY,releasePageUrl:()=>$Q,recommendedGlobalInstallCommand:()=>lQ,isNewerSemver:()=>dQ,fetchReleaseSummaries:()=>eL,fetchReleaseNotesRange:()=>aQ,fetchReleaseNotes:()=>tL,compareSemver:()=>tX,checkLatestVersion:()=>wG,UPDATE_SCRIPT_URL:()=>eX,UPDATE_COMMAND:()=>hJ,PACKAGE_NAME:()=>iQ,CURRENT_VERSION:()=>s0});function aY(){let f=oX.repository?.url;if(!f)return null;let J=f.match(/github\.com[:/]([^/]+)\/([^/.]+)/);if(!J||!J[1]||!J[2])return null;return`${J[1]}/${J[2]}`}function lQ(){return`npm install -g ${iQ}@latest`}async function sL(f){let J=new AbortController,Y=setTimeout(()=>J.abort(),fZ);try{let z=f.replace("/","%2F"),G=await fetch(`https://registry.npmjs.org/${z}/latest`,{signal:J.signal,headers:{accept:"application/json"}});if(!G.ok)return null;let X=await G.json();if(typeof X.version!=="string")return null;return X.version}catch{return null}finally{clearTimeout(Y)}}function dQ(f,J){return tX(f,J)>0}function tX(f,J){let Y=(X)=>X.split("-")[0]??X,z=Y(f).split(".").map((X)=>Number.parseInt(X,10)),G=Y(J).split(".").map((X)=>Number.parseInt(X,10));for(let X=0;X<3;X++){let q=z[X]??0,Q=G[X]??0;if(Number.isNaN(q)||Number.isNaN(Q))return 0;if(q>Q)return 1;if(q<Q)return-1}return 0}async function wG(f={}){let J=process.env.KOBE_FAKE_UPDATE;if(J)return{current:s0,latest:J,hasUpdate:dQ(J,s0)};if(G9()&&!f.force)return null;let Y=await sL(iQ);if(!Y)return null;return{current:s0,latest:Y,hasUpdate:dQ(Y,s0)}}function q9(f){if(typeof f!=="string")return null;return f.match(/^v(\d+\.\d+\.\d+)$/)?.[1]??null}async function tL(f){let J=aY();if(!J)return null;let Y=`v${f}`,z=new AbortController,G=setTimeout(()=>z.abort(),fZ);try{let X=await fetch(`https://api.github.com/repos/${J}/releases/tags/${Y}`,{signal:z.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!X.ok)return null;let q=await X.json();if(typeof q.body!=="string"||typeof q.html_url!=="string")return null;return{body:q.body,url:q.html_url,version:f}}catch{return null}finally{clearTimeout(G)}}async function aQ(f){let J=aY();if(!J)return[];let Y=f.limit??100,z=new AbortController,G=setTimeout(()=>z.abort(),fZ);try{let X=await fetch(`https://api.github.com/repos/${J}/releases?per_page=${Y}`,{signal:z.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!X.ok)return[];let q=await X.json();if(!Array.isArray(q))return[];return q.map((Q)=>{let H=q9(Q.tag_name);if(!H||typeof Q.html_url!=="string"||typeof Q.body!=="string")return null;if(tX(H,f.current)<=0)return null;if(tX(H,f.latest)>0)return null;return{version:H,url:Q.html_url,body:Q.body}}).filter((Q)=>Q!==null)}catch{return[]}finally{clearTimeout(G)}}async function eL(f=12){let J=aY();if(!J)return[];let Y=new AbortController,z=setTimeout(()=>Y.abort(),fZ);try{let G=await fetch(`https://api.github.com/repos/${J}/releases?per_page=${f}`,{signal:Y.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!G.ok)return[];let X=await G.json();if(!Array.isArray(X))return[];return X.map((q)=>{let Q=q9(q.tag_name);if(!Q||typeof q.html_url!=="string")return null;return{version:Q,url:q.html_url}}).filter((q)=>q!==null)}catch{return[]}finally{clearTimeout(z)}}function $Q(f){let J=aY();if(!J)return null;return`https://github.com/${J}/releases/tag/v${f}`}var s0,iQ,eX="https://raw.githubusercontent.com/Sma1lboy/kobe/main/scripts/update.sh",hJ,fZ=3000;var D1=k(()=>{Y9();lf();s0=oX.version,iQ=oX.name;hJ=`curl -fsSL ${eX} | sh`});import{spawn as fM,spawnSync as JM}from"child_process";import{existsSync as B9}from"fs";import{mkdir as YM,readFile as zM,readdir as GM}from"fs/promises";function $Y(f){return`'${f.replace(/'/g,"'\\''")}'`}function XM(f){return/^[A-Za-z0-9_@%+=:,./-]+$/.test(f)?f:$Y(f)}function W9(f){return f.map($Y).join(" ")}function ZM(f,J){let Y=W9(f);return J?`cd ${$Y(J)} && ${Y}`:Y}function qM(f){if(!f)return"";let J=Object.entries(f).filter(([Y])=>/^[A-Za-z_][A-Za-z0-9_]*$/.test(Y));if(J.length===0)return"";return`${J.map(([Y,z])=>`${Y}=${$Y(z)}`).join(" ")} `}function hG(f,J={}){let Y=["ssh"];if(J.tty)Y.push("-tt");if(J.batch)Y.push("-o","BatchMode=yes");if(Y.push("-o","ControlMaster=auto","-o",`ControlPath=${f.controlPath}`,"-o","ControlPersist=300"),Y.push("-o","StrictHostKeyChecking=accept-new"),f.port)Y.push("-p",String(f.port));if(f.auth.kind==="key"&&f.auth.keyPath)Y.push("-i",f.auth.keyPath);return Y.push(`${f.user}@${f.host}`),Y}function V9(f,J={}){return new Promise((Y)=>{let[z,...G]=f,X="",q="",Q=!1,H=(V)=>{if(Q)return;Q=!0,Y({stdout:X,stderr:q,exitCode:V})},B;try{B=fM(z??"",G,{cwd:J.cwd,env:J.env,shell:!1,signal:J.signal})}catch{H(-1);return}B.stdout?.setEncoding("utf8"),B.stdout?.on("data",(V)=>{X+=V}),B.stderr?.setEncoding("utf8"),B.stderr?.on("data",(V)=>{q+=V}),B.on("error",()=>H(-1)),B.on("close",(V)=>H(V??-1))})}class JZ{isRemote=!1;run(f,J={}){return V9(f,{cwd:J.cwd,env:J.env?{...process.env,...J.env}:process.env,signal:J.signal})}async exists(f){return B9(f)}existsSync(f){return B9(f)}async mkdirp(f){await YM(f,{recursive:!0})}async readFile(f){try{return await zM(f,"utf8")}catch{return null}}async readdir(f){try{return await GM(f)}catch{return[]}}wrapCommand(f){return f}ensureReady(){}}class uz{spec;spawn;isRemote=!0;masterUp=!1;spawnAsync;constructor(f,J=j9,Y){this.spec=f;this.spawn=J;this.spawnAsync=Y??(this.spawn===j9?QM:async(z,G)=>this.spawn(z,G))}ensureReady(){if(this.masterUp)return;if(this.spawn([...hG(this.spec,{batch:!0}),"-O","check"]).exitCode===0){this.masterUp=!0;return}let J=[...hG(this.spec,{batch:this.spec.auth.kind!=="password"}),"-fN"];if(this.spec.auth.kind==="password"){let Y=this.spec.auth.getPassword();if(Y!=null){this.spawn(["sshpass","-e",...J],{SSHPASS:Y}),this.masterUp=!0;return}}this.spawn(J),this.masterUp=!0}async run(f,J={}){this.ensureReady();let Y=`${qM(J.env)}${W9(f)}`,z=J.cwd?`cd ${$Y(J.cwd)} && ${Y}`:Y;return this.spawnAsync([...hG(this.spec,{batch:!0}),z],void 0,{signal:J.signal})}async exists(f){return(await this.run(["test","-e",f])).exitCode===0}existsSync(f){return this.ensureReady(),this.spawn([...hG(this.spec,{batch:!0}),ZM(["test","-e",f])]).exitCode===0}async mkdirp(f){await this.run(["mkdir","-p",f])}async readFile(f){let J=await this.run(["cat",f]);return J.exitCode===0?J.stdout:null}async readdir(f){let J=await this.run(["ls","-1A",f]);if(J.exitCode!==0)return[];return J.stdout.split(`
|
|
4
|
+
`).filter((Y)=>Y.length>0)}wrapCommand(f,J={}){let Y=J.cwd?`cd ${$Y(J.cwd)} && ${f}`:f;return`${hG(this.spec,{tty:J.tty}).map(XM).join(" ")} ${$Y(Y)}`}}var j9=(f,J)=>{let[Y,...z]=f,G=JM(Y??"",z,{env:J?{...process.env,...J}:process.env,encoding:"utf8",shell:!1});return{stdout:G.stdout??"",stderr:G.stderr??"",exitCode:G.status??-1}},QM=(f,J,Y)=>V9(f,{env:J?{...process.env,...J}:process.env,signal:Y?.signal});var rQ=()=>{};import{spawnSync as HM}from"child_process";import{platform as BM}from"os";function K9(f,J,Y){return{service:jM,account:Y?`${J}@${f}:${Y}`:`${J}@${f}`}}function _Q(f=pQ){return f.platform()==="darwin"}function U9(f,J,Y=pQ){if(Y.platform()!=="darwin")return!1;let{exitCode:z}=Y.run(["security","add-generic-password","-U","-s",f.service,"-a",f.account,"-w",J]);return z===0}function YZ(f,J=pQ){if(J.platform()!=="darwin")return null;let{stdout:Y,exitCode:z}=J.run(["security","find-generic-password","-s",f.service,"-a",f.account,"-w"]);if(z!==0)return null;return Y.replace(/\n$/,"")}var pQ,jM="kobe-remote-ssh";var oQ=k(()=>{pQ={run(f){let[J,...Y]=f,z=HM(J??"",Y,{encoding:"utf8",shell:!1});return{stdout:z.stdout??"",exitCode:z.status??-1}},platform(){return BM()}}});import{mkdirSync as WM,readFileSync as VM,renameSync as KM,writeFileSync as UM}from"fs";import{dirname as DM}from"path";function nf(){try{let f=VM(m1(),"utf8"),J=JSON.parse(f);if(J&&typeof J==="object"&&!Array.isArray(J))return J}catch{}return{}}function D9(f){let J=m1();WM(DM(J),{recursive:!0});let Y=`${J}.tmp`;UM(Y,JSON.stringify(f,null,2),"utf8"),KM(Y,J)}function Ez(f){let J=nf();if(f(J)!==!1)D9(J);return J}function rY(f){return Ez((J)=>{for(let[Y,z]of Object.entries(f))if(z===void 0)delete J[Y];else J[Y]=z;return})}function L9(f){D9(f)}var pY=k(()=>{lf()});var cJ={};jf(cJ,{statePath:()=>MM,setRepoInitOverride:()=>FM,setPersistedString:()=>af,resolveRepoRoot:()=>PJ,resolveMainRepoRoot:()=>LM,removeSavedRepo:()=>OM,remoteRepoKey:()=>g9,normalizeSavedRepos:()=>tQ,isRemoteRepoKey:()=>H1,isRemoteProjectsEnabled:()=>fH,getSavedRepos:()=>c1,getRepoInitOverride:()=>eQ,getRemoteRepos:()=>JH,getRemoteRepoConfig:()=>mJ,getPersistedString:()=>kf,getCustomEngineIds:()=>sQ,addSavedRepo:()=>vJ,addRemoteRepo:()=>YH});import{spawnSync as F9}from"child_process";import{realpathSync as M9}from"fs";function PJ(f){if(H1(f))return f;let J=F9("git",["rev-parse","--show-toplevel"],{cwd:f,encoding:"utf8",shell:!1});if(J.status!==0)return f;let Y=(J.stdout??"").trim();if(!Y)return f;try{if(M9(f)===M9(Y))return f}catch{}return Y}function LM(f){if(H1(f))return f;let J=F9("git",["worktree","list","--porcelain"],{cwd:f,encoding:"utf8",shell:!1});if(J.status!==0)return PJ(f);return(J.stdout??"").split(/\r?\n/).find((z)=>z.startsWith("worktree "))?.slice(9).trim()||PJ(f)}function MM(){return m1()}function zZ(f){let J=f.savedRepos;if(!Array.isArray(J))return[];return J.filter((Y)=>typeof Y==="string")}function c1(){return zZ(nf())}function kf(f){let J=nf()[f];return typeof J==="string"?J:void 0}function af(f,J){rY({[f]:J})}function sQ(){let f=nf().customEngineIds;if(!Array.isArray(f))return[];return f.filter((J)=>typeof J==="string"&&J.trim().length>0)}function vJ(f){let J=PJ(f),Y={added:!1,path:J,total:0};return Ez((z)=>{let G=zZ(z);if(G.includes(J))return Y={added:!1,path:J,total:G.length},!1;z.savedRepos=[...G,J],Y={added:!0,path:J,total:G.length+1};return}),Y}function tQ(){let f=c1(),J=new Set,Y=[],z=!1;for(let G of f){let X=PJ(G);if(X!==G)z=!0;if(J.has(X)){z=!0;continue}J.add(X),Y.push(X)}if(!z)return;rY({savedRepos:Y})}function O9(f){let J=f.repoConfigs;if(!J||typeof J!=="object"||Array.isArray(J))return{};return J}function A9(f){if(!f||typeof f!=="object")return{};let J=f;return{initScript:typeof J.initScript==="string"&&J.initScript.length>0?J.initScript:void 0,initPrompt:typeof J.initPrompt==="string"&&J.initPrompt.length>0?J.initPrompt:void 0}}function eQ(f){return A9(O9(nf())[PJ(f)])}function FM(f,J){let Y=PJ(f),z={};return Ez((G)=>{let X={...O9(G)},q=A9(X[Y]),Q=J.initScript===void 0?q.initScript:J.initScript||void 0,H=J.initPrompt===void 0?q.initPrompt:J.initPrompt||void 0;if(z={...Q?{initScript:Q}:{},...H?{initPrompt:H}:{}},!z.initScript&&!z.initPrompt){let{[Y]:B,...V}=X;G.repoConfigs=V}else X[Y]=z,G.repoConfigs=X;return}),z}function OM(f){let J={removed:!1,path:f,total:0};return Ez((Y)=>{let z=zZ(Y);if(!z.includes(f))return J={removed:!1,path:f,total:z.length},!1;if(Y.savedRepos=z.filter((G)=>G!==f),H1(f)){let G=GZ(Y);if(f in G){let X={...G};delete X[f],Y.remoteRepos=X}}J={removed:!0,path:f,total:z.length-1};return}),J}function H1(f){return f.startsWith("ssh://")}function fH(){return nf()["experimental.remoteProjects"]===!0}function g9(f,J,Y){return Y?`ssh://${J}@${f}:${Y}`:`ssh://${J}@${f}`}function GZ(f){let J=f.remoteRepos;if(!J||typeof J!=="object"||Array.isArray(J))return{};return J}function mJ(f){return GZ(nf())[f]??null}function JH(){return GZ(nf())}function YH(f){let J=g9(f.host,f.user,f.port),Y=!1;return Ez((z)=>{let G={...GZ(z)};G[J]=f,z.remoteRepos=G;let X=zZ(z);if(Y=!X.includes(J),Y)z.savedRepos=[...X,J];return}),{key:J,added:Y}}var Of=k(()=>{lf();pY()});var k9={};jf(k9,{runAddRemote:()=>RM,parseRemoteFlags:()=>C9});import{createInterface as AM}from"readline";function C9(f){let J={};for(let Y=0;Y<f.length;Y++){let z=f[Y];switch(z){case"--host":J.host=f[++Y];break;case"--user":J.user=f[++Y];break;case"--path":J.path=f[++Y];break;case"--port":{let G=Number(f[++Y]);if(!Number.isInteger(G)||G<=0)t1(`invalid --port "${f[Y]}"`);J.port=G;break}case"--key":{let G=f[Y+1];if(G&&!G.startsWith("-"))J.key={present:!0,path:G},Y++;else J.key={present:!0};break}case"--password":J.password=!0;break;case"--help":case"-h":process.stdout.write(R9),process.exit(0);break;default:t1(`unknown flag "${z}"`)}}return J}function t1(f){process.stderr.write(`kobe add --remote: ${f}
|
|
5
5
|
|
|
6
|
-
${
|
|
7
|
-
`),J.close(),
|
|
6
|
+
${R9}`),process.exit(2)}async function gM(f){let J=AM({input:process.stdin,output:process.stdout,terminal:!0}),Y=process.stdout,z=!1,G=Y._writeToOutput?.bind(Y);return Y._writeToOutput=(X)=>{if(!z||!G)process.stdout.write(X)},process.stdout.write(f),z=!0,new Promise((X)=>{J.question("",(q)=>{if(z=!1,G)Y._writeToOutput=G;process.stdout.write(`
|
|
7
|
+
`),J.close(),X(q)})})}async function RM(f){if(!fH())t1("remote projects are experimental and disabled \u2014 enable Settings \u2192 Dev \u2192 Experimental \u2192 Remote projects first");let J=C9(f);if(!J.host)t1("--host is required");if(!J.user)t1("--user is required");if(!J.path)t1("--path (remote base path) is required");if(J.key&&J.password)t1("choose ONE of --key or --password, not both");if(!J.key&&!J.password)t1("an auth method is required: --key [path] or --password");let Y;if(J.password){if(!_Q())t1("--password needs the macOS keychain (unsupported on this platform)");let X=K9(J.host,J.user,J.port),q=await gM(`Password for ${J.user}@${J.host}: `);if(q.length===0)t1("empty password");if(!U9(X,q))t1("failed to store the password in the keychain");Y={kind:"password",keychainRef:X}}else Y={kind:"key",keyPath:J.key?.path};let{key:z,added:G}=YH({host:J.host,user:J.user,port:J.port,basePath:J.path,auth:Y});console.log(G?`added remote project ${z} (base ${J.path})`:`updated remote project ${z} (base ${J.path})`),await CM(J,Y)}async function CM(f,J){if(J.kind==="password"&&!_Q())return;let Y=J.kind==="key"?{kind:"key",keyPath:J.keyPath}:{kind:"password",getPassword:()=>YZ(J.keychainRef)},z={host:f.host,user:f.user,port:f.port,auth:Y,controlPath:sX(f.host,f.user,f.port)};process.stdout.write("checking connection\u2026 ");try{if((await new uz(z).run(["test","-d",f.path])).exitCode===0)console.log("ok");else console.log(`reachable, but base path "${f.path}" is not a directory (you can create it later)`)}catch(G){console.log(`could not connect (${G instanceof Error?G.message:String(G)})`),console.log("the project is saved; fix the host/credentials and it will connect on first use.")}}var R9;var N9=k(()=>{lf();rQ();oQ();Of();R9=`Usage: kobe add --remote --host <host> --user <user> --path <basePath>
|
|
8
8
|
[--port N] [--key [path] | --password]
|
|
9
9
|
|
|
10
10
|
Register an SSH-backed project. Worktrees + the engine run on <host> under
|
|
11
11
|
<basePath>. Choose ONE auth: --key [path] (ssh-agent when path omitted) or
|
|
12
12
|
`+`--password (prompted, stored in the OS keychain \u2014 never in state.json).
|
|
13
|
-
`});function
|
|
14
|
-
`,Y=await CM(this.tmpPath,"w",420);try{await Y.writeFile(J,"utf8"),await Y.sync()}finally{await Y.close()}await NM(this.tmpPath,this.path)}get(f){return this.assertLoaded(),this.cache.tasks.find((J)=>J.id===f)}list(){return this.assertLoaded(),this.cache.tasks.slice()}async create(f){this.assertLoaded();let J=new Date().toISOString(),Y={archived:!1,vendor:f.vendor??yf,...f,id:hG(S9()),createdAt:J,updatedAt:J};return this.cache.tasks.push(Y),await this.save(),this.notifyListeners(),Y}async update(f,J){this.assertLoaded();let Y=this.cache.tasks.findIndex((H)=>H.id===f);if(Y<0)throw Error(`task not found: ${f}`);let z=this.cache.tasks[Y];if(!z)throw Error(`task not found: ${f}`);let{id:G,createdAt:Z,...q}=J,Q={...z,...q,id:z.id,createdAt:z.createdAt,updatedAt:new Date().toISOString()};return this.cache.tasks[Y]=Q,await this.save(),this.notifyListeners(),Q}async move(f,J,Y){this.assertLoaded();let z=this.cache.tasks.find((L)=>L.id===f);if(!z)throw Error(`task not found: ${f}`);let G=Y?.length?Y:this.cache.tasks.map((L)=>L.id),Z=G.indexOf(String(f));if(Z<0)throw Error(`task not movable in current group: ${f}`);let q=G[Z+J];if(!q)return z;let Q=this.cache.tasks.findIndex((L)=>L.id===f),H=this.cache.tasks.findIndex((L)=>L.id===q);if(Q<0||H<0||Q===H)return z;let[B]=this.cache.tasks.splice(Q,1);if(!B)return z;let V=Q<H?H-1:H,j=J>0?V+1:V,U={...B,updatedAt:new Date().toISOString()};return this.cache.tasks.splice(j,0,U),await this.save(),this.notifyListeners(),U}async reorder(f){this.assertLoaded();let J=f.map((G)=>{let Z=this.cache.tasks.findIndex((Q)=>Q.id===G.id);if(!(Z>=0?this.cache.tasks[Z]:void 0))throw Error(`task not found: ${G.id}`);return{idx:Z,position:G.position}}),Y=!1,z=new Map;for(let{idx:G,position:Z}of J){let q=this.cache.tasks[G];if(!q||q.position===Z)continue;if(!z.has(G))z.set(G,q);this.cache.tasks[G]={...q,position:Z},Y=!0}if(!Y)return;try{await this.save()}catch(G){for(let[Z,q]of z)this.cache.tasks[Z]=q;throw G}this.notifyListeners()}async archive(f,J="done"){return this.update(f,{status:J})}async remove(f){this.assertLoaded();let J=this.cache.tasks.findIndex((Y)=>Y.id===f);if(J<0)return;this.cache.tasks.splice(J,1),await this.save(),this.notifyListeners()}async _unlinkForTests(){try{await T9(this.path)}catch(f){if(f.code!=="ENOENT")throw f}try{await T9(this.tmpPath)}catch(f){if(f.code!=="ENOENT")throw f}this.cache={version:XY,tasks:[]},this.loaded=!1}assertLoaded(){if(!this.loaded)throw Error("TaskIndexStore: call load() before any other method")}snapshot(){return{version:XY,tasks:this.cache.tasks.slice()}}notifyListeners(){if(this.listeners.size===0)return;let f=this.cache.tasks.slice();for(let J of this.listeners)try{J(f)}catch(Y){console.error("[kobe TaskIndexStore] listener threw on notify:",Y)}}}function SM(f,J){if(!f||typeof f!=="object"||Array.isArray(f))return console.warn(`[kobe] tasks.json at ${J} is not an object; recovering with empty index.`),{version:XY,tasks:[]};let Y=f,z=Y.version;if(z!==void 0&&z!==1&&z!==2&&z!==3)return console.warn(`[kobe] tasks.json at ${J} has unsupported version=${String(z)}; recovering with empty index.`),{version:XY,tasks:[]};let G=Array.isArray(Y.tasks)?Y.tasks:[],Z=[];for(let q of G){let Q=IM(q);if(Q)Z.push(Q);else console.warn(`[kobe] dropping malformed task entry from ${J}: ${JSON.stringify(q)}`)}return{version:XY,tasks:Z}}function IM(f){if(!f||typeof f!=="object")return null;let J=f;if(typeof J.id!=="string"||typeof J.title!=="string"||typeof J.repo!=="string"||typeof J.branch!=="string"||typeof J.worktreePath!=="string"||typeof J.status!=="string"||typeof J.createdAt!=="string"||typeof J.updatedAt!=="string")return null;if(!wM(J.status))return null;let Y=typeof J.archived==="boolean"?J.archived:!1,z=J.kind==="main"?"main":"task",G=z==="main"?J.status==="in_progress"||J.status==="done"?"backlog":J.status:J.status==="done"&&!Y?"in_progress":J.status;return{id:hG(J.id),title:J.title,repo:J.repo,branch:J.branch,worktreePath:J.worktreePath,status:G,archived:Y,pinned:typeof J.pinned==="boolean"?J.pinned:!1,kind:z,vendor:mY(typeof J.vendor==="string"?J.vendor:void 0),prStatus:TM(J.prStatus),...typeof J.position==="number"&&Number.isFinite(J.position)?{position:J.position}:{},...typeof J.modelEffort==="string"&&J.modelEffort.length>0?{modelEffort:J.modelEffort}:{},createdAt:J.createdAt,updatedAt:J.updatedAt}}function TM(f){if(!f||typeof f!=="object"||Array.isArray(f))return;let J=f;if(!uM(J.provider)||!EM(J.lifecycle)||!xM(J.checkState))return;return{provider:J.provider,lifecycle:J.lifecycle,checkState:J.checkState,...typeof J.number==="number"&&Number.isFinite(J.number)?{number:J.number}:{},...typeof J.url==="string"?{url:J.url}:{},...typeof J.title==="string"?{title:J.title}:{},...typeof J.baseRef==="string"?{baseRef:J.baseRef}:{},...typeof J.headRef==="string"?{headRef:J.headRef}:{},...typeof J.reviewDecision==="string"?{reviewDecision:J.reviewDecision}:{},...typeof J.mergeable==="string"?{mergeable:J.mergeable}:{},...typeof J.lastCheckedAt==="string"?{lastCheckedAt:J.lastCheckedAt}:{},...typeof J.lastError==="string"?{lastError:J.lastError}:{}}}function uM(f){return f==="github"||f==="gitlab"||f==="bitbucket"||f==="unknown"}function EM(f){return f==="creating"||f==="open"||f==="ready_to_merge"||f==="merged"||f==="closed"||f==="unknown"}function xM(f){return f==="none"||f==="pending"||f==="passing"||f==="failing"||f==="unknown"}function wM(f){return f==="backlog"||f==="in_progress"||f==="in_review"||f==="done"||f==="canceled"||f==="error"}var XY=3;var PG=C(()=>{S1();K1();I9()});function E9(f){let J=f.auth,Y=J.kind==="key"?{kind:"key",keyPath:J.keyPath}:{kind:"password",getPassword:()=>fX(J.keychainRef)};return{host:f.host,user:f.user,port:f.port,auth:Y,controlPath:_Z(f.host,f.user,f.port)}}function Tz(f){let J=vJ(f);if(!J)return new eZ;return new bz(E9(J))}function mJ(f){for(let J of Object.values(eQ()))if(f===J.basePath||f.startsWith(`${J.basePath}/`))return new bz(E9(J));return new eZ}function x9(f){return f&&D1(f)?f:void 0}function YX(f){let J=mJ(f);return J.isRemote||J.existsSync(f)}function bf(f){return mJ(f).isRemote?OJ():f}var e1=C(()=>{lf();gf();lQ();rQ()});var zX;var w9=C(()=>{zX=class zX extends Error{args;cwd;exitCode;stdout;stderr;constructor(f,J,Y){super(`git ${f.join(" ")} (cwd=${J}) exited with code ${Y.exitCode}: ${Y.stderr.trim()||Y.stdout.trim()}`);this.name="GitCommandError",this.args=f,this.cwd=J,this.exitCode=Y.exitCode,this.stdout=Y.stdout,this.stderr=Y.stderr}}});import{createHash as hM}from"crypto";import P9 from"fs";import I1 from"path";function v9(f){if(!I1.isAbsolute(f))throw Error(`worktreeRootFor: repo must be an absolute path, got: ${f}`);return I1.join(ef(),PM,dM(f))}function m9(f){if(!I1.isAbsolute(f))throw Error(`managedWorktreeRootsFor: repo must be an absolute path, got: ${f}`);return[v9(f),...cM.map((J)=>I1.join(f,J))]}function c9(f,J){if(!J||/[/\\\0]/.test(J))throw Error(`worktreePathFor: invalid slug: ${JSON.stringify(J)}`);return I1.join(v9(f),J)}async function n9(f){if(D1(f)){let Y=vJ(f)?.basePath;if(!Y)return[];return Tz(f).readdir(i9(Y))}let J=new Set;for(let Y of m9(f))try{for(let z of P9.readdirSync(Y,{withFileTypes:!0}))if(z.isDirectory())J.add(z.name)}catch{}return[...J]}function YH(f,J){if(!I1.isAbsolute(f)||!I1.isAbsolute(J))return null;let Y=h9(J);for(let z of m9(f)){let G=h9(z),Z=I1.relative(G,Y);if(Z!==""&&!Z.startsWith("..")&&!I1.isAbsolute(Z))return z}return null}function d9(f,J){return YH(f,J)!==null}function i9(f){return`${nM(f)}/.kobe/worktrees`}function l9(f,J){if(!J||/[/\\\0]/.test(J))throw Error(`remoteWorktreePathFor: invalid slug: ${JSON.stringify(J)}`);return`${i9(f)}/${J}`}function nM(f){return f.length>1&&f.endsWith("/")?f.replace(/\/+$/,""):f}function h9(f){try{return P9.realpathSync(f)}catch{return I1.resolve(f)}}function dM(f){let Y=(I1.basename(f)||"repo").replace(/[^a-zA-Z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"repo",z=hM("sha1").update(I1.resolve(f)).digest("hex").slice(0,12);return`${Y}-${z}`}var PM="worktrees",vM=".kobe/worktrees",mM=".claude/worktrees",cM;var zH=C(()=>{lf();e1();gf();cM=[vM,mM]});var r9={};jf(r9,{GitWorktreeManager:()=>GX});import $9 from"fs";import fJ from"path";class GX{execDeps;constructor(f=iM){this.execDeps=f}ctxFor(f){let J=this.execDeps.remoteBasePath(f);return J?{exec:this.execDeps.execForRepo(f),dir:J,remote:!0}:{exec:this.execDeps.execForRepo(f),dir:f,remote:!1}}async runGit(f,J,Y){if(!Y.cwd)throw Error("runGit(): cwd is required; refusing to inherit from process.cwd()");let z=await f.run(["git",...J],{cwd:Y.cwd,env:Y.env}),G={stdout:z.stdout,stderr:z.stderr,exitCode:z.exitCode};if(G.exitCode!==0&&!Y.allowFail)throw new zX(J,Y.cwd,G);return G}async create(f,J,Y,z){let G=this.ctxFor(f);if(qY("repo",G.dir),qY("path",Y),!J)throw Error("create(): branch must be a non-empty string");if(await G.exec.exists(Y)){let H=await this.tryDescribe(G,Y);if(H){if(H.branch!==J)throw Error(`worktree at ${Y} is on branch '${H.branch}', refusing to hijack to '${J}'`);return H}throw Error(`create(): ${Y} exists but is not a registered git worktree`)}await G.exec.mkdirp(fJ.dirname(Y));let q=await this.branchExists(G,J)?["worktree","add",Y,J]:z?["worktree","add","-b",J,Y,z]:["worktree","add","-b",J,Y];await this.runGit(G.exec,q,{cwd:G.dir});let Q=await this.tryDescribe(G,Y);if(!Q)throw Error(`create(): git reported success but ${Y} is not a worktree`);if(Q.branch!==J)throw Error(`create(): post-condition failed \u2014 expected branch '${J}' at ${Y}, got '${Q.branch}'`);return Q}async createForTask(f){let J=this.execDeps.remoteBasePath(f.repo),Y=J?l9(J,f.slug):c9(f.repo,f.slug);return this.create(f.repo,f.branch,Y,f.baseRef)}async remove(f,J){qY("path",f);let Y=this.execDeps.execForPath(f),z=J?.force===!0;if(!await Y.exists(f)){let q=await this.findRepoFor(Y,f);if(q)await this.runGit(Y,["worktree","prune"],{cwd:q,allowFail:!0});return}let G=await this.findRepoFor(Y,f);if(!G)throw Error(`remove(): ${f} is not a git worktree`);if(!z){if(await this.isDirty(f))throw Error(`remove(): refusing to remove dirty worktree at ${f} (pass { force: true } to override)`)}let Z=z?["worktree","remove","--force",f]:["worktree","remove",f];await this.runGit(Y,Z,{cwd:G}),await this.runGit(Y,["worktree","prune"],{cwd:G,allowFail:!0})}async list(f){let J=this.ctxFor(f);qY("repo",J.dir);let Y=await this.runGit(J.exec,["worktree","list","--porcelain"],{cwd:J.dir}),z=GH(Y.stdout),G=[];for(let Z of z){if(!Z.path)continue;let q=J.remote?a9(J.dir,Z.path):YH(f,Z.path);if(!q)continue;if(!Z.branch||Z.detached)continue;let Q=vG(q),H=vG(Z.path),B=fJ.relative(Q,H),V=fJ.join(q,B),j=await this.isDirty(Z.path);G.push({path:V,branch:Z.branch,head:Z.head??"",dirty:j})}return G}async listAll(f){let J=this.ctxFor(f);qY("repo",J.dir);let Y=await this.runGit(J.exec,["worktree","list","--porcelain"],{cwd:J.dir}),z=GH(Y.stdout),G=J.remote?J.dir:vG(J.dir),Z=[];for(let q of z){if(!q.path)continue;if(q.bare)continue;if(!q.branch||q.detached)continue;if((J.remote?q.path:vG(q.path))===G)continue;let Q=await this.isDirty(q.path);Z.push({path:q.path,branch:q.branch,head:q.head??"",dirty:Q,kobeManaged:J.remote?a9(J.dir,q.path)!==null:d9(f,q.path),lastActivityMs:await this.lastActivityMs(J.exec,q.path)})}return Z.sort((q,Q)=>Q.lastActivityMs-q.lastActivityMs),Z}async lastActivityMs(f,J){try{let Y=await this.runGit(f,["log","-1","--format=%ct"],{cwd:J}),z=Number.parseInt(Y.stdout.trim(),10);if(Number.isFinite(z)&&z>0)return z*1000}catch{}if(!f.isRemote)try{return $9.statSync(J).mtimeMs}catch{}return 0}async isDirty(f){qY("path",f);let J=this.execDeps.execForPath(f);return(await this.runGit(J,["status","--porcelain"],{cwd:f})).stdout.length>0}async currentBranch(f){qY("path",f);let J=this.execDeps.execForPath(f),z=(await this.runGit(J,["rev-parse","--abbrev-ref","HEAD"],{cwd:f})).stdout.trim();if(!z||z==="HEAD")throw Error(`currentBranch(): ${f} is in detached-HEAD state`);return z}async renameBranch(f,J,Y){if(qY("path",f),J===Y)return;let z=this.execDeps.execForPath(f),G=await this.findRepoFor(z,f);if(!G)throw Error(`renameBranch(): ${f} is not a git worktree`);await this.runGit(z,["branch","-m",J,Y],{cwd:G})}async tryDescribe(f,J){let Y=await this.runGit(f.exec,["worktree","list","--porcelain"],{cwd:f.dir}),z=GH(Y.stdout),G=(Q)=>f.remote?Q:vG(Q),Z=G(J),q=z.find((Q)=>Q.path&&G(Q.path)===Z);if(!q||!q.path||!q.branch||q.detached)return null;return{path:J,branch:q.branch,head:q.head??"",dirty:await this.isDirty(q.path)}}async branchExists(f,J){let Y=`refs/heads/${J}`;return(await this.runGit(f.exec,["show-ref","--verify","--quiet",Y],{cwd:f.dir,allowFail:!0})).exitCode===0}async findRepoFor(f,J){try{let Y=await this.runGit(f,["rev-parse","--git-common-dir"],{cwd:J,allowFail:!0});if(Y.exitCode!==0)return null;let z=Y.stdout.trim();if(!z)return null;let G=fJ.isAbsolute(z)?z:fJ.resolve(J,z);return fJ.basename(G)===".git"?fJ.dirname(G):G}catch(Y){if(Y instanceof zX)return null;throw Y}}}function GH(f){let J=[],Y=null;for(let z of f.split(`
|
|
15
|
-
`)){let G=z.replace(/\r$/,"");if(G===""){if(Y)J.push(Y);Y=null;continue}if(!Y)Y={};if(G.startsWith("worktree "))Y.path=G.slice(9);else if(G.startsWith("HEAD "))Y.head=G.slice(5);else if(G.startsWith("branch ")){let Z=G.slice(7);Y.branch=Z.startsWith("refs/heads/")?Z.slice(11):Z}else if(G==="detached")Y.detached=!0;else if(G==="bare")Y.bare=!0}if(Y)J.push(Y);return J}function a9(f,J){let Y=`${f.replace(/\/+$/,"")}/.kobe/worktrees`;return J===Y||J.startsWith(`${Y}/`)?Y:null}function qY(f,J){if(!J||!fJ.isAbsolute(J))throw Error(`${f} must be an absolute path, got: ${JSON.stringify(J)}`)}function vG(f){try{return $9.realpathSync(f)}catch{return fJ.resolve(f)}}var iM;var ZH=C(()=>{e1();gf();w9();zH();iM={execForRepo:Tz,execForPath:mJ,remoteBasePath(f){return vJ(f)?.basePath??null}}});function p9(f){let J=String(f),Y=J.length-1;return wf.context.id+(Y?String.fromCharCode(96+Y):"")+J}function QH(f){wf.context=f}function lM(){return{...wf.context,id:wf.getNextContextId(),count:0}}function aY(f,J){let Y=Uf,z=s0,G=f.length===0,Z=J===void 0?z:J,q=G?{owned:null,cleanups:null,context:null,owner:null}:{owned:null,cleanups:null,context:Z?Z.context:null,owner:Z},Q=G?()=>f(()=>{throw Error("Dispose method must be an explicit argument to createRoot function")}):()=>f(()=>$f(()=>QY(q)));YJ.afterCreateOwner&&YJ.afterCreateOwner(q),s0=q,Uf=null;try{return F1(Q,!0)}finally{Uf=Y,s0=z}}function r(f,J){J=J?Object.assign({},qX,J):qX;let Y={value:f,observers:null,observerSlots:null,comparator:J.equals||void 0};{if(J.name)Y.name=J.name;if(J.internal)Y.internal=!0;else if(zW(Y),YJ.afterCreateSignal)YJ.afterCreateSignal(Y)}let z=(G)=>{if(typeof G==="function")if(B0&&B0.running&&B0.sources.has(Y))G=G(Y.tValue);else G=G(Y.value);return BH(Y,G)};return[GW.bind(Y),z]}function o9(f,J,Y){let z=dG(f,J,!0,T1,Y);if(Ez&&B0&&B0.running)nf.push(z);else $Y(z)}function AJ(f,J,Y){let z=dG(f,J,!1,T1,Y);if(Ez&&B0&&B0.running)nf.push(z);else $Y(z)}function ff(f,J,Y){YW=YF;let z=dG(f,J,!1,T1,Y),G=cG&&u1(cG);if(G)z.suspense=G;if(!Y||!Y.render)z.user=!0;H1?H1.push(z):$Y(z)}function K0(f,J,Y){Y=Y?Object.assign({},qX,Y):qX;let z=dG(f,J,!0,0,Y);if(z.observers=null,z.observerSlots=null,z.comparator=Y.equals||void 0,Ez&&B0&&B0.running)z.tState=T1,nf.push(z);else $Y(z);return GW.bind(z)}function oM(f){return f&&typeof f==="object"&&"then"in f}function jX(f,J,Y){let z,G,Z;if(typeof J==="function")z=f,G=J,Z=Y||{};else z=!0,G=f,Z=J||{};let q=null,Q=XH,H=null,B=!1,V=!1,j="initialValue"in Z,U=typeof z==="function"&&K0(z),L=new Set,[O,M]=(Z.storage||r)(Z.initialValue),[g,I]=r(void 0),[a,N]=r(void 0,{equals:!1}),[A,R]=r(j?"ready":"unresolved");if(wf.context){if(H=wf.getNextContextId(),Z.ssrLoadFrom==="initial")Q=Z.initialValue;else if(wf.load&&wf.has(H))Q=wf.load(H)}function S(T,Q0,t,V0){if(q===T){if(q=null,V0!==void 0&&(j=!0),(T===Q||Q0===Q)&&Z.onHydrated)queueMicrotask(()=>Z.onHydrated(V0,{value:Q0}));if(Q=XH,B0&&T&&B)B0.promises.delete(T),B=!1,F1(()=>{B0.running=!0,_(Q0,t)},!1);else _(Q0,t)}return Q0}function _(T,Q0){F1(()=>{if(Q0===void 0)M(()=>T);R(Q0!==void 0?"errored":j?"ready":"unresolved"),I(Q0);for(let t of L.keys())t.decrement();L.clear()},!1)}function z0(){let T=cG&&u1(cG),Q0=O(),t=g();if(t!==void 0&&!q)throw t;if(Uf&&!Uf.user&&T)o9(()=>{if(a(),q){if(T.resolved&&B0&&B)B0.promises.add(q);else if(!L.has(T))T.increment(),L.add(T)}});return Q0}function e(T=!0){if(T!==!1&&V)return;V=!1;let Q0=U?U():z;if(B=B0&&B0.running,Q0==null||Q0===!1){S(q,$f(O));return}if(B0&&q)B0.promises.delete(q);let t,V0=Q!==XH?Q:$f(()=>{try{return G(Q0,{value:O(),refetching:T})}catch(C0){t=C0}});if(t!==void 0){S(q,void 0,XX(t),Q0);return}else if(!oM(V0))return S(q,V0,void 0,Q0),V0;if(q=V0,"v"in V0){if(V0.s===1)S(q,V0.v,void 0,Q0);else S(q,void 0,XX(V0.v),Q0);return V0}return V=!0,queueMicrotask(()=>V=!1),F1(()=>{R(j?"refreshing":"pending"),N()},!1),V0.then((C0)=>S(V0,C0,void 0,Q0),(C0)=>S(V0,void 0,XX(C0),Q0))}Object.defineProperties(z0,{state:{get:()=>A()},error:{get:()=>g()},loading:{get(){let T=A();return T==="pending"||T==="refreshing"}},latest:{get(){if(!j)return z0();let T=g();if(T&&!q)throw T;return O()}}});let Y0=s0;if(U)o9(()=>(Y0=s0,e(!1)));else e(!1);return[z0,{refetch:(T)=>sM(Y0,()=>e(T)),mutate:M}]}function WX(f){return F1(f,!1)}function $f(f){if(!uz&&Uf===null)return f();let J=Uf;Uf=null;try{if(uz)return uz.untrack(f);return f()}finally{Uf=J}}function O1(f,J,Y){let z=Array.isArray(f),G,Z=Y&&Y.defer;return(q)=>{let Q;if(z){Q=Array(f.length);for(let B=0;B<f.length;B++)Q[B]=f[B]()}else Q=f();if(Z)return Z=!1,q;let H=$f(()=>J(Q,G,q));return G=Q,H}}function f1(f){ff(()=>$f(f))}function vf(f){if(s0===null)console.warn("cleanups created outside a `createRoot` or `render` will never be run");else if(s0.cleanups===null)s0.cleanups=[f];else s0.cleanups.push(f);return f}function VX(){return Uf}function sM(f,J){let Y=s0,z=Uf;s0=f,Uf=null;try{return F1(J,!0)}catch(G){KX(G)}finally{s0=Y,Uf=z}}function tM(f){if(B0&&B0.running)return f(),B0.done;let J=Uf,Y=s0;return Promise.resolve().then(()=>{Uf=J,s0=Y;let z;if(Ez||cG)z=B0||(B0={sources:new Set,effects:[],promises:new Set,disposed:new Set,queue:new Set,running:!0}),z.done||(z.done=new Promise((G)=>z.resolve=G)),z.running=!0;return F1(f,!1),Uf=s0=null,z?z.done:void 0})}function t9(f,J){let Y=dG(()=>$f(()=>{return Object.assign(f,{[pM]:!0}),f(J)}),void 0,!0,0);return Y.props=J,Y.observers=null,Y.observerSlots=null,Y.name=f.name,Y.component=f,$Y(Y),Y.tValue!==void 0?Y.tValue:Y.value}function zW(f){if(s0){if(s0.sourceMap)s0.sourceMap.push(f);else s0.sourceMap=[f];f.graph=s0}if(YJ.afterRegisterGraph)YJ.afterRegisterGraph(f)}function gJ(f,J){let Y=Symbol("context");return{id:Y,Provider:zF(Y,J),defaultValue:f}}function u1(f){let J;return s0&&s0.context&&(J=s0.context[f.id])!==void 0?J:f.defaultValue}function eM(f){let J=K0(f),Y=K0(()=>HH(J()),void 0,{name:"children"});return Y.toArray=()=>{let z=Y();return Array.isArray(z)?z:z!=null?[z]:[]},Y}function GW(){let f=B0&&B0.running;if(this.sources&&(f?this.tState:this.state))if((f?this.tState:this.state)===T1)$Y(this);else{let J=nf;nf=null,F1(()=>QX(this),!1),nf=J}if(Uf){let J=this.observers;if(!J||J[J.length-1]!==Uf){let Y=J?J.length:0;if(!Uf.sources)Uf.sources=[this],Uf.sourceSlots=[Y];else Uf.sources.push(this),Uf.sourceSlots.push(Y);if(!J)this.observers=[Uf],this.observerSlots=[Uf.sources.length-1];else J.push(Uf),this.observerSlots.push(Uf.sources.length-1)}}if(f&&B0.sources.has(this))return this.tValue;return this.value}function BH(f,J,Y){let z=B0&&B0.running&&B0.sources.has(f)?f.tValue:f.value;if(!f.comparator||!f.comparator(z,J)){if(B0){let G=B0.running;if(G||!Y&&B0.sources.has(f))B0.sources.add(f),f.tValue=J;if(!G)f.value=J}else f.value=J;if(f.observers&&f.observers.length)F1(()=>{for(let G=0;G<f.observers.length;G+=1){let Z=f.observers[G],q=B0&&B0.running;if(q&&B0.disposed.has(Z))continue;if(q?!Z.tState:!Z.state){if(Z.pure)nf.push(Z);else H1.push(Z);if(Z.observers)XW(Z)}if(!q)Z.state=T1;else Z.tState=T1}if(nf.length>1e6){if(nf=[],aM)throw Error("Potential Infinite Loop Detected.");throw Error()}},!1)}return J}function $Y(f){if(!f.fn)return;QY(f);let J=BX;if(e9(f,B0&&B0.running&&B0.sources.has(f)?f.tValue:f.value,J),B0&&!B0.running&&B0.sources.has(f))queueMicrotask(()=>{F1(()=>{B0&&(B0.running=!0),Uf=s0=f,e9(f,f.tValue,J),Uf=s0=null},!1)})}function e9(f,J,Y){let z,G=s0,Z=Uf;Uf=s0=f;try{z=f.fn(J)}catch(q){if(f.pure)if(B0&&B0.running)f.tState=T1,f.tOwned&&f.tOwned.forEach(QY),f.tOwned=void 0;else f.state=T1,f.owned&&f.owned.forEach(QY),f.owned=null;return f.updatedAt=Y+1,KX(q)}finally{Uf=Z,s0=G}if(!f.updatedAt||f.updatedAt<=Y){if(f.updatedAt!=null&&"observers"in f)BH(f,z,!0);else if(B0&&B0.running&&f.pure){if(!B0.sources.has(f))f.value=z;B0.sources.add(f),f.tValue=z}else f.value=z;f.updatedAt=Y}}function dG(f,J,Y,z=T1,G){let Z={fn:f,state:z,updatedAt:null,owned:null,sources:null,sourceSlots:null,cleanups:null,value:J,owner:s0,context:s0?s0.context:null,pure:Y};if(B0&&B0.running)Z.state=0,Z.tState=z;if(s0===null)console.warn("computations created outside a `createRoot` or `render` will never be disposed");else if(s0!==_M)if(B0&&B0.running&&s0.pure)if(!s0.tOwned)s0.tOwned=[Z];else s0.tOwned.push(Z);else if(!s0.owned)s0.owned=[Z];else s0.owned.push(Z);if(G&&G.name)Z.name=G.name;if(uz&&Z.fn){let q=Z.fn,[Q,H]=r(void 0,{equals:!1}),B=uz.factory(q,H);vf(()=>B.dispose());let V,j=()=>tM(H).then(()=>{if(V)V.dispose(),V=void 0});Z.fn=(U)=>{if(Q(),B0&&B0.running){if(!V)V=uz.factory(q,j);return V.track(U)}return B.track(U)}}return YJ.afterCreateOwner&&YJ.afterCreateOwner(Z),Z}function nG(f){let J=B0&&B0.running;if((J?f.tState:f.state)===0)return;if((J?f.tState:f.state)===mG)return QX(f);if(f.suspense&&$f(f.suspense.inFallback))return f.suspense.effects.push(f);let Y=[f];while((f=f.owner)&&(!f.updatedAt||f.updatedAt<BX)){if(J&&B0.disposed.has(f))return;if(J?f.tState:f.state)Y.push(f)}for(let z=Y.length-1;z>=0;z--){if(f=Y[z],J){let G=f,Z=Y[z+1];while((G=G.owner)&&G!==Z)if(B0.disposed.has(G))return}if((J?f.tState:f.state)===T1)$Y(f);else if((J?f.tState:f.state)===mG){let G=nf;nf=null,F1(()=>QX(f,Y[0]),!1),nf=G}}}function F1(f,J){if(nf)return f();let Y=!1;if(!J)nf=[];if(H1)Y=!0;else H1=[];BX++;try{let z=f();return fF(Y),z}catch(z){if(!Y)H1=null;nf=null,KX(z)}}function fF(f){if(nf){if(Ez&&B0&&B0.running)JF(nf);else ZW(nf);nf=null}if(f)return;let J;if(B0){if(!B0.promises.size&&!B0.queue.size){let{sources:z,disposed:G}=B0;H1.push.apply(H1,B0.effects),J=B0.resolve;for(let Z of H1)"tState"in Z&&(Z.state=Z.tState),delete Z.tState;B0=null,F1(()=>{for(let Z of G)QY(Z);for(let Z of z){if(Z.value=Z.tValue,Z.owned)for(let q=0,Q=Z.owned.length;q<Q;q++)QY(Z.owned[q]);if(Z.tOwned)Z.owned=Z.tOwned;delete Z.tValue,delete Z.tOwned,Z.tState=0}s9(!1)},!1)}else if(B0.running){B0.running=!1,B0.effects.push.apply(B0.effects,H1),H1=null,s9(!0);return}}let Y=H1;if(H1=null,Y.length)F1(()=>YW(Y),!1);else YJ.afterUpdate&&YJ.afterUpdate();if(J)J()}function ZW(f){for(let J=0;J<f.length;J++)nG(f[J])}function JF(f){for(let J=0;J<f.length;J++){let Y=f[J],z=B0.queue;if(!z.has(Y))z.add(Y),Ez(()=>{z.delete(Y),F1(()=>{B0.running=!0,nG(Y)},!1),B0&&(B0.running=!1)})}}function YF(f){let J,Y=0;for(J=0;J<f.length;J++){let z=f[J];if(!z.user)nG(z);else f[Y++]=z}if(wf.context){if(wf.count){wf.effects||(wf.effects=[]),wf.effects.push(...f.slice(0,Y));return}QH()}if(wf.effects&&(wf.done||!wf.count))f=[...wf.effects,...f],Y+=wf.effects.length,delete wf.effects;for(J=0;J<Y;J++)nG(f[J])}function QX(f,J){let Y=B0&&B0.running;if(Y)f.tState=0;else f.state=0;for(let z=0;z<f.sources.length;z+=1){let G=f.sources[z];if(G.sources){let Z=Y?G.tState:G.state;if(Z===T1){if(G!==J&&(!G.updatedAt||G.updatedAt<BX))nG(G)}else if(Z===mG)QX(G,J)}}}function XW(f){let J=B0&&B0.running;for(let Y=0;Y<f.observers.length;Y+=1){let z=f.observers[Y];if(J?!z.tState:!z.state){if(J)z.tState=mG;else z.state=mG;if(z.pure)nf.push(z);else H1.push(z);z.observers&&XW(z)}}}function QY(f){let J;if(f.sources)while(f.sources.length){let Y=f.sources.pop(),z=f.sourceSlots.pop(),G=Y.observers;if(G&&G.length){let Z=G.pop(),q=Y.observerSlots.pop();if(z<G.length)Z.sourceSlots[q]=z,G[z]=Z,Y.observerSlots[z]=q}}if(f.tOwned){for(J=f.tOwned.length-1;J>=0;J--)QY(f.tOwned[J]);delete f.tOwned}if(B0&&B0.running&&f.pure)qW(f,!0);else if(f.owned){for(J=f.owned.length-1;J>=0;J--)QY(f.owned[J]);f.owned=null}if(f.cleanups){for(J=f.cleanups.length-1;J>=0;J--)f.cleanups[J]();f.cleanups=null}if(B0&&B0.running)f.tState=0;else f.state=0;delete f.sourceMap}function qW(f,J){if(!J)f.tState=0,B0.disposed.add(f);if(f.owned)for(let Y=0;Y<f.owned.length;Y++)qW(f.owned[Y])}function XX(f){if(f instanceof Error)return f;return Error(typeof f==="string"?f:"Unknown error",{cause:f})}function fW(f,J,Y){try{for(let z of J)z(f)}catch(z){KX(z,Y&&Y.owner||null)}}function KX(f,J=s0){let Y=_9&&J&&J.context&&J.context[_9],z=XX(f);if(!Y)throw z;if(H1)H1.push({fn(){fW(z,Y,J)},state:T1});else fW(z,Y,J)}function HH(f){if(typeof f==="function"&&!f.length)return HH(f());if(Array.isArray(f)){let J=[];for(let Y=0;Y<f.length;Y++){let z=HH(f[Y]);if(Array.isArray(z))if(z.length<32768)J.push.apply(J,z);else for(let G=0;G<z.length;G++)J.push(z[G]);else J.push(z)}return J}return f}function zF(f,J){return function(z){let G;return AJ(()=>G=$f(()=>{return s0.context={...s0.context,[f]:z.value},eM(()=>z.children)}),void 0,J),G}}function JW(f){for(let J=0;J<f.length;J++)f[J]()}function ZF(f,J,Y={}){let z=[],G=[],Z=[],q=0,Q=J.length>1?[]:null;return vf(()=>JW(Z)),()=>{let H=f()||[],B=H.length,V,j;return H[HX],$f(()=>{let L,O,M,g,I,a,N,A,R;if(B===0){if(q!==0)JW(Z),Z=[],z=[],G=[],q=0,Q&&(Q=[]);if(Y.fallback)z=[GF],G[0]=aY((S)=>{return Z[0]=S,Y.fallback()}),q=1}else if(q===0){G=Array(B);for(j=0;j<B;j++)z[j]=H[j],G[j]=aY(U);q=B}else{M=Array(B),g=Array(B),Q&&(I=Array(B));for(a=0,N=Math.min(q,B);a<N&&z[a]===H[a];a++);for(N=q-1,A=B-1;N>=a&&A>=a&&z[N]===H[A];N--,A--)M[A]=G[N],g[A]=Z[N],Q&&(I[A]=Q[N]);L=new Map,O=Array(A+1);for(j=A;j>=a;j--)R=H[j],V=L.get(R),O[j]=V===void 0?-1:V,L.set(R,j);for(V=a;V<=N;V++)if(R=z[V],j=L.get(R),j!==void 0&&j!==-1)M[j]=G[V],g[j]=Z[V],Q&&(I[j]=Q[V]),j=O[j],L.set(R,j);else Z[V]();for(j=a;j<B;j++)if(j in M){if(G[j]=M[j],Z[j]=g[j],Q)Q[j]=I[j],Q[j](j)}else G[j]=aY(U);G=G.slice(0,q=B),z=H.slice(0)}return G});function U(L){if(Z[j]=L,Q){let[O,M]=r(j,{name:"index"});return Q[j]=M,J(H[j],O)}return J(H[j])}}}function QW(f,J){if(XF){if(wf.context){let Y=wf.context;QH(lM());let z=t9(f,J||{});return QH(Y),z}}return t9(f,J||{})}function ZX(){return!0}function qH(f){return!(f=typeof f==="function"?f():f)?{}:f}function QF(){for(let f=0,J=this.length;f<J;++f){let Y=this[f]();if(Y!==void 0)return Y}}function UX(...f){let J=!1;for(let q=0;q<f.length;q++){let Q=f[q];J=J||!!Q&&JJ in Q,f[q]=typeof Q==="function"?(J=!0,K0(Q)):Q}if(rM&&J)return new Proxy({get(q){for(let Q=f.length-1;Q>=0;Q--){let H=qH(f[Q])[q];if(H!==void 0)return H}},has(q){for(let Q=f.length-1;Q>=0;Q--)if(q in qH(f[Q]))return!0;return!1},keys(){let q=[];for(let Q=0;Q<f.length;Q++)q.push(...Object.keys(qH(f[Q])));return[...new Set(q)]}},qF);let Y={},z=Object.create(null);for(let q=f.length-1;q>=0;q--){let Q=f[q];if(!Q)continue;let H=Object.getOwnPropertyNames(Q);for(let B=H.length-1;B>=0;B--){let V=H[B];if(V==="__proto__"||V==="constructor")continue;let j=Object.getOwnPropertyDescriptor(Q,V);if(!z[V])z[V]=j.get?{enumerable:!0,configurable:!0,get:QF.bind(Y[V]=[j.get.bind(Q)])}:j.value!==void 0?j:void 0;else{let U=Y[V];if(U){if(j.get)U.push(j.get.bind(Q));else if(j.value!==void 0)U.push(()=>j.value)}}}}let G={},Z=Object.keys(z);for(let q=Z.length-1;q>=0;q--){let Q=Z[q],H=z[Q];if(H&&H.get)Object.defineProperty(G,Q,H);else G[Q]=H?H.value:void 0}return G}function Zf(f){let J="fallback"in f&&{fallback:()=>f.fallback};return K0(ZF(()=>f.each,f.children,J||void 0),void 0,{name:"value"})}function X0(f){let J=f.keyed,Y=K0(()=>f.when,void 0,{name:"condition value"}),z=J?Y:K0(Y,void 0,{equals:(G,Z)=>!G===!Z,name:"condition"});return K0(()=>{let G=z();if(G){let Z=f.children;return typeof Z==="function"&&Z.length>0?$f(()=>Z(J?G:()=>{if(!$f(z))throw HF("Show");return Y()})):Z}return f.fallback},void 0,{name:"value"})}var wf,aM=!0,$M=(f,J)=>f===J,JJ,rM,HX,pM,qX,_9=null,YW,T1=1,mG=2,_M,XH,s0=null,B0=null,Ez=null,uz=null,Uf=null,nf=null,H1=null,BX=0,YJ,rI,s9,cG,GF,XF=!1,qF,HF=(f)=>`Attempting to access a stale value from <${f}> that could possibly be undefined. This may occur because you are reading the accessor returned from the component at a time where it has already been unmounted. We recommend cleaning up any stale timers or async, or reading from the initial condition.`,HW;var Wf=C(()=>{wf={context:void 0,registry:void 0,effects:void 0,done:!1,getContextId(){return p9(this.context.count)},getNextContextId(){return p9(this.context.count++)}};JJ=Symbol("solid-proxy"),rM=typeof Proxy==="function",HX=Symbol("solid-track"),pM=Symbol("solid-dev-component"),qX={equals:$M},YW=ZW,_M={},XH={},YJ={afterUpdate:null,afterCreateOwner:null,afterCreateSignal:null,afterRegisterGraph:null};[rI,s9]=r(!1);GF=Symbol("fallback");qF={get(f,J,Y){if(J===JJ)return Y;return f.get(J)},has(f,J){if(J===JJ)return!0;return f.has(J)},set:ZX,deleteProperty:ZX,getOwnPropertyDescriptor(f,J){return{configurable:!0,enumerable:!0,get(){return f.get(J)},set:ZX,deleteProperty:ZX}},ownKeys(f){return f.keys()}};HW={hooks:YJ,writeSignal:BH,registerGraph:zW};if(globalThis)if(!globalThis.Solid$$)globalThis.Solid$$=!0;else console.warn("You appear to have multiple instances of Solid. This can lead to unexpected behavior.")});function BF(f,J){switch((f??"").toUpperCase()){case"MERGED":return"merged";case"CLOSED":return"closed";case"OPEN":return(J??"").toUpperCase()==="APPROVED"?"ready_to_merge":"open";default:return"unknown"}}function jF(f){let J=(f.status??"").toUpperCase(),Y=(f.conclusion??"").toUpperCase(),z=(f.state??"").toUpperCase();if(J&&J!=="COMPLETED")return"pending";if(Y){if(Y==="SUCCESS"||Y==="NEUTRAL"||Y==="SKIPPED")return"passing";return"failing"}if(z==="SUCCESS")return"passing";if(z==="PENDING"||z==="EXPECTED")return"pending";if(z==="FAILURE"||z==="ERROR")return"failing";return"unknown"}function WF(f){if(!f||f.length===0)return"none";let J=!1,Y=!1;for(let z of f){let G=jF(z);if(G==="failing")return"failing";if(G==="pending")J=!0;else if(G==="passing")Y=!0}if(J)return"pending";if(Y)return"passing";return"unknown"}function jW(f,J){if(!f||typeof f.number!=="number")return null;return{provider:"github",lifecycle:BF(f.state,f.reviewDecision),checkState:WF(f.statusCheckRollup),number:f.number,url:f.url,title:f.title,baseRef:f.baseRefName,headRef:f.headRefName,reviewDecision:f.reviewDecision||void 0,mergeable:f.mergeable||void 0,lastCheckedAt:J}}function DX(f,J){if(f===J)return!0;if(!f||!J)return!1;return f.provider===J.provider&&f.lifecycle===J.lifecycle&&f.checkState===J.checkState&&f.number===J.number&&f.url===J.url&&f.title===J.title&&f.baseRef===J.baseRef&&f.headRef===J.headRef&&f.reviewDecision===J.reviewDecision&&f.mergeable===J.mergeable}var BW="number,url,title,state,baseRefName,headRefName,reviewDecision,mergeable,statusCheckRollup";var jH,WH,VH,KH="DIRTY_WORKTREE",UH,DH;var LH=C(()=>{jH=class jH extends Error{from;to;taskId;constructor(f,J,Y){super(`illegal transition for task ${Y}: ${f} -> ${J}`);this.from=f;this.to=J;this.taskId=Y;this.name="IllegalTransitionError"}};WH=class WH extends Error{constructor(f){super(`task not found: ${f}`);this.name="TaskNotFoundError"}};VH=class VH extends Error{constructor(){super("cannot delete a main task; remove the repo from saved repos instead");this.name="CannotDeleteMainTaskError"}};UH=class UH extends Error{taskId;constructor(f){super(`${KH}: task ${f} worktree has uncommitted or untracked changes`);this.taskId=f;this.name="DirtyWorktreeError"}};DH=class DH extends Error{taskId;cause;constructor(f,J){super(`failed to remove worktree for task ${f}: ${J instanceof Error?J.message:String(J)}`);this.taskId=f;this.cause=J;this.name="WorktreeRemoveFailedError"}}});function WW(f){if(typeof f!=="string")return"";let J=f.replace(/\s+/g," ").trim();if(J.length===0)return"";let Y=[...J];if(Y.length<=40)return J;return`${Y.slice(0,40).join("")}\u2026`}function LX(f,J){let Y=f.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,32),z=J.slice(-6).toLowerCase();return`kobe/${Y||"task"}-${z}`}var VW;var KW=C(()=>{VW=["aardvark","addax","adder","agouti","albatross","alpaca","anaconda","anchovy","anglerfish","anole","anteater","antelope","ape","argali","armadillo","avocet","axolotl","baboon","badger","banteng","barracuda","basilisk","bass","bat","beagle","bear","beaver","bee","beetle","beluga","betta","bison","blackbird","blenny","bluebird","bluegill","boar","bobcat","bonito","bovid","buffalo","bullfrog","bunting","bushbuck","butterfly","buzzard","caiman","camel","canary","capybara","caracal","cardinal","caribou","carp","cassowary","caterpillar","catfish","chameleon","chamois","char","cheetah","chickadee","chimp","chinchilla","chipmunk","chough","cicada","civet","clam","clownfish","cobra","cockatoo","condor","coot","copperhead","coral","cormorant","cougar","coyote","crab","crane","crawfish","crayfish","cricket","crocodile","crow","cuckoo","curlew","cuttlefish","deer","dikdik","dingo","dolphin","donkey","dormouse","dotterel","dove","dragonfly","dromedary","duck","dugong","dunlin","eagle","echidna","eel","egret","eider","eland","elephant","elk","emu","ermine","falcon","fawn","ferret","finch","firefly","flamingo","flounder","fox","frog","gadwall","gannet","gaur","gazelle","gecko","gemsbok","gerbil","gharial","gibbon","gnu","goat","goby","godwit","goldfish","goose","gopher","goral","gorilla","goshawk","grackle","grasshopper","grayling","grebe","grouse","guanaco","guillemot","guineafowl","guppy","halibut","hammerhead","hamster","hare","harrier","hartebeest","hawk","hedgehog","heron","herring","hippo","hornbill","hornet","horse","hummingbird","hyena","ibex","ibis","iguana","impala","indri","jacana","jackal","jaguar","jay","jellyfish","jerboa","junco","kakapo","kangaroo","kestrel","killdeer","kingfisher","kinglet","kite","kiwi","koala","kookaburra","krait","krill","kudu","ladybug","lamprey","langur","lapwing","lark","lemming","lemur","leopard","limpet","lion","lionfish","lizard","llama","lobster","locust","loon","lorikeet","loris","lynx","macaque","macaw","mackerel","magpie","mallard","mamba","mammoth","manatee","mandrill","manta","mantis","marlin","marmoset","marmot","marten","meerkat","merganser","mink","minnow","mole","mongoose","monitor","monkey","moose","moth","mouflon","mouse","mudpuppy","mule","muntjac","musk","muskox","muskrat","mussel","mustang","narwhal","newt","nightingale","numbat","nuthatch","nyala","ocelot","octopus","okapi","opossum","orangutan","orca","oriole","oryx","osprey","ostrich","otter","owl","oyster","oystercatcher","paca","panda","pangolin","panther","parakeet","parrot","parrotfish","partridge","peafowl","pelican","penguin","perch","petrel","pheasant","pigeon","pika","pike","pintail","pipefish","platypus","plover","pollock","pony","porcupine","porpoise","possum","ptarmigan","puffin","puma","pupfish","python","quail","quetzal","quokka","quoll","rabbit","raccoon","rail","rat","rattler","raven","ray","redpoll","reindeer","remora","rhino","roadrunner","robin","rook","sable","sailfish","salamander","salmon","sandpiper","sardine","scallop","scaup","scorpion","seahorse","seal","serval","shark","shearwater","shrew","shrike","shrimp","siskin","sitatunga","skate","skink","skua","skunk","sloth","smelt","snail","snipe","solenodon","sparrow","spider","springbok","squid","squirrel","starfish","starling","stilt","stingray","stoat","stork","sunbird","sunfish","swallow","swan","swift","swordfish","tahr","takin","tamarin","tanager","tapir","tarantula","tarpon","tarsier","teal","tenrec","terrapin","tern","tetra","thrasher","thrush","tiger","toad","tortoise","toucan","treecreeper","treefrog","trout","tuatara","tuna","turkey","turtle","urchin","urial","vicuna","viper","vole","vulture","wagtail","wallaby","walleye","walrus","warbler","warthog","waterbuck","weasel","wildebeest","wolf","wolverine","wombat","woodcock","woodpecker","wrasse","wren","yak","zebra","zebu","zorilla"]});class MH{activeSlugs;random;pool;pendingByRepo=new Map;chain=Promise.resolve();constructor(f,J={}){this.activeSlugs=f;if(this.random=J.random??Math.random,this.pool=J.pool??VW,this.pool.length===0)throw Error("SlugAllocator: animal pool cannot be empty")}async allocate(f){let J=this.chain,Y;this.chain=new Promise((z)=>{Y=z}),await J;try{return await this.pickLocked(f)}finally{Y()}}commit(f,J){this.deletePending(f,J)}cancel(f,J){this.deletePending(f,J)}async pickLocked(f){let J=await this.occupiedSlugs(f),Y=this.pool.filter((G)=>!J.has(G));if(Y.length>0){let G=Y[Math.floor(this.random()*Y.length)];return this.addPending(f,G),G}let z=this.pool[Math.floor(this.random()*this.pool.length)];for(let G=2;;G++){let Z=`${z}-v${G}`;if(!J.has(Z))return this.addPending(f,Z),Z}}async occupiedSlugs(f){let J=new Set(this.pendingByRepo.get(f)??[]);for(let Y of this.activeSlugs(f))if(Y)J.add(Y);for(let Y of await n9(f))J.add(Y);return J}addPending(f,J){let Y=this.pendingByRepo.get(f);if(!Y)Y=new Set,this.pendingByRepo.set(f,Y);Y.add(J)}deletePending(f,J){let Y=this.pendingByRepo.get(f);if(!Y)return;if(Y.delete(J),Y.size===0)this.pendingByRepo.delete(f)}}var UW=C(()=>{KW();zH()});var MW={};jf(MW,{PLACEHOLDER_TASK_TITLE:()=>RJ,Orchestrator:()=>MX});import{realpathSync as VF}from"fs";import{basename as KF,resolve as UF}from"path";function DW(f){return vJ(f)?.basePath??f}class MX{store;worktrees;slugs;tasksAcc;setTasks;activeTaskAcc;setActiveTaskSig;unsubscribeStore;worktreeLocks=new Map;mainTaskLocks=new Map;constructor(f){this.store=f.store,this.worktrees=f.worktrees,this.slugs=new MH((Z)=>this.store.list().filter((q)=>q.repo===Z&&q.kind!=="main").map((q)=>{return q.worktreePath.match(/([^/\\]+)[/\\]*$/)?.[1]??""}).filter((q)=>q.length>0));let[J,Y]=r(this.store.list());this.tasksAcc=J,this.setTasks=(Z)=>Y(()=>Z);let[z,G]=r(null);this.activeTaskAcc=z,this.setActiveTaskSig=(Z)=>G(()=>Z),this.unsubscribeStore=this.store.subscribe((Z)=>{this.setTasks(Z.slice())})}async init(){}activeTaskSignal(){return this.activeTaskAcc}async setActiveTask(f){let J=f===null?null:String(f);if(this.setActiveTaskSig(J),J&&this.store.get(J))await this.store.update(J,{})}tasksSignal(){return this.tasksAcc}subscribeTasks(f){return this.store.subscribe(f)}dispose(){this.unsubscribeStore()}listTasks(){return this.store.list()}getTask(f){return this.store.get(f)}async createTask(f){if(!f.repo)throw Error("createTask: repo is required");let J=(f.title??RJ).trim()||RJ,Y=await this.store.create({repo:f.repo,title:J,branch:f.branch??"",worktreePath:"",status:"backlog",kind:"task",vendor:f.vendor??yf,...f.modelEffort?{modelEffort:f.modelEffort}:{}});if(f.baseRef)this.pendingBaseRefs.set(Y.id,f.baseRef);return Y}async ensureMainTask(f){let{repo:J,key:Y}=LW(f),z=this.store.list().find((q)=>q.kind==="main"&&LW(q.repo).key===Y);if(z)return z;let G=this.mainTaskLocks.get(Y);if(G)return G;let Z=(async()=>{return await this.store.create({repo:J,title:DF(J),branch:"",worktreePath:DW(J),status:"backlog",kind:"main",vendor:yf})})();this.mainTaskLocks.set(Y,Z);try{return await Z}finally{this.mainTaskLocks.delete(Y)}}async ensureWorktree(f){let J=this.requireTask(f);if(J.kind==="main")return DW(J.repo);if(J.worktreePath)return J.worktreePath;let Y=this.worktreeLocks.get(J.id);if(Y)return await Y,this.requireTask(J.id).worktreePath;let z=(async()=>{let Z=await this.slugs.allocate(J.repo);try{let q=J.branch||LX(J.title,J.id),Q=this.pendingBaseRefs.get(J.id),H=await this.worktrees.createForTask({repo:J.repo,slug:Z,branch:q,baseRef:Q});this.slugs.commit(J.repo,Z),this.pendingBaseRefs.delete(J.id),await this.store.update(J.id,{worktreePath:H.path,branch:q})}catch(q){throw this.slugs.cancel(J.repo,Z),q}})();this.worktreeLocks.set(J.id,z);try{await z}finally{this.worktreeLocks.delete(J.id)}return this.requireTask(J.id).worktreePath}async setTitle(f,J){let Y=J.trim();if(!Y)throw Error("setTitle: title is required (empty or whitespace-only rejected)");let z=this.requireTask(f);if(z.title===Y)return;await this.store.update(z.id,{title:Y}),await this.followBranchToTitle(z,Y)}async followBranchToTitle(f,J){if(f.kind==="main"||!f.worktreePath)return;if(f.branch!==LX(RJ,f.id))return;let Y=LX(J,f.id);if(Y===f.branch)return;try{await this.setBranch(f.id,Y)}catch(z){console.error(`[kobe] follow-branch-to-title failed for ${f.id}:`,z)}}async setBranch(f,J){let Y=J.trim();if(!Y)throw Error("setBranch: branch is required (empty or whitespace-only rejected)");let z=this.requireTask(f);if(z.kind==="main")throw Error("setBranch: a main task tracks the repo's own branch; rename it with git directly");if(z.branch===Y)return;if(z.worktreePath)await this.worktrees.renameBranch(z.worktreePath,z.branch,Y);await this.store.update(z.id,{branch:Y})}async setVendor(f,J){let Y=this.requireTask(f);if(Y.vendor===J)return;await this.store.update(Y.id,{vendor:J})}async setPinned(f,J){let Y=this.requireTask(f);if(Y.kind==="main")return;let z=J??!Y.pinned;if((Y.pinned??!1)===z)return;await this.store.update(Y.id,{pinned:z})}async moveTask(f,J){let Y=this.requireTask(f);if(Y.kind==="main")return;let z=this.store.list().filter((G)=>(G.kind??"task")!=="main"&&G.archived===Y.archived&&(G.pinned??!1)===(Y.pinned??!1)).map((G)=>String(G.id));await this.store.move(Y.id,J,z)}async setArchived(f,J){let Y=this.requireTask(f);if(Y.kind==="main")return;let z=J??!Y.archived;if(Y.archived===z)return;await this.store.update(Y.id,{archived:z})}async reorderTasks(f){if(f.length===0)return;for(let J of f){if(this.requireTask(J.taskId).kind==="main")throw Error(`cannot reorder a main task: ${J.taskId}`);if(!Number.isFinite(J.position))throw Error(`position must be a finite number: ${J.taskId}`)}await this.store.reorder(f.map((J)=>({id:J.taskId,position:J.position})))}async setStatus(f,J){let Y=this.requireTask(f);if(Y.status===J)return;if(Y.status==="done"&&J==="error"||Y.status==="error"&&J==="done")throw new jH(Y.status,J,Y.id);await this.store.update(Y.id,{status:J})}async setPRStatus(f,J){let Y=this.requireTask(f);if(DX(Y.prStatus,J??void 0))return;await this.store.update(Y.id,{prStatus:J??void 0})}async deleteTask(f,J){let Y=this.store.get(f);if(!Y)return;if(Y.kind==="main")throw new VH;let z=J?.force===!0;if(Y.worktreePath){if(!z){let G=!1;try{G=await this.worktrees.isDirty(Y.worktreePath)}catch{}if(G)throw new UH(Y.id)}try{await this.worktrees.remove(Y.worktreePath,{force:z})}catch(G){throw new DH(Y.id,G)}}await this.store.remove(Y.id),this.pendingBaseRefs.delete(Y.id),this.worktreeLocks.delete(Y.id)}async discoverAdoptableWorktrees(f){if(!f)throw Error("discoverAdoptableWorktrees: repo is required");let J=await this.worktrees.listAll(f),Y=new Set(this.store.list().filter((z)=>z.worktreePath).map((z)=>xz(z.worktreePath)));return J.filter((z)=>!Y.has(xz(z.path)))}async adoptWorktree(f){if(!f.repo)throw Error("adoptWorktree: repo is required");if(!f.worktreePath)throw Error("adoptWorktree: worktreePath is required");let J=xz(f.worktreePath),Y=this.adoptLocks.get(J);if(Y)return Y;let z=this.adoptWorktreeLocked(f,J);this.adoptLocks.set(J,z);try{return await z}finally{this.adoptLocks.delete(J)}}async adoptWorktreeLocked(f,J){let Y=this.store.list().find((Q)=>Q.worktreePath&&xz(Q.worktreePath)===J);if(Y){if(f.ifExists==="return")return Y;throw Error(`adoptWorktree: ${f.worktreePath} is already adopted as a task`)}let G=(await this.worktrees.listAll(f.repo)).find((Q)=>xz(Q.path)===J);if(!G)throw Error(`adoptWorktree: ${f.worktreePath} is not an adoptable git worktree of ${f.repo} (unknown, detached, or the main checkout)`);let Z=f.branch?.trim()||G.branch,q=(f.title??KF(G.path)).trim()||RJ;return this.store.create({repo:f.repo,title:q,branch:Z,worktreePath:G.path,status:"backlog",kind:"task",vendor:f.vendor??yf})}pendingBaseRefs=new Map;adoptLocks=new Map;requireTask(f){let J=this.store.get(f);if(!J)throw new WH(String(f));return J}}function DF(f){let J=f.split(/[/\\]/).filter(Boolean);return J.length>0?J[J.length-1]??f:f}function LW(f){let J=hJ(f);return{repo:J,key:D1(J)?J:xz(J)}}function xz(f){try{return VF(f)}catch{return UF(f)}}var RJ="(new task)";var iG=C(()=>{Wf();gf();S1();LH();UW()});function FX(f){return f.remoteVersion>=f.localMin&&f.localVersion>=f.remoteMin}function FW(f,J){if(!f)return!1;return f!==J}function MF(f){return typeof f==="string"&&LF.has(f)}function OW(f){if(!Array.isArray(f))return null;let J=new Set;for(let Y of f)if(MF(Y))J.add(Y);return J.size>0?J:null}function zJ(f){return{id:f.id,title:f.title,repo:f.repo,branch:f.branch,worktreePath:f.worktreePath,kind:f.kind??"task",status:f.status,archived:f.archived,pinned:f.pinned??!1,vendor:f.vendor,prStatus:f.prStatus,position:f.position,modelEffort:f.modelEffort,createdAt:f.createdAt,updatedAt:f.updatedAt}}function lG(f){return`${JSON.stringify(f)}
|
|
16
|
-
`}var
|
|
17
|
-
`}function
|
|
18
|
-
`)}catch{}}function
|
|
13
|
+
`});function y9(f){return typeof f==="string"&&kM.includes(f)}var PG=(f)=>f,Sf="claude",kM;var S1=k(()=>{kM=["backlog","in_progress","in_review","done","canceled","error"]});function NM(f,J){let Y="",z=f;for(let G=J-1;G>=0;G--){let X=z%32;Y="0123456789ABCDEFGHJKMNPQRSTVWXYZ"[X]+Y,z=(z-X)/32}return Y}function I9(f){let J=new Uint8Array(f);crypto.getRandomValues(J);let Y=Array(f);for(let z=0;z<f;z++)Y[z]=(J[z]??0)&31;return Y}function yM(f){for(let J=f.length-1;J>=0;J--){let Y=f[J]??0;if(Y<31)return f[J]=Y+1,!0;f[J]=0}return!1}function bM(f){let J="";for(let Y of f)J+="0123456789ABCDEFGHJKMNPQRSTVWXYZ"[Y]??"0";return J}function T9(f=Date.now()){let J;if(f===b9){let Y=S9.slice();if(!yM(Y))J=I9(16);else J=Y}else J=I9(16);return b9=f,S9=J,NM(f,10)+bM(J)}var b9=-1,S9;var u9=k(()=>{S9=Array(16).fill(0)});var zH={};jf(zH,{TaskIndexStore:()=>xz});import{mkdir as SM,open as IM,readFile as TM,rename as uM,unlink as E9}from"fs/promises";import{homedir as EM}from"os";import{dirname as xM,join as x9}from"path";class xz{homeDir;kobeDir;path;tmpPath;cache={version:QY,tasks:[]};loaded=!1;listeners=new Set;saveChain=Promise.resolve();constructor(f={}){this.homeDir=f.homeDir??EM(),this.kobeDir=x9(this.homeDir,".kobe"),this.path=x9(this.kobeDir,"tasks.json"),this.tmpPath=`${this.path}.tmp`}subscribe(f){if(this.listeners.add(f),this.loaded)try{f(this.cache.tasks.slice())}catch(J){console.error("[kobe TaskIndexStore] listener threw on subscribe:",J)}return()=>{this.listeners.delete(f)}}get filePath(){return this.path}get stateDir(){return this.kobeDir}async load(){let f;try{f=await TM(this.path,"utf8")}catch(Y){if(Y.code==="ENOENT")return this.cache={version:QY,tasks:[]},this.loaded=!0,this.notifyListeners(),this.snapshot();throw Y}let J;try{J=JSON.parse(f)}catch(Y){return console.warn(`[kobe] tasks.json at ${this.path} is corrupted (${Y.message}); recovering with empty index. The stale file is left in place.`),this.cache={version:QY,tasks:[]},this.loaded=!0,this.notifyListeners(),this.snapshot()}return this.cache=wM(J,this.path),this.loaded=!0,this.notifyListeners(),this.snapshot()}async save(){this.assertLoaded();let f=this.saveChain.then(()=>this.doSave());return this.saveChain=f.catch(()=>{}),f}async doSave(){await SM(xM(this.path),{recursive:!0});let f=this.snapshot(),J=`${JSON.stringify(f,null,2)}
|
|
14
|
+
`,Y=await IM(this.tmpPath,"w",420);try{await Y.writeFile(J,"utf8"),await Y.sync()}finally{await Y.close()}await uM(this.tmpPath,this.path)}get(f){return this.assertLoaded(),this.cache.tasks.find((J)=>J.id===f)}list(){return this.assertLoaded(),this.cache.tasks.slice()}async create(f){this.assertLoaded();let J=new Date().toISOString(),Y={archived:!1,vendor:f.vendor??Sf,...f,id:PG(T9()),createdAt:J,updatedAt:J};return this.cache.tasks.push(Y),await this.save(),this.notifyListeners(),Y}async update(f,J){this.assertLoaded();let Y=this.cache.tasks.findIndex((H)=>H.id===f);if(Y<0)throw Error(`task not found: ${f}`);let z=this.cache.tasks[Y];if(!z)throw Error(`task not found: ${f}`);let{id:G,createdAt:X,...q}=J,Q={...z,...q,id:z.id,createdAt:z.createdAt,updatedAt:new Date().toISOString()};return this.cache.tasks[Y]=Q,await this.save(),this.notifyListeners(),Q}async move(f,J,Y){this.assertLoaded();let z=this.cache.tasks.find((L)=>L.id===f);if(!z)throw Error(`task not found: ${f}`);let G=Y?.length?Y:this.cache.tasks.map((L)=>L.id),X=G.indexOf(String(f));if(X<0)throw Error(`task not movable in current group: ${f}`);let q=G[X+J];if(!q)return z;let Q=this.cache.tasks.findIndex((L)=>L.id===f),H=this.cache.tasks.findIndex((L)=>L.id===q);if(Q<0||H<0||Q===H)return z;let[B]=this.cache.tasks.splice(Q,1);if(!B)return z;let V=Q<H?H-1:H,j=J>0?V+1:V,U={...B,updatedAt:new Date().toISOString()};return this.cache.tasks.splice(j,0,U),await this.save(),this.notifyListeners(),U}async reorder(f){this.assertLoaded();let J=f.map((G)=>{let X=this.cache.tasks.findIndex((Q)=>Q.id===G.id);if(!(X>=0?this.cache.tasks[X]:void 0))throw Error(`task not found: ${G.id}`);return{idx:X,position:G.position}}),Y=!1,z=new Map;for(let{idx:G,position:X}of J){let q=this.cache.tasks[G];if(!q||q.position===X)continue;if(!z.has(G))z.set(G,q);this.cache.tasks[G]={...q,position:X},Y=!0}if(!Y)return;try{await this.save()}catch(G){for(let[X,q]of z)this.cache.tasks[X]=q;throw G}this.notifyListeners()}async archive(f,J="done"){return this.update(f,{status:J})}async remove(f){this.assertLoaded();let J=this.cache.tasks.findIndex((Y)=>Y.id===f);if(J<0)return;this.cache.tasks.splice(J,1),await this.save(),this.notifyListeners()}async _unlinkForTests(){try{await E9(this.path)}catch(f){if(f.code!=="ENOENT")throw f}try{await E9(this.tmpPath)}catch(f){if(f.code!=="ENOENT")throw f}this.cache={version:QY,tasks:[]},this.loaded=!1}assertLoaded(){if(!this.loaded)throw Error("TaskIndexStore: call load() before any other method")}snapshot(){return{version:QY,tasks:this.cache.tasks.slice()}}notifyListeners(){if(this.listeners.size===0)return;let f=this.cache.tasks.slice();for(let J of this.listeners)try{J(f)}catch(Y){console.error("[kobe TaskIndexStore] listener threw on notify:",Y)}}}function wM(f,J){if(!f||typeof f!=="object"||Array.isArray(f))return console.warn(`[kobe] tasks.json at ${J} is not an object; recovering with empty index.`),{version:QY,tasks:[]};let Y=f,z=Y.version;if(z!==void 0&&z!==1&&z!==2&&z!==3)return console.warn(`[kobe] tasks.json at ${J} has unsupported version=${String(z)}; recovering with empty index.`),{version:QY,tasks:[]};let G=Array.isArray(Y.tasks)?Y.tasks:[],X=[];for(let q of G){let Q=hM(q);if(Q)X.push(Q);else console.warn(`[kobe] dropping malformed task entry from ${J}: ${JSON.stringify(q)}`)}return{version:QY,tasks:X}}function hM(f){if(!f||typeof f!=="object")return null;let J=f;if(typeof J.id!=="string"||typeof J.title!=="string"||typeof J.repo!=="string"||typeof J.branch!=="string"||typeof J.worktreePath!=="string"||typeof J.status!=="string"||typeof J.createdAt!=="string"||typeof J.updatedAt!=="string")return null;if(!nM(J.status))return null;let Y=typeof J.archived==="boolean"?J.archived:!1,z=J.kind==="main"?"main":"task",G=z==="main"?J.status==="in_progress"||J.status==="done"?"backlog":J.status:J.status==="done"&&!Y?"in_progress":J.status;return{id:PG(J.id),title:J.title,repo:J.repo,branch:J.branch,worktreePath:J.worktreePath,status:G,archived:Y,pinned:typeof J.pinned==="boolean"?J.pinned:!1,kind:z,vendor:iY(typeof J.vendor==="string"?J.vendor:void 0),prStatus:PM(J.prStatus),...typeof J.position==="number"&&Number.isFinite(J.position)?{position:J.position}:{},...typeof J.modelEffort==="string"&&J.modelEffort.length>0?{modelEffort:J.modelEffort}:{},createdAt:J.createdAt,updatedAt:J.updatedAt}}function PM(f){if(!f||typeof f!=="object"||Array.isArray(f))return;let J=f;if(!vM(J.provider)||!mM(J.lifecycle)||!cM(J.checkState))return;return{provider:J.provider,lifecycle:J.lifecycle,checkState:J.checkState,...typeof J.number==="number"&&Number.isFinite(J.number)?{number:J.number}:{},...typeof J.url==="string"?{url:J.url}:{},...typeof J.title==="string"?{title:J.title}:{},...typeof J.baseRef==="string"?{baseRef:J.baseRef}:{},...typeof J.headRef==="string"?{headRef:J.headRef}:{},...typeof J.reviewDecision==="string"?{reviewDecision:J.reviewDecision}:{},...typeof J.mergeable==="string"?{mergeable:J.mergeable}:{},...typeof J.lastCheckedAt==="string"?{lastCheckedAt:J.lastCheckedAt}:{},...typeof J.lastError==="string"?{lastError:J.lastError}:{}}}function vM(f){return f==="github"||f==="gitlab"||f==="bitbucket"||f==="unknown"}function mM(f){return f==="creating"||f==="open"||f==="ready_to_merge"||f==="merged"||f==="closed"||f==="unknown"}function cM(f){return f==="none"||f==="pending"||f==="passing"||f==="failing"||f==="unknown"}function nM(f){return f==="backlog"||f==="in_progress"||f==="in_review"||f==="done"||f==="canceled"||f==="error"}var QY=3;var vG=k(()=>{S1();U1();u9()});function w9(f){let J=f.auth,Y=J.kind==="key"?{kind:"key",keyPath:J.keyPath}:{kind:"password",getPassword:()=>YZ(J.keychainRef)};return{host:f.host,user:f.user,port:f.port,auth:Y,controlPath:sX(f.host,f.user,f.port)}}function wz(f){let J=mJ(f);if(!J)return new JZ;return new uz(w9(J))}function nJ(f){for(let J of Object.values(JH()))if(f===J.basePath||f.startsWith(`${J.basePath}/`))return new uz(w9(J));return new JZ}function h9(f){return f&&H1(f)?f:void 0}function XZ(f){let J=nJ(f);return J.isRemote||J.existsSync(f)}function If(f){return nJ(f).isRemote?OJ():f}var e1=k(()=>{lf();Of();rQ();oQ()});var ZZ;var P9=k(()=>{ZZ=class ZZ extends Error{args;cwd;exitCode;stdout;stderr;constructor(f,J,Y){super(`git ${f.join(" ")} (cwd=${J}) exited with code ${Y.exitCode}: ${Y.stderr.trim()||Y.stdout.trim()}`);this.name="GitCommandError",this.args=f,this.cwd=J,this.exitCode=Y.exitCode,this.stdout=Y.stdout,this.stderr=Y.stderr}}});import{createHash as dM}from"crypto";import m9 from"fs";import I1 from"path";function c9(f){if(!I1.isAbsolute(f))throw Error(`worktreeRootFor: repo must be an absolute path, got: ${f}`);return I1.join(ef(),iM,pM(f))}function n9(f){if(!I1.isAbsolute(f))throw Error(`managedWorktreeRootsFor: repo must be an absolute path, got: ${f}`);return[c9(f),...$M.map((J)=>I1.join(f,J))]}function d9(f,J){if(!J||/[/\\\0]/.test(J))throw Error(`worktreePathFor: invalid slug: ${JSON.stringify(J)}`);return I1.join(c9(f),J)}async function i9(f){if(H1(f)){let Y=mJ(f)?.basePath;if(!Y)return[];return wz(f).readdir(a9(Y))}let J=new Set;for(let Y of n9(f))try{for(let z of m9.readdirSync(Y,{withFileTypes:!0}))if(z.isDirectory())J.add(z.name)}catch{}return[...J]}function GH(f,J){if(!I1.isAbsolute(f)||!I1.isAbsolute(J))return null;let Y=v9(J);for(let z of n9(f)){let G=v9(z),X=I1.relative(G,Y);if(X!==""&&!X.startsWith("..")&&!I1.isAbsolute(X))return z}return null}function l9(f,J){return GH(f,J)!==null}function a9(f){return`${rM(f)}/.kobe/worktrees`}function $9(f,J){if(!J||/[/\\\0]/.test(J))throw Error(`remoteWorktreePathFor: invalid slug: ${JSON.stringify(J)}`);return`${a9(f)}/${J}`}function rM(f){return f.length>1&&f.endsWith("/")?f.replace(/\/+$/,""):f}function v9(f){try{return m9.realpathSync(f)}catch{return I1.resolve(f)}}function pM(f){let Y=(I1.basename(f)||"repo").replace(/[^a-zA-Z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"repo",z=dM("sha1").update(I1.resolve(f)).digest("hex").slice(0,12);return`${Y}-${z}`}var iM="worktrees",lM=".kobe/worktrees",aM=".claude/worktrees",$M;var XH=k(()=>{lf();e1();Of();$M=[lM,aM]});var _9={};jf(_9,{GitWorktreeManager:()=>qZ});import p9 from"fs";import fJ from"path";class qZ{execDeps;constructor(f=_M){this.execDeps=f}ctxFor(f){let J=this.execDeps.remoteBasePath(f);return J?{exec:this.execDeps.execForRepo(f),dir:J,remote:!0}:{exec:this.execDeps.execForRepo(f),dir:f,remote:!1}}async runGit(f,J,Y){if(!Y.cwd)throw Error("runGit(): cwd is required; refusing to inherit from process.cwd()");let z=await f.run(["git",...J],{cwd:Y.cwd,env:Y.env}),G={stdout:z.stdout,stderr:z.stderr,exitCode:z.exitCode};if(G.exitCode!==0&&!Y.allowFail)throw new ZZ(J,Y.cwd,G);return G}async create(f,J,Y,z){let G=this.ctxFor(f);if(HY("repo",G.dir),HY("path",Y),!J)throw Error("create(): branch must be a non-empty string");if(await G.exec.exists(Y)){let H=await this.tryDescribe(G,Y);if(H){if(H.branch!==J)throw Error(`worktree at ${Y} is on branch '${H.branch}', refusing to hijack to '${J}'`);return H}throw Error(`create(): ${Y} exists but is not a registered git worktree`)}await G.exec.mkdirp(fJ.dirname(Y));let q=await this.branchExists(G,J)?["worktree","add",Y,J]:z?["worktree","add","-b",J,Y,z]:["worktree","add","-b",J,Y];await this.runGit(G.exec,q,{cwd:G.dir});let Q=await this.tryDescribe(G,Y);if(!Q)throw Error(`create(): git reported success but ${Y} is not a worktree`);if(Q.branch!==J)throw Error(`create(): post-condition failed \u2014 expected branch '${J}' at ${Y}, got '${Q.branch}'`);return Q}async createForTask(f){let J=this.execDeps.remoteBasePath(f.repo),Y=J?$9(J,f.slug):d9(f.repo,f.slug);return this.create(f.repo,f.branch,Y,f.baseRef)}async remove(f,J){HY("path",f);let Y=this.execDeps.execForPath(f),z=J?.force===!0;if(!await Y.exists(f)){let q=await this.findRepoFor(Y,f);if(q)await this.runGit(Y,["worktree","prune"],{cwd:q,allowFail:!0});return}let G=await this.findRepoFor(Y,f);if(!G)throw Error(`remove(): ${f} is not a git worktree`);if(!z){if(await this.isDirty(f))throw Error(`remove(): refusing to remove dirty worktree at ${f} (pass { force: true } to override)`)}let X=z?["worktree","remove","--force",f]:["worktree","remove",f];await this.runGit(Y,X,{cwd:G}),await this.runGit(Y,["worktree","prune"],{cwd:G,allowFail:!0})}async list(f){let J=this.ctxFor(f);HY("repo",J.dir);let Y=await this.runGit(J.exec,["worktree","list","--porcelain"],{cwd:J.dir}),z=ZH(Y.stdout),G=[];for(let X of z){if(!X.path)continue;let q=J.remote?r9(J.dir,X.path):GH(f,X.path);if(!q)continue;if(!X.branch||X.detached)continue;let Q=mG(q),H=mG(X.path),B=fJ.relative(Q,H),V=fJ.join(q,B),j=await this.isDirty(X.path);G.push({path:V,branch:X.branch,head:X.head??"",dirty:j})}return G}async listAll(f){let J=this.ctxFor(f);HY("repo",J.dir);let Y=await this.runGit(J.exec,["worktree","list","--porcelain"],{cwd:J.dir}),z=ZH(Y.stdout),G=J.remote?J.dir:mG(J.dir),X=[];for(let q of z){if(!q.path)continue;if(q.bare)continue;if(!q.branch||q.detached)continue;if((J.remote?q.path:mG(q.path))===G)continue;let Q=await this.isDirty(q.path);X.push({path:q.path,branch:q.branch,head:q.head??"",dirty:Q,kobeManaged:J.remote?r9(J.dir,q.path)!==null:l9(f,q.path),lastActivityMs:await this.lastActivityMs(J.exec,q.path)})}return X.sort((q,Q)=>Q.lastActivityMs-q.lastActivityMs),X}async lastActivityMs(f,J){try{let Y=await this.runGit(f,["log","-1","--format=%ct"],{cwd:J}),z=Number.parseInt(Y.stdout.trim(),10);if(Number.isFinite(z)&&z>0)return z*1000}catch{}if(!f.isRemote)try{return p9.statSync(J).mtimeMs}catch{}return 0}async isDirty(f){HY("path",f);let J=this.execDeps.execForPath(f);return(await this.runGit(J,["status","--porcelain"],{cwd:f})).stdout.length>0}async currentBranch(f){HY("path",f);let J=this.execDeps.execForPath(f),z=(await this.runGit(J,["rev-parse","--abbrev-ref","HEAD"],{cwd:f})).stdout.trim();if(!z||z==="HEAD")throw Error(`currentBranch(): ${f} is in detached-HEAD state`);return z}async renameBranch(f,J,Y){if(HY("path",f),J===Y)return;let z=this.execDeps.execForPath(f),G=await this.findRepoFor(z,f);if(!G)throw Error(`renameBranch(): ${f} is not a git worktree`);await this.runGit(z,["branch","-m",J,Y],{cwd:G})}async tryDescribe(f,J){let Y=await this.runGit(f.exec,["worktree","list","--porcelain"],{cwd:f.dir}),z=ZH(Y.stdout),G=(Q)=>f.remote?Q:mG(Q),X=G(J),q=z.find((Q)=>Q.path&&G(Q.path)===X);if(!q||!q.path||!q.branch||q.detached)return null;return{path:J,branch:q.branch,head:q.head??"",dirty:await this.isDirty(q.path)}}async branchExists(f,J){let Y=`refs/heads/${J}`;return(await this.runGit(f.exec,["show-ref","--verify","--quiet",Y],{cwd:f.dir,allowFail:!0})).exitCode===0}async findRepoFor(f,J){try{let Y=await this.runGit(f,["rev-parse","--git-common-dir"],{cwd:J,allowFail:!0});if(Y.exitCode!==0)return null;let z=Y.stdout.trim();if(!z)return null;let G=fJ.isAbsolute(z)?z:fJ.resolve(J,z);return fJ.basename(G)===".git"?fJ.dirname(G):G}catch(Y){if(Y instanceof ZZ)return null;throw Y}}}function ZH(f){let J=[],Y=null;for(let z of f.split(`
|
|
15
|
+
`)){let G=z.replace(/\r$/,"");if(G===""){if(Y)J.push(Y);Y=null;continue}if(!Y)Y={};if(G.startsWith("worktree "))Y.path=G.slice(9);else if(G.startsWith("HEAD "))Y.head=G.slice(5);else if(G.startsWith("branch ")){let X=G.slice(7);Y.branch=X.startsWith("refs/heads/")?X.slice(11):X}else if(G==="detached")Y.detached=!0;else if(G==="bare")Y.bare=!0}if(Y)J.push(Y);return J}function r9(f,J){let Y=`${f.replace(/\/+$/,"")}/.kobe/worktrees`;return J===Y||J.startsWith(`${Y}/`)?Y:null}function HY(f,J){if(!J||!fJ.isAbsolute(J))throw Error(`${f} must be an absolute path, got: ${JSON.stringify(J)}`)}function mG(f){try{return p9.realpathSync(f)}catch{return fJ.resolve(f)}}var _M;var qH=k(()=>{e1();Of();P9();XH();_M={execForRepo:wz,execForPath:nJ,remoteBasePath(f){return mJ(f)?.basePath??null}}});function o9(f){let J=String(f),Y=J.length-1;return hf.context.id+(Y?String.fromCharCode(96+Y):"")+J}function BH(f){hf.context=f}function oM(){return{...hf.context,id:hf.getNextContextId(),count:0}}function _Y(f,J){let Y=Kf,z=e0,G=f.length===0,X=J===void 0?z:J,q=G?{owned:null,cleanups:null,context:null,owner:null}:{owned:null,cleanups:null,context:X?X.context:null,owner:X},Q=G?()=>f(()=>{throw Error("Dispose method must be an explicit argument to createRoot function")}):()=>f(()=>$f(()=>BY(q)));YJ.afterCreateOwner&&YJ.afterCreateOwner(q),e0=q,Kf=null;try{return F1(Q,!0)}finally{Kf=Y,e0=z}}function r(f,J){J=J?Object.assign({},BZ,J):BZ;let Y={value:f,observers:null,observerSlots:null,comparator:J.equals||void 0};{if(J.name)Y.name=J.name;if(J.internal)Y.internal=!0;else if(XW(Y),YJ.afterCreateSignal)YJ.afterCreateSignal(Y)}let z=(G)=>{if(typeof G==="function")if(j0&&j0.running&&j0.sources.has(Y))G=G(Y.tValue);else G=G(Y.value);return WH(Y,G)};return[ZW.bind(Y),z]}function t9(f,J,Y){let z=iG(f,J,!0,T1,Y);if(Pz&&j0&&j0.running)df.push(z);else oY(z)}function AJ(f,J,Y){let z=iG(f,J,!1,T1,Y);if(Pz&&j0&&j0.running)df.push(z);else oY(z)}function zf(f,J,Y){GW=QF;let z=iG(f,J,!1,T1,Y),G=nG&&u1(nG);if(G)z.suspense=G;if(!Y||!Y.render)z.user=!0;B1?B1.push(z):oY(z)}function U0(f,J,Y){Y=Y?Object.assign({},BZ,Y):BZ;let z=iG(f,J,!0,0,Y);if(z.observers=null,z.observerSlots=null,z.comparator=Y.equals||void 0,Pz&&j0&&j0.running)z.tState=T1,df.push(z);else oY(z);return ZW.bind(z)}function YF(f){return f&&typeof f==="object"&&"then"in f}function KZ(f,J,Y){let z,G,X;if(typeof J==="function")z=f,G=J,X=Y||{};else z=!0,G=f,X=J||{};let q=null,Q=QH,H=null,B=!1,V=!1,j="initialValue"in X,U=typeof z==="function"&&U0(z),L=new Set,[O,M]=(X.storage||r)(X.initialValue),[R,S]=r(void 0),[a,N]=r(void 0,{equals:!1}),[g,C]=r(j?"ready":"unresolved");if(hf.context){if(H=hf.getNextContextId(),X.ssrLoadFrom==="initial")Q=X.initialValue;else if(hf.load&&hf.has(H))Q=hf.load(H)}function y(T,Q0,p,D0){if(q===T){if(q=null,D0!==void 0&&(j=!0),(T===Q||Q0===Q)&&X.onHydrated)queueMicrotask(()=>X.onHydrated(D0,{value:Q0}));if(Q=QH,j0&&T&&B)j0.promises.delete(T),B=!1,F1(()=>{j0.running=!0,_(Q0,p)},!1);else _(Q0,p)}return Q0}function _(T,Q0){F1(()=>{if(Q0===void 0)M(()=>T);C(Q0!==void 0?"errored":j?"ready":"unresolved"),S(Q0);for(let p of L.keys())p.decrement();L.clear()},!1)}function z0(){let T=nG&&u1(nG),Q0=O(),p=R();if(p!==void 0&&!q)throw p;if(Kf&&!Kf.user&&T)t9(()=>{if(a(),q){if(T.resolved&&j0&&B)j0.promises.add(q);else if(!L.has(T))T.increment(),L.add(T)}});return Q0}function t(T=!0){if(T!==!1&&V)return;V=!1;let Q0=U?U():z;if(B=j0&&j0.running,Q0==null||Q0===!1){y(q,$f(O));return}if(j0&&q)j0.promises.delete(q);let p,D0=Q!==QH?Q:$f(()=>{try{return G(Q0,{value:O(),refetching:T})}catch(g0){p=g0}});if(p!==void 0){y(q,void 0,HZ(p),Q0);return}else if(!YF(D0))return y(q,D0,void 0,Q0),D0;if(q=D0,"v"in D0){if(D0.s===1)y(q,D0.v,void 0,Q0);else y(q,void 0,HZ(D0.v),Q0);return D0}return V=!0,queueMicrotask(()=>V=!1),F1(()=>{C(j?"refreshing":"pending"),N()},!1),D0.then((g0)=>y(D0,g0,void 0,Q0),(g0)=>y(D0,void 0,HZ(g0),Q0))}Object.defineProperties(z0,{state:{get:()=>g()},error:{get:()=>R()},loading:{get(){let T=g();return T==="pending"||T==="refreshing"}},latest:{get(){if(!j)return z0();let T=R();if(T&&!q)throw T;return O()}}});let Y0=e0;if(U)t9(()=>(Y0=e0,t(!1)));else t(!1);return[z0,{refetch:(T)=>zF(Y0,()=>t(T)),mutate:M}]}function UZ(f){return F1(f,!1)}function $f(f){if(!hz&&Kf===null)return f();let J=Kf;Kf=null;try{if(hz)return hz.untrack(f);return f()}finally{Kf=J}}function O1(f,J,Y){let z=Array.isArray(f),G,X=Y&&Y.defer;return(q)=>{let Q;if(z){Q=Array(f.length);for(let B=0;B<f.length;B++)Q[B]=f[B]()}else Q=f();if(X)return X=!1,q;let H=$f(()=>J(Q,G,q));return G=Q,H}}function f1(f){zf(()=>$f(f))}function mf(f){if(e0===null)console.warn("cleanups created outside a `createRoot` or `render` will never be run");else if(e0.cleanups===null)e0.cleanups=[f];else e0.cleanups.push(f);return f}function DZ(){return Kf}function zF(f,J){let Y=e0,z=Kf;e0=f,Kf=null;try{return F1(J,!0)}catch(G){LZ(G)}finally{e0=Y,Kf=z}}function GF(f){if(j0&&j0.running)return f(),j0.done;let J=Kf,Y=e0;return Promise.resolve().then(()=>{Kf=J,e0=Y;let z;if(Pz||nG)z=j0||(j0={sources:new Set,effects:[],promises:new Set,disposed:new Set,queue:new Set,running:!0}),z.done||(z.done=new Promise((G)=>z.resolve=G)),z.running=!0;return F1(f,!1),Kf=e0=null,z?z.done:void 0})}function fW(f,J){let Y=iG(()=>$f(()=>{return Object.assign(f,{[fF]:!0}),f(J)}),void 0,!0,0);return Y.props=J,Y.observers=null,Y.observerSlots=null,Y.name=f.name,Y.component=f,oY(Y),Y.tValue!==void 0?Y.tValue:Y.value}function XW(f){if(e0){if(e0.sourceMap)e0.sourceMap.push(f);else e0.sourceMap=[f];f.graph=e0}if(YJ.afterRegisterGraph)YJ.afterRegisterGraph(f)}function gJ(f,J){let Y=Symbol("context");return{id:Y,Provider:HF(Y,J),defaultValue:f}}function u1(f){let J;return e0&&e0.context&&(J=e0.context[f.id])!==void 0?J:f.defaultValue}function XF(f){let J=U0(f),Y=U0(()=>jH(J()),void 0,{name:"children"});return Y.toArray=()=>{let z=Y();return Array.isArray(z)?z:z!=null?[z]:[]},Y}function ZW(){let f=j0&&j0.running;if(this.sources&&(f?this.tState:this.state))if((f?this.tState:this.state)===T1)oY(this);else{let J=df;df=null,F1(()=>jZ(this),!1),df=J}if(Kf){let J=this.observers;if(!J||J[J.length-1]!==Kf){let Y=J?J.length:0;if(!Kf.sources)Kf.sources=[this],Kf.sourceSlots=[Y];else Kf.sources.push(this),Kf.sourceSlots.push(Y);if(!J)this.observers=[Kf],this.observerSlots=[Kf.sources.length-1];else J.push(Kf),this.observerSlots.push(Kf.sources.length-1)}}if(f&&j0.sources.has(this))return this.tValue;return this.value}function WH(f,J,Y){let z=j0&&j0.running&&j0.sources.has(f)?f.tValue:f.value;if(!f.comparator||!f.comparator(z,J)){if(j0){let G=j0.running;if(G||!Y&&j0.sources.has(f))j0.sources.add(f),f.tValue=J;if(!G)f.value=J}else f.value=J;if(f.observers&&f.observers.length)F1(()=>{for(let G=0;G<f.observers.length;G+=1){let X=f.observers[G],q=j0&&j0.running;if(q&&j0.disposed.has(X))continue;if(q?!X.tState:!X.state){if(X.pure)df.push(X);else B1.push(X);if(X.observers)QW(X)}if(!q)X.state=T1;else X.tState=T1}if(df.length>1e6){if(df=[],sM)throw Error("Potential Infinite Loop Detected.");throw Error()}},!1)}return J}function oY(f){if(!f.fn)return;BY(f);let J=VZ;if(JW(f,j0&&j0.running&&j0.sources.has(f)?f.tValue:f.value,J),j0&&!j0.running&&j0.sources.has(f))queueMicrotask(()=>{F1(()=>{j0&&(j0.running=!0),Kf=e0=f,JW(f,f.tValue,J),Kf=e0=null},!1)})}function JW(f,J,Y){let z,G=e0,X=Kf;Kf=e0=f;try{z=f.fn(J)}catch(q){if(f.pure)if(j0&&j0.running)f.tState=T1,f.tOwned&&f.tOwned.forEach(BY),f.tOwned=void 0;else f.state=T1,f.owned&&f.owned.forEach(BY),f.owned=null;return f.updatedAt=Y+1,LZ(q)}finally{Kf=X,e0=G}if(!f.updatedAt||f.updatedAt<=Y){if(f.updatedAt!=null&&"observers"in f)WH(f,z,!0);else if(j0&&j0.running&&f.pure){if(!j0.sources.has(f))f.value=z;j0.sources.add(f),f.tValue=z}else f.value=z;f.updatedAt=Y}}function iG(f,J,Y,z=T1,G){let X={fn:f,state:z,updatedAt:null,owned:null,sources:null,sourceSlots:null,cleanups:null,value:J,owner:e0,context:e0?e0.context:null,pure:Y};if(j0&&j0.running)X.state=0,X.tState=z;if(e0===null)console.warn("computations created outside a `createRoot` or `render` will never be disposed");else if(e0!==JF)if(j0&&j0.running&&e0.pure)if(!e0.tOwned)e0.tOwned=[X];else e0.tOwned.push(X);else if(!e0.owned)e0.owned=[X];else e0.owned.push(X);if(G&&G.name)X.name=G.name;if(hz&&X.fn){let q=X.fn,[Q,H]=r(void 0,{equals:!1}),B=hz.factory(q,H);mf(()=>B.dispose());let V,j=()=>GF(H).then(()=>{if(V)V.dispose(),V=void 0});X.fn=(U)=>{if(Q(),j0&&j0.running){if(!V)V=hz.factory(q,j);return V.track(U)}return B.track(U)}}return YJ.afterCreateOwner&&YJ.afterCreateOwner(X),X}function dG(f){let J=j0&&j0.running;if((J?f.tState:f.state)===0)return;if((J?f.tState:f.state)===cG)return jZ(f);if(f.suspense&&$f(f.suspense.inFallback))return f.suspense.effects.push(f);let Y=[f];while((f=f.owner)&&(!f.updatedAt||f.updatedAt<VZ)){if(J&&j0.disposed.has(f))return;if(J?f.tState:f.state)Y.push(f)}for(let z=Y.length-1;z>=0;z--){if(f=Y[z],J){let G=f,X=Y[z+1];while((G=G.owner)&&G!==X)if(j0.disposed.has(G))return}if((J?f.tState:f.state)===T1)oY(f);else if((J?f.tState:f.state)===cG){let G=df;df=null,F1(()=>jZ(f,Y[0]),!1),df=G}}}function F1(f,J){if(df)return f();let Y=!1;if(!J)df=[];if(B1)Y=!0;else B1=[];VZ++;try{let z=f();return ZF(Y),z}catch(z){if(!Y)B1=null;df=null,LZ(z)}}function ZF(f){if(df){if(Pz&&j0&&j0.running)qF(df);else qW(df);df=null}if(f)return;let J;if(j0){if(!j0.promises.size&&!j0.queue.size){let{sources:z,disposed:G}=j0;B1.push.apply(B1,j0.effects),J=j0.resolve;for(let X of B1)"tState"in X&&(X.state=X.tState),delete X.tState;j0=null,F1(()=>{for(let X of G)BY(X);for(let X of z){if(X.value=X.tValue,X.owned)for(let q=0,Q=X.owned.length;q<Q;q++)BY(X.owned[q]);if(X.tOwned)X.owned=X.tOwned;delete X.tValue,delete X.tOwned,X.tState=0}e9(!1)},!1)}else if(j0.running){j0.running=!1,j0.effects.push.apply(j0.effects,B1),B1=null,e9(!0);return}}let Y=B1;if(B1=null,Y.length)F1(()=>GW(Y),!1);else YJ.afterUpdate&&YJ.afterUpdate();if(J)J()}function qW(f){for(let J=0;J<f.length;J++)dG(f[J])}function qF(f){for(let J=0;J<f.length;J++){let Y=f[J],z=j0.queue;if(!z.has(Y))z.add(Y),Pz(()=>{z.delete(Y),F1(()=>{j0.running=!0,dG(Y)},!1),j0&&(j0.running=!1)})}}function QF(f){let J,Y=0;for(J=0;J<f.length;J++){let z=f[J];if(!z.user)dG(z);else f[Y++]=z}if(hf.context){if(hf.count){hf.effects||(hf.effects=[]),hf.effects.push(...f.slice(0,Y));return}BH()}if(hf.effects&&(hf.done||!hf.count))f=[...hf.effects,...f],Y+=hf.effects.length,delete hf.effects;for(J=0;J<Y;J++)dG(f[J])}function jZ(f,J){let Y=j0&&j0.running;if(Y)f.tState=0;else f.state=0;for(let z=0;z<f.sources.length;z+=1){let G=f.sources[z];if(G.sources){let X=Y?G.tState:G.state;if(X===T1){if(G!==J&&(!G.updatedAt||G.updatedAt<VZ))dG(G)}else if(X===cG)jZ(G,J)}}}function QW(f){let J=j0&&j0.running;for(let Y=0;Y<f.observers.length;Y+=1){let z=f.observers[Y];if(J?!z.tState:!z.state){if(J)z.tState=cG;else z.state=cG;if(z.pure)df.push(z);else B1.push(z);z.observers&&QW(z)}}}function BY(f){let J;if(f.sources)while(f.sources.length){let Y=f.sources.pop(),z=f.sourceSlots.pop(),G=Y.observers;if(G&&G.length){let X=G.pop(),q=Y.observerSlots.pop();if(z<G.length)X.sourceSlots[q]=z,G[z]=X,Y.observerSlots[z]=q}}if(f.tOwned){for(J=f.tOwned.length-1;J>=0;J--)BY(f.tOwned[J]);delete f.tOwned}if(j0&&j0.running&&f.pure)HW(f,!0);else if(f.owned){for(J=f.owned.length-1;J>=0;J--)BY(f.owned[J]);f.owned=null}if(f.cleanups){for(J=f.cleanups.length-1;J>=0;J--)f.cleanups[J]();f.cleanups=null}if(j0&&j0.running)f.tState=0;else f.state=0;delete f.sourceMap}function HW(f,J){if(!J)f.tState=0,j0.disposed.add(f);if(f.owned)for(let Y=0;Y<f.owned.length;Y++)HW(f.owned[Y])}function HZ(f){if(f instanceof Error)return f;return Error(typeof f==="string"?f:"Unknown error",{cause:f})}function YW(f,J,Y){try{for(let z of J)z(f)}catch(z){LZ(z,Y&&Y.owner||null)}}function LZ(f,J=e0){let Y=s9&&J&&J.context&&J.context[s9],z=HZ(f);if(!Y)throw z;if(B1)B1.push({fn(){YW(z,Y,J)},state:T1});else YW(z,Y,J)}function jH(f){if(typeof f==="function"&&!f.length)return jH(f());if(Array.isArray(f)){let J=[];for(let Y=0;Y<f.length;Y++){let z=jH(f[Y]);if(Array.isArray(z))if(z.length<32768)J.push.apply(J,z);else for(let G=0;G<z.length;G++)J.push(z[G]);else J.push(z)}return J}return f}function HF(f,J){return function(z){let G;return AJ(()=>G=$f(()=>{return e0.context={...e0.context,[f]:z.value},XF(()=>z.children)}),void 0,J),G}}function zW(f){for(let J=0;J<f.length;J++)f[J]()}function jF(f,J,Y={}){let z=[],G=[],X=[],q=0,Q=J.length>1?[]:null;return mf(()=>zW(X)),()=>{let H=f()||[],B=H.length,V,j;return H[WZ],$f(()=>{let L,O,M,R,S,a,N,g,C;if(B===0){if(q!==0)zW(X),X=[],z=[],G=[],q=0,Q&&(Q=[]);if(Y.fallback)z=[BF],G[0]=_Y((y)=>{return X[0]=y,Y.fallback()}),q=1}else if(q===0){G=Array(B);for(j=0;j<B;j++)z[j]=H[j],G[j]=_Y(U);q=B}else{M=Array(B),R=Array(B),Q&&(S=Array(B));for(a=0,N=Math.min(q,B);a<N&&z[a]===H[a];a++);for(N=q-1,g=B-1;N>=a&&g>=a&&z[N]===H[g];N--,g--)M[g]=G[N],R[g]=X[N],Q&&(S[g]=Q[N]);L=new Map,O=Array(g+1);for(j=g;j>=a;j--)C=H[j],V=L.get(C),O[j]=V===void 0?-1:V,L.set(C,j);for(V=a;V<=N;V++)if(C=z[V],j=L.get(C),j!==void 0&&j!==-1)M[j]=G[V],R[j]=X[V],Q&&(S[j]=Q[V]),j=O[j],L.set(C,j);else X[V]();for(j=a;j<B;j++)if(j in M){if(G[j]=M[j],X[j]=R[j],Q)Q[j]=S[j],Q[j](j)}else G[j]=_Y(U);G=G.slice(0,q=B),z=H.slice(0)}return G});function U(L){if(X[j]=L,Q){let[O,M]=r(j,{name:"index"});return Q[j]=M,J(H[j],O)}return J(H[j])}}}function BW(f,J){if(WF){if(hf.context){let Y=hf.context;BH(oM());let z=fW(f,J||{});return BH(Y),z}}return fW(f,J||{})}function QZ(){return!0}function HH(f){return!(f=typeof f==="function"?f():f)?{}:f}function KF(){for(let f=0,J=this.length;f<J;++f){let Y=this[f]();if(Y!==void 0)return Y}}function MZ(...f){let J=!1;for(let q=0;q<f.length;q++){let Q=f[q];J=J||!!Q&&JJ in Q,f[q]=typeof Q==="function"?(J=!0,U0(Q)):Q}if(eM&&J)return new Proxy({get(q){for(let Q=f.length-1;Q>=0;Q--){let H=HH(f[Q])[q];if(H!==void 0)return H}},has(q){for(let Q=f.length-1;Q>=0;Q--)if(q in HH(f[Q]))return!0;return!1},keys(){let q=[];for(let Q=0;Q<f.length;Q++)q.push(...Object.keys(HH(f[Q])));return[...new Set(q)]}},VF);let Y={},z=Object.create(null);for(let q=f.length-1;q>=0;q--){let Q=f[q];if(!Q)continue;let H=Object.getOwnPropertyNames(Q);for(let B=H.length-1;B>=0;B--){let V=H[B];if(V==="__proto__"||V==="constructor")continue;let j=Object.getOwnPropertyDescriptor(Q,V);if(!z[V])z[V]=j.get?{enumerable:!0,configurable:!0,get:KF.bind(Y[V]=[j.get.bind(Q)])}:j.value!==void 0?j:void 0;else{let U=Y[V];if(U){if(j.get)U.push(j.get.bind(Q));else if(j.value!==void 0)U.push(()=>j.value)}}}}let G={},X=Object.keys(z);for(let q=X.length-1;q>=0;q--){let Q=X[q],H=z[Q];if(H&&H.get)Object.defineProperty(G,Q,H);else G[Q]=H?H.value:void 0}return G}function Zf(f){let J="fallback"in f&&{fallback:()=>f.fallback};return U0(jF(()=>f.each,f.children,J||void 0),void 0,{name:"value"})}function X0(f){let J=f.keyed,Y=U0(()=>f.when,void 0,{name:"condition value"}),z=J?Y:U0(Y,void 0,{equals:(G,X)=>!G===!X,name:"condition"});return U0(()=>{let G=z();if(G){let X=f.children;return typeof X==="function"&&X.length>0?$f(()=>X(J?G:()=>{if(!$f(z))throw UF("Show");return Y()})):X}return f.fallback},void 0,{name:"value"})}var hf,sM=!0,tM=(f,J)=>f===J,JJ,eM,WZ,fF,BZ,s9=null,GW,T1=1,cG=2,JF,QH,e0=null,j0=null,Pz=null,hz=null,Kf=null,df=null,B1=null,VZ=0,YJ,JT,e9,nG,BF,WF=!1,VF,UF=(f)=>`Attempting to access a stale value from <${f}> that could possibly be undefined. This may occur because you are reading the accessor returned from the component at a time where it has already been unmounted. We recommend cleaning up any stale timers or async, or reading from the initial condition.`,jW;var Wf=k(()=>{hf={context:void 0,registry:void 0,effects:void 0,done:!1,getContextId(){return o9(this.context.count)},getNextContextId(){return o9(this.context.count++)}};JJ=Symbol("solid-proxy"),eM=typeof Proxy==="function",WZ=Symbol("solid-track"),fF=Symbol("solid-dev-component"),BZ={equals:tM},GW=qW,JF={},QH={},YJ={afterUpdate:null,afterCreateOwner:null,afterCreateSignal:null,afterRegisterGraph:null};[JT,e9]=r(!1);BF=Symbol("fallback");VF={get(f,J,Y){if(J===JJ)return Y;return f.get(J)},has(f,J){if(J===JJ)return!0;return f.has(J)},set:QZ,deleteProperty:QZ,getOwnPropertyDescriptor(f,J){return{configurable:!0,enumerable:!0,get(){return f.get(J)},set:QZ,deleteProperty:QZ}},ownKeys(f){return f.keys()}};jW={hooks:YJ,writeSignal:WH,registerGraph:XW};if(globalThis)if(!globalThis.Solid$$)globalThis.Solid$$=!0;else console.warn("You appear to have multiple instances of Solid. This can lead to unexpected behavior.")});function DF(f,J){switch((f??"").toUpperCase()){case"MERGED":return"merged";case"CLOSED":return"closed";case"OPEN":return(J??"").toUpperCase()==="APPROVED"?"ready_to_merge":"open";default:return"unknown"}}function LF(f){let J=(f.status??"").toUpperCase(),Y=(f.conclusion??"").toUpperCase(),z=(f.state??"").toUpperCase();if(J&&J!=="COMPLETED")return"pending";if(Y){if(Y==="SUCCESS"||Y==="NEUTRAL"||Y==="SKIPPED")return"passing";return"failing"}if(z==="SUCCESS")return"passing";if(z==="PENDING"||z==="EXPECTED")return"pending";if(z==="FAILURE"||z==="ERROR")return"failing";return"unknown"}function MF(f){if(!f||f.length===0)return"none";let J=!1,Y=!1;for(let z of f){let G=LF(z);if(G==="failing")return"failing";if(G==="pending")J=!0;else if(G==="passing")Y=!0}if(J)return"pending";if(Y)return"passing";return"unknown"}function VW(f,J){if(!f||typeof f.number!=="number")return null;return{provider:"github",lifecycle:DF(f.state,f.reviewDecision),checkState:MF(f.statusCheckRollup),number:f.number,url:f.url,title:f.title,baseRef:f.baseRefName,headRef:f.headRefName,reviewDecision:f.reviewDecision||void 0,mergeable:f.mergeable||void 0,lastCheckedAt:J}}function FZ(f,J){if(f===J)return!0;if(!f||!J)return!1;return f.provider===J.provider&&f.lifecycle===J.lifecycle&&f.checkState===J.checkState&&f.number===J.number&&f.url===J.url&&f.title===J.title&&f.baseRef===J.baseRef&&f.headRef===J.headRef&&f.reviewDecision===J.reviewDecision&&f.mergeable===J.mergeable}var WW="number,url,title,state,baseRefName,headRefName,reviewDecision,mergeable,statusCheckRollup";var VH,KH,UH,DH="DIRTY_WORKTREE",LH,MH;var FH=k(()=>{VH=class VH extends Error{from;to;taskId;constructor(f,J,Y){super(`illegal transition for task ${Y}: ${f} -> ${J}`);this.from=f;this.to=J;this.taskId=Y;this.name="IllegalTransitionError"}};KH=class KH extends Error{constructor(f){super(`task not found: ${f}`);this.name="TaskNotFoundError"}};UH=class UH extends Error{constructor(){super("cannot delete a main task; remove the repo from saved repos instead");this.name="CannotDeleteMainTaskError"}};LH=class LH extends Error{taskId;constructor(f){super(`${DH}: task ${f} worktree has uncommitted or untracked changes`);this.taskId=f;this.name="DirtyWorktreeError"}};MH=class MH extends Error{taskId;cause;constructor(f,J){super(`failed to remove worktree for task ${f}: ${J instanceof Error?J.message:String(J)}`);this.taskId=f;this.cause=J;this.name="WorktreeRemoveFailedError"}}});function KW(f){if(typeof f!=="string")return"";let J=f.replace(/\s+/g," ").trim();if(J.length===0)return"";let Y=[...J];if(Y.length<=40)return J;return`${Y.slice(0,40).join("")}\u2026`}function OZ(f,J){let Y=f.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,32),z=J.slice(-6).toLowerCase();return`kobe/${Y||"task"}-${z}`}var UW;var DW=k(()=>{UW=["aardvark","addax","adder","agouti","albatross","alpaca","anaconda","anchovy","anglerfish","anole","anteater","antelope","ape","argali","armadillo","avocet","axolotl","baboon","badger","banteng","barracuda","basilisk","bass","bat","beagle","bear","beaver","bee","beetle","beluga","betta","bison","blackbird","blenny","bluebird","bluegill","boar","bobcat","bonito","bovid","buffalo","bullfrog","bunting","bushbuck","butterfly","buzzard","caiman","camel","canary","capybara","caracal","cardinal","caribou","carp","cassowary","caterpillar","catfish","chameleon","chamois","char","cheetah","chickadee","chimp","chinchilla","chipmunk","chough","cicada","civet","clam","clownfish","cobra","cockatoo","condor","coot","copperhead","coral","cormorant","cougar","coyote","crab","crane","crawfish","crayfish","cricket","crocodile","crow","cuckoo","curlew","cuttlefish","deer","dikdik","dingo","dolphin","donkey","dormouse","dotterel","dove","dragonfly","dromedary","duck","dugong","dunlin","eagle","echidna","eel","egret","eider","eland","elephant","elk","emu","ermine","falcon","fawn","ferret","finch","firefly","flamingo","flounder","fox","frog","gadwall","gannet","gaur","gazelle","gecko","gemsbok","gerbil","gharial","gibbon","gnu","goat","goby","godwit","goldfish","goose","gopher","goral","gorilla","goshawk","grackle","grasshopper","grayling","grebe","grouse","guanaco","guillemot","guineafowl","guppy","halibut","hammerhead","hamster","hare","harrier","hartebeest","hawk","hedgehog","heron","herring","hippo","hornbill","hornet","horse","hummingbird","hyena","ibex","ibis","iguana","impala","indri","jacana","jackal","jaguar","jay","jellyfish","jerboa","junco","kakapo","kangaroo","kestrel","killdeer","kingfisher","kinglet","kite","kiwi","koala","kookaburra","krait","krill","kudu","ladybug","lamprey","langur","lapwing","lark","lemming","lemur","leopard","limpet","lion","lionfish","lizard","llama","lobster","locust","loon","lorikeet","loris","lynx","macaque","macaw","mackerel","magpie","mallard","mamba","mammoth","manatee","mandrill","manta","mantis","marlin","marmoset","marmot","marten","meerkat","merganser","mink","minnow","mole","mongoose","monitor","monkey","moose","moth","mouflon","mouse","mudpuppy","mule","muntjac","musk","muskox","muskrat","mussel","mustang","narwhal","newt","nightingale","numbat","nuthatch","nyala","ocelot","octopus","okapi","opossum","orangutan","orca","oriole","oryx","osprey","ostrich","otter","owl","oyster","oystercatcher","paca","panda","pangolin","panther","parakeet","parrot","parrotfish","partridge","peafowl","pelican","penguin","perch","petrel","pheasant","pigeon","pika","pike","pintail","pipefish","platypus","plover","pollock","pony","porcupine","porpoise","possum","ptarmigan","puffin","puma","pupfish","python","quail","quetzal","quokka","quoll","rabbit","raccoon","rail","rat","rattler","raven","ray","redpoll","reindeer","remora","rhino","roadrunner","robin","rook","sable","sailfish","salamander","salmon","sandpiper","sardine","scallop","scaup","scorpion","seahorse","seal","serval","shark","shearwater","shrew","shrike","shrimp","siskin","sitatunga","skate","skink","skua","skunk","sloth","smelt","snail","snipe","solenodon","sparrow","spider","springbok","squid","squirrel","starfish","starling","stilt","stingray","stoat","stork","sunbird","sunfish","swallow","swan","swift","swordfish","tahr","takin","tamarin","tanager","tapir","tarantula","tarpon","tarsier","teal","tenrec","terrapin","tern","tetra","thrasher","thrush","tiger","toad","tortoise","toucan","treecreeper","treefrog","trout","tuatara","tuna","turkey","turtle","urchin","urial","vicuna","viper","vole","vulture","wagtail","wallaby","walleye","walrus","warbler","warthog","waterbuck","weasel","wildebeest","wolf","wolverine","wombat","woodcock","woodpecker","wrasse","wren","yak","zebra","zebu","zorilla"]});class OH{activeSlugs;random;pool;pendingByRepo=new Map;chain=Promise.resolve();constructor(f,J={}){this.activeSlugs=f;if(this.random=J.random??Math.random,this.pool=J.pool??UW,this.pool.length===0)throw Error("SlugAllocator: animal pool cannot be empty")}async allocate(f){let J=this.chain,Y;this.chain=new Promise((z)=>{Y=z}),await J;try{return await this.pickLocked(f)}finally{Y()}}commit(f,J){this.deletePending(f,J)}cancel(f,J){this.deletePending(f,J)}async pickLocked(f){let J=await this.occupiedSlugs(f),Y=this.pool.filter((G)=>!J.has(G));if(Y.length>0){let G=Y[Math.floor(this.random()*Y.length)];return this.addPending(f,G),G}let z=this.pool[Math.floor(this.random()*this.pool.length)];for(let G=2;;G++){let X=`${z}-v${G}`;if(!J.has(X))return this.addPending(f,X),X}}async occupiedSlugs(f){let J=new Set(this.pendingByRepo.get(f)??[]);for(let Y of this.activeSlugs(f))if(Y)J.add(Y);for(let Y of await i9(f))J.add(Y);return J}addPending(f,J){let Y=this.pendingByRepo.get(f);if(!Y)Y=new Set,this.pendingByRepo.set(f,Y);Y.add(J)}deletePending(f,J){let Y=this.pendingByRepo.get(f);if(!Y)return;if(Y.delete(J),Y.size===0)this.pendingByRepo.delete(f)}}var LW=k(()=>{DW();XH()});var OW={};jf(OW,{PLACEHOLDER_TASK_TITLE:()=>RJ,Orchestrator:()=>AZ});import{realpathSync as FF}from"fs";import{basename as OF,resolve as AF}from"path";function MW(f){return mJ(f)?.basePath??f}class AZ{store;worktrees;slugs;tasksAcc;setTasks;activeTaskAcc;setActiveTaskSig;unsubscribeStore;worktreeLocks=new Map;mainTaskLocks=new Map;constructor(f){this.store=f.store,this.worktrees=f.worktrees,this.slugs=new OH((X)=>this.store.list().filter((q)=>q.repo===X&&q.kind!=="main").map((q)=>{return q.worktreePath.match(/([^/\\]+)[/\\]*$/)?.[1]??""}).filter((q)=>q.length>0));let[J,Y]=r(this.store.list());this.tasksAcc=J,this.setTasks=(X)=>Y(()=>X);let[z,G]=r(null);this.activeTaskAcc=z,this.setActiveTaskSig=(X)=>G(()=>X),this.unsubscribeStore=this.store.subscribe((X)=>{this.setTasks(X.slice())})}async init(){}activeTaskSignal(){return this.activeTaskAcc}async setActiveTask(f){let J=f===null?null:String(f);if(this.setActiveTaskSig(J),J&&this.store.get(J))await this.store.update(J,{})}tasksSignal(){return this.tasksAcc}subscribeTasks(f){return this.store.subscribe(f)}dispose(){this.unsubscribeStore()}listTasks(){return this.store.list()}getTask(f){return this.store.get(f)}async createTask(f){if(!f.repo)throw Error("createTask: repo is required");let J=(f.title??RJ).trim()||RJ,Y=await this.store.create({repo:f.repo,title:J,branch:f.branch??"",worktreePath:"",status:"backlog",kind:"task",vendor:f.vendor??Sf,...f.modelEffort?{modelEffort:f.modelEffort}:{}});if(f.baseRef)this.pendingBaseRefs.set(Y.id,f.baseRef);return Y}async ensureMainTask(f){let{repo:J,key:Y}=FW(f),z=this.store.list().find((q)=>q.kind==="main"&&FW(q.repo).key===Y);if(z)return z;let G=this.mainTaskLocks.get(Y);if(G)return G;let X=(async()=>{return await this.store.create({repo:J,title:gF(J),branch:"",worktreePath:MW(J),status:"backlog",kind:"main",vendor:Sf})})();this.mainTaskLocks.set(Y,X);try{return await X}finally{this.mainTaskLocks.delete(Y)}}async ensureWorktree(f){let J=this.requireTask(f);if(J.kind==="main")return MW(J.repo);if(J.worktreePath)return J.worktreePath;let Y=this.worktreeLocks.get(J.id);if(Y)return await Y,this.requireTask(J.id).worktreePath;let z=(async()=>{let X=await this.slugs.allocate(J.repo);try{let q=J.branch||OZ(J.title,J.id),Q=this.pendingBaseRefs.get(J.id),H=await this.worktrees.createForTask({repo:J.repo,slug:X,branch:q,baseRef:Q});this.slugs.commit(J.repo,X),this.pendingBaseRefs.delete(J.id),await this.store.update(J.id,{worktreePath:H.path,branch:q})}catch(q){throw this.slugs.cancel(J.repo,X),q}})();this.worktreeLocks.set(J.id,z);try{await z}finally{this.worktreeLocks.delete(J.id)}return this.requireTask(J.id).worktreePath}async setTitle(f,J){let Y=J.trim();if(!Y)throw Error("setTitle: title is required (empty or whitespace-only rejected)");let z=this.requireTask(f);if(z.title===Y)return;await this.store.update(z.id,{title:Y}),await this.followBranchToTitle(z,Y)}async followBranchToTitle(f,J){if(f.kind==="main"||!f.worktreePath)return;if(f.branch!==OZ(RJ,f.id))return;let Y=OZ(J,f.id);if(Y===f.branch)return;try{await this.setBranch(f.id,Y)}catch(z){console.error(`[kobe] follow-branch-to-title failed for ${f.id}:`,z)}}async setBranch(f,J){let Y=J.trim();if(!Y)throw Error("setBranch: branch is required (empty or whitespace-only rejected)");let z=this.requireTask(f);if(z.kind==="main")throw Error("setBranch: a main task tracks the repo's own branch; rename it with git directly");if(z.branch===Y)return;if(z.worktreePath)await this.worktrees.renameBranch(z.worktreePath,z.branch,Y);await this.store.update(z.id,{branch:Y})}async setVendor(f,J){let Y=this.requireTask(f);if(Y.vendor===J)return;await this.store.update(Y.id,{vendor:J})}async setPinned(f,J){let Y=this.requireTask(f);if(Y.kind==="main")return;let z=J??!Y.pinned;if((Y.pinned??!1)===z)return;await this.store.update(Y.id,{pinned:z})}async moveTask(f,J){let Y=this.requireTask(f);if(Y.kind==="main")return;let z=this.store.list().filter((G)=>(G.kind??"task")!=="main"&&G.archived===Y.archived&&(G.pinned??!1)===(Y.pinned??!1)).map((G)=>String(G.id));await this.store.move(Y.id,J,z)}async setArchived(f,J){let Y=this.requireTask(f);if(Y.kind==="main")return;let z=J??!Y.archived;if(Y.archived===z)return;await this.store.update(Y.id,{archived:z})}async reorderTasks(f){if(f.length===0)return;for(let J of f){if(this.requireTask(J.taskId).kind==="main")throw Error(`cannot reorder a main task: ${J.taskId}`);if(!Number.isFinite(J.position))throw Error(`position must be a finite number: ${J.taskId}`)}await this.store.reorder(f.map((J)=>({id:J.taskId,position:J.position})))}async setStatus(f,J){let Y=this.requireTask(f);if(Y.status===J)return;if(Y.status==="done"&&J==="error"||Y.status==="error"&&J==="done")throw new VH(Y.status,J,Y.id);await this.store.update(Y.id,{status:J})}async setPRStatus(f,J){let Y=this.requireTask(f);if(FZ(Y.prStatus,J??void 0))return;await this.store.update(Y.id,{prStatus:J??void 0})}async deleteTask(f,J){let Y=this.store.get(f);if(!Y)return;if(Y.kind==="main")throw new UH;let z=J?.force===!0;if(Y.worktreePath){if(!z){let G=!1;try{G=await this.worktrees.isDirty(Y.worktreePath)}catch{}if(G)throw new LH(Y.id)}try{await this.worktrees.remove(Y.worktreePath,{force:z})}catch(G){throw new MH(Y.id,G)}}await this.store.remove(Y.id),this.pendingBaseRefs.delete(Y.id),this.worktreeLocks.delete(Y.id)}async discoverAdoptableWorktrees(f){if(!f)throw Error("discoverAdoptableWorktrees: repo is required");let J=await this.worktrees.listAll(f),Y=new Set(this.store.list().filter((z)=>z.worktreePath).map((z)=>vz(z.worktreePath)));return J.filter((z)=>!Y.has(vz(z.path)))}async adoptWorktree(f){if(!f.repo)throw Error("adoptWorktree: repo is required");if(!f.worktreePath)throw Error("adoptWorktree: worktreePath is required");let J=vz(f.worktreePath),Y=this.adoptLocks.get(J);if(Y)return Y;let z=this.adoptWorktreeLocked(f,J);this.adoptLocks.set(J,z);try{return await z}finally{this.adoptLocks.delete(J)}}async adoptWorktreeLocked(f,J){let Y=this.store.list().find((Q)=>Q.worktreePath&&vz(Q.worktreePath)===J);if(Y){if(f.ifExists==="return")return Y;throw Error(`adoptWorktree: ${f.worktreePath} is already adopted as a task`)}let G=(await this.worktrees.listAll(f.repo)).find((Q)=>vz(Q.path)===J);if(!G)throw Error(`adoptWorktree: ${f.worktreePath} is not an adoptable git worktree of ${f.repo} (unknown, detached, or the main checkout)`);let X=f.branch?.trim()||G.branch,q=(f.title??OF(G.path)).trim()||RJ;return this.store.create({repo:f.repo,title:q,branch:X,worktreePath:G.path,status:"backlog",kind:"task",vendor:f.vendor??Sf})}pendingBaseRefs=new Map;adoptLocks=new Map;requireTask(f){let J=this.store.get(f);if(!J)throw new KH(String(f));return J}}function gF(f){let J=f.split(/[/\\]/).filter(Boolean);return J.length>0?J[J.length-1]??f:f}function FW(f){let J=PJ(f);return{repo:J,key:H1(J)?J:vz(J)}}function vz(f){try{return FF(f)}catch{return AF(f)}}var RJ="(new task)";var lG=k(()=>{Wf();Of();S1();FH();LW()});function gZ(f){return f.remoteVersion>=f.localMin&&f.localVersion>=f.remoteMin}function AW(f,J){if(!f)return!1;return f!==J}function CF(f){return typeof f==="string"&&RF.has(f)}function gW(f){if(!Array.isArray(f))return null;let J=new Set;for(let Y of f)if(CF(Y))J.add(Y);return J.size>0?J:null}function zJ(f){return{id:f.id,title:f.title,repo:f.repo,branch:f.branch,worktreePath:f.worktreePath,kind:f.kind??"task",status:f.status,archived:f.archived,pinned:f.pinned??!1,vendor:f.vendor,prStatus:f.prStatus,position:f.position,modelEffort:f.modelEffort,createdAt:f.createdAt,updatedAt:f.updatedAt}}function aG(f){return`${JSON.stringify(f)}
|
|
16
|
+
`}var n1=3,jY=2,AH,RF;var sY=k(()=>{AH=["task.snapshot","issue.snapshot","active-task","update","engine-state","ui-prefs","keybindings","task.jobs","worktree.changes","session.deliver"],RF=new Set(AH)});import{createHash as kF}from"crypto";import{homedir as RZ,tmpdir as NF}from"os";import{join as tY}from"path";function yF(f){return kF("sha1").update(f).digest("hex").slice(0,8)}function RH(f,J,Y,z){if(Buffer.byteLength(f,"utf8")<=gH)return f;let G=yF(J),X=z===void 0?"":`-${z}`,q=tY(NF(),`kobe-${G}-${Y}${X}.sock`);if(Buffer.byteLength(q,"utf8")<=gH)return q;throw Error(`kobe socket path exceeds ${gH} bytes even after fallback: ${q}`)}function CJ(f){let J=process.env.KOBE_DAEMON_SOCKET_PATH;if(J&&J.length>0)return J;let Y=f??process.env.KOBE_HOME_DIR;if(Y&&Y.length>0)return RH(tY(Y,".kobe","daemon.sock"),Y,"daemon");let z=process.env.XDG_RUNTIME_DIR;if(z&&z.length>0)return RH(tY(z,"kobe.sock"),z,"daemon");let G=RZ();return RH(tY(G,".kobe","daemon.sock"),G,"daemon")}function dJ(f=process.env.KOBE_HOME_DIR??RZ()){let J=process.env.KOBE_DAEMON_PID_PATH;if(J&&J.length>0)return J;return tY(f,".kobe","daemon.pid")}function CZ(f=process.env.KOBE_HOME_DIR??RZ()){return tY(f,".kobe","daemon.log")}function RW(f=process.env.KOBE_HOME_DIR??RZ()){return tY(f,".kobe","client.log")}var gH=100;var mz=()=>{};import{appendFile as CW,mkdir as bF}from"fs/promises";import{dirname as SF}from"path";function kZ(f){yW=f}function IF(f){if(f instanceof Error)return{message:f.message,stack:f.stack};let J;try{J=typeof f==="string"?f:JSON.stringify(f)}catch{J=String(f)}return{message:J}}function bW(f,J,Y=new Date){return`[${Y.toISOString()}] client ${yW} [${f}] pid=${process.pid}: ${J}
|
|
17
|
+
`}function TF(){if(kW)return;kW=!0;try{process.stderr.write(`[kobe] client log write failed; continuing without it
|
|
18
|
+
`)}catch{}}function SW(f){let J=RW();NW=NW.then(async()=>{try{await CW(J,f)}catch(Y){if(Y?.code==="ENOENT")await bF(SF(J),{recursive:!0}),await CW(J,f);else throw Y}}).catch(()=>TF())}function iJ(f,J){SW(bW(f,J))}function WY(f,J){let Y=IF(J);SW(bW(f,Y.stack??Y.message))}var yW="client",kW=!1,NW;var eY=k(()=>{mz();NW=Promise.resolve()});import{connect as uF}from"net";import{StringDecoder as EF}from"string_decoder";class d1{socketPath;socket=null;buffer="";nextId=1;pending=new Map;handlers=new Map;lifecycleHandlers=new Map;connecting=null;disposed=!1;constructor(f){this.socketPath=f}connect(){if(this.socket)return Promise.resolve();if(this.disposed)return Promise.reject(Error("daemon client disposed"));if(this.connecting)return this.connecting;let f=this.openSocket();this.connecting=f;let J=()=>{if(this.connecting===f)this.connecting=null};return f.then(J,J),f}get isDisposed(){return this.disposed}close(){this.disposed=!0,this.socket?.end(),this.socket=null,this.failPending()}forceDisconnect(){let f=this.socket;if(!f)return;this.socket=null,f.destroy(),this.failPending()}failPending(){if(this.pending.size===0)return;let f=Error("daemon connection closed");for(let J of this.pending.values())J.reject(f);this.pending.clear()}on(f,J){let Y=this.handlers.get(f);if(!Y)Y=new Set,this.handlers.set(f,Y);return Y.add(J),()=>{if(Y?.delete(J),Y?.size===0)this.handlers.delete(f)}}onChannel(f,J){return this.on(f,(Y)=>J(Y.payload))}subscribe(f={}){let J={};if(f.channels)J.channels=f.channels;if(f.role)J.role=f.role;return this.request("subscribe",J)}onLifecycle(f,J){let Y=this.lifecycleHandlers.get(f);if(!Y)Y=new Set,this.lifecycleHandlers.set(f,Y);return Y.add(J),()=>{if(Y?.delete(J),Y?.size===0)this.lifecycleHandlers.delete(f)}}async request(f,J){await this.connect();let Y=this.socket;if(!Y)throw Error("daemon connection is not open");let z=String(this.nextId++),G=new Promise((X,q)=>{this.pending.set(z,{resolve:(Q)=>X(Q),reject:q})});return Y.write(aG({type:"request",id:z,name:f,payload:J})),G}openSocket(){return new Promise((f,J)=>{let Y=uF(this.socketPath);this.socket=Y;let z=()=>{Y.off("error",G),f()},G=(q)=>{if(Y.off("connect",z),this.socket===Y)this.socket=null;J(q)};Y.once("connect",z),Y.once("error",G);let X=new EF("utf8");this.buffer="",Y.on("data",(q)=>this.onData(X.write(q))),Y.on("close",()=>this.onSocketClose(Y))})}onSocketClose(f){if(this.socket!==f)return;this.socket=null,this.failPending(),this.emitLifecycle("close")}emitLifecycle(f){for(let J of this.lifecycleHandlers.get(f)??[])try{J()}catch(Y){console.error(`[kobe] lifecycle handler for "${f}" threw:`,Y)}}onData(f){this.buffer+=f;let J=this.buffer.indexOf(`
|
|
19
19
|
`);while(J!==-1){let Y=this.buffer.slice(0,J);if(this.buffer=this.buffer.slice(J+1),Y.trim().length>0)this.onLine(Y);J=this.buffer.indexOf(`
|
|
20
|
-
`)}}onLine(f){let J;try{J=JSON.parse(f)}catch(z){
|
|
21
|
-
`).map((G)=>G.trim()).filter(Boolean)[0];if(!z)return;if(z.startsWith("claude:")&&z.includes("aliased to")){let G=z.split("aliased to")[1]?.trim();return G&&
|
|
22
|
-
`).map((G)=>G.trim()).filter(Boolean)[0];if(!z)return;if(z.startsWith("codex:")&&z.includes("aliased to")){let G=z.split("aliased to")[1]?.trim();return G&&
|
|
23
|
-
`).map((G)=>G.trim()).filter(Boolean)[0];if(!z)return;if(z.startsWith("copilot:")&&z.includes("aliased to")){let G=z.split("aliased to")[1]?.trim();return G&&
|
|
24
|
-
`)){let G=z.trim();if(!G)continue;let
|
|
25
|
-
`);if(J?.markerPath){let
|
|
20
|
+
`)}}onLine(f){let J;try{J=JSON.parse(f)}catch(z){WY("client-frame",z);return}if(J.type==="event"){this.emit(J);return}if(J.type!=="response")return;let Y=this.pending.get(J.id);if(!Y)return;if(this.pending.delete(J.id),J.error){let z=Error(J.error.message);if(J.error.name)z.name=J.error.name;Y.reject(z)}else Y.resolve(J.payload)}emit(f){for(let J of this.handlers.get(f.name)??[])J(f);for(let J of this.handlers.get("*")??[])J(f)}}var $G=k(()=>{sY();eY()});function NZ(f){return xF.includes(f)}function IW(f,J,Y){switch(J){case"session-start":case"session-end":return"idle";case"turn-start":return"running";case"turn-complete":return"turn_complete";case"turn-failed":return Y?.failure==="rate_limit"||Y?.failure==="billing"?"rate_limited":"error";case"awaiting-input":return Y?.waiting==="permission"?"permission_needed":"running"}}var xF;var yZ=k(()=>{xF=["session-start","turn-start","turn-complete","turn-failed","awaiting-input","session-end"]});function wF(){let f=process.env.KOBE_ENGINE_STATE_TTL_MS;if(f===void 0)return TW;let J=Number(f);return Number.isFinite(J)&&J>0?J:TW}class CH{bus;staleMs;now;activity=new Map;constructor(f,J=wF(),Y=()=>Date.now()){this.bus=f;this.staleMs=J;this.now=Y}report(f,J,Y){let z=this.activity.get(f);if(z?.lapse)clearTimeout(z.lapse);let G=IW(z?.state,J,Y),X=this.now(),q={state:G,detail:Y,at:X};if(G!=="idle"&&G!=="turn_complete")q.lapse=setTimeout(()=>{let Q=this.activity.get(f);if(Q&&Q.at===X)this.publishIdle(f)},this.staleMs),q.lapse.unref?.();this.activity.set(f,q),this.bus.publish("engine-state",this.payload(f,q))}clearTask(f){let J=this.activity.get(f);if(J?.lapse)clearTimeout(J.lapse);if(this.activity.delete(f),J)this.bus.publish("engine-state",{taskId:f,state:"idle",at:this.now()})}snapshotByTask(){let f={};for(let[J,Y]of this.activity)f[J]=this.payload(J,Y);return f}currentNonIdle(){let f=[];for(let[J,Y]of this.activity)if(Y.state!=="idle")f.push(this.payload(J,Y));return f}close(){for(let f of this.activity.values())if(f.lapse)clearTimeout(f.lapse);this.activity.clear()}publishIdle(f){let J={state:"idle",at:this.now()};this.activity.set(f,J),this.bus.publish("engine-state",this.payload(f,J))}payload(f,J){return{taskId:f,state:J.state,...J.detail?{detail:J.detail}:{},at:J.at}}}var TW=600000;var uW=k(()=>{yZ()});import{spawnSync as hF}from"child_process";import{existsSync as PF,statSync as vF}from"fs";import{homedir as mF}from"os";import rG from"path";async function EW(f=cF){let J=[],Y=(B)=>{if(!B)return;return J.push(B),f.fileExists(B)?B:void 0},z=f.which("claude");if(z){if(J.push(`which:${z}`),f.fileExists(z))return z}let G=f.home(),X=Y(rG.join(G,".claude","local","claude"));if(X)return X;let q=f.env("NVM_BIN");if(q){let B=Y(rG.join(q,"claude"));if(B)return B}let Q=rG.join(G,".nvm","versions","node"),H=f.readdir(Q).sort().reverse();for(let B of H){let V=Y(rG.join(Q,B,"bin","claude"));if(V)return V}for(let B of["/opt/homebrew/bin/claude","/usr/local/bin/claude","/usr/bin/claude","/bin/claude"]){let V=Y(B);if(V)return V}for(let B of[".local/bin/claude",".npm-global/bin/claude",".yarn/bin/claude",".bun/bin/claude","bin/claude"]){let V=Y(rG.join(G,B));if(V)return V}throw new bZ(J)}var bZ,cF;var xW=k(()=>{bZ=class bZ extends Error{checkedPaths;constructor(f){super(`Claude Code binary not found. Checked: ${f.join(", ")}. Ensure 'claude' is on PATH, or install at ~/.claude/local/claude.`);this.name="ClaudeBinaryNotFoundError",this.checkedPaths=f}};cF={fileExists(f){try{return vF(f).isFile()}catch{return!1}},env(f){return process.env[f]},home(){return mF()},which(f){let J=process.platform==="win32"?"where":"which",Y=hF(J,[f],{encoding:"utf8"});if(Y.status!==0)return;let z=Y.stdout.split(`
|
|
21
|
+
`).map((G)=>G.trim()).filter(Boolean)[0];if(!z)return;if(z.startsWith("claude:")&&z.includes("aliased to")){let G=z.split("aliased to")[1]?.trim();return G&&PF(G)?G:void 0}return z},readdir(f){try{return pX("fs").readdirSync(f)}catch{return[]}}}});import{spawnSync as nF}from"child_process";import{existsSync as dF,statSync as iF}from"fs";import{homedir as lF}from"os";import wW from"path";async function hW(f=aF){let J=[],Y=(q)=>{if(!q)return;return J.push(q),f.fileExists(q)?q:void 0},z=f.which("codex");if(z){if(J.push(`which:${z}`),f.fileExists(z))return z}let G=f.home();for(let q of["/opt/homebrew/bin/codex","/usr/local/bin/codex","/usr/bin/codex","/bin/codex"]){let Q=Y(q);if(Q)return Q}let X=f.env("NVM_BIN");if(X){let q=Y(wW.join(X,"codex"));if(q)return q}for(let q of[".local/bin/codex",".bun/bin/codex","bin/codex"]){let Q=Y(wW.join(G,q));if(Q)return Q}throw new SZ(J)}var SZ,aF;var PW=k(()=>{SZ=class SZ extends Error{checkedPaths;constructor(f){super(`Codex CLI binary not found. Checked: ${f.join(", ")}. Ensure 'codex' is on PATH (e.g. \`brew install codex\` or the official installer).`);this.name="CodexBinaryNotFoundError",this.checkedPaths=f}};aF={fileExists(f){try{return iF(f).isFile()}catch{return!1}},env(f){return process.env[f]},home(){return lF()},which(f){let J=process.platform==="win32"?"where":"which",Y=nF(J,[f],{encoding:"utf8"});if(Y.status!==0)return;let z=Y.stdout.split(`
|
|
22
|
+
`).map((G)=>G.trim()).filter(Boolean)[0];if(!z)return;if(z.startsWith("codex:")&&z.includes("aliased to")){let G=z.split("aliased to")[1]?.trim();return G&&dF(G)?G:void 0}return z},readdir(f){try{return pX("fs").readdirSync(f)}catch{return[]}}}});import{spawnSync as $F}from"child_process";import{existsSync as rF,statSync as pF}from"fs";import{homedir as _F}from"os";import VY from"path";async function vW(f=oF){let J=[],Y=(V)=>{if(!V)return;return J.push(V),f.fileExists(V)?V:void 0},z=f.which("copilot");if(z){if(J.push(`which:${z}`),f.fileExists(z))return z}let G=f.platform()==="win32"?["copilot.exe","copilot.cmd","copilot"]:["copilot"],X=(V)=>{if(!V)return;for(let j of G){let U=Y(VY.join(V,j));if(U)return U}return};for(let V of["/opt/homebrew/bin","/usr/local/bin","/usr/bin","/bin"]){let j=X(V);if(j)return j}let q=f.env("NVM_BIN"),Q=X(q);if(Q)return Q;let H=f.home(),B=[VY.join(H,".npm-global/bin"),VY.join(H,".local/bin"),VY.join(H,".bun/bin"),VY.join(H,"bin")];if(f.platform()==="win32"){let V=f.env("APPDATA"),j=f.env("LOCALAPPDATA");if(B.unshift(VY.join(H,"AppData/Roaming/npm")),V)B.unshift(VY.join(V,"npm"));if(j)B.unshift(VY.join(j,"npm"))}for(let V of B){let j=X(V);if(j)return j}throw new IZ(J)}var IZ,oF;var mW=k(()=>{IZ=class IZ extends Error{checkedPaths;constructor(f){super(`GitHub Copilot CLI binary not found. Checked: ${f.join(", ")}. Ensure 'copilot' is on PATH (for example \`npm install -g @github/copilot\` or \`brew install copilot-cli\`).`);this.name="CopilotBinaryNotFoundError",this.checkedPaths=f}};oF={fileExists(f){try{return pF(f).isFile()}catch{return!1}},env(f){return process.env[f]},home(){return _F()},which(f){let J=process.platform==="win32"?"where":"which",Y=$F(J,[f],{encoding:"utf8"});if(Y.status!==0)return;let z=Y.stdout.split(`
|
|
23
|
+
`).map((G)=>G.trim()).filter(Boolean)[0];if(!z)return;if(z.startsWith("copilot:")&&z.includes("aliased to")){let G=z.split("aliased to")[1]?.trim();return G&&rF(G)?G:void 0}return z},platform(){return process.platform}}});import{readFileSync as sF,statSync as tF}from"fs";import{homedir as eF}from"os";import KY from"path";function f3(f,J){let Y=f("CLAUDE_CONFIG_DIR")?.trim();if(Y)return KY.join(Y,".claude.json");return KY.join(J,".claude.json")}function J3(f,J){let z=f("CODEX_HOME")?.trim()??KY.join(J,".codex");return KY.join(z,"auth.json")}function Y3(f,J){let z=f("COPILOT_HOME")?.trim()??KY.join(J,".copilot");return KY.join(z,"config.json")}function z3(f){let J=f.split(".");if(J.length!==3)return null;let Y=J[1];if(!Y)return null;let z=Y.replace(/-/g,"+").replace(/_/g,"/"),G=z+"=".repeat((4-z.length%4)%4);try{let X=Buffer.from(G,"base64").toString("utf8"),q=JSON.parse(X);return typeof q==="object"&&q!==null?q:null}catch{return null}}async function uZ(f){try{return{found:!0,path:await f()}}catch(J){if(J instanceof bZ||J instanceof SZ||J instanceof IZ)return{found:!1,error:"not found on PATH"};return{found:!1,error:J instanceof Error?J.message:String(J)}}}async function cW(f){return(await Promise.all([["claude",()=>f.findClaudeBinary()],["codex",()=>f.findCodexBinary()],["copilot",()=>f.findCopilotBinary()]].map(async([z,G])=>(await uZ(G)).found?z:null))).filter((z)=>z!==null)}function G3(f=cz){if(f!==cz)return cW(f);if(TZ)return TZ;let J=cW(f).catch((Y)=>{throw TZ=null,Y});return TZ=J,J}async function lJ(f=cz){return[...await G3(f),...sQ()]}async function EZ(f=cz){let J=await uZ(()=>f.findClaudeBinary()),Y=f3(f.env,f.home()),z;try{z=f.readFile(Y)}catch(H){return{binary:J,account:{kind:"none"},accountError:`read ${Y}: ${H instanceof Error?H.message:String(H)}`}}if(z===null)return{binary:J,account:{kind:"none"}};let G;try{G=JSON.parse(z)}catch(H){return{binary:J,account:{kind:"none"},accountError:`parse ${Y}: ${H instanceof Error?H.message:String(H)}`}}let X=G?.oauthAccount;if(!X||typeof X!=="object")return{binary:J,account:{kind:"none"}};let q=X,Q=typeof q.emailAddress==="string"?q.emailAddress:void 0;if(!Q)return{binary:J,account:{kind:"none"}};return{binary:J,account:{kind:"oauth",email:Q,organization:typeof q.organizationName==="string"?q.organizationName:void 0,displayName:typeof q.displayName==="string"?q.displayName:void 0,billingType:typeof q.billingType==="string"?q.billingType:void 0}}}async function xZ(f=cz){let J=await uZ(()=>f.findCodexBinary()),Y=J3(f.env,f.home()),z;try{z=f.readFile(Y)}catch(B){return{binary:J,account:{kind:"none"},accountError:`read ${Y}: ${B instanceof Error?B.message:String(B)}`}}if(z===null)return{binary:J,account:{kind:"none"}};let G;try{G=JSON.parse(z)}catch(B){return{binary:J,account:{kind:"none"},accountError:`parse ${Y}: ${B instanceof Error?B.message:String(B)}`}}let X=G??{},q=X.tokens,Q=typeof q?.id_token==="string"?q.id_token:void 0;if(Q){let B=z3(Q);if(!B)return{binary:J,account:{kind:"none"},accountError:"codex id_token: malformed JWT"};let V=typeof B.email==="string"?B.email:void 0,j=B["https://api.openai.com/auth"],U=typeof j==="object"&&j!==null&&!Array.isArray(j)?j:void 0,L=typeof U?.chatgpt_plan_type==="string"?U.chatgpt_plan_type:void 0;if(V)return{binary:J,account:{kind:"chatgpt",email:V,plan:L}};return{binary:J,account:{kind:"none"},accountError:"codex id_token: no email claim"}}let H=X.OPENAI_API_KEY;if(typeof H==="string"&&H.length>0)return{binary:J,account:{kind:"apikey"}};return{binary:J,account:{kind:"none"}}}async function wZ(f=cz){let J=await uZ(()=>f.findCopilotBinary());for(let X of["COPILOT_GITHUB_TOKEN","GH_TOKEN","GITHUB_TOKEN"])if(f.env(X)?.trim())return{binary:J,account:{kind:"token",source:X}};let Y=Y3(f.env,f.home()),z;try{z=f.readFile(Y)}catch(X){return{binary:J,account:{kind:"none"},accountError:`read ${Y}: ${X instanceof Error?X.message:String(X)}`}}if(z===null)return{binary:J,account:{kind:"none"}};let G;try{G=JSON.parse(z)}catch(X){return{binary:J,account:{kind:"none"},accountError:`parse ${Y}: ${X instanceof Error?X.message:String(X)}`}}if(!kH(G))return{binary:J,account:{kind:"none"}};if(nW(G,["github_token","oauth_token","access_token","token","selectedUser","currentUser","user"]))return{binary:J,account:{kind:"oauth"}};return{binary:J,account:{kind:"none"}}}function kH(f){return typeof f==="object"&&f!==null&&!Array.isArray(f)}function nW(f,J,Y=0){if(Y>4||!kH(f))return!1;for(let[z,G]of Object.entries(f)){if(J.includes(z)&&typeof G==="string"&&G.length>0)return!0;if(kH(G)&&nW(G,J,Y+1))return!0}return!1}var cz,TZ=null;var fz=k(()=>{Of();xW();PW();mW();cz={readFile(f){try{tF(f)}catch(J){if(J.code==="ENOENT")return null;throw J}return sF(f,"utf8")},env(f){return process.env[f]},home(){return eF()},findClaudeBinary(){return EW()},findCodexBinary(){return hW()},findCopilotBinary(){return vW()}}});function dW(f){if(typeof f==="string")return f.length>0?[{type:"text",text:f}]:[];if(!Array.isArray(f))return[];let J=[];for(let Y of f){if(typeof Y==="string"){if(Y.length>0)J.push({type:"text",text:Y});continue}if(!Y||typeof Y!=="object")continue;let z=Y;if(z.type==="text"&&typeof z.text==="string"){J.push({type:"text",text:z.text});continue}if(z.type==="tool_use"){J.push({type:"tool_call",callId:typeof z.id==="string"?z.id:"",name:typeof z.name==="string"?z.name:"",input:z.input});continue}if(z.type==="tool_result"){J.push({type:"tool_result",callId:typeof z.tool_use_id==="string"?z.tool_use_id:"",output:z.content,isError:z.is_error===!0});continue}if(z.type==="thinking"&&typeof z.thinking==="string")J.push({type:"thinking",text:z.thinking})}return J}function iW(f){return f.isMeta===!0||f.isCompactSummary===!0}function lW(f){if(f.length===0)return!1;for(let J of f){if(J.type!=="text")return!1;let Y=J.text.trim();if(!Y.startsWith("<command-name>")&&!Y.startsWith("<command-message>")&&!Y.startsWith("<local-command"))return!1}return!0}import{appendFile as Hu,mkdir as Bu,readFile as X3,readdir as NH,stat as Z3,unlink as ju,writeFile as Wu}from"fs/promises";import{homedir as aW}from"os";import hZ from"path";function Q3(f){return f.replace(/[/.]/g,"-")}async function pG(f){if(!f)return[];let J=hZ.join(aW(),".claude","projects",Q3(f)),Y;try{Y=await NH(J)}catch{return[]}let z=[];for(let G of Y){if(!G.endsWith(".jsonl"))continue;let X=hZ.join(J,G),q=0;try{q=(await Z3(X)).mtimeMs}catch{}z.push({sessionId:G.slice(0,-6),path:X,mtimeMs:q})}return z.sort((G,X)=>X.mtimeMs-G.mtimeMs),z}async function $W(f){return(await pG(f))[0]?.mtimeMs??0}async function rW(f,J=q3){let Y=J.projectsDir(),z=await J.readdir(Y);for(let G of z){let X=hZ.join(Y,G,`${f}.jsonl`),q;try{q=await J.readFile(X)}catch{continue}return H3(B3(q,f))}return[]}function H3(f){return f.map((J,Y)=>({msg:J,idx:Y})).sort((J,Y)=>{if(J.msg.timestamp<Y.msg.timestamp)return-1;if(J.msg.timestamp>Y.msg.timestamp)return 1;return J.idx-Y.idx}).map((J)=>J.msg)}function B3(f,J){let Y=[];for(let z of f.split(`
|
|
24
|
+
`)){let G=z.trim();if(!G)continue;let X;try{X=JSON.parse(G)}catch{continue}if(!yH(X))continue;let q=j3(X,J);if(q)Y.push(q)}return Y}function j3(f,J){if(iW(f))return null;let Y=yH(f.message)?f.message:f,z=Y.role;if(z!=="user"&&z!=="assistant"&&z!=="system")return null;if(!("content"in Y))return null;let G=dW(Y.content);if(z==="user"&&lW(G))return null;let X=typeof f.timestamp==="string"?f.timestamp:new Date().toISOString(),q=typeof f.sessionId==="string"?f.sessionId:J,Q=W3(Y.usage);return Q?{role:z,blocks:G,timestamp:X,sessionId:q,usage:Q}:{role:z,blocks:G,timestamp:X,sessionId:q}}function W3(f){if(!yH(f))return;let J=typeof f.input_tokens==="number"?f.input_tokens:void 0,Y=typeof f.output_tokens==="number"?f.output_tokens:void 0;if(J===void 0||Y===void 0)return;let z=typeof f.cache_read_input_tokens==="number"?f.cache_read_input_tokens:void 0,G=typeof f.cache_creation_input_tokens==="number"?f.cache_creation_input_tokens:void 0;return{input_tokens:J,output_tokens:Y,...z!==void 0?{cache_read_input_tokens:z}:{},...G!==void 0?{cache_creation_input_tokens:G}:{}}}function yH(f){return typeof f==="object"&&f!==null&&!Array.isArray(f)}var q3;var bH=k(()=>{q3={projectsDir(){return hZ.join(aW(),".claude","projects")},async readdir(f){try{return await NH(f)}catch{return[]}},async readFile(f){return await X3(f,"utf8")},async pathExists(f){try{return await NH(f),!0}catch{return!1}}}});import{fileURLToPath as _W}from"url";function Cf(){if(import.meta.url.endsWith(".js"))return["kobe"];let J=_W(new URL("./index.ts",import.meta.url)),Y=_W(import.meta.resolve("@opentui/solid/preload"));return[process.execPath,"--preload",Y,"--conditions=browser",J]}var aJ=()=>{};function SH(f,J={}){if(J.bareSafe&&V3.test(f))return f;return`'${f.replace(/'/g,"'\\''")}'`}function PZ(f,J={}){return f.map((Y)=>SH(Y,J)).join(" ")}var V3;var IH=k(()=>{V3=/^[A-Za-z0-9_/.:=-]+$/});function sG(f){return`kobe-hidden-${f.replace(/[^A-Za-z0-9_-]/g,"")||"session"}`}function sW(f){let J=Number.parseInt(f.replace(/^@/,""),10);return Number.isFinite(J)&&J>=0?1000+J:1000}function zz(f){if(!Number.isFinite(f))return Jz;return Math.max(K3,Math.min(U3,Math.round(f)))}function pJ(f){if(!Number.isFinite(f))return null;return Math.max(D3,Math.min(L3,Math.round(f)))}function Xf(f){return SH(f)}function g1(f){return PZ(f)}function R1(f){return`${f}; __rc=$?; [ "$__rc" -ne 0 ] && printf '${"\\n \u26A0 Engine exited (code %s). Check Settings \u2192 Engines, fix the launch command, then press R to relaunch.\\n\\n"}' "$__rc"; exec "\${SHELL:-/bin/sh}"`}function TH(f){return`'${f.replace(/'/g,"'\\''")}'`}function tW(){return`clear; printf ${TH("\\n No task selected\\n\\n Press N to create a task, or pick one on the left.\\n\\n")}; exec "\${SHELL:-/bin/sh}"`}function eW(f,J){let Y=R1(f),z=J?.initScript?.trim();if(!z)return Y;let G=["{",z,"}"].join(`
|
|
25
|
+
`);if(J?.markerPath){let X=TH(J.markerPath),q=TH(M3(J.markerPath));return[`if [ ! -f ${X} ]; then`,G,`if [ $? -eq 0 ]; then mkdir -p ${q} && : > ${X}; fi`,"fi",Y].join(`
|
|
26
26
|
`)}return[G,Y].join(`
|
|
27
|
-
`)}function
|
|
28
|
-
`)}catch{}}}var
|
|
27
|
+
`)}function M3(f){let J=f.lastIndexOf("/");return J<=0?".":f.slice(0,J)}function oW(f){return`cd ${Xf(f)} && while :; do clear; printf "\\033[1m# %s\\033[0m\\n\\n" ${Xf(f)}; git status --short --branch 2>/dev/null | sed 's/^/ /' || true; printf "\\n"; if command -v lsd >/dev/null 2>&1; then lsd --tree --git -I node_modules -I .git --depth 2 .; elif command -v eza >/dev/null 2>&1; then eza --tree --git -L 2 -I 'node_modules|.git' .; elif command -v tree >/dev/null 2>&1; then tree -L 2 -I 'node_modules|.git'; else ls -la; fi; sleep 2; done`}function fV(f){let J=Xf(f.worktree),Y=Xf(f.relPath),z=f.cliInvocation.map(Xf).join(" "),G=`cd ${J} && if ! git diff --quiet HEAD -- ${Y} 2>/dev/null; then git diff HEAD -- ${Y} | { delta --paging=always 2>/dev/null || less -R; }; else bat --style=plain --paging=always ${Y} 2>/dev/null || \${PAGER:-less} ${Y} 2>/dev/null || cat ${Y}; fi`;return`${z} ops --worktree ${J} --preview ${Y} || { ${G}; }`}function JV(f){return`${g1([...f.cliInvocation,"update-page"])}`}function YV(f){let J=f.opener??"open";return[`tmux -L ${Xf(f.tmuxSocket)} capture-pane -Jp -t '#{pane_id}' -S -500`,`grep -oiE 'https?://[^ "'\\''()<>]+'`,"awk '!seen[$0]++'","{ command -v fzf >/dev/null && fzf --reverse || tail -1; }",`xargs -I{} ${J} {}`].join(" | ")}function DY(f,J={}){let Y=[...f,"tasks"];if(J.initialTaskId)Y.push("--initial-task-id",J.initialTaskId);return g1(Y)}function nz(f){if(f.taskId&&f.claudePaneId){let J=f.cliInvocation.map(Xf).join(" "),Y=f.vendor?` --vendor ${Xf(f.vendor)}`:"";return`KOBE_FILETREE_WATCH=1 ${J} ops --task-id ${Xf(f.taskId)} --worktree ${Xf(f.cwd)} --target-pane ${Xf(f.claudePaneId)}${Y} || { ${oW(f.cwd)}; }`}return oW(f.cwd)}var Jz=32,i1="tasks",Yz="claude",GJ="ops",XJ="shell",_G="workspace_aux",uH=4,ZJ="@kobe_hidden_shell_pane",A1="@kobe_hidden_tasks_pane",UY="@kobe_zen_panes",oG="@kobe_zen",$J="@kobe_tasks_width",K3=16,U3=120,vZ=60,tG=50,Gz="@kobe_right_width_pct",rJ="@kobe_ops_height_pct",D3=10,L3=90;var qJ=k(()=>{IH()});import{mkdir as F3,readFile as O3,writeFile as A3}from"fs/promises";import{dirname as g3}from"path";function R3(f){if(typeof f!=="string")return"other";if(f==="rate_limit"||f==="overloaded")return"rate_limit";if(f==="billing_error")return"billing";return"other"}function kJ(f){return!!f&&typeof f==="object"&&!Array.isArray(f)}async function k3(f){try{let J=JSON.parse(await O3(f,"utf8"));return kJ(J)?J:{}}catch{return{}}}function N3(f){if(!kJ(f)||!Array.isArray(f.hooks))return!1;return f.hooks.some((J)=>kJ(J)&&typeof J.command==="string"&&J.command.includes(EH))}function y3(f){if(!kJ(f)||!Array.isArray(f.hooks))return!1;return f.hooks.some((J)=>kJ(J)&&typeof J.command==="string"&&C3.some((Y)=>J.command.includes(Y)))}function b3(f,J){let{hooks:Y,...z}=f,{WorktreeCreate:G,...X}=kJ(Y)?Y:{},Q=(Array.isArray(G)?G:[]).filter((B)=>!N3(B));if(J!==null)Q.push({hooks:[{type:"command",command:J}]});let H={...X};if(Q.length>0)H.WorktreeCreate=Q;return Object.keys(H).length>0?{...z,hooks:H}:{...z}}function S3(f=Cf()){let J={};for(let{event:Y,matcher:z,verb:G}of mZ){let q={hooks:[{type:"command",command:g1([...f,"hook",G])}]};if(z)q.matcher=z;J[Y]=[q]}return J}function zV(f,J,Y=Cf()){let{hooks:z,...G}=f,X=kJ(z)?{...z}:{},q=J?S3(Y):{};for(let{event:Q}of mZ){let B=(Array.isArray(X[Q])?X[Q]:[]).filter((V)=>!y3(V));if(J&&Array.isArray(q[Q]))B.push(...q[Q]);if(B.length>0)X[Q]=B;else delete X[Q]}return Object.keys(X).length>0?{...G,hooks:X}:{...G}}function I3(f=Cf()){return{PostToolUse:[{matcher:"Bash",hooks:[{type:"command",command:g1([...f,"hook",EH])}]}]}}function T3(f){if(!kJ(f)||!Array.isArray(f.hooks))return!1;return f.hooks.some((J)=>kJ(J)&&typeof J.command==="string"&&J.command.includes(EH))}function GV(f,J,Y=Cf()){let{hooks:z,...G}=f,X=kJ(z)?{...z}:{},q="PostToolUse",H=(Array.isArray(X.PostToolUse)?X.PostToolUse:[]).filter((B)=>!T3(B));if(J)H.push(...I3(Y).PostToolUse);if(H.length>0)X.PostToolUse=H;else delete X.PostToolUse;return Object.keys(X).length>0?{...G,hooks:X}:{...G}}class xH{vendor="claude";supportsHooks(){return!0}activityDetailFromPayload(f,J){if(f==="turn-failed")return{failure:R3(J.error_type)};if(f==="awaiting-input")return{waiting:"permission"};return}supportsWorktreeSync(){return!0}async installActivityHooks(f){await this.editSettings(f,(J)=>zV(J,!0))}async removeActivityHooks(f){await this.editSettings(f,(J)=>zV(J,!1))}async removeWorktreeSyncHook(f){await this.editSettings(f,(J)=>b3(J,null))}async installWorktreeWatchHook(f){await this.editSettings(f,(J)=>GV(J,!0))}async removeWorktreeWatchHook(f){await this.editSettings(f,(J)=>GV(J,!1))}async editSettings(f,J){try{let Y=await k3(f),z=J(Y);if(JSON.stringify(z)===JSON.stringify(Y))return;await F3(g3(f),{recursive:!0}),await A3(f,`${JSON.stringify(z,null,2)}
|
|
28
|
+
`)}catch{}}}var mZ,Nu,C3,EH="worktree-created";var XV=k(()=>{aJ();qJ();mZ=[{event:"SessionStart",verb:"session-start"},{event:"UserPromptSubmit",verb:"turn-start"},{event:"Stop",verb:"turn-complete"},{event:"StopFailure",verb:"turn-failed"},{event:"Notification",matcher:"permission_prompt",verb:"awaiting-input"},{event:"SessionEnd",verb:"session-end"}],Nu=mZ.map((f)=>f.event);C3=mZ.map((f)=>g1(["hook",f.verb]))});function wH(f){if(typeof f==="string")return f.length>0?[{type:"text",text:f}]:[];if(!Array.isArray(f))return[];let J=[];for(let Y of f){if(typeof Y==="string"){if(Y.length>0)J.push({type:"text",text:Y});continue}if(!u3(Y))continue;let z=typeof Y.type==="string"?Y.type:void 0;if(z==="input_text"||z==="output_text"){let G=typeof Y.text==="string"?Y.text:"";if(G.length>0)J.push({type:"text",text:G});continue}if(z)J.push({type:"text",text:`[codex: ${z}]`})}return J}function u3(f){return typeof f==="object"&&f!==null&&!Array.isArray(f)}function ZV(f){if(f.length===0)return!1;for(let J of f){if(J.type!=="text")return!1;let Y=(J.text??"").trim();if(!E3(Y)&&!x3(Y))return!1}return!0}function E3(f){return f.startsWith("<environment_context>")&&f.endsWith("</environment_context>")}function x3(f){return f.startsWith("# AGENTS.md instructions for ")&&f.includes(`
|
|
29
29
|
<INSTRUCTIONS>
|
|
30
|
-
`)&&f.endsWith("</INSTRUCTIONS>")}var
|
|
31
|
-
`)){let Y=J.trim();if(!Y)continue;try{let z=JSON.parse(Y);if(z.type==="session_meta")return z.payload?.cwd??""}catch{}return""}return""}async function
|
|
32
|
-
`)){let G=z.trim();if(!G)continue;let
|
|
33
|
-
`)){let G=z.trim();if(!G)continue;let
|
|
34
|
-
`)){let z=Y.match(/^([A-Za-z_]+):\s*(.*)$/);if(!z)continue;let G=z[1],
|
|
35
|
-
`)){let H=Q.trim();if(!H)continue;let B;try{B=JSON.parse(H)}catch{continue}if(!
|
|
36
|
-
`)){G++;let q=
|
|
37
|
-
`)){z++;let
|
|
38
|
-
`).filter((z)=>z.trim().length>0).length}async function
|
|
39
|
-
`)){let q=
|
|
40
|
-
`)){let
|
|
41
|
-
`)){let[Q,H]=q.split("\t");if(!Q)continue;if(!
|
|
42
|
-
`)){let[q,Q,H]=
|
|
43
|
-
`}function
|
|
44
|
-
`}function
|
|
45
|
-
`}function MY(f,J){process.stderr.write(yO(f,J))}function PV(f=(J)=>process.stderr.write(J)){if(JB||YB)return;JB=(J)=>f(wV("unhandledRejection",J)),YB=(J)=>f(wV("uncaughtException",J)),process.on("unhandledRejection",JB),process.on("uncaughtException",YB)}var JB,YB;async function bO(f,J=cz){let Y=[];for(let z of f.listTasks()){if(z.archived||z.title!==RJ||!z.worktreePath)continue;try{let G=await J(z.worktreePath,z.vendor??yf);if(!G)continue;let Z=f.getTask(z.id);if(!Z||Z.title!==RJ)continue;await f.setTitle(z.id,G),Y.push({id:z.id,title:G})}catch(G){If("auto-title-poller",G)}}return Y}function vV(f,J=zB,Y){if(J<=0)return()=>{};let z=!1,Z=setInterval(()=>{if(Y&&!Y())return;if(z)return;z=!0,bO(f).then(()=>EV(f)).catch((q)=>If("auto-title-poller",q)).finally(()=>{z=!1})},J);return Z.unref?.(),()=>clearInterval(Z)}var zB=4000;var mV=C(()=>{dX();iG();xV();S1()});class GB{last=new Map;sinks=new Set;publish(f,J){this.last.set(f,J);let Y={channel:f,payload:J};for(let z of this.sinks)z(Y)}snapshot(){return[...this.last].map(([f,J])=>({channel:f,payload:J}))}onPublish(f){return this.sinks.add(f),()=>{this.sinks.delete(f)}}}function rX(){return cf()[Zz]===!0}var Zz="experimental.autoStatus";var GZ=C(()=>{lY()});async function cV(f,J,Y=rX){if(!Y())return"skipped";let z=f.getTask(J);if(!z)return"skipped";if((z.kind??"task")==="main"||z.archived)return"skipped";if(z.status!=="backlog")return"skipped";return await f.setStatus(J,"in_progress"),"moved"}var nV=C(()=>{GZ()});import{createHash as SO}from"crypto";import{homedir as IO}from"os";import OY from"path";function wO(){return OY.join(process.env.KOBE_HOME_DIR??IO(),".kobe")}function hO(f){let Y=(OY.basename(f)||"repo").replace(/[^a-zA-Z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"repo",z=SO("sha1").update(OY.resolve(f)).digest("hex").slice(0,12);return`${Y}-${z}`}function PO(f){if(!OY.isAbsolute(f))throw Error(`worktreeRootFor: repo must be an absolute path, got: ${f}`);return OY.join(wO(),TO,hO(f))}function vO(f){if(!OY.isAbsolute(f))throw Error(`managedWorktreeRootsFor: repo must be an absolute path, got: ${f}`);return[PO(f),...xO.map((J)=>OY.join(f,J))]}function FY(f){return f.length>1&&f.endsWith("/")?f.slice(0,-1):f}function dV(f,J){return J===f||J.startsWith(`${f}/`)}function iV(f,J){let Y=FY(J),z,G=-1;for(let Z of f){if(!Z.worktreePath)continue;let q=FY(Z.worktreePath);if(dV(q,Y)&&q.length>G)G=q.length,z=Z.id}return z}function ZB(f,J){let Y=FY(J),z,G=-1;for(let Z of f){if(!Z.repo)continue;let q=FY(Z.repo);if(dV(q,Y)&&q.length>G)G=q.length,z=q}return z}function lV(f,J){let Y=FY(J),z=new Set,G=new Set;for(let Z of f){if(Z.repo)z.add(FY(Z.repo));if(Z.worktreePath)G.add(FY(Z.worktreePath))}for(let Z of z)for(let q of vO(Z).map(FY)){let Q=`${q}/`;if(!Y.startsWith(Q))continue;let B=Y.slice(Q.length).split("/")[0];if(!B)continue;let V=`${Q}${B}`;if(G.has(V))return;return{repo:Z,worktreePath:V}}return}var TO="worktrees",uO=".kobe/worktrees",EO=".claude/worktrees",xO;var aV=C(()=>{xO=[uO,EO]});function QB(f){return{message:f instanceof Error?f.message:String(f),name:f instanceof Error?f.name:void 0}}async function ZZ(f,J,Y,z){let G=f.get(J);if(!G)throw Error(`unknown daemon request: ${J}`);return G.handle(HB(Y),z)}function XZ(){return new Map([{name:"hello",handle(J,Y){let z=typeof J.protocolVersion==="number"?J.protocolVersion:c1,G=typeof J.minProtocolVersion==="number"?J.minProtocolVersion:z;if(!FX({localVersion:c1,localMin:HY,remoteVersion:z,remoteMin:G}))throw Error(`daemon is protocol v${c1} (min v${HY}); this client is v${z} (min v${G}). Upgrade your kobe.`);return{protocolVersion:c1,minProtocolVersion:HY,kobeVersion:o0,capabilities:[...FH],daemonPid:Y.daemon.pid,clientId:Y.clientId,tasks:Y.orch.listTasks().map(zJ)}}},{name:"daemon.status",handle(J,Y){return{daemonPid:Y.daemon.pid,kobeVersion:o0,uptimeMs:Date.now()-Y.daemon.startedAt.getTime(),startedAt:Y.daemon.startedAt.toISOString(),attachedClients:Y.daemon.guiCount(),taskCount:Y.orch.listTasks().length,socketPath:Y.daemon.socketPath,webPort:Y.daemon.webPort??null}}},{name:"daemon.stop",async handle(J,Y){return await Y.daemon.stopSoon(),{}}},{name:"task.list",handle(J,Y){return{tasks:Y.orch.listTasks().map(zJ)}}},{name:"task.get",handle(J,Y){let z=Af(J,"taskId"),G=Y.orch.getTask(z);if(!G)throw Error(`task not found: ${z}`);return{task:zJ(G)}}},{name:"task.create",async handle(J,Y){let z=Af(J,"repo"),G=await Y.orch.createTask({repo:z,title:l1(J,"title"),branch:l1(J,"branch"),baseRef:l1(J,"baseRef"),vendor:qB(J,"vendor"),modelEffort:l1(J,"effort")});return{taskId:G.id,task:zJ(G)}}},{name:"task.archive",async handle(J,Y){let z=Af(J,"taskId");return await Y.orch.setArchived(z,XB(J,"archived")),{}}},{name:"task.rename",async handle(J,Y){let z=Af(J,"taskId");return await Y.orch.setTitle(z,Af(J,"title")),{}}},{name:"task.setBranch",async handle(J,Y){let z=Af(J,"taskId");return await Y.orch.setBranch(z,Af(J,"branch")),{}}},{name:"task.setVendor",async handle(J,Y){let z=Af(J,"taskId"),G=qB(J,"vendor");if(!G)throw Error("task.setVendor: vendor is required");return await Y.orch.setVendor(z,G),{}}},{name:"task.delete",async handle(J,Y){let z=Af(J,"taskId");return await Y.orch.deleteTask(z,{force:XB(J,"force")}),Y.activity.clearTask(z),{}}},{name:"task.pin",async handle(J,Y){let z=Af(J,"taskId");return await Y.orch.setPinned(z,XB(J,"pinned")),{}}},{name:"task.move",async handle(J,Y){let z=Af(J,"taskId"),G=Af(J,"direction");if(G!=="up"&&G!=="down")throw Error("direction must be up or down");return await Y.orch.moveTask(z,G==="up"?-1:1),{}}},{name:"task.status",async handle(J,Y){let z=Af(J,"taskId"),G=Af(J,"status");if(!k9(G))throw Error("status must be a TaskStatus");let Z=G==="done"?Y.orch.getTask(z):void 0,q=Z?.status;if(await Y.orch.setStatus(z,G),G==="done"&&q!=="done"&&Z)try{let Q=await Y.issues.mirrorTaskDone(Z.repo,z);if(Q)Y.bus.publish("issue.snapshot",Q)}catch(Q){If("issue-done-mirror",Q)}return{}}},{name:"task.reorder",async handle(J,Y){let z=J.moves;if(!Array.isArray(z)||z.length===0)throw Error("moves must be a non-empty array");if(z.length>500)throw Error("too many moves in one task.reorder batch (max 500)");let G=z.map((Z)=>{if(typeof Z!=="object"||Z===null)throw Error("each move needs taskId and position");let q=Z,Q=Af(q,"taskId"),H=q.position;if(typeof H!=="number"||!Number.isFinite(H))throw Error("position must be a finite number");return{taskId:Q,position:H}});return await Y.orch.reorderTasks(G),{}}},{name:"task.ensureMain",async handle(J,Y){let z=Af(J,"repo"),G=await Y.orch.ensureMainTask(z);return{task:zJ(G)}}},{name:"task.ensureWorktree",async handle(J,Y){let z=Af(J,"taskId");Y.bus.publish("task.jobs",{taskId:z,kind:"ensureWorktree",phase:"running"});try{let G=await Y.orch.ensureWorktree(z);return Y.bus.publish("task.jobs",{taskId:z,kind:"ensureWorktree",phase:"done"}),{worktreePath:G}}catch(G){throw Y.bus.publish("task.jobs",{taskId:z,kind:"ensureWorktree",phase:"error",error:G instanceof Error?G.message:String(G)}),G}}},{name:"worktree.discoverAdoptable",async handle(J,Y){let z=Af(J,"repo");return{worktrees:await Y.orch.discoverAdoptableWorktrees(z)}}},{name:"worktree.adopt",async handle(J,Y){let z=await Y.orch.adoptWorktree({repo:Af(J,"repo"),worktreePath:Af(J,"worktreePath"),branch:l1(J,"branch"),vendor:qB(J,"vendor"),title:l1(J,"title"),ifExists:l1(J,"ifExists")==="return"?"return":"error"});return{task:zJ(z)}}},{name:"worktree.reconcile",async handle(J,Y){let z=Af(J,"cwd"),G=Af(J,"worktreePath"),Z=ZB(Y.orch.listTasks(),z)??ZB(Y.orch.listTasks(),G);if(!Z)return{adopted:!1};try{return{adopted:!0,taskId:(await Y.orch.adoptWorktree({repo:Z,worktreePath:G,ifExists:"return"})).id}}catch(q){return If("worktree-created",q),{adopted:!1}}}},{name:"task.setActive",async handle(J,Y){let z=l1(J,"taskId")??null;return await Y.orch.setActiveTask(z),Y.bus.publish("active-task",{taskId:z}),{}}},{name:"issue.list",async handle(J,Y){return Y.issues.list(Af(J,"repoRoot"))}},{name:"issue.mutate",async handle(J,Y){let z=await Y.issues.mutate(Af(J,"repoRoot"),J.op);return Y.bus.publish("issue.snapshot",z),z}},{name:"session.deliver",async handle(J,Y){let z=Af(J,"taskId"),G=Af(J,"text"),Z=l1(J,"source");if(Z!==void 0&&Z!=="note"&&Z!=="dispatcher")throw Error('source must be "note" or "dispatcher"');if(!Y.orch.getTask(z))throw Error(`task not found: ${z}`);return Y.bus.publish("session.deliver",{taskId:z,text:G,at:Date.now(),source:Z??"dispatcher"}),{ok:!0}}},{name:"note.file",async handle(J,Y){let z=Af(J,"taskId"),G=Af(J,"text"),Z=Y.orch.getTask(z);if(!Z)throw Error(`task not found: ${z}`);let q=Y.orch.listTasks().find((H)=>(H.kind??"task")==="main"&&H.repo===Z.repo&&!H.archived);if(!q||q.id===Z.id)return{ok:!0,routed:!1};let Q=Z.title||Z.branch||z;return Y.bus.publish("session.deliver",{taskId:q.id,text:`[KOBE FIELD NOTE] from "${Q}" (task ${z}): ${G}`,at:Date.now(),source:"note"}),{ok:!0,routed:!0}}},{name:"engine.reportEvent",async handle(J,Y){let z=Af(J,"kind");if(!RX(z))throw Error(`unknown engine event kind: ${z}`);let G=l1(J,"taskId"),Z=l1(J,"cwd");if(!G&&Z&&z==="session-start"){let H=lV(Y.orch.listTasks(),Z);if(H)try{await Y.orch.adoptWorktree({repo:H.repo,worktreePath:H.worktreePath,ifExists:"return"})}catch(B){If("worktree-autosync",B)}}let q=G??(Z?iV(Y.orch.listTasks(),Z):void 0);if(!q)return{};let Q=mO(J);if(Y.activity.report(q,z,Q),z==="turn-start")cV(Y.orch,q).then((H)=>{if(H==="moved")console.log(`[status-rules] task ${q} auto-moved backlog \u2192 in_progress`)}).catch((H)=>If("status-rules",H));return{}}}].map((J)=>[J.name,J]))}function HB(f){if(!f||typeof f!=="object"||Array.isArray(f))return{};return f}function Af(f,J){let Y=f[J];if(typeof Y!=="string"||Y.length===0)throw Error(`${J} is required`);return Y}function l1(f,J){let Y=f[J];if(Y===void 0||Y===null||Y==="")return;if(typeof Y!=="string")throw Error(`${J} must be a string`);return Y}function XB(f,J){let Y=f[J];if(Y===void 0||Y===null)return;if(typeof Y!=="boolean")throw Error(`${J} must be a boolean`);return Y}function qB(f,J){let Y=l1(f,J);return Y&&Y.trim().length>0?Y:void 0}function mO(f){let J=f.detail;if(!J||typeof J!=="object"||Array.isArray(J))return;let Y=J,z={};if(Y.failure==="rate_limit"||Y.failure==="billing"||Y.failure==="other")z.failure=Y.failure;if(Y.waiting==="permission"||Y.waiting==="input")z.waiting=Y.waiting;if(typeof Y.note==="string")z.note=Y.note;return Object.keys(z).length>0?z:void 0}var pX=C(()=>{CX();nV();S1();U1();aV();rY()});import{execFile as cO}from"child_process";import{mkdir as nO,readFile as dO,realpath as $V,rename as iO,stat as lO,writeFile as aO}from"fs/promises";import{homedir as $O}from"os";import{dirname as rO,isAbsolute as pO,join as _O,resolve as rV}from"path";import{promisify as oO}from"util";function sO(f){return(f instanceof Error?f.message:String(f)).includes("not a git repository")}function oX(f=process.env.KOBE_HOME_DIR??$O()){return _O(f,".kobe","issues.json")}function _V(f){return typeof f==="string"&&pV.includes(f)}function tO(f){if(f===null||typeof f!=="object"||Array.isArray(f))return null;let J=f;if(typeof J.id!=="number")return null;return{id:J.id,title:typeof J.title==="string"?J.title:"(untitled)",status:_V(J.status)?J.status:"open",created:typeof J.created==="string"?J.created:"",body:typeof J.body==="string"?J.body:"",taskId:typeof J.taskId==="string"?J.taskId:void 0}}function eO(){return{version:1,repos:{}}}function fA(){let f=new Date,J=String(f.getMonth()+1).padStart(2,"0"),Y=String(f.getDate()).padStart(2,"0");return`${f.getFullYear()}-${J}-${Y}`}async function JA(f){let{stdout:J}=await UB("git",["-C",f,"rev-parse","--git-common-dir"]),Y=J.trim();return $V(pO(Y)?Y:rV(f,Y))}async function YA(f){let{stdout:J}=await UB("git",["-C",f,"rev-parse","--show-toplevel"]);return J.trim()}async function zA(f){let{stdout:J}=await UB("git",["-C",f,"worktree","list","--porcelain"]),Y=J.split(/\r?\n/).find((z)=>z.startsWith("worktree "))?.slice(9).trim();return Y?$V(Y):YA(f)}async function BB(f){if(typeof f!=="string"||f.length===0)throw Error("repoRoot is required");let J=rV(f);if(!(await lO(J).catch(()=>null))?.isDirectory())throw Error("repoRoot does not exist");try{let[z,G]=await Promise.all([zA(J),JA(J)]);return{repoRoot:z,repoKey:G}}catch(z){if(sO(z))throw Error("repoRoot is not a git repository");throw z}}async function jB(f){try{let J=JSON.parse(await dO(f,"utf8")),Y={};if(J.repos&&typeof J.repos==="object")for(let[z,G]of Object.entries(J.repos)){if(!G||typeof G!=="object")continue;let Z=G;Y[z]={repoRoot:typeof Z.repoRoot==="string"?Z.repoRoot:"",nextId:typeof Z.nextId==="number"?Z.nextId:1,issues:Array.isArray(Z.issues)?Z.issues.map(tO).filter((q)=>q!==null):[]}}return{version:1,repos:Y}}catch(J){if(J.code==="ENOENT")return eO();throw J}}async function WB(f,J){await nO(rO(f),{recursive:!0});let Y=`${f}.tmp`;await aO(Y,`${JSON.stringify(J,null,2)}
|
|
46
|
-
`,"utf8"),await iO(Y,f)}function VB(f,J){return{repoRoot:f,exists:J!==null,nextId:J?.nextId??1,issues:J?.issues??[]}}async function KB(f,J){let z=(_X.get(f)??Promise.resolve()).then(J),G=z.then(()=>{return},()=>{return});return _X.set(f,G),G.then(()=>{if(_X.get(f)===G)_X.delete(f)}),z}class sX{path;constructor(f=oX()){this.path=f}async list(f){let{repoRoot:J,repoKey:Y}=await BB(f);return KB(this.path,async()=>{let z=await jB(this.path),G=z.repos[Y]??null;if(G&&G.repoRoot!==J)G.repoRoot=J,await WB(this.path,z);return VB(J,G)})}async mirrorTaskDone(f,J){let{repoRoot:Y,repoKey:z}=await BB(f);if(!J)return null;return KB(this.path,async()=>{let G=await jB(this.path),Z=G.repos[z];if(!Z)return null;let q=Z.issues.find((Q)=>Q.taskId===J);if(!q||q.status==="done")return null;return q.status="done",Z.repoRoot=Y,await WB(this.path,G),VB(Y,Z)})}async mutate(f,J){let{repoRoot:Y,repoKey:z}=await BB(f);if(!J||typeof J!=="object"||Array.isArray(J)||typeof J.type!=="string")throw Error("missing op");return KB(this.path,async()=>{let G=await jB(this.path),Z=G.repos[z];if(!Z)Z={repoRoot:Y,nextId:1,issues:[]},G.repos[z]=Z;Z.repoRoot=Y;let q=J;if(q.type==="create"){if(typeof q.title!=="string"||q.title.trim().length===0)throw Error("create requires a non-empty title");if(q.body!==void 0&&typeof q.body!=="string")throw Error("body must be a string");Z.issues=[{id:Z.nextId,title:q.title,status:"open",created:fA(),body:typeof q.body==="string"?q.body:""},...Z.issues],Z.nextId+=1}else if(q.type==="setStatus"){if(typeof q.id!=="number")throw Error("setStatus requires a numeric id");if(!_V(q.status))throw Error(`invalid status: must be one of ${pV.join(", ")}`);let Q=Z.issues.find((H)=>H.id===q.id);if(!Q)throw Error(`no issue #${q.id}`);Q.status=q.status}else if(q.type==="update"){if(typeof q.id!=="number")throw Error("update requires a numeric id");if(q.title!==void 0&&(typeof q.title!=="string"||q.title.trim().length===0))throw Error("title must be a non-empty string");if(q.body!==void 0&&typeof q.body!=="string")throw Error("body must be a string");let Q=Z.issues.find((H)=>H.id===q.id);if(!Q)throw Error(`no issue #${q.id}`);if(typeof q.title==="string")Q.title=q.title;if(typeof q.body==="string")Q.body=q.body}else if(q.type==="link"){if(typeof q.id!=="number")throw Error("link requires a numeric id");if(typeof q.taskId!=="string"||q.taskId.length===0)throw Error("link requires a non-empty taskId");let Q=Z.issues.find((H)=>H.id===q.id);if(!Q)throw Error(`no issue #${q.id}`);Q.taskId=q.taskId}else if(q.type==="unlink"){if(typeof q.id!=="number")throw Error("unlink requires a numeric id");let Q=Z.issues.find((H)=>H.id===q.id);if(!Q)throw Error(`no issue #${q.id}`);Q.taskId=void 0}else if(q.type==="delete"){if(typeof q.id!=="number")throw Error("delete requires a numeric id");let Q=Z.issues.filter((H)=>H.id!==q.id);if(Q.length===Z.issues.length)throw Error(`no issue #${q.id}`);Z.issues=Q}else throw Error(`unknown op type: ${q.type}`);return await WB(this.path,G),VB(Y,Z)})}}var UB,pV,_X;var DB=C(()=>{UB=oO(cO),pV=["open","doing","hold","done"];_X=new Map});import{mkdirSync as GA,watch as ZA}from"fs";import{basename as XA,dirname as qA}from"path";function tX(f){if(f.debounceMs<=0)return()=>{};let J=qA(f.filePath),Y=new Set([XA(f.filePath),...f.matchBasenames??[]]),z=null,G=null,Z=null,q=()=>{try{f.onTrigger()}catch(H){f.onError(H)}},Q=()=>{if(z)clearTimeout(z);z=setTimeout(()=>{z=null,q()},f.debounceMs),z.unref?.()};try{GA(J,{recursive:!0}),Z=ZA(J,(H,B)=>{let V=B===null?null:String(B);if(V!==null&&!Y.has(V))return;Q()}),Z.on("error",f.onError)}catch(H){f.onError(H)}if(f.pollMs&&f.pollMs>0)G=setInterval(q,f.pollMs),G.unref?.();return()=>{if(z)clearTimeout(z),z=null;if(G)clearInterval(G),G=null;Z?.close(),Z=null}}var LB=()=>{};import{homedir as QA}from"os";import{basename as HA,join as BA}from"path";function FB(f=process.env.KOBE_HOME_DIR??QA()){return BA(f,".kobe","settings","keybindings.yaml")}function oV(f,J={}){let Y=J.debounceMs??MB;if(Y<=0)return()=>{};let z=J.path??FB(),G=HA(z),Z=G.replace(/\.yaml$/,".yml"),q=0;return f.publish("keybindings",{rev:q}),tX({filePath:z,matchBasenames:[G,Z],debounceMs:Y,onTrigger:()=>{try{q+=1,f.publish("keybindings",{rev:q})}catch(H){If("keybindings-watcher",H)}},onError:(H)=>If("keybindings-watcher",H)})}var MB=200;var sV=C(()=>{LB()});class OB{clients;idleGraceMs;onIdleStop;schedule;log;cancelIdle=null;stopping=!1;constructor(f){this.clients=f.clients,this.idleGraceMs=f.idleGraceMs,this.onIdleStop=f.onIdleStop,this.schedule=f.schedule??jA,this.log=f.log??MY}guiCount(){let f=0;for(let J of this.clients())if(J.holdsLifetime)f++;return f}hasSubscribers(){for(let f of this.clients())if(f.subscribed)return!0;return!1}isStopping(){return this.stopping}markStopping(){this.stopping=!0,this.clearIdle()}guiAttached(){this.clearIdle()}clientDisconnected(f){if(f)this.maybeArm()}clearIdle(){if(this.cancelIdle)this.cancelIdle(),this.cancelIdle=null}maybeArm(){if(this.stopping||this.guiCount()>0)return;this.clearIdle(),this.log("idle",`last gui gone \u2014 arming ${this.idleGraceMs}ms idle-stop grace`),this.cancelIdle=this.schedule(()=>{if(this.cancelIdle=null,this.stopping||this.guiCount()>0)return;this.log("idle","grace elapsed with no gui \u2014 self-stopping"),this.onIdleStop()},this.idleGraceMs)}}var jA=(f,J)=>{let Y=setTimeout(f,J);return Y.unref?.(),()=>clearTimeout(Y)};var tV=()=>{};import{spawn as WA}from"child_process";function AB(f,J,Y,z){if(Y)return f+z.slowRetryMs;return J+Math.max(z.minIntervalMs,(J-f)*5)}function gB(f,J){return!f.inFlight&&J>=f.nextAllowedAt}function eX(f,J,Y,z){let G=Date.now();if(!gB(f,G))return!1;f.inFlight=!0;let Z=new AbortController,q=setTimeout(()=>Z.abort(),J.timeoutMs);return(async()=>{let Q,H=!1;try{Q=await Y(Z.signal),H=!0}catch{}clearTimeout(q);let B=Z.signal.aborted;if(f.nextAllowedAt=AB(G,Date.now(),B,J),f.inFlight=!1,H&&!B)z(Q)})(),!0}function BJ(f,J,Y){return new Promise((z)=>{let G="",Z=!1,q=(H)=>{if(Z)return;Z=!0,z({status:H,stdout:G})},Q=WA(f,J.slice(),{cwd:Y.cwd,stdio:["ignore","pipe","ignore"],env:Y.env,signal:Y.signal,killSignal:"SIGKILL"});Q.stdout?.on("data",(H)=>{G+=String(H)}),Q.on("error",()=>q(null)),Q.on("close",(H)=>q(H))})}var qZ=()=>{};function LA(f){if(f.archived)return!1;if(f.kind==="main")return!1;if(!f.branch||!f.worktreePath)return!1;if(D1(f.repo)||D1(f.worktreePath))return!1;return!0}async function MA(f,J){let Y=J.tickMs??fq,z=[];for(let G of f.listTasks()){if(!LA(G)){J.schedule.delete(G.id);continue}let Z=J.schedule.get(G.id)??0;if(J.now<Z)continue;try{let q=await J.run(G.worktreePath,G.branch);if(q.kind==="empty"){J.schedule.set(G.id,J.now+VA);continue}let Q=jW(q.view,J.at),H=f.getTask(G.id);if(!H){J.schedule.delete(G.id);continue}if(!DX(H.prStatus,Q??void 0))await f.setPRStatus(G.id,Q),z.push(G.id);let B=Q?.lifecycle==="merged"||Q?.lifecycle==="closed";J.schedule.set(G.id,J.now+(B?KA:Y))}catch(q){If("pr-status-poller",q),J.schedule.set(G.id,J.now+Y)}}return z}function eV(f,J=fq,Y,z=DA){if(J<=0)return()=>{};let G=new Map,Z=!1,Q=setInterval(()=>{if(Y&&!Y())return;if(Z)return;Z=!0,MA(f,{run:z,now:Date.now(),at:new Date().toISOString(),schedule:G,tickMs:J}).catch((H)=>If("pr-status-poller",H)).finally(()=>{Z=!1})},J);return Q.unref?.(),()=>clearInterval(Q)}var fq=30000,VA=300000,KA=600000,UA=1e4,DA=async(f,J)=>{let Y=new AbortController,z=setTimeout(()=>Y.abort(),UA);try{let G=await BJ("gh",["pr","view",J,"--json",BW],{cwd:f,signal:Y.signal});if(G.status!==0)return{kind:"empty"};let Z=JSON.parse(G.stdout);return typeof Z.number==="number"?{kind:"pr",view:Z}:{kind:"empty"}}catch{return{kind:"empty"}}finally{clearTimeout(z)}};var f7=C(()=>{qZ();gf()});import{readFileSync as FA}from"fs";import{homedir as OA}from"os";import{basename as AA,join as gA}from"path";function CB(f=process.env.KOBE_HOME_DIR??OA()){return gA(f,".config","kobe","state.json")}function J7(f){let J={};try{let B=JSON.parse(FA(f,"utf8"));if(B&&typeof B==="object"&&!Array.isArray(B))J=B}catch{}let Y=typeof J.activeTheme==="string"&&J.activeTheme.length>0?J.activeTheme:"claude",z=J.transparentBackground===!0,G=typeof J.focusAccent==="string"&&CA.includes(J.focusAccent)?J.focusAccent:null,Z=J.activeSortMode==="recent"?"recent":"default",q=J["tasksPane.keysCollapsed"]===!0,Q=typeof J["tasksPane.projectFilter"]==="string"&&J["tasksPane.projectFilter"].length>0?J["tasksPane.projectFilter"]:null,H=typeof J.locale==="string"&&J.locale.length>0?J.locale:"en";return{theme:Y,transparentBackground:z,focusAccent:G,locale:H,sortMode:Z,keysCollapsed:q,projectFilter:Q}}function kA(f,J){return f.theme===J.theme&&f.transparentBackground===J.transparentBackground&&f.focusAccent===J.focusAccent&&f.locale===J.locale&&f.sortMode===J.sortMode&&f.keysCollapsed===J.keysCollapsed&&f.projectFilter===J.projectFilter}function Y7(f,J={}){let Y=J.debounceMs??RB;if(Y<=0)return()=>{};let z=J.pollMs??RA,G=J.statePath??CB(),Z=AA(G),q=J7(G);return f.publish("ui-prefs",q),tX({filePath:G,matchBasenames:[Z],debounceMs:Y,pollMs:z,onTrigger:()=>{try{let H=J7(G);if(kA(q,H))return;q=H,f.publish("ui-prefs",H)}catch(H){If("ui-prefs-watcher",H)}},onError:(H)=>If("ui-prefs-watcher",H)})}var RB=200,RA=250,CA;var z7=C(()=>{LB();CA=["primary","success","info"]});function kB(){return cf()[Xz]===!0}var Xz="experimental.dispatcher";var Jq=C(()=>{lY()});import{randomUUID as NA}from"crypto";function jJ(f){return`engineCommand.${f}`}function WJ(f){return`engineName.${f}`}function qz(f){return kf(WJ(f))?.trim()||NB[f]||f}function QZ(f){return pf(f??"claude").defaultCommand}function yA(f){let J=[],Y=/"([^"]*)"|'([^']*)'|(\S+)/g;for(let z=Y.exec(f);z!==null;z=Y.exec(f))J.push(z[1]??z[2]??z[3]??"");return J}function N1(f,J){let Y=f??"claude",z=kf(jJ(Y))?.trim(),G=(()=>{if(z){let Z=yA(z);if(Z.length>0)return Z}return QZ(Y)})();return bA(G,Y,J)}function bA(f,J,Y){let z=Y?.trim();if(!z)return f;let G=J??"claude";if(!pf(G).effortLevels?.includes(z))return f;if(G==="codex")return[...f,"-c",`model_reasoning_effort=${z}`];return f}function rz(f,J){if((J??"claude")!=="claude")return{argv:f,sessionId:null};if(f.some((z)=>SA.has(z)))return{argv:f,sessionId:null};let Y=NA();return{argv:[...f,"--session-id",Y],sessionId:Y}}function Qz(){let f=(J)=>/^[A-Za-z0-9_/.:=-]+$/.test(J)?J:`'${J.replace(/'/g,"'\\''")}'`;try{return[...Cf(),"api"].map(f).join(" ")}catch{return"kobe api"}}function IA(f,J=Qz()){return[`You are running inside kobe (a local multi-session task manager) as task ${f}.`,"kobe tracks a lifecycle status for this task on a board.","When you have COMPLETED the work requested in this session and verified it, report it by running:",` ${J} set-status --task-id ${f} --status in_review`,"Run it only when the work is genuinely done \u2014 never while you are asking the user a question, waiting for input, or mid-task.","Never set any other status value; everything beyond in_review is the user's decision."].join(`
|
|
47
|
-
`)}function
|
|
48
|
-
`)}function
|
|
49
|
-
|
|
50
|
-
`):null}function
|
|
51
|
-
`)}function
|
|
30
|
+
`)&&f.endsWith("</INSTRUCTIONS>")}var qV=()=>{};function QV(f,J={}){let Y=hH(f.input_tokens,0),z=hH(f.cached_input_tokens,0),G=hH(f.output_tokens,0),X=Math.max(0,Y-z);if(Y<=0&&G<=0&&z<=0)return;return{input_tokens:X,output_tokens:G,...z>0?{cache_read_input_tokens:z}:{},...w3(J.contextWindowTokens)?{context_window_tokens:J.contextWindowTokens}:{}}}function hH(f,J){return typeof f==="number"&&Number.isFinite(f)?f:J}function w3(f){return typeof f==="number"&&Number.isFinite(f)&&f>0}import{readFile as h3,readdir as P3,stat as v3,unlink as Eu}from"fs/promises";import{homedir as m3}from"os";import Xz from"path";async function cH(f=Zz){let J=f.sessionsDir(),Y=(await f.readdir(J)).sort().reverse(),z=[];for(let G of Y){let X=Xz.join(J,G),q=(await f.readdir(X)).sort().reverse();for(let Q of q){let H=Xz.join(X,Q),B=(await f.readdir(H)).sort().reverse();for(let V of B){let j=Xz.join(H,V),U=(await f.readdir(j)).filter((L)=>L.startsWith("rollout-")&&L.endsWith(".jsonl"));U.sort().reverse();for(let L of U)z.push(Xz.join(j,L))}}}return z}async function c3(f,J=Zz){if(!f)return;let Y=f.toLowerCase(),z=await cH(J);for(let G of z)if(Xz.basename(G).match(WV)?.[1]?.toLowerCase()===Y)return G;return}function n3(f){for(let J of f.split(`
|
|
31
|
+
`)){let Y=J.trim();if(!Y)continue;try{let z=JSON.parse(Y);if(z.type==="session_meta")return z.payload?.cwd??""}catch{}return""}return""}async function VV(f,J){let Y=HV.get(J);if(!Y)Y=new Map,HV.set(J,Y);let z=Y.get(f);if(z!==void 0)return z;let G;try{G=await J.readFile(f)}catch{return null}let X=n3(G);if(X)Y.set(f,X);return X}async function KV(f,J=Zz){if(!f)return[];let Y=await cH(J),z=[],G=0;for(let X of Y){if(G>=d3)break;if(G++,await VV(X,J)!==f)continue;let q=Xz.basename(X).match(WV)?.[1];if(q)z.push(q)}return z.reverse()}async function nH(f,J=Zz){if(!f)return null;let Y=await cH(J),z=0;for(let G of Y){if(z>=i3)break;if(z++,await VV(G,J)!==f)continue;try{return{path:G,mtimeMs:(await J.stat(G)).mtimeMs}}catch{}}return null}async function UV(f,J=Zz){return(await nH(f,J))?.mtimeMs??0}async function DV(f,J=Zz){return(await l3(f,J)).messages}async function l3(f,J=Zz){let Y=await c3(f,J);if(!Y)return{messages:[]};let z;try{z=await J.readFile(Y)}catch{return{messages:[]}}let G=a3($3(z,f)),X=s3(z);return{messages:G,...X?{usageMetrics:X}:{}}}function a3(f){return f.map((J,Y)=>({msg:J,idx:Y})).sort((J,Y)=>{if(J.msg.timestamp<Y.msg.timestamp)return-1;if(J.msg.timestamp>Y.msg.timestamp)return 1;return J.idx-Y.idx}).map((J)=>J.msg)}function $3(f,J){let Y=[];for(let z of f.split(`
|
|
32
|
+
`)){let G=z.trim();if(!G)continue;let X;try{X=JSON.parse(G)}catch{continue}if(!eG(X))continue;if(X.type!=="response_item")continue;let q=eG(X.payload)?X.payload:void 0;if(!q)continue;let Q=typeof X.timestamp==="string"?X.timestamp:new Date().toISOString(),H=r3(q,Q,J);if(H)Y.push(H)}return Y}function r3(f,J,Y){if(f.type==="message"){let z=f.role;if(z!=="user"&&z!=="assistant"&&z!=="system")return;let G=wH(f.content);if(z==="user"&&ZV(G))return;return{role:z,blocks:G,timestamp:J,sessionId:Y}}if(f.type==="reasoning")return p3(f,J,Y);if(f.type==="function_call")return PH(f,J,Y,{name:mH(f.name,"function_call"),input:vH(f.arguments)});if(f.type==="custom_tool_call")return PH(f,J,Y,{name:mH(f.name,"custom_tool_call"),input:vH(f.input)});if(f.type==="tool_search_call")return PH(f,J,Y,{name:"tool_search_call",input:cZ(f,["type","call_id","status"])});if(f.type==="function_call_output"||f.type==="custom_tool_call_output")return BV(f,J,Y,vH(f.output));if(f.type==="tool_search_output")return BV(f,J,Y,cZ(f,["type","call_id"]));if(f.type==="web_search_call"||f.type==="image_generation_call"||f.type==="local_shell_call")return _3(f,J,Y);return}function p3(f,J,Y){let z=o3(f);if(z.length===0)return;return{role:"assistant",blocks:[{type:"thinking",text:z}],timestamp:J,sessionId:Y}}function PH(f,J,Y,z){let G=typeof f.call_id==="string"?f.call_id:void 0;if(!G)return;return{role:"assistant",blocks:[{type:"tool_call",callId:G,name:z.name,input:z.input}],timestamp:J,sessionId:Y}}function BV(f,J,Y,z){let G=typeof f.call_id==="string"?f.call_id:void 0;if(!G)return;return{role:"user",blocks:[{type:"tool_result",callId:G,output:z,isError:!1}],timestamp:J,sessionId:Y}}function _3(f,J,Y){let z=typeof f.type==="string"?f.type:"tool",G=typeof f.call_id==="string"&&f.call_id.length>0?f.call_id:`${z}:${J}`,X=mH(f.name,z),q=cZ(f,["type","call_id","status"]),Q=cZ(f,["type","call_id"]);return{role:"assistant",timestamp:J,sessionId:Y,blocks:[{type:"tool_call",callId:G,name:X,input:q},{type:"tool_result",callId:G,output:Q,isError:!1}]}}function o3(f){let J=jV(f.content);if(J.length>0)return J;let Y=typeof f.text==="string"?f.text:"";if(Y.length>0)return Y;return jV(f.summary)}function jV(f){if(typeof f==="string")return f;if(!Array.isArray(f))return"";let J=[];for(let Y of f){if(typeof Y==="string"){J.push(Y);continue}if(!eG(Y))continue;let z=typeof Y.text==="string"?Y.text:"";if(z.length>0)J.push(z)}return J.join("")}function cZ(f,J){let Y={};for(let[z,G]of Object.entries(f))if(!J.includes(z))Y[z]=G;return Y}function mH(f,J){return typeof f==="string"&&f.length>0?f:J}function vH(f){if(typeof f!=="string")return f;try{return JSON.parse(f)}catch{return f}}function s3(f){let J,Y=null;for(let z of f.split(`
|
|
33
|
+
`)){let G=z.trim();if(!G)continue;let X;try{X=JSON.parse(G)}catch{continue}if(!eG(X))continue;let q=typeof X.timestamp==="string"?t3(X.timestamp):null;if(X.type==="response_item")continue;if(X.type!=="turn.completed")continue;let Q=eG(X.usage)?X.usage:void 0;if(!Q)continue;let H=QV(Q);if(!H)continue;if(q!==null&&(Y===null||q>Y))Y=q,J=H;else if(Y===null)J=H}return J}function t3(f){let J=new Date(f).getTime();return Number.isFinite(J)?J:null}function eG(f){return typeof f==="object"&&f!==null&&!Array.isArray(f)}var Zz,WV,HV,d3=200,i3=12;var dH=k(()=>{qV();Zz={sessionsDir(){return Xz.join(m3(),".codex","sessions")},async readdir(f){try{return await P3(f)}catch{return[]}},async readFile(f){return await h3(f,"utf8")},stat:v3};WV=/([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})\.jsonl$/i;HV=new WeakMap});function MV(f){if(!nZ(f))return;let J=nZ(f.modelMetrics)?f.modelMetrics:void 0;if(!J)return;let Y=0,z=0,G=0;for(let q of Object.values(J)){if(!nZ(q)||!nZ(q.usage))continue;Y+=dZ(q.usage.inputTokens,0),z+=dZ(q.usage.outputTokens,0),G+=dZ(q.usage.cacheReadTokens,0)}let X=dZ(f.currentTokens,0);if(Y===0&&z===0&&G===0&&X===0)return;return{input_tokens:Y,output_tokens:z,...G>0?{cache_read_input_tokens:G}:{},...X>0?{context_tokens:X}:{}}}function nZ(f){return typeof f==="object"&&f!==null&&!Array.isArray(f)}function dZ(f,J){return typeof f==="number"&&Number.isFinite(f)?f:J}import{readFile as e3,readdir as fO,rm as JO,stat as YO}from"fs/promises";import{homedir as zO}from"os";import LY from"path";async function lH(f=qz){let J=LY.join(f.copilotDir(),"session-state");return(await f.readdir(J)).map((z)=>LY.join(J,z))}async function FV(f,J=qz){let Y=[];for(let z of await lH(J)){let G=await aH(z,J);if(G.cwd!==f)continue;Y.push({id:G.id??LY.basename(z),updatedAt:G.updatedAt??""})}return Y.sort((z,G)=>z.updatedAt.localeCompare(G.updatedAt)).map((z)=>z.id)}async function OV(f,J=qz){if(!f)return 0;let Y=0;for(let z of await lH(J)){if((await aH(z,J)).cwd!==f)continue;try{let{mtimeMs:X}=await J.stat(LY.join(z,"events.jsonl"));if(X>Y)Y=X}catch{}}return Y}async function GO(f,J=qz){let Y=await XO(f,J);if(!Y)return{messages:[]};let z=await J.readFile(LY.join(Y,"events.jsonl")).catch(()=>""),G=qO(z,f);return{messages:G.messages,...G.usageMetrics?{usageMetrics:G.usageMetrics}:{}}}async function AV(f,J=qz){return(await GO(f,J)).messages}async function XO(f,J=qz){for(let Y of await lH(J)){if(LY.basename(Y)===f)return Y;let z=await aH(Y,J);if(z.id===f||z.name?.toLowerCase()===f.toLowerCase())return Y}return}async function aH(f,J=qz){let Y=await J.readFile(LY.join(f,"workspace.yaml")).catch(()=>"");return ZO(Y)}function ZO(f){let J={};for(let Y of f.split(`
|
|
34
|
+
`)){let z=Y.match(/^([A-Za-z_]+):\s*(.*)$/);if(!z)continue;let G=z[1],X=z[2]??"";if(X.startsWith('"')&&X.endsWith('"'))X=X.slice(1,-1).replace(/\\"/g,'"');J[G]=X}return{id:J.id,cwd:J.cwd,name:J.name,updatedAt:J.updated_at,createdAt:J.created_at}}function qO(f,J){let Y=[],z=new Map,G=J,X,q=null;for(let Q of f.split(`
|
|
35
|
+
`)){let H=Q.trim();if(!H)continue;let B;try{B=JSON.parse(H)}catch{continue}if(!iH(B)||typeof B.type!=="string")continue;let V=typeof B.timestamp==="string"?B.timestamp:new Date().toISOString(),j=iH(B.data)?B.data:{};if(B.type==="session.start"){let U=typeof j.sessionId==="string"?j.sessionId:void 0;if(U)G=U;continue}if(B.type==="user.message"){let U=typeof j.content==="string"?j.content:"";if(!U)continue;if(!q)q=Buffer.from(U.slice(0,QO),"utf8").toString("utf8");Y.push({role:"user",blocks:[{type:"text",text:U}],timestamp:V,sessionId:G});continue}if(B.type==="assistant.message"){let U=[],L=typeof j.content==="string"?j.content:"";if(L)U.push({type:"text",text:L});let O=Array.isArray(j.toolRequests)?j.toolRequests:[];for(let M of O){if(!iH(M))continue;let R=typeof M.id==="string"?M.id:typeof M.toolCallId==="string"?M.toolCallId:"tool",S=typeof M.name==="string"?M.name:typeof M.toolName==="string"?M.toolName:"tool";U.push({type:"tool_call",callId:R,name:S,input:M.arguments??{}})}if(U.length>0)Y.push({role:"assistant",blocks:U,timestamp:V,sessionId:G});continue}if(B.type==="tool.execution_start"){let U=typeof j.toolCallId==="string"?j.toolCallId:void 0,L=typeof j.toolName==="string"?j.toolName:"tool";if(U)z.set(U,L);continue}if(B.type==="tool.execution_complete"){let U=typeof j.toolCallId==="string"?j.toolCallId:void 0;if(!U)continue;let L=z.get(U)??(typeof j.toolName==="string"?j.toolName:"tool"),O=j.result??(j.success===!1?{success:!1}:void 0);Y.push({role:"assistant",blocks:[{type:"tool_result",callId:U,output:O,isError:j.success===!1}],timestamp:V,sessionId:G});continue}if(B.type==="session.shutdown")X=MV(j)}return{messages:Y,usageMetrics:X,firstUserMessage:q}}function iH(f){return typeof f==="object"&&f!==null&&!Array.isArray(f)}var qz,QO=200;var gV=k(()=>{qz={copilotDir(){let f=process.env.COPILOT_HOME?.trim();if(f)return f;return LY.join(zO(),".copilot")},async readdir(f){try{return await fO(f)}catch{return[]}},async readFile(f){return await e3(f,"utf8")},stat:YO,async rm(f){await JO(f,{recursive:!0,force:!0})}}});function $H(f){return pf(f).createHookAdapter()}class fX{vendor;constructor(f){this.vendor=f}supportsHooks(){return!1}activityDetailFromPayload(){return}async installActivityHooks(){}async removeActivityHooks(){}supportsWorktreeSync(){return!1}async removeWorktreeSyncHook(){}async installWorktreeWatchHook(){}async removeWorktreeWatchHook(){}}var rH=k(()=>{MY()});import{readFile as RV}from"fs/promises";class iZ{supportsCompletionMarkers(){return!0}}function CV(f){return pf(f).createTurnDetector()}function WO(f,J="claude",Y=0){let z=null,G=0;for(let X of f.split(`
|
|
36
|
+
`)){G++;let q=kV(X);if(!q)continue;let Q=yV(q.message)?q.message:q;if(Q.role!=="assistant")continue;if(!("content"in Q))continue;let H=NV(q,Y),B={id:`claude:${J}:${H}:${G}`,timestampMs:H,source:"claude"};if(!z||B.timestampMs>=z.timestampMs)z=B}return z}function VO(f,J="codex"){let Y=null,z=0;for(let G of f.split(`
|
|
37
|
+
`)){z++;let X=kV(G);if(!X||X.type!=="turn.completed")continue;let q=NV(X,0),Q={id:`codex:${J}:${q}:${z}`,timestampMs:q,source:"codex"};if(!Y||Q.timestampMs>=Y.timestampMs)Y=Q}return Y}function kV(f){let J=f.trim();if(!J)return null;try{let Y=JSON.parse(J);return yV(Y)?Y:null}catch{return null}}function NV(f,J){let Y=typeof f.timestamp==="string"?Date.parse(f.timestamp):Number.NaN;return Number.isFinite(Y)?Y:J}function yV(f){return typeof f==="object"&&f!==null&&!Array.isArray(f)}var BO,pH,jO,_H,lZ;var oH=k(()=>{bH();dH();MY();BO={listSessionFiles:(f)=>pG(f),readFile:(f)=>RV(f,"utf8")};pH=class pH extends iZ{deps;vendor="claude";cache=new Map;constructor(f=BO){super();this.deps=f}async latestCompletion(f){let J=await this.deps.listSessionFiles(f),Y=null,z=new Map;for(let G of J.slice(0,4)){let X=this.cache.get(G.path),q;if(X&&G.mtimeMs>0&&X.mtimeMs===G.mtimeMs)q=X.marker;else{let Q=await this.deps.readFile(G.path).catch(()=>"");q=WO(Q,G.path,G.mtimeMs)}if(z.set(G.path,{mtimeMs:G.mtimeMs,marker:q}),q&&(!Y||q.timestampMs>Y.timestampMs))Y=q}return this.cache=z,Y}};jO={findLatestRollout:(f)=>nH(f),readFile:(f)=>RV(f,"utf8")};_H=class _H extends iZ{deps;vendor="codex";cache=null;constructor(f=jO){super();this.deps=f}async latestCompletion(f){if(!f)return null;let J=await this.deps.findLatestRollout(f);if(!J)return null;if(this.cache&&this.cache.path===J.path&&J.mtimeMs>0&&this.cache.mtimeMs===J.mtimeMs)return this.cache.marker;let Y=await this.deps.readFile(J.path).catch(()=>"");if(!Y)return null;let z=VO(Y,J.path);return this.cache={path:J.path,mtimeMs:J.mtimeMs,marker:z},z}};lZ=class lZ extends iZ{vendor;constructor(f){super();this.vendor=f}supportsCompletionMarkers(){return!1}async latestCompletion(){return null}}});function FO(f){return{vendor:f,builtin:!1,displayName:f,defaultCommand:[f],history:KO,detectAccount:async()=>({binary:{found:!1,error:"custom engine: kobe has no account detector for it"},account:{kind:"none"}}),createHookAdapter:()=>new fX(f),createTurnDetector:()=>new lZ(f)}}function pf(f){return Q1(f)?MO[f]:FO(f)}var KO,UO,DO,LO,MO;var MY=k(()=>{U1();fz();bH();XV();dH();gV();rH();oH();KO={async listSessionIdsForWorktree(){return[]},async readHistory(){return[]},async latestTranscriptMtimeForWorktree(){return 0}},UO={async listSessionIdsForWorktree(f){return[...await pG(f)].sort((Y,z)=>Y.mtimeMs-z.mtimeMs).map((Y)=>Y.sessionId)},readHistory:(f)=>rW(f),latestTranscriptMtimeForWorktree:(f)=>$W(f)},DO={listSessionIdsForWorktree:(f)=>KV(f),readHistory:(f)=>DV(f),latestTranscriptMtimeForWorktree:(f)=>UV(f)},LO={listSessionIdsForWorktree:(f)=>FV(f),readHistory:(f)=>AV(f),latestTranscriptMtimeForWorktree:(f)=>OV(f)},MO={claude:{vendor:"claude",builtin:!0,displayName:"Claude",defaultCommand:["claude"],history:UO,detectAccount:(f)=>EZ(f),createHookAdapter:()=>new xH,createTurnDetector:()=>new pH},codex:{vendor:"codex",builtin:!0,displayName:"Codex",defaultCommand:["codex"],effortLevels:["none","low","medium","high","xhigh"],history:DO,detectAccount:(f)=>xZ(f),createHookAdapter:()=>new fX("codex"),createTurnDetector:()=>new _H},copilot:{vendor:"copilot",builtin:!0,displayName:"Copilot",defaultCommand:["copilot"],history:LO,detectAccount:(f)=>wZ(f),createHookAdapter:()=>new fX("copilot"),createTurnDetector:()=>new lZ("copilot")}}});function bV(f){let J=f.find((G)=>G.role==="user");if(!J)return"";let Y=J.blocks.filter((G)=>G.type==="text").map((G)=>G.text).join(" "),z=KW(Y);return z.length>0?Buffer.from(z,"utf8").toString("utf8"):z}async function dz(f,J=Sf){if(!f)return"";let{history:Y}=pf(J),z=await Y.listSessionIdsForWorktree(f);for(let G of z.slice(0,OO)){let X=bV(await Y.readHistory(G));if(X)return X}return""}async function SV(f,J){if(!J)return"";try{return bV(await pf(f).history.readHistory(J))}catch{return""}}var OO=8;var aZ=k(()=>{MY();S1()});function iz(f,J,Y){if(!J)return f;let z=wz(J);return z.ensureReady(),z.wrapCommand(f,{tty:!0,cwd:Y})}function _f(){let f=[];for(let J of["KOBE_HOME_DIR","KOBE_DAEMON_SOCKET_PATH","KOBE_TMUX_SOCKET"]){let Y=process.env[J];if(Y&&Y.length>0)f.push(`${J}=${Xf(Y)}`)}return f.length>0?`${f.join(" ")} `:""}var JX="@kobe_remote";var Qz=k(()=>{e1();qJ()});var XX={};jf(XX,{windowIsSurface:()=>NO,windowCount:()=>RO,tmuxSessionName:()=>Lf,tmuxCommandSequence:()=>tH,tmuxAvailable:()=>NJ,tmuxArgs:()=>Hz,tagPaneRole:()=>uV,tagClaudePane:()=>kO,switchClientBeforeKill:()=>bJ,setWindowOption:()=>AY,setSessionOption:()=>FY,sessionExists:()=>Hf,sendKeys:()=>rZ,sendKeyName:()=>GX,runTmuxSequenceCapturing:()=>YX,runTmuxSequence:()=>Pf,runTmuxCapturing:()=>d0,runTmux:()=>h0,paneIdByRole:()=>fB,newWindow:()=>HJ,killSession:()=>l1,globalTasksPaneWidth:()=>$Z,getSessionOptions:()=>C1,getSessionOption:()=>Bz,getServerOptions:()=>OY,getServerOption:()=>TV,ensureFallbackSession:()=>pZ,currentSessionName:()=>k1,claudePaneIdStrict:()=>$z,claudePaneId:()=>JB,capturePaneById:()=>rz,attachArgv:()=>az,SURFACE_WINDOW_OPTION:()=>YB,PANE_ROLE_OPTION:()=>zX,KOBE_TMUX_SOCKET:()=>QJ,KOBE_HOME_SESSION:()=>EV,CLAUDE_ROLE_OPTION:()=>CO,CHAT_TAB_SESSION_ID_OPTION:()=>yJ});import{homedir as AO}from"os";function Hz(...f){return["tmux","-L",QJ,...f]}function Lf(f){return`kobe-${f.replace(/[^A-Za-z0-9_-]/g,"")}`}function az(f){return Hz("attach-session","-t",`=${f}`)}async function sH(f){if(!f)return"";try{return await new Response(f).text()}catch{return""}}async function h0(f){try{let J=Bun.spawn(Hz(...f),{stdin:"ignore",cwd:lz,stdout:"ignore",stderr:"pipe"}),[Y,z]=await Promise.all([sH(J.stderr),J.exited]);if(z!==0&&Y.trim().length>0)console.error(`[kobe tmux] ${f.join(" ")} (${z}): ${Y.trim()}`);return z}catch{return 1}}async function gO(f){try{return await Bun.spawn(Hz(...f),{stdin:"ignore",cwd:lz,stdout:"ignore",stderr:"ignore"}).exited}catch{return 1}}function tH(f){let J=[];for(let Y of f){if(Y.length===0)continue;if(J.length>0)J.push(";");J.push(...Y)}return J}async function Pf(f){let J=tH(f);return J.length===0?0:h0(J)}async function d0(f){try{let J=Bun.spawn(Hz(...f),{stdin:"ignore",cwd:lz,stdout:"pipe",stderr:"pipe"}),[Y,z,G]=await Promise.all([sH(J.stdout),sH(J.stderr),J.exited]);if(G!==0&&z.trim().length>0)console.error(`[kobe tmux] ${f.join(" ")} (${G}): ${z.trim()}`);return{code:G,stdout:Y}}catch{return{code:1,stdout:""}}}async function YX(f){let J=tH(f);return J.length===0?{code:0,stdout:""}:d0(J)}async function NJ(){try{return await Bun.spawn(["tmux","-V"],{stdin:"ignore",cwd:lz,stdout:"ignore",stderr:"ignore"}).exited===0}catch{return!1}}async function Hf(f){return await gO(["has-session","-t",`=${f}`])===0}async function RO(f){let{code:J,stdout:Y}=await d0(["list-windows","-t",`=${f}`,"-F","#{window_id}"]);if(J!==0)return 0;return Y.split(`
|
|
38
|
+
`).filter((z)=>z.trim().length>0).length}async function FY(f,J,Y){await h0(["set-option","-t",f,J,Y])}async function Bz(f,J){let{code:Y,stdout:z}=await d0(["show-options","-v","-t",f,J]);return Y===0?z.trim():""}async function C1(f,J){let Y=Object.fromEntries(J.map((X)=>[X,void 0])),{code:z,stdout:G}=await YX(J.map((X)=>["show-options","-q","-t",f,X]));if(z!==0)return Y;for(let X of G.split(`
|
|
39
|
+
`)){let q=X.indexOf(" ");if(q<=0)continue;let Q=X.slice(0,q);if(Q in Y)Y[Q]=X.slice(q+1).trim()}return Y}async function TV(f){let{code:J,stdout:Y}=await d0(["show-options","-sqv",f]);return J===0?Y.trim():""}async function OY(f){let J=Object.fromEntries(f.map((G)=>[G,void 0])),{code:Y,stdout:z}=await YX(f.map((G)=>["show-options","-sq",G]));if(Y!==0)return J;for(let G of z.split(`
|
|
40
|
+
`)){let X=G.indexOf(" ");if(X<=0)continue;let q=G.slice(0,X);if(q in J)J[q]=G.slice(X+1).trim()}return J}async function $Z(){let f=await TV($J),J=Number.parseInt(f,10);return Number.isFinite(J)&&J>0?zz(J):Jz}async function uV(f,J){await h0(["set-option","-p","-t",f,zX,J])}async function AY(f,J,Y){await h0(["set-window-option","-t",f,J,Y])}async function kO(f){await uV(f,eH)}async function fB(f,J,Y=!1){let{code:z,stdout:G}=await d0(["list-panes","-t",`=${f}`,"-F",`#{pane_id} #{${zX}}`]);if(z!==0)return"";let X="";for(let q of G.split(`
|
|
41
|
+
`)){let[Q,H]=q.split("\t");if(!Q)continue;if(!X)X=Q.trim();if(H?.trim()===J)return Q.trim()}return Y?X:""}async function JB(f){return fB(f,eH,!0)}async function $z(f){return fB(f,eH,!1)}async function rz(f,J){if(!f)return"";let Y=["capture-pane","-t",f,"-p"];if(typeof J==="number"&&J>0)Y.push("-S",String(-J));let{code:z,stdout:G}=await d0(Y);return z===0?G:""}async function rZ(f,J){await h0(["send-keys","-t",f,"-l","--",J])}async function GX(f,J){await h0(["send-keys","-t",f,J])}async function HJ(f,J){let Y=["new-window","-t",`=${f}`,"-c",J.cwd];if(J.name)Y.push("-n",J.name);if(J.surface){Y.push("-P","-F","#{window_id}"),Y.push(J.command);let{code:z,stdout:G}=await d0(Y),X=G.trim();if(z===0&&X)await AY(X,YB,"1");return}Y.push(J.command),await h0(Y)}async function NO(f){let{code:J,stdout:Y}=await d0(["display-message","-t",f,"-p",`#{${YB}}`]);return J===0&&Y.trim()==="1"}async function k1(){let f=["display-message","-p"],J=process.env.TMUX_PANE;if(J&&J.length>0)f.push("-t",J);f.push("#{session_name}");let{code:Y,stdout:z}=await d0(f),G=z.trim();return Y===0&&G.length>0?G:null}async function l1(f){if(!f.startsWith("kobe-hidden-")){let J=sG(f);if(await Hf(J))await h0(["kill-session","-t",`=${J}`])}if(await Hf(f))await h0(["kill-session","-t",`=${f}`])}async function pZ(){let f=EV;if(await Hf(f)){if(await Bz(f,IV)==="tasks")return f;await h0(["kill-session","-t",`=${f}`])}let Y=(await d0(["new-session","-d","-s",f,"-c",lz,"-x","220","-y","50","-P","-F","#{pane_id}",tW()])).stdout.trim();if(Y){let z=await $Z(),X=(await d0(["split-window","-h","-b","-t",Y,"-l",`${z}`,"-c",lz,"-P","-F","#{pane_id}",R1(_f()+DY(Cf()))])).stdout.trim();if(X)await Pf([["set-option","-p","-t",X,zX,"tasks"],["select-pane","-t",X]])}return await FY(f,IV,"tasks"),f}async function bJ(f,J){if(await k1()!==f)return;if(J&&J!==f&&await Hf(J)){await h0(["switch-client","-t",`=${J}`]);return}let z=await pZ();await h0(["switch-client","-t",`=${z}`])}var QJ,lz,zX="@kobe_role",CO,eH="claude",yJ="@kobe_session_id",YB="@kobe_surface",EV="kobe-home",IV="@kobe_home";var Tf=k(()=>{aJ();Qz();qJ();QJ=process.env.KOBE_TMUX_SOCKET?.trim()||"kobe";lz=AO()||"/";CO=zX});async function yO(f,J=xV){let{code:Y,stdout:z}=await J.capture(["list-windows","-t",`=${f}`,"-F",`#{window_index} #{automatic-rename} #{${yJ}}`]);if(Y!==0)return[];let G=[];for(let X of z.split(`
|
|
42
|
+
`)){let[q,Q,H]=X.split("\t"),B=Number.parseInt((q??"").trim(),10);if(!Number.isInteger(B))continue;G.push({index:B,sessionId:H?.trim()??"",autoRename:Q?.trim()??""})}return G}async function bO(f,J,Y){let{code:z,stdout:G}=await Y.capture(["show-window-options","-t",`=${f}:${J}`,"automatic-rename"]);return z===0&&/\boff\b/.test(G)}async function SO(f){let{code:J,stdout:Y}=await f.capture(["show-window-options","-g","automatic-rename"]);return J===0&&/\boff\b/.test(Y)}async function IO(f,J,Y,z){return await z.run(["rename-window","-t",`=${f}:${J}`,"--",Y])===0}async function wV(f,J=TO){let Y=0,z=null,G=async(X,q)=>{if(q.autoRename==="1")return!1;if(q.autoRename==="0"){if(z===null)z=await SO(J.runner);if(!z)return!0}return bO(X,q.index,J.runner)};for(let X of f.listTasks()){if(X.archived||X.kind==="main"||!X.worktreePath)continue;let q=Lf(X.id),Q=await yO(q,J.runner);if(Q.length===0)continue;let H=Q.reduce((V,j)=>Math.min(V,j.index),Number.POSITIVE_INFINITY),B=X.vendor??Sf;for(let V of Q)try{if(await G(q,V))continue;let j=V.sessionId?await J.titleFromSessionId(B,V.sessionId):V.index===H?await J.titleFromWorktree(X.worktreePath,B):"";if(j&&await IO(q,V.index,j,J.runner))Y++}catch{}}return Y}var xV,TO;var hV=k(()=>{aZ();Tf();S1();xV={capture:d0,run:h0};TO={runner:xV,titleFromSessionId:SV,titleFromWorktree:dz}});function vV(f){if(f instanceof Error)return f;let J;try{J=typeof f==="string"?f:JSON.stringify(f)}catch{J=String(f)}return Error(J)}function PV(f,J,Y=new Date){let z=vV(J);return`[${Y.toISOString()}] daemon ${f}: ${z.stack??`${z.name}: ${z.message}`}
|
|
43
|
+
`}function uO(f,J,Y=new Date){let z=vV(J);return`[${Y.toISOString()}] daemon error [${f}]: ${z.stack??`${z.name}: ${z.message}`}
|
|
44
|
+
`}function uf(f,J){process.stderr.write(uO(f,J))}function EO(f,J,Y=new Date){return`[${Y.toISOString()}] daemon [${f}]: ${J}
|
|
45
|
+
`}function gY(f,J){process.stderr.write(EO(f,J))}function mV(f=(J)=>process.stderr.write(J)){if(zB||GB)return;zB=(J)=>f(PV("unhandledRejection",J)),GB=(J)=>f(PV("uncaughtException",J)),process.on("unhandledRejection",zB),process.on("uncaughtException",GB)}var zB,GB;async function xO(f,J=dz){let Y=[];for(let z of f.listTasks()){if(z.archived||z.title!==RJ||!z.worktreePath)continue;try{let G=await J(z.worktreePath,z.vendor??Sf);if(!G)continue;let X=f.getTask(z.id);if(!X||X.title!==RJ)continue;await f.setTitle(z.id,G),Y.push({id:z.id,title:G})}catch(G){uf("auto-title-poller",G)}}return Y}function cV(f,J=XB,Y){if(J<=0)return()=>{};let z=!1,X=setInterval(()=>{if(Y&&!Y())return;if(z)return;z=!0,xO(f).then(()=>wV(f)).catch((q)=>uf("auto-title-poller",q)).finally(()=>{z=!1})},J);return X.unref?.(),()=>clearInterval(X)}var XB=4000;var nV=k(()=>{aZ();lG();hV();S1()});class ZB{last=new Map;sinks=new Set;publish(f,J){this.last.set(f,J);let Y={channel:f,payload:J};for(let z of this.sinks)z(Y)}snapshot(){return[...this.last].map(([f,J])=>({channel:f,payload:J}))}onPublish(f){return this.sinks.add(f),()=>{this.sinks.delete(f)}}}function _Z(){return nf()[jz]===!0}var jz="experimental.autoStatus";var ZX=k(()=>{pY()});async function dV(f,J,Y=_Z){if(!Y())return"skipped";let z=f.getTask(J);if(!z)return"skipped";if((z.kind??"task")==="main"||z.archived)return"skipped";if(z.status!=="backlog")return"skipped";return await f.setStatus(J,"in_progress"),"moved"}var iV=k(()=>{ZX()});import{createHash as wO}from"crypto";import{homedir as hO}from"os";import CY from"path";function nO(){return CY.join(process.env.KOBE_HOME_DIR??hO(),".kobe")}function dO(f){let Y=(CY.basename(f)||"repo").replace(/[^a-zA-Z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"repo",z=wO("sha1").update(CY.resolve(f)).digest("hex").slice(0,12);return`${Y}-${z}`}function iO(f){if(!CY.isAbsolute(f))throw Error(`worktreeRootFor: repo must be an absolute path, got: ${f}`);return CY.join(nO(),PO,dO(f))}function lO(f){if(!CY.isAbsolute(f))throw Error(`managedWorktreeRootsFor: repo must be an absolute path, got: ${f}`);return[iO(f),...cO.map((J)=>CY.join(f,J))]}function RY(f){return f.length>1&&f.endsWith("/")?f.slice(0,-1):f}function lV(f,J){return J===f||J.startsWith(`${f}/`)}function aV(f,J){let Y=RY(J),z,G=-1;for(let X of f){if(!X.worktreePath)continue;let q=RY(X.worktreePath);if(lV(q,Y)&&q.length>G)G=q.length,z=X.id}return z}function qB(f,J){let Y=RY(J),z,G=-1;for(let X of f){if(!X.repo)continue;let q=RY(X.repo);if(lV(q,Y)&&q.length>G)G=q.length,z=q}return z}function $V(f,J){let Y=RY(J),z=new Set,G=new Set;for(let X of f){if(X.repo)z.add(RY(X.repo));if(X.worktreePath)G.add(RY(X.worktreePath))}for(let X of z)for(let q of lO(X).map(RY)){let Q=`${q}/`;if(!Y.startsWith(Q))continue;let B=Y.slice(Q.length).split("/")[0];if(!B)continue;let V=`${Q}${B}`;if(G.has(V))return;return{repo:X,worktreePath:V}}return}var PO="worktrees",vO=".kobe/worktrees",mO=".claude/worktrees",cO;var rV=k(()=>{cO=[vO,mO]});function BB(f){return{message:f instanceof Error?f.message:String(f),name:f instanceof Error?f.name:void 0}}async function qX(f,J,Y,z){let G=f.get(J);if(!G)throw Error(`unknown daemon request: ${J}`);return G.handle(jB(Y),z)}function QX(){return new Map([{name:"hello",handle(J,Y){let z=typeof J.protocolVersion==="number"?J.protocolVersion:n1,G=typeof J.minProtocolVersion==="number"?J.minProtocolVersion:z;if(!gZ({localVersion:n1,localMin:jY,remoteVersion:z,remoteMin:G}))throw Error(`daemon is protocol v${n1} (min v${jY}); this client is v${z} (min v${G}). Upgrade your kobe.`);return{protocolVersion:n1,minProtocolVersion:jY,kobeVersion:s0,capabilities:[...AH],daemonPid:Y.daemon.pid,clientId:Y.clientId,tasks:Y.orch.listTasks().map(zJ)}}},{name:"daemon.status",handle(J,Y){return{daemonPid:Y.daemon.pid,kobeVersion:s0,uptimeMs:Date.now()-Y.daemon.startedAt.getTime(),startedAt:Y.daemon.startedAt.toISOString(),attachedClients:Y.daemon.guiCount(),taskCount:Y.orch.listTasks().length,socketPath:Y.daemon.socketPath,webPort:Y.daemon.webPort??null}}},{name:"daemon.stop",async handle(J,Y){return await Y.daemon.stopSoon(),{}}},{name:"task.list",handle(J,Y){return{tasks:Y.orch.listTasks().map(zJ)}}},{name:"task.get",handle(J,Y){let z=Af(J,"taskId"),G=Y.orch.getTask(z);if(!G)throw Error(`task not found: ${z}`);return{task:zJ(G)}}},{name:"task.create",async handle(J,Y){let z=Af(J,"repo"),G=await Y.orch.createTask({repo:z,title:a1(J,"title"),branch:a1(J,"branch"),baseRef:a1(J,"baseRef"),vendor:HB(J,"vendor"),modelEffort:a1(J,"effort")});return{taskId:G.id,task:zJ(G)}}},{name:"task.archive",async handle(J,Y){let z=Af(J,"taskId");return await Y.orch.setArchived(z,QB(J,"archived")),{}}},{name:"task.rename",async handle(J,Y){let z=Af(J,"taskId");return await Y.orch.setTitle(z,Af(J,"title")),{}}},{name:"task.setBranch",async handle(J,Y){let z=Af(J,"taskId");return await Y.orch.setBranch(z,Af(J,"branch")),{}}},{name:"task.setVendor",async handle(J,Y){let z=Af(J,"taskId"),G=HB(J,"vendor");if(!G)throw Error("task.setVendor: vendor is required");return await Y.orch.setVendor(z,G),{}}},{name:"task.delete",async handle(J,Y){let z=Af(J,"taskId");return await Y.orch.deleteTask(z,{force:QB(J,"force")}),Y.activity.clearTask(z),{}}},{name:"task.pin",async handle(J,Y){let z=Af(J,"taskId");return await Y.orch.setPinned(z,QB(J,"pinned")),{}}},{name:"task.move",async handle(J,Y){let z=Af(J,"taskId"),G=Af(J,"direction");if(G!=="up"&&G!=="down")throw Error("direction must be up or down");return await Y.orch.moveTask(z,G==="up"?-1:1),{}}},{name:"task.status",async handle(J,Y){let z=Af(J,"taskId"),G=Af(J,"status");if(!y9(G))throw Error("status must be a TaskStatus");let X=G==="done"?Y.orch.getTask(z):void 0,q=X?.status;if(await Y.orch.setStatus(z,G),G==="done"&&q!=="done"&&X)try{let Q=await Y.issues.mirrorTaskDone(X.repo,z);if(Q)Y.bus.publish("issue.snapshot",Q)}catch(Q){uf("issue-done-mirror",Q)}return{}}},{name:"task.reorder",async handle(J,Y){let z=J.moves;if(!Array.isArray(z)||z.length===0)throw Error("moves must be a non-empty array");if(z.length>500)throw Error("too many moves in one task.reorder batch (max 500)");let G=z.map((X)=>{if(typeof X!=="object"||X===null)throw Error("each move needs taskId and position");let q=X,Q=Af(q,"taskId"),H=q.position;if(typeof H!=="number"||!Number.isFinite(H))throw Error("position must be a finite number");return{taskId:Q,position:H}});return await Y.orch.reorderTasks(G),{}}},{name:"task.ensureMain",async handle(J,Y){let z=Af(J,"repo"),G=await Y.orch.ensureMainTask(z);return{task:zJ(G)}}},{name:"task.ensureWorktree",async handle(J,Y){let z=Af(J,"taskId");Y.bus.publish("task.jobs",{taskId:z,kind:"ensureWorktree",phase:"running"});try{let G=await Y.orch.ensureWorktree(z);return Y.bus.publish("task.jobs",{taskId:z,kind:"ensureWorktree",phase:"done"}),{worktreePath:G}}catch(G){throw Y.bus.publish("task.jobs",{taskId:z,kind:"ensureWorktree",phase:"error",error:G instanceof Error?G.message:String(G)}),G}}},{name:"worktree.discoverAdoptable",async handle(J,Y){let z=Af(J,"repo");return{worktrees:await Y.orch.discoverAdoptableWorktrees(z)}}},{name:"worktree.adopt",async handle(J,Y){let z=await Y.orch.adoptWorktree({repo:Af(J,"repo"),worktreePath:Af(J,"worktreePath"),branch:a1(J,"branch"),vendor:HB(J,"vendor"),title:a1(J,"title"),ifExists:a1(J,"ifExists")==="return"?"return":"error"});return{task:zJ(z)}}},{name:"worktree.reconcile",async handle(J,Y){let z=Af(J,"cwd"),G=Af(J,"worktreePath"),X=qB(Y.orch.listTasks(),z)??qB(Y.orch.listTasks(),G);if(!X)return{adopted:!1};try{return{adopted:!0,taskId:(await Y.orch.adoptWorktree({repo:X,worktreePath:G,ifExists:"return"})).id}}catch(q){return uf("worktree-created",q),{adopted:!1}}}},{name:"task.setActive",async handle(J,Y){let z=a1(J,"taskId")??null;return await Y.orch.setActiveTask(z),Y.bus.publish("active-task",{taskId:z}),{}}},{name:"issue.list",async handle(J,Y){return Y.issues.list(Af(J,"repoRoot"))}},{name:"issue.mutate",async handle(J,Y){let z=await Y.issues.mutate(Af(J,"repoRoot"),J.op);return Y.bus.publish("issue.snapshot",z),z}},{name:"session.deliver",async handle(J,Y){let z=Af(J,"taskId"),G=Af(J,"text"),X=a1(J,"source");if(X!==void 0&&X!=="note"&&X!=="dispatcher")throw Error('source must be "note" or "dispatcher"');if(!Y.orch.getTask(z))throw Error(`task not found: ${z}`);return Y.bus.publish("session.deliver",{taskId:z,text:G,at:Date.now(),source:X??"dispatcher"}),{ok:!0}}},{name:"note.file",async handle(J,Y){let z=Af(J,"taskId"),G=Af(J,"text"),X=Y.orch.getTask(z);if(!X)throw Error(`task not found: ${z}`);let q=Y.orch.listTasks().find((H)=>(H.kind??"task")==="main"&&H.repo===X.repo&&!H.archived);if(!q||q.id===X.id)return{ok:!0,routed:!1};let Q=X.title||X.branch||z;return Y.bus.publish("session.deliver",{taskId:q.id,text:`[KOBE FIELD NOTE] from "${Q}" (task ${z}): ${G}`,at:Date.now(),source:"note"}),{ok:!0,routed:!0}}},{name:"engine.reportEvent",async handle(J,Y){let z=Af(J,"kind");if(!NZ(z))throw Error(`unknown engine event kind: ${z}`);let G=a1(J,"taskId"),X=a1(J,"cwd");if(!G&&X&&z==="session-start"){let H=$V(Y.orch.listTasks(),X);if(H)try{await Y.orch.adoptWorktree({repo:H.repo,worktreePath:H.worktreePath,ifExists:"return"})}catch(B){uf("worktree-autosync",B)}}let q=G??(X?aV(Y.orch.listTasks(),X):void 0);if(!q)return{};let Q=aO(J);if(Y.activity.report(q,z,Q),z==="turn-start")dV(Y.orch,q).then((H)=>{if(H==="moved")console.log(`[status-rules] task ${q} auto-moved backlog \u2192 in_progress`)}).catch((H)=>uf("status-rules",H));return{}}}].map((J)=>[J.name,J]))}function jB(f){if(!f||typeof f!=="object"||Array.isArray(f))return{};return f}function Af(f,J){let Y=f[J];if(typeof Y!=="string"||Y.length===0)throw Error(`${J} is required`);return Y}function a1(f,J){let Y=f[J];if(Y===void 0||Y===null||Y==="")return;if(typeof Y!=="string")throw Error(`${J} must be a string`);return Y}function QB(f,J){let Y=f[J];if(Y===void 0||Y===null)return;if(typeof Y!=="boolean")throw Error(`${J} must be a boolean`);return Y}function HB(f,J){let Y=a1(f,J);return Y&&Y.trim().length>0?Y:void 0}function aO(f){let J=f.detail;if(!J||typeof J!=="object"||Array.isArray(J))return;let Y=J,z={};if(Y.failure==="rate_limit"||Y.failure==="billing"||Y.failure==="other")z.failure=Y.failure;if(Y.waiting==="permission"||Y.waiting==="input")z.waiting=Y.waiting;if(typeof Y.note==="string")z.note=Y.note;return Object.keys(z).length>0?z:void 0}var oZ=k(()=>{yZ();iV();S1();D1();rV();sY()});import{execFile as $O}from"child_process";import{mkdir as rO,readFile as pO,realpath as pV,rename as _O,stat as oO,writeFile as sO}from"fs/promises";import{homedir as tO}from"os";import{dirname as eO,isAbsolute as fA,join as JA,resolve as _V}from"path";import{promisify as YA}from"util";function zA(f){return(f instanceof Error?f.message:String(f)).includes("not a git repository")}function tZ(f=process.env.KOBE_HOME_DIR??tO()){return JA(f,".kobe","issues.json")}function sV(f){return typeof f==="string"&&oV.includes(f)}function GA(f){if(f===null||typeof f!=="object"||Array.isArray(f))return null;let J=f;if(typeof J.id!=="number")return null;return{id:J.id,title:typeof J.title==="string"?J.title:"(untitled)",status:sV(J.status)?J.status:"open",created:typeof J.created==="string"?J.created:"",body:typeof J.body==="string"?J.body:"",taskId:typeof J.taskId==="string"?J.taskId:void 0}}function XA(){return{version:1,repos:{}}}function ZA(){let f=new Date,J=String(f.getMonth()+1).padStart(2,"0"),Y=String(f.getDate()).padStart(2,"0");return`${f.getFullYear()}-${J}-${Y}`}async function qA(f){let{stdout:J}=await LB("git",["-C",f,"rev-parse","--git-common-dir"]),Y=J.trim();return pV(fA(Y)?Y:_V(f,Y))}async function QA(f){let{stdout:J}=await LB("git",["-C",f,"rev-parse","--show-toplevel"]);return J.trim()}async function HA(f){let{stdout:J}=await LB("git",["-C",f,"worktree","list","--porcelain"]),Y=J.split(/\r?\n/).find((z)=>z.startsWith("worktree "))?.slice(9).trim();return Y?pV(Y):QA(f)}async function WB(f){if(typeof f!=="string"||f.length===0)throw Error("repoRoot is required");let J=_V(f);if(!(await oO(J).catch(()=>null))?.isDirectory())throw Error("repoRoot does not exist");try{let[z,G]=await Promise.all([HA(J),qA(J)]);return{repoRoot:z,repoKey:G}}catch(z){if(zA(z))throw Error("repoRoot is not a git repository");throw z}}async function VB(f){try{let J=JSON.parse(await pO(f,"utf8")),Y={};if(J.repos&&typeof J.repos==="object")for(let[z,G]of Object.entries(J.repos)){if(!G||typeof G!=="object")continue;let X=G;Y[z]={repoRoot:typeof X.repoRoot==="string"?X.repoRoot:"",nextId:typeof X.nextId==="number"?X.nextId:1,issues:Array.isArray(X.issues)?X.issues.map(GA).filter((q)=>q!==null):[]}}return{version:1,repos:Y}}catch(J){if(J.code==="ENOENT")return XA();throw J}}async function KB(f,J){await rO(eO(f),{recursive:!0});let Y=`${f}.tmp`;await sO(Y,`${JSON.stringify(J,null,2)}
|
|
46
|
+
`,"utf8"),await _O(Y,f)}function UB(f,J){return{repoRoot:f,exists:J!==null,nextId:J?.nextId??1,issues:J?.issues??[]}}async function DB(f,J){let z=(sZ.get(f)??Promise.resolve()).then(J),G=z.then(()=>{return},()=>{return});return sZ.set(f,G),G.then(()=>{if(sZ.get(f)===G)sZ.delete(f)}),z}class eZ{path;constructor(f=tZ()){this.path=f}async list(f){let{repoRoot:J,repoKey:Y}=await WB(f);return DB(this.path,async()=>{let z=await VB(this.path),G=z.repos[Y]??null;if(G&&G.repoRoot!==J)G.repoRoot=J,await KB(this.path,z);return UB(J,G)})}async mirrorTaskDone(f,J){let{repoRoot:Y,repoKey:z}=await WB(f);if(!J)return null;return DB(this.path,async()=>{let G=await VB(this.path),X=G.repos[z];if(!X)return null;let q=X.issues.find((Q)=>Q.taskId===J);if(!q||q.status==="done")return null;return q.status="done",X.repoRoot=Y,await KB(this.path,G),UB(Y,X)})}async mutate(f,J){let{repoRoot:Y,repoKey:z}=await WB(f);if(!J||typeof J!=="object"||Array.isArray(J)||typeof J.type!=="string")throw Error("missing op");return DB(this.path,async()=>{let G=await VB(this.path),X=G.repos[z];if(!X)X={repoRoot:Y,nextId:1,issues:[]},G.repos[z]=X;X.repoRoot=Y;let q=J;if(q.type==="create"){if(typeof q.title!=="string"||q.title.trim().length===0)throw Error("create requires a non-empty title");if(q.body!==void 0&&typeof q.body!=="string")throw Error("body must be a string");X.issues=[{id:X.nextId,title:q.title,status:"open",created:ZA(),body:typeof q.body==="string"?q.body:""},...X.issues],X.nextId+=1}else if(q.type==="setStatus"){if(typeof q.id!=="number")throw Error("setStatus requires a numeric id");if(!sV(q.status))throw Error(`invalid status: must be one of ${oV.join(", ")}`);let Q=X.issues.find((H)=>H.id===q.id);if(!Q)throw Error(`no issue #${q.id}`);Q.status=q.status}else if(q.type==="update"){if(typeof q.id!=="number")throw Error("update requires a numeric id");if(q.title!==void 0&&(typeof q.title!=="string"||q.title.trim().length===0))throw Error("title must be a non-empty string");if(q.body!==void 0&&typeof q.body!=="string")throw Error("body must be a string");let Q=X.issues.find((H)=>H.id===q.id);if(!Q)throw Error(`no issue #${q.id}`);if(typeof q.title==="string")Q.title=q.title;if(typeof q.body==="string")Q.body=q.body}else if(q.type==="link"){if(typeof q.id!=="number")throw Error("link requires a numeric id");if(typeof q.taskId!=="string"||q.taskId.length===0)throw Error("link requires a non-empty taskId");let Q=X.issues.find((H)=>H.id===q.id);if(!Q)throw Error(`no issue #${q.id}`);Q.taskId=q.taskId}else if(q.type==="unlink"){if(typeof q.id!=="number")throw Error("unlink requires a numeric id");let Q=X.issues.find((H)=>H.id===q.id);if(!Q)throw Error(`no issue #${q.id}`);Q.taskId=void 0}else if(q.type==="delete"){if(typeof q.id!=="number")throw Error("delete requires a numeric id");let Q=X.issues.filter((H)=>H.id!==q.id);if(Q.length===X.issues.length)throw Error(`no issue #${q.id}`);X.issues=Q}else throw Error(`unknown op type: ${q.type}`);return await KB(this.path,G),UB(Y,X)})}}var LB,oV,sZ;var MB=k(()=>{LB=YA($O),oV=["open","doing","hold","done"];sZ=new Map});import{mkdirSync as BA,watch as jA}from"fs";import{basename as WA,dirname as VA}from"path";function fq(f){if(f.debounceMs<=0)return()=>{};let J=VA(f.filePath),Y=new Set([WA(f.filePath),...f.matchBasenames??[]]),z=null,G=null,X=null,q=()=>{try{f.onTrigger()}catch(H){f.onError(H)}},Q=()=>{if(z)clearTimeout(z);z=setTimeout(()=>{z=null,q()},f.debounceMs),z.unref?.()};try{BA(J,{recursive:!0}),X=jA(J,(H,B)=>{let V=B===null?null:String(B);if(V!==null&&!Y.has(V))return;Q()}),X.on("error",f.onError)}catch(H){f.onError(H)}if(f.pollMs&&f.pollMs>0)G=setInterval(q,f.pollMs),G.unref?.();return()=>{if(z)clearTimeout(z),z=null;if(G)clearInterval(G),G=null;X?.close(),X=null}}var FB=()=>{};import{homedir as KA}from"os";import{basename as UA,join as DA}from"path";function AB(f=process.env.KOBE_HOME_DIR??KA()){return DA(f,".kobe","settings","keybindings.yaml")}function tV(f,J={}){let Y=J.debounceMs??OB;if(Y<=0)return()=>{};let z=J.path??AB(),G=UA(z),X=G.replace(/\.yaml$/,".yml"),q=0;return f.publish("keybindings",{rev:q}),fq({filePath:z,matchBasenames:[G,X],debounceMs:Y,onTrigger:()=>{try{q+=1,f.publish("keybindings",{rev:q})}catch(H){uf("keybindings-watcher",H)}},onError:(H)=>uf("keybindings-watcher",H)})}var OB=200;var eV=k(()=>{FB()});class gB{clients;idleGraceMs;onIdleStop;schedule;log;cancelIdle=null;stopping=!1;constructor(f){this.clients=f.clients,this.idleGraceMs=f.idleGraceMs,this.onIdleStop=f.onIdleStop,this.schedule=f.schedule??LA,this.log=f.log??gY}guiCount(){let f=0;for(let J of this.clients())if(J.holdsLifetime)f++;return f}hasSubscribers(){for(let f of this.clients())if(f.subscribed)return!0;return!1}isStopping(){return this.stopping}markStopping(){this.stopping=!0,this.clearIdle()}guiAttached(){this.clearIdle()}clientDisconnected(f){if(f)this.maybeArm()}clearIdle(){if(this.cancelIdle)this.cancelIdle(),this.cancelIdle=null}maybeArm(){if(this.stopping||this.guiCount()>0)return;this.clearIdle(),this.log("idle",`last gui gone \u2014 arming ${this.idleGraceMs}ms idle-stop grace`),this.cancelIdle=this.schedule(()=>{if(this.cancelIdle=null,this.stopping||this.guiCount()>0)return;this.log("idle","grace elapsed with no gui \u2014 self-stopping"),this.onIdleStop()},this.idleGraceMs)}}var LA=(f,J)=>{let Y=setTimeout(f,J);return Y.unref?.(),()=>clearTimeout(Y)};var f7=()=>{};import{spawn as MA}from"child_process";function RB(f,J,Y,z){if(Y)return f+z.slowRetryMs;return J+Math.max(z.minIntervalMs,(J-f)*5)}function CB(f,J){return!f.inFlight&&J>=f.nextAllowedAt}function Jq(f,J,Y,z){let G=Date.now();if(!CB(f,G))return!1;f.inFlight=!0;let X=new AbortController,q=setTimeout(()=>X.abort(),J.timeoutMs);return(async()=>{let Q,H=!1;try{Q=await Y(X.signal),H=!0}catch{}clearTimeout(q);let B=X.signal.aborted;if(f.nextAllowedAt=RB(G,Date.now(),B,J),f.inFlight=!1,H&&!B)z(Q)})(),!0}function BJ(f,J,Y){return new Promise((z)=>{let G="",X=!1,q=(H)=>{if(X)return;X=!0,z({status:H,stdout:G})},Q=MA(f,J.slice(),{cwd:Y.cwd,stdio:["ignore","pipe","ignore"],env:Y.env,signal:Y.signal,killSignal:"SIGKILL"});Q.stdout?.on("data",(H)=>{G+=String(H)}),Q.on("error",()=>q(null)),Q.on("close",(H)=>q(H))})}var HX=()=>{};function RA(f){if(f.archived)return!1;if(f.kind==="main")return!1;if(!f.branch||!f.worktreePath)return!1;if(H1(f.repo)||H1(f.worktreePath))return!1;return!0}async function CA(f,J){let Y=J.tickMs??Yq,z=[];for(let G of f.listTasks()){if(!RA(G)){J.schedule.delete(G.id);continue}let X=J.schedule.get(G.id)??0;if(J.now<X)continue;try{let q=await J.run(G.worktreePath,G.branch);if(q.kind==="empty"){J.schedule.set(G.id,J.now+FA);continue}let Q=VW(q.view,J.at),H=f.getTask(G.id);if(!H){J.schedule.delete(G.id);continue}if(!FZ(H.prStatus,Q??void 0))await f.setPRStatus(G.id,Q),z.push(G.id);let B=Q?.lifecycle==="merged"||Q?.lifecycle==="closed";J.schedule.set(G.id,J.now+(B?OA:Y))}catch(q){uf("pr-status-poller",q),J.schedule.set(G.id,J.now+Y)}}return z}function J7(f,J=Yq,Y,z=gA){if(J<=0)return()=>{};let G=new Map,X=!1,Q=setInterval(()=>{if(Y&&!Y())return;if(X)return;X=!0,CA(f,{run:z,now:Date.now(),at:new Date().toISOString(),schedule:G,tickMs:J}).catch((H)=>uf("pr-status-poller",H)).finally(()=>{X=!1})},J);return Q.unref?.(),()=>clearInterval(Q)}var Yq=30000,FA=300000,OA=600000,AA=1e4,gA=async(f,J)=>{let Y=new AbortController,z=setTimeout(()=>Y.abort(),AA);try{let G=await BJ("gh",["pr","view",J,"--json",WW],{cwd:f,signal:Y.signal});if(G.status!==0)return{kind:"empty"};let X=JSON.parse(G.stdout);return typeof X.number==="number"?{kind:"pr",view:X}:{kind:"empty"}}catch{return{kind:"empty"}}finally{clearTimeout(z)}};var Y7=k(()=>{HX();Of()});import{readFileSync as kA}from"fs";import{homedir as NA}from"os";import{basename as yA,join as bA}from"path";function NB(f=process.env.KOBE_HOME_DIR??NA()){return bA(f,".config","kobe","state.json")}function z7(f){let J={};try{let B=JSON.parse(kA(f,"utf8"));if(B&&typeof B==="object"&&!Array.isArray(B))J=B}catch{}let Y=typeof J.activeTheme==="string"&&J.activeTheme.length>0?J.activeTheme:"claude",z=J.transparentBackground===!0,G=typeof J.focusAccent==="string"&&IA.includes(J.focusAccent)?J.focusAccent:null,X=J.activeSortMode==="recent"?"recent":"default",q=J["tasksPane.keysCollapsed"]===!0,Q=typeof J["tasksPane.projectFilter"]==="string"&&J["tasksPane.projectFilter"].length>0?J["tasksPane.projectFilter"]:null,H=typeof J.locale==="string"&&J.locale.length>0?J.locale:"en";return{theme:Y,transparentBackground:z,focusAccent:G,locale:H,sortMode:X,keysCollapsed:q,projectFilter:Q}}function TA(f,J){return f.theme===J.theme&&f.transparentBackground===J.transparentBackground&&f.focusAccent===J.focusAccent&&f.locale===J.locale&&f.sortMode===J.sortMode&&f.keysCollapsed===J.keysCollapsed&&f.projectFilter===J.projectFilter}function G7(f,J={}){let Y=J.debounceMs??kB;if(Y<=0)return()=>{};let z=J.pollMs??SA,G=J.statePath??NB(),X=yA(G),q=z7(G);return f.publish("ui-prefs",q),fq({filePath:G,matchBasenames:[X],debounceMs:Y,pollMs:z,onTrigger:()=>{try{let H=z7(G);if(TA(q,H))return;q=H,f.publish("ui-prefs",H)}catch(H){uf("ui-prefs-watcher",H)}},onError:(H)=>uf("ui-prefs-watcher",H)})}var kB=200,SA=250,IA;var X7=k(()=>{FB();IA=["primary","success","info"]});function yB(){return nf()[Wz]===!0}var Wz="experimental.dispatcher";var zq=k(()=>{pY()});import{randomUUID as uA}from"crypto";function jJ(f){return`engineCommand.${f}`}function WJ(f){return`engineName.${f}`}function Vz(f){return kf(WJ(f))?.trim()||bB[f]||f}function BX(f){return pf(f??"claude").defaultCommand}function EA(f){let J=[],Y=/"([^"]*)"|'([^']*)'|(\S+)/g;for(let z=Y.exec(f);z!==null;z=Y.exec(f))J.push(z[1]??z[2]??z[3]??"");return J}function N1(f,J){let Y=f??"claude",z=kf(jJ(Y))?.trim(),G=(()=>{if(z){let X=EA(z);if(X.length>0)return X}return BX(Y)})();return xA(G,Y,J)}function xA(f,J,Y){let z=Y?.trim();if(!z)return f;let G=J??"claude";if(!pf(G).effortLevels?.includes(z))return f;if(G==="codex")return[...f,"-c",`model_reasoning_effort=${z}`];return f}function pz(f,J){if((J??"claude")!=="claude")return{argv:f,sessionId:null};if(f.some((z)=>wA.has(z)))return{argv:f,sessionId:null};let Y=uA();return{argv:[...f,"--session-id",Y],sessionId:Y}}function Kz(){let f=(J)=>/^[A-Za-z0-9_/.:=-]+$/.test(J)?J:`'${J.replace(/'/g,"'\\''")}'`;try{return[...Cf(),"api"].map(f).join(" ")}catch{return"kobe api"}}function hA(f,J=Kz()){return[`You are running inside kobe (a local multi-session task manager) as task ${f}.`,"kobe tracks a lifecycle status for this task on a board.","When you have COMPLETED the work requested in this session and verified it, report it by running:",` ${J} set-status --task-id ${f} --status in_review`,"Run it only when the work is genuinely done \u2014 never while you are asking the user a question, waiting for input, or mid-task.","Never set any other status value; everything beyond in_review is the user's decision."].join(`
|
|
47
|
+
`)}function PA(f,J=Kz()){return["kobe shares hard-won discoveries between its parallel sessions as one-line field notes.","When you RESOLVE a non-obvious, repo-level gotcha (a build flag, a flaky test, an environment quirk, an API trap), file it:",` ${J} note --task-id ${f} --text "<one line: the verified conclusion>"`,"File only verified conclusions another session could act on \u2014 never progress logs, opinions, or details specific to your own task. A handful per session at most."].join(`
|
|
48
|
+
`)}function vA(f,J=Kz(),Y={}){let z=[];if((Y.status??_Z)())z.push(hA(f,J));if((Y.notes??yB)())z.push(PA(f,J));return z.length>0?z.join(`
|
|
49
|
+
|
|
50
|
+
`):null}function Gq(f,J,Y,z={}){if(!Y)return f;if((J??"claude")!=="claude")return f;if(f.includes("--append-system-prompt")||f.includes("--append-system-prompt-file"))return f;let G=vA(Y,Kz(),z);if(!G)return f;return[...f,"--append-system-prompt",G]}function mA(f,J=Kz()){return[`You are running inside kobe (a local multi-session task manager) as this repository's DISPATCHER (task ${f}, the repo's main session).`,"kobe runs multiple worktree task sessions on this repo in parallel. When one of them resolves a non-obvious gotcha, it files a one-line field note; kobe forwards each note to you as a user message prefixed with [KOBE FIELD NOTE].","Your job is routing that knowledge, fully autonomously \u2014 never ask the user for permission:",` - See the fleet: \`${J} collect --repo .\` (status, running, change counts per task), or \`--task-ids id1,id2\` for specific tasks.`,` - Relay a note to a task that would benefit: \`${J} dispatch --task-id <id> --prompt "[dispatcher] FYI from <author task>: <note verbatim>"\`.`," - Relay to the in-flight tasks whose work plausibly touches the same area \u2014 and to nobody else. If no task benefits, do nothing."," - Never relay a note back to its author, never relay the same note to the same task twice, and keep relays verbatim with provenance \u2014 no summarizing, no embellishment.","Use ONLY the dispatch verb to message sessions \u2014 the `send` verb pastes via tmux and would spawn a DUPLICATE engine for web-hosted sessions. If dispatch fails, report the error in your own session and stop; do not fall back.","Take no action on merge conflicts between tasks \u2014 the board's conflict radar is display-only by design, and resolution timing belongs to the humans and the tasks themselves.","Never run git commands inside other tasks' worktrees."].join(`
|
|
51
|
+
`)}function Xq(f,J,Y,z=yB){if(!Y||!z())return f;if((J??"claude")!=="claude")return f;if(f.includes("--append-system-prompt")||f.includes("--append-system-prompt-file"))return f;return[...f,"--append-system-prompt",mA(Y)]}var bB,wA;var E1=k(()=>{aJ();MY();ZX();zq();Of();U1();bB=Object.fromEntries(dY.map((f)=>[f,pf(f).displayName]));wA=new Set(["--session-id","--resume","-r","--continue","-c","--from-pr"])});function _z(f){return Uz.includes(f)?f:"auto"}var Uz,Z7,_J="editor.kind",kY="editor.customCommand",Zq="auto";var qq=k(()=>{Uz=["auto","vim","nvim","nano","emacs","custom"],Z7=["nvim","vim","emacs","nano"]});function Lz(f){return f==="taskpanel"?"taskpanel":"chattab"}var oJ="settings.surface",Dz="chattab";function x1(f=process.env){return{...f,...SB}}var SB;var NY=k(()=>{SB={GIT_OPTIONAL_LOCKS:"0"}});async function oz(f,J,Y={}){if(!f)return{stdout:"",stderr:"worktreePath is required",status:-1};let z=(Y.execForPath??nJ)(f),G=Y.timeoutMs&&Y.timeoutMs>0?new AbortController:null,X=!1,q=G?setTimeout(()=>{X=!0,G.abort()},Y.timeoutMs):null,Q;try{Q=await z.run(["git",...J],{cwd:f,env:SB,signal:G?.signal})}catch(H){if(q)clearTimeout(q);return{stdout:"",stderr:H instanceof Error?H.message:String(H),status:-1}}if(q)clearTimeout(q);if(X&&Q.exitCode===-1&&!Q.stderr)return{stdout:Q.stdout,stderr:`git ${J.join(" ")} timed out after ${Y.timeoutMs}ms`,status:-1};return{stdout:Q.stdout,stderr:Q.stderr,status:Q.exitCode}}function cA(f,J){if(!f||!J||J.startsWith("/"))return null;let Y=J.split("/");if(Y.some((z)=>z===".."))return null;return`${f.replace(/\/+$/,"")}/${Y.filter(Boolean).join("/")}`}async function q7(f,J,Y={}){let z=cA(f,J);if(!z)return null;let G=(Y.execForPath??nJ)(f);try{return await G.readFile(z)}catch{return null}}var Qq=k(()=>{e1();NY()});import{statSync as nA}from"fs";async function jX(f,J){let Y=await oz(f,J,{timeoutMs:dA}),z=Y.status??-1;return{ok:z===0,stdout:Y.stdout,stderr:Y.stderr,code:z}}function lA(f){switch(f){case"M":return"modified";case"A":return"added";case"D":return"deleted";case"R":return"renamed";case"C":return"copied";case"T":return"type changed";case"U":return"unmerged";case"?":return"untracked";default:return"changed"}}function Q7(f){let J=new Map;if(!f)return J;let Y=f.split(/(?=^diff --git )/m);for(let z of Y){if(!z.startsWith("diff --git"))continue;let G=null,X=z.match(/^\+\+\+ b\/(.*)$/m);if(X&&X[1]!=="/dev/null")G=X[1];else{let q=z.match(/^diff --git a\/.* b\/(.*)$/m);if(q)G=q[1]}if(!G)continue;J.set(aA(G),z.endsWith(`
|
|
52
52
|
`)?z:`${z}
|
|
53
|
-
`)}return J}function
|
|
54
|
-
`:z==="t"?"\t":z)}async function
|
|
53
|
+
`)}return J}function aA(f){if(!(f.startsWith('"')&&f.endsWith('"')))return f;return f.slice(1,-1).replace(/\\([\\"nt])/g,(Y,z)=>z==="n"?`
|
|
54
|
+
`:z==="t"?"\t":z)}async function $A(f,J,Y){let z=Array(f.length),G=Math.max(1,Math.min(J,f.length)),X=0;async function q(){while(X<f.length){let Q=X++;z[Q]=await Y(f[Q],Q)}}return await Promise.all(Array.from({length:G},()=>q())),z}async function rA(f,J){let Y=await jX(f,["diff","--no-color","--no-index","--","/dev/null",J]);if(Y.stdout.trim())return Y.stdout.endsWith(`
|
|
55
55
|
`)?Y.stdout:`${Y.stdout}
|
|
56
|
-
`;return""}async function
|
|
57
|
-
`),M={files:U,raw:O};return Response.json(M)}var hA=15000,PA=8;var Q7=C(()=>{e1();Xq()});import{isAbsolute as dA}from"path";function B7(f){return typeof f==="string"&&f.length>0&&/^[A-Za-z0-9_-]+$/.test(f)}function lA(f){return typeof f==="string"&&f.length>0&&/^[A-Za-z0-9._-]+$/.test(f)&&!f.includes("..")}async function aA(f){let J=f.searchParams.get("worktreePath"),Y=f.searchParams.get("vendor")??"claude";if(!J||!dA(J))return Response.json({error:"worktreePath must be an absolute path"},{status:400});if(!B7(Y))return Response.json({error:"invalid vendor"},{status:400});try{let z=pf(Y).history,[G,Z]=await Promise.all([z.listSessionIdsForWorktree(J),z.latestTranscriptMtimeForWorktree(J)]);return Response.json({sessions:G,latestMtime:Z})}catch(z){return Response.json({error:z instanceof Error?z.message:String(z)},{status:500})}}async function $A(f){let J=f.searchParams.get("vendor")??"claude",Y=f.searchParams.get("sessionId");if(!B7(J))return Response.json({error:"invalid vendor"},{status:400});if(!lA(Y))return Response.json({error:"invalid sessionId"},{status:400});try{let z=await pf(J).history.readHistory(Y);return Response.json({messages:z})}catch(z){return Response.json({error:z instanceof Error?z.message:String(z)},{status:500})}}async function j7(f,J){if(J.pathname!==H7&&J.pathname!==iA)return null;if(f.method!=="GET")return Response.json({error:"method not allowed"},{status:405});return J.pathname===H7?aA(J):$A(J)}var H7="/api/history/sessions",iA="/api/history/messages";var W7=C(()=>{UY()});import{mkdir as rA,readFile as pA,writeFile as _A}from"fs/promises";import{join as V7}from"path";function K7(){return V7(ef(),"notes")}function U7(f){return typeof f==="string"&&f.length>0&&/^[A-Za-z0-9_-]+$/.test(f)}function D7(f){return V7(K7(),`${f}.md`)}async function sA(f){let J=f.searchParams.get("taskId");if(!U7(J))return Response.json({error:"invalid taskId"},{status:400});try{let Y="";try{Y=await pA(D7(J),"utf8")}catch(z){if(z.code!=="ENOENT")throw z}return Response.json({markdown:Y})}catch(Y){return Response.json({error:Y instanceof Error?Y.message:String(Y)},{status:500})}}async function tA(f){let J;try{J=await f.json()}catch{return Response.json({error:"invalid JSON body"},{status:400})}if(!U7(J.taskId))return Response.json({error:"invalid taskId"},{status:400});if(typeof J.markdown!=="string")return Response.json({error:"markdown must be a string"},{status:400});try{return await rA(K7(),{recursive:!0}),await _A(D7(J.taskId),J.markdown,"utf8"),Response.json({ok:!0})}catch(Y){return Response.json({error:Y instanceof Error?Y.message:String(Y)},{status:500})}}async function L7(f,J){if(J.pathname!==oA)return null;if(f.method==="GET")return sA(J);if(f.method==="PUT")return tA(f);return Response.json({error:"method not allowed"},{status:405})}var oA="/api/notes";var M7=C(()=>{lf()});var oz;var qq=C(()=>{oz={$schema:"https://opencode.ai/theme.json",defs:{darkBg:"#141413",darkBgRaised:"#1A1917",darkBgInset:"#2B2A27",darkBgMenu:"#33312E",darkBorderSubtle:"#2B2A27",darkBorder:"#3A3835",darkBorderActive:"#5C5853",darkText:"#EAE7DF",darkTextMuted:"#A9A39A",darkTextSubtle:"#6B665F",darkPrimary:"#CC785C",darkSecondary:"#D4967E",darkAccent:"#CC785C",darkAccentHover:"#E0AB96",darkRed:"#D47563",darkOrange:"#D97757",darkYellow:"#E8C96B",darkGreen:"#9ACA86",darkBlue:"#61AAF2",darkViolet:"#9B87F5",darkTerracotta:"#BF4D43",lightBg:"#FAF9F5",lightBgRaised:"#F0EEE6",lightBgInset:"#EAE7DF",lightBgMenu:"#E2DED4",lightBorderSubtle:"#EAE7DF",lightBorder:"#D9D5CC",lightBorderActive:"#A9A39A",lightText:"#1A1917",lightTextMuted:"#6B665F",lightTextSubtle:"#8D877D",lightPrimary:"#C96442",lightSecondary:"#B85F3D",lightAccent:"#CC785C",lightAccentHover:"#B85F3D",lightRed:"#A84B3A",lightOrange:"#C96442",lightYellow:"#8A6220",lightGreen:"#2E7C4C",lightBlue:"#207FDE",lightViolet:"#7B5BB6",lightTerracotta:"#BF4D43"},theme:{primary:{dark:"darkPrimary",light:"lightPrimary"},secondary:{dark:"darkSecondary",light:"lightSecondary"},accent:{dark:"darkAccent",light:"lightAccent"},error:{dark:"darkRed",light:"lightRed"},warning:{dark:"darkYellow",light:"lightYellow"},success:{dark:"darkGreen",light:"lightGreen"},info:{dark:"darkBlue",light:"lightBlue"},text:{dark:"darkText",light:"lightText"},textMuted:{dark:"darkTextMuted",light:"lightTextMuted"},background:{dark:"darkBg",light:"lightBg"},backgroundPanel:{dark:"darkBgRaised",light:"lightBgRaised"},backgroundElement:{dark:"darkBgInset",light:"lightBgInset"},backgroundMenu:{dark:"darkBgMenu",light:"lightBgMenu"},backgroundDialog:{dark:"darkBgRaised",light:"lightBgRaised"},border:{dark:"darkBorder",light:"lightBorder"},borderActive:{dark:"darkBorderActive",light:"lightBorderActive"},borderSubtle:{dark:"darkBorderSubtle",light:"lightBorderSubtle"},diffAdded:{dark:"darkGreen",light:"lightGreen"},diffRemoved:{dark:"darkRed",light:"lightRed"},diffContext:{dark:"darkTextMuted",light:"lightTextSubtle"},diffHunkHeader:{dark:"darkTextMuted",light:"lightTextSubtle"},diffHighlightAdded:{dark:"#B5E0A0",light:"#1F6638"},diffHighlightRemoved:{dark:"#E89180",light:"#8A3A2C"},diffAddedBg:{dark:"#1F2A1F",light:"#E5EEDF"},diffRemovedBg:{dark:"#2A1F1C",light:"#F5DAD3"},diffContextBg:{dark:"darkBgRaised",light:"lightBgRaised"},diffLineNumber:{dark:"darkTextSubtle",light:"lightTextSubtle"},diffAddedLineNumberBg:{dark:"#1A2419",light:"#D5E2CC"},diffRemovedLineNumberBg:{dark:"#241915",light:"#EBC8BE"},markdownText:{dark:"darkText",light:"lightText"},markdownHeading:{dark:"darkPrimary",light:"lightPrimary"},markdownLink:{dark:"darkAccent",light:"lightAccent"},markdownLinkText:{dark:"darkBlue",light:"lightBlue"},markdownCode:{dark:"darkSecondary",light:"lightSecondary"},markdownBlockQuote:{dark:"darkTextMuted",light:"lightTextMuted"},markdownEmph:{dark:"darkYellow",light:"lightYellow"},markdownStrong:{dark:"darkPrimary",light:"lightPrimary"},markdownHorizontalRule:{dark:"darkTextMuted",light:"lightTextMuted"},markdownListItem:{dark:"darkAccent",light:"lightAccent"},markdownListEnumeration:{dark:"darkBlue",light:"lightBlue"},markdownImage:{dark:"darkAccent",light:"lightAccent"},markdownImageText:{dark:"darkBlue",light:"lightBlue"},markdownCodeBlock:{dark:"darkText",light:"lightText"},markdownQuote:{dark:"darkTextMuted",light:"lightTextMuted"},syntaxComment:{dark:"darkTextSubtle",light:"lightTextSubtle"},syntaxKeyword:{dark:"darkPrimary",light:"lightPrimary"},syntaxFunction:{dark:"darkBlue",light:"lightBlue"},syntaxVariable:{dark:"darkText",light:"lightText"},syntaxString:{dark:"darkGreen",light:"lightGreen"},syntaxNumber:{dark:"darkOrange",light:"lightOrange"},syntaxType:{dark:"darkViolet",light:"lightViolet"},syntaxOperator:{dark:"darkSecondary",light:"lightSecondary"},syntaxPunctuation:{dark:"darkText",light:"lightText"},selectedListItemText:{dark:"darkBg",light:"lightBg"}}}});var sz;var Qq=C(()=>{sz={$schema:"https://opencode.ai/theme.json",defs:{darkStep1:"#0a0a0a",darkStep2:"#111111",darkStep3:"#181818",darkStep4:"#1f1f1f",darkStep5:"#2a2a2a",darkStep6:"#363636",darkStep7:"#444444",darkStep8:"#5a5a5a",darkStep9:"#7a7a7a",darkStep10:"#9a9a9a",darkStep11:"#909090",darkStep12:"#e8e8e8",darkAccent:"#7da5c8",darkAccentBright:"#9bc3e3",darkRed:"#e06c75",darkOrange:"#d6a668",darkGreen:"#7fd88f",darkCyan:"#7da5c8",darkYellow:"#d6a668",lightStep1:"#fafafa",lightStep2:"#f3f3f3",lightStep3:"#ececec",lightStep4:"#e2e2e2",lightStep5:"#d4d4d4",lightStep6:"#bdbdbd",lightStep7:"#9c9c9c",lightStep8:"#7c7c7c",lightStep9:"#5b5b5b",lightStep10:"#404040",lightStep11:"#6c6c6c",lightStep12:"#1a1a1a",lightAccent:"#3d6f9f",lightAccentBright:"#1a4f87",lightRed:"#c9343a",lightOrange:"#a06b1a",lightGreen:"#3d9a57",lightCyan:"#3d6f9f",lightYellow:"#a06b1a"},theme:{primary:{dark:"darkStep12",light:"lightStep12"},secondary:{dark:"darkAccentBright",light:"lightAccentBright"},accent:{dark:"darkAccent",light:"lightAccent"},error:{dark:"darkRed",light:"lightRed"},warning:{dark:"darkOrange",light:"lightOrange"},success:{dark:"darkGreen",light:"lightGreen"},info:{dark:"darkCyan",light:"lightCyan"},text:{dark:"darkStep12",light:"lightStep12"},textMuted:{dark:"darkStep11",light:"lightStep11"},background:{dark:"darkStep1",light:"lightStep1"},backgroundPanel:{dark:"darkStep2",light:"lightStep2"},backgroundElement:{dark:"darkStep3",light:"lightStep3"},backgroundMenu:{dark:"darkStep4",light:"lightStep4"},border:{dark:"darkStep6",light:"lightStep6"},borderActive:{dark:"darkStep8",light:"lightStep8"},borderSubtle:{dark:"darkStep4",light:"lightStep4"},diffAdded:{dark:"#7fd88f",light:"#3d9a57"},diffRemoved:{dark:"#e06c75",light:"#c9343a"},diffContext:{dark:"darkStep10",light:"lightStep10"},diffHunkHeader:{dark:"darkStep10",light:"lightStep10"},diffHighlightAdded:{dark:"#9be5ad",light:"#2d7a3f"},diffHighlightRemoved:{dark:"#f08490",light:"#a82530"},diffAddedBg:{dark:"#15241a",light:"#d8efdc"},diffRemovedBg:{dark:"#2a1518",light:"#f5dadc"},diffContextBg:{dark:"darkStep2",light:"lightStep2"},diffLineNumber:{dark:"darkStep9",light:"lightStep9"},diffAddedLineNumberBg:{dark:"#0f1c14",light:"#c5deca"},diffRemovedLineNumberBg:{dark:"#221012",light:"#e5c5c8"},markdownText:{dark:"darkStep12",light:"lightStep12"},markdownHeading:{dark:"darkStep12",light:"lightStep12"},markdownLink:{dark:"darkAccent",light:"lightAccent"},markdownCode:{dark:"darkAccentBright",light:"lightAccentBright"},markdownCodeBlock:{dark:"darkStep12",light:"lightStep12"},markdownQuote:{dark:"darkStep11",light:"lightStep11"},selectedListItemText:{dark:"darkStep1",light:"lightStep1"}}}});var tz;var Hq=C(()=>{tz={$schema:"https://opencode.ai/theme.json",defs:{background:"#282a36",currentLine:"#44475a",selection:"#44475a",foreground:"#f8f8f2",comment:"#6272a4",cyan:"#8be9fd",green:"#50fa7b",orange:"#ffb86c",pink:"#ff79c6",purple:"#bd93f9",red:"#ff5555",yellow:"#f1fa8c"},theme:{primary:{dark:"purple",light:"purple"},secondary:{dark:"pink",light:"pink"},accent:{dark:"cyan",light:"cyan"},error:{dark:"red",light:"red"},warning:{dark:"yellow",light:"yellow"},success:{dark:"green",light:"green"},info:{dark:"orange",light:"orange"},text:{dark:"foreground",light:"#282a36"},textMuted:{dark:"comment",light:"#6272a4"},background:{dark:"#282a36",light:"#f8f8f2"},backgroundPanel:{dark:"#21222c",light:"#e8e8e2"},backgroundElement:{dark:"currentLine",light:"#d8d8d2"},border:{dark:"currentLine",light:"#c8c8c2"},borderActive:{dark:"purple",light:"purple"},borderSubtle:{dark:"#191a21",light:"#e0e0e0"},diffAdded:{dark:"green",light:"green"},diffRemoved:{dark:"red",light:"red"},diffContext:{dark:"comment",light:"#6272a4"},diffHunkHeader:{dark:"comment",light:"#6272a4"},diffHighlightAdded:{dark:"green",light:"green"},diffHighlightRemoved:{dark:"red",light:"red"},diffAddedBg:{dark:"#1a3a1a",light:"#e0ffe0"},diffRemovedBg:{dark:"#3a1a1a",light:"#ffe0e0"},diffContextBg:{dark:"#21222c",light:"#e8e8e2"},diffLineNumber:{dark:"#989aa4",light:"#686865"},diffAddedLineNumberBg:{dark:"#1a3a1a",light:"#e0ffe0"},diffRemovedLineNumberBg:{dark:"#3a1a1a",light:"#ffe0e0"},markdownText:{dark:"foreground",light:"#282a36"},markdownHeading:{dark:"purple",light:"purple"},markdownLink:{dark:"cyan",light:"cyan"},markdownLinkText:{dark:"pink",light:"pink"},markdownCode:{dark:"green",light:"green"},markdownBlockQuote:{dark:"comment",light:"#6272a4"},markdownEmph:{dark:"yellow",light:"yellow"},markdownStrong:{dark:"orange",light:"orange"},markdownHorizontalRule:{dark:"comment",light:"#6272a4"},markdownListItem:{dark:"purple",light:"purple"},markdownListEnumeration:{dark:"cyan",light:"cyan"},markdownImage:{dark:"cyan",light:"cyan"},markdownImageText:{dark:"pink",light:"pink"},markdownCodeBlock:{dark:"foreground",light:"#282a36"},syntaxComment:{dark:"comment",light:"#6272a4"},syntaxKeyword:{dark:"pink",light:"pink"},syntaxFunction:{dark:"green",light:"green"},syntaxVariable:{dark:"foreground",light:"#282a36"},syntaxString:{dark:"yellow",light:"yellow"},syntaxNumber:{dark:"purple",light:"purple"},syntaxType:{dark:"cyan",light:"cyan"},syntaxOperator:{dark:"pink",light:"pink"},syntaxPunctuation:{dark:"foreground",light:"#282a36"}}}});var ez;var Bq=C(()=>{ez={$schema:"https://opencode.ai/theme.json",defs:{nord0:"#2E3440",nord1:"#3B4252",nord2:"#434C5E",nord3:"#4C566A",nord4:"#D8DEE9",nord5:"#E5E9F0",nord6:"#ECEFF4",nord7:"#8FBCBB",nord8:"#88C0D0",nord9:"#81A1C1",nord10:"#5E81AC",nord11:"#BF616A",nord12:"#D08770",nord13:"#EBCB8B",nord14:"#A3BE8C",nord15:"#B48EAD"},theme:{primary:{dark:"nord8",light:"nord10"},secondary:{dark:"nord9",light:"nord9"},accent:{dark:"nord7",light:"nord7"},error:{dark:"nord11",light:"nord11"},warning:{dark:"nord12",light:"nord12"},success:{dark:"nord14",light:"nord14"},info:{dark:"nord8",light:"nord10"},text:{dark:"nord6",light:"nord0"},textMuted:{dark:"#8B95A7",light:"nord1"},background:{dark:"nord0",light:"nord6"},backgroundPanel:{dark:"nord1",light:"nord5"},backgroundElement:{dark:"nord2",light:"nord4"},border:{dark:"nord2",light:"nord3"},borderActive:{dark:"nord3",light:"nord2"},borderSubtle:{dark:"nord2",light:"nord3"},diffAdded:{dark:"nord14",light:"nord14"},diffRemoved:{dark:"nord11",light:"nord11"},diffContext:{dark:"#8B95A7",light:"nord3"},diffHunkHeader:{dark:"#8B95A7",light:"nord3"},diffHighlightAdded:{dark:"nord14",light:"nord14"},diffHighlightRemoved:{dark:"nord11",light:"nord11"},diffAddedBg:{dark:"#3B4252",light:"#E5E9F0"},diffRemovedBg:{dark:"#3B4252",light:"#E5E9F0"},diffContextBg:{dark:"nord1",light:"nord5"},diffLineNumber:{dark:"#a9aeb6",light:"textMuted"},diffAddedLineNumberBg:{dark:"#3B4252",light:"#E5E9F0"},diffRemovedLineNumberBg:{dark:"#3B4252",light:"#E5E9F0"},markdownText:{dark:"nord4",light:"nord0"},markdownHeading:{dark:"nord8",light:"nord10"},markdownLink:{dark:"nord9",light:"nord9"},markdownLinkText:{dark:"nord7",light:"nord7"},markdownCode:{dark:"nord14",light:"nord14"},markdownBlockQuote:{dark:"#8B95A7",light:"nord3"},markdownEmph:{dark:"nord12",light:"nord12"},markdownStrong:{dark:"nord13",light:"nord13"},markdownHorizontalRule:{dark:"#8B95A7",light:"nord3"},markdownListItem:{dark:"nord8",light:"nord10"},markdownListEnumeration:{dark:"nord7",light:"nord7"},markdownImage:{dark:"nord9",light:"nord9"},markdownImageText:{dark:"nord7",light:"nord7"},markdownCodeBlock:{dark:"nord4",light:"nord0"},syntaxComment:{dark:"#8B95A7",light:"nord3"},syntaxKeyword:{dark:"nord9",light:"nord9"},syntaxFunction:{dark:"nord8",light:"nord8"},syntaxVariable:{dark:"nord7",light:"nord7"},syntaxString:{dark:"nord14",light:"nord14"},syntaxNumber:{dark:"nord15",light:"nord15"},syntaxType:{dark:"nord7",light:"nord7"},syntaxOperator:{dark:"nord9",light:"nord9"},syntaxPunctuation:{dark:"nord4",light:"nord0"}}}});var fG;var jq=C(()=>{fG={$schema:"https://opencode.ai/theme.json",defs:{darkStep1:"#161616",darkStep2:"#1f1f1f",darkStep3:"#282828",darkStep4:"#323232",darkStep5:"#3c3c3c",darkStep6:"#484848",darkStep7:"#545454",darkStep8:"#6a6a6a",darkStep9:"#fab283",darkStep10:"#ffc09f",darkStep11:"#808080",darkStep12:"#eeeeee",darkSecondary:"#5c9cf5",darkAccent:"#7da5c8",darkRed:"#e06c75",darkOrange:"#f5a742",darkGreen:"#7fd88f",darkCyan:"#56b6c2",darkYellow:"#e5c07b",lightStep1:"#ffffff",lightStep2:"#fafafa",lightStep3:"#f5f5f5",lightStep4:"#ebebeb",lightStep5:"#e1e1e1",lightStep6:"#d4d4d4",lightStep7:"#b8b8b8",lightStep8:"#a0a0a0",lightStep9:"#3b7dd8",lightStep10:"#2968c3",lightStep11:"#8a8a8a",lightStep12:"#1a1a1a",lightSecondary:"#7b5bb6",lightAccent:"#3d6f9f",lightRed:"#d1383d",lightOrange:"#d68c27",lightGreen:"#3d9a57",lightCyan:"#318795",lightYellow:"#b0851f"},theme:{primary:{dark:"darkStep9",light:"lightStep9"},secondary:{dark:"darkSecondary",light:"lightSecondary"},accent:{dark:"darkAccent",light:"lightAccent"},error:{dark:"darkRed",light:"lightRed"},warning:{dark:"darkOrange",light:"lightOrange"},success:{dark:"darkGreen",light:"lightGreen"},info:{dark:"darkCyan",light:"lightCyan"},text:{dark:"darkStep12",light:"lightStep12"},textMuted:{dark:"darkStep11",light:"lightStep11"},background:{dark:"darkStep1",light:"lightStep1"},backgroundPanel:{dark:"darkStep2",light:"lightStep2"},backgroundElement:{dark:"darkStep3",light:"lightStep3"},border:{dark:"darkStep7",light:"lightStep7"},borderActive:{dark:"darkStep8",light:"lightStep8"},borderSubtle:{dark:"darkStep6",light:"lightStep6"},diffAdded:{dark:"#4fd6be",light:"#1e725c"},diffRemoved:{dark:"#c53b53",light:"#c53b53"},diffContext:{dark:"#828bb8",light:"#7086b5"},diffHunkHeader:{dark:"#828bb8",light:"#7086b5"},diffHighlightAdded:{dark:"#b8db87",light:"#4db380"},diffHighlightRemoved:{dark:"#e26a75",light:"#f52a65"},diffAddedBg:{dark:"#20303b",light:"#d5e5d5"},diffRemovedBg:{dark:"#37222c",light:"#f7d8db"},diffContextBg:{dark:"darkStep2",light:"lightStep2"},diffLineNumber:{dark:"#8f8f8f",light:"#595959"},diffAddedLineNumberBg:{dark:"#1b2b34",light:"#c5d5c5"},diffRemovedLineNumberBg:{dark:"#2d1f26",light:"#e7c8cb"},markdownText:{dark:"darkStep12",light:"lightStep12"},markdownHeading:{dark:"darkAccent",light:"lightAccent"},markdownLink:{dark:"darkStep9",light:"lightStep9"},markdownLinkText:{dark:"darkCyan",light:"lightCyan"},markdownCode:{dark:"darkGreen",light:"lightGreen"},markdownBlockQuote:{dark:"darkYellow",light:"lightYellow"},markdownEmph:{dark:"darkYellow",light:"lightYellow"},markdownStrong:{dark:"darkOrange",light:"lightOrange"},markdownHorizontalRule:{dark:"darkStep11",light:"lightStep11"},markdownListItem:{dark:"darkStep9",light:"lightStep9"},markdownListEnumeration:{dark:"darkCyan",light:"lightCyan"},markdownImage:{dark:"darkStep9",light:"lightStep9"},markdownImageText:{dark:"darkCyan",light:"lightCyan"},markdownCodeBlock:{dark:"darkStep12",light:"lightStep12"},syntaxComment:{dark:"darkStep11",light:"lightStep11"},syntaxKeyword:{dark:"darkAccent",light:"lightAccent"},syntaxFunction:{dark:"darkStep9",light:"lightStep9"},syntaxVariable:{dark:"darkRed",light:"lightRed"},syntaxString:{dark:"darkGreen",light:"lightGreen"},syntaxNumber:{dark:"darkOrange",light:"lightOrange"},syntaxType:{dark:"darkYellow",light:"lightYellow"},syntaxOperator:{dark:"darkCyan",light:"lightCyan"},syntaxPunctuation:{dark:"darkStep12",light:"lightStep12"}}}});var JG;var Wq=C(()=>{JG={$schema:"https://opencode.ai/theme.json",defs:{darkBg0:"#111c18",darkBg1:"#1a2520",darkBg2:"#23372B",darkBg3:"#3d4a44",darkFg0:"#C1C497",darkFg1:"#9aa88a",darkGray:"#53685B",darkRed:"#FF5345",darkGreen:"#549e6a",darkYellow:"#459451",darkBlue:"#509475",darkMagenta:"#D2689C",darkCyan:"#2DD5B7",darkWhite:"#F6F5DD",darkRedBright:"#db9f9c",darkGreenBright:"#63b07a",darkYellowBright:"#E5C736",darkBlueBright:"#ACD4CF",darkMagentaBright:"#75bbb3",darkCyanBright:"#8CD3CB",lightBg0:"#F6F5DD",lightBg1:"#E8E7CC",lightBg2:"#D5D4B8",lightBg3:"#A8A78C",lightFg0:"#111c18",lightFg1:"#1a2520",lightGray:"#53685B",lightRed:"#c7392d",lightGreen:"#3d7a52",lightYellow:"#b5a020",lightBlue:"#3d7560",lightMagenta:"#a8527a",lightCyan:"#1faa90"},theme:{primary:{dark:"darkCyan",light:"lightCyan"},secondary:{dark:"darkMagenta",light:"lightMagenta"},accent:{dark:"darkGreen",light:"lightGreen"},error:{dark:"darkRed",light:"lightRed"},warning:{dark:"darkYellowBright",light:"lightYellow"},success:{dark:"darkGreen",light:"lightGreen"},info:{dark:"darkCyan",light:"lightCyan"},text:{dark:"darkFg0",light:"lightFg0"},textMuted:{dark:"darkGray",light:"lightGray"},background:{dark:"darkBg0",light:"lightBg0"},backgroundPanel:{dark:"darkBg1",light:"lightBg1"},backgroundElement:{dark:"darkBg2",light:"lightBg2"},border:{dark:"darkBg3",light:"lightBg3"},borderActive:{dark:"darkCyan",light:"lightCyan"},borderSubtle:{dark:"darkBg2",light:"lightBg2"},diffAdded:{dark:"darkGreen",light:"lightGreen"},diffRemoved:{dark:"darkRed",light:"lightRed"},diffContext:{dark:"darkGray",light:"lightGray"},diffHunkHeader:{dark:"darkCyan",light:"lightCyan"},diffHighlightAdded:{dark:"darkGreenBright",light:"lightGreen"},diffHighlightRemoved:{dark:"darkRedBright",light:"lightRed"},diffAddedBg:{dark:"#15241c",light:"#e0eee5"},diffRemovedBg:{dark:"#241515",light:"#eee0e0"},diffContextBg:{dark:"darkBg1",light:"lightBg1"},diffLineNumber:{dark:"#828b87",light:"#5f5e4f"},diffAddedLineNumberBg:{dark:"#121f18",light:"#d5e5da"},diffRemovedLineNumberBg:{dark:"#1f1212",light:"#e5d5d5"},markdownText:{dark:"darkFg0",light:"lightFg0"},markdownHeading:{dark:"darkCyan",light:"lightCyan"},markdownLink:{dark:"darkCyanBright",light:"lightCyan"},markdownLinkText:{dark:"darkGreen",light:"lightGreen"},markdownCode:{dark:"darkGreenBright",light:"lightGreen"},markdownBlockQuote:{dark:"darkGray",light:"lightGray"},markdownEmph:{dark:"darkMagenta",light:"lightMagenta"},markdownStrong:{dark:"darkFg0",light:"lightFg0"},markdownHorizontalRule:{dark:"darkGray",light:"lightGray"},markdownListItem:{dark:"darkCyan",light:"lightCyan"},markdownListEnumeration:{dark:"darkCyanBright",light:"lightCyan"},markdownImage:{dark:"darkCyanBright",light:"lightCyan"},markdownImageText:{dark:"darkGreen",light:"lightGreen"},markdownCodeBlock:{dark:"darkFg0",light:"lightFg0"},syntaxComment:{dark:"darkGray",light:"lightGray"},syntaxKeyword:{dark:"darkCyan",light:"lightCyan"},syntaxFunction:{dark:"darkBlue",light:"lightBlue"},syntaxVariable:{dark:"darkFg0",light:"lightFg0"},syntaxString:{dark:"darkGreenBright",light:"lightGreen"},syntaxNumber:{dark:"darkMagenta",light:"lightMagenta"},syntaxType:{dark:"darkGreen",light:"lightGreen"},syntaxOperator:{dark:"darkYellow",light:"lightYellow"},syntaxPunctuation:{dark:"darkFg0",light:"lightFg0"}}}});var YG;var Vq=C(()=>{YG={$schema:"https://opencode.ai/theme.json",defs:{darkStep1:"#1a1b26",darkStep2:"#1e2030",darkStep3:"#222436",darkStep4:"#292e42",darkStep5:"#3b4261",darkStep6:"#545c7e",darkStep7:"#737aa2",darkStep8:"#9099b2",darkStep9:"#82aaff",darkStep10:"#89b4fa",darkStep11:"#828bb8",darkStep12:"#c8d3f5",darkRed:"#ff757f",darkOrange:"#ff966c",darkYellow:"#ffc777",darkGreen:"#c3e88d",darkCyan:"#86e1fc",darkPurple:"#c099ff",lightStep1:"#e1e2e7",lightStep2:"#d5d6db",lightStep3:"#c8c9ce",lightStep4:"#b9bac1",lightStep5:"#a8aecb",lightStep6:"#9699a8",lightStep7:"#737a8c",lightStep8:"#5a607d",lightStep9:"#2e7de9",lightStep10:"#1a6ce7",lightStep11:"#8990a3",lightStep12:"#3760bf",lightRed:"#f52a65",lightOrange:"#b15c00",lightYellow:"#8c6c3e",lightGreen:"#587539",lightCyan:"#007197",lightPurple:"#9854f1"},theme:{primary:{dark:"darkStep9",light:"lightStep9"},secondary:{dark:"darkPurple",light:"lightPurple"},accent:{dark:"darkOrange",light:"lightOrange"},error:{dark:"darkRed",light:"lightRed"},warning:{dark:"darkOrange",light:"lightOrange"},success:{dark:"darkGreen",light:"lightGreen"},info:{dark:"darkStep9",light:"lightStep9"},text:{dark:"darkStep12",light:"lightStep12"},textMuted:{dark:"darkStep11",light:"lightStep11"},background:{dark:"darkStep1",light:"lightStep1"},backgroundPanel:{dark:"darkStep2",light:"lightStep2"},backgroundElement:{dark:"darkStep3",light:"lightStep3"},border:{dark:"darkStep7",light:"lightStep7"},borderActive:{dark:"darkStep8",light:"lightStep8"},borderSubtle:{dark:"darkStep6",light:"lightStep6"},diffAdded:{dark:"#4fd6be",light:"#1e725c"},diffRemoved:{dark:"#c53b53",light:"#c53b53"},diffContext:{dark:"#828bb8",light:"#7086b5"},diffHunkHeader:{dark:"#828bb8",light:"#7086b5"},diffHighlightAdded:{dark:"#b8db87",light:"#4db380"},diffHighlightRemoved:{dark:"#e26a75",light:"#f52a65"},diffAddedBg:{dark:"#20303b",light:"#d5e5d5"},diffRemovedBg:{dark:"#37222c",light:"#f7d8db"},diffContextBg:{dark:"darkStep2",light:"lightStep2"},diffLineNumber:{dark:"#8f909a",light:"#59595b"},diffAddedLineNumberBg:{dark:"#1b2b34",light:"#c5d5c5"},diffRemovedLineNumberBg:{dark:"#2d1f26",light:"#e7c8cb"},markdownText:{dark:"darkStep12",light:"lightStep12"},markdownHeading:{dark:"darkPurple",light:"lightPurple"},markdownLink:{dark:"darkStep9",light:"lightStep9"},markdownLinkText:{dark:"darkCyan",light:"lightCyan"},markdownCode:{dark:"darkGreen",light:"lightGreen"},markdownBlockQuote:{dark:"darkYellow",light:"lightYellow"},markdownEmph:{dark:"darkYellow",light:"lightYellow"},markdownStrong:{dark:"darkOrange",light:"lightOrange"},markdownHorizontalRule:{dark:"darkStep11",light:"lightStep11"},markdownListItem:{dark:"darkStep9",light:"lightStep9"},markdownListEnumeration:{dark:"darkCyan",light:"lightCyan"},markdownImage:{dark:"darkStep9",light:"lightStep9"},markdownImageText:{dark:"darkCyan",light:"lightCyan"},markdownCodeBlock:{dark:"darkStep12",light:"lightStep12"},syntaxComment:{dark:"darkStep11",light:"lightStep11"},syntaxKeyword:{dark:"darkPurple",light:"lightPurple"},syntaxFunction:{dark:"darkStep9",light:"lightStep9"},syntaxVariable:{dark:"darkRed",light:"lightRed"},syntaxString:{dark:"darkGreen",light:"lightGreen"},syntaxNumber:{dark:"darkOrange",light:"lightOrange"},syntaxType:{dark:"darkYellow",light:"lightYellow"},syntaxOperator:{dark:"darkCyan",light:"lightCyan"},syntaxPunctuation:{dark:"darkStep12",light:"lightStep12"}}}});function SB(f,J,Y=[]){if(J===void 0)return null;if(typeof J!=="string")return SB(f,J.dark,Y);if(J==="transparent"||J==="none")return null;if(J.startsWith("#"))return J;if(Y.includes(J))return null;let z=f.defs?.[J]??f.theme[J];return SB(f,z,[...Y,J])}function bB(f){return Math.max(0,Math.min(255,Math.round(f)))}function BZ(f,J,Y){let z=Number.parseInt(f.slice(1),16),G=Number.parseInt(J.slice(1),16),Z=(Q,H)=>Q>>H&255;return`#${(bB(Z(z,16)+(Z(G,16)-Z(z,16))*Y)<<16|bB(Z(z,8)+(Z(G,8)-Z(z,8))*Y)<<8|bB(Z(z,0)+(Z(G,0)-Z(z,0))*Y)).toString(16).padStart(6,"0")}`}function qg(f){let J=(Q)=>SB(f,f.theme[Q]),Y=J("background"),z=J("text");if(!Y||!z)return null;let G=J("textMuted")??BZ(z,Y,0.35),Z=J("primary")??z,q=J("border")??BZ(z,Y,0.8);return{bg:Y,surface:J("backgroundPanel")??Y,inset:J("backgroundElement")??Y,menu:J("backgroundMenu")??J("backgroundElement")??Y,line:q,"line-subtle":J("borderSubtle")??q,"line-active":J("borderActive")??BZ(q,z,0.3),fg:z,muted:G,subtle:BZ(G,Y,0.35),primary:Z,"primary-hover":BZ(Z,z,0.35),"kobe-orange":Z,"kobe-green":J("success")??z,"kobe-blue":J("info")??z,"kobe-red":J("error")??z,"kobe-yellow":J("warning")??z,"kobe-violet":J("secondary")??Z}}function F7(f,J){if(J.pathname!==Hg)return null;if(f.method!=="GET")return Response.json({error:"method not allowed"},{status:405});return Response.json({themes:Qg})}var Xg,Qg,Hg="/api/themes";var O7=C(()=>{qq();Qq();Hq();Bq();jq();Wq();Vq();Xg={claude:oz,conductor:sz,dracula:tz,nord:ez,opencode:fG,"osaka-jade":JG,tokyonight:YG};Qg=Object.fromEntries(Object.entries(Xg).map(([f,J])=>[f,qg(J)]).filter((f)=>f[1]!==null))});import{createHash as Bg,randomUUID as jg}from"crypto";import{mkdir as Wg}from"fs/promises";import{join as IB,resolve as Vg}from"path";function Dg(f){return Bg("sha1").update(f).digest("hex").slice(0,16)}async function Fg(f){let J=Number.parseInt(f.headers.get("content-length")??"",10);if(Number.isFinite(J)&&J>A7)return Response.json({error:"asset too large"},{status:413});let Y;try{Y=await f.formData()}catch{return Response.json({error:"invalid form data"},{status:400})}let z=Y.get("repoRoot");if(typeof z!=="string"||z.length===0)return Response.json({error:"missing repoRoot"},{status:400});let G=Y.get("file");if(!(G instanceof File))return Response.json({error:"file must be a File"},{status:400});if(G.size>A7)return Response.json({error:"asset too large"},{status:413});let Z=Kg[G.type];if(!Z)return Response.json({error:`unsupported content-type: ${G.type||"unknown"}`},{status:415});try{let q=Dg(z),Q=IB(vQ(),q);await Wg(Q,{recursive:!0});let B=`${jg()}.${Z}`;return await Bun.write(IB(Q,B),G),Response.json({url:`${Kq}/${q}/${B}`})}catch(q){return Response.json({error:q instanceof Error?q.message:String(q)},{status:500})}}async function Og(f){let J=f.slice(Kq.length+1),Y=J.indexOf("/");if(Y<0)return Response.json({error:"not found"},{status:404});let z=J.slice(0,Y),G=J.slice(Y+1);if(!Lg.test(z)||!Mg.test(G))return Response.json({error:"invalid asset path"},{status:400});let Z=vQ(),q=Vg(Z,z,G);if(q!==IB(Z,z,G)||!q.startsWith(`${Z}/`))return Response.json({error:"invalid asset path"},{status:400});let Q=G.slice(G.lastIndexOf(".")+1).toLowerCase(),H=Ug[Q];if(!H)return Response.json({error:"invalid asset path"},{status:400});let B=Bun.file(q);if(!await B.exists())return Response.json({error:"not found"},{status:404});return new Response(B,{headers:{"content-type":H,"cache-control":"public, max-age=31536000, immutable","x-content-type-options":"nosniff"}})}async function g7(f,J){if(J.pathname===Kq){if(f.method==="POST")return Fg(f);return Response.json({error:"method not allowed"},{status:405})}if(J.pathname.startsWith(`${Kq}/`)){if(f.method==="GET")return Og(J.pathname);return Response.json({error:"method not allowed"},{status:405})}return null}var Kq="/api/issue-assets",A7=10485760,Kg,Ug,Lg,Mg;var R7=C(()=>{lf();Kg={"image/png":"png","image/jpeg":"jpg","image/gif":"gif","image/webp":"webp"},Ug={png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",webp:"image/webp"};Lg=/^[a-f0-9]{16}$/,Mg=/^[A-Za-z0-9_-]+\.[a-z0-9]+$/});function C7(f,J=500){return Response.json({error:f instanceof Error?f.message:String(f)},{status:J})}function k7(f){let J=f instanceof Error?f.message:String(f);if(/^no issue #\d+$/.test(J))return 404;if(J==="repoRoot is required"||J==="repoRoot does not exist"||J==="repoRoot is not a git repository"||J==="missing op"||J==="create requires a non-empty title"||J==="body must be a string"||J==="setStatus requires a numeric id"||J.startsWith("invalid status:")||J==="update requires a numeric id"||J==="title must be a non-empty string"||J==="link requires a numeric id"||J==="link requires a non-empty taskId"||J==="unlink requires a numeric id"||J==="delete requires a numeric id"||J.startsWith("unknown op type:"))return 400;return 500}async function Ag(f,J){let Y=J.searchParams.get("repoRoot");if(!Y)return Response.json({error:"missing repoRoot"},{status:400});try{return Response.json(await f.request("issue.list",{repoRoot:Y}))}catch(z){return C7(z,k7(z))}}async function gg(f,J){let Y;try{Y=await J.json()}catch{return Response.json({error:"invalid JSON body"},{status:400})}if(Y===null||typeof Y!=="object"||Array.isArray(Y))return Response.json({error:"body must be a JSON object"},{status:400});let z=Y;if(typeof z.repoRoot!=="string"||z.repoRoot.length===0)return Response.json({error:"missing repoRoot"},{status:400});try{return Response.json(await f.request("issue.mutate",{repoRoot:z.repoRoot,op:z.op}))}catch(G){return C7(G,k7(G))}}async function N7(f,J,Y){if(J.pathname!=="/api/issues")return null;if(f.method==="GET")return Ag(Y,J);if(f.method==="POST")return gg(Y,f);return Response.json({error:"method not allowed"},{status:405})}function y7(f){return Rg.has(String(f??"").trim().toLowerCase())}function b7(f){try{if(!f)return null;let J=new URL(f);if(J.protocol!=="http:"&&J.protocol!=="https:")return null;return J.hostname}catch{return null}}function Cg(f){let J=b7(f);return J!==null&&y7(J)}function S7(f,J={}){if(!f)return!0;if(Cg(f))return!0;let Y=J.allowedHost?.trim();if(!Y)return!1;let z=b7(f);return z!==null&&z===Y}function I7(f){let J=String(f??"").trim();return J&&!y7(J)?J:void 0}var Rg;var T7=C(()=>{Rg=new Set(["localhost","127.0.0.1","::1","[::1]"])});var kg,u7;var E7=C(()=>{kg=["daemon.status","task.list","task.get","task.create","task.archive","task.rename","task.setBranch","task.setVendor","task.delete","task.pin","task.move","task.status","task.reorder","task.ensureMain","task.ensureWorktree","task.setActive","worktree.discoverAdoptable","worktree.adopt"],u7=new Set(kg)});var TB={};jf(TB,{resolveRepoInit:()=>h7,resolveEngineLaunchInit:()=>_J});import{existsSync as w7,readFileSync as Ng}from"fs";import{join as Uq}from"path";function bg(f){return w7(Uq(f,x7))?`sh ${x7}`:void 0}function Sg(f){let J=Uq(f,yg);if(!w7(J))return;try{let Y=Ng(J,"utf8");return Y.trim().length>0?Y:void 0}catch{return}}function h7(f,J){let Y=f?oQ(f):{},z=bg(J)??Y.initScript,G=Sg(J)??Y.initPrompt;return{initScript:z&&z.trim().length>0?z:void 0,initPrompt:G&&G.trim().length>0?G:void 0}}function Ig(f,J){if(f.kind==="none")return;if(f.kind==="explicit")return{source:"explicit",text:f.prompt};let Y=J.initPrompt?.trim();return Y?{source:"repo-init",text:Y}:void 0}function _J(f,J,Y={kind:"repo-init"}){let z=h7(f,J);return{initScript:z.initScript,firstMessage:Ig(Y,z)}}var x7,yg;var zG=C(()=>{gf();x7=Uq(".kobe","init.sh"),yg=Uq(".kobe","init-prompt.md")});import{existsSync as P7,readFileSync as Tg}from"fs";function v7(){Wz=null}function ug(){let f=z9();if(P7(f))return{canonical:f,found:f};let J=f.replace(/\.yaml$/,".yml");if(P7(J))return{canonical:f,found:J};return{canonical:f,found:null}}function Dq(){if(Wz)return Wz;let{canonical:f,found:J}=ug();if(!J)return Wz={path:f,exists:!1,doc:null,warnings:[]},Wz;let Y=[],z=null;try{let G=Tg(J,"utf8");z=Bun.YAML.parse(G)}catch(G){let Z=G instanceof Error?G.message:String(G);Y.push(`could not read/parse ${J}: ${Z}`)}return Wz={path:f,exists:!0,doc:z,warnings:Y},Wz}var Wz=null;var uB=C(()=>{lf()});function GG(f,J){let Y=`alternating [${f}, ${J}] pairs`;return{layout:Y,validateCount:(z)=>z>=2&&z%2===0?null:`needs ${Y} (an even number of chords \u2014 got ${z})`}}function mg(f,J){let Y=f.trim().toLowerCase();if(!Y)return{error:"empty chord"};let z=Y.split("+"),G=z.pop()??"";if(G===""&&z.length>0){if(G="+",z[z.length-1]==="")z.pop()}if(!G)return{error:`"${f}": no key after the modifiers`};let Z=new Set;for(let H of z){let B=wg[H];if(!B)return{error:`"${f}": unknown modifier "${H}" (use ctrl / cmd / alt / shift)`};Z.add(B)}if(G=hg[G]??G,Z.has("shift")&&G.length===1&&!J?.allowShiftCharacter)return{error:`"${f}": shift+<character> can never match \u2014 terminals deliver shift+letter as a plain character, not a modifier event`};let q=vg.filter((H)=>Z.has(H)).join("+"),Q=q?`${q}+${G}`:G;if(G.length>1&&!Pg.has(G))return{chord:Q,warning:`"${f}": unrecognized key name "${G}" \u2014 the chord may never fire`};return{chord:Q}}function Lq(f){return typeof f==="object"&&f!==null&&!Array.isArray(f)}function cg(f){if(f==="darwin")return["darwin","macos","mac"];if(f==="win32")return["win32","windows"];return[f]}function ng(f){if(!Lq(f))return null;let J=f.bindings;if(Lq(J))return J;return f}function Mq(f,J,Y){let z=[];if(f===null||f===void 0)return{entries:[],warnings:z};if(!Lq(f))return{entries:[],warnings:["config root must be a YAML mapping (e.g. a top-level `bindings:` key)"]};let G=new Map,Z=[];if(f.bindings!==void 0)if(Lq(f.bindings))Z.push(f.bindings);else z.push("`bindings:` must be a mapping of id \u2192 chord(s)");for(let q of cg(J)){let Q=f[q];if(Q===void 0)continue;let H=ng(Q);if(H)Z.push(H);else z.push(`\`${q}:\` must be a mapping (or contain a \`bindings:\` mapping)`)}for(let q of Z)for(let[Q,H]of Object.entries(q)){if(H===null||H===!1||Array.isArray(H)&&H.length===0){G.set(Q,[]);continue}let B=typeof H==="string"?[H]:Array.isArray(H)?H:null;if(!B){z.push(`${Q}: expected a chord string, a list of chords, or null \u2014 got ${typeof H}`);continue}let V=[],j=!1;for(let U of B){if(typeof U!=="string"){z.push(`${Q}: chord entries must be strings`),j=!0;continue}let L=mg(U,Y?.chordOptsFor?.(Q));if("error"in L){z.push(`${Q}: ${L.error}`),j=!0;continue}if(L.warning)z.push(`${Q}: ${L.warning}`);if(!V.includes(L.chord))V.push(L.chord)}if(V.length===0&&j){z.push(`${Q}: no valid chords \u2014 keeping the default`);continue}G.set(Q,V)}return{entries:Array.from(G,([q,Q])=>({id:q,keys:Q})),warnings:z}}function dg(f,J){return f===J||f==="global"||J==="global"}function m7(f,J){let Y=[],z=[];for(let G of J){let Z=f.find((j)=>j.id===G.id);if(!Z){Y.push(`${G.id}: unknown binding id (press F1 in kobe for the full list)`);continue}let q=EB[G.id];if(q){Y.push(`${G.id}: not customizable \u2014 ${q}`);continue}if(Z.keys.length===0){Y.push(`${G.id}: not customizable \u2014 the key is handled outside the keymap (doc-only row)`);continue}let Q=Eg[G.id];if(Q&&G.keys.length>0){let j=Q.validateCount(G.keys.length);if(j){Y.push(`${G.id}: ${j} \u2014 keeping the default`);continue}}let H=G.keys.filter((j)=>{if(j.length===1&&xg.has(Z.scope))return Y.push(`${G.id}: "${j}" dropped \u2014 a bare character on a ${Z.scope}-scope binding would steal typed input (add a modifier)`),!1;return!0});if(H.length===0&&G.keys.length>0){Y.push(`${G.id}: no chords survived validation \u2014 keeping the default`);continue}if(Q&&H.length!==G.keys.length){Y.push(`${G.id}: a dropped chord would shift the slot layout (${Q.layout}) \u2014 keeping the default`);continue}let B=Z.keys,V=Z;if(V.keys=H,Z.hint)if(H.length===0)V.hint=void 0;else Z.hint.keys=H.join("/");z.push({id:G.id,keys:H,defaultKeys:B})}for(let G of z)for(let Z of G.keys){let q=f.find((Q)=>Q.id===G.id);if(!q)continue;for(let Q of f){if(Q.id===G.id)continue;if(!Q.keys.includes(Z))continue;if(!dg(q.scope,Q.scope))continue;Y.push(`${G.id}: "${Z}" also fires ${Q.id} (${Q.scope} scope) \u2014 last registration wins; consider a different chord`)}}return{applied:z,warnings:Y}}var EB,Eg,xg,wg,hg,Pg,vg;var Fq=C(()=>{EB={"focus.numeric":"pane focus is positional (h/j/k/l \u2192 pane) and mirrors the tmux-layer ctrl+hjkl bindings \u2014 rebind tmux.focus instead","sidebar.goto":"gg vs Shift+G is discriminated via evt.shift; shift+<letter> chords are inexpressible, so a rebind can't carry both halves","sidebar.pin":"fires on Shift+P via evt.shift; shift+<letter> chords are inexpressible, so a rebind can't work","sidebar.localMerge":"fires on Shift+M via evt.shift; shift+<letter> chords are inexpressible, so a rebind can't work","chat.question.nav":"the question picker has no live registration site (display-only row) \u2014 rebinding would change Help without changing behavior","chat.question.pick-number":"digits map to options positionally and the question picker has no live registration site (display-only row)"};Eg={"sidebar.nav":GG("down","up"),"files.nav":GG("down","up"),"sidebar.search.nav":GG("down","up"),"files.hierarchy":GG("collapse","expand"),"sidebar.view":GG("previous view","next view"),"files.tab":GG("previous tab","next tab")},xg=new Set(["global","workspace","terminal"]),wg={ctrl:"ctrl",control:"ctrl",ctl:"ctrl",cmd:"cmd",command:"cmd",meta:"cmd",super:"cmd",win:"cmd",alt:"alt",option:"alt",opt:"alt",shift:"shift"},hg={esc:"escape",spacebar:"space",pgup:"pageup",pgdn:"pagedown",pgdown:"pagedown"},Pg=new Set(["up","down","left","right","pageup","pagedown","home","end","insert","delete","backspace","tab","space","escape","enter","return",...Array.from({length:12},(f,J)=>`f${J+1}`)]),vg=["ctrl","cmd","alt","shift"]});function ZG(f){return f in c7}function Uz(f,J){let Y=f.split("+"),z=Y.pop()??"";if(z===""&&Y.length>0){if(z="+",Y[Y.length-1]==="")Y.pop()}let G=new Set(Y);if(G.has("cmd"))return{error:`"${f}": the Command key never reaches tmux \u2014 use ctrl/alt/shift`};let Z;if(z.length===1)Z=G.has("shift")?z.toUpperCase():z;else{let H=lg[z];if(!H)return{error:`"${f}": tmux can't bind the key "${z}"`};Z=H}let q=/^f\d+$/.test(z);if(G.size===0&&!q&&!J?.allowBare)return{error:`"${f}": tmux session keys are no-prefix root bindings live in every pane \u2014 a bare key would shadow typing (add a modifier, or use an F-key)`};let Q="";if(G.has("ctrl"))Q+="C-";if(G.has("alt"))Q+="M-";if(G.has("shift"))Q+="S-";return{key:Q+Z}}function d7(){let f={};for(let[Y,z]of Object.entries(Kz)){let G=Uz(z,{allowBare:ZG(Y)});if("error"in G)throw Error(`default tmux chord for ${Y} failed to translate: ${G.error}`);f[Y]={chord:z,key:G.key}}let J=RY.map((Y)=>{let z=Uz(Y);if("error"in z)throw Error(`default tmux focus chord ${Y} failed to translate`);return{chord:Y,key:z.key}});return{binds:f,focus:J,overridden:new Set,warnings:[]}}function xB(f){let J=d7(),Y=new Set;for(let z of f){if(!z.id.startsWith("tmux."))continue;if(z.id===SJ){if(z.keys.length===0){J.focus=[null,null,null,null],Y.add(SJ);continue}if(z.keys.length!==RY.length){J.warnings.push(`${SJ}: needs exactly 4 chords in order left/down/up/right (got ${z.keys.length}) \u2014 keeping the default`);continue}let Q=[],H=!0;for(let B of z.keys){let V=Uz(B);if("error"in V){J.warnings.push(`${SJ}: ${V.error} \u2014 keeping the default`),H=!1;break}Q.push({chord:B,key:V.key})}if(!H)continue;J.focus=Q,Y.add(SJ);continue}if(!(z.id in Kz)){J.warnings.push(`${z.id}: unknown tmux binding id`);continue}let G=z.id;if(z.keys.length===0){J.binds[G]=null,Y.add(G);continue}if(z.keys.length>1)J.warnings.push(`${G}: tmux bindings take ONE chord \u2014 using "${z.keys[0]}", ignoring the rest`);let Z=z.keys[0],q=Uz(Z,{allowBare:ZG(G)});if("error"in q){J.warnings.push(`${G}: ${q.error} \u2014 keeping the default`);continue}if(Z!==Kz[G])Y.add(G);J.binds[G]={chord:Z,key:q.key}}return J.overridden=Y,J}function wB(f){return f.startsWith("tmux.")?{allowShiftCharacter:!0}:{}}function i7(){Vz=null}function Oq(){if(Vz)return Vz;let f=Dq();if(!f.exists||f.doc===null)return Vz=d7(),Vz;let J=Mq(f.doc,process.platform,{chordOptsFor:wB}),Y=J.warnings.filter((G)=>G.startsWith("tmux.")),z=xB(J.entries);z.warnings=[...Y,...z.warnings];for(let G of z.warnings)console.warn(`[kobe/keybindings] ${G}`);return Vz=z,Vz}var ig,c7,n7,Kz,SJ="tmux.focus",RY,lg,Vz=null;var Aq=C(()=>{uB();Fq();ig={"tmux.detach":"ctrl+q","tmux.tab.new":"ctrl+t","tmux.tab.chooseEngine":"ctrl+shift+t","tmux.tab.prev":"ctrl+[","tmux.tab.next":"ctrl+]","tmux.tab.close":"ctrl+w","tmux.tab.rename":"f2"},c7={"tmux.layout.workspaceSplit":"s","tmux.layout.workspaceClose":"x","tmux.layout.workspaceReset":"r","tmux.layout.tasksToggle":"a","tmux.layout.opsToggle":"o","tmux.layout.terminalToggle":"z","tmux.layout.zenToggle":"space"},n7=["F6","F7","F8","F9","F10","F11"],Kz={...ig,...c7};RY=["ctrl+h","ctrl+j","ctrl+k","ctrl+l"],lg={up:"Up",down:"Down",left:"Left",right:"Right",pageup:"PgUp",pagedown:"PgDn",home:"Home",end:"End",insert:"IC",delete:"DC",backspace:"BSpace",tab:"Tab",space:"Space",escape:"Escape",enter:"Enter",return:"Enter",...Object.fromEntries(Array.from({length:12},(f,J)=>[`f${J+1}`,`F${J+1}`]))}});async function jZ(f,J){let Y=null;for(let G=0;G<24;G++){let Z=await az(f);if(Z){if(!J)return{pane:Z,ready:!0};let q=(await $z(Z)).trim();if(q.length>0&&q===Y)return{pane:Z,ready:!0};Y=q}await l7(250)}return{pane:await az(f)||await eH(f),ready:!1}}async function WZ(f,J){let Y=`kobe-api-${f.replace(/[^A-Za-z0-9]/g,"")}`;await v0(["set-buffer","-b",Y,"--",J]),await v0(["paste-buffer","-p","-d","-b",Y,"-t",f]),await l7(ag),await YZ(f,"Enter")}async function a7(f,J){let{pane:Y}=await jZ(f,!0);if(!Y)return;await WZ(Y,J.text)}var l7=(f)=>new Promise((J)=>setTimeout(J,f)),ag=150;var gq=C(()=>{Sf()});function $7(f,J){if(f===null)return{kind:"create",reason:"no session with this name \u2014 build fresh"};let Y=f.worktree===J.cwd,z=!J.vendor||f.vendor===J.vendor;if(f.claudePaneAlive&&Y&&z)return{kind:"reuse",reason:"healthy: engine pane alive, worktree + vendor match"};if(Y&&!z&&J.hasEngineCommand)return{kind:"respawn-engine",reason:`vendor drift: session tagged ${f.vendor===""?"<untagged>":`"${f.vendor}"`}, task wants "${J.vendor}" \u2014 relaunch engine pane in place (KOB-232)`};if(Y&&z&&f.windowCount>1)return{kind:"reuse",reason:"active window's engine pane is gone but sibling chat tabs exist \u2014 reuse rather than drop them"};if(!Y)return{kind:"rebuild",reason:f.worktree===""?"legacy session with no @kobe_worktree tag \u2014 rebuild in the right place":`worktree drift: session tagged "${f.worktree}", task wants "${J.cwd}" \u2014 rebuild`};if(!z)return{kind:"rebuild",reason:"vendor drift but no engine command to respawn with \u2014 rebuild"};return{kind:"rebuild",reason:"single-window session whose engine pane was destroyed \u2014 rebuild"}}var r7;var p7=C(()=>{qq();Qq();Hq();Bq();jq();Wq();Vq();r7={claude:oz,conductor:sz,nord:ez,opencode:fG,dracula:tz,tokyonight:YG,"osaka-jade":JG}});function $g(f){let J=/^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/.exec(f);if(!J)return null;let Y=J[1];if(Y.length===3){let[z,G,Z]=Y;return`#${z}${z}${G}${G}${Z}${Z}`.toLowerCase()}return`#${Y.slice(0,6)}`.toLowerCase()}function _7(f,J,Y="dark"){let z=f.defs??{};function G(q,Q){if(typeof q==="string"){if(q==="transparent"||q==="none")return null;if(q.startsWith("#"))return $g(q);if(Q.includes(q))return null;let B=z[q]??f.theme[q];if(B===void 0)return null;return G(B,[...Q,q])}if(!q||typeof q!=="object")return null;let H=q[Y];return typeof H==="string"?G(H,Q):null}let Z=f.theme[J];if(Z===void 0)return null;return G(Z,[J])}function Rq(f){return typeof f==="object"&&f!==null&&!Array.isArray(f)}function Cq(f){if(!Rq(f))return{ok:!1,reason:"theme must be a JSON object at the top level"};let J=f;if(!("theme"in J))return{ok:!1,reason:"missing required key `theme`"};let Y=J.theme;if(!Rq(Y))return{ok:!1,reason:"`theme` must be an object map"};if("defs"in J&&J.defs!==void 0){if(!Rq(J.defs))return{ok:!1,reason:"`defs` must be an object map"};for(let[z,G]of Object.entries(J.defs))if(typeof G!=="string")return{ok:!1,reason:`defs.${z} must be a string (hex like "#abc" or a ref name)`}}for(let[z,G]of Object.entries(Y)){if(typeof G==="string")continue;if(!Rq(G))return{ok:!1,reason:`theme.${z} must be a string or a { dark, light } object (got ${G===null?"null":Array.isArray(G)?"array":typeof G})`};let Z=G;if(typeof Z.dark!=="string")return{ok:!1,reason:`theme.${z}.dark must be a string`};if(typeof Z.light!=="string")return{ok:!1,reason:`theme.${z}.light must be a string`}}if("$schema"in J&&J.$schema!==void 0&&typeof J.$schema!=="string")return{ok:!1,reason:"`$schema` must be a string when present"};return{ok:!0,theme:J}}var hB=()=>{};import{readFileSync as rg,readdirSync as pg}from"fs";import{join as o7}from"path";function XG(){return o7(ef(),"themes")}function VZ(){let f=XG(),J;try{J=pg(f)}catch{return[]}let Y=[];for(let z of J){if(!z.endsWith(".json"))continue;let G=o7(f,z),Z;try{let H=rg(G,"utf8");Z=JSON.parse(H)}catch(H){let B=H instanceof Error?H.message:String(H);console.warn(`[kobe] skipping user theme ${G}: invalid JSON \u2014 ${B}`);continue}let q=Cq(Z);if(!q.ok){console.warn(`[kobe] skipping user theme ${G}: ${q.reason}`);continue}let Q=z.slice(0,-5);Y.push({name:Q,theme:q.theme})}return Y}var kq=C(()=>{lf();hB()});import{readFileSync as _g}from"fs";function sg(){try{let f=JSON.parse(_g(v1(),"utf8")),J=typeof f.activeTheme==="string"&&f.activeTheme?f.activeTheme:"claude",Y=typeof f.focusAccent==="string"&&og.includes(f.focusAccent)?f.focusAccent:"primary";return{themeName:J,focusAccentSlot:Y,enabled:f.tmuxChromeTheme!=="off"&&f.tmuxBorderTheme!=="off"}}catch{return{themeName:"claude",focusAccentSlot:"primary",enabled:!0}}}function tg(f){return VZ().find((Y)=>Y.name===f)?.theme??r7[f]??null}function VJ(f,...J){for(let Y of J){let z=_7(f,Y);if(z)return z}return null}function s7(f,J){let Y=VJ(f,"text"),z=VJ(f,"background"),G=VJ(f,"textMuted","text"),Z=VJ(f,"backgroundPanel","background"),q=VJ(f,"backgroundElement","backgroundPanel","background"),Q=VJ(f,"backgroundMenu","backgroundElement","backgroundPanel","background"),H=VJ(f,"selectedListItemText","background"),B=VJ(f,J,"primary","borderActive","border","text");return{border:VJ(f,"border","text"),activeBorder:B,statusBg:Z,statusFg:G,statusMutedFg:G,windowFg:G,currentWindowBg:q,currentWindowFg:B,activityFg:VJ(f,"info","primary","text"),bellFg:VJ(f,"warning","error","primary","text"),messageBg:Q,messageFg:Y,messageCommandFg:B,modeBg:B,modeFg:H??z}}function a1(f){let J=[];if(f.bg)J.push(`bg=${f.bg}`);if(f.fg)J.push(`fg=${f.fg}`);if(J.length===0)return null;if(f.attrs)J.push(...f.attrs);return J.join(",")}function e7(f){let J=a1({bg:f.statusBg,fg:f.statusFg}),Y=a1({bg:f.statusBg,fg:f.statusMutedFg}),z=a1({bg:f.statusBg,fg:f.windowFg});return[{key:"border",option:"pane-border-style",showFlag:"-gwqv",setFlag:"-gw",unsetFlag:"-gwu",value:a1({fg:f.border})},{key:"active",option:"pane-active-border-style",showFlag:"-gwqv",setFlag:"-gw",unsetFlag:"-gwu",value:a1({fg:f.activeBorder})},{key:"status",option:"status-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:J},{key:"status-left",option:"status-left-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Y},{key:"status-right",option:"status-right-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Y},{key:"window",option:"window-status-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:z},{key:"current-window",option:"window-status-current-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:a1({bg:f.currentWindowBg,fg:f.currentWindowFg,attrs:["bold"]})},{key:"activity-window",option:"window-status-activity-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:a1({bg:f.statusBg,fg:f.activityFg})},{key:"bell-window",option:"window-status-bell-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:a1({bg:f.statusBg,fg:f.bellFg,attrs:["bold"]})},{key:"last-window",option:"window-status-last-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:a1({bg:f.statusBg,fg:f.statusFg})},{key:"message",option:"message-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:a1({bg:f.messageBg,fg:f.messageFg})},{key:"message-command",option:"message-command-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:a1({bg:f.messageBg,fg:f.messageCommandFg,attrs:["bold"]})},{key:"mode",option:"mode-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:a1({bg:f.modeBg,fg:f.modeFg})},{key:"display-panes",option:"display-panes-colour",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:f.border},{key:"display-panes-active",option:"display-panes-active-colour",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:f.activeBorder}]}function eg(f){let J=new Set(f.marker.split(",").map((Z)=>Z.trim()).filter(Boolean)),Y=[],z=[];for(let Z of e7(f.hexes))if(Z.value){if((f.current[Z.key]??"")!==Z.value)Y.push(["set-option",Z.setFlag,Z.option,Z.value]);z.push(Z.key)}else if(J.has(Z.key))Y.push(["set-option",Z.unsetFlag,Z.option]);let G=z.join(",");if(G!==f.marker)Y.push(G?["set-option","-g",PB,G]:["set-option","-gu",PB]);return Y}async function t7(f){let{code:J,stdout:Y}=await a0(f);return J===0?Y.trim():""}async function Dz(){try{let f=sg(),J=f.enabled?tg(f.themeName):null,Y=J?s7(J,f.focusAccentSlot):s7({theme:{}},f.focusAccentSlot),z=e7(Y),[G,...Z]=await Promise.all([t7(["show-options","-gqv",PB]),...z.map((H)=>t7(["show-options",H.showFlag,H.option]))]),q=Object.fromEntries(z.map((H,B)=>[H.key,Z[B]??""])),Q=eg({marker:G,current:q,hexes:Y});if(Q.length>0)await hf(Q)}catch{}}var PB="@kobe_border_theme",og;var Nq=C(()=>{lf();Sf();p7();kq();og=["primary","success","info"]});var yq={};jf(yq,{recordGen:()=>CY,isLatestGen:()=>G5,genAgeMs:()=>XR,coalesceLayoutWork:()=>qR,RESIZE_GUARD_MS:()=>ZR,LAYOUT_COALESCE_MS:()=>Y5});import{createHash as fR,randomUUID as JR}from"crypto";import{mkdirSync as YR,readFileSync as f5,renameSync as zR,writeFileSync as GR}from"fs";import{join as J5}from"path";function z5(){return J5(ef(),"layout-coord")}function vB(f,J){let Y=fR("sha1").update(f).digest("hex").slice(0,16);return J5(z5(),`${Y}.${J}`)}function CY(f,J){let Y=JR();try{YR(z5(),{recursive:!0});let z=vB(f,J),G=`${z}.${Y}.tmp`;GR(G,`${Date.now()}
|
|
58
|
-
${Y}`),
|
|
59
|
-
`)[1]?.trim()===Y}catch{return!0}}function
|
|
60
|
-
`)[0]??"",10);return Number.isFinite(z)?Y-z:Number.POSITIVE_INFINITY}catch{return Number.POSITIVE_INFINITY}}async function
|
|
61
|
-
`)){let z=Y.trim();if(!z)continue;let[G,
|
|
62
|
-
`).map((B)=>B.split("\t")).filter((B)=>(B[0]?.trim()??"")!=="");if(z.length===0)return;if(z.some((B)=>B[5]?.trim()==="1"))return;if(z.some((B)=>(B[6]?.trim()??"")!==""))return;if(z.some((B)=>(B[7]?.trim()??"")!==""))return;let G=Number.parseInt(z[0][3]?.trim()??"",10),
|
|
63
|
-
`).map((z)=>z.split("\t")).filter((z)=>(z[0]?.trim()??"")!=="");if(J.length===0)return!1;if(J.some((z)=>z[1]?.trim()==="1"))return!1;if(J.some((z)=>(z[2]?.trim()??"")!==""))return!1;if(J.some((z)=>(z[3]?.trim()??"")!==""))return!1;let Y=new Set(J.map((z)=>z[0]?.trim()));return Y.has("tasks")&&Y.has("ops")}async function
|
|
64
|
-
`)
|
|
65
|
-
`)){let
|
|
66
|
-
`)
|
|
67
|
-
`).
|
|
68
|
-
`).
|
|
69
|
-
`).filter((z)=>z.trim().length>0).length}async function
|
|
70
|
-
`))
|
|
71
|
-
`)){let[
|
|
72
|
-
`)){let[Q,H]=
|
|
73
|
-
|
|
56
|
+
`;return""}async function H7(f,J){if(J.pathname!=="/api/diff")return null;if(f.method!=="GET")return Response.json({error:"method not allowed"},{status:405});let Y=J.searchParams.get("worktreePath");if(!Y)return Response.json({error:"missing worktreePath"},{status:400});let z;try{z=decodeURIComponent(Y)}catch{return Response.json({error:"invalid worktreePath encoding"},{status:400})}if(!z.startsWith("/"))return Response.json({error:"worktreePath must be an absolute path"},{status:400});if(!XZ(z))return Response.json({error:"worktreePath does not exist"},{status:400});if(!nJ(z).isRemote)try{if(!nA(z).isDirectory())return Response.json({error:"worktreePath is not a directory"},{status:400})}catch{return Response.json({error:"worktreePath does not exist"},{status:400})}let X=await jX(z,["rev-parse","--is-inside-work-tree"]);if(!X.ok||X.stdout.trim()!=="true")return Response.json({error:`not a git work tree: ${X.stderr.trim()||z}`},{status:500});let[q,Q,H]=await Promise.all([jX(z,["status","--porcelain=v1","-z","--untracked-files=all"]),jX(z,["diff","--no-color"]),jX(z,["diff","--no-color","--staged"])]);if(!q.ok)return Response.json({error:`git status failed: ${q.stderr.trim()}`},{status:500});let B=Q7(Q.stdout),V=Q7(H.stdout),j=q.stdout.split("\x00"),U=[],L=[];for(let R=0;R<j.length;R++){let S=j[R];if(!S)continue;let a=S[0]??" ",N=S[1]??" ",g=S.slice(3);if(!g)continue;if(a==="R"||a==="C"||N==="R"||N==="C")R++;let C=a==="?"&&N==="?",y=a!==" "&&a!=="?"?a:N,_=a!==" "&&a!=="?",z0="";if(C)L.push({fileIndex:U.length,path:g});else if(z0=V.get(g)??B.get(g)??"",V.has(g)&&B.has(g))z0=`${V.get(g)}${B.get(g)}`;U.push({path:g,status:C?"untracked":lA(y),staged:_,patch:z0})}if(L.length>0){let R=await $A(L,iA,(S)=>rA(z,S.path));for(let S=0;S<L.length;S++)U[L[S].fileIndex].patch=R[S]}U.sort((R,S)=>R.path.localeCompare(S.path));let O=[H.stdout,Q.stdout].filter(Boolean).join(`
|
|
57
|
+
`),M={files:U,raw:O};return Response.json(M)}var dA=15000,iA=8;var B7=k(()=>{e1();Qq()});import{isAbsolute as pA}from"path";function W7(f){return typeof f==="string"&&f.length>0&&/^[A-Za-z0-9_-]+$/.test(f)}function oA(f){return typeof f==="string"&&f.length>0&&/^[A-Za-z0-9._-]+$/.test(f)&&!f.includes("..")}async function sA(f){let J=f.searchParams.get("worktreePath"),Y=f.searchParams.get("vendor")??"claude";if(!J||!pA(J))return Response.json({error:"worktreePath must be an absolute path"},{status:400});if(!W7(Y))return Response.json({error:"invalid vendor"},{status:400});try{let z=pf(Y).history,[G,X]=await Promise.all([z.listSessionIdsForWorktree(J),z.latestTranscriptMtimeForWorktree(J)]);return Response.json({sessions:G,latestMtime:X})}catch(z){return Response.json({error:z instanceof Error?z.message:String(z)},{status:500})}}async function tA(f){let J=f.searchParams.get("vendor")??"claude",Y=f.searchParams.get("sessionId");if(!W7(J))return Response.json({error:"invalid vendor"},{status:400});if(!oA(Y))return Response.json({error:"invalid sessionId"},{status:400});try{let z=await pf(J).history.readHistory(Y);return Response.json({messages:z})}catch(z){return Response.json({error:z instanceof Error?z.message:String(z)},{status:500})}}async function V7(f,J){if(J.pathname!==j7&&J.pathname!==_A)return null;if(f.method!=="GET")return Response.json({error:"method not allowed"},{status:405});return J.pathname===j7?sA(J):tA(J)}var j7="/api/history/sessions",_A="/api/history/messages";var K7=k(()=>{MY()});import{mkdir as eA,readFile as fg,writeFile as Jg}from"fs/promises";import{join as U7}from"path";function D7(){return U7(ef(),"notes")}function L7(f){return typeof f==="string"&&f.length>0&&/^[A-Za-z0-9_-]+$/.test(f)}function M7(f){return U7(D7(),`${f}.md`)}async function zg(f){let J=f.searchParams.get("taskId");if(!L7(J))return Response.json({error:"invalid taskId"},{status:400});try{let Y="";try{Y=await fg(M7(J),"utf8")}catch(z){if(z.code!=="ENOENT")throw z}return Response.json({markdown:Y})}catch(Y){return Response.json({error:Y instanceof Error?Y.message:String(Y)},{status:500})}}async function Gg(f){let J;try{J=await f.json()}catch{return Response.json({error:"invalid JSON body"},{status:400})}if(!L7(J.taskId))return Response.json({error:"invalid taskId"},{status:400});if(typeof J.markdown!=="string")return Response.json({error:"markdown must be a string"},{status:400});try{return await eA(D7(),{recursive:!0}),await Jg(M7(J.taskId),J.markdown,"utf8"),Response.json({ok:!0})}catch(Y){return Response.json({error:Y instanceof Error?Y.message:String(Y)},{status:500})}}async function F7(f,J){if(J.pathname!==Yg)return null;if(f.method==="GET")return zg(J);if(f.method==="PUT")return Gg(f);return Response.json({error:"method not allowed"},{status:405})}var Yg="/api/notes";var O7=k(()=>{lf()});var sz;var Hq=k(()=>{sz={$schema:"https://opencode.ai/theme.json",defs:{darkBg:"#141413",darkBgRaised:"#1A1917",darkBgInset:"#2B2A27",darkBgMenu:"#33312E",darkBorderSubtle:"#2B2A27",darkBorder:"#3A3835",darkBorderActive:"#5C5853",darkText:"#EAE7DF",darkTextMuted:"#A9A39A",darkTextSubtle:"#6B665F",darkPrimary:"#CC785C",darkSecondary:"#D4967E",darkAccent:"#CC785C",darkAccentHover:"#E0AB96",darkRed:"#D47563",darkOrange:"#D97757",darkYellow:"#E8C96B",darkGreen:"#9ACA86",darkBlue:"#61AAF2",darkViolet:"#9B87F5",darkTerracotta:"#BF4D43",lightBg:"#FAF9F5",lightBgRaised:"#F0EEE6",lightBgInset:"#EAE7DF",lightBgMenu:"#E2DED4",lightBorderSubtle:"#EAE7DF",lightBorder:"#D9D5CC",lightBorderActive:"#A9A39A",lightText:"#1A1917",lightTextMuted:"#6B665F",lightTextSubtle:"#8D877D",lightPrimary:"#C96442",lightSecondary:"#B85F3D",lightAccent:"#CC785C",lightAccentHover:"#B85F3D",lightRed:"#A84B3A",lightOrange:"#C96442",lightYellow:"#8A6220",lightGreen:"#2E7C4C",lightBlue:"#207FDE",lightViolet:"#7B5BB6",lightTerracotta:"#BF4D43"},theme:{primary:{dark:"darkPrimary",light:"lightPrimary"},secondary:{dark:"darkSecondary",light:"lightSecondary"},accent:{dark:"darkAccent",light:"lightAccent"},error:{dark:"darkRed",light:"lightRed"},warning:{dark:"darkYellow",light:"lightYellow"},success:{dark:"darkGreen",light:"lightGreen"},info:{dark:"darkBlue",light:"lightBlue"},text:{dark:"darkText",light:"lightText"},textMuted:{dark:"darkTextMuted",light:"lightTextMuted"},background:{dark:"darkBg",light:"lightBg"},backgroundPanel:{dark:"darkBgRaised",light:"lightBgRaised"},backgroundElement:{dark:"darkBgInset",light:"lightBgInset"},backgroundMenu:{dark:"darkBgMenu",light:"lightBgMenu"},backgroundDialog:{dark:"darkBgRaised",light:"lightBgRaised"},border:{dark:"darkBorder",light:"lightBorder"},borderActive:{dark:"darkBorderActive",light:"lightBorderActive"},borderSubtle:{dark:"darkBorderSubtle",light:"lightBorderSubtle"},diffAdded:{dark:"darkGreen",light:"lightGreen"},diffRemoved:{dark:"darkRed",light:"lightRed"},diffContext:{dark:"darkTextMuted",light:"lightTextSubtle"},diffHunkHeader:{dark:"darkTextMuted",light:"lightTextSubtle"},diffHighlightAdded:{dark:"#B5E0A0",light:"#1F6638"},diffHighlightRemoved:{dark:"#E89180",light:"#8A3A2C"},diffAddedBg:{dark:"#1F2A1F",light:"#E5EEDF"},diffRemovedBg:{dark:"#2A1F1C",light:"#F5DAD3"},diffContextBg:{dark:"darkBgRaised",light:"lightBgRaised"},diffLineNumber:{dark:"darkTextSubtle",light:"lightTextSubtle"},diffAddedLineNumberBg:{dark:"#1A2419",light:"#D5E2CC"},diffRemovedLineNumberBg:{dark:"#241915",light:"#EBC8BE"},markdownText:{dark:"darkText",light:"lightText"},markdownHeading:{dark:"darkPrimary",light:"lightPrimary"},markdownLink:{dark:"darkAccent",light:"lightAccent"},markdownLinkText:{dark:"darkBlue",light:"lightBlue"},markdownCode:{dark:"darkSecondary",light:"lightSecondary"},markdownBlockQuote:{dark:"darkTextMuted",light:"lightTextMuted"},markdownEmph:{dark:"darkYellow",light:"lightYellow"},markdownStrong:{dark:"darkPrimary",light:"lightPrimary"},markdownHorizontalRule:{dark:"darkTextMuted",light:"lightTextMuted"},markdownListItem:{dark:"darkAccent",light:"lightAccent"},markdownListEnumeration:{dark:"darkBlue",light:"lightBlue"},markdownImage:{dark:"darkAccent",light:"lightAccent"},markdownImageText:{dark:"darkBlue",light:"lightBlue"},markdownCodeBlock:{dark:"darkText",light:"lightText"},markdownQuote:{dark:"darkTextMuted",light:"lightTextMuted"},syntaxComment:{dark:"darkTextSubtle",light:"lightTextSubtle"},syntaxKeyword:{dark:"darkPrimary",light:"lightPrimary"},syntaxFunction:{dark:"darkBlue",light:"lightBlue"},syntaxVariable:{dark:"darkText",light:"lightText"},syntaxString:{dark:"darkGreen",light:"lightGreen"},syntaxNumber:{dark:"darkOrange",light:"lightOrange"},syntaxType:{dark:"darkViolet",light:"lightViolet"},syntaxOperator:{dark:"darkSecondary",light:"lightSecondary"},syntaxPunctuation:{dark:"darkText",light:"lightText"},selectedListItemText:{dark:"darkBg",light:"lightBg"}}}});var tz;var Bq=k(()=>{tz={$schema:"https://opencode.ai/theme.json",defs:{darkStep1:"#0a0a0a",darkStep2:"#111111",darkStep3:"#181818",darkStep4:"#1f1f1f",darkStep5:"#2a2a2a",darkStep6:"#363636",darkStep7:"#444444",darkStep8:"#5a5a5a",darkStep9:"#7a7a7a",darkStep10:"#9a9a9a",darkStep11:"#909090",darkStep12:"#e8e8e8",darkAccent:"#7da5c8",darkAccentBright:"#9bc3e3",darkRed:"#e06c75",darkOrange:"#d6a668",darkGreen:"#7fd88f",darkCyan:"#7da5c8",darkYellow:"#d6a668",lightStep1:"#fafafa",lightStep2:"#f3f3f3",lightStep3:"#ececec",lightStep4:"#e2e2e2",lightStep5:"#d4d4d4",lightStep6:"#bdbdbd",lightStep7:"#9c9c9c",lightStep8:"#7c7c7c",lightStep9:"#5b5b5b",lightStep10:"#404040",lightStep11:"#6c6c6c",lightStep12:"#1a1a1a",lightAccent:"#3d6f9f",lightAccentBright:"#1a4f87",lightRed:"#c9343a",lightOrange:"#a06b1a",lightGreen:"#3d9a57",lightCyan:"#3d6f9f",lightYellow:"#a06b1a"},theme:{primary:{dark:"darkStep12",light:"lightStep12"},secondary:{dark:"darkAccentBright",light:"lightAccentBright"},accent:{dark:"darkAccent",light:"lightAccent"},error:{dark:"darkRed",light:"lightRed"},warning:{dark:"darkOrange",light:"lightOrange"},success:{dark:"darkGreen",light:"lightGreen"},info:{dark:"darkCyan",light:"lightCyan"},text:{dark:"darkStep12",light:"lightStep12"},textMuted:{dark:"darkStep11",light:"lightStep11"},background:{dark:"darkStep1",light:"lightStep1"},backgroundPanel:{dark:"darkStep2",light:"lightStep2"},backgroundElement:{dark:"darkStep3",light:"lightStep3"},backgroundMenu:{dark:"darkStep4",light:"lightStep4"},border:{dark:"darkStep6",light:"lightStep6"},borderActive:{dark:"darkStep8",light:"lightStep8"},borderSubtle:{dark:"darkStep4",light:"lightStep4"},diffAdded:{dark:"#7fd88f",light:"#3d9a57"},diffRemoved:{dark:"#e06c75",light:"#c9343a"},diffContext:{dark:"darkStep10",light:"lightStep10"},diffHunkHeader:{dark:"darkStep10",light:"lightStep10"},diffHighlightAdded:{dark:"#9be5ad",light:"#2d7a3f"},diffHighlightRemoved:{dark:"#f08490",light:"#a82530"},diffAddedBg:{dark:"#15241a",light:"#d8efdc"},diffRemovedBg:{dark:"#2a1518",light:"#f5dadc"},diffContextBg:{dark:"darkStep2",light:"lightStep2"},diffLineNumber:{dark:"darkStep9",light:"lightStep9"},diffAddedLineNumberBg:{dark:"#0f1c14",light:"#c5deca"},diffRemovedLineNumberBg:{dark:"#221012",light:"#e5c5c8"},markdownText:{dark:"darkStep12",light:"lightStep12"},markdownHeading:{dark:"darkStep12",light:"lightStep12"},markdownLink:{dark:"darkAccent",light:"lightAccent"},markdownCode:{dark:"darkAccentBright",light:"lightAccentBright"},markdownCodeBlock:{dark:"darkStep12",light:"lightStep12"},markdownQuote:{dark:"darkStep11",light:"lightStep11"},selectedListItemText:{dark:"darkStep1",light:"lightStep1"}}}});var ez;var jq=k(()=>{ez={$schema:"https://opencode.ai/theme.json",defs:{background:"#282a36",currentLine:"#44475a",selection:"#44475a",foreground:"#f8f8f2",comment:"#6272a4",cyan:"#8be9fd",green:"#50fa7b",orange:"#ffb86c",pink:"#ff79c6",purple:"#bd93f9",red:"#ff5555",yellow:"#f1fa8c"},theme:{primary:{dark:"purple",light:"purple"},secondary:{dark:"pink",light:"pink"},accent:{dark:"cyan",light:"cyan"},error:{dark:"red",light:"red"},warning:{dark:"yellow",light:"yellow"},success:{dark:"green",light:"green"},info:{dark:"orange",light:"orange"},text:{dark:"foreground",light:"#282a36"},textMuted:{dark:"comment",light:"#6272a4"},background:{dark:"#282a36",light:"#f8f8f2"},backgroundPanel:{dark:"#21222c",light:"#e8e8e2"},backgroundElement:{dark:"currentLine",light:"#d8d8d2"},border:{dark:"currentLine",light:"#c8c8c2"},borderActive:{dark:"purple",light:"purple"},borderSubtle:{dark:"#191a21",light:"#e0e0e0"},diffAdded:{dark:"green",light:"green"},diffRemoved:{dark:"red",light:"red"},diffContext:{dark:"comment",light:"#6272a4"},diffHunkHeader:{dark:"comment",light:"#6272a4"},diffHighlightAdded:{dark:"green",light:"green"},diffHighlightRemoved:{dark:"red",light:"red"},diffAddedBg:{dark:"#1a3a1a",light:"#e0ffe0"},diffRemovedBg:{dark:"#3a1a1a",light:"#ffe0e0"},diffContextBg:{dark:"#21222c",light:"#e8e8e2"},diffLineNumber:{dark:"#989aa4",light:"#686865"},diffAddedLineNumberBg:{dark:"#1a3a1a",light:"#e0ffe0"},diffRemovedLineNumberBg:{dark:"#3a1a1a",light:"#ffe0e0"},markdownText:{dark:"foreground",light:"#282a36"},markdownHeading:{dark:"purple",light:"purple"},markdownLink:{dark:"cyan",light:"cyan"},markdownLinkText:{dark:"pink",light:"pink"},markdownCode:{dark:"green",light:"green"},markdownBlockQuote:{dark:"comment",light:"#6272a4"},markdownEmph:{dark:"yellow",light:"yellow"},markdownStrong:{dark:"orange",light:"orange"},markdownHorizontalRule:{dark:"comment",light:"#6272a4"},markdownListItem:{dark:"purple",light:"purple"},markdownListEnumeration:{dark:"cyan",light:"cyan"},markdownImage:{dark:"cyan",light:"cyan"},markdownImageText:{dark:"pink",light:"pink"},markdownCodeBlock:{dark:"foreground",light:"#282a36"},syntaxComment:{dark:"comment",light:"#6272a4"},syntaxKeyword:{dark:"pink",light:"pink"},syntaxFunction:{dark:"green",light:"green"},syntaxVariable:{dark:"foreground",light:"#282a36"},syntaxString:{dark:"yellow",light:"yellow"},syntaxNumber:{dark:"purple",light:"purple"},syntaxType:{dark:"cyan",light:"cyan"},syntaxOperator:{dark:"pink",light:"pink"},syntaxPunctuation:{dark:"foreground",light:"#282a36"}}}});var fG;var Wq=k(()=>{fG={$schema:"https://opencode.ai/theme.json",defs:{nord0:"#2E3440",nord1:"#3B4252",nord2:"#434C5E",nord3:"#4C566A",nord4:"#D8DEE9",nord5:"#E5E9F0",nord6:"#ECEFF4",nord7:"#8FBCBB",nord8:"#88C0D0",nord9:"#81A1C1",nord10:"#5E81AC",nord11:"#BF616A",nord12:"#D08770",nord13:"#EBCB8B",nord14:"#A3BE8C",nord15:"#B48EAD"},theme:{primary:{dark:"nord8",light:"nord10"},secondary:{dark:"nord9",light:"nord9"},accent:{dark:"nord7",light:"nord7"},error:{dark:"nord11",light:"nord11"},warning:{dark:"nord12",light:"nord12"},success:{dark:"nord14",light:"nord14"},info:{dark:"nord8",light:"nord10"},text:{dark:"nord6",light:"nord0"},textMuted:{dark:"#8B95A7",light:"nord1"},background:{dark:"nord0",light:"nord6"},backgroundPanel:{dark:"nord1",light:"nord5"},backgroundElement:{dark:"nord2",light:"nord4"},border:{dark:"nord2",light:"nord3"},borderActive:{dark:"nord3",light:"nord2"},borderSubtle:{dark:"nord2",light:"nord3"},diffAdded:{dark:"nord14",light:"nord14"},diffRemoved:{dark:"nord11",light:"nord11"},diffContext:{dark:"#8B95A7",light:"nord3"},diffHunkHeader:{dark:"#8B95A7",light:"nord3"},diffHighlightAdded:{dark:"nord14",light:"nord14"},diffHighlightRemoved:{dark:"nord11",light:"nord11"},diffAddedBg:{dark:"#3B4252",light:"#E5E9F0"},diffRemovedBg:{dark:"#3B4252",light:"#E5E9F0"},diffContextBg:{dark:"nord1",light:"nord5"},diffLineNumber:{dark:"#a9aeb6",light:"textMuted"},diffAddedLineNumberBg:{dark:"#3B4252",light:"#E5E9F0"},diffRemovedLineNumberBg:{dark:"#3B4252",light:"#E5E9F0"},markdownText:{dark:"nord4",light:"nord0"},markdownHeading:{dark:"nord8",light:"nord10"},markdownLink:{dark:"nord9",light:"nord9"},markdownLinkText:{dark:"nord7",light:"nord7"},markdownCode:{dark:"nord14",light:"nord14"},markdownBlockQuote:{dark:"#8B95A7",light:"nord3"},markdownEmph:{dark:"nord12",light:"nord12"},markdownStrong:{dark:"nord13",light:"nord13"},markdownHorizontalRule:{dark:"#8B95A7",light:"nord3"},markdownListItem:{dark:"nord8",light:"nord10"},markdownListEnumeration:{dark:"nord7",light:"nord7"},markdownImage:{dark:"nord9",light:"nord9"},markdownImageText:{dark:"nord7",light:"nord7"},markdownCodeBlock:{dark:"nord4",light:"nord0"},syntaxComment:{dark:"#8B95A7",light:"nord3"},syntaxKeyword:{dark:"nord9",light:"nord9"},syntaxFunction:{dark:"nord8",light:"nord8"},syntaxVariable:{dark:"nord7",light:"nord7"},syntaxString:{dark:"nord14",light:"nord14"},syntaxNumber:{dark:"nord15",light:"nord15"},syntaxType:{dark:"nord7",light:"nord7"},syntaxOperator:{dark:"nord9",light:"nord9"},syntaxPunctuation:{dark:"nord4",light:"nord0"}}}});var JG;var Vq=k(()=>{JG={$schema:"https://opencode.ai/theme.json",defs:{darkStep1:"#161616",darkStep2:"#1f1f1f",darkStep3:"#282828",darkStep4:"#323232",darkStep5:"#3c3c3c",darkStep6:"#484848",darkStep7:"#545454",darkStep8:"#6a6a6a",darkStep9:"#fab283",darkStep10:"#ffc09f",darkStep11:"#808080",darkStep12:"#eeeeee",darkSecondary:"#5c9cf5",darkAccent:"#7da5c8",darkRed:"#e06c75",darkOrange:"#f5a742",darkGreen:"#7fd88f",darkCyan:"#56b6c2",darkYellow:"#e5c07b",lightStep1:"#ffffff",lightStep2:"#fafafa",lightStep3:"#f5f5f5",lightStep4:"#ebebeb",lightStep5:"#e1e1e1",lightStep6:"#d4d4d4",lightStep7:"#b8b8b8",lightStep8:"#a0a0a0",lightStep9:"#3b7dd8",lightStep10:"#2968c3",lightStep11:"#8a8a8a",lightStep12:"#1a1a1a",lightSecondary:"#7b5bb6",lightAccent:"#3d6f9f",lightRed:"#d1383d",lightOrange:"#d68c27",lightGreen:"#3d9a57",lightCyan:"#318795",lightYellow:"#b0851f"},theme:{primary:{dark:"darkStep9",light:"lightStep9"},secondary:{dark:"darkSecondary",light:"lightSecondary"},accent:{dark:"darkAccent",light:"lightAccent"},error:{dark:"darkRed",light:"lightRed"},warning:{dark:"darkOrange",light:"lightOrange"},success:{dark:"darkGreen",light:"lightGreen"},info:{dark:"darkCyan",light:"lightCyan"},text:{dark:"darkStep12",light:"lightStep12"},textMuted:{dark:"darkStep11",light:"lightStep11"},background:{dark:"darkStep1",light:"lightStep1"},backgroundPanel:{dark:"darkStep2",light:"lightStep2"},backgroundElement:{dark:"darkStep3",light:"lightStep3"},border:{dark:"darkStep7",light:"lightStep7"},borderActive:{dark:"darkStep8",light:"lightStep8"},borderSubtle:{dark:"darkStep6",light:"lightStep6"},diffAdded:{dark:"#4fd6be",light:"#1e725c"},diffRemoved:{dark:"#c53b53",light:"#c53b53"},diffContext:{dark:"#828bb8",light:"#7086b5"},diffHunkHeader:{dark:"#828bb8",light:"#7086b5"},diffHighlightAdded:{dark:"#b8db87",light:"#4db380"},diffHighlightRemoved:{dark:"#e26a75",light:"#f52a65"},diffAddedBg:{dark:"#20303b",light:"#d5e5d5"},diffRemovedBg:{dark:"#37222c",light:"#f7d8db"},diffContextBg:{dark:"darkStep2",light:"lightStep2"},diffLineNumber:{dark:"#8f8f8f",light:"#595959"},diffAddedLineNumberBg:{dark:"#1b2b34",light:"#c5d5c5"},diffRemovedLineNumberBg:{dark:"#2d1f26",light:"#e7c8cb"},markdownText:{dark:"darkStep12",light:"lightStep12"},markdownHeading:{dark:"darkAccent",light:"lightAccent"},markdownLink:{dark:"darkStep9",light:"lightStep9"},markdownLinkText:{dark:"darkCyan",light:"lightCyan"},markdownCode:{dark:"darkGreen",light:"lightGreen"},markdownBlockQuote:{dark:"darkYellow",light:"lightYellow"},markdownEmph:{dark:"darkYellow",light:"lightYellow"},markdownStrong:{dark:"darkOrange",light:"lightOrange"},markdownHorizontalRule:{dark:"darkStep11",light:"lightStep11"},markdownListItem:{dark:"darkStep9",light:"lightStep9"},markdownListEnumeration:{dark:"darkCyan",light:"lightCyan"},markdownImage:{dark:"darkStep9",light:"lightStep9"},markdownImageText:{dark:"darkCyan",light:"lightCyan"},markdownCodeBlock:{dark:"darkStep12",light:"lightStep12"},syntaxComment:{dark:"darkStep11",light:"lightStep11"},syntaxKeyword:{dark:"darkAccent",light:"lightAccent"},syntaxFunction:{dark:"darkStep9",light:"lightStep9"},syntaxVariable:{dark:"darkRed",light:"lightRed"},syntaxString:{dark:"darkGreen",light:"lightGreen"},syntaxNumber:{dark:"darkOrange",light:"lightOrange"},syntaxType:{dark:"darkYellow",light:"lightYellow"},syntaxOperator:{dark:"darkCyan",light:"lightCyan"},syntaxPunctuation:{dark:"darkStep12",light:"lightStep12"}}}});var YG;var Kq=k(()=>{YG={$schema:"https://opencode.ai/theme.json",defs:{darkBg0:"#111c18",darkBg1:"#1a2520",darkBg2:"#23372B",darkBg3:"#3d4a44",darkFg0:"#C1C497",darkFg1:"#9aa88a",darkGray:"#53685B",darkRed:"#FF5345",darkGreen:"#549e6a",darkYellow:"#459451",darkBlue:"#509475",darkMagenta:"#D2689C",darkCyan:"#2DD5B7",darkWhite:"#F6F5DD",darkRedBright:"#db9f9c",darkGreenBright:"#63b07a",darkYellowBright:"#E5C736",darkBlueBright:"#ACD4CF",darkMagentaBright:"#75bbb3",darkCyanBright:"#8CD3CB",lightBg0:"#F6F5DD",lightBg1:"#E8E7CC",lightBg2:"#D5D4B8",lightBg3:"#A8A78C",lightFg0:"#111c18",lightFg1:"#1a2520",lightGray:"#53685B",lightRed:"#c7392d",lightGreen:"#3d7a52",lightYellow:"#b5a020",lightBlue:"#3d7560",lightMagenta:"#a8527a",lightCyan:"#1faa90"},theme:{primary:{dark:"darkCyan",light:"lightCyan"},secondary:{dark:"darkMagenta",light:"lightMagenta"},accent:{dark:"darkGreen",light:"lightGreen"},error:{dark:"darkRed",light:"lightRed"},warning:{dark:"darkYellowBright",light:"lightYellow"},success:{dark:"darkGreen",light:"lightGreen"},info:{dark:"darkCyan",light:"lightCyan"},text:{dark:"darkFg0",light:"lightFg0"},textMuted:{dark:"darkGray",light:"lightGray"},background:{dark:"darkBg0",light:"lightBg0"},backgroundPanel:{dark:"darkBg1",light:"lightBg1"},backgroundElement:{dark:"darkBg2",light:"lightBg2"},border:{dark:"darkBg3",light:"lightBg3"},borderActive:{dark:"darkCyan",light:"lightCyan"},borderSubtle:{dark:"darkBg2",light:"lightBg2"},diffAdded:{dark:"darkGreen",light:"lightGreen"},diffRemoved:{dark:"darkRed",light:"lightRed"},diffContext:{dark:"darkGray",light:"lightGray"},diffHunkHeader:{dark:"darkCyan",light:"lightCyan"},diffHighlightAdded:{dark:"darkGreenBright",light:"lightGreen"},diffHighlightRemoved:{dark:"darkRedBright",light:"lightRed"},diffAddedBg:{dark:"#15241c",light:"#e0eee5"},diffRemovedBg:{dark:"#241515",light:"#eee0e0"},diffContextBg:{dark:"darkBg1",light:"lightBg1"},diffLineNumber:{dark:"#828b87",light:"#5f5e4f"},diffAddedLineNumberBg:{dark:"#121f18",light:"#d5e5da"},diffRemovedLineNumberBg:{dark:"#1f1212",light:"#e5d5d5"},markdownText:{dark:"darkFg0",light:"lightFg0"},markdownHeading:{dark:"darkCyan",light:"lightCyan"},markdownLink:{dark:"darkCyanBright",light:"lightCyan"},markdownLinkText:{dark:"darkGreen",light:"lightGreen"},markdownCode:{dark:"darkGreenBright",light:"lightGreen"},markdownBlockQuote:{dark:"darkGray",light:"lightGray"},markdownEmph:{dark:"darkMagenta",light:"lightMagenta"},markdownStrong:{dark:"darkFg0",light:"lightFg0"},markdownHorizontalRule:{dark:"darkGray",light:"lightGray"},markdownListItem:{dark:"darkCyan",light:"lightCyan"},markdownListEnumeration:{dark:"darkCyanBright",light:"lightCyan"},markdownImage:{dark:"darkCyanBright",light:"lightCyan"},markdownImageText:{dark:"darkGreen",light:"lightGreen"},markdownCodeBlock:{dark:"darkFg0",light:"lightFg0"},syntaxComment:{dark:"darkGray",light:"lightGray"},syntaxKeyword:{dark:"darkCyan",light:"lightCyan"},syntaxFunction:{dark:"darkBlue",light:"lightBlue"},syntaxVariable:{dark:"darkFg0",light:"lightFg0"},syntaxString:{dark:"darkGreenBright",light:"lightGreen"},syntaxNumber:{dark:"darkMagenta",light:"lightMagenta"},syntaxType:{dark:"darkGreen",light:"lightGreen"},syntaxOperator:{dark:"darkYellow",light:"lightYellow"},syntaxPunctuation:{dark:"darkFg0",light:"lightFg0"}}}});var zG;var Uq=k(()=>{zG={$schema:"https://opencode.ai/theme.json",defs:{darkStep1:"#1a1b26",darkStep2:"#1e2030",darkStep3:"#222436",darkStep4:"#292e42",darkStep5:"#3b4261",darkStep6:"#545c7e",darkStep7:"#737aa2",darkStep8:"#9099b2",darkStep9:"#82aaff",darkStep10:"#89b4fa",darkStep11:"#828bb8",darkStep12:"#c8d3f5",darkRed:"#ff757f",darkOrange:"#ff966c",darkYellow:"#ffc777",darkGreen:"#c3e88d",darkCyan:"#86e1fc",darkPurple:"#c099ff",lightStep1:"#e1e2e7",lightStep2:"#d5d6db",lightStep3:"#c8c9ce",lightStep4:"#b9bac1",lightStep5:"#a8aecb",lightStep6:"#9699a8",lightStep7:"#737a8c",lightStep8:"#5a607d",lightStep9:"#2e7de9",lightStep10:"#1a6ce7",lightStep11:"#8990a3",lightStep12:"#3760bf",lightRed:"#f52a65",lightOrange:"#b15c00",lightYellow:"#8c6c3e",lightGreen:"#587539",lightCyan:"#007197",lightPurple:"#9854f1"},theme:{primary:{dark:"darkStep9",light:"lightStep9"},secondary:{dark:"darkPurple",light:"lightPurple"},accent:{dark:"darkOrange",light:"lightOrange"},error:{dark:"darkRed",light:"lightRed"},warning:{dark:"darkOrange",light:"lightOrange"},success:{dark:"darkGreen",light:"lightGreen"},info:{dark:"darkStep9",light:"lightStep9"},text:{dark:"darkStep12",light:"lightStep12"},textMuted:{dark:"darkStep11",light:"lightStep11"},background:{dark:"darkStep1",light:"lightStep1"},backgroundPanel:{dark:"darkStep2",light:"lightStep2"},backgroundElement:{dark:"darkStep3",light:"lightStep3"},border:{dark:"darkStep7",light:"lightStep7"},borderActive:{dark:"darkStep8",light:"lightStep8"},borderSubtle:{dark:"darkStep6",light:"lightStep6"},diffAdded:{dark:"#4fd6be",light:"#1e725c"},diffRemoved:{dark:"#c53b53",light:"#c53b53"},diffContext:{dark:"#828bb8",light:"#7086b5"},diffHunkHeader:{dark:"#828bb8",light:"#7086b5"},diffHighlightAdded:{dark:"#b8db87",light:"#4db380"},diffHighlightRemoved:{dark:"#e26a75",light:"#f52a65"},diffAddedBg:{dark:"#20303b",light:"#d5e5d5"},diffRemovedBg:{dark:"#37222c",light:"#f7d8db"},diffContextBg:{dark:"darkStep2",light:"lightStep2"},diffLineNumber:{dark:"#8f909a",light:"#59595b"},diffAddedLineNumberBg:{dark:"#1b2b34",light:"#c5d5c5"},diffRemovedLineNumberBg:{dark:"#2d1f26",light:"#e7c8cb"},markdownText:{dark:"darkStep12",light:"lightStep12"},markdownHeading:{dark:"darkPurple",light:"lightPurple"},markdownLink:{dark:"darkStep9",light:"lightStep9"},markdownLinkText:{dark:"darkCyan",light:"lightCyan"},markdownCode:{dark:"darkGreen",light:"lightGreen"},markdownBlockQuote:{dark:"darkYellow",light:"lightYellow"},markdownEmph:{dark:"darkYellow",light:"lightYellow"},markdownStrong:{dark:"darkOrange",light:"lightOrange"},markdownHorizontalRule:{dark:"darkStep11",light:"lightStep11"},markdownListItem:{dark:"darkStep9",light:"lightStep9"},markdownListEnumeration:{dark:"darkCyan",light:"lightCyan"},markdownImage:{dark:"darkStep9",light:"lightStep9"},markdownImageText:{dark:"darkCyan",light:"lightCyan"},markdownCodeBlock:{dark:"darkStep12",light:"lightStep12"},syntaxComment:{dark:"darkStep11",light:"lightStep11"},syntaxKeyword:{dark:"darkPurple",light:"lightPurple"},syntaxFunction:{dark:"darkStep9",light:"lightStep9"},syntaxVariable:{dark:"darkRed",light:"lightRed"},syntaxString:{dark:"darkGreen",light:"lightGreen"},syntaxNumber:{dark:"darkOrange",light:"lightOrange"},syntaxType:{dark:"darkYellow",light:"lightYellow"},syntaxOperator:{dark:"darkCyan",light:"lightCyan"},syntaxPunctuation:{dark:"darkStep12",light:"lightStep12"}}}});function TB(f,J,Y=[]){if(J===void 0)return null;if(typeof J!=="string")return TB(f,J.dark,Y);if(J==="transparent"||J==="none")return null;if(J.startsWith("#"))return J;if(Y.includes(J))return null;let z=f.defs?.[J]??f.theme[J];return TB(f,z,[...Y,J])}function IB(f){return Math.max(0,Math.min(255,Math.round(f)))}function WX(f,J,Y){let z=Number.parseInt(f.slice(1),16),G=Number.parseInt(J.slice(1),16),X=(Q,H)=>Q>>H&255;return`#${(IB(X(z,16)+(X(G,16)-X(z,16))*Y)<<16|IB(X(z,8)+(X(G,8)-X(z,8))*Y)<<8|IB(X(z,0)+(X(G,0)-X(z,0))*Y)).toString(16).padStart(6,"0")}`}function Vg(f){let J=(Q)=>TB(f,f.theme[Q]),Y=J("background"),z=J("text");if(!Y||!z)return null;let G=J("textMuted")??WX(z,Y,0.35),X=J("primary")??z,q=J("border")??WX(z,Y,0.8);return{bg:Y,surface:J("backgroundPanel")??Y,inset:J("backgroundElement")??Y,menu:J("backgroundMenu")??J("backgroundElement")??Y,line:q,"line-subtle":J("borderSubtle")??q,"line-active":J("borderActive")??WX(q,z,0.3),fg:z,muted:G,subtle:WX(G,Y,0.35),primary:X,"primary-hover":WX(X,z,0.35),"kobe-orange":X,"kobe-green":J("success")??z,"kobe-blue":J("info")??z,"kobe-red":J("error")??z,"kobe-yellow":J("warning")??z,"kobe-violet":J("secondary")??X}}function A7(f,J){if(J.pathname!==Ug)return null;if(f.method!=="GET")return Response.json({error:"method not allowed"},{status:405});return Response.json({themes:Kg})}var Wg,Kg,Ug="/api/themes";var g7=k(()=>{Hq();Bq();jq();Wq();Vq();Kq();Uq();Wg={claude:sz,conductor:tz,dracula:ez,nord:fG,opencode:JG,"osaka-jade":YG,tokyonight:zG};Kg=Object.fromEntries(Object.entries(Wg).map(([f,J])=>[f,Vg(J)]).filter((f)=>f[1]!==null))});import{createHash as Dg,randomUUID as Lg}from"crypto";import{mkdir as Mg}from"fs/promises";import{join as uB,resolve as Fg}from"path";function gg(f){return Dg("sha1").update(f).digest("hex").slice(0,16)}async function kg(f){let J=Number.parseInt(f.headers.get("content-length")??"",10);if(Number.isFinite(J)&&J>R7)return Response.json({error:"asset too large"},{status:413});let Y;try{Y=await f.formData()}catch{return Response.json({error:"invalid form data"},{status:400})}let z=Y.get("repoRoot");if(typeof z!=="string"||z.length===0)return Response.json({error:"missing repoRoot"},{status:400});let G=Y.get("file");if(!(G instanceof File))return Response.json({error:"file must be a File"},{status:400});if(G.size>R7)return Response.json({error:"asset too large"},{status:413});let X=Og[G.type];if(!X)return Response.json({error:`unsupported content-type: ${G.type||"unknown"}`},{status:415});try{let q=gg(z),Q=uB(nQ(),q);await Mg(Q,{recursive:!0});let B=`${Lg()}.${X}`;return await Bun.write(uB(Q,B),G),Response.json({url:`${Dq}/${q}/${B}`})}catch(q){return Response.json({error:q instanceof Error?q.message:String(q)},{status:500})}}async function Ng(f){let J=f.slice(Dq.length+1),Y=J.indexOf("/");if(Y<0)return Response.json({error:"not found"},{status:404});let z=J.slice(0,Y),G=J.slice(Y+1);if(!Rg.test(z)||!Cg.test(G))return Response.json({error:"invalid asset path"},{status:400});let X=nQ(),q=Fg(X,z,G);if(q!==uB(X,z,G)||!q.startsWith(`${X}/`))return Response.json({error:"invalid asset path"},{status:400});let Q=G.slice(G.lastIndexOf(".")+1).toLowerCase(),H=Ag[Q];if(!H)return Response.json({error:"invalid asset path"},{status:400});let B=Bun.file(q);if(!await B.exists())return Response.json({error:"not found"},{status:404});return new Response(B,{headers:{"content-type":H,"cache-control":"public, max-age=31536000, immutable","x-content-type-options":"nosniff"}})}async function C7(f,J){if(J.pathname===Dq){if(f.method==="POST")return kg(f);return Response.json({error:"method not allowed"},{status:405})}if(J.pathname.startsWith(`${Dq}/`)){if(f.method==="GET")return Ng(J.pathname);return Response.json({error:"method not allowed"},{status:405})}return null}var Dq="/api/issue-assets",R7=10485760,Og,Ag,Rg,Cg;var k7=k(()=>{lf();Og={"image/png":"png","image/jpeg":"jpg","image/gif":"gif","image/webp":"webp"},Ag={png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",webp:"image/webp"};Rg=/^[a-f0-9]{16}$/,Cg=/^[A-Za-z0-9_-]+\.[a-z0-9]+$/});function N7(f,J=500){return Response.json({error:f instanceof Error?f.message:String(f)},{status:J})}function y7(f){let J=f instanceof Error?f.message:String(f);if(/^no issue #\d+$/.test(J))return 404;if(J==="repoRoot is required"||J==="repoRoot does not exist"||J==="repoRoot is not a git repository"||J==="missing op"||J==="create requires a non-empty title"||J==="body must be a string"||J==="setStatus requires a numeric id"||J.startsWith("invalid status:")||J==="update requires a numeric id"||J==="title must be a non-empty string"||J==="link requires a numeric id"||J==="link requires a non-empty taskId"||J==="unlink requires a numeric id"||J==="delete requires a numeric id"||J.startsWith("unknown op type:"))return 400;return 500}async function yg(f,J){let Y=J.searchParams.get("repoRoot");if(!Y)return Response.json({error:"missing repoRoot"},{status:400});try{return Response.json(await f.request("issue.list",{repoRoot:Y}))}catch(z){return N7(z,y7(z))}}async function bg(f,J){let Y;try{Y=await J.json()}catch{return Response.json({error:"invalid JSON body"},{status:400})}if(Y===null||typeof Y!=="object"||Array.isArray(Y))return Response.json({error:"body must be a JSON object"},{status:400});let z=Y;if(typeof z.repoRoot!=="string"||z.repoRoot.length===0)return Response.json({error:"missing repoRoot"},{status:400});try{return Response.json(await f.request("issue.mutate",{repoRoot:z.repoRoot,op:z.op}))}catch(G){return N7(G,y7(G))}}async function b7(f,J,Y){if(J.pathname!=="/api/issues")return null;if(f.method==="GET")return yg(Y,J);if(f.method==="POST")return bg(Y,f);return Response.json({error:"method not allowed"},{status:405})}function S7(f){return Sg.has(String(f??"").trim().toLowerCase())}function I7(f){try{if(!f)return null;let J=new URL(f);if(J.protocol!=="http:"&&J.protocol!=="https:")return null;return J.hostname}catch{return null}}function Ig(f){let J=I7(f);return J!==null&&S7(J)}function T7(f,J={}){if(!f)return!0;if(Ig(f))return!0;let Y=J.allowedHost?.trim();if(!Y)return!1;let z=I7(f);return z!==null&&z===Y}function u7(f){let J=String(f??"").trim();return J&&!S7(J)?J:void 0}var Sg;var E7=k(()=>{Sg=new Set(["localhost","127.0.0.1","::1","[::1]"])});var Tg,x7;var w7=k(()=>{Tg=["daemon.status","task.list","task.get","task.create","task.archive","task.rename","task.setBranch","task.setVendor","task.delete","task.pin","task.move","task.status","task.reorder","task.ensureMain","task.ensureWorktree","task.setActive","worktree.discoverAdoptable","worktree.adopt"],x7=new Set(Tg)});var EB={};jf(EB,{resolveRepoInit:()=>v7,resolveEngineLaunchInit:()=>sJ});import{existsSync as P7,readFileSync as ug}from"fs";import{join as Lq}from"path";function xg(f){return P7(Lq(f,h7))?`sh ${h7}`:void 0}function wg(f){let J=Lq(f,Eg);if(!P7(J))return;try{let Y=ug(J,"utf8");return Y.trim().length>0?Y:void 0}catch{return}}function v7(f,J){let Y=f?eQ(f):{},z=xg(J)??Y.initScript,G=wg(J)??Y.initPrompt;return{initScript:z&&z.trim().length>0?z:void 0,initPrompt:G&&G.trim().length>0?G:void 0}}function hg(f,J){if(f.kind==="none")return;if(f.kind==="explicit")return{source:"explicit",text:f.prompt};let Y=J.initPrompt?.trim();return Y?{source:"repo-init",text:Y}:void 0}function sJ(f,J,Y={kind:"repo-init"}){let z=v7(f,J);return{initScript:z.initScript,firstMessage:hg(Y,z)}}var h7,Eg;var GG=k(()=>{Of();h7=Lq(".kobe","init.sh"),Eg=Lq(".kobe","init-prompt.md")});import{existsSync as m7,readFileSync as Pg}from"fs";function c7(){Mz=null}function vg(){let f=X9();if(m7(f))return{canonical:f,found:f};let J=f.replace(/\.yaml$/,".yml");if(m7(J))return{canonical:f,found:J};return{canonical:f,found:null}}function Mq(){if(Mz)return Mz;let{canonical:f,found:J}=vg();if(!J)return Mz={path:f,exists:!1,doc:null,warnings:[]},Mz;let Y=[],z=null;try{let G=Pg(J,"utf8");z=Bun.YAML.parse(G)}catch(G){let X=G instanceof Error?G.message:String(G);Y.push(`could not read/parse ${J}: ${X}`)}return Mz={path:f,exists:!0,doc:z,warnings:Y},Mz}var Mz=null;var xB=k(()=>{lf()});function XG(f,J){let Y=`alternating [${f}, ${J}] pairs`;return{layout:Y,validateCount:(z)=>z>=2&&z%2===0?null:`needs ${Y} (an even number of chords \u2014 got ${z})`}}function ag(f,J){let Y=f.trim().toLowerCase();if(!Y)return{error:"empty chord"};let z=Y.split("+"),G=z.pop()??"";if(G===""&&z.length>0){if(G="+",z[z.length-1]==="")z.pop()}if(!G)return{error:`"${f}": no key after the modifiers`};let X=new Set;for(let H of z){let B=ng[H];if(!B)return{error:`"${f}": unknown modifier "${H}" (use ctrl / cmd / alt / shift)`};X.add(B)}if(G=dg[G]??G,X.has("shift")&&G.length===1&&!J?.allowShiftCharacter)return{error:`"${f}": shift+<character> can never match \u2014 terminals deliver shift+letter as a plain character, not a modifier event`};let q=lg.filter((H)=>X.has(H)).join("+"),Q=q?`${q}+${G}`:G;if(G.length>1&&!ig.has(G))return{chord:Q,warning:`"${f}": unrecognized key name "${G}" \u2014 the chord may never fire`};return{chord:Q}}function Fq(f){return typeof f==="object"&&f!==null&&!Array.isArray(f)}function $g(f){if(f==="darwin")return["darwin","macos","mac"];if(f==="win32")return["win32","windows"];return[f]}function rg(f){if(!Fq(f))return null;let J=f.bindings;if(Fq(J))return J;return f}function Oq(f,J,Y){let z=[];if(f===null||f===void 0)return{entries:[],warnings:z};if(!Fq(f))return{entries:[],warnings:["config root must be a YAML mapping (e.g. a top-level `bindings:` key)"]};let G=new Map,X=[];if(f.bindings!==void 0)if(Fq(f.bindings))X.push(f.bindings);else z.push("`bindings:` must be a mapping of id \u2192 chord(s)");for(let q of $g(J)){let Q=f[q];if(Q===void 0)continue;let H=rg(Q);if(H)X.push(H);else z.push(`\`${q}:\` must be a mapping (or contain a \`bindings:\` mapping)`)}for(let q of X)for(let[Q,H]of Object.entries(q)){if(H===null||H===!1||Array.isArray(H)&&H.length===0){G.set(Q,[]);continue}let B=typeof H==="string"?[H]:Array.isArray(H)?H:null;if(!B){z.push(`${Q}: expected a chord string, a list of chords, or null \u2014 got ${typeof H}`);continue}let V=[],j=!1;for(let U of B){if(typeof U!=="string"){z.push(`${Q}: chord entries must be strings`),j=!0;continue}let L=ag(U,Y?.chordOptsFor?.(Q));if("error"in L){z.push(`${Q}: ${L.error}`),j=!0;continue}if(L.warning)z.push(`${Q}: ${L.warning}`);if(!V.includes(L.chord))V.push(L.chord)}if(V.length===0&&j){z.push(`${Q}: no valid chords \u2014 keeping the default`);continue}G.set(Q,V)}return{entries:Array.from(G,([q,Q])=>({id:q,keys:Q})),warnings:z}}function pg(f,J){return f===J||f==="global"||J==="global"}function n7(f,J){let Y=[],z=[];for(let G of J){let X=f.find((j)=>j.id===G.id);if(!X){Y.push(`${G.id}: unknown binding id (press F1 in kobe for the full list)`);continue}let q=wB[G.id];if(q){Y.push(`${G.id}: not customizable \u2014 ${q}`);continue}if(X.keys.length===0){Y.push(`${G.id}: not customizable \u2014 the key is handled outside the keymap (doc-only row)`);continue}let Q=mg[G.id];if(Q&&G.keys.length>0){let j=Q.validateCount(G.keys.length);if(j){Y.push(`${G.id}: ${j} \u2014 keeping the default`);continue}}let H=G.keys.filter((j)=>{if(j.length===1&&cg.has(X.scope))return Y.push(`${G.id}: "${j}" dropped \u2014 a bare character on a ${X.scope}-scope binding would steal typed input (add a modifier)`),!1;return!0});if(H.length===0&&G.keys.length>0){Y.push(`${G.id}: no chords survived validation \u2014 keeping the default`);continue}if(Q&&H.length!==G.keys.length){Y.push(`${G.id}: a dropped chord would shift the slot layout (${Q.layout}) \u2014 keeping the default`);continue}let B=X.keys,V=X;if(V.keys=H,X.hint)if(H.length===0)V.hint=void 0;else X.hint.keys=H.join("/");z.push({id:G.id,keys:H,defaultKeys:B})}for(let G of z)for(let X of G.keys){let q=f.find((Q)=>Q.id===G.id);if(!q)continue;for(let Q of f){if(Q.id===G.id)continue;if(!Q.keys.includes(X))continue;if(!pg(q.scope,Q.scope))continue;Y.push(`${G.id}: "${X}" also fires ${Q.id} (${Q.scope} scope) \u2014 last registration wins; consider a different chord`)}}return{applied:z,warnings:Y}}var wB,mg,cg,ng,dg,ig,lg;var Aq=k(()=>{wB={"focus.numeric":"pane focus is positional (h/j/k/l \u2192 pane) and mirrors the tmux-layer ctrl+hjkl bindings \u2014 rebind tmux.focus instead","sidebar.goto":"gg vs Shift+G is discriminated via evt.shift; shift+<letter> chords are inexpressible, so a rebind can't carry both halves","sidebar.pin":"fires on Shift+P via evt.shift; shift+<letter> chords are inexpressible, so a rebind can't work","sidebar.localMerge":"fires on Shift+M via evt.shift; shift+<letter> chords are inexpressible, so a rebind can't work","chat.question.nav":"the question picker has no live registration site (display-only row) \u2014 rebinding would change Help without changing behavior","chat.question.pick-number":"digits map to options positionally and the question picker has no live registration site (display-only row)"};mg={"sidebar.nav":XG("down","up"),"files.nav":XG("down","up"),"sidebar.search.nav":XG("down","up"),"files.hierarchy":XG("collapse","expand"),"sidebar.view":XG("previous view","next view"),"files.tab":XG("previous tab","next tab")},cg=new Set(["global","workspace","terminal"]),ng={ctrl:"ctrl",control:"ctrl",ctl:"ctrl",cmd:"cmd",command:"cmd",meta:"cmd",super:"cmd",win:"cmd",alt:"alt",option:"alt",opt:"alt",shift:"shift"},dg={esc:"escape",spacebar:"space",pgup:"pageup",pgdn:"pagedown",pgdown:"pagedown"},ig=new Set(["up","down","left","right","pageup","pagedown","home","end","insert","delete","backspace","tab","space","escape","enter","return",...Array.from({length:12},(f,J)=>`f${J+1}`)]),lg=["ctrl","cmd","alt","shift"]});function ZG(f){return f in d7}function Az(f,J){let Y=f.split("+"),z=Y.pop()??"";if(z===""&&Y.length>0){if(z="+",Y[Y.length-1]==="")Y.pop()}let G=new Set(Y);if(G.has("cmd"))return{error:`"${f}": the Command key never reaches tmux \u2014 use ctrl/alt/shift`};let X;if(z.length===1)X=G.has("shift")?z.toUpperCase():z;else{let H=og[z];if(!H)return{error:`"${f}": tmux can't bind the key "${z}"`};X=H}let q=/^f\d+$/.test(z);if(G.size===0&&!q&&!J?.allowBare)return{error:`"${f}": tmux session keys are no-prefix root bindings live in every pane \u2014 a bare key would shadow typing (add a modifier, or use an F-key)`};let Q="";if(G.has("ctrl"))Q+="C-";if(G.has("alt"))Q+="M-";if(G.has("shift"))Q+="S-";return{key:Q+X}}function l7(){let f={};for(let[Y,z]of Object.entries(Oz)){let G=Az(z,{allowBare:ZG(Y)});if("error"in G)throw Error(`default tmux chord for ${Y} failed to translate: ${G.error}`);f[Y]={chord:z,key:G.key}}let J=yY.map((Y)=>{let z=Az(Y);if("error"in z)throw Error(`default tmux focus chord ${Y} failed to translate`);return{chord:Y,key:z.key}});return{binds:f,focus:J,overridden:new Set,warnings:[]}}function hB(f){let J=l7(),Y=new Set;for(let z of f){if(!z.id.startsWith("tmux."))continue;if(z.id===SJ){if(z.keys.length===0){J.focus=[null,null,null,null],Y.add(SJ);continue}if(z.keys.length!==yY.length){J.warnings.push(`${SJ}: needs exactly 4 chords in order left/down/up/right (got ${z.keys.length}) \u2014 keeping the default`);continue}let Q=[],H=!0;for(let B of z.keys){let V=Az(B);if("error"in V){J.warnings.push(`${SJ}: ${V.error} \u2014 keeping the default`),H=!1;break}Q.push({chord:B,key:V.key})}if(!H)continue;J.focus=Q,Y.add(SJ);continue}if(!(z.id in Oz)){J.warnings.push(`${z.id}: unknown tmux binding id`);continue}let G=z.id;if(z.keys.length===0){J.binds[G]=null,Y.add(G);continue}if(z.keys.length>1)J.warnings.push(`${G}: tmux bindings take ONE chord \u2014 using "${z.keys[0]}", ignoring the rest`);let X=z.keys[0],q=Az(X,{allowBare:ZG(G)});if("error"in q){J.warnings.push(`${G}: ${q.error} \u2014 keeping the default`);continue}if(X!==Oz[G])Y.add(G);J.binds[G]={chord:X,key:q.key}}return J.overridden=Y,J}function PB(f){return f.startsWith("tmux.")?{allowShiftCharacter:!0}:{}}function a7(){Fz=null}function gq(){if(Fz)return Fz;let f=Mq();if(!f.exists||f.doc===null)return Fz=l7(),Fz;let J=Oq(f.doc,process.platform,{chordOptsFor:PB}),Y=J.warnings.filter((G)=>G.startsWith("tmux.")),z=hB(J.entries);z.warnings=[...Y,...z.warnings];for(let G of z.warnings)console.warn(`[kobe/keybindings] ${G}`);return Fz=z,Fz}var _g,d7,i7,Oz,SJ="tmux.focus",yY,og,Fz=null;var Rq=k(()=>{xB();Aq();_g={"tmux.detach":"ctrl+q","tmux.tab.new":"ctrl+t","tmux.tab.chooseEngine":"ctrl+shift+t","tmux.tab.prev":"ctrl+[","tmux.tab.next":"ctrl+]","tmux.tab.close":"ctrl+w","tmux.tab.rename":"f2"},d7={"tmux.layout.workspaceSplit":"s","tmux.layout.workspaceClose":"x","tmux.layout.workspaceReset":"r","tmux.layout.tasksToggle":"a","tmux.layout.opsToggle":"o","tmux.layout.terminalToggle":"z","tmux.layout.zenToggle":"space"},i7=["F6","F7","F8","F9","F10","F11"],Oz={..._g,...d7};yY=["ctrl+h","ctrl+j","ctrl+k","ctrl+l"],og={up:"Up",down:"Down",left:"Left",right:"Right",pageup:"PgUp",pagedown:"PgDn",home:"Home",end:"End",insert:"IC",delete:"DC",backspace:"BSpace",tab:"Tab",space:"Space",escape:"Escape",enter:"Enter",return:"Enter",...Object.fromEntries(Array.from({length:12},(f,J)=>[`f${J+1}`,`F${J+1}`]))}});async function VX(f,J){let Y=null;for(let G=0;G<24;G++){let X=await $z(f);if(X){if(!J)return{pane:X,ready:!0};let q=(await rz(X)).trim();if(q.length>0&&q===Y)return{pane:X,ready:!0};Y=q}await $7(250)}return{pane:await $z(f)||await JB(f),ready:!1}}async function KX(f,J){let Y=`kobe-api-${f.replace(/[^A-Za-z0-9]/g,"")}`;await h0(["set-buffer","-b",Y,"--",J]),await h0(["paste-buffer","-p","-d","-b",Y,"-t",f]),await $7(sg),await GX(f,"Enter")}async function r7(f,J){let{pane:Y}=await VX(f,!0);if(!Y)return;await KX(Y,J.text)}var $7=(f)=>new Promise((J)=>setTimeout(J,f)),sg=150;var Cq=k(()=>{Tf()});function p7(f,J){if(f===null)return{kind:"create",reason:"no session with this name \u2014 build fresh"};let Y=f.worktree===J.cwd,z=!J.vendor||f.vendor===J.vendor;if(f.claudePaneAlive&&Y&&z)return{kind:"reuse",reason:"healthy: engine pane alive, worktree + vendor match"};if(Y&&!z&&J.hasEngineCommand)return{kind:"respawn-engine",reason:`vendor drift: session tagged ${f.vendor===""?"<untagged>":`"${f.vendor}"`}, task wants "${J.vendor}" \u2014 relaunch engine pane in place (KOB-232)`};if(Y&&z&&f.windowCount>1)return{kind:"reuse",reason:"active window's engine pane is gone but sibling chat tabs exist \u2014 reuse rather than drop them"};if(!Y)return{kind:"rebuild",reason:f.worktree===""?"legacy session with no @kobe_worktree tag \u2014 rebuild in the right place":`worktree drift: session tagged "${f.worktree}", task wants "${J.cwd}" \u2014 rebuild`};if(!z)return{kind:"rebuild",reason:"vendor drift but no engine command to respawn with \u2014 rebuild"};return{kind:"rebuild",reason:"single-window session whose engine pane was destroyed \u2014 rebuild"}}var _7;var o7=k(()=>{Hq();Bq();jq();Wq();Vq();Kq();Uq();_7={claude:sz,conductor:tz,nord:fG,opencode:JG,dracula:ez,tokyonight:zG,"osaka-jade":YG}});function tg(f){let J=/^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/.exec(f);if(!J)return null;let Y=J[1];if(Y.length===3){let[z,G,X]=Y;return`#${z}${z}${G}${G}${X}${X}`.toLowerCase()}return`#${Y.slice(0,6)}`.toLowerCase()}function s7(f,J,Y="dark"){let z=f.defs??{};function G(q,Q){if(typeof q==="string"){if(q==="transparent"||q==="none")return null;if(q.startsWith("#"))return tg(q);if(Q.includes(q))return null;let B=z[q]??f.theme[q];if(B===void 0)return null;return G(B,[...Q,q])}if(!q||typeof q!=="object")return null;let H=q[Y];return typeof H==="string"?G(H,Q):null}let X=f.theme[J];if(X===void 0)return null;return G(X,[J])}function kq(f){return typeof f==="object"&&f!==null&&!Array.isArray(f)}function Nq(f){if(!kq(f))return{ok:!1,reason:"theme must be a JSON object at the top level"};let J=f;if(!("theme"in J))return{ok:!1,reason:"missing required key `theme`"};let Y=J.theme;if(!kq(Y))return{ok:!1,reason:"`theme` must be an object map"};if("defs"in J&&J.defs!==void 0){if(!kq(J.defs))return{ok:!1,reason:"`defs` must be an object map"};for(let[z,G]of Object.entries(J.defs))if(typeof G!=="string")return{ok:!1,reason:`defs.${z} must be a string (hex like "#abc" or a ref name)`}}for(let[z,G]of Object.entries(Y)){if(typeof G==="string")continue;if(!kq(G))return{ok:!1,reason:`theme.${z} must be a string or a { dark, light } object (got ${G===null?"null":Array.isArray(G)?"array":typeof G})`};let X=G;if(typeof X.dark!=="string")return{ok:!1,reason:`theme.${z}.dark must be a string`};if(typeof X.light!=="string")return{ok:!1,reason:`theme.${z}.light must be a string`}}if("$schema"in J&&J.$schema!==void 0&&typeof J.$schema!=="string")return{ok:!1,reason:"`$schema` must be a string when present"};return{ok:!0,theme:J}}var vB=()=>{};import{readFileSync as eg,readdirSync as fR}from"fs";import{join as t7}from"path";function qG(){return t7(ef(),"themes")}function UX(){let f=qG(),J;try{J=fR(f)}catch{return[]}let Y=[];for(let z of J){if(!z.endsWith(".json"))continue;let G=t7(f,z),X;try{let H=eg(G,"utf8");X=JSON.parse(H)}catch(H){let B=H instanceof Error?H.message:String(H);console.warn(`[kobe] skipping user theme ${G}: invalid JSON \u2014 ${B}`);continue}let q=Nq(X);if(!q.ok){console.warn(`[kobe] skipping user theme ${G}: ${q.reason}`);continue}let Q=z.slice(0,-5);Y.push({name:Q,theme:q.theme})}return Y}var yq=k(()=>{lf();vB()});import{readFileSync as JR}from"fs";function zR(){try{let f=JSON.parse(JR(m1(),"utf8")),J=typeof f.activeTheme==="string"&&f.activeTheme?f.activeTheme:"claude",Y=typeof f.focusAccent==="string"&&YR.includes(f.focusAccent)?f.focusAccent:"primary";return{themeName:J,focusAccentSlot:Y,enabled:f.tmuxChromeTheme!=="off"&&f.tmuxBorderTheme!=="off"}}catch{return{themeName:"claude",focusAccentSlot:"primary",enabled:!0}}}function GR(f){return UX().find((Y)=>Y.name===f)?.theme??_7[f]??null}function VJ(f,...J){for(let Y of J){let z=s7(f,Y);if(z)return z}return null}function e7(f,J){let Y=VJ(f,"text"),z=VJ(f,"background"),G=VJ(f,"textMuted","text"),X=VJ(f,"backgroundPanel","background"),q=VJ(f,"backgroundElement","backgroundPanel","background"),Q=VJ(f,"backgroundMenu","backgroundElement","backgroundPanel","background"),H=VJ(f,"selectedListItemText","background"),B=VJ(f,J,"primary","borderActive","border","text");return{border:VJ(f,"border","text"),activeBorder:B,statusBg:X,statusFg:G,statusMutedFg:G,windowFg:G,currentWindowBg:q,currentWindowFg:B,activityFg:VJ(f,"info","primary","text"),bellFg:VJ(f,"warning","error","primary","text"),messageBg:Q,messageFg:Y,messageCommandFg:B,modeBg:B,modeFg:H??z}}function $1(f){let J=[];if(f.bg)J.push(`bg=${f.bg}`);if(f.fg)J.push(`fg=${f.fg}`);if(J.length===0)return null;if(f.attrs)J.push(...f.attrs);return J.join(",")}function J5(f){let J=$1({bg:f.statusBg,fg:f.statusFg}),Y=$1({bg:f.statusBg,fg:f.statusMutedFg}),z=$1({bg:f.statusBg,fg:f.windowFg});return[{key:"border",option:"pane-border-style",showFlag:"-gwqv",setFlag:"-gw",unsetFlag:"-gwu",value:$1({fg:f.border})},{key:"active",option:"pane-active-border-style",showFlag:"-gwqv",setFlag:"-gw",unsetFlag:"-gwu",value:$1({fg:f.activeBorder})},{key:"status",option:"status-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:J},{key:"status-left",option:"status-left-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Y},{key:"status-right",option:"status-right-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Y},{key:"window",option:"window-status-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:z},{key:"current-window",option:"window-status-current-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:$1({bg:f.currentWindowBg,fg:f.currentWindowFg,attrs:["bold"]})},{key:"activity-window",option:"window-status-activity-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:$1({bg:f.statusBg,fg:f.activityFg})},{key:"bell-window",option:"window-status-bell-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:$1({bg:f.statusBg,fg:f.bellFg,attrs:["bold"]})},{key:"last-window",option:"window-status-last-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:$1({bg:f.statusBg,fg:f.statusFg})},{key:"message",option:"message-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:$1({bg:f.messageBg,fg:f.messageFg})},{key:"message-command",option:"message-command-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:$1({bg:f.messageBg,fg:f.messageCommandFg,attrs:["bold"]})},{key:"mode",option:"mode-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:$1({bg:f.modeBg,fg:f.modeFg})},{key:"display-panes",option:"display-panes-colour",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:f.border},{key:"display-panes-active",option:"display-panes-active-colour",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:f.activeBorder}]}function XR(f){let J=new Set(f.marker.split(",").map((X)=>X.trim()).filter(Boolean)),Y=[],z=[];for(let X of J5(f.hexes))if(X.value){if((f.current[X.key]??"")!==X.value)Y.push(["set-option",X.setFlag,X.option,X.value]);z.push(X.key)}else if(J.has(X.key))Y.push(["set-option",X.unsetFlag,X.option]);let G=z.join(",");if(G!==f.marker)Y.push(G?["set-option","-g",mB,G]:["set-option","-gu",mB]);return Y}async function f5(f){let{code:J,stdout:Y}=await d0(f);return J===0?Y.trim():""}async function gz(){try{let f=zR(),J=f.enabled?GR(f.themeName):null,Y=J?e7(J,f.focusAccentSlot):e7({theme:{}},f.focusAccentSlot),z=J5(Y),[G,...X]=await Promise.all([f5(["show-options","-gqv",mB]),...z.map((H)=>f5(["show-options",H.showFlag,H.option]))]),q=Object.fromEntries(z.map((H,B)=>[H.key,X[B]??""])),Q=XR({marker:G,current:q,hexes:Y});if(Q.length>0)await Pf(Q)}catch{}}var mB="@kobe_border_theme",YR;var bq=k(()=>{lf();Tf();o7();yq();YR=["primary","success","info"]});function Y5(){return nf()[Sq]!==!1}var Sq="zen.keepTasks";var cB=k(()=>{pY()});var Iq={};jf(Iq,{recordGen:()=>bY,isLatestGen:()=>q5,genAgeMs:()=>WR,coalesceLayoutWork:()=>VR,RESIZE_GUARD_MS:()=>jR,LAYOUT_COALESCE_MS:()=>X5});import{createHash as ZR,randomUUID as qR}from"crypto";import{mkdirSync as QR,readFileSync as z5,renameSync as HR,writeFileSync as BR}from"fs";import{join as G5}from"path";function Z5(){return G5(ef(),"layout-coord")}function nB(f,J){let Y=ZR("sha1").update(f).digest("hex").slice(0,16);return G5(Z5(),`${Y}.${J}`)}function bY(f,J){let Y=qR();try{QR(Z5(),{recursive:!0});let z=nB(f,J),G=`${z}.${Y}.tmp`;BR(G,`${Date.now()}
|
|
58
|
+
${Y}`),HR(G,z)}catch{}return Y}function q5(f,J,Y){try{return z5(nB(f,J),"utf8").split(`
|
|
59
|
+
`)[1]?.trim()===Y}catch{return!0}}function WR(f,J,Y=Date.now()){try{let z=Number.parseInt(z5(nB(f,J),"utf8").split(`
|
|
60
|
+
`)[0]??"",10);return Number.isFinite(z)?Y-z:Number.POSITIVE_INFINITY}catch{return Number.POSITIVE_INFINITY}}async function VR(f,J,Y,z=X5){let G=bY(f,J);if(z>0)await new Promise((X)=>setTimeout(X,z));if(!q5(f,J,G))return;await Y()}var X5=120,jR=400;var QG=k(()=>{lf()});function UR(f){let J=[];for(let Y of f.split(`
|
|
61
|
+
`)){let z=Y.trim();if(!z)continue;let[G,X,q,Q,H]=z.split("\t");if(!G||!X||!q)continue;let B=Number.parseInt(H?.trim()??"",10);J.push({windowId:G.trim(),paneId:X.trim(),role:q.trim(),version:Q?.trim()??"",...Number.isFinite(B)?{paneWidth:B}:{}})}return J}function Q5(f,J){let Y=new Map;for(let G of f){let X=Y.get(G.windowId)??[];X.push(G),Y.set(G.windowId,X)}let z=[];for(let G of Y.values()){let X=G.find((B)=>B.role==="claude")?.paneId,q=G.find((B)=>B.role==="tasks"),Q=G.find((B)=>B.role==="ops");if(q&&(J.force||q.version!==J.currentVersion))z.push({role:"tasks",paneId:q.paneId});let H=J.force?!0:X&&(J.vendorChanged||Q?.version!==J.currentVersion);if(Q&&H)z.push({role:"ops",paneId:Q.paneId,claudePaneId:X??null})}return z}async function dB(f){let{code:J,stdout:Y}=await d0(["list-panes","-s","-t",`=${f}`,"-F",KR]);if(J!==0)return null;return UR(Y)}function H5(f,J){let Y=Cf(),z=_f(),G=[];for(let X of f){let q=X.role==="tasks"?DY(Y,{initialTaskId:J.taskId}):nz({cwd:J.cwd,taskId:J.taskId,claudePaneId:X.claudePaneId,cliInvocation:Y,vendor:J.vendor});G.push(["respawn-pane","-k","-t",X.paneId,"-c",If(J.cwd),R1(z+q)],["set-option","-p","-t",X.paneId,"@kobe_role",X.role],["set-option","-p","-t",X.paneId,KJ,s0])}return G}async function B5(f,J,Y,z,G){let X=await dB(f);if(!X)return!1;let q=X.filter((B)=>B.role==="claude");if(q.length===0)return!1;let Q=If(J),H=[];for(let B of q){let V=pz(Y,G),j=R1(iz(g1(V.argv),z,J));H.push(["respawn-pane","-k","-c",Q,"-t",B.paneId,j]),H.push(V.sessionId?["set-window-option","-t",B.paneId,yJ,V.sessionId]:["set-window-option","-u","-t",B.paneId,yJ])}return await Pf(H),!0}async function j5(){let f=await OY([$J,Gz,rJ]),J=Number.parseInt(f[$J]??"",10),Y=Number.isFinite(J)&&J>0?zz(J):Jz,z=DR({widthPct:pJ(Number.parseInt(f[Gz]??"",10)),heightPct:pJ(Number.parseInt(f[rJ]??"",10))});return{tasksWidth:Y,rcArgs:z}}function DR(f){let J=[];if(f.widthPct!==null)J.push("-x",`${f.widthPct}%`);if(f.heightPct!==null)J.push("-y",`${f.heightPct}%`);return J}async function W5(){return(await j5()).rcArgs}async function iB(f,J={}){let{tasksWidth:Y,rcArgs:z}=await j5(),G=await dB(f);if(!G)return{rows:null,commands:[]};let X=[];for(let q of G)if(q.role==="tasks"&&(J.force||q.paneWidth!==Y))X.push(["resize-pane","-t",q.paneId,"-x",`${Y}`]);if(z.length>0){for(let q of G)if(q.role==="ops")X.push(["resize-pane","-t",q.paneId,...z])}return{rows:G,commands:X}}async function HG(f,J){bY(f,"resize");let{rows:Y,commands:z}=await iB(f);if(!Y)return;let G=[...z];if(J)G.push(...H5(Q5(Y,{currentVersion:s0,force:!1,vendorChanged:J.vendorChanged}),J));if(G.length>0)await Pf(G)}async function V5(f){if(!await Hf(f))return;await HG(f)}async function DX(f){let{code:J,stdout:Y}=await d0(["list-panes","-t",`=${f}`,"-F",`#{@kobe_role} #{pane_width} #{pane_height} #{window_width} #{window_height} #{window_zoomed_flag} #{${ZJ}} #{${A1}}`]);if(J!==0)return;let z=Y.split(`
|
|
62
|
+
`).map((B)=>B.split("\t")).filter((B)=>(B[0]?.trim()??"")!=="");if(z.length===0)return;if(z.some((B)=>B[5]?.trim()==="1"))return;if(z.some((B)=>(B[6]?.trim()??"")!==""))return;if(z.some((B)=>(B[7]?.trim()??"")!==""))return;let G=Number.parseInt(z[0][3]?.trim()??"",10),X=Number.parseInt(z[0][4]?.trim()??"",10),q=[],Q=z.find(([B])=>B?.trim()==="tasks");if(Q){let B=Number.parseInt(Q[1]?.trim()??"",10);if(Number.isFinite(B)&&B>0)q.push(["set-option","-s",$J,`${zz(B)}`])}let H=z.find(([B])=>B?.trim()==="ops");if(H&&Number.isFinite(G)&&G>0&&Number.isFinite(X)&&X>0){let B=Number.parseInt(H[1]?.trim()??"",10),V=Number.parseInt(H[2]?.trim()??"",10),j=Number.isFinite(B)?pJ(100*B/G):null,U=Number.isFinite(V)?pJ(100*V/X):null;if(j!==null)q.push(["set-option","-s",Gz,`${j}`]);if(U!==null)q.push(["set-option","-s",rJ,`${U}`])}if(q.length>0)await Pf(q)}function LR(f){let J=f.split(`
|
|
63
|
+
`).map((z)=>z.split("\t")).filter((z)=>(z[0]?.trim()??"")!=="");if(J.length===0)return!1;if(J.some((z)=>z[1]?.trim()==="1"))return!1;if(J.some((z)=>(z[2]?.trim()??"")!==""))return!1;if(J.some((z)=>(z[3]?.trim()??"")!==""))return!1;let Y=new Set(J.map((z)=>z[0]?.trim()));return Y.has("tasks")&&Y.has("ops")}async function K5(f){let{code:J,stdout:Y}=await d0(["list-panes","-t",`=${f}`,"-F",`#{@kobe_role} #{window_zoomed_flag} #{${ZJ}} #{${A1}}`]);if(J!==0||!LR(Y))return;await DX(f)}async function BG(f){let J=await C1(f,["@kobe_worktree","@kobe_task","@kobe_vendor"]),Y=J["@kobe_worktree"]||process.cwd(),z=J["@kobe_task"]||void 0,G=J["@kobe_vendor"]||void 0,X=await dB(f);if(!X)return;let q=H5(Q5(X,{currentVersion:s0,force:!0}),{cwd:Y,taskId:z,vendor:G});if(q.length>0)await Pf(q);await gz()}var KJ="@kobe_pane_version",KR;var LX=k(()=>{aJ();E1();e1();Tf();qJ();bq();D1();Qz();QG();KR=`#{window_id} #{pane_id} #{@kobe_role} #{${KJ}} #{pane_width}`});function FR(f){let J=[];for(let Y of f.split(`
|
|
64
|
+
`)){let z=Y.trim();if(!z)continue;let[G,X,q,Q,H,B,V]=z.split("\t");if(!G)continue;let j=Number.parseInt(Q??"",10),U=Number.parseInt(H??"",10),L=Number.parseInt(B??"",10),O=Number.parseInt(V??"",10);J.push({paneId:G.trim(),role:X?.trim()??"",active:q?.trim()==="1",paneWidth:Number.isFinite(j)?j:0,paneHeight:Number.isFinite(U)?U:0,windowWidth:Number.isFinite(L)?L:0,windowHeight:Number.isFinite(O)?O:0})}return J}function OR(f){let J=f.find((z)=>z.role===Yz);if(!J)return{kind:"missing-engine"};let Y=f.filter((z)=>z.role===_G);if(Y.length+1>=uH)return{kind:"maxed"};if(Y.length===0)return{kind:"split",targetPane:J.paneId,direction:"-h"};if(Y.length===1)return{kind:"split",targetPane:Y[0]?.paneId??J.paneId,direction:"-v"};return{kind:"split",targetPane:J.paneId,direction:"-v"}}function lB(f){return f.find((J)=>J.role===XJ)??f.find((J)=>J.role==="")}function AR(f){return 100-(pJ(f??Number.NaN)??tG)}function gR(f){let J=Number.parseInt(f??"",10);return Number.isFinite(J)&&J>0?J:void 0}async function w1(f,J){let Y=J?.trim()||`=${f}`,{code:z,stdout:G}=await d0(["list-panes","-t",Y,"-F",MR]);return z===0?FR(G):null}async function RR(f){let{code:J,stdout:Y}=await d0(["list-windows","-t",`=${f}`,"-F","#{window_active}\t#{window_id}"]);if(J!==0)return"";for(let z of Y.split(`
|
|
65
|
+
`)){let[G,X]=z.split("\t");if(G?.trim()==="1"&&X?.trim())return X.trim()}return""}async function tJ(f,J){let{code:Y,stdout:z}=await d0(["show-options","-wqv","-t",f,J]);return Y===0?z.trim():""}async function aB(f,J,Y){await h0(["set-window-option","-t",f,J,Y])}async function SY(f,J){await h0(["set-window-option","-u","-t",f,J])}async function $B(f){let{code:J,stdout:Y}=await d0(["display-message","-p","-t",f,"#{pane_id}"]);return J===0&&Y.trim()===f}async function Nf(f,J){await h0(["display-message","-t",f,J])}async function Tq(f){let J=await C1(f,["@kobe_worktree","@kobe_task","@kobe_vendor"]);return{cwd:J["@kobe_worktree"]||process.cwd(),taskId:J["@kobe_task"]||void 0,vendor:J["@kobe_vendor"]||void 0}}function CR(f){let J=Cf(),Y=_f();return R1(Y+nz({cwd:f.cwd,taskId:f.taskId,claudePaneId:f.enginePaneId,cliInvocation:J,vendor:f.vendor}))}async function kR(f,J){return J?.trim()||await RR(f)}async function NR(f,J){let Y=await w1(f,J);if(!Y)return;let z=OR(Y);if(z.kind==="missing-engine"){await Nf(J,"kobe: no engine pane in this window");return}if(z.kind==="maxed"){await Nf(J,`kobe: workspace split limit is ${uH} panes`);return}let{cwd:G}=await Tq(f),{code:X,stdout:q}=await d0(["split-window",z.direction,"-t",z.targetPane,"-l","50%","-c",If(G),"-P","-F","#{pane_id}",R1("true")]),Q=q.trim();if(X!==0||!Q)return;await Pf([["set-option","-p","-t",Q,"@kobe_role",_G],["select-pane","-t",Q]])}async function yR(f,J){let Y=await w1(f,J);if(!Y)return;let z=Y.filter((q)=>q.role===_G);if(z.length===0){await Nf(J,"kobe: no workspace split to close");return}let X=z.find((q)=>q.active)??z[z.length-1];if(!X)return;await h0(["kill-pane","-t",X.paneId])}async function bR(f,J){let Y=await w1(f,J);if(!Y)return;let z=Y.filter((G)=>G.role===_G);if(z.length===0){await Nf(J,"kobe: no workspace splits to reset");return}await Pf(z.map((G)=>["kill-pane","-t",G.paneId]))}async function U5(){let f=await OY([$J]);return zz(gR(f[$J])??Jz)}async function SR(f){let{cwd:J,taskId:Y}=await Tq(f),z=Cf(),G=_f();return{cwd:J,command:R1(G+DY(z,{initialTaskId:Y}))}}async function D5(f,J){let Y=await w1(f,J);if(!Y)return;let z=Y.find((M)=>M.role===GJ);if(z){await h0(["kill-pane","-t",z.paneId]);return}let G=lB(Y),X=Y.find((M)=>M.role===Yz);if(!X){await Nf(J,"kobe: cannot restore file pane in this layout");return}let{cwd:q,taskId:Q,vendor:H}=await Tq(f),B=CR({cwd:q,taskId:Q,vendor:H,enginePaneId:X.paneId}),V=G?["split-window","-v","-b","-t",G.paneId,"-l",`${await IR()}%`,"-c",If(q),"-P","-F","#{pane_id}",B]:["split-window","-h","-t",X.paneId,"-l",`${await rB()}%`,"-c",If(q),"-P","-F","#{pane_id}",B],{code:j,stdout:U}=await d0(V),L=U.trim();if(j!==0||!L)return;let O=[["set-option","-p","-t",L,"@kobe_role",GJ],["set-option","-p","-t",L,KJ,s0]];if(G?.role==="")O.push(["set-option","-p","-t",G.paneId,"@kobe_role",XJ]);await Pf(O)}async function IR(){let f=await OY([rJ]);return pJ(Number.parseInt(f[rJ]??"",10))??tG}async function rB(){let f=await OY([Gz]);return pJ(Number.parseInt(f[Gz]??"",10))??100-vZ}async function L5(){let f=await OY([rJ]);return AR(Number.parseInt(f[rJ]??"",10))}async function TR(f){let{code:J,stdout:Y}=await d0(["list-windows","-t",`=${f}`,"-F","#{window_index}"]);if(J!==0)return new Set;return new Set(Y.split(`
|
|
66
|
+
`).map((z)=>Number.parseInt(z.trim(),10)).filter((z)=>Number.isFinite(z)))}async function M5(f,J){let Y=await TR(f),z=sW(J);while(Y.has(z))z++;return z}async function F5(f){let J=sG(f);if(await Hf(J))return J;return await h0(["new-session","-d","-s",J,"-n","hidden-panes","-c",If(process.cwd()),"while :; do sleep 3600; done"]),J}async function pB(f){let J=sG(f);if(!await Hf(J))return;let{code:Y,stdout:z}=await d0(["list-panes","-s","-t",`=${J}`,"-F","#{@kobe_role}"]);if(Y!==0)return;if(!z.split(`
|
|
67
|
+
`).some((X)=>{let q=X.trim();return q===XJ||q===i1}))await h0(["kill-session","-t",`=${J}`])}async function uR(f,J){await O5(f,J,ZJ)}async function ER(f,J){await O5(f,J,A1)}async function O5(f,J,Y){let z=await tJ(J,Y);if(!z)return;if(await $B(z))await h0(["kill-pane","-t",z]);await SY(J,Y)}async function xR(f,J){await uR(f,J),await ER(f,J),await pB(f)}function A5(f){return f.find((J)=>J.role===Yz)??f[0]}async function _B(f,J,Y){let z=A5(Y);if(!z)return await Nf(J,"kobe: cannot restore Tasks pane in this layout"),!1;let G=await U5(),{cwd:X,command:q}=await SR(f),{code:Q,stdout:H}=await d0(["split-window","-h","-b","-t",z.paneId,"-l",`${G}`,"-c",If(X),"-P","-F","#{pane_id}",q]),B=H.trim();if(Q!==0||!B)return!1;return await Pf([["set-option","-p","-t",B,"@kobe_role",i1],["set-option","-p","-t",B,KJ,s0],["select-pane","-t",B]]),await SY(J,A1),await Nf(J,"kobe: Tasks pane restored"),!0}async function g5(f,J,Y){let z=await F5(f),G=await M5(z,J),{code:X,stdout:q}=await d0(["break-pane","-d","-s",Y.paneId,"-t",`${z}:${G}`,"-P","-F","#{pane_id}"]),Q=q.trim()||Y.paneId;if(X!==0||!Q){await Nf(J,"kobe: could not hide Tasks pane");return}await aB(J,A1,Q),await Nf(J,"kobe: Tasks pane hidden")}async function oB(f,J,Y){let z=await w1(f,J);if(!z)return;if(!await $B(Y)){await SY(J,A1);let q=z.find((Q)=>Q.role===i1);if(q){await h0(["select-pane","-t",q.paneId]);return}await _B(f,J,z);return}let G=A5(z);if(!G){await Nf(J,"kobe: cannot restore Tasks pane in this layout");return}if(await h0(["join-pane","-h","-b","-s",Y,"-t",G.paneId,"-l",`${await U5()}`])!==0){await Nf(J,"kobe: could not restore Tasks pane");return}await Pf([["set-option","-p","-t",Y,"@kobe_role",i1],["set-option","-p","-t",Y,KJ,s0],["select-pane","-t",Y]]),await SY(J,A1),await pB(f),await Nf(J,"kobe: Tasks pane restored")}async function wR(f,J){let Y=await tJ(J,A1);if(Y){await oB(f,J,Y);return}let z=await w1(f,J);if(!z)return;let G=z.find((X)=>X.role===i1);if(G){await g5(f,J,G);return}await _B(f,J,z)}async function hR(f,J){let Y=await tJ(J,A1);if(Y){await oB(f,J,Y);return}let z=await w1(f,J);if(!z)return;let G=z.find((X)=>X.role===i1);if(G){await h0(["select-pane","-t",G.paneId]);return}await _B(f,J,z)}async function R5(f,J,Y){if(Y.role==="")await h0(["set-option","-p","-t",Y.paneId,"@kobe_role",XJ]);let z=await F5(f),G=await M5(z,J),{code:X,stdout:q}=await d0(["break-pane","-d","-s",Y.paneId,"-t",`${z}:${G}`,"-P","-F","#{pane_id}"]),Q=q.trim()||Y.paneId;if(X!==0||!Q){await Nf(J,"kobe: could not hide terminal pane");return}await aB(J,ZJ,Q),await Nf(J,"kobe: Terminal pane hidden")}async function C5(f,J,Y){let z=Y.find((V)=>V.role===GJ),G=Y.find((V)=>V.role===Yz);if(!z&&!G)return await Nf(J,"kobe: cannot restore terminal pane in this layout"),!1;let{cwd:X}=await Tq(f),q=z?["split-window","-v","-t",z.paneId,"-l",`${await L5()}%`,"-c",If(X),"-P","-F","#{pane_id}"]:["split-window","-h","-t",G?.paneId??"","-l",`${await rB()}%`,"-c",If(X),"-P","-F","#{pane_id}"],{code:Q,stdout:H}=await d0(q),B=H.trim();if(Q!==0||!B)return!1;return await h0(["set-option","-p","-t",B,"@kobe_role",XJ]),await SY(J,ZJ),await Nf(J,"kobe: Terminal pane restored"),!0}async function k5(f,J,Y){let z=await w1(f,J);if(!z)return;if(!await $B(Y)){await SY(J,ZJ),await C5(f,J,z);return}let G=z.find((B)=>B.role===GJ),X=z.find((B)=>B.role===Yz);if(!G&&!X){await Nf(J,"kobe: cannot restore terminal pane in this layout");return}let q=G?["join-pane","-v","-s",Y,"-t",G.paneId,"-l",`${await L5()}%`]:["join-pane","-h","-s",Y,"-t",X?.paneId??"","-l",`${await rB()}%`];if(await h0(q)!==0){await Nf(J,"kobe: could not restore terminal pane");return}await h0(["set-option","-p","-t",Y,"@kobe_role",XJ]),await SY(J,ZJ),await pB(f),z=await w1(f,J);let H=z?.find((B)=>B.paneId===Y);if(H)await h0(["select-pane","-t",H.paneId]);await Nf(J,"kobe: Terminal pane restored")}async function PR(f,J){let Y=await tJ(J,ZJ);if(Y){await k5(f,J,Y);return}let z=await w1(f,J);if(!z)return;let G=lB(z);if(G){await R5(f,J,G);return}await C5(f,J,z)}async function vR(f){if((await Bz(f,oG)).length>0){await cR(f);return}await mR(f)}async function N5(f){let{code:J,stdout:Y}=await d0(["list-windows","-t",`=${f}`,"-F","#{window_id}"]);if(J!==0)return[];return Y.split(`
|
|
68
|
+
`).map((z)=>z.trim()).filter((z)=>z.length>0)}async function y5(f,J){return!!(await w1(f,J))?.some((z)=>z.role===Yz)}async function mR(f){let J=await N5(f);for(let Y of J){if(!await y5(f,Y))continue;if(await tJ(Y,UY))continue;await S5(f,Y)}await FY(f,oG,"1"),await Nf(`=${f}`,"kobe: Zen mode on \u2014 all tabs")}async function cR(f){let J=await N5(f);for(let Y of J){let z=await tJ(Y,UY);if(z)await nR(f,Y,z)}await h0(["set-option","-u","-t",f,oG]),await Nf(`=${f}`,"kobe: Zen mode off \u2014 all tabs")}async function b5(f,J){if((await Bz(f,oG)).length===0)return;if(await tJ(J,UY))return;if(!await y5(f,J))return;await S5(f,J)}async function S5(f,J){let Y=await w1(f,J);if(!Y)return;let z=[],G=Y.find((q)=>q.role===GJ);if(G)await h0(["kill-pane","-t",G.paneId]),z.push(GJ);let X=lB(Y);if(X)await R5(f,J,X),z.push(XJ);if(!Y5()){let q=Y.find((Q)=>Q.role===i1);if(q)await g5(f,J,q),z.push(i1)}if(z.length===0){await Nf(J,"kobe: already focused \u2014 nothing to hide");return}await aB(J,UY,z.join(",")),await Nf(J,"kobe: Zen mode on")}async function nR(f,J,Y){let z=new Set(Y.split(",").map((G)=>G.trim()));if(z.has(i1)){let G=await tJ(J,A1);if(G)await oB(f,J,G)}if(z.has(GJ)){let G=await w1(f,J);if(G&&!G.some((X)=>X.role===GJ))await D5(f,J)}if(z.has(XJ)){let G=await tJ(J,ZJ);if(G)await k5(f,J,G)}await SY(J,UY),await Nf(J,"kobe: Zen mode off")}async function dR(f){let{code:J,stdout:Y}=await d0(["list-windows","-t",`=${f}`,"-F","#{window_id}"]);if(J!==0)return 0;return Y.split(`
|
|
69
|
+
`).filter((z)=>z.trim().length>0).length}async function iR(f,J){if(await dR(f)<=1){await Nf(J,"Cannot close the only ChatTab");return}await xR(f,J),await h0(["kill-window","-t",J])}async function uq(f,J,Y={}){if(!await Hf(f))return;let z=await kR(f,Y.windowId);if(!z)return;switch(J){case"workspace-split":await NR(f,z);return;case"workspace-close":await yR(f,z);return;case"workspace-reset":await bR(f,z);return;case"tasks-toggle":await wR(f,z);return;case"tasks-restore":await hR(f,z);return;case"ops-toggle":await D5(f,z);return;case"terminal-toggle":await PR(f,z);return;case"zen-toggle":await vR(f);return;case"chat-tab-close":await iR(f,z);return}}var MR="#{pane_id}\t#{@kobe_role}\t#{pane_active}\t#{pane_width}\t#{pane_height}\t#{window_width}\t#{window_height}";var Eq=k(()=>{aJ();e1();cB();Tf();qJ();D1();Qz();LX()});function wq(f,J){return[["bind-key","-n",f,"if-shell","-F","#{?#{@kobe_surface},0,1}","previous-window"],["bind-key","-n",J,"if-shell","-F","#{?#{@kobe_surface},0,1}","next-window"]]}function hq(f,J="kill-window"){return["bind-key","-n",f,"if-shell","-F","#{>:#{session_windows},1}",J,"display-message 'Cannot close the only ChatTab'"]}function Pq(f){return["bind-key","-n",f,"command-prompt","-I","#{window_name}","rename-window -- '%%'"]}function vq(f){return[["bind-key","-n",f,"command-prompt","-p",xq],["bind-key","T","command-prompt","-p",xq]]}function sB(f){return f.startsWith("C-")&&f.length===3?`^${f.slice(2)}`:f}function mq(f){return`${[f.focusLeft?`${sB(f.focusLeft)} tasks`:null,f.detach?`${sB(f.detach)} detach`:null,f.newTab?`${sB(f.newTab)} tab`:null,f.layoutSplits?`prefix ${f.layoutSplits} splits`:null,f.layoutPanes?`prefix ${f.layoutPanes} panes`:null].filter((Y)=>Y!==null).join(" ")} `}async function eB(f,J){let Y=_f(),z=await $Z(),G=R1(J.opsCommand??Y+nz({cwd:J.cwd,taskId:J.taskId,claudePaneId:f,cliInvocation:J.inv,vendor:J.vendor})),{stdout:X}=await YX([["set-option","-p","-t",f,"@kobe_role","claude"],["set-window-option","-t",f,tB,"idle"],["split-window","-h","-b","-t",f,"-l",`${z}`,"-c",If(J.cwd),"-P","-F","tasks=#{pane_id}",R1(Y+DY(J.inv,{initialTaskId:J.taskId}))],["split-window","-h","-t",f,"-l",`${100-vZ}%`,"-c",If(J.cwd),"-P","-F","ops=#{pane_id}",G],["split-window","-v","-l",`${100-tG}%`,"-c",If(J.cwd),"-P","-F","shell=#{pane_id}"],["select-pane","-t",f]]),q=Object.fromEntries(X.split(`
|
|
70
|
+
`).map((Q)=>Q.trim()).filter(Boolean).map((Q)=>Q.split("=",2)));if(await Pf([...q.tasks?[["set-option","-p","-t",q.tasks,"@kobe_role",i1]]:[],...q.tasks?[["set-option","-p","-t",q.tasks,KJ,s0]]:[],...q.ops?[["set-option","-p","-t",q.ops,"@kobe_role",GJ]]:[],...q.ops?[["set-option","-p","-t",q.ops,KJ,s0]]:[],...q.shell?[["set-option","-p","-t",q.shell,"@kobe_role",XJ]]:[]]),q.ops){let Q=await W5();if(Q.length>0)await h0(["resize-pane","-t",q.ops,...Q])}}async function I5(f,J){if(!await Hf(f))return;let Y=await C1(f,["@kobe_worktree","@kobe_task","@kobe_vendor",JX]),z=Y["@kobe_worktree"]||process.cwd(),G=Y["@kobe_task"]||void 0,X=Y[JX]||void 0,q=J??Y["@kobe_vendor"];if(J)await lR(f,G,J);let Q=N1(q),H=pz(Q,q),B=Cf(),j=(await d0(["new-window","-t",`=${f}`,"-c",If(z),"-P","-F","#{pane_id}",R1(iz(g1(H.argv),X,z))])).stdout.trim();if(!j)return;if(H.sessionId)await AY(j,yJ,H.sessionId);await eB(j,{cwd:z,taskId:G,inv:B,vendor:q});let{stdout:U}=await d0(["display-message","-p","-t",j,"#{window_id}"]),L=U.trim();if(L)await b5(f,L)}async function nq(f){if(!await Hf(f))return;let Y=(await C1(f,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),z=Cf(),X=`${_f()}${z.map(Xf).join(" ")} settings`;await HJ(f,{cwd:If(Y),command:X,name:"settings",surface:!0})}async function dq(f){if(!await Hf(f))return;let Y=(await C1(f,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),z=Cf(),X=`${_f()}${z.map(Xf).join(" ")} help-page`;await HJ(f,{cwd:If(Y),command:X,name:"help",surface:!0})}async function iq(f,J){if(!await Hf(f))return;let z=(await C1(f,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),G=Cf(),X=_f(),q=J?` --repo ${Xf(J)}`:"",Q=`${X}${G.map(Xf).join(" ")} new-task${q}`;await HJ(f,{cwd:If(z),command:Q,name:"new task",surface:!0})}async function lq(f){if(!await Hf(f))return;let Y=(await C1(f,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),z=Cf(),X=`${_f()}${JV({cliInvocation:z})}`;await HJ(f,{cwd:If(Y),command:X,name:"update",surface:!0})}async function T5(f){if(!await Hf(f))return;let Y=(await C1(f,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),z=Cf(),X=`${_f()}${z.map(Xf).join(" ")} quick-task --session ${Xf(f)}`;await HJ(f,{cwd:If(Y),command:X,name:"quick task",surface:!0})}async function lR(f,J,Y){if(await FY(f,"@kobe_vendor",Y),!J)return;try{let{connectOrStartDaemon:z}=await Promise.resolve().then(() => (y1(),Jj)),G=await z();try{await G.request("task.setVendor",{taskId:J,vendor:Y})}finally{G.close()}}catch(z){console.error("[kobe tmux] failed to persist selected engine vendor:",z)}}var xq,tB="@kobe_tab_state",MX="#{?#{==:#{@kobe_tab_state},running},\u25CF,#{?#{==:#{@kobe_tab_state},done},\u2713,#{?#{==:#{@kobe_tab_state},error},!,#{?#{==:#{@kobe_tab_state},unknown},?,\u25CB}}}} #I:#W",cq;var fj=k(()=>{aJ();E1();e1();Tf();qJ();U1();D1();Qz();Eq();LX();xq=`engine (${cf.join("/")}/\u2026)`;cq=MX});var r1={};jf(r1,{tmuxWindowSizeArgsForClient:()=>Gj,tmuxSessionName:()=>Lf,tmuxInitialSizeArgs:()=>E5,tmuxInitialClientSize:()=>zj,tmuxAvailable:()=>NJ,switchClientBeforeKill:()=>bJ,sessionExists:()=>Hf,selectTasksPane:()=>tR,runLayoutAction:()=>uq,resyncWindowToClient:()=>rR,refreshKobeWorkspacePanes:()=>BG,quickCreate:()=>T5,prepareWindowForSwitch:()=>$q,prepareWindowForAttach:()=>aq,parseTmuxClientRows:()=>x5,parseObservedSession:()=>P5,openUpdateTab:()=>lq,openSettingsTab:()=>nq,openNewTaskTab:()=>iq,openHelpTab:()=>dq,newChatTab:()=>I5,kobeStatusRight:()=>mq,killSession:()=>l1,healSessionLayout:()=>V5,focusBindCommand:()=>h5,ensureSession:()=>TY,currentSessionName:()=>k1,clientsWithConflictingSize:()=>w5,chatTabSwitchBindings:()=>wq,chatTabRenameBinding:()=>Pq,chatTabCloseBinding:()=>hq,chatTabChooseEngineBindings:()=>vq,captureGlobalLayoutOnDrag:()=>K5,captureGlobalLayout:()=>DX,attachArgv:()=>az,PANE_VERSION_OPTION:()=>KJ,CHAT_TAB_STATUS_FORMAT:()=>MX,CHAT_TAB_STATUS_CURRENT_FORMAT:()=>cq,CHAT_TAB_STATE_OPTION:()=>tB,CHAT_TAB_ENGINE_PROMPT:()=>xq});function E5(f=process.stdout,J=process.env){let Y=zj(f,J);return Y?["-x",`${Y.columns}`,"-y",`${Y.rows}`]:[]}function zj(f=process.stdout,J=process.env){let Y=IY(f.columns)??IY(J.COLUMNS),z=IY(f.rows)??IY(J.LINES);return Y&&z?{columns:Y,rows:z}:null}function IY(f){let J=typeof f==="number"?f:typeof f==="string"?Number.parseInt(f,10):Number.NaN;return Number.isInteger(J)&&J>0?J:void 0}function x5(f){let J=[];for(let Y of f.split(`
|
|
71
|
+
`)){let[z,G,X,q,Q]=Y.split("\t"),H=IY(X?.trim()),B=IY(q?.trim());if(!z?.trim()||!G?.trim()||!H||!B)continue;J.push({name:z.trim(),session:G.trim(),width:H,height:B,flags:Q?.trim()??""})}return J}function w5(f,J,Y,z={}){return f.filter((G)=>G.session===J).filter((G)=>G.name!==z.currentClientName).filter((G)=>G.width!==Y.columns||G.height!==Y.rows).map((G)=>G.name)}function Gj(f,J){let Y=Math.max(1,f.rows-(J.status?.trim()==="on"?1:0));return["-x",`${f.columns}`,"-y",`${Y}`]}async function Xj(f,J,Y={}){if(!J)return;let{code:z,stdout:G}=await d0(["list-clients","-t",`=${f}`,"-F",aR]);if(z!==0)return;let X=w5(x5(G),f,J,Y),q=[];if(Y.currentClientName)q.push(["refresh-client","-f","!ignore-size","-t",Y.currentClientName]);for(let Q of X)q.push(["refresh-client","-f","ignore-size","-t",Q]);if(q.length>0)await Pf(q)}async function aq(f){bY(f,"resize");let J=zj();await Xj(f,J);let Y=J?["-x",`${J.columns}`,"-y",`${J.rows}`]:[];if(Y.length>0)await h0(["resize-window","-t",`=${f}`,...Y]);await HG(f)}async function $R(){let{code:f,stdout:J}=await d0(["display-message","-p","#{client_name}\t#{client_width}\t#{client_height}\t#{status}"]);if(f!==0)return{sizeArgs:[],clientSize:null,clientName:void 0};let[Y,z,G,X]=J.trim().split("\t"),q=IY(z),Q=IY(G),H=q&&Q?{columns:q,rows:Q}:null;return{sizeArgs:H?Gj(H,{status:X}):[],clientSize:H,clientName:Y?.trim()||void 0}}async function $q(f){bY(f,"resize");let J=await $R();await Xj(f,J.clientSize,{currentClientName:J.clientName});let Y=J.sizeArgs;if(Y.length>0)await h0(["resize-window","-t",`=${f}`,...Y]);await HG(f)}async function rR(f,J){if(!J.size)return;bY(f,"resize"),await Xj(f,J.size,{currentClientName:J.clientName});let Y=Gj(J.size,{status:J.status}),{commands:z}=await iB(f,{force:!0});await Pf([["resize-window","-t",`=${f}`,...Y],...z])}function h5(f,J,Y){let z=`#{?window_zoomed_flag,1,#{?${pR[J]},,1}}`;if(Y)return["bind-key","-n",f,"if-shell","-F",z,`select-pane ${J}`,Y];return["bind-key","-n",f,"if-shell","-F",z,`select-pane ${J}`]}async function TY(f){let J=Yj.get(f.name);if(J)return J;let Y=sR(f);Yj.set(f.name,Y);try{return await Y}finally{Yj.delete(f.name)}}function P5(f){let J="",Y="",z=!1,G=new Set;for(let X of f.split(`
|
|
72
|
+
`)){let[q,Q,H,B,V]=X.split("\t");if(!q?.trim())continue;if(G.add(q.trim()),!J&&B?.trim())J=B.trim();if(!Y&&V?.trim())Y=V.trim();if(Q?.trim()==="1"&&H?.trim()==="claude")z=!0}return{worktree:J,vendor:Y,claudePaneAlive:z,windowCount:G.size}}async function oR(f){if(!await Hf(f))return null;let{code:J,stdout:Y}=await d0(["list-panes","-s","-t",`=${f}`,"-F",_R]);if(J!==0)return{worktree:"",vendor:"",claudePaneAlive:!1,windowCount:0};return P5(Y)}async function sR(f){let J=f.launchInit,Y=await oR(f.name),z=p7(Y,{cwd:f.cwd,vendor:f.vendor,hasEngineCommand:f.command.length>0}),G=h9(f.repo);if(z.kind==="reuse")return await HG(f.name,{cwd:f.cwd,taskId:f.taskId,vendor:f.vendor}),!0;if(z.kind==="respawn-engine"){if(await B5(f.name,f.cwd,f.command,G,f.vendor)){if(f.vendor)await FY(f.name,"@kobe_vendor",f.vendor);return await HG(f.name,{cwd:f.cwd,taskId:f.taskId,vendor:f.vendor,vendorChanged:!0}),!0}}if(z.kind==="rebuild"||z.kind==="respawn-engine")await l1(f.name);let X=Cf(),q=pz(f.command,f.vendor),Q=f.repo!==void 0&&f.cwd===f.repo,H=Q||G?void 0:f.taskId,B=Q&&!G?f.taskId:void 0,V=Xq(Gq(q.argv,f.vendor,H),f.vendor,B),j=iz(g1(V),G,f.cwd),L=(await d0(["new-session","-d","-s",f.name,"-c",If(f.cwd),...E5(),"-P","-F","#{pane_id}",eW(j,{initScript:G?void 0:J?.initScript,markerPath:!G&&J?.initScript?Z9(f.cwd):void 0})])).stdout.trim();if(!L)return console.error("[kobe tmux] new-session returned no pane id; session creation failed"),!1;if(q.sessionId)await AY(L,yJ,q.sessionId);await Pf([...f.taskId?[["set-option","-t",f.name,"@kobe_task",f.taskId]]:[],["set-option","-t",f.name,"@kobe_worktree",f.cwd],...f.vendor?[["set-option","-t",f.name,"@kobe_vendor",f.vendor]]:[],...G?[["set-option","-t",f.name,JX,G]]:[]]),await eB(L,{cwd:f.cwd,taskId:f.taskId,opsCommand:f.opsCommand,inv:X,vendor:f.vendor});let O=_f(),M=X.map(Xf).join(" "),R=`${O}${M} new-chattab --session '#{session_name}'`,S=`${R} --vendor '%%'`,a=`run-shell ${Xf(S)}`,N=`${O}${M} focus-tasks --session '#{session_name}' --window '#{window_id}'`,g=`run-shell ${Xf(N)}`,C=(H0)=>`${O}${M} layout --session '#{session_name}' --window '#{window_id}' --action ${H0}`,y=C("tasks-restore"),_=`run-shell ${Xf(y)}`,z0=C("chat-tab-close"),t=`run-shell ${Xf(z0)}`,Y0=`${O}${M} heal-layout --session '#{session_name}'`,T=`run-shell -b ${Xf(Y0)}`,Q0=`${O}${M} resync-window --session '#{session_name}' --client '#{client_name}' --cols '#{client_width}' --rows '#{client_height}' --status '#{status}'`,p=`run-shell -b ${Xf(Q0)}`,D0=`${O}${M} capture-layout --session '#{session_name}'`,g0=`run-shell -b ${Xf(D0)}`,$=YV({tmuxSocket:QJ}),E=gq(),f0=i7.map((H0)=>["unbind-key","-n",H0]);if(E.overridden.has(SJ))for(let H0 of yY){let y0=Az(H0);if("key"in y0)f0.push(["unbind-key","-n",y0.key])}for(let H0 of E.overridden){if(H0===SJ)continue;let y0=Oz[H0],w0=ZG(H0),T0=Az(y0,{allowBare:w0});if("key"in T0)f0.push(w0?["unbind-key",T0.key]:["unbind-key","-n",T0.key])}let I=["-L","-D","-U","-R"],G0=E.focus.flatMap((H0,y0)=>{let w0=I[y0],T0=w0==="-L"?_:void 0;return H0&&w0?[h5(H0.key,w0,T0)]:[]}),x=E.binds,c=(H0,y0)=>{let w0=x[H0];return w0?[["bind-key",w0.key,"run-shell",C(y0)]]:[]},Z0=(...H0)=>{let y0=H0.map((w0)=>x[w0]?.chord).filter((w0)=>!!w0);return y0.length>0?y0.join("/"):null};await Pf([["set-option","-g","status","on"],["set-window-option","-g","aggressive-resize","on"],["set-option","-g","monitor-activity","on"],["set-option","-g","visual-activity","off"],["set-option","-g","window-status-format",MX],["set-option","-g","window-status-current-format",cq],["set-option","-g","status-right",mq({focusLeft:E.focus[0]?.key??null,detach:x["tmux.detach"]?.key??null,newTab:x["tmux.tab.new"]?.key??null,layoutSplits:Z0("tmux.layout.workspaceSplit","tmux.layout.workspaceClose","tmux.layout.workspaceReset"),layoutPanes:Z0("tmux.layout.tasksToggle","tmux.layout.opsToggle","tmux.layout.terminalToggle","tmux.layout.zenToggle")})],["set-option","-g","mouse","on"],["set-hook","-g","window-resized",T],["set-hook","-g","client-resized",p],["set-hook","-g","window-layout-changed",g0],...f0,...x["tmux.detach"]?[["bind-key","-n",x["tmux.detach"].key,"if-shell","-F",`#{?#{${A1}},1,#{==:#{@kobe_role},tasks}}`,"detach-client",g]]:[],...G0,...x["tmux.tab.new"]?[["bind-key","-n",x["tmux.tab.new"].key,"run-shell",R]]:[],...x["tmux.tab.chooseEngine"]?vq(x["tmux.tab.chooseEngine"].key).map((H0)=>[...H0,a]):[],...x["tmux.tab.prev"]&&x["tmux.tab.next"]?wq(x["tmux.tab.prev"].key,x["tmux.tab.next"].key):x["tmux.tab.prev"]?[["bind-key","-n",x["tmux.tab.prev"].key,"previous-window"]]:x["tmux.tab.next"]?[["bind-key","-n",x["tmux.tab.next"].key,"next-window"]]:[],...x["tmux.tab.close"]?[hq(x["tmux.tab.close"].key,t)]:[],...x["tmux.tab.rename"]?[Pq(x["tmux.tab.rename"].key)]:[],...c("tmux.layout.workspaceSplit","workspace-split"),...c("tmux.layout.workspaceClose","workspace-close"),...c("tmux.layout.workspaceReset","workspace-reset"),...c("tmux.layout.tasksToggle","tasks-toggle"),...c("tmux.layout.opsToggle","ops-toggle"),...c("tmux.layout.terminalToggle","terminal-toggle"),...c("tmux.layout.zenToggle","zen-toggle"),["bind-key","f","run-shell",`${O}${M} quick-create --session '#{session_name}'`],["bind-key","u","display-popup","-E",$]]),await gz(),await h0(["select-pane","-t",L]);let V0=J?.firstMessage;if(V0)r7(f.name,V0).catch((H0)=>console.error("[kobe tmux] first message delivery failed:",H0));return!0}async function u5(f,J,Y){let z=Y?.trim()||`=${f}`,{code:G,stdout:X}=await d0(["list-panes","-t",z,"-F","#{pane_id}\t#{@kobe_role}"]);if(G!==0)return"";for(let q of X.split(`
|
|
73
|
+
`)){let[Q,H]=q.split("\t");if(Q?.trim()&&H?.trim()===J)return Q.trim()}return""}async function tR(f,J={}){if(!await Hf(f))return"";let Y=await u5(f,"tasks",J.windowId);if(!Y)await uq(f,"tasks-restore",{windowId:J.windowId}),Y=await u5(f,"tasks",J.windowId);if(!Y)return"";return await h0(["select-pane","-t",Y]),Y}var aR="#{client_name}\t#{client_session}\t#{client_width}\t#{client_height}\t#{client_flags}",pR,Yj,_R="#{window_id}\t#{window_active}\t#{@kobe_role}\t#{@kobe_worktree}\t#{@kobe_vendor}";var J1=k(()=>{aJ();E1();lf();e1();Tf();Rq();Cq();qJ();bq();fj();Qz();Eq();QG();LX();Tf();fj();LX();Eq();pR={"-L":"pane_at_left","-D":"pane_at_bottom","-U":"pane_at_top","-R":"pane_at_right"};Yj=new Map});async function eR(f,J){let{task:Y}=await f.request("task.get",{taskId:J});return Y}async function Zj(f,J){let Y=await eR(f,J);if(Y.worktreePath)return{task:Y,worktreePath:Y.worktreePath};let{worktreePath:z}=await f.request("task.ensureWorktree",{taskId:J});if(!z)throw Error(`task ${J} has no worktree`);return{task:Y,worktreePath:z}}async function v5(f,J){let{task:Y,worktreePath:z}=await Zj(f,J),G=Lf(J);if(!await Hf(G)){let X=sJ(Y.repo??"",z,{kind:"repo-init"});if(!await TY({name:G,cwd:z,command:N1(Y.vendor,Y.modelEffort),taskId:J,vendor:Y.vendor,launchInit:X}))throw Error(`failed to start tmux session for ${J}`)}return{session:G,worktreePath:z}}function f2(f){return PZ(f,{bareSafe:!0})}async function m5(f,J){let{task:Y,worktreePath:z}=await Zj(f,J),G=Y.kind==="main"?void 0:J,X=Y.kind==="main"?J:void 0,q=[...Xq(Gq(N1(Y.vendor,Y.modelEffort),Y.vendor,G),Y.vendor,X)],Q=sJ(Y.repo??"",z,{kind:"none"}),H=f2(q),B=Q.initScript?.trim()?`${Q.initScript}
|
|
74
|
+
${H}`:H,V=process.env.SHELL?.trim()||"/bin/zsh";return{cwd:z,command:[V,"-ilc",B]}}async function c5(f,J){let{worktreePath:Y}=await Zj(f,J),z=process.env.SHELL?.trim()||"/bin/zsh";return{cwd:Y,command:[z,"-il"]}}async function n5(f){let J=Lf(f);await bJ(J).catch(()=>{}),await l1(J).catch(()=>{})}var d5=k(()=>{E1();IH();GG();Tf();J1()});import{existsSync as J2}from"fs";import{join as i5,normalize as $5}from"path";function Y2(f){let J=null,Y=null,z=new TextEncoder,G=new ReadableStream({start(X){J=f((Q,H)=>{try{X.enqueue(z.encode(`event: ${Q}
|
|
74
75
|
data: ${JSON.stringify(H)}
|
|
75
76
|
|
|
76
|
-
`))}catch{}}),Y=setInterval(()=>{try{
|
|
77
|
-
|
|
78
|
-
`))}catch{}},15000)},cancel(){if(Y)clearInterval(Y);J?.()}});return new Response(G,{headers:{"content-type":"text/event-stream","cache-control":"no-cache, no-transform",connection:"keep-alive"}})}async function
|
|
79
|
-
`).map((z)=>Number.parseInt(z.trim(),10)).filter((z)=>Number.isFinite(z)&&z!==process.pid)}catch{return[]}}async function
|
|
80
|
-
`)){if(!z||z.startsWith("##"))continue;let G=z.charAt(0),
|
|
81
|
-
`,"utf8");async function Y0(){if(H.isStopping())return;H.markStopping(),await J.onStop?.(),setTimeout(()=>{
|
|
82
|
-
`);while(
|
|
83
|
-
`)}}return
|
|
84
|
-
|
|
85
|
-
${
|
|
86
|
-
`),process.exit(2)}function
|
|
87
|
-
`)}function
|
|
88
|
-
`)}function
|
|
89
|
-
`);return}let J=
|
|
90
|
-
`);return}process.stdout.write(`${
|
|
91
|
-
`)}var
|
|
92
|
-
`),
|
|
93
|
-
|
|
94
|
-
${
|
|
95
|
-
`),process.exit(2)}function
|
|
96
|
-
`);return}let{getRepoInitOverride:z,setRepoInitOverride:G,resolveRepoRoot:
|
|
97
|
-
`)});import{spawnSync as
|
|
77
|
+
`))}catch{}}),Y=setInterval(()=>{try{X.enqueue(z.encode(`: ping
|
|
78
|
+
|
|
79
|
+
`))}catch{}},15000)},cancel(){if(Y)clearInterval(Y);J?.()}});return new Response(G,{headers:{"content-type":"text/event-stream","cache-control":"no-cache, no-transform",connection:"keep-alive"}})}async function z2(f,J,Y){try{let{name:z,payload:G}=await f.json();if(!z)return Response.json({error:"missing rpc name"},{status:400});if(!x7.has(z))return Response.json({error:`rpc ${z} is not exposed to the web UI`},{status:403});let X=await J.request(z,G),q=G?.taskId;if(typeof q==="string"){let Q=z==="task.archive"&&G.archived!==!1;if(z==="task.delete"||Q)Y(q)}return Response.json({result:X})}catch(z){let G=z instanceof Error&&z.name!=="Error"?z.name:void 0;return Response.json({error:z instanceof Error?z.message:String(z),...G?{name:G}:{}},{status:500})}}async function G2(){try{let J=(await lJ()).map((Y)=>({id:Y,label:Vz(Y),effortLevels:pf(Y).effortLevels}));return Response.json({engines:J.length>0?J:[{id:"claude",label:"Claude"}]})}catch(f){return Response.json({error:f instanceof Error?f.message:String(f)},{status:500})}}function X2(){return Response.json({api:Kz()})}function Z2(){return Response.json({projects:c1()})}function uY(f,J=""){return typeof f==="string"?f:J}function q2(f,J){return typeof f==="boolean"?f:J}function s5(f){let J=f.customEngineIds;if(!Array.isArray(J))return[];return J.filter((Y)=>typeof Y==="string"&&o5.test(Y)&&!Q1(Y))}function Q2(f){return f.split(/[-_]+/).filter(Boolean).map((J)=>`${J.slice(0,1).toUpperCase()}${J.slice(1)}`).join(" ")}function H2(f,J){return uY(f[WJ(J)]).trim()||Vz(J)}function B2(f,J){return uY(f[jJ(J)]).trim()||BX(J).join(" ")}function t5(){let f=nf(),J=s5(f),Y=[...dY,...J],z=uY(f.lastSelectedVendor,"claude"),G=uY(f.focusAccent,"primary");return Response.json({activeTheme:uY(f.activeTheme,"claude"),transparentBackground:q2(f.transparentBackground,!1),focusAccent:_5.includes(G)?G:"primary",notificationsToast:f["notifications.toast.enabled"]!==!1,notificationsSound:f["notifications.sound.enabled"]!==!1,settingsSurface:Lz(f[oJ]??Dz),editorKind:_z(f[_J]??Zq),editorCustomCommand:uY(f[kY]),remoteProjects:f["experimental.remoteProjects"]===!0,autoStatus:f[jz]===!0,dispatcher:f[Wz]===!0,defaultEngine:z,engines:Y.map((X)=>({id:X,label:H2(f,X),command:B2(f,X),isBuiltin:Q1(X),isCustom:!Q1(X),isDefault:X===z}))})}function FX(f,J,Y){if(typeof Y==="string")f[J]=Y.trim()}function jG(f,J,Y){if(typeof Y==="boolean")f[J]=Y}async function j2(f){try{let J=await f.json(),Y={};if(FX(Y,"activeTheme",J.activeTheme),jG(Y,"transparentBackground",J.transparentBackground),_5.includes(J.focusAccent))Y.focusAccent=J.focusAccent;if(jG(Y,"notifications.toast.enabled",J.notificationsToast),jG(Y,"notifications.sound.enabled",J.notificationsSound),J.settingsSurface==="chattab"||J.settingsSurface==="taskpanel")Y[oJ]=J.settingsSurface;if(Uz.includes(J.editorKind))Y[_J]=J.editorKind;FX(Y,kY,J.editorCustomCommand),jG(Y,"experimental.remoteProjects",J.remoteProjects),jG(Y,jz,J.autoStatus),jG(Y,Wz,J.dispatcher),FX(Y,"lastSelectedVendor",J.defaultEngine);let z=nf(),G=s5(z),X=new Set([...dY,...G]),q=Array.isArray(J.engineUpdates)?J.engineUpdates:[];for(let Q of q){if(!Q||typeof Q!=="object")continue;let H=Q;if(typeof H.id!=="string"||!X.has(H.id))continue;FX(Y,jJ(H.id),H.command),FX(Y,WJ(H.id),H.label)}if(J.addEngine&&typeof J.addEngine==="object"){let Q=J.addEngine,H=typeof Q.id==="string"?Q.id.trim().toLowerCase():"";if(!o5.test(H)||Q1(H)||X.has(H))return Response.json({error:"invalid or duplicate engine id"},{status:400});Y.customEngineIds=[...G,H],Y[jJ(H)]=uY(Q.command).trim();let B=uY(Q.label).trim();Y[WJ(H)]=B&&B!==H?B:Q2(H)}if(typeof J.removeEngine==="string"){let Q=J.removeEngine;if(!Q1(Q)){if(Y.customEngineIds=G.filter((H)=>H!==Q),Y[jJ(Q)]=void 0,Y[WJ(Q)]=void 0,z.lastSelectedVendor===Q)Y.lastSelectedVendor="claude"}}if(Object.keys(Y).length>0)rY(Y);return t5()}catch(J){return Response.json({error:J instanceof Error?J.message:String(J)},{status:400})}}async function W2(f,J){try{let{taskId:Y}=await f.json();if(!Y)return Response.json({error:"missing taskId"},{status:400});return Response.json(await v5(J,Y))}catch(Y){return Response.json({error:Y instanceof Error?Y.message:String(Y)},{status:500})}}async function l5(f,J,Y){try{let z=f.searchParams.get("taskId");if(!z)return Response.json({error:"missing taskId"},{status:400});return Response.json(await Y(J,z))}catch(z){return Response.json({error:z instanceof Error?z.message:String(z)},{status:500})}}function e5(){return Response.json({review:kf(rq.review)??null,pr:kf(rq.pr)??null})}async function V2(f){try{let J=await f.json();if(typeof J.review==="string")af(rq.review,J.review);if(typeof J.pr==="string")af(rq.pr,J.pr);return e5()}catch(J){return Response.json({error:J instanceof Error?J.message:String(J)},{status:400})}}async function K2(f,J){let z=$5(i5(J,f==="/"?"/index.html":f));if(!z.startsWith(J))return new Response("forbidden",{status:403});let G=Bun.file(J2(z)?z:i5(J,"index.html"));if(!await G.exists())return new Response("kobe web assets not built \u2014 run `bun --filter kobe-web build`",{status:503});return new Response(G)}function U2(f){let{link:J,sseSends:Y,staticDir:z}=f,G=f.tearDownSession??((X)=>void n5(X));return async function(q){let Q=new URL(q.url);if(Q.pathname===p5)return new Response(r5);if(!T7(q.headers.get("origin"),{allowedHost:f.allowedHost}))return new Response("forbidden: cross-origin request rejected",{status:403});if(Q.pathname==="/events")return Y2((O)=>{let M=f.onSseOpen?.()??(()=>{});return O("snapshot",J.snapshot()),Y.add(O),()=>{Y.delete(O),M()}});if(Q.pathname==="/api/rpc"&&q.method==="POST")return z2(q,J,G);if(Q.pathname==="/api/session"&&q.method==="POST")return W2(q,J);if(Q.pathname==="/api/engine-spec"&&q.method==="GET")return l5(Q,J,m5);if(Q.pathname==="/api/terminal-spec"&&q.method==="GET")return l5(Q,J,c5);if(Q.pathname==="/api/engines"&&q.method==="GET")return G2();if(Q.pathname==="/api/cli-invocation"&&q.method==="GET")return X2();if(Q.pathname==="/api/projects"&&q.method==="GET")return Z2();if(Q.pathname==="/api/settings"&&q.method==="GET")return t5();if(Q.pathname==="/api/settings"&&q.method==="PATCH")return j2(q);if(Q.pathname==="/api/quick-prompts"&&q.method==="GET")return e5();if(Q.pathname==="/api/quick-prompts"&&q.method==="PUT")return V2(q);let H=await F7(q,Q);if(H)return H;let B=await H7(q,Q);if(B)return B;let V=await V7(q,Q);if(V)return V;let j=await b7(q,Q,J);if(j)return j;let U=await C7(q,Q);if(U)return U;let L=A7(q,Q);if(L)return L;if(z)return K2(Q.pathname,z);return new Response("not found",{status:404})}}function Rz(f,J){let Y=f.snapshot().find((z)=>z.channel===J);return Y?Y.payload:null}function qj(f){return f.length>1?f.replace(/\/+$/,""):f}function D2(f,J){let Y=qj(J),z=new Set([J]);for(let G of f){let X=qj(G.repo),q=qj(G.worktreePath);if(X===Y||q===Y){if(G.repo)z.add(G.repo);if(G.worktreePath)z.add(G.worktreePath)}}return[...z]}function fK(f){let J=QX();return{async request(Y,z){return await qX(J,Y,z,f.ctx(0))},snapshot(){let Y=f.orch.listTasks().map(zJ),z={},G=Rz(f.bus,"issue.snapshot");if(G)for(let Q of D2(Y,G.repoRoot))z[Q]={...G,repoRoot:Q};let X=Rz(f.bus,"task.jobs"),q=X?.phase==="running"?{[X.taskId]:X}:{};return{tasks:Y,activeTaskId:Rz(f.bus,"active-task")?.taskId??null,engineStates:f.activity.snapshotByTask(),update:Rz(f.bus,"update")?.info??null,jobs:q,worktreeChanges:Rz(f.bus,"worktree.changes")?.changes??{},issueSnapshots:z,deliver:Rz(f.bus,"session.deliver"),uiPrefs:Rz(f.bus,"ui-prefs"),connected:!0}}}}async function a5(f){try{let J=Bun.spawn(["lsof","-nP",`-iTCP:${f}`,"-sTCP:LISTEN","-t"],{stdout:"pipe",stderr:"ignore"});return(await new Response(J.stdout).text()).split(`
|
|
80
|
+
`).map((z)=>Number.parseInt(z.trim(),10)).filter((z)=>Number.isFinite(z)&&z!==process.pid)}catch{return[]}}async function L2(f,J=p5){let Y;try{Y=(await(await fetch(`http://localhost:${f}${J}`,{signal:AbortSignal.timeout(800)})).text()).trim()}catch{return}if(Y!==r5)throw Error(`port ${f} is in use by a non-kobe service; refusing to replace it`);let z=await a5(f);for(let X of z)try{process.kill(X,"SIGTERM")}catch{}let G=Date.now()+2000;while(Date.now()<G){if((await a5(f)).length===0)return;await new Promise((X)=>setTimeout(X,100))}}async function JK(f){if(f.takeover!==!1)await L2(f.port);let J=new Set,Y=f.onEvent((Q)=>{for(let H of J)H("channel",Q)}),z=f.hostname?.trim()||process.env.KOBE_WEB_HOST?.trim()||"127.0.0.1",G=u7(z),X=U2({link:f.link,sseSends:J,staticDir:f.staticDir?$5(f.staticDir):void 0,allowedHost:G,onSseOpen:f.onSseOpen}),q=Bun.serve({port:f.port,hostname:z,idleTimeout:0,fetch:X});return{port:q.port??f.port,hostname:z,close(){Y(),q.stop(!0)}}}var r5="kobe-web",p5="/__kobe_web",_5,o5,rq;var YK=k(()=>{fz();E1();MY();ZX();zq();Of();pY();qq();U1();B7();K7();O7();g7();oZ();sY();k7();E7();w7();d5();_5=["primary","success","info"],o5=/^[a-z][a-z0-9_-]{0,47}$/;rq={review:"boardPrompt.review",pr:"boardPrompt.pr"}});var zK={};jf(zK,{sameWorktreeChanges:()=>IJ,readWorktreeChanges:()=>F2,pickPushedChanges:()=>_q,parsePorcelain:()=>WG});import{spawnSync as M2}from"child_process";function IJ(f,J){return f.added===J.added&&f.deleted===J.deleted}function _q(f,J){if(!f)return null;return f.get(J)??pq}function F2(f){if(!f)return pq;try{let J=M2("git",["status","--porcelain=v1"],{cwd:f,encoding:"utf8",stdio:["ignore","pipe","pipe"],env:x1()});if(J.status!==0||!J.stdout)return pq;return WG(J.stdout)}catch{return pq}}function WG(f){let J=0,Y=0;for(let z of f.split(`
|
|
81
|
+
`)){if(!z||z.startsWith("##"))continue;let G=z.charAt(0),X=z.charAt(1);if(G==="D"||X==="D")Y+=1;else J+=1}return{added:J,deleted:Y}}var pq;var VG=k(()=>{NY();pq={added:0,deleted:0}});async function R2(f,J){let Y=await BJ("git",["status","--porcelain=v1"],{cwd:f,env:x1(),signal:J});if(Y.status!==0)throw Error("git status failed");return WG(Y.stdout)}function C2(f){let J=new Set;for(let Y of f){if(Y.archived)continue;if(!Y.worktreePath)continue;if(H1(Y.repo)||H1(Y.worktreePath))continue;J.add(Y.worktreePath)}return J}class GK{orch;bus;options;entries=new Map;stopped=!1;constructor(f,J,Y={}){this.orch=f;this.bus=J;this.options=Y}tick(){if(this.stopped)return;if(this.options.hasSubscribers&&!this.options.hasSubscribers())return;try{let f=C2(this.orch.listTasks()),J=!1;for(let Y of this.entries.keys()){if(f.has(Y))continue;if(this.entries.get(Y)?.value)J=!0;this.entries.delete(Y)}if(J)this.publish();for(let Y of f)this.maybeCollect(Y)}catch(f){uf("worktree-changes",f)}}stop(){this.stopped=!0}maybeCollect(f){let J=this.entries.get(f);if(!J)J={inFlight:!1,nextAllowedAt:0},this.entries.set(f,J);let Y=this.options.cadence??{timeoutMs:O2,slowRetryMs:A2,minIntervalMs:g2},z=this.options.run??R2;Jq(J,Y,(G)=>z(f,G),(G)=>{if(this.stopped)return;if(this.entries.get(f)!==J)return;if(J.value&&IJ(J.value,G))return;J.value=G,this.publish()})}publish(){let f={};for(let[J,Y]of this.entries)if(Y.value)f[J]=Y.value;this.bus.publish("worktree.changes",{changes:f})}}function XK(f,J,Y=Qj,z){if(Y<=0)return()=>{};let G=new GK(f,J,{hasSubscribers:z});G.tick();let X=setInterval(()=>G.tick(),Y);return X.unref?.(),()=>{clearInterval(X),G.stop()}}var Qj=2000,O2=4000,A2=60000,g2=1500;var ZK=k(()=>{NY();HX();Of();VG()});import{mkdir as qK,readFile as k2,unlink as Hj,writeFile as N2}from"fs/promises";import{createServer as y2}from"net";import{dirname as QK}from"path";import{StringDecoder as b2}from"string_decoder";function I2(){let f=process.env.KOBE_DAEMON_IDLE_GRACE_MS;if(f===void 0)return HK;let J=Number(f);return Number.isFinite(J)&&J>=0?J:HK}async function jK(f,J={}){let Y=J.socketPath??CJ(J.homeDir),z=J.pidPath??dJ(J.homeDir),G=J.startedAt??new Date,X=new Set,q=new Set,Q=1,H=new gB({clients:function*(){yield*X,yield*q},idleGraceMs:I2(),onIdleStop:()=>void Y0().catch(($)=>uf("daemon-idle-shutdown",$))}),B=new ZB;B.onPublish(($)=>{BK(X,{type:"event",name:$.channel,payload:$.payload})});let V=new CH(B),j=new eZ(tZ(J.homeDir));await qK(QK(Y),{recursive:!0}),await qK(QK(z),{recursive:!0}),await Hj(Y).catch(()=>{});let U=y2(($)=>{let E={id:Q++,connectedAt:new Date,socket:$,buffer:"",subscribed:!1,holdsLifetime:!1,channels:null};X.add(E);let f0=new b2("utf8");$.on("data",(I)=>{E.buffer+=f0.write(I),g0(E)}),$.on("error",()=>{}),$.on("close",()=>{if(X.delete(E),E.subscribed)gY("conn",`client #${E.id} (${E.holdsLifetime?"gui":"pane"}) disconnected \u2014 ${X.size} client(s), ${H.guiCount()} gui left`);H.clientDisconnected(E.holdsLifetime)})}),L=f.subscribeTasks(($)=>{B.publish("task.snapshot",{tasks:$.map(zJ)})}),O=J.checkUpdate??wG,M=J.updatePollMs??S2,R=()=>{O().then(($)=>B.publish("update",{info:$})).catch(($)=>uf("update-poller",$))},S=null;if(M>0)R(),S=setInterval(R,M),S.unref?.();let a=J.autoTitlePollMs??XB,N=cV(f,a,()=>H.hasSubscribers()),g=G7(B,{statePath:NB(J.homeDir),debounceMs:J.uiPrefsDebounceMs??kB}),C=tV(B,{path:AB(J.homeDir),debounceMs:J.keybindingsDebounceMs??OB}),y=XK(f,B,J.worktreeChangesTickMs??Qj,()=>H.hasSubscribers()),_=J7(f,J.prStatusPollMs??Yq,()=>H.hasSubscribers()),z0=null,t={socketPath:Y,pidPath:z,startedAt:G,get webPort(){return z0?.port},clients:X,async close(){if(H.markStopping(),L(),z0?.close(),z0=null,S)clearInterval(S);N(),_(),g(),C(),y(),V.close(),BK(X,{type:"event",name:"daemon.stopping",payload:{}});for(let $ of Array.from(X))$.socket.destroy();await new Promise(($)=>U.close(()=>$())),await Hj(Y).catch(()=>{}),await Hj(z).catch(()=>{})}};await new Promise(($,E)=>{let f0=U;f0.once("error",E),U.listen(Y,()=>{f0.removeListener("error",E),$()})}),await N2(z,`${process.pid}
|
|
82
|
+
`,"utf8");async function Y0(){if(H.isStopping())return;H.markStopping(),await J.onStop?.(),setTimeout(()=>{t.close().catch(($)=>uf("daemon-shutdown",$))},0).unref()}let T=QX();function Q0($){return{orch:f,bus:B,activity:V,issues:j,daemon:{startedAt:G,socketPath:Y,webPort:z0?.port,pid:process.pid,guiCount:()=>H.guiCount(),stopSoon:Y0},clientId:$}}if(J.webPort!==void 0){let $=fK({orch:f,bus:B,activity:V,ctx:Q0});z0=await JK({port:J.webPort,hostname:J.webHost,staticDir:J.webStaticDir,link:$,onEvent:(E)=>B.onPublish(E),onSseOpen:()=>{let E={subscribed:!0,holdsLifetime:!0};return q.add(E),H.guiAttached(),gY("conn",`web client subscribed \u2014 ${X.size+q.size} client(s), ${H.guiCount()} gui`),()=>{q.delete(E),gY("conn",`web client disconnected \u2014 ${X.size+q.size} client(s), ${H.guiCount()} gui left`),H.clientDisconnected(!0)}}}),gY("web",`daemon web transport listening on http://${z0.hostname}:${z0.port}`)}async function p($,E){if($.name==="subscribe"){let f0=jB($.payload),I=E.subscribed;E.subscribed=!0;let G0=f0.role==="gui"?"gui":"pane";E.holdsLifetime=G0==="gui",E.channels=gW(f0.channels);let x=!I;if(E.holdsLifetime)H.guiAttached();gY("conn",`client #${E.id} subscribed as ${G0}${E.channels?` [${[...E.channels].join(",")}]`:""} \u2014 ${X.size} client(s), ${H.guiCount()} gui${x?" (collectors resume)":""}`);for(let c of B.snapshot()){if(E.channels&&!E.channels.has(c.channel))continue;OX(E,{type:"event",name:c.channel,payload:c.payload})}if(!E.channels||E.channels.has("engine-state"))for(let c of V.currentNonIdle())OX(E,{type:"event",name:"engine-state",payload:c});return{}}return qX(T,$.name,$.payload,Q0(E.id))}async function D0($,E){try{let f0=await p($,E);OX(E,{type:"response",id:$.id,name:$.name,payload:f0})}catch(f0){OX(E,{type:"response",id:$.id,name:$.name,error:BB(f0)})}}function g0($){let E=$.buffer.indexOf(`
|
|
83
|
+
`);while(E!==-1){let f0=$.buffer.slice(0,E);if($.buffer=$.buffer.slice(E+1),f0.trim().length>0)try{let I=JSON.parse(f0);if(I.type!=="request")throw Error("daemon only accepts request frames from clients");D0(I,$)}catch(I){OX($,{type:"response",id:"parse-error",error:{message:I instanceof Error?I.message:String(I)}})}E=$.buffer.indexOf(`
|
|
84
|
+
`)}}return t}async function KG(f){try{let J=await k2(f,"utf8"),Y=Number(J.trim());return Number.isFinite(Y)?Y:null}catch{return null}}function OX(f,J){f.socket.write(aG(J))}function BK(f,J){let Y=J.type==="event"&&J.name!=="daemon.stopping"?J.name:null,z=null;for(let G of f){if(!G.subscribed&&J.type==="event")continue;if(Y&&G.channels&&!G.channels.has(Y))continue;z??=aG(J),G.socket.write(z)}}var S2=21600000,HK=3000;var oq=k(()=>{D1();uW();nV();oZ();MB();eV();f7();mz();Y7();sY();X7();YK();ZK();oZ();MB()});import{unlink as WK}from"fs/promises";function T2(f){try{return process.kill(f,0),!0}catch(J){return J.code==="EPERM"}}async function UG(f,J){let Y=await KG(J),z=Y!==null&&Y!==process.pid?Y:null,G=z!==null&&T2(z),X=G?"graceful":"absent",q=new d1(f),Q=q.request("daemon.stop").catch(()=>{return}),H=new Promise((B)=>setTimeout(B,2000));if(await Promise.race([Q,H]),q.close(),G&&z!==null){let B=Date.now()+5000,V=!1;while(Date.now()<B){try{process.kill(z,0)}catch{break}if(!V&&Date.now()-(B-5000)>2000){try{process.kill(z,"SIGTERM")}catch{}X="sigterm",V=!0}await new Promise((j)=>setTimeout(j,50))}try{process.kill(z,0),process.kill(z,"SIGKILL"),X="sigkill",await new Promise((j)=>setTimeout(j,100))}catch{}}return await WK(f).catch(()=>{}),await WK(J).catch(()=>{}),{pid:Y,method:X}}var sq=k(()=>{$G();oq()});var Jj={};jf(Jj,{testDaemonResponds:()=>tq,ensureDaemonReachable:()=>DG,connectOrStartDaemon:()=>UJ,connectIfRunning:()=>p1});import{spawn as u2}from"child_process";import{closeSync as E2,existsSync as x2,mkdirSync as w2,openSync as h2}from"fs";import{dirname as VK,resolve as Bj}from"path";import{fileURLToPath as P2}from"url";function c2(f,J,Y,z){let G="ignore",X;try{w2(VK(z),{recursive:!0}),X=h2(z,"a"),G=["ignore",X,X]}catch{G="ignore"}if(u2(f,[...J],{detached:!0,stdio:G,env:Y}).unref(),X!==void 0)try{E2(X)}catch{}}async function DG(){let f=CJ();if(await tq(f))return f;await UG(f,dJ()).catch(()=>{});let[J,...Y]=n2(v2);c2(J,Y,process.env,CZ());let z=Date.now()+5000;while(Date.now()<z){if(await tq(f))return f;await new Promise((G)=>setTimeout(G,100))}throw Error(`kobe: daemon did not start (or stayed wedged) at ${f}`)}async function UJ(){let f=await DG(),J=new d1(f);return await J.connect(),J}async function p1(){let f=CJ();if(!await tq(f))return null;let J=new d1(f);return await J.connect(),J}async function tq(f,J=m2){let Y=new d1(f);try{await Y.connect()}catch{return Y.close(),!1}let z=Y.request("hello",{protocolVersion:n1}).then(()=>!0).catch(()=>!0),G,X=new Promise((Q)=>{G=setTimeout(()=>Q(!1),J)}),q=await Promise.race([z,X]);if(G)clearTimeout(G);return Y.close(),q}function n2(f){let J=P2(import.meta.url);if(J.startsWith("/$bunfs")||J.startsWith("B:\\~BUN"))return[process.execPath,...f];let Y=VK(J),z=[Bj(Y,"../cli/index.ts"),Bj(Y,"../../../kobe/src/cli/index.ts"),Bj(Y,"../cli/index.js")],G=z.find((X)=>x2(X));if(G)return[process.execPath,G,...f];throw Error(`kobe: could not locate kobe entry near ${Y}; checked ${z.join(", ")}`)}var v2,m2=3000;var y1=k(()=>{sq();mz();sY();$G();v2=["daemon","start"]});var LK={};jf(LK,{runExportSubcommand:()=>r2,renderExport:()=>DK});function d2(f){return{id:f.id,title:f.title,status:f.status,archived:String(f.archived),vendor:f.vendor??Sf,branch:f.branch,repo:f.repo,worktreePath:f.worktreePath}}function jj(f){process.stderr.write(`kobe export: ${f}
|
|
85
|
+
|
|
86
|
+
${UK}
|
|
87
|
+
`),process.exit(2)}function i2(f){let J="json";for(let Y=0;Y<f.length;Y++){let z=f[Y];if(z==="--json")J="json";else if(z==="--csv")J="csv";else if(z==="--format"){let G=f[++Y];if(G===void 0)jj("--format requires a value (json, csv, or table)");J=KK(G)}else if(z.startsWith("--format="))J=KK(z.slice(9));else jj(`unexpected argument "${z}"`)}return J}function KK(f){if(f==="json"||f==="csv"||f==="table")return f;jj(`unknown format "${f}" (expected json, csv, or table)`)}function l2(f){if(/[",\r\n]/.test(f))return`"${f.replace(/"/g,'""')}"`;return f}function a2(f){let J=[AX.join(",")];for(let Y of f)J.push(AX.map((z)=>l2(Y[z])).join(","));return J.join(`
|
|
88
|
+
`)}function $2(f){let J={};for(let G of AX)J[G]=Math.max(G.length,...f.map((X)=>X[G].length));let Y=(G)=>AX.map((X)=>G[X].padEnd(J[X])).join(" ").trimEnd(),z={};for(let G of AX)z[G]=G;return[Y(z),...f.map(Y)].join(`
|
|
89
|
+
`)}function DK(f,J){let Y=f.map(d2);if(J==="json")return JSON.stringify(Y,null,2);if(J==="csv")return a2(Y);return $2(Y)}async function r2(f){if(f.includes("--help")||f.includes("-h")||f.includes("help")){process.stdout.write(`${UK}
|
|
90
|
+
`);return}let J=i2(f),{TaskIndexStore:Y}=await Promise.resolve().then(() => (vG(),zH)),z=new Y;await z.load();let G=z.list();if(G.length===0&&J==="table"){process.stdout.write(`no tasks
|
|
91
|
+
`);return}process.stdout.write(`${DK(G,J)}
|
|
92
|
+
`)}var UK,AX;var MK=k(()=>{S1();UK=["Usage: kobe export [--json | --csv | --format <json|csv|table>]","","Print the task list (from ~/.kobe/tasks.json) to stdout. Read-only and","daemon-free \u2014 works with the kobe daemon down.","","Options:"," --json JSON array of tasks (default)"," --csv CSV with a header row"," --format <fmt> One of: json, csv, table"," -h, --help Print this help",""].join(`
|
|
93
|
+
`),AX=["id","title","status","archived","vendor","branch","repo","worktreePath"]});var AK={};jf(AK,{runRepoSubcommand:()=>s2});import{readFileSync as p2}from"fs";import{resolve as eq}from"path";function EY(f){process.stderr.write(`kobe repo: ${f}
|
|
94
|
+
|
|
95
|
+
${OK}
|
|
96
|
+
`),process.exit(2)}function FK(f){try{return p2(eq(process.cwd(),f),"utf8")}catch(J){EY(`cannot read ${f}: ${J instanceof Error?J.message:String(J)}`)}}function _2(f){let J={};for(let Y=0;Y<f.length;Y++){let z=f[Y],G=()=>{let X=f[++Y];if(X===void 0)EY(`${z} requires a value`);return X};if(z==="--init-script")J.initScript=G();else if(z==="--init-script-file")J.initScript=FK(G());else if(z==="--init-prompt")J.initPrompt=G();else if(z==="--init-prompt-file")J.initPrompt=FK(G());else if(z.startsWith("-"))EY(`unknown flag "${z}"`);else if(J.path===void 0)J.path=z;else EY(`unexpected argument "${z}"`)}return J}function o2(f){let J,Y=!1,z=!1;for(let G of f)if(G==="--init-script")Y=!0;else if(G==="--init-prompt")z=!0;else if(G.startsWith("-"))EY(`unknown flag "${G}"`);else if(J===void 0)J=G;else EY(`unexpected argument "${G}"`);if(!Y&&!z)Y=!0,z=!0;return{path:J,clearScript:Y,clearPrompt:z}}async function s2(f){let[J,...Y]=f;if(J===void 0||J==="--help"||J==="-h"||J==="help"){process.stdout.write(`${OK}
|
|
97
|
+
`);return}let{getRepoInitOverride:z,setRepoInitOverride:G,resolveRepoRoot:X}=await Promise.resolve().then(() => (Of(),cJ)),{existsSync:q}=await import("fs"),{join:Q}=await import("path");if(J==="show"){let[H]=Y.filter((L)=>!L.startsWith("-")),B=X(eq(process.cwd(),H??".")),V=z(B),j=q(Q(B,".kobe","init.sh")),U=q(Q(B,".kobe","init-prompt.md"));console.log(`repo: ${B}`),console.log(` .kobe/init.sh: ${j?"present (wins)":"absent"}`),console.log(` .kobe/init-prompt.md: ${U?"present (wins)":"absent"}`),console.log(` override initScript: ${V.initScript?LG(V.initScript):"(unset)"}`),console.log(` override initPrompt: ${V.initPrompt?LG(V.initPrompt):"(unset)"}`);return}if(J==="set"){let H=_2(Y);if(H.initScript===void 0&&H.initPrompt===void 0)EY("set needs at least one of --init-script(-file) / --init-prompt(-file)");let B=X(eq(process.cwd(),H.path??".")),V=G(B,{...H.initScript!==void 0?{initScript:H.initScript}:{},...H.initPrompt!==void 0?{initPrompt:H.initPrompt}:{}});console.log(`updated override for ${B}`),console.log(` initScript: ${V.initScript?LG(V.initScript):"(unset)"}`),console.log(` initPrompt: ${V.initPrompt?LG(V.initPrompt):"(unset)"}`);return}if(J==="unset"){let{path:H,clearScript:B,clearPrompt:V}=o2(Y),j=X(eq(process.cwd(),H??".")),U=G(j,{...B?{initScript:""}:{},...V?{initPrompt:""}:{}});console.log(`cleared override for ${j}`),console.log(` initScript: ${U.initScript?LG(U.initScript):"(unset)"}`),console.log(` initPrompt: ${U.initPrompt?LG(U.initPrompt):"(unset)"}`);return}EY(`unknown verb "${J}"`)}function LG(f){let J=f.replace(/\s+/g," ").trim();return J.length>60?`"${J.slice(0,57)}\u2026"`:`"${J}"`}var OK;var gK=k(()=>{OK=["Usage: kobe repo <show|set|unset> [path] [options]","","Manage a repo's per-user init override (state.json fallback for repos","that don't ship .kobe/init.sh / .kobe/init-prompt.md).","","Commands:"," show [path] Print the override + whether the repo ships .kobe/ files"," set [path] <options> Set the init script and/or first prompt"," unset [path] [--init-script] [--init-prompt] Clear one or both (default: both)","","Set options (later wins; *-file reads from disk):"," --init-script <text> Inline shell to run before the engine"," --init-script-file <path> Read the init script from a file"," --init-prompt <text> Inline first prompt for the engine"," --init-prompt-file <path> Read the first prompt from a file",""," path defaults to the current directory (resolved to its git toplevel).",""].join(`
|
|
98
|
+
`)});import{spawnSync as t2}from"child_process";function JC(f){let[J,Y]=f.split("/");if(!J||!Y)throw Error(`invalid GitHub repository slug: ${f}`);return{owner:J,name:Y}}function RK(f,J){let Y=f.trim();if(!Y)throw Error(`${J} is required`);return Y}function CK(f,J){let Y=J?.map((z)=>typeof z.message==="string"?z.message:null).filter((z)=>!!z);if(Y&&Y.length>0)return Y.join("; ");return f.trim()||"GitHub CLI returned an empty response"}function kK(f,J,Y){let z=["api","graphql","-f",`query=${f}`];for(let[H,B]of Object.entries(J))z.push("-f",`${H}=${B}`);let G=Y.spawn("gh",z,{encoding:"utf8"});if(G.error)throw Error(`failed to run gh: ${G.error.message}`);let X=typeof G.stdout==="string"?G.stdout:String(G.stdout??""),q=typeof G.stderr==="string"?G.stderr:String(G.stderr??""),Q;try{Q=JSON.parse(X)}catch{throw Error(`failed to parse gh response: ${CK(q,void 0)}`)}if((G.status??0)!==0||Q.errors?.length)throw Error(CK(q,Q.errors));if(!Q.data)throw Error("GitHub CLI response did not include data");return Q.data}function YC(f){return`${f}
|
|
98
99
|
|
|
99
100
|
---
|
|
100
|
-
Submitted from kobe ${
|
|
101
|
+
Submitted from kobe ${s0}.`}function MG(f,J={}){let Y=RK(f.title,"feedback title"),z=YC(RK(f.body,"feedback body")),G=(J.repoSlug??aY)();if(!G)throw Error("package repository is not a GitHub repository");let{owner:X,name:q}=JC(G),Q=f.categorySlug?.trim()||Wj,H={spawn:J.spawn??t2},V=kK(e2,{owner:X,name:q},H).repository,j=V?.id;if(!j)throw Error(`GitHub repository not found: ${G}`);let U=V.discussionCategories?.nodes?.find((M)=>M.slug===Q);if(!U)throw Error(`GitHub Discussion category not found: ${Q}`);let O=kK(fC,{repositoryId:j,categoryId:U.id,title:Y,body:z},H).createDiscussion?.discussion;if(!O?.url||typeof O.number!=="number")throw Error("GitHub did not return the created Discussion");return{number:O.number,url:O.url}}var Wj="feedback",e2=`
|
|
101
102
|
query($owner: String!, $name: String!) {
|
|
102
103
|
repository(owner: $owner, name: $name) {
|
|
103
104
|
id
|
|
@@ -110,7 +111,7 @@ query($owner: String!, $name: String!) {
|
|
|
110
111
|
}
|
|
111
112
|
}
|
|
112
113
|
}
|
|
113
|
-
`,
|
|
114
|
+
`,fC=`
|
|
114
115
|
mutation($repositoryId: ID!, $categoryId: ID!, $title: String!, $body: String!) {
|
|
115
116
|
createDiscussion(input: {
|
|
116
117
|
repositoryId: $repositoryId,
|
|
@@ -124,74 +125,74 @@ mutation($repositoryId: ID!, $categoryId: ID!, $title: String!, $body: String!)
|
|
|
124
125
|
}
|
|
125
126
|
}
|
|
126
127
|
}
|
|
127
|
-
`;var
|
|
128
|
-
`)}function
|
|
129
|
-
`)}function
|
|
130
|
-
`)}function
|
|
131
|
-
`),process.exit(Y)}async function
|
|
132
|
-
`);return}let z=
|
|
133
|
-
${
|
|
134
|
-
`);return}try{Kj(z,Z.flags)}catch(Q){if(Q instanceof Ff)oJ(Q.message,Q.code,2);oJ(Q instanceof Error?Q.message:String(Q),"BAD_FLAG",2)}let q=null;if(!z.offline)try{q=await OK()}catch(Q){oJ(`could not reach or start the kobe daemon: ${Q instanceof Error?Q.message:String(Q)}`,"BAD_DAEMON",2)}try{let Q=await z.handler(TK(z,Z.flags,q?.client??null,Lj));YC(Q,Z.pretty)}catch(Q){if(Q instanceof Ff)oJ(Q.message,Q.code,1);oJ(Q instanceof Error?Q.message:String(Q),"RPC_ERROR",1)}finally{q?.close()}}var Wj=2,MG=10,RK,o2,Ff,Vf,eq,FG,OG,t2,NK,zC,Lj;var EK=C(()=>{E1();sq();Sf();gq();K1();U1();AK();RK=["backlog","in_progress","in_review","done","canceled","error"],o2=["open","doing","hold","done"];Ff=class Ff extends Error{code;constructor(f,J){super(f);this.code=J}};Vf={repo:(f=!0)=>({name:"repo",type:"string",required:f,placeholder:"PATH",description:"Repo root (git toplevel). Relative paths resolve against $PWD."}),taskId:(f=!0)=>({name:"task-id",type:"string",required:f,placeholder:"ID",description:"Target task id (from `list` / `add`)."}),vendor:()=>({name:"vendor",type:"enum",values:mf,placeholder:"V",description:"Engine vendor for the task."}),title:()=>({name:"title",type:"string",placeholder:"T",description:"Human task title."}),prompt:(f,J)=>({name:"prompt",type:"string",required:f,placeholder:"TEXT",description:J})},eq={"spawn-task":"add"},FG={discover:["schema"],read:["list","get-task","collect"],create:["add","fan-out"],drive:["send","dispatch","note","set-active"],edit:["rename","set-branch","set-vendor","set-status"],issues:["issue-list","issue-create","issue-set-status","issue-update"],lifecycle:["archive","pin","delete"],worktree:["ensure-worktree","adopt","discover-adoptable"],feedback:["feedback"]};OG=[{name:"schema",summary:"Explore the API. Default = a COMPACT index (groups + verb summaries, no flags). Drill in with --verb / --group; --all for the full spec.",flags:[{name:"verb",type:"string",placeholder:"NAME",description:"Full flag detail for ONE verb."},{name:"group",type:"string",placeholder:"G",description:"List the verbs in one group (compact)."},{name:"all",type:"bool",description:"The COMPLETE spec \u2014 every verb AND every flag (large; avoid by default)."}],offline:!0,handler:s2},{name:"list",summary:"List all tasks (incl. archived). Returns { tasks }.",flags:[],handler:jC},{name:"get-task",summary:"Read one task's metadata. `.running` = its tmux session is live.",flags:[Vf.taskId()],handler:BC},{name:"add",summary:"Create a task (shows in the sidebar immediately). With --prompt it also starts the engine and delivers it. Alias: spawn-task.",flags:[Vf.repo(),Vf.title(),{name:"branch",type:"string",placeholder:"B",description:"Explicit branch name (else auto kobe/<slug>-<id>)."},{name:"base-branch",type:"string",placeholder:"B",description:"Base ref the worktree branches from."},Vf.vendor(),{name:"status",type:"enum",values:RK,default:"backlog",description:"Initial lifecycle status."},{name:"pin",type:"bool",description:"Pin the task to the top of the sidebar."},Vf.prompt(!1,"Optional first message \u2014 when set, materializes the worktree, starts the engine, and pastes it.")],handler:XC},{name:"fan-out",summary:`Spawn N tasks of ONE prompt in a single call (parallel attempts). Capped at ${MG}.`,flags:[Vf.repo(),Vf.prompt(!0,"Shared prompt delivered to every spawned task."),{name:"count",type:"int",placeholder:"N",description:"Number of tasks of one vendor (with --vendor)."},{name:"agents",type:"string",placeholder:"claude:2,codex:1",description:"Per-vendor counts (alternative to --count)."},Vf.vendor(),Vf.title(),{name:"base-branch",type:"string",placeholder:"B",description:"Base ref for every worktree."}],handler:DC},{name:"send",summary:"Paste a follow-up prompt into a task's running engine (one full turn). Defaults to the active task.",flags:[Vf.taskId(!1),Vf.prompt(!0,"Text pasted + submitted into the engine pane.")],handler:qC},{name:"dispatch",summary:"Route text into a task's live session via the daemon's session.deliver channel \u2014 the front-end hosting the session pastes it. The dispatcher's messenger (docs/design/dispatcher.md); unlike `send`, it never spawns or touches tmux itself.",flags:[Vf.taskId(!0),Vf.prompt(!0,"Text delivered into the task's engine session.")],handler:QC},{name:"note",summary:"File a one-line field note \u2014 a resolved, repo-level gotcha worth sharing. kobe forwards it to the repo's dispatcher session (the main session), which relays it to the in-flight tasks that benefit (docs/design/dispatcher.md).",flags:[Vf.taskId(!0),{name:"text",type:"string",required:!0,placeholder:"TEXT",description:"One line: the verified conclusion another session could act on."}],handler:HC},{name:"feedback",summary:"Create a GitHub Discussion in the kobe repo's Feedback category through `gh`.",flags:[{name:"title",type:"string",required:!0,placeholder:"T",description:"Discussion title."},{name:"body",type:"string",required:!0,placeholder:"TEXT",description:"Discussion body."},{name:"category",type:"string",default:jj,placeholder:"SLUG",description:"Discussion category slug."}],offline:!0,handler:MC},{name:"issue-list",summary:"List daemon-owned issues for a repo.",flags:[Vf.repo()],handler:(f)=>DJ(f,"issue.list",{repoRoot:f.args.requirePath("repo")})},{name:"issue-create",summary:"Create a daemon-owned issue for a repo.",flags:[Vf.repo(),{name:"title",type:"string",required:!0,placeholder:"T",description:"Issue title."},{name:"body",type:"string",placeholder:"TEXT",description:"Issue body."}],handler:(f)=>DJ(f,"issue.mutate",{repoRoot:f.args.requirePath("repo"),op:{type:"create",title:f.args.require("title"),body:f.args.str("body")}})},{name:"issue-set-status",summary:"Set a daemon-owned issue's status.",flags:[Vf.repo(),{name:"id",type:"int",required:!0,placeholder:"N",description:"Issue id."},{name:"status",type:"enum",required:!0,values:o2,description:"New issue status."}],handler:(f)=>DJ(f,"issue.mutate",{repoRoot:f.args.requirePath("repo"),op:{type:"setStatus",id:f.args.int("id"),status:f.args.requireEnum("status")}})},{name:"issue-update",summary:"Update a daemon-owned issue's title and/or body.",flags:[Vf.repo(),{name:"id",type:"int",required:!0,placeholder:"N",description:"Issue id."},{name:"title",type:"string",placeholder:"T",description:"New title."},{name:"body",type:"string",placeholder:"TEXT",description:"New body."}],handler:ZC},{name:"collect",summary:"Read-only comparison snapshot of several tasks (identity, branch, .running, uncommitted .changes).",flags:[{name:"task-ids",type:"csv",placeholder:"a,b,c",description:"Comma-separated task ids."},Vf.repo(!1)],handler:LC},{name:"rename",summary:"Set a task's title.",flags:[Vf.taskId(),{name:"title",type:"string",required:!0,placeholder:"T",description:"New title."}],handler:(f)=>DJ(f,"task.rename",{taskId:f.args.require("task-id"),title:f.args.require("title")})},{name:"set-branch",summary:"Rename a task's branch (git branch -m if materialized, else recorded).",flags:[Vf.taskId(),{name:"branch",type:"string",required:!0,placeholder:"B",description:"New branch name."}],handler:(f)=>DJ(f,"task.setBranch",{taskId:f.args.require("task-id"),branch:f.args.require("branch")})},{name:"set-vendor",summary:"Change a task's engine vendor (takes effect on next session rebuild).",flags:[Vf.taskId(),{...Vf.vendor(),required:!0}],handler:(f)=>DJ(f,"task.setVendor",{taskId:f.args.require("task-id"),vendor:f.args.requireEnum("vendor")})},{name:"set-status",summary:"Set a task's lifecycle status.",flags:[Vf.taskId(),{name:"status",type:"enum",required:!0,values:RK,description:"New status."}],handler:(f)=>DJ(f,"task.status",{taskId:f.args.require("task-id"),status:f.args.requireEnum("status")})},{name:"archive",summary:"Archive (or with --archived=false, unarchive) a task. Non-destructive: worktree/branch/history stay.",flags:[Vf.taskId(),{name:"archived",type:"bool",default:"true",description:"true to archive, false to unarchive."}],handler:VC},{name:"pin",summary:"Pin (or with --pinned=false, unpin) a task to the top of the sidebar.",flags:[Vf.taskId(),{name:"pinned",type:"bool",default:"true",description:"true to pin, false to unpin."}],handler:(f)=>DJ(f,"task.pin",{taskId:f.args.require("task-id"),pinned:f.args.bool("pinned")??!0})},{name:"set-active",summary:"Set the shared active task (the focus every Tasks pane highlights). Pass --none to clear.",flags:[Vf.taskId(!1),{name:"none",type:"bool",description:"Clear the active task instead of setting one."}],handler:WC},{name:"ensure-worktree",summary:"Materialize a task's git worktree on disk now (without starting an engine). Returns { worktreePath }.",flags:[Vf.taskId()],handler:(f)=>DJ(f,"task.ensureWorktree",{taskId:f.args.require("task-id")})},{name:"delete",summary:"Permanently remove a task (and its worktree). DESTRUCTIVE \u2014 prefer `archive`. Needs --force on a dirty worktree.",flags:[Vf.taskId(),{name:"force",type:"bool",description:"Delete even with uncommitted changes."}],handler:KC},{name:"discover-adoptable",summary:"List existing git worktrees in a repo not yet tracked as kobe tasks. Returns { worktrees }.",flags:[Vf.repo()],handler:(f)=>DJ(f,"worktree.discoverAdoptable",{repo:f.args.requirePath("repo")})},{name:"adopt",summary:"Import an existing git worktree as a kobe task. Returns { task }.",flags:[Vf.repo(),{name:"worktree",type:"string",required:!0,placeholder:"PATH",description:"Path of the worktree to adopt."},{name:"branch",type:"string",placeholder:"B",description:"Branch override (else the worktree's own)."},Vf.vendor(),Vf.title()],handler:UC}],t2=OG.map((f)=>f.name);NK=[{name:"pretty",type:"bool",description:"Pretty-print stdout JSON."},{name:"help",type:"bool",description:"Show usage for the verb and exit."}];zC={sessionExists:Bf,ensureSession:async(f)=>(await Promise.resolve().then(() => (J1(),r1))).ensureSession(f),waitForEnginePane:jZ,pasteAndSubmit:WZ,resolveEngineLaunchInit:async(f,J,Y)=>(await Promise.resolve().then(() => (zG(),TB))).resolveEngineLaunchInit(f,J,Y),engineCommand:N1};Lj={isTaskRunning:(f)=>Bf(Mf(f)),deliverPrompt:(f,J,Y)=>IK(f,J,Y),resolveRepoRoot:async(f)=>(await Promise.resolve().then(() => (gf(),ZY))).resolveMainRepoRoot(f),defaultVendor:async()=>{let{getPersistedString:f}=await Promise.resolve().then(() => (gf(),ZY)),J=f("lastSelectedVendor")?.trim();return J?J:void 0},readWorktreeChanges:async(f)=>(await Promise.resolve().then(() => (WG(),s5))).readWorktreeChanges(f),tearDownSession:async(f)=>{let J=Mf(f);await bJ(J).catch(()=>{}),await i1(J).catch(()=>{})}}});var PK={};jf(PK,{updatePlan:()=>xK,runUpdateSubcommand:()=>gC,parseUpdateArgs:()=>wK});import{spawnSync as AC}from"child_process";function xK(){return{command:"sh",args:["-c",wJ],display:wJ}}function wK(f){let J=!1;for(let Y=0;Y<f.length;Y+=1){let z=f[Y];if(z==="--help"||z==="-h"||z==="help")return{help:!0,dryRun:J};if(z==="--dry-run"){J=!0;continue}process.stderr.write(`kobe update: unknown argument "${z}"
|
|
135
|
-
|
|
136
|
-
`),
|
|
137
|
-
`))}async function
|
|
128
|
+
`;var fQ=k(()=>{D1()});async function NK(f={}){let J=f.mode==="require-running"?await p1():await UJ();if(!J)return null;return{client:J,close:()=>J.close()}}var yK=k(()=>{y1()});var vK={};jf(vK,{verbSchema:()=>Lj,verbHelp:()=>wK,validateAgainstSpec:()=>Uj,schemaIndex:()=>EK,runApiSubcommand:()=>yC,parseFlags:()=>Kj,parseAgentsSpec:()=>TK,invokeVerb:()=>NC,fullSchema:()=>xK,findVerb:()=>gX,deliverPrompt:()=>hK,defaultApiRuntime:()=>Mj,apiUsage:()=>JQ,VerbArgs:()=>Dj,VERB_GROUPS:()=>OG,VERBS:()=>AG,FANOUT_CAP:()=>FG,ApiError:()=>Mf,API_VERBS:()=>XC,API_SCHEMA_VERSION:()=>Vj});import{resolve as bK}from"path";function IK(f){for(let[J,Y]of Object.entries(OG))if(Y.includes(f))return J;return"other"}async function GC(f){let J=f.args.str("verb");if(J){let z=gX(J);if(!z)throw new Mf(`unknown verb: ${J}`,"BAD_VERB");return Lj(z)}let Y=f.args.str("group");if(Y)return qC(Y);if(f.args.bool("all"))return xK();return EK()}function gX(f){let J=YQ[f]??f;return AG.find((Y)=>Y.name===J)}function Kj(f,J=new Set){let Y=new Map,z=!1,G=!1;for(let X=0;X<f.length;X++){let q=f[X];if(!q.startsWith("--")&&q!=="-h")throw new Mf(`unexpected positional arg: ${q}`,"BAD_FLAG");if(q==="-h"){G=!0;continue}let Q=q.indexOf("=");if(Q!==-1){let V=q.slice(2,Q),j=q.slice(Q+1);if(V==="pretty")z=j!=="false"&&j!=="0";else if(V==="help")G=j!=="false"&&j!=="0";else Y.set(V,j);continue}let H=q.slice(2);if(H==="pretty"){z=!0;continue}if(H==="help"){G=!0;continue}if(J.has(H)){Y.set(H,"true");continue}let B=f[X+1];if(B===void 0||B.startsWith("--"))throw new Mf(`flag --${H} requires a value`,"BAD_FLAG");Y.set(H,B),X+=1}return{flags:Y,pretty:z,help:G}}function Uj(f,J){let Y=new Set(f.flags.map((z)=>z.name));for(let z of J.keys())if(!Y.has(z))throw new Mf(`unknown flag --${z} for "${f.name}". Run \`kobe api ${f.name} --help\``,"BAD_FLAG");for(let z of f.flags){if(z.required&&!J.get(z.name))throw new Mf(`--${z.name} is required for "${f.name}"`,"MISSING_FLAG");if(z.type==="enum"&&z.values){let G=J.get(z.name);if(G!==void 0&&!z.values.includes(G))throw new Mf(`--${z.name} must be one of ${z.values.join(", ")}`,"BAD_FLAG")}if(z.type==="int"){let G=J.get(z.name);if(G!==void 0){let X=Number.parseInt(G,10);if(!Number.isInteger(X)||X<=0)throw new Mf(`--${z.name} must be a positive integer`,"BAD_FLAG")}}}}class Dj{verb;flags;constructor(f,J){this.verb=f;this.flags=J}spec(f){let J=this.verb.flags.find((Y)=>Y.name===f);if(!J)throw Error(`internal: --${f} is not declared on verb "${this.verb.name}"`);return J}str(f){this.spec(f);let J=this.flags.get(f);return J&&J.length>0?J:void 0}require(f){let J=this.str(f);if(J===void 0)throw new Mf(`--${f} is required`,"MISSING_FLAG");return J}enumOf(f){let J=this.spec(f),Y=this.str(f);if(Y===void 0)return;if(J.values&&!J.values.includes(Y))throw new Mf(`--${f} must be one of ${J.values.join(", ")}`,"BAD_FLAG");return Y}requireEnum(f){return this.require(f),this.enumOf(f)}vendor(){return this.enumOf("vendor")}bool(f){this.spec(f);let J=this.str(f);if(J===void 0)return;if(["true","1","yes"].includes(J))return!0;if(["false","0","no"].includes(J))return!1;throw new Mf(`--${f} must be a boolean (true/false)`,"BAD_FLAG")}int(f){this.spec(f);let J=this.str(f);if(J===void 0)return;let Y=Number.parseInt(J,10);if(!Number.isInteger(Y)||Y<=0)throw new Mf(`--${f} must be a positive integer`,"BAD_FLAG");return Y}path(f){let J=this.str(f);return J===void 0?void 0:bK(process.cwd(),J)}requirePath(f){return bK(process.cwd(),this.require(f))}}function TK(f){let J=[];for(let Y of f.split(",")){let z=Y.trim();if(!z)continue;let G=z.indexOf(":");if(G===-1)throw new Mf(`--agents entry "${z}" must be vendor:count`,"BAD_FLAG");let X=z.slice(0,G);if(!cf.includes(X))throw new Mf(`--agents vendor "${X}" must be one of ${cf.join(", ")}`,"BAD_FLAG");let q=Number.parseInt(z.slice(G+1),10);if(!Number.isInteger(q)||q<=0)throw new Mf(`--agents count for "${X}" must be a positive integer`,"BAD_FLAG");if(J.length+q>FG)throw new Mf(`--agents requests ${J.length+q} agents, exceeds the cap of ${FG}`,"BAD_FLAG");for(let Q=0;Q<q;Q++)J.push(X)}if(J.length===0)throw new Mf('--agents specified no agents (e.g. "claude:2,codex:1")',"BAD_FLAG");return J}function ZC(f){return{name:f.name,type:f.type,required:f.required??!1,...f.values?{values:f.values}:{},...f.default!==void 0?{default:f.default}:{},...f.placeholder?{placeholder:f.placeholder}:{},description:f.description}}function Lj(f){return{name:f.name,group:IK(f.name),summary:f.summary,offline:f.offline??!1,flags:f.flags.map(ZC)}}function EK(){return{apiVersion:Vj,kobeVersion:s0,hint:"Compact index. Drill into ONE verb: `kobe api schema --verb <name>` (or `kobe api <verb> --help`). One group: `--group <g>`. Whole spec: `--all`.",groups:OG,verbs:AG.map((f)=>({name:f.name,group:IK(f.name),summary:f.summary})),globalFlags:uK,aliases:YQ}}function qC(f){let J=OG[f];if(!J)throw new Mf(`unknown group: ${f}. Groups: ${Object.keys(OG).join(", ")}`,"BAD_FLAG");return{group:f,verbs:J.map((Y)=>{let z=gX(Y);return{name:Y,summary:z?.summary??""}})}}function xK(){return{apiVersion:Vj,kobeVersion:s0,output:{success:"one JSON object on stdout, newline-terminated, exit 0",error:'{"error":{"message","code"}} on stderr, exit != 0',pretty:"--pretty indents stdout JSON"},globalFlags:uK,aliases:YQ,groups:OG,verbs:AG.map(Lj)}}function QC(f){return f.flags.map((J)=>{let Y=J.type==="enum"&&J.values?J.values.join("|"):J.placeholder??(J.type==="bool"?"":"X"),z=Y?`--${J.name} ${Y}`:`--${J.name}`;return J.required?z:`[${z}]`}).join(" ")}function wK(f){let J=[`kobe api ${f.name} ${QC(f)}`.trimEnd(),"",f.summary,""],Y=Object.entries(YQ).find(([,z])=>z===f.name)?.[0];if(Y)J.push(`Alias: ${Y}`,"");if(f.flags.length>0){J.push("Flags:");for(let z of f.flags){let G=z.required?" (required)":"",X=z.default!==void 0?` [default: ${z.default}]`:"",q=z.type==="enum"&&z.values?` {${z.values.join("|")}}`:"";J.push(` --${z.name}${q}${G}${X} ${z.description}`)}J.push("")}return J.push("Global: [--pretty] [--help]"),J.join(`
|
|
129
|
+
`)}function JQ(){return["usage: kobe api <verb> [flags] [--pretty] [--help]","","Explore the full surface (names, flags, types) with: kobe api schema","","verbs:",...AG.map((J)=>` ${J.name.padEnd(18)} ${J.summary}`),"","Output is one JSON object on stdout (exit 0); errors are JSON on stderr (exit != 0)."].join(`
|
|
130
|
+
`)}function HC(f,J){let Y=J?JSON.stringify(f,null,2):JSON.stringify(f);process.stdout.write(`${Y}
|
|
131
|
+
`)}function eJ(f,J,Y=1){process.stderr.write(`${JSON.stringify({error:{message:f,code:J}})}
|
|
132
|
+
`),process.exit(Y)}async function hK(f,J,Y,z=BC){let G=J.worktreePath;if(!G)G=(await f.request("task.ensureWorktree",{taskId:J.id})).worktreePath;if(!G)throw new Mf(`task ${J.id} has no worktree`,"NO_WORKTREE");let X=Lf(J.id),q=await z.sessionExists(X);if(!q){let B=await z.resolveEngineLaunchInit(J.repo??"",G,{kind:"none"});if(!await z.ensureSession({name:X,cwd:G,command:z.engineCommand(J.vendor),taskId:J.id,vendor:J.vendor,repo:J.repo,launchInit:B}))throw new Mf(`failed to start tmux session for ${J.id}`,"SESSION_FAILED")}let{pane:Q,ready:H}=await z.waitForEnginePane(X,!q);if(!Q)throw new Mf(`no engine pane in session ${X}`,"NO_ENGINE_PANE");return await z.pasteAndSubmit(Q,Y),{session:X,pane:Q,started:!q,engineReady:H}}async function jC(f){let J=null,Y=f.onChannel("active-task",(z)=>{J=z.taskId});try{await f.subscribe()}finally{Y()}return J}function h1(f){if(!f.client)throw new Mf("daemon required","BAD_DAEMON");return f.client}async function DJ(f,J,Y){return h1(f).request(J,Y)}async function WC(f){let J=f.args.str("title"),Y=f.args.str("body");if(J===void 0&&Y===void 0)throw new Mf("issue-update requires --title and/or --body","MISSING_FLAG");return DJ(f,"issue.mutate",{repoRoot:f.args.requirePath("repo"),op:{type:"update",id:f.args.int("id"),title:J,body:Y}})}async function VC(f){let J=h1(f),{args:Y,runtime:z}=f,X={repo:await z.resolveRepoRoot(Y.requirePath("repo"))},q=Y.str("title");if(q)X.title=q;let Q=Y.str("branch");if(Q)X.branch=Q;let H=Y.str("base-branch");if(H)X.baseRef=H;let B=Y.vendor()??await z.defaultVendor();if(B)X.vendor=B;let V=await J.request("task.create",X),j=V.taskId;await J.request("task.setActive",{taskId:j});let U=Y.enumOf("status");if(U)await J.request("task.status",{taskId:j,status:U});let L=Y.bool("pin");if(L!==void 0)await J.request("task.pin",{taskId:j,pinned:L});let O=V.task;if(U||L!==void 0)O=(await J.request("task.get",{taskId:j})).task;let M=Y.str("prompt");if(!M)return{taskId:j,task:O,started:!1};let R=await f.runtime.deliverPrompt(J,{id:j,worktreePath:O.worktreePath,vendor:O.vendor,repo:O.repo},M);return O=(await J.request("task.get",{taskId:j})).task,{taskId:j,task:O,started:R.started,engineReady:R.engineReady,session:R.session}}async function KC(f){let J=h1(f),Y=f.args.require("prompt"),z=f.args.str("task-id");if(!z){let q=await jC(J);if(!q)throw new Mf("no --task-id given and no active task \u2014 open a task first or pass --task-id","MISSING_TARGET");z=q}let G=await J.request("task.get",{taskId:z}),X=await f.runtime.deliverPrompt(J,{id:z,worktreePath:G.task.worktreePath,vendor:G.task.vendor,repo:G.task.repo},Y);return{ok:!0,taskId:z,session:X.session,started:X.started,engineReady:X.engineReady}}async function UC(f){let J=h1(f),Y=f.args.require("task-id"),z=f.args.require("prompt");return await J.request("session.deliver",{taskId:Y,text:z,source:"dispatcher"}),{ok:!0,taskId:Y,routed:"session.deliver"}}async function DC(f){let J=h1(f),Y=f.args.require("task-id"),z=f.args.require("text");return await J.request("note.file",{taskId:Y,text:z})}async function LC(f){let J=h1(f),Y=f.args.require("task-id"),z=await J.request("task.get",{taskId:Y}),G=await f.runtime.isTaskRunning(Y);return{task:z.task,running:G}}async function MC(f){return h1(f).request("task.list")}async function FC(f){let J=h1(f),z=f.args.bool("none")?null:f.args.require("task-id");return await J.request("task.setActive",{taskId:z}),{ok:!0,activeTaskId:z}}async function OC(f){let J=h1(f),Y=f.args.require("task-id"),z=f.args.bool("archived")??!0,G=await J.request("task.archive",{taskId:Y,archived:z});if(z)await f.runtime.tearDownSession(Y);return G}async function AC(f){let J=h1(f),Y=f.args.require("task-id"),z=f.args.bool("force")??!1,G=await J.request("task.delete",{taskId:Y,force:z});return await f.runtime.tearDownSession(Y),G}async function gC(f){let J=h1(f),{args:Y}=f,z={repo:Y.requirePath("repo"),worktreePath:Y.requirePath("worktree")},G=Y.str("branch");if(G)z.branch=G;let X=Y.vendor();if(X)z.vendor=X;let q=Y.str("title");if(q)z.title=q;return J.request("worktree.adopt",z)}async function RC(f){let J=h1(f),{args:Y,runtime:z}=f,G=await z.resolveRepoRoot(Y.requirePath("repo")),X=Y.require("prompt"),q=Y.str("title"),Q=Y.str("base-branch"),H=Y.str("agents"),B=await z.defaultVendor(),V=H?TK(H):Array(Y.int("count")??1).fill(Y.vendor()??B??"claude");if(V.length>FG)throw new Mf(`fan-out of ${V.length} exceeds the cap of ${FG} \u2014 spawn in batches`,"BAD_FLAG");let j=[];for(let U of V){let L={repo:G,vendor:U};if(q)L.title=q;if(Q)L.baseRef=Q;let O=await J.request("task.create",L),M=await f.runtime.deliverPrompt(J,{id:O.taskId,worktreePath:O.task.worktreePath,vendor:U,repo:O.task.repo},X);j.push({taskId:O.taskId,vendor:U,started:M.started,engineReady:M.engineReady,session:M.session})}return{count:j.length,tasks:j}}async function CC(f){let J=h1(f),{args:Y,runtime:z}=f,G=Y.str("task-ids"),X=Y.path("repo"),q;if(G)q=G.split(",").map((H)=>H.trim()).filter(Boolean);else if(X){let H=await z.resolveRepoRoot(X),{tasks:B}=await J.request("task.list");q=[];for(let V of B){if(V.archived)continue;if(await z.resolveRepoRoot(V.repo)===H)q.push(V.id)}}else throw new Mf("collect needs --task-ids id1,id2 or --repo PATH","MISSING_TARGET");let Q=[];for(let H of q){let{task:B}=await J.request("task.get",{taskId:H}),V=await z.isTaskRunning(H),j=B.worktreePath?await z.readWorktreeChanges(B.worktreePath):{added:0,deleted:0};Q.push({taskId:B.id,title:B.title,branch:B.branch,worktreePath:B.worktreePath,vendor:B.vendor,status:B.status,running:V,changes:j})}return{tasks:Q}}async function kC(f){return{ok:!0,discussion:MG({title:f.args.require("title"),body:f.args.require("body"),categorySlug:f.args.str("category")})}}function PK(f,J,Y,z){return{args:new Dj(f,J),client:Y,runtime:z}}async function NC(f,J,Y){let z=gX(f);if(!z)throw new Mf(`unknown verb: ${f}`,"BAD_VERB");let G=new Set(z.flags.filter((q)=>q.type==="bool").map((q)=>q.name)),X=Kj(J,G);return Uj(z,X.flags),z.handler(PK(z,X.flags,Y.client,Y.runtime??Mj))}async function yC(f){let[J,...Y]=f;if(!J||J==="--help"||J==="-h"||J==="help"){if(!J)eJ(JQ(),"MISSING_VERB",2);process.stdout.write(`${JQ()}
|
|
133
|
+
`);return}let z=gX(J);if(!z)eJ(`unknown verb: ${J}
|
|
134
|
+
${JQ()}`,"BAD_VERB",2);let G=new Set(z.flags.filter((Q)=>Q.type==="bool").map((Q)=>Q.name)),X;try{X=Kj(Y,G)}catch(Q){if(Q instanceof Mf)eJ(Q.message,Q.code,2);eJ(Q instanceof Error?Q.message:String(Q),"BAD_FLAG",2)}if(X.help){process.stdout.write(`${wK(z)}
|
|
135
|
+
`);return}try{Uj(z,X.flags)}catch(Q){if(Q instanceof Mf)eJ(Q.message,Q.code,2);eJ(Q instanceof Error?Q.message:String(Q),"BAD_FLAG",2)}let q=null;if(!z.offline)try{q=await NK()}catch(Q){eJ(`could not reach or start the kobe daemon: ${Q instanceof Error?Q.message:String(Q)}`,"BAD_DAEMON",2)}try{let Q=await z.handler(PK(z,X.flags,q?.client??null,Mj));HC(Q,X.pretty)}catch(Q){if(Q instanceof Mf)eJ(Q.message,Q.code,1);eJ(Q instanceof Error?Q.message:String(Q),"RPC_ERROR",1)}finally{q?.close()}}var Vj=2,FG=10,SK,zC,Mf,Vf,YQ,OG,AG,XC,uK,BC,Mj;var mK=k(()=>{E1();fQ();Tf();Cq();U1();D1();yK();SK=["backlog","in_progress","in_review","done","canceled","error"],zC=["open","doing","hold","done"];Mf=class Mf extends Error{code;constructor(f,J){super(f);this.code=J}};Vf={repo:(f=!0)=>({name:"repo",type:"string",required:f,placeholder:"PATH",description:"Repo root (git toplevel). Relative paths resolve against $PWD."}),taskId:(f=!0)=>({name:"task-id",type:"string",required:f,placeholder:"ID",description:"Target task id (from `list` / `add`)."}),vendor:()=>({name:"vendor",type:"enum",values:cf,placeholder:"V",description:"Engine vendor for the task."}),title:()=>({name:"title",type:"string",placeholder:"T",description:"Human task title."}),prompt:(f,J)=>({name:"prompt",type:"string",required:f,placeholder:"TEXT",description:J})},YQ={"spawn-task":"add"},OG={discover:["schema"],read:["list","get-task","collect"],create:["add","fan-out"],drive:["send","dispatch","note","set-active"],edit:["rename","set-branch","set-vendor","set-status"],issues:["issue-list","issue-create","issue-set-status","issue-update"],lifecycle:["archive","pin","delete"],worktree:["ensure-worktree","adopt","discover-adoptable"],feedback:["feedback"]};AG=[{name:"schema",summary:"Explore the API. Default = a COMPACT index (groups + verb summaries, no flags). Drill in with --verb / --group; --all for the full spec.",flags:[{name:"verb",type:"string",placeholder:"NAME",description:"Full flag detail for ONE verb."},{name:"group",type:"string",placeholder:"G",description:"List the verbs in one group (compact)."},{name:"all",type:"bool",description:"The COMPLETE spec \u2014 every verb AND every flag (large; avoid by default)."}],offline:!0,handler:GC},{name:"list",summary:"List all tasks (incl. archived). Returns { tasks }.",flags:[],handler:MC},{name:"get-task",summary:"Read one task's metadata. `.running` = its tmux session is live.",flags:[Vf.taskId()],handler:LC},{name:"add",summary:"Create a task (shows in the sidebar immediately). With --prompt it also starts the engine and delivers it. Alias: spawn-task.",flags:[Vf.repo(),Vf.title(),{name:"branch",type:"string",placeholder:"B",description:"Explicit branch name (else auto kobe/<slug>-<id>)."},{name:"base-branch",type:"string",placeholder:"B",description:"Base ref the worktree branches from."},Vf.vendor(),{name:"status",type:"enum",values:SK,default:"backlog",description:"Initial lifecycle status."},{name:"pin",type:"bool",description:"Pin the task to the top of the sidebar."},Vf.prompt(!1,"Optional first message \u2014 when set, materializes the worktree, starts the engine, and pastes it.")],handler:VC},{name:"fan-out",summary:`Spawn N tasks of ONE prompt in a single call (parallel attempts). Capped at ${FG}.`,flags:[Vf.repo(),Vf.prompt(!0,"Shared prompt delivered to every spawned task."),{name:"count",type:"int",placeholder:"N",description:"Number of tasks of one vendor (with --vendor)."},{name:"agents",type:"string",placeholder:"claude:2,codex:1",description:"Per-vendor counts (alternative to --count)."},Vf.vendor(),Vf.title(),{name:"base-branch",type:"string",placeholder:"B",description:"Base ref for every worktree."}],handler:RC},{name:"send",summary:"Paste a follow-up prompt into a task's running engine (one full turn). Defaults to the active task.",flags:[Vf.taskId(!1),Vf.prompt(!0,"Text pasted + submitted into the engine pane.")],handler:KC},{name:"dispatch",summary:"Route text into a task's live session via the daemon's session.deliver channel \u2014 the front-end hosting the session pastes it. The dispatcher's messenger (docs/design/dispatcher.md); unlike `send`, it never spawns or touches tmux itself.",flags:[Vf.taskId(!0),Vf.prompt(!0,"Text delivered into the task's engine session.")],handler:UC},{name:"note",summary:"File a one-line field note \u2014 a resolved, repo-level gotcha worth sharing. kobe forwards it to the repo's dispatcher session (the main session), which relays it to the in-flight tasks that benefit (docs/design/dispatcher.md).",flags:[Vf.taskId(!0),{name:"text",type:"string",required:!0,placeholder:"TEXT",description:"One line: the verified conclusion another session could act on."}],handler:DC},{name:"feedback",summary:"Create a GitHub Discussion in the kobe repo's Feedback category through `gh`.",flags:[{name:"title",type:"string",required:!0,placeholder:"T",description:"Discussion title."},{name:"body",type:"string",required:!0,placeholder:"TEXT",description:"Discussion body."},{name:"category",type:"string",default:Wj,placeholder:"SLUG",description:"Discussion category slug."}],offline:!0,handler:kC},{name:"issue-list",summary:"List daemon-owned issues for a repo.",flags:[Vf.repo()],handler:(f)=>DJ(f,"issue.list",{repoRoot:f.args.requirePath("repo")})},{name:"issue-create",summary:"Create a daemon-owned issue for a repo.",flags:[Vf.repo(),{name:"title",type:"string",required:!0,placeholder:"T",description:"Issue title."},{name:"body",type:"string",placeholder:"TEXT",description:"Issue body."}],handler:(f)=>DJ(f,"issue.mutate",{repoRoot:f.args.requirePath("repo"),op:{type:"create",title:f.args.require("title"),body:f.args.str("body")}})},{name:"issue-set-status",summary:"Set a daemon-owned issue's status.",flags:[Vf.repo(),{name:"id",type:"int",required:!0,placeholder:"N",description:"Issue id."},{name:"status",type:"enum",required:!0,values:zC,description:"New issue status."}],handler:(f)=>DJ(f,"issue.mutate",{repoRoot:f.args.requirePath("repo"),op:{type:"setStatus",id:f.args.int("id"),status:f.args.requireEnum("status")}})},{name:"issue-update",summary:"Update a daemon-owned issue's title and/or body.",flags:[Vf.repo(),{name:"id",type:"int",required:!0,placeholder:"N",description:"Issue id."},{name:"title",type:"string",placeholder:"T",description:"New title."},{name:"body",type:"string",placeholder:"TEXT",description:"New body."}],handler:WC},{name:"collect",summary:"Read-only comparison snapshot of several tasks (identity, branch, .running, uncommitted .changes).",flags:[{name:"task-ids",type:"csv",placeholder:"a,b,c",description:"Comma-separated task ids."},Vf.repo(!1)],handler:CC},{name:"rename",summary:"Set a task's title.",flags:[Vf.taskId(),{name:"title",type:"string",required:!0,placeholder:"T",description:"New title."}],handler:(f)=>DJ(f,"task.rename",{taskId:f.args.require("task-id"),title:f.args.require("title")})},{name:"set-branch",summary:"Rename a task's branch (git branch -m if materialized, else recorded).",flags:[Vf.taskId(),{name:"branch",type:"string",required:!0,placeholder:"B",description:"New branch name."}],handler:(f)=>DJ(f,"task.setBranch",{taskId:f.args.require("task-id"),branch:f.args.require("branch")})},{name:"set-vendor",summary:"Change a task's engine vendor (takes effect on next session rebuild).",flags:[Vf.taskId(),{...Vf.vendor(),required:!0}],handler:(f)=>DJ(f,"task.setVendor",{taskId:f.args.require("task-id"),vendor:f.args.requireEnum("vendor")})},{name:"set-status",summary:"Set a task's lifecycle status.",flags:[Vf.taskId(),{name:"status",type:"enum",required:!0,values:SK,description:"New status."}],handler:(f)=>DJ(f,"task.status",{taskId:f.args.require("task-id"),status:f.args.requireEnum("status")})},{name:"archive",summary:"Archive (or with --archived=false, unarchive) a task. Non-destructive: worktree/branch/history stay.",flags:[Vf.taskId(),{name:"archived",type:"bool",default:"true",description:"true to archive, false to unarchive."}],handler:OC},{name:"pin",summary:"Pin (or with --pinned=false, unpin) a task to the top of the sidebar.",flags:[Vf.taskId(),{name:"pinned",type:"bool",default:"true",description:"true to pin, false to unpin."}],handler:(f)=>DJ(f,"task.pin",{taskId:f.args.require("task-id"),pinned:f.args.bool("pinned")??!0})},{name:"set-active",summary:"Set the shared active task (the focus every Tasks pane highlights). Pass --none to clear.",flags:[Vf.taskId(!1),{name:"none",type:"bool",description:"Clear the active task instead of setting one."}],handler:FC},{name:"ensure-worktree",summary:"Materialize a task's git worktree on disk now (without starting an engine). Returns { worktreePath }.",flags:[Vf.taskId()],handler:(f)=>DJ(f,"task.ensureWorktree",{taskId:f.args.require("task-id")})},{name:"delete",summary:"Permanently remove a task (and its worktree). DESTRUCTIVE \u2014 prefer `archive`. Needs --force on a dirty worktree.",flags:[Vf.taskId(),{name:"force",type:"bool",description:"Delete even with uncommitted changes."}],handler:AC},{name:"discover-adoptable",summary:"List existing git worktrees in a repo not yet tracked as kobe tasks. Returns { worktrees }.",flags:[Vf.repo()],handler:(f)=>DJ(f,"worktree.discoverAdoptable",{repo:f.args.requirePath("repo")})},{name:"adopt",summary:"Import an existing git worktree as a kobe task. Returns { task }.",flags:[Vf.repo(),{name:"worktree",type:"string",required:!0,placeholder:"PATH",description:"Path of the worktree to adopt."},{name:"branch",type:"string",placeholder:"B",description:"Branch override (else the worktree's own)."},Vf.vendor(),Vf.title()],handler:gC}],XC=AG.map((f)=>f.name);uK=[{name:"pretty",type:"bool",description:"Pretty-print stdout JSON."},{name:"help",type:"bool",description:"Show usage for the verb and exit."}];BC={sessionExists:Hf,ensureSession:async(f)=>(await Promise.resolve().then(() => (J1(),r1))).ensureSession(f),waitForEnginePane:VX,pasteAndSubmit:KX,resolveEngineLaunchInit:async(f,J,Y)=>(await Promise.resolve().then(() => (GG(),EB))).resolveEngineLaunchInit(f,J,Y),engineCommand:N1};Mj={isTaskRunning:(f)=>Hf(Lf(f)),deliverPrompt:(f,J,Y)=>hK(f,J,Y),resolveRepoRoot:async(f)=>(await Promise.resolve().then(() => (Of(),cJ))).resolveMainRepoRoot(f),defaultVendor:async()=>{let{getPersistedString:f}=await Promise.resolve().then(() => (Of(),cJ)),J=f("lastSelectedVendor")?.trim();return J?J:void 0},readWorktreeChanges:async(f)=>(await Promise.resolve().then(() => (VG(),zK))).readWorktreeChanges(f),tearDownSession:async(f)=>{let J=Lf(f);await bJ(J).catch(()=>{}),await l1(J).catch(()=>{})}}});var iK={};jf(iK,{updatePlan:()=>cK,runUpdateSubcommand:()=>SC,parseUpdateArgs:()=>nK});import{spawnSync as bC}from"child_process";function cK(){return{command:"sh",args:["-c",hJ],display:hJ}}function nK(f){let J=!1;for(let Y=0;Y<f.length;Y+=1){let z=f[Y];if(z==="--help"||z==="-h"||z==="help")return{help:!0,dryRun:J};if(z==="--dry-run"){J=!0;continue}process.stderr.write(`kobe update: unknown argument "${z}"
|
|
136
|
+
|
|
137
|
+
`),dK(process.stderr),process.exit(2)}return{help:!1,dryRun:J}}function dK(f){f.write(["Usage: kobe update [--dry-run]","","Runs kobe's GitHub-hosted update script.","","Default command:",` ${hJ}`,"","Script URL:",` ${eX}`,"","Manual fallback:",` ${lQ()}`,"","Examples:"," kobe update"," kobe update --dry-run",""].join(`
|
|
138
|
+
`))}async function SC(f,J){let Y={spawn:J?.spawn??bC,stdout:J?.stdout??process.stdout,stderr:J?.stderr??process.stderr,exit:J?.exit??((q)=>process.exit(q))},z=nK(f);if(z.help){dK(Y.stdout);return}let G=cK();if(Y.stdout.write(`kobe ${s0} -> latest
|
|
138
139
|
`),Y.stdout.write(`running: ${G.display}
|
|
139
|
-
`),z.dryRun)return;let
|
|
140
|
-
`),Y.exit(1);Y.exit(
|
|
141
|
-
`),process.exit(1)}function
|
|
140
|
+
`),z.dryRun)return;let X=Y.spawn(G.command,G.args,{stdio:"inherit"});if(X.error)Y.stderr.write(`kobe update: failed to run ${G.command}: ${X.error.message}
|
|
141
|
+
`),Y.exit(1);Y.exit(X.status??1)}var lK=k(()=>{D1()});var pK={};jf(pK,{runThemeSubcommand:()=>nC});import{existsSync as $K,mkdirSync as IC,readFileSync as TC,readdirSync as uC,unlinkSync as EC,writeFileSync as xC}from"fs";import{basename as aK,join as Oj,resolve as wC}from"path";function fY(f){process.stderr.write(`kobe theme: ${f}
|
|
142
|
+
`),process.exit(1)}function xY(f){process.stderr.write(`kobe theme: ${f}
|
|
142
143
|
|
|
143
|
-
`),
|
|
144
|
+
`),rK(),process.exit(2)}function hC(){let f=[];f.push("bundled:");for(let z of[...Fj].sort())f.push(` ${z} [built-in]`);let J=qG(),Y=[];try{Y=uC(J).filter((z)=>z.endsWith(".json")).sort()}catch{}if(f.push(""),f.push(`user (${J}):`),Y.length===0)f.push(" (none)");else for(let z of Y){let G=z.slice(0,-5),X=Oj(J,z),q=Fj.includes(G)?" (overrides built-in)":"";f.push(` ${G}${q} ${X}`)}process.stdout.write(`${f.join(`
|
|
144
145
|
`)}
|
|
145
|
-
`)}async function
|
|
146
|
+
`)}async function PC(f){if(/^https?:\/\//i.test(f)){let X;try{X=await fetch(f)}catch(V){fY(`failed to fetch ${f}: ${V instanceof Error?V.message:String(V)}`)}if(!X.ok)fY(`failed to fetch ${f}: HTTP ${X.status} ${X.statusText}`);let q=await X.text(),Q=f.split(/[?#]/)[0]??f,H=aK(Q)||"theme.json",B=H.endsWith(".json")?H.slice(0,-5):H;return{text:q,defaultName:B}}let J=wC(process.cwd(),f),Y;try{Y=TC(J,"utf8")}catch(X){fY(`failed to read ${J}: ${X instanceof Error?X.message:String(X)}`)}let z=aK(J),G=z.endsWith(".json")?z.slice(0,-5):z;return{text:Y,defaultName:G}}function vC(f){let J=null,Y,z=!1;for(let G=0;G<f.length;G+=1){let X=f[G];if(X==="--force"||X==="-f"){z=!0;continue}if(X==="--name"||X==="-n"){let q=f[G+1];if(q===void 0)xY("--name requires a value");Y=q,G+=1;continue}if(X.startsWith("--name=")){Y=X.slice(7);continue}if(X.startsWith("--"))xY(`unknown flag: ${X}`);if(J===null){J=X;continue}xY(`unexpected positional argument: ${X}`)}if(J===null)xY("missing <source> (URL or path to theme JSON)");return{source:J,opts:{name:Y,force:z}}}async function mC(f){let{source:J,opts:Y}=vC(f),{text:z,defaultName:G}=await PC(J),X;try{X=JSON.parse(z)}catch(V){fY(`source is not valid JSON: ${V instanceof Error?V.message:String(V)}`)}let q=Nq(X);if(!q.ok)fY(`source is not a valid kobe theme: ${q.reason}`);let Q=Y.name??G;if(!Q||!/^[a-zA-Z0-9._-]+$/.test(Q))fY(`invalid theme name "${Q}" (use letters, digits, '.', '_', '-')`);let H=qG();IC(H,{recursive:!0});let B=Oj(H,`${Q}.json`);if($K(B)&&!Y.force)fY(`${B} already exists (pass --force to overwrite)`);xC(B,`${JSON.stringify(q.theme,null,2)}
|
|
146
147
|
`,"utf8"),process.stdout.write(`installed theme "${Q}" -> ${B}
|
|
147
|
-
`)}function
|
|
148
|
-
`)}function
|
|
149
|
-
`))}async function
|
|
148
|
+
`)}function cC(f){let J=f[0];if(!J)xY("missing <name>");if(f.length>1)xY(`unexpected extra arguments after "${J}"`);if(Fj.includes(J))fY(`"${J}" is a built-in theme and cannot be removed`);let Y=Oj(qG(),`${J}.json`);if(!$K(Y))fY(`no user theme named "${J}" (looked for ${Y})`);EC(Y),process.stdout.write(`removed theme "${J}" (${Y})
|
|
149
|
+
`)}function rK(){process.stderr.write(["Usage: kobe theme <command> [args]","","Commands:"," list List bundled and user-installed themes"," add <source> [--name <name>] Install a theme from a URL or local path"," Pass --force to overwrite an existing user theme"," remove <name> Remove a user-installed theme","",`User themes live under: ${qG()}`,"Schema: https://raw.githubusercontent.com/sma1lboy/kobe/main/packages/kobe/src/tui/context/theme/theme.schema.json",""].join(`
|
|
150
|
+
`))}async function nC(f){let[J,...Y]=f;if(!J||J==="--help"||J==="-h"||J==="help"){if(rK(),!J)process.exit(2);return}if(J==="list"||J==="ls"){if(Y.length>0)xY(`"${J}" takes no arguments`);hC();return}if(J==="add"){await mC(Y);return}if(J==="remove"||J==="rm"){cC(Y);return}xY(`unknown action "${J}" (try "list", "add", or "remove")`)}var Fj;var _K=k(()=>{lf();yq();vB();Fj=["claude","conductor","dracula","nord","opencode","osaka-jade","tokyonight"]});var eK={};jf(eK,{runFeedbackSubcommand:()=>iC,parseFeedbackArgs:()=>tK});import{readFileSync as oK}from"fs";function wY(f){process.stderr.write(`kobe feedback: ${f}
|
|
150
151
|
|
|
151
|
-
${
|
|
152
|
-
`),process.exit(2)}function
|
|
153
|
-
`);return}if(!J.title)
|
|
154
|
-
`)});import{homedir as
|
|
155
|
-
`))}function
|
|
152
|
+
${sK}
|
|
153
|
+
`),process.exit(2)}function dC(f){if(f==="-")return oK(0,"utf8");return oK(f,"utf8")}function tK(f){let J={help:!1};for(let Y=0;Y<f.length;Y++){let z=f[Y];if(z==="--help"||z==="-h"||z==="help")return{...J,help:!0};if(z==="--title"){if(J.title=f[++Y],J.title===void 0)wY("--title requires a value");continue}if(z==="--body"){if(J.body=f[++Y],J.body===void 0)wY("--body requires a value");continue}if(z==="--body-file"){if(J.bodyFile=f[++Y],J.bodyFile===void 0)wY("--body-file requires a value");continue}if(z==="--category"){if(J.category=f[++Y],J.category===void 0)wY("--category requires a value");continue}wY(`unexpected argument "${z}"`)}return J}async function iC(f){let J=tK(f);if(J.help){process.stdout.write(`${sK}
|
|
154
|
+
`);return}if(!J.title)wY("--title is required");if(J.body&&J.bodyFile)wY("pass either --body or --body-file, not both");let Y=J.bodyFile?dC(J.bodyFile):J.body;if(!Y)wY("--body or --body-file is required");let z=MG({title:J.title,body:Y,categorySlug:J.category});console.log(`created Discussion #${z.number}: ${z.url}`)}var sK;var fU=k(()=>{fQ();sK=["Usage: kobe feedback --title <text> (--body <text> | --body-file <path>) [--category <slug>]","","Create a GitHub Discussion in the kobe repository using the GitHub CLI.","","Requires:"," gh auth login","","Options:"," --title <text> Discussion title"," --body <text> Discussion body"," --body-file <path> Read the Discussion body from a file; use - for stdin"," --category <slug> Discussion category slug (default: feedback)"," -h, --help Print this help",""].join(`
|
|
155
|
+
`)});import{homedir as lC}from"os";async function JU(f={}){let J=f.homeDir??process.env.KOBE_HOME_DIR??lC(),Y=new xz({homeDir:J});await Y.load();let z=new qZ,G=new AZ({store:Y,worktrees:z});return{homeDir:J,orchestrator:G,store:Y,worktrees:z,async close(){G.dispose()}}}var YU=k(()=>{lG();vG();qH()});var GU={};jf(GU,{runDaemonSubcommand:()=>$C});function zU(f){f.write(["Usage: kobe daemon <command>","","Commands:"," status Print the running daemon's status JSON (default)"," start Run the daemon in the foreground (this process becomes it)"," stop Ask the running daemon to shut down"," restart Stop the daemon (graceful \u2192 SIGTERM \u2192 SIGKILL) and respawn it",""].join(`
|
|
156
|
+
`))}function aC(){let f=process.env.KOBE_DAEMON_WEB_PORT?.trim();if(f==="0"||f==="off"||f==="false")return;let J=f?Number.parseInt(f,10):5174;return Number.isFinite(J)&&J>0?J:5174}async function $C(f){let[J="status"]=f,Y=CJ(),z=dJ();if(J==="--help"||J==="-h"||J==="help"){zU(process.stdout);return}if(J==="status"){let Q=new d1(Y);try{let H=await Q.request("daemon.status");console.log(JSON.stringify(H,null,2))}catch{let H=await KG(z);if(H)console.log(`kobe daemon: no daemon socket at ${Y} (stale pidfile pid=${H})`);else console.log(`kobe daemon: no daemon running at ${Y}`);process.exitCode=1}finally{Q.close()}return}if(J==="stop"){let Q=new d1(Y);try{await Q.request("daemon.stop"),console.log("kobe daemon: stop requested")}catch{console.log(`kobe daemon: no daemon running at ${Y}`)}finally{Q.close()}return}if(J==="restart"){await UG(Y,z),(await UJ()).close(),console.log(`kobe daemon: restarted, listening on ${Y}`);return}if(J!=="start")process.stderr.write(`kobe daemon: unknown command "${J}"
|
|
156
157
|
|
|
157
|
-
`),
|
|
158
|
+
`),zU(process.stderr),process.exit(2);mV();let G=await JU(),X=await jK(G.orchestrator,{socketPath:Y,pidPath:z,homeDir:G.homeDir,webPort:aC(),webHost:process.env.KOBE_WEB_HOST,webStaticDir:process.env.KOBE_DAEMON_WEB_STATIC_DIR,onStop:async()=>{await G.close()}});if(console.log(`kobe daemon: listening on ${X.socketPath}`),X.webPort)console.log(`kobe daemon: web transport listening on http://127.0.0.1:${X.webPort}`);let q=async()=>{await X.close(),await G.close(),process.exit(0)};process.once("SIGINT",()=>void q()),process.once("SIGTERM",()=>void q())}var XU=k(()=>{$G();y1();sq();mz();oq();YU()});import{existsSync as rC,readFileSync as pC}from"fs";import{homedir as _C}from"os";import{join as ZU}from"path";function Rj(f={}){return["skills","add",oC,"--skill","kobe","--agent",f.agent??zQ]}function GQ(f={}){return`npx ${Rj(f).join(" ")}`}function Cj(f={}){let J=f.home??_C(),Y=f.cwd??process.cwd();return[ZU(J,qU),ZU(Y,qU)]}function sC(f){let J=f.match(/kobe-skill-version:\s*(\d+)/);return J?Number.parseInt(J[1],10):null}function CX(f){let J=Cj(f).find((G)=>rC(G));if(!J)return{installed:!1,installedVersion:null,currentVersion:Aj,stale:!1};let Y=null;try{Y=sC(pC(J,"utf8"))}catch{Y=null}let z=Y===null||Y<Aj;return{installed:!0,installedVersion:Y,currentVersion:Aj,stale:z}}function QU(){let f=CX();if(!f.installed){if(kf(gj)==="1")return;af(gj,"1"),process.stderr.write(`
|
|
158
159
|
kobe: the kobe agent skill isn't installed \u2014 install it so your coding agent can drive kobe via \`kobe api\`:
|
|
159
|
-
${
|
|
160
|
-
(wraps \`${
|
|
160
|
+
${RX}
|
|
161
|
+
(wraps \`${GQ()}\`; check anytime with \`kobe doctor\`)
|
|
161
162
|
|
|
162
|
-
`);return}if(f.stale){let J=`${
|
|
163
|
+
`);return}if(f.stale){let J=`${gj}:v${f.currentVersion}`;if(kf(J)==="1")return;af(J,"1");let Y=f.installedVersion===null?"an older":`v${f.installedVersion}`;process.stderr.write(`
|
|
163
164
|
kobe: your kobe agent skill is out of date (${Y}; this kobe wants v${f.currentVersion}) \u2014 refresh it so \`kobe api\` guidance matches:
|
|
164
|
-
${
|
|
165
|
+
${RX}
|
|
165
166
|
|
|
166
|
-
`)}}var
|
|
167
|
+
`)}}var Aj=2,qU=".claude/skills/kobe/SKILL.md",RX="kobe skill install",oC="Sma1lboy/kobe",zQ="claude-code",gj="skillHintSeen";var XQ=k(()=>{Of()});var ZQ={};jf(ZQ,{runResetSubcommand:()=>Bk,runReloadSubcommand:()=>jk,runDoctorSubcommand:()=>Qk});import{existsSync as tC,readFileSync as jU,statSync as eC}from"fs";import{unlink as fk}from"fs/promises";import{join as WU}from"path";import{createInterface as Jk}from"readline";function Yk(f){try{return process.kill(f,0),!0}catch(J){return J.code==="EPERM"}}async function zk(f){let J=new d1(f);try{return await J.request("daemon.status")}catch{return null}finally{J.close()}}function Gk(f){let J=Math.floor(f/1000);if(J<60)return`${J}s`;let Y=Math.floor(J/60);if(Y<60)return`${Y}m ${J%60}s`;return`${Math.floor(Y/60)}h ${Y%60}m`}function Xk(f){if(f<1024)return`${f} B`;if(f<1048576)return`${(f/1024).toFixed(1)} KB`;return`${(f/1048576).toFixed(1)} MB`}function kj(f){try{let J=eC(f);return`present (${Xk(J.size)}, modified ${J.mtime.toISOString()})`}catch{return"absent"}}function VU(f){try{let J=JSON.parse(jU(f,"utf8"));return Array.isArray(J.tasks)?J.tasks.length:null}catch{return null}}function Zk(f,J){try{return jU(f,"utf8").split(`
|
|
167
168
|
`).filter((z)=>z.trim().length>0).slice(-J).join(`
|
|
168
|
-
`)}catch{return""}}async function
|
|
169
|
-
`).filter((Y)=>Y.trim().length>0).length}async function
|
|
169
|
+
`)}catch{return""}}async function Nj(f){let J=Bun.spawn(Hz(...f),{stdin:"ignore",stdout:"pipe",stderr:"ignore"}),[Y,z]=await Promise.all([new Response(J.stdout).text().catch(()=>""),J.exited]);return{code:z,stdout:Y}}async function qk(){if(!await NJ())return 0;let{code:f,stdout:J}=await Nj(["list-sessions","-F","#{session_name}"]);if(f!==0)return 0;return J.split(`
|
|
170
|
+
`).filter((Y)=>Y.trim().length>0).length}async function Qk(f=[]){if(f.includes("--help")||f.includes("-h")||f.includes("help")){process.stdout.write(["Usage: kobe doctor","","Read-only diagnosis of the daemon / tmux / state. Takes no options.",""].join(`
|
|
170
171
|
`));return}let J=f.find((j)=>j.length>0);if(J!==void 0)process.stderr.write([`kobe doctor: unexpected argument "${J}"`,"","Usage: kobe doctor (read-only; takes no options)",""].join(`
|
|
171
|
-
`)),process.exit(2);let Y=CJ(),z=
|
|
172
|
-
`))Q.push(` \u2502 ${L}`)}}if(Q.push(""),await NJ())Q.push(`tmux: ${await
|
|
173
|
-
`))}async function
|
|
174
|
-
`))}async function
|
|
172
|
+
`)),process.exit(2);let Y=CJ(),z=dJ(),G=CZ(),X=WU(ef(),"tasks.json"),q=m1(),Q=["kobe doctor",` home: ${OJ()}`,` socket: ${Y}`,""],H=await zk(Y);if(H){let j=typeof H.daemonPid==="number"?H.daemonPid:"?",U=typeof H.uptimeMs==="number"?Gk(H.uptimeMs):"?",L=typeof H.taskCount==="number"?H.taskCount:"?",O=typeof H.attachedClients==="number"?H.attachedClients:"?";Q.push(`daemon: \u2713 running (pid ${j}, up ${U}, ${L} task(s), ${O} client(s))`);let M=typeof H.kobeVersion==="string"?H.kobeVersion:void 0;if(M&&M!==s0)Q.push(` \u26A0 stale build: daemon is v${M}, you launched v${s0}`),Q.push(" \u2192 run `kobe daemon restart`, then `kobe reload` in any open kobe sessions");else if(M)Q.push(` build: v${M}`)}else{let j=await KG(z);if(j&&Yk(j))Q.push(`daemon: \u2717 WEDGED \u2014 process alive (pid ${j}) but not accepting connections`),Q.push(" \u2192 run `kobe reset` to kill it, then relaunch kobe");else if(j)Q.push(`daemon: \u2717 not running (stale pidfile \u2192 pid ${j} is gone)`),Q.push(" \u2192 harmless; relaunch kobe, or `kobe reset` to clear the stale pidfile");else Q.push("daemon: \u2717 not running (no pidfile)");if(tC(Y))Q.push(` orphan socket file present: ${Y}`);let U=Zk(G,8);if(U){Q.push(" last lines of daemon.log:");for(let L of U.split(`
|
|
173
|
+
`))Q.push(` \u2502 ${L}`)}}if(Q.push(""),await NJ())Q.push(`tmux: ${await qk()} kobe session(s) on \`${QJ}\` socket`);else Q.push("tmux: \u2717 not found on PATH (task sessions need tmux)");Q.push("");let B=CX();if(!B.installed)Q.push("skill: \u2717 kobe agent skill not installed (optional \u2014 lets a coding agent drive `kobe api`)"),Q.push(` \u2192 ${RX}`);else if(B.stale){let j=B.installedVersion===null?"unstamped":`v${B.installedVersion}`;Q.push(`skill: \u26A0 kobe agent skill out of date (${j}; this kobe wants v${B.currentVersion})`),Q.push(` \u2192 ${RX}`)}else Q.push(`skill: \u2713 kobe agent skill installed (v${B.installedVersion})`);Q.push("");let V=VU(X);Q.push(`tasks.json: ${kj(X)}${V===null?"":` \u2014 ${V} task(s)`}`),Q.push(`state.json: ${kj(q)}`),Q.push(`daemon.log: ${kj(G)}`),console.log(Q.join(`
|
|
174
|
+
`))}async function Hk(f){let J=Jk({input:process.stdin,output:process.stdout});try{let Y=await new Promise((z)=>J.question(f,z));return/^y(es)?$/i.test(Y.trim())}finally{J.close()}}async function HU(f,J){try{await fk(f),console.log(` removed ${J} (${f})`)}catch(Y){if(Y.code==="ENOENT")console.log(` ${J}: already absent`);else console.error(` failed to remove ${J} (${f}): ${Y instanceof Error?Y.message:String(Y)}`)}}function BU(f){f.write(["Usage: kobe reset [--hard] [--yes]","","Recover a wedged install: stop the daemon (graceful \u2192 SIGTERM \u2192 SIGKILL),","remove its socket + pidfile, and kill all kobe tmux sessions.","Never touches your git worktrees.","","Options:"," --hard Also wipe the task index + UI state"," -y, --yes Skip the interactive confirmation"," -h, --help Print this help",""].join(`
|
|
175
|
+
`))}async function Bk(f){if(f.includes("--help")||f.includes("-h")||f.includes("help")){BU(process.stdout);return}let J=new Set(["--hard","--yes","-y"]),Y=f.find((j)=>!J.has(j));if(Y!==void 0)process.stderr.write(`kobe reset: unknown argument "${Y}"
|
|
175
176
|
|
|
176
|
-
`),
|
|
177
|
-
re-run with --yes to proceed (no interactive terminal for a y/N prompt)`);return}if(!await
|
|
177
|
+
`),BU(process.stderr),process.exit(2);let z=f.includes("--hard"),G=f.includes("--yes")||f.includes("-y"),X=CJ(),q=dJ(),Q=WU(ef(),"tasks.json"),H=m1();if(console.log("kobe reset will:"),console.log(" \u2022 stop the kobe daemon (graceful \u2192 SIGTERM \u2192 SIGKILL)"),console.log(` \u2022 remove its socket + pidfile (${X})`),console.log(` \u2022 kill all kobe tmux sessions on the \`${QJ}\` socket`),z){let j=VU(Q);console.log(` \u2022 DELETE the task index${j===null?"":` (${j} task(s))`} \u2014 ${Q}`),console.log(` \u2022 DELETE the UI state \u2014 ${H}`)}if(console.log(" \u2022 NOT touch your git worktrees under ~/.kobe/worktrees/ or legacy repo-local roots"),!z)console.log(" (your task list & worktrees are kept \u2014 add --hard to also wipe the task index + UI state)");if(!G){if(!process.stdin.isTTY){console.log(`
|
|
178
|
+
re-run with --yes to proceed (no interactive terminal for a y/N prompt)`);return}if(!await Hk(z?`
|
|
178
179
|
Stop daemon, kill sessions AND wipe task index? [y/N] `:`
|
|
179
|
-
Stop daemon and kill kobe sessions? [y/N] `)){console.log("aborted \u2014 nothing changed");return}}console.log("");let{pid:B,method:V}=await
|
|
180
|
-
kobe: reset complete. Relaunch kobe to start fresh.`)}async function
|
|
180
|
+
Stop daemon and kill kobe sessions? [y/N] `)){console.log("aborted \u2014 nothing changed");return}}console.log("");let{pid:B,method:V}=await UG(X,q);if(console.log(V==="absent"?" daemon: was not running (cleared any stale socket/pidfile)":` daemon: stopped via ${V}${B?` (pid ${B})`:""}`),await NJ()){let{code:j}=await Nj(["kill-server"]);console.log(j===0?` tmux: killed all sessions on \`${QJ}\``:` tmux: no sessions on \`${QJ}\``)}else console.log(" tmux: not installed \u2014 no sessions to kill");if(z)await HU(Q,"task index"),await HU(H,"UI state");console.log(`
|
|
181
|
+
kobe: reset complete. Relaunch kobe to start fresh.`)}async function jk(f=[]){if(f.includes("--help")||f.includes("-h")||f.includes("help")){process.stdout.write(["Usage: kobe reload","","Restart kobe's Tasks + Ops panes in every live session, in place.","Picks up new kobe code without `kobe reset` \u2014 the engine (claude)","panes and your running turns are never touched. Takes no options.",""].join(`
|
|
181
182
|
`));return}let J=f.find((Q)=>Q.length>0);if(J!==void 0)process.stderr.write(`kobe reload: unexpected argument "${J}"
|
|
182
183
|
|
|
183
184
|
Usage: kobe reload (takes no options)
|
|
184
|
-
`),process.exit(2);if(!await NJ()){console.log("kobe reload: tmux is not installed \u2014 no panes to reload");return}let{code:Y,stdout:z}=await
|
|
185
|
-
`).map((Q)=>Q.trim()).filter((Q)=>Q.length>0);if(G.length===0){console.log(`kobe reload: no kobe tmux sessions on the \`${QJ}\` socket`);return}let{refreshKobeWorkspacePanes:
|
|
186
|
-
`).map((z)=>Number.parseInt(z.trim(),10)).filter((z)=>Number.isFinite(z)&&z!==process.pid)}catch{return[]}}async function
|
|
187
|
-
`),process.exit(2);J=z}try{let z=f.includes("--routes-only")||f.includes("--bridge-only"),G=!f.includes("--no-takeover"),
|
|
188
|
-
`),process.stdout.write(` home: ${
|
|
189
|
-
`);else if(q=await
|
|
190
|
-
`),process.stdout.write(` home: ${
|
|
185
|
+
`),process.exit(2);if(!await NJ()){console.log("kobe reload: tmux is not installed \u2014 no panes to reload");return}let{code:Y,stdout:z}=await Nj(["list-sessions","-F","#{session_name}"]);if(Y!==0){console.log(`kobe reload: no kobe tmux sessions on the \`${QJ}\` socket`);return}let G=z.split(`
|
|
186
|
+
`).map((Q)=>Q.trim()).filter((Q)=>Q.length>0);if(G.length===0){console.log(`kobe reload: no kobe tmux sessions on the \`${QJ}\` socket`);return}let{refreshKobeWorkspacePanes:X}=await Promise.resolve().then(() => (J1(),r1)),q=0;for(let Q of G)try{await X(Q),q++}catch(H){console.error(` failed to reload session "${Q}": ${H instanceof Error?H.message:String(H)}`)}console.log(`kobe: reloaded Tasks/Ops panes in ${q}/${G.length} session(s) \u2014 engine panes untouched`)}var qQ=k(()=>{$G();sq();mz();oq();lf();XQ();Tf();D1()});var OU={};jf(OU,{runWebSubcommand:()=>Fk});import{existsSync as DU}from"fs";import{homedir as Wk}from"os";import{resolve as QQ}from"path";import{fileURLToPath as LU}from"url";function KU(){let f=process.env.KOBE_HOME_DIR?.trim();return f?`sandbox: ${f}`:`${Wk()}/.kobe (production)`}function Kk(){let f=LU(import.meta.url),J=[QQ(f,"../../../../kobe-web/dist"),QQ(f,"../../web-ui")];for(let Y of J)if(DU(`${Y}/index.html`))return Y;return}function Uk(){let f=LU(import.meta.url),J=[QQ(f,"../../../../kobe-web/pty-server.mjs"),QQ(f,"../../web-ui/pty-server.mjs")];for(let Y of J)if(DU(Y))return Y;return}async function UU(f){try{let J=Bun.spawn(["lsof","-nP",`-iTCP:${f}`,"-sTCP:LISTEN","-t"],{stdout:"pipe",stderr:"ignore"});return(await new Response(J.stdout).text()).split(`
|
|
187
|
+
`).map((z)=>Number.parseInt(z.trim(),10)).filter((z)=>Number.isFinite(z)&&z!==process.pid)}catch{return[]}}async function Dk(f){let J;try{J=(await(await fetch(`http://localhost:${f}${FU}`,{signal:AbortSignal.timeout(800)})).text()).trim()}catch{return}if(J!==MU)throw Error(`PTY port ${f} is in use by a non-kobe service; refusing to replace it`);let Y=await UU(f);for(let G of Y)try{process.kill(G,"SIGTERM")}catch{}let z=Date.now()+2000;while(Date.now()<z){if((await UU(f)).length===0)return;await new Promise((G)=>setTimeout(G,100))}}async function Lk(f){let J=Uk();if(!J)return null;let Y=f.webPort+2;if(f.takeover)await Dk(Y);return Bun.spawn(["node",J],{stdin:"ignore",stdout:"inherit",stderr:"inherit",env:{...process.env,KOBE_DAEMON_WEB_PORT:String(f.webPort),KOBE_PTY_PORT:String(Y)}})}async function Mk(f,J){if(process.env.KOBE_DAEMON_WEB_PORT=String(f),J)process.env.KOBE_DAEMON_WEB_STATIC_DIR=J;await DG();let Y;try{Y=(await(await fetch(`http://127.0.0.1:${f}${FU}`,{signal:AbortSignal.timeout(1500)})).text()).trim()}catch(z){throw Error(`daemon web transport is not reachable on :${f}; run \`kobe daemon restart\` so the daemon picks up this build (${z instanceof Error?z.message:String(z)})`)}if(Y!==MU)throw Error(`unexpected daemon web health marker on :${f}: ${Y}`);if(J){if(!(await fetch(`http://127.0.0.1:${f}/`,{signal:AbortSignal.timeout(1500)})).ok)throw Error(`daemon web transport is up on :${f} but is not serving web assets; run \`kobe daemon restart\` so it picks up ${J}`)}}async function Fk(f){if(f.includes("--help")||f.includes("-h")){process.stdout.write(Vk);return}let J=5174,Y=f.indexOf("--port");if(Y!==-1){let z=Number.parseInt(f[Y+1]??"",10);if(!Number.isFinite(z))process.stderr.write(`kobe web: --port needs a number
|
|
188
|
+
`),process.exit(2);J=z}try{let z=f.includes("--routes-only")||f.includes("--bridge-only"),G=!f.includes("--no-takeover"),X=z?void 0:Kk();if(!z&&!X)throw Error("web assets are missing from this kobe build; run `bun run build` in packages/kobe, or `bun run dev` in packages/kobe-web from a source checkout");await Mk(J,X);let q=null,Q=!1,H=()=>{if(Q)return;Q=!0,q?.kill(),q=null};if(z)process.stdout.write(`kobe daemon web transport listening on http://localhost:${J} (routes only)
|
|
189
|
+
`),process.stdout.write(` home: ${KU()}
|
|
190
|
+
`);else if(q=await Lk({webPort:J,takeover:G}),process.stdout.write(`kobe web \u2192 http://localhost:${J}
|
|
191
|
+
`),process.stdout.write(` home: ${KU()}
|
|
191
192
|
`),!q)process.stderr.write(`kobe web: PTY server not found; terminal tabs will be unavailable
|
|
192
193
|
`);process.on("SIGINT",()=>{H(),process.exit(0)}),process.on("SIGTERM",()=>{H(),process.exit(0)}),q?.exited.then(()=>{if(!Q)process.stderr.write(`kobe web: PTY server exited
|
|
193
194
|
`),H(),process.exit(1)}),await new Promise(()=>{})}catch(z){process.stderr.write(`kobe web: ${z instanceof Error?z.message:String(z)}
|
|
194
|
-
`),process.exit(1)}}var
|
|
195
|
+
`),process.exit(1)}}var MU="kobe-web",FU="/__kobe_web",Vk=`Usage: kobe web [options]
|
|
195
196
|
|
|
196
197
|
Launch the kobe web UI through daemon web transport on http://localhost:<port>.
|
|
197
198
|
|
|
@@ -200,45 +201,45 @@ Options:
|
|
|
200
201
|
--routes-only Routes only; Vite serves the SPA separately.
|
|
201
202
|
--no-takeover Reserved for compatibility; daemon owns the web port.
|
|
202
203
|
-h, --help Show this help.
|
|
203
|
-
`;var
|
|
204
|
-
`)}function
|
|
204
|
+
`;var AU=k(()=>{y1()});var RU={};jf(RU,{runSkillSubcommand:()=>Ak});function yj(){return["usage: kobe skill <verb>","","verbs:"," install [--agent NAME] Install the kobe agent skill (wraps `npx skills add`)"," status Show whether the skill is installed"," command [--agent NAME] Print the underlying npx command without running it","",`The skill teaches a coding agent how to drive \`kobe api\`. Default agent: ${zQ}.`].join(`
|
|
205
|
+
`)}function gU(f){let J=zQ;for(let Y=0;Y<f.length;Y++){let z=f[Y];if(z==="--agent"){let G=f[Y+1];if(!G||G.startsWith("--"))process.stderr.write(`kobe skill: --agent requires a value
|
|
205
206
|
`),process.exit(2);J=G,Y++}else if(z.startsWith("--agent="))J=z.slice(8);else process.stderr.write(`kobe skill: unknown flag "${z}"
|
|
206
207
|
|
|
207
|
-
${
|
|
208
|
-
`),process.exit(2)}return J}async function
|
|
209
|
-
`),!J)process.exitCode=2;return}if(!
|
|
208
|
+
${yj()}
|
|
209
|
+
`),process.exit(2)}return J}async function Ak(f){let[J,...Y]=f;if(!J||J==="--help"||J==="-h"||J==="help"){if(process.stdout.write(`${yj()}
|
|
210
|
+
`),!J)process.exitCode=2;return}if(!Ok.includes(J))process.stderr.write(`kobe skill: unknown verb "${J}"
|
|
210
211
|
|
|
211
|
-
${
|
|
212
|
-
`),process.exit(2);if(J==="status"){let Q=
|
|
213
|
-
`));return}if(J==="command"){process.stdout.write(`${
|
|
214
|
-
`);return}let z=
|
|
212
|
+
${yj()}
|
|
213
|
+
`),process.exit(2);if(J==="status"){let Q=CX(),[H,B]=Cj(),V=!Q.installed?"\u2717 not installed":Q.stale?`\u26A0 out of date (installed ${Q.installedVersion===null?"unstamped":`v${Q.installedVersion}`}, this kobe wants v${Q.currentVersion})`:`\u2713 installed (v${Q.installedVersion})`;process.stdout.write([`kobe skill: ${V}`,` looked in: ${H}`,` ${B}`,Q.installed&&!Q.stale?"":" \u2192 run `kobe skill install` to install / refresh",""].join(`
|
|
214
|
+
`));return}if(J==="command"){process.stdout.write(`${GQ({agent:gU(Y)})}
|
|
215
|
+
`);return}let z=gU(Y),G=Rj({agent:z});process.stdout.write(`kobe skill: running \`npx ${G.join(" ")}\`
|
|
215
216
|
`);let q=await Bun.spawn(["npx",...G],{stdin:"inherit",stdout:"inherit",stderr:"inherit"}).exited;if(q!==0)process.stderr.write(`
|
|
216
217
|
kobe skill install failed (npx exited ${q}). Is \`npx\` on PATH and are you online?
|
|
217
|
-
You can run it yourself: ${
|
|
218
|
+
You can run it yourself: ${GQ({agent:z})}
|
|
218
219
|
`),process.exit(q||1);process.stdout.write(`kobe skill: installed.
|
|
219
|
-
`)}var
|
|
220
|
-
`))}var Dk=500,Mk="worktree-created",FU="externalWorktreeSync";var Sj=C(()=>{y1();aH();CX();gf();K1()});function bU(f){var J;if(f>=55296&&f<=57343||f>1114111)return 65533;return(J=yk.get(f))!==null&&J!==void 0?J:f}var Ij,yk,yU;var SU=C(()=>{yk=new Map([[0,65533],[128,8364],[130,8218],[131,402],[132,8222],[133,8230],[134,8224],[135,8225],[136,710],[137,8240],[138,352],[139,8249],[140,338],[142,381],[145,8216],[146,8217],[147,8220],[148,8221],[149,8226],[150,8211],[151,8212],[152,732],[153,8482],[154,353],[155,8250],[156,339],[158,382],[159,376]]),yU=(Ij=String.fromCodePoint)!==null&&Ij!==void 0?Ij:(f)=>{let J="";if(f>65535)f-=65536,J+=String.fromCharCode(f>>>10&1023|55296),f=56320|f&1023;return J+=String.fromCharCode(f),J}});function IU(f){let J=typeof atob==="function"?atob(f):typeof Buffer.from==="function"?Buffer.from(f,"base64").toString("binary"):new Buffer(f,"base64").toString("binary"),Y=J.length&-2,z=new Uint16Array(Y/2);for(let G=0,Z=0;G<Y;G+=2){let q=J.charCodeAt(G),Q=J.charCodeAt(G+1);z[Z++]=q|Q<<8}return z}var TU;var uU=C(()=>{TU=IU("QR08ALkAAgH6AYsDNQR2BO0EPgXZBQEGLAbdBxMISQrvCmQLfQurDKQNLw4fD4YPpA+6D/IPAAAAAAAAAAAAAAAAKhBMEY8TmxUWF2EYLBkxGuAa3RsJHDscWR8YIC8jSCSIJcMl6ie3Ku8rEC0CLjoupS7kLgAIRU1hYmNmZ2xtbm9wcnN0dVQAWgBeAGUAaQBzAHcAfgCBAIQAhwCSAJoAoACsALMAbABpAGcAO4DGAMZAUAA7gCYAJkBjAHUAdABlADuAwQDBQHIiZXZlAAJhAAFpeW0AcgByAGMAO4DCAMJAEGRyAADgNdgE3XIAYQB2AGUAO4DAAMBA8CFoYZFj4SFjcgBhZAAAoFMqAAFncIsAjgBvAG4ABGFmAADgNdg43fAlbHlGdW5jdGlvbgCgYSBpAG4AZwA7gMUAxUAAAWNzpACoAHIAAOA12Jzc6SFnbgCgVCJpAGwAZABlADuAwwDDQG0AbAA7gMQAxEAABGFjZWZvcnN1xQDYANoA7QDxAPYA+QD8AAABY3LJAM8AayNzbGFzaAAAoBYidgHTANUAAKDnKmUAZAAAoAYjeQARZIABY3J0AOAA5QDrAGEidXNlAACgNSLuI291bGxpcwCgLCFhAJJjcgAA4DXYBd1wAGYAAOA12Dnd5SF2ZdhiYwDyAOoAbSJwZXEAAKBOIgAHSE9hY2RlZmhpbG9yc3UXARoBHwE6AVIBVQFiAWQBZgGCAakB6QHtAfIBYwB5ACdkUABZADuAqQCpQIABY3B5ACUBKAE1AfUhdGUGYWmg0iJ0KGFsRGlmZmVyZW50aWFsRAAAoEUhbCJleXMAAKAtIQACYWVpb0EBRAFKAU0B8iFvbgxhZABpAGwAO4DHAMdAcgBjAAhhbiJpbnQAAKAwIm8AdAAKYQABZG5ZAV0BaSJsbGEAuGB0I2VyRG90ALdg8gA5AWkAp2NyImNsZQAAAkRNUFRwAXQBeQF9AW8AdAAAoJkiaSJudXMAAKCWIuwhdXMAoJUiaSJtZXMAAKCXIm8AAAFjc4cBlAFrKndpc2VDb250b3VySW50ZWdyYWwAAKAyImUjQ3VybHkAAAFEUZwBpAFvJXVibGVRdW90ZQAAoB0gdSJvdGUAAKAZIAACbG5wdbABtgHNAdgBbwBuAGWgNyIAoHQqgAFnaXQAvAHBAcUB8iJ1ZW50AKBhIm4AdAAAoC8i7yV1ckludGVncmFsAKAuIgABZnLRAdMBAKACIe8iZHVjdACgECJuLnRlckNsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbAAAoDMi7yFzcwCgLypjAHIAAOA12J7ccABDoNMiYQBwAACgTSKABURKU1phY2VmaW9zAAsCEgIVAhgCGwIsAjQCOQI9AnMCfwNvoEUh9CJyYWhkAKARKWMAeQACZGMAeQAFZGMAeQAPZIABZ3JzACECJQIoAuchZXIAoCEgcgAAoKEhaAB2AACg5CoAAWF5MAIzAvIhb24OYRRkbAB0oAciYQCUY3IAAOA12AfdAAFhZkECawIAAWNtRQJnAvIjaXRpY2FsAAJBREdUUAJUAl8CYwJjInV0ZQC0YG8AdAFZAloC2WJiJGxlQWN1dGUA3WJyImF2ZQBgYGkibGRlANxi7yFuZACgxCJmJWVyZW50aWFsRAAAoEYhcAR9AgAAAAAAAIECjgIAABoDZgAA4DXYO91EoagAhQKJAm8AdAAAoNwgcSJ1YWwAAKBQIuIhbGUAA0NETFJVVpkCqAK1Au8C/wIRA28AbgB0AG8AdQByAEkAbgB0AGUAZwByAGEA7ADEAW8AdAKvAgAAAACwAqhgbiNBcnJvdwAAoNMhAAFlb7kC0AJmAHQAgAFBUlQAwQLGAs0CciJyb3cAAKDQIekkZ2h0QXJyb3cAoNQhZQDlACsCbgBnAAABTFLWAugC5SFmdAABQVLcAuECciJyb3cAAKD4J+kkZ2h0QXJyb3cAoPon6SRnaHRBcnJvdwCg+SdpImdodAAAAUFU9gL7AnIicm93AACg0iFlAGUAAKCoInAAQQIGAwAAAAALA3Iicm93AACg0SFvJHduQXJyb3cAAKDVIWUlcnRpY2FsQmFyAACgJSJuAAADQUJMUlRhJAM2AzoDWgNxA3oDciJyb3cAAKGTIUJVLAMwA2EAcgAAoBMpcCNBcnJvdwAAoPUhciJldmUAEWPlIWZ00gJDAwAASwMAAFIDaSVnaHRWZWN0b3IAAKBQKWUkZVZlY3RvcgAAoF4p5SJjdG9yQqC9IWEAcgAAoFYpaSJnaHQA1AFiAwAAaQNlJGVWZWN0b3IAAKBfKeUiY3RvckKgwSFhAHIAAKBXKWUAZQBBoKQiciJyb3cAAKCnIXIAcgBvAPcAtAIAAWN0gwOHA3IA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YwAAoN8i4SFycnCgtiEAoD0pgKIqImJjZG9zACsVMBU6FT4VQRVyImNhcAAAoEgqAAFhdTQVNxVwAACgRipwAACgSipvAHQAAKCNInIAAKBFKgDgKiIA/gACYWxydksVURVuFXMVcgByAG2gtyEAoDwpeQCAAWV2dwBYFWUVaRVxAHACXxUAAAAAYxVyAGUA4wAXFXUA4wAZFWUAZQAAoM4iZSJkZ2UAAKDPImUAbgA7gKQApEBlI2Fycm93AAABbHJ7FX8V5SFmdACgtiFpImdodAAAoLchZQDkAG0VAAFjaYsVkRVvAG4AaQBuAPQAkwFuAHQAAKAxImwiY3R5AACgLSOACUFIYWJjZGVmaGlqbG9yc3R1d3oAuBW7Fb8V1RXgFegV+RUKFhUWHxZUFlcWZRbFFtsW7xb7FgUXChdyAPIAtAJhAHIAAKBlKQACZ2xyc8YVyhXOFdAV5yFlcgCgICDlIXRoAKA4IfIA9QxoAHagECAAoKMiawHZFd4VYSJyb3cAAKAPKWEA4wBfAgABYXnkFecV8iFvbg9hNGQAoUYhYW/tFfQVAAFnciEC8RVyAACgyiF0InNlcQAAoHcqgAFnbG0A/xUCFgUWO4CwALBAdABhALRjcCJ0eXYAAKCxKQABaXIOFhIW8yFodACgfykA4DXYId1hAHIAAAFschsWHRYAoMMhAKDCIYACYWVnc3YAKBauAjYWOhY+Fm0AAKHEIm9zLhY0Fm4AZABzoMQi9SFpdACgZiZhIm1tYQDdY2kAbgAAoPIiAKH3AGlvQxZRFmQAZQAAgfcAO29KFksW90BuI3RpbWVzAACgxyJuAPgAUBZjAHkAUmRjAG8CXhYAAAAAYhZyAG4AAKAeI28AcAAAoA0jgAJscHR1dwBuFnEWdRaSFp4W7CFhciRgZgAA4DXYVd0AotkCZW1wc30WhBaJFo0WcQBkoFAibwB0AACgUSJpIm51cwAAoDgi7CF1cwCgFCLxInVhcmUAoKEiYgBsAGUAYgBhAHIAdwBlAGQAZwDlANcAbgCAAWFkaAClFqoWtBZyAHIAbwD3APUMbwB3AG4AYQByAHIAbwB3APMA8xVhI3Jwb29uAAABbHK8FsAWZQBmAPQAHBZpAGcAaAD0AB4WYgHJFs8WawBhAHIAbwD3AJILbwLUFgAAAADYFnIAbgAAoB8jbwBwAACgDCOAAWNvdADhFukW7BYAAXJ55RboFgDgNdi53FVkbAAAoPYp8iFvaxFhAAFkcvMW9xZvAHQAAKDxImkA5qC/JVsSAAFhaP8WAhdyAPIANQNhAPIA1wvhIm5nbGUAoKYpAAFjaQ4XEBd5AF9k5yJyYXJyAKD/JwAJRGFjZGVmZ2xtbm9wcXJzdHV4MRc4F0YXWxcyBF4XaRd5F40XrBe0F78X2RcVGCEYLRg1GEAYAAFEbzUXgRZvAPQA+BUAAWNzPBdCF3UAdABlADuA6QDpQPQhZXIAoG4qAAJhaW95TRdQF1YXWhfyIW9uG2FyAGOgViI7gOoA6kDsIW9uAKBVIk1kbwB0ABdhAAFEcmIXZhdvAHQAAKBSIgDgNdgi3XKhmipuF3QXYQB2AGUAO4DoAOhAZKCWKm8AdAAAoJgqgKGZKmlscwCAF4UXhxfuInRlcnMAoOcjAKATIWSglSpvAHQAAKCXKoABYXBzAJMXlheiF2MAcgATYXQAeQBzogUinxcAAAAAoRdlAHQAAKAFInAAMaADIDMBqRerFwCgBCAAoAUgAAFnc7AXsRdLYXAAAKACIAABZ3C4F7sXbwBuABlhZgAA4DXYVt2AAWFscwDFF8sXzxdyAHOg1SJsAACg4yl1AHMAAKBxKmkAAKG1A2x21RfYF28AbgC1Y/VjAAJjc3V24BfoF/0XEBgAAWlv5BdWF3IAYwAAoFYiaQLuFwAAAADwF+0ADQThIW50AAFnbPUX+Rd0AHIAAKCWKuUhc3MAoJUqgAFhZWkAAxgGGAoYbABzAD1gcwB0AACgXyJ2AESgYSJEAACgeCrwImFyc2wAoOUpAAFEYRkYHRhvAHQAAKBTInIAcgAAoHEpgAFjZGkAJxgqGO0XcgAAoC8hbwD0AIwCAAFhaDEYMhi3YzuA8ADwQAABbXI5GD0YbAA7gOsA60BvAACgrCCAAWNpcABGGEgYSxhsACFgcwD0ACwEAAFlb08YVxhjAHQAYQB0AGkAbwDuABoEbgBlAG4AdABpAGEAbADlADME4Ql1GAAAgRgAAIMYiBgAAAAAoRilGAAAqhgAALsYvhjRGAAA1xgnGWwAbABpAG4AZwBkAG8AdABzAGUA8QBlF3kARGRtImFsZQAAoEAmgAFpbHIAjRiRGJ0Y7CFpZwCgA/tpApcYAAAAAJoYZwAAoAD7aQBnAACgBPsA4DXYI93sIWlnAKAB++whaWcA4GYAagCAAWFsdACvGLIYthh0AACgbSZpAGcAAKAC+24AcwAAoLElbwBmAJJh8AHCGAAAxhhmAADgNdhX3QABYWvJGMwYbADsAGsEdqDUIgCg2SphI3J0aW50AACgDSoAAWFv2hgiGQABY3PeGB8ZsQPnGP0YBRkSGRUZAAAdGbID7xjyGPQY9xj5GAAA+xg7gL0AvUAAoFMhO4C8ALxAAKBVIQCgWSEAoFshswEBGQAAAxkAoFQhAKBWIbQCCxkOGQAAAAAQGTuAvgC+QACgVyEAoFwhNQAAoFghtgEZGQAAGxkAoFohAKBdITgAAKBeIWwAAKBEIHcAbgAAoCIjYwByAADgNdi73IAIRWFiY2RlZmdpamxub3JzdHYARhlKGVoZXhlmGWkZkhmWGZkZnRmgGa0ZxhnLGc8Z4BkjGmygZyIAoIwqgAFjbXAAUBlTGVgZ9SF0ZfVhbQBhAOSgswM6FgCghipyImV2ZQAfYQABaXliGWUZcgBjAB1hM2RvAHQAIWGAoWUibHFzAMYEcBl6GfGhZSLOBAAAdhlsAGEAbgD0AN8EgKF+KmNkbACBGYQZjBljAACgqSpvAHQAb6CAKmyggioAoIQqZeDbIgD+cwAAoJQqcgAA4DXYJN3noGsirATtIWVsAKA3IWMAeQBTZIChdyJFYWoApxmpGasZAKCSKgCgpSoAoKQqAAJFYWVztBm2Gb0ZwhkAoGkicABwoIoq8iFveACgiipxoIgq8aCIKrUZaQBtAACg5yJwAGYAAOA12FjdYQB2AOUAYwIAAWNp0xnWGXIAAKAKIW0AAKFzImVs3BneGQCgjioAoJAqAIM+ADtjZGxxco0E6xn0GfgZ/BkBGgABY2nvGfEZAKCnKnIAAKB6Km8AdAAAoNci0CFhcgCglSl1ImVzdAAAoHwqgAJhZGVscwAKGvQZFhrVBCAa8AEPGgAAFBpwAHIAbwD4AFkZcgAAoHgpcQAAAWxxxAQbGmwAZQBzAPMASRlpAO0A5AQAAWVuJxouGnIjdG5lcXEAAOBpIgD+xQAsGgAFQWFiY2Vma29zeUAaQxpmGmoabRqDGocalhrCGtMacgDyAMwCAAJpbG1yShpOGlAaVBpyAHMA8ABxD2YAvWBpAGwA9AASBQABZHJYGlsaYwB5AEpkAKGUIWN3YBpkGmkAcgAAoEgpAKCtIWEAcgAAoA8h6SFyYyVhgAFhbHIAcxp7Gn8a8iF0c3WgZSZpAHQAAKBlJuwhaXAAoCYg4yFvbgCguSJyAADgNdgl3XMAAAFld4wakRphInJvdwAAoCUpYSJyb3cAAKAmKYACYW1vcHIAnxqjGqcauhq+GnIAcgAAoP8h9CFodACgOyJrAAABbHKsGrMaZSRmdGFycm93AACgqSHpJGdodGFycm93AKCqIWYAAOA12Fnd4iFhcgCgFSCAAWNsdADIGswa0BpyAADgNdi93GEAcwDoAGka8iFvaydhAAFicNca2xr1IWxsAKBDIOghZW4AoBAg4Qr2GgAA/RoAAAgbExsaGwAAIRs7GwAAAAA+G2IbmRuVG6sbAACyG80b0htjAHUAdABlADuA7QDtQAChYyBpeQEbBhtyAGMAO4DuAO5AOGQAAWN4CxsNG3kANWRjAGwAO4ChAKFAAAFmcssCFhsA4DXYJt1yAGEAdgBlADuA7ADsQIChSCFpbm8AJxsyGzYbAAFpbisbLxtuAHQAAKAMKnQAAKAtIuYhaW4AoNwpdABhAACgKSHsIWlnM2GAAWFvcABDG1sbXhuAAWNndABJG0sbWRtyACthgAFlbHAAcQVRG1UbaQBuAOUAyAVhAHIA9AByBWgAMWFmAACgtyJlAGQAtWEAoggiY2ZvdGkbbRt1G3kb4SFyZQCgBSFpAG4AdKAeImkAZQAAoN0pZABvAPQAWxsAoisiY2VscIEbhRuPG5QbYQBsAACguiIAAWdyiRuNG2UAcgDzACMQ4wCCG2EicmhrAACgFyryIW9kAKA8KgACY2dwdJ8boRukG6gbeQBRZG8AbgAvYWYAAOA12FrdYQC5Y3UAZQBzAHQAO4C/AL9AAAFjabUbuRtyAADgNdi+3G4AAKIIIkVkc3bCG8QbyBvQAwCg+SJvAHQAAKD1Inag9CIAoPMiaaBiIOwhZGUpYesB1hsAANkbYwB5AFZkbAA7gO8A70AAA2NmbW9zdeYb7hvyG/Ub+hsFHAABaXnqG+0bcgBjADVhOWRyAADgNdgn3eEhdGg3YnAAZgAA4DXYW93jAf8bAAADHHIAAOA12L/c8iFjeVhk6yFjeVRkAARhY2ZnaGpvcxUcGhwiHCYcKhwtHDAcNRzwIXBhdqC6A/BjAAFleR4cIRzkIWls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ZmdobG1vcHJzdHV3CiwNLBEsHSwnLDEsQCxLLFIsYix6LIQsjyzLLOgs7Sz/LAotcgDyAAkDYQByAACgYykAAWNyFSwbLHUAdABlADuA+gD6QPIACQ1yAOMBIywAACUseQBeZHYAZQBtYQABaXkrLDAscgBjADuA+wD7QENkgAFhYmgANyw6LD0scgDyANEO7CFhY3FhYQDyAOAOAAFpckQsSCzzIWh0AKB+KQDgNdgy3XIAYQB2AGUAO4D5APlAYQFWLF8scgAAAWxyWixcLACgvyEAoL4hbABrAACggCUAAWN0Zix2LG8CbCwAAAAAcyxyAG4AZaAcI3IAAKAcI28AcAAAoA8jcgBpAACg+CUAAWFsfiyBLGMAcgBrYTuAqACoQAABZ3CILIssbwBuAHNhZgAA4DXYZt0AA2FkaGxzdZksniynLLgsuyzFLHIAcgBvAPcACQ1vAHcAbgBhAHIAcgBvAPcA2A5hI3Jwb29uAAABbHKvLLMsZQBmAPQAWyxpAGcAaAD0AF0sdQDzAKYOaQAAocUDaGzBLMIs0mNvAG4AxWPwI2Fycm93cwCgyCGAAWNpdADRLOEs5CxvAtcsAAAAAN4scgBuAGWgHSNyAACgHSNvAHAAAKAOI24AZwBvYXIAaQAAoPklYwByAADgNdjK3IABZGlyAPMs9yz6LG8AdAAAoPAi7CFkZWlhaQBmoLUlAKC0JQABYW0DLQYtcgDyAMosbAA7gPwA/EDhIm5nbGUAoKcpgAdBQkRhY2RlZmxub3Byc3oAJy0qLTAtNC2bLZ0toS2/LcMtxy3TLdgt3C3gLfwtcgDyABADYQByAHag6CoAoOkqYQBzAOgA/gIAAW5yOC08LechcnQAoJwpgANla25wcnN0AJkpSC1NLVQtXi1iLYItYQBwAHAA4QAaHG8AdABoAGkAbgDnAKEXgAFoaXIAoSmzJFotbwBwAPQAdCVooJUh7wD4JgABaXVmLWotZwBtAOEAuygAAWJwbi14LXMjZXRuZXEAceCKIgD+AODLKgD+cyNldG5lcQBx4IsiAP4A4MwqAP4AAWhyhi2KLWUAdADhABIraSNhbmdsZQAAAWxyki2WLeUhZnQAoLIiaSJnaHQAAKCzInkAMmThIXNoAKCiIoABZWxyAKcttC24LWKiKCKuLQAAAACyLWEAcgAAoLsicQAAoFoi7CFpcACg7iIAAWJ0vC1eD2EA8gBfD3IAAOA12DPddAByAOkAlS1zAHUAAAFicM0t0C0A4IIi0iAA4IMi0iBwAGYAAOA12GfdcgBvAPAAWQt0AHIA6QCaLQABY3XkLegtcgAA4DXYy9wAAWJw7C30LW4AAAFFZXUt8S0A4IoiAP5uAAABRWV/LfktAOCLIgD+6SJnemFnAKCaKYADY2Vmb3BycwANLhAuJS4pLiMuLi40LukhcmN1YQABZGkULiEuAAFiZxguHC5hAHIAAKBfKmUAcaAnIgCgWSLlIXJwAKAYIXIAAOA12DTdcABmAADgNdho3WWgQCJhAHQA6ABqD2MAcgAA4DXYzNzjCuQRUC4AAFQuAABYLmIuAAAAAGMubS5wLnQuAAAAAIguki4AAJouJxIqEnQAcgDpAB0ScgAA4DXYNd0AAUFhWy5eLnIA8gDnAnIA8gCTB75jAAFBYWYuaS5yAPIA4AJyAPIAjAdhAPAAeh5pAHMAAKD7IoABZHB0APgReS6DLgABZmx9LoAuAOA12GnddQDzAP8RaQBtAOUABBIAAUFhiy6OLnIA8gDuAnIA8gCaBwABY3GVLgoScgAA4DXYzdwAAXB0nS6hLmwAdQDzACUScgDpACASAARhY2VmaW9zdbEuvC7ELsguzC7PLtQu2S5jAAABdXm2LrsudABlADuA/QD9QE9kAAFpecAuwy5yAGMAd2FLZG4AO4ClAKVAcgAA4DXYNt1jAHkAV2RwAGYAAOA12GrdYwByAADgNdjO3AABY23dLt8ueQBOZGwAO4D/AP9AAAVhY2RlZmhpb3N38y73Lv8uAi8MLxAvEy8YLx0vIi9jInV0ZQB6YQABYXn7Lv4u8iFvbn5hN2RvAHQAfGEAAWV0Bi8KL3QAcgDmAB8QYQC2Y3IAAOA12DfdYwB5ADZk5yJyYXJyAKDdIXAAZgAA4DXYa91jAHIAAOA12M/cAAFqbiYvKC8AoA0gagAAoAwg")});var B1;var EU=C(()=>{(function(f){f[f.VALUE_LENGTH=49152]="VALUE_LENGTH",f[f.FLAG13=8192]="FLAG13",f[f.BRANCH_LENGTH=8064]="BRANCH_LENGTH",f[f.JUMP_TABLE=127]="JUMP_TABLE"})(B1||(B1={}))});function Tj(f){return f>=uf.ZERO&&f<=uf.NINE}function bk(f){return f>=uf.UPPER_A&&f<=uf.UPPER_F||f>=uf.LOWER_A&&f<=uf.LOWER_F}function Sk(f){return f>=uf.UPPER_A&&f<=uf.UPPER_Z||f>=uf.LOWER_A&&f<=uf.LOWER_Z||Tj(f)}function Ik(f){return f===uf.EQUALS||Sk(f)}class uj{constructor(f,J,Y){this.decodeTree=f,this.emitCodePoint=J,this.errors=Y,this.state=of.EntityStart,this.consumed=1,this.result=0,this.treeIndex=0,this.excess=1,this.decodeMode=tJ.Strict,this.runConsumed=0}startEntity(f){this.decodeMode=f,this.state=of.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1,this.runConsumed=0}write(f,J){switch(this.state){case of.EntityStart:{if(f.charCodeAt(J)===uf.NUM)return this.state=of.NumericStart,this.consumed+=1,this.stateNumericStart(f,J+1);return this.state=of.NamedEntity,this.stateNamedEntity(f,J)}case of.NumericStart:return this.stateNumericStart(f,J);case of.NumericDecimal:return this.stateNumericDecimal(f,J);case of.NumericHex:return this.stateNumericHex(f,J);case of.NamedEntity:return this.stateNamedEntity(f,J)}}stateNumericStart(f,J){if(J>=f.length)return-1;if((f.charCodeAt(J)|xU)===uf.LOWER_X)return this.state=of.NumericHex,this.consumed+=1,this.stateNumericHex(f,J+1);return this.state=of.NumericDecimal,this.stateNumericDecimal(f,J)}stateNumericHex(f,J){while(J<f.length){let Y=f.charCodeAt(J);if(Tj(Y)||bk(Y)){let z=Y<=uf.NINE?Y-uf.ZERO:(Y|xU)-uf.LOWER_A+10;this.result=this.result*16+z,this.consumed++,J++}else return this.emitNumericEntity(Y,3)}return-1}stateNumericDecimal(f,J){while(J<f.length){let Y=f.charCodeAt(J);if(Tj(Y))this.result=this.result*10+(Y-uf.ZERO),this.consumed++,J++;else return this.emitNumericEntity(Y,2)}return-1}emitNumericEntity(f,J){var Y;if(this.consumed<=J)return(Y=this.errors)===null||Y===void 0||Y.absenceOfDigitsInNumericCharacterReference(this.consumed),0;if(f===uf.SEMI)this.consumed+=1;else if(this.decodeMode===tJ.Strict)return 0;if(this.emitCodePoint(bU(this.result),this.consumed),this.errors){if(f!==uf.SEMI)this.errors.missingSemicolonAfterCharacterReference();this.errors.validateNumericCharacterReference(this.result)}return this.consumed}stateNamedEntity(f,J){let{decodeTree:Y}=this,z=Y[this.treeIndex],G=(z&B1.VALUE_LENGTH)>>14;while(J<f.length){if(G===0&&(z&B1.FLAG13)!==0){let q=(z&B1.BRANCH_LENGTH)>>7;if(this.runConsumed===0){let Q=z&B1.JUMP_TABLE;if(f.charCodeAt(J)!==Q)return this.result===0?0:this.emitNotTerminatedNamedEntity();J++,this.excess++,this.runConsumed++}while(this.runConsumed<q){if(J>=f.length)return-1;let Q=this.runConsumed-1,H=Y[this.treeIndex+1+(Q>>1)],B=Q%2===0?H&255:H>>8&255;if(f.charCodeAt(J)!==B)return this.runConsumed=0,this.result===0?0:this.emitNotTerminatedNamedEntity();J++,this.excess++,this.runConsumed++}this.runConsumed=0,this.treeIndex+=1+(q>>1),z=Y[this.treeIndex],G=(z&B1.VALUE_LENGTH)>>14}if(J>=f.length)break;let Z=f.charCodeAt(J);if(Z===uf.SEMI&&G!==0&&(z&B1.FLAG13)!==0)return this.emitNamedEntityData(this.treeIndex,G,this.consumed+this.excess);if(this.treeIndex=uk(Y,z,this.treeIndex+Math.max(1,G),Z),this.treeIndex<0)return this.result===0||this.decodeMode===tJ.Attribute&&(G===0||Ik(Z))?0:this.emitNotTerminatedNamedEntity();if(z=Y[this.treeIndex],G=(z&B1.VALUE_LENGTH)>>14,G!==0){if(Z===uf.SEMI)return this.emitNamedEntityData(this.treeIndex,G,this.consumed+this.excess);if(this.decodeMode!==tJ.Strict&&(z&B1.FLAG13)===0)this.result=this.treeIndex,this.consumed+=this.excess,this.excess=0}J++,this.excess++}return-1}emitNotTerminatedNamedEntity(){var f;let{result:J,decodeTree:Y}=this,z=(Y[J]&B1.VALUE_LENGTH)>>14;return this.emitNamedEntityData(J,z,this.consumed),(f=this.errors)===null||f===void 0||f.missingSemicolonAfterCharacterReference(),this.consumed}emitNamedEntityData(f,J,Y){let{decodeTree:z}=this;if(this.emitCodePoint(J===1?z[f]&~(B1.VALUE_LENGTH|B1.FLAG13):z[f+1],Y),J===3)this.emitCodePoint(z[f+2],Y);return Y}end(){var f;switch(this.state){case of.NamedEntity:return this.result!==0&&(this.decodeMode!==tJ.Attribute||this.result===this.treeIndex)?this.emitNotTerminatedNamedEntity():0;case of.NumericDecimal:return this.emitNumericEntity(0,2);case of.NumericHex:return this.emitNumericEntity(0,3);case of.NumericStart:return(f=this.errors)===null||f===void 0||f.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case of.EntityStart:return 0}}}function Tk(f){let J="",Y=new uj(f,(z)=>J+=yU(z));return function(G,Z){let q=0,Q=0;while((Q=G.indexOf("&",Q))>=0){J+=G.slice(q,Q),Y.startEntity(Z);let B=Y.write(G,Q+1);if(B<0){q=Q+Y.end();break}q=Q+B,Q=B===0?q+1:q}let H=J+G.slice(q);return J="",H}}function uk(f,J,Y,z){let G=(J&B1.BRANCH_LENGTH)>>7,Z=J&B1.JUMP_TABLE;if(G===0)return Z!==0&&z===Z?Y:-1;if(Z){let B=z-Z;return B<0||B>=G?-1:f[Y+B]-1}let q=G+1>>1,Q=0,H=G-1;while(Q<=H){let B=Q+H>>>1,V=B>>1,U=f[Y+V]>>(B&1)*8&255;if(U<z)Q=B+1;else if(U>z)H=B-1;else return f[Y+q+B]}return-1}function Fz(f,J=tJ.Legacy){return Ek(f,J)}var uf,xU=32,of,tJ,Ek;var wU=C(()=>{SU();uU();EU();(function(f){f[f.NUM=35]="NUM",f[f.SEMI=59]="SEMI",f[f.EQUALS=61]="EQUALS",f[f.ZERO=48]="ZERO",f[f.NINE=57]="NINE",f[f.LOWER_A=97]="LOWER_A",f[f.LOWER_F=102]="LOWER_F",f[f.LOWER_X=120]="LOWER_X",f[f.LOWER_Z=122]="LOWER_Z",f[f.UPPER_A=65]="UPPER_A",f[f.UPPER_F=70]="UPPER_F",f[f.UPPER_Z=90]="UPPER_Z"})(uf||(uf={}));(function(f){f[f.EntityStart=0]="EntityStart",f[f.NumericStart=1]="NumericStart",f[f.NumericDecimal=2]="NumericDecimal",f[f.NumericHex=3]="NumericHex",f[f.NamedEntity=4]="NamedEntity"})(of||(of={}));(function(f){f[f.Legacy=0]="Legacy",f[f.Strict=1]="Strict",f[f.Attribute=2]="Attribute"})(tJ||(tJ={}));Ek=Tk(TU)});var hU,PU;var mU=C(()=>{wU();(function(f){f[f.XML=0]="XML",f[f.HTML=1]="HTML"})(hU||(hU={}));(function(f){f[f.UTF8=0]="UTF8",f[f.ASCII=1]="ASCII",f[f.Extensive=2]="Extensive",f[f.Attribute=3]="Attribute",f[f.Text=4]="Text"})(PU||(PU={}))});import{CliRenderer as wk,createCliRenderer as hk,engine as Pk}from"@opentui/core";import{createTestRenderer as Im}from"@opentui/core/testing";import{ASCIIFontRenderable as vk,BoxRenderable as mk,CodeRenderable as ck,DiffRenderable as nk,InputRenderable as dk,LineNumberRenderable as ik,MarkdownRenderable as lk,ScrollBoxRenderable as ak,SelectRenderable as $k,TabSelectRenderable as rk,TextareaRenderable as pk,TextAttributes as Ej,TextNodeRenderable as _k,TextRenderable as ok}from"@opentui/core";import{engine as Em,Timeline as xm}from"@opentui/core";import{BaseRenderable as aU,createTextAttributes as tk,InputRenderable as xj,InputRenderableEvents as RZ,isTextNodeRenderable as Pj,parseColor as cU,Renderable as ek,RootTextNodeRenderable as fN,ScrollBoxRenderable as JN,SelectRenderable as nU,SelectRenderableEvents as wj,TabSelectRenderable as dU,TabSelectRenderableEvents as hj,TextNodeRenderable as YN,TextRenderable as $U}from"@opentui/core";import{BaseRenderable as jN,isTextNodeRenderable as WN,TextNodeRenderable as VN,TextRenderable as KN,Yoga as lU}from"@opentui/core";import{BoxRenderable as lm,RootRenderable as am}from"@opentui/core";import{TimeToFirstDrawRenderable as MN}from"@opentui/core";import{createSlotRegistry as pm}from"@opentui/core";function GN({createElement:f,createTextNode:J,createSlotNode:Y,isTextNode:z,replaceText:G,insertNode:Z,removeNode:q,setProperty:Q,getParentNode:H,getFirstChild:B,getNextSibling:V}){function j(N,A,R,S){if(R!==void 0&&!S)S=[];if(typeof A!=="function")return U(N,A,S,R);AJ((_)=>U(N,A(),_,R),S)}function U(N,A,R,S,_){while(typeof R==="function")R=R();if(A===R)return R;let z0=typeof A,e=S!==void 0;if(z0==="string"||z0==="number"){if(z0==="number")A=A.toString();if(e){let Y0=R[0];if(Y0&&z(Y0))G(Y0,A);else Y0=J(A);R=M(N,R,S,Y0)}else if(R!==""&&typeof R==="string")G(B(N),R=A);else M(N,R,S,J(A)),R=A}else if(A==null||z0==="boolean")R=M(N,R,S);else if(z0==="function")return AJ(()=>{let Y0=A();while(typeof Y0==="function")Y0=Y0();R=U(N,Y0,R,S)}),()=>R;else if(Array.isArray(A)){let Y0=[];if(L(Y0,A,_))return AJ(()=>R=U(N,Y0,R,S,!0)),()=>R;if(Y0.length===0){let T=M(N,R,S);if(e)return R=T}else if(Array.isArray(R))if(R.length===0)g(N,Y0,S);else O(N,R,Y0);else if(R==null||R==="")g(N,Y0);else O(N,e&&R||[B(N)],Y0);R=Y0}else{if(Array.isArray(R)){if(e)return R=M(N,R,S,A);M(N,R,null,A)}else if(R==null||R===""||!B(N))Z(N,A);else I(N,A,B(N));R=A}return R}function L(N,A,R){let S=!1;for(let _=0,z0=A.length;_<z0;_++){let e=A[_],Y0;if(e==null||e===!0||e===!1);else if(Array.isArray(e))S=L(N,e)||S;else if((Y0=typeof e)==="string"||Y0==="number")N.push(J(e));else if(Y0==="function")if(R){while(typeof e==="function")e=e();S=L(N,Array.isArray(e)?e:[e])||S}else N.push(e),S=!0;else N.push(e)}return S}function O(N,A,R){let S=R.length,_=A.length,z0=S,e=0,Y0=0,T=V(A[_-1]),Q0=null;while(e<_||Y0<z0){if(A[e]===R[Y0]){e++,Y0++;continue}while(A[_-1]===R[z0-1])_--,z0--;if(_===e){let t=z0<S?Y0?V(R[Y0-1]):R[z0-Y0]:T;while(Y0<z0)Z(N,R[Y0++],t)}else if(z0===Y0)while(e<_){if(!Q0||!Q0.has(A[e]))q(N,A[e]);e++}else if(A[e]===R[z0-1]&&R[Y0]===A[_-1]){let t=V(A[--_]);Z(N,R[Y0++],V(A[e++])),Z(N,R[--z0],t),A[_]=R[z0]}else{if(!Q0){Q0=new Map;let V0=Y0;while(V0<z0)Q0.set(R[V0],V0++)}let t=Q0.get(A[e]);if(t!=null)if(Y0<t&&t<z0){let V0=e,C0=1,$;while(++V0<_&&V0<z0){if(($=Q0.get(A[V0]))==null||$!==t+C0)break;C0++}if(C0>t-Y0){let x=A[e];while(Y0<t)Z(N,R[Y0++],x)}else I(N,R[Y0++],A[e++])}else e++;else q(N,A[e++])}}}function M(N,A,R,S){if(R===void 0){let z0;while(z0=B(N))q(N,z0);return S&&Z(N,S),S??""}let _=S||Y();if(A.length){let z0=!1;for(let e=A.length-1;e>=0;e--){let Y0=A[e];if(_!==Y0){let T=H(Y0)===N;if(!z0&&!e)T?I(N,_,Y0):Z(N,_,R);else T&&q(N,Y0)}else z0=!0}}else Z(N,_,R);return[_]}function g(N,A,R){for(let S=0,_=A.length;S<_;S++)Z(N,A[S],R)}function I(N,A,R){Z(N,A,R),q(N,R)}function a(N,A,R={},S){if(A||(A={}),!S)AJ(()=>R.children=U(N,A.children,R.children));return AJ(()=>A.ref&&A.ref(N)),AJ(()=>{for(let _ in A){if(_==="children"||_==="ref")continue;let z0=A[_];if(z0===R[_])continue;Q(N,_,z0,R[_]),R[_]=z0}}),R}return{render(N,A){let R;return aY((S)=>{R=S,j(A,N())}),R},insert:j,spread(N,A,R){if(typeof A==="function")AJ((S)=>a(N,A(),S,R));else a(N,A,void 0,R)},createElement:f,createTextNode:J,insertNode:Z,setProp(N,A,R,S){return Q(N,A,R,S),R},mergeProps:UX,effect:AJ,memo:zN,createComponent:QW,use(N,A,R){return $f(()=>N(A,R))}}}function ZN(f){let J=GN(f);return J.mergeProps=UX,J}function dj(f){if(!XQ.has(f))XQ.set(f,0);let J=XQ.get(f)+1;return XQ.set(f,J),`${f}-${J}`}function XN(f,J,Y){if(sf("Inserting node:",rf(J),"into parent:",rf(f),"with anchor:",rf(Y),J instanceof AG),J instanceof CZ)J.parent=f,J=J.getSlotChild(f);if(Y&&Y instanceof CZ)Y=Y.getSlotChild(f);if(Pj(J)){if(!(f instanceof $U)&&!Pj(f))throw Error(`Orphan text error: "${J.toChunks().map((Z)=>Z.text).join("")}" must have a <text> as a parent: ${f.id} above ${J.id}`)}if(!(f instanceof aU))throw console.error("[INSERT]","Tried to mount a non base renderable"),Error("Tried to mount a non base renderable");if(!Y){f.add(J);return}let z=vj(f),G=z.findIndex((Z)=>Z.id===Y.id);if(G===-1)sf("[INSERT]","Could not find anchor",rf(f),rf(Y),"[children]",...z.map((Z)=>Z.id));f.add(J,G)}function qN(f,J){if(sf("Removing node:",rf(J),"from parent:",rf(f)),J instanceof CZ)J.parent=null,J=J.getSlotChild(f);f.remove(J.id),process.nextTick(()=>{if(J instanceof aU&&!J.parent){J.destroyRecursively();return}})}function QN(f){sf("Creating text node:",f);let J=dj("text-node");if(typeof f==="number")f=f.toString();return AG.fromString(Fz(f),{id:J})}function HN(){let f=dj("slot-node");return sf("Creating slot node",f),new CZ(f)}function iU(f){sf("Getting parent of node:",rf(f));let J=f.parent??void 0;if(J instanceof fN)J=J.textParent??void 0;let Y=J?.parent?.parent?.parent;if(Y instanceof JN&&Y.content===J)J=Y;return J}function DN(f){Object.assign(eU,f)}function LN(){return eU}var nj,Y1=()=>{let f=u1(nj);if(!f)throw Error("No renderer found");return f},sk=(f)=>{let J=Y1();f1(()=>{J.on("resize",f)}),vf(()=>{J.off("resize",f)})},TJ=()=>{let f=Y1(),[J,Y]=r({width:f.width,height:f.height});return sk((G,Z)=>{Y({width:G,height:Z})}),J},zN=(f)=>K0(()=>f()),XQ,sf=(...f)=>{if(process.env.DEBUG)console.log("[Reconciler]",...f)},AG,rf=(f)=>{if(!f)return;return f.id},vj=(f)=>{let J;if(f instanceof $U)J=f.getTextChildren();else J=f.getChildren();return J},BN,E,I0,b,W,E0,D,K,nm,X,rU,uY,ij,pU,_U,CZ,kZ,qQ,mj,cj,oU,sU,tU,UN,eU,FN=(f,J)=>{let Y,z=!1,G=!1,Z=!0,q=!1,Q=f.destroy.bind(f),H=()=>{if(G)return;if(!Y){z=!0;return}G=!0,Y()};f.once("destroy",H),f.destroy=()=>{if(Z){q=!0;return}Q()};try{Y=BN(()=>b(nj.Provider,{get value(){return f},get children(){return b(J,{})}}),f.root)}finally{Z=!1,f.destroy=Q}if(z)H();if(q)Q()},f6=async(f,J={})=>{let Y=J instanceof wk?J:await hk({...J,onDestroy:()=>{J.onDestroy?.()}});Pk.attach(Y),FN(Y,f)};var P=C(()=>{Wf();mU();Wf();Wf();Wf();nj=gJ();XQ=new Map;AG=class AG extends YN{static fromString(f,J={}){let Y=new AG(J);return Y.add(f),Y}};({render:BN,effect:E,memo:I0,createComponent:b,createElement:W,createTextNode:E0,insertNode:D,insert:K,spread:nm,setProp:X,mergeProps:rU,use:uY}=ZN({createElement(f){sf("Creating element:",f);let J=dj(f),Y=u1(nj);if(!Y)throw Error("No renderer found");let z=LN();if(!z[f])throw Error(`[Reconciler] Unknown component type: ${f}`);let G=new z[f](Y,{id:J});return sf("Element created with id:",J),G},createTextNode:QN,createSlotNode:HN,replaceText(f,J){if(sf("Replacing text:",J,"in node:",rf(f)),!(f instanceof AG))return;f.replace(Fz(J),0)},setProperty(f,J,Y,z){if(J.startsWith("on:")){let G=J.slice(3);if(Y)f.on(G,Y);if(z)f.off(G,z);return}if(Pj(f)){if(J==="href"){f.link={url:Y};return}if(J==="style"){f.attributes|=tk(Y),f.fg=Y.fg?cU(Y.fg):f.fg,f.bg=Y.bg?cU(Y.bg):f.bg;return}return}switch(J){case"id":sf("Id mapped",f.id,"=",Y),f[J]=Y;break;case"focused":if(!(f instanceof ek))return;if(Y)f.focus();else f.blur();break;case"onChange":let G=void 0;if(f instanceof nU)G=wj.SELECTION_CHANGED;else if(f instanceof dU)G=hj.SELECTION_CHANGED;else if(f instanceof xj)G=RZ.CHANGE;if(!G)break;if(Y)f.on(G,Y);if(z)f.off(G,z);break;case"onInput":if(f instanceof xj){if(Y)f.on(RZ.INPUT,Y);if(z)f.off(RZ.INPUT,z)}break;case"onSubmit":if(f instanceof xj){if(Y)f.on(RZ.ENTER,Y);if(z)f.off(RZ.ENTER,z)}else f[J]=Y;break;case"onSelect":if(f instanceof nU){if(Y)f.on(wj.ITEM_SELECTED,Y);if(z)f.off(wj.ITEM_SELECTED,z)}else if(f instanceof dU){if(Y)f.on(hj.ITEM_SELECTED,Y);if(z)f.off(hj.ITEM_SELECTED,z)}break;case"style":for(let Z in Y){let q=Y[Z];if(z!==void 0&&q===z[Z])continue;f[Z]=q}break;case"text":case"content":{let Z=typeof Y==="string"?Y:Array.isArray(Y)?Y.join(""):`${Y}`;f[J]=Fz(Z);break}default:f[J]=Y}},isTextNode(f){return f instanceof AG},insertNode:XN,removeNode:qN,getParentNode:iU,getFirstChild(f){sf("Getting first child of node:",rf(f));let J=vj(f)[0];if(!J){sf("No first child found for node:",rf(f));return}return sf("First child found:",rf(J),"for node:",rf(f)),J},getNextSibling(f){sf("Getting next sibling of node:",rf(f));let J=iU(f);if(!J){sf("No parent found for node:",rf(f));return}let Y=vj(J),z=Y.indexOf(f);if(z===-1||z===Y.length-1){sf("No next sibling found for node:",rf(f));return}let G=Y[z+1];if(!G){sf("Next sibling is null for node:",rf(f));return}return sf("Next sibling found:",rf(G),"for node:",rf(f)),G}}));ij=class ij extends jN{constructor(f){super({id:f})}add(f,J){throw Error("Can't add children on an Slot renderable")}getChildren(){return[]}remove(f){}insertBefore(f,J){throw Error("Can't add children on an Slot renderable")}getRenderable(f){return}getChildrenCount(){return 0}requestRender(){}findDescendantById(f){return}};pU=class pU extends VN{slotParent;destroyed=!1;constructor(f,J){super({id:f});this._visible=!1,this.slotParent=J}destroy(){if(this.destroyed)return;this.destroyed=!0,this.slotParent?.destroy(),super.destroy()}};_U=class _U extends ij{yogaNode;slotParent;destroyed=!1;constructor(f,J){super(f);this._visible=!1,this.slotParent=J,this.yogaNode=lU.default.Node.create(),this.yogaNode.setDisplay(lU.Display.None)}getLayoutNode(){return this.yogaNode}updateFromLayout(){}updateLayout(){}onRemove(){}destroy(){if(this.destroyed)return;this.destroyed=!0,super.destroy(),this.slotParent?.destroy()}};CZ=class CZ extends ij{layoutNode;textNode;destroyed=!1;constructor(f){super(f);this._visible=!1}getSlotChild(f){if(WN(f)||f instanceof KN){if(!this.textNode)this.textNode=new pU(`slot-text-${this.id}`,this);return this.textNode}if(!this.layoutNode)this.layoutNode=new _U(`slot-layout-${this.id}`,this);return this.layoutNode}destroy(){if(this.destroyed)return;if(this.destroyed=!0,this.layoutNode)this.layoutNode.destroy();if(this.textNode)this.textNode.destroy()}};kZ=class kZ extends _k{_ctx;constructor(f,J){super(J);this._ctx=f}};qQ=class qQ extends kZ{constructor(f,J){super(null,f);if(J==="b"||J==="strong")this.attributes=(this.attributes||0)|Ej.BOLD;else if(J==="i"||J==="em")this.attributes=(this.attributes||0)|Ej.ITALIC;else if(J==="u")this.attributes=(this.attributes||0)|Ej.UNDERLINE}};mj=class mj extends qQ{constructor(f){super(f,"b")}};cj=class cj extends qQ{constructor(f){super(f,"i")}};oU=class oU extends qQ{constructor(f){super(f,"u")}};sU=class sU extends kZ{constructor(f,J){super(null,J);this.add()}add(){return super.add(`
|
|
221
|
-
`)}};tU=class tU extends kZ{constructor(f,J){let Y={...J,link:{url:J.href}};super(null,Y)}};UN={box:mk,text:ok,input:dk,select:$k,textarea:pk,ascii_font:vk,tab_select:rk,scrollbox:ak,code:ck,diff:nk,line_number:ik,markdown:lk,span:kZ,strong:mj,b:mj,em:cj,i:cj,u:oU,br:sU,a:tU},eU={...UN};DN({time_to_first_draw:MN})});function ON(f){let J=f?.changes;if(!J||typeof J!=="object"||Array.isArray(J))return null;let Y=new Map;for(let[z,G]of Object.entries(J)){let Z=G;if(typeof Z?.added!=="number"||typeof Z.deleted!=="number")return null;Y.set(z,{added:Z.added,deleted:Z.deleted})}return Y}function AN(f,J){if(f.size!==J.size)return!1;for(let[Y,z]of f){let G=J.get(Y);if(!G||!IJ(z,G))return!1}return!0}class j1{client;tasksAcc;setTasks;activeTaskAcc;setActiveTaskSig;updateAcc;setUpdateSig;daemonVersionAcc;setDaemonVersionSig;engineStateAcc;setEngineStateSig;taskJobsAcc;setTaskJobsSig;worktreeChangesAcc;setWorktreeChangesSig;uiPrefsAcc;setUiPrefsSig;keybindingsRevAcc;setKeybindingsRevSig;connectionStateAcc;setConnectionState;ensureReachable;role;channels;subscribesTasks;reconnecting=!1;constructor(f,J={}){this.client=f;let[Y,z]=r([]),[G,Z]=r(null),[q,Q]=r(null),[H,B]=r(null),[V,j]=r(new Map),[U,L]=r(new Map),[O,M]=r(null),[g,I]=r(null),[a,N]=r(null),[A,R]=r("online");this.tasksAcc=Y,this.setTasks=(S)=>z(()=>S),this.activeTaskAcc=G,this.setActiveTaskSig=(S)=>Z(()=>S),this.updateAcc=q,this.setUpdateSig=(S)=>Q(()=>S),this.daemonVersionAcc=H,this.setDaemonVersionSig=(S)=>B(()=>S),this.engineStateAcc=V,this.setEngineStateSig=(S)=>j(()=>S),this.taskJobsAcc=U,this.setTaskJobsSig=(S)=>L(()=>S),this.worktreeChangesAcc=O,this.setWorktreeChangesSig=(S)=>M(()=>S),this.uiPrefsAcc=g,this.setUiPrefsSig=(S)=>I(()=>S),this.keybindingsRevAcc=a,this.setKeybindingsRevSig=(S)=>N(()=>S),this.connectionStateAcc=A,this.setConnectionState=(S)=>R(()=>S),this.ensureReachable=J.ensureReachable??UG,this.role=J.role??"pane",this.channels=J.channels,this.subscribesTasks=!J.channels||J.channels.includes("task.snapshot"),this.client.on("*",(S)=>this.handleEvent(S.name,S.payload)),this.client.onLifecycle("close",()=>{if(this.setConnectionState("disconnected"),this.role==="pane")nJ("orch","daemon socket closed \u2014 starting non-spawning reconnect loop"),this.reconnectLoop()})}async reconnectLoop(){if(this.reconnecting)return;this.reconnecting=!0;let f=500,J=0;while(!this.client.isDisposed){if(await new Promise((Y)=>setTimeout(Y,f)),this.client.isDisposed)break;J++;try{await this.init(),nJ("orch",`reconnected and re-subscribed after ${J} attempt(s) \u2014 task list re-synced`),this.reconnecting=!1;return}catch(Y){if(J===1||J%10===0)BY("orch-reconnect",Y);f=Math.min(f*2,3000)}}this.reconnecting=!1}async init(){let f=await this.client.request("hello",{protocolVersion:c1,minProtocolVersion:HY}),J=typeof f.protocolVersion==="number"?f.protocolVersion:c1,Y=typeof f.minProtocolVersion==="number"?f.minProtocolVersion:J;if(!FX({localVersion:c1,localMin:HY,remoteVersion:J,remoteMin:Y}))throw Error(`kobe daemon is protocol v${J} (min v${Y}); this client is v${c1} (min v${HY}). Restart the daemon (\`kobe daemon restart\`) or upgrade kobe.`);if(this.setDaemonVersionSig(typeof f.kobeVersion==="string"?f.kobeVersion:null),f.tasks&&this.subscribesTasks)this.setTasks(f.tasks.map(NZ));if(await this.client.subscribe({role:this.role,channels:this.channels}),f.capabilities?.includes("worktree.changes")){if(this.worktreeChangesAcc()===null)this.setWorktreeChangesSig(new Map)}else this.setWorktreeChangesSig(null);this.setConnectionState("online"),nJ("orch",`subscribed as ${this.role} (${this.tasksAcc().length} tasks)`)}connectionStateSignal(){return this.connectionStateAcc}async manualReconnect(){this.client.forceDisconnect(),await this.ensureReachable(),await this.init()}dispose(){this.client.close()}tasksSignal(){return this.tasksAcc}activeTaskSignal(){return this.activeTaskAcc}updateSignal(){return this.updateAcc}daemonVersionSignal(){return this.daemonVersionAcc}daemonStaleSignal(){return()=>FW(this.daemonVersionAcc()??void 0,o0)}engineStateSignal(){return this.engineStateAcc}taskJobsSignal(){return this.taskJobsAcc}worktreeChangesSignal(){return this.worktreeChangesAcc}uiPrefsSignal(){return this.uiPrefsAcc}keybindingsRevSignal(){return this.keybindingsRevAcc}listTasks(){return this.tasksAcc()}getTask(f){return this.tasksAcc().find((J)=>J.id===f)}subscribeTasks(f){try{f(this.listTasks())}catch(Y){console.error("[kobe RemoteOrchestrator] task listener threw on subscribe:",Y)}let J=!0;return aY((Y)=>{return ff(()=>{let z=this.tasksAcc();if(J){J=!1;return}try{f(z)}catch(G){console.error("[kobe RemoteOrchestrator] task listener threw:",G)}}),Y})}async createTask(f){let{modelEffort:J,...Y}=f,z=await this.client.request("task.create",{...Y,effort:J});return NZ(z.task)}async ensureMainTask(f){let J=await this.client.request("task.ensureMain",{repo:f});return NZ(J.task)}async ensureWorktree(f){return(await this.client.request("task.ensureWorktree",{taskId:String(f)})).worktreePath}async setTitle(f,J){await this.client.request("task.rename",{taskId:String(f),title:J})}async setBranch(f,J){await this.client.request("task.setBranch",{taskId:String(f),branch:J})}async setVendor(f,J){await this.client.request("task.setVendor",{taskId:String(f),vendor:J})}async setPinned(f,J){await this.client.request("task.pin",{taskId:String(f),pinned:J})}async moveTask(f,J){await this.client.request("task.move",{taskId:String(f),direction:J<0?"up":"down"})}async setArchived(f,J){await this.client.request("task.archive",{taskId:String(f),archived:J})}async setStatus(f,J){await this.client.request("task.status",{taskId:String(f),status:J})}async deleteTask(f,J){await this.client.request("task.delete",{taskId:String(f),force:J?.force})}async discoverAdoptableWorktrees(f){return(await this.client.request("worktree.discoverAdoptable",{repo:f})).worktrees}async adoptWorktree(f){let J=await this.client.request("worktree.adopt",f);return NZ(J.task)}async setActiveTask(f){await this.client.request("task.setActive",{taskId:f===null?null:String(f)})}handleEvent(f,J){if(f==="task.snapshot"){let Y=J?.tasks;if(Array.isArray(Y))this.setTasks(Y.map(NZ)),this.pruneEngineState(Y),this.pruneTaskJobs(Y);return}if(f==="active-task"){let Y=J?.taskId;this.setActiveTaskSig(typeof Y==="string"?Y:null);return}if(f==="update"){let Y=J?.info;this.setUpdateSig(Y??null);return}if(f==="engine-state"){let Y=J;if(typeof Y?.taskId!=="string"||typeof Y.state!=="string")return;let z=new Map(this.engineStateAcc());if(Y.state==="idle")z.delete(Y.taskId);else z.set(Y.taskId,{state:Y.state,detail:Y.detail,at:typeof Y.at==="number"?Y.at:0});this.setEngineStateSig(z);return}if(f==="task.jobs"){let Y=J;if(typeof Y?.taskId!=="string"||Y.kind!=="ensureWorktree")return;let z=this.taskJobsAcc();if(Y.phase==="running"){let G=new Map(z);G.set(Y.taskId,{kind:Y.kind}),this.setTaskJobsSig(G);return}if((Y.phase==="done"||Y.phase==="error")&&z.has(Y.taskId)){let G=new Map(z);G.delete(Y.taskId),this.setTaskJobsSig(G)}return}if(f==="worktree.changes"){let Y=ON(J);if(!Y)return;let z=this.worktreeChangesAcc();if(z&&AN(z,Y))return;this.setWorktreeChangesSig(Y);return}if(f==="ui-prefs"){let Y=J;if(typeof Y?.theme!=="string")return;this.setUiPrefsSig({theme:Y.theme,transparentBackground:Y.transparentBackground===!0,focusAccent:typeof Y.focusAccent==="string"?Y.focusAccent:null,locale:typeof Y.locale==="string"?Y.locale:"",sortMode:Y.sortMode==="recent"?"recent":"default",keysCollapsed:Y.keysCollapsed===!0,projectFilter:typeof Y.projectFilter==="string"&&Y.projectFilter.length>0?Y.projectFilter:null});return}if(f==="keybindings"){let Y=J;if(typeof Y?.rev!=="number")return;this.setKeybindingsRevSig(Y.rev);return}}pruneEngineState(f){let J=this.engineStateAcc();if(J.size===0)return;let Y=new Set(f.map((G)=>G.id)),z=null;for(let G of J.keys()){if(Y.has(G))continue;if(!z)z=new Map(J);z.delete(G)}if(z)this.setEngineStateSig(z)}pruneTaskJobs(f){let J=this.taskJobsAcc();if(J.size===0)return;let Y=new Set(f.map((G)=>G.id)),z=null;for(let G of J.keys()){if(Y.has(G))continue;if(!z)z=new Map(J);z.delete(G)}if(z)this.setTaskJobsSig(z)}}function NZ(f){return{id:hG(f.id),title:f.title,repo:f.repo,branch:f.branch,worktreePath:f.worktreePath,kind:f.kind,status:f.status,archived:f.archived,pinned:f.pinned,vendor:f.vendor,prStatus:f.prStatus,modelEffort:f.modelEffort,createdAt:f.createdAt,updatedAt:f.updatedAt}}var EY=C(()=>{_Y();y1();rY();Wf();WG();S1();U1()});function z6(f){let J=f[JJ];if(!J){if(Object.defineProperty(f,JJ,{value:J=new Proxy(f,CN)}),!Array.isArray(f)){let Y=Object.keys(f),z=Object.getOwnPropertyDescriptors(f),G=Object.getPrototypeOf(f),Z=G!==null&&f!==null&&typeof f==="object"&&!Array.isArray(f)&&G!==Object.prototype;if(Z){let q=Object.getOwnPropertyDescriptors(G);Y.push(...Object.keys(q)),Object.assign(z,q)}for(let q=0,Q=Y.length;q<Q;q++){let H=Y[q];if(Z&&H==="constructor")continue;if(z[H].get)Object.defineProperty(f,H,{configurable:!0,enumerable:z[H].enumerable,get:z[H].get.bind(J)})}}}return J}function QQ(f){let J;return f!=null&&typeof f==="object"&&(f[JJ]||!(J=Object.getPrototypeOf(f))||J===Object.prototype||Array.isArray(f))}function bZ(f,J=new Set){let Y,z,G,Z;if(Y=f!=null&&f[lj])return Y;if(!QQ(f)||J.has(f))return f;if(Array.isArray(f)){if(Object.isFrozen(f))f=f.slice(0);else J.add(f);for(let q=0,Q=f.length;q<Q;q++)if(G=f[q],(z=bZ(G,J))!==G)f[q]=z}else{if(Object.isFrozen(f))f=Object.assign({},f);else J.add(f);let q=Object.keys(f),Q=Object.getOwnPropertyDescriptors(f);for(let H=0,B=q.length;H<B;H++){if(Z=q[H],Q[Z].get)continue;if(G=f[Z],(z=bZ(G,J))!==G)f[Z]=z}}return f}function HQ(f,J){let Y=f[J];if(!Y)Object.defineProperty(f,J,{value:Y=Object.create(null)});return Y}function SZ(f,J,Y){if(f[J])return f[J];let[z,G]=r(Y,{equals:!1,internal:!0});return z.$=G,f[J]=z}function gN(f,J){let Y=Reflect.getOwnPropertyDescriptor(f,J);if(!Y||Y.get||!Y.configurable||J===JJ||J===gG)return Y;return delete Y.value,delete Y.writable,Y.get=()=>f[JJ][J],Y}function G6(f){VX()&&SZ(HQ(f,gG),Y6)()}function RN(f){return G6(f),Reflect.ownKeys(f)}function BQ(f,J,Y,z=!1){if(J==="__proto__"){console.warn('Refusing to set "__proto__" on a store.');return}if(!z&&f[J]===Y)return;let G=f[J],Z=f.length;if(J6.onStoreNodeUpdate&&J6.onStoreNodeUpdate(f,J,Y,G),Y===void 0){if(delete f[J],f[eJ]&&f[eJ][J]&&G!==void 0)f[eJ][J].$()}else if(f[J]=Y,f[eJ]&&f[eJ][J]&&G===void 0)f[eJ][J].$();let q=HQ(f,gG),Q;if(Q=SZ(q,J,G))Q.$(()=>Y);if(Array.isArray(f)&&f.length!==Z){for(let H=f.length;H<Z;H++)(Q=q[H])&&Q.$();(Q=SZ(q,"length",Z))&&Q.$(f.length)}(Q=q[Y6])&&Q.$()}function Z6(f,J){let Y=Object.keys(J);for(let z=0;z<Y.length;z+=1){let G=Y[z];if(X6(G))continue;BQ(f,G,J[G])}}function X6(f){return f==="__proto__"||f==="constructor"||f==="prototype"}function kN(f,J){if(typeof J==="function")J=J(f);if(J=bZ(J),Array.isArray(J)){if(f===J)return;let Y=0,z=J.length;for(;Y<z;Y++){let G=J[Y];if(f[Y]!==G)BQ(f,Y,G)}BQ(f,"length",z)}else Z6(f,J)}function yZ(f,J,Y=[]){let z,G=f;if(J.length>1){z=J.shift();let q=typeof z,Q=Array.isArray(f);if(q==="string"&&(z==="__proto__"||J.length>1&&X6(z))){console.warn(`Refusing to traverse unsafe key "${z}" on a store.`);return}if(Array.isArray(z)){for(let H=0;H<z.length;H++)yZ(f,[z[H]].concat(J),Y);return}else if(Q&&q==="function"){for(let H=0;H<f.length;H++)if(z(f[H],H))yZ(f,[H].concat(J),Y);return}else if(Q&&q==="object"){let{from:H=0,to:B=f.length-1,by:V=1}=z;for(let j=H;j<=B;j+=V)yZ(f,[j].concat(J),Y);return}else if(J.length>1){yZ(f[z],J,[z].concat(Y));return}G=f[z],Y=[z].concat(Y)}let Z=J[0];if(typeof Z==="function"){if(Z=Z(G,Y),Z===G)return}if(z===void 0&&Z==null)return;if(Z=bZ(Z),z===void 0||QQ(G)&&QQ(Z)&&!Array.isArray(Z))Z6(G,Z);else BQ(f,z,Z)}function uJ(...[f,J]){let Y=bZ(f||{}),z=Array.isArray(Y);if(typeof Y!=="object"&&typeof Y!=="function")throw Error(`Unexpected type ${typeof Y} received when initializing 'createStore'. Expected an object.`);let G=z6(Y);HW.registerGraph({value:Y,name:J&&J.name});function Z(...q){WX(()=>{z&&q.length===1?kN(Y,q[0]):yZ(Y,q)})}return[G,Z]}var lj,gG,eJ,Y6,J6,CN,Zc;var RG=C(()=>{Wf();lj=Symbol("store-raw"),gG=Symbol("store-node"),eJ=Symbol("store-has"),Y6=Symbol("store-self"),J6={onStoreNodeUpdate:null};CN={get(f,J,Y){if(J===lj)return f;if(J===JJ)return Y;if(J===HX)return G6(f),Y;let z=HQ(f,gG),G=z[J],Z=G?G():f[J];if(J===gG||J===eJ||J==="__proto__")return Z;if(!G){let q=Object.getOwnPropertyDescriptor(f,J);if(VX()&&(typeof Z!=="function"||f.hasOwnProperty(J))&&!(q&&q.get))Z=SZ(z,J,Z)()}return QQ(Z)?z6(Z):Z},has(f,J){if(J===lj||J===JJ||J===HX||J===gG||J===eJ||J==="__proto__")return!0;return VX()&&SZ(HQ(f,eJ),J)(),J in f},set(){return console.warn("Cannot mutate a Store directly"),!0},deleteProperty(){return console.warn("Cannot mutate a Store directly"),!0},ownKeys:RN,getOwnPropertyDescriptor:gN};Zc=Symbol("store-root")});function jQ(f){let J=gJ();return{provider:(Y)=>{let z=f.init(Y);return b(X0,{get when(){return z.ready===void 0||z.ready===!0},get children(){return b(J.Provider,{value:z,get children(){return Y.children}})}})},use(){let Y=u1(J);if(!Y)throw Error(`${f.name} context must be used within a context provider`);return Y}}}var aj=C(()=>{P();P();Wf()});import{RGBA as Oz}from"@opentui/core";function yN(){return Object.keys(z1.themes)}function IZ(f){return Boolean(z1.themes[f])}function rj(f,J){if(!f)return!1;if(!J||typeof J!=="object"||!J.theme)return!1;return Az("themes",{...z1.themes,[f]:J}),!0}function $j(f,J="dark"){let Y=f.defs??{};function z(H,B=[]){if(typeof H==="string"){if(H==="transparent"||H==="none")return Oz.fromInts(0,0,0,0);if(H.startsWith("#"))return Oz.fromHex(H);if(B.includes(H))return Oz.fromInts(0,0,0);let V=Y[H]??f.theme[H];if(V===void 0)return Oz.fromInts(0,0,0);return z(V,[...B,H])}return z(H[J],B)}let G={};for(let[H,B]of Object.entries(f.theme))G[H]=z(B);let Z=G.text??Oz.fromHex("#ffffff"),q=G.background??Oz.fromHex("#000000");return{...{primary:G.primary??Z,secondary:G.secondary??Z,accent:G.accent??G.primary??Z,error:G.error??Z,warning:G.warning??Z,success:G.success??Z,info:G.info??Z,text:Z,textMuted:G.textMuted??Z,background:q,backgroundPanel:G.backgroundPanel??q,backgroundElement:G.backgroundElement??q,backgroundMenu:G.backgroundMenu??G.backgroundElement??q,backgroundDialog:G.backgroundDialog??G.backgroundPanel??q,border:G.border??Z,borderActive:G.borderActive??G.border??Z,borderSubtle:G.borderSubtle??G.border??Z,diffAdded:G.diffAdded??G.success??Z,diffRemoved:G.diffRemoved??G.error??Z,diffContext:G.diffContext??G.textMuted??Z,diffHunkHeader:G.diffHunkHeader??G.textMuted??Z,diffAddedBg:G.diffAddedBg??q,diffRemovedBg:G.diffRemovedBg??q,selectedListItemText:G.selectedListItemText??q},...G}}var NN,gz,z1,Az,d0,q6;var Ef=C(()=>{P();Wf();RG();aj();qq();Qq();Hq();Bq();jq();Wq();Vq();NN={claude:oz,conductor:sz,nord:ez,opencode:fG,dracula:tz,tokyonight:YG,"osaka-jade":JG},gz=["primary","success","info"],[z1,Az]=uJ({themes:{...NN},active:"claude",mode:"dark",transparentBackground:!1,focusAccent:"primary"});({use:d0,provider:q6}=jQ({name:"Theme",init:(f)=>{if(f.mode)Az("mode",f.mode);if(f.theme&&IZ(f.theme))Az("active",f.theme);let J=Y1(),Y=K0(()=>{let G=z1.themes[z1.active];if(G)return $j(G,z1.mode);let Z=z1.themes.claude??z1.themes.opencode??Object.values(z1.themes)[0];if(!Z)return $j({theme:{background:"#000000",text:"#ffffff"}},z1.mode);return $j(Z,z1.mode)}),z=K0(()=>{let G=Y(),Z=G[z1.focusAccent]??G.primary,q={...G,focusAccent:Z};if(!z1.transparentBackground)return q;let Q=Oz.fromInts(0,0,0,0);return{...q,background:Q,backgroundPanel:Q}});return ff(()=>{J?.setBackgroundColor(z().background)}),{theme:new Proxy({},{get(G,Z){let q=z();return q[Z]??q.text}}),get selected(){return z1.active},get transparentBackground(){return z1.transparentBackground},get focusAccent(){return z1.focusAccent},mode(){return z1.mode},set(G){if(!IZ(G))return!1;return Az("active",G),!0},setMode(G){Az("mode",G)},setTransparentBackground(G){Az("transparentBackground",G)},setFocusAccent(G){Az("focusAccent",G)},all(){return yN()},has(G){return IZ(G)}}}}))});var Q6,H6;var B6=C(()=>{Q6={cancel:"Cancel",confirm:"Confirm",rename:{defaultTitle:"Rename task",defaultFieldLabel:"title",footerHint:"enter {submitLabel} \xB7 esc cancel",defaultSubmitLabel:"rename"}},H6={cancel:"\u53D6\u6D88",confirm:"\u786E\u8BA4",rename:{defaultTitle:"\u91CD\u547D\u540D\u4EFB\u52A1",defaultFieldLabel:"\u540D\u79F0",footerHint:"enter {submitLabel} \xB7 esc \u53D6\u6D88",defaultSubmitLabel:"\u91CD\u547D\u540D"}}});var j6,W6;var V6=C(()=>{j6={tabs:{all:"All",changes:"Changes"},actions:{zen:"zen",createPR:"create PR"},legend:{changes:"M modified \xB7 A added \xB7 D deleted \xB7 ? untracked"},empty:{noTask:"(no task \u2014 press n to create)",noFiles:"(empty worktree)",noChanges:"(no changes \u2014 clean worktree)"},error:{retryHint:"press r to retry",notGitRepo:"not a git repository",pathMissing:"worktree path is missing",permissionDenied:"permission denied",gitNotInstalled:"git is not installed",gitFailed:"git command failed"},footer:{openHint:"\u21B5 open"}},W6={tabs:{all:"\u5168\u90E8",changes:"\u6539\u52A8"},actions:{zen:"\u4E13\u6CE8\u6A21\u5F0F",createPR:"\u521B\u5EFA PR"},legend:{changes:"M \u5DF2\u4FEE\u6539 \xB7 A \u5DF2\u6DFB\u52A0 \xB7 D \u5DF2\u5220\u9664 \xB7 ? \u672A\u8DDF\u8E2A"},empty:{noTask:"\uFF08\u6682\u65E0\u4EFB\u52A1 \u2014 \u6309 n \u521B\u5EFA\uFF09",noFiles:"\uFF08worktree \u4E3A\u7A7A\uFF09",noChanges:"\uFF08\u65E0\u6539\u52A8 \u2014 worktree \u5E72\u51C0\uFF09"},error:{retryHint:"\u6309 r \u91CD\u8BD5",notGitRepo:"\u4E0D\u662F git \u4ED3\u5E93",pathMissing:"worktree \u8DEF\u5F84\u4E0D\u5B58\u5728",permissionDenied:"\u6743\u9650\u4E0D\u8DB3",gitNotInstalled:"\u672A\u5B89\u88C5 git",gitFailed:"git \u547D\u4EE4\u5931\u8D25"},footer:{openHint:"\u21B5 \u6253\u5F00"}}});var K6,U6;var D6=C(()=>{K6={title:"kobe \u2014 keybindings",esc:"esc"},U6={title:"kobe \u2014 \u5FEB\u6377\u952E",esc:"esc"}});var L6,M6;var F6=C(()=>{L6={category:{Global:"Global",Sidebar:"Sidebar",Workspace:"Workspace",Navigation:"Navigation","Tasks pane":"Tasks pane","Workspace (tmux)":"Workspace (tmux)",Files:"Files",Terminal:"Terminal",Dialog:"Dialog"},desc:{"help.open":"Show keybindings help","task.new":"New task","task.openEditor":"Open active task worktree in editor","settings.open":"Open settings","settings.open.sidebar":"Open settings","app.quit":"Quit (with confirm)","focus.sidebar":"Back to sidebar (tasks)","focus.numeric":"Jump to pane (h=sidebar, j=workspace, k=files, l=terminal)","chat.interrupt":"Interrupt current turn (esc while streaming)","sidebar.nav":"Move cursor up/down","sidebar.select":"Open the selected task","sidebar.goto":"Top / bottom of list (gg or shift-G)","sidebar.rename":"Rename task","sidebar.archive":"Toggle archive","sidebar.localMerge":"Local merge task into parent repo (Shift+M)","sidebar.pin":"Pin / unpin task at top (Shift+P)","sidebar.view":"Switch view (Working session \u2194 Archives)","sidebar.sort":"Switch task sort (default \u2194 recent)","sidebar.projectFilter":"Cycle task project filter","sidebar.delete":"Delete task (with confirm)","sidebar.search.enter":"Search tasks (fuzzy filter)","sidebar.search.nav":"Move highlight in search results","sidebar.search.submit":"Select search match and exit search","sidebar.search.cancel":"Cancel search (restore prior selection)","tasks.openWorktree":"Open selected task's worktree in your editor","tasks.renameBranch":"Rename the selected task's git branch","tasks.cycleEngine":"Cycle engine vendor (claude \u2194 codex \u2194 \u2026) \u2014 applies on reopen","tasks.update":"Open the update page (when a new version is available)","tasks.focusEngine":"Focus the engine pane of the current window","tasks.toggleKeys":"Collapse / expand the keys legend","tmux.quickTask":"Quick new task (tmux prefix, then f)","tmux.engineTab":"Open the engine in a new tab (tmux prefix, then t)","tmux.layout.workspaceSplit":"Add a temporary workspace split (tmux prefix, then s)","tmux.layout.workspaceClose":"Close the focused temporary workspace split (tmux prefix, then x)","tmux.layout.workspaceReset":"Close all temporary workspace splits (tmux prefix, then r)","tmux.layout.tasksToggle":"Hide / restore the Tasks pane (tmux prefix, then a)","tmux.layout.opsToggle":"Toggle the file/Ops pane (tmux prefix, then o)","tmux.layout.terminalToggle":"Hide / restore the terminal pane (tmux prefix, then z)","tmux.layout.zenToggle":"Zen mode \u2014 collapse to the engine pane (tmux prefix, then space)","chat.send":"Send message (composer)","chat.newline":"Newline in composer","chat.cycle-mode":"Cycle permission mode (composer)","chat.steer":"Steer (interrupt + send) \u2014 mid-stream only","chat.tab.new":"New chat tab","chat.fork.new":"Quick-fork: create child task seeded with current repo/branch/model","chat.session.resume":"Resume a prior session in this task's worktree","chat.tab.close":"Close chat tab","chat.tab.rename":"Rename active chat tab","chat.tab.cycle-next":"Next chat tab","chat.tab.cycle-prev":"Previous chat tab","chat.question.nav":"Move highlight in question picker","chat.question.toggle":"Toggle highlighted option in question picker","chat.question.submit":"Advance / submit question picker","chat.question.pick-number":"Pick option by number in question picker","files.nav":"Move cursor up/down","files.hierarchy":"Collapse / expand tree level","files.open":"Open file in nvim (diff vs HEAD when changed)","files.tab":"Switch tab (cycle All / Changes)","files.refresh":"Refresh","files.openExternal":"Open file in system default app (audio / video / pdf preview)","files.mention":"Inject @<path> mention into the engine pane","files.createPR":"Create PR from the current task","terminal.scroll-up":"Scroll scrollback up","terminal.scroll-down":"Scroll scrollback down","terminal.reset":"Reset terminal \u2014 kill the current shell and respawn","dialog.cancel":"Close the top dialog (esc)","dialog.newtask.tab.cycle":"Switch New Task tab (Existing / New Repo)"}},M6={category:{Global:"\u5168\u5C40",Sidebar:"\u4FA7\u8FB9\u680F",Workspace:"\u5DE5\u4F5C\u533A",Navigation:"\u5BFC\u822A","Tasks pane":"\u4EFB\u52A1\u9762\u677F","Workspace (tmux)":"\u5DE5\u4F5C\u533A\uFF08tmux\uFF09",Files:"\u6587\u4EF6",Terminal:"\u7EC8\u7AEF",Dialog:"\u5BF9\u8BDD\u6846"},desc:{"help.open":"\u663E\u793A\u5FEB\u6377\u952E\u5E2E\u52A9","task.new":"\u65B0\u5EFA\u4EFB\u52A1","task.openEditor":"\u5728\u7F16\u8F91\u5668\u4E2D\u6253\u5F00\u5F53\u524D\u4EFB\u52A1\u7684 worktree","settings.open":"\u6253\u5F00\u8BBE\u7F6E","settings.open.sidebar":"\u6253\u5F00\u8BBE\u7F6E","app.quit":"\u9000\u51FA\uFF08\u9700\u786E\u8BA4\uFF09","focus.sidebar":"\u8FD4\u56DE\u4FA7\u8FB9\u680F\uFF08\u4EFB\u52A1\u5217\u8868\uFF09","focus.numeric":"\u8DF3\u8F6C\u5230\u9762\u677F\uFF08h=\u4FA7\u8FB9\u680F\uFF0Cj=\u5DE5\u4F5C\u533A\uFF0Ck=\u6587\u4EF6\uFF0Cl=\u7EC8\u7AEF\uFF09","chat.interrupt":"\u4E2D\u65AD\u5F53\u524D\u8F6E\u6B21\uFF08\u6D41\u5F0F\u8F93\u51FA\u4E2D\u6309 esc\uFF09","sidebar.nav":"\u4E0A\u4E0B\u79FB\u52A8\u5149\u6807","sidebar.select":"\u6253\u5F00\u9009\u4E2D\u7684\u4EFB\u52A1","sidebar.goto":"\u8DF3\u5230\u5217\u8868\u9876\u90E8 / \u5E95\u90E8\uFF08gg \u6216 shift-G\uFF09","sidebar.rename":"\u91CD\u547D\u540D\u4EFB\u52A1","sidebar.archive":"\u5207\u6362\u5F52\u6863\u72B6\u6001","sidebar.localMerge":"\u5C06\u4EFB\u52A1\u672C\u5730\u5408\u5E76\u5230\u7236\u4ED3\u5E93\uFF08Shift+M\uFF09","sidebar.pin":"\u7F6E\u9876 / \u53D6\u6D88\u7F6E\u9876\u4EFB\u52A1\uFF08Shift+P\uFF09","sidebar.view":"\u5207\u6362\u89C6\u56FE\uFF08\u5DE5\u4F5C\u4F1A\u8BDD \u2194 \u5F52\u6863\uFF09","sidebar.sort":"\u5207\u6362\u4EFB\u52A1\u6392\u5E8F\u65B9\u5F0F\uFF08\u9ED8\u8BA4 \u2194 \u6700\u8FD1\uFF09","sidebar.projectFilter":"\u5FAA\u73AF\u5207\u6362\u4EFB\u52A1\u9879\u76EE\u7B5B\u9009","sidebar.delete":"\u5220\u9664\u4EFB\u52A1\uFF08\u9700\u786E\u8BA4\uFF09","sidebar.search.enter":"\u641C\u7D22\u4EFB\u52A1\uFF08\u6A21\u7CCA\u8FC7\u6EE4\uFF09","sidebar.search.nav":"\u5728\u641C\u7D22\u7ED3\u679C\u4E2D\u79FB\u52A8\u9AD8\u4EAE","sidebar.search.submit":"\u9009\u4E2D\u641C\u7D22\u5339\u914D\u9879\u5E76\u9000\u51FA\u641C\u7D22","sidebar.search.cancel":"\u53D6\u6D88\u641C\u7D22\uFF08\u6062\u590D\u4E4B\u524D\u7684\u9009\u4E2D\u9879\uFF09","tasks.openWorktree":"\u5728\u7F16\u8F91\u5668\u4E2D\u6253\u5F00\u9009\u4E2D\u4EFB\u52A1\u7684 worktree","tasks.renameBranch":"\u91CD\u547D\u540D\u9009\u4E2D\u4EFB\u52A1\u7684 git \u5206\u652F","tasks.cycleEngine":"\u5FAA\u73AF\u5207\u6362\u5F15\u64CE\u5382\u5546\uFF08claude \u2194 codex \u2194 \u2026\uFF09\u2014\u2014\u91CD\u65B0\u6253\u5F00\u540E\u751F\u6548","tasks.update":"\u6253\u5F00\u66F4\u65B0\u9875\u9762\uFF08\u6709\u65B0\u7248\u672C\u65F6\uFF09","tasks.focusEngine":"\u805A\u7126\u5F53\u524D\u7A97\u53E3\u7684\u5F15\u64CE\u9762\u677F","tasks.toggleKeys":"\u6298\u53E0 / \u5C55\u5F00\u5FEB\u6377\u952E\u8BF4\u660E","tmux.quickTask":"\u5FEB\u901F\u65B0\u5EFA\u4EFB\u52A1\uFF08tmux \u524D\u7F00\uFF0C\u7136\u540E\u6309 f\uFF09","tmux.engineTab":"\u5728\u65B0\u6807\u7B7E\u9875\u4E2D\u6253\u5F00\u5F15\u64CE\uFF08tmux \u524D\u7F00\uFF0C\u7136\u540E\u6309 t\uFF09","tmux.layout.workspaceSplit":"\u6DFB\u52A0\u4E34\u65F6\u5DE5\u4F5C\u533A\u5206\u5C4F\uFF08tmux \u524D\u7F00\uFF0C\u7136\u540E\u6309 s\uFF09","tmux.layout.workspaceClose":"\u5173\u95ED\u5F53\u524D\u805A\u7126\u7684\u4E34\u65F6\u5DE5\u4F5C\u533A\u5206\u5C4F\uFF08tmux \u524D\u7F00\uFF0C\u7136\u540E\u6309 x\uFF09","tmux.layout.workspaceReset":"\u5173\u95ED\u6240\u6709\u4E34\u65F6\u5DE5\u4F5C\u533A\u5206\u5C4F\uFF08tmux \u524D\u7F00\uFF0C\u7136\u540E\u6309 r\uFF09","tmux.layout.tasksToggle":"\u9690\u85CF / \u6062\u590D\u4EFB\u52A1\u9762\u677F\uFF08tmux \u524D\u7F00\uFF0C\u7136\u540E\u6309 a\uFF09","tmux.layout.opsToggle":"\u5207\u6362\u6587\u4EF6/Ops \u9762\u677F\uFF08tmux \u524D\u7F00\uFF0C\u7136\u540E\u6309 o\uFF09","tmux.layout.terminalToggle":"\u9690\u85CF / \u6062\u590D\u7EC8\u7AEF\u9762\u677F\uFF08tmux \u524D\u7F00\uFF0C\u7136\u540E\u6309 z\uFF09","tmux.layout.zenToggle":"\u4E13\u6CE8\u6A21\u5F0F\u2014\u2014\u6298\u53E0\u5230\u5F15\u64CE\u9762\u677F\uFF08tmux \u524D\u7F00\uFF0C\u7136\u540E\u6309 space\uFF09","chat.send":"\u53D1\u9001\u6D88\u606F\uFF08\u8F93\u5165\u6846\uFF09","chat.newline":"\u5728\u8F93\u5165\u6846\u4E2D\u6362\u884C","chat.cycle-mode":"\u5FAA\u73AF\u5207\u6362\u6743\u9650\u6A21\u5F0F\uFF08\u8F93\u5165\u6846\uFF09","chat.steer":"\u5F15\u5BFC\uFF08\u4E2D\u65AD\u5E76\u53D1\u9001\uFF09\u2014\u2014\u4EC5\u9650\u6D41\u5F0F\u8F93\u51FA\u4E2D","chat.tab.new":"\u65B0\u5EFA\u804A\u5929\u6807\u7B7E\u9875","chat.fork.new":"\u5FEB\u901F\u6D3E\u751F\uFF1A\u4EE5\u5F53\u524D\u4ED3\u5E93/\u5206\u652F/\u6A21\u578B\u521B\u5EFA\u5B50\u4EFB\u52A1","chat.session.resume":"\u5728\u6B64\u4EFB\u52A1\u7684 worktree \u4E2D\u6062\u590D\u4E4B\u524D\u7684\u4F1A\u8BDD","chat.tab.close":"\u5173\u95ED\u804A\u5929\u6807\u7B7E\u9875","chat.tab.rename":"\u91CD\u547D\u540D\u5F53\u524D\u804A\u5929\u6807\u7B7E\u9875","chat.tab.cycle-next":"\u4E0B\u4E00\u4E2A\u804A\u5929\u6807\u7B7E\u9875","chat.tab.cycle-prev":"\u4E0A\u4E00\u4E2A\u804A\u5929\u6807\u7B7E\u9875","chat.question.nav":"\u5728\u63D0\u95EE\u9009\u62E9\u5668\u4E2D\u79FB\u52A8\u9AD8\u4EAE","chat.question.toggle":"\u5728\u63D0\u95EE\u9009\u62E9\u5668\u4E2D\u5207\u6362\u9AD8\u4EAE\u9009\u9879","chat.question.submit":"\u63A8\u8FDB / \u63D0\u4EA4\u63D0\u95EE\u9009\u62E9\u5668","chat.question.pick-number":"\u5728\u63D0\u95EE\u9009\u62E9\u5668\u4E2D\u6309\u6570\u5B57\u9009\u62E9\u9009\u9879","files.nav":"\u4E0A\u4E0B\u79FB\u52A8\u5149\u6807","files.hierarchy":"\u6298\u53E0 / \u5C55\u5F00\u6811\u5C42\u7EA7","files.open":"\u5728 nvim \u4E2D\u6253\u5F00\u6587\u4EF6\uFF08\u6709\u53D8\u66F4\u65F6\u663E\u793A\u4E0E HEAD \u7684\u5DEE\u5F02\uFF09","files.tab":"\u5207\u6362\u6807\u7B7E\u9875\uFF08\u5FAA\u73AF \u5168\u90E8 / \u53D8\u66F4\uFF09","files.refresh":"\u5237\u65B0","files.openExternal":"\u5728\u7CFB\u7EDF\u9ED8\u8BA4\u5E94\u7528\u4E2D\u6253\u5F00\u6587\u4EF6\uFF08\u97F3\u9891 / \u89C6\u9891 / pdf \u9884\u89C8\uFF09","files.mention":"\u5C06 @<path> \u63D0\u53CA\u6CE8\u5165\u5F15\u64CE\u9762\u677F","files.createPR":"\u4ECE\u5F53\u524D\u4EFB\u52A1\u521B\u5EFA PR","terminal.scroll-up":"\u5411\u4E0A\u6EDA\u52A8\u56DE\u6EDA","terminal.scroll-down":"\u5411\u4E0B\u6EDA\u52A8\u56DE\u6EDA","terminal.reset":"\u91CD\u7F6E\u7EC8\u7AEF\u2014\u2014\u5173\u95ED\u5F53\u524D shell \u5E76\u91CD\u65B0\u542F\u52A8","dialog.cancel":"\u5173\u95ED\u9876\u5C42\u5BF9\u8BDD\u6846\uFF08esc\uFF09","dialog.newtask.tab.cycle":"\u5207\u6362\u65B0\u5EFA\u4EFB\u52A1\u6807\u7B7E\u9875\uFF08\u73B0\u6709\u4ED3\u5E93 / \u65B0\u4ED3\u5E93\uFF09"}}});var O6,A6;var g6=C(()=>{O6={title:"New task",tabs:{existing:"For Existing",clone:"For New Repo",adopt:"Adopt Worktree"},field:{engine:"engine",repo:"repo",fromBranch:"from branch",gitUrl:"git url",parentDir:"parent dir",folderName:"folder name",baseBranch:"base branch",adoptFilter:"filter (path glob)"},placeholder:{folderName:"auto from url",adoptFilter:"* \u2014 type e.g. feature-* to narrow"},hint:{engineCycle:"ctrl+e",remembered:"(remembered \u2014 next clone defaults to this dir)",currentDir:"(current dir)",noBranchesFound:"(no local branches found \u2014 typed text will be used as ref)",noMatchBranch:"(no match \u2014 typed text will be used as ref)",scanningWorktrees:"scanning worktrees\u2026",legend:"\u2191\u2193 pick \xB7 tab next field \xB7 \u2190\u2192 switch \xB7 enter done \xB7 esc cancel"},picker:{moreAbove:"\u2191 {count} more",moreBelow:"\u2193 {count} more"},adopt:{repoLine:"repo: {path}",repoNone:"(none)",noUnlinked:"no unlinked worktrees \u2014 every git worktree here is already a task",noMatch:"no worktrees match the filter",hintSelected:"{count} selected \xB7 enter toggles \xB7 ctrl+a all \xB7 Create imports",hintDefault:"enter toggles \xB7 ctrl+a all \xB7 Create imports the highlighted row"},clone:{progressFallback:"Cloning\u2026",progressInto:"Cloning into {target}\u2026"},button:{create:"[ Create ]",createFocused:"\u25B8 [ Create ]",cloning:"[ Cloning\u2026 ]"},error:{gitUrlRequired:"git URL is required",gitUrlInvalid:"does not look like a git URL: {url}",folderRequired:"folder name is required",folderHasSeparator:"folder name cannot contain path separators",parentRequired:"parent directory is required",parentNotFound:"parent directory does not exist: {path}",parentNotDir:"not a directory: {path}",targetExists:"target already exists: {path}",cloneFailed:"git clone failed: {error}",noAdoptable:"no adoptable worktrees to import"}},A6={title:"\u65B0\u5EFA\u4EFB\u52A1",tabs:{existing:"\u5DF2\u6709\u4ED3\u5E93",clone:"\u514B\u9686\u65B0\u4ED3\u5E93",adopt:"\u63A5\u7BA1 Worktree"},field:{engine:"\u5F15\u64CE",repo:"\u4ED3\u5E93",fromBranch:"\u57FA\u51C6\u5206\u652F",gitUrl:"git \u5730\u5740",parentDir:"\u7236\u76EE\u5F55",folderName:"\u6587\u4EF6\u5939\u540D",baseBranch:"\u57FA\u51C6\u5206\u652F",adoptFilter:"\u8FC7\u6EE4\uFF08\u8DEF\u5F84 glob\uFF09"},placeholder:{folderName:"\u81EA\u52A8\u4ECE\u5730\u5740\u63A8\u5BFC",adoptFilter:"* \u2014 \u8F93\u5165\u5982 feature-* \u6765\u7F29\u5C0F\u8303\u56F4"},hint:{engineCycle:"ctrl+e",remembered:"\uFF08\u5DF2\u8BB0\u4F4F \u2014 \u4E0B\u6B21\u514B\u9686\u9ED8\u8BA4\u4F7F\u7528\u6B64\u76EE\u5F55\uFF09",currentDir:"\uFF08\u5F53\u524D\u76EE\u5F55\uFF09",noBranchesFound:"\uFF08\u672A\u627E\u5230\u672C\u5730\u5206\u652F \u2014 \u5C06\u76F4\u63A5\u4F7F\u7528\u8F93\u5165\u6587\u672C\u4F5C\u4E3A ref\uFF09",noMatchBranch:"\uFF08\u65E0\u5339\u914D \u2014 \u5C06\u76F4\u63A5\u4F7F\u7528\u8F93\u5165\u6587\u672C\u4F5C\u4E3A ref\uFF09",scanningWorktrees:"\u6B63\u5728\u626B\u63CF worktree\u2026",legend:"\u2191\u2193 \u9009\u62E9 \xB7 tab \u4E0B\u4E00\u5B57\u6BB5 \xB7 \u2190\u2192 \u5207\u6362 \xB7 enter \u786E\u8BA4 \xB7 esc \u53D6\u6D88"},picker:{moreAbove:"\u2191 \u8FD8\u6709 {count} \u9879",moreBelow:"\u2193 \u8FD8\u6709 {count} \u9879"},adopt:{repoLine:"\u4ED3\u5E93\uFF1A{path}",repoNone:"\uFF08\u65E0\uFF09",noUnlinked:"\u6CA1\u6709\u672A\u5173\u8054\u7684 worktree \u2014 \u6B64\u4ED3\u5E93\u6240\u6709 git worktree \u5747\u5DF2\u662F\u4EFB\u52A1",noMatch:"\u6CA1\u6709 worktree \u5339\u914D\u6B64\u8FC7\u6EE4\u6761\u4EF6",hintSelected:"\u5DF2\u9009 {count} \u9879 \xB7 enter \u5207\u6362\u9009\u4E2D \xB7 ctrl+a \u5168\u9009 \xB7 \u521B\u5EFA \u5BFC\u5165",hintDefault:"enter \u5207\u6362\u9009\u4E2D \xB7 ctrl+a \u5168\u9009 \xB7 \u521B\u5EFA \u5C06\u5BFC\u5165\u9AD8\u4EAE\u884C"},clone:{progressFallback:"\u514B\u9686\u4E2D\u2026",progressInto:"\u6B63\u5728\u514B\u9686\u5230 {target}\u2026"},button:{create:"[ \u521B\u5EFA ]",createFocused:"\u25B8 [ \u521B\u5EFA ]",cloning:"[ \u514B\u9686\u4E2D\u2026 ]"},error:{gitUrlRequired:"git \u5730\u5740\u4E0D\u80FD\u4E3A\u7A7A",gitUrlInvalid:"\u4E0D\u50CF\u662F\u6709\u6548\u7684 git \u5730\u5740\uFF1A{url}",folderRequired:"\u6587\u4EF6\u5939\u540D\u4E0D\u80FD\u4E3A\u7A7A",folderHasSeparator:"\u6587\u4EF6\u5939\u540D\u4E0D\u80FD\u5305\u542B\u8DEF\u5F84\u5206\u9694\u7B26",parentRequired:"\u7236\u76EE\u5F55\u4E0D\u80FD\u4E3A\u7A7A",parentNotFound:"\u7236\u76EE\u5F55\u4E0D\u5B58\u5728\uFF1A{path}",parentNotDir:"\u4E0D\u662F\u76EE\u5F55\uFF1A{path}",targetExists:"\u76EE\u6807\u8DEF\u5F84\u5DF2\u5B58\u5728\uFF1A{path}",cloneFailed:"git clone \u5931\u8D25\uFF1A{error}",noAdoptable:"\u6CA1\u6709\u53EF\u63A5\u7BA1\u7684 worktree"}}});var R6,C6;var k6=C(()=>{R6={badge:{newActivity:"\u25CF new"},preview:{diffVsHead:"diff vs HEAD",file:"file",closeHint:"\xB7 q to close",loading:"loading\u2026"}},C6={badge:{newActivity:"\u25CF \u65B0\u52A8\u6001"},preview:{diffVsHead:"\u4E0E HEAD \u5BF9\u6BD4",file:"\u6587\u4EF6",closeHint:"\xB7 q \u5173\u95ED",loading:"\u52A0\u8F7D\u4E2D\u2026"}}});var N6,y6;var b6=C(()=>{N6={title:"Quick task \xB7 {repoLabel}",esc:"esc",promptLabel:"prompt",promptPlaceholder:"what should this task do?",engineLabel:"engine",branchLabel:"branch",legend:"enter create \xB7 tab field \xB7 ctrl+e engine \xB7 esc cancel"},y6={title:"\u5FEB\u901F\u4EFB\u52A1 \xB7 {repoLabel}",esc:"esc",promptLabel:"\u63D0\u793A\u8BCD",promptPlaceholder:"\u8FD9\u4E2A\u4EFB\u52A1\u8981\u505A\u4EC0\u4E48\uFF1F",engineLabel:"\u5F15\u64CE",branchLabel:"\u5206\u652F",legend:"enter \u521B\u5EFA \xB7 tab \u5207\u6362\u5B57\u6BB5 \xB7 ctrl+e \u5207\u6362\u5F15\u64CE \xB7 esc \u53D6\u6D88"}});var S6,I6;var T6=C(()=>{S6={title:"Settings",esc:"esc",nav:{default:"j/k pick \xB7 h/l switch level \xB7 enter activate \xB7 esc close",feedback:"tab next field \xB7 enter send \xB7 esc close"},sections:{general:"General",engines:"Engines",accounts:"Accounts",keys:"Keybindings",feedback:"Feedback",dev:"Dev"},general:{theme:"Theme",themeHint:"l to enter list \xB7 j/k to highlight \xB7 enter to apply",language:"Language",languageHint:"Display language for kobe's UI. l to enter list \xB7 j/k to highlight \xB7 enter to apply.",transparent:"Transparent background",transparentHint:"Drops the renderer's bg fill so the host terminal shows through. `t` toggles.",on:"[x] on",off:"[ ] off",focusAccent:"Focus accent",focusAccentHint:"Color of focused pane title, \u258C marker, and split borders.",accentPrimary:"Primary (brand accent)",accentSuccess:"Success (legacy green)",accentInfo:"Info (cool blue)",notifications:"Notifications",notificationsHint:"Fired when a background chat tab finishes or pauses on an approval. Toast = bottom-right popup; Sound = terminal bell + chime. Tab-chip unread dot is always on.",toast:"Toast",sound:"Sound",zen:"Zen mode",zenHint:"The `zen` chip (above the file list) and `prefix`+space collapse the ChatTab to the engine pane \u2014 hiding the file and terminal panes. Keep this on to leave the Tasks rail visible so you can always get back out.",zenKeepTasks:"Keep Tasks pane in zen mode",surface:"Settings page",surfaceHint:"Where Settings and the other full dialogs (new task, rename) open. ChatTab = a dedicated full-window page alongside the engine tabs; Task panel = an overlay inside the left Tasks pane. enter to pick.",surfaceChattab:"ChatTab (separate page)",surfaceTaskpanel:"Task panel (in-pane overlay)",editor:"Editor",editorHint:"What `e` opens a file with in the file tree (enter stays the read-only preview). `auto` (default) follows $VISUAL / $EDITOR, else auto-detects nvim / vim / emacs / nano. enter on the row below cycles auto / vim / nvim / nano / emacs / custom; if the editor isn't installed it falls back to the preview.",editorRow:"editor: < {kind} > (enter to change)",editorCustom:"custom: {cmd}",editorCustomUnset:"(unset \u2014 enter to edit)"},engines:{title:"Launch command",hint:"The command each engine's task pane runs. Override a built-in when your binary isn't on PATH as `claude` / `codex` (e.g. it's `cl`) or to pass default flags, or add your own engine. \u25CF = default engine for new tasks (also set by Ctrl+Shift+T). enter edit command \xB7 r rename \xB7 x reset/remove \xB7 d set default.",defaultTag:" (default)",customTag:" (custom)",addEngine:"+ Add engine"},accounts:{title:"Accounts",hint:"Read-only view of locally-detected engine accounts. Login flows land here later.",checking:"Checking\u2026",notLoggedIn:"\u25CB Not logged in",loggedIn:"\u25CF Logged in: {email}",apiKeyConfigured:"\u25CF API key configured",chatgptLogin:"\u25CF ChatGPT login: {email}",tokenConfigured:"\u25CF Token configured ({source})",copilotDetected:"\u25CF Copilot login detected"},keybindings:{title:"Keybindings",hint:"Rebind chords by editing the YAML below, then restart kobe (or respawn the pane). Press F1 anywhere for the live keymap with every binding id.",configFile:"Config file",notCreated:" (not created yet)",example:"Example",overridesApplied:"Overrides applied",none:"none",warnings:"Warnings"},feedback:{title:"Feedback",hint:"Sends a GitHub Discussion to the kobe repo through `gh`. Requires `gh auth login`; category defaults to Feedback.",titleLabel:"title",titlePlaceholder:"Short summary",descriptionLabel:"description",descriptionPlaceholder:"What happened? (enter sends)",send:"[enter] Send to GitHub Discussions"},dev:{reset:"Reset UI state",resetHint:"Clears ~/.config/kobe/state.json and ~/.kobe/tasks.json, then quits kobe \u2014 relaunch to start fresh. Working session / Archive lists, pane sizes, theme, model picks all reset. Worktrees on disk and Claude Code session history are not touched.",resetButton:"[enter] Reset",restart:"Restart backend",restartHint:"Stops the kobe daemon and quits this kobe window so the next launch spawns a fresh daemon \u2014 picks up daemon / orchestrator / engine edits without a process kill. Other attached kobe windows will lose their connection too.",restartButton:"[enter] Restart",doctorHint:"Daemon wedged or unresponsive? From a shell, run `kobe doctor` to diagnose, or `kobe reset` to stop the daemon + kill sessions (keeps your tasks). Use `kobe reset --hard` only to also wipe the task index + UI state.",experimental:"Experimental",remoteHint:"Remote projects (SSH): register a project whose git worktrees + engine run on another host over SSH, driven from this local kobe. Unfinished \u2014 file/diff panes still degrade for remote. Enables `kobe add --remote`.",remoteOn:"[x] Remote projects (on)",remoteOff:"[ ] Remote projects (off)",autoStatusHint:"Auto status flow: a backlog task moves to in_progress when its engine starts a turn, and new claude sessions get a system-prompt note telling the agent to set in_review itself when the work is done. Never touches done/canceled.",autoStatusOn:"[x] Auto status flow (on)",autoStatusOff:"[ ] Auto status flow (off)",dispatcherHint:"Field-notes dispatcher: task sessions file one-line gotchas (`kobe api note`), the daemon forwards each to the repo's main session, and that session relays them to the in-flight tasks that benefit (`kobe api dispatch`). Web-hosted sessions receive the relays today.",dispatcherOn:"[x] Field-notes dispatcher (on)",dispatcherOff:"[ ] Field-notes dispatcher (off)"}},I6={title:"\u8BBE\u7F6E",esc:"esc",nav:{default:"j/k \u9009\u62E9 \xB7 h/l \u5207\u6362\u5C42\u7EA7 \xB7 enter \u786E\u8BA4 \xB7 esc \u5173\u95ED",feedback:"tab \u4E0B\u4E00\u9879 \xB7 enter \u53D1\u9001 \xB7 esc \u5173\u95ED"},sections:{general:"\u901A\u7528",engines:"\u5F15\u64CE",accounts:"\u8D26\u6237",keys:"\u5FEB\u6377\u952E",feedback:"\u53CD\u9988",dev:"\u5F00\u53D1"},general:{theme:"\u4E3B\u9898",themeHint:"l \u8FDB\u5165\u5217\u8868 \xB7 j/k \u9AD8\u4EAE \xB7 enter \u5E94\u7528",language:"\u8BED\u8A00",languageHint:"kobe \u754C\u9762\u7684\u663E\u793A\u8BED\u8A00\u3002l \u8FDB\u5165\u5217\u8868 \xB7 j/k \u9AD8\u4EAE \xB7 enter \u5E94\u7528\u3002",transparent:"\u900F\u660E\u80CC\u666F",transparentHint:"\u53BB\u6389\u6E32\u67D3\u5668\u7684\u80CC\u666F\u586B\u5145\uFF0C\u8BA9\u5BBF\u4E3B\u7EC8\u7AEF\u900F\u51FA\u6765\u3002\u6309 `t` \u5207\u6362\u3002",on:"[x] \u5F00",off:"[ ] \u5173",focusAccent:"\u805A\u7126\u5F3A\u8C03\u8272",focusAccentHint:"\u805A\u7126\u9762\u677F\u6807\u9898\u3001\u258C \u6807\u8BB0\u548C\u5206\u9694\u8FB9\u6846\u7684\u989C\u8272\u3002",accentPrimary:"\u4E3B\u8272\uFF08\u54C1\u724C\u5F3A\u8C03\u8272\uFF09",accentSuccess:"\u6210\u529F\u8272\uFF08\u4F20\u7EDF\u7EFF\uFF09",accentInfo:"\u4FE1\u606F\u8272\uFF08\u51B7\u84DD\uFF09",notifications:"\u901A\u77E5",notificationsHint:"\u540E\u53F0\u804A\u5929\u9875\u5B8C\u6210\u6216\u5728\u5BA1\u6279\u5904\u6682\u505C\u65F6\u89E6\u53D1\u3002Toast = \u53F3\u4E0B\u89D2\u5F39\u7A97\uFF1BSound = \u7EC8\u7AEF\u54CD\u94C3 + \u63D0\u793A\u97F3\u3002\u6807\u7B7E\u4E0A\u7684\u672A\u8BFB\u5706\u70B9\u59CB\u7EC8\u5F00\u542F\u3002",toast:"Toast \u5F39\u7A97",sound:"\u58F0\u97F3",zen:"\u7985\u6A21\u5F0F",zenHint:"`zen` \u6807\u8BB0\uFF08\u6587\u4EF6\u5217\u8868\u4E0A\u65B9\uFF09\u548C `prefix`+\u7A7A\u683C \u4F1A\u628A ChatTab \u6536\u8D77\u5230\u5F15\u64CE\u9762\u677F\u2014\u2014\u9690\u85CF\u6587\u4EF6\u4E0E\u7EC8\u7AEF\u9762\u677F\u3002\u4FDD\u6301\u5F00\u542F\u53EF\u8BA9 Tasks \u4FA7\u680F\u59CB\u7EC8\u53EF\u89C1\uFF0C\u65B9\u4FBF\u968F\u65F6\u9000\u51FA\u3002",zenKeepTasks:"\u7985\u6A21\u5F0F\u4E0B\u4FDD\u7559 Tasks \u9762\u677F",surface:"\u8BBE\u7F6E\u9875\u9762",surfaceHint:"\u8BBE\u7F6E\u53CA\u5176\u4ED6\u5B8C\u6574\u5BF9\u8BDD\u6846\uFF08\u65B0\u5EFA\u4EFB\u52A1\u3001\u91CD\u547D\u540D\uFF09\u7684\u6253\u5F00\u4F4D\u7F6E\u3002ChatTab = \u4E0E\u5F15\u64CE\u6807\u7B7E\u5E76\u5217\u7684\u72EC\u7ACB\u6574\u7A97\u9875\u9762\uFF1BTask panel = \u5DE6\u4FA7 Tasks \u9762\u677F\u5185\u7684\u6D6E\u5C42\u3002enter \u9009\u62E9\u3002",surfaceChattab:"ChatTab\uFF08\u72EC\u7ACB\u9875\u9762\uFF09",surfaceTaskpanel:"Task panel\uFF08\u9762\u677F\u5185\u6D6E\u5C42\uFF09",editor:"\u7F16\u8F91\u5668",editorHint:"\u6587\u4EF6\u6811\u91CC\u6309 `e` \u7528\u4EC0\u4E48\u6253\u5F00\u6587\u4EF6\uFF08enter \u4ECD\u662F\u53EA\u8BFB\u9884\u89C8\uFF09\u3002`auto`\uFF08\u9ED8\u8BA4\uFF09\u8DDF\u968F $VISUAL / $EDITOR\uFF0C\u5426\u5219\u81EA\u52A8\u63A2\u6D4B nvim / vim / emacs / nano\u3002\u5728\u4E0B\u65B9\u4E00\u884C\u6309 enter \u5728 auto / vim / nvim / nano / emacs / custom \u95F4\u5FAA\u73AF\uFF1B\u7F16\u8F91\u5668\u672A\u5B89\u88C5\u65F6\u56DE\u9000\u5230\u9884\u89C8\u3002",editorRow:"\u7F16\u8F91\u5668: < {kind} > (enter \u5207\u6362)",editorCustom:"\u81EA\u5B9A\u4E49: {cmd}",editorCustomUnset:"(\u672A\u8BBE\u7F6E \u2014 enter \u7F16\u8F91)"},engines:{title:"\u542F\u52A8\u547D\u4EE4",hint:"\u6BCF\u4E2A\u5F15\u64CE\u7684\u4EFB\u52A1\u9762\u677F\u8FD0\u884C\u7684\u547D\u4EE4\u3002\u5F53\u4E8C\u8FDB\u5236\u6587\u4EF6\u4E0D\u5728 PATH \u4E0A\u7684 `claude` / `codex` \u540D\u4E0B\uFF08\u6BD4\u5982\u53EB `cl`\uFF09\u3001\u8981\u4F20\u9ED8\u8BA4\u53C2\u6570\uFF0C\u6216\u8981\u6DFB\u52A0\u81EA\u5DF1\u7684\u5F15\u64CE\u65F6\uFF0C\u53EF\u8986\u76D6\u5185\u7F6E\u9879\u3002\u25CF = \u65B0\u4EFB\u52A1\u7684\u9ED8\u8BA4\u5F15\u64CE\uFF08\u4E5F\u53EF\u7528 Ctrl+Shift+T \u8BBE\u7F6E\uFF09\u3002enter \u7F16\u8F91\u547D\u4EE4 \xB7 r \u91CD\u547D\u540D \xB7 x \u91CD\u7F6E/\u79FB\u9664 \xB7 d \u8BBE\u4E3A\u9ED8\u8BA4\u3002",defaultTag:" (\u9ED8\u8BA4)",customTag:" (\u81EA\u5B9A\u4E49)",addEngine:"+ \u6DFB\u52A0\u5F15\u64CE"},accounts:{title:"\u8D26\u6237",hint:"\u672C\u5730\u63A2\u6D4B\u5230\u7684\u5F15\u64CE\u8D26\u6237\u7684\u53EA\u8BFB\u89C6\u56FE\u3002\u767B\u5F55\u6D41\u7A0B\u7A0D\u540E\u4F1A\u63A5\u5165\u8FD9\u91CC\u3002",checking:"\u68C0\u67E5\u4E2D\u2026",notLoggedIn:"\u25CB \u672A\u767B\u5F55",loggedIn:"\u25CF \u5DF2\u767B\u5F55: {email}",apiKeyConfigured:"\u25CF \u5DF2\u914D\u7F6E API key",chatgptLogin:"\u25CF ChatGPT \u767B\u5F55: {email}",tokenConfigured:"\u25CF \u5DF2\u914D\u7F6E Token ({source})",copilotDetected:"\u25CF \u68C0\u6D4B\u5230 Copilot \u767B\u5F55"},keybindings:{title:"\u5FEB\u6377\u952E",hint:"\u7F16\u8F91\u4E0B\u9762\u7684 YAML \u6765\u91CD\u7ED1\u5B9A\u6309\u952E\uFF0C\u7136\u540E\u91CD\u542F kobe\uFF08\u6216\u91CD\u5EFA\u9762\u677F\uFF09\u3002\u4EFB\u610F\u4F4D\u7F6E\u6309 F1 \u67E5\u770B\u5E26\u6BCF\u4E2A\u7ED1\u5B9A id \u7684\u5B9E\u65F6\u952E\u4F4D\u8868\u3002",configFile:"\u914D\u7F6E\u6587\u4EF6",notCreated:" (\u5C1A\u672A\u521B\u5EFA)",example:"\u793A\u4F8B",overridesApplied:"\u5DF2\u5E94\u7528\u7684\u8986\u76D6",none:"\u65E0",warnings:"\u8B66\u544A"},feedback:{title:"\u53CD\u9988",hint:"\u901A\u8FC7 `gh` \u5411 kobe \u4ED3\u5E93\u53D1\u4E00\u6761 GitHub Discussion\u3002\u9700\u8981 `gh auth login`\uFF1B\u5206\u7C7B\u9ED8\u8BA4\u4E3A Feedback\u3002",titleLabel:"\u6807\u9898",titlePlaceholder:"\u7B80\u77ED\u6982\u62EC",descriptionLabel:"\u63CF\u8FF0",descriptionPlaceholder:"\u53D1\u751F\u4E86\u4EC0\u4E48\uFF1F(enter \u53D1\u9001)",send:"[enter] \u53D1\u9001\u5230 GitHub Discussions"},dev:{reset:"\u91CD\u7F6E UI \u72B6\u6001",resetHint:"\u6E05\u7A7A ~/.config/kobe/state.json \u548C ~/.kobe/tasks.json\uFF0C\u7136\u540E\u9000\u51FA kobe\u2014\u2014\u91CD\u65B0\u542F\u52A8\u5373\u53EF\u4ECE\u5934\u5F00\u59CB\u3002\u5DE5\u4F5C\u4F1A\u8BDD / \u5F52\u6863\u5217\u8868\u3001\u9762\u677F\u5C3A\u5BF8\u3001\u4E3B\u9898\u3001\u6A21\u578B\u9009\u62E9\u90FD\u4F1A\u91CD\u7F6E\u3002\u78C1\u76D8\u4E0A\u7684 worktree \u548C Claude Code \u4F1A\u8BDD\u5386\u53F2\u4E0D\u53D7\u5F71\u54CD\u3002",resetButton:"[enter] \u91CD\u7F6E",restart:"\u91CD\u542F\u540E\u7AEF",restartHint:"\u505C\u6B62 kobe daemon \u5E76\u9000\u51FA\u5F53\u524D kobe \u7A97\u53E3\uFF0C\u4E0B\u6B21\u542F\u52A8\u4F1A\u62C9\u8D77\u4E00\u4E2A\u5168\u65B0\u7684 daemon\u2014\u2014\u65E0\u9700\u6740\u8FDB\u7A0B\u5373\u53EF\u5E94\u7528 daemon / orchestrator / engine \u7684\u6539\u52A8\u3002\u5176\u4ED6\u5DF2\u8FDE\u63A5\u7684 kobe \u7A97\u53E3\u4E5F\u4F1A\u65AD\u5F00\u8FDE\u63A5\u3002",restartButton:"[enter] \u91CD\u542F",doctorHint:"daemon \u5361\u4F4F\u6216\u65E0\u54CD\u5E94\uFF1F\u5728 shell \u91CC\u8FD0\u884C `kobe doctor` \u8BCA\u65AD\uFF0C\u6216 `kobe reset` \u505C\u6B62 daemon + \u6740\u6389\u4F1A\u8BDD\uFF08\u4FDD\u7559\u4F60\u7684\u4EFB\u52A1\uFF09\u3002\u53EA\u6709\u8981\u540C\u65F6\u6E05\u7A7A\u4EFB\u52A1\u7D22\u5F15 + UI \u72B6\u6001\u65F6\u624D\u7528 `kobe reset --hard`\u3002",experimental:"\u5B9E\u9A8C\u6027",remoteHint:"\u8FDC\u7A0B\u9879\u76EE\uFF08SSH\uFF09\uFF1A\u6CE8\u518C\u4E00\u4E2A git worktree + \u5F15\u64CE\u90FD\u901A\u8FC7 SSH \u8DD1\u5728\u53E6\u4E00\u53F0\u4E3B\u673A\u4E0A\u3001\u7531\u672C\u5730 kobe \u9A71\u52A8\u7684\u9879\u76EE\u3002\u5C1A\u672A\u5B8C\u6210\u2014\u2014\u6587\u4EF6/diff \u9762\u677F\u5BF9\u8FDC\u7A0B\u4ECD\u4F1A\u964D\u7EA7\u3002\u542F\u7528 `kobe add --remote`\u3002",remoteOn:"[x] \u8FDC\u7A0B\u9879\u76EE (\u5F00)",remoteOff:"[ ] \u8FDC\u7A0B\u9879\u76EE (\u5173)",autoStatusHint:"\u81EA\u52A8\u72B6\u6001\u6D41\u8F6C\uFF1Abacklog \u4EFB\u52A1\u5728\u5176\u5F15\u64CE\u5F00\u59CB\u4E00\u8F6E\u65F6\u79FB\u5230 in_progress\uFF0C\u65B0\u7684 claude \u4F1A\u8BDD\u4F1A\u62FF\u5230\u4E00\u6761\u7CFB\u7EDF\u63D0\u793A\uFF0C\u544A\u8BC9 agent \u5B8C\u6210\u540E\u81EA\u884C\u8BBE\u4E3A in_review\u3002\u7EDD\u4E0D\u89E6\u78B0 done/canceled\u3002",autoStatusOn:"[x] \u81EA\u52A8\u72B6\u6001\u6D41\u8F6C (\u5F00)",autoStatusOff:"[ ] \u81EA\u52A8\u72B6\u6001\u6D41\u8F6C (\u5173)",dispatcherHint:"\u73B0\u573A\u7B14\u8BB0\u8C03\u5EA6\u5668\uFF1A\u4EFB\u52A1\u4F1A\u8BDD\u63D0\u4EA4\u4E00\u884C\u7ECF\u9A8C\uFF08`kobe api note`\uFF09\uFF0Cdaemon \u5C06\u6BCF\u6761\u8F6C\u53D1\u7ED9\u4ED3\u5E93\u7684\u4E3B\u4F1A\u8BDD\uFF0C\u4E3B\u4F1A\u8BDD\u518D\u628A\u5B83\u4EEC\u8F6C\u8FBE\u7ED9\u80FD\u53D7\u76CA\u7684\u8FDB\u884C\u4E2D\u4EFB\u52A1\uFF08`kobe api dispatch`\uFF09\u3002\u76EE\u524D\u7531 Web \u6258\u7BA1\u7684\u4F1A\u8BDD\u4F1A\u6536\u5230\u8F6C\u8FBE\u3002",dispatcherOn:"[x] \u73B0\u573A\u7B14\u8BB0\u8C03\u5EA6\u5668 (\u5F00)",dispatcherOff:"[ ] \u73B0\u573A\u7B14\u8BB0\u8C03\u5EA6\u5668 (\u5173)"}}});var u6,E6;var x6=C(()=>{u6={view:{workspace:"Workspace",archives:"Archives"},header:{projects:"PROJECTS",tasks:"TASKS"},search:{placeholder:"fuzzy filter"},sort:"sort",project:{label:"Project",taskSingular:"task",taskPlural:"tasks"},moveChip:" move",empty:{noMatchSearch:"No matching tasks \u2014 esc to clear.",noActiveProject:"No active tasks for this project.",noArchivedProject:"No archived tasks for this project.",noActive:"No active tasks \u2014 press n or [+] to create one.",noArchived:"No archived tasks."},archiveHint:"a to unarchive",status:{done:"done",inReview:"in review",working:"working",backlog:"\u2014",canceled:"canceled",error:"error"},activity:{rateLimited:"rate limited",permissionNeeded:"needs permission",error:"error"},subtitle:{noTracking:"no activity tracking",materializing:"materializing"},hints:{headerFolded:"\u2500\u2500 keys ?\u25B8 \u2500\u2500",headerUnfolded:"\u2500\u2500 keys ?\u25BE \u2500\u2500",fullHelp:"full help",newTask:"new task",settings:"settings",open:"open",focusEngine:"focus engine",openWorktree:"open wt",delete:"delete",views:"views",project:"project",movePanes:"move panes",detach:"tasks\u2192detach",splits:"splits",panes:"panes",reorder:"reorder",done:"done"},toast:{noDaemonWorktree:"No daemon running \u2014 can't create the worktree",noDaemonOpen:"No daemon running \u2014 can't open this task",noEditor:"No editor found \u2014 set KOBE_OPEN_EDITOR (e.g. 'code', 'cursor', 'nvim')",openWorktreeFailed:"Couldn't open worktree with {label}",sessionStartFailed:"Couldn't start this task's session",moveTaskFailed:"Couldn't move task: {message}",alreadyLatest:"Already on the latest version (v{version})",worktreeErrorNotGit:"This project isn't a git repo yet \u2014 a task needs a git branch. Run `git init` (+ a first commit) in the project, then open the task. Non-git support is coming.",worktreeErrorGeneric:"Couldn't create the worktree: {message}"}},E6={view:{workspace:"\u5DE5\u4F5C\u533A",archives:"\u5F52\u6863"},header:{projects:"\u9879\u76EE",tasks:"\u4EFB\u52A1"},search:{placeholder:"\u6A21\u7CCA\u641C\u7D22"},sort:"\u6392\u5E8F",project:{label:"\u9879\u76EE",taskSingular:"\u4E2A\u4EFB\u52A1",taskPlural:"\u4E2A\u4EFB\u52A1"},moveChip:" \u79FB\u52A8",empty:{noMatchSearch:"\u65E0\u5339\u914D\u4EFB\u52A1\u2014\u2014\u6309 esc \u6E05\u9664\u3002",noActiveProject:"\u8BE5\u9879\u76EE\u6682\u65E0\u6D3B\u8DC3\u4EFB\u52A1\u3002",noArchivedProject:"\u8BE5\u9879\u76EE\u6682\u65E0\u5F52\u6863\u4EFB\u52A1\u3002",noActive:"\u6682\u65E0\u6D3B\u8DC3\u4EFB\u52A1\u2014\u2014\u6309 n \u6216 [+] \u65B0\u5EFA\u3002",noArchived:"\u6682\u65E0\u5F52\u6863\u4EFB\u52A1\u3002"},archiveHint:"a \u53D6\u6D88\u5F52\u6863",status:{done:"\u5DF2\u5B8C\u6210",inReview:"\u5BA1\u6838\u4E2D",working:"\u8FDB\u884C\u4E2D",backlog:"\u2014",canceled:"\u5DF2\u53D6\u6D88",error:"\u9519\u8BEF"},activity:{rateLimited:"\u8BF7\u6C42\u53D7\u9650",permissionNeeded:"\u7B49\u5F85\u6388\u6743",error:"\u9519\u8BEF"},subtitle:{noTracking:"\u4E0D\u8DDF\u8E2A\u6D3B\u52A8",materializing:"\u6B63\u5728\u521B\u5EFA worktree"},hints:{headerFolded:"\u2500\u2500 \u5FEB\u6377\u952E ?\u25B8 \u2500\u2500",headerUnfolded:"\u2500\u2500 \u5FEB\u6377\u952E ?\u25BE \u2500\u2500",fullHelp:"\u5B8C\u6574\u5E2E\u52A9",newTask:"\u65B0\u5EFA\u4EFB\u52A1",settings:"\u8BBE\u7F6E",open:"\u6253\u5F00",focusEngine:"\u805A\u7126\u5F15\u64CE",openWorktree:"\u6253\u5F00 worktree",delete:"\u5220\u9664",views:"\u89C6\u56FE",project:"\u9879\u76EE",movePanes:"\u79FB\u52A8\u9762\u677F",detach:"\u4EFB\u52A1\u2192\u5206\u79BB",splits:"\u5206\u5272",panes:"\u9762\u677F",reorder:"\u91CD\u65B0\u6392\u5E8F",done:"\u5B8C\u6210"},toast:{noDaemonWorktree:"\u5B88\u62A4\u8FDB\u7A0B\u672A\u8FD0\u884C\u2014\u2014\u65E0\u6CD5\u521B\u5EFA worktree",noDaemonOpen:"\u5B88\u62A4\u8FDB\u7A0B\u672A\u8FD0\u884C\u2014\u2014\u65E0\u6CD5\u6253\u5F00\u6B64\u4EFB\u52A1",noEditor:"\u672A\u627E\u5230\u7F16\u8F91\u5668\u2014\u2014\u8BF7\u8BBE\u7F6E KOBE_OPEN_EDITOR\uFF08\u5982 'code'\u3001'cursor'\u3001'nvim'\uFF09",openWorktreeFailed:"\u65E0\u6CD5\u7528 {label} \u6253\u5F00 worktree",sessionStartFailed:"\u65E0\u6CD5\u542F\u52A8\u6B64\u4EFB\u52A1\u7684\u4F1A\u8BDD",moveTaskFailed:"\u65E0\u6CD5\u79FB\u52A8\u4EFB\u52A1\uFF1A{message}",alreadyLatest:"\u5DF2\u662F\u6700\u65B0\u7248\u672C\uFF08v{version}\uFF09",worktreeErrorNotGit:"\u8BE5\u9879\u76EE\u5C1A\u975E git \u4ED3\u5E93\u2014\u2014\u4EFB\u52A1\u9700\u8981 git \u5206\u652F\u3002\u8BF7\u5728\u9879\u76EE\u4E2D\u6267\u884C `git init`\uFF08+ \u9996\u6B21\u63D0\u4EA4\uFF09\u540E\u518D\u6253\u5F00\u4EFB\u52A1\u3002\u975E git \u9879\u76EE\u7684\u652F\u6301\u5373\u5C06\u63A8\u51FA\u3002",worktreeErrorGeneric:"\u65E0\u6CD5\u521B\u5EFA worktree\uFF1A{message}"}}});var w6,h6;var P6=C(()=>{w6={pageTitle:"KOBE UPDATE",current:"current",latest:"latest",releaseUrlUnavailable:"release URL unavailable",statusReleaseOpened:"Opened release page in your browser.",statusReleaseError:"Could not open release URL.",statusRunningUpdater:"Leaving the TUI page and running the updater in this tmux window...",loadingNotes:"Loading release notes...",notesUnavailable:"Release notes are unavailable. Use Open release to view the GitHub release page.",changesSectionHeader:"\u2500\u2500 changes from v{from} to v{to} \u2500\u2500",updateComplete:"kobe update complete. Relaunch kobe to use the new version.",updateFailed:"kobe update failed with exit code {code}.",pressAnyKey:"Press any key to close this update window.",actions:{updateNow:"Update now",openRelease:"Open release",close:"Close",closeDetail:"return to the previous tmux window"},skew:{title:"\u26A0 DAEMON OUT OF DATE",olderBuild:"an older build",hint:"daemon is {daemon} \u2014 you launched v{clientVersion}. Run `kobe daemon restart` then `kobe reload`"}},h6={pageTitle:"KOBE \u66F4\u65B0",current:"\u5F53\u524D",latest:"\u6700\u65B0",releaseUrlUnavailable:"\u53D1\u5E03\u94FE\u63A5\u4E0D\u53EF\u7528",statusReleaseOpened:"\u5DF2\u5728\u6D4F\u89C8\u5668\u4E2D\u6253\u5F00\u53D1\u5E03\u8BF4\u660E\u9875\u9762\u3002",statusReleaseError:"\u65E0\u6CD5\u6253\u5F00\u53D1\u5E03\u94FE\u63A5\u3002",statusRunningUpdater:"\u6B63\u5728\u79BB\u5F00 TUI \u9875\u9762\uFF0C\u5E76\u5728\u6B64 tmux \u7A97\u53E3\u4E2D\u8FD0\u884C\u66F4\u65B0\u7A0B\u5E8F\u2026\u2026",loadingNotes:"\u6B63\u5728\u52A0\u8F7D\u53D1\u5E03\u8BF4\u660E\u2026\u2026",notesUnavailable:"\u53D1\u5E03\u8BF4\u660E\u4E0D\u53EF\u7528\u3002\u8BF7\u4F7F\u7528\u300C\u6253\u5F00\u53D1\u5E03\u9875\u300D\u67E5\u770B GitHub \u53D1\u5E03\u9875\u9762\u3002",changesSectionHeader:"\u2500\u2500 v{from} \u81F3 v{to} \u7684\u53D8\u66F4 \u2500\u2500",updateComplete:"kobe \u66F4\u65B0\u5B8C\u6210\u3002\u8BF7\u91CD\u65B0\u542F\u52A8 kobe \u4EE5\u4F7F\u7528\u65B0\u7248\u672C\u3002",updateFailed:"kobe \u66F4\u65B0\u5931\u8D25\uFF0C\u9000\u51FA\u7801\u4E3A {code}\u3002",pressAnyKey:"\u6309\u4EFB\u610F\u952E\u5173\u95ED\u6B64\u66F4\u65B0\u7A97\u53E3\u3002",actions:{updateNow:"\u7ACB\u5373\u66F4\u65B0",openRelease:"\u6253\u5F00\u53D1\u5E03\u9875",close:"\u5173\u95ED",closeDetail:"\u8FD4\u56DE\u4E0A\u4E00\u4E2A tmux \u7A97\u53E3"},skew:{title:"\u26A0 DAEMON \u7248\u672C\u4E0D\u4E00\u81F4",olderBuild:"\u65E7\u7248\u672C\u6784\u5EFA",hint:"daemon \u8FD0\u884C\u7684\u662F {daemon}\uFF0C\u800C\u4F60\u542F\u52A8\u7684\u662F v{clientVersion}\u3002\u8BF7\u8FD0\u884C `kobe daemon restart` \u518D\u8FD0\u884C `kobe reload`"}}});function TZ(f){return typeof f==="string"&&Rz.some((J)=>J.id===f)}var bN,SN,Rz,CG,kG="en";var NG=C(()=>{B6();V6();D6();F6();g6();k6();b6();T6();x6();P6();bN={settings:S6,tasks:u6,files:j6,newTask:O6,ops:R6,update:w6,quickTask:N6,help:K6,common:Q6,keys:L6},SN={settings:I6,tasks:E6,files:W6,newTask:A6,ops:C6,update:h6,quickTask:y6,help:U6,common:H6,keys:M6},Rz=[{id:"en",label:"English"},{id:"zh",label:"\u4E2D\u6587"}],CG={en:bN,zh:SN}});function uZ(f){if(CG[f])IN("lang",f)}function _j(){return pj.lang}function v6(f,J){let Y=f;for(let z of J.split("."))if(Y&&typeof Y==="object"&&z in Y)Y=Y[z];else return;return typeof Y==="string"?Y:void 0}function TN(f,J){if(!J)return f;return f.replace(/\{(\w+)\}/g,(Y,z)=>(z in J)?String(J[z]):Y)}function F(f,J){let Y=pj.lang,z=v6(CG[Y],f)??v6(CG.en,f)??f;return TN(z,J)}function oj(f,J){let Y=pj.lang,z=(G)=>{return G.keys[f]?.[J]};return z(CG[Y])??z(CG.en)??J}var pj,IN;var G1=C(()=>{RG();NG();NG();[pj,IN]=uJ({lang:kG})});function uN(f){let J=[],Y=f.name;if(Y)J.push(Y);if(Y==="return")J.push("enter");if(Y==="enter")J.push("return");let z=[];if(f.ctrl)z.push("ctrl");if(f.meta)z.push("cmd");if(f.option)z.push("alt");if(f.shift&&Y&&Y.length>1)z.push("shift");if(z.length===0)return J;let G=`${z.join("+")}+`;return J.map((Z)=>G+Z)}function sj(f,J){if(J.defaultPrevented)return!1;let Y=uN(J);for(let z=f.length-1;z>=0;z--){let G=f[z];if(!G)continue;let Z=G.config();if(Z.enabled===!1)continue;let q=Z.bindings.find((Q)=>Y.includes(Q.key));if(q)return q.cmd(J,q.slot),J.preventDefault(),!0}return!1}function xN(){if(tj)return;let f=Y1();if(!f)throw Error("useBindings: no renderer in scope; call inside a component rendered by @opentui/solid.");tj=f.keyInput,m6=(J)=>{sj(WQ,J)},tj.on("keypress",m6)}function Df(f){xN();let J=EN++,Y={config:f,id:J};ff(()=>{f()}),WQ.push(Y),vf(()=>{let z=WQ.findIndex((G)=>G.id===J);if(z>=0)WQ.splice(z,1)})}var EN=1,WQ,tj=null,m6=null;var b1=C(()=>{P();Wf();WQ=[]});import{RGBA as c6}from"@opentui/core";function PN(f){let J=TJ(),Y=d0(),{theme:z}=Y,G=Y1(),Z=!1,q=()=>{if(f.size==="xlarge")return 140;if(f.size==="large")return 110;if(f.size==="small")return 50;return 80},Q=2,H=()=>Math.max(8,J().height-Q*2);return(()=>{var B=W("box"),V=W("box");return D(B,V),X(B,"onMouseDown",()=>{Z=!!G?.getSelection()}),X(B,"onMouseUp",()=>{if(Z){Z=!1;return}f.onClose?.()}),X(B,"alignItems","center"),X(B,"justifyContent","center"),X(B,"position","absolute"),X(B,"zIndex",3000),X(B,"left",0),X(B,"top",0),X(V,"onMouseUp",(j)=>{Z=!1,j.stopPropagation()}),X(V,"flexShrink",1),X(V,"flexGrow",0),X(V,"paddingTop",1),K(V,()=>f.children),E((j)=>{var U=J().width,L=J().height,O=Y.transparentBackground?hN:wN,M=q(),g=J().width-2,I=H(),a=z.backgroundDialog;return U!==j.e&&(j.e=X(B,"width",U,j.e)),L!==j.t&&(j.t=X(B,"height",L,j.t)),O!==j.a&&(j.a=X(B,"backgroundColor",O,j.a)),M!==j.o&&(j.o=X(V,"width",M,j.o)),g!==j.i&&(j.i=X(V,"maxWidth",g,j.i)),I!==j.n&&(j.n=X(V,"maxHeight",I,j.n)),a!==j.s&&(j.s=X(V,"backgroundColor",a,j.s)),j},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),B})()}function vN(){let[f,J]=uJ({stack:[],size:"medium"}),Y=Y1(),z=null;function G(){setTimeout(()=>{if(!z)return;if(z.isDestroyed)return;function Z(Q){for(let H of Q.getChildren()){if(H===z)return!0;if(Z(H))return!0}return!1}let q=Y?.root;if(!q)return;if(!Z(q))return;z.focus()},1)}return Df(()=>({enabled:f.stack.length>0&&!Y?.getSelection()?.getSelectedText(),bindings:[{key:"escape",cmd:()=>{if(Y?.getSelection())Y.clearSelection();f.stack.at(-1)?.onClose?.(),J("stack",f.stack.slice(0,-1)),G()}},{key:"ctrl+c",cmd:()=>{if(Y?.getSelection())Y.clearSelection();f.stack.at(-1)?.onClose?.(),J("stack",f.stack.slice(0,-1)),G()}}]})),{clear(){for(let Z of f.stack)Z.onClose?.();WX(()=>{J("size","medium"),J("stack",[])}),G()},replace(Z,q){if(f.stack.length===0)z=Y?.currentFocusedRenderable??null,z?.blur();for(let Q of f.stack)Q.onClose?.();J("size","medium"),J("stack",[{element:Z,onClose:q}])},push(Z,q){if(f.stack.length===0)z=Y?.currentFocusedRenderable??null,z?.blur();J("stack",[...f.stack,{element:Z,onClose:q}])},pop(){if(f.stack.at(-1)?.onClose?.(),J("stack",f.stack.slice(0,-1)),f.stack.length===0)G()},get stack(){return f.stack},get size(){return f.size},setSize(Z){J("size",Z)}}}function d6(f){let J=vN();return b(n6.Provider,{value:J,get children(){return[I0(()=>f.children),(()=>{var Y=W("box");return X(Y,"position","absolute"),X(Y,"zIndex",3000),K(Y,b(X0,{get when(){return J.stack.length},get children(){return b(PN,{onClose:()=>J.clear(),get size(){return J.size},get children(){return J.stack.at(-1).element()}})}})),Y})()]}})}function Pf(){let f=u1(n6);if(!f)throw Error("useDialog must be used within a DialogProvider");return f}var wN,hN,n6;var h1=C(()=>{P();P();P();P();P();P();P();P();Wf();RG();Ef();b1();wN=c6.fromInts(0,0,0,128),hN=c6.fromInts(0,0,0,64);n6=gJ()});import{spawnSync as ej}from"child_process";import*as l6 from"fs";function i6(f){return`This folder isn't a git repository yet, and a task needs a git branch to work in. To fix it, turn ${f} into a repo: git init && git add -A && git commit -m "init" \u2014 then create the task again. (Working in non-git folders is coming soon.)`}function a6(f){let J=f.trim();if(!J)return"repo path is required";let Y;try{Y=l6.statSync(J)}catch{return`path does not exist: ${J}`}if(!Y.isDirectory())return`not a directory: ${J}`;try{if(ej("git",["rev-parse","--git-dir"],{cwd:J,encoding:"utf-8",timeout:2000,stdio:["ignore","pipe","ignore"]}).status!==0)return i6(J)}catch{return i6(J)}return null}function EZ(f){if(!f)return null;try{let J=ej("git",["rev-parse","--abbrev-ref","HEAD"],{cwd:f,encoding:"utf-8",timeout:2000,stdio:["ignore","pipe","ignore"]});if(J.status!==0)return null;let Y=J.stdout.trim();if(!Y||Y==="HEAD")return null;return Y}catch{return null}}function $6(f){if(!f)return[];try{let J=ej("git",["for-each-ref","--format=%(refname:short)","refs/heads/"],{cwd:f,encoding:"utf-8",timeout:2000});if(J.status!==0)return[];return J.stdout.split(`
|
|
222
|
-
`).map((Y)=>Y.trim()).filter(Boolean).sort((Y,z)=>{let G=(Q)=>Q==="main"?0:Q==="master"?1:Q==="develop"?2:3,Z=G(Y),q=G(z);if(Z!==q)return Z-q;return Y.localeCompare(z)})}catch{return[]}}var LJ="main";var VQ=()=>{};import*as r6 from"fs";import*as KQ from"os";function W1(f){if(f==="~")return KQ.homedir();if(f.startsWith("~/"))return KQ.homedir()+f.slice(1);return f}function f8(f){if(!f)return{base:"",filter:""};let Y=W1(f==="~"?"~/":f);if(Y.endsWith("/"))return{base:Y,filter:""};let z=Y.lastIndexOf("/");if(z===-1)return{base:"",filter:Y};return{base:Y.slice(0,z+1),filter:Y.slice(z+1)}}function J8(f){if(!f)return[];try{let J=r6.readdirSync(f,{withFileTypes:!0}),Y=[];for(let z of J)if(z.isDirectory())Y.push(z.name);return Y.sort((z,G)=>z.localeCompare(G))}catch{return[]}}function Y8(f,J){let Y=J.toLowerCase(),G=Y.startsWith(".")?f:f.filter((Z)=>!Z.startsWith("."));if(!Y)return G;return G.filter((Z)=>Z.toLowerCase().startsWith(Y))}function xZ(f,J,Y){let z=J+Y;if(f.startsWith("~")){let G=KQ.homedir();if(z===G)return"~";if(z.startsWith(`${G}/`))return`~${z.slice(G.length)}`}return z}var UQ=()=>{};import{spawn as mN}from"child_process";import*as Cz from"fs";import*as wZ from"path";function p6(f){let J=f.trim().replace(/\/+$/,"");if(!J)return"";let Y=J.lastIndexOf("/"),z=J.lastIndexOf(":"),G=Math.max(Y,z);return(G>=0?J.slice(G+1):J).replace(/\.git$/i,"")}function _6(f){let J=f.trim();if(!J)return F("newTask.error.gitUrlRequired");let Y=J.includes("://"),z=J.includes("@")&&J.includes(":"),G=J.includes("/");if(!Y&&!z&&!G)return F("newTask.error.gitUrlInvalid",{url:J});return null}function o6(f,J){let Y=J.trim();if(!Y)return F("newTask.error.folderRequired");if(Y.includes("/")||Y.includes("\\"))return F("newTask.error.folderHasSeparator");let z=f.trim();if(!z)return F("newTask.error.parentRequired");let G=W1(z),Z;try{Z=Cz.statSync(G)}catch{return F("newTask.error.parentNotFound",{path:G})}if(!Z.isDirectory())return F("newTask.error.parentNotDir",{path:G});let q=wZ.join(G,Y);if(Cz.existsSync(q))return F("newTask.error.targetExists",{path:q});return null}function s6(f,J){return wZ.join(W1(f.trim()),J.trim())}function t6(f,J){let Y=J.trim();if(!Y)return J;let z=W1(f.trim());if(!z)return J;try{if(!Cz.statSync(z).isDirectory())return J}catch{return J}if(!Cz.existsSync(wZ.join(z,Y)))return Y;for(let G=2;G<1000;G++){let Z=`${Y}-${G}`;if(!Cz.existsSync(wZ.join(z,Z)))return Z}return Y}function e6(f,J,Y){return new Promise((z)=>{let G="";try{let Z=mN("git",["clone","--progress",f,J],{stdio:["ignore","ignore","pipe"]});Z.stderr?.setEncoding("utf-8"),Z.stderr?.on("data",(q)=>{if(G+=q,Y){let Q=q.split(/[\r\n]+/).filter((B)=>B.trim().length>0),H=Q[Q.length-1];if(H)Y(H)}}),Z.on("error",(q)=>{z({ok:!1,error:q.message})}),Z.on("close",(q)=>{if(q===0){z({ok:!0,path:J});return}let Q=G.split(/[\r\n]+/).filter((H)=>H.trim().length>0).pop()??`git clone exited with ${q}`;z({ok:!1,error:Q})})}catch(Z){z({ok:!1,error:Z instanceof Error?Z.message:String(Z)})}})}var f4=C(()=>{G1();UQ()});function DQ(f){if(f==="existing")return"clone";if(f==="clone")return"adopt";return"existing"}function J4(f){if(f==="existing")return"adopt";if(f==="clone")return"existing";return"clone"}function Y4(f,J){let Y=f.trim();if(J.includes(Y))return"saved";if(Y.startsWith("~"))return"browse";if(Y.includes("/"))return"browse";return"saved"}function Z1(f){return f.replace(/[\r\n]+/g,"")}function z8(f,J="existing"){if(f==="confirm")return"tabs";if(f==="tabs")return"engine";if(f==="engine")return G8(J);if(J==="clone"){if(f==="cloneUrl")return"cloneParent";if(f==="cloneParent")return"cloneFolder";if(f==="cloneFolder")return"cloneBaseRef";if(f==="cloneBaseRef")return"confirm";return"cloneUrl"}if(J==="adopt")return f==="adoptFilter"?"confirm":"adoptFilter";if(f==="repo")return"baseRef";if(f==="baseRef")return"confirm";return"repo"}function G8(f){if(f==="clone")return"cloneUrl";if(f==="adopt")return"adoptFilter";return"repo"}function z4(f,J){let Y=J.trim();if(!Y)return f;return f.filter((z)=>rZ(Y,z.path))}function G4(f,J){let Y=new Set,z=[];for(let G of[f,...J]){let Z=G.trim();if(!Z||Y.has(Z))continue;Y.add(Z),z.push(Z)}return z}function Z4(f,J){let Y=J.trim().toLowerCase();if(!Y)return f;return f.filter((z)=>z.toLowerCase().includes(Y))}function X4(f,J){let Y=J.trim().toLowerCase();if(!Y)return f;return f.filter((z)=>z.toLowerCase().includes(Y))}function hZ(f,J,Y=cN){let z=f.length;if(z<=Y)return{items:f,start:0,total:z};let G=Math.floor(Y/2),Z=Math.max(0,J-G);if(Z+Y>z)Z=z-Y;return{items:f.slice(Z,Z+Y),start:Z,total:z}}function EJ(f,J){if(J<=0)return 0;return Math.max(0,Math.min(J-1,f))}function q4(f,J,Y){let z=J[Y];if(z)return z;return f.trim()||LJ}var cN=8;var Z8=C(()=>{hQ();VQ()});import{TextAttributes as _1}from"@opentui/core";function Q4(f){let J=Pf(),{theme:Y}=d0(),[z,G]=r("existing"),Z=()=>{let y=f.availableVendors;return y&&y.length>0?y:mf},q=(()=>{let y=Z(),A0=f.defaultVendor??"claude";return y.includes(A0)?A0:y[0]??"claude"})(),[Q,H]=r(q),[B,V]=r("tabs"),[j,U]=r(f.defaultRepo),[L,O]=r(EZ(W1(f.defaultRepo.trim()))??LJ),[M,g]=r(!1),[I,a]=r(""),[N,A]=r(f.defaultCloneParent?.trim()?f.defaultCloneParent:"~/"),[R,S]=r(""),[_,z0]=r(!1),[e,Y0]=r(LJ),[T,Q0]=r(!1),[t,V0]=r(""),C0=K0(()=>G4(f.defaultRepo,f.savedRepos)),$=K0(()=>Y4(j(),C0())),x=K0(()=>f8(j())),f0=K0(()=>J8(x().base)),u=K0(()=>Y8(f0(),x().filter)),G0=K0(()=>Z4(C0(),j())),w=K0(()=>$()==="browse"?u():G0()),[n,q0]=r(0),W0=K0(()=>hZ(w(),n())),[H0,k0]=r(!1),x0=K0(()=>$6(W1(j().trim()))),y0=K0(()=>X4(x0(),L())),[Gf,m]=r(0),L0=K0(()=>hZ(y0(),Gf())),s=K0(()=>f8(N())),R0=K0(()=>J8(s().base)),i0=K0(()=>Y8(R0(),s().filter)),[$0,w0]=r(0),v=K0(()=>hZ(i0(),$0())),[J0,M0]=r(!1),[_0,e0]=r(""),[T0,Xf]=r(0),[Qf,Rf]=r(new Set),[o]=jX(()=>z()==="adopt"?W1(j().trim()):null,async(y)=>f.discoverAdoptable?await f.discoverAdoptable(y):[]),p=K0(()=>z4(o()??[],_0())),Z0=K0(()=>hZ(p().map((y)=>y.path),T0())),D0=K0(()=>{let y=Z0();return p().slice(y.start,y.start+y.items.length)});ff(()=>{p(),Xf((y)=>EJ(y,p().length))});function j0(y){Rf((A0)=>{let m0=new Set(A0);if(m0.has(y))m0.delete(y);else m0.add(y);return m0})}function k(){let y=p()[T0()];if(y)j0(y.path)}ff(()=>{y0(),m(0)}),ff(()=>{let y=W1(j().trim());if(!y)return;if(M())return;let A0=EZ(y);if(A0)O(A0)}),ff(()=>{w(),q0(0)}),ff(()=>{i0(),w0(0)}),ff(()=>{let y=I(),A0=N();if(_())return;let m0=p6(y);S(t6(A0,m0))});let[N0,p0]=r(null);ff(()=>{j(),I(),N(),R(),_0(),p0(null)});function b0(){let y=W1(j().trim());if(!y)return;let A0=a6(y);if(A0){p0(A0),V("repo");return}let m0=L().trim()||LJ;f.onSubmit({repo:y,baseRef:m0,vendor:Q()}),J.clear()}async function U0(){if(T())return;let y=_6(I());if(y){p0(y),V("cloneUrl");return}let A0=o6(N(),R());if(A0){p0(A0),V(R().trim()?"cloneParent":"cloneFolder");return}let m0=s6(N(),R());Q0(!0),V0(F("newTask.clone.progressInto",{target:m0}));let u0=await e6(I().trim(),m0,(tf)=>{V0(tf)});if(Q0(!1),!u0.ok){p0(F("newTask.error.cloneFailed",{error:u0.error})),V("cloneUrl");return}let X1=e().trim()||LJ,V1=W1(N().trim());f.onSubmit({repo:u0.path,baseRef:X1,vendor:Q(),cloned:{parentDir:V1}}),J.clear()}function h0(){let y=p();if(y.length===0){p0(F("newTask.error.noAdoptable"));return}let A0=Qf(),m0=A0.size>0?y.filter((u0)=>A0.has(u0.path)):y.slice(T0(),T0()+1);if(m0.length===0)return;f.onSubmit({mode:"adopt",repo:W1(j().trim()),vendor:Q(),adopt:m0.map((u0)=>({worktreePath:u0.path,branch:u0.branch}))}),J.clear()}function O0(){if(z()==="clone"){U0();return}if(z()==="adopt"){h0();return}b0()}function r0(y){if(T())return;if(y===z())return;G(y),V(G8(y)),p0(null)}function l0(y){if(T())return;let A0=y===1?DQ(z()):J4(z());if(A0===z())return;G(A0),p0(null),V("tabs")}function Yf(y){H((A0)=>y===1?GY(Z(),A0):PQ(Z(),A0))}function S0(){if(!j().trim()&&$()==="saved"){let A0=w()[0];if(A0){U(A0),V("baseRef");return}}if($()==="browse"){let m0=u()[n()],u0=x();if(m0){U(xZ(j(),u0.base,m0)),q0(0),k0(!0),V("baseRef");return}V("baseRef");return}let y=w()[n()];if(y){U(y),V("baseRef");return}V("baseRef")}function xf(y){let m0=w()[y];if(!m0)return;if($()==="browse"){let u0=x();U(xZ(j(),u0.base,m0)),q0(y),k0(!0),V("baseRef");return}U(m0),q0(y),V("baseRef")}function df(){let A0=i0()[$0()],m0=s();if(A0){A(xZ(N(),m0.base,A0)),w0(0),M0(!0),V("cloneFolder");return}V("cloneFolder")}function d(y){let m0=i0()[y];if(!m0)return;let u0=s();A(xZ(N(),u0.base,m0)),w0(y),M0(!0),V("cloneFolder")}let g0=()=>{let y=p();if(y.length===0)return;let A0=y.every((m0)=>Qf().has(m0.path));Rf(A0?new Set:new Set(y.map((m0)=>m0.path)))};Df(()=>({bindings:[{key:"tab",cmd:()=>V((y)=>z8(y,z()))},{key:"ctrl+]",cmd:()=>r0(DQ(z()))},{key:"ctrl+[",cmd:()=>r0(DQ(z()))},{key:"ctrl+e",cmd:()=>H((y)=>GY(Z(),y))},{key:"up",cmd:()=>{if(T())return;if(z()==="existing"&&B()==="repo"){let y=w();if(y.length===0)return;q0(EJ(n()-1,y.length));return}if(z()==="existing"&&B()==="baseRef"){let y=y0();if(y.length===0)return;m(EJ(Gf()-1,y.length));return}if(z()==="clone"&&B()==="cloneParent"){let y=i0();if(y.length===0)return;w0(EJ($0()-1,y.length));return}if(z()==="adopt"){let y=p();if(y.length===0)return;Xf(EJ(T0()-1,y.length))}}},{key:"down",cmd:()=>{if(T())return;if(z()==="existing"&&B()==="repo"){let y=w();if(y.length===0)return;q0(EJ(n()+1,y.length));return}if(z()==="existing"&&B()==="baseRef"){let y=y0();if(y.length===0)return;m(EJ(Gf()+1,y.length));return}if(z()==="clone"&&B()==="cloneParent"){let y=i0();if(y.length===0)return;w0(EJ($0()+1,y.length));return}if(z()==="adopt"){let y=p();if(y.length===0)return;Xf(EJ(T0()+1,y.length))}}},...B()==="tabs"||B()==="engine"?[{key:"left",cmd:()=>B()==="tabs"?l0(-1):Yf(-1)},{key:"right",cmd:()=>B()==="tabs"?l0(1):Yf(1)},{key:"return",cmd:()=>V((y)=>z8(y,z()))}]:[],...z()==="adopt"?[{key:"ctrl+a",cmd:g0}]:[]]})),Df(()=>({enabled:B()==="confirm"&&!T(),bindings:[{key:"return",cmd:()=>O0()}]}));let Kf=(y)=>B()===y?Y.primary:Y.textMuted,qf=(y)=>B()===y?_1.BOLD|_1.UNDERLINE:void 0,Of=(y,A0)=>y?A0?_1.BOLD|_1.UNDERLINE:_1.BOLD:void 0;return(()=>{var y=W("box"),A0=W("box"),m0=W("text"),u0=W("box"),X1=W("box"),V1=W("text"),tf=W("box"),P1=W("box"),xJ=W("text"),M1=W("box"),yz=W("text"),YY=W("text");return D(y,A0),D(y,u0),D(y,M1),X(y,"paddingLeft",2),X(y,"paddingRight",2),X(y,"gap",0),D(A0,m0),X(A0,"flexDirection","row"),K(m0,()=>F("newTask.title")),D(u0,X1),X(u0,"gap",1),X(u0,"paddingTop",1),X(u0,"paddingBottom",1),K(u0,()=>{let c=()=>B()==="tabs",i=(l)=>l?Y.primary:Y.textMuted;return(()=>{var l=W("box"),h=W("text"),c0=W("text"),P0=W("text");return D(l,h),D(l,c0),D(l,P0),X(l,"flexDirection","row"),X(l,"gap",2),X(h,"onMouseUp",()=>r0("existing")),K(h,(()=>{var F0=I0(()=>z()==="existing");return()=>F0()?`\u25B8 ${F("newTask.tabs.existing")}`:` ${F("newTask.tabs.existing")}`})()),X(c0,"onMouseUp",()=>r0("clone")),K(c0,(()=>{var F0=I0(()=>z()==="clone");return()=>F0()?`\u25B8 ${F("newTask.tabs.clone")}`:` ${F("newTask.tabs.clone")}`})()),X(P0,"onMouseUp",()=>r0("adopt")),K(P0,(()=>{var F0=I0(()=>z()==="adopt");return()=>F0()?`\u25B8 ${F("newTask.tabs.adopt")}`:` ${F("newTask.tabs.adopt")}`})()),E((F0)=>{var n0=i(z()==="existing"),Hf=Of(z()==="existing",c()),Lf=i(z()==="clone"),q1=Of(z()==="clone",c()),s1=i(z()==="adopt"),zY=Of(z()==="adopt",c());return n0!==F0.e&&(F0.e=X(h,"fg",n0,F0.e)),Hf!==F0.t&&(F0.t=X(h,"attributes",Hf,F0.t)),Lf!==F0.a&&(F0.a=X(c0,"fg",Lf,F0.a)),q1!==F0.o&&(F0.o=X(c0,"attributes",q1,F0.o)),s1!==F0.i&&(F0.i=X(P0,"fg",s1,F0.i)),zY!==F0.n&&(F0.n=X(P0,"attributes",zY,F0.n)),F0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),l})()},X1),D(X1,V1),D(X1,tf),X(X1,"gap",0),K(V1,()=>F("newTask.field.engine")),D(tf,P1),D(tf,xJ),X(tf,"flexDirection","row"),X(tf,"gap",2),K(tf,b(Zf,{get each(){return Z()},children:(c)=>{let i=()=>Q()===c;return(()=>{var l=W("text");return X(l,"onMouseUp",()=>H(c)),K(l,()=>i()?"\u25B8 ":" ",null),K(l,c,null),E((h)=>{var c0=i()?Y.primary:Y.textMuted,P0=i()?_1.BOLD:void 0;return c0!==h.e&&(h.e=X(l,"fg",c0,h.e)),P0!==h.t&&(h.t=X(l,"attributes",P0,h.t)),h},{e:void 0,t:void 0}),l})()}}),P1),X(P1,"flexGrow",1),K(xJ,()=>F("newTask.hint.engineCycle")),K(u0,b(X0,{get when(){return z()==="existing"},get children(){return[(()=>{var c=W("box"),i=W("text"),l=W("input");return D(c,i),D(c,l),X(c,"gap",0),K(i,()=>F("newTask.field.repo")),X(l,"onInput",(h)=>{k0(!1),U(Z1(h))}),X(l,"onSubmit",()=>{if(!j().trim())return;S0()}),E((h)=>{var c0=Kf("repo"),P0=qf("repo"),F0=j(),n0=f.defaultRepo,Hf=B()==="repo";return c0!==h.e&&(h.e=X(i,"fg",c0,h.e)),P0!==h.t&&(h.t=X(i,"attributes",P0,h.t)),F0!==h.a&&(h.a=X(l,"value",F0,h.a)),n0!==h.o&&(h.o=X(l,"placeholder",n0,h.o)),Hf!==h.i&&(h.i=X(l,"focused",Hf,h.i)),h},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),c})(),b(X0,{get when(){return I0(()=>B()==="repo"&&w().length>0)()&&!H0()},get children(){var c=W("box");return X(c,"gap",0),X(c,"paddingLeft",2),K(c,b(X0,{get when(){return W0().start>0},get children(){var i=W("text");return X(i,"wrapMode","none"),K(i,()=>F("newTask.picker.moreAbove",{count:W0().start})),E((l)=>X(i,"fg",Y.textMuted,l)),i}}),null),K(c,b(Zf,{get each(){return W0().items},children:(i,l)=>{let h=()=>W0().start+l(),c0=()=>h()===n(),P0=()=>$()==="saved"&&i===f.defaultRepo,F0=()=>$()==="saved"&&j().trim()===i,n0=()=>$()==="browse"?"/":"",Hf=()=>P0()?` ${F("newTask.hint.currentDir")}`:"";return(()=>{var Lf=W("text");return X(Lf,"wrapMode","none"),X(Lf,"onMouseUp",()=>xf(h())),K(Lf,()=>c0()?"\u25B8 ":" ",null),K(Lf,i,null),K(Lf,n0,null),K(Lf,Hf,null),E((q1)=>{var s1=c0()?Y.primary:F0()?Y.accent:Y.textMuted,zY=c0()?_1.BOLD:void 0;return s1!==q1.e&&(q1.e=X(Lf,"fg",s1,q1.e)),zY!==q1.t&&(q1.t=X(Lf,"attributes",zY,q1.t)),q1},{e:void 0,t:void 0}),Lf})()}}),null),K(c,b(X0,{get when(){return W0().start+W0().items.length<W0().total},get children(){var i=W("text");return X(i,"wrapMode","none"),K(i,()=>F("newTask.picker.moreBelow",{count:W0().total-W0().start-W0().items.length})),E((l)=>X(i,"fg",Y.textMuted,l)),i}}),null),c}}),(()=>{var c=W("box"),i=W("text"),l=W("input");return D(c,i),D(c,l),X(c,"gap",0),K(i,()=>F("newTask.field.fromBranch")),X(l,"placeholder",LJ),X(l,"onInput",(h)=>{g(!0),O(Z1(h))}),X(l,"onSubmit",()=>{O(q4(L(),y0(),Gf())),g(!0),b0()}),E((h)=>{var c0=Kf("baseRef"),P0=qf("baseRef"),F0=L(),n0=B()==="baseRef";return c0!==h.e&&(h.e=X(i,"fg",c0,h.e)),P0!==h.t&&(h.t=X(i,"attributes",P0,h.t)),F0!==h.a&&(h.a=X(l,"value",F0,h.a)),n0!==h.o&&(h.o=X(l,"focused",n0,h.o)),h},{e:void 0,t:void 0,a:void 0,o:void 0}),c})(),b(X0,{get when(){return I0(()=>B()==="baseRef"&&y0().length===0)()&&N0()==null},get children(){var c=W("box"),i=W("text");return D(c,i),X(c,"gap",0),X(c,"paddingLeft",2),X(c,"paddingBottom",1),X(i,"wrapMode","none"),K(i,(()=>{var l=I0(()=>x0().length===0);return()=>l()?F("newTask.hint.noBranchesFound"):F("newTask.hint.noMatchBranch")})()),E((l)=>X(i,"fg",Y.textMuted,l)),c}}),b(X0,{get when(){return I0(()=>B()==="baseRef")()&&y0().length>0},get children(){var c=W("box");return X(c,"gap",0),X(c,"paddingLeft",2),X(c,"paddingBottom",1),K(c,b(X0,{get when(){return L0().start>0},get children(){var i=W("text");return X(i,"wrapMode","none"),K(i,()=>F("newTask.picker.moreAbove",{count:L0().start})),E((l)=>X(i,"fg",Y.textMuted,l)),i}}),null),K(c,b(Zf,{get each(){return L0().items},children:(i,l)=>{let h=()=>L0().start+l(),c0=()=>h()===Gf(),P0=()=>L().trim()===i;return(()=>{var F0=W("text");return X(F0,"wrapMode","none"),X(F0,"onMouseUp",()=>{O(i),g(!0),m(h()),V("confirm")}),K(F0,()=>c0()?"\u25B8 ":" ",null),K(F0,i,null),E((n0)=>{var Hf=c0()?Y.primary:P0()?Y.accent:Y.textMuted,Lf=c0()?_1.BOLD:void 0;return Hf!==n0.e&&(n0.e=X(F0,"fg",Hf,n0.e)),Lf!==n0.t&&(n0.t=X(F0,"attributes",Lf,n0.t)),n0},{e:void 0,t:void 0}),F0})()}}),null),K(c,b(X0,{get when(){return L0().start+L0().items.length<L0().total},get children(){var i=W("text");return X(i,"wrapMode","none"),K(i,()=>F("newTask.picker.moreBelow",{count:L0().total-L0().start-L0().items.length})),E((l)=>X(i,"fg",Y.textMuted,l)),i}}),null),c}})]}}),null),K(u0,b(X0,{get when(){return z()==="clone"},get children(){return[(()=>{var c=W("box"),i=W("text"),l=W("input");return D(c,i),D(c,l),X(c,"gap",0),K(i,()=>F("newTask.field.gitUrl")),X(l,"placeholder","https://github.com/user/repo.git"),X(l,"onInput",(h)=>a(Z1(h))),X(l,"onSubmit",()=>{if(!I().trim())return;V("cloneParent")}),E((h)=>{var c0=Kf("cloneUrl"),P0=qf("cloneUrl"),F0=I(),n0=B()==="cloneUrl";return c0!==h.e&&(h.e=X(i,"fg",c0,h.e)),P0!==h.t&&(h.t=X(i,"attributes",P0,h.t)),F0!==h.a&&(h.a=X(l,"value",F0,h.a)),n0!==h.o&&(h.o=X(l,"focused",n0,h.o)),h},{e:void 0,t:void 0,a:void 0,o:void 0}),c})(),(()=>{var c=W("box"),i=W("text"),l=W("input");return D(c,i),D(c,l),X(c,"gap",0),K(i,()=>F("newTask.field.parentDir")),X(l,"placeholder","~/"),X(l,"onInput",(h)=>{M0(!1),A(Z1(h))}),X(l,"onSubmit",()=>df()),E((h)=>{var c0=Kf("cloneParent"),P0=qf("cloneParent"),F0=N(),n0=B()==="cloneParent";return c0!==h.e&&(h.e=X(i,"fg",c0,h.e)),P0!==h.t&&(h.t=X(i,"attributes",P0,h.t)),F0!==h.a&&(h.a=X(l,"value",F0,h.a)),n0!==h.o&&(h.o=X(l,"focused",n0,h.o)),h},{e:void 0,t:void 0,a:void 0,o:void 0}),c})(),b(X0,{get when(){return B()==="cloneParent"},get children(){var c=W("box"),i=W("text");return D(c,i),X(c,"paddingLeft",2),X(i,"wrapMode","none"),K(i,()=>F("newTask.hint.remembered")),E((l)=>X(i,"fg",Y.textMuted,l)),c}}),b(X0,{get when(){return I0(()=>B()==="cloneParent"&&i0().length>0)()&&!J0()},get children(){var c=W("box");return X(c,"gap",0),X(c,"paddingLeft",2),K(c,b(X0,{get when(){return v().start>0},get children(){var i=W("text");return X(i,"wrapMode","none"),K(i,()=>F("newTask.picker.moreAbove",{count:v().start})),E((l)=>X(i,"fg",Y.textMuted,l)),i}}),null),K(c,b(Zf,{get each(){return v().items},children:(i,l)=>{let h=()=>v().start+l(),c0=()=>h()===$0();return(()=>{var P0=W("text"),F0=E0("/");return D(P0,F0),X(P0,"wrapMode","none"),X(P0,"onMouseUp",()=>d(h())),K(P0,()=>c0()?"\u25B8 ":" ",F0),K(P0,i,F0),E((n0)=>{var Hf=c0()?Y.primary:Y.textMuted,Lf=c0()?_1.BOLD:void 0;return Hf!==n0.e&&(n0.e=X(P0,"fg",Hf,n0.e)),Lf!==n0.t&&(n0.t=X(P0,"attributes",Lf,n0.t)),n0},{e:void 0,t:void 0}),P0})()}}),null),K(c,b(X0,{get when(){return v().start+v().items.length<v().total},get children(){var i=W("text");return X(i,"wrapMode","none"),K(i,()=>F("newTask.picker.moreBelow",{count:v().total-v().start-v().items.length})),E((l)=>X(i,"fg",Y.textMuted,l)),i}}),null),c}}),(()=>{var c=W("box"),i=W("text"),l=W("input");return D(c,i),D(c,l),X(c,"gap",0),K(i,()=>F("newTask.field.folderName")),X(l,"onInput",(h)=>{z0(!0),S(Z1(h))}),X(l,"onSubmit",()=>V("cloneBaseRef")),E((h)=>{var c0=Kf("cloneFolder"),P0=qf("cloneFolder"),F0=R(),n0=F("newTask.placeholder.folderName"),Hf=B()==="cloneFolder";return c0!==h.e&&(h.e=X(i,"fg",c0,h.e)),P0!==h.t&&(h.t=X(i,"attributes",P0,h.t)),F0!==h.a&&(h.a=X(l,"value",F0,h.a)),n0!==h.o&&(h.o=X(l,"placeholder",n0,h.o)),Hf!==h.i&&(h.i=X(l,"focused",Hf,h.i)),h},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),c})(),(()=>{var c=W("box"),i=W("text"),l=W("input");return D(c,i),D(c,l),X(c,"gap",0),K(i,()=>F("newTask.field.baseBranch")),X(l,"placeholder",LJ),X(l,"onInput",(h)=>Y0(Z1(h))),X(l,"onSubmit",()=>void U0()),E((h)=>{var c0=Kf("cloneBaseRef"),P0=qf("cloneBaseRef"),F0=e(),n0=B()==="cloneBaseRef";return c0!==h.e&&(h.e=X(i,"fg",c0,h.e)),P0!==h.t&&(h.t=X(i,"attributes",P0,h.t)),F0!==h.a&&(h.a=X(l,"value",F0,h.a)),n0!==h.o&&(h.o=X(l,"focused",n0,h.o)),h},{e:void 0,t:void 0,a:void 0,o:void 0}),c})(),b(X0,{get when(){return T()},get children(){var c=W("box"),i=W("text");return D(c,i),X(c,"gap",0),X(c,"paddingLeft",2),X(i,"wrapMode","none"),K(i,()=>t()||F("newTask.clone.progressFallback")),E((l)=>X(i,"fg",Y.textMuted,l)),c}})]}}),null),K(u0,b(X0,{get when(){return z()==="adopt"},get children(){return[(()=>{var c=W("box"),i=W("text"),l=W("input");return D(c,i),D(c,l),X(c,"gap",0),K(i,()=>F("newTask.field.adoptFilter")),X(l,"onInput",(h)=>e0(Z1(h))),X(l,"onSubmit",()=>k()),E((h)=>{var c0=Kf("adoptFilter"),P0=qf("adoptFilter"),F0=_0(),n0=F("newTask.placeholder.adoptFilter"),Hf=B()==="adoptFilter";return c0!==h.e&&(h.e=X(i,"fg",c0,h.e)),P0!==h.t&&(h.t=X(i,"attributes",P0,h.t)),F0!==h.a&&(h.a=X(l,"value",F0,h.a)),n0!==h.o&&(h.o=X(l,"placeholder",n0,h.o)),Hf!==h.i&&(h.i=X(l,"focused",Hf,h.i)),h},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),c})(),(()=>{var c=W("box"),i=W("text");return D(c,i),X(c,"paddingLeft",2),X(i,"wrapMode","none"),K(i,()=>F("newTask.adopt.repoLine",{path:W1(j().trim())||F("newTask.adopt.repoNone")})),E((l)=>X(i,"fg",Y.textMuted,l)),c})(),b(X0,{get when(){return o.loading},get children(){var c=W("box"),i=W("text");return D(c,i),X(c,"paddingLeft",2),X(i,"wrapMode","none"),K(i,()=>F("newTask.hint.scanningWorktrees")),E((l)=>X(i,"fg",Y.textMuted,l)),c}}),b(X0,{get when(){return I0(()=>!o.loading)()&&p().length===0},get children(){var c=W("box"),i=W("text");return D(c,i),X(c,"paddingLeft",2),X(i,"wrapMode","none"),K(i,(()=>{var l=I0(()=>(o()??[]).length===0);return()=>l()?F("newTask.adopt.noUnlinked"):F("newTask.adopt.noMatch")})()),E((l)=>X(i,"fg",Y.textMuted,l)),c}}),b(X0,{get when(){return p().length>0},get children(){var c=W("box"),i=W("text");return D(c,i),X(c,"gap",0),X(c,"paddingLeft",2),K(c,b(X0,{get when(){return Z0().start>0},get children(){var l=W("text");return X(l,"wrapMode","none"),K(l,()=>F("newTask.picker.moreAbove",{count:Z0().start})),E((h)=>X(l,"fg",Y.textMuted,h)),l}}),i),K(c,b(Zf,{get each(){return D0()},children:(l,h)=>{let c0=()=>Z0().start+h(),P0=()=>c0()===T0(),F0=()=>Qf().has(l.path),n0=()=>[l.dirty?"dirty":"",l.kobeManaged?"":"external"].filter(Boolean).join(",");return(()=>{var Hf=W("text");return X(Hf,"wrapMode","none"),X(Hf,"onMouseUp",()=>{Xf(c0()),j0(l.path)}),K(Hf,()=>P0()?"\u25B8 ":" ",null),K(Hf,()=>F0()?"[x] ":"[ ] ",null),K(Hf,()=>l.branch,null),K(Hf,(()=>{var Lf=I0(()=>!!n0());return()=>Lf()?` (${n0()})`:""})(),null),E((Lf)=>{var q1=P0()?Y.primary:F0()?Y.accent:Y.textMuted,s1=P0()?_1.BOLD:void 0;return q1!==Lf.e&&(Lf.e=X(Hf,"fg",q1,Lf.e)),s1!==Lf.t&&(Lf.t=X(Hf,"attributes",s1,Lf.t)),Lf},{e:void 0,t:void 0}),Hf})()}}),i),K(c,b(X0,{get when(){return Z0().start+Z0().items.length<Z0().total},get children(){var l=W("text");return X(l,"wrapMode","none"),K(l,()=>F("newTask.picker.moreBelow",{count:Z0().total-Z0().start-Z0().items.length})),E((h)=>X(l,"fg",Y.textMuted,h)),l}}),i),X(i,"wrapMode","none"),K(i,(()=>{var l=I0(()=>Qf().size>0);return()=>l()?F("newTask.adopt.hintSelected",{count:Qf().size}):F("newTask.adopt.hintDefault")})()),E((l)=>X(i,"fg",Y.textMuted,l)),c}})]}}),null),K(u0,b(X0,{get when(){return N0()},get children(){var c=W("text"),i=E0("\u203B ");return D(c,i),X(c,"wrapMode","word"),K(c,N0,null),E((l)=>X(c,"fg",Y.error,l)),c}}),null),D(M1,yz),D(M1,YY),X(M1,"flexDirection","row"),X(M1,"justifyContent","space-between"),X(M1,"alignItems","center"),X(M1,"paddingTop",1),X(M1,"paddingBottom",1),K(yz,()=>F("newTask.hint.legend")),X(YY,"onMouseUp",()=>O0()),K(YY,(()=>{var c=I0(()=>!!T());return()=>c()?F("newTask.button.cloning"):I0(()=>B()==="confirm")()?F("newTask.button.createFocused"):F("newTask.button.create")})()),E((c)=>{var i=_1.BOLD,l=Y.text,h=Kf("engine"),c0=qf("engine"),P0=Y.textMuted,F0=Y.textMuted,n0=B()==="confirm"?Y.primary:Y.text,Hf=B()==="confirm"?_1.BOLD:void 0;return i!==c.e&&(c.e=X(m0,"attributes",i,c.e)),l!==c.t&&(c.t=X(m0,"fg",l,c.t)),h!==c.a&&(c.a=X(V1,"fg",h,c.a)),c0!==c.o&&(c.o=X(V1,"attributes",c0,c.o)),P0!==c.i&&(c.i=X(xJ,"fg",P0,c.i)),F0!==c.n&&(c.n=X(yz,"fg",F0,c.n)),n0!==c.s&&(c.s=X(YY,"fg",n0,c.s)),Hf!==c.h&&(c.h=X(YY,"attributes",Hf,c.h)),c},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0}),y})()}var H4=C(()=>{P();P();P();P();P();P();P();P();G1();K1();Wf();Ef();VQ();b1();UQ();h1();f4();Z8()});function nN(f,J,Y,z){return new Promise((G)=>{f.replace(()=>b(Q4,{defaultRepo:J,savedRepos:Y,get defaultCloneParent(){return z?.defaultCloneParent},get defaultVendor(){return z?.defaultVendor},get availableVendors(){return z?.availableVendors},get discoverAdoptable(){return z?.discoverAdoptable},onSubmit:(Z)=>G(Z),onCancel:()=>G(void 0)}),()=>G(void 0)),f.setSize("medium")})}var LQ;var yG=C(()=>{P();H4();Z8();LQ={show:nN}});function B4(f,J){return[{key:"tab",cmd:()=>J.cycleField(1)},{key:"shift+tab",cmd:()=>J.cycleField(-1)},{key:"ctrl+e",cmd:()=>J.stepEngine(1)},...f==="engine"?[{key:"left",cmd:()=>J.stepEngine(-1)},{key:"right",cmd:()=>J.stepEngine(1)},{key:"return",cmd:()=>J.commit()}]:[]]}import{TextAttributes as j4}from"@opentui/core";function dN(f){let J=Pf(),{theme:Y}=d0(),[z,G]=r("prompt"),[Z,q]=r(""),[Q,H]=r(f.defaultVendor),[B,V]=r(f.defaultBaseRef);function j(M){let g=MQ.indexOf(z());G(MQ[(g+M+MQ.length)%MQ.length]??"prompt")}function U(M){let g=f.engines;if(g.length===0)return;if(M>0){H((a)=>GY(g,a));return}let I=Math.max(0,g.indexOf(Q()));H(g[(I-1+g.length)%g.length]??Q())}function L(){let M=Z().trim();if(!M){G("prompt");return}f.onSubmit({prompt:M,vendor:Q(),baseRef:B().trim()||f.defaultBaseRef}),J.clear()}Df(()=>({enabled:!0,bindings:B4(z(),{cycleField:j,stepEngine:U,commit:L})}));let O=(M)=>z()===M?Y.accent:Y.textMuted;return(()=>{var M=W("box"),g=W("box"),I=W("text"),a=W("text"),N=W("box"),A=W("text"),R=W("input"),S=W("box"),_=W("text"),z0=W("box"),e=W("text"),Y0=W("input"),T=W("box"),Q0=W("text");return D(M,g),D(M,N),D(M,S),D(M,z0),D(M,T),X(M,"paddingLeft",2),X(M,"paddingRight",2),X(M,"gap",1),D(g,I),D(g,a),X(g,"flexDirection","row"),X(g,"justifyContent","space-between"),K(I,()=>F("quickTask.title",{repoLabel:f.repoLabel})),X(a,"onMouseUp",()=>f.onCancel()),K(a,()=>F("quickTask.esc")),D(N,A),D(N,R),X(N,"gap",0),K(A,()=>F("quickTask.promptLabel")),X(R,"onInput",(t)=>q(Z1(t))),X(R,"onSubmit",()=>L()),D(S,_),X(S,"flexDirection","row"),X(S,"gap",2),K(_,()=>F("quickTask.engineLabel")),K(S,b(Zf,{get each(){return f.engines},children:(t)=>(()=>{var V0=W("text");return X(V0,"onMouseUp",()=>{H(t),G("engine")}),K(V0,()=>f.engineLabel(t)),E((C0)=>{var $=Q()===t?Y.primary:Y.textMuted,x=Q()===t?j4.BOLD:void 0;return $!==C0.e&&(C0.e=X(V0,"fg",$,C0.e)),x!==C0.t&&(C0.t=X(V0,"attributes",x,C0.t)),C0},{e:void 0,t:void 0}),V0})()}),null),D(z0,e),D(z0,Y0),X(z0,"gap",0),K(e,()=>F("quickTask.branchLabel")),X(Y0,"onInput",(t)=>V(Z1(t))),X(Y0,"onSubmit",()=>L()),D(T,Q0),X(T,"paddingBottom",1),K(Q0,()=>F("quickTask.legend")),E((t)=>{var V0=j4.BOLD,C0=Y.text,$=Y.textMuted,x=O("prompt"),f0=Z(),u=F("quickTask.promptPlaceholder"),G0=z()==="prompt",w=O("engine"),n=O("branch"),q0=B(),W0=f.defaultBaseRef,H0=z()==="branch",k0=Y.textMuted;return V0!==t.e&&(t.e=X(I,"attributes",V0,t.e)),C0!==t.t&&(t.t=X(I,"fg",C0,t.t)),$!==t.a&&(t.a=X(a,"fg",$,t.a)),x!==t.o&&(t.o=X(A,"fg",x,t.o)),f0!==t.i&&(t.i=X(R,"value",f0,t.i)),u!==t.n&&(t.n=X(R,"placeholder",u,t.n)),G0!==t.s&&(t.s=X(R,"focused",G0,t.s)),w!==t.h&&(t.h=X(_,"fg",w,t.h)),n!==t.r&&(t.r=X(e,"fg",n,t.r)),q0!==t.d&&(t.d=X(Y0,"value",q0,t.d)),W0!==t.l&&(t.l=X(Y0,"placeholder",W0,t.l)),H0!==t.u&&(t.u=X(Y0,"focused",H0,t.u)),k0!==t.c&&(t.c=X(Q0,"fg",k0,t.c)),t},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0}),M})()}function iN(f,J){return new Promise((Y)=>{f.replace(()=>b(dN,rU(J,{onSubmit:(z)=>Y(z),onCancel:()=>Y(void 0)})),()=>Y(void 0)),f.setSize("medium")})}var MQ,W4;var V4=C(()=>{P();P();P();P();P();P();P();Wf();K1();Ef();G1();b1();h1();yG();MQ=["prompt","engine","branch"];W4={show:iN}});async function K4(f={}){let J=f.logTag??"orch-connect",Y=f.connect??p1,z=null;try{let G=await Y();if(!G)return nJ(J,"no daemon running \u2014 caller degrades"),null;return z=new j1(G,{...f.orchestratorOptions,channels:f.channels}),await z.init(),z}catch(G){return BY(J,G),z?.dispose(),null}}var U4=C(()=>{_Y();y1();EY()});function D4(f){let[J,Y]=r(f.initial??"sidebar"),[z,G]=r(0),Z=Y1();function q(j){if(G((L)=>L+1),J()===j)return;let U=Z?.currentFocusedRenderable;if(U&&!U.isDestroyed)try{U.blur()}catch{}Y(j)}function Q(j){let L=(FQ.indexOf(J())+j+FQ.length)%FQ.length;q(FQ[L])}let H=new Map;function B(j){let U=H.get(j);if(!U)U=()=>J()===j,H.set(j,U);return U}let V={focused:J,is:B,setFocused:q,cycle:Q,refocusTick:z};return b(lN.Provider,{value:V,get children(){return f.children}})}var FQ,lN;var L4=C(()=>{P();P();Wf();FQ=["sidebar","workspace","files","terminal"],lN=gJ(null)});function M4(){for(let f of xY){let J=aN.get(f.id);if(!J)continue;let Y=f;Y.keys=[...J.keys],Y.hint=J.hint?{...J.hint}:void 0}}function F4(){$N((f)=>f+1)}function q8(f){return rN.get(f)}function pN(f){return q8(f)?.keys??[]}function wY(f){let J=[];for(let Y in f){let z=f[Y];if(!z)continue;let G=pN(Y);if(G.length===0){console.warn(`[kobe/keybindings] bindByIds: id="${Y}" has no chords (or doesn't exist in KobeKeymap)`);continue}G.forEach((Z,q)=>J.push({key:Z,cmd:z,slot:q}))}return J}var xY,aN,X8,$N,rN;var bG=C(()=>{Wf();xY=[{id:"help.open",scope:"global",keys:["f1"],category:"Global",description:"Show keybindings help",hint:{keys:"F1",label:"help",pin:"right"}},{id:"task.new",scope:"sidebar",keys:["n"],category:"Sidebar",description:"New task",hint:{keys:"n",label:"new"}},{id:"task.openEditor",scope:"global",keys:["ctrl+o"],category:"Global",description:"Open active task worktree in editor"},{id:"settings.open",scope:"global",keys:["ctrl+,"],category:"Global",description:"Open settings"},{id:"settings.open.sidebar",scope:"sidebar",keys:["s"],category:"Sidebar",description:"Open settings",hint:{keys:"s",label:"settings",status:!1}},{id:"app.quit",scope:"sidebar",keys:["q"],category:"Sidebar",description:"Quit (with confirm)",hint:{keys:"q",label:"quit",status:!1}},{id:"focus.sidebar",scope:"workspace",keys:["ctrl+q"],category:"Workspace",description:"Back to sidebar (tasks)",hint:{keys:"ctrl+q",label:"tasks"}},{id:"focus.numeric",scope:"global",keys:["ctrl+h","ctrl+j","ctrl+k","ctrl+l"],category:"Navigation",description:"Jump to pane (h=sidebar, j=workspace, k=files, l=terminal)",hint:{keys:"ctrl+hjkl",label:"focus",pin:"right",status:!1}},{id:"chat.interrupt",scope:"workspace",keys:[],category:"Workspace",description:"Interrupt current turn (esc while streaming)"},{id:"sidebar.nav",scope:"sidebar",keys:["j","k","down","up"],category:"Sidebar",description:"Move cursor up/down",hint:{keys:"j/k",label:"nav"}},{id:"sidebar.select",scope:"sidebar",keys:["return"],category:"Sidebar",description:"Open the selected task",hint:{keys:"enter",label:"select"}},{id:"sidebar.goto",scope:"sidebar",keys:["g"],category:"Sidebar",description:"Top / bottom of list (gg or shift-G)"},{id:"sidebar.rename",scope:"sidebar",keys:["r"],category:"Sidebar",description:"Rename task",hint:{keys:"r",label:"rename",status:!1}},{id:"sidebar.archive",scope:"sidebar",keys:["a"],category:"Sidebar",description:"Toggle archive",hint:{keys:"a",label:"archive",status:!1}},{id:"sidebar.localMerge",scope:"sidebar",keys:["m"],category:"Sidebar",description:"Local merge task into parent repo (Shift+M)",hint:{keys:"M",label:"merge",status:!1}},{id:"sidebar.pin",scope:"sidebar",keys:["p"],category:"Sidebar",description:"Pin / unpin task at top (Shift+P)",hint:{keys:"P",label:"pin",status:!1}},{id:"sidebar.view",scope:"sidebar",keys:["[","]"],category:"Sidebar",description:"Switch view (Working session \u2194 Archives)",hint:{keys:"[/]",label:"view",status:!1}},{id:"sidebar.sort",scope:"sidebar",keys:["t"],category:"Sidebar",description:"Switch task sort (default \u2194 recent)",hint:{keys:"t",label:"sort",status:!1}},{id:"sidebar.projectFilter",scope:"sidebar",keys:["ctrl+p"],category:"Sidebar",description:"Cycle task project filter",hint:{keys:"ctrl+p",label:"project",status:!1}},{id:"sidebar.delete",scope:"sidebar",keys:["d"],category:"Sidebar",description:"Delete task (with confirm)",hint:{keys:"d",label:"delete",status:!1}},{id:"sidebar.search.enter",scope:"sidebar",keys:["/"],category:"Sidebar",description:"Search tasks (fuzzy filter)",hint:{keys:"/",label:"search"}},{id:"sidebar.search.nav",scope:"sidebar",keys:["down","up"],category:"Sidebar",description:"Move highlight in search results"},{id:"sidebar.search.submit",scope:"sidebar",keys:["return"],category:"Sidebar",description:"Select search match and exit search"},{id:"sidebar.search.cancel",scope:"sidebar",keys:["escape"],category:"Sidebar",description:"Cancel search (restore prior selection)"},{id:"tasks.openWorktree",scope:"sidebar",keys:["o"],category:"Tasks pane",description:"Open selected task's worktree in your editor",hint:{keys:"o",label:"open wt",status:!1}},{id:"tasks.renameBranch",scope:"sidebar",keys:["b"],category:"Tasks pane",description:"Rename the selected task's git branch",hint:{keys:"b",label:"branch",status:!1}},{id:"tasks.cycleEngine",scope:"sidebar",keys:["v"],category:"Tasks pane",description:"Cycle engine vendor (claude \u2194 codex \u2194 \u2026) \u2014 applies on reopen",hint:{keys:"v",label:"engine",status:!1}},{id:"tasks.update",scope:"sidebar",keys:["u"],category:"Tasks pane",description:"Open the update page (when a new version is available)",hint:{keys:"u",label:"update",status:!1}},{id:"tasks.focusEngine",scope:"sidebar",keys:["right"],category:"Tasks pane",description:"Focus the engine pane of the current window",hint:{keys:"\u2192",label:"engine",status:!1}},{id:"tasks.toggleKeys",scope:"sidebar",keys:["?"],category:"Tasks pane",description:"Collapse / expand the keys legend",hint:{keys:"?",label:"fold keys",status:!1}},{id:"tmux.quickTask",scope:"global",keys:[],category:"Workspace (tmux)",description:"Quick new task (tmux prefix, then f)",hint:{keys:"prefix f",label:"new task",status:!1}},{id:"tmux.engineTab",scope:"global",keys:[],category:"Workspace (tmux)",description:"Open the engine in a new tab (tmux prefix, then t)",hint:{keys:"prefix t",label:"engine tab",status:!1}},{id:"tmux.layout.workspaceSplit",scope:"global",keys:[],category:"Workspace (tmux)",description:"Add a temporary workspace split (tmux prefix, then s)",hint:{keys:"prefix s",label:"split",status:!1}},{id:"tmux.layout.workspaceClose",scope:"global",keys:[],category:"Workspace (tmux)",description:"Close the focused temporary workspace split (tmux prefix, then x)",hint:{keys:"prefix x",label:"close split",status:!1}},{id:"tmux.layout.workspaceReset",scope:"global",keys:[],category:"Workspace (tmux)",description:"Close all temporary workspace splits (tmux prefix, then r)",hint:{keys:"prefix r",label:"reset splits",status:!1}},{id:"tmux.layout.tasksToggle",scope:"global",keys:[],category:"Workspace (tmux)",description:"Hide / restore the Tasks pane (tmux prefix, then a)",hint:{keys:"prefix a",label:"tasks pane",status:!1}},{id:"tmux.layout.opsToggle",scope:"global",keys:[],category:"Workspace (tmux)",description:"Toggle the file/Ops pane (tmux prefix, then o)",hint:{keys:"prefix o",label:"file pane",status:!1}},{id:"tmux.layout.terminalToggle",scope:"global",keys:[],category:"Workspace (tmux)",description:"Hide / restore the terminal pane (tmux prefix, then z)",hint:{keys:"prefix z",label:"terminal",status:!1}},{id:"tmux.layout.zenToggle",scope:"global",keys:[],category:"Workspace (tmux)",description:"Zen mode \u2014 collapse to the engine pane (tmux prefix, then space)",hint:{keys:"prefix space",label:"zen",status:!1}},{id:"chat.send",scope:"workspace",keys:[],category:"Workspace",description:"Send message (composer)",hint:{keys:"enter",label:"send"}},{id:"chat.newline",scope:"workspace",keys:[],category:"Workspace",description:"Newline in composer",hint:{keys:"shift+enter",label:"newline"}},{id:"chat.cycle-mode",scope:"workspace",keys:[],category:"Workspace",description:"Cycle permission mode (composer)",hint:{keys:"shift+tab",label:"mode"}},{id:"chat.steer",scope:"workspace",keys:[],category:"Workspace",description:"Steer (interrupt + send) \u2014 mid-stream only",hint:{keys:"ctrl+enter",label:"steer",status:!1}},{id:"chat.tab.new",scope:"workspace",keys:["ctrl+t"],category:"Workspace",description:"New chat tab",hint:{keys:"ctrl+t",label:"new tab"}},{id:"chat.fork.new",scope:"workspace",keys:["ctrl+f"],category:"Workspace",description:"Quick-fork: create child task seeded with current repo/branch/model",hint:{keys:"ctrl+f",label:"fork"}},{id:"chat.session.resume",scope:"workspace",keys:["ctrl+y"],category:"Workspace",description:"Resume a prior session in this task's worktree",hint:{keys:"ctrl+y",label:"resume",status:!1}},{id:"chat.tab.close",scope:"workspace",keys:["ctrl+w"],category:"Workspace",description:"Close chat tab",hint:{keys:"ctrl+w",label:"close tab",status:!1}},{id:"chat.tab.rename",scope:"workspace",keys:["f2"],category:"Workspace",description:"Rename active chat tab",hint:{keys:"f2",label:"rename tab",status:!1}},{id:"chat.tab.cycle-next",scope:"workspace",keys:["ctrl+]"],category:"Workspace",description:"Next chat tab",hint:{keys:"ctrl+]",label:"next tab",status:!1}},{id:"chat.tab.cycle-prev",scope:"workspace",keys:["ctrl+["],category:"Workspace",description:"Previous chat tab",hint:{keys:"ctrl+[",label:"prev tab",status:!1}},{id:"chat.question.nav",scope:"workspace",keys:["j","k","down","up"],category:"Workspace",description:"Move highlight in question picker",hint:{keys:"j/k",label:"pick",status:!1}},{id:"chat.question.toggle",scope:"workspace",keys:["space"],category:"Workspace",description:"Toggle highlighted option in question picker",hint:{keys:"space",label:"toggle",status:!1}},{id:"chat.question.submit",scope:"workspace",keys:["return"],category:"Workspace",description:"Advance / submit question picker",hint:{keys:"enter",label:"submit",status:!1}},{id:"chat.question.pick-number",scope:"workspace",keys:["1","2","3","4","5","6","7","8","9"],category:"Workspace",description:"Pick option by number in question picker",hint:{keys:"1-9",label:"pick",status:!1}},{id:"files.nav",scope:"files",keys:["j","k","down","up"],category:"Files",description:"Move cursor up/down",hint:{keys:"j/k",label:"nav"}},{id:"files.hierarchy",scope:"files",keys:["h","l","left","right"],category:"Files",description:"Collapse / expand tree level",hint:{keys:"h/l",label:"level"}},{id:"files.open",scope:"files",keys:["return"],category:"Files",description:"Open file in nvim (diff vs HEAD when changed)",hint:{keys:"enter",label:"open"}},{id:"files.tab",scope:"files",keys:["[","]"],category:"Files",description:"Switch tab (cycle All / Changes)",hint:{keys:"[/]",label:"tab",status:!1}},{id:"files.refresh",scope:"files",keys:["r"],category:"Files",description:"Refresh",hint:{keys:"r",label:"refresh",status:!1}},{id:"files.openExternal",scope:"files",keys:["o"],category:"Files",description:"Open file in system default app (audio / video / pdf preview)",hint:{keys:"o",label:"open external",status:!1}},{id:"files.mention",scope:"files",keys:["a"],category:"Files",description:"Inject @<path> mention into the engine pane",hint:{keys:"a",label:"@mention"}},{id:"files.createPR",scope:"files",keys:["p"],category:"Files",description:"Create PR from the current task",hint:{keys:"p",label:"create PR"}},{id:"terminal.scroll-up",scope:"terminal",keys:["ctrl+pageup"],category:"Terminal",description:"Scroll scrollback up",hint:{keys:"ctrl+pgup",label:"scroll",status:!1}},{id:"terminal.scroll-down",scope:"terminal",keys:["ctrl+pagedown"],category:"Terminal",description:"Scroll scrollback down"},{id:"terminal.reset",scope:"terminal",keys:["f5"],category:"Terminal",description:"Reset terminal \u2014 kill the current shell and respawn",hint:{keys:"f5",label:"reset"}},{id:"dialog.cancel",scope:"global",keys:[],category:"Dialog",description:"Close the top dialog (esc)"},{id:"dialog.newtask.tab.cycle",scope:"global",keys:[],category:"Dialog",description:"Switch New Task tab (Existing / New Repo)",hint:{keys:"ctrl+[/]",label:"tab"}}],aN=new Map(xY.map((f)=>[f.id,{keys:[...f.keys],hint:f.hint?{...f.hint}:void 0}]));[X8,$N]=r(0);rN=new Map(xY.map((f)=>[f.id,f]))});function OQ(){if(hY)return hY;let f=Dq();if(!f.exists)return hY={path:f.path,exists:!1,applied:[],warnings:[]},hY;let J=[...f.warnings],Y=Mq(f.doc,process.platform,{chordOptsFor:wB});J.push(...Y.warnings);let z=Y.entries.filter((Q)=>Q.id.startsWith("tmux.")),G=Y.entries.filter((Q)=>!Q.id.startsWith("tmux.")),Z=m7(xY,G);J.push(...Z.warnings);let q=[...Z.applied];if(z.length>0){let Q=xB(z);J.push(...Q.warnings);for(let H of Q.overridden){if(H===SJ){q.push({id:H,keys:Q.focus.map((j)=>j?.chord??"").filter((j)=>j!==""),defaultKeys:RY});continue}let B=Q.binds[H];q.push({id:H,keys:B?[B.chord]:[],defaultKeys:[Kz[H]]});let V=xY.find((j)=>j.id===H);if(V?.hint)V.hint.keys=B?`${ZG(H)?"prefix ":""}${B.chord}`:"\u2014"}}for(let Q of J)console.warn(`[kobe/keybindings] ${Q}`);return hY={path:f.path,exists:!0,applied:q,warnings:J},hY}function O4(){return hY??OQ()}function A4(){hY=null,v7(),i7(),M4();let f=OQ();return F4(),f}var hY=null;var Q8=C(()=>{uB();Aq();Fq();bG()});var _N=250,SG,g4;var PZ=C(()=>{RG();lY();aj();({use:SG,provider:g4}=jQ({name:"KV",init:()=>{let[f,J]=uJ(cf()),Y=new Set,z=null;function G(Q){if(Y.size===0)return!0;try{let H={};for(let B of Y)H[B]=f[B];return iY(H),Y.clear(),!0}catch(H){return console.error(`[kobe] kv ${Q} failed:`,H),!1}}function Z(){if(z)clearTimeout(z);z=setTimeout(()=>{z=null,G("write")},_N)}let q={get ready(){return!0},get store(){return f},signal(Q,H){if(f[Q]===void 0)J(Q,H);return[()=>q.get(Q),(B)=>q.set(Q,B)]},get(Q,H){return f[Q]??H},set(Q,H){J(Q,H),Y.add(Q),Z()},flush(){if(z)clearTimeout(z),z=null;return G("flush")},clear(){for(let Q of Object.keys(f))J(Q,void 0);if(z)clearTimeout(z),z=null;Y.clear();try{U9({})}catch(Q){console.error("[kobe] kv clear write failed:",Q)}}};return q}}))});var AQ="../pulse-n3cq1btw.wav";var R4=()=>{};import{existsSync as sN,mkdirSync as tN}from"fs";import{tmpdir as eN}from"os";import{basename as fy,isAbsolute as Jy,join as H8,resolve as Yy}from"path";function Gy(f,J,Y){if(f==="ffplay")return[f,"-autoexit","-nodisp","-af",`volume=${Y}`,J];if(f==="mpv")return[f,"--no-video","--audio-display=no","--volume",String(Math.round(Y*100)),J];if(f==="mpg123"||f==="mpg321")return[f,"-g",String(Math.round(Y*100)),J];if(f==="mplayer")return[f,"-vo","null","-volume",String(Math.round(Y*100)),J];if(f==="afplay"||f==="omxplayer"||f==="aplay"||f==="cmdmp3")return[f,J];if(f==="play")return[f,"-v",String(Y),J];if(f==="cvlc")return[f,`--gain=${Y}`,"--play-and-exit",J];return[f,"-c",`(New-Object Media.SoundPlayer '${J.replace(/'/g,"''")}').PlaySync()`]}function Zy(){if(gQ!==void 0)return gQ;let J=(process.env.PATH??"").split(":").filter(Boolean);return gQ=zy.find((Y)=>J.some((z)=>sN(H8(z,Y))))??null,gQ}async function Xy(){return N4??=(async()=>{tN(k4,{recursive:!0});let f=H8(k4,fy(C4)),J=Bun.file(f);if(await J.exists())return f;return await Bun.write(J,Bun.file(C4)),f})(),N4}function y4(f=0.4){let J=Zy();if(!J)return;Xy().then((Y)=>{try{Bun.spawn(Gy(J,Y,f),{stdin:"ignore",stdout:"ignore",stderr:"ignore"}).unref?.()}catch{}}).catch(()=>{return})}var C4,k4,zy,gQ,N4;var b4=C(()=>{R4();C4=Jy(AQ)?AQ:Yy(import.meta.dir,AQ),k4=H8(eN(),"kobe-sfx"),zy=["ffplay","mpv","mpg123","mpg321","mplayer","afplay","play","omxplayer","aplay","cmdmp3","cvlc","powershell.exe"]});function S4(f,J){return`${f}:${J}`}function T4(f){let J=SG(),[Y,z]=r([]),[G,Z]=r(new Map),q=0;function Q(j){if(Z((U)=>{let L=new Map(U),O=S4(j.taskId,j.tabId),M=U.get(O);if(M==="needs_input"||M==="error")return U;return L.set(O,j.kind),L}),J.get("notifications.sound.enabled",!0)!==!1){try{process.stdout.write("\x07")}catch{}y4()}if(J.get("notifications.toast.enabled",!0)!==!1){let U=++q,L={id:U,kind:j.kind,taskId:j.taskId,tabId:j.tabId,title:j.title};z((O)=>[...O,L]),setTimeout(()=>H(U),qy)}}function H(j){z((U)=>U.filter((L)=>L.id!==j))}function B(j,U){Z((L)=>{let O=S4(j,U);if(!L.has(O))return L;let M=new Map(L);return M.delete(O),M})}let V={toasts:Y,unread:G,notify:Q,dismiss:H,markRead:B};return b(I4.Provider,{value:V,get children(){return f.children}})}function RQ(){let f=u1(I4);if(!f)throw Error("useNotifications must be used within a NotificationsProvider");return f}var qy=4500,I4;var CQ=C(()=>{P();Wf();b4();PZ();I4=gJ()});function B8(f,J){if(typeof J.theme==="string"&&J.theme.length>0&&J.theme!==f.selectedTheme()){if(!f.hasTheme(J.theme))f.reloadUserThemes();if(f.hasTheme(J.theme))f.setTheme(J.theme)}if(typeof J.transparentBackground==="boolean"&&J.transparentBackground!==f.transparentBackground())f.setTransparentBackground(J.transparentBackground);if(J.focusAccent===null||typeof J.focusAccent==="string"){let Y=Hy(J.focusAccent);if(Y&&Y!==f.focusAccent())f.setFocusAccent(Y)}}function Hy(f){if(f===null)return"primary";return Qy.includes(f)?f:null}var Qy;var u4=C(()=>{Qy=["primary","success","info"]});import{readFileSync as By}from"fs";function E4(f){try{let J=JSON.parse(By(v1(),"utf8")),Y=typeof J.activeTheme==="string"&&IZ(J.activeTheme)?J.activeTheme:f,z=J.transparentBackground===!0,G=typeof J.focusAccent==="string"&&gz.includes(J.focusAccent)?J.focusAccent:null,Z=TZ(J[kQ])?J[kQ]:kG;return{theme:Y,transparent:z,focusAccent:G,locale:Z}}catch{return{theme:f,transparent:!1,focusAccent:null,locale:kG}}}var kQ="locale";var j8=C(()=>{lf();Ef();NG()});function Wy(f){if(f)gX(f);OQ();for(let{name:J,theme:Y}of VZ())rj(J,Y)}function Vy(f){let J={backgroundColor:"transparent",externalOutputMode:"passthrough",exitOnCtrlC:!1,screenMode:"alternate-screen",useKittyKeyboard:{}};return f?{...J,onDestroy:f}:J}function Ky(f){let J=()=>f.children,Y=()=>f.notifications?b(T4,{get children(){return J()}}):J(),z=()=>b(d6,{get children(){return Y()}}),G=()=>f.focus?b(D4,{initial:"sidebar",get children(){return z()}}):z(),Z=()=>f.kv?b(g4,{get children(){return G()}}):G();return b(q6,{mode:"dark",get theme(){return f.theme},get children(){return Z()}})}function Uy(f){let J=d0(),Y={selectedTheme:()=>J.selected,hasTheme:(Q)=>J.has(Q),setTheme:(Q)=>J.set(Q),reloadUserThemes:()=>{for(let{name:Q,theme:H}of VZ())rj(Q,H)},transparentBackground:()=>J.transparentBackground,setTransparentBackground:(Q)=>J.setTransparentBackground(Q),focusAccent:()=>J.focusAccent,setFocusAccent:(Q)=>J.setFocusAccent(Q)};B8(Y,{theme:f.boot.theme,transparentBackground:f.boot.transparent,focusAccent:f.boot.focusAccent}),uZ(f.boot.locale);let[z,G]=r(null),Z=!1;f1(()=>{(async()=>{let Q=await K4({logTag:"ui-prefs",channels:["ui-prefs","keybindings"]});if(!Q)return;if(Z){Q.dispose();return}G(Q)})()}),ff(()=>{let Q=z()?.uiPrefsSignal()();if(!Q)return;if(B8(Y,Q),TZ(Q.locale))uZ(Q.locale)});let q=null;return ff(()=>{let Q=z()?.keybindingsRevSignal()();if(Q==null)return;if(q===null||Q===q){q=Q;return}q=Q,A4()}),vf(()=>{Z=!0,z()?.dispose()}),null}async function L1(f){Wy(f.logContext);let J=E4(jy),Y=await f.setup(J),z=f.providers?.kv??!0,G=f.providers?.focus??!0,Z=f.providers?.notifications??!1;await f6(()=>b(Ky,{get theme(){return J.theme},kv:z,focus:G,notifications:Z,get children(){return[b(Uy,{boot:J}),I0(()=>Y.root())]}}),Vy(Y.onDestroy))}var jy="claude";var PY=C(()=>{P();P();P();_Y();Wf();U4();L4();Q8();PZ();CQ();Ef();kq();G1();h1();u4();j8()});async function W8(f,J,Y,z,G={}){let Z=Mf(J.id);if(await Bf(Z))return!0;let q=J.worktreePath;if(!q)q=await f.ensureWorktree(J.id);if(!q)throw Error(`task ${J.id} has no worktree`);let{ensureSession:Q}=await Promise.resolve().then(() => (J1(),r1)),{resolveEngineLaunchInit:H}=await Promise.resolve().then(() => (zG(),TB)),B=H(Y,q,{kind:G.includeInitPrompt?"repo-init":"none"});if(!await Q({name:Z,cwd:q,command:N1(z),taskId:J.id,vendor:z,repo:Y,launchInit:B}))throw Error(`failed to start tmux session for ${J.id}`);return!1}async function NQ(f,J,Y,z,G={}){await W8(f,J,Y,z,G),await f.setActiveTask(J.id).catch(()=>{});let{prepareWindowForSwitch:Z}=await Promise.resolve().then(() => (J1(),r1));await Z(Mf(J.id)),await v0(["switch-client","-t",`=${Mf(J.id)}`])}var V8=C(()=>{E1();Sf()});var x4={};jf(x4,{startNewTaskHost:()=>Dy,NewTaskPage:()=>yQ});function yQ(f){let{theme:J}=d0(),Y=Pf();f1(()=>{z()});async function z(){let G=m1(),Z=f.defaultRepo||G[0]||process.cwd(),q=kf("lastSelectedVendor")??yf,Q=await dJ(),H=f.orchestrator,B=await LQ.show(Y,Z,G,{defaultVendor:q,availableVendors:Q,discoverAdoptable:H?(j)=>H.discoverAdoptableWorktrees(j):void 0});if(!B)process.exit(0);if(af("lastSelectedVendor",B.vendor),PJ(B.repo),!H)console.error("[kobe new-task] no daemon; cannot create task"),process.exit(1);let V;try{if(B.mode==="adopt")for(let j of B.adopt)V=await H.adoptWorktree({repo:B.repo,worktreePath:j.worktreePath,branch:j.branch,vendor:B.vendor});else V=await H.createTask({repo:B.repo,baseRef:B.baseRef,vendor:B.vendor})}catch(j){console.error("[kobe new-task] task.create/adopt failed:",j),process.exit(1)}if(V)try{await NQ(H,V,B.repo,B.vendor,{includeInitPrompt:B.mode!=="adopt"})}catch(j){console.error("[kobe new-task] auto-enter failed:",j)}process.exit(0)}return(()=>{var G=W("box");return X(G,"flexDirection","column"),X(G,"flexGrow",1),E((Z)=>X(G,"backgroundColor",J.background,Z)),G})()}async function Dy(f){await L1({setup:async()=>{let J=null;try{let Y=await UJ(),z=new j1(Y);await z.init(),J=z}catch(Y){console.error("[kobe new-task] daemon unavailable; cannot create task:",Y)}return{root:()=>b(yQ,{get defaultRepo(){return f.defaultRepo},orchestrator:J}),onDestroy:()=>{J?.dispose()}}}})}var K8=C(()=>{P();P();P();P();y1();Wf();EY();oY();gf();S1();yG();Ef();PY();V8();h1()});function bQ(f,J,Y,z,G={}){if(f.length===0)return J;let Z=new Map;for(let H of f)Z.set(Y(H),H);let q=f.length===J.length,Q=Array(J.length);for(let H=0;H<J.length;H++){let B=J[H],V=Z.get(Y(B));if(V&&z(V,B)&&(!G.samePosition||f[H]===V)){if(Q[H]=V,q&&f[H]!==V)q=!1}else Q[H]=B,q=!1}return q?f:Q}function w4(f,J){if(!f)return!0;let Y=f.toLowerCase(),z=J.toLowerCase(),G=0;for(let Z=0;Z<z.length&&G<Y.length;Z++)if(z.charCodeAt(Z)===Y.charCodeAt(G))G++;return G===Y.length}function Ly(f,J){let Y=J==="archived";return f.filter((z)=>z.archived===Y)}function U8(f,J,Y,z="default",G){let Z=Ly(f,J),q=Y?.trim()??"",Q=G?o1(G):null,H=q?Z.filter((M)=>w4(q,`${M.title} ${MJ(M.repo)}`)):Z,B=[],V=[],j=[],U=new Set;for(let M of H){if(M.kind==="main"){let g=o1(M.repo);if(U.has(g))continue;U.add(g),B.push(M);continue}if(Q&&o1(M.repo)!==Q)continue;if(M.pinned===!0)V.push(M);else j.push(M)}if(B.sort((M,g)=>MJ(M.repo).localeCompare(MJ(g.repo))),z==="recent")V.sort(h4),j.sort(h4);let L=[],O=0;for(let M of B)L.push({kind:"task",task:M,flatIndex:O}),O++;for(let M of V)L.push({kind:"task",task:M,flatIndex:O}),O++;for(let M of j)L.push({kind:"task",task:M,flatIndex:O}),O++;return L}function h4(f,J){let Y=P4(J)-P4(f);if(Y!==0)return Y;return String(J.id).localeCompare(String(f.id))}function P4(f){let J=Date.parse(f.updatedAt||f.createdAt);return Number.isFinite(J)?J:0}function MJ(f){let J=f.split("/").filter(Boolean);return J[J.length-1]??f}function o1(f){return f.trim().replace(/[\\/]+$/,"")||f}function My(f,J){let Y=MJ(f);if(!J.some((G)=>G!==f&&MJ(G)===Y))return Y;return f.replace(/[\\/]+$/,"").split(/[\\/]+/).slice(-2).join("/")}function v4(f,J){let Y=J==="archived",z=new Map;for(let Z of f){let q=o1(Z.repo),Q=z.get(q)??{repo:Z.repo,count:0};if(Z.kind==="main")Q.repo=Z.repo;else if(Z.archived===Y)Q.count+=1;z.set(q,Q)}let G=[...z.values()].map((Z)=>Z.repo);return[...z.values()].map((Z)=>({repo:Z.repo,label:My(Z.repo,G),count:Z.count})).sort((Z,q)=>Z.label.localeCompare(q.label))}function m4(f,J){if(f.length===0)return-1;if(!J)return f[0]?.flatIndex??-1;let Y=o1(J),z=f.find((Z)=>Z.task.kind!=="main"&&o1(Z.task.repo)===Y);if(z)return z.flatIndex;return f.find((Z)=>Z.task.kind==="main"&&o1(Z.task.repo)===Y)?.flatIndex??f[0]?.flatIndex??-1}function D8(f){return f.map((J)=>J.task.id)}function c4(f){let J=[],Y=[];for(let z of f)if(z.task.kind==="main")J.push(z);else Y.push(z);return{projectRows:J,taskRows:Y}}function Fy(f,J){return f===J||f.id===J.id&&f.kind===J.kind&&f.title===J.title&&f.repo===J.repo&&f.branch===J.branch&&f.worktreePath===J.worktreePath&&f.status===J.status&&f.archived===J.archived&&f.pinned===J.pinned&&f.vendor===J.vendor}function n4(f,J){return bQ(f,J,(Y)=>Y.task.id,(Y,z)=>Y.flatIndex===z.flatIndex&&Fy(Y.task,z.task),{samePosition:!0})}var SQ=()=>{};var d4={};jf(d4,{startQuickTaskHost:()=>Ry});async function Oy(f,J){let Y,z;if(J){let j=await C1(J,["@kobe_task","@kobe_worktree"]);Y=j["@kobe_task"]||void 0,z=j["@kobe_worktree"]||void 0}let G=(Y?f?.getTask(Y)?.repo:void 0)??m1()[0],Z=G??z??process.cwd();if(!G)return{ctx:null,fallbackRepo:Z};let q=await dJ(),Q=kf("lastSelectedVendor")??yf,H=q.length===0||q.includes(Q)?Q:q[0]??Q,B=EZ(W1(G))??LJ,V=q.length>0?q:[H];return{ctx:{repo:G,vendor:H,baseRef:B,engines:V},fallbackRepo:Z}}async function Ay(f,J,Y,z,G){let Z=await W8(f,J,Y,z),q=Mf(J.id),{pane:Q}=await jZ(q,!Z);if(Q)await WZ(Q,G)}function gy(f){let{theme:J}=d0(),Y=Pf();f1(()=>{z()});async function z(){let G=f.ctx,Z=await W4.show(Y,{repoLabel:MJ(G.repo),engines:G.engines,defaultVendor:G.vendor,defaultBaseRef:G.baseRef,engineLabel:qz});if(Z===void 0)process.exit(0);af("lastSelectedVendor",Z.vendor),PJ(G.repo);let q=f.orchestrator;if(!q)console.error("[kobe quick-task] no daemon; cannot create task"),process.exit(1);try{let Q=await q.createTask({repo:G.repo,baseRef:Z.baseRef,vendor:Z.vendor});await Ay(q,Q,G.repo,Z.vendor,Z.prompt),await NQ(q,Q,G.repo,Z.vendor)}catch(Q){console.error("[kobe quick-task] task.create/deliver failed:",Q),process.exit(1)}process.exit(0)}return(()=>{var G=W("box");return X(G,"flexDirection","column"),X(G,"flexGrow",1),E((Z)=>X(G,"backgroundColor",J.background,Z)),G})()}async function Ry(f){await L1({setup:async()=>{let J=null;try{let G=await UJ(),Z=new j1(G);await Z.init(),J=Z}catch(G){console.error("[kobe quick-task] daemon unavailable; cannot create task:",G)}let{ctx:Y,fallbackRepo:z}=await Oy(J,f.session);return{root:()=>Y?b(gy,{ctx:Y,orchestrator:J}):b(yQ,{defaultRepo:z,orchestrator:J}),onDestroy:()=>{J?.dispose()}}}})}var i4=C(()=>{P();P();P();P();y1();Wf();EY();oY();E1();gf();Sf();gq();S1();V4();Ef();VQ();PY();UQ();V8();K8();SQ();h1()});function TQ(f){let J=f.trim().split(/\s+/).pop()??"",Y=/^([CM])-(.+)$/.exec(J);if(!Y)return null;let z=Y[1]==="C"?"\u2303":"\u2325",G=Y[2]??"";return`${z}${G.length===1?G.toUpperCase():G}`}function IQ(f,J){if(f.includes("/"))return f.split("/").map((G)=>IQ(G,J)).join("/");let Y=f.toLowerCase();if(Y==="tab")return"tab";let z=ky[Y];if(z)return z;if(/^f\d{1,2}$/.test(Y))return Y.toUpperCase();if(!J)return f;if(/^[a-z]$/.test(Y))return f.toUpperCase();return f.replace(/[a-z]+/gi,(G)=>G.toUpperCase())}function IG(f,J="\u2303B"){let Y=f.trim();if(!Y)return Y;let z=/^prefix\s+(.+)$/i.exec(Y);if(z){let Q=z[1]??"";return`${J} ${Q.includes("+")?IG(Q,J):IQ(Q,!0)}`}let G=Y.split("+");if(G.length===1)return IQ(G[0]??"",!1);let Z=G[G.length-1]??"";return`${G.slice(0,-1).map((Q)=>Cy[Q.toLowerCase().trim()]??Q).join("")} ${IQ(Z,!0)}`}var Cy,ky;var L8=C(()=>{Cy={ctrl:"\u2303",control:"\u2303",alt:"\u2325",opt:"\u2325",option:"\u2325",shift:"\u21E7",cmd:"\u2318",command:"\u2318",meta:"\u2318",super:"\u2318"},ky={enter:"\u23CE",return:"\u23CE",esc:"\u238B",escape:"\u238B",space:"\u2423",up:"\u2191",down:"\u2193",left:"\u2190",right:"\u2192",backspace:"\u232B",delete:"\u2326",del:"\u2326",pgup:"\u21DE",pageup:"\u21DE",pgdn:"\u21DF",pagedown:"\u21DF",home:"\u2196",end:"\u2198"}});import{TextAttributes as l4}from"@opentui/core";function Ny(f){let J=new Map,Y=[];for(let z of f){if(!J.has(z.category))J.set(z.category,[]),Y.push(z.category);J.get(z.category).push(z)}return Y.map((z)=>({category:z,rows:J.get(z)}))}function TG(f={}){let J=Pf(),{theme:Y}=d0(),z=()=>Ny(xY),G=()=>f.onClose?f.onClose():J.clear(),[Z,q]=r("\u2303B");return f1(()=>{a0(["show-options","-g","prefix"]).then(({code:Q,stdout:H})=>{if(Q!==0)return;let B=TQ(H);if(B)q(B)})}),Df(()=>({bindings:[{key:"?",cmd:G}]})),(()=>{var Q=W("box"),H=W("box"),B=W("text"),V=W("text"),j=W("scrollbox"),U=W("box");return D(Q,H),D(Q,j),X(Q,"paddingLeft",2),X(Q,"paddingRight",2),X(Q,"gap",1),X(Q,"flexShrink",1),D(H,B),D(H,V),X(H,"flexDirection","row"),X(H,"justifyContent","space-between"),X(H,"flexShrink",0),K(B,()=>F("help.title")),X(V,"onMouseUp",G),K(V,()=>F("help.esc")),D(j,U),X(j,"flexShrink",1),X(j,"flexGrow",1),X(j,"stickyScroll",!1),X(U,"paddingBottom",1),X(U,"gap",1),X(U,"paddingRight",1),K(U,b(Zf,{get each(){return z()},children:(L)=>(()=>{var O=W("box"),M=W("text");return D(O,M),X(O,"gap",0),K(M,()=>oj("category",L.category)),K(O,b(Zf,{get each(){return L.rows},children:(g)=>{let I=g.hint?.keys??g.keys[0]??"\u2014",a=()=>I==="\u2014"?"\u2014":IG(I,Z()),N=()=>(g.hint?g.keys:g.keys.slice(1)).map((A)=>IG(A,Z()));return(()=>{var A=W("box"),R=W("box"),S=W("text"),_=W("box"),z0=W("text");return D(A,R),D(A,_),X(A,"flexDirection","row"),X(A,"gap",2),X(A,"paddingLeft",1),D(R,S),X(R,"width",14),K(S,a),D(_,z0),X(_,"flexGrow",1),K(z0,()=>oj("desc",g.id)),K(A,(()=>{var e=I0(()=>N().length>0);return()=>e()?(()=>{var Y0=W("box"),T=W("text");return D(Y0,T),K(T,()=>`(${N().join(", ")})`),E((Q0)=>X(T,"fg",Y.textMuted,Q0)),Y0})():null})(),null),E((e)=>{var{primary:Y0,text:T}=Y;return Y0!==e.e&&(e.e=X(S,"fg",Y0,e.e)),T!==e.t&&(e.t=X(z0,"fg",T,e.t)),e},{e:void 0,t:void 0}),A})()}}),null),E((g)=>{var I=Y.accent,a=l4.BOLD;return I!==g.e&&(g.e=X(M,"fg",I,g.e)),a!==g.t&&(g.t=X(M,"attributes",a,g.t)),g},{e:void 0,t:void 0}),O})()})),E((L)=>{var O=l4.BOLD,M=Y.text,g=Y.textMuted,I={trackOptions:{backgroundColor:Y.backgroundDialog,foregroundColor:Y.borderActive}};return O!==L.e&&(L.e=X(B,"attributes",O,L.e)),M!==L.t&&(L.t=X(B,"fg",M,L.t)),g!==L.a&&(L.a=X(V,"fg",g,L.a)),I!==L.o&&(L.o=X(j,"verticalScrollbarOptions",I,L.o)),L},{e:void 0,t:void 0,a:void 0,o:void 0}),Q})()}var M8=C(()=>{P();P();P();P();P();P();P();Wf();Sf();bG();Ef();G1();L8();b1();h1();TG.show=(f)=>{f.replace(()=>b(TG,{}))}});import{TextAttributes as yy}from"@opentui/core";function a4(f){let J=Pf(),{theme:Y}=d0(),[z,G]=r(f.currentTitle);function Z(){let q=z().trim();if(!q&&!f.allowEmpty)return;f.onSubmit(q),J.clear()}return(()=>{var q=W("box"),Q=W("box"),H=W("text"),B=W("text"),V=W("box"),j=W("text"),U=W("input"),L=W("box"),O=W("text");return D(q,Q),D(q,V),D(q,L),X(q,"paddingLeft",2),X(q,"paddingRight",2),X(q,"gap",1),D(Q,H),D(Q,B),X(Q,"flexDirection","row"),X(Q,"justifyContent","space-between"),K(H,()=>f.dialogTitle??F("common.rename.defaultTitle")),D(B,E0("esc")),X(B,"onMouseUp",()=>f.onCancel()),D(V,j),D(V,U),X(V,"gap",0),K(j,()=>f.fieldLabel??F("common.rename.defaultFieldLabel")),X(U,"focused",!0),X(U,"onInput",(M)=>G(Z1(M))),X(U,"onSubmit",()=>Z()),D(L,O),X(L,"paddingBottom",1),K(O,()=>F("common.rename.footerHint",{submitLabel:f.submitLabel??F("common.rename.defaultSubmitLabel")})),E((M)=>{var g=yy.BOLD,I=Y.text,a=Y.textMuted,N=Y.accent,A=z(),R=f.placeholder??f.currentTitle,S=Y.textMuted;return g!==M.e&&(M.e=X(H,"attributes",g,M.e)),I!==M.t&&(M.t=X(H,"fg",I,M.t)),a!==M.a&&(M.a=X(B,"fg",a,M.a)),N!==M.o&&(M.o=X(j,"fg",N,M.o)),A!==M.i&&(M.i=X(U,"value",A,M.i)),R!==M.n&&(M.n=X(U,"placeholder",R,M.n)),S!==M.s&&(M.s=X(O,"fg",S,M.s)),M},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),q})()}var $4=C(()=>{P();P();P();P();P();P();P();G1();Wf();Ef();h1();yG()});function by(f,J,Y={}){return new Promise((z)=>{f.replace(()=>b(a4,{currentTitle:J,get dialogTitle(){return Y.dialogTitle},get fieldLabel(){return Y.fieldLabel},get submitLabel(){return Y.submitLabel},get placeholder(){return Y.placeholder},get allowEmpty(){return Y.allowEmpty},onSubmit:(G)=>z(G),onCancel:()=>z(void 0)}),()=>z(void 0))})}var fY;var F8=C(()=>{P();$4();fY={show:by}});import{TextAttributes as Sy}from"@opentui/core";function Iy(f){if(!f)return f;return f.charAt(0).toUpperCase()+f.slice(1)}function JY(f){let J=Pf(),{theme:Y}=d0(),[z,G]=uJ({active:f.initialActive??"confirm"});return Df(()=>({bindings:[{key:"return",cmd:()=>{if(z.active==="confirm")f.onConfirm?.();if(z.active==="cancel")f.onCancel?.();J.clear()}},{key:"left",cmd:()=>G("active",z.active==="confirm"?"cancel":"confirm")},{key:"right",cmd:()=>G("active",z.active==="confirm"?"cancel":"confirm")}]})),(()=>{var Z=W("box"),q=W("box"),Q=W("text"),H=W("text"),B=W("text"),V=W("box");return D(Z,q),D(Z,B),D(Z,V),X(Z,"paddingLeft",2),X(Z,"paddingRight",2),X(Z,"paddingBottom",1),X(Z,"gap",0),D(q,Q),D(q,H),X(q,"flexDirection","row"),X(q,"justifyContent","space-between"),K(Q,()=>f.title),D(H,E0("esc")),X(H,"onMouseUp",()=>J.clear()),K(B,()=>f.message),X(V,"flexDirection","row"),X(V,"justifyContent","flex-end"),X(V,"paddingTop",1),K(V,b(Zf,{each:["cancel","confirm"],children:(j)=>(()=>{var U=W("box"),L=W("text");return D(U,L),X(U,"paddingLeft",1),X(U,"paddingRight",1),X(U,"onMouseUp",()=>{if(j==="confirm")f.onConfirm?.();if(j==="cancel")f.onCancel?.();J.clear()}),K(L,()=>Iy(j==="cancel"?f.label??F("common.cancel"):f.confirmLabel??F("common.confirm"))),E((O)=>{var M=j===z.active?Y.primary:void 0,g=j===z.active?Y.selectedListItemText:Y.textMuted;return M!==O.e&&(O.e=X(U,"backgroundColor",M,O.e)),g!==O.t&&(O.t=X(L,"fg",g,O.t)),O},{e:void 0,t:void 0}),U})()})),E((j)=>{var U=Sy.BOLD,L=Y.text,O=Y.textMuted,M=Y.textMuted;return U!==j.e&&(j.e=X(Q,"attributes",U,j.e)),L!==j.t&&(j.t=X(Q,"fg",L,j.t)),O!==j.a&&(j.a=X(H,"fg",O,j.a)),M!==j.o&&(j.o=X(B,"fg",M,j.o)),j},{e:void 0,t:void 0,a:void 0,o:void 0}),Z})()}var O8=C(()=>{P();P();P();P();P();P();P();G1();Wf();RG();Ef();b1();h1();JY.show=(f,J,Y,z,G,Z)=>{return new Promise((q)=>{f.replace(()=>b(JY,{title:J,message:Y,onConfirm:()=>q(!0),onCancel:()=>q(!1),label:z,confirmLabel:G,get initialActive(){return Z?.initialActive}}),()=>q(void 0)),f.setSize("small")})}});import{unlinkSync as Ty}from"fs";import{join as uy}from"path";function r4(f){return f instanceof j1}function p4(f,J){try{f?.destroy()}catch(Y){console.error(`kobe: renderer.destroy() failed during ${J}:`,Y)}}async function A8(f,J,Y){if(await JY.show(f,"Reset UI state?","Wipes ~/.config/kobe/state.json and ~/.kobe/tasks.json, then quits kobe \u2014 relaunch for a fresh start with empty Working session / Archive lists. Worktrees on disk and Claude Code session history are NOT touched.","cancel")!==!0)return;J.clear();try{Ty(uy(OJ(),".kobe","tasks.json"))}catch(G){if(G.code!=="ENOENT")console.error("kobe: failed to delete tasks.json during reset:",G)}p4(Y,"reset"),process.stderr.write(`kobe: UI state reset. Relaunch kobe to start fresh.
|
|
223
|
-
`),process.exit(0)}async function
|
|
224
|
-
`),process.exit(0)}var _4=C(()=>{EY();lf();O8()});function Ey(f){return`theme:${f}`}function R8(f){return`language:${f}`}function C8(f){return`accent:${f}`}function xy(f){return`engine:${f}`}function vZ(f){return`surface:${f}`}function k8(f){return[...f.themeNames.map((J)=>({id:Ey(J),kind:"theme",name:J})),...Rz.map((J)=>({id:R8(J.id),kind:"language",locale:J.id})),{id:"transparent",kind:"transparent"},...f.focusAccentSlots.map((J)=>({id:C8(J),kind:"focusAccent",slot:J})),{id:"toast",kind:"toast"},{id:"sound",kind:"sound"},{id:"zen-keep-tasks",kind:"zenKeepTasks"},{id:vZ("chattab"),kind:"surface",surface:"chattab"},{id:vZ("taskpanel"),kind:"surface",surface:"taskpanel"},{id:"editor-kind",kind:"editorKind"},{id:"editor-custom",kind:"editorCustom"}]}function wy(f){return[...f.map((J)=>({id:xy(J),kind:"engine",vendor:J})),{id:"add-engine",kind:"engineAdd"}]}function hy(){return[{id:"feedback-title",kind:"feedbackTitle"},{id:"feedback-body",kind:"feedbackBody"},{id:"feedback-send",kind:"feedbackSend"}]}function mZ(f){return[{id:"dev-reset",kind:"devReset"},...f?[{id:"dev-restart",kind:"devRestartDaemon"}]:[],{id:"remote-projects",kind:"devRemoteProjects"},{id:"auto-status",kind:"devAutoStatus"},{id:"dispatcher",kind:"devDispatcher"}]}function o4(f,J){switch(f){case"general":return k8(J);case"engines":return wy(J.engineList);case"accounts":case"keys":return[];case"feedback":return hy();case"dev":return mZ(J.hasDaemon)}}function cZ(f,J){return f.findIndex((Y)=>Y.id===J)}function uQ(f,J){return f[J]}var kz;var N8=C(()=>{NG();kz=[{id:"general",label:"General"},{id:"engines",label:"Engines"},{id:"accounts",label:"Accounts"},{id:"keys",label:"Keybindings"},{id:"feedback",label:"Feedback"},{id:"dev",label:"Dev"}]});import{TextAttributes as t0}from"@opentui/core";function s4(f){let{theme:J}=d0();return(()=>{var Y=W("box");return X(Y,"flexDirection","column"),X(Y,"flexShrink",0),X(Y,"width",14),X(Y,"gap",1),K(Y,b(Zf,{each:kz,children:(z,G)=>{let Z=()=>G()===f.cursor(),q=()=>Z()&&f.level()==="sidebar";return(()=>{var Q=W("box"),H=W("text");return D(Q,H),X(Q,"paddingLeft",1),X(Q,"paddingRight",1),X(Q,"onMouseUp",()=>f.switchSection(z.id)),X(H,"wrapMode","none"),K(H,()=>F(`settings.sections.${z.id}`)),E((B)=>{var V=q()?J.primary:void 0,j=q()?J.selectedListItemText:Z()?J.accent:J.textMuted,U=Z()?t0.BOLD:void 0;return V!==B.e&&(B.e=X(Q,"backgroundColor",V,B.e)),j!==B.t&&(B.t=X(H,"fg",j,B.t)),U!==B.a&&(B.a=X(H,"attributes",U,B.a)),B},{e:void 0,t:void 0,a:void 0}),Q})()}})),Y})()}function t4(f){let J=d0(),{theme:Y}=J,z=()=>k8({themeNames:f.themeNames(),focusAccentSlots:gz}),G=(R)=>cZ(z(),R),Z=()=>G("transparent"),q=()=>G("toast"),Q=()=>G("sound"),H=()=>G("zen-keep-tasks"),B=()=>G(vZ("chattab")),V=()=>G(vZ("taskpanel")),j=()=>G("editor-kind"),U=()=>G("editor-custom"),L=()=>f.bodyRow()===Z(),O=()=>f.bodyRow()===q(),M=()=>f.bodyRow()===Q(),g=()=>f.bodyRow()===H(),I=()=>f.bodyRow()===B(),a=()=>f.bodyRow()===V(),N=()=>f.bodyRow()===j(),A=()=>f.bodyRow()===U();return(()=>{var R=W("box"),S=W("text"),_=W("text"),z0=W("box"),e=W("box"),Y0=W("text"),T=W("text"),Q0=W("box"),t=W("text"),V0=W("text"),C0=W("box"),$=W("text"),x=W("box"),f0=W("text"),u=W("text"),G0=W("box"),w=W("text"),n=W("text"),q0=W("box"),W0=W("text"),H0=E0(" "),k0=W("box"),x0=W("text"),y0=E0(" "),Gf=W("box"),m=W("text"),L0=W("text"),s=W("box"),R0=W("text"),i0=E0(" "),$0=W("box"),w0=W("text"),v=W("text"),J0=W("box"),M0=W("text"),_0=E0(" "),e0=W("box"),T0=W("text"),Xf=E0(" "),Qf=W("box"),Rf=W("text"),o=W("text"),p=W("box"),Z0=W("text"),D0=W("box"),j0=W("text");return D(R,S),D(R,_),D(R,z0),D(R,e),D(R,Q0),D(R,x),D(R,G0),D(R,Gf),D(R,$0),D(R,Qf),X(R,"flexDirection","column"),X(R,"gap",1),K(S,()=>F("settings.general.theme")),K(_,()=>F("settings.general.themeHint")),X(z0,"flexDirection","column"),X(z0,"gap",0),K(z0,b(Zf,{get each(){return f.themeNames()},children:(k,N0)=>{let p0=()=>f.level()==="body"&&f.bodyRow()===N0(),b0=()=>k===J.selected;return(()=>{var U0=W("box"),h0=W("text");return D(U0,h0),X(U0,"flexDirection","row"),X(U0,"gap",1),X(U0,"paddingLeft",1),X(U0,"paddingRight",1),X(U0,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(N0()),f.setThemeCursor(N0()),f.selectTheme(k)}),X(h0,"wrapMode","none"),K(h0,()=>b0()?"\u25CF ":" ",null),K(h0,k,null),E((O0)=>{var r0=p0()?Y.primary:void 0,l0=p0()?Y.selectedListItemText:b0()?Y.accent:Y.text,Yf=p0()||b0()?t0.BOLD:void 0;return r0!==O0.e&&(O0.e=X(U0,"backgroundColor",r0,O0.e)),l0!==O0.t&&(O0.t=X(h0,"fg",l0,O0.t)),Yf!==O0.a&&(O0.a=X(h0,"attributes",Yf,O0.a)),O0},{e:void 0,t:void 0,a:void 0}),U0})()}})),D(e,Y0),D(e,T),X(e,"flexDirection","column"),X(e,"gap",0),X(e,"paddingTop",1),K(Y0,()=>F("settings.general.language")),X(T,"wrapMode","word"),K(T,()=>F("settings.general.languageHint")),K(e,b(Zf,{each:Rz,children:(k)=>{let N0=()=>G(R8(k.id)),p0=()=>f.level()==="body"&&f.bodyRow()===N0(),b0=()=>f.currentLocale()===k.id;return(()=>{var U0=W("box"),h0=W("text");return D(U0,h0),X(U0,"flexDirection","row"),X(U0,"gap",1),X(U0,"paddingLeft",1),X(U0,"paddingRight",1),X(U0,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(N0()),f.selectLanguage(k.id)}),X(h0,"wrapMode","none"),K(h0,()=>b0()?"\u25CF ":" ",null),K(h0,()=>k.label,null),E((O0)=>{var r0=p0()?Y.primary:void 0,l0=p0()?Y.selectedListItemText:b0()?Y.accent:Y.text,Yf=p0()||b0()?t0.BOLD:void 0;return r0!==O0.e&&(O0.e=X(U0,"backgroundColor",r0,O0.e)),l0!==O0.t&&(O0.t=X(h0,"fg",l0,O0.t)),Yf!==O0.a&&(O0.a=X(h0,"attributes",Yf,O0.a)),O0},{e:void 0,t:void 0,a:void 0}),U0})()}}),null),D(Q0,t),D(Q0,V0),D(Q0,C0),X(Q0,"flexDirection","column"),X(Q0,"gap",0),X(Q0,"paddingTop",1),K(t,()=>F("settings.general.transparent")),X(V0,"wrapMode","word"),K(V0,()=>F("settings.general.transparentHint")),D(C0,$),X(C0,"flexDirection","row"),X(C0,"paddingLeft",1),X(C0,"paddingRight",1),X(C0,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(Z()),f.toggleTransparent()}),X($,"wrapMode","none"),K($,(()=>{var k=I0(()=>!!J.transparentBackground);return()=>k()?F("settings.general.on"):F("settings.general.off")})()),D(x,f0),D(x,u),X(x,"flexDirection","column"),X(x,"gap",0),X(x,"paddingTop",1),K(f0,()=>F("settings.general.focusAccent")),X(u,"wrapMode","word"),K(u,()=>F("settings.general.focusAccentHint")),K(x,b(Zf,{each:gz,children:(k)=>{let N0=()=>G(C8(k)),p0=()=>f.level()==="body"&&f.bodyRow()===N0(),b0=()=>J.focusAccent===k;return(()=>{var U0=W("box"),h0=W("text");return D(U0,h0),X(U0,"flexDirection","row"),X(U0,"gap",1),X(U0,"paddingLeft",1),X(U0,"paddingRight",1),X(U0,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(N0()),f.selectFocusAccent(k)}),X(h0,"wrapMode","none"),K(h0,()=>b0()?"\u25CF ":" ",null),K(h0,()=>F(`settings.general.accent${k.charAt(0).toUpperCase()}${k.slice(1)}`),null),E((O0)=>{var r0=p0()?Y.primary:void 0,l0=p0()?Y.selectedListItemText:b0()?Y.focusAccent:Y.text,Yf=p0()||b0()?t0.BOLD:void 0;return r0!==O0.e&&(O0.e=X(U0,"backgroundColor",r0,O0.e)),l0!==O0.t&&(O0.t=X(h0,"fg",l0,O0.t)),Yf!==O0.a&&(O0.a=X(h0,"attributes",Yf,O0.a)),O0},{e:void 0,t:void 0,a:void 0}),U0})()}}),null),D(G0,w),D(G0,n),D(G0,q0),D(G0,k0),X(G0,"flexDirection","column"),X(G0,"gap",0),X(G0,"paddingTop",1),K(w,()=>F("settings.general.notifications")),X(n,"wrapMode","word"),K(n,()=>F("settings.general.notificationsHint")),D(q0,W0),X(q0,"flexDirection","row"),X(q0,"gap",1),X(q0,"paddingLeft",1),X(q0,"paddingRight",1),X(q0,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(q()),f.toggleToast()}),D(W0,H0),X(W0,"wrapMode","none"),K(W0,()=>f.toastEnabled()?"[x]":"[ ]",H0),K(W0,()=>F("settings.general.toast"),null),D(k0,x0),X(k0,"flexDirection","row"),X(k0,"gap",1),X(k0,"paddingLeft",1),X(k0,"paddingRight",1),X(k0,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(Q()),f.toggleSound()}),D(x0,y0),X(x0,"wrapMode","none"),K(x0,()=>f.soundEnabled()?"[x]":"[ ]",y0),K(x0,()=>F("settings.general.sound"),null),D(Gf,m),D(Gf,L0),D(Gf,s),X(Gf,"flexDirection","column"),X(Gf,"gap",0),X(Gf,"paddingTop",1),K(m,()=>F("settings.general.zen")),X(L0,"wrapMode","word"),K(L0,()=>F("settings.general.zenHint")),D(s,R0),X(s,"flexDirection","row"),X(s,"gap",1),X(s,"paddingLeft",1),X(s,"paddingRight",1),X(s,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(H()),f.toggleZenKeepsTasks()}),D(R0,i0),X(R0,"wrapMode","none"),K(R0,()=>f.zenKeepsTasks()?"[x]":"[ ]",i0),K(R0,()=>F("settings.general.zenKeepTasks"),null),D($0,w0),D($0,v),D($0,J0),D($0,e0),X($0,"flexDirection","column"),X($0,"gap",0),X($0,"paddingTop",1),K(w0,()=>F("settings.general.surface")),X(v,"wrapMode","word"),K(v,()=>F("settings.general.surfaceHint")),D(J0,M0),X(J0,"flexDirection","row"),X(J0,"gap",1),X(J0,"paddingLeft",1),X(J0,"paddingRight",1),X(J0,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(B()),f.selectSurface("chattab")}),D(M0,_0),X(M0,"wrapMode","none"),K(M0,()=>f.settingsSurface()==="chattab"?"[x]":"[ ]",_0),K(M0,()=>F("settings.general.surfaceChattab"),null),D(e0,T0),X(e0,"flexDirection","row"),X(e0,"gap",1),X(e0,"paddingLeft",1),X(e0,"paddingRight",1),X(e0,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(V()),f.selectSurface("taskpanel")}),D(T0,Xf),X(T0,"wrapMode","none"),K(T0,()=>f.settingsSurface()==="taskpanel"?"[x]":"[ ]",Xf),K(T0,()=>F("settings.general.surfaceTaskpanel"),null),D(Qf,Rf),D(Qf,o),D(Qf,p),D(Qf,D0),X(Qf,"flexDirection","column"),X(Qf,"gap",0),X(Qf,"paddingTop",1),K(Rf,()=>F("settings.general.editor")),X(o,"wrapMode","word"),K(o,()=>F("settings.general.editorHint")),D(p,Z0),X(p,"flexDirection","row"),X(p,"gap",1),X(p,"paddingLeft",1),X(p,"paddingRight",1),X(p,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(j()),f.cycleEditorKind()}),X(Z0,"wrapMode","none"),K(Z0,()=>F("settings.general.editorRow",{kind:f.editorKind()})),D(D0,j0),X(D0,"flexDirection","row"),X(D0,"gap",1),X(D0,"paddingLeft",1),X(D0,"paddingRight",1),X(D0,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(U()),f.editEditorCustom()}),X(j0,"wrapMode","none"),K(j0,()=>F("settings.general.editorCustom",{cmd:f.editorCustomCommand().trim()||F("settings.general.editorCustomUnset")})),E((k)=>{var N0=Y.text,p0=t0.BOLD,b0=Y.textMuted,U0=Y.text,h0=t0.BOLD,O0=Y.textMuted,r0=Y.text,l0=t0.BOLD,Yf=Y.textMuted,S0=L()?Y.primary:void 0,xf=L()?Y.selectedListItemText:J.transparentBackground?Y.accent:Y.textMuted,df=t0.BOLD,d=Y.text,g0=t0.BOLD,Kf=Y.textMuted,qf=Y.text,Of=t0.BOLD,y=Y.textMuted,A0=O()?Y.primary:void 0,m0=O()?Y.selectedListItemText:f.toastEnabled()?Y.accent:Y.textMuted,u0=t0.BOLD,X1=M()?Y.primary:void 0,V1=M()?Y.selectedListItemText:f.soundEnabled()?Y.accent:Y.textMuted,tf=t0.BOLD,P1=Y.text,xJ=t0.BOLD,M1=Y.textMuted,yz=g()?Y.primary:void 0,YY=g()?Y.selectedListItemText:f.zenKeepsTasks()?Y.accent:Y.textMuted,c=t0.BOLD,i=Y.text,l=t0.BOLD,h=Y.textMuted,c0=I()?Y.primary:void 0,P0=I()?Y.selectedListItemText:f.settingsSurface()==="chattab"?Y.accent:Y.textMuted,F0=t0.BOLD,n0=a()?Y.primary:void 0,Hf=a()?Y.selectedListItemText:f.settingsSurface()==="taskpanel"?Y.accent:Y.textMuted,Lf=t0.BOLD,q1=Y.text,s1=t0.BOLD,zY=Y.textMuted,p8=N()?Y.primary:void 0,_8=N()?Y.selectedListItemText:Y.accent,o8=t0.BOLD,s8=A()?Y.primary:void 0,t8=A()?Y.selectedListItemText:f.editorKind()==="custom"?Y.text:Y.textMuted;return N0!==k.e&&(k.e=X(S,"fg",N0,k.e)),p0!==k.t&&(k.t=X(S,"attributes",p0,k.t)),b0!==k.a&&(k.a=X(_,"fg",b0,k.a)),U0!==k.o&&(k.o=X(Y0,"fg",U0,k.o)),h0!==k.i&&(k.i=X(Y0,"attributes",h0,k.i)),O0!==k.n&&(k.n=X(T,"fg",O0,k.n)),r0!==k.s&&(k.s=X(t,"fg",r0,k.s)),l0!==k.h&&(k.h=X(t,"attributes",l0,k.h)),Yf!==k.r&&(k.r=X(V0,"fg",Yf,k.r)),S0!==k.d&&(k.d=X(C0,"backgroundColor",S0,k.d)),xf!==k.l&&(k.l=X($,"fg",xf,k.l)),df!==k.u&&(k.u=X($,"attributes",df,k.u)),d!==k.c&&(k.c=X(f0,"fg",d,k.c)),g0!==k.w&&(k.w=X(f0,"attributes",g0,k.w)),Kf!==k.m&&(k.m=X(u,"fg",Kf,k.m)),qf!==k.f&&(k.f=X(w,"fg",qf,k.f)),Of!==k.y&&(k.y=X(w,"attributes",Of,k.y)),y!==k.g&&(k.g=X(n,"fg",y,k.g)),A0!==k.p&&(k.p=X(q0,"backgroundColor",A0,k.p)),m0!==k.b&&(k.b=X(W0,"fg",m0,k.b)),u0!==k.T&&(k.T=X(W0,"attributes",u0,k.T)),X1!==k.A&&(k.A=X(k0,"backgroundColor",X1,k.A)),V1!==k.O&&(k.O=X(x0,"fg",V1,k.O)),tf!==k.I&&(k.I=X(x0,"attributes",tf,k.I)),P1!==k.S&&(k.S=X(m,"fg",P1,k.S)),xJ!==k.W&&(k.W=X(m,"attributes",xJ,k.W)),M1!==k.C&&(k.C=X(L0,"fg",M1,k.C)),yz!==k.B&&(k.B=X(s,"backgroundColor",yz,k.B)),YY!==k.v&&(k.v=X(R0,"fg",YY,k.v)),c!==k.k&&(k.k=X(R0,"attributes",c,k.k)),i!==k.x&&(k.x=X(w0,"fg",i,k.x)),l!==k.j&&(k.j=X(w0,"attributes",l,k.j)),h!==k.q&&(k.q=X(v,"fg",h,k.q)),c0!==k.z&&(k.z=X(J0,"backgroundColor",c0,k.z)),P0!==k.P&&(k.P=X(M0,"fg",P0,k.P)),F0!==k.H&&(k.H=X(M0,"attributes",F0,k.H)),n0!==k.F&&(k.F=X(e0,"backgroundColor",n0,k.F)),Hf!==k.M&&(k.M=X(T0,"fg",Hf,k.M)),Lf!==k.D&&(k.D=X(T0,"attributes",Lf,k.D)),q1!==k.R&&(k.R=X(Rf,"fg",q1,k.R)),s1!==k.E&&(k.E=X(Rf,"attributes",s1,k.E)),zY!==k.L&&(k.L=X(o,"fg",zY,k.L)),p8!==k.N&&(k.N=X(p,"backgroundColor",p8,k.N)),_8!==k.G&&(k.G=X(Z0,"fg",_8,k.G)),o8!==k.U&&(k.U=X(Z0,"attributes",o8,k.U)),s8!==k.K&&(k.K=X(D0,"backgroundColor",s8,k.K)),t8!==k.V&&(k.V=X(j0,"fg",t8,k.V)),k},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0,w:void 0,m:void 0,f:void 0,y:void 0,g:void 0,p:void 0,b:void 0,T:void 0,A:void 0,O:void 0,I:void 0,S:void 0,W:void 0,C:void 0,B:void 0,v:void 0,k:void 0,x:void 0,j:void 0,q:void 0,z:void 0,P:void 0,H:void 0,F:void 0,M:void 0,D:void 0,R:void 0,E:void 0,L:void 0,N:void 0,G:void 0,U:void 0,K:void 0,V:void 0}),R})()}function e4(f){let{theme:J}=d0(),Y=()=>f.vendors.length;return(()=>{var z=W("box"),G=W("text"),Z=W("text"),q=W("box"),Q=W("box"),H=W("text");return D(z,G),D(z,Z),D(z,q),X(z,"flexDirection","column"),X(z,"gap",1),K(G,()=>F("settings.engines.title")),X(Z,"wrapMode","word"),K(Z,()=>F("settings.engines.hint")),D(q,Q),X(q,"flexDirection","column"),X(q,"gap",0),K(q,b(Zf,{get each(){return f.vendors},children:(B,V)=>{let j=()=>f.level()==="body"&&f.bodyRow()===V();return(()=>{var U=W("box"),L=W("text"),O=W("text"),M=W("text");return D(U,L),D(U,O),D(U,M),X(U,"flexDirection","row"),X(U,"gap",1),X(U,"paddingLeft",1),X(U,"paddingRight",1),X(U,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(V()),f.editEngine(B)}),X(L,"wrapMode","none"),K(L,()=>f.isDefaultEngine(B)?"\u25CF":" "),X(O,"wrapMode","none"),K(O,()=>f.displayName(B)),X(M,"wrapMode","none"),K(M,()=>f.commandText(B),null),K(M,(()=>{var g=I0(()=>!!f.isDefault(B));return()=>g()?F("settings.engines.defaultTag"):I0(()=>!!f.isCustom(B))()?F("settings.engines.customTag"):""})(),null),E((g)=>{var I=j()?J.primary:void 0,a=j()?J.selectedListItemText:J.accent,N=t0.BOLD,A=j()?J.selectedListItemText:J.text,R=t0.BOLD,S=j()?J.selectedListItemText:f.isDefault(B)?J.textMuted:J.accent;return I!==g.e&&(g.e=X(U,"backgroundColor",I,g.e)),a!==g.t&&(g.t=X(L,"fg",a,g.t)),N!==g.a&&(g.a=X(L,"attributes",N,g.a)),A!==g.o&&(g.o=X(O,"fg",A,g.o)),R!==g.i&&(g.i=X(O,"attributes",R,g.i)),S!==g.n&&(g.n=X(M,"fg",S,g.n)),g},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),U})()}}),Q),D(Q,H),X(Q,"flexDirection","row"),X(Q,"paddingLeft",1),X(Q,"paddingRight",1),X(Q,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(Y()),f.onAddEngine()}),X(H,"wrapMode","none"),K(H,()=>F("settings.engines.addEngine")),E((B)=>{var V=J.text,j=t0.BOLD,U=J.textMuted,L=f.level()==="body"&&f.bodyRow()===Y()?J.primary:void 0,O=f.level()==="body"&&f.bodyRow()===Y()?J.selectedListItemText:J.primary;return V!==B.e&&(B.e=X(G,"fg",V,B.e)),j!==B.t&&(B.t=X(G,"attributes",j,B.t)),U!==B.a&&(B.a=X(Z,"fg",U,B.a)),L!==B.o&&(B.o=X(Q,"backgroundColor",L,B.o)),O!==B.i&&(B.i=X(H,"fg",O,B.i)),B},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),z})()}function fD(f){let{theme:J}=d0(),Y=(z)=>z.binary.found?`Binary: ${z.binary.path}`:`Binary: ${z.binary.error}`;return(()=>{var z=W("box"),G=W("text"),Z=W("text"),q=W("box"),Q=W("text"),H=W("box"),B=W("text"),V=W("box"),j=W("text");return D(z,G),D(z,Z),D(z,q),D(z,H),D(z,V),X(z,"flexDirection","column"),X(z,"gap",1),K(G,()=>F("settings.accounts.title")),X(Z,"wrapMode","word"),K(Z,()=>F("settings.accounts.hint")),D(q,Q),X(q,"flexDirection","column"),X(q,"gap",0),D(Q,E0("claude-code")),K(q,b(X0,{get when(){return f.claudeStatus()===null},get children(){var U=W("text");return K(U,()=>F("settings.accounts.checking")),E((L)=>X(U,"fg",J.textMuted,L)),U}}),null),K(q,b(X0,{get when(){return f.claudeStatus()},children:(U)=>(()=>{var L=W("box"),O=W("text");return D(L,O),X(L,"flexDirection","column"),X(L,"gap",0),X(O,"wrapMode","word"),K(O,()=>Y(U())),K(L,()=>{let M=U().account;if(M.kind==="oauth"){let g=[M.organization,M.billingType].filter((I)=>!!I).join(" \xB7 ");return(()=>{var I=W("text");return X(I,"wrapMode","word"),K(I,()=>F("settings.accounts.loggedIn",{email:M.email}),null),K(I,g?` (${g})`:"",null),E((a)=>X(I,"fg",J.success,a)),I})()}return(()=>{var g=W("text");return K(g,()=>F("settings.accounts.notLoggedIn")),E((I)=>X(g,"fg",J.textMuted,I)),g})()},null),K(L,b(X0,{get when(){return U().accountError},children:(M)=>(()=>{var g=W("text");return X(g,"wrapMode","word"),K(g,()=>`! ${M()}`),E((I)=>X(g,"fg",J.warning,I)),g})()}),null),E((M)=>X(O,"fg",U().binary.found?J.textMuted:J.warning,M)),L})()}),null),D(H,B),X(H,"flexDirection","column"),X(H,"gap",0),D(B,E0("codex")),K(H,b(X0,{get when(){return f.codexStatus()===null},get children(){var U=W("text");return K(U,()=>F("settings.accounts.checking")),E((L)=>X(U,"fg",J.textMuted,L)),U}}),null),K(H,b(X0,{get when(){return f.codexStatus()},children:(U)=>(()=>{var L=W("box"),O=W("text");return D(L,O),X(L,"flexDirection","column"),X(L,"gap",0),X(O,"wrapMode","word"),K(O,()=>Y(U())),K(L,()=>{let M=U().account;if(M.kind==="chatgpt")return(()=>{var g=W("text");return X(g,"wrapMode","word"),K(g,()=>F("settings.accounts.chatgptLogin",{email:M.email}),null),K(g,(()=>{var I=I0(()=>!!M.plan);return()=>I()?` (${M.plan})`:""})(),null),E((I)=>X(g,"fg",J.success,I)),g})();if(M.kind==="apikey")return(()=>{var g=W("text");return K(g,()=>F("settings.accounts.apiKeyConfigured")),E((I)=>X(g,"fg",J.success,I)),g})();return(()=>{var g=W("text");return K(g,()=>F("settings.accounts.notLoggedIn")),E((I)=>X(g,"fg",J.textMuted,I)),g})()},null),K(L,b(X0,{get when(){return U().accountError},children:(M)=>(()=>{var g=W("text");return X(g,"wrapMode","word"),K(g,()=>`! ${M()}`),E((I)=>X(g,"fg",J.warning,I)),g})()}),null),E((M)=>X(O,"fg",U().binary.found?J.textMuted:J.warning,M)),L})()}),null),D(V,j),X(V,"flexDirection","column"),X(V,"gap",0),D(j,E0("copilot")),K(V,b(X0,{get when(){return f.copilotStatus()===null},get children(){var U=W("text");return K(U,()=>F("settings.accounts.checking")),E((L)=>X(U,"fg",J.textMuted,L)),U}}),null),K(V,b(X0,{get when(){return f.copilotStatus()},children:(U)=>(()=>{var L=W("box"),O=W("text");return D(L,O),X(L,"flexDirection","column"),X(L,"gap",0),X(O,"wrapMode","word"),K(O,()=>Y(U())),K(L,()=>{let M=U().account;if(M.kind==="token")return(()=>{var g=W("text");return K(g,()=>F("settings.accounts.tokenConfigured",{source:M.source})),E((I)=>X(g,"fg",J.success,I)),g})();if(M.kind==="oauth")return(()=>{var g=W("text");return K(g,()=>F("settings.accounts.copilotDetected")),E((I)=>X(g,"fg",J.success,I)),g})();return(()=>{var g=W("text");return K(g,()=>F("settings.accounts.notLoggedIn")),E((I)=>X(g,"fg",J.textMuted,I)),g})()},null),K(L,b(X0,{get when(){return U().accountError},children:(M)=>(()=>{var g=W("text");return X(g,"wrapMode","word"),K(g,()=>`! ${M()}`),E((I)=>X(g,"fg",J.warning,I)),g})()}),null),E((M)=>X(O,"fg",U().binary.found?J.textMuted:J.warning,M)),L})()}),null),E((U)=>{var L=J.text,O=t0.BOLD,M=J.textMuted,g=J.text,I=t0.BOLD,a=J.text,N=t0.BOLD,A=J.text,R=t0.BOLD;return L!==U.e&&(U.e=X(G,"fg",L,U.e)),O!==U.t&&(U.t=X(G,"attributes",O,U.t)),M!==U.a&&(U.a=X(Z,"fg",M,U.a)),g!==U.o&&(U.o=X(Q,"fg",g,U.o)),I!==U.i&&(U.i=X(Q,"attributes",I,U.i)),a!==U.n&&(U.n=X(B,"fg",a,U.n)),N!==U.s&&(U.s=X(B,"attributes",N,U.s)),A!==U.h&&(U.h=X(j,"fg",A,U.h)),R!==U.r&&(U.r=X(j,"attributes",R,U.r)),U},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0}),z})()}function JD(f){let{theme:J}=d0(),Y=()=>f.level()==="body",z=()=>Y()&&f.bodyRow()===0,G=()=>Y()&&f.bodyRow()===1,Z=()=>Y()&&f.bodyRow()===2,q=(H)=>H?J.primary:J.textMuted,Q=(H)=>H?t0.BOLD|t0.UNDERLINE:void 0;return(()=>{var H=W("box"),B=W("text"),V=W("text"),j=W("box"),U=W("box"),L=W("text"),O=W("input"),M=W("box"),g=W("text"),I=W("input"),a=W("box"),N=W("text");return D(H,B),D(H,V),D(H,j),X(H,"flexDirection","column"),X(H,"gap",1),K(B,()=>F("settings.feedback.title")),X(V,"wrapMode","word"),K(V,()=>F("settings.feedback.hint")),D(j,U),D(j,M),D(j,a),X(j,"flexDirection","column"),X(j,"gap",1),D(U,L),D(U,O),X(U,"gap",0),K(L,()=>F("settings.feedback.titleLabel")),X(O,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(0)}),X(O,"onInput",(A)=>f.setTitle(Z1(A))),X(O,"onSubmit",()=>f.onTitleSubmit()),D(M,g),D(M,I),X(M,"gap",0),K(g,()=>F("settings.feedback.descriptionLabel")),X(I,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(1)}),X(I,"onInput",(A)=>f.setBody(Z1(A))),X(I,"onSubmit",()=>f.onBodySubmit()),D(a,N),X(a,"flexDirection","row"),X(a,"paddingLeft",1),X(a,"paddingRight",1),X(a,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(2),f.submit()}),K(N,()=>F("settings.feedback.send")),K(H,b(X0,{get when(){return f.status()},get children(){var A=W("text");return X(A,"wrapMode","word"),K(A,()=>f.status()),E((R)=>X(A,"fg",f.status().startsWith("error:")?J.warning:J.success,R)),A}}),null),E((A)=>{var R=J.text,S=t0.BOLD,_=J.textMuted,z0=q(z()),e=Q(z()),Y0=f.title(),T=F("settings.feedback.titlePlaceholder"),Q0=z(),t=q(G()),V0=Q(G()),C0=f.body(),$=F("settings.feedback.descriptionPlaceholder"),x=G(),f0=Z()?J.primary:J.backgroundElement,u=Z()?J.selectedListItemText:J.accent,G0=t0.BOLD;return R!==A.e&&(A.e=X(B,"fg",R,A.e)),S!==A.t&&(A.t=X(B,"attributes",S,A.t)),_!==A.a&&(A.a=X(V,"fg",_,A.a)),z0!==A.o&&(A.o=X(L,"fg",z0,A.o)),e!==A.i&&(A.i=X(L,"attributes",e,A.i)),Y0!==A.n&&(A.n=X(O,"value",Y0,A.n)),T!==A.s&&(A.s=X(O,"placeholder",T,A.s)),Q0!==A.h&&(A.h=X(O,"focused",Q0,A.h)),t!==A.r&&(A.r=X(g,"fg",t,A.r)),V0!==A.d&&(A.d=X(g,"attributes",V0,A.d)),C0!==A.l&&(A.l=X(I,"value",C0,A.l)),$!==A.u&&(A.u=X(I,"placeholder",$,A.u)),x!==A.c&&(A.c=X(I,"focused",x,A.c)),f0!==A.w&&(A.w=X(a,"backgroundColor",f0,A.w)),u!==A.m&&(A.m=X(N,"fg",u,A.m)),G0!==A.f&&(A.f=X(N,"attributes",G0,A.f)),A},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0,w:void 0,m:void 0,f:void 0}),H})()}function YD(f){let{theme:J}=d0(),Y=()=>f.level()==="body"&&f.bodyRow()===0,z=()=>f.level()==="body"&&f.bodyRow()===1,G=()=>cZ(mZ(f.hasDaemon),"remote-projects"),Z=()=>f.level()==="body"&&f.bodyRow()===G(),q=()=>cZ(mZ(f.hasDaemon),"auto-status"),Q=()=>f.level()==="body"&&f.bodyRow()===q(),H=()=>cZ(mZ(f.hasDaemon),"dispatcher"),B=()=>f.level()==="body"&&f.bodyRow()===H();return(()=>{var V=W("box"),j=W("text"),U=W("text"),L=W("box"),O=W("text"),M=W("text"),g=W("box"),I=W("text"),a=W("text"),N=W("box"),A=W("text"),R=W("text"),S=W("box"),_=W("text"),z0=W("text"),e=W("box"),Y0=W("text");return D(V,j),D(V,U),D(V,L),D(V,M),D(V,g),X(V,"flexDirection","column"),X(V,"gap",1),K(j,()=>F("settings.dev.reset")),X(U,"wrapMode","word"),K(U,()=>F("settings.dev.resetHint")),D(L,O),X(L,"flexDirection","row"),X(L,"paddingLeft",1),X(L,"paddingRight",1),X(L,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(0),f.confirmReset()}),K(O,()=>F("settings.dev.resetButton")),K(V,b(X0,{get when(){return f.hasDaemon},get children(){var T=W("box"),Q0=W("text"),t=W("text"),V0=W("box"),C0=W("text");return D(T,Q0),D(T,t),D(T,V0),X(T,"flexDirection","column"),X(T,"gap",0),X(T,"paddingTop",1),K(Q0,()=>F("settings.dev.restart")),X(t,"wrapMode","word"),K(t,()=>F("settings.dev.restartHint")),D(V0,C0),X(V0,"flexDirection","row"),X(V0,"paddingLeft",1),X(V0,"paddingRight",1),X(V0,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(1),f.confirmRestartDaemon()}),K(C0,()=>F("settings.dev.restartButton")),E(($)=>{var x=J.text,f0=t0.BOLD,u=J.textMuted,G0=z()?J.primary:J.backgroundElement,w=z()?J.selectedListItemText:J.accent,n=t0.BOLD;return x!==$.e&&($.e=X(Q0,"fg",x,$.e)),f0!==$.t&&($.t=X(Q0,"attributes",f0,$.t)),u!==$.a&&($.a=X(t,"fg",u,$.a)),G0!==$.o&&($.o=X(V0,"backgroundColor",G0,$.o)),w!==$.i&&($.i=X(C0,"fg",w,$.i)),n!==$.n&&($.n=X(C0,"attributes",n,$.n)),$},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),T}}),M),X(M,"wrapMode","word"),K(M,()=>F("settings.dev.doctorHint")),D(g,I),D(g,a),D(g,N),D(g,R),D(g,S),D(g,z0),D(g,e),X(g,"flexDirection","column"),X(g,"gap",0),X(g,"paddingTop",1),K(I,()=>F("settings.dev.experimental")),X(a,"wrapMode","word"),K(a,()=>F("settings.dev.remoteHint")),D(N,A),X(N,"flexDirection","row"),X(N,"paddingLeft",1),X(N,"paddingRight",1),X(N,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(G()),f.toggleRemoteProjects()}),K(A,(()=>{var T=I0(()=>!!f.remoteProjectsEnabled());return()=>T()?F("settings.dev.remoteOn"):F("settings.dev.remoteOff")})()),X(R,"wrapMode","word"),K(R,()=>F("settings.dev.autoStatusHint")),D(S,_),X(S,"flexDirection","row"),X(S,"paddingLeft",1),X(S,"paddingRight",1),X(S,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(q()),f.toggleAutoStatus()}),K(_,(()=>{var T=I0(()=>!!f.autoStatusEnabled());return()=>T()?F("settings.dev.autoStatusOn"):F("settings.dev.autoStatusOff")})()),X(z0,"wrapMode","word"),K(z0,()=>F("settings.dev.dispatcherHint")),D(e,Y0),X(e,"flexDirection","row"),X(e,"paddingLeft",1),X(e,"paddingRight",1),X(e,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(H()),f.toggleDispatcher()}),K(Y0,(()=>{var T=I0(()=>!!f.dispatcherEnabled());return()=>T()?F("settings.dev.dispatcherOn"):F("settings.dev.dispatcherOff")})()),E((T)=>{var Q0=J.text,t=t0.BOLD,V0=J.textMuted,C0=Y()?J.primary:J.backgroundElement,$=Y()?J.selectedListItemText:J.warning,x=t0.BOLD,f0=J.textMuted,u=J.text,G0=t0.BOLD,w=J.textMuted,n=Z()?J.primary:J.backgroundElement,q0=Z()?J.selectedListItemText:J.text,W0=f.remoteProjectsEnabled()?t0.BOLD:void 0,H0=J.textMuted,k0=Q()?J.primary:J.backgroundElement,x0=Q()?J.selectedListItemText:J.text,y0=f.autoStatusEnabled()?t0.BOLD:void 0,Gf=J.textMuted,m=B()?J.primary:J.backgroundElement,L0=B()?J.selectedListItemText:J.text,s=f.dispatcherEnabled()?t0.BOLD:void 0;return Q0!==T.e&&(T.e=X(j,"fg",Q0,T.e)),t!==T.t&&(T.t=X(j,"attributes",t,T.t)),V0!==T.a&&(T.a=X(U,"fg",V0,T.a)),C0!==T.o&&(T.o=X(L,"backgroundColor",C0,T.o)),$!==T.i&&(T.i=X(O,"fg",$,T.i)),x!==T.n&&(T.n=X(O,"attributes",x,T.n)),f0!==T.s&&(T.s=X(M,"fg",f0,T.s)),u!==T.h&&(T.h=X(I,"fg",u,T.h)),G0!==T.r&&(T.r=X(I,"attributes",G0,T.r)),w!==T.d&&(T.d=X(a,"fg",w,T.d)),n!==T.l&&(T.l=X(N,"backgroundColor",n,T.l)),q0!==T.u&&(T.u=X(A,"fg",q0,T.u)),W0!==T.c&&(T.c=X(A,"attributes",W0,T.c)),H0!==T.w&&(T.w=X(R,"fg",H0,T.w)),k0!==T.m&&(T.m=X(S,"backgroundColor",k0,T.m)),x0!==T.f&&(T.f=X(_,"fg",x0,T.f)),y0!==T.y&&(T.y=X(_,"attributes",y0,T.y)),Gf!==T.g&&(T.g=X(z0,"fg",Gf,T.g)),m!==T.p&&(T.p=X(e,"backgroundColor",m,T.p)),L0!==T.b&&(T.b=X(Y0,"fg",L0,T.b)),s!==T.T&&(T.T=X(Y0,"attributes",s,T.T)),T},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0,w:void 0,m:void 0,f:void 0,y:void 0,g:void 0,p:void 0,b:void 0,T:void 0}),V})()}function zD(){let{theme:f}=d0(),J=O4(),Y=Object.keys(EB).sort();return(()=>{var z=W("box"),G=W("text"),Z=W("text"),q=W("box"),Q=W("text"),H=W("text"),B=W("text"),V=W("text");return D(z,G),D(z,Z),D(z,q),D(z,B),D(z,V),X(z,"flexDirection","column"),X(z,"gap",1),K(G,()=>F("settings.keybindings.title")),X(Z,"wrapMode","word"),K(Z,()=>F("settings.keybindings.hint")),D(q,Q),D(q,H),X(q,"flexDirection","column"),X(q,"gap",0),K(Q,()=>F("settings.keybindings.configFile")),X(H,"wrapMode","word"),K(H,()=>J.path,null),K(H,(()=>{var j=I0(()=>!!J.exists);return()=>j()?"":F("settings.keybindings.notCreated")})(),null),K(z,b(X0,{get when(){return!J.exists},get children(){var j=W("box"),U=W("text"),L=W("text"),O=W("text"),M=W("text"),g=W("text"),I=W("text"),a=W("text"),N=W("text"),A=W("text"),R=W("text");return D(j,U),D(j,L),D(j,O),D(j,M),D(j,g),D(j,I),D(j,a),D(j,N),D(j,A),D(j,R),X(j,"flexDirection","column"),X(j,"gap",0),K(U,()=>F("settings.keybindings.example")),D(L,E0("bindings:")),D(O,E0(" chat.fork.new: ctrl+g # string = one chord")),D(M,E0(" sidebar.select: [enter] # list = several chords")),D(g,E0(" files.createPR: null # null = unbind")),D(I,E0(" tmux.tab.new: ctrl+y # tmux session key (see below)")),D(a,E0(" tmux.layout.workspaceSplit: g # prefix g")),D(N,E0("darwin: # platform overlay (also: linux)")),D(A,E0(" bindings:")),D(R,E0(" palette.open: [cmd+p, ctrl+p]")),E((S)=>{var _=f.text,z0=t0.BOLD,e=f.textMuted,Y0=f.textMuted,T=f.textMuted,Q0=f.textMuted,t=f.textMuted,V0=f.textMuted,C0=f.textMuted,$=f.textMuted,x=f.textMuted;return _!==S.e&&(S.e=X(U,"fg",_,S.e)),z0!==S.t&&(S.t=X(U,"attributes",z0,S.t)),e!==S.a&&(S.a=X(L,"fg",e,S.a)),Y0!==S.o&&(S.o=X(O,"fg",Y0,S.o)),T!==S.i&&(S.i=X(M,"fg",T,S.i)),Q0!==S.n&&(S.n=X(g,"fg",Q0,S.n)),t!==S.s&&(S.s=X(I,"fg",t,S.s)),V0!==S.h&&(S.h=X(a,"fg",V0,S.h)),C0!==S.r&&(S.r=X(N,"fg",C0,S.r)),$!==S.d&&(S.d=X(A,"fg",$,S.d)),x!==S.l&&(S.l=X(R,"fg",x,S.l)),S},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0}),j}}),B),K(z,b(X0,{get when(){return J.exists},get children(){var j=W("box"),U=W("text");return D(j,U),X(j,"flexDirection","column"),X(j,"gap",0),K(U,()=>F("settings.keybindings.overridesApplied")),K(j,b(X0,{get when(){return J.applied.length===0},get children(){var L=W("text");return K(L,()=>F("settings.keybindings.none")),E((O)=>X(L,"fg",f.textMuted,O)),L}}),null),K(j,b(Zf,{get each(){return J.applied},children:(L)=>(()=>{var O=W("text");return X(O,"wrapMode","word"),K(O,()=>`${L.id} \u2192 ${L.keys.length>0?L.keys.join(" / "):"(unbound)"} (default: ${L.defaultKeys.join(" / ")})`),E((M)=>X(O,"fg",f.text,M)),O})()}),null),E((L)=>{var O=f.text,M=t0.BOLD;return O!==L.e&&(L.e=X(U,"fg",O,L.e)),M!==L.t&&(L.t=X(U,"attributes",M,L.t)),L},{e:void 0,t:void 0}),j}}),B),K(z,b(X0,{get when(){return J.warnings.length>0},get children(){var j=W("box"),U=W("text");return D(j,U),X(j,"flexDirection","column"),X(j,"gap",0),K(U,()=>F("settings.keybindings.warnings")),K(j,b(Zf,{get each(){return J.warnings},children:(L)=>(()=>{var O=W("text");return X(O,"wrapMode","word"),K(O,`! ${L}`),E((M)=>X(O,"fg",f.warning,M)),O})()}),null),E((L)=>{var O=f.warning,M=t0.BOLD;return O!==L.e&&(L.e=X(U,"fg",O,L.e)),M!==L.t&&(L.t=X(U,"attributes",M,L.t)),L},{e:void 0,t:void 0}),j}}),B),D(B,E0("tmux session keys use the same file: tmux.tab.new (ctrl+t), tmux.tab.prev/next (ctrl+[/]), tmux.tab.close (ctrl+w), tmux.tab.rename (f2), tmux.tab.chooseEngine (ctrl+shift+t), tmux.detach (ctrl+q), tmux.focus (4 chords, left/down/up/right), and prefix layout keys: workspaceSplit (s), workspaceClose (x), workspaceReset (r), tasksToggle (a), opsToggle (o), terminalToggle (z). They apply when a session is (re)built.")),X(B,"wrapMode","word"),X(V,"wrapMode","word"),K(V,()=>`Fixed (not rebindable): ${Y.join(", ")}.`),E((j)=>{var U=f.text,L=t0.BOLD,O=f.textMuted,M=f.text,g=t0.BOLD,I=f.textMuted,a=f.textMuted,N=f.textMuted;return U!==j.e&&(j.e=X(G,"fg",U,j.e)),L!==j.t&&(j.t=X(G,"attributes",L,j.t)),O!==j.a&&(j.a=X(Z,"fg",O,j.a)),M!==j.o&&(j.o=X(Q,"fg",M,j.o)),g!==j.i&&(j.i=X(Q,"attributes",g,j.i)),I!==j.n&&(j.n=X(H,"fg",I,j.n)),a!==j.s&&(j.s=X(B,"fg",a,j.s)),N!==j.h&&(j.h=X(V,"fg",N,j.h)),j},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0}),z})()}var GD=C(()=>{P();P();P();P();P();P();P();P();Wf();Q8();Ef();G1();NG();Fq();yG();N8()});import{TextAttributes as Py}from"@opentui/core";function vy(f){return f.split(/[-_]+/).filter((J)=>J.length>0).map((J)=>J.charAt(0).toUpperCase()+J.slice(1)).join(" ")}function Nz(f){let J=Pf(),Y=d0(),z=Y1(),{theme:G}=Y,[Z,q]=r("sidebar"),[Q,H]=r("general"),[B,V]=r(0),[j,U]=r(0),[L,O]=r(""),[M,g]=r(""),[I,a]=r(""),N=K0(()=>Y.all().slice().sort()),[,A]=r(Math.max(0,N().findIndex((d)=>d===Y.selected))),R=r4(f.orchestrator),[S,_]=r(null),[z0,e]=r(null),[Y0,T]=r(null),Q0=!1;ff(()=>{if(Q()!=="accounts"||Q0)return;Q0=!0,IX().then(_),TX().then(e),uX().then(T)});function t(){return o4(Q(),{themeNames:N(),focusAccentSlots:gz,engineList:w0(),hasDaemon:R})}function V0(){return t().length}function C0(){return jz(f.kv.get(pJ,Bz))}function $(d){if(Y.selected===d)return;if(!Y.set(d))return;f.kv.set("activeTheme",d),f.onVisualPrefsChange?.()}function x(){return _j()}function f0(d){if(_j()===d)return;uZ(d),f.kv.set(kQ,d),f.onVisualPrefsChange?.()}function u(d){if(Y.transparentBackground===d)return;Y.setTransparentBackground(d),f.kv.set("transparentBackground",d),f.onVisualPrefsChange?.()}function G0(){u(!Y.transparentBackground)}function w(d){if(Y.focusAccent===d)return;Y.setFocusAccent(d),f.kv.set("focusAccent",d),f.onVisualPrefsChange?.()}function n(d){f.kv.set(pJ,d)}function q0(){return f.kv.get("notifications.toast.enabled",!0)!==!1}function W0(){return f.kv.get("notifications.sound.enabled",!0)!==!1}function H0(){f.kv.set("notifications.toast.enabled",!q0())}function k0(){f.kv.set("notifications.sound.enabled",!W0())}function x0(){return f.kv.get(mq,!0)!==!1}function y0(){f.kv.set(mq,!x0())}function Gf(){return f.kv.get("experimental.remoteProjects",!1)===!0}function m(){f.kv.set("experimental.remoteProjects",!Gf())}function L0(){return f.kv.get(Zz,!1)===!0}function s(){f.kv.set(Zz,!L0())}function R0(){return f.kv.get(Xz,!1)===!0}function i0(){f.kv.set(Xz,!R0())}function $0(){let d=f.kv.get("customEngineIds",[]);return Array.isArray(d)?d.filter((g0)=>typeof g0==="string"&&g0.trim().length>0):[]}function w0(){return[...mf,...$0()]}function v(d){let g0=f.kv.get(jJ(d),"");return typeof g0==="string"?g0.trim():""}function J0(d){return v(d)||QZ(d).join(" ")}function M0(d){return Q1(d)&&v(d).length===0&&!e0(d)}function _0(d){let g0=f.kv.get(WJ(d),"");return typeof g0==="string"?g0.trim():""}function e0(d){return _0(d).length>0}function T0(d){return _0(d)||NB[d]||d}let[Xf,Qf]=r(kf("lastSelectedVendor")??yf);function Rf(d){return Xf()===d}function o(d){af("lastSelectedVendor",d),f.kv.set("lastSelectedVendor",d),Qf(d)}async function p(d){let g0=await fY.show(J,J0(d),{dialogTitle:`${T0(d)} launch command`,fieldLabel:"command",submitLabel:"save",allowEmpty:!0});if(g0===void 0)return;f.kv.set(jJ(d),g0.trim())}async function Z0(d){let g0=await fY.show(J,T0(d),{dialogTitle:`${T0(d)} display name (blank = default)`,fieldLabel:"name",submitLabel:"save",allowEmpty:!0});if(g0===void 0)return;f.kv.set(WJ(d),g0.trim())}function D0(d){if(f.kv.set(jJ(d),""),f.kv.set(WJ(d),""),!Q1(d))f.kv.set("customEngineIds",$0().filter((g0)=>g0!==d)),U((g0)=>Math.max(0,Math.min(g0,w0().length)))}async function j0(){let d=await fY.show(J,"",{dialogTitle:"Add engine",fieldLabel:"id",submitLabel:"next",placeholder:"lowercase slug, e.g. aider"});if(d===void 0)return;let g0=d.trim().toLowerCase();if(!g0||Q1(g0)||$0().includes(g0))return;let Kf=await fY.show(J,"",{dialogTitle:`Add engine \xB7 ${g0}`,fieldLabel:"command",submitLabel:"next",placeholder:"e.g. aider --model sonnet"});if(Kf===void 0)return;let qf=await fY.show(J,g0,{dialogTitle:`Add engine \xB7 ${g0}`,fieldLabel:"name",submitLabel:"add",allowEmpty:!0});if(f.kv.set("customEngineIds",[...$0(),g0]),Kf.trim())f.kv.set(jJ(g0),Kf.trim());let Of=qf?.trim()??"";f.kv.set(WJ(g0),Of&&Of!==g0?Of:vy(g0))}function k(){if(Q()!=="engines"||Z()!=="body")return null;let d=uQ(t(),j());return d?.kind==="engine"?d.vendor:null}function N0(){return pz(f.kv.get(rJ,Gq))}function p0(){let d=Hz.indexOf(N0()),g0=Hz[(d+1)%Hz.length];if(g0)f.kv.set(rJ,g0)}function b0(){let d=f.kv.get(AY,"");return typeof d==="string"?d:""}async function U0(){let d=await fY.show(J,b0(),{dialogTitle:"Custom editor command (use {file} for the path)",fieldLabel:"command",submitLabel:"save",allowEmpty:!0});if(d===void 0)return;let g0=d.trim();if(f.kv.set(AY,g0),g0)f.kv.set(rJ,"custom")}async function h0(){a("submitting...");try{let d=LG({title:L(),body:M()});a(`sent: ${d.url}`),O(""),g(""),U(0)}catch(d){a(`error: ${d instanceof Error?d.message:String(d)}`)}}let O0=()=>Q()==="feedback"&&Z()==="body";function r0(d){let g0=j()+d;if(g0<0||g0>2){q("sidebar");return}U(g0)}function l0(){if(Z()!=="sidebar"||V0()===0)return;if(q("body"),U(0),Q()==="general")A(0)}function Yf(d){if(Z()==="sidebar"){let qf=(B()+d+kz.length)%kz.length;V(qf);let Of=kz[qf];if(Of)H(Of.id),U(0);return}let g0=V0();if(g0===0)return;let Kf=(j()+d+g0)%g0;if(U(Kf),uQ(t(),Kf)?.kind==="theme")A(Kf)}function S0(d){H(d),V(kz.findIndex((g0)=>g0.id===d)),U(0),q("sidebar")}let xf={theme:(d)=>$(d.name),language:(d)=>f0(d.locale),transparent:()=>G0(),focusAccent:(d)=>w(d.slot),toast:()=>H0(),sound:()=>k0(),zenKeepTasks:()=>y0(),surface:(d)=>n(d.surface),editorKind:()=>p0(),editorCustom:()=>void U0(),engine:(d)=>void p(d.vendor),engineAdd:()=>void j0(),feedbackTitle:()=>U(0),feedbackBody:()=>U(1),feedbackSend:()=>void h0(),devReset:()=>void A8(J,f.kv,z),devRestartDaemon:()=>void g8(J,f.orchestrator,z),devRemoteProjects:()=>m(),devAutoStatus:()=>s(),devDispatcher:()=>i0()};function df(){let d=uQ(t(),j());if(!d)return;xf[d.kind](d)}return Df(()=>({enabled:(!f.standalone||J.stack.length===0)&&!O0(),bindings:[{key:"down",cmd:()=>Yf(1)},{key:"up",cmd:()=>Yf(-1)},{key:"j",cmd:()=>Yf(1)},{key:"k",cmd:()=>Yf(-1)},{key:"tab",cmd:()=>Yf(1)},{key:"right",cmd:l0},{key:"l",cmd:l0},{key:"left",cmd:()=>q("sidebar")},{key:"h",cmd:()=>q("sidebar")},{key:"return",cmd:()=>{if(Z()==="sidebar"){l0();return}df()}},{key:"t",cmd:G0},{key:"r",cmd:()=>{let d=k();if(d)Z0(d)}},{key:"x",cmd:()=>{let d=k();if(d)D0(d)}},{key:"d",cmd:()=>{let d=k();if(d)o(d)}}]})),Df(()=>({enabled:O0(),bindings:[{key:"tab",cmd:()=>r0(1)},{key:"shift+tab",cmd:()=>r0(-1)}]})),Df(()=>({enabled:O0()&&j()===2,bindings:[{key:"return",cmd:()=>void h0()}]})),(()=>{var d=W("box"),g0=W("box"),Kf=W("text"),qf=W("text"),Of=W("box"),y=W("box"),A0=W("box"),m0=W("text");return D(d,g0),D(d,Of),D(d,A0),X(d,"paddingLeft",2),X(d,"paddingRight",2),X(d,"paddingBottom",1),X(d,"gap",1),D(g0,Kf),D(g0,qf),X(g0,"flexDirection","row"),X(g0,"justifyContent","space-between"),K(Kf,()=>F("settings.title")),X(qf,"onMouseUp",()=>f.onClose()),K(qf,()=>F("settings.esc")),D(Of,y),X(Of,"flexDirection","row"),X(Of,"gap",2),K(Of,b(s4,{level:Z,cursor:B,switchSection:S0}),y),X(y,"flexGrow",1),X(y,"flexShrink",1),X(y,"flexDirection","column"),X(y,"gap",1),K(y,b(X0,{get when(){return Q()==="general"},get children(){return b(t4,{level:Z,bodyRow:j,setLevel:q,setBodyRow:U,themeNames:N,setThemeCursor:A,selectTheme:$,currentLocale:x,selectLanguage:f0,toggleTransparent:G0,selectFocusAccent:w,toastEnabled:q0,soundEnabled:W0,toggleToast:H0,toggleSound:k0,zenKeepsTasks:x0,toggleZenKeepsTasks:y0,settingsSurface:C0,selectSurface:n,editorKind:N0,cycleEditorKind:p0,editorCustomCommand:b0,editEditorCustom:()=>void U0()})}}),null),K(y,b(X0,{get when(){return Q()==="engines"},get children(){return b(e4,{level:Z,bodyRow:j,setLevel:q,setBodyRow:U,get vendors(){return w0()},isCustom:(u0)=>!Q1(u0),displayName:T0,commandText:J0,isDefault:M0,isDefaultEngine:Rf,editEngine:(u0)=>void p(u0),renameEngine:(u0)=>void Z0(u0),resetEngine:D0,onAddEngine:()=>void j0()})}}),null),K(y,b(X0,{get when(){return Q()==="accounts"},get children(){return b(fD,{claudeStatus:S,codexStatus:z0,copilotStatus:Y0})}}),null),K(y,b(X0,{get when(){return Q()==="keys"},get children(){return b(zD,{})}}),null),K(y,b(X0,{get when(){return Q()==="feedback"},get children(){return b(JD,{level:Z,bodyRow:j,setLevel:q,setBodyRow:U,title:L,setTitle:(u0)=>{O(u0),a("")},body:M,setBody:(u0)=>{g(u0),a("")},status:I,onTitleSubmit:()=>U(1),onBodySubmit:()=>void h0(),submit:()=>void h0()})}}),null),K(y,b(X0,{get when(){return Q()==="dev"},get children(){return b(YD,{level:Z,bodyRow:j,setLevel:q,setBodyRow:U,hasDaemon:R,confirmReset:()=>void A8(J,f.kv,z),confirmRestartDaemon:()=>void g8(J,f.orchestrator,z),remoteProjectsEnabled:Gf,toggleRemoteProjects:m,autoStatusEnabled:L0,toggleAutoStatus:s,dispatcherEnabled:R0,toggleDispatcher:i0})}}),null),D(A0,m0),X(A0,"paddingTop",0),K(m0,(()=>{var u0=I0(()=>!!O0());return()=>u0()?F("settings.nav.feedback"):F("settings.nav.default")})()),E((u0)=>{var X1=Py.BOLD,V1=G.text,tf=G.textMuted,P1=G.textMuted;return X1!==u0.e&&(u0.e=X(Kf,"attributes",X1,u0.e)),V1!==u0.t&&(u0.t=X(Kf,"fg",V1,u0.t)),tf!==u0.a&&(u0.a=X(qf,"fg",tf,u0.a)),P1!==u0.o&&(u0.o=X(m0,"fg",P1,u0.o)),u0},{e:void 0,t:void 0,a:void 0,o:void 0}),d})()}var y8=C(()=>{P();P();P();P();P();P();P();P();Wf();oY();E1();sq();GZ();Jq();gf();$B();S1();K1();Ef();G1();Zq();b1();j8();h1();F8();_4();N8();GD();Nz.show=(f,J,Y)=>{let z=!1;return new Promise((G)=>{f.replace(()=>b(Nz,{kv:J,orchestrator:Y,onVisualPrefsChange:()=>{z=!0},onClose:()=>G({visualPrefsChanged:z})}),()=>G({visualPrefsChanged:z}))})}});import{TextAttributes as my}from"@opentui/core";function XD(){let{theme:f}=d0(),J=TJ(),Y=RQ(),z=()=>Y.toasts().slice(-ZD),G=()=>Math.max(0,J().width-cy-ny),Z=()=>Math.max(0,J().height-dy-ZD-1);return b(X0,{get when(){return Y.toasts().length>0},get children(){var q=W("box");return X(q,"position","absolute"),X(q,"zIndex",2500),X(q,"width",40),X(q,"flexDirection","column"),X(q,"gap",0),K(q,b(Zf,{get each(){return z()},children:(Q)=>{let H=()=>Q.kind==="needs_input"?f.warning:Q.kind==="error"?f.error:f.success,B=()=>f.selectedListItemText,V=()=>Q.kind==="needs_input"?"?":Q.kind==="error"?"\u2715":"\u2713";return(()=>{var j=W("box"),U=W("text"),L=W("text");return D(j,U),D(j,L),X(j,"flexDirection","row"),X(j,"gap",1),X(j,"paddingLeft",1),X(j,"paddingRight",1),X(j,"onMouseUp",()=>Y.dismiss(Q.id)),X(U,"wrapMode","none"),K(U,V),X(L,"wrapMode","none"),K(L,()=>Q.title),E((O)=>{var M=H(),g=B(),I=my.BOLD,a=B();return M!==O.e&&(O.e=X(j,"backgroundColor",M,O.e)),g!==O.t&&(O.t=X(U,"fg",g,O.t)),I!==O.a&&(O.a=X(U,"attributes",I,O.a)),a!==O.o&&(O.o=X(L,"fg",a,O.o)),O},{e:void 0,t:void 0,a:void 0,o:void 0}),j})()}})),E((Q)=>{var H=G(),B=Z();return H!==Q.e&&(Q.e=X(q,"left",H,Q.e)),B!==Q.t&&(Q.t=X(q,"top",B,Q.t)),Q},{e:void 0,t:void 0}),q}})}var ZD=4,cy=40,ny=2,dy=2;var qD=C(()=>{P();P();P();P();P();P();P();Wf();CQ();Ef()});import{TextAttributes as iy}from"@opentui/core";function ly(f,J){let Y=f?`v${f}`:F("update.skew.olderBuild");return F("update.skew.hint",{daemon:Y,clientVersion:J})}function QD(f){let{theme:J}=d0(),Y=()=>Math.max(4,f.width()-2);return b(X0,{get when(){return f.stale()},get children(){var z=W("box"),G=W("text"),Z=W("box"),q=W("text"),Q=W("box"),H=W("text");return D(z,G),D(z,Z),D(z,Q),X(z,"flexDirection","column"),X(z,"flexShrink",0),X(z,"paddingLeft",1),X(z,"paddingRight",1),X(z,"paddingBottom",1),X(G,"wrapMode","none"),K(G,()=>"\u2594".repeat(Y())),D(Z,q),X(Z,"flexDirection","row"),X(Z,"gap",1),X(q,"wrapMode","none"),K(q,()=>F("update.skew.title")),D(Q,H),X(Q,"flexDirection","row"),X(Q,"gap",1),X(H,"wrapMode","word"),K(H,()=>ly(f.daemonVersion(),f.clientVersion)),E((B)=>{var{warning:V,warning:j}=J,U=iy.BOLD,L=J.text;return V!==B.e&&(B.e=X(G,"fg",V,B.e)),j!==B.t&&(B.t=X(q,"fg",j,B.t)),U!==B.a&&(B.a=X(q,"attributes",U,B.a)),L!==B.o&&(B.o=X(H,"fg",L,B.o)),B},{e:void 0,t:void 0,a:void 0,o:void 0}),z}})}var HD=C(()=>{P();P();P();P();P();P();Wf();Ef();G1()});function BD(f,J){return f.find((Y)=>Y.id!==J&&!Y.archived)}async function ay(f){let J=f.tasks.find((Z)=>Z.id===f.taskId);if(!J)return null;let Y=!J.archived;try{await f.orch.setArchived(f.taskId,Y)}catch(Z){return f.logger.error(`${f.logPrefix} archive failed:`,Z),null}if(!Y)return{archived:Y};let z=Mf(f.taskId),G=BD(f.tasks,f.taskId);if(await bJ(z,G?Mf(G.id):void 0).catch((Z)=>{f.logger.error(`${f.logPrefix} switch-client failed:`,Z)}),f.updateActiveTask)await f.orch.setActiveTask(G?.id??null).catch(()=>{});return await i1(z).catch((Z)=>{f.logger.error(`${f.logPrefix} kill tmux session failed:`,Z)}),{archived:Y,nextTask:G}}async function $y(f){let J=BD(f.tasks,f.taskId),Y=Mf(f.taskId);if(f.switchBeforeKill)await bJ(Y,J?Mf(J.id):void 0).catch((z)=>{f.logger.error(`${f.logPrefix} switch-client failed:`,z)});if(f.updateActiveTask)await f.orch?.setActiveTask(J?.id??null).catch(()=>{});return await i1(Y).catch((z)=>{f.logger.error(`${f.logPrefix} kill tmux session failed:`,z)}),{nextTask:J}}async function jD(f,J){if(!f.orch)return;let Y=f.tasks().find((G)=>G.id===J);if(!Y)return;if(!Y.archived){if(!await f.confirm({title:`Archive "${Y.title}"?`,body:"Moves it to Archives and stops its running session. The worktree, branch, and chat history stay \u2014 unarchive to bring it back.",cancelLabel:"cancel",confirmLabel:"archive"}))return}if(!await ay({orch:f.orch,tasks:f.tasks(),taskId:J,logger:f.logger,logPrefix:f.logPrefix,updateActiveTask:f.updateActiveTask}))return;await f.reload?.()}async function WD(f,J){if(!f.orch)return;let Y=f.tasks().find((q)=>q.id===J);if(!Y)return;if(!await f.confirm({title:`Delete "${Y.title}"?`,body:"Removes the task entry and its worktree. The tmux session (if any) is killed.",cancelLabel:"cancel",confirmLabel:"delete"}))return;let G=!1;try{await f.orch.deleteTask(J),G=!0}catch(q){if((q instanceof Error?q.message:String(q)).includes(KH)){if(await f.confirm({title:`"${Y.title}" has uncommitted changes`,body:"Its worktree has uncommitted or untracked work that will be permanently deleted. Force delete anyway?",cancelLabel:"cancel",confirmLabel:"force delete"}))try{await f.orch.deleteTask(J,{force:!0}),G=!0}catch(B){f.logger.error(`${f.logPrefix} force delete failed:`,B),f.notifyError?.(`Couldn't delete: ${B instanceof Error?B.message:String(B)}`)}}else f.logger.error(`${f.logPrefix} delete failed:`,q),f.notifyError?.(`Couldn't delete: ${q instanceof Error?q.message:String(q)}`)}if(!G)return;let{nextTask:Z}=await $y({orch:f.orch,tasks:f.tasks(),taskId:J,logger:f.logger,logPrefix:f.logPrefix,switchBeforeKill:f.switchBeforeKill,updateActiveTask:f.updateActiveTask});await f.reload?.(),f.onTaskDeleted?.(J,Z)}async function VD(f,J){let Y=f.tasks().find((G)=>G.id===J);if(!Y)return;let z=await f.promptText(Y.title);if(!z||!f.orch)return;try{await f.orch.setTitle(J,z)}catch(G){f.logger.error(`${f.logPrefix} task.rename failed:`,G),f.notifyError?.(`Couldn't rename task: ${G instanceof Error?G.message:String(G)}`);return}await f.reload?.()}async function KD(f,J){let Y=f.tasks().find((G)=>G.id===J);if(!Y||Y.kind==="main")return;let z=await f.promptText(Y.branch,{dialogTitle:"Rename branch",fieldLabel:"branch"});if(!z||!f.orch)return;try{await f.orch.setBranch(J,z)}catch(G){f.logger.error(`${f.logPrefix} task.setBranch failed:`,G),f.notifyError?.(`Couldn't rename branch: ${G instanceof Error?G.message:String(G)}`);return}await f.reload?.()}async function UD(f,J){let Y=f.tasks().find((Z)=>Z.id===J);if(!Y||!f.orch)return;let z=await dJ(),G=GY(z,Y.vendor??yf);try{await f.orch.setVendor(J,G)}catch(Z){f.logger.error(`${f.logPrefix} task.setVendor failed:`,Z),f.notifyError?.(`Couldn't switch engine: ${Z instanceof Error?Z.message:String(Z)}`);return}f.notifyInfo?.(`Engine \u2192 ${qz(G)} (applies on reopen)`),await f.reload?.()}async function DD(f){let J=m1(),Y=f.cursorRepo()??J[0]??process.cwd();if(f.openCreateSurface&&await f.openCreateSurface(Y))return;let z=f.lastVendor()??yf,G=await dJ();if(G.length===0)f.notifyInfo?.("No engine CLI detected \u2014 install claude or codex, or add one in Settings \u2192 Engines");let Z=f.orch,q=await f.promptNewTask(Y,J,{defaultVendor:z,availableVendors:G,discoverAdoptable:Z?(H)=>Z.discoverAdoptableWorktrees(H):void 0});if(!q)return;if(f.rememberVendor(q.vendor),PJ(q.repo),f.onRepoSaved?.(),!Z){f.logger.error(`${f.logPrefix} no daemon; cannot create task`);return}f.notifyInfo?.("Creating task\u2026");let Q;try{if(q.mode==="adopt")for(let H of q.adopt)Q=(await Z.adoptWorktree({repo:q.repo,worktreePath:H.worktreePath,branch:H.branch,vendor:q.vendor})).id;else Q=(await Z.createTask({repo:q.repo,baseRef:q.baseRef,vendor:q.vendor})).id}catch(H){f.logger.error(`${f.logPrefix} task.create/adopt failed:`,H),f.notifyError?.(`Couldn't create task: ${H instanceof Error?H.message:String(H)}`);return}if(await f.reload?.(),Q)f.selectTask?.(Q),await f.enterTask?.(Q)}var LD=C(()=>{oY();E1();LH();gf();S1();K1();J1()});import{spawn as ry}from"child_process";import{existsSync as py}from"fs";import{basename as _y,delimiter as oy,isAbsolute as sy,join as ty}from"path";function b8(f,J,Y){if(sy(f))return Y(f);let z=J.PATH??"";for(let G of z.split(oy)){if(!G)continue;if(Y(ty(G,f)))return!0}return!1}function Jb(f){let J=_y(f);if(J==="code")return"VS Code";if(J==="cursor")return"Cursor";if(J==="windsurf")return"Windsurf";if(J==="zed")return"Zed";return J||f}function MD(f={}){let J=f.env??process.env,Y=f.platform??process.platform,z=f.exists??py,G=J.KOBE_OPEN_EDITOR?.trim();if(G)return{id:"env",label:Jb(G),command:G,args:[]};for(let Z of ey)if(b8(Z.command,J,z))return{id:Z.id,label:Z.label,command:Z.command,args:[]};if(Y==="darwin"&&b8("open",J,z)){for(let Z of fb)if(Z.paths.some((q)=>z(q)))return{id:Z.id,label:Z.label,command:"open",args:["-a",Z.appName]};return{id:"mac-open",label:"Finder",command:"open",args:[]}}if(Y==="linux"&&b8("xdg-open",J,z))return{id:"xdg-open",label:"Open",command:"xdg-open",args:[]};return null}function Yb(f,J){return[J.command,[...J.args,f]]}function FD(f,J,Y={}){if(!f)return!1;let z=Y.spawn??ry,[G,Z]=Yb(f,J);try{let q=z(G,Z,{detached:!0,stdio:"ignore"});if(q.pid===void 0)return!1;return q.unref(),!0}catch{return!1}}var ey,fb;var OD=C(()=>{ey=[{id:"code",label:"VS Code",command:"code"},{id:"cursor",label:"Cursor",command:"cursor"},{id:"windsurf",label:"Windsurf",command:"windsurf"},{id:"zed",label:"Zed",command:"zed"}],fb=[{id:"vscode.app",label:"VS Code",appName:"Visual Studio Code",paths:["/Applications/Visual Studio Code.app"]},{id:"cursor.app",label:"Cursor",appName:"Cursor",paths:["/Applications/Cursor.app","/System/Applications/Cursor.app"]},{id:"windsurf.app",label:"Windsurf",appName:"Windsurf",paths:["/Applications/Windsurf.app"]},{id:"zed.app",label:"Zed",appName:"Zed",paths:["/Applications/Zed.app"]}]});function EQ(f){let J=new Map;function Y(z){let G=J.get(z);if(!G){let[Z,q]=r(f.initial,f.equals?{equals:f.equals}:void 0);G={read:Z,write:(Q)=>q(()=>Q),inFlight:!1,nextAllowedAt:0},J.set(z,G)}return G}return{read(z){if(!z)return f.initial;return Y(z).read()},poll(z){if(!z)return;let G=Y(z);eX(G,f,(Z)=>f.run(z,Z),(Z)=>G.write(Z))},reset(){J.clear()}}}var nZ=C(()=>{Wf();qZ();qZ()});import{stat as zb}from"fs/promises";import{join as Gb}from"path";async function Qb(f){try{let J=await zb(Gb(f,".git","HEAD"));return`${J.mtimeMs}:${J.size}`}catch{return null}}async function Hb(f,J,Y=BJ){let z=await Qb(f);if(z!==null){let Q=AD.get(f);if(Q&&Q.fingerprint===z)return Q.value}let G="",Z=await Y("git",["symbolic-ref","--short","HEAD"],{cwd:f,env:x1(),signal:J}),q=Z.status===0?Z.stdout.trim():"";if(q&&q!=="HEAD")G=q;else if((await Y("git",["rev-parse","--verify","HEAD"],{cwd:f,env:x1(),signal:J})).status===0)G="(detached)";if(z!==null)AD.set(f,{fingerprint:z,value:G});return G}function RD(f){return gD.read(f)}function CD(f){gD.poll(f)}var Zb=2000,Xb=30000,qb=1500,AD,gD;var kD=C(()=>{gY();nZ();AD=new Map;gD=EQ({initial:"",timeoutMs:Zb,slowRetryMs:Xb,minIntervalMs:qb,run:(f,J)=>Hb(f,J)})});function S8(f){let J=f.scheduleTimeout??((H,B)=>{let V=setTimeout(H,B);return()=>clearTimeout(V)}),Y=!1,z=null,G=()=>{Y=!0,z?.(),z=J(()=>{Y=!1,z=null},700)},Z=()=>{Y=!1,z?.(),z=null},q=(H)=>{let B=f.getFlatIds();if(B.length===0)return;let V=f.getCursor(),j=V<0?0:V,U=Math.min(B.length-1,Math.max(0,j+H));f.setCursor(U)},Q=(H)=>{let B=f.getFlatIds();if(B.length===0)return;f.setCursor(Math.min(B.length-1,Math.max(0,H)))};return{moveDown(){Z(),q(1)},moveUp(){Z(),q(-1)},selectCurrent(){Z();let H=f.getFlatIds(),B=f.getCursor();if(B<0||B>=H.length)return;let V=H[B];if(V!==void 0)f.onSelect(V)},pressG(){if(Y)Z(),Q(0);else G()},pressShiftG(){Z(),Q(f.getFlatIds().length-1)},isChordArmed(){return Y},disarmChord(){Z()}}}function ND(f){let J=S8({getCursor:()=>f.cursorIndex(),setCursor:(Z)=>f.setCursorIndex(Z),getFlatIds:()=>f.flatTaskIds(),onSelect:(Z)=>f.onSelect(Z)}),Y=()=>{let Z=f.flatTaskIds(),q=f.cursorIndex();if(q<0||q>=Z.length)return;return Z[q]},z=()=>f.searchMode?.()??!1,G=()=>f.moveMode?.()??!1;Df(()=>({enabled:f.focused()&&!z(),bindings:wY({"sidebar.nav":(Z,q)=>{let Q=(q??0)%2===0;if(G()){let H=Y();if(H===void 0)return;f.onMoveRequest?.(H,Q?1:-1);return}if(Q)J.moveDown();else J.moveUp()},"sidebar.select":()=>{if(G()){f.onMoveModeExit?.();return}J.selectCurrent()},"sidebar.goto":(Z)=>{if(G())return;if(Z.shift)J.pressShiftG();else J.pressG()},"sidebar.delete":()=>{if(G())return;let Z=Y();if(Z!==void 0)f.onDeleteRequest?.(Z)},"sidebar.archive":()=>{if(G())return;let Z=Y();if(Z!==void 0)f.onArchiveRequest?.(Z)},"sidebar.localMerge":(Z)=>{if(!Z.shift)return;let q=Y();if(q!==void 0)f.onLocalMergeRequest?.(q)},"sidebar.rename":()=>{if(G())return;let Z=Y();if(Z!==void 0)f.onRenameRequest?.(Z)},"sidebar.pin":(Z)=>{if(G())return;if(!Z.shift)return;let q=Y();if(q!==void 0)f.onPinRequest?.(q)},"sidebar.search.enter":()=>{if(G())return;f.onSearchEnter?.()},"sidebar.sort":()=>{if(G())return;f.onSortModeToggle?.()},"sidebar.projectFilter":()=>{if(G())return;f.onProjectFilterToggle?.()}})})),Df(()=>({enabled:f.focused()&&G(),bindings:[{key:"escape",cmd:()=>f.onMoveModeExit?.()}]})),Df(()=>({enabled:f.focused(),bindings:wY({"sidebar.view":(Z,q)=>{f.onViewSwitch?.((q??0)%2===0?-1:1)}})})),Df(()=>({enabled:f.focused()&&z(),bindings:wY({"sidebar.search.nav":(Z,q)=>{if((q??0)%2===0)J.moveDown();else J.moveUp()},"sidebar.search.submit":()=>{J.selectCurrent(),f.onSearchExit?.(!0)},"sidebar.search.cancel":()=>f.onSearchExit?.(!1)})}))}var yD=C(()=>{bG();b1()});function I8(f,J){if(J<=0)return"";if(f.length<=J)return f;return`${f.slice(0,Math.max(0,J-1))}\u2026`}function T8(f,J){return` ${I8(f,Math.max(0,J))}`}function jb(f){switch(f){case"done":return F("tasks.status.done");case"in_review":return F("tasks.status.inReview");case"in_progress":return F("tasks.status.working");case"backlog":return F("tasks.status.backlog");case"canceled":return F("tasks.status.canceled");case"error":return F("tasks.status.error")}}function Wb(f){switch(f){case"rate_limited":return{text:F("tasks.activity.rateLimited"),tone:"warning"};case"permission_needed":return{text:F("tasks.activity.permissionNeeded"),tone:"warning"};case"error":return{text:F("tasks.activity.error"),tone:"error"};default:return null}}function ID(f){switch(f.prStatus?.checkState){case"passing":return{glyph:"\u2713",tone:"success"};case"failing":return{glyph:"\u2717",tone:"error"};case"pending":return{glyph:"\u2022",tone:"warning"};default:return null}}function Vb(){return F("tasks.subtitle.noTracking")}function Kb(){return F("tasks.subtitle.materializing")}function Ub(f){if(f.kind==="main")return!1;return f.vendor!==void 0&&!Q1(f.vendor)}function u8(f){let{task:J}=f,Y=J.kind==="main",z=Y?f.mainBranch??"":J.branch,G=Bb[J.status],Z=f.activity?.state,q=Z!==void 0,Q=Db(Z),H=Wb(Z),B=Ub(J)&&!q,V=f.job!==void 0,j=V||!B&&(Z==="running"||f.live||!q&&!Y&&J.status==="in_progress"),U=uG[f.spinnerFrame]??uG[0],L=V?"primary":B?"textMuted":H?.tone??(j?"primary":Q?.tone??G.tone),O=B?Vb():jb(J.status),M=V?f.truncateBranch(Kb(),f.subtitleBudget):H?f.truncateBranch(H.text,f.subtitleBudget):z.length>0?f.truncateBranch(z,f.subtitleBudget):f.truncateBranch(O,f.subtitleBudget),g=B?bD:Q?.glyph??G.glyph,I=B?bD:Q?.glyph??"\u2605";return{isMain:Y,titleText:Y?MJ(J.repo):J.title,subtitleText:M,loading:j,stateGlyph:j?U:g,projectGlyph:j?U:I,tone:L}}function E8(f,J){if(!f.loading)return f;let Y=uG[J()%uG.length]??"\u280B";if(Y===f.stateGlyph&&Y===f.projectGlyph)return f;return{...f,stateGlyph:Y,projectGlyph:Y}}function Db(f){switch(f){case"rate_limited":return{glyph:"\u25F7",tone:"warning"};case"permission_needed":return{glyph:"?",tone:"warning"};case"error":return{glyph:"\u2715",tone:"error"};case"turn_complete":return{glyph:"\u2713",tone:"primary"};default:return null}}var Bb,uG,SD=100,bD="\xB7";var TD=C(()=>{G1();K1();SQ();Bb={done:{glyph:"\u2713",tone:"success"},in_review:{glyph:"\u25D0",tone:"warning"},in_progress:{glyph:"",tone:"primary"},backlog:{glyph:"\u25CB",tone:"textMuted"},canceled:{glyph:"\u2298",tone:"textMuted"},error:{glyph:"\u2715",tone:"error"}};uG=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"]});function x8(f){return uD.read(f)}function w8(f){uD.poll(f)}var Lb=4000,Mb=60000,Fb=1500,Ob,uD;var ED=C(()=>{gY();nZ();WG();nZ();Ob={added:0,deleted:0},uD=EQ({initial:Ob,equals:IJ,timeoutMs:Lb,slowRetryMs:Mb,minIntervalMs:Fb,run:async(f,J)=>{let Y=await BJ("git",["status","--porcelain=v1"],{cwd:f,env:x1(),signal:J});if(Y.status!==0)throw Error("git status failed");return jG(Y.stdout)}})});import{TextAttributes as Nf}from"@opentui/core";function Ab(f){switch(f){case"active":return F("tasks.view.workspace");case"archived":return F("tasks.view.archives")}}function wD(f,J=Rb){if(f.length<=J)return f;return`${f.slice(0,Math.max(0,J-1))}\u2026`}function Cb(f){let J=0;for(let Y of f)J+=(Y.codePointAt(0)??0)>=4352?2:1;return J}function kb(f,J){if(J<=0||f.length<=J)return f;return`\u2026${f.slice(f.length-Math.max(0,J-1))}`}function hD(f){let{theme:J}=d0(),Y=()=>f.focused?f.focused():!0,[z,G]=r("active"),[Z,q]=r(!1),[Q,H]=r(""),[B,V]=r(null),j=()=>f.projectFilter?.()??B(),U=(v)=>{if(f.onProjectFilterChange)f.onProjectFilterChange(v);else V(v)};function L(){H(""),q(!0),f.onSearchActiveChange?.(!0)}function O(v){q(!1),H(""),f.onSearchActiveChange?.(!1)}ff(()=>{if(!Z())return;let v=Y1();if(!v)return;let J0=(M0)=>{if(M0.defaultPrevented)return;if(!Y())return;if(M0.ctrl||M0.meta||M0.option)return;if(M0.name==="backspace"){H((T0)=>T0.slice(0,-1));return}let _0=M0.sequence;if(!_0||_0.length!==1)return;let e0=_0.charCodeAt(0);if(e0<32||e0===127)return;H((T0)=>T0+_0)};v.keyInput.on("keypress",J0),vf(()=>v.keyInput.off("keypress",J0))});let[M,g]=r(0),I=setInterval(()=>g((v)=>v+1),gb);vf(()=>clearInterval(I));let[a,N]=r(0),A=setInterval(()=>N((v)=>(v+1)%uG.length),SD);vf(()=>clearInterval(A));let R=()=>f.sortMode?.()??"default",S=K0(()=>v4(f.tasks(),z())),_=K0(()=>{let v=j();if(!v)return null;let J0=o1(v);return S().find((M0)=>o1(M0.repo)===J0)??null}),z0=K0(()=>_()?.repo??null),e=K0(()=>_()?.label??"all"),Y0=K0(()=>{let v=_();return v?v.count:S().reduce((J0,M0)=>J0+M0.count,0)}),T=K0((v)=>n4(v,U8(f.tasks(),z(),Z()?Q():"",R(),z0())),[]),Q0=K0(()=>D8(T())),t=K0(()=>c4(T())),V0=K0(()=>t().projectRows),C0=K0(()=>t().taskRows),$=K0(()=>{let v=new Map;for(let J0 of T())v.set(J0.flatIndex,J0);return v}),x=K0(()=>D8(U8(f.tasks(),z(),"",R(),z0())).length),f0=K0(()=>C0().length>0);ff(()=>{let v=j(),J0=S();if(v!==null&&J0.length>0&&(J0.length<=1||_()===null))U(null)});function u(){let v=S();if(v.length<=1){U(null);return}let J0=z0(),M0=J0?o1(J0):null,_0=M0===null?-1:v.findIndex((T0)=>o1(T0.repo)===M0),e0=v[_0+1];U(e0?.repo??null)}let G0=()=>f.width?f.width():xD,w=K0(()=>Math.max(6,G0()-9)),n=K0(()=>Math.max(6,G0()-16)),q0=TJ(),W0=K0(()=>{let v=Math.max(2,Math.min(10,Math.floor(q0().height*0.25))),J0=Math.max(2,V0().length*2);return Math.min(v,J0)}),[H0,k0]=r(null),[x0,y0]=r(-1),Gf,m,L0,s=new Map;ff(()=>{let v=f.width?f.width():xD,J0=L0;if(!J0)return;J0.width=v,J0.flexShrink=1,J0.minHeight=0}),ff(O1([x0,T],([v])=>{let J0=$().get(v);if(!J0)return;let M0=J0.task.kind==="main"?Gf:m;if(!M0)return;if(M0.viewport.height<=0)return;let _0=s.get(v);if(!_0)return;M0.scrollChildIntoView(_0.id)})),ff(O1(()=>[f.selectedId(),Q0()],([v,J0])=>{let M0=$f(x0);if(v===null){if(M0===-1&&J0.length>0)y0(0);else if(M0>=J0.length)y0(Math.max(0,J0.length-1));else if(J0.length===0)y0(-1);return}let _0=J0.indexOf(v);if(_0>=0){if(_0!==M0)y0(_0)}else if(J0.length===0)y0(-1);else if(M0<0||M0>=J0.length)y0(J0.length-1)})),ff(O1(z,()=>{let v=Q0();y0(v.length>0?0:-1)},{defer:!0})),ff(O1(z0,(v)=>y0(m4(T(),v)),{defer:!0})),ff(O1([Z,Q],()=>{if(!Z())return;let v=Q0();y0(v.length>0?0:-1)}));function R0(v){let J0=z(),M0=dZ.findIndex((T0)=>T0.view===J0);if(M0<0)return;let _0=(M0+v+dZ.length)%dZ.length,e0=dZ[_0];if(e0)G(e0.view)}ND({focused:Y,cursorIndex:x0,setCursorIndex:y0,flatTaskIds:Q0,onSelect:(v)=>{f.onSelect(v),f.onActivate?.(v)},onDeleteRequest:(v)=>f.onDeleteRequest?.(v),onArchiveRequest:(v)=>f.onArchiveRequest?.(v),onLocalMergeRequest:(v)=>f.onLocalMergeRequest?.(v),moveMode:f.moveMode,onMoveRequest:(v,J0)=>f.onMoveRequest?.(v,J0),onMoveModeExit:()=>f.onMoveModeExit?.(),onRenameRequest:(v)=>f.onRenameRequest?.(v),onPinRequest:(v)=>f.onPinRequest?.(v),onViewSwitch:(v)=>R0(v),onSortModeToggle:()=>f.onSortModeToggle?.(),onProjectFilterToggle:()=>u(),searchMode:Z,onSearchEnter:()=>L(),onSearchExit:(v)=>O(v)});let i0=(v)=>(()=>{var J0=W("box"),M0=W("box"),_0=W("text"),e0=W("text");return D(J0,M0),X(J0,"flexDirection","column"),X(J0,"flexShrink",0),K(J0,b(X0,{get when(){return v.topPad},get children(){var T0=W("box"),Xf=W("text");return D(T0,Xf),X(T0,"flexShrink",0),D(Xf,E0(" ")),X(Xf,"wrapMode","none"),T0}}),M0),D(M0,_0),D(M0,e0),X(M0,"flexDirection","row"),X(M0,"flexShrink",0),X(M0,"gap",1),X(M0,"paddingLeft",1),X(M0,"paddingRight",1),X(_0,"wrapMode","none"),K(_0,()=>v.label),X(e0,"wrapMode","none"),K(e0,()=>"\u2500".repeat(Math.max(2,G0()-10-v.label.length-(v.suffix?.length??0)))),K(M0,b(X0,{get when(){return v.suffix},get children(){var T0=W("text");return X(T0,"wrapMode","none"),K(T0,()=>v.suffix),E((Xf)=>{var Qf=J.info,Rf=Nf.BOLD;return Qf!==Xf.e&&(Xf.e=X(T0,"fg",Qf,Xf.e)),Rf!==Xf.t&&(Xf.t=X(T0,"attributes",Rf,Xf.t)),Xf},{e:void 0,t:void 0}),T0}}),null),E((T0)=>{var Xf=J.textMuted,Qf=Nf.BOLD,Rf=J.border;return Xf!==T0.e&&(T0.e=X(_0,"fg",Xf,T0.e)),Qf!==T0.t&&(T0.t=X(_0,"attributes",Qf,T0.t)),Rf!==T0.a&&(T0.a=X(e0,"fg",Rf,T0.a)),T0},{e:void 0,t:void 0,a:void 0}),J0})(),$0=(v)=>{switch(v){case"success":return J.success;case"warning":return J.warning;case"primary":return J.primary;case"error":return J.error;default:return J.textMuted}},w0=(v)=>{let J0=v.row.task,M0=v.row.flatIndex,_0=()=>M0===x0(),e0=()=>J0.id===f.selectedId(),T0=K0(()=>{let j0=f.chatRunState?.();if(!j0)return!1;let k=`${J0.id}:`;for(let[N0,p0]of j0)if(p0==="running"&&N0.startsWith(k))return!0;return!1}),Xf=K0(()=>{let j0=$q(f.worktreeChanges?.(),J0.worktreePath);if(j0)return j0;if(M(),!J0.archived)w8(J0.worktreePath);return x8(J0.worktreePath)},void 0,{equals:IJ}),Qf=K0(()=>{return M(),CD(J0.repo),RD(J0.repo)}),Rf=K0(()=>u8({task:J0,activity:f.engineState?.().get(J0.id),job:f.taskJobs?.().get(J0.id),live:T0(),spinnerFrame:0,subtitleBudget:n(),truncateBranch:wD,mainBranch:Qf()})),o=K0(()=>E8(Rf(),a)),p=()=>!o().loading?J.primary:$0(o().tone),Z0=()=>_0()?J.focusAccent:e0()?J.primary:void 0,D0=()=>_0()||e0()?"\u258C":" ";return(()=>{var j0=W("box"),k=W("box"),N0=W("box"),p0=W("text"),b0=W("box"),U0=W("text"),h0=W("text"),O0=W("box"),r0=W("text"),l0=W("box"),Yf=W("text");return D(j0,k),X(j0,"flexDirection","column"),X(j0,"gap",0),X(j0,"paddingBottom",0),D(k,N0),D(k,O0),uY((S0)=>{s.set(M0,S0),vf(()=>{if(s.get(M0)===S0)s.delete(M0)})},k),X(k,"flexDirection","column"),X(k,"gap",0),X(k,"onMouseUp",()=>{if(f.onSelect(J0.id),f.activateOnClick)f.onActivate?.(J0.id)}),X(k,"onMouseOver",(S0)=>k0({task:J0,x:S0.x,y:S0.y})),X(k,"onMouseOut",()=>k0((S0)=>S0?.task.id===J0.id?null:S0)),D(N0,p0),D(N0,b0),X(N0,"flexDirection","row"),X(N0,"gap",0),X(p0,"wrapMode","none"),K(p0,D0),D(b0,U0),D(b0,h0),X(b0,"flexDirection","row"),X(b0,"flexGrow",1),X(b0,"paddingRight",1),X(b0,"gap",0),X(U0,"wrapMode","none"),K(U0,()=>o().projectGlyph),X(h0,"wrapMode","none"),X(h0,"flexGrow",1),K(h0,()=>T8(o().titleText,w())),D(O0,r0),D(O0,l0),X(O0,"flexDirection","row"),X(O0,"gap",0),X(r0,"wrapMode","none"),K(r0,D0),D(l0,Yf),X(l0,"flexDirection","row"),X(l0,"flexGrow",1),X(l0,"paddingLeft",2),X(l0,"paddingRight",1),X(l0,"gap",1),X(Yf,"wrapMode","none"),X(Yf,"flexGrow",1),K(Yf,()=>o().subtitleText),K(l0,b(X0,{get when(){return Xf().added>0},get children(){var S0=W("text"),xf=E0("+");return D(S0,xf),X(S0,"wrapMode","none"),K(S0,()=>Xf().added,null),E((df)=>X(S0,"fg",J.success,df)),S0}}),null),K(l0,b(X0,{get when(){return Xf().deleted>0},get children(){var S0=W("text"),xf=E0("\u2212");return D(S0,xf),X(S0,"wrapMode","none"),K(S0,()=>Xf().deleted,null),E((df)=>X(S0,"fg",J.error,df)),S0}}),null),E((S0)=>{var xf=_0()?J.backgroundElement:void 0,df=Z0(),d=p(),g0=Nf.BOLD,Kf=J.text,qf=Nf.BOLD,Of=Z0(),y=J.textMuted,A0=Nf.DIM;return xf!==S0.e&&(S0.e=X(k,"backgroundColor",xf,S0.e)),df!==S0.t&&(S0.t=X(p0,"fg",df,S0.t)),d!==S0.a&&(S0.a=X(U0,"fg",d,S0.a)),g0!==S0.o&&(S0.o=X(U0,"attributes",g0,S0.o)),Kf!==S0.i&&(S0.i=X(h0,"fg",Kf,S0.i)),qf!==S0.n&&(S0.n=X(h0,"attributes",qf,S0.n)),Of!==S0.s&&(S0.s=X(r0,"fg",Of,S0.s)),y!==S0.h&&(S0.h=X(Yf,"fg",y,S0.h)),A0!==S0.r&&(S0.r=X(Yf,"attributes",A0,S0.r)),S0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0}),j0})()};return(()=>{var v=W("box"),J0=W("box"),M0=W("box"),_0=W("text"),e0=W("box"),T0=W("box"),Xf=W("text"),Qf=W("scrollbox"),Rf=W("box");return D(v,J0),D(v,e0),D(v,Qf),uY((o)=>{L0=o},v),X(v,"flexGrow",1),X(v,"minHeight",0),X(v,"flexDirection","column"),X(v,"paddingTop",1),X(v,"paddingBottom",1),X(v,"paddingLeft",0),X(v,"paddingRight",0),D(J0,M0),X(J0,"flexDirection","row"),X(J0,"justifyContent","space-between"),X(J0,"gap",1),X(J0,"paddingBottom",1),X(J0,"paddingLeft",1),X(J0,"paddingRight",1),D(M0,_0),X(M0,"flexDirection","row"),X(M0,"gap",1),D(_0,E0("KOBE")),X(_0,"wrapMode","none"),K(M0,b(X0,{get when(){return f.headerStatus?.()},children:(o)=>(()=>{var p=W("text");return X(p,"wrapMode","none"),X(p,"onMouseUp",()=>f.onHeaderStatusClick?.()),K(p,()=>o().label),E((Z0)=>{var D0=o().emphasize?J.warning:J.textMuted,j0=o().emphasize?Nf.BOLD:Nf.DIM;return D0!==Z0.e&&(Z0.e=X(p,"fg",D0,Z0.e)),j0!==Z0.t&&(Z0.t=X(p,"attributes",j0,Z0.t)),Z0},{e:void 0,t:void 0}),p})()}),null),K(J0,b(X0,{get when(){return f.onAddTask},get children(){var o=W("text");return D(o,E0("[+]")),X(o,"wrapMode","none"),X(o,"onMouseUp",()=>f.onAddTask?.()),E((p)=>{var Z0=J.primary,D0=Nf.BOLD;return Z0!==p.e&&(p.e=X(o,"fg",Z0,p.e)),D0!==p.t&&(p.t=X(o,"attributes",D0,p.t)),p},{e:void 0,t:void 0}),o}}),null),K(v,b(X0,{get when(){return Z()},get children(){var o=W("box"),p=W("text"),Z0=W("text"),D0=W("text");return D(o,p),D(o,Z0),D(o,D0),X(o,"flexDirection","row"),X(o,"gap",0),X(o,"paddingBottom",1),X(o,"paddingLeft",1),D(p,E0("/")),X(p,"wrapMode","none"),X(Z0,"wrapMode","none"),K(Z0,Q),D(D0,E0("\u2588")),X(D0,"wrapMode","none"),K(o,b(X0,{get when(){return Q().length===0},get children(){var j0=W("text"),k=E0(" ");return D(j0,k),X(j0,"wrapMode","none"),K(j0,()=>F("tasks.search.placeholder"),null),E((N0)=>X(j0,"fg",J.textMuted,N0)),j0}}),null),K(o,b(X0,{get when(){return Q().length>0},get children(){var j0=W("text"),k=E0(" "),N0=E0("/");return D(j0,k),D(j0,N0),X(j0,"wrapMode","none"),K(j0,()=>Q0().length,N0),K(j0,x,null),E((p0)=>X(j0,"fg",J.textMuted,p0)),j0}}),null),E((j0)=>{var{info:k,text:N0,info:p0}=J,b0=Nf.BLINK;return k!==j0.e&&(j0.e=X(p,"fg",k,j0.e)),N0!==j0.t&&(j0.t=X(Z0,"fg",N0,j0.t)),p0!==j0.a&&(j0.a=X(D0,"fg",p0,j0.a)),b0!==j0.o&&(j0.o=X(D0,"attributes",b0,j0.o)),j0},{e:void 0,t:void 0,a:void 0,o:void 0}),o}}),e0),D(e0,T0),X(e0,"flexDirection","row"),X(e0,"justifyContent","space-between"),X(e0,"gap",1),X(e0,"paddingBottom",1),X(e0,"paddingLeft",1),X(e0,"paddingRight",1),D(T0,Xf),X(T0,"flexDirection","row"),X(T0,"gap",2),K(T0,b(Zf,{each:dZ,children:(o)=>{let p=()=>z()===o.view;return(()=>{var Z0=W("text");return X(Z0,"wrapMode","none"),X(Z0,"onMouseUp",()=>G(o.view)),K(Z0,()=>Ab(o.view)),E((D0)=>{var j0=p()?J.primary:J.textMuted,k=p()?Nf.BOLD:void 0;return j0!==D0.e&&(D0.e=X(Z0,"fg",j0,D0.e)),k!==D0.t&&(D0.t=X(Z0,"attributes",k,D0.t)),D0},{e:void 0,t:void 0}),Z0})()}}),Xf),D(Xf,E0("[/]")),X(Xf,"wrapMode","none"),K(e0,b(X0,{get when(){return f.sortMode},get children(){var o=W("text");return X(o,"wrapMode","none"),X(o,"onMouseUp",()=>f.onSortModeToggle?.()),K(o,()=>F("tasks.sort")),E((p)=>{var Z0=J.textMuted,D0=Nf.DIM;return Z0!==p.e&&(p.e=X(o,"fg",Z0,p.e)),D0!==p.t&&(p.t=X(o,"attributes",D0,p.t)),p},{e:void 0,t:void 0}),o}}),null),K(v,b(X0,{get when(){return S().length>1},get children(){var o=W("box"),p=W("box"),Z0=W("text"),D0=W("text"),j0=W("text"),k=E0(" ");return D(o,p),D(o,j0),X(o,"flexDirection","row"),X(o,"justifyContent","space-between"),X(o,"gap",1),X(o,"paddingBottom",1),X(o,"paddingLeft",1),X(o,"paddingRight",1),X(o,"onMouseUp",()=>u()),D(p,Z0),D(p,D0),X(p,"flexDirection","row"),X(p,"gap",1),X(Z0,"wrapMode","none"),K(Z0,()=>F("tasks.project.label")),X(D0,"wrapMode","none"),K(D0,e),D(j0,k),X(j0,"wrapMode","none"),K(j0,Y0,k),K(j0,(()=>{var N0=I0(()=>Y0()===1);return()=>N0()?F("tasks.project.taskSingular"):F("tasks.project.taskPlural")})(),null),E((N0)=>{var p0=J.textMuted,b0=Nf.BOLD,U0=z0()?J.primary:J.textMuted,h0=z0()?Nf.BOLD:void 0,O0=J.textMuted,r0=Nf.DIM;return p0!==N0.e&&(N0.e=X(Z0,"fg",p0,N0.e)),b0!==N0.t&&(N0.t=X(Z0,"attributes",b0,N0.t)),U0!==N0.a&&(N0.a=X(D0,"fg",U0,N0.a)),h0!==N0.o&&(N0.o=X(D0,"attributes",h0,N0.o)),O0!==N0.i&&(N0.i=X(j0,"fg",O0,N0.i)),r0!==N0.n&&(N0.n=X(j0,"attributes",r0,N0.n)),N0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),o}}),Qf),K(v,b(X0,{get when(){return V0().length>0},get children(){var o=W("box"),p=W("scrollbox"),Z0=W("box");return D(o,p),X(o,"flexDirection","column"),X(o,"flexShrink",0),K(o,b(i0,{get label(){return F("tasks.header.projects")}}),p),D(p,Z0),uY((D0)=>{Gf=D0},p),X(p,"flexShrink",0),X(p,"flexGrow",0),X(p,"minHeight",0),X(p,"stickyScroll",!1),X(p,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),X(Z0,"flexShrink",0),X(Z0,"gap",0),X(Z0,"paddingRight",1),K(Z0,b(Zf,{get each(){return V0()},children:(D0)=>b(w0,{row:D0})})),E((D0)=>X(p,"maxHeight",W0(),D0)),o}}),Qf),K(v,b(i0,{get label(){return F("tasks.header.tasks")},get suffix(){return I0(()=>R()==="default")()?void 0:R()},get topPad(){return V0().length>0}}),Qf),D(Qf,Rf),uY((o)=>{m=o},Qf),X(Qf,"flexGrow",1),X(Qf,"minHeight",0),X(Qf,"stickyScroll",!1),X(Qf,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),X(Rf,"flexShrink",0),X(Rf,"gap",0),X(Rf,"paddingRight",1),K(Rf,b(Zf,{get each(){return C0()},children:(o)=>{let{task:p,flatIndex:Z0}=o,D0=()=>Z0===x0(),j0=()=>p.id===f.selectedId(),k=K0(()=>{let r0=f.chatRunState?.();if(!r0)return!1;let l0=`${p.id}:`;for(let[Yf,S0]of r0)if(S0==="running"&&Yf.startsWith(l0))return!0;return!1}),N0=K0(()=>{let r0=$q(f.worktreeChanges?.(),p.worktreePath);if(r0)return r0;if(M(),!p.archived)w8(p.worktreePath);return x8(p.worktreePath)},void 0,{equals:IJ}),p0=K0(()=>u8({task:p,activity:f.engineState?.().get(p.id),job:f.taskJobs?.().get(p.id),live:k(),spinnerFrame:0,subtitleBudget:n(),truncateBranch:wD,mainBranch:""})),b0=K0(()=>E8(p0(),a)),U0=()=>$0(b0().tone),h0=()=>D0()?J.focusAccent:j0()?J.primary:void 0,O0=()=>D0()||j0()?"\u258C":" ";return(()=>{var r0=W("box"),l0=W("box"),Yf=W("box"),S0=W("text"),xf=W("box"),df=W("text"),d=W("text"),g0=W("box"),Kf=W("text"),qf=W("box"),Of=W("text");return D(r0,l0),X(r0,"flexDirection","column"),X(r0,"gap",0),X(r0,"paddingBottom",1),D(l0,Yf),D(l0,g0),uY((y)=>{s.set(Z0,y),vf(()=>{if(s.get(Z0)===y)s.delete(Z0)})},l0),X(l0,"flexDirection","column"),X(l0,"gap",0),X(l0,"onMouseUp",()=>{if(f.onSelect(p.id),f.activateOnClick)f.onActivate?.(p.id)}),X(l0,"onMouseOver",(y)=>k0({task:p,x:y.x,y:y.y})),X(l0,"onMouseOut",()=>k0((y)=>y?.task.id===p.id?null:y)),D(Yf,S0),D(Yf,xf),X(Yf,"flexDirection","row"),X(Yf,"gap",0),X(S0,"wrapMode","none"),K(S0,O0),D(xf,df),D(xf,d),X(xf,"flexDirection","row"),X(xf,"flexGrow",1),X(xf,"paddingRight",1),X(xf,"gap",0),X(df,"wrapMode","none"),K(df,()=>b0().stateGlyph),X(d,"wrapMode","none"),X(d,"flexGrow",1),K(d,()=>T8(b0().titleText,w())),K(xf,b(X0,{get when(){return I0(()=>!!f.moveMode?.())()&&D0()},get children(){var y=W("text");return X(y,"wrapMode","none"),K(y,()=>F("tasks.moveChip")),E((A0)=>X(y,"fg",J.warning,A0)),y}}),null),D(g0,Kf),D(g0,qf),X(g0,"flexDirection","row"),X(g0,"gap",0),X(Kf,"wrapMode","none"),K(Kf,O0),D(qf,Of),X(qf,"flexDirection","row"),X(qf,"flexGrow",1),X(qf,"paddingLeft",2),X(qf,"paddingRight",1),X(qf,"gap",1),X(Of,"wrapMode","none"),X(Of,"flexGrow",1),K(Of,()=>b0().subtitleText),K(qf,b(X0,{get when(){return p.pinned===!0},get children(){var y=W("text");return D(y,E0("\u25B4")),X(y,"wrapMode","none"),E((A0)=>X(y,"fg",J.warning,A0)),y}}),null),K(qf,b(X0,{get when(){return ID(p)},children:(y)=>(()=>{var A0=W("text");return X(A0,"wrapMode","none"),K(A0,()=>y().glyph),E((m0)=>X(A0,"fg",$0(y().tone),m0)),A0})()}),null),K(qf,b(X0,{get when(){return N0().added>0},get children(){var y=W("text"),A0=E0("+");return D(y,A0),X(y,"wrapMode","none"),K(y,()=>N0().added,null),E((m0)=>X(y,"fg",J.success,m0)),y}}),null),K(qf,b(X0,{get when(){return N0().deleted>0},get children(){var y=W("text"),A0=E0("\u2212");return D(y,A0),X(y,"wrapMode","none"),K(y,()=>N0().deleted,null),E((m0)=>X(y,"fg",J.error,m0)),y}}),null),E((y)=>{var A0=D0()?J.backgroundElement:void 0,m0=h0(),u0=U0(),X1=Nf.BOLD,V1=J.text,tf=j0()||D0()?Nf.BOLD:void 0,P1=h0(),xJ=J.textMuted,M1=Nf.DIM;return A0!==y.e&&(y.e=X(l0,"backgroundColor",A0,y.e)),m0!==y.t&&(y.t=X(S0,"fg",m0,y.t)),u0!==y.a&&(y.a=X(df,"fg",u0,y.a)),X1!==y.o&&(y.o=X(df,"attributes",X1,y.o)),V1!==y.i&&(y.i=X(d,"fg",V1,y.i)),tf!==y.n&&(y.n=X(d,"attributes",tf,y.n)),P1!==y.s&&(y.s=X(Kf,"fg",P1,y.s)),xJ!==y.h&&(y.h=X(Of,"fg",xJ,y.h)),M1!==y.r&&(y.r=X(Of,"attributes",M1,y.r)),y},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0}),r0})()}}),null),K(Rf,b(X0,{get when(){return Q0().length===0},get children(){var o=W("box"),p=W("text");return D(o,p),X(o,"paddingTop",1),X(o,"paddingLeft",1),K(p,(()=>{var Z0=I0(()=>!!(Z()&&Q().trim().length>0));return()=>Z0()?F("tasks.empty.noMatchSearch"):I0(()=>!!z0())()?I0(()=>z()==="active")()?F("tasks.empty.noActiveProject"):F("tasks.empty.noArchivedProject"):I0(()=>z()==="active")()?F("tasks.empty.noActive"):F("tasks.empty.noArchived")})()),E((Z0)=>X(p,"fg",J.textMuted,Z0)),o}}),null),K(Rf,b(X0,{get when(){return I0(()=>!!(z0()&&Q0().length>0&&!f0()))()&&!(Z()&&Q().trim().length>0)},get children(){var o=W("box"),p=W("text");return D(o,p),X(o,"paddingTop",1),X(o,"paddingLeft",1),X(p,"wrapMode","none"),K(p,(()=>{var Z0=I0(()=>z()==="active");return()=>Z0()?F("tasks.empty.noActiveProject"):F("tasks.empty.noArchivedProject")})()),E((Z0)=>{var D0=J.textMuted,j0=Nf.DIM;return D0!==Z0.e&&(Z0.e=X(p,"fg",D0,Z0.e)),j0!==Z0.t&&(Z0.t=X(p,"attributes",j0,Z0.t)),Z0},{e:void 0,t:void 0}),o}}),null),K(Rf,b(X0,{get when(){return I0(()=>z()==="archived")()&&Q0().length>0},get children(){var o=W("box"),p=W("text");return D(o,p),X(o,"paddingTop",1),X(o,"paddingLeft",1),X(p,"wrapMode","none"),K(p,()=>F("tasks.archiveHint")),E((Z0)=>{var D0=J.textMuted,j0=Nf.DIM;return D0!==Z0.e&&(Z0.e=X(p,"fg",D0,Z0.e)),j0!==Z0.t&&(Z0.t=X(p,"attributes",j0,Z0.t)),Z0},{e:void 0,t:void 0}),o}}),null),K(v,b(X0,{get when(){return f.zenActive?.()},get children(){var o=W("box"),p=W("text");return D(o,p),X(o,"flexShrink",0),X(o,"paddingLeft",1),X(o,"paddingRight",1),X(o,"paddingTop",1),D(p,E0("\u262F ZEN")),X(p,"wrapMode","none"),E((Z0)=>{var D0=J.accent,j0=Nf.BOLD;return D0!==Z0.e&&(Z0.e=X(p,"fg",D0,Z0.e)),j0!==Z0.t&&(Z0.t=X(p,"attributes",j0,Z0.t)),Z0},{e:void 0,t:void 0}),o}}),null),K(v,b(X0,{get when(){return H0()},children:(o)=>{let p=K0(()=>{let b0=o().task,U0=[];if(U0.push({text:b0.kind==="main"?MJ(b0.repo):b0.title,bold:!0}),b0.branch.length>0)U0.push({text:`\u2387 ${b0.branch}`});if(b0.worktreePath.length>0)U0.push({text:b0.worktreePath,dim:!0});return U0}),Z0=72,D0=K0(()=>Math.min(68,Math.max(...p().map((b0)=>Cb(b0.text))))),j0=K0(()=>D0()+4),k=K0(()=>p().length+2),N0=K0(()=>Math.max(0,Math.min(o().x+2,q0().width-j0()-1))),p0=K0(()=>Math.max(0,Math.min(o().y+1,q0().height-k()-1)));return(()=>{var b0=W("box");return X(b0,"position","absolute"),X(b0,"zIndex",2600),X(b0,"flexDirection","column"),X(b0,"border",!0),X(b0,"paddingLeft",1),X(b0,"paddingRight",1),K(b0,b(Zf,{get each(){return p()},children:(U0)=>(()=>{var h0=W("text");return X(h0,"wrapMode","none"),K(h0,(()=>{var O0=I0(()=>!!U0.dim);return()=>O0()?kb(U0.text,D0()):I8(U0.text,D0())})()),E((O0)=>{var r0=U0.dim?J.textMuted:J.text,l0=U0.bold?Nf.BOLD:U0.dim?Nf.DIM:void 0;return r0!==O0.e&&(O0.e=X(h0,"fg",r0,O0.e)),l0!==O0.t&&(O0.t=X(h0,"attributes",l0,O0.t)),O0},{e:void 0,t:void 0}),h0})()})),E((U0)=>{var h0=N0(),O0=p0(),r0=j0(),l0=J.focusAccent,Yf=J.backgroundElement;return h0!==U0.e&&(U0.e=X(b0,"left",h0,U0.e)),O0!==U0.t&&(U0.t=X(b0,"top",O0,U0.t)),r0!==U0.a&&(U0.a=X(b0,"width",r0,U0.a)),l0!==U0.o&&(U0.o=X(b0,"borderColor",l0,U0.o)),Yf!==U0.i&&(U0.i=X(b0,"backgroundColor",Yf,U0.i)),U0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),b0})()}}),null),E((o)=>{var p=Y()?J.focusAccent:J.textMuted,Z0=Nf.BOLD,D0=J.textMuted,j0=Nf.DIM;return p!==o.e&&(o.e=X(_0,"fg",p,o.e)),Z0!==o.t&&(o.t=X(_0,"attributes",Z0,o.t)),D0!==o.a&&(o.a=X(Xf,"fg",D0,o.a)),j0!==o.o&&(o.o=X(Xf,"attributes",j0,o.o)),o},{e:void 0,t:void 0,a:void 0,o:void 0}),v})()}var xD=32,dZ,gb=2000,Rb=16;var PD=C(()=>{P();P();P();P();P();P();P();P();P();G1();P();Wf();Ef();Ef();kD();SQ();yD();TD();WG();ED();dZ=[{view:"active"},{view:"archived"}]});var dD={};jf(dD,{startTasksPane:()=>Ib,legendRowCap:()=>nD,legendCap:()=>cD});import{existsSync as vD}from"fs";import{stat as Nb}from"fs/promises";import{TextAttributes as xQ}from"@opentui/core";function h8(f){return!!f&&YX(f)}function mD(f){let J=f instanceof Error?f.message:String(f);if(/not a git repository/i.test(J))return F("tasks.toast.worktreeErrorNotGit");return F("tasks.toast.worktreeErrorGeneric",{message:J})}function bb(f){let{theme:J}=d0(),Y=Pf(),z=SG(),G=RQ(),[Z,q]=r(f.tasks().some((m)=>m.id===f.initialTaskId)?f.initialTaskId:f.tasks()[0]?.id??null);function Q(m){G.notify({kind:"error",taskId:Z()??"",tabId:"",title:m})}function H(m){G.notify({kind:"done",taskId:Z()??"",tabId:"",title:m})}let[B,V]=r(!1),[j,U]=r(z.get("activeSortMode")==="recent"?"recent":"default"),L=z.get("tasksPane.projectFilter"),[O,M]=r(typeof L==="string"&&L.length>0?L:null),g=(m)=>{M(m),z.set("tasksPane.projectFilter",m)},[I,a]=r(null),[N,A]=r(!1);{let m=process.env.TMUX_PANE;if(m){let L0=()=>{a0(["show-options","-wqv","-t",m,vz]).then(({code:R0,stdout:i0})=>{A(R0===0&&i0.trim().length>0)})};L0();let s=setInterval(L0,1000);vf(()=>clearInterval(s))}}let R=TJ(),S=!f.initialTaskId;ff(()=>{let m=f.orch?.activeTaskSignal()();if(!m)return;if(!S){if(m!==f.initialTaskId)return;S=!0}q(m)}),ff(O1(()=>f.orch?.uiPrefsSignal()(),(m)=>{if(m&&m.sortMode!==$f(j))U(m.sortMode);if(m&&m.projectFilter!==$f(O))M(m.projectFilter)})),ff(()=>{let m=f.orch?.updateSignal()();if(m)a(m)});let _={orch:f.orch,tasks:()=>f.tasks(),confirm:async(m)=>await JY.show(Y,m.title,m.body,m.cancelLabel,m.confirmLabel)===!0,promptText:(m,L0)=>fY.show(Y,m,L0),logger:console,logPrefix:"[kobe tasks]",notifyError:Q,notifyInfo:H,reload:()=>f.reload(),switchBeforeKill:!0,updateActiveTask:!0,onTaskDeleted:(m,L0)=>{if(Z()!==m)return;let s=f.tasks();q(L0?.id??(s.find((R0)=>!R0.archived)??s[0])?.id??null)},promptNewTask:(m,L0,s)=>LQ.show(Y,m,L0,s),cursorRepo:()=>{let m=f.tasks();return(m.find((L0)=>L0.id===Z())??m[0])?.repo},lastVendor:()=>kf("lastSelectedVendor"),rememberVendor:(m)=>af("lastSelectedVendor",m),openCreateSurface:async(m)=>{if(jz(z.get(pJ,Bz))!=="chattab")return!1;let s=await k1();if(!s)return!1;return await Pq(s,m),!0},selectTask:(m)=>q(m),enterTask:(m)=>H0(m)};async function z0(){await DD(_)}async function e(){if(jz(z.get(pJ,Bz))==="chattab"){let s=await k1();if(s){await wq(s);return}}if(!(await Nz.show(Y,z,f.orch??void 0)).visualPrefsChanged)return;if(!z.flush())return;try{let s=await k1();if(s)await HG(s)}catch(s){console.error("[kobe tasks] failed to refresh workspace panes:",s)}}async function Y0(){let m=await k1();if(m){await hq(m);return}TG.show(Y)}async function T(){if(!I()?.hasUpdate){H(F("tasks.toast.alreadyLatest",{version:o0}));return}let L0=await k1();if(!L0)return;await vq(L0)}async function Q0(m){await jD(_,m)}async function t(m){await WD(_,m)}async function V0(m){await VD(_,m)}async function C0(m){await KD(_,m)}async function $(m){await UD(_,m)}async function x(m){let s=f.tasks().find((i0)=>i0.id===m)?.worktreePath;if(!s||!vD(s)){if(!f.orch){console.error("[kobe tasks] no daemon; cannot materialise worktree"),Q(F("tasks.toast.noDaemonWorktree"));return}try{s=await f.orch.ensureWorktree(m)}catch(i0){console.error("[kobe tasks] task.ensureWorktree failed:",i0),Q(mD(i0));return}await f.reload()}if(!s||!vD(s))return;let R0=MD();if(!R0){console.error("[kobe tasks] no editor/opener found; set KOBE_OPEN_EDITOR"),Q(F("tasks.toast.noEditor"));return}if(!FD(s,R0))console.error(`[kobe tasks] failed to open worktree with ${R0.label}`),Q(F("tasks.toast.openWorktreeFailed",{label:R0.label}))}async function f0(){if(!process.env.TMUX_PANE)return;let m=await k1();if(!m)return;let L0=await az(m);if(!L0)return;await v0(["select-pane","-t",L0])}async function u(m,L0){let s=f.tasks().find((R0)=>R0.id===m);if(!s||s.kind==="main"||!f.orch)return;try{await f.orch.moveTask(m,L0)}catch(R0){console.error("[kobe tasks] task.move failed:",R0),Q(F("tasks.toast.moveTaskFailed",{message:R0 instanceof Error?R0.message:String(R0)}));return}q(m),await f.reload()}let[G0,w]=r(z.get("tasksPane.keysCollapsed",!1)===!0),n=(m)=>{w(m),z.set("tasksPane.keysCollapsed",m)};ff(O1(()=>f.orch?.uiPrefsSignal()(),(m)=>{if(m&&m.keysCollapsed!==$f(G0))w(m.keysCollapsed)}));let[q0,W0]=r(!1);Df(()=>({enabled:Y.stack.length===0&&!q0(),bindings:wY({"help.open":()=>void Y0(),"task.new":()=>void z0(),"settings.open.sidebar":()=>void e(),"tasks.update":()=>void T(),"tasks.openWorktree":()=>{let m=Z();if(m)x(m)},"tasks.renameBranch":()=>{let m=Z();if(m)C0(m)},"tasks.cycleEngine":()=>{let m=Z();if(m)$(m)},"tasks.toggleKeys":()=>n(!G0()),"tasks.focusEngine":()=>void f0().catch((m)=>console.error("[kobe tasks] focus engine pane failed:",m))})}));async function H0(m){let L0=Mf(m),s=f.tasks().find((J0)=>J0.id===m),R0=await k1();if(R0&&R0!==L0)await KZ(R0);if(await Bf(L0)){let J0=await iX(L0,"@kobe_worktree")||s?.worktreePath||"";if(h8(J0)){let M0=s?.repo?_J(s.repo,J0,{kind:"repo-init"}):void 0;await yY({name:L0,cwd:J0,command:N1(s?.vendor),taskId:m,vendor:s?.vendor,repo:s?.repo,launchInit:M0})}await iq(L0),await v0(["switch-client","-t",`=${L0}`]),f.orch?.setActiveTask(m).catch(()=>{});return}let $0=s?.worktreePath;if(!h8($0)){if(!f.orch){console.error("[kobe tasks] no daemon; cannot materialise worktree"),Q(F("tasks.toast.noDaemonOpen"));return}try{$0=await f.orch.ensureWorktree(m)}catch(J0){console.error("[kobe tasks] task.ensureWorktree failed:",J0),Q(mD(J0));return}await f.reload()}if(!h8($0))return;let w0=s?.repo?_J(s.repo,$0,{kind:"repo-init"}):void 0;if(!await yY({name:L0,cwd:$0,command:N1(s?.vendor),taskId:m,vendor:s?.vendor,repo:s?.repo,launchInit:w0})){console.error(`[kobe tasks] failed to start session ${L0}`),Q(F("tasks.toast.sessionStartFailed"));return}await iq(L0),await v0(["switch-client","-t",`=${L0}`]),f.orch?.setActiveTask(m).catch(()=>{})}let k0=K0(()=>{let m=I();if(m?.hasUpdate)return{label:`v${m.latest} \u2191`,emphasize:!0};return{label:`v${o0}`,emphasize:!1}}),x0=()=>f.orch?.daemonStaleSignal()()??!1,y0=()=>f.orch?.daemonVersionSignal()()??null,Gf=K0(()=>f.tasks().find((m)=>m.id===Z())?.kind==="main");return(()=>{var m=W("box"),L0=W("box");return D(m,L0),X(m,"flexDirection","column"),X(m,"flexGrow",1),K(m,b(QD,{stale:x0,daemonVersion:y0,clientVersion:o0,width:()=>R().width}),L0),X(L0,"flexGrow",1),X(L0,"flexShrink",1),K(L0,b(hD,{get tasks(){return f.tasks},selectedId:Z,onSelect:q,onActivate:(s)=>void H0(s),activateOnClick:!0,headerStatus:k0,onHeaderStatusClick:()=>void T(),onAddTask:()=>void z0(),zenActive:N,width:()=>R().width,get engineState(){return I0(()=>!!f.orch)()?f.orch.engineStateSignal():void 0},get taskJobs(){return I0(()=>!!f.orch)()?f.orch.taskJobsSignal():void 0},get worktreeChanges(){return f.orch?()=>{let s=f.orch;if(!s||s.connectionStateSignal()()!=="online")return null;return s.worktreeChangesSignal()()}:void 0},onRenameRequest:(s)=>void V0(s),onDeleteRequest:(s)=>void t(s),onArchiveRequest:(s)=>void Q0(s),onLocalMergeRequest:(s)=>{let R0=f.tasks().find((i0)=>i0.id===s);if(!R0||R0.kind==="main")return;q(s),V((i0)=>!i0)},moveMode:B,onMoveRequest:(s,R0)=>void u(s,R0),onMoveModeExit:()=>V(!1),sortMode:j,projectFilter:O,onProjectFilterChange:g,onSortModeToggle:()=>{let s=j()==="default"?"recent":"default";U(s),z.set("activeSortMode",s)},focused:()=>Y.stack.length===0,onSearchActiveChange:W0})),K(m,b(Sb,{moveMode:B,selectedIsMain:Gf,collapsed:G0,onToggleCollapsed:()=>n(!G0())}),null),E((s)=>X(m,"backgroundColor",J.background,s)),m})()}function cD(f){let J=q8(f);if(!J)return null;let Y=J.hint?.keys??J.keys[0];return Y&&Y.length>0?Y:null}function nD(f){let J=f.map(cD).filter((Y)=>Y!==null);return J.length>0?J.join("/"):null}function Sb(f){let{theme:J}=d0(),[Y,z]=r("Prefix");f1(()=>{a0(["show-options","-g","prefix"]).then(({code:U,stdout:L})=>{if(U!==0)return;let O=TQ(L);if(O)z(O)})});let G=()=>{X8();let U=Oq(),L=U.binds,O=[],M=U.focus.filter((I)=>I!==null).map((I)=>I.chord);if(M.length===4&&M.every((I,a)=>I===RY[a]))O.push({k:"ctrl+hjkl",label:F("tasks.hints.movePanes")});else if(M.length>0)O.push({k:M[0],label:F("tasks.hints.movePanes")});let g=(I,a)=>{let N=a.map((A)=>L[A]?.chord).filter((A)=>!!A);if(N.length>0)O.push({k:`prefix ${N.join("/")}`,label:I})};if(L["tmux.detach"])O.push({k:L["tmux.detach"].chord,label:F("tasks.hints.detach")});return g(F("tasks.hints.splits"),["tmux.layout.workspaceSplit","tmux.layout.workspaceClose","tmux.layout.workspaceReset"]),g(F("tasks.hints.panes"),["tmux.layout.tasksToggle","tmux.layout.opsToggle","tmux.layout.terminalToggle"]),O},Z=()=>{X8();let U=[{ids:["help.open"],label:F("tasks.hints.fullHelp")},{ids:["task.new"],label:F("tasks.hints.newTask")},{ids:["settings.open.sidebar"],label:F("tasks.hints.settings")},{ids:["sidebar.select"],label:F("tasks.hints.open")},{ids:["tasks.focusEngine"],label:F("tasks.hints.focusEngine")},{ids:["tasks.openWorktree"],label:F("tasks.hints.openWorktree")},{ids:["sidebar.delete"],label:F("tasks.hints.delete")},{ids:["sidebar.view"],label:F("tasks.hints.views")},{ids:["sidebar.projectFilter"],label:F("tasks.hints.project")}],L=[];for(let O of U){let M=nD(O.ids);if(M===null)continue;L.push({k:M,label:O.label,dimWhenMain:O.dimWhenMain})}return L.push(...G()),L},q=()=>[{k:"j/k",label:F("tasks.hints.reorder")},{k:"enter/esc",label:F("tasks.hints.done")}],Q=()=>f.moveMode?.()?q():Z(),H=18,B=()=>Math.min(H,Math.max(...Q().map((U)=>U.label.length))),V=(U)=>U.length<=B()?U:`${U.slice(0,Math.max(0,B()-1))}\u2026`,j=()=>(f.collapsed?.()??!1)&&!(f.moveMode?.()??!1);return(()=>{var U=W("box"),L=W("text");return D(U,L),X(U,"flexShrink",0),X(U,"flexDirection","column"),X(U,"paddingLeft",1),X(U,"paddingRight",1),X(U,"paddingTop",1),X(U,"paddingBottom",1),X(U,"gap",0),X(L,"wrapMode","none"),X(L,"onMouseUp",()=>f.onToggleCollapsed?.()),K(L,(()=>{var O=I0(()=>!!j());return()=>O()?F("tasks.hints.headerFolded"):F("tasks.hints.headerUnfolded")})()),K(U,b(X0,{get when(){return!j()},get children(){return b(Zf,{get each(){return Q()},children:(O)=>{let M=()=>O.dimWhenMain===!0&&(f.selectedIsMain?.()??!1);return(()=>{var g=W("box"),I=W("box"),a=W("text"),N=E0("["),A=E0("]"),R=W("box"),S=W("text");return D(g,I),D(g,R),X(g,"flexDirection","row"),X(g,"gap",1),X(g,"justifyContent","space-between"),D(I,a),X(I,"width",10),X(I,"flexShrink",0),D(a,N),D(a,A),X(a,"wrapMode","none"),K(a,()=>IG(O.k,Y()),A),D(R,S),X(R,"flexShrink",0),X(S,"wrapMode","none"),K(S,()=>V(O.label)),E((_)=>{var z0=M()?J.textMuted:J.accent,e=M()?xQ.DIM:xQ.BOLD,Y0=B(),T=J.textMuted,Q0=M()?xQ.DIM:void 0;return z0!==_.e&&(_.e=X(a,"fg",z0,_.e)),e!==_.t&&(_.t=X(a,"attributes",e,_.t)),Y0!==_.a&&(_.a=X(R,"width",Y0,_.a)),T!==_.o&&(_.o=X(S,"fg",T,_.o)),Q0!==_.i&&(_.i=X(S,"attributes",Q0,_.i)),_},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),g})()}})}}),null),E((O)=>{var M=J.textMuted,g=xQ.DIM;return M!==O.e&&(O.e=X(L,"fg",M,O.e)),g!==O.t&&(O.t=X(L,"attributes",g,O.t)),O},{e:void 0,t:void 0}),U})()}async function Ib(f={}){await L1({logContext:"tasks",providers:{notifications:!0},setup:()=>Tb(f)})}async function Tb(f){let J=new Iz({homeDir:OJ()});await J.load();let[Y,z]=r(J.list()),G=null;try{let B=await p1();if(B){let V=new j1(B);await V.init(),G=V}else nJ("tasks-boot","no daemon running \u2014 polling tasks.json (a gui owns daemon lifecycle)")}catch(B){BY("tasks-boot",B),nJ("tasks-boot","daemon subscribe failed \u2014 polling tasks.json")}let Z=()=>G&&G.connectionStateSignal()()==="online"?G.tasksSignal()():Y(),q=async()=>{await J.load(),z(J.list())},Q="",H=setInterval(()=>{if(G&&G.connectionStateSignal()()==="online")return;(async()=>{let B="missing";try{let V=await Nb(J.filePath);B=`${V.mtimeMs}:${V.size}`}catch{}if(B===Q)return;Q=B,await q()})().catch(()=>{})},yb);return{root:()=>[b(bb,{tasks:Z,get initialTaskId(){return f.initialTaskId},orch:G,reload:q}),b(XD,{})],onDestroy:()=>{if(H)clearInterval(H);G?.dispose()}}}var yb=1500;var iD=C(()=>{P();P();P();P();P();P();P();P();Sf();qJ();G1();P();_Y();y1();Wf();EY();E1();lf();e1();PG();zG();gf();Aq();U1();M8();yG();F8();y8();qD();HD();bG();PZ();CQ();Ef();L8();PY();b1();LD();OD();PD();J1();h1();O8()});var lD={};jf(lD,{startSettingsHost:()=>Eb});function ub(f){let J=SG(),Y=Pf(),{theme:z}=d0(),G=!1,Z=!1;async function q(){if(Z)return;Z=!0;try{if(J.flush()&&G){let H=await k1();if(H)await HG(H)}}catch(Q){console.error("[kobe settings] failed to refresh workspace panes:",Q)}finally{process.exit(0)}}return Df(()=>({enabled:Y.stack.length===0,bindings:[{key:"escape",cmd:q},{key:"q",cmd:q},{key:"ctrl+c",cmd:q}]})),(()=>{var Q=W("scrollbox");return X(Q,"flexGrow",1),X(Q,"paddingTop",1),X(Q,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),K(Q,b(Nz,{kv:J,get orchestrator(){return f.orchestrator??void 0},standalone:!0,onVisualPrefsChange:()=>{G=!0},onClose:q})),E((H)=>X(Q,"backgroundColor",z.background,H)),Q})()}async function Eb(){await L1({setup:async()=>{let f=null;try{let J=await p1();if(J){let Y=new j1(J);await Y.init(),f=Y}else console.error("[kobe settings] no daemon running; Restart backend disabled")}catch(J){console.error("[kobe settings] daemon unavailable; Restart backend disabled:",J)}return{root:()=>b(ub,{orchestrator:f}),onDestroy:()=>{f?.dispose()}}}})}var aD=C(()=>{P();P();P();P();P();P();y1();EY();y8();PZ();Ef();PY();b1();J1();h1()});var $D={};jf($D,{startHelpHost:()=>wb});function xb(){let f=Pf(),{theme:J}=d0();function Y(){process.exit(0)}return Df(()=>({enabled:f.stack.length===0,bindings:[{key:"escape",cmd:Y},{key:"q",cmd:Y},{key:"f1",cmd:Y},{key:"ctrl+c",cmd:Y}]})),(()=>{var z=W("box");return X(z,"flexGrow",1),X(z,"paddingTop",1),K(z,b(TG,{onClose:Y})),E((G)=>X(z,"backgroundColor",J.background,G)),z})()}async function wb(){await L1({providers:{kv:!1,focus:!1},setup:()=>({root:()=>b(xb,{})})})}var rD=C(()=>{P();P();P();P();P();M8();Ef();PY();b1();h1()});var pD={};jf(pD,{startUpdateHost:()=>db});import{spawn as hb,spawnSync as Pb}from"child_process";import{TextAttributes as EG}from"@opentui/core";function vb(f){if(!f)return!1;let J=process.platform,[Y,z]=J==="darwin"?["open",[f]]:J==="win32"?["cmd",["/c","start","",f]]:["xdg-open",[f]];try{return hb(Y,z,{stdio:"ignore",detached:!0}).unref(),!0}catch{return!1}}function mb(f){return f.replace(/\r\n/g,`
|
|
220
|
+
`)}var Ok;var CU=k(()=>{XQ();Ok=["install","status","command"]});var Sj={};jf(Sj,{runHookSubcommand:()=>Sk,readTextWithTimeout:()=>bU,parseWorktreeAddPath:()=>IU,ensureGlobalKobeHooks:()=>uk});import{homedir as gk}from"os";import{join as NU,resolve as yU}from"path";async function bU(f,J=Rk){let Y;try{return await Promise.race([f(),new Promise((z)=>{Y=setTimeout(()=>z(""),J)})])}finally{if(Y!==void 0)clearTimeout(Y)}}async function SU(){try{let f=await bU(()=>Bun.stdin.text());if(!f.trim())return{};let J=JSON.parse(f);return J&&typeof J==="object"&&!Array.isArray(J)?J:{}}catch{return{}}}function Ck(f,J){for(let Y=0;Y<f.length;Y++){if(f[Y]===J)return f[Y+1];if(f[Y].startsWith(`${J}=`))return f[Y].slice(J.length+1)}return}function Nk(f){return!!f&&typeof f==="object"&&!Array.isArray(f)}function yk(f){let J=[],Y=/"([^"]*)"|'([^']*)'|(\S+)/g,z;while((z=Y.exec(f))!==null)J.push(z[1]??z[2]??z[3]??"");return J}function IU(f){let J=yk(f),Y=new Set(["-b","-B","--reason"]);for(let z=0;z+1<J.length;z++){if(J[z]!=="worktree"||J[z+1]!=="add")continue;let G=z+2;while(G<J.length){let X=J[G];if(X==="&&"||X==="||"||X===";"||X==="|"||X===">"||X===">>")break;if(X.startsWith("-")){G+=Y.has(X)?2:1;continue}return X}}return}async function bk(){let f=await SU(),J=Nk(f.tool_input)?f.tool_input:{},Y=typeof J.command==="string"?J.command:"";if(!Y.includes("worktree"))return;let z=IU(Y);if(!z)return;let G=typeof f.cwd==="string"&&f.cwd?f.cwd:process.cwd(),X=yU(G,z),q=await p1();if(!q)return;try{await q.request("worktree.reconcile",{cwd:G,worktreePath:X})}finally{q.close()}}async function Sk(f){let[J,...Y]=f;if(J==="setup"){await Ek(Y);return}if(J===kk){try{await bk()}catch{}return}try{if(!J||!NZ(J))return;let z=await SU(),G=Ck(Y,"--task-id"),X=typeof z.cwd==="string"&&z.cwd?z.cwd:process.cwd(),q;for(let H of TU())if(q=H.activityDetailFromPayload(J,z),q)break;let Q=await p1();if(!Q)return;try{await Q.request("engine.reportEvent",{...G?{taskId:G}:{cwd:X},kind:J,...q?{detail:q}:{}})}finally{Q.close()}}catch{}}function Ik(){return cf.map((f)=>$H(f)).filter((f)=>f.supportsWorktreeSync())}function TU(){return cf.map((f)=>$H(f)).filter((f)=>f.supportsHooks())}function bj(){return NU(gk(),".claude","settings.json")}function Tk(f){if(!f||f==="off")return;if(f==="global")return bj();if(f.startsWith("repo:"))return NU(yU(f.slice(5)),".claude","settings.json");return f}async function uk(){try{let f=bj();for(let J of TU())await J.installActivityHooks(f),await J.installWorktreeWatchHook(f);await uU()}catch{}}async function uU(){let f=Ik();if(f.length===0)return;let J=kf(kU),Y=new Set([bj()]),z=Tk(J);if(z)Y.add(z);for(let G of f)for(let X of Y)await G.removeWorktreeSyncHook(X);if(J!=="off")af(kU,"off")}async function Ek(f){await uU(),process.stdout.write(["kobe 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 kobe previously installed has been removed.","","Sync is now automatic: a `claude --worktree` (or any session) started in a","worktree under a repo kobe already tracks is adopted as a task on launch.","To adopt existing worktrees on demand, use the New Task dialog or `kobe adopt`.",""].join(`
|
|
221
|
+
`))}var Rk=500,kk="worktree-created",kU="externalWorktreeSync";var Ij=k(()=>{y1();rH();yZ();Of();U1()});function xU(f){var J;if(f>=55296&&f<=57343||f>1114111)return 65533;return(J=xk.get(f))!==null&&J!==void 0?J:f}var Tj,xk,EU;var wU=k(()=>{xk=new Map([[0,65533],[128,8364],[130,8218],[131,402],[132,8222],[133,8230],[134,8224],[135,8225],[136,710],[137,8240],[138,352],[139,8249],[140,338],[142,381],[145,8216],[146,8217],[147,8220],[148,8221],[149,8226],[150,8211],[151,8212],[152,732],[153,8482],[154,353],[155,8250],[156,339],[158,382],[159,376]]),EU=(Tj=String.fromCodePoint)!==null&&Tj!==void 0?Tj:(f)=>{let J="";if(f>65535)f-=65536,J+=String.fromCharCode(f>>>10&1023|55296),f=56320|f&1023;return J+=String.fromCharCode(f),J}});function hU(f){let J=typeof atob==="function"?atob(f):typeof Buffer.from==="function"?Buffer.from(f,"base64").toString("binary"):new Buffer(f,"base64").toString("binary"),Y=J.length&-2,z=new Uint16Array(Y/2);for(let G=0,X=0;G<Y;G+=2){let q=J.charCodeAt(G),Q=J.charCodeAt(G+1);z[X++]=q|Q<<8}return z}var PU;var vU=k(()=>{PU=hU("QR08ALkAAgH6AYsDNQR2BO0EPgXZBQEGLAbdBxMISQrvCmQLfQurDKQNLw4fD4YPpA+6D/IPAAAAAAAAAAAAAAAAKhBMEY8TmxUWF2EYLBkxGuAa3RsJHDscWR8YIC8jSCSIJcMl6ie3Ku8rEC0CLjoupS7kLgAIRU1hYmNmZ2xtbm9wcnN0dVQAWgBeAGUAaQBzAHcAfgCBAIQAhwCSAJoAoACsALMAbABpAGcAO4DGAMZAUAA7gCYAJkBjAHUAdABlADuAwQDBQHIiZXZlAAJhAAFpeW0AcgByAGMAO4DCAMJAEGRyAADgNdgE3XIAYQB2AGUAO4DAAMBA8CFoYZFj4SFjcgBhZAAAoFMqAAFncIsAjgBvAG4ABGFmAADgNdg43fAlbHlGdW5jdGlvbgCgYSBpAG4AZwA7gMUAxUAAAWNzpACoAHIAAOA12Jzc6SFnbgCgVCJpAGwAZABlADuAwwDDQG0AbAA7gMQAxEAABGFjZWZvcnN1xQDYANoA7QDxAPYA+QD8AAABY3LJAM8AayNzbGFzaAAAoBYidgHTANUAAKDnKmUAZAAAoAYjeQARZIABY3J0AOAA5QDrAGEidXNlAACgNSLuI291bGxpcwCgLCFhAJJjcgAA4DXYBd1wAGYAAOA12Dnd5SF2ZdhiYwDyAOoAbSJwZXEAAKBOIgAHSE9hY2RlZmhpbG9yc3UXARoBHwE6AVIBVQFiAWQBZgGCAakB6QHtAfIBYwB5ACdkUABZADuAqQCpQIABY3B5ACUBKAE1AfUhdGUGYWmg0iJ0KGFsRGlmZmVyZW50aWFsRAAAoEUhbCJleXMAAKAtIQACYWVpb0EBRAFKAU0B8iFvbgxhZABpAGwAO4DHAMdAcgBjAAhhbiJpbnQAAKAwIm8AdAAKYQABZG5ZAV0BaSJsbGEAuGB0I2VyRG90ALdg8gA5AWkAp2NyImNsZQAAAkRNUFRwAXQBeQF9AW8AdAAAoJkiaSJudXMAAKCWIuwhdXMAoJUiaSJtZXMAAKCXIm8AAAFjc4cBlAFrKndpc2VDb250b3VySW50ZWdyYWwAAKAyImUjQ3VybHkAAAFEUZwBpAFvJXVibGVRdW90ZQAAoB0gdSJvdGUAAKAZIAACbG5wdbABtgHNAdgBbwBuAGWgNyIAoHQqgAFnaXQAvAHBAcUB8iJ1ZW50AKBhIm4AdAAAoC8i7yV1ckludGVncmFsAKAuIgABZnLRAdMBAKACIe8iZHVjdACgECJuLnRlckNsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbAAAoDMi7yFzcwCgLypjAHIAAOA12J7ccABDoNMiYQBwAACgTSKABURKU1phY2VmaW9zAAsCEgIVAhgCGwIsAjQCOQI9AnMCfwNvoEUh9CJyYWhkAKARKWMAeQACZGMAeQAFZGMAeQAPZIABZ3JzACECJQIoAuchZXIAoCEgcgAAoKEhaAB2AACg5CoAAWF5MAIzAvIhb24OYRRkbAB0oAciYQCUY3IAAOA12AfdAAFhZkECawIAAWNtRQJnAvIjaXRpY2FsAAJBREdUUAJUAl8CYwJjInV0ZQC0YG8AdAFZAloC2WJiJGxlQWN1dGUA3WJyImF2ZQBgYGkibGRlANxi7yFuZACgxCJmJWVyZW50aWFsRAAAoEYhcAR9AgAAAAAAAIECjgIAABoDZgAA4DXYO91EoagAhQKJAm8AdAAAoNwgcSJ1YWwAAKBQIuIhbGUAA0NETFJVVpkCqAK1Au8C/wIRA28AbgB0AG8AdQByAEkAbgB0AGUAZwByAGEA7ADEAW8AdAKvAgAAAACwAqhgbiNBcnJvdwAAoNMhAAFlb7kC0AJmAHQAgAFBUlQAwQLGAs0CciJyb3cAAKDQIekkZ2h0QXJyb3cAoNQhZQDlACsCbgBnAAABTFLWAugC5SFmdAABQVLcAuECciJyb3cAAKD4J+kkZ2h0QXJyb3cAoPon6SRnaHRBcnJvdwCg+SdpImdodAAAAUFU9gL7AnIicm93AACg0iFlAGUAAKCoInAAQQIGAwAAAAALA3Iicm93AACg0SFvJHduQXJyb3cAAKDVIWUlcnRpY2FsQmFyAACgJSJuAAADQUJMUlRhJAM2AzoDWgNxA3oDciJyb3cAAKGTIUJVLAMwA2EAcgAAoBMpcCNBcnJvdwAAoPUhciJldmUAEWPlIWZ00gJDAwAASwMAAFIDaSVnaHRWZWN0b3IAAKBQKWUkZVZlY3RvcgAAoF4p5SJjdG9yQqC9IWEAcgAAoFYpaSJnaHQA1AFiAwAAaQNlJGVWZWN0b3IAAKBfKeUiY3RvckKgwSFhAHIAAKBXKWUAZQBBoKQiciJyb3cAAKCnIXIAcgBvAPcAtAIAAWN0gwOHA3IA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YwAAoN8i4SFycnCgtiEAoD0pgKIqImJjZG9zACsVMBU6FT4VQRVyImNhcAAAoEgqAAFhdTQVNxVwAACgRipwAACgSipvAHQAAKCNInIAAKBFKgDgKiIA/gACYWxydksVURVuFXMVcgByAG2gtyEAoDwpeQCAAWV2dwBYFWUVaRVxAHACXxUAAAAAYxVyAGUA4wAXFXUA4wAZFWUAZQAAoM4iZSJkZ2UAAKDPImUAbgA7gKQApEBlI2Fycm93AAABbHJ7FX8V5SFmdACgtiFpImdodAAAoLchZQDkAG0VAAFjaYsVkRVvAG4AaQBuAPQAkwFuAHQAAKAxImwiY3R5AACgLSOACUFIYWJjZGVmaGlqbG9yc3R1d3oAuBW7Fb8V1RXgFegV+RUKFhUWHxZUFlcWZRbFFtsW7xb7FgUXChdyAPIAtAJhAHIAAKBlKQACZ2xyc8YVyhXOFdAV5yFlcgCgICDlIXRoAKA4IfIA9QxoAHagECAAoKMiawHZFd4VYSJyb3cAAKAPKWEA4wBfAgABYXnkFecV8iFvbg9hNGQAoUYhYW/tFfQVAAFnciEC8RVyAACgyiF0InNlcQAAoHcqgAFnbG0A/xUCFgUWO4CwALBAdABhALRjcCJ0eXYAAKCxKQABaXIOFhIW8yFodACgfykA4DXYId1hAHIAAAFschsWHRYAoMMhAKDCIYACYWVnc3YAKBauAjYWOhY+Fm0AAKHEIm9zLhY0Fm4AZABzoMQi9SFpdACgZiZhIm1tYQDdY2kAbgAAoPIiAKH3AGlvQxZRFmQAZQAAgfcAO29KFksW90BuI3RpbWVzAACgxyJuAPgAUBZjAHkAUmRjAG8CXhYAAAAAYhZyAG4AAKAeI28AcAAAoA0jgAJscHR1dwBuFnEWdRaSFp4W7CFhciRgZgAA4DXYVd0AotkCZW1wc30WhBaJFo0WcQBkoFAibwB0AACgUSJpIm51cwAAoDgi7CF1cwCgFCLxInVhcmUAoKEiYgBsAGUAYgBhAHIAdwBlAGQAZwDlANcAbgCAAWFkaAClFqoWtBZyAHIAbwD3APUMbwB3AG4AYQByAHIAbwB3APMA8xVhI3Jwb29uAAABbHK8FsAWZQBmAPQAHBZpAGcAaAD0AB4WYgHJFs8WawBhAHIAbwD3AJILbwLUFgAAAADYFnIAbgAAoB8jbwBwAACgDCOAAWNvdADhFukW7BYAAXJ55RboFgDgNdi53FVkbAAAoPYp8iFvaxFhAAFkcvMW9xZvAHQAAKDxImkA5qC/JVsSAAFhaP8WAhdyAPIANQNhAPIA1wvhIm5nbGUAoKYpAAFjaQ4XEBd5AF9k5yJyYXJyAKD/JwAJRGFjZGVmZ2xtbm9wcXJzdHV4MRc4F0YXWxcyBF4XaRd5F40XrBe0F78X2RcVGCEYLRg1GEAYAAFEbzUXgRZvAPQA+BUAAWNzPBdCF3UAdABlADuA6QDpQPQhZXIAoG4qAAJhaW95TRdQF1YXWhfyIW9uG2FyAGOgViI7gOoA6kDsIW9uAKBVIk1kbwB0ABdhAAFEcmIXZhdvAHQAAKBSIgDgNdgi3XKhmipuF3QXYQB2AGUAO4DoAOhAZKCWKm8AdAAAoJgqgKGZKmlscwCAF4UXhxfuInRlcnMAoOcjAKATIWSglSpvAHQAAKCXKoABYXBzAJMXlheiF2MAcgATYXQAeQBzogUinxcAAAAAoRdlAHQAAKAFInAAMaADIDMBqRerFwCgBCAAoAUgAAFnc7AXsRdLYXAAAKACIAABZ3C4F7sXbwBuABlhZgAA4DXYVt2AAWFscwDFF8sXzxdyAHOg1SJsAACg4yl1AHMAAKBxKmkAAKG1A2x21RfYF28AbgC1Y/VjAAJjc3V24BfoF/0XEBgAAWlv5BdWF3IAYwAAoFYiaQLuFwAAAADwF+0ADQThIW50AAFnbPUX+Rd0AHIAAKCWKuUhc3MAoJUqgAFhZWkAAxgGGAoYbABzAD1gcwB0AACgXyJ2AESgYSJEAACgeCrwImFyc2wAoOUpAAFEYRkYHRhvAHQAAKBTInIAcgAAoHEpgAFjZGkAJxgqGO0XcgAAoC8hbwD0AIwCAAFhaDEYMhi3YzuA8ADwQAABbXI5GD0YbAA7gOsA60BvAACgrCCAAWNpcABGGEgYSxhsACFgcwD0ACwEAAFlb08YVxhjAHQAYQB0AGkAbwDuABoEbgBlAG4AdABpAGEAbADlADME4Ql1GAAAgRgAAIMYiBgAAAAAoRilGAAAqhgAALsYvhjRGAAA1xgnGWwAbABpAG4AZwBkAG8AdABzAGUA8QBlF3kARGRtImFsZQAAoEAmgAFpbHIAjRiRGJ0Y7CFpZwCgA/tpApcYAAAAAJoYZwAAoAD7aQBnAACgBPsA4DXYI93sIWlnAKAB++whaWcA4GYAagCAAWFsdACvGLIYthh0AACgbSZpAGcAAKAC+24AcwAAoLElbwBmAJJh8AHCGAAAxhhmAADgNdhX3QABYWvJGMwYbADsAGsEdqDUIgCg2SphI3J0aW50AACgDSoAAWFv2hgiGQABY3PeGB8ZsQPnGP0YBRkSGRUZAAAdGbID7xjyGPQY9xj5GAAA+xg7gL0AvUAAoFMhO4C8ALxAAKBVIQCgWSEAoFshswEBGQAAAxkAoFQhAKBWIbQCCxkOGQAAAAAQGTuAvgC+QACgVyEAoFwhNQAAoFghtgEZGQAAGxkAoFohAKBdITgAAKBeIWwAAKBEIHcAbgAAoCIjYwByAADgNdi73IAIRWFiY2RlZmdpamxub3JzdHYARhlKGVoZXhlmGWkZkhmWGZkZnRmgGa0ZxhnLGc8Z4BkjGmygZyIAoIwqgAFjbXAAUBlTGVgZ9SF0ZfVhbQBhAOSgswM6FgCghipyImV2ZQAfYQABaXliGWUZcgBjAB1hM2RvAHQAIWGAoWUibHFzAMYEcBl6GfGhZSLOBAAAdhlsAGEAbgD0AN8EgKF+KmNkbACBGYQZjBljAACgqSpvAHQAb6CAKmyggioAoIQqZeDbIgD+cwAAoJQqcgAA4DXYJN3noGsirATtIWVsAKA3IWMAeQBTZIChdyJFYWoApxmpGasZAKCSKgCgpSoAoKQqAAJFYWVztBm2Gb0ZwhkAoGkicABwoIoq8iFveACgiipxoIgq8aCIKrUZaQBtAACg5yJwAGYAAOA12FjdYQB2AOUAYwIAAWNp0xnWGXIAAKAKIW0AAKFzImVs3BneGQCgjioAoJAqAIM+ADtjZGxxco0E6xn0GfgZ/BkBGgABY2nvGfEZAKCnKnIAAKB6Km8AdAAAoNci0CFhcgCglSl1ImVzdAAAoHwqgAJhZGVscwAKGvQZFhrVBCAa8AEPGgAAFBpwAHIAbwD4AFkZcgAAoHgpcQAAAWxxxAQbGmwAZQBzAPMASRlpAO0A5AQAAWVuJxouGnIjdG5lcXEAAOBpIgD+xQAsGgAFQWFiY2Vma29zeUAaQxpmGmoabRqDGocalhrCGtMacgDyAMwCAAJpbG1yShpOGlAaVBpyAHMA8ABxD2YAvWBpAGwA9AASBQABZHJYGlsaYwB5AEpkAKGUIWN3YBpkGmkAcgAAoEgpAKCtIWEAcgAAoA8h6SFyYyVhgAFhbHIAcxp7Gn8a8iF0c3WgZSZpAHQAAKBlJuwhaXAAoCYg4yFvbgCguSJyAADgNdgl3XMAAAFld4wakRphInJvdwAAoCUpYSJyb3cAAKAmKYACYW1vcHIAnxqjGqcauhq+GnIAcgAAoP8h9CFodACgOyJrAAABbHKsGrMaZSRmdGFycm93AACgqSHpJGdodGFycm93AKCqIWYAAOA12Fnd4iFhcgCgFSCAAWNsdADIGswa0BpyAADgNdi93GEAcwDoAGka8iFvaydhAAFicNca2xr1IWxsAKBDIOghZW4AoBAg4Qr2GgAA/RoAAAgbExsaGwAAIRs7GwAAAAA+G2IbmRuVG6sbAACyG80b0htjAHUAdABlADuA7QDtQAChYyBpeQEbBhtyAGMAO4DuAO5AOGQAAWN4CxsNG3kANWRjAGwAO4ChAKFAAAFmcssCFhsA4DXYJt1yAGEAdgBlADuA7ADsQIChSCFpbm8AJxsyGzYbAAFpbisbLxtuAHQAAKAMKnQAAKAtIuYhaW4AoNwpdABhAACgKSHsIWlnM2GAAWFvcABDG1sbXhuAAWNndABJG0sbWRtyACthgAFlbHAAcQVRG1UbaQBuAOUAyAVhAHIA9AByBWgAMWFmAACgtyJlAGQAtWEAoggiY2ZvdGkbbRt1G3kb4SFyZQCgBSFpAG4AdKAeImkAZQAAoN0pZABvAPQAWxsAoisiY2VscIEbhRuPG5QbYQBsAACguiIAAWdyiRuNG2UAcgDzACMQ4wCCG2EicmhrAACgFyryIW9kAKA8KgACY2dwdJ8boRukG6gbeQBRZG8AbgAvYWYAAOA12FrdYQC5Y3UAZQBzAHQAO4C/AL9AAAFjabUbuRtyAADgNdi+3G4AAKIIIkVkc3bCG8QbyBvQAwCg+SJvAHQAAKD1Inag9CIAoPMiaaBiIOwhZGUpYesB1hsAANkbYwB5AFZkbAA7gO8A70AAA2NmbW9zdeYb7hvyG/Ub+hsFHAABaXnqG+0bcgBjADVhOWRyAADgNdgn3eEhdGg3YnAAZgAA4DXYW93jAf8bAAADHHIAAOA12L/c8iFjeVhk6yFjeVRkAARhY2ZnaGpvcxUcGhwiHCYcKhwtHDAcNRzwIXBhdqC6A/BjAAFleR4cIRzkIWls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ZmdobG1vcHJzdHV3CiwNLBEsHSwnLDEsQCxLLFIsYix6LIQsjyzLLOgs7Sz/LAotcgDyAAkDYQByAACgYykAAWNyFSwbLHUAdABlADuA+gD6QPIACQ1yAOMBIywAACUseQBeZHYAZQBtYQABaXkrLDAscgBjADuA+wD7QENkgAFhYmgANyw6LD0scgDyANEO7CFhY3FhYQDyAOAOAAFpckQsSCzzIWh0AKB+KQDgNdgy3XIAYQB2AGUAO4D5APlAYQFWLF8scgAAAWxyWixcLACgvyEAoL4hbABrAACggCUAAWN0Zix2LG8CbCwAAAAAcyxyAG4AZaAcI3IAAKAcI28AcAAAoA8jcgBpAACg+CUAAWFsfiyBLGMAcgBrYTuAqACoQAABZ3CILIssbwBuAHNhZgAA4DXYZt0AA2FkaGxzdZksniynLLgsuyzFLHIAcgBvAPcACQ1vAHcAbgBhAHIAcgBvAPcA2A5hI3Jwb29uAAABbHKvLLMsZQBmAPQAWyxpAGcAaAD0AF0sdQDzAKYOaQAAocUDaGzBLMIs0mNvAG4AxWPwI2Fycm93cwCgyCGAAWNpdADRLOEs5CxvAtcsAAAAAN4scgBuAGWgHSNyAACgHSNvAHAAAKAOI24AZwBvYXIAaQAAoPklYwByAADgNdjK3IABZGlyAPMs9yz6LG8AdAAAoPAi7CFkZWlhaQBmoLUlAKC0JQABYW0DLQYtcgDyAMosbAA7gPwA/EDhIm5nbGUAoKcpgAdBQkRhY2RlZmxub3Byc3oAJy0qLTAtNC2bLZ0toS2/LcMtxy3TLdgt3C3gLfwtcgDyABADYQByAHag6CoAoOkqYQBzAOgA/gIAAW5yOC08LechcnQAoJwpgANla25wcnN0AJkpSC1NLVQtXi1iLYItYQBwAHAA4QAaHG8AdABoAGkAbgDnAKEXgAFoaXIAoSmzJFotbwBwAPQAdCVooJUh7wD4JgABaXVmLWotZwBtAOEAuygAAWJwbi14LXMjZXRuZXEAceCKIgD+AODLKgD+cyNldG5lcQBx4IsiAP4A4MwqAP4AAWhyhi2KLWUAdADhABIraSNhbmdsZQAAAWxyki2WLeUhZnQAoLIiaSJnaHQAAKCzInkAMmThIXNoAKCiIoABZWxyAKcttC24LWKiKCKuLQAAAACyLWEAcgAAoLsicQAAoFoi7CFpcACg7iIAAWJ0vC1eD2EA8gBfD3IAAOA12DPddAByAOkAlS1zAHUAAAFicM0t0C0A4IIi0iAA4IMi0iBwAGYAAOA12GfdcgBvAPAAWQt0AHIA6QCaLQABY3XkLegtcgAA4DXYy9wAAWJw7C30LW4AAAFFZXUt8S0A4IoiAP5uAAABRWV/LfktAOCLIgD+6SJnemFnAKCaKYADY2Vmb3BycwANLhAuJS4pLiMuLi40LukhcmN1YQABZGkULiEuAAFiZxguHC5hAHIAAKBfKmUAcaAnIgCgWSLlIXJwAKAYIXIAAOA12DTdcABmAADgNdho3WWgQCJhAHQA6ABqD2MAcgAA4DXYzNzjCuQRUC4AAFQuAABYLmIuAAAAAGMubS5wLnQuAAAAAIguki4AAJouJxIqEnQAcgDpAB0ScgAA4DXYNd0AAUFhWy5eLnIA8gDnAnIA8gCTB75jAAFBYWYuaS5yAPIA4AJyAPIAjAdhAPAAeh5pAHMAAKD7IoABZHB0APgReS6DLgABZmx9LoAuAOA12GnddQDzAP8RaQBtAOUABBIAAUFhiy6OLnIA8gDuAnIA8gCaBwABY3GVLgoScgAA4DXYzdwAAXB0nS6hLmwAdQDzACUScgDpACASAARhY2VmaW9zdbEuvC7ELsguzC7PLtQu2S5jAAABdXm2LrsudABlADuA/QD9QE9kAAFpecAuwy5yAGMAd2FLZG4AO4ClAKVAcgAA4DXYNt1jAHkAV2RwAGYAAOA12GrdYwByAADgNdjO3AABY23dLt8ueQBOZGwAO4D/AP9AAAVhY2RlZmhpb3N38y73Lv8uAi8MLxAvEy8YLx0vIi9jInV0ZQB6YQABYXn7Lv4u8iFvbn5hN2RvAHQAfGEAAWV0Bi8KL3QAcgDmAB8QYQC2Y3IAAOA12DfdYwB5ADZk5yJyYXJyAKDdIXAAZgAA4DXYa91jAHIAAOA12M/cAAFqbiYvKC8AoA0gagAAoAwg")});var j1;var mU=k(()=>{(function(f){f[f.VALUE_LENGTH=49152]="VALUE_LENGTH",f[f.FLAG13=8192]="FLAG13",f[f.BRANCH_LENGTH=8064]="BRANCH_LENGTH",f[f.JUMP_TABLE=127]="JUMP_TABLE"})(j1||(j1={}))});function uj(f){return f>=Ef.ZERO&&f<=Ef.NINE}function wk(f){return f>=Ef.UPPER_A&&f<=Ef.UPPER_F||f>=Ef.LOWER_A&&f<=Ef.LOWER_F}function hk(f){return f>=Ef.UPPER_A&&f<=Ef.UPPER_Z||f>=Ef.LOWER_A&&f<=Ef.LOWER_Z||uj(f)}function Pk(f){return f===Ef.EQUALS||hk(f)}class Ej{constructor(f,J,Y){this.decodeTree=f,this.emitCodePoint=J,this.errors=Y,this.state=of.EntityStart,this.consumed=1,this.result=0,this.treeIndex=0,this.excess=1,this.decodeMode=JY.Strict,this.runConsumed=0}startEntity(f){this.decodeMode=f,this.state=of.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1,this.runConsumed=0}write(f,J){switch(this.state){case of.EntityStart:{if(f.charCodeAt(J)===Ef.NUM)return this.state=of.NumericStart,this.consumed+=1,this.stateNumericStart(f,J+1);return this.state=of.NamedEntity,this.stateNamedEntity(f,J)}case of.NumericStart:return this.stateNumericStart(f,J);case of.NumericDecimal:return this.stateNumericDecimal(f,J);case of.NumericHex:return this.stateNumericHex(f,J);case of.NamedEntity:return this.stateNamedEntity(f,J)}}stateNumericStart(f,J){if(J>=f.length)return-1;if((f.charCodeAt(J)|cU)===Ef.LOWER_X)return this.state=of.NumericHex,this.consumed+=1,this.stateNumericHex(f,J+1);return this.state=of.NumericDecimal,this.stateNumericDecimal(f,J)}stateNumericHex(f,J){while(J<f.length){let Y=f.charCodeAt(J);if(uj(Y)||wk(Y)){let z=Y<=Ef.NINE?Y-Ef.ZERO:(Y|cU)-Ef.LOWER_A+10;this.result=this.result*16+z,this.consumed++,J++}else return this.emitNumericEntity(Y,3)}return-1}stateNumericDecimal(f,J){while(J<f.length){let Y=f.charCodeAt(J);if(uj(Y))this.result=this.result*10+(Y-Ef.ZERO),this.consumed++,J++;else return this.emitNumericEntity(Y,2)}return-1}emitNumericEntity(f,J){var Y;if(this.consumed<=J)return(Y=this.errors)===null||Y===void 0||Y.absenceOfDigitsInNumericCharacterReference(this.consumed),0;if(f===Ef.SEMI)this.consumed+=1;else if(this.decodeMode===JY.Strict)return 0;if(this.emitCodePoint(xU(this.result),this.consumed),this.errors){if(f!==Ef.SEMI)this.errors.missingSemicolonAfterCharacterReference();this.errors.validateNumericCharacterReference(this.result)}return this.consumed}stateNamedEntity(f,J){let{decodeTree:Y}=this,z=Y[this.treeIndex],G=(z&j1.VALUE_LENGTH)>>14;while(J<f.length){if(G===0&&(z&j1.FLAG13)!==0){let q=(z&j1.BRANCH_LENGTH)>>7;if(this.runConsumed===0){let Q=z&j1.JUMP_TABLE;if(f.charCodeAt(J)!==Q)return this.result===0?0:this.emitNotTerminatedNamedEntity();J++,this.excess++,this.runConsumed++}while(this.runConsumed<q){if(J>=f.length)return-1;let Q=this.runConsumed-1,H=Y[this.treeIndex+1+(Q>>1)],B=Q%2===0?H&255:H>>8&255;if(f.charCodeAt(J)!==B)return this.runConsumed=0,this.result===0?0:this.emitNotTerminatedNamedEntity();J++,this.excess++,this.runConsumed++}this.runConsumed=0,this.treeIndex+=1+(q>>1),z=Y[this.treeIndex],G=(z&j1.VALUE_LENGTH)>>14}if(J>=f.length)break;let X=f.charCodeAt(J);if(X===Ef.SEMI&&G!==0&&(z&j1.FLAG13)!==0)return this.emitNamedEntityData(this.treeIndex,G,this.consumed+this.excess);if(this.treeIndex=mk(Y,z,this.treeIndex+Math.max(1,G),X),this.treeIndex<0)return this.result===0||this.decodeMode===JY.Attribute&&(G===0||Pk(X))?0:this.emitNotTerminatedNamedEntity();if(z=Y[this.treeIndex],G=(z&j1.VALUE_LENGTH)>>14,G!==0){if(X===Ef.SEMI)return this.emitNamedEntityData(this.treeIndex,G,this.consumed+this.excess);if(this.decodeMode!==JY.Strict&&(z&j1.FLAG13)===0)this.result=this.treeIndex,this.consumed+=this.excess,this.excess=0}J++,this.excess++}return-1}emitNotTerminatedNamedEntity(){var f;let{result:J,decodeTree:Y}=this,z=(Y[J]&j1.VALUE_LENGTH)>>14;return this.emitNamedEntityData(J,z,this.consumed),(f=this.errors)===null||f===void 0||f.missingSemicolonAfterCharacterReference(),this.consumed}emitNamedEntityData(f,J,Y){let{decodeTree:z}=this;if(this.emitCodePoint(J===1?z[f]&~(j1.VALUE_LENGTH|j1.FLAG13):z[f+1],Y),J===3)this.emitCodePoint(z[f+2],Y);return Y}end(){var f;switch(this.state){case of.NamedEntity:return this.result!==0&&(this.decodeMode!==JY.Attribute||this.result===this.treeIndex)?this.emitNotTerminatedNamedEntity():0;case of.NumericDecimal:return this.emitNumericEntity(0,2);case of.NumericHex:return this.emitNumericEntity(0,3);case of.NumericStart:return(f=this.errors)===null||f===void 0||f.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case of.EntityStart:return 0}}}function vk(f){let J="",Y=new Ej(f,(z)=>J+=EU(z));return function(G,X){let q=0,Q=0;while((Q=G.indexOf("&",Q))>=0){J+=G.slice(q,Q),Y.startEntity(X);let B=Y.write(G,Q+1);if(B<0){q=Q+Y.end();break}q=Q+B,Q=B===0?q+1:q}let H=J+G.slice(q);return J="",H}}function mk(f,J,Y,z){let G=(J&j1.BRANCH_LENGTH)>>7,X=J&j1.JUMP_TABLE;if(G===0)return X!==0&&z===X?Y:-1;if(X){let B=z-X;return B<0||B>=G?-1:f[Y+B]-1}let q=G+1>>1,Q=0,H=G-1;while(Q<=H){let B=Q+H>>>1,V=B>>1,U=f[Y+V]>>(B&1)*8&255;if(U<z)Q=B+1;else if(U>z)H=B-1;else return f[Y+q+B]}return-1}function Cz(f,J=JY.Legacy){return ck(f,J)}var Ef,cU=32,of,JY,ck;var nU=k(()=>{wU();vU();mU();(function(f){f[f.NUM=35]="NUM",f[f.SEMI=59]="SEMI",f[f.EQUALS=61]="EQUALS",f[f.ZERO=48]="ZERO",f[f.NINE=57]="NINE",f[f.LOWER_A=97]="LOWER_A",f[f.LOWER_F=102]="LOWER_F",f[f.LOWER_X=120]="LOWER_X",f[f.LOWER_Z=122]="LOWER_Z",f[f.UPPER_A=65]="UPPER_A",f[f.UPPER_F=70]="UPPER_F",f[f.UPPER_Z=90]="UPPER_Z"})(Ef||(Ef={}));(function(f){f[f.EntityStart=0]="EntityStart",f[f.NumericStart=1]="NumericStart",f[f.NumericDecimal=2]="NumericDecimal",f[f.NumericHex=3]="NumericHex",f[f.NamedEntity=4]="NamedEntity"})(of||(of={}));(function(f){f[f.Legacy=0]="Legacy",f[f.Strict=1]="Strict",f[f.Attribute=2]="Attribute"})(JY||(JY={}));ck=vk(PU)});var dU,iU;var aU=k(()=>{nU();(function(f){f[f.XML=0]="XML",f[f.HTML=1]="HTML"})(dU||(dU={}));(function(f){f[f.UTF8=0]="UTF8",f[f.ASCII=1]="ASCII",f[f.Extensive=2]="Extensive",f[f.Attribute=3]="Attribute",f[f.Text=4]="Text"})(iU||(iU={}))});import{CliRenderer as dk,createCliRenderer as ik,engine as lk}from"@opentui/core";import{createTestRenderer as mm}from"@opentui/core/testing";import{ASCIIFontRenderable as ak,BoxRenderable as $k,CodeRenderable as rk,DiffRenderable as pk,InputRenderable as _k,LineNumberRenderable as ok,MarkdownRenderable as sk,ScrollBoxRenderable as tk,SelectRenderable as ek,TabSelectRenderable as fN,TextareaRenderable as JN,TextAttributes as xj,TextNodeRenderable as YN,TextRenderable as zN}from"@opentui/core";import{engine as dm,Timeline as im}from"@opentui/core";import{BaseRenderable as sU,createTextAttributes as XN,InputRenderable as wj,InputRenderableEvents as kX,isTextNodeRenderable as vj,parseColor as $U,Renderable as ZN,RootTextNodeRenderable as qN,ScrollBoxRenderable as QN,SelectRenderable as rU,SelectRenderableEvents as hj,TabSelectRenderable as pU,TabSelectRenderableEvents as Pj,TextNodeRenderable as HN,TextRenderable as tU}from"@opentui/core";import{BaseRenderable as MN,isTextNodeRenderable as FN,TextNodeRenderable as ON,TextRenderable as AN,Yoga as oU}from"@opentui/core";import{BoxRenderable as em,RootRenderable as fc}from"@opentui/core";import{TimeToFirstDrawRenderable as kN}from"@opentui/core";import{createSlotRegistry as zc}from"@opentui/core";function jN({createElement:f,createTextNode:J,createSlotNode:Y,isTextNode:z,replaceText:G,insertNode:X,removeNode:q,setProperty:Q,getParentNode:H,getFirstChild:B,getNextSibling:V}){function j(N,g,C,y){if(C!==void 0&&!y)y=[];if(typeof g!=="function")return U(N,g,y,C);AJ((_)=>U(N,g(),_,C),y)}function U(N,g,C,y,_){while(typeof C==="function")C=C();if(g===C)return C;let z0=typeof g,t=y!==void 0;if(z0==="string"||z0==="number"){if(z0==="number")g=g.toString();if(t){let Y0=C[0];if(Y0&&z(Y0))G(Y0,g);else Y0=J(g);C=M(N,C,y,Y0)}else if(C!==""&&typeof C==="string")G(B(N),C=g);else M(N,C,y,J(g)),C=g}else if(g==null||z0==="boolean")C=M(N,C,y);else if(z0==="function")return AJ(()=>{let Y0=g();while(typeof Y0==="function")Y0=Y0();C=U(N,Y0,C,y)}),()=>C;else if(Array.isArray(g)){let Y0=[];if(L(Y0,g,_))return AJ(()=>C=U(N,Y0,C,y,!0)),()=>C;if(Y0.length===0){let T=M(N,C,y);if(t)return C=T}else if(Array.isArray(C))if(C.length===0)R(N,Y0,y);else O(N,C,Y0);else if(C==null||C==="")R(N,Y0);else O(N,t&&C||[B(N)],Y0);C=Y0}else{if(Array.isArray(C)){if(t)return C=M(N,C,y,g);M(N,C,null,g)}else if(C==null||C===""||!B(N))X(N,g);else S(N,g,B(N));C=g}return C}function L(N,g,C){let y=!1;for(let _=0,z0=g.length;_<z0;_++){let t=g[_],Y0;if(t==null||t===!0||t===!1);else if(Array.isArray(t))y=L(N,t)||y;else if((Y0=typeof t)==="string"||Y0==="number")N.push(J(t));else if(Y0==="function")if(C){while(typeof t==="function")t=t();y=L(N,Array.isArray(t)?t:[t])||y}else N.push(t),y=!0;else N.push(t)}return y}function O(N,g,C){let y=C.length,_=g.length,z0=y,t=0,Y0=0,T=V(g[_-1]),Q0=null;while(t<_||Y0<z0){if(g[t]===C[Y0]){t++,Y0++;continue}while(g[_-1]===C[z0-1])_--,z0--;if(_===t){let p=z0<y?Y0?V(C[Y0-1]):C[z0-Y0]:T;while(Y0<z0)X(N,C[Y0++],p)}else if(z0===Y0)while(t<_){if(!Q0||!Q0.has(g[t]))q(N,g[t]);t++}else if(g[t]===C[z0-1]&&C[Y0]===g[_-1]){let p=V(g[--_]);X(N,C[Y0++],V(g[t++])),X(N,C[--z0],p),g[_]=C[z0]}else{if(!Q0){Q0=new Map;let D0=Y0;while(D0<z0)Q0.set(C[D0],D0++)}let p=Q0.get(g[t]);if(p!=null)if(Y0<p&&p<z0){let D0=t,g0=1,$;while(++D0<_&&D0<z0){if(($=Q0.get(g[D0]))==null||$!==p+g0)break;g0++}if(g0>p-Y0){let E=g[t];while(Y0<p)X(N,C[Y0++],E)}else S(N,C[Y0++],g[t++])}else t++;else q(N,g[t++])}}}function M(N,g,C,y){if(C===void 0){let z0;while(z0=B(N))q(N,z0);return y&&X(N,y),y??""}let _=y||Y();if(g.length){let z0=!1;for(let t=g.length-1;t>=0;t--){let Y0=g[t];if(_!==Y0){let T=H(Y0)===N;if(!z0&&!t)T?S(N,_,Y0):X(N,_,C);else T&&q(N,Y0)}else z0=!0}}else X(N,_,C);return[_]}function R(N,g,C){for(let y=0,_=g.length;y<_;y++)X(N,g[y],C)}function S(N,g,C){X(N,g,C),q(N,C)}function a(N,g,C={},y){if(g||(g={}),!y)AJ(()=>C.children=U(N,g.children,C.children));return AJ(()=>g.ref&&g.ref(N)),AJ(()=>{for(let _ in g){if(_==="children"||_==="ref")continue;let z0=g[_];if(z0===C[_])continue;Q(N,_,z0,C[_]),C[_]=z0}}),C}return{render(N,g){let C;return _Y((y)=>{C=y,j(g,N())}),C},insert:j,spread(N,g,C){if(typeof g==="function")AJ((y)=>a(N,g(),y,C));else a(N,g,void 0,C)},createElement:f,createTextNode:J,insertNode:X,setProp(N,g,C,y){return Q(N,g,C,y),C},mergeProps:MZ,effect:AJ,memo:BN,createComponent:BW,use(N,g,C){return $f(()=>N(g,C))}}}function WN(f){let J=jN(f);return J.mergeProps=MZ,J}function ij(f){if(!HQ.has(f))HQ.set(f,0);let J=HQ.get(f)+1;return HQ.set(f,J),`${f}-${J}`}function VN(f,J,Y){if(sf("Inserting node:",rf(J),"into parent:",rf(f),"with anchor:",rf(Y),J instanceof gG),J instanceof NX)J.parent=f,J=J.getSlotChild(f);if(Y&&Y instanceof NX)Y=Y.getSlotChild(f);if(vj(J)){if(!(f instanceof tU)&&!vj(f))throw Error(`Orphan text error: "${J.toChunks().map((X)=>X.text).join("")}" must have a <text> as a parent: ${f.id} above ${J.id}`)}if(!(f instanceof sU))throw console.error("[INSERT]","Tried to mount a non base renderable"),Error("Tried to mount a non base renderable");if(!Y){f.add(J);return}let z=mj(f),G=z.findIndex((X)=>X.id===Y.id);if(G===-1)sf("[INSERT]","Could not find anchor",rf(f),rf(Y),"[children]",...z.map((X)=>X.id));f.add(J,G)}function KN(f,J){if(sf("Removing node:",rf(J),"from parent:",rf(f)),J instanceof NX)J.parent=null,J=J.getSlotChild(f);f.remove(J.id),process.nextTick(()=>{if(J instanceof sU&&!J.parent){J.destroyRecursively();return}})}function UN(f){sf("Creating text node:",f);let J=ij("text-node");if(typeof f==="number")f=f.toString();return gG.fromString(Cz(f),{id:J})}function DN(){let f=ij("slot-node");return sf("Creating slot node",f),new NX(f)}function _U(f){sf("Getting parent of node:",rf(f));let J=f.parent??void 0;if(J instanceof qN)J=J.textParent??void 0;let Y=J?.parent?.parent?.parent;if(Y instanceof QN&&Y.content===J)J=Y;return J}function RN(f){Object.assign(X6,f)}function CN(){return X6}var dj,Y1=()=>{let f=u1(dj);if(!f)throw Error("No renderer found");return f},GN=(f)=>{let J=Y1();f1(()=>{J.on("resize",f)}),mf(()=>{J.off("resize",f)})},TJ=()=>{let f=Y1(),[J,Y]=r({width:f.width,height:f.height});return GN((G,X)=>{Y({width:G,height:X})}),J},BN=(f)=>U0(()=>f()),HQ,sf=(...f)=>{if(process.env.DEBUG)console.log("[Reconciler]",...f)},gG,rf=(f)=>{if(!f)return;return f.id},mj=(f)=>{let J;if(f instanceof tU)J=f.getTextChildren();else J=f.getChildren();return J},LN,u,I0,b,W,x0,D,K,om,Z,eU,hY,lj,f6,J6,NX,yX,BQ,cj,nj,Y6,z6,G6,gN,X6,NN=(f,J)=>{let Y,z=!1,G=!1,X=!0,q=!1,Q=f.destroy.bind(f),H=()=>{if(G)return;if(!Y){z=!0;return}G=!0,Y()};f.once("destroy",H),f.destroy=()=>{if(X){q=!0;return}Q()};try{Y=LN(()=>b(dj.Provider,{get value(){return f},get children(){return b(J,{})}}),f.root)}finally{X=!1,f.destroy=Q}if(z)H();if(q)Q()},Z6=async(f,J={})=>{let Y=J instanceof dk?J:await ik({...J,onDestroy:()=>{J.onDestroy?.()}});lk.attach(Y),NN(Y,f)};var h=k(()=>{Wf();aU();Wf();Wf();Wf();dj=gJ();HQ=new Map;gG=class gG extends HN{static fromString(f,J={}){let Y=new gG(J);return Y.add(f),Y}};({render:LN,effect:u,memo:I0,createComponent:b,createElement:W,createTextNode:x0,insertNode:D,insert:K,spread:om,setProp:Z,mergeProps:eU,use:hY}=WN({createElement(f){sf("Creating element:",f);let J=ij(f),Y=u1(dj);if(!Y)throw Error("No renderer found");let z=CN();if(!z[f])throw Error(`[Reconciler] Unknown component type: ${f}`);let G=new z[f](Y,{id:J});return sf("Element created with id:",J),G},createTextNode:UN,createSlotNode:DN,replaceText(f,J){if(sf("Replacing text:",J,"in node:",rf(f)),!(f instanceof gG))return;f.replace(Cz(J),0)},setProperty(f,J,Y,z){if(J.startsWith("on:")){let G=J.slice(3);if(Y)f.on(G,Y);if(z)f.off(G,z);return}if(vj(f)){if(J==="href"){f.link={url:Y};return}if(J==="style"){f.attributes|=XN(Y),f.fg=Y.fg?$U(Y.fg):f.fg,f.bg=Y.bg?$U(Y.bg):f.bg;return}return}switch(J){case"id":sf("Id mapped",f.id,"=",Y),f[J]=Y;break;case"focused":if(!(f instanceof ZN))return;if(Y)f.focus();else f.blur();break;case"onChange":let G=void 0;if(f instanceof rU)G=hj.SELECTION_CHANGED;else if(f instanceof pU)G=Pj.SELECTION_CHANGED;else if(f instanceof wj)G=kX.CHANGE;if(!G)break;if(Y)f.on(G,Y);if(z)f.off(G,z);break;case"onInput":if(f instanceof wj){if(Y)f.on(kX.INPUT,Y);if(z)f.off(kX.INPUT,z)}break;case"onSubmit":if(f instanceof wj){if(Y)f.on(kX.ENTER,Y);if(z)f.off(kX.ENTER,z)}else f[J]=Y;break;case"onSelect":if(f instanceof rU){if(Y)f.on(hj.ITEM_SELECTED,Y);if(z)f.off(hj.ITEM_SELECTED,z)}else if(f instanceof pU){if(Y)f.on(Pj.ITEM_SELECTED,Y);if(z)f.off(Pj.ITEM_SELECTED,z)}break;case"style":for(let X in Y){let q=Y[X];if(z!==void 0&&q===z[X])continue;f[X]=q}break;case"text":case"content":{let X=typeof Y==="string"?Y:Array.isArray(Y)?Y.join(""):`${Y}`;f[J]=Cz(X);break}default:f[J]=Y}},isTextNode(f){return f instanceof gG},insertNode:VN,removeNode:KN,getParentNode:_U,getFirstChild(f){sf("Getting first child of node:",rf(f));let J=mj(f)[0];if(!J){sf("No first child found for node:",rf(f));return}return sf("First child found:",rf(J),"for node:",rf(f)),J},getNextSibling(f){sf("Getting next sibling of node:",rf(f));let J=_U(f);if(!J){sf("No parent found for node:",rf(f));return}let Y=mj(J),z=Y.indexOf(f);if(z===-1||z===Y.length-1){sf("No next sibling found for node:",rf(f));return}let G=Y[z+1];if(!G){sf("Next sibling is null for node:",rf(f));return}return sf("Next sibling found:",rf(G),"for node:",rf(f)),G}}));lj=class lj extends MN{constructor(f){super({id:f})}add(f,J){throw Error("Can't add children on an Slot renderable")}getChildren(){return[]}remove(f){}insertBefore(f,J){throw Error("Can't add children on an Slot renderable")}getRenderable(f){return}getChildrenCount(){return 0}requestRender(){}findDescendantById(f){return}};f6=class f6 extends ON{slotParent;destroyed=!1;constructor(f,J){super({id:f});this._visible=!1,this.slotParent=J}destroy(){if(this.destroyed)return;this.destroyed=!0,this.slotParent?.destroy(),super.destroy()}};J6=class J6 extends lj{yogaNode;slotParent;destroyed=!1;constructor(f,J){super(f);this._visible=!1,this.slotParent=J,this.yogaNode=oU.default.Node.create(),this.yogaNode.setDisplay(oU.Display.None)}getLayoutNode(){return this.yogaNode}updateFromLayout(){}updateLayout(){}onRemove(){}destroy(){if(this.destroyed)return;this.destroyed=!0,super.destroy(),this.slotParent?.destroy()}};NX=class NX extends lj{layoutNode;textNode;destroyed=!1;constructor(f){super(f);this._visible=!1}getSlotChild(f){if(FN(f)||f instanceof AN){if(!this.textNode)this.textNode=new f6(`slot-text-${this.id}`,this);return this.textNode}if(!this.layoutNode)this.layoutNode=new J6(`slot-layout-${this.id}`,this);return this.layoutNode}destroy(){if(this.destroyed)return;if(this.destroyed=!0,this.layoutNode)this.layoutNode.destroy();if(this.textNode)this.textNode.destroy()}};yX=class yX extends YN{_ctx;constructor(f,J){super(J);this._ctx=f}};BQ=class BQ extends yX{constructor(f,J){super(null,f);if(J==="b"||J==="strong")this.attributes=(this.attributes||0)|xj.BOLD;else if(J==="i"||J==="em")this.attributes=(this.attributes||0)|xj.ITALIC;else if(J==="u")this.attributes=(this.attributes||0)|xj.UNDERLINE}};cj=class cj extends BQ{constructor(f){super(f,"b")}};nj=class nj extends BQ{constructor(f){super(f,"i")}};Y6=class Y6 extends BQ{constructor(f){super(f,"u")}};z6=class z6 extends yX{constructor(f,J){super(null,J);this.add()}add(){return super.add(`
|
|
222
|
+
`)}};G6=class G6 extends yX{constructor(f,J){let Y={...J,link:{url:J.href}};super(null,Y)}};gN={box:$k,text:zN,input:_k,select:ek,textarea:JN,ascii_font:ak,tab_select:fN,scrollbox:tk,code:rk,diff:pk,line_number:ok,markdown:sk,span:yX,strong:cj,b:cj,em:nj,i:nj,u:Y6,br:z6,a:G6},X6={...gN};RN({time_to_first_draw:kN})});function yN(f){let J=f?.changes;if(!J||typeof J!=="object"||Array.isArray(J))return null;let Y=new Map;for(let[z,G]of Object.entries(J)){let X=G;if(typeof X?.added!=="number"||typeof X.deleted!=="number")return null;Y.set(z,{added:X.added,deleted:X.deleted})}return Y}function bN(f,J){if(f.size!==J.size)return!1;for(let[Y,z]of f){let G=J.get(Y);if(!G||!IJ(z,G))return!1}return!0}class W1{client;tasksAcc;setTasks;activeTaskAcc;setActiveTaskSig;updateAcc;setUpdateSig;daemonVersionAcc;setDaemonVersionSig;engineStateAcc;setEngineStateSig;taskJobsAcc;setTaskJobsSig;worktreeChangesAcc;setWorktreeChangesSig;uiPrefsAcc;setUiPrefsSig;keybindingsRevAcc;setKeybindingsRevSig;connectionStateAcc;setConnectionState;ensureReachable;role;channels;subscribesTasks;reconnecting=!1;constructor(f,J={}){this.client=f;let[Y,z]=r([]),[G,X]=r(null),[q,Q]=r(null),[H,B]=r(null),[V,j]=r(new Map),[U,L]=r(new Map),[O,M]=r(null),[R,S]=r(null),[a,N]=r(null),[g,C]=r("online");this.tasksAcc=Y,this.setTasks=(y)=>z(()=>y),this.activeTaskAcc=G,this.setActiveTaskSig=(y)=>X(()=>y),this.updateAcc=q,this.setUpdateSig=(y)=>Q(()=>y),this.daemonVersionAcc=H,this.setDaemonVersionSig=(y)=>B(()=>y),this.engineStateAcc=V,this.setEngineStateSig=(y)=>j(()=>y),this.taskJobsAcc=U,this.setTaskJobsSig=(y)=>L(()=>y),this.worktreeChangesAcc=O,this.setWorktreeChangesSig=(y)=>M(()=>y),this.uiPrefsAcc=R,this.setUiPrefsSig=(y)=>S(()=>y),this.keybindingsRevAcc=a,this.setKeybindingsRevSig=(y)=>N(()=>y),this.connectionStateAcc=g,this.setConnectionState=(y)=>C(()=>y),this.ensureReachable=J.ensureReachable??DG,this.role=J.role??"pane",this.channels=J.channels,this.subscribesTasks=!J.channels||J.channels.includes("task.snapshot"),this.client.on("*",(y)=>this.handleEvent(y.name,y.payload)),this.client.onLifecycle("close",()=>{if(this.setConnectionState("disconnected"),this.role==="pane")iJ("orch","daemon socket closed \u2014 starting non-spawning reconnect loop"),this.reconnectLoop()})}async reconnectLoop(){if(this.reconnecting)return;this.reconnecting=!0;let f=500,J=0;while(!this.client.isDisposed){if(await new Promise((Y)=>setTimeout(Y,f)),this.client.isDisposed)break;J++;try{await this.init(),iJ("orch",`reconnected and re-subscribed after ${J} attempt(s) \u2014 task list re-synced`),this.reconnecting=!1;return}catch(Y){if(J===1||J%10===0)WY("orch-reconnect",Y);f=Math.min(f*2,3000)}}this.reconnecting=!1}async init(){let f=await this.client.request("hello",{protocolVersion:n1,minProtocolVersion:jY}),J=typeof f.protocolVersion==="number"?f.protocolVersion:n1,Y=typeof f.minProtocolVersion==="number"?f.minProtocolVersion:J;if(!gZ({localVersion:n1,localMin:jY,remoteVersion:J,remoteMin:Y}))throw Error(`kobe daemon is protocol v${J} (min v${Y}); this client is v${n1} (min v${jY}). Restart the daemon (\`kobe daemon restart\`) or upgrade kobe.`);if(this.setDaemonVersionSig(typeof f.kobeVersion==="string"?f.kobeVersion:null),f.tasks&&this.subscribesTasks)this.setTasks(f.tasks.map(bX));if(await this.client.subscribe({role:this.role,channels:this.channels}),f.capabilities?.includes("worktree.changes")){if(this.worktreeChangesAcc()===null)this.setWorktreeChangesSig(new Map)}else this.setWorktreeChangesSig(null);this.setConnectionState("online"),iJ("orch",`subscribed as ${this.role} (${this.tasksAcc().length} tasks)`)}connectionStateSignal(){return this.connectionStateAcc}async manualReconnect(){this.client.forceDisconnect(),await this.ensureReachable(),await this.init()}dispose(){this.client.close()}tasksSignal(){return this.tasksAcc}activeTaskSignal(){return this.activeTaskAcc}updateSignal(){return this.updateAcc}daemonVersionSignal(){return this.daemonVersionAcc}daemonStaleSignal(){return()=>AW(this.daemonVersionAcc()??void 0,s0)}engineStateSignal(){return this.engineStateAcc}taskJobsSignal(){return this.taskJobsAcc}worktreeChangesSignal(){return this.worktreeChangesAcc}uiPrefsSignal(){return this.uiPrefsAcc}keybindingsRevSignal(){return this.keybindingsRevAcc}listTasks(){return this.tasksAcc()}getTask(f){return this.tasksAcc().find((J)=>J.id===f)}subscribeTasks(f){try{f(this.listTasks())}catch(Y){console.error("[kobe RemoteOrchestrator] task listener threw on subscribe:",Y)}let J=!0;return _Y((Y)=>{return zf(()=>{let z=this.tasksAcc();if(J){J=!1;return}try{f(z)}catch(G){console.error("[kobe RemoteOrchestrator] task listener threw:",G)}}),Y})}async createTask(f){let{modelEffort:J,...Y}=f,z=await this.client.request("task.create",{...Y,effort:J});return bX(z.task)}async ensureMainTask(f){let J=await this.client.request("task.ensureMain",{repo:f});return bX(J.task)}async ensureWorktree(f){return(await this.client.request("task.ensureWorktree",{taskId:String(f)})).worktreePath}async setTitle(f,J){await this.client.request("task.rename",{taskId:String(f),title:J})}async setBranch(f,J){await this.client.request("task.setBranch",{taskId:String(f),branch:J})}async setVendor(f,J){await this.client.request("task.setVendor",{taskId:String(f),vendor:J})}async setPinned(f,J){await this.client.request("task.pin",{taskId:String(f),pinned:J})}async moveTask(f,J){await this.client.request("task.move",{taskId:String(f),direction:J<0?"up":"down"})}async setArchived(f,J){await this.client.request("task.archive",{taskId:String(f),archived:J})}async setStatus(f,J){await this.client.request("task.status",{taskId:String(f),status:J})}async deleteTask(f,J){await this.client.request("task.delete",{taskId:String(f),force:J?.force})}async discoverAdoptableWorktrees(f){return(await this.client.request("worktree.discoverAdoptable",{repo:f})).worktrees}async adoptWorktree(f){let J=await this.client.request("worktree.adopt",f);return bX(J.task)}async setActiveTask(f){await this.client.request("task.setActive",{taskId:f===null?null:String(f)})}handleEvent(f,J){if(f==="task.snapshot"){let Y=J?.tasks;if(Array.isArray(Y))this.setTasks(Y.map(bX)),this.pruneEngineState(Y),this.pruneTaskJobs(Y);return}if(f==="active-task"){let Y=J?.taskId;this.setActiveTaskSig(typeof Y==="string"?Y:null);return}if(f==="update"){let Y=J?.info;this.setUpdateSig(Y??null);return}if(f==="engine-state"){let Y=J;if(typeof Y?.taskId!=="string"||typeof Y.state!=="string")return;let z=new Map(this.engineStateAcc());if(Y.state==="idle")z.delete(Y.taskId);else z.set(Y.taskId,{state:Y.state,detail:Y.detail,at:typeof Y.at==="number"?Y.at:0});this.setEngineStateSig(z);return}if(f==="task.jobs"){let Y=J;if(typeof Y?.taskId!=="string"||Y.kind!=="ensureWorktree")return;let z=this.taskJobsAcc();if(Y.phase==="running"){let G=new Map(z);G.set(Y.taskId,{kind:Y.kind}),this.setTaskJobsSig(G);return}if((Y.phase==="done"||Y.phase==="error")&&z.has(Y.taskId)){let G=new Map(z);G.delete(Y.taskId),this.setTaskJobsSig(G)}return}if(f==="worktree.changes"){let Y=yN(J);if(!Y)return;let z=this.worktreeChangesAcc();if(z&&bN(z,Y))return;this.setWorktreeChangesSig(Y);return}if(f==="ui-prefs"){let Y=J;if(typeof Y?.theme!=="string")return;this.setUiPrefsSig({theme:Y.theme,transparentBackground:Y.transparentBackground===!0,focusAccent:typeof Y.focusAccent==="string"?Y.focusAccent:null,locale:typeof Y.locale==="string"?Y.locale:"",sortMode:Y.sortMode==="recent"?"recent":"default",keysCollapsed:Y.keysCollapsed===!0,projectFilter:typeof Y.projectFilter==="string"&&Y.projectFilter.length>0?Y.projectFilter:null});return}if(f==="keybindings"){let Y=J;if(typeof Y?.rev!=="number")return;this.setKeybindingsRevSig(Y.rev);return}}pruneEngineState(f){let J=this.engineStateAcc();if(J.size===0)return;let Y=new Set(f.map((G)=>G.id)),z=null;for(let G of J.keys()){if(Y.has(G))continue;if(!z)z=new Map(J);z.delete(G)}if(z)this.setEngineStateSig(z)}pruneTaskJobs(f){let J=this.taskJobsAcc();if(J.size===0)return;let Y=new Set(f.map((G)=>G.id)),z=null;for(let G of J.keys()){if(Y.has(G))continue;if(!z)z=new Map(J);z.delete(G)}if(z)this.setTaskJobsSig(z)}}function bX(f){return{id:PG(f.id),title:f.title,repo:f.repo,branch:f.branch,worktreePath:f.worktreePath,kind:f.kind,status:f.status,archived:f.archived,pinned:f.pinned,vendor:f.vendor,prStatus:f.prStatus,modelEffort:f.modelEffort,createdAt:f.createdAt,updatedAt:f.updatedAt}}var PY=k(()=>{eY();y1();sY();Wf();VG();S1();D1()});function H6(f){let J=f[JJ];if(!J){if(Object.defineProperty(f,JJ,{value:J=new Proxy(f,TN)}),!Array.isArray(f)){let Y=Object.keys(f),z=Object.getOwnPropertyDescriptors(f),G=Object.getPrototypeOf(f),X=G!==null&&f!==null&&typeof f==="object"&&!Array.isArray(f)&&G!==Object.prototype;if(X){let q=Object.getOwnPropertyDescriptors(G);Y.push(...Object.keys(q)),Object.assign(z,q)}for(let q=0,Q=Y.length;q<Q;q++){let H=Y[q];if(X&&H==="constructor")continue;if(z[H].get)Object.defineProperty(f,H,{configurable:!0,enumerable:z[H].enumerable,get:z[H].get.bind(J)})}}}return J}function jQ(f){let J;return f!=null&&typeof f==="object"&&(f[JJ]||!(J=Object.getPrototypeOf(f))||J===Object.prototype||Array.isArray(f))}function IX(f,J=new Set){let Y,z,G,X;if(Y=f!=null&&f[aj])return Y;if(!jQ(f)||J.has(f))return f;if(Array.isArray(f)){if(Object.isFrozen(f))f=f.slice(0);else J.add(f);for(let q=0,Q=f.length;q<Q;q++)if(G=f[q],(z=IX(G,J))!==G)f[q]=z}else{if(Object.isFrozen(f))f=Object.assign({},f);else J.add(f);let q=Object.keys(f),Q=Object.getOwnPropertyDescriptors(f);for(let H=0,B=q.length;H<B;H++){if(X=q[H],Q[X].get)continue;if(G=f[X],(z=IX(G,J))!==G)f[X]=z}}return f}function WQ(f,J){let Y=f[J];if(!Y)Object.defineProperty(f,J,{value:Y=Object.create(null)});return Y}function TX(f,J,Y){if(f[J])return f[J];let[z,G]=r(Y,{equals:!1,internal:!0});return z.$=G,f[J]=z}function SN(f,J){let Y=Reflect.getOwnPropertyDescriptor(f,J);if(!Y||Y.get||!Y.configurable||J===JJ||J===RG)return Y;return delete Y.value,delete Y.writable,Y.get=()=>f[JJ][J],Y}function B6(f){DZ()&&TX(WQ(f,RG),Q6)()}function IN(f){return B6(f),Reflect.ownKeys(f)}function VQ(f,J,Y,z=!1){if(J==="__proto__"){console.warn('Refusing to set "__proto__" on a store.');return}if(!z&&f[J]===Y)return;let G=f[J],X=f.length;if(q6.onStoreNodeUpdate&&q6.onStoreNodeUpdate(f,J,Y,G),Y===void 0){if(delete f[J],f[YY]&&f[YY][J]&&G!==void 0)f[YY][J].$()}else if(f[J]=Y,f[YY]&&f[YY][J]&&G===void 0)f[YY][J].$();let q=WQ(f,RG),Q;if(Q=TX(q,J,G))Q.$(()=>Y);if(Array.isArray(f)&&f.length!==X){for(let H=f.length;H<X;H++)(Q=q[H])&&Q.$();(Q=TX(q,"length",X))&&Q.$(f.length)}(Q=q[Q6])&&Q.$()}function j6(f,J){let Y=Object.keys(J);for(let z=0;z<Y.length;z+=1){let G=Y[z];if(W6(G))continue;VQ(f,G,J[G])}}function W6(f){return f==="__proto__"||f==="constructor"||f==="prototype"}function uN(f,J){if(typeof J==="function")J=J(f);if(J=IX(J),Array.isArray(J)){if(f===J)return;let Y=0,z=J.length;for(;Y<z;Y++){let G=J[Y];if(f[Y]!==G)VQ(f,Y,G)}VQ(f,"length",z)}else j6(f,J)}function SX(f,J,Y=[]){let z,G=f;if(J.length>1){z=J.shift();let q=typeof z,Q=Array.isArray(f);if(q==="string"&&(z==="__proto__"||J.length>1&&W6(z))){console.warn(`Refusing to traverse unsafe key "${z}" on a store.`);return}if(Array.isArray(z)){for(let H=0;H<z.length;H++)SX(f,[z[H]].concat(J),Y);return}else if(Q&&q==="function"){for(let H=0;H<f.length;H++)if(z(f[H],H))SX(f,[H].concat(J),Y);return}else if(Q&&q==="object"){let{from:H=0,to:B=f.length-1,by:V=1}=z;for(let j=H;j<=B;j+=V)SX(f,[j].concat(J),Y);return}else if(J.length>1){SX(f[z],J,[z].concat(Y));return}G=f[z],Y=[z].concat(Y)}let X=J[0];if(typeof X==="function"){if(X=X(G,Y),X===G)return}if(z===void 0&&X==null)return;if(X=IX(X),z===void 0||jQ(G)&&jQ(X)&&!Array.isArray(X))j6(G,X);else VQ(f,z,X)}function uJ(...[f,J]){let Y=IX(f||{}),z=Array.isArray(Y);if(typeof Y!=="object"&&typeof Y!=="function")throw Error(`Unexpected type ${typeof Y} received when initializing 'createStore'. Expected an object.`);let G=H6(Y);jW.registerGraph({value:Y,name:J&&J.name});function X(...q){UZ(()=>{z&&q.length===1?uN(Y,q[0]):SX(Y,q)})}return[G,X]}var aj,RG,YY,Q6,q6,TN,Kc;var CG=k(()=>{Wf();aj=Symbol("store-raw"),RG=Symbol("store-node"),YY=Symbol("store-has"),Q6=Symbol("store-self"),q6={onStoreNodeUpdate:null};TN={get(f,J,Y){if(J===aj)return f;if(J===JJ)return Y;if(J===WZ)return B6(f),Y;let z=WQ(f,RG),G=z[J],X=G?G():f[J];if(J===RG||J===YY||J==="__proto__")return X;if(!G){let q=Object.getOwnPropertyDescriptor(f,J);if(DZ()&&(typeof X!=="function"||f.hasOwnProperty(J))&&!(q&&q.get))X=TX(z,J,X)()}return jQ(X)?H6(X):X},has(f,J){if(J===aj||J===JJ||J===WZ||J===RG||J===YY||J==="__proto__")return!0;return DZ()&&TX(WQ(f,YY),J)(),J in f},set(){return console.warn("Cannot mutate a Store directly"),!0},deleteProperty(){return console.warn("Cannot mutate a Store directly"),!0},ownKeys:IN,getOwnPropertyDescriptor:SN};Kc=Symbol("store-root")});function KQ(f){let J=gJ();return{provider:(Y)=>{let z=f.init(Y);return b(X0,{get when(){return z.ready===void 0||z.ready===!0},get children(){return b(J.Provider,{value:z,get children(){return Y.children}})}})},use(){let Y=u1(J);if(!Y)throw Error(`${f.name} context must be used within a context provider`);return Y}}}var $j=k(()=>{h();h();Wf()});import{RGBA as kz}from"@opentui/core";function xN(){return Object.keys(z1.themes)}function uX(f){return Boolean(z1.themes[f])}function pj(f,J){if(!f)return!1;if(!J||typeof J!=="object"||!J.theme)return!1;return Nz("themes",{...z1.themes,[f]:J}),!0}function rj(f,J="dark"){let Y=f.defs??{};function z(H,B=[]){if(typeof H==="string"){if(H==="transparent"||H==="none")return kz.fromInts(0,0,0,0);if(H.startsWith("#"))return kz.fromHex(H);if(B.includes(H))return kz.fromInts(0,0,0);let V=Y[H]??f.theme[H];if(V===void 0)return kz.fromInts(0,0,0);return z(V,[...B,H])}return z(H[J],B)}let G={};for(let[H,B]of Object.entries(f.theme))G[H]=z(B);let X=G.text??kz.fromHex("#ffffff"),q=G.background??kz.fromHex("#000000");return{...{primary:G.primary??X,secondary:G.secondary??X,accent:G.accent??G.primary??X,error:G.error??X,warning:G.warning??X,success:G.success??X,info:G.info??X,text:X,textMuted:G.textMuted??X,background:q,backgroundPanel:G.backgroundPanel??q,backgroundElement:G.backgroundElement??q,backgroundMenu:G.backgroundMenu??G.backgroundElement??q,backgroundDialog:G.backgroundDialog??G.backgroundPanel??q,border:G.border??X,borderActive:G.borderActive??G.border??X,borderSubtle:G.borderSubtle??G.border??X,diffAdded:G.diffAdded??G.success??X,diffRemoved:G.diffRemoved??G.error??X,diffContext:G.diffContext??G.textMuted??X,diffHunkHeader:G.diffHunkHeader??G.textMuted??X,diffAddedBg:G.diffAddedBg??q,diffRemovedBg:G.diffRemovedBg??q,selectedListItemText:G.selectedListItemText??q},...G}}var EN,yz,z1,Nz,i0,V6;var xf=k(()=>{h();Wf();CG();$j();Hq();Bq();jq();Wq();Vq();Kq();Uq();EN={claude:sz,conductor:tz,nord:fG,opencode:JG,dracula:ez,tokyonight:zG,"osaka-jade":YG},yz=["primary","success","info"],[z1,Nz]=uJ({themes:{...EN},active:"claude",mode:"dark",transparentBackground:!1,focusAccent:"primary"});({use:i0,provider:V6}=KQ({name:"Theme",init:(f)=>{if(f.mode)Nz("mode",f.mode);if(f.theme&&uX(f.theme))Nz("active",f.theme);let J=Y1(),Y=U0(()=>{let G=z1.themes[z1.active];if(G)return rj(G,z1.mode);let X=z1.themes.claude??z1.themes.opencode??Object.values(z1.themes)[0];if(!X)return rj({theme:{background:"#000000",text:"#ffffff"}},z1.mode);return rj(X,z1.mode)}),z=U0(()=>{let G=Y(),X=G[z1.focusAccent]??G.primary,q={...G,focusAccent:X};if(!z1.transparentBackground)return q;let Q=kz.fromInts(0,0,0,0);return{...q,background:Q,backgroundPanel:Q}});return zf(()=>{J?.setBackgroundColor(z().background)}),{theme:new Proxy({},{get(G,X){let q=z();return q[X]??q.text}}),get selected(){return z1.active},get transparentBackground(){return z1.transparentBackground},get focusAccent(){return z1.focusAccent},mode(){return z1.mode},set(G){if(!uX(G))return!1;return Nz("active",G),!0},setMode(G){Nz("mode",G)},setTransparentBackground(G){Nz("transparentBackground",G)},setFocusAccent(G){Nz("focusAccent",G)},all(){return xN()},has(G){return uX(G)}}}}))});var K6,U6;var D6=k(()=>{K6={cancel:"Cancel",confirm:"Confirm",rename:{defaultTitle:"Rename task",defaultFieldLabel:"title",footerHint:"enter {submitLabel} \xB7 esc cancel",defaultSubmitLabel:"rename"}},U6={cancel:"\u53D6\u6D88",confirm:"\u786E\u8BA4",rename:{defaultTitle:"\u91CD\u547D\u540D\u4EFB\u52A1",defaultFieldLabel:"\u540D\u79F0",footerHint:"enter {submitLabel} \xB7 esc \u53D6\u6D88",defaultSubmitLabel:"\u91CD\u547D\u540D"}}});var L6,M6;var F6=k(()=>{L6={tabs:{all:"All",changes:"Changes"},actions:{zen:"Zen",createPR:"Create PR"},legend:{changes:"M modified \xB7 A added \xB7 D deleted \xB7 ? untracked"},empty:{noTask:"(no task \u2014 press n to create)",noFiles:"(empty worktree)",noChanges:"(no changes \u2014 clean worktree)"},error:{retryHint:"press r to retry",notGitRepo:"not a git repository",pathMissing:"worktree path is missing",permissionDenied:"permission denied",gitNotInstalled:"git is not installed",gitFailed:"git command failed"},footer:{openHint:"\u21B5 open"}},M6={tabs:{all:"\u5168\u90E8",changes:"\u6539\u52A8"},actions:{zen:"\u4E13\u6CE8\u6A21\u5F0F",createPR:"\u521B\u5EFA PR"},legend:{changes:"M \u5DF2\u4FEE\u6539 \xB7 A \u5DF2\u6DFB\u52A0 \xB7 D \u5DF2\u5220\u9664 \xB7 ? \u672A\u8DDF\u8E2A"},empty:{noTask:"\uFF08\u6682\u65E0\u4EFB\u52A1 \u2014 \u6309 n \u521B\u5EFA\uFF09",noFiles:"\uFF08worktree \u4E3A\u7A7A\uFF09",noChanges:"\uFF08\u65E0\u6539\u52A8 \u2014 worktree \u5E72\u51C0\uFF09"},error:{retryHint:"\u6309 r \u91CD\u8BD5",notGitRepo:"\u4E0D\u662F git \u4ED3\u5E93",pathMissing:"worktree \u8DEF\u5F84\u4E0D\u5B58\u5728",permissionDenied:"\u6743\u9650\u4E0D\u8DB3",gitNotInstalled:"\u672A\u5B89\u88C5 git",gitFailed:"git \u547D\u4EE4\u5931\u8D25"},footer:{openHint:"\u21B5 \u6253\u5F00"}}});var O6,A6;var g6=k(()=>{O6={title:"kobe \u2014 keybindings",esc:"esc"},A6={title:"kobe \u2014 \u5FEB\u6377\u952E",esc:"esc"}});var R6,C6;var k6=k(()=>{R6={category:{Global:"Global",Sidebar:"Sidebar",Workspace:"Workspace",Navigation:"Navigation","Tasks pane":"Tasks pane","Workspace (tmux)":"Workspace (tmux)",Files:"Files",Terminal:"Terminal",Dialog:"Dialog"},desc:{"help.open":"Show keybindings help","task.new":"New task","task.openEditor":"Open active task worktree in editor","settings.open":"Open settings","settings.open.sidebar":"Open settings","app.quit":"Quit (with confirm)","focus.sidebar":"Back to sidebar (tasks)","focus.numeric":"Jump to pane (h=sidebar, j=workspace, k=files, l=terminal)","chat.interrupt":"Interrupt current turn (esc while streaming)","sidebar.nav":"Move cursor up/down","sidebar.select":"Open the selected task","sidebar.goto":"Top / bottom of list (gg or shift-G)","sidebar.rename":"Rename task","sidebar.archive":"Toggle archive","sidebar.localMerge":"Local merge task into parent repo (Shift+M)","sidebar.pin":"Pin / unpin task at top (Shift+P)","sidebar.view":"Switch view (Working session \u2194 Archives)","sidebar.sort":"Switch task sort (default \u2194 recent)","sidebar.projectFilter":"Cycle task project filter","sidebar.delete":"Delete task (with confirm)","sidebar.search.enter":"Search tasks (fuzzy filter)","sidebar.search.nav":"Move highlight in search results","sidebar.search.submit":"Select search match and exit search","sidebar.search.cancel":"Cancel search (restore prior selection)","tasks.openWorktree":"Open selected task's worktree in your editor","tasks.renameBranch":"Rename the selected task's git branch","tasks.cycleEngine":"Cycle engine vendor (claude \u2194 codex \u2194 \u2026) \u2014 applies on reopen","tasks.update":"Open the update page (when a new version is available)","tasks.focusEngine":"Focus the engine pane of the current window","tasks.toggleKeys":"Collapse / expand the keys legend","tmux.quickTask":"Quick new task (tmux prefix, then f)","tmux.engineTab":"Open the engine in a new tab (tmux prefix, then t)","tmux.layout.workspaceSplit":"Add a temporary workspace split (tmux prefix, then s)","tmux.layout.workspaceClose":"Close the focused temporary workspace split (tmux prefix, then x)","tmux.layout.workspaceReset":"Close all temporary workspace splits (tmux prefix, then r)","tmux.layout.tasksToggle":"Hide / restore the Tasks pane (tmux prefix, then a)","tmux.layout.opsToggle":"Toggle the file/Ops pane (tmux prefix, then o)","tmux.layout.terminalToggle":"Hide / restore the terminal pane (tmux prefix, then z)","tmux.layout.zenToggle":"Zen mode \u2014 collapse to the engine pane (tmux prefix, then space)","chat.send":"Send message (composer)","chat.newline":"Newline in composer","chat.cycle-mode":"Cycle permission mode (composer)","chat.steer":"Steer (interrupt + send) \u2014 mid-stream only","chat.tab.new":"New chat tab","chat.fork.new":"Quick-fork: create child task seeded with current repo/branch/model","chat.session.resume":"Resume a prior session in this task's worktree","chat.tab.close":"Close chat tab","chat.tab.rename":"Rename active chat tab","chat.tab.cycle-next":"Next chat tab","chat.tab.cycle-prev":"Previous chat tab","chat.question.nav":"Move highlight in question picker","chat.question.toggle":"Toggle highlighted option in question picker","chat.question.submit":"Advance / submit question picker","chat.question.pick-number":"Pick option by number in question picker","files.nav":"Move cursor up/down","files.hierarchy":"Collapse / expand tree level","files.open":"Open file in nvim (diff vs HEAD when changed)","files.tab":"Switch tab (cycle All / Changes)","files.refresh":"Refresh","files.openExternal":"Open file in system default app (audio / video / pdf preview)","files.mention":"Inject @<path> mention into the engine pane","files.createPR":"Create PR from the current task","terminal.scroll-up":"Scroll scrollback up","terminal.scroll-down":"Scroll scrollback down","terminal.reset":"Reset terminal \u2014 kill the current shell and respawn","dialog.cancel":"Close the top dialog (esc)","dialog.newtask.tab.cycle":"Switch New Task tab (Existing / New Repo)"}},C6={category:{Global:"\u5168\u5C40",Sidebar:"\u4FA7\u8FB9\u680F",Workspace:"\u5DE5\u4F5C\u533A",Navigation:"\u5BFC\u822A","Tasks pane":"\u4EFB\u52A1\u9762\u677F","Workspace (tmux)":"\u5DE5\u4F5C\u533A\uFF08tmux\uFF09",Files:"\u6587\u4EF6",Terminal:"\u7EC8\u7AEF",Dialog:"\u5BF9\u8BDD\u6846"},desc:{"help.open":"\u663E\u793A\u5FEB\u6377\u952E\u5E2E\u52A9","task.new":"\u65B0\u5EFA\u4EFB\u52A1","task.openEditor":"\u5728\u7F16\u8F91\u5668\u4E2D\u6253\u5F00\u5F53\u524D\u4EFB\u52A1\u7684 worktree","settings.open":"\u6253\u5F00\u8BBE\u7F6E","settings.open.sidebar":"\u6253\u5F00\u8BBE\u7F6E","app.quit":"\u9000\u51FA\uFF08\u9700\u786E\u8BA4\uFF09","focus.sidebar":"\u8FD4\u56DE\u4FA7\u8FB9\u680F\uFF08\u4EFB\u52A1\u5217\u8868\uFF09","focus.numeric":"\u8DF3\u8F6C\u5230\u9762\u677F\uFF08h=\u4FA7\u8FB9\u680F\uFF0Cj=\u5DE5\u4F5C\u533A\uFF0Ck=\u6587\u4EF6\uFF0Cl=\u7EC8\u7AEF\uFF09","chat.interrupt":"\u4E2D\u65AD\u5F53\u524D\u8F6E\u6B21\uFF08\u6D41\u5F0F\u8F93\u51FA\u4E2D\u6309 esc\uFF09","sidebar.nav":"\u4E0A\u4E0B\u79FB\u52A8\u5149\u6807","sidebar.select":"\u6253\u5F00\u9009\u4E2D\u7684\u4EFB\u52A1","sidebar.goto":"\u8DF3\u5230\u5217\u8868\u9876\u90E8 / \u5E95\u90E8\uFF08gg \u6216 shift-G\uFF09","sidebar.rename":"\u91CD\u547D\u540D\u4EFB\u52A1","sidebar.archive":"\u5207\u6362\u5F52\u6863\u72B6\u6001","sidebar.localMerge":"\u5C06\u4EFB\u52A1\u672C\u5730\u5408\u5E76\u5230\u7236\u4ED3\u5E93\uFF08Shift+M\uFF09","sidebar.pin":"\u7F6E\u9876 / \u53D6\u6D88\u7F6E\u9876\u4EFB\u52A1\uFF08Shift+P\uFF09","sidebar.view":"\u5207\u6362\u89C6\u56FE\uFF08\u5DE5\u4F5C\u4F1A\u8BDD \u2194 \u5F52\u6863\uFF09","sidebar.sort":"\u5207\u6362\u4EFB\u52A1\u6392\u5E8F\u65B9\u5F0F\uFF08\u9ED8\u8BA4 \u2194 \u6700\u8FD1\uFF09","sidebar.projectFilter":"\u5FAA\u73AF\u5207\u6362\u4EFB\u52A1\u9879\u76EE\u7B5B\u9009","sidebar.delete":"\u5220\u9664\u4EFB\u52A1\uFF08\u9700\u786E\u8BA4\uFF09","sidebar.search.enter":"\u641C\u7D22\u4EFB\u52A1\uFF08\u6A21\u7CCA\u8FC7\u6EE4\uFF09","sidebar.search.nav":"\u5728\u641C\u7D22\u7ED3\u679C\u4E2D\u79FB\u52A8\u9AD8\u4EAE","sidebar.search.submit":"\u9009\u4E2D\u641C\u7D22\u5339\u914D\u9879\u5E76\u9000\u51FA\u641C\u7D22","sidebar.search.cancel":"\u53D6\u6D88\u641C\u7D22\uFF08\u6062\u590D\u4E4B\u524D\u7684\u9009\u4E2D\u9879\uFF09","tasks.openWorktree":"\u5728\u7F16\u8F91\u5668\u4E2D\u6253\u5F00\u9009\u4E2D\u4EFB\u52A1\u7684 worktree","tasks.renameBranch":"\u91CD\u547D\u540D\u9009\u4E2D\u4EFB\u52A1\u7684 git \u5206\u652F","tasks.cycleEngine":"\u5FAA\u73AF\u5207\u6362\u5F15\u64CE\u5382\u5546\uFF08claude \u2194 codex \u2194 \u2026\uFF09\u2014\u2014\u91CD\u65B0\u6253\u5F00\u540E\u751F\u6548","tasks.update":"\u6253\u5F00\u66F4\u65B0\u9875\u9762\uFF08\u6709\u65B0\u7248\u672C\u65F6\uFF09","tasks.focusEngine":"\u805A\u7126\u5F53\u524D\u7A97\u53E3\u7684\u5F15\u64CE\u9762\u677F","tasks.toggleKeys":"\u6298\u53E0 / \u5C55\u5F00\u5FEB\u6377\u952E\u8BF4\u660E","tmux.quickTask":"\u5FEB\u901F\u65B0\u5EFA\u4EFB\u52A1\uFF08tmux \u524D\u7F00\uFF0C\u7136\u540E\u6309 f\uFF09","tmux.engineTab":"\u5728\u65B0\u6807\u7B7E\u9875\u4E2D\u6253\u5F00\u5F15\u64CE\uFF08tmux \u524D\u7F00\uFF0C\u7136\u540E\u6309 t\uFF09","tmux.layout.workspaceSplit":"\u6DFB\u52A0\u4E34\u65F6\u5DE5\u4F5C\u533A\u5206\u5C4F\uFF08tmux \u524D\u7F00\uFF0C\u7136\u540E\u6309 s\uFF09","tmux.layout.workspaceClose":"\u5173\u95ED\u5F53\u524D\u805A\u7126\u7684\u4E34\u65F6\u5DE5\u4F5C\u533A\u5206\u5C4F\uFF08tmux \u524D\u7F00\uFF0C\u7136\u540E\u6309 x\uFF09","tmux.layout.workspaceReset":"\u5173\u95ED\u6240\u6709\u4E34\u65F6\u5DE5\u4F5C\u533A\u5206\u5C4F\uFF08tmux \u524D\u7F00\uFF0C\u7136\u540E\u6309 r\uFF09","tmux.layout.tasksToggle":"\u9690\u85CF / \u6062\u590D\u4EFB\u52A1\u9762\u677F\uFF08tmux \u524D\u7F00\uFF0C\u7136\u540E\u6309 a\uFF09","tmux.layout.opsToggle":"\u5207\u6362\u6587\u4EF6/Ops \u9762\u677F\uFF08tmux \u524D\u7F00\uFF0C\u7136\u540E\u6309 o\uFF09","tmux.layout.terminalToggle":"\u9690\u85CF / \u6062\u590D\u7EC8\u7AEF\u9762\u677F\uFF08tmux \u524D\u7F00\uFF0C\u7136\u540E\u6309 z\uFF09","tmux.layout.zenToggle":"\u4E13\u6CE8\u6A21\u5F0F\u2014\u2014\u6298\u53E0\u5230\u5F15\u64CE\u9762\u677F\uFF08tmux \u524D\u7F00\uFF0C\u7136\u540E\u6309 space\uFF09","chat.send":"\u53D1\u9001\u6D88\u606F\uFF08\u8F93\u5165\u6846\uFF09","chat.newline":"\u5728\u8F93\u5165\u6846\u4E2D\u6362\u884C","chat.cycle-mode":"\u5FAA\u73AF\u5207\u6362\u6743\u9650\u6A21\u5F0F\uFF08\u8F93\u5165\u6846\uFF09","chat.steer":"\u5F15\u5BFC\uFF08\u4E2D\u65AD\u5E76\u53D1\u9001\uFF09\u2014\u2014\u4EC5\u9650\u6D41\u5F0F\u8F93\u51FA\u4E2D","chat.tab.new":"\u65B0\u5EFA\u804A\u5929\u6807\u7B7E\u9875","chat.fork.new":"\u5FEB\u901F\u6D3E\u751F\uFF1A\u4EE5\u5F53\u524D\u4ED3\u5E93/\u5206\u652F/\u6A21\u578B\u521B\u5EFA\u5B50\u4EFB\u52A1","chat.session.resume":"\u5728\u6B64\u4EFB\u52A1\u7684 worktree \u4E2D\u6062\u590D\u4E4B\u524D\u7684\u4F1A\u8BDD","chat.tab.close":"\u5173\u95ED\u804A\u5929\u6807\u7B7E\u9875","chat.tab.rename":"\u91CD\u547D\u540D\u5F53\u524D\u804A\u5929\u6807\u7B7E\u9875","chat.tab.cycle-next":"\u4E0B\u4E00\u4E2A\u804A\u5929\u6807\u7B7E\u9875","chat.tab.cycle-prev":"\u4E0A\u4E00\u4E2A\u804A\u5929\u6807\u7B7E\u9875","chat.question.nav":"\u5728\u63D0\u95EE\u9009\u62E9\u5668\u4E2D\u79FB\u52A8\u9AD8\u4EAE","chat.question.toggle":"\u5728\u63D0\u95EE\u9009\u62E9\u5668\u4E2D\u5207\u6362\u9AD8\u4EAE\u9009\u9879","chat.question.submit":"\u63A8\u8FDB / \u63D0\u4EA4\u63D0\u95EE\u9009\u62E9\u5668","chat.question.pick-number":"\u5728\u63D0\u95EE\u9009\u62E9\u5668\u4E2D\u6309\u6570\u5B57\u9009\u62E9\u9009\u9879","files.nav":"\u4E0A\u4E0B\u79FB\u52A8\u5149\u6807","files.hierarchy":"\u6298\u53E0 / \u5C55\u5F00\u6811\u5C42\u7EA7","files.open":"\u5728 nvim \u4E2D\u6253\u5F00\u6587\u4EF6\uFF08\u6709\u53D8\u66F4\u65F6\u663E\u793A\u4E0E HEAD \u7684\u5DEE\u5F02\uFF09","files.tab":"\u5207\u6362\u6807\u7B7E\u9875\uFF08\u5FAA\u73AF \u5168\u90E8 / \u53D8\u66F4\uFF09","files.refresh":"\u5237\u65B0","files.openExternal":"\u5728\u7CFB\u7EDF\u9ED8\u8BA4\u5E94\u7528\u4E2D\u6253\u5F00\u6587\u4EF6\uFF08\u97F3\u9891 / \u89C6\u9891 / pdf \u9884\u89C8\uFF09","files.mention":"\u5C06 @<path> \u63D0\u53CA\u6CE8\u5165\u5F15\u64CE\u9762\u677F","files.createPR":"\u4ECE\u5F53\u524D\u4EFB\u52A1\u521B\u5EFA PR","terminal.scroll-up":"\u5411\u4E0A\u6EDA\u52A8\u56DE\u6EDA","terminal.scroll-down":"\u5411\u4E0B\u6EDA\u52A8\u56DE\u6EDA","terminal.reset":"\u91CD\u7F6E\u7EC8\u7AEF\u2014\u2014\u5173\u95ED\u5F53\u524D shell \u5E76\u91CD\u65B0\u542F\u52A8","dialog.cancel":"\u5173\u95ED\u9876\u5C42\u5BF9\u8BDD\u6846\uFF08esc\uFF09","dialog.newtask.tab.cycle":"\u5207\u6362\u65B0\u5EFA\u4EFB\u52A1\u6807\u7B7E\u9875\uFF08\u73B0\u6709\u4ED3\u5E93 / \u65B0\u4ED3\u5E93\uFF09"}}});var N6,y6;var b6=k(()=>{N6={title:"New task",tabs:{existing:"For Existing",clone:"For New Repo",adopt:"Adopt Worktree"},field:{engine:"engine",repo:"repo",fromBranch:"from branch",gitUrl:"git url",parentDir:"parent dir",folderName:"folder name",baseBranch:"base branch",adoptFilter:"filter (path glob)"},placeholder:{folderName:"auto from url",adoptFilter:"* \u2014 type e.g. feature-* to narrow"},hint:{engineCycle:"ctrl+e",remembered:"(remembered \u2014 next clone defaults to this dir)",currentDir:"(current dir)",noBranchesFound:"(no local branches found \u2014 typed text will be used as ref)",noMatchBranch:"(no match \u2014 typed text will be used as ref)",scanningWorktrees:"scanning worktrees\u2026",legend:"\u2191\u2193 pick \xB7 tab next field \xB7 \u2190\u2192 switch \xB7 enter done \xB7 esc cancel"},picker:{moreAbove:"\u2191 {count} more",moreBelow:"\u2193 {count} more"},adopt:{repoLine:"repo: {path}",repoNone:"(none)",noUnlinked:"no unlinked worktrees \u2014 every git worktree here is already a task",noMatch:"no worktrees match the filter",hintSelected:"{count} selected \xB7 enter toggles \xB7 ctrl+a all \xB7 Create imports",hintDefault:"enter toggles \xB7 ctrl+a all \xB7 Create imports the highlighted row"},clone:{progressFallback:"Cloning\u2026",progressInto:"Cloning into {target}\u2026"},button:{create:"[ Create ]",createFocused:"\u25B8 [ Create ]",cloning:"[ Cloning\u2026 ]"},error:{gitUrlRequired:"git URL is required",gitUrlInvalid:"does not look like a git URL: {url}",folderRequired:"folder name is required",folderHasSeparator:"folder name cannot contain path separators",parentRequired:"parent directory is required",parentNotFound:"parent directory does not exist: {path}",parentNotDir:"not a directory: {path}",targetExists:"target already exists: {path}",cloneFailed:"git clone failed: {error}",noAdoptable:"no adoptable worktrees to import"}},y6={title:"\u65B0\u5EFA\u4EFB\u52A1",tabs:{existing:"\u5DF2\u6709\u4ED3\u5E93",clone:"\u514B\u9686\u65B0\u4ED3\u5E93",adopt:"\u63A5\u7BA1 Worktree"},field:{engine:"\u5F15\u64CE",repo:"\u4ED3\u5E93",fromBranch:"\u57FA\u51C6\u5206\u652F",gitUrl:"git \u5730\u5740",parentDir:"\u7236\u76EE\u5F55",folderName:"\u6587\u4EF6\u5939\u540D",baseBranch:"\u57FA\u51C6\u5206\u652F",adoptFilter:"\u8FC7\u6EE4\uFF08\u8DEF\u5F84 glob\uFF09"},placeholder:{folderName:"\u81EA\u52A8\u4ECE\u5730\u5740\u63A8\u5BFC",adoptFilter:"* \u2014 \u8F93\u5165\u5982 feature-* \u6765\u7F29\u5C0F\u8303\u56F4"},hint:{engineCycle:"ctrl+e",remembered:"\uFF08\u5DF2\u8BB0\u4F4F \u2014 \u4E0B\u6B21\u514B\u9686\u9ED8\u8BA4\u4F7F\u7528\u6B64\u76EE\u5F55\uFF09",currentDir:"\uFF08\u5F53\u524D\u76EE\u5F55\uFF09",noBranchesFound:"\uFF08\u672A\u627E\u5230\u672C\u5730\u5206\u652F \u2014 \u5C06\u76F4\u63A5\u4F7F\u7528\u8F93\u5165\u6587\u672C\u4F5C\u4E3A ref\uFF09",noMatchBranch:"\uFF08\u65E0\u5339\u914D \u2014 \u5C06\u76F4\u63A5\u4F7F\u7528\u8F93\u5165\u6587\u672C\u4F5C\u4E3A ref\uFF09",scanningWorktrees:"\u6B63\u5728\u626B\u63CF worktree\u2026",legend:"\u2191\u2193 \u9009\u62E9 \xB7 tab \u4E0B\u4E00\u5B57\u6BB5 \xB7 \u2190\u2192 \u5207\u6362 \xB7 enter \u786E\u8BA4 \xB7 esc \u53D6\u6D88"},picker:{moreAbove:"\u2191 \u8FD8\u6709 {count} \u9879",moreBelow:"\u2193 \u8FD8\u6709 {count} \u9879"},adopt:{repoLine:"\u4ED3\u5E93\uFF1A{path}",repoNone:"\uFF08\u65E0\uFF09",noUnlinked:"\u6CA1\u6709\u672A\u5173\u8054\u7684 worktree \u2014 \u6B64\u4ED3\u5E93\u6240\u6709 git worktree \u5747\u5DF2\u662F\u4EFB\u52A1",noMatch:"\u6CA1\u6709 worktree \u5339\u914D\u6B64\u8FC7\u6EE4\u6761\u4EF6",hintSelected:"\u5DF2\u9009 {count} \u9879 \xB7 enter \u5207\u6362\u9009\u4E2D \xB7 ctrl+a \u5168\u9009 \xB7 \u521B\u5EFA \u5BFC\u5165",hintDefault:"enter \u5207\u6362\u9009\u4E2D \xB7 ctrl+a \u5168\u9009 \xB7 \u521B\u5EFA \u5C06\u5BFC\u5165\u9AD8\u4EAE\u884C"},clone:{progressFallback:"\u514B\u9686\u4E2D\u2026",progressInto:"\u6B63\u5728\u514B\u9686\u5230 {target}\u2026"},button:{create:"[ \u521B\u5EFA ]",createFocused:"\u25B8 [ \u521B\u5EFA ]",cloning:"[ \u514B\u9686\u4E2D\u2026 ]"},error:{gitUrlRequired:"git \u5730\u5740\u4E0D\u80FD\u4E3A\u7A7A",gitUrlInvalid:"\u4E0D\u50CF\u662F\u6709\u6548\u7684 git \u5730\u5740\uFF1A{url}",folderRequired:"\u6587\u4EF6\u5939\u540D\u4E0D\u80FD\u4E3A\u7A7A",folderHasSeparator:"\u6587\u4EF6\u5939\u540D\u4E0D\u80FD\u5305\u542B\u8DEF\u5F84\u5206\u9694\u7B26",parentRequired:"\u7236\u76EE\u5F55\u4E0D\u80FD\u4E3A\u7A7A",parentNotFound:"\u7236\u76EE\u5F55\u4E0D\u5B58\u5728\uFF1A{path}",parentNotDir:"\u4E0D\u662F\u76EE\u5F55\uFF1A{path}",targetExists:"\u76EE\u6807\u8DEF\u5F84\u5DF2\u5B58\u5728\uFF1A{path}",cloneFailed:"git clone \u5931\u8D25\uFF1A{error}",noAdoptable:"\u6CA1\u6709\u53EF\u63A5\u7BA1\u7684 worktree"}}});var S6,I6;var T6=k(()=>{S6={badge:{newActivity:"\u25CF new"},preview:{diffVsHead:"diff vs HEAD",file:"file",closeHint:"\xB7 q to close",loading:"loading\u2026"}},I6={badge:{newActivity:"\u25CF \u65B0\u52A8\u6001"},preview:{diffVsHead:"\u4E0E HEAD \u5BF9\u6BD4",file:"\u6587\u4EF6",closeHint:"\xB7 q \u5173\u95ED",loading:"\u52A0\u8F7D\u4E2D\u2026"}}});var u6,E6;var x6=k(()=>{u6={title:"Quick task \xB7 {repoLabel}",esc:"esc",promptLabel:"prompt",promptPlaceholder:"what should this task do?",engineLabel:"engine",branchLabel:"branch",legend:"enter create \xB7 tab field \xB7 ctrl+e engine \xB7 esc cancel"},E6={title:"\u5FEB\u901F\u4EFB\u52A1 \xB7 {repoLabel}",esc:"esc",promptLabel:"\u63D0\u793A\u8BCD",promptPlaceholder:"\u8FD9\u4E2A\u4EFB\u52A1\u8981\u505A\u4EC0\u4E48\uFF1F",engineLabel:"\u5F15\u64CE",branchLabel:"\u5206\u652F",legend:"enter \u521B\u5EFA \xB7 tab \u5207\u6362\u5B57\u6BB5 \xB7 ctrl+e \u5207\u6362\u5F15\u64CE \xB7 esc \u53D6\u6D88"}});var w6,h6;var P6=k(()=>{w6={title:"Settings",esc:"esc",nav:{default:"j/k pick \xB7 h/l switch level \xB7 enter activate \xB7 esc close",feedback:"tab next field \xB7 enter send \xB7 esc close"},sections:{general:"General",engines:"Engines",accounts:"Accounts",keys:"Keybindings",feedback:"Feedback",dev:"Dev"},general:{theme:"Theme",themeHint:"l to enter list \xB7 j/k to highlight \xB7 enter to apply",language:"Language",languageHint:"Display language for kobe's UI. l to enter list \xB7 j/k to highlight \xB7 enter to apply.",transparent:"Transparent background",transparentHint:"Drops the renderer's bg fill so the host terminal shows through. `t` toggles.",on:"[x] on",off:"[ ] off",focusAccent:"Focus accent",focusAccentHint:"Color of focused pane title, \u258C marker, and split borders.",accentPrimary:"Primary (brand accent)",accentSuccess:"Success (legacy green)",accentInfo:"Info (cool blue)",notifications:"Notifications",notificationsHint:"Fired when a background chat tab finishes or pauses on an approval. Toast = bottom-right popup; Sound = terminal bell + chime. Tab-chip unread dot is always on.",toast:"Toast",sound:"Sound",zen:"Zen mode",zenHint:"The `zen` chip (above the file list) and `prefix`+space collapse the ChatTab to the engine pane \u2014 hiding the file and terminal panes. Keep this on to leave the Tasks rail visible so you can always get back out.",zenKeepTasks:"Keep Tasks pane in zen mode",surface:"Settings page",surfaceHint:"Where Settings and the other full dialogs (new task, rename) open. ChatTab = a dedicated full-window page alongside the engine tabs; Task panel = an overlay inside the left Tasks pane. enter to pick.",surfaceChattab:"ChatTab (separate page)",surfaceTaskpanel:"Task panel (in-pane overlay)",editor:"Editor",editorHint:"What `e` opens a file with in the file tree (enter stays the read-only preview). `auto` (default) follows $VISUAL / $EDITOR, else auto-detects nvim / vim / emacs / nano. enter on the row below cycles auto / vim / nvim / nano / emacs / custom; if the editor isn't installed it falls back to the preview.",editorRow:"editor: < {kind} > (enter to change)",editorCustom:"custom: {cmd}",editorCustomUnset:"(unset \u2014 enter to edit)"},engines:{title:"Launch command",hint:"The command each engine's task pane runs. Override a built-in when your binary isn't on PATH as `claude` / `codex` (e.g. it's `cl`) or to pass default flags, or add your own engine. \u25CF = default engine for new tasks (also set by Ctrl+Shift+T). enter edit command \xB7 r rename \xB7 x reset/remove \xB7 d set default.",defaultTag:" (default)",customTag:" (custom)",addEngine:"+ Add engine"},accounts:{title:"Accounts",hint:"Read-only view of locally-detected engine accounts. Login flows land here later.",checking:"Checking\u2026",notLoggedIn:"\u25CB Not logged in",loggedIn:"\u25CF Logged in: {email}",apiKeyConfigured:"\u25CF API key configured",chatgptLogin:"\u25CF ChatGPT login: {email}",tokenConfigured:"\u25CF Token configured ({source})",copilotDetected:"\u25CF Copilot login detected"},keybindings:{title:"Keybindings",hint:"Rebind chords by editing the YAML below, then restart kobe (or respawn the pane). Press F1 anywhere for the live keymap with every binding id.",configFile:"Config file",notCreated:" (not created yet)",example:"Example",overridesApplied:"Overrides applied",none:"none",warnings:"Warnings"},feedback:{title:"Feedback",hint:"Sends a GitHub Discussion to the kobe repo through `gh`. Requires `gh auth login`; category defaults to Feedback.",titleLabel:"title",titlePlaceholder:"Short summary",descriptionLabel:"description",descriptionPlaceholder:"What happened? (enter sends)",send:"[enter] Send to GitHub Discussions"},dev:{reset:"Reset UI state",resetHint:"Clears ~/.config/kobe/state.json and ~/.kobe/tasks.json, then quits kobe \u2014 relaunch to start fresh. Working session / Archive lists, pane sizes, theme, model picks all reset. Worktrees on disk and Claude Code session history are not touched.",resetButton:"[enter] Reset",restart:"Restart backend",restartHint:"Stops the kobe daemon and quits this kobe window so the next launch spawns a fresh daemon \u2014 picks up daemon / orchestrator / engine edits without a process kill. Other attached kobe windows will lose their connection too.",restartButton:"[enter] Restart",doctorHint:"Daemon wedged or unresponsive? From a shell, run `kobe doctor` to diagnose, or `kobe reset` to stop the daemon + kill sessions (keeps your tasks). Use `kobe reset --hard` only to also wipe the task index + UI state.",experimental:"Experimental",remoteHint:"Remote projects (SSH): register a project whose git worktrees + engine run on another host over SSH, driven from this local kobe. Unfinished \u2014 file/diff panes still degrade for remote. Enables `kobe add --remote`.",remoteOn:"[x] Remote projects (on)",remoteOff:"[ ] Remote projects (off)",autoStatusHint:"Auto status flow: a backlog task moves to in_progress when its engine starts a turn, and new claude sessions get a system-prompt note telling the agent to set in_review itself when the work is done. Never touches done/canceled.",autoStatusOn:"[x] Auto status flow (on)",autoStatusOff:"[ ] Auto status flow (off)",dispatcherHint:"Field-notes dispatcher: task sessions file one-line gotchas (`kobe api note`), the daemon forwards each to the repo's main session, and that session relays them to the in-flight tasks that benefit (`kobe api dispatch`). Web-hosted sessions receive the relays today.",dispatcherOn:"[x] Field-notes dispatcher (on)",dispatcherOff:"[ ] Field-notes dispatcher (off)"}},h6={title:"\u8BBE\u7F6E",esc:"esc",nav:{default:"j/k \u9009\u62E9 \xB7 h/l \u5207\u6362\u5C42\u7EA7 \xB7 enter \u786E\u8BA4 \xB7 esc \u5173\u95ED",feedback:"tab \u4E0B\u4E00\u9879 \xB7 enter \u53D1\u9001 \xB7 esc \u5173\u95ED"},sections:{general:"\u901A\u7528",engines:"\u5F15\u64CE",accounts:"\u8D26\u6237",keys:"\u5FEB\u6377\u952E",feedback:"\u53CD\u9988",dev:"\u5F00\u53D1"},general:{theme:"\u4E3B\u9898",themeHint:"l \u8FDB\u5165\u5217\u8868 \xB7 j/k \u9AD8\u4EAE \xB7 enter \u5E94\u7528",language:"\u8BED\u8A00",languageHint:"kobe \u754C\u9762\u7684\u663E\u793A\u8BED\u8A00\u3002l \u8FDB\u5165\u5217\u8868 \xB7 j/k \u9AD8\u4EAE \xB7 enter \u5E94\u7528\u3002",transparent:"\u900F\u660E\u80CC\u666F",transparentHint:"\u53BB\u6389\u6E32\u67D3\u5668\u7684\u80CC\u666F\u586B\u5145\uFF0C\u8BA9\u5BBF\u4E3B\u7EC8\u7AEF\u900F\u51FA\u6765\u3002\u6309 `t` \u5207\u6362\u3002",on:"[x] \u5F00",off:"[ ] \u5173",focusAccent:"\u805A\u7126\u5F3A\u8C03\u8272",focusAccentHint:"\u805A\u7126\u9762\u677F\u6807\u9898\u3001\u258C \u6807\u8BB0\u548C\u5206\u9694\u8FB9\u6846\u7684\u989C\u8272\u3002",accentPrimary:"\u4E3B\u8272\uFF08\u54C1\u724C\u5F3A\u8C03\u8272\uFF09",accentSuccess:"\u6210\u529F\u8272\uFF08\u4F20\u7EDF\u7EFF\uFF09",accentInfo:"\u4FE1\u606F\u8272\uFF08\u51B7\u84DD\uFF09",notifications:"\u901A\u77E5",notificationsHint:"\u540E\u53F0\u804A\u5929\u9875\u5B8C\u6210\u6216\u5728\u5BA1\u6279\u5904\u6682\u505C\u65F6\u89E6\u53D1\u3002Toast = \u53F3\u4E0B\u89D2\u5F39\u7A97\uFF1BSound = \u7EC8\u7AEF\u54CD\u94C3 + \u63D0\u793A\u97F3\u3002\u6807\u7B7E\u4E0A\u7684\u672A\u8BFB\u5706\u70B9\u59CB\u7EC8\u5F00\u542F\u3002",toast:"Toast \u5F39\u7A97",sound:"\u58F0\u97F3",zen:"\u7985\u6A21\u5F0F",zenHint:"`zen` \u6807\u8BB0\uFF08\u6587\u4EF6\u5217\u8868\u4E0A\u65B9\uFF09\u548C `prefix`+\u7A7A\u683C \u4F1A\u628A ChatTab \u6536\u8D77\u5230\u5F15\u64CE\u9762\u677F\u2014\u2014\u9690\u85CF\u6587\u4EF6\u4E0E\u7EC8\u7AEF\u9762\u677F\u3002\u4FDD\u6301\u5F00\u542F\u53EF\u8BA9 Tasks \u4FA7\u680F\u59CB\u7EC8\u53EF\u89C1\uFF0C\u65B9\u4FBF\u968F\u65F6\u9000\u51FA\u3002",zenKeepTasks:"\u7985\u6A21\u5F0F\u4E0B\u4FDD\u7559 Tasks \u9762\u677F",surface:"\u8BBE\u7F6E\u9875\u9762",surfaceHint:"\u8BBE\u7F6E\u53CA\u5176\u4ED6\u5B8C\u6574\u5BF9\u8BDD\u6846\uFF08\u65B0\u5EFA\u4EFB\u52A1\u3001\u91CD\u547D\u540D\uFF09\u7684\u6253\u5F00\u4F4D\u7F6E\u3002ChatTab = \u4E0E\u5F15\u64CE\u6807\u7B7E\u5E76\u5217\u7684\u72EC\u7ACB\u6574\u7A97\u9875\u9762\uFF1BTask panel = \u5DE6\u4FA7 Tasks \u9762\u677F\u5185\u7684\u6D6E\u5C42\u3002enter \u9009\u62E9\u3002",surfaceChattab:"ChatTab\uFF08\u72EC\u7ACB\u9875\u9762\uFF09",surfaceTaskpanel:"Task panel\uFF08\u9762\u677F\u5185\u6D6E\u5C42\uFF09",editor:"\u7F16\u8F91\u5668",editorHint:"\u6587\u4EF6\u6811\u91CC\u6309 `e` \u7528\u4EC0\u4E48\u6253\u5F00\u6587\u4EF6\uFF08enter \u4ECD\u662F\u53EA\u8BFB\u9884\u89C8\uFF09\u3002`auto`\uFF08\u9ED8\u8BA4\uFF09\u8DDF\u968F $VISUAL / $EDITOR\uFF0C\u5426\u5219\u81EA\u52A8\u63A2\u6D4B nvim / vim / emacs / nano\u3002\u5728\u4E0B\u65B9\u4E00\u884C\u6309 enter \u5728 auto / vim / nvim / nano / emacs / custom \u95F4\u5FAA\u73AF\uFF1B\u7F16\u8F91\u5668\u672A\u5B89\u88C5\u65F6\u56DE\u9000\u5230\u9884\u89C8\u3002",editorRow:"\u7F16\u8F91\u5668: < {kind} > (enter \u5207\u6362)",editorCustom:"\u81EA\u5B9A\u4E49: {cmd}",editorCustomUnset:"(\u672A\u8BBE\u7F6E \u2014 enter \u7F16\u8F91)"},engines:{title:"\u542F\u52A8\u547D\u4EE4",hint:"\u6BCF\u4E2A\u5F15\u64CE\u7684\u4EFB\u52A1\u9762\u677F\u8FD0\u884C\u7684\u547D\u4EE4\u3002\u5F53\u4E8C\u8FDB\u5236\u6587\u4EF6\u4E0D\u5728 PATH \u4E0A\u7684 `claude` / `codex` \u540D\u4E0B\uFF08\u6BD4\u5982\u53EB `cl`\uFF09\u3001\u8981\u4F20\u9ED8\u8BA4\u53C2\u6570\uFF0C\u6216\u8981\u6DFB\u52A0\u81EA\u5DF1\u7684\u5F15\u64CE\u65F6\uFF0C\u53EF\u8986\u76D6\u5185\u7F6E\u9879\u3002\u25CF = \u65B0\u4EFB\u52A1\u7684\u9ED8\u8BA4\u5F15\u64CE\uFF08\u4E5F\u53EF\u7528 Ctrl+Shift+T \u8BBE\u7F6E\uFF09\u3002enter \u7F16\u8F91\u547D\u4EE4 \xB7 r \u91CD\u547D\u540D \xB7 x \u91CD\u7F6E/\u79FB\u9664 \xB7 d \u8BBE\u4E3A\u9ED8\u8BA4\u3002",defaultTag:" (\u9ED8\u8BA4)",customTag:" (\u81EA\u5B9A\u4E49)",addEngine:"+ \u6DFB\u52A0\u5F15\u64CE"},accounts:{title:"\u8D26\u6237",hint:"\u672C\u5730\u63A2\u6D4B\u5230\u7684\u5F15\u64CE\u8D26\u6237\u7684\u53EA\u8BFB\u89C6\u56FE\u3002\u767B\u5F55\u6D41\u7A0B\u7A0D\u540E\u4F1A\u63A5\u5165\u8FD9\u91CC\u3002",checking:"\u68C0\u67E5\u4E2D\u2026",notLoggedIn:"\u25CB \u672A\u767B\u5F55",loggedIn:"\u25CF \u5DF2\u767B\u5F55: {email}",apiKeyConfigured:"\u25CF \u5DF2\u914D\u7F6E API key",chatgptLogin:"\u25CF ChatGPT \u767B\u5F55: {email}",tokenConfigured:"\u25CF \u5DF2\u914D\u7F6E Token ({source})",copilotDetected:"\u25CF \u68C0\u6D4B\u5230 Copilot \u767B\u5F55"},keybindings:{title:"\u5FEB\u6377\u952E",hint:"\u7F16\u8F91\u4E0B\u9762\u7684 YAML \u6765\u91CD\u7ED1\u5B9A\u6309\u952E\uFF0C\u7136\u540E\u91CD\u542F kobe\uFF08\u6216\u91CD\u5EFA\u9762\u677F\uFF09\u3002\u4EFB\u610F\u4F4D\u7F6E\u6309 F1 \u67E5\u770B\u5E26\u6BCF\u4E2A\u7ED1\u5B9A id \u7684\u5B9E\u65F6\u952E\u4F4D\u8868\u3002",configFile:"\u914D\u7F6E\u6587\u4EF6",notCreated:" (\u5C1A\u672A\u521B\u5EFA)",example:"\u793A\u4F8B",overridesApplied:"\u5DF2\u5E94\u7528\u7684\u8986\u76D6",none:"\u65E0",warnings:"\u8B66\u544A"},feedback:{title:"\u53CD\u9988",hint:"\u901A\u8FC7 `gh` \u5411 kobe \u4ED3\u5E93\u53D1\u4E00\u6761 GitHub Discussion\u3002\u9700\u8981 `gh auth login`\uFF1B\u5206\u7C7B\u9ED8\u8BA4\u4E3A Feedback\u3002",titleLabel:"\u6807\u9898",titlePlaceholder:"\u7B80\u77ED\u6982\u62EC",descriptionLabel:"\u63CF\u8FF0",descriptionPlaceholder:"\u53D1\u751F\u4E86\u4EC0\u4E48\uFF1F(enter \u53D1\u9001)",send:"[enter] \u53D1\u9001\u5230 GitHub Discussions"},dev:{reset:"\u91CD\u7F6E UI \u72B6\u6001",resetHint:"\u6E05\u7A7A ~/.config/kobe/state.json \u548C ~/.kobe/tasks.json\uFF0C\u7136\u540E\u9000\u51FA kobe\u2014\u2014\u91CD\u65B0\u542F\u52A8\u5373\u53EF\u4ECE\u5934\u5F00\u59CB\u3002\u5DE5\u4F5C\u4F1A\u8BDD / \u5F52\u6863\u5217\u8868\u3001\u9762\u677F\u5C3A\u5BF8\u3001\u4E3B\u9898\u3001\u6A21\u578B\u9009\u62E9\u90FD\u4F1A\u91CD\u7F6E\u3002\u78C1\u76D8\u4E0A\u7684 worktree \u548C Claude Code \u4F1A\u8BDD\u5386\u53F2\u4E0D\u53D7\u5F71\u54CD\u3002",resetButton:"[enter] \u91CD\u7F6E",restart:"\u91CD\u542F\u540E\u7AEF",restartHint:"\u505C\u6B62 kobe daemon \u5E76\u9000\u51FA\u5F53\u524D kobe \u7A97\u53E3\uFF0C\u4E0B\u6B21\u542F\u52A8\u4F1A\u62C9\u8D77\u4E00\u4E2A\u5168\u65B0\u7684 daemon\u2014\u2014\u65E0\u9700\u6740\u8FDB\u7A0B\u5373\u53EF\u5E94\u7528 daemon / orchestrator / engine \u7684\u6539\u52A8\u3002\u5176\u4ED6\u5DF2\u8FDE\u63A5\u7684 kobe \u7A97\u53E3\u4E5F\u4F1A\u65AD\u5F00\u8FDE\u63A5\u3002",restartButton:"[enter] \u91CD\u542F",doctorHint:"daemon \u5361\u4F4F\u6216\u65E0\u54CD\u5E94\uFF1F\u5728 shell \u91CC\u8FD0\u884C `kobe doctor` \u8BCA\u65AD\uFF0C\u6216 `kobe reset` \u505C\u6B62 daemon + \u6740\u6389\u4F1A\u8BDD\uFF08\u4FDD\u7559\u4F60\u7684\u4EFB\u52A1\uFF09\u3002\u53EA\u6709\u8981\u540C\u65F6\u6E05\u7A7A\u4EFB\u52A1\u7D22\u5F15 + UI \u72B6\u6001\u65F6\u624D\u7528 `kobe reset --hard`\u3002",experimental:"\u5B9E\u9A8C\u6027",remoteHint:"\u8FDC\u7A0B\u9879\u76EE\uFF08SSH\uFF09\uFF1A\u6CE8\u518C\u4E00\u4E2A git worktree + \u5F15\u64CE\u90FD\u901A\u8FC7 SSH \u8DD1\u5728\u53E6\u4E00\u53F0\u4E3B\u673A\u4E0A\u3001\u7531\u672C\u5730 kobe \u9A71\u52A8\u7684\u9879\u76EE\u3002\u5C1A\u672A\u5B8C\u6210\u2014\u2014\u6587\u4EF6/diff \u9762\u677F\u5BF9\u8FDC\u7A0B\u4ECD\u4F1A\u964D\u7EA7\u3002\u542F\u7528 `kobe add --remote`\u3002",remoteOn:"[x] \u8FDC\u7A0B\u9879\u76EE (\u5F00)",remoteOff:"[ ] \u8FDC\u7A0B\u9879\u76EE (\u5173)",autoStatusHint:"\u81EA\u52A8\u72B6\u6001\u6D41\u8F6C\uFF1Abacklog \u4EFB\u52A1\u5728\u5176\u5F15\u64CE\u5F00\u59CB\u4E00\u8F6E\u65F6\u79FB\u5230 in_progress\uFF0C\u65B0\u7684 claude \u4F1A\u8BDD\u4F1A\u62FF\u5230\u4E00\u6761\u7CFB\u7EDF\u63D0\u793A\uFF0C\u544A\u8BC9 agent \u5B8C\u6210\u540E\u81EA\u884C\u8BBE\u4E3A in_review\u3002\u7EDD\u4E0D\u89E6\u78B0 done/canceled\u3002",autoStatusOn:"[x] \u81EA\u52A8\u72B6\u6001\u6D41\u8F6C (\u5F00)",autoStatusOff:"[ ] \u81EA\u52A8\u72B6\u6001\u6D41\u8F6C (\u5173)",dispatcherHint:"\u73B0\u573A\u7B14\u8BB0\u8C03\u5EA6\u5668\uFF1A\u4EFB\u52A1\u4F1A\u8BDD\u63D0\u4EA4\u4E00\u884C\u7ECF\u9A8C\uFF08`kobe api note`\uFF09\uFF0Cdaemon \u5C06\u6BCF\u6761\u8F6C\u53D1\u7ED9\u4ED3\u5E93\u7684\u4E3B\u4F1A\u8BDD\uFF0C\u4E3B\u4F1A\u8BDD\u518D\u628A\u5B83\u4EEC\u8F6C\u8FBE\u7ED9\u80FD\u53D7\u76CA\u7684\u8FDB\u884C\u4E2D\u4EFB\u52A1\uFF08`kobe api dispatch`\uFF09\u3002\u76EE\u524D\u7531 Web \u6258\u7BA1\u7684\u4F1A\u8BDD\u4F1A\u6536\u5230\u8F6C\u8FBE\u3002",dispatcherOn:"[x] \u73B0\u573A\u7B14\u8BB0\u8C03\u5EA6\u5668 (\u5F00)",dispatcherOff:"[ ] \u73B0\u573A\u7B14\u8BB0\u8C03\u5EA6\u5668 (\u5173)"}}});var v6,m6;var c6=k(()=>{v6={view:{workspace:"Workspace",archives:"Archives"},header:{projects:"PROJECTS",tasks:"TASKS"},search:{placeholder:"fuzzy filter"},sort:"sort",project:{taskSingular:"task",taskPlural:"tasks"},moveChip:" move",empty:{noMatchSearch:"No matching tasks \u2014 esc to clear.",noActiveProject:"No active tasks for this project.",noArchivedProject:"No archived tasks for this project.",noActive:"No active tasks \u2014 press n or [+] to create one.",noArchived:"No archived tasks."},archiveHint:"a to unarchive",status:{done:"done",inReview:"in review",working:"working",backlog:"\u2014",canceled:"canceled",error:"error"},activity:{rateLimited:"rate limited",permissionNeeded:"needs permission",error:"error"},subtitle:{noTracking:"no activity tracking",materializing:"materializing"},hints:{headerFolded:"\u2500\u2500 keys ?\u25B8 \u2500\u2500",headerUnfolded:"\u2500\u2500 keys ?\u25BE \u2500\u2500",fullHelp:"full help",newTask:"new task",settings:"settings",open:"open",focusEngine:"focus engine",openWorktree:"open wt",delete:"delete",views:"views",project:"project",movePanes:"move panes",detach:"tasks\u2192detach",splits:"splits",panes:"panes",reorder:"reorder",done:"done"},toast:{noDaemonWorktree:"No daemon running \u2014 can't create the worktree",noDaemonOpen:"No daemon running \u2014 can't open this task",noEditor:"No editor found \u2014 set KOBE_OPEN_EDITOR (e.g. 'code', 'cursor', 'nvim')",openWorktreeFailed:"Couldn't open worktree with {label}",sessionStartFailed:"Couldn't start this task's session",moveTaskFailed:"Couldn't move task: {message}",alreadyLatest:"Already on the latest version (v{version})",worktreeErrorNotGit:"This project isn't a git repo yet \u2014 a task needs a git branch. Run `git init` (+ a first commit) in the project, then open the task. Non-git support is coming.",worktreeErrorGeneric:"Couldn't create the worktree: {message}"}},m6={view:{workspace:"\u5DE5\u4F5C\u533A",archives:"\u5F52\u6863"},header:{projects:"\u9879\u76EE",tasks:"\u4EFB\u52A1"},search:{placeholder:"\u6A21\u7CCA\u641C\u7D22"},sort:"\u6392\u5E8F",project:{taskSingular:"\u4E2A\u4EFB\u52A1",taskPlural:"\u4E2A\u4EFB\u52A1"},moveChip:" \u79FB\u52A8",empty:{noMatchSearch:"\u65E0\u5339\u914D\u4EFB\u52A1\u2014\u2014\u6309 esc \u6E05\u9664\u3002",noActiveProject:"\u8BE5\u9879\u76EE\u6682\u65E0\u6D3B\u8DC3\u4EFB\u52A1\u3002",noArchivedProject:"\u8BE5\u9879\u76EE\u6682\u65E0\u5F52\u6863\u4EFB\u52A1\u3002",noActive:"\u6682\u65E0\u6D3B\u8DC3\u4EFB\u52A1\u2014\u2014\u6309 n \u6216 [+] \u65B0\u5EFA\u3002",noArchived:"\u6682\u65E0\u5F52\u6863\u4EFB\u52A1\u3002"},archiveHint:"a \u53D6\u6D88\u5F52\u6863",status:{done:"\u5DF2\u5B8C\u6210",inReview:"\u5BA1\u6838\u4E2D",working:"\u8FDB\u884C\u4E2D",backlog:"\u2014",canceled:"\u5DF2\u53D6\u6D88",error:"\u9519\u8BEF"},activity:{rateLimited:"\u8BF7\u6C42\u53D7\u9650",permissionNeeded:"\u7B49\u5F85\u6388\u6743",error:"\u9519\u8BEF"},subtitle:{noTracking:"\u4E0D\u8DDF\u8E2A\u6D3B\u52A8",materializing:"\u6B63\u5728\u521B\u5EFA worktree"},hints:{headerFolded:"\u2500\u2500 \u5FEB\u6377\u952E ?\u25B8 \u2500\u2500",headerUnfolded:"\u2500\u2500 \u5FEB\u6377\u952E ?\u25BE \u2500\u2500",fullHelp:"\u5B8C\u6574\u5E2E\u52A9",newTask:"\u65B0\u5EFA\u4EFB\u52A1",settings:"\u8BBE\u7F6E",open:"\u6253\u5F00",focusEngine:"\u805A\u7126\u5F15\u64CE",openWorktree:"\u6253\u5F00 worktree",delete:"\u5220\u9664",views:"\u89C6\u56FE",project:"\u9879\u76EE",movePanes:"\u79FB\u52A8\u9762\u677F",detach:"\u4EFB\u52A1\u2192\u5206\u79BB",splits:"\u5206\u5272",panes:"\u9762\u677F",reorder:"\u91CD\u65B0\u6392\u5E8F",done:"\u5B8C\u6210"},toast:{noDaemonWorktree:"\u5B88\u62A4\u8FDB\u7A0B\u672A\u8FD0\u884C\u2014\u2014\u65E0\u6CD5\u521B\u5EFA worktree",noDaemonOpen:"\u5B88\u62A4\u8FDB\u7A0B\u672A\u8FD0\u884C\u2014\u2014\u65E0\u6CD5\u6253\u5F00\u6B64\u4EFB\u52A1",noEditor:"\u672A\u627E\u5230\u7F16\u8F91\u5668\u2014\u2014\u8BF7\u8BBE\u7F6E KOBE_OPEN_EDITOR\uFF08\u5982 'code'\u3001'cursor'\u3001'nvim'\uFF09",openWorktreeFailed:"\u65E0\u6CD5\u7528 {label} \u6253\u5F00 worktree",sessionStartFailed:"\u65E0\u6CD5\u542F\u52A8\u6B64\u4EFB\u52A1\u7684\u4F1A\u8BDD",moveTaskFailed:"\u65E0\u6CD5\u79FB\u52A8\u4EFB\u52A1\uFF1A{message}",alreadyLatest:"\u5DF2\u662F\u6700\u65B0\u7248\u672C\uFF08v{version}\uFF09",worktreeErrorNotGit:"\u8BE5\u9879\u76EE\u5C1A\u975E git \u4ED3\u5E93\u2014\u2014\u4EFB\u52A1\u9700\u8981 git \u5206\u652F\u3002\u8BF7\u5728\u9879\u76EE\u4E2D\u6267\u884C `git init`\uFF08+ \u9996\u6B21\u63D0\u4EA4\uFF09\u540E\u518D\u6253\u5F00\u4EFB\u52A1\u3002\u975E git \u9879\u76EE\u7684\u652F\u6301\u5373\u5C06\u63A8\u51FA\u3002",worktreeErrorGeneric:"\u65E0\u6CD5\u521B\u5EFA worktree\uFF1A{message}"}}});var n6,d6;var i6=k(()=>{n6={pageTitle:"KOBE UPDATE",current:"current",latest:"latest",releaseUrlUnavailable:"release URL unavailable",statusReleaseOpened:"Opened release page in your browser.",statusReleaseError:"Could not open release URL.",statusRunningUpdater:"Leaving the TUI page and running the updater in this tmux window...",loadingNotes:"Loading release notes...",notesUnavailable:"Release notes are unavailable. Use Open release to view the GitHub release page.",changesSectionHeader:"\u2500\u2500 changes from v{from} to v{to} \u2500\u2500",updateComplete:"kobe update complete. Relaunch kobe to use the new version.",updateFailed:"kobe update failed with exit code {code}.",pressAnyKey:"Press any key to close this update window.",actions:{updateNow:"Update now",openRelease:"Open release",close:"Close",closeDetail:"return to the previous tmux window"},skew:{title:"\u26A0 DAEMON OUT OF DATE",olderBuild:"an older build",hint:"daemon is {daemon} \u2014 you launched v{clientVersion}. Run `kobe daemon restart` then `kobe reload`"}},d6={pageTitle:"KOBE \u66F4\u65B0",current:"\u5F53\u524D",latest:"\u6700\u65B0",releaseUrlUnavailable:"\u53D1\u5E03\u94FE\u63A5\u4E0D\u53EF\u7528",statusReleaseOpened:"\u5DF2\u5728\u6D4F\u89C8\u5668\u4E2D\u6253\u5F00\u53D1\u5E03\u8BF4\u660E\u9875\u9762\u3002",statusReleaseError:"\u65E0\u6CD5\u6253\u5F00\u53D1\u5E03\u94FE\u63A5\u3002",statusRunningUpdater:"\u6B63\u5728\u79BB\u5F00 TUI \u9875\u9762\uFF0C\u5E76\u5728\u6B64 tmux \u7A97\u53E3\u4E2D\u8FD0\u884C\u66F4\u65B0\u7A0B\u5E8F\u2026\u2026",loadingNotes:"\u6B63\u5728\u52A0\u8F7D\u53D1\u5E03\u8BF4\u660E\u2026\u2026",notesUnavailable:"\u53D1\u5E03\u8BF4\u660E\u4E0D\u53EF\u7528\u3002\u8BF7\u4F7F\u7528\u300C\u6253\u5F00\u53D1\u5E03\u9875\u300D\u67E5\u770B GitHub \u53D1\u5E03\u9875\u9762\u3002",changesSectionHeader:"\u2500\u2500 v{from} \u81F3 v{to} \u7684\u53D8\u66F4 \u2500\u2500",updateComplete:"kobe \u66F4\u65B0\u5B8C\u6210\u3002\u8BF7\u91CD\u65B0\u542F\u52A8 kobe \u4EE5\u4F7F\u7528\u65B0\u7248\u672C\u3002",updateFailed:"kobe \u66F4\u65B0\u5931\u8D25\uFF0C\u9000\u51FA\u7801\u4E3A {code}\u3002",pressAnyKey:"\u6309\u4EFB\u610F\u952E\u5173\u95ED\u6B64\u66F4\u65B0\u7A97\u53E3\u3002",actions:{updateNow:"\u7ACB\u5373\u66F4\u65B0",openRelease:"\u6253\u5F00\u53D1\u5E03\u9875",close:"\u5173\u95ED",closeDetail:"\u8FD4\u56DE\u4E0A\u4E00\u4E2A tmux \u7A97\u53E3"},skew:{title:"\u26A0 DAEMON \u7248\u672C\u4E0D\u4E00\u81F4",olderBuild:"\u65E7\u7248\u672C\u6784\u5EFA",hint:"daemon \u8FD0\u884C\u7684\u662F {daemon}\uFF0C\u800C\u4F60\u542F\u52A8\u7684\u662F v{clientVersion}\u3002\u8BF7\u8FD0\u884C `kobe daemon restart` \u518D\u8FD0\u884C `kobe reload`"}}});function EX(f){return typeof f==="string"&&bz.some((J)=>J.id===f)}var wN,hN,bz,kG,NG="en";var yG=k(()=>{D6();F6();g6();k6();b6();T6();x6();P6();c6();i6();wN={settings:w6,tasks:v6,files:L6,newTask:N6,ops:S6,update:n6,quickTask:u6,help:O6,common:K6,keys:R6},hN={settings:h6,tasks:m6,files:M6,newTask:y6,ops:I6,update:d6,quickTask:E6,help:A6,common:U6,keys:C6},bz=[{id:"en",label:"English"},{id:"zh",label:"\u4E2D\u6587"}],kG={en:wN,zh:hN}});function xX(f){if(kG[f])PN("lang",f)}function oj(){return _j.lang}function l6(f,J){let Y=f;for(let z of J.split("."))if(Y&&typeof Y==="object"&&z in Y)Y=Y[z];else return;return typeof Y==="string"?Y:void 0}function vN(f,J){if(!J)return f;return f.replace(/\{(\w+)\}/g,(Y,z)=>(z in J)?String(J[z]):Y)}function F(f,J){let Y=_j.lang,z=l6(kG[Y],f)??l6(kG.en,f)??f;return vN(z,J)}function sj(f,J){let Y=_j.lang,z=(G)=>{return G.keys[f]?.[J]};return z(kG[Y])??z(kG.en)??J}var _j,PN;var G1=k(()=>{CG();yG();yG();[_j,PN]=uJ({lang:NG})});function mN(f){let J=[],Y=f.name;if(Y)J.push(Y);if(Y==="return")J.push("enter");if(Y==="enter")J.push("return");let z=[];if(f.ctrl)z.push("ctrl");if(f.meta)z.push("cmd");if(f.option)z.push("alt");if(f.shift&&Y&&Y.length>1)z.push("shift");if(z.length===0)return J;let G=`${z.join("+")}+`;return J.map((X)=>G+X)}function tj(f,J){if(J.defaultPrevented)return!1;let Y=mN(J);for(let z=f.length-1;z>=0;z--){let G=f[z];if(!G)continue;let X=G.config();if(X.enabled===!1)continue;let q=X.bindings.find((Q)=>Y.includes(Q.key));if(q)return q.cmd(J,q.slot),J.preventDefault(),!0}return!1}function nN(){if(ej)return;let f=Y1();if(!f)throw Error("useBindings: no renderer in scope; call inside a component rendered by @opentui/solid.");ej=f.keyInput,a6=(J)=>{tj(UQ,J)},ej.on("keypress",a6)}function Uf(f){nN();let J=cN++,Y={config:f,id:J};zf(()=>{f()}),UQ.push(Y),mf(()=>{let z=UQ.findIndex((G)=>G.id===J);if(z>=0)UQ.splice(z,1)})}var cN=1,UQ,ej=null,a6=null;var b1=k(()=>{h();Wf();UQ=[]});import{RGBA as $6}from"@opentui/core";function lN(f){let J=TJ(),Y=i0(),{theme:z}=Y,G=Y1(),X=!1,q=()=>{if(f.size==="xlarge")return 140;if(f.size==="large")return 110;if(f.size==="small")return 50;return 80},Q=2,H=()=>Math.max(8,J().height-Q*2);return(()=>{var B=W("box"),V=W("box");return D(B,V),Z(B,"onMouseDown",()=>{X=!!G?.getSelection()}),Z(B,"onMouseUp",()=>{if(X){X=!1;return}f.onClose?.()}),Z(B,"alignItems","center"),Z(B,"justifyContent","center"),Z(B,"position","absolute"),Z(B,"zIndex",3000),Z(B,"left",0),Z(B,"top",0),Z(V,"onMouseUp",(j)=>{X=!1,j.stopPropagation()}),Z(V,"flexShrink",1),Z(V,"flexGrow",0),Z(V,"paddingTop",1),K(V,()=>f.children),u((j)=>{var U=J().width,L=J().height,O=Y.transparentBackground?iN:dN,M=q(),R=J().width-2,S=H(),a=z.backgroundDialog;return U!==j.e&&(j.e=Z(B,"width",U,j.e)),L!==j.t&&(j.t=Z(B,"height",L,j.t)),O!==j.a&&(j.a=Z(B,"backgroundColor",O,j.a)),M!==j.o&&(j.o=Z(V,"width",M,j.o)),R!==j.i&&(j.i=Z(V,"maxWidth",R,j.i)),S!==j.n&&(j.n=Z(V,"maxHeight",S,j.n)),a!==j.s&&(j.s=Z(V,"backgroundColor",a,j.s)),j},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),B})()}function aN(){let[f,J]=uJ({stack:[],size:"medium"}),Y=Y1(),z=null;function G(){setTimeout(()=>{if(!z)return;if(z.isDestroyed)return;function X(Q){for(let H of Q.getChildren()){if(H===z)return!0;if(X(H))return!0}return!1}let q=Y?.root;if(!q)return;if(!X(q))return;z.focus()},1)}return Uf(()=>({enabled:f.stack.length>0&&!Y?.getSelection()?.getSelectedText(),bindings:[{key:"escape",cmd:()=>{if(Y?.getSelection())Y.clearSelection();f.stack.at(-1)?.onClose?.(),J("stack",f.stack.slice(0,-1)),G()}},{key:"ctrl+c",cmd:()=>{if(Y?.getSelection())Y.clearSelection();f.stack.at(-1)?.onClose?.(),J("stack",f.stack.slice(0,-1)),G()}}]})),{clear(){for(let X of f.stack)X.onClose?.();UZ(()=>{J("size","medium"),J("stack",[])}),G()},replace(X,q){if(f.stack.length===0)z=Y?.currentFocusedRenderable??null,z?.blur();for(let Q of f.stack)Q.onClose?.();J("size","medium"),J("stack",[{element:X,onClose:q}])},push(X,q){if(f.stack.length===0)z=Y?.currentFocusedRenderable??null,z?.blur();J("stack",[...f.stack,{element:X,onClose:q}])},pop(){if(f.stack.at(-1)?.onClose?.(),J("stack",f.stack.slice(0,-1)),f.stack.length===0)G()},get stack(){return f.stack},get size(){return f.size},setSize(X){J("size",X)}}}function p6(f){let J=aN();return b(r6.Provider,{value:J,get children(){return[I0(()=>f.children),(()=>{var Y=W("box");return Z(Y,"position","absolute"),Z(Y,"zIndex",3000),K(Y,b(X0,{get when(){return J.stack.length},get children(){return b(lN,{onClose:()=>J.clear(),get size(){return J.size},get children(){return J.stack.at(-1).element()}})}})),Y})()]}})}function vf(){let f=u1(r6);if(!f)throw Error("useDialog must be used within a DialogProvider");return f}var dN,iN,r6;var P1=k(()=>{h();h();h();h();h();h();h();h();Wf();CG();xf();b1();dN=$6.fromInts(0,0,0,128),iN=$6.fromInts(0,0,0,64);r6=gJ()});import{spawnSync as f8}from"child_process";import*as o6 from"fs";function _6(f){return`This folder isn't a git repository yet, and a task needs a git branch to work in. To fix it, turn ${f} into a repo: git init && git add -A && git commit -m "init" \u2014 then create the task again. (Working in non-git folders is coming soon.)`}function s6(f){let J=f.trim();if(!J)return"repo path is required";let Y;try{Y=o6.statSync(J)}catch{return`path does not exist: ${J}`}if(!Y.isDirectory())return`not a directory: ${J}`;try{if(f8("git",["rev-parse","--git-dir"],{cwd:J,encoding:"utf-8",timeout:2000,stdio:["ignore","pipe","ignore"]}).status!==0)return _6(J)}catch{return _6(J)}return null}function wX(f){if(!f)return null;try{let J=f8("git",["rev-parse","--abbrev-ref","HEAD"],{cwd:f,encoding:"utf-8",timeout:2000,stdio:["ignore","pipe","ignore"]});if(J.status!==0)return null;let Y=J.stdout.trim();if(!Y||Y==="HEAD")return null;return Y}catch{return null}}function t6(f){if(!f)return[];try{let J=f8("git",["for-each-ref","--format=%(refname:short)","refs/heads/"],{cwd:f,encoding:"utf-8",timeout:2000});if(J.status!==0)return[];return J.stdout.split(`
|
|
223
|
+
`).map((Y)=>Y.trim()).filter(Boolean).sort((Y,z)=>{let G=(Q)=>Q==="main"?0:Q==="master"?1:Q==="develop"?2:3,X=G(Y),q=G(z);if(X!==q)return X-q;return Y.localeCompare(z)})}catch{return[]}}var LJ="main";var DQ=()=>{};import*as e6 from"fs";import*as LQ from"os";function V1(f){if(f==="~")return LQ.homedir();if(f.startsWith("~/"))return LQ.homedir()+f.slice(1);return f}function J8(f){if(!f)return{base:"",filter:""};let Y=V1(f==="~"?"~/":f);if(Y.endsWith("/"))return{base:Y,filter:""};let z=Y.lastIndexOf("/");if(z===-1)return{base:"",filter:Y};return{base:Y.slice(0,z+1),filter:Y.slice(z+1)}}function Y8(f){if(!f)return[];try{let J=e6.readdirSync(f,{withFileTypes:!0}),Y=[];for(let z of J)if(z.isDirectory())Y.push(z.name);return Y.sort((z,G)=>z.localeCompare(G))}catch{return[]}}function z8(f,J){let Y=J.toLowerCase(),G=Y.startsWith(".")?f:f.filter((X)=>!X.startsWith("."));if(!Y)return G;return G.filter((X)=>X.toLowerCase().startsWith(Y))}function hX(f,J,Y){let z=J+Y;if(f.startsWith("~")){let G=LQ.homedir();if(z===G)return"~";if(z.startsWith(`${G}/`))return`~${z.slice(G.length)}`}return z}var MQ=()=>{};import{spawn as $N}from"child_process";import*as Sz from"fs";import*as PX from"path";function f4(f){let J=f.trim().replace(/\/+$/,"");if(!J)return"";let Y=J.lastIndexOf("/"),z=J.lastIndexOf(":"),G=Math.max(Y,z);return(G>=0?J.slice(G+1):J).replace(/\.git$/i,"")}function J4(f){let J=f.trim();if(!J)return F("newTask.error.gitUrlRequired");let Y=J.includes("://"),z=J.includes("@")&&J.includes(":"),G=J.includes("/");if(!Y&&!z&&!G)return F("newTask.error.gitUrlInvalid",{url:J});return null}function Y4(f,J){let Y=J.trim();if(!Y)return F("newTask.error.folderRequired");if(Y.includes("/")||Y.includes("\\"))return F("newTask.error.folderHasSeparator");let z=f.trim();if(!z)return F("newTask.error.parentRequired");let G=V1(z),X;try{X=Sz.statSync(G)}catch{return F("newTask.error.parentNotFound",{path:G})}if(!X.isDirectory())return F("newTask.error.parentNotDir",{path:G});let q=PX.join(G,Y);if(Sz.existsSync(q))return F("newTask.error.targetExists",{path:q});return null}function z4(f,J){return PX.join(V1(f.trim()),J.trim())}function G4(f,J){let Y=J.trim();if(!Y)return J;let z=V1(f.trim());if(!z)return J;try{if(!Sz.statSync(z).isDirectory())return J}catch{return J}if(!Sz.existsSync(PX.join(z,Y)))return Y;for(let G=2;G<1000;G++){let X=`${Y}-${G}`;if(!Sz.existsSync(PX.join(z,X)))return X}return Y}function X4(f,J,Y){return new Promise((z)=>{let G="";try{let X=$N("git",["clone","--progress",f,J],{stdio:["ignore","ignore","pipe"]});X.stderr?.setEncoding("utf-8"),X.stderr?.on("data",(q)=>{if(G+=q,Y){let Q=q.split(/[\r\n]+/).filter((B)=>B.trim().length>0),H=Q[Q.length-1];if(H)Y(H)}}),X.on("error",(q)=>{z({ok:!1,error:q.message})}),X.on("close",(q)=>{if(q===0){z({ok:!0,path:J});return}let Q=G.split(/[\r\n]+/).filter((H)=>H.trim().length>0).pop()??`git clone exited with ${q}`;z({ok:!1,error:Q})})}catch(X){z({ok:!1,error:X instanceof Error?X.message:String(X)})}})}var Z4=k(()=>{G1();MQ()});function FQ(f){if(f==="existing")return"clone";if(f==="clone")return"adopt";return"existing"}function q4(f){if(f==="existing")return"adopt";if(f==="clone")return"existing";return"clone"}function Q4(f,J){let Y=f.trim();if(J.includes(Y))return"saved";if(Y.startsWith("~"))return"browse";if(Y.includes("/"))return"browse";return"saved"}function X1(f){return f.replace(/[\r\n]+/g,"")}function G8(f,J="existing"){if(f==="confirm")return"tabs";if(f==="tabs")return"engine";if(f==="engine")return X8(J);if(J==="clone"){if(f==="cloneUrl")return"cloneParent";if(f==="cloneParent")return"cloneFolder";if(f==="cloneFolder")return"cloneBaseRef";if(f==="cloneBaseRef")return"confirm";return"cloneUrl"}if(J==="adopt")return f==="adoptFilter"?"confirm":"adoptFilter";if(f==="repo")return"baseRef";if(f==="baseRef")return"confirm";return"repo"}function X8(f){if(f==="clone")return"cloneUrl";if(f==="adopt")return"adoptFilter";return"repo"}function H4(f,J){let Y=J.trim();if(!Y)return f;return f.filter((z)=>_X(Y,z.path))}function B4(f,J){let Y=new Set,z=[];for(let G of[f,...J]){let X=G.trim();if(!X||Y.has(X))continue;Y.add(X),z.push(X)}return z}function j4(f,J){let Y=J.trim().toLowerCase();if(!Y)return f;return f.filter((z)=>z.toLowerCase().includes(Y))}function W4(f,J){let Y=J.trim().toLowerCase();if(!Y)return f;return f.filter((z)=>z.toLowerCase().includes(Y))}function vX(f,J,Y=rN){let z=f.length;if(z<=Y)return{items:f,start:0,total:z};let G=Math.floor(Y/2),X=Math.max(0,J-G);if(X+Y>z)X=z-Y;return{items:f.slice(X,X+Y),start:X,total:z}}function EJ(f,J){if(J<=0)return 0;return Math.max(0,Math.min(J-1,f))}function V4(f,J,Y){let z=J[Y];if(z)return z;return f.trim()||LJ}var rN=8;var Z8=k(()=>{mQ();DQ()});import{TextAttributes as _1}from"@opentui/core";function K4(f){let J=vf(),{theme:Y}=i0(),[z,G]=r("existing"),X=()=>{let d=f.availableVendors;return d&&d.length>0?d:cf},q=(()=>{let d=X(),s=f.defaultVendor??"claude";return d.includes(s)?s:d[0]??"claude"})(),[Q,H]=r(q),[B,V]=r("tabs"),[j,U]=r(f.defaultRepo),[L,O]=r(wX(V1(f.defaultRepo.trim()))??LJ),[M,R]=r(!1),[S,a]=r(""),[N,g]=r(f.defaultCloneParent?.trim()?f.defaultCloneParent:"~/"),[C,y]=r(""),[_,z0]=r(!1),[t,Y0]=r(LJ),[T,Q0]=r(!1),[p,D0]=r(""),g0=U0(()=>B4(f.defaultRepo,f.savedRepos)),$=U0(()=>Q4(j(),g0())),E=U0(()=>J8(j())),f0=U0(()=>Y8(E().base)),I=U0(()=>z8(f0(),E().filter)),G0=U0(()=>j4(g0(),j())),x=U0(()=>$()==="browse"?I():G0()),[c,Z0]=r(0),V0=U0(()=>vX(x(),c())),[H0,y0]=r(!1),w0=U0(()=>t6(V1(j().trim()))),T0=U0(()=>W4(w0(),L())),[r0,P]=r(0),M0=U0(()=>vX(T0(),r0())),J0=U0(()=>J8(N())),F0=U0(()=>Y8(J0().base)),a0=U0(()=>z8(F0(),J0().filter)),[p0,u0]=r(0),_0=U0(()=>vX(a0(),p0())),[n,q0]=r(!1),[b0,o0]=r(""),[l0,$0]=r(0),[t0,Rf]=r(new Set),[gf]=KZ(()=>z()==="adopt"?V1(j().trim()):null,async(d)=>f.discoverAdoptable?await f.discoverAdoptable(d):[]),o=U0(()=>H4(gf()??[],b0())),e=U0(()=>vX(o().map((d)=>d.path),l0())),B0=U0(()=>{let d=e();return o().slice(d.start,d.start+d.items.length)});zf(()=>{o(),$0((d)=>EJ(d,o().length))});function C0(d){Rf((s)=>{let S0=new Set(s);if(S0.has(d))S0.delete(d);else S0.add(d);return S0})}function A(){let d=o()[l0()];if(d)C0(d.path)}zf(()=>{T0(),P(0)}),zf(()=>{let d=V1(j().trim());if(!d)return;if(M())return;let s=wX(d);if(s)O(s)}),zf(()=>{x(),Z0(0)}),zf(()=>{a0(),u0(0)}),zf(()=>{let d=S(),s=N();if(_())return;let S0=f4(d);y(G4(s,S0))});let[P0,K0]=r(null);zf(()=>{j(),S(),N(),C(),b0(),K0(null)});function E0(){let d=V1(j().trim());if(!d)return;let s=s6(d);if(s){K0(s),V("repo");return}let S0=L().trim()||LJ;f.onSubmit({repo:d,baseRef:S0,vendor:Q()}),J.clear()}async function W0(){if(T())return;let d=J4(S());if(d){K0(d),V("cloneUrl");return}let s=Y4(N(),C());if(s){K0(s),V(C().trim()?"cloneParent":"cloneFolder");return}let S0=z4(N(),C());Q0(!0),D0(F("newTask.clone.progressInto",{target:S0}));let N0=await X4(S().trim(),S0,(tf)=>{D0(tf)});if(Q0(!1),!N0.ok){K0(F("newTask.error.cloneFailed",{error:N0.error})),V("cloneUrl");return}let Z1=t().trim()||LJ,K1=V1(N().trim());f.onSubmit({repo:N0.path,baseRef:Z1,vendor:Q(),cloned:{parentDir:K1}}),J.clear()}function L0(){let d=o();if(d.length===0){K0(F("newTask.error.noAdoptable"));return}let s=t0(),S0=s.size>0?d.filter((N0)=>s.has(N0.path)):d.slice(l0(),l0()+1);if(S0.length===0)return;f.onSubmit({mode:"adopt",repo:V1(j().trim()),vendor:Q(),adopt:S0.map((N0)=>({worktreePath:N0.path,branch:N0.branch}))}),J.clear()}function R0(){if(z()==="clone"){W0();return}if(z()==="adopt"){L0();return}E0()}function Jf(d){if(T())return;if(d===z())return;G(d),V(X8(d)),K0(null)}function Yf(d){if(T())return;let s=d===1?FQ(z()):q4(z());if(s===z())return;G(s),K0(null),V("tabs")}function n0(d){H((s)=>d===1?qY(X(),s):cQ(X(),s))}function yf(){if(!j().trim()&&$()==="saved"){let s=x()[0];if(s){U(s),V("baseRef");return}}if($()==="browse"){let S0=I()[c()],N0=E();if(S0){U(hX(j(),N0.base,S0)),Z0(0),y0(!0),V("baseRef");return}V("baseRef");return}let d=x()[c()];if(d){U(d),V("baseRef");return}V("baseRef")}function k0(d){let S0=x()[d];if(!S0)return;if($()==="browse"){let N0=E();U(hX(j(),N0.base,S0)),Z0(d),y0(!0),V("baseRef");return}U(S0),Z0(d),V("baseRef")}function wf(){let s=a0()[p0()],S0=J0();if(s){g(hX(N(),S0.base,s)),u0(0),q0(!0),V("cloneFolder");return}V("cloneFolder")}function v(d){let S0=a0()[d];if(!S0)return;let N0=J0();g(hX(N(),N0.base,S0)),u0(d),q0(!0),V("cloneFolder")}let A0=()=>{let d=o();if(d.length===0)return;let s=d.every((S0)=>t0().has(S0.path));Rf(s?new Set:new Set(d.map((S0)=>S0.path)))};Uf(()=>({bindings:[{key:"tab",cmd:()=>V((d)=>G8(d,z()))},{key:"ctrl+]",cmd:()=>Jf(FQ(z()))},{key:"ctrl+[",cmd:()=>Jf(FQ(z()))},{key:"ctrl+e",cmd:()=>H((d)=>qY(X(),d))},{key:"up",cmd:()=>{if(T())return;if(z()==="existing"&&B()==="repo"){let d=x();if(d.length===0)return;Z0(EJ(c()-1,d.length));return}if(z()==="existing"&&B()==="baseRef"){let d=T0();if(d.length===0)return;P(EJ(r0()-1,d.length));return}if(z()==="clone"&&B()==="cloneParent"){let d=a0();if(d.length===0)return;u0(EJ(p0()-1,d.length));return}if(z()==="adopt"){let d=o();if(d.length===0)return;$0(EJ(l0()-1,d.length))}}},{key:"down",cmd:()=>{if(T())return;if(z()==="existing"&&B()==="repo"){let d=x();if(d.length===0)return;Z0(EJ(c()+1,d.length));return}if(z()==="existing"&&B()==="baseRef"){let d=T0();if(d.length===0)return;P(EJ(r0()+1,d.length));return}if(z()==="clone"&&B()==="cloneParent"){let d=a0();if(d.length===0)return;u0(EJ(p0()+1,d.length));return}if(z()==="adopt"){let d=o();if(d.length===0)return;$0(EJ(l0()+1,d.length))}}},...B()==="tabs"||B()==="engine"?[{key:"left",cmd:()=>B()==="tabs"?Yf(-1):n0(-1)},{key:"right",cmd:()=>B()==="tabs"?Yf(1):n0(1)},{key:"return",cmd:()=>V((d)=>G8(d,z()))}]:[],...z()==="adopt"?[{key:"ctrl+a",cmd:A0}]:[]]})),Uf(()=>({enabled:B()==="confirm"&&!T(),bindings:[{key:"return",cmd:()=>R0()}]}));let Bf=(d)=>B()===d?Y.primary:Y.textMuted,Ff=(d)=>B()===d?_1.BOLD|_1.UNDERLINE:void 0,Qf=(d,s)=>d?s?_1.BOLD|_1.UNDERLINE:_1.BOLD:void 0;return(()=>{var d=W("box"),s=W("box"),S0=W("text"),N0=W("box"),Z1=W("box"),K1=W("text"),tf=W("box"),v1=W("box"),xJ=W("text"),M1=W("box"),wJ=W("text"),XY=W("text");return D(d,s),D(d,N0),D(d,M1),Z(d,"paddingLeft",2),Z(d,"paddingRight",2),Z(d,"gap",0),D(s,S0),Z(s,"flexDirection","row"),K(S0,()=>F("newTask.title")),D(N0,Z1),Z(N0,"gap",1),Z(N0,"paddingTop",1),Z(N0,"paddingBottom",1),K(N0,()=>{let m=()=>B()==="tabs",i=(l)=>l?Y.primary:Y.textMuted;return(()=>{var l=W("box"),w=W("text"),m0=W("text"),v0=W("text");return D(l,w),D(l,m0),D(l,v0),Z(l,"flexDirection","row"),Z(l,"gap",2),Z(w,"onMouseUp",()=>Jf("existing")),K(w,(()=>{var O0=I0(()=>z()==="existing");return()=>O0()?`\u25B8 ${F("newTask.tabs.existing")}`:` ${F("newTask.tabs.existing")}`})()),Z(m0,"onMouseUp",()=>Jf("clone")),K(m0,(()=>{var O0=I0(()=>z()==="clone");return()=>O0()?`\u25B8 ${F("newTask.tabs.clone")}`:` ${F("newTask.tabs.clone")}`})()),Z(v0,"onMouseUp",()=>Jf("adopt")),K(v0,(()=>{var O0=I0(()=>z()==="adopt");return()=>O0()?`\u25B8 ${F("newTask.tabs.adopt")}`:` ${F("newTask.tabs.adopt")}`})()),u((O0)=>{var c0=i(z()==="existing"),qf=Qf(z()==="existing",m()),Df=i(z()==="clone"),q1=Qf(z()==="clone",m()),s1=i(z()==="adopt"),ZY=Qf(z()==="adopt",m());return c0!==O0.e&&(O0.e=Z(w,"fg",c0,O0.e)),qf!==O0.t&&(O0.t=Z(w,"attributes",qf,O0.t)),Df!==O0.a&&(O0.a=Z(m0,"fg",Df,O0.a)),q1!==O0.o&&(O0.o=Z(m0,"attributes",q1,O0.o)),s1!==O0.i&&(O0.i=Z(v0,"fg",s1,O0.i)),ZY!==O0.n&&(O0.n=Z(v0,"attributes",ZY,O0.n)),O0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),l})()},Z1),D(Z1,K1),D(Z1,tf),Z(Z1,"gap",0),K(K1,()=>F("newTask.field.engine")),D(tf,v1),D(tf,xJ),Z(tf,"flexDirection","row"),Z(tf,"gap",2),K(tf,b(Zf,{get each(){return X()},children:(m)=>{let i=()=>Q()===m;return(()=>{var l=W("text");return Z(l,"onMouseUp",()=>H(m)),K(l,()=>i()?"\u25B8 ":" ",null),K(l,m,null),u((w)=>{var m0=i()?Y.primary:Y.textMuted,v0=i()?_1.BOLD:void 0;return m0!==w.e&&(w.e=Z(l,"fg",m0,w.e)),v0!==w.t&&(w.t=Z(l,"attributes",v0,w.t)),w},{e:void 0,t:void 0}),l})()}}),v1),Z(v1,"flexGrow",1),K(xJ,()=>F("newTask.hint.engineCycle")),K(N0,b(X0,{get when(){return z()==="existing"},get children(){return[(()=>{var m=W("box"),i=W("text"),l=W("input");return D(m,i),D(m,l),Z(m,"gap",0),K(i,()=>F("newTask.field.repo")),Z(l,"onInput",(w)=>{y0(!1),U(X1(w))}),Z(l,"onSubmit",()=>{if(!j().trim())return;yf()}),u((w)=>{var m0=Bf("repo"),v0=Ff("repo"),O0=j(),c0=f.defaultRepo,qf=B()==="repo";return m0!==w.e&&(w.e=Z(i,"fg",m0,w.e)),v0!==w.t&&(w.t=Z(i,"attributes",v0,w.t)),O0!==w.a&&(w.a=Z(l,"value",O0,w.a)),c0!==w.o&&(w.o=Z(l,"placeholder",c0,w.o)),qf!==w.i&&(w.i=Z(l,"focused",qf,w.i)),w},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),m})(),b(X0,{get when(){return I0(()=>B()==="repo"&&x().length>0)()&&!H0()},get children(){var m=W("box");return Z(m,"gap",0),Z(m,"paddingLeft",2),K(m,b(X0,{get when(){return V0().start>0},get children(){var i=W("text");return Z(i,"wrapMode","none"),K(i,()=>F("newTask.picker.moreAbove",{count:V0().start})),u((l)=>Z(i,"fg",Y.textMuted,l)),i}}),null),K(m,b(Zf,{get each(){return V0().items},children:(i,l)=>{let w=()=>V0().start+l(),m0=()=>w()===c(),v0=()=>$()==="saved"&&i===f.defaultRepo,O0=()=>$()==="saved"&&j().trim()===i,c0=()=>$()==="browse"?"/":"",qf=()=>v0()?` ${F("newTask.hint.currentDir")}`:"";return(()=>{var Df=W("text");return Z(Df,"wrapMode","none"),Z(Df,"onMouseUp",()=>k0(w())),K(Df,()=>m0()?"\u25B8 ":" ",null),K(Df,i,null),K(Df,c0,null),K(Df,qf,null),u((q1)=>{var s1=m0()?Y.primary:O0()?Y.accent:Y.textMuted,ZY=m0()?_1.BOLD:void 0;return s1!==q1.e&&(q1.e=Z(Df,"fg",s1,q1.e)),ZY!==q1.t&&(q1.t=Z(Df,"attributes",ZY,q1.t)),q1},{e:void 0,t:void 0}),Df})()}}),null),K(m,b(X0,{get when(){return V0().start+V0().items.length<V0().total},get children(){var i=W("text");return Z(i,"wrapMode","none"),K(i,()=>F("newTask.picker.moreBelow",{count:V0().total-V0().start-V0().items.length})),u((l)=>Z(i,"fg",Y.textMuted,l)),i}}),null),m}}),(()=>{var m=W("box"),i=W("text"),l=W("input");return D(m,i),D(m,l),Z(m,"gap",0),K(i,()=>F("newTask.field.fromBranch")),Z(l,"placeholder",LJ),Z(l,"onInput",(w)=>{R(!0),O(X1(w))}),Z(l,"onSubmit",()=>{O(V4(L(),T0(),r0())),R(!0),E0()}),u((w)=>{var m0=Bf("baseRef"),v0=Ff("baseRef"),O0=L(),c0=B()==="baseRef";return m0!==w.e&&(w.e=Z(i,"fg",m0,w.e)),v0!==w.t&&(w.t=Z(i,"attributes",v0,w.t)),O0!==w.a&&(w.a=Z(l,"value",O0,w.a)),c0!==w.o&&(w.o=Z(l,"focused",c0,w.o)),w},{e:void 0,t:void 0,a:void 0,o:void 0}),m})(),b(X0,{get when(){return I0(()=>B()==="baseRef"&&T0().length===0)()&&P0()==null},get children(){var m=W("box"),i=W("text");return D(m,i),Z(m,"gap",0),Z(m,"paddingLeft",2),Z(m,"paddingBottom",1),Z(i,"wrapMode","none"),K(i,(()=>{var l=I0(()=>w0().length===0);return()=>l()?F("newTask.hint.noBranchesFound"):F("newTask.hint.noMatchBranch")})()),u((l)=>Z(i,"fg",Y.textMuted,l)),m}}),b(X0,{get when(){return I0(()=>B()==="baseRef")()&&T0().length>0},get children(){var m=W("box");return Z(m,"gap",0),Z(m,"paddingLeft",2),Z(m,"paddingBottom",1),K(m,b(X0,{get when(){return M0().start>0},get children(){var i=W("text");return Z(i,"wrapMode","none"),K(i,()=>F("newTask.picker.moreAbove",{count:M0().start})),u((l)=>Z(i,"fg",Y.textMuted,l)),i}}),null),K(m,b(Zf,{get each(){return M0().items},children:(i,l)=>{let w=()=>M0().start+l(),m0=()=>w()===r0(),v0=()=>L().trim()===i;return(()=>{var O0=W("text");return Z(O0,"wrapMode","none"),Z(O0,"onMouseUp",()=>{O(i),R(!0),P(w()),V("confirm")}),K(O0,()=>m0()?"\u25B8 ":" ",null),K(O0,i,null),u((c0)=>{var qf=m0()?Y.primary:v0()?Y.accent:Y.textMuted,Df=m0()?_1.BOLD:void 0;return qf!==c0.e&&(c0.e=Z(O0,"fg",qf,c0.e)),Df!==c0.t&&(c0.t=Z(O0,"attributes",Df,c0.t)),c0},{e:void 0,t:void 0}),O0})()}}),null),K(m,b(X0,{get when(){return M0().start+M0().items.length<M0().total},get children(){var i=W("text");return Z(i,"wrapMode","none"),K(i,()=>F("newTask.picker.moreBelow",{count:M0().total-M0().start-M0().items.length})),u((l)=>Z(i,"fg",Y.textMuted,l)),i}}),null),m}})]}}),null),K(N0,b(X0,{get when(){return z()==="clone"},get children(){return[(()=>{var m=W("box"),i=W("text"),l=W("input");return D(m,i),D(m,l),Z(m,"gap",0),K(i,()=>F("newTask.field.gitUrl")),Z(l,"placeholder","https://github.com/user/repo.git"),Z(l,"onInput",(w)=>a(X1(w))),Z(l,"onSubmit",()=>{if(!S().trim())return;V("cloneParent")}),u((w)=>{var m0=Bf("cloneUrl"),v0=Ff("cloneUrl"),O0=S(),c0=B()==="cloneUrl";return m0!==w.e&&(w.e=Z(i,"fg",m0,w.e)),v0!==w.t&&(w.t=Z(i,"attributes",v0,w.t)),O0!==w.a&&(w.a=Z(l,"value",O0,w.a)),c0!==w.o&&(w.o=Z(l,"focused",c0,w.o)),w},{e:void 0,t:void 0,a:void 0,o:void 0}),m})(),(()=>{var m=W("box"),i=W("text"),l=W("input");return D(m,i),D(m,l),Z(m,"gap",0),K(i,()=>F("newTask.field.parentDir")),Z(l,"placeholder","~/"),Z(l,"onInput",(w)=>{q0(!1),g(X1(w))}),Z(l,"onSubmit",()=>wf()),u((w)=>{var m0=Bf("cloneParent"),v0=Ff("cloneParent"),O0=N(),c0=B()==="cloneParent";return m0!==w.e&&(w.e=Z(i,"fg",m0,w.e)),v0!==w.t&&(w.t=Z(i,"attributes",v0,w.t)),O0!==w.a&&(w.a=Z(l,"value",O0,w.a)),c0!==w.o&&(w.o=Z(l,"focused",c0,w.o)),w},{e:void 0,t:void 0,a:void 0,o:void 0}),m})(),b(X0,{get when(){return B()==="cloneParent"},get children(){var m=W("box"),i=W("text");return D(m,i),Z(m,"paddingLeft",2),Z(i,"wrapMode","none"),K(i,()=>F("newTask.hint.remembered")),u((l)=>Z(i,"fg",Y.textMuted,l)),m}}),b(X0,{get when(){return I0(()=>B()==="cloneParent"&&a0().length>0)()&&!n()},get children(){var m=W("box");return Z(m,"gap",0),Z(m,"paddingLeft",2),K(m,b(X0,{get when(){return _0().start>0},get children(){var i=W("text");return Z(i,"wrapMode","none"),K(i,()=>F("newTask.picker.moreAbove",{count:_0().start})),u((l)=>Z(i,"fg",Y.textMuted,l)),i}}),null),K(m,b(Zf,{get each(){return _0().items},children:(i,l)=>{let w=()=>_0().start+l(),m0=()=>w()===p0();return(()=>{var v0=W("text"),O0=x0("/");return D(v0,O0),Z(v0,"wrapMode","none"),Z(v0,"onMouseUp",()=>v(w())),K(v0,()=>m0()?"\u25B8 ":" ",O0),K(v0,i,O0),u((c0)=>{var qf=m0()?Y.primary:Y.textMuted,Df=m0()?_1.BOLD:void 0;return qf!==c0.e&&(c0.e=Z(v0,"fg",qf,c0.e)),Df!==c0.t&&(c0.t=Z(v0,"attributes",Df,c0.t)),c0},{e:void 0,t:void 0}),v0})()}}),null),K(m,b(X0,{get when(){return _0().start+_0().items.length<_0().total},get children(){var i=W("text");return Z(i,"wrapMode","none"),K(i,()=>F("newTask.picker.moreBelow",{count:_0().total-_0().start-_0().items.length})),u((l)=>Z(i,"fg",Y.textMuted,l)),i}}),null),m}}),(()=>{var m=W("box"),i=W("text"),l=W("input");return D(m,i),D(m,l),Z(m,"gap",0),K(i,()=>F("newTask.field.folderName")),Z(l,"onInput",(w)=>{z0(!0),y(X1(w))}),Z(l,"onSubmit",()=>V("cloneBaseRef")),u((w)=>{var m0=Bf("cloneFolder"),v0=Ff("cloneFolder"),O0=C(),c0=F("newTask.placeholder.folderName"),qf=B()==="cloneFolder";return m0!==w.e&&(w.e=Z(i,"fg",m0,w.e)),v0!==w.t&&(w.t=Z(i,"attributes",v0,w.t)),O0!==w.a&&(w.a=Z(l,"value",O0,w.a)),c0!==w.o&&(w.o=Z(l,"placeholder",c0,w.o)),qf!==w.i&&(w.i=Z(l,"focused",qf,w.i)),w},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),m})(),(()=>{var m=W("box"),i=W("text"),l=W("input");return D(m,i),D(m,l),Z(m,"gap",0),K(i,()=>F("newTask.field.baseBranch")),Z(l,"placeholder",LJ),Z(l,"onInput",(w)=>Y0(X1(w))),Z(l,"onSubmit",()=>void W0()),u((w)=>{var m0=Bf("cloneBaseRef"),v0=Ff("cloneBaseRef"),O0=t(),c0=B()==="cloneBaseRef";return m0!==w.e&&(w.e=Z(i,"fg",m0,w.e)),v0!==w.t&&(w.t=Z(i,"attributes",v0,w.t)),O0!==w.a&&(w.a=Z(l,"value",O0,w.a)),c0!==w.o&&(w.o=Z(l,"focused",c0,w.o)),w},{e:void 0,t:void 0,a:void 0,o:void 0}),m})(),b(X0,{get when(){return T()},get children(){var m=W("box"),i=W("text");return D(m,i),Z(m,"gap",0),Z(m,"paddingLeft",2),Z(i,"wrapMode","none"),K(i,()=>p()||F("newTask.clone.progressFallback")),u((l)=>Z(i,"fg",Y.textMuted,l)),m}})]}}),null),K(N0,b(X0,{get when(){return z()==="adopt"},get children(){return[(()=>{var m=W("box"),i=W("text"),l=W("input");return D(m,i),D(m,l),Z(m,"gap",0),K(i,()=>F("newTask.field.adoptFilter")),Z(l,"onInput",(w)=>o0(X1(w))),Z(l,"onSubmit",()=>A()),u((w)=>{var m0=Bf("adoptFilter"),v0=Ff("adoptFilter"),O0=b0(),c0=F("newTask.placeholder.adoptFilter"),qf=B()==="adoptFilter";return m0!==w.e&&(w.e=Z(i,"fg",m0,w.e)),v0!==w.t&&(w.t=Z(i,"attributes",v0,w.t)),O0!==w.a&&(w.a=Z(l,"value",O0,w.a)),c0!==w.o&&(w.o=Z(l,"placeholder",c0,w.o)),qf!==w.i&&(w.i=Z(l,"focused",qf,w.i)),w},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),m})(),(()=>{var m=W("box"),i=W("text");return D(m,i),Z(m,"paddingLeft",2),Z(i,"wrapMode","none"),K(i,()=>F("newTask.adopt.repoLine",{path:V1(j().trim())||F("newTask.adopt.repoNone")})),u((l)=>Z(i,"fg",Y.textMuted,l)),m})(),b(X0,{get when(){return gf.loading},get children(){var m=W("box"),i=W("text");return D(m,i),Z(m,"paddingLeft",2),Z(i,"wrapMode","none"),K(i,()=>F("newTask.hint.scanningWorktrees")),u((l)=>Z(i,"fg",Y.textMuted,l)),m}}),b(X0,{get when(){return I0(()=>!gf.loading)()&&o().length===0},get children(){var m=W("box"),i=W("text");return D(m,i),Z(m,"paddingLeft",2),Z(i,"wrapMode","none"),K(i,(()=>{var l=I0(()=>(gf()??[]).length===0);return()=>l()?F("newTask.adopt.noUnlinked"):F("newTask.adopt.noMatch")})()),u((l)=>Z(i,"fg",Y.textMuted,l)),m}}),b(X0,{get when(){return o().length>0},get children(){var m=W("box"),i=W("text");return D(m,i),Z(m,"gap",0),Z(m,"paddingLeft",2),K(m,b(X0,{get when(){return e().start>0},get children(){var l=W("text");return Z(l,"wrapMode","none"),K(l,()=>F("newTask.picker.moreAbove",{count:e().start})),u((w)=>Z(l,"fg",Y.textMuted,w)),l}}),i),K(m,b(Zf,{get each(){return B0()},children:(l,w)=>{let m0=()=>e().start+w(),v0=()=>m0()===l0(),O0=()=>t0().has(l.path),c0=()=>[l.dirty?"dirty":"",l.kobeManaged?"":"external"].filter(Boolean).join(",");return(()=>{var qf=W("text");return Z(qf,"wrapMode","none"),Z(qf,"onMouseUp",()=>{$0(m0()),C0(l.path)}),K(qf,()=>v0()?"\u25B8 ":" ",null),K(qf,()=>O0()?"[x] ":"[ ] ",null),K(qf,()=>l.branch,null),K(qf,(()=>{var Df=I0(()=>!!c0());return()=>Df()?` (${c0()})`:""})(),null),u((Df)=>{var q1=v0()?Y.primary:O0()?Y.accent:Y.textMuted,s1=v0()?_1.BOLD:void 0;return q1!==Df.e&&(Df.e=Z(qf,"fg",q1,Df.e)),s1!==Df.t&&(Df.t=Z(qf,"attributes",s1,Df.t)),Df},{e:void 0,t:void 0}),qf})()}}),i),K(m,b(X0,{get when(){return e().start+e().items.length<e().total},get children(){var l=W("text");return Z(l,"wrapMode","none"),K(l,()=>F("newTask.picker.moreBelow",{count:e().total-e().start-e().items.length})),u((w)=>Z(l,"fg",Y.textMuted,w)),l}}),i),Z(i,"wrapMode","none"),K(i,(()=>{var l=I0(()=>t0().size>0);return()=>l()?F("newTask.adopt.hintSelected",{count:t0().size}):F("newTask.adopt.hintDefault")})()),u((l)=>Z(i,"fg",Y.textMuted,l)),m}})]}}),null),K(N0,b(X0,{get when(){return P0()},get children(){var m=W("text"),i=x0("\u203B ");return D(m,i),Z(m,"wrapMode","word"),K(m,P0,null),u((l)=>Z(m,"fg",Y.error,l)),m}}),null),D(M1,wJ),D(M1,XY),Z(M1,"flexDirection","row"),Z(M1,"justifyContent","space-between"),Z(M1,"alignItems","center"),Z(M1,"paddingTop",1),Z(M1,"paddingBottom",1),K(wJ,()=>F("newTask.hint.legend")),Z(XY,"onMouseUp",()=>R0()),K(XY,(()=>{var m=I0(()=>!!T());return()=>m()?F("newTask.button.cloning"):I0(()=>B()==="confirm")()?F("newTask.button.createFocused"):F("newTask.button.create")})()),u((m)=>{var i=_1.BOLD,l=Y.text,w=Bf("engine"),m0=Ff("engine"),v0=Y.textMuted,O0=Y.textMuted,c0=B()==="confirm"?Y.primary:Y.text,qf=B()==="confirm"?_1.BOLD:void 0;return i!==m.e&&(m.e=Z(S0,"attributes",i,m.e)),l!==m.t&&(m.t=Z(S0,"fg",l,m.t)),w!==m.a&&(m.a=Z(K1,"fg",w,m.a)),m0!==m.o&&(m.o=Z(K1,"attributes",m0,m.o)),v0!==m.i&&(m.i=Z(xJ,"fg",v0,m.i)),O0!==m.n&&(m.n=Z(wJ,"fg",O0,m.n)),c0!==m.s&&(m.s=Z(XY,"fg",c0,m.s)),qf!==m.h&&(m.h=Z(XY,"attributes",qf,m.h)),m},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0}),d})()}var U4=k(()=>{h();h();h();h();h();h();h();h();G1();U1();Wf();xf();DQ();b1();MQ();P1();Z4();Z8()});function pN(f,J,Y,z){return new Promise((G)=>{f.replace(()=>b(K4,{defaultRepo:J,savedRepos:Y,get defaultCloneParent(){return z?.defaultCloneParent},get defaultVendor(){return z?.defaultVendor},get availableVendors(){return z?.availableVendors},get discoverAdoptable(){return z?.discoverAdoptable},onSubmit:(X)=>G(X),onCancel:()=>G(void 0)}),()=>G(void 0)),f.setSize("medium")})}var OQ;var bG=k(()=>{h();U4();Z8();OQ={show:pN}});function D4(f,J){return[{key:"tab",cmd:()=>J.cycleField(1)},{key:"shift+tab",cmd:()=>J.cycleField(-1)},{key:"ctrl+e",cmd:()=>J.stepEngine(1)},...f==="engine"?[{key:"left",cmd:()=>J.stepEngine(-1)},{key:"right",cmd:()=>J.stepEngine(1)},{key:"return",cmd:()=>J.commit()}]:[]]}import{TextAttributes as L4}from"@opentui/core";function _N(f){let J=vf(),{theme:Y}=i0(),[z,G]=r("prompt"),[X,q]=r(""),[Q,H]=r(f.defaultVendor),[B,V]=r(f.defaultBaseRef);function j(M){let R=AQ.indexOf(z());G(AQ[(R+M+AQ.length)%AQ.length]??"prompt")}function U(M){let R=f.engines;if(R.length===0)return;if(M>0){H((a)=>qY(R,a));return}let S=Math.max(0,R.indexOf(Q()));H(R[(S-1+R.length)%R.length]??Q())}function L(){let M=X().trim();if(!M){G("prompt");return}f.onSubmit({prompt:M,vendor:Q(),baseRef:B().trim()||f.defaultBaseRef}),J.clear()}Uf(()=>({enabled:!0,bindings:D4(z(),{cycleField:j,stepEngine:U,commit:L})}));let O=(M)=>z()===M?Y.accent:Y.textMuted;return(()=>{var M=W("box"),R=W("box"),S=W("text"),a=W("text"),N=W("box"),g=W("text"),C=W("input"),y=W("box"),_=W("text"),z0=W("box"),t=W("text"),Y0=W("input"),T=W("box"),Q0=W("text");return D(M,R),D(M,N),D(M,y),D(M,z0),D(M,T),Z(M,"paddingLeft",2),Z(M,"paddingRight",2),Z(M,"gap",1),D(R,S),D(R,a),Z(R,"flexDirection","row"),Z(R,"justifyContent","space-between"),K(S,()=>F("quickTask.title",{repoLabel:f.repoLabel})),Z(a,"onMouseUp",()=>f.onCancel()),K(a,()=>F("quickTask.esc")),D(N,g),D(N,C),Z(N,"gap",0),K(g,()=>F("quickTask.promptLabel")),Z(C,"onInput",(p)=>q(X1(p))),Z(C,"onSubmit",()=>L()),D(y,_),Z(y,"flexDirection","row"),Z(y,"gap",2),K(_,()=>F("quickTask.engineLabel")),K(y,b(Zf,{get each(){return f.engines},children:(p)=>(()=>{var D0=W("text");return Z(D0,"onMouseUp",()=>{H(p),G("engine")}),K(D0,()=>f.engineLabel(p)),u((g0)=>{var $=Q()===p?Y.primary:Y.textMuted,E=Q()===p?L4.BOLD:void 0;return $!==g0.e&&(g0.e=Z(D0,"fg",$,g0.e)),E!==g0.t&&(g0.t=Z(D0,"attributes",E,g0.t)),g0},{e:void 0,t:void 0}),D0})()}),null),D(z0,t),D(z0,Y0),Z(z0,"gap",0),K(t,()=>F("quickTask.branchLabel")),Z(Y0,"onInput",(p)=>V(X1(p))),Z(Y0,"onSubmit",()=>L()),D(T,Q0),Z(T,"paddingBottom",1),K(Q0,()=>F("quickTask.legend")),u((p)=>{var D0=L4.BOLD,g0=Y.text,$=Y.textMuted,E=O("prompt"),f0=X(),I=F("quickTask.promptPlaceholder"),G0=z()==="prompt",x=O("engine"),c=O("branch"),Z0=B(),V0=f.defaultBaseRef,H0=z()==="branch",y0=Y.textMuted;return D0!==p.e&&(p.e=Z(S,"attributes",D0,p.e)),g0!==p.t&&(p.t=Z(S,"fg",g0,p.t)),$!==p.a&&(p.a=Z(a,"fg",$,p.a)),E!==p.o&&(p.o=Z(g,"fg",E,p.o)),f0!==p.i&&(p.i=Z(C,"value",f0,p.i)),I!==p.n&&(p.n=Z(C,"placeholder",I,p.n)),G0!==p.s&&(p.s=Z(C,"focused",G0,p.s)),x!==p.h&&(p.h=Z(_,"fg",x,p.h)),c!==p.r&&(p.r=Z(t,"fg",c,p.r)),Z0!==p.d&&(p.d=Z(Y0,"value",Z0,p.d)),V0!==p.l&&(p.l=Z(Y0,"placeholder",V0,p.l)),H0!==p.u&&(p.u=Z(Y0,"focused",H0,p.u)),y0!==p.c&&(p.c=Z(Q0,"fg",y0,p.c)),p},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0}),M})()}function oN(f,J){return new Promise((Y)=>{f.replace(()=>b(_N,eU(J,{onSubmit:(z)=>Y(z),onCancel:()=>Y(void 0)})),()=>Y(void 0)),f.setSize("medium")})}var AQ,M4;var F4=k(()=>{h();h();h();h();h();h();h();Wf();U1();xf();G1();b1();P1();bG();AQ=["prompt","engine","branch"];M4={show:oN}});async function O4(f={}){let J=f.logTag??"orch-connect",Y=f.connect??p1,z=null;try{let G=await Y();if(!G)return iJ(J,"no daemon running \u2014 caller degrades"),null;return z=new W1(G,{...f.orchestratorOptions,channels:f.channels}),await z.init(),z}catch(G){return WY(J,G),z?.dispose(),null}}var A4=k(()=>{eY();y1();PY()});function g4(f){let[J,Y]=r(f.initial??"sidebar"),[z,G]=r(0),X=Y1();function q(j){if(G((L)=>L+1),J()===j)return;let U=X?.currentFocusedRenderable;if(U&&!U.isDestroyed)try{U.blur()}catch{}Y(j)}function Q(j){let L=(gQ.indexOf(J())+j+gQ.length)%gQ.length;q(gQ[L])}let H=new Map;function B(j){let U=H.get(j);if(!U)U=()=>J()===j,H.set(j,U);return U}let V={focused:J,is:B,setFocused:q,cycle:Q,refocusTick:z};return b(sN.Provider,{value:V,get children(){return f.children}})}var gQ,sN;var R4=k(()=>{h();h();Wf();gQ=["sidebar","workspace","files","terminal"],sN=gJ(null)});function C4(){for(let f of vY){let J=tN.get(f.id);if(!J)continue;let Y=f;Y.keys=[...J.keys],Y.hint=J.hint?{...J.hint}:void 0}}function k4(){eN((f)=>f+1)}function Q8(f){return fy.get(f)}function Jy(f){return Q8(f)?.keys??[]}function mY(f){let J=[];for(let Y in f){let z=f[Y];if(!z)continue;let G=Jy(Y);if(G.length===0){console.warn(`[kobe/keybindings] bindByIds: id="${Y}" has no chords (or doesn't exist in KobeKeymap)`);continue}G.forEach((X,q)=>J.push({key:X,cmd:z,slot:q}))}return J}var vY,tN,q8,eN,fy;var SG=k(()=>{Wf();vY=[{id:"help.open",scope:"global",keys:["f1"],category:"Global",description:"Show keybindings help",hint:{keys:"F1",label:"help",pin:"right"}},{id:"task.new",scope:"sidebar",keys:["n"],category:"Sidebar",description:"New task",hint:{keys:"n",label:"new"}},{id:"task.openEditor",scope:"global",keys:["ctrl+o"],category:"Global",description:"Open active task worktree in editor"},{id:"settings.open",scope:"global",keys:["ctrl+,"],category:"Global",description:"Open settings"},{id:"settings.open.sidebar",scope:"sidebar",keys:["s"],category:"Sidebar",description:"Open settings",hint:{keys:"s",label:"settings",status:!1}},{id:"app.quit",scope:"sidebar",keys:["q"],category:"Sidebar",description:"Quit (with confirm)",hint:{keys:"q",label:"quit",status:!1}},{id:"focus.sidebar",scope:"workspace",keys:["ctrl+q"],category:"Workspace",description:"Back to sidebar (tasks)",hint:{keys:"ctrl+q",label:"tasks"}},{id:"focus.numeric",scope:"global",keys:["ctrl+h","ctrl+j","ctrl+k","ctrl+l"],category:"Navigation",description:"Jump to pane (h=sidebar, j=workspace, k=files, l=terminal)",hint:{keys:"ctrl+hjkl",label:"focus",pin:"right",status:!1}},{id:"chat.interrupt",scope:"workspace",keys:[],category:"Workspace",description:"Interrupt current turn (esc while streaming)"},{id:"sidebar.nav",scope:"sidebar",keys:["j","k","down","up"],category:"Sidebar",description:"Move cursor up/down",hint:{keys:"j/k",label:"nav"}},{id:"sidebar.select",scope:"sidebar",keys:["return"],category:"Sidebar",description:"Open the selected task",hint:{keys:"enter",label:"select"}},{id:"sidebar.goto",scope:"sidebar",keys:["g"],category:"Sidebar",description:"Top / bottom of list (gg or shift-G)"},{id:"sidebar.rename",scope:"sidebar",keys:["r"],category:"Sidebar",description:"Rename task",hint:{keys:"r",label:"rename",status:!1}},{id:"sidebar.archive",scope:"sidebar",keys:["a"],category:"Sidebar",description:"Toggle archive",hint:{keys:"a",label:"archive",status:!1}},{id:"sidebar.localMerge",scope:"sidebar",keys:["m"],category:"Sidebar",description:"Local merge task into parent repo (Shift+M)",hint:{keys:"M",label:"merge",status:!1}},{id:"sidebar.pin",scope:"sidebar",keys:["p"],category:"Sidebar",description:"Pin / unpin task at top (Shift+P)",hint:{keys:"P",label:"pin",status:!1}},{id:"sidebar.view",scope:"sidebar",keys:["[","]"],category:"Sidebar",description:"Switch view (Working session \u2194 Archives)",hint:{keys:"[/]",label:"view",status:!1}},{id:"sidebar.sort",scope:"sidebar",keys:["t"],category:"Sidebar",description:"Switch task sort (default \u2194 recent)",hint:{keys:"t",label:"sort",status:!1}},{id:"sidebar.projectFilter",scope:"sidebar",keys:["ctrl+p"],category:"Sidebar",description:"Cycle task project filter",hint:{keys:"ctrl+p",label:"project",status:!1}},{id:"sidebar.delete",scope:"sidebar",keys:["d"],category:"Sidebar",description:"Delete task (with confirm)",hint:{keys:"d",label:"delete",status:!1}},{id:"sidebar.search.enter",scope:"sidebar",keys:["/"],category:"Sidebar",description:"Search tasks (fuzzy filter)",hint:{keys:"/",label:"search"}},{id:"sidebar.search.nav",scope:"sidebar",keys:["down","up"],category:"Sidebar",description:"Move highlight in search results"},{id:"sidebar.search.submit",scope:"sidebar",keys:["return"],category:"Sidebar",description:"Select search match and exit search"},{id:"sidebar.search.cancel",scope:"sidebar",keys:["escape"],category:"Sidebar",description:"Cancel search (restore prior selection)"},{id:"tasks.openWorktree",scope:"sidebar",keys:["o"],category:"Tasks pane",description:"Open selected task's worktree in your editor",hint:{keys:"o",label:"open wt",status:!1}},{id:"tasks.renameBranch",scope:"sidebar",keys:["b"],category:"Tasks pane",description:"Rename the selected task's git branch",hint:{keys:"b",label:"branch",status:!1}},{id:"tasks.cycleEngine",scope:"sidebar",keys:["v"],category:"Tasks pane",description:"Cycle engine vendor (claude \u2194 codex \u2194 \u2026) \u2014 applies on reopen",hint:{keys:"v",label:"engine",status:!1}},{id:"tasks.update",scope:"sidebar",keys:["u"],category:"Tasks pane",description:"Open the update page (when a new version is available)",hint:{keys:"u",label:"update",status:!1}},{id:"tasks.focusEngine",scope:"sidebar",keys:["right"],category:"Tasks pane",description:"Focus the engine pane of the current window",hint:{keys:"\u2192",label:"engine",status:!1}},{id:"tasks.toggleKeys",scope:"sidebar",keys:["?"],category:"Tasks pane",description:"Collapse / expand the keys legend",hint:{keys:"?",label:"fold keys",status:!1}},{id:"tmux.quickTask",scope:"global",keys:[],category:"Workspace (tmux)",description:"Quick new task (tmux prefix, then f)",hint:{keys:"prefix f",label:"new task",status:!1}},{id:"tmux.engineTab",scope:"global",keys:[],category:"Workspace (tmux)",description:"Open the engine in a new tab (tmux prefix, then t)",hint:{keys:"prefix t",label:"engine tab",status:!1}},{id:"tmux.layout.workspaceSplit",scope:"global",keys:[],category:"Workspace (tmux)",description:"Add a temporary workspace split (tmux prefix, then s)",hint:{keys:"prefix s",label:"split",status:!1}},{id:"tmux.layout.workspaceClose",scope:"global",keys:[],category:"Workspace (tmux)",description:"Close the focused temporary workspace split (tmux prefix, then x)",hint:{keys:"prefix x",label:"close split",status:!1}},{id:"tmux.layout.workspaceReset",scope:"global",keys:[],category:"Workspace (tmux)",description:"Close all temporary workspace splits (tmux prefix, then r)",hint:{keys:"prefix r",label:"reset splits",status:!1}},{id:"tmux.layout.tasksToggle",scope:"global",keys:[],category:"Workspace (tmux)",description:"Hide / restore the Tasks pane (tmux prefix, then a)",hint:{keys:"prefix a",label:"tasks pane",status:!1}},{id:"tmux.layout.opsToggle",scope:"global",keys:[],category:"Workspace (tmux)",description:"Toggle the file/Ops pane (tmux prefix, then o)",hint:{keys:"prefix o",label:"file pane",status:!1}},{id:"tmux.layout.terminalToggle",scope:"global",keys:[],category:"Workspace (tmux)",description:"Hide / restore the terminal pane (tmux prefix, then z)",hint:{keys:"prefix z",label:"terminal",status:!1}},{id:"tmux.layout.zenToggle",scope:"global",keys:[],category:"Workspace (tmux)",description:"Zen mode \u2014 collapse to the engine pane (tmux prefix, then space)",hint:{keys:"prefix space",label:"zen",status:!1}},{id:"chat.send",scope:"workspace",keys:[],category:"Workspace",description:"Send message (composer)",hint:{keys:"enter",label:"send"}},{id:"chat.newline",scope:"workspace",keys:[],category:"Workspace",description:"Newline in composer",hint:{keys:"shift+enter",label:"newline"}},{id:"chat.cycle-mode",scope:"workspace",keys:[],category:"Workspace",description:"Cycle permission mode (composer)",hint:{keys:"shift+tab",label:"mode"}},{id:"chat.steer",scope:"workspace",keys:[],category:"Workspace",description:"Steer (interrupt + send) \u2014 mid-stream only",hint:{keys:"ctrl+enter",label:"steer",status:!1}},{id:"chat.tab.new",scope:"workspace",keys:["ctrl+t"],category:"Workspace",description:"New chat tab",hint:{keys:"ctrl+t",label:"new tab"}},{id:"chat.fork.new",scope:"workspace",keys:["ctrl+f"],category:"Workspace",description:"Quick-fork: create child task seeded with current repo/branch/model",hint:{keys:"ctrl+f",label:"fork"}},{id:"chat.session.resume",scope:"workspace",keys:["ctrl+y"],category:"Workspace",description:"Resume a prior session in this task's worktree",hint:{keys:"ctrl+y",label:"resume",status:!1}},{id:"chat.tab.close",scope:"workspace",keys:["ctrl+w"],category:"Workspace",description:"Close chat tab",hint:{keys:"ctrl+w",label:"close tab",status:!1}},{id:"chat.tab.rename",scope:"workspace",keys:["f2"],category:"Workspace",description:"Rename active chat tab",hint:{keys:"f2",label:"rename tab",status:!1}},{id:"chat.tab.cycle-next",scope:"workspace",keys:["ctrl+]"],category:"Workspace",description:"Next chat tab",hint:{keys:"ctrl+]",label:"next tab",status:!1}},{id:"chat.tab.cycle-prev",scope:"workspace",keys:["ctrl+["],category:"Workspace",description:"Previous chat tab",hint:{keys:"ctrl+[",label:"prev tab",status:!1}},{id:"chat.question.nav",scope:"workspace",keys:["j","k","down","up"],category:"Workspace",description:"Move highlight in question picker",hint:{keys:"j/k",label:"pick",status:!1}},{id:"chat.question.toggle",scope:"workspace",keys:["space"],category:"Workspace",description:"Toggle highlighted option in question picker",hint:{keys:"space",label:"toggle",status:!1}},{id:"chat.question.submit",scope:"workspace",keys:["return"],category:"Workspace",description:"Advance / submit question picker",hint:{keys:"enter",label:"submit",status:!1}},{id:"chat.question.pick-number",scope:"workspace",keys:["1","2","3","4","5","6","7","8","9"],category:"Workspace",description:"Pick option by number in question picker",hint:{keys:"1-9",label:"pick",status:!1}},{id:"files.nav",scope:"files",keys:["j","k","down","up"],category:"Files",description:"Move cursor up/down",hint:{keys:"j/k",label:"nav"}},{id:"files.hierarchy",scope:"files",keys:["h","l","left","right"],category:"Files",description:"Collapse / expand tree level",hint:{keys:"h/l",label:"level"}},{id:"files.open",scope:"files",keys:["return"],category:"Files",description:"Open file in nvim (diff vs HEAD when changed)",hint:{keys:"enter",label:"open"}},{id:"files.tab",scope:"files",keys:["[","]"],category:"Files",description:"Switch tab (cycle All / Changes)",hint:{keys:"[/]",label:"tab",status:!1}},{id:"files.refresh",scope:"files",keys:["r"],category:"Files",description:"Refresh",hint:{keys:"r",label:"refresh",status:!1}},{id:"files.openExternal",scope:"files",keys:["o"],category:"Files",description:"Open file in system default app (audio / video / pdf preview)",hint:{keys:"o",label:"open external",status:!1}},{id:"files.mention",scope:"files",keys:["a"],category:"Files",description:"Inject @<path> mention into the engine pane",hint:{keys:"a",label:"@mention"}},{id:"files.createPR",scope:"files",keys:["p"],category:"Files",description:"Create PR from the current task",hint:{keys:"p",label:"create PR"}},{id:"terminal.scroll-up",scope:"terminal",keys:["ctrl+pageup"],category:"Terminal",description:"Scroll scrollback up",hint:{keys:"ctrl+pgup",label:"scroll",status:!1}},{id:"terminal.scroll-down",scope:"terminal",keys:["ctrl+pagedown"],category:"Terminal",description:"Scroll scrollback down"},{id:"terminal.reset",scope:"terminal",keys:["f5"],category:"Terminal",description:"Reset terminal \u2014 kill the current shell and respawn",hint:{keys:"f5",label:"reset"}},{id:"dialog.cancel",scope:"global",keys:[],category:"Dialog",description:"Close the top dialog (esc)"},{id:"dialog.newtask.tab.cycle",scope:"global",keys:[],category:"Dialog",description:"Switch New Task tab (Existing / New Repo)",hint:{keys:"ctrl+[/]",label:"tab"}}],tN=new Map(vY.map((f)=>[f.id,{keys:[...f.keys],hint:f.hint?{...f.hint}:void 0}]));[q8,eN]=r(0);fy=new Map(vY.map((f)=>[f.id,f]))});function RQ(){if(cY)return cY;let f=Mq();if(!f.exists)return cY={path:f.path,exists:!1,applied:[],warnings:[]},cY;let J=[...f.warnings],Y=Oq(f.doc,process.platform,{chordOptsFor:PB});J.push(...Y.warnings);let z=Y.entries.filter((Q)=>Q.id.startsWith("tmux.")),G=Y.entries.filter((Q)=>!Q.id.startsWith("tmux.")),X=n7(vY,G);J.push(...X.warnings);let q=[...X.applied];if(z.length>0){let Q=hB(z);J.push(...Q.warnings);for(let H of Q.overridden){if(H===SJ){q.push({id:H,keys:Q.focus.map((j)=>j?.chord??"").filter((j)=>j!==""),defaultKeys:yY});continue}let B=Q.binds[H];q.push({id:H,keys:B?[B.chord]:[],defaultKeys:[Oz[H]]});let V=vY.find((j)=>j.id===H);if(V?.hint)V.hint.keys=B?`${ZG(H)?"prefix ":""}${B.chord}`:"\u2014"}}for(let Q of J)console.warn(`[kobe/keybindings] ${Q}`);return cY={path:f.path,exists:!0,applied:q,warnings:J},cY}function N4(){return cY??RQ()}function y4(){cY=null,c7(),a7(),C4();let f=RQ();return k4(),f}var cY=null;var H8=k(()=>{xB();Rq();Aq();SG()});var Yy=250,IG,b4;var mX=k(()=>{CG();pY();$j();({use:IG,provider:b4}=KQ({name:"KV",init:()=>{let[f,J]=uJ(nf()),Y=new Set,z=null;function G(Q){if(Y.size===0)return!0;try{let H={};for(let B of Y)H[B]=f[B];return rY(H),Y.clear(),!0}catch(H){return console.error(`[kobe] kv ${Q} failed:`,H),!1}}function X(){if(z)clearTimeout(z);z=setTimeout(()=>{z=null,G("write")},Yy)}let q={get ready(){return!0},get store(){return f},signal(Q,H){if(f[Q]===void 0)J(Q,H);return[()=>q.get(Q),(B)=>q.set(Q,B)]},get(Q,H){return f[Q]??H},set(Q,H){J(Q,H),Y.add(Q),X()},flush(){if(z)clearTimeout(z),z=null;return G("flush")},clear(){for(let Q of Object.keys(f))J(Q,void 0);if(z)clearTimeout(z),z=null;Y.clear();try{L9({})}catch(Q){console.error("[kobe] kv clear write failed:",Q)}}};return q}}))});var CQ="../pulse-n3cq1btw.wav";var S4=()=>{};import{existsSync as Gy,mkdirSync as Xy}from"fs";import{tmpdir as Zy}from"os";import{basename as qy,isAbsolute as Qy,join as B8,resolve as Hy}from"path";function jy(f,J,Y){if(f==="ffplay")return[f,"-autoexit","-nodisp","-af",`volume=${Y}`,J];if(f==="mpv")return[f,"--no-video","--audio-display=no","--volume",String(Math.round(Y*100)),J];if(f==="mpg123"||f==="mpg321")return[f,"-g",String(Math.round(Y*100)),J];if(f==="mplayer")return[f,"-vo","null","-volume",String(Math.round(Y*100)),J];if(f==="afplay"||f==="omxplayer"||f==="aplay"||f==="cmdmp3")return[f,J];if(f==="play")return[f,"-v",String(Y),J];if(f==="cvlc")return[f,`--gain=${Y}`,"--play-and-exit",J];return[f,"-c",`(New-Object Media.SoundPlayer '${J.replace(/'/g,"''")}').PlaySync()`]}function Wy(){if(kQ!==void 0)return kQ;let J=(process.env.PATH??"").split(":").filter(Boolean);return kQ=By.find((Y)=>J.some((z)=>Gy(B8(z,Y))))??null,kQ}async function Vy(){return u4??=(async()=>{Xy(T4,{recursive:!0});let f=B8(T4,qy(I4)),J=Bun.file(f);if(await J.exists())return f;return await Bun.write(J,Bun.file(I4)),f})(),u4}function E4(f=0.4){let J=Wy();if(!J)return;Vy().then((Y)=>{try{Bun.spawn(jy(J,Y,f),{stdin:"ignore",stdout:"ignore",stderr:"ignore"}).unref?.()}catch{}}).catch(()=>{return})}var I4,T4,By,kQ,u4;var x4=k(()=>{S4();I4=Qy(CQ)?CQ:Hy(import.meta.dir,CQ),T4=B8(Zy(),"kobe-sfx"),By=["ffplay","mpv","mpg123","mpg321","mplayer","afplay","play","omxplayer","aplay","cmdmp3","cvlc","powershell.exe"]});function w4(f,J){return`${f}:${J}`}function P4(f){let J=IG(),[Y,z]=r([]),[G,X]=r(new Map),q=0;function Q(j){if(X((U)=>{let L=new Map(U),O=w4(j.taskId,j.tabId),M=U.get(O);if(M==="needs_input"||M==="error")return U;return L.set(O,j.kind),L}),J.get("notifications.sound.enabled",!0)!==!1){try{process.stdout.write("\x07")}catch{}E4()}if(J.get("notifications.toast.enabled",!0)!==!1){let U=++q,L={id:U,kind:j.kind,taskId:j.taskId,tabId:j.tabId,title:j.title};z((O)=>[...O,L]),setTimeout(()=>H(U),Ky)}}function H(j){z((U)=>U.filter((L)=>L.id!==j))}function B(j,U){X((L)=>{let O=w4(j,U);if(!L.has(O))return L;let M=new Map(L);return M.delete(O),M})}let V={toasts:Y,unread:G,notify:Q,dismiss:H,markRead:B};return b(h4.Provider,{value:V,get children(){return f.children}})}function NQ(){let f=u1(h4);if(!f)throw Error("useNotifications must be used within a NotificationsProvider");return f}var Ky=4500,h4;var yQ=k(()=>{h();Wf();x4();mX();h4=gJ()});function j8(f,J){if(typeof J.theme==="string"&&J.theme.length>0&&J.theme!==f.selectedTheme()){if(!f.hasTheme(J.theme))f.reloadUserThemes();if(f.hasTheme(J.theme))f.setTheme(J.theme)}if(typeof J.transparentBackground==="boolean"&&J.transparentBackground!==f.transparentBackground())f.setTransparentBackground(J.transparentBackground);if(J.focusAccent===null||typeof J.focusAccent==="string"){let Y=Dy(J.focusAccent);if(Y&&Y!==f.focusAccent())f.setFocusAccent(Y)}}function Dy(f){if(f===null)return"primary";return Uy.includes(f)?f:null}var Uy;var v4=k(()=>{Uy=["primary","success","info"]});import{readFileSync as Ly}from"fs";function m4(f){try{let J=JSON.parse(Ly(m1(),"utf8")),Y=typeof J.activeTheme==="string"&&uX(J.activeTheme)?J.activeTheme:f,z=J.transparentBackground===!0,G=typeof J.focusAccent==="string"&&yz.includes(J.focusAccent)?J.focusAccent:null,X=EX(J[bQ])?J[bQ]:NG;return{theme:Y,transparent:z,focusAccent:G,locale:X}}catch{return{theme:f,transparent:!1,focusAccent:null,locale:NG}}}var bQ="locale";var W8=k(()=>{lf();xf();yG()});function Fy(f){if(f)kZ(f);RQ();for(let{name:J,theme:Y}of UX())pj(J,Y)}function Oy(f){let J={backgroundColor:"transparent",externalOutputMode:"passthrough",exitOnCtrlC:!1,screenMode:"alternate-screen",useKittyKeyboard:{}};return f?{...J,onDestroy:f}:J}function Ay(f){let J=()=>f.children,Y=()=>f.notifications?b(P4,{get children(){return J()}}):J(),z=()=>b(p6,{get children(){return Y()}}),G=()=>f.focus?b(g4,{initial:"sidebar",get children(){return z()}}):z(),X=()=>f.kv?b(b4,{get children(){return G()}}):G();return b(V6,{mode:"dark",get theme(){return f.theme},get children(){return X()}})}function gy(f){let J=i0(),Y={selectedTheme:()=>J.selected,hasTheme:(Q)=>J.has(Q),setTheme:(Q)=>J.set(Q),reloadUserThemes:()=>{for(let{name:Q,theme:H}of UX())pj(Q,H)},transparentBackground:()=>J.transparentBackground,setTransparentBackground:(Q)=>J.setTransparentBackground(Q),focusAccent:()=>J.focusAccent,setFocusAccent:(Q)=>J.setFocusAccent(Q)};j8(Y,{theme:f.boot.theme,transparentBackground:f.boot.transparent,focusAccent:f.boot.focusAccent}),xX(f.boot.locale);let[z,G]=r(null),X=!1;f1(()=>{(async()=>{let Q=await O4({logTag:"ui-prefs",channels:["ui-prefs","keybindings"]});if(!Q)return;if(X){Q.dispose();return}G(Q)})()}),zf(()=>{let Q=z()?.uiPrefsSignal()();if(!Q)return;if(j8(Y,Q),EX(Q.locale))xX(Q.locale)});let q=null;return zf(()=>{let Q=z()?.keybindingsRevSignal()();if(Q==null)return;if(q===null||Q===q){q=Q;return}q=Q,y4()}),mf(()=>{X=!0,z()?.dispose()}),null}async function L1(f){Fy(f.logContext);let J=m4(My),Y=await f.setup(J),z=f.providers?.kv??!0,G=f.providers?.focus??!0,X=f.providers?.notifications??!1;await Z6(()=>b(Ay,{get theme(){return J.theme},kv:z,focus:G,notifications:X,get children(){return[b(gy,{boot:J}),I0(()=>Y.root())]}}),Oy(Y.onDestroy))}var My="claude";var nY=k(()=>{h();h();h();eY();Wf();A4();R4();H8();mX();yQ();xf();yq();G1();P1();v4();W8()});async function V8(f,J,Y,z,G={}){let X=Lf(J.id);if(await Hf(X))return!0;let q=J.worktreePath;if(!q)q=await f.ensureWorktree(J.id);if(!q)throw Error(`task ${J.id} has no worktree`);let{ensureSession:Q}=await Promise.resolve().then(() => (J1(),r1)),{resolveEngineLaunchInit:H}=await Promise.resolve().then(() => (GG(),EB)),B=H(Y,q,{kind:G.includeInitPrompt?"repo-init":"none"});if(!await Q({name:X,cwd:q,command:N1(z),taskId:J.id,vendor:z,repo:Y,launchInit:B}))throw Error(`failed to start tmux session for ${J.id}`);return!1}async function SQ(f,J,Y,z,G={}){await V8(f,J,Y,z,G),await f.setActiveTask(J.id).catch(()=>{});let{prepareWindowForSwitch:X}=await Promise.resolve().then(() => (J1(),r1));await X(Lf(J.id)),await h0(["switch-client","-t",`=${Lf(J.id)}`])}var K8=k(()=>{E1();Tf()});var c4={};jf(c4,{startNewTaskHost:()=>Ry,NewTaskPage:()=>IQ});function IQ(f){let{theme:J}=i0(),Y=vf();f1(()=>{z()});async function z(){let G=c1(),X=f.defaultRepo||G[0]||process.cwd(),q=kf("lastSelectedVendor")??Sf,Q=await lJ(),H=f.orchestrator,B=await OQ.show(Y,X,G,{defaultVendor:q,availableVendors:Q,discoverAdoptable:H?(j)=>H.discoverAdoptableWorktrees(j):void 0});if(!B)process.exit(0);if(af("lastSelectedVendor",B.vendor),vJ(B.repo),!H)console.error("[kobe new-task] no daemon; cannot create task"),process.exit(1);let V;try{if(B.mode==="adopt")for(let j of B.adopt)V=await H.adoptWorktree({repo:B.repo,worktreePath:j.worktreePath,branch:j.branch,vendor:B.vendor});else V=await H.createTask({repo:B.repo,baseRef:B.baseRef,vendor:B.vendor})}catch(j){console.error("[kobe new-task] task.create/adopt failed:",j),process.exit(1)}if(V)try{await SQ(H,V,B.repo,B.vendor,{includeInitPrompt:B.mode!=="adopt"})}catch(j){console.error("[kobe new-task] auto-enter failed:",j)}process.exit(0)}return(()=>{var G=W("box");return Z(G,"flexDirection","column"),Z(G,"flexGrow",1),u((X)=>Z(G,"backgroundColor",J.background,X)),G})()}async function Ry(f){await L1({setup:async()=>{let J=null;try{let Y=await UJ(),z=new W1(Y);await z.init(),J=z}catch(Y){console.error("[kobe new-task] daemon unavailable; cannot create task:",Y)}return{root:()=>b(IQ,{get defaultRepo(){return f.defaultRepo},orchestrator:J}),onDestroy:()=>{J?.dispose()}}}})}var U8=k(()=>{h();h();h();h();y1();Wf();PY();fz();Of();S1();bG();xf();nY();K8();P1()});function TQ(f,J,Y,z,G={}){if(f.length===0)return J;let X=new Map;for(let H of f)X.set(Y(H),H);let q=f.length===J.length,Q=Array(J.length);for(let H=0;H<J.length;H++){let B=J[H],V=X.get(Y(B));if(V&&z(V,B)&&(!G.samePosition||f[H]===V)){if(Q[H]=V,q&&f[H]!==V)q=!1}else Q[H]=B,q=!1}return q?f:Q}function n4(f,J){if(!f)return!0;let Y=f.toLowerCase(),z=J.toLowerCase(),G=0;for(let X=0;X<z.length&&G<Y.length;X++)if(z.charCodeAt(X)===Y.charCodeAt(G))G++;return G===Y.length}function Cy(f,J){let Y=J==="archived";return f.filter((z)=>z.archived===Y)}function D8(f,J,Y,z="default",G){let X=Cy(f,J),q=Y?.trim()??"",Q=G?o1(G):null,H=q?X.filter((M)=>n4(q,`${M.title} ${MJ(M.repo)}`)):X,B=[],V=[],j=[],U=new Set;for(let M of H){if(M.kind==="main"){let R=o1(M.repo);if(U.has(R))continue;U.add(R),B.push(M);continue}if(Q&&o1(M.repo)!==Q)continue;if(M.pinned===!0)V.push(M);else j.push(M)}if(B.sort((M,R)=>MJ(M.repo).localeCompare(MJ(R.repo))),z==="recent")V.sort(d4),j.sort(d4);let L=[],O=0;for(let M of B)L.push({kind:"task",task:M,flatIndex:O}),O++;for(let M of V)L.push({kind:"task",task:M,flatIndex:O}),O++;for(let M of j)L.push({kind:"task",task:M,flatIndex:O}),O++;return L}function d4(f,J){let Y=i4(J)-i4(f);if(Y!==0)return Y;return String(J.id).localeCompare(String(f.id))}function i4(f){let J=Date.parse(f.updatedAt||f.createdAt);return Number.isFinite(J)?J:0}function MJ(f){let J=f.split("/").filter(Boolean);return J[J.length-1]??f}function o1(f){return f.trim().replace(/[\\/]+$/,"")||f}function ky(f,J){let Y=MJ(f);if(!J.some((G)=>G!==f&&MJ(G)===Y))return Y;return f.replace(/[\\/]+$/,"").split(/[\\/]+/).slice(-2).join("/")}function l4(f,J){let Y=J==="archived",z=new Map;for(let X of f){let q=o1(X.repo),Q=z.get(q)??{repo:X.repo,count:0};if(X.kind==="main")Q.repo=X.repo;else if(X.archived===Y)Q.count+=1;z.set(q,Q)}let G=[...z.values()].map((X)=>X.repo);return[...z.values()].map((X)=>({repo:X.repo,label:ky(X.repo,G),count:X.count})).sort((X,q)=>X.label.localeCompare(q.label))}function a4(f,J){if(f.length===0)return-1;if(!J)return f[0]?.flatIndex??-1;let Y=o1(J),z=f.find((X)=>X.task.kind!=="main"&&o1(X.task.repo)===Y);if(z)return z.flatIndex;return f.find((X)=>X.task.kind==="main"&&o1(X.task.repo)===Y)?.flatIndex??f[0]?.flatIndex??-1}function L8(f){return f.map((J)=>J.task.id)}function $4(f){let J=[],Y=[];for(let z of f)if(z.task.kind==="main")J.push(z);else Y.push(z);return{projectRows:J,taskRows:Y}}function Ny(f,J){return f===J||f.id===J.id&&f.kind===J.kind&&f.title===J.title&&f.repo===J.repo&&f.branch===J.branch&&f.worktreePath===J.worktreePath&&f.status===J.status&&f.archived===J.archived&&f.pinned===J.pinned&&f.vendor===J.vendor}function r4(f,J){return TQ(f,J,(Y)=>Y.task.id,(Y,z)=>Y.flatIndex===z.flatIndex&&Ny(Y.task,z.task),{samePosition:!0})}var uQ=()=>{};var p4={};jf(p4,{startQuickTaskHost:()=>Iy});async function yy(f,J){let Y,z;if(J){let j=await C1(J,["@kobe_task","@kobe_worktree"]);Y=j["@kobe_task"]||void 0,z=j["@kobe_worktree"]||void 0}let G=(Y?f?.getTask(Y)?.repo:void 0)??c1()[0],X=G??z??process.cwd();if(!G)return{ctx:null,fallbackRepo:X};let q=await lJ(),Q=kf("lastSelectedVendor")??Sf,H=q.length===0||q.includes(Q)?Q:q[0]??Q,B=wX(V1(G))??LJ,V=q.length>0?q:[H];return{ctx:{repo:G,vendor:H,baseRef:B,engines:V},fallbackRepo:X}}async function by(f,J,Y,z,G){let X=await V8(f,J,Y,z),q=Lf(J.id),{pane:Q}=await VX(q,!X);if(Q)await KX(Q,G)}function Sy(f){let{theme:J}=i0(),Y=vf();f1(()=>{z()});async function z(){let G=f.ctx,X=await M4.show(Y,{repoLabel:MJ(G.repo),engines:G.engines,defaultVendor:G.vendor,defaultBaseRef:G.baseRef,engineLabel:Vz});if(X===void 0)process.exit(0);af("lastSelectedVendor",X.vendor),vJ(G.repo);let q=f.orchestrator;if(!q)console.error("[kobe quick-task] no daemon; cannot create task"),process.exit(1);try{let Q=await q.createTask({repo:G.repo,baseRef:X.baseRef,vendor:X.vendor});await by(q,Q,G.repo,X.vendor,X.prompt),await SQ(q,Q,G.repo,X.vendor)}catch(Q){console.error("[kobe quick-task] task.create/deliver failed:",Q),process.exit(1)}process.exit(0)}return(()=>{var G=W("box");return Z(G,"flexDirection","column"),Z(G,"flexGrow",1),u((X)=>Z(G,"backgroundColor",J.background,X)),G})()}async function Iy(f){await L1({setup:async()=>{let J=null;try{let G=await UJ(),X=new W1(G);await X.init(),J=X}catch(G){console.error("[kobe quick-task] daemon unavailable; cannot create task:",G)}let{ctx:Y,fallbackRepo:z}=await yy(J,f.session);return{root:()=>Y?b(Sy,{ctx:Y,orchestrator:J}):b(IQ,{defaultRepo:z,orchestrator:J}),onDestroy:()=>{J?.dispose()}}}})}var _4=k(()=>{h();h();h();h();y1();Wf();PY();fz();E1();Of();Tf();Cq();S1();F4();xf();DQ();nY();MQ();K8();U8();uQ();P1()});function xQ(f){let J=f.trim().split(/\s+/).pop()??"",Y=/^([CM])-(.+)$/.exec(J);if(!Y)return null;let z=Y[1]==="C"?"\u2303":"\u2325",G=Y[2]??"";return`${z}${G.length===1?G.toUpperCase():G}`}function EQ(f,J){if(f.includes("/"))return f.split("/").map((G)=>EQ(G,J)).join("/");let Y=f.toLowerCase();if(Y==="tab")return"tab";let z=uy[Y];if(z)return z;if(/^f\d{1,2}$/.test(Y))return Y.toUpperCase();if(!J)return f;if(/^[a-z]$/.test(Y))return f.toUpperCase();return f.replace(/[a-z]+/gi,(G)=>G.toUpperCase())}function TG(f,J="\u2303B"){let Y=f.trim();if(!Y)return Y;let z=/^prefix\s+(.+)$/i.exec(Y);if(z){let Q=z[1]??"";return`${J} ${Q.includes("+")?TG(Q,J):EQ(Q,!0)}`}let G=Y.split("+");if(G.length===1)return EQ(G[0]??"",!1);let X=G[G.length-1]??"";return`${G.slice(0,-1).map((Q)=>Ty[Q.toLowerCase().trim()]??Q).join("")} ${EQ(X,!0)}`}var Ty,uy;var M8=k(()=>{Ty={ctrl:"\u2303",control:"\u2303",alt:"\u2325",opt:"\u2325",option:"\u2325",shift:"\u21E7",cmd:"\u2318",command:"\u2318",meta:"\u2318",super:"\u2318"},uy={enter:"\u23CE",return:"\u23CE",esc:"\u238B",escape:"\u238B",space:"\u2423",up:"\u2191",down:"\u2193",left:"\u2190",right:"\u2192",backspace:"\u232B",delete:"\u2326",del:"\u2326",pgup:"\u21DE",pageup:"\u21DE",pgdn:"\u21DF",pagedown:"\u21DF",home:"\u2196",end:"\u2198"}});import{TextAttributes as o4}from"@opentui/core";function Ey(f){let J=new Map,Y=[];for(let z of f){if(!J.has(z.category))J.set(z.category,[]),Y.push(z.category);J.get(z.category).push(z)}return Y.map((z)=>({category:z,rows:J.get(z)}))}function uG(f={}){let J=vf(),{theme:Y}=i0(),z=()=>Ey(vY),G=()=>f.onClose?f.onClose():J.clear(),[X,q]=r("\u2303B");return f1(()=>{d0(["show-options","-g","prefix"]).then(({code:Q,stdout:H})=>{if(Q!==0)return;let B=xQ(H);if(B)q(B)})}),Uf(()=>({bindings:[{key:"?",cmd:G}]})),(()=>{var Q=W("box"),H=W("box"),B=W("text"),V=W("text"),j=W("scrollbox"),U=W("box");return D(Q,H),D(Q,j),Z(Q,"paddingLeft",2),Z(Q,"paddingRight",2),Z(Q,"gap",1),Z(Q,"flexShrink",1),D(H,B),D(H,V),Z(H,"flexDirection","row"),Z(H,"justifyContent","space-between"),Z(H,"flexShrink",0),K(B,()=>F("help.title")),Z(V,"onMouseUp",G),K(V,()=>F("help.esc")),D(j,U),Z(j,"flexShrink",1),Z(j,"flexGrow",1),Z(j,"stickyScroll",!1),Z(U,"paddingBottom",1),Z(U,"gap",1),Z(U,"paddingRight",1),K(U,b(Zf,{get each(){return z()},children:(L)=>(()=>{var O=W("box"),M=W("text");return D(O,M),Z(O,"gap",0),K(M,()=>sj("category",L.category)),K(O,b(Zf,{get each(){return L.rows},children:(R)=>{let S=R.hint?.keys??R.keys[0]??"\u2014",a=()=>S==="\u2014"?"\u2014":TG(S,X()),N=()=>(R.hint?R.keys:R.keys.slice(1)).map((g)=>TG(g,X()));return(()=>{var g=W("box"),C=W("box"),y=W("text"),_=W("box"),z0=W("text");return D(g,C),D(g,_),Z(g,"flexDirection","row"),Z(g,"gap",2),Z(g,"paddingLeft",1),D(C,y),Z(C,"width",14),K(y,a),D(_,z0),Z(_,"flexGrow",1),K(z0,()=>sj("desc",R.id)),K(g,(()=>{var t=I0(()=>N().length>0);return()=>t()?(()=>{var Y0=W("box"),T=W("text");return D(Y0,T),K(T,()=>`(${N().join(", ")})`),u((Q0)=>Z(T,"fg",Y.textMuted,Q0)),Y0})():null})(),null),u((t)=>{var{primary:Y0,text:T}=Y;return Y0!==t.e&&(t.e=Z(y,"fg",Y0,t.e)),T!==t.t&&(t.t=Z(z0,"fg",T,t.t)),t},{e:void 0,t:void 0}),g})()}}),null),u((R)=>{var S=Y.accent,a=o4.BOLD;return S!==R.e&&(R.e=Z(M,"fg",S,R.e)),a!==R.t&&(R.t=Z(M,"attributes",a,R.t)),R},{e:void 0,t:void 0}),O})()})),u((L)=>{var O=o4.BOLD,M=Y.text,R=Y.textMuted,S={trackOptions:{backgroundColor:Y.backgroundDialog,foregroundColor:Y.borderActive}};return O!==L.e&&(L.e=Z(B,"attributes",O,L.e)),M!==L.t&&(L.t=Z(B,"fg",M,L.t)),R!==L.a&&(L.a=Z(V,"fg",R,L.a)),S!==L.o&&(L.o=Z(j,"verticalScrollbarOptions",S,L.o)),L},{e:void 0,t:void 0,a:void 0,o:void 0}),Q})()}var F8=k(()=>{h();h();h();h();h();h();h();Wf();Tf();SG();xf();G1();M8();b1();P1();uG.show=(f)=>{f.replace(()=>b(uG,{}))}});import{TextAttributes as xy}from"@opentui/core";function s4(f){let J=vf(),{theme:Y}=i0(),[z,G]=r(f.currentTitle);function X(){let q=z().trim();if(!q&&!f.allowEmpty)return;f.onSubmit(q),J.clear()}return(()=>{var q=W("box"),Q=W("box"),H=W("text"),B=W("text"),V=W("box"),j=W("text"),U=W("input"),L=W("box"),O=W("text");return D(q,Q),D(q,V),D(q,L),Z(q,"paddingLeft",2),Z(q,"paddingRight",2),Z(q,"gap",1),D(Q,H),D(Q,B),Z(Q,"flexDirection","row"),Z(Q,"justifyContent","space-between"),K(H,()=>f.dialogTitle??F("common.rename.defaultTitle")),D(B,x0("esc")),Z(B,"onMouseUp",()=>f.onCancel()),D(V,j),D(V,U),Z(V,"gap",0),K(j,()=>f.fieldLabel??F("common.rename.defaultFieldLabel")),Z(U,"focused",!0),Z(U,"onInput",(M)=>G(X1(M))),Z(U,"onSubmit",()=>X()),D(L,O),Z(L,"paddingBottom",1),K(O,()=>F("common.rename.footerHint",{submitLabel:f.submitLabel??F("common.rename.defaultSubmitLabel")})),u((M)=>{var R=xy.BOLD,S=Y.text,a=Y.textMuted,N=Y.accent,g=z(),C=f.placeholder??f.currentTitle,y=Y.textMuted;return R!==M.e&&(M.e=Z(H,"attributes",R,M.e)),S!==M.t&&(M.t=Z(H,"fg",S,M.t)),a!==M.a&&(M.a=Z(B,"fg",a,M.a)),N!==M.o&&(M.o=Z(j,"fg",N,M.o)),g!==M.i&&(M.i=Z(U,"value",g,M.i)),C!==M.n&&(M.n=Z(U,"placeholder",C,M.n)),y!==M.s&&(M.s=Z(O,"fg",y,M.s)),M},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),q})()}var t4=k(()=>{h();h();h();h();h();h();h();G1();Wf();xf();P1();bG()});function wy(f,J,Y={}){return new Promise((z)=>{f.replace(()=>b(s4,{currentTitle:J,get dialogTitle(){return Y.dialogTitle},get fieldLabel(){return Y.fieldLabel},get submitLabel(){return Y.submitLabel},get placeholder(){return Y.placeholder},get allowEmpty(){return Y.allowEmpty},onSubmit:(G)=>z(G),onCancel:()=>z(void 0)}),()=>z(void 0))})}var zY;var O8=k(()=>{h();t4();zY={show:wy}});import{TextAttributes as hy}from"@opentui/core";function Py(f){if(!f)return f;return f.charAt(0).toUpperCase()+f.slice(1)}function GY(f){let J=vf(),{theme:Y}=i0(),[z,G]=uJ({active:f.initialActive??"confirm"});return Uf(()=>({bindings:[{key:"return",cmd:()=>{if(z.active==="confirm")f.onConfirm?.();if(z.active==="cancel")f.onCancel?.();J.clear()}},{key:"left",cmd:()=>G("active",z.active==="confirm"?"cancel":"confirm")},{key:"right",cmd:()=>G("active",z.active==="confirm"?"cancel":"confirm")}]})),(()=>{var X=W("box"),q=W("box"),Q=W("text"),H=W("text"),B=W("text"),V=W("box");return D(X,q),D(X,B),D(X,V),Z(X,"paddingLeft",2),Z(X,"paddingRight",2),Z(X,"paddingBottom",1),Z(X,"gap",0),D(q,Q),D(q,H),Z(q,"flexDirection","row"),Z(q,"justifyContent","space-between"),K(Q,()=>f.title),D(H,x0("esc")),Z(H,"onMouseUp",()=>J.clear()),K(B,()=>f.message),Z(V,"flexDirection","row"),Z(V,"justifyContent","flex-end"),Z(V,"paddingTop",1),K(V,b(Zf,{each:["cancel","confirm"],children:(j)=>(()=>{var U=W("box"),L=W("text");return D(U,L),Z(U,"paddingLeft",1),Z(U,"paddingRight",1),Z(U,"onMouseUp",()=>{if(j==="confirm")f.onConfirm?.();if(j==="cancel")f.onCancel?.();J.clear()}),K(L,()=>Py(j==="cancel"?f.label??F("common.cancel"):f.confirmLabel??F("common.confirm"))),u((O)=>{var M=j===z.active?Y.primary:void 0,R=j===z.active?Y.selectedListItemText:Y.textMuted;return M!==O.e&&(O.e=Z(U,"backgroundColor",M,O.e)),R!==O.t&&(O.t=Z(L,"fg",R,O.t)),O},{e:void 0,t:void 0}),U})()})),u((j)=>{var U=hy.BOLD,L=Y.text,O=Y.textMuted,M=Y.textMuted;return U!==j.e&&(j.e=Z(Q,"attributes",U,j.e)),L!==j.t&&(j.t=Z(Q,"fg",L,j.t)),O!==j.a&&(j.a=Z(H,"fg",O,j.a)),M!==j.o&&(j.o=Z(B,"fg",M,j.o)),j},{e:void 0,t:void 0,a:void 0,o:void 0}),X})()}var A8=k(()=>{h();h();h();h();h();h();h();G1();Wf();CG();xf();b1();P1();GY.show=(f,J,Y,z,G,X)=>{return new Promise((q)=>{f.replace(()=>b(GY,{title:J,message:Y,onConfirm:()=>q(!0),onCancel:()=>q(!1),label:z,confirmLabel:G,get initialActive(){return X?.initialActive}}),()=>q(void 0)),f.setSize("small")})}});import{unlinkSync as vy}from"fs";import{join as my}from"path";function e4(f){return f instanceof W1}function fD(f,J){try{f?.destroy()}catch(Y){console.error(`kobe: renderer.destroy() failed during ${J}:`,Y)}}async function g8(f,J,Y){if(await GY.show(f,"Reset UI state?","Wipes ~/.config/kobe/state.json and ~/.kobe/tasks.json, then quits kobe \u2014 relaunch for a fresh start with empty Working session / Archive lists. Worktrees on disk and Claude Code session history are NOT touched.","cancel")!==!0)return;J.clear();try{vy(my(OJ(),".kobe","tasks.json"))}catch(G){if(G.code!=="ENOENT")console.error("kobe: failed to delete tasks.json during reset:",G)}fD(Y,"reset"),process.stderr.write(`kobe: UI state reset. Relaunch kobe to start fresh.
|
|
224
|
+
`),process.exit(0)}async function R8(f,J,Y){if(!(J instanceof W1))return;if(await GY.show(f,"Restart backend?","Quits this kobe window. Relaunch to (re)spawn the daemon. Any other attached windows keep their connection. In v0.6 the daemon's RPC surface shrank to task CRUD + subscribe, so a graceful daemon.stop RPC is no longer plumbed through the client \u2014 quit + relaunch is the path.","cancel")!==!0)return;fD(Y,"daemon restart"),process.stderr.write(`kobe: window closed. Relaunch kobe to start fresh.
|
|
225
|
+
`),process.exit(0)}var JD=k(()=>{PY();lf();A8()});function cy(f){return`theme:${f}`}function C8(f){return`language:${f}`}function k8(f){return`accent:${f}`}function ny(f){return`engine:${f}`}function cX(f){return`surface:${f}`}function N8(f){return[...f.themeNames.map((J)=>({id:cy(J),kind:"theme",name:J})),...bz.map((J)=>({id:C8(J.id),kind:"language",locale:J.id})),{id:"transparent",kind:"transparent"},...f.focusAccentSlots.map((J)=>({id:k8(J),kind:"focusAccent",slot:J})),{id:"toast",kind:"toast"},{id:"sound",kind:"sound"},{id:"zen-keep-tasks",kind:"zenKeepTasks"},{id:cX("chattab"),kind:"surface",surface:"chattab"},{id:cX("taskpanel"),kind:"surface",surface:"taskpanel"},{id:"editor-kind",kind:"editorKind"},{id:"editor-custom",kind:"editorCustom"}]}function dy(f){return[...f.map((J)=>({id:ny(J),kind:"engine",vendor:J})),{id:"add-engine",kind:"engineAdd"}]}function iy(){return[{id:"feedback-title",kind:"feedbackTitle"},{id:"feedback-body",kind:"feedbackBody"},{id:"feedback-send",kind:"feedbackSend"}]}function nX(f){return[{id:"dev-reset",kind:"devReset"},...f?[{id:"dev-restart",kind:"devRestartDaemon"}]:[],{id:"remote-projects",kind:"devRemoteProjects"},{id:"auto-status",kind:"devAutoStatus"},{id:"dispatcher",kind:"devDispatcher"}]}function YD(f,J){switch(f){case"general":return N8(J);case"engines":return dy(J.engineList);case"accounts":case"keys":return[];case"feedback":return iy();case"dev":return nX(J.hasDaemon)}}function dX(f,J){return f.findIndex((Y)=>Y.id===J)}function wQ(f,J){return f[J]}var Iz;var y8=k(()=>{yG();Iz=[{id:"general",label:"General"},{id:"engines",label:"Engines"},{id:"accounts",label:"Accounts"},{id:"keys",label:"Keybindings"},{id:"feedback",label:"Feedback"},{id:"dev",label:"Dev"}]});import{TextAttributes as ff}from"@opentui/core";function zD(f){let{theme:J}=i0();return(()=>{var Y=W("box");return Z(Y,"flexDirection","column"),Z(Y,"flexShrink",0),Z(Y,"width",14),Z(Y,"gap",1),K(Y,b(Zf,{each:Iz,children:(z,G)=>{let X=()=>G()===f.cursor(),q=()=>X()&&f.level()==="sidebar";return(()=>{var Q=W("box"),H=W("text");return D(Q,H),Z(Q,"paddingLeft",1),Z(Q,"paddingRight",1),Z(Q,"onMouseUp",()=>f.switchSection(z.id)),Z(H,"wrapMode","none"),K(H,()=>F(`settings.sections.${z.id}`)),u((B)=>{var V=q()?J.primary:void 0,j=q()?J.selectedListItemText:X()?J.accent:J.textMuted,U=X()?ff.BOLD:void 0;return V!==B.e&&(B.e=Z(Q,"backgroundColor",V,B.e)),j!==B.t&&(B.t=Z(H,"fg",j,B.t)),U!==B.a&&(B.a=Z(H,"attributes",U,B.a)),B},{e:void 0,t:void 0,a:void 0}),Q})()}})),Y})()}function GD(f){let J=i0(),{theme:Y}=J,z=()=>N8({themeNames:f.themeNames(),focusAccentSlots:yz}),G=(C)=>dX(z(),C),X=()=>G("transparent"),q=()=>G("toast"),Q=()=>G("sound"),H=()=>G("zen-keep-tasks"),B=()=>G(cX("chattab")),V=()=>G(cX("taskpanel")),j=()=>G("editor-kind"),U=()=>G("editor-custom"),L=()=>f.bodyRow()===X(),O=()=>f.bodyRow()===q(),M=()=>f.bodyRow()===Q(),R=()=>f.bodyRow()===H(),S=()=>f.bodyRow()===B(),a=()=>f.bodyRow()===V(),N=()=>f.bodyRow()===j(),g=()=>f.bodyRow()===U();return(()=>{var C=W("box"),y=W("text"),_=W("text"),z0=W("box"),t=W("box"),Y0=W("text"),T=W("text"),Q0=W("box"),p=W("text"),D0=W("text"),g0=W("box"),$=W("text"),E=W("box"),f0=W("text"),I=W("text"),G0=W("box"),x=W("text"),c=W("text"),Z0=W("box"),V0=W("text"),H0=x0(" "),y0=W("box"),w0=W("text"),T0=x0(" "),r0=W("box"),P=W("text"),M0=W("text"),J0=W("box"),F0=W("text"),a0=x0(" "),p0=W("box"),u0=W("text"),_0=W("text"),n=W("box"),q0=W("text"),b0=x0(" "),o0=W("box"),l0=W("text"),$0=x0(" "),t0=W("box"),Rf=W("text"),gf=W("text"),o=W("box"),e=W("text"),B0=W("box"),C0=W("text");return D(C,y),D(C,_),D(C,z0),D(C,t),D(C,Q0),D(C,E),D(C,G0),D(C,r0),D(C,p0),D(C,t0),Z(C,"flexDirection","column"),Z(C,"gap",1),K(y,()=>F("settings.general.theme")),K(_,()=>F("settings.general.themeHint")),Z(z0,"flexDirection","column"),Z(z0,"gap",0),K(z0,b(Zf,{get each(){return f.themeNames()},children:(A,P0)=>{let K0=()=>f.level()==="body"&&f.bodyRow()===P0(),E0=()=>A===J.selected;return(()=>{var W0=W("box"),L0=W("text");return D(W0,L0),Z(W0,"flexDirection","row"),Z(W0,"gap",1),Z(W0,"paddingLeft",1),Z(W0,"paddingRight",1),Z(W0,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(P0()),f.setThemeCursor(P0()),f.selectTheme(A)}),Z(L0,"wrapMode","none"),K(L0,()=>E0()?"\u25CF ":" ",null),K(L0,A,null),u((R0)=>{var Jf=K0()?Y.primary:void 0,Yf=K0()?Y.selectedListItemText:E0()?Y.accent:Y.text,n0=K0()||E0()?ff.BOLD:void 0;return Jf!==R0.e&&(R0.e=Z(W0,"backgroundColor",Jf,R0.e)),Yf!==R0.t&&(R0.t=Z(L0,"fg",Yf,R0.t)),n0!==R0.a&&(R0.a=Z(L0,"attributes",n0,R0.a)),R0},{e:void 0,t:void 0,a:void 0}),W0})()}})),D(t,Y0),D(t,T),Z(t,"flexDirection","column"),Z(t,"gap",0),Z(t,"paddingTop",1),K(Y0,()=>F("settings.general.language")),Z(T,"wrapMode","word"),K(T,()=>F("settings.general.languageHint")),K(t,b(Zf,{each:bz,children:(A)=>{let P0=()=>G(C8(A.id)),K0=()=>f.level()==="body"&&f.bodyRow()===P0(),E0=()=>f.currentLocale()===A.id;return(()=>{var W0=W("box"),L0=W("text");return D(W0,L0),Z(W0,"flexDirection","row"),Z(W0,"gap",1),Z(W0,"paddingLeft",1),Z(W0,"paddingRight",1),Z(W0,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(P0()),f.selectLanguage(A.id)}),Z(L0,"wrapMode","none"),K(L0,()=>E0()?"\u25CF ":" ",null),K(L0,()=>A.label,null),u((R0)=>{var Jf=K0()?Y.primary:void 0,Yf=K0()?Y.selectedListItemText:E0()?Y.accent:Y.text,n0=K0()||E0()?ff.BOLD:void 0;return Jf!==R0.e&&(R0.e=Z(W0,"backgroundColor",Jf,R0.e)),Yf!==R0.t&&(R0.t=Z(L0,"fg",Yf,R0.t)),n0!==R0.a&&(R0.a=Z(L0,"attributes",n0,R0.a)),R0},{e:void 0,t:void 0,a:void 0}),W0})()}}),null),D(Q0,p),D(Q0,D0),D(Q0,g0),Z(Q0,"flexDirection","column"),Z(Q0,"gap",0),Z(Q0,"paddingTop",1),K(p,()=>F("settings.general.transparent")),Z(D0,"wrapMode","word"),K(D0,()=>F("settings.general.transparentHint")),D(g0,$),Z(g0,"flexDirection","row"),Z(g0,"paddingLeft",1),Z(g0,"paddingRight",1),Z(g0,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(X()),f.toggleTransparent()}),Z($,"wrapMode","none"),K($,(()=>{var A=I0(()=>!!J.transparentBackground);return()=>A()?F("settings.general.on"):F("settings.general.off")})()),D(E,f0),D(E,I),Z(E,"flexDirection","column"),Z(E,"gap",0),Z(E,"paddingTop",1),K(f0,()=>F("settings.general.focusAccent")),Z(I,"wrapMode","word"),K(I,()=>F("settings.general.focusAccentHint")),K(E,b(Zf,{each:yz,children:(A)=>{let P0=()=>G(k8(A)),K0=()=>f.level()==="body"&&f.bodyRow()===P0(),E0=()=>J.focusAccent===A;return(()=>{var W0=W("box"),L0=W("text");return D(W0,L0),Z(W0,"flexDirection","row"),Z(W0,"gap",1),Z(W0,"paddingLeft",1),Z(W0,"paddingRight",1),Z(W0,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(P0()),f.selectFocusAccent(A)}),Z(L0,"wrapMode","none"),K(L0,()=>E0()?"\u25CF ":" ",null),K(L0,()=>F(`settings.general.accent${A.charAt(0).toUpperCase()}${A.slice(1)}`),null),u((R0)=>{var Jf=K0()?Y.primary:void 0,Yf=K0()?Y.selectedListItemText:E0()?Y.focusAccent:Y.text,n0=K0()||E0()?ff.BOLD:void 0;return Jf!==R0.e&&(R0.e=Z(W0,"backgroundColor",Jf,R0.e)),Yf!==R0.t&&(R0.t=Z(L0,"fg",Yf,R0.t)),n0!==R0.a&&(R0.a=Z(L0,"attributes",n0,R0.a)),R0},{e:void 0,t:void 0,a:void 0}),W0})()}}),null),D(G0,x),D(G0,c),D(G0,Z0),D(G0,y0),Z(G0,"flexDirection","column"),Z(G0,"gap",0),Z(G0,"paddingTop",1),K(x,()=>F("settings.general.notifications")),Z(c,"wrapMode","word"),K(c,()=>F("settings.general.notificationsHint")),D(Z0,V0),Z(Z0,"flexDirection","row"),Z(Z0,"gap",1),Z(Z0,"paddingLeft",1),Z(Z0,"paddingRight",1),Z(Z0,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(q()),f.toggleToast()}),D(V0,H0),Z(V0,"wrapMode","none"),K(V0,()=>f.toastEnabled()?"[x]":"[ ]",H0),K(V0,()=>F("settings.general.toast"),null),D(y0,w0),Z(y0,"flexDirection","row"),Z(y0,"gap",1),Z(y0,"paddingLeft",1),Z(y0,"paddingRight",1),Z(y0,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(Q()),f.toggleSound()}),D(w0,T0),Z(w0,"wrapMode","none"),K(w0,()=>f.soundEnabled()?"[x]":"[ ]",T0),K(w0,()=>F("settings.general.sound"),null),D(r0,P),D(r0,M0),D(r0,J0),Z(r0,"flexDirection","column"),Z(r0,"gap",0),Z(r0,"paddingTop",1),K(P,()=>F("settings.general.zen")),Z(M0,"wrapMode","word"),K(M0,()=>F("settings.general.zenHint")),D(J0,F0),Z(J0,"flexDirection","row"),Z(J0,"gap",1),Z(J0,"paddingLeft",1),Z(J0,"paddingRight",1),Z(J0,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(H()),f.toggleZenKeepsTasks()}),D(F0,a0),Z(F0,"wrapMode","none"),K(F0,()=>f.zenKeepsTasks()?"[x]":"[ ]",a0),K(F0,()=>F("settings.general.zenKeepTasks"),null),D(p0,u0),D(p0,_0),D(p0,n),D(p0,o0),Z(p0,"flexDirection","column"),Z(p0,"gap",0),Z(p0,"paddingTop",1),K(u0,()=>F("settings.general.surface")),Z(_0,"wrapMode","word"),K(_0,()=>F("settings.general.surfaceHint")),D(n,q0),Z(n,"flexDirection","row"),Z(n,"gap",1),Z(n,"paddingLeft",1),Z(n,"paddingRight",1),Z(n,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(B()),f.selectSurface("chattab")}),D(q0,b0),Z(q0,"wrapMode","none"),K(q0,()=>f.settingsSurface()==="chattab"?"[x]":"[ ]",b0),K(q0,()=>F("settings.general.surfaceChattab"),null),D(o0,l0),Z(o0,"flexDirection","row"),Z(o0,"gap",1),Z(o0,"paddingLeft",1),Z(o0,"paddingRight",1),Z(o0,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(V()),f.selectSurface("taskpanel")}),D(l0,$0),Z(l0,"wrapMode","none"),K(l0,()=>f.settingsSurface()==="taskpanel"?"[x]":"[ ]",$0),K(l0,()=>F("settings.general.surfaceTaskpanel"),null),D(t0,Rf),D(t0,gf),D(t0,o),D(t0,B0),Z(t0,"flexDirection","column"),Z(t0,"gap",0),Z(t0,"paddingTop",1),K(Rf,()=>F("settings.general.editor")),Z(gf,"wrapMode","word"),K(gf,()=>F("settings.general.editorHint")),D(o,e),Z(o,"flexDirection","row"),Z(o,"gap",1),Z(o,"paddingLeft",1),Z(o,"paddingRight",1),Z(o,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(j()),f.cycleEditorKind()}),Z(e,"wrapMode","none"),K(e,()=>F("settings.general.editorRow",{kind:f.editorKind()})),D(B0,C0),Z(B0,"flexDirection","row"),Z(B0,"gap",1),Z(B0,"paddingLeft",1),Z(B0,"paddingRight",1),Z(B0,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(U()),f.editEditorCustom()}),Z(C0,"wrapMode","none"),K(C0,()=>F("settings.general.editorCustom",{cmd:f.editorCustomCommand().trim()||F("settings.general.editorCustomUnset")})),u((A)=>{var P0=Y.text,K0=ff.BOLD,E0=Y.textMuted,W0=Y.text,L0=ff.BOLD,R0=Y.textMuted,Jf=Y.text,Yf=ff.BOLD,n0=Y.textMuted,yf=L()?Y.primary:void 0,k0=L()?Y.selectedListItemText:J.transparentBackground?Y.accent:Y.textMuted,wf=ff.BOLD,v=Y.text,A0=ff.BOLD,Bf=Y.textMuted,Ff=Y.text,Qf=ff.BOLD,d=Y.textMuted,s=O()?Y.primary:void 0,S0=O()?Y.selectedListItemText:f.toastEnabled()?Y.accent:Y.textMuted,N0=ff.BOLD,Z1=M()?Y.primary:void 0,K1=M()?Y.selectedListItemText:f.soundEnabled()?Y.accent:Y.textMuted,tf=ff.BOLD,v1=Y.text,xJ=ff.BOLD,M1=Y.textMuted,wJ=R()?Y.primary:void 0,XY=R()?Y.selectedListItemText:f.zenKeepsTasks()?Y.accent:Y.textMuted,m=ff.BOLD,i=Y.text,l=ff.BOLD,w=Y.textMuted,m0=S()?Y.primary:void 0,v0=S()?Y.selectedListItemText:f.settingsSurface()==="chattab"?Y.accent:Y.textMuted,O0=ff.BOLD,c0=a()?Y.primary:void 0,qf=a()?Y.selectedListItemText:f.settingsSurface()==="taskpanel"?Y.accent:Y.textMuted,Df=ff.BOLD,q1=Y.text,s1=ff.BOLD,ZY=Y.textMuted,o8=N()?Y.primary:void 0,s8=N()?Y.selectedListItemText:Y.accent,t8=ff.BOLD,e8=g()?Y.primary:void 0,f9=g()?Y.selectedListItemText:f.editorKind()==="custom"?Y.text:Y.textMuted;return P0!==A.e&&(A.e=Z(y,"fg",P0,A.e)),K0!==A.t&&(A.t=Z(y,"attributes",K0,A.t)),E0!==A.a&&(A.a=Z(_,"fg",E0,A.a)),W0!==A.o&&(A.o=Z(Y0,"fg",W0,A.o)),L0!==A.i&&(A.i=Z(Y0,"attributes",L0,A.i)),R0!==A.n&&(A.n=Z(T,"fg",R0,A.n)),Jf!==A.s&&(A.s=Z(p,"fg",Jf,A.s)),Yf!==A.h&&(A.h=Z(p,"attributes",Yf,A.h)),n0!==A.r&&(A.r=Z(D0,"fg",n0,A.r)),yf!==A.d&&(A.d=Z(g0,"backgroundColor",yf,A.d)),k0!==A.l&&(A.l=Z($,"fg",k0,A.l)),wf!==A.u&&(A.u=Z($,"attributes",wf,A.u)),v!==A.c&&(A.c=Z(f0,"fg",v,A.c)),A0!==A.w&&(A.w=Z(f0,"attributes",A0,A.w)),Bf!==A.m&&(A.m=Z(I,"fg",Bf,A.m)),Ff!==A.f&&(A.f=Z(x,"fg",Ff,A.f)),Qf!==A.y&&(A.y=Z(x,"attributes",Qf,A.y)),d!==A.g&&(A.g=Z(c,"fg",d,A.g)),s!==A.p&&(A.p=Z(Z0,"backgroundColor",s,A.p)),S0!==A.b&&(A.b=Z(V0,"fg",S0,A.b)),N0!==A.T&&(A.T=Z(V0,"attributes",N0,A.T)),Z1!==A.A&&(A.A=Z(y0,"backgroundColor",Z1,A.A)),K1!==A.O&&(A.O=Z(w0,"fg",K1,A.O)),tf!==A.I&&(A.I=Z(w0,"attributes",tf,A.I)),v1!==A.S&&(A.S=Z(P,"fg",v1,A.S)),xJ!==A.W&&(A.W=Z(P,"attributes",xJ,A.W)),M1!==A.C&&(A.C=Z(M0,"fg",M1,A.C)),wJ!==A.B&&(A.B=Z(J0,"backgroundColor",wJ,A.B)),XY!==A.v&&(A.v=Z(F0,"fg",XY,A.v)),m!==A.k&&(A.k=Z(F0,"attributes",m,A.k)),i!==A.x&&(A.x=Z(u0,"fg",i,A.x)),l!==A.j&&(A.j=Z(u0,"attributes",l,A.j)),w!==A.q&&(A.q=Z(_0,"fg",w,A.q)),m0!==A.z&&(A.z=Z(n,"backgroundColor",m0,A.z)),v0!==A.P&&(A.P=Z(q0,"fg",v0,A.P)),O0!==A.H&&(A.H=Z(q0,"attributes",O0,A.H)),c0!==A.F&&(A.F=Z(o0,"backgroundColor",c0,A.F)),qf!==A.M&&(A.M=Z(l0,"fg",qf,A.M)),Df!==A.D&&(A.D=Z(l0,"attributes",Df,A.D)),q1!==A.R&&(A.R=Z(Rf,"fg",q1,A.R)),s1!==A.E&&(A.E=Z(Rf,"attributes",s1,A.E)),ZY!==A.L&&(A.L=Z(gf,"fg",ZY,A.L)),o8!==A.N&&(A.N=Z(o,"backgroundColor",o8,A.N)),s8!==A.G&&(A.G=Z(e,"fg",s8,A.G)),t8!==A.U&&(A.U=Z(e,"attributes",t8,A.U)),e8!==A.K&&(A.K=Z(B0,"backgroundColor",e8,A.K)),f9!==A.V&&(A.V=Z(C0,"fg",f9,A.V)),A},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0,w:void 0,m:void 0,f:void 0,y:void 0,g:void 0,p:void 0,b:void 0,T:void 0,A:void 0,O:void 0,I:void 0,S:void 0,W:void 0,C:void 0,B:void 0,v:void 0,k:void 0,x:void 0,j:void 0,q:void 0,z:void 0,P:void 0,H:void 0,F:void 0,M:void 0,D:void 0,R:void 0,E:void 0,L:void 0,N:void 0,G:void 0,U:void 0,K:void 0,V:void 0}),C})()}function XD(f){let{theme:J}=i0(),Y=()=>f.vendors.length;return(()=>{var z=W("box"),G=W("text"),X=W("text"),q=W("box"),Q=W("box"),H=W("text");return D(z,G),D(z,X),D(z,q),Z(z,"flexDirection","column"),Z(z,"gap",1),K(G,()=>F("settings.engines.title")),Z(X,"wrapMode","word"),K(X,()=>F("settings.engines.hint")),D(q,Q),Z(q,"flexDirection","column"),Z(q,"gap",0),K(q,b(Zf,{get each(){return f.vendors},children:(B,V)=>{let j=()=>f.level()==="body"&&f.bodyRow()===V();return(()=>{var U=W("box"),L=W("text"),O=W("text"),M=W("text");return D(U,L),D(U,O),D(U,M),Z(U,"flexDirection","row"),Z(U,"gap",1),Z(U,"paddingLeft",1),Z(U,"paddingRight",1),Z(U,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(V()),f.editEngine(B)}),Z(L,"wrapMode","none"),K(L,()=>f.isDefaultEngine(B)?"\u25CF":" "),Z(O,"wrapMode","none"),K(O,()=>f.displayName(B)),Z(M,"wrapMode","none"),K(M,()=>f.commandText(B),null),K(M,(()=>{var R=I0(()=>!!f.isDefault(B));return()=>R()?F("settings.engines.defaultTag"):I0(()=>!!f.isCustom(B))()?F("settings.engines.customTag"):""})(),null),u((R)=>{var S=j()?J.primary:void 0,a=j()?J.selectedListItemText:J.accent,N=ff.BOLD,g=j()?J.selectedListItemText:J.text,C=ff.BOLD,y=j()?J.selectedListItemText:f.isDefault(B)?J.textMuted:J.accent;return S!==R.e&&(R.e=Z(U,"backgroundColor",S,R.e)),a!==R.t&&(R.t=Z(L,"fg",a,R.t)),N!==R.a&&(R.a=Z(L,"attributes",N,R.a)),g!==R.o&&(R.o=Z(O,"fg",g,R.o)),C!==R.i&&(R.i=Z(O,"attributes",C,R.i)),y!==R.n&&(R.n=Z(M,"fg",y,R.n)),R},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),U})()}}),Q),D(Q,H),Z(Q,"flexDirection","row"),Z(Q,"paddingLeft",1),Z(Q,"paddingRight",1),Z(Q,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(Y()),f.onAddEngine()}),Z(H,"wrapMode","none"),K(H,()=>F("settings.engines.addEngine")),u((B)=>{var V=J.text,j=ff.BOLD,U=J.textMuted,L=f.level()==="body"&&f.bodyRow()===Y()?J.primary:void 0,O=f.level()==="body"&&f.bodyRow()===Y()?J.selectedListItemText:J.primary;return V!==B.e&&(B.e=Z(G,"fg",V,B.e)),j!==B.t&&(B.t=Z(G,"attributes",j,B.t)),U!==B.a&&(B.a=Z(X,"fg",U,B.a)),L!==B.o&&(B.o=Z(Q,"backgroundColor",L,B.o)),O!==B.i&&(B.i=Z(H,"fg",O,B.i)),B},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),z})()}function ZD(f){let{theme:J}=i0(),Y=(z)=>z.binary.found?`Binary: ${z.binary.path}`:`Binary: ${z.binary.error}`;return(()=>{var z=W("box"),G=W("text"),X=W("text"),q=W("box"),Q=W("text"),H=W("box"),B=W("text"),V=W("box"),j=W("text");return D(z,G),D(z,X),D(z,q),D(z,H),D(z,V),Z(z,"flexDirection","column"),Z(z,"gap",1),K(G,()=>F("settings.accounts.title")),Z(X,"wrapMode","word"),K(X,()=>F("settings.accounts.hint")),D(q,Q),Z(q,"flexDirection","column"),Z(q,"gap",0),D(Q,x0("claude-code")),K(q,b(X0,{get when(){return f.claudeStatus()===null},get children(){var U=W("text");return K(U,()=>F("settings.accounts.checking")),u((L)=>Z(U,"fg",J.textMuted,L)),U}}),null),K(q,b(X0,{get when(){return f.claudeStatus()},children:(U)=>(()=>{var L=W("box"),O=W("text");return D(L,O),Z(L,"flexDirection","column"),Z(L,"gap",0),Z(O,"wrapMode","word"),K(O,()=>Y(U())),K(L,()=>{let M=U().account;if(M.kind==="oauth"){let R=[M.organization,M.billingType].filter((S)=>!!S).join(" \xB7 ");return(()=>{var S=W("text");return Z(S,"wrapMode","word"),K(S,()=>F("settings.accounts.loggedIn",{email:M.email}),null),K(S,R?` (${R})`:"",null),u((a)=>Z(S,"fg",J.success,a)),S})()}return(()=>{var R=W("text");return K(R,()=>F("settings.accounts.notLoggedIn")),u((S)=>Z(R,"fg",J.textMuted,S)),R})()},null),K(L,b(X0,{get when(){return U().accountError},children:(M)=>(()=>{var R=W("text");return Z(R,"wrapMode","word"),K(R,()=>`! ${M()}`),u((S)=>Z(R,"fg",J.warning,S)),R})()}),null),u((M)=>Z(O,"fg",U().binary.found?J.textMuted:J.warning,M)),L})()}),null),D(H,B),Z(H,"flexDirection","column"),Z(H,"gap",0),D(B,x0("codex")),K(H,b(X0,{get when(){return f.codexStatus()===null},get children(){var U=W("text");return K(U,()=>F("settings.accounts.checking")),u((L)=>Z(U,"fg",J.textMuted,L)),U}}),null),K(H,b(X0,{get when(){return f.codexStatus()},children:(U)=>(()=>{var L=W("box"),O=W("text");return D(L,O),Z(L,"flexDirection","column"),Z(L,"gap",0),Z(O,"wrapMode","word"),K(O,()=>Y(U())),K(L,()=>{let M=U().account;if(M.kind==="chatgpt")return(()=>{var R=W("text");return Z(R,"wrapMode","word"),K(R,()=>F("settings.accounts.chatgptLogin",{email:M.email}),null),K(R,(()=>{var S=I0(()=>!!M.plan);return()=>S()?` (${M.plan})`:""})(),null),u((S)=>Z(R,"fg",J.success,S)),R})();if(M.kind==="apikey")return(()=>{var R=W("text");return K(R,()=>F("settings.accounts.apiKeyConfigured")),u((S)=>Z(R,"fg",J.success,S)),R})();return(()=>{var R=W("text");return K(R,()=>F("settings.accounts.notLoggedIn")),u((S)=>Z(R,"fg",J.textMuted,S)),R})()},null),K(L,b(X0,{get when(){return U().accountError},children:(M)=>(()=>{var R=W("text");return Z(R,"wrapMode","word"),K(R,()=>`! ${M()}`),u((S)=>Z(R,"fg",J.warning,S)),R})()}),null),u((M)=>Z(O,"fg",U().binary.found?J.textMuted:J.warning,M)),L})()}),null),D(V,j),Z(V,"flexDirection","column"),Z(V,"gap",0),D(j,x0("copilot")),K(V,b(X0,{get when(){return f.copilotStatus()===null},get children(){var U=W("text");return K(U,()=>F("settings.accounts.checking")),u((L)=>Z(U,"fg",J.textMuted,L)),U}}),null),K(V,b(X0,{get when(){return f.copilotStatus()},children:(U)=>(()=>{var L=W("box"),O=W("text");return D(L,O),Z(L,"flexDirection","column"),Z(L,"gap",0),Z(O,"wrapMode","word"),K(O,()=>Y(U())),K(L,()=>{let M=U().account;if(M.kind==="token")return(()=>{var R=W("text");return K(R,()=>F("settings.accounts.tokenConfigured",{source:M.source})),u((S)=>Z(R,"fg",J.success,S)),R})();if(M.kind==="oauth")return(()=>{var R=W("text");return K(R,()=>F("settings.accounts.copilotDetected")),u((S)=>Z(R,"fg",J.success,S)),R})();return(()=>{var R=W("text");return K(R,()=>F("settings.accounts.notLoggedIn")),u((S)=>Z(R,"fg",J.textMuted,S)),R})()},null),K(L,b(X0,{get when(){return U().accountError},children:(M)=>(()=>{var R=W("text");return Z(R,"wrapMode","word"),K(R,()=>`! ${M()}`),u((S)=>Z(R,"fg",J.warning,S)),R})()}),null),u((M)=>Z(O,"fg",U().binary.found?J.textMuted:J.warning,M)),L})()}),null),u((U)=>{var L=J.text,O=ff.BOLD,M=J.textMuted,R=J.text,S=ff.BOLD,a=J.text,N=ff.BOLD,g=J.text,C=ff.BOLD;return L!==U.e&&(U.e=Z(G,"fg",L,U.e)),O!==U.t&&(U.t=Z(G,"attributes",O,U.t)),M!==U.a&&(U.a=Z(X,"fg",M,U.a)),R!==U.o&&(U.o=Z(Q,"fg",R,U.o)),S!==U.i&&(U.i=Z(Q,"attributes",S,U.i)),a!==U.n&&(U.n=Z(B,"fg",a,U.n)),N!==U.s&&(U.s=Z(B,"attributes",N,U.s)),g!==U.h&&(U.h=Z(j,"fg",g,U.h)),C!==U.r&&(U.r=Z(j,"attributes",C,U.r)),U},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0}),z})()}function qD(f){let{theme:J}=i0(),Y=()=>f.level()==="body",z=()=>Y()&&f.bodyRow()===0,G=()=>Y()&&f.bodyRow()===1,X=()=>Y()&&f.bodyRow()===2,q=(H)=>H?J.primary:J.textMuted,Q=(H)=>H?ff.BOLD|ff.UNDERLINE:void 0;return(()=>{var H=W("box"),B=W("text"),V=W("text"),j=W("box"),U=W("box"),L=W("text"),O=W("input"),M=W("box"),R=W("text"),S=W("input"),a=W("box"),N=W("text");return D(H,B),D(H,V),D(H,j),Z(H,"flexDirection","column"),Z(H,"gap",1),K(B,()=>F("settings.feedback.title")),Z(V,"wrapMode","word"),K(V,()=>F("settings.feedback.hint")),D(j,U),D(j,M),D(j,a),Z(j,"flexDirection","column"),Z(j,"gap",1),D(U,L),D(U,O),Z(U,"gap",0),K(L,()=>F("settings.feedback.titleLabel")),Z(O,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(0)}),Z(O,"onInput",(g)=>f.setTitle(X1(g))),Z(O,"onSubmit",()=>f.onTitleSubmit()),D(M,R),D(M,S),Z(M,"gap",0),K(R,()=>F("settings.feedback.descriptionLabel")),Z(S,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(1)}),Z(S,"onInput",(g)=>f.setBody(X1(g))),Z(S,"onSubmit",()=>f.onBodySubmit()),D(a,N),Z(a,"flexDirection","row"),Z(a,"paddingLeft",1),Z(a,"paddingRight",1),Z(a,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(2),f.submit()}),K(N,()=>F("settings.feedback.send")),K(H,b(X0,{get when(){return f.status()},get children(){var g=W("text");return Z(g,"wrapMode","word"),K(g,()=>f.status()),u((C)=>Z(g,"fg",f.status().startsWith("error:")?J.warning:J.success,C)),g}}),null),u((g)=>{var C=J.text,y=ff.BOLD,_=J.textMuted,z0=q(z()),t=Q(z()),Y0=f.title(),T=F("settings.feedback.titlePlaceholder"),Q0=z(),p=q(G()),D0=Q(G()),g0=f.body(),$=F("settings.feedback.descriptionPlaceholder"),E=G(),f0=X()?J.primary:J.backgroundElement,I=X()?J.selectedListItemText:J.accent,G0=ff.BOLD;return C!==g.e&&(g.e=Z(B,"fg",C,g.e)),y!==g.t&&(g.t=Z(B,"attributes",y,g.t)),_!==g.a&&(g.a=Z(V,"fg",_,g.a)),z0!==g.o&&(g.o=Z(L,"fg",z0,g.o)),t!==g.i&&(g.i=Z(L,"attributes",t,g.i)),Y0!==g.n&&(g.n=Z(O,"value",Y0,g.n)),T!==g.s&&(g.s=Z(O,"placeholder",T,g.s)),Q0!==g.h&&(g.h=Z(O,"focused",Q0,g.h)),p!==g.r&&(g.r=Z(R,"fg",p,g.r)),D0!==g.d&&(g.d=Z(R,"attributes",D0,g.d)),g0!==g.l&&(g.l=Z(S,"value",g0,g.l)),$!==g.u&&(g.u=Z(S,"placeholder",$,g.u)),E!==g.c&&(g.c=Z(S,"focused",E,g.c)),f0!==g.w&&(g.w=Z(a,"backgroundColor",f0,g.w)),I!==g.m&&(g.m=Z(N,"fg",I,g.m)),G0!==g.f&&(g.f=Z(N,"attributes",G0,g.f)),g},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0,w:void 0,m:void 0,f:void 0}),H})()}function QD(f){let{theme:J}=i0(),Y=()=>f.level()==="body"&&f.bodyRow()===0,z=()=>f.level()==="body"&&f.bodyRow()===1,G=()=>dX(nX(f.hasDaemon),"remote-projects"),X=()=>f.level()==="body"&&f.bodyRow()===G(),q=()=>dX(nX(f.hasDaemon),"auto-status"),Q=()=>f.level()==="body"&&f.bodyRow()===q(),H=()=>dX(nX(f.hasDaemon),"dispatcher"),B=()=>f.level()==="body"&&f.bodyRow()===H();return(()=>{var V=W("box"),j=W("text"),U=W("text"),L=W("box"),O=W("text"),M=W("text"),R=W("box"),S=W("text"),a=W("text"),N=W("box"),g=W("text"),C=W("text"),y=W("box"),_=W("text"),z0=W("text"),t=W("box"),Y0=W("text");return D(V,j),D(V,U),D(V,L),D(V,M),D(V,R),Z(V,"flexDirection","column"),Z(V,"gap",1),K(j,()=>F("settings.dev.reset")),Z(U,"wrapMode","word"),K(U,()=>F("settings.dev.resetHint")),D(L,O),Z(L,"flexDirection","row"),Z(L,"paddingLeft",1),Z(L,"paddingRight",1),Z(L,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(0),f.confirmReset()}),K(O,()=>F("settings.dev.resetButton")),K(V,b(X0,{get when(){return f.hasDaemon},get children(){var T=W("box"),Q0=W("text"),p=W("text"),D0=W("box"),g0=W("text");return D(T,Q0),D(T,p),D(T,D0),Z(T,"flexDirection","column"),Z(T,"gap",0),Z(T,"paddingTop",1),K(Q0,()=>F("settings.dev.restart")),Z(p,"wrapMode","word"),K(p,()=>F("settings.dev.restartHint")),D(D0,g0),Z(D0,"flexDirection","row"),Z(D0,"paddingLeft",1),Z(D0,"paddingRight",1),Z(D0,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(1),f.confirmRestartDaemon()}),K(g0,()=>F("settings.dev.restartButton")),u(($)=>{var E=J.text,f0=ff.BOLD,I=J.textMuted,G0=z()?J.primary:J.backgroundElement,x=z()?J.selectedListItemText:J.accent,c=ff.BOLD;return E!==$.e&&($.e=Z(Q0,"fg",E,$.e)),f0!==$.t&&($.t=Z(Q0,"attributes",f0,$.t)),I!==$.a&&($.a=Z(p,"fg",I,$.a)),G0!==$.o&&($.o=Z(D0,"backgroundColor",G0,$.o)),x!==$.i&&($.i=Z(g0,"fg",x,$.i)),c!==$.n&&($.n=Z(g0,"attributes",c,$.n)),$},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),T}}),M),Z(M,"wrapMode","word"),K(M,()=>F("settings.dev.doctorHint")),D(R,S),D(R,a),D(R,N),D(R,C),D(R,y),D(R,z0),D(R,t),Z(R,"flexDirection","column"),Z(R,"gap",0),Z(R,"paddingTop",1),K(S,()=>F("settings.dev.experimental")),Z(a,"wrapMode","word"),K(a,()=>F("settings.dev.remoteHint")),D(N,g),Z(N,"flexDirection","row"),Z(N,"paddingLeft",1),Z(N,"paddingRight",1),Z(N,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(G()),f.toggleRemoteProjects()}),K(g,(()=>{var T=I0(()=>!!f.remoteProjectsEnabled());return()=>T()?F("settings.dev.remoteOn"):F("settings.dev.remoteOff")})()),Z(C,"wrapMode","word"),K(C,()=>F("settings.dev.autoStatusHint")),D(y,_),Z(y,"flexDirection","row"),Z(y,"paddingLeft",1),Z(y,"paddingRight",1),Z(y,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(q()),f.toggleAutoStatus()}),K(_,(()=>{var T=I0(()=>!!f.autoStatusEnabled());return()=>T()?F("settings.dev.autoStatusOn"):F("settings.dev.autoStatusOff")})()),Z(z0,"wrapMode","word"),K(z0,()=>F("settings.dev.dispatcherHint")),D(t,Y0),Z(t,"flexDirection","row"),Z(t,"paddingLeft",1),Z(t,"paddingRight",1),Z(t,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(H()),f.toggleDispatcher()}),K(Y0,(()=>{var T=I0(()=>!!f.dispatcherEnabled());return()=>T()?F("settings.dev.dispatcherOn"):F("settings.dev.dispatcherOff")})()),u((T)=>{var Q0=J.text,p=ff.BOLD,D0=J.textMuted,g0=Y()?J.primary:J.backgroundElement,$=Y()?J.selectedListItemText:J.warning,E=ff.BOLD,f0=J.textMuted,I=J.text,G0=ff.BOLD,x=J.textMuted,c=X()?J.primary:J.backgroundElement,Z0=X()?J.selectedListItemText:J.text,V0=f.remoteProjectsEnabled()?ff.BOLD:void 0,H0=J.textMuted,y0=Q()?J.primary:J.backgroundElement,w0=Q()?J.selectedListItemText:J.text,T0=f.autoStatusEnabled()?ff.BOLD:void 0,r0=J.textMuted,P=B()?J.primary:J.backgroundElement,M0=B()?J.selectedListItemText:J.text,J0=f.dispatcherEnabled()?ff.BOLD:void 0;return Q0!==T.e&&(T.e=Z(j,"fg",Q0,T.e)),p!==T.t&&(T.t=Z(j,"attributes",p,T.t)),D0!==T.a&&(T.a=Z(U,"fg",D0,T.a)),g0!==T.o&&(T.o=Z(L,"backgroundColor",g0,T.o)),$!==T.i&&(T.i=Z(O,"fg",$,T.i)),E!==T.n&&(T.n=Z(O,"attributes",E,T.n)),f0!==T.s&&(T.s=Z(M,"fg",f0,T.s)),I!==T.h&&(T.h=Z(S,"fg",I,T.h)),G0!==T.r&&(T.r=Z(S,"attributes",G0,T.r)),x!==T.d&&(T.d=Z(a,"fg",x,T.d)),c!==T.l&&(T.l=Z(N,"backgroundColor",c,T.l)),Z0!==T.u&&(T.u=Z(g,"fg",Z0,T.u)),V0!==T.c&&(T.c=Z(g,"attributes",V0,T.c)),H0!==T.w&&(T.w=Z(C,"fg",H0,T.w)),y0!==T.m&&(T.m=Z(y,"backgroundColor",y0,T.m)),w0!==T.f&&(T.f=Z(_,"fg",w0,T.f)),T0!==T.y&&(T.y=Z(_,"attributes",T0,T.y)),r0!==T.g&&(T.g=Z(z0,"fg",r0,T.g)),P!==T.p&&(T.p=Z(t,"backgroundColor",P,T.p)),M0!==T.b&&(T.b=Z(Y0,"fg",M0,T.b)),J0!==T.T&&(T.T=Z(Y0,"attributes",J0,T.T)),T},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0,w:void 0,m:void 0,f:void 0,y:void 0,g:void 0,p:void 0,b:void 0,T:void 0}),V})()}function HD(){let{theme:f}=i0(),J=N4(),Y=Object.keys(wB).sort();return(()=>{var z=W("box"),G=W("text"),X=W("text"),q=W("box"),Q=W("text"),H=W("text"),B=W("text"),V=W("text");return D(z,G),D(z,X),D(z,q),D(z,B),D(z,V),Z(z,"flexDirection","column"),Z(z,"gap",1),K(G,()=>F("settings.keybindings.title")),Z(X,"wrapMode","word"),K(X,()=>F("settings.keybindings.hint")),D(q,Q),D(q,H),Z(q,"flexDirection","column"),Z(q,"gap",0),K(Q,()=>F("settings.keybindings.configFile")),Z(H,"wrapMode","word"),K(H,()=>J.path,null),K(H,(()=>{var j=I0(()=>!!J.exists);return()=>j()?"":F("settings.keybindings.notCreated")})(),null),K(z,b(X0,{get when(){return!J.exists},get children(){var j=W("box"),U=W("text"),L=W("text"),O=W("text"),M=W("text"),R=W("text"),S=W("text"),a=W("text"),N=W("text"),g=W("text"),C=W("text");return D(j,U),D(j,L),D(j,O),D(j,M),D(j,R),D(j,S),D(j,a),D(j,N),D(j,g),D(j,C),Z(j,"flexDirection","column"),Z(j,"gap",0),K(U,()=>F("settings.keybindings.example")),D(L,x0("bindings:")),D(O,x0(" chat.fork.new: ctrl+g # string = one chord")),D(M,x0(" sidebar.select: [enter] # list = several chords")),D(R,x0(" files.createPR: null # null = unbind")),D(S,x0(" tmux.tab.new: ctrl+y # tmux session key (see below)")),D(a,x0(" tmux.layout.workspaceSplit: g # prefix g")),D(N,x0("darwin: # platform overlay (also: linux)")),D(g,x0(" bindings:")),D(C,x0(" palette.open: [cmd+p, ctrl+p]")),u((y)=>{var _=f.text,z0=ff.BOLD,t=f.textMuted,Y0=f.textMuted,T=f.textMuted,Q0=f.textMuted,p=f.textMuted,D0=f.textMuted,g0=f.textMuted,$=f.textMuted,E=f.textMuted;return _!==y.e&&(y.e=Z(U,"fg",_,y.e)),z0!==y.t&&(y.t=Z(U,"attributes",z0,y.t)),t!==y.a&&(y.a=Z(L,"fg",t,y.a)),Y0!==y.o&&(y.o=Z(O,"fg",Y0,y.o)),T!==y.i&&(y.i=Z(M,"fg",T,y.i)),Q0!==y.n&&(y.n=Z(R,"fg",Q0,y.n)),p!==y.s&&(y.s=Z(S,"fg",p,y.s)),D0!==y.h&&(y.h=Z(a,"fg",D0,y.h)),g0!==y.r&&(y.r=Z(N,"fg",g0,y.r)),$!==y.d&&(y.d=Z(g,"fg",$,y.d)),E!==y.l&&(y.l=Z(C,"fg",E,y.l)),y},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0}),j}}),B),K(z,b(X0,{get when(){return J.exists},get children(){var j=W("box"),U=W("text");return D(j,U),Z(j,"flexDirection","column"),Z(j,"gap",0),K(U,()=>F("settings.keybindings.overridesApplied")),K(j,b(X0,{get when(){return J.applied.length===0},get children(){var L=W("text");return K(L,()=>F("settings.keybindings.none")),u((O)=>Z(L,"fg",f.textMuted,O)),L}}),null),K(j,b(Zf,{get each(){return J.applied},children:(L)=>(()=>{var O=W("text");return Z(O,"wrapMode","word"),K(O,()=>`${L.id} \u2192 ${L.keys.length>0?L.keys.join(" / "):"(unbound)"} (default: ${L.defaultKeys.join(" / ")})`),u((M)=>Z(O,"fg",f.text,M)),O})()}),null),u((L)=>{var O=f.text,M=ff.BOLD;return O!==L.e&&(L.e=Z(U,"fg",O,L.e)),M!==L.t&&(L.t=Z(U,"attributes",M,L.t)),L},{e:void 0,t:void 0}),j}}),B),K(z,b(X0,{get when(){return J.warnings.length>0},get children(){var j=W("box"),U=W("text");return D(j,U),Z(j,"flexDirection","column"),Z(j,"gap",0),K(U,()=>F("settings.keybindings.warnings")),K(j,b(Zf,{get each(){return J.warnings},children:(L)=>(()=>{var O=W("text");return Z(O,"wrapMode","word"),K(O,`! ${L}`),u((M)=>Z(O,"fg",f.warning,M)),O})()}),null),u((L)=>{var O=f.warning,M=ff.BOLD;return O!==L.e&&(L.e=Z(U,"fg",O,L.e)),M!==L.t&&(L.t=Z(U,"attributes",M,L.t)),L},{e:void 0,t:void 0}),j}}),B),D(B,x0("tmux session keys use the same file: tmux.tab.new (ctrl+t), tmux.tab.prev/next (ctrl+[/]), tmux.tab.close (ctrl+w), tmux.tab.rename (f2), tmux.tab.chooseEngine (ctrl+shift+t), tmux.detach (ctrl+q), tmux.focus (4 chords, left/down/up/right), and prefix layout keys: workspaceSplit (s), workspaceClose (x), workspaceReset (r), tasksToggle (a), opsToggle (o), terminalToggle (z). They apply when a session is (re)built.")),Z(B,"wrapMode","word"),Z(V,"wrapMode","word"),K(V,()=>`Fixed (not rebindable): ${Y.join(", ")}.`),u((j)=>{var U=f.text,L=ff.BOLD,O=f.textMuted,M=f.text,R=ff.BOLD,S=f.textMuted,a=f.textMuted,N=f.textMuted;return U!==j.e&&(j.e=Z(G,"fg",U,j.e)),L!==j.t&&(j.t=Z(G,"attributes",L,j.t)),O!==j.a&&(j.a=Z(X,"fg",O,j.a)),M!==j.o&&(j.o=Z(Q,"fg",M,j.o)),R!==j.i&&(j.i=Z(Q,"attributes",R,j.i)),S!==j.n&&(j.n=Z(H,"fg",S,j.n)),a!==j.s&&(j.s=Z(B,"fg",a,j.s)),N!==j.h&&(j.h=Z(V,"fg",N,j.h)),j},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0}),z})()}var BD=k(()=>{h();h();h();h();h();h();h();h();Wf();H8();xf();G1();yG();Aq();bG();y8()});import{TextAttributes as ly}from"@opentui/core";function ay(f){return f.split(/[-_]+/).filter((J)=>J.length>0).map((J)=>J.charAt(0).toUpperCase()+J.slice(1)).join(" ")}function Tz(f){let J=vf(),Y=i0(),z=Y1(),{theme:G}=Y,[X,q]=r("sidebar"),[Q,H]=r("general"),[B,V]=r(0),[j,U]=r(0),[L,O]=r(""),[M,R]=r(""),[S,a]=r(""),N=U0(()=>Y.all().slice().sort()),[,g]=r(Math.max(0,N().findIndex((v)=>v===Y.selected))),C=e4(f.orchestrator),[y,_]=r(null),[z0,t]=r(null),[Y0,T]=r(null),Q0=!1;zf(()=>{if(Q()!=="accounts"||Q0)return;Q0=!0,EZ().then(_),xZ().then(t),wZ().then(T)});function p(){return YD(Q(),{themeNames:N(),focusAccentSlots:yz,engineList:u0(),hasDaemon:C})}function D0(){return p().length}function g0(){return Lz(f.kv.get(oJ,Dz))}function $(v){if(Y.selected===v)return;if(!Y.set(v))return;f.kv.set("activeTheme",v),f.onVisualPrefsChange?.()}function E(){return oj()}function f0(v){if(oj()===v)return;xX(v),f.kv.set(bQ,v),f.onVisualPrefsChange?.()}function I(v){if(Y.transparentBackground===v)return;Y.setTransparentBackground(v),f.kv.set("transparentBackground",v),f.onVisualPrefsChange?.()}function G0(){I(!Y.transparentBackground)}function x(v){if(Y.focusAccent===v)return;Y.setFocusAccent(v),f.kv.set("focusAccent",v),f.onVisualPrefsChange?.()}function c(v){f.kv.set(oJ,v)}function Z0(){return f.kv.get("notifications.toast.enabled",!0)!==!1}function V0(){return f.kv.get("notifications.sound.enabled",!0)!==!1}function H0(){f.kv.set("notifications.toast.enabled",!Z0())}function y0(){f.kv.set("notifications.sound.enabled",!V0())}function w0(){return f.kv.get(Sq,!0)!==!1}function T0(){f.kv.set(Sq,!w0())}function r0(){return f.kv.get("experimental.remoteProjects",!1)===!0}function P(){f.kv.set("experimental.remoteProjects",!r0())}function M0(){return f.kv.get(jz,!1)===!0}function J0(){f.kv.set(jz,!M0())}function F0(){return f.kv.get(Wz,!1)===!0}function a0(){f.kv.set(Wz,!F0())}function p0(){let v=f.kv.get("customEngineIds",[]);return Array.isArray(v)?v.filter((A0)=>typeof A0==="string"&&A0.trim().length>0):[]}function u0(){return[...cf,...p0()]}function _0(v){let A0=f.kv.get(jJ(v),"");return typeof A0==="string"?A0.trim():""}function n(v){return _0(v)||BX(v).join(" ")}function q0(v){return Q1(v)&&_0(v).length===0&&!o0(v)}function b0(v){let A0=f.kv.get(WJ(v),"");return typeof A0==="string"?A0.trim():""}function o0(v){return b0(v).length>0}function l0(v){return b0(v)||bB[v]||v}let[$0,t0]=r(kf("lastSelectedVendor")??Sf);function Rf(v){return $0()===v}function gf(v){af("lastSelectedVendor",v),f.kv.set("lastSelectedVendor",v),t0(v)}async function o(v){let A0=await zY.show(J,n(v),{dialogTitle:`${l0(v)} launch command`,fieldLabel:"command",submitLabel:"save",allowEmpty:!0});if(A0===void 0)return;f.kv.set(jJ(v),A0.trim())}async function e(v){let A0=await zY.show(J,l0(v),{dialogTitle:`${l0(v)} display name (blank = default)`,fieldLabel:"name",submitLabel:"save",allowEmpty:!0});if(A0===void 0)return;f.kv.set(WJ(v),A0.trim())}function B0(v){if(f.kv.set(jJ(v),""),f.kv.set(WJ(v),""),!Q1(v))f.kv.set("customEngineIds",p0().filter((A0)=>A0!==v)),U((A0)=>Math.max(0,Math.min(A0,u0().length)))}async function C0(){let v=await zY.show(J,"",{dialogTitle:"Add engine",fieldLabel:"id",submitLabel:"next",placeholder:"lowercase slug, e.g. aider"});if(v===void 0)return;let A0=v.trim().toLowerCase();if(!A0||Q1(A0)||p0().includes(A0))return;let Bf=await zY.show(J,"",{dialogTitle:`Add engine \xB7 ${A0}`,fieldLabel:"command",submitLabel:"next",placeholder:"e.g. aider --model sonnet"});if(Bf===void 0)return;let Ff=await zY.show(J,A0,{dialogTitle:`Add engine \xB7 ${A0}`,fieldLabel:"name",submitLabel:"add",allowEmpty:!0});if(f.kv.set("customEngineIds",[...p0(),A0]),Bf.trim())f.kv.set(jJ(A0),Bf.trim());let Qf=Ff?.trim()??"";f.kv.set(WJ(A0),Qf&&Qf!==A0?Qf:ay(A0))}function A(){if(Q()!=="engines"||X()!=="body")return null;let v=wQ(p(),j());return v?.kind==="engine"?v.vendor:null}function P0(){return _z(f.kv.get(_J,Zq))}function K0(){let v=Uz.indexOf(P0()),A0=Uz[(v+1)%Uz.length];if(A0)f.kv.set(_J,A0)}function E0(){let v=f.kv.get(kY,"");return typeof v==="string"?v:""}async function W0(){let v=await zY.show(J,E0(),{dialogTitle:"Custom editor command (use {file} for the path)",fieldLabel:"command",submitLabel:"save",allowEmpty:!0});if(v===void 0)return;let A0=v.trim();if(f.kv.set(kY,A0),A0)f.kv.set(_J,"custom")}async function L0(){a("submitting...");try{let v=MG({title:L(),body:M()});a(`sent: ${v.url}`),O(""),R(""),U(0)}catch(v){a(`error: ${v instanceof Error?v.message:String(v)}`)}}let R0=()=>Q()==="feedback"&&X()==="body";function Jf(v){let A0=j()+v;if(A0<0||A0>2){q("sidebar");return}U(A0)}function Yf(){if(X()!=="sidebar"||D0()===0)return;if(q("body"),U(0),Q()==="general")g(0)}function n0(v){if(X()==="sidebar"){let Ff=(B()+v+Iz.length)%Iz.length;V(Ff);let Qf=Iz[Ff];if(Qf)H(Qf.id),U(0);return}let A0=D0();if(A0===0)return;let Bf=(j()+v+A0)%A0;if(U(Bf),wQ(p(),Bf)?.kind==="theme")g(Bf)}function yf(v){H(v),V(Iz.findIndex((A0)=>A0.id===v)),U(0),q("sidebar")}let k0={theme:(v)=>$(v.name),language:(v)=>f0(v.locale),transparent:()=>G0(),focusAccent:(v)=>x(v.slot),toast:()=>H0(),sound:()=>y0(),zenKeepTasks:()=>T0(),surface:(v)=>c(v.surface),editorKind:()=>K0(),editorCustom:()=>void W0(),engine:(v)=>void o(v.vendor),engineAdd:()=>void C0(),feedbackTitle:()=>U(0),feedbackBody:()=>U(1),feedbackSend:()=>void L0(),devReset:()=>void g8(J,f.kv,z),devRestartDaemon:()=>void R8(J,f.orchestrator,z),devRemoteProjects:()=>P(),devAutoStatus:()=>J0(),devDispatcher:()=>a0()};function wf(){let v=wQ(p(),j());if(!v)return;k0[v.kind](v)}return Uf(()=>({enabled:(!f.standalone||J.stack.length===0)&&!R0(),bindings:[{key:"down",cmd:()=>n0(1)},{key:"up",cmd:()=>n0(-1)},{key:"j",cmd:()=>n0(1)},{key:"k",cmd:()=>n0(-1)},{key:"tab",cmd:()=>n0(1)},{key:"right",cmd:Yf},{key:"l",cmd:Yf},{key:"left",cmd:()=>q("sidebar")},{key:"h",cmd:()=>q("sidebar")},{key:"return",cmd:()=>{if(X()==="sidebar"){Yf();return}wf()}},{key:"t",cmd:G0},{key:"r",cmd:()=>{let v=A();if(v)e(v)}},{key:"x",cmd:()=>{let v=A();if(v)B0(v)}},{key:"d",cmd:()=>{let v=A();if(v)gf(v)}}]})),Uf(()=>({enabled:R0(),bindings:[{key:"tab",cmd:()=>Jf(1)},{key:"shift+tab",cmd:()=>Jf(-1)}]})),Uf(()=>({enabled:R0()&&j()===2,bindings:[{key:"return",cmd:()=>void L0()}]})),(()=>{var v=W("box"),A0=W("box"),Bf=W("text"),Ff=W("text"),Qf=W("box"),d=W("box"),s=W("box"),S0=W("text");return D(v,A0),D(v,Qf),D(v,s),Z(v,"paddingLeft",2),Z(v,"paddingRight",2),Z(v,"paddingBottom",1),Z(v,"gap",1),D(A0,Bf),D(A0,Ff),Z(A0,"flexDirection","row"),Z(A0,"justifyContent","space-between"),K(Bf,()=>F("settings.title")),Z(Ff,"onMouseUp",()=>f.onClose()),K(Ff,()=>F("settings.esc")),D(Qf,d),Z(Qf,"flexDirection","row"),Z(Qf,"gap",2),K(Qf,b(zD,{level:X,cursor:B,switchSection:yf}),d),Z(d,"flexGrow",1),Z(d,"flexShrink",1),Z(d,"flexDirection","column"),Z(d,"gap",1),K(d,b(X0,{get when(){return Q()==="general"},get children(){return b(GD,{level:X,bodyRow:j,setLevel:q,setBodyRow:U,themeNames:N,setThemeCursor:g,selectTheme:$,currentLocale:E,selectLanguage:f0,toggleTransparent:G0,selectFocusAccent:x,toastEnabled:Z0,soundEnabled:V0,toggleToast:H0,toggleSound:y0,zenKeepsTasks:w0,toggleZenKeepsTasks:T0,settingsSurface:g0,selectSurface:c,editorKind:P0,cycleEditorKind:K0,editorCustomCommand:E0,editEditorCustom:()=>void W0()})}}),null),K(d,b(X0,{get when(){return Q()==="engines"},get children(){return b(XD,{level:X,bodyRow:j,setLevel:q,setBodyRow:U,get vendors(){return u0()},isCustom:(N0)=>!Q1(N0),displayName:l0,commandText:n,isDefault:q0,isDefaultEngine:Rf,editEngine:(N0)=>void o(N0),renameEngine:(N0)=>void e(N0),resetEngine:B0,onAddEngine:()=>void C0()})}}),null),K(d,b(X0,{get when(){return Q()==="accounts"},get children(){return b(ZD,{claudeStatus:y,codexStatus:z0,copilotStatus:Y0})}}),null),K(d,b(X0,{get when(){return Q()==="keys"},get children(){return b(HD,{})}}),null),K(d,b(X0,{get when(){return Q()==="feedback"},get children(){return b(qD,{level:X,bodyRow:j,setLevel:q,setBodyRow:U,title:L,setTitle:(N0)=>{O(N0),a("")},body:M,setBody:(N0)=>{R(N0),a("")},status:S,onTitleSubmit:()=>U(1),onBodySubmit:()=>void L0(),submit:()=>void L0()})}}),null),K(d,b(X0,{get when(){return Q()==="dev"},get children(){return b(QD,{level:X,bodyRow:j,setLevel:q,setBodyRow:U,hasDaemon:C,confirmReset:()=>void g8(J,f.kv,z),confirmRestartDaemon:()=>void R8(J,f.orchestrator,z),remoteProjectsEnabled:r0,toggleRemoteProjects:P,autoStatusEnabled:M0,toggleAutoStatus:J0,dispatcherEnabled:F0,toggleDispatcher:a0})}}),null),D(s,S0),Z(s,"paddingTop",0),K(S0,(()=>{var N0=I0(()=>!!R0());return()=>N0()?F("settings.nav.feedback"):F("settings.nav.default")})()),u((N0)=>{var Z1=ly.BOLD,K1=G.text,tf=G.textMuted,v1=G.textMuted;return Z1!==N0.e&&(N0.e=Z(Bf,"attributes",Z1,N0.e)),K1!==N0.t&&(N0.t=Z(Bf,"fg",K1,N0.t)),tf!==N0.a&&(N0.a=Z(Ff,"fg",tf,N0.a)),v1!==N0.o&&(N0.o=Z(S0,"fg",v1,N0.o)),N0},{e:void 0,t:void 0,a:void 0,o:void 0}),v})()}var b8=k(()=>{h();h();h();h();h();h();h();h();Wf();fz();E1();fQ();ZX();zq();Of();cB();S1();U1();xf();G1();qq();b1();W8();P1();O8();JD();y8();BD();Tz.show=(f,J,Y)=>{let z=!1;return new Promise((G)=>{f.replace(()=>b(Tz,{kv:J,orchestrator:Y,onVisualPrefsChange:()=>{z=!0},onClose:()=>G({visualPrefsChanged:z})}),()=>G({visualPrefsChanged:z}))})}});import{TextAttributes as $y}from"@opentui/core";function WD(){let{theme:f}=i0(),J=TJ(),Y=NQ(),z=()=>Y.toasts().slice(-jD),G=()=>Math.max(0,J().width-ry-py),X=()=>Math.max(0,J().height-_y-jD-1);return b(X0,{get when(){return Y.toasts().length>0},get children(){var q=W("box");return Z(q,"position","absolute"),Z(q,"zIndex",2500),Z(q,"width",40),Z(q,"flexDirection","column"),Z(q,"gap",0),K(q,b(Zf,{get each(){return z()},children:(Q)=>{let H=()=>Q.kind==="needs_input"?f.warning:Q.kind==="error"?f.error:f.success,B=()=>f.selectedListItemText,V=()=>Q.kind==="needs_input"?"?":Q.kind==="error"?"\u2715":"\u2713";return(()=>{var j=W("box"),U=W("text"),L=W("text");return D(j,U),D(j,L),Z(j,"flexDirection","row"),Z(j,"gap",1),Z(j,"paddingLeft",1),Z(j,"paddingRight",1),Z(j,"onMouseUp",()=>Y.dismiss(Q.id)),Z(U,"wrapMode","none"),K(U,V),Z(L,"wrapMode","none"),K(L,()=>Q.title),u((O)=>{var M=H(),R=B(),S=$y.BOLD,a=B();return M!==O.e&&(O.e=Z(j,"backgroundColor",M,O.e)),R!==O.t&&(O.t=Z(U,"fg",R,O.t)),S!==O.a&&(O.a=Z(U,"attributes",S,O.a)),a!==O.o&&(O.o=Z(L,"fg",a,O.o)),O},{e:void 0,t:void 0,a:void 0,o:void 0}),j})()}})),u((Q)=>{var H=G(),B=X();return H!==Q.e&&(Q.e=Z(q,"left",H,Q.e)),B!==Q.t&&(Q.t=Z(q,"top",B,Q.t)),Q},{e:void 0,t:void 0}),q}})}var jD=4,ry=40,py=2,_y=2;var VD=k(()=>{h();h();h();h();h();h();h();Wf();yQ();xf()});import{TextAttributes as oy}from"@opentui/core";function sy(f,J){let Y=f?`v${f}`:F("update.skew.olderBuild");return F("update.skew.hint",{daemon:Y,clientVersion:J})}function KD(f){let{theme:J}=i0(),Y=()=>Math.max(4,f.width()-2);return b(X0,{get when(){return f.stale()},get children(){var z=W("box"),G=W("text"),X=W("box"),q=W("text"),Q=W("box"),H=W("text");return D(z,G),D(z,X),D(z,Q),Z(z,"flexDirection","column"),Z(z,"flexShrink",0),Z(z,"paddingLeft",1),Z(z,"paddingRight",1),Z(z,"paddingBottom",1),Z(G,"wrapMode","none"),K(G,()=>"\u2594".repeat(Y())),D(X,q),Z(X,"flexDirection","row"),Z(X,"gap",1),Z(q,"wrapMode","none"),K(q,()=>F("update.skew.title")),D(Q,H),Z(Q,"flexDirection","row"),Z(Q,"gap",1),Z(H,"wrapMode","word"),K(H,()=>sy(f.daemonVersion(),f.clientVersion)),u((B)=>{var{warning:V,warning:j}=J,U=oy.BOLD,L=J.text;return V!==B.e&&(B.e=Z(G,"fg",V,B.e)),j!==B.t&&(B.t=Z(q,"fg",j,B.t)),U!==B.a&&(B.a=Z(q,"attributes",U,B.a)),L!==B.o&&(B.o=Z(H,"fg",L,B.o)),B},{e:void 0,t:void 0,a:void 0,o:void 0}),z}})}var UD=k(()=>{h();h();h();h();h();h();Wf();xf();G1()});function DD(f,J){return f.find((Y)=>Y.id!==J&&!Y.archived)}async function ty(f){let J=f.tasks.find((X)=>X.id===f.taskId);if(!J)return null;let Y=!J.archived;try{await f.orch.setArchived(f.taskId,Y)}catch(X){return f.logger.error(`${f.logPrefix} archive failed:`,X),null}if(!Y)return{archived:Y};let z=Lf(f.taskId),G=DD(f.tasks,f.taskId);if(await bJ(z,G?Lf(G.id):void 0).catch((X)=>{f.logger.error(`${f.logPrefix} switch-client failed:`,X)}),f.updateActiveTask)await f.orch.setActiveTask(G?.id??null).catch(()=>{});return await l1(z).catch((X)=>{f.logger.error(`${f.logPrefix} kill tmux session failed:`,X)}),{archived:Y,nextTask:G}}async function ey(f){let J=DD(f.tasks,f.taskId),Y=Lf(f.taskId);if(f.switchBeforeKill)await bJ(Y,J?Lf(J.id):void 0).catch((z)=>{f.logger.error(`${f.logPrefix} switch-client failed:`,z)});if(f.updateActiveTask)await f.orch?.setActiveTask(J?.id??null).catch(()=>{});return await l1(Y).catch((z)=>{f.logger.error(`${f.logPrefix} kill tmux session failed:`,z)}),{nextTask:J}}async function LD(f,J){if(!f.orch)return;let Y=f.tasks().find((G)=>G.id===J);if(!Y)return;if(!Y.archived){if(!await f.confirm({title:`Archive "${Y.title}"?`,body:"Moves it to Archives and stops its running session. The worktree, branch, and chat history stay \u2014 unarchive to bring it back.",cancelLabel:"cancel",confirmLabel:"archive"}))return}if(!await ty({orch:f.orch,tasks:f.tasks(),taskId:J,logger:f.logger,logPrefix:f.logPrefix,updateActiveTask:f.updateActiveTask}))return;await f.reload?.()}async function MD(f,J){if(!f.orch)return;let Y=f.tasks().find((q)=>q.id===J);if(!Y)return;if(!await f.confirm({title:`Delete "${Y.title}"?`,body:"Removes the task entry and its worktree. The tmux session (if any) is killed.",cancelLabel:"cancel",confirmLabel:"delete"}))return;let G=!1;try{await f.orch.deleteTask(J),G=!0}catch(q){if((q instanceof Error?q.message:String(q)).includes(DH)){if(await f.confirm({title:`"${Y.title}" has uncommitted changes`,body:"Its worktree has uncommitted or untracked work that will be permanently deleted. Force delete anyway?",cancelLabel:"cancel",confirmLabel:"force delete"}))try{await f.orch.deleteTask(J,{force:!0}),G=!0}catch(B){f.logger.error(`${f.logPrefix} force delete failed:`,B),f.notifyError?.(`Couldn't delete: ${B instanceof Error?B.message:String(B)}`)}}else f.logger.error(`${f.logPrefix} delete failed:`,q),f.notifyError?.(`Couldn't delete: ${q instanceof Error?q.message:String(q)}`)}if(!G)return;let{nextTask:X}=await ey({orch:f.orch,tasks:f.tasks(),taskId:J,logger:f.logger,logPrefix:f.logPrefix,switchBeforeKill:f.switchBeforeKill,updateActiveTask:f.updateActiveTask});await f.reload?.(),f.onTaskDeleted?.(J,X)}async function FD(f,J){let Y=f.tasks().find((G)=>G.id===J);if(!Y)return;let z=await f.promptText(Y.title);if(!z||!f.orch)return;try{await f.orch.setTitle(J,z)}catch(G){f.logger.error(`${f.logPrefix} task.rename failed:`,G),f.notifyError?.(`Couldn't rename task: ${G instanceof Error?G.message:String(G)}`);return}await f.reload?.()}async function OD(f,J){let Y=f.tasks().find((G)=>G.id===J);if(!Y||Y.kind==="main")return;let z=await f.promptText(Y.branch,{dialogTitle:"Rename branch",fieldLabel:"branch"});if(!z||!f.orch)return;try{await f.orch.setBranch(J,z)}catch(G){f.logger.error(`${f.logPrefix} task.setBranch failed:`,G),f.notifyError?.(`Couldn't rename branch: ${G instanceof Error?G.message:String(G)}`);return}await f.reload?.()}async function AD(f,J){let Y=f.tasks().find((X)=>X.id===J);if(!Y||!f.orch)return;let z=await lJ(),G=qY(z,Y.vendor??Sf);try{await f.orch.setVendor(J,G)}catch(X){f.logger.error(`${f.logPrefix} task.setVendor failed:`,X),f.notifyError?.(`Couldn't switch engine: ${X instanceof Error?X.message:String(X)}`);return}f.notifyInfo?.(`Engine \u2192 ${Vz(G)} (applies on reopen)`),await f.reload?.()}async function gD(f){let J=c1(),Y=f.cursorRepo()??J[0]??process.cwd();if(f.openCreateSurface&&await f.openCreateSurface(Y))return;let z=f.lastVendor()??Sf,G=await lJ();if(G.length===0)f.notifyInfo?.("No engine CLI detected \u2014 install claude or codex, or add one in Settings \u2192 Engines");let X=f.orch,q=await f.promptNewTask(Y,J,{defaultVendor:z,availableVendors:G,discoverAdoptable:X?(H)=>X.discoverAdoptableWorktrees(H):void 0});if(!q)return;if(f.rememberVendor(q.vendor),vJ(q.repo),f.onRepoSaved?.(),!X){f.logger.error(`${f.logPrefix} no daemon; cannot create task`);return}f.notifyInfo?.("Creating task\u2026");let Q;try{if(q.mode==="adopt")for(let H of q.adopt)Q=(await X.adoptWorktree({repo:q.repo,worktreePath:H.worktreePath,branch:H.branch,vendor:q.vendor})).id;else Q=(await X.createTask({repo:q.repo,baseRef:q.baseRef,vendor:q.vendor})).id}catch(H){f.logger.error(`${f.logPrefix} task.create/adopt failed:`,H),f.notifyError?.(`Couldn't create task: ${H instanceof Error?H.message:String(H)}`);return}if(await f.reload?.(),Q)f.selectTask?.(Q),await f.enterTask?.(Q)}var RD=k(()=>{fz();E1();FH();Of();S1();U1();J1()});import{spawn as fb}from"child_process";import{existsSync as Jb}from"fs";import{basename as Yb,delimiter as zb,isAbsolute as Gb,join as Xb}from"path";function S8(f,J,Y){if(Gb(f))return Y(f);let z=J.PATH??"";for(let G of z.split(zb)){if(!G)continue;if(Y(Xb(G,f)))return!0}return!1}function Qb(f){let J=Yb(f);if(J==="code")return"VS Code";if(J==="cursor")return"Cursor";if(J==="windsurf")return"Windsurf";if(J==="zed")return"Zed";return J||f}function CD(f={}){let J=f.env??process.env,Y=f.platform??process.platform,z=f.exists??Jb,G=J.KOBE_OPEN_EDITOR?.trim();if(G)return{id:"env",label:Qb(G),command:G,args:[]};for(let X of Zb)if(S8(X.command,J,z))return{id:X.id,label:X.label,command:X.command,args:[]};if(Y==="darwin"&&S8("open",J,z)){for(let X of qb)if(X.paths.some((q)=>z(q)))return{id:X.id,label:X.label,command:"open",args:["-a",X.appName]};return{id:"mac-open",label:"Finder",command:"open",args:[]}}if(Y==="linux"&&S8("xdg-open",J,z))return{id:"xdg-open",label:"Open",command:"xdg-open",args:[]};return null}function Hb(f,J){return[J.command,[...J.args,f]]}function kD(f,J,Y={}){if(!f)return!1;let z=Y.spawn??fb,[G,X]=Hb(f,J);try{let q=z(G,X,{detached:!0,stdio:"ignore"});if(q.pid===void 0)return!1;return q.unref(),!0}catch{return!1}}var Zb,qb;var ND=k(()=>{Zb=[{id:"code",label:"VS Code",command:"code"},{id:"cursor",label:"Cursor",command:"cursor"},{id:"windsurf",label:"Windsurf",command:"windsurf"},{id:"zed",label:"Zed",command:"zed"}],qb=[{id:"vscode.app",label:"VS Code",appName:"Visual Studio Code",paths:["/Applications/Visual Studio Code.app"]},{id:"cursor.app",label:"Cursor",appName:"Cursor",paths:["/Applications/Cursor.app","/System/Applications/Cursor.app"]},{id:"windsurf.app",label:"Windsurf",appName:"Windsurf",paths:["/Applications/Windsurf.app"]},{id:"zed.app",label:"Zed",appName:"Zed",paths:["/Applications/Zed.app"]}]});function hQ(f){let J=new Map;function Y(z){let G=J.get(z);if(!G){let[X,q]=r(f.initial,f.equals?{equals:f.equals}:void 0);G={read:X,write:(Q)=>q(()=>Q),inFlight:!1,nextAllowedAt:0},J.set(z,G)}return G}return{read(z){if(!z)return f.initial;return Y(z).read()},poll(z){if(!z)return;let G=Y(z);Jq(G,f,(X)=>f.run(z,X),(X)=>G.write(X))},reset(){J.clear()}}}var iX=k(()=>{Wf();HX();HX()});import{stat as Bb}from"fs/promises";import{join as jb}from"path";async function Ub(f){try{let J=await Bb(jb(f,".git","HEAD"));return`${J.mtimeMs}:${J.size}`}catch{return null}}async function Db(f,J,Y=BJ){let z=await Ub(f);if(z!==null){let Q=yD.get(f);if(Q&&Q.fingerprint===z)return Q.value}let G="",X=await Y("git",["symbolic-ref","--short","HEAD"],{cwd:f,env:x1(),signal:J}),q=X.status===0?X.stdout.trim():"";if(q&&q!=="HEAD")G=q;else if((await Y("git",["rev-parse","--verify","HEAD"],{cwd:f,env:x1(),signal:J})).status===0)G="(detached)";if(z!==null)yD.set(f,{fingerprint:z,value:G});return G}function SD(f){return bD.read(f)}function ID(f){bD.poll(f)}var Wb=2000,Vb=30000,Kb=1500,yD,bD;var TD=k(()=>{NY();iX();yD=new Map;bD=hQ({initial:"",timeoutMs:Wb,slowRetryMs:Vb,minIntervalMs:Kb,run:(f,J)=>Db(f,J)})});function I8(f){let J=f.scheduleTimeout??((H,B)=>{let V=setTimeout(H,B);return()=>clearTimeout(V)}),Y=!1,z=null,G=()=>{Y=!0,z?.(),z=J(()=>{Y=!1,z=null},700)},X=()=>{Y=!1,z?.(),z=null},q=(H)=>{let B=f.getFlatIds();if(B.length===0)return;let V=f.getCursor(),j=V<0?0:V,U=Math.min(B.length-1,Math.max(0,j+H));f.setCursor(U)},Q=(H)=>{let B=f.getFlatIds();if(B.length===0)return;f.setCursor(Math.min(B.length-1,Math.max(0,H)))};return{moveDown(){X(),q(1)},moveUp(){X(),q(-1)},selectCurrent(){X();let H=f.getFlatIds(),B=f.getCursor();if(B<0||B>=H.length)return;let V=H[B];if(V!==void 0)f.onSelect(V)},pressG(){if(Y)X(),Q(0);else G()},pressShiftG(){X(),Q(f.getFlatIds().length-1)},isChordArmed(){return Y},disarmChord(){X()}}}function uD(f){let J=I8({getCursor:()=>f.cursorIndex(),setCursor:(X)=>f.setCursorIndex(X),getFlatIds:()=>f.flatTaskIds(),onSelect:(X)=>f.onSelect(X)}),Y=()=>{let X=f.flatTaskIds(),q=f.cursorIndex();if(q<0||q>=X.length)return;return X[q]},z=()=>f.searchMode?.()??!1,G=()=>f.moveMode?.()??!1;Uf(()=>({enabled:f.focused()&&!z(),bindings:mY({"sidebar.nav":(X,q)=>{let Q=(q??0)%2===0;if(G()){let H=Y();if(H===void 0)return;f.onMoveRequest?.(H,Q?1:-1);return}if(Q)J.moveDown();else J.moveUp()},"sidebar.select":()=>{if(G()){f.onMoveModeExit?.();return}J.selectCurrent()},"sidebar.goto":(X)=>{if(G())return;if(X.shift)J.pressShiftG();else J.pressG()},"sidebar.delete":()=>{if(G())return;let X=Y();if(X!==void 0)f.onDeleteRequest?.(X)},"sidebar.archive":()=>{if(G())return;let X=Y();if(X!==void 0)f.onArchiveRequest?.(X)},"sidebar.localMerge":(X)=>{if(!X.shift)return;let q=Y();if(q!==void 0)f.onLocalMergeRequest?.(q)},"sidebar.rename":()=>{if(G())return;let X=Y();if(X!==void 0)f.onRenameRequest?.(X)},"sidebar.pin":(X)=>{if(G())return;if(!X.shift)return;let q=Y();if(q!==void 0)f.onPinRequest?.(q)},"sidebar.search.enter":()=>{if(G())return;f.onSearchEnter?.()},"sidebar.sort":()=>{if(G())return;f.onSortModeToggle?.()},"sidebar.projectFilter":()=>{if(G())return;f.onProjectFilterToggle?.()}})})),Uf(()=>({enabled:f.focused()&&G(),bindings:[{key:"escape",cmd:()=>f.onMoveModeExit?.()}]})),Uf(()=>({enabled:f.focused(),bindings:mY({"sidebar.view":(X,q)=>{f.onViewSwitch?.((q??0)%2===0?-1:1)}})})),Uf(()=>({enabled:f.focused()&&z(),bindings:mY({"sidebar.search.nav":(X,q)=>{if((q??0)%2===0)J.moveDown();else J.moveUp()},"sidebar.search.submit":()=>{J.selectCurrent(),f.onSearchExit?.(!0)},"sidebar.search.cancel":()=>f.onSearchExit?.(!1)})}))}var ED=k(()=>{SG();b1()});function T8(f,J){if(J<=0)return"";if(f.length<=J)return f;return`${f.slice(0,Math.max(0,J-1))}\u2026`}function u8(f,J){return` ${T8(f,Math.max(0,J))}`}function Mb(f){switch(f){case"done":return F("tasks.status.done");case"in_review":return F("tasks.status.inReview");case"in_progress":return F("tasks.status.working");case"backlog":return F("tasks.status.backlog");case"canceled":return F("tasks.status.canceled");case"error":return F("tasks.status.error")}}function Fb(f){switch(f){case"rate_limited":return{text:F("tasks.activity.rateLimited"),tone:"warning"};case"permission_needed":return{text:F("tasks.activity.permissionNeeded"),tone:"warning"};case"error":return{text:F("tasks.activity.error"),tone:"error"};default:return null}}function hD(f){switch(f.prStatus?.checkState){case"passing":return{glyph:"\u2713",tone:"success"};case"failing":return{glyph:"\u2717",tone:"error"};case"pending":return{glyph:"\u2022",tone:"warning"};default:return null}}function Ob(){return F("tasks.subtitle.noTracking")}function Ab(){return F("tasks.subtitle.materializing")}function gb(f){if(f.kind==="main")return!1;return f.vendor!==void 0&&!Q1(f.vendor)}function E8(f){let{task:J}=f,Y=J.kind==="main",z=Y?f.mainBranch??"":J.branch,G=Lb[J.status],X=f.activity?.state,q=X!==void 0,Q=Rb(X),H=Fb(X),B=gb(J)&&!q,V=f.job!==void 0,j=V||!B&&(X==="running"||f.live||!q&&!Y&&J.status==="in_progress"),U=EG[f.spinnerFrame]??EG[0],L=V?"primary":B?"textMuted":H?.tone??(j?"primary":Q?.tone??G.tone),O=B?Ob():Mb(J.status),M=V?f.truncateBranch(Ab(),f.subtitleBudget):H?f.truncateBranch(H.text,f.subtitleBudget):z.length>0?f.truncateBranch(z,f.subtitleBudget):f.truncateBranch(O,f.subtitleBudget),R=B?xD:Q?.glyph??G.glyph,S=B?xD:Q?.glyph??"\u2605";return{isMain:Y,titleText:Y?MJ(J.repo):J.title,subtitleText:M,loading:j,stateGlyph:j?U:R,projectGlyph:j?U:S,tone:L}}function x8(f,J){if(!f.loading)return f;let Y=EG[J()%EG.length]??"\u280B";if(Y===f.stateGlyph&&Y===f.projectGlyph)return f;return{...f,stateGlyph:Y,projectGlyph:Y}}function Rb(f){switch(f){case"rate_limited":return{glyph:"\u25F7",tone:"warning"};case"permission_needed":return{glyph:"?",tone:"warning"};case"error":return{glyph:"\u2715",tone:"error"};case"turn_complete":return{glyph:"\u2713",tone:"primary"};default:return null}}var Lb,EG,wD=100,xD="\xB7";var PD=k(()=>{G1();U1();uQ();Lb={done:{glyph:"\u2713",tone:"success"},in_review:{glyph:"\u25D0",tone:"warning"},in_progress:{glyph:"",tone:"primary"},backlog:{glyph:"\u25CB",tone:"textMuted"},canceled:{glyph:"\u2298",tone:"textMuted"},error:{glyph:"\u2715",tone:"error"}};EG=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"]});function w8(f){return vD.read(f)}function h8(f){vD.poll(f)}var Cb=4000,kb=60000,Nb=1500,yb,vD;var mD=k(()=>{NY();iX();VG();iX();yb={added:0,deleted:0},vD=hQ({initial:yb,equals:IJ,timeoutMs:Cb,slowRetryMs:kb,minIntervalMs:Nb,run:async(f,J)=>{let Y=await BJ("git",["status","--porcelain=v1"],{cwd:f,env:x1(),signal:J});if(Y.status!==0)throw Error("git status failed");return WG(Y.stdout)}})});import{TextAttributes as bf}from"@opentui/core";function bb(f){switch(f){case"active":return F("tasks.view.workspace");case"archived":return F("tasks.view.archives")}}function nD(f,J=Ib){if(f.length<=J)return f;return`${f.slice(0,Math.max(0,J-1))}\u2026`}function Tb(f){let J=0;for(let Y of f)J+=(Y.codePointAt(0)??0)>=4352?2:1;return J}function ub(f,J){if(J<=0||f.length<=J)return f;return`\u2026${f.slice(f.length-Math.max(0,J-1))}`}function dD(f){let{theme:J}=i0(),Y=()=>f.focused?f.focused():!0,[z,G]=r("active"),[X,q]=r(!1),[Q,H]=r(""),[B,V]=r(null),j=()=>f.projectFilter?.()??B(),U=(n)=>{if(f.onProjectFilterChange)f.onProjectFilterChange(n);else V(n)};function L(){H(""),q(!0),f.onSearchActiveChange?.(!0)}function O(n){q(!1),H(""),f.onSearchActiveChange?.(!1)}zf(()=>{if(!X())return;let n=Y1();if(!n)return;let q0=(b0)=>{if(b0.defaultPrevented)return;if(!Y())return;if(b0.ctrl||b0.meta||b0.option)return;if(b0.name==="backspace"){H(($0)=>$0.slice(0,-1));return}let o0=b0.sequence;if(!o0||o0.length!==1)return;let l0=o0.charCodeAt(0);if(l0<32||l0===127)return;H(($0)=>$0+o0)};n.keyInput.on("keypress",q0),mf(()=>n.keyInput.off("keypress",q0))});let[M,R]=r(0),S=setInterval(()=>R((n)=>n+1),Sb);mf(()=>clearInterval(S));let[a,N]=r(0),g=setInterval(()=>N((n)=>(n+1)%EG.length),wD);mf(()=>clearInterval(g));let C=()=>f.sortMode?.()??"default",y=U0(()=>l4(f.tasks(),z())),_=U0(()=>{let n=j();if(!n)return null;let q0=o1(n);return y().find((b0)=>o1(b0.repo)===q0)??null}),z0=U0(()=>_()?.repo??null),t=U0(()=>_()?.label??"all"),Y0=U0(()=>{let n=_();return n?n.count:y().reduce((q0,b0)=>q0+b0.count,0)}),T=U0(()=>{let n=Y0();return`${n} ${n===1?F("tasks.project.taskSingular"):F("tasks.project.taskPlural")}`}),Q0=U0((n)=>r4(n,D8(f.tasks(),z(),X()?Q():"",C(),z0())),[]),p=U0(()=>L8(Q0())),D0=U0(()=>$4(Q0())),g0=U0(()=>D0().projectRows),$=U0(()=>D0().taskRows),E=U0(()=>{let n=new Map;for(let q0 of Q0())n.set(q0.flatIndex,q0);return n}),f0=U0(()=>L8(D8(f.tasks(),z(),"",C(),z0())).length),I=U0(()=>$().length>0);zf(()=>{let n=j(),q0=y();if(n!==null&&q0.length>0&&(q0.length<=1||_()===null))U(null)});function G0(){let n=y();if(n.length<=1){U(null);return}let q0=z0(),b0=q0?o1(q0):null,o0=b0===null?-1:n.findIndex(($0)=>o1($0.repo)===b0),l0=n[o0+1];U(l0?.repo??null)}let x=()=>f.width?f.width():cD,c=U0(()=>Math.max(6,x()-9)),Z0=U0(()=>Math.max(6,x()-16)),V0=TJ(),H0=U0(()=>{let n=Math.max(2,Math.min(10,Math.floor(V0().height*0.25))),q0=Math.max(2,g0().length*2);return Math.min(n,q0)}),[y0,w0]=r(null),[T0,r0]=r(-1),P,M0,J0,F0=new Map;zf(()=>{let n=f.width?f.width():cD,q0=J0;if(!q0)return;q0.width=n,q0.flexShrink=1,q0.minHeight=0}),zf(O1([T0,Q0],([n])=>{let q0=E().get(n);if(!q0)return;let b0=q0.task.kind==="main"?P:M0;if(!b0)return;if(b0.viewport.height<=0)return;let o0=F0.get(n);if(!o0)return;b0.scrollChildIntoView(o0.id)})),zf(O1(()=>[f.selectedId(),p()],([n,q0])=>{let b0=$f(T0);if(n===null){if(b0===-1&&q0.length>0)r0(0);else if(b0>=q0.length)r0(Math.max(0,q0.length-1));else if(q0.length===0)r0(-1);return}let o0=q0.indexOf(n);if(o0>=0){if(o0!==b0)r0(o0)}else if(q0.length===0)r0(-1);else if(b0<0||b0>=q0.length)r0(q0.length-1)})),zf(O1(z,()=>{let n=p();r0(n.length>0?0:-1)},{defer:!0})),zf(O1(z0,(n)=>r0(a4(Q0(),n)),{defer:!0})),zf(O1([X,Q],()=>{if(!X())return;let n=p();r0(n.length>0?0:-1)}));function a0(n){let q0=z(),b0=lX.findIndex(($0)=>$0.view===q0);if(b0<0)return;let o0=(b0+n+lX.length)%lX.length,l0=lX[o0];if(l0)G(l0.view)}uD({focused:Y,cursorIndex:T0,setCursorIndex:r0,flatTaskIds:p,onSelect:(n)=>{f.onSelect(n),f.onActivate?.(n)},onDeleteRequest:(n)=>f.onDeleteRequest?.(n),onArchiveRequest:(n)=>f.onArchiveRequest?.(n),onLocalMergeRequest:(n)=>f.onLocalMergeRequest?.(n),moveMode:f.moveMode,onMoveRequest:(n,q0)=>f.onMoveRequest?.(n,q0),onMoveModeExit:()=>f.onMoveModeExit?.(),onRenameRequest:(n)=>f.onRenameRequest?.(n),onPinRequest:(n)=>f.onPinRequest?.(n),onViewSwitch:(n)=>a0(n),onSortModeToggle:()=>f.onSortModeToggle?.(),onProjectFilterToggle:()=>G0(),searchMode:X,onSearchEnter:()=>L(),onSearchExit:(n)=>O(n)});let p0=(n)=>(()=>{var q0=W("box"),b0=W("box"),o0=W("text"),l0=W("text");return D(q0,b0),Z(q0,"flexDirection","column"),Z(q0,"flexShrink",0),K(q0,b(X0,{get when(){return n.topPad},get children(){var $0=W("box"),t0=W("text");return D($0,t0),Z($0,"flexShrink",0),D(t0,x0(" ")),Z(t0,"wrapMode","none"),$0}}),b0),D(b0,o0),D(b0,l0),Z(b0,"flexDirection","row"),Z(b0,"flexShrink",0),Z(b0,"gap",1),Z(b0,"paddingLeft",1),Z(b0,"paddingRight",1),Z(o0,"wrapMode","none"),K(o0,()=>n.label),Z(l0,"wrapMode","none"),K(l0,()=>"\u2500".repeat(Math.max(2,x()-10-n.label.length-(n.suffix?.length??0)))),K(b0,b(X0,{get when(){return n.suffix},get children(){var $0=W("text");return Z($0,"wrapMode","none"),K($0,()=>n.suffix),u((t0)=>{var Rf=J.info,gf=bf.BOLD;return Rf!==t0.e&&(t0.e=Z($0,"fg",Rf,t0.e)),gf!==t0.t&&(t0.t=Z($0,"attributes",gf,t0.t)),t0},{e:void 0,t:void 0}),$0}}),null),u(($0)=>{var t0=J.textMuted,Rf=bf.BOLD,gf=J.border;return t0!==$0.e&&($0.e=Z(o0,"fg",t0,$0.e)),Rf!==$0.t&&($0.t=Z(o0,"attributes",Rf,$0.t)),gf!==$0.a&&($0.a=Z(l0,"fg",gf,$0.a)),$0},{e:void 0,t:void 0,a:void 0}),q0})(),u0=(n)=>{switch(n){case"success":return J.success;case"warning":return J.warning;case"primary":return J.primary;case"error":return J.error;default:return J.textMuted}},_0=(n)=>{let q0=n.row.task,b0=n.row.flatIndex,o0=()=>b0===T0(),l0=()=>q0.id===f.selectedId(),$0=U0(()=>{let A=f.chatRunState?.();if(!A)return!1;let P0=`${q0.id}:`;for(let[K0,E0]of A)if(E0==="running"&&K0.startsWith(P0))return!0;return!1}),t0=U0(()=>{let A=_q(f.worktreeChanges?.(),q0.worktreePath);if(A)return A;if(M(),!q0.archived)h8(q0.worktreePath);return w8(q0.worktreePath)},void 0,{equals:IJ}),Rf=U0(()=>{return M(),ID(q0.repo),SD(q0.repo)}),gf=U0(()=>E8({task:q0,activity:f.engineState?.().get(q0.id),job:f.taskJobs?.().get(q0.id),live:$0(),spinnerFrame:0,subtitleBudget:Z0(),truncateBranch:nD,mainBranch:Rf()})),o=U0(()=>x8(gf(),a)),e=()=>!o().loading?J.primary:u0(o().tone),B0=()=>o0()?J.focusAccent:l0()?J.primary:void 0,C0=()=>o0()||l0()?"\u258C":" ";return(()=>{var A=W("box"),P0=W("box"),K0=W("box"),E0=W("text"),W0=W("box"),L0=W("text"),R0=W("text"),Jf=W("box"),Yf=W("text"),n0=W("box"),yf=W("text");return D(A,P0),Z(A,"flexDirection","column"),Z(A,"gap",0),Z(A,"paddingBottom",0),D(P0,K0),D(P0,Jf),hY((k0)=>{F0.set(b0,k0),mf(()=>{if(F0.get(b0)===k0)F0.delete(b0)})},P0),Z(P0,"flexDirection","column"),Z(P0,"gap",0),Z(P0,"onMouseUp",()=>{if(f.onSelect(q0.id),f.activateOnClick)f.onActivate?.(q0.id)}),Z(P0,"onMouseOver",(k0)=>w0({task:q0,x:k0.x,y:k0.y})),Z(P0,"onMouseOut",()=>w0((k0)=>k0?.task.id===q0.id?null:k0)),D(K0,E0),D(K0,W0),Z(K0,"flexDirection","row"),Z(K0,"gap",0),Z(E0,"wrapMode","none"),K(E0,C0),D(W0,L0),D(W0,R0),Z(W0,"flexDirection","row"),Z(W0,"flexGrow",1),Z(W0,"paddingRight",1),Z(W0,"gap",0),Z(L0,"wrapMode","none"),K(L0,()=>o().projectGlyph),Z(R0,"wrapMode","none"),Z(R0,"flexGrow",1),K(R0,()=>u8(o().titleText,c())),D(Jf,Yf),D(Jf,n0),Z(Jf,"flexDirection","row"),Z(Jf,"gap",0),Z(Yf,"wrapMode","none"),K(Yf,C0),D(n0,yf),Z(n0,"flexDirection","row"),Z(n0,"flexGrow",1),Z(n0,"paddingLeft",2),Z(n0,"paddingRight",1),Z(n0,"gap",1),Z(yf,"wrapMode","none"),Z(yf,"flexGrow",1),K(yf,()=>o().subtitleText),K(n0,b(X0,{get when(){return t0().added>0},get children(){var k0=W("text"),wf=x0("+");return D(k0,wf),Z(k0,"wrapMode","none"),K(k0,()=>t0().added,null),u((v)=>Z(k0,"fg",J.success,v)),k0}}),null),K(n0,b(X0,{get when(){return t0().deleted>0},get children(){var k0=W("text"),wf=x0("\u2212");return D(k0,wf),Z(k0,"wrapMode","none"),K(k0,()=>t0().deleted,null),u((v)=>Z(k0,"fg",J.error,v)),k0}}),null),u((k0)=>{var wf=o0()?J.backgroundElement:void 0,v=B0(),A0=e(),Bf=bf.BOLD,Ff=J.text,Qf=bf.BOLD,d=B0(),s=J.textMuted,S0=bf.DIM;return wf!==k0.e&&(k0.e=Z(P0,"backgroundColor",wf,k0.e)),v!==k0.t&&(k0.t=Z(E0,"fg",v,k0.t)),A0!==k0.a&&(k0.a=Z(L0,"fg",A0,k0.a)),Bf!==k0.o&&(k0.o=Z(L0,"attributes",Bf,k0.o)),Ff!==k0.i&&(k0.i=Z(R0,"fg",Ff,k0.i)),Qf!==k0.n&&(k0.n=Z(R0,"attributes",Qf,k0.n)),d!==k0.s&&(k0.s=Z(Yf,"fg",d,k0.s)),s!==k0.h&&(k0.h=Z(yf,"fg",s,k0.h)),S0!==k0.r&&(k0.r=Z(yf,"attributes",S0,k0.r)),k0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0}),A})()};return(()=>{var n=W("box"),q0=W("box"),b0=W("box"),o0=W("text"),l0=W("box"),$0=W("box"),t0=W("text"),Rf=W("scrollbox"),gf=W("box");return D(n,q0),D(n,l0),D(n,Rf),hY((o)=>{J0=o},n),Z(n,"flexGrow",1),Z(n,"minHeight",0),Z(n,"flexDirection","column"),Z(n,"paddingTop",1),Z(n,"paddingBottom",1),Z(n,"paddingLeft",0),Z(n,"paddingRight",0),D(q0,b0),Z(q0,"flexDirection","row"),Z(q0,"justifyContent","space-between"),Z(q0,"gap",1),Z(q0,"paddingBottom",1),Z(q0,"paddingLeft",1),Z(q0,"paddingRight",1),D(b0,o0),Z(b0,"flexDirection","row"),Z(b0,"gap",1),D(o0,x0("KOBE")),Z(o0,"wrapMode","none"),K(b0,b(X0,{get when(){return f.headerStatus?.()},children:(o)=>(()=>{var e=W("text");return Z(e,"wrapMode","none"),Z(e,"onMouseUp",()=>f.onHeaderStatusClick?.()),K(e,()=>o().label),u((B0)=>{var C0=o().emphasize?J.warning:J.textMuted,A=o().emphasize?bf.BOLD:bf.DIM;return C0!==B0.e&&(B0.e=Z(e,"fg",C0,B0.e)),A!==B0.t&&(B0.t=Z(e,"attributes",A,B0.t)),B0},{e:void 0,t:void 0}),e})()}),null),K(q0,b(X0,{get when(){return f.onAddTask},get children(){var o=W("text");return D(o,x0("[+]")),Z(o,"wrapMode","none"),Z(o,"onMouseUp",()=>f.onAddTask?.()),u((e)=>{var B0=J.primary,C0=bf.BOLD;return B0!==e.e&&(e.e=Z(o,"fg",B0,e.e)),C0!==e.t&&(e.t=Z(o,"attributes",C0,e.t)),e},{e:void 0,t:void 0}),o}}),null),K(n,b(X0,{get when(){return X()},get children(){var o=W("box"),e=W("text"),B0=W("text"),C0=W("text");return D(o,e),D(o,B0),D(o,C0),Z(o,"flexDirection","row"),Z(o,"gap",0),Z(o,"paddingBottom",1),Z(o,"paddingLeft",1),D(e,x0("/")),Z(e,"wrapMode","none"),Z(B0,"wrapMode","none"),K(B0,Q),D(C0,x0("\u2588")),Z(C0,"wrapMode","none"),K(o,b(X0,{get when(){return Q().length===0},get children(){var A=W("text"),P0=x0(" ");return D(A,P0),Z(A,"wrapMode","none"),K(A,()=>F("tasks.search.placeholder"),null),u((K0)=>Z(A,"fg",J.textMuted,K0)),A}}),null),K(o,b(X0,{get when(){return Q().length>0},get children(){var A=W("text"),P0=x0(" "),K0=x0("/");return D(A,P0),D(A,K0),Z(A,"wrapMode","none"),K(A,()=>p().length,K0),K(A,f0,null),u((E0)=>Z(A,"fg",J.textMuted,E0)),A}}),null),u((A)=>{var{info:P0,text:K0,info:E0}=J,W0=bf.BLINK;return P0!==A.e&&(A.e=Z(e,"fg",P0,A.e)),K0!==A.t&&(A.t=Z(B0,"fg",K0,A.t)),E0!==A.a&&(A.a=Z(C0,"fg",E0,A.a)),W0!==A.o&&(A.o=Z(C0,"attributes",W0,A.o)),A},{e:void 0,t:void 0,a:void 0,o:void 0}),o}}),l0),D(l0,$0),Z(l0,"flexDirection","row"),Z(l0,"justifyContent","space-between"),Z(l0,"gap",1),Z(l0,"paddingBottom",1),Z(l0,"paddingLeft",1),Z(l0,"paddingRight",1),D($0,t0),Z($0,"flexDirection","row"),Z($0,"gap",2),K($0,b(Zf,{each:lX,children:(o)=>{let e=()=>z()===o.view;return(()=>{var B0=W("text");return Z(B0,"wrapMode","none"),Z(B0,"onMouseUp",()=>G(o.view)),K(B0,()=>bb(o.view)),u((C0)=>{var A=e()?J.primary:J.textMuted,P0=e()?bf.BOLD:void 0;return A!==C0.e&&(C0.e=Z(B0,"fg",A,C0.e)),P0!==C0.t&&(C0.t=Z(B0,"attributes",P0,C0.t)),C0},{e:void 0,t:void 0}),B0})()}}),t0),D(t0,x0("[/]")),Z(t0,"wrapMode","none"),K(l0,b(X0,{get when(){return f.sortMode},get children(){var o=W("text");return Z(o,"wrapMode","none"),Z(o,"onMouseUp",()=>f.onSortModeToggle?.()),K(o,()=>F("tasks.sort")),u((e)=>{var B0=J.textMuted,C0=bf.DIM;return B0!==e.e&&(e.e=Z(o,"fg",B0,e.e)),C0!==e.t&&(e.t=Z(o,"attributes",C0,e.t)),e},{e:void 0,t:void 0}),o}}),null),K(n,b(X0,{get when(){return g0().length>0},get children(){var o=W("box"),e=W("box"),B0=W("text"),C0=W("text"),A=W("scrollbox"),P0=W("box");return D(o,e),D(o,A),Z(o,"flexDirection","column"),Z(o,"flexShrink",0),D(e,B0),D(e,C0),Z(e,"flexDirection","row"),Z(e,"flexShrink",0),Z(e,"gap",1),Z(e,"paddingLeft",1),Z(e,"paddingRight",1),Z(e,"onMouseUp",()=>G0()),Z(B0,"wrapMode","none"),K(B0,()=>F("tasks.header.projects")),K(e,b(X0,{get when(){return y().length>1},get children(){var K0=W("text");return Z(K0,"wrapMode","none"),K(K0,t),u((E0)=>{var W0=z0()?J.primary:J.textMuted,L0=z0()?bf.BOLD:void 0;return W0!==E0.e&&(E0.e=Z(K0,"fg",W0,E0.e)),L0!==E0.t&&(E0.t=Z(K0,"attributes",L0,E0.t)),E0},{e:void 0,t:void 0}),K0}}),C0),Z(C0,"wrapMode","none"),K(C0,()=>"\u2500".repeat(Math.max(2,x()-10-F("tasks.header.projects").length-(y().length>1?t().length+1:0)-(y().length>1?T().length+1:0)))),K(e,b(X0,{get when(){return y().length>1},get children(){var K0=W("text");return Z(K0,"wrapMode","none"),K(K0,T),u((E0)=>{var W0=J.textMuted,L0=bf.DIM;return W0!==E0.e&&(E0.e=Z(K0,"fg",W0,E0.e)),L0!==E0.t&&(E0.t=Z(K0,"attributes",L0,E0.t)),E0},{e:void 0,t:void 0}),K0}}),null),D(A,P0),hY((K0)=>{P=K0},A),Z(A,"flexShrink",0),Z(A,"flexGrow",0),Z(A,"minHeight",0),Z(A,"stickyScroll",!1),Z(A,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),Z(P0,"flexShrink",0),Z(P0,"gap",0),Z(P0,"paddingRight",1),K(P0,b(Zf,{get each(){return g0()},children:(K0)=>b(_0,{row:K0})})),u((K0)=>{var E0=J.textMuted,W0=bf.BOLD,L0=J.border,R0=H0();return E0!==K0.e&&(K0.e=Z(B0,"fg",E0,K0.e)),W0!==K0.t&&(K0.t=Z(B0,"attributes",W0,K0.t)),L0!==K0.a&&(K0.a=Z(C0,"fg",L0,K0.a)),R0!==K0.o&&(K0.o=Z(A,"maxHeight",R0,K0.o)),K0},{e:void 0,t:void 0,a:void 0,o:void 0}),o}}),Rf),K(n,b(p0,{get label(){return F("tasks.header.tasks")},get suffix(){return I0(()=>C()==="default")()?void 0:C()},get topPad(){return g0().length>0}}),Rf),D(Rf,gf),hY((o)=>{M0=o},Rf),Z(Rf,"flexGrow",1),Z(Rf,"minHeight",0),Z(Rf,"stickyScroll",!1),Z(Rf,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),Z(gf,"flexShrink",0),Z(gf,"gap",0),Z(gf,"paddingRight",1),K(gf,b(Zf,{get each(){return $()},children:(o)=>{let{task:e,flatIndex:B0}=o,C0=()=>B0===T0(),A=()=>e.id===f.selectedId(),P0=U0(()=>{let Yf=f.chatRunState?.();if(!Yf)return!1;let n0=`${e.id}:`;for(let[yf,k0]of Yf)if(k0==="running"&&yf.startsWith(n0))return!0;return!1}),K0=U0(()=>{let Yf=_q(f.worktreeChanges?.(),e.worktreePath);if(Yf)return Yf;if(M(),!e.archived)h8(e.worktreePath);return w8(e.worktreePath)},void 0,{equals:IJ}),E0=U0(()=>E8({task:e,activity:f.engineState?.().get(e.id),job:f.taskJobs?.().get(e.id),live:P0(),spinnerFrame:0,subtitleBudget:Z0(),truncateBranch:nD,mainBranch:""})),W0=U0(()=>x8(E0(),a)),L0=()=>u0(W0().tone),R0=()=>C0()?J.focusAccent:A()?J.primary:void 0,Jf=()=>C0()||A()?"\u258C":" ";return(()=>{var Yf=W("box"),n0=W("box"),yf=W("box"),k0=W("text"),wf=W("box"),v=W("text"),A0=W("text"),Bf=W("box"),Ff=W("text"),Qf=W("box"),d=W("text");return D(Yf,n0),Z(Yf,"flexDirection","column"),Z(Yf,"gap",0),Z(Yf,"paddingBottom",1),D(n0,yf),D(n0,Bf),hY((s)=>{F0.set(B0,s),mf(()=>{if(F0.get(B0)===s)F0.delete(B0)})},n0),Z(n0,"flexDirection","column"),Z(n0,"gap",0),Z(n0,"onMouseUp",()=>{if(f.onSelect(e.id),f.activateOnClick)f.onActivate?.(e.id)}),Z(n0,"onMouseOver",(s)=>w0({task:e,x:s.x,y:s.y})),Z(n0,"onMouseOut",()=>w0((s)=>s?.task.id===e.id?null:s)),D(yf,k0),D(yf,wf),Z(yf,"flexDirection","row"),Z(yf,"gap",0),Z(k0,"wrapMode","none"),K(k0,Jf),D(wf,v),D(wf,A0),Z(wf,"flexDirection","row"),Z(wf,"flexGrow",1),Z(wf,"paddingRight",1),Z(wf,"gap",0),Z(v,"wrapMode","none"),K(v,()=>W0().stateGlyph),Z(A0,"wrapMode","none"),Z(A0,"flexGrow",1),K(A0,()=>u8(W0().titleText,c())),K(wf,b(X0,{get when(){return I0(()=>!!f.moveMode?.())()&&C0()},get children(){var s=W("text");return Z(s,"wrapMode","none"),K(s,()=>F("tasks.moveChip")),u((S0)=>Z(s,"fg",J.warning,S0)),s}}),null),D(Bf,Ff),D(Bf,Qf),Z(Bf,"flexDirection","row"),Z(Bf,"gap",0),Z(Ff,"wrapMode","none"),K(Ff,Jf),D(Qf,d),Z(Qf,"flexDirection","row"),Z(Qf,"flexGrow",1),Z(Qf,"paddingLeft",2),Z(Qf,"paddingRight",1),Z(Qf,"gap",1),Z(d,"wrapMode","none"),Z(d,"flexGrow",1),K(d,()=>W0().subtitleText),K(Qf,b(X0,{get when(){return e.pinned===!0},get children(){var s=W("text");return D(s,x0("\u25B4")),Z(s,"wrapMode","none"),u((S0)=>Z(s,"fg",J.warning,S0)),s}}),null),K(Qf,b(X0,{get when(){return hD(e)},children:(s)=>(()=>{var S0=W("text");return Z(S0,"wrapMode","none"),K(S0,()=>s().glyph),u((N0)=>Z(S0,"fg",u0(s().tone),N0)),S0})()}),null),K(Qf,b(X0,{get when(){return K0().added>0},get children(){var s=W("text"),S0=x0("+");return D(s,S0),Z(s,"wrapMode","none"),K(s,()=>K0().added,null),u((N0)=>Z(s,"fg",J.success,N0)),s}}),null),K(Qf,b(X0,{get when(){return K0().deleted>0},get children(){var s=W("text"),S0=x0("\u2212");return D(s,S0),Z(s,"wrapMode","none"),K(s,()=>K0().deleted,null),u((N0)=>Z(s,"fg",J.error,N0)),s}}),null),u((s)=>{var S0=C0()?J.backgroundElement:void 0,N0=R0(),Z1=L0(),K1=bf.BOLD,tf=J.text,v1=A()||C0()?bf.BOLD:void 0,xJ=R0(),M1=J.textMuted,wJ=bf.DIM;return S0!==s.e&&(s.e=Z(n0,"backgroundColor",S0,s.e)),N0!==s.t&&(s.t=Z(k0,"fg",N0,s.t)),Z1!==s.a&&(s.a=Z(v,"fg",Z1,s.a)),K1!==s.o&&(s.o=Z(v,"attributes",K1,s.o)),tf!==s.i&&(s.i=Z(A0,"fg",tf,s.i)),v1!==s.n&&(s.n=Z(A0,"attributes",v1,s.n)),xJ!==s.s&&(s.s=Z(Ff,"fg",xJ,s.s)),M1!==s.h&&(s.h=Z(d,"fg",M1,s.h)),wJ!==s.r&&(s.r=Z(d,"attributes",wJ,s.r)),s},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0}),Yf})()}}),null),K(gf,b(X0,{get when(){return p().length===0},get children(){var o=W("box"),e=W("text");return D(o,e),Z(o,"paddingTop",1),Z(o,"paddingLeft",1),K(e,(()=>{var B0=I0(()=>!!(X()&&Q().trim().length>0));return()=>B0()?F("tasks.empty.noMatchSearch"):I0(()=>!!z0())()?I0(()=>z()==="active")()?F("tasks.empty.noActiveProject"):F("tasks.empty.noArchivedProject"):I0(()=>z()==="active")()?F("tasks.empty.noActive"):F("tasks.empty.noArchived")})()),u((B0)=>Z(e,"fg",J.textMuted,B0)),o}}),null),K(gf,b(X0,{get when(){return I0(()=>!!(z0()&&p().length>0&&!I()))()&&!(X()&&Q().trim().length>0)},get children(){var o=W("box"),e=W("text");return D(o,e),Z(o,"paddingTop",1),Z(o,"paddingLeft",1),Z(e,"wrapMode","none"),K(e,(()=>{var B0=I0(()=>z()==="active");return()=>B0()?F("tasks.empty.noActiveProject"):F("tasks.empty.noArchivedProject")})()),u((B0)=>{var C0=J.textMuted,A=bf.DIM;return C0!==B0.e&&(B0.e=Z(e,"fg",C0,B0.e)),A!==B0.t&&(B0.t=Z(e,"attributes",A,B0.t)),B0},{e:void 0,t:void 0}),o}}),null),K(gf,b(X0,{get when(){return I0(()=>z()==="archived")()&&p().length>0},get children(){var o=W("box"),e=W("text");return D(o,e),Z(o,"paddingTop",1),Z(o,"paddingLeft",1),Z(e,"wrapMode","none"),K(e,()=>F("tasks.archiveHint")),u((B0)=>{var C0=J.textMuted,A=bf.DIM;return C0!==B0.e&&(B0.e=Z(e,"fg",C0,B0.e)),A!==B0.t&&(B0.t=Z(e,"attributes",A,B0.t)),B0},{e:void 0,t:void 0}),o}}),null),K(n,b(X0,{get when(){return f.zenActive?.()},get children(){var o=W("box"),e=W("text");return D(o,e),Z(o,"flexShrink",0),Z(o,"paddingLeft",1),Z(o,"paddingRight",1),Z(o,"paddingTop",1),D(e,x0("\u262F ZEN")),Z(e,"wrapMode","none"),u((B0)=>{var C0=J.accent,A=bf.BOLD;return C0!==B0.e&&(B0.e=Z(e,"fg",C0,B0.e)),A!==B0.t&&(B0.t=Z(e,"attributes",A,B0.t)),B0},{e:void 0,t:void 0}),o}}),null),K(n,b(X0,{get when(){return y0()},children:(o)=>{let e=U0(()=>{let W0=o().task,L0=[];if(L0.push({text:W0.kind==="main"?MJ(W0.repo):W0.title,bold:!0}),W0.branch.length>0)L0.push({text:`\u2387 ${W0.branch}`});if(W0.worktreePath.length>0)L0.push({text:W0.worktreePath,dim:!0});return L0}),B0=72,C0=U0(()=>Math.min(68,Math.max(...e().map((W0)=>Tb(W0.text))))),A=U0(()=>C0()+4),P0=U0(()=>e().length+2),K0=U0(()=>Math.max(0,Math.min(o().x+2,V0().width-A()-1))),E0=U0(()=>Math.max(0,Math.min(o().y+1,V0().height-P0()-1)));return(()=>{var W0=W("box");return Z(W0,"position","absolute"),Z(W0,"zIndex",2600),Z(W0,"flexDirection","column"),Z(W0,"border",!0),Z(W0,"paddingLeft",1),Z(W0,"paddingRight",1),K(W0,b(Zf,{get each(){return e()},children:(L0)=>(()=>{var R0=W("text");return Z(R0,"wrapMode","none"),K(R0,(()=>{var Jf=I0(()=>!!L0.dim);return()=>Jf()?ub(L0.text,C0()):T8(L0.text,C0())})()),u((Jf)=>{var Yf=L0.dim?J.textMuted:J.text,n0=L0.bold?bf.BOLD:L0.dim?bf.DIM:void 0;return Yf!==Jf.e&&(Jf.e=Z(R0,"fg",Yf,Jf.e)),n0!==Jf.t&&(Jf.t=Z(R0,"attributes",n0,Jf.t)),Jf},{e:void 0,t:void 0}),R0})()})),u((L0)=>{var R0=K0(),Jf=E0(),Yf=A(),n0=J.focusAccent,yf=J.backgroundElement;return R0!==L0.e&&(L0.e=Z(W0,"left",R0,L0.e)),Jf!==L0.t&&(L0.t=Z(W0,"top",Jf,L0.t)),Yf!==L0.a&&(L0.a=Z(W0,"width",Yf,L0.a)),n0!==L0.o&&(L0.o=Z(W0,"borderColor",n0,L0.o)),yf!==L0.i&&(L0.i=Z(W0,"backgroundColor",yf,L0.i)),L0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),W0})()}}),null),u((o)=>{var e=Y()?J.focusAccent:J.textMuted,B0=bf.BOLD,C0=J.textMuted,A=bf.DIM;return e!==o.e&&(o.e=Z(o0,"fg",e,o.e)),B0!==o.t&&(o.t=Z(o0,"attributes",B0,o.t)),C0!==o.a&&(o.a=Z(t0,"fg",C0,o.a)),A!==o.o&&(o.o=Z(t0,"attributes",A,o.o)),o},{e:void 0,t:void 0,a:void 0,o:void 0}),n})()}var cD=32,lX,Sb=2000,Ib=16;var iD=k(()=>{h();h();h();h();h();h();h();h();h();G1();h();Wf();xf();xf();TD();uQ();ED();PD();VG();mD();lX=[{view:"active"},{view:"archived"}]});var pD={};jf(pD,{startTasksPane:()=>Pb,legendRowCap:()=>rD,legendCap:()=>$D});import{existsSync as lD}from"fs";import{stat as Eb}from"fs/promises";import{TextAttributes as PQ}from"@opentui/core";function P8(f){return!!f&&XZ(f)}function aD(f){let J=f instanceof Error?f.message:String(f);if(/not a git repository/i.test(J))return F("tasks.toast.worktreeErrorNotGit");return F("tasks.toast.worktreeErrorGeneric",{message:J})}function wb(f){let{theme:J}=i0(),Y=vf(),z=IG(),G=NQ(),[X,q]=r(f.tasks().some((P)=>P.id===f.initialTaskId)?f.initialTaskId:f.tasks()[0]?.id??null);function Q(P){G.notify({kind:"error",taskId:X()??"",tabId:"",title:P})}function H(P){G.notify({kind:"done",taskId:X()??"",tabId:"",title:P})}let[B,V]=r(!1),[j,U]=r(z.get("activeSortMode")==="recent"?"recent":"default"),L=z.get("tasksPane.projectFilter"),[O,M]=r(typeof L==="string"&&L.length>0?L:null),R=(P)=>{M(P),z.set("tasksPane.projectFilter",P)},[S,a]=r(null),[N,g]=r(!1);{let P=process.env.TMUX_PANE;if(P){let M0=()=>{d0(["show-options","-wqv","-t",P,UY]).then(({code:F0,stdout:a0})=>{g(F0===0&&a0.trim().length>0)})};M0();let J0=setInterval(M0,1000);mf(()=>clearInterval(J0))}}let C=TJ(),y=!f.initialTaskId;zf(()=>{let P=f.orch?.activeTaskSignal()();if(!P)return;if(!y){if(P!==f.initialTaskId)return;y=!0}q(P)}),zf(O1(()=>f.orch?.uiPrefsSignal()(),(P)=>{if(P&&P.sortMode!==$f(j))U(P.sortMode);if(P&&P.projectFilter!==$f(O))M(P.projectFilter)})),zf(()=>{let P=f.orch?.updateSignal()();if(P)a(P)});let _={orch:f.orch,tasks:()=>f.tasks(),confirm:async(P)=>await GY.show(Y,P.title,P.body,P.cancelLabel,P.confirmLabel)===!0,promptText:(P,M0)=>zY.show(Y,P,M0),logger:console,logPrefix:"[kobe tasks]",notifyError:Q,notifyInfo:H,reload:()=>f.reload(),switchBeforeKill:!0,updateActiveTask:!0,onTaskDeleted:(P,M0)=>{if(X()!==P)return;let J0=f.tasks();q(M0?.id??(J0.find((F0)=>!F0.archived)??J0[0])?.id??null)},promptNewTask:(P,M0,J0)=>OQ.show(Y,P,M0,J0),cursorRepo:()=>{let P=f.tasks();return(P.find((M0)=>M0.id===X())??P[0])?.repo},lastVendor:()=>kf("lastSelectedVendor"),rememberVendor:(P)=>af("lastSelectedVendor",P),openCreateSurface:async(P)=>{if(Lz(z.get(oJ,Dz))!=="chattab")return!1;let J0=await k1();if(!J0)return!1;return await iq(J0,P),!0},selectTask:(P)=>q(P),enterTask:(P)=>H0(P)};async function z0(){await gD(_)}async function t(){if(Lz(z.get(oJ,Dz))==="chattab"){let J0=await k1();if(J0){await nq(J0);return}}if(!(await Tz.show(Y,z,f.orch??void 0)).visualPrefsChanged)return;if(!z.flush())return;try{let J0=await k1();if(J0)await BG(J0)}catch(J0){console.error("[kobe tasks] failed to refresh workspace panes:",J0)}}async function Y0(){let P=await k1();if(P){await dq(P);return}uG.show(Y)}async function T(){if(!S()?.hasUpdate){H(F("tasks.toast.alreadyLatest",{version:s0}));return}let M0=await k1();if(!M0)return;await lq(M0)}async function Q0(P){await LD(_,P)}async function p(P){await MD(_,P)}async function D0(P){await FD(_,P)}async function g0(P){await OD(_,P)}async function $(P){await AD(_,P)}async function E(P){let J0=f.tasks().find((a0)=>a0.id===P)?.worktreePath;if(!J0||!lD(J0)){if(!f.orch){console.error("[kobe tasks] no daemon; cannot materialise worktree"),Q(F("tasks.toast.noDaemonWorktree"));return}try{J0=await f.orch.ensureWorktree(P)}catch(a0){console.error("[kobe tasks] task.ensureWorktree failed:",a0),Q(aD(a0));return}await f.reload()}if(!J0||!lD(J0))return;let F0=CD();if(!F0){console.error("[kobe tasks] no editor/opener found; set KOBE_OPEN_EDITOR"),Q(F("tasks.toast.noEditor"));return}if(!kD(J0,F0))console.error(`[kobe tasks] failed to open worktree with ${F0.label}`),Q(F("tasks.toast.openWorktreeFailed",{label:F0.label}))}async function f0(){if(!process.env.TMUX_PANE)return;let P=await k1();if(!P)return;let M0=await $z(P);if(!M0)return;await h0(["select-pane","-t",M0])}async function I(P,M0){let J0=f.tasks().find((F0)=>F0.id===P);if(!J0||J0.kind==="main"||!f.orch)return;try{await f.orch.moveTask(P,M0)}catch(F0){console.error("[kobe tasks] task.move failed:",F0),Q(F("tasks.toast.moveTaskFailed",{message:F0 instanceof Error?F0.message:String(F0)}));return}q(P),await f.reload()}let[G0,x]=r(z.get("tasksPane.keysCollapsed",!1)===!0),c=(P)=>{x(P),z.set("tasksPane.keysCollapsed",P)};zf(O1(()=>f.orch?.uiPrefsSignal()(),(P)=>{if(P&&P.keysCollapsed!==$f(G0))x(P.keysCollapsed)}));let[Z0,V0]=r(!1);Uf(()=>({enabled:Y.stack.length===0&&!Z0(),bindings:mY({"help.open":()=>void Y0(),"task.new":()=>void z0(),"settings.open.sidebar":()=>void t(),"tasks.update":()=>void T(),"tasks.openWorktree":()=>{let P=X();if(P)E(P)},"tasks.renameBranch":()=>{let P=X();if(P)g0(P)},"tasks.cycleEngine":()=>{let P=X();if(P)$(P)},"tasks.toggleKeys":()=>c(!G0()),"tasks.focusEngine":()=>void f0().catch((P)=>console.error("[kobe tasks] focus engine pane failed:",P))})}));async function H0(P){let M0=Lf(P),J0=f.tasks().find((n)=>n.id===P),F0=await k1();if(F0&&F0!==M0)await DX(F0);if(await Hf(M0)){let n=await Bz(M0,"@kobe_worktree")||J0?.worktreePath||"";if(P8(n)){let q0=J0?.repo?sJ(J0.repo,n,{kind:"repo-init"}):void 0;await TY({name:M0,cwd:n,command:N1(J0?.vendor),taskId:P,vendor:J0?.vendor,repo:J0?.repo,launchInit:q0})}await $q(M0),await h0(["switch-client","-t",`=${M0}`]),f.orch?.setActiveTask(P).catch(()=>{});return}let p0=J0?.worktreePath;if(!P8(p0)){if(!f.orch){console.error("[kobe tasks] no daemon; cannot materialise worktree"),Q(F("tasks.toast.noDaemonOpen"));return}try{p0=await f.orch.ensureWorktree(P)}catch(n){console.error("[kobe tasks] task.ensureWorktree failed:",n),Q(aD(n));return}await f.reload()}if(!P8(p0))return;let u0=J0?.repo?sJ(J0.repo,p0,{kind:"repo-init"}):void 0;if(!await TY({name:M0,cwd:p0,command:N1(J0?.vendor),taskId:P,vendor:J0?.vendor,repo:J0?.repo,launchInit:u0})){console.error(`[kobe tasks] failed to start session ${M0}`),Q(F("tasks.toast.sessionStartFailed"));return}await $q(M0),await h0(["switch-client","-t",`=${M0}`]),f.orch?.setActiveTask(P).catch(()=>{})}let y0=U0(()=>{let P=S();if(P?.hasUpdate)return{label:`v${P.latest} \u2191`,emphasize:!0};return{label:`v${s0}`,emphasize:!1}}),w0=()=>f.orch?.daemonStaleSignal()()??!1,T0=()=>f.orch?.daemonVersionSignal()()??null,r0=U0(()=>f.tasks().find((P)=>P.id===X())?.kind==="main");return(()=>{var P=W("box"),M0=W("box");return D(P,M0),Z(P,"flexDirection","column"),Z(P,"flexGrow",1),K(P,b(KD,{stale:w0,daemonVersion:T0,clientVersion:s0,width:()=>C().width}),M0),Z(M0,"flexGrow",1),Z(M0,"flexShrink",1),K(M0,b(dD,{get tasks(){return f.tasks},selectedId:X,onSelect:q,onActivate:(J0)=>void H0(J0),activateOnClick:!0,headerStatus:y0,onHeaderStatusClick:()=>void T(),onAddTask:()=>void z0(),zenActive:N,width:()=>C().width,get engineState(){return I0(()=>!!f.orch)()?f.orch.engineStateSignal():void 0},get taskJobs(){return I0(()=>!!f.orch)()?f.orch.taskJobsSignal():void 0},get worktreeChanges(){return f.orch?()=>{let J0=f.orch;if(!J0||J0.connectionStateSignal()()!=="online")return null;return J0.worktreeChangesSignal()()}:void 0},onRenameRequest:(J0)=>void D0(J0),onDeleteRequest:(J0)=>void p(J0),onArchiveRequest:(J0)=>void Q0(J0),onLocalMergeRequest:(J0)=>{let F0=f.tasks().find((a0)=>a0.id===J0);if(!F0||F0.kind==="main")return;q(J0),V((a0)=>!a0)},moveMode:B,onMoveRequest:(J0,F0)=>void I(J0,F0),onMoveModeExit:()=>V(!1),sortMode:j,projectFilter:O,onProjectFilterChange:R,onSortModeToggle:()=>{let J0=j()==="default"?"recent":"default";U(J0),z.set("activeSortMode",J0)},focused:()=>Y.stack.length===0,onSearchActiveChange:V0})),K(P,b(hb,{moveMode:B,selectedIsMain:r0,collapsed:G0,onToggleCollapsed:()=>c(!G0())}),null),u((J0)=>Z(P,"backgroundColor",J.background,J0)),P})()}function $D(f){let J=Q8(f);if(!J)return null;let Y=J.hint?.keys??J.keys[0];return Y&&Y.length>0?Y:null}function rD(f){let J=f.map($D).filter((Y)=>Y!==null);return J.length>0?J.join("/"):null}function hb(f){let{theme:J}=i0(),[Y,z]=r("Prefix");f1(()=>{d0(["show-options","-g","prefix"]).then(({code:U,stdout:L})=>{if(U!==0)return;let O=xQ(L);if(O)z(O)})});let G=()=>{q8();let U=gq(),L=U.binds,O=[],M=U.focus.filter((S)=>S!==null).map((S)=>S.chord);if(M.length===4&&M.every((S,a)=>S===yY[a]))O.push({k:"ctrl+hjkl",label:F("tasks.hints.movePanes")});else if(M.length>0)O.push({k:M[0],label:F("tasks.hints.movePanes")});let R=(S,a)=>{let N=a.map((g)=>L[g]?.chord).filter((g)=>!!g);if(N.length>0)O.push({k:`prefix ${N.join("/")}`,label:S})};if(L["tmux.detach"])O.push({k:L["tmux.detach"].chord,label:F("tasks.hints.detach")});return R(F("tasks.hints.splits"),["tmux.layout.workspaceSplit","tmux.layout.workspaceClose","tmux.layout.workspaceReset"]),R(F("tasks.hints.panes"),["tmux.layout.tasksToggle","tmux.layout.opsToggle","tmux.layout.terminalToggle"]),O},X=()=>{q8();let U=[{ids:["help.open"],label:F("tasks.hints.fullHelp")},{ids:["task.new"],label:F("tasks.hints.newTask")},{ids:["settings.open.sidebar"],label:F("tasks.hints.settings")},{ids:["sidebar.select"],label:F("tasks.hints.open")},{ids:["tasks.focusEngine"],label:F("tasks.hints.focusEngine")},{ids:["tasks.openWorktree"],label:F("tasks.hints.openWorktree")},{ids:["sidebar.delete"],label:F("tasks.hints.delete")},{ids:["sidebar.view"],label:F("tasks.hints.views")},{ids:["sidebar.projectFilter"],label:F("tasks.hints.project")}],L=[];for(let O of U){let M=rD(O.ids);if(M===null)continue;L.push({k:M,label:O.label,dimWhenMain:O.dimWhenMain})}return L.push(...G()),L},q=()=>[{k:"j/k",label:F("tasks.hints.reorder")},{k:"enter/esc",label:F("tasks.hints.done")}],Q=()=>f.moveMode?.()?q():X(),H=18,B=()=>Math.min(H,Math.max(...Q().map((U)=>U.label.length))),V=(U)=>U.length<=B()?U:`${U.slice(0,Math.max(0,B()-1))}\u2026`,j=()=>(f.collapsed?.()??!1)&&!(f.moveMode?.()??!1);return(()=>{var U=W("box"),L=W("text");return D(U,L),Z(U,"flexShrink",0),Z(U,"flexDirection","column"),Z(U,"paddingLeft",1),Z(U,"paddingRight",1),Z(U,"paddingTop",1),Z(U,"paddingBottom",1),Z(U,"gap",0),Z(L,"wrapMode","none"),Z(L,"onMouseUp",()=>f.onToggleCollapsed?.()),K(L,(()=>{var O=I0(()=>!!j());return()=>O()?F("tasks.hints.headerFolded"):F("tasks.hints.headerUnfolded")})()),K(U,b(X0,{get when(){return!j()},get children(){return b(Zf,{get each(){return Q()},children:(O)=>{let M=()=>O.dimWhenMain===!0&&(f.selectedIsMain?.()??!1);return(()=>{var R=W("box"),S=W("box"),a=W("text"),N=x0("["),g=x0("]"),C=W("box"),y=W("text");return D(R,S),D(R,C),Z(R,"flexDirection","row"),Z(R,"gap",1),Z(R,"justifyContent","space-between"),D(S,a),Z(S,"width",10),Z(S,"flexShrink",0),D(a,N),D(a,g),Z(a,"wrapMode","none"),K(a,()=>TG(O.k,Y()),g),D(C,y),Z(C,"flexShrink",0),Z(y,"wrapMode","none"),K(y,()=>V(O.label)),u((_)=>{var z0=M()?J.textMuted:J.accent,t=M()?PQ.DIM:PQ.BOLD,Y0=B(),T=J.textMuted,Q0=M()?PQ.DIM:void 0;return z0!==_.e&&(_.e=Z(a,"fg",z0,_.e)),t!==_.t&&(_.t=Z(a,"attributes",t,_.t)),Y0!==_.a&&(_.a=Z(C,"width",Y0,_.a)),T!==_.o&&(_.o=Z(y,"fg",T,_.o)),Q0!==_.i&&(_.i=Z(y,"attributes",Q0,_.i)),_},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),R})()}})}}),null),u((O)=>{var M=J.textMuted,R=PQ.DIM;return M!==O.e&&(O.e=Z(L,"fg",M,O.e)),R!==O.t&&(O.t=Z(L,"attributes",R,O.t)),O},{e:void 0,t:void 0}),U})()}async function Pb(f={}){await L1({logContext:"tasks",providers:{notifications:!0},setup:()=>vb(f)})}async function vb(f){let J=new xz({homeDir:OJ()});await J.load();let[Y,z]=r(J.list()),G=null;try{let B=await p1();if(B){let V=new W1(B);await V.init(),G=V}else iJ("tasks-boot","no daemon running \u2014 polling tasks.json (a gui owns daemon lifecycle)")}catch(B){WY("tasks-boot",B),iJ("tasks-boot","daemon subscribe failed \u2014 polling tasks.json")}let X=()=>G&&G.connectionStateSignal()()==="online"?G.tasksSignal()():Y(),q=async()=>{await J.load(),z(J.list())},Q="",H=setInterval(()=>{if(G&&G.connectionStateSignal()()==="online")return;(async()=>{let B="missing";try{let V=await Eb(J.filePath);B=`${V.mtimeMs}:${V.size}`}catch{}if(B===Q)return;Q=B,await q()})().catch(()=>{})},xb);return{root:()=>[b(wb,{tasks:X,get initialTaskId(){return f.initialTaskId},orch:G,reload:q}),b(WD,{})],onDestroy:()=>{if(H)clearInterval(H);G?.dispose()}}}var xb=1500;var _D=k(()=>{h();h();h();h();h();h();h();h();Tf();qJ();G1();h();eY();y1();Wf();PY();E1();lf();e1();vG();GG();Of();Rq();D1();F8();bG();O8();b8();VD();UD();SG();mX();yQ();xf();M8();nY();b1();RD();ND();iD();J1();P1();A8()});var oD={};jf(oD,{startSettingsHost:()=>cb});function mb(f){let J=IG(),Y=vf(),{theme:z}=i0(),G=!1,X=!1;async function q(){if(X)return;X=!0;try{if(J.flush()&&G){let H=await k1();if(H)await BG(H)}}catch(Q){console.error("[kobe settings] failed to refresh workspace panes:",Q)}finally{process.exit(0)}}return Uf(()=>({enabled:Y.stack.length===0,bindings:[{key:"escape",cmd:q},{key:"q",cmd:q},{key:"ctrl+c",cmd:q}]})),(()=>{var Q=W("scrollbox");return Z(Q,"flexGrow",1),Z(Q,"paddingTop",1),Z(Q,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),K(Q,b(Tz,{kv:J,get orchestrator(){return f.orchestrator??void 0},standalone:!0,onVisualPrefsChange:()=>{G=!0},onClose:q})),u((H)=>Z(Q,"backgroundColor",z.background,H)),Q})()}async function cb(){await L1({setup:async()=>{let f=null;try{let J=await p1();if(J){let Y=new W1(J);await Y.init(),f=Y}else console.error("[kobe settings] no daemon running; Restart backend disabled")}catch(J){console.error("[kobe settings] daemon unavailable; Restart backend disabled:",J)}return{root:()=>b(mb,{orchestrator:f}),onDestroy:()=>{f?.dispose()}}}})}var sD=k(()=>{h();h();h();h();h();h();y1();PY();b8();mX();xf();nY();b1();J1();P1()});var tD={};jf(tD,{startHelpHost:()=>db});function nb(){let f=vf(),{theme:J}=i0();function Y(){process.exit(0)}return Uf(()=>({enabled:f.stack.length===0,bindings:[{key:"escape",cmd:Y},{key:"q",cmd:Y},{key:"f1",cmd:Y},{key:"ctrl+c",cmd:Y}]})),(()=>{var z=W("box");return Z(z,"flexGrow",1),Z(z,"paddingTop",1),K(z,b(uG,{onClose:Y})),u((G)=>Z(z,"backgroundColor",J.background,G)),z})()}async function db(){await L1({providers:{kv:!1,focus:!1},setup:()=>({root:()=>b(nb,{})})})}var eD=k(()=>{h();h();h();h();h();F8();xf();nY();b1();P1()});var fL={};jf(fL,{startUpdateHost:()=>_b});import{spawn as ib,spawnSync as lb}from"child_process";import{TextAttributes as xG}from"@opentui/core";function ab(f){if(!f)return!1;let J=process.platform,[Y,z]=J==="darwin"?["open",[f]]:J==="win32"?["cmd",["/c","start","",f]]:["xdg-open",[f]];try{return ib(Y,z,{stdio:"ignore",detached:!0}).unref(),!0}catch{return!1}}function $b(f){return f.replace(/\r\n/g,`
|
|
225
226
|
`).split(`
|
|
226
|
-
`).map((J)=>J.trim()).filter(Boolean)}function
|
|
227
|
-
kobe ${
|
|
228
|
-
`),process.stdout.write(`running: ${
|
|
227
|
+
`).map((J)=>J.trim()).filter(Boolean)}function rb(){if(!process.stdin.isTTY)return Promise.resolve();return new Promise((f)=>{let J=process.stdin,Y=()=>{J.off("data",Y),J.setRawMode?.(!1),J.pause(),f()};J.setRawMode?.(!0),J.resume(),J.once("data",Y)})}function pb(){let{theme:f}=i0(),J=Y1(),[Y,z]=r(null),[G,X]=r([]),[q,Q]=r(!0),[H,B]=r("update"),[V,j]=r(null),U=U0(()=>Y()?.latest??s0),L=U0(()=>G()[0]?.url??$Q(U())),O=U0(()=>[{id:"update",key:"U",label:F("update.actions.updateNow"),detail:hJ},{id:"release",key:"R",label:F("update.actions.openRelease"),detail:L()??F("update.releaseUrlUnavailable")},{id:"close",key:"Q",label:F("update.actions.close"),detail:F("update.actions.closeDetail")}]);f1(()=>{M()});async function M(){let N=await wG({force:!0});z(N);let g=N?.latest??s0,C=await aQ({current:s0,latest:g});X(C),Q(!1)}function R(N){let g=O().map((_)=>_.id),y=(g.indexOf(H())+N+g.length)%g.length;B(g[y]??"update")}function S(N=H()){if(N==="close")process.exit(0);if(N==="release"){j(ab(L())?F("update.statusReleaseOpened"):F("update.statusReleaseError"));return}a()}async function a(){j(F("update.statusRunningUpdater")),await new Promise((C)=>setTimeout(C,30)),J?.destroy(),process.stdout.write(`
|
|
228
|
+
kobe ${s0} -> latest
|
|
229
|
+
`),process.stdout.write(`running: ${hJ}
|
|
229
230
|
|
|
230
|
-
`);let N=
|
|
231
|
+
`);let N=lb("sh",["-c",hJ],{stdio:"inherit"}),g=N.status??(N.error?1:0);if(N.error)process.stderr.write(`
|
|
231
232
|
kobe update: failed to start updater: ${N.error.message}
|
|
232
|
-
`);process.stdout.write(
|
|
233
|
+
`);process.stdout.write(g===0?`
|
|
233
234
|
${F("update.updateComplete")}
|
|
234
235
|
`:`
|
|
235
|
-
${F("update.updateFailed",{code:String(
|
|
236
|
-
`),process.stdout.write(F("update.pressAnyKey")),await
|
|
237
|
-
`)}function
|
|
238
|
-
`).map((G)=>G.replace(/\r$/,"")),z=new Set;for(let G of Y)if(G.length>0)z.add(G);return Array.from(z).sort()}async function
|
|
239
|
-
`).map((z)=>z.replace(/\r$/,"")),Y=[];for(let z of J){if(z.length===0)continue;let G=z.indexOf("\t");if(G<0)continue;let
|
|
240
|
-
`).map((z)=>z.replace(/\r$/,"")),Y=[];for(let z of J){if(z.length<4)continue;let G=z[0],Z=z[1],q=z[2];if(G===void 0||Z===void 0||q!==" ")continue;let Q=z.slice(3),H;if(G==="?"&&Z==="?")H="?";else{let B=Z!==" "?Z:G;if(B==="M"||B==="A"||B==="D"||B==="R"||B==="C"||B==="U")H=B;else continue}if(H==="R"){let B=Q.indexOf(" -> ");if(B>=0)Q=Q.slice(B+4)}if(Q.length===0)continue;if(Q.endsWith("/"))continue;Y.push({path:Q,status:H})}return Y}var c8=C(()=>{Xq()});function n8(f){Df(()=>({enabled:f.focused(),bindings:wY({"files.nav":(J,Y)=>{if((Y??0)%2===0)f.moveDown();else f.moveUp()},"files.hierarchy":(J,Y)=>{if((Y??0)%2===0)f.collapseOrParent();else f.expandOrDescend()},"files.tab":(J,Y)=>{let z=f.currentTab(),G=iZ.indexOf(z);if(G<0)return;let Z=(Y??0)%2===0?-1:1,q=iZ[(G+Z+iZ.length)%iZ.length];if(q)f.setTab(q)},"files.open":()=>f.openCurrent(),"files.mention":()=>f.mentionCurrent?.(),"files.createPR":()=>f.createPR?.(),"files.openExternal":()=>f.openExternal(),"files.refresh":()=>f.refresh()})}))}var iZ;var d8=C(()=>{bG();b1();iZ=["all","changes"]});import{spawn as XL}from"child_process";import{existsSync as sb}from"fs";import{platform as tb}from"os";function qL(f){if(!f)return;let J=tb();if(J==="linux"){if(sb("/proc/sys/fs/binfmt_misc/WSLInterop")||process.env.WSL_DISTRO_NAME){lZ("wslview",[f],()=>{let Y=XL("wslpath",["-w",f],{stdio:["ignore","pipe","ignore"]}),z="";Y.stdout?.on("data",(G)=>{z+=G.toString()}),Y.on("close",(G)=>{if(G===0)lZ("explorer.exe",[z.trim()])})});return}lZ("xdg-open",[f]);return}if(J==="darwin"){lZ("open",[f]);return}if(J==="win32"){lZ("cmd.exe",["/c","start","",f]);return}}function lZ(f,J,Y){try{let z=XL(f,J,{stdio:"ignore",detached:!0});z.on("error",()=>Y?.()),z.unref()}catch{Y?.()}}var QL=()=>{};function i8(f,J,Y,z){for(let G of f.children)if(G.isDir){let Z=J.has(G.path);if(z.push({kind:"dir",path:G.path,name:G.name,depth:Y,expanded:Z,hasChildren:G.children.length>0}),Z)i8(G,J,Y+1,z)}else z.push({kind:"file",path:G.path,name:G.name,depth:Y})}function HL(f,J){if(J<=0)return f;let Y=[...f];if(Y.length<=J)return f;return`\u2026${Y.slice(Y.length-Math.max(0,J-1)).join("")}`}function BL(f){return f.map((J)=>({kind:"status",path:J.path,status:J.status,added:J.added,deleted:J.deleted}))}function eb(f){return`${f.kind}\x00${f.path}`}function fS(f,J){if(f.kind!==J.kind||f.path!==J.path)return!1;switch(f.kind){case"file":{let Y=J;return f.name===Y.name&&f.depth===Y.depth}case"dir":{let Y=J;return f.name===Y.name&&f.depth===Y.depth&&f.expanded===Y.expanded&&f.hasChildren===Y.hasChildren}case"status":{let Y=J;return f.status===Y.status&&f.added===Y.added&&f.deleted===Y.deleted}}}function jL(f,J){return bQ(f,J,eb,fS)}function WL(f,J){if(f===J)return!0;if(f==null||J==null)return!1;if(f.length!==J.length)return!1;for(let Y=0;Y<f.length;Y++)if(f[Y]!==J[Y])return!1;return!0}function VL(f,J){if(f===J)return!0;if(f==null||J==null)return!1;if(f.length!==J.length)return!1;for(let Y=0;Y<f.length;Y++){let z=f[Y],G=J[Y];if(z.path!==G.path||z.status!==G.status||z.added!==G.added||z.deleted!==G.deleted)return!1}return!0}var KL=()=>{};import{watch as JS}from"fs";import{TextAttributes as aZ}from"@opentui/core";function YS(f){switch(f){case"M":return"warning";case"A":return"success";case"D":return"error";case"?":return"textMuted";case"R":case"C":case"U":return"info"}}function GS(f){let J=f.toLowerCase();if(J.includes("not a git repository"))return F("files.error.notGitRepo");if(J.includes("does not exist")||J.includes("enoent"))return F("files.error.pathMissing");if(J.includes("permission denied")||J.includes("eacces"))return F("files.error.permissionDenied");if(J.includes("git: not found")||J.includes("command not found"))return F("files.error.gitNotInstalled");let Y=f.indexOf(": ");if(Y>=0&&f.startsWith("git "))return f.slice(Y+2).trim()||F("files.error.gitFailed");return f.trim()||F("files.error.gitFailed")}function ZS(f){switch(f){case"all":return F("files.tabs.all");case"changes":return F("files.tabs.changes")}}function l8(f){let{theme:J}=d0(),Y=TJ(),z=()=>f.focused?f.focused():!0,[G,Z]=r("all"),[q,Q]=r(0),[H,B]=r(0),[V,j]=r(null,{equals:WL}),[U,L]=r(null,{equals:VL}),[O,M]=r(null),[g,I]=r(new Set),a=0;async function N(x,f0){let u=++a;if(f0==null){j(null),L(null),M(null);return}M(null);try{if(x==="all"){let G0=await v8(f0);if(u!==a||f.worktreePath()!==f0)return;j(G0)}else if(x==="changes"){let G0=await m8(f0);if(u!==a||f.worktreePath()!==f0)return;L(G0)}}catch(G0){let w=G0 instanceof Error?G0.message:String(G0);if(u===a&&f.worktreePath()===f0)M(w)}}ff(O1(f.worktreePath,async(x)=>{j(null),L(null),M(null),Q(0),I(new Set),await N(G(),x)})),ff(O1(f.worktreePath,(x)=>{if(x==null)return;if(process.env.KOBE_FILETREE_WATCH!=="1")return;let f0=null,u=null;try{u=JS(x,{recursive:!0},(G0,w)=>{if(w==null)return;let n=w.toString();if(n===".git"||n.startsWith(".git/")||n.startsWith(".git\\"))return;if(n.startsWith("node_modules/")||n.startsWith("node_modules\\"))return;if(f0!=null)clearTimeout(f0);f0=setTimeout(()=>{f0=null,B((q0)=>q0+1)},500)}),u.on("error",()=>{})}catch{}vf(()=>{if(f0!=null)clearTimeout(f0);if(u!=null)u.close()})})),ff(O1([G,H],async([x,f0])=>{let u=f.worktreePath();if(u==null)return;Q(0);let w=H()>0;if(x==="all"){if(V()==null||w)await N("all",u)}else if(x==="changes"){if(U()==null||w)await N("changes",u)}}));let A=K0(()=>{let x=V();if(x==null)return null;return zL(x)}),R=K0((x)=>{let f0=[];if(G()==="all"){let u=A();if(u!=null)i8(u,g(),0,f0)}else if(G()==="changes"){let u=U();if(u!=null)f0.push(...BL(u))}return jL(x??[],f0)},[]),S=K0(()=>{let x=0,f0=0;for(let u of R()){if(u.kind!=="status")continue;if(u.added!=null)x=Math.max(x,String(u.added).length+1);if(u.deleted!=null)f0=Math.max(f0,String(u.deleted).length+1)}return{added:x,deleted:f0}}),_=K0(()=>{let x=S(),f0=(x.added>0?x.added+1:0)+(x.deleted>0?x.deleted+1:0);return Math.max(8,Y().width-6-f0)});function z0(){let x=R();if(x.length===0)return;Q(Math.min(q()+1,x.length-1))}function e(){if(R().length===0)return;Q(Math.max(q()-1,0))}function Y0(){let x=R(),f0=q(),u=x[f0];if(!u)return;if(u.kind!=="dir")return;if(!u.expanded&&u.hasChildren)I((G0)=>{let w=new Set(G0);return w.add(u.path),w});else if(u.expanded){if(f0+1<x.length)Q(f0+1)}}function T(){if(G()!=="all")return;let x=R(),f0=q(),u=x[f0];if(!u)return;if(u.kind==="dir"&&u.expanded){I((w)=>{let n=new Set(w);return n.delete(u.path),n});return}if(u.kind!=="dir"&&u.kind!=="file")return;let G0=u.depth-1;if(G0<0)return;for(let w=f0-1;w>=0;w--){let n=x[w];if(!n)continue;if(n.kind==="dir"&&n.depth===G0){Q(w);return}}}function Q0(){let x=R(),f0=q();if(f0<0||f0>=x.length)return;let u=x[f0];if(!u)return;if(u.kind==="dir"){I((G0)=>{let w=new Set(G0);if(w.has(u.path))w.delete(u.path);else w.add(u.path);return w});return}f.onOpenFile(u.path)}function t(){let x=R(),f0=q();if(f0<0||f0>=x.length)return;let u=x[f0];if(!u||u.kind==="dir")return;f.onMention?.(u.path)}function V0(){B((x)=>x+1),f.onRefresh?.()}function C0(){let x=R(),f0=q();if(f0<0||f0>=x.length)return;let u=x[f0];if(!u||u.kind==="dir")return;let G0=f.worktreePath();if(!G0)return;let w=`${G0}/${u.path}`;qL(w)}n8({focused:z,moveDown:z0,moveUp:e,setTab:(x)=>Z(x),currentTab:G,openCurrent:Q0,mentionCurrent:t,createPR:f.onCreatePR,openExternal:C0,refresh:V0,expandOrDescend:Y0,collapseOrParent:T});let $;return ff(O1([q,R],([x,f0])=>{if(!$)return;if(f0.length===0)return;let u=$.scrollTop,G0=$.viewport.height;if(G0<=0)return;if(x<u)$.scrollTo({x:0,y:x});else if(x>=u+G0)$.scrollTo({x:0,y:x-G0+1})})),(()=>{var x=W("box"),f0=W("box"),u=W("box"),G0=W("scrollbox");return D(x,f0),D(x,G0),X(x,"flexDirection","column"),X(x,"flexGrow",1),X(x,"paddingTop",1),X(x,"paddingBottom",1),X(x,"paddingLeft",0),X(x,"paddingRight",0),K(x,b(X0,{get when(){return f.onZenToggle||f.onCreatePR},get children(){var w=W("box");return X(w,"flexDirection","row"),X(w,"justifyContent","flex-end"),X(w,"gap",2),X(w,"paddingBottom",1),X(w,"flexShrink",0),K(w,b(X0,{get when(){return f.onZenToggle},get children(){var n=W("box"),q0=W("text"),W0=W("text");return D(n,q0),D(n,W0),X(n,"flexDirection","row"),X(n,"gap",1),X(n,"onMouseUp",()=>f.onZenToggle?.()),D(q0,E0("\u262F")),X(q0,"wrapMode","none"),X(W0,"wrapMode","none"),K(W0,()=>F("files.actions.zen")),E((H0)=>{var k0=J.accent,x0=aZ.BOLD,y0=J.text;return k0!==H0.e&&(H0.e=X(q0,"fg",k0,H0.e)),x0!==H0.t&&(H0.t=X(q0,"attributes",x0,H0.t)),y0!==H0.a&&(H0.a=X(W0,"fg",y0,H0.a)),H0},{e:void 0,t:void 0,a:void 0}),n}}),null),K(w,b(X0,{get when(){return f.onCreatePR},get children(){var n=W("box"),q0=W("text"),W0=W("text");return D(n,q0),D(n,W0),X(n,"flexDirection","row"),X(n,"gap",1),X(n,"onMouseUp",()=>f.onCreatePR?.()),D(q0,E0("[P]")),X(q0,"wrapMode","none"),X(W0,"wrapMode","none"),K(W0,()=>F("files.actions.createPR")),E((H0)=>{var k0=J.accent,x0=aZ.BOLD,y0=J.text;return k0!==H0.e&&(H0.e=X(q0,"fg",k0,H0.e)),x0!==H0.t&&(H0.t=X(q0,"attributes",x0,H0.t)),y0!==H0.a&&(H0.a=X(W0,"fg",y0,H0.a)),H0},{e:void 0,t:void 0,a:void 0}),n}}),null),w}}),f0),D(f0,u),X(f0,"flexDirection","row"),X(f0,"justifyContent","space-between"),X(f0,"paddingBottom",0),X(f0,"flexShrink",0),X(u,"flexDirection","row"),X(u,"gap",2),K(u,b(Zf,{each:zS,children:(w)=>{let n=()=>G()===w;return(()=>{var q0=W("text");return X(q0,"wrapMode","none"),X(q0,"onMouseUp",()=>Z(w)),K(q0,()=>ZS(w)),E((W0)=>{var H0=n()?J.primary:J.textMuted,k0=n()?aZ.BOLD:void 0;return H0!==W0.e&&(W0.e=X(q0,"fg",H0,W0.e)),k0!==W0.t&&(W0.t=X(q0,"attributes",k0,W0.t)),W0},{e:void 0,t:void 0}),q0})()}})),K(f0,b(X0,{get when(){return f.cornerBadge?.()},children:(w)=>(()=>{var n=W("text");return X(n,"wrapMode","none"),K(n,()=>w().text),E((q0)=>{var W0=w().active?J.accent:J.textMuted,H0=w().active?aZ.BOLD:void 0;return W0!==q0.e&&(q0.e=X(n,"fg",W0,q0.e)),H0!==q0.t&&(q0.t=X(n,"attributes",H0,q0.t)),q0},{e:void 0,t:void 0}),n})()}),null),K(x,b(X0,{get when(){return G()==="changes"},get children(){var w=W("box"),n=W("text");return D(w,n),X(w,"flexDirection","column"),X(w,"paddingBottom",1),X(w,"flexShrink",0),X(w,"gap",0),X(n,"wrapMode","none"),K(n,()=>F("files.legend.changes")),E((q0)=>X(n,"fg",J.textMuted,q0)),w}}),G0),K(x,b(X0,{get when(){return G()!=="changes"},get children(){var w=W("box");return X(w,"flexDirection","row"),X(w,"paddingBottom",1),X(w,"flexShrink",0),w}}),G0),uY((w)=>{$=w},G0),X(G0,"flexGrow",1),X(G0,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),K(G0,b(X0,{get when(){return f.worktreePath()==null},get children(){var w=W("box"),n=W("text");return D(w,n),X(w,"paddingTop",1),X(w,"paddingLeft",1),K(n,()=>F("files.empty.noTask")),E((q0)=>X(n,"fg",J.textMuted,q0)),w}}),null),K(G0,b(X0,{get when(){return I0(()=>f.worktreePath()!=null)()&&O()!=null},get children(){var w=W("box"),n=W("text"),q0=W("text");return D(w,n),D(w,q0),X(w,"paddingTop",1),X(w,"paddingLeft",1),X(w,"flexDirection","column"),X(w,"gap",0),X(n,"wrapMode","word"),K(n,()=>GS(O()??"")),X(q0,"wrapMode","word"),K(q0,()=>F("files.error.retryHint")),E((W0)=>{var{error:H0,textMuted:k0}=J;return H0!==W0.e&&(W0.e=X(n,"fg",H0,W0.e)),k0!==W0.t&&(W0.t=X(q0,"fg",k0,W0.t)),W0},{e:void 0,t:void 0}),w}}),null),K(G0,b(X0,{get when(){return I0(()=>f.worktreePath()!=null&&O()==null&&R().length===0)()&&(G()==="all"&&V()!=null||G()==="changes"&&U()!=null)},get children(){var w=W("box"),n=W("text");return D(w,n),X(w,"paddingTop",1),X(w,"paddingLeft",1),K(n,(()=>{var q0=I0(()=>G()==="all");return()=>q0()?F("files.empty.noFiles"):F("files.empty.noChanges")})()),E((q0)=>X(n,"fg",J.textMuted,q0)),w}}),null),K(G0,b(X0,{get when(){return I0(()=>f.worktreePath()!=null&&O()==null)()&&R().length>0},get children(){var w=W("box");return X(w,"flexShrink",0),X(w,"gap",0),X(w,"paddingRight",1),K(w,b(Zf,{get each(){return R()},children:(n,q0)=>{let W0=()=>q0()===q(),H0=(()=>{var s=W("text");return X(s,"wrapMode","none"),K(s,()=>W0()?"\u258C":" "),E((R0)=>X(s,"fg",W0()?J.focusAccent:void 0,R0)),s})(),k0=()=>W0()?J.backgroundElement:void 0;if(n.kind==="dir"){let s=" ".repeat(n.depth),R0=n.expanded?"\u25BE":"\u25B8";return(()=>{var i0=W("box"),$0=W("box"),w0=W("text");return D(i0,$0),X(i0,"flexDirection","row"),X(i0,"gap",0),X(i0,"onMouseUp",()=>{Q(q0()),I((v)=>{let J0=new Set(v);if(J0.has(n.path))J0.delete(n.path);else J0.add(n.path);return J0})}),K(i0,H0,$0),D($0,w0),X($0,"flexGrow",1),X($0,"paddingRight",1),X(w0,"wrapMode","none"),K(w0,()=>`${s}${R0} ${n.name}/`),E((v)=>{var J0=k0(),M0=J.textMuted,_0=aZ.BOLD;return J0!==v.e&&(v.e=X(i0,"backgroundColor",J0,v.e)),M0!==v.t&&(v.t=X(w0,"fg",M0,v.t)),_0!==v.a&&(v.a=X(w0,"attributes",_0,v.a)),v},{e:void 0,t:void 0,a:void 0}),i0})()}if(n.kind==="file"){let s=" ".repeat(n.depth);return(()=>{var R0=W("box"),i0=W("box"),$0=W("text");return D(R0,i0),X(R0,"flexDirection","row"),X(R0,"gap",0),X(R0,"onMouseUp",()=>{Q(q0()),f.onOpenFile(n.path)}),K(R0,H0,i0),D(i0,$0),X(i0,"flexGrow",1),X(i0,"paddingRight",1),X($0,"wrapMode","none"),K($0,()=>`${s} ${n.name}`),E((w0)=>{var v=k0(),J0=J.text;return v!==w0.e&&(w0.e=X(R0,"backgroundColor",v,w0.e)),J0!==w0.t&&(w0.t=X($0,"fg",J0,w0.t)),w0},{e:void 0,t:void 0}),R0})()}let x0=YS(n.status),y0=()=>{switch(x0){case"success":return J.success;case"warning":return J.warning;case"error":return J.error;case"info":return J.info;default:return J.textMuted}},Gf=S(),m=n.added==null?" ".repeat(Gf.added):`+${n.added}`.padStart(Gf.added),L0=n.deleted==null?" ".repeat(Gf.deleted):`-${n.deleted}`.padStart(Gf.deleted);return(()=>{var s=W("box"),R0=W("box"),i0=W("text"),$0=W("text");return D(s,R0),X(s,"flexDirection","row"),X(s,"gap",0),X(s,"onMouseUp",()=>{Q(q0()),f.onOpenFile(n.path)}),K(s,H0,R0),D(R0,i0),D(R0,$0),X(R0,"flexDirection","row"),X(R0,"flexGrow",1),X(R0,"gap",1),X(R0,"paddingRight",1),X(i0,"wrapMode","none"),K(i0,()=>n.status),X($0,"wrapMode","none"),X($0,"flexGrow",1),K($0,()=>HL(n.path,_())),K(R0,b(X0,{get when(){return Gf.added>0},get children(){var w0=W("text");return X(w0,"wrapMode","none"),K(w0,m),E((v)=>X(w0,"fg",J.success,v)),w0}}),null),K(R0,b(X0,{get when(){return Gf.deleted>0},get children(){var w0=W("text");return X(w0,"wrapMode","none"),K(w0,L0),E((v)=>X(w0,"fg",J.error,v)),w0}}),null),E((w0)=>{var v=k0(),J0=y0(),M0=J.text;return v!==w0.e&&(w0.e=X(s,"backgroundColor",v,w0.e)),J0!==w0.t&&(w0.t=X(i0,"fg",J0,w0.t)),M0!==w0.a&&(w0.a=X($0,"fg",M0,w0.a)),w0},{e:void 0,t:void 0,a:void 0}),s})()}})),w}}),null),K(x,b(X0,{get when(){return f.worktreePath()!=null},get children(){var w=W("box"),n=W("text");return D(w,n),X(w,"flexDirection","row"),X(w,"paddingTop",1),X(w,"flexShrink",0),X(n,"wrapMode","none"),K(n,()=>F("files.footer.openHint")),E((q0)=>X(n,"fg",J.textMuted,q0)),w}}),null),x})()}var zS;var UL=C(()=>{P();P();P();P();P();P();P();P();P();G1();P();Wf();Ef();c8();d8();QL();KL();zS=["all","changes"]});var DL=C(()=>{UL();c8();d8()});import{promises as XS}from"fs";import qS from"path";async function wQ(f,J){let Y=new AbortController,z=setTimeout(()=>Y.abort(),QS);try{let G=await BJ("git",J,{cwd:f,env:x1(),signal:Y.signal});if(Y.signal.aborted)return null;if(G.status!==0)return null;return G.stdout.trim()}finally{clearTimeout(z)}}async function HS(f){return await wQ(f,["rev-parse","--abbrev-ref","HEAD"])||"HEAD"}async function BS(f){let J=await wQ(f,["symbolic-ref","refs/remotes/origin/HEAD","--short"]);if(!J)return"main";return J.startsWith("origin/")?J.slice(7):J}async function jS(f){let J=await wQ(f,["rev-parse","--abbrev-ref","@{u}"]);return J!==null&&J.length>0}async function WS(f){let J=await wQ(f,["status","--porcelain"]);if(!J)return 0;return J.split(`
|
|
241
|
-
`).filter((Y)=>Y.length>0).length}async function
|
|
236
|
+
${F("update.updateFailed",{code:String(g)})}
|
|
237
|
+
`),process.stdout.write(F("update.pressAnyKey")),await rb(),process.exit(g)}return Uf(()=>({bindings:[{key:"up",cmd:()=>R(-1)},{key:"down",cmd:()=>R(1)},{key:"k",cmd:()=>R(-1)},{key:"j",cmd:()=>R(1)},{key:"return",cmd:()=>S()},{key:"u",cmd:()=>S("update")},{key:"r",cmd:()=>S("release")},{key:"q",cmd:()=>S("close")},{key:"escape",cmd:()=>S("close")},{key:"ctrl+c",cmd:()=>S("close")}]})),(()=>{var N=W("box"),g=W("box"),C=W("text"),y=W("text"),_=W("box"),z0=W("text"),t=W("text"),Y0=x0("v"),T=W("text"),Q0=W("text"),p=x0("v"),D0=W("box"),g0=W("box"),$=W("text"),E=W("scrollbox"),f0=W("box");return D(N,g),D(N,_),D(N,D0),D(N,g0),D(N,E),Z(N,"flexDirection","column"),Z(N,"flexGrow",1),Z(N,"paddingTop",1),Z(N,"paddingLeft",2),Z(N,"paddingRight",2),D(g,C),D(g,y),Z(g,"flexDirection","row"),Z(g,"justifyContent","space-between"),Z(g,"flexShrink",0),Z(C,"wrapMode","none"),K(C,()=>F("update.pageTitle")),D(y,x0("q / esc")),Z(y,"wrapMode","none"),Z(y,"onMouseUp",()=>S("close")),D(_,z0),D(_,t),D(_,T),D(_,Q0),Z(_,"flexDirection","row"),Z(_,"gap",2),Z(_,"flexShrink",0),Z(_,"paddingTop",1),Z(z0,"wrapMode","none"),K(z0,()=>F("update.current")),D(t,Y0),Z(t,"wrapMode","none"),K(t,s0,null),Z(T,"wrapMode","none"),K(T,()=>F("update.latest")),D(Q0,p),Z(Q0,"wrapMode","none"),K(Q0,U,null),Z(D0,"flexDirection","column"),Z(D0,"flexShrink",0),Z(D0,"paddingTop",1),Z(D0,"gap",0),K(D0,b(Zf,{get each(){return O()},children:(I)=>(()=>{var G0=W("box"),x=W("box"),c=W("text"),Z0=x0("["),V0=x0("]"),H0=W("box"),y0=W("text"),w0=W("text");return D(G0,x),D(G0,H0),D(G0,w0),Z(G0,"flexDirection","row"),Z(G0,"gap",1),Z(G0,"paddingLeft",1),Z(G0,"paddingRight",1),Z(G0,"onMouseUp",()=>S(I.id)),D(x,c),Z(x,"width",4),Z(x,"flexShrink",0),D(c,Z0),D(c,V0),Z(c,"wrapMode","none"),K(c,()=>I.key,V0),D(H0,y0),Z(H0,"width",14),Z(H0,"flexShrink",0),Z(y0,"wrapMode","none"),K(y0,()=>I.label),Z(w0,"wrapMode","word"),K(w0,()=>I.detail),u((T0)=>{var r0=H()===I.id?f.primary:void 0,P=H()===I.id?f.selectedListItemText:f.accent,M0=xG.BOLD,J0=H()===I.id?f.selectedListItemText:f.text,F0=H()===I.id?f.selectedListItemText:f.textMuted;return r0!==T0.e&&(T0.e=Z(G0,"backgroundColor",r0,T0.e)),P!==T0.t&&(T0.t=Z(c,"fg",P,T0.t)),M0!==T0.a&&(T0.a=Z(c,"attributes",M0,T0.a)),J0!==T0.o&&(T0.o=Z(y0,"fg",J0,T0.o)),F0!==T0.i&&(T0.i=Z(w0,"fg",F0,T0.i)),T0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),G0})()})),K(N,b(X0,{get when(){return V()},get children(){var I=W("text");return Z(I,"wrapMode","word"),K(I,V),u((G0)=>Z(I,"fg",f.info,G0)),I}}),g0),D(g0,$),Z(g0,"flexShrink",0),Z(g0,"paddingTop",1),Z($,"wrapMode","none"),K($,()=>F("update.changesSectionHeader",{from:s0,to:U()})),D(E,f0),Z(E,"flexGrow",1),Z(E,"flexShrink",1),Z(E,"stickyScroll",!1),Z(f0,"flexDirection","column"),Z(f0,"paddingRight",1),Z(f0,"paddingBottom",1),Z(f0,"gap",0),K(f0,b(X0,{get when(){return q()},get children(){var I=W("text");return K(I,()=>F("update.loadingNotes")),u((G0)=>Z(I,"fg",f.textMuted,G0)),I}}),null),K(f0,b(X0,{get when(){return I0(()=>!q())()&&G().length===0},get children(){var I=W("text");return Z(I,"wrapMode","word"),K(I,()=>F("update.notesUnavailable")),u((G0)=>Z(I,"fg",f.textMuted,G0)),I}}),null),K(f0,b(Zf,{get each(){return G()},children:(I)=>(()=>{var G0=W("box"),x=W("text"),c=x0("v");return D(G0,x),Z(G0,"flexDirection","column"),Z(G0,"paddingBottom",1),Z(G0,"gap",0),D(x,c),Z(x,"wrapMode","none"),K(x,()=>I.version,null),K(G0,b(Zf,{get each(){return $b(I.body)},children:(Z0)=>(()=>{var V0=W("text");return Z(V0,"wrapMode","word"),K(V0,Z0),u((H0)=>Z(V0,"fg",f.textMuted,H0)),V0})()}),null),u((Z0)=>{var V0=f.text,H0=xG.BOLD;return V0!==Z0.e&&(Z0.e=Z(x,"fg",V0,Z0.e)),H0!==Z0.t&&(Z0.t=Z(x,"attributes",H0,Z0.t)),Z0},{e:void 0,t:void 0}),G0})()}),null),u((I)=>{var{background:G0,text:x}=f,c=xG.BOLD,Z0=f.textMuted,V0=f.textMuted,H0=f.text,y0=xG.BOLD,w0=f.textMuted,T0=Y()?.hasUpdate?f.warning:f.success,r0=xG.BOLD,P=f.textMuted,M0=xG.DIM,J0={trackOptions:{backgroundColor:f.background,foregroundColor:f.borderActive}};return G0!==I.e&&(I.e=Z(N,"backgroundColor",G0,I.e)),x!==I.t&&(I.t=Z(C,"fg",x,I.t)),c!==I.a&&(I.a=Z(C,"attributes",c,I.a)),Z0!==I.o&&(I.o=Z(y,"fg",Z0,I.o)),V0!==I.i&&(I.i=Z(z0,"fg",V0,I.i)),H0!==I.n&&(I.n=Z(t,"fg",H0,I.n)),y0!==I.s&&(I.s=Z(t,"attributes",y0,I.s)),w0!==I.h&&(I.h=Z(T,"fg",w0,I.h)),T0!==I.r&&(I.r=Z(Q0,"fg",T0,I.r)),r0!==I.d&&(I.d=Z(Q0,"attributes",r0,I.d)),P!==I.l&&(I.l=Z($,"fg",P,I.l)),M0!==I.u&&(I.u=Z($,"attributes",M0,I.u)),J0!==I.c&&(I.c=Z(E,"verticalScrollbarOptions",J0,I.c)),I},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0}),N})()}async function _b(){await L1({setup:()=>({root:()=>b(pb,{})})})}var JL=k(()=>{h();h();h();h();h();h();h();h();h();Wf();D1();xf();G1();nY();b1()});async function YL(f,J){if(!J)return 0;return pf(f).history.latestTranscriptMtimeForWorktree(J)}var zL=k(()=>{MY()});function ob(f){return f.trim().split(/\s+/)[0]??""}function XL(f,J,Y,z){let G=Xf(Y);if(f==="vim")return{bin:"vim",command:`vim ${G}`};if(f==="nvim")return{bin:"nvim",command:`nvim ${G}`};if(f==="nano")return{bin:"nano",command:`nano ${G}`};if(f==="emacs")return{bin:"emacs",command:`emacs ${G}`};let X=(J.trim()||(z??"").trim()).trim();if(!X)return null;let q=ob(X);if(!q)return null;let Q=X.includes(GL)?X.split(GL).join(G):`${X} ${G}`;return{bin:q,command:Q}}function sb(f,J,Y){let z=Xf(J);return["f=$(mktemp 2>/dev/null)",`if [ -n "$f" ] && git show ${Xf(`HEAD:./${Y}`)} > "$f" 2>/dev/null; then`,` ${f} -d "$f" ${z} -c 'setlocal nomodifiable' -c 'wincmd l'; r=$?`,"else",` ${f} ${z}; r=$?`,"fi",'rm -f "$f" 2>/dev/null; exit $r'].join(`
|
|
238
|
+
`)}function tb(f,J){let Y=f.endsWith("/")?f:`${f}/`;return J.startsWith(Y)?J.slice(Y.length):null}async function eb(f){let J=_z(kf(_J)),Y=kf(kY)??"",z=(process.env.VISUAL??process.env.EDITOR??"").trim();if(J!=="auto")return XL(J,Y,f,z);if(z)return XL("custom","",f,z);let G=Xf(f);for(let X of Z7)if(await ZL(X))return{bin:X,command:`${X} ${G}`};return null}async function ZL(f){try{return await Bun.spawn(["sh","-c",`command -v ${Xf(f)} >/dev/null 2>&1`],{stdin:"ignore",stdout:"ignore",stderr:"ignore"}).exited===0}catch{return!1}}async function fS(f,J){try{return await Bun.spawn(["git","diff","--quiet","HEAD","--",J],{cwd:f,stdin:"ignore",stdout:"ignore",stderr:"ignore",env:x1()}).exited===1}catch{return!1}}async function qL(f,J,Y){let z=await eb(Y);if(!z)return!1;if(!await ZL(z.bin))return!1;let G=await JS(z,J,Y);return await HJ(f,{cwd:J,command:G,name:YS(Y)}),!0}async function JS(f,J,Y){let{bin:z,command:G}=f;if(z!=="nvim"&&z!=="vim")return G;if(G!==`${z} ${Xf(Y)}`)return G;let X=tb(J,Y);if(!X)return G;if(!await fS(J,X))return G;return sb(z,Y,X)}function YS(f){let J=f.slice(f.lastIndexOf("/")+1).trim();return J.length>0?J:"edit"}var GL="{file}";var QL=k(()=>{NY();Of();qq();Tf();qJ()});async function v8(f,J){if(!J)throw Error("git(): cwd is required");let Y=await oz(J,f),z=Y.status??-1;if(z!==0){let G=(Y.stderr??"").trim(),X=(Y.stdout??"").trim();throw Error(`git ${f.join(" ")} (cwd=${J}) exited with code ${z}: ${G||X||"(no output)"}`)}return Y.stdout??""}async function m8(f){let Y=(await v8(["ls-files","--cached","--others","--exclude-standard","--full-name"],f)).split(`
|
|
239
|
+
`).map((G)=>G.replace(/\r$/,"")),z=new Set;for(let G of Y)if(G.length>0)z.add(G);return Array.from(z).sort()}async function c8(f){let J=await v8(["status","--porcelain","--untracked-files=all"],f),Y=jL(J),z=null;try{let G=await v8(["diff","--no-color","--numstat","HEAD"],f);z=new Map(zS(G).map((X)=>[X.path,{added:X.added,deleted:X.deleted}]))}catch{z=new Map}return Y.map((G)=>{let X=z?.get(G.path);if(X)return{...G,added:X.added,deleted:X.deleted};return G})}function zS(f){let J=f.split(`
|
|
240
|
+
`).map((z)=>z.replace(/\r$/,"")),Y=[];for(let z of J){if(z.length===0)continue;let G=z.indexOf("\t");if(G<0)continue;let X=z.indexOf("\t",G+1);if(X<0)continue;let q=z.slice(0,G),Q=z.slice(G+1,X),H=z.slice(X+1),B=H.indexOf(" -> ");if(B>=0)H=H.slice(B+4);let V=q==="-"?null:Number.parseInt(q,10),j=Q==="-"?null:Number.parseInt(Q,10);if(H.length===0)continue;Y.push({path:H,added:Number.isNaN(V)?null:V,deleted:Number.isNaN(j)?null:j})}return Y}function HL(f){let J={name:"",path:"",isDir:!0,children:[]};for(let Y of f){if(!Y)continue;let z=Y.split("/").filter((X)=>X.length>0);if(z.length===0)continue;let G=J;for(let X=0;X<z.length;X++){let q=z[X],H=X!==z.length-1,B=G.children.find((V)=>V.name===q&&V.isDir===H);if(!B)B={name:q,path:z.slice(0,X+1).join("/"),isDir:H,children:[]},G.children.push(B);G=B}}return BL(J),J}function BL(f){f.children.sort((J,Y)=>{if(J.isDir!==Y.isDir)return J.isDir?-1:1;return J.name.localeCompare(Y.name)});for(let J of f.children)BL(J)}function jL(f){let J=f.split(`
|
|
241
|
+
`).map((z)=>z.replace(/\r$/,"")),Y=[];for(let z of J){if(z.length<4)continue;let G=z[0],X=z[1],q=z[2];if(G===void 0||X===void 0||q!==" ")continue;let Q=z.slice(3),H;if(G==="?"&&X==="?")H="?";else{let B=X!==" "?X:G;if(B==="M"||B==="A"||B==="D"||B==="R"||B==="C"||B==="U")H=B;else continue}if(H==="R"){let B=Q.indexOf(" -> ");if(B>=0)Q=Q.slice(B+4)}if(Q.length===0)continue;if(Q.endsWith("/"))continue;Y.push({path:Q,status:H})}return Y}var n8=k(()=>{Qq()});function d8(f){Uf(()=>({enabled:f.focused(),bindings:mY({"files.nav":(J,Y)=>{if((Y??0)%2===0)f.moveDown();else f.moveUp()},"files.hierarchy":(J,Y)=>{if((Y??0)%2===0)f.collapseOrParent();else f.expandOrDescend()},"files.tab":(J,Y)=>{let z=f.currentTab(),G=aX.indexOf(z);if(G<0)return;let X=(Y??0)%2===0?-1:1,q=aX[(G+X+aX.length)%aX.length];if(q)f.setTab(q)},"files.open":()=>f.openCurrent(),"files.mention":()=>f.mentionCurrent?.(),"files.createPR":()=>f.createPR?.(),"files.openExternal":()=>f.openExternal(),"files.refresh":()=>f.refresh()})}))}var aX;var i8=k(()=>{SG();b1();aX=["all","changes"]});import{spawn as WL}from"child_process";import{existsSync as GS}from"fs";import{platform as XS}from"os";function VL(f){if(!f)return;let J=XS();if(J==="linux"){if(GS("/proc/sys/fs/binfmt_misc/WSLInterop")||process.env.WSL_DISTRO_NAME){$X("wslview",[f],()=>{let Y=WL("wslpath",["-w",f],{stdio:["ignore","pipe","ignore"]}),z="";Y.stdout?.on("data",(G)=>{z+=G.toString()}),Y.on("close",(G)=>{if(G===0)$X("explorer.exe",[z.trim()])})});return}$X("xdg-open",[f]);return}if(J==="darwin"){$X("open",[f]);return}if(J==="win32"){$X("cmd.exe",["/c","start","",f]);return}}function $X(f,J,Y){try{let z=WL(f,J,{stdio:"ignore",detached:!0});z.on("error",()=>Y?.()),z.unref()}catch{Y?.()}}var KL=()=>{};function l8(f,J,Y,z){for(let G of f.children)if(G.isDir){let X=J.has(G.path);if(z.push({kind:"dir",path:G.path,name:G.name,depth:Y,expanded:X,hasChildren:G.children.length>0}),X)l8(G,J,Y+1,z)}else z.push({kind:"file",path:G.path,name:G.name,depth:Y})}function UL(f,J){if(J<=0)return f;let Y=[...f];if(Y.length<=J)return f;return`\u2026${Y.slice(Y.length-Math.max(0,J-1)).join("")}`}function DL(f){return f.map((J)=>({kind:"status",path:J.path,status:J.status,added:J.added,deleted:J.deleted}))}function ZS(f){return`${f.kind}\x00${f.path}`}function qS(f,J){if(f.kind!==J.kind||f.path!==J.path)return!1;switch(f.kind){case"file":{let Y=J;return f.name===Y.name&&f.depth===Y.depth}case"dir":{let Y=J;return f.name===Y.name&&f.depth===Y.depth&&f.expanded===Y.expanded&&f.hasChildren===Y.hasChildren}case"status":{let Y=J;return f.status===Y.status&&f.added===Y.added&&f.deleted===Y.deleted}}}function LL(f,J){return TQ(f,J,ZS,qS)}function ML(f,J){if(f===J)return!0;if(f==null||J==null)return!1;if(f.length!==J.length)return!1;for(let Y=0;Y<f.length;Y++)if(f[Y]!==J[Y])return!1;return!0}function FL(f,J){if(f===J)return!0;if(f==null||J==null)return!1;if(f.length!==J.length)return!1;for(let Y=0;Y<f.length;Y++){let z=f[Y],G=J[Y];if(z.path!==G.path||z.status!==G.status||z.added!==G.added||z.deleted!==G.deleted)return!1}return!0}var OL=()=>{};import{watch as QS}from"fs";import{TextAttributes as rX}from"@opentui/core";function HS(f){switch(f){case"M":return"warning";case"A":return"success";case"D":return"error";case"?":return"textMuted";case"R":case"C":case"U":return"info"}}function jS(f){let J=f.toLowerCase();if(J.includes("not a git repository"))return F("files.error.notGitRepo");if(J.includes("does not exist")||J.includes("enoent"))return F("files.error.pathMissing");if(J.includes("permission denied")||J.includes("eacces"))return F("files.error.permissionDenied");if(J.includes("git: not found")||J.includes("command not found"))return F("files.error.gitNotInstalled");let Y=f.indexOf(": ");if(Y>=0&&f.startsWith("git "))return f.slice(Y+2).trim()||F("files.error.gitFailed");return f.trim()||F("files.error.gitFailed")}function WS(f){switch(f){case"all":return F("files.tabs.all");case"changes":return F("files.tabs.changes")}}function a8(f){let{theme:J}=i0(),Y=TJ(),z=()=>f.focused?f.focused():!0,[G,X]=r("all"),[q,Q]=r(0),[H,B]=r(0),[V,j]=r(null,{equals:ML}),[U,L]=r(null,{equals:FL}),[O,M]=r(null),[R,S]=r(new Set),a=0;async function N(E,f0){let I=++a;if(f0==null){j(null),L(null),M(null);return}M(null);try{if(E==="all"){let G0=await m8(f0);if(I!==a||f.worktreePath()!==f0)return;j(G0)}else if(E==="changes"){let G0=await c8(f0);if(I!==a||f.worktreePath()!==f0)return;L(G0)}}catch(G0){let x=G0 instanceof Error?G0.message:String(G0);if(I===a&&f.worktreePath()===f0)M(x)}}zf(O1(f.worktreePath,async(E)=>{j(null),L(null),M(null),Q(0),S(new Set),await N(G(),E)})),zf(O1(f.worktreePath,(E)=>{if(E==null)return;if(process.env.KOBE_FILETREE_WATCH!=="1")return;let f0=null,I=null;try{I=QS(E,{recursive:!0},(G0,x)=>{if(x==null)return;let c=x.toString();if(c===".git"||c.startsWith(".git/")||c.startsWith(".git\\"))return;if(c.startsWith("node_modules/")||c.startsWith("node_modules\\"))return;if(f0!=null)clearTimeout(f0);f0=setTimeout(()=>{f0=null,B((Z0)=>Z0+1)},500)}),I.on("error",()=>{})}catch{}mf(()=>{if(f0!=null)clearTimeout(f0);if(I!=null)I.close()})})),zf(O1([G,H],async([E,f0])=>{let I=f.worktreePath();if(I==null)return;Q(0);let x=H()>0;if(E==="all"){if(V()==null||x)await N("all",I)}else if(E==="changes"){if(U()==null||x)await N("changes",I)}}));let g=U0(()=>{let E=V();if(E==null)return null;return HL(E)}),C=U0((E)=>{let f0=[];if(G()==="all"){let I=g();if(I!=null)l8(I,R(),0,f0)}else if(G()==="changes"){let I=U();if(I!=null)f0.push(...DL(I))}return LL(E??[],f0)},[]),y=U0(()=>{let E=0,f0=0;for(let I of C()){if(I.kind!=="status")continue;if(I.added!=null)E=Math.max(E,String(I.added).length+1);if(I.deleted!=null)f0=Math.max(f0,String(I.deleted).length+1)}return{added:E,deleted:f0}}),_=U0(()=>{let E=y(),f0=(E.added>0?E.added+1:0)+(E.deleted>0?E.deleted+1:0);return Math.max(8,Y().width-6-f0)});function z0(){let E=C();if(E.length===0)return;Q(Math.min(q()+1,E.length-1))}function t(){if(C().length===0)return;Q(Math.max(q()-1,0))}function Y0(){let E=C(),f0=q(),I=E[f0];if(!I)return;if(I.kind!=="dir")return;if(!I.expanded&&I.hasChildren)S((G0)=>{let x=new Set(G0);return x.add(I.path),x});else if(I.expanded){if(f0+1<E.length)Q(f0+1)}}function T(){if(G()!=="all")return;let E=C(),f0=q(),I=E[f0];if(!I)return;if(I.kind==="dir"&&I.expanded){S((x)=>{let c=new Set(x);return c.delete(I.path),c});return}if(I.kind!=="dir"&&I.kind!=="file")return;let G0=I.depth-1;if(G0<0)return;for(let x=f0-1;x>=0;x--){let c=E[x];if(!c)continue;if(c.kind==="dir"&&c.depth===G0){Q(x);return}}}function Q0(){let E=C(),f0=q();if(f0<0||f0>=E.length)return;let I=E[f0];if(!I)return;if(I.kind==="dir"){S((G0)=>{let x=new Set(G0);if(x.has(I.path))x.delete(I.path);else x.add(I.path);return x});return}f.onOpenFile(I.path)}function p(){let E=C(),f0=q();if(f0<0||f0>=E.length)return;let I=E[f0];if(!I||I.kind==="dir")return;f.onMention?.(I.path)}function D0(){B((E)=>E+1),f.onRefresh?.()}function g0(){let E=C(),f0=q();if(f0<0||f0>=E.length)return;let I=E[f0];if(!I||I.kind==="dir")return;let G0=f.worktreePath();if(!G0)return;let x=`${G0}/${I.path}`;VL(x)}d8({focused:z,moveDown:z0,moveUp:t,setTab:(E)=>X(E),currentTab:G,openCurrent:Q0,mentionCurrent:p,createPR:f.onCreatePR,openExternal:g0,refresh:D0,expandOrDescend:Y0,collapseOrParent:T});let $;return zf(O1([q,C],([E,f0])=>{if(!$)return;if(f0.length===0)return;let I=$.scrollTop,G0=$.viewport.height;if(G0<=0)return;if(E<I)$.scrollTo({x:0,y:E});else if(E>=I+G0)$.scrollTo({x:0,y:E-G0+1})})),(()=>{var E=W("box"),f0=W("box"),I=W("box"),G0=W("scrollbox");return D(E,f0),D(E,G0),Z(E,"flexDirection","column"),Z(E,"flexGrow",1),Z(E,"paddingTop",1),Z(E,"paddingBottom",1),Z(E,"paddingLeft",0),Z(E,"paddingRight",0),K(E,b(X0,{get when(){return f.onZenToggle||f.onCreatePR},get children(){var x=W("box");return Z(x,"flexDirection","row"),Z(x,"justifyContent","flex-end"),Z(x,"gap",2),Z(x,"paddingBottom",1),Z(x,"flexShrink",0),K(x,b(X0,{get when(){return f.onZenToggle},get children(){var c=W("box"),Z0=W("text"),V0=W("text");return D(c,Z0),D(c,V0),Z(c,"flexDirection","row"),Z(c,"gap",1),Z(c,"onMouseUp",()=>f.onZenToggle?.()),D(Z0,x0("[~]")),Z(Z0,"wrapMode","none"),Z(V0,"wrapMode","none"),K(V0,()=>F("files.actions.zen")),u((H0)=>{var y0=J.accent,w0=rX.BOLD,T0=J.text;return y0!==H0.e&&(H0.e=Z(Z0,"fg",y0,H0.e)),w0!==H0.t&&(H0.t=Z(Z0,"attributes",w0,H0.t)),T0!==H0.a&&(H0.a=Z(V0,"fg",T0,H0.a)),H0},{e:void 0,t:void 0,a:void 0}),c}}),null),K(x,b(X0,{get when(){return f.onCreatePR},get children(){var c=W("box"),Z0=W("text"),V0=W("text");return D(c,Z0),D(c,V0),Z(c,"flexDirection","row"),Z(c,"gap",1),Z(c,"onMouseUp",()=>f.onCreatePR?.()),D(Z0,x0("[P]")),Z(Z0,"wrapMode","none"),Z(V0,"wrapMode","none"),K(V0,()=>F("files.actions.createPR")),u((H0)=>{var y0=J.accent,w0=rX.BOLD,T0=J.text;return y0!==H0.e&&(H0.e=Z(Z0,"fg",y0,H0.e)),w0!==H0.t&&(H0.t=Z(Z0,"attributes",w0,H0.t)),T0!==H0.a&&(H0.a=Z(V0,"fg",T0,H0.a)),H0},{e:void 0,t:void 0,a:void 0}),c}}),null),x}}),f0),D(f0,I),Z(f0,"flexDirection","row"),Z(f0,"justifyContent","space-between"),Z(f0,"paddingBottom",0),Z(f0,"flexShrink",0),Z(I,"flexDirection","row"),Z(I,"gap",2),K(I,b(Zf,{each:BS,children:(x)=>{let c=()=>G()===x;return(()=>{var Z0=W("text");return Z(Z0,"wrapMode","none"),Z(Z0,"onMouseUp",()=>X(x)),K(Z0,()=>WS(x)),u((V0)=>{var H0=c()?J.primary:J.textMuted,y0=c()?rX.BOLD:void 0;return H0!==V0.e&&(V0.e=Z(Z0,"fg",H0,V0.e)),y0!==V0.t&&(V0.t=Z(Z0,"attributes",y0,V0.t)),V0},{e:void 0,t:void 0}),Z0})()}})),K(f0,b(X0,{get when(){return f.cornerBadge?.()},children:(x)=>(()=>{var c=W("text");return Z(c,"wrapMode","none"),K(c,()=>x().text),u((Z0)=>{var V0=x().active?J.accent:J.textMuted,H0=x().active?rX.BOLD:void 0;return V0!==Z0.e&&(Z0.e=Z(c,"fg",V0,Z0.e)),H0!==Z0.t&&(Z0.t=Z(c,"attributes",H0,Z0.t)),Z0},{e:void 0,t:void 0}),c})()}),null),K(E,b(X0,{get when(){return G()==="changes"},get children(){var x=W("box"),c=W("text");return D(x,c),Z(x,"flexDirection","column"),Z(x,"paddingBottom",1),Z(x,"flexShrink",0),Z(x,"gap",0),Z(c,"wrapMode","none"),K(c,()=>F("files.legend.changes")),u((Z0)=>Z(c,"fg",J.textMuted,Z0)),x}}),G0),K(E,b(X0,{get when(){return G()!=="changes"},get children(){var x=W("box");return Z(x,"flexDirection","row"),Z(x,"paddingBottom",1),Z(x,"flexShrink",0),x}}),G0),hY((x)=>{$=x},G0),Z(G0,"flexGrow",1),Z(G0,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),K(G0,b(X0,{get when(){return f.worktreePath()==null},get children(){var x=W("box"),c=W("text");return D(x,c),Z(x,"paddingTop",1),Z(x,"paddingLeft",1),K(c,()=>F("files.empty.noTask")),u((Z0)=>Z(c,"fg",J.textMuted,Z0)),x}}),null),K(G0,b(X0,{get when(){return I0(()=>f.worktreePath()!=null)()&&O()!=null},get children(){var x=W("box"),c=W("text"),Z0=W("text");return D(x,c),D(x,Z0),Z(x,"paddingTop",1),Z(x,"paddingLeft",1),Z(x,"flexDirection","column"),Z(x,"gap",0),Z(c,"wrapMode","word"),K(c,()=>jS(O()??"")),Z(Z0,"wrapMode","word"),K(Z0,()=>F("files.error.retryHint")),u((V0)=>{var{error:H0,textMuted:y0}=J;return H0!==V0.e&&(V0.e=Z(c,"fg",H0,V0.e)),y0!==V0.t&&(V0.t=Z(Z0,"fg",y0,V0.t)),V0},{e:void 0,t:void 0}),x}}),null),K(G0,b(X0,{get when(){return I0(()=>f.worktreePath()!=null&&O()==null&&C().length===0)()&&(G()==="all"&&V()!=null||G()==="changes"&&U()!=null)},get children(){var x=W("box"),c=W("text");return D(x,c),Z(x,"paddingTop",1),Z(x,"paddingLeft",1),K(c,(()=>{var Z0=I0(()=>G()==="all");return()=>Z0()?F("files.empty.noFiles"):F("files.empty.noChanges")})()),u((Z0)=>Z(c,"fg",J.textMuted,Z0)),x}}),null),K(G0,b(X0,{get when(){return I0(()=>f.worktreePath()!=null&&O()==null)()&&C().length>0},get children(){var x=W("box");return Z(x,"flexShrink",0),Z(x,"gap",0),Z(x,"paddingRight",1),K(x,b(Zf,{get each(){return C()},children:(c,Z0)=>{let V0=()=>Z0()===q(),H0=(()=>{var J0=W("text");return Z(J0,"wrapMode","none"),K(J0,()=>V0()?"\u258C":" "),u((F0)=>Z(J0,"fg",V0()?J.focusAccent:void 0,F0)),J0})(),y0=()=>V0()?J.backgroundElement:void 0;if(c.kind==="dir"){let J0=" ".repeat(c.depth),F0=c.expanded?"\u25BE":"\u25B8";return(()=>{var a0=W("box"),p0=W("box"),u0=W("text");return D(a0,p0),Z(a0,"flexDirection","row"),Z(a0,"gap",0),Z(a0,"onMouseUp",()=>{Q(Z0()),S((_0)=>{let n=new Set(_0);if(n.has(c.path))n.delete(c.path);else n.add(c.path);return n})}),K(a0,H0,p0),D(p0,u0),Z(p0,"flexGrow",1),Z(p0,"paddingRight",1),Z(u0,"wrapMode","none"),K(u0,()=>`${J0}${F0} ${c.name}/`),u((_0)=>{var n=y0(),q0=J.textMuted,b0=rX.BOLD;return n!==_0.e&&(_0.e=Z(a0,"backgroundColor",n,_0.e)),q0!==_0.t&&(_0.t=Z(u0,"fg",q0,_0.t)),b0!==_0.a&&(_0.a=Z(u0,"attributes",b0,_0.a)),_0},{e:void 0,t:void 0,a:void 0}),a0})()}if(c.kind==="file"){let J0=" ".repeat(c.depth);return(()=>{var F0=W("box"),a0=W("box"),p0=W("text");return D(F0,a0),Z(F0,"flexDirection","row"),Z(F0,"gap",0),Z(F0,"onMouseUp",()=>{Q(Z0()),f.onOpenFile(c.path)}),K(F0,H0,a0),D(a0,p0),Z(a0,"flexGrow",1),Z(a0,"paddingRight",1),Z(p0,"wrapMode","none"),K(p0,()=>`${J0} ${c.name}`),u((u0)=>{var _0=y0(),n=J.text;return _0!==u0.e&&(u0.e=Z(F0,"backgroundColor",_0,u0.e)),n!==u0.t&&(u0.t=Z(p0,"fg",n,u0.t)),u0},{e:void 0,t:void 0}),F0})()}let w0=HS(c.status),T0=()=>{switch(w0){case"success":return J.success;case"warning":return J.warning;case"error":return J.error;case"info":return J.info;default:return J.textMuted}},r0=y(),P=c.added==null?" ".repeat(r0.added):`+${c.added}`.padStart(r0.added),M0=c.deleted==null?" ".repeat(r0.deleted):`-${c.deleted}`.padStart(r0.deleted);return(()=>{var J0=W("box"),F0=W("box"),a0=W("text"),p0=W("text");return D(J0,F0),Z(J0,"flexDirection","row"),Z(J0,"gap",0),Z(J0,"onMouseUp",()=>{Q(Z0()),f.onOpenFile(c.path)}),K(J0,H0,F0),D(F0,a0),D(F0,p0),Z(F0,"flexDirection","row"),Z(F0,"flexGrow",1),Z(F0,"gap",1),Z(F0,"paddingRight",1),Z(a0,"wrapMode","none"),K(a0,()=>c.status),Z(p0,"wrapMode","none"),Z(p0,"flexGrow",1),K(p0,()=>UL(c.path,_())),K(F0,b(X0,{get when(){return r0.added>0},get children(){var u0=W("text");return Z(u0,"wrapMode","none"),K(u0,P),u((_0)=>Z(u0,"fg",J.success,_0)),u0}}),null),K(F0,b(X0,{get when(){return r0.deleted>0},get children(){var u0=W("text");return Z(u0,"wrapMode","none"),K(u0,M0),u((_0)=>Z(u0,"fg",J.error,_0)),u0}}),null),u((u0)=>{var _0=y0(),n=T0(),q0=J.text;return _0!==u0.e&&(u0.e=Z(J0,"backgroundColor",_0,u0.e)),n!==u0.t&&(u0.t=Z(a0,"fg",n,u0.t)),q0!==u0.a&&(u0.a=Z(p0,"fg",q0,u0.a)),u0},{e:void 0,t:void 0,a:void 0}),J0})()}})),x}}),null),K(E,b(X0,{get when(){return f.worktreePath()!=null},get children(){var x=W("box"),c=W("text");return D(x,c),Z(x,"flexDirection","row"),Z(x,"paddingTop",1),Z(x,"flexShrink",0),Z(c,"wrapMode","none"),K(c,()=>F("files.footer.openHint")),u((Z0)=>Z(c,"fg",J.textMuted,Z0)),x}}),null),E})()}var BS;var AL=k(()=>{h();h();h();h();h();h();h();h();h();G1();h();Wf();xf();n8();i8();KL();OL();BS=["all","changes"]});var gL=k(()=>{AL();n8();i8()});import{promises as VS}from"fs";import KS from"path";async function vQ(f,J){let Y=new AbortController,z=setTimeout(()=>Y.abort(),US);try{let G=await BJ("git",J,{cwd:f,env:x1(),signal:Y.signal});if(Y.signal.aborted)return null;if(G.status!==0)return null;return G.stdout.trim()}finally{clearTimeout(z)}}async function DS(f){return await vQ(f,["rev-parse","--abbrev-ref","HEAD"])||"HEAD"}async function LS(f){let J=await vQ(f,["symbolic-ref","refs/remotes/origin/HEAD","--short"]);if(!J)return"main";return J.startsWith("origin/")?J.slice(7):J}async function MS(f){let J=await vQ(f,["rev-parse","--abbrev-ref","@{u}"]);return J!==null&&J.length>0}async function FS(f){let J=await vQ(f,["status","--porcelain"]);if(!J)return 0;return J.split(`
|
|
242
|
+
`).filter((Y)=>Y.length>0).length}async function OS(f){let[J,Y,z,G]=await Promise.all([DS(f),LS(f),MS(f),FS(f)]);return{branch:J,targetBranch:Y,hasUpstream:z,dirtyCount:G}}function AS(f){if(f<=0)return"There are no uncommitted changes.";if(f===1)return"There is 1 uncommitted change.";return`There are ${f} uncommitted changes.`}function gS(f){return f?"The current branch tracks an upstream.":"There is no upstream branch yet."}function RS(f,J){let Y={branch:J.branch,targetBranch:J.targetBranch,dirtyCountSentence:AS(J.dirtyCount),upstreamSentence:gS(J.hasUpstream)};return f.replace(/\{\{([a-zA-Z][a-zA-Z0-9_]*)\}\}/g,(z,G)=>Object.hasOwn(Y,G)?Y[G]:z)}async function CS(f){let J=KS.join(f,".kobe","pr-instructions.md");try{let Y=await VS.readFile(J,"utf8");return Y.length>0?Y:RL}catch{return RL}}async function CL(f){let[J,Y]=await Promise.all([CS(f),OS(f)]);return RS(J,Y)}var US=5000,RL=`The user likes the current state of the code.
|
|
242
243
|
|
|
243
244
|
{{dirtyCountSentence}}
|
|
244
245
|
The current branch is {{branch}}.
|
|
@@ -255,21 +256,36 @@ Follow these steps to create a PR:
|
|
|
255
256
|
- Push to origin.
|
|
256
257
|
- Use \`gh pr create --base {{targetBranch}}\` to create a PR onto the target branch. Keep the title under 80 characters. Keep the description under five sentences. Describe not just changes made in this session but ALL changes since the branch diverged from the target.
|
|
257
258
|
|
|
258
|
-
If any of these steps fail, ask the user for help.`;var
|
|
259
|
-
`)}var
|
|
259
|
+
If any of these steps fail, ask the user for help.`;var kL=k(()=>{NY();iX()});var $8={};jf($8,{startOpsPreview:()=>cS,startOpsHost:()=>xS,nextActivityPollDelay:()=>bL});import{createHash as kS}from"crypto";import{SyntaxStyle as NS}from"@opentui/core";function bL(f,J){if(J<bS)return yL;return Math.min(f*2,yS)}function uS(f){let{theme:J}=i0(),[Y,z]=r(0),[G,X]=r(0),q=!1;f1(()=>{let M=!1,R,S=yL,a=0,N=0;async function g(){try{let C=await YL(f.vendor,f.worktree);if(M)return;if(!q)q=!0,z(C),N=C;if(C>N)N=C,a=0;else a++;X(C)}catch{a++}finally{if(!M)S=bL(S,a),R=setTimeout(()=>void g(),S)}}g(),mf(()=>{if(M=!0,R)clearTimeout(R)})});let Q=()=>q&&G()>Y(),H=()=>Q()?{text:F("ops.badge.newActivity"),active:!0}:null;function B(){z(G())}f1(()=>{if(!f.targetPane)return;let M=CV(f.vendor),R=!1,S=null,a="",N=!1,g=0,C=null;async function y(Y0){if(Y0===C)return;C=Y0,await AY(f.targetPane,TS,Y0)}async function _(){try{a=NL(await rz(f.targetPane,80)),S=(await M.latestCompletion(f.worktree))?.id??null,await y(M.supportsCompletionMarkers()?"idle":"unknown")}catch{}}async function z0(){try{let Y0=NL(await rz(f.targetPane,80));if(R)return;if(Y0!==a)a=Y0,N=!0,g=0,await y(M.supportsCompletionMarkers()?"running":"unknown");else if(N)g++;if(!M.supportsCompletionMarkers()||!N||g<IS)return;let T=await M.latestCompletion(f.worktree);if(R||!T||T.id===S)return;S=T.id,N=!1,g=0,await y("done")}catch{}}_();let t=setInterval(()=>void z0(),SS);mf(()=>{R=!0,clearInterval(t)})});function V(M){if(!f.taskId)return;HJ(Lf(f.taskId),{cwd:f.worktree,command:fV({worktree:f.worktree,relPath:M,cliInvocation:Cf()}),name:ES(M)})}function j(M){if(!f.taskId){V(M);return}let R=`${f.worktree}/${M}`;qL(Lf(f.taskId),f.worktree,R).then((S)=>{if(!S)V(M)})}function U(M){if(!f.targetPane)return;rZ(f.targetPane,`@${M} `)}async function L(){if(!f.targetPane)return;let M=await CL(f.worktree);await rZ(f.targetPane,M),await GX(f.targetPane,"Enter")}function O(){if(!f.taskId)return;let M=Lf(f.taskId),R=Cf(),S=`${_f()}${g1(R)} layout --session ${Xf(M)} --action zen-toggle`;h0(["run-shell","-b",S])}return(()=>{var M=W("box");return Z(M,"flexDirection","column"),Z(M,"flexGrow",1),K(M,b(a8,{worktreePath:()=>f.worktree,focused:()=>!0,onOpenFile:j,onMention:U,onCreatePR:()=>void L(),get onZenToggle(){return f.taskId?O:void 0},cornerBadge:H,onRefresh:B})),u((R)=>Z(M,"backgroundColor",J.background,R)),M})()}function ES(f){let J=f.lastIndexOf("/");return J>=0?f.slice(J+1):f}function NL(f){return kS("sha1").update(f).digest("hex")}async function xS(f){await L1({logContext:"ops",providers:{kv:!1,focus:!1},setup:()=>({root:()=>b(uS,f)})})}function wS(f){switch(f.slice(f.lastIndexOf(".")+1).toLowerCase()){case"ts":case"tsx":case"mts":case"cts":return"typescript";case"js":case"jsx":case"mjs":case"cjs":return"javascript";case"md":case"markdown":return"markdown";default:return}}async function hS(f,J){let Y=await oz(f,["diff","HEAD","--",J]);return Y.status===0?Y.stdout:""}async function PS(f,J){return await q7(f,J)??""}function vS(f){let J={fg:f.primary},Y={fg:f.success},z={fg:f.info},G={fg:f.warning},X={fg:f.accent},q={fg:f.textMuted,italic:!0},Q={fg:f.textMuted},H={fg:f.text};return NS.fromStyles({keyword:J,"keyword.function":J,"keyword.return":J,"keyword.import":J,"keyword.exception":J,"keyword.conditional":J,"keyword.repeat":J,"keyword.operator":J,"keyword.modifier":J,"keyword.type":J,string:Y,"string.escape":Y,"string.regexp":Y,"string.special":Y,"character.special":Y,comment:q,"comment.documentation":q,function:z,"function.call":z,"function.method":z,"function.builtin":z,constructor:z,type:G,"type.builtin":G,constant:X,"constant.builtin":X,boolean:X,number:X,operator:Q,"punctuation.bracket":Q,"punctuation.delimiter":Q,"punctuation.special":Q,variable:H,"variable.member":H,"variable.parameter":H,"variable.builtin":X,property:H,attribute:G,label:H,module:H})}function mS(f){let{theme:J}=i0(),Y=vS(J),z=wS(f.relPath),[G]=KZ(()=>f.relPath,async(X)=>{let q=await hS(f.worktree,X);if(q.trim().length>0)return{kind:"diff",text:q};return{kind:"code",text:await PS(f.worktree,X)}});return Uf(()=>({bindings:[{key:"q",cmd:()=>process.exit(0)},{key:"escape",cmd:()=>process.exit(0)},{key:"ctrl+c",cmd:()=>process.exit(0)}]})),(()=>{var X=W("box"),q=W("box"),Q=W("text"),H=W("text"),B=W("text"),V=W("box");return D(X,q),D(X,V),Z(X,"flexDirection","column"),Z(X,"flexGrow",1),D(q,Q),D(q,H),D(q,B),Z(q,"flexDirection","row"),Z(q,"gap",1),Z(q,"paddingLeft",1),Z(q,"paddingRight",1),K(Q,()=>f.relPath),K(H,(()=>{var j=I0(()=>G()?.kind==="diff");return()=>j()?F("ops.preview.diffVsHead"):F("ops.preview.file")})()),K(B,()=>F("ops.preview.closeHint")),Z(V,"flexGrow",1),K(V,b(X0,{get when(){return G()},get fallback(){return(()=>{var j=W("text");return K(j,()=>F("ops.preview.loading")),u((U)=>Z(j,"fg",J.textMuted,U)),j})()},children:(j)=>b(X0,{get when(){return j().kind==="diff"},get fallback(){return(()=>{var U=W("code");return Z(U,"filetype",z),Z(U,"syntaxStyle",Y),u((L)=>Z(U,"content",j().text,L)),U})()},get children(){var U=W("diff");return Z(U,"view","unified"),Z(U,"filetype",z),Z(U,"syntaxStyle",Y),Z(U,"showLineNumbers",!0),u((L)=>Z(U,"diff",j().text,L)),U}})})),u((j)=>{var{background:U,accent:L,textMuted:O,textMuted:M}=J;return U!==j.e&&(j.e=Z(X,"backgroundColor",U,j.e)),L!==j.t&&(j.t=Z(Q,"fg",L,j.t)),O!==j.a&&(j.a=Z(H,"fg",O,j.a)),M!==j.o&&(j.o=Z(B,"fg",M,j.o)),j},{e:void 0,t:void 0,a:void 0,o:void 0}),X})()}async function cS(f){await L1({providers:{kv:!1,focus:!1},setup:()=>({root:()=>b(mS,f)})})}var yL=2500,yS=20000,bS=3,SS=1500,IS=2,TS="@kobe_tab_state";var r8=k(()=>{h();h();h();h();h();h();h();aJ();oH();zL();Tf();QL();qJ();Qq();Wf();xf();G1();nY();b1();gL();Qz();kL()});var uL={};jf(uL,{startDirectTmux:()=>dS,chooseInitialTask:()=>TL});import{resolve as SL}from"path";function TL(f,J={}){let Y=(q)=>q?f.find((Q)=>Q.id===q):void 0,z=Y(J.activeTaskId);if(z)return z;let G=Y(J.persistedTaskId);if(G)return G;if(J.cwdRepo){let q=f.find((Q)=>Q.kind==="main"&&Q.repo===J.cwdRepo);if(q)return q}let X=f.filter((q)=>!q.archived);return X.find((q)=>q.pinned)??X[0]??f[0]}async function IL(f){if(f.length===0)return null;try{return await Bun.spawn(f,{stdin:"inherit",stdout:"inherit",stderr:"inherit",env:process.env}).exited}catch{return null}}async function nS(f){tQ();let J=[...c1()];if(J.length===0)J=[vJ(SL(process.cwd())).path];for(let Y of J)try{await f.ensureMainTask(Y)}catch(z){console.error(`[kobe] ensureMainTask failed for ${Y}:`,z)}return J[0]??SL(process.cwd())}async function dS(){if(kZ("gui"),Promise.resolve().then(() => (Ij(),Sj)).then((Y)=>Y.ensureGlobalKobeHooks()),!await NJ()){console.error("kobe: tmux not found on PATH \u2014 install tmux to use kobe 0.6 direct mode"),process.exitCode=1;return}let f=await UJ(),J=new W1(f,{role:"gui"});try{process.env.KOBE_DAEMON_SOCKET_PATH=f.socketPath,await J.init();let Y=await nS(J),z=TL(J.listTasks(),{activeTaskId:J.activeTaskSignal()(),persistedTaskId:kf("lastSelectedTaskId"),cwdRepo:Y});if(!z){let V=await pZ();if(await gz(),await aq(V),await IL(az(V))===null)console.error("kobe: failed to attach to the kobe-home session"),process.exitCode=1;return}let G=z.worktreePath||await J.ensureWorktree(z.id),X=Lf(z.id);await J.setActiveTask(z.id).catch(()=>{}),af("lastSelectedTaskId",z.id);let q=sJ(z.repo,G,{kind:"repo-init"});if(!await TY({name:X,cwd:G,command:N1(z.vendor),taskId:z.id,vendor:z.vendor,repo:z.repo,launchInit:q})){console.error(`kobe: tmux session ${X} failed to start (check the daemon log)`),process.exitCode=1;return}await gz(),await aq(X);let H=await IL(az(X));if(H===null){console.error(`kobe: failed to attach to tmux session ${X}`),process.exitCode=1;return}if(H!==0&&!await Hf(X)){console.error(`kobe: tmux session ${X} ended unexpectedly (attach exited ${H})`),process.exitCode=H;return}let B=J.getTask(z.id);if(B&&B.title===RJ&&B.worktreePath)try{let V=await dz(B.worktreePath,B.vendor);if(V)await J.setTitle(B.id,V)}catch(V){console.error("[kobe] auto-title failed:",V)}}finally{J.dispose()}}var EL=k(()=>{eY();y1();PY();E1();aZ();lG();GG();Of();Tf();bq();J1()});var xL={};jf(xL,{startTui:()=>iS});async function iS(){QU();let{startDirectTmux:f}=await Promise.resolve().then(() => (EL(),uL));await f()}var wL=k(()=>{XQ()});mQ();U1();import{resolve as _8}from"path";D1();function H9(){return[`kobe ${s0}`,"","Usage: kobe [command] [options]","","Run with no command to launch the TUI.","","Commands:"," web [options] Launch the browser dashboard"," add [path] Save a repo path for the new-task picker"," remove [path] Forget a saved project (inverse of add; non-destructive)"," adopt [glob] Import existing git worktrees as tasks"," export [--csv|--json] Print the task list (json/csv/table; daemon-free)"," repo <verb> Per-repo init script + first prompt (show|set|unset)"," api <verb> Scriptable RPC surface for agents (see `kobe api --help`)"," daemon <verb> Manage the daemon (start|stop|status|restart)"," theme <verb> Manage user themes (list|add|remove)"," skill <verb> Install the kobe agent skill (install|status|command)"," feedback Send feedback to GitHub Discussions"," update [target] Self-update kobe"," doctor Diagnose daemon / tmux / state (read-only)"," reset [--hard] Recover a wedged install"," reload Restart Tasks/Ops panes in place (engine untouched)"," kill-sessions Tear down kobe's tmux server (dev reset)","","Options:"," -v, --version Print version"," -h, --help Print this help"].join(`
|
|
260
|
+
`)}var hL=`Usage: kobe add [path]
|
|
260
261
|
kobe add --remote --host <host> --user <user> --path <basePath> [--port N] [--key <path> | --password]
|
|
261
262
|
|
|
262
263
|
Save a repo for the new-task picker. With --remote, register an SSH-backed
|
|
263
264
|
project whose worktrees + engine run on <host> under <basePath>.
|
|
264
|
-
`;async function
|
|
265
|
+
`;async function lS(f){let J=f[0];if(J==="--help"||J==="-h"||J==="help"){process.stdout.write(hL);return}if(J==="--remote"){let{runAddRemote:X}=await Promise.resolve().then(() => (N9(),k9));await X(f.slice(1));return}if(J?.startsWith("-"))process.stderr.write(`kobe add: unknown flag "${J}"
|
|
266
|
+
|
|
267
|
+
${hL}`),process.exit(2);let Y=_8(process.cwd(),J&&J.length>0?J:"."),{addSavedRepo:z}=await Promise.resolve().then(() => (Of(),cJ)),G=z(Y);if(G.added)console.log(`added ${G.path} (${G.total} saved repo${G.total===1?"":"s"} total)`);else console.log(`already saved: ${G.path}`);await $S(G.path)}var PL=`Usage: kobe remove [path]
|
|
268
|
+
|
|
269
|
+
Forget a saved project (drop it from the new-task picker). Non-destructive:
|
|
270
|
+
the repo's files, worktrees, branches and tasks all stay on disk. A remote
|
|
271
|
+
(ssh://) project also has its stored connection config dropped.
|
|
272
|
+
|
|
273
|
+
path defaults to the current directory. Pass an exact saved entry (e.g. a
|
|
274
|
+
remote \`ssh://user@host\` key) to remove it verbatim. Run with no match to
|
|
275
|
+
print the current saved projects.
|
|
276
|
+
`;async function aS(f){let J=f[0];if(J==="--help"||J==="-h"||J==="help"){process.stdout.write(PL);return}if(J?.startsWith("-"))process.stderr.write(`kobe remove: unknown flag "${J}"
|
|
277
|
+
|
|
278
|
+
${PL}`),process.exit(2);let{getSavedRepos:Y,removeSavedRepo:z,resolveRepoRoot:G}=await Promise.resolve().then(() => (Of(),cJ)),X=Y();if(X.length===0){console.log("no saved projects to remove.");return}let q=J&&J.length>0?J:".",Q=X.includes(q)?q:(()=>{let B=_8(process.cwd(),q),V=G(B);if(X.includes(V))return V;if(X.includes(B))return B;return null})();if(Q===null){process.stderr.write(`kobe remove: "${q}" is not a saved project.
|
|
265
279
|
|
|
266
|
-
|
|
267
|
-
`);
|
|
280
|
+
Saved projects:
|
|
281
|
+
`);for(let B of X)process.stderr.write(` ${B}
|
|
282
|
+
`);process.exit(1)}let H=z(Q);console.log(`removed ${H.path} (${H.total} saved repo${H.total===1?"":"s"} left)`)}async function $S(f){let J=await mL(),Y;try{Y=await J.discoverAdoptableWorktrees(f)}catch(z){console.error(`(skipped worktree scan: ${z instanceof Error?z.message:String(z)})`);return}if(Y.length===0)return;console.log(`scanning ${f}: ${Y.length} unlinked worktree(s) \u2192 importing`),await cL(J,f,Y,iY(void 0))}async function mL(){let{TaskIndexStore:f}=await Promise.resolve().then(() => (vG(),zH)),{GitWorktreeManager:J}=await Promise.resolve().then(() => (qH(),_9)),{Orchestrator:Y}=await Promise.resolve().then(() => (lG(),OW)),z=new f;return await z.load(),new Y({store:z,worktrees:new J})}async function cL(f,J,Y,z){let{connectIfRunning:G}=await Promise.resolve().then(() => (y1(),Jj)),X=await G();try{for(let q of Y){let Q=X?(await X.request("worktree.adopt",{repo:J,worktreePath:q.path,branch:q.branch,vendor:z})).task:await f.adoptWorktree({repo:J,worktreePath:q.path,branch:q.branch,vendor:z});console.log(` adopted ${q.branch} \u2192 task ${Q.id} (${Q.title})`)}}finally{X?.close()}}var nL=["Usage: kobe adopt [glob] [--repo <path>] [--vendor <v>] [--yes]","","Import existing git worktrees in a repo as kobe tasks.","No glob \u2192 dry-run listing. With a glob \u2192 list matches; --yes adopts them.","","Options:"," --repo <path> Repo to scan (default: current directory)"," --vendor <v> Engine vendor for adopted tasks"," -y, --yes Actually adopt the matched worktrees"," -h, --help Print this help",""].join(`
|
|
283
|
+
`);function p8(f){process.stderr.write(`kobe adopt: ${f}
|
|
268
284
|
|
|
269
|
-
${
|
|
270
|
-
`),process.exit(2)}async function
|
|
271
|
-
`);return}if(L==="--repo"){if(Y=f[++U],Y===void 0)
|
|
285
|
+
${nL}
|
|
286
|
+
`),process.exit(2)}async function rS(f){let J,Y,z,G=!1;for(let U=0;U<f.length;U++){let L=f[U];if(L==="--help"||L==="-h"||L==="help"){process.stdout.write(`${nL}
|
|
287
|
+
`);return}if(L==="--repo"){if(Y=f[++U],Y===void 0)p8("--repo requires a value")}else if(L==="--vendor"){if(z=f[++U],z===void 0)p8("--vendor requires a value")}else if(L==="--yes"||L==="-y")G=!0;else if(L&&!L.startsWith("-")&&J===void 0)J=L;else p8(`unexpected argument "${L}"`)}let{resolveRepoRoot:X}=await Promise.resolve().then(() => (Of(),cJ)),q=X(_8(process.cwd(),Y&&Y.length>0?Y:".")),Q=iY(z),H=await mL(),B=await H.discoverAdoptableWorktrees(q);if(B.length===0){console.log(`no adoptable worktrees for ${q} \u2014 every git worktree here is already a task`);return}let V=(U)=>!J||_X(J,U.path);console.log(`adoptable worktrees in ${q}:`);for(let U of B){let L=J?V(U)?"*":" ":"-",O=[U.dirty?"dirty":"",U.kobeManaged?"":"external"].filter(Boolean).join(",");console.log(` ${L} ${U.branch} ${U.path}${O?` (${O})`:""}`)}if(!J){console.log(`
|
|
272
288
|
pass a path glob to adopt, e.g. kobe adopt '${q}/*' --yes`);return}let j=B.filter(V);if(j.length===0){console.log(`
|
|
273
289
|
no worktrees match glob ${JSON.stringify(J)}`);return}if(!G){console.log(`
|
|
274
|
-
${j.length} worktree(s) match \u2014 re-run with --yes to adopt them`);return}await
|
|
275
|
-
`)}function FJ(f){let J={};for(let Y=0;Y<f.length;Y++){let z=f[Y],G=f[Y+1];if(G===void 0)continue;if(z==="--task-id")J.taskId=G,Y++;else if(z==="--worktree")J.worktree=G,Y++;else if(z==="--target-pane")J.targetPane=G,Y++;else if(z==="--vendor")J.vendor=G,Y++;else if(z==="--preview")J.preview=G,Y++;else if(z==="--session")J.session=G,Y++;else if(z==="--repo")J.repo=G,Y++;else if(z==="--initial-task-id")J.initialTaskId=G,Y++;else if(z==="--action")J.action=G,Y++;else if(z==="--window")J.windowId=G,Y++;else if(z==="--cols")J.cols=G,Y++;else if(z==="--rows")J.rows=G,Y++;else if(z==="--status")J.status=G,Y++;else if(z==="--client")J.client=G,Y++}return J}async function
|
|
290
|
+
${j.length} worktree(s) match \u2014 re-run with --yes to adopt them`);return}await cL(H,q,j,Q),console.log(`done \u2014 adopted ${j.length} worktree(s)`)}function vL(f){f.write(`${H9()}
|
|
291
|
+
`)}function FJ(f){let J={};for(let Y=0;Y<f.length;Y++){let z=f[Y],G=f[Y+1];if(G===void 0)continue;if(z==="--task-id")J.taskId=G,Y++;else if(z==="--worktree")J.worktree=G,Y++;else if(z==="--target-pane")J.targetPane=G,Y++;else if(z==="--vendor")J.vendor=G,Y++;else if(z==="--preview")J.preview=G,Y++;else if(z==="--session")J.session=G,Y++;else if(z==="--repo")J.repo=G,Y++;else if(z==="--initial-task-id")J.initialTaskId=G,Y++;else if(z==="--action")J.action=G,Y++;else if(z==="--window")J.windowId=G,Y++;else if(z==="--cols")J.cols=G,Y++;else if(z==="--rows")J.rows=G,Y++;else if(z==="--status")J.status=G,Y++;else if(z==="--client")J.client=G,Y++}return J}async function pS(){let[,,...f]=process.argv,[J,...Y]=f;if(J==="--version"||J==="-v"||J==="version"){let{CURRENT_VERSION:G}=await Promise.resolve().then(() => (D1(),Q9));console.log(`kobe ${G}`);return}if(J==="--help"||J==="-h"||J==="help"){vL(process.stdout);return}if(J==="add"){await lS(Y);return}if(J==="remove"){await aS(Y);return}if(J==="adopt"){await rS(Y);return}if(J==="export"){let{runExportSubcommand:G}=await Promise.resolve().then(() => (MK(),LK));await G(Y);return}if(J==="repo"){let{runRepoSubcommand:G}=await Promise.resolve().then(() => (gK(),AK));await G(Y);return}if(J==="api"){let{runApiSubcommand:G}=await Promise.resolve().then(() => (mK(),vK));await G(Y);return}if(J==="update"){let{runUpdateSubcommand:G}=await Promise.resolve().then(() => (lK(),iK));await G(Y);return}if(J==="theme"){let{runThemeSubcommand:G}=await Promise.resolve().then(() => (_K(),pK));await G(Y);return}if(J==="feedback"){let{runFeedbackSubcommand:G}=await Promise.resolve().then(() => (fU(),eK));await G(Y);return}if(J==="daemon"){let{runDaemonSubcommand:G}=await Promise.resolve().then(() => (XU(),GU));await G(Y);return}if(J==="doctor"){let{runDoctorSubcommand:G}=await Promise.resolve().then(() => (qQ(),ZQ));await G(Y);return}if(J==="web"){let{runWebSubcommand:G}=await Promise.resolve().then(() => (AU(),OU));await G(Y);return}if(J==="reset"){let{runResetSubcommand:G}=await Promise.resolve().then(() => (qQ(),ZQ));await G(Y);return}if(J==="reload"){let{runReloadSubcommand:G}=await Promise.resolve().then(() => (qQ(),ZQ));await G(Y);return}if(J==="skill"){let{runSkillSubcommand:G}=await Promise.resolve().then(() => (CU(),RU));await G(Y);return}if(J==="hook"){let{runHookSubcommand:G}=await Promise.resolve().then(() => (Ij(),Sj));await G(Y);return}if(J==="new-chattab"){let G=FJ(Y),X=G.session;if(!X)console.error("kobe new-chattab: --session <name> is required"),process.exit(2);let{windowIsSurface:q}=await Promise.resolve().then(() => (Tf(),XX));if(await q(X))return;let Q;if(G.vendor!==void 0){let B=G.vendor.trim(),{getCustomEngineIds:V}=await Promise.resolve().then(() => (Of(),cJ)),{isBuiltinVendor:j}=await Promise.resolve().then(() => (U1(),J9));if(!(j(B)||V().includes(B))){let O=[...cf,...V()].join(", "),M=`kobe: unknown engine '${B}' (known: ${O})`,{runTmux:R}=await Promise.resolve().then(() => (Tf(),XX));await R(["display-message","-t",X,M]),console.error(M),process.exit(2)}Q=B;let{setPersistedString:L}=await Promise.resolve().then(() => (Of(),cJ));L("lastSelectedVendor",Q)}let{newChatTab:H}=await Promise.resolve().then(() => (J1(),r1));await H(X,Q);return}if(J==="kill-sessions"){let{runTmux:G,KOBE_TMUX_SOCKET:X}=await Promise.resolve().then(() => (Tf(),XX)),q=await G(["kill-server"]);console.log(q===0?`kobe: killed all tmux sessions on the \`${X}\` socket`:`kobe: no tmux sessions to kill on the \`${X}\` socket`);return}if(J==="quick-create"){let X=FJ(Y).session;if(!X)console.error("kobe quick-create: --session <name> is required"),process.exit(2);let{quickCreate:q}=await Promise.resolve().then(() => (J1(),r1));await q(X);return}if(J==="focus-tasks"){let G=FJ(Y),X=G.session;if(!X)console.error("kobe focus-tasks: --session <name> is required"),process.exit(2);let{windowIsSurface:q}=await Promise.resolve().then(() => (Tf(),XX));if(G.windowId&&await q(G.windowId))return;let{selectTasksPane:Q}=await Promise.resolve().then(() => (J1(),r1));await Q(X,{windowId:G.windowId});return}if(J==="heal-layout"){let X=FJ(Y).session;if(!X)console.error("kobe heal-layout: --session <name> is required"),process.exit(2);let{healSessionLayout:q}=await Promise.resolve().then(() => (J1(),r1)),{coalesceLayoutWork:Q}=await Promise.resolve().then(() => (QG(),Iq));await Q(X,"heal",()=>q(X));return}if(J==="resync-window"){let G=FJ(Y),X=G.session;if(!X)console.error("kobe resync-window: --session <name> is required"),process.exit(2);let q=Number.parseInt(G.cols??"",10),Q=Number.parseInt(G.rows??"",10),H=Number.isInteger(q)&&q>0&&Number.isInteger(Q)&&Q>0?{columns:q,rows:Q}:null,{resyncWindowToClient:B}=await Promise.resolve().then(() => (J1(),r1)),{coalesceLayoutWork:V}=await Promise.resolve().then(() => (QG(),Iq));await V(X,"resync",()=>B(X,{size:H,status:G.status,clientName:G.client}));return}if(J==="capture-layout"){let X=FJ(Y).session;if(!X)console.error("kobe capture-layout: --session <name> is required"),process.exit(2);let{captureGlobalLayoutOnDrag:q}=await Promise.resolve().then(() => (J1(),r1)),{coalesceLayoutWork:Q,genAgeMs:H,RESIZE_GUARD_MS:B}=await Promise.resolve().then(() => (QG(),Iq));await Q(X,"capture",async()=>{if(H(X,"resize")<B)return;await q(X)});return}if(J==="layout"){let G=FJ(Y),X=G.session;if(!X)console.error("kobe layout: --session <name> is required"),process.exit(2);let q=G.action;if(!q||!new Set(["workspace-split","workspace-close","workspace-reset","tasks-toggle","tasks-restore","ops-toggle","terminal-toggle","zen-toggle","chat-tab-close"]).has(q))console.error("kobe layout: --action must be one of workspace-split, workspace-close, workspace-reset, tasks-toggle, tasks-restore, ops-toggle, terminal-toggle, zen-toggle, chat-tab-close"),process.exit(2);let{runLayoutAction:H}=await Promise.resolve().then(() => (J1(),r1));await H(X,q,{windowId:G.windowId});return}if(J==="quick-task"){let G=FJ(Y),{startQuickTaskHost:X}=await Promise.resolve().then(() => (_4(),p4));await X({session:G.session});return}if(J==="tasks"){let G=FJ(Y),{startTasksPane:X}=await Promise.resolve().then(() => (_D(),pD));await X({initialTaskId:G.initialTaskId});return}if(J==="settings"){let{startSettingsHost:G}=await Promise.resolve().then(() => (sD(),oD));await G();return}if(J==="help-page"){let{startHelpHost:G}=await Promise.resolve().then(() => (eD(),tD));await G();return}if(J==="new-task"){let G=FJ(Y),{startNewTaskHost:X}=await Promise.resolve().then(() => (U8(),c4));await X({defaultRepo:G.repo});return}if(J==="update-page"){let{startUpdateHost:G}=await Promise.resolve().then(() => (JL(),fL));await G();return}if(J==="ops"){let G=FJ(Y);if(!G.worktree)console.error("kobe ops: --worktree <path> is required"),process.exit(2);if(G.preview){let{startOpsPreview:q}=await Promise.resolve().then(() => (r8(),$8));await q({worktree:G.worktree,relPath:G.preview});return}let{startOpsHost:X}=await Promise.resolve().then(() => (r8(),$8));await X({taskId:G.taskId??"",worktree:G.worktree,targetPane:G.targetPane??null,vendor:iY(G.vendor)});return}if(J!==void 0)console.error(`kobe: unknown command '${J}'`),vL(process.stderr),process.exit(2);let{startTui:z}=await Promise.resolve().then(() => (wL(),xL));await z()}pS().catch((f)=>{console.error("kobe failed to start:",f),process.exit(1)});
|