@sma1lboy/kobe 0.7.51 → 0.7.53
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 +192 -193
- package/package.json +1 -1
package/dist/cli/index.js
CHANGED
|
@@ -1,88 +1,87 @@
|
|
|
1
1
|
#!/usr/bin/env bun
|
|
2
2
|
// @bun
|
|
3
|
-
var bF=Object.defineProperty;var SF=(J)=>J;function IF(J,z){this[J]=SF.bind(null,z)}var f1=(J,z)=>{for(var Y in z)bF(J,Y,{get:z[Y],enumerable:!0,configurable:!0,set:IF.bind(z,Y)})};var k=(J,z)=>()=>(J&&(z=J(J=0)),z);var OQ=import.meta.require;import{basename as TF}from"path";function yF(J){let z="";for(let Y=0;Y<J.length;Y++){let G=J[Y];if(G==="*")if(J[Y+1]==="*")z+=".*",Y++;else z+="[^/]*";else if(G==="?")z+="[^/]";else if(G&&"\\^$.|+()[]{}".includes(G))z+=`\\${G}`;else z+=G}return new RegExp(`^${z}$`)}function AQ(J,z){let Y;try{Y=yF(J)}catch{return!1}return Y.test(z)||Y.test(TF(z))}var uH=()=>{};var OW={};f1(OW,{resolvePersistedVendor:()=>xJ,prevVendorWithin:()=>EH,nextVendorWithin:()=>LY,nextVendor:()=>xF,isBuiltinVendor:()=>QJ,coerceVendorId:()=>pY,BUILTIN_VENDORS:()=>_Y,ALL_VENDORS:()=>n1});function QJ(J){return J==="claude"||J==="codex"||J==="copilot"}function xF(J){let z=n1.indexOf(J);return n1[(z+1)%n1.length]??n1[0]}function LY(J,z){if(J.length===0)return z;let Y=J.indexOf(z);return J[(Y+1)%J.length]??J[0]??z}function EH(J,z){if(J.length===0)return z;let Y=J.indexOf(z);if(Y<0)return J[J.length-1]??z;return J[(Y-1+J.length)%J.length]??z}function pY(J){let z=J?.trim();return z&&z.length>0?z:"claude"}function xJ(J,z=[]){let Y=J?.trim();if(!Y)return"claude";if(QJ(Y))return Y;if(z.includes(Y))return Y;return"claude"}var _Y,n1;var i1=k(()=>{_Y=["claude","codex","copilot"],n1=[..._Y]});var RQ;var AW=k(()=>{RQ={$schema:"https://json.schemastore.org/package.json",name:"@sma1lboy/kobe",version:"0.7.51",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","node-pty":"^1.1.0"},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:*",typescript:"5.8.2",vitest:"2.1.9"},trustedDependencies:[]}});import{createHash as RW}from"crypto";import{homedir as EF}from"os";import{join as rY}from"path";function gW(){return process.env.KOBE_DEV==="1"}function bz(){return process.env.KOBE_HOME_DIR??EF()}function qJ(){return rY(bz(),".kobe")}function lJ(){return rY(bz(),".config","kobe","state.json")}function wF(){return rY(qJ(),"settings")}function CW(){return rY(wF(),"keybindings.yaml")}function wH(){return rY(qJ(),"issue-assets")}function gQ(J,z,Y){let G=RW("sha1").update(`${z}@${J}:${Y??22}`).digest("hex").slice(0,16);return rY(qJ(),"ssh",`${G}.sock`)}function NW(J){let z=RW("sha1").update(J).digest("hex").slice(0,16);return rY(qJ(),"worktree-init",z)}var p1=()=>{};var bW={};f1(bW,{repoSlug:()=>oY,releasePageUrl:()=>cH,recommendedGlobalInstallCommand:()=>vH,isNewerSemver:()=>PH,fetchReleaseSummaries:()=>vF,fetchReleaseNotesRange:()=>mH,fetchReleaseNotes:()=>hF,compareSemver:()=>CQ,checkLatestVersion:()=>tZ,UPDATE_SCRIPT_URL:()=>NQ,UPDATE_COMMAND:()=>$z,PACKAGE_NAME:()=>hH,CURRENT_VERSION:()=>p0});function oY(){let J=RQ.repository?.url;if(!J)return null;let z=J.match(/github\.com[:/]([^/]+)\/([^/.]+)/);if(!z||!z[1]||!z[2])return null;return`${z[1]}/${z[2]}`}function vH(){return`npm install -g ${hH}@latest`}async function PF(J){let z=new AbortController,Y=setTimeout(()=>z.abort(),kQ);try{let G=J.replace("/","%2F"),Z=await fetch(`https://registry.npmjs.org/${G}/latest`,{signal:z.signal,headers:{accept:"application/json"}});if(!Z.ok)return null;let X=await Z.json();if(typeof X.version!=="string")return null;return X.version}catch{return null}finally{clearTimeout(Y)}}function PH(J,z){return CQ(J,z)>0}function CQ(J,z){let Y=(X)=>X.split("-")[0]??X,G=Y(J).split(".").map((X)=>Number.parseInt(X,10)),Z=Y(z).split(".").map((X)=>Number.parseInt(X,10));for(let X=0;X<3;X++){let Q=G[X]??0,f=Z[X]??0;if(Number.isNaN(Q)||Number.isNaN(f))return 0;if(Q>f)return 1;if(Q<f)return-1}return 0}async function tZ(J={}){let z=process.env.KOBE_FAKE_UPDATE;if(z)return{current:p0,latest:z,hasUpdate:PH(z,p0)};if(gW()&&!J.force)return null;let Y=await PF(hH);if(!Y)return null;return{current:p0,latest:Y,hasUpdate:PH(Y,p0)}}function kW(J){if(typeof J!=="string")return null;return J.match(/^v(\d+\.\d+\.\d+)$/)?.[1]??null}async function hF(J){let z=oY();if(!z)return null;let Y=`v${J}`,G=new AbortController,Z=setTimeout(()=>G.abort(),kQ);try{let X=await fetch(`https://api.github.com/repos/${z}/releases/tags/${Y}`,{signal:G.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:J}}catch{return null}finally{clearTimeout(Z)}}async function mH(J){let z=oY();if(!z)return[];let Y=J.limit??100,G=new AbortController,Z=setTimeout(()=>G.abort(),kQ);try{let X=await fetch(`https://api.github.com/repos/${z}/releases?per_page=${Y}`,{signal:G.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((f)=>{let H=kW(f.tag_name);if(!H||typeof f.html_url!=="string"||typeof f.body!=="string")return null;if(CQ(H,J.current)<=0)return null;if(CQ(H,J.latest)>0)return null;return{version:H,url:f.html_url,body:f.body}}).filter((f)=>f!==null)}catch{return[]}finally{clearTimeout(Z)}}async function vF(J=12){let z=oY();if(!z)return[];let Y=new AbortController,G=setTimeout(()=>Y.abort(),kQ);try{let Z=await fetch(`https://api.github.com/repos/${z}/releases?per_page=${J}`,{signal:Y.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!Z.ok)return[];let X=await Z.json();if(!Array.isArray(X))return[];return X.map((Q)=>{let f=kW(Q.tag_name);if(!f||typeof Q.html_url!=="string")return null;return{version:f,url:Q.html_url}}).filter((Q)=>Q!==null)}catch{return[]}finally{clearTimeout(G)}}function cH(J){let z=oY();if(!z)return null;return`https://github.com/${z}/releases/tag/v${J}`}var p0,hH,NQ="https://raw.githubusercontent.com/Sma1lboy/kobe/main/scripts/update.sh",$z,kQ=3000;var MJ=k(()=>{AW();p1();p0=RQ.version,hH=RQ.name;$z=`curl -fsSL ${NQ} | sh`});import{spawn as mF,spawnSync as cF}from"child_process";import{existsSync as IW}from"fs";import{mkdir as dF,readFile as nF,readdir as iF}from"fs/promises";function sY(J){return`'${J.replace(/'/g,"'\\''")}'`}function lF(J){return/^[A-Za-z0-9_@%+=:,./-]+$/.test(J)?J:sY(J)}function yW(J){return J.map(sY).join(" ")}function $F(J,z){let Y=yW(J);return z?`cd ${sY(z)} && ${Y}`:Y}function aF(J){if(!J)return"";let z=Object.entries(J).filter(([Y])=>/^[A-Za-z_][A-Za-z0-9_]*$/.test(Y));if(z.length===0)return"";return`${z.map(([Y,G])=>`${Y}=${sY(G)}`).join(" ")} `}function eZ(J,z={}){let Y=["ssh"];if(z.tty)Y.push("-tt");if(z.batch)Y.push("-o","BatchMode=yes");if(Y.push("-o","ControlMaster=auto","-o",`ControlPath=${J.controlPath}`,"-o","ControlPersist=300"),Y.push("-o","StrictHostKeyChecking=accept-new"),J.port)Y.push("-p",String(J.port));if(J.auth.kind==="key"&&J.auth.keyPath)Y.push("-i",J.auth.keyPath);return Y.push(`${J.user}@${J.host}`),Y}function xW(J,z={}){return new Promise((Y)=>{let[G,...Z]=J,X="",Q="",f=!1,H=(V)=>{if(f)return;f=!0,Y({stdout:X,stderr:Q,exitCode:V})},B;try{B=mF(G??"",Z,{cwd:z.cwd,env:z.env,shell:!1,signal:z.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 bQ{isRemote=!1;run(J,z={}){return xW(J,{cwd:z.cwd,env:z.env?{...process.env,...z.env}:process.env,signal:z.signal})}async exists(J){return IW(J)}existsSync(J){return IW(J)}async mkdirp(J){await dF(J,{recursive:!0})}async readFile(J){try{return await nF(J,"utf8")}catch{return null}}async readdir(J){try{return await iF(J)}catch{return[]}}wrapCommand(J){return J}ensureReady(){}}class mG{spec;spawn;isRemote=!0;masterUp=!1;spawnAsync;constructor(J,z=TW,Y){this.spec=J;this.spawn=z;this.spawnAsync=Y??(this.spawn===TW?_F:async(G,Z)=>this.spawn(G,Z))}ensureReady(){if(this.masterUp)return;if(this.spawn([...eZ(this.spec,{batch:!0}),"-O","check"]).exitCode===0){this.masterUp=!0;return}let z=[...eZ(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",...z],{SSHPASS:Y}),this.masterUp=!0;return}}this.spawn(z),this.masterUp=!0}async run(J,z={}){this.ensureReady();let Y=`${aF(z.env)}${yW(J)}`,G=z.cwd?`cd ${sY(z.cwd)} && ${Y}`:Y;return this.spawnAsync([...eZ(this.spec,{batch:!0}),G],void 0,{signal:z.signal})}async exists(J){return(await this.run(["test","-e",J])).exitCode===0}existsSync(J){return this.ensureReady(),this.spawn([...eZ(this.spec,{batch:!0}),$F(["test","-e",J])]).exitCode===0}async mkdirp(J){await this.run(["mkdir","-p",J])}async readFile(J){let z=await this.run(["cat",J]);return z.exitCode===0?z.stdout:null}async readdir(J){let z=await this.run(["ls","-1A",J]);if(z.exitCode!==0)return[];return z.stdout.split(`
|
|
4
|
-
`).filter((Y)=>Y.length>0)}wrapCommand(J,z={}){let Y=z.cwd?`cd ${
|
|
3
|
+
var EF=Object.defineProperty;var wF=(J)=>J;function PF(J,z){this[J]=wF.bind(null,z)}var f1=(J,z)=>{for(var Y in z)EF(J,Y,{get:z[Y],enumerable:!0,configurable:!0,set:PF.bind(z,Y)})};var k=(J,z)=>()=>(J&&(z=J(J=0)),z);var uQ=import.meta.require;import{basename as hF}from"path";function vF(J){let z="";for(let Y=0;Y<J.length;Y++){let Z=J[Y];if(Z==="*")if(J[Y+1]==="*")z+=".*",Y++;else z+="[^/]*";else if(Z==="?")z+="[^/]";else if(Z&&"\\^$.|+()[]{}".includes(Z))z+=`\\${Z}`;else z+=Z}return new RegExp(`^${z}$`)}function EQ(J,z){let Y;try{Y=vF(J)}catch{return!1}return Y.test(z)||Y.test(hF(z))}var vH=()=>{};var bW={};f1(bW,{resolvePersistedVendor:()=>xJ,prevVendorWithin:()=>mH,nextVendorWithin:()=>LY,nextVendor:()=>mF,isBuiltinVendor:()=>qJ,coerceVendorId:()=>rY,BUILTIN_VENDORS:()=>pY,ALL_VENDORS:()=>l1});function qJ(J){return J==="claude"||J==="codex"||J==="copilot"}function mF(J){let z=l1.indexOf(J);return l1[(z+1)%l1.length]??l1[0]}function LY(J,z){if(J.length===0)return z;let Y=J.indexOf(z);return J[(Y+1)%J.length]??J[0]??z}function mH(J,z){if(J.length===0)return z;let Y=J.indexOf(z);if(Y<0)return J[J.length-1]??z;return J[(Y-1+J.length)%J.length]??z}function rY(J){let z=J?.trim();return z&&z.length>0?z:"claude"}function xJ(J,z=[]){let Y=J?.trim();if(!Y)return"claude";if(qJ(Y))return Y;if(z.includes(Y))return Y;return"claude"}var pY,l1;var $1=k(()=>{pY=["claude","codex","copilot"],l1=[...pY]});var wQ;var SW=k(()=>{wQ={$schema:"https://json.schemastore.org/package.json",name:"@sma1lboy/kobe",version:"0.7.53",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","node-pty":"^1.1.0"},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:*",typescript:"5.8.2",vitest:"2.1.9"},trustedDependencies:[]}});import{createHash as IW}from"crypto";import{homedir as dF}from"os";import{join as oY}from"path";function TW(){return process.env.KOBE_DEV==="1"}function Sz(){return process.env.KOBE_HOME_DIR??dF()}function fJ(){return oY(Sz(),".kobe")}function lJ(){return oY(Sz(),".config","kobe","state.json")}function nF(){return oY(fJ(),"settings")}function yW(){return oY(nF(),"keybindings.yaml")}function cH(){return oY(fJ(),"issue-assets")}function PQ(J,z,Y){let Z=IW("sha1").update(`${z}@${J}:${Y??22}`).digest("hex").slice(0,16);return oY(fJ(),"ssh",`${Z}.sock`)}function xW(J){let z=IW("sha1").update(J).digest("hex").slice(0,16);return oY(fJ(),"worktree-init",z)}var o1=()=>{};var EW={};f1(EW,{repoSlug:()=>sY,releasePageUrl:()=>$H,recommendedGlobalInstallCommand:()=>iH,isNewerSemver:()=>dH,fetchReleaseSummaries:()=>$F,fetchReleaseNotesRange:()=>lH,fetchReleaseNotes:()=>lF,compareSemver:()=>hQ,checkLatestVersion:()=>zG,UPDATE_SCRIPT_URL:()=>vQ,UPDATE_COMMAND:()=>az,PACKAGE_NAME:()=>nH,CURRENT_VERSION:()=>p0});function sY(){let J=wQ.repository?.url;if(!J)return null;let z=J.match(/github\.com[:/]([^/]+)\/([^/.]+)/);if(!z||!z[1]||!z[2])return null;return`${z[1]}/${z[2]}`}function iH(){return`npm install -g ${nH}@latest`}async function iF(J){let z=new AbortController,Y=setTimeout(()=>z.abort(),mQ);try{let Z=J.replace("/","%2F"),X=await fetch(`https://registry.npmjs.org/${Z}/latest`,{signal:z.signal,headers:{accept:"application/json"}});if(!X.ok)return null;let G=await X.json();if(typeof G.version!=="string")return null;return G.version}catch{return null}finally{clearTimeout(Y)}}function dH(J,z){return hQ(J,z)>0}function hQ(J,z){let Y=(G)=>G.split("-")[0]??G,Z=Y(J).split(".").map((G)=>Number.parseInt(G,10)),X=Y(z).split(".").map((G)=>Number.parseInt(G,10));for(let G=0;G<3;G++){let Q=Z[G]??0,f=X[G]??0;if(Number.isNaN(Q)||Number.isNaN(f))return 0;if(Q>f)return 1;if(Q<f)return-1}return 0}async function zG(J={}){let z=process.env.KOBE_FAKE_UPDATE;if(z)return{current:p0,latest:z,hasUpdate:dH(z,p0)};if(TW()&&!J.force)return null;let Y=await iF(nH);if(!Y)return null;return{current:p0,latest:Y,hasUpdate:dH(Y,p0)}}function uW(J){if(typeof J!=="string")return null;return J.match(/^v(\d+\.\d+\.\d+)$/)?.[1]??null}async function lF(J){let z=sY();if(!z)return null;let Y=`v${J}`,Z=new AbortController,X=setTimeout(()=>Z.abort(),mQ);try{let G=await fetch(`https://api.github.com/repos/${z}/releases/tags/${Y}`,{signal:Z.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!G.ok)return null;let Q=await G.json();if(typeof Q.body!=="string"||typeof Q.html_url!=="string")return null;return{body:Q.body,url:Q.html_url,version:J}}catch{return null}finally{clearTimeout(X)}}async function lH(J){let z=sY();if(!z)return[];let Y=J.limit??100,Z=new AbortController,X=setTimeout(()=>Z.abort(),mQ);try{let G=await fetch(`https://api.github.com/repos/${z}/releases?per_page=${Y}`,{signal:Z.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!G.ok)return[];let Q=await G.json();if(!Array.isArray(Q))return[];return Q.map((f)=>{let H=uW(f.tag_name);if(!H||typeof f.html_url!=="string"||typeof f.body!=="string")return null;if(hQ(H,J.current)<=0)return null;if(hQ(H,J.latest)>0)return null;return{version:H,url:f.html_url,body:f.body}}).filter((f)=>f!==null)}catch{return[]}finally{clearTimeout(X)}}async function $F(J=12){let z=sY();if(!z)return[];let Y=new AbortController,Z=setTimeout(()=>Y.abort(),mQ);try{let X=await fetch(`https://api.github.com/repos/${z}/releases?per_page=${J}`,{signal:Y.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!X.ok)return[];let G=await X.json();if(!Array.isArray(G))return[];return G.map((Q)=>{let f=uW(Q.tag_name);if(!f||typeof Q.html_url!=="string")return null;return{version:f,url:Q.html_url}}).filter((Q)=>Q!==null)}catch{return[]}finally{clearTimeout(Z)}}function $H(J){let z=sY();if(!z)return null;return`https://github.com/${z}/releases/tag/v${J}`}var p0,nH,vQ="https://raw.githubusercontent.com/Sma1lboy/kobe/main/scripts/update.sh",az,mQ=3000;var MJ=k(()=>{SW();o1();p0=wQ.version,nH=wQ.name;az=`curl -fsSL ${vQ} | sh`});import{spawn as aF,spawnSync as _F}from"child_process";import{existsSync as PW}from"fs";import{mkdir as pF,readFile as rF,readdir as oF}from"fs/promises";function tY(J){return`'${J.replace(/'/g,"'\\''")}'`}function sF(J){return/^[A-Za-z0-9_@%+=:,./-]+$/.test(J)?J:tY(J)}function vW(J){return J.map(tY).join(" ")}function tF(J,z){let Y=vW(J);return z?`cd ${tY(z)} && ${Y}`:Y}function eF(J){if(!J)return"";let z=Object.entries(J).filter(([Y])=>/^[A-Za-z_][A-Za-z0-9_]*$/.test(Y));if(z.length===0)return"";return`${z.map(([Y,Z])=>`${Y}=${tY(Z)}`).join(" ")} `}function YG(J,z={}){let Y=["ssh"];if(z.tty)Y.push("-tt");if(z.batch)Y.push("-o","BatchMode=yes");if(Y.push("-o","ControlMaster=auto","-o",`ControlPath=${J.controlPath}`,"-o","ControlPersist=300"),Y.push("-o","StrictHostKeyChecking=accept-new"),J.port)Y.push("-p",String(J.port));if(J.auth.kind==="key"&&J.auth.keyPath)Y.push("-i",J.auth.keyPath);return Y.push(`${J.user}@${J.host}`),Y}function mW(J,z={}){return new Promise((Y)=>{let[Z,...X]=J,G="",Q="",f=!1,H=(V)=>{if(f)return;f=!0,Y({stdout:G,stderr:Q,exitCode:V})},B;try{B=aF(Z??"",X,{cwd:z.cwd,env:z.env,shell:!1,signal:z.signal})}catch{H(-1);return}B.stdout?.setEncoding("utf8"),B.stdout?.on("data",(V)=>{G+=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 cQ{isRemote=!1;run(J,z={}){return mW(J,{cwd:z.cwd,env:z.env?{...process.env,...z.env}:process.env,signal:z.signal})}async exists(J){return PW(J)}existsSync(J){return PW(J)}async mkdirp(J){await pF(J,{recursive:!0})}async readFile(J){try{return await rF(J,"utf8")}catch{return null}}async readdir(J){try{return await oF(J)}catch{return[]}}wrapCommand(J){return J}ensureReady(){}}class cZ{spec;spawn;isRemote=!0;masterUp=!1;spawnAsync;constructor(J,z=hW,Y){this.spec=J;this.spawn=z;this.spawnAsync=Y??(this.spawn===hW?JO:async(Z,X)=>this.spawn(Z,X))}ensureReady(){if(this.masterUp)return;if(this.spawn([...YG(this.spec,{batch:!0}),"-O","check"]).exitCode===0){this.masterUp=!0;return}let z=[...YG(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",...z],{SSHPASS:Y}),this.masterUp=!0;return}}this.spawn(z),this.masterUp=!0}async run(J,z={}){this.ensureReady();let Y=`${eF(z.env)}${vW(J)}`,Z=z.cwd?`cd ${tY(z.cwd)} && ${Y}`:Y;return this.spawnAsync([...YG(this.spec,{batch:!0}),Z],void 0,{signal:z.signal})}async exists(J){return(await this.run(["test","-e",J])).exitCode===0}existsSync(J){return this.ensureReady(),this.spawn([...YG(this.spec,{batch:!0}),tF(["test","-e",J])]).exitCode===0}async mkdirp(J){await this.run(["mkdir","-p",J])}async readFile(J){let z=await this.run(["cat",J]);return z.exitCode===0?z.stdout:null}async readdir(J){let z=await this.run(["ls","-1A",J]);if(z.exitCode!==0)return[];return z.stdout.split(`
|
|
4
|
+
`).filter((Y)=>Y.length>0)}wrapCommand(J,z={}){let Y=z.cwd?`cd ${tY(z.cwd)} && ${J}`:J;return`${YG(this.spec,{tty:z.tty}).map(sF).join(" ")} ${tY(Y)}`}}var hW=(J,z)=>{let[Y,...Z]=J,X=_F(Y??"",Z,{env:z?{...process.env,...z}:process.env,encoding:"utf8",shell:!1});return{stdout:X.stdout??"",stderr:X.stderr??"",exitCode:X.status??-1}},JO=(J,z,Y)=>mW(J,{env:z?{...process.env,...z}:process.env,signal:Y?.signal});var aH=()=>{};import{spawnSync as zO}from"child_process";import{platform as YO}from"os";function cW(J,z,Y){return{service:ZO,account:Y?`${z}@${J}:${Y}`:`${z}@${J}`}}function pH(J=_H){return J.platform()==="darwin"}function dW(J,z,Y=_H){if(Y.platform()!=="darwin")return!1;let{exitCode:Z}=Y.run(["security","add-generic-password","-U","-s",J.service,"-a",J.account,"-w",z]);return Z===0}function dQ(J,z=_H){if(z.platform()!=="darwin")return null;let{stdout:Y,exitCode:Z}=z.run(["security","find-generic-password","-s",J.service,"-a",J.account,"-w"]);if(Z!==0)return null;return Y.replace(/\n$/,"")}var _H,ZO="kobe-remote-ssh";var rH=k(()=>{_H={run(J){let[z,...Y]=J,Z=zO(z??"",Y,{encoding:"utf8",shell:!1});return{stdout:Z.stdout??"",exitCode:Z.status??-1}},platform(){return YO()}}});import{mkdirSync as XO,readFileSync as GO,renameSync as QO,writeFileSync as qO}from"fs";import{dirname as fO}from"path";function RJ(){try{let J=GO(lJ(),"utf8"),z=JSON.parse(J);if(z&&typeof z==="object"&&!Array.isArray(z))return z}catch{}return{}}function nW(J){let z=lJ();XO(fO(z),{recursive:!0});let Y=`${z}.tmp`;qO(Y,JSON.stringify(J,null,2),"utf8"),QO(Y,z)}function dZ(J){let z=RJ();if(J(z)!==!1)nW(z);return z}function MY(J){return dZ((z)=>{for(let[Y,Z]of Object.entries(J))if(Z===void 0)delete z[Y];else z[Y]=Z;return})}function _z(J,z){let Y=RJ()[J];return typeof Y==="boolean"?Y:z}function iW(J,z){MY({[J]:z})}function lW(J){nW(J)}var eY=k(()=>{o1()});var sz={};f1(sz,{statePath:()=>jO,setRepoInitOverride:()=>WO,setPersistedString:()=>s1,resolveRepoRoot:()=>pz,resolveMainRepoRoot:()=>BO,removeSavedRepo:()=>eH,remoteRepoKey:()=>pW,normalizeSavedRepos:()=>sH,isRemoteRepoKey:()=>a1,isRemoteProjectsEnabled:()=>J8,isGitRepo:()=>HO,getSavedRepos:()=>gJ,getRepoInitOverride:()=>tH,getRemoteRepos:()=>z8,getRemoteRepoConfig:()=>oz,getPersistedString:()=>C1,getCustomEngineIds:()=>uJ,addSavedRepo:()=>rz,addRemoteRepo:()=>Y8});import{spawnSync as oH}from"child_process";import{realpathSync as $W}from"fs";function pz(J){if(a1(J))return J;let z=oH("git",["rev-parse","--show-toplevel"],{cwd:J,encoding:"utf8",shell:!1});if(z.status!==0)return J;let Y=(z.stdout??"").trim();if(!Y)return J;try{if($W(J)===$W(Y))return J}catch{}return Y}function HO(J){if(a1(J))return!1;let z=oH("git",["rev-parse","--is-inside-work-tree"],{cwd:J,encoding:"utf8",shell:!1});return z.status===0&&(z.stdout??"").trim()==="true"}function BO(J){if(a1(J))return J;let z=oH("git",["worktree","list","--porcelain"],{cwd:J,encoding:"utf8",shell:!1});if(z.status!==0)return pz(J);return(z.stdout??"").split(/\r?\n/).find((Z)=>Z.startsWith("worktree "))?.slice(9).trim()||pz(J)}function jO(){return lJ()}function nQ(J){let z=J.savedRepos;if(!Array.isArray(z))return[];return z.filter((Y)=>typeof Y==="string")}function gJ(){return nQ(RJ())}function C1(J){let z=RJ()[J];return typeof z==="string"?z:void 0}function s1(J,z){MY({[J]:z})}function uJ(){let J=RJ().customEngineIds;if(!Array.isArray(J))return[];return J.filter((z)=>typeof z==="string"&&z.trim().length>0)}function rz(J){let z=pz(J),Y={added:!1,path:z,total:0};return dZ((Z)=>{let X=nQ(Z);if(X.includes(z))return Y={added:!1,path:z,total:X.length},!1;Z.savedRepos=[...X,z],Y={added:!0,path:z,total:X.length+1};return}),Y}function sH(){let J=gJ(),z=new Set,Y=[],Z=!1;for(let X of J){let G=pz(X);if(G!==X)Z=!0;if(z.has(G)){Z=!0;continue}z.add(G),Y.push(G)}if(!Z)return;MY({savedRepos:Y})}function aW(J){let z=J.repoConfigs;if(!z||typeof z!=="object"||Array.isArray(z))return{};return z}function _W(J){if(!J||typeof J!=="object")return{};let z=J;return{initScript:typeof z.initScript==="string"&&z.initScript.length>0?z.initScript:void 0,initPrompt:typeof z.initPrompt==="string"&&z.initPrompt.length>0?z.initPrompt:void 0}}function tH(J){return _W(aW(RJ())[pz(J)])}function WO(J,z){let Y=pz(J),Z={};return dZ((X)=>{let G={...aW(X)},Q=_W(G[Y]),f=z.initScript===void 0?Q.initScript:z.initScript||void 0,H=z.initPrompt===void 0?Q.initPrompt:z.initPrompt||void 0;if(Z={...f?{initScript:f}:{},...H?{initPrompt:H}:{}},!Z.initScript&&!Z.initPrompt){let{[Y]:B,...V}=G;X.repoConfigs=V}else G[Y]=Z,X.repoConfigs=G;return}),Z}function eH(J){let z={removed:!1,path:J,total:0};return dZ((Y)=>{let Z=nQ(Y);if(!Z.includes(J))return z={removed:!1,path:J,total:Z.length},!1;if(Y.savedRepos=Z.filter((X)=>X!==J),a1(J)){let X=iQ(Y);if(J in X){let G={...X};delete G[J],Y.remoteRepos=G}}z={removed:!0,path:J,total:Z.length-1};return}),z}function a1(J){return J.startsWith("ssh://")}function J8(){return _z("experimental.remoteProjects",!1)}function pW(J,z,Y){return Y?`ssh://${z}@${J}:${Y}`:`ssh://${z}@${J}`}function iQ(J){let z=J.remoteRepos;if(!z||typeof z!=="object"||Array.isArray(z))return{};return z}function oz(J){return iQ(RJ())[J]??null}function z8(){return iQ(RJ())}function Y8(J){let z=pW(J.host,J.user,J.port),Y=!1;return dZ((Z)=>{let X={...iQ(Z)};X[z]=J,Z.remoteRepos=X;let G=nQ(Z);if(Y=!G.includes(z),Y)Z.savedRepos=[...G,z];return}),{key:z,added:Y}}var O1=k(()=>{o1();eY()});var sW={};f1(sW,{runAddRemote:()=>UO,parseRemoteFlags:()=>oW});import{createInterface as VO}from"readline";function oW(J){let z={};for(let Y=0;Y<J.length;Y++){let Z=J[Y];switch(Z){case"--host":z.host=J[++Y];break;case"--user":z.user=J[++Y];break;case"--path":z.path=J[++Y];break;case"--port":{let X=Number(J[++Y]);if(!Number.isInteger(X)||X<=0)qz(`invalid --port "${J[Y]}"`);z.port=X;break}case"--key":{let X=J[Y+1];if(X&&!X.startsWith("-"))z.key={present:!0,path:X},Y++;else z.key={present:!0};break}case"--password":z.password=!0;break;case"--help":case"-h":process.stdout.write(rW),process.exit(0);break;default:qz(`unknown flag "${Z}"`)}}return z}function qz(J){process.stderr.write(`kobe add --remote: ${J}
|
|
5
5
|
|
|
6
|
-
${
|
|
7
|
-
`),z.close(),
|
|
6
|
+
${rW}`),process.exit(2)}async function KO(J){let z=VO({input:process.stdin,output:process.stdout,terminal:!0}),Y=process.stdout,Z=!1,X=Y._writeToOutput?.bind(Y);return Y._writeToOutput=(G)=>{if(!Z||!X)process.stdout.write(G)},process.stdout.write(J),Z=!0,new Promise((G)=>{z.question("",(Q)=>{if(Z=!1,X)Y._writeToOutput=X;process.stdout.write(`
|
|
7
|
+
`),z.close(),G(Q)})})}async function UO(J){if(!J8())qz("remote projects are experimental and disabled \u2014 enable Settings \u2192 Dev \u2192 Experimental \u2192 Remote projects first");let z=oW(J);if(!z.host)qz("--host is required");if(!z.user)qz("--user is required");if(!z.path)qz("--path (remote base path) is required");if(z.key&&z.password)qz("choose ONE of --key or --password, not both");if(!z.key&&!z.password)qz("an auth method is required: --key [path] or --password");let Y;if(z.password){if(!pH())qz("--password needs the macOS keychain (unsupported on this platform)");let G=cW(z.host,z.user,z.port),Q=await KO(`Password for ${z.user}@${z.host}: `);if(Q.length===0)qz("empty password");if(!dW(G,Q))qz("failed to store the password in the keychain");Y={kind:"password",keychainRef:G}}else Y={kind:"key",keyPath:z.key?.path};let{key:Z,added:X}=Y8({host:z.host,user:z.user,port:z.port,basePath:z.path,auth:Y});console.log(X?`added remote project ${Z} (base ${z.path})`:`updated remote project ${Z} (base ${z.path})`),await DO(z,Y)}async function DO(J,z){if(z.kind==="password"&&!pH())return;let Y=z.kind==="key"?{kind:"key",keyPath:z.keyPath}:{kind:"password",getPassword:()=>dQ(z.keychainRef)},Z={host:J.host,user:J.user,port:J.port,auth:Y,controlPath:PQ(J.host,J.user,J.port)};process.stdout.write("checking connection\u2026 ");try{if((await new cZ(Z).run(["test","-d",J.path])).exitCode===0)console.log("ok");else console.log(`reachable, but base path "${J.path}" is not a directory (you can create it later)`)}catch(X){console.log(`could not connect (${X instanceof Error?X.message:String(X)})`),console.log("the project is saved; fix the host/credentials and it will connect on first use.")}}var rW;var tW=k(()=>{o1();aH();rH();O1();rW=`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
|
-
`}var $J=3,FY=2,
|
|
15
|
-
`}function
|
|
16
|
-
`)}catch{}}function
|
|
13
|
+
`});function lQ(J){return J.remoteVersion>=J.localMin&&J.localVersion>=J.remoteMin}function eW(J,z){if(!J)return!1;return J!==z}function MO(J){return typeof J==="string"&&LO.has(J)}function J7(J){if(!Array.isArray(J))return null;let z=new Set;for(let Y of J)if(MO(Y))z.add(Y);return z.size>0?z:null}function fz(J){return{id:J.id,title:J.title,repo:J.repo,branch:J.branch,worktreePath:J.worktreePath,kind:J.kind??"task",status:J.status,archived:J.archived,pinned:J.pinned??!1,vendor:J.vendor,prStatus:J.prStatus,position:J.position,modelEffort:J.modelEffort,createdAt:J.createdAt,updatedAt:J.updatedAt}}function ZG(J){return`${JSON.stringify(J)}
|
|
14
|
+
`}var $J=3,FY=2,Z8,LO;var JZ=k(()=>{Z8=["task.snapshot","issue.snapshot","active-task","update","engine-state","ui-prefs","keybindings","task.jobs","worktree.changes","transcript.activity","session.deliver"],LO=new Set(Z8)});import{createHash as FO}from"crypto";import{homedir as $Q,tmpdir as OO}from"os";import{join as zZ}from"path";function AO(J){return FO("sha1").update(J).digest("hex").slice(0,8)}function G8(J,z,Y,Z){if(Buffer.byteLength(J,"utf8")<=X8)return J;let X=AO(z),G=Z===void 0?"":`-${Z}`,Q=zZ(OO(),`kobe-${X}-${Y}${G}.sock`);if(Buffer.byteLength(Q,"utf8")<=X8)return Q;throw Error(`kobe socket path exceeds ${X8} bytes even after fallback: ${Q}`)}function Iz(J){let z=process.env.KOBE_DAEMON_SOCKET_PATH;if(z&&z.length>0)return z;let Y=J??process.env.KOBE_HOME_DIR;if(Y&&Y.length>0)return G8(zZ(Y,".kobe","daemon.sock"),Y,"daemon");let Z=process.env.XDG_RUNTIME_DIR;if(Z&&Z.length>0)return G8(zZ(Z,"kobe.sock"),Z,"daemon");let X=$Q();return G8(zZ(X,".kobe","daemon.sock"),X,"daemon")}function tz(J=process.env.KOBE_HOME_DIR??$Q()){let z=process.env.KOBE_DAEMON_PID_PATH;if(z&&z.length>0)return z;return zZ(J,".kobe","daemon.pid")}function aQ(J=process.env.KOBE_HOME_DIR??$Q()){return zZ(J,".kobe","daemon.log")}function z7(J=process.env.KOBE_HOME_DIR??$Q()){return zZ(J,".kobe","client.log")}var X8=100;var nZ=()=>{};import{appendFile as Y7,mkdir as RO}from"fs/promises";import{dirname as gO}from"path";function _Q(J){G7=J}function CO(J){if(J instanceof Error)return{message:J.message,stack:J.stack};let z;try{z=typeof J==="string"?J:JSON.stringify(J)}catch{z=String(J)}return{message:z}}function Q7(J,z,Y=new Date){return`[${Y.toISOString()}] client ${G7} [${J}] pid=${process.pid}: ${z}
|
|
15
|
+
`}function NO(){if(Z7)return;Z7=!0;try{process.stderr.write(`[kobe] client log write failed; continuing without it
|
|
16
|
+
`)}catch{}}function q7(J){let z=z7();X7=X7.then(async()=>{try{await Y7(z,J)}catch(Y){if(Y?.code==="ENOENT")await RO(gO(z),{recursive:!0}),await Y7(z,J);else throw Y}}).catch(()=>NO())}function ez(J,z){q7(Q7(J,z))}function t1(J,z){let Y=CO(z);q7(Q7(J,Y.stack??Y.message))}function f7(){if(Q8||q8)return;Q8=(J)=>t1("crash-net",J),q8=(J)=>t1("crash-net",J),process.on("unhandledRejection",Q8),process.on("uncaughtException",q8)}var G7="client",Z7=!1,X7,Q8,q8;var YZ=k(()=>{nZ();X7=Promise.resolve()});import{connect as kO}from"net";import{StringDecoder as bO}from"string_decoder";class aJ{socketPath;socket=null;buffer="";nextId=1;pending=new Map;handlers=new Map;lifecycleHandlers=new Map;connecting=null;disposed=!1;constructor(J){this.socketPath=J}connect(){if(this.socket)return Promise.resolve();if(this.disposed)return Promise.reject(Error("daemon client disposed"));if(this.connecting)return this.connecting;let J=this.openSocket();this.connecting=J;let z=()=>{if(this.connecting===J)this.connecting=null};return J.then(z,z),J}get isDisposed(){return this.disposed}close(){this.disposed=!0,this.socket?.end(),this.socket=null,this.failPending()}forceDisconnect(){let J=this.socket;if(!J)return;this.socket=null,J.destroy(),this.failPending()}failPending(){if(this.pending.size===0)return;let J=Error("daemon connection closed");for(let z of this.pending.values())z.reject(J);this.pending.clear()}on(J,z){let Y=this.handlers.get(J);if(!Y)Y=new Set,this.handlers.set(J,Y);return Y.add(z),()=>{if(Y?.delete(z),Y?.size===0)this.handlers.delete(J)}}onChannel(J,z){return this.on(J,(Y)=>z(Y.payload))}subscribe(J={}){let z={};if(J.channels)z.channels=J.channels;if(J.role)z.role=J.role;return this.request("subscribe",z)}onLifecycle(J,z){let Y=this.lifecycleHandlers.get(J);if(!Y)Y=new Set,this.lifecycleHandlers.set(J,Y);return Y.add(z),()=>{if(Y?.delete(z),Y?.size===0)this.lifecycleHandlers.delete(J)}}async request(J,z){await this.connect();let Y=this.socket;if(!Y)throw Error("daemon connection is not open");let Z=String(this.nextId++),X=new Promise((G,Q)=>{this.pending.set(Z,{resolve:(f)=>G(f),reject:Q})});return Y.write(ZG({type:"request",id:Z,name:J,payload:z})),X}openSocket(){return new Promise((J,z)=>{let Y=kO(this.socketPath);this.socket=Y;let Z=()=>{Y.off("error",X),J()},X=(Q)=>{if(Y.off("connect",Z),this.socket===Y)this.socket=null;z(Q)};Y.once("connect",Z),Y.once("error",X);let G=new bO("utf8");this.buffer="",Y.on("data",(Q)=>this.onData(G.write(Q))),Y.on("close",()=>this.onSocketClose(Y))})}onSocketClose(J){if(this.socket!==J)return;this.socket=null,this.failPending(),this.emitLifecycle("close")}emitLifecycle(J){for(let z of this.lifecycleHandlers.get(J)??[])try{z()}catch(Y){console.error(`[kobe] lifecycle handler for "${J}" threw:`,Y)}}onData(J){this.buffer+=J;let z=this.buffer.indexOf(`
|
|
17
17
|
`);while(z!==-1){let Y=this.buffer.slice(0,z);if(this.buffer=this.buffer.slice(z+1),Y.trim().length>0)this.onLine(Y);z=this.buffer.indexOf(`
|
|
18
|
-
`)}}onLine(J){let z;try{z=JSON.parse(J)}catch(
|
|
19
|
-
`).map((
|
|
20
|
-
`).map((
|
|
21
|
-
`).map((
|
|
22
|
-
`)){let Z
|
|
23
|
-
`)}function
|
|
24
|
-
`)}return[
|
|
25
|
-
`)}function
|
|
26
|
-
`)}catch{}}class
|
|
18
|
+
`)}}onLine(J){let z;try{z=JSON.parse(J)}catch(Z){t1("client-frame",Z);return}if(z.type==="event"){this.emit(z);return}if(z.type!=="response")return;let Y=this.pending.get(z.id);if(!Y)return;if(this.pending.delete(z.id),z.error){let Z=Error(z.error.message);if(z.error.name)Z.name=z.error.name;Y.reject(Z)}else Y.resolve(z.payload)}emit(J){for(let z of this.handlers.get(J.name)??[])z(J);for(let z of this.handlers.get("*")??[])z(J)}}var XG=k(()=>{JZ();YZ()});import{spawnSync as SO}from"child_process";import{existsSync as IO,statSync as TO}from"fs";import{homedir as yO}from"os";import GG from"path";async function H7(J=xO){let z=[],Y=(B)=>{if(!B)return;return z.push(B),J.fileExists(B)?B:void 0},Z=J.which("claude");if(Z){if(z.push(`which:${Z}`),J.fileExists(Z))return Z}let X=J.home(),G=Y(GG.join(X,".claude","local","claude"));if(G)return G;let Q=J.env("NVM_BIN");if(Q){let B=Y(GG.join(Q,"claude"));if(B)return B}let f=GG.join(X,".nvm","versions","node"),H=J.readdir(f).sort().reverse();for(let B of H){let V=Y(GG.join(f,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(GG.join(X,B));if(V)return V}throw new pQ(z)}var pQ,xO;var B7=k(()=>{pQ=class pQ extends Error{checkedPaths;constructor(J){super(`Claude Code binary not found. Checked: ${J.join(", ")}. Ensure 'claude' is on PATH, or install at ~/.claude/local/claude.`);this.name="ClaudeBinaryNotFoundError",this.checkedPaths=J}};xO={fileExists(J){try{return TO(J).isFile()}catch{return!1}},env(J){return process.env[J]},home(){return yO()},which(J){let z=process.platform==="win32"?"where":"which",Y=SO(z,[J],{encoding:"utf8"});if(Y.status!==0)return;let Z=Y.stdout.split(`
|
|
19
|
+
`).map((X)=>X.trim()).filter(Boolean)[0];if(!Z)return;if(Z.startsWith("claude:")&&Z.includes("aliased to")){let X=Z.split("aliased to")[1]?.trim();return X&&IO(X)?X:void 0}return Z},readdir(J){try{return uQ("fs").readdirSync(J)}catch{return[]}}}});import{spawnSync as uO}from"child_process";import{existsSync as EO,statSync as wO}from"fs";import{homedir as PO}from"os";import j7 from"path";async function W7(J=hO){let z=[],Y=(Q)=>{if(!Q)return;return z.push(Q),J.fileExists(Q)?Q:void 0},Z=J.which("codex");if(Z){if(z.push(`which:${Z}`),J.fileExists(Z))return Z}let X=J.home();for(let Q of["/opt/homebrew/bin/codex","/usr/local/bin/codex","/usr/bin/codex","/bin/codex"]){let f=Y(Q);if(f)return f}let G=J.env("NVM_BIN");if(G){let Q=Y(j7.join(G,"codex"));if(Q)return Q}for(let Q of[".local/bin/codex",".bun/bin/codex","bin/codex"]){let f=Y(j7.join(X,Q));if(f)return f}throw new rQ(z)}var rQ,hO;var V7=k(()=>{rQ=class rQ extends Error{checkedPaths;constructor(J){super(`Codex CLI binary not found. Checked: ${J.join(", ")}. Ensure 'codex' is on PATH (e.g. \`brew install codex\` or the official installer).`);this.name="CodexBinaryNotFoundError",this.checkedPaths=J}};hO={fileExists(J){try{return wO(J).isFile()}catch{return!1}},env(J){return process.env[J]},home(){return PO()},which(J){let z=process.platform==="win32"?"where":"which",Y=uO(z,[J],{encoding:"utf8"});if(Y.status!==0)return;let Z=Y.stdout.split(`
|
|
20
|
+
`).map((X)=>X.trim()).filter(Boolean)[0];if(!Z)return;if(Z.startsWith("codex:")&&Z.includes("aliased to")){let X=Z.split("aliased to")[1]?.trim();return X&&EO(X)?X:void 0}return Z},readdir(J){try{return uQ("fs").readdirSync(J)}catch{return[]}}}});import{spawnSync as vO}from"child_process";import{existsSync as mO,statSync as cO}from"fs";import{homedir as dO}from"os";import OY from"path";async function K7(J=nO){let z=[],Y=(V)=>{if(!V)return;return z.push(V),J.fileExists(V)?V:void 0},Z=J.which("copilot");if(Z){if(z.push(`which:${Z}`),J.fileExists(Z))return Z}let X=J.platform()==="win32"?["copilot.exe","copilot.cmd","copilot"]:["copilot"],G=(V)=>{if(!V)return;for(let j of X){let K=Y(OY.join(V,j));if(K)return K}return};for(let V of["/opt/homebrew/bin","/usr/local/bin","/usr/bin","/bin"]){let j=G(V);if(j)return j}let Q=J.env("NVM_BIN"),f=G(Q);if(f)return f;let H=J.home(),B=[OY.join(H,".npm-global/bin"),OY.join(H,".local/bin"),OY.join(H,".bun/bin"),OY.join(H,"bin")];if(J.platform()==="win32"){let V=J.env("APPDATA"),j=J.env("LOCALAPPDATA");if(B.unshift(OY.join(H,"AppData/Roaming/npm")),V)B.unshift(OY.join(V,"npm"));if(j)B.unshift(OY.join(j,"npm"))}for(let V of B){let j=G(V);if(j)return j}throw new oQ(z)}var oQ,nO;var U7=k(()=>{oQ=class oQ extends Error{checkedPaths;constructor(J){super(`GitHub Copilot CLI binary not found. Checked: ${J.join(", ")}. Ensure 'copilot' is on PATH (for example \`npm install -g @github/copilot\` or \`brew install copilot-cli\`).`);this.name="CopilotBinaryNotFoundError",this.checkedPaths=J}};nO={fileExists(J){try{return cO(J).isFile()}catch{return!1}},env(J){return process.env[J]},home(){return dO()},which(J){let z=process.platform==="win32"?"where":"which",Y=vO(z,[J],{encoding:"utf8"});if(Y.status!==0)return;let Z=Y.stdout.split(`
|
|
21
|
+
`).map((X)=>X.trim()).filter(Boolean)[0];if(!Z)return;if(Z.startsWith("copilot:")&&Z.includes("aliased to")){let X=Z.split("aliased to")[1]?.trim();return X&&mO(X)?X:void 0}return Z},platform(){return process.platform}}});import{readFileSync as iO,statSync as lO}from"fs";import{readFile as $O,stat as aO}from"fs/promises";async function iZ(J,z=D7){let{size:Y}=await aO(J);if(Y>z)return"";return $O(J,"utf8")}function L7(J,z=D7){let Y;try{Y=lO(J)}catch(Z){if(Z.code==="ENOENT")return null;throw Z}if(Y.size>z)return null;return iO(J,"utf8")}function AY(J,z=_O){return J.length<=z}var D7=104857600,_O=8388608;var QG=()=>{};import{homedir as pO}from"os";import RY from"path";function rO(J,z){let Y=J("CLAUDE_CONFIG_DIR")?.trim();if(Y)return RY.join(Y,".claude.json");return RY.join(z,".claude.json")}function oO(J,z){let Z=J("CODEX_HOME")?.trim()??RY.join(z,".codex");return RY.join(Z,"auth.json")}function sO(J,z){let Z=J("COPILOT_HOME")?.trim()??RY.join(z,".copilot");return RY.join(Z,"config.json")}function tO(J){let z=J.split(".");if(z.length!==3)return null;let Y=z[1];if(!Y)return null;let Z=Y.replace(/-/g,"+").replace(/_/g,"/"),X=Z+"=".repeat((4-Z.length%4)%4);try{let G=Buffer.from(X,"base64").toString("utf8"),Q=JSON.parse(G);return typeof Q==="object"&&Q!==null?Q:null}catch{return null}}async function tQ(J){try{return{found:!0,path:await J()}}catch(z){if(z instanceof pQ||z instanceof rQ||z instanceof oQ)return{found:!1,error:"not found on PATH"};return{found:!1,error:z instanceof Error?z.message:String(z)}}}async function M7(J){return(await Promise.all([["claude",()=>J.findClaudeBinary()],["codex",()=>J.findCodexBinary()],["copilot",()=>J.findCopilotBinary()]].map(async([Z,X])=>(await tQ(X)).found?Z:null))).filter((Z)=>Z!==null)}function eO(J=lZ){if(J!==lZ)return M7(J);if(sQ)return sQ;let z=M7(J).catch((Y)=>{throw sQ=null,Y});return sQ=z,z}async function JY(J=lZ){return[...await eO(J),...uJ()]}async function eQ(J=lZ){let z=await tQ(()=>J.findClaudeBinary()),Y=rO(J.env,J.home()),Z;try{Z=J.readFile(Y)}catch(H){return{binary:z,account:{kind:"none"},accountError:`read ${Y}: ${H instanceof Error?H.message:String(H)}`}}if(Z===null)return{binary:z,account:{kind:"none"}};let X;try{X=JSON.parse(Z)}catch(H){return{binary:z,account:{kind:"none"},accountError:`parse ${Y}: ${H instanceof Error?H.message:String(H)}`}}let G=X?.oauthAccount;if(!G||typeof G!=="object")return{binary:z,account:{kind:"none"}};let Q=G,f=typeof Q.emailAddress==="string"?Q.emailAddress:void 0;if(!f)return{binary:z,account:{kind:"none"}};return{binary:z,account:{kind:"oauth",email:f,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 Jq(J=lZ){let z=await tQ(()=>J.findCodexBinary()),Y=oO(J.env,J.home()),Z;try{Z=J.readFile(Y)}catch(B){return{binary:z,account:{kind:"none"},accountError:`read ${Y}: ${B instanceof Error?B.message:String(B)}`}}if(Z===null)return{binary:z,account:{kind:"none"}};let X;try{X=JSON.parse(Z)}catch(B){return{binary:z,account:{kind:"none"},accountError:`parse ${Y}: ${B instanceof Error?B.message:String(B)}`}}let G=X??{},Q=G.tokens,f=typeof Q?.id_token==="string"?Q.id_token:void 0;if(f){let B=tO(f);if(!B)return{binary:z,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"],K=typeof j==="object"&&j!==null&&!Array.isArray(j)?j:void 0,L=typeof K?.chatgpt_plan_type==="string"?K.chatgpt_plan_type:void 0;if(V)return{binary:z,account:{kind:"chatgpt",email:V,plan:L}};return{binary:z,account:{kind:"none"},accountError:"codex id_token: no email claim"}}let H=G.OPENAI_API_KEY;if(typeof H==="string"&&H.length>0)return{binary:z,account:{kind:"apikey"}};return{binary:z,account:{kind:"none"}}}async function zq(J=lZ){let z=await tQ(()=>J.findCopilotBinary());for(let G of["COPILOT_GITHUB_TOKEN","GH_TOKEN","GITHUB_TOKEN"])if(J.env(G)?.trim())return{binary:z,account:{kind:"token",source:G}};let Y=sO(J.env,J.home()),Z;try{Z=J.readFile(Y)}catch(G){return{binary:z,account:{kind:"none"},accountError:`read ${Y}: ${G instanceof Error?G.message:String(G)}`}}if(Z===null)return{binary:z,account:{kind:"none"}};let X;try{X=JSON.parse(Z)}catch(G){return{binary:z,account:{kind:"none"},accountError:`parse ${Y}: ${G instanceof Error?G.message:String(G)}`}}if(!f8(X))return{binary:z,account:{kind:"none"}};if(F7(X,["github_token","oauth_token","access_token","token","selectedUser","currentUser","user"]))return{binary:z,account:{kind:"oauth"}};return{binary:z,account:{kind:"none"}}}function f8(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}function F7(J,z,Y=0){if(Y>4||!f8(J))return!1;for(let[Z,X]of Object.entries(J)){if(z.includes(Z)&&typeof X==="string"&&X.length>0)return!0;if(f8(X)&&F7(X,z,Y+1))return!0}return!1}var lZ,sQ=null;var ZZ=k(()=>{O1();B7();V7();U7();QG();lZ={readFile(J){return L7(J)},env(J){return process.env[J]},home(){return pO()},findClaudeBinary(){return H7()},findCodexBinary(){return W7()},findCopilotBinary(){return K7()}}});function O7(J){if(typeof J==="string")return J.length>0?[{type:"text",text:J}]:[];if(!Array.isArray(J))return[];let z=[];for(let Y of J){if(typeof Y==="string"){if(Y.length>0)z.push({type:"text",text:Y});continue}if(!Y||typeof Y!=="object")continue;let Z=Y;if(Z.type==="text"&&typeof Z.text==="string"){z.push({type:"text",text:Z.text});continue}if(Z.type==="tool_use"){z.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"){z.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")z.push({type:"thinking",text:Z.thinking})}return z}function A7(J){return J.isMeta===!0||J.isCompactSummary===!0}function R7(J){if(J.length===0)return!1;for(let z of J){if(z.type!=="text")return!1;let Y=z.text.trim();if(!Y.startsWith("<command-name>")&&!Y.startsWith("<command-message>")&&!Y.startsWith("<local-command"))return!1}return!0}import{appendFile as vw,mkdir as mw,readdir as H8,stat as J2,unlink as cw}from"fs/promises";import{homedir as g7}from"os";import Yq from"path";function Y2(J){return J.replace(/[/.]/g,"-")}async function qG(J){if(!J)return[];let z=Yq.join(g7(),".claude","projects",Y2(J)),Y;try{Y=await H8(z)}catch{return[]}let Z=[];for(let X of Y){if(!X.endsWith(".jsonl"))continue;let G=Yq.join(z,X),Q=0;try{Q=(await J2(G)).mtimeMs}catch{}Z.push({sessionId:X.slice(0,-6),path:G,mtimeMs:Q})}return Z.sort((X,G)=>G.mtimeMs-X.mtimeMs),Z}async function C7(J){return(await qG(J))[0]?.mtimeMs??0}async function N7(J,z=z2){let Y=z.projectsDir(),Z=await z.readdir(Y);for(let X of Z){let G=Yq.join(Y,X,`${J}.jsonl`),Q;try{Q=await z.readFile(G)}catch{continue}return Z2(X2(Q,J))}return[]}function Z2(J){return J.map((z,Y)=>({msg:z,idx:Y})).sort((z,Y)=>{if(z.msg.timestamp<Y.msg.timestamp)return-1;if(z.msg.timestamp>Y.msg.timestamp)return 1;return z.idx-Y.idx}).map((z)=>z.msg)}function X2(J,z){let Y=[];for(let Z of J.split(`
|
|
22
|
+
`)){let X=Z.trim();if(!X)continue;if(!AY(X))continue;let G;try{G=JSON.parse(X)}catch{continue}if(!B8(G))continue;let Q=G2(G,z);if(Q)Y.push(Q)}return Y}function G2(J,z){if(A7(J))return null;let Y=B8(J.message)?J.message:J,Z=Y.role;if(Z!=="user"&&Z!=="assistant"&&Z!=="system")return null;if(!("content"in Y))return null;let X=O7(Y.content);if(Z==="user"&&R7(X))return null;let G=typeof J.timestamp==="string"?J.timestamp:new Date().toISOString(),Q=typeof J.sessionId==="string"?J.sessionId:z,f=Q2(Y.usage);return f?{role:Z,blocks:X,timestamp:G,sessionId:Q,usage:f}:{role:Z,blocks:X,timestamp:G,sessionId:Q}}function Q2(J){if(!B8(J))return;let z=typeof J.input_tokens==="number"?J.input_tokens:void 0,Y=typeof J.output_tokens==="number"?J.output_tokens:void 0;if(z===void 0||Y===void 0)return;let Z=typeof J.cache_read_input_tokens==="number"?J.cache_read_input_tokens:void 0,X=typeof J.cache_creation_input_tokens==="number"?J.cache_creation_input_tokens:void 0;return{input_tokens:z,output_tokens:Y,...Z!==void 0?{cache_read_input_tokens:Z}:{},...X!==void 0?{cache_creation_input_tokens:X}:{}}}function B8(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}var z2;var j8=k(()=>{QG();z2={projectsDir(){return Yq.join(g7(),".claude","projects")},async readdir(J){try{return await H8(J)}catch{return[]}},async readFile(J){return await iZ(J)},async pathExists(J){try{return await H8(J),!0}catch{return!1}}}});import{fileURLToPath as b7}from"url";function b1(){if(import.meta.url.endsWith(".js"))return["kobe"];let z=b7(new URL("./index.ts",import.meta.url)),Y=b7(import.meta.resolve("@opentui/solid/preload"));return[process.execPath,"--preload",Y,"--conditions=browser",z]}var zY=()=>{};function W8(J,z={}){if(z.bareSafe&&q2.test(J))return J;return`'${J.replace(/'/g,"'\\''")}'`}function Zq(J,z={}){return J.map((Y)=>W8(Y,z)).join(" ")}var q2;var V8=k(()=>{q2=/^[A-Za-z0-9_/.:=-]+$/});function HG(J){return`kobe-hidden-${J.replace(/[^A-Za-z0-9_-]/g,"")||"session"}`}function T7(J){let z=Number.parseInt(J.replace(/^@/,""),10);return Number.isFinite(z)&&z>=0?1000+z:1000}function L8(J){if(!Number.isFinite(J))return I7;return Math.max(f2,Math.min(H2,Math.round(J)))}function XZ(J){if(!Number.isFinite(J))return null;return Math.max(B2,Math.min(j2,Math.round(J)))}function x7(J){let z=Number.parseInt(J[Xq]??"",10),Y=Number.isFinite(z)&&z>0?L8(z):I7,Z=XZ(Number.parseInt(J[Gq]??"",10)),X=XZ(Number.parseInt(J[Qq]??"",10)),G=[];if(Z!==null)G.push("-x",`${Z}%`);if(X!==null)G.push("-y",`${X}%`);return{tasksWidth:Y,rightColumnWidthPct:Z??100-M8,opsHeightPct:X??BG,rightColumnResizeArgs:G}}function Z1(J){return W8(J)}function NJ(J){return Zq(J)}function kJ(J,z){let X=`${z?K8:""}${J}; __rc=$?; [ "$__rc" -ne 0 ] && printf '${"\\n \u26A0 Engine exited (code %s). Check Settings \u2192 Engines and fix the launch command.\\n\\n"}' "$__rc"; `;return z?`${X}"\${SHELL:-/bin/sh}"; ${z}`:`${X}exec "\${SHELL:-/bin/sh}"`}function aZ(J,z,Y){return`${J}${z.map(Z1).join(" ")} engine-tab-exit --session ${Z1(Y)}`}function U8(J){return`'${J.replace(/'/g,"'\\''")}'`}function u7(){return`clear; printf ${U8("\\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 F8(J){let z=typeof J==="number"?J:J==null?Number.NaN:Number.parseInt(J,10);if(!Number.isFinite(z))return W2;return Math.max(V2,Math.min(K2,Math.round(z)))}function U2(J,z){let Y=String(z),Z="\\n \u26A0 Repo init (.kobe/init.sh) timed out after %ss and was killed; continuing to the engine.\\n\\n",X="\\n \u26A0 Repo init (.kobe/init.sh) failed (code %s); continuing to the engine.\\n\\n";return['__kobe_init_env="${TMPDIR:-/tmp}/kobe-init-env.$$"','__kobe_init_to="${TMPDIR:-/tmp}/kobe-init-timeout.$$"','rm -f "$__kobe_init_env" "$__kobe_init_to" 2>/dev/null',"(",J,"__kobe_init_ec=$?",'export -p > "$__kobe_init_env" 2>/dev/null',"exit $__kobe_init_ec",") </dev/null &","__kobe_init_pid=$!",`( sleep ${Y}; : > "$__kobe_init_to"; kill -TERM "$__kobe_init_pid" 2>/dev/null; sleep 2; kill -KILL "$__kobe_init_pid" 2>/dev/null ) &`,"__kobe_init_wd=$!",'wait "$__kobe_init_pid" 2>/dev/null; __kobe_init_rc=$?','kill "$__kobe_init_wd" 2>/dev/null; wait "$__kobe_init_wd" 2>/dev/null',`if [ -f "$__kobe_init_to" ]; then __kobe_init_rc=124; printf '${"\\n \u26A0 Repo init (.kobe/init.sh) timed out after %ss and was killed; continuing to the engine.\\n\\n"}' '${Y}';`,'elif [ "$__kobe_init_rc" -eq 0 ]; then [ -f "$__kobe_init_env" ] && . "$__kobe_init_env" 2>/dev/null;',`else printf '${"\\n \u26A0 Repo init (.kobe/init.sh) failed (code %s); continuing to the engine.\\n\\n"}' "$__kobe_init_rc"; fi`,'rm -f "$__kobe_init_env" "$__kobe_init_to" 2>/dev/null'].join(`
|
|
23
|
+
`)}function E7(J,z,Y){let Z=kJ(J,Y),X=z?.initScript?.trim();if(!X)return Z;let G=F8(z?.timeoutSeconds),Q=U2(X,G);if(z?.markerPath){let f=U8(z.markerPath),H=U8(D2(z.markerPath));return K8+[`if [ ! -f ${f} ]; then`,Q,`if [ "$__kobe_init_rc" -eq 0 ]; then mkdir -p ${H} && : > ${f}; fi`,"fi",Z].join(`
|
|
24
|
+
`)}return K8+[Q,Z].join(`
|
|
25
|
+
`)}function D2(J){let z=J.lastIndexOf("/");return z<=0?".":J.slice(0,z)}function S7(J){return`cd ${Z1(J)} && while :; do clear; printf "\\033[1m# %s\\033[0m\\n\\n" ${Z1(J)}; 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 w7(J){let z=Z1(J.worktree),Y=Z1(J.relPath),Z=J.cliInvocation.map(Z1).join(" "),X=`cd ${z} && 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 ${z} --preview ${Y} || { ${X}; }`}function P7(J){return`${NJ([...J.cliInvocation,"update-page"])}`}function h7(J){let z=J.opener??"open";return[`tmux -L ${Z1(J.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{} ${z} {}`].join(" | ")}function CY(J,z={}){let Y=[...J,"tasks"];if(z.initialTaskId)Y.push("--initial-task-id",z.initialTaskId);return NJ(Y)}function _Z(J){if(J.taskId&&J.claudePaneId){let z=J.cliInvocation.map(Z1).join(" "),Y=J.vendor?` --vendor ${Z1(J.vendor)}`:"";return`KOBE_FILETREE_WATCH=1 ${z} ops --task-id ${Z1(J.taskId)} --worktree ${Z1(J.cwd)} --target-pane ${Z1(J.claudePaneId)}${Y} || { ${S7(J.cwd)}; }`}return S7(J.cwd)}var I7=32,_J="tasks",GZ="claude",Hz="ops",Bz="shell",fG="workspace_aux",D8=4,jz="@kobe_hidden_shell_pane",CJ="@kobe_hidden_tasks_pane",gY="@kobe_zen_panes",$Z="@kobe_zen",Xq="@kobe_tasks_width",f2=16,H2=120,M8=60,BG=50,Gq="@kobe_right_width_pct",Qq="@kobe_ops_height_pct",B2=10,j2=90,y7,K8="trap ':' INT; ",W2=120,V2=5,K2=3600;var Wz=k(()=>{V8();y7=[Xq,Gq,Qq]});function pJ(J){return!!J&&typeof J==="object"&&!Array.isArray(J)}function M2(J){return J.map((z)=>NJ(["hook",z.verb]))}function F2(J,z){if(!pJ(J)||!Array.isArray(J.hooks))return!1;return J.hooks.some((Y)=>pJ(Y)&&typeof Y.command==="string"&&z.some((Z)=>Y.command.includes(Z)))}function c7(J,z=b1()){let Y={};for(let{event:Z,matcher:X,verb:G}of J){let f={hooks:[{type:"command",command:NJ([...z,"hook",G])}]};if(X)f.matcher=X;Y[Z]=[f]}return Y}function qq(J,z,Y,Z=b1()){let X=M2(Y),{hooks:G,...Q}=J,f=pJ(G)?{...G}:{},H=z?c7(Y,Z):{};for(let{event:B}of Y){let j=(Array.isArray(f[B])?f[B]:[]).filter((K)=>!F2(K,X));if(z&&Array.isArray(H[B]))j.push(...H[B]);if(j.length>0)f[B]=j;else delete f[B]}return Object.keys(f).length>0?{...Q,hooks:f}:{...Q}}function d7(J=b1()){let z=NJ([...J,"hook",m7]);return{[v7]:[{matcher:L2,hooks:[{type:"command",command:z}]}]}}function O2(J){if(!pJ(J)||!Array.isArray(J.hooks))return!1;return J.hooks.some((z)=>pJ(z)&&typeof z.command==="string"&&z.command.includes(m7))}function fq(J,z,Y=b1()){let{hooks:Z,...X}=J,G=pJ(Z)?{...Z}:{},Q=v7,H=(Array.isArray(G[Q])?G[Q]:[]).filter((B)=>!O2(B));if(z)H.push(...d7(Y)[Q]);if(H.length>0)G[Q]=H;else delete G[Q];return Object.keys(G).length>0?{...X,hooks:G}:{...X}}var v7="PostToolUse",L2="Bash",m7="worktree-created";var O8=k(()=>{zY();Wz()});import{mkdir as A2,readFile as R2,writeFile as g2}from"fs/promises";import{dirname as C2}from"path";async function N2(J){try{let z=JSON.parse(await R2(J,"utf8"));return pJ(z)?z:{}}catch{return{}}}async function pZ(J,z){try{let Y=await N2(J),Z=z(Y);if(JSON.stringify(Z)===JSON.stringify(Y))return;await A2(C2(J),{recursive:!0}),await g2(J,`${JSON.stringify(Z,null,2)}
|
|
26
|
+
`)}catch{}}class jG{supportsHooks(){return!0}activityDetailFromPayload(J,z){return}supportsWorktreeSync(){return!1}async removeWorktreeSyncHook(J){}async installActivityHooks(J){await pZ(J,(z)=>qq(z,!0,this.eventMap))}async removeActivityHooks(J){await pZ(J,(z)=>qq(z,!1,this.eventMap))}async installWorktreeWatchHook(J){await pZ(J,(z)=>fq(z,!0))}async removeWorktreeWatchHook(J){await pZ(J,(z)=>fq(z,!1))}}var A8=k(()=>{O8()});import{homedir as k2}from"os";import{join as b2}from"path";function S2(J){if(typeof J!=="string")return"other";if(J==="rate_limit"||J==="overloaded")return"rate_limit";if(J==="billing_error")return"billing";return"other"}function I2(){return b2(k2(),".claude","settings.json")}function y2(J){if(!pJ(J)||!Array.isArray(J.hooks))return!1;return J.hooks.some((z)=>pJ(z)&&typeof z.command==="string"&&z.command.includes(T2))}function x2(J,z){let{hooks:Y,...Z}=J,{WorktreeCreate:X,...G}=pJ(Y)?Y:{},f=(Array.isArray(X)?X:[]).filter((B)=>!y2(B));if(z!==null)f.push({hooks:[{type:"command",command:z}]});let H={...G};if(f.length>0)H.WorktreeCreate=f;return Object.keys(H).length>0?{...Z,hooks:H}:{...Z}}var n7,fP,T2="worktree-created",R8;var i7=k(()=>{A8();O8();n7=[{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"}],fP=n7.map((J)=>J.event);R8=class R8 extends jG{vendor="claude";eventMap=n7;globalSettingsPath(){return I2()}activityDetailFromPayload(J,z){if(J==="turn-failed")return{failure:S2(z.error_type)};if(J==="awaiting-input")return{waiting:"permission"};return}supportsWorktreeSync(){return!0}async removeWorktreeSyncHook(J){await pZ(J,(z)=>x2(z,null))}}});function g8(J){if(typeof J==="string")return J.length>0?[{type:"text",text:J}]:[];if(!Array.isArray(J))return[];let z=[];for(let Y of J){if(typeof Y==="string"){if(Y.length>0)z.push({type:"text",text:Y});continue}if(!u2(Y))continue;let Z=typeof Y.type==="string"?Y.type:void 0;if(Z==="input_text"||Z==="output_text"){let X=typeof Y.text==="string"?Y.text:"";if(X.length>0)z.push({type:"text",text:X});continue}if(Z)z.push({type:"text",text:`[codex: ${Z}]`})}return z}function u2(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}function l7(J){if(J.length===0)return!1;for(let z of J){if(z.type!=="text")return!1;let Y=(z.text??"").trim();if(!E2(Y)&&!w2(Y))return!1}return!0}function E2(J){return J.startsWith("<environment_context>")&&J.endsWith("</environment_context>")}function w2(J){return J.startsWith("# AGENTS.md instructions for ")&&J.includes(`
|
|
27
27
|
<INSTRUCTIONS>
|
|
28
|
-
`)&&J.endsWith("</INSTRUCTIONS>")}var
|
|
29
|
-
`)){let Y=z.trim();if(!Y)continue;if(!AY(Y))return"";try{let
|
|
30
|
-
`)){let Z
|
|
31
|
-
`)){let Z
|
|
32
|
-
`)){let
|
|
33
|
-
`)){let H=f.trim();if(!H)continue;if(!AY(H))continue;let B;try{B=JSON.parse(H)}catch{continue}if(!
|
|
34
|
-
`)){
|
|
35
|
-
`)){G++;let X=XV(Z);if(!X||X.type!=="turn.completed")continue;let Q=QV(X,0),f={id:`codex:${z}:${Q}:${G}`,timestampMs:Q,source:"codex"};if(!Y||f.timestampMs>=Y.timestampMs)Y=f}return Y}function XV(J){let z=J.trim();if(!z)return null;try{let Y=JSON.parse(z);return qV(Y)?Y:null}catch{return null}}function QV(J,z){let Y=typeof J.timestamp==="string"?Date.parse(J.timestamp):Number.NaN;return Number.isFinite(Y)?Y:z}function qV(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}var XA,y8,QA,x8,zq;var Yq=k(()=>{Q8();C8();kY();XA={listSessionFiles:(J)=>ZX(J),readFile:(J)=>ZV(J,"utf8")};y8=class y8 extends Jq{deps;vendor="claude";cache=new Map;constructor(J=XA){super();this.deps=J}async latestCompletion(J){let z=await this.deps.listSessionFiles(J),Y=null,G=new Map;for(let Z of z.slice(0,4)){let X=this.cache.get(Z.path),Q;if(X&&Z.mtimeMs>0&&X.mtimeMs===Z.mtimeMs)Q=X.marker;else{let f=await this.deps.readFile(Z.path).catch(()=>"");Q=qA(f,Z.path,Z.mtimeMs)}if(G.set(Z.path,{mtimeMs:Z.mtimeMs,marker:Q}),Q&&(!Y||Q.timestampMs>Y.timestampMs))Y=Q}return this.cache=G,Y}};QA={findLatestRollout:(J)=>g8(J),readFile:(J)=>ZV(J,"utf8")};x8=class x8 extends Jq{deps;vendor="codex";cache=null;constructor(J=QA){super();this.deps=J}async latestCompletion(J){if(!J)return null;let z=await this.deps.findLatestRollout(J);if(!z)return null;if(this.cache&&this.cache.path===z.path&&z.mtimeMs>0&&this.cache.mtimeMs===z.mtimeMs)return this.cache.marker;let Y=await this.deps.readFile(z.path).catch(()=>"");if(!Y)return null;let G=fA(Y,z.path);return this.cache={path:z.path,mtimeMs:z.mtimeMs,marker:G},G}};zq=class zq extends Jq{vendor;constructor(J){super();this.vendor=J}supportsCompletionMarkers(){return!1}async latestCompletion(){return null}}});function KA(J){return{vendor:J,builtin:!1,displayName:J,defaultCommand:[J],history:HA,detectAccount:async()=>({binary:{found:!1,error:"custom engine: kobe has no account detector for it"},account:{kind:"none"}}),createHookAdapter:()=>new eQ(J),createTurnDetector:()=>new zq(J)}}function t1(J){return QJ(J)?VA[J]:KA(J)}var HA,BA,jA,WA,VA;var kY=k(()=>{i1();YG();Q8();P7();C8();t7();GV();T8();Yq();HA={async listSessionIdsForWorktree(){return[]},async readHistory(){return[]},async latestTranscriptMtimeForWorktree(){return 0}},BA={async listSessionIdsForWorktree(J){return[...await ZX(J)].sort((Y,G)=>Y.mtimeMs-G.mtimeMs).map((Y)=>Y.sessionId)},readHistory:(J)=>M7(J),latestTranscriptMtimeForWorktree:(J)=>L7(J)},jA={listSessionIdsForWorktree:(J)=>_7(J),readHistory:(J)=>r7(J),latestTranscriptMtimeForWorktree:(J)=>p7(J)},WA={listSessionIdsForWorktree:(J)=>JV(J),readHistory:(J)=>YV(J),latestTranscriptMtimeForWorktree:(J)=>zV(J)},VA={claude:{vendor:"claude",builtin:!0,displayName:"Claude",defaultCommand:["claude"],history:BA,detectAccount:(J)=>cQ(J),createHookAdapter:()=>new D8,createTurnDetector:()=>new y8},codex:{vendor:"codex",builtin:!0,displayName:"Codex",defaultCommand:["codex"],effortLevels:["none","low","medium","high","xhigh"],history:jA,detectAccount:(J)=>dQ(J),createHookAdapter:()=>new N8,createTurnDetector:()=>new x8},copilot:{vendor:"copilot",builtin:!0,displayName:"Copilot",defaultCommand:["copilot"],history:WA,detectAccount:(J)=>nQ(J),createHookAdapter:()=>new eQ("copilot"),createTurnDetector:()=>new zq("copilot")}}});async function _G(J,z){if(!z)return 0;return t1(J).history.latestTranscriptMtimeForWorktree(z)}var Gq=k(()=>{kY()});function fV(J){return typeof J==="string"&&UA.includes(J)}var jX=(J)=>J,$1="claude",UA;var rJ=k(()=>{UA=["backlog","in_progress","in_review","done","canceled","error"]});function Zq(J){return DA.includes(J)}function HV(J,z,Y){switch(z){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 DA;var Xq=k(()=>{DA=["session-start","turn-start","turn-complete","turn-failed","awaiting-input","session-end"]});function LA(){let J=process.env.KOBE_ENGINE_STATE_TTL_MS;if(J===void 0)return BV;let z=Number(J);return Number.isFinite(z)&&z>0?z:BV}class u8{bus;staleMs;now;livenessAt;activity=new Map;constructor(J,z=LA(),Y=()=>Date.now(),G=()=>Promise.resolve(void 0)){this.bus=J;this.staleMs=z;this.now=Y;this.livenessAt=G}report(J,z,Y){let G=this.activity.get(J);if(G?.lapse)clearTimeout(G.lapse);let Z=HV(G?.state,z,Y),X=this.now(),Q={state:Z,detail:Y,at:X};if(Z!=="idle"&&Z!=="turn_complete")Q.lapse=this.armLapse(J,X);this.activity.set(J,Q),this.bus.publish("engine-state",this.payload(J,Q))}armLapse(J,z){let Y=setTimeout(()=>{this.handleLapse(J,z)},this.staleMs);return Y.unref?.(),Y}async handleLapse(J,z){let Y=this.activity.get(J);if(!Y||Y.at!==z)return;let G;try{G=await this.livenessAt(J)}catch{G=void 0}let Z=this.activity.get(J);if(!Z||Z.at!==z)return;if(G!==void 0&&G>this.now()-this.staleMs){Z.lapse=this.armLapse(J,z);return}this.publishIdle(J)}clearTask(J){let z=this.activity.get(J);if(z?.lapse)clearTimeout(z.lapse);if(this.activity.delete(J),z)this.bus.publish("engine-state",{taskId:J,state:"idle",at:this.now()})}snapshotByTask(){let J={};for(let[z,Y]of this.activity)J[z]=this.payload(z,Y);return J}currentNonIdle(){let J=[];for(let[z,Y]of this.activity)if(Y.state!=="idle")J.push(this.payload(z,Y));return J}close(){for(let J of this.activity.values())if(J.lapse)clearTimeout(J.lapse);this.activity.clear()}publishIdle(J){let z={state:"idle",at:this.now()};this.activity.set(J,z),this.bus.publish("engine-state",this.payload(J,z))}payload(J,z){return{taskId:J,state:z.state,...z.detail?{detail:z.detail}:{},at:z.at}}}var BV=600000;var jV=k(()=>{Xq()});function WV(J){if(typeof J!=="string")return"";let z=J.replace(/\s+/g," ").trim();if(z.length===0)return"";let Y=[...z];if(Y.length<=40)return z;return`${Y.slice(0,40).join("")}\u2026`}function Qq(J,z){let Y=J.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,32),G=z.slice(-6).toLowerCase();return`kobe/${Y||"task"}-${G}`}function VV(J){let z=J.find((Z)=>Z.role==="user");if(!z)return"";let Y=z.blocks.filter((Z)=>Z.type==="text").map((Z)=>Z.text).join(" "),G=WV(Y);return G.length>0?Buffer.from(G,"utf8").toString("utf8"):G}async function pG(J,z=$1){if(!J)return"";let{history:Y}=t1(z),G=await Y.listSessionIdsForWorktree(J);for(let Z of G.slice(0,MA)){let X=VV(await Y.readHistory(Z));if(X)return X}return""}async function KV(J,z){if(!z)return"";try{return VV(await t1(J).history.readHistory(z))}catch{return""}}var MA=8;var qq=k(()=>{kY();rJ()});function UV(J){let z=String(J),Y=z.length-1;return S1.context.id+(Y?String.fromCharCode(96+Y):"")+z}function P8(J){S1.context=J}function FA(){return{...S1.context,id:S1.getNextContextId(),count:0}}function fG(J,z){let Y=U1,G=i0,Z=J.length===0,X=z===void 0?G:z,Q=Z?{owned:null,cleanups:null,context:null,owner:null}:{owned:null,cleanups:null,context:X?X.context:null,owner:X},f=Z?()=>J(()=>{throw Error("Dispose method must be an explicit argument to createRoot function")}):()=>J(()=>_1(()=>bY(Q)));Wz.afterCreateOwner&&Wz.afterCreateOwner(Q),i0=Q,U1=null;try{return bJ(f,!0)}finally{U1=Y,i0=G}}function a(J,z){z=z?Object.assign({},jq,z):jq;let Y={value:J,observers:null,observerSlots:null,comparator:z.equals||void 0};{if(z.name)Y.name=z.name;if(z.internal)Y.internal=!0;else if(gV(Y),Wz.afterCreateSignal)Wz.afterCreateSignal(Y)}let G=(Z)=>{if(typeof Z==="function")if(f0&&f0.running&&f0.sources.has(Y))Z=Z(Y.tValue);else Z=Z(Y.value);return v8(Y,Z)};return[CV.bind(Y),G]}function DV(J,z,Y){let G=sG(J,z,!0,EJ,Y);if(oG&&f0&&f0.running)a1.push(G);else HG(G)}function Iz(J,z,Y){let G=sG(J,z,!1,EJ,Y);if(oG&&f0&&f0.running)a1.push(G);else HG(G)}function r0(J,z,Y){RV=xA;let G=sG(J,z,!1,EJ,Y),Z=KX&&wJ(KX);if(Z)G.suspense=Z;if(!Y||!Y.render)G.user=!0;WJ?WJ.push(G):HG(G)}function K0(J,z,Y){Y=Y?Object.assign({},jq,Y):jq;let G=sG(J,z,!0,0,Y);if(G.observers=null,G.observerSlots=null,G.comparator=Y.equals||void 0,oG&&f0&&f0.running)G.tState=EJ,a1.push(G);else HG(G);return CV.bind(G)}function NA(J){return J&&typeof J==="object"&&"then"in J}function Uq(J,z,Y){let G,Z,X;if(typeof z==="function")G=J,Z=z,X=Y||{};else G=!0,Z=J,X=z||{};let Q=null,f=E8,H=null,B=!1,V=!1,j="initialValue"in X,K=typeof G==="function"&&K0(G),L=new Set,[A,O]=(X.storage||a)(X.initialValue),[g,x]=a(void 0),[_,S]=a(void 0,{equals:!1}),[N,M]=a(j?"ready":"unresolved");if(S1.context){if(H=S1.getNextContextId(),X.ssrLoadFrom==="initial")f=X.initialValue;else if(S1.load&&S1.has(H))f=S1.load(H)}function I(T,q0,p,B0){if(Q===T){if(Q=null,B0!==void 0&&(j=!0),(T===f||q0===f)&&X.onHydrated)queueMicrotask(()=>X.onHydrated(B0,{value:q0}));if(f=E8,f0&&T&&B)f0.promises.delete(T),B=!1,bJ(()=>{f0.running=!0,r(q0,p)},!1);else r(q0,p)}return q0}function r(T,q0){bJ(()=>{if(q0===void 0)O(()=>T);M(q0!==void 0?"errored":j?"ready":"unresolved"),x(q0);for(let p of L.keys())p.decrement();L.clear()},!1)}function i(){let T=KX&&wJ(KX),q0=A(),p=g();if(p!==void 0&&!Q)throw p;if(U1&&!U1.user&&T)DV(()=>{if(_(),Q){if(T.resolved&&f0&&B)f0.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=K?K():G;if(B=f0&&f0.running,q0==null||q0===!1){I(Q,_1(A));return}if(f0&&Q)f0.promises.delete(Q);let p,B0=f!==E8?f:_1(()=>{try{return Z(q0,{value:A(),refetching:T})}catch(L0){p=L0}});if(p!==void 0){I(Q,void 0,Bq(p),q0);return}else if(!NA(B0))return I(Q,B0,void 0,q0),B0;if(Q=B0,"v"in B0){if(B0.s===1)I(Q,B0.v,void 0,q0);else I(Q,void 0,Bq(B0.v),q0);return B0}return V=!0,queueMicrotask(()=>V=!1),bJ(()=>{M(j?"refreshing":"pending"),S()},!1),B0.then((L0)=>I(B0,L0,void 0,q0),(L0)=>I(B0,void 0,Bq(L0),q0))}Object.defineProperties(i,{state:{get:()=>N()},error:{get:()=>g()},loading:{get(){let T=N();return T==="pending"||T==="refreshing"}},latest:{get(){if(!j)return i();let T=g();if(T&&!Q)throw T;return A()}}});let J0=i0;if(K)DV(()=>(J0=i0,e(!1)));else e(!1);return[i,{refetch:(T)=>bA(J0,()=>e(T)),mutate:O}]}function Dq(J){return bJ(J,!1)}function _1(J){if(!rG&&U1===null)return J();let z=U1;U1=null;try{if(rG)return rG.untrack(J);return J()}finally{U1=z}}function SJ(J,z,Y){let G=Array.isArray(J),Z,X=Y&&Y.defer;return(Q)=>{let f;if(G){f=Array(J.length);for(let B=0;B<J.length;B++)f[B]=J[B]()}else f=J();if(X)return X=!1,Q;let H=_1(()=>z(f,Z,Q));return Z=f,H}}function e1(J){r0(()=>_1(J))}function k1(J){if(i0===null)console.warn("cleanups created outside a `createRoot` or `render` will never be run");else if(i0.cleanups===null)i0.cleanups=[J];else i0.cleanups.push(J);return J}function kA(J,z){if(WX||(WX=Symbol("error")),i0=sG(void 0,void 0,!0),i0.context={...i0.context,[WX]:[z]},f0&&f0.running)f0.sources.add(i0);try{return J()}catch(Y){DX(Y)}finally{i0=i0.owner}}function Lq(){return U1}function bA(J,z){let Y=i0,G=U1;i0=J,U1=null;try{return bJ(z,!0)}catch(Z){DX(Z)}finally{i0=Y,U1=G}}function SA(J){if(f0&&f0.running)return J(),f0.done;let z=U1,Y=i0;return Promise.resolve().then(()=>{U1=z,i0=Y;let G;if(oG||KX)G=f0||(f0={sources:new Set,effects:[],promises:new Set,disposed:new Set,queue:new Set,running:!0}),G.done||(G.done=new Promise((Z)=>G.resolve=Z)),G.running=!0;return bJ(J,!1),U1=i0=null,G?G.done:void 0})}function MV(J,z){let Y=sG(()=>_1(()=>{return Object.assign(J,{[gA]:!0}),J(z)}),void 0,!0,0);return Y.props=z,Y.observers=null,Y.observerSlots=null,Y.name=J.name,Y.component=J,HG(Y),Y.tValue!==void 0?Y.tValue:Y.value}function gV(J){if(i0){if(i0.sourceMap)i0.sourceMap.push(J);else i0.sourceMap=[J];J.graph=i0}if(Wz.afterRegisterGraph)Wz.afterRegisterGraph(J)}function Tz(J,z){let Y=Symbol("context");return{id:Y,Provider:uA(Y,z),defaultValue:J}}function wJ(J){let z;return i0&&i0.context&&(z=i0.context[J.id])!==void 0?z:J.defaultValue}function IA(J){let z=K0(J),Y=K0(()=>h8(z()),void 0,{name:"children"});return Y.toArray=()=>{let G=Y();return Array.isArray(G)?G:G!=null?[G]:[]},Y}function CV(){let J=f0&&f0.running;if(this.sources&&(J?this.tState:this.state))if((J?this.tState:this.state)===EJ)HG(this);else{let z=a1;a1=null,bJ(()=>Wq(this),!1),a1=z}if(U1){let z=this.observers;if(!z||z[z.length-1]!==U1){let Y=z?z.length:0;if(!U1.sources)U1.sources=[this],U1.sourceSlots=[Y];else U1.sources.push(this),U1.sourceSlots.push(Y);if(!z)this.observers=[U1],this.observerSlots=[U1.sources.length-1];else z.push(U1),this.observerSlots.push(U1.sources.length-1)}}if(J&&f0.sources.has(this))return this.tValue;return this.value}function v8(J,z,Y){let G=f0&&f0.running&&f0.sources.has(J)?J.tValue:J.value;if(!J.comparator||!J.comparator(G,z)){if(f0){let Z=f0.running;if(Z||!Y&&f0.sources.has(J))f0.sources.add(J),J.tValue=z;if(!Z)J.value=z}else J.value=z;if(J.observers&&J.observers.length)bJ(()=>{for(let Z=0;Z<J.observers.length;Z+=1){let X=J.observers[Z],Q=f0&&f0.running;if(Q&&f0.disposed.has(X))continue;if(Q?!X.tState:!X.state){if(X.pure)a1.push(X);else WJ.push(X);if(X.observers)kV(X)}if(!Q)X.state=EJ;else X.tState=EJ}if(a1.length>1e6){if(a1=[],OA)throw Error("Potential Infinite Loop Detected.");throw Error()}},!1)}return z}function HG(J){if(!J.fn)return;bY(J);let z=Kq;if(FV(J,f0&&f0.running&&f0.sources.has(J)?J.tValue:J.value,z),f0&&!f0.running&&f0.sources.has(J))queueMicrotask(()=>{bJ(()=>{f0&&(f0.running=!0),U1=i0=J,FV(J,J.tValue,z),U1=i0=null},!1)})}function FV(J,z,Y){let G,Z=i0,X=U1;U1=i0=J;try{G=J.fn(z)}catch(Q){if(J.pure)if(f0&&f0.running)J.tState=EJ,J.tOwned&&J.tOwned.forEach(bY),J.tOwned=void 0;else J.state=EJ,J.owned&&J.owned.forEach(bY),J.owned=null;return J.updatedAt=Y+1,DX(Q)}finally{U1=X,i0=Z}if(!J.updatedAt||J.updatedAt<=Y){if(J.updatedAt!=null&&"observers"in J)v8(J,G,!0);else if(f0&&f0.running&&J.pure){if(!f0.sources.has(J))J.value=G;f0.sources.add(J),J.tValue=G}else J.value=G;J.updatedAt=Y}}function sG(J,z,Y,G=EJ,Z){let X={fn:J,state:G,updatedAt:null,owned:null,sources:null,sourceSlots:null,cleanups:null,value:z,owner:i0,context:i0?i0.context:null,pure:Y};if(f0&&f0.running)X.state=0,X.tState=G;if(i0===null)console.warn("computations created outside a `createRoot` or `render` will never be disposed");else if(i0!==CA)if(f0&&f0.running&&i0.pure)if(!i0.tOwned)i0.tOwned=[X];else i0.tOwned.push(X);else if(!i0.owned)i0.owned=[X];else i0.owned.push(X);if(Z&&Z.name)X.name=Z.name;if(rG&&X.fn){let Q=X.fn,[f,H]=a(void 0,{equals:!1}),B=rG.factory(Q,H);k1(()=>B.dispose());let V,j=()=>SA(H).then(()=>{if(V)V.dispose(),V=void 0});X.fn=(K)=>{if(f(),f0&&f0.running){if(!V)V=rG.factory(Q,j);return V.track(K)}return B.track(K)}}return Wz.afterCreateOwner&&Wz.afterCreateOwner(X),X}function UX(J){let z=f0&&f0.running;if((z?J.tState:J.state)===0)return;if((z?J.tState:J.state)===VX)return Wq(J);if(J.suspense&&_1(J.suspense.inFallback))return J.suspense.effects.push(J);let Y=[J];while((J=J.owner)&&(!J.updatedAt||J.updatedAt<Kq)){if(z&&f0.disposed.has(J))return;if(z?J.tState:J.state)Y.push(J)}for(let G=Y.length-1;G>=0;G--){if(J=Y[G],z){let Z=J,X=Y[G+1];while((Z=Z.owner)&&Z!==X)if(f0.disposed.has(Z))return}if((z?J.tState:J.state)===EJ)HG(J);else if((z?J.tState:J.state)===VX){let Z=a1;a1=null,bJ(()=>Wq(J,Y[0]),!1),a1=Z}}}function bJ(J,z){if(a1)return J();let Y=!1;if(!z)a1=[];if(WJ)Y=!0;else WJ=[];Kq++;try{let G=J();return TA(Y),G}catch(G){if(!Y)WJ=null;a1=null,DX(G)}}function TA(J){if(a1){if(oG&&f0&&f0.running)yA(a1);else NV(a1);a1=null}if(J)return;let z;if(f0){if(!f0.promises.size&&!f0.queue.size){let{sources:G,disposed:Z}=f0;WJ.push.apply(WJ,f0.effects),z=f0.resolve;for(let X of WJ)"tState"in X&&(X.state=X.tState),delete X.tState;f0=null,bJ(()=>{for(let X of Z)bY(X);for(let X of G){if(X.value=X.tValue,X.owned)for(let Q=0,f=X.owned.length;Q<f;Q++)bY(X.owned[Q]);if(X.tOwned)X.owned=X.tOwned;delete X.tValue,delete X.tOwned,X.tState=0}LV(!1)},!1)}else if(f0.running){f0.running=!1,f0.effects.push.apply(f0.effects,WJ),WJ=null,LV(!0);return}}let Y=WJ;if(WJ=null,Y.length)bJ(()=>RV(Y),!1);else Wz.afterUpdate&&Wz.afterUpdate();if(z)z()}function NV(J){for(let z=0;z<J.length;z++)UX(J[z])}function yA(J){for(let z=0;z<J.length;z++){let Y=J[z],G=f0.queue;if(!G.has(Y))G.add(Y),oG(()=>{G.delete(Y),bJ(()=>{f0.running=!0,UX(Y)},!1),f0&&(f0.running=!1)})}}function xA(J){let z,Y=0;for(z=0;z<J.length;z++){let G=J[z];if(!G.user)UX(G);else J[Y++]=G}if(S1.context){if(S1.count){S1.effects||(S1.effects=[]),S1.effects.push(...J.slice(0,Y));return}P8()}if(S1.effects&&(S1.done||!S1.count))J=[...S1.effects,...J],Y+=S1.effects.length,delete S1.effects;for(z=0;z<Y;z++)UX(J[z])}function Wq(J,z){let Y=f0&&f0.running;if(Y)J.tState=0;else J.state=0;for(let G=0;G<J.sources.length;G+=1){let Z=J.sources[G];if(Z.sources){let X=Y?Z.tState:Z.state;if(X===EJ){if(Z!==z&&(!Z.updatedAt||Z.updatedAt<Kq))UX(Z)}else if(X===VX)Wq(Z,z)}}}function kV(J){let z=f0&&f0.running;for(let Y=0;Y<J.observers.length;Y+=1){let G=J.observers[Y];if(z?!G.tState:!G.state){if(z)G.tState=VX;else G.state=VX;if(G.pure)a1.push(G);else WJ.push(G);G.observers&&kV(G)}}}function bY(J){let z;if(J.sources)while(J.sources.length){let Y=J.sources.pop(),G=J.sourceSlots.pop(),Z=Y.observers;if(Z&&Z.length){let X=Z.pop(),Q=Y.observerSlots.pop();if(G<Z.length)X.sourceSlots[Q]=G,Z[G]=X,Y.observerSlots[G]=Q}}if(J.tOwned){for(z=J.tOwned.length-1;z>=0;z--)bY(J.tOwned[z]);delete J.tOwned}if(f0&&f0.running&&J.pure)bV(J,!0);else if(J.owned){for(z=J.owned.length-1;z>=0;z--)bY(J.owned[z]);J.owned=null}if(J.cleanups){for(z=J.cleanups.length-1;z>=0;z--)J.cleanups[z]();J.cleanups=null}if(f0&&f0.running)J.tState=0;else J.state=0;delete J.sourceMap}function bV(J,z){if(!z)J.tState=0,f0.disposed.add(J);if(J.owned)for(let Y=0;Y<J.owned.length;Y++)bV(J.owned[Y])}function Bq(J){if(J instanceof Error)return J;return Error(typeof J==="string"?J:"Unknown error",{cause:J})}function OV(J,z,Y){try{for(let G of z)G(J)}catch(G){DX(G,Y&&Y.owner||null)}}function DX(J,z=i0){let Y=WX&&z&&z.context&&z.context[WX],G=Bq(J);if(!Y)throw G;if(WJ)WJ.push({fn(){OV(G,Y,z)},state:EJ});else OV(G,Y,z)}function h8(J){if(typeof J==="function"&&!J.length)return h8(J());if(Array.isArray(J)){let z=[];for(let Y=0;Y<J.length;Y++){let G=h8(J[Y]);if(Array.isArray(G))if(G.length<32768)z.push.apply(z,G);else for(let Z=0;Z<G.length;Z++)z.push(G[Z]);else z.push(G)}return z}return J}function uA(J,z){return function(G){let Z;return Iz(()=>Z=_1(()=>{return i0.context={...i0.context,[J]:G.value},IA(()=>G.children)}),void 0,z),Z}}function AV(J){for(let z=0;z<J.length;z++)J[z]()}function wA(J,z,Y={}){let G=[],Z=[],X=[],Q=0,f=z.length>1?[]:null;return k1(()=>AV(X)),()=>{let H=J()||[],B=H.length,V,j;return H[Vq],_1(()=>{let L,A,O,g,x,_,S,N,M;if(B===0){if(Q!==0)AV(X),X=[],G=[],Z=[],Q=0,f&&(f=[]);if(Y.fallback)G=[EA],Z[0]=fG((I)=>{return X[0]=I,Y.fallback()}),Q=1}else if(Q===0){Z=Array(B);for(j=0;j<B;j++)G[j]=H[j],Z[j]=fG(K);Q=B}else{O=Array(B),g=Array(B),f&&(x=Array(B));for(_=0,S=Math.min(Q,B);_<S&&G[_]===H[_];_++);for(S=Q-1,N=B-1;S>=_&&N>=_&&G[S]===H[N];S--,N--)O[N]=Z[S],g[N]=X[S],f&&(x[N]=f[S]);L=new Map,A=Array(N+1);for(j=N;j>=_;j--)M=H[j],V=L.get(M),A[j]=V===void 0?-1:V,L.set(M,j);for(V=_;V<=S;V++)if(M=G[V],j=L.get(M),j!==void 0&&j!==-1)O[j]=Z[V],g[j]=X[V],f&&(x[j]=f[V]),j=A[j],L.set(M,j);else X[V]();for(j=_;j<B;j++)if(j in O){if(Z[j]=O[j],X[j]=g[j],f)f[j]=x[j],f[j](j)}else Z[j]=fG(K);Z=Z.slice(0,Q=B),G=H.slice(0)}return Z});function K(L){if(X[j]=L,f){let[A,O]=a(j,{name:"index"});return f[j]=O,z(H[j],A)}return z(H[j])}}}function SV(J,z){if(PA){if(S1.context){let Y=S1.context;P8(FA());let G=MV(J,z||{});return P8(Y),G}}return MV(J,z||{})}function fq(){return!0}function w8(J){return!(J=typeof J==="function"?J():J)?{}:J}function vA(){for(let J=0,z=this.length;J<z;++J){let Y=this[J]();if(Y!==void 0)return Y}}function Mq(...J){let z=!1;for(let Q=0;Q<J.length;Q++){let f=J[Q];z=z||!!f&&jz in f,J[Q]=typeof f==="function"?(z=!0,K0(f)):f}if(RA&&z)return new Proxy({get(Q){for(let f=J.length-1;f>=0;f--){let H=w8(J[f])[Q];if(H!==void 0)return H}},has(Q){for(let f=J.length-1;f>=0;f--)if(Q in w8(J[f]))return!0;return!1},keys(){let Q=[];for(let f=0;f<J.length;f++)Q.push(...Object.keys(w8(J[f])));return[...new Set(Q)]}},hA);let Y={},G=Object.create(null);for(let Q=J.length-1;Q>=0;Q--){let f=J[Q];if(!f)continue;let H=Object.getOwnPropertyNames(f);for(let B=H.length-1;B>=0;B--){let V=H[B];if(V==="__proto__"||V==="constructor")continue;let j=Object.getOwnPropertyDescriptor(f,V);if(!G[V])G[V]=j.get?{enumerable:!0,configurable:!0,get:vA.bind(Y[V]=[j.get.bind(f)])}:j.value!==void 0?j:void 0;else{let K=Y[V];if(K){if(j.get)K.push(j.get.bind(f));else if(j.value!==void 0)K.push(()=>j.value)}}}}let Z={},X=Object.keys(G);for(let Q=X.length-1;Q>=0;Q--){let f=X[Q],H=G[f];if(H&&H.get)Object.defineProperty(Z,f,H);else Z[f]=H?H.value:void 0}return Z}function X1(J){let z="fallback"in J&&{fallback:()=>J.fallback};return K0(wA(()=>J.each,J.children,z||void 0),void 0,{name:"value"})}function Z0(J){let z=J.keyed,Y=K0(()=>J.when,void 0,{name:"condition value"}),G=z?Y:K0(Y,void 0,{equals:(Z,X)=>!Z===!X,name:"condition"});return K0(()=>{let Z=G();if(Z){let X=J.children;return typeof X==="function"&&X.length>0?_1(()=>X(z?Z:()=>{if(!_1(G))throw mA("Show");return Y()})):X}return J.fallback},void 0,{name:"value"})}function IV(J){let z;if(S1.context&&S1.load)z=S1.load(S1.getContextId());let[Y,G]=a(z,{name:"errored"});return Hq||(Hq=new Set),Hq.add(G),k1(()=>Hq.delete(G)),K0(()=>{let Z;if(Z=Y()){let X=J.fallback;if(typeof X!=="function"||X.length==0)console.error(Z);return typeof X==="function"&&X.length?_1(()=>X(Z,()=>G())):X}return kA(()=>J.children,G)},void 0,{name:"value"})}var S1,OA=!0,AA=(J,z)=>J===z,jz,RA,Vq,gA,jq,WX=null,RV,EJ=1,VX=2,CA,E8,i0=null,f0=null,oG=null,rG=null,U1=null,a1=null,WJ=null,Kq=0,Wz,tP,LV,KX,EA,PA=!1,hA,mA=(J)=>`Attempting to access a stale value from <${J}> 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.`,Hq,TV;var j1=k(()=>{S1={context:void 0,registry:void 0,effects:void 0,done:!1,getContextId(){return UV(this.context.count)},getNextContextId(){return UV(this.context.count++)}};jz=Symbol("solid-proxy"),RA=typeof Proxy==="function",Vq=Symbol("solid-track"),gA=Symbol("solid-dev-component"),jq={equals:AA},RV=NV,CA={},E8={},Wz={afterUpdate:null,afterCreateOwner:null,afterCreateSignal:null,afterRegisterGraph:null};[tP,LV]=a(!1);EA=Symbol("fallback");hA={get(J,z,Y){if(z===jz)return Y;return J.get(z)},has(J,z){if(z===jz)return!0;return J.has(z)},set:fq,deleteProperty:fq,getOwnPropertyDescriptor(J,z){return{configurable:!0,enumerable:!0,get(){return J.get(z)},set:fq,deleteProperty:fq}},ownKeys(J){return J.keys()}};TV={hooks:Wz,writeSignal:v8,registerGraph:gV};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.")});import{spawn as cA}from"child_process";function m8(J,z,Y,G){if(Y)return J+G.slowRetryMs;return z+Math.max(G.minIntervalMs,(z-J)*5)}function c8(J,z){return!J.inFlight&&z>=J.nextAllowedAt}function yV(J,z,Y=Math.random){let G=Math.max(0,Math.min(1,z)),Z=(Y()*2-1)*J*G;return Math.max(0,J+Z)}function xV(J,z,Y){if(z<=0)return Math.min(J,Y);return Math.min(J*2**z,Y)}function tG(J,z,Y,G){let Z=Date.now();if(!c8(J,Z))return!1;J.inFlight=!0;let X=new AbortController,Q=setTimeout(()=>X.abort(),z.timeoutMs);return(async()=>{let f,H=!1;try{f=await Y(X.signal),H=!0}catch{}clearTimeout(Q);let B=X.signal.aborted;if(J.nextAllowedAt=m8(Z,Date.now(),B,z),J.inFlight=!1,H&&!B)G(f)})(),!0}function zY(J,z,Y){return new Promise((G)=>{let Z="",X=!1,Q=(H)=>{if(X)return;X=!0,G({status:H,stdout:Z})},f=cA(J,z.slice(),{cwd:Y.cwd,stdio:["ignore","pipe","ignore"],env:Y.env,signal:Y.signal,killSignal:"SIGKILL"});f.stdout?.on("data",(H)=>{Z+=String(H)}),f.on("error",()=>Q(null)),f.on("close",(H)=>Q(H))})}var eG=()=>{};function dA(J,z){switch((J??"").toUpperCase()){case"MERGED":return"merged";case"CLOSED":return"closed";case"OPEN":return(z??"").toUpperCase()==="APPROVED"?"ready_to_merge":"open";default:return"unknown"}}function nA(J){let z=(J.status??"").toUpperCase(),Y=(J.conclusion??"").toUpperCase(),G=(J.state??"").toUpperCase();if(z&&z!=="COMPLETED")return"pending";if(Y){if(Y==="SUCCESS"||Y==="NEUTRAL"||Y==="SKIPPED")return"passing";return"failing"}if(G==="SUCCESS")return"passing";if(G==="PENDING"||G==="EXPECTED")return"pending";if(G==="FAILURE"||G==="ERROR")return"failing";return"unknown"}function iA(J){if(!J||J.length===0)return"none";let z=!1,Y=!1;for(let G of J){let Z=nA(G);if(Z==="failing")return"failing";if(Z==="pending")z=!0;else if(Z==="passing")Y=!0}if(z)return"pending";if(Y)return"passing";return"unknown"}function EV(J,z){if(!J||typeof J.number!=="number")return null;return{provider:"github",lifecycle:dA(J.state,J.reviewDecision),checkState:iA(J.statusCheckRollup),number:J.number,url:J.url,title:J.title,baseRef:J.baseRefName,headRef:J.headRefName,reviewDecision:J.reviewDecision||void 0,mergeable:J.mergeable||void 0,lastCheckedAt:z}}function Oq(J,z){if(J===z)return!0;if(!J||!z)return!1;return J.provider===z.provider&&J.lifecycle===z.lifecycle&&J.checkState===z.checkState&&J.number===z.number&&J.url===z.url&&J.title===z.title&&J.baseRef===z.baseRef&&J.headRef===z.headRef&&J.reviewDecision===z.reviewDecision&&J.mergeable===z.mergeable}function Fq(J,z){return z.some((Y)=>J.includes(Y))}function d8(J){if(J.parseError)return{kind:"error",error:"parse"};if(J.timedOut)return{kind:"error",error:"timeout"};if(J.spawnError)return{kind:"error",error:"missing-binary"};let z=(J.stderr??"").toLowerCase();if(Fq(z,_A))return{kind:"empty"};if(Fq(z,lA))return{kind:"error",error:"no-remote"};if(Fq(z,$A))return{kind:"error",error:"auth"};if(Fq(z,aA))return{kind:"error",error:"network"};return{kind:"empty"}}function LX(J,z,Y,G,Z=Math.random){let X=(f)=>Y+yV(f,G.jitterRatio,Z);if(J.kind==="pr")return{nextAllowedAt:X(J.settled?G.settledMs:G.tickMs),failures:0};if(J.kind==="empty")return{nextAllowedAt:X(G.noPrMs),failures:0};if(J.error==="no-remote")return{nextAllowedAt:X(G.noRemoteMs),failures:0};let Q=z+1;return{nextAllowedAt:X(xV(G.failureBaseMs,Q-1,G.failureCapMs)),failures:Q}}var uV="number,url,title,state,baseRefName,headRefName,reviewDecision,mergeable,statusCheckRollup",lA,$A,aA,_A;var n8=k(()=>{eG();lA=["none of the git remotes","no git remote","to use github cli in a github repository","not a github repository"],$A=["gh auth login","authentication required","not logged in","http 401","bad credentials","requires authentication"],aA=["could not resolve host","no such host","dial tcp","connection refused","connection reset","network is unreachable","i/o timeout","timeout","tls handshake","http 5","rate limit","try again"],_A=["no pull requests found","no open pull requests","no pull request found"]});var i8,l8,$8,a8="DIRTY_WORKTREE",_8,p8;var r8=k(()=>{i8=class i8 extends Error{from;to;taskId;constructor(J,z,Y){super(`illegal transition for task ${Y}: ${J} -> ${z}`);this.from=J;this.to=z;this.taskId=Y;this.name="IllegalTransitionError"}};l8=class l8 extends Error{constructor(J){super(`task not found: ${J}`);this.name="TaskNotFoundError"}};$8=class $8 extends Error{constructor(){super("cannot delete a main task; remove the repo from saved repos instead");this.name="CannotDeleteMainTaskError"}};_8=class _8 extends Error{taskId;constructor(J){super(`${a8}: task ${J} worktree has uncommitted or untracked changes`);this.taskId=J;this.name="DirtyWorktreeError"}};p8=class p8 extends Error{taskId;cause;constructor(J,z){super(`failed to remove worktree for task ${J}: ${z instanceof Error?z.message:String(z)}`);this.taskId=J;this.cause=z;this.name="WorktreeRemoveFailedError"}}});var wV;var PV=k(()=>{wV=["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"]});function hV(J){let z=J.auth,Y=z.kind==="key"?{kind:"key",keyPath:z.keyPath}:{kind:"password",getPassword:()=>SQ(z.keychainRef)};return{host:J.host,user:J.user,port:J.port,auth:Y,controlPath:gQ(J.host,J.user,J.port)}}function JZ(J){let z=rz(J);if(!z)return new bQ;return new mG(hV(z))}function YY(J){for(let z of Object.values(oH()))if(J===z.basePath||J.startsWith(`${z.basePath}/`))return new mG(hV(z));return new bQ}function vV(J){return J&&l1(J)?J:void 0}function zZ(J){let z=YY(J);return z.isRemote||z.existsSync(J)}function w1(J){return YY(J).isRemote?bz():J}var Vz=k(()=>{p1();F1();dH();lH()});import{createHash as pA}from"crypto";import cV from"fs";import PJ from"path";function dV(J){if(!PJ.isAbsolute(J))throw Error(`worktreeRootFor: repo must be an absolute path, got: ${J}`);return PJ.join(qJ(),rA,JR(J))}function nV(J){if(!PJ.isAbsolute(J))throw Error(`managedWorktreeRootsFor: repo must be an absolute path, got: ${J}`);return[dV(J),...tA.map((z)=>PJ.join(J,z))]}function iV(J,z){if(!z||/[/\\\0]/.test(z))throw Error(`worktreePathFor: invalid slug: ${JSON.stringify(z)}`);return PJ.join(dV(J),z)}async function lV(J){if(l1(J)){let Y=rz(J)?.basePath;if(!Y)return[];return JZ(J).readdir(aV(Y))}let z=new Set;for(let Y of nV(J))try{for(let G of cV.readdirSync(Y,{withFileTypes:!0}))if(G.isDirectory())z.add(G.name)}catch{}return[...z]}function o8(J,z){if(!PJ.isAbsolute(J)||!PJ.isAbsolute(z))return null;let Y=mV(z);for(let G of nV(J)){let Z=mV(G),X=PJ.relative(Z,Y);if(X!==""&&!X.startsWith("..")&&!PJ.isAbsolute(X))return G}return null}function $V(J,z){return o8(J,z)!==null}function aV(J){return`${eA(J)}/.kobe/worktrees`}function _V(J,z){if(!z||/[/\\\0]/.test(z))throw Error(`remoteWorktreePathFor: invalid slug: ${JSON.stringify(z)}`);return`${aV(J)}/${z}`}function eA(J){return J.length>1&&J.endsWith("/")?J.replace(/\/+$/,""):J}function mV(J){try{return cV.realpathSync(J)}catch{return PJ.resolve(J)}}function JR(J){let Y=(PJ.basename(J)||"repo").replace(/[^a-zA-Z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"repo",G=pA("sha1").update(PJ.resolve(J)).digest("hex").slice(0,12);return`${Y}-${G}`}var rA="worktrees",oA=".kobe/worktrees",sA=".claude/worktrees",tA;var s8=k(()=>{p1();Vz();F1();tA=[oA,sA]});class t8{activeSlugs;random;pool;pendingByRepo=new Map;chain=Promise.resolve();constructor(J,z={}){this.activeSlugs=J;if(this.random=z.random??Math.random,this.pool=z.pool??wV,this.pool.length===0)throw Error("SlugAllocator: animal pool cannot be empty")}async allocate(J){let z=this.chain,Y;this.chain=new Promise((G)=>{Y=G}),await z;try{return await this.pickLocked(J)}finally{Y()}}commit(J,z){this.deletePending(J,z)}cancel(J,z){this.deletePending(J,z)}async pickLocked(J){let z=await this.occupiedSlugs(J),Y=this.pool.filter((Z)=>!z.has(Z));if(Y.length>0){let Z=Y[Math.floor(this.random()*Y.length)];return this.addPending(J,Z),Z}let G=this.pool[Math.floor(this.random()*this.pool.length)];for(let Z=2;;Z++){let X=`${G}-v${Z}`;if(!z.has(X))return this.addPending(J,X),X}}async occupiedSlugs(J){let z=new Set(this.pendingByRepo.get(J)??[]);for(let Y of this.activeSlugs(J))if(Y)z.add(Y);for(let Y of await lV(J))z.add(Y);return z}addPending(J,z){let Y=this.pendingByRepo.get(J);if(!Y)Y=new Set,this.pendingByRepo.set(J,Y);Y.add(z)}deletePending(J,z){let Y=this.pendingByRepo.get(J);if(!Y)return;if(Y.delete(z),Y.size===0)this.pendingByRepo.delete(J)}}var pV=k(()=>{PV();s8()});var oV={};f1(oV,{PLACEHOLDER_TASK_TITLE:()=>yz,Orchestrator:()=>Aq});import{realpathSync as zR}from"fs";import{basename as YR,resolve as GR}from"path";function rV(J){return rz(J)?.basePath??J}class Aq{store;worktrees;slugs;tasksAcc;setTasks;activeTaskAcc;setActiveTaskSig;unsubscribeStore;worktreeLocks=new Map;mainTaskLocks=new Map;constructor(J){this.store=J.store,this.worktrees=J.worktrees,this.slugs=new t8((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[z,Y]=a(this.store.list());this.tasksAcc=z,this.setTasks=(X)=>Y(()=>X);let[G,Z]=a(null);this.activeTaskAcc=G,this.setActiveTaskSig=(X)=>Z(()=>X),this.unsubscribeStore=this.store.subscribe((X)=>{this.setTasks(X.slice())})}async init(){}activeTaskSignal(){return this.activeTaskAcc}async setActiveTask(J){let z=J===null?null:String(J);if(this.setActiveTaskSig(z),z&&this.store.get(z))await this.store.update(z,{})}tasksSignal(){return this.tasksAcc}subscribeTasks(J){return this.store.subscribe(J)}dispose(){this.unsubscribeStore()}listTasks(){return this.store.list()}getTask(J){return this.store.get(J)}async createTask(J){if(!J.repo)throw Error("createTask: repo is required");let z=(J.title??yz).trim()||yz,Y=await this.store.create({repo:J.repo,title:z,branch:J.branch??"",worktreePath:"",status:"backlog",kind:"task",vendor:J.vendor??$1,...J.modelEffort?{modelEffort:J.modelEffort}:{}});if(J.baseRef)this.pendingBaseRefs.set(Y.id,J.baseRef);return Y}async ensureMainTask(J){let{repo:z,key:Y}=MX(J),G=this.store.list().find((Q)=>Q.kind==="main"&&MX(Q.repo).key===Y);if(G)return G;let Z=this.mainTaskLocks.get(Y);if(Z)return Z;let X=(async()=>{let Q=xJ(g1("lastSelectedVendor"),uJ());return await this.store.create({repo:z,title:ZR(z),branch:"",worktreePath:rV(z),status:"backlog",kind:"main",vendor:Q})})();this.mainTaskLocks.set(Y,X);try{return await X}finally{this.mainTaskLocks.delete(Y)}}async ensureWorktree(J){let z=this.requireTask(J);if(z.kind==="main")return rV(z.repo);if(z.worktreePath)return z.worktreePath;let Y=this.worktreeLocks.get(z.id);if(Y)return Y;let G=this.createWorktree(z);this.worktreeLocks.set(z.id,G);try{return await G}finally{this.worktreeLocks.delete(z.id)}}async createWorktree(J){let z=await this.slugs.allocate(J.repo),Y=J.branch||Qq(J.title,J.id),G=this.pendingBaseRefs.get(J.id),Z;try{Z=await this.worktrees.createForTask({repo:J.repo,slug:z,branch:Y,baseRef:G})}catch(X){throw this.slugs.cancel(J.repo,z),X}try{await this.store.update(J.id,{worktreePath:Z.path,branch:Y})}catch(X){throw await this.rollbackWorktree(Z.path),this.slugs.cancel(J.repo,z),X}return this.slugs.commit(J.repo,z),this.pendingBaseRefs.delete(J.id),Z.path}async rollbackWorktree(J){try{await this.worktrees.remove(J,{force:!0})}catch(z){console.error(`[kobe] ensureWorktree rollback failed for ${J}:`,z)}}async setTitle(J,z){let Y=z.trim();if(!Y)throw Error("setTitle: title is required (empty or whitespace-only rejected)");let G=this.requireTask(J);if(G.title===Y)return;await this.store.update(G.id,{title:Y}),await this.followBranchToTitle(G,Y)}async followBranchToTitle(J,z){if(J.kind==="main"||!J.worktreePath)return;if(J.branch!==Qq(yz,J.id))return;let Y=Qq(z,J.id);if(Y===J.branch)return;try{await this.setBranch(J.id,Y)}catch(G){console.error(`[kobe] follow-branch-to-title failed for ${J.id}:`,G)}}async setBranch(J,z){let Y=z.trim();if(!Y)throw Error("setBranch: branch is required (empty or whitespace-only rejected)");let G=this.requireTask(J);if(G.kind==="main")throw Error("setBranch: a main task tracks the repo's own branch; rename it with git directly");if(G.branch===Y)return;if(G.worktreePath)await this.worktrees.renameBranch(G.worktreePath,G.branch,Y);await this.store.update(G.id,{branch:Y})}async setVendor(J,z){let Y=this.requireTask(J);if(Y.vendor===z)return;await this.store.update(Y.id,{vendor:z})}async setPinned(J,z){let Y=this.requireTask(J);if(Y.kind==="main")return;let G=z??!Y.pinned;if((Y.pinned??!1)===G)return;await this.store.update(Y.id,{pinned:G})}async moveTask(J,z){let Y=this.requireTask(J);if(Y.kind==="main")return;let G=this.store.list().filter((Z)=>(Z.kind??"task")!=="main"&&Z.archived===Y.archived&&(Z.pinned??!1)===(Y.pinned??!1)).map((Z)=>String(Z.id));await this.store.move(Y.id,z,G)}async setArchived(J,z){let Y=this.requireTask(J);if(Y.kind==="main")return;let G=z??!Y.archived;if(Y.archived===G)return;await this.store.update(Y.id,{archived:G})}async reorderTasks(J){if(J.length===0)return;for(let z of J){if(this.requireTask(z.taskId).kind==="main")throw Error(`cannot reorder a main task: ${z.taskId}`);if(!Number.isFinite(z.position))throw Error(`position must be a finite number: ${z.taskId}`)}await this.store.reorder(J.map((z)=>({id:z.taskId,position:z.position})))}async setStatus(J,z){let Y=this.requireTask(J);if(Y.status===z)return;if(Y.status==="done"&&z==="error"||Y.status==="error"&&z==="done")throw new i8(Y.status,z,Y.id);await this.store.update(Y.id,{status:z})}async setPRStatus(J,z){let Y=this.requireTask(J);if(Oq(Y.prStatus,z??void 0))return;await this.store.update(Y.id,{prStatus:z??void 0})}async deleteTask(J,z){let Y=this.store.get(J);if(!Y)return;if(Y.kind==="main")throw new $8;let G=z?.force===!0;if(Y.worktreePath){if(!G){let Z=!1;try{Z=await this.worktrees.isDirty(Y.worktreePath)}catch{}if(Z)throw new _8(Y.id)}try{await this.worktrees.remove(Y.worktreePath,{force:G})}catch(Z){throw new p8(Y.id,Z)}}await this.store.remove(Y.id),this.pendingBaseRefs.delete(Y.id),this.worktreeLocks.delete(Y.id)}async forgetProject(J){if(!J)throw Error("forgetProject: repo is required");let z=MX(J).key;for(let Y of gJ())if(MX(Y).key===z)pH(Y);for(let Y of this.store.list()){if(Y.kind!=="main")continue;if(MX(Y.repo).key!==z)continue;await this.store.remove(Y.id),this.pendingBaseRefs.delete(Y.id),this.worktreeLocks.delete(Y.id)}}async discoverAdoptableWorktrees(J){if(!J)throw Error("discoverAdoptableWorktrees: repo is required");let z=await this.worktrees.listAll(J),Y=new Set(this.store.list().filter((G)=>G.worktreePath).map((G)=>YZ(G.worktreePath)));return z.filter((G)=>!Y.has(YZ(G.path)))}async adoptWorktree(J){if(!J.repo)throw Error("adoptWorktree: repo is required");if(!J.worktreePath)throw Error("adoptWorktree: worktreePath is required");let z=YZ(J.worktreePath),Y=this.adoptLocks.get(z);if(Y)return Y;let G=this.adoptWorktreeLocked(J,z);this.adoptLocks.set(z,G);try{return await G}finally{this.adoptLocks.delete(z)}}async adoptWorktreeLocked(J,z){let Y=this.store.list().find((f)=>f.worktreePath&&YZ(f.worktreePath)===z);if(Y){if(J.ifExists==="return")return Y;throw Error(`adoptWorktree: ${J.worktreePath} is already adopted as a task`)}let Z=(await this.worktrees.listAll(J.repo)).find((f)=>YZ(f.path)===z);if(!Z)throw Error(`adoptWorktree: ${J.worktreePath} is not an adoptable git worktree of ${J.repo} (unknown, detached, or the main checkout)`);let X=J.branch?.trim()||Z.branch,Q=(J.title??YR(Z.path)).trim()||yz;return this.store.create({repo:J.repo,title:Q,branch:X,worktreePath:Z.path,status:"backlog",kind:"task",vendor:J.vendor??$1})}pendingBaseRefs=new Map;adoptLocks=new Map;requireTask(J){let z=this.store.get(J);if(!z)throw new l8(String(J));return z}}function ZR(J){let z=J.split(/[/\\]/).filter(Boolean);return z.length>0?z[z.length-1]??J:J}function MX(J){let z=_z(J);return{repo:z,key:l1(z)?z:YZ(z)}}function YZ(J){try{return zR(J)}catch{return GR(J)}}var yz="(new task)";var FX=k(()=>{j1();n8();F1();rJ();i1();r8();pV()});function GZ(J,z,Y){if(!z)return J;let G=JZ(z);return G.ensureReady(),G.wrapCommand(J,{tty:!0,cwd:Y})}function JJ(){let J=[];for(let z of["KOBE_HOME_DIR","KOBE_DAEMON_SOCKET_PATH","KOBE_TMUX_SOCKET"]){let Y=process.env[z];if(Y&&Y.length>0)J.push(`${z}=${Z1(Y)}`)}return J.length>0?`${J.join(" ")} `:""}var OX="@kobe_remote";var BG=k(()=>{Vz();Bz()});function Rq(){return az(jG,!1)}var jG="experimental.autoStatus";var AX=k(()=>{tY()});function e8(){return az(WG,!1)}var WG="experimental.dispatcher";var gq=k(()=>{tY()});import{randomUUID as XR}from"crypto";function Kz(J){return`engineCommand.${J}`}function Uz(J){return`engineName.${J}`}function VG(J){return g1(Uz(J))?.trim()||JB[J]||J}function RX(J){return t1(J??"claude").defaultCommand}function QR(J){let z=[],Y=/"([^"]*)"|'([^']*)'|(\S+)/g;for(let G=Y.exec(J);G!==null;G=Y.exec(J))z.push(G[1]??G[2]??G[3]??"");return z}function oJ(J,z){let Y=J??"claude",G=g1(Kz(Y))?.trim(),Z=(()=>{if(G){let X=QR(G);if(X.length>0)return X}return RX(Y)})();return qR(Z,Y,z)}function qR(J,z,Y){let G=Y?.trim();if(!G)return J;let Z=z??"claude";if(!t1(Z).effortLevels?.includes(G))return J;if(Z==="codex")return[...J,"-c",`model_reasoning_effort=${G}`];return J}function ZZ(J,z){if((z??"claude")!=="claude")return{argv:J,sessionId:null};if(J.some((G)=>fR.has(G)))return{argv:J,sessionId:null};let Y=XR();return{argv:[...J,"--session-id",Y],sessionId:Y}}function KG(){let J=(z)=>/^[A-Za-z0-9_/.:=-]+$/.test(z)?z:`'${z.replace(/'/g,"'\\''")}'`;try{return[...b1(),"api"].map(J).join(" ")}catch{return"kobe api"}}function HR(J,z=KG()){return[`You are running inside kobe (a local multi-session task manager) as task ${J}.`,"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:",` ${z} set-status --task-id ${J} --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(`
|
|
36
|
-
`)}function
|
|
37
|
-
`)}function
|
|
38
|
-
|
|
39
|
-
`):null}function
|
|
40
|
-
`)}function Nq(J,z,Y,G=e8){if(!Y||!G())return J;if((z??"claude")!=="claude")return J;if(J.includes("--append-system-prompt")||J.includes("--append-system-prompt-file"))return J;return[...J,"--append-system-prompt",WR(Y)]}var JB,fR;var sJ=k(()=>{JY();kY();AX();gq();F1();i1();JB=Object.fromEntries(_Y.map((J)=>[J,t1(J).displayName]));fR=new Set(["--session-id","--resume","-r","--continue","-c","--from-pr"])});import{spawnSync as VR}from"child_process";function sV(J,z){if(J==="darwin")return"pbcopy";if(J==="linux"){for(let Y of KR)if(z(Y.binary))return Y.command;return null}return null}function eV(J){let z=[["set-option","-g","set-clipboard","on"]];if(J)for(let Y of UR)for(let G of DR)z.push(["bind-key","-T",Y,G,"send-keys","-X","copy-pipe-and-cancel",J]);return z}var KR,tV=(J)=>{try{let z=process.platform==="win32"?"where":"which";return VR(z,[J],{encoding:"utf8"}).status===0}catch{return!1}},UR,DR;var J5=k(()=>{KR=[{binary:"wl-copy",command:"wl-copy"},{binary:"xclip",command:"xclip -selection clipboard -in"},{binary:"xsel",command:"xsel --clipboard --input"}];UR=["copy-mode","copy-mode-vi"],DR=["MouseDragEnd1Pane","y","Enter"]});import{existsSync as z5,readFileSync as LR}from"fs";function Y5(){UG=null}function MR(){let J=CW();if(z5(J))return{canonical:J,found:J};let z=J.replace(/\.yaml$/,".yml");if(z5(z))return{canonical:J,found:z};return{canonical:J,found:null}}function kq(){if(UG)return UG;let{canonical:J,found:z}=MR();if(!z)return UG={path:J,exists:!1,doc:null,warnings:[]},UG;let Y=[],G=null;try{let Z=LR(z,"utf8");G=Bun.YAML.parse(Z)}catch(Z){let X=Z instanceof Error?Z.message:String(Z);Y.push(`could not read/parse ${z}: ${X}`)}return UG={path:J,exists:!0,doc:G,warnings:Y},UG}var UG=null;var zB=k(()=>{p1()});function XZ(J,z){let Y=`alternating [${J}, ${z}] pairs`;return{layout:Y,validateCount:(G)=>G>=2&&G%2===0?null:`needs ${Y} (an even number of chords \u2014 got ${G})`}}function NR(J,z){let Y=J.trim().toLowerCase();if(!Y)return{error:"empty chord"};let G=Y.split("+"),Z=G.pop()??"";if(Z===""&&G.length>0){if(Z="+",G[G.length-1]==="")G.pop()}if(!Z)return{error:`"${J}": no key after the modifiers`};let X=new Set;for(let H of G){let B=AR[H];if(!B)return{error:`"${J}": unknown modifier "${H}" (use ctrl / cmd / alt / shift)`};X.add(B)}if(Z=RR[Z]??Z,X.has("shift")&&Z.length===1&&!z?.allowShiftCharacter)return{error:`"${J}": shift+<character> can never match \u2014 terminals deliver shift+letter as a plain character, not a modifier event`};let Q=CR.filter((H)=>X.has(H)).join("+"),f=Q?`${Q}+${Z}`:Z;if(Z.length>1&&!gR.has(Z))return{chord:f,warning:`"${J}": unrecognized key name "${Z}" \u2014 the chord may never fire`};return{chord:f}}function bq(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}function kR(J){if(J==="darwin")return["darwin","macos","mac"];if(J==="win32")return["win32","windows"];return[J]}function bR(J){if(!bq(J))return null;let z=J.bindings;if(bq(z))return z;return J}function Sq(J,z,Y){let G=[];if(J===null||J===void 0)return{entries:[],warnings:G};if(!bq(J))return{entries:[],warnings:["config root must be a YAML mapping (e.g. a top-level `bindings:` key)"]};let Z=new Map,X=[];if(J.bindings!==void 0)if(bq(J.bindings))X.push(J.bindings);else G.push("`bindings:` must be a mapping of id \u2192 chord(s)");for(let Q of kR(z)){let f=J[Q];if(f===void 0)continue;let H=bR(f);if(H)X.push(H);else G.push(`\`${Q}:\` must be a mapping (or contain a \`bindings:\` mapping)`)}for(let Q of X)for(let[f,H]of Object.entries(Q)){if(H===null||H===!1||Array.isArray(H)&&H.length===0){Z.set(f,[]);continue}let B=typeof H==="string"?[H]:Array.isArray(H)?H:null;if(!B){G.push(`${f}: expected a chord string, a list of chords, or null \u2014 got ${typeof H}`);continue}let V=[],j=!1;for(let K of B){if(typeof K!=="string"){G.push(`${f}: chord entries must be strings`),j=!0;continue}let L=NR(K,Y?.chordOptsFor?.(f));if("error"in L){G.push(`${f}: ${L.error}`),j=!0;continue}if(L.warning)G.push(`${f}: ${L.warning}`);if(!V.includes(L.chord))V.push(L.chord)}if(V.length===0&&j){G.push(`${f}: no valid chords \u2014 keeping the default`);continue}Z.set(f,V)}return{entries:Array.from(Z,([Q,f])=>({id:Q,keys:f})),warnings:G}}function SR(J,z){return J===z||J==="global"||z==="global"}function G5(J,z){let Y=[],G=[];for(let Z of z){let X=J.find((j)=>j.id===Z.id);if(!X){Y.push(`${Z.id}: unknown binding id (press F1 in kobe for the full list)`);continue}let Q=YB[Z.id];if(Q){Y.push(`${Z.id}: not customizable \u2014 ${Q}`);continue}if(X.keys.length===0){Y.push(`${Z.id}: not customizable \u2014 the key is handled outside the keymap (doc-only row)`);continue}let f=FR[Z.id];if(f&&Z.keys.length>0){let j=f.validateCount(Z.keys.length);if(j){Y.push(`${Z.id}: ${j} \u2014 keeping the default`);continue}}let H=Z.keys.filter((j)=>{if(j.length===1&&OR.has(X.scope))return Y.push(`${Z.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&&Z.keys.length>0){Y.push(`${Z.id}: no chords survived validation \u2014 keeping the default`);continue}if(f&&H.length!==Z.keys.length){Y.push(`${Z.id}: a dropped chord would shift the slot layout (${f.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("/");G.push({id:Z.id,keys:H,defaultKeys:B})}for(let Z of G)for(let X of Z.keys){let Q=J.find((f)=>f.id===Z.id);if(!Q)continue;for(let f of J){if(f.id===Z.id)continue;if(!f.keys.includes(X))continue;if(!SR(Q.scope,f.scope))continue;Y.push(`${Z.id}: "${X}" also fires ${f.id} (${f.scope} scope) \u2014 last registration wins; consider a different chord`)}}return{applied:G,warnings:Y}}var YB,FR,OR,AR,RR,gR,CR;var Iq=k(()=>{YB={"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)"};FR={"sidebar.nav":XZ("down","up"),"files.nav":XZ("down","up"),"sidebar.search.nav":XZ("down","up"),"files.hierarchy":XZ("collapse","expand"),"sidebar.view":XZ("previous view","next view"),"files.tab":XZ("previous tab","next tab")},OR=new Set(["global","workspace","terminal"]),AR={ctrl:"ctrl",control:"ctrl",ctl:"ctrl",cmd:"cmd",command:"cmd",meta:"cmd",super:"cmd",win:"cmd",alt:"alt",option:"alt",opt:"alt",shift:"shift"},RR={esc:"escape",spacebar:"space",pgup:"pageup",pgdn:"pagedown",pgdown:"pagedown"},gR=new Set(["up","down","left","right","pageup","pagedown","home","end","insert","delete","backspace","tab","space","escape","enter","return",...Array.from({length:12},(J,z)=>`f${z+1}`)]),CR=["ctrl","cmd","alt","shift"]});function QZ(J){return J in Z5}function MG(J,z){let Y=J.split("+"),G=Y.pop()??"";if(G===""&&Y.length>0){if(G="+",Y[Y.length-1]==="")Y.pop()}let Z=new Set(Y);if(Z.has("cmd"))return{error:`"${J}": the Command key never reaches tmux \u2014 use ctrl/alt/shift`};let X;if(G.length===1)X=Z.has("shift")?G.toUpperCase():G;else{let H=TR[G];if(!H)return{error:`"${J}": tmux can't bind the key "${G}"`};X=H}let Q=/^f\d+$/.test(G);if(Z.size===0&&!Q&&!z?.allowBare)return{error:`"${J}": 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 f="";if(Z.has("ctrl"))f+="C-";if(Z.has("alt"))f+="M-";if(Z.has("shift"))f+="S-";return{key:f+X}}function Q5(){let J={};for(let[Y,G]of Object.entries(LG)){let Z=MG(G,{allowBare:QZ(Y)});if("error"in Z)throw Error(`default tmux chord for ${Y} failed to translate: ${Z.error}`);J[Y]={chord:G,key:Z.key}}let z=SY.map((Y)=>{let G=MG(Y);if("error"in G)throw Error(`default tmux focus chord ${Y} failed to translate`);return{chord:Y,key:G.key}});return{binds:J,focus:z,overridden:new Set,warnings:[]}}function GB(J){let z=Q5(),Y=new Set;for(let G of J){if(!G.id.startsWith("tmux."))continue;if(G.id===xz){if(G.keys.length===0){z.focus=[null,null,null,null],Y.add(xz);continue}if(G.keys.length!==SY.length){z.warnings.push(`${xz}: needs exactly 4 chords in order left/down/up/right (got ${G.keys.length}) \u2014 keeping the default`);continue}let f=[],H=!0;for(let B of G.keys){let V=MG(B);if("error"in V){z.warnings.push(`${xz}: ${V.error} \u2014 keeping the default`),H=!1;break}f.push({chord:B,key:V.key})}if(!H)continue;z.focus=f,Y.add(xz);continue}if(!(G.id in LG)){z.warnings.push(`${G.id}: unknown tmux binding id`);continue}let Z=G.id;if(G.keys.length===0){z.binds[Z]=null,Y.add(Z);continue}if(G.keys.length>1)z.warnings.push(`${Z}: tmux bindings take ONE chord \u2014 using "${G.keys[0]}", ignoring the rest`);let X=G.keys[0],Q=MG(X,{allowBare:QZ(Z)});if("error"in Q){z.warnings.push(`${Z}: ${Q.error} \u2014 keeping the default`);continue}if(X!==LG[Z])Y.add(Z);z.binds[Z]={chord:X,key:Q.key}}return z.overridden=Y,z}function ZB(J){return J.startsWith("tmux.")?{allowShiftCharacter:!0}:{}}function q5(){DG=null}function Tq(){if(DG)return DG;let J=kq();if(!J.exists||J.doc===null)return DG=Q5(),DG;let z=Sq(J.doc,process.platform,{chordOptsFor:ZB}),Y=z.warnings.filter((Z)=>Z.startsWith("tmux.")),G=GB(z.entries);G.warnings=[...Y,...G.warnings];for(let Z of G.warnings)console.warn(`[kobe/keybindings] ${Z}`);return DG=G,DG}var IR,Z5,X5,LG,xz="tmux.focus",SY,TR,DG=null;var yq=k(()=>{zB();Iq();IR={"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"},Z5={"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"},X5=["F6","F7","F8","F9","F10","F11"],LG={...IR,...Z5};SY=["ctrl+h","ctrl+j","ctrl+k","ctrl+l"],TR={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},(J,z)=>[`f${z+1}`,`F${z+1}`]))}});async function gX(J,z){let Y=null;for(let Z=0;Z<24;Z++){let X=await qZ(J);if(X){if(!z)return{pane:X,ready:!0};let Q=(await fZ(X)).trim();if(Q.length>0&&Q===Y)return{pane:X,ready:!0};Y=Q}await f5(250)}return{pane:await qZ(J)||await XB(J),ready:!1}}async function CX(J,z){let Y=`kobe-api-${J.replace(/[^A-Za-z0-9]/g,"")}`;await l0(["set-buffer","-b",Y,"--",z]),await l0(["paste-buffer","-p","-d","-b",Y,"-t",J]),await f5(yR),await NX(J,"Enter")}async function H5(J,z){let{pane:Y}=await gX(J,!0);if(!Y)return;await CX(Y,z.text)}var f5=(J)=>new Promise((z)=>setTimeout(z,J)),yR=150;var xq=k(()=>{P1()});function B5(J,z){if(J===null)return{kind:"create",reason:"no session with this name \u2014 build fresh"};let Y=J.worktree===z.cwd,G=!z.vendor||J.vendor===z.vendor;if(J.claudePaneAlive&&Y&&G)return{kind:"reuse",reason:"healthy: engine pane alive, worktree + vendor match"};if(Y&&!G&&z.hasEngineCommand)return{kind:"respawn-engine",reason:`vendor drift: session tagged ${J.vendor===""?"<untagged>":`"${J.vendor}"`}, task wants "${z.vendor}" \u2014 relaunch engine pane in place (KOB-232)`};if(Y&&G&&J.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:J.worktree===""?"legacy session with no @kobe_worktree tag \u2014 rebuild in the right place":`worktree drift: session tagged "${J.worktree}", task wants "${z.cwd}" \u2014 rebuild`};if(!G)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 HZ;var uq=k(()=>{HZ={$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 BZ;var Eq=k(()=>{BZ={$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 jZ;var wq=k(()=>{jZ={$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 WZ;var Pq=k(()=>{WZ={$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 VZ;var hq=k(()=>{VZ={$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 KZ;var vq=k(()=>{KZ={$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 UZ;var mq=k(()=>{UZ={$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"}}}});var j5;var W5=k(()=>{uq();Eq();wq();Pq();hq();vq();mq();j5={claude:HZ,conductor:BZ,nord:WZ,opencode:VZ,dracula:jZ,tokyonight:UZ,"osaka-jade":KZ}});function mR(J){let z=/^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/.exec(J);if(!z)return null;let Y=z[1];if(Y.length===3){let[G,Z,X]=Y;return`#${G}${G}${Z}${Z}${X}${X}`.toLowerCase()}return`#${Y.slice(0,6)}`.toLowerCase()}function V5(J,z,Y="dark"){let G=J.defs??{};function Z(Q,f){if(typeof Q==="string"){if(Q==="transparent"||Q==="none")return null;if(Q.startsWith("#"))return mR(Q);if(f.includes(Q))return null;let B=G[Q]??J.theme[Q];if(B===void 0)return null;return Z(B,[...f,Q])}if(!Q||typeof Q!=="object")return null;let H=Q[Y];return typeof H==="string"?Z(H,f):null}let X=J.theme[z];if(X===void 0)return null;return Z(X,[z])}function cq(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}function dq(J){if(!cq(J))return{ok:!1,reason:"theme must be a JSON object at the top level"};let z=J;if(!("theme"in z))return{ok:!1,reason:"missing required key `theme`"};let Y=z.theme;if(!cq(Y))return{ok:!1,reason:"`theme` must be an object map"};if("defs"in z&&z.defs!==void 0){if(!cq(z.defs))return{ok:!1,reason:"`defs` must be an object map"};for(let[G,Z]of Object.entries(z.defs))if(typeof Z!=="string")return{ok:!1,reason:`defs.${G} must be a string (hex like "#abc" or a ref name)`}}for(let[G,Z]of Object.entries(Y)){if(typeof Z==="string")continue;if(!cq(Z))return{ok:!1,reason:`theme.${G} must be a string or a { dark, light } object (got ${Z===null?"null":Array.isArray(Z)?"array":typeof Z})`};let X=Z;if(typeof X.dark!=="string")return{ok:!1,reason:`theme.${G}.dark must be a string`};if(typeof X.light!=="string")return{ok:!1,reason:`theme.${G}.light must be a string`}}if("$schema"in z&&z.$schema!==void 0&&typeof z.$schema!=="string")return{ok:!1,reason:"`$schema` must be a string when present"};return{ok:!0,theme:z}}var QB=()=>{};import{readFileSync as cR,readdirSync as dR}from"fs";import{join as K5}from"path";function DZ(){return K5(qJ(),"themes")}function kX(){let J=DZ(),z;try{z=dR(J)}catch{return[]}let Y=[];for(let G of z){if(!G.endsWith(".json"))continue;let Z=K5(J,G),X;try{let H=cR(Z,"utf8");X=JSON.parse(H)}catch(H){let B=H instanceof Error?H.message:String(H);console.warn(`[kobe] skipping user theme ${Z}: invalid JSON \u2014 ${B}`);continue}let Q=dq(X);if(!Q.ok){console.warn(`[kobe] skipping user theme ${Z}: ${Q.reason}`);continue}let f=G.slice(0,-5);Y.push({name:f,theme:Q.theme})}return Y}var nq=k(()=>{p1();QB()});import{readFileSync as nR}from"fs";function lR(){try{let J=JSON.parse(nR(lJ(),"utf8")),z=typeof J.activeTheme==="string"&&J.activeTheme?J.activeTheme:"claude",Y=typeof J.focusAccent==="string"&&iR.includes(J.focusAccent)?J.focusAccent:"primary";return{themeName:z,focusAccentSlot:Y,enabled:J.tmuxChromeTheme!=="off"&&J.tmuxBorderTheme!=="off"}}catch{return{themeName:"claude",focusAccentSlot:"primary",enabled:!0}}}function $R(J){return kX().find((Y)=>Y.name===J)?.theme??j5[J]??null}function Dz(J,...z){for(let Y of z){let G=V5(J,Y);if(G)return G}return null}function U5(J,z){let Y=Dz(J,"text"),G=Dz(J,"background"),Z=Dz(J,"textMuted","text"),X=Dz(J,"backgroundPanel","background"),Q=Dz(J,"backgroundElement","backgroundPanel","background"),f=Dz(J,"backgroundMenu","backgroundElement","backgroundPanel","background"),H=Dz(J,"selectedListItemText","background"),B=Dz(J,z,"primary","borderActive","border","text");return{border:Dz(J,"border","text"),activeBorder:B,statusBg:X,statusFg:Z,statusMutedFg:Z,windowFg:Z,currentWindowBg:Q,currentWindowFg:B,activityFg:Dz(J,"info","primary","text"),bellFg:Dz(J,"warning","error","primary","text"),messageBg:f,messageFg:Y,messageCommandFg:B,modeBg:B,modeFg:H??G}}function tJ(J){let z=[];if(J.bg)z.push(`bg=${J.bg}`);if(J.fg)z.push(`fg=${J.fg}`);if(z.length===0)return null;if(J.attrs)z.push(...J.attrs);return z.join(",")}function L5(J){let z=tJ({bg:J.statusBg,fg:J.statusFg}),Y=tJ({bg:J.statusBg,fg:J.statusMutedFg}),G=tJ({bg:J.statusBg,fg:J.windowFg});return[{key:"border",option:"pane-border-style",showFlag:"-gwqv",setFlag:"-gw",unsetFlag:"-gwu",value:tJ({fg:J.border})},{key:"active",option:"pane-active-border-style",showFlag:"-gwqv",setFlag:"-gw",unsetFlag:"-gwu",value:tJ({fg:J.activeBorder})},{key:"status",option:"status-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:z},{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:G},{key:"current-window",option:"window-status-current-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:tJ({bg:J.currentWindowBg,fg:J.currentWindowFg,attrs:["bold"]})},{key:"activity-window",option:"window-status-activity-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:tJ({bg:J.statusBg,fg:J.activityFg})},{key:"bell-window",option:"window-status-bell-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:tJ({bg:J.statusBg,fg:J.bellFg,attrs:["bold"]})},{key:"last-window",option:"window-status-last-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:tJ({bg:J.statusBg,fg:J.statusFg})},{key:"message",option:"message-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:tJ({bg:J.messageBg,fg:J.messageFg})},{key:"message-command",option:"message-command-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:tJ({bg:J.messageBg,fg:J.messageCommandFg,attrs:["bold"]})},{key:"mode",option:"mode-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:tJ({bg:J.modeBg,fg:J.modeFg})},{key:"display-panes",option:"display-panes-colour",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:J.border},{key:"display-panes-active",option:"display-panes-active-colour",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:J.activeBorder}]}function aR(J){let z=new Set(J.marker.split(",").map((X)=>X.trim()).filter(Boolean)),Y=[],G=[];for(let X of L5(J.hexes))if(X.value){if((J.current[X.key]??"")!==X.value)Y.push(["set-option",X.setFlag,X.option,X.value]);G.push(X.key)}else if(z.has(X.key))Y.push(["set-option",X.unsetFlag,X.option]);let Z=G.join(",");if(Z!==J.marker)Y.push(Z?["set-option","-g",qB,Z]:["set-option","-gu",qB]);return Y}async function D5(J){let{code:z,stdout:Y}=await $0(J);return z===0?Y.trim():""}async function FG(){try{let J=lR(),z=J.enabled?$R(J.themeName):null,Y=z?U5(z,J.focusAccentSlot):U5({theme:{}},J.focusAccentSlot),G=L5(Y),[Z,...X]=await Promise.all([D5(["show-options","-gqv",qB]),...G.map((H)=>D5(["show-options",H.showFlag,H.option]))]),Q=Object.fromEntries(G.map((H,B)=>[H.key,X[B]??""])),f=aR({marker:Z,current:Q,hexes:Y});if(f.length>0)await d1(f)}catch{}}var qB="@kobe_border_theme",iR;var iq=k(()=>{p1();P1();W5();nq();iR=["primary","success","info"]});function M5(){return az(lq,!0)}function $q(){return az(F5,!1)}function O5(J){PW(F5,J)}var lq="zen.keepTasks",F5="zen.active";var fB=k(()=>{tY()});var aq={};f1(aq,{recordGen:()=>IY,isLatestGen:()=>N5,genAgeMs:()=>eR,coalesceLayoutWork:()=>Jg,RESIZE_GUARD_MS:()=>tR,LAYOUT_COALESCE_MS:()=>g5});import{createHash as _R,randomUUID as pR}from"crypto";import{mkdirSync as rR,readFileSync as A5,renameSync as oR,writeFileSync as sR}from"fs";import{join as R5}from"path";function C5(){return R5(qJ(),"layout-coord")}function HB(J,z){let Y=_R("sha1").update(J).digest("hex").slice(0,16);return R5(C5(),`${Y}.${z}`)}function IY(J,z){let Y=pR();try{rR(C5(),{recursive:!0});let G=HB(J,z),Z=`${G}.${Y}.tmp`;sR(Z,`${Date.now()}
|
|
41
|
-
${Y}`),
|
|
42
|
-
`)[1]?.trim()===Y}catch{return!0}}function
|
|
43
|
-
`)[0]??"",10);return Number.isFinite(
|
|
44
|
-
`)){let
|
|
45
|
-
`).map((B)=>B.split("\t")).filter((B)=>(B[0]?.trim()??"")!=="");if(
|
|
46
|
-
`).map((
|
|
47
|
-
`)){let
|
|
48
|
-
`)){let[
|
|
49
|
-
`).map((
|
|
50
|
-
`).some((
|
|
51
|
-
`).map((
|
|
52
|
-
`).filter((
|
|
53
|
-
`).map((f)=>f.trim()).filter(Boolean).map((f)=>f.split("=",2)));if(await
|
|
54
|
-
`)){let[
|
|
55
|
-
`)){let[Q,f,H,B,V]=
|
|
56
|
-
`)){let[f,H]=Q.split("\t");if(f?.trim()&&H?.trim()===z)return f.trim()}return""}async function
|
|
57
|
-
`).filter((
|
|
58
|
-
`)){let Q=
|
|
59
|
-
`)){let X
|
|
60
|
-
`)){let[f,H]=Q.split("\t");if(!f)continue;if(!
|
|
61
|
-
`)){let[Q,f,H]=
|
|
62
|
-
`}function
|
|
63
|
-
`}function
|
|
64
|
-
`}function hz(J,z){process.stderr.write(pg(J,z))}function FK(J=(z)=>process.stderr.write(z)){if(uB||EB)return;uB=(z)=>J(LK("unhandledRejection",z)),EB=(z)=>J(LK("uncaughtException",z)),process.on("unhandledRejection",uB),process.on("uncaughtException",EB)}var uB,EB;async function rg(J,z=pG){let Y=[];for(let G of J.listTasks()){if(G.archived||G.title!==yz||!G.worktreePath)continue;try{let Z=await z(G.worktreePath,G.vendor??$1);if(!Z)continue;let X=J.getTask(G.id);if(!X||X.title!==yz)continue;await J.setTitle(G.id,Z),Y.push({id:G.id,title:Z})}catch(Z){T1("auto-title-poller",Z)}}return Y}function OK(J,z=wB,Y){if(z<=0)return()=>{};let G=!1,X=setInterval(()=>{if(Y&&!Y())return;if(G)return;G=!0,rg(J).then(()=>UK(J)).catch((Q)=>T1("auto-title-poller",Q)).finally(()=>{G=!1})},z);return X.unref?.(),()=>clearInterval(X)}var wB=4000;var AK=k(()=>{qq();FX();DK();rJ()});class PB{socket;highWaterMark;queue=[];queuedBytes=0;paused=!1;draining=!1;droppedFrames=0;constructor(J,z={}){this.socket=J,this.highWaterMark=z.highWaterMark??8388608}get isPaused(){return this.paused}get pendingBytes(){return this.queuedBytes}get pendingCount(){return this.queue.length}get dropped(){return this.droppedFrames}write(J,z){if(!this.paused){if(this.safeWrite(J))return;this.pause();return}this.enqueue({line:J,bytes:Buffer.byteLength(J),critical:z})}enqueue(J){if(this.queue.push(J),this.queuedBytes+=J.bytes,this.queuedBytes<=this.highWaterMark)return;let z=[];for(let Y of this.queue){if(this.queuedBytes>this.highWaterMark&&!Y.critical){this.queuedBytes-=Y.bytes,this.droppedFrames++;continue}z.push(Y)}this.queue=z}pause(){if(this.draining)return;this.paused=!0,this.draining=!0,this.socket.once("drain",()=>{this.draining=!1,this.paused=!1,this.flush()})}flush(){while(this.queue.length>0){let J=this.queue[0],z=this.safeWrite(J.line);if(this.queue.shift(),this.queuedBytes-=J.bytes,!z){this.pause();return}}}safeWrite(J){try{return this.socket.write(J)}catch{return!0}}}class hB{last=new Map;sinks=new Set;publish(J,z){this.last.set(J,z);let Y={channel:J,payload:z};for(let G of this.sinks)G(Y)}snapshot(){return[...this.last].map(([J,z])=>({channel:J,payload:z}))}onPublish(J){return this.sinks.add(J),()=>{this.sinks.delete(J)}}}async function RK(J,z,Y=Rq){if(!Y())return"skipped";let G=J.getTask(z);if(!G)return"skipped";if((G.kind??"task")==="main"||G.archived)return"skipped";if(G.status!=="backlog")return"skipped";return await J.setStatus(z,"in_progress"),"moved"}var gK=k(()=>{AX()});import{createHash as og}from"crypto";import{homedir as sg}from"os";import EY from"path";function YC(){return EY.join(process.env.KOBE_HOME_DIR??sg(),".kobe")}function GC(J){let Y=(EY.basename(J)||"repo").replace(/[^a-zA-Z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"repo",G=og("sha1").update(EY.resolve(J)).digest("hex").slice(0,12);return`${Y}-${G}`}function ZC(J){if(!EY.isAbsolute(J))throw Error(`worktreeRootFor: repo must be an absolute path, got: ${J}`);return EY.join(YC(),tg,GC(J))}function XC(J){if(!EY.isAbsolute(J))throw Error(`managedWorktreeRootsFor: repo must be an absolute path, got: ${J}`);return[ZC(J),...zC.map((z)=>EY.join(J,z))]}function uY(J){return J.length>1&&J.endsWith("/")?J.slice(0,-1):J}function CK(J,z){return z===J||z.startsWith(`${J}/`)}function NK(J,z){let Y=uY(z),G,Z=-1;for(let X of J){if(!X.worktreePath)continue;let Q=uY(X.worktreePath);if(CK(Q,Y)&&Q.length>Z)Z=Q.length,G=X.id}return G}function vB(J,z){let Y=uY(z),G,Z=-1;for(let X of J){if(!X.repo)continue;let Q=uY(X.repo);if(CK(Q,Y)&&Q.length>Z)Z=Q.length,G=Q}return G}function kK(J,z){let Y=uY(z),G=new Set,Z=new Set;for(let X of J){if(X.repo)G.add(uY(X.repo));if(X.worktreePath)Z.add(uY(X.worktreePath))}for(let X of G)for(let Q of XC(X).map(uY)){let f=`${Q}/`;if(!Y.startsWith(f))continue;let B=Y.slice(f.length).split("/")[0];if(!B)continue;let V=`${f}${B}`;if(Z.has(V))return;return{repo:X,worktreePath:V}}return}var tg="worktrees",eg=".kobe/worktrees",JC=".claude/worktrees",zC;var bK=k(()=>{zC=[eg,JC]});function dB(J){return{message:J instanceof Error?J.message:String(J),name:J instanceof Error?J.name:void 0}}async function uX(J,z,Y,G){let Z=J.get(z);if(!Z)throw Error(`unknown daemon request: ${z}`);return Z.handle(nB(Y),G)}function EX(){return new Map([{name:"hello",handle(z,Y){let G=typeof z.protocolVersion==="number"?z.protocolVersion:$J,Z=typeof z.minProtocolVersion==="number"?z.minProtocolVersion:G;if(!yQ({localVersion:$J,localMin:FY,remoteVersion:G,remoteMin:Z}))throw Error(`daemon is protocol v${$J} (min v${FY}); this client is v${G} (min v${Z}). Upgrade your kobe.`);return{protocolVersion:$J,minProtocolVersion:FY,kobeVersion:p0,capabilities:[...tH],daemonPid:Y.daemon.pid,clientId:Y.clientId,tasks:Y.orch.listTasks().map(Qz)}}},{name:"daemon.status",handle(z,Y){return{daemonPid:Y.daemon.pid,kobeVersion:p0,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(z,Y){return await Y.daemon.stopSoon(),{}}},{name:"task.list",handle(z,Y){return{tasks:Y.orch.listTasks().map(Qz)}}},{name:"task.get",handle(z,Y){let G=O1(z,"taskId"),Z=Y.orch.getTask(G);if(!Z)throw Error(`task not found: ${G}`);return{task:Qz(Z)}}},{name:"task.create",async handle(z,Y){let G=O1(z,"repo"),Z=await Y.orch.createTask({repo:G,title:Jz(z,"title"),branch:Jz(z,"branch"),baseRef:Jz(z,"baseRef"),vendor:cB(z,"vendor"),modelEffort:Jz(z,"effort")});return{taskId:Z.id,task:Qz(Z)}}},{name:"task.archive",async handle(z,Y){let G=O1(z,"taskId");return await Y.orch.setArchived(G,mB(z,"archived")),{}}},{name:"task.rename",async handle(z,Y){let G=O1(z,"taskId");return await Y.orch.setTitle(G,O1(z,"title")),{}}},{name:"task.setBranch",async handle(z,Y){let G=O1(z,"taskId");return await Y.orch.setBranch(G,O1(z,"branch")),{}}},{name:"task.setVendor",async handle(z,Y){let G=O1(z,"taskId"),Z=cB(z,"vendor");if(!Z)throw Error("task.setVendor: vendor is required");return await Y.orch.setVendor(G,Z),{}}},{name:"task.delete",async handle(z,Y){let G=O1(z,"taskId");return await Y.orch.deleteTask(G,{force:mB(z,"force")}),Y.activity.clearTask(G),{}}},{name:"task.pin",async handle(z,Y){let G=O1(z,"taskId");return await Y.orch.setPinned(G,mB(z,"pinned")),{}}},{name:"task.move",async handle(z,Y){let G=O1(z,"taskId"),Z=O1(z,"direction");if(Z!=="up"&&Z!=="down")throw Error("direction must be up or down");return await Y.orch.moveTask(G,Z==="up"?-1:1),{}}},{name:"task.status",async handle(z,Y){let G=O1(z,"taskId"),Z=O1(z,"status");if(!fV(Z))throw Error("status must be a TaskStatus");let X=Z==="done"?Y.orch.getTask(G):void 0,Q=X?.status;if(await Y.orch.setStatus(G,Z),Z==="done"&&Q!=="done"&&X)try{let f=await Y.issues.mirrorTaskDone(X.repo,G);if(f)Y.bus.publish("issue.snapshot",f)}catch(f){T1("issue-done-mirror",f)}return{}}},{name:"task.reorder",async handle(z,Y){let G=z.moves;if(!Array.isArray(G)||G.length===0)throw Error("moves must be a non-empty array");if(G.length>500)throw Error("too many moves in one task.reorder batch (max 500)");let Z=G.map((X)=>{if(typeof X!=="object"||X===null)throw Error("each move needs taskId and position");let Q=X,f=O1(Q,"taskId"),H=Q.position;if(typeof H!=="number"||!Number.isFinite(H))throw Error("position must be a finite number");return{taskId:f,position:H}});return await Y.orch.reorderTasks(Z),{}}},{name:"task.ensureMain",async handle(z,Y){let G=O1(z,"repo"),Z=await Y.orch.ensureMainTask(G);return{task:Qz(Z)}}},{name:"project.forget",async handle(z,Y){let G=O1(z,"repo");return await Y.orch.forgetProject(G),{}}},{name:"task.ensureWorktree",async handle(z,Y){let G=O1(z,"taskId");Y.bus.publish("task.jobs",{taskId:G,kind:"ensureWorktree",phase:"running"});try{let Z=await Y.orch.ensureWorktree(G);return Y.bus.publish("task.jobs",{taskId:G,kind:"ensureWorktree",phase:"done"}),{worktreePath:Z}}catch(Z){throw Y.bus.publish("task.jobs",{taskId:G,kind:"ensureWorktree",phase:"error",error:Z instanceof Error?Z.message:String(Z)}),Z}}},{name:"worktree.discoverAdoptable",async handle(z,Y){let G=O1(z,"repo");return{worktrees:await Y.orch.discoverAdoptableWorktrees(G)}}},{name:"worktree.adopt",async handle(z,Y){let G=await Y.orch.adoptWorktree({repo:O1(z,"repo"),worktreePath:O1(z,"worktreePath"),branch:Jz(z,"branch"),vendor:cB(z,"vendor"),title:Jz(z,"title"),ifExists:Jz(z,"ifExists")==="return"?"return":"error"});return{task:Qz(G)}}},{name:"worktree.reconcile",async handle(z,Y){let G=O1(z,"cwd"),Z=O1(z,"worktreePath"),X=vB(Y.orch.listTasks(),G)??vB(Y.orch.listTasks(),Z);if(!X)return{adopted:!1};try{return{adopted:!0,taskId:(await Y.orch.adoptWorktree({repo:X,worktreePath:Z,ifExists:"return"})).id}}catch(Q){return T1("worktree-created",Q),{adopted:!1}}}},{name:"task.setActive",async handle(z,Y){let G=Jz(z,"taskId")??null;return await Y.orch.setActiveTask(G),Y.bus.publish("active-task",{taskId:G}),{}}},{name:"issue.list",async handle(z,Y){return Y.issues.list(O1(z,"repoRoot"))}},{name:"issue.mutate",async handle(z,Y){let G=await Y.issues.mutate(O1(z,"repoRoot"),z.op);return Y.bus.publish("issue.snapshot",G),G}},{name:"session.deliver",async handle(z,Y){let G=O1(z,"taskId"),Z=O1(z,"text"),X=Jz(z,"source");if(X!==void 0&&X!=="note"&&X!=="dispatcher")throw Error('source must be "note" or "dispatcher"');if(!Y.orch.getTask(G))throw Error(`task not found: ${G}`);return Y.bus.publish("session.deliver",{taskId:G,text:Z,at:Date.now(),source:X??"dispatcher"}),{ok:!0}}},{name:"note.file",async handle(z,Y){let G=O1(z,"taskId"),Z=O1(z,"text"),X=Y.orch.getTask(G);if(!X)throw Error(`task not found: ${G}`);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 f=X.title||X.branch||G;return Y.bus.publish("session.deliver",{taskId:Q.id,text:`[KOBE FIELD NOTE] from "${f}" (task ${G}): ${Z}`,at:Date.now(),source:"note"}),{ok:!0,routed:!0}}},{name:"engine.reportEvent",async handle(z,Y){let G=O1(z,"kind");if(!Zq(G))throw Error(`unknown engine event kind: ${G}`);let Z=Jz(z,"taskId"),X=Jz(z,"cwd");if(!Z&&X&&G==="session-start"){let H=kK(Y.orch.listTasks(),X);if(H)try{await Y.orch.adoptWorktree({repo:H.repo,worktreePath:H.worktreePath,ifExists:"return"})}catch(B){T1("worktree-autosync",B)}}let Q=Z??(X?NK(Y.orch.listTasks(),X):void 0);if(!Q)return{};let f=QC(z);if(Y.activity.report(Q,G,f),G==="turn-start")RK(Y.orch,Q).then((H)=>{if(H==="moved")console.log(`[status-rules] task ${Q} auto-moved backlog \u2192 in_progress`)}).catch((H)=>T1("status-rules",H));return{}}}].map((z)=>[z.name,z]))}function nB(J){if(!J||typeof J!=="object"||Array.isArray(J))return{};return J}function O1(J,z){let Y=J[z];if(typeof Y!=="string"||Y.length===0)throw Error(`${z} is required`);return Y}function Jz(J,z){let Y=J[z];if(Y===void 0||Y===null||Y==="")return;if(typeof Y!=="string")throw Error(`${z} must be a string`);return Y}function mB(J,z){let Y=J[z];if(Y===void 0||Y===null)return;if(typeof Y!=="boolean")throw Error(`${z} must be a boolean`);return Y}function cB(J,z){let Y=Jz(J,z);return Y&&Y.trim().length>0?Y:void 0}function QC(J){let z=J.detail;if(!z||typeof z!=="object"||Array.isArray(z))return;let Y=z,G={};if(Y.failure==="rate_limit"||Y.failure==="billing"||Y.failure==="other")G.failure=Y.failure;if(Y.waiting==="permission"||Y.waiting==="input")G.waiting=Y.waiting;if(typeof Y.note==="string")G.note=Y.note;return Object.keys(G).length>0?G:void 0}var Vf=k(()=>{Xq();gK();rJ();MJ();bK();eY()});import{execFile as qC}from"child_process";import{mkdir as fC,readFile as HC,realpath as SK,rename as BC,stat as jC,writeFile as WC}from"fs/promises";import{homedir as VC}from"os";import{dirname as KC,isAbsolute as UC,join as DC,resolve as IK}from"path";import{promisify as LC}from"util";function MC(J){return(J instanceof Error?J.message:String(J)).includes("not a git repository")}function Uf(J=process.env.KOBE_HOME_DIR??VC()){return DC(J,".kobe","issues.json")}function yK(J){return typeof J==="string"&&TK.includes(J)}function FC(J){if(J===null||typeof J!=="object"||Array.isArray(J))return null;let z=J;if(typeof z.id!=="number")return null;return{id:z.id,title:typeof z.title==="string"?z.title:"(untitled)",status:yK(z.status)?z.status:"open",created:typeof z.created==="string"?z.created:"",body:typeof z.body==="string"?z.body:"",taskId:typeof z.taskId==="string"?z.taskId:void 0}}function OC(){return{version:1,repos:{}}}function AC(){let J=new Date,z=String(J.getMonth()+1).padStart(2,"0"),Y=String(J.getDate()).padStart(2,"0");return`${J.getFullYear()}-${z}-${Y}`}async function RC(J){let{stdout:z}=await pB("git",["-C",J,"rev-parse","--git-common-dir"]),Y=z.trim();return SK(UC(Y)?Y:IK(J,Y))}async function gC(J){let{stdout:z}=await pB("git",["-C",J,"rev-parse","--show-toplevel"]);return z.trim()}async function CC(J){let{stdout:z}=await pB("git",["-C",J,"worktree","list","--porcelain"]),Y=z.split(/\r?\n/).find((G)=>G.startsWith("worktree "))?.slice(9).trim();return Y?SK(Y):gC(J)}async function iB(J){if(typeof J!=="string"||J.length===0)throw Error("repoRoot is required");let z=IK(J);if(!(await jC(z).catch(()=>null))?.isDirectory())throw Error("repoRoot does not exist");try{let[G,Z]=await Promise.all([CC(z),RC(z)]);return{repoRoot:G,repoKey:Z}}catch(G){if(MC(G))throw Error("repoRoot is not a git repository");throw G}}async function lB(J){try{let z=JSON.parse(await HC(J,"utf8")),Y={};if(z.repos&&typeof z.repos==="object")for(let[G,Z]of Object.entries(z.repos)){if(!Z||typeof Z!=="object")continue;let X=Z;Y[G]={repoRoot:typeof X.repoRoot==="string"?X.repoRoot:"",nextId:typeof X.nextId==="number"?X.nextId:1,issues:Array.isArray(X.issues)?X.issues.map(FC).filter((Q)=>Q!==null):[]}}return{version:1,repos:Y}}catch(z){if(z.code==="ENOENT")return OC();throw z}}async function $B(J,z){await fC(KC(J),{recursive:!0});let Y=`${J}.tmp`;await WC(Y,`${JSON.stringify(z,null,2)}
|
|
65
|
-
`,"utf8"),await BC(Y,J)}function aB(J,z){return{repoRoot:J,exists:z!==null,nextId:z?.nextId??1,issues:z?.issues??[]}}async function _B(J,z){let G=(Kf.get(J)??Promise.resolve()).then(z),Z=G.then(()=>{return},()=>{return});return Kf.set(J,Z),Z.then(()=>{if(Kf.get(J)===Z)Kf.delete(J)}),G}class Df{path;constructor(J=Uf()){this.path=J}async list(J){let{repoRoot:z,repoKey:Y}=await iB(J);return _B(this.path,async()=>{let G=await lB(this.path),Z=G.repos[Y]??null;if(Z&&Z.repoRoot!==z)Z.repoRoot=z,await $B(this.path,G);return aB(z,Z)})}async mirrorTaskDone(J,z){let{repoRoot:Y,repoKey:G}=await iB(J);if(!z)return null;return _B(this.path,async()=>{let Z=await lB(this.path),X=Z.repos[G];if(!X)return null;let Q=X.issues.find((f)=>f.taskId===z);if(!Q||Q.status==="done")return null;return Q.status="done",X.repoRoot=Y,await $B(this.path,Z),aB(Y,X)})}async mutate(J,z){let{repoRoot:Y,repoKey:G}=await iB(J);if(!z||typeof z!=="object"||Array.isArray(z)||typeof z.type!=="string")throw Error("missing op");return _B(this.path,async()=>{let Z=await lB(this.path),X=Z.repos[G];if(!X)X={repoRoot:Y,nextId:1,issues:[]},Z.repos[G]=X;X.repoRoot=Y;let Q=z;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:AC(),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(!yK(Q.status))throw Error(`invalid status: must be one of ${TK.join(", ")}`);let f=X.issues.find((H)=>H.id===Q.id);if(!f)throw Error(`no issue #${Q.id}`);f.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 f=X.issues.find((H)=>H.id===Q.id);if(!f)throw Error(`no issue #${Q.id}`);if(typeof Q.title==="string")f.title=Q.title;if(typeof Q.body==="string")f.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 f=X.issues.find((H)=>H.id===Q.id);if(!f)throw Error(`no issue #${Q.id}`);f.taskId=Q.taskId}else if(Q.type==="unlink"){if(typeof Q.id!=="number")throw Error("unlink requires a numeric id");let f=X.issues.find((H)=>H.id===Q.id);if(!f)throw Error(`no issue #${Q.id}`);f.taskId=void 0}else if(Q.type==="delete"){if(typeof Q.id!=="number")throw Error("delete requires a numeric id");let f=X.issues.filter((H)=>H.id!==Q.id);if(f.length===X.issues.length)throw Error(`no issue #${Q.id}`);X.issues=f}else throw Error(`unknown op type: ${Q.type}`);return await $B(this.path,Z),aB(Y,X)})}}var pB,TK,Kf;var rB=k(()=>{pB=LC(qC),TK=["open","doing","hold","done"];Kf=new Map});import{lstat as xK,readdir as NC,realpath as kC,stat as bC}from"fs/promises";import{join as SC,relative as IC,resolve as uK,sep as TC}from"path";import{Readable as yC}from"stream";function vK(J,z={}){let Y=z.entryType||z.type;if(Y==="both")Y=mJ.FILE_DIR_TYPE;if(Y)z.type=Y;if(!J)throw Error("readdirp: root argument is required. Usage: readdirp(root, options)");else if(typeof J!=="string")throw TypeError("readdirp: root argument must be a string. Usage: readdirp(root, options)");else if(Y&&!EK.includes(Y))throw Error(`readdirp: Invalid type passed. Use one of ${EK.join(", ")}`);return z.root=J,new sB(z)}var mJ,oB,hK="READDIRP_RECURSIVE_ERROR",xC,EK,uC,EC,wC=(J)=>xC.has(J.code),PC,wK=(J)=>!0,PK=(J)=>{if(J===void 0)return wK;if(typeof J==="function")return J;if(typeof J==="string"){let z=J.trim();return(Y)=>Y.basename===z}if(Array.isArray(J)){let z=J.map((Y)=>Y.trim());return(Y)=>z.some((G)=>Y.basename===G)}return wK},sB;var mK=k(()=>{mJ={FILE_TYPE:"files",DIR_TYPE:"directories",FILE_DIR_TYPE:"files_directories",EVERYTHING_TYPE:"all"},oB={root:".",fileFilter:(J)=>!0,directoryFilter:(J)=>!0,type:mJ.FILE_TYPE,lstat:!1,depth:2147483648,alwaysStat:!1,highWaterMark:4096};Object.freeze(oB);xC=new Set(["ENOENT","EPERM","EACCES","ELOOP",hK]),EK=[mJ.DIR_TYPE,mJ.EVERYTHING_TYPE,mJ.FILE_DIR_TYPE,mJ.FILE_TYPE],uC=new Set([mJ.DIR_TYPE,mJ.EVERYTHING_TYPE,mJ.FILE_DIR_TYPE]),EC=new Set([mJ.EVERYTHING_TYPE,mJ.FILE_DIR_TYPE,mJ.FILE_TYPE]),PC=process.platform==="win32";sB=class sB extends yC{parents;reading;parent;_stat;_maxDepth;_wantsDir;_wantsFile;_wantsEverything;_root;_isDirent;_statsProp;_rdOptions;_fileFilter;_directoryFilter;constructor(J={}){super({objectMode:!0,autoDestroy:!0,highWaterMark:J.highWaterMark});let z={...oB,...J},{root:Y,type:G}=z;this._fileFilter=PK(z.fileFilter),this._directoryFilter=PK(z.directoryFilter);let Z=z.lstat?xK:bC;if(PC)this._stat=(X)=>Z(X,{bigint:!0});else this._stat=Z;this._maxDepth=z.depth!=null&&Number.isSafeInteger(z.depth)?z.depth:oB.depth,this._wantsDir=G?uC.has(G):!1,this._wantsFile=G?EC.has(G):!1,this._wantsEverything=G===mJ.EVERYTHING_TYPE,this._root=uK(Y),this._isDirent=!z.alwaysStat,this._statsProp=this._isDirent?"dirent":"stats",this._rdOptions={encoding:"utf8",withFileTypes:this._isDirent},this.parents=[this._exploreDir(Y,1)],this.reading=!1,this.parent=void 0}async _read(J){if(this.reading)return;this.reading=!0;try{while(!this.destroyed&&J>0){let z=this.parent,Y=z&&z.files;if(Y&&Y.length>0){let{path:G,depth:Z}=z,X=Y.splice(0,J).map((f)=>this._formatEntry(f,G)),Q=await Promise.all(X);for(let f of Q){if(!f)continue;if(this.destroyed)return;let H=await this._getEntryType(f);if(H==="directory"&&this._directoryFilter(f)){if(Z<=this._maxDepth)this.parents.push(this._exploreDir(f.fullPath,Z+1));if(this._wantsDir)this.push(f),J--}else if((H==="file"||this._includeAsFile(f))&&this._fileFilter(f)){if(this._wantsFile)this.push(f),J--}}}else{let G=this.parents.pop();if(!G){this.push(null);break}if(this.parent=await G,this.destroyed)return}}}catch(z){this.destroy(z)}finally{this.reading=!1}}async _exploreDir(J,z){let Y;try{Y=await NC(J,this._rdOptions)}catch(G){this._onError(G)}return{files:Y,depth:z,path:J}}async _formatEntry(J,z){let Y,G=this._isDirent?J.name:J;try{let Z=uK(SC(z,G));Y={path:IC(this._root,Z),fullPath:Z,basename:G},Y[this._statsProp]=this._isDirent?J:await this._stat(Z)}catch(Z){this._onError(Z);return}return Y}_onError(J){if(wC(J)&&!this.destroyed)this.emit("warn",J);else this.destroy(J)}async _getEntryType(J){if(!J&&this._statsProp in J)return"";let z=J[this._statsProp];if(z.isFile())return"file";if(z.isDirectory())return"directory";if(z&&z.isSymbolicLink()){let Y=J.fullPath;try{let G=await kC(Y),Z=await xK(G);if(Z.isFile())return"file";if(Z.isDirectory()){let X=G.length;if(Y.startsWith(G)&&Y.substr(X,1)===TC){let Q=Error(`Circular symlink detected: "${Y}" points to "${G}"`);return Q.code=hK,this._onError(Q)}return"directory"}}catch(G){return this._onError(G),""}}}_includeAsFile(J){let z=J&&J[this._statsProp];return z&&this._wantsEverything&&!z.isDirectory()}}});import{watch as hC,unwatchFile as cK,watchFile as vC}from"fs";import{realpath as tB,lstat as mC,open as cC,stat as nK}from"fs/promises";import{type as dC}from"os";import*as u1 from"path";function dK(J,z,Y,G,Z){let X=(Q,f)=>{if(Y(J),Z(Q,f,{watchedPath:J}),f&&J!==f)Ff(u1.resolve(J,f),NG,u1.join(J,f))};try{return hC(J,{persistent:z.persistent},X)}catch(Q){G(Q);return}}class Gj{fsw;_boundHandleError;constructor(J){this.fsw=J,this._boundHandleError=(z)=>J._handleError(z)}_watchWithNodeFs(J,z){let Y=this.fsw.options,G=u1.dirname(J),Z=u1.basename(J);this.fsw._getWatchedDir(G).add(Z);let Q=u1.resolve(J),f={persistent:Y.persistent};if(!z)z=Of;let H;if(Y.usePolling){let B=Y.interval!==Y.binaryInterval;f.interval=B&&oC(Z)?Y.binaryInterval:Y.interval,H=eC(J,Q,f,{listener:z,rawEmitter:this.fsw._emitRaw})}else H=tC(J,Q,f,{listener:z,errHandler:this._boundHandleError,rawEmitter:this.fsw._emitRaw});return H}_handleFile(J,z,Y){if(this.fsw.closed)return;let G=u1.dirname(J),Z=u1.basename(J),X=this.fsw._getWatchedDir(G),Q=z;if(X.has(Z))return;let f=async(B,V)=>{if(!this.fsw._throttle(aC,J,5))return;if(!V||V.mtimeMs===0)try{let j=await nK(J);if(this.fsw.closed)return;let{atimeMs:K,mtimeMs:L}=j;if(!K||K<=L||L!==Q.mtimeMs)this.fsw._emit(Oz.CHANGE,J,j);if((iC||lC||$C)&&Q.ino!==j.ino){this.fsw._closeFile(B),Q=j;let A=this._watchWithNodeFs(J,f);if(A)this.fsw._addPathCloser(B,A)}else Q=j}catch(j){this.fsw._remove(G,Z)}else if(X.has(Z)){let{atimeMs:j,mtimeMs:K}=V;if(!j||j<=K||K!==Q.mtimeMs)this.fsw._emit(Oz.CHANGE,J,V);Q=V}},H=this._watchWithNodeFs(J,f);if(!(Y&&this.fsw.options.ignoreInitial)&&this.fsw._isntIgnored(J)){if(!this.fsw._throttle(Oz.ADD,J,0))return;this.fsw._emit(Oz.ADD,J,z)}return H}async _handleSymlink(J,z,Y,G){if(this.fsw.closed)return;let Z=J.fullPath,X=this.fsw._getWatchedDir(z);if(!this.fsw.options.followSymlinks){this.fsw._incrReadyCount();let Q;try{Q=await tB(Y)}catch(f){return this.fsw._emitReady(),!0}if(this.fsw.closed)return;if(X.has(G)){if(this.fsw._symlinkPaths.get(Z)!==Q)this.fsw._symlinkPaths.set(Z,Q),this.fsw._emit(Oz.CHANGE,Y,J.stats)}else X.add(G),this.fsw._symlinkPaths.set(Z,Q),this.fsw._emit(Oz.ADD,Y,J.stats);return this.fsw._emitReady(),!0}if(this.fsw._symlinkPaths.has(Z))return!0;this.fsw._symlinkPaths.set(Z,!0)}_handleRead(J,z,Y,G,Z,X,Q){J=u1.join(J,"");let f=G?`${J}:${G}`:J;if(Q=this.fsw._throttle("readdir",f,1000),!Q)return;let H=this.fsw._getWatchedDir(Y.path),B=new Set,V=this.fsw._readdirp(J,{fileFilter:(j)=>Y.filterPath(j),directoryFilter:(j)=>Y.filterDir(j)});if(!V)return;return V.on(nC,async(j)=>{if(this.fsw.closed){V=void 0;return}let K=j.path,L=u1.join(J,K);if(B.add(K),j.stats.isSymbolicLink()&&await this._handleSymlink(j,J,L,K))return;if(this.fsw.closed){V=void 0;return}if(K===G||!G&&!H.has(K))this.fsw._incrReadyCount(),L=u1.join(Z,u1.relative(Z,L)),this._addToNodeFs(L,z,Y,X+1)}).on(Oz.ERROR,this._boundHandleError),new Promise((j,K)=>{if(!V)return K();V.once(zj,()=>{if(this.fsw.closed){V=void 0;return}let L=Q?Q.clear():!1;if(j(void 0),H.getChildren().filter((A)=>{return A!==J&&!B.has(A)}).forEach((A)=>{this.fsw._remove(J,A)}),V=void 0,L)this._handleRead(J,!1,Y,G,Z,X,Q)})})}async _handleDir(J,z,Y,G,Z,X,Q){let f=this.fsw._getWatchedDir(u1.dirname(J)),H=f.has(u1.basename(J));if(!(Y&&this.fsw.options.ignoreInitial)&&!Z&&!H)this.fsw._emit(Oz.ADD_DIR,J,z);f.add(u1.basename(J)),this.fsw._getWatchedDir(J);let B,V,j=this.fsw.options.depth;if((j==null||G<=j)&&!this.fsw._symlinkPaths.has(Q)){if(!Z){if(await this._handleRead(J,Y,X,Z,J,G,B),this.fsw.closed)return}V=this._watchWithNodeFs(J,(K,L)=>{if(L&&L.mtimeMs===0)return;this._handleRead(K,!1,X,Z,J,G,B)})}return V}async _addToNodeFs(J,z,Y,G,Z){let X=this.fsw._emitReady;if(this.fsw._isIgnored(J)||this.fsw.closed)return X(),!1;let Q=this.fsw._getWatchHelpers(J);if(Y)Q.filterPath=(f)=>Y.filterPath(f),Q.filterDir=(f)=>Y.filterDir(f);try{let f=await _C[Q.statMethod](Q.watchPath);if(this.fsw.closed)return;if(this.fsw._isIgnored(Q.watchPath,f))return X(),!1;let H=this.fsw.options.followSymlinks,B;if(f.isDirectory()){let V=u1.resolve(J),j=H?await tB(J):J;if(this.fsw.closed)return;if(B=await this._handleDir(Q.watchPath,f,z,G,Z,Q,j),this.fsw.closed)return;if(V!==j&&j!==void 0)this.fsw._symlinkPaths.set(V,j)}else if(f.isSymbolicLink()){let V=H?await tB(J):J;if(this.fsw.closed)return;let j=u1.dirname(Q.watchPath);if(this.fsw._getWatchedDir(j).add(Q.watchPath),this.fsw._emit(Oz.ADD,Q.watchPath,f),B=await this._handleDir(j,f,z,G,J,Q,V),this.fsw.closed)return;if(V!==void 0)this.fsw._symlinkPaths.set(u1.resolve(J),V)}else B=this._handleFile(Q.watchPath,f,z);if(X(),B)this.fsw._addPathCloser(J,B);return!1}catch(f){if(this.fsw._handleError(f))return X(),J}}}var nC="data",zj="end",iK="close",Of=()=>{},Af,Yj,iC,lC,$C,lK,y1,Oz,aC="watch",_C,NG="listeners",Lf="errHandlers",AZ="rawEmitters",pC,rC,oC=(J)=>rC.has(u1.extname(J).slice(1).toLowerCase()),Jj=(J,z)=>{if(J instanceof Set)J.forEach(z);else z(J)},wX=(J,z,Y)=>{let G=J[z];if(!(G instanceof Set))J[z]=G=new Set([G]);G.add(Y)},sC=(J)=>(z)=>{let Y=J[z];if(Y instanceof Set)Y.clear();else delete J[z]},PX=(J,z,Y)=>{let G=J[z];if(G instanceof Set)G.delete(Y);else if(G===Y)delete J[z]},$K=(J)=>J instanceof Set?J.size===0:!J,Mf,Ff=(J,z,Y,G,Z)=>{let X=Mf.get(J);if(!X)return;Jj(X[z],(Q)=>{Q(Y,G,Z)})},tC=(J,z,Y,G)=>{let{listener:Z,errHandler:X,rawEmitter:Q}=G,f=Mf.get(z),H;if(!Y.persistent){if(H=dK(J,Y,Z,X,Q),!H)return;return H.close.bind(H)}if(f)wX(f,NG,Z),wX(f,Lf,X),wX(f,AZ,Q);else{if(H=dK(J,Y,Ff.bind(null,z,NG),X,Ff.bind(null,z,AZ)),!H)return;H.on(Oz.ERROR,async(B)=>{let V=Ff.bind(null,z,Lf);if(f)f.watcherUnusable=!0;if(Yj&&B.code==="EPERM")try{await(await cC(J,"r")).close(),V(B)}catch(j){}else V(B)}),f={listeners:Z,errHandlers:X,rawEmitters:Q,watcher:H},Mf.set(z,f)}return()=>{if(PX(f,NG,Z),PX(f,Lf,X),PX(f,AZ,Q),$K(f.listeners))f.watcher.close(),Mf.delete(z),pC.forEach(sC(f)),f.watcher=void 0,Object.freeze(f)}},eB,eC=(J,z,Y,G)=>{let{listener:Z,rawEmitter:X}=G,Q=eB.get(z),f=Q&&Q.options;if(f&&(f.persistent<Y.persistent||f.interval>Y.interval))cK(z),Q=void 0;if(Q)wX(Q,NG,Z),wX(Q,AZ,X);else Q={listeners:Z,rawEmitters:X,options:Y,watcher:vC(z,Y,(H,B)=>{Jj(Q.rawEmitters,(j)=>{j(Oz.CHANGE,z,{curr:H,prev:B})});let V=H.mtimeMs;if(H.size!==B.size||V>B.mtimeMs||V===0)Jj(Q.listeners,(j)=>j(J,H))})},eB.set(z,Q);return()=>{if(PX(Q,NG,Z),PX(Q,AZ,X),$K(Q.listeners))eB.delete(z),cK(z),Q.options=Q.watcher=void 0,Object.freeze(Q)}};var aK=k(()=>{Af=process.platform,Yj=Af==="win32",iC=Af==="darwin",lC=Af==="linux",$C=Af==="freebsd",lK=dC()==="OS400",y1={ALL:"all",READY:"ready",ADD:"add",CHANGE:"change",ADD_DIR:"addDir",UNLINK:"unlink",UNLINK_DIR:"unlinkDir",RAW:"raw",ERROR:"error"},Oz=y1,_C={lstat:mC,stat:nK},pC=[NG,Lf,AZ],rC=new Set(["3dm","3ds","3g2","3gp","7z","a","aac","adp","afdesign","afphoto","afpub","ai","aif","aiff","alz","ape","apk","appimage","ar","arj","asf","au","avi","bak","baml","bh","bin","bk","bmp","btif","bz2","bzip2","cab","caf","cgm","class","cmx","cpio","cr2","cur","dat","dcm","deb","dex","djvu","dll","dmg","dng","doc","docm","docx","dot","dotm","dra","DS_Store","dsk","dts","dtshd","dvb","dwg","dxf","ecelp4800","ecelp7470","ecelp9600","egg","eol","eot","epub","exe","f4v","fbs","fh","fla","flac","flatpak","fli","flv","fpx","fst","fvt","g3","gh","gif","graffle","gz","gzip","h261","h263","h264","icns","ico","ief","img","ipa","iso","jar","jpeg","jpg","jpgv","jpm","jxr","key","ktx","lha","lib","lvp","lz","lzh","lzma","lzo","m3u","m4a","m4v","mar","mdi","mht","mid","midi","mj2","mka","mkv","mmr","mng","mobi","mov","movie","mp3","mp4","mp4a","mpeg","mpg","mpga","mxu","nef","npx","numbers","nupkg","o","odp","ods","odt","oga","ogg","ogv","otf","ott","pages","pbm","pcx","pdb","pdf","pea","pgm","pic","png","pnm","pot","potm","potx","ppa","ppam","ppm","pps","ppsm","ppsx","ppt","pptm","pptx","psd","pya","pyc","pyo","pyv","qt","rar","ras","raw","resources","rgb","rip","rlc","rmf","rmvb","rpm","rtf","rz","s3m","s7z","scpt","sgi","shar","snap","sil","sketch","slk","smv","snk","so","stl","suo","sub","swf","tar","tbz","tbz2","tga","tgz","thmx","tif","tiff","tlz","ttc","ttf","txz","udf","uvh","uvi","uvm","uvp","uvs","uvu","viv","vob","war","wav","wax","wbmp","wdp","weba","webm","webp","whl","wim","wm","wma","wmv","wmx","woff","woff2","wrm","wvx","xbm","xif","xla","xlam","xls","xlsb","xlsm","xlsx","xlt","xltm","xltx","xm","xmind","xpi","xpm","xwd","xz","z","zip","zipx"]),Mf=new Map;eB=new Map});import{EventEmitter as JN}from"events";import{stat as zN,Stats as Ic}from"fs";import{readdir as YN,stat as GN}from"fs/promises";import*as Q1 from"path";function Rf(J){return Array.isArray(J)?J:[J]}function BN(J){if(typeof J==="function")return J;if(typeof J==="string")return(z)=>J===z;if(J instanceof RegExp)return(z)=>J.test(z);if(typeof J==="object"&&J!==null)return(z)=>{if(J.path===z)return!0;if(J.recursive){let Y=Q1.relative(J.path,z);if(!Y)return!1;return!Y.startsWith("..")&&!Q1.isAbsolute(Y)}return!1};return()=>!1}function jN(J){if(typeof J!=="string")throw Error("string expected");J=Q1.normalize(J),J=J.replace(/\\/g,"/");let z=!1;if(J.startsWith("//"))z=!0;if(J=J.replace(tK,"/"),z)J="/"+J;return J}function _K(J,z,Y){let G=jN(z);for(let Z=0;Z<J.length;Z++){let X=J[Z];if(X(G,Y))return!0}return!1}function WN(J,z){if(J==null)throw TypeError("anymatch: specify first argument");let G=Rf(J).map((Z)=>BN(Z));if(z==null)return(Z,X)=>{return _K(G,Z,X)};return _K(G,z)}class J6{path;_removeWatcher;items;constructor(J,z){this.path=J,this._removeWatcher=z,this.items=new Set}add(J){let{items:z}=this;if(!z)return;if(J!==sK&&J!==XN)z.add(J)}async remove(J){let{items:z}=this;if(!z)return;if(z.delete(J),z.size>0)return;let Y=this.path;try{await YN(Y)}catch(G){if(this._removeWatcher)this._removeWatcher(Q1.dirname(Y),Q1.basename(Y))}}has(J){let{items:z}=this;if(!z)return;return z.has(J)}getChildren(){let{items:J}=this;if(!J)return[];return[...J.values()]}dispose(){this.items.clear(),this.path="",this._removeWatcher=Of,this.items=KN,Object.freeze(this)}}class z6{fsw;path;watchPath;fullWatchPath;dirParts;followSymlinks;statMethod;constructor(J,z,Y){this.fsw=Y;let G=J;this.path=J=J.replace(HN,""),this.watchPath=G,this.fullWatchPath=Q1.resolve(G),this.dirParts=[],this.dirParts.forEach((Z)=>{if(Z.length>1)Z.pop()}),this.followSymlinks=z,this.statMethod=z?UN:DN}entryPath(J){return Q1.join(this.watchPath,Q1.relative(this.watchPath,J.fullPath))}filterPath(J){let{stats:z}=J;if(z&&z.isSymbolicLink())return this.filterDir(J);let Y=this.entryPath(J);return this.fsw._isntIgnored(Y,z)&&this.fsw._hasReadPermissions(z)}filterDir(J){return this.fsw._isntIgnored(this.entryPath(J),J.stats)}}function G6(J,z={}){let Y=new Y6(z);return Y.add(J),Y}var Zj="/",ZN="//",sK=".",XN="..",QN="string",qN,tK,fN,HN,Xj=(J)=>typeof J==="object"&&J!==null&&!(J instanceof RegExp),pK=(J)=>{let z=Rf(J).flat();if(!z.every((Y)=>typeof Y===QN))throw TypeError(`Non-string provided as watch path: ${z}`);return z.map(eK)},rK=(J)=>{let z=J.replace(qN,Zj),Y=!1;if(z.startsWith(ZN))Y=!0;if(z=z.replace(tK,Zj),Y)z=Zj+z;return z},eK=(J)=>rK(Q1.normalize(rK(J))),oK=(J="")=>(z)=>{if(typeof z==="string")return eK(Q1.isAbsolute(z)?z:Q1.join(J,z));else return z},VN=(J,z)=>{if(Q1.isAbsolute(J))return J;return Q1.join(z,J)},KN,UN="stat",DN="lstat",Y6;var Z6=k(()=>{mK();aK();/*! chokidar - MIT License (c) 2012 Paul Miller (paulmillr.com) */qN=/\\/g,tK=/\/\//g,fN=/\..*\.(sw[px])$|~$|\.subl.*\.tmp/,HN=/^\.[/\\]/;KN=Object.freeze(new Set);Y6=class Y6 extends JN{closed;options;_closers;_ignoredPaths;_throttled;_streams;_symlinkPaths;_watched;_pendingWrites;_pendingUnlinks;_readyCount;_emitReady;_closePromise;_userIgnored;_readyEmitted;_emitRaw;_boundRemove;_nodeFsHandler;constructor(J={}){super();this.closed=!1,this._closers=new Map,this._ignoredPaths=new Set,this._throttled=new Map,this._streams=new Set,this._symlinkPaths=new Map,this._watched=new Map,this._pendingWrites=new Map,this._pendingUnlinks=new Map,this._readyCount=0,this._readyEmitted=!1;let z=J.awaitWriteFinish,Y={stabilityThreshold:2000,pollInterval:100},G={persistent:!0,ignoreInitial:!1,ignorePermissionErrors:!1,interval:100,binaryInterval:300,followSymlinks:!0,usePolling:!1,atomic:!0,...J,ignored:J.ignored?Rf(J.ignored):Rf([]),awaitWriteFinish:z===!0?Y:typeof z==="object"?{...Y,...z}:!1};if(lK)G.usePolling=!0;if(G.atomic===void 0)G.atomic=!G.usePolling;let Z=process.env.CHOKIDAR_USEPOLLING;if(Z!==void 0){let f=Z.toLowerCase();if(f==="false"||f==="0")G.usePolling=!1;else if(f==="true"||f==="1")G.usePolling=!0;else G.usePolling=!!f}let X=process.env.CHOKIDAR_INTERVAL;if(X)G.interval=Number.parseInt(X,10);let Q=0;this._emitReady=()=>{if(Q++,Q>=this._readyCount)this._emitReady=Of,this._readyEmitted=!0,process.nextTick(()=>this.emit(y1.READY))},this._emitRaw=(...f)=>this.emit(y1.RAW,...f),this._boundRemove=this._remove.bind(this),this.options=G,this._nodeFsHandler=new Gj(this),Object.freeze(G)}_addIgnoredPath(J){if(Xj(J)){for(let z of this._ignoredPaths)if(Xj(z)&&z.path===J.path&&z.recursive===J.recursive)return}this._ignoredPaths.add(J)}_removeIgnoredPath(J){if(this._ignoredPaths.delete(J),typeof J==="string"){for(let z of this._ignoredPaths)if(Xj(z)&&z.path===J)this._ignoredPaths.delete(z)}}add(J,z,Y){let{cwd:G}=this.options;this.closed=!1,this._closePromise=void 0;let Z=pK(J);if(G)Z=Z.map((X)=>{return VN(X,G)});if(Z.forEach((X)=>{this._removeIgnoredPath(X)}),this._userIgnored=void 0,!this._readyCount)this._readyCount=0;return this._readyCount+=Z.length,Promise.all(Z.map(async(X)=>{let Q=await this._nodeFsHandler._addToNodeFs(X,!Y,void 0,0,z);if(Q)this._emitReady();return Q})).then((X)=>{if(this.closed)return;X.forEach((Q)=>{if(Q)this.add(Q1.dirname(Q),Q1.basename(z||Q))})}),this}unwatch(J){if(this.closed)return this;let z=pK(J),{cwd:Y}=this.options;return z.forEach((G)=>{if(!Q1.isAbsolute(G)&&!this._closers.has(G)){if(Y)G=Q1.join(Y,G);G=Q1.resolve(G)}if(this._closePath(G),this._addIgnoredPath(G),this._watched.has(G))this._addIgnoredPath({path:G,recursive:!0});this._userIgnored=void 0}),this}close(){if(this._closePromise)return this._closePromise;this.closed=!0,this.removeAllListeners();let J=[];return this._closers.forEach((z)=>z.forEach((Y)=>{let G=Y();if(G instanceof Promise)J.push(G)})),this._streams.forEach((z)=>z.destroy()),this._userIgnored=void 0,this._readyCount=0,this._readyEmitted=!1,this._watched.forEach((z)=>z.dispose()),this._closers.clear(),this._watched.clear(),this._streams.clear(),this._symlinkPaths.clear(),this._throttled.clear(),this._closePromise=J.length?Promise.all(J).then(()=>{return}):Promise.resolve(),this._closePromise}getWatched(){let J={};return this._watched.forEach((z,Y)=>{let Z=(this.options.cwd?Q1.relative(this.options.cwd,Y):Y)||sK;J[Z]=z.getChildren().sort()}),J}emitWithAll(J,z){if(this.emit(J,...z),J!==y1.ERROR)this.emit(y1.ALL,J,...z)}async _emit(J,z,Y){if(this.closed)return;let G=this.options;if(Yj)z=Q1.normalize(z);if(G.cwd)z=Q1.relative(G.cwd,z);let Z=[z];if(Y!=null)Z.push(Y);let X=G.awaitWriteFinish,Q;if(X&&(Q=this._pendingWrites.get(z)))return Q.lastChange=new Date,this;if(G.atomic){if(J===y1.UNLINK)return this._pendingUnlinks.set(z,[J,...Z]),setTimeout(()=>{this._pendingUnlinks.forEach((f,H)=>{this.emit(...f),this.emit(y1.ALL,...f),this._pendingUnlinks.delete(H)})},typeof G.atomic==="number"?G.atomic:100),this;if(J===y1.ADD&&this._pendingUnlinks.has(z))J=y1.CHANGE,this._pendingUnlinks.delete(z)}if(X&&(J===y1.ADD||J===y1.CHANGE)&&this._readyEmitted){let f=(H,B)=>{if(H)J=y1.ERROR,Z[0]=H,this.emitWithAll(J,Z);else if(B){if(Z.length>1)Z[1]=B;else Z.push(B);this.emitWithAll(J,Z)}};return this._awaitWriteFinish(z,X.stabilityThreshold,J,f),this}if(J===y1.CHANGE){if(!this._throttle(y1.CHANGE,z,50))return this}if(G.alwaysStat&&Y===void 0&&(J===y1.ADD||J===y1.ADD_DIR||J===y1.CHANGE)){let f=G.cwd?Q1.join(G.cwd,z):z,H;try{H=await GN(f)}catch(B){}if(!H||this.closed)return;Z.push(H)}return this.emitWithAll(J,Z),this}_handleError(J){let z=J&&J.code;if(J&&z!=="ENOENT"&&z!=="ENOTDIR"&&(!this.options.ignorePermissionErrors||z!=="EPERM"&&z!=="EACCES"))this.emit(y1.ERROR,J);return J||this.closed}_throttle(J,z,Y){if(!this._throttled.has(J))this._throttled.set(J,new Map);let G=this._throttled.get(J);if(!G)throw Error("invalid throttle");let Z=G.get(z);if(Z)return Z.count++,!1;let X,Q=()=>{let H=G.get(z),B=H?H.count:0;if(G.delete(z),clearTimeout(X),H)clearTimeout(H.timeoutObject);return B};X=setTimeout(Q,Y);let f={timeoutObject:X,clear:Q,count:0};return G.set(z,f),f}_incrReadyCount(){return this._readyCount++}_awaitWriteFinish(J,z,Y,G){let Z=this.options.awaitWriteFinish;if(typeof Z!=="object")return;let X=Z.pollInterval,Q,f=J;if(this.options.cwd&&!Q1.isAbsolute(J))f=Q1.join(this.options.cwd,J);let H=new Date,B=this._pendingWrites;function V(j){zN(f,(K,L)=>{if(K||!B.has(J)){if(K&&K.code!=="ENOENT")G(K);return}let A=Number(new Date);if(j&&L.size!==j.size)B.get(J).lastChange=A;let O=B.get(J);if(A-O.lastChange>=z)B.delete(J),G(void 0,L);else Q=setTimeout(V,X,L)})}if(!B.has(J))B.set(J,{lastChange:H,cancelWait:()=>{return B.delete(J),clearTimeout(Q),Y}}),Q=setTimeout(V,X)}_isIgnored(J,z){if(this.options.atomic&&fN.test(J))return!0;if(!this._userIgnored){let{cwd:Y}=this.options,Z=(this.options.ignored||[]).map(oK(Y)),Q=[...[...this._ignoredPaths].map(oK(Y)),...Z];this._userIgnored=WN(Q,void 0)}return this._userIgnored(J,z)}_isntIgnored(J,z){return!this._isIgnored(J,z)}_getWatchHelpers(J){return new z6(J,this.options.followSymlinks,this)}_getWatchedDir(J){let z=Q1.resolve(J);if(!this._watched.has(z))this._watched.set(z,new J6(z,this._boundRemove));return this._watched.get(z)}_hasReadPermissions(J){if(this.options.ignorePermissionErrors)return!0;return Boolean(Number(J.mode)&256)}_remove(J,z,Y){let G=Q1.join(J,z),Z=Q1.resolve(G);if(Y=Y!=null?Y:this._watched.has(G)||this._watched.has(Z),!this._throttle("remove",G,100))return;if(!Y&&this._watched.size===1)this.add(J,z,!0);this._getWatchedDir(G).getChildren().forEach((j)=>this._remove(G,j));let f=this._getWatchedDir(J),H=f.has(z);if(f.remove(z),this._symlinkPaths.has(Z))this._symlinkPaths.delete(Z);let B=G;if(this.options.cwd)B=Q1.relative(this.options.cwd,G);if(this.options.awaitWriteFinish&&this._pendingWrites.has(B)){if(this._pendingWrites.get(B).cancelWait()===y1.ADD)return}this._watched.delete(G),this._watched.delete(Z);let V=Y?y1.UNLINK_DIR:y1.UNLINK;if(H&&!this._isIgnored(G))this._emit(V,G);this._closePath(G)}_closePath(J){this._closeFile(J);let z=Q1.dirname(J);this._getWatchedDir(z).remove(Q1.basename(J))}_closeFile(J){let z=this._closers.get(J);if(!z)return;z.forEach((Y)=>Y()),this._closers.delete(J)}_addPathCloser(J,z){if(!z)return;let Y=this._closers.get(J);if(!Y)Y=[],this._closers.set(J,Y);Y.push(z)}_readdirp(J,z){if(this.closed)return;let Y={type:y1.ALL,alwaysStat:!0,lstat:!0,...z,depth:0},G=vK(J,Y);return this._streams.add(G),G.once(iK,()=>{G=void 0}),G.once(zj,()=>{if(G)this._streams.delete(G),G=void 0}),G}}});import{mkdirSync as LN,statSync as MN}from"fs";import{basename as X6,dirname as FN,join as ON}from"path";function gf(J){if(J.debounceMs<=0)return()=>{};let z=FN(J.filePath),Y=new Set([X6(J.filePath),...J.matchBasenames??[]]),G=null,Z=null,X=!1,Q=()=>{try{J.onTrigger()}catch(V){J.onError(V)}},f=()=>{if(G)clearTimeout(G);G=setTimeout(()=>{G=null,Q()},J.debounceMs),G.unref?.()},H=(V)=>{if(!Y.has(X6(V)))return;f()},B=(V)=>{try{let j=MN(ON(z,V));return`${j.mtimeMs}:${j.size}`}catch{return null}};try{LN(z,{recursive:!0});let V=new Map;for(let j of Y)V.set(j,B(j));Z=G6(z,{depth:0,ignoreInitial:!0}),Z.on("add",H),Z.on("change",H),Z.on("unlink",H),Z.on("error",J.onError),Z.once("ready",()=>{for(let j of Y)if(B(j)!==V.get(j)){f();break}})}catch(V){J.onError(V)}return()=>{if(X)return;if(X=!0,G)clearTimeout(G),G=null;let V=Z;Z=null,V?.close().catch(J.onError)}}var Qj=k(()=>{Z6()});import{homedir as AN}from"os";import{basename as RN,join as gN}from"path";function fj(J=process.env.KOBE_HOME_DIR??AN()){return gN(J,".kobe","settings","keybindings.yaml")}function Q6(J,z={}){let Y=z.debounceMs??qj;if(Y<=0)return()=>{};let G=z.path??fj(),Z=RN(G),X=Z.replace(/\.yaml$/,".yml"),Q=0;return J.publish("keybindings",{rev:Q}),gf({filePath:G,matchBasenames:[Z,X],debounceMs:Y,onTrigger:()=>{try{Q+=1,J.publish("keybindings",{rev:Q})}catch(H){T1("keybindings-watcher",H)}},onError:(H)=>T1("keybindings-watcher",H)})}var qj=200;var q6=k(()=>{Qj()});class Hj{clients;idleGraceMs;onIdleStop;schedule;log;cancelIdle=null;stopping=!1;constructor(J){this.clients=J.clients,this.idleGraceMs=J.idleGraceMs,this.onIdleStop=J.onIdleStop,this.schedule=J.schedule??CN,this.log=J.log??hz}guiCount(){let J=0;for(let z of this.clients())if(z.holdsLifetime)J++;return J}hasSubscribers(){for(let J of this.clients())if(J.subscribed)return!0;return!1}isStopping(){return this.stopping}markStopping(){this.stopping=!0,this.clearIdle()}guiAttached(){this.clearIdle()}clientDisconnected(J){if(J)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 CN=(J,z)=>{let Y=setTimeout(J,z);return Y.unref?.(),()=>clearTimeout(Y)};var f6=()=>{};import{spawn as NN}from"child_process";function uN(J,z,Y){return new Promise((G)=>{let Z="",X="",Q=!1,f=(B,V)=>{if(Q)return;Q=!0,G({status:B,stdout:Z,stderr:X,spawnError:V})},H=NN("gh",J.slice(),{cwd:z,stdio:["ignore","pipe","pipe"],signal:Y,killSignal:"SIGKILL"});H.stdout?.on("data",(B)=>{Z+=String(B)}),H.stderr?.on("data",(B)=>{X+=String(B)}),H.on("error",()=>f(null,!Y.aborted)),H.on("close",(B)=>f(B,!1))})}function wN(J){if(J.archived)return!1;if(J.kind==="main")return!1;if(!J.branch||!J.worktreePath)return!1;if(l1(J.repo)||l1(J.worktreePath))return!1;return!0}async function PN(J,z){let Y=z.tickMs??hX,G=z.rand,Z={tickMs:Y,settledMs:bN,noPrMs:kN,noRemoteMs:TN,failureBaseMs:SN,failureCapMs:IN,jitterRatio:yN},X=[];for(let Q of J.listTasks()){if(!wN(Q)){z.schedule.delete(Q.id);continue}let f=z.schedule.get(Q.id);if(f&&z.now<f.nextAllowedAt)continue;let H=f?.failures??0;try{let B=await z.run(Q.worktreePath,Q.branch);if(B.kind==="error"){hz("pr-status-poller",`gh pr view failed (${B.error}) for task ${Q.id} [${Q.branch}] \u2014 keeping last PR status, backing off`),z.schedule.set(Q.id,LX({kind:"error",error:B.error},H,z.now,Z,G));continue}if(B.kind==="empty"){z.schedule.set(Q.id,LX({kind:"empty"},H,z.now,Z,G));continue}let V=EV(B.view,z.at),j=J.getTask(Q.id);if(!j){z.schedule.delete(Q.id);continue}if(!Oq(j.prStatus,V??void 0))await J.setPRStatus(Q.id,V),X.push(Q.id);let K=V?.lifecycle==="merged"||V?.lifecycle==="closed";z.schedule.set(Q.id,LX({kind:"pr",settled:K},H,z.now,Z,G))}catch(B){T1("pr-status-poller",B),z.schedule.set(Q.id,LX({kind:"error",error:"network"},H,z.now,Z,G))}}return X}function H6(J,z=hX,Y,G=EN){if(z<=0)return()=>{};let Z=new Map,X=!1,f=setInterval(()=>{if(Y&&!Y())return;if(X)return;X=!0,PN(J,{run:G,now:Date.now(),at:new Date().toISOString(),schedule:Z,tickMs:z}).catch((H)=>T1("pr-status-poller",H)).finally(()=>{X=!1})},z);return f.unref?.(),()=>clearInterval(f)}var hX=30000,kN=300000,bN=600000,SN,IN=900000,TN=1800000,yN=0.2,xN=1e4,EN=async(J,z)=>{let Y=new AbortController,G=!1,Z=setTimeout(()=>{G=!0,Y.abort()},xN);try{let X=await uN(["pr","view",z,"--json",uV],J,Y.signal);if(X.status===0&&!G)try{let Q=JSON.parse(X.stdout);return typeof Q.number==="number"?{kind:"pr",view:Q}:{kind:"empty"}}catch{return d8({parseError:!0})}return d8({spawnError:X.spawnError,timedOut:G,exitCode:X.status,stderr:X.stderr})}finally{clearTimeout(Z)}};var B6=k(()=>{n8();F1();SN=hX});function cN(J,z){return J.mtimeMs===z.mtimeMs&&J.completionId===z.completionId&&J.completionAt===z.completionAt}async function dN(J,z,Y,G){let Z=await _G(z,J),X=await Y.latestCompletion(J);return{mtimeMs:Z,completionId:X?.id??null,completionAt:X?.timestampMs??0}}function nN(J){let z=new Map;for(let Y of J){if(Y.archived)continue;if(!Y.worktreePath)continue;if(l1(Y.repo)||l1(Y.worktreePath))continue;if(z.has(Y.worktreePath))continue;z.set(Y.worktreePath,Y.vendor??$1)}return z}class j6{orch;bus;options;entries=new Map;stopped=!1;constructor(J,z,Y={}){this.orch=J;this.bus=z;this.options=Y}tick(){if(this.stopped)return;if(this.options.hasSubscribers&&!this.options.hasSubscribers())return;try{let J=nN(this.orch.listTasks()),z=!1;for(let Y of this.entries.keys()){if(J.has(Y))continue;if(this.entries.get(Y)?.value)z=!0;this.entries.delete(Y)}if(z)this.publish();for(let[Y,G]of J)this.maybeCollect(Y,G)}catch(J){T1("transcript-activity",J)}}stop(){this.stopped=!0}maybeCollect(J,z){let Y=this.entries.get(J);if(!Y)Y={inFlight:!1,nextAllowedAt:0,vendor:z,detector:BX(z)},this.entries.set(J,Y);else if(Y.vendor!==z)Y.vendor=z,Y.detector=BX(z);let G=this.options.cadence??{timeoutMs:hN,slowRetryMs:vN,minIntervalMs:mN},Z=this.options.run??dN,X=Y;tG(X,G,(Q)=>Z(J,X.vendor,X.detector,Q),(Q)=>{if(this.stopped)return;if(this.entries.get(J)!==X)return;if(X.value&&cN(X.value,Q))return;X.value=Q,this.publish()})}publish(){let J={};for(let[z,Y]of this.entries)if(Y.value)J[z]=Y.value;this.bus.publish("transcript.activity",{activity:J})}}function W6(J,z,Y=Bj,G){if(Y<=0)return()=>{};let Z=new j6(J,z,{hasSubscribers:G});Z.tick();let X=setInterval(()=>Z.tick(),Y);return X.unref?.(),()=>{clearInterval(X),Z.stop()}}var Bj=1500,hN=4000,vN=60000,mN=1500;var V6=k(()=>{Yq();eG();Gq();F1();rJ()});import{readFileSync as iN}from"fs";import{homedir as lN}from"os";import{basename as $N,join as aN}from"path";function Wj(J=process.env.KOBE_HOME_DIR??lN()){return aN(J,".config","kobe","state.json")}function K6(J){let z={};try{let B=JSON.parse(iN(J,"utf8"));if(B&&typeof B==="object"&&!Array.isArray(B))z=B}catch{}let Y=typeof z.activeTheme==="string"&&z.activeTheme.length>0?z.activeTheme:"claude",G=z.transparentBackground===!0,Z=typeof z.focusAccent==="string"&&pN.includes(z.focusAccent)?z.focusAccent:null,X=z.activeSortMode==="recent"?"recent":"default",Q=z["tasksPane.keysCollapsed"]===!0,f=typeof z["tasksPane.projectFilter"]==="string"&&z["tasksPane.projectFilter"].length>0?z["tasksPane.projectFilter"]:null,H=typeof z.locale==="string"&&z.locale.length>0?z.locale:"en";return{theme:Y,transparentBackground:G,focusAccent:Z,locale:H,sortMode:X,keysCollapsed:Q,projectFilter:f}}function rN(J,z){return J.theme===z.theme&&J.transparentBackground===z.transparentBackground&&J.focusAccent===z.focusAccent&&J.locale===z.locale&&J.sortMode===z.sortMode&&J.keysCollapsed===z.keysCollapsed&&J.projectFilter===z.projectFilter}function U6(J,z={}){let Y=z.debounceMs??jj;if(Y<=0)return()=>{};let G=z.pollMs??_N,Z=z.statePath??Wj(),X=$N(Z),Q=K6(Z);return J.publish("ui-prefs",Q),gf({filePath:Z,matchBasenames:[X],debounceMs:Y,pollMs:G,onTrigger:()=>{try{let H=K6(Z);if(rN(Q,H))return;Q=H,J.publish("ui-prefs",H)}catch(H){T1("ui-prefs-watcher",H)}},onError:(H)=>T1("ui-prefs-watcher",H)})}var jj=200,_N=250,pN;var D6=k(()=>{Qj();pN=["primary","success","info"]});function RZ(J){return kG.includes(J)?J:"auto"}var kG,L6,XY="editor.kind",wY="editor.customCommand",Cf="auto";var Nf=k(()=>{kG=["auto","vim","nvim","nano","emacs","custom"],L6=["nvim","vim","emacs","nano"]});function SG(J){return J==="taskpanel"?"taskpanel":"chattab"}var QY="settings.surface",bG="chattab";function cJ(J=process.env){return{...J,...Vj}}var Vj;var PY=k(()=>{Vj={GIT_OPTIONAL_LOCKS:"0"}});async function gZ(J,z,Y={}){if(!J)return{stdout:"",stderr:"worktreePath is required",status:-1};let G=(Y.execForPath??YY)(J),Z=Y.timeoutMs&&Y.timeoutMs>0?new AbortController:null,X=!1,Q=Z?setTimeout(()=>{X=!0,Z.abort()},Y.timeoutMs):null,f=Z&&Y.signal?AbortSignal.any([Z.signal,Y.signal]):Z?.signal??Y.signal,H;try{H=await G.run(["git",...z],{cwd:J,env:Vj,signal:f})}catch(B){if(Q)clearTimeout(Q);return{stdout:"",stderr:B instanceof Error?B.message:String(B),status:-1}}if(Q)clearTimeout(Q);if(X&&H.exitCode===-1&&!H.stderr)return{stdout:H.stdout,stderr:`git ${z.join(" ")} timed out after ${Y.timeoutMs}ms`,status:-1};return{stdout:H.stdout,stderr:H.stderr,status:H.exitCode}}function oN(J,z){if(!J||!z||z.startsWith("/"))return null;let Y=z.split("/");if(Y.some((G)=>G===".."))return null;return`${J.replace(/\/+$/,"")}/${Y.filter(Boolean).join("/")}`}async function M6(J,z,Y={}){let G=oN(J,z);if(!G)return null;let Z=(Y.execForPath??YY)(J);try{return await Z.readFile(G)}catch{return null}}var kf=k(()=>{Vz();PY()});import{statSync as sN}from"fs";async function vX(J,z){let Y=await gZ(J,z,{timeoutMs:tN}),G=Y.status??-1;return{ok:G===0,stdout:Y.stdout,stderr:Y.stderr,code:G}}function Jk(J){switch(J){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 F6(J){let z=new Map;if(!J)return z;let Y=J.split(/(?=^diff --git )/m);for(let G of Y){if(!G.startsWith("diff --git"))continue;let Z=null,X=G.match(/^\+\+\+ b\/(.*)$/m);if(X&&X[1]!=="/dev/null")Z=X[1];else{let Q=G.match(/^diff --git a\/.* b\/(.*)$/m);if(Q)Z=Q[1]}if(!Z)continue;z.set(zk(Z),G.endsWith(`
|
|
66
|
-
`)
|
|
67
|
-
`)}return z}
|
|
68
|
-
|
|
28
|
+
`)&&J.endsWith("</INSTRUCTIONS>")}var $7=()=>{};function a7(J,z={}){let Y=C8(J.input_tokens,0),Z=C8(J.cached_input_tokens,0),X=C8(J.output_tokens,0),G=Math.max(0,Y-Z);if(Y<=0&&X<=0&&Z<=0)return;return{input_tokens:G,output_tokens:X,...Z>0?{cache_read_input_tokens:Z}:{},...P2(z.contextWindowTokens)?{context_window_tokens:z.contextWindowTokens}:{}}}function C8(J,z){return typeof J==="number"&&Number.isFinite(J)?J:z}function P2(J){return typeof J==="number"&&Number.isFinite(J)&&J>0}import{readdir as h2,stat as v2,unlink as UP}from"fs/promises";import{homedir as m2}from"os";import QZ from"path";async function S8(J=qZ){let z=J.sessionsDir(),Y=(await J.readdir(z)).sort().reverse(),Z=[];for(let X of Y){let G=QZ.join(z,X),Q=(await J.readdir(G)).sort().reverse();for(let f of Q){let H=QZ.join(G,f),B=(await J.readdir(H)).sort().reverse();for(let V of B){let j=QZ.join(H,V),K=(await J.readdir(j)).filter((L)=>L.startsWith("rollout-")&&L.endsWith(".jsonl"));K.sort().reverse();for(let L of K)if(Z.push(QZ.join(j,L)),Z.length>=_7){if(!p7)p7=!0,console.warn(`[codex history] rollout scan truncated at ${_7} files; older sessions may be omitted`);return Z}}}}return Z}async function c2(J,z=qZ){if(!J)return;let Y=J.toLowerCase(),Z=await S8(z);for(let X of Z)if(QZ.basename(X).match(t7)?.[1]?.toLowerCase()===Y)return X;return}function d2(J){for(let z of J.split(`
|
|
29
|
+
`)){let Y=z.trim();if(!Y)continue;if(!AY(Y))return"";try{let Z=JSON.parse(Y);if(Z.type==="session_meta")return Z.payload?.cwd??""}catch{}return""}return""}async function e7(J,z){let Y=r7.get(z);if(!Y)Y=new Map,r7.set(z,Y);let Z=Y.get(J);if(Z!==void 0)return Z;let X;try{X=await z.readFile(J)}catch{return null}let G=d2(X);if(G)Y.set(J,G);return G}async function JV(J,z=qZ){if(!J)return[];let Y=await S8(z),Z=[],X=0;for(let G of Y){if(X>=n2)break;if(X++,await e7(G,z)!==J)continue;let Q=QZ.basename(G).match(t7)?.[1];if(Q)Z.push(Q)}return Z.reverse()}async function I8(J,z=qZ){if(!J)return null;let Y=await S8(z),Z=0;for(let X of Y){if(Z>=i2)break;if(Z++,await e7(X,z)!==J)continue;try{return{path:X,mtimeMs:(await z.stat(X)).mtimeMs}}catch{}}return null}async function zV(J,z=qZ){return(await I8(J,z))?.mtimeMs??0}async function YV(J,z=qZ){return(await l2(J,z)).messages}async function l2(J,z=qZ){let Y=await c2(J,z);if(!Y)return{messages:[]};let Z;try{Z=await z.readFile(Y)}catch{return{messages:[]}}let X=$2(a2(Z,J)),G=s2(Z);return{messages:X,...G?{usageMetrics:G}:{}}}function $2(J){return J.map((z,Y)=>({msg:z,idx:Y})).sort((z,Y)=>{if(z.msg.timestamp<Y.msg.timestamp)return-1;if(z.msg.timestamp>Y.msg.timestamp)return 1;return z.idx-Y.idx}).map((z)=>z.msg)}function a2(J,z){let Y=[];for(let Z of J.split(`
|
|
30
|
+
`)){let X=Z.trim();if(!X)continue;if(!AY(X))continue;let G;try{G=JSON.parse(X)}catch{continue}if(!WG(G))continue;if(G.type!=="response_item")continue;let Q=WG(G.payload)?G.payload:void 0;if(!Q)continue;let f=typeof G.timestamp==="string"?G.timestamp:new Date().toISOString(),H=_2(Q,f,z);if(H)Y.push(H)}return Y}function _2(J,z,Y){if(J.type==="message"){let Z=J.role;if(Z!=="user"&&Z!=="assistant"&&Z!=="system")return;let X=g8(J.content);if(Z==="user"&&l7(X))return;return{role:Z,blocks:X,timestamp:z,sessionId:Y}}if(J.type==="reasoning")return p2(J,z,Y);if(J.type==="function_call")return N8(J,z,Y,{name:b8(J.name,"function_call"),input:k8(J.arguments)});if(J.type==="custom_tool_call")return N8(J,z,Y,{name:b8(J.name,"custom_tool_call"),input:k8(J.input)});if(J.type==="tool_search_call")return N8(J,z,Y,{name:"tool_search_call",input:Hq(J,["type","call_id","status"])});if(J.type==="function_call_output"||J.type==="custom_tool_call_output")return o7(J,z,Y,k8(J.output));if(J.type==="tool_search_output")return o7(J,z,Y,Hq(J,["type","call_id"]));if(J.type==="web_search_call"||J.type==="image_generation_call"||J.type==="local_shell_call")return r2(J,z,Y);return}function p2(J,z,Y){let Z=o2(J);if(Z.length===0)return;return{role:"assistant",blocks:[{type:"thinking",text:Z}],timestamp:z,sessionId:Y}}function N8(J,z,Y,Z){let X=typeof J.call_id==="string"?J.call_id:void 0;if(!X)return;return{role:"assistant",blocks:[{type:"tool_call",callId:X,name:Z.name,input:Z.input}],timestamp:z,sessionId:Y}}function o7(J,z,Y,Z){let X=typeof J.call_id==="string"?J.call_id:void 0;if(!X)return;return{role:"user",blocks:[{type:"tool_result",callId:X,output:Z,isError:!1}],timestamp:z,sessionId:Y}}function r2(J,z,Y){let Z=typeof J.type==="string"?J.type:"tool",X=typeof J.call_id==="string"&&J.call_id.length>0?J.call_id:`${Z}:${z}`,G=b8(J.name,Z),Q=Hq(J,["type","call_id","status"]),f=Hq(J,["type","call_id"]);return{role:"assistant",timestamp:z,sessionId:Y,blocks:[{type:"tool_call",callId:X,name:G,input:Q},{type:"tool_result",callId:X,output:f,isError:!1}]}}function o2(J){let z=s7(J.content);if(z.length>0)return z;let Y=typeof J.text==="string"?J.text:"";if(Y.length>0)return Y;return s7(J.summary)}function s7(J){if(typeof J==="string")return J;if(!Array.isArray(J))return"";let z=[];for(let Y of J){if(typeof Y==="string"){z.push(Y);continue}if(!WG(Y))continue;let Z=typeof Y.text==="string"?Y.text:"";if(Z.length>0)z.push(Z)}return z.join("")}function Hq(J,z){let Y={};for(let[Z,X]of Object.entries(J))if(!z.includes(Z))Y[Z]=X;return Y}function b8(J,z){return typeof J==="string"&&J.length>0?J:z}function k8(J){if(typeof J!=="string")return J;try{return JSON.parse(J)}catch{return J}}function s2(J){let z,Y=null;for(let Z of J.split(`
|
|
31
|
+
`)){let X=Z.trim();if(!X)continue;if(!AY(X))continue;let G;try{G=JSON.parse(X)}catch{continue}if(!WG(G))continue;let Q=typeof G.timestamp==="string"?t2(G.timestamp):null;if(G.type==="response_item")continue;if(G.type!=="turn.completed")continue;let f=WG(G.usage)?G.usage:void 0;if(!f)continue;let H=a7(f);if(!H)continue;if(Q!==null&&(Y===null||Q>Y))Y=Q,z=H;else if(Y===null)z=H}return z}function t2(J){let z=new Date(J).getTime();return Number.isFinite(z)?z:null}function WG(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}var qZ,_7=5000,p7=!1,t7,r7,n2=200,i2=12;var T8=k(()=>{QG();$7();qZ={sessionsDir(){return QZ.join(m2(),".codex","sessions")},async readdir(J){try{return await h2(J)}catch{return[]}},async readFile(J){return await iZ(J)},stat:v2};t7=/([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})\.jsonl$/i;r7=new WeakMap});import{homedir as e2}from"os";import{join as JA}from"path";function zA(){return JA(e2(),".codex","hooks.json")}var XV,NP,y8;var GV=k(()=>{A8();XV=[{event:"SessionStart",verb:"session-start"},{event:"UserPromptSubmit",verb:"turn-start"},{event:"Stop",verb:"turn-complete"}],NP=XV.map((J)=>J.event);y8=class y8 extends jG{vendor="codex";eventMap=XV;globalSettingsPath(){return zA()}}});function QV(J){if(!Bq(J))return;let z=Bq(J.modelMetrics)?J.modelMetrics:void 0;if(!z)return;let Y=0,Z=0,X=0;for(let Q of Object.values(z)){if(!Bq(Q)||!Bq(Q.usage))continue;Y+=jq(Q.usage.inputTokens,0),Z+=jq(Q.usage.outputTokens,0),X+=jq(Q.usage.cacheReadTokens,0)}let G=jq(J.currentTokens,0);if(Y===0&&Z===0&&X===0&&G===0)return;return{input_tokens:Y,output_tokens:Z,...X>0?{cache_read_input_tokens:X}:{},...G>0?{context_tokens:G}:{}}}function Bq(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}function jq(J,z){return typeof J==="number"&&Number.isFinite(J)?J:z}import{readdir as YA,rm as ZA,stat as XA}from"fs/promises";import{homedir as GA}from"os";import NY from"path";async function u8(J=fZ){let z=NY.join(J.copilotDir(),"session-state");return(await J.readdir(z)).map((Z)=>NY.join(z,Z))}async function qV(J,z=fZ){let Y=[];for(let Z of await u8(z)){let X=await E8(Z,z);if(X.cwd!==J)continue;Y.push({id:X.id??NY.basename(Z),updatedAt:X.updatedAt??""})}return Y.sort((Z,X)=>Z.updatedAt.localeCompare(X.updatedAt)).map((Z)=>Z.id)}async function fV(J,z=fZ){if(!J)return 0;let Y=0;for(let Z of await u8(z)){if((await E8(Z,z)).cwd!==J)continue;try{let{mtimeMs:G}=await z.stat(NY.join(Z,"events.jsonl"));if(G>Y)Y=G}catch{}}return Y}async function QA(J,z=fZ){let Y=await qA(J,z);if(!Y)return{messages:[]};let Z=await z.readFile(NY.join(Y,"events.jsonl")).catch(()=>""),X=HA(Z,J);return{messages:X.messages,...X.usageMetrics?{usageMetrics:X.usageMetrics}:{}}}async function HV(J,z=fZ){return(await QA(J,z)).messages}async function qA(J,z=fZ){for(let Y of await u8(z)){if(NY.basename(Y)===J)return Y;let Z=await E8(Y,z);if(Z.id===J||Z.name?.toLowerCase()===J.toLowerCase())return Y}return}async function E8(J,z=fZ){let Y=await z.readFile(NY.join(J,"workspace.yaml")).catch(()=>"");return fA(Y)}function fA(J){let z={};for(let Y of J.split(`
|
|
32
|
+
`)){let Z=Y.match(/^([A-Za-z_]+):\s*(.*)$/);if(!Z)continue;let X=Z[1],G=Z[2]??"";if(G.startsWith('"')&&G.endsWith('"'))G=G.slice(1,-1).replace(/\\"/g,'"');z[X]=G}return{id:z.id,cwd:z.cwd,name:z.name,updatedAt:z.updated_at,createdAt:z.created_at}}function HA(J,z){let Y=[],Z=new Map,X=z,G,Q=null;for(let f of J.split(`
|
|
33
|
+
`)){let H=f.trim();if(!H)continue;if(!AY(H))continue;let B;try{B=JSON.parse(H)}catch{continue}if(!x8(B)||typeof B.type!=="string")continue;let V=typeof B.timestamp==="string"?B.timestamp:new Date().toISOString(),j=x8(B.data)?B.data:{};if(B.type==="session.start"){let K=typeof j.sessionId==="string"?j.sessionId:void 0;if(K)X=K;continue}if(B.type==="user.message"){let K=typeof j.content==="string"?j.content:"";if(!K)continue;if(!Q)Q=Buffer.from(K.slice(0,BA),"utf8").toString("utf8");Y.push({role:"user",blocks:[{type:"text",text:K}],timestamp:V,sessionId:X});continue}if(B.type==="assistant.message"){let K=[],L=typeof j.content==="string"?j.content:"";if(L)K.push({type:"text",text:L});let A=Array.isArray(j.toolRequests)?j.toolRequests:[];for(let O of A){if(!x8(O))continue;let R=typeof O.id==="string"?O.id:typeof O.toolCallId==="string"?O.toolCallId:"tool",x=typeof O.name==="string"?O.name:typeof O.toolName==="string"?O.toolName:"tool";K.push({type:"tool_call",callId:R,name:x,input:O.arguments??{}})}if(K.length>0)Y.push({role:"assistant",blocks:K,timestamp:V,sessionId:X});continue}if(B.type==="tool.execution_start"){let K=typeof j.toolCallId==="string"?j.toolCallId:void 0,L=typeof j.toolName==="string"?j.toolName:"tool";if(K)Z.set(K,L);continue}if(B.type==="tool.execution_complete"){let K=typeof j.toolCallId==="string"?j.toolCallId:void 0;if(!K)continue;let L=Z.get(K)??(typeof j.toolName==="string"?j.toolName:"tool"),A=j.result??(j.success===!1?{success:!1}:void 0);Y.push({role:"assistant",blocks:[{type:"tool_result",callId:K,output:A,isError:j.success===!1}],timestamp:V,sessionId:X});continue}if(B.type==="session.shutdown")G=QV(j)}return{messages:Y,usageMetrics:G,firstUserMessage:Q}}function x8(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}var fZ,BA=200;var BV=k(()=>{QG();fZ={copilotDir(){let J=process.env.COPILOT_HOME?.trim();if(J)return J;return NY.join(GA(),".copilot")},async readdir(J){try{return await YA(J)}catch{return[]}},async readFile(J){return await iZ(J)},stat:XA,async rm(J){await ZA(J,{recursive:!0,force:!0})}}});function w8(J){return JJ(J).createHookAdapter()}class Wq{vendor;constructor(J){this.vendor=J}supportsHooks(){return!1}globalSettingsPath(){return""}activityDetailFromPayload(){return}async installActivityHooks(){}async removeActivityHooks(){}supportsWorktreeSync(){return!1}async removeWorktreeSyncHook(){}async installWorktreeWatchHook(){}async removeWorktreeWatchHook(){}}var P8=k(()=>{kY()});import{readFile as jV}from"fs/promises";class Vq{supportsCompletionMarkers(){return!0}}function VG(J){return JJ(J).createTurnDetector()}function KA(J,z="claude",Y=0){let Z=null,X=0;for(let G of J.split(`
|
|
34
|
+
`)){X++;let Q=WV(G);if(!Q)continue;let f=KV(Q.message)?Q.message:Q;if(f.role!=="assistant")continue;if(!("content"in f))continue;let H=VV(Q,Y),B={id:`claude:${z}:${H}:${X}`,timestampMs:H,source:"claude"};if(!Z||B.timestampMs>=Z.timestampMs)Z=B}return Z}function UA(J,z="codex"){let Y=null,Z=0;for(let X of J.split(`
|
|
35
|
+
`)){Z++;let G=WV(X);if(!G||G.type!=="turn.completed")continue;let Q=VV(G,0),f={id:`codex:${z}:${Q}:${Z}`,timestampMs:Q,source:"codex"};if(!Y||f.timestampMs>=Y.timestampMs)Y=f}return Y}function WV(J){let z=J.trim();if(!z)return null;try{let Y=JSON.parse(z);return KV(Y)?Y:null}catch{return null}}function VV(J,z){let Y=typeof J.timestamp==="string"?Date.parse(J.timestamp):Number.NaN;return Number.isFinite(Y)?Y:z}function KV(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}var WA,h8,VA,v8,Kq;var Uq=k(()=>{j8();T8();kY();WA={listSessionFiles:(J)=>qG(J),readFile:(J)=>jV(J,"utf8")};h8=class h8 extends Vq{deps;vendor="claude";cache=new Map;constructor(J=WA){super();this.deps=J}async latestCompletion(J){let z=await this.deps.listSessionFiles(J),Y=null,Z=new Map;for(let X of z.slice(0,4)){let G=this.cache.get(X.path),Q;if(G&&X.mtimeMs>0&&G.mtimeMs===X.mtimeMs)Q=G.marker;else{let f=await this.deps.readFile(X.path).catch(()=>"");Q=KA(f,X.path,X.mtimeMs)}if(Z.set(X.path,{mtimeMs:X.mtimeMs,marker:Q}),Q&&(!Y||Q.timestampMs>Y.timestampMs))Y=Q}return this.cache=Z,Y}};VA={findLatestRollout:(J)=>I8(J),readFile:(J)=>jV(J,"utf8")};v8=class v8 extends Vq{deps;vendor="codex";cache=null;constructor(J=VA){super();this.deps=J}async latestCompletion(J){if(!J)return null;let z=await this.deps.findLatestRollout(J);if(!z)return null;if(this.cache&&this.cache.path===z.path&&z.mtimeMs>0&&this.cache.mtimeMs===z.mtimeMs)return this.cache.marker;let Y=await this.deps.readFile(z.path).catch(()=>"");if(!Y)return null;let Z=UA(Y,z.path);return this.cache={path:z.path,mtimeMs:z.mtimeMs,marker:Z},Z}};Kq=class Kq extends Vq{vendor;constructor(J){super();this.vendor=J}supportsCompletionMarkers(){return!1}async latestCompletion(){return null}}});function AA(J){return{vendor:J,builtin:!1,displayName:J,defaultCommand:[J],history:DA,detectAccount:async()=>({binary:{found:!1,error:"custom engine: kobe has no account detector for it"},account:{kind:"none"}}),createHookAdapter:()=>new Wq(J),createTurnDetector:()=>new Kq(J)}}function JJ(J){return qJ(J)?OA[J]:AA(J)}var DA,LA,MA,FA,OA;var kY=k(()=>{$1();ZZ();j8();i7();T8();GV();BV();P8();Uq();DA={async listSessionIdsForWorktree(){return[]},async readHistory(){return[]},async latestTranscriptMtimeForWorktree(){return 0}},LA={async listSessionIdsForWorktree(J){return[...await qG(J)].sort((Y,Z)=>Y.mtimeMs-Z.mtimeMs).map((Y)=>Y.sessionId)},readHistory:(J)=>N7(J),latestTranscriptMtimeForWorktree:(J)=>C7(J)},MA={listSessionIdsForWorktree:(J)=>JV(J),readHistory:(J)=>YV(J),latestTranscriptMtimeForWorktree:(J)=>zV(J)},FA={listSessionIdsForWorktree:(J)=>qV(J),readHistory:(J)=>HV(J),latestTranscriptMtimeForWorktree:(J)=>fV(J)},OA={claude:{vendor:"claude",builtin:!0,displayName:"Claude",defaultCommand:["claude"],history:LA,detectAccount:(J)=>eQ(J),createHookAdapter:()=>new R8,createTurnDetector:()=>new h8},codex:{vendor:"codex",builtin:!0,displayName:"Codex",defaultCommand:["codex"],effortLevels:["none","low","medium","high","xhigh"],history:MA,detectAccount:(J)=>Jq(J),createHookAdapter:()=>new y8,createTurnDetector:()=>new v8},copilot:{vendor:"copilot",builtin:!0,displayName:"Copilot",defaultCommand:["copilot"],history:FA,detectAccount:(J)=>zq(J),createHookAdapter:()=>new Wq("copilot"),createTurnDetector:()=>new Kq("copilot")}}});async function rZ(J,z){if(!z)return 0;return JJ(J).history.latestTranscriptMtimeForWorktree(z)}var Dq=k(()=>{kY()});function UV(J){return typeof J==="string"&&RA.includes(J)}var KG=(J)=>J,_1="claude",RA;var rJ=k(()=>{RA=["backlog","in_progress","in_review","done","canceled","error"]});function Lq(J){return gA.includes(J)}function DV(J,z,Y){switch(z){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 gA;var Mq=k(()=>{gA=["session-start","turn-start","turn-complete","turn-failed","awaiting-input","session-end"]});function CA(){let J=process.env.KOBE_ENGINE_STATE_TTL_MS;if(J===void 0)return LV;let z=Number(J);return Number.isFinite(z)&&z>0?z:LV}class m8{bus;staleMs;now;livenessAt;activity=new Map;constructor(J,z=CA(),Y=()=>Date.now(),Z=()=>Promise.resolve(void 0)){this.bus=J;this.staleMs=z;this.now=Y;this.livenessAt=Z}report(J,z,Y){let Z=this.activity.get(J);if(Z?.lapse)clearTimeout(Z.lapse);let X=DV(Z?.state,z,Y),G=this.now(),Q={state:X,detail:Y,at:G};if(X!=="idle"&&X!=="turn_complete")Q.lapse=this.armLapse(J,G);this.activity.set(J,Q),this.bus.publish("engine-state",this.payload(J,Q))}armLapse(J,z){let Y=setTimeout(()=>{this.handleLapse(J,z)},this.staleMs);return Y.unref?.(),Y}async handleLapse(J,z){let Y=this.activity.get(J);if(!Y||Y.at!==z)return;let Z;try{Z=await this.livenessAt(J)}catch{Z=void 0}let X=this.activity.get(J);if(!X||X.at!==z)return;if(Z!==void 0&&Z>this.now()-this.staleMs){X.lapse=this.armLapse(J,z);return}this.publishIdle(J)}clearTask(J){let z=this.activity.get(J);if(z?.lapse)clearTimeout(z.lapse);if(this.activity.delete(J),z)this.bus.publish("engine-state",{taskId:J,state:"idle",at:this.now()})}snapshotByTask(){let J={};for(let[z,Y]of this.activity)J[z]=this.payload(z,Y);return J}currentNonIdle(){let J=[];for(let[z,Y]of this.activity)if(Y.state!=="idle")J.push(this.payload(z,Y));return J}close(){for(let J of this.activity.values())if(J.lapse)clearTimeout(J.lapse);this.activity.clear()}publishIdle(J){let z={state:"idle",at:this.now()};this.activity.set(J,z),this.bus.publish("engine-state",this.payload(J,z))}payload(J,z){return{taskId:J,state:z.state,...z.detail?{detail:z.detail}:{},at:z.at}}}var LV=600000;var MV=k(()=>{Mq()});function FV(J){if(typeof J!=="string")return"";let z=J.replace(/\s+/g," ").trim();if(z.length===0)return"";let Y=[...z];if(Y.length<=40)return z;return`${Y.slice(0,40).join("")}\u2026`}function Fq(J,z){let Y=J.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,32),Z=z.slice(-6).toLowerCase();return`kobe/${Y||"task"}-${Z}`}function OV(J){let z=J.find((X)=>X.role==="user");if(!z)return"";let Y=z.blocks.filter((X)=>X.type==="text").map((X)=>X.text).join(" "),Z=FV(Y);return Z.length>0?Buffer.from(Z,"utf8").toString("utf8"):Z}async function oZ(J,z=_1){if(!J)return"";let{history:Y}=JJ(z),Z=await Y.listSessionIdsForWorktree(J);for(let X of Z.slice(0,NA)){let G=OV(await Y.readHistory(X));if(G)return G}return""}async function AV(J,z){if(!z)return"";try{return OV(await JJ(J).history.readHistory(z))}catch{return""}}var NA=8;var Oq=k(()=>{kY();rJ()});function RV(J){let z=String(J),Y=z.length-1;return I1.context.id+(Y?String.fromCharCode(96+Y):"")+z}function n8(J){I1.context=J}function kA(){return{...I1.context,id:I1.getNextContextId(),count:0}}function HZ(J,z){let Y=U1,Z=l0,X=J.length===0,G=z===void 0?Z:z,Q=X?{owned:null,cleanups:null,context:null,owner:null}:{owned:null,cleanups:null,context:G?G.context:null,owner:G},f=X?()=>J(()=>{throw Error("Dispose method must be an explicit argument to createRoot function")}):()=>J(()=>r1(()=>bY(Q)));Kz.afterCreateOwner&&Kz.afterCreateOwner(Q),l0=Q,U1=null;try{return bJ(f,!0)}finally{U1=Y,l0=Z}}function r(J,z){z=z?Object.assign({},Cq,z):Cq;let Y={value:J,observers:null,observerSlots:null,comparator:z.equals||void 0};{if(z.name)Y.name=z.name;if(z.internal)Y.internal=!0;else if(TV(Y),Kz.afterCreateSignal)Kz.afterCreateSignal(Y)}let Z=(X)=>{if(typeof X==="function")if(H0&&H0.running&&H0.sources.has(Y))X=X(Y.tValue);else X=X(Y.value);return l8(Y,X)};return[yV.bind(Y),Z]}function gV(J,z,Y){let Z=eZ(J,z,!0,EJ,Y);if(tZ&&H0&&H0.running)p1.push(Z);else BZ(Z)}function Tz(J,z,Y){let Z=eZ(J,z,!1,EJ,Y);if(tZ&&H0&&H0.running)p1.push(Z);else BZ(Z)}function r0(J,z,Y){IV=mA;let Z=eZ(J,z,!1,EJ,Y),X=LG&&wJ(LG);if(X)Z.suspense=X;if(!Y||!Y.render)Z.user=!0;WJ?WJ.push(Z):BZ(Z)}function U0(J,z,Y){Y=Y?Object.assign({},Cq,Y):Cq;let Z=eZ(J,z,!0,0,Y);if(Z.observers=null,Z.observerSlots=null,Z.comparator=Y.equals||void 0,tZ&&H0&&H0.running)Z.tState=EJ,p1.push(Z);else BZ(Z);return yV.bind(Z)}function xA(J){return J&&typeof J==="object"&&"then"in J}function Sq(J,z,Y){let Z,X,G;if(typeof z==="function")Z=J,X=z,G=Y||{};else Z=!0,X=J,G=z||{};let Q=null,f=c8,H=null,B=!1,V=!1,j="initialValue"in G,K=typeof Z==="function"&&U0(Z),L=new Set,[A,O]=(G.storage||r)(G.initialValue),[R,x]=r(void 0),[a,S]=r(void 0,{equals:!1}),[C,M]=r(j?"ready":"unresolved");if(I1.context){if(H=I1.getNextContextId(),G.ssrLoadFrom==="initial")f=G.initialValue;else if(I1.load&&I1.has(H))f=I1.load(H)}function I(T,f0,_,W0){if(Q===T){if(Q=null,W0!==void 0&&(j=!0),(T===f||f0===f)&&G.onHydrated)queueMicrotask(()=>G.onHydrated(W0,{value:f0}));if(f=c8,H0&&T&&B)H0.promises.delete(T),B=!1,bJ(()=>{H0.running=!0,$(f0,_)},!1);else $(f0,_)}return f0}function $(T,f0){bJ(()=>{if(f0===void 0)O(()=>T);M(f0!==void 0?"errored":j?"ready":"unresolved"),x(f0);for(let _ of L.keys())_.decrement();L.clear()},!1)}function i(){let T=LG&&wJ(LG),f0=A(),_=R();if(_!==void 0&&!Q)throw _;if(U1&&!U1.user&&T)gV(()=>{if(a(),Q){if(T.resolved&&H0&&B)H0.promises.add(Q);else if(!L.has(T))T.increment(),L.add(T)}});return f0}function e(T=!0){if(T!==!1&&V)return;V=!1;let f0=K?K():Z;if(B=H0&&H0.running,f0==null||f0===!1){I(Q,r1(A));return}if(H0&&Q)H0.promises.delete(Q);let _,W0=f!==c8?f:r1(()=>{try{return X(f0,{value:A(),refetching:T})}catch(R0){_=R0}});if(_!==void 0){I(Q,void 0,gq(_),f0);return}else if(!xA(W0))return I(Q,W0,void 0,f0),W0;if(Q=W0,"v"in W0){if(W0.s===1)I(Q,W0.v,void 0,f0);else I(Q,void 0,gq(W0.v),f0);return W0}return V=!0,queueMicrotask(()=>V=!1),bJ(()=>{M(j?"refreshing":"pending"),S()},!1),W0.then((R0)=>I(W0,R0,void 0,f0),(R0)=>I(W0,void 0,gq(R0),f0))}Object.defineProperties(i,{state:{get:()=>C()},error:{get:()=>R()},loading:{get(){let T=C();return T==="pending"||T==="refreshing"}},latest:{get(){if(!j)return i();let T=R();if(T&&!Q)throw T;return A()}}});let J0=l0;if(K)gV(()=>(J0=l0,e(!1)));else e(!1);return[i,{refetch:(T)=>EA(J0,()=>e(T)),mutate:O}]}function Iq(J){return bJ(J,!1)}function r1(J){if(!sZ&&U1===null)return J();let z=U1;U1=null;try{if(sZ)return sZ.untrack(J);return J()}finally{U1=z}}function SJ(J,z,Y){let Z=Array.isArray(J),X,G=Y&&Y.defer;return(Q)=>{let f;if(Z){f=Array(J.length);for(let B=0;B<J.length;B++)f[B]=J[B]()}else f=J();if(G)return G=!1,Q;let H=r1(()=>z(f,X,Q));return X=f,H}}function zJ(J){r0(()=>r1(J))}function S1(J){if(l0===null)console.warn("cleanups created outside a `createRoot` or `render` will never be run");else if(l0.cleanups===null)l0.cleanups=[J];else l0.cleanups.push(J);return J}function uA(J,z){if(UG||(UG=Symbol("error")),l0=eZ(void 0,void 0,!0),l0.context={...l0.context,[UG]:[z]},H0&&H0.running)H0.sources.add(l0);try{return J()}catch(Y){FG(Y)}finally{l0=l0.owner}}function Tq(){return U1}function EA(J,z){let Y=l0,Z=U1;l0=J,U1=null;try{return bJ(z,!0)}catch(X){FG(X)}finally{l0=Y,U1=Z}}function wA(J){if(H0&&H0.running)return J(),H0.done;let z=U1,Y=l0;return Promise.resolve().then(()=>{U1=z,l0=Y;let Z;if(tZ||LG)Z=H0||(H0={sources:new Set,effects:[],promises:new Set,disposed:new Set,queue:new Set,running:!0}),Z.done||(Z.done=new Promise((X)=>Z.resolve=X)),Z.running=!0;return bJ(J,!1),U1=l0=null,Z?Z.done:void 0})}function NV(J,z){let Y=eZ(()=>r1(()=>{return Object.assign(J,{[TA]:!0}),J(z)}),void 0,!0,0);return Y.props=z,Y.observers=null,Y.observerSlots=null,Y.name=J.name,Y.component=J,BZ(Y),Y.tValue!==void 0?Y.tValue:Y.value}function TV(J){if(l0){if(l0.sourceMap)l0.sourceMap.push(J);else l0.sourceMap=[J];J.graph=l0}if(Kz.afterRegisterGraph)Kz.afterRegisterGraph(J)}function yz(J,z){let Y=Symbol("context");return{id:Y,Provider:cA(Y,z),defaultValue:J}}function wJ(J){let z;return l0&&l0.context&&(z=l0.context[J.id])!==void 0?z:J.defaultValue}function PA(J){let z=U0(J),Y=U0(()=>i8(z()),void 0,{name:"children"});return Y.toArray=()=>{let Z=Y();return Array.isArray(Z)?Z:Z!=null?[Z]:[]},Y}function yV(){let J=H0&&H0.running;if(this.sources&&(J?this.tState:this.state))if((J?this.tState:this.state)===EJ)BZ(this);else{let z=p1;p1=null,bJ(()=>Nq(this),!1),p1=z}if(U1){let z=this.observers;if(!z||z[z.length-1]!==U1){let Y=z?z.length:0;if(!U1.sources)U1.sources=[this],U1.sourceSlots=[Y];else U1.sources.push(this),U1.sourceSlots.push(Y);if(!z)this.observers=[U1],this.observerSlots=[U1.sources.length-1];else z.push(U1),this.observerSlots.push(U1.sources.length-1)}}if(J&&H0.sources.has(this))return this.tValue;return this.value}function l8(J,z,Y){let Z=H0&&H0.running&&H0.sources.has(J)?J.tValue:J.value;if(!J.comparator||!J.comparator(Z,z)){if(H0){let X=H0.running;if(X||!Y&&H0.sources.has(J))H0.sources.add(J),J.tValue=z;if(!X)J.value=z}else J.value=z;if(J.observers&&J.observers.length)bJ(()=>{for(let X=0;X<J.observers.length;X+=1){let G=J.observers[X],Q=H0&&H0.running;if(Q&&H0.disposed.has(G))continue;if(Q?!G.tState:!G.state){if(G.pure)p1.push(G);else WJ.push(G);if(G.observers)uV(G)}if(!Q)G.state=EJ;else G.tState=EJ}if(p1.length>1e6){if(p1=[],bA)throw Error("Potential Infinite Loop Detected.");throw Error()}},!1)}return z}function BZ(J){if(!J.fn)return;bY(J);let z=bq;if(kV(J,H0&&H0.running&&H0.sources.has(J)?J.tValue:J.value,z),H0&&!H0.running&&H0.sources.has(J))queueMicrotask(()=>{bJ(()=>{H0&&(H0.running=!0),U1=l0=J,kV(J,J.tValue,z),U1=l0=null},!1)})}function kV(J,z,Y){let Z,X=l0,G=U1;U1=l0=J;try{Z=J.fn(z)}catch(Q){if(J.pure)if(H0&&H0.running)J.tState=EJ,J.tOwned&&J.tOwned.forEach(bY),J.tOwned=void 0;else J.state=EJ,J.owned&&J.owned.forEach(bY),J.owned=null;return J.updatedAt=Y+1,FG(Q)}finally{U1=G,l0=X}if(!J.updatedAt||J.updatedAt<=Y){if(J.updatedAt!=null&&"observers"in J)l8(J,Z,!0);else if(H0&&H0.running&&J.pure){if(!H0.sources.has(J))J.value=Z;H0.sources.add(J),J.tValue=Z}else J.value=Z;J.updatedAt=Y}}function eZ(J,z,Y,Z=EJ,X){let G={fn:J,state:Z,updatedAt:null,owned:null,sources:null,sourceSlots:null,cleanups:null,value:z,owner:l0,context:l0?l0.context:null,pure:Y};if(H0&&H0.running)G.state=0,G.tState=Z;if(l0===null)console.warn("computations created outside a `createRoot` or `render` will never be disposed");else if(l0!==yA)if(H0&&H0.running&&l0.pure)if(!l0.tOwned)l0.tOwned=[G];else l0.tOwned.push(G);else if(!l0.owned)l0.owned=[G];else l0.owned.push(G);if(X&&X.name)G.name=X.name;if(sZ&&G.fn){let Q=G.fn,[f,H]=r(void 0,{equals:!1}),B=sZ.factory(Q,H);S1(()=>B.dispose());let V,j=()=>wA(H).then(()=>{if(V)V.dispose(),V=void 0});G.fn=(K)=>{if(f(),H0&&H0.running){if(!V)V=sZ.factory(Q,j);return V.track(K)}return B.track(K)}}return Kz.afterCreateOwner&&Kz.afterCreateOwner(G),G}function MG(J){let z=H0&&H0.running;if((z?J.tState:J.state)===0)return;if((z?J.tState:J.state)===DG)return Nq(J);if(J.suspense&&r1(J.suspense.inFallback))return J.suspense.effects.push(J);let Y=[J];while((J=J.owner)&&(!J.updatedAt||J.updatedAt<bq)){if(z&&H0.disposed.has(J))return;if(z?J.tState:J.state)Y.push(J)}for(let Z=Y.length-1;Z>=0;Z--){if(J=Y[Z],z){let X=J,G=Y[Z+1];while((X=X.owner)&&X!==G)if(H0.disposed.has(X))return}if((z?J.tState:J.state)===EJ)BZ(J);else if((z?J.tState:J.state)===DG){let X=p1;p1=null,bJ(()=>Nq(J,Y[0]),!1),p1=X}}}function bJ(J,z){if(p1)return J();let Y=!1;if(!z)p1=[];if(WJ)Y=!0;else WJ=[];bq++;try{let Z=J();return hA(Y),Z}catch(Z){if(!Y)WJ=null;p1=null,FG(Z)}}function hA(J){if(p1){if(tZ&&H0&&H0.running)vA(p1);else xV(p1);p1=null}if(J)return;let z;if(H0){if(!H0.promises.size&&!H0.queue.size){let{sources:Z,disposed:X}=H0;WJ.push.apply(WJ,H0.effects),z=H0.resolve;for(let G of WJ)"tState"in G&&(G.state=G.tState),delete G.tState;H0=null,bJ(()=>{for(let G of X)bY(G);for(let G of Z){if(G.value=G.tValue,G.owned)for(let Q=0,f=G.owned.length;Q<f;Q++)bY(G.owned[Q]);if(G.tOwned)G.owned=G.tOwned;delete G.tValue,delete G.tOwned,G.tState=0}CV(!1)},!1)}else if(H0.running){H0.running=!1,H0.effects.push.apply(H0.effects,WJ),WJ=null,CV(!0);return}}let Y=WJ;if(WJ=null,Y.length)bJ(()=>IV(Y),!1);else Kz.afterUpdate&&Kz.afterUpdate();if(z)z()}function xV(J){for(let z=0;z<J.length;z++)MG(J[z])}function vA(J){for(let z=0;z<J.length;z++){let Y=J[z],Z=H0.queue;if(!Z.has(Y))Z.add(Y),tZ(()=>{Z.delete(Y),bJ(()=>{H0.running=!0,MG(Y)},!1),H0&&(H0.running=!1)})}}function mA(J){let z,Y=0;for(z=0;z<J.length;z++){let Z=J[z];if(!Z.user)MG(Z);else J[Y++]=Z}if(I1.context){if(I1.count){I1.effects||(I1.effects=[]),I1.effects.push(...J.slice(0,Y));return}n8()}if(I1.effects&&(I1.done||!I1.count))J=[...I1.effects,...J],Y+=I1.effects.length,delete I1.effects;for(z=0;z<Y;z++)MG(J[z])}function Nq(J,z){let Y=H0&&H0.running;if(Y)J.tState=0;else J.state=0;for(let Z=0;Z<J.sources.length;Z+=1){let X=J.sources[Z];if(X.sources){let G=Y?X.tState:X.state;if(G===EJ){if(X!==z&&(!X.updatedAt||X.updatedAt<bq))MG(X)}else if(G===DG)Nq(X,z)}}}function uV(J){let z=H0&&H0.running;for(let Y=0;Y<J.observers.length;Y+=1){let Z=J.observers[Y];if(z?!Z.tState:!Z.state){if(z)Z.tState=DG;else Z.state=DG;if(Z.pure)p1.push(Z);else WJ.push(Z);Z.observers&&uV(Z)}}}function bY(J){let z;if(J.sources)while(J.sources.length){let Y=J.sources.pop(),Z=J.sourceSlots.pop(),X=Y.observers;if(X&&X.length){let G=X.pop(),Q=Y.observerSlots.pop();if(Z<X.length)G.sourceSlots[Q]=Z,X[Z]=G,Y.observerSlots[Z]=Q}}if(J.tOwned){for(z=J.tOwned.length-1;z>=0;z--)bY(J.tOwned[z]);delete J.tOwned}if(H0&&H0.running&&J.pure)EV(J,!0);else if(J.owned){for(z=J.owned.length-1;z>=0;z--)bY(J.owned[z]);J.owned=null}if(J.cleanups){for(z=J.cleanups.length-1;z>=0;z--)J.cleanups[z]();J.cleanups=null}if(H0&&H0.running)J.tState=0;else J.state=0;delete J.sourceMap}function EV(J,z){if(!z)J.tState=0,H0.disposed.add(J);if(J.owned)for(let Y=0;Y<J.owned.length;Y++)EV(J.owned[Y])}function gq(J){if(J instanceof Error)return J;return Error(typeof J==="string"?J:"Unknown error",{cause:J})}function bV(J,z,Y){try{for(let Z of z)Z(J)}catch(Z){FG(Z,Y&&Y.owner||null)}}function FG(J,z=l0){let Y=UG&&z&&z.context&&z.context[UG],Z=gq(J);if(!Y)throw Z;if(WJ)WJ.push({fn(){bV(Z,Y,z)},state:EJ});else bV(Z,Y,z)}function i8(J){if(typeof J==="function"&&!J.length)return i8(J());if(Array.isArray(J)){let z=[];for(let Y=0;Y<J.length;Y++){let Z=i8(J[Y]);if(Array.isArray(Z))if(Z.length<32768)z.push.apply(z,Z);else for(let X=0;X<Z.length;X++)z.push(Z[X]);else z.push(Z)}return z}return J}function cA(J,z){return function(Z){let X;return Tz(()=>X=r1(()=>{return l0.context={...l0.context,[J]:Z.value},PA(()=>Z.children)}),void 0,z),X}}function SV(J){for(let z=0;z<J.length;z++)J[z]()}function nA(J,z,Y={}){let Z=[],X=[],G=[],Q=0,f=z.length>1?[]:null;return S1(()=>SV(G)),()=>{let H=J()||[],B=H.length,V,j;return H[kq],r1(()=>{let L,A,O,R,x,a,S,C,M;if(B===0){if(Q!==0)SV(G),G=[],Z=[],X=[],Q=0,f&&(f=[]);if(Y.fallback)Z=[dA],X[0]=HZ((I)=>{return G[0]=I,Y.fallback()}),Q=1}else if(Q===0){X=Array(B);for(j=0;j<B;j++)Z[j]=H[j],X[j]=HZ(K);Q=B}else{O=Array(B),R=Array(B),f&&(x=Array(B));for(a=0,S=Math.min(Q,B);a<S&&Z[a]===H[a];a++);for(S=Q-1,C=B-1;S>=a&&C>=a&&Z[S]===H[C];S--,C--)O[C]=X[S],R[C]=G[S],f&&(x[C]=f[S]);L=new Map,A=Array(C+1);for(j=C;j>=a;j--)M=H[j],V=L.get(M),A[j]=V===void 0?-1:V,L.set(M,j);for(V=a;V<=S;V++)if(M=Z[V],j=L.get(M),j!==void 0&&j!==-1)O[j]=X[V],R[j]=G[V],f&&(x[j]=f[V]),j=A[j],L.set(M,j);else G[V]();for(j=a;j<B;j++)if(j in O){if(X[j]=O[j],G[j]=R[j],f)f[j]=x[j],f[j](j)}else X[j]=HZ(K);X=X.slice(0,Q=B),Z=H.slice(0)}return X});function K(L){if(G[j]=L,f){let[A,O]=r(j,{name:"index"});return f[j]=O,z(H[j],A)}return z(H[j])}}}function wV(J,z){if(iA){if(I1.context){let Y=I1.context;n8(kA());let Z=NV(J,z||{});return n8(Y),Z}}return NV(J,z||{})}function Aq(){return!0}function d8(J){return!(J=typeof J==="function"?J():J)?{}:J}function $A(){for(let J=0,z=this.length;J<z;++J){let Y=this[J]();if(Y!==void 0)return Y}}function yq(...J){let z=!1;for(let Q=0;Q<J.length;Q++){let f=J[Q];z=z||!!f&&Vz in f,J[Q]=typeof f==="function"?(z=!0,U0(f)):f}if(IA&&z)return new Proxy({get(Q){for(let f=J.length-1;f>=0;f--){let H=d8(J[f])[Q];if(H!==void 0)return H}},has(Q){for(let f=J.length-1;f>=0;f--)if(Q in d8(J[f]))return!0;return!1},keys(){let Q=[];for(let f=0;f<J.length;f++)Q.push(...Object.keys(d8(J[f])));return[...new Set(Q)]}},lA);let Y={},Z=Object.create(null);for(let Q=J.length-1;Q>=0;Q--){let f=J[Q];if(!f)continue;let H=Object.getOwnPropertyNames(f);for(let B=H.length-1;B>=0;B--){let V=H[B];if(V==="__proto__"||V==="constructor")continue;let j=Object.getOwnPropertyDescriptor(f,V);if(!Z[V])Z[V]=j.get?{enumerable:!0,configurable:!0,get:$A.bind(Y[V]=[j.get.bind(f)])}:j.value!==void 0?j:void 0;else{let K=Y[V];if(K){if(j.get)K.push(j.get.bind(f));else if(j.value!==void 0)K.push(()=>j.value)}}}}let X={},G=Object.keys(Z);for(let Q=G.length-1;Q>=0;Q--){let f=G[Q],H=Z[f];if(H&&H.get)Object.defineProperty(X,f,H);else X[f]=H?H.value:void 0}return X}function X1(J){let z="fallback"in J&&{fallback:()=>J.fallback};return U0(nA(()=>J.each,J.children,z||void 0),void 0,{name:"value"})}function G0(J){let z=J.keyed,Y=U0(()=>J.when,void 0,{name:"condition value"}),Z=z?Y:U0(Y,void 0,{equals:(X,G)=>!X===!G,name:"condition"});return U0(()=>{let X=Z();if(X){let G=J.children;return typeof G==="function"&&G.length>0?r1(()=>G(z?X:()=>{if(!r1(Z))throw aA("Show");return Y()})):G}return J.fallback},void 0,{name:"value"})}function PV(J){let z;if(I1.context&&I1.load)z=I1.load(I1.getContextId());let[Y,Z]=r(z,{name:"errored"});return Rq||(Rq=new Set),Rq.add(Z),S1(()=>Rq.delete(Z)),U0(()=>{let X;if(X=Y()){let G=J.fallback;if(typeof G!=="function"||G.length==0)console.error(X);return typeof G==="function"&&G.length?r1(()=>G(X,()=>Z())):G}return uA(()=>J.children,Z)},void 0,{name:"value"})}var I1,bA=!0,SA=(J,z)=>J===z,Vz,IA,kq,TA,Cq,UG=null,IV,EJ=1,DG=2,yA,c8,l0=null,H0=null,tZ=null,sZ=null,U1=null,p1=null,WJ=null,bq=0,Kz,Yh,CV,LG,dA,iA=!1,lA,aA=(J)=>`Attempting to access a stale value from <${J}> 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.`,Rq,hV;var W1=k(()=>{I1={context:void 0,registry:void 0,effects:void 0,done:!1,getContextId(){return RV(this.context.count)},getNextContextId(){return RV(this.context.count++)}};Vz=Symbol("solid-proxy"),IA=typeof Proxy==="function",kq=Symbol("solid-track"),TA=Symbol("solid-dev-component"),Cq={equals:SA},IV=xV,yA={},c8={},Kz={afterUpdate:null,afterCreateOwner:null,afterCreateSignal:null,afterRegisterGraph:null};[Yh,CV]=r(!1);dA=Symbol("fallback");lA={get(J,z,Y){if(z===Vz)return Y;return J.get(z)},has(J,z){if(z===Vz)return!0;return J.has(z)},set:Aq,deleteProperty:Aq,getOwnPropertyDescriptor(J,z){return{configurable:!0,enumerable:!0,get(){return J.get(z)},set:Aq,deleteProperty:Aq}},ownKeys(J){return J.keys()}};hV={hooks:Kz,writeSignal:l8,registerGraph:TV};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.")});import{spawn as _A}from"child_process";function $8(J,z,Y,Z){if(Y)return J+Z.slowRetryMs;return z+Math.max(Z.minIntervalMs,(z-J)*5)}function a8(J,z){return!J.inFlight&&z>=J.nextAllowedAt}function vV(J,z,Y=Math.random){let Z=Math.max(0,Math.min(1,z)),X=(Y()*2-1)*J*Z;return Math.max(0,J+X)}function mV(J,z,Y){if(z<=0)return Math.min(J,Y);return Math.min(J*2**z,Y)}function JX(J,z,Y,Z){let X=Date.now();if(!a8(J,X))return!1;J.inFlight=!0;let G=new AbortController,Q=setTimeout(()=>G.abort(),z.timeoutMs);return(async()=>{let f,H=!1;try{f=await Y(G.signal),H=!0}catch{}clearTimeout(Q);let B=G.signal.aborted;if(J.nextAllowedAt=$8(X,Date.now(),B,z),J.inFlight=!1,H&&!B)Z(f)})(),!0}function YY(J,z,Y){return new Promise((Z)=>{let X="",G=!1,Q=(H)=>{if(G)return;G=!0,Z({status:H,stdout:X})},f=_A(J,z.slice(),{cwd:Y.cwd,stdio:["ignore","pipe","ignore"],env:Y.env,signal:Y.signal,killSignal:"SIGKILL"});f.stdout?.on("data",(H)=>{X+=String(H)}),f.on("error",()=>Q(null)),f.on("close",(H)=>Q(H))})}var zX=()=>{};function pA(J,z){switch((J??"").toUpperCase()){case"MERGED":return"merged";case"CLOSED":return"closed";case"OPEN":return(z??"").toUpperCase()==="APPROVED"?"ready_to_merge":"open";default:return"unknown"}}function rA(J){let z=(J.status??"").toUpperCase(),Y=(J.conclusion??"").toUpperCase(),Z=(J.state??"").toUpperCase();if(z&&z!=="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 oA(J){if(!J||J.length===0)return"none";let z=!1,Y=!1;for(let Z of J){let X=rA(Z);if(X==="failing")return"failing";if(X==="pending")z=!0;else if(X==="passing")Y=!0}if(z)return"pending";if(Y)return"passing";return"unknown"}function dV(J,z){if(!J||typeof J.number!=="number")return null;return{provider:"github",lifecycle:pA(J.state,J.reviewDecision),checkState:oA(J.statusCheckRollup),number:J.number,url:J.url,title:J.title,baseRef:J.baseRefName,headRef:J.headRefName,reviewDecision:J.reviewDecision||void 0,mergeable:J.mergeable||void 0,lastCheckedAt:z}}function uq(J,z){if(J===z)return!0;if(!J||!z)return!1;return J.provider===z.provider&&J.lifecycle===z.lifecycle&&J.checkState===z.checkState&&J.number===z.number&&J.url===z.url&&J.title===z.title&&J.baseRef===z.baseRef&&J.headRef===z.headRef&&J.reviewDecision===z.reviewDecision&&J.mergeable===z.mergeable}function xq(J,z){return z.some((Y)=>J.includes(Y))}function _8(J){if(J.parseError)return{kind:"error",error:"parse"};if(J.timedOut)return{kind:"error",error:"timeout"};if(J.spawnError)return{kind:"error",error:"missing-binary"};let z=(J.stderr??"").toLowerCase();if(xq(z,JR))return{kind:"empty"};if(xq(z,sA))return{kind:"error",error:"no-remote"};if(xq(z,tA))return{kind:"error",error:"auth"};if(xq(z,eA))return{kind:"error",error:"network"};return{kind:"empty"}}function OG(J,z,Y,Z,X=Math.random){let G=(f)=>Y+vV(f,Z.jitterRatio,X);if(J.kind==="pr")return{nextAllowedAt:G(J.settled?Z.settledMs:Z.tickMs),failures:0};if(J.kind==="empty")return{nextAllowedAt:G(Z.noPrMs),failures:0};if(J.error==="no-remote")return{nextAllowedAt:G(Z.noRemoteMs),failures:0};let Q=z+1;return{nextAllowedAt:G(mV(Z.failureBaseMs,Q-1,Z.failureCapMs)),failures:Q}}var cV="number,url,title,state,baseRefName,headRefName,reviewDecision,mergeable,statusCheckRollup",sA,tA,eA,JR;var p8=k(()=>{zX();sA=["none of the git remotes","no git remote","to use github cli in a github repository","not a github repository"],tA=["gh auth login","authentication required","not logged in","http 401","bad credentials","requires authentication"],eA=["could not resolve host","no such host","dial tcp","connection refused","connection reset","network is unreachable","i/o timeout","timeout","tls handshake","http 5","rate limit","try again"],JR=["no pull requests found","no open pull requests","no pull request found"]});var r8,o8,s8,t8="DIRTY_WORKTREE",e8,JB;var zB=k(()=>{r8=class r8 extends Error{from;to;taskId;constructor(J,z,Y){super(`illegal transition for task ${Y}: ${J} -> ${z}`);this.from=J;this.to=z;this.taskId=Y;this.name="IllegalTransitionError"}};o8=class o8 extends Error{constructor(J){super(`task not found: ${J}`);this.name="TaskNotFoundError"}};s8=class s8 extends Error{constructor(){super("cannot delete a main task; remove the repo from saved repos instead");this.name="CannotDeleteMainTaskError"}};e8=class e8 extends Error{taskId;constructor(J){super(`${t8}: task ${J} worktree has uncommitted or untracked changes`);this.taskId=J;this.name="DirtyWorktreeError"}};JB=class JB extends Error{taskId;cause;constructor(J,z){super(`failed to remove worktree for task ${J}: ${z instanceof Error?z.message:String(z)}`);this.taskId=J;this.cause=z;this.name="WorktreeRemoveFailedError"}}});var nV;var iV=k(()=>{nV=["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"]});function lV(J){let z=J.auth,Y=z.kind==="key"?{kind:"key",keyPath:z.keyPath}:{kind:"password",getPassword:()=>dQ(z.keychainRef)};return{host:J.host,user:J.user,port:J.port,auth:Y,controlPath:PQ(J.host,J.user,J.port)}}function YX(J){let z=oz(J);if(!z)return new cQ;return new cZ(lV(z))}function ZY(J){for(let z of Object.values(z8()))if(J===z.basePath||J.startsWith(`${z.basePath}/`))return new cZ(lV(z));return new cQ}function $V(J){return J&&a1(J)?J:void 0}function ZX(J){let z=ZY(J);return z.isRemote||z.existsSync(J)}function P1(J){return ZY(J).isRemote?Sz():J}var Uz=k(()=>{o1();O1();aH();rH()});import{createHash as zR}from"crypto";import _V from"fs";import PJ from"path";function pV(J){if(!PJ.isAbsolute(J))throw Error(`worktreeRootFor: repo must be an absolute path, got: ${J}`);return PJ.join(fJ(),YR,qR(J))}function rV(J){if(!PJ.isAbsolute(J))throw Error(`managedWorktreeRootsFor: repo must be an absolute path, got: ${J}`);return[pV(J),...GR.map((z)=>PJ.join(J,z))]}function oV(J,z){if(!z||/[/\\\0]/.test(z))throw Error(`worktreePathFor: invalid slug: ${JSON.stringify(z)}`);return PJ.join(pV(J),z)}async function sV(J){if(a1(J)){let Y=oz(J)?.basePath;if(!Y)return[];return YX(J).readdir(eV(Y))}let z=new Set;for(let Y of rV(J))try{for(let Z of _V.readdirSync(Y,{withFileTypes:!0}))if(Z.isDirectory())z.add(Z.name)}catch{}return[...z]}function YB(J,z){if(!PJ.isAbsolute(J)||!PJ.isAbsolute(z))return null;let Y=aV(z);for(let Z of rV(J)){let X=aV(Z),G=PJ.relative(X,Y);if(G!==""&&!G.startsWith("..")&&!PJ.isAbsolute(G))return Z}return null}function tV(J,z){return YB(J,z)!==null}function eV(J){return`${QR(J)}/.kobe/worktrees`}function J5(J,z){if(!z||/[/\\\0]/.test(z))throw Error(`remoteWorktreePathFor: invalid slug: ${JSON.stringify(z)}`);return`${eV(J)}/${z}`}function QR(J){return J.length>1&&J.endsWith("/")?J.replace(/\/+$/,""):J}function aV(J){try{return _V.realpathSync(J)}catch{return PJ.resolve(J)}}function qR(J){let Y=(PJ.basename(J)||"repo").replace(/[^a-zA-Z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"repo",Z=zR("sha1").update(PJ.resolve(J)).digest("hex").slice(0,12);return`${Y}-${Z}`}var YR="worktrees",ZR=".kobe/worktrees",XR=".claude/worktrees",GR;var ZB=k(()=>{o1();Uz();O1();GR=[ZR,XR]});class XB{activeSlugs;random;pool;pendingByRepo=new Map;chain=Promise.resolve();constructor(J,z={}){this.activeSlugs=J;if(this.random=z.random??Math.random,this.pool=z.pool??nV,this.pool.length===0)throw Error("SlugAllocator: animal pool cannot be empty")}async allocate(J){let z=this.chain,Y;this.chain=new Promise((Z)=>{Y=Z}),await z;try{return await this.pickLocked(J)}finally{Y()}}commit(J,z){this.deletePending(J,z)}cancel(J,z){this.deletePending(J,z)}async pickLocked(J){let z=await this.occupiedSlugs(J),Y=this.pool.filter((X)=>!z.has(X));if(Y.length>0){let X=Y[Math.floor(this.random()*Y.length)];return this.addPending(J,X),X}let Z=this.pool[Math.floor(this.random()*this.pool.length)];for(let X=2;;X++){let G=`${Z}-v${X}`;if(!z.has(G))return this.addPending(J,G),G}}async occupiedSlugs(J){let z=new Set(this.pendingByRepo.get(J)??[]);for(let Y of this.activeSlugs(J))if(Y)z.add(Y);for(let Y of await sV(J))z.add(Y);return z}addPending(J,z){let Y=this.pendingByRepo.get(J);if(!Y)Y=new Set,this.pendingByRepo.set(J,Y);Y.add(z)}deletePending(J,z){let Y=this.pendingByRepo.get(J);if(!Y)return;if(Y.delete(z),Y.size===0)this.pendingByRepo.delete(J)}}var z5=k(()=>{iV();ZB()});var Z5={};f1(Z5,{PLACEHOLDER_TASK_TITLE:()=>xz,Orchestrator:()=>Eq});import{realpathSync as fR}from"fs";import{basename as HR,resolve as BR}from"path";function Y5(J){return oz(J)?.basePath??J}class Eq{store;worktrees;slugs;tasksAcc;setTasks;activeTaskAcc;setActiveTaskSig;unsubscribeStore;worktreeLocks=new Map;mainTaskLocks=new Map;constructor(J){this.store=J.store,this.worktrees=J.worktrees,this.slugs=new XB((G)=>this.store.list().filter((Q)=>Q.repo===G&&Q.kind!=="main").map((Q)=>{return Q.worktreePath.match(/([^/\\]+)[/\\]*$/)?.[1]??""}).filter((Q)=>Q.length>0));let[z,Y]=r(this.store.list());this.tasksAcc=z,this.setTasks=(G)=>Y(()=>G);let[Z,X]=r(null);this.activeTaskAcc=Z,this.setActiveTaskSig=(G)=>X(()=>G),this.unsubscribeStore=this.store.subscribe((G)=>{this.setTasks(G.slice())})}async init(){}activeTaskSignal(){return this.activeTaskAcc}async setActiveTask(J){let z=J===null?null:String(J);if(this.setActiveTaskSig(z),z&&this.store.get(z))await this.store.update(z,{})}tasksSignal(){return this.tasksAcc}subscribeTasks(J){return this.store.subscribe(J)}dispose(){this.unsubscribeStore()}listTasks(){return this.store.list()}getTask(J){return this.store.get(J)}async createTask(J){if(!J.repo)throw Error("createTask: repo is required");let z=(J.title??xz).trim()||xz,Y=await this.store.create({repo:J.repo,title:z,branch:J.branch??"",worktreePath:"",status:"backlog",kind:"task",vendor:J.vendor??_1,...J.modelEffort?{modelEffort:J.modelEffort}:{}});if(J.baseRef)this.pendingBaseRefs.set(Y.id,J.baseRef);return Y}async ensureMainTask(J){let{repo:z,key:Y}=AG(J),Z=this.store.list().find((Q)=>Q.kind==="main"&&AG(Q.repo).key===Y);if(Z)return Z;let X=this.mainTaskLocks.get(Y);if(X)return X;let G=(async()=>{let Q=xJ(C1("lastSelectedVendor"),uJ());return await this.store.create({repo:z,title:jR(z),branch:"",worktreePath:Y5(z),status:"backlog",kind:"main",vendor:Q})})();this.mainTaskLocks.set(Y,G);try{return await G}finally{this.mainTaskLocks.delete(Y)}}async ensureWorktree(J){let z=this.requireTask(J);if(z.kind==="main")return Y5(z.repo);if(z.worktreePath)return z.worktreePath;let Y=this.worktreeLocks.get(z.id);if(Y)return Y;let Z=this.createWorktree(z);this.worktreeLocks.set(z.id,Z);try{return await Z}finally{this.worktreeLocks.delete(z.id)}}async createWorktree(J){let z=await this.slugs.allocate(J.repo),Y=J.branch||Fq(J.title,J.id),Z=this.pendingBaseRefs.get(J.id),X;try{X=await this.worktrees.createForTask({repo:J.repo,slug:z,branch:Y,baseRef:Z})}catch(G){throw this.slugs.cancel(J.repo,z),G}try{await this.store.update(J.id,{worktreePath:X.path,branch:Y})}catch(G){throw await this.rollbackWorktree(X.path),this.slugs.cancel(J.repo,z),G}return this.slugs.commit(J.repo,z),this.pendingBaseRefs.delete(J.id),X.path}async rollbackWorktree(J){try{await this.worktrees.remove(J,{force:!0})}catch(z){console.error(`[kobe] ensureWorktree rollback failed for ${J}:`,z)}}async setTitle(J,z){let Y=z.trim();if(!Y)throw Error("setTitle: title is required (empty or whitespace-only rejected)");let Z=this.requireTask(J);if(Z.title===Y)return;await this.store.update(Z.id,{title:Y}),await this.followBranchToTitle(Z,Y)}async followBranchToTitle(J,z){if(J.kind==="main"||!J.worktreePath)return;if(J.branch!==Fq(xz,J.id))return;let Y=Fq(z,J.id);if(Y===J.branch)return;try{await this.setBranch(J.id,Y)}catch(Z){console.error(`[kobe] follow-branch-to-title failed for ${J.id}:`,Z)}}async setBranch(J,z){let Y=z.trim();if(!Y)throw Error("setBranch: branch is required (empty or whitespace-only rejected)");let Z=this.requireTask(J);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(J,z){let Y=this.requireTask(J);if(Y.vendor===z)return;await this.store.update(Y.id,{vendor:z})}async setPinned(J,z){let Y=this.requireTask(J);if(Y.kind==="main")return;let Z=z??!Y.pinned;if((Y.pinned??!1)===Z)return;await this.store.update(Y.id,{pinned:Z})}async moveTask(J,z){let Y=this.requireTask(J);if(Y.kind==="main")return;let Z=this.store.list().filter((X)=>(X.kind??"task")!=="main"&&X.archived===Y.archived&&(X.pinned??!1)===(Y.pinned??!1)).map((X)=>String(X.id));await this.store.move(Y.id,z,Z)}async setArchived(J,z){let Y=this.requireTask(J);if(Y.kind==="main")return;let Z=z??!Y.archived;if(Y.archived===Z)return;await this.store.update(Y.id,{archived:Z})}async reorderTasks(J){if(J.length===0)return;for(let z of J){if(this.requireTask(z.taskId).kind==="main")throw Error(`cannot reorder a main task: ${z.taskId}`);if(!Number.isFinite(z.position))throw Error(`position must be a finite number: ${z.taskId}`)}await this.store.reorder(J.map((z)=>({id:z.taskId,position:z.position})))}async setStatus(J,z){let Y=this.requireTask(J);if(Y.status===z)return;if(Y.status==="done"&&z==="error"||Y.status==="error"&&z==="done")throw new r8(Y.status,z,Y.id);await this.store.update(Y.id,{status:z})}async setPRStatus(J,z){let Y=this.requireTask(J);if(uq(Y.prStatus,z??void 0))return;await this.store.update(Y.id,{prStatus:z??void 0})}async deleteTask(J,z){let Y=this.store.get(J);if(!Y)return;if(Y.kind==="main")throw new s8;let Z=z?.force===!0;if(Y.worktreePath){if(!Z){let X=!1;try{X=await this.worktrees.isDirty(Y.worktreePath)}catch{}if(X)throw new e8(Y.id)}try{await this.worktrees.remove(Y.worktreePath,{force:Z})}catch(X){throw new JB(Y.id,X)}}await this.store.remove(Y.id),this.pendingBaseRefs.delete(Y.id),this.worktreeLocks.delete(Y.id)}async forgetProject(J){if(!J)throw Error("forgetProject: repo is required");let z=AG(J).key;for(let Y of gJ())if(AG(Y).key===z)eH(Y);for(let Y of this.store.list()){if(Y.kind!=="main")continue;if(AG(Y.repo).key!==z)continue;await this.store.remove(Y.id),this.pendingBaseRefs.delete(Y.id),this.worktreeLocks.delete(Y.id)}}async discoverAdoptableWorktrees(J){if(!J)throw Error("discoverAdoptableWorktrees: repo is required");let z=await this.worktrees.listAll(J),Y=new Set(this.store.list().filter((Z)=>Z.worktreePath).map((Z)=>XX(Z.worktreePath)));return z.filter((Z)=>!Y.has(XX(Z.path)))}async adoptWorktree(J){if(!J.repo)throw Error("adoptWorktree: repo is required");if(!J.worktreePath)throw Error("adoptWorktree: worktreePath is required");let z=XX(J.worktreePath),Y=this.adoptLocks.get(z);if(Y)return Y;let Z=this.adoptWorktreeLocked(J,z);this.adoptLocks.set(z,Z);try{return await Z}finally{this.adoptLocks.delete(z)}}async adoptWorktreeLocked(J,z){let Y=this.store.list().find((f)=>f.worktreePath&&XX(f.worktreePath)===z);if(Y){if(J.ifExists==="return")return Y;throw Error(`adoptWorktree: ${J.worktreePath} is already adopted as a task`)}let X=(await this.worktrees.listAll(J.repo)).find((f)=>XX(f.path)===z);if(!X)throw Error(`adoptWorktree: ${J.worktreePath} is not an adoptable git worktree of ${J.repo} (unknown, detached, or the main checkout)`);let G=J.branch?.trim()||X.branch,Q=(J.title??HR(X.path)).trim()||xz;return this.store.create({repo:J.repo,title:Q,branch:G,worktreePath:X.path,status:"backlog",kind:"task",vendor:J.vendor??_1})}pendingBaseRefs=new Map;adoptLocks=new Map;requireTask(J){let z=this.store.get(J);if(!z)throw new o8(String(J));return z}}function jR(J){let z=J.split(/[/\\]/).filter(Boolean);return z.length>0?z[z.length-1]??J:J}function AG(J){let z=pz(J);return{repo:z,key:a1(z)?z:XX(z)}}function XX(J){try{return fR(J)}catch{return BR(J)}}var xz="(new task)";var RG=k(()=>{W1();p8();O1();rJ();$1();zB();z5()});function GX(J,z,Y){if(!z)return J;let Z=YX(z);return Z.ensureReady(),Z.wrapCommand(J,{tty:!0,cwd:Y})}function n1(){let J=[];for(let z of["KOBE_HOME_DIR","KOBE_DAEMON_SOCKET_PATH","KOBE_TMUX_SOCKET"]){let Y=process.env[z];if(Y&&Y.length>0)J.push(`${z}=${Z1(Y)}`)}return J.length>0?`${J.join(" ")} `:""}var gG="@kobe_remote";var jZ=k(()=>{Uz();Wz()});function wq(){return _z(WZ,!1)}var WZ="experimental.autoStatus";var CG=k(()=>{eY()});function GB(){return _z(VZ,!1)}var VZ="experimental.dispatcher";var Pq=k(()=>{eY()});import{randomUUID as WR}from"crypto";function Dz(J){return`engineCommand.${J}`}function Lz(J){return`engineName.${J}`}function KZ(J){return C1(Lz(J))?.trim()||QB[J]||J}function NG(J){return JJ(J??"claude").defaultCommand}function VR(J){let z=[],Y=/"([^"]*)"|'([^']*)'|(\S+)/g;for(let Z=Y.exec(J);Z!==null;Z=Y.exec(J))z.push(Z[1]??Z[2]??Z[3]??"");return z}function oJ(J,z){let Y=J??"claude",Z=C1(Dz(Y))?.trim(),X=(()=>{if(Z){let G=VR(Z);if(G.length>0)return G}return NG(Y)})();return KR(X,Y,z)}function KR(J,z,Y){let Z=Y?.trim();if(!Z)return J;let X=z??"claude";if(!JJ(X).effortLevels?.includes(Z))return J;if(X==="codex")return[...J,"-c",`model_reasoning_effort=${Z}`];return J}function QX(J,z){if((z??"claude")!=="claude")return{argv:J,sessionId:null};if(J.some((Z)=>UR.has(Z)))return{argv:J,sessionId:null};let Y=WR();return{argv:[...J,"--session-id",Y],sessionId:Y}}function UZ(){let J=(z)=>/^[A-Za-z0-9_/.:=-]+$/.test(z)?z:`'${z.replace(/'/g,"'\\''")}'`;try{return[...b1(),"api"].map(J).join(" ")}catch{return"kobe api"}}function DR(J,z=UZ()){return[`You are running inside kobe (a local multi-session task manager) as task ${J}.`,"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:",` ${z} set-status --task-id ${J} --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(`
|
|
36
|
+
`)}function LR(J,z=UZ()){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:",` ${z} note --task-id ${J} --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(`
|
|
37
|
+
`)}function MR(J,z=UZ(),Y={}){let Z=[];if((Y.status??wq)())Z.push(DR(J,z));if((Y.notes??GB)())Z.push(LR(J,z));return Z.length>0?Z.join(`
|
|
38
|
+
|
|
39
|
+
`):null}function hq(J,z,Y,Z={}){if(!Y)return J;if((z??"claude")!=="claude")return J;if(J.includes("--append-system-prompt")||J.includes("--append-system-prompt-file"))return J;let X=MR(Y,UZ(),Z);if(!X)return J;return[...J,"--append-system-prompt",X]}function FR(J,z=UZ()){return[`You are running inside kobe (a local multi-session task manager) as this repository's DISPATCHER (task ${J}, 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: \`${z} 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: \`${z} 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(`
|
|
40
|
+
`)}function vq(J,z,Y,Z=GB){if(!Y||!Z())return J;if((z??"claude")!=="claude")return J;if(J.includes("--append-system-prompt")||J.includes("--append-system-prompt-file"))return J;return[...J,"--append-system-prompt",FR(Y)]}var QB,UR;var sJ=k(()=>{zY();kY();CG();Pq();O1();$1();QB=Object.fromEntries(pY.map((J)=>[J,JJ(J).displayName]));UR=new Set(["--session-id","--resume","-r","--continue","-c","--from-pr"])});import{spawnSync as OR}from"child_process";function X5(J,z){if(J==="darwin")return"pbcopy";if(J==="linux"){for(let Y of AR)if(z(Y.binary))return Y.command;return null}return null}function Q5(J){let z=[["set-option","-g","set-clipboard","on"]];if(J)for(let Y of RR)for(let Z of gR)z.push(["bind-key","-T",Y,Z,"send-keys","-X","copy-pipe-and-cancel",J]);return z}var AR,G5=(J)=>{try{let z=process.platform==="win32"?"where":"which";return OR(z,[J],{encoding:"utf8"}).status===0}catch{return!1}},RR,gR;var q5=k(()=>{AR=[{binary:"wl-copy",command:"wl-copy"},{binary:"xclip",command:"xclip -selection clipboard -in"},{binary:"xsel",command:"xsel --clipboard --input"}];RR=["copy-mode","copy-mode-vi"],gR=["MouseDragEnd1Pane","y","Enter"]});import{existsSync as f5,readFileSync as CR}from"fs";function H5(){DZ=null}function NR(){let J=yW();if(f5(J))return{canonical:J,found:J};let z=J.replace(/\.yaml$/,".yml");if(f5(z))return{canonical:J,found:z};return{canonical:J,found:null}}function mq(){if(DZ)return DZ;let{canonical:J,found:z}=NR();if(!z)return DZ={path:J,exists:!1,doc:null,warnings:[]},DZ;let Y=[],Z=null;try{let X=CR(z,"utf8");Z=Bun.YAML.parse(X)}catch(X){let G=X instanceof Error?X.message:String(X);Y.push(`could not read/parse ${z}: ${G}`)}return DZ={path:J,exists:!0,doc:Z,warnings:Y},DZ}var DZ=null;var qB=k(()=>{o1()});function qX(J,z){let Y=`alternating [${J}, ${z}] pairs`;return{layout:Y,validateCount:(Z)=>Z>=2&&Z%2===0?null:`needs ${Y} (an even number of chords \u2014 got ${Z})`}}function xR(J,z){let Y=J.trim().toLowerCase();if(!Y)return{error:"empty chord"};let Z=Y.split("+"),X=Z.pop()??"";if(X===""&&Z.length>0){if(X="+",Z[Z.length-1]==="")Z.pop()}if(!X)return{error:`"${J}": no key after the modifiers`};let G=new Set;for(let H of Z){let B=SR[H];if(!B)return{error:`"${J}": unknown modifier "${H}" (use ctrl / cmd / alt / shift)`};G.add(B)}if(X=IR[X]??X,G.has("shift")&&X.length===1&&!z?.allowShiftCharacter)return{error:`"${J}": shift+<character> can never match \u2014 terminals deliver shift+letter as a plain character, not a modifier event`};let Q=yR.filter((H)=>G.has(H)).join("+"),f=Q?`${Q}+${X}`:X;if(X.length>1&&!TR.has(X))return{chord:f,warning:`"${J}": unrecognized key name "${X}" \u2014 the chord may never fire`};return{chord:f}}function cq(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}function uR(J){if(J==="darwin")return["darwin","macos","mac"];if(J==="win32")return["win32","windows"];return[J]}function ER(J){if(!cq(J))return null;let z=J.bindings;if(cq(z))return z;return J}function dq(J,z,Y){let Z=[];if(J===null||J===void 0)return{entries:[],warnings:Z};if(!cq(J))return{entries:[],warnings:["config root must be a YAML mapping (e.g. a top-level `bindings:` key)"]};let X=new Map,G=[];if(J.bindings!==void 0)if(cq(J.bindings))G.push(J.bindings);else Z.push("`bindings:` must be a mapping of id \u2192 chord(s)");for(let Q of uR(z)){let f=J[Q];if(f===void 0)continue;let H=ER(f);if(H)G.push(H);else Z.push(`\`${Q}:\` must be a mapping (or contain a \`bindings:\` mapping)`)}for(let Q of G)for(let[f,H]of Object.entries(Q)){if(H===null||H===!1||Array.isArray(H)&&H.length===0){X.set(f,[]);continue}let B=typeof H==="string"?[H]:Array.isArray(H)?H:null;if(!B){Z.push(`${f}: expected a chord string, a list of chords, or null \u2014 got ${typeof H}`);continue}let V=[],j=!1;for(let K of B){if(typeof K!=="string"){Z.push(`${f}: chord entries must be strings`),j=!0;continue}let L=xR(K,Y?.chordOptsFor?.(f));if("error"in L){Z.push(`${f}: ${L.error}`),j=!0;continue}if(L.warning)Z.push(`${f}: ${L.warning}`);if(!V.includes(L.chord))V.push(L.chord)}if(V.length===0&&j){Z.push(`${f}: no valid chords \u2014 keeping the default`);continue}X.set(f,V)}return{entries:Array.from(X,([Q,f])=>({id:Q,keys:f})),warnings:Z}}function wR(J,z){return J===z||J==="global"||z==="global"}function B5(J,z){let Y=[],Z=[];for(let X of z){let G=J.find((j)=>j.id===X.id);if(!G){Y.push(`${X.id}: unknown binding id (press F1 in kobe for the full list)`);continue}let Q=fB[X.id];if(Q){Y.push(`${X.id}: not customizable \u2014 ${Q}`);continue}if(G.keys.length===0){Y.push(`${X.id}: not customizable \u2014 the key is handled outside the keymap (doc-only row)`);continue}let f=kR[X.id];if(f&&X.keys.length>0){let j=f.validateCount(X.keys.length);if(j){Y.push(`${X.id}: ${j} \u2014 keeping the default`);continue}}let H=X.keys.filter((j)=>{if(j.length===1&&bR.has(G.scope))return Y.push(`${X.id}: "${j}" dropped \u2014 a bare character on a ${G.scope}-scope binding would steal typed input (add a modifier)`),!1;return!0});if(H.length===0&&X.keys.length>0){Y.push(`${X.id}: no chords survived validation \u2014 keeping the default`);continue}if(f&&H.length!==X.keys.length){Y.push(`${X.id}: a dropped chord would shift the slot layout (${f.layout}) \u2014 keeping the default`);continue}let B=G.keys,V=G;if(V.keys=H,G.hint)if(H.length===0)V.hint=void 0;else G.hint.keys=H.join("/");Z.push({id:X.id,keys:H,defaultKeys:B})}for(let X of Z)for(let G of X.keys){let Q=J.find((f)=>f.id===X.id);if(!Q)continue;for(let f of J){if(f.id===X.id)continue;if(!f.keys.includes(G))continue;if(!wR(Q.scope,f.scope))continue;Y.push(`${X.id}: "${G}" also fires ${f.id} (${f.scope} scope) \u2014 last registration wins; consider a different chord`)}}return{applied:Z,warnings:Y}}var fB,kR,bR,SR,IR,TR,yR;var nq=k(()=>{fB={"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)"};kR={"sidebar.nav":qX("down","up"),"files.nav":qX("down","up"),"sidebar.search.nav":qX("down","up"),"files.hierarchy":qX("collapse","expand"),"sidebar.view":qX("previous view","next view"),"files.tab":qX("previous tab","next tab")},bR=new Set(["global","workspace","terminal"]),SR={ctrl:"ctrl",control:"ctrl",ctl:"ctrl",cmd:"cmd",command:"cmd",meta:"cmd",super:"cmd",win:"cmd",alt:"alt",option:"alt",opt:"alt",shift:"shift"},IR={esc:"escape",spacebar:"space",pgup:"pageup",pgdn:"pagedown",pgdown:"pagedown"},TR=new Set(["up","down","left","right","pageup","pagedown","home","end","insert","delete","backspace","tab","space","escape","enter","return",...Array.from({length:12},(J,z)=>`f${z+1}`)]),yR=["ctrl","cmd","alt","shift"]});function fX(J){return J in j5}function FZ(J,z){let Y=J.split("+"),Z=Y.pop()??"";if(Z===""&&Y.length>0){if(Z="+",Y[Y.length-1]==="")Y.pop()}let X=new Set(Y);if(X.has("cmd"))return{error:`"${J}": the Command key never reaches tmux \u2014 use ctrl/alt/shift`};let G;if(Z.length===1)G=X.has("shift")?Z.toUpperCase():Z;else{let H=hR[Z];if(!H)return{error:`"${J}": tmux can't bind the key "${Z}"`};G=H}let Q=/^f\d+$/.test(Z);if(X.size===0&&!Q&&!z?.allowBare)return{error:`"${J}": 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 f="";if(X.has("ctrl"))f+="C-";if(X.has("alt"))f+="M-";if(X.has("shift"))f+="S-";return{key:f+G}}function V5(){let J={};for(let[Y,Z]of Object.entries(MZ)){let X=FZ(Z,{allowBare:fX(Y)});if("error"in X)throw Error(`default tmux chord for ${Y} failed to translate: ${X.error}`);J[Y]={chord:Z,key:X.key}}let z=SY.map((Y)=>{let Z=FZ(Y);if("error"in Z)throw Error(`default tmux focus chord ${Y} failed to translate`);return{chord:Y,key:Z.key}});return{binds:J,focus:z,overridden:new Set,warnings:[]}}function HB(J){let z=V5(),Y=new Set;for(let Z of J){if(!Z.id.startsWith("tmux."))continue;if(Z.id===uz){if(Z.keys.length===0){z.focus=[null,null,null,null],Y.add(uz);continue}if(Z.keys.length!==SY.length){z.warnings.push(`${uz}: needs exactly 4 chords in order left/down/up/right (got ${Z.keys.length}) \u2014 keeping the default`);continue}let f=[],H=!0;for(let B of Z.keys){let V=FZ(B);if("error"in V){z.warnings.push(`${uz}: ${V.error} \u2014 keeping the default`),H=!1;break}f.push({chord:B,key:V.key})}if(!H)continue;z.focus=f,Y.add(uz);continue}if(!(Z.id in MZ)){z.warnings.push(`${Z.id}: unknown tmux binding id`);continue}let X=Z.id;if(Z.keys.length===0){z.binds[X]=null,Y.add(X);continue}if(Z.keys.length>1)z.warnings.push(`${X}: tmux bindings take ONE chord \u2014 using "${Z.keys[0]}", ignoring the rest`);let G=Z.keys[0],Q=FZ(G,{allowBare:fX(X)});if("error"in Q){z.warnings.push(`${X}: ${Q.error} \u2014 keeping the default`);continue}if(G!==MZ[X])Y.add(X);z.binds[X]={chord:G,key:Q.key}}return z.overridden=Y,z}function BB(J){return J.startsWith("tmux.")?{allowShiftCharacter:!0}:{}}function K5(){LZ=null}function iq(){if(LZ)return LZ;let J=mq();if(!J.exists||J.doc===null)return LZ=V5(),LZ;let z=dq(J.doc,process.platform,{chordOptsFor:BB}),Y=z.warnings.filter((X)=>X.startsWith("tmux.")),Z=HB(z.entries);Z.warnings=[...Y,...Z.warnings];for(let X of Z.warnings)console.warn(`[kobe/keybindings] ${X}`);return LZ=Z,LZ}var PR,j5,W5,MZ,uz="tmux.focus",SY,hR,LZ=null;var lq=k(()=>{qB();nq();PR={"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"},j5={"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"},W5=["F6","F7","F8","F9","F10","F11"],MZ={...PR,...j5};SY=["ctrl+h","ctrl+j","ctrl+k","ctrl+l"],hR={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},(J,z)=>[`f${z+1}`,`F${z+1}`]))}});async function kG(J,z){let Y=null;for(let X=0;X<24;X++){let G=await HX(J);if(G){if(!z)return{pane:G,ready:!0};let Q=(await BX(G)).trim();if(Q.length>0&&Q===Y)return{pane:G,ready:!0};Y=Q}await U5(250)}return{pane:await HX(J)||await jB(J),ready:!1}}async function bG(J,z){let Y=`kobe-api-${J.replace(/[^A-Za-z0-9]/g,"")}`;await c0(["set-buffer","-b",Y,"--",z]),await c0(["paste-buffer","-p","-d","-b",Y,"-t",J]),await U5(vR),await SG(J,"Enter")}async function D5(J,z){let{pane:Y}=await kG(J,!0);if(!Y)return;await bG(Y,z.text)}var U5=(J)=>new Promise((z)=>setTimeout(z,J)),vR=150;var $q=k(()=>{h1()});function L5(J,z){if(J===null)return{kind:"create",reason:"no session with this name \u2014 build fresh"};let Y=J.worktree===z.cwd,Z=!z.vendor||J.vendor===z.vendor;if(J.claudePaneAlive&&Y&&Z)return{kind:"reuse",reason:"healthy: engine pane alive, worktree + vendor match"};if(Y&&!Z&&z.hasEngineCommand)return{kind:"respawn-engine",reason:`vendor drift: session tagged ${J.vendor===""?"<untagged>":`"${J.vendor}"`}, task wants "${z.vendor}" \u2014 relaunch engine pane in place (KOB-232)`};if(Y&&Z&&J.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:J.worktree===""?"legacy session with no @kobe_worktree tag \u2014 rebuild in the right place":`worktree drift: session tagged "${J.worktree}", task wants "${z.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 jX;var aq=k(()=>{jX={$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 WX;var _q=k(()=>{WX={$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 VX;var pq=k(()=>{VX={$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 KX;var rq=k(()=>{KX={$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 UX;var oq=k(()=>{UX={$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 DX;var sq=k(()=>{DX={$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 LX;var tq=k(()=>{LX={$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"}}}});var M5;var F5=k(()=>{aq();_q();pq();rq();oq();sq();tq();M5={claude:jX,conductor:WX,nord:KX,opencode:UX,dracula:VX,tokyonight:LX,"osaka-jade":DX}});function aR(J){let z=/^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/.exec(J);if(!z)return null;let Y=z[1];if(Y.length===3){let[Z,X,G]=Y;return`#${Z}${Z}${X}${X}${G}${G}`.toLowerCase()}return`#${Y.slice(0,6)}`.toLowerCase()}function O5(J,z,Y="dark"){let Z=J.defs??{};function X(Q,f){if(typeof Q==="string"){if(Q==="transparent"||Q==="none")return null;if(Q.startsWith("#"))return aR(Q);if(f.includes(Q))return null;let B=Z[Q]??J.theme[Q];if(B===void 0)return null;return X(B,[...f,Q])}if(!Q||typeof Q!=="object")return null;let H=Q[Y];return typeof H==="string"?X(H,f):null}let G=J.theme[z];if(G===void 0)return null;return X(G,[z])}function eq(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}function Jf(J){if(!eq(J))return{ok:!1,reason:"theme must be a JSON object at the top level"};let z=J;if(!("theme"in z))return{ok:!1,reason:"missing required key `theme`"};let Y=z.theme;if(!eq(Y))return{ok:!1,reason:"`theme` must be an object map"};if("defs"in z&&z.defs!==void 0){if(!eq(z.defs))return{ok:!1,reason:"`defs` must be an object map"};for(let[Z,X]of Object.entries(z.defs))if(typeof X!=="string")return{ok:!1,reason:`defs.${Z} must be a string (hex like "#abc" or a ref name)`}}for(let[Z,X]of Object.entries(Y)){if(typeof X==="string")continue;if(!eq(X))return{ok:!1,reason:`theme.${Z} must be a string or a { dark, light } object (got ${X===null?"null":Array.isArray(X)?"array":typeof X})`};let G=X;if(typeof G.dark!=="string")return{ok:!1,reason:`theme.${Z}.dark must be a string`};if(typeof G.light!=="string")return{ok:!1,reason:`theme.${Z}.light must be a string`}}if("$schema"in z&&z.$schema!==void 0&&typeof z.$schema!=="string")return{ok:!1,reason:"`$schema` must be a string when present"};return{ok:!0,theme:z}}var WB=()=>{};import{readFileSync as _R,readdirSync as pR}from"fs";import{join as A5}from"path";function MX(){return A5(fJ(),"themes")}function IG(){let J=MX(),z;try{z=pR(J)}catch{return[]}let Y=[];for(let Z of z){if(!Z.endsWith(".json"))continue;let X=A5(J,Z),G;try{let H=_R(X,"utf8");G=JSON.parse(H)}catch(H){let B=H instanceof Error?H.message:String(H);console.warn(`[kobe] skipping user theme ${X}: invalid JSON \u2014 ${B}`);continue}let Q=Jf(G);if(!Q.ok){console.warn(`[kobe] skipping user theme ${X}: ${Q.reason}`);continue}let f=Z.slice(0,-5);Y.push({name:f,theme:Q.theme})}return Y}var zf=k(()=>{o1();WB()});import{readFileSync as rR}from"fs";function sR(){try{let J=JSON.parse(rR(lJ(),"utf8")),z=typeof J.activeTheme==="string"&&J.activeTheme?J.activeTheme:"claude",Y=typeof J.focusAccent==="string"&&oR.includes(J.focusAccent)?J.focusAccent:"primary";return{themeName:z,focusAccentSlot:Y,enabled:J.tmuxChromeTheme!=="off"&&J.tmuxBorderTheme!=="off"}}catch{return{themeName:"claude",focusAccentSlot:"primary",enabled:!0}}}function tR(J){return IG().find((Y)=>Y.name===J)?.theme??M5[J]??null}function Mz(J,...z){for(let Y of z){let Z=O5(J,Y);if(Z)return Z}return null}function R5(J,z){let Y=Mz(J,"text"),Z=Mz(J,"background"),X=Mz(J,"textMuted","text"),G=Mz(J,"backgroundPanel","background"),Q=Mz(J,"backgroundElement","backgroundPanel","background"),f=Mz(J,"backgroundMenu","backgroundElement","backgroundPanel","background"),H=Mz(J,"selectedListItemText","background"),B=Mz(J,z,"primary","borderActive","border","text");return{border:Mz(J,"border","text"),activeBorder:B,statusBg:G,statusFg:X,statusMutedFg:X,windowFg:X,currentWindowBg:Q,currentWindowFg:B,activityFg:Mz(J,"info","primary","text"),bellFg:Mz(J,"warning","error","primary","text"),messageBg:f,messageFg:Y,messageCommandFg:B,modeBg:B,modeFg:H??Z}}function tJ(J){let z=[];if(J.bg)z.push(`bg=${J.bg}`);if(J.fg)z.push(`fg=${J.fg}`);if(z.length===0)return null;if(J.attrs)z.push(...J.attrs);return z.join(",")}function C5(J){let z=tJ({bg:J.statusBg,fg:J.statusFg}),Y=tJ({bg:J.statusBg,fg:J.statusMutedFg}),Z=tJ({bg:J.statusBg,fg:J.windowFg});return[{key:"border",option:"pane-border-style",showFlag:"-gwqv",setFlag:"-gw",unsetFlag:"-gwu",value:tJ({fg:J.border})},{key:"active",option:"pane-active-border-style",showFlag:"-gwqv",setFlag:"-gw",unsetFlag:"-gwu",value:tJ({fg:J.activeBorder})},{key:"status",option:"status-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:z},{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:tJ({bg:J.currentWindowBg,fg:J.currentWindowFg,attrs:["bold"]})},{key:"activity-window",option:"window-status-activity-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:tJ({bg:J.statusBg,fg:J.activityFg})},{key:"bell-window",option:"window-status-bell-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:tJ({bg:J.statusBg,fg:J.bellFg,attrs:["bold"]})},{key:"last-window",option:"window-status-last-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:tJ({bg:J.statusBg,fg:J.statusFg})},{key:"message",option:"message-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:tJ({bg:J.messageBg,fg:J.messageFg})},{key:"message-command",option:"message-command-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:tJ({bg:J.messageBg,fg:J.messageCommandFg,attrs:["bold"]})},{key:"mode",option:"mode-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:tJ({bg:J.modeBg,fg:J.modeFg})},{key:"display-panes",option:"display-panes-colour",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:J.border},{key:"display-panes-active",option:"display-panes-active-colour",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:J.activeBorder}]}function eR(J){let z=new Set(J.marker.split(",").map((G)=>G.trim()).filter(Boolean)),Y=[],Z=[];for(let G of C5(J.hexes))if(G.value){if((J.current[G.key]??"")!==G.value)Y.push(["set-option",G.setFlag,G.option,G.value]);Z.push(G.key)}else if(z.has(G.key))Y.push(["set-option",G.unsetFlag,G.option]);let X=Z.join(",");if(X!==J.marker)Y.push(X?["set-option","-g",VB,X]:["set-option","-gu",VB]);return Y}async function g5(J){let{code:z,stdout:Y}=await $0(J);return z===0?Y.trim():""}async function OZ(){try{let J=sR(),z=J.enabled?tR(J.themeName):null,Y=z?R5(z,J.focusAccentSlot):R5({theme:{}},J.focusAccentSlot),Z=C5(Y),[X,...G]=await Promise.all([g5(["show-options","-gqv",VB]),...Z.map((H)=>g5(["show-options",H.showFlag,H.option]))]),Q=Object.fromEntries(Z.map((H,B)=>[H.key,G[B]??""])),f=eR({marker:X,current:Q,hexes:Y});if(f.length>0)await i1(f)}catch{}}var VB="@kobe_border_theme",oR;var Yf=k(()=>{o1();h1();F5();zf();oR=["primary","success","info"]});function N5(){return _z(Zf,!0)}function Xf(){return _z(k5,!1)}function b5(J){iW(k5,J)}var Zf="zen.keepTasks",k5="zen.active";var KB=k(()=>{eY()});var Gf={};f1(Gf,{recordGen:()=>IY,isLatestGen:()=>x5,genAgeMs:()=>Qg,coalesceLayoutWork:()=>qg,RESIZE_GUARD_MS:()=>Gg,LAYOUT_COALESCE_MS:()=>T5});import{createHash as Jg,randomUUID as zg}from"crypto";import{mkdirSync as Yg,readFileSync as S5,renameSync as Zg,writeFileSync as Xg}from"fs";import{join as I5}from"path";function y5(){return I5(fJ(),"layout-coord")}function UB(J,z){let Y=Jg("sha1").update(J).digest("hex").slice(0,16);return I5(y5(),`${Y}.${z}`)}function IY(J,z){let Y=zg();try{Yg(y5(),{recursive:!0});let Z=UB(J,z),X=`${Z}.${Y}.tmp`;Xg(X,`${Date.now()}
|
|
41
|
+
${Y}`),Zg(X,Z)}catch{}return Y}function x5(J,z,Y){try{return S5(UB(J,z),"utf8").split(`
|
|
42
|
+
`)[1]?.trim()===Y}catch{return!0}}function Qg(J,z,Y=Date.now()){try{let Z=Number.parseInt(S5(UB(J,z),"utf8").split(`
|
|
43
|
+
`)[0]??"",10);return Number.isFinite(Z)?Y-Z:Number.POSITIVE_INFINITY}catch{return Number.POSITIVE_INFINITY}}async function qg(J,z,Y,Z=T5){let X=IY(J,z);if(Z>0)await new Promise((G)=>setTimeout(G,Z));if(!x5(J,z,X))return;await Y()}var T5=120,Gg=400;var FX=k(()=>{o1()});function Hg(J){let z=[];for(let Y of J.split(`
|
|
44
|
+
`)){let Z=Y.trim();if(!Z)continue;let[X,G,Q,f,H]=Z.split("\t");if(!X||!G||!Q)continue;let B=Number.parseInt(H?.trim()??"",10);z.push({windowId:X.trim(),paneId:G.trim(),role:Q.trim(),version:f?.trim()??"",...Number.isFinite(B)?{paneWidth:B}:{}})}return z}function Bg(J){let z=J.indexOf("-t");return z>=0&&z+1<J.length?J[z+1]??null:null}function jg(J,z){return J.filter((Y)=>{let Z=Bg(Y);return Z===null||z.has(Z)})}function u5(J,z){let Y=new Map;for(let X of J){let G=Y.get(X.windowId)??[];G.push(X),Y.set(X.windowId,G)}let Z=[];for(let X of Y.values()){let G=X.find((B)=>B.role==="claude")?.paneId,Q=X.find((B)=>B.role==="tasks"),f=X.find((B)=>B.role==="ops");if(Q&&(z.force||Q.version!==z.currentVersion))Z.push({role:"tasks",paneId:Q.paneId});let H=z.force?!0:G&&(z.vendorChanged||f?.version!==z.currentVersion);if(f&&H)Z.push({role:"ops",paneId:f.paneId,claudePaneId:G??null})}return Z}async function Qf(J){let{code:z,stdout:Y}=await $0(["list-panes","-s","-t",`=${J}`,"-F",fg]);if(z!==0)return null;return Hg(Y)}async function E5(J,z){if(z.length===0)return;let Y=await Qf(J),Z=Y?jg(z,new Set(Y.map((X)=>X.paneId))):z;if(Z.length>0)await i1(Z)}function w5(J,z){let Y=b1(),Z=n1(),X=[];for(let G of J){let Q=G.role==="tasks"?CY(Y,{initialTaskId:z.taskId}):_Z({cwd:z.cwd,taskId:z.taskId,claudePaneId:G.claudePaneId,cliInvocation:Y,vendor:z.vendor});X.push(["respawn-pane","-k","-t",G.paneId,"-c",P1(z.cwd),kJ(Z+Q)],["set-option","-p","-t",G.paneId,"@kobe_role",G.role],["set-option","-p","-t",G.paneId,Fz,p0])}return X}function Wg(J,z){if(J===0)return"no-engine-pane";return z===0?"switched":"respawn-failed"}async function P5(J,z,Y,Z,X){let G=await Qf(J);if(!G)return"no-engine-pane";let Q=G.filter((j)=>j.role==="claude");if(Q.length===0)return"no-engine-pane";let f=P1(z),H=aZ(n1(),b1(),J),B=[];for(let j of Q){let K=QX(Y,X),L=kJ(GX(NJ(K.argv),Z,z),H);B.push(["respawn-pane","-k","-c",f,"-t",j.paneId,L]),B.push(K.sessionId?["set-window-option","-t",j.paneId,Ez,K.sessionId]:["set-window-option","-u","-t",j.paneId,Ez])}let V=await i1(B);return Wg(Q.length,V)}async function h5(){return(await wz()).rightColumnResizeArgs}async function DB(J,z={}){let{tasksWidth:Y,rightColumnResizeArgs:Z}=await wz(),X=await Qf(J);if(!X)return{rows:null,commands:[]};let G=[];for(let Q of X)if(Q.role==="tasks"&&(z.force||Q.paneWidth!==Y))G.push(["resize-pane","-t",Q.paneId,"-x",`${Y}`]);if(Z.length>0){for(let Q of X)if(Q.role==="ops")G.push(["resize-pane","-t",Q.paneId,...Z])}return{rows:X,commands:G}}async function AZ(J,z){IY(J,"resize");let{rows:Y,commands:Z}=await DB(J);if(!Y)return;let X=[...Z];if(z)X.push(...w5(u5(Y,{currentVersion:p0,force:!1,vendorChanged:z.vendorChanged}),z));await E5(J,X)}async function v5(J){if(!await V1(J))return;await AZ(J)}async function LB(J){let{code:z,stdout:Y}=await $0(["list-panes","-t",`=${J}`,"-F",`#{@kobe_role} #{pane_width} #{pane_height} #{window_width} #{window_height} #{window_zoomed_flag} #{${jz}} #{${CJ}}`]);if(z!==0)return;let Z=Y.split(`
|
|
45
|
+
`).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;if(!Z.some((B)=>B[0]?.trim()==="shell"))return;let X=Number.parseInt(Z[0][3]?.trim()??"",10),G=Number.parseInt(Z[0][4]?.trim()??"",10),Q=[],f=Z.find(([B])=>B?.trim()==="tasks");if(f){let B=Number.parseInt(f[1]?.trim()??"",10);if(Number.isFinite(B)&&B>0)Q.push(["set-option","-s",Xq,`${L8(B)}`])}let H=Z.find(([B])=>B?.trim()==="ops");if(H&&Number.isFinite(X)&&X>0&&Number.isFinite(G)&&G>0){let B=Number.parseInt(H[1]?.trim()??"",10),V=Number.parseInt(H[2]?.trim()??"",10),j=Number.isFinite(B)?XZ(100*B/X):null,K=Number.isFinite(V)?XZ(100*V/G):null;if(j!==null)Q.push(["set-option","-s",Gq,`${j}`]);if(K!==null)Q.push(["set-option","-s",Qq,`${K}`])}if(Q.length>0)await i1(Q)}function Vg(J){let z=J.split(`
|
|
46
|
+
`).map((Z)=>Z.split("\t")).filter((Z)=>(Z[0]?.trim()??"")!=="");if(z.length===0)return!1;if(z.some((Z)=>Z[1]?.trim()==="1"))return!1;if(z.some((Z)=>(Z[2]?.trim()??"")!==""))return!1;if(z.some((Z)=>(Z[3]?.trim()??"")!==""))return!1;let Y=new Set(z.map((Z)=>Z[0]?.trim()));return Y.has("tasks")&&Y.has("ops")&&Y.has("shell")}async function m5(J){let{code:z,stdout:Y}=await $0(["list-panes","-t",`=${J}`,"-F",`#{@kobe_role} #{window_zoomed_flag} #{${jz}} #{${CJ}}`]);if(z!==0||!Vg(Y))return;await LB(J)}async function OX(J){let z=await IJ(J,["@kobe_worktree","@kobe_task","@kobe_vendor"]),Y=z["@kobe_worktree"]||process.cwd(),Z=z["@kobe_task"]||void 0,X=z["@kobe_vendor"]||void 0,G=await Qf(J);if(!G)return;let Q=w5(u5(G,{currentVersion:p0,force:!0}),{cwd:Y,taskId:Z,vendor:X});await E5(J,Q),await OZ()}var Fz="@kobe_pane_version",fg;var TG=k(()=>{zY();sJ();Uz();h1();Wz();Yf();MJ();jZ();FX();fg=`#{window_id} #{pane_id} #{@kobe_role} #{${Fz}} #{pane_width}`});var bB={};f1(bB,{syncSessionZen:()=>Hf,runLayoutAction:()=>RZ,resolveShellPane:()=>qf,planWorkspaceSplit:()=>d5,parseLayoutPaneRows:()=>c5,expandedTerminalHeightPercent:()=>n5,engineTabExit:()=>yg,applyZenToNewWindow:()=>kB});function c5(J){let z=[];for(let Y of J.split(`
|
|
47
|
+
`)){let Z=Y.trim();if(!Z)continue;let[X,G,Q,f,H,B,V]=Z.split("\t");if(!X)continue;let j=Number.parseInt(f??"",10),K=Number.parseInt(H??"",10),L=Number.parseInt(B??"",10),A=Number.parseInt(V??"",10);z.push({paneId:X.trim(),role:G?.trim()??"",active:Q?.trim()==="1",paneWidth:Number.isFinite(j)?j:0,paneHeight:Number.isFinite(K)?K:0,windowWidth:Number.isFinite(L)?L:0,windowHeight:Number.isFinite(A)?A:0})}return z}function d5(J){let z=J.find((Z)=>Z.role===GZ);if(!z)return{kind:"missing-engine"};let Y=J.filter((Z)=>Z.role===fG);if(Y.length+1>=D8)return{kind:"maxed"};if(Y.length===0)return{kind:"split",targetPane:z.paneId,direction:"-h"};if(Y.length===1)return{kind:"split",targetPane:Y[0]?.paneId??z.paneId,direction:"-v"};return{kind:"split",targetPane:z.paneId,direction:"-v"}}function qf(J){return J.find((z)=>z.role===Bz)??J.find((z)=>z.role==="")}function n5(J){return 100-(XZ(J??Number.NaN)??BG)}async function hJ(J,z){let Y=z?.trim()||`=${J}`,{code:Z,stdout:X}=await $0(["list-panes","-t",Y,"-F",Kg]);return Z===0?c5(X):null}async function MB(J){let{code:z,stdout:Y}=await $0(["list-windows","-t",`=${J}`,"-F","#{window_active}\t#{window_id}"]);if(z!==0)return"";for(let Z of Y.split(`
|
|
48
|
+
`)){let[X,G]=Z.split("\t");if(X?.trim()==="1"&&G?.trim())return G.trim()}return""}async function XY(J,z){let{code:Y,stdout:Z}=await $0(["show-options","-wqv","-t",J,z]);return Y===0?Z.trim():""}async function OB(J,z,Y){await c0(["set-window-option","-t",J,z,Y])}async function TY(J,z){await c0(["set-window-option","-u","-t",J,z])}async function AB(J){let{code:z,stdout:Y}=await $0(["display-message","-p","-t",J,"#{pane_id}"]);return z===0&&Y.trim()===J}async function T1(J,z){await c0(["display-message","-t",J,z])}async function ff(J){let z=await IJ(J,["@kobe_worktree","@kobe_task","@kobe_vendor"]);return{cwd:z["@kobe_worktree"]||process.cwd(),taskId:z["@kobe_task"]||void 0,vendor:z["@kobe_vendor"]||void 0}}function Ug(J){let z=b1(),Y=n1();return kJ(Y+_Z({cwd:J.cwd,taskId:J.taskId,claudePaneId:J.enginePaneId,cliInvocation:z,vendor:J.vendor}))}async function Dg(J,z){return z?.trim()||await MB(J)}async function Lg(J,z){let Y=await hJ(J,z);if(!Y)return;let Z=d5(Y);if(Z.kind==="missing-engine"){await T1(z,"kobe: no engine pane in this window");return}if(Z.kind==="maxed"){await T1(z,`kobe: workspace split limit is ${D8} panes`);return}let{cwd:X}=await ff(J),{code:G,stdout:Q}=await $0(["split-window",Z.direction,"-t",Z.targetPane,"-l","50%","-c",P1(X),"-P","-F","#{pane_id}",kJ("true")]),f=Q.trim();if(G!==0||!f)return;await i1([["set-option","-p","-t",f,"@kobe_role",fG],["select-pane","-t",f]])}async function Mg(J,z){let Y=await hJ(J,z);if(!Y)return;let Z=Y.filter((Q)=>Q.role===fG);if(Z.length===0){await T1(z,"kobe: no workspace split to close");return}let G=Z.find((Q)=>Q.active)??Z[Z.length-1];if(!G)return;await c0(["kill-pane","-t",G.paneId])}async function Fg(J,z){let Y=await hJ(J,z);if(!Y)return;let Z=Y.filter((X)=>X.role===fG);if(Z.length===0){await T1(z,"kobe: no workspace splits to reset");return}await i1(Z.map((X)=>["kill-pane","-t",X.paneId]))}async function i5(){return(await wz()).tasksWidth}async function Og(J){let{cwd:z,taskId:Y}=await ff(J),Z=b1(),X=n1();return{cwd:z,command:kJ(X+CY(Z,{initialTaskId:Y}))}}async function l5(J,z){let Y=await hJ(J,z);if(!Y)return;let Z=Y.find((O)=>O.role===Hz);if(Z){await c0(["kill-pane","-t",Z.paneId]);return}let X=qf(Y),G=Y.find((O)=>O.role===GZ);if(!G){await T1(z,"kobe: cannot restore file pane in this layout");return}let{cwd:Q,taskId:f,vendor:H}=await ff(J),B=Ug({cwd:Q,taskId:f,vendor:H,enginePaneId:G.paneId}),V=X?["split-window","-v","-b","-t",X.paneId,"-l",`${await Ag()}%`,"-c",P1(Q),"-P","-F","#{pane_id}",B]:["split-window","-h","-t",G.paneId,"-l",`${await RB()}%`,"-c",P1(Q),"-P","-F","#{pane_id}",B],{code:j,stdout:K}=await $0(V),L=K.trim();if(j!==0||!L)return;let A=[["set-option","-p","-t",L,"@kobe_role",Hz],["set-option","-p","-t",L,Fz,p0]];if(X?.role==="")A.push(["set-option","-p","-t",X.paneId,"@kobe_role",Bz]);await i1(A)}async function Ag(){return(await wz()).opsHeightPct}async function RB(){return(await wz()).rightColumnWidthPct}async function $5(){return n5((await wz()).opsHeightPct)}async function Rg(J){let{code:z,stdout:Y}=await $0(["list-windows","-t",`=${J}`,"-F","#{window_index}"]);if(z!==0)return new Set;return new Set(Y.split(`
|
|
49
|
+
`).map((Z)=>Number.parseInt(Z.trim(),10)).filter((Z)=>Number.isFinite(Z)))}async function a5(J,z){let Y=await Rg(J),Z=T7(z);while(Y.has(Z))Z++;return Z}async function _5(J){let z=HG(J);if(await V1(z))return z;return await c0(["new-session","-d","-s",z,"-n","hidden-panes","-c",P1(process.cwd()),"while :; do sleep 3600; done"]),z}async function gB(J){let z=HG(J);if(!await V1(z))return;let{code:Y,stdout:Z}=await $0(["list-panes","-s","-t",`=${z}`,"-F","#{@kobe_role}"]);if(Y!==0)return;if(!Z.split(`
|
|
50
|
+
`).some((G)=>{let Q=G.trim();return Q===Bz||Q===_J}))await c0(["kill-session","-t",`=${z}`])}async function gg(J,z){await p5(J,z,jz)}async function Cg(J,z){await p5(J,z,CJ)}async function p5(J,z,Y){let Z=await XY(z,Y);if(!Z)return;if(await AB(Z))await c0(["kill-pane","-t",Z]);await TY(z,Y)}async function FB(J,z){await gg(J,z),await Cg(J,z),await gB(J)}function r5(J){return J.find((z)=>z.role===GZ)??J[0]}async function CB(J,z,Y){let Z=r5(Y);if(!Z)return await T1(z,"kobe: cannot restore Tasks pane in this layout"),!1;let X=await i5(),{cwd:G,command:Q}=await Og(J),{code:f,stdout:H}=await $0(["split-window","-h","-b","-t",Z.paneId,"-l",`${X}`,"-c",P1(G),"-P","-F","#{pane_id}",Q]),B=H.trim();if(f!==0||!B)return!1;return await i1([["set-option","-p","-t",B,"@kobe_role",_J],["set-option","-p","-t",B,Fz,p0],["select-pane","-t",B]]),await TY(z,CJ),await T1(z,"kobe: Tasks pane restored"),!0}async function o5(J,z,Y){let Z=await _5(J),X=await a5(Z,z),{code:G,stdout:Q}=await $0(["break-pane","-d","-s",Y.paneId,"-t",`${Z}:${X}`,"-P","-F","#{pane_id}"]),f=Q.trim()||Y.paneId;if(G!==0||!f){await T1(z,"kobe: could not hide Tasks pane");return}await OB(z,CJ,f),await T1(z,"kobe: Tasks pane hidden")}async function NB(J,z,Y){let Z=await hJ(J,z);if(!Z)return;if(!await AB(Y)){await TY(z,CJ);let Q=Z.find((f)=>f.role===_J);if(Q){await c0(["select-pane","-t",Q.paneId]);return}await CB(J,z,Z);return}let X=r5(Z);if(!X){await T1(z,"kobe: cannot restore Tasks pane in this layout");return}if(await c0(["join-pane","-h","-b","-s",Y,"-t",X.paneId,"-l",`${await i5()}`])!==0){await T1(z,"kobe: could not restore Tasks pane");return}await i1([["set-option","-p","-t",Y,"@kobe_role",_J],["set-option","-p","-t",Y,Fz,p0],["select-pane","-t",Y]]),await TY(z,CJ),await gB(J),await T1(z,"kobe: Tasks pane restored")}async function Ng(J,z){let Y=await XY(z,CJ);if(Y){await NB(J,z,Y);return}let Z=await hJ(J,z);if(!Z)return;let X=Z.find((G)=>G.role===_J);if(X){await o5(J,z,X);return}await CB(J,z,Z)}async function kg(J,z){let Y=await XY(z,CJ);if(Y){await NB(J,z,Y);return}let Z=await hJ(J,z);if(!Z)return;let X=Z.find((G)=>G.role===_J);if(X){await c0(["select-pane","-t",X.paneId]);return}await CB(J,z,Z)}async function s5(J,z,Y){if(Y.role==="")await c0(["set-option","-p","-t",Y.paneId,"@kobe_role",Bz]);let Z=await _5(J),X=await a5(Z,z),{code:G,stdout:Q}=await $0(["break-pane","-d","-s",Y.paneId,"-t",`${Z}:${X}`,"-P","-F","#{pane_id}"]),f=Q.trim()||Y.paneId;if(G!==0||!f){await T1(z,"kobe: could not hide terminal pane");return}await OB(z,jz,f),await T1(z,"kobe: Terminal pane hidden")}async function t5(J,z,Y){let Z=Y.find((V)=>V.role===Hz),X=Y.find((V)=>V.role===GZ);if(!Z&&!X)return await T1(z,"kobe: cannot restore terminal pane in this layout"),!1;let{cwd:G}=await ff(J),Q=Z?["split-window","-v","-t",Z.paneId,"-l",`${await $5()}%`,"-c",P1(G),"-P","-F","#{pane_id}"]:["split-window","-h","-t",X?.paneId??"","-l",`${await RB()}%`,"-c",P1(G),"-P","-F","#{pane_id}"],{code:f,stdout:H}=await $0(Q),B=H.trim();if(f!==0||!B)return!1;return await c0(["set-option","-p","-t",B,"@kobe_role",Bz]),await TY(z,jz),await T1(z,"kobe: Terminal pane restored"),!0}async function e5(J,z,Y){let Z=await hJ(J,z);if(!Z)return;if(!await AB(Y)){await TY(z,jz),await t5(J,z,Z);return}let X=Z.find((B)=>B.role===Hz),G=Z.find((B)=>B.role===GZ);if(!X&&!G){await T1(z,"kobe: cannot restore terminal pane in this layout");return}let Q=X?["join-pane","-v","-s",Y,"-t",X.paneId,"-l",`${await $5()}%`]:["join-pane","-h","-s",Y,"-t",G?.paneId??"","-l",`${await RB()}%`];if(await c0(Q)!==0){await T1(z,"kobe: could not restore terminal pane");return}await c0(["set-option","-p","-t",Y,"@kobe_role",Bz]),await TY(z,jz),await gB(J),Z=await hJ(J,z);let H=Z?.find((B)=>B.paneId===Y);if(H)await c0(["select-pane","-t",H.paneId]);await T1(z,"kobe: Terminal pane restored")}async function bg(J,z){let Y=await XY(z,jz);if(Y){await e5(J,z,Y);return}let Z=await hJ(J,z);if(!Z)return;let X=qf(Z);if(X){await s5(J,z,X);return}await t5(J,z,Z)}async function Sg(J){let z=Xf();if(b5(!z),z){await ZK(J);return}await YK(J)}async function Hf(J){if(!await V1(J))return;let z=Xf(),Y=(await gZ(J,$Z)).length>0;if(z===Y)return;if(z)await YK(J);else await ZK(J)}async function JK(J){let{code:z,stdout:Y}=await $0(["list-windows","-t",`=${J}`,"-F","#{window_id}"]);if(z!==0)return[];return Y.split(`
|
|
51
|
+
`).map((Z)=>Z.trim()).filter((Z)=>Z.length>0)}async function zK(J,z){return!!(await hJ(J,z))?.some((Z)=>Z.role===GZ)}async function YK(J){let z=await JK(J);for(let Y of z){if(!await zK(J,Y))continue;if(await XY(Y,gY))continue;await XK(J,Y)}await GY(J,$Z,"1"),await T1(`=${J}`,"kobe: Zen mode on \u2014 all tabs")}async function ZK(J){let z=await JK(J);for(let Y of z){let Z=await XY(Y,gY);if(Z)await Ig(J,Y,Z)}await c0(["set-option","-u","-t",J,$Z]),await T1(`=${J}`,"kobe: Zen mode off \u2014 all tabs")}async function kB(J,z){let Y=(await gZ(J,$Z)).length>0;if(!Y&&!Xf())return;if(!Y)await GY(J,$Z,"1");if(await XY(z,gY))return;if(!await zK(J,z))return;await XK(J,z)}async function XK(J,z){let Y=await hJ(J,z);if(!Y)return;let Z=[],X=Y.find((Q)=>Q.role===Hz);if(X)await c0(["kill-pane","-t",X.paneId]),Z.push(Hz);let G=qf(Y);if(G)await s5(J,z,G),Z.push(Bz);if(!N5()){let Q=Y.find((f)=>f.role===_J);if(Q)await o5(J,z,Q),Z.push(_J)}if(Z.length===0){await T1(z,"kobe: already focused \u2014 nothing to hide");return}await OB(z,gY,Z.join(",")),await T1(z,"kobe: Zen mode on")}async function Ig(J,z,Y){let Z=new Set(Y.split(",").map((X)=>X.trim()));if(Z.has(_J)){let X=await XY(z,CJ);if(X)await NB(J,z,X)}if(Z.has(Hz)){let X=await hJ(J,z);if(X&&!X.some((G)=>G.role===Hz))await l5(J,z)}if(Z.has(Bz)){let X=await XY(z,jz);if(X)await e5(J,z,X)}await TY(z,gY),await T1(z,"kobe: Zen mode off")}async function GK(J){let{code:z,stdout:Y}=await $0(["list-windows","-t",`=${J}`,"-F","#{window_id}"]);if(z!==0)return 0;return Y.split(`
|
|
52
|
+
`).filter((Z)=>Z.trim().length>0).length}async function Tg(J,z){if(await GK(J)<=1){await T1(z,"Cannot close the only ChatTab");return}await FB(J,z),await c0(["kill-window","-t",z])}async function yg(J){if(!await V1(J))return;let z=await MB(J);if(!z)return;if(await GK(J)>1){await FB(J,z),await c0(["kill-window","-t",z]);return}let{newChatTab:Y}=await Promise.resolve().then(() => (Bf(),QK));if(await Y(J),await MB(J)!==z)await FB(J,z),await c0(["kill-window","-t",z])}async function RZ(J,z,Y={}){if(!await V1(J))return;let Z=await Dg(J,Y.windowId);if(!Z)return;switch(z){case"workspace-split":await Lg(J,Z);return;case"workspace-close":await Mg(J,Z);return;case"workspace-reset":await Fg(J,Z);return;case"tasks-toggle":await Ng(J,Z);return;case"tasks-restore":await kg(J,Z);return;case"ops-toggle":await l5(J,Z);return;case"terminal-toggle":await bg(J,Z);return;case"zen-toggle":await Sg(J);return;case"chat-tab-close":await Tg(J,Z);return}}var Kg="#{pane_id}\t#{@kobe_role}\t#{pane_active}\t#{pane_width}\t#{pane_height}\t#{window_width}\t#{window_height}";var yY=k(()=>{zY();Uz();KB();h1();Wz();MJ();jZ();TG()});var QK={};f1(QK,{quickCreate:()=>TB,openUpdateTab:()=>dG,openSettingsTab:()=>vG,openNewTaskTab:()=>cG,openHelpTab:()=>mG,newChatTab:()=>IB,kobeStatusRight:()=>PG,chatTabSwitchBindings:()=>xG,chatTabRenameBinding:()=>EG,chatTabCloseBinding:()=>uG,chatTabChooseEngineBindings:()=>wG,buildPanesAround:()=>Wf,CHAT_TAB_STATUS_FORMAT:()=>AX,CHAT_TAB_STATUS_CURRENT_FORMAT:()=>hG,CHAT_TAB_STATE_OPTION:()=>jf,CHAT_TAB_ENGINE_PROMPT:()=>yG});function xG(J,z){return[["bind-key","-n",J,"if-shell","-F","#{?#{@kobe_surface},0,1}","previous-window"],["bind-key","-n",z,"if-shell","-F","#{?#{@kobe_surface},0,1}","next-window"]]}function uG(J,z="kill-window"){return["bind-key","-n",J,"if-shell","-F","#{>:#{session_windows},1}",z,"display-message 'Cannot close the only ChatTab'"]}function EG(J){return["bind-key","-n",J,"command-prompt","-I","#{window_name}","rename-window -- '%%'"]}function wG(J){return[["bind-key","-n",J,"command-prompt","-p",yG],["bind-key","T","command-prompt","-p",yG]]}function SB(J){return J.startsWith("C-")&&J.length===3?`^${J.slice(2)}`:J}function PG(J){return`${[J.focusLeft?`${SB(J.focusLeft)} tasks`:null,J.detach?`${SB(J.detach)} detach`:null,J.newTab?`${SB(J.newTab)} tab`:null,J.layoutSplits?`prefix ${J.layoutSplits} splits`:null,J.layoutPanes?`prefix ${J.layoutPanes} panes`:null].filter((Y)=>Y!==null).join(" ")} `}async function Wf(J,z){let Y=n1(),Z=await Vf(),X=kJ(z.opsCommand??Y+_Z({cwd:z.cwd,taskId:z.taskId,claudePaneId:J,cliInvocation:z.inv,vendor:z.vendor})),{stdout:G}=await nG([["set-option","-p","-t",J,"@kobe_role","claude"],["set-window-option","-t",J,jf,"idle"],["split-window","-h","-b","-t",J,"-l",`${Z}`,"-c",P1(z.cwd),"-P","-F","tasks=#{pane_id}",kJ(Y+CY(z.inv,{initialTaskId:z.taskId}))],["split-window","-h","-t",J,"-l",`${100-M8}%`,"-c",P1(z.cwd),"-P","-F","ops=#{pane_id}",X],["split-window","-v","-l",`${100-BG}%`,"-c",P1(z.cwd),"-P","-F","shell=#{pane_id}"],["select-pane","-t",J]]),Q=Object.fromEntries(G.split(`
|
|
53
|
+
`).map((f)=>f.trim()).filter(Boolean).map((f)=>f.split("=",2)));if(await i1([...Q.tasks?[["set-option","-p","-t",Q.tasks,"@kobe_role",_J]]:[],...Q.tasks?[["set-option","-p","-t",Q.tasks,Fz,p0]]:[],...Q.ops?[["set-option","-p","-t",Q.ops,"@kobe_role",Hz]]:[],...Q.ops?[["set-option","-p","-t",Q.ops,Fz,p0]]:[],...Q.shell?[["set-option","-p","-t",Q.shell,"@kobe_role",Bz]]:[]]),Q.ops){let f=await h5();if(f.length>0)await c0(["resize-pane","-t",Q.ops,...f])}}async function IB(J,z){if(!await V1(J))return;let Y=await IJ(J,["@kobe_worktree","@kobe_task","@kobe_vendor",gG]),Z=Y["@kobe_worktree"]||process.cwd(),X=Y["@kobe_task"]||void 0,G=Y[gG]||void 0,Q=z??Y["@kobe_vendor"];if(z)await xg(J,X,z);let f=oJ(Q),H=QX(f,Q),B=b1(),j=(await $0(["new-window","-t",`=${J}`,"-c",P1(Z),"-P","-F","#{pane_id}",kJ(GX(NJ(H.argv),G,Z),aZ(n1(),B,J))])).stdout.trim();if(!j)return;if(H.sessionId)await xY(j,Ez,H.sessionId);await Wf(j,{cwd:Z,taskId:X,inv:B,vendor:Q});let{stdout:K}=await $0(["display-message","-p","-t",j,"#{window_id}"]),L=K.trim();if(L)await kB(J,L)}async function vG(J){if(!await V1(J))return;let Y=(await IJ(J,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),Z=b1(),G=`${n1()}${Z.map(Z1).join(" ")} settings`;await Oz(J,{cwd:P1(Y),command:G,name:"settings",surface:!0})}async function mG(J){if(!await V1(J))return;let Y=(await IJ(J,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),Z=b1(),G=`${n1()}${Z.map(Z1).join(" ")} help-page`;await Oz(J,{cwd:P1(Y),command:G,name:"help",surface:!0})}async function cG(J,z){if(!await V1(J))return;let Z=(await IJ(J,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),X=b1(),G=n1(),Q=z?` --repo ${Z1(z)}`:"",f=`${G}${X.map(Z1).join(" ")} new-task${Q}`;await Oz(J,{cwd:P1(Z),command:f,name:"new task",surface:!0})}async function dG(J){if(!await V1(J))return;let Y=(await IJ(J,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),Z=b1(),G=`${n1()}${P7({cliInvocation:Z})}`;await Oz(J,{cwd:P1(Y),command:G,name:"update",surface:!0})}async function TB(J){if(!await V1(J))return;let Y=(await IJ(J,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),Z=b1(),G=`${n1()}${Z.map(Z1).join(" ")} quick-task --session ${Z1(J)}`;await Oz(J,{cwd:P1(Y),command:G,name:"quick task",surface:!0})}async function xg(J,z,Y){if(await GY(J,"@kobe_vendor",Y),!z)return;try{let{connectOrStartDaemon:Z}=await Promise.resolve().then(() => (FJ(),Kf)),X=await Z();try{await X.request("task.setVendor",{taskId:z,vendor:Y})}finally{X.close()}}catch(Z){console.error("[kobe tmux] failed to persist selected engine vendor:",Z)}}var yG,jf="@kobe_tab_state",AX="#{?#{==:#{@kobe_tab_state},running},\u25CF,#{?#{==:#{@kobe_tab_state},done},\u2713,#{?#{==:#{@kobe_tab_state},error},!,#{?#{==:#{@kobe_tab_state},unknown},?,\u25CB}}}} #I:#W",hG;var Bf=k(()=>{zY();sJ();Uz();h1();Wz();$1();MJ();jZ();yY();TG();yG=`engine (${l1.join("/")}/\u2026)`;hG=AX});var vJ={};f1(vJ,{tmuxWindowSizeArgsForClient:()=>uB,tmuxSessionName:()=>N1,tmuxInitialSizeArgs:()=>fK,tmuxInitialClientSize:()=>xB,tmuxAvailable:()=>Pz,switchClientBeforeKill:()=>hz,sessionExists:()=>V1,selectTasksPane:()=>mg,runLayoutAction:()=>RZ,resyncWindowToClient:()=>wg,refreshKobeWorkspacePanes:()=>OX,quickCreate:()=>TB,prepareWindowForSwitch:()=>WK,prepareWindowForAttach:()=>Uf,parseTmuxClientRows:()=>HK,parseObservedSession:()=>KK,openUpdateTab:()=>dG,openSettingsTab:()=>vG,openNewTaskTab:()=>cG,openHelpTab:()=>mG,observeSessionVendor:()=>wB,newChatTab:()=>IB,kobeStatusRight:()=>PG,killSession:()=>eJ,healSessionLayout:()=>v5,focusBindCommand:()=>VK,enterWindow:()=>Eg,ensureSession:()=>iG,currentSessionName:()=>TJ,clientsWithConflictingSize:()=>BK,chatTabSwitchBindings:()=>xG,chatTabRenameBinding:()=>EG,chatTabCloseBinding:()=>uG,chatTabChooseEngineBindings:()=>wG,captureGlobalLayoutOnDrag:()=>m5,captureGlobalLayout:()=>LB,attachArgv:()=>RX,PANE_VERSION_OPTION:()=>Fz,CHAT_TAB_STATUS_FORMAT:()=>AX,CHAT_TAB_STATUS_CURRENT_FORMAT:()=>hG,CHAT_TAB_STATE_OPTION:()=>jf,CHAT_TAB_ENGINE_PROMPT:()=>yG});function fK(J=process.stdout,z=process.env){let Y=xB(J,z);return Y?["-x",`${Y.columns}`,"-y",`${Y.rows}`]:[]}function xB(J=process.stdout,z=process.env){let Y=uY(J.columns)??uY(z.COLUMNS),Z=uY(J.rows)??uY(z.LINES);return Y&&Z?{columns:Y,rows:Z}:null}function uY(J){let z=typeof J==="number"?J:typeof J==="string"?Number.parseInt(J,10):Number.NaN;return Number.isInteger(z)&&z>0?z:void 0}function HK(J){let z=[];for(let Y of J.split(`
|
|
54
|
+
`)){let[Z,X,G,Q,f]=Y.split("\t"),H=uY(G?.trim()),B=uY(Q?.trim());if(!Z?.trim()||!X?.trim()||!H||!B)continue;z.push({name:Z.trim(),session:X.trim(),width:H,height:B,flags:f?.trim()??""})}return z}function BK(J,z,Y,Z={}){return J.filter((X)=>X.session===z).filter((X)=>X.name!==Z.currentClientName).filter((X)=>X.width!==Y.columns||X.height!==Y.rows).map((X)=>X.name)}function uB(J,z){let Y=Math.max(1,J.rows-(z.status?.trim()==="on"?1:0));return["-x",`${J.columns}`,"-y",`${Y}`]}async function EB(J,z,Y={}){if(!z)return;let{code:Z,stdout:X}=await $0(["list-clients","-t",`=${J}`,"-F",ug]);if(Z!==0)return;let G=BK(HK(X),J,z,Y),Q=[];if(Y.currentClientName)Q.push(["refresh-client","-f","!ignore-size","-t",Y.currentClientName]);for(let f of G)Q.push(["refresh-client","-f","ignore-size","-t",f]);if(Q.length>0)await i1(Q)}async function Uf(J){IY(J,"resize");let z=xB();await EB(J,z);let Y=z?["-x",`${z.columns}`,"-y",`${z.rows}`]:[];if(Y.length>0)await c0(["resize-window","-t",`=${J}`,...Y]);await AZ(J)}async function jK(){let{code:J,stdout:z}=await $0(["display-message","-p","#{client_name}\t#{client_width}\t#{client_height}\t#{status}"]);if(J!==0)return{sizeArgs:[],clientSize:null,clientName:void 0};let[Y,Z,X,G]=z.trim().split("\t"),Q=uY(Z),f=uY(X),H=Q&&f?{columns:Q,rows:f}:null;return{sizeArgs:H?uB(H,{status:G}):[],clientSize:H,clientName:Y?.trim()||void 0}}async function WK(J){IY(J,"resize");let z=await jK();await EB(J,z.clientSize,{currentClientName:z.clientName});let Y=z.sizeArgs;if(Y.length>0)await c0(["resize-window","-t",`=${J}`,...Y]);await AZ(J)}async function Eg(J){await WK(J),await c0(["switch-client","-t",`=${J}`])}async function wg(J,z){if(!z.size)return;IY(J,"resize"),await EB(J,z.size,{currentClientName:z.clientName});let Y=uB(z.size,{status:z.status}),{commands:Z}=await DB(J,{force:!0});await i1([["resize-window","-t",`=${J}`,...Y],...Z])}function VK(J,z,Y){let Z=`#{?window_zoomed_flag,1,#{?${Pg[z]},,1}}`;if(Y)return["bind-key","-n",J,"if-shell","-F",Z,`select-pane ${z}`,Y];return["bind-key","-n",J,"if-shell","-F",Z,`select-pane ${z}`]}async function iG(J){let z=yB.get(J.name);if(z)return z;let Y=vg(J);yB.set(J.name,Y);try{return await Y}finally{yB.delete(J.name)}}function KK(J){let z="",Y="",Z=!1,X=new Set;for(let G of J.split(`
|
|
55
|
+
`)){let[Q,f,H,B,V]=G.split("\t");if(!Q?.trim())continue;if(X.add(Q.trim()),!z&&B?.trim())z=B.trim();if(!Y&&V?.trim())Y=V.trim();if(f?.trim()==="1"&&H?.trim()==="claude")Z=!0}return{worktree:z,vendor:Y,claudePaneAlive:Z,windowCount:X.size}}async function UK(J){if(!await V1(J))return null;let{code:z,stdout:Y}=await $0(["list-panes","-s","-t",`=${J}`,"-F",hg]);if(z!==0)return{worktree:"",vendor:"",claudePaneAlive:!1,windowCount:0};return KK(Y)}async function wB(J){let Y=(await UK(J))?.vendor.trim();return Y?Y:null}async function vg(J){let z=J.launchInit,Y=await UK(J.name),Z=L5(Y,{cwd:J.cwd,vendor:J.vendor,hasEngineCommand:J.command.length>0}),X=$V(J.repo);if(Z.kind==="reuse")return await AZ(J.name,{cwd:J.cwd,taskId:J.taskId,vendor:J.vendor}),!0;if(Z.kind==="respawn-engine"){let N0=await P5(J.name,J.cwd,J.command,X,J.vendor);if(N0==="switched"){if(J.vendor)await GY(J.name,"@kobe_vendor",J.vendor);return await AZ(J.name,{cwd:J.cwd,taskId:J.taskId,vendor:J.vendor,vendorChanged:!0}),!0}if(N0==="respawn-failed")return await AZ(J.name,{cwd:J.cwd,taskId:J.taskId,vendor:J.vendor}),!0}if(Z.kind==="rebuild"||Z.kind==="respawn-engine")await eJ(J.name);let G=b1(),Q=QX(J.command,J.vendor),f=J.repo!==void 0&&J.cwd===J.repo,H=f||X?void 0:J.taskId,B=f&&!X?J.taskId:void 0,V=vq(hq(Q.argv,J.vendor,H),J.vendor,B),j=GX(NJ(V),X,J.cwd),L=(await $0(["new-session","-d","-s",J.name,"-c",P1(J.cwd),...fK(),"-P","-F","#{pane_id}",E7(j,{initScript:X?void 0:z?.initScript,markerPath:!X&&z?.initScript?xW(J.cwd):void 0,timeoutSeconds:F8(process.env.KOBE_REPO_INIT_TIMEOUT_SECONDS)},aZ(n1(),G,J.name))])).stdout.trim();if(!L)return console.error("[kobe tmux] new-session returned no pane id; session creation failed"),!1;if(Q.sessionId)await xY(L,Ez,Q.sessionId);if(await i1([...J.taskId?[["set-option","-t",J.name,"@kobe_task",J.taskId]]:[],["set-option","-t",J.name,"@kobe_worktree",J.cwd],...J.vendor?[["set-option","-t",J.name,"@kobe_vendor",J.vendor]]:[],...X?[["set-option","-t",J.name,gG,X]]:[]]),process.env.TMUX){let{sizeArgs:N0}=await jK();if(N0.length>0)await c0(["resize-window","-t",`=${J.name}`,...N0])}await Wf(L,{cwd:J.cwd,taskId:J.taskId,opsCommand:J.opsCommand,inv:G,vendor:J.vendor});let A=n1(),O=G.map(Z1).join(" "),R=`${A}${O} new-chattab --session '#{session_name}'`,x=`${R} --vendor '%%'`,a=`run-shell ${Z1(x)}`,S=`${A}${O} focus-tasks --session '#{session_name}' --window '#{window_id}'`,C=`run-shell ${Z1(S)}`,M=(N0)=>`${A}${O} layout --session '#{session_name}' --window '#{window_id}' --action ${N0}`,I=M("tasks-restore"),$=`run-shell ${Z1(I)}`,i=M("chat-tab-close"),e=`run-shell ${Z1(i)}`,J0=`${A}${O} heal-layout --session '#{session_name}'`,T=`run-shell -b ${Z1(J0)}`,f0=`${A}${O} resync-window --session '#{session_name}' --client '#{client_name}' --cols '#{client_width}' --rows '#{client_height}' --status '#{status}'`,_=`run-shell -b ${Z1(f0)}`,W0=`${A}${O} capture-layout --session '#{session_name}'`,R0=`run-shell -b ${Z1(W0)}`,V0=h7({tmuxSocket:Az}),t=X5(process.platform,G5),P=Q5(t),N=iq(),p=W5.map((N0)=>["unbind-key","-n",N0]);if(N.overridden.has(uz))for(let N0 of SY){let b0=FZ(N0);if("key"in b0)p.push(["unbind-key","-n",b0.key])}for(let N0 of N.overridden){if(N0===uz)continue;let b0=MZ[N0],x0=fX(N0),v=FZ(b0,{allowBare:x0});if("key"in v)p.push(x0?["unbind-key",v.key]:["unbind-key","-n",v.key])}let u=["-L","-D","-U","-R"],d=N.focus.flatMap((N0,b0)=>{let x0=u[b0],v=x0==="-L"?$:void 0;return N0&&x0?[VK(N0.key,x0,v)]:[]}),o=N.binds,Q0=(N0,b0)=>{let x0=o[N0];return x0?[["bind-key",x0.key,"run-shell",M(b0)]]:[]},g0=(...N0)=>{let b0=N0.map((x0)=>o[x0]?.chord).filter((x0)=>!!x0);return b0.length>0?b0.join("/"):null};await i1([["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",AX],["set-option","-g","window-status-current-format",hG],["set-option","-g","status-right",PG({focusLeft:N.focus[0]?.key??null,detach:o["tmux.detach"]?.key??null,newTab:o["tmux.tab.new"]?.key??null,layoutSplits:g0("tmux.layout.workspaceSplit","tmux.layout.workspaceClose","tmux.layout.workspaceReset"),layoutPanes:g0("tmux.layout.tasksToggle","tmux.layout.opsToggle","tmux.layout.terminalToggle","tmux.layout.zenToggle")})],["set-option","-g","mouse","on"],...P,["set-hook","-g","window-resized",T],["set-hook","-g","client-resized",_],["set-hook","-g","pane-exited",T],["set-hook","-g","window-layout-changed",R0],...p,...o["tmux.detach"]?[["bind-key","-n",o["tmux.detach"].key,"if-shell","-F",`#{?#{${CJ}},1,#{==:#{@kobe_role},tasks}}`,"detach-client",C]]:[],...d,...o["tmux.tab.new"]?[["bind-key","-n",o["tmux.tab.new"].key,"run-shell",R]]:[],...o["tmux.tab.chooseEngine"]?wG(o["tmux.tab.chooseEngine"].key).map((N0)=>[...N0,a]):[],...o["tmux.tab.prev"]&&o["tmux.tab.next"]?xG(o["tmux.tab.prev"].key,o["tmux.tab.next"].key):o["tmux.tab.prev"]?[["bind-key","-n",o["tmux.tab.prev"].key,"previous-window"]]:o["tmux.tab.next"]?[["bind-key","-n",o["tmux.tab.next"].key,"next-window"]]:[],...o["tmux.tab.close"]?[uG(o["tmux.tab.close"].key,e)]:[],...o["tmux.tab.rename"]?[EG(o["tmux.tab.rename"].key)]:[],...Q0("tmux.layout.workspaceSplit","workspace-split"),...Q0("tmux.layout.workspaceClose","workspace-close"),...Q0("tmux.layout.workspaceReset","workspace-reset"),...Q0("tmux.layout.tasksToggle","tasks-toggle"),...Q0("tmux.layout.opsToggle","ops-toggle"),...Q0("tmux.layout.terminalToggle","terminal-toggle"),...Q0("tmux.layout.zenToggle","zen-toggle"),["bind-key","f","run-shell",`${A}${O} quick-create --session '#{session_name}'`],["bind-key","u","display-popup","-E",V0]]),await OZ(),await c0(["select-pane","-t",L]);let P0=z?.firstMessage;if(P0)D5(J.name,P0).catch((N0)=>console.error("[kobe tmux] first message delivery failed:",N0));return!0}async function qK(J,z,Y){let Z=Y?.trim()||`=${J}`,{code:X,stdout:G}=await $0(["list-panes","-t",Z,"-F","#{pane_id}\t#{@kobe_role}"]);if(X!==0)return"";for(let Q of G.split(`
|
|
56
|
+
`)){let[f,H]=Q.split("\t");if(f?.trim()&&H?.trim()===z)return f.trim()}return""}async function mg(J,z={}){if(!await V1(J))return"";let Y=await qK(J,"tasks",z.windowId);if(!Y)await RZ(J,"tasks-restore",{windowId:z.windowId}),Y=await qK(J,"tasks",z.windowId);if(!Y)return"";return await c0(["select-pane","-t",Y]),Y}var ug="#{client_name}\t#{client_session}\t#{client_width}\t#{client_height}\t#{client_flags}",Pg,yB,hg="#{window_id}\t#{window_active}\t#{@kobe_role}\t#{@kobe_worktree}\t#{@kobe_vendor}";var YJ=k(()=>{zY();sJ();o1();Uz();h1();q5();lq();$q();Wz();Yf();Bf();jZ();yY();FX();TG();h1();Bf();TG();yY();Pg={"-L":"pane_at_left","-D":"pane_at_bottom","-U":"pane_at_top","-R":"pane_at_right"};yB=new Map});var $G={};f1($G,{windowIsSurface:()=>ag,windowCount:()=>ng,tmuxSessionName:()=>N1,tmuxCommandSequence:()=>hB,tmuxAvailable:()=>Pz,tmuxArgs:()=>CZ,tagPaneRole:()=>MK,tagClaudePane:()=>$g,switchClientBeforeKill:()=>hz,setWindowOption:()=>xY,setSessionOption:()=>GY,sessionExists:()=>V1,sendKeys:()=>Df,sendKeyName:()=>SG,runTmuxSequenceCapturing:()=>nG,runTmuxSequence:()=>i1,runTmuxCapturing:()=>$0,runTmux:()=>c0,readLayoutGeometry:()=>wz,paneIdByRole:()=>mB,newWindow:()=>Oz,killSession:()=>eJ,globalTasksPaneWidth:()=>Vf,getSessionOptions:()=>IJ,getSessionOption:()=>gZ,getServerOptions:()=>LK,getServerOption:()=>ig,ensureFallbackSession:()=>Lf,currentSessionName:()=>TJ,claudePaneIdStrict:()=>HX,claudePaneId:()=>jB,capturePaneById:()=>BX,attachArgv:()=>RX,SURFACE_WINDOW_OPTION:()=>cB,PANE_ROLE_OPTION:()=>lG,KOBE_TMUX_SOCKET:()=>Az,KOBE_HOME_SESSION:()=>FK,CLAUDE_ROLE_OPTION:()=>lg,CHAT_TAB_SESSION_ID_OPTION:()=>Ez});import{homedir as cg}from"os";function CZ(...J){return["tmux","-L",Az,...J]}function N1(J){return`kobe-${J.replace(/[^A-Za-z0-9_-]/g,"")}`}function RX(J){return CZ("attach-session","-t",`=${J}`)}async function PB(J){if(!J)return"";try{return await new Response(J).text()}catch{return""}}async function c0(J){try{let z=Bun.spawn(CZ(...J),{stdin:"ignore",cwd:gX,stdout:"ignore",stderr:"pipe"}),[Y,Z]=await Promise.all([PB(z.stderr),z.exited]);if(Z!==0&&Y.trim().length>0)console.error(`[kobe tmux] ${J.join(" ")} (${Z}): ${Y.trim()}`);return Z}catch{return 1}}async function dg(J){try{return await Bun.spawn(CZ(...J),{stdin:"ignore",cwd:gX,stdout:"ignore",stderr:"ignore"}).exited}catch{return 1}}function hB(J){let z=[];for(let Y of J){if(Y.length===0)continue;if(z.length>0)z.push(";");z.push(...Y)}return z}async function i1(J){let z=hB(J);return z.length===0?0:c0(z)}async function $0(J){try{let z=Bun.spawn(CZ(...J),{stdin:"ignore",cwd:gX,stdout:"pipe",stderr:"pipe"}),[Y,Z,X]=await Promise.all([PB(z.stdout),PB(z.stderr),z.exited]);if(X!==0&&Z.trim().length>0)console.error(`[kobe tmux] ${J.join(" ")} (${X}): ${Z.trim()}`);return{code:X,stdout:Y}}catch{return{code:1,stdout:""}}}async function nG(J){let z=hB(J);return z.length===0?{code:0,stdout:""}:$0(z)}async function Pz(){try{return await Bun.spawn(["tmux","-V"],{stdin:"ignore",cwd:gX,stdout:"ignore",stderr:"ignore"}).exited===0}catch{return!1}}async function V1(J){return await dg(["has-session","-t",`=${J}`])===0}async function ng(J){let{code:z,stdout:Y}=await $0(["list-windows","-t",`=${J}`,"-F","#{window_id}"]);if(z!==0)return 0;return Y.split(`
|
|
57
|
+
`).filter((Z)=>Z.trim().length>0).length}async function GY(J,z,Y){await c0(["set-option","-t",J,z,Y])}async function gZ(J,z){let{code:Y,stdout:Z}=await $0(["show-options","-qv","-t",J,z]);return Y===0?Z.trim():""}async function IJ(J,z){let Y=Object.fromEntries(z.map((G)=>[G,void 0])),{code:Z,stdout:X}=await nG(z.map((G)=>["show-options","-q","-t",J,G]));if(Z!==0)return Y;for(let G of X.split(`
|
|
58
|
+
`)){let Q=G.indexOf(" ");if(Q<=0)continue;let f=G.slice(0,Q);if(f in Y)Y[f]=G.slice(Q+1).trim()}return Y}async function ig(J){let{code:z,stdout:Y}=await $0(["show-options","-sqv",J]);return z===0?Y.trim():""}async function LK(J){let z=Object.fromEntries(J.map((X)=>[X,void 0])),{code:Y,stdout:Z}=await nG(J.map((X)=>["show-options","-sq",X]));if(Y!==0)return z;for(let X of Z.split(`
|
|
59
|
+
`)){let G=X.indexOf(" ");if(G<=0)continue;let Q=X.slice(0,G);if(Q in z)z[Q]=X.slice(G+1).trim()}return z}async function Vf(){return(await wz()).tasksWidth}async function wz(){return x7(await LK(y7))}async function MK(J,z){await c0(["set-option","-p","-t",J,lG,z])}async function xY(J,z,Y){await c0(["set-window-option","-t",J,z,Y])}async function $g(J){await MK(J,vB)}async function mB(J,z,Y=!1){let{code:Z,stdout:X}=await $0(["list-panes","-t",`=${J}`,"-F",`#{pane_id} #{${lG}}`]);if(Z!==0)return"";let G="";for(let Q of X.split(`
|
|
60
|
+
`)){let[f,H]=Q.split("\t");if(!f)continue;if(!G)G=f.trim();if(H?.trim()===z)return f.trim()}return Y?G:""}async function jB(J){return mB(J,vB,!0)}async function HX(J){return mB(J,vB,!1)}async function BX(J,z){if(!J)return"";let Y=["capture-pane","-t",J,"-p"];if(typeof z==="number"&&z>0)Y.push("-S",String(-z));let{code:Z,stdout:X}=await $0(Y);return Z===0?X:""}async function Df(J,z){await c0(["send-keys","-t",J,"-l","--",z])}async function SG(J,z){await c0(["send-keys","-t",J,z])}async function Oz(J,z){let Y=["new-window","-t",`=${J}`,"-c",z.cwd];if(z.name)Y.push("-n",z.name);if(z.surface){Y.push("-P","-F","#{window_id}"),Y.push(z.command);let{code:Z,stdout:X}=await $0(Y),G=X.trim();if(Z===0&&G)await xY(G,cB,"1");return}Y.push(z.command),await c0(Y)}async function ag(J){let{code:z,stdout:Y}=await $0(["display-message","-t",J,"-p",`#{${cB}}`]);return z===0&&Y.trim()==="1"}async function TJ(){let J=["display-message","-p"],z=process.env.TMUX_PANE;if(z&&z.length>0)J.push("-t",z);J.push("#{session_name}");let{code:Y,stdout:Z}=await $0(J),X=Z.trim();return Y===0&&X.length>0?X:null}async function eJ(J){if(!J.startsWith("kobe-hidden-")){let z=HG(J);if(await V1(z))await c0(["kill-session","-t",`=${z}`])}if(await V1(J))await c0(["kill-session","-t",`=${J}`])}async function Lf(){let J=FK;if(await V1(J)){if(await gZ(J,DK)==="tasks")return J;await c0(["kill-session","-t",`=${J}`])}let Y=(await $0(["new-session","-d","-s",J,"-c",gX,"-x","220","-y","50","-P","-F","#{pane_id}",u7()])).stdout.trim();if(Y){let Z=await Vf(),G=(await $0(["split-window","-h","-b","-t",Y,"-l",`${Z}`,"-c",gX,"-P","-F","#{pane_id}",kJ(n1()+CY(b1()))])).stdout.trim();if(G)await i1([["set-option","-p","-t",G,lG,"tasks"],["select-pane","-t",G]])}return await GY(J,DK,"tasks"),J}async function hz(J,z){if(await TJ()!==J)return;let{enterWindow:Z}=await Promise.resolve().then(() => (YJ(),vJ));if(z&&z!==J&&await V1(z)){await Z(z);return}await Z(await Lf())}var Az,gX,lG="@kobe_role",lg,vB="claude",Ez="@kobe_session_id",cB="@kobe_surface",FK="kobe-home",DK="@kobe_home";var h1=k(()=>{zY();jZ();Wz();Az=process.env.KOBE_TMUX_SOCKET?.trim()||"kobe";gX=cg()||"/";lg=lG});async function _g(J,z=OK){let{code:Y,stdout:Z}=await z.capture(["list-windows","-t",`=${J}`,"-F",`#{window_index} #{automatic-rename} #{${Ez}}`]);if(Y!==0)return[];let X=[];for(let G of Z.split(`
|
|
61
|
+
`)){let[Q,f,H]=G.split("\t"),B=Number.parseInt((Q??"").trim(),10);if(!Number.isInteger(B))continue;X.push({index:B,sessionId:H?.trim()??"",autoRename:f?.trim()??""})}return X}async function pg(J,z,Y){let{code:Z,stdout:X}=await Y.capture(["show-window-options","-t",`=${J}:${z}`,"automatic-rename"]);return Z===0&&/\boff\b/.test(X)}async function rg(J){let{code:z,stdout:Y}=await J.capture(["show-window-options","-g","automatic-rename"]);return z===0&&/\boff\b/.test(Y)}async function og(J,z,Y,Z){return await Z.run(["rename-window","-t",`=${J}:${z}`,"--",Y])===0}async function AK(J,z=sg){let Y=0,Z=null,X=async(G,Q)=>{if(Q.autoRename==="1")return!1;if(Q.autoRename==="0"){if(Z===null)Z=await rg(z.runner);if(!Z)return!0}return pg(G,Q.index,z.runner)};for(let G of J.listTasks()){if(G.archived||G.kind==="main"||!G.worktreePath)continue;let Q=N1(G.id),f=await _g(Q,z.runner);if(f.length===0)continue;let H=f.reduce((V,j)=>Math.min(V,j.index),Number.POSITIVE_INFINITY),B=G.vendor??_1;for(let V of f)try{if(await X(Q,V))continue;let j=V.sessionId?await z.titleFromSessionId(B,V.sessionId):V.index===H?await z.titleFromWorktree(G.worktreePath,B):"";if(j&&await og(Q,V.index,j,z.runner))Y++}catch{}}return Y}var OK,sg;var RK=k(()=>{Oq();h1();rJ();OK={capture:$0,run:c0};sg={runner:OK,titleFromSessionId:AV,titleFromWorktree:oZ}});function CK(J){if(J instanceof Error)return J;let z;try{z=typeof J==="string"?J:JSON.stringify(J)}catch{z=String(J)}return Error(z)}function gK(J,z,Y=new Date){let Z=CK(z);return`[${Y.toISOString()}] daemon ${J}: ${Z.stack??`${Z.name}: ${Z.message}`}
|
|
62
|
+
`}function tg(J,z,Y=new Date){let Z=CK(z);return`[${Y.toISOString()}] daemon error [${J}]: ${Z.stack??`${Z.name}: ${Z.message}`}
|
|
63
|
+
`}function y1(J,z){process.stderr.write(tg(J,z))}function eg(J,z,Y=new Date){return`[${Y.toISOString()}] daemon [${J}]: ${z}
|
|
64
|
+
`}function vz(J,z){process.stderr.write(eg(J,z))}function NK(J=(z)=>process.stderr.write(z)){if(dB||nB)return;dB=(z)=>J(gK("unhandledRejection",z)),nB=(z)=>J(gK("uncaughtException",z)),process.on("unhandledRejection",dB),process.on("uncaughtException",nB)}var dB,nB;async function JC(J,z=oZ){let Y=[];for(let Z of J.listTasks()){if(Z.archived||Z.title!==xz||!Z.worktreePath)continue;try{let X=await z(Z.worktreePath,Z.vendor??_1);if(!X)continue;let G=J.getTask(Z.id);if(!G||G.title!==xz)continue;await J.setTitle(Z.id,X),Y.push({id:Z.id,title:X})}catch(X){y1("auto-title-poller",X)}}return Y}function kK(J,z=iB,Y){if(z<=0)return()=>{};let Z=!1,G=setInterval(()=>{if(Y&&!Y())return;if(Z)return;Z=!0,JC(J).then(()=>AK(J)).catch((Q)=>y1("auto-title-poller",Q)).finally(()=>{Z=!1})},z);return G.unref?.(),()=>clearInterval(G)}var iB=4000;var bK=k(()=>{Oq();RG();RK();rJ()});class lB{socket;highWaterMark;queue=[];queuedBytes=0;paused=!1;draining=!1;droppedFrames=0;constructor(J,z={}){this.socket=J,this.highWaterMark=z.highWaterMark??8388608}get isPaused(){return this.paused}get pendingBytes(){return this.queuedBytes}get pendingCount(){return this.queue.length}get dropped(){return this.droppedFrames}write(J,z){if(!this.paused){if(this.safeWrite(J))return;this.pause();return}this.enqueue({line:J,bytes:Buffer.byteLength(J),critical:z})}enqueue(J){if(this.queue.push(J),this.queuedBytes+=J.bytes,this.queuedBytes<=this.highWaterMark)return;let z=[];for(let Y of this.queue){if(this.queuedBytes>this.highWaterMark&&!Y.critical){this.queuedBytes-=Y.bytes,this.droppedFrames++;continue}z.push(Y)}this.queue=z}pause(){if(this.draining)return;this.paused=!0,this.draining=!0,this.socket.once("drain",()=>{this.draining=!1,this.paused=!1,this.flush()})}flush(){while(this.queue.length>0){let J=this.queue[0],z=this.safeWrite(J.line);if(this.queue.shift(),this.queuedBytes-=J.bytes,!z){this.pause();return}}}safeWrite(J){try{return this.socket.write(J)}catch{return!0}}}class $B{last=new Map;sinks=new Set;publish(J,z){this.last.set(J,z);let Y={channel:J,payload:z};for(let Z of this.sinks)Z(Y)}snapshot(){return[...this.last].map(([J,z])=>({channel:J,payload:z}))}onPublish(J){return this.sinks.add(J),()=>{this.sinks.delete(J)}}}async function SK(J,z,Y=wq){if(!Y())return"skipped";let Z=J.getTask(z);if(!Z)return"skipped";if((Z.kind??"task")==="main"||Z.archived)return"skipped";if(Z.status!=="backlog")return"skipped";return await J.setStatus(z,"in_progress"),"moved"}var IK=k(()=>{CG()});import{createHash as zC}from"crypto";import{homedir as YC}from"os";import wY from"path";function qC(){return wY.join(process.env.KOBE_HOME_DIR??YC(),".kobe")}function fC(J){let Y=(wY.basename(J)||"repo").replace(/[^a-zA-Z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"repo",Z=zC("sha1").update(wY.resolve(J)).digest("hex").slice(0,12);return`${Y}-${Z}`}function HC(J){if(!wY.isAbsolute(J))throw Error(`worktreeRootFor: repo must be an absolute path, got: ${J}`);return wY.join(qC(),ZC,fC(J))}function BC(J){if(!wY.isAbsolute(J))throw Error(`managedWorktreeRootsFor: repo must be an absolute path, got: ${J}`);return[HC(J),...QC.map((z)=>wY.join(J,z))]}function EY(J){return J.length>1&&J.endsWith("/")?J.slice(0,-1):J}function TK(J,z){return z===J||z.startsWith(`${J}/`)}function yK(J,z){let Y=EY(z),Z,X=-1;for(let G of J){if(!G.worktreePath)continue;let Q=EY(G.worktreePath);if(TK(Q,Y)&&Q.length>X)X=Q.length,Z=G.id}return Z}function aB(J,z){let Y=EY(z),Z,X=-1;for(let G of J){if(!G.repo)continue;let Q=EY(G.repo);if(TK(Q,Y)&&Q.length>X)X=Q.length,Z=Q}return Z}function xK(J,z){let Y=EY(z),Z=new Set,X=new Set;for(let G of J){if(G.repo)Z.add(EY(G.repo));if(G.worktreePath)X.add(EY(G.worktreePath))}for(let G of Z)for(let Q of BC(G).map(EY)){let f=`${Q}/`;if(!Y.startsWith(f))continue;let B=Y.slice(f.length).split("/")[0];if(!B)continue;let V=`${f}${B}`;if(X.has(V))return;return{repo:G,worktreePath:V}}return}var ZC="worktrees",XC=".kobe/worktrees",GC=".claude/worktrees",QC;var uK=k(()=>{QC=[XC,GC]});function rB(J){return{message:J instanceof Error?J.message:String(J),name:J instanceof Error?J.name:void 0}}async function aG(J,z,Y,Z){let X=J.get(z);if(!X)throw Error(`unknown daemon request: ${z}`);return X.handle(oB(Y),Z)}function _G(){return new Map([{name:"hello",handle(z,Y){let Z=typeof z.protocolVersion==="number"?z.protocolVersion:$J,X=typeof z.minProtocolVersion==="number"?z.minProtocolVersion:Z;if(!lQ({localVersion:$J,localMin:FY,remoteVersion:Z,remoteMin:X}))throw Error(`daemon is protocol v${$J} (min v${FY}); this client is v${Z} (min v${X}). Upgrade your kobe.`);return{protocolVersion:$J,minProtocolVersion:FY,kobeVersion:p0,capabilities:[...Z8],daemonPid:Y.daemon.pid,clientId:Y.clientId,tasks:Y.orch.listTasks().map(fz)}}},{name:"daemon.status",handle(z,Y){return{daemonPid:Y.daemon.pid,kobeVersion:p0,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(z,Y){return await Y.daemon.stopSoon(),{}}},{name:"task.list",handle(z,Y){return{tasks:Y.orch.listTasks().map(fz)}}},{name:"task.get",handle(z,Y){let Z=A1(z,"taskId"),X=Y.orch.getTask(Z);if(!X)throw Error(`task not found: ${Z}`);return{task:fz(X)}}},{name:"task.create",async handle(z,Y){let Z=A1(z,"repo"),X=await Y.orch.createTask({repo:Z,title:Jz(z,"title"),branch:Jz(z,"branch"),baseRef:Jz(z,"baseRef"),vendor:pB(z,"vendor"),modelEffort:Jz(z,"effort")});return{taskId:X.id,task:fz(X)}}},{name:"task.archive",async handle(z,Y){let Z=A1(z,"taskId");return await Y.orch.setArchived(Z,_B(z,"archived")),{}}},{name:"task.rename",async handle(z,Y){let Z=A1(z,"taskId");return await Y.orch.setTitle(Z,A1(z,"title")),{}}},{name:"task.setBranch",async handle(z,Y){let Z=A1(z,"taskId");return await Y.orch.setBranch(Z,A1(z,"branch")),{}}},{name:"task.setVendor",async handle(z,Y){let Z=A1(z,"taskId"),X=pB(z,"vendor");if(!X)throw Error("task.setVendor: vendor is required");return await Y.orch.setVendor(Z,X),{}}},{name:"task.delete",async handle(z,Y){let Z=A1(z,"taskId");return await Y.orch.deleteTask(Z,{force:_B(z,"force")}),Y.activity.clearTask(Z),{}}},{name:"task.pin",async handle(z,Y){let Z=A1(z,"taskId");return await Y.orch.setPinned(Z,_B(z,"pinned")),{}}},{name:"task.move",async handle(z,Y){let Z=A1(z,"taskId"),X=A1(z,"direction");if(X!=="up"&&X!=="down")throw Error("direction must be up or down");return await Y.orch.moveTask(Z,X==="up"?-1:1),{}}},{name:"task.status",async handle(z,Y){let Z=A1(z,"taskId"),X=A1(z,"status");if(!UV(X))throw Error("status must be a TaskStatus");let G=X==="done"?Y.orch.getTask(Z):void 0,Q=G?.status;if(await Y.orch.setStatus(Z,X),X==="done"&&Q!=="done"&&G)try{let f=await Y.issues.mirrorTaskDone(G.repo,Z);if(f)Y.bus.publish("issue.snapshot",f)}catch(f){y1("issue-done-mirror",f)}return{}}},{name:"task.reorder",async handle(z,Y){let Z=z.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 X=Z.map((G)=>{if(typeof G!=="object"||G===null)throw Error("each move needs taskId and position");let Q=G,f=A1(Q,"taskId"),H=Q.position;if(typeof H!=="number"||!Number.isFinite(H))throw Error("position must be a finite number");return{taskId:f,position:H}});return await Y.orch.reorderTasks(X),{}}},{name:"task.ensureMain",async handle(z,Y){let Z=A1(z,"repo"),X=await Y.orch.ensureMainTask(Z);return{task:fz(X)}}},{name:"project.forget",async handle(z,Y){let Z=A1(z,"repo");return await Y.orch.forgetProject(Z),{}}},{name:"task.ensureWorktree",async handle(z,Y){let Z=A1(z,"taskId");Y.bus.publish("task.jobs",{taskId:Z,kind:"ensureWorktree",phase:"running"});try{let X=await Y.orch.ensureWorktree(Z);return Y.bus.publish("task.jobs",{taskId:Z,kind:"ensureWorktree",phase:"done"}),{worktreePath:X}}catch(X){throw Y.bus.publish("task.jobs",{taskId:Z,kind:"ensureWorktree",phase:"error",error:X instanceof Error?X.message:String(X)}),X}}},{name:"worktree.discoverAdoptable",async handle(z,Y){let Z=A1(z,"repo");return{worktrees:await Y.orch.discoverAdoptableWorktrees(Z)}}},{name:"worktree.adopt",async handle(z,Y){let Z=await Y.orch.adoptWorktree({repo:A1(z,"repo"),worktreePath:A1(z,"worktreePath"),branch:Jz(z,"branch"),vendor:pB(z,"vendor"),title:Jz(z,"title"),ifExists:Jz(z,"ifExists")==="return"?"return":"error"});return{task:fz(Z)}}},{name:"worktree.reconcile",async handle(z,Y){let Z=A1(z,"cwd"),X=A1(z,"worktreePath"),G=aB(Y.orch.listTasks(),Z)??aB(Y.orch.listTasks(),X);if(!G)return{adopted:!1};try{return{adopted:!0,taskId:(await Y.orch.adoptWorktree({repo:G,worktreePath:X,ifExists:"return"})).id}}catch(Q){return y1("worktree-created",Q),{adopted:!1}}}},{name:"task.setActive",async handle(z,Y){let Z=Jz(z,"taskId")??null;return await Y.orch.setActiveTask(Z),Y.bus.publish("active-task",{taskId:Z}),{}}},{name:"issue.list",async handle(z,Y){return Y.issues.list(A1(z,"repoRoot"))}},{name:"issue.mutate",async handle(z,Y){let Z=await Y.issues.mutate(A1(z,"repoRoot"),z.op);return Y.bus.publish("issue.snapshot",Z),Z}},{name:"session.deliver",async handle(z,Y){let Z=A1(z,"taskId"),X=A1(z,"text"),G=Jz(z,"source");if(G!==void 0&&G!=="note"&&G!=="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:X,at:Date.now(),source:G??"dispatcher"}),{ok:!0}}},{name:"note.file",async handle(z,Y){let Z=A1(z,"taskId"),X=A1(z,"text"),G=Y.orch.getTask(Z);if(!G)throw Error(`task not found: ${Z}`);let Q=Y.orch.listTasks().find((H)=>(H.kind??"task")==="main"&&H.repo===G.repo&&!H.archived);if(!Q||Q.id===G.id)return{ok:!0,routed:!1};let f=G.title||G.branch||Z;return Y.bus.publish("session.deliver",{taskId:Q.id,text:`[KOBE FIELD NOTE] from "${f}" (task ${Z}): ${X}`,at:Date.now(),source:"note"}),{ok:!0,routed:!0}}},{name:"engine.reportEvent",async handle(z,Y){let Z=A1(z,"kind");if(!Lq(Z))throw Error(`unknown engine event kind: ${Z}`);let X=Jz(z,"taskId"),G=Jz(z,"cwd");if(!X&&G&&Z==="session-start"){let H=xK(Y.orch.listTasks(),G);if(H)try{await Y.orch.adoptWorktree({repo:H.repo,worktreePath:H.worktreePath,ifExists:"return"})}catch(B){y1("worktree-autosync",B)}}let Q=X??(G?yK(Y.orch.listTasks(),G):void 0);if(!Q)return{};let f=jC(z);if(Y.activity.report(Q,Z,f),Z==="turn-start")SK(Y.orch,Q).then((H)=>{if(H==="moved")console.log(`[status-rules] task ${Q} auto-moved backlog \u2192 in_progress`)}).catch((H)=>y1("status-rules",H));return{}}}].map((z)=>[z.name,z]))}function oB(J){if(!J||typeof J!=="object"||Array.isArray(J))return{};return J}function A1(J,z){let Y=J[z];if(typeof Y!=="string"||Y.length===0)throw Error(`${z} is required`);return Y}function Jz(J,z){let Y=J[z];if(Y===void 0||Y===null||Y==="")return;if(typeof Y!=="string")throw Error(`${z} must be a string`);return Y}function _B(J,z){let Y=J[z];if(Y===void 0||Y===null)return;if(typeof Y!=="boolean")throw Error(`${z} must be a boolean`);return Y}function pB(J,z){let Y=Jz(J,z);return Y&&Y.trim().length>0?Y:void 0}function jC(J){let z=J.detail;if(!z||typeof z!=="object"||Array.isArray(z))return;let Y=z,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 Mf=k(()=>{Mq();IK();rJ();MJ();uK();JZ()});import{execFile as WC}from"child_process";import{mkdir as VC,readFile as KC,realpath as EK,rename as UC,stat as DC,writeFile as LC}from"fs/promises";import{homedir as MC}from"os";import{dirname as FC,isAbsolute as OC,join as AC,resolve as wK}from"path";import{promisify as RC}from"util";function gC(J){return(J instanceof Error?J.message:String(J)).includes("not a git repository")}function Of(J=process.env.KOBE_HOME_DIR??MC()){return AC(J,".kobe","issues.json")}function hK(J){return typeof J==="string"&&PK.includes(J)}function CC(J){if(J===null||typeof J!=="object"||Array.isArray(J))return null;let z=J;if(typeof z.id!=="number")return null;return{id:z.id,title:typeof z.title==="string"?z.title:"(untitled)",status:hK(z.status)?z.status:"open",created:typeof z.created==="string"?z.created:"",body:typeof z.body==="string"?z.body:"",taskId:typeof z.taskId==="string"?z.taskId:void 0}}function NC(){return{version:1,repos:{}}}function kC(){let J=new Date,z=String(J.getMonth()+1).padStart(2,"0"),Y=String(J.getDate()).padStart(2,"0");return`${J.getFullYear()}-${z}-${Y}`}async function bC(J){let{stdout:z}=await Yj("git",["-C",J,"rev-parse","--git-common-dir"]),Y=z.trim();return EK(OC(Y)?Y:wK(J,Y))}async function SC(J){let{stdout:z}=await Yj("git",["-C",J,"rev-parse","--show-toplevel"]);return z.trim()}async function IC(J){let{stdout:z}=await Yj("git",["-C",J,"worktree","list","--porcelain"]),Y=z.split(/\r?\n/).find((Z)=>Z.startsWith("worktree "))?.slice(9).trim();return Y?EK(Y):SC(J)}async function sB(J){if(typeof J!=="string"||J.length===0)throw Error("repoRoot is required");let z=wK(J);if(!(await DC(z).catch(()=>null))?.isDirectory())throw Error("repoRoot does not exist");try{let[Z,X]=await Promise.all([IC(z),bC(z)]);return{repoRoot:Z,repoKey:X}}catch(Z){if(gC(Z))throw Error("repoRoot is not a git repository");throw Z}}async function tB(J){try{let z=JSON.parse(await KC(J,"utf8")),Y={};if(z.repos&&typeof z.repos==="object")for(let[Z,X]of Object.entries(z.repos)){if(!X||typeof X!=="object")continue;let G=X;Y[Z]={repoRoot:typeof G.repoRoot==="string"?G.repoRoot:"",nextId:typeof G.nextId==="number"?G.nextId:1,issues:Array.isArray(G.issues)?G.issues.map(CC).filter((Q)=>Q!==null):[]}}return{version:1,repos:Y}}catch(z){if(z.code==="ENOENT")return NC();throw z}}async function eB(J,z){await VC(FC(J),{recursive:!0});let Y=`${J}.tmp`;await LC(Y,`${JSON.stringify(z,null,2)}
|
|
65
|
+
`,"utf8"),await UC(Y,J)}function Jj(J,z){return{repoRoot:J,exists:z!==null,nextId:z?.nextId??1,issues:z?.issues??[]}}async function zj(J,z){let Z=(Ff.get(J)??Promise.resolve()).then(z),X=Z.then(()=>{return},()=>{return});return Ff.set(J,X),X.then(()=>{if(Ff.get(J)===X)Ff.delete(J)}),Z}class Af{path;constructor(J=Of()){this.path=J}async list(J){let{repoRoot:z,repoKey:Y}=await sB(J);return zj(this.path,async()=>{let Z=await tB(this.path),X=Z.repos[Y]??null;if(X&&X.repoRoot!==z)X.repoRoot=z,await eB(this.path,Z);return Jj(z,X)})}async mirrorTaskDone(J,z){let{repoRoot:Y,repoKey:Z}=await sB(J);if(!z)return null;return zj(this.path,async()=>{let X=await tB(this.path),G=X.repos[Z];if(!G)return null;let Q=G.issues.find((f)=>f.taskId===z);if(!Q||Q.status==="done")return null;return Q.status="done",G.repoRoot=Y,await eB(this.path,X),Jj(Y,G)})}async mutate(J,z){let{repoRoot:Y,repoKey:Z}=await sB(J);if(!z||typeof z!=="object"||Array.isArray(z)||typeof z.type!=="string")throw Error("missing op");return zj(this.path,async()=>{let X=await tB(this.path),G=X.repos[Z];if(!G)G={repoRoot:Y,nextId:1,issues:[]},X.repos[Z]=G;G.repoRoot=Y;let Q=z;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");G.issues=[{id:G.nextId,title:Q.title,status:"open",created:kC(),body:typeof Q.body==="string"?Q.body:""},...G.issues],G.nextId+=1}else if(Q.type==="setStatus"){if(typeof Q.id!=="number")throw Error("setStatus requires a numeric id");if(!hK(Q.status))throw Error(`invalid status: must be one of ${PK.join(", ")}`);let f=G.issues.find((H)=>H.id===Q.id);if(!f)throw Error(`no issue #${Q.id}`);f.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 f=G.issues.find((H)=>H.id===Q.id);if(!f)throw Error(`no issue #${Q.id}`);if(typeof Q.title==="string")f.title=Q.title;if(typeof Q.body==="string")f.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 f=G.issues.find((H)=>H.id===Q.id);if(!f)throw Error(`no issue #${Q.id}`);f.taskId=Q.taskId}else if(Q.type==="unlink"){if(typeof Q.id!=="number")throw Error("unlink requires a numeric id");let f=G.issues.find((H)=>H.id===Q.id);if(!f)throw Error(`no issue #${Q.id}`);f.taskId=void 0}else if(Q.type==="delete"){if(typeof Q.id!=="number")throw Error("delete requires a numeric id");let f=G.issues.filter((H)=>H.id!==Q.id);if(f.length===G.issues.length)throw Error(`no issue #${Q.id}`);G.issues=f}else throw Error(`unknown op type: ${Q.type}`);return await eB(this.path,X),Jj(Y,G)})}}var Yj,PK,Ff;var Zj=k(()=>{Yj=RC(WC),PK=["open","doing","hold","done"];Ff=new Map});import{lstat as vK,readdir as TC,realpath as yC,stat as xC}from"fs/promises";import{join as uC,relative as EC,resolve as mK,sep as wC}from"path";import{Readable as PC}from"stream";function lK(J,z={}){let Y=z.entryType||z.type;if(Y==="both")Y=mJ.FILE_DIR_TYPE;if(Y)z.type=Y;if(!J)throw Error("readdirp: root argument is required. Usage: readdirp(root, options)");else if(typeof J!=="string")throw TypeError("readdirp: root argument must be a string. Usage: readdirp(root, options)");else if(Y&&!cK.includes(Y))throw Error(`readdirp: Invalid type passed. Use one of ${cK.join(", ")}`);return z.root=J,new Gj(z)}var mJ,Xj,iK="READDIRP_RECURSIVE_ERROR",hC,cK,vC,mC,cC=(J)=>hC.has(J.code),dC,dK=(J)=>!0,nK=(J)=>{if(J===void 0)return dK;if(typeof J==="function")return J;if(typeof J==="string"){let z=J.trim();return(Y)=>Y.basename===z}if(Array.isArray(J)){let z=J.map((Y)=>Y.trim());return(Y)=>z.some((Z)=>Y.basename===Z)}return dK},Gj;var $K=k(()=>{mJ={FILE_TYPE:"files",DIR_TYPE:"directories",FILE_DIR_TYPE:"files_directories",EVERYTHING_TYPE:"all"},Xj={root:".",fileFilter:(J)=>!0,directoryFilter:(J)=>!0,type:mJ.FILE_TYPE,lstat:!1,depth:2147483648,alwaysStat:!1,highWaterMark:4096};Object.freeze(Xj);hC=new Set(["ENOENT","EPERM","EACCES","ELOOP",iK]),cK=[mJ.DIR_TYPE,mJ.EVERYTHING_TYPE,mJ.FILE_DIR_TYPE,mJ.FILE_TYPE],vC=new Set([mJ.DIR_TYPE,mJ.EVERYTHING_TYPE,mJ.FILE_DIR_TYPE]),mC=new Set([mJ.EVERYTHING_TYPE,mJ.FILE_DIR_TYPE,mJ.FILE_TYPE]),dC=process.platform==="win32";Gj=class Gj extends PC{parents;reading;parent;_stat;_maxDepth;_wantsDir;_wantsFile;_wantsEverything;_root;_isDirent;_statsProp;_rdOptions;_fileFilter;_directoryFilter;constructor(J={}){super({objectMode:!0,autoDestroy:!0,highWaterMark:J.highWaterMark});let z={...Xj,...J},{root:Y,type:Z}=z;this._fileFilter=nK(z.fileFilter),this._directoryFilter=nK(z.directoryFilter);let X=z.lstat?vK:xC;if(dC)this._stat=(G)=>X(G,{bigint:!0});else this._stat=X;this._maxDepth=z.depth!=null&&Number.isSafeInteger(z.depth)?z.depth:Xj.depth,this._wantsDir=Z?vC.has(Z):!1,this._wantsFile=Z?mC.has(Z):!1,this._wantsEverything=Z===mJ.EVERYTHING_TYPE,this._root=mK(Y),this._isDirent=!z.alwaysStat,this._statsProp=this._isDirent?"dirent":"stats",this._rdOptions={encoding:"utf8",withFileTypes:this._isDirent},this.parents=[this._exploreDir(Y,1)],this.reading=!1,this.parent=void 0}async _read(J){if(this.reading)return;this.reading=!0;try{while(!this.destroyed&&J>0){let z=this.parent,Y=z&&z.files;if(Y&&Y.length>0){let{path:Z,depth:X}=z,G=Y.splice(0,J).map((f)=>this._formatEntry(f,Z)),Q=await Promise.all(G);for(let f of Q){if(!f)continue;if(this.destroyed)return;let H=await this._getEntryType(f);if(H==="directory"&&this._directoryFilter(f)){if(X<=this._maxDepth)this.parents.push(this._exploreDir(f.fullPath,X+1));if(this._wantsDir)this.push(f),J--}else if((H==="file"||this._includeAsFile(f))&&this._fileFilter(f)){if(this._wantsFile)this.push(f),J--}}}else{let Z=this.parents.pop();if(!Z){this.push(null);break}if(this.parent=await Z,this.destroyed)return}}}catch(z){this.destroy(z)}finally{this.reading=!1}}async _exploreDir(J,z){let Y;try{Y=await TC(J,this._rdOptions)}catch(Z){this._onError(Z)}return{files:Y,depth:z,path:J}}async _formatEntry(J,z){let Y,Z=this._isDirent?J.name:J;try{let X=mK(uC(z,Z));Y={path:EC(this._root,X),fullPath:X,basename:Z},Y[this._statsProp]=this._isDirent?J:await this._stat(X)}catch(X){this._onError(X);return}return Y}_onError(J){if(cC(J)&&!this.destroyed)this.emit("warn",J);else this.destroy(J)}async _getEntryType(J){if(!J&&this._statsProp in J)return"";let z=J[this._statsProp];if(z.isFile())return"file";if(z.isDirectory())return"directory";if(z&&z.isSymbolicLink()){let Y=J.fullPath;try{let Z=await yC(Y),X=await vK(Z);if(X.isFile())return"file";if(X.isDirectory()){let G=Z.length;if(Y.startsWith(Z)&&Y.substr(G,1)===wC){let Q=Error(`Circular symlink detected: "${Y}" points to "${Z}"`);return Q.code=iK,this._onError(Q)}return"directory"}}catch(Z){return this._onError(Z),""}}}_includeAsFile(J){let z=J&&J[this._statsProp];return z&&this._wantsEverything&&!z.isDirectory()}}});import{watch as nC,unwatchFile as aK,watchFile as iC}from"fs";import{realpath as Qj,lstat as lC,open as $C,stat as pK}from"fs/promises";import{type as aC}from"os";import*as E1 from"path";function _K(J,z,Y,Z,X){let G=(Q,f)=>{if(Y(J),X(Q,f,{watchedPath:J}),f&&J!==f)Cf(E1.resolve(J,f),NZ,E1.join(J,f))};try{return nC(J,{persistent:z.persistent},G)}catch(Q){Z(Q);return}}class jj{fsw;_boundHandleError;constructor(J){this.fsw=J,this._boundHandleError=(z)=>J._handleError(z)}_watchWithNodeFs(J,z){let Y=this.fsw.options,Z=E1.dirname(J),X=E1.basename(J);this.fsw._getWatchedDir(Z).add(X);let Q=E1.resolve(J),f={persistent:Y.persistent};if(!z)z=Nf;let H;if(Y.usePolling){let B=Y.interval!==Y.binaryInterval;f.interval=B&&zN(X)?Y.binaryInterval:Y.interval,H=XN(J,Q,f,{listener:z,rawEmitter:this.fsw._emitRaw})}else H=ZN(J,Q,f,{listener:z,errHandler:this._boundHandleError,rawEmitter:this.fsw._emitRaw});return H}_handleFile(J,z,Y){if(this.fsw.closed)return;let Z=E1.dirname(J),X=E1.basename(J),G=this.fsw._getWatchedDir(Z),Q=z;if(G.has(X))return;let f=async(B,V)=>{if(!this.fsw._throttle(sC,J,5))return;if(!V||V.mtimeMs===0)try{let j=await pK(J);if(this.fsw.closed)return;let{atimeMs:K,mtimeMs:L}=j;if(!K||K<=L||L!==Q.mtimeMs)this.fsw._emit(Rz.CHANGE,J,j);if((pC||rC||oC)&&Q.ino!==j.ino){this.fsw._closeFile(B),Q=j;let A=this._watchWithNodeFs(J,f);if(A)this.fsw._addPathCloser(B,A)}else Q=j}catch(j){this.fsw._remove(Z,X)}else if(G.has(X)){let{atimeMs:j,mtimeMs:K}=V;if(!j||j<=K||K!==Q.mtimeMs)this.fsw._emit(Rz.CHANGE,J,V);Q=V}},H=this._watchWithNodeFs(J,f);if(!(Y&&this.fsw.options.ignoreInitial)&&this.fsw._isntIgnored(J)){if(!this.fsw._throttle(Rz.ADD,J,0))return;this.fsw._emit(Rz.ADD,J,z)}return H}async _handleSymlink(J,z,Y,Z){if(this.fsw.closed)return;let X=J.fullPath,G=this.fsw._getWatchedDir(z);if(!this.fsw.options.followSymlinks){this.fsw._incrReadyCount();let Q;try{Q=await Qj(Y)}catch(f){return this.fsw._emitReady(),!0}if(this.fsw.closed)return;if(G.has(Z)){if(this.fsw._symlinkPaths.get(X)!==Q)this.fsw._symlinkPaths.set(X,Q),this.fsw._emit(Rz.CHANGE,Y,J.stats)}else G.add(Z),this.fsw._symlinkPaths.set(X,Q),this.fsw._emit(Rz.ADD,Y,J.stats);return this.fsw._emitReady(),!0}if(this.fsw._symlinkPaths.has(X))return!0;this.fsw._symlinkPaths.set(X,!0)}_handleRead(J,z,Y,Z,X,G,Q){J=E1.join(J,"");let f=Z?`${J}:${Z}`:J;if(Q=this.fsw._throttle("readdir",f,1000),!Q)return;let H=this.fsw._getWatchedDir(Y.path),B=new Set,V=this.fsw._readdirp(J,{fileFilter:(j)=>Y.filterPath(j),directoryFilter:(j)=>Y.filterDir(j)});if(!V)return;return V.on(_C,async(j)=>{if(this.fsw.closed){V=void 0;return}let K=j.path,L=E1.join(J,K);if(B.add(K),j.stats.isSymbolicLink()&&await this._handleSymlink(j,J,L,K))return;if(this.fsw.closed){V=void 0;return}if(K===Z||!Z&&!H.has(K))this.fsw._incrReadyCount(),L=E1.join(X,E1.relative(X,L)),this._addToNodeFs(L,z,Y,G+1)}).on(Rz.ERROR,this._boundHandleError),new Promise((j,K)=>{if(!V)return K();V.once(Hj,()=>{if(this.fsw.closed){V=void 0;return}let L=Q?Q.clear():!1;if(j(void 0),H.getChildren().filter((A)=>{return A!==J&&!B.has(A)}).forEach((A)=>{this.fsw._remove(J,A)}),V=void 0,L)this._handleRead(J,!1,Y,Z,X,G,Q)})})}async _handleDir(J,z,Y,Z,X,G,Q){let f=this.fsw._getWatchedDir(E1.dirname(J)),H=f.has(E1.basename(J));if(!(Y&&this.fsw.options.ignoreInitial)&&!X&&!H)this.fsw._emit(Rz.ADD_DIR,J,z);f.add(E1.basename(J)),this.fsw._getWatchedDir(J);let B,V,j=this.fsw.options.depth;if((j==null||Z<=j)&&!this.fsw._symlinkPaths.has(Q)){if(!X){if(await this._handleRead(J,Y,G,X,J,Z,B),this.fsw.closed)return}V=this._watchWithNodeFs(J,(K,L)=>{if(L&&L.mtimeMs===0)return;this._handleRead(K,!1,G,X,J,Z,B)})}return V}async _addToNodeFs(J,z,Y,Z,X){let G=this.fsw._emitReady;if(this.fsw._isIgnored(J)||this.fsw.closed)return G(),!1;let Q=this.fsw._getWatchHelpers(J);if(Y)Q.filterPath=(f)=>Y.filterPath(f),Q.filterDir=(f)=>Y.filterDir(f);try{let f=await tC[Q.statMethod](Q.watchPath);if(this.fsw.closed)return;if(this.fsw._isIgnored(Q.watchPath,f))return G(),!1;let H=this.fsw.options.followSymlinks,B;if(f.isDirectory()){let V=E1.resolve(J),j=H?await Qj(J):J;if(this.fsw.closed)return;if(B=await this._handleDir(Q.watchPath,f,z,Z,X,Q,j),this.fsw.closed)return;if(V!==j&&j!==void 0)this.fsw._symlinkPaths.set(V,j)}else if(f.isSymbolicLink()){let V=H?await Qj(J):J;if(this.fsw.closed)return;let j=E1.dirname(Q.watchPath);if(this.fsw._getWatchedDir(j).add(Q.watchPath),this.fsw._emit(Rz.ADD,Q.watchPath,f),B=await this._handleDir(j,f,z,Z,J,Q,V),this.fsw.closed)return;if(V!==void 0)this.fsw._symlinkPaths.set(E1.resolve(J),V)}else B=this._handleFile(Q.watchPath,f,z);if(G(),B)this.fsw._addPathCloser(J,B);return!1}catch(f){if(this.fsw._handleError(f))return G(),J}}}var _C="data",Hj="end",rK="close",Nf=()=>{},kf,Bj,pC,rC,oC,oK,x1,Rz,sC="watch",tC,NZ="listeners",Rf="errHandlers",CX="rawEmitters",eC,JN,zN=(J)=>JN.has(E1.extname(J).slice(1).toLowerCase()),fj=(J,z)=>{if(J instanceof Set)J.forEach(z);else z(J)},pG=(J,z,Y)=>{let Z=J[z];if(!(Z instanceof Set))J[z]=Z=new Set([Z]);Z.add(Y)},YN=(J)=>(z)=>{let Y=J[z];if(Y instanceof Set)Y.clear();else delete J[z]},rG=(J,z,Y)=>{let Z=J[z];if(Z instanceof Set)Z.delete(Y);else if(Z===Y)delete J[z]},sK=(J)=>J instanceof Set?J.size===0:!J,gf,Cf=(J,z,Y,Z,X)=>{let G=gf.get(J);if(!G)return;fj(G[z],(Q)=>{Q(Y,Z,X)})},ZN=(J,z,Y,Z)=>{let{listener:X,errHandler:G,rawEmitter:Q}=Z,f=gf.get(z),H;if(!Y.persistent){if(H=_K(J,Y,X,G,Q),!H)return;return H.close.bind(H)}if(f)pG(f,NZ,X),pG(f,Rf,G),pG(f,CX,Q);else{if(H=_K(J,Y,Cf.bind(null,z,NZ),G,Cf.bind(null,z,CX)),!H)return;H.on(Rz.ERROR,async(B)=>{let V=Cf.bind(null,z,Rf);if(f)f.watcherUnusable=!0;if(Bj&&B.code==="EPERM")try{await(await $C(J,"r")).close(),V(B)}catch(j){}else V(B)}),f={listeners:X,errHandlers:G,rawEmitters:Q,watcher:H},gf.set(z,f)}return()=>{if(rG(f,NZ,X),rG(f,Rf,G),rG(f,CX,Q),sK(f.listeners))f.watcher.close(),gf.delete(z),eC.forEach(YN(f)),f.watcher=void 0,Object.freeze(f)}},qj,XN=(J,z,Y,Z)=>{let{listener:X,rawEmitter:G}=Z,Q=qj.get(z),f=Q&&Q.options;if(f&&(f.persistent<Y.persistent||f.interval>Y.interval))aK(z),Q=void 0;if(Q)pG(Q,NZ,X),pG(Q,CX,G);else Q={listeners:X,rawEmitters:G,options:Y,watcher:iC(z,Y,(H,B)=>{fj(Q.rawEmitters,(j)=>{j(Rz.CHANGE,z,{curr:H,prev:B})});let V=H.mtimeMs;if(H.size!==B.size||V>B.mtimeMs||V===0)fj(Q.listeners,(j)=>j(J,H))})},qj.set(z,Q);return()=>{if(rG(Q,NZ,X),rG(Q,CX,G),sK(Q.listeners))qj.delete(z),aK(z),Q.options=Q.watcher=void 0,Object.freeze(Q)}};var tK=k(()=>{kf=process.platform,Bj=kf==="win32",pC=kf==="darwin",rC=kf==="linux",oC=kf==="freebsd",oK=aC()==="OS400",x1={ALL:"all",READY:"ready",ADD:"add",CHANGE:"change",ADD_DIR:"addDir",UNLINK:"unlink",UNLINK_DIR:"unlinkDir",RAW:"raw",ERROR:"error"},Rz=x1,tC={lstat:lC,stat:pK},eC=[NZ,Rf,CX],JN=new Set(["3dm","3ds","3g2","3gp","7z","a","aac","adp","afdesign","afphoto","afpub","ai","aif","aiff","alz","ape","apk","appimage","ar","arj","asf","au","avi","bak","baml","bh","bin","bk","bmp","btif","bz2","bzip2","cab","caf","cgm","class","cmx","cpio","cr2","cur","dat","dcm","deb","dex","djvu","dll","dmg","dng","doc","docm","docx","dot","dotm","dra","DS_Store","dsk","dts","dtshd","dvb","dwg","dxf","ecelp4800","ecelp7470","ecelp9600","egg","eol","eot","epub","exe","f4v","fbs","fh","fla","flac","flatpak","fli","flv","fpx","fst","fvt","g3","gh","gif","graffle","gz","gzip","h261","h263","h264","icns","ico","ief","img","ipa","iso","jar","jpeg","jpg","jpgv","jpm","jxr","key","ktx","lha","lib","lvp","lz","lzh","lzma","lzo","m3u","m4a","m4v","mar","mdi","mht","mid","midi","mj2","mka","mkv","mmr","mng","mobi","mov","movie","mp3","mp4","mp4a","mpeg","mpg","mpga","mxu","nef","npx","numbers","nupkg","o","odp","ods","odt","oga","ogg","ogv","otf","ott","pages","pbm","pcx","pdb","pdf","pea","pgm","pic","png","pnm","pot","potm","potx","ppa","ppam","ppm","pps","ppsm","ppsx","ppt","pptm","pptx","psd","pya","pyc","pyo","pyv","qt","rar","ras","raw","resources","rgb","rip","rlc","rmf","rmvb","rpm","rtf","rz","s3m","s7z","scpt","sgi","shar","snap","sil","sketch","slk","smv","snk","so","stl","suo","sub","swf","tar","tbz","tbz2","tga","tgz","thmx","tif","tiff","tlz","ttc","ttf","txz","udf","uvh","uvi","uvm","uvp","uvs","uvu","viv","vob","war","wav","wax","wbmp","wdp","weba","webm","webp","whl","wim","wm","wma","wmv","wmx","woff","woff2","wrm","wvx","xbm","xif","xla","xlam","xls","xlsb","xlsm","xlsx","xlt","xltm","xltx","xm","xmind","xpi","xpm","xwd","xz","z","zip","zipx"]),gf=new Map;qj=new Map});import{EventEmitter as GN}from"events";import{stat as QN,Stats as xc}from"fs";import{readdir as qN,stat as fN}from"fs/promises";import*as G1 from"path";function bf(J){return Array.isArray(J)?J:[J]}function UN(J){if(typeof J==="function")return J;if(typeof J==="string")return(z)=>J===z;if(J instanceof RegExp)return(z)=>J.test(z);if(typeof J==="object"&&J!==null)return(z)=>{if(J.path===z)return!0;if(J.recursive){let Y=G1.relative(J.path,z);if(!Y)return!1;return!Y.startsWith("..")&&!G1.isAbsolute(Y)}return!1};return()=>!1}function DN(J){if(typeof J!=="string")throw Error("string expected");J=G1.normalize(J),J=J.replace(/\\/g,"/");let z=!1;if(J.startsWith("//"))z=!0;if(J=J.replace(X6,"/"),z)J="/"+J;return J}function eK(J,z,Y){let Z=DN(z);for(let X=0;X<J.length;X++){let G=J[X];if(G(Z,Y))return!0}return!1}function LN(J,z){if(J==null)throw TypeError("anymatch: specify first argument");let Z=bf(J).map((X)=>UN(X));if(z==null)return(X,G)=>{return eK(Z,X,G)};return eK(Z,z)}class Q6{path;_removeWatcher;items;constructor(J,z){this.path=J,this._removeWatcher=z,this.items=new Set}add(J){let{items:z}=this;if(!z)return;if(J!==Z6&&J!==BN)z.add(J)}async remove(J){let{items:z}=this;if(!z)return;if(z.delete(J),z.size>0)return;let Y=this.path;try{await qN(Y)}catch(Z){if(this._removeWatcher)this._removeWatcher(G1.dirname(Y),G1.basename(Y))}}has(J){let{items:z}=this;if(!z)return;return z.has(J)}getChildren(){let{items:J}=this;if(!J)return[];return[...J.values()]}dispose(){this.items.clear(),this.path="",this._removeWatcher=Nf,this.items=FN,Object.freeze(this)}}class q6{fsw;path;watchPath;fullWatchPath;dirParts;followSymlinks;statMethod;constructor(J,z,Y){this.fsw=Y;let Z=J;this.path=J=J.replace(KN,""),this.watchPath=Z,this.fullWatchPath=G1.resolve(Z),this.dirParts=[],this.dirParts.forEach((X)=>{if(X.length>1)X.pop()}),this.followSymlinks=z,this.statMethod=z?ON:AN}entryPath(J){return G1.join(this.watchPath,G1.relative(this.watchPath,J.fullPath))}filterPath(J){let{stats:z}=J;if(z&&z.isSymbolicLink())return this.filterDir(J);let Y=this.entryPath(J);return this.fsw._isntIgnored(Y,z)&&this.fsw._hasReadPermissions(z)}filterDir(J){return this.fsw._isntIgnored(this.entryPath(J),J.stats)}}function H6(J,z={}){let Y=new f6(z);return Y.add(J),Y}var Wj="/",HN="//",Z6=".",BN="..",jN="string",WN,X6,VN,KN,Vj=(J)=>typeof J==="object"&&J!==null&&!(J instanceof RegExp),J6=(J)=>{let z=bf(J).flat();if(!z.every((Y)=>typeof Y===jN))throw TypeError(`Non-string provided as watch path: ${z}`);return z.map(G6)},z6=(J)=>{let z=J.replace(WN,Wj),Y=!1;if(z.startsWith(HN))Y=!0;if(z=z.replace(X6,Wj),Y)z=Wj+z;return z},G6=(J)=>z6(G1.normalize(z6(J))),Y6=(J="")=>(z)=>{if(typeof z==="string")return G6(G1.isAbsolute(z)?z:G1.join(J,z));else return z},MN=(J,z)=>{if(G1.isAbsolute(J))return J;return G1.join(z,J)},FN,ON="stat",AN="lstat",f6;var B6=k(()=>{$K();tK();/*! chokidar - MIT License (c) 2012 Paul Miller (paulmillr.com) */WN=/\\/g,X6=/\/\//g,VN=/\..*\.(sw[px])$|~$|\.subl.*\.tmp/,KN=/^\.[/\\]/;FN=Object.freeze(new Set);f6=class f6 extends GN{closed;options;_closers;_ignoredPaths;_throttled;_streams;_symlinkPaths;_watched;_pendingWrites;_pendingUnlinks;_readyCount;_emitReady;_closePromise;_userIgnored;_readyEmitted;_emitRaw;_boundRemove;_nodeFsHandler;constructor(J={}){super();this.closed=!1,this._closers=new Map,this._ignoredPaths=new Set,this._throttled=new Map,this._streams=new Set,this._symlinkPaths=new Map,this._watched=new Map,this._pendingWrites=new Map,this._pendingUnlinks=new Map,this._readyCount=0,this._readyEmitted=!1;let z=J.awaitWriteFinish,Y={stabilityThreshold:2000,pollInterval:100},Z={persistent:!0,ignoreInitial:!1,ignorePermissionErrors:!1,interval:100,binaryInterval:300,followSymlinks:!0,usePolling:!1,atomic:!0,...J,ignored:J.ignored?bf(J.ignored):bf([]),awaitWriteFinish:z===!0?Y:typeof z==="object"?{...Y,...z}:!1};if(oK)Z.usePolling=!0;if(Z.atomic===void 0)Z.atomic=!Z.usePolling;let X=process.env.CHOKIDAR_USEPOLLING;if(X!==void 0){let f=X.toLowerCase();if(f==="false"||f==="0")Z.usePolling=!1;else if(f==="true"||f==="1")Z.usePolling=!0;else Z.usePolling=!!f}let G=process.env.CHOKIDAR_INTERVAL;if(G)Z.interval=Number.parseInt(G,10);let Q=0;this._emitReady=()=>{if(Q++,Q>=this._readyCount)this._emitReady=Nf,this._readyEmitted=!0,process.nextTick(()=>this.emit(x1.READY))},this._emitRaw=(...f)=>this.emit(x1.RAW,...f),this._boundRemove=this._remove.bind(this),this.options=Z,this._nodeFsHandler=new jj(this),Object.freeze(Z)}_addIgnoredPath(J){if(Vj(J)){for(let z of this._ignoredPaths)if(Vj(z)&&z.path===J.path&&z.recursive===J.recursive)return}this._ignoredPaths.add(J)}_removeIgnoredPath(J){if(this._ignoredPaths.delete(J),typeof J==="string"){for(let z of this._ignoredPaths)if(Vj(z)&&z.path===J)this._ignoredPaths.delete(z)}}add(J,z,Y){let{cwd:Z}=this.options;this.closed=!1,this._closePromise=void 0;let X=J6(J);if(Z)X=X.map((G)=>{return MN(G,Z)});if(X.forEach((G)=>{this._removeIgnoredPath(G)}),this._userIgnored=void 0,!this._readyCount)this._readyCount=0;return this._readyCount+=X.length,Promise.all(X.map(async(G)=>{let Q=await this._nodeFsHandler._addToNodeFs(G,!Y,void 0,0,z);if(Q)this._emitReady();return Q})).then((G)=>{if(this.closed)return;G.forEach((Q)=>{if(Q)this.add(G1.dirname(Q),G1.basename(z||Q))})}),this}unwatch(J){if(this.closed)return this;let z=J6(J),{cwd:Y}=this.options;return z.forEach((Z)=>{if(!G1.isAbsolute(Z)&&!this._closers.has(Z)){if(Y)Z=G1.join(Y,Z);Z=G1.resolve(Z)}if(this._closePath(Z),this._addIgnoredPath(Z),this._watched.has(Z))this._addIgnoredPath({path:Z,recursive:!0});this._userIgnored=void 0}),this}close(){if(this._closePromise)return this._closePromise;this.closed=!0,this.removeAllListeners();let J=[];return this._closers.forEach((z)=>z.forEach((Y)=>{let Z=Y();if(Z instanceof Promise)J.push(Z)})),this._streams.forEach((z)=>z.destroy()),this._userIgnored=void 0,this._readyCount=0,this._readyEmitted=!1,this._watched.forEach((z)=>z.dispose()),this._closers.clear(),this._watched.clear(),this._streams.clear(),this._symlinkPaths.clear(),this._throttled.clear(),this._closePromise=J.length?Promise.all(J).then(()=>{return}):Promise.resolve(),this._closePromise}getWatched(){let J={};return this._watched.forEach((z,Y)=>{let X=(this.options.cwd?G1.relative(this.options.cwd,Y):Y)||Z6;J[X]=z.getChildren().sort()}),J}emitWithAll(J,z){if(this.emit(J,...z),J!==x1.ERROR)this.emit(x1.ALL,J,...z)}async _emit(J,z,Y){if(this.closed)return;let Z=this.options;if(Bj)z=G1.normalize(z);if(Z.cwd)z=G1.relative(Z.cwd,z);let X=[z];if(Y!=null)X.push(Y);let G=Z.awaitWriteFinish,Q;if(G&&(Q=this._pendingWrites.get(z)))return Q.lastChange=new Date,this;if(Z.atomic){if(J===x1.UNLINK)return this._pendingUnlinks.set(z,[J,...X]),setTimeout(()=>{this._pendingUnlinks.forEach((f,H)=>{this.emit(...f),this.emit(x1.ALL,...f),this._pendingUnlinks.delete(H)})},typeof Z.atomic==="number"?Z.atomic:100),this;if(J===x1.ADD&&this._pendingUnlinks.has(z))J=x1.CHANGE,this._pendingUnlinks.delete(z)}if(G&&(J===x1.ADD||J===x1.CHANGE)&&this._readyEmitted){let f=(H,B)=>{if(H)J=x1.ERROR,X[0]=H,this.emitWithAll(J,X);else if(B){if(X.length>1)X[1]=B;else X.push(B);this.emitWithAll(J,X)}};return this._awaitWriteFinish(z,G.stabilityThreshold,J,f),this}if(J===x1.CHANGE){if(!this._throttle(x1.CHANGE,z,50))return this}if(Z.alwaysStat&&Y===void 0&&(J===x1.ADD||J===x1.ADD_DIR||J===x1.CHANGE)){let f=Z.cwd?G1.join(Z.cwd,z):z,H;try{H=await fN(f)}catch(B){}if(!H||this.closed)return;X.push(H)}return this.emitWithAll(J,X),this}_handleError(J){let z=J&&J.code;if(J&&z!=="ENOENT"&&z!=="ENOTDIR"&&(!this.options.ignorePermissionErrors||z!=="EPERM"&&z!=="EACCES"))this.emit(x1.ERROR,J);return J||this.closed}_throttle(J,z,Y){if(!this._throttled.has(J))this._throttled.set(J,new Map);let Z=this._throttled.get(J);if(!Z)throw Error("invalid throttle");let X=Z.get(z);if(X)return X.count++,!1;let G,Q=()=>{let H=Z.get(z),B=H?H.count:0;if(Z.delete(z),clearTimeout(G),H)clearTimeout(H.timeoutObject);return B};G=setTimeout(Q,Y);let f={timeoutObject:G,clear:Q,count:0};return Z.set(z,f),f}_incrReadyCount(){return this._readyCount++}_awaitWriteFinish(J,z,Y,Z){let X=this.options.awaitWriteFinish;if(typeof X!=="object")return;let G=X.pollInterval,Q,f=J;if(this.options.cwd&&!G1.isAbsolute(J))f=G1.join(this.options.cwd,J);let H=new Date,B=this._pendingWrites;function V(j){QN(f,(K,L)=>{if(K||!B.has(J)){if(K&&K.code!=="ENOENT")Z(K);return}let A=Number(new Date);if(j&&L.size!==j.size)B.get(J).lastChange=A;let O=B.get(J);if(A-O.lastChange>=z)B.delete(J),Z(void 0,L);else Q=setTimeout(V,G,L)})}if(!B.has(J))B.set(J,{lastChange:H,cancelWait:()=>{return B.delete(J),clearTimeout(Q),Y}}),Q=setTimeout(V,G)}_isIgnored(J,z){if(this.options.atomic&&VN.test(J))return!0;if(!this._userIgnored){let{cwd:Y}=this.options,X=(this.options.ignored||[]).map(Y6(Y)),Q=[...[...this._ignoredPaths].map(Y6(Y)),...X];this._userIgnored=LN(Q,void 0)}return this._userIgnored(J,z)}_isntIgnored(J,z){return!this._isIgnored(J,z)}_getWatchHelpers(J){return new q6(J,this.options.followSymlinks,this)}_getWatchedDir(J){let z=G1.resolve(J);if(!this._watched.has(z))this._watched.set(z,new Q6(z,this._boundRemove));return this._watched.get(z)}_hasReadPermissions(J){if(this.options.ignorePermissionErrors)return!0;return Boolean(Number(J.mode)&256)}_remove(J,z,Y){let Z=G1.join(J,z),X=G1.resolve(Z);if(Y=Y!=null?Y:this._watched.has(Z)||this._watched.has(X),!this._throttle("remove",Z,100))return;if(!Y&&this._watched.size===1)this.add(J,z,!0);this._getWatchedDir(Z).getChildren().forEach((j)=>this._remove(Z,j));let f=this._getWatchedDir(J),H=f.has(z);if(f.remove(z),this._symlinkPaths.has(X))this._symlinkPaths.delete(X);let B=Z;if(this.options.cwd)B=G1.relative(this.options.cwd,Z);if(this.options.awaitWriteFinish&&this._pendingWrites.has(B)){if(this._pendingWrites.get(B).cancelWait()===x1.ADD)return}this._watched.delete(Z),this._watched.delete(X);let V=Y?x1.UNLINK_DIR:x1.UNLINK;if(H&&!this._isIgnored(Z))this._emit(V,Z);this._closePath(Z)}_closePath(J){this._closeFile(J);let z=G1.dirname(J);this._getWatchedDir(z).remove(G1.basename(J))}_closeFile(J){let z=this._closers.get(J);if(!z)return;z.forEach((Y)=>Y()),this._closers.delete(J)}_addPathCloser(J,z){if(!z)return;let Y=this._closers.get(J);if(!Y)Y=[],this._closers.set(J,Y);Y.push(z)}_readdirp(J,z){if(this.closed)return;let Y={type:x1.ALL,alwaysStat:!0,lstat:!0,...z,depth:0},Z=lK(J,Y);return this._streams.add(Z),Z.once(rK,()=>{Z=void 0}),Z.once(Hj,()=>{if(Z)this._streams.delete(Z),Z=void 0}),Z}}});import{mkdirSync as RN,statSync as gN}from"fs";import{basename as j6,dirname as CN,join as NN}from"path";function Sf(J){if(J.debounceMs<=0)return()=>{};let z=CN(J.filePath),Y=new Set([j6(J.filePath),...J.matchBasenames??[]]),Z=null,X=null,G=!1,Q=()=>{try{J.onTrigger()}catch(V){J.onError(V)}},f=()=>{if(Z)clearTimeout(Z);Z=setTimeout(()=>{Z=null,Q()},J.debounceMs),Z.unref?.()},H=(V)=>{if(!Y.has(j6(V)))return;f()},B=(V)=>{try{let j=gN(NN(z,V));return`${j.mtimeMs}:${j.size}`}catch{return null}};try{RN(z,{recursive:!0});let V=new Map;for(let j of Y)V.set(j,B(j));X=H6(z,{depth:0,ignoreInitial:!0}),X.on("add",H),X.on("change",H),X.on("unlink",H),X.on("error",J.onError),X.once("ready",()=>{for(let j of Y)if(B(j)!==V.get(j)){f();break}})}catch(V){J.onError(V)}return()=>{if(G)return;if(G=!0,Z)clearTimeout(Z),Z=null;let V=X;X=null,V?.close().catch(J.onError)}}var Kj=k(()=>{B6()});import{homedir as kN}from"os";import{basename as bN,join as SN}from"path";function Dj(J=process.env.KOBE_HOME_DIR??kN()){return SN(J,".kobe","settings","keybindings.yaml")}function W6(J,z={}){let Y=z.debounceMs??Uj;if(Y<=0)return()=>{};let Z=z.path??Dj(),X=bN(Z),G=X.replace(/\.yaml$/,".yml"),Q=0;return J.publish("keybindings",{rev:Q}),Sf({filePath:Z,matchBasenames:[X,G],debounceMs:Y,onTrigger:()=>{try{Q+=1,J.publish("keybindings",{rev:Q})}catch(H){y1("keybindings-watcher",H)}},onError:(H)=>y1("keybindings-watcher",H)})}var Uj=200;var V6=k(()=>{Kj()});class Lj{clients;idleGraceMs;onIdleStop;schedule;log;cancelIdle=null;stopping=!1;constructor(J){this.clients=J.clients,this.idleGraceMs=J.idleGraceMs,this.onIdleStop=J.onIdleStop,this.schedule=J.schedule??IN,this.log=J.log??vz}guiCount(){let J=0;for(let z of this.clients())if(z.holdsLifetime)J++;return J}hasSubscribers(){for(let J of this.clients())if(J.subscribed)return!0;return!1}isStopping(){return this.stopping}markStopping(){this.stopping=!0,this.clearIdle()}guiAttached(){this.clearIdle()}clientDisconnected(J){if(J)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 IN=(J,z)=>{let Y=setTimeout(J,z);return Y.unref?.(),()=>clearTimeout(Y)};var K6=()=>{};import{spawn as TN}from"child_process";function vN(J,z,Y){return new Promise((Z)=>{let X="",G="",Q=!1,f=(B,V)=>{if(Q)return;Q=!0,Z({status:B,stdout:X,stderr:G,spawnError:V})},H=TN("gh",J.slice(),{cwd:z,stdio:["ignore","pipe","pipe"],signal:Y,killSignal:"SIGKILL"});H.stdout?.on("data",(B)=>{X+=String(B)}),H.stderr?.on("data",(B)=>{G+=String(B)}),H.on("error",()=>f(null,!Y.aborted)),H.on("close",(B)=>f(B,!1))})}function cN(J){if(J.archived)return!1;if(J.kind==="main")return!1;if(!J.branch||!J.worktreePath)return!1;if(a1(J.repo)||a1(J.worktreePath))return!1;return!0}async function dN(J,z){let Y=z.tickMs??oG,Z=z.rand,X={tickMs:Y,settledMs:xN,noPrMs:yN,noRemoteMs:wN,failureBaseMs:uN,failureCapMs:EN,jitterRatio:PN},G=[];for(let Q of J.listTasks()){if(!cN(Q)){z.schedule.delete(Q.id);continue}let f=z.schedule.get(Q.id);if(f&&z.now<f.nextAllowedAt)continue;let H=f?.failures??0;try{let B=await z.run(Q.worktreePath,Q.branch);if(B.kind==="error"){vz("pr-status-poller",`gh pr view failed (${B.error}) for task ${Q.id} [${Q.branch}] \u2014 keeping last PR status, backing off`),z.schedule.set(Q.id,OG({kind:"error",error:B.error},H,z.now,X,Z));continue}if(B.kind==="empty"){z.schedule.set(Q.id,OG({kind:"empty"},H,z.now,X,Z));continue}let V=dV(B.view,z.at),j=J.getTask(Q.id);if(!j){z.schedule.delete(Q.id);continue}if(!uq(j.prStatus,V??void 0))await J.setPRStatus(Q.id,V),G.push(Q.id);let K=V?.lifecycle==="merged"||V?.lifecycle==="closed";z.schedule.set(Q.id,OG({kind:"pr",settled:K},H,z.now,X,Z))}catch(B){y1("pr-status-poller",B),z.schedule.set(Q.id,OG({kind:"error",error:"network"},H,z.now,X,Z))}}return G}function U6(J,z=oG,Y,Z=mN){if(z<=0)return()=>{};let X=new Map,G=!1,f=setInterval(()=>{if(Y&&!Y())return;if(G)return;G=!0,dN(J,{run:Z,now:Date.now(),at:new Date().toISOString(),schedule:X,tickMs:z}).catch((H)=>y1("pr-status-poller",H)).finally(()=>{G=!1})},z);return f.unref?.(),()=>clearInterval(f)}var oG=30000,yN=300000,xN=600000,uN,EN=900000,wN=1800000,PN=0.2,hN=1e4,mN=async(J,z)=>{let Y=new AbortController,Z=!1,X=setTimeout(()=>{Z=!0,Y.abort()},hN);try{let G=await vN(["pr","view",z,"--json",cV],J,Y.signal);if(G.status===0&&!Z)try{let Q=JSON.parse(G.stdout);return typeof Q.number==="number"?{kind:"pr",view:Q}:{kind:"empty"}}catch{return _8({parseError:!0})}return _8({spawnError:G.spawnError,timedOut:Z,exitCode:G.status,stderr:G.stderr})}finally{clearTimeout(X)}};var D6=k(()=>{p8();O1();uN=oG});function $N(J,z){return J.mtimeMs===z.mtimeMs&&J.completionId===z.completionId&&J.completionAt===z.completionAt}async function aN(J,z,Y,Z){let X=await rZ(z,J),G=await Y.latestCompletion(J);return{mtimeMs:X,completionId:G?.id??null,completionAt:G?.timestampMs??0}}function _N(J){let z=new Map;for(let Y of J){if(Y.archived)continue;if(!Y.worktreePath)continue;if(a1(Y.repo)||a1(Y.worktreePath))continue;if(z.has(Y.worktreePath))continue;z.set(Y.worktreePath,Y.vendor??_1)}return z}class L6{orch;bus;options;entries=new Map;stopped=!1;constructor(J,z,Y={}){this.orch=J;this.bus=z;this.options=Y}tick(){if(this.stopped)return;if(this.options.hasSubscribers&&!this.options.hasSubscribers())return;try{let J=_N(this.orch.listTasks()),z=!1;for(let Y of this.entries.keys()){if(J.has(Y))continue;if(this.entries.get(Y)?.value)z=!0;this.entries.delete(Y)}if(z)this.publish();for(let[Y,Z]of J)this.maybeCollect(Y,Z)}catch(J){y1("transcript-activity",J)}}stop(){this.stopped=!0}maybeCollect(J,z){let Y=this.entries.get(J);if(!Y)Y={inFlight:!1,nextAllowedAt:0,vendor:z,detector:VG(z)},this.entries.set(J,Y);else if(Y.vendor!==z)Y.vendor=z,Y.detector=VG(z);let Z=this.options.cadence??{timeoutMs:nN,slowRetryMs:iN,minIntervalMs:lN},X=this.options.run??aN,G=Y;JX(G,Z,(Q)=>X(J,G.vendor,G.detector,Q),(Q)=>{if(this.stopped)return;if(this.entries.get(J)!==G)return;if(G.value&&$N(G.value,Q))return;G.value=Q,this.publish()})}publish(){let J={};for(let[z,Y]of this.entries)if(Y.value)J[z]=Y.value;this.bus.publish("transcript.activity",{activity:J})}}function M6(J,z,Y=Mj,Z){if(Y<=0)return()=>{};let X=new L6(J,z,{hasSubscribers:Z});X.tick();let G=setInterval(()=>X.tick(),Y);return G.unref?.(),()=>{clearInterval(G),X.stop()}}var Mj=1500,nN=4000,iN=60000,lN=1500;var F6=k(()=>{Uq();zX();Dq();O1();rJ()});import{readFileSync as pN}from"fs";import{homedir as rN}from"os";import{basename as oN,join as sN}from"path";function Oj(J=process.env.KOBE_HOME_DIR??rN()){return sN(J,".config","kobe","state.json")}function O6(J){let z={};try{let B=JSON.parse(pN(J,"utf8"));if(B&&typeof B==="object"&&!Array.isArray(B))z=B}catch{}let Y=typeof z.activeTheme==="string"&&z.activeTheme.length>0?z.activeTheme:"claude",Z=z.transparentBackground===!0,X=typeof z.focusAccent==="string"&&eN.includes(z.focusAccent)?z.focusAccent:null,G=z.activeSortMode==="recent"?"recent":"default",Q=z["tasksPane.keysCollapsed"]===!0,f=typeof z["tasksPane.projectFilter"]==="string"&&z["tasksPane.projectFilter"].length>0?z["tasksPane.projectFilter"]:null,H=typeof z.locale==="string"&&z.locale.length>0?z.locale:"en";return{theme:Y,transparentBackground:Z,focusAccent:X,locale:H,sortMode:G,keysCollapsed:Q,projectFilter:f}}function Jk(J,z){return J.theme===z.theme&&J.transparentBackground===z.transparentBackground&&J.focusAccent===z.focusAccent&&J.locale===z.locale&&J.sortMode===z.sortMode&&J.keysCollapsed===z.keysCollapsed&&J.projectFilter===z.projectFilter}function A6(J,z={}){let Y=z.debounceMs??Fj;if(Y<=0)return()=>{};let Z=z.pollMs??tN,X=z.statePath??Oj(),G=oN(X),Q=O6(X);return J.publish("ui-prefs",Q),Sf({filePath:X,matchBasenames:[G],debounceMs:Y,pollMs:Z,onTrigger:()=>{try{let H=O6(X);if(Jk(Q,H))return;Q=H,J.publish("ui-prefs",H)}catch(H){y1("ui-prefs-watcher",H)}},onError:(H)=>y1("ui-prefs-watcher",H)})}var Fj=200,tN=250,eN;var R6=k(()=>{Kj();eN=["primary","success","info"]});function NX(J){return kZ.includes(J)?J:"auto"}var kZ,g6,QY="editor.kind",PY="editor.customCommand",If="auto";var Tf=k(()=>{kZ=["auto","vim","nvim","nano","emacs","custom"],g6=["nvim","vim","emacs","nano"]});function SZ(J){return J==="taskpanel"?"taskpanel":"chattab"}var qY="settings.surface",bZ="chattab";function C6(J){return J>="0"&&J<="7"}function k6(J,z){let Y=[],Z="",X=()=>{if(Z.length>0){for(let Q of zk.encode(Z))Y.push(Q);Z=""}},G=z+1;while(G<J.length){let Q=J[G];if(Q==='"'){G++;break}if(Q==="\\"){let f=J[G+1];if(f===void 0){Z+="\\",G++;continue}switch(f){case"a":X(),Y.push(7),G+=2;break;case"b":X(),Y.push(8),G+=2;break;case"t":X(),Y.push(9),G+=2;break;case"n":X(),Y.push(10),G+=2;break;case"v":X(),Y.push(11),G+=2;break;case"f":X(),Y.push(12),G+=2;break;case"r":X(),Y.push(13),G+=2;break;case'"':Z+='"',G+=2;break;case"\\":Z+="\\",G+=2;break;default:if(C6(f)){let H="",B=G+1;while(B<J.length&&H.length<3&&C6(J[B]))H+=J[B],B++;X(),Y.push(Number.parseInt(H,8)&255),G=B}else Z+=f,G+=2;break}}else Z+=Q,G++}return X(),{value:Yk.decode(new Uint8Array(Y)),end:G}}function IZ(J){if(J.length===0||J[0]!=='"')return J;return k6(J,0).value}function b6(J,z){if(J[0]==='"'){let Z=k6(J,0);if(J.startsWith(z,Z.end))return{orig:Z.value,neu:IZ(J.slice(Z.end+z.length))};return null}let Y=J.indexOf(z);if(Y<0)return null;return{orig:J.slice(0,Y),neu:IZ(J.slice(Y+z.length))}}function Zk(J){let z=J.indexOf("{");if(z>=0){let Z=J.indexOf("}",z),X=J.indexOf(" => ",z);if(Z>z&&X>=0&&X<Z){let G=J.slice(0,z),Q=J.slice(z+1,X),f=J.slice(X+4,Z),H=J.slice(Z+1);return{path:G+f+H,origPath:G+Q+H}}}let Y=b6(J," => ");if(Y)return{path:Y.neu,origPath:Y.orig};return{path:IZ(J)}}function yf(J){let z=[];for(let Y of J.split(`
|
|
66
|
+
`)){let Z=Y.replace(/\r$/,"");if(Z.length<4)continue;if(Z.startsWith("##"))continue;let X=Z[0],G=Z[1];if(Z[2]!==" ")continue;let Q=Z.slice(3);if(X==="R"||X==="C"||G==="R"||G==="C"){let f=b6(Q," -> ");if(f){z.push({x:X,y:G,path:f.neu,origPath:f.orig});continue}}z.push({x:X,y:G,path:IZ(Q)})}return z}function N6(J){if(J==="-")return null;let z=Number.parseInt(J,10);return Number.isNaN(z)?null:z}function S6(J){let z=[];for(let Y of J.split(`
|
|
67
|
+
`)){let Z=Y.replace(/\r$/,"");if(Z.length===0)continue;let X=Z.indexOf("\t");if(X<0)continue;let G=Z.indexOf("\t",X+1);if(G<0)continue;let Q=Z.slice(G+1);if(Q.length===0)continue;let f=Zk(Q);if(f.path.length===0)continue;z.push({path:f.path,...f.origPath!==void 0?{origPath:f.origPath}:{},added:N6(Z.slice(0,X)),deleted:N6(Z.slice(X+1,G))})}return z}var zk,Yk;var xf=k(()=>{zk=new TextEncoder,Yk=new TextDecoder});function cJ(J=process.env){return{...J,...Aj}}var Aj;var hY=k(()=>{Aj={GIT_OPTIONAL_LOCKS:"0"}});async function kX(J,z,Y={}){if(!J)return{stdout:"",stderr:"worktreePath is required",status:-1};let Z=(Y.execForPath??ZY)(J),X=Y.timeoutMs&&Y.timeoutMs>0?new AbortController:null,G=!1,Q=X?setTimeout(()=>{G=!0,X.abort()},Y.timeoutMs):null,f=X&&Y.signal?AbortSignal.any([X.signal,Y.signal]):X?.signal??Y.signal,H;try{H=await Z.run(["git",...z],{cwd:J,env:Aj,signal:f})}catch(B){if(Q)clearTimeout(Q);return{stdout:"",stderr:B instanceof Error?B.message:String(B),status:-1}}if(Q)clearTimeout(Q);if(G&&H.exitCode===-1&&!H.stderr)return{stdout:H.stdout,stderr:`git ${z.join(" ")} timed out after ${Y.timeoutMs}ms`,status:-1};return{stdout:H.stdout,stderr:H.stderr,status:H.exitCode}}function Xk(J,z){if(!J||!z||z.startsWith("/"))return null;let Y=z.split("/");if(Y.some((Z)=>Z===".."))return null;return`${J.replace(/\/+$/,"")}/${Y.filter(Boolean).join("/")}`}async function I6(J,z,Y={}){let Z=Xk(J,z);if(!Z)return null;let X=(Y.execForPath??ZY)(J);try{return await X.readFile(Z)}catch{return null}}var uf=k(()=>{Uz();hY()});import{statSync as Gk}from"fs";async function sG(J,z){let Y=await kX(J,z,{timeoutMs:Qk}),Z=Y.status??-1;return{ok:Z===0,stdout:Y.stdout,stderr:Y.stderr,code:Z}}function fk(J){switch(J){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 T6(J){if(J==="/dev/null")return null;let z=J;if(z.startsWith('"'))z=IZ(z);else{let Y=z.indexOf("\t");if(Y>=0)z=z.slice(0,Y)}if(z.startsWith("a/")||z.startsWith("b/"))z=z.slice(2);return z.length>0?z:null}function y6(J){let z=new Map;if(!J)return z;let Y=J.split(/(?=^diff --git )/m);for(let Z of Y){if(!Z.startsWith("diff --git"))continue;let X=null,G=Z.match(/^\+\+\+ (.*)$/m);if(G)X=T6(G[1]);if(X===null){let Q=Z.match(/^--- (.*)$/m);if(Q)X=T6(Q[1])}if(X===null){let Q=Z.match(/^diff --git a\/.* b\/(.*)$/m);if(Q)X=IZ(Q[1])}if(X===null)continue;z.set(X,Z.endsWith(`
|
|
68
|
+
`)?Z:`${Z}
|
|
69
|
+
`)}return z}async function Hk(J,z,Y){let Z=Array(J.length),X=Math.max(1,Math.min(z,J.length)),G=0;async function Q(){while(G<J.length){let f=G++;Z[f]=await Y(J[f],f)}}return await Promise.all(Array.from({length:X},()=>Q())),Z}async function Bk(J,z){let Y=await sG(J,["diff","--no-color","--no-index","--","/dev/null",z]);if(Y.stdout.trim())return Y.stdout.endsWith(`
|
|
69
70
|
`)?Y.stdout:`${Y.stdout}
|
|
70
|
-
`;return""}async function
|
|
71
|
-
`),O={files:K,raw:A};return Response.json(O)}var tN=15000,eN=8;var A6=k(()=>{Vz();kf()});import{isAbsolute as Zk}from"path";function g6(J){return typeof J==="string"&&J.length>0&&/^[A-Za-z0-9_-]+$/.test(J)}function Qk(J){return typeof J==="string"&&J.length>0&&/^[A-Za-z0-9._-]+$/.test(J)&&!J.includes("..")}async function qk(J){let z=J.searchParams.get("worktreePath"),Y=J.searchParams.get("vendor")??"claude";if(!z||!Zk(z))return Response.json({error:"worktreePath must be an absolute path"},{status:400});if(!g6(Y))return Response.json({error:"invalid vendor"},{status:400});try{let G=t1(Y).history,[Z,X]=await Promise.all([G.listSessionIdsForWorktree(z),G.latestTranscriptMtimeForWorktree(z)]);return Response.json({sessions:Z,latestMtime:X})}catch(G){return Response.json({error:G instanceof Error?G.message:String(G)},{status:500})}}async function fk(J){let z=J.searchParams.get("vendor")??"claude",Y=J.searchParams.get("sessionId");if(!g6(z))return Response.json({error:"invalid vendor"},{status:400});if(!Qk(Y))return Response.json({error:"invalid sessionId"},{status:400});try{let G=await t1(z).history.readHistory(Y);return Response.json({messages:G})}catch(G){return Response.json({error:G instanceof Error?G.message:String(G)},{status:500})}}async function C6(J,z){if(z.pathname!==R6&&z.pathname!==Xk)return null;if(J.method!=="GET")return Response.json({error:"method not allowed"},{status:405});return z.pathname===R6?qk(z):fk(z)}var R6="/api/history/sessions",Xk="/api/history/messages";var N6=k(()=>{kY()});import{mkdir as Hk,readFile as Bk,writeFile as jk}from"fs/promises";import{join as k6}from"path";function b6(){return k6(qJ(),"notes")}function S6(J){return typeof J==="string"&&J.length>0&&/^[A-Za-z0-9_-]+$/.test(J)}function I6(J){return k6(b6(),`${J}.md`)}async function Vk(J){let z=J.searchParams.get("taskId");if(!S6(z))return Response.json({error:"invalid taskId"},{status:400});try{let Y="";try{Y=await Bk(I6(z),"utf8")}catch(G){if(G.code!=="ENOENT")throw G}return Response.json({markdown:Y})}catch(Y){return Response.json({error:Y instanceof Error?Y.message:String(Y)},{status:500})}}async function Kk(J){let z;try{z=await J.json()}catch{return Response.json({error:"invalid JSON body"},{status:400})}if(!S6(z.taskId))return Response.json({error:"invalid taskId"},{status:400});if(typeof z.markdown!=="string")return Response.json({error:"markdown must be a string"},{status:400});try{return await Hk(b6(),{recursive:!0}),await jk(I6(z.taskId),z.markdown,"utf8"),Response.json({ok:!0})}catch(Y){return Response.json({error:Y instanceof Error?Y.message:String(Y)},{status:500})}}async function T6(J,z){if(z.pathname!==Wk)return null;if(J.method==="GET")return Vk(z);if(J.method==="PUT")return Kk(J);return Response.json({error:"method not allowed"},{status:405})}var Wk="/api/notes";var y6=k(()=>{p1()});function Uj(J,z,Y=[]){if(z===void 0)return null;if(typeof z!=="string")return Uj(J,z.dark,Y);if(z==="transparent"||z==="none")return null;if(z.startsWith("#"))return z;if(Y.includes(z))return null;let G=J.defs?.[z]??J.theme[z];return Uj(J,G,[...Y,z])}function Kj(J){return Math.max(0,Math.min(255,Math.round(J)))}function mX(J,z,Y){let G=Number.parseInt(J.slice(1),16),Z=Number.parseInt(z.slice(1),16),X=(f,H)=>f>>H&255;return`#${(Kj(X(G,16)+(X(Z,16)-X(G,16))*Y)<<16|Kj(X(G,8)+(X(Z,8)-X(G,8))*Y)<<8|Kj(X(G,0)+(X(Z,0)-X(G,0))*Y)).toString(16).padStart(6,"0")}`}function Dk(J){let z=(f)=>Uj(J,J.theme[f]),Y=z("background"),G=z("text");if(!Y||!G)return null;let Z=z("textMuted")??mX(G,Y,0.35),X=z("primary")??G,Q=z("border")??mX(G,Y,0.8);return{bg:Y,surface:z("backgroundPanel")??Y,inset:z("backgroundElement")??Y,menu:z("backgroundMenu")??z("backgroundElement")??Y,line:Q,"line-subtle":z("borderSubtle")??Q,"line-active":z("borderActive")??mX(Q,G,0.3),fg:G,muted:Z,subtle:mX(Z,Y,0.35),primary:X,"primary-hover":mX(X,G,0.35),"kobe-orange":X,"kobe-green":z("success")??G,"kobe-blue":z("info")??G,"kobe-red":z("error")??G,"kobe-yellow":z("warning")??G,"kobe-violet":z("secondary")??X}}function x6(J,z){if(z.pathname!==Mk)return null;if(J.method!=="GET")return Response.json({error:"method not allowed"},{status:405});return Response.json({themes:Lk})}var Uk,Lk,Mk="/api/themes";var u6=k(()=>{uq();Eq();wq();Pq();hq();vq();mq();Uk={claude:HZ,conductor:BZ,dracula:jZ,nord:WZ,opencode:VZ,"osaka-jade":KZ,tokyonight:UZ};Lk=Object.fromEntries(Object.entries(Uk).map(([J,z])=>[J,Dk(z)]).filter((J)=>J[1]!==null))});import{createHash as Fk,randomUUID as Ok}from"crypto";import{mkdir as Ak}from"fs/promises";import{join as Dj,resolve as Rk}from"path";function Nk(J){return Fk("sha1").update(J).digest("hex").slice(0,16)}async function Sk(J){let z=Number.parseInt(J.headers.get("content-length")??"",10);if(Number.isFinite(z)&&z>E6)return Response.json({error:"asset too large"},{status:413});let Y;try{Y=await J.formData()}catch{return Response.json({error:"invalid form data"},{status:400})}let G=Y.get("repoRoot");if(typeof G!=="string"||G.length===0)return Response.json({error:"missing repoRoot"},{status:400});let Z=Y.get("file");if(!(Z instanceof File))return Response.json({error:"file must be a File"},{status:400});if(Z.size>E6)return Response.json({error:"asset too large"},{status:413});let X=gk[Z.type];if(!X)return Response.json({error:`unsupported content-type: ${Z.type||"unknown"}`},{status:415});try{let Q=Nk(G),f=Dj(wH(),Q);await Ak(f,{recursive:!0});let B=`${Ok()}.${X}`;return await Bun.write(Dj(f,B),Z),Response.json({url:`${bf}/${Q}/${B}`})}catch(Q){return Response.json({error:Q instanceof Error?Q.message:String(Q)},{status:500})}}async function Ik(J){let z=J.slice(bf.length+1),Y=z.indexOf("/");if(Y<0)return Response.json({error:"not found"},{status:404});let G=z.slice(0,Y),Z=z.slice(Y+1);if(!kk.test(G)||!bk.test(Z))return Response.json({error:"invalid asset path"},{status:400});let X=wH(),Q=Rk(X,G,Z);if(Q!==Dj(X,G,Z)||!Q.startsWith(`${X}/`))return Response.json({error:"invalid asset path"},{status:400});let f=Z.slice(Z.lastIndexOf(".")+1).toLowerCase(),H=Ck[f];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 w6(J,z){if(z.pathname===bf){if(J.method==="POST")return Sk(J);return Response.json({error:"method not allowed"},{status:405})}if(z.pathname.startsWith(`${bf}/`)){if(J.method==="GET")return Ik(z.pathname);return Response.json({error:"method not allowed"},{status:405})}return null}var bf="/api/issue-assets",E6=10485760,gk,Ck,kk,bk;var P6=k(()=>{p1();gk={"image/png":"png","image/jpeg":"jpg","image/gif":"gif","image/webp":"webp"},Ck={png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",webp:"image/webp"};kk=/^[a-f0-9]{16}$/,bk=/^[A-Za-z0-9_-]+\.[a-z0-9]+$/});function h6(J,z=500){return Response.json({error:J instanceof Error?J.message:String(J)},{status:z})}function v6(J){let z=J instanceof Error?J.message:String(J);if(/^no issue #\d+$/.test(z))return 404;if(z==="repoRoot is required"||z==="repoRoot does not exist"||z==="repoRoot is not a git repository"||z==="missing op"||z==="create requires a non-empty title"||z==="body must be a string"||z==="setStatus requires a numeric id"||z.startsWith("invalid status:")||z==="update requires a numeric id"||z==="title must be a non-empty string"||z==="link requires a numeric id"||z==="link requires a non-empty taskId"||z==="unlink requires a numeric id"||z==="delete requires a numeric id"||z.startsWith("unknown op type:"))return 400;return 500}async function Tk(J,z){let Y=z.searchParams.get("repoRoot");if(!Y)return Response.json({error:"missing repoRoot"},{status:400});try{return Response.json(await J.request("issue.list",{repoRoot:Y}))}catch(G){return h6(G,v6(G))}}async function yk(J,z){let Y;try{Y=await z.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 G=Y;if(typeof G.repoRoot!=="string"||G.repoRoot.length===0)return Response.json({error:"missing repoRoot"},{status:400});try{return Response.json(await J.request("issue.mutate",{repoRoot:G.repoRoot,op:G.op}))}catch(Z){return h6(Z,v6(Z))}}async function m6(J,z,Y){if(z.pathname!=="/api/issues")return null;if(J.method==="GET")return Tk(Y,z);if(J.method==="POST")return yk(Y,J);return Response.json({error:"method not allowed"},{status:405})}function c6(J){return xk.has(String(J??"").trim().toLowerCase())}function d6(J){try{if(!J)return null;let z=new URL(J);if(z.protocol!=="http:"&&z.protocol!=="https:")return null;return z.hostname}catch{return null}}function uk(J){let z=d6(J);return z!==null&&c6(z)}function n6(J,z={}){if(!J)return!0;if(uk(J))return!0;let Y=z.allowedHost?.trim();if(!Y)return!1;let G=d6(J);return G!==null&&G===Y}function i6(J){let z=String(J??"").trim();return z&&!c6(z)?z:void 0}var xk;var l6=k(()=>{xk=new Set(["localhost","127.0.0.1","::1","[::1]"])});var Ek,$6;var a6=k(()=>{Ek=["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"],$6=new Set(Ek)});var If={};f1(If,{resolveRepoInit:()=>r6,resolveEngineLaunchInit:()=>CZ});import{existsSync as p6,readFileSync as wk}from"fs";import{join as Sf}from"path";function hk(J){return p6(Sf(J,_6))?`sh ${_6}`:void 0}function vk(J){let z=Sf(J,Pk);if(!p6(z))return;try{let Y=wk(z,"utf8");return Y.trim().length>0?Y:void 0}catch{return}}function r6(J,z){let Y=J?_H(J):{},G=hk(z)??Y.initScript,Z=vk(z)??Y.initPrompt;return{initScript:G&&G.trim().length>0?G:void 0,initPrompt:Z&&Z.trim().length>0?Z:void 0}}function mk(J,z){if(J.kind==="none")return;if(J.kind==="explicit")return{source:"explicit",text:J.prompt};let Y=z.initPrompt?.trim();return Y?{source:"repo-init",text:Y}:void 0}function CZ(J,z,Y={kind:"repo-init"}){let G=r6(J,z);return{initScript:G.initScript,firstMessage:mk(Y,G)}}var _6,Pk;var NZ=k(()=>{F1();_6=Sf(".kobe","init.sh"),Pk=Sf(".kobe","init-prompt.md")});async function ck(J,z){let{task:Y}=await J.request("task.get",{taskId:z});return Y}async function Lj(J,z){let Y=await ck(J,z);if(Y.worktreePath)return{task:Y,worktreePath:Y.worktreePath};let{worktreePath:G}=await J.request("task.ensureWorktree",{taskId:z});if(!G)throw Error(`task ${z} has no worktree`);return{task:Y,worktreePath:G}}async function o6(J,z){let{task:Y,worktreePath:G}=await Lj(J,z),Z=C1(z);if(!await V1(Z)){let X=CZ(Y.repo??"",G,{kind:"repo-init"});if(!await TX({name:Z,cwd:G,command:oJ(Y.vendor,Y.modelEffort),taskId:z,vendor:Y.vendor,launchInit:X}))throw Error(`failed to start tmux session for ${z}`)}return{session:Z,worktreePath:G}}function dk(J){return lQ(J,{bareSafe:!0})}async function s6(J,z){let{task:Y,worktreePath:G}=await Lj(J,z),Z=Y.kind==="main"?void 0:z,X=Y.kind==="main"?z:void 0,Q=[...Nq(Cq(oJ(Y.vendor,Y.modelEffort),Y.vendor,Z),Y.vendor,X)],f=CZ(Y.repo??"",G,{kind:"none"}),H=dk(Q),B=f.initScript?.trim()?`${f.initScript}
|
|
72
|
-
${H}`:H,V=process.env.SHELL?.trim()||"/bin/zsh";return{cwd:
|
|
71
|
+
`;return""}async function x6(J,z){if(z.pathname!=="/api/diff")return null;if(J.method!=="GET")return Response.json({error:"method not allowed"},{status:405});let Y=z.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(!ZX(Z))return Response.json({error:"worktreePath does not exist"},{status:400});if(!ZY(Z).isRemote)try{if(!Gk(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 G=await sG(Z,["rev-parse","--is-inside-work-tree"]);if(!G.ok||G.stdout.trim()!=="true")return Response.json({error:`not a git work tree: ${G.stderr.trim()||Z}`},{status:500});let[Q,f,H]=await Promise.all([sG(Z,["status","--porcelain=v1","-z","--untracked-files=all"]),sG(Z,["diff","--no-color"]),sG(Z,["diff","--no-color","--staged"])]);if(!Q.ok)return Response.json({error:`git status failed: ${Q.stderr.trim()}`},{status:500});let B=y6(f.stdout),V=y6(H.stdout),j=Q.stdout.split("\x00"),K=[],L=[];for(let R=0;R<j.length;R++){let x=j[R];if(!x)continue;let a=x[0]??" ",S=x[1]??" ",C=x.slice(3);if(!C)continue;if(a==="R"||a==="C"||S==="R"||S==="C")R++;let M=a==="?"&&S==="?",I=a!==" "&&a!=="?"?a:S,$=a!==" "&&a!=="?",i="";if(M)L.push({fileIndex:K.length,path:C});else if(i=V.get(C)??B.get(C)??"",V.has(C)&&B.has(C))i=`${V.get(C)}${B.get(C)}`;K.push({path:C,status:M?"untracked":fk(I),staged:$,patch:i})}if(L.length>0){let R=await Hk(L,qk,(x)=>Bk(Z,x.path));for(let x=0;x<L.length;x++)K[L[x].fileIndex].patch=R[x]}K.sort((R,x)=>R.path.localeCompare(x.path));let A=[H.stdout,f.stdout].filter(Boolean).join(`
|
|
72
|
+
`),O={files:K,raw:A};return Response.json(O)}var Qk=15000,qk=8;var u6=k(()=>{Uz();xf();uf()});import{isAbsolute as jk}from"path";function w6(J){return typeof J==="string"&&J.length>0&&/^[A-Za-z0-9_-]+$/.test(J)}function Vk(J){return typeof J==="string"&&J.length>0&&/^[A-Za-z0-9._-]+$/.test(J)&&!J.includes("..")}async function Kk(J){let z=J.searchParams.get("worktreePath"),Y=J.searchParams.get("vendor")??"claude";if(!z||!jk(z))return Response.json({error:"worktreePath must be an absolute path"},{status:400});if(!w6(Y))return Response.json({error:"invalid vendor"},{status:400});try{let Z=JJ(Y).history,[X,G]=await Promise.all([Z.listSessionIdsForWorktree(z),Z.latestTranscriptMtimeForWorktree(z)]);return Response.json({sessions:X,latestMtime:G})}catch(Z){return Response.json({error:Z instanceof Error?Z.message:String(Z)},{status:500})}}async function Uk(J){let z=J.searchParams.get("vendor")??"claude",Y=J.searchParams.get("sessionId");if(!w6(z))return Response.json({error:"invalid vendor"},{status:400});if(!Vk(Y))return Response.json({error:"invalid sessionId"},{status:400});try{let Z=await JJ(z).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 P6(J,z){if(z.pathname!==E6&&z.pathname!==Wk)return null;if(J.method!=="GET")return Response.json({error:"method not allowed"},{status:405});return z.pathname===E6?Kk(z):Uk(z)}var E6="/api/history/sessions",Wk="/api/history/messages";var h6=k(()=>{kY()});import{mkdir as Dk,readFile as Lk,writeFile as Mk}from"fs/promises";import{join as v6}from"path";function m6(){return v6(fJ(),"notes")}function c6(J){return typeof J==="string"&&J.length>0&&/^[A-Za-z0-9_-]+$/.test(J)}function d6(J){return v6(m6(),`${J}.md`)}async function Ok(J){let z=J.searchParams.get("taskId");if(!c6(z))return Response.json({error:"invalid taskId"},{status:400});try{let Y="";try{Y=await Lk(d6(z),"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 Ak(J){let z;try{z=await J.json()}catch{return Response.json({error:"invalid JSON body"},{status:400})}if(!c6(z.taskId))return Response.json({error:"invalid taskId"},{status:400});if(typeof z.markdown!=="string")return Response.json({error:"markdown must be a string"},{status:400});try{return await Dk(m6(),{recursive:!0}),await Mk(d6(z.taskId),z.markdown,"utf8"),Response.json({ok:!0})}catch(Y){return Response.json({error:Y instanceof Error?Y.message:String(Y)},{status:500})}}async function n6(J,z){if(z.pathname!==Fk)return null;if(J.method==="GET")return Ok(z);if(J.method==="PUT")return Ak(J);return Response.json({error:"method not allowed"},{status:405})}var Fk="/api/notes";var i6=k(()=>{o1()});function gj(J,z,Y=[]){if(z===void 0)return null;if(typeof z!=="string")return gj(J,z.dark,Y);if(z==="transparent"||z==="none")return null;if(z.startsWith("#"))return z;if(Y.includes(z))return null;let Z=J.defs?.[z]??J.theme[z];return gj(J,Z,[...Y,z])}function Rj(J){return Math.max(0,Math.min(255,Math.round(J)))}function tG(J,z,Y){let Z=Number.parseInt(J.slice(1),16),X=Number.parseInt(z.slice(1),16),G=(f,H)=>f>>H&255;return`#${(Rj(G(Z,16)+(G(X,16)-G(Z,16))*Y)<<16|Rj(G(Z,8)+(G(X,8)-G(Z,8))*Y)<<8|Rj(G(Z,0)+(G(X,0)-G(Z,0))*Y)).toString(16).padStart(6,"0")}`}function gk(J){let z=(f)=>gj(J,J.theme[f]),Y=z("background"),Z=z("text");if(!Y||!Z)return null;let X=z("textMuted")??tG(Z,Y,0.35),G=z("primary")??Z,Q=z("border")??tG(Z,Y,0.8);return{bg:Y,surface:z("backgroundPanel")??Y,inset:z("backgroundElement")??Y,menu:z("backgroundMenu")??z("backgroundElement")??Y,line:Q,"line-subtle":z("borderSubtle")??Q,"line-active":z("borderActive")??tG(Q,Z,0.3),fg:Z,muted:X,subtle:tG(X,Y,0.35),primary:G,"primary-hover":tG(G,Z,0.35),"kobe-orange":G,"kobe-green":z("success")??Z,"kobe-blue":z("info")??Z,"kobe-red":z("error")??Z,"kobe-yellow":z("warning")??Z,"kobe-violet":z("secondary")??G}}function l6(J,z){if(z.pathname!==Nk)return null;if(J.method!=="GET")return Response.json({error:"method not allowed"},{status:405});return Response.json({themes:Ck})}var Rk,Ck,Nk="/api/themes";var $6=k(()=>{aq();_q();pq();rq();oq();sq();tq();Rk={claude:jX,conductor:WX,dracula:VX,nord:KX,opencode:UX,"osaka-jade":DX,tokyonight:LX};Ck=Object.fromEntries(Object.entries(Rk).map(([J,z])=>[J,gk(z)]).filter((J)=>J[1]!==null))});import{createHash as kk,randomUUID as bk}from"crypto";import{mkdir as Sk}from"fs/promises";import{join as Cj,resolve as Ik}from"path";function xk(J){return kk("sha1").update(J).digest("hex").slice(0,16)}async function wk(J){let z=Number.parseInt(J.headers.get("content-length")??"",10);if(Number.isFinite(z)&&z>a6)return Response.json({error:"asset too large"},{status:413});let Y;try{Y=await J.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 X=Y.get("file");if(!(X instanceof File))return Response.json({error:"file must be a File"},{status:400});if(X.size>a6)return Response.json({error:"asset too large"},{status:413});let G=Tk[X.type];if(!G)return Response.json({error:`unsupported content-type: ${X.type||"unknown"}`},{status:415});try{let Q=xk(Z),f=Cj(cH(),Q);await Sk(f,{recursive:!0});let B=`${bk()}.${G}`;return await Bun.write(Cj(f,B),X),Response.json({url:`${Ef}/${Q}/${B}`})}catch(Q){return Response.json({error:Q instanceof Error?Q.message:String(Q)},{status:500})}}async function Pk(J){let z=J.slice(Ef.length+1),Y=z.indexOf("/");if(Y<0)return Response.json({error:"not found"},{status:404});let Z=z.slice(0,Y),X=z.slice(Y+1);if(!uk.test(Z)||!Ek.test(X))return Response.json({error:"invalid asset path"},{status:400});let G=cH(),Q=Ik(G,Z,X);if(Q!==Cj(G,Z,X)||!Q.startsWith(`${G}/`))return Response.json({error:"invalid asset path"},{status:400});let f=X.slice(X.lastIndexOf(".")+1).toLowerCase(),H=yk[f];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 _6(J,z){if(z.pathname===Ef){if(J.method==="POST")return wk(J);return Response.json({error:"method not allowed"},{status:405})}if(z.pathname.startsWith(`${Ef}/`)){if(J.method==="GET")return Pk(z.pathname);return Response.json({error:"method not allowed"},{status:405})}return null}var Ef="/api/issue-assets",a6=10485760,Tk,yk,uk,Ek;var p6=k(()=>{o1();Tk={"image/png":"png","image/jpeg":"jpg","image/gif":"gif","image/webp":"webp"},yk={png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",webp:"image/webp"};uk=/^[a-f0-9]{16}$/,Ek=/^[A-Za-z0-9_-]+\.[a-z0-9]+$/});function r6(J,z=500){return Response.json({error:J instanceof Error?J.message:String(J)},{status:z})}function o6(J){let z=J instanceof Error?J.message:String(J);if(/^no issue #\d+$/.test(z))return 404;if(z==="repoRoot is required"||z==="repoRoot does not exist"||z==="repoRoot is not a git repository"||z==="missing op"||z==="create requires a non-empty title"||z==="body must be a string"||z==="setStatus requires a numeric id"||z.startsWith("invalid status:")||z==="update requires a numeric id"||z==="title must be a non-empty string"||z==="link requires a numeric id"||z==="link requires a non-empty taskId"||z==="unlink requires a numeric id"||z==="delete requires a numeric id"||z.startsWith("unknown op type:"))return 400;return 500}async function hk(J,z){let Y=z.searchParams.get("repoRoot");if(!Y)return Response.json({error:"missing repoRoot"},{status:400});try{return Response.json(await J.request("issue.list",{repoRoot:Y}))}catch(Z){return r6(Z,o6(Z))}}async function vk(J,z){let Y;try{Y=await z.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 J.request("issue.mutate",{repoRoot:Z.repoRoot,op:Z.op}))}catch(X){return r6(X,o6(X))}}async function s6(J,z,Y){if(z.pathname!=="/api/issues")return null;if(J.method==="GET")return hk(Y,z);if(J.method==="POST")return vk(Y,J);return Response.json({error:"method not allowed"},{status:405})}function t6(J){return mk.has(String(J??"").trim().toLowerCase())}function e6(J){try{if(!J)return null;let z=new URL(J);if(z.protocol!=="http:"&&z.protocol!=="https:")return null;return z.hostname}catch{return null}}function ck(J){let z=e6(J);return z!==null&&t6(z)}function JU(J,z={}){if(!J)return!0;if(ck(J))return!0;let Y=z.allowedHost?.trim();if(!Y)return!1;let Z=e6(J);return Z!==null&&Z===Y}function zU(J){let z=String(J??"").trim();return z&&!t6(z)?z:void 0}var mk;var YU=k(()=>{mk=new Set(["localhost","127.0.0.1","::1","[::1]"])});var dk,ZU;var XU=k(()=>{dk=["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"],ZU=new Set(dk)});var Pf={};f1(Pf,{resolveRepoInit:()=>qU,resolveEngineLaunchInit:()=>bX});import{existsSync as QU,readFileSync as nk}from"fs";import{join as wf}from"path";function lk(J){return QU(wf(J,GU))?`sh ${GU}`:void 0}function $k(J){let z=wf(J,ik);if(!QU(z))return;try{let Y=nk(z,"utf8");return Y.trim().length>0?Y:void 0}catch{return}}function qU(J,z){let Y=J?tH(J):{},Z=lk(z)??Y.initScript,X=$k(z)??Y.initPrompt;return{initScript:Z&&Z.trim().length>0?Z:void 0,initPrompt:X&&X.trim().length>0?X:void 0}}function ak(J,z){if(J.kind==="none")return;if(J.kind==="explicit")return{source:"explicit",text:J.prompt};let Y=z.initPrompt?.trim();return Y?{source:"repo-init",text:Y}:void 0}function bX(J,z,Y={kind:"repo-init"}){let Z=qU(J,z);return{initScript:Z.initScript,firstMessage:ak(Y,Z)}}var GU,ik;var SX=k(()=>{O1();GU=wf(".kobe","init.sh"),ik=wf(".kobe","init-prompt.md")});async function _k(J,z){let{task:Y}=await J.request("task.get",{taskId:z});return Y}async function Nj(J,z){let Y=await _k(J,z);if(Y.worktreePath)return{task:Y,worktreePath:Y.worktreePath};let{worktreePath:Z}=await J.request("task.ensureWorktree",{taskId:z});if(!Z)throw Error(`task ${z} has no worktree`);return{task:Y,worktreePath:Z}}async function fU(J,z){let{task:Y,worktreePath:Z}=await Nj(J,z),X=N1(z);if(!await V1(X)){let G=bX(Y.repo??"",Z,{kind:"repo-init"});if(!await iG({name:X,cwd:Z,command:oJ(Y.vendor,Y.modelEffort),taskId:z,vendor:Y.vendor,launchInit:G}))throw Error(`failed to start tmux session for ${z}`)}return{session:X,worktreePath:Z}}function pk(J){return Zq(J,{bareSafe:!0})}async function HU(J,z){let{task:Y,worktreePath:Z}=await Nj(J,z),X=Y.kind==="main"?void 0:z,G=Y.kind==="main"?z:void 0,Q=[...vq(hq(oJ(Y.vendor,Y.modelEffort),Y.vendor,X),Y.vendor,G)],f=bX(Y.repo??"",Z,{kind:"none"}),H=pk(Q),B=f.initScript?.trim()?`${f.initScript}
|
|
73
|
+
${H}`:H,V=process.env.SHELL?.trim()||"/bin/zsh";return{cwd:Z,command:[V,"-ilc",B]}}async function BU(J,z){let{worktreePath:Y}=await Nj(J,z),Z=process.env.SHELL?.trim()||"/bin/zsh";return{cwd:Y,command:[Z,"-il"]}}async function jU(J){let z=N1(J);await hz(z).catch(()=>{}),await eJ(z).catch(()=>{})}var WU=k(()=>{sJ();V8();SX();h1();YJ()});import{existsSync as rk}from"fs";import{join as VU,normalize as DU}from"path";function ok(J){let z=null,Y=null,Z=new TextEncoder,X=new ReadableStream({start(G){z=J((f,H)=>{try{G.enqueue(Z.encode(`event: ${f}
|
|
73
74
|
data: ${JSON.stringify(H)}
|
|
74
75
|
|
|
75
|
-
`))}catch{}}),Y=setInterval(()=>{try{
|
|
76
|
-
|
|
77
|
-
`))}catch{}},15000)},cancel(){if(Y)clearInterval(Y);z?.()}});return new Response(
|
|
78
|
-
`).map((
|
|
79
|
-
|
|
80
|
-
`)){let
|
|
81
|
-
|
|
82
|
-
`);while(C!==-1){let o=h.buffer.slice(0,C);if(h.buffer=h.buffer.slice(C+1),o.trim().length>0)try{let E=JSON.parse(o);if(E.type!=="request")throw Error("daemon only accepts request frames from clients");V0(E,h)}catch(E){dX(h,{type:"response",id:"parse-error",error:{message:E instanceof Error?E.message:String(E)}})}C=h.buffer.indexOf(`
|
|
83
|
-
`)
|
|
84
|
-
`,Q=await mb(this.tmpPath,"w",420);try{await Q.writeFile(X,"utf8"),await Q.sync()}finally{await Q.close()}await cb(this.tmpPath,this.path);for(let H of J)this.dirtyIds.delete(H);for(let H of z)this.removedIds.delete(H);let f=new Set(this.cache.tasks.map((H)=>H.id));for(let H of G)if(!f.has(H.id))this.cache.tasks.push(H)}finally{await wU(this.lockPath)}}async readDiskTasks(){let J;try{J=await nU(this.path,"utf8")}catch(Y){if(Y.code==="ENOENT")return[];throw Y}let z;try{z=JSON.parse(J)}catch{return[]}return $U(z,this.path).tasks}mergeWithDisk(J,z,Y){let G=new Map(J.map((Q)=>[Q.id,Q])),Z=[],X=new Set;for(let Q of this.cache.tasks){if(z.has(Q.id))Z.push(Q);else{let f=G.get(Q.id);if(f===void 0)continue;Z.push(f)}X.add(Q.id)}for(let Q of J){if(X.has(Q.id)||Y.has(Q.id))continue;Z.push(Q),X.add(Q.id)}return Z}get(J){return this.assertLoaded(),this.cache.tasks.find((z)=>z.id===J)}list(){return this.assertLoaded(),this.cache.tasks.slice()}async create(J){this.assertLoaded();let z=new Date().toISOString(),Y={archived:!1,vendor:J.vendor??$1,...J,id:jX(cU()),createdAt:z,updatedAt:z};return this.cache.tasks.push(Y),this.dirtyIds.add(Y.id),await this.save(),this.notifyListeners(),Y}async update(J,z){this.assertLoaded();let Y=this.cache.tasks.findIndex((H)=>H.id===J);if(Y<0)throw Error(`task not found: ${J}`);let G=this.cache.tasks[Y];if(!G)throw Error(`task not found: ${J}`);let{id:Z,createdAt:X,...Q}=z,f={...G,...Q,id:G.id,createdAt:G.createdAt,updatedAt:new Date().toISOString()};return this.cache.tasks[Y]=f,this.dirtyIds.add(String(J)),await this.save(),this.notifyListeners(),f}async move(J,z,Y){this.assertLoaded();let G=this.cache.tasks.find((L)=>L.id===J);if(!G)throw Error(`task not found: ${J}`);let Z=Y?.length?Y:this.cache.tasks.map((L)=>L.id),X=Z.indexOf(String(J));if(X<0)throw Error(`task not movable in current group: ${J}`);let Q=Z[X+z];if(!Q)return G;let f=this.cache.tasks.findIndex((L)=>L.id===J),H=this.cache.tasks.findIndex((L)=>L.id===Q);if(f<0||H<0||f===H)return G;let[B]=this.cache.tasks.splice(f,1);if(!B)return G;let V=f<H?H-1:H,j=z>0?V+1:V,K={...B,updatedAt:new Date().toISOString()};return this.cache.tasks.splice(j,0,K),this.dirtyIds.add(String(J)),await this.save(),this.notifyListeners(),K}async reorder(J){this.assertLoaded();let z=J.map((X)=>{let Q=this.cache.tasks.findIndex((H)=>H.id===X.id);if(!(Q>=0?this.cache.tasks[Q]:void 0))throw Error(`task not found: ${X.id}`);return{idx:Q,position:X.position}}),Y=!1,G=new Map,Z=[];for(let{idx:X,position:Q}of z){let f=this.cache.tasks[X];if(!f||f.position===Q)continue;if(!G.has(X))G.set(X,f);if(this.cache.tasks[X]={...f,position:Q},!this.dirtyIds.has(f.id))this.dirtyIds.add(f.id),Z.push(f.id);Y=!0}if(!Y)return;try{await this.save()}catch(X){for(let[Q,f]of G)this.cache.tasks[Q]=f;for(let Q of Z)this.dirtyIds.delete(Q);throw X}this.notifyListeners()}async archive(J,z="done"){return this.update(J,{status:z})}async remove(J){this.assertLoaded();let z=this.cache.tasks.findIndex((Y)=>Y.id===J);if(z<0)return;this.cache.tasks.splice(z,1),this.dirtyIds.delete(String(J)),this.removedIds.add(String(J)),await this.save(),this.notifyListeners()}async _unlinkForTests(){try{await iU(this.path)}catch(J){if(J.code!=="ENOENT")throw J}try{await iU(this.tmpPath)}catch(J){if(J.code!=="ENOENT")throw J}this.cache={version:qY,tasks:[]},this.loaded=!1,this.dirtyIds.clear(),this.removedIds.clear()}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 J=this.cache.tasks.slice();for(let z of this.listeners)try{z(J)}catch(Y){console.error("[kobe TaskIndexStore] listener threw on notify:",Y)}}}function $U(J,z){if(!J||typeof J!=="object"||Array.isArray(J))return console.warn(`[kobe] tasks.json at ${z} is not an object; recovering with empty index.`),{version:qY,tasks:[]};let Y=J,G=Y.version;if(G!==void 0&&G!==1&&G!==2&&G!==3)return console.warn(`[kobe] tasks.json at ${z} has unsupported version=${String(G)}; recovering with empty index.`),{version:qY,tasks:[]};let Z=Array.isArray(Y.tasks)?Y.tasks:[],X=[];for(let Q of Z){let f=_b(Q);if(f)X.push(f);else console.warn(`[kobe] dropping malformed task entry from ${z}: ${JSON.stringify(Q)}`)}return{version:qY,tasks:X}}function _b(J){if(!J||typeof J!=="object")return null;let z=J;if(typeof z.id!=="string"||typeof z.title!=="string"||typeof z.repo!=="string"||typeof z.branch!=="string"||typeof z.worktreePath!=="string"||typeof z.status!=="string"||typeof z.createdAt!=="string"||typeof z.updatedAt!=="string")return null;if(!tb(z.status))return null;let Y=typeof z.archived==="boolean"?z.archived:!1,G=z.kind==="main"?"main":"task",Z=G==="main"?z.status==="in_progress"||z.status==="done"?"backlog":z.status:z.status==="done"&&!Y?"in_progress":z.status;return{id:jX(z.id),title:z.title,repo:z.repo,branch:z.branch,worktreePath:z.worktreePath,status:Z,archived:Y,pinned:typeof z.pinned==="boolean"?z.pinned:!1,kind:G,vendor:pY(typeof z.vendor==="string"?z.vendor:void 0),prStatus:pb(z.prStatus),...typeof z.position==="number"&&Number.isFinite(z.position)?{position:z.position}:{},...typeof z.modelEffort==="string"&&z.modelEffort.length>0?{modelEffort:z.modelEffort}:{},createdAt:z.createdAt,updatedAt:z.updatedAt}}function pb(J){if(!J||typeof J!=="object"||Array.isArray(J))return;let z=J;if(!rb(z.provider)||!ob(z.lifecycle)||!sb(z.checkState))return;return{provider:z.provider,lifecycle:z.lifecycle,checkState:z.checkState,...typeof z.number==="number"&&Number.isFinite(z.number)?{number:z.number}:{},...typeof z.url==="string"?{url:z.url}:{},...typeof z.title==="string"?{title:z.title}:{},...typeof z.baseRef==="string"?{baseRef:z.baseRef}:{},...typeof z.headRef==="string"?{headRef:z.headRef}:{},...typeof z.reviewDecision==="string"?{reviewDecision:z.reviewDecision}:{},...typeof z.mergeable==="string"?{mergeable:z.mergeable}:{},...typeof z.lastCheckedAt==="string"?{lastCheckedAt:z.lastCheckedAt}:{},...typeof z.lastError==="string"?{lastError:z.lastError}:{}}}function rb(J){return J==="github"||J==="gitlab"||J==="bitbucket"||J==="unknown"}function ob(J){return J==="creating"||J==="open"||J==="ready_to_merge"||J==="merged"||J==="closed"||J==="unknown"}function sb(J){return J==="none"||J==="pending"||J==="passing"||J==="failing"||J==="unknown"}function tb(J){return J==="backlog"||J==="in_progress"||J==="in_review"||J==="done"||J==="canceled"||J==="error"}var ib=(J)=>new Promise((z)=>setTimeout(z,J)),lb=25,$b=5000,qY=3;var iX=k(()=>{rJ();i1();PU();dU()});var vf;var aU=k(()=>{vf=class vf extends Error{args;cwd;exitCode;stdout;stderr;constructor(J,z,Y){super(`git ${J.join(" ")} (cwd=${z}) exited with code ${Y.exitCode}: ${Y.stderr.trim()||Y.stdout.trim()}`);this.name="GitCommandError",this.args=J,this.cwd=z,this.exitCode=Y.exitCode,this.stdout=Y.stdout,this.stderr=Y.stderr}}});var rU={};f1(rU,{GitWorktreeManager:()=>mf});import pU from"fs";import Rz from"path";class mf{execDeps;constructor(J=eb){this.execDeps=J}ctxFor(J){let z=this.execDeps.remoteBasePath(J);return z?{exec:this.execDeps.execForRepo(J),dir:z,remote:!0}:{exec:this.execDeps.execForRepo(J),dir:J,remote:!1}}async runGit(J,z,Y){if(!Y.cwd)throw Error("runGit(): cwd is required; refusing to inherit from process.cwd()");let G=await J.run(["git",...z],{cwd:Y.cwd,env:Y.env}),Z={stdout:G.stdout,stderr:G.stderr,exitCode:G.exitCode};if(Z.exitCode!==0&&!Y.allowFail)throw new vf(z,Y.cwd,Z);return Z}async create(J,z,Y,G){let Z=this.ctxFor(J);if(vY("repo",Z.dir),vY("path",Y),!z)throw Error("create(): branch must be a non-empty string");if(await Z.exec.exists(Y)){let H=await this.tryDescribe(Z,Y);if(H){if(H.branch!==z)throw Error(`worktree at ${Y} is on branch '${H.branch}', refusing to hijack to '${z}'`);return H}throw Error(`create(): ${Y} exists but is not a registered git worktree`)}await Z.exec.mkdirp(Rz.dirname(Y));let Q=await this.branchExists(Z,z)?["worktree","add",Y,z]:G?["worktree","add","-b",z,Y,G]:["worktree","add","-b",z,Y];await this.runGit(Z.exec,Q,{cwd:Z.dir});let f=await this.tryDescribe(Z,Y);if(!f)throw Error(`create(): git reported success but ${Y} is not a worktree`);if(f.branch!==z)throw Error(`create(): post-condition failed \u2014 expected branch '${z}' at ${Y}, got '${f.branch}'`);return f}async createForTask(J){let z=this.execDeps.remoteBasePath(J.repo),Y=z?_V(z,J.slug):iV(J.repo,J.slug);return this.create(J.repo,J.branch,Y,J.baseRef)}async remove(J,z){vY("path",J);let Y=this.execDeps.execForPath(J),G=z?.force===!0;if(!await Y.exists(J)){let Q=await this.findRepoFor(Y,J);if(Q)await this.runGit(Y,["worktree","prune"],{cwd:Q,allowFail:!0});return}let Z=await this.findRepoFor(Y,J);if(!Z)throw Error(`remove(): ${J} is not a git worktree`);if(!G){if(await this.isDirty(J))throw Error(`remove(): refusing to remove dirty worktree at ${J} (pass { force: true } to override)`)}let X=G?["worktree","remove","--force",J]:["worktree","remove",J];await this.runGit(Y,X,{cwd:Z}),await this.runGit(Y,["worktree","prune"],{cwd:Z,allowFail:!0})}async list(J){let z=this.ctxFor(J);vY("repo",z.dir);let Y=await this.runGit(z.exec,["worktree","list","--porcelain"],{cwd:z.dir}),G=Nj(Y.stdout),Z=[];for(let X of G){if(!X.path)continue;let Q=z.remote?_U(z.dir,X.path):o8(J,X.path);if(!Q)continue;if(!X.branch||X.detached)continue;let f=lX(Q),H=lX(X.path),B=Rz.relative(f,H),V=Rz.join(Q,B),j=await this.isDirty(X.path);Z.push({path:V,branch:X.branch,head:X.head??"",dirty:j})}return Z}async listAll(J){let z=this.ctxFor(J);vY("repo",z.dir);let Y=await this.runGit(z.exec,["worktree","list","--porcelain"],{cwd:z.dir}),G=Nj(Y.stdout),Z=z.remote?z.dir:lX(z.dir),X=[];for(let Q of G){if(!Q.path)continue;if(Q.bare)continue;if(!Q.branch||Q.detached)continue;if((z.remote?Q.path:lX(Q.path))===Z)continue;let f=await this.isDirty(Q.path);X.push({path:Q.path,branch:Q.branch,head:Q.head??"",dirty:f,kobeManaged:z.remote?_U(z.dir,Q.path)!==null:$V(J,Q.path),lastActivityMs:await this.lastActivityMs(z.exec,Q.path)})}return X.sort((Q,f)=>f.lastActivityMs-Q.lastActivityMs),X}async lastActivityMs(J,z){try{let Y=await this.runGit(J,["log","-1","--format=%ct"],{cwd:z}),G=Number.parseInt(Y.stdout.trim(),10);if(Number.isFinite(G)&&G>0)return G*1000}catch{}if(!J.isRemote)try{return pU.statSync(z).mtimeMs}catch{}return 0}async isDirty(J){vY("path",J);let z=this.execDeps.execForPath(J);return(await this.runGit(z,["status","--porcelain"],{cwd:J})).stdout.length>0}async currentBranch(J){vY("path",J);let z=this.execDeps.execForPath(J),G=(await this.runGit(z,["rev-parse","--abbrev-ref","HEAD"],{cwd:J})).stdout.trim();if(!G||G==="HEAD")throw Error(`currentBranch(): ${J} is in detached-HEAD state`);return G}async renameBranch(J,z,Y){if(vY("path",J),z===Y)return;let G=this.execDeps.execForPath(J),Z=await this.findRepoFor(G,J);if(!Z)throw Error(`renameBranch(): ${J} is not a git worktree`);await this.runGit(G,["branch","-m",z,Y],{cwd:Z})}async tryDescribe(J,z){let Y=await this.runGit(J.exec,["worktree","list","--porcelain"],{cwd:J.dir}),G=Nj(Y.stdout),Z=(f)=>J.remote?f:lX(f),X=Z(z),Q=G.find((f)=>f.path&&Z(f.path)===X);if(!Q||!Q.path||!Q.branch||Q.detached)return null;return{path:z,branch:Q.branch,head:Q.head??"",dirty:await this.isDirty(Q.path)}}async branchExists(J,z){let Y=`refs/heads/${z}`;return(await this.runGit(J.exec,["show-ref","--verify","--quiet",Y],{cwd:J.dir,allowFail:!0})).exitCode===0}async findRepoFor(J,z){try{let Y=await this.runGit(J,["rev-parse","--git-common-dir"],{cwd:z,allowFail:!0});if(Y.exitCode!==0)return null;let G=Y.stdout.trim();if(!G)return null;let Z=Rz.isAbsolute(G)?G:Rz.resolve(z,G);return Rz.basename(Z)===".git"?Rz.dirname(Z):Z}catch(Y){if(Y instanceof vf)return null;throw Y}}}function Nj(J){let z=[],Y=null;for(let G of J.split(`
|
|
85
|
-
`)){let Z=G.replace(/\r$/,"");if(Z===""){if(Y)z.push(Y);Y=null;continue}if(!Y)Y={};if(Z.startsWith("worktree "))Y.path=Z.slice(9);else if(Z.startsWith("HEAD "))Y.head=Z.slice(5);else if(Z.startsWith("branch ")){let X=Z.slice(7);Y.branch=X.startsWith("refs/heads/")?X.slice(11):X}else if(Z==="detached")Y.detached=!0;else if(Z==="bare")Y.bare=!0}if(Y)z.push(Y);return z}function _U(J,z){let Y=`${J.replace(/\/+$/,"")}/.kobe/worktrees`;return z===Y||z.startsWith(`${Y}/`)?Y:null}function vY(J,z){if(!z||!Rz.isAbsolute(z))throw Error(`${J} must be an absolute path, got: ${JSON.stringify(z)}`)}function lX(J){try{return pU.realpathSync(J)}catch{return Rz.resolve(J)}}var eb;var kj=k(()=>{Vz();F1();aU();s8();eb={execForRepo:JZ,execForPath:YY,remoteBasePath(J){return rz(J)?.basePath??null}}});var cf;var oU=k(()=>{cf=["web","completions","add","remove","adopt","export","repo","api","daemon","theme","skill","feedback","update","doctor","reset","reload","kill-sessions"]});var tU={};f1(tU,{runCompletionsSubcommand:()=>GS});function JS(){return`# kobe bash completions
|
|
76
|
+
`))}catch{}}),Y=setInterval(()=>{try{G.enqueue(Z.encode(`: ping
|
|
77
|
+
|
|
78
|
+
`))}catch{}},15000)},cancel(){if(Y)clearInterval(Y);z?.()}});return new Response(X,{headers:{"content-type":"text/event-stream","cache-control":"no-cache, no-transform",connection:"keep-alive"}})}async function sk(J,z,Y){try{let{name:Z,payload:X}=await J.json();if(!Z)return Response.json({error:"missing rpc name"},{status:400});if(!ZU.has(Z))return Response.json({error:`rpc ${Z} is not exposed to the web UI`},{status:403});let G=await z.request(Z,X),Q=X?.taskId;if(typeof Q==="string"){let f=Z==="task.archive"&&X.archived!==!1;if(Z==="task.delete"||f)Y(Q)}return Response.json({result:G})}catch(Z){let X=Z instanceof Error&&Z.name!=="Error"?Z.name:void 0;return Response.json({error:Z instanceof Error?Z.message:String(Z),...X?{name:X}:{}},{status:500})}}async function tk(){try{let z=(await JY()).map((Y)=>({id:Y,label:KZ(Y),effortLevels:JJ(Y).effortLevels}));return Response.json({engines:z.length>0?z:[{id:"claude",label:"Claude"}]})}catch(J){return Response.json({error:J instanceof Error?J.message:String(J)},{status:500})}}function ek(){return Response.json({api:UZ()})}function Jb(){return Response.json({projects:gJ()})}function vY(J,z=""){return typeof J==="string"?J:z}function zb(J,z){return typeof J==="boolean"?J:z}function AU(J){let z=J.customEngineIds;if(!Array.isArray(z))return[];return z.filter((Y)=>typeof Y==="string"&&OU.test(Y)&&!qJ(Y))}function Yb(J){return J.split(/[-_]+/).filter(Boolean).map((z)=>`${z.slice(0,1).toUpperCase()}${z.slice(1)}`).join(" ")}function Zb(J,z){return vY(J[Lz(z)]).trim()||KZ(z)}function Xb(J,z){return vY(J[Dz(z)]).trim()||NG(z).join(" ")}function RU(){let J=RJ(),z=AU(J),Y=[...pY,...z],Z=vY(J.lastSelectedVendor,"claude"),X=vY(J.focusAccent,"primary");return Response.json({activeTheme:vY(J.activeTheme,"claude"),transparentBackground:zb(J.transparentBackground,!1),focusAccent:FU.includes(X)?X:"primary",notificationsToast:J["notifications.toast.enabled"]!==!1,notificationsSound:J["notifications.sound.enabled"]!==!1,settingsSurface:SZ(J[qY]??bZ),editorKind:NX(J[QY]??If),editorCustomCommand:vY(J[PY]),remoteProjects:J["experimental.remoteProjects"]===!0,autoStatus:J[WZ]===!0,dispatcher:J[VZ]===!0,defaultEngine:Z,engines:Y.map((G)=>({id:G,label:Zb(J,G),command:Xb(J,G),isBuiltin:qJ(G),isCustom:!qJ(G),isDefault:G===Z}))})}function eG(J,z,Y){if(typeof Y==="string")J[z]=Y.trim()}function IX(J,z,Y){if(typeof Y==="boolean")J[z]=Y}async function Gb(J){try{let z=await J.json(),Y={};if(eG(Y,"activeTheme",z.activeTheme),IX(Y,"transparentBackground",z.transparentBackground),FU.includes(z.focusAccent))Y.focusAccent=z.focusAccent;if(IX(Y,"notifications.toast.enabled",z.notificationsToast),IX(Y,"notifications.sound.enabled",z.notificationsSound),z.settingsSurface==="chattab"||z.settingsSurface==="taskpanel")Y[qY]=z.settingsSurface;if(kZ.includes(z.editorKind))Y[QY]=z.editorKind;eG(Y,PY,z.editorCustomCommand),IX(Y,"experimental.remoteProjects",z.remoteProjects),IX(Y,WZ,z.autoStatus),IX(Y,VZ,z.dispatcher),eG(Y,"lastSelectedVendor",z.defaultEngine);let Z=RJ(),X=AU(Z),G=new Set([...pY,...X]),Q=Array.isArray(z.engineUpdates)?z.engineUpdates:[];for(let f of Q){if(!f||typeof f!=="object")continue;let H=f;if(typeof H.id!=="string"||!G.has(H.id))continue;eG(Y,Dz(H.id),H.command),eG(Y,Lz(H.id),H.label)}if(z.addEngine&&typeof z.addEngine==="object"){let f=z.addEngine,H=typeof f.id==="string"?f.id.trim().toLowerCase():"";if(!OU.test(H)||qJ(H)||G.has(H))return Response.json({error:"invalid or duplicate engine id"},{status:400});Y.customEngineIds=[...X,H],Y[Dz(H)]=vY(f.command).trim();let B=vY(f.label).trim();Y[Lz(H)]=B&&B!==H?B:Yb(H)}if(typeof z.removeEngine==="string"){let f=z.removeEngine;if(!qJ(f)){if(Y.customEngineIds=X.filter((H)=>H!==f),Y[Dz(f)]=void 0,Y[Lz(f)]=void 0,Z.lastSelectedVendor===f)Y.lastSelectedVendor="claude"}}if(Object.keys(Y).length>0)MY(Y);return RU()}catch(z){return Response.json({error:z instanceof Error?z.message:String(z)},{status:400})}}async function Qb(J,z){try{let{taskId:Y}=await J.json();if(!Y)return Response.json({error:"missing taskId"},{status:400});return Response.json(await fU(z,Y))}catch(Y){return Response.json({error:Y instanceof Error?Y.message:String(Y)},{status:500})}}async function KU(J,z,Y){try{let Z=J.searchParams.get("taskId");if(!Z)return Response.json({error:"missing taskId"},{status:400});return Response.json(await Y(z,Z))}catch(Z){return Response.json({error:Z instanceof Error?Z.message:String(Z)},{status:500})}}function gU(){return Response.json({review:C1(hf.review)??null,pr:C1(hf.pr)??null})}async function qb(J){try{let z=await J.json();if(typeof z.review==="string")s1(hf.review,z.review);if(typeof z.pr==="string")s1(hf.pr,z.pr);return gU()}catch(z){return Response.json({error:z instanceof Error?z.message:String(z)},{status:400})}}async function fb(J,z){let Z=DU(VU(z,J==="/"?"/index.html":J));if(!Z.startsWith(z))return new Response("forbidden",{status:403});let X=Bun.file(rk(Z)?Z:VU(z,"index.html"));if(!await X.exists())return new Response("kobe web assets not built \u2014 run `bun --filter kobe-web build`",{status:503});return new Response(X)}function Hb(J){let{link:z,sseSends:Y,staticDir:Z}=J,X=J.tearDownSession??((G)=>void jU(G));return async function(Q){let f=new URL(Q.url);if(f.pathname===MU)return new Response(LU);if(!JU(Q.headers.get("origin"),{allowedHost:J.allowedHost}))return new Response("forbidden: cross-origin request rejected",{status:403});if(f.pathname==="/events")return ok((A)=>{let O=J.onSseOpen?.()??(()=>{});return A("snapshot",z.snapshot()),Y.add(A),()=>{Y.delete(A),O()}});if(f.pathname==="/api/rpc"&&Q.method==="POST")return sk(Q,z,X);if(f.pathname==="/api/session"&&Q.method==="POST")return Qb(Q,z);if(f.pathname==="/api/engine-spec"&&Q.method==="GET")return KU(f,z,HU);if(f.pathname==="/api/terminal-spec"&&Q.method==="GET")return KU(f,z,BU);if(f.pathname==="/api/engines"&&Q.method==="GET")return tk();if(f.pathname==="/api/cli-invocation"&&Q.method==="GET")return ek();if(f.pathname==="/api/projects"&&Q.method==="GET")return Jb();if(f.pathname==="/api/settings"&&Q.method==="GET")return RU();if(f.pathname==="/api/settings"&&Q.method==="PATCH")return Gb(Q);if(f.pathname==="/api/quick-prompts"&&Q.method==="GET")return gU();if(f.pathname==="/api/quick-prompts"&&Q.method==="PUT")return qb(Q);let H=await n6(Q,f);if(H)return H;let B=await x6(Q,f);if(B)return B;let V=await P6(Q,f);if(V)return V;let j=await s6(Q,f,z);if(j)return j;let K=await _6(Q,f);if(K)return K;let L=l6(Q,f);if(L)return L;if(Z)return fb(f.pathname,Z);return new Response("not found",{status:404})}}function TZ(J,z){let Y=J.snapshot().find((Z)=>Z.channel===z);return Y?Y.payload:null}function kj(J){return J.length>1?J.replace(/\/+$/,""):J}function Bb(J,z){let Y=kj(z),Z=new Set([z]);for(let X of J){let G=kj(X.repo),Q=kj(X.worktreePath);if(G===Y||Q===Y){if(X.repo)Z.add(X.repo);if(X.worktreePath)Z.add(X.worktreePath)}}return[...Z]}function CU(J){let z=_G();return{async request(Y,Z){return await aG(z,Y,Z,J.ctx(0))},snapshot(){let Y=J.orch.listTasks().map(fz),Z={},X=TZ(J.bus,"issue.snapshot");if(X)for(let f of Bb(Y,X.repoRoot))Z[f]={...X,repoRoot:f};let G=TZ(J.bus,"task.jobs"),Q=G?.phase==="running"?{[G.taskId]:G}:{};return{tasks:Y,activeTaskId:TZ(J.bus,"active-task")?.taskId??null,engineStates:J.activity.snapshotByTask(),update:TZ(J.bus,"update")?.info??null,jobs:Q,worktreeChanges:TZ(J.bus,"worktree.changes")?.changes??{},issueSnapshots:Z,deliver:TZ(J.bus,"session.deliver"),uiPrefs:TZ(J.bus,"ui-prefs"),connected:!0}}}}async function UU(J){try{let z=Bun.spawn(["lsof","-nP",`-iTCP:${J}`,"-sTCP:LISTEN","-t"],{stdout:"pipe",stderr:"ignore"});return(await new Response(z.stdout).text()).split(`
|
|
79
|
+
`).map((Z)=>Number.parseInt(Z.trim(),10)).filter((Z)=>Number.isFinite(Z)&&Z!==process.pid)}catch{return[]}}async function jb(J,z=MU){let Y;try{Y=(await(await fetch(`http://localhost:${J}${z}`,{signal:AbortSignal.timeout(800)})).text()).trim()}catch{return}if(Y!==LU)throw Error(`port ${J} is in use by a non-kobe service; refusing to replace it`);let Z=await UU(J);for(let G of Z)try{process.kill(G,"SIGTERM")}catch{}let X=Date.now()+2000;while(Date.now()<X){if((await UU(J)).length===0)return;await new Promise((G)=>setTimeout(G,100))}}async function NU(J){if(J.takeover!==!1)await jb(J.port);let z=new Set,Y=J.onEvent((f)=>{for(let H of z)H("channel",f)}),Z=J.hostname?.trim()||process.env.KOBE_WEB_HOST?.trim()||"127.0.0.1",X=zU(Z),G=Hb({link:J.link,sseSends:z,staticDir:J.staticDir?DU(J.staticDir):void 0,allowedHost:X,onSseOpen:J.onSseOpen}),Q=Bun.serve({port:J.port,hostname:Z,idleTimeout:0,fetch:G});return{port:Q.port??J.port,hostname:Z,close(){Y(),Q.stop(!0)}}}var LU="kobe-web",MU="/__kobe_web",FU,OU,hf;var kU=k(()=>{ZZ();sJ();kY();CG();Pq();O1();eY();Tf();$1();u6();h6();i6();$6();Mf();JZ();p6();YU();XU();WU();FU=["primary","success","info"],OU=/^[a-z][a-z0-9_-]{0,47}$/;hf={review:"boardPrompt.review",pr:"boardPrompt.pr"}});var bU={};f1(bU,{sameWorktreeChanges:()=>mz,readWorktreeChanges:()=>Vb,pickPushedChanges:()=>mf,parsePorcelain:()=>TX});import{spawnSync as Wb}from"child_process";function mz(J,z){return J.added===z.added&&J.deleted===z.deleted}function mf(J,z){if(!J)return null;return J.get(z)??vf}function Vb(J){if(!J)return vf;try{let z=Wb("git",["status","--porcelain=v1"],{cwd:J,encoding:"utf8",stdio:["ignore","pipe","pipe"],env:cJ()});if(z.status!==0||!z.stdout)return vf;return TX(z.stdout)}catch{return vf}}function TX(J){let z=0,Y=0;for(let{x:Z,y:X}of yf(J))if(Z==="D"||X==="D")Y+=1;else z+=1;return{added:z,deleted:Y}}var vf;var yX=k(()=>{hY();xf();vf={added:0,deleted:0}});async function Lb(J,z){let Y=await YY("git",["status","--porcelain=v1"],{cwd:J,env:cJ(),signal:z});if(Y.status!==0)throw Error("git status failed");return TX(Y.stdout)}function Mb(J){let z=new Set;for(let Y of J){if(Y.archived)continue;if(!Y.worktreePath)continue;if(a1(Y.repo)||a1(Y.worktreePath))continue;z.add(Y.worktreePath)}return z}class SU{orch;bus;options;entries=new Map;stopped=!1;constructor(J,z,Y={}){this.orch=J;this.bus=z;this.options=Y}tick(){if(this.stopped)return;if(this.options.hasSubscribers&&!this.options.hasSubscribers())return;try{let J=Mb(this.orch.listTasks()),z=!1;for(let Y of this.entries.keys()){if(J.has(Y))continue;if(this.entries.get(Y)?.value)z=!0;this.entries.delete(Y)}if(z)this.publish();for(let Y of J)this.maybeCollect(Y)}catch(J){y1("worktree-changes",J)}}stop(){this.stopped=!0}maybeCollect(J){let z=this.entries.get(J);if(!z)z={inFlight:!1,nextAllowedAt:0},this.entries.set(J,z);let Y=this.options.cadence??{timeoutMs:Kb,slowRetryMs:Ub,minIntervalMs:Db},Z=this.options.run??Lb;JX(z,Y,(X)=>Z(J,X),(X)=>{if(this.stopped)return;if(this.entries.get(J)!==z)return;if(z.value&&mz(z.value,X))return;z.value=X,this.publish()})}publish(){let J={};for(let[z,Y]of this.entries)if(Y.value)J[z]=Y.value;this.bus.publish("worktree.changes",{changes:J})}}function IU(J,z,Y=bj,Z){if(Y<=0)return()=>{};let X=new SU(J,z,{hasSubscribers:Z});X.tick();let G=setInterval(()=>X.tick(),Y);return G.unref?.(),()=>{clearInterval(G),X.stop()}}var bj=2000,Kb=4000,Ub=60000,Db=1500;var TU=k(()=>{hY();zX();O1();yX()});import{mkdir as yU,readFile as Fb,unlink as Sj,writeFile as Ob}from"fs/promises";import{createServer as Ab}from"net";import{dirname as xU}from"path";import{StringDecoder as Rb}from"string_decoder";function Cb(){let J=process.env.KOBE_DAEMON_IDLE_GRACE_MS;if(J===void 0)return uU;let z=Number(J);return Number.isFinite(z)&&z>=0?z:uU}async function wU(J,z={}){let Y=z.socketPath??Iz(z.homeDir),Z=z.pidPath??tz(z.homeDir),X=z.startedAt??new Date,G=new Set,Q=new Set,f=1,H=new Lj({clients:function*(){yield*G,yield*Q},idleGraceMs:Cb(),onIdleStop:()=>void f0().catch((P)=>y1("daemon-idle-shutdown",P))}),B=new $B;B.onPublish((P)=>{EU(G,{type:"event",name:P.channel,payload:P.payload})});let j=new m8(B,void 0,void 0,async(P)=>{let N=J.getTask(P);if(!N?.worktreePath)return;return rZ(N.vendor??_1,N.worktreePath)}),K=new Af(Of(z.homeDir));await yU(xU(Y),{recursive:!0}),await yU(xU(Z),{recursive:!0}),await Sj(Y).catch(()=>{});let L=Ab((P)=>{let N={id:f++,connectedAt:new Date,socket:P,writer:new lB(P),buffer:"",subscribed:!1,holdsLifetime:!1,channels:null};G.add(N);let p=new Rb("utf8");P.on("data",(u)=>{N.buffer+=p.write(u),t(N)}),P.on("error",()=>{}),P.on("close",()=>{if(G.delete(N),N.subscribed)vz("conn",`client #${N.id} (${N.holdsLifetime?"gui":"pane"}) disconnected \u2014 ${G.size} client(s), ${H.guiCount()} gui left`);H.clientDisconnected(N.holdsLifetime)})}),A=J.subscribeTasks((P)=>{B.publish("task.snapshot",{tasks:P.map(fz)})}),O=z.checkUpdate??zG,R=z.updatePollMs??gb,x=()=>{O().then((P)=>B.publish("update",{info:P})).catch((P)=>y1("update-poller",P))},a=null;if(R>0)x(),a=setInterval(x,R),a.unref?.();let S=z.autoTitlePollMs??iB,C=kK(J,S,()=>H.hasSubscribers()),M=A6(B,{statePath:Oj(z.homeDir),debounceMs:z.uiPrefsDebounceMs??Fj}),I=W6(B,{path:Dj(z.homeDir),debounceMs:z.keybindingsDebounceMs??Uj}),$=IU(J,B,z.worktreeChangesTickMs??bj,()=>H.hasSubscribers()),i=M6(J,B,z.transcriptActivityTickMs??Mj,()=>H.hasSubscribers()),e=U6(J,z.prStatusPollMs??oG,()=>H.hasSubscribers()),J0=null,T={socketPath:Y,pidPath:Z,startedAt:X,get webPort(){return J0?.port},clients:G,async close(){if(H.markStopping(),A(),J0?.close(),J0=null,a)clearInterval(a);C(),e(),M(),I(),$(),i(),j.close(),EU(G,{type:"event",name:"daemon.stopping",payload:{}});for(let P of Array.from(G))P.socket.destroy();await new Promise((P)=>L.close(()=>P())),await Sj(Y).catch(()=>{}),await Sj(Z).catch(()=>{})}};await new Promise((P,N)=>{let p=L;p.once("error",N),L.listen(Y,()=>{p.removeListener("error",N),P()})}),await Ob(Z,`${process.pid}
|
|
80
|
+
`,"utf8");async function f0(){if(H.isStopping())return;H.markStopping(),await z.onStop?.(),setTimeout(()=>{T.close().catch((P)=>y1("daemon-shutdown",P))},0).unref()}let _=_G();function W0(P){return{orch:J,bus:B,activity:j,issues:K,daemon:{startedAt:X,socketPath:Y,webPort:J0?.port,pid:process.pid,guiCount:()=>H.guiCount(),stopSoon:f0},clientId:P}}if(z.webPort!==void 0){let P=CU({orch:J,bus:B,activity:j,ctx:W0});J0=await NU({port:z.webPort,hostname:z.webHost,staticDir:z.webStaticDir,link:P,onEvent:(N)=>B.onPublish(N),onSseOpen:()=>{let N={subscribed:!0,holdsLifetime:!0};return Q.add(N),H.guiAttached(),vz("conn",`web client subscribed \u2014 ${G.size+Q.size} client(s), ${H.guiCount()} gui`),()=>{Q.delete(N),vz("conn",`web client disconnected \u2014 ${G.size+Q.size} client(s), ${H.guiCount()} gui left`),H.clientDisconnected(!0)}}}),vz("web",`daemon web transport listening on http://${J0.hostname}:${J0.port}`)}async function R0(P,N){if(P.name==="subscribe"){let p=oB(P.payload),u=N.subscribed;N.subscribed=!0;let d=p.role==="gui"?"gui":"pane";N.holdsLifetime=d==="gui",N.channels=J7(p.channels);let o=!u;if(N.holdsLifetime)H.guiAttached();vz("conn",`client #${N.id} subscribed as ${d}${N.channels?` [${[...N.channels].join(",")}]`:""} \u2014 ${G.size} client(s), ${H.guiCount()} gui${o?" (collectors resume)":""}`);for(let Q0 of B.snapshot()){if(N.channels&&!N.channels.has(Q0.channel))continue;JQ(N,{type:"event",name:Q0.channel,payload:Q0.payload})}if(!N.channels||N.channels.has("engine-state"))for(let Q0 of j.currentNonIdle())JQ(N,{type:"event",name:"engine-state",payload:Q0});return{}}return aG(_,P.name,P.payload,W0(N.id))}async function V0(P,N){try{let p=await R0(P,N);JQ(N,{type:"response",id:P.id,name:P.name,payload:p})}catch(p){JQ(N,{type:"response",id:P.id,name:P.name,error:rB(p)})}}function t(P){let N=P.buffer.indexOf(`
|
|
81
|
+
`);while(N!==-1){let p=P.buffer.slice(0,N);if(P.buffer=P.buffer.slice(N+1),p.trim().length>0)try{let u=JSON.parse(p);if(u.type!=="request")throw Error("daemon only accepts request frames from clients");V0(u,P)}catch(u){JQ(P,{type:"response",id:"parse-error",error:{message:u instanceof Error?u.message:String(u)}})}N=P.buffer.indexOf(`
|
|
82
|
+
`)}}return T}async function xX(J){try{let z=await Fb(J,"utf8"),Y=Number(z.trim());return Number.isFinite(Y)?Y:null}catch{return null}}function PU(J){if(J.type==="event")return J.name==="daemon.stopping";return!0}function JQ(J,z){J.writer.write(ZG(z),PU(z))}function EU(J,z){let Y=z.type==="event"&&z.name!=="daemon.stopping"?z.name:null,Z=PU(z),X=null;for(let G of J){if(!G.subscribed&&z.type==="event")continue;if(Y&&G.channels&&!G.channels.has(Y))continue;X??=ZG(z),G.writer.write(X,Z)}}var gb=21600000,uU=3000;var cf=k(()=>{Dq();rJ();MJ();MV();bK();Mf();Zj();V6();K6();nZ();D6();JZ();F6();R6();kU();TU();Mf();Zj()});import{unlink as hU}from"fs/promises";function Nb(J){try{return process.kill(J,0),!0}catch(z){return z.code==="EPERM"}}async function uX(J,z){let Y=await xX(z),Z=Y!==null&&Y!==process.pid?Y:null,X=Z!==null&&Nb(Z),G=X?"graceful":"absent",Q=new aJ(J),f=Q.request("daemon.stop").catch(()=>{return}),H=new Promise((B)=>setTimeout(B,2000));if(await Promise.race([f,H]),Q.close(),X&&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{}G="sigterm",V=!0}await new Promise((j)=>setTimeout(j,50))}try{process.kill(Z,0),process.kill(Z,"SIGKILL"),G="sigkill",await new Promise((j)=>setTimeout(j,100))}catch{}}return await hU(J).catch(()=>{}),await hU(z).catch(()=>{}),{pid:Y,method:G}}var df=k(()=>{XG();cf()});var Kf={};f1(Kf,{testDaemonResponds:()=>nf,ensureDaemonReachable:()=>EX,connectOrStartDaemon:()=>gz,connectIfRunning:()=>zz});import{spawn as kb}from"child_process";import{closeSync as bb,existsSync as Sb,mkdirSync as Ib,openSync as Tb}from"fs";import{dirname as vU,resolve as Ij}from"path";import{fileURLToPath as yb}from"url";function Eb(J,z,Y,Z){let X="ignore",G;try{Ib(vU(Z),{recursive:!0}),G=Tb(Z,"a"),X=["ignore",G,G]}catch{X="ignore"}if(kb(J,[...z],{detached:!0,stdio:X,env:Y}).unref(),G!==void 0)try{bb(G)}catch{}}async function EX(){let J=Iz();if(await nf(J))return J;await uX(J,tz()).catch(()=>{});let[z,...Y]=wb(xb);Eb(z,Y,process.env,aQ());let Z=Date.now()+5000;while(Date.now()<Z){if(await nf(J))return J;await new Promise((X)=>setTimeout(X,100))}throw Error(`kobe: daemon did not start (or stayed wedged) at ${J}`)}async function gz(){let J=await EX(),z=new aJ(J);return await z.connect(),z}async function zz(){let J=Iz();if(!await nf(J))return null;let z=new aJ(J);return await z.connect(),z}async function nf(J,z=ub){let Y=new aJ(J);try{await Y.connect()}catch{return Y.close(),!1}let Z=Y.request("hello",{protocolVersion:$J}).then(()=>!0).catch(()=>!0),X,G=new Promise((f)=>{X=setTimeout(()=>f(!1),z)}),Q=await Promise.race([Z,G]);if(X)clearTimeout(X);return Y.close(),Q}function wb(J){let z=yb(import.meta.url);if(z.startsWith("/$bunfs")||z.startsWith("B:\\~BUN"))return[process.execPath,...J];let Y=vU(z),Z=[Ij(Y,"../cli/index.ts"),Ij(Y,"../../../kobe/src/cli/index.ts"),Ij(Y,"../cli/index.js")],X=Z.find((G)=>Sb(G));if(X)return[process.execPath,X,...J];throw Error(`kobe: could not locate kobe entry near ${Y}; checked ${Z.join(", ")}`)}var xb,ub=3000;var FJ=k(()=>{df();nZ();JZ();XG();xb=["daemon","start"]});import{mkdir as Pb,readFile as mU,unlink as dU,writeFile as cU}from"fs/promises";import{dirname as hb}from"path";function vb(J){if(!Number.isInteger(J)||J<=0)return!1;try{return process.kill(J,0),!0}catch(z){if(z.code==="ESRCH")return!1;return!0}}async function Tj(J,z={}){await Pb(hb(J),{recursive:!0});try{await cU(J,String(process.pid),{flag:"wx"});return}catch(X){if(X.code!=="EEXIST")throw X}let Y=-1;try{let X=(await mU(J,"utf8")).trim();if(Y=Number.parseInt(X,10),!Number.isFinite(Y))Y=-1}catch{return Tj(J,z)}let Z=Y>0&&vb(Y);if(Z&&!z.forceTakeover)throw new zQ(`task index is locked by another kobe instance (pid ${Y})`,Y);console.warn(`[kobe] removing stale lockfile at ${J} (was held by pid ${Y}${Z?", forced":", process gone"})`);try{await dU(J)}catch(X){if(X.code!=="ENOENT")throw X}try{await cU(J,String(process.pid),{flag:"wx"})}catch(X){if(X.code==="EEXIST"){let G=-1;try{G=Number.parseInt((await mU(J,"utf8")).trim(),10)}catch{G=-1}throw new zQ(`task index lockfile contended during takeover (winner pid ${G})`,G)}throw X}}async function nU(J){try{await dU(J)}catch(z){if(z.code==="ENOENT")return;throw z}}var zQ;var iU=k(()=>{zQ=class zQ extends Error{heldByPid;constructor(J,z){super(J);this.name="LockfileError",this.heldByPid=z}}});function mb(J,z){let Y="",Z=J;for(let X=z-1;X>=0;X--){let G=Z%32;Y="0123456789ABCDEFGHJKMNPQRSTVWXYZ"[G]+Y,Z=(Z-G)/32}return Y}function aU(J){let z=new Uint8Array(J);crypto.getRandomValues(z);let Y=Array(J);for(let Z=0;Z<J;Z++)Y[Z]=(z[Z]??0)&31;return Y}function cb(J){for(let z=J.length-1;z>=0;z--){let Y=J[z]??0;if(Y<31)return J[z]=Y+1,!0;J[z]=0}return!1}function db(J){let z="";for(let Y of J)z+="0123456789ABCDEFGHJKMNPQRSTVWXYZ"[Y]??"0";return z}function _U(J=Date.now()){let z;if(J===lU){let Y=$U.slice();if(!cb(Y))z=aU(16);else z=Y}else z=aU(16);return lU=J,$U=z,mb(J,10)+db(z)}var lU=-1,$U;var pU=k(()=>{$U=Array(16).fill(0)});var yj={};f1(yj,{TaskIndexStore:()=>wX});import{mkdir as nb,open as ib,readFile as rU,rename as lb,unlink as oU}from"fs/promises";import{homedir as $b}from"os";import{dirname as ab,join as sU}from"path";async function ob(J){let z=Date.now()+rb;for(;;)try{await Tj(J);return}catch(Y){if(!(Y instanceof zQ)||Date.now()>=z)throw Y;await _b(pb)}}class wX{homeDir;kobeDir;path;tmpPath;lockPath;cache={version:fY,tasks:[]};loaded=!1;listeners=new Set;saveChain=Promise.resolve();dirtyIds=new Set;removedIds=new Set;constructor(J={}){this.homeDir=J.homeDir??$b(),this.kobeDir=sU(this.homeDir,".kobe"),this.path=sU(this.kobeDir,"tasks.json"),this.tmpPath=`${this.path}.tmp`,this.lockPath=`${this.path}.lock`}subscribe(J){if(this.listeners.add(J),this.loaded)try{J(this.cache.tasks.slice())}catch(z){console.error("[kobe TaskIndexStore] listener threw on subscribe:",z)}return()=>{this.listeners.delete(J)}}get filePath(){return this.path}get stateDir(){return this.kobeDir}async load(){this.dirtyIds.clear(),this.removedIds.clear();let J;try{J=await rU(this.path,"utf8")}catch(Y){if(Y.code==="ENOENT")return this.cache={version:fY,tasks:[]},this.loaded=!0,this.notifyListeners(),this.snapshot();throw Y}let z;try{z=JSON.parse(J)}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:fY,tasks:[]},this.loaded=!0,this.notifyListeners(),this.snapshot()}return this.cache=tU(z,this.path),this.loaded=!0,this.notifyListeners(),this.snapshot()}async save(){this.assertLoaded();let J=this.saveChain.then(()=>this.doSave());return this.saveChain=J.catch(()=>{}),J}async doSave(){await nb(ab(this.path),{recursive:!0});let J=new Set(this.dirtyIds),z=new Set(this.removedIds);await ob(this.lockPath);try{let Y=await this.readDiskTasks(),Z=this.mergeWithDisk(Y,J,z),G=`${JSON.stringify({version:fY,tasks:Z},null,2)}
|
|
83
|
+
`,Q=await ib(this.tmpPath,"w",420);try{await Q.writeFile(G,"utf8"),await Q.sync()}finally{await Q.close()}await lb(this.tmpPath,this.path);for(let H of J)this.dirtyIds.delete(H);for(let H of z)this.removedIds.delete(H);let f=new Set(this.cache.tasks.map((H)=>H.id));for(let H of Z)if(!f.has(H.id))this.cache.tasks.push(H)}finally{await nU(this.lockPath)}}async readDiskTasks(){let J;try{J=await rU(this.path,"utf8")}catch(Y){if(Y.code==="ENOENT")return[];throw Y}let z;try{z=JSON.parse(J)}catch{return[]}return tU(z,this.path).tasks}mergeWithDisk(J,z,Y){let Z=new Map(J.map((Q)=>[Q.id,Q])),X=[],G=new Set;for(let Q of this.cache.tasks){if(z.has(Q.id))X.push(Q);else{let f=Z.get(Q.id);if(f===void 0)continue;X.push(f)}G.add(Q.id)}for(let Q of J){if(G.has(Q.id)||Y.has(Q.id))continue;X.push(Q),G.add(Q.id)}return X}get(J){return this.assertLoaded(),this.cache.tasks.find((z)=>z.id===J)}list(){return this.assertLoaded(),this.cache.tasks.slice()}async create(J){this.assertLoaded();let z=new Date().toISOString(),Y={archived:!1,vendor:J.vendor??_1,...J,id:KG(_U()),createdAt:z,updatedAt:z};return this.cache.tasks.push(Y),this.dirtyIds.add(Y.id),await this.save(),this.notifyListeners(),Y}async update(J,z){this.assertLoaded();let Y=this.cache.tasks.findIndex((H)=>H.id===J);if(Y<0)throw Error(`task not found: ${J}`);let Z=this.cache.tasks[Y];if(!Z)throw Error(`task not found: ${J}`);let{id:X,createdAt:G,...Q}=z,f={...Z,...Q,id:Z.id,createdAt:Z.createdAt,updatedAt:new Date().toISOString()};return this.cache.tasks[Y]=f,this.dirtyIds.add(String(J)),await this.save(),this.notifyListeners(),f}async move(J,z,Y){this.assertLoaded();let Z=this.cache.tasks.find((L)=>L.id===J);if(!Z)throw Error(`task not found: ${J}`);let X=Y?.length?Y:this.cache.tasks.map((L)=>L.id),G=X.indexOf(String(J));if(G<0)throw Error(`task not movable in current group: ${J}`);let Q=X[G+z];if(!Q)return Z;let f=this.cache.tasks.findIndex((L)=>L.id===J),H=this.cache.tasks.findIndex((L)=>L.id===Q);if(f<0||H<0||f===H)return Z;let[B]=this.cache.tasks.splice(f,1);if(!B)return Z;let V=f<H?H-1:H,j=z>0?V+1:V,K={...B,updatedAt:new Date().toISOString()};return this.cache.tasks.splice(j,0,K),this.dirtyIds.add(String(J)),await this.save(),this.notifyListeners(),K}async reorder(J){this.assertLoaded();let z=J.map((G)=>{let Q=this.cache.tasks.findIndex((H)=>H.id===G.id);if(!(Q>=0?this.cache.tasks[Q]:void 0))throw Error(`task not found: ${G.id}`);return{idx:Q,position:G.position}}),Y=!1,Z=new Map,X=[];for(let{idx:G,position:Q}of z){let f=this.cache.tasks[G];if(!f||f.position===Q)continue;if(!Z.has(G))Z.set(G,f);if(this.cache.tasks[G]={...f,position:Q},!this.dirtyIds.has(f.id))this.dirtyIds.add(f.id),X.push(f.id);Y=!0}if(!Y)return;try{await this.save()}catch(G){for(let[Q,f]of Z)this.cache.tasks[Q]=f;for(let Q of X)this.dirtyIds.delete(Q);throw G}this.notifyListeners()}async archive(J,z="done"){return this.update(J,{status:z})}async remove(J){this.assertLoaded();let z=this.cache.tasks.findIndex((Y)=>Y.id===J);if(z<0)return;this.cache.tasks.splice(z,1),this.dirtyIds.delete(String(J)),this.removedIds.add(String(J)),await this.save(),this.notifyListeners()}async _unlinkForTests(){try{await oU(this.path)}catch(J){if(J.code!=="ENOENT")throw J}try{await oU(this.tmpPath)}catch(J){if(J.code!=="ENOENT")throw J}this.cache={version:fY,tasks:[]},this.loaded=!1,this.dirtyIds.clear(),this.removedIds.clear()}assertLoaded(){if(!this.loaded)throw Error("TaskIndexStore: call load() before any other method")}snapshot(){return{version:fY,tasks:this.cache.tasks.slice()}}notifyListeners(){if(this.listeners.size===0)return;let J=this.cache.tasks.slice();for(let z of this.listeners)try{z(J)}catch(Y){console.error("[kobe TaskIndexStore] listener threw on notify:",Y)}}}function tU(J,z){if(!J||typeof J!=="object"||Array.isArray(J))return console.warn(`[kobe] tasks.json at ${z} is not an object; recovering with empty index.`),{version:fY,tasks:[]};let Y=J,Z=Y.version;if(Z!==void 0&&Z!==1&&Z!==2&&Z!==3)return console.warn(`[kobe] tasks.json at ${z} has unsupported version=${String(Z)}; recovering with empty index.`),{version:fY,tasks:[]};let X=Array.isArray(Y.tasks)?Y.tasks:[],G=[];for(let Q of X){let f=sb(Q);if(f)G.push(f);else console.warn(`[kobe] dropping malformed task entry from ${z}: ${JSON.stringify(Q)}`)}return{version:fY,tasks:G}}function sb(J){if(!J||typeof J!=="object")return null;let z=J;if(typeof z.id!=="string"||typeof z.title!=="string"||typeof z.repo!=="string"||typeof z.branch!=="string"||typeof z.worktreePath!=="string"||typeof z.status!=="string"||typeof z.createdAt!=="string"||typeof z.updatedAt!=="string")return null;if(!YS(z.status))return null;let Y=typeof z.archived==="boolean"?z.archived:!1,Z=z.kind==="main"?"main":"task",X=Z==="main"?z.status==="in_progress"||z.status==="done"?"backlog":z.status:z.status==="done"&&!Y?"in_progress":z.status;return{id:KG(z.id),title:z.title,repo:z.repo,branch:z.branch,worktreePath:z.worktreePath,status:X,archived:Y,pinned:typeof z.pinned==="boolean"?z.pinned:!1,kind:Z,vendor:rY(typeof z.vendor==="string"?z.vendor:void 0),prStatus:tb(z.prStatus),...typeof z.position==="number"&&Number.isFinite(z.position)?{position:z.position}:{},...typeof z.modelEffort==="string"&&z.modelEffort.length>0?{modelEffort:z.modelEffort}:{},createdAt:z.createdAt,updatedAt:z.updatedAt}}function tb(J){if(!J||typeof J!=="object"||Array.isArray(J))return;let z=J;if(!eb(z.provider)||!JS(z.lifecycle)||!zS(z.checkState))return;return{provider:z.provider,lifecycle:z.lifecycle,checkState:z.checkState,...typeof z.number==="number"&&Number.isFinite(z.number)?{number:z.number}:{},...typeof z.url==="string"?{url:z.url}:{},...typeof z.title==="string"?{title:z.title}:{},...typeof z.baseRef==="string"?{baseRef:z.baseRef}:{},...typeof z.headRef==="string"?{headRef:z.headRef}:{},...typeof z.reviewDecision==="string"?{reviewDecision:z.reviewDecision}:{},...typeof z.mergeable==="string"?{mergeable:z.mergeable}:{},...typeof z.lastCheckedAt==="string"?{lastCheckedAt:z.lastCheckedAt}:{},...typeof z.lastError==="string"?{lastError:z.lastError}:{}}}function eb(J){return J==="github"||J==="gitlab"||J==="bitbucket"||J==="unknown"}function JS(J){return J==="creating"||J==="open"||J==="ready_to_merge"||J==="merged"||J==="closed"||J==="unknown"}function zS(J){return J==="none"||J==="pending"||J==="passing"||J==="failing"||J==="unknown"}function YS(J){return J==="backlog"||J==="in_progress"||J==="in_review"||J==="done"||J==="canceled"||J==="error"}var _b=(J)=>new Promise((z)=>setTimeout(z,J)),pb=25,rb=5000,fY=3;var YQ=k(()=>{rJ();$1();iU();pU()});var lf;var eU=k(()=>{lf=class lf extends Error{args;cwd;exitCode;stdout;stderr;constructor(J,z,Y){super(`git ${J.join(" ")} (cwd=${z}) exited with code ${Y.exitCode}: ${Y.stderr.trim()||Y.stdout.trim()}`);this.name="GitCommandError",this.args=J,this.cwd=z,this.exitCode=Y.exitCode,this.stdout=Y.stdout,this.stderr=Y.stderr}}});var Y4={};f1(Y4,{GitWorktreeManager:()=>$f});import z4 from"fs";import Cz from"path";class $f{execDeps;constructor(J=ZS){this.execDeps=J}ctxFor(J){let z=this.execDeps.remoteBasePath(J);return z?{exec:this.execDeps.execForRepo(J),dir:z,remote:!0}:{exec:this.execDeps.execForRepo(J),dir:J,remote:!1}}async runGit(J,z,Y){if(!Y.cwd)throw Error("runGit(): cwd is required; refusing to inherit from process.cwd()");let Z=await J.run(["git",...z],{cwd:Y.cwd,env:Y.env}),X={stdout:Z.stdout,stderr:Z.stderr,exitCode:Z.exitCode};if(X.exitCode!==0&&!Y.allowFail)throw new lf(z,Y.cwd,X);return X}async create(J,z,Y,Z){let X=this.ctxFor(J);if(mY("repo",X.dir),mY("path",Y),!z)throw Error("create(): branch must be a non-empty string");if(await X.exec.exists(Y)){let H=await this.tryDescribe(X,Y);if(H){if(H.branch!==z)throw Error(`worktree at ${Y} is on branch '${H.branch}', refusing to hijack to '${z}'`);return H}throw Error(`create(): ${Y} exists but is not a registered git worktree`)}await X.exec.mkdirp(Cz.dirname(Y));let Q=await this.branchExists(X,z)?["worktree","add",Y,z]:Z?["worktree","add","-b",z,Y,Z]:["worktree","add","-b",z,Y];await this.runGit(X.exec,Q,{cwd:X.dir});let f=await this.tryDescribe(X,Y);if(!f)throw Error(`create(): git reported success but ${Y} is not a worktree`);if(f.branch!==z)throw Error(`create(): post-condition failed \u2014 expected branch '${z}' at ${Y}, got '${f.branch}'`);return f}async createForTask(J){let z=this.execDeps.remoteBasePath(J.repo),Y=z?J5(z,J.slug):oV(J.repo,J.slug);return this.create(J.repo,J.branch,Y,J.baseRef)}async remove(J,z){mY("path",J);let Y=this.execDeps.execForPath(J),Z=z?.force===!0;if(!await Y.exists(J)){let Q=await this.findRepoFor(Y,J);if(Q)await this.runGit(Y,["worktree","prune"],{cwd:Q,allowFail:!0});return}let X=await this.findRepoFor(Y,J);if(!X)throw Error(`remove(): ${J} is not a git worktree`);if(!Z){if(await this.isDirty(J))throw Error(`remove(): refusing to remove dirty worktree at ${J} (pass { force: true } to override)`)}let G=Z?["worktree","remove","--force",J]:["worktree","remove",J];await this.runGit(Y,G,{cwd:X}),await this.runGit(Y,["worktree","prune"],{cwd:X,allowFail:!0})}async list(J){let z=this.ctxFor(J);mY("repo",z.dir);let Y=await this.runGit(z.exec,["worktree","list","--porcelain"],{cwd:z.dir}),Z=xj(Y.stdout),X=[];for(let G of Z){if(!G.path)continue;let Q=z.remote?J4(z.dir,G.path):YB(J,G.path);if(!Q)continue;if(!G.branch||G.detached)continue;let f=ZQ(Q),H=ZQ(G.path),B=Cz.relative(f,H),V=Cz.join(Q,B),j=await this.isDirty(G.path);X.push({path:V,branch:G.branch,head:G.head??"",dirty:j})}return X}async listAll(J){let z=this.ctxFor(J);mY("repo",z.dir);let Y=await this.runGit(z.exec,["worktree","list","--porcelain"],{cwd:z.dir}),Z=xj(Y.stdout),X=z.remote?z.dir:ZQ(z.dir),G=[];for(let Q of Z){if(!Q.path)continue;if(Q.bare)continue;if(!Q.branch||Q.detached)continue;if((z.remote?Q.path:ZQ(Q.path))===X)continue;let f=await this.isDirty(Q.path);G.push({path:Q.path,branch:Q.branch,head:Q.head??"",dirty:f,kobeManaged:z.remote?J4(z.dir,Q.path)!==null:tV(J,Q.path),lastActivityMs:await this.lastActivityMs(z.exec,Q.path)})}return G.sort((Q,f)=>f.lastActivityMs-Q.lastActivityMs),G}async lastActivityMs(J,z){try{let Y=await this.runGit(J,["log","-1","--format=%ct"],{cwd:z}),Z=Number.parseInt(Y.stdout.trim(),10);if(Number.isFinite(Z)&&Z>0)return Z*1000}catch{}if(!J.isRemote)try{return z4.statSync(z).mtimeMs}catch{}return 0}async isDirty(J){mY("path",J);let z=this.execDeps.execForPath(J);return(await this.runGit(z,["status","--porcelain"],{cwd:J})).stdout.length>0}async currentBranch(J){mY("path",J);let z=this.execDeps.execForPath(J),Z=(await this.runGit(z,["rev-parse","--abbrev-ref","HEAD"],{cwd:J})).stdout.trim();if(!Z||Z==="HEAD")throw Error(`currentBranch(): ${J} is in detached-HEAD state`);return Z}async renameBranch(J,z,Y){if(mY("path",J),z===Y)return;let Z=this.execDeps.execForPath(J),X=await this.findRepoFor(Z,J);if(!X)throw Error(`renameBranch(): ${J} is not a git worktree`);await this.runGit(Z,["branch","-m",z,Y],{cwd:X})}async tryDescribe(J,z){let Y=await this.runGit(J.exec,["worktree","list","--porcelain"],{cwd:J.dir}),Z=xj(Y.stdout),X=(f)=>J.remote?f:ZQ(f),G=X(z),Q=Z.find((f)=>f.path&&X(f.path)===G);if(!Q||!Q.path||!Q.branch||Q.detached)return null;return{path:z,branch:Q.branch,head:Q.head??"",dirty:await this.isDirty(Q.path)}}async branchExists(J,z){let Y=`refs/heads/${z}`;return(await this.runGit(J.exec,["show-ref","--verify","--quiet",Y],{cwd:J.dir,allowFail:!0})).exitCode===0}async findRepoFor(J,z){try{let Y=await this.runGit(J,["rev-parse","--git-common-dir"],{cwd:z,allowFail:!0});if(Y.exitCode!==0)return null;let Z=Y.stdout.trim();if(!Z)return null;let X=Cz.isAbsolute(Z)?Z:Cz.resolve(z,Z);return Cz.basename(X)===".git"?Cz.dirname(X):X}catch(Y){if(Y instanceof lf)return null;throw Y}}}function xj(J){let z=[],Y=null;for(let Z of J.split(`
|
|
84
|
+
`)){let X=Z.replace(/\r$/,"");if(X===""){if(Y)z.push(Y);Y=null;continue}if(!Y)Y={};if(X.startsWith("worktree "))Y.path=X.slice(9);else if(X.startsWith("HEAD "))Y.head=X.slice(5);else if(X.startsWith("branch ")){let G=X.slice(7);Y.branch=G.startsWith("refs/heads/")?G.slice(11):G}else if(X==="detached")Y.detached=!0;else if(X==="bare")Y.bare=!0}if(Y)z.push(Y);return z}function J4(J,z){let Y=`${J.replace(/\/+$/,"")}/.kobe/worktrees`;return z===Y||z.startsWith(`${Y}/`)?Y:null}function mY(J,z){if(!z||!Cz.isAbsolute(z))throw Error(`${J} must be an absolute path, got: ${JSON.stringify(z)}`)}function ZQ(J){try{return z4.realpathSync(J)}catch{return Cz.resolve(J)}}var ZS;var uj=k(()=>{Uz();O1();eU();ZB();ZS={execForRepo:YX,execForPath:ZY,remoteBasePath(J){return oz(J)?.basePath??null}}});var af;var Z4=k(()=>{af=["web","completions","add","remove","adopt","export","repo","api","daemon","theme","skill","feedback","update","doctor","reset","reload","kill-sessions"]});var G4={};f1(G4,{runCompletionsSubcommand:()=>qS});function XS(){return`# kobe bash completions
|
|
86
85
|
# Source: kobe completions bash
|
|
87
86
|
|
|
88
87
|
_kobe() {
|
|
@@ -90,7 +89,7 @@ _kobe() {
|
|
|
90
89
|
COMPREPLY=()
|
|
91
90
|
cur="\${COMP_WORDS[COMP_CWORD]}"
|
|
92
91
|
prev="\${COMP_WORDS[COMP_CWORD-1]}"
|
|
93
|
-
opts="${
|
|
92
|
+
opts="${af.join(" ")}"
|
|
94
93
|
|
|
95
94
|
if [[ \${cur} == * ]] ; then
|
|
96
95
|
COMPREPLY=( $(compgen -W "\${opts}" -- \${cur}) )
|
|
@@ -98,47 +97,47 @@ _kobe() {
|
|
|
98
97
|
fi
|
|
99
98
|
}
|
|
100
99
|
complete -F _kobe kobe
|
|
101
|
-
`}function
|
|
100
|
+
`}function GS(){return`#compdef kobe
|
|
102
101
|
# kobe zsh completions
|
|
103
102
|
# Source: kobe completions zsh
|
|
104
103
|
|
|
105
104
|
_kobe() {
|
|
106
105
|
local -a subcommands
|
|
107
|
-
subcommands=(${
|
|
106
|
+
subcommands=(${af.map((z)=>`"${z}"`).join(" ")})
|
|
108
107
|
|
|
109
108
|
_arguments "1:subcommand:(\${subcommands})"
|
|
110
109
|
}
|
|
111
110
|
|
|
112
111
|
_kobe "$@"
|
|
113
|
-
`}function
|
|
112
|
+
`}function QS(){return`# kobe fish completions
|
|
114
113
|
# Source: kobe completions fish
|
|
115
114
|
|
|
116
|
-
${
|
|
115
|
+
${af.map((z)=>`complete -c kobe -f -a ${z}`).join(`
|
|
117
116
|
`)}
|
|
118
|
-
`}async function
|
|
117
|
+
`}async function qS(J){let z=J[0];if(z==="--help"||z==="-h"||z==="help"){process.stdout.write(X4);return}if(!z||z!=="bash"&&z!=="zsh"&&z!=="fish")process.stderr.write(`kobe completions: unknown shell "${z}"
|
|
119
118
|
|
|
120
|
-
${
|
|
119
|
+
${X4}`),process.exit(2);let Y;if(z==="bash")Y=XS();else if(z==="zsh")Y=GS();else Y=QS();process.stdout.write(Y)}var X4=`Usage: kobe completions <bash|zsh|fish>
|
|
121
120
|
|
|
122
121
|
Generate a shell completion script for kobe and print it to stdout.
|
|
123
122
|
Redirect the output to the appropriate file for your shell.
|
|
124
|
-
`;var
|
|
125
|
-
|
|
126
|
-
${
|
|
127
|
-
`),process.exit(2)}function
|
|
128
|
-
`)}function
|
|
129
|
-
`)}function
|
|
130
|
-
`);return}let z=
|
|
131
|
-
`);return}process.stdout.write(`${
|
|
132
|
-
`)}var
|
|
133
|
-
`)
|
|
134
|
-
|
|
135
|
-
${
|
|
136
|
-
`),process.exit(2)}function
|
|
137
|
-
`);return}let{getRepoInitOverride:
|
|
138
|
-
`)});import{spawnSync as
|
|
123
|
+
`;var Q4=k(()=>{Z4()});var B4={};f1(B4,{runExportSubcommand:()=>US,renderExport:()=>H4,displayWidth:()=>_f});function fS(J){return{id:J.id,title:J.title,status:J.status,archived:String(J.archived),vendor:J.vendor??_1,branch:J.branch,repo:J.repo,worktreePath:J.worktreePath}}function Ej(J){process.stderr.write(`kobe export: ${J}
|
|
124
|
+
|
|
125
|
+
${f4}
|
|
126
|
+
`),process.exit(2)}function HS(J){let z="json";for(let Y=0;Y<J.length;Y++){let Z=J[Y];if(Z==="--json")z="json";else if(Z==="--csv")z="csv";else if(Z==="--format"){let X=J[++Y];if(X===void 0)Ej("--format requires a value (json, csv, or table)");z=q4(X)}else if(Z.startsWith("--format="))z=q4(Z.slice(9));else Ej(`unexpected argument "${Z}"`)}return z}function q4(J){if(J==="json"||J==="csv"||J==="table")return J;Ej(`unknown format "${J}" (expected json, csv, or table)`)}function BS(J){if(/[",\r\n]/.test(J))return`"${J.replace(/"/g,'""')}"`;return J}function jS(J){let z=[XQ.join(",")];for(let Y of J)z.push(XQ.map((Z)=>BS(Y[Z])).join(","));return z.join(`
|
|
127
|
+
`)}function _f(J){let z=0;for(let Y of J)z+=WS(Y.codePointAt(0));return z}function WS(J){if(J>=768&&J<=879||J>=6832&&J<=6911||J>=7616&&J<=7679||J>=8203&&J<=8207||J>=8234&&J<=8238||J>=8288&&J<=8292||J>=8400&&J<=8447||J>=65024&&J<=65039||J===65279)return 0;if(J>=4352&&J<=4447||J===9001||J===9002||J>=11904&&J<=12350||J>=12353&&J<=13311||J>=13312&&J<=19903||J>=19968&&J<=40959||J>=40960&&J<=42191||J>=44032&&J<=55203||J>=63744&&J<=64255||J>=65040&&J<=65049||J>=65072&&J<=65135||J>=65280&&J<=65376||J>=65504&&J<=65510||J>=127744&&J<=129791||J>=131072&&J<=262141)return 2;return 1}function VS(J,z){return J+" ".repeat(Math.max(0,z-_f(J)))}function KS(J){let z={};for(let X of XQ)z[X]=Math.max(_f(X),...J.map((G)=>_f(G[X])));let Y=(X)=>XQ.map((G)=>VS(X[G],z[G])).join(" ").trimEnd(),Z={};for(let X of XQ)Z[X]=X;return[Y(Z),...J.map(Y)].join(`
|
|
128
|
+
`)}function H4(J,z){let Y=J.map(fS);if(z==="json")return JSON.stringify(Y,null,2);if(z==="csv")return jS(Y);return KS(Y)}async function US(J){if(J.includes("--help")||J.includes("-h")||J.includes("help")){process.stdout.write(`${f4}
|
|
129
|
+
`);return}let z=HS(J),{TaskIndexStore:Y}=await Promise.resolve().then(() => (YQ(),yj)),Z=new Y;await Z.load();let X=Z.list();if(X.length===0&&z==="table"){process.stdout.write(`no tasks
|
|
130
|
+
`);return}process.stdout.write(`${H4(X,z)}
|
|
131
|
+
`)}var f4,XQ;var j4=k(()=>{rJ();f4=["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(`
|
|
132
|
+
`),XQ=["id","title","status","archived","vendor","branch","repo","worktreePath"]});var K4={};f1(K4,{runRepoSubcommand:()=>FS});import{readFileSync as DS}from"fs";import{resolve as pf}from"path";function cY(J){process.stderr.write(`kobe repo: ${J}
|
|
133
|
+
|
|
134
|
+
${V4}
|
|
135
|
+
`),process.exit(2)}function W4(J){try{return DS(pf(process.cwd(),J),"utf8")}catch(z){cY(`cannot read ${J}: ${z instanceof Error?z.message:String(z)}`)}}function LS(J){let z={};for(let Y=0;Y<J.length;Y++){let Z=J[Y],X=()=>{let G=J[++Y];if(G===void 0)cY(`${Z} requires a value`);return G};if(Z==="--init-script")z.initScript=X();else if(Z==="--init-script-file")z.initScript=W4(X());else if(Z==="--init-prompt")z.initPrompt=X();else if(Z==="--init-prompt-file")z.initPrompt=W4(X());else if(Z.startsWith("-"))cY(`unknown flag "${Z}"`);else if(z.path===void 0)z.path=Z;else cY(`unexpected argument "${Z}"`)}return z}function MS(J){let z,Y=!1,Z=!1;for(let X of J)if(X==="--init-script")Y=!0;else if(X==="--init-prompt")Z=!0;else if(X.startsWith("-"))cY(`unknown flag "${X}"`);else if(z===void 0)z=X;else cY(`unexpected argument "${X}"`);if(!Y&&!Z)Y=!0,Z=!0;return{path:z,clearScript:Y,clearPrompt:Z}}async function FS(J){let[z,...Y]=J;if(z===void 0||z==="--help"||z==="-h"||z==="help"){process.stdout.write(`${V4}
|
|
136
|
+
`);return}let{getRepoInitOverride:Z,setRepoInitOverride:X,resolveRepoRoot:G}=await Promise.resolve().then(() => (O1(),sz)),{existsSync:Q}=await import("fs"),{join:f}=await import("path");if(z==="show"){let[H]=Y.filter((L)=>!L.startsWith("-")),B=G(pf(process.cwd(),H??".")),V=Z(B),j=Q(f(B,".kobe","init.sh")),K=Q(f(B,".kobe","init-prompt.md"));console.log(`repo: ${B}`),console.log(` .kobe/init.sh: ${j?"present (wins)":"absent"}`),console.log(` .kobe/init-prompt.md: ${K?"present (wins)":"absent"}`),console.log(` override initScript: ${V.initScript?PX(V.initScript):"(unset)"}`),console.log(` override initPrompt: ${V.initPrompt?PX(V.initPrompt):"(unset)"}`);return}if(z==="set"){let H=LS(Y);if(H.initScript===void 0&&H.initPrompt===void 0)cY("set needs at least one of --init-script(-file) / --init-prompt(-file)");let B=G(pf(process.cwd(),H.path??".")),V=X(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?PX(V.initScript):"(unset)"}`),console.log(` initPrompt: ${V.initPrompt?PX(V.initPrompt):"(unset)"}`);return}if(z==="unset"){let{path:H,clearScript:B,clearPrompt:V}=MS(Y),j=G(pf(process.cwd(),H??".")),K=X(j,{...B?{initScript:""}:{},...V?{initPrompt:""}:{}});console.log(`cleared override for ${j}`),console.log(` initScript: ${K.initScript?PX(K.initScript):"(unset)"}`),console.log(` initPrompt: ${K.initPrompt?PX(K.initPrompt):"(unset)"}`);return}cY(`unknown verb "${z}"`)}function PX(J){let z=J.replace(/\s+/g," ").trim();return z.length>60?`"${z.slice(0,57)}\u2026"`:`"${z}"`}var V4;var U4=k(()=>{V4=["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(`
|
|
137
|
+
`)});import{spawnSync as OS}from"child_process";function gS(J){let[z,Y]=J.split("/");if(!z||!Y)throw Error(`invalid GitHub repository slug: ${J}`);return{owner:z,name:Y}}function D4(J,z){let Y=J.trim();if(!Y)throw Error(`${z} is required`);return Y}function L4(J,z){let Y=z?.map((Z)=>typeof Z.message==="string"?Z.message:null).filter((Z)=>!!Z);if(Y&&Y.length>0)return Y.join("; ");return J.trim()||"GitHub CLI returned an empty response"}function M4(J,z,Y){let Z=["api","graphql","-f",`query=${J}`];for(let[H,B]of Object.entries(z))Z.push("-f",`${H}=${B}`);let X=Y.spawn("gh",Z,{encoding:"utf8"});if(X.error)throw Error(`failed to run gh: ${X.error.message}`);let G=typeof X.stdout==="string"?X.stdout:String(X.stdout??""),Q=typeof X.stderr==="string"?X.stderr:String(X.stderr??""),f;try{f=JSON.parse(G)}catch{throw Error(`failed to parse gh response: ${L4(Q,void 0)}`)}if((X.status??0)!==0||f.errors?.length)throw Error(L4(Q,f.errors));if(!f.data)throw Error("GitHub CLI response did not include data");return f.data}function CS(J){return`${J}
|
|
139
138
|
|
|
140
139
|
---
|
|
141
|
-
Submitted from kobe ${p0}.`}function
|
|
140
|
+
Submitted from kobe ${p0}.`}function hX(J,z={}){let Y=D4(J.title,"feedback title"),Z=CS(D4(J.body,"feedback body")),X=(z.repoSlug??sY)();if(!X)throw Error("package repository is not a GitHub repository");let{owner:G,name:Q}=gS(X),f=J.categorySlug?.trim()||wj,H={spawn:z.spawn??OS},V=M4(AS,{owner:G,name:Q},H).repository,j=V?.id;if(!j)throw Error(`GitHub repository not found: ${X}`);let K=V.discussionCategories?.nodes?.find((O)=>O.slug===f);if(!K)throw Error(`GitHub Discussion category not found: ${f}`);let A=M4(RS,{repositoryId:j,categoryId:K.id,title:Y,body:Z},H).createDiscussion?.discussion;if(!A?.url||typeof A.number!=="number")throw Error("GitHub did not return the created Discussion");return{number:A.number,url:A.url}}var wj="feedback",AS=`
|
|
142
141
|
query($owner: String!, $name: String!) {
|
|
143
142
|
repository(owner: $owner, name: $name) {
|
|
144
143
|
id
|
|
@@ -151,7 +150,7 @@ query($owner: String!, $name: String!) {
|
|
|
151
150
|
}
|
|
152
151
|
}
|
|
153
152
|
}
|
|
154
|
-
`,
|
|
153
|
+
`,RS=`
|
|
155
154
|
mutation($repositoryId: ID!, $categoryId: ID!, $title: String!, $body: String!) {
|
|
156
155
|
createDiscussion(input: {
|
|
157
156
|
repositoryId: $repositoryId,
|
|
@@ -165,74 +164,74 @@ mutation($repositoryId: ID!, $categoryId: ID!, $title: String!, $body: String!)
|
|
|
165
164
|
}
|
|
166
165
|
}
|
|
167
166
|
}
|
|
168
|
-
`;var
|
|
169
|
-
`)}function
|
|
170
|
-
`)}function
|
|
171
|
-
`)}function
|
|
172
|
-
`),process.exit(Y)}async function
|
|
173
|
-
`);return}let
|
|
174
|
-
${
|
|
175
|
-
`);return}try{yj(G,X.flags)}catch(f){if(f instanceof M1)fY(f.message,f.code,2);fY(f instanceof Error?f.message:String(f),"BAD_FLAG",2)}let Q=null;if(!G.offline)try{Q=await W4()}catch(f){fY(`could not reach or start the kobe daemon: ${f instanceof Error?f.message:String(f)}`,"BAD_DAEMON",2)}try{let f=await G.handler(g4(G,X.flags,Q?.client??null,Ej));bS(f,X.pretty)}catch(f){if(f instanceof M1)fY(f.message,f.code,1);fY(f instanceof Error?f.message:String(f),"RPC_ERROR",1)}finally{Q?.close()}}var Ij=2,wZ=10,U4,AS,M1,K1,af,PZ,hZ,gS,M4,SS,Ej;var N4=k(()=>{sJ();lf();P1();xq();i1();MJ();V4();U4=["backlog","in_progress","in_review","done","canceled","error"],AS=["open","doing","hold","done"];M1=class M1 extends Error{code;constructor(J,z){super(J);this.code=z}};K1={repo:(J=!0)=>({name:"repo",type:"string",required:J,placeholder:"PATH",description:"Repo root (git toplevel). Relative paths resolve against $PWD."}),taskId:(J=!0)=>({name:"task-id",type:"string",required:J,placeholder:"ID",description:"Target task id (from `list` / `add`)."}),vendor:()=>({name:"vendor",type:"enum",values:n1,placeholder:"V",description:"Engine vendor for the task."}),title:()=>({name:"title",type:"string",placeholder:"T",description:"Human task title."}),prompt:(J,z)=>({name:"prompt",type:"string",required:J,placeholder:"TEXT",description:z})},af={"spawn-task":"add"},PZ={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"]};hZ=[{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:RS},{name:"list",summary:"List all tasks (incl. archived). Returns { tasks }.",flags:[],handler:PS},{name:"get-task",summary:"Read one task's metadata. `.running` = its tmux session is live.",flags:[K1.taskId()],handler:wS},{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:[K1.repo(),K1.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."},K1.vendor(),{name:"status",type:"enum",values:U4,default:"backlog",description:"Initial lifecycle status."},{name:"pin",type:"bool",description:"Pin the task to the top of the sidebar."},K1.prompt(!1,"Optional first message \u2014 when set, materializes the worktree, starts the engine, and pastes it.")],handler:yS},{name:"fan-out",summary:`Spawn N tasks of ONE prompt in a single call (parallel attempts). Capped at ${wZ}.`,flags:[K1.repo(),K1.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)."},K1.vendor(),K1.title(),{name:"base-branch",type:"string",placeholder:"B",description:"Base ref for every worktree."}],handler:dS},{name:"send",summary:"Paste a follow-up prompt into a task's running engine (one full turn). Defaults to the active task.",flags:[K1.taskId(!1),K1.prompt(!0,"Text pasted + submitted into the engine pane.")],handler:xS},{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:[K1.taskId(!0),K1.prompt(!0,"Text delivered into the task's engine session.")],handler:uS},{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:[K1.taskId(!0),{name:"text",type:"string",required:!0,placeholder:"TEXT",description:"One line: the verified conclusion another session could act on."}],handler:ES},{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:Sj,placeholder:"SLUG",description:"Discussion category slug."}],offline:!0,handler:iS},{name:"issue-list",summary:"List daemon-owned issues for a repo.",flags:[K1.repo()],handler:(J)=>gz(J,"issue.list",{repoRoot:J.args.requirePath("repo")})},{name:"issue-create",summary:"Create a daemon-owned issue for a repo.",flags:[K1.repo(),{name:"title",type:"string",required:!0,placeholder:"T",description:"Issue title."},{name:"body",type:"string",placeholder:"TEXT",description:"Issue body."}],handler:(J)=>gz(J,"issue.mutate",{repoRoot:J.args.requirePath("repo"),op:{type:"create",title:J.args.require("title"),body:J.args.str("body")}})},{name:"issue-set-status",summary:"Set a daemon-owned issue's status.",flags:[K1.repo(),{name:"id",type:"int",required:!0,placeholder:"N",description:"Issue id."},{name:"status",type:"enum",required:!0,values:AS,description:"New issue status."}],handler:(J)=>gz(J,"issue.mutate",{repoRoot:J.args.requirePath("repo"),op:{type:"setStatus",id:J.args.int("id"),status:J.args.requireEnum("status")}})},{name:"issue-update",summary:"Update a daemon-owned issue's title and/or body.",flags:[K1.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:TS},{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."},K1.repo(!1)],handler:nS},{name:"rename",summary:"Set a task's title.",flags:[K1.taskId(),{name:"title",type:"string",required:!0,placeholder:"T",description:"New title."}],handler:(J)=>gz(J,"task.rename",{taskId:J.args.require("task-id"),title:J.args.require("title")})},{name:"set-branch",summary:"Rename a task's branch (git branch -m if materialized, else recorded).",flags:[K1.taskId(),{name:"branch",type:"string",required:!0,placeholder:"B",description:"New branch name."}],handler:(J)=>gz(J,"task.setBranch",{taskId:J.args.require("task-id"),branch:J.args.require("branch")})},{name:"set-vendor",summary:"Change a task's engine vendor (takes effect on next session rebuild).",flags:[K1.taskId(),{...K1.vendor(),required:!0}],handler:(J)=>gz(J,"task.setVendor",{taskId:J.args.require("task-id"),vendor:J.args.requireEnum("vendor")})},{name:"set-status",summary:"Set a task's lifecycle status.",flags:[K1.taskId(),{name:"status",type:"enum",required:!0,values:U4,description:"New status."}],handler:(J)=>gz(J,"task.status",{taskId:J.args.require("task-id"),status:J.args.requireEnum("status")})},{name:"archive",summary:"Archive (or with --archived=false, unarchive) a task. Non-destructive: worktree/branch/history stay.",flags:[K1.taskId(),{name:"archived",type:"bool",default:"true",description:"true to archive, false to unarchive."}],handler:vS},{name:"pin",summary:"Pin (or with --pinned=false, unpin) a task to the top of the sidebar.",flags:[K1.taskId(),{name:"pinned",type:"bool",default:"true",description:"true to pin, false to unpin."}],handler:(J)=>gz(J,"task.pin",{taskId:J.args.require("task-id"),pinned:J.args.bool("pinned")??!0})},{name:"set-active",summary:"Set the shared active task (the focus every Tasks pane highlights). Pass --none to clear.",flags:[K1.taskId(!1),{name:"none",type:"bool",description:"Clear the active task instead of setting one."}],handler:hS},{name:"ensure-worktree",summary:"Materialize a task's git worktree on disk now (without starting an engine). Returns { worktreePath }.",flags:[K1.taskId()],handler:(J)=>gz(J,"task.ensureWorktree",{taskId:J.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:[K1.taskId(),{name:"force",type:"bool",description:"Delete even with uncommitted changes."}],handler:mS},{name:"discover-adoptable",summary:"List existing git worktrees in a repo not yet tracked as kobe tasks. Returns { worktrees }.",flags:[K1.repo()],handler:(J)=>gz(J,"worktree.discoverAdoptable",{repo:J.args.requirePath("repo")})},{name:"adopt",summary:"Import an existing git worktree as a kobe task. Returns { task }.",flags:[K1.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)."},K1.vendor(),K1.title()],handler:cS}],gS=hZ.map((J)=>J.name);M4=[{name:"pretty",type:"bool",description:"Pretty-print stdout JSON."},{name:"help",type:"bool",description:"Show usage for the verb and exit."}];SS={sessionExists:V1,ensureSession:async(J)=>(await Promise.resolve().then(() => (zJ(),vJ))).ensureSession(J),waitForEnginePane:gX,pasteAndSubmit:CX,resolveEngineLaunchInit:async(J,z,Y)=>(await Promise.resolve().then(() => (NZ(),If))).resolveEngineLaunchInit(J,z,Y),engineCommand:oJ};Ej={isTaskRunning:(J)=>V1(C1(J)),deliverPrompt:(J,z,Y)=>R4(J,z,Y),resolveRepoRoot:async(J)=>(await Promise.resolve().then(() => (F1(),oz))).resolveMainRepoRoot(J),defaultVendor:async()=>{let{getPersistedString:J}=await Promise.resolve().then(() => (F1(),oz)),z=J("lastSelectedVendor")?.trim();return z?z:void 0},readWorktreeChanges:async(J)=>(await Promise.resolve().then(() => (SZ(),OU))).readWorktreeChanges(J),tearDownSession:async(J)=>{let z=C1(J);await Pz(z).catch(()=>{}),await eJ(z).catch(()=>{})}}});var I4={};f1(I4,{updatePlan:()=>k4,runUpdateSubcommand:()=>_S,parseUpdateArgs:()=>b4});import{spawnSync as aS}from"child_process";function k4(){return{command:"sh",args:["-c",$z],display:$z}}function b4(J){let z=!1;for(let Y=0;Y<J.length;Y+=1){let G=J[Y];if(G==="--help"||G==="-h"||G==="help")return{help:!0,dryRun:z};if(G==="--dry-run"){z=!0;continue}process.stderr.write(`kobe update: unknown argument "${G}"
|
|
176
|
-
|
|
177
|
-
`),
|
|
178
|
-
`))}async function
|
|
179
|
-
`),Y.stdout.write(`running: ${
|
|
180
|
-
`),
|
|
181
|
-
`),Y.exit(1);Y.exit(
|
|
182
|
-
`),process.exit(1)}function
|
|
183
|
-
|
|
184
|
-
`),
|
|
167
|
+
`;var rf=k(()=>{MJ()});async function F4(J={}){let z=J.mode==="require-running"?await zz():await gz();if(!z)return null;return{client:z,close:()=>z.close()}}var O4=k(()=>{FJ()});var y4={};f1(y4,{verbSchema:()=>cj,verbHelp:()=>S4,validateAgainstSpec:()=>vj,schemaIndex:()=>k4,runApiSubcommand:()=>rS,parseFlags:()=>hj,parseAgentsSpec:()=>C4,invokeVerb:()=>pS,fullSchema:()=>b4,findVerb:()=>GQ,deliverPrompt:()=>I4,defaultApiRuntime:()=>dj,apiUsage:()=>of,VerbArgs:()=>mj,VERB_GROUPS:()=>mX,VERBS:()=>cX,FANOUT_CAP:()=>vX,ApiError:()=>M1,API_VERBS:()=>bS,API_SCHEMA_VERSION:()=>Pj});import{resolve as A4}from"path";function g4(J){for(let[z,Y]of Object.entries(mX))if(Y.includes(J))return z;return"other"}async function kS(J){let z=J.args.str("verb");if(z){let Z=GQ(z);if(!Z)throw new M1(`unknown verb: ${z}`,"BAD_VERB");return cj(Z)}let Y=J.args.str("group");if(Y)return IS(Y);if(J.args.bool("all"))return b4();return k4()}function GQ(J){let z=sf[J]??J;return cX.find((Y)=>Y.name===z)}function hj(J,z=new Set){let Y=new Map,Z=!1,X=!1;for(let G=0;G<J.length;G++){let Q=J[G];if(!Q.startsWith("--")&&Q!=="-h")throw new M1(`unexpected positional arg: ${Q}`,"BAD_FLAG");if(Q==="-h"){X=!0;continue}let f=Q.indexOf("=");if(f!==-1){let V=Q.slice(2,f),j=Q.slice(f+1);if(V==="pretty")Z=j!=="false"&&j!=="0";else if(V==="help")X=j!=="false"&&j!=="0";else Y.set(V,j);continue}let H=Q.slice(2);if(H==="pretty"){Z=!0;continue}if(H==="help"){X=!0;continue}if(z.has(H)){Y.set(H,"true");continue}let B=J[G+1];if(B===void 0||B.startsWith("--"))throw new M1(`flag --${H} requires a value`,"BAD_FLAG");Y.set(H,B),G+=1}return{flags:Y,pretty:Z,help:X}}function vj(J,z){let Y=new Set(J.flags.map((Z)=>Z.name));for(let Z of z.keys())if(!Y.has(Z))throw new M1(`unknown flag --${Z} for "${J.name}". Run \`kobe api ${J.name} --help\``,"BAD_FLAG");for(let Z of J.flags){if(Z.required&&!z.get(Z.name))throw new M1(`--${Z.name} is required for "${J.name}"`,"MISSING_FLAG");if(Z.type==="enum"&&Z.values){let X=z.get(Z.name);if(X!==void 0&&!Z.values.includes(X))throw new M1(`--${Z.name} must be one of ${Z.values.join(", ")}`,"BAD_FLAG")}if(Z.type==="int"){let X=z.get(Z.name);if(X!==void 0){let G=Number.parseInt(X,10);if(!Number.isInteger(G)||G<=0)throw new M1(`--${Z.name} must be a positive integer`,"BAD_FLAG")}}}}class mj{verb;flags;constructor(J,z){this.verb=J;this.flags=z}spec(J){let z=this.verb.flags.find((Y)=>Y.name===J);if(!z)throw Error(`internal: --${J} is not declared on verb "${this.verb.name}"`);return z}str(J){this.spec(J);let z=this.flags.get(J);return z&&z.length>0?z:void 0}require(J){let z=this.str(J);if(z===void 0)throw new M1(`--${J} is required`,"MISSING_FLAG");return z}enumOf(J){let z=this.spec(J),Y=this.str(J);if(Y===void 0)return;if(z.values&&!z.values.includes(Y))throw new M1(`--${J} must be one of ${z.values.join(", ")}`,"BAD_FLAG");return Y}requireEnum(J){return this.require(J),this.enumOf(J)}vendor(){return this.enumOf("vendor")}bool(J){this.spec(J);let z=this.str(J);if(z===void 0)return;if(["true","1","yes"].includes(z))return!0;if(["false","0","no"].includes(z))return!1;throw new M1(`--${J} must be a boolean (true/false)`,"BAD_FLAG")}int(J){this.spec(J);let z=this.str(J);if(z===void 0)return;let Y=Number.parseInt(z,10);if(!Number.isInteger(Y)||Y<=0)throw new M1(`--${J} must be a positive integer`,"BAD_FLAG");return Y}path(J){let z=this.str(J);return z===void 0?void 0:A4(process.cwd(),z)}requirePath(J){return A4(process.cwd(),this.require(J))}}function C4(J){let z=[];for(let Y of J.split(",")){let Z=Y.trim();if(!Z)continue;let X=Z.indexOf(":");if(X===-1)throw new M1(`--agents entry "${Z}" must be vendor:count`,"BAD_FLAG");let G=Z.slice(0,X);if(!l1.includes(G))throw new M1(`--agents vendor "${G}" must be one of ${l1.join(", ")}`,"BAD_FLAG");let Q=Number.parseInt(Z.slice(X+1),10);if(!Number.isInteger(Q)||Q<=0)throw new M1(`--agents count for "${G}" must be a positive integer`,"BAD_FLAG");if(z.length+Q>vX)throw new M1(`--agents requests ${z.length+Q} agents, exceeds the cap of ${vX}`,"BAD_FLAG");for(let f=0;f<Q;f++)z.push(G)}if(z.length===0)throw new M1('--agents specified no agents (e.g. "claude:2,codex:1")',"BAD_FLAG");return z}function SS(J){return{name:J.name,type:J.type,required:J.required??!1,...J.values?{values:J.values}:{},...J.default!==void 0?{default:J.default}:{},...J.placeholder?{placeholder:J.placeholder}:{},description:J.description}}function cj(J){return{name:J.name,group:g4(J.name),summary:J.summary,offline:J.offline??!1,flags:J.flags.map(SS)}}function k4(){return{apiVersion:Pj,kobeVersion:p0,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:mX,verbs:cX.map((J)=>({name:J.name,group:g4(J.name),summary:J.summary})),globalFlags:N4,aliases:sf}}function IS(J){let z=mX[J];if(!z)throw new M1(`unknown group: ${J}. Groups: ${Object.keys(mX).join(", ")}`,"BAD_FLAG");return{group:J,verbs:z.map((Y)=>{let Z=GQ(Y);return{name:Y,summary:Z?.summary??""}})}}function b4(){return{apiVersion:Pj,kobeVersion:p0,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:N4,aliases:sf,groups:mX,verbs:cX.map(cj)}}function TS(J){return J.flags.map((z)=>{let Y=z.type==="enum"&&z.values?z.values.join("|"):z.placeholder??(z.type==="bool"?"":"X"),Z=Y?`--${z.name} ${Y}`:`--${z.name}`;return z.required?Z:`[${Z}]`}).join(" ")}function S4(J){let z=[`kobe api ${J.name} ${TS(J)}`.trimEnd(),"",J.summary,""],Y=Object.entries(sf).find(([,Z])=>Z===J.name)?.[0];if(Y)z.push(`Alias: ${Y}`,"");if(J.flags.length>0){z.push("Flags:");for(let Z of J.flags){let X=Z.required?" (required)":"",G=Z.default!==void 0?` [default: ${Z.default}]`:"",Q=Z.type==="enum"&&Z.values?` {${Z.values.join("|")}}`:"";z.push(` --${Z.name}${Q}${X}${G} ${Z.description}`)}z.push("")}return z.push("Global: [--pretty] [--help]"),z.join(`
|
|
168
|
+
`)}function of(){return["usage: kobe api <verb> [flags] [--pretty] [--help]","","Explore the full surface (names, flags, types) with: kobe api schema","","verbs:",...cX.map((z)=>` ${z.name.padEnd(18)} ${z.summary}`),"","Output is one JSON object on stdout (exit 0); errors are JSON on stderr (exit != 0)."].join(`
|
|
169
|
+
`)}function yS(J,z){let Y=z?JSON.stringify(J,null,2):JSON.stringify(J);process.stdout.write(`${Y}
|
|
170
|
+
`)}function HY(J,z,Y=1){process.stderr.write(`${JSON.stringify({error:{message:J,code:z}})}
|
|
171
|
+
`),process.exit(Y)}async function I4(J,z,Y,Z=xS){let X=z.worktreePath;if(!X)X=(await J.request("task.ensureWorktree",{taskId:z.id})).worktreePath;if(!X)throw new M1(`task ${z.id} has no worktree`,"NO_WORKTREE");let G=N1(z.id),Q=await Z.sessionExists(G);if(!Q){let B=await Z.resolveEngineLaunchInit(z.repo??"",X,{kind:"none"});if(!await Z.ensureSession({name:G,cwd:X,command:Z.engineCommand(z.vendor),taskId:z.id,vendor:z.vendor,repo:z.repo,launchInit:B}))throw new M1(`failed to start tmux session for ${z.id}`,"SESSION_FAILED")}let{pane:f,ready:H}=await Z.waitForEnginePane(G,!Q);if(!f)throw new M1(`no engine pane in session ${G}`,"NO_ENGINE_PANE");return await Z.pasteAndSubmit(f,Y),{session:G,pane:f,started:!Q,engineReady:H}}async function uS(J){let z=null,Y=J.onChannel("active-task",(Z)=>{z=Z.taskId});try{await J.subscribe()}finally{Y()}return z}function dJ(J){if(!J.client)throw new M1("daemon required","BAD_DAEMON");return J.client}async function Nz(J,z,Y){return dJ(J).request(z,Y)}async function ES(J){let z=J.args.str("title"),Y=J.args.str("body");if(z===void 0&&Y===void 0)throw new M1("issue-update requires --title and/or --body","MISSING_FLAG");return Nz(J,"issue.mutate",{repoRoot:J.args.requirePath("repo"),op:{type:"update",id:J.args.int("id"),title:z,body:Y}})}async function wS(J){let z=dJ(J),{args:Y,runtime:Z}=J,G={repo:await Z.resolveRepoRoot(Y.requirePath("repo"))},Q=Y.str("title");if(Q)G.title=Q;let f=Y.str("branch");if(f)G.branch=f;let H=Y.str("base-branch");if(H)G.baseRef=H;let B=Y.vendor()??await Z.defaultVendor();if(B)G.vendor=B;let V=await z.request("task.create",G),j=V.taskId;await z.request("task.setActive",{taskId:j});let K=Y.enumOf("status");if(K)await z.request("task.status",{taskId:j,status:K});let L=Y.bool("pin");if(L!==void 0)await z.request("task.pin",{taskId:j,pinned:L});let A=V.task;if(K||L!==void 0)A=(await z.request("task.get",{taskId:j})).task;let O=Y.str("prompt");if(!O)return{taskId:j,task:A,started:!1};let R=await J.runtime.deliverPrompt(z,{id:j,worktreePath:A.worktreePath,vendor:A.vendor,repo:A.repo},O);return A=(await z.request("task.get",{taskId:j})).task,{taskId:j,task:A,started:R.started,engineReady:R.engineReady,session:R.session}}async function PS(J){let z=dJ(J),Y=J.args.require("prompt"),Z=J.args.str("task-id");if(!Z){let Q=await uS(z);if(!Q)throw new M1("no --task-id given and no active task \u2014 open a task first or pass --task-id","MISSING_TARGET");Z=Q}let X=await z.request("task.get",{taskId:Z}),G=await J.runtime.deliverPrompt(z,{id:Z,worktreePath:X.task.worktreePath,vendor:X.task.vendor,repo:X.task.repo},Y);return{ok:!0,taskId:Z,session:G.session,started:G.started,engineReady:G.engineReady}}async function hS(J){let z=dJ(J),Y=J.args.require("task-id"),Z=J.args.require("prompt");return await z.request("session.deliver",{taskId:Y,text:Z,source:"dispatcher"}),{ok:!0,taskId:Y,routed:"session.deliver"}}async function vS(J){let z=dJ(J),Y=J.args.require("task-id"),Z=J.args.require("text");return await z.request("note.file",{taskId:Y,text:Z})}async function mS(J){let z=dJ(J),Y=J.args.require("task-id"),Z=await z.request("task.get",{taskId:Y}),X=await J.runtime.isTaskRunning(Y);return{task:Z.task,running:X}}async function cS(J){return dJ(J).request("task.list")}async function dS(J){let z=dJ(J),Z=J.args.bool("none")?null:J.args.require("task-id");return await z.request("task.setActive",{taskId:Z}),{ok:!0,activeTaskId:Z}}async function nS(J){let z=dJ(J),Y=J.args.require("task-id"),Z=J.args.bool("archived")??!0,X=await z.request("task.archive",{taskId:Y,archived:Z});if(Z)await J.runtime.tearDownSession(Y);return X}async function iS(J){let z=dJ(J),Y=J.args.require("task-id"),Z=J.args.bool("force")??!1,X=await z.request("task.delete",{taskId:Y,force:Z});return await J.runtime.tearDownSession(Y),X}async function lS(J){let z=dJ(J),{args:Y}=J,Z={repo:Y.requirePath("repo"),worktreePath:Y.requirePath("worktree")},X=Y.str("branch");if(X)Z.branch=X;let G=Y.vendor();if(G)Z.vendor=G;let Q=Y.str("title");if(Q)Z.title=Q;return z.request("worktree.adopt",Z)}async function $S(J){let z=dJ(J),{args:Y,runtime:Z}=J,X=await Z.resolveRepoRoot(Y.requirePath("repo")),G=Y.require("prompt"),Q=Y.str("title"),f=Y.str("base-branch"),H=Y.str("agents"),B=await Z.defaultVendor(),V=H?C4(H):Array(Y.int("count")??1).fill(Y.vendor()??B??"claude");if(V.length>vX)throw new M1(`fan-out of ${V.length} exceeds the cap of ${vX} \u2014 spawn in batches`,"BAD_FLAG");let j=[];for(let K of V){let L={repo:X,vendor:K};if(Q)L.title=Q;if(f)L.baseRef=f;let A=await z.request("task.create",L),O=await J.runtime.deliverPrompt(z,{id:A.taskId,worktreePath:A.task.worktreePath,vendor:K,repo:A.task.repo},G);j.push({taskId:A.taskId,vendor:K,started:O.started,engineReady:O.engineReady,session:O.session})}return{count:j.length,tasks:j}}async function aS(J){let z=dJ(J),{args:Y,runtime:Z}=J,X=Y.str("task-ids"),G=Y.path("repo"),Q;if(X)Q=X.split(",").map((H)=>H.trim()).filter(Boolean);else if(G){let H=await Z.resolveRepoRoot(G),{tasks:B}=await z.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 M1("collect needs --task-ids id1,id2 or --repo PATH","MISSING_TARGET");let f=[];for(let H of Q){let{task:B}=await z.request("task.get",{taskId:H}),V=await Z.isTaskRunning(H),j=B.worktreePath?await Z.readWorktreeChanges(B.worktreePath):{added:0,deleted:0};f.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:f}}async function _S(J){return{ok:!0,discussion:hX({title:J.args.require("title"),body:J.args.require("body"),categorySlug:J.args.str("category")})}}function T4(J,z,Y,Z){return{args:new mj(J,z),client:Y,runtime:Z}}async function pS(J,z,Y){let Z=GQ(J);if(!Z)throw new M1(`unknown verb: ${J}`,"BAD_VERB");let X=new Set(Z.flags.filter((Q)=>Q.type==="bool").map((Q)=>Q.name)),G=hj(z,X);return vj(Z,G.flags),Z.handler(T4(Z,G.flags,Y.client,Y.runtime??dj))}async function rS(J){let[z,...Y]=J;if(!z||z==="--help"||z==="-h"||z==="help"){if(!z)HY(of(),"MISSING_VERB",2);process.stdout.write(`${of()}
|
|
172
|
+
`);return}let Z=GQ(z);if(!Z)HY(`unknown verb: ${z}
|
|
173
|
+
${of()}`,"BAD_VERB",2);let X=new Set(Z.flags.filter((f)=>f.type==="bool").map((f)=>f.name)),G;try{G=hj(Y,X)}catch(f){if(f instanceof M1)HY(f.message,f.code,2);HY(f instanceof Error?f.message:String(f),"BAD_FLAG",2)}if(G.help){process.stdout.write(`${S4(Z)}
|
|
174
|
+
`);return}try{vj(Z,G.flags)}catch(f){if(f instanceof M1)HY(f.message,f.code,2);HY(f instanceof Error?f.message:String(f),"BAD_FLAG",2)}let Q=null;if(!Z.offline)try{Q=await F4()}catch(f){HY(`could not reach or start the kobe daemon: ${f instanceof Error?f.message:String(f)}`,"BAD_DAEMON",2)}try{let f=await Z.handler(T4(Z,G.flags,Q?.client??null,dj));yS(f,G.pretty)}catch(f){if(f instanceof M1)HY(f.message,f.code,1);HY(f instanceof Error?f.message:String(f),"RPC_ERROR",1)}finally{Q?.close()}}var Pj=2,vX=10,R4,NS,M1,K1,sf,mX,cX,bS,N4,xS,dj;var x4=k(()=>{sJ();rf();h1();$q();$1();MJ();O4();R4=["backlog","in_progress","in_review","done","canceled","error"],NS=["open","doing","hold","done"];M1=class M1 extends Error{code;constructor(J,z){super(J);this.code=z}};K1={repo:(J=!0)=>({name:"repo",type:"string",required:J,placeholder:"PATH",description:"Repo root (git toplevel). Relative paths resolve against $PWD."}),taskId:(J=!0)=>({name:"task-id",type:"string",required:J,placeholder:"ID",description:"Target task id (from `list` / `add`)."}),vendor:()=>({name:"vendor",type:"enum",values:l1,placeholder:"V",description:"Engine vendor for the task."}),title:()=>({name:"title",type:"string",placeholder:"T",description:"Human task title."}),prompt:(J,z)=>({name:"prompt",type:"string",required:J,placeholder:"TEXT",description:z})},sf={"spawn-task":"add"},mX={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"]};cX=[{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:kS},{name:"list",summary:"List all tasks (incl. archived). Returns { tasks }.",flags:[],handler:cS},{name:"get-task",summary:"Read one task's metadata. `.running` = its tmux session is live.",flags:[K1.taskId()],handler:mS},{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:[K1.repo(),K1.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."},K1.vendor(),{name:"status",type:"enum",values:R4,default:"backlog",description:"Initial lifecycle status."},{name:"pin",type:"bool",description:"Pin the task to the top of the sidebar."},K1.prompt(!1,"Optional first message \u2014 when set, materializes the worktree, starts the engine, and pastes it.")],handler:wS},{name:"fan-out",summary:`Spawn N tasks of ONE prompt in a single call (parallel attempts). Capped at ${vX}.`,flags:[K1.repo(),K1.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)."},K1.vendor(),K1.title(),{name:"base-branch",type:"string",placeholder:"B",description:"Base ref for every worktree."}],handler:$S},{name:"send",summary:"Paste a follow-up prompt into a task's running engine (one full turn). Defaults to the active task.",flags:[K1.taskId(!1),K1.prompt(!0,"Text pasted + submitted into the engine pane.")],handler:PS},{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:[K1.taskId(!0),K1.prompt(!0,"Text delivered into the task's engine session.")],handler:hS},{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:[K1.taskId(!0),{name:"text",type:"string",required:!0,placeholder:"TEXT",description:"One line: the verified conclusion another session could act on."}],handler:vS},{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:_S},{name:"issue-list",summary:"List daemon-owned issues for a repo.",flags:[K1.repo()],handler:(J)=>Nz(J,"issue.list",{repoRoot:J.args.requirePath("repo")})},{name:"issue-create",summary:"Create a daemon-owned issue for a repo.",flags:[K1.repo(),{name:"title",type:"string",required:!0,placeholder:"T",description:"Issue title."},{name:"body",type:"string",placeholder:"TEXT",description:"Issue body."}],handler:(J)=>Nz(J,"issue.mutate",{repoRoot:J.args.requirePath("repo"),op:{type:"create",title:J.args.require("title"),body:J.args.str("body")}})},{name:"issue-set-status",summary:"Set a daemon-owned issue's status.",flags:[K1.repo(),{name:"id",type:"int",required:!0,placeholder:"N",description:"Issue id."},{name:"status",type:"enum",required:!0,values:NS,description:"New issue status."}],handler:(J)=>Nz(J,"issue.mutate",{repoRoot:J.args.requirePath("repo"),op:{type:"setStatus",id:J.args.int("id"),status:J.args.requireEnum("status")}})},{name:"issue-update",summary:"Update a daemon-owned issue's title and/or body.",flags:[K1.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:ES},{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."},K1.repo(!1)],handler:aS},{name:"rename",summary:"Set a task's title.",flags:[K1.taskId(),{name:"title",type:"string",required:!0,placeholder:"T",description:"New title."}],handler:(J)=>Nz(J,"task.rename",{taskId:J.args.require("task-id"),title:J.args.require("title")})},{name:"set-branch",summary:"Rename a task's branch (git branch -m if materialized, else recorded).",flags:[K1.taskId(),{name:"branch",type:"string",required:!0,placeholder:"B",description:"New branch name."}],handler:(J)=>Nz(J,"task.setBranch",{taskId:J.args.require("task-id"),branch:J.args.require("branch")})},{name:"set-vendor",summary:"Change a task's engine vendor (takes effect on next session rebuild).",flags:[K1.taskId(),{...K1.vendor(),required:!0}],handler:(J)=>Nz(J,"task.setVendor",{taskId:J.args.require("task-id"),vendor:J.args.requireEnum("vendor")})},{name:"set-status",summary:"Set a task's lifecycle status.",flags:[K1.taskId(),{name:"status",type:"enum",required:!0,values:R4,description:"New status."}],handler:(J)=>Nz(J,"task.status",{taskId:J.args.require("task-id"),status:J.args.requireEnum("status")})},{name:"archive",summary:"Archive (or with --archived=false, unarchive) a task. Non-destructive: worktree/branch/history stay.",flags:[K1.taskId(),{name:"archived",type:"bool",default:"true",description:"true to archive, false to unarchive."}],handler:nS},{name:"pin",summary:"Pin (or with --pinned=false, unpin) a task to the top of the sidebar.",flags:[K1.taskId(),{name:"pinned",type:"bool",default:"true",description:"true to pin, false to unpin."}],handler:(J)=>Nz(J,"task.pin",{taskId:J.args.require("task-id"),pinned:J.args.bool("pinned")??!0})},{name:"set-active",summary:"Set the shared active task (the focus every Tasks pane highlights). Pass --none to clear.",flags:[K1.taskId(!1),{name:"none",type:"bool",description:"Clear the active task instead of setting one."}],handler:dS},{name:"ensure-worktree",summary:"Materialize a task's git worktree on disk now (without starting an engine). Returns { worktreePath }.",flags:[K1.taskId()],handler:(J)=>Nz(J,"task.ensureWorktree",{taskId:J.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:[K1.taskId(),{name:"force",type:"bool",description:"Delete even with uncommitted changes."}],handler:iS},{name:"discover-adoptable",summary:"List existing git worktrees in a repo not yet tracked as kobe tasks. Returns { worktrees }.",flags:[K1.repo()],handler:(J)=>Nz(J,"worktree.discoverAdoptable",{repo:J.args.requirePath("repo")})},{name:"adopt",summary:"Import an existing git worktree as a kobe task. Returns { task }.",flags:[K1.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)."},K1.vendor(),K1.title()],handler:lS}],bS=cX.map((J)=>J.name);N4=[{name:"pretty",type:"bool",description:"Pretty-print stdout JSON."},{name:"help",type:"bool",description:"Show usage for the verb and exit."}];xS={sessionExists:V1,ensureSession:async(J)=>(await Promise.resolve().then(() => (YJ(),vJ))).ensureSession(J),waitForEnginePane:kG,pasteAndSubmit:bG,resolveEngineLaunchInit:async(J,z,Y)=>(await Promise.resolve().then(() => (SX(),Pf))).resolveEngineLaunchInit(J,z,Y),engineCommand:oJ};dj={isTaskRunning:(J)=>V1(N1(J)),deliverPrompt:(J,z,Y)=>I4(J,z,Y),resolveRepoRoot:async(J)=>(await Promise.resolve().then(() => (O1(),sz))).resolveMainRepoRoot(J),defaultVendor:async()=>{let{getPersistedString:J}=await Promise.resolve().then(() => (O1(),sz)),z=J("lastSelectedVendor")?.trim();return z?z:void 0},readWorktreeChanges:async(J)=>(await Promise.resolve().then(() => (yX(),bU))).readWorktreeChanges(J),tearDownSession:async(J)=>{let z=N1(J);await hz(z).catch(()=>{}),await eJ(z).catch(()=>{})}}});var P4={};f1(P4,{updatePlan:()=>u4,runUpdateSubcommand:()=>sS,parseUpdateArgs:()=>E4});import{spawnSync as oS}from"child_process";function u4(){return{command:"sh",args:["-c",az],display:az}}function E4(J){let z=!1;for(let Y=0;Y<J.length;Y+=1){let Z=J[Y];if(Z==="--help"||Z==="-h"||Z==="help")return{help:!0,dryRun:z};if(Z==="--dry-run"){z=!0;continue}process.stderr.write(`kobe update: unknown argument "${Z}"
|
|
175
|
+
|
|
176
|
+
`),w4(process.stderr),process.exit(2)}return{help:!1,dryRun:z}}function w4(J){J.write(["Usage: kobe update [--dry-run]","","Runs kobe's GitHub-hosted update script.","","Default command:",` ${az}`,"","Script URL:",` ${vQ}`,"","Manual fallback:",` ${iH()}`,"","Examples:"," kobe update"," kobe update --dry-run",""].join(`
|
|
177
|
+
`))}async function sS(J,z){let Y={spawn:z?.spawn??oS,stdout:z?.stdout??process.stdout,stderr:z?.stderr??process.stderr,exit:z?.exit??((Q)=>process.exit(Q))},Z=E4(J);if(Z.help){w4(Y.stdout);return}let X=u4();if(Y.stdout.write(`kobe ${p0} -> latest
|
|
178
|
+
`),Y.stdout.write(`running: ${X.display}
|
|
179
|
+
`),Z.dryRun)return;let G=Y.spawn(X.command,X.args,{stdio:"inherit"});if(G.error)Y.stderr.write(`kobe update: failed to run ${X.command}: ${G.error.message}
|
|
180
|
+
`),Y.exit(1);Y.exit(G.status??1)}var h4=k(()=>{MJ()});var d4={};f1(d4,{runThemeSubcommand:()=>HI});import{existsSync as m4,mkdirSync as tS,readFileSync as eS,readdirSync as JI,unlinkSync as zI,writeFileSync as YI}from"fs";import{basename as v4,join as ij,resolve as ZI}from"path";function BY(J){process.stderr.write(`kobe theme: ${J}
|
|
181
|
+
`),process.exit(1)}function dY(J){process.stderr.write(`kobe theme: ${J}
|
|
182
|
+
|
|
183
|
+
`),c4(),process.exit(2)}function XI(){let J=[];J.push("bundled:");for(let Z of[...nj].sort())J.push(` ${Z} [built-in]`);let z=MX(),Y=[];try{Y=JI(z).filter((Z)=>Z.endsWith(".json")).sort()}catch{}if(J.push(""),J.push(`user (${z}):`),Y.length===0)J.push(" (none)");else for(let Z of Y){let X=Z.slice(0,-5),G=ij(z,Z),Q=nj.includes(X)?" (overrides built-in)":"";J.push(` ${X}${Q} ${G}`)}process.stdout.write(`${J.join(`
|
|
185
184
|
`)}
|
|
186
|
-
`)}async function
|
|
185
|
+
`)}async function GI(J){if(/^https?:\/\//i.test(J)){let G;try{G=await fetch(J)}catch(V){BY(`failed to fetch ${J}: ${V instanceof Error?V.message:String(V)}`)}if(!G.ok)BY(`failed to fetch ${J}: HTTP ${G.status} ${G.statusText}`);let Q=await G.text(),f=J.split(/[?#]/)[0]??J,H=v4(f)||"theme.json",B=H.endsWith(".json")?H.slice(0,-5):H;return{text:Q,defaultName:B}}let z=ZI(process.cwd(),J),Y;try{Y=eS(z,"utf8")}catch(G){BY(`failed to read ${z}: ${G instanceof Error?G.message:String(G)}`)}let Z=v4(z),X=Z.endsWith(".json")?Z.slice(0,-5):Z;return{text:Y,defaultName:X}}function QI(J){let z=null,Y,Z=!1;for(let X=0;X<J.length;X+=1){let G=J[X];if(G==="--force"||G==="-f"){Z=!0;continue}if(G==="--name"||G==="-n"){let Q=J[X+1];if(Q===void 0)dY("--name requires a value");Y=Q,X+=1;continue}if(G.startsWith("--name=")){Y=G.slice(7);continue}if(G.startsWith("--"))dY(`unknown flag: ${G}`);if(z===null){z=G;continue}dY(`unexpected positional argument: ${G}`)}if(z===null)dY("missing <source> (URL or path to theme JSON)");return{source:z,opts:{name:Y,force:Z}}}async function qI(J){let{source:z,opts:Y}=QI(J),{text:Z,defaultName:X}=await GI(z),G;try{G=JSON.parse(Z)}catch(V){BY(`source is not valid JSON: ${V instanceof Error?V.message:String(V)}`)}let Q=Jf(G);if(!Q.ok)BY(`source is not a valid kobe theme: ${Q.reason}`);let f=Y.name??X;if(!f||!/^[a-zA-Z0-9._-]+$/.test(f))BY(`invalid theme name "${f}" (use letters, digits, '.', '_', '-')`);let H=MX();tS(H,{recursive:!0});let B=ij(H,`${f}.json`);if(m4(B)&&!Y.force)BY(`${B} already exists (pass --force to overwrite)`);YI(B,`${JSON.stringify(Q.theme,null,2)}
|
|
187
186
|
`,"utf8"),process.stdout.write(`installed theme "${f}" -> ${B}
|
|
188
|
-
`)}function
|
|
189
|
-
`)}function
|
|
190
|
-
`))}async function
|
|
187
|
+
`)}function fI(J){let z=J[0];if(!z)dY("missing <name>");if(J.length>1)dY(`unexpected extra arguments after "${z}"`);if(nj.includes(z))BY(`"${z}" is a built-in theme and cannot be removed`);let Y=ij(MX(),`${z}.json`);if(!m4(Y))BY(`no user theme named "${z}" (looked for ${Y})`);zI(Y),process.stdout.write(`removed theme "${z}" (${Y})
|
|
188
|
+
`)}function c4(){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: ${MX()}`,"Schema: https://raw.githubusercontent.com/sma1lboy/kobe/main/packages/kobe/src/tui/context/theme/theme.schema.json",""].join(`
|
|
189
|
+
`))}async function HI(J){let[z,...Y]=J;if(!z||z==="--help"||z==="-h"||z==="help"){if(c4(),!z)process.exit(2);return}if(z==="list"||z==="ls"){if(Y.length>0)dY(`"${z}" takes no arguments`);XI();return}if(z==="add"){await qI(Y);return}if(z==="remove"||z==="rm"){fI(Y);return}dY(`unknown action "${z}" (try "list", "add", or "remove")`)}var nj;var n4=k(()=>{o1();zf();WB();nj=["claude","conductor","dracula","nord","opencode","osaka-jade","tokyonight"]});var a4={};f1(a4,{runFeedbackSubcommand:()=>jI,parseFeedbackArgs:()=>$4});import{readFileSync as i4}from"fs";function nY(J){process.stderr.write(`kobe feedback: ${J}
|
|
191
190
|
|
|
192
|
-
${
|
|
193
|
-
`),process.exit(2)}function
|
|
194
|
-
`);return}if(!z.title)
|
|
195
|
-
`)});import{homedir as
|
|
196
|
-
`))}function
|
|
191
|
+
${l4}
|
|
192
|
+
`),process.exit(2)}function BI(J){if(J==="-")return i4(0,"utf8");return i4(J,"utf8")}function $4(J){let z={help:!1};for(let Y=0;Y<J.length;Y++){let Z=J[Y];if(Z==="--help"||Z==="-h"||Z==="help")return{...z,help:!0};if(Z==="--title"){if(z.title=J[++Y],z.title===void 0)nY("--title requires a value");continue}if(Z==="--body"){if(z.body=J[++Y],z.body===void 0)nY("--body requires a value");continue}if(Z==="--body-file"){if(z.bodyFile=J[++Y],z.bodyFile===void 0)nY("--body-file requires a value");continue}if(Z==="--category"){if(z.category=J[++Y],z.category===void 0)nY("--category requires a value");continue}nY(`unexpected argument "${Z}"`)}return z}async function jI(J){let z=$4(J);if(z.help){process.stdout.write(`${l4}
|
|
193
|
+
`);return}if(!z.title)nY("--title is required");if(z.body&&z.bodyFile)nY("pass either --body or --body-file, not both");let Y=z.bodyFile?BI(z.bodyFile):z.body;if(!Y)nY("--body or --body-file is required");let Z=hX({title:z.title,body:Y,categorySlug:z.category});console.log(`created Discussion #${Z.number}: ${Z.url}`)}var l4;var _4=k(()=>{rf();l4=["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(`
|
|
194
|
+
`)});import{homedir as WI}from"os";async function p4(J={}){let z=J.homeDir??process.env.KOBE_HOME_DIR??WI(),Y=new wX({homeDir:z});await Y.load();let Z=new $f,X=new Eq({store:Y,worktrees:Z});return{homeDir:z,orchestrator:X,store:Y,worktrees:Z,async close(){X.dispose()}}}var r4=k(()=>{RG();YQ();uj()});var s4={};f1(s4,{runDaemonSubcommand:()=>KI});function o4(J){J.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(`
|
|
195
|
+
`))}function VI(){let J=process.env.KOBE_DAEMON_WEB_PORT?.trim();if(J==="0"||J==="off"||J==="false")return;let z=J?Number.parseInt(J,10):5174;return Number.isFinite(z)&&z>0?z:5174}async function KI(J){let[z="status"]=J,Y=Iz(),Z=tz();if(z==="--help"||z==="-h"||z==="help"){o4(process.stdout);return}if(z==="status"){let f=new aJ(Y);try{let H=await f.request("daemon.status");console.log(JSON.stringify(H,null,2))}catch{let H=await xX(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{f.close()}return}if(z==="stop"){let f=new aJ(Y);try{await f.request("daemon.stop"),console.log("kobe daemon: stop requested")}catch{console.log(`kobe daemon: no daemon running at ${Y}`)}finally{f.close()}return}if(z==="restart"){await uX(Y,Z),(await gz()).close(),console.log(`kobe daemon: restarted, listening on ${Y}`);return}if(z!=="start")process.stderr.write(`kobe daemon: unknown command "${z}"
|
|
197
196
|
|
|
198
|
-
`),
|
|
197
|
+
`),o4(process.stderr),process.exit(2);NK();let X=await p4(),G=await wU(X.orchestrator,{socketPath:Y,pidPath:Z,homeDir:X.homeDir,webPort:VI(),webHost:process.env.KOBE_WEB_HOST,webStaticDir:process.env.KOBE_DAEMON_WEB_STATIC_DIR,onStop:async()=>{await X.close()}});if(console.log(`kobe daemon: listening on ${G.socketPath}`),G.webPort)console.log(`kobe daemon: web transport listening on http://127.0.0.1:${G.webPort}`);let Q=async()=>{await G.close(),await X.close(),process.exit(0)};process.once("SIGINT",()=>void Q()),process.once("SIGTERM",()=>void Q())}var t4=k(()=>{XG();FJ();df();nZ();cf();r4()});import{existsSync as UI,readFileSync as DI}from"fs";import{homedir as LI}from"os";import{join as e4}from"path";function aj(J={}){return["skills","add",MI,"--skill","kobe","--agent",J.agent??tf]}function ef(J={}){return`npx ${aj(J).join(" ")}`}function _j(J={}){let z=J.home??LI(),Y=J.cwd??process.cwd();return[e4(z,JD),e4(Y,JD)]}function FI(J){let z=J.match(/kobe-skill-version:\s*(\d+)/);return z?Number.parseInt(z[1],10):null}function qQ(J){let z=_j(J).find((X)=>UI(X));if(!z)return{installed:!1,installedVersion:null,currentVersion:lj,stale:!1};let Y=null;try{Y=FI(DI(z,"utf8"))}catch{Y=null}let Z=Y===null||Y<lj;return{installed:!0,installedVersion:Y,currentVersion:lj,stale:Z}}function zD(){let J=qQ();if(!J.installed){if(C1($j)==="1")return;s1($j,"1"),process.stderr.write(`
|
|
199
198
|
kobe: the kobe agent skill isn't installed \u2014 install it so your coding agent can drive kobe via \`kobe api\`:
|
|
200
|
-
${
|
|
201
|
-
(wraps \`${
|
|
199
|
+
${QQ}
|
|
200
|
+
(wraps \`${ef()}\`; check anytime with \`kobe doctor\`)
|
|
202
201
|
|
|
203
|
-
`);return}if(J.stale){let z=`${
|
|
202
|
+
`);return}if(J.stale){let z=`${$j}:v${J.currentVersion}`;if(C1(z)==="1")return;s1(z,"1");let Y=J.installedVersion===null?"an older":`v${J.installedVersion}`;process.stderr.write(`
|
|
204
203
|
kobe: your kobe agent skill is out of date (${Y}; this kobe wants v${J.currentVersion}) \u2014 refresh it so \`kobe api\` guidance matches:
|
|
205
|
-
${
|
|
204
|
+
${QQ}
|
|
206
205
|
|
|
207
|
-
`)}}var
|
|
208
|
-
`).filter((
|
|
209
|
-
`)}catch{return""}}async function
|
|
210
|
-
`).filter((Y)=>Y.trim().length>0).length}async function
|
|
206
|
+
`)}}var lj=2,JD=".claude/skills/kobe/SKILL.md",QQ="kobe skill install",MI="Sma1lboy/kobe",tf="claude-code",$j="skillHintSeen";var JH=k(()=>{O1()});var zH={};f1(zH,{runResetSubcommand:()=>xI,runReloadSubcommand:()=>uI,runDoctorSubcommand:()=>TI});import{existsSync as OI,readFileSync as XD,statSync as AI}from"fs";import{unlink as RI}from"fs/promises";import{join as GD}from"path";import{createInterface as gI}from"readline";function CI(J){try{return process.kill(J,0),!0}catch(z){return z.code==="EPERM"}}async function NI(J){let z=new aJ(J);try{return await z.request("daemon.status")}catch{return null}finally{z.close()}}function kI(J){let z=Math.floor(J/1000);if(z<60)return`${z}s`;let Y=Math.floor(z/60);if(Y<60)return`${Y}m ${z%60}s`;return`${Math.floor(Y/60)}h ${Y%60}m`}function bI(J){if(J<1024)return`${J} B`;if(J<1048576)return`${(J/1024).toFixed(1)} KB`;return`${(J/1048576).toFixed(1)} MB`}function pj(J){try{let z=AI(J);return`present (${bI(z.size)}, modified ${z.mtime.toISOString()})`}catch{return"absent"}}function QD(J){try{let z=JSON.parse(XD(J,"utf8"));return Array.isArray(z.tasks)?z.tasks.length:null}catch{return null}}function SI(J,z){try{return XD(J,"utf8").split(`
|
|
207
|
+
`).filter((Z)=>Z.trim().length>0).slice(-z).join(`
|
|
208
|
+
`)}catch{return""}}async function rj(J){let z=Bun.spawn(CZ(...J),{stdin:"ignore",stdout:"pipe",stderr:"ignore"}),[Y,Z]=await Promise.all([new Response(z.stdout).text().catch(()=>""),z.exited]);return{code:Z,stdout:Y}}async function II(){if(!await Pz())return 0;let{code:J,stdout:z}=await rj(["list-sessions","-F","#{session_name}"]);if(J!==0)return 0;return z.split(`
|
|
209
|
+
`).filter((Y)=>Y.trim().length>0).length}async function TI(J=[]){if(J.includes("--help")||J.includes("-h")||J.includes("help")){process.stdout.write(["Usage: kobe doctor","","Read-only diagnosis of the daemon / tmux / state. Takes no options.",""].join(`
|
|
211
210
|
`));return}let z=J.find((j)=>j.length>0);if(z!==void 0)process.stderr.write([`kobe doctor: unexpected argument "${z}"`,"","Usage: kobe doctor (read-only; takes no options)",""].join(`
|
|
212
|
-
`)),process.exit(2);let Y=
|
|
213
|
-
`))f.push(` \u2502 ${L}`)}}if(f.push(""),await
|
|
214
|
-
`))}async function
|
|
215
|
-
`))}async function
|
|
211
|
+
`)),process.exit(2);let Y=Iz(),Z=tz(),X=aQ(),G=GD(fJ(),"tasks.json"),Q=lJ(),f=["kobe doctor",` home: ${Sz()}`,` socket: ${Y}`,""],H=await NI(Y);if(H){let j=typeof H.daemonPid==="number"?H.daemonPid:"?",K=typeof H.uptimeMs==="number"?kI(H.uptimeMs):"?",L=typeof H.taskCount==="number"?H.taskCount:"?",A=typeof H.attachedClients==="number"?H.attachedClients:"?";f.push(`daemon: \u2713 running (pid ${j}, up ${K}, ${L} task(s), ${A} client(s))`);let O=typeof H.kobeVersion==="string"?H.kobeVersion:void 0;if(O&&O!==p0)f.push(` \u26A0 stale build: daemon is v${O}, you launched v${p0}`),f.push(" \u2192 run `kobe daemon restart`, then `kobe reload` in any open kobe sessions");else if(O)f.push(` build: v${O}`)}else{let j=await xX(Z);if(j&&CI(j))f.push(`daemon: \u2717 WEDGED \u2014 process alive (pid ${j}) but not accepting connections`),f.push(" \u2192 run `kobe reset` to kill it, then relaunch kobe");else if(j)f.push(`daemon: \u2717 not running (stale pidfile \u2192 pid ${j} is gone)`),f.push(" \u2192 harmless; relaunch kobe, or `kobe reset` to clear the stale pidfile");else f.push("daemon: \u2717 not running (no pidfile)");if(OI(Y))f.push(` orphan socket file present: ${Y}`);let K=SI(X,8);if(K){f.push(" last lines of daemon.log:");for(let L of K.split(`
|
|
212
|
+
`))f.push(` \u2502 ${L}`)}}if(f.push(""),await Pz())f.push(`tmux: ${await II()} kobe session(s) on \`${Az}\` socket`);else f.push("tmux: \u2717 not found on PATH (task sessions need tmux)");f.push("");let B=qQ();if(!B.installed)f.push("skill: \u2717 kobe agent skill not installed (optional \u2014 lets a coding agent drive `kobe api`)"),f.push(` \u2192 ${QQ}`);else if(B.stale){let j=B.installedVersion===null?"unstamped":`v${B.installedVersion}`;f.push(`skill: \u26A0 kobe agent skill out of date (${j}; this kobe wants v${B.currentVersion})`),f.push(` \u2192 ${QQ}`)}else f.push(`skill: \u2713 kobe agent skill installed (v${B.installedVersion})`);f.push("");let V=QD(G);f.push(`tasks.json: ${pj(G)}${V===null?"":` \u2014 ${V} task(s)`}`),f.push(`state.json: ${pj(Q)}`),f.push(`daemon.log: ${pj(X)}`),console.log(f.join(`
|
|
213
|
+
`))}async function yI(J){let z=gI({input:process.stdin,output:process.stdout});try{let Y=await new Promise((Z)=>z.question(J,Z));return/^y(es)?$/i.test(Y.trim())}finally{z.close()}}async function YD(J,z){try{await RI(J),console.log(` removed ${z} (${J})`)}catch(Y){if(Y.code==="ENOENT")console.log(` ${z}: already absent`);else console.error(` failed to remove ${z} (${J}): ${Y instanceof Error?Y.message:String(Y)}`)}}function ZD(J){J.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(`
|
|
214
|
+
`))}async function xI(J){if(J.includes("--help")||J.includes("-h")||J.includes("help")){ZD(process.stdout);return}let z=new Set(["--hard","--yes","-y"]),Y=J.find((j)=>!z.has(j));if(Y!==void 0)process.stderr.write(`kobe reset: unknown argument "${Y}"
|
|
216
215
|
|
|
217
|
-
`),
|
|
218
|
-
re-run with --yes to proceed (no interactive terminal for a y/N prompt)`);return}if(!await
|
|
216
|
+
`),ZD(process.stderr),process.exit(2);let Z=J.includes("--hard"),X=J.includes("--yes")||J.includes("-y"),G=Iz(),Q=tz(),f=GD(fJ(),"tasks.json"),H=lJ();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 (${G})`),console.log(` \u2022 kill all kobe tmux sessions on the \`${Az}\` socket`),Z){let j=QD(f);console.log(` \u2022 DELETE the task index${j===null?"":` (${j} task(s))`} \u2014 ${f}`),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(!X){if(!process.stdin.isTTY){console.log(`
|
|
217
|
+
re-run with --yes to proceed (no interactive terminal for a y/N prompt)`);return}if(!await yI(Z?`
|
|
219
218
|
Stop daemon, kill sessions AND wipe task index? [y/N] `:`
|
|
220
|
-
Stop daemon and kill kobe sessions? [y/N] `)){console.log("aborted \u2014 nothing changed");return}}console.log("");let{pid:B,method:V}=await
|
|
221
|
-
kobe: reset complete. Relaunch kobe to start fresh.`)}async function
|
|
219
|
+
Stop daemon and kill kobe sessions? [y/N] `)){console.log("aborted \u2014 nothing changed");return}}console.log("");let{pid:B,method:V}=await uX(G,Q);if(console.log(V==="absent"?" daemon: was not running (cleared any stale socket/pidfile)":` daemon: stopped via ${V}${B?` (pid ${B})`:""}`),await Pz()){let{code:j}=await rj(["kill-server"]);console.log(j===0?` tmux: killed all sessions on \`${Az}\``:` tmux: no sessions on \`${Az}\``)}else console.log(" tmux: not installed \u2014 no sessions to kill");if(Z)await YD(f,"task index"),await YD(H,"UI state");console.log(`
|
|
220
|
+
kobe: reset complete. Relaunch kobe to start fresh.`)}async function uI(J=[]){if(J.includes("--help")||J.includes("-h")||J.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(`
|
|
222
221
|
`));return}let z=J.find((f)=>f.length>0);if(z!==void 0)process.stderr.write(`kobe reload: unexpected argument "${z}"
|
|
223
222
|
|
|
224
223
|
Usage: kobe reload (takes no options)
|
|
225
|
-
`),process.exit(2);if(!await
|
|
226
|
-
`).map((f)=>f.trim()).filter((f)=>f.length>0);if(
|
|
227
|
-
`).map((
|
|
228
|
-
`),process.exit(2);z=
|
|
229
|
-
`),process.stdout.write(` home: ${
|
|
230
|
-
`);else if(Q=await
|
|
231
|
-
`),process.stdout.write(` home: ${
|
|
224
|
+
`),process.exit(2);if(!await Pz()){console.log("kobe reload: tmux is not installed \u2014 no panes to reload");return}let{code:Y,stdout:Z}=await rj(["list-sessions","-F","#{session_name}"]);if(Y!==0){console.log(`kobe reload: no kobe tmux sessions on the \`${Az}\` socket`);return}let X=Z.split(`
|
|
225
|
+
`).map((f)=>f.trim()).filter((f)=>f.length>0);if(X.length===0){console.log(`kobe reload: no kobe tmux sessions on the \`${Az}\` socket`);return}let{refreshKobeWorkspacePanes:G}=await Promise.resolve().then(() => (YJ(),vJ)),Q=0;for(let f of X)try{await G(f),Q++}catch(H){console.error(` failed to reload session "${f}": ${H instanceof Error?H.message:String(H)}`)}console.log(`kobe: reloaded Tasks/Ops panes in ${Q}/${X.length} session(s) \u2014 engine panes untouched`)}var YH=k(()=>{XG();df();nZ();cf();o1();JH();h1();MJ()});var VD={};f1(VD,{runWebSubcommand:()=>dI});import{existsSync as HD}from"fs";import{homedir as EI}from"os";import{resolve as ZH}from"path";import{fileURLToPath as BD}from"url";function qD(){let J=process.env.KOBE_HOME_DIR?.trim();return J?`sandbox: ${J}`:`${EI()}/.kobe (production)`}function PI(){let J=BD(import.meta.url),z=[ZH(J,"../../../../kobe-web/dist"),ZH(J,"../../web-ui")];for(let Y of z)if(HD(`${Y}/index.html`))return Y;return}function hI(){let J=BD(import.meta.url),z=[ZH(J,"../../../../kobe-web/pty-server.mjs"),ZH(J,"../../web-ui/pty-server.mjs")];for(let Y of z)if(HD(Y))return Y;return}async function fD(J){try{let z=Bun.spawn(["lsof","-nP",`-iTCP:${J}`,"-sTCP:LISTEN","-t"],{stdout:"pipe",stderr:"ignore"});return(await new Response(z.stdout).text()).split(`
|
|
226
|
+
`).map((Z)=>Number.parseInt(Z.trim(),10)).filter((Z)=>Number.isFinite(Z)&&Z!==process.pid)}catch{return[]}}async function vI(J){let z;try{z=(await(await fetch(`http://localhost:${J}${WD}`,{signal:AbortSignal.timeout(800)})).text()).trim()}catch{return}if(z!==jD)throw Error(`PTY port ${J} is in use by a non-kobe service; refusing to replace it`);let Y=await fD(J);for(let X of Y)try{process.kill(X,"SIGTERM")}catch{}let Z=Date.now()+2000;while(Date.now()<Z){if((await fD(J)).length===0)return;await new Promise((X)=>setTimeout(X,100))}}async function mI(J){let z=hI();if(!z)return null;let Y=J.webPort+2;if(J.takeover)await vI(Y);return Bun.spawn(["node",z],{stdin:"ignore",stdout:"inherit",stderr:"inherit",env:{...process.env,KOBE_DAEMON_WEB_PORT:String(J.webPort),KOBE_PTY_PORT:String(Y)}})}async function cI(J,z){if(process.env.KOBE_DAEMON_WEB_PORT=String(J),z)process.env.KOBE_DAEMON_WEB_STATIC_DIR=z;await EX();let Y;try{Y=(await(await fetch(`http://127.0.0.1:${J}${WD}`,{signal:AbortSignal.timeout(1500)})).text()).trim()}catch(Z){throw Error(`daemon web transport is not reachable on :${J}; run \`kobe daemon restart\` so the daemon picks up this build (${Z instanceof Error?Z.message:String(Z)})`)}if(Y!==jD)throw Error(`unexpected daemon web health marker on :${J}: ${Y}`);if(z){if(!(await fetch(`http://127.0.0.1:${J}/`,{signal:AbortSignal.timeout(1500)})).ok)throw Error(`daemon web transport is up on :${J} but is not serving web assets; run \`kobe daemon restart\` so it picks up ${z}`)}}async function dI(J){if(J.includes("--help")||J.includes("-h")){process.stdout.write(wI);return}let z=5174,Y=J.indexOf("--port");if(Y!==-1){let Z=Number.parseInt(J[Y+1]??"",10);if(!Number.isFinite(Z))process.stderr.write(`kobe web: --port needs a number
|
|
227
|
+
`),process.exit(2);z=Z}try{let Z=J.includes("--routes-only")||J.includes("--bridge-only"),X=!J.includes("--no-takeover"),G=Z?void 0:PI();if(!Z&&!G)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 cI(z,G);let Q=null,f=!1,H=()=>{if(f)return;f=!0,Q?.kill(),Q=null};if(Z)process.stdout.write(`kobe daemon web transport listening on http://localhost:${z} (routes only)
|
|
228
|
+
`),process.stdout.write(` home: ${qD()}
|
|
229
|
+
`);else if(Q=await mI({webPort:z,takeover:X}),process.stdout.write(`kobe web \u2192 http://localhost:${z}
|
|
230
|
+
`),process.stdout.write(` home: ${qD()}
|
|
232
231
|
`),!Q)process.stderr.write(`kobe web: PTY server not found; terminal tabs will be unavailable
|
|
233
232
|
`);process.on("SIGINT",()=>{H(),process.exit(0)}),process.on("SIGTERM",()=>{H(),process.exit(0)}),Q?.exited.then(()=>{if(!f)process.stderr.write(`kobe web: PTY server exited
|
|
234
|
-
`),H(),process.exit(1)}),await new Promise(()=>{})}catch(
|
|
235
|
-
`),process.exit(1)}}var
|
|
233
|
+
`),H(),process.exit(1)}),await new Promise(()=>{})}catch(Z){process.stderr.write(`kobe web: ${Z instanceof Error?Z.message:String(Z)}
|
|
234
|
+
`),process.exit(1)}}var jD="kobe-web",WD="/__kobe_web",wI=`Usage: kobe web [options]
|
|
236
235
|
|
|
237
236
|
Launch the kobe web UI through daemon web transport on http://localhost:<port>.
|
|
238
237
|
|
|
@@ -241,43 +240,43 @@ Options:
|
|
|
241
240
|
--routes-only Routes only; Vite serves the SPA separately.
|
|
242
241
|
--no-takeover Reserved for compatibility; daemon owns the web port.
|
|
243
242
|
-h, --help Show this help.
|
|
244
|
-
`;var
|
|
245
|
-
`)}function
|
|
246
|
-
`),process.exit(2);z=
|
|
247
|
-
|
|
248
|
-
${
|
|
249
|
-
`),process.exit(2)}return z}async function
|
|
250
|
-
`),!z)process.exitCode=2;return}if(!
|
|
251
|
-
|
|
252
|
-
${
|
|
253
|
-
`),process.exit(2);if(z==="status"){let f=
|
|
254
|
-
`));return}if(z==="command"){process.stdout.write(`${
|
|
255
|
-
`);return}let
|
|
256
|
-
`);let Q=await Bun.spawn(["npx",...
|
|
243
|
+
`;var KD=k(()=>{FJ()});var DD={};f1(DD,{runSkillSubcommand:()=>iI});function oj(){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: ${tf}.`].join(`
|
|
244
|
+
`)}function UD(J){let z=tf;for(let Y=0;Y<J.length;Y++){let Z=J[Y];if(Z==="--agent"){let X=J[Y+1];if(!X||X.startsWith("--"))process.stderr.write(`kobe skill: --agent requires a value
|
|
245
|
+
`),process.exit(2);z=X,Y++}else if(Z.startsWith("--agent="))z=Z.slice(8);else process.stderr.write(`kobe skill: unknown flag "${Z}"
|
|
246
|
+
|
|
247
|
+
${oj()}
|
|
248
|
+
`),process.exit(2)}return z}async function iI(J){let[z,...Y]=J;if(!z||z==="--help"||z==="-h"||z==="help"){if(process.stdout.write(`${oj()}
|
|
249
|
+
`),!z)process.exitCode=2;return}if(!nI.includes(z))process.stderr.write(`kobe skill: unknown verb "${z}"
|
|
250
|
+
|
|
251
|
+
${oj()}
|
|
252
|
+
`),process.exit(2);if(z==="status"){let f=qQ(),[H,B]=_j(),V=!f.installed?"\u2717 not installed":f.stale?`\u26A0 out of date (installed ${f.installedVersion===null?"unstamped":`v${f.installedVersion}`}, this kobe wants v${f.currentVersion})`:`\u2713 installed (v${f.installedVersion})`;process.stdout.write([`kobe skill: ${V}`,` looked in: ${H}`,` ${B}`,f.installed&&!f.stale?"":" \u2192 run `kobe skill install` to install / refresh",""].join(`
|
|
253
|
+
`));return}if(z==="command"){process.stdout.write(`${ef({agent:UD(Y)})}
|
|
254
|
+
`);return}let Z=UD(Y),X=aj({agent:Z});process.stdout.write(`kobe skill: running \`npx ${X.join(" ")}\`
|
|
255
|
+
`);let Q=await Bun.spawn(["npx",...X],{stdin:"inherit",stdout:"inherit",stderr:"inherit"}).exited;if(Q!==0)process.stderr.write(`
|
|
257
256
|
kobe skill install failed (npx exited ${Q}). Is \`npx\` on PATH and are you online?
|
|
258
|
-
You can run it yourself: ${
|
|
257
|
+
You can run it yourself: ${ef({agent:Z})}
|
|
259
258
|
`),process.exit(Q||1);process.stdout.write(`kobe skill: installed.
|
|
260
|
-
`)}var
|
|
261
|
-
`))}var dI=500,iI="worktree-created",jD="externalWorktreeSync";var $j=k(()=>{FJ();T8();Xq();F1();i1()});function AD(J){var z;if(J>=55296&&J<=57343||J>1114111)return 65533;return(z=tI.get(J))!==null&&z!==void 0?z:J}var aj,tI,OD;var RD=k(()=>{tI=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]]),OD=(aj=String.fromCodePoint)!==null&&aj!==void 0?aj:(J)=>{let z="";if(J>65535)J-=65536,z+=String.fromCharCode(J>>>10&1023|55296),J=56320|J&1023;return z+=String.fromCharCode(J),z}});function gD(J){let z=typeof atob==="function"?atob(J):typeof Buffer.from==="function"?Buffer.from(J,"base64").toString("binary"):new Buffer(J,"base64").toString("binary"),Y=z.length&-2,G=new Uint16Array(Y/2);for(let Z=0,X=0;Z<Y;Z+=2){let Q=z.charCodeAt(Z),f=z.charCodeAt(Z+1);G[X++]=Q|f<<8}return G}var CD;var ND=k(()=>{CD=gD("QR08ALkAAgH6AYsDNQR2BO0EPgXZBQEGLAbdBxMISQrvCmQLfQurDKQNLw4fD4YPpA+6D/IPAAAAAAAAAAAAAAAAKhBMEY8TmxUWF2EYLBkxGuAa3RsJHDscWR8YIC8jSCSIJcMl6ie3Ku8rEC0CLjoupS7kLgAIRU1hYmNmZ2xtbm9wcnN0dVQAWgBeAGUAaQBzAHcAfgCBAIQAhwCSAJoAoACsALMAbABpAGcAO4DGAMZAUAA7gCYAJkBjAHUAdABlADuAwQDBQHIiZXZlAAJhAAFpeW0AcgByAGMAO4DCAMJAEGRyAADgNdgE3XIAYQB2AGUAO4DAAMBA8CFoYZFj4SFjcgBhZAAAoFMqAAFncIsAjgBvAG4ABGFmAADgNdg43fAlbHlGdW5jdGlvbgCgYSBpAG4AZwA7gMUAxUAAAWNzpACoAHIAAOA12Jzc6SFnbgCgVCJpAGwAZABlADuAwwDDQG0AbAA7gMQAxEAABGFjZWZvcnN1xQDYANoA7QDxAPYA+QD8AAABY3LJAM8AayNzbGFzaAAAoBYidgHTANUAAKDnKmUAZAAAoAYjeQARZIABY3J0AOAA5QDrAGEidXNlAACgNSLuI291bGxpcwCgLCFhAJJjcgAA4DXYBd1wAGYAAOA12Dnd5SF2ZdhiYwDyAOoAbSJwZXEAAKBOIgAHSE9hY2RlZmhpbG9yc3UXARoBHwE6AVIBVQFiAWQBZgGCAakB6QHtAfIBYwB5ACdkUABZADuAqQCpQIABY3B5ACUBKAE1AfUhdGUGYWmg0iJ0KGFsRGlmZmVyZW50aWFsRAAAoEUhbCJleXMAAKAtIQACYWVpb0EBRAFKAU0B8iFvbgxhZABpAGwAO4DHAMdAcgBjAAhhbiJpbnQAAKAwIm8AdAAKYQABZG5ZAV0BaSJsbGEAuGB0I2VyRG90ALdg8gA5AWkAp2NyImNsZQAAAkRNUFRwAXQBeQF9AW8AdAAAoJkiaSJudXMAAKCWIuwhdXMAoJUiaSJtZXMAAKCXIm8AAAFjc4cBlAFrKndpc2VDb250b3VySW50ZWdyYWwAAKAyImUjQ3VybHkAAAFEUZwBpAFvJXVibGVRdW90ZQAAoB0gdSJvdGUAAKAZIAACbG5wdbABtgHNAdgBbwBuAGWgNyIAoHQqgAFnaXQAvAHBAcUB8iJ1ZW50AKBhIm4AdAAAoC8i7yV1ckludGVncmFsAKAuIgABZnLRAdMBAKACIe8iZHVjdACgECJuLnRlckNsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbAAAoDMi7yFzcwCgLypjAHIAAOA12J7ccABDoNMiYQBwAACgTSKABURKU1phY2VmaW9zAAsCEgIVAhgCGwIsAjQCOQI9AnMCfwNvoEUh9CJyYWhkAKARKWMAeQACZGMAeQAFZGMAeQAPZIABZ3JzACECJQIoAuchZXIAoCEgcgAAoKEhaAB2AACg5CoAAWF5MAIzAvIhb24OYRRkbAB0oAciYQCUY3IAAOA12AfdAAFhZkECawIAAWNtRQJnAvIjaXRpY2FsAAJBREdUUAJUAl8CYwJjInV0ZQC0YG8AdAFZAloC2WJiJGxlQWN1dGUA3WJyImF2ZQBgYGkibGRlANxi7yFuZACgxCJmJWVyZW50aWFsRAAAoEYhcAR9AgAAAAAAAIECjgIAABoDZgAA4DXYO91EoagAhQKJAm8AdAAAoNwgcSJ1YWwAAKBQIuIhbGUAA0NETFJVVpkCqAK1Au8C/wIRA28AbgB0AG8AdQByAEkAbgB0AGUAZwByAGEA7ADEAW8AdAKvAgAAAACwAqhgbiNBcnJvdwAAoNMhAAFlb7kC0AJmAHQAgAFBUlQAwQLGAs0CciJyb3cAAKDQIekkZ2h0QXJyb3cAoNQhZQDlACsCbgBnAAABTFLWAugC5SFmdAABQVLcAuECciJyb3cAAKD4J+kkZ2h0QXJyb3cAoPon6SRnaHRBcnJvdwCg+SdpImdodAAAAUFU9gL7AnIicm93AACg0iFlAGUAAKCoInAAQQIGAwAAAAALA3Iicm93AACg0SFvJHduQXJyb3cAAKDVIWUlcnRpY2FsQmFyAACgJSJuAAADQUJMUlRhJAM2AzoDWgNxA3oDciJyb3cAAKGTIUJVLAMwA2EAcgAAoBMpcCNBcnJvdwAAoPUhciJldmUAEWPlIWZ00gJDAwAASwMAAFIDaSVnaHRWZWN0b3IAAKBQKWUkZVZlY3RvcgAAoF4p5SJjdG9yQqC9IWEAcgAAoFYpaSJnaHQA1AFiAwAAaQNlJGVWZWN0b3IAAKBfKeUiY3RvckKgwSFhAHIAAKBXKWUAZQBBoKQiciJyb3cAAKCnIXIAcgBvAPcAtAIAAWN0gwOHA3IAAOA12J/c8iFvaxBhAAhOVGFjZGZnbG1vcHFzdHV4owOlA6kDsAO/A8IDxgPNA9ID8gP9AwEEFAQeBCAEJQRHAEphSAA7gNAA0EBjAHUAdABlADuAyQDJQIABYWl5ALYDuQO+A/Ihb24aYXIAYwA7gMoAykAtZG8AdAAWYXIAAOA12AjdcgBhAHYAZQA7gMgAyEDlIm1lbnQAoAgiAAFhcNYD2QNjAHIAEmF0AHkAUwLhAwAAAADpA20lYWxsU3F1YXJlAACg+yVlJ3J5U21hbGxTcXVhcmUAAKCrJQABZ3D2A/kDbwBuABhhZgAA4DXYPN3zImlsb26VY3UAAAFhaQYEDgRsAFSgdSppImxkZQAAoEIi7CNpYnJpdW0AoMwhAAFjaRgEGwRyAACgMCFtAACgcyphAJdjbQBsADuAywDLQAABaXApBC0E8yF0cwCgAyLvJG5lbnRpYWxFAKBHIYACY2Zpb3MAPQQ/BEMEXQRyBHkAJGRyAADgNdgJ3WwibGVkAFMCTAQAAAAAVARtJWFsbFNxdWFyZQAAoPwlZSdyeVNtYWxsU3F1YXJlAACgqiVwA2UEAABpBAAAAABtBGYAAOA12D3dwSFsbACgACLyI2llcnRyZgCgMSFjAPIAcQQABkpUYWJjZGZnb3JzdIgEiwSOBJMElwSkBKcEqwStBLIE5QTqBGMAeQADZDuAPgA+QO0hbWFkoJMD3GNyImV2ZQAeYYABZWl5AJ0EoASjBOQhaWwiYXIAYwAcYRNkbwB0ACBhcgAA4DXYCt0AoNkicABmAADgNdg+3eUiYXRlcgADRUZHTFNUvwTIBM8E1QTZBOAEcSJ1YWwATKBlIuUhc3MAoNsidSRsbEVxdWFsAACgZyJyI2VhdGVyAACgoirlIXNzAKB3IuwkYW50RXF1YWwAoH4qaSJsZGUAAKBzImMAcgAA4DXYotwAoGsiAARBYWNmaW9zdfkE/QQFBQgFCwUTBSIFKwVSIkRjeQAqZAABY3QBBQQFZQBrAMdiXmDpIXJjJGFyAACgDCFsJWJlcnRTcGFjZQAAoAsh8AEYBQAAGwVmAACgDSHpJXpvbnRhbExpbmUAoAAlAAFjdCYFKAXyABIF8iFvayZhbQBwAEQBMQU5BW8AdwBuAEgAdQBtAPAAAAFxInVhbAAAoE8iAAdFSk9hY2RmZ21ub3N0dVMFVgVZBVwFYwVtBXAFcwV6BZAFtgXFBckFzQVjAHkAFWTsIWlnMmFjAHkAAWRjAHUAdABlADuAzQDNQAABaXlnBWwFcgBjADuAzgDOQBhkbwB0ADBhcgAAoBEhcgBhAHYAZQA7gMwAzEAAoREhYXB/BYsFAAFjZ4MFhQVyACphaSNuYXJ5SQAAoEghbABpAGUA8wD6AvQBlQUAAKUFZaAsIgABZ3KaBZ4F8iFhbACgKyLzI2VjdGlvbgCgwiJpI3NpYmxlAAABQ1SsBbEFbyJtbWEAAKBjIGkibWVzAACgYiCAAWdwdAC8Bb8FwwVvAG4ALmFmAADgNdhA3WEAmWNjAHIAAKAQIWkibGRlAChh6wHSBQAA1QVjAHkABmRsADuAzwDPQIACY2Zvc3UA4QXpBe0F8gX9BQABaXnlBegFcgBjADRhGWRyAADgNdgN3XAAZgAA4DXYQd3jAfcFAAD7BXIAAOA12KXc8iFjeQhk6yFjeQRkgANISmFjZm9zAAwGDwYSBhUGHQYhBiYGYwB5ACVkYwB5AAxk8CFwYZpjAAFleRkGHAbkIWlsNmEaZHIAAOA12A7dcABmAADgNdhC3WMAcgAA4DXYptyABUpUYWNlZmxtb3N0AD0GQAZDBl4GawZkB2gHcAd0B80H2gdjAHkACWQ7gDwAPECAAmNtbnByAEwGTwZSBlUGWwb1IXRlOWHiIWRhm2NnAACg6ifsI2FjZXRyZgCgEiFyAACgniGAAWFleQBkBmcGagbyIW9uPWHkIWlsO2EbZAABZnNvBjQHdAAABUFDREZSVFVWYXKABp4GpAbGBssG3AYDByEHwQIqBwABbnKEBowGZyVsZUJyYWNrZXQAAKDoJ/Ihb3cAoZAhQlKTBpcGYQByAACg5CHpJGdodEFycm93AKDGIWUjaWxpbmcAAKAII28A9QGqBgAAsgZiJWxlQnJhY2tldAAAoOYnbgDUAbcGAAC+BmUkZVZlY3RvcgAAoGEp5SJjdG9yQqDDIWEAcgAAoFkpbCJvb3IAAKAKI2kiZ2h0AAABQVbSBtcGciJyb3cAAKCUIeUiY3RvcgCgTikAAWVy4AbwBmUAAKGjIkFW5gbrBnIicm93AACgpCHlImN0b3IAoFopaSNhbmdsZQBCorIi+wYAAAAA/wZhAHIAAKDPKXEidWFsAACgtCJwAIABRFRWAAoHEQcYB+8kd25WZWN0b3IAoFEpZSRlVmVjdG9yAACgYCnlImN0b3JCoL8hYQByAACgWCnlImN0b3JCoLwhYQByAACgUilpAGcAaAB0AGEAcgByAG8A9wDMAnMAAANFRkdMU1Q/B0cHTgdUB1gHXwfxJXVhbEdyZWF0ZXIAoNoidSRsbEVxdWFsAACgZiJyI2VhdGVyAACgdiLlIXNzAKChKuwkYW50RXF1YWwAoH0qaSJsZGUAAKByInIAAOA12A/dZaDYIuYjdGFycm93AKDaIWkiZG90AD9hgAFucHcAege1B7kHZwAAAkxSbHKCB5QHmwerB+UhZnQAAUFSiAeNB3Iicm93AACg9SfpJGdodEFycm93AKD3J+kkZ2h0QXJyb3cAoPYn5SFmdAABYXLcAqEHaQBnAGgAdABhAHIAcgBvAPcA5wJpAGcAaAB0AGEAcgByAG8A9wDuAmYAAOA12EPdZQByAAABTFK/B8YHZSRmdEFycm93AACgmSHpJGdodEFycm93AKCYIYABY2h0ANMH1QfXB/IAWgYAoLAh8iFva0FhAKBqIgAEYWNlZmlvc3XpB+wH7gf/BwMICQgOCBEIcAAAoAUpeQAcZAABZGzyB/kHaSR1bVNwYWNlAACgXyBsI2ludHJmAACgMyFyAADgNdgQ3e4jdXNQbHVzAKATInAAZgAA4DXYRN1jAPIA/gecY4AESmFjZWZvc3R1ACEIJAgoCDUIgQiFCDsKQApHCmMAeQAKZGMidXRlAENhgAFhZXkALggxCDQI8iFvbkdh5CFpbEVhHWSAAWdzdwA7CGEIfQjhInRpdmWAAU1UVgBECEwIWQhlJWRpdW1TcGFjZQAAoAsgaABpAAABY25SCFMIawBTAHAAYQBjAOUASwhlAHIAeQBUAGgAaQDuAFQI9CFlZAABR0xnCHUIcgBlAGEAdABlAHIARwByAGUAYQB0AGUA8gDrBGUAcwBzAEwAZQBzAPMA2wdMImluZQAKYHIAAOA12BHdAAJCbnB0jAiRCJkInAhyImVhawAAoGAgwiZyZWFraW5nU3BhY2WgYGYAAKAVIUOq7CqzCMIIzQgAAOcIGwkAAAAAAAAtCQAAbwkAAIcJAACdCcAJGQoAADQKAAFvdbYIvAjuI2dydWVudACgYiJwIkNhcAAAoG0ibyh1YmxlVmVydGljYWxCYXIAAKAmIoABbHF4ANII1wjhCOUibWVudACgCSL1IWFsVKBgImkibGRlAADgQiI4A2kic3RzAACgBCJyI2VhdGVyAACjbyJFRkdMU1T1CPoIAgkJCQ0JFQlxInVhbAAAoHEidSRsbEVxdWFsAADgZyI4A3IjZWF0ZXIAAOBrIjgD5SFzcwCgeSLsJGFudEVxdWFsAOB+KjgDaSJsZGUAAKB1IvUhbXBEASAJJwnvI3duSHVtcADgTiI4A3EidWFsAADgTyI4A2UAAAFmczEJRgn0JFRyaWFuZ2xlQqLqIj0JAAAAAEIJYQByAADgzyk4A3EidWFsAACg7CJzAICibiJFR0xTVABRCVYJXAlhCWkJcSJ1YWwAAKBwInIjZWF0ZXIAAKB4IuUhc3MA4GoiOAPsJGFudEVxdWFsAOB9KjgDaSJsZGUAAKB0IuUic3RlZAABR0x1CX8J8iZlYXRlckdyZWF0ZXIA4KIqOAPlI3NzTGVzcwDgoSo4A/IjZWNlZGVzAKGAIkVTjwmVCXEidWFsAADgryo4A+wkYW50RXF1YWwAoOAiAAFlaaAJqQl2JmVyc2VFbGVtZW50AACgDCLnJWh0VHJpYW5nbGVCousitgkAAAAAuwlhAHIAAODQKTgDcSJ1YWwAAKDtIgABcXXDCeAJdSNhcmVTdQAAAWJwywnVCfMhZXRF4I8iOANxInVhbAAAoOIi5SJyc2V0ReCQIjgDcSJ1YWwAAKDjIoABYmNwAOYJ8AkNCvMhZXRF4IIi0iBxInVhbAAAoIgi4yJlZWRzgKGBIkVTVAD6CQAKBwpxInVhbAAA4LAqOAPsJGFudEVxdWFsAKDhImkibGRlAADgfyI4A+UicnNldEXggyLSIHEidWFsAACgiSJpImxkZQCAoUEiRUZUACIKJwouCnEidWFsAACgRCJ1JGxsRXF1YWwAAKBHImkibGRlAACgSSJlJXJ0aWNhbEJhcgAAoCQiYwByAADgNdip3GkAbABkAGUAO4DRANFAnWMAB0VhY2RmZ21vcHJzdHV2XgphCmgKcgp2CnoKgQqRCpYKqwqtCrsKyArNCuwhaWdSYWMAdQB0AGUAO4DTANNAAAFpeWwKcQpyAGMAO4DUANRAHmRiImxhYwBQYXIAAOA12BLdcgBhAHYAZQA7gNIA0kCAAWFlaQCHCooKjQpjAHIATGFnAGEAqWNjInJvbgCfY3AAZgAA4DXYRt3lI25DdXJseQABRFGeCqYKbyV1YmxlUXVvdGUAAKAcIHUib3RlAACgGCAAoFQqAAFjbLEKtQpyAADgNdiq3GEAcwBoADuA2ADYQGkAbAHACsUKZABlADuA1QDVQGUAcwAAoDcqbQBsADuA1gDWQGUAcgAAAUJQ0wrmCgABYXLXCtoKcgAAoD4gYQBjAAABZWvgCuIKAKDeI2UAdAAAoLQjYSVyZW50aGVzaXMAAKDcI4AEYWNmaGlsb3JzAP0KAwsFCwkLCwsMCxELIwtaC3IjdGlhbEQAAKACInkAH2RyAADgNdgT3WkApmOgY/Ujc01pbnVzsWAAAWlwFQsgC24AYwBhAHIAZQBwAGwAYQBuAOUACgVmAACgGSGAobsqZWlvACoLRQtJC+MiZWRlc4CheiJFU1QANAs5C0ALcSJ1YWwAAKCvKuwkYW50RXF1YWwAoHwiaSJsZGUAAKB+Im0AZQAAoDMgAAFkcE0LUQv1IWN0AKAPIm8jcnRpb24AYaA3ImwAAKAdIgABY2leC2ILcgAA4DXYq9yoYwACVWZvc2oLbwtzC3cLTwBUADuAIgAiQHIAAOA12BTdcABmAACgGiFjAHIAAOA12KzcAAZCRWFjZWZoaW9yc3WPC5MLlwupC7YL2AvbC90LhQyTDJoMowzhIXJyAKAQKUcAO4CuAK5AgAFjbnIAnQugC6ML9SF0ZVRhZwAAoOsncgB0oKAhbAAAoBYpgAFhZXkArwuyC7UL8iFvblhh5CFpbFZhIGR2oBwhZSJyc2UAAAFFVb8LzwsAAWxxwwvIC+UibWVudACgCyL1JGlsaWJyaXVtAKDLIXAmRXF1aWxpYnJpdW0AAKBvKXIAAKAcIW8AoWPnIWh0AARBQ0RGVFVWYewLCgwQDDIMNwxeDHwM9gIAAW5y8Av4C2clbGVCcmFja2V0AACg6SfyIW93AKGSIUJM/wsDDGEAcgAAoOUhZSRmdEFycm93AACgxCFlI2lsaW5nAACgCSNvAPUBFgwAAB4MYiVsZUJyYWNrZXQAAKDnJ24A1AEjDAAAKgxlJGVWZWN0b3IAAKBdKeUiY3RvckKgwiFhAHIAAKBVKWwib29yAACgCyMAAWVyOwxLDGUAAKGiIkFWQQxGDHIicm93AACgpiHlImN0b3IAoFspaSNhbmdsZQBCorMiVgwAAAAAWgxhAHIAAKDQKXEidWFsAACgtSJwAIABRFRWAGUMbAxzDO8kd25WZWN0b3IAoE8pZSRlVmVjdG9yAACgXCnlImN0b3JCoL4hYQByAACgVCnlImN0b3JCoMAhYQByAACgUykAAXB1iQyMDGYAAKAdIe4kZEltcGxpZXMAoHAp6SRnaHRhcnJvdwCg2yEAAWNongyhDHIAAKAbIQCgsSHsJGVEZWxheWVkAKD0KYAGSE9hY2ZoaW1vcXN0dQC/DMgMzAzQDOIM5gwKDQ0NFA0ZDU8NVA1YDQABQ2PDDMYMyCFjeSlkeQAoZEYiVGN5ACxkYyJ1dGUAWmEAorwqYWVpedgM2wzeDOEM8iFvbmBh5CFpbF5hcgBjAFxhIWRyAADgNdgW3e8hcnQAAkRMUlXvDPYM/QwEDW8kd25BcnJvdwAAoJMhZSRmdEFycm93AACgkCHpJGdodEFycm93AKCSIXAjQXJyb3cAAKCRIechbWGjY+EkbGxDaXJjbGUAoBgicABmAADgNdhK3XICHw0AAAAAIg10AACgGiLhIXJlgKGhJUlTVQAqDTINSg3uJXRlcnNlY3Rpb24AoJMidQAAAWJwNw1ADfMhZXRFoI8icSJ1YWwAAKCRIuUicnNldEWgkCJxInVhbAAAoJIibiJpb24AAKCUImMAcgAA4DXYrtxhAHIAAKDGIgACYmNtcF8Nag2ODZANc6DQImUAdABFoNAicSJ1YWwAAKCGIgABY2huDYkNZSJlZHMAgKF7IkVTVAB4DX0NhA1xInVhbAAAoLAq7CRhbnRFcXVhbACgfSJpImxkZQAAoH8iVABoAGEA9ADHCwCgESIAodEiZXOVDZ8NciJzZXQARaCDInEidWFsAACghyJlAHQAAKDRIoAFSFJTYWNmaGlvcnMAtQ27Db8NyA3ODdsN3w3+DRgOHQ4jDk8AUgBOADuA3gDeQMEhREUAoCIhAAFIY8MNxg1jAHkAC2R5ACZkAAFidcwNzQ0JYKRjgAFhZXkA1A3XDdoN8iFvbmRh5CFpbGJhImRyAADgNdgX3QABZWnjDe4N8gHoDQAA7Q3lImZvcmUAoDQiYQCYYwABY27yDfkNayNTcGFjZQAA4F8gCiDTInBhY2UAoAkg7CFkZYChPCJFRlQABw4MDhMOcSJ1YWwAAKBDInUkbGxFcXVhbAAAoEUiaSJsZGUAAKBIInAAZgAA4DXYS93pI3BsZURvdACg2yAAAWN0Jw4rDnIAAOA12K/c8iFva2Zh4QpFDlYOYA5qDgAAbg5yDgAAAAAAAAAAAAB5DnwOqA6zDgAADg8RDxYPGg8AAWNySA5ODnUAdABlADuA2gDaQHIAb6CfIeMhaXIAoEkpcgDjAVsOAABdDnkADmR2AGUAbGEAAWl5Yw5oDnIAYwA7gNsA20AjZGIibGFjAHBhcgAA4DXYGN1yAGEAdgBlADuA2QDZQOEhY3JqYQABZGl/Dp8OZQByAAABQlCFDpcOAAFhcokOiw5yAF9gYQBjAAABZWuRDpMOAKDfI2UAdAAAoLUjYSVyZW50aGVzaXMAAKDdI28AbgBQoMMi7CF1cwCgjiIAAWdwqw6uDm8AbgByYWYAAOA12EzdAARBREVUYWRwc78O0g7ZDuEOBQPqDvMOBw9yInJvdwDCoZEhyA4AAMwOYQByAACgEilvJHduQXJyb3cAAKDFIW8kd25BcnJvdwAAoJUhcSV1aWxpYnJpdW0AAKBuKWUAZQBBoKUiciJyb3cAAKClIW8AdwBuAGEAcgByAG8A9wAQA2UAcgAAAUxS+Q4AD2UkZnRBcnJvdwAAoJYh6SRnaHRBcnJvdwCglyFpAGyg0gNvAG4ApWPpIW5nbmFjAHIAAOA12LDcaSJsZGUAaGFtAGwAO4DcANxAgAREYmNkZWZvc3YALQ8xDzUPNw89D3IPdg97D4AP4SFzaACgqyJhAHIAAKDrKnkAEmThIXNobKCpIgCg5ioAAWVyQQ9DDwCgwSKAAWJ0eQBJD00Paw9hAHIAAKAWIGmgFiDjIWFsAAJCTFNUWA9cD18PZg9hAHIAAKAjIukhbmV8YGUkcGFyYXRvcgAAoFgnaSJsZGUAAKBAItQkaGluU3BhY2UAoAogcgAA4DXYGd1wAGYAAOA12E3dYwByAADgNdix3GQiYXNoAACgqiKAAmNlZm9zAI4PkQ+VD5kPng/pIXJjdGHkIWdlAKDAInIAAOA12BrdcABmAADgNdhO3WMAcgAA4DXYstwAAmZpb3OqD64Prw+0D3IAAOA12BvdnmNwAGYAAOA12E/dYwByAADgNdiz3IAEQUlVYWNmb3N1AMgPyw/OD9EP2A/gD+QP6Q/uD2MAeQAvZGMAeQAHZGMAeQAuZGMAdQB0AGUAO4DdAN1AAAFpedwP3w9yAGMAdmErZHIAAOA12BzdcABmAADgNdhQ3WMAcgAA4DXYtNxtAGwAeGEABEhhY2RlZm9z/g8BEAUQDRAQEB0QIBAkEGMAeQAWZGMidXRlAHlhAAFheQkQDBDyIW9ufWEXZG8AdAB7YfIBFRAAABwQbwBXAGkAZAB0AOgAVAhhAJZjcgAAoCghcABmAACgJCFjAHIAAOA12LXc4QtCEEkQTRAAAGcQbRByEAAAAAAAAAAAeRCKEJcQ8hD9EAAAGxEhETIROREAAD4RYwB1AHQAZQA7gOEA4UByImV2ZQADYYCiPiJFZGl1eQBWEFkQWxBgEGUQAOA+IjMDAKA/InIAYwA7gOIA4kB0AGUAO4C0ALRAMGRsAGkAZwA7gOYA5kByoGEgAOA12B7dcgBhAHYAZQA7gOAA4EAAAWVwfBCGEAABZnCAEIQQ8yF5bQCgNSHoAIMQaABhALFjAAFhcI0QWwAAAWNskRCTEHIAAWFnAACgPypkApwQAAAAALEQAKInImFkc3ajEKcQqRCuEG4AZAAAoFUqAKBcKmwib3BlAACgWCoAoFoqAKMgImVsbXJzersQvRDAEN0Q5RDtEACgpCllAACgICJzAGQAYaAhImEEzhDQENIQ1BDWENgQ2hDcEACgqCkAoKkpAKCqKQCgqykAoKwpAKCtKQCgrikAoK8pdAB2oB8iYgBkoL4iAKCdKQABcHTpEOwQaAAAoCIixWDhIXJyAKB8IwABZ3D1EPgQbwBuAAVhZgAA4DXYUt0Ao0giRWFlaW9wBxEJEQ0RDxESERQRAKBwKuMhaXIAoG8qAKBKImQAAKBLInMAJ2DyIW94ZaBIIvEADhFpAG4AZwA7gOUA5UCAAWN0eQAmESoRKxFyAADgNdi23CpgbQBwAGWgSCLxAPgBaQBsAGQAZQA7gOMA40BtAGwAO4DkAORAAAFjaUERRxFvAG4AaQBuAPQA6AFuAHQAAKARKgAITmFiY2RlZmlrbG5vcHJzdWQRaBGXEZ8RpxGrEdIR1hErEjASexKKEn0RThNbE3oTbwB0AACg7SoAAWNybBGJEWsAAAJjZXBzdBF4EX0RghHvIW5nAKBMInAjc2lsb24A9mNyImltZQAAoDUgaQBtAGWgPSJxAACgzSJ2AY0RkRFlAGUAAKC9ImUAZABnoAUjZQAAoAUjcgBrAHSgtSPiIXJrAKC2IwABb3mjEaYRbgDnAHcRMWTxIXVvAKAeIIACY21wcnQAtBG5Eb4RwRHFEeEhdXPloDUi5ABwInR5dgAAoLApcwDpAH0RbgBvAPUA6gCAAWFodwDLEcwRzhGyYwCgNiHlIWVuAKBsInIAAOA12B/dZwCAA2Nvc3R1dncA4xHyEQUSEhIhEiYSKRKAAWFpdQDpEesR7xHwAKMFcgBjAACg7yVwAACgwyKAAWRwdAD4EfwRABJvAHQAAKAAKuwhdXMAoAEqaSJtZXMAAKACKnECCxIAAAAADxLjIXVwAKAGKmEAcgAAoAUm8iNpYW5nbGUAAWR1GhIeEu8hd24AoL0lcAAAoLMlcCJsdXMAAKAEKmUA5QBCD+UAkg9hInJvdwAAoA0pgAFha28ANhJoEncSAAFjbjoSZRJrAIABbHN0AEESRxJNEm8jemVuZ2UAAKDrKXEAdQBhAHIA5QBcBPIjaWFuZ2xlgKG0JWRscgBYElwSYBLvIXduAKC+JeUhZnQAoMIlaSJnaHQAAKC4JWsAAKAjJLEBbRIAAHUSsgFxEgAAcxIAoJIlAKCRJTQAAKCTJWMAawAAoIglAAFlb38ShxJx4D0A5SD1IWl2AOBhIuUgdAAAoBAjAAJwdHd4kRKVEpsSnxJmAADgNdhT3XSgpSJvAG0AAKClIvQhaWUAoMgiAAZESFVWYmRobXB0dXayEsES0RLgEvcS+xIKExoTHxMjEygTNxMAAkxSbHK5ErsSvRK/EgCgVyUAoFQlAKBWJQCgUyUAolAlRFVkdckSyxLNEs8SAKBmJQCgaSUAoGQlAKBnJQACTFJsctgS2hLcEt4SAKBdJQCgWiUAoFwlAKBZJQCjUSVITFJobHLrEu0S7xLxEvMS9RIAoGwlAKBjJQCgYCUAoGslAKBiJQCgXyVvAHgAAKDJKQACTFJscgITBBMGEwgTAKBVJQCgUiUAoBAlAKAMJQCiACVEVWR1EhMUExYTGBMAoGUlAKBoJQCgLCUAoDQlaSJudXMAAKCfIuwhdXMAoJ4iaSJtZXMAAKCgIgACTFJsci8TMRMzEzUTAKBbJQCgWCUAoBglAKAUJQCjAiVITFJobHJCE0QTRhNIE0oTTBMAoGolAKBhJQCgXiUAoDwlAKAkJQCgHCUAAWV2UhNVE3YA5QD5AGIAYQByADuApgCmQAACY2Vpb2ITZhNqE24TcgAA4DXYt9xtAGkAAKBPIG0A5aA9IogRbAAAoVwAYmh0E3YTAKDFKfMhdWIAoMgnbAF+E4QTbABloCIgdAAAoCIgcAAAoU4iRWWJE4sTAKCuKvGgTyI8BeEMqRMAAN8TABQDFB8UAAAjFDQUAAAAAIUUAAAAAI0UAAAAANcU4xT3FPsUAACIFQAAlhWAAWNwcgCuE7ET1RP1IXRlB2GAoikiYWJjZHMAuxO/E8QTzhPSE24AZAAAoEQqciJjdXAAAKBJKgABYXXIE8sTcAAAoEsqcAAAoEcqbwB0AACgQCoA4CkiAP4AAWVv2RPcE3QAAKBBIO4ABAUAAmFlaXXlE+8T9RP4E/AB6hMAAO0TcwAAoE0qbwBuAA1hZABpAGwAO4DnAOdAcgBjAAlhcABzAHOgTCptAACgUCpvAHQAC2GAAWRtbgAIFA0UEhRpAGwAO4C4ALhAcCJ0eXYAAKCyKXQAAIGiADtlGBQZFKJAcgBkAG8A9ABiAXIAAOA12CDdgAFjZWkAKBQqFDIUeQBHZGMAawBtoBMn4SFyawCgEyfHY3IAAKPLJUVjZWZtcz8UQRRHFHcUfBSAFACgwykAocYCZWxGFEkUcQAAoFciZQBhAlAUAAAAAGAUciJyb3cAAAFsclYUWhTlIWZ0AKC6IWkiZ2h0AACguyGAAlJTYWNkAGgUaRRrFG8UcxSuYACgyCRzAHQAAKCbIukhcmMAoJoi4SFzaACgnSJuImludAAAoBAqaQBkAACg7yrjIWlyAKDCKfUhYnN1oGMmaQB0AACgYybsApMUmhS2FAAAwxRvAG4AZaA6APGgVCKrAG0CnxQAAAAAoxRhAHSgLABAYAChASJmbKcUqRTuABMNZQAAAW14rhSyFOUhbnQAoAEiZQDzANIB5wG6FAAAwBRkoEUibwB0AACgbSpuAPQAzAGAAWZyeQDIFMsUzhQA4DXYVN1vAOQA1wEAgakAO3MeAdMUcgAAoBchAAFhb9oU3hRyAHIAAKC1IXMAcwAAoBcnAAFjdeYU6hRyAADgNdi43AABYnDuFPIUZaDPKgCg0SploNAqAKDSKuQhb3QAoO8igANkZWxwcnZ3AAYVEBUbFSEVRBVlFYQV4SFycgABbHIMFQ4VAKA4KQCgNSlwAhYVAAAAABkVcgAAoN4iYwAAoN8i4SFycnCgtiEAoD0pgKIqImJjZG9zACsVMBU6FT4VQRVyImNhcAAAoEgqAAFhdTQVNxVwAACgRipwAACgSipvAHQAAKCNInIAAKBFKgDgKiIA/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/BjAAFleR4cIRzkIWlsN2E6ZHIAAOA12CjdciJlZW4AOGFjAHkARWRjAHkAXGRwAGYAAOA12FzdYwByAADgNdjA3IALQUJFSGFiY2RlZmdoamxtbm9wcnN0dXYAXhxtHHEcdRx5HN8cBx0dHTwd3B3tHfEdAR4EHh0eLB5FHrwewx7hHgkfPR9LH4ABYXJ0AGQcZxxpHHIA8gBvB/IAxQLhIWlsAKAbKeEhcnIAoA4pZ6BmIgCgiyphAHIAAKBiKWMJjRwAAJAcAACVHAAAAAAAAAAAAACZHJwcAACmHKgcrRwAANIc9SF0ZTph7SJwdHl2AKC0KXIAYQDuAFoG4iFkYbtjZwAAoegnZGyhHKMcAKCRKeUAiwYAoIUqdQBvADuAqwCrQHIAgKOQIWJmaGxwc3QAuhy/HMIcxBzHHMoczhxmoOQhcwAAoB8pcwAAoB0p6wCyGnAAAKCrIWwAAKA5KWkAbQAAoHMpbAAAoKIhAKGrKmFl1hzaHGkAbAAAoBkpc6CtKgDgrSoA/oABYWJyAOUc6RztHHIAcgAAoAwpcgBrAACgcicAAWFr8Rz4HGMAAAFla/Yc9xx7YFtgAAFlc/wc/hwAoIspbAAAAWR1Ax0FHQCgjykAoI0pAAJhZXV5Dh0RHRodHB3yIW9uPmEAAWRpFR0YHWkAbAA8YewAowbiAPccO2QAAmNxcnMkHScdLB05HWEAAKA2KXUAbwDyoBwgqhEAAWR1MB00HeghYXIAoGcpcyJoYXIAAKBLKWgAAKCyIQCiZCJmZ3FzRB1FB5Qdnh10AIACYWhscnQATh1WHWUdbB2NHXIicm93AHSgkCFhAOkAzxxhI3Jwb29uAAABZHVeHWId7yF3bgCgvSFwAACgvCHlJGZ0YXJyb3dzAKDHIWkiZ2h0AIABYWhzAHUdex2DHXIicm93APOglCGdBmEAcgBwAG8AbwBuAPMAzgtxAHUAaQBnAGEAcgByAG8A9wBlGugkcmVldGltZXMAoMsi8aFkIk0HAACaHWwAYQBuAPQAXgcAon0qY2Rnc6YdqR2xHbcdYwAAoKgqbwB0AG+gfypyoIEqAKCDKmXg2iIA/nMAAKCTKoACYWRlZ3MAwB3GHcod1h3ZHXAAcAByAG8A+ACmHG8AdAAAoNYicQAAAWdxzx3SHXQA8gBGB2cAdADyAHQcdADyAFMHaQDtAGMHgAFpbHIA4h3mHeod8yFodACgfClvAG8A8gDKBgDgNdgp3UWgdiIAoJEqYQH1Hf4dcgAAAWR1YB35HWygvCEAoGopbABrAACghCVjAHkAWWQAomoiYWNodAweDx4VHhkecgDyAGsdbwByAG4AZQDyAGAW4SFyZACgaylyAGkAAKD6JQABaW8hHiQe5CFvdEBh9SFzdGGgsCPjIWhlAKCwIwACRWFlczMeNR48HkEeAKBoInAAcKCJKvIhb3gAoIkqcaCHKvGghyo0HmkAbQAAoOYiAARhYm5vcHR3elIeXB5fHoUelh6mHqsetB4AAW5yVh5ZHmcAAKDsJ3IAAKD9IXIA6wCwBmcAgAFsbXIAZh52Hnse5SFmdAABYXKIB2weaQBnAGgAdABhAHIAcgBvAPcAkwfhInBzdG8AoPwnaQBnAGgAdABhAHIAcgBvAPcAmgdwI2Fycm93AAABbHKNHpEeZQBmAPQAxhxpImdodAAAoKwhgAFhZmwAnB6fHqIecgAAoIUpAOA12F3ddQBzAACgLSppIm1lcwAAoDQqYQGvHrMecwB0AACgFyLhAIoOZaHKJbkeRhLuIWdlAKDKJWEAcgBsoCgAdAAAoJMpgAJhY2htdADMHs8e1R7bHt0ecgDyAJ0GbwByAG4AZQDyANYWYQByAGSgyyEAoG0pAKAOIHIAaQAAoL8iAANhY2hpcXTrHu8e1QfzHv0eBh/xIXVvAKA5IHIAAOA12MHcbQDloXIi+h4AAPweAKCNKgCgjyoAAWJ19xwBH28AcqAYIACgGiDyIW9rQmEAhDwAO2NkaGlscXJCBhcfxh0gHyQfKB8sHzEfAAFjaRsfHR8AoKYqcgAAoHkqcgBlAOUAkx3tIWVzAKDJIuEhcnIAoHYpdSJlc3QAAKB7KgABUGk1HzkfYQByAACglillocMlAgdfEnIAAAFkdUIfRx9zImhhcgAAoEop6CFhcgCgZikAAWVuTx9WH3IjdG5lcXEAAOBoIgD+xQBUHwAHRGFjZGVmaGlsbm9wc3VuH3Ifoh+rH68ftx+7H74f5h/uH/MfBwj/HwsgxCFvdACgOiIAAmNscHJ5H30fiR+eH3IAO4CvAK9AAAFldIEfgx8AoEImZaAgJ3MAZQAAoCAnc6CmIXQAbwCAoaYhZGx1AJQfmB+cH28AdwDuAHkDZQBmAPQA6gbwAOkO6yFlcgCgriUAAW95ph+qH+0hbWEAoCkqPGThIXNoAKAUIOElc3VyZWRhbmdsZQCgISJyAADgNdgq3W8AAKAnIYABY2RuAMQfyR/bH3IAbwA7gLUAtUBhoiMi0B8AANMf1x9zAPQAKxFpAHIAAKDwKm8AdAA7gLcAt0B1AHMA4qESIh4TAADjH3WgOCIAoCoqYwHqH+0fcAAAoNsq8gB+GnAAbAB1APMACAgAAWRw9x/7H+UhbHMAoKciZgAA4DXYXt0AAWN0AyAHIHIAAOA12MLc8CFvcwCgPiJsobwDECAVIPQiaW1hcACguCJhAPAAEyAADEdMUlZhYmNkZWZnaGlqbG1vcHJzdHV2dzwgRyBmIG0geSCqILgg2iDeIBEhFSEyIUMhTSFQIZwhnyHSIQAiIyKLIrEivyIUIwABZ3RAIEMgAODZIjgD9uBrItIgBwmAAWVsdABNIF8gYiBmAHQAAAFhclMgWCByInJvdwAAoM0h6SRnaHRhcnJvdwCgziEA4NgiOAP24Goi0iBfCekkZ2h0YXJyb3cAoM8hAAFEZHEgdSDhIXNoAKCvIuEhc2gAoK4igAJiY25wdACCIIYgiSCNIKIgbABhAACgByL1IXRlRGFnAADgICLSIACiSSJFaW9wlSCYIJwgniAA4HAqOANkAADgSyI4A3MASWFyAG8A+AAyCnUAcgBhoG4mbADzoG4mmwjzAa8gAACzIHAAO4CgAKBAbQBwAOXgTiI4AyoJgAJhZW91eQDBIMogzSDWINkg8AHGIAAAyCAAoEMqbwBuAEhh5CFpbEZhbgBnAGSgRyJvAHQAAOBtKjgDcAAAoEIqPWThIXNoAKATIACjYCJBYWRxc3jpIO0g+SD+IAIhDCFyAHIAAKDXIXIAAAFocvIg9SBrAACgJClvoJch9wAGD28AdAAA4FAiOAN1AGkA9gC7CAABZWkGIQohYQByAACgKCntAN8I6SFzdPOgBCLlCHIAAOA12CvdAAJFZXN0/wgcISshLiHxoXEiIiEAABMJ8aFxIgAJAAAnIWwAYQBuAPQAEwlpAO0AGQlyoG8iAKBvIoABQWFwADghOyE/IXIA8gBeIHIAcgAAoK4hYQByAACg8ipzogsiSiEAAAAAxwtkoPwiAKD6ImMAeQBaZIADQUVhZGVzdABcIV8hYiFmIWkhkyGWIXIA8gBXIADgZiI4A3IAcgAAoJohcgAAoCUggKFwImZxcwBwIYQhjiF0AAABYXJ1IXohcgByAG8A9wBlIWkAZwBoAHQAYQByAHIAbwD3AD4h8aFwImAhAACKIWwAYQBuAPQAZwlz4H0qOAMAoG4iaQDtAG0JcqBuImkA5aDqIkUJaQDkADoKAAFwdKMhpyFmAADgNdhf3YCBrAA7aW4AriGvIcchrEBuAIChCSJFZHYAtyG6Ib8hAOD5IjgDbwB0AADg9SI4A+EB1gjEIcYhAKD3IgCg9iJpAHagDCLhAagJzyHRIQCg/iIAoP0igAFhb3IA2CHsIfEhcgCAoSYiYXN0AOAh5SHpIWwAbABlAOwAywhsAADg/SrlIADgAiI4A2wiaW50AACgFCrjoYAi9yEAAPohdQDlAJsJY+CvKjgDZaCAIvEAkwkAAkFhaXQHIgoiFyIeInIA8gBsIHIAcgAAoZshY3cRIhQiAOAzKTgDAOCdITgDZyRodGFycm93AACgmyFyAGkA5aDrIr4JgANjaGltcHF1AC8iPCJHIpwhTSJQIloigKGBImNlcgA2Iv0JOSJ1AOUABgoA4DXYw9zvIXJ0bQKdIQAAAABEImEAcgDhAOEhbQBloEEi8aBEIiYKYQDyAMsIcwB1AAABYnBWIlgi5QDUCeUA3wmAAWJjcABgInMieCKAoYQiRWVzAGci7glqIgDgxSo4A2UAdABl4IIi0iBxAPGgiCJoImMAZaCBIvEA/gmAoYUiRWVzAH8iFgqCIgDgxio4A2UAdABl4IMi0iBxAPGgiSKAIgACZ2lscpIilCKaIpwi7AAMCWwAZABlADuA8QDxQOcAWwlpI2FuZ2xlAAABbHKkIqoi5SFmdGWg6iLxAEUJaSJnaHQAZaDrIvEAvgltoL0DAKEjAGVzuCK8InIAbwAAoBYhcAAAoAcggARESGFkZ2lscnMAziLSItYi2iLeIugi7SICIw8j4SFzaACgrSLhIXJyAKAEKXAAAOBNItIg4SFzaACgrCIAAWV04iLlIgDgZSLSIADgPgDSIG4iZmluAACg3imAAUFldADzIvci+iJyAHIAAKACKQDgZCLSIHLgPADSIGkAZQAA4LQi0iAAAUF0BiMKI3IAcgAAoAMp8iFpZQDgtSLSIGkAbQAA4Dwi0iCAAUFhbgAaIx4jKiNyAHIAAKDWIXIAAAFociMjJiNrAACgIylvoJYh9wD/DuUhYXIAoCcpUxJqFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVCMAAF4jaSN/I4IjjSOeI8AUAAAAAKYjwCMAANoj3yMAAO8jHiQvJD8kRCQAAWNzVyNsFHUAdABlADuA8wDzQAABaXlhI2cjcgBjoJoiO4D0APRAPmSAAmFiaW9zAHEjdCN3I3EBeiNzAOgAdhTsIWFjUWF2AACgOCrvIWxkAKC8KewhaWdTYQABY3KFI4kjaQByAACgvykA4DXYLN1vA5QjAAAAAJYjAACcI24A22JhAHYAZQA7gPIA8kAAoMEpAAFibaEjjAphAHIAAKC1KQACYWNpdKwjryO6I70jcgDyAFkUAAFpcrMjtiNyAACgvinvIXNzAKC7KW4A5QDZCgCgwCmAAWFlaQDFI8gjyyNjAHIATWFnAGEAyWOAAWNkbgDRI9Qj1iPyIW9uv2MAoLYpdQDzAHgBcABmAADgNdhg3YABYWVsAOQj5yPrI3IAAKC3KXIAcAAAoLkpdQDzAHwBAKMoImFkaW9zdvkj/CMPJBMkFiQbJHIA8gBeFIChXSplZm0AAyQJJAwkcgBvoDQhZgAAoDQhO4CqAKpAO4C6ALpA5yFvZgCgtiJyAACgVipsIm9wZQAAoFcqAKBbKoABY2xvACMkJSQrJPIACCRhAHMAaAA7gPgA+EBsAACgmCJpAGwBMyQ4JGQAZQA7gPUA9UBlAHMAYaCXInMAAKA2Km0AbAA7gPYA9kDiIWFyAKA9I+EKXiQAAHokAAB8JJQkAACYJKkkAAAAALUkEQsAAPAkAAAAAAQleiUAAIMlcgCAoSUiYXN0AGUkbyQBCwCBtgA7bGokayS2QGwAZQDsABgDaQJ1JAAAAAB4JG0AAKDzKgCg/Sp5AD9kcgCAAmNpbXB0AIUkiCSLJJkSjyRuAHQAJWBvAGQALmBpAGwAAKAwIOUhbmsAoDEgcgAA4DXYLd2AAWltbwCdJKAkpCR2oMYD1WNtAGEA9AD+B24AZQAAoA4m9KHAA64kAAC0JGMjaGZvcmsAAKDUItZjAAFhdbgkxCRuAAABY2u9JMIkawBooA8hAKAOIfYAaRpzAACkKwBhYmNkZW1zdNMkIRPXJNsk4STjJOck6yTjIWlyAKAjKmkAcgAAoCIqAAFvdYsW3yQAoCUqAKByKm4AO4CxALFAaQBtAACgJip3AG8AAKAnKoABaXB1APUk+iT+JO4idGludACgFSpmAADgNdhh3W4AZAA7gKMAo0CApHoiRWFjZWlub3N1ABMlFSUYJRslTCVRJVklSSV1JQCgsypwAACgtyp1AOUAPwtjoK8qgKJ6ImFjZW5zACclLSU0JTYlSSVwAHAAcgBvAPgAFyV1AHIAbAB5AGUA8QA/C/EAOAuAAWFlcwA8JUElRSXwInByb3gAoLkqcQBxAACgtSppAG0AAKDoImkA7QBEC20AZQDzoDIgIguAAUVhcwBDJVclRSXwAEAlgAFkZnAATwtfJXElgAFhbHMAZSVpJW0l7CFhcgCgLiPpIW5lAKASI/UhcmYAoBMjdKAdIu8AWQvyIWVsAKCwIgABY2l9JYElcgAA4DXYxdzIY24iY3NwAACgCCAAA2Zpb3BzdZElKxuVJZolnyWkJXIAAOA12C7dcABmAADgNdhi3XIiaW1lAACgVyBjAHIAAOA12MbcgAFhZW8AqiW6JcAldAAAAWVpryW2JXIAbgBpAG8AbgDzABkFbgB0AACgFipzAHQAZaA/APEACRj0AG0LgApBQkhhYmNkZWZoaWxtbm9wcnN0dXgA4yXyJfYl+iVpJpAmpia9JtUm5ib4JlonaCdxJ3UnnietJ7EnyCfiJ+cngAFhcnQA6SXsJe4lcgDyAJkM8gD6AuEhaWwAoBwpYQByAPIA3BVhAHIAAKBkKYADY2RlbnFydAAGJhAmEyYYJiYmKyZaJgABZXUKJg0mAOA9IjEDdABlAFVhaQDjACAN7SJwdHl2AKCzKWcAgKHpJ2RlbAAgJiImJCYAoJIpAKClKeUA9wt1AG8AO4C7ALtAcgAApZIhYWJjZmhscHN0dz0mQCZFJkcmSiZMJk4mUSZVJlgmcAAAoHUpZqDlIXMAAKAgKQCgMylzAACgHinrALka8ACVHmwAAKBFKWkAbQAAoHQpbAAAoKMhAKCdIQABYWleJmImaQBsAACgGilvAG6gNiJhAGwA8wB2C4ABYWJyAG8mciZ2JnIA8gAvEnIAawAAoHMnAAFha3omgSZjAAABZWt/JoAmfWBdYAABZXOFJocmAKCMKWwAAAFkdYwmjiYAoI4pAKCQKQACYWV1eZcmmiajJqUm8iFvbllhAAFkaZ4moSZpAGwAV2HsAA8M4gCAJkBkAAJjbHFzrSawJrUmuiZhAACgNylkImhhcgAAoGkpdQBvAPKgHSCjAWgAAKCzIYABYWNnAMMm0iaUC2wAgKEcIWlwcwDLJs4migxuAOUAoAxhAHIA9ADaC3QAAKCtJYABaWxyANsm3ybjJvMhaHQAoH0pbwBvAPIANgwA4DXYL90AAWFv6ib1JnIAAAFkde8m8SYAoMEhbKDAIQCgbCl2oMED8WOAAWducwD+Jk4nUCdoAHQAAANhaGxyc3QKJxInISc1Jz0nRydyInJvdwB0oJIhYQDpAFYmYSNycG9vbgAAAWR1GiceJ28AdwDuAPAmcAAAoMAh5SFmdAABYWgnJy0ncgByAG8AdwDzAAkMYQByAHAAbwBvAG4A8wATBGklZ2h0YXJyb3dzAACgySFxAHUAaQBnAGEAcgByAG8A9wBZJugkcmVldGltZXMAoMwiZwDaYmkAbgBnAGQAbwB0AHMAZQDxABwYgAFhaG0AYCdjJ2YncgDyAAkMYQDyABMEAKAPIG8idXN0AGGgsSPjIWhlAKCxI+0haWQAoO4qAAJhYnB0fCeGJ4knmScAAW5ygCeDJ2cAAKDtJ3IAAKD+IXIA6wAcDIABYWZsAI8nkieVJ3IAAKCGKQDgNdhj3XUAcwAAoC4qaSJtZXMAAKA1KgABYXCiJ6gncgBnoCkAdAAAoJQp7yJsaW50AKASKmEAcgDyADwnAAJhY2hxuCe8J6EMwCfxIXVvAKA6IHIAAOA12MfcAAFidYAmxCdvAPKgGSCoAYABaGlyAM4n0ifWJ3IAZQDlAE0n7SFlcwCgyiJpAIChuSVlZmwAXAxjEt4n9CFyaQCgzinsInVoYXIAoGgpAKAeIWENBSgJKA0oSyhVKIYoAACLKLAoAAAAAOMo5ygAABApJCkxKW0pcSmHKaYpAACYKgAAAACxKmMidXRlAFthcQB1AO8ABR+ApHsiRWFjZWlucHN5ABwoHignKCooLygyKEEoRihJKACgtCrwASMoAAAlKACguCpvAG4AYWF1AOUAgw1koLAqaQBsAF9hcgBjAF1hgAFFYXMAOCg6KD0oAKC2KnAAAKC6KmkAbQAAoOki7yJsaW50AKATKmkA7QCIDUFkbwB0AGKixSKRFgAAAABTKACgZiqAA0FhY21zdHgAYChkKG8ocyh1KHkogihyAHIAAKDYIXIAAAFocmkoayjrAJAab6CYIfcAzAd0ADuApwCnQGkAO2D3IWFyAKApKW0AAAFpbn4ozQBuAHUA8wDOAHQAAKA2J3IA7+A12DDdIxkAAmFjb3mRKJUonSisKHIAcAAAoG8mAAFoeZkonChjAHkASWRIZHIAdABtAqUoAAAAAKgoaQDkAFsPYQByAGEA7ABsJDuArQCtQAABZ22zKLsobQBhAAChwwNmdroouijCY4CjPCJkZWdsbnByAMgozCjPKNMo1yjaKN4obwB0AACgairxoEMiCw5FoJ4qAKCgKkWgnSoAoJ8qZQAAoEYi7CF1cwCgJCrhIXJyAKByKWEAcgDyAPwMAAJhZWl07Sj8KAEpCCkAAWxz8Sj4KGwAcwBlAHQAbQDpAH8oaABwAACgMyrwImFyc2wAoOQpAAFkbFoPBSllAACgIyNloKoqc6CsKgDgrCoA/oABZmxwABUpGCkfKfQhY3lMZGKgLwBhoMQpcgAAoD8jZgAA4DXYZN1hAAABZHIoKRcDZQBzAHWgYCZpAHQAAKBgJoABY3N1ADYpRilhKQABYXU6KUApcABzoJMiAOCTIgD+cABzoJQiAOCUIgD+dQAAAWJwSylWKQChjyJlcz4NUCllAHQAZaCPIvEAPw0AoZAiZXNIDVspZQB0AGWgkCLxAEkNAKGhJWFmZilbBHIAZQFrKVwEAKChJWEAcgDyAAMNAAJjZW10dyl7KX8pgilyAADgNdjI3HQAbQDuAM4AaQDsAAYpYQByAOYAVw0AAWFyiimOKXIA5qAGJhESAAFhbpIpoylpImdodAAAAWVwmSmgKXAAcwBpAGwAbwDuANkXaADpAKAkcwCvYIACYmNtbnAArin8KY4NJSooKgCkgiJFZGVtbnByc7wpvinCKcgpzCnUKdgp3CkAoMUqbwB0AACgvSpkoIYibwB0AACgwyr1IWx0AKDBKgABRWXQKdIpAKDLKgCgiiLsIXVzAKC/KuEhcnIAoHkpgAFlaXUA4inxKfQpdAAAoYIiZW7oKewpcQDxoIYivSllAHEA8aCKItEpbQAAoMcqAAFicPgp+ikAoNUqAKDTKmMAgKJ7ImFjZW5zAAcqDSoUKhYqRihwAHAAcgBvAPgAIyh1AHIAbAB5AGUA8QCDDfEAfA2AAWFlcwAcKiIqPShwAHAAcgBvAPgAPChxAPEAOShnAACgaiYApoMiMTIzRWRlaGxtbnBzPCo/KkIqRSpHKlIqWCpjKmcqaypzKncqO4C5ALlAO4CyALJAO4CzALNAAKDGKgABb3NLKk4qdAAAoL4qdQBiAACg2CpkoIcibwB0AACgxCpzAAABb3VdKmAqbAAAoMknYgAAoNcq4SFycgCgeyn1IWx0AKDCKgABRWVvKnEqAKDMKgCgiyLsIXVzAKDAKoABZWl1AH0qjCqPKnQAAKGDImVugyqHKnEA8aCHIkYqZQBxAPGgiyJwKm0AAKDIKgABYnCTKpUqAKDUKgCg1iqAAUFhbgCdKqEqrCpyAHIAAKDZIXIAAAFocqYqqCrrAJUab6CZIfcAxQf3IWFyAKAqKWwAaQBnADuA3wDfQOELzyrZKtwq6SrsKvEqAAD1KjQrAAAAAAAAAAAAAEwrbCsAAHErvSsAAAAAAADRK3IC1CoAAAAA2CrnIWV0AKAWI8RjcgDrAOUKgAFhZXkA4SrkKucq8iFvbmVh5CFpbGNhQmRvAPQAIg5sInJlYwAAoBUjcgAA4DXYMd0AAmVpa2/7KhIrKCsuK/IBACsAAAkrZQAAATRm6g0EK28AcgDlAOsNYQBzorgDECsAAAAAEit5AG0A0WMAAWNuFislK2sAAAFhcxsrIStwAHAAcgBvAPgAFw5pAG0AAKA8InMA8AD9DQABYXMsKyEr8AAXDnIAbgA7gP4A/kDsATgrOyswG2QA5QBnAmUAcwCAgdcAO2JkAEMrRCtJK9dAYaCgInIAAKAxKgCgMCqAAWVwcwBRK1MraSvhAAkh4qKkIlsrXysAAAAAYytvAHQAAKA2I2kAcgAAoPEqb+A12GXdcgBrAACg2irhAHgociJpbWUAAKA0IIABYWlwAHYreSu3K2QA5QC+DYADYWRlbXBzdACFK6MrmiunK6wrsCuzK24iZ2xlAACitSVkbHFykCuUK5ornCvvIXduAKC/JeUhZnRloMMl8QACBwCgXCJpImdodABloLkl8QBdDG8AdAAAoOwlaSJudXMAAKA6KuwhdXMAoDkqYgAAoM0p6SFtZQCgOyrlInppdW0AoOIjgAFjaHQAwivKK80rAAFyecYrySsA4DXYydxGZGMAeQBbZPIhb2tnYQABaW/UK9creAD0ANERaCJlYWQAAAFsct4r5ytlAGYAdABhAHIAcgBvAPcAXQbpJGdodGFycm93AKCgIQAJQUhhYmNkZmdobG1vcHJzdHV3CiwNLBEsHSwnLDEsQCxLLFIsYix6LIQsjyzLLOgs7Sz/LAotcgDyAAkDYQByAACgYykAAWNyFSwbLHUAdABlADuA+gD6QPIACQ1yAOMBIywAACUseQBeZHYAZQBtYQABaXkrLDAscgBjADuA+wD7QENkgAFhYmgANyw6LD0scgDyANEO7CFhY3FhYQDyAOAOAAFpckQsSCzzIWh0AKB+KQDgNdgy3XIAYQB2AGUAO4D5APlAYQFWLF8scgAAAWxyWixcLACgvyEAoL4hbABrAACggCUAAWN0Zix2LG8CbCwAAAAAcyxyAG4AZaAcI3IAAKAcI28AcAAAoA8jcgBpAACg+CUAAWFsfiyBLGMAcgBrYTuAqACoQAABZ3CILIssbwBuAHNhZgAA4DXYZt0AA2FkaGxzdZksniynLLgsuyzFLHIAcgBvAPcACQ1vAHcAbgBhAHIAcgBvAPcA2A5hI3Jwb29uAAABbHKvLLMsZQBmAPQAWyxpAGcAaAD0AF0sdQDzAKYOaQAAocUDaGzBLMIs0mNvAG4AxWPwI2Fycm93cwCgyCGAAWNpdADRLOEs5CxvAtcsAAAAAN4scgBuAGWgHSNyAACgHSNvAHAAAKAOI24AZwBvYXIAaQAAoPklYwByAADgNdjK3IABZGlyAPMs9yz6LG8AdAAAoPAi7CFkZWlhaQBmoLUlAKC0JQABYW0DLQYtcgDyAMosbAA7gPwA/EDhIm5nbGUAoKcpgAdBQkRhY2RlZmxub3Byc3oAJy0qLTAtNC2bLZ0toS2/LcMtxy3TLdgt3C3gLfwtcgDyABADYQByAHag6CoAoOkqYQBzAOgA/gIAAW5yOC08LechcnQAoJwpgANla25wcnN0AJkpSC1NLVQtXi1iLYItYQBwAHAA4QAaHG8AdABoAGkAbgDnAKEXgAFoaXIAoSmzJFotbwBwAPQAdCVooJUh7wD4JgABaXVmLWotZwBtAOEAuygAAWJwbi14LXMjZXRuZXEAceCKIgD+AODLKgD+cyNldG5lcQBx4IsiAP4A4MwqAP4AAWhyhi2KLWUAdADhABIraSNhbmdsZQAAAWxyki2WLeUhZnQAoLIiaSJnaHQAAKCzInkAMmThIXNoAKCiIoABZWxyAKcttC24LWKiKCKuLQAAAACyLWEAcgAAoLsicQAAoFoi7CFpcACg7iIAAWJ0vC1eD2EA8gBfD3IAAOA12DPddAByAOkAlS1zAHUAAAFicM0t0C0A4IIi0iAA4IMi0iBwAGYAAOA12GfdcgBvAPAAWQt0AHIA6QCaLQABY3XkLegtcgAA4DXYy9wAAWJw7C30LW4AAAFFZXUt8S0A4IoiAP5uAAABRWV/LfktAOCLIgD+6SJnemFnAKCaKYADY2Vmb3BycwANLhAuJS4pLiMuLi40LukhcmN1YQABZGkULiEuAAFiZxguHC5hAHIAAKBfKmUAcaAnIgCgWSLlIXJwAKAYIXIAAOA12DTdcABmAADgNdho3WWgQCJhAHQA6ABqD2MAcgAA4DXYzNzjCuQRUC4AAFQuAABYLmIuAAAAAGMubS5wLnQuAAAAAIguki4AAJouJxIqEnQAcgDpAB0ScgAA4DXYNd0AAUFhWy5eLnIA8gDnAnIA8gCTB75jAAFBYWYuaS5yAPIA4AJyAPIAjAdhAPAAeh5pAHMAAKD7IoABZHB0APgReS6DLgABZmx9LoAuAOA12GnddQDzAP8RaQBtAOUABBIAAUFhiy6OLnIA8gDuAnIA8gCaBwABY3GVLgoScgAA4DXYzdwAAXB0nS6hLmwAdQDzACUScgDpACASAARhY2VmaW9zdbEuvC7ELsguzC7PLtQu2S5jAAABdXm2LrsudABlADuA/QD9QE9kAAFpecAuwy5yAGMAd2FLZG4AO4ClAKVAcgAA4DXYNt1jAHkAV2RwAGYAAOA12GrdYwByAADgNdjO3AABY23dLt8ueQBOZGwAO4D/AP9AAAVhY2RlZmhpb3N38y73Lv8uAi8MLxAvEy8YLx0vIi9jInV0ZQB6YQABYXn7Lv4u8iFvbn5hN2RvAHQAfGEAAWV0Bi8KL3QAcgDmAB8QYQC2Y3IAAOA12DfdYwB5ADZk5yJyYXJyAKDdIXAAZgAA4DXYa91jAHIAAOA12M/cAAFqbiYvKC8AoA0gagAAoAwg")});var VJ;var kD=k(()=>{(function(J){J[J.VALUE_LENGTH=49152]="VALUE_LENGTH",J[J.FLAG13=8192]="FLAG13",J[J.BRANCH_LENGTH=8064]="BRANCH_LENGTH",J[J.JUMP_TABLE=127]="JUMP_TABLE"})(VJ||(VJ={}))});function _j(J){return J>=h1.ZERO&&J<=h1.NINE}function eI(J){return J>=h1.UPPER_A&&J<=h1.UPPER_F||J>=h1.LOWER_A&&J<=h1.LOWER_F}function JT(J){return J>=h1.UPPER_A&&J<=h1.UPPER_Z||J>=h1.LOWER_A&&J<=h1.LOWER_Z||_j(J)}function zT(J){return J===h1.EQUALS||JT(J)}class pj{constructor(J,z,Y){this.decodeTree=J,this.emitCodePoint=z,this.errors=Y,this.state=YJ.EntityStart,this.consumed=1,this.result=0,this.treeIndex=0,this.excess=1,this.decodeMode=BY.Strict,this.runConsumed=0}startEntity(J){this.decodeMode=J,this.state=YJ.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1,this.runConsumed=0}write(J,z){switch(this.state){case YJ.EntityStart:{if(J.charCodeAt(z)===h1.NUM)return this.state=YJ.NumericStart,this.consumed+=1,this.stateNumericStart(J,z+1);return this.state=YJ.NamedEntity,this.stateNamedEntity(J,z)}case YJ.NumericStart:return this.stateNumericStart(J,z);case YJ.NumericDecimal:return this.stateNumericDecimal(J,z);case YJ.NumericHex:return this.stateNumericHex(J,z);case YJ.NamedEntity:return this.stateNamedEntity(J,z)}}stateNumericStart(J,z){if(z>=J.length)return-1;if((J.charCodeAt(z)|bD)===h1.LOWER_X)return this.state=YJ.NumericHex,this.consumed+=1,this.stateNumericHex(J,z+1);return this.state=YJ.NumericDecimal,this.stateNumericDecimal(J,z)}stateNumericHex(J,z){while(z<J.length){let Y=J.charCodeAt(z);if(_j(Y)||eI(Y)){let G=Y<=h1.NINE?Y-h1.ZERO:(Y|bD)-h1.LOWER_A+10;this.result=this.result*16+G,this.consumed++,z++}else return this.emitNumericEntity(Y,3)}return-1}stateNumericDecimal(J,z){while(z<J.length){let Y=J.charCodeAt(z);if(_j(Y))this.result=this.result*10+(Y-h1.ZERO),this.consumed++,z++;else return this.emitNumericEntity(Y,2)}return-1}emitNumericEntity(J,z){var Y;if(this.consumed<=z)return(Y=this.errors)===null||Y===void 0||Y.absenceOfDigitsInNumericCharacterReference(this.consumed),0;if(J===h1.SEMI)this.consumed+=1;else if(this.decodeMode===BY.Strict)return 0;if(this.emitCodePoint(AD(this.result),this.consumed),this.errors){if(J!==h1.SEMI)this.errors.missingSemicolonAfterCharacterReference();this.errors.validateNumericCharacterReference(this.result)}return this.consumed}stateNamedEntity(J,z){let{decodeTree:Y}=this,G=Y[this.treeIndex],Z=(G&VJ.VALUE_LENGTH)>>14;while(z<J.length){if(Z===0&&(G&VJ.FLAG13)!==0){let Q=(G&VJ.BRANCH_LENGTH)>>7;if(this.runConsumed===0){let f=G&VJ.JUMP_TABLE;if(J.charCodeAt(z)!==f)return this.result===0?0:this.emitNotTerminatedNamedEntity();z++,this.excess++,this.runConsumed++}while(this.runConsumed<Q){if(z>=J.length)return-1;let f=this.runConsumed-1,H=Y[this.treeIndex+1+(f>>1)],B=f%2===0?H&255:H>>8&255;if(J.charCodeAt(z)!==B)return this.runConsumed=0,this.result===0?0:this.emitNotTerminatedNamedEntity();z++,this.excess++,this.runConsumed++}this.runConsumed=0,this.treeIndex+=1+(Q>>1),G=Y[this.treeIndex],Z=(G&VJ.VALUE_LENGTH)>>14}if(z>=J.length)break;let X=J.charCodeAt(z);if(X===h1.SEMI&&Z!==0&&(G&VJ.FLAG13)!==0)return this.emitNamedEntityData(this.treeIndex,Z,this.consumed+this.excess);if(this.treeIndex=GT(Y,G,this.treeIndex+Math.max(1,Z),X),this.treeIndex<0)return this.result===0||this.decodeMode===BY.Attribute&&(Z===0||zT(X))?0:this.emitNotTerminatedNamedEntity();if(G=Y[this.treeIndex],Z=(G&VJ.VALUE_LENGTH)>>14,Z!==0){if(X===h1.SEMI)return this.emitNamedEntityData(this.treeIndex,Z,this.consumed+this.excess);if(this.decodeMode!==BY.Strict&&(G&VJ.FLAG13)===0)this.result=this.treeIndex,this.consumed+=this.excess,this.excess=0}z++,this.excess++}return-1}emitNotTerminatedNamedEntity(){var J;let{result:z,decodeTree:Y}=this,G=(Y[z]&VJ.VALUE_LENGTH)>>14;return this.emitNamedEntityData(z,G,this.consumed),(J=this.errors)===null||J===void 0||J.missingSemicolonAfterCharacterReference(),this.consumed}emitNamedEntityData(J,z,Y){let{decodeTree:G}=this;if(this.emitCodePoint(z===1?G[J]&~(VJ.VALUE_LENGTH|VJ.FLAG13):G[J+1],Y),z===3)this.emitCodePoint(G[J+2],Y);return Y}end(){var J;switch(this.state){case YJ.NamedEntity:return this.result!==0&&(this.decodeMode!==BY.Attribute||this.result===this.treeIndex)?this.emitNotTerminatedNamedEntity():0;case YJ.NumericDecimal:return this.emitNumericEntity(0,2);case YJ.NumericHex:return this.emitNumericEntity(0,3);case YJ.NumericStart:return(J=this.errors)===null||J===void 0||J.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case YJ.EntityStart:return 0}}}function YT(J){let z="",Y=new pj(J,(G)=>z+=OD(G));return function(Z,X){let Q=0,f=0;while((f=Z.indexOf("&",f))>=0){z+=Z.slice(Q,f),Y.startEntity(X);let B=Y.write(Z,f+1);if(B<0){Q=f+Y.end();break}Q=f+B,f=B===0?Q+1:Q}let H=z+Z.slice(Q);return z="",H}}function GT(J,z,Y,G){let Z=(z&VJ.BRANCH_LENGTH)>>7,X=z&VJ.JUMP_TABLE;if(Z===0)return X!==0&&G===X?Y:-1;if(X){let B=G-X;return B<0||B>=Z?-1:J[Y+B]-1}let Q=Z+1>>1,f=0,H=Z-1;while(f<=H){let B=f+H>>>1,V=B>>1,K=J[Y+V]>>(B&1)*8&255;if(K<G)f=B+1;else if(K>G)H=B-1;else return J[Y+Q+B]}return-1}function TG(J,z=BY.Legacy){return ZT(J,z)}var h1,bD=32,YJ,BY,ZT;var SD=k(()=>{RD();ND();kD();(function(J){J[J.NUM=35]="NUM",J[J.SEMI=59]="SEMI",J[J.EQUALS=61]="EQUALS",J[J.ZERO=48]="ZERO",J[J.NINE=57]="NINE",J[J.LOWER_A=97]="LOWER_A",J[J.LOWER_F=102]="LOWER_F",J[J.LOWER_X=120]="LOWER_X",J[J.LOWER_Z=122]="LOWER_Z",J[J.UPPER_A=65]="UPPER_A",J[J.UPPER_F=70]="UPPER_F",J[J.UPPER_Z=90]="UPPER_Z"})(h1||(h1={}));(function(J){J[J.EntityStart=0]="EntityStart",J[J.NumericStart=1]="NumericStart",J[J.NumericDecimal=2]="NumericDecimal",J[J.NumericHex=3]="NumericHex",J[J.NamedEntity=4]="NamedEntity"})(YJ||(YJ={}));(function(J){J[J.Legacy=0]="Legacy",J[J.Strict=1]="Strict",J[J.Attribute=2]="Attribute"})(BY||(BY={}));ZT=YT(CD)});var ID,TD;var xD=k(()=>{SD();(function(J){J[J.XML=0]="XML",J[J.HTML=1]="HTML"})(ID||(ID={}));(function(J){J[J.UTF8=0]="UTF8",J[J.ASCII=1]="ASCII",J[J.Extensive=2]="Extensive",J[J.Attribute=3]="Attribute",J[J.Text=4]="Text"})(TD||(TD={}))});import{CliRenderer as QT,createCliRenderer as qT,engine as fT}from"@opentui/core";import{createTestRenderer as B$}from"@opentui/core/testing";import{ASCIIFontRenderable as HT,BoxRenderable as BT,CodeRenderable as jT,DiffRenderable as WT,InputRenderable as VT,LineNumberRenderable as KT,MarkdownRenderable as UT,ScrollBoxRenderable as DT,SelectRenderable as LT,TabSelectRenderable as MT,TextareaRenderable as FT,TextAttributes as rj,TextNodeRenderable as OT,TextRenderable as AT}from"@opentui/core";import{engine as V$,Timeline as K$}from"@opentui/core";import{BaseRenderable as vD,createTextAttributes as gT,InputRenderable as oj,InputRenderableEvents as rX,isTextNodeRenderable as ej,parseColor as uD,Renderable as CT,RootTextNodeRenderable as NT,ScrollBoxRenderable as kT,SelectRenderable as ED,SelectRenderableEvents as sj,TabSelectRenderable as wD,TabSelectRenderableEvents as tj,TextNodeRenderable as bT,TextRenderable as mD}from"@opentui/core";import{BaseRenderable as PT,isTextNodeRenderable as hT,TextNodeRenderable as vT,TextRenderable as mT,Yoga as hD}from"@opentui/core";import{BoxRenderable as C$,RootRenderable as N$}from"@opentui/core";import{TimeToFirstDrawRenderable as iT}from"@opentui/core";import{createSlotRegistry as S$}from"@opentui/core";function IT({createElement:J,createTextNode:z,createSlotNode:Y,isTextNode:G,replaceText:Z,insertNode:X,removeNode:Q,setProperty:f,getParentNode:H,getFirstChild:B,getNextSibling:V}){function j(S,N,M,I){if(M!==void 0&&!I)I=[];if(typeof N!=="function")return K(S,N,I,M);Iz((r)=>K(S,N(),r,M),I)}function K(S,N,M,I,r){while(typeof M==="function")M=M();if(N===M)return M;let i=typeof N,e=I!==void 0;if(i==="string"||i==="number"){if(i==="number")N=N.toString();if(e){let J0=M[0];if(J0&&G(J0))Z(J0,N);else J0=z(N);M=O(S,M,I,J0)}else if(M!==""&&typeof M==="string")Z(B(S),M=N);else O(S,M,I,z(N)),M=N}else if(N==null||i==="boolean")M=O(S,M,I);else if(i==="function")return Iz(()=>{let J0=N();while(typeof J0==="function")J0=J0();M=K(S,J0,M,I)}),()=>M;else if(Array.isArray(N)){let J0=[];if(L(J0,N,r))return Iz(()=>M=K(S,J0,M,I,!0)),()=>M;if(J0.length===0){let T=O(S,M,I);if(e)return M=T}else if(Array.isArray(M))if(M.length===0)g(S,J0,I);else A(S,M,J0);else if(M==null||M==="")g(S,J0);else A(S,e&&M||[B(S)],J0);M=J0}else{if(Array.isArray(M)){if(e)return M=O(S,M,I,N);O(S,M,null,N)}else if(M==null||M===""||!B(S))X(S,N);else x(S,N,B(S));M=N}return M}function L(S,N,M){let I=!1;for(let r=0,i=N.length;r<i;r++){let e=N[r],J0;if(e==null||e===!0||e===!1);else if(Array.isArray(e))I=L(S,e)||I;else if((J0=typeof e)==="string"||J0==="number")S.push(z(e));else if(J0==="function")if(M){while(typeof e==="function")e=e();I=L(S,Array.isArray(e)?e:[e])||I}else S.push(e),I=!0;else S.push(e)}return I}function A(S,N,M){let I=M.length,r=N.length,i=I,e=0,J0=0,T=V(N[r-1]),q0=null;while(e<r||J0<i){if(N[e]===M[J0]){e++,J0++;continue}while(N[r-1]===M[i-1])r--,i--;if(r===e){let p=i<I?J0?V(M[J0-1]):M[i-J0]:T;while(J0<i)X(S,M[J0++],p)}else if(i===J0)while(e<r){if(!q0||!q0.has(N[e]))Q(S,N[e]);e++}else if(N[e]===M[i-1]&&M[J0]===N[r-1]){let p=V(N[--r]);X(S,M[J0++],V(N[e++])),X(S,M[--i],p),N[r]=M[i]}else{if(!q0){q0=new Map;let B0=J0;while(B0<i)q0.set(M[B0],B0++)}let p=q0.get(N[e]);if(p!=null)if(J0<p&&p<i){let B0=e,L0=1,V0;while(++B0<r&&B0<i){if((V0=q0.get(N[B0]))==null||V0!==p+L0)break;L0++}if(L0>p-J0){let t=N[e];while(J0<p)X(S,M[J0++],t)}else x(S,M[J0++],N[e++])}else e++;else Q(S,N[e++])}}}function O(S,N,M,I){if(M===void 0){let i;while(i=B(S))Q(S,i);return I&&X(S,I),I??""}let r=I||Y();if(N.length){let i=!1;for(let e=N.length-1;e>=0;e--){let J0=N[e];if(r!==J0){let T=H(J0)===S;if(!i&&!e)T?x(S,r,J0):X(S,r,M);else T&&Q(S,J0)}else i=!0}}else X(S,r,M);return[r]}function g(S,N,M){for(let I=0,r=N.length;I<r;I++)X(S,N[I],M)}function x(S,N,M){X(S,N,M),Q(S,M)}function _(S,N,M={},I){if(N||(N={}),!I)Iz(()=>M.children=K(S,N.children,M.children));return Iz(()=>N.ref&&N.ref(S)),Iz(()=>{for(let r in N){if(r==="children"||r==="ref")continue;let i=N[r];if(i===M[r])continue;f(S,r,i,M[r]),M[r]=i}}),M}return{render(S,N){let M;return fG((I)=>{M=I,j(N,S())}),M},insert:j,spread(S,N,M){if(typeof N==="function")Iz((I)=>_(S,N(),I,M));else _(S,N,void 0,M)},createElement:J,createTextNode:z,insertNode:X,setProp(S,N,M,I){return f(S,N,M,I),M},mergeProps:Mq,effect:Iz,memo:ST,createComponent:SV,use(S,N,M){return _1(()=>S(N,M))}}}function TT(J){let z=IT(J);return z.mergeProps=Mq,z}function Z9(J){if(!ef.has(J))ef.set(J,0);let z=ef.get(J)+1;return ef.set(J,z),`${J}-${z}`}function yT(J,z,Y){if(GJ("Inserting node:",s1(z),"into parent:",s1(J),"with anchor:",s1(Y),z instanceof vZ),z instanceof oX)z.parent=J,z=z.getSlotChild(J);if(Y&&Y instanceof oX)Y=Y.getSlotChild(J);if(ej(z)){if(!(J instanceof mD)&&!ej(J))throw Error(`Orphan text error: "${z.toChunks().map((X)=>X.text).join("")}" must have a <text> as a parent: ${J.id} above ${z.id}`)}if(!(J instanceof vD))throw console.error("[INSERT]","Tried to mount a non base renderable"),Error("Tried to mount a non base renderable");if(!Y){J.add(z);return}let G=J9(J),Z=G.findIndex((X)=>X.id===Y.id);if(Z===-1)GJ("[INSERT]","Could not find anchor",s1(J),s1(Y),"[children]",...G.map((X)=>X.id));J.add(z,Z)}function xT(J,z){if(GJ("Removing node:",s1(z),"from parent:",s1(J)),z instanceof oX)z.parent=null,z=z.getSlotChild(J);J.remove(z.id),process.nextTick(()=>{if(z instanceof vD&&!z.parent){z.destroyRecursively();return}})}function uT(J){GJ("Creating text node:",J);let z=Z9("text-node");if(typeof J==="number")J=J.toString();return vZ.fromString(TG(J),{id:z})}function ET(){let J=Z9("slot-node");return GJ("Creating slot node",J),new oX(J)}function PD(J){GJ("Getting parent of node:",s1(J));let z=J.parent??void 0;if(z instanceof NT)z=z.textParent??void 0;let Y=z?.parent?.parent?.parent;if(Y instanceof kT&&Y.content===z)z=Y;return z}function dT(J){Object.assign(aD,J)}function nT(){return aD}var G9,fJ=()=>{let J=wJ(G9);if(!J)throw Error("No renderer found");return J},RT=(J)=>{let z=fJ();e1(()=>{z.on("resize",J)}),k1(()=>{z.off("resize",J)})},mz=()=>{let J=fJ(),[z,Y]=a({width:J.width,height:J.height});return RT((Z,X)=>{Y({width:Z,height:X})}),z},ST=(J)=>K0(()=>J()),ef,GJ=(...J)=>{if(process.env.DEBUG)console.log("[Reconciler]",...J)},vZ,s1=(J)=>{if(!J)return;return J.id},J9=(J)=>{let z;if(J instanceof mD)z=J.getTextChildren();else z=J.getChildren();return z},wT,y,x0,b,W,E0,D,U,A$,q,cD,cz,X9,dD,nD,oX,sX,JH,z9,Y9,iD,lD,$D,cT,aD,lT=(J,z)=>{let Y,G=!1,Z=!1,X=!0,Q=!1,f=J.destroy.bind(J),H=()=>{if(Z)return;if(!Y){G=!0;return}Z=!0,Y()};J.once("destroy",H),J.destroy=()=>{if(X){Q=!0;return}f()};try{Y=wT(()=>b(G9.Provider,{get value(){return J},get children(){return b(z,{})}}),J.root)}finally{X=!1,J.destroy=f}if(G)H();if(Q)f()},_D=async(J,z={})=>{let Y=z instanceof QT?z:await qT({...z,onDestroy:()=>{z.onDestroy?.()}});fT.attach(Y),lT(Y,J)};var P=k(()=>{j1();xD();j1();j1();j1();G9=Tz();ef=new Map;vZ=class vZ extends bT{static fromString(J,z={}){let Y=new vZ(z);return Y.add(J),Y}};({render:wT,effect:y,memo:x0,createComponent:b,createElement:W,createTextNode:E0,insertNode:D,insert:U,spread:A$,setProp:q,mergeProps:cD,use:cz}=TT({createElement(J){GJ("Creating element:",J);let z=Z9(J),Y=wJ(G9);if(!Y)throw Error("No renderer found");let G=nT();if(!G[J])throw Error(`[Reconciler] Unknown component type: ${J}`);let Z=new G[J](Y,{id:z});return GJ("Element created with id:",z),Z},createTextNode:uT,createSlotNode:ET,replaceText(J,z){if(GJ("Replacing text:",z,"in node:",s1(J)),!(J instanceof vZ))return;J.replace(TG(z),0)},setProperty(J,z,Y,G){if(z.startsWith("on:")){let Z=z.slice(3);if(Y)J.on(Z,Y);if(G)J.off(Z,G);return}if(ej(J)){if(z==="href"){J.link={url:Y};return}if(z==="style"){J.attributes|=gT(Y),J.fg=Y.fg?uD(Y.fg):J.fg,J.bg=Y.bg?uD(Y.bg):J.bg;return}return}switch(z){case"id":GJ("Id mapped",J.id,"=",Y),J[z]=Y;break;case"focused":if(!(J instanceof CT))return;if(Y)J.focus();else J.blur();break;case"onChange":let Z=void 0;if(J instanceof ED)Z=sj.SELECTION_CHANGED;else if(J instanceof wD)Z=tj.SELECTION_CHANGED;else if(J instanceof oj)Z=rX.CHANGE;if(!Z)break;if(Y)J.on(Z,Y);if(G)J.off(Z,G);break;case"onInput":if(J instanceof oj){if(Y)J.on(rX.INPUT,Y);if(G)J.off(rX.INPUT,G)}break;case"onSubmit":if(J instanceof oj){if(Y)J.on(rX.ENTER,Y);if(G)J.off(rX.ENTER,G)}else J[z]=Y;break;case"onSelect":if(J instanceof ED){if(Y)J.on(sj.ITEM_SELECTED,Y);if(G)J.off(sj.ITEM_SELECTED,G)}else if(J instanceof wD){if(Y)J.on(tj.ITEM_SELECTED,Y);if(G)J.off(tj.ITEM_SELECTED,G)}break;case"style":for(let X in Y){let Q=Y[X];if(G!==void 0&&Q===G[X])continue;J[X]=Q}break;case"text":case"content":{let X=typeof Y==="string"?Y:Array.isArray(Y)?Y.join(""):`${Y}`;J[z]=TG(X);break}default:J[z]=Y}},isTextNode(J){return J instanceof vZ},insertNode:yT,removeNode:xT,getParentNode:PD,getFirstChild(J){GJ("Getting first child of node:",s1(J));let z=J9(J)[0];if(!z){GJ("No first child found for node:",s1(J));return}return GJ("First child found:",s1(z),"for node:",s1(J)),z},getNextSibling(J){GJ("Getting next sibling of node:",s1(J));let z=PD(J);if(!z){GJ("No parent found for node:",s1(J));return}let Y=J9(z),G=Y.indexOf(J);if(G===-1||G===Y.length-1){GJ("No next sibling found for node:",s1(J));return}let Z=Y[G+1];if(!Z){GJ("Next sibling is null for node:",s1(J));return}return GJ("Next sibling found:",s1(Z),"for node:",s1(J)),Z}}));X9=class X9 extends PT{constructor(J){super({id:J})}add(J,z){throw Error("Can't add children on an Slot renderable")}getChildren(){return[]}remove(J){}insertBefore(J,z){throw Error("Can't add children on an Slot renderable")}getRenderable(J){return}getChildrenCount(){return 0}requestRender(){}findDescendantById(J){return}};dD=class dD extends vT{slotParent;destroyed=!1;constructor(J,z){super({id:J});this._visible=!1,this.slotParent=z}destroy(){if(this.destroyed)return;this.destroyed=!0,this.slotParent?.destroy(),super.destroy()}};nD=class nD extends X9{yogaNode;slotParent;destroyed=!1;constructor(J,z){super(J);this._visible=!1,this.slotParent=z,this.yogaNode=hD.default.Node.create(),this.yogaNode.setDisplay(hD.Display.None)}getLayoutNode(){return this.yogaNode}updateFromLayout(){}updateLayout(){}onRemove(){}destroy(){if(this.destroyed)return;this.destroyed=!0,super.destroy(),this.slotParent?.destroy()}};oX=class oX extends X9{layoutNode;textNode;destroyed=!1;constructor(J){super(J);this._visible=!1}getSlotChild(J){if(hT(J)||J instanceof mT){if(!this.textNode)this.textNode=new dD(`slot-text-${this.id}`,this);return this.textNode}if(!this.layoutNode)this.layoutNode=new nD(`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()}};sX=class sX extends OT{_ctx;constructor(J,z){super(z);this._ctx=J}};JH=class JH extends sX{constructor(J,z){super(null,J);if(z==="b"||z==="strong")this.attributes=(this.attributes||0)|rj.BOLD;else if(z==="i"||z==="em")this.attributes=(this.attributes||0)|rj.ITALIC;else if(z==="u")this.attributes=(this.attributes||0)|rj.UNDERLINE}};z9=class z9 extends JH{constructor(J){super(J,"b")}};Y9=class Y9 extends JH{constructor(J){super(J,"i")}};iD=class iD extends JH{constructor(J){super(J,"u")}};lD=class lD extends sX{constructor(J,z){super(null,z);this.add()}add(){return super.add(`
|
|
262
|
-
`)}};$D=class $D extends sX{constructor(J,z){let Y={...z,link:{url:z.href}};super(null,Y)}};cT={box:BT,text:AT,input:VT,select:LT,textarea:FT,ascii_font:HT,tab_select:MT,scrollbox:DT,code:jT,diff:WT,line_number:KT,markdown:UT,span:sX,strong:z9,b:z9,em:Y9,i:Y9,u:iD,br:lD,a:$D},aD={...cT};dT({time_to_first_draw:iT})});function jY(J){if(J===void 0)return"undefined";if(J===null)return"null";let z=Array.isArray(J)?"array":typeof J,Y;try{Y=typeof J==="string"?J:JSON.stringify(J)}catch{Y=String(J)}if(Y.length>120)Y=`${Y.slice(0,120)}\u2026`;return`${z}:${Y}`}function $T(J){let z=J?.changes;if(!z||typeof z!=="object"||Array.isArray(z))return null;let Y=new Map;for(let[G,Z]of Object.entries(z)){let X=Z;if(typeof X?.added!=="number"||typeof X.deleted!=="number")return null;Y.set(G,{added:X.added,deleted:X.deleted})}return Y}function aT(J){let z=J;if(typeof z?.theme!=="string")return null;return{theme:z.theme,transparentBackground:z.transparentBackground===!0,focusAccent:typeof z.focusAccent==="string"?z.focusAccent:null,locale:typeof z.locale==="string"?z.locale:"",sortMode:z.sortMode==="recent"?"recent":"default",keysCollapsed:z.keysCollapsed===!0,projectFilter:typeof z.projectFilter==="string"&&z.projectFilter.length>0?z.projectFilter:null}}function _T(J,z){if(J.size!==z.size)return!1;for(let[Y,G]of J){let Z=z.get(Y);if(!Z||!vz(G,Z))return!1}return!0}function pT(J){let z=J?.activity;if(!z||typeof z!=="object"||Array.isArray(z))return null;let Y=new Map;for(let[G,Z]of Object.entries(z)){let X=Z;if(typeof X?.mtimeMs!=="number"||typeof X.completionAt!=="number")return null;if(X.completionId!==null&&typeof X.completionId!=="string")return null;Y.set(G,{mtimeMs:X.mtimeMs,completionId:X.completionId,completionAt:X.completionAt})}return Y}function rT(J,z){if(J.size!==z.size)return!1;for(let[Y,G]of J){let Z=z.get(Y);if(!Z||Z.mtimeMs!==G.mtimeMs||Z.completionId!==G.completionId||Z.completionAt!==G.completionAt)return!1}return!0}class KJ{client;tasksAcc;setTasks;activeTaskAcc;setActiveTaskSig;updateAcc;setUpdateSig;daemonVersionAcc;setDaemonVersionSig;engineStateAcc;setEngineStateSig;taskJobsAcc;setTaskJobsSig;worktreeChangesAcc;setWorktreeChangesSig;transcriptActivityAcc;setTranscriptActivitySig;uiPrefsAcc;setUiPrefsSig;keybindingsRevAcc;setKeybindingsRevSig;connectionStateAcc;setConnectionState;ensureReachable;role;channels;subscribesTasks;reconnecting=!1;constructor(J,z={}){this.client=J;let[Y,G]=a([]),[Z,X]=a(null),[Q,f]=a(null),[H,B]=a(null),[V,j]=a(new Map),[K,L]=a(new Map),[A,O]=a(null),[g,x]=a(null),[_,S]=a(null),[N,M]=a(null),[I,r]=a("online");this.tasksAcc=Y,this.setTasks=(i)=>G(()=>i),this.activeTaskAcc=Z,this.setActiveTaskSig=(i)=>X(()=>i),this.updateAcc=Q,this.setUpdateSig=(i)=>f(()=>i),this.daemonVersionAcc=H,this.setDaemonVersionSig=(i)=>B(()=>i),this.engineStateAcc=V,this.setEngineStateSig=(i)=>j(()=>i),this.taskJobsAcc=K,this.setTaskJobsSig=(i)=>L(()=>i),this.worktreeChangesAcc=A,this.setWorktreeChangesSig=(i)=>O(()=>i),this.transcriptActivityAcc=g,this.setTranscriptActivitySig=(i)=>x(()=>i),this.uiPrefsAcc=_,this.setUiPrefsSig=(i)=>S(()=>i),this.keybindingsRevAcc=N,this.setKeybindingsRevSig=(i)=>M(()=>i),this.connectionStateAcc=I,this.setConnectionState=(i)=>r(()=>i),this.ensureReachable=z.ensureReachable??yZ,this.role=z.role??"pane",this.channels=z.channels,this.subscribesTasks=!z.channels||z.channels.includes("task.snapshot"),this.client.on("*",(i)=>this.handleEvent(i.name,i.payload)),this.client.onLifecycle("close",()=>{if(this.setConnectionState("disconnected"),this.role==="pane")tz("orch","daemon socket closed \u2014 starting non-spawning reconnect loop"),this.reconnectLoop()})}async reconnectLoop(){if(this.reconnecting)return;this.reconnecting=!0;let J=500,z=0;while(!this.client.isDisposed){if(await new Promise((Y)=>setTimeout(Y,J)),this.client.isDisposed)break;z++;try{await this.init(),tz("orch",`reconnected and re-subscribed after ${z} attempt(s) \u2014 task list re-synced`),this.reconnecting=!1;return}catch(Y){if(z===1||z%10===0)o1("orch-reconnect",Y);J=Math.min(J*2,3000)}}this.reconnecting=!1}async init(){let J=await this.client.request("hello",{protocolVersion:$J,minProtocolVersion:FY}),z=typeof J.protocolVersion==="number"?J.protocolVersion:$J,Y=typeof J.minProtocolVersion==="number"?J.minProtocolVersion:z;if(!yQ({localVersion:$J,localMin:FY,remoteVersion:z,remoteMin:Y}))throw Error(`kobe daemon is protocol v${z} (min v${Y}); this client is v${$J} (min v${FY}). Restart the daemon (\`kobe daemon restart\`) or upgrade kobe.`);if(this.setDaemonVersionSig(typeof J.kobeVersion==="string"?J.kobeVersion:null),J.tasks&&this.subscribesTasks)this.setTasks(J.tasks.map(tX));if(await this.client.subscribe({role:this.role,channels:this.channels}),J.capabilities?.includes("worktree.changes")){if(this.worktreeChangesAcc()===null)this.setWorktreeChangesSig(new Map)}else this.setWorktreeChangesSig(null);if(J.capabilities?.includes("transcript.activity")){if(this.transcriptActivityAcc()===null)this.setTranscriptActivitySig(new Map)}else this.setTranscriptActivitySig(null);this.setConnectionState("online"),tz("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,p0)}engineStateSignal(){return this.engineStateAcc}taskJobsSignal(){return this.taskJobsAcc}worktreeChangesSignal(){return this.worktreeChangesAcc}transcriptActivitySignal(){return this.transcriptActivityAcc}uiPrefsSignal(){return this.uiPrefsAcc}keybindingsRevSignal(){return this.keybindingsRevAcc}listTasks(){return this.tasksAcc()}getTask(J){return this.tasksAcc().find((z)=>z.id===J)}subscribeTasks(J){try{J(this.listTasks())}catch(Y){console.error("[kobe RemoteOrchestrator] task listener threw on subscribe:",Y)}let z=!0;return fG((Y)=>{return r0(()=>{let G=this.tasksAcc();if(z){z=!1;return}try{J(G)}catch(Z){console.error("[kobe RemoteOrchestrator] task listener threw:",Z)}}),Y})}async createTask(J){let{modelEffort:z,...Y}=J,G=await this.client.request("task.create",{...Y,effort:z});return tX(G.task)}async ensureMainTask(J){let z=await this.client.request("task.ensureMain",{repo:J});return tX(z.task)}async ensureWorktree(J){return(await this.client.request("task.ensureWorktree",{taskId:String(J)})).worktreePath}async forgetProject(J){await this.client.request("project.forget",{repo:J})}async setTitle(J,z){await this.client.request("task.rename",{taskId:String(J),title:z})}async setBranch(J,z){await this.client.request("task.setBranch",{taskId:String(J),branch:z})}async setVendor(J,z){await this.client.request("task.setVendor",{taskId:String(J),vendor:z})}async setPinned(J,z){await this.client.request("task.pin",{taskId:String(J),pinned:z})}async moveTask(J,z){await this.client.request("task.move",{taskId:String(J),direction:z<0?"up":"down"})}async setArchived(J,z){await this.client.request("task.archive",{taskId:String(J),archived:z})}async setStatus(J,z){await this.client.request("task.status",{taskId:String(J),status:z})}async deleteTask(J,z){await this.client.request("task.delete",{taskId:String(J),force:z?.force})}async discoverAdoptableWorktrees(J){return(await this.client.request("worktree.discoverAdoptable",{repo:J})).worktrees}async adoptWorktree(J){let z=await this.client.request("worktree.adopt",J);return tX(z.task)}async setActiveTask(J){await this.client.request("task.setActive",{taskId:J===null?null:String(J)})}handleEvent(J,z){if(J==="task.snapshot"){let Y=z?.tasks;if(Array.isArray(Y))this.setTasks(Y.map(tX)),this.pruneEngineState(Y),this.pruneTaskJobs(Y);else o1("orch",`dropped task.snapshot event: tasks is not an array (got ${jY(Y)})`);return}if(J==="active-task"){let Y=z?.taskId;this.setActiveTaskSig(typeof Y==="string"?Y:null);return}if(J==="update"){let Y=z?.info;this.setUpdateSig(Y??null);return}if(J==="engine-state"){let Y=z;if(typeof Y?.taskId!=="string"||typeof Y.state!=="string"){o1("orch",`dropped engine-state event: taskId/state must be strings (taskId=${jY(Y?.taskId)}, state=${jY(Y?.state)})`);return}let G=new Map(this.engineStateAcc());if(Y.state==="idle")G.delete(Y.taskId);else G.set(Y.taskId,{state:Y.state,detail:Y.detail,at:typeof Y.at==="number"?Y.at:0});this.setEngineStateSig(G);return}if(J==="task.jobs"){let Y=z;if(typeof Y?.taskId!=="string"||Y.kind!=="ensureWorktree"){o1("orch",`dropped task.jobs event: expected string taskId + kind "ensureWorktree" (taskId=${jY(Y?.taskId)}, kind=${jY(Y?.kind)})`);return}let G=this.taskJobsAcc();if(Y.phase==="running"){let Z=new Map(G);Z.set(Y.taskId,{kind:Y.kind}),this.setTaskJobsSig(Z);return}if((Y.phase==="done"||Y.phase==="error")&&G.has(Y.taskId)){let Z=new Map(G);Z.delete(Y.taskId),this.setTaskJobsSig(Z)}return}if(J==="worktree.changes"){let Y=$T(z);if(!Y){o1("orch",`dropped worktree.changes event: malformed changes payload (${jY(z)})`);return}let G=this.worktreeChangesAcc();if(G&&_T(G,Y))return;this.setWorktreeChangesSig(Y);return}if(J==="transcript.activity"){let Y=pT(z);if(!Y){o1("orch",`dropped transcript.activity event: malformed activity payload (${jY(z)})`);return}let G=this.transcriptActivityAcc();if(G&&rT(G,Y))return;this.setTranscriptActivitySig(Y);return}if(J==="ui-prefs"){let Y=aT(z);if(!Y){let G=z?.theme;o1("orch",`dropped ui-prefs event: theme must be a string (got ${jY(G)})`);return}this.setUiPrefsSig(Y);return}if(J==="keybindings"){let Y=z;if(typeof Y?.rev!=="number"){o1("orch",`dropped keybindings event: rev must be a number (got ${jY(Y?.rev)})`);return}this.setKeybindingsRevSig(Y.rev);return}}pruneEngineState(J){let z=this.engineStateAcc();if(z.size===0)return;let Y=new Set(J.map((Z)=>Z.id)),G=null;for(let Z of z.keys()){if(Y.has(Z))continue;if(!G)G=new Map(z);G.delete(Z)}if(G)this.setEngineStateSig(G)}pruneTaskJobs(J){let z=this.taskJobsAcc();if(z.size===0)return;let Y=new Set(J.map((Z)=>Z.id)),G=null;for(let Z of z.keys()){if(Y.has(Z))continue;if(!G)G=new Map(z);G.delete(Z)}if(G)this.setTaskJobsSig(G)}}function tX(J){return{id:jX(J.id),title:J.title,repo:J.repo,branch:J.branch,worktreePath:J.worktreePath,kind:J.kind,status:J.status,archived:J.archived,pinned:J.pinned,vendor:J.vendor,prStatus:J.prStatus,modelEffort:J.modelEffort,createdAt:J.createdAt,updatedAt:J.updatedAt}}var nY=k(()=>{zG();FJ();eY();j1();SZ();rJ();MJ()});function oD(J){let z=J[jz];if(!z){if(Object.defineProperty(J,jz,{value:z=new Proxy(J,tT)}),!Array.isArray(J)){let Y=Object.keys(J),G=Object.getOwnPropertyDescriptors(J),Z=Object.getPrototypeOf(J),X=Z!==null&&J!==null&&typeof J==="object"&&!Array.isArray(J)&&Z!==Object.prototype;if(X){let Q=Object.getOwnPropertyDescriptors(Z);Y.push(...Object.keys(Q)),Object.assign(G,Q)}for(let Q=0,f=Y.length;Q<f;Q++){let H=Y[Q];if(X&&H==="constructor")continue;if(G[H].get)Object.defineProperty(J,H,{configurable:!0,enumerable:G[H].enumerable,get:G[H].get.bind(z)})}}}return z}function zH(J){let z;return J!=null&&typeof J==="object"&&(J[jz]||!(z=Object.getPrototypeOf(J))||z===Object.prototype||Array.isArray(J))}function JQ(J,z=new Set){let Y,G,Z,X;if(Y=J!=null&&J[Q9])return Y;if(!zH(J)||z.has(J))return J;if(Array.isArray(J)){if(Object.isFrozen(J))J=J.slice(0);else z.add(J);for(let Q=0,f=J.length;Q<f;Q++)if(Z=J[Q],(G=JQ(Z,z))!==Z)J[Q]=G}else{if(Object.isFrozen(J))J=Object.assign({},J);else z.add(J);let Q=Object.keys(J),f=Object.getOwnPropertyDescriptors(J);for(let H=0,B=Q.length;H<B;H++){if(X=Q[H],f[X].get)continue;if(Z=J[X],(G=JQ(Z,z))!==Z)J[X]=G}}return J}function YH(J,z){let Y=J[z];if(!Y)Object.defineProperty(J,z,{value:Y=Object.create(null)});return Y}function zQ(J,z,Y){if(J[z])return J[z];let[G,Z]=a(Y,{equals:!1,internal:!0});return G.$=Z,J[z]=G}function oT(J,z){let Y=Reflect.getOwnPropertyDescriptor(J,z);if(!Y||Y.get||!Y.configurable||z===jz||z===mZ)return Y;return delete Y.value,delete Y.writable,Y.get=()=>J[jz][z],Y}function sD(J){Lq()&&zQ(YH(J,mZ),rD)()}function sT(J){return sD(J),Reflect.ownKeys(J)}function GH(J,z,Y,G=!1){if(z==="__proto__"){console.warn('Refusing to set "__proto__" on a store.');return}if(!G&&J[z]===Y)return;let Z=J[z],X=J.length;if(pD.onStoreNodeUpdate&&pD.onStoreNodeUpdate(J,z,Y,Z),Y===void 0){if(delete J[z],J[WY]&&J[WY][z]&&Z!==void 0)J[WY][z].$()}else if(J[z]=Y,J[WY]&&J[WY][z]&&Z===void 0)J[WY][z].$();let Q=YH(J,mZ),f;if(f=zQ(Q,z,Z))f.$(()=>Y);if(Array.isArray(J)&&J.length!==X){for(let H=J.length;H<X;H++)(f=Q[H])&&f.$();(f=zQ(Q,"length",X))&&f.$(J.length)}(f=Q[rD])&&f.$()}function tD(J,z){let Y=Object.keys(z);for(let G=0;G<Y.length;G+=1){let Z=Y[G];if(eD(Z))continue;GH(J,Z,z[Z])}}function eD(J){return J==="__proto__"||J==="constructor"||J==="prototype"}function eT(J,z){if(typeof z==="function")z=z(J);if(z=JQ(z),Array.isArray(z)){if(J===z)return;let Y=0,G=z.length;for(;Y<G;Y++){let Z=z[Y];if(J[Y]!==Z)GH(J,Y,Z)}GH(J,"length",G)}else tD(J,z)}function eX(J,z,Y=[]){let G,Z=J;if(z.length>1){G=z.shift();let Q=typeof G,f=Array.isArray(J);if(Q==="string"&&(G==="__proto__"||z.length>1&&eD(G))){console.warn(`Refusing to traverse unsafe key "${G}" on a store.`);return}if(Array.isArray(G)){for(let H=0;H<G.length;H++)eX(J,[G[H]].concat(z),Y);return}else if(f&&Q==="function"){for(let H=0;H<J.length;H++)if(G(J[H],H))eX(J,[H].concat(z),Y);return}else if(f&&Q==="object"){let{from:H=0,to:B=J.length-1,by:V=1}=G;for(let j=H;j<=B;j+=V)eX(J,[j].concat(z),Y);return}else if(z.length>1){eX(J[G],z,[G].concat(Y));return}Z=J[G],Y=[G].concat(Y)}let X=z[0];if(typeof X==="function"){if(X=X(Z,Y),X===Z)return}if(G===void 0&&X==null)return;if(X=JQ(X),G===void 0||zH(Z)&&zH(X)&&!Array.isArray(X))tD(Z,X);else GH(J,G,X)}function dz(...[J,z]){let Y=JQ(J||{}),G=Array.isArray(Y);if(typeof Y!=="object"&&typeof Y!=="function")throw Error(`Unexpected type ${typeof Y} received when initializing 'createStore'. Expected an object.`);let Z=oD(Y);TV.registerGraph({value:Y,name:z&&z.name});function X(...Q){Dq(()=>{G&&Q.length===1?eT(Y,Q[0]):eX(Y,Q)})}return[Z,X]}var Q9,mZ,WY,rD,pD,tT,m$;var cZ=k(()=>{j1();Q9=Symbol("store-raw"),mZ=Symbol("store-node"),WY=Symbol("store-has"),rD=Symbol("store-self"),pD={onStoreNodeUpdate:null};tT={get(J,z,Y){if(z===Q9)return J;if(z===jz)return Y;if(z===Vq)return sD(J),Y;let G=YH(J,mZ),Z=G[z],X=Z?Z():J[z];if(z===mZ||z===WY||z==="__proto__")return X;if(!Z){let Q=Object.getOwnPropertyDescriptor(J,z);if(Lq()&&(typeof X!=="function"||J.hasOwnProperty(z))&&!(Q&&Q.get))X=zQ(G,z,X)()}return zH(X)?oD(X):X},has(J,z){if(z===Q9||z===jz||z===Vq||z===mZ||z===WY||z==="__proto__")return!0;return Lq()&&zQ(YH(J,WY),z)(),z in J},set(){return console.warn("Cannot mutate a Store directly"),!0},deleteProperty(){return console.warn("Cannot mutate a Store directly"),!0},ownKeys:sT,getOwnPropertyDescriptor:oT};m$=Symbol("store-root")});function ZH(J){let z=Tz();return{provider:(Y)=>{let G=J.init(Y);return b(Z0,{get when(){return G.ready===void 0||G.ready===!0},get children(){return b(z.Provider,{value:G,get children(){return Y.children}})}})},use(){let Y=wJ(z);if(!Y)throw Error(`${J.name} context must be used within a context provider`);return Y}}}var q9=k(()=>{P();P();j1()});import{RGBA as yG}from"@opentui/core";function zy(){return Object.keys(HJ.themes)}function YQ(J){return Boolean(HJ.themes[J])}function H9(J,z){if(!J)return!1;if(!z||typeof z!=="object"||!z.theme)return!1;return xG("themes",{...HJ.themes,[J]:z}),!0}function f9(J,z="dark"){let Y=J.defs??{};function G(H,B=[]){if(typeof H==="string"){if(H==="transparent"||H==="none")return yG.fromInts(0,0,0,0);if(H.startsWith("#"))return yG.fromHex(H);if(B.includes(H))return yG.fromInts(0,0,0);let V=Y[H]??J.theme[H];if(V===void 0)return yG.fromInts(0,0,0);return G(V,[...B,H])}return G(H[z],B)}let Z={};for(let[H,B]of Object.entries(J.theme))Z[H]=G(B);let X=Z.text??yG.fromHex("#ffffff"),Q=Z.background??yG.fromHex("#000000");return{...{primary:Z.primary??X,secondary:Z.secondary??X,accent:Z.accent??Z.primary??X,error:Z.error??X,warning:Z.warning??X,success:Z.success??X,info:Z.info??X,text:X,textMuted:Z.textMuted??X,background:Q,backgroundPanel:Z.backgroundPanel??Q,backgroundElement:Z.backgroundElement??Q,backgroundMenu:Z.backgroundMenu??Z.backgroundElement??Q,backgroundDialog:Z.backgroundDialog??Z.backgroundPanel??Q,border:Z.border??X,borderActive:Z.borderActive??Z.border??X,borderSubtle:Z.borderSubtle??Z.border??X,diffAdded:Z.diffAdded??Z.success??X,diffRemoved:Z.diffRemoved??Z.error??X,diffContext:Z.diffContext??Z.textMuted??X,diffHunkHeader:Z.diffHunkHeader??Z.textMuted??X,diffAddedBg:Z.diffAddedBg??Q,diffRemovedBg:Z.diffRemovedBg??Q,selectedListItemText:Z.selectedListItemText??Q},...Z}}var Jy,uG,HJ,xG,d0,JL;var v1=k(()=>{P();j1();cZ();q9();uq();Eq();wq();Pq();hq();vq();mq();Jy={claude:HZ,conductor:BZ,nord:WZ,opencode:VZ,dracula:jZ,tokyonight:UZ,"osaka-jade":KZ},uG=["primary","success","info"],[HJ,xG]=dz({themes:{...Jy},active:"claude",mode:"dark",transparentBackground:!1,focusAccent:"primary"});({use:d0,provider:JL}=ZH({name:"Theme",init:(J)=>{if(J.mode)xG("mode",J.mode);if(J.theme&&YQ(J.theme))xG("active",J.theme);let z=fJ(),Y=K0(()=>{let Z=HJ.themes[HJ.active];if(Z)return f9(Z,HJ.mode);let X=HJ.themes.claude??HJ.themes.opencode??Object.values(HJ.themes)[0];if(!X)return f9({theme:{background:"#000000",text:"#ffffff"}},HJ.mode);return f9(X,HJ.mode)}),G=K0(()=>{let Z=Y(),X=Z[HJ.focusAccent]??Z.primary,Q={...Z,focusAccent:X};if(!HJ.transparentBackground)return Q;let f=yG.fromInts(0,0,0,0);return{...Q,background:f,backgroundPanel:f}});return r0(()=>{z?.setBackgroundColor(G().background)}),{theme:new Proxy({},{get(Z,X){let Q=G();return Q[X]??Q.text}}),get selected(){return HJ.active},get transparentBackground(){return HJ.transparentBackground},get focusAccent(){return HJ.focusAccent},mode(){return HJ.mode},set(Z){if(!YQ(Z))return!1;return xG("active",Z),!0},setMode(Z){xG("mode",Z)},setTransparentBackground(Z){xG("transparentBackground",Z)},setFocusAccent(Z){xG("focusAccent",Z)},all(){return zy()},has(Z){return YQ(Z)}}}}))});var zL,YL;var GL=k(()=>{zL={cancel:"Cancel",confirm:"Confirm",paneCrash:{title:"This pane crashed",hint:"Reload it from the Tasks pane (the error was logged to client.log)."},rename:{defaultTitle:"Rename task",defaultFieldLabel:"title",footerHint:"enter {submitLabel} \xB7 esc cancel",defaultSubmitLabel:"rename"}},YL={cancel:"\u53D6\u6D88",confirm:"\u786E\u8BA4",paneCrash:{title:"\u6B64\u9762\u677F\u5DF2\u5D29\u6E83",hint:"\u8BF7\u4ECE\u4EFB\u52A1\u9762\u677F\u91CD\u65B0\u52A0\u8F7D\uFF08\u9519\u8BEF\u5DF2\u8BB0\u5F55\u5230 client.log\uFF09\u3002"},rename:{defaultTitle:"\u91CD\u547D\u540D\u4EFB\u52A1",defaultFieldLabel:"\u540D\u79F0",footerHint:"enter {submitLabel} \xB7 esc \u53D6\u6D88",defaultSubmitLabel:"\u91CD\u547D\u540D"}}});var ZL,XL;var QL=k(()=>{ZL={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"}},XL={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 qL,fL;var HL=k(()=>{qL={title:"kobe \u2014 keybindings",esc:"esc"},fL={title:"kobe \u2014 \u5FEB\u6377\u952E",esc:"esc"}});var BL,jL;var WL=k(()=>{BL={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)"}},jL={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 VL,KL;var UL=k(()=>{VL={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",summaryAll:"Adopted {count} worktree(s)",summaryPartial:"Adopted {done}/{total} worktrees \u2014 the rest failed (see log)",summaryNone:"Couldn't adopt any worktree: {error}"},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"}},KL={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",summaryAll:"\u5DF2\u63A5\u7BA1 {count} \u4E2A worktree",summaryPartial:"\u5DF2\u63A5\u7BA1 {done}/{total} \u4E2A worktree \u2014 \u5176\u4F59\u5931\u8D25\uFF08\u8BE6\u89C1\u65E5\u5FD7\uFF09",summaryNone:"\u6CA1\u6709 worktree \u63A5\u7BA1\u6210\u529F\uFF1A{error}"},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 DL,LL;var ML=k(()=>{DL={badge:{newActivity:"\u25CF new"},preview:{diffVsHead:"diff vs HEAD",file:"file",closeHint:"\xB7 q to close",loading:"loading\u2026"}},LL={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 FL,OL;var AL=k(()=>{FL={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"},OL={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 RL,gL;var CL=k(()=>{RL={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 sends on 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 for a new line \xB7 tab to Send)",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)"}},gL={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 \u5728\u53D1\u9001\u9879\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 \u6362\u884C \xB7 tab \u8DF3\u5230\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 NL,kL;var bL=k(()=>{NL={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}"}},kL={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 SL,IL;var TL=k(()=>{SL={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`"}},IL={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 GQ(J){return typeof J==="string"&&EG.some((z)=>z.id===J)}var Yy,Gy,EG,dZ,nZ="en";var iZ=k(()=>{GL();QL();HL();WL();UL();ML();AL();CL();bL();TL();Yy={settings:RL,tasks:NL,files:ZL,newTask:VL,ops:DL,update:SL,quickTask:FL,help:qL,common:zL,keys:BL},Gy={settings:gL,tasks:kL,files:XL,newTask:KL,ops:LL,update:IL,quickTask:OL,help:fL,common:YL,keys:jL},EG=[{id:"en",label:"English"},{id:"zh",label:"\u4E2D\u6587"}],dZ={en:Yy,zh:Gy}});function ZQ(J){if(dZ[J])Zy("lang",J)}function j9(){return B9.lang}function yL(J,z){let Y=J;for(let G of z.split("."))if(Y&&typeof Y==="object"&&G in Y)Y=Y[G];else return;return typeof Y==="string"?Y:void 0}function Xy(J,z){if(!z)return J;return J.replace(/\{(\w+)\}/g,(Y,G)=>(G in z)?String(z[G]):Y)}function F(J,z){let Y=B9.lang,G=yL(dZ[Y],J)??yL(dZ.en,J)??J;return Xy(G,z)}function W9(J,z){let Y=B9.lang,G=(Z)=>{return Z.keys[J]?.[z]};return G(dZ[Y])??G(dZ.en)??z}var B9,Zy;var ZJ=k(()=>{cZ();iZ();iZ();[B9,Zy]=dz({lang:nZ})});function Qy(J){let z=[],Y=J.name;if(Y)z.push(Y);if(Y==="return")z.push("enter");if(Y==="enter")z.push("return");let G=[];if(J.ctrl)G.push("ctrl");if(J.meta)G.push("cmd");if(J.option)G.push("alt");if(J.shift&&Y&&Y.length>1)G.push("shift");if(G.length===0)return z;let Z=`${G.join("+")}+`;return z.map((X)=>Z+X)}function K9(J,z){if(z.defaultPrevented)return!1;if(V9)return!1;let Y=J.slice(),G=Qy(z);V9=!0;try{for(let Z=Y.length-1;Z>=0;Z--){let X=Y[Z];if(!X)continue;let Q=X.config();if(Q.enabled===!1)continue;let f=Q.bindings.find((H)=>G.includes(H.key));if(f)return f.cmd(z,f.slot),z.preventDefault(),!0}return!1}finally{V9=!1}}var V9=!1;function fy(){if(U9)return;let J=fJ();if(!J)throw Error("useBindings: no renderer in scope; call inside a component rendered by @opentui/solid.");U9=J.keyInput,xL=(z)=>{K9(XH,z)},U9.on("keypress",xL)}function D1(J){fy();let z=qy++,Y={config:J,id:z};r0(()=>{J()}),XH.push(Y),k1(()=>{let G=XH.findIndex((Z)=>Z.id===z);if(G>=0)XH.splice(G,1)})}var qy=1,XH,U9=null,xL=null;var yJ=k(()=>{P();j1();XH=[]});function QH(){let J=new Set;function z(G,Z){let X=setTimeout(()=>{J.delete(X),G()},Z);return J.add(X),X}function Y(G){if(J.delete(G))clearTimeout(G)}return k1(()=>{for(let G of J)clearTimeout(G);J.clear()}),{set:z,clear:Y}}var D9=k(()=>{j1()});import{RGBA as uL}from"@opentui/core";function jy(J){let z=mz(),Y=d0(),{theme:G}=Y,Z=fJ(),X=!1,Q=()=>{if(J.size==="xlarge")return 140;if(J.size==="large")return 110;if(J.size==="small")return 50;return 80},f=2,H=()=>Math.max(8,z().height-f*2);return(()=>{var B=W("box"),V=W("box");return D(B,V),q(B,"onMouseDown",()=>{X=!!Z?.getSelection()}),q(B,"onMouseUp",()=>{if(X){X=!1;return}J.onClose?.()}),q(B,"alignItems","center"),q(B,"justifyContent","center"),q(B,"position","absolute"),q(B,"zIndex",3000),q(B,"left",0),q(B,"top",0),q(V,"onMouseUp",(j)=>{X=!1,j.stopPropagation()}),q(V,"flexShrink",1),q(V,"flexGrow",0),q(V,"paddingTop",1),U(V,()=>J.children),y((j)=>{var K=z().width,L=z().height,A=Y.transparentBackground?By:Hy,O=Q(),g=z().width-2,x=H(),_=G.backgroundDialog;return K!==j.e&&(j.e=q(B,"width",K,j.e)),L!==j.t&&(j.t=q(B,"height",L,j.t)),A!==j.a&&(j.a=q(B,"backgroundColor",A,j.a)),O!==j.o&&(j.o=q(V,"width",O,j.o)),g!==j.i&&(j.i=q(V,"maxWidth",g,j.i)),x!==j.n&&(j.n=q(V,"maxHeight",x,j.n)),_!==j.s&&(j.s=q(V,"backgroundColor",_,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 Wy(){let[J,z]=dz({stack:[],size:"medium"}),Y=fJ(),G=null,Z=QH();function X(){Z.set(()=>{if(!G)return;if(G.isDestroyed)return;function Q(H){for(let B of H.getChildren()){if(B===G)return!0;if(Q(B))return!0}return!1}let f=Y?.root;if(!f)return;if(!Q(f))return;G.focus()},1)}return D1(()=>({enabled:J.stack.length>0&&!Y?.getSelection()?.getSelectedText(),bindings:[{key:"escape",cmd:()=>{if(Y?.getSelection())Y.clearSelection();J.stack.at(-1)?.onClose?.(),z("stack",J.stack.slice(0,-1)),X()}},{key:"ctrl+c",cmd:()=>{if(Y?.getSelection())Y.clearSelection();J.stack.at(-1)?.onClose?.(),z("stack",J.stack.slice(0,-1)),X()}}]})),{clear(){for(let Q of J.stack)Q.onClose?.();Dq(()=>{z("size","medium"),z("stack",[])}),X()},replace(Q,f){if(J.stack.length===0)G=Y?.currentFocusedRenderable??null,G?.blur();for(let H of J.stack)H.onClose?.();z("size","medium"),z("stack",[{element:Q,onClose:f}])},push(Q,f){if(J.stack.length===0)G=Y?.currentFocusedRenderable??null,G?.blur();z("stack",[...J.stack,{element:Q,onClose:f}])},pop(){if(J.stack.at(-1)?.onClose?.(),z("stack",J.stack.slice(0,-1)),J.stack.length===0)X()},get stack(){return J.stack},get size(){return J.size},setSize(Q){z("size",Q)}}}function wL(J){let z=Wy();return b(EL.Provider,{value:z,get children(){return[x0(()=>J.children),(()=>{var Y=W("box");return q(Y,"position","absolute"),q(Y,"zIndex",3000),U(Y,b(Z0,{get when(){return z.stack.length},get children(){return b(jy,{onClose:()=>z.clear(),get size(){return z.size},get children(){return z.stack.at(-1).element()}})}})),Y})()]}})}function c1(){let J=wJ(EL);if(!J)throw Error("useDialog must be used within a DialogProvider");return J}var Hy,By,EL;var nJ=k(()=>{P();P();P();P();P();P();P();P();j1();cZ();v1();yJ();D9();Hy=uL.fromInts(0,0,0,128),By=uL.fromInts(0,0,0,64);EL=Tz()});import{spawnSync as L9}from"child_process";import*as hL from"fs";function PL(J){return`This folder isn't a git repository yet, and a task needs a git branch to work in. To fix it, turn ${J} 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 vL(J){let z=J.trim();if(!z)return"repo path is required";let Y;try{Y=hL.statSync(z)}catch{return`path does not exist: ${z}`}if(!Y.isDirectory())return`not a directory: ${z}`;try{if(L9("git",["rev-parse","--git-dir"],{cwd:z,encoding:"utf-8",timeout:2000,stdio:["ignore","pipe","ignore"]}).status!==0)return PL(z)}catch{return PL(z)}return null}function XQ(J){if(!J)return null;try{let z=L9("git",["rev-parse","--abbrev-ref","HEAD"],{cwd:J,encoding:"utf-8",timeout:2000,stdio:["ignore","pipe","ignore"]});if(z.status!==0)return null;let Y=z.stdout.trim();if(!Y||Y==="HEAD")return null;return Y}catch{return null}}function mL(J){if(!J)return[];try{let z=L9("git",["for-each-ref","--format=%(refname:short)","refs/heads/"],{cwd:J,encoding:"utf-8",timeout:2000});if(z.status!==0)return[];return z.stdout.split(`
|
|
263
|
-
`).map((Y)=>Y.trim()).filter(Boolean).sort((Y,G)=>{let Z=(f)=>f==="main"?0:f==="master"?1:f==="develop"?2:3,X=Z(Y),Q=Z(G);if(X!==Q)return X-Q;return Y.localeCompare(G)})}catch{return[]}}var Cz="main";var qH=()=>{};import*as cL from"fs";import*as fH from"os";function UJ(J){if(J==="~")return fH.homedir();if(J.startsWith("~/"))return fH.homedir()+J.slice(1);return J}function M9(J){if(!J)return{base:"",filter:""};let Y=UJ(J==="~"?"~/":J);if(Y.endsWith("/"))return{base:Y,filter:""};let G=Y.lastIndexOf("/");if(G===-1)return{base:"",filter:Y};return{base:Y.slice(0,G+1),filter:Y.slice(G+1)}}function F9(J){if(!J)return[];try{let z=cL.readdirSync(J,{withFileTypes:!0}),Y=[];for(let G of z)if(G.isDirectory())Y.push(G.name);return Y.sort((G,Z)=>G.localeCompare(Z))}catch{return[]}}function O9(J,z){let Y=z.toLowerCase(),Z=Y.startsWith(".")?J:J.filter((X)=>!X.startsWith("."));if(!Y)return Z;return Z.filter((X)=>X.toLowerCase().startsWith(Y))}function QQ(J,z,Y){let G=z+Y;if(J.startsWith("~")){let Z=fH.homedir();if(G===Z)return"~";if(G.startsWith(`${Z}/`))return`~${G.slice(Z.length)}`}return G}var HH=()=>{};import{spawn as Vy}from"child_process";import*as wG from"fs";import*as qQ from"path";function dL(J){let z=J.trim().replace(/\/+$/,"");if(!z)return"";let Y=z.lastIndexOf("/"),G=z.lastIndexOf(":"),Z=Math.max(Y,G);return(Z>=0?z.slice(Z+1):z).replace(/\.git$/i,"")}function nL(J){let z=J.trim();if(!z)return F("newTask.error.gitUrlRequired");let Y=z.includes("://"),G=z.includes("@")&&z.includes(":"),Z=z.includes("/");if(!Y&&!G&&!Z)return F("newTask.error.gitUrlInvalid",{url:z});return null}function iL(J,z){let Y=z.trim();if(!Y)return F("newTask.error.folderRequired");if(Y.includes("/")||Y.includes("\\"))return F("newTask.error.folderHasSeparator");let G=J.trim();if(!G)return F("newTask.error.parentRequired");let Z=UJ(G),X;try{X=wG.statSync(Z)}catch{return F("newTask.error.parentNotFound",{path:Z})}if(!X.isDirectory())return F("newTask.error.parentNotDir",{path:Z});let Q=qQ.join(Z,Y);if(wG.existsSync(Q))return F("newTask.error.targetExists",{path:Q});return null}function lL(J,z){return qQ.join(UJ(J.trim()),z.trim())}function $L(J,z){let Y=z.trim();if(!Y)return z;let G=UJ(J.trim());if(!G)return z;try{if(!wG.statSync(G).isDirectory())return z}catch{return z}if(!wG.existsSync(qQ.join(G,Y)))return Y;for(let Z=2;Z<1000;Z++){let X=`${Y}-${Z}`;if(!wG.existsSync(qQ.join(G,X)))return X}return Y}function aL(J,z,Y){return new Promise((G)=>{let Z="";try{let X=Vy("git",["clone","--progress",J,z],{stdio:["ignore","ignore","pipe"]});X.stderr?.setEncoding("utf-8"),X.stderr?.on("data",(Q)=>{if(Z+=Q,Y){let f=Q.split(/[\r\n]+/).filter((B)=>B.trim().length>0),H=f[f.length-1];if(H)Y(H)}}),X.on("error",(Q)=>{G({ok:!1,error:Q.message})}),X.on("close",(Q)=>{if(Q===0){G({ok:!0,path:z});return}let f=Z.split(/[\r\n]+/).filter((H)=>H.trim().length>0).pop()??`git clone exited with ${Q}`;G({ok:!1,error:f})})}catch(X){G({ok:!1,error:X instanceof Error?X.message:String(X)})}})}var _L=k(()=>{ZJ();HH()});function A9(J){if(J==="existing")return"clone";if(J==="clone")return"adopt";return"existing"}function R9(J){if(J==="existing")return"adopt";if(J==="clone")return"existing";return"clone"}function pL(J,z){let Y=J.trim();if(z.includes(Y))return"saved";if(Y.startsWith("~"))return"browse";if(Y.includes("/"))return"browse";return"saved"}function DJ(J){return J.replace(/[\r\n]+/g,"")}function fQ(J){return!/\S/u.test(J)}function g9(J,z="existing"){if(J==="confirm")return"tabs";if(J==="tabs")return"engine";if(J==="engine")return C9(z);if(z==="clone"){if(J==="cloneUrl")return"cloneParent";if(J==="cloneParent")return"cloneFolder";if(J==="cloneFolder")return"cloneBaseRef";if(J==="cloneBaseRef")return"confirm";return"cloneUrl"}if(z==="adopt")return J==="adoptFilter"?"confirm":"adoptFilter";if(J==="repo")return"baseRef";if(J==="baseRef")return"confirm";return"repo"}function C9(J){if(J==="clone")return"cloneUrl";if(J==="adopt")return"adoptFilter";return"repo"}function rL(J,z){let Y=z.trim();if(!Y)return J;return J.filter((G)=>AQ(Y,G.path))}function oL(J,z){let Y=new Set,G=[];for(let Z of[J,...z]){let X=Z.trim();if(!X||Y.has(X))continue;Y.add(X),G.push(X)}return G}function sL(J,z){let Y=z.trim().toLowerCase();if(!Y)return J;return J.filter((G)=>G.toLowerCase().includes(Y))}function tL(J,z){let Y=z.trim().toLowerCase();if(!Y)return J;return J.filter((G)=>G.toLowerCase().includes(Y))}function HQ(J,z,Y=Ky){let G=J.length;if(G<=Y)return{items:J,start:0,total:G};let Z=Math.floor(Y/2),X=Math.max(0,z-Z);if(X+Y>G)X=G-Y;return{items:J.slice(X,X+Y),start:X,total:G}}function nz(J,z){if(z<=0)return 0;return Math.max(0,Math.min(z-1,J))}function eL(J,z,Y){let G=z[Y];if(G)return G;return J.trim()||Cz}var Ky=8;var N9=k(()=>{uH();qH()});import{TextAttributes as Yz}from"@opentui/core";function J3(J){let z=c1(),{theme:Y}=d0(),[G,Z]=a("existing"),X=()=>{let d=J.availableVendors;return d&&d.length>0?d:n1},Q=(()=>{let d=X(),Y0=J.defaultVendor??"claude";return d.includes(Y0)?Y0:d[0]??"claude"})(),[f,H]=a(Q),[B,V]=a("tabs"),[j,K]=a(J.defaultRepo),[L,A]=a(XQ(UJ(J.defaultRepo.trim()))??Cz),[O,g]=a(!1),[x,_]=a(""),[S,N]=a(J.defaultCloneParent?.trim()?J.defaultCloneParent:"~/"),[M,I]=a(""),[r,i]=a(!1),[e,J0]=a(Cz),[T,q0]=a(!1),[p,B0]=a(""),L0=K0(()=>oL(J.defaultRepo,J.savedRepos)),V0=K0(()=>pL(j(),L0())),t=K0(()=>M9(j())),h=K0(()=>F9(t().base)),C=K0(()=>O9(h(),t().filter)),o=K0(()=>sL(L0(),j())),E=K0(()=>V0()==="browse"?C():o()),[c,s]=a(0),X0=K0(()=>HQ(E(),c())),[F0,P0]=a(!1),A0=K0(()=>mL(UJ(j().trim()))),N0=K0(()=>tL(A0(),L())),[u,g0]=a(0),Q0=K0(()=>HQ(N0(),u())),R0=K0(()=>M9(S())),y0=K0(()=>F9(R0().base)),H1=K0(()=>O9(y0(),R0().filter)),[G1,w0]=a(0),o0=K0(()=>HQ(H1(),G1())),[$,W0]=a(!1),[T0,s0]=a(""),[a0,_0]=a(0),[t0,N1]=a(new Set),[R1]=Uq(()=>G()==="adopt"?UJ(j().trim()):null,async(d)=>J.discoverAdoptable?await J.discoverAdoptable(d):[]),z0=K0(()=>rL(R1()??[],T0())),G0=K0(()=>HQ(z0().map((d)=>d.path),a0())),H0=K0(()=>{let d=G0();return z0().slice(d.start,d.start+d.items.length)});r0(()=>{z0(),_0((d)=>nz(d,z0().length))});function k0(d){N1((Y0)=>{let I0=new Set(Y0);if(I0.has(d))I0.delete(d);else I0.add(d);return I0})}function R(){let d=z0()[a0()];if(d)k0(d.path)}r0(()=>{N0(),g0(0)}),r0(()=>{let d=UJ(j().trim());if(!d)return;if(O())return;let Y0=XQ(d);if(Y0)A(Y0)}),r0(()=>{E(),s(0)}),r0(()=>{H1(),w0(0)}),r0(()=>{let d=x(),Y0=S();if(r())return;let I0=dL(d);I($L(Y0,I0))});let[h0,U0]=a(null);r0(()=>{j(),x(),S(),M(),T0(),U0(null)});function u0(){let d=UJ(j().trim());if(!d)return;let Y0=vL(d);if(Y0){U0(Y0),V("repo");return}let I0=L().trim()||Cz;J.onSubmit({repo:d,baseRef:I0,vendor:f()}),z.clear()}async function j0(){if(T())return;let d=nL(x());if(d){U0(d),V("cloneUrl");return}let Y0=iL(S(),M());if(Y0){U0(Y0),V(M().trim()?"cloneParent":"cloneFolder");return}let I0=lL(S(),M());q0(!0),B0(F("newTask.clone.progressInto",{target:I0}));let S0=await aL(x().trim(),I0,(XJ)=>{B0(XJ)});if(q0(!1),!S0.ok){U0(F("newTask.error.cloneFailed",{error:S0.error})),V("cloneUrl");return}let BJ=e().trim()||Cz,LJ=UJ(S().trim());J.onSubmit({repo:S0.path,baseRef:BJ,vendor:f(),cloned:{parentDir:LJ}}),z.clear()}function D0(){let d=z0();if(d.length===0){U0(F("newTask.error.noAdoptable"));return}let Y0=t0(),I0=Y0.size>0?d.filter((S0)=>Y0.has(S0.path)):d.slice(a0(),a0()+1);if(I0.length===0)return;J.onSubmit({mode:"adopt",repo:UJ(j().trim()),vendor:f(),adopt:I0.map((S0)=>({worktreePath:S0.path,branch:S0.branch}))}),z.clear()}function C0(){if(G()==="clone"){j0();return}if(G()==="adopt"){D0();return}u0()}function J1(d){if(T())return;if(d===G())return;Z(d),V(C9(d)),U0(null)}function z1(d){if(T())return;let Y0=d===1?A9(G()):R9(G());if(Y0===G())return;Z(Y0),U0(null),V("tabs")}function n0(d){H((Y0)=>d===1?LY(X(),Y0):EH(X(),Y0))}function x1(){if(!j().trim()&&V0()==="saved"){let Y0=E()[0];if(Y0){K(Y0),V("baseRef");return}}if(V0()==="browse"){let I0=C()[c()],S0=t();if(I0){K(QQ(j(),S0.base,I0)),s(0),P0(!0),V("baseRef");return}V("baseRef");return}let d=E()[c()];if(d){K(d),V("baseRef");return}V("baseRef")}function b0(d){let I0=E()[d];if(!I0)return;if(V0()==="browse"){let S0=t();K(QQ(j(),S0.base,I0)),s(d),P0(!0),V("baseRef");return}K(I0),s(d),V("baseRef")}function m1(){let Y0=H1()[G1()],I0=R0();if(Y0){N(QQ(S(),I0.base,Y0)),w0(0),W0(!0),V("cloneFolder");return}V("cloneFolder")}function v(d){let I0=H1()[d];if(!I0)return;let S0=R0();N(QQ(S(),S0.base,I0)),w0(d),W0(!0),V("cloneFolder")}let O0=()=>{let d=z0();if(d.length===0)return;let Y0=d.every((I0)=>t0().has(I0.path));N1(Y0?new Set:new Set(d.map((I0)=>I0.path)))};D1(()=>({bindings:[{key:"tab",cmd:()=>V((d)=>g9(d,G()))},{key:"ctrl+]",cmd:()=>J1(A9(G()))},{key:"ctrl+[",cmd:()=>J1(R9(G()))},{key:"ctrl+e",cmd:()=>H((d)=>LY(X(),d))},{key:"up",cmd:()=>{if(T())return;if(G()==="existing"&&B()==="repo"){let d=E();if(d.length===0)return;s(nz(c()-1,d.length));return}if(G()==="existing"&&B()==="baseRef"){let d=N0();if(d.length===0)return;g0(nz(u()-1,d.length));return}if(G()==="clone"&&B()==="cloneParent"){let d=H1();if(d.length===0)return;w0(nz(G1()-1,d.length));return}if(G()==="adopt"){let d=z0();if(d.length===0)return;_0(nz(a0()-1,d.length))}}},{key:"down",cmd:()=>{if(T())return;if(G()==="existing"&&B()==="repo"){let d=E();if(d.length===0)return;s(nz(c()+1,d.length));return}if(G()==="existing"&&B()==="baseRef"){let d=N0();if(d.length===0)return;g0(nz(u()+1,d.length));return}if(G()==="clone"&&B()==="cloneParent"){let d=H1();if(d.length===0)return;w0(nz(G1()+1,d.length));return}if(G()==="adopt"){let d=z0();if(d.length===0)return;_0(nz(a0()+1,d.length))}}},...B()==="tabs"||B()==="engine"?[{key:"left",cmd:()=>B()==="tabs"?z1(-1):n0(-1)},{key:"right",cmd:()=>B()==="tabs"?z1(1):n0(1)},{key:"return",cmd:()=>V((d)=>g9(d,G()))}]:[],...G()==="adopt"?[{key:"ctrl+a",cmd:O0}]:[]]})),D1(()=>({enabled:B()==="confirm"&&!T(),bindings:[{key:"return",cmd:()=>C0()}]}));let W1=(d)=>B()===d?Y.primary:Y.textMuted,A1=(d)=>B()===d?Yz.BOLD|Yz.UNDERLINE:void 0,B1=(d,Y0)=>d?Y0?Yz.BOLD|Yz.UNDERLINE:Yz.BOLD:void 0;return(()=>{var d=W("box"),Y0=W("box"),I0=W("text"),S0=W("box"),BJ=W("box"),LJ=W("text"),XJ=W("box"),iJ=W("box"),iz=W("text"),AJ=W("box"),lz=W("text"),UY=W("text");return D(d,Y0),D(d,S0),D(d,AJ),q(d,"paddingLeft",2),q(d,"paddingRight",2),q(d,"gap",0),D(Y0,I0),q(Y0,"flexDirection","row"),U(I0,()=>F("newTask.title")),D(S0,BJ),q(S0,"gap",1),q(S0,"paddingTop",1),q(S0,"paddingBottom",1),U(S0,()=>{let m=()=>B()==="tabs",n=(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),q(l,"flexDirection","row"),q(l,"gap",2),q(w,"onMouseUp",()=>J1("existing")),U(w,(()=>{var M0=x0(()=>G()==="existing");return()=>M0()?`\u25B8 ${F("newTask.tabs.existing")}`:` ${F("newTask.tabs.existing")}`})()),q(m0,"onMouseUp",()=>J1("clone")),U(m0,(()=>{var M0=x0(()=>G()==="clone");return()=>M0()?`\u25B8 ${F("newTask.tabs.clone")}`:` ${F("newTask.tabs.clone")}`})()),q(v0,"onMouseUp",()=>J1("adopt")),U(v0,(()=>{var M0=x0(()=>G()==="adopt");return()=>M0()?`\u25B8 ${F("newTask.tabs.adopt")}`:` ${F("newTask.tabs.adopt")}`})()),y((M0)=>{var c0=n(G()==="existing"),q1=B1(G()==="existing",m()),L1=n(G()==="clone"),jJ=B1(G()==="clone",m()),Zz=n(G()==="adopt"),DY=B1(G()==="adopt",m());return c0!==M0.e&&(M0.e=q(w,"fg",c0,M0.e)),q1!==M0.t&&(M0.t=q(w,"attributes",q1,M0.t)),L1!==M0.a&&(M0.a=q(m0,"fg",L1,M0.a)),jJ!==M0.o&&(M0.o=q(m0,"attributes",jJ,M0.o)),Zz!==M0.i&&(M0.i=q(v0,"fg",Zz,M0.i)),DY!==M0.n&&(M0.n=q(v0,"attributes",DY,M0.n)),M0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),l})()},BJ),D(BJ,LJ),D(BJ,XJ),q(BJ,"gap",0),U(LJ,()=>F("newTask.field.engine")),D(XJ,iJ),D(XJ,iz),q(XJ,"flexDirection","row"),q(XJ,"gap",2),U(XJ,b(X1,{get each(){return X()},children:(m)=>{let n=()=>f()===m;return(()=>{var l=W("text");return q(l,"onMouseUp",()=>H(m)),U(l,()=>n()?"\u25B8 ":" ",null),U(l,m,null),y((w)=>{var m0=n()?Y.primary:Y.textMuted,v0=n()?Yz.BOLD:void 0;return m0!==w.e&&(w.e=q(l,"fg",m0,w.e)),v0!==w.t&&(w.t=q(l,"attributes",v0,w.t)),w},{e:void 0,t:void 0}),l})()}}),iJ),q(iJ,"flexGrow",1),U(iz,()=>F("newTask.hint.engineCycle")),U(S0,b(Z0,{get when(){return G()==="existing"},get children(){return[(()=>{var m=W("box"),n=W("text"),l=W("input");return D(m,n),D(m,l),q(m,"gap",0),U(n,()=>F("newTask.field.repo")),q(l,"onInput",(w)=>{P0(!1),K(DJ(w))}),q(l,"onSubmit",()=>{if(!j().trim())return;x1()}),y((w)=>{var m0=W1("repo"),v0=A1("repo"),M0=j(),c0=J.defaultRepo,q1=B()==="repo";return m0!==w.e&&(w.e=q(n,"fg",m0,w.e)),v0!==w.t&&(w.t=q(n,"attributes",v0,w.t)),M0!==w.a&&(w.a=q(l,"value",M0,w.a)),c0!==w.o&&(w.o=q(l,"placeholder",c0,w.o)),q1!==w.i&&(w.i=q(l,"focused",q1,w.i)),w},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),m})(),b(Z0,{get when(){return x0(()=>B()==="repo"&&E().length>0)()&&!F0()},get children(){var m=W("box");return q(m,"gap",0),q(m,"paddingLeft",2),U(m,b(Z0,{get when(){return X0().start>0},get children(){var n=W("text");return q(n,"wrapMode","none"),U(n,()=>F("newTask.picker.moreAbove",{count:X0().start})),y((l)=>q(n,"fg",Y.textMuted,l)),n}}),null),U(m,b(X1,{get each(){return X0().items},children:(n,l)=>{let w=()=>X0().start+l(),m0=()=>w()===c(),v0=()=>V0()==="saved"&&n===J.defaultRepo,M0=()=>V0()==="saved"&&j().trim()===n,c0=()=>V0()==="browse"?"/":"",q1=()=>v0()?` ${F("newTask.hint.currentDir")}`:"";return(()=>{var L1=W("text");return q(L1,"wrapMode","none"),q(L1,"onMouseUp",()=>b0(w())),U(L1,()=>m0()?"\u25B8 ":" ",null),U(L1,n,null),U(L1,c0,null),U(L1,q1,null),y((jJ)=>{var Zz=m0()?Y.primary:M0()?Y.accent:Y.textMuted,DY=m0()?Yz.BOLD:void 0;return Zz!==jJ.e&&(jJ.e=q(L1,"fg",Zz,jJ.e)),DY!==jJ.t&&(jJ.t=q(L1,"attributes",DY,jJ.t)),jJ},{e:void 0,t:void 0}),L1})()}}),null),U(m,b(Z0,{get when(){return X0().start+X0().items.length<X0().total},get children(){var n=W("text");return q(n,"wrapMode","none"),U(n,()=>F("newTask.picker.moreBelow",{count:X0().total-X0().start-X0().items.length})),y((l)=>q(n,"fg",Y.textMuted,l)),n}}),null),m}}),(()=>{var m=W("box"),n=W("text"),l=W("input");return D(m,n),D(m,l),q(m,"gap",0),U(n,()=>F("newTask.field.fromBranch")),q(l,"placeholder",Cz),q(l,"onInput",(w)=>{g(!0),A(DJ(w))}),q(l,"onSubmit",()=>{A(eL(L(),N0(),u())),g(!0),u0()}),y((w)=>{var m0=W1("baseRef"),v0=A1("baseRef"),M0=L(),c0=B()==="baseRef";return m0!==w.e&&(w.e=q(n,"fg",m0,w.e)),v0!==w.t&&(w.t=q(n,"attributes",v0,w.t)),M0!==w.a&&(w.a=q(l,"value",M0,w.a)),c0!==w.o&&(w.o=q(l,"focused",c0,w.o)),w},{e:void 0,t:void 0,a:void 0,o:void 0}),m})(),b(Z0,{get when(){return x0(()=>B()==="baseRef"&&N0().length===0)()&&h0()==null},get children(){var m=W("box"),n=W("text");return D(m,n),q(m,"gap",0),q(m,"paddingLeft",2),q(m,"paddingBottom",1),q(n,"wrapMode","none"),U(n,(()=>{var l=x0(()=>A0().length===0);return()=>l()?F("newTask.hint.noBranchesFound"):F("newTask.hint.noMatchBranch")})()),y((l)=>q(n,"fg",Y.textMuted,l)),m}}),b(Z0,{get when(){return x0(()=>B()==="baseRef")()&&N0().length>0},get children(){var m=W("box");return q(m,"gap",0),q(m,"paddingLeft",2),q(m,"paddingBottom",1),U(m,b(Z0,{get when(){return Q0().start>0},get children(){var n=W("text");return q(n,"wrapMode","none"),U(n,()=>F("newTask.picker.moreAbove",{count:Q0().start})),y((l)=>q(n,"fg",Y.textMuted,l)),n}}),null),U(m,b(X1,{get each(){return Q0().items},children:(n,l)=>{let w=()=>Q0().start+l(),m0=()=>w()===u(),v0=()=>L().trim()===n;return(()=>{var M0=W("text");return q(M0,"wrapMode","none"),q(M0,"onMouseUp",()=>{A(n),g(!0),g0(w()),V("confirm")}),U(M0,()=>m0()?"\u25B8 ":" ",null),U(M0,n,null),y((c0)=>{var q1=m0()?Y.primary:v0()?Y.accent:Y.textMuted,L1=m0()?Yz.BOLD:void 0;return q1!==c0.e&&(c0.e=q(M0,"fg",q1,c0.e)),L1!==c0.t&&(c0.t=q(M0,"attributes",L1,c0.t)),c0},{e:void 0,t:void 0}),M0})()}}),null),U(m,b(Z0,{get when(){return Q0().start+Q0().items.length<Q0().total},get children(){var n=W("text");return q(n,"wrapMode","none"),U(n,()=>F("newTask.picker.moreBelow",{count:Q0().total-Q0().start-Q0().items.length})),y((l)=>q(n,"fg",Y.textMuted,l)),n}}),null),m}})]}}),null),U(S0,b(Z0,{get when(){return G()==="clone"},get children(){return[(()=>{var m=W("box"),n=W("text"),l=W("input");return D(m,n),D(m,l),q(m,"gap",0),U(n,()=>F("newTask.field.gitUrl")),q(l,"placeholder","https://github.com/user/repo.git"),q(l,"onInput",(w)=>_(DJ(w))),q(l,"onSubmit",()=>{if(!x().trim())return;V("cloneParent")}),y((w)=>{var m0=W1("cloneUrl"),v0=A1("cloneUrl"),M0=x(),c0=B()==="cloneUrl";return m0!==w.e&&(w.e=q(n,"fg",m0,w.e)),v0!==w.t&&(w.t=q(n,"attributes",v0,w.t)),M0!==w.a&&(w.a=q(l,"value",M0,w.a)),c0!==w.o&&(w.o=q(l,"focused",c0,w.o)),w},{e:void 0,t:void 0,a:void 0,o:void 0}),m})(),(()=>{var m=W("box"),n=W("text"),l=W("input");return D(m,n),D(m,l),q(m,"gap",0),U(n,()=>F("newTask.field.parentDir")),q(l,"placeholder","~/"),q(l,"onInput",(w)=>{W0(!1),N(DJ(w))}),q(l,"onSubmit",()=>m1()),y((w)=>{var m0=W1("cloneParent"),v0=A1("cloneParent"),M0=S(),c0=B()==="cloneParent";return m0!==w.e&&(w.e=q(n,"fg",m0,w.e)),v0!==w.t&&(w.t=q(n,"attributes",v0,w.t)),M0!==w.a&&(w.a=q(l,"value",M0,w.a)),c0!==w.o&&(w.o=q(l,"focused",c0,w.o)),w},{e:void 0,t:void 0,a:void 0,o:void 0}),m})(),b(Z0,{get when(){return B()==="cloneParent"},get children(){var m=W("box"),n=W("text");return D(m,n),q(m,"paddingLeft",2),q(n,"wrapMode","none"),U(n,()=>F("newTask.hint.remembered")),y((l)=>q(n,"fg",Y.textMuted,l)),m}}),b(Z0,{get when(){return x0(()=>B()==="cloneParent"&&H1().length>0)()&&!$()},get children(){var m=W("box");return q(m,"gap",0),q(m,"paddingLeft",2),U(m,b(Z0,{get when(){return o0().start>0},get children(){var n=W("text");return q(n,"wrapMode","none"),U(n,()=>F("newTask.picker.moreAbove",{count:o0().start})),y((l)=>q(n,"fg",Y.textMuted,l)),n}}),null),U(m,b(X1,{get each(){return o0().items},children:(n,l)=>{let w=()=>o0().start+l(),m0=()=>w()===G1();return(()=>{var v0=W("text"),M0=E0("/");return D(v0,M0),q(v0,"wrapMode","none"),q(v0,"onMouseUp",()=>v(w())),U(v0,()=>m0()?"\u25B8 ":" ",M0),U(v0,n,M0),y((c0)=>{var q1=m0()?Y.primary:Y.textMuted,L1=m0()?Yz.BOLD:void 0;return q1!==c0.e&&(c0.e=q(v0,"fg",q1,c0.e)),L1!==c0.t&&(c0.t=q(v0,"attributes",L1,c0.t)),c0},{e:void 0,t:void 0}),v0})()}}),null),U(m,b(Z0,{get when(){return o0().start+o0().items.length<o0().total},get children(){var n=W("text");return q(n,"wrapMode","none"),U(n,()=>F("newTask.picker.moreBelow",{count:o0().total-o0().start-o0().items.length})),y((l)=>q(n,"fg",Y.textMuted,l)),n}}),null),m}}),(()=>{var m=W("box"),n=W("text"),l=W("input");return D(m,n),D(m,l),q(m,"gap",0),U(n,()=>F("newTask.field.folderName")),q(l,"onInput",(w)=>{i(!0),I(DJ(w))}),q(l,"onSubmit",()=>V("cloneBaseRef")),y((w)=>{var m0=W1("cloneFolder"),v0=A1("cloneFolder"),M0=M(),c0=F("newTask.placeholder.folderName"),q1=B()==="cloneFolder";return m0!==w.e&&(w.e=q(n,"fg",m0,w.e)),v0!==w.t&&(w.t=q(n,"attributes",v0,w.t)),M0!==w.a&&(w.a=q(l,"value",M0,w.a)),c0!==w.o&&(w.o=q(l,"placeholder",c0,w.o)),q1!==w.i&&(w.i=q(l,"focused",q1,w.i)),w},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),m})(),(()=>{var m=W("box"),n=W("text"),l=W("input");return D(m,n),D(m,l),q(m,"gap",0),U(n,()=>F("newTask.field.baseBranch")),q(l,"placeholder",Cz),q(l,"onInput",(w)=>J0(DJ(w))),q(l,"onSubmit",()=>void j0()),y((w)=>{var m0=W1("cloneBaseRef"),v0=A1("cloneBaseRef"),M0=e(),c0=B()==="cloneBaseRef";return m0!==w.e&&(w.e=q(n,"fg",m0,w.e)),v0!==w.t&&(w.t=q(n,"attributes",v0,w.t)),M0!==w.a&&(w.a=q(l,"value",M0,w.a)),c0!==w.o&&(w.o=q(l,"focused",c0,w.o)),w},{e:void 0,t:void 0,a:void 0,o:void 0}),m})(),b(Z0,{get when(){return T()},get children(){var m=W("box"),n=W("text");return D(m,n),q(m,"gap",0),q(m,"paddingLeft",2),q(n,"wrapMode","none"),U(n,()=>p()||F("newTask.clone.progressFallback")),y((l)=>q(n,"fg",Y.textMuted,l)),m}})]}}),null),U(S0,b(Z0,{get when(){return G()==="adopt"},get children(){return[(()=>{var m=W("box"),n=W("text"),l=W("input");return D(m,n),D(m,l),q(m,"gap",0),U(n,()=>F("newTask.field.adoptFilter")),q(l,"onInput",(w)=>s0(DJ(w))),q(l,"onSubmit",()=>R()),y((w)=>{var m0=W1("adoptFilter"),v0=A1("adoptFilter"),M0=T0(),c0=F("newTask.placeholder.adoptFilter"),q1=B()==="adoptFilter";return m0!==w.e&&(w.e=q(n,"fg",m0,w.e)),v0!==w.t&&(w.t=q(n,"attributes",v0,w.t)),M0!==w.a&&(w.a=q(l,"value",M0,w.a)),c0!==w.o&&(w.o=q(l,"placeholder",c0,w.o)),q1!==w.i&&(w.i=q(l,"focused",q1,w.i)),w},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),m})(),(()=>{var m=W("box"),n=W("text");return D(m,n),q(m,"paddingLeft",2),q(n,"wrapMode","none"),U(n,()=>F("newTask.adopt.repoLine",{path:UJ(j().trim())||F("newTask.adopt.repoNone")})),y((l)=>q(n,"fg",Y.textMuted,l)),m})(),b(Z0,{get when(){return R1.loading},get children(){var m=W("box"),n=W("text");return D(m,n),q(m,"paddingLeft",2),q(n,"wrapMode","none"),U(n,()=>F("newTask.hint.scanningWorktrees")),y((l)=>q(n,"fg",Y.textMuted,l)),m}}),b(Z0,{get when(){return x0(()=>!R1.loading)()&&z0().length===0},get children(){var m=W("box"),n=W("text");return D(m,n),q(m,"paddingLeft",2),q(n,"wrapMode","none"),U(n,(()=>{var l=x0(()=>(R1()??[]).length===0);return()=>l()?F("newTask.adopt.noUnlinked"):F("newTask.adopt.noMatch")})()),y((l)=>q(n,"fg",Y.textMuted,l)),m}}),b(Z0,{get when(){return z0().length>0},get children(){var m=W("box"),n=W("text");return D(m,n),q(m,"gap",0),q(m,"paddingLeft",2),U(m,b(Z0,{get when(){return G0().start>0},get children(){var l=W("text");return q(l,"wrapMode","none"),U(l,()=>F("newTask.picker.moreAbove",{count:G0().start})),y((w)=>q(l,"fg",Y.textMuted,w)),l}}),n),U(m,b(X1,{get each(){return H0()},children:(l,w)=>{let m0=()=>G0().start+w(),v0=()=>m0()===a0(),M0=()=>t0().has(l.path),c0=()=>[l.dirty?"dirty":"",l.kobeManaged?"":"external"].filter(Boolean).join(",");return(()=>{var q1=W("text");return q(q1,"wrapMode","none"),q(q1,"onMouseUp",()=>{_0(m0()),k0(l.path)}),U(q1,()=>v0()?"\u25B8 ":" ",null),U(q1,()=>M0()?"[x] ":"[ ] ",null),U(q1,()=>l.branch,null),U(q1,(()=>{var L1=x0(()=>!!c0());return()=>L1()?` (${c0()})`:""})(),null),y((L1)=>{var jJ=v0()?Y.primary:M0()?Y.accent:Y.textMuted,Zz=v0()?Yz.BOLD:void 0;return jJ!==L1.e&&(L1.e=q(q1,"fg",jJ,L1.e)),Zz!==L1.t&&(L1.t=q(q1,"attributes",Zz,L1.t)),L1},{e:void 0,t:void 0}),q1})()}}),n),U(m,b(Z0,{get when(){return G0().start+G0().items.length<G0().total},get children(){var l=W("text");return q(l,"wrapMode","none"),U(l,()=>F("newTask.picker.moreBelow",{count:G0().total-G0().start-G0().items.length})),y((w)=>q(l,"fg",Y.textMuted,w)),l}}),n),q(n,"wrapMode","none"),U(n,(()=>{var l=x0(()=>t0().size>0);return()=>l()?F("newTask.adopt.hintSelected",{count:t0().size}):F("newTask.adopt.hintDefault")})()),y((l)=>q(n,"fg",Y.textMuted,l)),m}})]}}),null),U(S0,b(Z0,{get when(){return h0()},get children(){var m=W("text"),n=E0("\u203B ");return D(m,n),q(m,"wrapMode","word"),U(m,h0,null),y((l)=>q(m,"fg",Y.error,l)),m}}),null),D(AJ,lz),D(AJ,UY),q(AJ,"flexDirection","row"),q(AJ,"justifyContent","space-between"),q(AJ,"alignItems","center"),q(AJ,"paddingTop",1),q(AJ,"paddingBottom",1),U(lz,()=>F("newTask.hint.legend")),q(UY,"onMouseUp",()=>C0()),U(UY,(()=>{var m=x0(()=>!!T());return()=>m()?F("newTask.button.cloning"):x0(()=>B()==="confirm")()?F("newTask.button.createFocused"):F("newTask.button.create")})()),y((m)=>{var n=Yz.BOLD,l=Y.text,w=W1("engine"),m0=A1("engine"),v0=Y.textMuted,M0=Y.textMuted,c0=B()==="confirm"?Y.primary:Y.text,q1=B()==="confirm"?Yz.BOLD:void 0;return n!==m.e&&(m.e=q(I0,"attributes",n,m.e)),l!==m.t&&(m.t=q(I0,"fg",l,m.t)),w!==m.a&&(m.a=q(LJ,"fg",w,m.a)),m0!==m.o&&(m.o=q(LJ,"attributes",m0,m.o)),v0!==m.i&&(m.i=q(iz,"fg",v0,m.i)),M0!==m.n&&(m.n=q(lz,"fg",M0,m.n)),c0!==m.s&&(m.s=q(UY,"fg",c0,m.s)),q1!==m.h&&(m.h=q(UY,"attributes",q1,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 z3=k(()=>{P();P();P();P();P();P();P();P();ZJ();i1();j1();v1();qH();yJ();HH();nJ();_L();N9()});function Uy(J,z,Y,G){return new Promise((Z)=>{J.replace(()=>b(J3,{defaultRepo:z,savedRepos:Y,get defaultCloneParent(){return G?.defaultCloneParent},get defaultVendor(){return G?.defaultVendor},get availableVendors(){return G?.availableVendors},get discoverAdoptable(){return G?.discoverAdoptable},onSubmit:(X)=>Z(X),onCancel:()=>Z(void 0)}),()=>Z(void 0)),J.setSize("medium")})}var BH;var lZ=k(()=>{P();z3();N9();BH={show:Uy}});function Y3(J,z){return[{key:"tab",cmd:()=>z.cycleField(1)},{key:"shift+tab",cmd:()=>z.cycleField(-1)},{key:"ctrl+e",cmd:()=>z.stepEngine(1)},...J==="engine"?[{key:"left",cmd:()=>z.stepEngine(-1)},{key:"right",cmd:()=>z.stepEngine(1)},{key:"return",cmd:()=>z.commit()}]:[]]}import{TextAttributes as G3}from"@opentui/core";function Dy(J){let z=c1(),{theme:Y}=d0(),[G,Z]=a("prompt"),[X,Q]=a(""),[f,H]=a(J.defaultVendor),[B,V]=a(J.defaultBaseRef);function j(O){let g=jH.indexOf(G());Z(jH[(g+O+jH.length)%jH.length]??"prompt")}function K(O){let g=J.engines;if(g.length===0)return;if(O>0){H((_)=>LY(g,_));return}let x=Math.max(0,g.indexOf(f()));H(g[(x-1+g.length)%g.length]??f())}function L(){if(fQ(X())){Z("prompt");return}J.onSubmit({prompt:X().trim(),vendor:f(),baseRef:B().trim()||J.defaultBaseRef}),z.clear()}D1(()=>({enabled:!0,bindings:Y3(G(),{cycleField:j,stepEngine:K,commit:L})}));let A=(O)=>G()===O?Y.accent:Y.textMuted;return(()=>{var O=W("box"),g=W("box"),x=W("text"),_=W("text"),S=W("box"),N=W("text"),M=W("input"),I=W("box"),r=W("text"),i=W("box"),e=W("text"),J0=W("input"),T=W("box"),q0=W("text");return D(O,g),D(O,S),D(O,I),D(O,i),D(O,T),q(O,"paddingLeft",2),q(O,"paddingRight",2),q(O,"gap",1),D(g,x),D(g,_),q(g,"flexDirection","row"),q(g,"justifyContent","space-between"),U(x,()=>F("quickTask.title",{repoLabel:J.repoLabel})),q(_,"onMouseUp",()=>J.onCancel()),U(_,()=>F("quickTask.esc")),D(S,N),D(S,M),q(S,"gap",0),U(N,()=>F("quickTask.promptLabel")),q(M,"onInput",(p)=>Q(DJ(p))),q(M,"onSubmit",()=>L()),D(I,r),q(I,"flexDirection","row"),q(I,"gap",2),U(r,()=>F("quickTask.engineLabel")),U(I,b(X1,{get each(){return J.engines},children:(p)=>(()=>{var B0=W("text");return q(B0,"onMouseUp",()=>{H(p),Z("engine")}),U(B0,()=>J.engineLabel(p)),y((L0)=>{var V0=f()===p?Y.primary:Y.textMuted,t=f()===p?G3.BOLD:void 0;return V0!==L0.e&&(L0.e=q(B0,"fg",V0,L0.e)),t!==L0.t&&(L0.t=q(B0,"attributes",t,L0.t)),L0},{e:void 0,t:void 0}),B0})()}),null),D(i,e),D(i,J0),q(i,"gap",0),U(e,()=>F("quickTask.branchLabel")),q(J0,"onInput",(p)=>V(DJ(p))),q(J0,"onSubmit",()=>L()),D(T,q0),q(T,"paddingBottom",1),U(q0,()=>F("quickTask.legend")),y((p)=>{var B0=G3.BOLD,L0=Y.text,V0=Y.textMuted,t=A("prompt"),h=X(),C=F("quickTask.promptPlaceholder"),o=G()==="prompt",E=A("engine"),c=A("branch"),s=B(),X0=J.defaultBaseRef,F0=G()==="branch",P0=Y.textMuted;return B0!==p.e&&(p.e=q(x,"attributes",B0,p.e)),L0!==p.t&&(p.t=q(x,"fg",L0,p.t)),V0!==p.a&&(p.a=q(_,"fg",V0,p.a)),t!==p.o&&(p.o=q(N,"fg",t,p.o)),h!==p.i&&(p.i=q(M,"value",h,p.i)),C!==p.n&&(p.n=q(M,"placeholder",C,p.n)),o!==p.s&&(p.s=q(M,"focused",o,p.s)),E!==p.h&&(p.h=q(r,"fg",E,p.h)),c!==p.r&&(p.r=q(e,"fg",c,p.r)),s!==p.d&&(p.d=q(J0,"value",s,p.d)),X0!==p.l&&(p.l=q(J0,"placeholder",X0,p.l)),F0!==p.u&&(p.u=q(J0,"focused",F0,p.u)),P0!==p.c&&(p.c=q(q0,"fg",P0,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}),O})()}function Ly(J,z){return new Promise((Y)=>{J.replace(()=>b(Dy,cD(z,{onSubmit:(G)=>Y(G),onCancel:()=>Y(void 0)})),()=>Y(void 0)),J.setSize("medium")})}var jH,Z3;var X3=k(()=>{P();P();P();P();P();P();P();j1();i1();v1();ZJ();yJ();nJ();lZ();jH=["prompt","engine","branch"];Z3={show:Ly}});async function WH(J={}){let z=J.logTag??"orch-connect",Y=J.connect??zz,G=null;try{let Z=await Y();if(!Z)return tz(z,"no daemon running \u2014 caller degrades"),null;return G=new KJ(Z,{...J.orchestratorOptions,channels:J.channels}),await G.init(),G}catch(Z){return o1(z,Z),G?.dispose(),null}}var k9=k(()=>{zG();FJ();nY()});function Q3(J){let[z,Y]=a(J.initial??"sidebar"),[G,Z]=a(0),X=fJ();function Q(j){if(Z((L)=>L+1),z()===j)return;let K=X?.currentFocusedRenderable;if(K&&!K.isDestroyed)try{K.blur()}catch{}Y(j)}function f(j){let L=(VH.indexOf(z())+j+VH.length)%VH.length;Q(VH[L])}let H=new Map;function B(j){let K=H.get(j);if(!K)K=()=>z()===j,H.set(j,K);return K}let V={focused:z,is:B,setFocused:Q,cycle:f,refocusTick:G};return b(My.Provider,{value:V,get children(){return J.children}})}var VH,My;var q3=k(()=>{P();P();j1();VH=["sidebar","workspace","files","terminal"],My=Tz(null)});function f3(){for(let J of iY){let z=Fy.get(J.id);if(!z)continue;let Y=J;Y.keys=[...z.keys],Y.hint=z.hint?{...z.hint}:void 0}}function H3(){Oy((J)=>J+1)}function S9(J){return Ay.get(J)}function Ry(J){return S9(J)?.keys??[]}function lY(J){let z=[];for(let Y in J){let G=J[Y];if(!G)continue;let Z=Ry(Y);if(Z.length===0){console.warn(`[kobe/keybindings] bindByIds: id="${Y}" has no chords (or doesn't exist in KobeKeymap)`);continue}Z.forEach((X,Q)=>z.push({key:X,cmd:G,slot:Q}))}return z}var iY,Fy,b9,Oy,Ay;var $Z=k(()=>{j1();iY=[{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"}}],Fy=new Map(iY.map((J)=>[J.id,{keys:[...J.keys],hint:J.hint?{...J.hint}:void 0}]));[b9,Oy]=a(0);Ay=new Map(iY.map((J)=>[J.id,J]))});function KH(){if($Y)return $Y;let J=kq();if(!J.exists)return $Y={path:J.path,exists:!1,applied:[],warnings:[]},$Y;let z=[...J.warnings],Y=Sq(J.doc,process.platform,{chordOptsFor:ZB});z.push(...Y.warnings);let G=Y.entries.filter((f)=>f.id.startsWith("tmux.")),Z=Y.entries.filter((f)=>!f.id.startsWith("tmux.")),X=G5(iY,Z);z.push(...X.warnings);let Q=[...X.applied];if(G.length>0){let f=GB(G);z.push(...f.warnings);for(let H of f.overridden){if(H===xz){Q.push({id:H,keys:f.focus.map((j)=>j?.chord??"").filter((j)=>j!==""),defaultKeys:SY});continue}let B=f.binds[H];Q.push({id:H,keys:B?[B.chord]:[],defaultKeys:[LG[H]]});let V=iY.find((j)=>j.id===H);if(V?.hint)V.hint.keys=B?`${QZ(H)?"prefix ":""}${B.chord}`:"\u2014"}}for(let f of z)console.warn(`[kobe/keybindings] ${f}`);return $Y={path:J.path,exists:!0,applied:Q,warnings:z},$Y}function B3(){return $Y??KH()}function j3(){$Y=null,Y5(),q5(),f3();let J=KH();return H3(),J}var $Y=null;var I9=k(()=>{zB();yq();Iq();$Z()});var gy=250,aZ,W3;var BQ=k(()=>{cZ();tY();q9();({use:aZ,provider:W3}=ZH({name:"KV",init:()=>{let[J,z]=dz(RJ()),Y=new Set,G=null;function Z(f){if(Y.size===0)return!0;try{let H={};for(let B of Y)H[B]=J[B];return MY(H),Y.clear(),!0}catch(H){return console.error(`[kobe] kv ${f} failed:`,H),!1}}function X(){if(G)clearTimeout(G);G=setTimeout(()=>{G=null,Z("write")},gy)}let Q={get ready(){return!0},get store(){return J},signal(f,H){if(J[f]===void 0)z(f,H);return[()=>Q.get(f),(B)=>Q.set(f,B)]},get(f,H){return J[f]??H},set(f,H){z(f,H),Y.add(f),X()},flush(){if(G)clearTimeout(G),G=null;return Z("flush")},clear(){for(let f of Object.keys(J))z(f,void 0);if(G)clearTimeout(G),G=null;Y.clear();try{hW({})}catch(f){console.error("[kobe] kv clear write failed:",f)}}};return Q}}))});var UH="../pulse-n3cq1btw.wav";var V3=()=>{};import{existsSync as Ny,mkdirSync as ky}from"fs";import{tmpdir as by}from"os";import{basename as Sy,isAbsolute as Iy,join as T9,resolve as Ty}from"path";function xy(J,z,Y){if(J==="ffplay")return[J,"-autoexit","-nodisp","-af",`volume=${Y}`,z];if(J==="mpv")return[J,"--no-video","--audio-display=no","--volume",String(Math.round(Y*100)),z];if(J==="mpg123"||J==="mpg321")return[J,"-g",String(Math.round(Y*100)),z];if(J==="mplayer")return[J,"-vo","null","-volume",String(Math.round(Y*100)),z];if(J==="afplay"||J==="omxplayer"||J==="aplay"||J==="cmdmp3")return[J,z];if(J==="play")return[J,"-v",String(Y),z];if(J==="cvlc")return[J,`--gain=${Y}`,"--play-and-exit",z];return[J,"-c",`(New-Object Media.SoundPlayer '${z.replace(/'/g,"''")}').PlaySync()`]}function uy(){if(DH!==void 0)return DH;let z=(process.env.PATH??"").split(":").filter(Boolean);return DH=yy.find((Y)=>z.some((G)=>Ny(T9(G,Y))))??null,DH}async function Ey(){return D3??=(async()=>{ky(U3,{recursive:!0});let J=T9(U3,Sy(K3)),z=Bun.file(J);if(await z.exists())return J;return await Bun.write(z,Bun.file(K3)),J})(),D3}function L3(J=0.4){let z=uy();if(!z)return;Ey().then((Y)=>{try{Bun.spawn(xy(z,Y,J),{stdin:"ignore",stdout:"ignore",stderr:"ignore"}).unref?.()}catch{}}).catch(()=>{return})}var K3,U3,yy,DH,D3;var M3=k(()=>{V3();K3=Iy(UH)?UH:Ty(import.meta.dir,UH),U3=T9(by(),"kobe-sfx"),yy=["ffplay","mpv","mpg123","mpg321","mplayer","afplay","play","omxplayer","aplay","cmdmp3","cvlc","powershell.exe"]});function F3(J,z){return`${J}:${z}`}function A3(J){let z=aZ(),[Y,G]=a([]),[Z,X]=a(new Map),Q=QH(),f=0;function H(K){if(X((L)=>{let A=new Map(L),O=F3(K.taskId,K.tabId),g=L.get(O);if(g==="needs_input"||g==="error")return L;return A.set(O,K.kind),A}),z.get("notifications.sound.enabled",!0)!==!1){try{process.stdout.write("\x07")}catch{}L3()}if(z.get("notifications.toast.enabled",!0)!==!1){let L=++f,A={id:L,kind:K.kind,taskId:K.taskId,tabId:K.tabId,title:K.title};G((O)=>[...O,A]),Q.set(()=>B(L),wy)}}function B(K){G((L)=>L.filter((A)=>A.id!==K))}function V(K,L){X((A)=>{let O=F3(K,L);if(!A.has(O))return A;let g=new Map(A);return g.delete(O),g})}let j={toasts:Y,unread:Z,notify:H,dismiss:B,markRead:V};return b(O3.Provider,{value:j,get children(){return J.children}})}function LH(){let J=wJ(O3);if(!J)throw Error("useNotifications must be used within a NotificationsProvider");return J}var wy=4500,O3;var MH=k(()=>{P();j1();D9();M3();BQ();O3=Tz()});function y9(J,z){if(typeof z.theme==="string"&&z.theme.length>0&&z.theme!==J.selectedTheme()){if(!J.hasTheme(z.theme))J.reloadUserThemes();if(J.hasTheme(z.theme))J.setTheme(z.theme)}if(typeof z.transparentBackground==="boolean"&&z.transparentBackground!==J.transparentBackground())J.setTransparentBackground(z.transparentBackground);if(z.focusAccent===null||typeof z.focusAccent==="string"){let Y=hy(z.focusAccent);if(Y&&Y!==J.focusAccent())J.setFocusAccent(Y)}}function hy(J){if(J===null)return"primary";return Py.includes(J)?J:null}var Py;var R3=k(()=>{Py=["primary","success","info"]});import{readFileSync as vy}from"fs";function g3(J){try{let z=JSON.parse(vy(lJ(),"utf8")),Y=typeof z.activeTheme==="string"&&YQ(z.activeTheme)?z.activeTheme:J,G=z.transparentBackground===!0,Z=typeof z.focusAccent==="string"&&uG.includes(z.focusAccent)?z.focusAccent:null,X=GQ(z[FH])?z[FH]:nZ;return{theme:Y,transparent:G,focusAccent:Z,locale:X}}catch{return{theme:J,transparent:!1,focusAccent:null,locale:nZ}}}var FH="locale";var x9=k(()=>{p1();v1();iZ()});function cy(J){if(J)EQ(J);z7(),KH();for(let{name:z,theme:Y}of kX())H9(z,Y)}function dy(J){let z={backgroundColor:"transparent",externalOutputMode:"passthrough",exitOnCtrlC:!1,screenMode:"alternate-screen",useKittyKeyboard:{}};return J?{...z,onDestroy:J}:z}function ny(J){let z=()=>J.children,Y=()=>J.notifications?b(A3,{get children(){return z()}}):z(),G=()=>b(wL,{get children(){return Y()}}),Z=()=>J.focus?b(Q3,{initial:"sidebar",get children(){return G()}}):G(),X=()=>J.kv?b(W3,{get children(){return Z()}}):Z();return b(JL,{mode:"dark",get theme(){return J.theme},get children(){return X()}})}function iy(J){let{theme:z}=d0();return e1(()=>o1("pane-crash",J.error)),(()=>{var Y=W("box"),G=W("text"),Z=W("text");return D(Y,G),D(Y,Z),q(Y,"flexDirection","column"),q(Y,"flexGrow",1),q(Y,"paddingLeft",1),q(Y,"paddingTop",1),q(Y,"gap",1),U(G,()=>F("common.paneCrash.title")),U(Z,()=>F("common.paneCrash.hint")),y((X)=>{var{background:Q,error:f,textMuted:H}=z;return Q!==X.e&&(X.e=q(Y,"backgroundColor",Q,X.e)),f!==X.t&&(X.t=q(G,"fg",f,X.t)),H!==X.a&&(X.a=q(Z,"fg",H,X.a)),X},{e:void 0,t:void 0,a:void 0}),Y})()}function ly(J){let z=d0(),Y={selectedTheme:()=>z.selected,hasTheme:(f)=>z.has(f),setTheme:(f)=>z.set(f),reloadUserThemes:()=>{for(let{name:f,theme:H}of kX())H9(f,H)},transparentBackground:()=>z.transparentBackground,setTransparentBackground:(f)=>z.setTransparentBackground(f),focusAccent:()=>z.focusAccent,setFocusAccent:(f)=>z.setFocusAccent(f)};y9(Y,{theme:J.boot.theme,transparentBackground:J.boot.transparent,focusAccent:J.boot.focusAccent}),ZQ(J.boot.locale);let[G,Z]=a(null),X=!1;e1(()=>{(async()=>{let f=await WH({logTag:"ui-prefs",channels:["ui-prefs","keybindings"]});if(!f)return;if(X){f.dispose();return}Z(f)})()}),r0(()=>{let f=G()?.uiPrefsSignal()();if(!f)return;if(y9(Y,f),GQ(f.locale))ZQ(f.locale)});let Q=null;return r0(()=>{let f=G()?.keybindingsRevSignal()();if(f==null)return;if(Q===null||f===Q){Q=f;return}Q=f,j3()}),k1(()=>{X=!0,G()?.dispose()}),null}async function OJ(J){cy(J.logContext);let z=g3(my),Y=await J.setup(z),G=J.providers?.kv??!0,Z=J.providers?.focus??!0,X=J.providers?.notifications??!1;await _D(()=>b(ny,{get theme(){return z.theme},kv:G,focus:Z,notifications:X,get children(){return[b(ly,{boot:z}),b(IV,{fallback:(Q)=>b(iy,{error:Q}),get children(){return Y.root()}})]}}),dy(Y.onDestroy))}var my="claude";var aY=k(()=>{P();P();P();P();P();P();P();zG();j1();k9();q3();I9();BQ();MH();v1();nq();ZJ();nJ();R3();x9()});async function u9(J,z,Y,G,Z={}){let X=C1(z.id);if(await V1(X))return!0;let Q=z.worktreePath;if(!Q||!zZ(Q)){if(!J)throw new PG("no-daemon",`no daemon; cannot materialise worktree for ${z.id}`);try{Q=await J.ensureWorktree(z.id)}catch(j){throw new PG("worktree",`ensureWorktree failed for ${z.id}`,j)}await Z.reload?.()}if(!Q||!zZ(Q))throw new PG("worktree",`task ${z.id} has no usable worktree`);let{ensureSession:f}=await Promise.resolve().then(() => (zJ(),vJ)),{resolveEngineLaunchInit:H}=await Promise.resolve().then(() => (NZ(),If)),B=Y?H(Y,Q,{kind:Z.includeInitPrompt?"repo-init":"none"}):void 0;if(!await f({name:X,cwd:Q,command:oJ(G),taskId:z.id,vendor:G,repo:Y,launchInit:B}))throw new PG("session",`failed to start tmux session for ${z.id}`);return!1}async function E9(J,z,Y,G,Z={}){let X=C1(z.id),Q=await Promise.resolve().then(() => (zJ(),vJ));if(Z.captureFrom){let B=await Q.currentSessionName();if(B&&B!==X)await Q.captureGlobalLayout(B)}if(await u9(J,z,Y,G,{includeInitPrompt:Z.includeInitPrompt,reload:Z.reload})&&Z.heal)try{let B=await gG(X,"@kobe_worktree")||z.worktreePath||"";if(B&&zZ(B)){let{resolveEngineLaunchInit:V}=await Promise.resolve().then(() => (NZ(),If)),j=Y?V(Y,B,{kind:Z.includeInitPrompt?"repo-init":"none"}):void 0;await Q.ensureSession({name:X,cwd:B,command:oJ(G),taskId:z.id,vendor:G,repo:Y,launchInit:j})}}catch(B){console.error("[kobe handover] heal failed (continuing to switch):",B)}let{syncSessionZen:H}=await Promise.resolve().then(() => (RG(),t5));await H(X),await J?.setActiveTask(z.id).catch(()=>{}),await Q.enterWindow(X)}async function OH(J,z,Y,G,Z={}){await E9(J,z,Y,G,{includeInitPrompt:Z.includeInitPrompt})}var PG;var AH=k(()=>{sJ();Vz();P1();PG=class PG extends Error{phase;cause;constructor(J,z,Y){super(z);this.name="HandoverError",this.phase=J,this.cause=Y}}});var C3={};f1(C3,{startNewTaskHost:()=>$y,NewTaskPage:()=>RH});function RH(J){let{theme:z}=d0(),Y=c1();e1(()=>{G()});async function G(){let Z=gJ(),X=J.defaultRepo||Z[0]||process.cwd(),Q=xJ(g1("lastSelectedVendor"),uJ()),f=await ez(),H=J.orchestrator,B=await BH.show(Y,X,Z,{defaultVendor:Q,availableVendors:f,discoverAdoptable:H?(j)=>H.discoverAdoptableWorktrees(j):void 0});if(!B)process.exit(0);if(r1("lastSelectedVendor",B.vendor),pz(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 OH(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 Z=W("box");return q(Z,"flexDirection","column"),q(Z,"flexGrow",1),y((X)=>q(Z,"backgroundColor",z.background,X)),Z})()}async function $y(J){await OJ({setup:async()=>{let z=null;try{let Y=await Az(),G=new KJ(Y);await G.init(),z=G}catch(Y){console.error("[kobe new-task] daemon unavailable; cannot create task:",Y)}return{root:()=>b(RH,{get defaultRepo(){return J.defaultRepo},orchestrator:z}),onDestroy:()=>{z?.dispose()}}}})}var w9=k(()=>{P();P();P();P();FJ();j1();nY();YG();F1();i1();lZ();v1();aY();AH();nJ()});function gH(J,z,Y,G,Z={}){if(J.length===0)return z;let X=new Map;for(let H of J)X.set(Y(H),H);let Q=J.length===z.length,f=Array(z.length);for(let H=0;H<z.length;H++){let B=z[H],V=X.get(Y(B));if(V&&G(V,B)&&(!Z.samePosition||J[H]===V)){if(f[H]=V,Q&&J[H]!==V)Q=!1}else f[H]=B,Q=!1}return Q?J:f}function N3(J,z){if(!J)return!0;let Y=J.toLowerCase(),G=z.toLowerCase(),Z=0;for(let X=0;X<G.length&&Z<Y.length;X++)if(G.charCodeAt(X)===Y.charCodeAt(Z))Z++;return Z===Y.length}function ay(J,z){let Y=z==="archived";return J.filter((G)=>G.archived===Y)}function P9(J,z,Y,G="default",Z){let X=ay(J,z),Q=Y?.trim()??"",f=Z?Gz(Z):null,H=Q?X.filter((O)=>N3(Q,`${O.title} ${Nz(O.repo)}`)):X,B=[],V=[],j=[],K=new Set;for(let O of H){if(O.kind==="main"){let g=Gz(O.repo);if(K.has(g))continue;K.add(g),B.push(O);continue}if(f&&Gz(O.repo)!==f)continue;if(O.pinned===!0)V.push(O);else j.push(O)}if(B.sort((O,g)=>Nz(O.repo).localeCompare(Nz(g.repo))),G==="recent")V.sort(k3),j.sort(k3);let L=[],A=0;for(let O of B)L.push({kind:"task",task:O,flatIndex:A}),A++;for(let O of V)L.push({kind:"task",task:O,flatIndex:A}),A++;for(let O of j)L.push({kind:"task",task:O,flatIndex:A}),A++;return L}function k3(J,z){let Y=b3(z)-b3(J);if(Y!==0)return Y;return String(z.id).localeCompare(String(J.id))}function b3(J){let z=Date.parse(J.updatedAt||J.createdAt);return Number.isFinite(z)?z:0}function Nz(J){let z=J.split("/").filter(Boolean);return z[z.length-1]??J}function Gz(J){return J.trim().replace(/[\\/]+$/,"")||J}function _y(J,z){let Y=Nz(J);if(!z.some((Z)=>Z!==J&&Nz(Z)===Y))return Y;return J.replace(/[\\/]+$/,"").split(/[\\/]+/).slice(-2).join("/")}function S3(J,z){let Y=z==="archived",G=new Map;for(let X of J){let Q=Gz(X.repo),f=G.get(Q)??{repo:X.repo,count:0};if(X.kind==="main")f.repo=X.repo;else if(X.archived===Y)f.count+=1;G.set(Q,f)}let Z=[...G.values()].map((X)=>X.repo);return[...G.values()].map((X)=>({repo:X.repo,label:_y(X.repo,Z),count:X.count})).sort((X,Q)=>X.label.localeCompare(Q.label))}function I3(J,z){if(J.length===0)return-1;if(!z)return J[0]?.flatIndex??-1;let Y=Gz(z),G=J.find((X)=>X.task.kind!=="main"&&Gz(X.task.repo)===Y);if(G)return G.flatIndex;return J.find((X)=>X.task.kind==="main"&&Gz(X.task.repo)===Y)?.flatIndex??J[0]?.flatIndex??-1}function h9(J){return J.map((z)=>z.task.id)}function T3(J,z,Y){let G=z.length;if(J===null){if(Y===-1&&G>0)return 0;if(Y>=G)return Math.max(0,G-1);if(G===0)return-1;return Y}let Z=z.indexOf(J);if(Z>=0)return Z;if(G===0)return-1;if(Y<0||Y>=G)return G-1;return Y}function y3(J){let z=[],Y=[];for(let G of J)if(G.task.kind==="main")z.push(G);else Y.push(G);return{projectRows:z,taskRows:Y}}function py(J,z){return J===z||J.id===z.id&&J.kind===z.kind&&J.title===z.title&&J.repo===z.repo&&J.branch===z.branch&&J.worktreePath===z.worktreePath&&J.status===z.status&&J.archived===z.archived&&J.pinned===z.pinned&&J.vendor===z.vendor}function x3(J,z){return gH(J,z,(Y)=>Y.task.id,(Y,G)=>Y.flatIndex===G.flatIndex&&py(Y.task,G.task),{samePosition:!0})}var CH=()=>{};var u3={};f1(u3,{startQuickTaskHost:()=>ty});async function ry(J,z){let Y,G;if(z){let j=await IJ(z,["@kobe_task","@kobe_worktree"]);Y=j["@kobe_task"]||void 0,G=j["@kobe_worktree"]||void 0}let Z=(Y?J?.getTask(Y)?.repo:void 0)??gJ()[0],X=Z??G??process.cwd();if(!Z)return{ctx:null,fallbackRepo:X};let Q=await ez(),f=xJ(g1("lastSelectedVendor"),uJ()),H=Q.length===0||Q.includes(f)?f:Q[0]??f,B=XQ(UJ(Z))??Cz,V=Q.length>0?Q:[H];return{ctx:{repo:Z,vendor:H,baseRef:B,engines:V},fallbackRepo:X}}async function oy(J,z,Y,G,Z){let X=await u9(J,z,Y,G),Q=C1(z.id),{pane:f}=await gX(Q,!X);if(f)await CX(f,Z)}function sy(J){let{theme:z}=d0(),Y=c1();e1(()=>{G()});async function G(){let Z=J.ctx,X=await Z3.show(Y,{repoLabel:Nz(Z.repo),engines:Z.engines,defaultVendor:Z.vendor,defaultBaseRef:Z.baseRef,engineLabel:VG});if(X===void 0)process.exit(0);r1("lastSelectedVendor",X.vendor),pz(Z.repo);let Q=J.orchestrator;if(!Q)console.error("[kobe quick-task] no daemon; cannot create task"),process.exit(1);try{let f=await Q.createTask({repo:Z.repo,baseRef:X.baseRef,vendor:X.vendor});await oy(Q,f,Z.repo,X.vendor,X.prompt),await OH(Q,f,Z.repo,X.vendor)}catch(f){console.error("[kobe quick-task] task.create/deliver failed:",f),process.exit(1)}process.exit(0)}return(()=>{var Z=W("box");return q(Z,"flexDirection","column"),q(Z,"flexGrow",1),y((X)=>q(Z,"backgroundColor",z.background,X)),Z})()}async function ty(J){await OJ({setup:async()=>{let z=null;try{let Z=await Az(),X=new KJ(Z);await X.init(),z=X}catch(Z){console.error("[kobe quick-task] daemon unavailable; cannot create task:",Z)}let{ctx:Y,fallbackRepo:G}=await ry(z,J.session);return{root:()=>Y?b(sy,{ctx:Y,orchestrator:z}):b(RH,{defaultRepo:G,orchestrator:z}),onDestroy:()=>{z?.dispose()}}}})}var E3=k(()=>{P();P();P();P();FJ();j1();nY();YG();sJ();F1();P1();xq();i1();X3();v1();qH();aY();HH();AH();w9();CH();nJ()});function kH(J){let z=J.trim().split(/\s+/).pop()??"",Y=/^([CM])-(.+)$/.exec(z);if(!Y)return null;let G=Y[1]==="C"?"\u2303":"\u2325",Z=Y[2]??"";return`${G}${Z.length===1?Z.toUpperCase():Z}`}function NH(J,z){if(J.includes("/"))return J.split("/").map((Z)=>NH(Z,z)).join("/");let Y=J.toLowerCase();if(Y==="tab")return"tab";let G=Jx[Y];if(G)return G;if(/^f\d{1,2}$/.test(Y))return Y.toUpperCase();if(!z)return J;if(/^[a-z]$/.test(Y))return J.toUpperCase();return J.replace(/[a-z]+/gi,(Z)=>Z.toUpperCase())}function _Z(J,z="\u2303B"){let Y=J.trim();if(!Y)return Y;let G=/^prefix\s+(.+)$/i.exec(Y);if(G){let f=G[1]??"";return`${z} ${f.includes("+")?_Z(f,z):NH(f,!0)}`}let Z=Y.split("+");if(Z.length===1)return NH(Z[0]??"",!1);let X=Z[Z.length-1]??"";return`${Z.slice(0,-1).map((f)=>ey[f.toLowerCase().trim()]??f).join("")} ${NH(X,!0)}`}var ey,Jx;var v9=k(()=>{ey={ctrl:"\u2303",control:"\u2303",alt:"\u2325",opt:"\u2325",option:"\u2325",shift:"\u21E7",cmd:"\u2318",command:"\u2318",meta:"\u2318",super:"\u2318"},Jx={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 w3}from"@opentui/core";function zx(J){let z=new Map,Y=[];for(let G of J){if(!z.has(G.category))z.set(G.category,[]),Y.push(G.category);z.get(G.category).push(G)}return Y.map((G)=>({category:G,rows:z.get(G)}))}function pZ(J={}){let z=c1(),{theme:Y}=d0(),G=()=>zx(iY),Z=()=>J.onClose?J.onClose():z.clear(),[X,Q]=a("\u2303B");return e1(()=>{$0(["show-options","-g","prefix"]).then(({code:f,stdout:H})=>{if(f!==0)return;let B=kH(H);if(B)Q(B)})}),D1(()=>({bindings:[{key:"?",cmd:Z}]})),(()=>{var f=W("box"),H=W("box"),B=W("text"),V=W("text"),j=W("scrollbox"),K=W("box");return D(f,H),D(f,j),q(f,"paddingLeft",2),q(f,"paddingRight",2),q(f,"gap",1),q(f,"flexShrink",1),D(H,B),D(H,V),q(H,"flexDirection","row"),q(H,"justifyContent","space-between"),q(H,"flexShrink",0),U(B,()=>F("help.title")),q(V,"onMouseUp",Z),U(V,()=>F("help.esc")),D(j,K),q(j,"flexShrink",1),q(j,"flexGrow",1),q(j,"stickyScroll",!1),q(K,"paddingBottom",1),q(K,"gap",1),q(K,"paddingRight",1),U(K,b(X1,{get each(){return G()},children:(L)=>(()=>{var A=W("box"),O=W("text");return D(A,O),q(A,"gap",0),U(O,()=>W9("category",L.category)),U(A,b(X1,{get each(){return L.rows},children:(g)=>{let x=g.hint?.keys??g.keys[0]??"\u2014",_=()=>x==="\u2014"?"\u2014":_Z(x,X()),S=()=>(g.hint?g.keys:g.keys.slice(1)).map((N)=>_Z(N,X()));return(()=>{var N=W("box"),M=W("box"),I=W("text"),r=W("box"),i=W("text");return D(N,M),D(N,r),q(N,"flexDirection","row"),q(N,"gap",2),q(N,"paddingLeft",1),D(M,I),q(M,"width",14),U(I,_),D(r,i),q(r,"flexGrow",1),U(i,()=>W9("desc",g.id)),U(N,(()=>{var e=x0(()=>S().length>0);return()=>e()?(()=>{var J0=W("box"),T=W("text");return D(J0,T),U(T,()=>`(${S().join(", ")})`),y((q0)=>q(T,"fg",Y.textMuted,q0)),J0})():null})(),null),y((e)=>{var{primary:J0,text:T}=Y;return J0!==e.e&&(e.e=q(I,"fg",J0,e.e)),T!==e.t&&(e.t=q(i,"fg",T,e.t)),e},{e:void 0,t:void 0}),N})()}}),null),y((g)=>{var x=Y.accent,_=w3.BOLD;return x!==g.e&&(g.e=q(O,"fg",x,g.e)),_!==g.t&&(g.t=q(O,"attributes",_,g.t)),g},{e:void 0,t:void 0}),A})()})),y((L)=>{var A=w3.BOLD,O=Y.text,g=Y.textMuted,x={trackOptions:{backgroundColor:Y.backgroundDialog,foregroundColor:Y.borderActive}};return A!==L.e&&(L.e=q(B,"attributes",A,L.e)),O!==L.t&&(L.t=q(B,"fg",O,L.t)),g!==L.a&&(L.a=q(V,"fg",g,L.a)),x!==L.o&&(L.o=q(j,"verticalScrollbarOptions",x,L.o)),L},{e:void 0,t:void 0,a:void 0,o:void 0}),f})()}var m9=k(()=>{P();P();P();P();P();P();P();j1();P1();$Z();v1();ZJ();v9();yJ();nJ();pZ.show=(J)=>{J.replace(()=>b(pZ,{}))}});import{TextAttributes as Yx}from"@opentui/core";function P3(J){let z=c1(),{theme:Y}=d0(),[G,Z]=a(J.currentTitle);function X(){let Q=G().trim();if(fQ(Q)&&!J.allowEmpty)return;J.onSubmit(Q),z.clear()}return(()=>{var Q=W("box"),f=W("box"),H=W("text"),B=W("text"),V=W("box"),j=W("text"),K=W("input"),L=W("box"),A=W("text");return D(Q,f),D(Q,V),D(Q,L),q(Q,"paddingLeft",2),q(Q,"paddingRight",2),q(Q,"gap",1),D(f,H),D(f,B),q(f,"flexDirection","row"),q(f,"justifyContent","space-between"),U(H,()=>J.dialogTitle??F("common.rename.defaultTitle")),D(B,E0("esc")),q(B,"onMouseUp",()=>J.onCancel()),D(V,j),D(V,K),q(V,"gap",0),U(j,()=>J.fieldLabel??F("common.rename.defaultFieldLabel")),q(K,"focused",!0),q(K,"onInput",(O)=>Z(DJ(O))),q(K,"onSubmit",()=>X()),D(L,A),q(L,"paddingBottom",1),U(A,()=>F("common.rename.footerHint",{submitLabel:J.submitLabel??F("common.rename.defaultSubmitLabel")})),y((O)=>{var g=Yx.BOLD,x=Y.text,_=Y.textMuted,S=Y.accent,N=G(),M=J.placeholder??J.currentTitle,I=Y.textMuted;return g!==O.e&&(O.e=q(H,"attributes",g,O.e)),x!==O.t&&(O.t=q(H,"fg",x,O.t)),_!==O.a&&(O.a=q(B,"fg",_,O.a)),S!==O.o&&(O.o=q(j,"fg",S,O.o)),N!==O.i&&(O.i=q(K,"value",N,O.i)),M!==O.n&&(O.n=q(K,"placeholder",M,O.n)),I!==O.s&&(O.s=q(A,"fg",I,O.s)),O},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),Q})()}var h3=k(()=>{P();P();P();P();P();P();P();ZJ();j1();v1();nJ();lZ()});function Gx(J,z,Y={}){return new Promise((G)=>{J.replace(()=>b(P3,{currentTitle:z,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:(Z)=>G(Z),onCancel:()=>G(void 0)}),()=>G(void 0))})}var VY;var c9=k(()=>{P();h3();VY={show:Gx}});import{TextAttributes as Zx}from"@opentui/core";function Xx(J){if(!J)return J;return J.charAt(0).toUpperCase()+J.slice(1)}function KY(J){let z=c1(),{theme:Y}=d0(),[G,Z]=dz({active:J.initialActive??"confirm"});return D1(()=>({bindings:[{key:"return",cmd:()=>{if(G.active==="confirm")J.onConfirm?.();if(G.active==="cancel")J.onCancel?.();z.clear()}},{key:"left",cmd:()=>Z("active",G.active==="confirm"?"cancel":"confirm")},{key:"right",cmd:()=>Z("active",G.active==="confirm"?"cancel":"confirm")}]})),(()=>{var X=W("box"),Q=W("box"),f=W("text"),H=W("text"),B=W("text"),V=W("box");return D(X,Q),D(X,B),D(X,V),q(X,"paddingLeft",2),q(X,"paddingRight",2),q(X,"paddingBottom",1),q(X,"gap",0),D(Q,f),D(Q,H),q(Q,"flexDirection","row"),q(Q,"justifyContent","space-between"),U(f,()=>J.title),D(H,E0("esc")),q(H,"onMouseUp",()=>z.clear()),U(B,()=>J.message),q(V,"flexDirection","row"),q(V,"justifyContent","flex-end"),q(V,"paddingTop",1),U(V,b(X1,{each:["cancel","confirm"],children:(j)=>(()=>{var K=W("box"),L=W("text");return D(K,L),q(K,"paddingLeft",1),q(K,"paddingRight",1),q(K,"onMouseUp",()=>{if(j==="confirm")J.onConfirm?.();if(j==="cancel")J.onCancel?.();z.clear()}),U(L,()=>Xx(j==="cancel"?J.label??F("common.cancel"):J.confirmLabel??F("common.confirm"))),y((A)=>{var O=j===G.active?Y.primary:void 0,g=j===G.active?Y.selectedListItemText:Y.textMuted;return O!==A.e&&(A.e=q(K,"backgroundColor",O,A.e)),g!==A.t&&(A.t=q(L,"fg",g,A.t)),A},{e:void 0,t:void 0}),K})()})),y((j)=>{var K=Zx.BOLD,L=Y.text,A=Y.textMuted,O=Y.textMuted;return K!==j.e&&(j.e=q(f,"attributes",K,j.e)),L!==j.t&&(j.t=q(f,"fg",L,j.t)),A!==j.a&&(j.a=q(H,"fg",A,j.a)),O!==j.o&&(j.o=q(B,"fg",O,j.o)),j},{e:void 0,t:void 0,a:void 0,o:void 0}),X})()}var d9=k(()=>{P();P();P();P();P();P();P();ZJ();j1();cZ();v1();yJ();nJ();KY.show=(J,z,Y,G,Z,X)=>{return new Promise((Q)=>{J.replace(()=>b(KY,{title:z,message:Y,onConfirm:()=>Q(!0),onCancel:()=>Q(!1),label:G,confirmLabel:Z,get initialActive(){return X?.initialActive}}),()=>Q(void 0)),J.setSize("small")})}});import{unlinkSync as Qx}from"fs";import{join as qx}from"path";function v3(J){return J instanceof KJ}function m3(J,z){try{J?.destroy()}catch(Y){console.error(`kobe: renderer.destroy() failed during ${z}:`,Y)}}async function n9(J,z,Y){if(await KY.show(J,"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;z.clear();try{Qx(qx(bz(),".kobe","tasks.json"))}catch(Z){if(Z.code!=="ENOENT")console.error("kobe: failed to delete tasks.json during reset:",Z)}m3(Y,"reset"),process.stderr.write(`kobe: UI state reset. Relaunch kobe to start fresh.
|
|
264
|
-
`),process.exit(0)}async function
|
|
265
|
-
`),process.exit(0)}var c3=k(()=>{nY();p1();d9()});function fx(J){return`theme:${J}`}function l9(J){return`language:${J}`}function $9(J){return`accent:${J}`}function Hx(J){return`engine:${J}`}function jQ(J){return`surface:${J}`}function a9(J){return[...J.themeNames.map((z)=>({id:fx(z),kind:"theme",name:z})),...EG.map((z)=>({id:l9(z.id),kind:"language",locale:z.id})),{id:"transparent",kind:"transparent"},...J.focusAccentSlots.map((z)=>({id:$9(z),kind:"focusAccent",slot:z})),{id:"toast",kind:"toast"},{id:"sound",kind:"sound"},{id:"zen-keep-tasks",kind:"zenKeepTasks"},{id:jQ("chattab"),kind:"surface",surface:"chattab"},{id:jQ("taskpanel"),kind:"surface",surface:"taskpanel"},{id:"editor-kind",kind:"editorKind"},{id:"editor-custom",kind:"editorCustom"}]}function Bx(J){return[...J.map((z)=>({id:Hx(z),kind:"engine",vendor:z})),{id:"add-engine",kind:"engineAdd"}]}function jx(){return[{id:"feedback-title",kind:"feedbackTitle"},{id:"feedback-body",kind:"feedbackBody"},{id:"feedback-send",kind:"feedbackSend"}]}function WQ(J){return[{id:"dev-reset",kind:"devReset"},...J?[{id:"dev-restart",kind:"devRestartDaemon"}]:[],{id:"remote-projects",kind:"devRemoteProjects"},{id:"auto-status",kind:"devAutoStatus"},{id:"dispatcher",kind:"devDispatcher"}]}function d3(J,z){switch(J){case"general":return a9(z);case"engines":return Bx(z.engineList);case"accounts":case"keys":return[];case"feedback":return jx();case"dev":return WQ(z.hasDaemon)}}function VQ(J,z){return J.findIndex((Y)=>Y.id===z)}function bH(J,z){return J[z]}var hG;var _9=k(()=>{iZ();hG=[{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 e0}from"@opentui/core";function n3(J){let{theme:z}=d0();return(()=>{var Y=W("box");return q(Y,"flexDirection","column"),q(Y,"flexShrink",0),q(Y,"width",14),q(Y,"gap",1),U(Y,b(X1,{each:hG,children:(G,Z)=>{let X=()=>Z()===J.cursor(),Q=()=>X()&&J.level()==="sidebar";return(()=>{var f=W("box"),H=W("text");return D(f,H),q(f,"paddingLeft",1),q(f,"paddingRight",1),q(f,"onMouseUp",()=>J.switchSection(G.id)),q(H,"wrapMode","none"),U(H,()=>F(`settings.sections.${G.id}`)),y((B)=>{var V=Q()?z.primary:void 0,j=Q()?z.selectedListItemText:X()?z.accent:z.textMuted,K=X()?e0.BOLD:void 0;return V!==B.e&&(B.e=q(f,"backgroundColor",V,B.e)),j!==B.t&&(B.t=q(H,"fg",j,B.t)),K!==B.a&&(B.a=q(H,"attributes",K,B.a)),B},{e:void 0,t:void 0,a:void 0}),f})()}})),Y})()}function i3(J){let z=d0(),{theme:Y}=z,G=()=>a9({themeNames:J.themeNames(),focusAccentSlots:uG}),Z=(M)=>VQ(G(),M),X=()=>Z("transparent"),Q=()=>Z("toast"),f=()=>Z("sound"),H=()=>Z("zen-keep-tasks"),B=()=>Z(jQ("chattab")),V=()=>Z(jQ("taskpanel")),j=()=>Z("editor-kind"),K=()=>Z("editor-custom"),L=()=>J.bodyRow()===X(),A=()=>J.bodyRow()===Q(),O=()=>J.bodyRow()===f(),g=()=>J.bodyRow()===H(),x=()=>J.bodyRow()===B(),_=()=>J.bodyRow()===V(),S=()=>J.bodyRow()===j(),N=()=>J.bodyRow()===K();return(()=>{var M=W("box"),I=W("text"),r=W("text"),i=W("box"),e=W("box"),J0=W("text"),T=W("text"),q0=W("box"),p=W("text"),B0=W("text"),L0=W("box"),V0=W("text"),t=W("box"),h=W("text"),C=W("text"),o=W("box"),E=W("text"),c=W("text"),s=W("box"),X0=W("text"),F0=E0(" "),P0=W("box"),A0=W("text"),N0=E0(" "),u=W("box"),g0=W("text"),Q0=W("text"),R0=W("box"),y0=W("text"),H1=E0(" "),G1=W("box"),w0=W("text"),o0=W("text"),$=W("box"),W0=W("text"),T0=E0(" "),s0=W("box"),a0=W("text"),_0=E0(" "),t0=W("box"),N1=W("text"),R1=W("text"),z0=W("box"),G0=W("text"),H0=W("box"),k0=W("text");return D(M,I),D(M,r),D(M,i),D(M,e),D(M,q0),D(M,t),D(M,o),D(M,u),D(M,G1),D(M,t0),q(M,"flexDirection","column"),q(M,"gap",1),U(I,()=>F("settings.general.theme")),U(r,()=>F("settings.general.themeHint")),q(i,"flexDirection","column"),q(i,"gap",0),U(i,b(X1,{get each(){return J.themeNames()},children:(R,h0)=>{let U0=()=>J.level()==="body"&&J.bodyRow()===h0(),u0=()=>R===z.selected;return(()=>{var j0=W("box"),D0=W("text");return D(j0,D0),q(j0,"flexDirection","row"),q(j0,"gap",1),q(j0,"paddingLeft",1),q(j0,"paddingRight",1),q(j0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(h0()),J.setThemeCursor(h0()),J.selectTheme(R)}),q(D0,"wrapMode","none"),U(D0,()=>u0()?"\u25CF ":" ",null),U(D0,R,null),y((C0)=>{var J1=U0()?Y.primary:void 0,z1=U0()?Y.selectedListItemText:u0()?Y.accent:Y.text,n0=U0()||u0()?e0.BOLD:void 0;return J1!==C0.e&&(C0.e=q(j0,"backgroundColor",J1,C0.e)),z1!==C0.t&&(C0.t=q(D0,"fg",z1,C0.t)),n0!==C0.a&&(C0.a=q(D0,"attributes",n0,C0.a)),C0},{e:void 0,t:void 0,a:void 0}),j0})()}})),D(e,J0),D(e,T),q(e,"flexDirection","column"),q(e,"gap",0),q(e,"paddingTop",1),U(J0,()=>F("settings.general.language")),q(T,"wrapMode","word"),U(T,()=>F("settings.general.languageHint")),U(e,b(X1,{each:EG,children:(R)=>{let h0=()=>Z(l9(R.id)),U0=()=>J.level()==="body"&&J.bodyRow()===h0(),u0=()=>J.currentLocale()===R.id;return(()=>{var j0=W("box"),D0=W("text");return D(j0,D0),q(j0,"flexDirection","row"),q(j0,"gap",1),q(j0,"paddingLeft",1),q(j0,"paddingRight",1),q(j0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(h0()),J.selectLanguage(R.id)}),q(D0,"wrapMode","none"),U(D0,()=>u0()?"\u25CF ":" ",null),U(D0,()=>R.label,null),y((C0)=>{var J1=U0()?Y.primary:void 0,z1=U0()?Y.selectedListItemText:u0()?Y.accent:Y.text,n0=U0()||u0()?e0.BOLD:void 0;return J1!==C0.e&&(C0.e=q(j0,"backgroundColor",J1,C0.e)),z1!==C0.t&&(C0.t=q(D0,"fg",z1,C0.t)),n0!==C0.a&&(C0.a=q(D0,"attributes",n0,C0.a)),C0},{e:void 0,t:void 0,a:void 0}),j0})()}}),null),D(q0,p),D(q0,B0),D(q0,L0),q(q0,"flexDirection","column"),q(q0,"gap",0),q(q0,"paddingTop",1),U(p,()=>F("settings.general.transparent")),q(B0,"wrapMode","word"),U(B0,()=>F("settings.general.transparentHint")),D(L0,V0),q(L0,"flexDirection","row"),q(L0,"paddingLeft",1),q(L0,"paddingRight",1),q(L0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(X()),J.toggleTransparent()}),q(V0,"wrapMode","none"),U(V0,(()=>{var R=x0(()=>!!z.transparentBackground);return()=>R()?F("settings.general.on"):F("settings.general.off")})()),D(t,h),D(t,C),q(t,"flexDirection","column"),q(t,"gap",0),q(t,"paddingTop",1),U(h,()=>F("settings.general.focusAccent")),q(C,"wrapMode","word"),U(C,()=>F("settings.general.focusAccentHint")),U(t,b(X1,{each:uG,children:(R)=>{let h0=()=>Z($9(R)),U0=()=>J.level()==="body"&&J.bodyRow()===h0(),u0=()=>z.focusAccent===R;return(()=>{var j0=W("box"),D0=W("text");return D(j0,D0),q(j0,"flexDirection","row"),q(j0,"gap",1),q(j0,"paddingLeft",1),q(j0,"paddingRight",1),q(j0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(h0()),J.selectFocusAccent(R)}),q(D0,"wrapMode","none"),U(D0,()=>u0()?"\u25CF ":" ",null),U(D0,()=>F(`settings.general.accent${R.charAt(0).toUpperCase()}${R.slice(1)}`),null),y((C0)=>{var J1=U0()?Y.primary:void 0,z1=U0()?Y.selectedListItemText:u0()?Y.focusAccent:Y.text,n0=U0()||u0()?e0.BOLD:void 0;return J1!==C0.e&&(C0.e=q(j0,"backgroundColor",J1,C0.e)),z1!==C0.t&&(C0.t=q(D0,"fg",z1,C0.t)),n0!==C0.a&&(C0.a=q(D0,"attributes",n0,C0.a)),C0},{e:void 0,t:void 0,a:void 0}),j0})()}}),null),D(o,E),D(o,c),D(o,s),D(o,P0),q(o,"flexDirection","column"),q(o,"gap",0),q(o,"paddingTop",1),U(E,()=>F("settings.general.notifications")),q(c,"wrapMode","word"),U(c,()=>F("settings.general.notificationsHint")),D(s,X0),q(s,"flexDirection","row"),q(s,"gap",1),q(s,"paddingLeft",1),q(s,"paddingRight",1),q(s,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(Q()),J.toggleToast()}),D(X0,F0),q(X0,"wrapMode","none"),U(X0,()=>J.toastEnabled()?"[x]":"[ ]",F0),U(X0,()=>F("settings.general.toast"),null),D(P0,A0),q(P0,"flexDirection","row"),q(P0,"gap",1),q(P0,"paddingLeft",1),q(P0,"paddingRight",1),q(P0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(f()),J.toggleSound()}),D(A0,N0),q(A0,"wrapMode","none"),U(A0,()=>J.soundEnabled()?"[x]":"[ ]",N0),U(A0,()=>F("settings.general.sound"),null),D(u,g0),D(u,Q0),D(u,R0),q(u,"flexDirection","column"),q(u,"gap",0),q(u,"paddingTop",1),U(g0,()=>F("settings.general.zen")),q(Q0,"wrapMode","word"),U(Q0,()=>F("settings.general.zenHint")),D(R0,y0),q(R0,"flexDirection","row"),q(R0,"gap",1),q(R0,"paddingLeft",1),q(R0,"paddingRight",1),q(R0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(H()),J.toggleZenKeepsTasks()}),D(y0,H1),q(y0,"wrapMode","none"),U(y0,()=>J.zenKeepsTasks()?"[x]":"[ ]",H1),U(y0,()=>F("settings.general.zenKeepTasks"),null),D(G1,w0),D(G1,o0),D(G1,$),D(G1,s0),q(G1,"flexDirection","column"),q(G1,"gap",0),q(G1,"paddingTop",1),U(w0,()=>F("settings.general.surface")),q(o0,"wrapMode","word"),U(o0,()=>F("settings.general.surfaceHint")),D($,W0),q($,"flexDirection","row"),q($,"gap",1),q($,"paddingLeft",1),q($,"paddingRight",1),q($,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(B()),J.selectSurface("chattab")}),D(W0,T0),q(W0,"wrapMode","none"),U(W0,()=>J.settingsSurface()==="chattab"?"[x]":"[ ]",T0),U(W0,()=>F("settings.general.surfaceChattab"),null),D(s0,a0),q(s0,"flexDirection","row"),q(s0,"gap",1),q(s0,"paddingLeft",1),q(s0,"paddingRight",1),q(s0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(V()),J.selectSurface("taskpanel")}),D(a0,_0),q(a0,"wrapMode","none"),U(a0,()=>J.settingsSurface()==="taskpanel"?"[x]":"[ ]",_0),U(a0,()=>F("settings.general.surfaceTaskpanel"),null),D(t0,N1),D(t0,R1),D(t0,z0),D(t0,H0),q(t0,"flexDirection","column"),q(t0,"gap",0),q(t0,"paddingTop",1),U(N1,()=>F("settings.general.editor")),q(R1,"wrapMode","word"),U(R1,()=>F("settings.general.editorHint")),D(z0,G0),q(z0,"flexDirection","row"),q(z0,"gap",1),q(z0,"paddingLeft",1),q(z0,"paddingRight",1),q(z0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(j()),J.cycleEditorKind()}),q(G0,"wrapMode","none"),U(G0,()=>F("settings.general.editorRow",{kind:J.editorKind()})),D(H0,k0),q(H0,"flexDirection","row"),q(H0,"gap",1),q(H0,"paddingLeft",1),q(H0,"paddingRight",1),q(H0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(K()),J.editEditorCustom()}),q(k0,"wrapMode","none"),U(k0,()=>F("settings.general.editorCustom",{cmd:J.editorCustomCommand().trim()||F("settings.general.editorCustomUnset")})),y((R)=>{var h0=Y.text,U0=e0.BOLD,u0=Y.textMuted,j0=Y.text,D0=e0.BOLD,C0=Y.textMuted,J1=Y.text,z1=e0.BOLD,n0=Y.textMuted,x1=L()?Y.primary:void 0,b0=L()?Y.selectedListItemText:z.transparentBackground?Y.accent:Y.textMuted,m1=e0.BOLD,v=Y.text,O0=e0.BOLD,W1=Y.textMuted,A1=Y.text,B1=e0.BOLD,d=Y.textMuted,Y0=A()?Y.primary:void 0,I0=A()?Y.selectedListItemText:J.toastEnabled()?Y.accent:Y.textMuted,S0=e0.BOLD,BJ=O()?Y.primary:void 0,LJ=O()?Y.selectedListItemText:J.soundEnabled()?Y.accent:Y.textMuted,XJ=e0.BOLD,iJ=Y.text,iz=e0.BOLD,AJ=Y.textMuted,lz=g()?Y.primary:void 0,UY=g()?Y.selectedListItemText:J.zenKeepsTasks()?Y.accent:Y.textMuted,m=e0.BOLD,n=Y.text,l=e0.BOLD,w=Y.textMuted,m0=x()?Y.primary:void 0,v0=x()?Y.selectedListItemText:J.settingsSurface()==="chattab"?Y.accent:Y.textMuted,M0=e0.BOLD,c0=_()?Y.primary:void 0,q1=_()?Y.selectedListItemText:J.settingsSurface()==="taskpanel"?Y.accent:Y.textMuted,L1=e0.BOLD,jJ=Y.text,Zz=e0.BOLD,DY=Y.textMuted,UW=S()?Y.primary:void 0,DW=S()?Y.selectedListItemText:Y.accent,LW=e0.BOLD,MW=N()?Y.primary:void 0,FW=N()?Y.selectedListItemText:J.editorKind()==="custom"?Y.text:Y.textMuted;return h0!==R.e&&(R.e=q(I,"fg",h0,R.e)),U0!==R.t&&(R.t=q(I,"attributes",U0,R.t)),u0!==R.a&&(R.a=q(r,"fg",u0,R.a)),j0!==R.o&&(R.o=q(J0,"fg",j0,R.o)),D0!==R.i&&(R.i=q(J0,"attributes",D0,R.i)),C0!==R.n&&(R.n=q(T,"fg",C0,R.n)),J1!==R.s&&(R.s=q(p,"fg",J1,R.s)),z1!==R.h&&(R.h=q(p,"attributes",z1,R.h)),n0!==R.r&&(R.r=q(B0,"fg",n0,R.r)),x1!==R.d&&(R.d=q(L0,"backgroundColor",x1,R.d)),b0!==R.l&&(R.l=q(V0,"fg",b0,R.l)),m1!==R.u&&(R.u=q(V0,"attributes",m1,R.u)),v!==R.c&&(R.c=q(h,"fg",v,R.c)),O0!==R.w&&(R.w=q(h,"attributes",O0,R.w)),W1!==R.m&&(R.m=q(C,"fg",W1,R.m)),A1!==R.f&&(R.f=q(E,"fg",A1,R.f)),B1!==R.y&&(R.y=q(E,"attributes",B1,R.y)),d!==R.g&&(R.g=q(c,"fg",d,R.g)),Y0!==R.p&&(R.p=q(s,"backgroundColor",Y0,R.p)),I0!==R.b&&(R.b=q(X0,"fg",I0,R.b)),S0!==R.T&&(R.T=q(X0,"attributes",S0,R.T)),BJ!==R.A&&(R.A=q(P0,"backgroundColor",BJ,R.A)),LJ!==R.O&&(R.O=q(A0,"fg",LJ,R.O)),XJ!==R.I&&(R.I=q(A0,"attributes",XJ,R.I)),iJ!==R.S&&(R.S=q(g0,"fg",iJ,R.S)),iz!==R.W&&(R.W=q(g0,"attributes",iz,R.W)),AJ!==R.C&&(R.C=q(Q0,"fg",AJ,R.C)),lz!==R.B&&(R.B=q(R0,"backgroundColor",lz,R.B)),UY!==R.v&&(R.v=q(y0,"fg",UY,R.v)),m!==R.k&&(R.k=q(y0,"attributes",m,R.k)),n!==R.x&&(R.x=q(w0,"fg",n,R.x)),l!==R.j&&(R.j=q(w0,"attributes",l,R.j)),w!==R.q&&(R.q=q(o0,"fg",w,R.q)),m0!==R.z&&(R.z=q($,"backgroundColor",m0,R.z)),v0!==R.P&&(R.P=q(W0,"fg",v0,R.P)),M0!==R.H&&(R.H=q(W0,"attributes",M0,R.H)),c0!==R.F&&(R.F=q(s0,"backgroundColor",c0,R.F)),q1!==R.M&&(R.M=q(a0,"fg",q1,R.M)),L1!==R.D&&(R.D=q(a0,"attributes",L1,R.D)),jJ!==R.R&&(R.R=q(N1,"fg",jJ,R.R)),Zz!==R.E&&(R.E=q(N1,"attributes",Zz,R.E)),DY!==R.L&&(R.L=q(R1,"fg",DY,R.L)),UW!==R.N&&(R.N=q(z0,"backgroundColor",UW,R.N)),DW!==R.G&&(R.G=q(G0,"fg",DW,R.G)),LW!==R.U&&(R.U=q(G0,"attributes",LW,R.U)),MW!==R.K&&(R.K=q(H0,"backgroundColor",MW,R.K)),FW!==R.V&&(R.V=q(k0,"fg",FW,R.V)),R},{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}),M})()}function l3(J){let{theme:z}=d0(),Y=()=>J.vendors.length;return(()=>{var G=W("box"),Z=W("text"),X=W("text"),Q=W("box"),f=W("box"),H=W("text");return D(G,Z),D(G,X),D(G,Q),q(G,"flexDirection","column"),q(G,"gap",1),U(Z,()=>F("settings.engines.title")),q(X,"wrapMode","word"),U(X,()=>F("settings.engines.hint")),D(Q,f),q(Q,"flexDirection","column"),q(Q,"gap",0),U(Q,b(X1,{get each(){return J.vendors},children:(B,V)=>{let j=()=>J.level()==="body"&&J.bodyRow()===V();return(()=>{var K=W("box"),L=W("text"),A=W("text"),O=W("text");return D(K,L),D(K,A),D(K,O),q(K,"flexDirection","row"),q(K,"gap",1),q(K,"paddingLeft",1),q(K,"paddingRight",1),q(K,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(V()),J.editEngine(B)}),q(L,"wrapMode","none"),U(L,()=>J.isDefaultEngine(B)?"\u25CF":" "),q(A,"wrapMode","none"),U(A,()=>J.displayName(B)),q(O,"wrapMode","none"),U(O,()=>J.commandText(B),null),U(O,(()=>{var g=x0(()=>!!J.isDefault(B));return()=>g()?F("settings.engines.defaultTag"):x0(()=>!!J.isCustom(B))()?F("settings.engines.customTag"):""})(),null),y((g)=>{var x=j()?z.primary:void 0,_=j()?z.selectedListItemText:z.accent,S=e0.BOLD,N=j()?z.selectedListItemText:z.text,M=e0.BOLD,I=j()?z.selectedListItemText:J.isDefault(B)?z.textMuted:z.accent;return x!==g.e&&(g.e=q(K,"backgroundColor",x,g.e)),_!==g.t&&(g.t=q(L,"fg",_,g.t)),S!==g.a&&(g.a=q(L,"attributes",S,g.a)),N!==g.o&&(g.o=q(A,"fg",N,g.o)),M!==g.i&&(g.i=q(A,"attributes",M,g.i)),I!==g.n&&(g.n=q(O,"fg",I,g.n)),g},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),K})()}}),f),D(f,H),q(f,"flexDirection","row"),q(f,"paddingLeft",1),q(f,"paddingRight",1),q(f,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(Y()),J.onAddEngine()}),q(H,"wrapMode","none"),U(H,()=>F("settings.engines.addEngine")),y((B)=>{var V=z.text,j=e0.BOLD,K=z.textMuted,L=J.level()==="body"&&J.bodyRow()===Y()?z.primary:void 0,A=J.level()==="body"&&J.bodyRow()===Y()?z.selectedListItemText:z.primary;return V!==B.e&&(B.e=q(Z,"fg",V,B.e)),j!==B.t&&(B.t=q(Z,"attributes",j,B.t)),K!==B.a&&(B.a=q(X,"fg",K,B.a)),L!==B.o&&(B.o=q(f,"backgroundColor",L,B.o)),A!==B.i&&(B.i=q(H,"fg",A,B.i)),B},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),G})()}function $3(J){let{theme:z}=d0(),Y=(G)=>G.binary.found?`Binary: ${G.binary.path}`:`Binary: ${G.binary.error}`;return(()=>{var G=W("box"),Z=W("text"),X=W("text"),Q=W("box"),f=W("text"),H=W("box"),B=W("text"),V=W("box"),j=W("text");return D(G,Z),D(G,X),D(G,Q),D(G,H),D(G,V),q(G,"flexDirection","column"),q(G,"gap",1),U(Z,()=>F("settings.accounts.title")),q(X,"wrapMode","word"),U(X,()=>F("settings.accounts.hint")),D(Q,f),q(Q,"flexDirection","column"),q(Q,"gap",0),D(f,E0("claude-code")),U(Q,b(Z0,{get when(){return J.claudeStatus()===null},get children(){var K=W("text");return U(K,()=>F("settings.accounts.checking")),y((L)=>q(K,"fg",z.textMuted,L)),K}}),null),U(Q,b(Z0,{get when(){return J.claudeStatus()},children:(K)=>(()=>{var L=W("box"),A=W("text");return D(L,A),q(L,"flexDirection","column"),q(L,"gap",0),q(A,"wrapMode","word"),U(A,()=>Y(K())),U(L,()=>{let O=K().account;if(O.kind==="oauth"){let g=[O.organization,O.billingType].filter((x)=>!!x).join(" \xB7 ");return(()=>{var x=W("text");return q(x,"wrapMode","word"),U(x,()=>F("settings.accounts.loggedIn",{email:O.email}),null),U(x,g?` (${g})`:"",null),y((_)=>q(x,"fg",z.success,_)),x})()}return(()=>{var g=W("text");return U(g,()=>F("settings.accounts.notLoggedIn")),y((x)=>q(g,"fg",z.textMuted,x)),g})()},null),U(L,b(Z0,{get when(){return K().accountError},children:(O)=>(()=>{var g=W("text");return q(g,"wrapMode","word"),U(g,()=>`! ${O()}`),y((x)=>q(g,"fg",z.warning,x)),g})()}),null),y((O)=>q(A,"fg",K().binary.found?z.textMuted:z.warning,O)),L})()}),null),D(H,B),q(H,"flexDirection","column"),q(H,"gap",0),D(B,E0("codex")),U(H,b(Z0,{get when(){return J.codexStatus()===null},get children(){var K=W("text");return U(K,()=>F("settings.accounts.checking")),y((L)=>q(K,"fg",z.textMuted,L)),K}}),null),U(H,b(Z0,{get when(){return J.codexStatus()},children:(K)=>(()=>{var L=W("box"),A=W("text");return D(L,A),q(L,"flexDirection","column"),q(L,"gap",0),q(A,"wrapMode","word"),U(A,()=>Y(K())),U(L,()=>{let O=K().account;if(O.kind==="chatgpt")return(()=>{var g=W("text");return q(g,"wrapMode","word"),U(g,()=>F("settings.accounts.chatgptLogin",{email:O.email}),null),U(g,(()=>{var x=x0(()=>!!O.plan);return()=>x()?` (${O.plan})`:""})(),null),y((x)=>q(g,"fg",z.success,x)),g})();if(O.kind==="apikey")return(()=>{var g=W("text");return U(g,()=>F("settings.accounts.apiKeyConfigured")),y((x)=>q(g,"fg",z.success,x)),g})();return(()=>{var g=W("text");return U(g,()=>F("settings.accounts.notLoggedIn")),y((x)=>q(g,"fg",z.textMuted,x)),g})()},null),U(L,b(Z0,{get when(){return K().accountError},children:(O)=>(()=>{var g=W("text");return q(g,"wrapMode","word"),U(g,()=>`! ${O()}`),y((x)=>q(g,"fg",z.warning,x)),g})()}),null),y((O)=>q(A,"fg",K().binary.found?z.textMuted:z.warning,O)),L})()}),null),D(V,j),q(V,"flexDirection","column"),q(V,"gap",0),D(j,E0("copilot")),U(V,b(Z0,{get when(){return J.copilotStatus()===null},get children(){var K=W("text");return U(K,()=>F("settings.accounts.checking")),y((L)=>q(K,"fg",z.textMuted,L)),K}}),null),U(V,b(Z0,{get when(){return J.copilotStatus()},children:(K)=>(()=>{var L=W("box"),A=W("text");return D(L,A),q(L,"flexDirection","column"),q(L,"gap",0),q(A,"wrapMode","word"),U(A,()=>Y(K())),U(L,()=>{let O=K().account;if(O.kind==="token")return(()=>{var g=W("text");return U(g,()=>F("settings.accounts.tokenConfigured",{source:O.source})),y((x)=>q(g,"fg",z.success,x)),g})();if(O.kind==="oauth")return(()=>{var g=W("text");return U(g,()=>F("settings.accounts.copilotDetected")),y((x)=>q(g,"fg",z.success,x)),g})();return(()=>{var g=W("text");return U(g,()=>F("settings.accounts.notLoggedIn")),y((x)=>q(g,"fg",z.textMuted,x)),g})()},null),U(L,b(Z0,{get when(){return K().accountError},children:(O)=>(()=>{var g=W("text");return q(g,"wrapMode","word"),U(g,()=>`! ${O()}`),y((x)=>q(g,"fg",z.warning,x)),g})()}),null),y((O)=>q(A,"fg",K().binary.found?z.textMuted:z.warning,O)),L})()}),null),y((K)=>{var L=z.text,A=e0.BOLD,O=z.textMuted,g=z.text,x=e0.BOLD,_=z.text,S=e0.BOLD,N=z.text,M=e0.BOLD;return L!==K.e&&(K.e=q(Z,"fg",L,K.e)),A!==K.t&&(K.t=q(Z,"attributes",A,K.t)),O!==K.a&&(K.a=q(X,"fg",O,K.a)),g!==K.o&&(K.o=q(f,"fg",g,K.o)),x!==K.i&&(K.i=q(f,"attributes",x,K.i)),_!==K.n&&(K.n=q(B,"fg",_,K.n)),S!==K.s&&(K.s=q(B,"attributes",S,K.s)),N!==K.h&&(K.h=q(j,"fg",N,K.h)),M!==K.r&&(K.r=q(j,"attributes",M,K.r)),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}),G})()}function a3(J){let{theme:z}=d0(),Y=()=>J.level()==="body",G=()=>Y()&&J.bodyRow()===0,Z=()=>Y()&&J.bodyRow()===1,X=()=>Y()&&J.bodyRow()===2,Q=(B)=>B?z.primary:z.textMuted,f=(B)=>B?e0.BOLD|e0.UNDERLINE:void 0,H;return r0(()=>{if(J.body()===""&&H&&H.plainText!=="")H.setText("")}),(()=>{var B=W("box"),V=W("text"),j=W("text"),K=W("box"),L=W("box"),A=W("text"),O=W("input"),g=W("box"),x=W("text"),_=W("textarea"),S=W("box"),N=W("text");return D(B,V),D(B,j),D(B,K),q(B,"flexDirection","column"),q(B,"gap",1),U(V,()=>F("settings.feedback.title")),q(j,"wrapMode","word"),U(j,()=>F("settings.feedback.hint")),D(K,L),D(K,g),D(K,S),q(K,"flexDirection","column"),q(K,"gap",1),D(L,A),D(L,O),q(L,"gap",0),U(A,()=>F("settings.feedback.titleLabel")),q(O,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(0)}),q(O,"onInput",(M)=>J.setTitle(DJ(M))),q(O,"onSubmit",()=>J.onTitleSubmit()),D(g,x),D(g,_),q(g,"gap",0),U(x,()=>F("settings.feedback.descriptionLabel")),cz((M)=>{H=M},_),q(_,"height",4),q(_,"wrapMode","word"),q(_,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(1)}),q(_,"onContentChange",()=>J.setBody(H?.plainText??"")),D(S,N),q(S,"flexDirection","row"),q(S,"paddingLeft",1),q(S,"paddingRight",1),q(S,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(2),J.submit()}),U(N,()=>F("settings.feedback.send")),U(B,b(Z0,{get when(){return J.status()},get children(){var M=W("text");return q(M,"wrapMode","word"),U(M,()=>J.status()),y((I)=>q(M,"fg",J.status().startsWith("error:")?z.warning:z.success,I)),M}}),null),y((M)=>{var I=z.text,r=e0.BOLD,i=z.textMuted,e=Q(G()),J0=f(G()),T=J.title(),q0=F("settings.feedback.titlePlaceholder"),p=G(),B0=Q(Z()),L0=f(Z()),V0=J.body(),t=F("settings.feedback.descriptionPlaceholder"),h=Z(),C=X()?z.primary:z.backgroundElement,o=X()?z.selectedListItemText:z.accent,E=e0.BOLD;return I!==M.e&&(M.e=q(V,"fg",I,M.e)),r!==M.t&&(M.t=q(V,"attributes",r,M.t)),i!==M.a&&(M.a=q(j,"fg",i,M.a)),e!==M.o&&(M.o=q(A,"fg",e,M.o)),J0!==M.i&&(M.i=q(A,"attributes",J0,M.i)),T!==M.n&&(M.n=q(O,"value",T,M.n)),q0!==M.s&&(M.s=q(O,"placeholder",q0,M.s)),p!==M.h&&(M.h=q(O,"focused",p,M.h)),B0!==M.r&&(M.r=q(x,"fg",B0,M.r)),L0!==M.d&&(M.d=q(x,"attributes",L0,M.d)),V0!==M.l&&(M.l=q(_,"initialValue",V0,M.l)),t!==M.u&&(M.u=q(_,"placeholder",t,M.u)),h!==M.c&&(M.c=q(_,"focused",h,M.c)),C!==M.w&&(M.w=q(S,"backgroundColor",C,M.w)),o!==M.m&&(M.m=q(N,"fg",o,M.m)),E!==M.f&&(M.f=q(N,"attributes",E,M.f)),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,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0,w:void 0,m:void 0,f:void 0}),B})()}function _3(J){let{theme:z}=d0(),Y=()=>J.level()==="body"&&J.bodyRow()===0,G=()=>J.level()==="body"&&J.bodyRow()===1,Z=()=>VQ(WQ(J.hasDaemon),"remote-projects"),X=()=>J.level()==="body"&&J.bodyRow()===Z(),Q=()=>VQ(WQ(J.hasDaemon),"auto-status"),f=()=>J.level()==="body"&&J.bodyRow()===Q(),H=()=>VQ(WQ(J.hasDaemon),"dispatcher"),B=()=>J.level()==="body"&&J.bodyRow()===H();return(()=>{var V=W("box"),j=W("text"),K=W("text"),L=W("box"),A=W("text"),O=W("text"),g=W("box"),x=W("text"),_=W("text"),S=W("box"),N=W("text"),M=W("text"),I=W("box"),r=W("text"),i=W("text"),e=W("box"),J0=W("text");return D(V,j),D(V,K),D(V,L),D(V,O),D(V,g),q(V,"flexDirection","column"),q(V,"gap",1),U(j,()=>F("settings.dev.reset")),q(K,"wrapMode","word"),U(K,()=>F("settings.dev.resetHint")),D(L,A),q(L,"flexDirection","row"),q(L,"paddingLeft",1),q(L,"paddingRight",1),q(L,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(0),J.confirmReset()}),U(A,()=>F("settings.dev.resetButton")),U(V,b(Z0,{get when(){return J.hasDaemon},get children(){var T=W("box"),q0=W("text"),p=W("text"),B0=W("box"),L0=W("text");return D(T,q0),D(T,p),D(T,B0),q(T,"flexDirection","column"),q(T,"gap",0),q(T,"paddingTop",1),U(q0,()=>F("settings.dev.restart")),q(p,"wrapMode","word"),U(p,()=>F("settings.dev.restartHint")),D(B0,L0),q(B0,"flexDirection","row"),q(B0,"paddingLeft",1),q(B0,"paddingRight",1),q(B0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(1),J.confirmRestartDaemon()}),U(L0,()=>F("settings.dev.restartButton")),y((V0)=>{var t=z.text,h=e0.BOLD,C=z.textMuted,o=G()?z.primary:z.backgroundElement,E=G()?z.selectedListItemText:z.accent,c=e0.BOLD;return t!==V0.e&&(V0.e=q(q0,"fg",t,V0.e)),h!==V0.t&&(V0.t=q(q0,"attributes",h,V0.t)),C!==V0.a&&(V0.a=q(p,"fg",C,V0.a)),o!==V0.o&&(V0.o=q(B0,"backgroundColor",o,V0.o)),E!==V0.i&&(V0.i=q(L0,"fg",E,V0.i)),c!==V0.n&&(V0.n=q(L0,"attributes",c,V0.n)),V0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),T}}),O),q(O,"wrapMode","word"),U(O,()=>F("settings.dev.doctorHint")),D(g,x),D(g,_),D(g,S),D(g,M),D(g,I),D(g,i),D(g,e),q(g,"flexDirection","column"),q(g,"gap",0),q(g,"paddingTop",1),U(x,()=>F("settings.dev.experimental")),q(_,"wrapMode","word"),U(_,()=>F("settings.dev.remoteHint")),D(S,N),q(S,"flexDirection","row"),q(S,"paddingLeft",1),q(S,"paddingRight",1),q(S,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(Z()),J.toggleRemoteProjects()}),U(N,(()=>{var T=x0(()=>!!J.remoteProjectsEnabled());return()=>T()?F("settings.dev.remoteOn"):F("settings.dev.remoteOff")})()),q(M,"wrapMode","word"),U(M,()=>F("settings.dev.autoStatusHint")),D(I,r),q(I,"flexDirection","row"),q(I,"paddingLeft",1),q(I,"paddingRight",1),q(I,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(Q()),J.toggleAutoStatus()}),U(r,(()=>{var T=x0(()=>!!J.autoStatusEnabled());return()=>T()?F("settings.dev.autoStatusOn"):F("settings.dev.autoStatusOff")})()),q(i,"wrapMode","word"),U(i,()=>F("settings.dev.dispatcherHint")),D(e,J0),q(e,"flexDirection","row"),q(e,"paddingLeft",1),q(e,"paddingRight",1),q(e,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(H()),J.toggleDispatcher()}),U(J0,(()=>{var T=x0(()=>!!J.dispatcherEnabled());return()=>T()?F("settings.dev.dispatcherOn"):F("settings.dev.dispatcherOff")})()),y((T)=>{var q0=z.text,p=e0.BOLD,B0=z.textMuted,L0=Y()?z.primary:z.backgroundElement,V0=Y()?z.selectedListItemText:z.warning,t=e0.BOLD,h=z.textMuted,C=z.text,o=e0.BOLD,E=z.textMuted,c=X()?z.primary:z.backgroundElement,s=X()?z.selectedListItemText:z.text,X0=J.remoteProjectsEnabled()?e0.BOLD:void 0,F0=z.textMuted,P0=f()?z.primary:z.backgroundElement,A0=f()?z.selectedListItemText:z.text,N0=J.autoStatusEnabled()?e0.BOLD:void 0,u=z.textMuted,g0=B()?z.primary:z.backgroundElement,Q0=B()?z.selectedListItemText:z.text,R0=J.dispatcherEnabled()?e0.BOLD:void 0;return q0!==T.e&&(T.e=q(j,"fg",q0,T.e)),p!==T.t&&(T.t=q(j,"attributes",p,T.t)),B0!==T.a&&(T.a=q(K,"fg",B0,T.a)),L0!==T.o&&(T.o=q(L,"backgroundColor",L0,T.o)),V0!==T.i&&(T.i=q(A,"fg",V0,T.i)),t!==T.n&&(T.n=q(A,"attributes",t,T.n)),h!==T.s&&(T.s=q(O,"fg",h,T.s)),C!==T.h&&(T.h=q(x,"fg",C,T.h)),o!==T.r&&(T.r=q(x,"attributes",o,T.r)),E!==T.d&&(T.d=q(_,"fg",E,T.d)),c!==T.l&&(T.l=q(S,"backgroundColor",c,T.l)),s!==T.u&&(T.u=q(N,"fg",s,T.u)),X0!==T.c&&(T.c=q(N,"attributes",X0,T.c)),F0!==T.w&&(T.w=q(M,"fg",F0,T.w)),P0!==T.m&&(T.m=q(I,"backgroundColor",P0,T.m)),A0!==T.f&&(T.f=q(r,"fg",A0,T.f)),N0!==T.y&&(T.y=q(r,"attributes",N0,T.y)),u!==T.g&&(T.g=q(i,"fg",u,T.g)),g0!==T.p&&(T.p=q(e,"backgroundColor",g0,T.p)),Q0!==T.b&&(T.b=q(J0,"fg",Q0,T.b)),R0!==T.T&&(T.T=q(J0,"attributes",R0,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 p3(){let{theme:J}=d0(),z=B3(),Y=Object.keys(YB).sort();return(()=>{var G=W("box"),Z=W("text"),X=W("text"),Q=W("box"),f=W("text"),H=W("text"),B=W("text"),V=W("text");return D(G,Z),D(G,X),D(G,Q),D(G,B),D(G,V),q(G,"flexDirection","column"),q(G,"gap",1),U(Z,()=>F("settings.keybindings.title")),q(X,"wrapMode","word"),U(X,()=>F("settings.keybindings.hint")),D(Q,f),D(Q,H),q(Q,"flexDirection","column"),q(Q,"gap",0),U(f,()=>F("settings.keybindings.configFile")),q(H,"wrapMode","word"),U(H,()=>z.path,null),U(H,(()=>{var j=x0(()=>!!z.exists);return()=>j()?"":F("settings.keybindings.notCreated")})(),null),U(G,b(Z0,{get when(){return!z.exists},get children(){var j=W("box"),K=W("text"),L=W("text"),A=W("text"),O=W("text"),g=W("text"),x=W("text"),_=W("text"),S=W("text"),N=W("text"),M=W("text");return D(j,K),D(j,L),D(j,A),D(j,O),D(j,g),D(j,x),D(j,_),D(j,S),D(j,N),D(j,M),q(j,"flexDirection","column"),q(j,"gap",0),U(K,()=>F("settings.keybindings.example")),D(L,E0("bindings:")),D(A,E0(" chat.fork.new: ctrl+g # string = one chord")),D(O,E0(" sidebar.select: [enter] # list = several chords")),D(g,E0(" files.createPR: null # null = unbind")),D(x,E0(" tmux.tab.new: ctrl+y # tmux session key (see below)")),D(_,E0(" tmux.layout.workspaceSplit: g # prefix g")),D(S,E0("darwin: # platform overlay (also: linux)")),D(N,E0(" bindings:")),D(M,E0(" palette.open: [cmd+p, ctrl+p]")),y((I)=>{var r=J.text,i=e0.BOLD,e=J.textMuted,J0=J.textMuted,T=J.textMuted,q0=J.textMuted,p=J.textMuted,B0=J.textMuted,L0=J.textMuted,V0=J.textMuted,t=J.textMuted;return r!==I.e&&(I.e=q(K,"fg",r,I.e)),i!==I.t&&(I.t=q(K,"attributes",i,I.t)),e!==I.a&&(I.a=q(L,"fg",e,I.a)),J0!==I.o&&(I.o=q(A,"fg",J0,I.o)),T!==I.i&&(I.i=q(O,"fg",T,I.i)),q0!==I.n&&(I.n=q(g,"fg",q0,I.n)),p!==I.s&&(I.s=q(x,"fg",p,I.s)),B0!==I.h&&(I.h=q(_,"fg",B0,I.h)),L0!==I.r&&(I.r=q(S,"fg",L0,I.r)),V0!==I.d&&(I.d=q(N,"fg",V0,I.d)),t!==I.l&&(I.l=q(M,"fg",t,I.l)),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}),j}}),B),U(G,b(Z0,{get when(){return z.exists},get children(){var j=W("box"),K=W("text");return D(j,K),q(j,"flexDirection","column"),q(j,"gap",0),U(K,()=>F("settings.keybindings.overridesApplied")),U(j,b(Z0,{get when(){return z.applied.length===0},get children(){var L=W("text");return U(L,()=>F("settings.keybindings.none")),y((A)=>q(L,"fg",J.textMuted,A)),L}}),null),U(j,b(X1,{get each(){return z.applied},children:(L)=>(()=>{var A=W("text");return q(A,"wrapMode","word"),U(A,()=>`${L.id} \u2192 ${L.keys.length>0?L.keys.join(" / "):"(unbound)"} (default: ${L.defaultKeys.join(" / ")})`),y((O)=>q(A,"fg",J.text,O)),A})()}),null),y((L)=>{var A=J.text,O=e0.BOLD;return A!==L.e&&(L.e=q(K,"fg",A,L.e)),O!==L.t&&(L.t=q(K,"attributes",O,L.t)),L},{e:void 0,t:void 0}),j}}),B),U(G,b(Z0,{get when(){return z.warnings.length>0},get children(){var j=W("box"),K=W("text");return D(j,K),q(j,"flexDirection","column"),q(j,"gap",0),U(K,()=>F("settings.keybindings.warnings")),U(j,b(X1,{get each(){return z.warnings},children:(L)=>(()=>{var A=W("text");return q(A,"wrapMode","word"),U(A,`! ${L}`),y((O)=>q(A,"fg",J.warning,O)),A})()}),null),y((L)=>{var A=J.warning,O=e0.BOLD;return A!==L.e&&(L.e=q(K,"fg",A,L.e)),O!==L.t&&(L.t=q(K,"attributes",O,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.")),q(B,"wrapMode","word"),q(V,"wrapMode","word"),U(V,()=>`Fixed (not rebindable): ${Y.join(", ")}.`),y((j)=>{var K=J.text,L=e0.BOLD,A=J.textMuted,O=J.text,g=e0.BOLD,x=J.textMuted,_=J.textMuted,S=J.textMuted;return K!==j.e&&(j.e=q(Z,"fg",K,j.e)),L!==j.t&&(j.t=q(Z,"attributes",L,j.t)),A!==j.a&&(j.a=q(X,"fg",A,j.a)),O!==j.o&&(j.o=q(f,"fg",O,j.o)),g!==j.i&&(j.i=q(f,"attributes",g,j.i)),x!==j.n&&(j.n=q(H,"fg",x,j.n)),_!==j.s&&(j.s=q(B,"fg",_,j.s)),S!==j.h&&(j.h=q(V,"fg",S,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}),G})()}var r3=k(()=>{P();P();P();P();P();P();P();P();P();j1();I9();v1();ZJ();iZ();Iq();lZ();_9()});import{TextAttributes as Wx}from"@opentui/core";function Vx(J){return J.split(/[-_]+/).filter((z)=>z.length>0).map((z)=>z.charAt(0).toUpperCase()+z.slice(1)).join(" ")}function vG(J){let z=c1(),Y=d0(),G=fJ(),{theme:Z}=Y,[X,Q]=a("sidebar"),[f,H]=a("general"),[B,V]=a(0),[j,K]=a(0),[L,A]=a(""),[O,g]=a(""),[x,_]=a(""),S=K0(()=>Y.all().slice().sort()),[,N]=a(Math.max(0,S().findIndex((v)=>v===Y.selected))),M=v3(J.orchestrator),[I,r]=a(null),[i,e]=a(null),[J0,T]=a(null),q0=!1;r0(()=>{if(f()!=="accounts"||q0)return;q0=!0,cQ().then(r),dQ().then(e),nQ().then(T)});function p(){return d3(f(),{themeNames:S(),focusAccentSlots:uG,engineList:w0(),hasDaemon:M})}function B0(){return p().length}function L0(){return SG(J.kv.get(QY,bG))}function V0(v){if(Y.selected===v)return;if(!Y.set(v))return;J.kv.set("activeTheme",v),J.onVisualPrefsChange?.()}function t(){return j9()}function h(v){if(j9()===v)return;ZQ(v),J.kv.set(FH,v),J.onVisualPrefsChange?.()}function C(v){if(Y.transparentBackground===v)return;Y.setTransparentBackground(v),J.kv.set("transparentBackground",v),J.onVisualPrefsChange?.()}function o(){C(!Y.transparentBackground)}function E(v){if(Y.focusAccent===v)return;Y.setFocusAccent(v),J.kv.set("focusAccent",v),J.onVisualPrefsChange?.()}function c(v){J.kv.set(QY,v)}function s(){return J.kv.get("notifications.toast.enabled",!0)!==!1}function X0(){return J.kv.get("notifications.sound.enabled",!0)!==!1}function F0(){J.kv.set("notifications.toast.enabled",!s())}function P0(){J.kv.set("notifications.sound.enabled",!X0())}function A0(){return J.kv.get(lq,!0)!==!1}function N0(){J.kv.set(lq,!A0())}function u(){return J.kv.get("experimental.remoteProjects",!1)===!0}function g0(){J.kv.set("experimental.remoteProjects",!u())}function Q0(){return J.kv.get(jG,!1)===!0}function R0(){J.kv.set(jG,!Q0())}function y0(){return J.kv.get(WG,!1)===!0}function H1(){J.kv.set(WG,!y0())}function G1(){let v=J.kv.get("customEngineIds",[]);return Array.isArray(v)?v.filter((O0)=>typeof O0==="string"&&O0.trim().length>0):[]}function w0(){return[...n1,...G1()]}function o0(v){let O0=J.kv.get(Kz(v),"");return typeof O0==="string"?O0.trim():""}function $(v){return o0(v)||RX(v).join(" ")}function W0(v){return QJ(v)&&o0(v).length===0&&!s0(v)}function T0(v){let O0=J.kv.get(Uz(v),"");return typeof O0==="string"?O0.trim():""}function s0(v){return T0(v).length>0}function a0(v){return T0(v)||JB[v]||v}let[_0,t0]=a(xJ(g1("lastSelectedVendor"),G1()));function N1(v){return _0()===v}function R1(v){r1("lastSelectedVendor",v),J.kv.set("lastSelectedVendor",v),t0(v)}async function z0(v){let O0=await VY.show(z,$(v),{dialogTitle:`${a0(v)} launch command`,fieldLabel:"command",submitLabel:"save",allowEmpty:!0});if(O0===void 0)return;J.kv.set(Kz(v),O0.trim())}async function G0(v){let O0=await VY.show(z,a0(v),{dialogTitle:`${a0(v)} display name (blank = default)`,fieldLabel:"name",submitLabel:"save",allowEmpty:!0});if(O0===void 0)return;J.kv.set(Uz(v),O0.trim())}function H0(v){if(J.kv.set(Kz(v),""),J.kv.set(Uz(v),""),!QJ(v))J.kv.set("customEngineIds",G1().filter((O0)=>O0!==v)),K((O0)=>Math.max(0,Math.min(O0,w0().length)))}async function k0(){let v=await VY.show(z,"",{dialogTitle:"Add engine",fieldLabel:"id",submitLabel:"next",placeholder:"lowercase slug, e.g. aider"});if(v===void 0)return;let O0=v.trim().toLowerCase();if(!O0||QJ(O0)||G1().includes(O0))return;let W1=await VY.show(z,"",{dialogTitle:`Add engine \xB7 ${O0}`,fieldLabel:"command",submitLabel:"next",placeholder:"e.g. aider --model sonnet"});if(W1===void 0)return;let A1=await VY.show(z,O0,{dialogTitle:`Add engine \xB7 ${O0}`,fieldLabel:"name",submitLabel:"add",allowEmpty:!0});if(J.kv.set("customEngineIds",[...G1(),O0]),W1.trim())J.kv.set(Kz(O0),W1.trim());let B1=A1?.trim()??"";J.kv.set(Uz(O0),B1&&B1!==O0?B1:Vx(O0))}function R(){if(f()!=="engines"||X()!=="body")return null;let v=bH(p(),j());return v?.kind==="engine"?v.vendor:null}function h0(){return RZ(J.kv.get(XY,Cf))}function U0(){let v=kG.indexOf(h0()),O0=kG[(v+1)%kG.length];if(O0)J.kv.set(XY,O0)}function u0(){let v=J.kv.get(wY,"");return typeof v==="string"?v:""}async function j0(){let v=await VY.show(z,u0(),{dialogTitle:"Custom editor command (use {file} for the path)",fieldLabel:"command",submitLabel:"save",allowEmpty:!0});if(v===void 0)return;let O0=v.trim();if(J.kv.set(wY,O0),O0)J.kv.set(XY,"custom")}async function D0(){_("submitting...");try{let v=EZ({title:L(),body:O()});_(`sent: ${v.url}`),A(""),g(""),K(0)}catch(v){_(`error: ${v instanceof Error?v.message:String(v)}`)}}let C0=()=>f()==="feedback"&&X()==="body";function J1(v){let O0=j()+v;if(O0<0||O0>2){Q("sidebar");return}K(O0)}function z1(){if(X()!=="sidebar"||B0()===0)return;if(Q("body"),K(0),f()==="general")N(0)}function n0(v){if(X()==="sidebar"){let A1=(B()+v+hG.length)%hG.length;V(A1);let B1=hG[A1];if(B1)H(B1.id),K(0);return}let O0=B0();if(O0===0)return;let W1=(j()+v+O0)%O0;if(K(W1),bH(p(),W1)?.kind==="theme")N(W1)}function x1(v){H(v),V(hG.findIndex((O0)=>O0.id===v)),K(0),Q("sidebar")}let b0={theme:(v)=>V0(v.name),language:(v)=>h(v.locale),transparent:()=>o(),focusAccent:(v)=>E(v.slot),toast:()=>F0(),sound:()=>P0(),zenKeepTasks:()=>N0(),surface:(v)=>c(v.surface),editorKind:()=>U0(),editorCustom:()=>void j0(),engine:(v)=>void z0(v.vendor),engineAdd:()=>void k0(),feedbackTitle:()=>K(0),feedbackBody:()=>K(1),feedbackSend:()=>void D0(),devReset:()=>void n9(z,J.kv,G),devRestartDaemon:()=>void i9(z,J.orchestrator,G),devRemoteProjects:()=>g0(),devAutoStatus:()=>R0(),devDispatcher:()=>H1()};function m1(){let v=bH(p(),j());if(!v)return;b0[v.kind](v)}return D1(()=>({enabled:(!J.standalone||z.stack.length===0)&&!C0(),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:z1},{key:"l",cmd:z1},{key:"left",cmd:()=>Q("sidebar")},{key:"h",cmd:()=>Q("sidebar")},{key:"return",cmd:()=>{if(X()==="sidebar"){z1();return}m1()}},{key:"t",cmd:o},{key:"r",cmd:()=>{let v=R();if(v)G0(v)}},{key:"x",cmd:()=>{let v=R();if(v)H0(v)}},{key:"d",cmd:()=>{let v=R();if(v)R1(v)}}]})),D1(()=>({enabled:C0(),bindings:[{key:"tab",cmd:()=>J1(1)},{key:"shift+tab",cmd:()=>J1(-1)}]})),D1(()=>({enabled:C0()&&j()===2,bindings:[{key:"return",cmd:()=>void D0()}]})),(()=>{var v=W("box"),O0=W("box"),W1=W("text"),A1=W("text"),B1=W("box"),d=W("box"),Y0=W("box"),I0=W("text");return D(v,O0),D(v,B1),D(v,Y0),q(v,"paddingLeft",2),q(v,"paddingRight",2),q(v,"paddingBottom",1),q(v,"gap",1),D(O0,W1),D(O0,A1),q(O0,"flexDirection","row"),q(O0,"justifyContent","space-between"),U(W1,()=>F("settings.title")),q(A1,"onMouseUp",()=>J.onClose()),U(A1,()=>F("settings.esc")),D(B1,d),q(B1,"flexDirection","row"),q(B1,"gap",2),U(B1,b(n3,{level:X,cursor:B,switchSection:x1}),d),q(d,"flexGrow",1),q(d,"flexShrink",1),q(d,"flexDirection","column"),q(d,"gap",1),U(d,b(Z0,{get when(){return f()==="general"},get children(){return b(i3,{level:X,bodyRow:j,setLevel:Q,setBodyRow:K,themeNames:S,setThemeCursor:N,selectTheme:V0,currentLocale:t,selectLanguage:h,toggleTransparent:o,selectFocusAccent:E,toastEnabled:s,soundEnabled:X0,toggleToast:F0,toggleSound:P0,zenKeepsTasks:A0,toggleZenKeepsTasks:N0,settingsSurface:L0,selectSurface:c,editorKind:h0,cycleEditorKind:U0,editorCustomCommand:u0,editEditorCustom:()=>void j0()})}}),null),U(d,b(Z0,{get when(){return f()==="engines"},get children(){return b(l3,{level:X,bodyRow:j,setLevel:Q,setBodyRow:K,get vendors(){return w0()},isCustom:(S0)=>!QJ(S0),displayName:a0,commandText:$,isDefault:W0,isDefaultEngine:N1,editEngine:(S0)=>void z0(S0),renameEngine:(S0)=>void G0(S0),resetEngine:H0,onAddEngine:()=>void k0()})}}),null),U(d,b(Z0,{get when(){return f()==="accounts"},get children(){return b($3,{claudeStatus:I,codexStatus:i,copilotStatus:J0})}}),null),U(d,b(Z0,{get when(){return f()==="keys"},get children(){return b(p3,{})}}),null),U(d,b(Z0,{get when(){return f()==="feedback"},get children(){return b(a3,{level:X,bodyRow:j,setLevel:Q,setBodyRow:K,title:L,setTitle:(S0)=>{A(S0),_("")},body:O,setBody:(S0)=>{g(S0),_("")},status:x,onTitleSubmit:()=>K(1),submit:()=>void D0()})}}),null),U(d,b(Z0,{get when(){return f()==="dev"},get children(){return b(_3,{level:X,bodyRow:j,setLevel:Q,setBodyRow:K,hasDaemon:M,confirmReset:()=>void n9(z,J.kv,G),confirmRestartDaemon:()=>void i9(z,J.orchestrator,G),remoteProjectsEnabled:u,toggleRemoteProjects:g0,autoStatusEnabled:Q0,toggleAutoStatus:R0,dispatcherEnabled:y0,toggleDispatcher:H1})}}),null),D(Y0,I0),q(Y0,"paddingTop",0),U(I0,(()=>{var S0=x0(()=>!!C0());return()=>S0()?F("settings.nav.feedback"):F("settings.nav.default")})()),y((S0)=>{var BJ=Wx.BOLD,LJ=Z.text,XJ=Z.textMuted,iJ=Z.textMuted;return BJ!==S0.e&&(S0.e=q(W1,"attributes",BJ,S0.e)),LJ!==S0.t&&(S0.t=q(W1,"fg",LJ,S0.t)),XJ!==S0.a&&(S0.a=q(A1,"fg",XJ,S0.a)),iJ!==S0.o&&(S0.o=q(I0,"fg",iJ,S0.o)),S0},{e:void 0,t:void 0,a:void 0,o:void 0}),v})()}var p9=k(()=>{P();P();P();P();P();P();P();P();j1();YG();sJ();lf();AX();gq();F1();fB();i1();v1();ZJ();Nf();yJ();x9();nJ();c9();c3();_9();r3();vG.show=(J,z,Y)=>{let G=!1;return new Promise((Z)=>{J.replace(()=>b(vG,{kv:z,orchestrator:Y,onVisualPrefsChange:()=>{G=!0},onClose:()=>Z({visualPrefsChanged:G})}),()=>Z({visualPrefsChanged:G}))})}});import{TextAttributes as Kx}from"@opentui/core";function s3(){let{theme:J}=d0(),z=mz(),Y=LH(),G=()=>Y.toasts().slice(-o3),Z=()=>Math.max(0,z().width-Ux-Dx),X=()=>Math.max(0,z().height-Lx-o3-1);return b(Z0,{get when(){return Y.toasts().length>0},get children(){var Q=W("box");return q(Q,"position","absolute"),q(Q,"zIndex",2500),q(Q,"width",40),q(Q,"flexDirection","column"),q(Q,"gap",0),U(Q,b(X1,{get each(){return G()},children:(f)=>{let H=()=>f.kind==="needs_input"?J.warning:f.kind==="error"?J.error:J.success,B=()=>J.selectedListItemText,V=()=>f.kind==="needs_input"?"?":f.kind==="error"?"\u2715":"\u2713";return(()=>{var j=W("box"),K=W("text"),L=W("text");return D(j,K),D(j,L),q(j,"flexDirection","row"),q(j,"gap",1),q(j,"paddingLeft",1),q(j,"paddingRight",1),q(j,"onMouseUp",()=>Y.dismiss(f.id)),q(K,"wrapMode","none"),U(K,V),q(L,"wrapMode","none"),U(L,()=>f.title),y((A)=>{var O=H(),g=B(),x=Kx.BOLD,_=B();return O!==A.e&&(A.e=q(j,"backgroundColor",O,A.e)),g!==A.t&&(A.t=q(K,"fg",g,A.t)),x!==A.a&&(A.a=q(K,"attributes",x,A.a)),_!==A.o&&(A.o=q(L,"fg",_,A.o)),A},{e:void 0,t:void 0,a:void 0,o:void 0}),j})()}})),y((f)=>{var H=Z(),B=X();return H!==f.e&&(f.e=q(Q,"left",H,f.e)),B!==f.t&&(f.t=q(Q,"top",B,f.t)),f},{e:void 0,t:void 0}),Q}})}var o3=4,Ux=40,Dx=2,Lx=2;var t3=k(()=>{P();P();P();P();P();P();P();j1();MH();v1()});import{TextAttributes as Mx}from"@opentui/core";function Fx(J,z){let Y=J?`v${J}`:F("update.skew.olderBuild");return F("update.skew.hint",{daemon:Y,clientVersion:z})}function e3(J){let{theme:z}=d0(),Y=()=>Math.max(4,J.width()-2);return b(Z0,{get when(){return J.stale()},get children(){var G=W("box"),Z=W("text"),X=W("box"),Q=W("text"),f=W("box"),H=W("text");return D(G,Z),D(G,X),D(G,f),q(G,"flexDirection","column"),q(G,"flexShrink",0),q(G,"paddingLeft",1),q(G,"paddingRight",1),q(G,"paddingBottom",1),q(Z,"wrapMode","none"),U(Z,()=>"\u2594".repeat(Y())),D(X,Q),q(X,"flexDirection","row"),q(X,"gap",1),q(Q,"wrapMode","none"),U(Q,()=>F("update.skew.title")),D(f,H),q(f,"flexDirection","row"),q(f,"gap",1),q(H,"wrapMode","word"),U(H,()=>Fx(J.daemonVersion(),J.clientVersion)),y((B)=>{var{warning:V,warning:j}=z,K=Mx.BOLD,L=z.text;return V!==B.e&&(B.e=q(Z,"fg",V,B.e)),j!==B.t&&(B.t=q(Q,"fg",j,B.t)),K!==B.a&&(B.a=q(Q,"attributes",K,B.a)),L!==B.o&&(B.o=q(H,"fg",L,B.o)),B},{e:void 0,t:void 0,a:void 0,o:void 0}),G}})}var JM=k(()=>{P();P();P();P();P();P();j1();v1();ZJ()});function zM(J,z){return J.find((Y)=>Y.id!==z&&!Y.archived)}async function Ox(J){let z=J.tasks.find((X)=>X.id===J.taskId);if(!z)return null;let Y=!z.archived;try{await J.orch.setArchived(J.taskId,Y)}catch(X){return J.logger.error(`${J.logPrefix} archive failed:`,X),null}if(!Y)return{archived:Y};let G=C1(J.taskId),Z=zM(J.tasks,J.taskId);if(await Pz(G,Z?C1(Z.id):void 0).catch((X)=>{J.logger.error(`${J.logPrefix} switch-client failed:`,X)}),J.updateActiveTask)await J.orch.setActiveTask(Z?.id??null).catch(()=>{});return await eJ(G).catch((X)=>{J.logger.error(`${J.logPrefix} kill tmux session failed:`,X)}),{archived:Y,nextTask:Z}}async function Ax(J){let z=zM(J.tasks,J.taskId),Y=C1(J.taskId);if(J.switchBeforeKill)await Pz(Y,z?C1(z.id):void 0).catch((G)=>{J.logger.error(`${J.logPrefix} switch-client failed:`,G)});if(J.updateActiveTask)await J.orch?.setActiveTask(z?.id??null).catch(()=>{});return await eJ(Y).catch((G)=>{J.logger.error(`${J.logPrefix} kill tmux session failed:`,G)}),{nextTask:z}}async function YM(J,z){if(!J.orch)return;let Y=J.tasks().find((Z)=>Z.id===z);if(!Y)return;if(!Y.archived){if(!await J.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 Ox({orch:J.orch,tasks:J.tasks(),taskId:z,logger:J.logger,logPrefix:J.logPrefix,updateActiveTask:J.updateActiveTask}))return;await J.reload?.()}async function GM(J,z){if(!J.orch)return;let Y=J.tasks().find((Q)=>Q.id===z);if(!Y)return;if(Y.kind==="main"){if(!await J.confirm({title:`Remove project "${Y.title}"?`,body:"Forgets it from the projects list. The repo, its branches, worktrees, and any tasks under it stay on disk \u2014 re-add it with `kobe add`.",cancelLabel:"cancel",confirmLabel:"remove"}))return;try{await J.orch.forgetProject(Y.repo)}catch(f){J.logger.error(`${J.logPrefix} forget project failed:`,f),J.notifyError?.(`Couldn't remove: ${f instanceof Error?f.message:String(f)}`);return}await J.reload?.();return}if(!await J.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 Z=!1;try{await J.orch.deleteTask(z),Z=!0}catch(Q){if((Q instanceof Error?Q.message:String(Q)).includes(a8)){if(await J.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 J.orch.deleteTask(z,{force:!0}),Z=!0}catch(B){J.logger.error(`${J.logPrefix} force delete failed:`,B),J.notifyError?.(`Couldn't delete: ${B instanceof Error?B.message:String(B)}`)}}else J.logger.error(`${J.logPrefix} delete failed:`,Q),J.notifyError?.(`Couldn't delete: ${Q instanceof Error?Q.message:String(Q)}`)}if(!Z)return;let{nextTask:X}=await Ax({orch:J.orch,tasks:J.tasks(),taskId:z,logger:J.logger,logPrefix:J.logPrefix,switchBeforeKill:J.switchBeforeKill,updateActiveTask:J.updateActiveTask});await J.reload?.(),J.onTaskDeleted?.(z,X)}async function ZM(J,z){let Y=J.tasks().find((Z)=>Z.id===z);if(!Y)return;let G=await J.promptText(Y.title);if(!G||!J.orch)return;try{await J.orch.setTitle(z,G)}catch(Z){J.logger.error(`${J.logPrefix} task.rename failed:`,Z),J.notifyError?.(`Couldn't rename task: ${Z instanceof Error?Z.message:String(Z)}`);return}await J.reload?.()}async function XM(J,z){let Y=J.tasks().find((Z)=>Z.id===z);if(!Y||Y.kind==="main")return;let G=await J.promptText(Y.branch,{dialogTitle:"Rename branch",fieldLabel:"branch"});if(!G||!J.orch)return;try{await J.orch.setBranch(z,G)}catch(Z){J.logger.error(`${J.logPrefix} task.setBranch failed:`,Z),J.notifyError?.(`Couldn't rename branch: ${Z instanceof Error?Z.message:String(Z)}`);return}await J.reload?.()}async function QM(J,z){let Y=J.tasks().find((X)=>X.id===z);if(!Y||!J.orch)return;let G=await ez(),Z=LY(G,Y.vendor??$1);try{await J.orch.setVendor(z,Z)}catch(X){J.logger.error(`${J.logPrefix} task.setVendor failed:`,X),J.notifyError?.(`Couldn't switch engine: ${X instanceof Error?X.message:String(X)}`);return}J.notifyInfo?.(`Engine \u2192 ${VG(Z)} (applies on reopen)`),await J.reload?.()}async function qM(J){let z=gJ(),Y=J.cursorRepo()??z[0]??process.cwd();if(J.openCreateSurface&&await J.openCreateSurface(Y))return;let G=J.lastVendor()??$1,Z=await ez();if(Z.length===0)J.notifyInfo?.("No engine CLI detected \u2014 install claude or codex, or add one in Settings \u2192 Engines");let X=J.orch,Q=await J.promptNewTask(Y,z,{defaultVendor:G,availableVendors:Z,discoverAdoptable:X?(H)=>X.discoverAdoptableWorktrees(H):void 0});if(!Q)return;if(J.rememberVendor(Q.vendor),pz(Q.repo),J.onRepoSaved?.(),!X){J.logger.error(`${J.logPrefix} no daemon; cannot create task`);return}J.notifyInfo?.("Creating task\u2026");let f;if(Q.mode==="adopt"){let H=Q.adopt.length,B=0,V;for(let j of Q.adopt)try{f=(await X.adoptWorktree({repo:Q.repo,worktreePath:j.worktreePath,branch:j.branch,vendor:Q.vendor})).id,B++}catch(K){if(V===void 0)V=K instanceof Error?K.message:String(K);J.logger.error(`${J.logPrefix} adoptWorktree failed for ${j.worktreePath}:`,K)}if(B===0){J.notifyError?.(F("newTask.adopt.summaryNone",{error:V??""}));return}if(B<H)J.notifyInfo?.(F("newTask.adopt.summaryPartial",{done:B,total:H}));else J.notifyInfo?.(F("newTask.adopt.summaryAll",{count:B}))}else try{f=(await X.createTask({repo:Q.repo,baseRef:Q.baseRef,vendor:Q.vendor})).id}catch(H){J.logger.error(`${J.logPrefix} task.create failed:`,H),J.notifyError?.(`Couldn't create task: ${H instanceof Error?H.message:String(H)}`);return}if(await J.reload?.(),f)J.selectTask?.(f),await J.enterTask?.(f)}var fM=k(()=>{YG();sJ();r8();F1();ZJ();rJ();i1();zJ()});function rZ(J,z){if(z<=0)return"";let Y=[...J];if(Y.length<=z)return J;return`${Y.slice(0,Math.max(0,z-1)).join("")}\u2026`}function SH(J,z){if(z<=0)return"";let Y=[...J];if(Y.length<=z)return J;return`\u2026${Y.slice(Y.length-Math.max(0,z-1)).join("")}`}import{spawn as Rx}from"child_process";import{existsSync as gx}from"fs";import{basename as Cx,delimiter as Nx,isAbsolute as kx,join as bx}from"path";function r9(J,z,Y){if(kx(J))return Y(J);let G=z.PATH??"";for(let Z of G.split(Nx)){if(!Z)continue;if(Y(bx(Z,J)))return!0}return!1}function Tx(J){let z=Cx(J);if(z==="code")return"VS Code";if(z==="cursor")return"Cursor";if(z==="windsurf")return"Windsurf";if(z==="zed")return"Zed";return z||J}function HM(J={}){let z=J.env??process.env,Y=J.platform??process.platform,G=J.exists??gx,Z=z.KOBE_OPEN_EDITOR?.trim();if(Z)return{id:"env",label:Tx(Z),command:Z,args:[]};for(let X of Sx)if(r9(X.command,z,G))return{id:X.id,label:X.label,command:X.command,args:[]};if(Y==="darwin"&&r9("open",z,G)){for(let X of Ix)if(X.paths.some((Q)=>G(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"&&r9("xdg-open",z,G))return{id:"xdg-open",label:"Open",command:"xdg-open",args:[]};return null}function yx(J,z){return[z.command,[...z.args,J]]}function BM(J,z,Y={}){if(!J)return!1;let G=Y.spawn??Rx,[Z,X]=yx(J,z);try{let Q=G(Z,X,{detached:!0,stdio:"ignore"});if(Q.pid===void 0)return!1;return Q.unref(),!0}catch{return!1}}var Sx,Ix;var jM=k(()=>{Sx=[{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"}],Ix=[{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 IH(J){let z=new Map;function Y(G){let Z=z.get(G);if(!Z){let[X,Q]=a(J.initial,J.equals?{equals:J.equals}:void 0);Z={read:X,write:(f)=>Q(()=>f),inFlight:!1,nextAllowedAt:0},z.set(G,Z)}return Z}return{read(G){if(!G)return J.initial;return Y(G).read()},poll(G){if(!G)return;let Z=Y(G);tG(Z,J,(X)=>J.run(G,X),(X)=>Z.write(X))},reset(){z.clear()}}}var KQ=k(()=>{j1();eG();eG()});import{stat as xx}from"fs/promises";import{join as ux}from"path";async function hx(J){try{let z=await xx(ux(J,".git","HEAD"));return`${z.mtimeMs}:${z.size}`}catch{return null}}async function vx(J,z,Y=zY){let G=await hx(J);if(G!==null){let f=WM.get(J);if(f&&f.fingerprint===G)return f.value}let Z="",X=await Y("git",["symbolic-ref","--short","HEAD"],{cwd:J,env:cJ(),signal:z}),Q=X.status===0?X.stdout.trim():"";if(Q&&Q!=="HEAD")Z=Q;else if((await Y("git",["rev-parse","--verify","HEAD"],{cwd:J,env:cJ(),signal:z})).status===0)Z="(detached)";if(G!==null)WM.set(J,{fingerprint:G,value:Z});return Z}function KM(J){return VM.read(J)}function UM(J){VM.poll(J)}var Ex=2000,wx=30000,Px=1500,WM,VM;var DM=k(()=>{PY();KQ();WM=new Map;VM=IH({initial:"",timeoutMs:Ex,slowRetryMs:wx,minIntervalMs:Px,run:(J,z)=>vx(J,z)})});function o9(J){let z=J.scheduleTimeout??((H,B)=>{let V=setTimeout(H,B);return()=>clearTimeout(V)}),Y=!1,G=null,Z=()=>{Y=!0,G?.(),G=z(()=>{Y=!1,G=null},700)},X=()=>{Y=!1,G?.(),G=null},Q=(H)=>{let B=J.getFlatIds();if(B.length===0)return;let V=J.getCursor(),j=V<0?0:V,K=Math.min(B.length-1,Math.max(0,j+H));J.setCursor(K)},f=(H)=>{let B=J.getFlatIds();if(B.length===0)return;J.setCursor(Math.min(B.length-1,Math.max(0,H)))};return{moveDown(){X(),Q(1)},moveUp(){X(),Q(-1)},selectCurrent(){X();let H=J.getFlatIds(),B=J.getCursor();if(B<0||B>=H.length)return;let V=H[B];if(V!==void 0)J.onSelect(V)},pressG(){if(Y)X(),f(0);else Z()},pressShiftG(){X(),f(J.getFlatIds().length-1)},isChordArmed(){return Y},disarmChord(){X()}}}function LM(J){let z=o9({getCursor:()=>J.cursorIndex(),setCursor:(X)=>J.setCursorIndex(X),getFlatIds:()=>J.flatTaskIds(),onSelect:(X)=>J.onSelect(X)}),Y=()=>{let X=J.flatTaskIds(),Q=J.cursorIndex();if(Q<0||Q>=X.length)return;return X[Q]},G=()=>J.searchMode?.()??!1,Z=()=>J.moveMode?.()??!1;D1(()=>({enabled:J.focused()&&!G(),bindings:lY({"sidebar.nav":(X,Q)=>{let f=(Q??0)%2===0;if(Z()){let H=Y();if(H===void 0)return;J.onMoveRequest?.(H,f?1:-1);return}if(f)z.moveDown();else z.moveUp()},"sidebar.select":()=>{if(Z()){J.onMoveModeExit?.();return}z.selectCurrent()},"sidebar.goto":(X)=>{if(Z())return;if(X.shift)z.pressShiftG();else z.pressG()},"sidebar.delete":()=>{if(Z())return;let X=Y();if(X!==void 0)J.onDeleteRequest?.(X)},"sidebar.archive":()=>{if(Z())return;let X=Y();if(X!==void 0)J.onArchiveRequest?.(X)},"sidebar.localMerge":(X)=>{if(!X.shift)return;let Q=Y();if(Q!==void 0)J.onLocalMergeRequest?.(Q)},"sidebar.rename":()=>{if(Z())return;let X=Y();if(X!==void 0)J.onRenameRequest?.(X)},"sidebar.pin":(X)=>{if(Z())return;if(!X.shift)return;let Q=Y();if(Q!==void 0)J.onPinRequest?.(Q)},"sidebar.search.enter":()=>{if(Z())return;J.onSearchEnter?.()},"sidebar.sort":()=>{if(Z())return;J.onSortModeToggle?.()},"sidebar.projectFilter":()=>{if(Z())return;J.onProjectFilterToggle?.()}})})),D1(()=>({enabled:J.focused()&&Z(),bindings:[{key:"escape",cmd:()=>J.onMoveModeExit?.()}]})),D1(()=>({enabled:J.focused(),bindings:lY({"sidebar.view":(X,Q)=>{J.onViewSwitch?.((Q??0)%2===0?-1:1)}})})),D1(()=>({enabled:J.focused()&&G(),bindings:lY({"sidebar.search.nav":(X,Q)=>{if((Q??0)%2===0)z.moveDown();else z.moveUp()},"sidebar.search.submit":()=>{z.selectCurrent(),J.onSearchExit?.(!0)},"sidebar.search.cancel":()=>J.onSearchExit?.(!1)})}))}var MM=k(()=>{$Z();yJ()});function s9(J,z){return rZ(J,z)}function t9(J,z){return` ${s9(J,Math.max(0,z))}`}var FM=()=>{};function cx(J){switch(J){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 dx(J){switch(J){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 RM(J){switch(J.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 nx(){return F("tasks.subtitle.noTracking")}function ix(){return F("tasks.subtitle.materializing")}function lx(J){if(J.kind==="main")return!1;return J.vendor!==void 0&&!QJ(J.vendor)}function e9(J){let{task:z}=J,Y=z.kind==="main",G=Y?J.mainBranch??"":z.branch,Z=mx[z.status],X=J.activity?.state,Q=X!==void 0,f=$x(X),H=dx(X),B=lx(z)&&!Q,V=J.job!==void 0,j=V||!B&&(X==="running"||J.live||!Q&&!Y&&z.status==="in_progress"),K=oZ[J.spinnerFrame]??oZ[0],L=V?"primary":B?"textMuted":H?.tone??(j?"primary":f?.tone??Z.tone),A=B?nx():cx(z.status),O=V?J.truncateBranch(ix(),J.subtitleBudget):H?J.truncateBranch(H.text,J.subtitleBudget):G.length>0?J.truncateBranch(G,J.subtitleBudget):J.truncateBranch(A,J.subtitleBudget),g=B?OM:f?.glyph??Z.glyph,x=B?OM:f?.glyph??"\u2605";return{isMain:Y,titleText:Y?Nz(z.repo):z.title,subtitleText:O,loading:j,stateGlyph:j?K:g,projectGlyph:j?K:x,tone:L}}function JW(J,z){if(!J.loading)return J;let Y=oZ[z()%oZ.length]??"\u280B";if(Y===J.stateGlyph&&Y===J.projectGlyph)return J;return{...J,stateGlyph:Y,projectGlyph:Y}}function $x(J){switch(J){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 mx,oZ,AM=100,OM="\xB7";var gM=k(()=>{ZJ();i1();CH();mx={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"}};oZ=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"]});function zW(J){return CM.read(J)}function YW(J){CM.poll(J)}var ax=4000,_x=60000,px=1500,rx,CM;var NM=k(()=>{PY();KQ();SZ();KQ();rx={added:0,deleted:0},CM=IH({initial:rx,equals:vz,timeoutMs:ax,slowRetryMs:_x,minIntervalMs:px,run:async(J,z)=>{let Y=await zY("git",["status","--porcelain=v1"],{cwd:J,env:cJ(),signal:z});if(Y.status!==0)throw Error("git status failed");return bZ(Y.stdout)}})});import{TextAttributes as E1}from"@opentui/core";function ox(J){switch(J){case"active":return F("tasks.view.workspace");case"archived":return F("tasks.view.archives")}}function bM(J,z=tx){return rZ(J,z)}function ex(J){let z=0;for(let Y of J)z+=(Y.codePointAt(0)??0)>=4352?2:1;return z}function SM(J){let{theme:z}=d0(),Y=()=>J.focused?J.focused():!0,[G,Z]=a("active"),[X,Q]=a(!1),[f,H]=a(""),[B,V]=a(null),j=()=>J.projectFilter?.()??B(),K=($)=>{if(J.onProjectFilterChange)J.onProjectFilterChange($);else V($)};function L(){H(""),Q(!0),J.onSearchActiveChange?.(!0)}function A($){Q(!1),H(""),J.onSearchActiveChange?.(!1)}r0(()=>{if(!X())return;let $=fJ();if(!$)return;let W0=(T0)=>{if(T0.defaultPrevented)return;if(!Y())return;if(T0.ctrl||T0.meta||T0.option)return;if(T0.name==="backspace"){H((_0)=>_0.slice(0,-1));return}let s0=T0.sequence;if(!s0||s0.length!==1)return;let a0=s0.charCodeAt(0);if(a0<32||a0===127)return;H((_0)=>_0+s0)};$.keyInput.on("keypress",W0),k1(()=>$.keyInput.off("keypress",W0))});let[O,g]=a(0),x=setInterval(()=>g(($)=>$+1),sx);k1(()=>clearInterval(x));let[_,S]=a(0),N=setInterval(()=>S(($)=>($+1)%oZ.length),AM);k1(()=>clearInterval(N));let M=()=>J.sortMode?.()??"default",I=K0(()=>S3(J.tasks(),G())),r=K0(()=>{let $=j();if(!$)return null;let W0=Gz($);return I().find((T0)=>Gz(T0.repo)===W0)??null}),i=K0(()=>r()?.repo??null),e=K0(()=>r()?.label??"all"),J0=K0(()=>{let $=r();return $?$.count:I().reduce((W0,T0)=>W0+T0.count,0)}),T=K0(()=>{let $=J0();return`${$} ${$===1?F("tasks.project.taskSingular"):F("tasks.project.taskPlural")}`}),q0=K0(($)=>x3($,P9(J.tasks(),G(),X()?f():"",M(),i())),[]),p=K0(()=>h9(q0())),B0=K0(()=>y3(q0())),L0=K0(()=>B0().projectRows),V0=K0(()=>B0().taskRows),t=K0(()=>{let $=new Map;for(let W0 of q0())$.set(W0.flatIndex,W0);return $}),h=K0(()=>h9(P9(J.tasks(),G(),"",M(),i())).length),C=K0(()=>V0().length>0);r0(()=>{let $=j(),W0=I();if($!==null&&W0.length>0&&(W0.length<=1||r()===null))K(null)});function o(){let $=I();if($.length<=1){K(null);return}let W0=i(),T0=W0?Gz(W0):null,s0=T0===null?-1:$.findIndex((_0)=>Gz(_0.repo)===T0),a0=$[s0+1];K(a0?.repo??null)}let E=()=>J.width?J.width():kM,c=K0(()=>Math.max(6,E()-9)),s=K0(()=>Math.max(6,E()-16)),X0=mz(),F0=K0(()=>{let $=Math.max(2,Math.min(10,Math.floor(X0().height*0.25))),W0=Math.max(2,L0().length*2);return Math.min($,W0)}),[P0,A0]=a(null),[N0,u]=a(-1),g0,Q0,R0,y0=new Map;r0(()=>{let $=J.width?J.width():kM,W0=R0;if(!W0)return;W0.width=$,W0.flexShrink=1,W0.minHeight=0}),r0(SJ([N0,q0],([$])=>{let W0=t().get($);if(!W0)return;let T0=W0.task.kind==="main"?g0:Q0;if(!T0)return;if(T0.viewport.height<=0)return;let s0=y0.get($);if(!s0)return;T0.scrollChildIntoView(s0.id)})),r0(SJ(()=>[J.selectedId(),p()],([$,W0])=>{let T0=_1(N0),s0=T3($,W0,T0);if(s0!==T0)u(s0)})),r0(SJ(G,()=>{let $=p();u($.length>0?0:-1)},{defer:!0})),r0(SJ(i,($)=>u(I3(q0(),$)),{defer:!0})),r0(SJ([X,f],()=>{if(!X())return;let $=p();u($.length>0?0:-1)}));function H1($){let W0=G(),T0=UQ.findIndex((_0)=>_0.view===W0);if(T0<0)return;let s0=(T0+$+UQ.length)%UQ.length,a0=UQ[s0];if(a0)Z(a0.view)}LM({focused:Y,cursorIndex:N0,setCursorIndex:u,flatTaskIds:p,onSelect:($)=>{J.onSelect($),J.onActivate?.($)},onDeleteRequest:($)=>J.onDeleteRequest?.($),onArchiveRequest:($)=>J.onArchiveRequest?.($),onLocalMergeRequest:($)=>J.onLocalMergeRequest?.($),moveMode:J.moveMode,onMoveRequest:($,W0)=>J.onMoveRequest?.($,W0),onMoveModeExit:()=>J.onMoveModeExit?.(),onRenameRequest:($)=>J.onRenameRequest?.($),onPinRequest:($)=>J.onPinRequest?.($),onViewSwitch:($)=>H1($),onSortModeToggle:()=>J.onSortModeToggle?.(),onProjectFilterToggle:()=>o(),searchMode:X,onSearchEnter:()=>L(),onSearchExit:($)=>A($)});let G1=($)=>(()=>{var W0=W("box"),T0=W("box"),s0=W("text"),a0=W("text");return D(W0,T0),q(W0,"flexDirection","column"),q(W0,"flexShrink",0),U(W0,b(Z0,{get when(){return $.topPad},get children(){var _0=W("box"),t0=W("text");return D(_0,t0),q(_0,"flexShrink",0),D(t0,E0(" ")),q(t0,"wrapMode","none"),_0}}),T0),D(T0,s0),D(T0,a0),q(T0,"flexDirection","row"),q(T0,"flexShrink",0),q(T0,"gap",1),q(T0,"paddingLeft",1),q(T0,"paddingRight",1),q(s0,"wrapMode","none"),U(s0,()=>$.label),q(a0,"wrapMode","none"),U(a0,()=>"\u2500".repeat(Math.max(2,E()-10-$.label.length-($.suffix?.length??0)))),U(T0,b(Z0,{get when(){return $.suffix},get children(){var _0=W("text");return q(_0,"wrapMode","none"),U(_0,()=>$.suffix),y((t0)=>{var N1=z.info,R1=E1.BOLD;return N1!==t0.e&&(t0.e=q(_0,"fg",N1,t0.e)),R1!==t0.t&&(t0.t=q(_0,"attributes",R1,t0.t)),t0},{e:void 0,t:void 0}),_0}}),null),y((_0)=>{var t0=z.textMuted,N1=E1.BOLD,R1=z.border;return t0!==_0.e&&(_0.e=q(s0,"fg",t0,_0.e)),N1!==_0.t&&(_0.t=q(s0,"attributes",N1,_0.t)),R1!==_0.a&&(_0.a=q(a0,"fg",R1,_0.a)),_0},{e:void 0,t:void 0,a:void 0}),W0})(),w0=($)=>{switch($){case"success":return z.success;case"warning":return z.warning;case"primary":return z.primary;case"error":return z.error;default:return z.textMuted}},o0=($)=>{let W0=$.row.task,T0=$.row.flatIndex,s0=()=>T0===N0(),a0=()=>W0.id===J.selectedId(),_0=K0(()=>{let R=J.chatRunState?.();if(!R)return!1;let h0=`${W0.id}:`;for(let[U0,u0]of R)if(u0==="running"&&U0.startsWith(h0))return!0;return!1}),t0=K0(()=>{let R=Ef(J.worktreeChanges?.(),W0.worktreePath);if(R)return R;if(O(),!W0.archived)YW(W0.worktreePath);return zW(W0.worktreePath)},void 0,{equals:vz}),N1=K0(()=>{return O(),UM(W0.repo),KM(W0.repo)}),R1=K0(()=>e9({task:W0,activity:J.engineState?.().get(W0.id),job:J.taskJobs?.().get(W0.id),live:_0(),spinnerFrame:0,subtitleBudget:s(),truncateBranch:bM,mainBranch:N1()})),z0=K0(()=>JW(R1(),_)),G0=()=>!z0().loading?z.primary:w0(z0().tone),H0=()=>s0()?z.focusAccent:a0()?z.primary:void 0,k0=()=>s0()||a0()?"\u258C":" ";return(()=>{var R=W("box"),h0=W("box"),U0=W("box"),u0=W("text"),j0=W("box"),D0=W("text"),C0=W("text"),J1=W("box"),z1=W("text"),n0=W("box"),x1=W("text");return D(R,h0),q(R,"flexDirection","column"),q(R,"gap",0),q(R,"paddingBottom",0),D(h0,U0),D(h0,J1),cz((b0)=>{y0.set(T0,b0),k1(()=>{if(y0.get(T0)===b0)y0.delete(T0)})},h0),q(h0,"flexDirection","column"),q(h0,"gap",0),q(h0,"onMouseUp",()=>{if(u(T0),J.onSelect(W0.id),J.activateOnClick)J.onActivate?.(W0.id)}),q(h0,"onMouseOver",(b0)=>A0({task:W0,x:b0.x,y:b0.y})),q(h0,"onMouseOut",()=>A0((b0)=>b0?.task.id===W0.id?null:b0)),D(U0,u0),D(U0,j0),q(U0,"flexDirection","row"),q(U0,"gap",0),q(u0,"wrapMode","none"),U(u0,k0),D(j0,D0),D(j0,C0),q(j0,"flexDirection","row"),q(j0,"flexGrow",1),q(j0,"paddingRight",1),q(j0,"gap",0),q(D0,"wrapMode","none"),U(D0,()=>z0().projectGlyph),q(C0,"wrapMode","none"),q(C0,"flexGrow",1),U(C0,()=>t9(z0().titleText,c())),D(J1,z1),D(J1,n0),q(J1,"flexDirection","row"),q(J1,"gap",0),q(z1,"wrapMode","none"),U(z1,k0),D(n0,x1),q(n0,"flexDirection","row"),q(n0,"flexGrow",1),q(n0,"paddingLeft",2),q(n0,"paddingRight",1),q(n0,"gap",1),q(x1,"wrapMode","none"),q(x1,"flexGrow",1),U(x1,()=>z0().subtitleText),U(n0,b(Z0,{get when(){return t0().added>0},get children(){var b0=W("text"),m1=E0("+");return D(b0,m1),q(b0,"wrapMode","none"),U(b0,()=>t0().added,null),y((v)=>q(b0,"fg",z.success,v)),b0}}),null),U(n0,b(Z0,{get when(){return t0().deleted>0},get children(){var b0=W("text"),m1=E0("\u2212");return D(b0,m1),q(b0,"wrapMode","none"),U(b0,()=>t0().deleted,null),y((v)=>q(b0,"fg",z.error,v)),b0}}),null),y((b0)=>{var m1=s0()?z.backgroundElement:void 0,v=H0(),O0=G0(),W1=E1.BOLD,A1=z.text,B1=E1.BOLD,d=H0(),Y0=z.textMuted,I0=E1.DIM;return m1!==b0.e&&(b0.e=q(h0,"backgroundColor",m1,b0.e)),v!==b0.t&&(b0.t=q(u0,"fg",v,b0.t)),O0!==b0.a&&(b0.a=q(D0,"fg",O0,b0.a)),W1!==b0.o&&(b0.o=q(D0,"attributes",W1,b0.o)),A1!==b0.i&&(b0.i=q(C0,"fg",A1,b0.i)),B1!==b0.n&&(b0.n=q(C0,"attributes",B1,b0.n)),d!==b0.s&&(b0.s=q(z1,"fg",d,b0.s)),Y0!==b0.h&&(b0.h=q(x1,"fg",Y0,b0.h)),I0!==b0.r&&(b0.r=q(x1,"attributes",I0,b0.r)),b0},{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}),R})()};return(()=>{var $=W("box"),W0=W("box"),T0=W("box"),s0=W("text"),a0=W("box"),_0=W("box"),t0=W("text"),N1=W("scrollbox"),R1=W("box");return D($,W0),D($,a0),D($,N1),cz((z0)=>{R0=z0},$),q($,"flexGrow",1),q($,"minHeight",0),q($,"flexDirection","column"),q($,"paddingTop",1),q($,"paddingBottom",1),q($,"paddingLeft",0),q($,"paddingRight",0),D(W0,T0),q(W0,"flexDirection","row"),q(W0,"justifyContent","space-between"),q(W0,"gap",1),q(W0,"paddingBottom",1),q(W0,"paddingLeft",1),q(W0,"paddingRight",1),D(T0,s0),q(T0,"flexDirection","row"),q(T0,"gap",1),D(s0,E0("KOBE")),q(s0,"wrapMode","none"),U(T0,b(Z0,{get when(){return J.headerStatus?.()},children:(z0)=>(()=>{var G0=W("text");return q(G0,"wrapMode","none"),q(G0,"onMouseUp",()=>J.onHeaderStatusClick?.()),U(G0,()=>z0().label),y((H0)=>{var k0=z0().emphasize?z.warning:z.textMuted,R=z0().emphasize?E1.BOLD:E1.DIM;return k0!==H0.e&&(H0.e=q(G0,"fg",k0,H0.e)),R!==H0.t&&(H0.t=q(G0,"attributes",R,H0.t)),H0},{e:void 0,t:void 0}),G0})()}),null),U(W0,b(Z0,{get when(){return J.onAddTask},get children(){var z0=W("text");return D(z0,E0("[+]")),q(z0,"wrapMode","none"),q(z0,"onMouseUp",()=>J.onAddTask?.()),y((G0)=>{var H0=z.primary,k0=E1.BOLD;return H0!==G0.e&&(G0.e=q(z0,"fg",H0,G0.e)),k0!==G0.t&&(G0.t=q(z0,"attributes",k0,G0.t)),G0},{e:void 0,t:void 0}),z0}}),null),U($,b(Z0,{get when(){return X()},get children(){var z0=W("box"),G0=W("text"),H0=W("text"),k0=W("text");return D(z0,G0),D(z0,H0),D(z0,k0),q(z0,"flexDirection","row"),q(z0,"gap",0),q(z0,"paddingBottom",1),q(z0,"paddingLeft",1),D(G0,E0("/")),q(G0,"wrapMode","none"),q(H0,"wrapMode","none"),U(H0,f),D(k0,E0("\u2588")),q(k0,"wrapMode","none"),U(z0,b(Z0,{get when(){return f().length===0},get children(){var R=W("text"),h0=E0(" ");return D(R,h0),q(R,"wrapMode","none"),U(R,()=>F("tasks.search.placeholder"),null),y((U0)=>q(R,"fg",z.textMuted,U0)),R}}),null),U(z0,b(Z0,{get when(){return f().length>0},get children(){var R=W("text"),h0=E0(" "),U0=E0("/");return D(R,h0),D(R,U0),q(R,"wrapMode","none"),U(R,()=>p().length,U0),U(R,h,null),y((u0)=>q(R,"fg",z.textMuted,u0)),R}}),null),y((R)=>{var{info:h0,text:U0,info:u0}=z,j0=E1.BLINK;return h0!==R.e&&(R.e=q(G0,"fg",h0,R.e)),U0!==R.t&&(R.t=q(H0,"fg",U0,R.t)),u0!==R.a&&(R.a=q(k0,"fg",u0,R.a)),j0!==R.o&&(R.o=q(k0,"attributes",j0,R.o)),R},{e:void 0,t:void 0,a:void 0,o:void 0}),z0}}),a0),D(a0,_0),q(a0,"flexDirection","row"),q(a0,"justifyContent","space-between"),q(a0,"gap",1),q(a0,"paddingBottom",1),q(a0,"paddingLeft",1),q(a0,"paddingRight",1),D(_0,t0),q(_0,"flexDirection","row"),q(_0,"gap",2),U(_0,b(X1,{each:UQ,children:(z0)=>{let G0=()=>G()===z0.view;return(()=>{var H0=W("text");return q(H0,"wrapMode","none"),q(H0,"onMouseUp",()=>Z(z0.view)),U(H0,()=>ox(z0.view)),y((k0)=>{var R=G0()?z.primary:z.textMuted,h0=G0()?E1.BOLD:void 0;return R!==k0.e&&(k0.e=q(H0,"fg",R,k0.e)),h0!==k0.t&&(k0.t=q(H0,"attributes",h0,k0.t)),k0},{e:void 0,t:void 0}),H0})()}}),t0),D(t0,E0("[/]")),q(t0,"wrapMode","none"),U(a0,b(Z0,{get when(){return J.sortMode},get children(){var z0=W("text");return q(z0,"wrapMode","none"),q(z0,"onMouseUp",()=>J.onSortModeToggle?.()),U(z0,()=>F("tasks.sort")),y((G0)=>{var H0=z.textMuted,k0=E1.DIM;return H0!==G0.e&&(G0.e=q(z0,"fg",H0,G0.e)),k0!==G0.t&&(G0.t=q(z0,"attributes",k0,G0.t)),G0},{e:void 0,t:void 0}),z0}}),null),U($,b(Z0,{get when(){return L0().length>0},get children(){var z0=W("box"),G0=W("box"),H0=W("text"),k0=W("text"),R=W("scrollbox"),h0=W("box");return D(z0,G0),D(z0,R),q(z0,"flexDirection","column"),q(z0,"flexShrink",0),D(G0,H0),D(G0,k0),q(G0,"flexDirection","row"),q(G0,"flexShrink",0),q(G0,"gap",1),q(G0,"paddingLeft",1),q(G0,"paddingRight",1),q(G0,"onMouseUp",()=>o()),q(H0,"wrapMode","none"),U(H0,()=>F("tasks.header.projects")),U(G0,b(Z0,{get when(){return I().length>1},get children(){var U0=W("text");return q(U0,"wrapMode","none"),U(U0,e),y((u0)=>{var j0=i()?z.primary:z.textMuted,D0=i()?E1.BOLD:void 0;return j0!==u0.e&&(u0.e=q(U0,"fg",j0,u0.e)),D0!==u0.t&&(u0.t=q(U0,"attributes",D0,u0.t)),u0},{e:void 0,t:void 0}),U0}}),k0),q(k0,"wrapMode","none"),U(k0,()=>"\u2500".repeat(Math.max(2,E()-10-F("tasks.header.projects").length-(I().length>1?e().length+1:0)-(I().length>1?T().length+1:0)))),U(G0,b(Z0,{get when(){return I().length>1},get children(){var U0=W("text");return q(U0,"wrapMode","none"),U(U0,T),y((u0)=>{var j0=z.textMuted,D0=E1.DIM;return j0!==u0.e&&(u0.e=q(U0,"fg",j0,u0.e)),D0!==u0.t&&(u0.t=q(U0,"attributes",D0,u0.t)),u0},{e:void 0,t:void 0}),U0}}),null),D(R,h0),cz((U0)=>{g0=U0},R),q(R,"flexShrink",0),q(R,"flexGrow",0),q(R,"minHeight",0),q(R,"stickyScroll",!1),q(R,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),q(h0,"flexShrink",0),q(h0,"gap",0),q(h0,"paddingRight",1),U(h0,b(X1,{get each(){return L0()},children:(U0)=>b(o0,{row:U0})})),y((U0)=>{var u0=z.textMuted,j0=E1.BOLD,D0=z.border,C0=F0();return u0!==U0.e&&(U0.e=q(H0,"fg",u0,U0.e)),j0!==U0.t&&(U0.t=q(H0,"attributes",j0,U0.t)),D0!==U0.a&&(U0.a=q(k0,"fg",D0,U0.a)),C0!==U0.o&&(U0.o=q(R,"maxHeight",C0,U0.o)),U0},{e:void 0,t:void 0,a:void 0,o:void 0}),z0}}),N1),U($,b(G1,{get label(){return F("tasks.header.tasks")},get suffix(){return x0(()=>M()==="default")()?void 0:M()},get topPad(){return L0().length>0}}),N1),D(N1,R1),cz((z0)=>{Q0=z0},N1),q(N1,"flexGrow",1),q(N1,"minHeight",0),q(N1,"stickyScroll",!1),q(N1,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),q(R1,"flexShrink",0),q(R1,"gap",0),q(R1,"paddingRight",1),U(R1,b(X1,{get each(){return V0()},children:(z0)=>{let{task:G0,flatIndex:H0}=z0,k0=()=>H0===N0(),R=()=>G0.id===J.selectedId(),h0=K0(()=>{let z1=J.chatRunState?.();if(!z1)return!1;let n0=`${G0.id}:`;for(let[x1,b0]of z1)if(b0==="running"&&x1.startsWith(n0))return!0;return!1}),U0=K0(()=>{let z1=Ef(J.worktreeChanges?.(),G0.worktreePath);if(z1)return z1;if(O(),!G0.archived)YW(G0.worktreePath);return zW(G0.worktreePath)},void 0,{equals:vz}),u0=K0(()=>e9({task:G0,activity:J.engineState?.().get(G0.id),job:J.taskJobs?.().get(G0.id),live:h0(),spinnerFrame:0,subtitleBudget:s(),truncateBranch:bM,mainBranch:""})),j0=K0(()=>JW(u0(),_)),D0=()=>w0(j0().tone),C0=()=>k0()?z.focusAccent:R()?z.primary:void 0,J1=()=>k0()||R()?"\u258C":" ";return(()=>{var z1=W("box"),n0=W("box"),x1=W("box"),b0=W("text"),m1=W("box"),v=W("text"),O0=W("text"),W1=W("box"),A1=W("text"),B1=W("box"),d=W("text");return D(z1,n0),q(z1,"flexDirection","column"),q(z1,"gap",0),q(z1,"paddingBottom",1),D(n0,x1),D(n0,W1),cz((Y0)=>{y0.set(H0,Y0),k1(()=>{if(y0.get(H0)===Y0)y0.delete(H0)})},n0),q(n0,"flexDirection","column"),q(n0,"gap",0),q(n0,"onMouseUp",()=>{if(u(H0),J.onSelect(G0.id),J.activateOnClick)J.onActivate?.(G0.id)}),q(n0,"onMouseOver",(Y0)=>A0({task:G0,x:Y0.x,y:Y0.y})),q(n0,"onMouseOut",()=>A0((Y0)=>Y0?.task.id===G0.id?null:Y0)),D(x1,b0),D(x1,m1),q(x1,"flexDirection","row"),q(x1,"gap",0),q(b0,"wrapMode","none"),U(b0,J1),D(m1,v),D(m1,O0),q(m1,"flexDirection","row"),q(m1,"flexGrow",1),q(m1,"paddingRight",1),q(m1,"gap",0),q(v,"wrapMode","none"),U(v,()=>j0().stateGlyph),q(O0,"wrapMode","none"),q(O0,"flexGrow",1),U(O0,()=>t9(j0().titleText,c())),U(m1,b(Z0,{get when(){return x0(()=>!!J.moveMode?.())()&&k0()},get children(){var Y0=W("text");return q(Y0,"wrapMode","none"),U(Y0,()=>F("tasks.moveChip")),y((I0)=>q(Y0,"fg",z.warning,I0)),Y0}}),null),D(W1,A1),D(W1,B1),q(W1,"flexDirection","row"),q(W1,"gap",0),q(A1,"wrapMode","none"),U(A1,J1),D(B1,d),q(B1,"flexDirection","row"),q(B1,"flexGrow",1),q(B1,"paddingLeft",2),q(B1,"paddingRight",1),q(B1,"gap",1),q(d,"wrapMode","none"),q(d,"flexGrow",1),U(d,()=>j0().subtitleText),U(B1,b(Z0,{get when(){return G0.pinned===!0},get children(){var Y0=W("text");return D(Y0,E0("\u25B4")),q(Y0,"wrapMode","none"),y((I0)=>q(Y0,"fg",z.warning,I0)),Y0}}),null),U(B1,b(Z0,{get when(){return RM(G0)},children:(Y0)=>(()=>{var I0=W("text");return q(I0,"wrapMode","none"),U(I0,()=>Y0().glyph),y((S0)=>q(I0,"fg",w0(Y0().tone),S0)),I0})()}),null),U(B1,b(Z0,{get when(){return U0().added>0},get children(){var Y0=W("text"),I0=E0("+");return D(Y0,I0),q(Y0,"wrapMode","none"),U(Y0,()=>U0().added,null),y((S0)=>q(Y0,"fg",z.success,S0)),Y0}}),null),U(B1,b(Z0,{get when(){return U0().deleted>0},get children(){var Y0=W("text"),I0=E0("\u2212");return D(Y0,I0),q(Y0,"wrapMode","none"),U(Y0,()=>U0().deleted,null),y((S0)=>q(Y0,"fg",z.error,S0)),Y0}}),null),y((Y0)=>{var I0=k0()?z.backgroundElement:void 0,S0=C0(),BJ=D0(),LJ=E1.BOLD,XJ=z.text,iJ=R()||k0()?E1.BOLD:void 0,iz=C0(),AJ=z.textMuted,lz=E1.DIM;return I0!==Y0.e&&(Y0.e=q(n0,"backgroundColor",I0,Y0.e)),S0!==Y0.t&&(Y0.t=q(b0,"fg",S0,Y0.t)),BJ!==Y0.a&&(Y0.a=q(v,"fg",BJ,Y0.a)),LJ!==Y0.o&&(Y0.o=q(v,"attributes",LJ,Y0.o)),XJ!==Y0.i&&(Y0.i=q(O0,"fg",XJ,Y0.i)),iJ!==Y0.n&&(Y0.n=q(O0,"attributes",iJ,Y0.n)),iz!==Y0.s&&(Y0.s=q(A1,"fg",iz,Y0.s)),AJ!==Y0.h&&(Y0.h=q(d,"fg",AJ,Y0.h)),lz!==Y0.r&&(Y0.r=q(d,"attributes",lz,Y0.r)),Y0},{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}),z1})()}}),null),U(R1,b(Z0,{get when(){return p().length===0},get children(){var z0=W("box"),G0=W("text");return D(z0,G0),q(z0,"paddingTop",1),q(z0,"paddingLeft",1),U(G0,(()=>{var H0=x0(()=>!!(X()&&f().trim().length>0));return()=>H0()?F("tasks.empty.noMatchSearch"):x0(()=>!!i())()?x0(()=>G()==="active")()?F("tasks.empty.noActiveProject"):F("tasks.empty.noArchivedProject"):x0(()=>G()==="active")()?F("tasks.empty.noActive"):F("tasks.empty.noArchived")})()),y((H0)=>q(G0,"fg",z.textMuted,H0)),z0}}),null),U(R1,b(Z0,{get when(){return x0(()=>!!(i()&&p().length>0&&!C()))()&&!(X()&&f().trim().length>0)},get children(){var z0=W("box"),G0=W("text");return D(z0,G0),q(z0,"paddingTop",1),q(z0,"paddingLeft",1),q(G0,"wrapMode","none"),U(G0,(()=>{var H0=x0(()=>G()==="active");return()=>H0()?F("tasks.empty.noActiveProject"):F("tasks.empty.noArchivedProject")})()),y((H0)=>{var k0=z.textMuted,R=E1.DIM;return k0!==H0.e&&(H0.e=q(G0,"fg",k0,H0.e)),R!==H0.t&&(H0.t=q(G0,"attributes",R,H0.t)),H0},{e:void 0,t:void 0}),z0}}),null),U(R1,b(Z0,{get when(){return x0(()=>G()==="archived")()&&p().length>0},get children(){var z0=W("box"),G0=W("text");return D(z0,G0),q(z0,"paddingTop",1),q(z0,"paddingLeft",1),q(G0,"wrapMode","none"),U(G0,()=>F("tasks.archiveHint")),y((H0)=>{var k0=z.textMuted,R=E1.DIM;return k0!==H0.e&&(H0.e=q(G0,"fg",k0,H0.e)),R!==H0.t&&(H0.t=q(G0,"attributes",R,H0.t)),H0},{e:void 0,t:void 0}),z0}}),null),U($,b(Z0,{get when(){return J.zenActive?.()},get children(){var z0=W("box"),G0=W("text");return D(z0,G0),q(z0,"flexShrink",0),q(z0,"paddingLeft",1),q(z0,"paddingRight",1),q(z0,"paddingTop",1),D(G0,E0("\u262F ZEN")),q(G0,"wrapMode","none"),q(G0,"onMouseUp",()=>J.onZenClick?.()),y((H0)=>{var k0=z.accent,R=E1.BOLD;return k0!==H0.e&&(H0.e=q(G0,"fg",k0,H0.e)),R!==H0.t&&(H0.t=q(G0,"attributes",R,H0.t)),H0},{e:void 0,t:void 0}),z0}}),null),U($,b(Z0,{get when(){return P0()},children:(z0)=>{let G0=K0(()=>{let j0=z0().task,D0=[];if(D0.push({text:j0.kind==="main"?Nz(j0.repo):j0.title,bold:!0}),j0.branch.length>0)D0.push({text:`\u2387 ${j0.branch}`});if(j0.worktreePath.length>0)D0.push({text:j0.worktreePath,dim:!0});return D0}),H0=72,k0=K0(()=>Math.min(68,Math.max(...G0().map((j0)=>ex(j0.text))))),R=K0(()=>k0()+4),h0=K0(()=>G0().length+2),U0=K0(()=>Math.max(0,Math.min(z0().x+2,X0().width-R()-1))),u0=K0(()=>Math.max(0,Math.min(z0().y+1,X0().height-h0()-1)));return(()=>{var j0=W("box");return q(j0,"position","absolute"),q(j0,"zIndex",2600),q(j0,"flexDirection","column"),q(j0,"border",!0),q(j0,"paddingLeft",1),q(j0,"paddingRight",1),U(j0,b(X1,{get each(){return G0()},children:(D0)=>(()=>{var C0=W("text");return q(C0,"wrapMode","none"),U(C0,(()=>{var J1=x0(()=>!!D0.dim);return()=>J1()?Ju(D0.text,k0()):s9(D0.text,k0())})()),y((J1)=>{var z1=D0.dim?z.textMuted:z.text,n0=D0.bold?E1.BOLD:D0.dim?E1.DIM:void 0;return z1!==J1.e&&(J1.e=q(C0,"fg",z1,J1.e)),n0!==J1.t&&(J1.t=q(C0,"attributes",n0,J1.t)),J1},{e:void 0,t:void 0}),C0})()})),y((D0)=>{var C0=U0(),J1=u0(),z1=R(),n0=z.focusAccent,x1=z.backgroundElement;return C0!==D0.e&&(D0.e=q(j0,"left",C0,D0.e)),J1!==D0.t&&(D0.t=q(j0,"top",J1,D0.t)),z1!==D0.a&&(D0.a=q(j0,"width",z1,D0.a)),n0!==D0.o&&(D0.o=q(j0,"borderColor",n0,D0.o)),x1!==D0.i&&(D0.i=q(j0,"backgroundColor",x1,D0.i)),D0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),j0})()}}),null),y((z0)=>{var G0=Y()?z.focusAccent:z.textMuted,H0=E1.BOLD,k0=z.textMuted,R=E1.DIM;return G0!==z0.e&&(z0.e=q(s0,"fg",G0,z0.e)),H0!==z0.t&&(z0.t=q(s0,"attributes",H0,z0.t)),k0!==z0.a&&(z0.a=q(t0,"fg",k0,z0.a)),R!==z0.o&&(z0.o=q(t0,"attributes",R,z0.o)),z0},{e:void 0,t:void 0,a:void 0,o:void 0}),$})()}var kM=32,UQ,sx=2000,tx=16,Ju;var IM=k(()=>{P();P();P();P();P();P();P();P();P();ZJ();P();j1();v1();v1();DM();CH();MM();FM();gM();SZ();NM();UQ=[{view:"active"},{view:"archived"}];Ju=SH});var EM={};f1(EM,{startTasksPane:()=>Xu,legendRowCap:()=>uM,legendCap:()=>xM});import{existsSync as TM}from"fs";import{stat as zu}from"fs/promises";import{TextAttributes as TH}from"@opentui/core";function yM(J){let z=J instanceof Error?J.message:String(J);if(/not a git repository/i.test(z))return F("tasks.toast.worktreeErrorNotGit");return F("tasks.toast.worktreeErrorGeneric",{message:z})}function Gu(J){let{theme:z}=d0(),Y=c1(),G=aZ(),Z=LH(),[X,Q]=a(J.tasks().some((u)=>u.id===J.initialTaskId)?J.initialTaskId:J.tasks()[0]?.id??null);function f(u){Z.notify({kind:"error",taskId:X()??"",tabId:"",title:u})}function H(u){Z.notify({kind:"done",taskId:X()??"",tabId:"",title:u})}let[B,V]=a(!1),[j,K]=a(G.get("activeSortMode")==="recent"?"recent":"default"),L=G.get("tasksPane.projectFilter"),[A,O]=a(typeof L==="string"&&L.length>0?L:null),g=(u)=>{O(u),G.set("tasksPane.projectFilter",u)},[x,_]=a(null),[S,N]=a(!1);{let u=process.env.TMUX_PANE;if(u){let g0=()=>{$0(["show-options","-wqv","-t",u,gY]).then(({code:R0,stdout:y0})=>{N(R0===0&&y0.trim().length>0)})};g0();let Q0=setInterval(g0,1000);k1(()=>clearInterval(Q0))}}let M=mz();r0(()=>{if(J.initialTaskId)return;let u=J.orch?.activeTaskSignal()();if(!u)return;Q(u)}),r0(SJ(()=>J.orch?.uiPrefsSignal()(),(u)=>{if(u&&u.sortMode!==_1(j))K(u.sortMode);if(u&&u.projectFilter!==_1(A))O(u.projectFilter)})),r0(()=>{let u=J.orch?.updateSignal()();if(u)_(u)});let I={orch:J.orch,tasks:()=>J.tasks(),confirm:async(u)=>await KY.show(Y,u.title,u.body,u.cancelLabel,u.confirmLabel)===!0,promptText:(u,g0)=>VY.show(Y,u,g0),logger:console,logPrefix:"[kobe tasks]",notifyError:f,notifyInfo:H,reload:()=>J.reload(),switchBeforeKill:!0,updateActiveTask:!0,onTaskDeleted:(u,g0)=>{if(X()!==u)return;let Q0=J.tasks();Q(g0?.id??(Q0.find((R0)=>!R0.archived)??Q0[0])?.id??null)},promptNewTask:(u,g0,Q0)=>BH.show(Y,u,g0,Q0),cursorRepo:()=>{let u=J.tasks();return(u.find((g0)=>g0.id===X())??u[0])?.repo},lastVendor:()=>xJ(g1("lastSelectedVendor"),uJ()),rememberVendor:(u)=>r1("lastSelectedVendor",u),openCreateSurface:async(u)=>{if(SG(G.get(QY,bG))!=="chattab")return!1;let Q0=await TJ();if(!Q0)return!1;return await Qf(Q0,u),!0},selectTask:(u)=>Q(u),enterTask:(u)=>X0(u)};async function r(){await qM(I)}async function i(){if(SG(G.get(QY,bG))==="chattab"){let Q0=await TJ();if(Q0){await Zf(Q0);return}}if(!(await vG.show(Y,G,J.orch??void 0)).visualPrefsChanged)return;if(!G.flush())return;try{let Q0=await TJ();if(Q0)await MZ(Q0)}catch(Q0){console.error("[kobe tasks] failed to refresh workspace panes:",Q0)}}async function e(){let u=await TJ();if(u){await Xf(u);return}pZ.show(Y)}async function J0(){if(!x()?.hasUpdate){H(F("tasks.toast.alreadyLatest",{version:p0}));return}let g0=await TJ();if(!g0)return;await qf(g0)}async function T(u){await YM(I,u)}async function q0(u){await GM(I,u)}async function p(u){await ZM(I,u)}async function B0(u){await XM(I,u)}async function L0(u){await QM(I,u)}async function V0(u){let Q0=J.tasks().find((y0)=>y0.id===u)?.worktreePath;if(!Q0||!TM(Q0)){if(!J.orch){console.error("[kobe tasks] no daemon; cannot materialise worktree"),f(F("tasks.toast.noDaemonWorktree"));return}try{Q0=await J.orch.ensureWorktree(u)}catch(y0){console.error("[kobe tasks] task.ensureWorktree failed:",y0),f(yM(y0));return}await J.reload()}if(!Q0||!TM(Q0))return;let R0=HM();if(!R0){console.error("[kobe tasks] no editor/opener found; set KOBE_OPEN_EDITOR"),f(F("tasks.toast.noEditor"));return}if(!BM(Q0,R0))console.error(`[kobe tasks] failed to open worktree with ${R0.label}`),f(F("tasks.toast.openWorktreeFailed",{label:R0.label}))}async function t(){if(!process.env.TMUX_PANE)return;let u=await TJ();if(!u)return;let g0=await qZ(u);if(!g0)return;await l0(["select-pane","-t",g0])}async function h(u,g0){let Q0=J.tasks().find((R0)=>R0.id===u);if(!Q0||Q0.kind==="main"||!J.orch)return;try{await J.orch.moveTask(u,g0)}catch(R0){console.error("[kobe tasks] task.move failed:",R0),f(F("tasks.toast.moveTaskFailed",{message:R0 instanceof Error?R0.message:String(R0)}));return}Q(u),await J.reload()}let[C,o]=a(G.get("tasksPane.keysCollapsed",!1)===!0),E=(u)=>{o(u),G.set("tasksPane.keysCollapsed",u)};r0(SJ(()=>J.orch?.uiPrefsSignal()(),(u)=>{if(u&&u.keysCollapsed!==_1(C))o(u.keysCollapsed)}));let[c,s]=a(!1);D1(()=>({enabled:Y.stack.length===0&&!c(),bindings:lY({"help.open":()=>void e(),"task.new":()=>void r(),"settings.open.sidebar":()=>void i(),"tasks.update":()=>void J0(),"tasks.openWorktree":()=>{let u=X();if(u)V0(u)},"tasks.renameBranch":()=>{let u=X();if(u)B0(u)},"tasks.cycleEngine":()=>{let u=X();if(u)L0(u)},"tasks.toggleKeys":()=>E(!C()),"tasks.focusEngine":()=>void t().catch((u)=>console.error("[kobe tasks] focus engine pane failed:",u))})}));async function X0(u){let g0=J.tasks().find((Q0)=>Q0.id===u);if(!g0)return;try{await E9(J.orch,g0,g0.repo,g0.vendor,{includeInitPrompt:!0,heal:!0,captureFrom:!0,reload:()=>J.reload()})}catch(Q0){if(Q0 instanceof PG)if(Q0.phase==="no-daemon")f(F("tasks.toast.noDaemonOpen"));else if(Q0.phase==="worktree")f(yM(Q0.cause??Q0));else f(F("tasks.toast.sessionStartFailed"));else console.error("[kobe tasks] switchTo failed:",Q0)}}let F0=K0(()=>{let u=x();if(u?.hasUpdate)return{label:`v${u.latest} \u2191`,emphasize:!0};return{label:`v${p0}`,emphasize:!1}}),P0=()=>J.orch?.daemonStaleSignal()()??!1,A0=()=>J.orch?.daemonVersionSignal()()??null,N0=K0(()=>J.tasks().find((u)=>u.id===X())?.kind==="main");return(()=>{var u=W("box"),g0=W("box");return D(u,g0),q(u,"flexDirection","column"),q(u,"flexGrow",1),U(u,b(e3,{stale:P0,daemonVersion:A0,clientVersion:p0,width:()=>M().width}),g0),q(g0,"flexGrow",1),q(g0,"flexShrink",1),U(g0,b(SM,{get tasks(){return J.tasks},selectedId:X,get onSelect(){return J.initialTaskId?()=>{}:Q},onActivate:(Q0)=>void X0(Q0),activateOnClick:!0,headerStatus:F0,onHeaderStatusClick:()=>void J0(),onAddTask:()=>void r(),zenActive:S,onZenClick:()=>{(async()=>{let Q0=await TJ();if(Q0)await AG(Q0,"zen-toggle")})()},width:()=>M().width,get engineState(){return x0(()=>!!J.orch)()?J.orch.engineStateSignal():void 0},get taskJobs(){return x0(()=>!!J.orch)()?J.orch.taskJobsSignal():void 0},get worktreeChanges(){return J.orch?()=>{let Q0=J.orch;if(!Q0||Q0.connectionStateSignal()()!=="online")return null;return Q0.worktreeChangesSignal()()}:void 0},onRenameRequest:(Q0)=>void p(Q0),onDeleteRequest:(Q0)=>void q0(Q0),onArchiveRequest:(Q0)=>void T(Q0),onLocalMergeRequest:(Q0)=>{let R0=J.tasks().find((y0)=>y0.id===Q0);if(!R0||R0.kind==="main")return;Q(Q0),V((y0)=>!y0)},moveMode:B,onMoveRequest:(Q0,R0)=>void h(Q0,R0),onMoveModeExit:()=>V(!1),sortMode:j,projectFilter:A,onProjectFilterChange:g,onSortModeToggle:()=>{let Q0=j()==="default"?"recent":"default";K(Q0),G.set("activeSortMode",Q0)},focused:()=>Y.stack.length===0,onSearchActiveChange:s})),U(u,b(Zu,{moveMode:B,selectedIsMain:N0,collapsed:C,onToggleCollapsed:()=>E(!C())}),null),y((Q0)=>q(u,"backgroundColor",z.background,Q0)),u})()}function xM(J){let z=S9(J);if(!z)return null;let Y=z.hint?.keys??z.keys[0];return Y&&Y.length>0?Y:null}function uM(J){let z=J.map(xM).filter((Y)=>Y!==null);return z.length>0?z.join("/"):null}function Zu(J){let{theme:z}=d0(),[Y,G]=a("Prefix");e1(()=>{$0(["show-options","-g","prefix"]).then(({code:K,stdout:L})=>{if(K!==0)return;let A=kH(L);if(A)G(A)})});let Z=()=>{b9();let K=Tq(),L=K.binds,A=[],O=K.focus.filter((x)=>x!==null).map((x)=>x.chord);if(O.length===4&&O.every((x,_)=>x===SY[_]))A.push({k:"ctrl+hjkl",label:F("tasks.hints.movePanes")});else if(O.length>0)A.push({k:O[0],label:F("tasks.hints.movePanes")});let g=(x,_)=>{let S=_.map((N)=>L[N]?.chord).filter((N)=>!!N);if(S.length>0)A.push({k:`prefix ${S.join("/")}`,label:x})};if(L["tmux.detach"])A.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"]),A},X=()=>{b9();let K=[{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 A of K){let O=uM(A.ids);if(O===null)continue;L.push({k:O,label:A.label,dimWhenMain:A.dimWhenMain})}return L.push(...Z()),L},Q=()=>[{k:"j/k",label:F("tasks.hints.reorder")},{k:"enter/esc",label:F("tasks.hints.done")}],f=()=>J.moveMode?.()?Q():X(),H=18,B=()=>Math.min(H,Math.max(...f().map((K)=>K.label.length))),V=(K)=>rZ(K,B()),j=()=>(J.collapsed?.()??!1)&&!(J.moveMode?.()??!1);return(()=>{var K=W("box"),L=W("text");return D(K,L),q(K,"flexShrink",0),q(K,"flexDirection","column"),q(K,"paddingLeft",1),q(K,"paddingRight",1),q(K,"paddingTop",1),q(K,"paddingBottom",1),q(K,"gap",0),q(L,"wrapMode","none"),q(L,"onMouseUp",()=>J.onToggleCollapsed?.()),U(L,(()=>{var A=x0(()=>!!j());return()=>A()?F("tasks.hints.headerFolded"):F("tasks.hints.headerUnfolded")})()),U(K,b(Z0,{get when(){return!j()},get children(){return b(X1,{get each(){return f()},children:(A)=>{let O=()=>A.dimWhenMain===!0&&(J.selectedIsMain?.()??!1);return(()=>{var g=W("box"),x=W("box"),_=W("text"),S=E0("["),N=E0("]"),M=W("box"),I=W("text");return D(g,x),D(g,M),q(g,"flexDirection","row"),q(g,"gap",1),q(g,"justifyContent","space-between"),D(x,_),q(x,"width",10),q(x,"flexShrink",0),D(_,S),D(_,N),q(_,"wrapMode","none"),U(_,()=>_Z(A.k,Y()),N),D(M,I),q(M,"flexShrink",0),q(I,"wrapMode","none"),U(I,()=>V(A.label)),y((r)=>{var i=O()?z.textMuted:z.accent,e=O()?TH.DIM:TH.BOLD,J0=B(),T=z.textMuted,q0=O()?TH.DIM:void 0;return i!==r.e&&(r.e=q(_,"fg",i,r.e)),e!==r.t&&(r.t=q(_,"attributes",e,r.t)),J0!==r.a&&(r.a=q(M,"width",J0,r.a)),T!==r.o&&(r.o=q(I,"fg",T,r.o)),q0!==r.i&&(r.i=q(I,"attributes",q0,r.i)),r},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),g})()}})}}),null),y((A)=>{var O=z.textMuted,g=TH.DIM;return O!==A.e&&(A.e=q(L,"fg",O,A.e)),g!==A.t&&(A.t=q(L,"attributes",g,A.t)),A},{e:void 0,t:void 0}),K})()}async function Xu(J={}){await OJ({logContext:"tasks",providers:{notifications:!0},setup:()=>Qu(J)})}async function Qu(J){let z=new xZ({homeDir:bz()});await z.load();let[Y,G]=a(z.list()),Z=null;try{let B=await zz();if(B){let V=new KJ(B);await V.init(),Z=V}else tz("tasks-boot","no daemon running \u2014 polling tasks.json (a gui owns daemon lifecycle)")}catch(B){o1("tasks-boot",B),tz("tasks-boot","daemon subscribe failed \u2014 polling tasks.json")}let X=()=>Z&&Z.connectionStateSignal()()==="online"?Z.tasksSignal()():Y(),Q=async()=>{await z.load(),G(z.list())},f="",H=setInterval(()=>{if(Z&&Z.connectionStateSignal()()==="online")return;(async()=>{let B="missing";try{let V=await zu(z.filePath);B=`${V.mtimeMs}:${V.size}`}catch{}if(B===f)return;f=B,await Q()})().catch(()=>{})},Yu);return{root:()=>[b(Gu,{tasks:X,get initialTaskId(){return J.initialTaskId},orch:Z,reload:Q}),b(s3,{})],onDestroy:()=>{if(H)clearInterval(H);Z?.dispose()}}}var Yu=1500;var wM=k(()=>{P();P();P();P();P();P();P();P();P1();Bz();ZJ();P();zG();FJ();j1();nY();p1();iX();F1();yq();i1();MJ();m9();lZ();c9();p9();t3();JM();$Z();BQ();MH();v1();v9();aY();yJ();fM();AH();jM();IM();RG();zJ();nJ();d9()});var PM={};f1(PM,{startSettingsHost:()=>fu});function qu(J){let z=aZ(),Y=c1(),{theme:G}=d0(),Z=!1,X=!1;async function Q(){if(X)return;X=!0;try{if(z.flush()&&Z){let H=await TJ();if(H)await MZ(H)}}catch(f){console.error("[kobe settings] failed to refresh workspace panes:",f)}finally{process.exit(0)}}return D1(()=>({enabled:Y.stack.length===0,bindings:[{key:"escape",cmd:Q},{key:"q",cmd:Q},{key:"ctrl+c",cmd:Q}]})),(()=>{var f=W("scrollbox");return q(f,"flexGrow",1),q(f,"paddingTop",1),q(f,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),U(f,b(vG,{kv:z,get orchestrator(){return J.orchestrator??void 0},standalone:!0,onVisualPrefsChange:()=>{Z=!0},onClose:Q})),y((H)=>q(f,"backgroundColor",G.background,H)),f})()}async function fu(){await OJ({setup:async()=>{let J=null;try{let z=await zz();if(z){let Y=new KJ(z);await Y.init(),J=Y}else console.error("[kobe settings] no daemon running; Restart backend disabled")}catch(z){console.error("[kobe settings] daemon unavailable; Restart backend disabled:",z)}return{root:()=>b(qu,{orchestrator:J}),onDestroy:()=>{J?.dispose()}}}})}var hM=k(()=>{P();P();P();P();P();P();FJ();nY();p9();BQ();v1();aY();yJ();zJ();nJ()});var vM={};f1(vM,{startHelpHost:()=>Bu});function Hu(){let J=c1(),{theme:z}=d0();function Y(){process.exit(0)}return D1(()=>({enabled:J.stack.length===0,bindings:[{key:"escape",cmd:Y},{key:"q",cmd:Y},{key:"f1",cmd:Y},{key:"ctrl+c",cmd:Y}]})),(()=>{var G=W("box");return q(G,"flexGrow",1),q(G,"paddingTop",1),U(G,b(pZ,{onClose:Y})),y((Z)=>q(G,"backgroundColor",z.background,Z)),G})()}async function Bu(){await OJ({providers:{kv:!1,focus:!1},setup:()=>({root:()=>b(Hu,{})})})}var mM=k(()=>{P();P();P();P();P();m9();v1();aY();yJ();nJ()});var cM={};f1(cM,{startUpdateHost:()=>Lu});import{spawn as ju,spawnSync as Wu}from"child_process";import{TextAttributes as sZ}from"@opentui/core";function Vu(J){if(!J)return!1;let z=process.platform,[Y,G]=z==="darwin"?["open",[J]]:z==="win32"?["cmd",["/c","start","",J]]:["xdg-open",[J]];try{return ju(Y,G,{stdio:"ignore",detached:!0}).unref(),!0}catch{return!1}}function Ku(J){return J.replace(/\r\n/g,`
|
|
259
|
+
`)}var nI;var LD=k(()=>{JH();nI=["install","status","command"]});var sj={};f1(sj,{runHookSubcommand:()=>sI,readTextWithTimeout:()=>AD,parseWorktreeAddPath:()=>gD,ensureGlobalKobeHooks:()=>JT});import{homedir as lI}from"os";import{join as FD,resolve as OD}from"path";async function AD(J,z=$I){let Y;try{return await Promise.race([J(),new Promise((Z)=>{Y=setTimeout(()=>Z(""),z)})])}finally{if(Y!==void 0)clearTimeout(Y)}}async function RD(){try{let J=await AD(()=>Bun.stdin.text());if(!J.trim())return{};let z=JSON.parse(J);return z&&typeof z==="object"&&!Array.isArray(z)?z:{}}catch{return{}}}function aI(J,z){for(let Y=0;Y<J.length;Y++){if(J[Y]===z)return J[Y+1];if(J[Y].startsWith(`${z}=`))return J[Y].slice(z.length+1)}return}function pI(J){return!!J&&typeof J==="object"&&!Array.isArray(J)}function rI(J){let z=[],Y=/"([^"]*)"|'([^']*)'|(\S+)/g,Z;while((Z=Y.exec(J))!==null)z.push(Z[1]??Z[2]??Z[3]??"");return z}function gD(J){let z=rI(J),Y=new Set(["-b","-B","--reason"]);for(let Z=0;Z+1<z.length;Z++){if(z[Z]!=="worktree"||z[Z+1]!=="add")continue;let X=Z+2;while(X<z.length){let G=z[X];if(G==="&&"||G==="||"||G===";"||G==="|"||G===">"||G===">>")break;if(G.startsWith("-")){X+=Y.has(G)?2:1;continue}return G}}return}async function oI(){let J=await RD(),z=pI(J.tool_input)?J.tool_input:{},Y=typeof z.command==="string"?z.command:"";if(!Y.includes("worktree"))return;let Z=gD(Y);if(!Z)return;let X=typeof J.cwd==="string"&&J.cwd?J.cwd:process.cwd(),G=OD(X,Z),Q=await zz();if(!Q)return;try{await Q.request("worktree.reconcile",{cwd:X,worktreePath:G})}finally{Q.close()}}async function sI(J){let[z,...Y]=J;if(z==="setup"){await zT(Y);return}if(z===_I){try{await oI()}catch{}return}try{if(!z||!Lq(z))return;let Z=await RD(),X=aI(Y,"--task-id"),G=typeof Z.cwd==="string"&&Z.cwd?Z.cwd:process.cwd(),Q;for(let H of CD())if(Q=H.activityDetailFromPayload(z,Z),Q)break;let f=await zz();if(!f)return;try{await f.request("engine.reportEvent",{...X?{taskId:X}:{cwd:G},kind:z,...Q?{detail:Q}:{}})}finally{f.close()}}catch{}}function tI(){return l1.map((J)=>w8(J)).filter((J)=>J.supportsWorktreeSync())}function CD(){return l1.map((J)=>w8(J)).filter((J)=>J.supportsHooks())}function ND(){return FD(lI(),".claude","settings.json")}function eI(J){if(!J||J==="off")return;if(J==="global")return ND();if(J.startsWith("repo:"))return FD(OD(J.slice(5)),".claude","settings.json");return J}async function JT(){try{for(let J of CD()){let z=J.globalSettingsPath();if(!z)continue;await J.installActivityHooks(z),await J.installWorktreeWatchHook(z)}await kD()}catch{}}async function kD(){let J=tI();if(J.length===0)return;let z=C1(MD),Y=new Set([ND()]),Z=eI(z);if(Z)Y.add(Z);for(let X of J)for(let G of Y)await X.removeWorktreeSyncHook(G);if(z!=="off")s1(MD,"off")}async function zT(J){await kD(),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(`
|
|
260
|
+
`))}var $I=500,_I="worktree-created",MD="externalWorktreeSync";var tj=k(()=>{FJ();P8();Mq();O1();$1()});function SD(J){var z;if(J>=55296&&J<=57343||J>1114111)return 65533;return(z=YT.get(J))!==null&&z!==void 0?z:J}var ej,YT,bD;var ID=k(()=>{YT=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]]),bD=(ej=String.fromCodePoint)!==null&&ej!==void 0?ej:(J)=>{let z="";if(J>65535)J-=65536,z+=String.fromCharCode(J>>>10&1023|55296),J=56320|J&1023;return z+=String.fromCharCode(J),z}});function TD(J){let z=typeof atob==="function"?atob(J):typeof Buffer.from==="function"?Buffer.from(J,"base64").toString("binary"):new Buffer(J,"base64").toString("binary"),Y=z.length&-2,Z=new Uint16Array(Y/2);for(let X=0,G=0;X<Y;X+=2){let Q=z.charCodeAt(X),f=z.charCodeAt(X+1);Z[G++]=Q|f<<8}return Z}var yD;var xD=k(()=>{yD=TD("QR08ALkAAgH6AYsDNQR2BO0EPgXZBQEGLAbdBxMISQrvCmQLfQurDKQNLw4fD4YPpA+6D/IPAAAAAAAAAAAAAAAAKhBMEY8TmxUWF2EYLBkxGuAa3RsJHDscWR8YIC8jSCSIJcMl6ie3Ku8rEC0CLjoupS7kLgAIRU1hYmNmZ2xtbm9wcnN0dVQAWgBeAGUAaQBzAHcAfgCBAIQAhwCSAJoAoACsALMAbABpAGcAO4DGAMZAUAA7gCYAJkBjAHUAdABlADuAwQDBQHIiZXZlAAJhAAFpeW0AcgByAGMAO4DCAMJAEGRyAADgNdgE3XIAYQB2AGUAO4DAAMBA8CFoYZFj4SFjcgBhZAAAoFMqAAFncIsAjgBvAG4ABGFmAADgNdg43fAlbHlGdW5jdGlvbgCgYSBpAG4AZwA7gMUAxUAAAWNzpACoAHIAAOA12Jzc6SFnbgCgVCJpAGwAZABlADuAwwDDQG0AbAA7gMQAxEAABGFjZWZvcnN1xQDYANoA7QDxAPYA+QD8AAABY3LJAM8AayNzbGFzaAAAoBYidgHTANUAAKDnKmUAZAAAoAYjeQARZIABY3J0AOAA5QDrAGEidXNlAACgNSLuI291bGxpcwCgLCFhAJJjcgAA4DXYBd1wAGYAAOA12Dnd5SF2ZdhiYwDyAOoAbSJwZXEAAKBOIgAHSE9hY2RlZmhpbG9yc3UXARoBHwE6AVIBVQFiAWQBZgGCAakB6QHtAfIBYwB5ACdkUABZADuAqQCpQIABY3B5ACUBKAE1AfUhdGUGYWmg0iJ0KGFsRGlmZmVyZW50aWFsRAAAoEUhbCJleXMAAKAtIQACYWVpb0EBRAFKAU0B8iFvbgxhZABpAGwAO4DHAMdAcgBjAAhhbiJpbnQAAKAwIm8AdAAKYQABZG5ZAV0BaSJsbGEAuGB0I2VyRG90ALdg8gA5AWkAp2NyImNsZQAAAkRNUFRwAXQBeQF9AW8AdAAAoJkiaSJudXMAAKCWIuwhdXMAoJUiaSJtZXMAAKCXIm8AAAFjc4cBlAFrKndpc2VDb250b3VySW50ZWdyYWwAAKAyImUjQ3VybHkAAAFEUZwBpAFvJXVibGVRdW90ZQAAoB0gdSJvdGUAAKAZIAACbG5wdbABtgHNAdgBbwBuAGWgNyIAoHQqgAFnaXQAvAHBAcUB8iJ1ZW50AKBhIm4AdAAAoC8i7yV1ckludGVncmFsAKAuIgABZnLRAdMBAKACIe8iZHVjdACgECJuLnRlckNsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbAAAoDMi7yFzcwCgLypjAHIAAOA12J7ccABDoNMiYQBwAACgTSKABURKU1phY2VmaW9zAAsCEgIVAhgCGwIsAjQCOQI9AnMCfwNvoEUh9CJyYWhkAKARKWMAeQACZGMAeQAFZGMAeQAPZIABZ3JzACECJQIoAuchZXIAoCEgcgAAoKEhaAB2AACg5CoAAWF5MAIzAvIhb24OYRRkbAB0oAciYQCUY3IAAOA12AfdAAFhZkECawIAAWNtRQJnAvIjaXRpY2FsAAJBREdUUAJUAl8CYwJjInV0ZQC0YG8AdAFZAloC2WJiJGxlQWN1dGUA3WJyImF2ZQBgYGkibGRlANxi7yFuZACgxCJmJWVyZW50aWFsRAAAoEYhcAR9AgAAAAAAAIECjgIAABoDZgAA4DXYO91EoagAhQKJAm8AdAAAoNwgcSJ1YWwAAKBQIuIhbGUAA0NETFJVVpkCqAK1Au8C/wIRA28AbgB0AG8AdQByAEkAbgB0AGUAZwByAGEA7ADEAW8AdAKvAgAAAACwAqhgbiNBcnJvdwAAoNMhAAFlb7kC0AJmAHQAgAFBUlQAwQLGAs0CciJyb3cAAKDQIekkZ2h0QXJyb3cAoNQhZQDlACsCbgBnAAABTFLWAugC5SFmdAABQVLcAuECciJyb3cAAKD4J+kkZ2h0QXJyb3cAoPon6SRnaHRBcnJvdwCg+SdpImdodAAAAUFU9gL7AnIicm93AACg0iFlAGUAAKCoInAAQQIGAwAAAAALA3Iicm93AACg0SFvJHduQXJyb3cAAKDVIWUlcnRpY2FsQmFyAACgJSJuAAADQUJMUlRhJAM2AzoDWgNxA3oDciJyb3cAAKGTIUJVLAMwA2EAcgAAoBMpcCNBcnJvdwAAoPUhciJldmUAEWPlIWZ00gJDAwAASwMAAFIDaSVnaHRWZWN0b3IAAKBQKWUkZVZlY3RvcgAAoF4p5SJjdG9yQqC9IWEAcgAAoFYpaSJnaHQA1AFiAwAAaQNlJGVWZWN0b3IAAKBfKeUiY3RvckKgwSFhAHIAAKBXKWUAZQBBoKQiciJyb3cAAKCnIXIAcgBvAPcAtAIAAWN0gwOHA3IAAOA12J/c8iFvaxBhAAhOVGFjZGZnbG1vcHFzdHV4owOlA6kDsAO/A8IDxgPNA9ID8gP9AwEEFAQeBCAEJQRHAEphSAA7gNAA0EBjAHUAdABlADuAyQDJQIABYWl5ALYDuQO+A/Ihb24aYXIAYwA7gMoAykAtZG8AdAAWYXIAAOA12AjdcgBhAHYAZQA7gMgAyEDlIm1lbnQAoAgiAAFhcNYD2QNjAHIAEmF0AHkAUwLhAwAAAADpA20lYWxsU3F1YXJlAACg+yVlJ3J5U21hbGxTcXVhcmUAAKCrJQABZ3D2A/kDbwBuABhhZgAA4DXYPN3zImlsb26VY3UAAAFhaQYEDgRsAFSgdSppImxkZQAAoEIi7CNpYnJpdW0AoMwhAAFjaRgEGwRyAACgMCFtAACgcyphAJdjbQBsADuAywDLQAABaXApBC0E8yF0cwCgAyLvJG5lbnRpYWxFAKBHIYACY2Zpb3MAPQQ/BEMEXQRyBHkAJGRyAADgNdgJ3WwibGVkAFMCTAQAAAAAVARtJWFsbFNxdWFyZQAAoPwlZSdyeVNtYWxsU3F1YXJlAACgqiVwA2UEAABpBAAAAABtBGYAAOA12D3dwSFsbACgACLyI2llcnRyZgCgMSFjAPIAcQQABkpUYWJjZGZnb3JzdIgEiwSOBJMElwSkBKcEqwStBLIE5QTqBGMAeQADZDuAPgA+QO0hbWFkoJMD3GNyImV2ZQAeYYABZWl5AJ0EoASjBOQhaWwiYXIAYwAcYRNkbwB0ACBhcgAA4DXYCt0AoNkicABmAADgNdg+3eUiYXRlcgADRUZHTFNUvwTIBM8E1QTZBOAEcSJ1YWwATKBlIuUhc3MAoNsidSRsbEVxdWFsAACgZyJyI2VhdGVyAACgoirlIXNzAKB3IuwkYW50RXF1YWwAoH4qaSJsZGUAAKBzImMAcgAA4DXYotwAoGsiAARBYWNmaW9zdfkE/QQFBQgFCwUTBSIFKwVSIkRjeQAqZAABY3QBBQQFZQBrAMdiXmDpIXJjJGFyAACgDCFsJWJlcnRTcGFjZQAAoAsh8AEYBQAAGwVmAACgDSHpJXpvbnRhbExpbmUAoAAlAAFjdCYFKAXyABIF8iFvayZhbQBwAEQBMQU5BW8AdwBuAEgAdQBtAPAAAAFxInVhbAAAoE8iAAdFSk9hY2RmZ21ub3N0dVMFVgVZBVwFYwVtBXAFcwV6BZAFtgXFBckFzQVjAHkAFWTsIWlnMmFjAHkAAWRjAHUAdABlADuAzQDNQAABaXlnBWwFcgBjADuAzgDOQBhkbwB0ADBhcgAAoBEhcgBhAHYAZQA7gMwAzEAAoREhYXB/BYsFAAFjZ4MFhQVyACphaSNuYXJ5SQAAoEghbABpAGUA8wD6AvQBlQUAAKUFZaAsIgABZ3KaBZ4F8iFhbACgKyLzI2VjdGlvbgCgwiJpI3NpYmxlAAABQ1SsBbEFbyJtbWEAAKBjIGkibWVzAACgYiCAAWdwdAC8Bb8FwwVvAG4ALmFmAADgNdhA3WEAmWNjAHIAAKAQIWkibGRlAChh6wHSBQAA1QVjAHkABmRsADuAzwDPQIACY2Zvc3UA4QXpBe0F8gX9BQABaXnlBegFcgBjADRhGWRyAADgNdgN3XAAZgAA4DXYQd3jAfcFAAD7BXIAAOA12KXc8iFjeQhk6yFjeQRkgANISmFjZm9zAAwGDwYSBhUGHQYhBiYGYwB5ACVkYwB5AAxk8CFwYZpjAAFleRkGHAbkIWlsNmEaZHIAAOA12A7dcABmAADgNdhC3WMAcgAA4DXYptyABUpUYWNlZmxtb3N0AD0GQAZDBl4GawZkB2gHcAd0B80H2gdjAHkACWQ7gDwAPECAAmNtbnByAEwGTwZSBlUGWwb1IXRlOWHiIWRhm2NnAACg6ifsI2FjZXRyZgCgEiFyAACgniGAAWFleQBkBmcGagbyIW9uPWHkIWlsO2EbZAABZnNvBjQHdAAABUFDREZSVFVWYXKABp4GpAbGBssG3AYDByEHwQIqBwABbnKEBowGZyVsZUJyYWNrZXQAAKDoJ/Ihb3cAoZAhQlKTBpcGYQByAACg5CHpJGdodEFycm93AKDGIWUjaWxpbmcAAKAII28A9QGqBgAAsgZiJWxlQnJhY2tldAAAoOYnbgDUAbcGAAC+BmUkZVZlY3RvcgAAoGEp5SJjdG9yQqDDIWEAcgAAoFkpbCJvb3IAAKAKI2kiZ2h0AAABQVbSBtcGciJyb3cAAKCUIeUiY3RvcgCgTikAAWVy4AbwBmUAAKGjIkFW5gbrBnIicm93AACgpCHlImN0b3IAoFopaSNhbmdsZQBCorIi+wYAAAAA/wZhAHIAAKDPKXEidWFsAACgtCJwAIABRFRWAAoHEQcYB+8kd25WZWN0b3IAoFEpZSRlVmVjdG9yAACgYCnlImN0b3JCoL8hYQByAACgWCnlImN0b3JCoLwhYQByAACgUilpAGcAaAB0AGEAcgByAG8A9wDMAnMAAANFRkdMU1Q/B0cHTgdUB1gHXwfxJXVhbEdyZWF0ZXIAoNoidSRsbEVxdWFsAACgZiJyI2VhdGVyAACgdiLlIXNzAKChKuwkYW50RXF1YWwAoH0qaSJsZGUAAKByInIAAOA12A/dZaDYIuYjdGFycm93AKDaIWkiZG90AD9hgAFucHcAege1B7kHZwAAAkxSbHKCB5QHmwerB+UhZnQAAUFSiAeNB3Iicm93AACg9SfpJGdodEFycm93AKD3J+kkZ2h0QXJyb3cAoPYn5SFmdAABYXLcAqEHaQBnAGgAdABhAHIAcgBvAPcA5wJpAGcAaAB0AGEAcgByAG8A9wDuAmYAAOA12EPdZQByAAABTFK/B8YHZSRmdEFycm93AACgmSHpJGdodEFycm93AKCYIYABY2h0ANMH1QfXB/IAWgYAoLAh8iFva0FhAKBqIgAEYWNlZmlvc3XpB+wH7gf/BwMICQgOCBEIcAAAoAUpeQAcZAABZGzyB/kHaSR1bVNwYWNlAACgXyBsI2ludHJmAACgMyFyAADgNdgQ3e4jdXNQbHVzAKATInAAZgAA4DXYRN1jAPIA/gecY4AESmFjZWZvc3R1ACEIJAgoCDUIgQiFCDsKQApHCmMAeQAKZGMidXRlAENhgAFhZXkALggxCDQI8iFvbkdh5CFpbEVhHWSAAWdzdwA7CGEIfQjhInRpdmWAAU1UVgBECEwIWQhlJWRpdW1TcGFjZQAAoAsgaABpAAABY25SCFMIawBTAHAAYQBjAOUASwhlAHIAeQBUAGgAaQDuAFQI9CFlZAABR0xnCHUIcgBlAGEAdABlAHIARwByAGUAYQB0AGUA8gDrBGUAcwBzAEwAZQBzAPMA2wdMImluZQAKYHIAAOA12BHdAAJCbnB0jAiRCJkInAhyImVhawAAoGAgwiZyZWFraW5nU3BhY2WgYGYAAKAVIUOq7CqzCMIIzQgAAOcIGwkAAAAAAAAtCQAAbwkAAIcJAACdCcAJGQoAADQKAAFvdbYIvAjuI2dydWVudACgYiJwIkNhcAAAoG0ibyh1YmxlVmVydGljYWxCYXIAAKAmIoABbHF4ANII1wjhCOUibWVudACgCSL1IWFsVKBgImkibGRlAADgQiI4A2kic3RzAACgBCJyI2VhdGVyAACjbyJFRkdMU1T1CPoIAgkJCQ0JFQlxInVhbAAAoHEidSRsbEVxdWFsAADgZyI4A3IjZWF0ZXIAAOBrIjgD5SFzcwCgeSLsJGFudEVxdWFsAOB+KjgDaSJsZGUAAKB1IvUhbXBEASAJJwnvI3duSHVtcADgTiI4A3EidWFsAADgTyI4A2UAAAFmczEJRgn0JFRyaWFuZ2xlQqLqIj0JAAAAAEIJYQByAADgzyk4A3EidWFsAACg7CJzAICibiJFR0xTVABRCVYJXAlhCWkJcSJ1YWwAAKBwInIjZWF0ZXIAAKB4IuUhc3MA4GoiOAPsJGFudEVxdWFsAOB9KjgDaSJsZGUAAKB0IuUic3RlZAABR0x1CX8J8iZlYXRlckdyZWF0ZXIA4KIqOAPlI3NzTGVzcwDgoSo4A/IjZWNlZGVzAKGAIkVTjwmVCXEidWFsAADgryo4A+wkYW50RXF1YWwAoOAiAAFlaaAJqQl2JmVyc2VFbGVtZW50AACgDCLnJWh0VHJpYW5nbGVCousitgkAAAAAuwlhAHIAAODQKTgDcSJ1YWwAAKDtIgABcXXDCeAJdSNhcmVTdQAAAWJwywnVCfMhZXRF4I8iOANxInVhbAAAoOIi5SJyc2V0ReCQIjgDcSJ1YWwAAKDjIoABYmNwAOYJ8AkNCvMhZXRF4IIi0iBxInVhbAAAoIgi4yJlZWRzgKGBIkVTVAD6CQAKBwpxInVhbAAA4LAqOAPsJGFudEVxdWFsAKDhImkibGRlAADgfyI4A+UicnNldEXggyLSIHEidWFsAACgiSJpImxkZQCAoUEiRUZUACIKJwouCnEidWFsAACgRCJ1JGxsRXF1YWwAAKBHImkibGRlAACgSSJlJXJ0aWNhbEJhcgAAoCQiYwByAADgNdip3GkAbABkAGUAO4DRANFAnWMAB0VhY2RmZ21vcHJzdHV2XgphCmgKcgp2CnoKgQqRCpYKqwqtCrsKyArNCuwhaWdSYWMAdQB0AGUAO4DTANNAAAFpeWwKcQpyAGMAO4DUANRAHmRiImxhYwBQYXIAAOA12BLdcgBhAHYAZQA7gNIA0kCAAWFlaQCHCooKjQpjAHIATGFnAGEAqWNjInJvbgCfY3AAZgAA4DXYRt3lI25DdXJseQABRFGeCqYKbyV1YmxlUXVvdGUAAKAcIHUib3RlAACgGCAAoFQqAAFjbLEKtQpyAADgNdiq3GEAcwBoADuA2ADYQGkAbAHACsUKZABlADuA1QDVQGUAcwAAoDcqbQBsADuA1gDWQGUAcgAAAUJQ0wrmCgABYXLXCtoKcgAAoD4gYQBjAAABZWvgCuIKAKDeI2UAdAAAoLQjYSVyZW50aGVzaXMAAKDcI4AEYWNmaGlsb3JzAP0KAwsFCwkLCwsMCxELIwtaC3IjdGlhbEQAAKACInkAH2RyAADgNdgT3WkApmOgY/Ujc01pbnVzsWAAAWlwFQsgC24AYwBhAHIAZQBwAGwAYQBuAOUACgVmAACgGSGAobsqZWlvACoLRQtJC+MiZWRlc4CheiJFU1QANAs5C0ALcSJ1YWwAAKCvKuwkYW50RXF1YWwAoHwiaSJsZGUAAKB+Im0AZQAAoDMgAAFkcE0LUQv1IWN0AKAPIm8jcnRpb24AYaA3ImwAAKAdIgABY2leC2ILcgAA4DXYq9yoYwACVWZvc2oLbwtzC3cLTwBUADuAIgAiQHIAAOA12BTdcABmAACgGiFjAHIAAOA12KzcAAZCRWFjZWZoaW9yc3WPC5MLlwupC7YL2AvbC90LhQyTDJoMowzhIXJyAKAQKUcAO4CuAK5AgAFjbnIAnQugC6ML9SF0ZVRhZwAAoOsncgB0oKAhbAAAoBYpgAFhZXkArwuyC7UL8iFvblhh5CFpbFZhIGR2oBwhZSJyc2UAAAFFVb8LzwsAAWxxwwvIC+UibWVudACgCyL1JGlsaWJyaXVtAKDLIXAmRXF1aWxpYnJpdW0AAKBvKXIAAKAcIW8AoWPnIWh0AARBQ0RGVFVWYewLCgwQDDIMNwxeDHwM9gIAAW5y8Av4C2clbGVCcmFja2V0AACg6SfyIW93AKGSIUJM/wsDDGEAcgAAoOUhZSRmdEFycm93AACgxCFlI2lsaW5nAACgCSNvAPUBFgwAAB4MYiVsZUJyYWNrZXQAAKDnJ24A1AEjDAAAKgxlJGVWZWN0b3IAAKBdKeUiY3RvckKgwiFhAHIAAKBVKWwib29yAACgCyMAAWVyOwxLDGUAAKGiIkFWQQxGDHIicm93AACgpiHlImN0b3IAoFspaSNhbmdsZQBCorMiVgwAAAAAWgxhAHIAAKDQKXEidWFsAACgtSJwAIABRFRWAGUMbAxzDO8kd25WZWN0b3IAoE8pZSRlVmVjdG9yAACgXCnlImN0b3JCoL4hYQByAACgVCnlImN0b3JCoMAhYQByAACgUykAAXB1iQyMDGYAAKAdIe4kZEltcGxpZXMAoHAp6SRnaHRhcnJvdwCg2yEAAWNongyhDHIAAKAbIQCgsSHsJGVEZWxheWVkAKD0KYAGSE9hY2ZoaW1vcXN0dQC/DMgMzAzQDOIM5gwKDQ0NFA0ZDU8NVA1YDQABQ2PDDMYMyCFjeSlkeQAoZEYiVGN5ACxkYyJ1dGUAWmEAorwqYWVpedgM2wzeDOEM8iFvbmBh5CFpbF5hcgBjAFxhIWRyAADgNdgW3e8hcnQAAkRMUlXvDPYM/QwEDW8kd25BcnJvdwAAoJMhZSRmdEFycm93AACgkCHpJGdodEFycm93AKCSIXAjQXJyb3cAAKCRIechbWGjY+EkbGxDaXJjbGUAoBgicABmAADgNdhK3XICHw0AAAAAIg10AACgGiLhIXJlgKGhJUlTVQAqDTINSg3uJXRlcnNlY3Rpb24AoJMidQAAAWJwNw1ADfMhZXRFoI8icSJ1YWwAAKCRIuUicnNldEWgkCJxInVhbAAAoJIibiJpb24AAKCUImMAcgAA4DXYrtxhAHIAAKDGIgACYmNtcF8Nag2ODZANc6DQImUAdABFoNAicSJ1YWwAAKCGIgABY2huDYkNZSJlZHMAgKF7IkVTVAB4DX0NhA1xInVhbAAAoLAq7CRhbnRFcXVhbACgfSJpImxkZQAAoH8iVABoAGEA9ADHCwCgESIAodEiZXOVDZ8NciJzZXQARaCDInEidWFsAACghyJlAHQAAKDRIoAFSFJTYWNmaGlvcnMAtQ27Db8NyA3ODdsN3w3+DRgOHQ4jDk8AUgBOADuA3gDeQMEhREUAoCIhAAFIY8MNxg1jAHkAC2R5ACZkAAFidcwNzQ0JYKRjgAFhZXkA1A3XDdoN8iFvbmRh5CFpbGJhImRyAADgNdgX3QABZWnjDe4N8gHoDQAA7Q3lImZvcmUAoDQiYQCYYwABY27yDfkNayNTcGFjZQAA4F8gCiDTInBhY2UAoAkg7CFkZYChPCJFRlQABw4MDhMOcSJ1YWwAAKBDInUkbGxFcXVhbAAAoEUiaSJsZGUAAKBIInAAZgAA4DXYS93pI3BsZURvdACg2yAAAWN0Jw4rDnIAAOA12K/c8iFva2Zh4QpFDlYOYA5qDgAAbg5yDgAAAAAAAAAAAAB5DnwOqA6zDgAADg8RDxYPGg8AAWNySA5ODnUAdABlADuA2gDaQHIAb6CfIeMhaXIAoEkpcgDjAVsOAABdDnkADmR2AGUAbGEAAWl5Yw5oDnIAYwA7gNsA20AjZGIibGFjAHBhcgAA4DXYGN1yAGEAdgBlADuA2QDZQOEhY3JqYQABZGl/Dp8OZQByAAABQlCFDpcOAAFhcokOiw5yAF9gYQBjAAABZWuRDpMOAKDfI2UAdAAAoLUjYSVyZW50aGVzaXMAAKDdI28AbgBQoMMi7CF1cwCgjiIAAWdwqw6uDm8AbgByYWYAAOA12EzdAARBREVUYWRwc78O0g7ZDuEOBQPqDvMOBw9yInJvdwDCoZEhyA4AAMwOYQByAACgEilvJHduQXJyb3cAAKDFIW8kd25BcnJvdwAAoJUhcSV1aWxpYnJpdW0AAKBuKWUAZQBBoKUiciJyb3cAAKClIW8AdwBuAGEAcgByAG8A9wAQA2UAcgAAAUxS+Q4AD2UkZnRBcnJvdwAAoJYh6SRnaHRBcnJvdwCglyFpAGyg0gNvAG4ApWPpIW5nbmFjAHIAAOA12LDcaSJsZGUAaGFtAGwAO4DcANxAgAREYmNkZWZvc3YALQ8xDzUPNw89D3IPdg97D4AP4SFzaACgqyJhAHIAAKDrKnkAEmThIXNobKCpIgCg5ioAAWVyQQ9DDwCgwSKAAWJ0eQBJD00Paw9hAHIAAKAWIGmgFiDjIWFsAAJCTFNUWA9cD18PZg9hAHIAAKAjIukhbmV8YGUkcGFyYXRvcgAAoFgnaSJsZGUAAKBAItQkaGluU3BhY2UAoAogcgAA4DXYGd1wAGYAAOA12E3dYwByAADgNdix3GQiYXNoAACgqiKAAmNlZm9zAI4PkQ+VD5kPng/pIXJjdGHkIWdlAKDAInIAAOA12BrdcABmAADgNdhO3WMAcgAA4DXYstwAAmZpb3OqD64Prw+0D3IAAOA12BvdnmNwAGYAAOA12E/dYwByAADgNdiz3IAEQUlVYWNmb3N1AMgPyw/OD9EP2A/gD+QP6Q/uD2MAeQAvZGMAeQAHZGMAeQAuZGMAdQB0AGUAO4DdAN1AAAFpedwP3w9yAGMAdmErZHIAAOA12BzdcABmAADgNdhQ3WMAcgAA4DXYtNxtAGwAeGEABEhhY2RlZm9z/g8BEAUQDRAQEB0QIBAkEGMAeQAWZGMidXRlAHlhAAFheQkQDBDyIW9ufWEXZG8AdAB7YfIBFRAAABwQbwBXAGkAZAB0AOgAVAhhAJZjcgAAoCghcABmAACgJCFjAHIAAOA12LXc4QtCEEkQTRAAAGcQbRByEAAAAAAAAAAAeRCKEJcQ8hD9EAAAGxEhETIROREAAD4RYwB1AHQAZQA7gOEA4UByImV2ZQADYYCiPiJFZGl1eQBWEFkQWxBgEGUQAOA+IjMDAKA/InIAYwA7gOIA4kB0AGUAO4C0ALRAMGRsAGkAZwA7gOYA5kByoGEgAOA12B7dcgBhAHYAZQA7gOAA4EAAAWVwfBCGEAABZnCAEIQQ8yF5bQCgNSHoAIMQaABhALFjAAFhcI0QWwAAAWNskRCTEHIAAWFnAACgPypkApwQAAAAALEQAKInImFkc3ajEKcQqRCuEG4AZAAAoFUqAKBcKmwib3BlAACgWCoAoFoqAKMgImVsbXJzersQvRDAEN0Q5RDtEACgpCllAACgICJzAGQAYaAhImEEzhDQENIQ1BDWENgQ2hDcEACgqCkAoKkpAKCqKQCgqykAoKwpAKCtKQCgrikAoK8pdAB2oB8iYgBkoL4iAKCdKQABcHTpEOwQaAAAoCIixWDhIXJyAKB8IwABZ3D1EPgQbwBuAAVhZgAA4DXYUt0Ao0giRWFlaW9wBxEJEQ0RDxESERQRAKBwKuMhaXIAoG8qAKBKImQAAKBLInMAJ2DyIW94ZaBIIvEADhFpAG4AZwA7gOUA5UCAAWN0eQAmESoRKxFyAADgNdi23CpgbQBwAGWgSCLxAPgBaQBsAGQAZQA7gOMA40BtAGwAO4DkAORAAAFjaUERRxFvAG4AaQBuAPQA6AFuAHQAAKARKgAITmFiY2RlZmlrbG5vcHJzdWQRaBGXEZ8RpxGrEdIR1hErEjASexKKEn0RThNbE3oTbwB0AACg7SoAAWNybBGJEWsAAAJjZXBzdBF4EX0RghHvIW5nAKBMInAjc2lsb24A9mNyImltZQAAoDUgaQBtAGWgPSJxAACgzSJ2AY0RkRFlAGUAAKC9ImUAZABnoAUjZQAAoAUjcgBrAHSgtSPiIXJrAKC2IwABb3mjEaYRbgDnAHcRMWTxIXVvAKAeIIACY21wcnQAtBG5Eb4RwRHFEeEhdXPloDUi5ABwInR5dgAAoLApcwDpAH0RbgBvAPUA6gCAAWFodwDLEcwRzhGyYwCgNiHlIWVuAKBsInIAAOA12B/dZwCAA2Nvc3R1dncA4xHyEQUSEhIhEiYSKRKAAWFpdQDpEesR7xHwAKMFcgBjAACg7yVwAACgwyKAAWRwdAD4EfwRABJvAHQAAKAAKuwhdXMAoAEqaSJtZXMAAKACKnECCxIAAAAADxLjIXVwAKAGKmEAcgAAoAUm8iNpYW5nbGUAAWR1GhIeEu8hd24AoL0lcAAAoLMlcCJsdXMAAKAEKmUA5QBCD+UAkg9hInJvdwAAoA0pgAFha28ANhJoEncSAAFjbjoSZRJrAIABbHN0AEESRxJNEm8jemVuZ2UAAKDrKXEAdQBhAHIA5QBcBPIjaWFuZ2xlgKG0JWRscgBYElwSYBLvIXduAKC+JeUhZnQAoMIlaSJnaHQAAKC4JWsAAKAjJLEBbRIAAHUSsgFxEgAAcxIAoJIlAKCRJTQAAKCTJWMAawAAoIglAAFlb38ShxJx4D0A5SD1IWl2AOBhIuUgdAAAoBAjAAJwdHd4kRKVEpsSnxJmAADgNdhT3XSgpSJvAG0AAKClIvQhaWUAoMgiAAZESFVWYmRobXB0dXayEsES0RLgEvcS+xIKExoTHxMjEygTNxMAAkxSbHK5ErsSvRK/EgCgVyUAoFQlAKBWJQCgUyUAolAlRFVkdckSyxLNEs8SAKBmJQCgaSUAoGQlAKBnJQACTFJsctgS2hLcEt4SAKBdJQCgWiUAoFwlAKBZJQCjUSVITFJobHLrEu0S7xLxEvMS9RIAoGwlAKBjJQCgYCUAoGslAKBiJQCgXyVvAHgAAKDJKQACTFJscgITBBMGEwgTAKBVJQCgUiUAoBAlAKAMJQCiACVEVWR1EhMUExYTGBMAoGUlAKBoJQCgLCUAoDQlaSJudXMAAKCfIuwhdXMAoJ4iaSJtZXMAAKCgIgACTFJsci8TMRMzEzUTAKBbJQCgWCUAoBglAKAUJQCjAiVITFJobHJCE0QTRhNIE0oTTBMAoGolAKBhJQCgXiUAoDwlAKAkJQCgHCUAAWV2UhNVE3YA5QD5AGIAYQByADuApgCmQAACY2Vpb2ITZhNqE24TcgAA4DXYt9xtAGkAAKBPIG0A5aA9IogRbAAAoVwAYmh0E3YTAKDFKfMhdWIAoMgnbAF+E4QTbABloCIgdAAAoCIgcAAAoU4iRWWJE4sTAKCuKvGgTyI8BeEMqRMAAN8TABQDFB8UAAAjFDQUAAAAAIUUAAAAAI0UAAAAANcU4xT3FPsUAACIFQAAlhWAAWNwcgCuE7ET1RP1IXRlB2GAoikiYWJjZHMAuxO/E8QTzhPSE24AZAAAoEQqciJjdXAAAKBJKgABYXXIE8sTcAAAoEsqcAAAoEcqbwB0AACgQCoA4CkiAP4AAWVv2RPcE3QAAKBBIO4ABAUAAmFlaXXlE+8T9RP4E/AB6hMAAO0TcwAAoE0qbwBuAA1hZABpAGwAO4DnAOdAcgBjAAlhcABzAHOgTCptAACgUCpvAHQAC2GAAWRtbgAIFA0UEhRpAGwAO4C4ALhAcCJ0eXYAAKCyKXQAAIGiADtlGBQZFKJAcgBkAG8A9ABiAXIAAOA12CDdgAFjZWkAKBQqFDIUeQBHZGMAawBtoBMn4SFyawCgEyfHY3IAAKPLJUVjZWZtcz8UQRRHFHcUfBSAFACgwykAocYCZWxGFEkUcQAAoFciZQBhAlAUAAAAAGAUciJyb3cAAAFsclYUWhTlIWZ0AKC6IWkiZ2h0AACguyGAAlJTYWNkAGgUaRRrFG8UcxSuYACgyCRzAHQAAKCbIukhcmMAoJoi4SFzaACgnSJuImludAAAoBAqaQBkAACg7yrjIWlyAKDCKfUhYnN1oGMmaQB0AACgYybsApMUmhS2FAAAwxRvAG4AZaA6APGgVCKrAG0CnxQAAAAAoxRhAHSgLABAYAChASJmbKcUqRTuABMNZQAAAW14rhSyFOUhbnQAoAEiZQDzANIB5wG6FAAAwBRkoEUibwB0AACgbSpuAPQAzAGAAWZyeQDIFMsUzhQA4DXYVN1vAOQA1wEAgakAO3MeAdMUcgAAoBchAAFhb9oU3hRyAHIAAKC1IXMAcwAAoBcnAAFjdeYU6hRyAADgNdi43AABYnDuFPIUZaDPKgCg0SploNAqAKDSKuQhb3QAoO8igANkZWxwcnZ3AAYVEBUbFSEVRBVlFYQV4SFycgABbHIMFQ4VAKA4KQCgNSlwAhYVAAAAABkVcgAAoN4iYwAAoN8i4SFycnCgtiEAoD0pgKIqImJjZG9zACsVMBU6FT4VQRVyImNhcAAAoEgqAAFhdTQVNxVwAACgRipwAACgSipvAHQAAKCNInIAAKBFKgDgKiIA/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/BjAAFleR4cIRzkIWlsN2E6ZHIAAOA12CjdciJlZW4AOGFjAHkARWRjAHkAXGRwAGYAAOA12FzdYwByAADgNdjA3IALQUJFSGFiY2RlZmdoamxtbm9wcnN0dXYAXhxtHHEcdRx5HN8cBx0dHTwd3B3tHfEdAR4EHh0eLB5FHrwewx7hHgkfPR9LH4ABYXJ0AGQcZxxpHHIA8gBvB/IAxQLhIWlsAKAbKeEhcnIAoA4pZ6BmIgCgiyphAHIAAKBiKWMJjRwAAJAcAACVHAAAAAAAAAAAAACZHJwcAACmHKgcrRwAANIc9SF0ZTph7SJwdHl2AKC0KXIAYQDuAFoG4iFkYbtjZwAAoegnZGyhHKMcAKCRKeUAiwYAoIUqdQBvADuAqwCrQHIAgKOQIWJmaGxwc3QAuhy/HMIcxBzHHMoczhxmoOQhcwAAoB8pcwAAoB0p6wCyGnAAAKCrIWwAAKA5KWkAbQAAoHMpbAAAoKIhAKGrKmFl1hzaHGkAbAAAoBkpc6CtKgDgrSoA/oABYWJyAOUc6RztHHIAcgAAoAwpcgBrAACgcicAAWFr8Rz4HGMAAAFla/Yc9xx7YFtgAAFlc/wc/hwAoIspbAAAAWR1Ax0FHQCgjykAoI0pAAJhZXV5Dh0RHRodHB3yIW9uPmEAAWRpFR0YHWkAbAA8YewAowbiAPccO2QAAmNxcnMkHScdLB05HWEAAKA2KXUAbwDyoBwgqhEAAWR1MB00HeghYXIAoGcpcyJoYXIAAKBLKWgAAKCyIQCiZCJmZ3FzRB1FB5Qdnh10AIACYWhscnQATh1WHWUdbB2NHXIicm93AHSgkCFhAOkAzxxhI3Jwb29uAAABZHVeHWId7yF3bgCgvSFwAACgvCHlJGZ0YXJyb3dzAKDHIWkiZ2h0AIABYWhzAHUdex2DHXIicm93APOglCGdBmEAcgBwAG8AbwBuAPMAzgtxAHUAaQBnAGEAcgByAG8A9wBlGugkcmVldGltZXMAoMsi8aFkIk0HAACaHWwAYQBuAPQAXgcAon0qY2Rnc6YdqR2xHbcdYwAAoKgqbwB0AG+gfypyoIEqAKCDKmXg2iIA/nMAAKCTKoACYWRlZ3MAwB3GHcod1h3ZHXAAcAByAG8A+ACmHG8AdAAAoNYicQAAAWdxzx3SHXQA8gBGB2cAdADyAHQcdADyAFMHaQDtAGMHgAFpbHIA4h3mHeod8yFodACgfClvAG8A8gDKBgDgNdgp3UWgdiIAoJEqYQH1Hf4dcgAAAWR1YB35HWygvCEAoGopbABrAACghCVjAHkAWWQAomoiYWNodAweDx4VHhkecgDyAGsdbwByAG4AZQDyAGAW4SFyZACgaylyAGkAAKD6JQABaW8hHiQe5CFvdEBh9SFzdGGgsCPjIWhlAKCwIwACRWFlczMeNR48HkEeAKBoInAAcKCJKvIhb3gAoIkqcaCHKvGghyo0HmkAbQAAoOYiAARhYm5vcHR3elIeXB5fHoUelh6mHqsetB4AAW5yVh5ZHmcAAKDsJ3IAAKD9IXIA6wCwBmcAgAFsbXIAZh52Hnse5SFmdAABYXKIB2weaQBnAGgAdABhAHIAcgBvAPcAkwfhInBzdG8AoPwnaQBnAGgAdABhAHIAcgBvAPcAmgdwI2Fycm93AAABbHKNHpEeZQBmAPQAxhxpImdodAAAoKwhgAFhZmwAnB6fHqIecgAAoIUpAOA12F3ddQBzAACgLSppIm1lcwAAoDQqYQGvHrMecwB0AACgFyLhAIoOZaHKJbkeRhLuIWdlAKDKJWEAcgBsoCgAdAAAoJMpgAJhY2htdADMHs8e1R7bHt0ecgDyAJ0GbwByAG4AZQDyANYWYQByAGSgyyEAoG0pAKAOIHIAaQAAoL8iAANhY2hpcXTrHu8e1QfzHv0eBh/xIXVvAKA5IHIAAOA12MHcbQDloXIi+h4AAPweAKCNKgCgjyoAAWJ19xwBH28AcqAYIACgGiDyIW9rQmEAhDwAO2NkaGlscXJCBhcfxh0gHyQfKB8sHzEfAAFjaRsfHR8AoKYqcgAAoHkqcgBlAOUAkx3tIWVzAKDJIuEhcnIAoHYpdSJlc3QAAKB7KgABUGk1HzkfYQByAACglillocMlAgdfEnIAAAFkdUIfRx9zImhhcgAAoEop6CFhcgCgZikAAWVuTx9WH3IjdG5lcXEAAOBoIgD+xQBUHwAHRGFjZGVmaGlsbm9wc3VuH3Ifoh+rH68ftx+7H74f5h/uH/MfBwj/HwsgxCFvdACgOiIAAmNscHJ5H30fiR+eH3IAO4CvAK9AAAFldIEfgx8AoEImZaAgJ3MAZQAAoCAnc6CmIXQAbwCAoaYhZGx1AJQfmB+cH28AdwDuAHkDZQBmAPQA6gbwAOkO6yFlcgCgriUAAW95ph+qH+0hbWEAoCkqPGThIXNoAKAUIOElc3VyZWRhbmdsZQCgISJyAADgNdgq3W8AAKAnIYABY2RuAMQfyR/bH3IAbwA7gLUAtUBhoiMi0B8AANMf1x9zAPQAKxFpAHIAAKDwKm8AdAA7gLcAt0B1AHMA4qESIh4TAADjH3WgOCIAoCoqYwHqH+0fcAAAoNsq8gB+GnAAbAB1APMACAgAAWRw9x/7H+UhbHMAoKciZgAA4DXYXt0AAWN0AyAHIHIAAOA12MLc8CFvcwCgPiJsobwDECAVIPQiaW1hcACguCJhAPAAEyAADEdMUlZhYmNkZWZnaGlqbG1vcHJzdHV2dzwgRyBmIG0geSCqILgg2iDeIBEhFSEyIUMhTSFQIZwhnyHSIQAiIyKLIrEivyIUIwABZ3RAIEMgAODZIjgD9uBrItIgBwmAAWVsdABNIF8gYiBmAHQAAAFhclMgWCByInJvdwAAoM0h6SRnaHRhcnJvdwCgziEA4NgiOAP24Goi0iBfCekkZ2h0YXJyb3cAoM8hAAFEZHEgdSDhIXNoAKCvIuEhc2gAoK4igAJiY25wdACCIIYgiSCNIKIgbABhAACgByL1IXRlRGFnAADgICLSIACiSSJFaW9wlSCYIJwgniAA4HAqOANkAADgSyI4A3MASWFyAG8A+AAyCnUAcgBhoG4mbADzoG4mmwjzAa8gAACzIHAAO4CgAKBAbQBwAOXgTiI4AyoJgAJhZW91eQDBIMogzSDWINkg8AHGIAAAyCAAoEMqbwBuAEhh5CFpbEZhbgBnAGSgRyJvAHQAAOBtKjgDcAAAoEIqPWThIXNoAKATIACjYCJBYWRxc3jpIO0g+SD+IAIhDCFyAHIAAKDXIXIAAAFocvIg9SBrAACgJClvoJch9wAGD28AdAAA4FAiOAN1AGkA9gC7CAABZWkGIQohYQByAACgKCntAN8I6SFzdPOgBCLlCHIAAOA12CvdAAJFZXN0/wgcISshLiHxoXEiIiEAABMJ8aFxIgAJAAAnIWwAYQBuAPQAEwlpAO0AGQlyoG8iAKBvIoABQWFwADghOyE/IXIA8gBeIHIAcgAAoK4hYQByAACg8ipzogsiSiEAAAAAxwtkoPwiAKD6ImMAeQBaZIADQUVhZGVzdABcIV8hYiFmIWkhkyGWIXIA8gBXIADgZiI4A3IAcgAAoJohcgAAoCUggKFwImZxcwBwIYQhjiF0AAABYXJ1IXohcgByAG8A9wBlIWkAZwBoAHQAYQByAHIAbwD3AD4h8aFwImAhAACKIWwAYQBuAPQAZwlz4H0qOAMAoG4iaQDtAG0JcqBuImkA5aDqIkUJaQDkADoKAAFwdKMhpyFmAADgNdhf3YCBrAA7aW4AriGvIcchrEBuAIChCSJFZHYAtyG6Ib8hAOD5IjgDbwB0AADg9SI4A+EB1gjEIcYhAKD3IgCg9iJpAHagDCLhAagJzyHRIQCg/iIAoP0igAFhb3IA2CHsIfEhcgCAoSYiYXN0AOAh5SHpIWwAbABlAOwAywhsAADg/SrlIADgAiI4A2wiaW50AACgFCrjoYAi9yEAAPohdQDlAJsJY+CvKjgDZaCAIvEAkwkAAkFhaXQHIgoiFyIeInIA8gBsIHIAcgAAoZshY3cRIhQiAOAzKTgDAOCdITgDZyRodGFycm93AACgmyFyAGkA5aDrIr4JgANjaGltcHF1AC8iPCJHIpwhTSJQIloigKGBImNlcgA2Iv0JOSJ1AOUABgoA4DXYw9zvIXJ0bQKdIQAAAABEImEAcgDhAOEhbQBloEEi8aBEIiYKYQDyAMsIcwB1AAABYnBWIlgi5QDUCeUA3wmAAWJjcABgInMieCKAoYQiRWVzAGci7glqIgDgxSo4A2UAdABl4IIi0iBxAPGgiCJoImMAZaCBIvEA/gmAoYUiRWVzAH8iFgqCIgDgxio4A2UAdABl4IMi0iBxAPGgiSKAIgACZ2lscpIilCKaIpwi7AAMCWwAZABlADuA8QDxQOcAWwlpI2FuZ2xlAAABbHKkIqoi5SFmdGWg6iLxAEUJaSJnaHQAZaDrIvEAvgltoL0DAKEjAGVzuCK8InIAbwAAoBYhcAAAoAcggARESGFkZ2lscnMAziLSItYi2iLeIugi7SICIw8j4SFzaACgrSLhIXJyAKAEKXAAAOBNItIg4SFzaACgrCIAAWV04iLlIgDgZSLSIADgPgDSIG4iZmluAACg3imAAUFldADzIvci+iJyAHIAAKACKQDgZCLSIHLgPADSIGkAZQAA4LQi0iAAAUF0BiMKI3IAcgAAoAMp8iFpZQDgtSLSIGkAbQAA4Dwi0iCAAUFhbgAaIx4jKiNyAHIAAKDWIXIAAAFociMjJiNrAACgIylvoJYh9wD/DuUhYXIAoCcpUxJqFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVCMAAF4jaSN/I4IjjSOeI8AUAAAAAKYjwCMAANoj3yMAAO8jHiQvJD8kRCQAAWNzVyNsFHUAdABlADuA8wDzQAABaXlhI2cjcgBjoJoiO4D0APRAPmSAAmFiaW9zAHEjdCN3I3EBeiNzAOgAdhTsIWFjUWF2AACgOCrvIWxkAKC8KewhaWdTYQABY3KFI4kjaQByAACgvykA4DXYLN1vA5QjAAAAAJYjAACcI24A22JhAHYAZQA7gPIA8kAAoMEpAAFibaEjjAphAHIAAKC1KQACYWNpdKwjryO6I70jcgDyAFkUAAFpcrMjtiNyAACgvinvIXNzAKC7KW4A5QDZCgCgwCmAAWFlaQDFI8gjyyNjAHIATWFnAGEAyWOAAWNkbgDRI9Qj1iPyIW9uv2MAoLYpdQDzAHgBcABmAADgNdhg3YABYWVsAOQj5yPrI3IAAKC3KXIAcAAAoLkpdQDzAHwBAKMoImFkaW9zdvkj/CMPJBMkFiQbJHIA8gBeFIChXSplZm0AAyQJJAwkcgBvoDQhZgAAoDQhO4CqAKpAO4C6ALpA5yFvZgCgtiJyAACgVipsIm9wZQAAoFcqAKBbKoABY2xvACMkJSQrJPIACCRhAHMAaAA7gPgA+EBsAACgmCJpAGwBMyQ4JGQAZQA7gPUA9UBlAHMAYaCXInMAAKA2Km0AbAA7gPYA9kDiIWFyAKA9I+EKXiQAAHokAAB8JJQkAACYJKkkAAAAALUkEQsAAPAkAAAAAAQleiUAAIMlcgCAoSUiYXN0AGUkbyQBCwCBtgA7bGokayS2QGwAZQDsABgDaQJ1JAAAAAB4JG0AAKDzKgCg/Sp5AD9kcgCAAmNpbXB0AIUkiCSLJJkSjyRuAHQAJWBvAGQALmBpAGwAAKAwIOUhbmsAoDEgcgAA4DXYLd2AAWltbwCdJKAkpCR2oMYD1WNtAGEA9AD+B24AZQAAoA4m9KHAA64kAAC0JGMjaGZvcmsAAKDUItZjAAFhdbgkxCRuAAABY2u9JMIkawBooA8hAKAOIfYAaRpzAACkKwBhYmNkZW1zdNMkIRPXJNsk4STjJOck6yTjIWlyAKAjKmkAcgAAoCIqAAFvdYsW3yQAoCUqAKByKm4AO4CxALFAaQBtAACgJip3AG8AAKAnKoABaXB1APUk+iT+JO4idGludACgFSpmAADgNdhh3W4AZAA7gKMAo0CApHoiRWFjZWlub3N1ABMlFSUYJRslTCVRJVklSSV1JQCgsypwAACgtyp1AOUAPwtjoK8qgKJ6ImFjZW5zACclLSU0JTYlSSVwAHAAcgBvAPgAFyV1AHIAbAB5AGUA8QA/C/EAOAuAAWFlcwA8JUElRSXwInByb3gAoLkqcQBxAACgtSppAG0AAKDoImkA7QBEC20AZQDzoDIgIguAAUVhcwBDJVclRSXwAEAlgAFkZnAATwtfJXElgAFhbHMAZSVpJW0l7CFhcgCgLiPpIW5lAKASI/UhcmYAoBMjdKAdIu8AWQvyIWVsAKCwIgABY2l9JYElcgAA4DXYxdzIY24iY3NwAACgCCAAA2Zpb3BzdZElKxuVJZolnyWkJXIAAOA12C7dcABmAADgNdhi3XIiaW1lAACgVyBjAHIAAOA12MbcgAFhZW8AqiW6JcAldAAAAWVpryW2JXIAbgBpAG8AbgDzABkFbgB0AACgFipzAHQAZaA/APEACRj0AG0LgApBQkhhYmNkZWZoaWxtbm9wcnN0dXgA4yXyJfYl+iVpJpAmpia9JtUm5ib4JlonaCdxJ3UnnietJ7EnyCfiJ+cngAFhcnQA6SXsJe4lcgDyAJkM8gD6AuEhaWwAoBwpYQByAPIA3BVhAHIAAKBkKYADY2RlbnFydAAGJhAmEyYYJiYmKyZaJgABZXUKJg0mAOA9IjEDdABlAFVhaQDjACAN7SJwdHl2AKCzKWcAgKHpJ2RlbAAgJiImJCYAoJIpAKClKeUA9wt1AG8AO4C7ALtAcgAApZIhYWJjZmhscHN0dz0mQCZFJkcmSiZMJk4mUSZVJlgmcAAAoHUpZqDlIXMAAKAgKQCgMylzAACgHinrALka8ACVHmwAAKBFKWkAbQAAoHQpbAAAoKMhAKCdIQABYWleJmImaQBsAACgGilvAG6gNiJhAGwA8wB2C4ABYWJyAG8mciZ2JnIA8gAvEnIAawAAoHMnAAFha3omgSZjAAABZWt/JoAmfWBdYAABZXOFJocmAKCMKWwAAAFkdYwmjiYAoI4pAKCQKQACYWV1eZcmmiajJqUm8iFvbllhAAFkaZ4moSZpAGwAV2HsAA8M4gCAJkBkAAJjbHFzrSawJrUmuiZhAACgNylkImhhcgAAoGkpdQBvAPKgHSCjAWgAAKCzIYABYWNnAMMm0iaUC2wAgKEcIWlwcwDLJs4migxuAOUAoAxhAHIA9ADaC3QAAKCtJYABaWxyANsm3ybjJvMhaHQAoH0pbwBvAPIANgwA4DXYL90AAWFv6ib1JnIAAAFkde8m8SYAoMEhbKDAIQCgbCl2oMED8WOAAWducwD+Jk4nUCdoAHQAAANhaGxyc3QKJxInISc1Jz0nRydyInJvdwB0oJIhYQDpAFYmYSNycG9vbgAAAWR1GiceJ28AdwDuAPAmcAAAoMAh5SFmdAABYWgnJy0ncgByAG8AdwDzAAkMYQByAHAAbwBvAG4A8wATBGklZ2h0YXJyb3dzAACgySFxAHUAaQBnAGEAcgByAG8A9wBZJugkcmVldGltZXMAoMwiZwDaYmkAbgBnAGQAbwB0AHMAZQDxABwYgAFhaG0AYCdjJ2YncgDyAAkMYQDyABMEAKAPIG8idXN0AGGgsSPjIWhlAKCxI+0haWQAoO4qAAJhYnB0fCeGJ4knmScAAW5ygCeDJ2cAAKDtJ3IAAKD+IXIA6wAcDIABYWZsAI8nkieVJ3IAAKCGKQDgNdhj3XUAcwAAoC4qaSJtZXMAAKA1KgABYXCiJ6gncgBnoCkAdAAAoJQp7yJsaW50AKASKmEAcgDyADwnAAJhY2hxuCe8J6EMwCfxIXVvAKA6IHIAAOA12MfcAAFidYAmxCdvAPKgGSCoAYABaGlyAM4n0ifWJ3IAZQDlAE0n7SFlcwCgyiJpAIChuSVlZmwAXAxjEt4n9CFyaQCgzinsInVoYXIAoGgpAKAeIWENBSgJKA0oSyhVKIYoAACLKLAoAAAAAOMo5ygAABApJCkxKW0pcSmHKaYpAACYKgAAAACxKmMidXRlAFthcQB1AO8ABR+ApHsiRWFjZWlucHN5ABwoHignKCooLygyKEEoRihJKACgtCrwASMoAAAlKACguCpvAG4AYWF1AOUAgw1koLAqaQBsAF9hcgBjAF1hgAFFYXMAOCg6KD0oAKC2KnAAAKC6KmkAbQAAoOki7yJsaW50AKATKmkA7QCIDUFkbwB0AGKixSKRFgAAAABTKACgZiqAA0FhY21zdHgAYChkKG8ocyh1KHkogihyAHIAAKDYIXIAAAFocmkoayjrAJAab6CYIfcAzAd0ADuApwCnQGkAO2D3IWFyAKApKW0AAAFpbn4ozQBuAHUA8wDOAHQAAKA2J3IA7+A12DDdIxkAAmFjb3mRKJUonSisKHIAcAAAoG8mAAFoeZkonChjAHkASWRIZHIAdABtAqUoAAAAAKgoaQDkAFsPYQByAGEA7ABsJDuArQCtQAABZ22zKLsobQBhAAChwwNmdroouijCY4CjPCJkZWdsbnByAMgozCjPKNMo1yjaKN4obwB0AACgairxoEMiCw5FoJ4qAKCgKkWgnSoAoJ8qZQAAoEYi7CF1cwCgJCrhIXJyAKByKWEAcgDyAPwMAAJhZWl07Sj8KAEpCCkAAWxz8Sj4KGwAcwBlAHQAbQDpAH8oaABwAACgMyrwImFyc2wAoOQpAAFkbFoPBSllAACgIyNloKoqc6CsKgDgrCoA/oABZmxwABUpGCkfKfQhY3lMZGKgLwBhoMQpcgAAoD8jZgAA4DXYZN1hAAABZHIoKRcDZQBzAHWgYCZpAHQAAKBgJoABY3N1ADYpRilhKQABYXU6KUApcABzoJMiAOCTIgD+cABzoJQiAOCUIgD+dQAAAWJwSylWKQChjyJlcz4NUCllAHQAZaCPIvEAPw0AoZAiZXNIDVspZQB0AGWgkCLxAEkNAKGhJWFmZilbBHIAZQFrKVwEAKChJWEAcgDyAAMNAAJjZW10dyl7KX8pgilyAADgNdjI3HQAbQDuAM4AaQDsAAYpYQByAOYAVw0AAWFyiimOKXIA5qAGJhESAAFhbpIpoylpImdodAAAAWVwmSmgKXAAcwBpAGwAbwDuANkXaADpAKAkcwCvYIACYmNtbnAArin8KY4NJSooKgCkgiJFZGVtbnByc7wpvinCKcgpzCnUKdgp3CkAoMUqbwB0AACgvSpkoIYibwB0AACgwyr1IWx0AKDBKgABRWXQKdIpAKDLKgCgiiLsIXVzAKC/KuEhcnIAoHkpgAFlaXUA4inxKfQpdAAAoYIiZW7oKewpcQDxoIYivSllAHEA8aCKItEpbQAAoMcqAAFicPgp+ikAoNUqAKDTKmMAgKJ7ImFjZW5zAAcqDSoUKhYqRihwAHAAcgBvAPgAIyh1AHIAbAB5AGUA8QCDDfEAfA2AAWFlcwAcKiIqPShwAHAAcgBvAPgAPChxAPEAOShnAACgaiYApoMiMTIzRWRlaGxtbnBzPCo/KkIqRSpHKlIqWCpjKmcqaypzKncqO4C5ALlAO4CyALJAO4CzALNAAKDGKgABb3NLKk4qdAAAoL4qdQBiAACg2CpkoIcibwB0AACgxCpzAAABb3VdKmAqbAAAoMknYgAAoNcq4SFycgCgeyn1IWx0AKDCKgABRWVvKnEqAKDMKgCgiyLsIXVzAKDAKoABZWl1AH0qjCqPKnQAAKGDImVugyqHKnEA8aCHIkYqZQBxAPGgiyJwKm0AAKDIKgABYnCTKpUqAKDUKgCg1iqAAUFhbgCdKqEqrCpyAHIAAKDZIXIAAAFocqYqqCrrAJUab6CZIfcAxQf3IWFyAKAqKWwAaQBnADuA3wDfQOELzyrZKtwq6SrsKvEqAAD1KjQrAAAAAAAAAAAAAEwrbCsAAHErvSsAAAAAAADRK3IC1CoAAAAA2CrnIWV0AKAWI8RjcgDrAOUKgAFhZXkA4SrkKucq8iFvbmVh5CFpbGNhQmRvAPQAIg5sInJlYwAAoBUjcgAA4DXYMd0AAmVpa2/7KhIrKCsuK/IBACsAAAkrZQAAATRm6g0EK28AcgDlAOsNYQBzorgDECsAAAAAEit5AG0A0WMAAWNuFislK2sAAAFhcxsrIStwAHAAcgBvAPgAFw5pAG0AAKA8InMA8AD9DQABYXMsKyEr8AAXDnIAbgA7gP4A/kDsATgrOyswG2QA5QBnAmUAcwCAgdcAO2JkAEMrRCtJK9dAYaCgInIAAKAxKgCgMCqAAWVwcwBRK1MraSvhAAkh4qKkIlsrXysAAAAAYytvAHQAAKA2I2kAcgAAoPEqb+A12GXdcgBrAACg2irhAHgociJpbWUAAKA0IIABYWlwAHYreSu3K2QA5QC+DYADYWRlbXBzdACFK6MrmiunK6wrsCuzK24iZ2xlAACitSVkbHFykCuUK5ornCvvIXduAKC/JeUhZnRloMMl8QACBwCgXCJpImdodABloLkl8QBdDG8AdAAAoOwlaSJudXMAAKA6KuwhdXMAoDkqYgAAoM0p6SFtZQCgOyrlInppdW0AoOIjgAFjaHQAwivKK80rAAFyecYrySsA4DXYydxGZGMAeQBbZPIhb2tnYQABaW/UK9creAD0ANERaCJlYWQAAAFsct4r5ytlAGYAdABhAHIAcgBvAPcAXQbpJGdodGFycm93AKCgIQAJQUhhYmNkZmdobG1vcHJzdHV3CiwNLBEsHSwnLDEsQCxLLFIsYix6LIQsjyzLLOgs7Sz/LAotcgDyAAkDYQByAACgYykAAWNyFSwbLHUAdABlADuA+gD6QPIACQ1yAOMBIywAACUseQBeZHYAZQBtYQABaXkrLDAscgBjADuA+wD7QENkgAFhYmgANyw6LD0scgDyANEO7CFhY3FhYQDyAOAOAAFpckQsSCzzIWh0AKB+KQDgNdgy3XIAYQB2AGUAO4D5APlAYQFWLF8scgAAAWxyWixcLACgvyEAoL4hbABrAACggCUAAWN0Zix2LG8CbCwAAAAAcyxyAG4AZaAcI3IAAKAcI28AcAAAoA8jcgBpAACg+CUAAWFsfiyBLGMAcgBrYTuAqACoQAABZ3CILIssbwBuAHNhZgAA4DXYZt0AA2FkaGxzdZksniynLLgsuyzFLHIAcgBvAPcACQ1vAHcAbgBhAHIAcgBvAPcA2A5hI3Jwb29uAAABbHKvLLMsZQBmAPQAWyxpAGcAaAD0AF0sdQDzAKYOaQAAocUDaGzBLMIs0mNvAG4AxWPwI2Fycm93cwCgyCGAAWNpdADRLOEs5CxvAtcsAAAAAN4scgBuAGWgHSNyAACgHSNvAHAAAKAOI24AZwBvYXIAaQAAoPklYwByAADgNdjK3IABZGlyAPMs9yz6LG8AdAAAoPAi7CFkZWlhaQBmoLUlAKC0JQABYW0DLQYtcgDyAMosbAA7gPwA/EDhIm5nbGUAoKcpgAdBQkRhY2RlZmxub3Byc3oAJy0qLTAtNC2bLZ0toS2/LcMtxy3TLdgt3C3gLfwtcgDyABADYQByAHag6CoAoOkqYQBzAOgA/gIAAW5yOC08LechcnQAoJwpgANla25wcnN0AJkpSC1NLVQtXi1iLYItYQBwAHAA4QAaHG8AdABoAGkAbgDnAKEXgAFoaXIAoSmzJFotbwBwAPQAdCVooJUh7wD4JgABaXVmLWotZwBtAOEAuygAAWJwbi14LXMjZXRuZXEAceCKIgD+AODLKgD+cyNldG5lcQBx4IsiAP4A4MwqAP4AAWhyhi2KLWUAdADhABIraSNhbmdsZQAAAWxyki2WLeUhZnQAoLIiaSJnaHQAAKCzInkAMmThIXNoAKCiIoABZWxyAKcttC24LWKiKCKuLQAAAACyLWEAcgAAoLsicQAAoFoi7CFpcACg7iIAAWJ0vC1eD2EA8gBfD3IAAOA12DPddAByAOkAlS1zAHUAAAFicM0t0C0A4IIi0iAA4IMi0iBwAGYAAOA12GfdcgBvAPAAWQt0AHIA6QCaLQABY3XkLegtcgAA4DXYy9wAAWJw7C30LW4AAAFFZXUt8S0A4IoiAP5uAAABRWV/LfktAOCLIgD+6SJnemFnAKCaKYADY2Vmb3BycwANLhAuJS4pLiMuLi40LukhcmN1YQABZGkULiEuAAFiZxguHC5hAHIAAKBfKmUAcaAnIgCgWSLlIXJwAKAYIXIAAOA12DTdcABmAADgNdho3WWgQCJhAHQA6ABqD2MAcgAA4DXYzNzjCuQRUC4AAFQuAABYLmIuAAAAAGMubS5wLnQuAAAAAIguki4AAJouJxIqEnQAcgDpAB0ScgAA4DXYNd0AAUFhWy5eLnIA8gDnAnIA8gCTB75jAAFBYWYuaS5yAPIA4AJyAPIAjAdhAPAAeh5pAHMAAKD7IoABZHB0APgReS6DLgABZmx9LoAuAOA12GnddQDzAP8RaQBtAOUABBIAAUFhiy6OLnIA8gDuAnIA8gCaBwABY3GVLgoScgAA4DXYzdwAAXB0nS6hLmwAdQDzACUScgDpACASAARhY2VmaW9zdbEuvC7ELsguzC7PLtQu2S5jAAABdXm2LrsudABlADuA/QD9QE9kAAFpecAuwy5yAGMAd2FLZG4AO4ClAKVAcgAA4DXYNt1jAHkAV2RwAGYAAOA12GrdYwByAADgNdjO3AABY23dLt8ueQBOZGwAO4D/AP9AAAVhY2RlZmhpb3N38y73Lv8uAi8MLxAvEy8YLx0vIi9jInV0ZQB6YQABYXn7Lv4u8iFvbn5hN2RvAHQAfGEAAWV0Bi8KL3QAcgDmAB8QYQC2Y3IAAOA12DfdYwB5ADZk5yJyYXJyAKDdIXAAZgAA4DXYa91jAHIAAOA12M/cAAFqbiYvKC8AoA0gagAAoAwg")});var VJ;var uD=k(()=>{(function(J){J[J.VALUE_LENGTH=49152]="VALUE_LENGTH",J[J.FLAG13=8192]="FLAG13",J[J.BRANCH_LENGTH=8064]="BRANCH_LENGTH",J[J.JUMP_TABLE=127]="JUMP_TABLE"})(VJ||(VJ={}))});function J9(J){return J>=v1.ZERO&&J<=v1.NINE}function ZT(J){return J>=v1.UPPER_A&&J<=v1.UPPER_F||J>=v1.LOWER_A&&J<=v1.LOWER_F}function XT(J){return J>=v1.UPPER_A&&J<=v1.UPPER_Z||J>=v1.LOWER_A&&J<=v1.LOWER_Z||J9(J)}function GT(J){return J===v1.EQUALS||XT(J)}class z9{constructor(J,z,Y){this.decodeTree=J,this.emitCodePoint=z,this.errors=Y,this.state=ZJ.EntityStart,this.consumed=1,this.result=0,this.treeIndex=0,this.excess=1,this.decodeMode=jY.Strict,this.runConsumed=0}startEntity(J){this.decodeMode=J,this.state=ZJ.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1,this.runConsumed=0}write(J,z){switch(this.state){case ZJ.EntityStart:{if(J.charCodeAt(z)===v1.NUM)return this.state=ZJ.NumericStart,this.consumed+=1,this.stateNumericStart(J,z+1);return this.state=ZJ.NamedEntity,this.stateNamedEntity(J,z)}case ZJ.NumericStart:return this.stateNumericStart(J,z);case ZJ.NumericDecimal:return this.stateNumericDecimal(J,z);case ZJ.NumericHex:return this.stateNumericHex(J,z);case ZJ.NamedEntity:return this.stateNamedEntity(J,z)}}stateNumericStart(J,z){if(z>=J.length)return-1;if((J.charCodeAt(z)|ED)===v1.LOWER_X)return this.state=ZJ.NumericHex,this.consumed+=1,this.stateNumericHex(J,z+1);return this.state=ZJ.NumericDecimal,this.stateNumericDecimal(J,z)}stateNumericHex(J,z){while(z<J.length){let Y=J.charCodeAt(z);if(J9(Y)||ZT(Y)){let Z=Y<=v1.NINE?Y-v1.ZERO:(Y|ED)-v1.LOWER_A+10;this.result=this.result*16+Z,this.consumed++,z++}else return this.emitNumericEntity(Y,3)}return-1}stateNumericDecimal(J,z){while(z<J.length){let Y=J.charCodeAt(z);if(J9(Y))this.result=this.result*10+(Y-v1.ZERO),this.consumed++,z++;else return this.emitNumericEntity(Y,2)}return-1}emitNumericEntity(J,z){var Y;if(this.consumed<=z)return(Y=this.errors)===null||Y===void 0||Y.absenceOfDigitsInNumericCharacterReference(this.consumed),0;if(J===v1.SEMI)this.consumed+=1;else if(this.decodeMode===jY.Strict)return 0;if(this.emitCodePoint(SD(this.result),this.consumed),this.errors){if(J!==v1.SEMI)this.errors.missingSemicolonAfterCharacterReference();this.errors.validateNumericCharacterReference(this.result)}return this.consumed}stateNamedEntity(J,z){let{decodeTree:Y}=this,Z=Y[this.treeIndex],X=(Z&VJ.VALUE_LENGTH)>>14;while(z<J.length){if(X===0&&(Z&VJ.FLAG13)!==0){let Q=(Z&VJ.BRANCH_LENGTH)>>7;if(this.runConsumed===0){let f=Z&VJ.JUMP_TABLE;if(J.charCodeAt(z)!==f)return this.result===0?0:this.emitNotTerminatedNamedEntity();z++,this.excess++,this.runConsumed++}while(this.runConsumed<Q){if(z>=J.length)return-1;let f=this.runConsumed-1,H=Y[this.treeIndex+1+(f>>1)],B=f%2===0?H&255:H>>8&255;if(J.charCodeAt(z)!==B)return this.runConsumed=0,this.result===0?0:this.emitNotTerminatedNamedEntity();z++,this.excess++,this.runConsumed++}this.runConsumed=0,this.treeIndex+=1+(Q>>1),Z=Y[this.treeIndex],X=(Z&VJ.VALUE_LENGTH)>>14}if(z>=J.length)break;let G=J.charCodeAt(z);if(G===v1.SEMI&&X!==0&&(Z&VJ.FLAG13)!==0)return this.emitNamedEntityData(this.treeIndex,X,this.consumed+this.excess);if(this.treeIndex=qT(Y,Z,this.treeIndex+Math.max(1,X),G),this.treeIndex<0)return this.result===0||this.decodeMode===jY.Attribute&&(X===0||GT(G))?0:this.emitNotTerminatedNamedEntity();if(Z=Y[this.treeIndex],X=(Z&VJ.VALUE_LENGTH)>>14,X!==0){if(G===v1.SEMI)return this.emitNamedEntityData(this.treeIndex,X,this.consumed+this.excess);if(this.decodeMode!==jY.Strict&&(Z&VJ.FLAG13)===0)this.result=this.treeIndex,this.consumed+=this.excess,this.excess=0}z++,this.excess++}return-1}emitNotTerminatedNamedEntity(){var J;let{result:z,decodeTree:Y}=this,Z=(Y[z]&VJ.VALUE_LENGTH)>>14;return this.emitNamedEntityData(z,Z,this.consumed),(J=this.errors)===null||J===void 0||J.missingSemicolonAfterCharacterReference(),this.consumed}emitNamedEntityData(J,z,Y){let{decodeTree:Z}=this;if(this.emitCodePoint(z===1?Z[J]&~(VJ.VALUE_LENGTH|VJ.FLAG13):Z[J+1],Y),z===3)this.emitCodePoint(Z[J+2],Y);return Y}end(){var J;switch(this.state){case ZJ.NamedEntity:return this.result!==0&&(this.decodeMode!==jY.Attribute||this.result===this.treeIndex)?this.emitNotTerminatedNamedEntity():0;case ZJ.NumericDecimal:return this.emitNumericEntity(0,2);case ZJ.NumericHex:return this.emitNumericEntity(0,3);case ZJ.NumericStart:return(J=this.errors)===null||J===void 0||J.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case ZJ.EntityStart:return 0}}}function QT(J){let z="",Y=new z9(J,(Z)=>z+=bD(Z));return function(X,G){let Q=0,f=0;while((f=X.indexOf("&",f))>=0){z+=X.slice(Q,f),Y.startEntity(G);let B=Y.write(X,f+1);if(B<0){Q=f+Y.end();break}Q=f+B,f=B===0?Q+1:Q}let H=z+X.slice(Q);return z="",H}}function qT(J,z,Y,Z){let X=(z&VJ.BRANCH_LENGTH)>>7,G=z&VJ.JUMP_TABLE;if(X===0)return G!==0&&Z===G?Y:-1;if(G){let B=Z-G;return B<0||B>=X?-1:J[Y+B]-1}let Q=X+1>>1,f=0,H=X-1;while(f<=H){let B=f+H>>>1,V=B>>1,K=J[Y+V]>>(B&1)*8&255;if(K<Z)f=B+1;else if(K>Z)H=B-1;else return J[Y+Q+B]}return-1}function yZ(J,z=jY.Legacy){return fT(J,z)}var v1,ED=32,ZJ,jY,fT;var wD=k(()=>{ID();xD();uD();(function(J){J[J.NUM=35]="NUM",J[J.SEMI=59]="SEMI",J[J.EQUALS=61]="EQUALS",J[J.ZERO=48]="ZERO",J[J.NINE=57]="NINE",J[J.LOWER_A=97]="LOWER_A",J[J.LOWER_F=102]="LOWER_F",J[J.LOWER_X=120]="LOWER_X",J[J.LOWER_Z=122]="LOWER_Z",J[J.UPPER_A=65]="UPPER_A",J[J.UPPER_F=70]="UPPER_F",J[J.UPPER_Z=90]="UPPER_Z"})(v1||(v1={}));(function(J){J[J.EntityStart=0]="EntityStart",J[J.NumericStart=1]="NumericStart",J[J.NumericDecimal=2]="NumericDecimal",J[J.NumericHex=3]="NumericHex",J[J.NamedEntity=4]="NamedEntity"})(ZJ||(ZJ={}));(function(J){J[J.Legacy=0]="Legacy",J[J.Strict=1]="Strict",J[J.Attribute=2]="Attribute"})(jY||(jY={}));fT=QT(yD)});var PD,hD;var mD=k(()=>{wD();(function(J){J[J.XML=0]="XML",J[J.HTML=1]="HTML"})(PD||(PD={}));(function(J){J[J.UTF8=0]="UTF8",J[J.ASCII=1]="ASCII",J[J.Extensive=2]="Extensive",J[J.Attribute=3]="Attribute",J[J.Text=4]="Text"})(hD||(hD={}))});import{CliRenderer as BT,createCliRenderer as jT,engine as WT}from"@opentui/core";import{createTestRenderer as K$}from"@opentui/core/testing";import{ASCIIFontRenderable as VT,BoxRenderable as KT,CodeRenderable as UT,DiffRenderable as DT,InputRenderable as LT,LineNumberRenderable as MT,MarkdownRenderable as FT,ScrollBoxRenderable as OT,SelectRenderable as AT,TabSelectRenderable as RT,TextareaRenderable as gT,TextAttributes as Y9,TextNodeRenderable as CT,TextRenderable as NT}from"@opentui/core";import{engine as L$,Timeline as M$}from"@opentui/core";import{BaseRenderable as $D,createTextAttributes as bT,InputRenderable as Z9,InputRenderableEvents as fQ,isTextNodeRenderable as Q9,parseColor as cD,Renderable as ST,RootTextNodeRenderable as IT,ScrollBoxRenderable as TT,SelectRenderable as dD,SelectRenderableEvents as X9,TabSelectRenderable as nD,TabSelectRenderableEvents as G9,TextNodeRenderable as yT,TextRenderable as aD}from"@opentui/core";import{BaseRenderable as cT,isTextNodeRenderable as dT,TextNodeRenderable as nT,TextRenderable as iT,Yoga as lD}from"@opentui/core";import{BoxRenderable as S$,RootRenderable as I$}from"@opentui/core";import{TimeToFirstDrawRenderable as _T}from"@opentui/core";import{createSlotRegistry as x$}from"@opentui/core";function uT({createElement:J,createTextNode:z,createSlotNode:Y,isTextNode:Z,replaceText:X,insertNode:G,removeNode:Q,setProperty:f,getParentNode:H,getFirstChild:B,getNextSibling:V}){function j(S,C,M,I){if(M!==void 0&&!I)I=[];if(typeof C!=="function")return K(S,C,I,M);Tz(($)=>K(S,C(),$,M),I)}function K(S,C,M,I,$){while(typeof M==="function")M=M();if(C===M)return M;let i=typeof C,e=I!==void 0;if(i==="string"||i==="number"){if(i==="number")C=C.toString();if(e){let J0=M[0];if(J0&&Z(J0))X(J0,C);else J0=z(C);M=O(S,M,I,J0)}else if(M!==""&&typeof M==="string")X(B(S),M=C);else O(S,M,I,z(C)),M=C}else if(C==null||i==="boolean")M=O(S,M,I);else if(i==="function")return Tz(()=>{let J0=C();while(typeof J0==="function")J0=J0();M=K(S,J0,M,I)}),()=>M;else if(Array.isArray(C)){let J0=[];if(L(J0,C,$))return Tz(()=>M=K(S,J0,M,I,!0)),()=>M;if(J0.length===0){let T=O(S,M,I);if(e)return M=T}else if(Array.isArray(M))if(M.length===0)R(S,J0,I);else A(S,M,J0);else if(M==null||M==="")R(S,J0);else A(S,e&&M||[B(S)],J0);M=J0}else{if(Array.isArray(M)){if(e)return M=O(S,M,I,C);O(S,M,null,C)}else if(M==null||M===""||!B(S))G(S,C);else x(S,C,B(S));M=C}return M}function L(S,C,M){let I=!1;for(let $=0,i=C.length;$<i;$++){let e=C[$],J0;if(e==null||e===!0||e===!1);else if(Array.isArray(e))I=L(S,e)||I;else if((J0=typeof e)==="string"||J0==="number")S.push(z(e));else if(J0==="function")if(M){while(typeof e==="function")e=e();I=L(S,Array.isArray(e)?e:[e])||I}else S.push(e),I=!0;else S.push(e)}return I}function A(S,C,M){let I=M.length,$=C.length,i=I,e=0,J0=0,T=V(C[$-1]),f0=null;while(e<$||J0<i){if(C[e]===M[J0]){e++,J0++;continue}while(C[$-1]===M[i-1])$--,i--;if($===e){let _=i<I?J0?V(M[J0-1]):M[i-J0]:T;while(J0<i)G(S,M[J0++],_)}else if(i===J0)while(e<$){if(!f0||!f0.has(C[e]))Q(S,C[e]);e++}else if(C[e]===M[i-1]&&M[J0]===C[$-1]){let _=V(C[--$]);G(S,M[J0++],V(C[e++])),G(S,M[--i],_),C[$]=M[i]}else{if(!f0){f0=new Map;let W0=J0;while(W0<i)f0.set(M[W0],W0++)}let _=f0.get(C[e]);if(_!=null)if(J0<_&&_<i){let W0=e,R0=1,V0;while(++W0<$&&W0<i){if((V0=f0.get(C[W0]))==null||V0!==_+R0)break;R0++}if(R0>_-J0){let t=C[e];while(J0<_)G(S,M[J0++],t)}else x(S,M[J0++],C[e++])}else e++;else Q(S,C[e++])}}}function O(S,C,M,I){if(M===void 0){let i;while(i=B(S))Q(S,i);return I&&G(S,I),I??""}let $=I||Y();if(C.length){let i=!1;for(let e=C.length-1;e>=0;e--){let J0=C[e];if($!==J0){let T=H(J0)===S;if(!i&&!e)T?x(S,$,J0):G(S,$,M);else T&&Q(S,J0)}else i=!0}}else G(S,$,M);return[$]}function R(S,C,M){for(let I=0,$=C.length;I<$;I++)G(S,C[I],M)}function x(S,C,M){G(S,C,M),Q(S,M)}function a(S,C,M={},I){if(C||(C={}),!I)Tz(()=>M.children=K(S,C.children,M.children));return Tz(()=>C.ref&&C.ref(S)),Tz(()=>{for(let $ in C){if($==="children"||$==="ref")continue;let i=C[$];if(i===M[$])continue;f(S,$,i,M[$]),M[$]=i}}),M}return{render(S,C){let M;return HZ((I)=>{M=I,j(C,S())}),M},insert:j,spread(S,C,M){if(typeof C==="function")Tz((I)=>a(S,C(),I,M));else a(S,C,void 0,M)},createElement:J,createTextNode:z,insertNode:G,setProp(S,C,M,I){return f(S,C,M,I),M},mergeProps:yq,effect:Tz,memo:xT,createComponent:wV,use(S,C,M){return r1(()=>S(C,M))}}}function ET(J){let z=uT(J);return z.mergeProps=yq,z}function j9(J){if(!XH.has(J))XH.set(J,0);let z=XH.get(J)+1;return XH.set(J,z),`${J}-${z}`}function wT(J,z,Y){if(XJ("Inserting node:",e1(z),"into parent:",e1(J),"with anchor:",e1(Y),z instanceof dX),z instanceof HQ)z.parent=J,z=z.getSlotChild(J);if(Y&&Y instanceof HQ)Y=Y.getSlotChild(J);if(Q9(z)){if(!(J instanceof aD)&&!Q9(J))throw Error(`Orphan text error: "${z.toChunks().map((G)=>G.text).join("")}" must have a <text> as a parent: ${J.id} above ${z.id}`)}if(!(J instanceof $D))throw console.error("[INSERT]","Tried to mount a non base renderable"),Error("Tried to mount a non base renderable");if(!Y){J.add(z);return}let Z=q9(J),X=Z.findIndex((G)=>G.id===Y.id);if(X===-1)XJ("[INSERT]","Could not find anchor",e1(J),e1(Y),"[children]",...Z.map((G)=>G.id));J.add(z,X)}function PT(J,z){if(XJ("Removing node:",e1(z),"from parent:",e1(J)),z instanceof HQ)z.parent=null,z=z.getSlotChild(J);J.remove(z.id),process.nextTick(()=>{if(z instanceof $D&&!z.parent){z.destroyRecursively();return}})}function hT(J){XJ("Creating text node:",J);let z=j9("text-node");if(typeof J==="number")J=J.toString();return dX.fromString(yZ(J),{id:z})}function vT(){let J=j9("slot-node");return XJ("Creating slot node",J),new HQ(J)}function iD(J){XJ("Getting parent of node:",e1(J));let z=J.parent??void 0;if(z instanceof IT)z=z.textParent??void 0;let Y=z?.parent?.parent?.parent;if(Y instanceof TT&&Y.content===z)z=Y;return z}function $T(J){Object.assign(eD,J)}function aT(){return eD}var B9,HJ=()=>{let J=wJ(B9);if(!J)throw Error("No renderer found");return J},kT=(J)=>{let z=HJ();zJ(()=>{z.on("resize",J)}),S1(()=>{z.off("resize",J)})},cz=()=>{let J=HJ(),[z,Y]=r({width:J.width,height:J.height});return kT((X,G)=>{Y({width:X,height:G})}),z},xT=(J)=>U0(()=>J()),XH,XJ=(...J)=>{if(process.env.DEBUG)console.log("[Reconciler]",...J)},dX,e1=(J)=>{if(!J)return;return J.id},q9=(J)=>{let z;if(J instanceof aD)z=J.getTextChildren();else z=J.getChildren();return z},mT,y,u0,b,W,E0,D,U,N$,q,_D,dz,W9,pD,rD,HQ,BQ,GH,f9,H9,oD,sD,tD,lT,eD,pT=(J,z)=>{let Y,Z=!1,X=!1,G=!0,Q=!1,f=J.destroy.bind(J),H=()=>{if(X)return;if(!Y){Z=!0;return}X=!0,Y()};J.once("destroy",H),J.destroy=()=>{if(G){Q=!0;return}f()};try{Y=mT(()=>b(B9.Provider,{get value(){return J},get children(){return b(z,{})}}),J.root)}finally{G=!1,J.destroy=f}if(Z)H();if(Q)f()},JL=async(J,z={})=>{let Y=z instanceof BT?z:await jT({...z,onDestroy:()=>{z.onDestroy?.()}});WT.attach(Y),pT(Y,J)};var w=k(()=>{W1();mD();W1();W1();W1();B9=yz();XH=new Map;dX=class dX extends yT{static fromString(J,z={}){let Y=new dX(z);return Y.add(J),Y}};({render:mT,effect:y,memo:u0,createComponent:b,createElement:W,createTextNode:E0,insertNode:D,insert:U,spread:N$,setProp:q,mergeProps:_D,use:dz}=ET({createElement(J){XJ("Creating element:",J);let z=j9(J),Y=wJ(B9);if(!Y)throw Error("No renderer found");let Z=aT();if(!Z[J])throw Error(`[Reconciler] Unknown component type: ${J}`);let X=new Z[J](Y,{id:z});return XJ("Element created with id:",z),X},createTextNode:hT,createSlotNode:vT,replaceText(J,z){if(XJ("Replacing text:",z,"in node:",e1(J)),!(J instanceof dX))return;J.replace(yZ(z),0)},setProperty(J,z,Y,Z){if(z.startsWith("on:")){let X=z.slice(3);if(Y)J.on(X,Y);if(Z)J.off(X,Z);return}if(Q9(J)){if(z==="href"){J.link={url:Y};return}if(z==="style"){J.attributes|=bT(Y),J.fg=Y.fg?cD(Y.fg):J.fg,J.bg=Y.bg?cD(Y.bg):J.bg;return}return}switch(z){case"id":XJ("Id mapped",J.id,"=",Y),J[z]=Y;break;case"focused":if(!(J instanceof ST))return;if(Y)J.focus();else J.blur();break;case"onChange":let X=void 0;if(J instanceof dD)X=X9.SELECTION_CHANGED;else if(J instanceof nD)X=G9.SELECTION_CHANGED;else if(J instanceof Z9)X=fQ.CHANGE;if(!X)break;if(Y)J.on(X,Y);if(Z)J.off(X,Z);break;case"onInput":if(J instanceof Z9){if(Y)J.on(fQ.INPUT,Y);if(Z)J.off(fQ.INPUT,Z)}break;case"onSubmit":if(J instanceof Z9){if(Y)J.on(fQ.ENTER,Y);if(Z)J.off(fQ.ENTER,Z)}else J[z]=Y;break;case"onSelect":if(J instanceof dD){if(Y)J.on(X9.ITEM_SELECTED,Y);if(Z)J.off(X9.ITEM_SELECTED,Z)}else if(J instanceof nD){if(Y)J.on(G9.ITEM_SELECTED,Y);if(Z)J.off(G9.ITEM_SELECTED,Z)}break;case"style":for(let G in Y){let Q=Y[G];if(Z!==void 0&&Q===Z[G])continue;J[G]=Q}break;case"text":case"content":{let G=typeof Y==="string"?Y:Array.isArray(Y)?Y.join(""):`${Y}`;J[z]=yZ(G);break}default:J[z]=Y}},isTextNode(J){return J instanceof dX},insertNode:wT,removeNode:PT,getParentNode:iD,getFirstChild(J){XJ("Getting first child of node:",e1(J));let z=q9(J)[0];if(!z){XJ("No first child found for node:",e1(J));return}return XJ("First child found:",e1(z),"for node:",e1(J)),z},getNextSibling(J){XJ("Getting next sibling of node:",e1(J));let z=iD(J);if(!z){XJ("No parent found for node:",e1(J));return}let Y=q9(z),Z=Y.indexOf(J);if(Z===-1||Z===Y.length-1){XJ("No next sibling found for node:",e1(J));return}let X=Y[Z+1];if(!X){XJ("Next sibling is null for node:",e1(J));return}return XJ("Next sibling found:",e1(X),"for node:",e1(J)),X}}));W9=class W9 extends cT{constructor(J){super({id:J})}add(J,z){throw Error("Can't add children on an Slot renderable")}getChildren(){return[]}remove(J){}insertBefore(J,z){throw Error("Can't add children on an Slot renderable")}getRenderable(J){return}getChildrenCount(){return 0}requestRender(){}findDescendantById(J){return}};pD=class pD extends nT{slotParent;destroyed=!1;constructor(J,z){super({id:J});this._visible=!1,this.slotParent=z}destroy(){if(this.destroyed)return;this.destroyed=!0,this.slotParent?.destroy(),super.destroy()}};rD=class rD extends W9{yogaNode;slotParent;destroyed=!1;constructor(J,z){super(J);this._visible=!1,this.slotParent=z,this.yogaNode=lD.default.Node.create(),this.yogaNode.setDisplay(lD.Display.None)}getLayoutNode(){return this.yogaNode}updateFromLayout(){}updateLayout(){}onRemove(){}destroy(){if(this.destroyed)return;this.destroyed=!0,super.destroy(),this.slotParent?.destroy()}};HQ=class HQ extends W9{layoutNode;textNode;destroyed=!1;constructor(J){super(J);this._visible=!1}getSlotChild(J){if(dT(J)||J instanceof iT){if(!this.textNode)this.textNode=new pD(`slot-text-${this.id}`,this);return this.textNode}if(!this.layoutNode)this.layoutNode=new rD(`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()}};BQ=class BQ extends CT{_ctx;constructor(J,z){super(z);this._ctx=J}};GH=class GH extends BQ{constructor(J,z){super(null,J);if(z==="b"||z==="strong")this.attributes=(this.attributes||0)|Y9.BOLD;else if(z==="i"||z==="em")this.attributes=(this.attributes||0)|Y9.ITALIC;else if(z==="u")this.attributes=(this.attributes||0)|Y9.UNDERLINE}};f9=class f9 extends GH{constructor(J){super(J,"b")}};H9=class H9 extends GH{constructor(J){super(J,"i")}};oD=class oD extends GH{constructor(J){super(J,"u")}};sD=class sD extends BQ{constructor(J,z){super(null,z);this.add()}add(){return super.add(`
|
|
261
|
+
`)}};tD=class tD extends BQ{constructor(J,z){let Y={...z,link:{url:z.href}};super(null,Y)}};lT={box:KT,text:NT,input:LT,select:AT,textarea:gT,ascii_font:VT,tab_select:RT,scrollbox:OT,code:UT,diff:DT,line_number:MT,markdown:FT,span:BQ,strong:f9,b:f9,em:H9,i:H9,u:oD,br:sD,a:tD},eD={...lT};$T({time_to_first_draw:_T})});function WY(J){if(J===void 0)return"undefined";if(J===null)return"null";let z=Array.isArray(J)?"array":typeof J,Y;try{Y=typeof J==="string"?J:JSON.stringify(J)}catch{Y=String(J)}if(Y.length>120)Y=`${Y.slice(0,120)}\u2026`;return`${z}:${Y}`}function rT(J){let z=J?.changes;if(!z||typeof z!=="object"||Array.isArray(z))return null;let Y=new Map;for(let[Z,X]of Object.entries(z)){let G=X;if(typeof G?.added!=="number"||typeof G.deleted!=="number")return null;Y.set(Z,{added:G.added,deleted:G.deleted})}return Y}function oT(J){let z=J;if(typeof z?.theme!=="string")return null;return{theme:z.theme,transparentBackground:z.transparentBackground===!0,focusAccent:typeof z.focusAccent==="string"?z.focusAccent:null,locale:typeof z.locale==="string"?z.locale:"",sortMode:z.sortMode==="recent"?"recent":"default",keysCollapsed:z.keysCollapsed===!0,projectFilter:typeof z.projectFilter==="string"&&z.projectFilter.length>0?z.projectFilter:null}}function sT(J,z){if(J.size!==z.size)return!1;for(let[Y,Z]of J){let X=z.get(Y);if(!X||!mz(Z,X))return!1}return!0}function tT(J){let z=J?.activity;if(!z||typeof z!=="object"||Array.isArray(z))return null;let Y=new Map;for(let[Z,X]of Object.entries(z)){let G=X;if(typeof G?.mtimeMs!=="number"||typeof G.completionAt!=="number")return null;if(G.completionId!==null&&typeof G.completionId!=="string")return null;Y.set(Z,{mtimeMs:G.mtimeMs,completionId:G.completionId,completionAt:G.completionAt})}return Y}function eT(J,z){if(J.size!==z.size)return!1;for(let[Y,Z]of J){let X=z.get(Y);if(!X||X.mtimeMs!==Z.mtimeMs||X.completionId!==Z.completionId||X.completionAt!==Z.completionAt)return!1}return!0}class KJ{client;tasksAcc;setTasks;activeTaskAcc;setActiveTaskSig;updateAcc;setUpdateSig;daemonVersionAcc;setDaemonVersionSig;engineStateAcc;setEngineStateSig;taskJobsAcc;setTaskJobsSig;worktreeChangesAcc;setWorktreeChangesSig;transcriptActivityAcc;setTranscriptActivitySig;uiPrefsAcc;setUiPrefsSig;keybindingsRevAcc;setKeybindingsRevSig;connectionStateAcc;setConnectionState;ensureReachable;role;channels;subscribesTasks;reconnecting=!1;constructor(J,z={}){this.client=J;let[Y,Z]=r([]),[X,G]=r(null),[Q,f]=r(null),[H,B]=r(null),[V,j]=r(new Map),[K,L]=r(new Map),[A,O]=r(null),[R,x]=r(null),[a,S]=r(null),[C,M]=r(null),[I,$]=r("online");this.tasksAcc=Y,this.setTasks=(i)=>Z(()=>i),this.activeTaskAcc=X,this.setActiveTaskSig=(i)=>G(()=>i),this.updateAcc=Q,this.setUpdateSig=(i)=>f(()=>i),this.daemonVersionAcc=H,this.setDaemonVersionSig=(i)=>B(()=>i),this.engineStateAcc=V,this.setEngineStateSig=(i)=>j(()=>i),this.taskJobsAcc=K,this.setTaskJobsSig=(i)=>L(()=>i),this.worktreeChangesAcc=A,this.setWorktreeChangesSig=(i)=>O(()=>i),this.transcriptActivityAcc=R,this.setTranscriptActivitySig=(i)=>x(()=>i),this.uiPrefsAcc=a,this.setUiPrefsSig=(i)=>S(()=>i),this.keybindingsRevAcc=C,this.setKeybindingsRevSig=(i)=>M(()=>i),this.connectionStateAcc=I,this.setConnectionState=(i)=>$(()=>i),this.ensureReachable=z.ensureReachable??EX,this.role=z.role??"pane",this.channels=z.channels,this.subscribesTasks=!z.channels||z.channels.includes("task.snapshot"),this.client.on("*",(i)=>this.handleEvent(i.name,i.payload)),this.client.onLifecycle("close",()=>{if(this.setConnectionState("disconnected"),this.role==="pane")ez("orch","daemon socket closed \u2014 starting non-spawning reconnect loop"),this.reconnectLoop()})}async reconnectLoop(){if(this.reconnecting)return;this.reconnecting=!0;let J=500,z=0;while(!this.client.isDisposed){if(await new Promise((Y)=>setTimeout(Y,J)),this.client.isDisposed)break;z++;try{await this.init(),ez("orch",`reconnected and re-subscribed after ${z} attempt(s) \u2014 task list re-synced`),this.reconnecting=!1;return}catch(Y){if(z===1||z%10===0)t1("orch-reconnect",Y);J=Math.min(J*2,3000)}}this.reconnecting=!1}async init(){let J=await this.client.request("hello",{protocolVersion:$J,minProtocolVersion:FY}),z=typeof J.protocolVersion==="number"?J.protocolVersion:$J,Y=typeof J.minProtocolVersion==="number"?J.minProtocolVersion:z;if(!lQ({localVersion:$J,localMin:FY,remoteVersion:z,remoteMin:Y}))throw Error(`kobe daemon is protocol v${z} (min v${Y}); this client is v${$J} (min v${FY}). Restart the daemon (\`kobe daemon restart\`) or upgrade kobe.`);if(this.setDaemonVersionSig(typeof J.kobeVersion==="string"?J.kobeVersion:null),J.tasks&&this.subscribesTasks)this.setTasks(J.tasks.map(jQ));if(await this.client.subscribe({role:this.role,channels:this.channels}),J.capabilities?.includes("worktree.changes")){if(this.worktreeChangesAcc()===null)this.setWorktreeChangesSig(new Map)}else this.setWorktreeChangesSig(null);if(J.capabilities?.includes("transcript.activity")){if(this.transcriptActivityAcc()===null)this.setTranscriptActivitySig(new Map)}else this.setTranscriptActivitySig(null);this.setConnectionState("online"),ez("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()=>eW(this.daemonVersionAcc()??void 0,p0)}engineStateSignal(){return this.engineStateAcc}taskJobsSignal(){return this.taskJobsAcc}worktreeChangesSignal(){return this.worktreeChangesAcc}transcriptActivitySignal(){return this.transcriptActivityAcc}uiPrefsSignal(){return this.uiPrefsAcc}keybindingsRevSignal(){return this.keybindingsRevAcc}listTasks(){return this.tasksAcc()}getTask(J){return this.tasksAcc().find((z)=>z.id===J)}subscribeTasks(J){try{J(this.listTasks())}catch(Y){console.error("[kobe RemoteOrchestrator] task listener threw on subscribe:",Y)}let z=!0;return HZ((Y)=>{return r0(()=>{let Z=this.tasksAcc();if(z){z=!1;return}try{J(Z)}catch(X){console.error("[kobe RemoteOrchestrator] task listener threw:",X)}}),Y})}async createTask(J){let{modelEffort:z,...Y}=J,Z=await this.client.request("task.create",{...Y,effort:z});return jQ(Z.task)}async ensureMainTask(J){let z=await this.client.request("task.ensureMain",{repo:J});return jQ(z.task)}async ensureWorktree(J){return(await this.client.request("task.ensureWorktree",{taskId:String(J)})).worktreePath}async forgetProject(J){await this.client.request("project.forget",{repo:J})}async setTitle(J,z){await this.client.request("task.rename",{taskId:String(J),title:z})}async setBranch(J,z){await this.client.request("task.setBranch",{taskId:String(J),branch:z})}async setVendor(J,z){await this.client.request("task.setVendor",{taskId:String(J),vendor:z})}async setPinned(J,z){await this.client.request("task.pin",{taskId:String(J),pinned:z})}async moveTask(J,z){await this.client.request("task.move",{taskId:String(J),direction:z<0?"up":"down"})}async setArchived(J,z){await this.client.request("task.archive",{taskId:String(J),archived:z})}async setStatus(J,z){await this.client.request("task.status",{taskId:String(J),status:z})}async deleteTask(J,z){await this.client.request("task.delete",{taskId:String(J),force:z?.force})}async discoverAdoptableWorktrees(J){return(await this.client.request("worktree.discoverAdoptable",{repo:J})).worktrees}async adoptWorktree(J){let z=await this.client.request("worktree.adopt",J);return jQ(z.task)}async setActiveTask(J){await this.client.request("task.setActive",{taskId:J===null?null:String(J)})}handleEvent(J,z){if(J==="task.snapshot"){let Y=z?.tasks;if(Array.isArray(Y))this.setTasks(Y.map(jQ)),this.pruneEngineState(Y),this.pruneTaskJobs(Y);else t1("orch",`dropped task.snapshot event: tasks is not an array (got ${WY(Y)})`);return}if(J==="active-task"){let Y=z?.taskId;this.setActiveTaskSig(typeof Y==="string"?Y:null);return}if(J==="update"){let Y=z?.info;this.setUpdateSig(Y??null);return}if(J==="engine-state"){let Y=z;if(typeof Y?.taskId!=="string"||typeof Y.state!=="string"){t1("orch",`dropped engine-state event: taskId/state must be strings (taskId=${WY(Y?.taskId)}, state=${WY(Y?.state)})`);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(J==="task.jobs"){let Y=z;if(typeof Y?.taskId!=="string"||Y.kind!=="ensureWorktree"){t1("orch",`dropped task.jobs event: expected string taskId + kind "ensureWorktree" (taskId=${WY(Y?.taskId)}, kind=${WY(Y?.kind)})`);return}let Z=this.taskJobsAcc();if(Y.phase==="running"){let X=new Map(Z);X.set(Y.taskId,{kind:Y.kind}),this.setTaskJobsSig(X);return}if((Y.phase==="done"||Y.phase==="error")&&Z.has(Y.taskId)){let X=new Map(Z);X.delete(Y.taskId),this.setTaskJobsSig(X)}return}if(J==="worktree.changes"){let Y=rT(z);if(!Y){t1("orch",`dropped worktree.changes event: malformed changes payload (${WY(z)})`);return}let Z=this.worktreeChangesAcc();if(Z&&sT(Z,Y))return;this.setWorktreeChangesSig(Y);return}if(J==="transcript.activity"){let Y=tT(z);if(!Y){t1("orch",`dropped transcript.activity event: malformed activity payload (${WY(z)})`);return}let Z=this.transcriptActivityAcc();if(Z&&eT(Z,Y))return;this.setTranscriptActivitySig(Y);return}if(J==="ui-prefs"){let Y=oT(z);if(!Y){let Z=z?.theme;t1("orch",`dropped ui-prefs event: theme must be a string (got ${WY(Z)})`);return}this.setUiPrefsSig(Y);return}if(J==="keybindings"){let Y=z;if(typeof Y?.rev!=="number"){t1("orch",`dropped keybindings event: rev must be a number (got ${WY(Y?.rev)})`);return}this.setKeybindingsRevSig(Y.rev);return}}pruneEngineState(J){let z=this.engineStateAcc();if(z.size===0)return;let Y=new Set(J.map((X)=>X.id)),Z=null;for(let X of z.keys()){if(Y.has(X))continue;if(!Z)Z=new Map(z);Z.delete(X)}if(Z)this.setEngineStateSig(Z)}pruneTaskJobs(J){let z=this.taskJobsAcc();if(z.size===0)return;let Y=new Set(J.map((X)=>X.id)),Z=null;for(let X of z.keys()){if(Y.has(X))continue;if(!Z)Z=new Map(z);Z.delete(X)}if(Z)this.setTaskJobsSig(Z)}}function jQ(J){return{id:KG(J.id),title:J.title,repo:J.repo,branch:J.branch,worktreePath:J.worktreePath,kind:J.kind,status:J.status,archived:J.archived,pinned:J.pinned,vendor:J.vendor,prStatus:J.prStatus,modelEffort:J.modelEffort,createdAt:J.createdAt,updatedAt:J.updatedAt}}var iY=k(()=>{YZ();FJ();JZ();W1();yX();rJ();MJ()});function ZL(J){let z=J[Vz];if(!z){if(Object.defineProperty(J,Vz,{value:z=new Proxy(J,Yy)}),!Array.isArray(J)){let Y=Object.keys(J),Z=Object.getOwnPropertyDescriptors(J),X=Object.getPrototypeOf(J),G=X!==null&&J!==null&&typeof J==="object"&&!Array.isArray(J)&&X!==Object.prototype;if(G){let Q=Object.getOwnPropertyDescriptors(X);Y.push(...Object.keys(Q)),Object.assign(Z,Q)}for(let Q=0,f=Y.length;Q<f;Q++){let H=Y[Q];if(G&&H==="constructor")continue;if(Z[H].get)Object.defineProperty(J,H,{configurable:!0,enumerable:Z[H].enumerable,get:Z[H].get.bind(z)})}}}return z}function QH(J){let z;return J!=null&&typeof J==="object"&&(J[Vz]||!(z=Object.getPrototypeOf(J))||z===Object.prototype||Array.isArray(J))}function VQ(J,z=new Set){let Y,Z,X,G;if(Y=J!=null&&J[V9])return Y;if(!QH(J)||z.has(J))return J;if(Array.isArray(J)){if(Object.isFrozen(J))J=J.slice(0);else z.add(J);for(let Q=0,f=J.length;Q<f;Q++)if(X=J[Q],(Z=VQ(X,z))!==X)J[Q]=Z}else{if(Object.isFrozen(J))J=Object.assign({},J);else z.add(J);let Q=Object.keys(J),f=Object.getOwnPropertyDescriptors(J);for(let H=0,B=Q.length;H<B;H++){if(G=Q[H],f[G].get)continue;if(X=J[G],(Z=VQ(X,z))!==X)J[G]=Z}}return J}function qH(J,z){let Y=J[z];if(!Y)Object.defineProperty(J,z,{value:Y=Object.create(null)});return Y}function KQ(J,z,Y){if(J[z])return J[z];let[Z,X]=r(Y,{equals:!1,internal:!0});return Z.$=X,J[z]=Z}function Jy(J,z){let Y=Reflect.getOwnPropertyDescriptor(J,z);if(!Y||Y.get||!Y.configurable||z===Vz||z===nX)return Y;return delete Y.value,delete Y.writable,Y.get=()=>J[Vz][z],Y}function XL(J){Tq()&&KQ(qH(J,nX),YL)()}function zy(J){return XL(J),Reflect.ownKeys(J)}function fH(J,z,Y,Z=!1){if(z==="__proto__"){console.warn('Refusing to set "__proto__" on a store.');return}if(!Z&&J[z]===Y)return;let X=J[z],G=J.length;if(zL.onStoreNodeUpdate&&zL.onStoreNodeUpdate(J,z,Y,X),Y===void 0){if(delete J[z],J[VY]&&J[VY][z]&&X!==void 0)J[VY][z].$()}else if(J[z]=Y,J[VY]&&J[VY][z]&&X===void 0)J[VY][z].$();let Q=qH(J,nX),f;if(f=KQ(Q,z,X))f.$(()=>Y);if(Array.isArray(J)&&J.length!==G){for(let H=J.length;H<G;H++)(f=Q[H])&&f.$();(f=KQ(Q,"length",G))&&f.$(J.length)}(f=Q[YL])&&f.$()}function GL(J,z){let Y=Object.keys(z);for(let Z=0;Z<Y.length;Z+=1){let X=Y[Z];if(QL(X))continue;fH(J,X,z[X])}}function QL(J){return J==="__proto__"||J==="constructor"||J==="prototype"}function Zy(J,z){if(typeof z==="function")z=z(J);if(z=VQ(z),Array.isArray(z)){if(J===z)return;let Y=0,Z=z.length;for(;Y<Z;Y++){let X=z[Y];if(J[Y]!==X)fH(J,Y,X)}fH(J,"length",Z)}else GL(J,z)}function WQ(J,z,Y=[]){let Z,X=J;if(z.length>1){Z=z.shift();let Q=typeof Z,f=Array.isArray(J);if(Q==="string"&&(Z==="__proto__"||z.length>1&&QL(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++)WQ(J,[Z[H]].concat(z),Y);return}else if(f&&Q==="function"){for(let H=0;H<J.length;H++)if(Z(J[H],H))WQ(J,[H].concat(z),Y);return}else if(f&&Q==="object"){let{from:H=0,to:B=J.length-1,by:V=1}=Z;for(let j=H;j<=B;j+=V)WQ(J,[j].concat(z),Y);return}else if(z.length>1){WQ(J[Z],z,[Z].concat(Y));return}X=J[Z],Y=[Z].concat(Y)}let G=z[0];if(typeof G==="function"){if(G=G(X,Y),G===X)return}if(Z===void 0&&G==null)return;if(G=VQ(G),Z===void 0||QH(X)&&QH(G)&&!Array.isArray(G))GL(X,G);else fH(J,Z,G)}function nz(...[J,z]){let Y=VQ(J||{}),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 X=ZL(Y);hV.registerGraph({value:Y,name:z&&z.name});function G(...Q){Iq(()=>{Z&&Q.length===1?Zy(Y,Q[0]):WQ(Y,Q)})}return[X,G]}var V9,nX,VY,YL,zL,Yy,i$;var iX=k(()=>{W1();V9=Symbol("store-raw"),nX=Symbol("store-node"),VY=Symbol("store-has"),YL=Symbol("store-self"),zL={onStoreNodeUpdate:null};Yy={get(J,z,Y){if(z===V9)return J;if(z===Vz)return Y;if(z===kq)return XL(J),Y;let Z=qH(J,nX),X=Z[z],G=X?X():J[z];if(z===nX||z===VY||z==="__proto__")return G;if(!X){let Q=Object.getOwnPropertyDescriptor(J,z);if(Tq()&&(typeof G!=="function"||J.hasOwnProperty(z))&&!(Q&&Q.get))G=KQ(Z,z,G)()}return QH(G)?ZL(G):G},has(J,z){if(z===V9||z===Vz||z===kq||z===nX||z===VY||z==="__proto__")return!0;return Tq()&&KQ(qH(J,VY),z)(),z in J},set(){return console.warn("Cannot mutate a Store directly"),!0},deleteProperty(){return console.warn("Cannot mutate a Store directly"),!0},ownKeys:zy,getOwnPropertyDescriptor:Jy};i$=Symbol("store-root")});function HH(J){let z=yz();return{provider:(Y)=>{let Z=J.init(Y);return b(G0,{get when(){return Z.ready===void 0||Z.ready===!0},get children(){return b(z.Provider,{value:Z,get children(){return Y.children}})}})},use(){let Y=wJ(z);if(!Y)throw Error(`${J.name} context must be used within a context provider`);return Y}}}var K9=k(()=>{w();w();W1()});import{RGBA as xZ}from"@opentui/core";function Gy(){return Object.keys(BJ.themes)}function UQ(J){return Boolean(BJ.themes[J])}function D9(J,z){if(!J)return!1;if(!z||typeof z!=="object"||!z.theme)return!1;return uZ("themes",{...BJ.themes,[J]:z}),!0}function U9(J,z="dark"){let Y=J.defs??{};function Z(H,B=[]){if(typeof H==="string"){if(H==="transparent"||H==="none")return xZ.fromInts(0,0,0,0);if(H.startsWith("#"))return xZ.fromHex(H);if(B.includes(H))return xZ.fromInts(0,0,0);let V=Y[H]??J.theme[H];if(V===void 0)return xZ.fromInts(0,0,0);return Z(V,[...B,H])}return Z(H[z],B)}let X={};for(let[H,B]of Object.entries(J.theme))X[H]=Z(B);let G=X.text??xZ.fromHex("#ffffff"),Q=X.background??xZ.fromHex("#000000");return{...{primary:X.primary??G,secondary:X.secondary??G,accent:X.accent??X.primary??G,error:X.error??G,warning:X.warning??G,success:X.success??G,info:X.info??G,text:G,textMuted:X.textMuted??G,background:Q,backgroundPanel:X.backgroundPanel??Q,backgroundElement:X.backgroundElement??Q,backgroundMenu:X.backgroundMenu??X.backgroundElement??Q,backgroundDialog:X.backgroundDialog??X.backgroundPanel??Q,border:X.border??G,borderActive:X.borderActive??X.border??G,borderSubtle:X.borderSubtle??X.border??G,diffAdded:X.diffAdded??X.success??G,diffRemoved:X.diffRemoved??X.error??G,diffContext:X.diffContext??X.textMuted??G,diffHunkHeader:X.diffHunkHeader??X.textMuted??G,diffAddedBg:X.diffAddedBg??Q,diffRemovedBg:X.diffRemovedBg??Q,selectedListItemText:X.selectedListItemText??Q},...X}}var Xy,EZ,BJ,uZ,i0,qL;var m1=k(()=>{w();W1();iX();K9();aq();_q();pq();rq();oq();sq();tq();Xy={claude:jX,conductor:WX,nord:KX,opencode:UX,dracula:VX,tokyonight:LX,"osaka-jade":DX},EZ=["primary","success","info"],[BJ,uZ]=nz({themes:{...Xy},active:"claude",mode:"dark",transparentBackground:!1,focusAccent:"primary"});({use:i0,provider:qL}=HH({name:"Theme",init:(J)=>{if(J.mode)uZ("mode",J.mode);if(J.theme&&UQ(J.theme))uZ("active",J.theme);let z=HJ(),Y=U0(()=>{let X=BJ.themes[BJ.active];if(X)return U9(X,BJ.mode);let G=BJ.themes.claude??BJ.themes.opencode??Object.values(BJ.themes)[0];if(!G)return U9({theme:{background:"#000000",text:"#ffffff"}},BJ.mode);return U9(G,BJ.mode)}),Z=U0(()=>{let X=Y(),G=X[BJ.focusAccent]??X.primary,Q={...X,focusAccent:G};if(!BJ.transparentBackground)return Q;let f=xZ.fromInts(0,0,0,0);return{...Q,background:f,backgroundPanel:f}});return r0(()=>{z?.setBackgroundColor(Z().background)}),{theme:new Proxy({},{get(X,G){let Q=Z();return Q[G]??Q.text}}),get selected(){return BJ.active},get transparentBackground(){return BJ.transparentBackground},get focusAccent(){return BJ.focusAccent},mode(){return BJ.mode},set(X){if(!UQ(X))return!1;return uZ("active",X),!0},setMode(X){uZ("mode",X)},setTransparentBackground(X){uZ("transparentBackground",X)},setFocusAccent(X){uZ("focusAccent",X)},all(){return Gy()},has(X){return UQ(X)}}}}))});var fL,HL;var BL=k(()=>{fL={cancel:"Cancel",confirm:"Confirm",paneCrash:{title:"This pane crashed",hint:"Reload it from the Tasks pane (the error was logged to client.log)."},rename:{defaultTitle:"Rename task",defaultFieldLabel:"title",footerHint:"enter {submitLabel} \xB7 esc cancel",defaultSubmitLabel:"rename"}},HL={cancel:"\u53D6\u6D88",confirm:"\u786E\u8BA4",paneCrash:{title:"\u6B64\u9762\u677F\u5DF2\u5D29\u6E83",hint:"\u8BF7\u4ECE\u4EFB\u52A1\u9762\u677F\u91CD\u65B0\u52A0\u8F7D\uFF08\u9519\u8BEF\u5DF2\u8BB0\u5F55\u5230 client.log\uFF09\u3002"},rename:{defaultTitle:"\u91CD\u547D\u540D\u4EFB\u52A1",defaultFieldLabel:"\u540D\u79F0",footerHint:"enter {submitLabel} \xB7 esc \u53D6\u6D88",defaultSubmitLabel:"\u91CD\u547D\u540D"}}});var jL,WL;var VL=k(()=>{jL={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"}},WL={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 KL,UL;var DL=k(()=>{KL={title:"kobe \u2014 keybindings",esc:"esc"},UL={title:"kobe \u2014 \u5FEB\u6377\u952E",esc:"esc"}});var LL,ML;var FL=k(()=>{LL={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)"}},ML={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 OL,AL;var RL=k(()=>{OL={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",summaryAll:"Adopted {count} worktree(s)",summaryPartial:"Adopted {done}/{total} worktrees \u2014 the rest failed (see log)",summaryNone:"Couldn't adopt any worktree: {error}"},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"}},AL={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",summaryAll:"\u5DF2\u63A5\u7BA1 {count} \u4E2A worktree",summaryPartial:"\u5DF2\u63A5\u7BA1 {done}/{total} \u4E2A worktree \u2014 \u5176\u4F59\u5931\u8D25\uFF08\u8BE6\u89C1\u65E5\u5FD7\uFF09",summaryNone:"\u6CA1\u6709 worktree \u63A5\u7BA1\u6210\u529F\uFF1A{error}"},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 gL,CL;var NL=k(()=>{gL={badge:{newActivity:"\u25CF new"},preview:{diffVsHead:"diff vs HEAD",file:"file",closeHint:"\xB7 q to close",loading:"loading\u2026"}},CL={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 kL,bL;var SL=k(()=>{kL={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"},bL={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 IL,TL;var yL=k(()=>{IL={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 sends on 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 for a new line \xB7 tab to Send)",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)"}},TL={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 \u5728\u53D1\u9001\u9879\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 \u6362\u884C \xB7 tab \u8DF3\u5230\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 xL,uL;var EL=k(()=>{xL={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}"}},uL={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 wL,PL;var hL=k(()=>{wL={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`"}},PL={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 DQ(J){return typeof J==="string"&&wZ.some((z)=>z.id===J)}var Qy,qy,wZ,lX,$X="en";var aX=k(()=>{BL();VL();DL();FL();RL();NL();SL();yL();EL();hL();Qy={settings:IL,tasks:xL,files:jL,newTask:OL,ops:gL,update:wL,quickTask:kL,help:KL,common:fL,keys:LL},qy={settings:TL,tasks:uL,files:WL,newTask:AL,ops:CL,update:PL,quickTask:bL,help:UL,common:HL,keys:ML},wZ=[{id:"en",label:"English"},{id:"zh",label:"\u4E2D\u6587"}],lX={en:Qy,zh:qy}});function LQ(J){if(lX[J])fy("lang",J)}function M9(){return L9.lang}function vL(J,z){let Y=J;for(let Z of z.split("."))if(Y&&typeof Y==="object"&&Z in Y)Y=Y[Z];else return;return typeof Y==="string"?Y:void 0}function Hy(J,z){if(!z)return J;return J.replace(/\{(\w+)\}/g,(Y,Z)=>(Z in z)?String(z[Z]):Y)}function F(J,z){let Y=L9.lang,Z=vL(lX[Y],J)??vL(lX.en,J)??J;return Hy(Z,z)}function F9(J,z){let Y=L9.lang,Z=(X)=>{return X.keys[J]?.[z]};return Z(lX[Y])??Z(lX.en)??z}var L9,fy;var GJ=k(()=>{iX();aX();aX();[L9,fy]=nz({lang:$X})});function By(J){let z=[],Y=J.name;if(Y)z.push(Y);if(Y==="return")z.push("enter");if(Y==="enter")z.push("return");let Z=[];if(J.ctrl)Z.push("ctrl");if(J.meta)Z.push("cmd");if(J.option)Z.push("alt");if(J.shift&&Y&&Y.length>1)Z.push("shift");if(Z.length===0)return z;let X=`${Z.join("+")}+`;return z.map((G)=>X+G)}function A9(J,z){if(z.defaultPrevented)return!1;if(O9)return!1;let Y=J.slice(),Z=By(z);O9=!0;try{for(let X=Y.length-1;X>=0;X--){let G=Y[X];if(!G)continue;let Q=G.config();if(Q.enabled===!1)continue;let f=Q.bindings.find((H)=>Z.includes(H.key));if(f)return f.cmd(z,f.slot),z.preventDefault(),!0}return!1}finally{O9=!1}}var O9=!1;function Wy(){if(R9)return;let J=HJ();if(!J)throw Error("useBindings: no renderer in scope; call inside a component rendered by @opentui/solid.");R9=J.keyInput,mL=(z)=>{A9(BH,z)},R9.on("keypress",mL)}function D1(J){Wy();let z=jy++,Y={config:J,id:z};r0(()=>{J()}),BH.push(Y),S1(()=>{let Z=BH.findIndex((X)=>X.id===z);if(Z>=0)BH.splice(Z,1)})}var jy=1,BH,R9=null,mL=null;var yJ=k(()=>{w();W1();BH=[]});function jH(){let J=new Set;function z(Z,X){let G=setTimeout(()=>{J.delete(G),Z()},X);return J.add(G),G}function Y(Z){if(J.delete(Z))clearTimeout(Z)}return S1(()=>{for(let Z of J)clearTimeout(Z);J.clear()}),{set:z,clear:Y}}var g9=k(()=>{W1()});import{RGBA as cL}from"@opentui/core";function Uy(J){let z=cz(),Y=i0(),{theme:Z}=Y,X=HJ(),G=!1,Q=()=>{if(J.size==="xlarge")return 140;if(J.size==="large")return 110;if(J.size==="small")return 50;return 80},f=2,H=()=>Math.max(8,z().height-f*2);return(()=>{var B=W("box"),V=W("box");return D(B,V),q(B,"onMouseDown",()=>{G=!!X?.getSelection()}),q(B,"onMouseUp",()=>{if(G){G=!1;return}J.onClose?.()}),q(B,"alignItems","center"),q(B,"justifyContent","center"),q(B,"position","absolute"),q(B,"zIndex",3000),q(B,"left",0),q(B,"top",0),q(V,"onMouseUp",(j)=>{G=!1,j.stopPropagation()}),q(V,"flexShrink",1),q(V,"flexGrow",0),q(V,"paddingTop",1),U(V,()=>J.children),y((j)=>{var K=z().width,L=z().height,A=Y.transparentBackground?Ky:Vy,O=Q(),R=z().width-2,x=H(),a=Z.backgroundDialog;return K!==j.e&&(j.e=q(B,"width",K,j.e)),L!==j.t&&(j.t=q(B,"height",L,j.t)),A!==j.a&&(j.a=q(B,"backgroundColor",A,j.a)),O!==j.o&&(j.o=q(V,"width",O,j.o)),R!==j.i&&(j.i=q(V,"maxWidth",R,j.i)),x!==j.n&&(j.n=q(V,"maxHeight",x,j.n)),a!==j.s&&(j.s=q(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 Dy(){let[J,z]=nz({stack:[],size:"medium"}),Y=HJ(),Z=null,X=jH();function G(){X.set(()=>{if(!Z)return;if(Z.isDestroyed)return;function Q(H){for(let B of H.getChildren()){if(B===Z)return!0;if(Q(B))return!0}return!1}let f=Y?.root;if(!f)return;if(!Q(f))return;Z.focus()},1)}return D1(()=>({enabled:J.stack.length>0&&!Y?.getSelection()?.getSelectedText(),bindings:[{key:"escape",cmd:()=>{if(Y?.getSelection())Y.clearSelection();J.stack.at(-1)?.onClose?.(),z("stack",J.stack.slice(0,-1)),G()}},{key:"ctrl+c",cmd:()=>{if(Y?.getSelection())Y.clearSelection();J.stack.at(-1)?.onClose?.(),z("stack",J.stack.slice(0,-1)),G()}}]})),{clear(){for(let Q of J.stack)Q.onClose?.();Iq(()=>{z("size","medium"),z("stack",[])}),G()},replace(Q,f){if(J.stack.length===0)Z=Y?.currentFocusedRenderable??null,Z?.blur();for(let H of J.stack)H.onClose?.();z("size","medium"),z("stack",[{element:Q,onClose:f}])},push(Q,f){if(J.stack.length===0)Z=Y?.currentFocusedRenderable??null,Z?.blur();z("stack",[...J.stack,{element:Q,onClose:f}])},pop(){if(J.stack.at(-1)?.onClose?.(),z("stack",J.stack.slice(0,-1)),J.stack.length===0)G()},get stack(){return J.stack},get size(){return J.size},setSize(Q){z("size",Q)}}}function nL(J){let z=Dy();return b(dL.Provider,{value:z,get children(){return[u0(()=>J.children),(()=>{var Y=W("box");return q(Y,"position","absolute"),q(Y,"zIndex",3000),U(Y,b(G0,{get when(){return z.stack.length},get children(){return b(Uy,{onClose:()=>z.clear(),get size(){return z.size},get children(){return z.stack.at(-1).element()}})}})),Y})()]}})}function d1(){let J=wJ(dL);if(!J)throw Error("useDialog must be used within a DialogProvider");return J}var Vy,Ky,dL;var nJ=k(()=>{w();w();w();w();w();w();w();w();W1();iX();m1();yJ();g9();Vy=cL.fromInts(0,0,0,128),Ky=cL.fromInts(0,0,0,64);dL=yz()});import{spawnSync as C9}from"child_process";import*as lL from"fs";function iL(J){return`This folder isn't a git repository yet, and a task needs a git branch to work in. To fix it, turn ${J} 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 $L(J){let z=J.trim();if(!z)return"repo path is required";let Y;try{Y=lL.statSync(z)}catch{return`path does not exist: ${z}`}if(!Y.isDirectory())return`not a directory: ${z}`;try{if(C9("git",["rev-parse","--git-dir"],{cwd:z,encoding:"utf-8",timeout:2000,stdio:["ignore","pipe","ignore"]}).status!==0)return iL(z)}catch{return iL(z)}return null}function MQ(J){if(!J)return null;try{let z=C9("git",["rev-parse","--abbrev-ref","HEAD"],{cwd:J,encoding:"utf-8",timeout:2000,stdio:["ignore","pipe","ignore"]});if(z.status!==0)return null;let Y=z.stdout.trim();if(!Y||Y==="HEAD")return null;return Y}catch{return null}}function aL(J){if(!J)return[];try{let z=C9("git",["for-each-ref","--format=%(refname:short)","refs/heads/"],{cwd:J,encoding:"utf-8",timeout:2000});if(z.status!==0)return[];return z.stdout.split(`
|
|
262
|
+
`).map((Y)=>Y.trim()).filter(Boolean).sort((Y,Z)=>{let X=(f)=>f==="main"?0:f==="master"?1:f==="develop"?2:3,G=X(Y),Q=X(Z);if(G!==Q)return G-Q;return Y.localeCompare(Z)})}catch{return[]}}var kz="main";var WH=()=>{};import*as _L from"fs";import*as VH from"os";function UJ(J){if(J==="~")return VH.homedir();if(J.startsWith("~/"))return VH.homedir()+J.slice(1);return J}function N9(J){if(!J)return{base:"",filter:""};let Y=UJ(J==="~"?"~/":J);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 k9(J){if(!J)return[];try{let z=_L.readdirSync(J,{withFileTypes:!0}),Y=[];for(let Z of z)if(Z.isDirectory())Y.push(Z.name);return Y.sort((Z,X)=>Z.localeCompare(X))}catch{return[]}}function b9(J,z){let Y=z.toLowerCase(),X=Y.startsWith(".")?J:J.filter((G)=>!G.startsWith("."));if(!Y)return X;return X.filter((G)=>G.toLowerCase().startsWith(Y))}function FQ(J,z,Y){let Z=z+Y;if(J.startsWith("~")){let X=VH.homedir();if(Z===X)return"~";if(Z.startsWith(`${X}/`))return`~${Z.slice(X.length)}`}return Z}var KH=()=>{};import{spawn as Ly}from"child_process";import*as PZ from"fs";import*as OQ from"path";function pL(J){let z=J.trim().replace(/\/+$/,"");if(!z)return"";let Y=z.lastIndexOf("/"),Z=z.lastIndexOf(":"),X=Math.max(Y,Z);return(X>=0?z.slice(X+1):z).replace(/\.git$/i,"")}function rL(J){let z=J.trim();if(!z)return F("newTask.error.gitUrlRequired");let Y=z.includes("://"),Z=z.includes("@")&&z.includes(":"),X=z.includes("/");if(!Y&&!Z&&!X)return F("newTask.error.gitUrlInvalid",{url:z});return null}function oL(J,z){let Y=z.trim();if(!Y)return F("newTask.error.folderRequired");if(Y.includes("/")||Y.includes("\\"))return F("newTask.error.folderHasSeparator");let Z=J.trim();if(!Z)return F("newTask.error.parentRequired");let X=UJ(Z),G;try{G=PZ.statSync(X)}catch{return F("newTask.error.parentNotFound",{path:X})}if(!G.isDirectory())return F("newTask.error.parentNotDir",{path:X});let Q=OQ.join(X,Y);if(PZ.existsSync(Q))return F("newTask.error.targetExists",{path:Q});return null}function sL(J,z){return OQ.join(UJ(J.trim()),z.trim())}function tL(J,z){let Y=z.trim();if(!Y)return z;let Z=UJ(J.trim());if(!Z)return z;try{if(!PZ.statSync(Z).isDirectory())return z}catch{return z}if(!PZ.existsSync(OQ.join(Z,Y)))return Y;for(let X=2;X<1000;X++){let G=`${Y}-${X}`;if(!PZ.existsSync(OQ.join(Z,G)))return G}return Y}function eL(J,z,Y){return new Promise((Z)=>{let X="";try{let G=Ly("git",["clone","--progress",J,z],{stdio:["ignore","ignore","pipe"]});G.stderr?.setEncoding("utf-8"),G.stderr?.on("data",(Q)=>{if(X+=Q,Y){let f=Q.split(/[\r\n]+/).filter((B)=>B.trim().length>0),H=f[f.length-1];if(H)Y(H)}}),G.on("error",(Q)=>{Z({ok:!1,error:Q.message})}),G.on("close",(Q)=>{if(Q===0){Z({ok:!0,path:z});return}let f=X.split(/[\r\n]+/).filter((H)=>H.trim().length>0).pop()??`git clone exited with ${Q}`;Z({ok:!1,error:f})})}catch(G){Z({ok:!1,error:G instanceof Error?G.message:String(G)})}})}var J3=k(()=>{GJ();KH()});function S9(J){if(J==="existing")return"clone";if(J==="clone")return"adopt";return"existing"}function I9(J){if(J==="existing")return"adopt";if(J==="clone")return"existing";return"clone"}function z3(J,z){let Y=J.trim();if(z.includes(Y))return"saved";if(Y.startsWith("~"))return"browse";if(Y.includes("/"))return"browse";return"saved"}function DJ(J){return J.replace(/[\r\n]+/g,"")}function AQ(J){return!/\S/u.test(J)}function T9(J,z="existing"){if(J==="confirm")return"tabs";if(J==="tabs")return"engine";if(J==="engine")return y9(z);if(z==="clone"){if(J==="cloneUrl")return"cloneParent";if(J==="cloneParent")return"cloneFolder";if(J==="cloneFolder")return"cloneBaseRef";if(J==="cloneBaseRef")return"confirm";return"cloneUrl"}if(z==="adopt")return J==="adoptFilter"?"confirm":"adoptFilter";if(J==="repo")return"baseRef";if(J==="baseRef")return"confirm";return"repo"}function y9(J){if(J==="clone")return"cloneUrl";if(J==="adopt")return"adoptFilter";return"repo"}function Y3(J,z){let Y=z.trim();if(!Y)return J;return J.filter((Z)=>EQ(Y,Z.path))}function Z3(J,z){let Y=new Set,Z=[];for(let X of[J,...z]){let G=X.trim();if(!G||Y.has(G))continue;Y.add(G),Z.push(G)}return Z}function X3(J,z){let Y=z.trim().toLowerCase();if(!Y)return J;return J.filter((Z)=>Z.toLowerCase().includes(Y))}function G3(J,z){let Y=z.trim().toLowerCase();if(!Y)return J;return J.filter((Z)=>Z.toLowerCase().includes(Y))}function RQ(J,z,Y=My){let Z=J.length;if(Z<=Y)return{items:J,start:0,total:Z};let X=Math.floor(Y/2),G=Math.max(0,z-X);if(G+Y>Z)G=Z-Y;return{items:J.slice(G,G+Y),start:G,total:Z}}function iz(J,z){if(z<=0)return 0;return Math.max(0,Math.min(z-1,J))}function Q3(J,z,Y){let Z=z[Y];if(Z)return Z;return J.trim()||kz}var My=8;var x9=k(()=>{vH();WH()});import{TextAttributes as Yz}from"@opentui/core";function q3(J){let z=d1(),{theme:Y}=i0(),[Z,X]=r("existing"),G=()=>{let m=J.availableVendors;return m&&m.length>0?m:l1},Q=(()=>{let m=G(),y0=J.defaultVendor??"claude";return m.includes(y0)?y0:m[0]??"claude"})(),[f,H]=r(Q),[B,V]=r("tabs"),[j,K]=r(J.defaultRepo),[L,A]=r(MQ(UJ(J.defaultRepo.trim()))??kz),[O,R]=r(!1),[x,a]=r(""),[S,C]=r(J.defaultCloneParent?.trim()?J.defaultCloneParent:"~/"),[M,I]=r(""),[$,i]=r(!1),[e,J0]=r(kz),[T,f0]=r(!1),[_,W0]=r(""),R0=U0(()=>Z3(J.defaultRepo,J.savedRepos)),V0=U0(()=>z3(j(),R0())),t=U0(()=>N9(j())),P=U0(()=>k9(t().base)),N=U0(()=>b9(P(),t().filter)),p=U0(()=>X3(R0(),j())),u=U0(()=>V0()==="browse"?N():p()),[d,o]=r(0),Q0=U0(()=>RQ(u(),d())),[g0,P0]=r(!1),N0=U0(()=>aL(UJ(j().trim()))),b0=U0(()=>G3(N0(),L())),[x0,v]=r(0),k0=U0(()=>RQ(b0(),x0())),X0=U0(()=>N9(S())),L0=U0(()=>k9(X0().base)),a0=U0(()=>b9(L0(),X0().filter)),[e0,v0]=r(0),_0=U0(()=>RQ(a0(),e0())),[R1,s]=r(!1),[K0,I0]=r(""),[m0,Q1]=r(0),[w0,q1]=r(new Set),[g1]=Sq(()=>Z()==="adopt"?UJ(j().trim()):null,async(m)=>J.discoverAdoptable?await J.discoverAdoptable(m):[]),z1=U0(()=>Y3(g1()??[],K0())),z0=U0(()=>RQ(z1().map((m)=>m.path),m0())),Z0=U0(()=>{let m=z0();return z1().slice(m.start,m.start+m.items.length)});r0(()=>{z1(),Q1((m)=>iz(m,z1().length))});function j0(m){q1((y0)=>{let Y0=new Set(y0);if(Y0.has(m))Y0.delete(m);else Y0.add(m);return Y0})}function g(){let m=z1()[m0()];if(m)j0(m.path)}r0(()=>{b0(),v(0)}),r0(()=>{let m=UJ(j().trim());if(!m)return;if(O())return;let y0=MQ(m);if(y0)A(y0)}),r0(()=>{u(),o(0)}),r0(()=>{a0(),v0(0)}),r0(()=>{let m=x(),y0=S();if($())return;let Y0=pL(m);I(tL(y0,Y0))});let[q0,T0]=r(null);r0(()=>{j(),x(),S(),M(),K0(),T0(null)});function M0(){let m=UJ(j().trim());if(!m)return;let y0=$L(m);if(y0){T0(y0),V("repo");return}let Y0=L().trim()||kz;J.onSubmit({repo:m,baseRef:Y0,vendor:f()}),z.clear()}async function O0(){if(T())return;let m=rL(x());if(m){T0(m),V("cloneUrl");return}let y0=oL(S(),M());if(y0){T0(y0),V(M().trim()?"cloneParent":"cloneFolder");return}let Y0=sL(S(),M());f0(!0),W0(F("newTask.clone.progressInto",{target:Y0}));let F0=await eL(x().trim(),Y0,(QJ)=>{W0(QJ)});if(f0(!1),!F0.ok){T0(F("newTask.error.cloneFailed",{error:F0.error})),V("cloneUrl");return}let c1=e().trim()||kz,LJ=UJ(S().trim());J.onSubmit({repo:F0.path,baseRef:c1,vendor:f(),cloned:{parentDir:LJ}}),z.clear()}function D0(){let m=z1();if(m.length===0){T0(F("newTask.error.noAdoptable"));return}let y0=w0(),Y0=y0.size>0?m.filter((F0)=>y0.has(F0.path)):m.slice(m0(),m0()+1);if(Y0.length===0)return;J.onSubmit({mode:"adopt",repo:UJ(j().trim()),vendor:f(),adopt:Y0.map((F0)=>({worktreePath:F0.path,branch:F0.branch}))}),z.clear()}function B0(){if(Z()==="clone"){O0();return}if(Z()==="adopt"){D0();return}M0()}function t0(m){if(T())return;if(m===Z())return;X(m),V(y9(m)),T0(null)}function Y1(m){if(T())return;let y0=m===1?S9(Z()):I9(Z());if(y0===Z())return;X(y0),T0(null),V("tabs")}function o0(m){H((y0)=>m===1?LY(G(),y0):mH(G(),y0))}function H1(){if(!j().trim()&&V0()==="saved"){let y0=u()[0];if(y0){K(y0),V("baseRef");return}}if(V0()==="browse"){let Y0=N()[d()],F0=t();if(Y0){K(FQ(j(),F0.base,Y0)),o(0),P0(!0),V("baseRef");return}V("baseRef");return}let m=u()[d()];if(m){K(m),V("baseRef");return}V("baseRef")}function u1(m){let Y0=u()[m];if(!Y0)return;if(V0()==="browse"){let F0=t();K(FQ(j(),F0.base,Y0)),o(m),P0(!0),V("baseRef");return}K(Y0),o(m),V("baseRef")}function S0(){let y0=a0()[e0()],Y0=X0();if(y0){C(FQ(S(),Y0.base,y0)),v0(0),s(!0),V("cloneFolder");return}V("cloneFolder")}function h(m){let Y0=a0()[m];if(!Y0)return;let F0=X0();C(FQ(S(),F0.base,Y0)),v0(m),s(!0),V("cloneFolder")}let A0=()=>{let m=z1();if(m.length===0)return;let y0=m.every((Y0)=>w0().has(Y0.path));q1(y0?new Set:new Set(m.map((Y0)=>Y0.path)))};D1(()=>({bindings:[{key:"tab",cmd:()=>V((m)=>T9(m,Z()))},{key:"ctrl+]",cmd:()=>t0(S9(Z()))},{key:"ctrl+[",cmd:()=>t0(I9(Z()))},{key:"ctrl+e",cmd:()=>H((m)=>LY(G(),m))},{key:"up",cmd:()=>{if(T())return;if(Z()==="existing"&&B()==="repo"){let m=u();if(m.length===0)return;o(iz(d()-1,m.length));return}if(Z()==="existing"&&B()==="baseRef"){let m=b0();if(m.length===0)return;v(iz(x0()-1,m.length));return}if(Z()==="clone"&&B()==="cloneParent"){let m=a0();if(m.length===0)return;v0(iz(e0()-1,m.length));return}if(Z()==="adopt"){let m=z1();if(m.length===0)return;Q1(iz(m0()-1,m.length))}}},{key:"down",cmd:()=>{if(T())return;if(Z()==="existing"&&B()==="repo"){let m=u();if(m.length===0)return;o(iz(d()+1,m.length));return}if(Z()==="existing"&&B()==="baseRef"){let m=b0();if(m.length===0)return;v(iz(x0()+1,m.length));return}if(Z()==="clone"&&B()==="cloneParent"){let m=a0();if(m.length===0)return;v0(iz(e0()+1,m.length));return}if(Z()==="adopt"){let m=z1();if(m.length===0)return;Q1(iz(m0()+1,m.length))}}},...B()==="tabs"||B()==="engine"?[{key:"left",cmd:()=>B()==="tabs"?Y1(-1):o0(-1)},{key:"right",cmd:()=>B()==="tabs"?Y1(1):o0(1)},{key:"return",cmd:()=>V((m)=>T9(m,Z()))}]:[],...Z()==="adopt"?[{key:"ctrl+a",cmd:A0}]:[]]})),D1(()=>({enabled:B()==="confirm"&&!T(),bindings:[{key:"return",cmd:()=>B0()}]}));let j1=(m)=>B()===m?Y.primary:Y.textMuted,F1=(m)=>B()===m?Yz.BOLD|Yz.UNDERLINE:void 0,k1=(m,y0)=>m?y0?Yz.BOLD|Yz.UNDERLINE:Yz.BOLD:void 0;return(()=>{var m=W("box"),y0=W("box"),Y0=W("text"),F0=W("box"),c1=W("box"),LJ=W("text"),QJ=W("box"),iJ=W("box"),lz=W("text"),AJ=W("box"),$z=W("text"),Gz=W("text");return D(m,y0),D(m,F0),D(m,AJ),q(m,"paddingLeft",2),q(m,"paddingRight",2),q(m,"gap",0),D(y0,Y0),q(y0,"flexDirection","row"),U(Y0,()=>F("newTask.title")),D(F0,c1),q(F0,"gap",1),q(F0,"paddingTop",1),q(F0,"paddingBottom",1),U(F0,()=>{let c=()=>B()==="tabs",n=(l)=>l?Y.primary:Y.textMuted;return(()=>{var l=W("box"),E=W("text"),d0=W("text"),h0=W("text");return D(l,E),D(l,d0),D(l,h0),q(l,"flexDirection","row"),q(l,"gap",2),q(E,"onMouseUp",()=>t0("existing")),U(E,(()=>{var C0=u0(()=>Z()==="existing");return()=>C0()?`\u25B8 ${F("newTask.tabs.existing")}`:` ${F("newTask.tabs.existing")}`})()),q(d0,"onMouseUp",()=>t0("clone")),U(d0,(()=>{var C0=u0(()=>Z()==="clone");return()=>C0()?`\u25B8 ${F("newTask.tabs.clone")}`:` ${F("newTask.tabs.clone")}`})()),q(h0,"onMouseUp",()=>t0("adopt")),U(h0,(()=>{var C0=u0(()=>Z()==="adopt");return()=>C0()?`\u25B8 ${F("newTask.tabs.adopt")}`:` ${F("newTask.tabs.adopt")}`})()),y((C0)=>{var n0=n(Z()==="existing"),B1=k1(Z()==="existing",c()),L1=n(Z()==="clone"),jJ=k1(Z()==="clone",c()),Qz=n(Z()==="adopt"),DY=k1(Z()==="adopt",c());return n0!==C0.e&&(C0.e=q(E,"fg",n0,C0.e)),B1!==C0.t&&(C0.t=q(E,"attributes",B1,C0.t)),L1!==C0.a&&(C0.a=q(d0,"fg",L1,C0.a)),jJ!==C0.o&&(C0.o=q(d0,"attributes",jJ,C0.o)),Qz!==C0.i&&(C0.i=q(h0,"fg",Qz,C0.i)),DY!==C0.n&&(C0.n=q(h0,"attributes",DY,C0.n)),C0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),l})()},c1),D(c1,LJ),D(c1,QJ),q(c1,"gap",0),U(LJ,()=>F("newTask.field.engine")),D(QJ,iJ),D(QJ,lz),q(QJ,"flexDirection","row"),q(QJ,"gap",2),U(QJ,b(X1,{get each(){return G()},children:(c)=>{let n=()=>f()===c;return(()=>{var l=W("text");return q(l,"onMouseUp",()=>H(c)),U(l,()=>n()?"\u25B8 ":" ",null),U(l,c,null),y((E)=>{var d0=n()?Y.primary:Y.textMuted,h0=n()?Yz.BOLD:void 0;return d0!==E.e&&(E.e=q(l,"fg",d0,E.e)),h0!==E.t&&(E.t=q(l,"attributes",h0,E.t)),E},{e:void 0,t:void 0}),l})()}}),iJ),q(iJ,"flexGrow",1),U(lz,()=>F("newTask.hint.engineCycle")),U(F0,b(G0,{get when(){return Z()==="existing"},get children(){return[(()=>{var c=W("box"),n=W("text"),l=W("input");return D(c,n),D(c,l),q(c,"gap",0),U(n,()=>F("newTask.field.repo")),q(l,"onInput",(E)=>{P0(!1),K(DJ(E))}),q(l,"onSubmit",()=>{if(!j().trim())return;H1()}),y((E)=>{var d0=j1("repo"),h0=F1("repo"),C0=j(),n0=J.defaultRepo,B1=B()==="repo";return d0!==E.e&&(E.e=q(n,"fg",d0,E.e)),h0!==E.t&&(E.t=q(n,"attributes",h0,E.t)),C0!==E.a&&(E.a=q(l,"value",C0,E.a)),n0!==E.o&&(E.o=q(l,"placeholder",n0,E.o)),B1!==E.i&&(E.i=q(l,"focused",B1,E.i)),E},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),c})(),b(G0,{get when(){return u0(()=>B()==="repo"&&u().length>0)()&&!g0()},get children(){var c=W("box");return q(c,"gap",0),q(c,"paddingLeft",2),U(c,b(G0,{get when(){return Q0().start>0},get children(){var n=W("text");return q(n,"wrapMode","none"),U(n,()=>F("newTask.picker.moreAbove",{count:Q0().start})),y((l)=>q(n,"fg",Y.textMuted,l)),n}}),null),U(c,b(X1,{get each(){return Q0().items},children:(n,l)=>{let E=()=>Q0().start+l(),d0=()=>E()===d(),h0=()=>V0()==="saved"&&n===J.defaultRepo,C0=()=>V0()==="saved"&&j().trim()===n,n0=()=>V0()==="browse"?"/":"",B1=()=>h0()?` ${F("newTask.hint.currentDir")}`:"";return(()=>{var L1=W("text");return q(L1,"wrapMode","none"),q(L1,"onMouseUp",()=>u1(E())),U(L1,()=>d0()?"\u25B8 ":" ",null),U(L1,n,null),U(L1,n0,null),U(L1,B1,null),y((jJ)=>{var Qz=d0()?Y.primary:C0()?Y.accent:Y.textMuted,DY=d0()?Yz.BOLD:void 0;return Qz!==jJ.e&&(jJ.e=q(L1,"fg",Qz,jJ.e)),DY!==jJ.t&&(jJ.t=q(L1,"attributes",DY,jJ.t)),jJ},{e:void 0,t:void 0}),L1})()}}),null),U(c,b(G0,{get when(){return Q0().start+Q0().items.length<Q0().total},get children(){var n=W("text");return q(n,"wrapMode","none"),U(n,()=>F("newTask.picker.moreBelow",{count:Q0().total-Q0().start-Q0().items.length})),y((l)=>q(n,"fg",Y.textMuted,l)),n}}),null),c}}),(()=>{var c=W("box"),n=W("text"),l=W("input");return D(c,n),D(c,l),q(c,"gap",0),U(n,()=>F("newTask.field.fromBranch")),q(l,"placeholder",kz),q(l,"onInput",(E)=>{R(!0),A(DJ(E))}),q(l,"onSubmit",()=>{A(Q3(L(),b0(),x0())),R(!0),M0()}),y((E)=>{var d0=j1("baseRef"),h0=F1("baseRef"),C0=L(),n0=B()==="baseRef";return d0!==E.e&&(E.e=q(n,"fg",d0,E.e)),h0!==E.t&&(E.t=q(n,"attributes",h0,E.t)),C0!==E.a&&(E.a=q(l,"value",C0,E.a)),n0!==E.o&&(E.o=q(l,"focused",n0,E.o)),E},{e:void 0,t:void 0,a:void 0,o:void 0}),c})(),b(G0,{get when(){return u0(()=>B()==="baseRef"&&b0().length===0)()&&q0()==null},get children(){var c=W("box"),n=W("text");return D(c,n),q(c,"gap",0),q(c,"paddingLeft",2),q(c,"paddingBottom",1),q(n,"wrapMode","none"),U(n,(()=>{var l=u0(()=>N0().length===0);return()=>l()?F("newTask.hint.noBranchesFound"):F("newTask.hint.noMatchBranch")})()),y((l)=>q(n,"fg",Y.textMuted,l)),c}}),b(G0,{get when(){return u0(()=>B()==="baseRef")()&&b0().length>0},get children(){var c=W("box");return q(c,"gap",0),q(c,"paddingLeft",2),q(c,"paddingBottom",1),U(c,b(G0,{get when(){return k0().start>0},get children(){var n=W("text");return q(n,"wrapMode","none"),U(n,()=>F("newTask.picker.moreAbove",{count:k0().start})),y((l)=>q(n,"fg",Y.textMuted,l)),n}}),null),U(c,b(X1,{get each(){return k0().items},children:(n,l)=>{let E=()=>k0().start+l(),d0=()=>E()===x0(),h0=()=>L().trim()===n;return(()=>{var C0=W("text");return q(C0,"wrapMode","none"),q(C0,"onMouseUp",()=>{A(n),R(!0),v(E()),V("confirm")}),U(C0,()=>d0()?"\u25B8 ":" ",null),U(C0,n,null),y((n0)=>{var B1=d0()?Y.primary:h0()?Y.accent:Y.textMuted,L1=d0()?Yz.BOLD:void 0;return B1!==n0.e&&(n0.e=q(C0,"fg",B1,n0.e)),L1!==n0.t&&(n0.t=q(C0,"attributes",L1,n0.t)),n0},{e:void 0,t:void 0}),C0})()}}),null),U(c,b(G0,{get when(){return k0().start+k0().items.length<k0().total},get children(){var n=W("text");return q(n,"wrapMode","none"),U(n,()=>F("newTask.picker.moreBelow",{count:k0().total-k0().start-k0().items.length})),y((l)=>q(n,"fg",Y.textMuted,l)),n}}),null),c}})]}}),null),U(F0,b(G0,{get when(){return Z()==="clone"},get children(){return[(()=>{var c=W("box"),n=W("text"),l=W("input");return D(c,n),D(c,l),q(c,"gap",0),U(n,()=>F("newTask.field.gitUrl")),q(l,"placeholder","https://github.com/user/repo.git"),q(l,"onInput",(E)=>a(DJ(E))),q(l,"onSubmit",()=>{if(!x().trim())return;V("cloneParent")}),y((E)=>{var d0=j1("cloneUrl"),h0=F1("cloneUrl"),C0=x(),n0=B()==="cloneUrl";return d0!==E.e&&(E.e=q(n,"fg",d0,E.e)),h0!==E.t&&(E.t=q(n,"attributes",h0,E.t)),C0!==E.a&&(E.a=q(l,"value",C0,E.a)),n0!==E.o&&(E.o=q(l,"focused",n0,E.o)),E},{e:void 0,t:void 0,a:void 0,o:void 0}),c})(),(()=>{var c=W("box"),n=W("text"),l=W("input");return D(c,n),D(c,l),q(c,"gap",0),U(n,()=>F("newTask.field.parentDir")),q(l,"placeholder","~/"),q(l,"onInput",(E)=>{s(!1),C(DJ(E))}),q(l,"onSubmit",()=>S0()),y((E)=>{var d0=j1("cloneParent"),h0=F1("cloneParent"),C0=S(),n0=B()==="cloneParent";return d0!==E.e&&(E.e=q(n,"fg",d0,E.e)),h0!==E.t&&(E.t=q(n,"attributes",h0,E.t)),C0!==E.a&&(E.a=q(l,"value",C0,E.a)),n0!==E.o&&(E.o=q(l,"focused",n0,E.o)),E},{e:void 0,t:void 0,a:void 0,o:void 0}),c})(),b(G0,{get when(){return B()==="cloneParent"},get children(){var c=W("box"),n=W("text");return D(c,n),q(c,"paddingLeft",2),q(n,"wrapMode","none"),U(n,()=>F("newTask.hint.remembered")),y((l)=>q(n,"fg",Y.textMuted,l)),c}}),b(G0,{get when(){return u0(()=>B()==="cloneParent"&&a0().length>0)()&&!R1()},get children(){var c=W("box");return q(c,"gap",0),q(c,"paddingLeft",2),U(c,b(G0,{get when(){return _0().start>0},get children(){var n=W("text");return q(n,"wrapMode","none"),U(n,()=>F("newTask.picker.moreAbove",{count:_0().start})),y((l)=>q(n,"fg",Y.textMuted,l)),n}}),null),U(c,b(X1,{get each(){return _0().items},children:(n,l)=>{let E=()=>_0().start+l(),d0=()=>E()===e0();return(()=>{var h0=W("text"),C0=E0("/");return D(h0,C0),q(h0,"wrapMode","none"),q(h0,"onMouseUp",()=>h(E())),U(h0,()=>d0()?"\u25B8 ":" ",C0),U(h0,n,C0),y((n0)=>{var B1=d0()?Y.primary:Y.textMuted,L1=d0()?Yz.BOLD:void 0;return B1!==n0.e&&(n0.e=q(h0,"fg",B1,n0.e)),L1!==n0.t&&(n0.t=q(h0,"attributes",L1,n0.t)),n0},{e:void 0,t:void 0}),h0})()}}),null),U(c,b(G0,{get when(){return _0().start+_0().items.length<_0().total},get children(){var n=W("text");return q(n,"wrapMode","none"),U(n,()=>F("newTask.picker.moreBelow",{count:_0().total-_0().start-_0().items.length})),y((l)=>q(n,"fg",Y.textMuted,l)),n}}),null),c}}),(()=>{var c=W("box"),n=W("text"),l=W("input");return D(c,n),D(c,l),q(c,"gap",0),U(n,()=>F("newTask.field.folderName")),q(l,"onInput",(E)=>{i(!0),I(DJ(E))}),q(l,"onSubmit",()=>V("cloneBaseRef")),y((E)=>{var d0=j1("cloneFolder"),h0=F1("cloneFolder"),C0=M(),n0=F("newTask.placeholder.folderName"),B1=B()==="cloneFolder";return d0!==E.e&&(E.e=q(n,"fg",d0,E.e)),h0!==E.t&&(E.t=q(n,"attributes",h0,E.t)),C0!==E.a&&(E.a=q(l,"value",C0,E.a)),n0!==E.o&&(E.o=q(l,"placeholder",n0,E.o)),B1!==E.i&&(E.i=q(l,"focused",B1,E.i)),E},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),c})(),(()=>{var c=W("box"),n=W("text"),l=W("input");return D(c,n),D(c,l),q(c,"gap",0),U(n,()=>F("newTask.field.baseBranch")),q(l,"placeholder",kz),q(l,"onInput",(E)=>J0(DJ(E))),q(l,"onSubmit",()=>void O0()),y((E)=>{var d0=j1("cloneBaseRef"),h0=F1("cloneBaseRef"),C0=e(),n0=B()==="cloneBaseRef";return d0!==E.e&&(E.e=q(n,"fg",d0,E.e)),h0!==E.t&&(E.t=q(n,"attributes",h0,E.t)),C0!==E.a&&(E.a=q(l,"value",C0,E.a)),n0!==E.o&&(E.o=q(l,"focused",n0,E.o)),E},{e:void 0,t:void 0,a:void 0,o:void 0}),c})(),b(G0,{get when(){return T()},get children(){var c=W("box"),n=W("text");return D(c,n),q(c,"gap",0),q(c,"paddingLeft",2),q(n,"wrapMode","none"),U(n,()=>_()||F("newTask.clone.progressFallback")),y((l)=>q(n,"fg",Y.textMuted,l)),c}})]}}),null),U(F0,b(G0,{get when(){return Z()==="adopt"},get children(){return[(()=>{var c=W("box"),n=W("text"),l=W("input");return D(c,n),D(c,l),q(c,"gap",0),U(n,()=>F("newTask.field.adoptFilter")),q(l,"onInput",(E)=>I0(DJ(E))),q(l,"onSubmit",()=>g()),y((E)=>{var d0=j1("adoptFilter"),h0=F1("adoptFilter"),C0=K0(),n0=F("newTask.placeholder.adoptFilter"),B1=B()==="adoptFilter";return d0!==E.e&&(E.e=q(n,"fg",d0,E.e)),h0!==E.t&&(E.t=q(n,"attributes",h0,E.t)),C0!==E.a&&(E.a=q(l,"value",C0,E.a)),n0!==E.o&&(E.o=q(l,"placeholder",n0,E.o)),B1!==E.i&&(E.i=q(l,"focused",B1,E.i)),E},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),c})(),(()=>{var c=W("box"),n=W("text");return D(c,n),q(c,"paddingLeft",2),q(n,"wrapMode","none"),U(n,()=>F("newTask.adopt.repoLine",{path:UJ(j().trim())||F("newTask.adopt.repoNone")})),y((l)=>q(n,"fg",Y.textMuted,l)),c})(),b(G0,{get when(){return g1.loading},get children(){var c=W("box"),n=W("text");return D(c,n),q(c,"paddingLeft",2),q(n,"wrapMode","none"),U(n,()=>F("newTask.hint.scanningWorktrees")),y((l)=>q(n,"fg",Y.textMuted,l)),c}}),b(G0,{get when(){return u0(()=>!g1.loading)()&&z1().length===0},get children(){var c=W("box"),n=W("text");return D(c,n),q(c,"paddingLeft",2),q(n,"wrapMode","none"),U(n,(()=>{var l=u0(()=>(g1()??[]).length===0);return()=>l()?F("newTask.adopt.noUnlinked"):F("newTask.adopt.noMatch")})()),y((l)=>q(n,"fg",Y.textMuted,l)),c}}),b(G0,{get when(){return z1().length>0},get children(){var c=W("box"),n=W("text");return D(c,n),q(c,"gap",0),q(c,"paddingLeft",2),U(c,b(G0,{get when(){return z0().start>0},get children(){var l=W("text");return q(l,"wrapMode","none"),U(l,()=>F("newTask.picker.moreAbove",{count:z0().start})),y((E)=>q(l,"fg",Y.textMuted,E)),l}}),n),U(c,b(X1,{get each(){return Z0()},children:(l,E)=>{let d0=()=>z0().start+E(),h0=()=>d0()===m0(),C0=()=>w0().has(l.path),n0=()=>[l.dirty?"dirty":"",l.kobeManaged?"":"external"].filter(Boolean).join(",");return(()=>{var B1=W("text");return q(B1,"wrapMode","none"),q(B1,"onMouseUp",()=>{Q1(d0()),j0(l.path)}),U(B1,()=>h0()?"\u25B8 ":" ",null),U(B1,()=>C0()?"[x] ":"[ ] ",null),U(B1,()=>l.branch,null),U(B1,(()=>{var L1=u0(()=>!!n0());return()=>L1()?` (${n0()})`:""})(),null),y((L1)=>{var jJ=h0()?Y.primary:C0()?Y.accent:Y.textMuted,Qz=h0()?Yz.BOLD:void 0;return jJ!==L1.e&&(L1.e=q(B1,"fg",jJ,L1.e)),Qz!==L1.t&&(L1.t=q(B1,"attributes",Qz,L1.t)),L1},{e:void 0,t:void 0}),B1})()}}),n),U(c,b(G0,{get when(){return z0().start+z0().items.length<z0().total},get children(){var l=W("text");return q(l,"wrapMode","none"),U(l,()=>F("newTask.picker.moreBelow",{count:z0().total-z0().start-z0().items.length})),y((E)=>q(l,"fg",Y.textMuted,E)),l}}),n),q(n,"wrapMode","none"),U(n,(()=>{var l=u0(()=>w0().size>0);return()=>l()?F("newTask.adopt.hintSelected",{count:w0().size}):F("newTask.adopt.hintDefault")})()),y((l)=>q(n,"fg",Y.textMuted,l)),c}})]}}),null),U(F0,b(G0,{get when(){return q0()},get children(){var c=W("text"),n=E0("\u203B ");return D(c,n),q(c,"wrapMode","word"),U(c,q0,null),y((l)=>q(c,"fg",Y.error,l)),c}}),null),D(AJ,$z),D(AJ,Gz),q(AJ,"flexDirection","row"),q(AJ,"justifyContent","space-between"),q(AJ,"alignItems","center"),q(AJ,"paddingTop",1),q(AJ,"paddingBottom",1),U($z,()=>F("newTask.hint.legend")),q(Gz,"onMouseUp",()=>B0()),U(Gz,(()=>{var c=u0(()=>!!T());return()=>c()?F("newTask.button.cloning"):u0(()=>B()==="confirm")()?F("newTask.button.createFocused"):F("newTask.button.create")})()),y((c)=>{var n=Yz.BOLD,l=Y.text,E=j1("engine"),d0=F1("engine"),h0=Y.textMuted,C0=Y.textMuted,n0=B()==="confirm"?Y.primary:Y.text,B1=B()==="confirm"?Yz.BOLD:void 0;return n!==c.e&&(c.e=q(Y0,"attributes",n,c.e)),l!==c.t&&(c.t=q(Y0,"fg",l,c.t)),E!==c.a&&(c.a=q(LJ,"fg",E,c.a)),d0!==c.o&&(c.o=q(LJ,"attributes",d0,c.o)),h0!==c.i&&(c.i=q(lz,"fg",h0,c.i)),C0!==c.n&&(c.n=q($z,"fg",C0,c.n)),n0!==c.s&&(c.s=q(Gz,"fg",n0,c.s)),B1!==c.h&&(c.h=q(Gz,"attributes",B1,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}),m})()}var f3=k(()=>{w();w();w();w();w();w();w();w();GJ();$1();W1();m1();WH();yJ();KH();nJ();J3();x9()});function Fy(J,z,Y,Z){return new Promise((X)=>{J.replace(()=>b(q3,{defaultRepo:z,savedRepos:Y,get defaultCloneParent(){return Z?.defaultCloneParent},get defaultVendor(){return Z?.defaultVendor},get availableVendors(){return Z?.availableVendors},get discoverAdoptable(){return Z?.discoverAdoptable},onSubmit:(G)=>X(G),onCancel:()=>X(void 0)}),()=>X(void 0)),J.setSize("medium")})}var UH;var _X=k(()=>{w();f3();x9();UH={show:Fy}});function H3(J,z){return[{key:"tab",cmd:()=>z.cycleField(1)},{key:"shift+tab",cmd:()=>z.cycleField(-1)},{key:"ctrl+e",cmd:()=>z.stepEngine(1)},...J==="engine"?[{key:"left",cmd:()=>z.stepEngine(-1)},{key:"right",cmd:()=>z.stepEngine(1)},{key:"return",cmd:()=>z.commit()}]:[]]}import{TextAttributes as B3}from"@opentui/core";function Oy(J){let z=d1(),{theme:Y}=i0(),[Z,X]=r("prompt"),[G,Q]=r(""),[f,H]=r(J.defaultVendor),[B,V]=r(J.defaultBaseRef);function j(O){let R=DH.indexOf(Z());X(DH[(R+O+DH.length)%DH.length]??"prompt")}function K(O){let R=J.engines;if(R.length===0)return;if(O>0){H((a)=>LY(R,a));return}let x=Math.max(0,R.indexOf(f()));H(R[(x-1+R.length)%R.length]??f())}function L(){if(AQ(G())){X("prompt");return}J.onSubmit({prompt:G().trim(),vendor:f(),baseRef:B().trim()||J.defaultBaseRef}),z.clear()}D1(()=>({enabled:!0,bindings:H3(Z(),{cycleField:j,stepEngine:K,commit:L})}));let A=(O)=>Z()===O?Y.accent:Y.textMuted;return(()=>{var O=W("box"),R=W("box"),x=W("text"),a=W("text"),S=W("box"),C=W("text"),M=W("input"),I=W("box"),$=W("text"),i=W("box"),e=W("text"),J0=W("input"),T=W("box"),f0=W("text");return D(O,R),D(O,S),D(O,I),D(O,i),D(O,T),q(O,"paddingLeft",2),q(O,"paddingRight",2),q(O,"gap",1),D(R,x),D(R,a),q(R,"flexDirection","row"),q(R,"justifyContent","space-between"),U(x,()=>F("quickTask.title",{repoLabel:J.repoLabel})),q(a,"onMouseUp",()=>J.onCancel()),U(a,()=>F("quickTask.esc")),D(S,C),D(S,M),q(S,"gap",0),U(C,()=>F("quickTask.promptLabel")),q(M,"onInput",(_)=>Q(DJ(_))),q(M,"onSubmit",()=>L()),D(I,$),q(I,"flexDirection","row"),q(I,"gap",2),U($,()=>F("quickTask.engineLabel")),U(I,b(X1,{get each(){return J.engines},children:(_)=>(()=>{var W0=W("text");return q(W0,"onMouseUp",()=>{H(_),X("engine")}),U(W0,()=>J.engineLabel(_)),y((R0)=>{var V0=f()===_?Y.primary:Y.textMuted,t=f()===_?B3.BOLD:void 0;return V0!==R0.e&&(R0.e=q(W0,"fg",V0,R0.e)),t!==R0.t&&(R0.t=q(W0,"attributes",t,R0.t)),R0},{e:void 0,t:void 0}),W0})()}),null),D(i,e),D(i,J0),q(i,"gap",0),U(e,()=>F("quickTask.branchLabel")),q(J0,"onInput",(_)=>V(DJ(_))),q(J0,"onSubmit",()=>L()),D(T,f0),q(T,"paddingBottom",1),U(f0,()=>F("quickTask.legend")),y((_)=>{var W0=B3.BOLD,R0=Y.text,V0=Y.textMuted,t=A("prompt"),P=G(),N=F("quickTask.promptPlaceholder"),p=Z()==="prompt",u=A("engine"),d=A("branch"),o=B(),Q0=J.defaultBaseRef,g0=Z()==="branch",P0=Y.textMuted;return W0!==_.e&&(_.e=q(x,"attributes",W0,_.e)),R0!==_.t&&(_.t=q(x,"fg",R0,_.t)),V0!==_.a&&(_.a=q(a,"fg",V0,_.a)),t!==_.o&&(_.o=q(C,"fg",t,_.o)),P!==_.i&&(_.i=q(M,"value",P,_.i)),N!==_.n&&(_.n=q(M,"placeholder",N,_.n)),p!==_.s&&(_.s=q(M,"focused",p,_.s)),u!==_.h&&(_.h=q($,"fg",u,_.h)),d!==_.r&&(_.r=q(e,"fg",d,_.r)),o!==_.d&&(_.d=q(J0,"value",o,_.d)),Q0!==_.l&&(_.l=q(J0,"placeholder",Q0,_.l)),g0!==_.u&&(_.u=q(J0,"focused",g0,_.u)),P0!==_.c&&(_.c=q(f0,"fg",P0,_.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,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0}),O})()}function Ay(J,z){return new Promise((Y)=>{J.replace(()=>b(Oy,_D(z,{onSubmit:(Z)=>Y(Z),onCancel:()=>Y(void 0)})),()=>Y(void 0)),J.setSize("medium")})}var DH,j3;var W3=k(()=>{w();w();w();w();w();w();w();W1();$1();m1();GJ();yJ();nJ();_X();DH=["prompt","engine","branch"];j3={show:Ay}});async function LH(J={}){let z=J.logTag??"orch-connect",Y=J.connect??zz,Z=null;try{let X=await Y();if(!X)return ez(z,"no daemon running \u2014 caller degrades"),null;return Z=new KJ(X,{...J.orchestratorOptions,channels:J.channels}),await Z.init(),Z}catch(X){return t1(z,X),Z?.dispose(),null}}var u9=k(()=>{YZ();FJ();iY()});function V3(J){let[z,Y]=r(J.initial??"sidebar"),[Z,X]=r(0),G=HJ();function Q(j){if(X((L)=>L+1),z()===j)return;let K=G?.currentFocusedRenderable;if(K&&!K.isDestroyed)try{K.blur()}catch{}Y(j)}function f(j){let L=(MH.indexOf(z())+j+MH.length)%MH.length;Q(MH[L])}let H=new Map;function B(j){let K=H.get(j);if(!K)K=()=>z()===j,H.set(j,K);return K}let V={focused:z,is:B,setFocused:Q,cycle:f,refocusTick:Z};return b(Ry.Provider,{value:V,get children(){return J.children}})}var MH,Ry;var K3=k(()=>{w();w();W1();MH=["sidebar","workspace","files","terminal"],Ry=yz(null)});function U3(){for(let J of lY){let z=gy.get(J.id);if(!z)continue;let Y=J;Y.keys=[...z.keys],Y.hint=z.hint?{...z.hint}:void 0}}function D3(){Cy((J)=>J+1)}function w9(J){return Ny.get(J)}function ky(J){return w9(J)?.keys??[]}function $Y(J){let z=[];for(let Y in J){let Z=J[Y];if(!Z)continue;let X=ky(Y);if(X.length===0){console.warn(`[kobe/keybindings] bindByIds: id="${Y}" has no chords (or doesn't exist in KobeKeymap)`);continue}X.forEach((G,Q)=>z.push({key:G,cmd:Z,slot:Q}))}return z}var lY,gy,E9,Cy,Ny;var pX=k(()=>{W1();lY=[{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"}}],gy=new Map(lY.map((J)=>[J.id,{keys:[...J.keys],hint:J.hint?{...J.hint}:void 0}]));[E9,Cy]=r(0);Ny=new Map(lY.map((J)=>[J.id,J]))});function FH(){if(aY)return aY;let J=mq();if(!J.exists)return aY={path:J.path,exists:!1,applied:[],warnings:[]},aY;let z=[...J.warnings],Y=dq(J.doc,process.platform,{chordOptsFor:BB});z.push(...Y.warnings);let Z=Y.entries.filter((f)=>f.id.startsWith("tmux.")),X=Y.entries.filter((f)=>!f.id.startsWith("tmux.")),G=B5(lY,X);z.push(...G.warnings);let Q=[...G.applied];if(Z.length>0){let f=HB(Z);z.push(...f.warnings);for(let H of f.overridden){if(H===uz){Q.push({id:H,keys:f.focus.map((j)=>j?.chord??"").filter((j)=>j!==""),defaultKeys:SY});continue}let B=f.binds[H];Q.push({id:H,keys:B?[B.chord]:[],defaultKeys:[MZ[H]]});let V=lY.find((j)=>j.id===H);if(V?.hint)V.hint.keys=B?`${fX(H)?"prefix ":""}${B.chord}`:"\u2014"}}for(let f of z)console.warn(`[kobe/keybindings] ${f}`);return aY={path:J.path,exists:!0,applied:Q,warnings:z},aY}function L3(){return aY??FH()}function M3(){aY=null,H5(),K5(),U3();let J=FH();return D3(),J}var aY=null;var P9=k(()=>{qB();lq();nq();pX()});var by=250,rX,F3;var gQ=k(()=>{iX();eY();K9();({use:rX,provider:F3}=HH({name:"KV",init:()=>{let[J,z]=nz(RJ()),Y=new Set,Z=null;function X(f){if(Y.size===0)return!0;try{let H={};for(let B of Y)H[B]=J[B];return MY(H),Y.clear(),!0}catch(H){return console.error(`[kobe] kv ${f} failed:`,H),!1}}function G(){if(Z)clearTimeout(Z);Z=setTimeout(()=>{Z=null,X("write")},by)}let Q={get ready(){return!0},get store(){return J},signal(f,H){if(J[f]===void 0)z(f,H);return[()=>Q.get(f),(B)=>Q.set(f,B)]},get(f,H){return J[f]??H},set(f,H){z(f,H),Y.add(f),G()},flush(){if(Z)clearTimeout(Z),Z=null;return X("flush")},clear(){for(let f of Object.keys(J))z(f,void 0);if(Z)clearTimeout(Z),Z=null;Y.clear();try{lW({})}catch(f){console.error("[kobe] kv clear write failed:",f)}}};return Q}}))});var OH="../pulse-n3cq1btw.wav";var O3=()=>{};import{existsSync as Iy,mkdirSync as Ty}from"fs";import{tmpdir as yy}from"os";import{basename as xy,isAbsolute as uy,join as h9,resolve as Ey}from"path";function Py(J,z,Y){if(J==="ffplay")return[J,"-autoexit","-nodisp","-af",`volume=${Y}`,z];if(J==="mpv")return[J,"--no-video","--audio-display=no","--volume",String(Math.round(Y*100)),z];if(J==="mpg123"||J==="mpg321")return[J,"-g",String(Math.round(Y*100)),z];if(J==="mplayer")return[J,"-vo","null","-volume",String(Math.round(Y*100)),z];if(J==="afplay"||J==="omxplayer"||J==="aplay"||J==="cmdmp3")return[J,z];if(J==="play")return[J,"-v",String(Y),z];if(J==="cvlc")return[J,`--gain=${Y}`,"--play-and-exit",z];return[J,"-c",`(New-Object Media.SoundPlayer '${z.replace(/'/g,"''")}').PlaySync()`]}function hy(){if(AH!==void 0)return AH;let z=(process.env.PATH??"").split(":").filter(Boolean);return AH=wy.find((Y)=>z.some((Z)=>Iy(h9(Z,Y))))??null,AH}async function vy(){return g3??=(async()=>{Ty(R3,{recursive:!0});let J=h9(R3,xy(A3)),z=Bun.file(J);if(await z.exists())return J;return await Bun.write(z,Bun.file(A3)),J})(),g3}function C3(J=0.4){let z=hy();if(!z)return;vy().then((Y)=>{try{Bun.spawn(Py(z,Y,J),{stdin:"ignore",stdout:"ignore",stderr:"ignore"}).unref?.()}catch{}}).catch(()=>{return})}var A3,R3,wy,AH,g3;var N3=k(()=>{O3();A3=uy(OH)?OH:Ey(import.meta.dir,OH),R3=h9(yy(),"kobe-sfx"),wy=["ffplay","mpv","mpg123","mpg321","mplayer","afplay","play","omxplayer","aplay","cmdmp3","cvlc","powershell.exe"]});function k3(J,z){return`${J}:${z}`}function S3(J){let z=rX(),[Y,Z]=r([]),[X,G]=r(new Map),Q=jH(),f=0;function H(K){if(G((L)=>{let A=new Map(L),O=k3(K.taskId,K.tabId),R=L.get(O);if(R==="needs_input"||R==="error")return L;return A.set(O,K.kind),A}),z.get("notifications.sound.enabled",!0)!==!1){try{process.stdout.write("\x07")}catch{}C3()}if(z.get("notifications.toast.enabled",!0)!==!1){let L=++f,A={id:L,kind:K.kind,taskId:K.taskId,tabId:K.tabId,title:K.title};Z((O)=>[...O,A]),Q.set(()=>B(L),my)}}function B(K){Z((L)=>L.filter((A)=>A.id!==K))}function V(K,L){G((A)=>{let O=k3(K,L);if(!A.has(O))return A;let R=new Map(A);return R.delete(O),R})}let j={toasts:Y,unread:X,notify:H,dismiss:B,markRead:V};return b(b3.Provider,{value:j,get children(){return J.children}})}function RH(){let J=wJ(b3);if(!J)throw Error("useNotifications must be used within a NotificationsProvider");return J}var my=4500,b3;var gH=k(()=>{w();W1();g9();N3();gQ();b3=yz()});function v9(J,z){if(typeof z.theme==="string"&&z.theme.length>0&&z.theme!==J.selectedTheme()){if(!J.hasTheme(z.theme))J.reloadUserThemes();if(J.hasTheme(z.theme))J.setTheme(z.theme)}if(typeof z.transparentBackground==="boolean"&&z.transparentBackground!==J.transparentBackground())J.setTransparentBackground(z.transparentBackground);if(z.focusAccent===null||typeof z.focusAccent==="string"){let Y=dy(z.focusAccent);if(Y&&Y!==J.focusAccent())J.setFocusAccent(Y)}}function dy(J){if(J===null)return"primary";return cy.includes(J)?J:null}var cy;var I3=k(()=>{cy=["primary","success","info"]});import{readFileSync as ny}from"fs";function T3(J){try{let z=JSON.parse(ny(lJ(),"utf8")),Y=typeof z.activeTheme==="string"&&UQ(z.activeTheme)?z.activeTheme:J,Z=z.transparentBackground===!0,X=typeof z.focusAccent==="string"&&EZ.includes(z.focusAccent)?z.focusAccent:null,G=DQ(z[CH])?z[CH]:$X;return{theme:Y,transparent:Z,focusAccent:X,locale:G}}catch{return{theme:J,transparent:!1,focusAccent:null,locale:$X}}}var CH="locale";var m9=k(()=>{o1();m1();aX()});function ly(J){if(J)_Q(J);f7(),FH();for(let{name:z,theme:Y}of IG())D9(z,Y)}function $y(J){let z={backgroundColor:"transparent",externalOutputMode:"passthrough",exitOnCtrlC:!1,screenMode:"alternate-screen",useKittyKeyboard:{}};return J?{...z,onDestroy:J}:z}function ay(J){let z=()=>J.children,Y=()=>J.notifications?b(S3,{get children(){return z()}}):z(),Z=()=>b(nL,{get children(){return Y()}}),X=()=>J.focus?b(V3,{initial:"sidebar",get children(){return Z()}}):Z(),G=()=>J.kv?b(F3,{get children(){return X()}}):X();return b(qL,{mode:"dark",get theme(){return J.theme},get children(){return G()}})}function _y(J){let{theme:z}=i0();return zJ(()=>t1("pane-crash",J.error)),(()=>{var Y=W("box"),Z=W("text"),X=W("text");return D(Y,Z),D(Y,X),q(Y,"flexDirection","column"),q(Y,"flexGrow",1),q(Y,"paddingLeft",1),q(Y,"paddingTop",1),q(Y,"gap",1),U(Z,()=>F("common.paneCrash.title")),U(X,()=>F("common.paneCrash.hint")),y((G)=>{var{background:Q,error:f,textMuted:H}=z;return Q!==G.e&&(G.e=q(Y,"backgroundColor",Q,G.e)),f!==G.t&&(G.t=q(Z,"fg",f,G.t)),H!==G.a&&(G.a=q(X,"fg",H,G.a)),G},{e:void 0,t:void 0,a:void 0}),Y})()}function py(J){let z=i0(),Y={selectedTheme:()=>z.selected,hasTheme:(f)=>z.has(f),setTheme:(f)=>z.set(f),reloadUserThemes:()=>{for(let{name:f,theme:H}of IG())D9(f,H)},transparentBackground:()=>z.transparentBackground,setTransparentBackground:(f)=>z.setTransparentBackground(f),focusAccent:()=>z.focusAccent,setFocusAccent:(f)=>z.setFocusAccent(f)};v9(Y,{theme:J.boot.theme,transparentBackground:J.boot.transparent,focusAccent:J.boot.focusAccent}),LQ(J.boot.locale);let[Z,X]=r(null),G=!1;zJ(()=>{(async()=>{let f=await LH({logTag:"ui-prefs",channels:["ui-prefs","keybindings"]});if(!f)return;if(G){f.dispose();return}X(f)})()}),r0(()=>{let f=Z()?.uiPrefsSignal()();if(!f)return;if(v9(Y,f),DQ(f.locale))LQ(f.locale)});let Q=null;return r0(()=>{let f=Z()?.keybindingsRevSignal()();if(f==null)return;if(Q===null||f===Q){Q=f;return}Q=f,M3()}),S1(()=>{G=!0,Z()?.dispose()}),null}async function OJ(J){ly(J.logContext);let z=T3(iy),Y=await J.setup(z),Z=J.providers?.kv??!0,X=J.providers?.focus??!0,G=J.providers?.notifications??!1;await JL(()=>b(ay,{get theme(){return z.theme},kv:Z,focus:X,notifications:G,get children(){return[b(py,{boot:z}),b(PV,{fallback:(Q)=>b(_y,{error:Q}),get children(){return Y.root()}})]}}),$y(Y.onDestroy))}var iy="claude";var _Y=k(()=>{w();w();w();w();w();w();w();YZ();W1();u9();K3();P9();gQ();gH();m1();zf();GJ();nJ();I3();m9()});async function c9(J,z,Y,Z,X={}){let G=N1(z.id);if(await V1(G))return!0;let Q=z.worktreePath;if(!Q||!ZX(Q)){if(!J)throw new hZ("no-daemon",`no daemon; cannot materialise worktree for ${z.id}`);try{Q=await J.ensureWorktree(z.id)}catch(j){throw new hZ("worktree",`ensureWorktree failed for ${z.id}`,j)}await X.reload?.()}if(!Q||!ZX(Q))throw new hZ("worktree",`task ${z.id} has no usable worktree`);let{ensureSession:f}=await Promise.resolve().then(() => (YJ(),vJ)),{resolveEngineLaunchInit:H}=await Promise.resolve().then(() => (SX(),Pf)),B=Y?H(Y,Q,{kind:X.includeInitPrompt?"repo-init":"none"}):void 0;if(!await f({name:G,cwd:Q,command:oJ(Z),taskId:z.id,vendor:Z,repo:Y,launchInit:B}))throw new hZ("session",`failed to start tmux session for ${z.id}`);return!1}async function d9(J,z,Y,Z,X={}){let G=N1(z.id),Q=await Promise.resolve().then(() => (YJ(),vJ));if(X.captureFrom){let B=await Q.currentSessionName();if(B&&B!==G)await Q.captureGlobalLayout(B)}if(await c9(J,z,Y,Z,{includeInitPrompt:X.includeInitPrompt,reload:X.reload})&&X.heal)try{let B=await gZ(G,"@kobe_worktree")||z.worktreePath||"";if(B&&ZX(B)){let{resolveEngineLaunchInit:V}=await Promise.resolve().then(() => (SX(),Pf)),j=Y?V(Y,B,{kind:X.includeInitPrompt?"repo-init":"none"}):void 0;await Q.ensureSession({name:G,cwd:B,command:oJ(Z),taskId:z.id,vendor:Z,repo:Y,launchInit:j})}}catch(B){console.error("[kobe handover] heal failed (continuing to switch):",B)}let{syncSessionZen:H}=await Promise.resolve().then(() => (yY(),bB));if(await H(G),X.isCurrent&&!X.isCurrent())return;await J?.setActiveTask(z.id).catch(()=>{}),await Q.enterWindow(G)}async function NH(J,z,Y,Z,X={}){await d9(J,z,Y,Z,{includeInitPrompt:X.includeInitPrompt})}var hZ;var kH=k(()=>{sJ();Uz();h1();hZ=class hZ extends Error{phase;cause;constructor(J,z,Y){super(z);this.name="HandoverError",this.phase=J,this.cause=Y}}});var y3={};f1(y3,{startNewTaskHost:()=>ry,NewTaskPage:()=>bH});function bH(J){let{theme:z}=i0(),Y=d1();zJ(()=>{Z()});async function Z(){let X=gJ(),G=J.defaultRepo||X[0]||process.cwd(),Q=xJ(C1("lastSelectedVendor"),uJ()),f=await JY(),H=J.orchestrator,B=await UH.show(Y,G,X,{defaultVendor:Q,availableVendors:f,discoverAdoptable:H?(j)=>H.discoverAdoptableWorktrees(j):void 0});if(!B)process.exit(0);if(s1("lastSelectedVendor",B.vendor),rz(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 NH(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 X=W("box");return q(X,"flexDirection","column"),q(X,"flexGrow",1),y((G)=>q(X,"backgroundColor",z.background,G)),X})()}async function ry(J){await OJ({setup:async()=>{let z=null;try{let Y=await gz(),Z=new KJ(Y);await Z.init(),z=Z}catch(Y){console.error("[kobe new-task] daemon unavailable; cannot create task:",Y)}return{root:()=>b(bH,{get defaultRepo(){return J.defaultRepo},orchestrator:z}),onDestroy:()=>{z?.dispose()}}}})}var n9=k(()=>{w();w();w();w();FJ();W1();iY();ZZ();O1();$1();_X();m1();_Y();kH();nJ()});function SH(J,z,Y,Z,X={}){if(J.length===0)return z;let G=new Map;for(let H of J)G.set(Y(H),H);let Q=J.length===z.length,f=Array(z.length);for(let H=0;H<z.length;H++){let B=z[H],V=G.get(Y(B));if(V&&Z(V,B)&&(!X.samePosition||J[H]===V)){if(f[H]=V,Q&&J[H]!==V)Q=!1}else f[H]=B,Q=!1}return Q?J:f}function x3(J,z){if(!J)return!0;let Y=J.toLowerCase(),Z=z.toLowerCase(),X=0;for(let G=0;G<Z.length&&X<Y.length;G++)if(Z.charCodeAt(G)===Y.charCodeAt(X))X++;return X===Y.length}function oy(J,z){let Y=z==="archived";return J.filter((Z)=>Z.archived===Y)}function i9(J,z,Y,Z="default",X){let G=oy(J,z),Q=Y?.trim()??"",f=X?Zz(X):null,H=Q?G.filter((O)=>x3(Q,`${O.title} ${bz(O.repo)}`)):G,B=[],V=[],j=[],K=new Set;for(let O of H){if(O.kind==="main"){let R=Zz(O.repo);if(K.has(R))continue;K.add(R),B.push(O);continue}if(f&&Zz(O.repo)!==f)continue;if(O.pinned===!0)V.push(O);else j.push(O)}if(B.sort((O,R)=>bz(O.repo).localeCompare(bz(R.repo))),Z==="recent")V.sort(u3),j.sort(u3);let L=[],A=0;for(let O of B)L.push({kind:"task",task:O,flatIndex:A}),A++;for(let O of V)L.push({kind:"task",task:O,flatIndex:A}),A++;for(let O of j)L.push({kind:"task",task:O,flatIndex:A}),A++;return L}function u3(J,z){let Y=E3(z)-E3(J);if(Y!==0)return Y;return String(z.id).localeCompare(String(J.id))}function E3(J){let z=Date.parse(J.updatedAt||J.createdAt);return Number.isFinite(z)?z:0}function bz(J){let z=J.split("/").filter(Boolean);return z[z.length-1]??J}function Zz(J){return J.trim().replace(/[\\/]+$/,"")||J}function sy(J,z){let Y=bz(J);if(!z.some((X)=>X!==J&&bz(X)===Y))return Y;return J.replace(/[\\/]+$/,"").split(/[\\/]+/).slice(-2).join("/")}function w3(J,z){let Y=z==="archived",Z=new Map;for(let G of J){let Q=Zz(G.repo),f=Z.get(Q)??{repo:G.repo,count:0};if(G.kind==="main")f.repo=G.repo;else if(G.archived===Y)f.count+=1;Z.set(Q,f)}let X=[...Z.values()].map((G)=>G.repo);return[...Z.values()].map((G)=>({repo:G.repo,label:sy(G.repo,X),count:G.count})).sort((G,Q)=>G.label.localeCompare(Q.label))}function P3(J,z){if(J.length===0)return-1;if(!z)return J[0]?.flatIndex??-1;let Y=Zz(z),Z=J.find((G)=>G.task.kind!=="main"&&Zz(G.task.repo)===Y);if(Z)return Z.flatIndex;return J.find((G)=>G.task.kind==="main"&&Zz(G.task.repo)===Y)?.flatIndex??J[0]?.flatIndex??-1}function l9(J){return J.map((z)=>z.task.id)}function h3(J,z,Y){let Z=z.length;if(J===null){if(Y===-1&&Z>0)return 0;if(Y>=Z)return Math.max(0,Z-1);if(Z===0)return-1;return Y}let X=z.indexOf(J);if(X>=0)return X;if(Z===0)return-1;if(Y<0||Y>=Z)return Z-1;return Y}function v3(J){let z=[],Y=[];for(let Z of J)if(Z.task.kind==="main")z.push(Z);else Y.push(Z);return{projectRows:z,taskRows:Y}}function ty(J,z){return J===z||J.id===z.id&&J.kind===z.kind&&J.title===z.title&&J.repo===z.repo&&J.branch===z.branch&&J.worktreePath===z.worktreePath&&J.status===z.status&&J.archived===z.archived&&J.pinned===z.pinned&&J.vendor===z.vendor}function m3(J,z){return SH(J,z,(Y)=>Y.task.id,(Y,Z)=>Y.flatIndex===Z.flatIndex&&ty(Y.task,Z.task),{samePosition:!0})}var IH=()=>{};var c3={};f1(c3,{startQuickTaskHost:()=>Yx});async function ey(J,z){let Y,Z;if(z){let j=await IJ(z,["@kobe_task","@kobe_worktree"]);Y=j["@kobe_task"]||void 0,Z=j["@kobe_worktree"]||void 0}let X=(Y?J?.getTask(Y)?.repo:void 0)??gJ()[0],G=X??Z??process.cwd();if(!X)return{ctx:null,fallbackRepo:G};let Q=await JY(),f=xJ(C1("lastSelectedVendor"),uJ()),H=Q.length===0||Q.includes(f)?f:Q[0]??f,B=MQ(UJ(X))??kz,V=Q.length>0?Q:[H];return{ctx:{repo:X,vendor:H,baseRef:B,engines:V},fallbackRepo:G}}async function Jx(J,z,Y,Z,X){let G=await c9(J,z,Y,Z),Q=N1(z.id),{pane:f}=await kG(Q,!G);if(f)await bG(f,X)}function zx(J){let{theme:z}=i0(),Y=d1();zJ(()=>{Z()});async function Z(){let X=J.ctx,G=await j3.show(Y,{repoLabel:bz(X.repo),engines:X.engines,defaultVendor:X.vendor,defaultBaseRef:X.baseRef,engineLabel:KZ});if(G===void 0)process.exit(0);s1("lastSelectedVendor",G.vendor),rz(X.repo);let Q=J.orchestrator;if(!Q)console.error("[kobe quick-task] no daemon; cannot create task"),process.exit(1);try{let f=await Q.createTask({repo:X.repo,baseRef:G.baseRef,vendor:G.vendor});await Jx(Q,f,X.repo,G.vendor,G.prompt),await NH(Q,f,X.repo,G.vendor)}catch(f){console.error("[kobe quick-task] task.create/deliver failed:",f),process.exit(1)}process.exit(0)}return(()=>{var X=W("box");return q(X,"flexDirection","column"),q(X,"flexGrow",1),y((G)=>q(X,"backgroundColor",z.background,G)),X})()}async function Yx(J){await OJ({setup:async()=>{let z=null;try{let X=await gz(),G=new KJ(X);await G.init(),z=G}catch(X){console.error("[kobe quick-task] daemon unavailable; cannot create task:",X)}let{ctx:Y,fallbackRepo:Z}=await ey(z,J.session);return{root:()=>Y?b(zx,{ctx:Y,orchestrator:z}):b(bH,{defaultRepo:Z,orchestrator:z}),onDestroy:()=>{z?.dispose()}}}})}var d3=k(()=>{w();w();w();w();FJ();W1();iY();ZZ();sJ();O1();h1();$q();$1();W3();m1();WH();_Y();KH();kH();n9();IH();nJ()});function yH(J){let z=J.trim().split(/\s+/).pop()??"",Y=/^([CM])-(.+)$/.exec(z);if(!Y)return null;let Z=Y[1]==="C"?"\u2303":"\u2325",X=Y[2]??"";return`${Z}${X.length===1?X.toUpperCase():X}`}function TH(J,z){if(J.includes("/"))return J.split("/").map((X)=>TH(X,z)).join("/");let Y=J.toLowerCase();if(Y==="tab")return"tab";let Z=Xx[Y];if(Z)return Z;if(/^f\d{1,2}$/.test(Y))return Y.toUpperCase();if(!z)return J;if(/^[a-z]$/.test(Y))return J.toUpperCase();return J.replace(/[a-z]+/gi,(X)=>X.toUpperCase())}function oX(J,z="\u2303B"){let Y=J.trim();if(!Y)return Y;let Z=/^prefix\s+(.+)$/i.exec(Y);if(Z){let f=Z[1]??"";return`${z} ${f.includes("+")?oX(f,z):TH(f,!0)}`}let X=Y.split("+");if(X.length===1)return TH(X[0]??"",!1);let G=X[X.length-1]??"";return`${X.slice(0,-1).map((f)=>Zx[f.toLowerCase().trim()]??f).join("")} ${TH(G,!0)}`}var Zx,Xx;var $9=k(()=>{Zx={ctrl:"\u2303",control:"\u2303",alt:"\u2325",opt:"\u2325",option:"\u2325",shift:"\u21E7",cmd:"\u2318",command:"\u2318",meta:"\u2318",super:"\u2318"},Xx={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 n3}from"@opentui/core";function Gx(J){let z=new Map,Y=[];for(let Z of J){if(!z.has(Z.category))z.set(Z.category,[]),Y.push(Z.category);z.get(Z.category).push(Z)}return Y.map((Z)=>({category:Z,rows:z.get(Z)}))}function sX(J={}){let z=d1(),{theme:Y}=i0(),Z=()=>Gx(lY),X=()=>J.onClose?J.onClose():z.clear(),[G,Q]=r("\u2303B");return zJ(()=>{$0(["show-options","-g","prefix"]).then(({code:f,stdout:H})=>{if(f!==0)return;let B=yH(H);if(B)Q(B)})}),D1(()=>({bindings:[{key:"?",cmd:X}]})),(()=>{var f=W("box"),H=W("box"),B=W("text"),V=W("text"),j=W("scrollbox"),K=W("box");return D(f,H),D(f,j),q(f,"paddingLeft",2),q(f,"paddingRight",2),q(f,"gap",1),q(f,"flexShrink",1),D(H,B),D(H,V),q(H,"flexDirection","row"),q(H,"justifyContent","space-between"),q(H,"flexShrink",0),U(B,()=>F("help.title")),q(V,"onMouseUp",X),U(V,()=>F("help.esc")),D(j,K),q(j,"flexShrink",1),q(j,"flexGrow",1),q(j,"stickyScroll",!1),q(K,"paddingBottom",1),q(K,"gap",1),q(K,"paddingRight",1),U(K,b(X1,{get each(){return Z()},children:(L)=>(()=>{var A=W("box"),O=W("text");return D(A,O),q(A,"gap",0),U(O,()=>F9("category",L.category)),U(A,b(X1,{get each(){return L.rows},children:(R)=>{let x=R.hint?.keys??R.keys[0]??"\u2014",a=()=>x==="\u2014"?"\u2014":oX(x,G()),S=()=>(R.hint?R.keys:R.keys.slice(1)).map((C)=>oX(C,G()));return(()=>{var C=W("box"),M=W("box"),I=W("text"),$=W("box"),i=W("text");return D(C,M),D(C,$),q(C,"flexDirection","row"),q(C,"gap",2),q(C,"paddingLeft",1),D(M,I),q(M,"width",14),U(I,a),D($,i),q($,"flexGrow",1),U(i,()=>F9("desc",R.id)),U(C,(()=>{var e=u0(()=>S().length>0);return()=>e()?(()=>{var J0=W("box"),T=W("text");return D(J0,T),U(T,()=>`(${S().join(", ")})`),y((f0)=>q(T,"fg",Y.textMuted,f0)),J0})():null})(),null),y((e)=>{var{primary:J0,text:T}=Y;return J0!==e.e&&(e.e=q(I,"fg",J0,e.e)),T!==e.t&&(e.t=q(i,"fg",T,e.t)),e},{e:void 0,t:void 0}),C})()}}),null),y((R)=>{var x=Y.accent,a=n3.BOLD;return x!==R.e&&(R.e=q(O,"fg",x,R.e)),a!==R.t&&(R.t=q(O,"attributes",a,R.t)),R},{e:void 0,t:void 0}),A})()})),y((L)=>{var A=n3.BOLD,O=Y.text,R=Y.textMuted,x={trackOptions:{backgroundColor:Y.backgroundDialog,foregroundColor:Y.borderActive}};return A!==L.e&&(L.e=q(B,"attributes",A,L.e)),O!==L.t&&(L.t=q(B,"fg",O,L.t)),R!==L.a&&(L.a=q(V,"fg",R,L.a)),x!==L.o&&(L.o=q(j,"verticalScrollbarOptions",x,L.o)),L},{e:void 0,t:void 0,a:void 0,o:void 0}),f})()}var a9=k(()=>{w();w();w();w();w();w();w();W1();h1();pX();m1();GJ();$9();yJ();nJ();sX.show=(J)=>{J.replace(()=>b(sX,{}))}});import{TextAttributes as Qx}from"@opentui/core";function i3(J){let z=d1(),{theme:Y}=i0(),[Z,X]=r(J.currentTitle);function G(){let Q=Z().trim();if(AQ(Q)&&!J.allowEmpty)return;J.onSubmit(Q),z.clear()}return(()=>{var Q=W("box"),f=W("box"),H=W("text"),B=W("text"),V=W("box"),j=W("text"),K=W("input"),L=W("box"),A=W("text");return D(Q,f),D(Q,V),D(Q,L),q(Q,"paddingLeft",2),q(Q,"paddingRight",2),q(Q,"gap",1),D(f,H),D(f,B),q(f,"flexDirection","row"),q(f,"justifyContent","space-between"),U(H,()=>J.dialogTitle??F("common.rename.defaultTitle")),D(B,E0("esc")),q(B,"onMouseUp",()=>J.onCancel()),D(V,j),D(V,K),q(V,"gap",0),U(j,()=>J.fieldLabel??F("common.rename.defaultFieldLabel")),q(K,"focused",!0),q(K,"onInput",(O)=>X(DJ(O))),q(K,"onSubmit",()=>G()),D(L,A),q(L,"paddingBottom",1),U(A,()=>F("common.rename.footerHint",{submitLabel:J.submitLabel??F("common.rename.defaultSubmitLabel")})),y((O)=>{var R=Qx.BOLD,x=Y.text,a=Y.textMuted,S=Y.accent,C=Z(),M=J.placeholder??J.currentTitle,I=Y.textMuted;return R!==O.e&&(O.e=q(H,"attributes",R,O.e)),x!==O.t&&(O.t=q(H,"fg",x,O.t)),a!==O.a&&(O.a=q(B,"fg",a,O.a)),S!==O.o&&(O.o=q(j,"fg",S,O.o)),C!==O.i&&(O.i=q(K,"value",C,O.i)),M!==O.n&&(O.n=q(K,"placeholder",M,O.n)),I!==O.s&&(O.s=q(A,"fg",I,O.s)),O},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),Q})()}var l3=k(()=>{w();w();w();w();w();w();w();GJ();W1();m1();nJ();_X()});function qx(J,z,Y={}){return new Promise((Z)=>{J.replace(()=>b(i3,{currentTitle:z,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:(X)=>Z(X),onCancel:()=>Z(void 0)}),()=>Z(void 0))})}var KY;var _9=k(()=>{w();l3();KY={show:qx}});import{TextAttributes as fx}from"@opentui/core";function Hx(J){if(!J)return J;return J.charAt(0).toUpperCase()+J.slice(1)}function UY(J){let z=d1(),{theme:Y}=i0(),[Z,X]=nz({active:J.initialActive??"confirm"});return D1(()=>({bindings:[{key:"return",cmd:()=>{if(Z.active==="confirm")J.onConfirm?.();if(Z.active==="cancel")J.onCancel?.();z.clear()}},{key:"left",cmd:()=>X("active",Z.active==="confirm"?"cancel":"confirm")},{key:"right",cmd:()=>X("active",Z.active==="confirm"?"cancel":"confirm")}]})),(()=>{var G=W("box"),Q=W("box"),f=W("text"),H=W("text"),B=W("text"),V=W("box");return D(G,Q),D(G,B),D(G,V),q(G,"paddingLeft",2),q(G,"paddingRight",2),q(G,"paddingBottom",1),q(G,"gap",0),D(Q,f),D(Q,H),q(Q,"flexDirection","row"),q(Q,"justifyContent","space-between"),U(f,()=>J.title),D(H,E0("esc")),q(H,"onMouseUp",()=>z.clear()),U(B,()=>J.message),q(V,"flexDirection","row"),q(V,"justifyContent","flex-end"),q(V,"paddingTop",1),U(V,b(X1,{each:["cancel","confirm"],children:(j)=>(()=>{var K=W("box"),L=W("text");return D(K,L),q(K,"paddingLeft",1),q(K,"paddingRight",1),q(K,"onMouseUp",()=>{if(j==="confirm")J.onConfirm?.();if(j==="cancel")J.onCancel?.();z.clear()}),U(L,()=>Hx(j==="cancel"?J.label??F("common.cancel"):J.confirmLabel??F("common.confirm"))),y((A)=>{var O=j===Z.active?Y.primary:void 0,R=j===Z.active?Y.selectedListItemText:Y.textMuted;return O!==A.e&&(A.e=q(K,"backgroundColor",O,A.e)),R!==A.t&&(A.t=q(L,"fg",R,A.t)),A},{e:void 0,t:void 0}),K})()})),y((j)=>{var K=fx.BOLD,L=Y.text,A=Y.textMuted,O=Y.textMuted;return K!==j.e&&(j.e=q(f,"attributes",K,j.e)),L!==j.t&&(j.t=q(f,"fg",L,j.t)),A!==j.a&&(j.a=q(H,"fg",A,j.a)),O!==j.o&&(j.o=q(B,"fg",O,j.o)),j},{e:void 0,t:void 0,a:void 0,o:void 0}),G})()}var p9=k(()=>{w();w();w();w();w();w();w();GJ();W1();iX();m1();yJ();nJ();UY.show=(J,z,Y,Z,X,G)=>{return new Promise((Q)=>{J.replace(()=>b(UY,{title:z,message:Y,onConfirm:()=>Q(!0),onCancel:()=>Q(!1),label:Z,confirmLabel:X,get initialActive(){return G?.initialActive}}),()=>Q(void 0)),J.setSize("small")})}});import{unlinkSync as Bx}from"fs";import{join as jx}from"path";function $3(J){return J instanceof KJ}function a3(J,z){try{J?.destroy()}catch(Y){console.error(`kobe: renderer.destroy() failed during ${z}:`,Y)}}async function r9(J,z,Y){if(await UY.show(J,"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;z.clear();try{Bx(jx(Sz(),".kobe","tasks.json"))}catch(X){if(X.code!=="ENOENT")console.error("kobe: failed to delete tasks.json during reset:",X)}a3(Y,"reset"),process.stderr.write(`kobe: UI state reset. Relaunch kobe to start fresh.
|
|
263
|
+
`),process.exit(0)}async function o9(J,z,Y){if(!(z instanceof KJ))return;if(await UY.show(J,"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;a3(Y,"daemon restart"),process.stderr.write(`kobe: window closed. Relaunch kobe to start fresh.
|
|
264
|
+
`),process.exit(0)}var _3=k(()=>{iY();o1();p9()});function Wx(J){return`theme:${J}`}function s9(J){return`language:${J}`}function t9(J){return`accent:${J}`}function Vx(J){return`engine:${J}`}function CQ(J){return`surface:${J}`}function e9(J){return[...J.themeNames.map((z)=>({id:Wx(z),kind:"theme",name:z})),...wZ.map((z)=>({id:s9(z.id),kind:"language",locale:z.id})),{id:"transparent",kind:"transparent"},...J.focusAccentSlots.map((z)=>({id:t9(z),kind:"focusAccent",slot:z})),{id:"toast",kind:"toast"},{id:"sound",kind:"sound"},{id:"zen-keep-tasks",kind:"zenKeepTasks"},{id:CQ("chattab"),kind:"surface",surface:"chattab"},{id:CQ("taskpanel"),kind:"surface",surface:"taskpanel"},{id:"editor-kind",kind:"editorKind"},{id:"editor-custom",kind:"editorCustom"}]}function Kx(J){return[...J.map((z)=>({id:Vx(z),kind:"engine",vendor:z})),{id:"add-engine",kind:"engineAdd"}]}function Ux(){return[{id:"feedback-title",kind:"feedbackTitle"},{id:"feedback-body",kind:"feedbackBody"},{id:"feedback-send",kind:"feedbackSend"}]}function NQ(J){return[{id:"dev-reset",kind:"devReset"},...J?[{id:"dev-restart",kind:"devRestartDaemon"}]:[],{id:"remote-projects",kind:"devRemoteProjects"},{id:"auto-status",kind:"devAutoStatus"},{id:"dispatcher",kind:"devDispatcher"}]}function p3(J,z){switch(J){case"general":return e9(z);case"engines":return Kx(z.engineList);case"accounts":case"keys":return[];case"feedback":return Ux();case"dev":return NQ(z.hasDaemon)}}function kQ(J,z){return J.findIndex((Y)=>Y.id===z)}function xH(J,z){return J[z]}var vZ;var JW=k(()=>{aX();vZ=[{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 s0}from"@opentui/core";function r3(J){let{theme:z}=i0();return(()=>{var Y=W("box");return q(Y,"flexDirection","column"),q(Y,"flexShrink",0),q(Y,"width",14),q(Y,"gap",1),U(Y,b(X1,{each:vZ,children:(Z,X)=>{let G=()=>X()===J.cursor(),Q=()=>G()&&J.level()==="sidebar";return(()=>{var f=W("box"),H=W("text");return D(f,H),q(f,"paddingLeft",1),q(f,"paddingRight",1),q(f,"onMouseUp",()=>J.switchSection(Z.id)),q(H,"wrapMode","none"),U(H,()=>F(`settings.sections.${Z.id}`)),y((B)=>{var V=Q()?z.primary:void 0,j=Q()?z.selectedListItemText:G()?z.accent:z.textMuted,K=G()?s0.BOLD:void 0;return V!==B.e&&(B.e=q(f,"backgroundColor",V,B.e)),j!==B.t&&(B.t=q(H,"fg",j,B.t)),K!==B.a&&(B.a=q(H,"attributes",K,B.a)),B},{e:void 0,t:void 0,a:void 0}),f})()}})),Y})()}function o3(J){let z=i0(),{theme:Y}=z,Z=()=>e9({themeNames:J.themeNames(),focusAccentSlots:EZ}),X=(M)=>kQ(Z(),M),G=()=>X("transparent"),Q=()=>X("toast"),f=()=>X("sound"),H=()=>X("zen-keep-tasks"),B=()=>X(CQ("chattab")),V=()=>X(CQ("taskpanel")),j=()=>X("editor-kind"),K=()=>X("editor-custom"),L=()=>J.bodyRow()===G(),A=()=>J.bodyRow()===Q(),O=()=>J.bodyRow()===f(),R=()=>J.bodyRow()===H(),x=()=>J.bodyRow()===B(),a=()=>J.bodyRow()===V(),S=()=>J.bodyRow()===j(),C=()=>J.bodyRow()===K();return(()=>{var M=W("box"),I=W("text"),$=W("text"),i=W("box"),e=W("box"),J0=W("text"),T=W("text"),f0=W("box"),_=W("text"),W0=W("text"),R0=W("box"),V0=W("text"),t=W("box"),P=W("text"),N=W("text"),p=W("box"),u=W("text"),d=W("text"),o=W("box"),Q0=W("text"),g0=E0(" "),P0=W("box"),N0=W("text"),b0=E0(" "),x0=W("box"),v=W("text"),k0=W("text"),X0=W("box"),L0=W("text"),a0=E0(" "),e0=W("box"),v0=W("text"),_0=W("text"),R1=W("box"),s=W("text"),K0=E0(" "),I0=W("box"),m0=W("text"),Q1=E0(" "),w0=W("box"),q1=W("text"),g1=W("text"),z1=W("box"),z0=W("text"),Z0=W("box"),j0=W("text");return D(M,I),D(M,$),D(M,i),D(M,e),D(M,f0),D(M,t),D(M,p),D(M,x0),D(M,e0),D(M,w0),q(M,"flexDirection","column"),q(M,"gap",1),U(I,()=>F("settings.general.theme")),U($,()=>F("settings.general.themeHint")),q(i,"flexDirection","column"),q(i,"gap",0),U(i,b(X1,{get each(){return J.themeNames()},children:(g,q0)=>{let T0=()=>J.level()==="body"&&J.bodyRow()===q0(),M0=()=>g===z.selected;return(()=>{var O0=W("box"),D0=W("text");return D(O0,D0),q(O0,"flexDirection","row"),q(O0,"gap",1),q(O0,"paddingLeft",1),q(O0,"paddingRight",1),q(O0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(q0()),J.setThemeCursor(q0()),J.selectTheme(g)}),q(D0,"wrapMode","none"),U(D0,()=>M0()?"\u25CF ":" ",null),U(D0,g,null),y((B0)=>{var t0=T0()?Y.primary:void 0,Y1=T0()?Y.selectedListItemText:M0()?Y.accent:Y.text,o0=T0()||M0()?s0.BOLD:void 0;return t0!==B0.e&&(B0.e=q(O0,"backgroundColor",t0,B0.e)),Y1!==B0.t&&(B0.t=q(D0,"fg",Y1,B0.t)),o0!==B0.a&&(B0.a=q(D0,"attributes",o0,B0.a)),B0},{e:void 0,t:void 0,a:void 0}),O0})()}})),D(e,J0),D(e,T),q(e,"flexDirection","column"),q(e,"gap",0),q(e,"paddingTop",1),U(J0,()=>F("settings.general.language")),q(T,"wrapMode","word"),U(T,()=>F("settings.general.languageHint")),U(e,b(X1,{each:wZ,children:(g)=>{let q0=()=>X(s9(g.id)),T0=()=>J.level()==="body"&&J.bodyRow()===q0(),M0=()=>J.currentLocale()===g.id;return(()=>{var O0=W("box"),D0=W("text");return D(O0,D0),q(O0,"flexDirection","row"),q(O0,"gap",1),q(O0,"paddingLeft",1),q(O0,"paddingRight",1),q(O0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(q0()),J.selectLanguage(g.id)}),q(D0,"wrapMode","none"),U(D0,()=>M0()?"\u25CF ":" ",null),U(D0,()=>g.label,null),y((B0)=>{var t0=T0()?Y.primary:void 0,Y1=T0()?Y.selectedListItemText:M0()?Y.accent:Y.text,o0=T0()||M0()?s0.BOLD:void 0;return t0!==B0.e&&(B0.e=q(O0,"backgroundColor",t0,B0.e)),Y1!==B0.t&&(B0.t=q(D0,"fg",Y1,B0.t)),o0!==B0.a&&(B0.a=q(D0,"attributes",o0,B0.a)),B0},{e:void 0,t:void 0,a:void 0}),O0})()}}),null),D(f0,_),D(f0,W0),D(f0,R0),q(f0,"flexDirection","column"),q(f0,"gap",0),q(f0,"paddingTop",1),U(_,()=>F("settings.general.transparent")),q(W0,"wrapMode","word"),U(W0,()=>F("settings.general.transparentHint")),D(R0,V0),q(R0,"flexDirection","row"),q(R0,"paddingLeft",1),q(R0,"paddingRight",1),q(R0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(G()),J.toggleTransparent()}),q(V0,"wrapMode","none"),U(V0,(()=>{var g=u0(()=>!!z.transparentBackground);return()=>g()?F("settings.general.on"):F("settings.general.off")})()),D(t,P),D(t,N),q(t,"flexDirection","column"),q(t,"gap",0),q(t,"paddingTop",1),U(P,()=>F("settings.general.focusAccent")),q(N,"wrapMode","word"),U(N,()=>F("settings.general.focusAccentHint")),U(t,b(X1,{each:EZ,children:(g)=>{let q0=()=>X(t9(g)),T0=()=>J.level()==="body"&&J.bodyRow()===q0(),M0=()=>z.focusAccent===g;return(()=>{var O0=W("box"),D0=W("text");return D(O0,D0),q(O0,"flexDirection","row"),q(O0,"gap",1),q(O0,"paddingLeft",1),q(O0,"paddingRight",1),q(O0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(q0()),J.selectFocusAccent(g)}),q(D0,"wrapMode","none"),U(D0,()=>M0()?"\u25CF ":" ",null),U(D0,()=>F(`settings.general.accent${g.charAt(0).toUpperCase()}${g.slice(1)}`),null),y((B0)=>{var t0=T0()?Y.primary:void 0,Y1=T0()?Y.selectedListItemText:M0()?Y.focusAccent:Y.text,o0=T0()||M0()?s0.BOLD:void 0;return t0!==B0.e&&(B0.e=q(O0,"backgroundColor",t0,B0.e)),Y1!==B0.t&&(B0.t=q(D0,"fg",Y1,B0.t)),o0!==B0.a&&(B0.a=q(D0,"attributes",o0,B0.a)),B0},{e:void 0,t:void 0,a:void 0}),O0})()}}),null),D(p,u),D(p,d),D(p,o),D(p,P0),q(p,"flexDirection","column"),q(p,"gap",0),q(p,"paddingTop",1),U(u,()=>F("settings.general.notifications")),q(d,"wrapMode","word"),U(d,()=>F("settings.general.notificationsHint")),D(o,Q0),q(o,"flexDirection","row"),q(o,"gap",1),q(o,"paddingLeft",1),q(o,"paddingRight",1),q(o,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(Q()),J.toggleToast()}),D(Q0,g0),q(Q0,"wrapMode","none"),U(Q0,()=>J.toastEnabled()?"[x]":"[ ]",g0),U(Q0,()=>F("settings.general.toast"),null),D(P0,N0),q(P0,"flexDirection","row"),q(P0,"gap",1),q(P0,"paddingLeft",1),q(P0,"paddingRight",1),q(P0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(f()),J.toggleSound()}),D(N0,b0),q(N0,"wrapMode","none"),U(N0,()=>J.soundEnabled()?"[x]":"[ ]",b0),U(N0,()=>F("settings.general.sound"),null),D(x0,v),D(x0,k0),D(x0,X0),q(x0,"flexDirection","column"),q(x0,"gap",0),q(x0,"paddingTop",1),U(v,()=>F("settings.general.zen")),q(k0,"wrapMode","word"),U(k0,()=>F("settings.general.zenHint")),D(X0,L0),q(X0,"flexDirection","row"),q(X0,"gap",1),q(X0,"paddingLeft",1),q(X0,"paddingRight",1),q(X0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(H()),J.toggleZenKeepsTasks()}),D(L0,a0),q(L0,"wrapMode","none"),U(L0,()=>J.zenKeepsTasks()?"[x]":"[ ]",a0),U(L0,()=>F("settings.general.zenKeepTasks"),null),D(e0,v0),D(e0,_0),D(e0,R1),D(e0,I0),q(e0,"flexDirection","column"),q(e0,"gap",0),q(e0,"paddingTop",1),U(v0,()=>F("settings.general.surface")),q(_0,"wrapMode","word"),U(_0,()=>F("settings.general.surfaceHint")),D(R1,s),q(R1,"flexDirection","row"),q(R1,"gap",1),q(R1,"paddingLeft",1),q(R1,"paddingRight",1),q(R1,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(B()),J.selectSurface("chattab")}),D(s,K0),q(s,"wrapMode","none"),U(s,()=>J.settingsSurface()==="chattab"?"[x]":"[ ]",K0),U(s,()=>F("settings.general.surfaceChattab"),null),D(I0,m0),q(I0,"flexDirection","row"),q(I0,"gap",1),q(I0,"paddingLeft",1),q(I0,"paddingRight",1),q(I0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(V()),J.selectSurface("taskpanel")}),D(m0,Q1),q(m0,"wrapMode","none"),U(m0,()=>J.settingsSurface()==="taskpanel"?"[x]":"[ ]",Q1),U(m0,()=>F("settings.general.surfaceTaskpanel"),null),D(w0,q1),D(w0,g1),D(w0,z1),D(w0,Z0),q(w0,"flexDirection","column"),q(w0,"gap",0),q(w0,"paddingTop",1),U(q1,()=>F("settings.general.editor")),q(g1,"wrapMode","word"),U(g1,()=>F("settings.general.editorHint")),D(z1,z0),q(z1,"flexDirection","row"),q(z1,"gap",1),q(z1,"paddingLeft",1),q(z1,"paddingRight",1),q(z1,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(j()),J.cycleEditorKind()}),q(z0,"wrapMode","none"),U(z0,()=>F("settings.general.editorRow",{kind:J.editorKind()})),D(Z0,j0),q(Z0,"flexDirection","row"),q(Z0,"gap",1),q(Z0,"paddingLeft",1),q(Z0,"paddingRight",1),q(Z0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(K()),J.editEditorCustom()}),q(j0,"wrapMode","none"),U(j0,()=>F("settings.general.editorCustom",{cmd:J.editorCustomCommand().trim()||F("settings.general.editorCustomUnset")})),y((g)=>{var q0=Y.text,T0=s0.BOLD,M0=Y.textMuted,O0=Y.text,D0=s0.BOLD,B0=Y.textMuted,t0=Y.text,Y1=s0.BOLD,o0=Y.textMuted,H1=L()?Y.primary:void 0,u1=L()?Y.selectedListItemText:z.transparentBackground?Y.accent:Y.textMuted,S0=s0.BOLD,h=Y.text,A0=s0.BOLD,j1=Y.textMuted,F1=Y.text,k1=s0.BOLD,m=Y.textMuted,y0=A()?Y.primary:void 0,Y0=A()?Y.selectedListItemText:J.toastEnabled()?Y.accent:Y.textMuted,F0=s0.BOLD,c1=O()?Y.primary:void 0,LJ=O()?Y.selectedListItemText:J.soundEnabled()?Y.accent:Y.textMuted,QJ=s0.BOLD,iJ=Y.text,lz=s0.BOLD,AJ=Y.textMuted,$z=R()?Y.primary:void 0,Gz=R()?Y.selectedListItemText:J.zenKeepsTasks()?Y.accent:Y.textMuted,c=s0.BOLD,n=Y.text,l=s0.BOLD,E=Y.textMuted,d0=x()?Y.primary:void 0,h0=x()?Y.selectedListItemText:J.settingsSurface()==="chattab"?Y.accent:Y.textMuted,C0=s0.BOLD,n0=a()?Y.primary:void 0,B1=a()?Y.selectedListItemText:J.settingsSurface()==="taskpanel"?Y.accent:Y.textMuted,L1=s0.BOLD,jJ=Y.text,Qz=s0.BOLD,DY=Y.textMuted,RW=S()?Y.primary:void 0,gW=S()?Y.selectedListItemText:Y.accent,CW=s0.BOLD,NW=C()?Y.primary:void 0,kW=C()?Y.selectedListItemText:J.editorKind()==="custom"?Y.text:Y.textMuted;return q0!==g.e&&(g.e=q(I,"fg",q0,g.e)),T0!==g.t&&(g.t=q(I,"attributes",T0,g.t)),M0!==g.a&&(g.a=q($,"fg",M0,g.a)),O0!==g.o&&(g.o=q(J0,"fg",O0,g.o)),D0!==g.i&&(g.i=q(J0,"attributes",D0,g.i)),B0!==g.n&&(g.n=q(T,"fg",B0,g.n)),t0!==g.s&&(g.s=q(_,"fg",t0,g.s)),Y1!==g.h&&(g.h=q(_,"attributes",Y1,g.h)),o0!==g.r&&(g.r=q(W0,"fg",o0,g.r)),H1!==g.d&&(g.d=q(R0,"backgroundColor",H1,g.d)),u1!==g.l&&(g.l=q(V0,"fg",u1,g.l)),S0!==g.u&&(g.u=q(V0,"attributes",S0,g.u)),h!==g.c&&(g.c=q(P,"fg",h,g.c)),A0!==g.w&&(g.w=q(P,"attributes",A0,g.w)),j1!==g.m&&(g.m=q(N,"fg",j1,g.m)),F1!==g.f&&(g.f=q(u,"fg",F1,g.f)),k1!==g.y&&(g.y=q(u,"attributes",k1,g.y)),m!==g.g&&(g.g=q(d,"fg",m,g.g)),y0!==g.p&&(g.p=q(o,"backgroundColor",y0,g.p)),Y0!==g.b&&(g.b=q(Q0,"fg",Y0,g.b)),F0!==g.T&&(g.T=q(Q0,"attributes",F0,g.T)),c1!==g.A&&(g.A=q(P0,"backgroundColor",c1,g.A)),LJ!==g.O&&(g.O=q(N0,"fg",LJ,g.O)),QJ!==g.I&&(g.I=q(N0,"attributes",QJ,g.I)),iJ!==g.S&&(g.S=q(v,"fg",iJ,g.S)),lz!==g.W&&(g.W=q(v,"attributes",lz,g.W)),AJ!==g.C&&(g.C=q(k0,"fg",AJ,g.C)),$z!==g.B&&(g.B=q(X0,"backgroundColor",$z,g.B)),Gz!==g.v&&(g.v=q(L0,"fg",Gz,g.v)),c!==g.k&&(g.k=q(L0,"attributes",c,g.k)),n!==g.x&&(g.x=q(v0,"fg",n,g.x)),l!==g.j&&(g.j=q(v0,"attributes",l,g.j)),E!==g.q&&(g.q=q(_0,"fg",E,g.q)),d0!==g.z&&(g.z=q(R1,"backgroundColor",d0,g.z)),h0!==g.P&&(g.P=q(s,"fg",h0,g.P)),C0!==g.H&&(g.H=q(s,"attributes",C0,g.H)),n0!==g.F&&(g.F=q(I0,"backgroundColor",n0,g.F)),B1!==g.M&&(g.M=q(m0,"fg",B1,g.M)),L1!==g.D&&(g.D=q(m0,"attributes",L1,g.D)),jJ!==g.R&&(g.R=q(q1,"fg",jJ,g.R)),Qz!==g.E&&(g.E=q(q1,"attributes",Qz,g.E)),DY!==g.L&&(g.L=q(g1,"fg",DY,g.L)),RW!==g.N&&(g.N=q(z1,"backgroundColor",RW,g.N)),gW!==g.G&&(g.G=q(z0,"fg",gW,g.G)),CW!==g.U&&(g.U=q(z0,"attributes",CW,g.U)),NW!==g.K&&(g.K=q(Z0,"backgroundColor",NW,g.K)),kW!==g.V&&(g.V=q(j0,"fg",kW,g.V)),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,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}),M})()}function s3(J){let{theme:z}=i0(),Y=()=>J.vendors.length;return(()=>{var Z=W("box"),X=W("text"),G=W("text"),Q=W("box"),f=W("box"),H=W("text");return D(Z,X),D(Z,G),D(Z,Q),q(Z,"flexDirection","column"),q(Z,"gap",1),U(X,()=>F("settings.engines.title")),q(G,"wrapMode","word"),U(G,()=>F("settings.engines.hint")),D(Q,f),q(Q,"flexDirection","column"),q(Q,"gap",0),U(Q,b(X1,{get each(){return J.vendors},children:(B,V)=>{let j=()=>J.level()==="body"&&J.bodyRow()===V();return(()=>{var K=W("box"),L=W("text"),A=W("text"),O=W("text");return D(K,L),D(K,A),D(K,O),q(K,"flexDirection","row"),q(K,"gap",1),q(K,"paddingLeft",1),q(K,"paddingRight",1),q(K,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(V()),J.editEngine(B)}),q(L,"wrapMode","none"),U(L,()=>J.isDefaultEngine(B)?"\u25CF":" "),q(A,"wrapMode","none"),U(A,()=>J.displayName(B)),q(O,"wrapMode","none"),U(O,()=>J.commandText(B),null),U(O,(()=>{var R=u0(()=>!!J.isDefault(B));return()=>R()?F("settings.engines.defaultTag"):u0(()=>!!J.isCustom(B))()?F("settings.engines.customTag"):""})(),null),y((R)=>{var x=j()?z.primary:void 0,a=j()?z.selectedListItemText:z.accent,S=s0.BOLD,C=j()?z.selectedListItemText:z.text,M=s0.BOLD,I=j()?z.selectedListItemText:J.isDefault(B)?z.textMuted:z.accent;return x!==R.e&&(R.e=q(K,"backgroundColor",x,R.e)),a!==R.t&&(R.t=q(L,"fg",a,R.t)),S!==R.a&&(R.a=q(L,"attributes",S,R.a)),C!==R.o&&(R.o=q(A,"fg",C,R.o)),M!==R.i&&(R.i=q(A,"attributes",M,R.i)),I!==R.n&&(R.n=q(O,"fg",I,R.n)),R},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),K})()}}),f),D(f,H),q(f,"flexDirection","row"),q(f,"paddingLeft",1),q(f,"paddingRight",1),q(f,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(Y()),J.onAddEngine()}),q(H,"wrapMode","none"),U(H,()=>F("settings.engines.addEngine")),y((B)=>{var V=z.text,j=s0.BOLD,K=z.textMuted,L=J.level()==="body"&&J.bodyRow()===Y()?z.primary:void 0,A=J.level()==="body"&&J.bodyRow()===Y()?z.selectedListItemText:z.primary;return V!==B.e&&(B.e=q(X,"fg",V,B.e)),j!==B.t&&(B.t=q(X,"attributes",j,B.t)),K!==B.a&&(B.a=q(G,"fg",K,B.a)),L!==B.o&&(B.o=q(f,"backgroundColor",L,B.o)),A!==B.i&&(B.i=q(H,"fg",A,B.i)),B},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),Z})()}function t3(J){let{theme:z}=i0(),Y=(Z)=>Z.binary.found?`Binary: ${Z.binary.path}`:`Binary: ${Z.binary.error}`;return(()=>{var Z=W("box"),X=W("text"),G=W("text"),Q=W("box"),f=W("text"),H=W("box"),B=W("text"),V=W("box"),j=W("text");return D(Z,X),D(Z,G),D(Z,Q),D(Z,H),D(Z,V),q(Z,"flexDirection","column"),q(Z,"gap",1),U(X,()=>F("settings.accounts.title")),q(G,"wrapMode","word"),U(G,()=>F("settings.accounts.hint")),D(Q,f),q(Q,"flexDirection","column"),q(Q,"gap",0),D(f,E0("claude-code")),U(Q,b(G0,{get when(){return J.claudeStatus()===null},get children(){var K=W("text");return U(K,()=>F("settings.accounts.checking")),y((L)=>q(K,"fg",z.textMuted,L)),K}}),null),U(Q,b(G0,{get when(){return J.claudeStatus()},children:(K)=>(()=>{var L=W("box"),A=W("text");return D(L,A),q(L,"flexDirection","column"),q(L,"gap",0),q(A,"wrapMode","word"),U(A,()=>Y(K())),U(L,()=>{let O=K().account;if(O.kind==="oauth"){let R=[O.organization,O.billingType].filter((x)=>!!x).join(" \xB7 ");return(()=>{var x=W("text");return q(x,"wrapMode","word"),U(x,()=>F("settings.accounts.loggedIn",{email:O.email}),null),U(x,R?` (${R})`:"",null),y((a)=>q(x,"fg",z.success,a)),x})()}return(()=>{var R=W("text");return U(R,()=>F("settings.accounts.notLoggedIn")),y((x)=>q(R,"fg",z.textMuted,x)),R})()},null),U(L,b(G0,{get when(){return K().accountError},children:(O)=>(()=>{var R=W("text");return q(R,"wrapMode","word"),U(R,()=>`! ${O()}`),y((x)=>q(R,"fg",z.warning,x)),R})()}),null),y((O)=>q(A,"fg",K().binary.found?z.textMuted:z.warning,O)),L})()}),null),D(H,B),q(H,"flexDirection","column"),q(H,"gap",0),D(B,E0("codex")),U(H,b(G0,{get when(){return J.codexStatus()===null},get children(){var K=W("text");return U(K,()=>F("settings.accounts.checking")),y((L)=>q(K,"fg",z.textMuted,L)),K}}),null),U(H,b(G0,{get when(){return J.codexStatus()},children:(K)=>(()=>{var L=W("box"),A=W("text");return D(L,A),q(L,"flexDirection","column"),q(L,"gap",0),q(A,"wrapMode","word"),U(A,()=>Y(K())),U(L,()=>{let O=K().account;if(O.kind==="chatgpt")return(()=>{var R=W("text");return q(R,"wrapMode","word"),U(R,()=>F("settings.accounts.chatgptLogin",{email:O.email}),null),U(R,(()=>{var x=u0(()=>!!O.plan);return()=>x()?` (${O.plan})`:""})(),null),y((x)=>q(R,"fg",z.success,x)),R})();if(O.kind==="apikey")return(()=>{var R=W("text");return U(R,()=>F("settings.accounts.apiKeyConfigured")),y((x)=>q(R,"fg",z.success,x)),R})();return(()=>{var R=W("text");return U(R,()=>F("settings.accounts.notLoggedIn")),y((x)=>q(R,"fg",z.textMuted,x)),R})()},null),U(L,b(G0,{get when(){return K().accountError},children:(O)=>(()=>{var R=W("text");return q(R,"wrapMode","word"),U(R,()=>`! ${O()}`),y((x)=>q(R,"fg",z.warning,x)),R})()}),null),y((O)=>q(A,"fg",K().binary.found?z.textMuted:z.warning,O)),L})()}),null),D(V,j),q(V,"flexDirection","column"),q(V,"gap",0),D(j,E0("copilot")),U(V,b(G0,{get when(){return J.copilotStatus()===null},get children(){var K=W("text");return U(K,()=>F("settings.accounts.checking")),y((L)=>q(K,"fg",z.textMuted,L)),K}}),null),U(V,b(G0,{get when(){return J.copilotStatus()},children:(K)=>(()=>{var L=W("box"),A=W("text");return D(L,A),q(L,"flexDirection","column"),q(L,"gap",0),q(A,"wrapMode","word"),U(A,()=>Y(K())),U(L,()=>{let O=K().account;if(O.kind==="token")return(()=>{var R=W("text");return U(R,()=>F("settings.accounts.tokenConfigured",{source:O.source})),y((x)=>q(R,"fg",z.success,x)),R})();if(O.kind==="oauth")return(()=>{var R=W("text");return U(R,()=>F("settings.accounts.copilotDetected")),y((x)=>q(R,"fg",z.success,x)),R})();return(()=>{var R=W("text");return U(R,()=>F("settings.accounts.notLoggedIn")),y((x)=>q(R,"fg",z.textMuted,x)),R})()},null),U(L,b(G0,{get when(){return K().accountError},children:(O)=>(()=>{var R=W("text");return q(R,"wrapMode","word"),U(R,()=>`! ${O()}`),y((x)=>q(R,"fg",z.warning,x)),R})()}),null),y((O)=>q(A,"fg",K().binary.found?z.textMuted:z.warning,O)),L})()}),null),y((K)=>{var L=z.text,A=s0.BOLD,O=z.textMuted,R=z.text,x=s0.BOLD,a=z.text,S=s0.BOLD,C=z.text,M=s0.BOLD;return L!==K.e&&(K.e=q(X,"fg",L,K.e)),A!==K.t&&(K.t=q(X,"attributes",A,K.t)),O!==K.a&&(K.a=q(G,"fg",O,K.a)),R!==K.o&&(K.o=q(f,"fg",R,K.o)),x!==K.i&&(K.i=q(f,"attributes",x,K.i)),a!==K.n&&(K.n=q(B,"fg",a,K.n)),S!==K.s&&(K.s=q(B,"attributes",S,K.s)),C!==K.h&&(K.h=q(j,"fg",C,K.h)),M!==K.r&&(K.r=q(j,"attributes",M,K.r)),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}),Z})()}function e3(J){let{theme:z}=i0(),Y=()=>J.level()==="body",Z=()=>Y()&&J.bodyRow()===0,X=()=>Y()&&J.bodyRow()===1,G=()=>Y()&&J.bodyRow()===2,Q=(B)=>B?z.primary:z.textMuted,f=(B)=>B?s0.BOLD|s0.UNDERLINE:void 0,H;return r0(()=>{if(J.body()===""&&H&&H.plainText!=="")H.setText("")}),(()=>{var B=W("box"),V=W("text"),j=W("text"),K=W("box"),L=W("box"),A=W("text"),O=W("input"),R=W("box"),x=W("text"),a=W("textarea"),S=W("box"),C=W("text");return D(B,V),D(B,j),D(B,K),q(B,"flexDirection","column"),q(B,"gap",1),U(V,()=>F("settings.feedback.title")),q(j,"wrapMode","word"),U(j,()=>F("settings.feedback.hint")),D(K,L),D(K,R),D(K,S),q(K,"flexDirection","column"),q(K,"gap",1),D(L,A),D(L,O),q(L,"gap",0),U(A,()=>F("settings.feedback.titleLabel")),q(O,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(0)}),q(O,"onInput",(M)=>J.setTitle(DJ(M))),q(O,"onSubmit",()=>J.onTitleSubmit()),D(R,x),D(R,a),q(R,"gap",0),U(x,()=>F("settings.feedback.descriptionLabel")),dz((M)=>{H=M},a),q(a,"height",4),q(a,"wrapMode","word"),q(a,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(1)}),q(a,"onContentChange",()=>J.setBody(H?.plainText??"")),D(S,C),q(S,"flexDirection","row"),q(S,"paddingLeft",1),q(S,"paddingRight",1),q(S,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(2),J.submit()}),U(C,()=>F("settings.feedback.send")),U(B,b(G0,{get when(){return J.status()},get children(){var M=W("text");return q(M,"wrapMode","word"),U(M,()=>J.status()),y((I)=>q(M,"fg",J.status().startsWith("error:")?z.warning:z.success,I)),M}}),null),y((M)=>{var I=z.text,$=s0.BOLD,i=z.textMuted,e=Q(Z()),J0=f(Z()),T=J.title(),f0=F("settings.feedback.titlePlaceholder"),_=Z(),W0=Q(X()),R0=f(X()),V0=J.body(),t=F("settings.feedback.descriptionPlaceholder"),P=X(),N=G()?z.primary:z.backgroundElement,p=G()?z.selectedListItemText:z.accent,u=s0.BOLD;return I!==M.e&&(M.e=q(V,"fg",I,M.e)),$!==M.t&&(M.t=q(V,"attributes",$,M.t)),i!==M.a&&(M.a=q(j,"fg",i,M.a)),e!==M.o&&(M.o=q(A,"fg",e,M.o)),J0!==M.i&&(M.i=q(A,"attributes",J0,M.i)),T!==M.n&&(M.n=q(O,"value",T,M.n)),f0!==M.s&&(M.s=q(O,"placeholder",f0,M.s)),_!==M.h&&(M.h=q(O,"focused",_,M.h)),W0!==M.r&&(M.r=q(x,"fg",W0,M.r)),R0!==M.d&&(M.d=q(x,"attributes",R0,M.d)),V0!==M.l&&(M.l=q(a,"initialValue",V0,M.l)),t!==M.u&&(M.u=q(a,"placeholder",t,M.u)),P!==M.c&&(M.c=q(a,"focused",P,M.c)),N!==M.w&&(M.w=q(S,"backgroundColor",N,M.w)),p!==M.m&&(M.m=q(C,"fg",p,M.m)),u!==M.f&&(M.f=q(C,"attributes",u,M.f)),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,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0,w:void 0,m:void 0,f:void 0}),B})()}function JM(J){let{theme:z}=i0(),Y=()=>J.level()==="body"&&J.bodyRow()===0,Z=()=>J.level()==="body"&&J.bodyRow()===1,X=()=>kQ(NQ(J.hasDaemon),"remote-projects"),G=()=>J.level()==="body"&&J.bodyRow()===X(),Q=()=>kQ(NQ(J.hasDaemon),"auto-status"),f=()=>J.level()==="body"&&J.bodyRow()===Q(),H=()=>kQ(NQ(J.hasDaemon),"dispatcher"),B=()=>J.level()==="body"&&J.bodyRow()===H();return(()=>{var V=W("box"),j=W("text"),K=W("text"),L=W("box"),A=W("text"),O=W("text"),R=W("box"),x=W("text"),a=W("text"),S=W("box"),C=W("text"),M=W("text"),I=W("box"),$=W("text"),i=W("text"),e=W("box"),J0=W("text");return D(V,j),D(V,K),D(V,L),D(V,O),D(V,R),q(V,"flexDirection","column"),q(V,"gap",1),U(j,()=>F("settings.dev.reset")),q(K,"wrapMode","word"),U(K,()=>F("settings.dev.resetHint")),D(L,A),q(L,"flexDirection","row"),q(L,"paddingLeft",1),q(L,"paddingRight",1),q(L,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(0),J.confirmReset()}),U(A,()=>F("settings.dev.resetButton")),U(V,b(G0,{get when(){return J.hasDaemon},get children(){var T=W("box"),f0=W("text"),_=W("text"),W0=W("box"),R0=W("text");return D(T,f0),D(T,_),D(T,W0),q(T,"flexDirection","column"),q(T,"gap",0),q(T,"paddingTop",1),U(f0,()=>F("settings.dev.restart")),q(_,"wrapMode","word"),U(_,()=>F("settings.dev.restartHint")),D(W0,R0),q(W0,"flexDirection","row"),q(W0,"paddingLeft",1),q(W0,"paddingRight",1),q(W0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(1),J.confirmRestartDaemon()}),U(R0,()=>F("settings.dev.restartButton")),y((V0)=>{var t=z.text,P=s0.BOLD,N=z.textMuted,p=Z()?z.primary:z.backgroundElement,u=Z()?z.selectedListItemText:z.accent,d=s0.BOLD;return t!==V0.e&&(V0.e=q(f0,"fg",t,V0.e)),P!==V0.t&&(V0.t=q(f0,"attributes",P,V0.t)),N!==V0.a&&(V0.a=q(_,"fg",N,V0.a)),p!==V0.o&&(V0.o=q(W0,"backgroundColor",p,V0.o)),u!==V0.i&&(V0.i=q(R0,"fg",u,V0.i)),d!==V0.n&&(V0.n=q(R0,"attributes",d,V0.n)),V0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),T}}),O),q(O,"wrapMode","word"),U(O,()=>F("settings.dev.doctorHint")),D(R,x),D(R,a),D(R,S),D(R,M),D(R,I),D(R,i),D(R,e),q(R,"flexDirection","column"),q(R,"gap",0),q(R,"paddingTop",1),U(x,()=>F("settings.dev.experimental")),q(a,"wrapMode","word"),U(a,()=>F("settings.dev.remoteHint")),D(S,C),q(S,"flexDirection","row"),q(S,"paddingLeft",1),q(S,"paddingRight",1),q(S,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(X()),J.toggleRemoteProjects()}),U(C,(()=>{var T=u0(()=>!!J.remoteProjectsEnabled());return()=>T()?F("settings.dev.remoteOn"):F("settings.dev.remoteOff")})()),q(M,"wrapMode","word"),U(M,()=>F("settings.dev.autoStatusHint")),D(I,$),q(I,"flexDirection","row"),q(I,"paddingLeft",1),q(I,"paddingRight",1),q(I,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(Q()),J.toggleAutoStatus()}),U($,(()=>{var T=u0(()=>!!J.autoStatusEnabled());return()=>T()?F("settings.dev.autoStatusOn"):F("settings.dev.autoStatusOff")})()),q(i,"wrapMode","word"),U(i,()=>F("settings.dev.dispatcherHint")),D(e,J0),q(e,"flexDirection","row"),q(e,"paddingLeft",1),q(e,"paddingRight",1),q(e,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(H()),J.toggleDispatcher()}),U(J0,(()=>{var T=u0(()=>!!J.dispatcherEnabled());return()=>T()?F("settings.dev.dispatcherOn"):F("settings.dev.dispatcherOff")})()),y((T)=>{var f0=z.text,_=s0.BOLD,W0=z.textMuted,R0=Y()?z.primary:z.backgroundElement,V0=Y()?z.selectedListItemText:z.warning,t=s0.BOLD,P=z.textMuted,N=z.text,p=s0.BOLD,u=z.textMuted,d=G()?z.primary:z.backgroundElement,o=G()?z.selectedListItemText:z.text,Q0=J.remoteProjectsEnabled()?s0.BOLD:void 0,g0=z.textMuted,P0=f()?z.primary:z.backgroundElement,N0=f()?z.selectedListItemText:z.text,b0=J.autoStatusEnabled()?s0.BOLD:void 0,x0=z.textMuted,v=B()?z.primary:z.backgroundElement,k0=B()?z.selectedListItemText:z.text,X0=J.dispatcherEnabled()?s0.BOLD:void 0;return f0!==T.e&&(T.e=q(j,"fg",f0,T.e)),_!==T.t&&(T.t=q(j,"attributes",_,T.t)),W0!==T.a&&(T.a=q(K,"fg",W0,T.a)),R0!==T.o&&(T.o=q(L,"backgroundColor",R0,T.o)),V0!==T.i&&(T.i=q(A,"fg",V0,T.i)),t!==T.n&&(T.n=q(A,"attributes",t,T.n)),P!==T.s&&(T.s=q(O,"fg",P,T.s)),N!==T.h&&(T.h=q(x,"fg",N,T.h)),p!==T.r&&(T.r=q(x,"attributes",p,T.r)),u!==T.d&&(T.d=q(a,"fg",u,T.d)),d!==T.l&&(T.l=q(S,"backgroundColor",d,T.l)),o!==T.u&&(T.u=q(C,"fg",o,T.u)),Q0!==T.c&&(T.c=q(C,"attributes",Q0,T.c)),g0!==T.w&&(T.w=q(M,"fg",g0,T.w)),P0!==T.m&&(T.m=q(I,"backgroundColor",P0,T.m)),N0!==T.f&&(T.f=q($,"fg",N0,T.f)),b0!==T.y&&(T.y=q($,"attributes",b0,T.y)),x0!==T.g&&(T.g=q(i,"fg",x0,T.g)),v!==T.p&&(T.p=q(e,"backgroundColor",v,T.p)),k0!==T.b&&(T.b=q(J0,"fg",k0,T.b)),X0!==T.T&&(T.T=q(J0,"attributes",X0,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 zM(){let{theme:J}=i0(),z=L3(),Y=Object.keys(fB).sort();return(()=>{var Z=W("box"),X=W("text"),G=W("text"),Q=W("box"),f=W("text"),H=W("text"),B=W("text"),V=W("text");return D(Z,X),D(Z,G),D(Z,Q),D(Z,B),D(Z,V),q(Z,"flexDirection","column"),q(Z,"gap",1),U(X,()=>F("settings.keybindings.title")),q(G,"wrapMode","word"),U(G,()=>F("settings.keybindings.hint")),D(Q,f),D(Q,H),q(Q,"flexDirection","column"),q(Q,"gap",0),U(f,()=>F("settings.keybindings.configFile")),q(H,"wrapMode","word"),U(H,()=>z.path,null),U(H,(()=>{var j=u0(()=>!!z.exists);return()=>j()?"":F("settings.keybindings.notCreated")})(),null),U(Z,b(G0,{get when(){return!z.exists},get children(){var j=W("box"),K=W("text"),L=W("text"),A=W("text"),O=W("text"),R=W("text"),x=W("text"),a=W("text"),S=W("text"),C=W("text"),M=W("text");return D(j,K),D(j,L),D(j,A),D(j,O),D(j,R),D(j,x),D(j,a),D(j,S),D(j,C),D(j,M),q(j,"flexDirection","column"),q(j,"gap",0),U(K,()=>F("settings.keybindings.example")),D(L,E0("bindings:")),D(A,E0(" chat.fork.new: ctrl+g # string = one chord")),D(O,E0(" sidebar.select: [enter] # list = several chords")),D(R,E0(" files.createPR: null # null = unbind")),D(x,E0(" tmux.tab.new: ctrl+y # tmux session key (see below)")),D(a,E0(" tmux.layout.workspaceSplit: g # prefix g")),D(S,E0("darwin: # platform overlay (also: linux)")),D(C,E0(" bindings:")),D(M,E0(" palette.open: [cmd+p, ctrl+p]")),y((I)=>{var $=J.text,i=s0.BOLD,e=J.textMuted,J0=J.textMuted,T=J.textMuted,f0=J.textMuted,_=J.textMuted,W0=J.textMuted,R0=J.textMuted,V0=J.textMuted,t=J.textMuted;return $!==I.e&&(I.e=q(K,"fg",$,I.e)),i!==I.t&&(I.t=q(K,"attributes",i,I.t)),e!==I.a&&(I.a=q(L,"fg",e,I.a)),J0!==I.o&&(I.o=q(A,"fg",J0,I.o)),T!==I.i&&(I.i=q(O,"fg",T,I.i)),f0!==I.n&&(I.n=q(R,"fg",f0,I.n)),_!==I.s&&(I.s=q(x,"fg",_,I.s)),W0!==I.h&&(I.h=q(a,"fg",W0,I.h)),R0!==I.r&&(I.r=q(S,"fg",R0,I.r)),V0!==I.d&&(I.d=q(C,"fg",V0,I.d)),t!==I.l&&(I.l=q(M,"fg",t,I.l)),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}),j}}),B),U(Z,b(G0,{get when(){return z.exists},get children(){var j=W("box"),K=W("text");return D(j,K),q(j,"flexDirection","column"),q(j,"gap",0),U(K,()=>F("settings.keybindings.overridesApplied")),U(j,b(G0,{get when(){return z.applied.length===0},get children(){var L=W("text");return U(L,()=>F("settings.keybindings.none")),y((A)=>q(L,"fg",J.textMuted,A)),L}}),null),U(j,b(X1,{get each(){return z.applied},children:(L)=>(()=>{var A=W("text");return q(A,"wrapMode","word"),U(A,()=>`${L.id} \u2192 ${L.keys.length>0?L.keys.join(" / "):"(unbound)"} (default: ${L.defaultKeys.join(" / ")})`),y((O)=>q(A,"fg",J.text,O)),A})()}),null),y((L)=>{var A=J.text,O=s0.BOLD;return A!==L.e&&(L.e=q(K,"fg",A,L.e)),O!==L.t&&(L.t=q(K,"attributes",O,L.t)),L},{e:void 0,t:void 0}),j}}),B),U(Z,b(G0,{get when(){return z.warnings.length>0},get children(){var j=W("box"),K=W("text");return D(j,K),q(j,"flexDirection","column"),q(j,"gap",0),U(K,()=>F("settings.keybindings.warnings")),U(j,b(X1,{get each(){return z.warnings},children:(L)=>(()=>{var A=W("text");return q(A,"wrapMode","word"),U(A,`! ${L}`),y((O)=>q(A,"fg",J.warning,O)),A})()}),null),y((L)=>{var A=J.warning,O=s0.BOLD;return A!==L.e&&(L.e=q(K,"fg",A,L.e)),O!==L.t&&(L.t=q(K,"attributes",O,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.")),q(B,"wrapMode","word"),q(V,"wrapMode","word"),U(V,()=>`Fixed (not rebindable): ${Y.join(", ")}.`),y((j)=>{var K=J.text,L=s0.BOLD,A=J.textMuted,O=J.text,R=s0.BOLD,x=J.textMuted,a=J.textMuted,S=J.textMuted;return K!==j.e&&(j.e=q(X,"fg",K,j.e)),L!==j.t&&(j.t=q(X,"attributes",L,j.t)),A!==j.a&&(j.a=q(G,"fg",A,j.a)),O!==j.o&&(j.o=q(f,"fg",O,j.o)),R!==j.i&&(j.i=q(f,"attributes",R,j.i)),x!==j.n&&(j.n=q(H,"fg",x,j.n)),a!==j.s&&(j.s=q(B,"fg",a,j.s)),S!==j.h&&(j.h=q(V,"fg",S,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 YM=k(()=>{w();w();w();w();w();w();w();w();w();W1();P9();m1();GJ();aX();nq();_X();JW()});import{TextAttributes as Dx}from"@opentui/core";function Lx(J){return J.split(/[-_]+/).filter((z)=>z.length>0).map((z)=>z.charAt(0).toUpperCase()+z.slice(1)).join(" ")}function mZ(J){let z=d1(),Y=i0(),Z=HJ(),{theme:X}=Y,[G,Q]=r("sidebar"),[f,H]=r("general"),[B,V]=r(0),[j,K]=r(0),[L,A]=r(""),[O,R]=r(""),[x,a]=r(""),S=U0(()=>Y.all().slice().sort()),[,C]=r(Math.max(0,S().findIndex((h)=>h===Y.selected))),M=$3(J.orchestrator),[I,$]=r(null),[i,e]=r(null),[J0,T]=r(null),f0=!1;r0(()=>{if(f()!=="accounts"||f0)return;f0=!0,eQ().then($),Jq().then(e),zq().then(T)});function _(){return p3(f(),{themeNames:S(),focusAccentSlots:EZ,engineList:v0(),hasDaemon:M})}function W0(){return _().length}function R0(){return SZ(J.kv.get(qY,bZ))}function V0(h){if(Y.selected===h)return;if(!Y.set(h))return;J.kv.set("activeTheme",h),J.onVisualPrefsChange?.()}function t(){return M9()}function P(h){if(M9()===h)return;LQ(h),J.kv.set(CH,h),J.onVisualPrefsChange?.()}function N(h){if(Y.transparentBackground===h)return;Y.setTransparentBackground(h),J.kv.set("transparentBackground",h),J.onVisualPrefsChange?.()}function p(){N(!Y.transparentBackground)}function u(h){if(Y.focusAccent===h)return;Y.setFocusAccent(h),J.kv.set("focusAccent",h),J.onVisualPrefsChange?.()}function d(h){J.kv.set(qY,h)}function o(){return J.kv.get("notifications.toast.enabled",!0)!==!1}function Q0(){return J.kv.get("notifications.sound.enabled",!0)!==!1}function g0(){J.kv.set("notifications.toast.enabled",!o())}function P0(){J.kv.set("notifications.sound.enabled",!Q0())}function N0(){return J.kv.get(Zf,!0)!==!1}function b0(){J.kv.set(Zf,!N0())}function x0(){return J.kv.get("experimental.remoteProjects",!1)===!0}function v(){J.kv.set("experimental.remoteProjects",!x0())}function k0(){return J.kv.get(WZ,!1)===!0}function X0(){J.kv.set(WZ,!k0())}function L0(){return J.kv.get(VZ,!1)===!0}function a0(){J.kv.set(VZ,!L0())}function e0(){let h=J.kv.get("customEngineIds",[]);return Array.isArray(h)?h.filter((A0)=>typeof A0==="string"&&A0.trim().length>0):[]}function v0(){return[...l1,...e0()]}function _0(h){let A0=J.kv.get(Dz(h),"");return typeof A0==="string"?A0.trim():""}function R1(h){return _0(h)||NG(h).join(" ")}function s(h){return qJ(h)&&_0(h).length===0&&!I0(h)}function K0(h){let A0=J.kv.get(Lz(h),"");return typeof A0==="string"?A0.trim():""}function I0(h){return K0(h).length>0}function m0(h){return K0(h)||QB[h]||h}let[Q1,w0]=r(xJ(C1("lastSelectedVendor"),e0()));function q1(h){return Q1()===h}function g1(h){s1("lastSelectedVendor",h),J.kv.set("lastSelectedVendor",h),w0(h)}async function z1(h){let A0=await KY.show(z,R1(h),{dialogTitle:`${m0(h)} launch command`,fieldLabel:"command",submitLabel:"save",allowEmpty:!0});if(A0===void 0)return;J.kv.set(Dz(h),A0.trim())}async function z0(h){let A0=await KY.show(z,m0(h),{dialogTitle:`${m0(h)} display name (blank = default)`,fieldLabel:"name",submitLabel:"save",allowEmpty:!0});if(A0===void 0)return;J.kv.set(Lz(h),A0.trim())}function Z0(h){if(J.kv.set(Dz(h),""),J.kv.set(Lz(h),""),!qJ(h))J.kv.set("customEngineIds",e0().filter((A0)=>A0!==h)),K((A0)=>Math.max(0,Math.min(A0,v0().length)))}async function j0(){let h=await KY.show(z,"",{dialogTitle:"Add engine",fieldLabel:"id",submitLabel:"next",placeholder:"lowercase slug, e.g. aider"});if(h===void 0)return;let A0=h.trim().toLowerCase();if(!A0||qJ(A0)||e0().includes(A0))return;let j1=await KY.show(z,"",{dialogTitle:`Add engine \xB7 ${A0}`,fieldLabel:"command",submitLabel:"next",placeholder:"e.g. aider --model sonnet"});if(j1===void 0)return;let F1=await KY.show(z,A0,{dialogTitle:`Add engine \xB7 ${A0}`,fieldLabel:"name",submitLabel:"add",allowEmpty:!0});if(J.kv.set("customEngineIds",[...e0(),A0]),j1.trim())J.kv.set(Dz(A0),j1.trim());let k1=F1?.trim()??"";J.kv.set(Lz(A0),k1&&k1!==A0?k1:Lx(A0))}function g(){if(f()!=="engines"||G()!=="body")return null;let h=xH(_(),j());return h?.kind==="engine"?h.vendor:null}function q0(){return NX(J.kv.get(QY,If))}function T0(){let h=kZ.indexOf(q0()),A0=kZ[(h+1)%kZ.length];if(A0)J.kv.set(QY,A0)}function M0(){let h=J.kv.get(PY,"");return typeof h==="string"?h:""}async function O0(){let h=await KY.show(z,M0(),{dialogTitle:"Custom editor command (use {file} for the path)",fieldLabel:"command",submitLabel:"save",allowEmpty:!0});if(h===void 0)return;let A0=h.trim();if(J.kv.set(PY,A0),A0)J.kv.set(QY,"custom")}async function D0(){a("submitting...");try{let h=hX({title:L(),body:O()});a(`sent: ${h.url}`),A(""),R(""),K(0)}catch(h){a(`error: ${h instanceof Error?h.message:String(h)}`)}}let B0=()=>f()==="feedback"&&G()==="body";function t0(h){let A0=j()+h;if(A0<0||A0>2){Q("sidebar");return}K(A0)}function Y1(){if(G()!=="sidebar"||W0()===0)return;if(Q("body"),K(0),f()==="general")C(0)}function o0(h){if(G()==="sidebar"){let F1=(B()+h+vZ.length)%vZ.length;V(F1);let k1=vZ[F1];if(k1)H(k1.id),K(0);return}let A0=W0();if(A0===0)return;let j1=(j()+h+A0)%A0;if(K(j1),xH(_(),j1)?.kind==="theme")C(j1)}function H1(h){H(h),V(vZ.findIndex((A0)=>A0.id===h)),K(0),Q("sidebar")}let u1={theme:(h)=>V0(h.name),language:(h)=>P(h.locale),transparent:()=>p(),focusAccent:(h)=>u(h.slot),toast:()=>g0(),sound:()=>P0(),zenKeepTasks:()=>b0(),surface:(h)=>d(h.surface),editorKind:()=>T0(),editorCustom:()=>void O0(),engine:(h)=>void z1(h.vendor),engineAdd:()=>void j0(),feedbackTitle:()=>K(0),feedbackBody:()=>K(1),feedbackSend:()=>void D0(),devReset:()=>void r9(z,J.kv,Z),devRestartDaemon:()=>void o9(z,J.orchestrator,Z),devRemoteProjects:()=>v(),devAutoStatus:()=>X0(),devDispatcher:()=>a0()};function S0(){let h=xH(_(),j());if(!h)return;u1[h.kind](h)}return D1(()=>({enabled:(!J.standalone||z.stack.length===0)&&!B0(),bindings:[{key:"down",cmd:()=>o0(1)},{key:"up",cmd:()=>o0(-1)},{key:"j",cmd:()=>o0(1)},{key:"k",cmd:()=>o0(-1)},{key:"tab",cmd:()=>o0(1)},{key:"right",cmd:Y1},{key:"l",cmd:Y1},{key:"left",cmd:()=>Q("sidebar")},{key:"h",cmd:()=>Q("sidebar")},{key:"return",cmd:()=>{if(G()==="sidebar"){Y1();return}S0()}},{key:"t",cmd:p},{key:"r",cmd:()=>{let h=g();if(h)z0(h)}},{key:"x",cmd:()=>{let h=g();if(h)Z0(h)}},{key:"d",cmd:()=>{let h=g();if(h)g1(h)}}]})),D1(()=>({enabled:B0(),bindings:[{key:"tab",cmd:()=>t0(1)},{key:"shift+tab",cmd:()=>t0(-1)}]})),D1(()=>({enabled:B0()&&j()===2,bindings:[{key:"return",cmd:()=>void D0()}]})),(()=>{var h=W("box"),A0=W("box"),j1=W("text"),F1=W("text"),k1=W("box"),m=W("box"),y0=W("box"),Y0=W("text");return D(h,A0),D(h,k1),D(h,y0),q(h,"paddingLeft",2),q(h,"paddingRight",2),q(h,"paddingBottom",1),q(h,"gap",1),D(A0,j1),D(A0,F1),q(A0,"flexDirection","row"),q(A0,"justifyContent","space-between"),U(j1,()=>F("settings.title")),q(F1,"onMouseUp",()=>J.onClose()),U(F1,()=>F("settings.esc")),D(k1,m),q(k1,"flexDirection","row"),q(k1,"gap",2),U(k1,b(r3,{level:G,cursor:B,switchSection:H1}),m),q(m,"flexGrow",1),q(m,"flexShrink",1),q(m,"flexDirection","column"),q(m,"gap",1),U(m,b(G0,{get when(){return f()==="general"},get children(){return b(o3,{level:G,bodyRow:j,setLevel:Q,setBodyRow:K,themeNames:S,setThemeCursor:C,selectTheme:V0,currentLocale:t,selectLanguage:P,toggleTransparent:p,selectFocusAccent:u,toastEnabled:o,soundEnabled:Q0,toggleToast:g0,toggleSound:P0,zenKeepsTasks:N0,toggleZenKeepsTasks:b0,settingsSurface:R0,selectSurface:d,editorKind:q0,cycleEditorKind:T0,editorCustomCommand:M0,editEditorCustom:()=>void O0()})}}),null),U(m,b(G0,{get when(){return f()==="engines"},get children(){return b(s3,{level:G,bodyRow:j,setLevel:Q,setBodyRow:K,get vendors(){return v0()},isCustom:(F0)=>!qJ(F0),displayName:m0,commandText:R1,isDefault:s,isDefaultEngine:q1,editEngine:(F0)=>void z1(F0),renameEngine:(F0)=>void z0(F0),resetEngine:Z0,onAddEngine:()=>void j0()})}}),null),U(m,b(G0,{get when(){return f()==="accounts"},get children(){return b(t3,{claudeStatus:I,codexStatus:i,copilotStatus:J0})}}),null),U(m,b(G0,{get when(){return f()==="keys"},get children(){return b(zM,{})}}),null),U(m,b(G0,{get when(){return f()==="feedback"},get children(){return b(e3,{level:G,bodyRow:j,setLevel:Q,setBodyRow:K,title:L,setTitle:(F0)=>{A(F0),a("")},body:O,setBody:(F0)=>{R(F0),a("")},status:x,onTitleSubmit:()=>K(1),submit:()=>void D0()})}}),null),U(m,b(G0,{get when(){return f()==="dev"},get children(){return b(JM,{level:G,bodyRow:j,setLevel:Q,setBodyRow:K,hasDaemon:M,confirmReset:()=>void r9(z,J.kv,Z),confirmRestartDaemon:()=>void o9(z,J.orchestrator,Z),remoteProjectsEnabled:x0,toggleRemoteProjects:v,autoStatusEnabled:k0,toggleAutoStatus:X0,dispatcherEnabled:L0,toggleDispatcher:a0})}}),null),D(y0,Y0),q(y0,"paddingTop",0),U(Y0,(()=>{var F0=u0(()=>!!B0());return()=>F0()?F("settings.nav.feedback"):F("settings.nav.default")})()),y((F0)=>{var c1=Dx.BOLD,LJ=X.text,QJ=X.textMuted,iJ=X.textMuted;return c1!==F0.e&&(F0.e=q(j1,"attributes",c1,F0.e)),LJ!==F0.t&&(F0.t=q(j1,"fg",LJ,F0.t)),QJ!==F0.a&&(F0.a=q(F1,"fg",QJ,F0.a)),iJ!==F0.o&&(F0.o=q(Y0,"fg",iJ,F0.o)),F0},{e:void 0,t:void 0,a:void 0,o:void 0}),h})()}var zW=k(()=>{w();w();w();w();w();w();w();w();W1();ZZ();sJ();rf();CG();Pq();O1();KB();$1();m1();GJ();Tf();yJ();m9();nJ();_9();_3();JW();YM();mZ.show=(J,z,Y)=>{let Z=!1;return new Promise((X)=>{J.replace(()=>b(mZ,{kv:z,orchestrator:Y,onVisualPrefsChange:()=>{Z=!0},onClose:()=>X({visualPrefsChanged:Z})}),()=>X({visualPrefsChanged:Z}))})}});import{TextAttributes as Mx}from"@opentui/core";function XM(){let{theme:J}=i0(),z=cz(),Y=RH(),Z=()=>Y.toasts().slice(-ZM),X=()=>Math.max(0,z().width-Fx-Ox),G=()=>Math.max(0,z().height-Ax-ZM-1);return b(G0,{get when(){return Y.toasts().length>0},get children(){var Q=W("box");return q(Q,"position","absolute"),q(Q,"zIndex",2500),q(Q,"width",40),q(Q,"flexDirection","column"),q(Q,"gap",0),U(Q,b(X1,{get each(){return Z()},children:(f)=>{let H=()=>f.kind==="needs_input"?J.warning:f.kind==="error"?J.error:J.success,B=()=>J.selectedListItemText,V=()=>f.kind==="needs_input"?"?":f.kind==="error"?"\u2715":"\u2713";return(()=>{var j=W("box"),K=W("text"),L=W("text");return D(j,K),D(j,L),q(j,"flexDirection","row"),q(j,"gap",1),q(j,"paddingLeft",1),q(j,"paddingRight",1),q(j,"onMouseUp",()=>Y.dismiss(f.id)),q(K,"wrapMode","none"),U(K,V),q(L,"wrapMode","none"),U(L,()=>f.title),y((A)=>{var O=H(),R=B(),x=Mx.BOLD,a=B();return O!==A.e&&(A.e=q(j,"backgroundColor",O,A.e)),R!==A.t&&(A.t=q(K,"fg",R,A.t)),x!==A.a&&(A.a=q(K,"attributes",x,A.a)),a!==A.o&&(A.o=q(L,"fg",a,A.o)),A},{e:void 0,t:void 0,a:void 0,o:void 0}),j})()}})),y((f)=>{var H=X(),B=G();return H!==f.e&&(f.e=q(Q,"left",H,f.e)),B!==f.t&&(f.t=q(Q,"top",B,f.t)),f},{e:void 0,t:void 0}),Q}})}var ZM=4,Fx=40,Ox=2,Ax=2;var GM=k(()=>{w();w();w();w();w();w();w();W1();gH();m1()});import{TextAttributes as Rx}from"@opentui/core";function gx(J,z){let Y=J?`v${J}`:F("update.skew.olderBuild");return F("update.skew.hint",{daemon:Y,clientVersion:z})}function QM(J){let{theme:z}=i0(),Y=()=>Math.max(4,J.width()-2);return b(G0,{get when(){return J.stale()},get children(){var Z=W("box"),X=W("text"),G=W("box"),Q=W("text"),f=W("box"),H=W("text");return D(Z,X),D(Z,G),D(Z,f),q(Z,"flexDirection","column"),q(Z,"flexShrink",0),q(Z,"paddingLeft",1),q(Z,"paddingRight",1),q(Z,"paddingBottom",1),q(X,"wrapMode","none"),U(X,()=>"\u2594".repeat(Y())),D(G,Q),q(G,"flexDirection","row"),q(G,"gap",1),q(Q,"wrapMode","none"),U(Q,()=>F("update.skew.title")),D(f,H),q(f,"flexDirection","row"),q(f,"gap",1),q(H,"wrapMode","word"),U(H,()=>gx(J.daemonVersion(),J.clientVersion)),y((B)=>{var{warning:V,warning:j}=z,K=Rx.BOLD,L=z.text;return V!==B.e&&(B.e=q(X,"fg",V,B.e)),j!==B.t&&(B.t=q(Q,"fg",j,B.t)),K!==B.a&&(B.a=q(Q,"attributes",K,B.a)),L!==B.o&&(B.o=q(H,"fg",L,B.o)),B},{e:void 0,t:void 0,a:void 0,o:void 0}),Z}})}var qM=k(()=>{w();w();w();w();w();w();W1();m1();GJ()});function fM(J,z){return J.find((Y)=>Y.id!==z&&!Y.archived)}async function Cx(J){let z=J.tasks.find((G)=>G.id===J.taskId);if(!z)return null;let Y=!z.archived;try{await J.orch.setArchived(J.taskId,Y)}catch(G){return J.logger.error(`${J.logPrefix} archive failed:`,G),null}if(!Y)return{archived:Y};let Z=N1(J.taskId),X=fM(J.tasks,J.taskId);if(await hz(Z,X?N1(X.id):void 0).catch((G)=>{J.logger.error(`${J.logPrefix} switch-client failed:`,G)}),J.updateActiveTask)await J.orch.setActiveTask(X?.id??null).catch(()=>{});return await eJ(Z).catch((G)=>{J.logger.error(`${J.logPrefix} kill tmux session failed:`,G)}),{archived:Y,nextTask:X}}async function Nx(J){let z=fM(J.tasks,J.taskId),Y=N1(J.taskId);if(J.switchBeforeKill)await hz(Y,z?N1(z.id):void 0).catch((Z)=>{J.logger.error(`${J.logPrefix} switch-client failed:`,Z)});if(J.updateActiveTask)await J.orch?.setActiveTask(z?.id??null).catch(()=>{});return await eJ(Y).catch((Z)=>{J.logger.error(`${J.logPrefix} kill tmux session failed:`,Z)}),{nextTask:z}}async function HM(J,z){if(!J.orch)return;let Y=J.tasks().find((X)=>X.id===z);if(!Y)return;if(!Y.archived){if(!await J.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 Cx({orch:J.orch,tasks:J.tasks(),taskId:z,logger:J.logger,logPrefix:J.logPrefix,updateActiveTask:J.updateActiveTask}))return;await J.reload?.()}async function BM(J,z){if(!J.orch)return;let Y=J.tasks().find((Q)=>Q.id===z);if(!Y)return;if(Y.kind==="main"){if(!await J.confirm({title:`Remove project "${Y.title}"?`,body:"Forgets it from the projects list. The repo, its branches, worktrees, and any tasks under it stay on disk \u2014 re-add it with `kobe add`.",cancelLabel:"cancel",confirmLabel:"remove"}))return;try{await J.orch.forgetProject(Y.repo)}catch(f){J.logger.error(`${J.logPrefix} forget project failed:`,f),J.notifyError?.(`Couldn't remove: ${f instanceof Error?f.message:String(f)}`);return}await J.reload?.();return}if(!await J.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 X=!1;try{await J.orch.deleteTask(z),X=!0}catch(Q){if((Q instanceof Error?Q.message:String(Q)).includes(t8)){if(await J.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 J.orch.deleteTask(z,{force:!0}),X=!0}catch(B){J.logger.error(`${J.logPrefix} force delete failed:`,B),J.notifyError?.(`Couldn't delete: ${B instanceof Error?B.message:String(B)}`)}}else J.logger.error(`${J.logPrefix} delete failed:`,Q),J.notifyError?.(`Couldn't delete: ${Q instanceof Error?Q.message:String(Q)}`)}if(!X)return;let{nextTask:G}=await Nx({orch:J.orch,tasks:J.tasks(),taskId:z,logger:J.logger,logPrefix:J.logPrefix,switchBeforeKill:J.switchBeforeKill,updateActiveTask:J.updateActiveTask});await J.reload?.(),J.onTaskDeleted?.(z,G)}async function jM(J,z){let Y=J.tasks().find((X)=>X.id===z);if(!Y)return;let Z=await J.promptText(Y.title);if(!Z||!J.orch)return;try{await J.orch.setTitle(z,Z)}catch(X){J.logger.error(`${J.logPrefix} task.rename failed:`,X),J.notifyError?.(`Couldn't rename task: ${X instanceof Error?X.message:String(X)}`);return}await J.reload?.()}async function WM(J,z){let Y=J.tasks().find((X)=>X.id===z);if(!Y||Y.kind==="main")return;let Z=await J.promptText(Y.branch,{dialogTitle:"Rename branch",fieldLabel:"branch"});if(!Z||!J.orch)return;try{await J.orch.setBranch(z,Z)}catch(X){J.logger.error(`${J.logPrefix} task.setBranch failed:`,X),J.notifyError?.(`Couldn't rename branch: ${X instanceof Error?X.message:String(X)}`);return}await J.reload?.()}async function VM(J,z){let Y=J.tasks().find((G)=>G.id===z);if(!Y||!J.orch)return;let Z=await JY(),X=LY(Z,Y.vendor??_1);try{await J.orch.setVendor(z,X)}catch(G){J.logger.error(`${J.logPrefix} task.setVendor failed:`,G),J.notifyError?.(`Couldn't switch engine: ${G instanceof Error?G.message:String(G)}`);return}J.notifyInfo?.(`Engine \u2192 ${KZ(X)} (applies on reopen)`),await J.reload?.()}async function KM(J){let z=gJ(),Y=J.cursorRepo()??z[0]??process.cwd();if(J.openCreateSurface&&await J.openCreateSurface(Y))return;let Z=J.lastVendor()??_1,X=await JY();if(X.length===0)J.notifyInfo?.("No engine CLI detected \u2014 install claude or codex, or add one in Settings \u2192 Engines");let G=J.orch,Q=await J.promptNewTask(Y,z,{defaultVendor:Z,availableVendors:X,discoverAdoptable:G?(H)=>G.discoverAdoptableWorktrees(H):void 0});if(!Q)return;if(J.rememberVendor(Q.vendor),rz(Q.repo),J.onRepoSaved?.(),!G){J.logger.error(`${J.logPrefix} no daemon; cannot create task`);return}J.notifyInfo?.("Creating task\u2026");let f;if(Q.mode==="adopt"){let H=Q.adopt.length,B=0,V;for(let j of Q.adopt)try{f=(await G.adoptWorktree({repo:Q.repo,worktreePath:j.worktreePath,branch:j.branch,vendor:Q.vendor})).id,B++}catch(K){if(V===void 0)V=K instanceof Error?K.message:String(K);J.logger.error(`${J.logPrefix} adoptWorktree failed for ${j.worktreePath}:`,K)}if(B===0){J.notifyError?.(F("newTask.adopt.summaryNone",{error:V??""}));return}if(B<H)J.notifyInfo?.(F("newTask.adopt.summaryPartial",{done:B,total:H}));else J.notifyInfo?.(F("newTask.adopt.summaryAll",{count:B}))}else try{f=(await G.createTask({repo:Q.repo,baseRef:Q.baseRef,vendor:Q.vendor})).id}catch(H){J.logger.error(`${J.logPrefix} task.create failed:`,H),J.notifyError?.(`Couldn't create task: ${H instanceof Error?H.message:String(H)}`);return}if(await J.reload?.(),f)J.selectTask?.(f),await J.enterTask?.(f)}var UM=k(()=>{ZZ();sJ();zB();O1();GJ();rJ();$1();YJ()});function tX(J,z){if(z<=0)return"";let Y=[...J];if(Y.length<=z)return J;return`${Y.slice(0,Math.max(0,z-1)).join("")}\u2026`}function uH(J,z){if(z<=0)return"";let Y=[...J];if(Y.length<=z)return J;return`\u2026${Y.slice(Y.length-Math.max(0,z-1)).join("")}`}import{spawn as kx}from"child_process";import{existsSync as bx}from"fs";import{basename as Sx,delimiter as Ix,isAbsolute as Tx,join as yx}from"path";function YW(J,z,Y){if(Tx(J))return Y(J);let Z=z.PATH??"";for(let X of Z.split(Ix)){if(!X)continue;if(Y(yx(X,J)))return!0}return!1}function Ex(J){let z=Sx(J);if(z==="code")return"VS Code";if(z==="cursor")return"Cursor";if(z==="windsurf")return"Windsurf";if(z==="zed")return"Zed";return z||J}function DM(J={}){let z=J.env??process.env,Y=J.platform??process.platform,Z=J.exists??bx,X=z.KOBE_OPEN_EDITOR?.trim();if(X)return{id:"env",label:Ex(X),command:X,args:[]};for(let G of xx)if(YW(G.command,z,Z))return{id:G.id,label:G.label,command:G.command,args:[]};if(Y==="darwin"&&YW("open",z,Z)){for(let G of ux)if(G.paths.some((Q)=>Z(Q)))return{id:G.id,label:G.label,command:"open",args:["-a",G.appName]};return{id:"mac-open",label:"Finder",command:"open",args:[]}}if(Y==="linux"&&YW("xdg-open",z,Z))return{id:"xdg-open",label:"Open",command:"xdg-open",args:[]};return null}function wx(J,z){return[z.command,[...z.args,J]]}function LM(J,z,Y={}){if(!J)return!1;let Z=Y.spawn??kx,[X,G]=wx(J,z);try{let Q=Z(X,G,{detached:!0,stdio:"ignore"});if(Q.pid===void 0)return!1;return Q.unref(),!0}catch{return!1}}var xx,ux;var MM=k(()=>{xx=[{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"}],ux=[{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 EH(J){let z=new Map;function Y(Z){let X=z.get(Z);if(!X){let[G,Q]=r(J.initial,J.equals?{equals:J.equals}:void 0);X={read:G,write:(f)=>Q(()=>f),inFlight:!1,nextAllowedAt:0},z.set(Z,X)}return X}return{read(Z){if(!Z)return J.initial;return Y(Z).read()},poll(Z){if(!Z)return;let X=Y(Z);JX(X,J,(G)=>J.run(Z,G),(G)=>X.write(G))},reset(){z.clear()}}}var bQ=k(()=>{W1();zX();zX()});import{stat as Px}from"fs/promises";import{join as hx}from"path";async function dx(J){try{let z=await Px(hx(J,".git","HEAD"));return`${z.mtimeMs}:${z.size}`}catch{return null}}async function nx(J,z,Y=YY){let Z=await dx(J);if(Z!==null){let f=FM.get(J);if(f&&f.fingerprint===Z)return f.value}let X="",G=await Y("git",["symbolic-ref","--short","HEAD"],{cwd:J,env:cJ(),signal:z}),Q=G.status===0?G.stdout.trim():"";if(Q&&Q!=="HEAD")X=Q;else if((await Y("git",["rev-parse","--verify","HEAD"],{cwd:J,env:cJ(),signal:z})).status===0)X="(detached)";if(Z!==null)FM.set(J,{fingerprint:Z,value:X});return X}function AM(J){return OM.read(J)}function RM(J){OM.poll(J)}var vx=2000,mx=30000,cx=1500,FM,OM;var gM=k(()=>{hY();bQ();FM=new Map;OM=EH({initial:"",timeoutMs:vx,slowRetryMs:mx,minIntervalMs:cx,run:(J,z)=>nx(J,z)})});function ZW(J){let z=J.scheduleTimeout??((H,B)=>{let V=setTimeout(H,B);return()=>clearTimeout(V)}),Y=!1,Z=null,X=()=>{Y=!0,Z?.(),Z=z(()=>{Y=!1,Z=null},700)},G=()=>{Y=!1,Z?.(),Z=null},Q=(H)=>{let B=J.getFlatIds();if(B.length===0)return;let V=J.getCursor(),j=V<0?0:V,K=Math.min(B.length-1,Math.max(0,j+H));J.setCursor(K)},f=(H)=>{let B=J.getFlatIds();if(B.length===0)return;J.setCursor(Math.min(B.length-1,Math.max(0,H)))};return{moveDown(){G(),Q(1)},moveUp(){G(),Q(-1)},selectCurrent(){G();let H=J.getFlatIds(),B=J.getCursor();if(B<0||B>=H.length)return;let V=H[B];if(V!==void 0)J.onSelect(V)},pressG(){if(Y)G(),f(0);else X()},pressShiftG(){G(),f(J.getFlatIds().length-1)},isChordArmed(){return Y},disarmChord(){G()}}}function CM(J){let z=ZW({getCursor:()=>J.cursorIndex(),setCursor:(G)=>J.setCursorIndex(G),getFlatIds:()=>J.flatTaskIds(),onSelect:(G)=>J.onSelect(G)}),Y=()=>{let G=J.flatTaskIds(),Q=J.cursorIndex();if(Q<0||Q>=G.length)return;return G[Q]},Z=()=>J.searchMode?.()??!1,X=()=>J.moveMode?.()??!1;D1(()=>({enabled:J.focused()&&!Z(),bindings:$Y({"sidebar.nav":(G,Q)=>{let f=(Q??0)%2===0;if(X()){let H=Y();if(H===void 0)return;J.onMoveRequest?.(H,f?1:-1);return}if(f)z.moveDown();else z.moveUp()},"sidebar.select":()=>{if(X()){J.onMoveModeExit?.();return}z.selectCurrent()},"sidebar.goto":(G)=>{if(X())return;if(G.shift)z.pressShiftG();else z.pressG()},"sidebar.delete":()=>{if(X())return;let G=Y();if(G!==void 0)J.onDeleteRequest?.(G)},"sidebar.archive":()=>{if(X())return;let G=Y();if(G!==void 0)J.onArchiveRequest?.(G)},"sidebar.localMerge":(G)=>{if(!G.shift)return;let Q=Y();if(Q!==void 0)J.onLocalMergeRequest?.(Q)},"sidebar.rename":()=>{if(X())return;let G=Y();if(G!==void 0)J.onRenameRequest?.(G)},"sidebar.pin":(G)=>{if(X())return;if(!G.shift)return;let Q=Y();if(Q!==void 0)J.onPinRequest?.(Q)},"sidebar.search.enter":()=>{if(X())return;J.onSearchEnter?.()},"sidebar.sort":()=>{if(X())return;J.onSortModeToggle?.()},"sidebar.projectFilter":()=>{if(X())return;J.onProjectFilterToggle?.()}})})),D1(()=>({enabled:J.focused()&&X(),bindings:[{key:"escape",cmd:()=>J.onMoveModeExit?.()}]})),D1(()=>({enabled:J.focused(),bindings:$Y({"sidebar.view":(G,Q)=>{J.onViewSwitch?.((Q??0)%2===0?-1:1)}})})),D1(()=>({enabled:J.focused()&&Z(),bindings:$Y({"sidebar.search.nav":(G,Q)=>{if((Q??0)%2===0)z.moveDown();else z.moveUp()},"sidebar.search.submit":()=>{z.selectCurrent(),J.onSearchExit?.(!0)},"sidebar.search.cancel":()=>J.onSearchExit?.(!1)})}))}var NM=k(()=>{pX();yJ()});function XW(J,z){return tX(J,z)}function GW(J,z){return` ${XW(J,Math.max(0,z))}`}var kM=()=>{};function lx(J){switch(J){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 $x(J){switch(J){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 IM(J){switch(J.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 ax(){return F("tasks.subtitle.noTracking")}function _x(){return F("tasks.subtitle.materializing")}function px(J){if(J.kind==="main")return!1;return J.vendor!==void 0&&!qJ(J.vendor)}function QW(J){let{task:z}=J,Y=z.kind==="main",Z=Y?J.mainBranch??"":z.branch,X=ix[z.status],G=J.activity?.state,Q=G!==void 0,f=rx(G),H=$x(G),B=px(z)&&!Q,V=J.job!==void 0,j=V||!B&&(G==="running"||J.live||!Q&&!Y&&z.status==="in_progress"),K=eX[J.spinnerFrame]??eX[0],L=V?"primary":B?"textMuted":H?.tone??(j?"primary":f?.tone??X.tone),A=B?ax():lx(z.status),O=V?J.truncateBranch(_x(),J.subtitleBudget):H?J.truncateBranch(H.text,J.subtitleBudget):Z.length>0?J.truncateBranch(Z,J.subtitleBudget):J.truncateBranch(A,J.subtitleBudget),R=B?bM:f?.glyph??X.glyph,x=B?bM:f?.glyph??"\u2605";return{isMain:Y,titleText:Y?bz(z.repo):z.title,subtitleText:O,loading:j,stateGlyph:j?K:R,projectGlyph:j?K:x,tone:L}}function qW(J,z){if(!J.loading)return J;let Y=eX[z()%eX.length]??"\u280B";if(Y===J.stateGlyph&&Y===J.projectGlyph)return J;return{...J,stateGlyph:Y,projectGlyph:Y}}function rx(J){switch(J){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 ix,eX,SM=100,bM="\xB7";var TM=k(()=>{GJ();$1();IH();ix={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"}};eX=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"]});function fW(J){return yM.read(J)}function HW(J){yM.poll(J)}var ox=4000,sx=60000,tx=1500,ex,yM;var xM=k(()=>{hY();bQ();yX();bQ();ex={added:0,deleted:0},yM=EH({initial:ex,equals:mz,timeoutMs:ox,slowRetryMs:sx,minIntervalMs:tx,run:async(J,z)=>{let Y=await YY("git",["status","--porcelain=v1"],{cwd:J,env:cJ(),signal:z});if(Y.status!==0)throw Error("git status failed");return TX(Y.stdout)}})});import{TextAttributes as w1}from"@opentui/core";function Ju(J){switch(J){case"active":return F("tasks.view.workspace");case"archived":return F("tasks.view.archives")}}function EM(J,z=Yu){return tX(J,z)}function Zu(J){let z=0;for(let Y of J)z+=(Y.codePointAt(0)??0)>=4352?2:1;return z}function wM(J){let{theme:z}=i0(),Y=()=>J.focused?J.focused():!0,[Z,X]=r("active"),[G,Q]=r(!1),[f,H]=r(""),[B,V]=r(null),j=()=>J.projectFilter?.()??B(),K=(s)=>{if(J.onProjectFilterChange)J.onProjectFilterChange(s);else V(s)};function L(){H(""),Q(!0),J.onSearchActiveChange?.(!0)}function A(s){Q(!1),H(""),J.onSearchActiveChange?.(!1)}r0(()=>{if(!G())return;let s=HJ();if(!s)return;let K0=(I0)=>{if(I0.defaultPrevented)return;if(!Y())return;if(I0.ctrl||I0.meta||I0.option)return;if(I0.name==="backspace"){H((w0)=>w0.slice(0,-1));return}let m0=I0.sequence;if(!m0||m0.length!==1)return;let Q1=m0.charCodeAt(0);if(Q1<32||Q1===127)return;H((w0)=>w0+m0)};s.keyInput.on("keypress",K0),S1(()=>s.keyInput.off("keypress",K0))});let[O,R]=r(0),x=setInterval(()=>R((s)=>s+1),zu);S1(()=>clearInterval(x));let[a,S]=r(0),C=setInterval(()=>S((s)=>(s+1)%eX.length),SM);S1(()=>clearInterval(C));let M=()=>J.sortMode?.()??"default",I=U0(()=>w3(J.tasks(),Z())),$=U0(()=>{let s=j();if(!s)return null;let K0=Zz(s);return I().find((I0)=>Zz(I0.repo)===K0)??null}),i=U0(()=>$()?.repo??null),e=U0(()=>$()?.label??"all"),J0=U0(()=>{let s=$();return s?s.count:I().reduce((K0,I0)=>K0+I0.count,0)}),T=U0(()=>{let s=J0();return`${s} ${s===1?F("tasks.project.taskSingular"):F("tasks.project.taskPlural")}`}),f0=U0((s)=>m3(s,i9(J.tasks(),Z(),G()?f():"",M(),i())),[]),_=U0(()=>l9(f0())),W0=U0(()=>v3(f0())),R0=U0(()=>W0().projectRows),V0=U0(()=>W0().taskRows),t=U0(()=>{let s=new Map;for(let K0 of f0())s.set(K0.flatIndex,K0);return s}),P=U0(()=>l9(i9(J.tasks(),Z(),"",M(),i())).length),N=U0(()=>V0().length>0);r0(()=>{let s=j(),K0=I();if(s!==null&&K0.length>0&&(K0.length<=1||$()===null))K(null)});function p(){let s=I();if(s.length<=1){K(null);return}let K0=i(),I0=K0?Zz(K0):null,m0=I0===null?-1:s.findIndex((w0)=>Zz(w0.repo)===I0),Q1=s[m0+1];K(Q1?.repo??null)}let u=()=>J.width?J.width():uM,d=U0(()=>Math.max(6,u()-9)),o=U0(()=>Math.max(6,u()-16)),Q0=cz(),g0=U0(()=>{let s=Math.max(2,Math.min(10,Math.floor(Q0().height*0.25))),K0=Math.max(2,R0().length*2);return Math.min(s,K0)}),[P0,N0]=r(null),[b0,x0]=r(-1),v,k0,X0,L0=new Map;r0(()=>{let s=J.width?J.width():uM,K0=X0;if(!K0)return;K0.width=s,K0.flexShrink=1,K0.minHeight=0}),r0(SJ([b0,f0],([s])=>{let K0=t().get(s);if(!K0)return;let I0=K0.task.kind==="main"?v:k0;if(!I0)return;if(I0.viewport.height<=0)return;let m0=L0.get(s);if(!m0)return;I0.scrollChildIntoView(m0.id)})),r0(SJ(()=>[J.selectedId(),_()],([s,K0])=>{let I0=r1(b0),m0=h3(s,K0,I0);if(m0!==I0)x0(m0)})),r0(SJ(Z,()=>{let s=_();x0(s.length>0?0:-1)},{defer:!0})),r0(SJ(i,(s)=>x0(P3(f0(),s)),{defer:!0})),r0(SJ([G,f],()=>{if(!G())return;let s=_();x0(s.length>0?0:-1)}));function a0(s){let K0=Z(),I0=SQ.findIndex((w0)=>w0.view===K0);if(I0<0)return;let m0=(I0+s+SQ.length)%SQ.length,Q1=SQ[m0];if(Q1)X(Q1.view)}let e0=(s)=>{if(J.onActivate?.(s),!J.pinnedSelection)return;let K0=J.selectedId();if(!K0||s===K0)return;let I0=_().indexOf(K0);if(I0>=0)x0(I0)};CM({focused:Y,cursorIndex:b0,setCursorIndex:x0,flatTaskIds:_,onSelect:(s)=>{J.onSelect(s),e0(s)},onDeleteRequest:(s)=>J.onDeleteRequest?.(s),onArchiveRequest:(s)=>J.onArchiveRequest?.(s),onLocalMergeRequest:(s)=>J.onLocalMergeRequest?.(s),moveMode:J.moveMode,onMoveRequest:(s,K0)=>J.onMoveRequest?.(s,K0),onMoveModeExit:()=>J.onMoveModeExit?.(),onRenameRequest:(s)=>J.onRenameRequest?.(s),onPinRequest:(s)=>J.onPinRequest?.(s),onViewSwitch:(s)=>a0(s),onSortModeToggle:()=>J.onSortModeToggle?.(),onProjectFilterToggle:()=>p(),searchMode:G,onSearchEnter:()=>L(),onSearchExit:(s)=>A(s)});let v0=(s)=>(()=>{var K0=W("box"),I0=W("box"),m0=W("text"),Q1=W("text");return D(K0,I0),q(K0,"flexDirection","column"),q(K0,"flexShrink",0),U(K0,b(G0,{get when(){return s.topPad},get children(){var w0=W("box"),q1=W("text");return D(w0,q1),q(w0,"flexShrink",0),D(q1,E0(" ")),q(q1,"wrapMode","none"),w0}}),I0),D(I0,m0),D(I0,Q1),q(I0,"flexDirection","row"),q(I0,"flexShrink",0),q(I0,"gap",1),q(I0,"paddingLeft",1),q(I0,"paddingRight",1),q(m0,"wrapMode","none"),U(m0,()=>s.label),q(Q1,"wrapMode","none"),U(Q1,()=>"\u2500".repeat(Math.max(2,u()-10-s.label.length-(s.suffix?.length??0)))),U(I0,b(G0,{get when(){return s.suffix},get children(){var w0=W("text");return q(w0,"wrapMode","none"),U(w0,()=>s.suffix),y((q1)=>{var g1=z.info,z1=w1.BOLD;return g1!==q1.e&&(q1.e=q(w0,"fg",g1,q1.e)),z1!==q1.t&&(q1.t=q(w0,"attributes",z1,q1.t)),q1},{e:void 0,t:void 0}),w0}}),null),y((w0)=>{var q1=z.textMuted,g1=w1.BOLD,z1=z.border;return q1!==w0.e&&(w0.e=q(m0,"fg",q1,w0.e)),g1!==w0.t&&(w0.t=q(m0,"attributes",g1,w0.t)),z1!==w0.a&&(w0.a=q(Q1,"fg",z1,w0.a)),w0},{e:void 0,t:void 0,a:void 0}),K0})(),_0=(s)=>{switch(s){case"success":return z.success;case"warning":return z.warning;case"primary":return z.primary;case"error":return z.error;default:return z.textMuted}},R1=(s)=>{let K0=s.row.task,I0=s.row.flatIndex,m0=()=>I0===b0(),Q1=()=>K0.id===J.selectedId(),w0=U0(()=>{let q0=J.chatRunState?.();if(!q0)return!1;let T0=`${K0.id}:`;for(let[M0,O0]of q0)if(O0==="running"&&M0.startsWith(T0))return!0;return!1}),q1=U0(()=>{let q0=mf(J.worktreeChanges?.(),K0.worktreePath);if(q0)return q0;if(O(),!K0.archived)HW(K0.worktreePath);return fW(K0.worktreePath)},void 0,{equals:mz}),g1=U0(()=>{return O(),RM(K0.repo),AM(K0.repo)}),z1=U0(()=>QW({task:K0,activity:J.engineState?.().get(K0.id),job:J.taskJobs?.().get(K0.id),live:w0(),spinnerFrame:0,subtitleBudget:o(),truncateBranch:EM,mainBranch:g1()})),z0=U0(()=>qW(z1(),a)),Z0=()=>!z0().loading?z.primary:_0(z0().tone),j0=()=>m0()?z.focusAccent:Q1()?z.primary:void 0,g=()=>m0()||Q1()?"\u258C":" ";return(()=>{var q0=W("box"),T0=W("box"),M0=W("box"),O0=W("text"),D0=W("box"),B0=W("text"),t0=W("text"),Y1=W("box"),o0=W("text"),H1=W("box"),u1=W("text");return D(q0,T0),q(q0,"flexDirection","column"),q(q0,"gap",0),q(q0,"paddingBottom",0),D(T0,M0),D(T0,Y1),dz((S0)=>{L0.set(I0,S0),S1(()=>{if(L0.get(I0)===S0)L0.delete(I0)})},T0),q(T0,"flexDirection","column"),q(T0,"gap",0),q(T0,"onMouseUp",()=>{if(x0(I0),J.onSelect(K0.id),J.activateOnClick)e0(K0.id)}),q(T0,"onMouseOver",(S0)=>N0({task:K0,x:S0.x,y:S0.y})),q(T0,"onMouseOut",()=>N0((S0)=>S0?.task.id===K0.id?null:S0)),D(M0,O0),D(M0,D0),q(M0,"flexDirection","row"),q(M0,"gap",0),q(O0,"wrapMode","none"),U(O0,g),D(D0,B0),D(D0,t0),q(D0,"flexDirection","row"),q(D0,"flexGrow",1),q(D0,"paddingRight",1),q(D0,"gap",0),q(B0,"wrapMode","none"),U(B0,()=>z0().projectGlyph),q(t0,"wrapMode","none"),q(t0,"flexGrow",1),U(t0,()=>GW(z0().titleText,d())),D(Y1,o0),D(Y1,H1),q(Y1,"flexDirection","row"),q(Y1,"gap",0),q(o0,"wrapMode","none"),U(o0,g),D(H1,u1),q(H1,"flexDirection","row"),q(H1,"flexGrow",1),q(H1,"paddingLeft",2),q(H1,"paddingRight",1),q(H1,"gap",1),q(u1,"wrapMode","none"),q(u1,"flexGrow",1),U(u1,()=>z0().subtitleText),U(H1,b(G0,{get when(){return q1().added>0},get children(){var S0=W("text"),h=E0("+");return D(S0,h),q(S0,"wrapMode","none"),U(S0,()=>q1().added,null),y((A0)=>q(S0,"fg",z.success,A0)),S0}}),null),U(H1,b(G0,{get when(){return q1().deleted>0},get children(){var S0=W("text"),h=E0("\u2212");return D(S0,h),q(S0,"wrapMode","none"),U(S0,()=>q1().deleted,null),y((A0)=>q(S0,"fg",z.error,A0)),S0}}),null),y((S0)=>{var h=m0()?z.backgroundElement:void 0,A0=j0(),j1=Z0(),F1=w1.BOLD,k1=z.text,m=w1.BOLD,y0=j0(),Y0=z.textMuted,F0=w1.DIM;return h!==S0.e&&(S0.e=q(T0,"backgroundColor",h,S0.e)),A0!==S0.t&&(S0.t=q(O0,"fg",A0,S0.t)),j1!==S0.a&&(S0.a=q(B0,"fg",j1,S0.a)),F1!==S0.o&&(S0.o=q(B0,"attributes",F1,S0.o)),k1!==S0.i&&(S0.i=q(t0,"fg",k1,S0.i)),m!==S0.n&&(S0.n=q(t0,"attributes",m,S0.n)),y0!==S0.s&&(S0.s=q(o0,"fg",y0,S0.s)),Y0!==S0.h&&(S0.h=q(u1,"fg",Y0,S0.h)),F0!==S0.r&&(S0.r=q(u1,"attributes",F0,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}),q0})()};return(()=>{var s=W("box"),K0=W("box"),I0=W("box"),m0=W("text"),Q1=W("box"),w0=W("box"),q1=W("text"),g1=W("scrollbox"),z1=W("box");return D(s,K0),D(s,Q1),D(s,g1),dz((z0)=>{X0=z0},s),q(s,"flexGrow",1),q(s,"minHeight",0),q(s,"flexDirection","column"),q(s,"paddingTop",1),q(s,"paddingBottom",1),q(s,"paddingLeft",0),q(s,"paddingRight",0),D(K0,I0),q(K0,"flexDirection","row"),q(K0,"justifyContent","space-between"),q(K0,"gap",1),q(K0,"paddingBottom",1),q(K0,"paddingLeft",1),q(K0,"paddingRight",1),D(I0,m0),q(I0,"flexDirection","row"),q(I0,"gap",1),D(m0,E0("KOBE")),q(m0,"wrapMode","none"),U(I0,b(G0,{get when(){return J.headerStatus?.()},children:(z0)=>(()=>{var Z0=W("text");return q(Z0,"wrapMode","none"),q(Z0,"onMouseUp",()=>J.onHeaderStatusClick?.()),U(Z0,()=>z0().label),y((j0)=>{var g=z0().emphasize?z.warning:z.textMuted,q0=z0().emphasize?w1.BOLD:w1.DIM;return g!==j0.e&&(j0.e=q(Z0,"fg",g,j0.e)),q0!==j0.t&&(j0.t=q(Z0,"attributes",q0,j0.t)),j0},{e:void 0,t:void 0}),Z0})()}),null),U(K0,b(G0,{get when(){return J.onAddTask},get children(){var z0=W("text");return D(z0,E0("[+]")),q(z0,"wrapMode","none"),q(z0,"onMouseUp",()=>J.onAddTask?.()),y((Z0)=>{var j0=z.primary,g=w1.BOLD;return j0!==Z0.e&&(Z0.e=q(z0,"fg",j0,Z0.e)),g!==Z0.t&&(Z0.t=q(z0,"attributes",g,Z0.t)),Z0},{e:void 0,t:void 0}),z0}}),null),U(s,b(G0,{get when(){return G()},get children(){var z0=W("box"),Z0=W("text"),j0=W("text"),g=W("text");return D(z0,Z0),D(z0,j0),D(z0,g),q(z0,"flexDirection","row"),q(z0,"gap",0),q(z0,"paddingBottom",1),q(z0,"paddingLeft",1),D(Z0,E0("/")),q(Z0,"wrapMode","none"),q(j0,"wrapMode","none"),U(j0,f),D(g,E0("\u2588")),q(g,"wrapMode","none"),U(z0,b(G0,{get when(){return f().length===0},get children(){var q0=W("text"),T0=E0(" ");return D(q0,T0),q(q0,"wrapMode","none"),U(q0,()=>F("tasks.search.placeholder"),null),y((M0)=>q(q0,"fg",z.textMuted,M0)),q0}}),null),U(z0,b(G0,{get when(){return f().length>0},get children(){var q0=W("text"),T0=E0(" "),M0=E0("/");return D(q0,T0),D(q0,M0),q(q0,"wrapMode","none"),U(q0,()=>_().length,M0),U(q0,P,null),y((O0)=>q(q0,"fg",z.textMuted,O0)),q0}}),null),y((q0)=>{var{info:T0,text:M0,info:O0}=z,D0=w1.BLINK;return T0!==q0.e&&(q0.e=q(Z0,"fg",T0,q0.e)),M0!==q0.t&&(q0.t=q(j0,"fg",M0,q0.t)),O0!==q0.a&&(q0.a=q(g,"fg",O0,q0.a)),D0!==q0.o&&(q0.o=q(g,"attributes",D0,q0.o)),q0},{e:void 0,t:void 0,a:void 0,o:void 0}),z0}}),Q1),D(Q1,w0),q(Q1,"flexDirection","row"),q(Q1,"justifyContent","space-between"),q(Q1,"gap",1),q(Q1,"paddingBottom",1),q(Q1,"paddingLeft",1),q(Q1,"paddingRight",1),D(w0,q1),q(w0,"flexDirection","row"),q(w0,"gap",2),U(w0,b(X1,{each:SQ,children:(z0)=>{let Z0=()=>Z()===z0.view;return(()=>{var j0=W("text");return q(j0,"wrapMode","none"),q(j0,"onMouseUp",()=>X(z0.view)),U(j0,()=>Ju(z0.view)),y((g)=>{var q0=Z0()?z.primary:z.textMuted,T0=Z0()?w1.BOLD:void 0;return q0!==g.e&&(g.e=q(j0,"fg",q0,g.e)),T0!==g.t&&(g.t=q(j0,"attributes",T0,g.t)),g},{e:void 0,t:void 0}),j0})()}}),q1),D(q1,E0("[/]")),q(q1,"wrapMode","none"),U(Q1,b(G0,{get when(){return J.sortMode},get children(){var z0=W("text");return q(z0,"wrapMode","none"),q(z0,"onMouseUp",()=>J.onSortModeToggle?.()),U(z0,()=>F("tasks.sort")),y((Z0)=>{var j0=z.textMuted,g=w1.DIM;return j0!==Z0.e&&(Z0.e=q(z0,"fg",j0,Z0.e)),g!==Z0.t&&(Z0.t=q(z0,"attributes",g,Z0.t)),Z0},{e:void 0,t:void 0}),z0}}),null),U(s,b(G0,{get when(){return R0().length>0},get children(){var z0=W("box"),Z0=W("box"),j0=W("text"),g=W("text"),q0=W("scrollbox"),T0=W("box");return D(z0,Z0),D(z0,q0),q(z0,"flexDirection","column"),q(z0,"flexShrink",0),D(Z0,j0),D(Z0,g),q(Z0,"flexDirection","row"),q(Z0,"flexShrink",0),q(Z0,"gap",1),q(Z0,"paddingLeft",1),q(Z0,"paddingRight",1),q(Z0,"onMouseUp",()=>p()),q(j0,"wrapMode","none"),U(j0,()=>F("tasks.header.projects")),U(Z0,b(G0,{get when(){return I().length>1},get children(){var M0=W("text");return q(M0,"wrapMode","none"),U(M0,e),y((O0)=>{var D0=i()?z.primary:z.textMuted,B0=i()?w1.BOLD:void 0;return D0!==O0.e&&(O0.e=q(M0,"fg",D0,O0.e)),B0!==O0.t&&(O0.t=q(M0,"attributes",B0,O0.t)),O0},{e:void 0,t:void 0}),M0}}),g),q(g,"wrapMode","none"),U(g,()=>"\u2500".repeat(Math.max(2,u()-10-F("tasks.header.projects").length-(I().length>1?e().length+1:0)-(I().length>1?T().length+1:0)))),U(Z0,b(G0,{get when(){return I().length>1},get children(){var M0=W("text");return q(M0,"wrapMode","none"),U(M0,T),y((O0)=>{var D0=z.textMuted,B0=w1.DIM;return D0!==O0.e&&(O0.e=q(M0,"fg",D0,O0.e)),B0!==O0.t&&(O0.t=q(M0,"attributes",B0,O0.t)),O0},{e:void 0,t:void 0}),M0}}),null),D(q0,T0),dz((M0)=>{v=M0},q0),q(q0,"flexShrink",0),q(q0,"flexGrow",0),q(q0,"minHeight",0),q(q0,"stickyScroll",!1),q(q0,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),q(T0,"flexShrink",0),q(T0,"gap",0),q(T0,"paddingRight",1),U(T0,b(X1,{get each(){return R0()},children:(M0)=>b(R1,{row:M0})})),y((M0)=>{var O0=z.textMuted,D0=w1.BOLD,B0=z.border,t0=g0();return O0!==M0.e&&(M0.e=q(j0,"fg",O0,M0.e)),D0!==M0.t&&(M0.t=q(j0,"attributes",D0,M0.t)),B0!==M0.a&&(M0.a=q(g,"fg",B0,M0.a)),t0!==M0.o&&(M0.o=q(q0,"maxHeight",t0,M0.o)),M0},{e:void 0,t:void 0,a:void 0,o:void 0}),z0}}),g1),U(s,b(v0,{get label(){return F("tasks.header.tasks")},get suffix(){return u0(()=>M()==="default")()?void 0:M()},get topPad(){return R0().length>0}}),g1),D(g1,z1),dz((z0)=>{k0=z0},g1),q(g1,"flexGrow",1),q(g1,"minHeight",0),q(g1,"stickyScroll",!1),q(g1,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),q(z1,"flexShrink",0),q(z1,"gap",0),q(z1,"paddingRight",1),U(z1,b(X1,{get each(){return V0()},children:(z0)=>{let{task:Z0,flatIndex:j0}=z0,g=()=>j0===b0(),q0=()=>Z0.id===J.selectedId(),T0=U0(()=>{let o0=J.chatRunState?.();if(!o0)return!1;let H1=`${Z0.id}:`;for(let[u1,S0]of o0)if(S0==="running"&&u1.startsWith(H1))return!0;return!1}),M0=U0(()=>{let o0=mf(J.worktreeChanges?.(),Z0.worktreePath);if(o0)return o0;if(O(),!Z0.archived)HW(Z0.worktreePath);return fW(Z0.worktreePath)},void 0,{equals:mz}),O0=U0(()=>QW({task:Z0,activity:J.engineState?.().get(Z0.id),job:J.taskJobs?.().get(Z0.id),live:T0(),spinnerFrame:0,subtitleBudget:o(),truncateBranch:EM,mainBranch:""})),D0=U0(()=>qW(O0(),a)),B0=()=>_0(D0().tone),t0=()=>g()?z.focusAccent:q0()?z.primary:void 0,Y1=()=>g()||q0()?"\u258C":" ";return(()=>{var o0=W("box"),H1=W("box"),u1=W("box"),S0=W("text"),h=W("box"),A0=W("text"),j1=W("text"),F1=W("box"),k1=W("text"),m=W("box"),y0=W("text");return D(o0,H1),q(o0,"flexDirection","column"),q(o0,"gap",0),q(o0,"paddingBottom",1),D(H1,u1),D(H1,F1),dz((Y0)=>{L0.set(j0,Y0),S1(()=>{if(L0.get(j0)===Y0)L0.delete(j0)})},H1),q(H1,"flexDirection","column"),q(H1,"gap",0),q(H1,"onMouseUp",()=>{if(x0(j0),J.onSelect(Z0.id),J.activateOnClick)e0(Z0.id)}),q(H1,"onMouseOver",(Y0)=>N0({task:Z0,x:Y0.x,y:Y0.y})),q(H1,"onMouseOut",()=>N0((Y0)=>Y0?.task.id===Z0.id?null:Y0)),D(u1,S0),D(u1,h),q(u1,"flexDirection","row"),q(u1,"gap",0),q(S0,"wrapMode","none"),U(S0,Y1),D(h,A0),D(h,j1),q(h,"flexDirection","row"),q(h,"flexGrow",1),q(h,"paddingRight",1),q(h,"gap",0),q(A0,"wrapMode","none"),U(A0,()=>D0().stateGlyph),q(j1,"wrapMode","none"),q(j1,"flexGrow",1),U(j1,()=>GW(D0().titleText,d())),U(h,b(G0,{get when(){return u0(()=>!!J.moveMode?.())()&&g()},get children(){var Y0=W("text");return q(Y0,"wrapMode","none"),U(Y0,()=>F("tasks.moveChip")),y((F0)=>q(Y0,"fg",z.warning,F0)),Y0}}),null),D(F1,k1),D(F1,m),q(F1,"flexDirection","row"),q(F1,"gap",0),q(k1,"wrapMode","none"),U(k1,Y1),D(m,y0),q(m,"flexDirection","row"),q(m,"flexGrow",1),q(m,"paddingLeft",2),q(m,"paddingRight",1),q(m,"gap",1),q(y0,"wrapMode","none"),q(y0,"flexGrow",1),U(y0,()=>D0().subtitleText),U(m,b(G0,{get when(){return Z0.pinned===!0},get children(){var Y0=W("text");return D(Y0,E0("\u25B4")),q(Y0,"wrapMode","none"),y((F0)=>q(Y0,"fg",z.warning,F0)),Y0}}),null),U(m,b(G0,{get when(){return IM(Z0)},children:(Y0)=>(()=>{var F0=W("text");return q(F0,"wrapMode","none"),U(F0,()=>Y0().glyph),y((c1)=>q(F0,"fg",_0(Y0().tone),c1)),F0})()}),null),U(m,b(G0,{get when(){return M0().added>0},get children(){var Y0=W("text"),F0=E0("+");return D(Y0,F0),q(Y0,"wrapMode","none"),U(Y0,()=>M0().added,null),y((c1)=>q(Y0,"fg",z.success,c1)),Y0}}),null),U(m,b(G0,{get when(){return M0().deleted>0},get children(){var Y0=W("text"),F0=E0("\u2212");return D(Y0,F0),q(Y0,"wrapMode","none"),U(Y0,()=>M0().deleted,null),y((c1)=>q(Y0,"fg",z.error,c1)),Y0}}),null),y((Y0)=>{var F0=g()?z.backgroundElement:void 0,c1=t0(),LJ=B0(),QJ=w1.BOLD,iJ=z.text,lz=q0()||g()?w1.BOLD:void 0,AJ=t0(),$z=z.textMuted,Gz=w1.DIM;return F0!==Y0.e&&(Y0.e=q(H1,"backgroundColor",F0,Y0.e)),c1!==Y0.t&&(Y0.t=q(S0,"fg",c1,Y0.t)),LJ!==Y0.a&&(Y0.a=q(A0,"fg",LJ,Y0.a)),QJ!==Y0.o&&(Y0.o=q(A0,"attributes",QJ,Y0.o)),iJ!==Y0.i&&(Y0.i=q(j1,"fg",iJ,Y0.i)),lz!==Y0.n&&(Y0.n=q(j1,"attributes",lz,Y0.n)),AJ!==Y0.s&&(Y0.s=q(k1,"fg",AJ,Y0.s)),$z!==Y0.h&&(Y0.h=q(y0,"fg",$z,Y0.h)),Gz!==Y0.r&&(Y0.r=q(y0,"attributes",Gz,Y0.r)),Y0},{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}),o0})()}}),null),U(z1,b(G0,{get when(){return _().length===0},get children(){var z0=W("box"),Z0=W("text");return D(z0,Z0),q(z0,"paddingTop",1),q(z0,"paddingLeft",1),U(Z0,(()=>{var j0=u0(()=>!!(G()&&f().trim().length>0));return()=>j0()?F("tasks.empty.noMatchSearch"):u0(()=>!!i())()?u0(()=>Z()==="active")()?F("tasks.empty.noActiveProject"):F("tasks.empty.noArchivedProject"):u0(()=>Z()==="active")()?F("tasks.empty.noActive"):F("tasks.empty.noArchived")})()),y((j0)=>q(Z0,"fg",z.textMuted,j0)),z0}}),null),U(z1,b(G0,{get when(){return u0(()=>!!(i()&&_().length>0&&!N()))()&&!(G()&&f().trim().length>0)},get children(){var z0=W("box"),Z0=W("text");return D(z0,Z0),q(z0,"paddingTop",1),q(z0,"paddingLeft",1),q(Z0,"wrapMode","none"),U(Z0,(()=>{var j0=u0(()=>Z()==="active");return()=>j0()?F("tasks.empty.noActiveProject"):F("tasks.empty.noArchivedProject")})()),y((j0)=>{var g=z.textMuted,q0=w1.DIM;return g!==j0.e&&(j0.e=q(Z0,"fg",g,j0.e)),q0!==j0.t&&(j0.t=q(Z0,"attributes",q0,j0.t)),j0},{e:void 0,t:void 0}),z0}}),null),U(z1,b(G0,{get when(){return u0(()=>Z()==="archived")()&&_().length>0},get children(){var z0=W("box"),Z0=W("text");return D(z0,Z0),q(z0,"paddingTop",1),q(z0,"paddingLeft",1),q(Z0,"wrapMode","none"),U(Z0,()=>F("tasks.archiveHint")),y((j0)=>{var g=z.textMuted,q0=w1.DIM;return g!==j0.e&&(j0.e=q(Z0,"fg",g,j0.e)),q0!==j0.t&&(j0.t=q(Z0,"attributes",q0,j0.t)),j0},{e:void 0,t:void 0}),z0}}),null),U(s,b(G0,{get when(){return J.zenActive?.()},get children(){var z0=W("box"),Z0=W("text");return D(z0,Z0),q(z0,"flexShrink",0),q(z0,"paddingLeft",1),q(z0,"paddingRight",1),q(z0,"paddingTop",1),D(Z0,E0("\u262F ZEN")),q(Z0,"wrapMode","none"),q(Z0,"onMouseUp",()=>J.onZenClick?.()),y((j0)=>{var g=z.accent,q0=w1.BOLD;return g!==j0.e&&(j0.e=q(Z0,"fg",g,j0.e)),q0!==j0.t&&(j0.t=q(Z0,"attributes",q0,j0.t)),j0},{e:void 0,t:void 0}),z0}}),null),U(s,b(G0,{get when(){return P0()},children:(z0)=>{let Z0=U0(()=>{let D0=z0().task,B0=[];if(B0.push({text:D0.kind==="main"?bz(D0.repo):D0.title,bold:!0}),D0.branch.length>0)B0.push({text:`\u2387 ${D0.branch}`});if(D0.worktreePath.length>0)B0.push({text:D0.worktreePath,dim:!0});return B0}),j0=72,g=U0(()=>Math.min(68,Math.max(...Z0().map((D0)=>Zu(D0.text))))),q0=U0(()=>g()+4),T0=U0(()=>Z0().length+2),M0=U0(()=>Math.max(0,Math.min(z0().x+2,Q0().width-q0()-1))),O0=U0(()=>Math.max(0,Math.min(z0().y+1,Q0().height-T0()-1)));return(()=>{var D0=W("box");return q(D0,"position","absolute"),q(D0,"zIndex",2600),q(D0,"flexDirection","column"),q(D0,"border",!0),q(D0,"paddingLeft",1),q(D0,"paddingRight",1),U(D0,b(X1,{get each(){return Z0()},children:(B0)=>(()=>{var t0=W("text");return q(t0,"wrapMode","none"),U(t0,(()=>{var Y1=u0(()=>!!B0.dim);return()=>Y1()?Xu(B0.text,g()):XW(B0.text,g())})()),y((Y1)=>{var o0=B0.dim?z.textMuted:z.text,H1=B0.bold?w1.BOLD:B0.dim?w1.DIM:void 0;return o0!==Y1.e&&(Y1.e=q(t0,"fg",o0,Y1.e)),H1!==Y1.t&&(Y1.t=q(t0,"attributes",H1,Y1.t)),Y1},{e:void 0,t:void 0}),t0})()})),y((B0)=>{var t0=M0(),Y1=O0(),o0=q0(),H1=z.focusAccent,u1=z.backgroundElement;return t0!==B0.e&&(B0.e=q(D0,"left",t0,B0.e)),Y1!==B0.t&&(B0.t=q(D0,"top",Y1,B0.t)),o0!==B0.a&&(B0.a=q(D0,"width",o0,B0.a)),H1!==B0.o&&(B0.o=q(D0,"borderColor",H1,B0.o)),u1!==B0.i&&(B0.i=q(D0,"backgroundColor",u1,B0.i)),B0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),D0})()}}),null),y((z0)=>{var Z0=Y()?z.focusAccent:z.textMuted,j0=w1.BOLD,g=z.textMuted,q0=w1.DIM;return Z0!==z0.e&&(z0.e=q(m0,"fg",Z0,z0.e)),j0!==z0.t&&(z0.t=q(m0,"attributes",j0,z0.t)),g!==z0.a&&(z0.a=q(q1,"fg",g,z0.a)),q0!==z0.o&&(z0.o=q(q1,"attributes",q0,z0.o)),z0},{e:void 0,t:void 0,a:void 0,o:void 0}),s})()}var uM=32,SQ,zu=2000,Yu=16,Xu;var PM=k(()=>{w();w();w();w();w();w();w();w();w();GJ();w();W1();m1();m1();gM();IH();NM();kM();TM();yX();xM();SQ=[{view:"active"},{view:"archived"}];Xu=uH});var dM={};f1(dM,{startTasksPane:()=>Hu,legendRowCap:()=>cM,legendCap:()=>mM});import{existsSync as hM}from"fs";import{stat as Gu}from"fs/promises";import{TextAttributes as wH}from"@opentui/core";function vM(J){let z=J instanceof Error?J.message:String(J);if(/not a git repository/i.test(z))return F("tasks.toast.worktreeErrorNotGit");return F("tasks.toast.worktreeErrorGeneric",{message:z})}function qu(J){let{theme:z}=i0(),Y=d1(),Z=rX(),X=RH(),[G,Q]=r(J.tasks().some((v)=>v.id===J.initialTaskId)?J.initialTaskId:J.tasks()[0]?.id??null),f=0;function H(v){X.notify({kind:"error",taskId:G()??"",tabId:"",title:v})}function B(v){X.notify({kind:"done",taskId:G()??"",tabId:"",title:v})}let[V,j]=r(!1),[K,L]=r(Z.get("activeSortMode")==="recent"?"recent":"default"),A=Z.get("tasksPane.projectFilter"),[O,R]=r(typeof A==="string"&&A.length>0?A:null),x=(v)=>{R(v),Z.set("tasksPane.projectFilter",v)},[a,S]=r(null),[C,M]=r(!1);{let v=process.env.TMUX_PANE;if(v){let k0=()=>{$0(["show-options","-wqv","-t",v,gY]).then(({code:L0,stdout:a0})=>{M(L0===0&&a0.trim().length>0)})};k0();let X0=setInterval(k0,1000);S1(()=>clearInterval(X0))}}let I=cz();r0(()=>{if(J.initialTaskId)return;let v=J.orch?.activeTaskSignal()();if(!v)return;Q(v)}),r0(SJ(()=>J.orch?.uiPrefsSignal()(),(v)=>{if(v&&v.sortMode!==r1(K))L(v.sortMode);if(v&&v.projectFilter!==r1(O))R(v.projectFilter)})),r0(()=>{let v=J.orch?.updateSignal()();if(v)S(v)});let $={orch:J.orch,tasks:()=>J.tasks(),confirm:async(v)=>await UY.show(Y,v.title,v.body,v.cancelLabel,v.confirmLabel)===!0,promptText:(v,k0)=>KY.show(Y,v,k0),logger:console,logPrefix:"[kobe tasks]",notifyError:H,notifyInfo:B,reload:()=>J.reload(),switchBeforeKill:!0,updateActiveTask:!0,onTaskDeleted:(v,k0)=>{if(G()!==v)return;let X0=J.tasks();Q(k0?.id??(X0.find((L0)=>!L0.archived)??X0[0])?.id??null)},promptNewTask:(v,k0,X0)=>UH.show(Y,v,k0,X0),cursorRepo:()=>{let v=J.tasks();return(v.find((k0)=>k0.id===G())??v[0])?.repo},lastVendor:()=>xJ(C1("lastSelectedVendor"),uJ()),rememberVendor:(v)=>s1("lastSelectedVendor",v),openCreateSurface:async(v)=>{if(SZ(Z.get(qY,bZ))!=="chattab")return!1;let X0=await TJ();if(!X0)return!1;return await cG(X0,v),!0},selectTask:(v)=>Q(v),enterTask:(v)=>g0(v)};async function i(){await KM($)}async function e(){if(SZ(Z.get(qY,bZ))==="chattab"){let X0=await TJ();if(X0){await vG(X0);return}}if(!(await mZ.show(Y,Z,J.orch??void 0)).visualPrefsChanged)return;if(!Z.flush())return;try{let X0=await TJ();if(X0)await OX(X0)}catch(X0){console.error("[kobe tasks] failed to refresh workspace panes:",X0)}}async function J0(){let v=await TJ();if(v){await mG(v);return}sX.show(Y)}async function T(){if(!a()?.hasUpdate){B(F("tasks.toast.alreadyLatest",{version:p0}));return}let k0=await TJ();if(!k0)return;await dG(k0)}async function f0(v){await HM($,v)}async function _(v){await BM($,v)}async function W0(v){await jM($,v)}async function R0(v){await WM($,v)}async function V0(v){await VM($,v)}async function t(v){let X0=J.tasks().find((a0)=>a0.id===v)?.worktreePath;if(!X0||!hM(X0)){if(!J.orch){console.error("[kobe tasks] no daemon; cannot materialise worktree"),H(F("tasks.toast.noDaemonWorktree"));return}try{X0=await J.orch.ensureWorktree(v)}catch(a0){console.error("[kobe tasks] task.ensureWorktree failed:",a0),H(vM(a0));return}await J.reload()}if(!X0||!hM(X0))return;let L0=DM();if(!L0){console.error("[kobe tasks] no editor/opener found; set KOBE_OPEN_EDITOR"),H(F("tasks.toast.noEditor"));return}if(!LM(X0,L0))console.error(`[kobe tasks] failed to open worktree with ${L0.label}`),H(F("tasks.toast.openWorktreeFailed",{label:L0.label}))}async function P(){if(!process.env.TMUX_PANE)return;let v=await TJ();if(!v)return;let k0=await HX(v);if(!k0)return;await c0(["select-pane","-t",k0])}async function N(v,k0){let X0=J.tasks().find((L0)=>L0.id===v);if(!X0||X0.kind==="main"||!J.orch)return;try{await J.orch.moveTask(v,k0)}catch(L0){console.error("[kobe tasks] task.move failed:",L0),H(F("tasks.toast.moveTaskFailed",{message:L0 instanceof Error?L0.message:String(L0)}));return}Q(v),await J.reload()}let[p,u]=r(Z.get("tasksPane.keysCollapsed",!1)===!0),d=(v)=>{u(v),Z.set("tasksPane.keysCollapsed",v)};r0(SJ(()=>J.orch?.uiPrefsSignal()(),(v)=>{if(v&&v.keysCollapsed!==r1(p))u(v.keysCollapsed)}));let[o,Q0]=r(!1);D1(()=>({enabled:Y.stack.length===0&&!o(),bindings:$Y({"help.open":()=>void J0(),"task.new":()=>void i(),"settings.open.sidebar":()=>void e(),"tasks.update":()=>void T(),"tasks.openWorktree":()=>{let v=G();if(v)t(v)},"tasks.renameBranch":()=>{let v=G();if(v)R0(v)},"tasks.cycleEngine":()=>{let v=G();if(v)V0(v)},"tasks.toggleKeys":()=>d(!p()),"tasks.focusEngine":()=>void P().catch((v)=>console.error("[kobe tasks] focus engine pane failed:",v))})}));async function g0(v){let k0=J.tasks().find((L0)=>L0.id===v);if(!k0)return;let X0=++f;try{await d9(J.orch,k0,k0.repo,k0.vendor,{includeInitPrompt:!0,heal:!0,captureFrom:!0,reload:()=>J.reload(),isCurrent:()=>f===X0})}catch(L0){if(L0 instanceof hZ)if(L0.phase==="no-daemon")H(F("tasks.toast.noDaemonOpen"));else if(L0.phase==="worktree")H(vM(L0.cause??L0));else H(F("tasks.toast.sessionStartFailed"));else console.error("[kobe tasks] switchTo failed:",L0)}}let P0=U0(()=>{let v=a();if(v?.hasUpdate)return{label:`v${v.latest} \u2191`,emphasize:!0};return{label:`v${p0}`,emphasize:!1}}),N0=()=>J.orch?.daemonStaleSignal()()??!1,b0=()=>J.orch?.daemonVersionSignal()()??null,x0=U0(()=>J.tasks().find((v)=>v.id===G())?.kind==="main");return(()=>{var v=W("box"),k0=W("box");return D(v,k0),q(v,"flexDirection","column"),q(v,"flexGrow",1),U(v,b(QM,{stale:N0,daemonVersion:b0,clientVersion:p0,width:()=>I().width}),k0),q(k0,"flexGrow",1),q(k0,"flexShrink",1),U(k0,b(wM,{get tasks(){return J.tasks},selectedId:G,get onSelect(){return J.initialTaskId?()=>{}:Q},get pinnedSelection(){return!!J.initialTaskId},onActivate:(X0)=>void g0(X0),activateOnClick:!0,headerStatus:P0,onHeaderStatusClick:()=>void T(),onAddTask:()=>void i(),zenActive:C,onZenClick:()=>{(async()=>{let X0=await TJ();if(X0)await RZ(X0,"zen-toggle")})()},width:()=>I().width,get engineState(){return u0(()=>!!J.orch)()?J.orch.engineStateSignal():void 0},get taskJobs(){return u0(()=>!!J.orch)()?J.orch.taskJobsSignal():void 0},get worktreeChanges(){return J.orch?()=>{let X0=J.orch;if(!X0||X0.connectionStateSignal()()!=="online")return null;return X0.worktreeChangesSignal()()}:void 0},onRenameRequest:(X0)=>void W0(X0),onDeleteRequest:(X0)=>void _(X0),onArchiveRequest:(X0)=>void f0(X0),onLocalMergeRequest:(X0)=>{let L0=J.tasks().find((a0)=>a0.id===X0);if(!L0||L0.kind==="main")return;Q(X0),j((a0)=>!a0)},moveMode:V,onMoveRequest:(X0,L0)=>void N(X0,L0),onMoveModeExit:()=>j(!1),sortMode:K,projectFilter:O,onProjectFilterChange:x,onSortModeToggle:()=>{let X0=K()==="default"?"recent":"default";L(X0),Z.set("activeSortMode",X0)},focused:()=>Y.stack.length===0,onSearchActiveChange:Q0})),U(v,b(fu,{moveMode:V,selectedIsMain:x0,collapsed:p,onToggleCollapsed:()=>d(!p())}),null),y((X0)=>q(v,"backgroundColor",z.background,X0)),v})()}function mM(J){let z=w9(J);if(!z)return null;let Y=z.hint?.keys??z.keys[0];return Y&&Y.length>0?Y:null}function cM(J){let z=J.map(mM).filter((Y)=>Y!==null);return z.length>0?z.join("/"):null}function fu(J){let{theme:z}=i0(),[Y,Z]=r("Prefix");zJ(()=>{$0(["show-options","-g","prefix"]).then(({code:K,stdout:L})=>{if(K!==0)return;let A=yH(L);if(A)Z(A)})});let X=()=>{E9();let K=iq(),L=K.binds,A=[],O=K.focus.filter((x)=>x!==null).map((x)=>x.chord);if(O.length===4&&O.every((x,a)=>x===SY[a]))A.push({k:"ctrl+hjkl",label:F("tasks.hints.movePanes")});else if(O.length>0)A.push({k:O[0],label:F("tasks.hints.movePanes")});let R=(x,a)=>{let S=a.map((C)=>L[C]?.chord).filter((C)=>!!C);if(S.length>0)A.push({k:`prefix ${S.join("/")}`,label:x})};if(L["tmux.detach"])A.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"]),A},G=()=>{E9();let K=[{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 A of K){let O=cM(A.ids);if(O===null)continue;L.push({k:O,label:A.label,dimWhenMain:A.dimWhenMain})}return L.push(...X()),L},Q=()=>[{k:"j/k",label:F("tasks.hints.reorder")},{k:"enter/esc",label:F("tasks.hints.done")}],f=()=>J.moveMode?.()?Q():G(),H=18,B=()=>Math.min(H,Math.max(...f().map((K)=>K.label.length))),V=(K)=>tX(K,B()),j=()=>(J.collapsed?.()??!1)&&!(J.moveMode?.()??!1);return(()=>{var K=W("box"),L=W("text");return D(K,L),q(K,"flexShrink",0),q(K,"flexDirection","column"),q(K,"paddingLeft",1),q(K,"paddingRight",1),q(K,"paddingTop",1),q(K,"paddingBottom",1),q(K,"gap",0),q(L,"wrapMode","none"),q(L,"onMouseUp",()=>J.onToggleCollapsed?.()),U(L,(()=>{var A=u0(()=>!!j());return()=>A()?F("tasks.hints.headerFolded"):F("tasks.hints.headerUnfolded")})()),U(K,b(G0,{get when(){return!j()},get children(){return b(X1,{get each(){return f()},children:(A)=>{let O=()=>A.dimWhenMain===!0&&(J.selectedIsMain?.()??!1);return(()=>{var R=W("box"),x=W("box"),a=W("text"),S=E0("["),C=E0("]"),M=W("box"),I=W("text");return D(R,x),D(R,M),q(R,"flexDirection","row"),q(R,"gap",1),q(R,"justifyContent","space-between"),D(x,a),q(x,"width",10),q(x,"flexShrink",0),D(a,S),D(a,C),q(a,"wrapMode","none"),U(a,()=>oX(A.k,Y()),C),D(M,I),q(M,"flexShrink",0),q(I,"wrapMode","none"),U(I,()=>V(A.label)),y(($)=>{var i=O()?z.textMuted:z.accent,e=O()?wH.DIM:wH.BOLD,J0=B(),T=z.textMuted,f0=O()?wH.DIM:void 0;return i!==$.e&&($.e=q(a,"fg",i,$.e)),e!==$.t&&($.t=q(a,"attributes",e,$.t)),J0!==$.a&&($.a=q(M,"width",J0,$.a)),T!==$.o&&($.o=q(I,"fg",T,$.o)),f0!==$.i&&($.i=q(I,"attributes",f0,$.i)),$},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),R})()}})}}),null),y((A)=>{var O=z.textMuted,R=wH.DIM;return O!==A.e&&(A.e=q(L,"fg",O,A.e)),R!==A.t&&(A.t=q(L,"attributes",R,A.t)),A},{e:void 0,t:void 0}),K})()}async function Hu(J={}){await OJ({logContext:"tasks",providers:{notifications:!0},setup:()=>Bu(J)})}async function Bu(J){let z=new wX({homeDir:Sz()});await z.load();let[Y,Z]=r(z.list()),X=null;try{let B=await zz();if(B){let V=new KJ(B);await V.init(),X=V}else ez("tasks-boot","no daemon running \u2014 polling tasks.json (a gui owns daemon lifecycle)")}catch(B){t1("tasks-boot",B),ez("tasks-boot","daemon subscribe failed \u2014 polling tasks.json")}let G=()=>X&&X.connectionStateSignal()()==="online"?X.tasksSignal()():Y(),Q=async()=>{await z.load(),Z(z.list())},f="",H=setInterval(()=>{if(X&&X.connectionStateSignal()()==="online")return;(async()=>{let B="missing";try{let V=await Gu(z.filePath);B=`${V.mtimeMs}:${V.size}`}catch{}if(B===f)return;f=B,await Q()})().catch(()=>{})},Qu);return{root:()=>[b(qu,{tasks:G,get initialTaskId(){return J.initialTaskId},orch:X,reload:Q}),b(XM,{})],onDestroy:()=>{if(H)clearInterval(H);X?.dispose()}}}var Qu=1500;var nM=k(()=>{w();w();w();w();w();w();w();w();h1();Wz();GJ();w();YZ();FJ();W1();iY();o1();YQ();O1();lq();$1();MJ();a9();_X();_9();zW();GM();qM();pX();gQ();gH();m1();$9();_Y();yJ();UM();kH();MM();PM();yY();YJ();nJ();p9()});var iM={};f1(iM,{startSettingsHost:()=>Wu});function ju(J){let z=rX(),Y=d1(),{theme:Z}=i0(),X=!1,G=!1;async function Q(){if(G)return;G=!0;try{if(z.flush()&&X){let H=await TJ();if(H)await OX(H)}}catch(f){console.error("[kobe settings] failed to refresh workspace panes:",f)}finally{process.exit(0)}}return D1(()=>({enabled:Y.stack.length===0,bindings:[{key:"escape",cmd:Q},{key:"q",cmd:Q},{key:"ctrl+c",cmd:Q}]})),(()=>{var f=W("scrollbox");return q(f,"flexGrow",1),q(f,"paddingTop",1),q(f,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),U(f,b(mZ,{kv:z,get orchestrator(){return J.orchestrator??void 0},standalone:!0,onVisualPrefsChange:()=>{X=!0},onClose:Q})),y((H)=>q(f,"backgroundColor",Z.background,H)),f})()}async function Wu(){await OJ({setup:async()=>{let J=null;try{let z=await zz();if(z){let Y=new KJ(z);await Y.init(),J=Y}else console.error("[kobe settings] no daemon running; Restart backend disabled")}catch(z){console.error("[kobe settings] daemon unavailable; Restart backend disabled:",z)}return{root:()=>b(ju,{orchestrator:J}),onDestroy:()=>{J?.dispose()}}}})}var lM=k(()=>{w();w();w();w();w();w();FJ();iY();zW();gQ();m1();_Y();yJ();YJ();nJ()});var $M={};f1($M,{startHelpHost:()=>Ku});function Vu(){let J=d1(),{theme:z}=i0();function Y(){process.exit(0)}return D1(()=>({enabled:J.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 q(Z,"flexGrow",1),q(Z,"paddingTop",1),U(Z,b(sX,{onClose:Y})),y((X)=>q(Z,"backgroundColor",z.background,X)),Z})()}async function Ku(){await OJ({providers:{kv:!1,focus:!1},setup:()=>({root:()=>b(Vu,{})})})}var aM=k(()=>{w();w();w();w();w();a9();m1();_Y();yJ();nJ()});var _M={};f1(_M,{startUpdateHost:()=>Au});import{spawn as Uu,spawnSync as Du}from"child_process";import{TextAttributes as JG}from"@opentui/core";function Lu(J){if(!J)return!1;let z=process.platform,[Y,Z]=z==="darwin"?["open",[J]]:z==="win32"?["cmd",["/c","start","",J]]:["xdg-open",[J]];try{return Uu(Y,Z,{stdio:"ignore",detached:!0}).unref(),!0}catch{return!1}}function Mu(J){return J.replace(/\r\n/g,`
|
|
266
265
|
`).split(`
|
|
267
|
-
`).map((z)=>z.trim()).filter(Boolean)}function
|
|
266
|
+
`).map((z)=>z.trim()).filter(Boolean)}function Fu(){if(!process.stdin.isTTY)return Promise.resolve();return new Promise((J)=>{let z=process.stdin,Y=()=>{z.off("data",Y),z.setRawMode?.(!1),z.pause(),J()};z.setRawMode?.(!0),z.resume(),z.once("data",Y)})}function Ou(){let{theme:J}=i0(),z=HJ(),[Y,Z]=r(null),[X,G]=r([]),[Q,f]=r(!0),[H,B]=r("update"),[V,j]=r(null),K=U0(()=>Y()?.latest??p0),L=U0(()=>X()[0]?.url??$H(K())),A=U0(()=>[{id:"update",key:"U",label:F("update.actions.updateNow"),detail:az},{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")}]);zJ(()=>{O()});async function O(){let S=await zG({force:!0});Z(S);let C=S?.latest??p0,M=await lH({current:p0,latest:C});G(M),f(!1)}function R(S){let C=A().map(($)=>$.id),I=(C.indexOf(H())+S+C.length)%C.length;B(C[I]??"update")}function x(S=H()){if(S==="close")process.exit(0);if(S==="release"){j(Lu(L())?F("update.statusReleaseOpened"):F("update.statusReleaseError"));return}a()}async function a(){j(F("update.statusRunningUpdater")),await new Promise((M)=>setTimeout(M,30)),z?.destroy(),process.stdout.write(`
|
|
268
267
|
kobe ${p0} -> latest
|
|
269
|
-
`),process.stdout.write(`running: ${
|
|
268
|
+
`),process.stdout.write(`running: ${az}
|
|
270
269
|
|
|
271
|
-
`);let S=
|
|
270
|
+
`);let S=Du("sh",["-c",az],{stdio:"inherit"}),C=S.status??(S.error?1:0);if(S.error)process.stderr.write(`
|
|
272
271
|
kobe update: failed to start updater: ${S.error.message}
|
|
273
|
-
`);process.stdout.write(
|
|
272
|
+
`);process.stdout.write(C===0?`
|
|
274
273
|
${F("update.updateComplete")}
|
|
275
274
|
`:`
|
|
276
|
-
${F("update.updateFailed",{code:String(
|
|
277
|
-
`),process.stdout.write(F("update.pressAnyKey")),await
|
|
278
|
-
`)}function
|
|
279
|
-
`).map((X)=>X.replace(/\r$/,"")),Z=new Set;for(let X of G)if(X.length>0)Z.add(X);return Array.from(Z).sort()}async function ZW(J,z){let Y=await yH(["status","--porcelain","--untracked-files=all"],J,z),G=oM(Y),Z=new Map;try{let X=await yH(["diff","--no-color","--numstat","HEAD"],J,z);Z=new Map(_M(X).map((Q)=>[Q.path,{added:Q.added,deleted:Q.deleted}]))}catch{try{let X=await yH(["diff","--no-color","--numstat","--cached"],J,z);Z=new Map(_M(X).map((Q)=>[Q.path,{added:Q.added,deleted:Q.deleted}]))}catch{Z=new Map}}return G.map((X)=>{let Q=Z.get(X.path);if(Q)return{...X,added:Q.added,deleted:Q.deleted};return X})}function _M(J){return FU(J).map((z)=>({path:z.path,added:z.added,deleted:z.deleted}))}function pM(J){let z={name:"",path:"",isDir:!0,children:[]};for(let Y of J){if(!Y)continue;let G=Y.split("/").filter((X)=>X.length>0);if(G.length===0)continue;let Z=z;for(let X=0;X<G.length;X++){let Q=G[X],H=X!==G.length-1,B=Z.children.find((V)=>V.name===Q&&V.isDir===H);if(!B)B={name:Q,path:G.slice(0,X+1).join("/"),isDir:H,children:[]},Z.children.push(B);Z=B}}return rM(z),z}function rM(J){J.children.sort((z,Y)=>{if(z.isDir!==Y.isDir)return z.isDir?-1:1;return z.name.localeCompare(Y.name)});for(let z of J.children)rM(z)}function oM(J){let z=[];for(let Y of xf(J)){let G;if(Y.x==="?"&&Y.y==="?")G="?";else{let X=Y.y!==" "?Y.y:Y.x;if(X==="M"||X==="A"||X==="D"||X==="R"||X==="C"||X==="U")G=X;else continue}let Z=Y.path;if(Z.length===0)continue;if(Z.endsWith("/"))continue;z.push({path:Z,status:G})}return z}var XW=k(()=>{Fj();kf()});function QW(J){D1(()=>({enabled:J.focused(),bindings:lY({"files.nav":(z,Y)=>{if((Y??0)%2===0)J.moveDown();else J.moveUp()},"files.hierarchy":(z,Y)=>{if((Y??0)%2===0)J.collapseOrParent();else J.expandOrDescend()},"files.tab":(z,Y)=>{let G=J.currentTab(),Z=DQ.indexOf(G);if(Z<0)return;let X=(Y??0)%2===0?-1:1,Q=DQ[(Z+X+DQ.length)%DQ.length];if(Q)J.setTab(Q)},"files.open":()=>J.openCurrent(),"files.mention":()=>J.mentionCurrent?.(),"files.createPR":()=>J.createPR?.(),"files.openExternal":()=>J.openExternal(),"files.refresh":()=>J.refresh()})}))}var DQ;var qW=k(()=>{$Z();yJ();DQ=["all","changes"]});import{spawn as sM}from"child_process";import{existsSync as Nu}from"fs";import{platform as ku}from"os";function tM(J){if(!J)return;let z=ku();if(z==="linux"){if(Nu("/proc/sys/fs/binfmt_misc/WSLInterop")||process.env.WSL_DISTRO_NAME){LQ("wslview",[J],()=>{let Y=sM("wslpath",["-w",J],{stdio:["ignore","pipe","ignore"]}),G="";Y.stdout?.on("data",(Z)=>{G+=Z.toString()}),Y.on("close",(Z)=>{if(Z===0)LQ("explorer.exe",[G.trim()])})});return}LQ("xdg-open",[J]);return}if(z==="darwin"){LQ("open",[J]);return}if(z==="win32"){LQ("cmd.exe",["/c","start","",J]);return}}function LQ(J,z,Y){try{let G=sM(J,z,{stdio:"ignore",detached:!0});G.on("error",()=>Y?.()),G.unref()}catch{Y?.()}}var eM=()=>{};function fW(J,z,Y,G){for(let Z of J.children)if(Z.isDir){let X=z.has(Z.path);if(G.push({kind:"dir",path:Z.path,name:Z.name,depth:Y,expanded:X,hasChildren:Z.children.length>0}),X)fW(Z,z,Y+1,G)}else G.push({kind:"file",path:Z.path,name:Z.name,depth:Y})}function JF(J,z){return SH(J,z)}function zF(J){return J.map((z)=>({kind:"status",path:z.path,status:z.status,added:z.added,deleted:z.deleted}))}function bu(J){return`${J.kind}\x00${J.path}`}function Su(J,z){if(J.kind!==z.kind||J.path!==z.path)return!1;switch(J.kind){case"file":{let Y=z;return J.name===Y.name&&J.depth===Y.depth}case"dir":{let Y=z;return J.name===Y.name&&J.depth===Y.depth&&J.expanded===Y.expanded&&J.hasChildren===Y.hasChildren}case"status":{let Y=z;return J.status===Y.status&&J.added===Y.added&&J.deleted===Y.deleted}}}function YF(J,z){return gH(J,z,bu,Su)}function GF(J,z){if(J===z)return!0;if(J==null||z==null)return!1;if(J.length!==z.length)return!1;for(let Y=0;Y<J.length;Y++)if(J[Y]!==z[Y])return!1;return!0}function ZF(J,z){if(J===z)return!0;if(J==null||z==null)return!1;if(J.length!==z.length)return!1;for(let Y=0;Y<J.length;Y++){let G=J[Y],Z=z[Y];if(G.path!==Z.path||G.status!==Z.status||G.added!==Z.added||G.deleted!==Z.deleted)return!1}return!0}var XF=()=>{};import{watch as Iu}from"fs";import{TextAttributes as MQ}from"@opentui/core";function Tu(J){switch(J){case"M":return"warning";case"A":return"success";case"D":return"error";case"?":return"textMuted";case"R":case"C":case"U":return"info"}}function xu(J){let z=J.toLowerCase();if(z.includes("not a git repository"))return F("files.error.notGitRepo");if(z.includes("does not exist")||z.includes("enoent"))return F("files.error.pathMissing");if(z.includes("permission denied")||z.includes("eacces"))return F("files.error.permissionDenied");if(z.includes("git: not found")||z.includes("command not found"))return F("files.error.gitNotInstalled");let Y=J.indexOf(": ");if(Y>=0&&J.startsWith("git "))return J.slice(Y+2).trim()||F("files.error.gitFailed");return J.trim()||F("files.error.gitFailed")}function uu(J){switch(J){case"all":return F("files.tabs.all");case"changes":return F("files.tabs.changes")}}function HW(J){let{theme:z}=d0(),Y=mz(),G=()=>J.focused?J.focused():!0,[Z,X]=a("all"),[Q,f]=a(0),[H,B]=a(0),[V,j]=a(null,{equals:GF}),[K,L]=a(null,{equals:ZF}),[A,O]=a(null),[g,x]=a(new Set),_=0;async function S(t,h,C){let o=++_;if(h==null){j(null),L(null),O(null);return}O(null);try{if(t==="all"){let E=await GW(h,C);if(C?.aborted||o!==_||J.worktreePath()!==h)return;j(E)}else if(t==="changes"){let E=await ZW(h,C);if(C?.aborted||o!==_||J.worktreePath()!==h)return;L(E)}}catch(E){if(C?.aborted)return;let c=E instanceof Error?E.message:String(E);if(o===_&&J.worktreePath()===h)O(c)}}r0(SJ(J.worktreePath,async(t)=>{j(null),L(null),O(null),f(0),x(new Set);let h=new AbortController;k1(()=>h.abort()),await S(Z(),t,h.signal)})),r0(SJ(J.worktreePath,(t)=>{if(t==null)return;if(process.env.KOBE_FILETREE_WATCH!=="1")return;let h=null,C=null;try{C=Iu(t,{recursive:!0},(o,E)=>{if(E==null)return;let c=E.toString();if(c===".git"||c.startsWith(".git/")||c.startsWith(".git\\"))return;if(c.startsWith("node_modules/")||c.startsWith("node_modules\\"))return;if(h!=null)clearTimeout(h);h=setTimeout(()=>{h=null,B((s)=>s+1)},500)}),C.on("error",()=>{})}catch{}k1(()=>{if(h!=null)clearTimeout(h);if(C!=null)C.close()})})),r0(SJ([Z,H],async([t,h])=>{let C=J.worktreePath();if(C==null)return;f(0);let o=new AbortController;k1(()=>o.abort());let c=H()>0;if(t==="all"){if(V()==null||c)await S("all",C,o.signal)}else if(t==="changes"){if(K()==null||c)await S("changes",C,o.signal)}}));let N=K0(()=>{let t=V();if(t==null)return null;return pM(t)}),M=K0((t)=>{let h=[];if(Z()==="all"){let C=N();if(C!=null)fW(C,g(),0,h)}else if(Z()==="changes"){let C=K();if(C!=null)h.push(...zF(C))}return YF(t??[],h)},[]),I=K0(()=>{let t=0,h=0;for(let C of M()){if(C.kind!=="status")continue;if(C.added!=null)t=Math.max(t,String(C.added).length+1);if(C.deleted!=null)h=Math.max(h,String(C.deleted).length+1)}return{added:t,deleted:h}}),r=K0(()=>{let t=I(),h=(t.added>0?t.added+1:0)+(t.deleted>0?t.deleted+1:0);return Math.max(8,Y().width-6-h)});function i(){let t=M();if(t.length===0)return;f(Math.min(Q()+1,t.length-1))}function e(){if(M().length===0)return;f(Math.max(Q()-1,0))}function J0(){let t=M(),h=Q(),C=t[h];if(!C)return;if(C.kind!=="dir")return;if(!C.expanded&&C.hasChildren)x((o)=>{let E=new Set(o);return E.add(C.path),E});else if(C.expanded){if(h+1<t.length)f(h+1)}}function T(){if(Z()!=="all")return;let t=M(),h=Q(),C=t[h];if(!C)return;if(C.kind==="dir"&&C.expanded){x((E)=>{let c=new Set(E);return c.delete(C.path),c});return}if(C.kind!=="dir"&&C.kind!=="file")return;let o=C.depth-1;if(o<0)return;for(let E=h-1;E>=0;E--){let c=t[E];if(!c)continue;if(c.kind==="dir"&&c.depth===o){f(E);return}}}function q0(){let t=M(),h=Q();if(h<0||h>=t.length)return;let C=t[h];if(!C)return;if(C.kind==="dir"){x((o)=>{let E=new Set(o);if(E.has(C.path))E.delete(C.path);else E.add(C.path);return E});return}J.onOpenFile(C.path)}function p(){let t=M(),h=Q();if(h<0||h>=t.length)return;let C=t[h];if(!C||C.kind==="dir")return;J.onMention?.(C.path)}function B0(){B((t)=>t+1),J.onRefresh?.()}function L0(){let t=M(),h=Q();if(h<0||h>=t.length)return;let C=t[h];if(!C||C.kind==="dir")return;let o=J.worktreePath();if(!o)return;let E=`${o}/${C.path}`;tM(E)}QW({focused:G,moveDown:i,moveUp:e,setTab:(t)=>X(t),currentTab:Z,openCurrent:q0,mentionCurrent:p,createPR:J.onCreatePR,openExternal:L0,refresh:B0,expandOrDescend:J0,collapseOrParent:T});let V0;return r0(SJ([Q,M],([t,h])=>{if(!V0)return;if(h.length===0)return;let C=V0.scrollTop,o=V0.viewport.height;if(o<=0)return;if(t<C)V0.scrollTo({x:0,y:t});else if(t>=C+o)V0.scrollTo({x:0,y:t-o+1})})),(()=>{var t=W("box"),h=W("box"),C=W("box"),o=W("scrollbox");return D(t,h),D(t,o),q(t,"flexDirection","column"),q(t,"flexGrow",1),q(t,"paddingTop",1),q(t,"paddingBottom",1),q(t,"paddingLeft",0),q(t,"paddingRight",0),U(t,b(Z0,{get when(){return J.onZenToggle||J.onCreatePR},get children(){var E=W("box");return q(E,"flexDirection","row"),q(E,"justifyContent","flex-end"),q(E,"gap",2),q(E,"paddingBottom",1),q(E,"flexShrink",0),U(E,b(Z0,{get when(){return J.onZenToggle},get children(){var c=W("box"),s=W("text"),X0=W("text");return D(c,s),D(c,X0),q(c,"flexDirection","row"),q(c,"gap",1),q(c,"onMouseUp",()=>J.onZenToggle?.()),D(s,E0("[~]")),q(s,"wrapMode","none"),q(X0,"wrapMode","none"),U(X0,()=>F("files.actions.zen")),y((F0)=>{var P0=z.accent,A0=MQ.BOLD,N0=z.text;return P0!==F0.e&&(F0.e=q(s,"fg",P0,F0.e)),A0!==F0.t&&(F0.t=q(s,"attributes",A0,F0.t)),N0!==F0.a&&(F0.a=q(X0,"fg",N0,F0.a)),F0},{e:void 0,t:void 0,a:void 0}),c}}),null),U(E,b(Z0,{get when(){return J.onCreatePR},get children(){var c=W("box"),s=W("text"),X0=W("text");return D(c,s),D(c,X0),q(c,"flexDirection","row"),q(c,"gap",1),q(c,"onMouseUp",()=>J.onCreatePR?.()),D(s,E0("[P]")),q(s,"wrapMode","none"),q(X0,"wrapMode","none"),U(X0,()=>F("files.actions.createPR")),y((F0)=>{var P0=z.accent,A0=MQ.BOLD,N0=z.text;return P0!==F0.e&&(F0.e=q(s,"fg",P0,F0.e)),A0!==F0.t&&(F0.t=q(s,"attributes",A0,F0.t)),N0!==F0.a&&(F0.a=q(X0,"fg",N0,F0.a)),F0},{e:void 0,t:void 0,a:void 0}),c}}),null),E}}),h),D(h,C),q(h,"flexDirection","row"),q(h,"justifyContent","space-between"),q(h,"paddingBottom",0),q(h,"flexShrink",0),q(C,"flexDirection","row"),q(C,"gap",2),U(C,b(X1,{each:yu,children:(E)=>{let c=()=>Z()===E;return(()=>{var s=W("text");return q(s,"wrapMode","none"),q(s,"onMouseUp",()=>X(E)),U(s,()=>uu(E)),y((X0)=>{var F0=c()?z.primary:z.textMuted,P0=c()?MQ.BOLD:void 0;return F0!==X0.e&&(X0.e=q(s,"fg",F0,X0.e)),P0!==X0.t&&(X0.t=q(s,"attributes",P0,X0.t)),X0},{e:void 0,t:void 0}),s})()}})),U(h,b(Z0,{get when(){return J.cornerBadge?.()},children:(E)=>(()=>{var c=W("text");return q(c,"wrapMode","none"),U(c,()=>E().text),y((s)=>{var X0=E().active?z.accent:z.textMuted,F0=E().active?MQ.BOLD:void 0;return X0!==s.e&&(s.e=q(c,"fg",X0,s.e)),F0!==s.t&&(s.t=q(c,"attributes",F0,s.t)),s},{e:void 0,t:void 0}),c})()}),null),U(t,b(Z0,{get when(){return Z()==="changes"},get children(){var E=W("box"),c=W("text");return D(E,c),q(E,"flexDirection","column"),q(E,"paddingBottom",1),q(E,"flexShrink",0),q(E,"gap",0),q(c,"wrapMode","none"),U(c,()=>F("files.legend.changes")),y((s)=>q(c,"fg",z.textMuted,s)),E}}),o),U(t,b(Z0,{get when(){return Z()!=="changes"},get children(){var E=W("box");return q(E,"flexDirection","row"),q(E,"paddingBottom",1),q(E,"flexShrink",0),E}}),o),cz((E)=>{V0=E},o),q(o,"flexGrow",1),q(o,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),U(o,b(Z0,{get when(){return J.worktreePath()==null},get children(){var E=W("box"),c=W("text");return D(E,c),q(E,"paddingTop",1),q(E,"paddingLeft",1),U(c,()=>F("files.empty.noTask")),y((s)=>q(c,"fg",z.textMuted,s)),E}}),null),U(o,b(Z0,{get when(){return x0(()=>J.worktreePath()!=null)()&&A()!=null},get children(){var E=W("box"),c=W("text"),s=W("text");return D(E,c),D(E,s),q(E,"paddingTop",1),q(E,"paddingLeft",1),q(E,"flexDirection","column"),q(E,"gap",0),q(c,"wrapMode","word"),U(c,()=>xu(A()??"")),q(s,"wrapMode","word"),U(s,()=>F("files.error.retryHint")),y((X0)=>{var{error:F0,textMuted:P0}=z;return F0!==X0.e&&(X0.e=q(c,"fg",F0,X0.e)),P0!==X0.t&&(X0.t=q(s,"fg",P0,X0.t)),X0},{e:void 0,t:void 0}),E}}),null),U(o,b(Z0,{get when(){return x0(()=>J.worktreePath()!=null&&A()==null&&M().length===0)()&&(Z()==="all"&&V()!=null||Z()==="changes"&&K()!=null)},get children(){var E=W("box"),c=W("text");return D(E,c),q(E,"paddingTop",1),q(E,"paddingLeft",1),U(c,(()=>{var s=x0(()=>Z()==="all");return()=>s()?F("files.empty.noFiles"):F("files.empty.noChanges")})()),y((s)=>q(c,"fg",z.textMuted,s)),E}}),null),U(o,b(Z0,{get when(){return x0(()=>J.worktreePath()!=null&&A()==null)()&&M().length>0},get children(){var E=W("box");return q(E,"flexShrink",0),q(E,"gap",0),q(E,"paddingRight",1),U(E,b(X1,{get each(){return M()},children:(c,s)=>{let X0=()=>s()===Q(),F0=(()=>{var R0=W("text");return q(R0,"wrapMode","none"),U(R0,()=>X0()?"\u258C":" "),y((y0)=>q(R0,"fg",X0()?z.focusAccent:void 0,y0)),R0})(),P0=()=>X0()?z.backgroundElement:void 0;if(c.kind==="dir"){let R0=" ".repeat(c.depth),y0=c.expanded?"\u25BE":"\u25B8";return(()=>{var H1=W("box"),G1=W("box"),w0=W("text");return D(H1,G1),q(H1,"flexDirection","row"),q(H1,"gap",0),q(H1,"onMouseUp",()=>{f(s()),x((o0)=>{let $=new Set(o0);if($.has(c.path))$.delete(c.path);else $.add(c.path);return $})}),U(H1,F0,G1),D(G1,w0),q(G1,"flexGrow",1),q(G1,"paddingRight",1),q(w0,"wrapMode","none"),U(w0,()=>`${R0}${y0} ${c.name}/`),y((o0)=>{var $=P0(),W0=z.textMuted,T0=MQ.BOLD;return $!==o0.e&&(o0.e=q(H1,"backgroundColor",$,o0.e)),W0!==o0.t&&(o0.t=q(w0,"fg",W0,o0.t)),T0!==o0.a&&(o0.a=q(w0,"attributes",T0,o0.a)),o0},{e:void 0,t:void 0,a:void 0}),H1})()}if(c.kind==="file"){let R0=" ".repeat(c.depth);return(()=>{var y0=W("box"),H1=W("box"),G1=W("text");return D(y0,H1),q(y0,"flexDirection","row"),q(y0,"gap",0),q(y0,"onMouseUp",()=>{f(s()),J.onOpenFile(c.path)}),U(y0,F0,H1),D(H1,G1),q(H1,"flexGrow",1),q(H1,"paddingRight",1),q(G1,"wrapMode","none"),U(G1,()=>`${R0} ${c.name}`),y((w0)=>{var o0=P0(),$=z.text;return o0!==w0.e&&(w0.e=q(y0,"backgroundColor",o0,w0.e)),$!==w0.t&&(w0.t=q(G1,"fg",$,w0.t)),w0},{e:void 0,t:void 0}),y0})()}let A0=Tu(c.status),N0=()=>{switch(A0){case"success":return z.success;case"warning":return z.warning;case"error":return z.error;case"info":return z.info;default:return z.textMuted}},u=I(),g0=c.added==null?" ".repeat(u.added):`+${c.added}`.padStart(u.added),Q0=c.deleted==null?" ".repeat(u.deleted):`-${c.deleted}`.padStart(u.deleted);return(()=>{var R0=W("box"),y0=W("box"),H1=W("text"),G1=W("text");return D(R0,y0),q(R0,"flexDirection","row"),q(R0,"gap",0),q(R0,"onMouseUp",()=>{f(s()),J.onOpenFile(c.path)}),U(R0,F0,y0),D(y0,H1),D(y0,G1),q(y0,"flexDirection","row"),q(y0,"flexGrow",1),q(y0,"gap",1),q(y0,"paddingRight",1),q(H1,"wrapMode","none"),U(H1,()=>c.status),q(G1,"wrapMode","none"),q(G1,"flexGrow",1),U(G1,()=>JF(c.path,r())),U(y0,b(Z0,{get when(){return u.added>0},get children(){var w0=W("text");return q(w0,"wrapMode","none"),U(w0,g0),y((o0)=>q(w0,"fg",z.success,o0)),w0}}),null),U(y0,b(Z0,{get when(){return u.deleted>0},get children(){var w0=W("text");return q(w0,"wrapMode","none"),U(w0,Q0),y((o0)=>q(w0,"fg",z.error,o0)),w0}}),null),y((w0)=>{var o0=P0(),$=N0(),W0=z.text;return o0!==w0.e&&(w0.e=q(R0,"backgroundColor",o0,w0.e)),$!==w0.t&&(w0.t=q(H1,"fg",$,w0.t)),W0!==w0.a&&(w0.a=q(G1,"fg",W0,w0.a)),w0},{e:void 0,t:void 0,a:void 0}),R0})()}})),E}}),null),U(t,b(Z0,{get when(){return J.worktreePath()!=null},get children(){var E=W("box"),c=W("text");return D(E,c),q(E,"flexDirection","row"),q(E,"paddingTop",1),q(E,"flexShrink",0),q(c,"wrapMode","none"),U(c,()=>F("files.footer.openHint")),y((s)=>q(c,"fg",z.textMuted,s)),E}}),null),t})()}var yu;var QF=k(()=>{P();P();P();P();P();P();P();P();P();ZJ();P();j1();v1();XW();qW();eM();XF();yu=["all","changes"]});var qF=k(()=>{QF();XW();qW()});function HF(J,z){if(z<3)return 2500;return Math.min(J*2,20000)}function BF(J,z,Y){if(z)return 1500;if(Y==="running")return 1500;return Math.min(J*2,6000)}var fF=2500,FQ=1500;import{promises as Eu}from"fs";import wu from"path";async function xH(J,z){let Y=new AbortController,G=setTimeout(()=>Y.abort(),Pu);try{let Z=await zY("git",z,{cwd:J,env:cJ(),signal:Y.signal});if(Y.signal.aborted)return null;if(Z.status!==0)return null;return Z.stdout.trim()}finally{clearTimeout(G)}}async function hu(J){return await xH(J,["rev-parse","--abbrev-ref","HEAD"])||"HEAD"}async function vu(J){let z=await xH(J,["symbolic-ref","refs/remotes/origin/HEAD","--short"]);if(!z)return"main";return z.startsWith("origin/")?z.slice(7):z}async function mu(J){let z=await xH(J,["rev-parse","--abbrev-ref","@{u}"]);return z!==null&&z.length>0}async function cu(J){let z=await xH(J,["status","--porcelain"]);if(!z)return 0;return z.split(`
|
|
280
|
-
`).filter((Y)=>Y.length>0).length}async function
|
|
275
|
+
${F("update.updateFailed",{code:String(C)})}
|
|
276
|
+
`),process.stdout.write(F("update.pressAnyKey")),await Fu(),process.exit(C)}return D1(()=>({bindings:[{key:"up",cmd:()=>R(-1)},{key:"down",cmd:()=>R(1)},{key:"k",cmd:()=>R(-1)},{key:"j",cmd:()=>R(1)},{key:"return",cmd:()=>x()},{key:"u",cmd:()=>x("update")},{key:"r",cmd:()=>x("release")},{key:"q",cmd:()=>x("close")},{key:"escape",cmd:()=>x("close")},{key:"ctrl+c",cmd:()=>x("close")}]})),(()=>{var S=W("box"),C=W("box"),M=W("text"),I=W("text"),$=W("box"),i=W("text"),e=W("text"),J0=E0("v"),T=W("text"),f0=W("text"),_=E0("v"),W0=W("box"),R0=W("box"),V0=W("text"),t=W("scrollbox"),P=W("box");return D(S,C),D(S,$),D(S,W0),D(S,R0),D(S,t),q(S,"flexDirection","column"),q(S,"flexGrow",1),q(S,"paddingTop",1),q(S,"paddingLeft",2),q(S,"paddingRight",2),D(C,M),D(C,I),q(C,"flexDirection","row"),q(C,"justifyContent","space-between"),q(C,"flexShrink",0),q(M,"wrapMode","none"),U(M,()=>F("update.pageTitle")),D(I,E0("q / esc")),q(I,"wrapMode","none"),q(I,"onMouseUp",()=>x("close")),D($,i),D($,e),D($,T),D($,f0),q($,"flexDirection","row"),q($,"gap",2),q($,"flexShrink",0),q($,"paddingTop",1),q(i,"wrapMode","none"),U(i,()=>F("update.current")),D(e,J0),q(e,"wrapMode","none"),U(e,p0,null),q(T,"wrapMode","none"),U(T,()=>F("update.latest")),D(f0,_),q(f0,"wrapMode","none"),U(f0,K,null),q(W0,"flexDirection","column"),q(W0,"flexShrink",0),q(W0,"paddingTop",1),q(W0,"gap",0),U(W0,b(X1,{get each(){return A()},children:(N)=>(()=>{var p=W("box"),u=W("box"),d=W("text"),o=E0("["),Q0=E0("]"),g0=W("box"),P0=W("text"),N0=W("text");return D(p,u),D(p,g0),D(p,N0),q(p,"flexDirection","row"),q(p,"gap",1),q(p,"paddingLeft",1),q(p,"paddingRight",1),q(p,"onMouseUp",()=>x(N.id)),D(u,d),q(u,"width",4),q(u,"flexShrink",0),D(d,o),D(d,Q0),q(d,"wrapMode","none"),U(d,()=>N.key,Q0),D(g0,P0),q(g0,"width",14),q(g0,"flexShrink",0),q(P0,"wrapMode","none"),U(P0,()=>N.label),q(N0,"wrapMode","word"),U(N0,()=>N.detail),y((b0)=>{var x0=H()===N.id?J.primary:void 0,v=H()===N.id?J.selectedListItemText:J.accent,k0=JG.BOLD,X0=H()===N.id?J.selectedListItemText:J.text,L0=H()===N.id?J.selectedListItemText:J.textMuted;return x0!==b0.e&&(b0.e=q(p,"backgroundColor",x0,b0.e)),v!==b0.t&&(b0.t=q(d,"fg",v,b0.t)),k0!==b0.a&&(b0.a=q(d,"attributes",k0,b0.a)),X0!==b0.o&&(b0.o=q(P0,"fg",X0,b0.o)),L0!==b0.i&&(b0.i=q(N0,"fg",L0,b0.i)),b0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),p})()})),U(S,b(G0,{get when(){return V()},get children(){var N=W("text");return q(N,"wrapMode","word"),U(N,V),y((p)=>q(N,"fg",J.info,p)),N}}),R0),D(R0,V0),q(R0,"flexShrink",0),q(R0,"paddingTop",1),q(V0,"wrapMode","none"),U(V0,()=>F("update.changesSectionHeader",{from:p0,to:K()})),D(t,P),q(t,"flexGrow",1),q(t,"flexShrink",1),q(t,"stickyScroll",!1),q(P,"flexDirection","column"),q(P,"paddingRight",1),q(P,"paddingBottom",1),q(P,"gap",0),U(P,b(G0,{get when(){return Q()},get children(){var N=W("text");return U(N,()=>F("update.loadingNotes")),y((p)=>q(N,"fg",J.textMuted,p)),N}}),null),U(P,b(G0,{get when(){return u0(()=>!Q())()&&X().length===0},get children(){var N=W("text");return q(N,"wrapMode","word"),U(N,()=>F("update.notesUnavailable")),y((p)=>q(N,"fg",J.textMuted,p)),N}}),null),U(P,b(X1,{get each(){return X()},children:(N)=>(()=>{var p=W("box"),u=W("text"),d=E0("v");return D(p,u),q(p,"flexDirection","column"),q(p,"paddingBottom",1),q(p,"gap",0),D(u,d),q(u,"wrapMode","none"),U(u,()=>N.version,null),U(p,b(X1,{get each(){return Mu(N.body)},children:(o)=>(()=>{var Q0=W("text");return q(Q0,"wrapMode","word"),U(Q0,o),y((g0)=>q(Q0,"fg",J.textMuted,g0)),Q0})()}),null),y((o)=>{var Q0=J.text,g0=JG.BOLD;return Q0!==o.e&&(o.e=q(u,"fg",Q0,o.e)),g0!==o.t&&(o.t=q(u,"attributes",g0,o.t)),o},{e:void 0,t:void 0}),p})()}),null),y((N)=>{var{background:p,text:u}=J,d=JG.BOLD,o=J.textMuted,Q0=J.textMuted,g0=J.text,P0=JG.BOLD,N0=J.textMuted,b0=Y()?.hasUpdate?J.warning:J.success,x0=JG.BOLD,v=J.textMuted,k0=JG.DIM,X0={trackOptions:{backgroundColor:J.background,foregroundColor:J.borderActive}};return p!==N.e&&(N.e=q(S,"backgroundColor",p,N.e)),u!==N.t&&(N.t=q(M,"fg",u,N.t)),d!==N.a&&(N.a=q(M,"attributes",d,N.a)),o!==N.o&&(N.o=q(I,"fg",o,N.o)),Q0!==N.i&&(N.i=q(i,"fg",Q0,N.i)),g0!==N.n&&(N.n=q(e,"fg",g0,N.n)),P0!==N.s&&(N.s=q(e,"attributes",P0,N.s)),N0!==N.h&&(N.h=q(T,"fg",N0,N.h)),b0!==N.r&&(N.r=q(f0,"fg",b0,N.r)),x0!==N.d&&(N.d=q(f0,"attributes",x0,N.d)),v!==N.l&&(N.l=q(V0,"fg",v,N.l)),k0!==N.u&&(N.u=q(V0,"attributes",k0,N.u)),X0!==N.c&&(N.c=q(t,"verticalScrollbarOptions",X0,N.c)),N},{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}),S})()}async function Au(){await OJ({setup:()=>({root:()=>b(Ou,{})})})}var pM=k(()=>{w();w();w();w();w();w();w();w();w();W1();MJ();m1();GJ();_Y();yJ()});function Ru(J){return J.trim().split(/\s+/)[0]??""}function oM(J,z,Y,Z){let X=Z1(Y);if(J==="vim")return{bin:"vim",command:`vim ${X}`};if(J==="nvim")return{bin:"nvim",command:`nvim ${X}`};if(J==="nano")return{bin:"nano",command:`nano ${X}`};if(J==="emacs")return{bin:"emacs",command:`emacs ${X}`};let G=(z.trim()||(Z??"").trim()).trim();if(!G)return null;let Q=Ru(G);if(!Q)return null;let f=G.includes(rM)?G.split(rM).join(X):`${G} ${X}`;return{bin:Q,command:f}}function gu(J,z,Y){let Z=Z1(z);return["f=$(mktemp 2>/dev/null)",`if [ -n "$f" ] && git show ${Z1(`HEAD:./${Y}`)} > "$f" 2>/dev/null; then`,` ${J} -d "$f" ${Z} -c 'setlocal nomodifiable' -c 'wincmd l'; r=$?`,"else",` ${J} ${Z}; r=$?`,"fi",'rm -f "$f" 2>/dev/null; exit $r'].join(`
|
|
277
|
+
`)}function Cu(J,z){let Y=J.endsWith("/")?J:`${J}/`;return z.startsWith(Y)?z.slice(Y.length):null}async function Nu(J){let z=NX(C1(QY)),Y=C1(PY)??"",Z=(process.env.VISUAL??process.env.EDITOR??"").trim();if(z!=="auto")return oM(z,Y,J,Z);if(Z)return oM("custom","",J,Z);let X=Z1(J);for(let G of g6)if(await sM(G))return{bin:G,command:`${G} ${X}`};return null}async function sM(J){try{return await Bun.spawn(["sh","-c",`command -v ${Z1(J)} >/dev/null 2>&1`],{stdin:"ignore",stdout:"ignore",stderr:"ignore"}).exited===0}catch{return!1}}async function ku(J,z){try{return await Bun.spawn(["git","diff","--quiet","HEAD","--",z],{cwd:J,stdin:"ignore",stdout:"ignore",stderr:"ignore",env:cJ()}).exited===1}catch{return!1}}async function tM(J,z,Y){let Z=await Nu(Y);if(!Z)return!1;if(!await sM(Z.bin))return!1;let X=await bu(Z,z,Y);return await Oz(J,{cwd:z,command:X,name:Su(Y)}),!0}async function bu(J,z,Y){let{bin:Z,command:X}=J;if(Z!=="nvim"&&Z!=="vim")return X;if(X!==`${Z} ${Z1(Y)}`)return X;let G=Cu(z,Y);if(!G)return X;if(!await ku(z,G))return X;return gu(Z,Y,G)}function Su(J){let z=J.slice(J.lastIndexOf("/")+1).trim();return z.length>0?z:"edit"}var rM="{file}";var eM=k(()=>{hY();O1();Tf();h1();Wz()});async function PH(J,z,Y){if(!z)throw Error("git(): cwd is required");let Z=await kX(z,J,{signal:Y}),X=Z.status??-1;if(X!==0){let G=(Z.stderr??"").trim(),Q=(Z.stdout??"").trim();throw Error(`git ${J.join(" ")} (cwd=${z}) exited with code ${X}: ${G||Q||"(no output)"}`)}return Z.stdout??""}async function BW(J,z){let Z=(await PH(["ls-files","--cached","--others","--exclude-standard","--full-name"],J,z)).split(`
|
|
278
|
+
`).map((G)=>G.replace(/\r$/,"")),X=new Set;for(let G of Z)if(G.length>0)X.add(G);return Array.from(X).sort()}async function jW(J,z){let Y=await PH(["status","--porcelain","--untracked-files=all"],J,z),Z=ZF(Y),X=new Map;try{let G=await PH(["diff","--no-color","--numstat","HEAD"],J,z);X=new Map(JF(G).map((Q)=>[Q.path,{added:Q.added,deleted:Q.deleted}]))}catch{try{let G=await PH(["diff","--no-color","--numstat","--cached"],J,z);X=new Map(JF(G).map((Q)=>[Q.path,{added:Q.added,deleted:Q.deleted}]))}catch{X=new Map}}return Z.map((G)=>{let Q=X.get(G.path);if(Q)return{...G,added:Q.added,deleted:Q.deleted};return G})}function JF(J){return S6(J).map((z)=>({path:z.path,added:z.added,deleted:z.deleted}))}function zF(J){let z={name:"",path:"",isDir:!0,children:[]};for(let Y of J){if(!Y)continue;let Z=Y.split("/").filter((G)=>G.length>0);if(Z.length===0)continue;let X=z;for(let G=0;G<Z.length;G++){let Q=Z[G],H=G!==Z.length-1,B=X.children.find((V)=>V.name===Q&&V.isDir===H);if(!B)B={name:Q,path:Z.slice(0,G+1).join("/"),isDir:H,children:[]},X.children.push(B);X=B}}return YF(z),z}function YF(J){J.children.sort((z,Y)=>{if(z.isDir!==Y.isDir)return z.isDir?-1:1;return z.name.localeCompare(Y.name)});for(let z of J.children)YF(z)}function ZF(J){let z=[];for(let Y of yf(J)){let Z;if(Y.x==="?"&&Y.y==="?")Z="?";else{let G=Y.y!==" "?Y.y:Y.x;if(G==="M"||G==="A"||G==="D"||G==="R"||G==="C"||G==="U")Z=G;else continue}let X=Y.path;if(X.length===0)continue;if(X.endsWith("/"))continue;z.push({path:X,status:Z})}return z}var WW=k(()=>{xf();uf()});function VW(J){D1(()=>({enabled:J.focused(),bindings:$Y({"files.nav":(z,Y)=>{if((Y??0)%2===0)J.moveDown();else J.moveUp()},"files.hierarchy":(z,Y)=>{if((Y??0)%2===0)J.collapseOrParent();else J.expandOrDescend()},"files.tab":(z,Y)=>{let Z=J.currentTab(),X=IQ.indexOf(Z);if(X<0)return;let G=(Y??0)%2===0?-1:1,Q=IQ[(X+G+IQ.length)%IQ.length];if(Q)J.setTab(Q)},"files.open":()=>J.openCurrent(),"files.mention":()=>J.mentionCurrent?.(),"files.createPR":()=>J.createPR?.(),"files.openExternal":()=>J.openExternal(),"files.refresh":()=>J.refresh()})}))}var IQ;var KW=k(()=>{pX();yJ();IQ=["all","changes"]});import{spawn as XF}from"child_process";import{existsSync as Iu}from"fs";import{platform as Tu}from"os";function GF(J){if(!J)return;let z=Tu();if(z==="linux"){if(Iu("/proc/sys/fs/binfmt_misc/WSLInterop")||process.env.WSL_DISTRO_NAME){TQ("wslview",[J],()=>{let Y=XF("wslpath",["-w",J],{stdio:["ignore","pipe","ignore"]}),Z="";Y.stdout?.on("data",(X)=>{Z+=X.toString()}),Y.on("close",(X)=>{if(X===0)TQ("explorer.exe",[Z.trim()])})});return}TQ("xdg-open",[J]);return}if(z==="darwin"){TQ("open",[J]);return}if(z==="win32"){TQ("cmd.exe",["/c","start","",J]);return}}function TQ(J,z,Y){try{let Z=XF(J,z,{stdio:"ignore",detached:!0});Z.on("error",()=>Y?.()),Z.unref()}catch{Y?.()}}var QF=()=>{};function UW(J,z,Y,Z){for(let X of J.children)if(X.isDir){let G=z.has(X.path);if(Z.push({kind:"dir",path:X.path,name:X.name,depth:Y,expanded:G,hasChildren:X.children.length>0}),G)UW(X,z,Y+1,Z)}else Z.push({kind:"file",path:X.path,name:X.name,depth:Y})}function qF(J,z){return uH(J,z)}function fF(J){return J.map((z)=>({kind:"status",path:z.path,status:z.status,added:z.added,deleted:z.deleted}))}function yu(J){return`${J.kind}\x00${J.path}`}function xu(J,z){if(J.kind!==z.kind||J.path!==z.path)return!1;switch(J.kind){case"file":{let Y=z;return J.name===Y.name&&J.depth===Y.depth}case"dir":{let Y=z;return J.name===Y.name&&J.depth===Y.depth&&J.expanded===Y.expanded&&J.hasChildren===Y.hasChildren}case"status":{let Y=z;return J.status===Y.status&&J.added===Y.added&&J.deleted===Y.deleted}}}function HF(J,z){return SH(J,z,yu,xu)}function BF(J,z){if(J===z)return!0;if(J==null||z==null)return!1;if(J.length!==z.length)return!1;for(let Y=0;Y<J.length;Y++)if(J[Y]!==z[Y])return!1;return!0}function jF(J,z){if(J===z)return!0;if(J==null||z==null)return!1;if(J.length!==z.length)return!1;for(let Y=0;Y<J.length;Y++){let Z=J[Y],X=z[Y];if(Z.path!==X.path||Z.status!==X.status||Z.added!==X.added||Z.deleted!==X.deleted)return!1}return!0}var WF=()=>{};import{watch as uu}from"fs";import{TextAttributes as yQ}from"@opentui/core";function Eu(J){switch(J){case"M":return"warning";case"A":return"success";case"D":return"error";case"?":return"textMuted";case"R":case"C":case"U":return"info"}}function Pu(J){let z=J.toLowerCase();if(z.includes("not a git repository"))return F("files.error.notGitRepo");if(z.includes("does not exist")||z.includes("enoent"))return F("files.error.pathMissing");if(z.includes("permission denied")||z.includes("eacces"))return F("files.error.permissionDenied");if(z.includes("git: not found")||z.includes("command not found"))return F("files.error.gitNotInstalled");let Y=J.indexOf(": ");if(Y>=0&&J.startsWith("git "))return J.slice(Y+2).trim()||F("files.error.gitFailed");return J.trim()||F("files.error.gitFailed")}function hu(J){switch(J){case"all":return F("files.tabs.all");case"changes":return F("files.tabs.changes")}}function DW(J){let{theme:z}=i0(),Y=cz(),Z=()=>J.focused?J.focused():!0,[X,G]=r("all"),[Q,f]=r(0),[H,B]=r(0),[V,j]=r(null,{equals:BF}),[K,L]=r(null,{equals:jF}),[A,O]=r(null),[R,x]=r(new Set),a=0;async function S(t,P,N){let p=++a;if(P==null){j(null),L(null),O(null);return}O(null);try{if(t==="all"){let u=await BW(P,N);if(N?.aborted||p!==a||J.worktreePath()!==P)return;j(u)}else if(t==="changes"){let u=await jW(P,N);if(N?.aborted||p!==a||J.worktreePath()!==P)return;L(u)}}catch(u){if(N?.aborted)return;let d=u instanceof Error?u.message:String(u);if(p===a&&J.worktreePath()===P)O(d)}}r0(SJ(J.worktreePath,async(t)=>{j(null),L(null),O(null),f(0),x(new Set);let P=new AbortController;S1(()=>P.abort()),await S(X(),t,P.signal)})),r0(SJ(J.worktreePath,(t)=>{if(t==null)return;if(process.env.KOBE_FILETREE_WATCH!=="1")return;let P=null,N=null;try{N=uu(t,{recursive:!0},(p,u)=>{if(u==null)return;let d=u.toString();if(d===".git"||d.startsWith(".git/")||d.startsWith(".git\\"))return;if(d.startsWith("node_modules/")||d.startsWith("node_modules\\"))return;if(P!=null)clearTimeout(P);P=setTimeout(()=>{P=null,B((o)=>o+1)},500)}),N.on("error",()=>{})}catch{}S1(()=>{if(P!=null)clearTimeout(P);if(N!=null)N.close()})})),r0(SJ([X,H],async([t,P])=>{let N=J.worktreePath();if(N==null)return;f(0);let p=new AbortController;S1(()=>p.abort());let d=H()>0;if(t==="all"){if(V()==null||d)await S("all",N,p.signal)}else if(t==="changes"){if(K()==null||d)await S("changes",N,p.signal)}}));let C=U0(()=>{let t=V();if(t==null)return null;return zF(t)}),M=U0((t)=>{let P=[];if(X()==="all"){let N=C();if(N!=null)UW(N,R(),0,P)}else if(X()==="changes"){let N=K();if(N!=null)P.push(...fF(N))}return HF(t??[],P)},[]),I=U0(()=>{let t=0,P=0;for(let N of M()){if(N.kind!=="status")continue;if(N.added!=null)t=Math.max(t,String(N.added).length+1);if(N.deleted!=null)P=Math.max(P,String(N.deleted).length+1)}return{added:t,deleted:P}}),$=U0(()=>{let t=I(),P=(t.added>0?t.added+1:0)+(t.deleted>0?t.deleted+1:0);return Math.max(8,Y().width-6-P)});function i(){let t=M();if(t.length===0)return;f(Math.min(Q()+1,t.length-1))}function e(){if(M().length===0)return;f(Math.max(Q()-1,0))}function J0(){let t=M(),P=Q(),N=t[P];if(!N)return;if(N.kind!=="dir")return;if(!N.expanded&&N.hasChildren)x((p)=>{let u=new Set(p);return u.add(N.path),u});else if(N.expanded){if(P+1<t.length)f(P+1)}}function T(){if(X()!=="all")return;let t=M(),P=Q(),N=t[P];if(!N)return;if(N.kind==="dir"&&N.expanded){x((u)=>{let d=new Set(u);return d.delete(N.path),d});return}if(N.kind!=="dir"&&N.kind!=="file")return;let p=N.depth-1;if(p<0)return;for(let u=P-1;u>=0;u--){let d=t[u];if(!d)continue;if(d.kind==="dir"&&d.depth===p){f(u);return}}}function f0(){let t=M(),P=Q();if(P<0||P>=t.length)return;let N=t[P];if(!N)return;if(N.kind==="dir"){x((p)=>{let u=new Set(p);if(u.has(N.path))u.delete(N.path);else u.add(N.path);return u});return}J.onOpenFile(N.path)}function _(){let t=M(),P=Q();if(P<0||P>=t.length)return;let N=t[P];if(!N||N.kind==="dir")return;J.onMention?.(N.path)}function W0(){B((t)=>t+1),J.onRefresh?.()}function R0(){let t=M(),P=Q();if(P<0||P>=t.length)return;let N=t[P];if(!N||N.kind==="dir")return;let p=J.worktreePath();if(!p)return;let u=`${p}/${N.path}`;GF(u)}VW({focused:Z,moveDown:i,moveUp:e,setTab:(t)=>G(t),currentTab:X,openCurrent:f0,mentionCurrent:_,createPR:J.onCreatePR,openExternal:R0,refresh:W0,expandOrDescend:J0,collapseOrParent:T});let V0;return r0(SJ([Q,M],([t,P])=>{if(!V0)return;if(P.length===0)return;let N=V0.scrollTop,p=V0.viewport.height;if(p<=0)return;if(t<N)V0.scrollTo({x:0,y:t});else if(t>=N+p)V0.scrollTo({x:0,y:t-p+1})})),(()=>{var t=W("box"),P=W("box"),N=W("box"),p=W("scrollbox");return D(t,P),D(t,p),q(t,"flexDirection","column"),q(t,"flexGrow",1),q(t,"paddingTop",1),q(t,"paddingBottom",1),q(t,"paddingLeft",0),q(t,"paddingRight",0),U(t,b(G0,{get when(){return J.onZenToggle||J.onCreatePR},get children(){var u=W("box");return q(u,"flexDirection","row"),q(u,"justifyContent","flex-end"),q(u,"gap",2),q(u,"paddingBottom",1),q(u,"flexShrink",0),U(u,b(G0,{get when(){return J.onZenToggle},get children(){var d=W("box"),o=W("text"),Q0=W("text");return D(d,o),D(d,Q0),q(d,"flexDirection","row"),q(d,"gap",1),q(d,"onMouseUp",()=>J.onZenToggle?.()),D(o,E0("[~]")),q(o,"wrapMode","none"),q(Q0,"wrapMode","none"),U(Q0,()=>F("files.actions.zen")),y((g0)=>{var P0=z.accent,N0=yQ.BOLD,b0=z.text;return P0!==g0.e&&(g0.e=q(o,"fg",P0,g0.e)),N0!==g0.t&&(g0.t=q(o,"attributes",N0,g0.t)),b0!==g0.a&&(g0.a=q(Q0,"fg",b0,g0.a)),g0},{e:void 0,t:void 0,a:void 0}),d}}),null),U(u,b(G0,{get when(){return J.onCreatePR},get children(){var d=W("box"),o=W("text"),Q0=W("text");return D(d,o),D(d,Q0),q(d,"flexDirection","row"),q(d,"gap",1),q(d,"onMouseUp",()=>J.onCreatePR?.()),D(o,E0("[P]")),q(o,"wrapMode","none"),q(Q0,"wrapMode","none"),U(Q0,()=>F("files.actions.createPR")),y((g0)=>{var P0=z.accent,N0=yQ.BOLD,b0=z.text;return P0!==g0.e&&(g0.e=q(o,"fg",P0,g0.e)),N0!==g0.t&&(g0.t=q(o,"attributes",N0,g0.t)),b0!==g0.a&&(g0.a=q(Q0,"fg",b0,g0.a)),g0},{e:void 0,t:void 0,a:void 0}),d}}),null),u}}),P),D(P,N),q(P,"flexDirection","row"),q(P,"justifyContent","space-between"),q(P,"paddingBottom",0),q(P,"flexShrink",0),q(N,"flexDirection","row"),q(N,"gap",2),U(N,b(X1,{each:wu,children:(u)=>{let d=()=>X()===u;return(()=>{var o=W("text");return q(o,"wrapMode","none"),q(o,"onMouseUp",()=>G(u)),U(o,()=>hu(u)),y((Q0)=>{var g0=d()?z.primary:z.textMuted,P0=d()?yQ.BOLD:void 0;return g0!==Q0.e&&(Q0.e=q(o,"fg",g0,Q0.e)),P0!==Q0.t&&(Q0.t=q(o,"attributes",P0,Q0.t)),Q0},{e:void 0,t:void 0}),o})()}})),U(P,b(G0,{get when(){return J.cornerBadge?.()},children:(u)=>(()=>{var d=W("text");return q(d,"wrapMode","none"),U(d,()=>u().text),y((o)=>{var Q0=u().active?z.accent:z.textMuted,g0=u().active?yQ.BOLD:void 0;return Q0!==o.e&&(o.e=q(d,"fg",Q0,o.e)),g0!==o.t&&(o.t=q(d,"attributes",g0,o.t)),o},{e:void 0,t:void 0}),d})()}),null),U(t,b(G0,{get when(){return X()==="changes"},get children(){var u=W("box"),d=W("text");return D(u,d),q(u,"flexDirection","column"),q(u,"paddingBottom",1),q(u,"flexShrink",0),q(u,"gap",0),q(d,"wrapMode","none"),U(d,()=>F("files.legend.changes")),y((o)=>q(d,"fg",z.textMuted,o)),u}}),p),U(t,b(G0,{get when(){return X()!=="changes"},get children(){var u=W("box");return q(u,"flexDirection","row"),q(u,"paddingBottom",1),q(u,"flexShrink",0),u}}),p),dz((u)=>{V0=u},p),q(p,"flexGrow",1),q(p,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),U(p,b(G0,{get when(){return J.worktreePath()==null},get children(){var u=W("box"),d=W("text");return D(u,d),q(u,"paddingTop",1),q(u,"paddingLeft",1),U(d,()=>F("files.empty.noTask")),y((o)=>q(d,"fg",z.textMuted,o)),u}}),null),U(p,b(G0,{get when(){return u0(()=>J.worktreePath()!=null)()&&A()!=null},get children(){var u=W("box"),d=W("text"),o=W("text");return D(u,d),D(u,o),q(u,"paddingTop",1),q(u,"paddingLeft",1),q(u,"flexDirection","column"),q(u,"gap",0),q(d,"wrapMode","word"),U(d,()=>Pu(A()??"")),q(o,"wrapMode","word"),U(o,()=>F("files.error.retryHint")),y((Q0)=>{var{error:g0,textMuted:P0}=z;return g0!==Q0.e&&(Q0.e=q(d,"fg",g0,Q0.e)),P0!==Q0.t&&(Q0.t=q(o,"fg",P0,Q0.t)),Q0},{e:void 0,t:void 0}),u}}),null),U(p,b(G0,{get when(){return u0(()=>J.worktreePath()!=null&&A()==null&&M().length===0)()&&(X()==="all"&&V()!=null||X()==="changes"&&K()!=null)},get children(){var u=W("box"),d=W("text");return D(u,d),q(u,"paddingTop",1),q(u,"paddingLeft",1),U(d,(()=>{var o=u0(()=>X()==="all");return()=>o()?F("files.empty.noFiles"):F("files.empty.noChanges")})()),y((o)=>q(d,"fg",z.textMuted,o)),u}}),null),U(p,b(G0,{get when(){return u0(()=>J.worktreePath()!=null&&A()==null)()&&M().length>0},get children(){var u=W("box");return q(u,"flexShrink",0),q(u,"gap",0),q(u,"paddingRight",1),U(u,b(X1,{get each(){return M()},children:(d,o)=>{let Q0=()=>o()===Q(),g0=(()=>{var X0=W("text");return q(X0,"wrapMode","none"),U(X0,()=>Q0()?"\u258C":" "),y((L0)=>q(X0,"fg",Q0()?z.focusAccent:void 0,L0)),X0})(),P0=()=>Q0()?z.backgroundElement:void 0;if(d.kind==="dir"){let X0=" ".repeat(d.depth),L0=d.expanded?"\u25BE":"\u25B8";return(()=>{var a0=W("box"),e0=W("box"),v0=W("text");return D(a0,e0),q(a0,"flexDirection","row"),q(a0,"gap",0),q(a0,"onMouseUp",()=>{f(o()),x((_0)=>{let R1=new Set(_0);if(R1.has(d.path))R1.delete(d.path);else R1.add(d.path);return R1})}),U(a0,g0,e0),D(e0,v0),q(e0,"flexGrow",1),q(e0,"paddingRight",1),q(v0,"wrapMode","none"),U(v0,()=>`${X0}${L0} ${d.name}/`),y((_0)=>{var R1=P0(),s=z.textMuted,K0=yQ.BOLD;return R1!==_0.e&&(_0.e=q(a0,"backgroundColor",R1,_0.e)),s!==_0.t&&(_0.t=q(v0,"fg",s,_0.t)),K0!==_0.a&&(_0.a=q(v0,"attributes",K0,_0.a)),_0},{e:void 0,t:void 0,a:void 0}),a0})()}if(d.kind==="file"){let X0=" ".repeat(d.depth);return(()=>{var L0=W("box"),a0=W("box"),e0=W("text");return D(L0,a0),q(L0,"flexDirection","row"),q(L0,"gap",0),q(L0,"onMouseUp",()=>{f(o()),J.onOpenFile(d.path)}),U(L0,g0,a0),D(a0,e0),q(a0,"flexGrow",1),q(a0,"paddingRight",1),q(e0,"wrapMode","none"),U(e0,()=>`${X0} ${d.name}`),y((v0)=>{var _0=P0(),R1=z.text;return _0!==v0.e&&(v0.e=q(L0,"backgroundColor",_0,v0.e)),R1!==v0.t&&(v0.t=q(e0,"fg",R1,v0.t)),v0},{e:void 0,t:void 0}),L0})()}let N0=Eu(d.status),b0=()=>{switch(N0){case"success":return z.success;case"warning":return z.warning;case"error":return z.error;case"info":return z.info;default:return z.textMuted}},x0=I(),v=d.added==null?" ".repeat(x0.added):`+${d.added}`.padStart(x0.added),k0=d.deleted==null?" ".repeat(x0.deleted):`-${d.deleted}`.padStart(x0.deleted);return(()=>{var X0=W("box"),L0=W("box"),a0=W("text"),e0=W("text");return D(X0,L0),q(X0,"flexDirection","row"),q(X0,"gap",0),q(X0,"onMouseUp",()=>{f(o()),J.onOpenFile(d.path)}),U(X0,g0,L0),D(L0,a0),D(L0,e0),q(L0,"flexDirection","row"),q(L0,"flexGrow",1),q(L0,"gap",1),q(L0,"paddingRight",1),q(a0,"wrapMode","none"),U(a0,()=>d.status),q(e0,"wrapMode","none"),q(e0,"flexGrow",1),U(e0,()=>qF(d.path,$())),U(L0,b(G0,{get when(){return x0.added>0},get children(){var v0=W("text");return q(v0,"wrapMode","none"),U(v0,v),y((_0)=>q(v0,"fg",z.success,_0)),v0}}),null),U(L0,b(G0,{get when(){return x0.deleted>0},get children(){var v0=W("text");return q(v0,"wrapMode","none"),U(v0,k0),y((_0)=>q(v0,"fg",z.error,_0)),v0}}),null),y((v0)=>{var _0=P0(),R1=b0(),s=z.text;return _0!==v0.e&&(v0.e=q(X0,"backgroundColor",_0,v0.e)),R1!==v0.t&&(v0.t=q(a0,"fg",R1,v0.t)),s!==v0.a&&(v0.a=q(e0,"fg",s,v0.a)),v0},{e:void 0,t:void 0,a:void 0}),X0})()}})),u}}),null),U(t,b(G0,{get when(){return J.worktreePath()!=null},get children(){var u=W("box"),d=W("text");return D(u,d),q(u,"flexDirection","row"),q(u,"paddingTop",1),q(u,"flexShrink",0),q(d,"wrapMode","none"),U(d,()=>F("files.footer.openHint")),y((o)=>q(d,"fg",z.textMuted,o)),u}}),null),t})()}var wu;var VF=k(()=>{w();w();w();w();w();w();w();w();w();GJ();w();W1();m1();WW();KW();QF();WF();wu=["all","changes"]});var KF=k(()=>{VF();WW();KW()});function DF(J,z){if(z<3)return 2500;return Math.min(J*2,20000)}function LF(J,z,Y){if(z)return 1500;if(Y==="running")return 1500;return Math.min(J*2,6000)}var UF=2500,xQ=1500;import{promises as vu}from"fs";import mu from"path";async function hH(J,z){let Y=new AbortController,Z=setTimeout(()=>Y.abort(),cu);try{let X=await YY("git",z,{cwd:J,env:cJ(),signal:Y.signal});if(Y.signal.aborted)return null;if(X.status!==0)return null;return X.stdout.trim()}finally{clearTimeout(Z)}}async function du(J){return await hH(J,["rev-parse","--abbrev-ref","HEAD"])||"HEAD"}async function nu(J){let z=await hH(J,["symbolic-ref","refs/remotes/origin/HEAD","--short"]);if(!z)return"main";return z.startsWith("origin/")?z.slice(7):z}async function iu(J){let z=await hH(J,["rev-parse","--abbrev-ref","@{u}"]);return z!==null&&z.length>0}async function lu(J){let z=await hH(J,["status","--porcelain"]);if(!z)return 0;return z.split(`
|
|
279
|
+
`).filter((Y)=>Y.length>0).length}async function $u(J){let[z,Y,Z,X]=await Promise.all([du(J),nu(J),iu(J),lu(J)]);return{branch:z,targetBranch:Y,hasUpstream:Z,dirtyCount:X}}function au(J){if(J<=0)return"There are no uncommitted changes.";if(J===1)return"There is 1 uncommitted change.";return`There are ${J} uncommitted changes.`}function _u(J){return J?"The current branch tracks an upstream.":"There is no upstream branch yet."}function pu(J,z){let Y={branch:z.branch,targetBranch:z.targetBranch,dirtyCountSentence:au(z.dirtyCount),upstreamSentence:_u(z.hasUpstream)};return J.replace(/\{\{([a-zA-Z][a-zA-Z0-9_]*)\}\}/g,(Z,X)=>Object.hasOwn(Y,X)?Y[X]:Z)}async function ru(J){let z=mu.join(J,".kobe","pr-instructions.md");try{let Y=await vu.readFile(z,"utf8");return Y.length>0?Y:MF}catch{return MF}}async function FF(J){let[z,Y]=await Promise.all([ru(J),$u(J)]);return pu(z,Y)}var cu=5000,MF=`The user likes the current state of the code.
|
|
281
280
|
|
|
282
281
|
{{dirtyCountSentence}}
|
|
283
282
|
The current branch is {{branch}}.
|
|
@@ -294,16 +293,16 @@ Follow these steps to create a PR:
|
|
|
294
293
|
- Push to origin.
|
|
295
294
|
- 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.
|
|
296
295
|
|
|
297
|
-
If any of these steps fail, ask the user for help.`;var VF=k(()=>{PY();KQ()});var BW={};f1(BW,{startOpsPreview:()=>ZE,startOpsHost:()=>tu});import{createHash as au}from"crypto";import{SyntaxStyle as _u}from"@opentui/core";function ou(J){let{theme:z}=d0(),[Y,G]=a(null),Z=!1;e1(()=>{(async()=>{let N=await WH({logTag:"ops-activity",channels:["transcript.activity"]});if(!N)return;if(Z){N.dispose();return}G(N)})()}),k1(()=>{Z=!0,Y()?.dispose()});let X=()=>Y()?.transcriptActivitySignal()()??null,Q=()=>X()?.get(J.worktree)??null,[f,H]=a(0),[B,V]=a(0),j=!1;r0(()=>{let N=X();if(!N)return;let M=N.get(J.worktree)?.mtimeMs??0;if(!j&&M>0)j=!0,H(M);V(M)}),r0(()=>{if(X()!==null)return;let N=!1,M,I=fF,r=0,i=0;async function e(){try{let J0=await _G(J.vendor,J.worktree);if(N)return;if(!j)j=!0,H(J0),i=J0;if(J0>i)i=J0,r=0;else r++;V(J0)}catch{r++}finally{if(!N)I=HF(I,r),M=setTimeout(()=>void e(),I)}}e(),k1(()=>{if(N=!0,M)clearTimeout(M)})});let K=()=>j&&B()>f(),L=()=>K()?{text:F("ops.badge.newActivity"),active:!0}:null;function A(){H(B())}e1(()=>{if(!J.targetPane)return;let N=BX(J.vendor),M=!1,I=null,r=!1,i="",e=!1,J0=0,T=null,q0=FQ,p=0,B0,L0=()=>X()!==null;async function V0(o){if(o===T)return;T=o,await yY(J.targetPane,ru,o)}async function t(){if(L0())return Q()?.completionId??null;return(await N.latestCompletion(J.worktree))?.id??null}async function h(){try{i=KF(await fZ(J.targetPane,80)),I=await t(),r=!0,await V0(N.supportsCompletionMarkers()?"idle":"unknown")}catch{}}async function C(){let o=L0();try{let E=KF(await fZ(J.targetPane,80));if(M)return;if(o&&!r)I=Q()?.completionId??null,r=!0;let c=o?Q()?.mtimeMs??0:0,s=c>p;if(c>p)p=c;if(E!==i)i=E,e=!0,J0=0,await V0(N.supportsCompletionMarkers()?"running":"unknown");else if(e)J0++;if(N.supportsCompletionMarkers()&&e&&J0>=pu){let X0=await t();if(!M&&X0!==null&&X0!==I)I=X0,e=!1,J0=0,await V0("done")}q0=o?BF(q0,s,T):FQ}catch{q0=FQ}finally{if(!M)B0=setTimeout(()=>void C(),q0)}}h(),B0=setTimeout(()=>void C(),FQ),k1(()=>{if(M=!0,B0)clearTimeout(B0)})});function O(N){if(!J.taskId)return;Mz(C1(J.taskId),{cwd:J.worktree,command:S7({worktree:J.worktree,relPath:N,cliInvocation:b1()}),name:su(N)})}function g(N){if(!J.taskId){O(N);return}let M=`${J.worktree}/${N}`;$M(C1(J.taskId),J.worktree,M).then((I)=>{if(!I)O(N)})}function x(N){if(!J.targetPane)return;jf(J.targetPane,`@${N} `)}async function _(){if(!J.targetPane)return;let N=await WF(J.worktree);await jf(J.targetPane,N),await NX(J.targetPane,"Enter")}function S(){if(!J.taskId)return;let N=C1(J.taskId),M=b1(),I=`${JJ()}${NJ(M)} layout --session ${Z1(N)} --action zen-toggle`;l0(["run-shell","-b",I])}return(()=>{var N=W("box");return q(N,"flexDirection","column"),q(N,"flexGrow",1),U(N,b(HW,{worktreePath:()=>J.worktree,focused:()=>!0,onOpenFile:g,onMention:x,onCreatePR:()=>void _(),get onZenToggle(){return J.taskId?S:void 0},cornerBadge:L,onRefresh:A})),y((M)=>q(N,"backgroundColor",z.background,M)),N})()}function su(J){let z=J.lastIndexOf("/");return z>=0?J.slice(z+1):J}function KF(J){return au("sha1").update(J).digest("hex")}async function tu(J){await OJ({logContext:"ops",providers:{kv:!1,focus:!1},setup:()=>({root:()=>b(ou,J)})})}function eu(J){switch(J.slice(J.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 JE(J,z){let Y=await gZ(J,["diff","HEAD","--",z]);return Y.status===0?Y.stdout:""}async function zE(J,z){return await M6(J,z)??""}function YE(J){let z={fg:J.primary},Y={fg:J.success},G={fg:J.info},Z={fg:J.warning},X={fg:J.accent},Q={fg:J.textMuted,italic:!0},f={fg:J.textMuted},H={fg:J.text};return _u.fromStyles({keyword:z,"keyword.function":z,"keyword.return":z,"keyword.import":z,"keyword.exception":z,"keyword.conditional":z,"keyword.repeat":z,"keyword.operator":z,"keyword.modifier":z,"keyword.type":z,string:Y,"string.escape":Y,"string.regexp":Y,"string.special":Y,"character.special":Y,comment:Q,"comment.documentation":Q,function:G,"function.call":G,"function.method":G,"function.builtin":G,constructor:G,type:Z,"type.builtin":Z,constant:X,"constant.builtin":X,boolean:X,number:X,operator:f,"punctuation.bracket":f,"punctuation.delimiter":f,"punctuation.special":f,variable:H,"variable.member":H,"variable.parameter":H,"variable.builtin":X,property:H,attribute:Z,label:H,module:H})}function GE(J){let{theme:z}=d0(),Y=YE(z),G=eu(J.relPath),[Z]=Uq(()=>J.relPath,async(X)=>{let Q=await JE(J.worktree,X);if(Q.trim().length>0)return{kind:"diff",text:Q};return{kind:"code",text:await zE(J.worktree,X)}});return D1(()=>({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"),f=W("text"),H=W("text"),B=W("text"),V=W("box");return D(X,Q),D(X,V),q(X,"flexDirection","column"),q(X,"flexGrow",1),D(Q,f),D(Q,H),D(Q,B),q(Q,"flexDirection","row"),q(Q,"gap",1),q(Q,"paddingLeft",1),q(Q,"paddingRight",1),U(f,()=>J.relPath),U(H,(()=>{var j=x0(()=>Z()?.kind==="diff");return()=>j()?F("ops.preview.diffVsHead"):F("ops.preview.file")})()),U(B,()=>F("ops.preview.closeHint")),q(V,"flexGrow",1),U(V,b(Z0,{get when(){return Z()},get fallback(){return(()=>{var j=W("text");return U(j,()=>F("ops.preview.loading")),y((K)=>q(j,"fg",z.textMuted,K)),j})()},children:(j)=>b(Z0,{get when(){return j().kind==="diff"},get fallback(){return(()=>{var K=W("code");return q(K,"filetype",G),q(K,"syntaxStyle",Y),y((L)=>q(K,"content",j().text,L)),K})()},get children(){var K=W("diff");return q(K,"view","unified"),q(K,"filetype",G),q(K,"syntaxStyle",Y),q(K,"showLineNumbers",!0),y((L)=>q(K,"diff",j().text,L)),K}})})),y((j)=>{var{background:K,accent:L,textMuted:A,textMuted:O}=z;return K!==j.e&&(j.e=q(X,"backgroundColor",K,j.e)),L!==j.t&&(j.t=q(f,"fg",L,j.t)),A!==j.a&&(j.a=q(H,"fg",A,j.a)),O!==j.o&&(j.o=q(B,"fg",O,j.o)),j},{e:void 0,t:void 0,a:void 0,o:void 0}),X})()}async function ZE(J){await OJ({providers:{kv:!1,focus:!1},setup:()=>({root:()=>b(GE,J)})})}var pu=2,ru="@kobe_tab_state";var jW=k(()=>{P();P();P();P();P();P();P();JY();Yq();Gq();P1();aM();Bz();kf();j1();k9();v1();ZJ();aY();yJ();qF();BG();VF()});var MF={};f1(MF,{startDirectTmux:()=>QE,chooseInitialTask:()=>LF});import{resolve as UF}from"path";function LF(J,z={}){let Y=(Q)=>Q?J.find((f)=>f.id===Q):void 0,G=Y(z.activeTaskId);if(G)return G;let Z=Y(z.persistedTaskId);if(Z)return Z;if(z.cwdRepo){let Q=J.find((f)=>f.kind==="main"&&f.repo===z.cwdRepo);if(Q)return Q}let X=J.filter((Q)=>!Q.archived);return X.find((Q)=>Q.pinned)??X[0]??J[0]}async function DF(J){if(J.length===0)return null;try{return await Bun.spawn(J,{stdin:"inherit",stdout:"inherit",stderr:"inherit",env:process.env}).exited}catch{return null}}async function XE(J){aH();let z=[...gJ()];if(z.length===0)z=[pz(UF(process.cwd())).path];for(let Y of z)try{await J.ensureMainTask(Y)}catch(G){console.error(`[kobe] ensureMainTask failed for ${Y}:`,G)}return z[0]??UF(process.cwd())}async function QE(){if(EQ("gui"),Promise.resolve().then(() => ($j(),lj)).then((Y)=>Y.ensureGlobalKobeHooks()),!await wz()){console.error("kobe: tmux not found on PATH \u2014 install tmux to use kobe 0.6 direct mode"),process.exitCode=1;return}let J=await Az(),z=new KJ(J,{role:"gui"});try{process.env.KOBE_DAEMON_SOCKET_PATH=J.socketPath,await z.init();let Y=await XE(z),G=LF(z.listTasks(),{activeTaskId:z.activeTaskSignal()(),persistedTaskId:g1("lastSelectedTaskId"),cwdRepo:Y});if(!G){let j=await Wf();if(await FG(),await oq(j),await Bf(j),await DF(FZ(j))===null)console.error("kobe: failed to attach to the kobe-home session"),process.exitCode=1;return}let Z=G.worktreePath||await z.ensureWorktree(G.id),X=C1(G.id);await z.setActiveTask(G.id).catch(()=>{}),r1("lastSelectedTaskId",G.id);let Q=G.vendor;if(G.kind==="main"){let K=await bB(X)??xJ(g1("lastSelectedVendor"),uJ());if(K!==G.vendor)await z.setVendor(G.id,K).catch(()=>{}),Q=K}let f=CZ(G.repo,Z,{kind:"repo-init"});if(!await TX({name:X,cwd:Z,command:oJ(Q),taskId:G.id,vendor:Q,repo:G.repo,launchInit:f})){console.error(`kobe: tmux session ${X} failed to start (check the daemon log)`),process.exitCode=1;return}await FG(),await oq(X),await Bf(X);let B=await DF(FZ(X));if(B===null){console.error(`kobe: failed to attach to tmux session ${X}`),process.exitCode=1;return}if(B!==0&&!await V1(X)){console.error(`kobe: tmux session ${X} ended unexpectedly (attach exited ${B})`),process.exitCode=B;return}let V=z.getTask(G.id);if(V&&V.title===yz&&V.worktreePath)try{let j=await pG(V.worktreePath,V.vendor);if(j)await z.setTitle(V.id,j)}catch(j){console.error("[kobe] auto-title failed:",j)}}finally{z.dispose()}}var FF=k(()=>{zG();FJ();nY();sJ();qq();FX();NZ();F1();P1();i1();iq();RG();zJ()});var OF={};f1(OF,{startTui:()=>qE});async function qE(){p4();let{startDirectTmux:J}=await Promise.resolve().then(() => (FF(),MF));await J()}var AF=k(()=>{rf()});uH();i1();import{resolve as VW}from"path";MJ();function SW(){return[`kobe ${p0}`,"","Usage: kobe [command] [options]","","Run with no command to launch the TUI.","","Commands:"," web [options] Launch the browser dashboard"," completions <shell> Generate shell completion script (bash/zsh/fish)"," 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(`
|
|
298
|
-
`)}var
|
|
296
|
+
If any of these steps fail, ask the user for help.`;var OF=k(()=>{hY();bQ()});var LW={};f1(LW,{startOpsPreview:()=>fE,startOpsHost:()=>YE});import{createHash as ou}from"crypto";import{SyntaxStyle as su}from"@opentui/core";function JE(J){let{theme:z}=i0(),[Y,Z]=r(null),X=!1;zJ(()=>{(async()=>{let C=await LH({logTag:"ops-activity",channels:["transcript.activity"]});if(!C)return;if(X){C.dispose();return}Z(C)})()}),S1(()=>{X=!0,Y()?.dispose()});let G=()=>Y()?.transcriptActivitySignal()()??null,Q=()=>G()?.get(J.worktree)??null,[f,H]=r(0),[B,V]=r(0),j=!1;r0(()=>{let C=G();if(!C)return;let M=C.get(J.worktree)?.mtimeMs??0;if(!j&&M>0)j=!0,H(M);V(M)}),r0(()=>{if(G()!==null)return;let C=!1,M,I=UF,$=0,i=0;async function e(){try{let J0=await rZ(J.vendor,J.worktree);if(C)return;if(!j)j=!0,H(J0),i=J0;if(J0>i)i=J0,$=0;else $++;V(J0)}catch{$++}finally{if(!C)I=DF(I,$),M=setTimeout(()=>void e(),I)}}e(),S1(()=>{if(C=!0,M)clearTimeout(M)})});let K=()=>j&&B()>f(),L=()=>K()?{text:F("ops.badge.newActivity"),active:!0}:null;function A(){H(B())}zJ(()=>{if(!J.targetPane)return;let C=VG(J.vendor),M=!1,I=null,$=!1,i="",e=!1,J0=0,T=null,f0=xQ,_=0,W0,R0=()=>G()!==null;async function V0(p){if(p===T)return;T=p,await xY(J.targetPane,eu,p)}async function t(){if(R0())return Q()?.completionId??null;return(await C.latestCompletion(J.worktree))?.id??null}async function P(){try{i=AF(await BX(J.targetPane,80)),I=await t(),$=!0,await V0(C.supportsCompletionMarkers()?"idle":"unknown")}catch{}}async function N(){let p=R0();try{let u=AF(await BX(J.targetPane,80));if(M)return;if(p&&!$)I=Q()?.completionId??null,$=!0;let d=p?Q()?.mtimeMs??0:0,o=d>_;if(d>_)_=d;if(u!==i)i=u,e=!0,J0=0,await V0(C.supportsCompletionMarkers()?"running":"unknown");else if(e)J0++;if(C.supportsCompletionMarkers()&&e&&J0>=tu){let Q0=await t();if(!M&&Q0!==null&&Q0!==I)I=Q0,e=!1,J0=0,await V0("done")}f0=p?LF(f0,o,T):xQ}catch{f0=xQ}finally{if(!M)W0=setTimeout(()=>void N(),f0)}}P(),W0=setTimeout(()=>void N(),xQ),S1(()=>{if(M=!0,W0)clearTimeout(W0)})});function O(C){if(!J.taskId)return;Oz(N1(J.taskId),{cwd:J.worktree,command:w7({worktree:J.worktree,relPath:C,cliInvocation:b1()}),name:zE(C)})}function R(C){if(!J.taskId){O(C);return}let M=`${J.worktree}/${C}`;tM(N1(J.taskId),J.worktree,M).then((I)=>{if(!I)O(C)})}function x(C){if(!J.targetPane)return;Df(J.targetPane,`@${C} `)}async function a(){if(!J.targetPane)return;let C=await FF(J.worktree);await Df(J.targetPane,C),await SG(J.targetPane,"Enter")}function S(){if(!J.taskId)return;let C=N1(J.taskId),M=b1(),I=`${n1()}${NJ(M)} layout --session ${Z1(C)} --action zen-toggle`;c0(["run-shell","-b",I])}return(()=>{var C=W("box");return q(C,"flexDirection","column"),q(C,"flexGrow",1),U(C,b(DW,{worktreePath:()=>J.worktree,focused:()=>!0,onOpenFile:R,onMention:x,onCreatePR:()=>void a(),get onZenToggle(){return J.taskId?S:void 0},cornerBadge:L,onRefresh:A})),y((M)=>q(C,"backgroundColor",z.background,M)),C})()}function zE(J){let z=J.lastIndexOf("/");return z>=0?J.slice(z+1):J}function AF(J){return ou("sha1").update(J).digest("hex")}async function YE(J){await OJ({logContext:"ops",providers:{kv:!1,focus:!1},setup:()=>({root:()=>b(JE,J)})})}function ZE(J){switch(J.slice(J.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 XE(J,z){let Y=await kX(J,["diff","HEAD","--",z]);return Y.status===0?Y.stdout:""}async function GE(J,z){return await I6(J,z)??""}function QE(J){let z={fg:J.primary},Y={fg:J.success},Z={fg:J.info},X={fg:J.warning},G={fg:J.accent},Q={fg:J.textMuted,italic:!0},f={fg:J.textMuted},H={fg:J.text};return su.fromStyles({keyword:z,"keyword.function":z,"keyword.return":z,"keyword.import":z,"keyword.exception":z,"keyword.conditional":z,"keyword.repeat":z,"keyword.operator":z,"keyword.modifier":z,"keyword.type":z,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:X,"type.builtin":X,constant:G,"constant.builtin":G,boolean:G,number:G,operator:f,"punctuation.bracket":f,"punctuation.delimiter":f,"punctuation.special":f,variable:H,"variable.member":H,"variable.parameter":H,"variable.builtin":G,property:H,attribute:X,label:H,module:H})}function qE(J){let{theme:z}=i0(),Y=QE(z),Z=ZE(J.relPath),[X]=Sq(()=>J.relPath,async(G)=>{let Q=await XE(J.worktree,G);if(Q.trim().length>0)return{kind:"diff",text:Q};return{kind:"code",text:await GE(J.worktree,G)}});return D1(()=>({bindings:[{key:"q",cmd:()=>process.exit(0)},{key:"escape",cmd:()=>process.exit(0)},{key:"ctrl+c",cmd:()=>process.exit(0)}]})),(()=>{var G=W("box"),Q=W("box"),f=W("text"),H=W("text"),B=W("text"),V=W("box");return D(G,Q),D(G,V),q(G,"flexDirection","column"),q(G,"flexGrow",1),D(Q,f),D(Q,H),D(Q,B),q(Q,"flexDirection","row"),q(Q,"gap",1),q(Q,"paddingLeft",1),q(Q,"paddingRight",1),U(f,()=>J.relPath),U(H,(()=>{var j=u0(()=>X()?.kind==="diff");return()=>j()?F("ops.preview.diffVsHead"):F("ops.preview.file")})()),U(B,()=>F("ops.preview.closeHint")),q(V,"flexGrow",1),U(V,b(G0,{get when(){return X()},get fallback(){return(()=>{var j=W("text");return U(j,()=>F("ops.preview.loading")),y((K)=>q(j,"fg",z.textMuted,K)),j})()},children:(j)=>b(G0,{get when(){return j().kind==="diff"},get fallback(){return(()=>{var K=W("code");return q(K,"filetype",Z),q(K,"syntaxStyle",Y),y((L)=>q(K,"content",j().text,L)),K})()},get children(){var K=W("diff");return q(K,"view","unified"),q(K,"filetype",Z),q(K,"syntaxStyle",Y),q(K,"showLineNumbers",!0),y((L)=>q(K,"diff",j().text,L)),K}})})),y((j)=>{var{background:K,accent:L,textMuted:A,textMuted:O}=z;return K!==j.e&&(j.e=q(G,"backgroundColor",K,j.e)),L!==j.t&&(j.t=q(f,"fg",L,j.t)),A!==j.a&&(j.a=q(H,"fg",A,j.a)),O!==j.o&&(j.o=q(B,"fg",O,j.o)),j},{e:void 0,t:void 0,a:void 0,o:void 0}),G})()}async function fE(J){await OJ({providers:{kv:!1,focus:!1},setup:()=>({root:()=>b(qE,J)})})}var tu=2,eu="@kobe_tab_state";var MW=k(()=>{w();w();w();w();w();w();w();zY();Uq();Dq();h1();eM();Wz();uf();W1();u9();m1();GJ();_Y();yJ();KF();jZ();OF()});var NF={};f1(NF,{startDirectTmux:()=>BE,chooseInitialTask:()=>CF});import{resolve as RF}from"path";function CF(J,z={}){let Y=(Q)=>Q?J.find((f)=>f.id===Q):void 0,Z=Y(z.activeTaskId);if(Z)return Z;let X=Y(z.persistedTaskId);if(X)return X;if(z.cwdRepo){let Q=J.find((f)=>f.kind==="main"&&f.repo===z.cwdRepo);if(Q)return Q}let G=J.filter((Q)=>!Q.archived);return G.find((Q)=>Q.pinned)??G[0]??J[0]}async function gF(J){if(J.length===0)return null;try{return await Bun.spawn(J,{stdin:"inherit",stdout:"inherit",stderr:"inherit",env:process.env}).exited}catch{return null}}async function HE(J){sH();let z=[...gJ()];if(z.length===0)z=[rz(RF(process.cwd())).path];for(let Y of z)try{await J.ensureMainTask(Y)}catch(Z){console.error(`[kobe] ensureMainTask failed for ${Y}:`,Z)}return z[0]??RF(process.cwd())}async function BE(){if(_Q("gui"),Promise.resolve().then(() => (tj(),sj)).then((Y)=>Y.ensureGlobalKobeHooks()),!await Pz()){console.error("kobe: tmux not found on PATH \u2014 install tmux to use kobe 0.6 direct mode"),process.exitCode=1;return}let J=await gz(),z=new KJ(J,{role:"gui"});try{process.env.KOBE_DAEMON_SOCKET_PATH=J.socketPath,await z.init();let Y=await HE(z),Z=CF(z.listTasks(),{activeTaskId:z.activeTaskSignal()(),persistedTaskId:C1("lastSelectedTaskId"),cwdRepo:Y});if(!Z){let j=await Lf();if(await OZ(),await Hf(j),await Uf(j),await gF(RX(j))===null)console.error("kobe: failed to attach to the kobe-home session"),process.exitCode=1;return}let X=Z.worktreePath||await z.ensureWorktree(Z.id),G=N1(Z.id);await z.setActiveTask(Z.id).catch(()=>{}),s1("lastSelectedTaskId",Z.id);let Q=Z.vendor;if(Z.kind==="main"){let K=await wB(G)??xJ(C1("lastSelectedVendor"),uJ());if(K!==Z.vendor)await z.setVendor(Z.id,K).catch(()=>{}),Q=K}let f=bX(Z.repo,X,{kind:"repo-init"});if(!await iG({name:G,cwd:X,command:oJ(Q),taskId:Z.id,vendor:Q,repo:Z.repo,launchInit:f})){console.error(`kobe: tmux session ${G} failed to start (check the daemon log)`),process.exitCode=1;return}await OZ(),await Hf(G),await Uf(G);let B=await gF(RX(G));if(B===null){console.error(`kobe: failed to attach to tmux session ${G}`),process.exitCode=1;return}if(B!==0&&!await V1(G)){console.error(`kobe: tmux session ${G} ended unexpectedly (attach exited ${B})`),process.exitCode=B;return}let V=z.getTask(Z.id);if(V&&V.title===xz&&V.worktreePath)try{let j=await oZ(V.worktreePath,V.vendor);if(j)await z.setTitle(V.id,j)}catch(j){console.error("[kobe] auto-title failed:",j)}}finally{z.dispose()}}var kF=k(()=>{YZ();FJ();iY();sJ();Oq();RG();SX();O1();h1();$1();Yf();yY();YJ()});var bF={};f1(bF,{startTui:()=>jE});async function jE(){zD();let{startDirectTmux:J}=await Promise.resolve().then(() => (kF(),NF));await J()}var SF=k(()=>{JH()});vH();$1();import{resolve as OW}from"path";MJ();function wW(){return[`kobe ${p0}`,"","Usage: kobe [command] [options]","","Run with no command to launch the TUI.","","Commands:"," web [options] Launch the browser dashboard"," completions <shell> Generate shell completion script (bash/zsh/fish)"," 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(`
|
|
297
|
+
`)}var IF=`Usage: kobe add [path]
|
|
299
298
|
kobe add --remote --host <host> --user <user> --path <basePath> [--port N] [--key <path> | --password]
|
|
300
299
|
|
|
301
300
|
Save a repo for the new-task picker. With --remote, register an SSH-backed
|
|
302
301
|
project whose worktrees + engine run on <host> under <basePath>.
|
|
303
|
-
`;async function
|
|
302
|
+
`;async function WE(J){let z=J[0];if(z==="--help"||z==="-h"||z==="help"){process.stdout.write(IF);return}if(z==="--remote"){let{runAddRemote:Q}=await Promise.resolve().then(() => (tW(),sW));await Q(J.slice(1));return}if(z?.startsWith("-"))process.stderr.write(`kobe add: unknown flag "${z}"
|
|
304
303
|
|
|
305
|
-
${
|
|
306
|
-
`),process.exit(1);let
|
|
304
|
+
${IF}`),process.exit(2);let Y=OW(process.cwd(),z&&z.length>0?z:"."),{addSavedRepo:Z,isGitRepo:X}=await Promise.resolve().then(() => (O1(),sz));if(!X(Y))process.stderr.write(`kobe add: "${z&&z.length>0?z:"."}" is not a git repository (resolved to ${Y}).
|
|
305
|
+
`),process.exit(1);let 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 KE(G.path)}var TF=`Usage: kobe remove [path]
|
|
307
306
|
|
|
308
307
|
Forget a saved project (drop it from the new-task picker). Non-destructive:
|
|
309
308
|
the repo's files, worktrees, branches and tasks all stay on disk. A remote
|
|
@@ -312,19 +311,19 @@ the repo's files, worktrees, branches and tasks all stay on disk. A remote
|
|
|
312
311
|
path defaults to the current directory. Pass an exact saved entry (e.g. a
|
|
313
312
|
remote \`ssh://user@host\` key) to remove it verbatim. Run with no match to
|
|
314
313
|
print the current saved projects.
|
|
315
|
-
`;async function
|
|
314
|
+
`;async function VE(J){let z=J[0];if(z==="--help"||z==="-h"||z==="help"){process.stdout.write(TF);return}if(z?.startsWith("-"))process.stderr.write(`kobe remove: unknown flag "${z}"
|
|
316
315
|
|
|
317
|
-
${
|
|
316
|
+
${TF}`),process.exit(2);let{getSavedRepos:Y,resolveRepoRoot:Z}=await Promise.resolve().then(() => (O1(),sz)),X=Y();if(X.length===0){console.log("no saved projects to remove.");return}let G=z&&z.length>0?z:".",Q=X.includes(G)?G:(()=>{let V=OW(process.cwd(),G),j=Z(V);if(X.includes(j))return j;if(X.includes(V))return V;return null})();if(Q===null){process.stderr.write(`kobe remove: "${G}" is not a saved project.
|
|
318
317
|
|
|
319
318
|
Saved projects:
|
|
320
|
-
`);for(let V of
|
|
321
|
-
`);process.exit(1)}let{connectIfRunning:f}=await Promise.resolve().then(() => (FJ(),
|
|
322
|
-
`);function
|
|
319
|
+
`);for(let V of X)process.stderr.write(` ${V}
|
|
320
|
+
`);process.exit(1)}let{connectIfRunning:f}=await Promise.resolve().then(() => (FJ(),Kf)),H=await f();try{if(H)await H.request("project.forget",{repo:Q});else await(await AW()).forgetProject(Q)}finally{H?.close()}let B=Y().length;console.log(`removed ${Q} (${B} saved repo${B===1?"":"s"} left)`)}async function KE(J){let z=await AW(),Y;try{Y=await z.discoverAdoptableWorktrees(J)}catch(Z){console.error(`(skipped worktree scan: ${Z instanceof Error?Z.message:String(Z)})`);return}if(Y.length===0)return;console.log(`scanning ${J}: ${Y.length} unlinked worktree(s) \u2192 importing`),await xF(z,J,Y,rY(void 0))}async function AW(){let{TaskIndexStore:J}=await Promise.resolve().then(() => (YQ(),yj)),{GitWorktreeManager:z}=await Promise.resolve().then(() => (uj(),Y4)),{Orchestrator:Y}=await Promise.resolve().then(() => (RG(),Z5)),Z=new J;return await Z.load(),new Y({store:Z,worktrees:new z})}async function xF(J,z,Y,Z){let{connectIfRunning:X}=await Promise.resolve().then(() => (FJ(),Kf)),G=await X();try{for(let Q of Y){let f=G?(await G.request("worktree.adopt",{repo:z,worktreePath:Q.path,branch:Q.branch,vendor:Z})).task:await J.adoptWorktree({repo:z,worktreePath:Q.path,branch:Q.branch,vendor:Z});console.log(` adopted ${Q.branch} \u2192 task ${f.id} (${f.title})`)}}finally{G?.close()}}var uF=["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(`
|
|
321
|
+
`);function FW(J){process.stderr.write(`kobe adopt: ${J}
|
|
323
322
|
|
|
324
|
-
${
|
|
325
|
-
`),process.exit(2)}async function
|
|
326
|
-
`);return}if(L==="--repo"){if(Y=J[++K],Y===void 0)
|
|
323
|
+
${uF}
|
|
324
|
+
`),process.exit(2)}async function UE(J){let z,Y,Z,X=!1;for(let K=0;K<J.length;K++){let L=J[K];if(L==="--help"||L==="-h"||L==="help"){process.stdout.write(`${uF}
|
|
325
|
+
`);return}if(L==="--repo"){if(Y=J[++K],Y===void 0)FW("--repo requires a value")}else if(L==="--vendor"){if(Z=J[++K],Z===void 0)FW("--vendor requires a value")}else if(L==="--yes"||L==="-y")X=!0;else if(L&&!L.startsWith("-")&&z===void 0)z=L;else FW(`unexpected argument "${L}"`)}let{resolveRepoRoot:G}=await Promise.resolve().then(() => (O1(),sz)),Q=G(OW(process.cwd(),Y&&Y.length>0?Y:".")),f=rY(Z),H=await AW(),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=(K)=>!z||EQ(z,K.path);console.log(`adoptable worktrees in ${Q}:`);for(let K of B){let L=z?V(K)?"*":" ":"-",A=[K.dirty?"dirty":"",K.kobeManaged?"":"external"].filter(Boolean).join(",");console.log(` ${L} ${K.branch} ${K.path}${A?` (${A})`:""}`)}if(!z){console.log(`
|
|
327
326
|
pass a path glob to adopt, e.g. kobe adopt '${Q}/*' --yes`);return}let j=B.filter(V);if(j.length===0){console.log(`
|
|
328
|
-
no worktrees match glob ${JSON.stringify(z)}`);return}if(!
|
|
329
|
-
${j.length} worktree(s) match \u2014 re-run with --yes to adopt them`);return}await
|
|
330
|
-
`)}function
|
|
327
|
+
no worktrees match glob ${JSON.stringify(z)}`);return}if(!X){console.log(`
|
|
328
|
+
${j.length} worktree(s) match \u2014 re-run with --yes to adopt them`);return}await xF(H,Q,j,f),console.log(`done \u2014 adopted ${j.length} worktree(s)`)}function yF(J){J.write(`${wW()}
|
|
329
|
+
`)}function Xz(J){let z={};for(let Y=0;Y<J.length;Y++){let Z=J[Y],X=J[Y+1];if(X===void 0)continue;if(Z==="--task-id")z.taskId=X,Y++;else if(Z==="--worktree")z.worktree=X,Y++;else if(Z==="--target-pane")z.targetPane=X,Y++;else if(Z==="--vendor")z.vendor=X,Y++;else if(Z==="--preview")z.preview=X,Y++;else if(Z==="--session")z.session=X,Y++;else if(Z==="--repo")z.repo=X,Y++;else if(Z==="--initial-task-id")z.initialTaskId=X,Y++;else if(Z==="--action")z.action=X,Y++;else if(Z==="--window")z.windowId=X,Y++;else if(Z==="--cols")z.cols=X,Y++;else if(Z==="--rows")z.rows=X,Y++;else if(Z==="--status")z.status=X,Y++;else if(Z==="--client")z.client=X,Y++}return z}async function DE(){let[,,...J]=process.argv,[z,...Y]=J;if(z==="--version"||z==="-v"||z==="version"){let{CURRENT_VERSION:X}=await Promise.resolve().then(() => (MJ(),EW));console.log(`kobe ${X}`);return}if(z==="--help"||z==="-h"||z==="help"){yF(process.stdout);return}if(z==="add"){await WE(Y);return}if(z==="remove"){await VE(Y);return}if(z==="completions"){let{runCompletionsSubcommand:X}=await Promise.resolve().then(() => (Q4(),G4));await X(Y);return}if(z==="adopt"){await UE(Y);return}if(z==="export"){let{runExportSubcommand:X}=await Promise.resolve().then(() => (j4(),B4));await X(Y);return}if(z==="repo"){let{runRepoSubcommand:X}=await Promise.resolve().then(() => (U4(),K4));await X(Y);return}if(z==="api"){let{runApiSubcommand:X}=await Promise.resolve().then(() => (x4(),y4));await X(Y);return}if(z==="update"){let{runUpdateSubcommand:X}=await Promise.resolve().then(() => (h4(),P4));await X(Y);return}if(z==="theme"){let{runThemeSubcommand:X}=await Promise.resolve().then(() => (n4(),d4));await X(Y);return}if(z==="feedback"){let{runFeedbackSubcommand:X}=await Promise.resolve().then(() => (_4(),a4));await X(Y);return}if(z==="daemon"){let{runDaemonSubcommand:X}=await Promise.resolve().then(() => (t4(),s4));await X(Y);return}if(z==="doctor"){let{runDoctorSubcommand:X}=await Promise.resolve().then(() => (YH(),zH));await X(Y);return}if(z==="web"){let{runWebSubcommand:X}=await Promise.resolve().then(() => (KD(),VD));await X(Y);return}if(z==="reset"){let{runResetSubcommand:X}=await Promise.resolve().then(() => (YH(),zH));await X(Y);return}if(z==="reload"){let{runReloadSubcommand:X}=await Promise.resolve().then(() => (YH(),zH));await X(Y);return}if(z==="skill"){let{runSkillSubcommand:X}=await Promise.resolve().then(() => (LD(),DD));await X(Y);return}if(z==="hook"){let{runHookSubcommand:X}=await Promise.resolve().then(() => (tj(),sj));await X(Y);return}if(z==="new-chattab"){let X=Xz(Y),G=X.session;if(!G)console.error("kobe new-chattab: --session <name> is required"),process.exit(2);let{windowIsSurface:Q}=await Promise.resolve().then(() => (h1(),$G));if(await Q(G))return;let f;if(X.vendor!==void 0){let B=X.vendor.trim(),{getCustomEngineIds:V}=await Promise.resolve().then(() => (O1(),sz)),{isBuiltinVendor:j}=await Promise.resolve().then(() => ($1(),bW));if(!(j(B)||V().includes(B))){let A=[...l1,...V()].join(", "),O=`kobe: unknown engine '${B}' (known: ${A})`,{runTmux:R}=await Promise.resolve().then(() => (h1(),$G));await R(["display-message","-t",G,O]),console.error(O),process.exit(2)}f=B;let{setPersistedString:L}=await Promise.resolve().then(() => (O1(),sz));L("lastSelectedVendor",f)}let{newChatTab:H}=await Promise.resolve().then(() => (YJ(),vJ));await H(G,f);return}if(z==="engine-tab-exit"){let G=Xz(Y).session;if(!G)console.error("kobe engine-tab-exit: --session <name> is required"),process.exit(2);let{engineTabExit:Q}=await Promise.resolve().then(() => (yY(),bB));await Q(G);return}if(z==="kill-sessions"){let{runTmux:X,KOBE_TMUX_SOCKET:G}=await Promise.resolve().then(() => (h1(),$G)),Q=await X(["kill-server"]);console.log(Q===0?`kobe: killed all tmux sessions on the \`${G}\` socket`:`kobe: no tmux sessions to kill on the \`${G}\` socket`);return}if(z==="quick-create"){let G=Xz(Y).session;if(!G)console.error("kobe quick-create: --session <name> is required"),process.exit(2);let{quickCreate:Q}=await Promise.resolve().then(() => (YJ(),vJ));await Q(G);return}if(z==="focus-tasks"){let X=Xz(Y),G=X.session;if(!G)console.error("kobe focus-tasks: --session <name> is required"),process.exit(2);let{windowIsSurface:Q}=await Promise.resolve().then(() => (h1(),$G));if(X.windowId&&await Q(X.windowId))return;let{selectTasksPane:f}=await Promise.resolve().then(() => (YJ(),vJ));await f(G,{windowId:X.windowId});return}if(z==="heal-layout"){let G=Xz(Y).session;if(!G)console.error("kobe heal-layout: --session <name> is required"),process.exit(2);let{healSessionLayout:Q}=await Promise.resolve().then(() => (YJ(),vJ)),{coalesceLayoutWork:f}=await Promise.resolve().then(() => (FX(),Gf));await f(G,"heal",()=>Q(G));return}if(z==="resync-window"){let X=Xz(Y),G=X.session;if(!G)console.error("kobe resync-window: --session <name> is required"),process.exit(2);let Q=Number.parseInt(X.cols??"",10),f=Number.parseInt(X.rows??"",10),H=Number.isInteger(Q)&&Q>0&&Number.isInteger(f)&&f>0?{columns:Q,rows:f}:null,{resyncWindowToClient:B}=await Promise.resolve().then(() => (YJ(),vJ)),{coalesceLayoutWork:V}=await Promise.resolve().then(() => (FX(),Gf));await V(G,"resync",()=>B(G,{size:H,status:X.status,clientName:X.client}));return}if(z==="capture-layout"){let G=Xz(Y).session;if(!G)console.error("kobe capture-layout: --session <name> is required"),process.exit(2);let{captureGlobalLayoutOnDrag:Q}=await Promise.resolve().then(() => (YJ(),vJ)),{coalesceLayoutWork:f,genAgeMs:H,RESIZE_GUARD_MS:B}=await Promise.resolve().then(() => (FX(),Gf));await f(G,"capture",async()=>{if(H(G,"resize")<B)return;await Q(G)});return}if(z==="layout"){let X=Xz(Y),G=X.session;if(!G)console.error("kobe layout: --session <name> is required"),process.exit(2);let Q=X.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(() => (YJ(),vJ));await H(G,Q,{windowId:X.windowId});return}if(z==="quick-task"){let X=Xz(Y),{startQuickTaskHost:G}=await Promise.resolve().then(() => (d3(),c3));await G({session:X.session});return}if(z==="tasks"){let X=Xz(Y),{startTasksPane:G}=await Promise.resolve().then(() => (nM(),dM));await G({initialTaskId:X.initialTaskId});return}if(z==="settings"){let{startSettingsHost:X}=await Promise.resolve().then(() => (lM(),iM));await X();return}if(z==="help-page"){let{startHelpHost:X}=await Promise.resolve().then(() => (aM(),$M));await X();return}if(z==="new-task"){let X=Xz(Y),{startNewTaskHost:G}=await Promise.resolve().then(() => (n9(),y3));await G({defaultRepo:X.repo});return}if(z==="update-page"){let{startUpdateHost:X}=await Promise.resolve().then(() => (pM(),_M));await X();return}if(z==="ops"){let X=Xz(Y);if(!X.worktree)console.error("kobe ops: --worktree <path> is required"),process.exit(2);if(X.preview){let{startOpsPreview:Q}=await Promise.resolve().then(() => (MW(),LW));await Q({worktree:X.worktree,relPath:X.preview});return}let{startOpsHost:G}=await Promise.resolve().then(() => (MW(),LW));await G({taskId:X.taskId??"",worktree:X.worktree,targetPane:X.targetPane??null,vendor:rY(X.vendor)});return}if(z!==void 0)console.error(`kobe: unknown command '${z}'`),yF(process.stderr),process.exit(2);let{startTui:Z}=await Promise.resolve().then(() => (SF(),bF));await Z()}DE().catch((J)=>{console.error("kobe failed to start:",J),process.exit(1)});
|