@sma1lboy/kobe 0.7.40 → 0.7.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/cli/index.js +166 -165
  2. package/package.json +1 -1
package/dist/cli/index.js CHANGED
@@ -1,104 +1,104 @@
1
1
  #!/usr/bin/env bun
2
2
  // @bun
3
- var dL=Object.defineProperty;var iL=(f)=>f;function lL(f,J){this[f]=iL.bind(null,J)}var jf=(f,J)=>{for(var Y in J)dL(f,Y,{get:J[Y],enumerable:!0,configurable:!0,set:lL.bind(J,Y)})};var k=(f,J)=>()=>(f&&(J=f(f=0)),J);var pX=import.meta.require;import{basename as aL}from"path";function $L(f){let J="";for(let Y=0;Y<f.length;Y++){let z=f[Y];if(z==="*")if(f[Y+1]==="*")J+=".*",Y++;else J+="[^/]*";else if(z==="?")J+="[^/]";else if(z&&"\\^$.|+()[]{}".includes(z))J+=`\\${z}`;else J+=z}return new RegExp(`^${J}$`)}function _X(f,J){let Y;try{Y=$L(f)}catch{return!1}return Y.test(J)||Y.test(aL(J))}var mQ=()=>{};var J9={};jf(J9,{prevVendorWithin:()=>cQ,nextVendorWithin:()=>qY,nextVendor:()=>rL,isBuiltinVendor:()=>Q1,coerceVendorId:()=>iY,BUILTIN_VENDORS:()=>dY,ALL_VENDORS:()=>cf});function Q1(f){return f==="claude"||f==="codex"||f==="copilot"}function rL(f){let J=cf.indexOf(f);return cf[(J+1)%cf.length]??cf[0]}function qY(f,J){if(f.length===0)return J;let Y=f.indexOf(J);return f[(Y+1)%f.length]??f[0]??J}function cQ(f,J){if(f.length===0)return J;let Y=f.indexOf(J);if(Y<0)return f[f.length-1]??J;return f[(Y-1+f.length)%f.length]??J}function iY(f){let J=f?.trim();return J&&J.length>0?J:"claude"}var dY,cf;var U1=k(()=>{dY=["claude","codex","copilot"],cf=[...dY]});var oX;var Y9=k(()=>{oX={$schema:"https://json.schemastore.org/package.json",name:"@sma1lboy/kobe",version:"0.7.40",description:"TUI orchestrator for Claude Code (codename)",type:"module",packageManager:"bun@1.3.13",bin:{kobe:"dist/cli/index.js"},files:["dist/cli","dist/web-ui","dist/*.wav","README.md","LICENSE"],publishConfig:{access:"public"},repository:{type:"git",url:"git+https://github.com/Sma1lboy/kobe.git"},homepage:"https://github.com/Sma1lboy/kobe#readme",bugs:{url:"https://github.com/Sma1lboy/kobe/issues"},engines:{bun:">=1.3.11"},scripts:{dev:"env KOBE_DEV=1 bun --preload @opentui/solid/preload --conditions=browser ./src/cli/index.ts","dev:sandbox":"mkdir -p .dev-sandbox/home && env KOBE_DEV=1 KOBE_HOME_DIR=$PWD/.dev-sandbox/home KOBE_TMUX_SOCKET=kobe-sandbox bun --preload @opentui/solid/preload --conditions=browser ./src/cli/index.ts","dev:sandbox:reset":"env KOBE_TMUX_SOCKET=kobe-sandbox bun ./src/cli/index.ts kill-sessions","dev:version":"bash ../../scripts/dev-version.sh",build:"bun run scripts/build.ts","build:with-web":"bun run build",compile:"bun run scripts/compile.ts",typecheck:"tsc --noEmit","check-i18n":"bun run scripts/check-i18n.ts",test:"bun run test:fast && bun run test:socket","test:fast":"vitest run --passWithNoTests","test:socket":"KOBE_INCLUDE_SOCKET=1 vitest run test/daemon --pool forks --minWorkers=1 --maxWorkers=1 --passWithNoTests","test:behavior":"KOBE_INCLUDE_BEHAVIOR=1 vitest run test/behavior --passWithNoTests",bench:"vitest bench --run",lint:"biome check .",knip:"knip-bun",postinstall:"bun run scripts/check-preview-deps.ts || true",prepublishOnly:"bun run typecheck && bun run build"},"//":"biome.json + bunfig.toml live at the monorepo root since they apply repo-wide; bun.lock also lives at root (workspace-shared).",dependencies:{"@ansi-tools/parser":"^1.0.15","@opentui/core":"0.2.4","@opentui/solid":"0.2.4",ws:"^8.18.0","solid-js":"1.9.13"},devDependencies:{"@biomejs/biome":"1.9.4","@sma1lboy/kobe-daemon":"0.7.11","@tsconfig/bun":"1.0.10","@types/bun":"1.3.14","@types/node":"25.6.2",knip:"^6.14.2","kobe-web":"workspace:*","node-pty":"^1.1.0",typescript:"5.8.2",vitest:"2.1.9"},trustedDependencies:[]}});import{createHash as z9}from"crypto";import{homedir as _L}from"os";import{join as lY}from"path";function G9(){return process.env.KOBE_DEV==="1"}function OJ(){return process.env.KOBE_HOME_DIR??_L()}function ef(){return lY(OJ(),".kobe")}function m1(){return lY(OJ(),".config","kobe","state.json")}function oL(){return lY(ef(),"settings")}function X9(){return lY(oL(),"keybindings.yaml")}function nQ(){return lY(ef(),"issue-assets")}function sX(f,J,Y){let z=z9("sha1").update(`${J}@${f}:${Y??22}`).digest("hex").slice(0,16);return lY(ef(),"ssh",`${z}.sock`)}function Z9(f){let J=z9("sha1").update(f).digest("hex").slice(0,16);return lY(ef(),"worktree-init",J)}var lf=()=>{};var Q9={};jf(Q9,{repoSlug:()=>aY,releasePageUrl:()=>$Q,recommendedGlobalInstallCommand:()=>lQ,isNewerSemver:()=>dQ,fetchReleaseSummaries:()=>eL,fetchReleaseNotesRange:()=>aQ,fetchReleaseNotes:()=>tL,compareSemver:()=>tX,checkLatestVersion:()=>wG,UPDATE_SCRIPT_URL:()=>eX,UPDATE_COMMAND:()=>hJ,PACKAGE_NAME:()=>iQ,CURRENT_VERSION:()=>s0});function aY(){let f=oX.repository?.url;if(!f)return null;let J=f.match(/github\.com[:/]([^/]+)\/([^/.]+)/);if(!J||!J[1]||!J[2])return null;return`${J[1]}/${J[2]}`}function lQ(){return`npm install -g ${iQ}@latest`}async function sL(f){let J=new AbortController,Y=setTimeout(()=>J.abort(),fZ);try{let z=f.replace("/","%2F"),G=await fetch(`https://registry.npmjs.org/${z}/latest`,{signal:J.signal,headers:{accept:"application/json"}});if(!G.ok)return null;let X=await G.json();if(typeof X.version!=="string")return null;return X.version}catch{return null}finally{clearTimeout(Y)}}function dQ(f,J){return tX(f,J)>0}function tX(f,J){let Y=(X)=>X.split("-")[0]??X,z=Y(f).split(".").map((X)=>Number.parseInt(X,10)),G=Y(J).split(".").map((X)=>Number.parseInt(X,10));for(let X=0;X<3;X++){let q=z[X]??0,Q=G[X]??0;if(Number.isNaN(q)||Number.isNaN(Q))return 0;if(q>Q)return 1;if(q<Q)return-1}return 0}async function wG(f={}){let J=process.env.KOBE_FAKE_UPDATE;if(J)return{current:s0,latest:J,hasUpdate:dQ(J,s0)};if(G9()&&!f.force)return null;let Y=await sL(iQ);if(!Y)return null;return{current:s0,latest:Y,hasUpdate:dQ(Y,s0)}}function q9(f){if(typeof f!=="string")return null;return f.match(/^v(\d+\.\d+\.\d+)$/)?.[1]??null}async function tL(f){let J=aY();if(!J)return null;let Y=`v${f}`,z=new AbortController,G=setTimeout(()=>z.abort(),fZ);try{let X=await fetch(`https://api.github.com/repos/${J}/releases/tags/${Y}`,{signal:z.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!X.ok)return null;let q=await X.json();if(typeof q.body!=="string"||typeof q.html_url!=="string")return null;return{body:q.body,url:q.html_url,version:f}}catch{return null}finally{clearTimeout(G)}}async function aQ(f){let J=aY();if(!J)return[];let Y=f.limit??100,z=new AbortController,G=setTimeout(()=>z.abort(),fZ);try{let X=await fetch(`https://api.github.com/repos/${J}/releases?per_page=${Y}`,{signal:z.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!X.ok)return[];let q=await X.json();if(!Array.isArray(q))return[];return q.map((Q)=>{let H=q9(Q.tag_name);if(!H||typeof Q.html_url!=="string"||typeof Q.body!=="string")return null;if(tX(H,f.current)<=0)return null;if(tX(H,f.latest)>0)return null;return{version:H,url:Q.html_url,body:Q.body}}).filter((Q)=>Q!==null)}catch{return[]}finally{clearTimeout(G)}}async function eL(f=12){let J=aY();if(!J)return[];let Y=new AbortController,z=setTimeout(()=>Y.abort(),fZ);try{let G=await fetch(`https://api.github.com/repos/${J}/releases?per_page=${f}`,{signal:Y.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!G.ok)return[];let X=await G.json();if(!Array.isArray(X))return[];return X.map((q)=>{let Q=q9(q.tag_name);if(!Q||typeof q.html_url!=="string")return null;return{version:Q,url:q.html_url}}).filter((q)=>q!==null)}catch{return[]}finally{clearTimeout(z)}}function $Q(f){let J=aY();if(!J)return null;return`https://github.com/${J}/releases/tag/v${f}`}var s0,iQ,eX="https://raw.githubusercontent.com/Sma1lboy/kobe/main/scripts/update.sh",hJ,fZ=3000;var D1=k(()=>{Y9();lf();s0=oX.version,iQ=oX.name;hJ=`curl -fsSL ${eX} | sh`});import{spawn as fM,spawnSync as JM}from"child_process";import{existsSync as B9}from"fs";import{mkdir as YM,readFile as zM,readdir as GM}from"fs/promises";function $Y(f){return`'${f.replace(/'/g,"'\\''")}'`}function XM(f){return/^[A-Za-z0-9_@%+=:,./-]+$/.test(f)?f:$Y(f)}function W9(f){return f.map($Y).join(" ")}function ZM(f,J){let Y=W9(f);return J?`cd ${$Y(J)} && ${Y}`:Y}function qM(f){if(!f)return"";let J=Object.entries(f).filter(([Y])=>/^[A-Za-z_][A-Za-z0-9_]*$/.test(Y));if(J.length===0)return"";return`${J.map(([Y,z])=>`${Y}=${$Y(z)}`).join(" ")} `}function hG(f,J={}){let Y=["ssh"];if(J.tty)Y.push("-tt");if(J.batch)Y.push("-o","BatchMode=yes");if(Y.push("-o","ControlMaster=auto","-o",`ControlPath=${f.controlPath}`,"-o","ControlPersist=300"),Y.push("-o","StrictHostKeyChecking=accept-new"),f.port)Y.push("-p",String(f.port));if(f.auth.kind==="key"&&f.auth.keyPath)Y.push("-i",f.auth.keyPath);return Y.push(`${f.user}@${f.host}`),Y}function V9(f,J={}){return new Promise((Y)=>{let[z,...G]=f,X="",q="",Q=!1,H=(V)=>{if(Q)return;Q=!0,Y({stdout:X,stderr:q,exitCode:V})},B;try{B=fM(z??"",G,{cwd:J.cwd,env:J.env,shell:!1,signal:J.signal})}catch{H(-1);return}B.stdout?.setEncoding("utf8"),B.stdout?.on("data",(V)=>{X+=V}),B.stderr?.setEncoding("utf8"),B.stderr?.on("data",(V)=>{q+=V}),B.on("error",()=>H(-1)),B.on("close",(V)=>H(V??-1))})}class JZ{isRemote=!1;run(f,J={}){return V9(f,{cwd:J.cwd,env:J.env?{...process.env,...J.env}:process.env,signal:J.signal})}async exists(f){return B9(f)}existsSync(f){return B9(f)}async mkdirp(f){await YM(f,{recursive:!0})}async readFile(f){try{return await zM(f,"utf8")}catch{return null}}async readdir(f){try{return await GM(f)}catch{return[]}}wrapCommand(f){return f}ensureReady(){}}class uz{spec;spawn;isRemote=!0;masterUp=!1;spawnAsync;constructor(f,J=j9,Y){this.spec=f;this.spawn=J;this.spawnAsync=Y??(this.spawn===j9?QM:async(z,G)=>this.spawn(z,G))}ensureReady(){if(this.masterUp)return;if(this.spawn([...hG(this.spec,{batch:!0}),"-O","check"]).exitCode===0){this.masterUp=!0;return}let J=[...hG(this.spec,{batch:this.spec.auth.kind!=="password"}),"-fN"];if(this.spec.auth.kind==="password"){let Y=this.spec.auth.getPassword();if(Y!=null){this.spawn(["sshpass","-e",...J],{SSHPASS:Y}),this.masterUp=!0;return}}this.spawn(J),this.masterUp=!0}async run(f,J={}){this.ensureReady();let Y=`${qM(J.env)}${W9(f)}`,z=J.cwd?`cd ${$Y(J.cwd)} && ${Y}`:Y;return this.spawnAsync([...hG(this.spec,{batch:!0}),z],void 0,{signal:J.signal})}async exists(f){return(await this.run(["test","-e",f])).exitCode===0}existsSync(f){return this.ensureReady(),this.spawn([...hG(this.spec,{batch:!0}),ZM(["test","-e",f])]).exitCode===0}async mkdirp(f){await this.run(["mkdir","-p",f])}async readFile(f){let J=await this.run(["cat",f]);return J.exitCode===0?J.stdout:null}async readdir(f){let J=await this.run(["ls","-1A",f]);if(J.exitCode!==0)return[];return J.stdout.split(`
4
- `).filter((Y)=>Y.length>0)}wrapCommand(f,J={}){let Y=J.cwd?`cd ${$Y(J.cwd)} && ${f}`:f;return`${hG(this.spec,{tty:J.tty}).map(XM).join(" ")} ${$Y(Y)}`}}var j9=(f,J)=>{let[Y,...z]=f,G=JM(Y??"",z,{env:J?{...process.env,...J}:process.env,encoding:"utf8",shell:!1});return{stdout:G.stdout??"",stderr:G.stderr??"",exitCode:G.status??-1}},QM=(f,J,Y)=>V9(f,{env:J?{...process.env,...J}:process.env,signal:Y?.signal});var rQ=()=>{};import{spawnSync as HM}from"child_process";import{platform as BM}from"os";function K9(f,J,Y){return{service:jM,account:Y?`${J}@${f}:${Y}`:`${J}@${f}`}}function _Q(f=pQ){return f.platform()==="darwin"}function U9(f,J,Y=pQ){if(Y.platform()!=="darwin")return!1;let{exitCode:z}=Y.run(["security","add-generic-password","-U","-s",f.service,"-a",f.account,"-w",J]);return z===0}function YZ(f,J=pQ){if(J.platform()!=="darwin")return null;let{stdout:Y,exitCode:z}=J.run(["security","find-generic-password","-s",f.service,"-a",f.account,"-w"]);if(z!==0)return null;return Y.replace(/\n$/,"")}var pQ,jM="kobe-remote-ssh";var oQ=k(()=>{pQ={run(f){let[J,...Y]=f,z=HM(J??"",Y,{encoding:"utf8",shell:!1});return{stdout:z.stdout??"",exitCode:z.status??-1}},platform(){return BM()}}});import{mkdirSync as WM,readFileSync as VM,renameSync as KM,writeFileSync as UM}from"fs";import{dirname as DM}from"path";function nf(){try{let f=VM(m1(),"utf8"),J=JSON.parse(f);if(J&&typeof J==="object"&&!Array.isArray(J))return J}catch{}return{}}function D9(f){let J=m1();WM(DM(J),{recursive:!0});let Y=`${J}.tmp`;UM(Y,JSON.stringify(f,null,2),"utf8"),KM(Y,J)}function Ez(f){let J=nf();if(f(J)!==!1)D9(J);return J}function rY(f){return Ez((J)=>{for(let[Y,z]of Object.entries(f))if(z===void 0)delete J[Y];else J[Y]=z;return})}function L9(f){D9(f)}var pY=k(()=>{lf()});var cJ={};jf(cJ,{statePath:()=>MM,setRepoInitOverride:()=>FM,setPersistedString:()=>af,resolveRepoRoot:()=>PJ,resolveMainRepoRoot:()=>LM,removeSavedRepo:()=>OM,remoteRepoKey:()=>g9,normalizeSavedRepos:()=>tQ,isRemoteRepoKey:()=>H1,isRemoteProjectsEnabled:()=>fH,getSavedRepos:()=>c1,getRepoInitOverride:()=>eQ,getRemoteRepos:()=>JH,getRemoteRepoConfig:()=>mJ,getPersistedString:()=>kf,getCustomEngineIds:()=>sQ,addSavedRepo:()=>vJ,addRemoteRepo:()=>YH});import{spawnSync as F9}from"child_process";import{realpathSync as M9}from"fs";function PJ(f){if(H1(f))return f;let J=F9("git",["rev-parse","--show-toplevel"],{cwd:f,encoding:"utf8",shell:!1});if(J.status!==0)return f;let Y=(J.stdout??"").trim();if(!Y)return f;try{if(M9(f)===M9(Y))return f}catch{}return Y}function LM(f){if(H1(f))return f;let J=F9("git",["worktree","list","--porcelain"],{cwd:f,encoding:"utf8",shell:!1});if(J.status!==0)return PJ(f);return(J.stdout??"").split(/\r?\n/).find((z)=>z.startsWith("worktree "))?.slice(9).trim()||PJ(f)}function MM(){return m1()}function zZ(f){let J=f.savedRepos;if(!Array.isArray(J))return[];return J.filter((Y)=>typeof Y==="string")}function c1(){return zZ(nf())}function kf(f){let J=nf()[f];return typeof J==="string"?J:void 0}function af(f,J){rY({[f]:J})}function sQ(){let f=nf().customEngineIds;if(!Array.isArray(f))return[];return f.filter((J)=>typeof J==="string"&&J.trim().length>0)}function vJ(f){let J=PJ(f),Y={added:!1,path:J,total:0};return Ez((z)=>{let G=zZ(z);if(G.includes(J))return Y={added:!1,path:J,total:G.length},!1;z.savedRepos=[...G,J],Y={added:!0,path:J,total:G.length+1};return}),Y}function tQ(){let f=c1(),J=new Set,Y=[],z=!1;for(let G of f){let X=PJ(G);if(X!==G)z=!0;if(J.has(X)){z=!0;continue}J.add(X),Y.push(X)}if(!z)return;rY({savedRepos:Y})}function O9(f){let J=f.repoConfigs;if(!J||typeof J!=="object"||Array.isArray(J))return{};return J}function A9(f){if(!f||typeof f!=="object")return{};let J=f;return{initScript:typeof J.initScript==="string"&&J.initScript.length>0?J.initScript:void 0,initPrompt:typeof J.initPrompt==="string"&&J.initPrompt.length>0?J.initPrompt:void 0}}function eQ(f){return A9(O9(nf())[PJ(f)])}function FM(f,J){let Y=PJ(f),z={};return Ez((G)=>{let X={...O9(G)},q=A9(X[Y]),Q=J.initScript===void 0?q.initScript:J.initScript||void 0,H=J.initPrompt===void 0?q.initPrompt:J.initPrompt||void 0;if(z={...Q?{initScript:Q}:{},...H?{initPrompt:H}:{}},!z.initScript&&!z.initPrompt){let{[Y]:B,...V}=X;G.repoConfigs=V}else X[Y]=z,G.repoConfigs=X;return}),z}function OM(f){let J={removed:!1,path:f,total:0};return Ez((Y)=>{let z=zZ(Y);if(!z.includes(f))return J={removed:!1,path:f,total:z.length},!1;if(Y.savedRepos=z.filter((G)=>G!==f),H1(f)){let G=GZ(Y);if(f in G){let X={...G};delete X[f],Y.remoteRepos=X}}J={removed:!0,path:f,total:z.length-1};return}),J}function H1(f){return f.startsWith("ssh://")}function fH(){return nf()["experimental.remoteProjects"]===!0}function g9(f,J,Y){return Y?`ssh://${J}@${f}:${Y}`:`ssh://${J}@${f}`}function GZ(f){let J=f.remoteRepos;if(!J||typeof J!=="object"||Array.isArray(J))return{};return J}function mJ(f){return GZ(nf())[f]??null}function JH(){return GZ(nf())}function YH(f){let J=g9(f.host,f.user,f.port),Y=!1;return Ez((z)=>{let G={...GZ(z)};G[J]=f,z.remoteRepos=G;let X=zZ(z);if(Y=!X.includes(J),Y)z.savedRepos=[...X,J];return}),{key:J,added:Y}}var Of=k(()=>{lf();pY()});var k9={};jf(k9,{runAddRemote:()=>RM,parseRemoteFlags:()=>C9});import{createInterface as AM}from"readline";function C9(f){let J={};for(let Y=0;Y<f.length;Y++){let z=f[Y];switch(z){case"--host":J.host=f[++Y];break;case"--user":J.user=f[++Y];break;case"--path":J.path=f[++Y];break;case"--port":{let G=Number(f[++Y]);if(!Number.isInteger(G)||G<=0)t1(`invalid --port "${f[Y]}"`);J.port=G;break}case"--key":{let G=f[Y+1];if(G&&!G.startsWith("-"))J.key={present:!0,path:G},Y++;else J.key={present:!0};break}case"--password":J.password=!0;break;case"--help":case"-h":process.stdout.write(R9),process.exit(0);break;default:t1(`unknown flag "${z}"`)}}return J}function t1(f){process.stderr.write(`kobe add --remote: ${f}
3
+ var iL=Object.defineProperty;var lL=(f)=>f;function aL(f,J){this[f]=lL.bind(null,J)}var jf=(f,J)=>{for(var Y in J)iL(f,Y,{get:J[Y],enumerable:!0,configurable:!0,set:aL.bind(J,Y)})};var k=(f,J)=>()=>(f&&(J=f(f=0)),J);var _X=import.meta.require;import{basename as $L}from"path";function rL(f){let J="";for(let Y=0;Y<f.length;Y++){let z=f[Y];if(z==="*")if(f[Y+1]==="*")J+=".*",Y++;else J+="[^/]*";else if(z==="?")J+="[^/]";else if(z&&"\\^$.|+()[]{}".includes(z))J+=`\\${z}`;else J+=z}return new RegExp(`^${J}$`)}function oX(f,J){let Y;try{Y=rL(f)}catch{return!1}return Y.test(J)||Y.test($L(J))}var nQ=()=>{};var X9={};jf(X9,{prevVendorWithin:()=>dQ,nextVendorWithin:()=>qY,nextVendor:()=>pL,isBuiltinVendor:()=>H1,coerceVendorId:()=>iY,BUILTIN_VENDORS:()=>dY,ALL_VENDORS:()=>cf});function H1(f){return f==="claude"||f==="codex"||f==="copilot"}function pL(f){let J=cf.indexOf(f);return cf[(J+1)%cf.length]??cf[0]}function qY(f,J){if(f.length===0)return J;let Y=f.indexOf(J);return f[(Y+1)%f.length]??f[0]??J}function dQ(f,J){if(f.length===0)return J;let Y=f.indexOf(J);if(Y<0)return f[f.length-1]??J;return f[(Y-1+f.length)%f.length]??J}function iY(f){let J=f?.trim();return J&&J.length>0?J:"claude"}var dY,cf;var U1=k(()=>{dY=["claude","codex","copilot"],cf=[...dY]});var sX;var Z9=k(()=>{sX={$schema:"https://json.schemastore.org/package.json",name:"@sma1lboy/kobe",version:"0.7.41",description:"TUI orchestrator for Claude Code (codename)",type:"module",packageManager:"bun@1.3.13",bin:{kobe:"dist/cli/index.js"},files:["dist/cli","dist/web-ui","dist/*.wav","README.md","LICENSE"],publishConfig:{access:"public"},repository:{type:"git",url:"git+https://github.com/Sma1lboy/kobe.git"},homepage:"https://github.com/Sma1lboy/kobe#readme",bugs:{url:"https://github.com/Sma1lboy/kobe/issues"},engines:{bun:">=1.3.11"},scripts:{dev:"env KOBE_DEV=1 bun --preload @opentui/solid/preload --conditions=browser ./src/cli/index.ts","dev:sandbox":"mkdir -p .dev-sandbox/home && env KOBE_DEV=1 KOBE_HOME_DIR=$PWD/.dev-sandbox/home KOBE_TMUX_SOCKET=kobe-sandbox bun --preload @opentui/solid/preload --conditions=browser ./src/cli/index.ts","dev:sandbox:reset":"env KOBE_TMUX_SOCKET=kobe-sandbox bun ./src/cli/index.ts kill-sessions","dev:version":"bash ../../scripts/dev-version.sh",build:"bun run scripts/build.ts","build:with-web":"bun run build",compile:"bun run scripts/compile.ts",typecheck:"tsc --noEmit","check-i18n":"bun run scripts/check-i18n.ts",test:"bun run test:fast && bun run test:socket","test:fast":"vitest run --passWithNoTests","test:socket":"KOBE_INCLUDE_SOCKET=1 vitest run test/daemon --pool forks --minWorkers=1 --maxWorkers=1 --passWithNoTests","test:behavior":"KOBE_INCLUDE_BEHAVIOR=1 vitest run test/behavior --passWithNoTests",bench:"vitest bench --run",lint:"biome check .",knip:"knip-bun",postinstall:"bun run scripts/check-preview-deps.ts || true",prepublishOnly:"bun run typecheck && bun run build"},"//":"biome.json + bunfig.toml live at the monorepo root since they apply repo-wide; bun.lock also lives at root (workspace-shared).",dependencies:{"@ansi-tools/parser":"^1.0.15","@opentui/core":"0.2.4","@opentui/solid":"0.2.4",ws:"^8.18.0","solid-js":"1.9.13"},devDependencies:{"@biomejs/biome":"1.9.4","@sma1lboy/kobe-daemon":"0.7.11","@tsconfig/bun":"1.0.10","@types/bun":"1.3.14","@types/node":"25.6.2",knip:"^6.14.2","kobe-web":"workspace:*","node-pty":"^1.1.0",typescript:"5.8.2",vitest:"2.1.9"},trustedDependencies:[]}});import{createHash as q9}from"crypto";import{homedir as oL}from"os";import{join as lY}from"path";function Q9(){return process.env.KOBE_DEV==="1"}function OJ(){return process.env.KOBE_HOME_DIR??oL()}function ef(){return lY(OJ(),".kobe")}function c1(){return lY(OJ(),".config","kobe","state.json")}function sL(){return lY(ef(),"settings")}function H9(){return lY(sL(),"keybindings.yaml")}function iQ(){return lY(ef(),"issue-assets")}function tX(f,J,Y){let z=q9("sha1").update(`${J}@${f}:${Y??22}`).digest("hex").slice(0,16);return lY(ef(),"ssh",`${z}.sock`)}function B9(f){let J=q9("sha1").update(f).digest("hex").slice(0,16);return lY(ef(),"worktree-init",J)}var lf=()=>{};var W9={};jf(W9,{repoSlug:()=>aY,releasePageUrl:()=>pQ,recommendedGlobalInstallCommand:()=>$Q,isNewerSemver:()=>lQ,fetchReleaseSummaries:()=>fM,fetchReleaseNotesRange:()=>rQ,fetchReleaseNotes:()=>eL,compareSemver:()=>eX,checkLatestVersion:()=>wG,UPDATE_SCRIPT_URL:()=>fZ,UPDATE_COMMAND:()=>hJ,PACKAGE_NAME:()=>aQ,CURRENT_VERSION:()=>s0});function aY(){let f=sX.repository?.url;if(!f)return null;let J=f.match(/github\.com[:/]([^/]+)\/([^/.]+)/);if(!J||!J[1]||!J[2])return null;return`${J[1]}/${J[2]}`}function $Q(){return`npm install -g ${aQ}@latest`}async function tL(f){let J=new AbortController,Y=setTimeout(()=>J.abort(),JZ);try{let z=f.replace("/","%2F"),G=await fetch(`https://registry.npmjs.org/${z}/latest`,{signal:J.signal,headers:{accept:"application/json"}});if(!G.ok)return null;let X=await G.json();if(typeof X.version!=="string")return null;return X.version}catch{return null}finally{clearTimeout(Y)}}function lQ(f,J){return eX(f,J)>0}function eX(f,J){let Y=(X)=>X.split("-")[0]??X,z=Y(f).split(".").map((X)=>Number.parseInt(X,10)),G=Y(J).split(".").map((X)=>Number.parseInt(X,10));for(let X=0;X<3;X++){let q=z[X]??0,Q=G[X]??0;if(Number.isNaN(q)||Number.isNaN(Q))return 0;if(q>Q)return 1;if(q<Q)return-1}return 0}async function wG(f={}){let J=process.env.KOBE_FAKE_UPDATE;if(J)return{current:s0,latest:J,hasUpdate:lQ(J,s0)};if(Q9()&&!f.force)return null;let Y=await tL(aQ);if(!Y)return null;return{current:s0,latest:Y,hasUpdate:lQ(Y,s0)}}function j9(f){if(typeof f!=="string")return null;return f.match(/^v(\d+\.\d+\.\d+)$/)?.[1]??null}async function eL(f){let J=aY();if(!J)return null;let Y=`v${f}`,z=new AbortController,G=setTimeout(()=>z.abort(),JZ);try{let X=await fetch(`https://api.github.com/repos/${J}/releases/tags/${Y}`,{signal:z.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!X.ok)return null;let q=await X.json();if(typeof q.body!=="string"||typeof q.html_url!=="string")return null;return{body:q.body,url:q.html_url,version:f}}catch{return null}finally{clearTimeout(G)}}async function rQ(f){let J=aY();if(!J)return[];let Y=f.limit??100,z=new AbortController,G=setTimeout(()=>z.abort(),JZ);try{let X=await fetch(`https://api.github.com/repos/${J}/releases?per_page=${Y}`,{signal:z.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!X.ok)return[];let q=await X.json();if(!Array.isArray(q))return[];return q.map((Q)=>{let H=j9(Q.tag_name);if(!H||typeof Q.html_url!=="string"||typeof Q.body!=="string")return null;if(eX(H,f.current)<=0)return null;if(eX(H,f.latest)>0)return null;return{version:H,url:Q.html_url,body:Q.body}}).filter((Q)=>Q!==null)}catch{return[]}finally{clearTimeout(G)}}async function fM(f=12){let J=aY();if(!J)return[];let Y=new AbortController,z=setTimeout(()=>Y.abort(),JZ);try{let G=await fetch(`https://api.github.com/repos/${J}/releases?per_page=${f}`,{signal:Y.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!G.ok)return[];let X=await G.json();if(!Array.isArray(X))return[];return X.map((q)=>{let Q=j9(q.tag_name);if(!Q||typeof q.html_url!=="string")return null;return{version:Q,url:q.html_url}}).filter((q)=>q!==null)}catch{return[]}finally{clearTimeout(z)}}function pQ(f){let J=aY();if(!J)return null;return`https://github.com/${J}/releases/tag/v${f}`}var s0,aQ,fZ="https://raw.githubusercontent.com/Sma1lboy/kobe/main/scripts/update.sh",hJ,JZ=3000;var D1=k(()=>{Z9();lf();s0=sX.version,aQ=sX.name;hJ=`curl -fsSL ${fZ} | sh`});import{spawn as JM,spawnSync as YM}from"child_process";import{existsSync as K9}from"fs";import{mkdir as zM,readFile as GM,readdir as XM}from"fs/promises";function $Y(f){return`'${f.replace(/'/g,"'\\''")}'`}function ZM(f){return/^[A-Za-z0-9_@%+=:,./-]+$/.test(f)?f:$Y(f)}function D9(f){return f.map($Y).join(" ")}function qM(f,J){let Y=D9(f);return J?`cd ${$Y(J)} && ${Y}`:Y}function QM(f){if(!f)return"";let J=Object.entries(f).filter(([Y])=>/^[A-Za-z_][A-Za-z0-9_]*$/.test(Y));if(J.length===0)return"";return`${J.map(([Y,z])=>`${Y}=${$Y(z)}`).join(" ")} `}function hG(f,J={}){let Y=["ssh"];if(J.tty)Y.push("-tt");if(J.batch)Y.push("-o","BatchMode=yes");if(Y.push("-o","ControlMaster=auto","-o",`ControlPath=${f.controlPath}`,"-o","ControlPersist=300"),Y.push("-o","StrictHostKeyChecking=accept-new"),f.port)Y.push("-p",String(f.port));if(f.auth.kind==="key"&&f.auth.keyPath)Y.push("-i",f.auth.keyPath);return Y.push(`${f.user}@${f.host}`),Y}function L9(f,J={}){return new Promise((Y)=>{let[z,...G]=f,X="",q="",Q=!1,H=(V)=>{if(Q)return;Q=!0,Y({stdout:X,stderr:q,exitCode:V})},B;try{B=JM(z??"",G,{cwd:J.cwd,env:J.env,shell:!1,signal:J.signal})}catch{H(-1);return}B.stdout?.setEncoding("utf8"),B.stdout?.on("data",(V)=>{X+=V}),B.stderr?.setEncoding("utf8"),B.stderr?.on("data",(V)=>{q+=V}),B.on("error",()=>H(-1)),B.on("close",(V)=>H(V??-1))})}class YZ{isRemote=!1;run(f,J={}){return L9(f,{cwd:J.cwd,env:J.env?{...process.env,...J.env}:process.env,signal:J.signal})}async exists(f){return K9(f)}existsSync(f){return K9(f)}async mkdirp(f){await zM(f,{recursive:!0})}async readFile(f){try{return await GM(f,"utf8")}catch{return null}}async readdir(f){try{return await XM(f)}catch{return[]}}wrapCommand(f){return f}ensureReady(){}}class uz{spec;spawn;isRemote=!0;masterUp=!1;spawnAsync;constructor(f,J=U9,Y){this.spec=f;this.spawn=J;this.spawnAsync=Y??(this.spawn===U9?HM:async(z,G)=>this.spawn(z,G))}ensureReady(){if(this.masterUp)return;if(this.spawn([...hG(this.spec,{batch:!0}),"-O","check"]).exitCode===0){this.masterUp=!0;return}let J=[...hG(this.spec,{batch:this.spec.auth.kind!=="password"}),"-fN"];if(this.spec.auth.kind==="password"){let Y=this.spec.auth.getPassword();if(Y!=null){this.spawn(["sshpass","-e",...J],{SSHPASS:Y}),this.masterUp=!0;return}}this.spawn(J),this.masterUp=!0}async run(f,J={}){this.ensureReady();let Y=`${QM(J.env)}${D9(f)}`,z=J.cwd?`cd ${$Y(J.cwd)} && ${Y}`:Y;return this.spawnAsync([...hG(this.spec,{batch:!0}),z],void 0,{signal:J.signal})}async exists(f){return(await this.run(["test","-e",f])).exitCode===0}existsSync(f){return this.ensureReady(),this.spawn([...hG(this.spec,{batch:!0}),qM(["test","-e",f])]).exitCode===0}async mkdirp(f){await this.run(["mkdir","-p",f])}async readFile(f){let J=await this.run(["cat",f]);return J.exitCode===0?J.stdout:null}async readdir(f){let J=await this.run(["ls","-1A",f]);if(J.exitCode!==0)return[];return J.stdout.split(`
4
+ `).filter((Y)=>Y.length>0)}wrapCommand(f,J={}){let Y=J.cwd?`cd ${$Y(J.cwd)} && ${f}`:f;return`${hG(this.spec,{tty:J.tty}).map(ZM).join(" ")} ${$Y(Y)}`}}var U9=(f,J)=>{let[Y,...z]=f,G=YM(Y??"",z,{env:J?{...process.env,...J}:process.env,encoding:"utf8",shell:!1});return{stdout:G.stdout??"",stderr:G.stderr??"",exitCode:G.status??-1}},HM=(f,J,Y)=>L9(f,{env:J?{...process.env,...J}:process.env,signal:Y?.signal});var _Q=()=>{};import{spawnSync as BM}from"child_process";import{platform as jM}from"os";function M9(f,J,Y){return{service:WM,account:Y?`${J}@${f}:${Y}`:`${J}@${f}`}}function sQ(f=oQ){return f.platform()==="darwin"}function F9(f,J,Y=oQ){if(Y.platform()!=="darwin")return!1;let{exitCode:z}=Y.run(["security","add-generic-password","-U","-s",f.service,"-a",f.account,"-w",J]);return z===0}function zZ(f,J=oQ){if(J.platform()!=="darwin")return null;let{stdout:Y,exitCode:z}=J.run(["security","find-generic-password","-s",f.service,"-a",f.account,"-w"]);if(z!==0)return null;return Y.replace(/\n$/,"")}var oQ,WM="kobe-remote-ssh";var tQ=k(()=>{oQ={run(f){let[J,...Y]=f,z=BM(J??"",Y,{encoding:"utf8",shell:!1});return{stdout:z.stdout??"",exitCode:z.status??-1}},platform(){return jM()}}});import{mkdirSync as VM,readFileSync as KM,renameSync as UM,writeFileSync as DM}from"fs";import{dirname as LM}from"path";function nf(){try{let f=KM(c1(),"utf8"),J=JSON.parse(f);if(J&&typeof J==="object"&&!Array.isArray(J))return J}catch{}return{}}function O9(f){let J=c1();VM(LM(J),{recursive:!0});let Y=`${J}.tmp`;DM(Y,JSON.stringify(f,null,2),"utf8"),UM(Y,J)}function Ez(f){let J=nf();if(f(J)!==!1)O9(J);return J}function rY(f){return Ez((J)=>{for(let[Y,z]of Object.entries(f))if(z===void 0)delete J[Y];else J[Y]=z;return})}function A9(f){O9(f)}var pY=k(()=>{lf()});var cJ={};jf(cJ,{statePath:()=>OM,setRepoInitOverride:()=>AM,setPersistedString:()=>af,resolveRepoRoot:()=>PJ,resolveMainRepoRoot:()=>FM,removeSavedRepo:()=>zH,remoteRepoKey:()=>k9,normalizeSavedRepos:()=>JH,isRemoteRepoKey:()=>f1,isRemoteProjectsEnabled:()=>GH,isGitRepo:()=>MM,getSavedRepos:()=>O1,getRepoInitOverride:()=>YH,getRemoteRepos:()=>XH,getRemoteRepoConfig:()=>mJ,getPersistedString:()=>kf,getCustomEngineIds:()=>fH,addSavedRepo:()=>vJ,addRemoteRepo:()=>ZH});import{spawnSync as eQ}from"child_process";import{realpathSync as g9}from"fs";function PJ(f){if(f1(f))return f;let J=eQ("git",["rev-parse","--show-toplevel"],{cwd:f,encoding:"utf8",shell:!1});if(J.status!==0)return f;let Y=(J.stdout??"").trim();if(!Y)return f;try{if(g9(f)===g9(Y))return f}catch{}return Y}function MM(f){if(f1(f))return!1;let J=eQ("git",["rev-parse","--is-inside-work-tree"],{cwd:f,encoding:"utf8",shell:!1});return J.status===0&&(J.stdout??"").trim()==="true"}function FM(f){if(f1(f))return f;let J=eQ("git",["worktree","list","--porcelain"],{cwd:f,encoding:"utf8",shell:!1});if(J.status!==0)return PJ(f);return(J.stdout??"").split(/\r?\n/).find((z)=>z.startsWith("worktree "))?.slice(9).trim()||PJ(f)}function OM(){return c1()}function GZ(f){let J=f.savedRepos;if(!Array.isArray(J))return[];return J.filter((Y)=>typeof Y==="string")}function O1(){return GZ(nf())}function kf(f){let J=nf()[f];return typeof J==="string"?J:void 0}function af(f,J){rY({[f]:J})}function fH(){let f=nf().customEngineIds;if(!Array.isArray(f))return[];return f.filter((J)=>typeof J==="string"&&J.trim().length>0)}function vJ(f){let J=PJ(f),Y={added:!1,path:J,total:0};return Ez((z)=>{let G=GZ(z);if(G.includes(J))return Y={added:!1,path:J,total:G.length},!1;z.savedRepos=[...G,J],Y={added:!0,path:J,total:G.length+1};return}),Y}function JH(){let f=O1(),J=new Set,Y=[],z=!1;for(let G of f){let X=PJ(G);if(X!==G)z=!0;if(J.has(X)){z=!0;continue}J.add(X),Y.push(X)}if(!z)return;rY({savedRepos:Y})}function R9(f){let J=f.repoConfigs;if(!J||typeof J!=="object"||Array.isArray(J))return{};return J}function C9(f){if(!f||typeof f!=="object")return{};let J=f;return{initScript:typeof J.initScript==="string"&&J.initScript.length>0?J.initScript:void 0,initPrompt:typeof J.initPrompt==="string"&&J.initPrompt.length>0?J.initPrompt:void 0}}function YH(f){return C9(R9(nf())[PJ(f)])}function AM(f,J){let Y=PJ(f),z={};return Ez((G)=>{let X={...R9(G)},q=C9(X[Y]),Q=J.initScript===void 0?q.initScript:J.initScript||void 0,H=J.initPrompt===void 0?q.initPrompt:J.initPrompt||void 0;if(z={...Q?{initScript:Q}:{},...H?{initPrompt:H}:{}},!z.initScript&&!z.initPrompt){let{[Y]:B,...V}=X;G.repoConfigs=V}else X[Y]=z,G.repoConfigs=X;return}),z}function zH(f){let J={removed:!1,path:f,total:0};return Ez((Y)=>{let z=GZ(Y);if(!z.includes(f))return J={removed:!1,path:f,total:z.length},!1;if(Y.savedRepos=z.filter((G)=>G!==f),f1(f)){let G=XZ(Y);if(f in G){let X={...G};delete X[f],Y.remoteRepos=X}}J={removed:!0,path:f,total:z.length-1};return}),J}function f1(f){return f.startsWith("ssh://")}function GH(){return nf()["experimental.remoteProjects"]===!0}function k9(f,J,Y){return Y?`ssh://${J}@${f}:${Y}`:`ssh://${J}@${f}`}function XZ(f){let J=f.remoteRepos;if(!J||typeof J!=="object"||Array.isArray(J))return{};return J}function mJ(f){return XZ(nf())[f]??null}function XH(){return XZ(nf())}function ZH(f){let J=k9(f.host,f.user,f.port),Y=!1;return Ez((z)=>{let G={...XZ(z)};G[J]=f,z.remoteRepos=G;let X=GZ(z);if(Y=!X.includes(J),Y)z.savedRepos=[...X,J];return}),{key:J,added:Y}}var Af=k(()=>{lf();pY()});var b9={};jf(b9,{runAddRemote:()=>CM,parseRemoteFlags:()=>y9});import{createInterface as gM}from"readline";function y9(f){let J={};for(let Y=0;Y<f.length;Y++){let z=f[Y];switch(z){case"--host":J.host=f[++Y];break;case"--user":J.user=f[++Y];break;case"--path":J.path=f[++Y];break;case"--port":{let G=Number(f[++Y]);if(!Number.isInteger(G)||G<=0)t1(`invalid --port "${f[Y]}"`);J.port=G;break}case"--key":{let G=f[Y+1];if(G&&!G.startsWith("-"))J.key={present:!0,path:G},Y++;else J.key={present:!0};break}case"--password":J.password=!0;break;case"--help":case"-h":process.stdout.write(N9),process.exit(0);break;default:t1(`unknown flag "${z}"`)}}return J}function t1(f){process.stderr.write(`kobe add --remote: ${f}
5
5
 
6
- ${R9}`),process.exit(2)}async function gM(f){let J=AM({input:process.stdin,output:process.stdout,terminal:!0}),Y=process.stdout,z=!1,G=Y._writeToOutput?.bind(Y);return Y._writeToOutput=(X)=>{if(!z||!G)process.stdout.write(X)},process.stdout.write(f),z=!0,new Promise((X)=>{J.question("",(q)=>{if(z=!1,G)Y._writeToOutput=G;process.stdout.write(`
7
- `),J.close(),X(q)})})}async function RM(f){if(!fH())t1("remote projects are experimental and disabled \u2014 enable Settings \u2192 Dev \u2192 Experimental \u2192 Remote projects first");let J=C9(f);if(!J.host)t1("--host is required");if(!J.user)t1("--user is required");if(!J.path)t1("--path (remote base path) is required");if(J.key&&J.password)t1("choose ONE of --key or --password, not both");if(!J.key&&!J.password)t1("an auth method is required: --key [path] or --password");let Y;if(J.password){if(!_Q())t1("--password needs the macOS keychain (unsupported on this platform)");let X=K9(J.host,J.user,J.port),q=await gM(`Password for ${J.user}@${J.host}: `);if(q.length===0)t1("empty password");if(!U9(X,q))t1("failed to store the password in the keychain");Y={kind:"password",keychainRef:X}}else Y={kind:"key",keyPath:J.key?.path};let{key:z,added:G}=YH({host:J.host,user:J.user,port:J.port,basePath:J.path,auth:Y});console.log(G?`added remote project ${z} (base ${J.path})`:`updated remote project ${z} (base ${J.path})`),await CM(J,Y)}async function CM(f,J){if(J.kind==="password"&&!_Q())return;let Y=J.kind==="key"?{kind:"key",keyPath:J.keyPath}:{kind:"password",getPassword:()=>YZ(J.keychainRef)},z={host:f.host,user:f.user,port:f.port,auth:Y,controlPath:sX(f.host,f.user,f.port)};process.stdout.write("checking connection\u2026 ");try{if((await new uz(z).run(["test","-d",f.path])).exitCode===0)console.log("ok");else console.log(`reachable, but base path "${f.path}" is not a directory (you can create it later)`)}catch(G){console.log(`could not connect (${G instanceof Error?G.message:String(G)})`),console.log("the project is saved; fix the host/credentials and it will connect on first use.")}}var R9;var N9=k(()=>{lf();rQ();oQ();Of();R9=`Usage: kobe add --remote --host <host> --user <user> --path <basePath>
6
+ ${N9}`),process.exit(2)}async function RM(f){let J=gM({input:process.stdin,output:process.stdout,terminal:!0}),Y=process.stdout,z=!1,G=Y._writeToOutput?.bind(Y);return Y._writeToOutput=(X)=>{if(!z||!G)process.stdout.write(X)},process.stdout.write(f),z=!0,new Promise((X)=>{J.question("",(q)=>{if(z=!1,G)Y._writeToOutput=G;process.stdout.write(`
7
+ `),J.close(),X(q)})})}async function CM(f){if(!GH())t1("remote projects are experimental and disabled \u2014 enable Settings \u2192 Dev \u2192 Experimental \u2192 Remote projects first");let J=y9(f);if(!J.host)t1("--host is required");if(!J.user)t1("--user is required");if(!J.path)t1("--path (remote base path) is required");if(J.key&&J.password)t1("choose ONE of --key or --password, not both");if(!J.key&&!J.password)t1("an auth method is required: --key [path] or --password");let Y;if(J.password){if(!sQ())t1("--password needs the macOS keychain (unsupported on this platform)");let X=M9(J.host,J.user,J.port),q=await RM(`Password for ${J.user}@${J.host}: `);if(q.length===0)t1("empty password");if(!F9(X,q))t1("failed to store the password in the keychain");Y={kind:"password",keychainRef:X}}else Y={kind:"key",keyPath:J.key?.path};let{key:z,added:G}=ZH({host:J.host,user:J.user,port:J.port,basePath:J.path,auth:Y});console.log(G?`added remote project ${z} (base ${J.path})`:`updated remote project ${z} (base ${J.path})`),await kM(J,Y)}async function kM(f,J){if(J.kind==="password"&&!sQ())return;let Y=J.kind==="key"?{kind:"key",keyPath:J.keyPath}:{kind:"password",getPassword:()=>zZ(J.keychainRef)},z={host:f.host,user:f.user,port:f.port,auth:Y,controlPath:tX(f.host,f.user,f.port)};process.stdout.write("checking connection\u2026 ");try{if((await new uz(z).run(["test","-d",f.path])).exitCode===0)console.log("ok");else console.log(`reachable, but base path "${f.path}" is not a directory (you can create it later)`)}catch(G){console.log(`could not connect (${G instanceof Error?G.message:String(G)})`),console.log("the project is saved; fix the host/credentials and it will connect on first use.")}}var N9;var S9=k(()=>{lf();_Q();tQ();Af();N9=`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 y9(f){return typeof f==="string"&&kM.includes(f)}var PG=(f)=>f,Sf="claude",kM;var S1=k(()=>{kM=["backlog","in_progress","in_review","done","canceled","error"]});function NM(f,J){let Y="",z=f;for(let G=J-1;G>=0;G--){let X=z%32;Y="0123456789ABCDEFGHJKMNPQRSTVWXYZ"[X]+Y,z=(z-X)/32}return Y}function I9(f){let J=new Uint8Array(f);crypto.getRandomValues(J);let Y=Array(f);for(let z=0;z<f;z++)Y[z]=(J[z]??0)&31;return Y}function yM(f){for(let J=f.length-1;J>=0;J--){let Y=f[J]??0;if(Y<31)return f[J]=Y+1,!0;f[J]=0}return!1}function bM(f){let J="";for(let Y of f)J+="0123456789ABCDEFGHJKMNPQRSTVWXYZ"[Y]??"0";return J}function T9(f=Date.now()){let J;if(f===b9){let Y=S9.slice();if(!yM(Y))J=I9(16);else J=Y}else J=I9(16);return b9=f,S9=J,NM(f,10)+bM(J)}var b9=-1,S9;var u9=k(()=>{S9=Array(16).fill(0)});var zH={};jf(zH,{TaskIndexStore:()=>xz});import{mkdir as SM,open as IM,readFile as TM,rename as uM,unlink as E9}from"fs/promises";import{homedir as EM}from"os";import{dirname as xM,join as x9}from"path";class xz{homeDir;kobeDir;path;tmpPath;cache={version:QY,tasks:[]};loaded=!1;listeners=new Set;saveChain=Promise.resolve();constructor(f={}){this.homeDir=f.homeDir??EM(),this.kobeDir=x9(this.homeDir,".kobe"),this.path=x9(this.kobeDir,"tasks.json"),this.tmpPath=`${this.path}.tmp`}subscribe(f){if(this.listeners.add(f),this.loaded)try{f(this.cache.tasks.slice())}catch(J){console.error("[kobe TaskIndexStore] listener threw on subscribe:",J)}return()=>{this.listeners.delete(f)}}get filePath(){return this.path}get stateDir(){return this.kobeDir}async load(){let f;try{f=await TM(this.path,"utf8")}catch(Y){if(Y.code==="ENOENT")return this.cache={version:QY,tasks:[]},this.loaded=!0,this.notifyListeners(),this.snapshot();throw Y}let J;try{J=JSON.parse(f)}catch(Y){return console.warn(`[kobe] tasks.json at ${this.path} is corrupted (${Y.message}); recovering with empty index. The stale file is left in place.`),this.cache={version:QY,tasks:[]},this.loaded=!0,this.notifyListeners(),this.snapshot()}return this.cache=wM(J,this.path),this.loaded=!0,this.notifyListeners(),this.snapshot()}async save(){this.assertLoaded();let f=this.saveChain.then(()=>this.doSave());return this.saveChain=f.catch(()=>{}),f}async doSave(){await SM(xM(this.path),{recursive:!0});let f=this.snapshot(),J=`${JSON.stringify(f,null,2)}
14
- `,Y=await IM(this.tmpPath,"w",420);try{await Y.writeFile(J,"utf8"),await Y.sync()}finally{await Y.close()}await uM(this.tmpPath,this.path)}get(f){return this.assertLoaded(),this.cache.tasks.find((J)=>J.id===f)}list(){return this.assertLoaded(),this.cache.tasks.slice()}async create(f){this.assertLoaded();let J=new Date().toISOString(),Y={archived:!1,vendor:f.vendor??Sf,...f,id:PG(T9()),createdAt:J,updatedAt:J};return this.cache.tasks.push(Y),await this.save(),this.notifyListeners(),Y}async update(f,J){this.assertLoaded();let Y=this.cache.tasks.findIndex((H)=>H.id===f);if(Y<0)throw Error(`task not found: ${f}`);let z=this.cache.tasks[Y];if(!z)throw Error(`task not found: ${f}`);let{id:G,createdAt:X,...q}=J,Q={...z,...q,id:z.id,createdAt:z.createdAt,updatedAt:new Date().toISOString()};return this.cache.tasks[Y]=Q,await this.save(),this.notifyListeners(),Q}async move(f,J,Y){this.assertLoaded();let z=this.cache.tasks.find((L)=>L.id===f);if(!z)throw Error(`task not found: ${f}`);let G=Y?.length?Y:this.cache.tasks.map((L)=>L.id),X=G.indexOf(String(f));if(X<0)throw Error(`task not movable in current group: ${f}`);let q=G[X+J];if(!q)return z;let Q=this.cache.tasks.findIndex((L)=>L.id===f),H=this.cache.tasks.findIndex((L)=>L.id===q);if(Q<0||H<0||Q===H)return z;let[B]=this.cache.tasks.splice(Q,1);if(!B)return z;let V=Q<H?H-1:H,j=J>0?V+1:V,U={...B,updatedAt:new Date().toISOString()};return this.cache.tasks.splice(j,0,U),await this.save(),this.notifyListeners(),U}async reorder(f){this.assertLoaded();let J=f.map((G)=>{let X=this.cache.tasks.findIndex((Q)=>Q.id===G.id);if(!(X>=0?this.cache.tasks[X]:void 0))throw Error(`task not found: ${G.id}`);return{idx:X,position:G.position}}),Y=!1,z=new Map;for(let{idx:G,position:X}of J){let q=this.cache.tasks[G];if(!q||q.position===X)continue;if(!z.has(G))z.set(G,q);this.cache.tasks[G]={...q,position:X},Y=!0}if(!Y)return;try{await this.save()}catch(G){for(let[X,q]of z)this.cache.tasks[X]=q;throw G}this.notifyListeners()}async archive(f,J="done"){return this.update(f,{status:J})}async remove(f){this.assertLoaded();let J=this.cache.tasks.findIndex((Y)=>Y.id===f);if(J<0)return;this.cache.tasks.splice(J,1),await this.save(),this.notifyListeners()}async _unlinkForTests(){try{await E9(this.path)}catch(f){if(f.code!=="ENOENT")throw f}try{await E9(this.tmpPath)}catch(f){if(f.code!=="ENOENT")throw f}this.cache={version:QY,tasks:[]},this.loaded=!1}assertLoaded(){if(!this.loaded)throw Error("TaskIndexStore: call load() before any other method")}snapshot(){return{version:QY,tasks:this.cache.tasks.slice()}}notifyListeners(){if(this.listeners.size===0)return;let f=this.cache.tasks.slice();for(let J of this.listeners)try{J(f)}catch(Y){console.error("[kobe TaskIndexStore] listener threw on notify:",Y)}}}function wM(f,J){if(!f||typeof f!=="object"||Array.isArray(f))return console.warn(`[kobe] tasks.json at ${J} is not an object; recovering with empty index.`),{version:QY,tasks:[]};let Y=f,z=Y.version;if(z!==void 0&&z!==1&&z!==2&&z!==3)return console.warn(`[kobe] tasks.json at ${J} has unsupported version=${String(z)}; recovering with empty index.`),{version:QY,tasks:[]};let G=Array.isArray(Y.tasks)?Y.tasks:[],X=[];for(let q of G){let Q=hM(q);if(Q)X.push(Q);else console.warn(`[kobe] dropping malformed task entry from ${J}: ${JSON.stringify(q)}`)}return{version:QY,tasks:X}}function hM(f){if(!f||typeof f!=="object")return null;let J=f;if(typeof J.id!=="string"||typeof J.title!=="string"||typeof J.repo!=="string"||typeof J.branch!=="string"||typeof J.worktreePath!=="string"||typeof J.status!=="string"||typeof J.createdAt!=="string"||typeof J.updatedAt!=="string")return null;if(!nM(J.status))return null;let Y=typeof J.archived==="boolean"?J.archived:!1,z=J.kind==="main"?"main":"task",G=z==="main"?J.status==="in_progress"||J.status==="done"?"backlog":J.status:J.status==="done"&&!Y?"in_progress":J.status;return{id:PG(J.id),title:J.title,repo:J.repo,branch:J.branch,worktreePath:J.worktreePath,status:G,archived:Y,pinned:typeof J.pinned==="boolean"?J.pinned:!1,kind:z,vendor:iY(typeof J.vendor==="string"?J.vendor:void 0),prStatus:PM(J.prStatus),...typeof J.position==="number"&&Number.isFinite(J.position)?{position:J.position}:{},...typeof J.modelEffort==="string"&&J.modelEffort.length>0?{modelEffort:J.modelEffort}:{},createdAt:J.createdAt,updatedAt:J.updatedAt}}function PM(f){if(!f||typeof f!=="object"||Array.isArray(f))return;let J=f;if(!vM(J.provider)||!mM(J.lifecycle)||!cM(J.checkState))return;return{provider:J.provider,lifecycle:J.lifecycle,checkState:J.checkState,...typeof J.number==="number"&&Number.isFinite(J.number)?{number:J.number}:{},...typeof J.url==="string"?{url:J.url}:{},...typeof J.title==="string"?{title:J.title}:{},...typeof J.baseRef==="string"?{baseRef:J.baseRef}:{},...typeof J.headRef==="string"?{headRef:J.headRef}:{},...typeof J.reviewDecision==="string"?{reviewDecision:J.reviewDecision}:{},...typeof J.mergeable==="string"?{mergeable:J.mergeable}:{},...typeof J.lastCheckedAt==="string"?{lastCheckedAt:J.lastCheckedAt}:{},...typeof J.lastError==="string"?{lastError:J.lastError}:{}}}function vM(f){return f==="github"||f==="gitlab"||f==="bitbucket"||f==="unknown"}function mM(f){return f==="creating"||f==="open"||f==="ready_to_merge"||f==="merged"||f==="closed"||f==="unknown"}function cM(f){return f==="none"||f==="pending"||f==="passing"||f==="failing"||f==="unknown"}function nM(f){return f==="backlog"||f==="in_progress"||f==="in_review"||f==="done"||f==="canceled"||f==="error"}var QY=3;var vG=k(()=>{S1();U1();u9()});function w9(f){let J=f.auth,Y=J.kind==="key"?{kind:"key",keyPath:J.keyPath}:{kind:"password",getPassword:()=>YZ(J.keychainRef)};return{host:f.host,user:f.user,port:f.port,auth:Y,controlPath:sX(f.host,f.user,f.port)}}function wz(f){let J=mJ(f);if(!J)return new JZ;return new uz(w9(J))}function nJ(f){for(let J of Object.values(JH()))if(f===J.basePath||f.startsWith(`${J.basePath}/`))return new uz(w9(J));return new JZ}function h9(f){return f&&H1(f)?f:void 0}function XZ(f){let J=nJ(f);return J.isRemote||J.existsSync(f)}function If(f){return nJ(f).isRemote?OJ():f}var e1=k(()=>{lf();Of();rQ();oQ()});var ZZ;var P9=k(()=>{ZZ=class ZZ extends Error{args;cwd;exitCode;stdout;stderr;constructor(f,J,Y){super(`git ${f.join(" ")} (cwd=${J}) exited with code ${Y.exitCode}: ${Y.stderr.trim()||Y.stdout.trim()}`);this.name="GitCommandError",this.args=f,this.cwd=J,this.exitCode=Y.exitCode,this.stdout=Y.stdout,this.stderr=Y.stderr}}});import{createHash as dM}from"crypto";import m9 from"fs";import I1 from"path";function c9(f){if(!I1.isAbsolute(f))throw Error(`worktreeRootFor: repo must be an absolute path, got: ${f}`);return I1.join(ef(),iM,pM(f))}function n9(f){if(!I1.isAbsolute(f))throw Error(`managedWorktreeRootsFor: repo must be an absolute path, got: ${f}`);return[c9(f),...$M.map((J)=>I1.join(f,J))]}function d9(f,J){if(!J||/[/\\\0]/.test(J))throw Error(`worktreePathFor: invalid slug: ${JSON.stringify(J)}`);return I1.join(c9(f),J)}async function i9(f){if(H1(f)){let Y=mJ(f)?.basePath;if(!Y)return[];return wz(f).readdir(a9(Y))}let J=new Set;for(let Y of n9(f))try{for(let z of m9.readdirSync(Y,{withFileTypes:!0}))if(z.isDirectory())J.add(z.name)}catch{}return[...J]}function GH(f,J){if(!I1.isAbsolute(f)||!I1.isAbsolute(J))return null;let Y=v9(J);for(let z of n9(f)){let G=v9(z),X=I1.relative(G,Y);if(X!==""&&!X.startsWith("..")&&!I1.isAbsolute(X))return z}return null}function l9(f,J){return GH(f,J)!==null}function a9(f){return`${rM(f)}/.kobe/worktrees`}function $9(f,J){if(!J||/[/\\\0]/.test(J))throw Error(`remoteWorktreePathFor: invalid slug: ${JSON.stringify(J)}`);return`${a9(f)}/${J}`}function rM(f){return f.length>1&&f.endsWith("/")?f.replace(/\/+$/,""):f}function v9(f){try{return m9.realpathSync(f)}catch{return I1.resolve(f)}}function pM(f){let Y=(I1.basename(f)||"repo").replace(/[^a-zA-Z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"repo",z=dM("sha1").update(I1.resolve(f)).digest("hex").slice(0,12);return`${Y}-${z}`}var iM="worktrees",lM=".kobe/worktrees",aM=".claude/worktrees",$M;var XH=k(()=>{lf();e1();Of();$M=[lM,aM]});var _9={};jf(_9,{GitWorktreeManager:()=>qZ});import p9 from"fs";import fJ from"path";class qZ{execDeps;constructor(f=_M){this.execDeps=f}ctxFor(f){let J=this.execDeps.remoteBasePath(f);return J?{exec:this.execDeps.execForRepo(f),dir:J,remote:!0}:{exec:this.execDeps.execForRepo(f),dir:f,remote:!1}}async runGit(f,J,Y){if(!Y.cwd)throw Error("runGit(): cwd is required; refusing to inherit from process.cwd()");let z=await f.run(["git",...J],{cwd:Y.cwd,env:Y.env}),G={stdout:z.stdout,stderr:z.stderr,exitCode:z.exitCode};if(G.exitCode!==0&&!Y.allowFail)throw new ZZ(J,Y.cwd,G);return G}async create(f,J,Y,z){let G=this.ctxFor(f);if(HY("repo",G.dir),HY("path",Y),!J)throw Error("create(): branch must be a non-empty string");if(await G.exec.exists(Y)){let H=await this.tryDescribe(G,Y);if(H){if(H.branch!==J)throw Error(`worktree at ${Y} is on branch '${H.branch}', refusing to hijack to '${J}'`);return H}throw Error(`create(): ${Y} exists but is not a registered git worktree`)}await G.exec.mkdirp(fJ.dirname(Y));let q=await this.branchExists(G,J)?["worktree","add",Y,J]:z?["worktree","add","-b",J,Y,z]:["worktree","add","-b",J,Y];await this.runGit(G.exec,q,{cwd:G.dir});let Q=await this.tryDescribe(G,Y);if(!Q)throw Error(`create(): git reported success but ${Y} is not a worktree`);if(Q.branch!==J)throw Error(`create(): post-condition failed \u2014 expected branch '${J}' at ${Y}, got '${Q.branch}'`);return Q}async createForTask(f){let J=this.execDeps.remoteBasePath(f.repo),Y=J?$9(J,f.slug):d9(f.repo,f.slug);return this.create(f.repo,f.branch,Y,f.baseRef)}async remove(f,J){HY("path",f);let Y=this.execDeps.execForPath(f),z=J?.force===!0;if(!await Y.exists(f)){let q=await this.findRepoFor(Y,f);if(q)await this.runGit(Y,["worktree","prune"],{cwd:q,allowFail:!0});return}let G=await this.findRepoFor(Y,f);if(!G)throw Error(`remove(): ${f} is not a git worktree`);if(!z){if(await this.isDirty(f))throw Error(`remove(): refusing to remove dirty worktree at ${f} (pass { force: true } to override)`)}let X=z?["worktree","remove","--force",f]:["worktree","remove",f];await this.runGit(Y,X,{cwd:G}),await this.runGit(Y,["worktree","prune"],{cwd:G,allowFail:!0})}async list(f){let J=this.ctxFor(f);HY("repo",J.dir);let Y=await this.runGit(J.exec,["worktree","list","--porcelain"],{cwd:J.dir}),z=ZH(Y.stdout),G=[];for(let X of z){if(!X.path)continue;let q=J.remote?r9(J.dir,X.path):GH(f,X.path);if(!q)continue;if(!X.branch||X.detached)continue;let Q=mG(q),H=mG(X.path),B=fJ.relative(Q,H),V=fJ.join(q,B),j=await this.isDirty(X.path);G.push({path:V,branch:X.branch,head:X.head??"",dirty:j})}return G}async listAll(f){let J=this.ctxFor(f);HY("repo",J.dir);let Y=await this.runGit(J.exec,["worktree","list","--porcelain"],{cwd:J.dir}),z=ZH(Y.stdout),G=J.remote?J.dir:mG(J.dir),X=[];for(let q of z){if(!q.path)continue;if(q.bare)continue;if(!q.branch||q.detached)continue;if((J.remote?q.path:mG(q.path))===G)continue;let Q=await this.isDirty(q.path);X.push({path:q.path,branch:q.branch,head:q.head??"",dirty:Q,kobeManaged:J.remote?r9(J.dir,q.path)!==null:l9(f,q.path),lastActivityMs:await this.lastActivityMs(J.exec,q.path)})}return X.sort((q,Q)=>Q.lastActivityMs-q.lastActivityMs),X}async lastActivityMs(f,J){try{let Y=await this.runGit(f,["log","-1","--format=%ct"],{cwd:J}),z=Number.parseInt(Y.stdout.trim(),10);if(Number.isFinite(z)&&z>0)return z*1000}catch{}if(!f.isRemote)try{return p9.statSync(J).mtimeMs}catch{}return 0}async isDirty(f){HY("path",f);let J=this.execDeps.execForPath(f);return(await this.runGit(J,["status","--porcelain"],{cwd:f})).stdout.length>0}async currentBranch(f){HY("path",f);let J=this.execDeps.execForPath(f),z=(await this.runGit(J,["rev-parse","--abbrev-ref","HEAD"],{cwd:f})).stdout.trim();if(!z||z==="HEAD")throw Error(`currentBranch(): ${f} is in detached-HEAD state`);return z}async renameBranch(f,J,Y){if(HY("path",f),J===Y)return;let z=this.execDeps.execForPath(f),G=await this.findRepoFor(z,f);if(!G)throw Error(`renameBranch(): ${f} is not a git worktree`);await this.runGit(z,["branch","-m",J,Y],{cwd:G})}async tryDescribe(f,J){let Y=await this.runGit(f.exec,["worktree","list","--porcelain"],{cwd:f.dir}),z=ZH(Y.stdout),G=(Q)=>f.remote?Q:mG(Q),X=G(J),q=z.find((Q)=>Q.path&&G(Q.path)===X);if(!q||!q.path||!q.branch||q.detached)return null;return{path:J,branch:q.branch,head:q.head??"",dirty:await this.isDirty(q.path)}}async branchExists(f,J){let Y=`refs/heads/${J}`;return(await this.runGit(f.exec,["show-ref","--verify","--quiet",Y],{cwd:f.dir,allowFail:!0})).exitCode===0}async findRepoFor(f,J){try{let Y=await this.runGit(f,["rev-parse","--git-common-dir"],{cwd:J,allowFail:!0});if(Y.exitCode!==0)return null;let z=Y.stdout.trim();if(!z)return null;let G=fJ.isAbsolute(z)?z:fJ.resolve(J,z);return fJ.basename(G)===".git"?fJ.dirname(G):G}catch(Y){if(Y instanceof ZZ)return null;throw Y}}}function ZH(f){let J=[],Y=null;for(let z of f.split(`
15
- `)){let G=z.replace(/\r$/,"");if(G===""){if(Y)J.push(Y);Y=null;continue}if(!Y)Y={};if(G.startsWith("worktree "))Y.path=G.slice(9);else if(G.startsWith("HEAD "))Y.head=G.slice(5);else if(G.startsWith("branch ")){let X=G.slice(7);Y.branch=X.startsWith("refs/heads/")?X.slice(11):X}else if(G==="detached")Y.detached=!0;else if(G==="bare")Y.bare=!0}if(Y)J.push(Y);return J}function r9(f,J){let Y=`${f.replace(/\/+$/,"")}/.kobe/worktrees`;return J===Y||J.startsWith(`${Y}/`)?Y:null}function HY(f,J){if(!J||!fJ.isAbsolute(J))throw Error(`${f} must be an absolute path, got: ${JSON.stringify(J)}`)}function mG(f){try{return p9.realpathSync(f)}catch{return fJ.resolve(f)}}var _M;var qH=k(()=>{e1();Of();P9();XH();_M={execForRepo:wz,execForPath:nJ,remoteBasePath(f){return mJ(f)?.basePath??null}}});function o9(f){let J=String(f),Y=J.length-1;return hf.context.id+(Y?String.fromCharCode(96+Y):"")+J}function BH(f){hf.context=f}function oM(){return{...hf.context,id:hf.getNextContextId(),count:0}}function _Y(f,J){let Y=Kf,z=e0,G=f.length===0,X=J===void 0?z:J,q=G?{owned:null,cleanups:null,context:null,owner:null}:{owned:null,cleanups:null,context:X?X.context:null,owner:X},Q=G?()=>f(()=>{throw Error("Dispose method must be an explicit argument to createRoot function")}):()=>f(()=>$f(()=>BY(q)));YJ.afterCreateOwner&&YJ.afterCreateOwner(q),e0=q,Kf=null;try{return F1(Q,!0)}finally{Kf=Y,e0=z}}function r(f,J){J=J?Object.assign({},BZ,J):BZ;let Y={value:f,observers:null,observerSlots:null,comparator:J.equals||void 0};{if(J.name)Y.name=J.name;if(J.internal)Y.internal=!0;else if(XW(Y),YJ.afterCreateSignal)YJ.afterCreateSignal(Y)}let z=(G)=>{if(typeof G==="function")if(j0&&j0.running&&j0.sources.has(Y))G=G(Y.tValue);else G=G(Y.value);return WH(Y,G)};return[ZW.bind(Y),z]}function t9(f,J,Y){let z=iG(f,J,!0,T1,Y);if(Pz&&j0&&j0.running)df.push(z);else oY(z)}function AJ(f,J,Y){let z=iG(f,J,!1,T1,Y);if(Pz&&j0&&j0.running)df.push(z);else oY(z)}function zf(f,J,Y){GW=QF;let z=iG(f,J,!1,T1,Y),G=nG&&u1(nG);if(G)z.suspense=G;if(!Y||!Y.render)z.user=!0;B1?B1.push(z):oY(z)}function U0(f,J,Y){Y=Y?Object.assign({},BZ,Y):BZ;let z=iG(f,J,!0,0,Y);if(z.observers=null,z.observerSlots=null,z.comparator=Y.equals||void 0,Pz&&j0&&j0.running)z.tState=T1,df.push(z);else oY(z);return ZW.bind(z)}function YF(f){return f&&typeof f==="object"&&"then"in f}function KZ(f,J,Y){let z,G,X;if(typeof J==="function")z=f,G=J,X=Y||{};else z=!0,G=f,X=J||{};let q=null,Q=QH,H=null,B=!1,V=!1,j="initialValue"in X,U=typeof z==="function"&&U0(z),L=new Set,[O,M]=(X.storage||r)(X.initialValue),[R,S]=r(void 0),[a,N]=r(void 0,{equals:!1}),[g,C]=r(j?"ready":"unresolved");if(hf.context){if(H=hf.getNextContextId(),X.ssrLoadFrom==="initial")Q=X.initialValue;else if(hf.load&&hf.has(H))Q=hf.load(H)}function y(T,Q0,p,D0){if(q===T){if(q=null,D0!==void 0&&(j=!0),(T===Q||Q0===Q)&&X.onHydrated)queueMicrotask(()=>X.onHydrated(D0,{value:Q0}));if(Q=QH,j0&&T&&B)j0.promises.delete(T),B=!1,F1(()=>{j0.running=!0,_(Q0,p)},!1);else _(Q0,p)}return Q0}function _(T,Q0){F1(()=>{if(Q0===void 0)M(()=>T);C(Q0!==void 0?"errored":j?"ready":"unresolved"),S(Q0);for(let p of L.keys())p.decrement();L.clear()},!1)}function z0(){let T=nG&&u1(nG),Q0=O(),p=R();if(p!==void 0&&!q)throw p;if(Kf&&!Kf.user&&T)t9(()=>{if(a(),q){if(T.resolved&&j0&&B)j0.promises.add(q);else if(!L.has(T))T.increment(),L.add(T)}});return Q0}function t(T=!0){if(T!==!1&&V)return;V=!1;let Q0=U?U():z;if(B=j0&&j0.running,Q0==null||Q0===!1){y(q,$f(O));return}if(j0&&q)j0.promises.delete(q);let p,D0=Q!==QH?Q:$f(()=>{try{return G(Q0,{value:O(),refetching:T})}catch(g0){p=g0}});if(p!==void 0){y(q,void 0,HZ(p),Q0);return}else if(!YF(D0))return y(q,D0,void 0,Q0),D0;if(q=D0,"v"in D0){if(D0.s===1)y(q,D0.v,void 0,Q0);else y(q,void 0,HZ(D0.v),Q0);return D0}return V=!0,queueMicrotask(()=>V=!1),F1(()=>{C(j?"refreshing":"pending"),N()},!1),D0.then((g0)=>y(D0,g0,void 0,Q0),(g0)=>y(D0,void 0,HZ(g0),Q0))}Object.defineProperties(z0,{state:{get:()=>g()},error:{get:()=>R()},loading:{get(){let T=g();return T==="pending"||T==="refreshing"}},latest:{get(){if(!j)return z0();let T=R();if(T&&!q)throw T;return O()}}});let Y0=e0;if(U)t9(()=>(Y0=e0,t(!1)));else t(!1);return[z0,{refetch:(T)=>zF(Y0,()=>t(T)),mutate:M}]}function UZ(f){return F1(f,!1)}function $f(f){if(!hz&&Kf===null)return f();let J=Kf;Kf=null;try{if(hz)return hz.untrack(f);return f()}finally{Kf=J}}function O1(f,J,Y){let z=Array.isArray(f),G,X=Y&&Y.defer;return(q)=>{let Q;if(z){Q=Array(f.length);for(let B=0;B<f.length;B++)Q[B]=f[B]()}else Q=f();if(X)return X=!1,q;let H=$f(()=>J(Q,G,q));return G=Q,H}}function f1(f){zf(()=>$f(f))}function mf(f){if(e0===null)console.warn("cleanups created outside a `createRoot` or `render` will never be run");else if(e0.cleanups===null)e0.cleanups=[f];else e0.cleanups.push(f);return f}function DZ(){return Kf}function zF(f,J){let Y=e0,z=Kf;e0=f,Kf=null;try{return F1(J,!0)}catch(G){LZ(G)}finally{e0=Y,Kf=z}}function GF(f){if(j0&&j0.running)return f(),j0.done;let J=Kf,Y=e0;return Promise.resolve().then(()=>{Kf=J,e0=Y;let z;if(Pz||nG)z=j0||(j0={sources:new Set,effects:[],promises:new Set,disposed:new Set,queue:new Set,running:!0}),z.done||(z.done=new Promise((G)=>z.resolve=G)),z.running=!0;return F1(f,!1),Kf=e0=null,z?z.done:void 0})}function fW(f,J){let Y=iG(()=>$f(()=>{return Object.assign(f,{[fF]:!0}),f(J)}),void 0,!0,0);return Y.props=J,Y.observers=null,Y.observerSlots=null,Y.name=f.name,Y.component=f,oY(Y),Y.tValue!==void 0?Y.tValue:Y.value}function XW(f){if(e0){if(e0.sourceMap)e0.sourceMap.push(f);else e0.sourceMap=[f];f.graph=e0}if(YJ.afterRegisterGraph)YJ.afterRegisterGraph(f)}function gJ(f,J){let Y=Symbol("context");return{id:Y,Provider:HF(Y,J),defaultValue:f}}function u1(f){let J;return e0&&e0.context&&(J=e0.context[f.id])!==void 0?J:f.defaultValue}function XF(f){let J=U0(f),Y=U0(()=>jH(J()),void 0,{name:"children"});return Y.toArray=()=>{let z=Y();return Array.isArray(z)?z:z!=null?[z]:[]},Y}function ZW(){let f=j0&&j0.running;if(this.sources&&(f?this.tState:this.state))if((f?this.tState:this.state)===T1)oY(this);else{let J=df;df=null,F1(()=>jZ(this),!1),df=J}if(Kf){let J=this.observers;if(!J||J[J.length-1]!==Kf){let Y=J?J.length:0;if(!Kf.sources)Kf.sources=[this],Kf.sourceSlots=[Y];else Kf.sources.push(this),Kf.sourceSlots.push(Y);if(!J)this.observers=[Kf],this.observerSlots=[Kf.sources.length-1];else J.push(Kf),this.observerSlots.push(Kf.sources.length-1)}}if(f&&j0.sources.has(this))return this.tValue;return this.value}function WH(f,J,Y){let z=j0&&j0.running&&j0.sources.has(f)?f.tValue:f.value;if(!f.comparator||!f.comparator(z,J)){if(j0){let G=j0.running;if(G||!Y&&j0.sources.has(f))j0.sources.add(f),f.tValue=J;if(!G)f.value=J}else f.value=J;if(f.observers&&f.observers.length)F1(()=>{for(let G=0;G<f.observers.length;G+=1){let X=f.observers[G],q=j0&&j0.running;if(q&&j0.disposed.has(X))continue;if(q?!X.tState:!X.state){if(X.pure)df.push(X);else B1.push(X);if(X.observers)QW(X)}if(!q)X.state=T1;else X.tState=T1}if(df.length>1e6){if(df=[],sM)throw Error("Potential Infinite Loop Detected.");throw Error()}},!1)}return J}function oY(f){if(!f.fn)return;BY(f);let J=VZ;if(JW(f,j0&&j0.running&&j0.sources.has(f)?f.tValue:f.value,J),j0&&!j0.running&&j0.sources.has(f))queueMicrotask(()=>{F1(()=>{j0&&(j0.running=!0),Kf=e0=f,JW(f,f.tValue,J),Kf=e0=null},!1)})}function JW(f,J,Y){let z,G=e0,X=Kf;Kf=e0=f;try{z=f.fn(J)}catch(q){if(f.pure)if(j0&&j0.running)f.tState=T1,f.tOwned&&f.tOwned.forEach(BY),f.tOwned=void 0;else f.state=T1,f.owned&&f.owned.forEach(BY),f.owned=null;return f.updatedAt=Y+1,LZ(q)}finally{Kf=X,e0=G}if(!f.updatedAt||f.updatedAt<=Y){if(f.updatedAt!=null&&"observers"in f)WH(f,z,!0);else if(j0&&j0.running&&f.pure){if(!j0.sources.has(f))f.value=z;j0.sources.add(f),f.tValue=z}else f.value=z;f.updatedAt=Y}}function iG(f,J,Y,z=T1,G){let X={fn:f,state:z,updatedAt:null,owned:null,sources:null,sourceSlots:null,cleanups:null,value:J,owner:e0,context:e0?e0.context:null,pure:Y};if(j0&&j0.running)X.state=0,X.tState=z;if(e0===null)console.warn("computations created outside a `createRoot` or `render` will never be disposed");else if(e0!==JF)if(j0&&j0.running&&e0.pure)if(!e0.tOwned)e0.tOwned=[X];else e0.tOwned.push(X);else if(!e0.owned)e0.owned=[X];else e0.owned.push(X);if(G&&G.name)X.name=G.name;if(hz&&X.fn){let q=X.fn,[Q,H]=r(void 0,{equals:!1}),B=hz.factory(q,H);mf(()=>B.dispose());let V,j=()=>GF(H).then(()=>{if(V)V.dispose(),V=void 0});X.fn=(U)=>{if(Q(),j0&&j0.running){if(!V)V=hz.factory(q,j);return V.track(U)}return B.track(U)}}return YJ.afterCreateOwner&&YJ.afterCreateOwner(X),X}function dG(f){let J=j0&&j0.running;if((J?f.tState:f.state)===0)return;if((J?f.tState:f.state)===cG)return jZ(f);if(f.suspense&&$f(f.suspense.inFallback))return f.suspense.effects.push(f);let Y=[f];while((f=f.owner)&&(!f.updatedAt||f.updatedAt<VZ)){if(J&&j0.disposed.has(f))return;if(J?f.tState:f.state)Y.push(f)}for(let z=Y.length-1;z>=0;z--){if(f=Y[z],J){let G=f,X=Y[z+1];while((G=G.owner)&&G!==X)if(j0.disposed.has(G))return}if((J?f.tState:f.state)===T1)oY(f);else if((J?f.tState:f.state)===cG){let G=df;df=null,F1(()=>jZ(f,Y[0]),!1),df=G}}}function F1(f,J){if(df)return f();let Y=!1;if(!J)df=[];if(B1)Y=!0;else B1=[];VZ++;try{let z=f();return ZF(Y),z}catch(z){if(!Y)B1=null;df=null,LZ(z)}}function ZF(f){if(df){if(Pz&&j0&&j0.running)qF(df);else qW(df);df=null}if(f)return;let J;if(j0){if(!j0.promises.size&&!j0.queue.size){let{sources:z,disposed:G}=j0;B1.push.apply(B1,j0.effects),J=j0.resolve;for(let X of B1)"tState"in X&&(X.state=X.tState),delete X.tState;j0=null,F1(()=>{for(let X of G)BY(X);for(let X of z){if(X.value=X.tValue,X.owned)for(let q=0,Q=X.owned.length;q<Q;q++)BY(X.owned[q]);if(X.tOwned)X.owned=X.tOwned;delete X.tValue,delete X.tOwned,X.tState=0}e9(!1)},!1)}else if(j0.running){j0.running=!1,j0.effects.push.apply(j0.effects,B1),B1=null,e9(!0);return}}let Y=B1;if(B1=null,Y.length)F1(()=>GW(Y),!1);else YJ.afterUpdate&&YJ.afterUpdate();if(J)J()}function qW(f){for(let J=0;J<f.length;J++)dG(f[J])}function qF(f){for(let J=0;J<f.length;J++){let Y=f[J],z=j0.queue;if(!z.has(Y))z.add(Y),Pz(()=>{z.delete(Y),F1(()=>{j0.running=!0,dG(Y)},!1),j0&&(j0.running=!1)})}}function QF(f){let J,Y=0;for(J=0;J<f.length;J++){let z=f[J];if(!z.user)dG(z);else f[Y++]=z}if(hf.context){if(hf.count){hf.effects||(hf.effects=[]),hf.effects.push(...f.slice(0,Y));return}BH()}if(hf.effects&&(hf.done||!hf.count))f=[...hf.effects,...f],Y+=hf.effects.length,delete hf.effects;for(J=0;J<Y;J++)dG(f[J])}function jZ(f,J){let Y=j0&&j0.running;if(Y)f.tState=0;else f.state=0;for(let z=0;z<f.sources.length;z+=1){let G=f.sources[z];if(G.sources){let X=Y?G.tState:G.state;if(X===T1){if(G!==J&&(!G.updatedAt||G.updatedAt<VZ))dG(G)}else if(X===cG)jZ(G,J)}}}function QW(f){let J=j0&&j0.running;for(let Y=0;Y<f.observers.length;Y+=1){let z=f.observers[Y];if(J?!z.tState:!z.state){if(J)z.tState=cG;else z.state=cG;if(z.pure)df.push(z);else B1.push(z);z.observers&&QW(z)}}}function BY(f){let J;if(f.sources)while(f.sources.length){let Y=f.sources.pop(),z=f.sourceSlots.pop(),G=Y.observers;if(G&&G.length){let X=G.pop(),q=Y.observerSlots.pop();if(z<G.length)X.sourceSlots[q]=z,G[z]=X,Y.observerSlots[z]=q}}if(f.tOwned){for(J=f.tOwned.length-1;J>=0;J--)BY(f.tOwned[J]);delete f.tOwned}if(j0&&j0.running&&f.pure)HW(f,!0);else if(f.owned){for(J=f.owned.length-1;J>=0;J--)BY(f.owned[J]);f.owned=null}if(f.cleanups){for(J=f.cleanups.length-1;J>=0;J--)f.cleanups[J]();f.cleanups=null}if(j0&&j0.running)f.tState=0;else f.state=0;delete f.sourceMap}function HW(f,J){if(!J)f.tState=0,j0.disposed.add(f);if(f.owned)for(let Y=0;Y<f.owned.length;Y++)HW(f.owned[Y])}function HZ(f){if(f instanceof Error)return f;return Error(typeof f==="string"?f:"Unknown error",{cause:f})}function YW(f,J,Y){try{for(let z of J)z(f)}catch(z){LZ(z,Y&&Y.owner||null)}}function LZ(f,J=e0){let Y=s9&&J&&J.context&&J.context[s9],z=HZ(f);if(!Y)throw z;if(B1)B1.push({fn(){YW(z,Y,J)},state:T1});else YW(z,Y,J)}function jH(f){if(typeof f==="function"&&!f.length)return jH(f());if(Array.isArray(f)){let J=[];for(let Y=0;Y<f.length;Y++){let z=jH(f[Y]);if(Array.isArray(z))if(z.length<32768)J.push.apply(J,z);else for(let G=0;G<z.length;G++)J.push(z[G]);else J.push(z)}return J}return f}function HF(f,J){return function(z){let G;return AJ(()=>G=$f(()=>{return e0.context={...e0.context,[f]:z.value},XF(()=>z.children)}),void 0,J),G}}function zW(f){for(let J=0;J<f.length;J++)f[J]()}function jF(f,J,Y={}){let z=[],G=[],X=[],q=0,Q=J.length>1?[]:null;return mf(()=>zW(X)),()=>{let H=f()||[],B=H.length,V,j;return H[WZ],$f(()=>{let L,O,M,R,S,a,N,g,C;if(B===0){if(q!==0)zW(X),X=[],z=[],G=[],q=0,Q&&(Q=[]);if(Y.fallback)z=[BF],G[0]=_Y((y)=>{return X[0]=y,Y.fallback()}),q=1}else if(q===0){G=Array(B);for(j=0;j<B;j++)z[j]=H[j],G[j]=_Y(U);q=B}else{M=Array(B),R=Array(B),Q&&(S=Array(B));for(a=0,N=Math.min(q,B);a<N&&z[a]===H[a];a++);for(N=q-1,g=B-1;N>=a&&g>=a&&z[N]===H[g];N--,g--)M[g]=G[N],R[g]=X[N],Q&&(S[g]=Q[N]);L=new Map,O=Array(g+1);for(j=g;j>=a;j--)C=H[j],V=L.get(C),O[j]=V===void 0?-1:V,L.set(C,j);for(V=a;V<=N;V++)if(C=z[V],j=L.get(C),j!==void 0&&j!==-1)M[j]=G[V],R[j]=X[V],Q&&(S[j]=Q[V]),j=O[j],L.set(C,j);else X[V]();for(j=a;j<B;j++)if(j in M){if(G[j]=M[j],X[j]=R[j],Q)Q[j]=S[j],Q[j](j)}else G[j]=_Y(U);G=G.slice(0,q=B),z=H.slice(0)}return G});function U(L){if(X[j]=L,Q){let[O,M]=r(j,{name:"index"});return Q[j]=M,J(H[j],O)}return J(H[j])}}}function BW(f,J){if(WF){if(hf.context){let Y=hf.context;BH(oM());let z=fW(f,J||{});return BH(Y),z}}return fW(f,J||{})}function QZ(){return!0}function HH(f){return!(f=typeof f==="function"?f():f)?{}:f}function KF(){for(let f=0,J=this.length;f<J;++f){let Y=this[f]();if(Y!==void 0)return Y}}function MZ(...f){let J=!1;for(let q=0;q<f.length;q++){let Q=f[q];J=J||!!Q&&JJ in Q,f[q]=typeof Q==="function"?(J=!0,U0(Q)):Q}if(eM&&J)return new Proxy({get(q){for(let Q=f.length-1;Q>=0;Q--){let H=HH(f[Q])[q];if(H!==void 0)return H}},has(q){for(let Q=f.length-1;Q>=0;Q--)if(q in HH(f[Q]))return!0;return!1},keys(){let q=[];for(let Q=0;Q<f.length;Q++)q.push(...Object.keys(HH(f[Q])));return[...new Set(q)]}},VF);let Y={},z=Object.create(null);for(let q=f.length-1;q>=0;q--){let Q=f[q];if(!Q)continue;let H=Object.getOwnPropertyNames(Q);for(let B=H.length-1;B>=0;B--){let V=H[B];if(V==="__proto__"||V==="constructor")continue;let j=Object.getOwnPropertyDescriptor(Q,V);if(!z[V])z[V]=j.get?{enumerable:!0,configurable:!0,get:KF.bind(Y[V]=[j.get.bind(Q)])}:j.value!==void 0?j:void 0;else{let U=Y[V];if(U){if(j.get)U.push(j.get.bind(Q));else if(j.value!==void 0)U.push(()=>j.value)}}}}let G={},X=Object.keys(z);for(let q=X.length-1;q>=0;q--){let Q=X[q],H=z[Q];if(H&&H.get)Object.defineProperty(G,Q,H);else G[Q]=H?H.value:void 0}return G}function Zf(f){let J="fallback"in f&&{fallback:()=>f.fallback};return U0(jF(()=>f.each,f.children,J||void 0),void 0,{name:"value"})}function X0(f){let J=f.keyed,Y=U0(()=>f.when,void 0,{name:"condition value"}),z=J?Y:U0(Y,void 0,{equals:(G,X)=>!G===!X,name:"condition"});return U0(()=>{let G=z();if(G){let X=f.children;return typeof X==="function"&&X.length>0?$f(()=>X(J?G:()=>{if(!$f(z))throw UF("Show");return Y()})):X}return f.fallback},void 0,{name:"value"})}var hf,sM=!0,tM=(f,J)=>f===J,JJ,eM,WZ,fF,BZ,s9=null,GW,T1=1,cG=2,JF,QH,e0=null,j0=null,Pz=null,hz=null,Kf=null,df=null,B1=null,VZ=0,YJ,JT,e9,nG,BF,WF=!1,VF,UF=(f)=>`Attempting to access a stale value from <${f}> that could possibly be undefined. This may occur because you are reading the accessor returned from the component at a time where it has already been unmounted. We recommend cleaning up any stale timers or async, or reading from the initial condition.`,jW;var Wf=k(()=>{hf={context:void 0,registry:void 0,effects:void 0,done:!1,getContextId(){return o9(this.context.count)},getNextContextId(){return o9(this.context.count++)}};JJ=Symbol("solid-proxy"),eM=typeof Proxy==="function",WZ=Symbol("solid-track"),fF=Symbol("solid-dev-component"),BZ={equals:tM},GW=qW,JF={},QH={},YJ={afterUpdate:null,afterCreateOwner:null,afterCreateSignal:null,afterRegisterGraph:null};[JT,e9]=r(!1);BF=Symbol("fallback");VF={get(f,J,Y){if(J===JJ)return Y;return f.get(J)},has(f,J){if(J===JJ)return!0;return f.has(J)},set:QZ,deleteProperty:QZ,getOwnPropertyDescriptor(f,J){return{configurable:!0,enumerable:!0,get(){return f.get(J)},set:QZ,deleteProperty:QZ}},ownKeys(f){return f.keys()}};jW={hooks:YJ,writeSignal:WH,registerGraph:XW};if(globalThis)if(!globalThis.Solid$$)globalThis.Solid$$=!0;else console.warn("You appear to have multiple instances of Solid. This can lead to unexpected behavior.")});function DF(f,J){switch((f??"").toUpperCase()){case"MERGED":return"merged";case"CLOSED":return"closed";case"OPEN":return(J??"").toUpperCase()==="APPROVED"?"ready_to_merge":"open";default:return"unknown"}}function LF(f){let J=(f.status??"").toUpperCase(),Y=(f.conclusion??"").toUpperCase(),z=(f.state??"").toUpperCase();if(J&&J!=="COMPLETED")return"pending";if(Y){if(Y==="SUCCESS"||Y==="NEUTRAL"||Y==="SKIPPED")return"passing";return"failing"}if(z==="SUCCESS")return"passing";if(z==="PENDING"||z==="EXPECTED")return"pending";if(z==="FAILURE"||z==="ERROR")return"failing";return"unknown"}function MF(f){if(!f||f.length===0)return"none";let J=!1,Y=!1;for(let z of f){let G=LF(z);if(G==="failing")return"failing";if(G==="pending")J=!0;else if(G==="passing")Y=!0}if(J)return"pending";if(Y)return"passing";return"unknown"}function VW(f,J){if(!f||typeof f.number!=="number")return null;return{provider:"github",lifecycle:DF(f.state,f.reviewDecision),checkState:MF(f.statusCheckRollup),number:f.number,url:f.url,title:f.title,baseRef:f.baseRefName,headRef:f.headRefName,reviewDecision:f.reviewDecision||void 0,mergeable:f.mergeable||void 0,lastCheckedAt:J}}function FZ(f,J){if(f===J)return!0;if(!f||!J)return!1;return f.provider===J.provider&&f.lifecycle===J.lifecycle&&f.checkState===J.checkState&&f.number===J.number&&f.url===J.url&&f.title===J.title&&f.baseRef===J.baseRef&&f.headRef===J.headRef&&f.reviewDecision===J.reviewDecision&&f.mergeable===J.mergeable}var WW="number,url,title,state,baseRefName,headRefName,reviewDecision,mergeable,statusCheckRollup";var VH,KH,UH,DH="DIRTY_WORKTREE",LH,MH;var FH=k(()=>{VH=class VH extends Error{from;to;taskId;constructor(f,J,Y){super(`illegal transition for task ${Y}: ${f} -> ${J}`);this.from=f;this.to=J;this.taskId=Y;this.name="IllegalTransitionError"}};KH=class KH extends Error{constructor(f){super(`task not found: ${f}`);this.name="TaskNotFoundError"}};UH=class UH extends Error{constructor(){super("cannot delete a main task; remove the repo from saved repos instead");this.name="CannotDeleteMainTaskError"}};LH=class LH extends Error{taskId;constructor(f){super(`${DH}: task ${f} worktree has uncommitted or untracked changes`);this.taskId=f;this.name="DirtyWorktreeError"}};MH=class MH extends Error{taskId;cause;constructor(f,J){super(`failed to remove worktree for task ${f}: ${J instanceof Error?J.message:String(J)}`);this.taskId=f;this.cause=J;this.name="WorktreeRemoveFailedError"}}});function KW(f){if(typeof f!=="string")return"";let J=f.replace(/\s+/g," ").trim();if(J.length===0)return"";let Y=[...J];if(Y.length<=40)return J;return`${Y.slice(0,40).join("")}\u2026`}function OZ(f,J){let Y=f.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,32),z=J.slice(-6).toLowerCase();return`kobe/${Y||"task"}-${z}`}var UW;var DW=k(()=>{UW=["aardvark","addax","adder","agouti","albatross","alpaca","anaconda","anchovy","anglerfish","anole","anteater","antelope","ape","argali","armadillo","avocet","axolotl","baboon","badger","banteng","barracuda","basilisk","bass","bat","beagle","bear","beaver","bee","beetle","beluga","betta","bison","blackbird","blenny","bluebird","bluegill","boar","bobcat","bonito","bovid","buffalo","bullfrog","bunting","bushbuck","butterfly","buzzard","caiman","camel","canary","capybara","caracal","cardinal","caribou","carp","cassowary","caterpillar","catfish","chameleon","chamois","char","cheetah","chickadee","chimp","chinchilla","chipmunk","chough","cicada","civet","clam","clownfish","cobra","cockatoo","condor","coot","copperhead","coral","cormorant","cougar","coyote","crab","crane","crawfish","crayfish","cricket","crocodile","crow","cuckoo","curlew","cuttlefish","deer","dikdik","dingo","dolphin","donkey","dormouse","dotterel","dove","dragonfly","dromedary","duck","dugong","dunlin","eagle","echidna","eel","egret","eider","eland","elephant","elk","emu","ermine","falcon","fawn","ferret","finch","firefly","flamingo","flounder","fox","frog","gadwall","gannet","gaur","gazelle","gecko","gemsbok","gerbil","gharial","gibbon","gnu","goat","goby","godwit","goldfish","goose","gopher","goral","gorilla","goshawk","grackle","grasshopper","grayling","grebe","grouse","guanaco","guillemot","guineafowl","guppy","halibut","hammerhead","hamster","hare","harrier","hartebeest","hawk","hedgehog","heron","herring","hippo","hornbill","hornet","horse","hummingbird","hyena","ibex","ibis","iguana","impala","indri","jacana","jackal","jaguar","jay","jellyfish","jerboa","junco","kakapo","kangaroo","kestrel","killdeer","kingfisher","kinglet","kite","kiwi","koala","kookaburra","krait","krill","kudu","ladybug","lamprey","langur","lapwing","lark","lemming","lemur","leopard","limpet","lion","lionfish","lizard","llama","lobster","locust","loon","lorikeet","loris","lynx","macaque","macaw","mackerel","magpie","mallard","mamba","mammoth","manatee","mandrill","manta","mantis","marlin","marmoset","marmot","marten","meerkat","merganser","mink","minnow","mole","mongoose","monitor","monkey","moose","moth","mouflon","mouse","mudpuppy","mule","muntjac","musk","muskox","muskrat","mussel","mustang","narwhal","newt","nightingale","numbat","nuthatch","nyala","ocelot","octopus","okapi","opossum","orangutan","orca","oriole","oryx","osprey","ostrich","otter","owl","oyster","oystercatcher","paca","panda","pangolin","panther","parakeet","parrot","parrotfish","partridge","peafowl","pelican","penguin","perch","petrel","pheasant","pigeon","pika","pike","pintail","pipefish","platypus","plover","pollock","pony","porcupine","porpoise","possum","ptarmigan","puffin","puma","pupfish","python","quail","quetzal","quokka","quoll","rabbit","raccoon","rail","rat","rattler","raven","ray","redpoll","reindeer","remora","rhino","roadrunner","robin","rook","sable","sailfish","salamander","salmon","sandpiper","sardine","scallop","scaup","scorpion","seahorse","seal","serval","shark","shearwater","shrew","shrike","shrimp","siskin","sitatunga","skate","skink","skua","skunk","sloth","smelt","snail","snipe","solenodon","sparrow","spider","springbok","squid","squirrel","starfish","starling","stilt","stingray","stoat","stork","sunbird","sunfish","swallow","swan","swift","swordfish","tahr","takin","tamarin","tanager","tapir","tarantula","tarpon","tarsier","teal","tenrec","terrapin","tern","tetra","thrasher","thrush","tiger","toad","tortoise","toucan","treecreeper","treefrog","trout","tuatara","tuna","turkey","turtle","urchin","urial","vicuna","viper","vole","vulture","wagtail","wallaby","walleye","walrus","warbler","warthog","waterbuck","weasel","wildebeest","wolf","wolverine","wombat","woodcock","woodpecker","wrasse","wren","yak","zebra","zebu","zorilla"]});class OH{activeSlugs;random;pool;pendingByRepo=new Map;chain=Promise.resolve();constructor(f,J={}){this.activeSlugs=f;if(this.random=J.random??Math.random,this.pool=J.pool??UW,this.pool.length===0)throw Error("SlugAllocator: animal pool cannot be empty")}async allocate(f){let J=this.chain,Y;this.chain=new Promise((z)=>{Y=z}),await J;try{return await this.pickLocked(f)}finally{Y()}}commit(f,J){this.deletePending(f,J)}cancel(f,J){this.deletePending(f,J)}async pickLocked(f){let J=await this.occupiedSlugs(f),Y=this.pool.filter((G)=>!J.has(G));if(Y.length>0){let G=Y[Math.floor(this.random()*Y.length)];return this.addPending(f,G),G}let z=this.pool[Math.floor(this.random()*this.pool.length)];for(let G=2;;G++){let X=`${z}-v${G}`;if(!J.has(X))return this.addPending(f,X),X}}async occupiedSlugs(f){let J=new Set(this.pendingByRepo.get(f)??[]);for(let Y of this.activeSlugs(f))if(Y)J.add(Y);for(let Y of await i9(f))J.add(Y);return J}addPending(f,J){let Y=this.pendingByRepo.get(f);if(!Y)Y=new Set,this.pendingByRepo.set(f,Y);Y.add(J)}deletePending(f,J){let Y=this.pendingByRepo.get(f);if(!Y)return;if(Y.delete(J),Y.size===0)this.pendingByRepo.delete(f)}}var LW=k(()=>{DW();XH()});var OW={};jf(OW,{PLACEHOLDER_TASK_TITLE:()=>RJ,Orchestrator:()=>AZ});import{realpathSync as FF}from"fs";import{basename as OF,resolve as AF}from"path";function MW(f){return mJ(f)?.basePath??f}class AZ{store;worktrees;slugs;tasksAcc;setTasks;activeTaskAcc;setActiveTaskSig;unsubscribeStore;worktreeLocks=new Map;mainTaskLocks=new Map;constructor(f){this.store=f.store,this.worktrees=f.worktrees,this.slugs=new OH((X)=>this.store.list().filter((q)=>q.repo===X&&q.kind!=="main").map((q)=>{return q.worktreePath.match(/([^/\\]+)[/\\]*$/)?.[1]??""}).filter((q)=>q.length>0));let[J,Y]=r(this.store.list());this.tasksAcc=J,this.setTasks=(X)=>Y(()=>X);let[z,G]=r(null);this.activeTaskAcc=z,this.setActiveTaskSig=(X)=>G(()=>X),this.unsubscribeStore=this.store.subscribe((X)=>{this.setTasks(X.slice())})}async init(){}activeTaskSignal(){return this.activeTaskAcc}async setActiveTask(f){let J=f===null?null:String(f);if(this.setActiveTaskSig(J),J&&this.store.get(J))await this.store.update(J,{})}tasksSignal(){return this.tasksAcc}subscribeTasks(f){return this.store.subscribe(f)}dispose(){this.unsubscribeStore()}listTasks(){return this.store.list()}getTask(f){return this.store.get(f)}async createTask(f){if(!f.repo)throw Error("createTask: repo is required");let J=(f.title??RJ).trim()||RJ,Y=await this.store.create({repo:f.repo,title:J,branch:f.branch??"",worktreePath:"",status:"backlog",kind:"task",vendor:f.vendor??Sf,...f.modelEffort?{modelEffort:f.modelEffort}:{}});if(f.baseRef)this.pendingBaseRefs.set(Y.id,f.baseRef);return Y}async ensureMainTask(f){let{repo:J,key:Y}=FW(f),z=this.store.list().find((q)=>q.kind==="main"&&FW(q.repo).key===Y);if(z)return z;let G=this.mainTaskLocks.get(Y);if(G)return G;let X=(async()=>{return await this.store.create({repo:J,title:gF(J),branch:"",worktreePath:MW(J),status:"backlog",kind:"main",vendor:Sf})})();this.mainTaskLocks.set(Y,X);try{return await X}finally{this.mainTaskLocks.delete(Y)}}async ensureWorktree(f){let J=this.requireTask(f);if(J.kind==="main")return MW(J.repo);if(J.worktreePath)return J.worktreePath;let Y=this.worktreeLocks.get(J.id);if(Y)return await Y,this.requireTask(J.id).worktreePath;let z=(async()=>{let X=await this.slugs.allocate(J.repo);try{let q=J.branch||OZ(J.title,J.id),Q=this.pendingBaseRefs.get(J.id),H=await this.worktrees.createForTask({repo:J.repo,slug:X,branch:q,baseRef:Q});this.slugs.commit(J.repo,X),this.pendingBaseRefs.delete(J.id),await this.store.update(J.id,{worktreePath:H.path,branch:q})}catch(q){throw this.slugs.cancel(J.repo,X),q}})();this.worktreeLocks.set(J.id,z);try{await z}finally{this.worktreeLocks.delete(J.id)}return this.requireTask(J.id).worktreePath}async setTitle(f,J){let Y=J.trim();if(!Y)throw Error("setTitle: title is required (empty or whitespace-only rejected)");let z=this.requireTask(f);if(z.title===Y)return;await this.store.update(z.id,{title:Y}),await this.followBranchToTitle(z,Y)}async followBranchToTitle(f,J){if(f.kind==="main"||!f.worktreePath)return;if(f.branch!==OZ(RJ,f.id))return;let Y=OZ(J,f.id);if(Y===f.branch)return;try{await this.setBranch(f.id,Y)}catch(z){console.error(`[kobe] follow-branch-to-title failed for ${f.id}:`,z)}}async setBranch(f,J){let Y=J.trim();if(!Y)throw Error("setBranch: branch is required (empty or whitespace-only rejected)");let z=this.requireTask(f);if(z.kind==="main")throw Error("setBranch: a main task tracks the repo's own branch; rename it with git directly");if(z.branch===Y)return;if(z.worktreePath)await this.worktrees.renameBranch(z.worktreePath,z.branch,Y);await this.store.update(z.id,{branch:Y})}async setVendor(f,J){let Y=this.requireTask(f);if(Y.vendor===J)return;await this.store.update(Y.id,{vendor:J})}async setPinned(f,J){let Y=this.requireTask(f);if(Y.kind==="main")return;let z=J??!Y.pinned;if((Y.pinned??!1)===z)return;await this.store.update(Y.id,{pinned:z})}async moveTask(f,J){let Y=this.requireTask(f);if(Y.kind==="main")return;let z=this.store.list().filter((G)=>(G.kind??"task")!=="main"&&G.archived===Y.archived&&(G.pinned??!1)===(Y.pinned??!1)).map((G)=>String(G.id));await this.store.move(Y.id,J,z)}async setArchived(f,J){let Y=this.requireTask(f);if(Y.kind==="main")return;let z=J??!Y.archived;if(Y.archived===z)return;await this.store.update(Y.id,{archived:z})}async reorderTasks(f){if(f.length===0)return;for(let J of f){if(this.requireTask(J.taskId).kind==="main")throw Error(`cannot reorder a main task: ${J.taskId}`);if(!Number.isFinite(J.position))throw Error(`position must be a finite number: ${J.taskId}`)}await this.store.reorder(f.map((J)=>({id:J.taskId,position:J.position})))}async setStatus(f,J){let Y=this.requireTask(f);if(Y.status===J)return;if(Y.status==="done"&&J==="error"||Y.status==="error"&&J==="done")throw new VH(Y.status,J,Y.id);await this.store.update(Y.id,{status:J})}async setPRStatus(f,J){let Y=this.requireTask(f);if(FZ(Y.prStatus,J??void 0))return;await this.store.update(Y.id,{prStatus:J??void 0})}async deleteTask(f,J){let Y=this.store.get(f);if(!Y)return;if(Y.kind==="main")throw new UH;let z=J?.force===!0;if(Y.worktreePath){if(!z){let G=!1;try{G=await this.worktrees.isDirty(Y.worktreePath)}catch{}if(G)throw new LH(Y.id)}try{await this.worktrees.remove(Y.worktreePath,{force:z})}catch(G){throw new MH(Y.id,G)}}await this.store.remove(Y.id),this.pendingBaseRefs.delete(Y.id),this.worktreeLocks.delete(Y.id)}async discoverAdoptableWorktrees(f){if(!f)throw Error("discoverAdoptableWorktrees: repo is required");let J=await this.worktrees.listAll(f),Y=new Set(this.store.list().filter((z)=>z.worktreePath).map((z)=>vz(z.worktreePath)));return J.filter((z)=>!Y.has(vz(z.path)))}async adoptWorktree(f){if(!f.repo)throw Error("adoptWorktree: repo is required");if(!f.worktreePath)throw Error("adoptWorktree: worktreePath is required");let J=vz(f.worktreePath),Y=this.adoptLocks.get(J);if(Y)return Y;let z=this.adoptWorktreeLocked(f,J);this.adoptLocks.set(J,z);try{return await z}finally{this.adoptLocks.delete(J)}}async adoptWorktreeLocked(f,J){let Y=this.store.list().find((Q)=>Q.worktreePath&&vz(Q.worktreePath)===J);if(Y){if(f.ifExists==="return")return Y;throw Error(`adoptWorktree: ${f.worktreePath} is already adopted as a task`)}let G=(await this.worktrees.listAll(f.repo)).find((Q)=>vz(Q.path)===J);if(!G)throw Error(`adoptWorktree: ${f.worktreePath} is not an adoptable git worktree of ${f.repo} (unknown, detached, or the main checkout)`);let X=f.branch?.trim()||G.branch,q=(f.title??OF(G.path)).trim()||RJ;return this.store.create({repo:f.repo,title:q,branch:X,worktreePath:G.path,status:"backlog",kind:"task",vendor:f.vendor??Sf})}pendingBaseRefs=new Map;adoptLocks=new Map;requireTask(f){let J=this.store.get(f);if(!J)throw new KH(String(f));return J}}function gF(f){let J=f.split(/[/\\]/).filter(Boolean);return J.length>0?J[J.length-1]??f:f}function FW(f){let J=PJ(f);return{repo:J,key:H1(J)?J:vz(J)}}function vz(f){try{return FF(f)}catch{return AF(f)}}var RJ="(new task)";var lG=k(()=>{Wf();Of();S1();FH();LW()});function gZ(f){return f.remoteVersion>=f.localMin&&f.localVersion>=f.remoteMin}function AW(f,J){if(!f)return!1;return f!==J}function CF(f){return typeof f==="string"&&RF.has(f)}function gW(f){if(!Array.isArray(f))return null;let J=new Set;for(let Y of f)if(CF(Y))J.add(Y);return J.size>0?J:null}function zJ(f){return{id:f.id,title:f.title,repo:f.repo,branch:f.branch,worktreePath:f.worktreePath,kind:f.kind??"task",status:f.status,archived:f.archived,pinned:f.pinned??!1,vendor:f.vendor,prStatus:f.prStatus,position:f.position,modelEffort:f.modelEffort,createdAt:f.createdAt,updatedAt:f.updatedAt}}function aG(f){return`${JSON.stringify(f)}
16
- `}var n1=3,jY=2,AH,RF;var sY=k(()=>{AH=["task.snapshot","issue.snapshot","active-task","update","engine-state","ui-prefs","keybindings","task.jobs","worktree.changes","session.deliver"],RF=new Set(AH)});import{createHash as kF}from"crypto";import{homedir as RZ,tmpdir as NF}from"os";import{join as tY}from"path";function yF(f){return kF("sha1").update(f).digest("hex").slice(0,8)}function RH(f,J,Y,z){if(Buffer.byteLength(f,"utf8")<=gH)return f;let G=yF(J),X=z===void 0?"":`-${z}`,q=tY(NF(),`kobe-${G}-${Y}${X}.sock`);if(Buffer.byteLength(q,"utf8")<=gH)return q;throw Error(`kobe socket path exceeds ${gH} bytes even after fallback: ${q}`)}function CJ(f){let J=process.env.KOBE_DAEMON_SOCKET_PATH;if(J&&J.length>0)return J;let Y=f??process.env.KOBE_HOME_DIR;if(Y&&Y.length>0)return RH(tY(Y,".kobe","daemon.sock"),Y,"daemon");let z=process.env.XDG_RUNTIME_DIR;if(z&&z.length>0)return RH(tY(z,"kobe.sock"),z,"daemon");let G=RZ();return RH(tY(G,".kobe","daemon.sock"),G,"daemon")}function dJ(f=process.env.KOBE_HOME_DIR??RZ()){let J=process.env.KOBE_DAEMON_PID_PATH;if(J&&J.length>0)return J;return tY(f,".kobe","daemon.pid")}function CZ(f=process.env.KOBE_HOME_DIR??RZ()){return tY(f,".kobe","daemon.log")}function RW(f=process.env.KOBE_HOME_DIR??RZ()){return tY(f,".kobe","client.log")}var gH=100;var mz=()=>{};import{appendFile as CW,mkdir as bF}from"fs/promises";import{dirname as SF}from"path";function kZ(f){yW=f}function IF(f){if(f instanceof Error)return{message:f.message,stack:f.stack};let J;try{J=typeof f==="string"?f:JSON.stringify(f)}catch{J=String(f)}return{message:J}}function bW(f,J,Y=new Date){return`[${Y.toISOString()}] client ${yW} [${f}] pid=${process.pid}: ${J}
17
- `}function TF(){if(kW)return;kW=!0;try{process.stderr.write(`[kobe] client log write failed; continuing without it
18
- `)}catch{}}function SW(f){let J=RW();NW=NW.then(async()=>{try{await CW(J,f)}catch(Y){if(Y?.code==="ENOENT")await bF(SF(J),{recursive:!0}),await CW(J,f);else throw Y}}).catch(()=>TF())}function iJ(f,J){SW(bW(f,J))}function WY(f,J){let Y=IF(J);SW(bW(f,Y.stack??Y.message))}var yW="client",kW=!1,NW;var eY=k(()=>{mz();NW=Promise.resolve()});import{connect as uF}from"net";import{StringDecoder as EF}from"string_decoder";class d1{socketPath;socket=null;buffer="";nextId=1;pending=new Map;handlers=new Map;lifecycleHandlers=new Map;connecting=null;disposed=!1;constructor(f){this.socketPath=f}connect(){if(this.socket)return Promise.resolve();if(this.disposed)return Promise.reject(Error("daemon client disposed"));if(this.connecting)return this.connecting;let f=this.openSocket();this.connecting=f;let J=()=>{if(this.connecting===f)this.connecting=null};return f.then(J,J),f}get isDisposed(){return this.disposed}close(){this.disposed=!0,this.socket?.end(),this.socket=null,this.failPending()}forceDisconnect(){let f=this.socket;if(!f)return;this.socket=null,f.destroy(),this.failPending()}failPending(){if(this.pending.size===0)return;let f=Error("daemon connection closed");for(let J of this.pending.values())J.reject(f);this.pending.clear()}on(f,J){let Y=this.handlers.get(f);if(!Y)Y=new Set,this.handlers.set(f,Y);return Y.add(J),()=>{if(Y?.delete(J),Y?.size===0)this.handlers.delete(f)}}onChannel(f,J){return this.on(f,(Y)=>J(Y.payload))}subscribe(f={}){let J={};if(f.channels)J.channels=f.channels;if(f.role)J.role=f.role;return this.request("subscribe",J)}onLifecycle(f,J){let Y=this.lifecycleHandlers.get(f);if(!Y)Y=new Set,this.lifecycleHandlers.set(f,Y);return Y.add(J),()=>{if(Y?.delete(J),Y?.size===0)this.lifecycleHandlers.delete(f)}}async request(f,J){await this.connect();let Y=this.socket;if(!Y)throw Error("daemon connection is not open");let z=String(this.nextId++),G=new Promise((X,q)=>{this.pending.set(z,{resolve:(Q)=>X(Q),reject:q})});return Y.write(aG({type:"request",id:z,name:f,payload:J})),G}openSocket(){return new Promise((f,J)=>{let Y=uF(this.socketPath);this.socket=Y;let z=()=>{Y.off("error",G),f()},G=(q)=>{if(Y.off("connect",z),this.socket===Y)this.socket=null;J(q)};Y.once("connect",z),Y.once("error",G);let X=new EF("utf8");this.buffer="",Y.on("data",(q)=>this.onData(X.write(q))),Y.on("close",()=>this.onSocketClose(Y))})}onSocketClose(f){if(this.socket!==f)return;this.socket=null,this.failPending(),this.emitLifecycle("close")}emitLifecycle(f){for(let J of this.lifecycleHandlers.get(f)??[])try{J()}catch(Y){console.error(`[kobe] lifecycle handler for "${f}" threw:`,Y)}}onData(f){this.buffer+=f;let J=this.buffer.indexOf(`
13
+ `});function ZZ(f){return f.remoteVersion>=f.localMin&&f.localVersion>=f.remoteMin}function I9(f,J){if(!f)return!1;return f!==J}function yM(f){return typeof f==="string"&&NM.has(f)}function T9(f){if(!Array.isArray(f))return null;let J=new Set;for(let Y of f)if(yM(Y))J.add(Y);return J.size>0?J:null}function e1(f){return{id:f.id,title:f.title,repo:f.repo,branch:f.branch,worktreePath:f.worktreePath,kind:f.kind??"task",status:f.status,archived:f.archived,pinned:f.pinned??!1,vendor:f.vendor,prStatus:f.prStatus,position:f.position,modelEffort:f.modelEffort,createdAt:f.createdAt,updatedAt:f.updatedAt}}function PG(f){return`${JSON.stringify(f)}
14
+ `}var n1=3,QY=2,qH,NM;var _Y=k(()=>{qH=["task.snapshot","issue.snapshot","active-task","update","engine-state","ui-prefs","keybindings","task.jobs","worktree.changes","session.deliver"],NM=new Set(qH)});import{createHash as bM}from"crypto";import{homedir as qZ,tmpdir as SM}from"os";import{join as oY}from"path";function IM(f){return bM("sha1").update(f).digest("hex").slice(0,8)}function HH(f,J,Y,z){if(Buffer.byteLength(f,"utf8")<=QH)return f;let G=IM(J),X=z===void 0?"":`-${z}`,q=oY(SM(),`kobe-${G}-${Y}${X}.sock`);if(Buffer.byteLength(q,"utf8")<=QH)return q;throw Error(`kobe socket path exceeds ${QH} bytes even after fallback: ${q}`)}function AJ(f){let J=process.env.KOBE_DAEMON_SOCKET_PATH;if(J&&J.length>0)return J;let Y=f??process.env.KOBE_HOME_DIR;if(Y&&Y.length>0)return HH(oY(Y,".kobe","daemon.sock"),Y,"daemon");let z=process.env.XDG_RUNTIME_DIR;if(z&&z.length>0)return HH(oY(z,"kobe.sock"),z,"daemon");let G=qZ();return HH(oY(G,".kobe","daemon.sock"),G,"daemon")}function nJ(f=process.env.KOBE_HOME_DIR??qZ()){let J=process.env.KOBE_DAEMON_PID_PATH;if(J&&J.length>0)return J;return oY(f,".kobe","daemon.pid")}function QZ(f=process.env.KOBE_HOME_DIR??qZ()){return oY(f,".kobe","daemon.log")}function u9(f=process.env.KOBE_HOME_DIR??qZ()){return oY(f,".kobe","client.log")}var QH=100;var xz=()=>{};import{appendFile as E9,mkdir as TM}from"fs/promises";import{dirname as uM}from"path";function HZ(f){h9=f}function EM(f){if(f instanceof Error)return{message:f.message,stack:f.stack};let J;try{J=typeof f==="string"?f:JSON.stringify(f)}catch{J=String(f)}return{message:J}}function P9(f,J,Y=new Date){return`[${Y.toISOString()}] client ${h9} [${f}] pid=${process.pid}: ${J}
15
+ `}function xM(){if(x9)return;x9=!0;try{process.stderr.write(`[kobe] client log write failed; continuing without it
16
+ `)}catch{}}function v9(f){let J=u9();w9=w9.then(async()=>{try{await E9(J,f)}catch(Y){if(Y?.code==="ENOENT")await TM(uM(J),{recursive:!0}),await E9(J,f);else throw Y}}).catch(()=>xM())}function dJ(f,J){v9(P9(f,J))}function HY(f,J){let Y=EM(J);v9(P9(f,Y.stack??Y.message))}var h9="client",x9=!1,w9;var sY=k(()=>{xz();w9=Promise.resolve()});import{connect as wM}from"net";import{StringDecoder as hM}from"string_decoder";class d1{socketPath;socket=null;buffer="";nextId=1;pending=new Map;handlers=new Map;lifecycleHandlers=new Map;connecting=null;disposed=!1;constructor(f){this.socketPath=f}connect(){if(this.socket)return Promise.resolve();if(this.disposed)return Promise.reject(Error("daemon client disposed"));if(this.connecting)return this.connecting;let f=this.openSocket();this.connecting=f;let J=()=>{if(this.connecting===f)this.connecting=null};return f.then(J,J),f}get isDisposed(){return this.disposed}close(){this.disposed=!0,this.socket?.end(),this.socket=null,this.failPending()}forceDisconnect(){let f=this.socket;if(!f)return;this.socket=null,f.destroy(),this.failPending()}failPending(){if(this.pending.size===0)return;let f=Error("daemon connection closed");for(let J of this.pending.values())J.reject(f);this.pending.clear()}on(f,J){let Y=this.handlers.get(f);if(!Y)Y=new Set,this.handlers.set(f,Y);return Y.add(J),()=>{if(Y?.delete(J),Y?.size===0)this.handlers.delete(f)}}onChannel(f,J){return this.on(f,(Y)=>J(Y.payload))}subscribe(f={}){let J={};if(f.channels)J.channels=f.channels;if(f.role)J.role=f.role;return this.request("subscribe",J)}onLifecycle(f,J){let Y=this.lifecycleHandlers.get(f);if(!Y)Y=new Set,this.lifecycleHandlers.set(f,Y);return Y.add(J),()=>{if(Y?.delete(J),Y?.size===0)this.lifecycleHandlers.delete(f)}}async request(f,J){await this.connect();let Y=this.socket;if(!Y)throw Error("daemon connection is not open");let z=String(this.nextId++),G=new Promise((X,q)=>{this.pending.set(z,{resolve:(Q)=>X(Q),reject:q})});return Y.write(PG({type:"request",id:z,name:f,payload:J})),G}openSocket(){return new Promise((f,J)=>{let Y=wM(this.socketPath);this.socket=Y;let z=()=>{Y.off("error",G),f()},G=(q)=>{if(Y.off("connect",z),this.socket===Y)this.socket=null;J(q)};Y.once("connect",z),Y.once("error",G);let X=new hM("utf8");this.buffer="",Y.on("data",(q)=>this.onData(X.write(q))),Y.on("close",()=>this.onSocketClose(Y))})}onSocketClose(f){if(this.socket!==f)return;this.socket=null,this.failPending(),this.emitLifecycle("close")}emitLifecycle(f){for(let J of this.lifecycleHandlers.get(f)??[])try{J()}catch(Y){console.error(`[kobe] lifecycle handler for "${f}" threw:`,Y)}}onData(f){this.buffer+=f;let J=this.buffer.indexOf(`
19
17
  `);while(J!==-1){let Y=this.buffer.slice(0,J);if(this.buffer=this.buffer.slice(J+1),Y.trim().length>0)this.onLine(Y);J=this.buffer.indexOf(`
20
- `)}}onLine(f){let J;try{J=JSON.parse(f)}catch(z){WY("client-frame",z);return}if(J.type==="event"){this.emit(J);return}if(J.type!=="response")return;let Y=this.pending.get(J.id);if(!Y)return;if(this.pending.delete(J.id),J.error){let z=Error(J.error.message);if(J.error.name)z.name=J.error.name;Y.reject(z)}else Y.resolve(J.payload)}emit(f){for(let J of this.handlers.get(f.name)??[])J(f);for(let J of this.handlers.get("*")??[])J(f)}}var $G=k(()=>{sY();eY()});function NZ(f){return xF.includes(f)}function IW(f,J,Y){switch(J){case"session-start":case"session-end":return"idle";case"turn-start":return"running";case"turn-complete":return"turn_complete";case"turn-failed":return Y?.failure==="rate_limit"||Y?.failure==="billing"?"rate_limited":"error";case"awaiting-input":return Y?.waiting==="permission"?"permission_needed":"running"}}var xF;var yZ=k(()=>{xF=["session-start","turn-start","turn-complete","turn-failed","awaiting-input","session-end"]});function wF(){let f=process.env.KOBE_ENGINE_STATE_TTL_MS;if(f===void 0)return TW;let J=Number(f);return Number.isFinite(J)&&J>0?J:TW}class CH{bus;staleMs;now;activity=new Map;constructor(f,J=wF(),Y=()=>Date.now()){this.bus=f;this.staleMs=J;this.now=Y}report(f,J,Y){let z=this.activity.get(f);if(z?.lapse)clearTimeout(z.lapse);let G=IW(z?.state,J,Y),X=this.now(),q={state:G,detail:Y,at:X};if(G!=="idle"&&G!=="turn_complete")q.lapse=setTimeout(()=>{let Q=this.activity.get(f);if(Q&&Q.at===X)this.publishIdle(f)},this.staleMs),q.lapse.unref?.();this.activity.set(f,q),this.bus.publish("engine-state",this.payload(f,q))}clearTask(f){let J=this.activity.get(f);if(J?.lapse)clearTimeout(J.lapse);if(this.activity.delete(f),J)this.bus.publish("engine-state",{taskId:f,state:"idle",at:this.now()})}snapshotByTask(){let f={};for(let[J,Y]of this.activity)f[J]=this.payload(J,Y);return f}currentNonIdle(){let f=[];for(let[J,Y]of this.activity)if(Y.state!=="idle")f.push(this.payload(J,Y));return f}close(){for(let f of this.activity.values())if(f.lapse)clearTimeout(f.lapse);this.activity.clear()}publishIdle(f){let J={state:"idle",at:this.now()};this.activity.set(f,J),this.bus.publish("engine-state",this.payload(f,J))}payload(f,J){return{taskId:f,state:J.state,...J.detail?{detail:J.detail}:{},at:J.at}}}var TW=600000;var uW=k(()=>{yZ()});import{spawnSync as hF}from"child_process";import{existsSync as PF,statSync as vF}from"fs";import{homedir as mF}from"os";import rG from"path";async function EW(f=cF){let J=[],Y=(B)=>{if(!B)return;return J.push(B),f.fileExists(B)?B:void 0},z=f.which("claude");if(z){if(J.push(`which:${z}`),f.fileExists(z))return z}let G=f.home(),X=Y(rG.join(G,".claude","local","claude"));if(X)return X;let q=f.env("NVM_BIN");if(q){let B=Y(rG.join(q,"claude"));if(B)return B}let Q=rG.join(G,".nvm","versions","node"),H=f.readdir(Q).sort().reverse();for(let B of H){let V=Y(rG.join(Q,B,"bin","claude"));if(V)return V}for(let B of["/opt/homebrew/bin/claude","/usr/local/bin/claude","/usr/bin/claude","/bin/claude"]){let V=Y(B);if(V)return V}for(let B of[".local/bin/claude",".npm-global/bin/claude",".yarn/bin/claude",".bun/bin/claude","bin/claude"]){let V=Y(rG.join(G,B));if(V)return V}throw new bZ(J)}var bZ,cF;var xW=k(()=>{bZ=class bZ extends Error{checkedPaths;constructor(f){super(`Claude Code binary not found. Checked: ${f.join(", ")}. Ensure 'claude' is on PATH, or install at ~/.claude/local/claude.`);this.name="ClaudeBinaryNotFoundError",this.checkedPaths=f}};cF={fileExists(f){try{return vF(f).isFile()}catch{return!1}},env(f){return process.env[f]},home(){return mF()},which(f){let J=process.platform==="win32"?"where":"which",Y=hF(J,[f],{encoding:"utf8"});if(Y.status!==0)return;let z=Y.stdout.split(`
21
- `).map((G)=>G.trim()).filter(Boolean)[0];if(!z)return;if(z.startsWith("claude:")&&z.includes("aliased to")){let G=z.split("aliased to")[1]?.trim();return G&&PF(G)?G:void 0}return z},readdir(f){try{return pX("fs").readdirSync(f)}catch{return[]}}}});import{spawnSync as nF}from"child_process";import{existsSync as dF,statSync as iF}from"fs";import{homedir as lF}from"os";import wW from"path";async function hW(f=aF){let J=[],Y=(q)=>{if(!q)return;return J.push(q),f.fileExists(q)?q:void 0},z=f.which("codex");if(z){if(J.push(`which:${z}`),f.fileExists(z))return z}let G=f.home();for(let q of["/opt/homebrew/bin/codex","/usr/local/bin/codex","/usr/bin/codex","/bin/codex"]){let Q=Y(q);if(Q)return Q}let X=f.env("NVM_BIN");if(X){let q=Y(wW.join(X,"codex"));if(q)return q}for(let q of[".local/bin/codex",".bun/bin/codex","bin/codex"]){let Q=Y(wW.join(G,q));if(Q)return Q}throw new SZ(J)}var SZ,aF;var PW=k(()=>{SZ=class SZ extends Error{checkedPaths;constructor(f){super(`Codex CLI binary not found. Checked: ${f.join(", ")}. Ensure 'codex' is on PATH (e.g. \`brew install codex\` or the official installer).`);this.name="CodexBinaryNotFoundError",this.checkedPaths=f}};aF={fileExists(f){try{return iF(f).isFile()}catch{return!1}},env(f){return process.env[f]},home(){return lF()},which(f){let J=process.platform==="win32"?"where":"which",Y=nF(J,[f],{encoding:"utf8"});if(Y.status!==0)return;let z=Y.stdout.split(`
22
- `).map((G)=>G.trim()).filter(Boolean)[0];if(!z)return;if(z.startsWith("codex:")&&z.includes("aliased to")){let G=z.split("aliased to")[1]?.trim();return G&&dF(G)?G:void 0}return z},readdir(f){try{return pX("fs").readdirSync(f)}catch{return[]}}}});import{spawnSync as $F}from"child_process";import{existsSync as rF,statSync as pF}from"fs";import{homedir as _F}from"os";import VY from"path";async function vW(f=oF){let J=[],Y=(V)=>{if(!V)return;return J.push(V),f.fileExists(V)?V:void 0},z=f.which("copilot");if(z){if(J.push(`which:${z}`),f.fileExists(z))return z}let G=f.platform()==="win32"?["copilot.exe","copilot.cmd","copilot"]:["copilot"],X=(V)=>{if(!V)return;for(let j of G){let U=Y(VY.join(V,j));if(U)return U}return};for(let V of["/opt/homebrew/bin","/usr/local/bin","/usr/bin","/bin"]){let j=X(V);if(j)return j}let q=f.env("NVM_BIN"),Q=X(q);if(Q)return Q;let H=f.home(),B=[VY.join(H,".npm-global/bin"),VY.join(H,".local/bin"),VY.join(H,".bun/bin"),VY.join(H,"bin")];if(f.platform()==="win32"){let V=f.env("APPDATA"),j=f.env("LOCALAPPDATA");if(B.unshift(VY.join(H,"AppData/Roaming/npm")),V)B.unshift(VY.join(V,"npm"));if(j)B.unshift(VY.join(j,"npm"))}for(let V of B){let j=X(V);if(j)return j}throw new IZ(J)}var IZ,oF;var mW=k(()=>{IZ=class IZ extends Error{checkedPaths;constructor(f){super(`GitHub Copilot CLI binary not found. Checked: ${f.join(", ")}. Ensure 'copilot' is on PATH (for example \`npm install -g @github/copilot\` or \`brew install copilot-cli\`).`);this.name="CopilotBinaryNotFoundError",this.checkedPaths=f}};oF={fileExists(f){try{return pF(f).isFile()}catch{return!1}},env(f){return process.env[f]},home(){return _F()},which(f){let J=process.platform==="win32"?"where":"which",Y=$F(J,[f],{encoding:"utf8"});if(Y.status!==0)return;let z=Y.stdout.split(`
23
- `).map((G)=>G.trim()).filter(Boolean)[0];if(!z)return;if(z.startsWith("copilot:")&&z.includes("aliased to")){let G=z.split("aliased to")[1]?.trim();return G&&rF(G)?G:void 0}return z},platform(){return process.platform}}});import{readFileSync as sF,statSync as tF}from"fs";import{homedir as eF}from"os";import KY from"path";function f3(f,J){let Y=f("CLAUDE_CONFIG_DIR")?.trim();if(Y)return KY.join(Y,".claude.json");return KY.join(J,".claude.json")}function J3(f,J){let z=f("CODEX_HOME")?.trim()??KY.join(J,".codex");return KY.join(z,"auth.json")}function Y3(f,J){let z=f("COPILOT_HOME")?.trim()??KY.join(J,".copilot");return KY.join(z,"config.json")}function z3(f){let J=f.split(".");if(J.length!==3)return null;let Y=J[1];if(!Y)return null;let z=Y.replace(/-/g,"+").replace(/_/g,"/"),G=z+"=".repeat((4-z.length%4)%4);try{let X=Buffer.from(G,"base64").toString("utf8"),q=JSON.parse(X);return typeof q==="object"&&q!==null?q:null}catch{return null}}async function uZ(f){try{return{found:!0,path:await f()}}catch(J){if(J instanceof bZ||J instanceof SZ||J instanceof IZ)return{found:!1,error:"not found on PATH"};return{found:!1,error:J instanceof Error?J.message:String(J)}}}async function cW(f){return(await Promise.all([["claude",()=>f.findClaudeBinary()],["codex",()=>f.findCodexBinary()],["copilot",()=>f.findCopilotBinary()]].map(async([z,G])=>(await uZ(G)).found?z:null))).filter((z)=>z!==null)}function G3(f=cz){if(f!==cz)return cW(f);if(TZ)return TZ;let J=cW(f).catch((Y)=>{throw TZ=null,Y});return TZ=J,J}async function lJ(f=cz){return[...await G3(f),...sQ()]}async function EZ(f=cz){let J=await uZ(()=>f.findClaudeBinary()),Y=f3(f.env,f.home()),z;try{z=f.readFile(Y)}catch(H){return{binary:J,account:{kind:"none"},accountError:`read ${Y}: ${H instanceof Error?H.message:String(H)}`}}if(z===null)return{binary:J,account:{kind:"none"}};let G;try{G=JSON.parse(z)}catch(H){return{binary:J,account:{kind:"none"},accountError:`parse ${Y}: ${H instanceof Error?H.message:String(H)}`}}let X=G?.oauthAccount;if(!X||typeof X!=="object")return{binary:J,account:{kind:"none"}};let q=X,Q=typeof q.emailAddress==="string"?q.emailAddress:void 0;if(!Q)return{binary:J,account:{kind:"none"}};return{binary:J,account:{kind:"oauth",email:Q,organization:typeof q.organizationName==="string"?q.organizationName:void 0,displayName:typeof q.displayName==="string"?q.displayName:void 0,billingType:typeof q.billingType==="string"?q.billingType:void 0}}}async function xZ(f=cz){let J=await uZ(()=>f.findCodexBinary()),Y=J3(f.env,f.home()),z;try{z=f.readFile(Y)}catch(B){return{binary:J,account:{kind:"none"},accountError:`read ${Y}: ${B instanceof Error?B.message:String(B)}`}}if(z===null)return{binary:J,account:{kind:"none"}};let G;try{G=JSON.parse(z)}catch(B){return{binary:J,account:{kind:"none"},accountError:`parse ${Y}: ${B instanceof Error?B.message:String(B)}`}}let X=G??{},q=X.tokens,Q=typeof q?.id_token==="string"?q.id_token:void 0;if(Q){let B=z3(Q);if(!B)return{binary:J,account:{kind:"none"},accountError:"codex id_token: malformed JWT"};let V=typeof B.email==="string"?B.email:void 0,j=B["https://api.openai.com/auth"],U=typeof j==="object"&&j!==null&&!Array.isArray(j)?j:void 0,L=typeof U?.chatgpt_plan_type==="string"?U.chatgpt_plan_type:void 0;if(V)return{binary:J,account:{kind:"chatgpt",email:V,plan:L}};return{binary:J,account:{kind:"none"},accountError:"codex id_token: no email claim"}}let H=X.OPENAI_API_KEY;if(typeof H==="string"&&H.length>0)return{binary:J,account:{kind:"apikey"}};return{binary:J,account:{kind:"none"}}}async function wZ(f=cz){let J=await uZ(()=>f.findCopilotBinary());for(let X of["COPILOT_GITHUB_TOKEN","GH_TOKEN","GITHUB_TOKEN"])if(f.env(X)?.trim())return{binary:J,account:{kind:"token",source:X}};let Y=Y3(f.env,f.home()),z;try{z=f.readFile(Y)}catch(X){return{binary:J,account:{kind:"none"},accountError:`read ${Y}: ${X instanceof Error?X.message:String(X)}`}}if(z===null)return{binary:J,account:{kind:"none"}};let G;try{G=JSON.parse(z)}catch(X){return{binary:J,account:{kind:"none"},accountError:`parse ${Y}: ${X instanceof Error?X.message:String(X)}`}}if(!kH(G))return{binary:J,account:{kind:"none"}};if(nW(G,["github_token","oauth_token","access_token","token","selectedUser","currentUser","user"]))return{binary:J,account:{kind:"oauth"}};return{binary:J,account:{kind:"none"}}}function kH(f){return typeof f==="object"&&f!==null&&!Array.isArray(f)}function nW(f,J,Y=0){if(Y>4||!kH(f))return!1;for(let[z,G]of Object.entries(f)){if(J.includes(z)&&typeof G==="string"&&G.length>0)return!0;if(kH(G)&&nW(G,J,Y+1))return!0}return!1}var cz,TZ=null;var fz=k(()=>{Of();xW();PW();mW();cz={readFile(f){try{tF(f)}catch(J){if(J.code==="ENOENT")return null;throw J}return sF(f,"utf8")},env(f){return process.env[f]},home(){return eF()},findClaudeBinary(){return EW()},findCodexBinary(){return hW()},findCopilotBinary(){return vW()}}});function dW(f){if(typeof f==="string")return f.length>0?[{type:"text",text:f}]:[];if(!Array.isArray(f))return[];let J=[];for(let Y of f){if(typeof Y==="string"){if(Y.length>0)J.push({type:"text",text:Y});continue}if(!Y||typeof Y!=="object")continue;let z=Y;if(z.type==="text"&&typeof z.text==="string"){J.push({type:"text",text:z.text});continue}if(z.type==="tool_use"){J.push({type:"tool_call",callId:typeof z.id==="string"?z.id:"",name:typeof z.name==="string"?z.name:"",input:z.input});continue}if(z.type==="tool_result"){J.push({type:"tool_result",callId:typeof z.tool_use_id==="string"?z.tool_use_id:"",output:z.content,isError:z.is_error===!0});continue}if(z.type==="thinking"&&typeof z.thinking==="string")J.push({type:"thinking",text:z.thinking})}return J}function iW(f){return f.isMeta===!0||f.isCompactSummary===!0}function lW(f){if(f.length===0)return!1;for(let J of f){if(J.type!=="text")return!1;let Y=J.text.trim();if(!Y.startsWith("<command-name>")&&!Y.startsWith("<command-message>")&&!Y.startsWith("<local-command"))return!1}return!0}import{appendFile as Hu,mkdir as Bu,readFile as X3,readdir as NH,stat as Z3,unlink as ju,writeFile as Wu}from"fs/promises";import{homedir as aW}from"os";import hZ from"path";function Q3(f){return f.replace(/[/.]/g,"-")}async function pG(f){if(!f)return[];let J=hZ.join(aW(),".claude","projects",Q3(f)),Y;try{Y=await NH(J)}catch{return[]}let z=[];for(let G of Y){if(!G.endsWith(".jsonl"))continue;let X=hZ.join(J,G),q=0;try{q=(await Z3(X)).mtimeMs}catch{}z.push({sessionId:G.slice(0,-6),path:X,mtimeMs:q})}return z.sort((G,X)=>X.mtimeMs-G.mtimeMs),z}async function $W(f){return(await pG(f))[0]?.mtimeMs??0}async function rW(f,J=q3){let Y=J.projectsDir(),z=await J.readdir(Y);for(let G of z){let X=hZ.join(Y,G,`${f}.jsonl`),q;try{q=await J.readFile(X)}catch{continue}return H3(B3(q,f))}return[]}function H3(f){return f.map((J,Y)=>({msg:J,idx:Y})).sort((J,Y)=>{if(J.msg.timestamp<Y.msg.timestamp)return-1;if(J.msg.timestamp>Y.msg.timestamp)return 1;return J.idx-Y.idx}).map((J)=>J.msg)}function B3(f,J){let Y=[];for(let z of f.split(`
24
- `)){let G=z.trim();if(!G)continue;let X;try{X=JSON.parse(G)}catch{continue}if(!yH(X))continue;let q=j3(X,J);if(q)Y.push(q)}return Y}function j3(f,J){if(iW(f))return null;let Y=yH(f.message)?f.message:f,z=Y.role;if(z!=="user"&&z!=="assistant"&&z!=="system")return null;if(!("content"in Y))return null;let G=dW(Y.content);if(z==="user"&&lW(G))return null;let X=typeof f.timestamp==="string"?f.timestamp:new Date().toISOString(),q=typeof f.sessionId==="string"?f.sessionId:J,Q=W3(Y.usage);return Q?{role:z,blocks:G,timestamp:X,sessionId:q,usage:Q}:{role:z,blocks:G,timestamp:X,sessionId:q}}function W3(f){if(!yH(f))return;let J=typeof f.input_tokens==="number"?f.input_tokens:void 0,Y=typeof f.output_tokens==="number"?f.output_tokens:void 0;if(J===void 0||Y===void 0)return;let z=typeof f.cache_read_input_tokens==="number"?f.cache_read_input_tokens:void 0,G=typeof f.cache_creation_input_tokens==="number"?f.cache_creation_input_tokens:void 0;return{input_tokens:J,output_tokens:Y,...z!==void 0?{cache_read_input_tokens:z}:{},...G!==void 0?{cache_creation_input_tokens:G}:{}}}function yH(f){return typeof f==="object"&&f!==null&&!Array.isArray(f)}var q3;var bH=k(()=>{q3={projectsDir(){return hZ.join(aW(),".claude","projects")},async readdir(f){try{return await NH(f)}catch{return[]}},async readFile(f){return await X3(f,"utf8")},async pathExists(f){try{return await NH(f),!0}catch{return!1}}}});import{fileURLToPath as _W}from"url";function Cf(){if(import.meta.url.endsWith(".js"))return["kobe"];let J=_W(new URL("./index.ts",import.meta.url)),Y=_W(import.meta.resolve("@opentui/solid/preload"));return[process.execPath,"--preload",Y,"--conditions=browser",J]}var aJ=()=>{};function SH(f,J={}){if(J.bareSafe&&V3.test(f))return f;return`'${f.replace(/'/g,"'\\''")}'`}function PZ(f,J={}){return f.map((Y)=>SH(Y,J)).join(" ")}var V3;var IH=k(()=>{V3=/^[A-Za-z0-9_/.:=-]+$/});function sG(f){return`kobe-hidden-${f.replace(/[^A-Za-z0-9_-]/g,"")||"session"}`}function sW(f){let J=Number.parseInt(f.replace(/^@/,""),10);return Number.isFinite(J)&&J>=0?1000+J:1000}function zz(f){if(!Number.isFinite(f))return Jz;return Math.max(K3,Math.min(U3,Math.round(f)))}function pJ(f){if(!Number.isFinite(f))return null;return Math.max(D3,Math.min(L3,Math.round(f)))}function Xf(f){return SH(f)}function g1(f){return PZ(f)}function R1(f){return`${f}; __rc=$?; [ "$__rc" -ne 0 ] && printf '${"\\n \u26A0 Engine exited (code %s). Check Settings \u2192 Engines, fix the launch command, then press R to relaunch.\\n\\n"}' "$__rc"; exec "\${SHELL:-/bin/sh}"`}function TH(f){return`'${f.replace(/'/g,"'\\''")}'`}function tW(){return`clear; printf ${TH("\\n No task selected\\n\\n Press N to create a task, or pick one on the left.\\n\\n")}; exec "\${SHELL:-/bin/sh}"`}function eW(f,J){let Y=R1(f),z=J?.initScript?.trim();if(!z)return Y;let G=["{",z,"}"].join(`
25
- `);if(J?.markerPath){let X=TH(J.markerPath),q=TH(M3(J.markerPath));return[`if [ ! -f ${X} ]; then`,G,`if [ $? -eq 0 ]; then mkdir -p ${q} && : > ${X}; fi`,"fi",Y].join(`
18
+ `)}}onLine(f){let J;try{J=JSON.parse(f)}catch(z){HY("client-frame",z);return}if(J.type==="event"){this.emit(J);return}if(J.type!=="response")return;let Y=this.pending.get(J.id);if(!Y)return;if(this.pending.delete(J.id),J.error){let z=Error(J.error.message);if(J.error.name)z.name=J.error.name;Y.reject(z)}else Y.resolve(J.payload)}emit(f){for(let J of this.handlers.get(f.name)??[])J(f);for(let J of this.handlers.get("*")??[])J(f)}}var vG=k(()=>{_Y();sY()});function BZ(f){return PM.includes(f)}function m9(f,J,Y){switch(J){case"session-start":case"session-end":return"idle";case"turn-start":return"running";case"turn-complete":return"turn_complete";case"turn-failed":return Y?.failure==="rate_limit"||Y?.failure==="billing"?"rate_limited":"error";case"awaiting-input":return Y?.waiting==="permission"?"permission_needed":"running"}}var PM;var jZ=k(()=>{PM=["session-start","turn-start","turn-complete","turn-failed","awaiting-input","session-end"]});function vM(){let f=process.env.KOBE_ENGINE_STATE_TTL_MS;if(f===void 0)return c9;let J=Number(f);return Number.isFinite(J)&&J>0?J:c9}class BH{bus;staleMs;now;activity=new Map;constructor(f,J=vM(),Y=()=>Date.now()){this.bus=f;this.staleMs=J;this.now=Y}report(f,J,Y){let z=this.activity.get(f);if(z?.lapse)clearTimeout(z.lapse);let G=m9(z?.state,J,Y),X=this.now(),q={state:G,detail:Y,at:X};if(G!=="idle"&&G!=="turn_complete")q.lapse=setTimeout(()=>{let Q=this.activity.get(f);if(Q&&Q.at===X)this.publishIdle(f)},this.staleMs),q.lapse.unref?.();this.activity.set(f,q),this.bus.publish("engine-state",this.payload(f,q))}clearTask(f){let J=this.activity.get(f);if(J?.lapse)clearTimeout(J.lapse);if(this.activity.delete(f),J)this.bus.publish("engine-state",{taskId:f,state:"idle",at:this.now()})}snapshotByTask(){let f={};for(let[J,Y]of this.activity)f[J]=this.payload(J,Y);return f}currentNonIdle(){let f=[];for(let[J,Y]of this.activity)if(Y.state!=="idle")f.push(this.payload(J,Y));return f}close(){for(let f of this.activity.values())if(f.lapse)clearTimeout(f.lapse);this.activity.clear()}publishIdle(f){let J={state:"idle",at:this.now()};this.activity.set(f,J),this.bus.publish("engine-state",this.payload(f,J))}payload(f,J){return{taskId:f,state:J.state,...J.detail?{detail:J.detail}:{},at:J.at}}}var c9=600000;var n9=k(()=>{jZ()});import{spawnSync as mM}from"child_process";import{existsSync as cM,statSync as nM}from"fs";import{homedir as dM}from"os";import mG from"path";async function d9(f=iM){let J=[],Y=(B)=>{if(!B)return;return J.push(B),f.fileExists(B)?B:void 0},z=f.which("claude");if(z){if(J.push(`which:${z}`),f.fileExists(z))return z}let G=f.home(),X=Y(mG.join(G,".claude","local","claude"));if(X)return X;let q=f.env("NVM_BIN");if(q){let B=Y(mG.join(q,"claude"));if(B)return B}let Q=mG.join(G,".nvm","versions","node"),H=f.readdir(Q).sort().reverse();for(let B of H){let V=Y(mG.join(Q,B,"bin","claude"));if(V)return V}for(let B of["/opt/homebrew/bin/claude","/usr/local/bin/claude","/usr/bin/claude","/bin/claude"]){let V=Y(B);if(V)return V}for(let B of[".local/bin/claude",".npm-global/bin/claude",".yarn/bin/claude",".bun/bin/claude","bin/claude"]){let V=Y(mG.join(G,B));if(V)return V}throw new WZ(J)}var WZ,iM;var i9=k(()=>{WZ=class WZ extends Error{checkedPaths;constructor(f){super(`Claude Code binary not found. Checked: ${f.join(", ")}. Ensure 'claude' is on PATH, or install at ~/.claude/local/claude.`);this.name="ClaudeBinaryNotFoundError",this.checkedPaths=f}};iM={fileExists(f){try{return nM(f).isFile()}catch{return!1}},env(f){return process.env[f]},home(){return dM()},which(f){let J=process.platform==="win32"?"where":"which",Y=mM(J,[f],{encoding:"utf8"});if(Y.status!==0)return;let z=Y.stdout.split(`
19
+ `).map((G)=>G.trim()).filter(Boolean)[0];if(!z)return;if(z.startsWith("claude:")&&z.includes("aliased to")){let G=z.split("aliased to")[1]?.trim();return G&&cM(G)?G:void 0}return z},readdir(f){try{return _X("fs").readdirSync(f)}catch{return[]}}}});import{spawnSync as lM}from"child_process";import{existsSync as aM,statSync as $M}from"fs";import{homedir as rM}from"os";import l9 from"path";async function a9(f=pM){let J=[],Y=(q)=>{if(!q)return;return J.push(q),f.fileExists(q)?q:void 0},z=f.which("codex");if(z){if(J.push(`which:${z}`),f.fileExists(z))return z}let G=f.home();for(let q of["/opt/homebrew/bin/codex","/usr/local/bin/codex","/usr/bin/codex","/bin/codex"]){let Q=Y(q);if(Q)return Q}let X=f.env("NVM_BIN");if(X){let q=Y(l9.join(X,"codex"));if(q)return q}for(let q of[".local/bin/codex",".bun/bin/codex","bin/codex"]){let Q=Y(l9.join(G,q));if(Q)return Q}throw new VZ(J)}var VZ,pM;var $9=k(()=>{VZ=class VZ extends Error{checkedPaths;constructor(f){super(`Codex CLI binary not found. Checked: ${f.join(", ")}. Ensure 'codex' is on PATH (e.g. \`brew install codex\` or the official installer).`);this.name="CodexBinaryNotFoundError",this.checkedPaths=f}};pM={fileExists(f){try{return $M(f).isFile()}catch{return!1}},env(f){return process.env[f]},home(){return rM()},which(f){let J=process.platform==="win32"?"where":"which",Y=lM(J,[f],{encoding:"utf8"});if(Y.status!==0)return;let z=Y.stdout.split(`
20
+ `).map((G)=>G.trim()).filter(Boolean)[0];if(!z)return;if(z.startsWith("codex:")&&z.includes("aliased to")){let G=z.split("aliased to")[1]?.trim();return G&&aM(G)?G:void 0}return z},readdir(f){try{return _X("fs").readdirSync(f)}catch{return[]}}}});import{spawnSync as _M}from"child_process";import{existsSync as oM,statSync as sM}from"fs";import{homedir as tM}from"os";import BY from"path";async function r9(f=eM){let J=[],Y=(V)=>{if(!V)return;return J.push(V),f.fileExists(V)?V:void 0},z=f.which("copilot");if(z){if(J.push(`which:${z}`),f.fileExists(z))return z}let G=f.platform()==="win32"?["copilot.exe","copilot.cmd","copilot"]:["copilot"],X=(V)=>{if(!V)return;for(let j of G){let U=Y(BY.join(V,j));if(U)return U}return};for(let V of["/opt/homebrew/bin","/usr/local/bin","/usr/bin","/bin"]){let j=X(V);if(j)return j}let q=f.env("NVM_BIN"),Q=X(q);if(Q)return Q;let H=f.home(),B=[BY.join(H,".npm-global/bin"),BY.join(H,".local/bin"),BY.join(H,".bun/bin"),BY.join(H,"bin")];if(f.platform()==="win32"){let V=f.env("APPDATA"),j=f.env("LOCALAPPDATA");if(B.unshift(BY.join(H,"AppData/Roaming/npm")),V)B.unshift(BY.join(V,"npm"));if(j)B.unshift(BY.join(j,"npm"))}for(let V of B){let j=X(V);if(j)return j}throw new KZ(J)}var KZ,eM;var p9=k(()=>{KZ=class KZ extends Error{checkedPaths;constructor(f){super(`GitHub Copilot CLI binary not found. Checked: ${f.join(", ")}. Ensure 'copilot' is on PATH (for example \`npm install -g @github/copilot\` or \`brew install copilot-cli\`).`);this.name="CopilotBinaryNotFoundError",this.checkedPaths=f}};eM={fileExists(f){try{return sM(f).isFile()}catch{return!1}},env(f){return process.env[f]},home(){return tM()},which(f){let J=process.platform==="win32"?"where":"which",Y=_M(J,[f],{encoding:"utf8"});if(Y.status!==0)return;let z=Y.stdout.split(`
21
+ `).map((G)=>G.trim()).filter(Boolean)[0];if(!z)return;if(z.startsWith("copilot:")&&z.includes("aliased to")){let G=z.split("aliased to")[1]?.trim();return G&&oM(G)?G:void 0}return z},platform(){return process.platform}}});import{readFileSync as fF,statSync as JF}from"fs";import{homedir as YF}from"os";import jY from"path";function zF(f,J){let Y=f("CLAUDE_CONFIG_DIR")?.trim();if(Y)return jY.join(Y,".claude.json");return jY.join(J,".claude.json")}function GF(f,J){let z=f("CODEX_HOME")?.trim()??jY.join(J,".codex");return jY.join(z,"auth.json")}function XF(f,J){let z=f("COPILOT_HOME")?.trim()??jY.join(J,".copilot");return jY.join(z,"config.json")}function ZF(f){let J=f.split(".");if(J.length!==3)return null;let Y=J[1];if(!Y)return null;let z=Y.replace(/-/g,"+").replace(/_/g,"/"),G=z+"=".repeat((4-z.length%4)%4);try{let X=Buffer.from(G,"base64").toString("utf8"),q=JSON.parse(X);return typeof q==="object"&&q!==null?q:null}catch{return null}}async function DZ(f){try{return{found:!0,path:await f()}}catch(J){if(J instanceof WZ||J instanceof VZ||J instanceof KZ)return{found:!1,error:"not found on PATH"};return{found:!1,error:J instanceof Error?J.message:String(J)}}}async function _9(f){return(await Promise.all([["claude",()=>f.findClaudeBinary()],["codex",()=>f.findCodexBinary()],["copilot",()=>f.findCopilotBinary()]].map(async([z,G])=>(await DZ(G)).found?z:null))).filter((z)=>z!==null)}function qF(f=wz){if(f!==wz)return _9(f);if(UZ)return UZ;let J=_9(f).catch((Y)=>{throw UZ=null,Y});return UZ=J,J}async function iJ(f=wz){return[...await qF(f),...fH()]}async function LZ(f=wz){let J=await DZ(()=>f.findClaudeBinary()),Y=zF(f.env,f.home()),z;try{z=f.readFile(Y)}catch(H){return{binary:J,account:{kind:"none"},accountError:`read ${Y}: ${H instanceof Error?H.message:String(H)}`}}if(z===null)return{binary:J,account:{kind:"none"}};let G;try{G=JSON.parse(z)}catch(H){return{binary:J,account:{kind:"none"},accountError:`parse ${Y}: ${H instanceof Error?H.message:String(H)}`}}let X=G?.oauthAccount;if(!X||typeof X!=="object")return{binary:J,account:{kind:"none"}};let q=X,Q=typeof q.emailAddress==="string"?q.emailAddress:void 0;if(!Q)return{binary:J,account:{kind:"none"}};return{binary:J,account:{kind:"oauth",email:Q,organization:typeof q.organizationName==="string"?q.organizationName:void 0,displayName:typeof q.displayName==="string"?q.displayName:void 0,billingType:typeof q.billingType==="string"?q.billingType:void 0}}}async function MZ(f=wz){let J=await DZ(()=>f.findCodexBinary()),Y=GF(f.env,f.home()),z;try{z=f.readFile(Y)}catch(B){return{binary:J,account:{kind:"none"},accountError:`read ${Y}: ${B instanceof Error?B.message:String(B)}`}}if(z===null)return{binary:J,account:{kind:"none"}};let G;try{G=JSON.parse(z)}catch(B){return{binary:J,account:{kind:"none"},accountError:`parse ${Y}: ${B instanceof Error?B.message:String(B)}`}}let X=G??{},q=X.tokens,Q=typeof q?.id_token==="string"?q.id_token:void 0;if(Q){let B=ZF(Q);if(!B)return{binary:J,account:{kind:"none"},accountError:"codex id_token: malformed JWT"};let V=typeof B.email==="string"?B.email:void 0,j=B["https://api.openai.com/auth"],U=typeof j==="object"&&j!==null&&!Array.isArray(j)?j:void 0,L=typeof U?.chatgpt_plan_type==="string"?U.chatgpt_plan_type:void 0;if(V)return{binary:J,account:{kind:"chatgpt",email:V,plan:L}};return{binary:J,account:{kind:"none"},accountError:"codex id_token: no email claim"}}let H=X.OPENAI_API_KEY;if(typeof H==="string"&&H.length>0)return{binary:J,account:{kind:"apikey"}};return{binary:J,account:{kind:"none"}}}async function FZ(f=wz){let J=await DZ(()=>f.findCopilotBinary());for(let X of["COPILOT_GITHUB_TOKEN","GH_TOKEN","GITHUB_TOKEN"])if(f.env(X)?.trim())return{binary:J,account:{kind:"token",source:X}};let Y=XF(f.env,f.home()),z;try{z=f.readFile(Y)}catch(X){return{binary:J,account:{kind:"none"},accountError:`read ${Y}: ${X instanceof Error?X.message:String(X)}`}}if(z===null)return{binary:J,account:{kind:"none"}};let G;try{G=JSON.parse(z)}catch(X){return{binary:J,account:{kind:"none"},accountError:`parse ${Y}: ${X instanceof Error?X.message:String(X)}`}}if(!jH(G))return{binary:J,account:{kind:"none"}};if(o9(G,["github_token","oauth_token","access_token","token","selectedUser","currentUser","user"]))return{binary:J,account:{kind:"oauth"}};return{binary:J,account:{kind:"none"}}}function jH(f){return typeof f==="object"&&f!==null&&!Array.isArray(f)}function o9(f,J,Y=0){if(Y>4||!jH(f))return!1;for(let[z,G]of Object.entries(f)){if(J.includes(z)&&typeof G==="string"&&G.length>0)return!0;if(jH(G)&&o9(G,J,Y+1))return!0}return!1}var wz,UZ=null;var tY=k(()=>{Af();i9();$9();p9();wz={readFile(f){try{JF(f)}catch(J){if(J.code==="ENOENT")return null;throw J}return fF(f,"utf8")},env(f){return process.env[f]},home(){return YF()},findClaudeBinary(){return d9()},findCodexBinary(){return a9()},findCopilotBinary(){return r9()}}});function s9(f){if(typeof f==="string")return f.length>0?[{type:"text",text:f}]:[];if(!Array.isArray(f))return[];let J=[];for(let Y of f){if(typeof Y==="string"){if(Y.length>0)J.push({type:"text",text:Y});continue}if(!Y||typeof Y!=="object")continue;let z=Y;if(z.type==="text"&&typeof z.text==="string"){J.push({type:"text",text:z.text});continue}if(z.type==="tool_use"){J.push({type:"tool_call",callId:typeof z.id==="string"?z.id:"",name:typeof z.name==="string"?z.name:"",input:z.input});continue}if(z.type==="tool_result"){J.push({type:"tool_result",callId:typeof z.tool_use_id==="string"?z.tool_use_id:"",output:z.content,isError:z.is_error===!0});continue}if(z.type==="thinking"&&typeof z.thinking==="string")J.push({type:"thinking",text:z.thinking})}return J}function t9(f){return f.isMeta===!0||f.isCompactSummary===!0}function e9(f){if(f.length===0)return!1;for(let J of f){if(J.type!=="text")return!1;let Y=J.text.trim();if(!Y.startsWith("<command-name>")&&!Y.startsWith("<command-message>")&&!Y.startsWith("<local-command"))return!1}return!0}import{appendFile as LT,mkdir as MT,readFile as QF,readdir as WH,stat as HF,unlink as FT,writeFile as OT}from"fs/promises";import{homedir as fW}from"os";import OZ from"path";function jF(f){return f.replace(/[/.]/g,"-")}async function cG(f){if(!f)return[];let J=OZ.join(fW(),".claude","projects",jF(f)),Y;try{Y=await WH(J)}catch{return[]}let z=[];for(let G of Y){if(!G.endsWith(".jsonl"))continue;let X=OZ.join(J,G),q=0;try{q=(await HF(X)).mtimeMs}catch{}z.push({sessionId:G.slice(0,-6),path:X,mtimeMs:q})}return z.sort((G,X)=>X.mtimeMs-G.mtimeMs),z}async function JW(f){return(await cG(f))[0]?.mtimeMs??0}async function YW(f,J=BF){let Y=J.projectsDir(),z=await J.readdir(Y);for(let G of z){let X=OZ.join(Y,G,`${f}.jsonl`),q;try{q=await J.readFile(X)}catch{continue}return WF(VF(q,f))}return[]}function WF(f){return f.map((J,Y)=>({msg:J,idx:Y})).sort((J,Y)=>{if(J.msg.timestamp<Y.msg.timestamp)return-1;if(J.msg.timestamp>Y.msg.timestamp)return 1;return J.idx-Y.idx}).map((J)=>J.msg)}function VF(f,J){let Y=[];for(let z of f.split(`
22
+ `)){let G=z.trim();if(!G)continue;let X;try{X=JSON.parse(G)}catch{continue}if(!VH(X))continue;let q=KF(X,J);if(q)Y.push(q)}return Y}function KF(f,J){if(t9(f))return null;let Y=VH(f.message)?f.message:f,z=Y.role;if(z!=="user"&&z!=="assistant"&&z!=="system")return null;if(!("content"in Y))return null;let G=s9(Y.content);if(z==="user"&&e9(G))return null;let X=typeof f.timestamp==="string"?f.timestamp:new Date().toISOString(),q=typeof f.sessionId==="string"?f.sessionId:J,Q=UF(Y.usage);return Q?{role:z,blocks:G,timestamp:X,sessionId:q,usage:Q}:{role:z,blocks:G,timestamp:X,sessionId:q}}function UF(f){if(!VH(f))return;let J=typeof f.input_tokens==="number"?f.input_tokens:void 0,Y=typeof f.output_tokens==="number"?f.output_tokens:void 0;if(J===void 0||Y===void 0)return;let z=typeof f.cache_read_input_tokens==="number"?f.cache_read_input_tokens:void 0,G=typeof f.cache_creation_input_tokens==="number"?f.cache_creation_input_tokens:void 0;return{input_tokens:J,output_tokens:Y,...z!==void 0?{cache_read_input_tokens:z}:{},...G!==void 0?{cache_creation_input_tokens:G}:{}}}function VH(f){return typeof f==="object"&&f!==null&&!Array.isArray(f)}var BF;var KH=k(()=>{BF={projectsDir(){return OZ.join(fW(),".claude","projects")},async readdir(f){try{return await WH(f)}catch{return[]}},async readFile(f){return await QF(f,"utf8")},async pathExists(f){try{return await WH(f),!0}catch{return!1}}}});import{fileURLToPath as GW}from"url";function Cf(){if(import.meta.url.endsWith(".js"))return["kobe"];let J=GW(new URL("./index.ts",import.meta.url)),Y=GW(import.meta.resolve("@opentui/solid/preload"));return[process.execPath,"--preload",Y,"--conditions=browser",J]}var lJ=()=>{};function UH(f,J={}){if(J.bareSafe&&DF.test(f))return f;return`'${f.replace(/'/g,"'\\''")}'`}function AZ(f,J={}){return f.map((Y)=>UH(Y,J)).join(" ")}var DF;var DH=k(()=>{DF=/^[A-Za-z0-9_/.:=-]+$/});function iG(f){return`kobe-hidden-${f.replace(/[^A-Za-z0-9_-]/g,"")||"session"}`}function ZW(f){let J=Number.parseInt(f.replace(/^@/,""),10);return Number.isFinite(J)&&J>=0?1000+J:1000}function Jz(f){if(!Number.isFinite(f))return eY;return Math.max(LF,Math.min(MF,Math.round(f)))}function rJ(f){if(!Number.isFinite(f))return null;return Math.max(FF,Math.min(OF,Math.round(f)))}function Xf(f){return UH(f)}function g1(f){return AZ(f)}function R1(f){return`${f}; __rc=$?; [ "$__rc" -ne 0 ] && printf '${"\\n \u26A0 Engine exited (code %s). Check Settings \u2192 Engines, fix the launch command, then press R to relaunch.\\n\\n"}' "$__rc"; exec "\${SHELL:-/bin/sh}"`}function LH(f){return`'${f.replace(/'/g,"'\\''")}'`}function qW(){return`clear; printf ${LH("\\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 QW(f,J){let Y=R1(f),z=J?.initScript?.trim();if(!z)return Y;let G=["{",z,"}"].join(`
23
+ `);if(J?.markerPath){let X=LH(J.markerPath),q=LH(AF(J.markerPath));return[`if [ ! -f ${X} ]; then`,G,`if [ $? -eq 0 ]; then mkdir -p ${q} && : > ${X}; fi`,"fi",Y].join(`
26
24
  `)}return[G,Y].join(`
27
- `)}function M3(f){let J=f.lastIndexOf("/");return J<=0?".":f.slice(0,J)}function oW(f){return`cd ${Xf(f)} && while :; do clear; printf "\\033[1m# %s\\033[0m\\n\\n" ${Xf(f)}; git status --short --branch 2>/dev/null | sed 's/^/ /' || true; printf "\\n"; if command -v lsd >/dev/null 2>&1; then lsd --tree --git -I node_modules -I .git --depth 2 .; elif command -v eza >/dev/null 2>&1; then eza --tree --git -L 2 -I 'node_modules|.git' .; elif command -v tree >/dev/null 2>&1; then tree -L 2 -I 'node_modules|.git'; else ls -la; fi; sleep 2; done`}function fV(f){let J=Xf(f.worktree),Y=Xf(f.relPath),z=f.cliInvocation.map(Xf).join(" "),G=`cd ${J} && if ! git diff --quiet HEAD -- ${Y} 2>/dev/null; then git diff HEAD -- ${Y} | { delta --paging=always 2>/dev/null || less -R; }; else bat --style=plain --paging=always ${Y} 2>/dev/null || \${PAGER:-less} ${Y} 2>/dev/null || cat ${Y}; fi`;return`${z} ops --worktree ${J} --preview ${Y} || { ${G}; }`}function JV(f){return`${g1([...f.cliInvocation,"update-page"])}`}function YV(f){let J=f.opener??"open";return[`tmux -L ${Xf(f.tmuxSocket)} capture-pane -Jp -t '#{pane_id}' -S -500`,`grep -oiE 'https?://[^ "'\\''()<>]+'`,"awk '!seen[$0]++'","{ command -v fzf >/dev/null && fzf --reverse || tail -1; }",`xargs -I{} ${J} {}`].join(" | ")}function DY(f,J={}){let Y=[...f,"tasks"];if(J.initialTaskId)Y.push("--initial-task-id",J.initialTaskId);return g1(Y)}function nz(f){if(f.taskId&&f.claudePaneId){let J=f.cliInvocation.map(Xf).join(" "),Y=f.vendor?` --vendor ${Xf(f.vendor)}`:"";return`KOBE_FILETREE_WATCH=1 ${J} ops --task-id ${Xf(f.taskId)} --worktree ${Xf(f.cwd)} --target-pane ${Xf(f.claudePaneId)}${Y} || { ${oW(f.cwd)}; }`}return oW(f.cwd)}var Jz=32,i1="tasks",Yz="claude",GJ="ops",XJ="shell",_G="workspace_aux",uH=4,ZJ="@kobe_hidden_shell_pane",A1="@kobe_hidden_tasks_pane",UY="@kobe_zen_panes",oG="@kobe_zen",$J="@kobe_tasks_width",K3=16,U3=120,vZ=60,tG=50,Gz="@kobe_right_width_pct",rJ="@kobe_ops_height_pct",D3=10,L3=90;var qJ=k(()=>{IH()});import{mkdir as F3,readFile as O3,writeFile as A3}from"fs/promises";import{dirname as g3}from"path";function R3(f){if(typeof f!=="string")return"other";if(f==="rate_limit"||f==="overloaded")return"rate_limit";if(f==="billing_error")return"billing";return"other"}function kJ(f){return!!f&&typeof f==="object"&&!Array.isArray(f)}async function k3(f){try{let J=JSON.parse(await O3(f,"utf8"));return kJ(J)?J:{}}catch{return{}}}function N3(f){if(!kJ(f)||!Array.isArray(f.hooks))return!1;return f.hooks.some((J)=>kJ(J)&&typeof J.command==="string"&&J.command.includes(EH))}function y3(f){if(!kJ(f)||!Array.isArray(f.hooks))return!1;return f.hooks.some((J)=>kJ(J)&&typeof J.command==="string"&&C3.some((Y)=>J.command.includes(Y)))}function b3(f,J){let{hooks:Y,...z}=f,{WorktreeCreate:G,...X}=kJ(Y)?Y:{},Q=(Array.isArray(G)?G:[]).filter((B)=>!N3(B));if(J!==null)Q.push({hooks:[{type:"command",command:J}]});let H={...X};if(Q.length>0)H.WorktreeCreate=Q;return Object.keys(H).length>0?{...z,hooks:H}:{...z}}function S3(f=Cf()){let J={};for(let{event:Y,matcher:z,verb:G}of mZ){let q={hooks:[{type:"command",command:g1([...f,"hook",G])}]};if(z)q.matcher=z;J[Y]=[q]}return J}function zV(f,J,Y=Cf()){let{hooks:z,...G}=f,X=kJ(z)?{...z}:{},q=J?S3(Y):{};for(let{event:Q}of mZ){let B=(Array.isArray(X[Q])?X[Q]:[]).filter((V)=>!y3(V));if(J&&Array.isArray(q[Q]))B.push(...q[Q]);if(B.length>0)X[Q]=B;else delete X[Q]}return Object.keys(X).length>0?{...G,hooks:X}:{...G}}function I3(f=Cf()){return{PostToolUse:[{matcher:"Bash",hooks:[{type:"command",command:g1([...f,"hook",EH])}]}]}}function T3(f){if(!kJ(f)||!Array.isArray(f.hooks))return!1;return f.hooks.some((J)=>kJ(J)&&typeof J.command==="string"&&J.command.includes(EH))}function GV(f,J,Y=Cf()){let{hooks:z,...G}=f,X=kJ(z)?{...z}:{},q="PostToolUse",H=(Array.isArray(X.PostToolUse)?X.PostToolUse:[]).filter((B)=>!T3(B));if(J)H.push(...I3(Y).PostToolUse);if(H.length>0)X.PostToolUse=H;else delete X.PostToolUse;return Object.keys(X).length>0?{...G,hooks:X}:{...G}}class xH{vendor="claude";supportsHooks(){return!0}activityDetailFromPayload(f,J){if(f==="turn-failed")return{failure:R3(J.error_type)};if(f==="awaiting-input")return{waiting:"permission"};return}supportsWorktreeSync(){return!0}async installActivityHooks(f){await this.editSettings(f,(J)=>zV(J,!0))}async removeActivityHooks(f){await this.editSettings(f,(J)=>zV(J,!1))}async removeWorktreeSyncHook(f){await this.editSettings(f,(J)=>b3(J,null))}async installWorktreeWatchHook(f){await this.editSettings(f,(J)=>GV(J,!0))}async removeWorktreeWatchHook(f){await this.editSettings(f,(J)=>GV(J,!1))}async editSettings(f,J){try{let Y=await k3(f),z=J(Y);if(JSON.stringify(z)===JSON.stringify(Y))return;await F3(g3(f),{recursive:!0}),await A3(f,`${JSON.stringify(z,null,2)}
28
- `)}catch{}}}var mZ,Nu,C3,EH="worktree-created";var XV=k(()=>{aJ();qJ();mZ=[{event:"SessionStart",verb:"session-start"},{event:"UserPromptSubmit",verb:"turn-start"},{event:"Stop",verb:"turn-complete"},{event:"StopFailure",verb:"turn-failed"},{event:"Notification",matcher:"permission_prompt",verb:"awaiting-input"},{event:"SessionEnd",verb:"session-end"}],Nu=mZ.map((f)=>f.event);C3=mZ.map((f)=>g1(["hook",f.verb]))});function wH(f){if(typeof f==="string")return f.length>0?[{type:"text",text:f}]:[];if(!Array.isArray(f))return[];let J=[];for(let Y of f){if(typeof Y==="string"){if(Y.length>0)J.push({type:"text",text:Y});continue}if(!u3(Y))continue;let z=typeof Y.type==="string"?Y.type:void 0;if(z==="input_text"||z==="output_text"){let G=typeof Y.text==="string"?Y.text:"";if(G.length>0)J.push({type:"text",text:G});continue}if(z)J.push({type:"text",text:`[codex: ${z}]`})}return J}function u3(f){return typeof f==="object"&&f!==null&&!Array.isArray(f)}function ZV(f){if(f.length===0)return!1;for(let J of f){if(J.type!=="text")return!1;let Y=(J.text??"").trim();if(!E3(Y)&&!x3(Y))return!1}return!0}function E3(f){return f.startsWith("<environment_context>")&&f.endsWith("</environment_context>")}function x3(f){return f.startsWith("# AGENTS.md instructions for ")&&f.includes(`
25
+ `)}function AF(f){let J=f.lastIndexOf("/");return J<=0?".":f.slice(0,J)}function XW(f){return`cd ${Xf(f)} && while :; do clear; printf "\\033[1m# %s\\033[0m\\n\\n" ${Xf(f)}; git status --short --branch 2>/dev/null | sed 's/^/ /' || true; printf "\\n"; if command -v lsd >/dev/null 2>&1; then lsd --tree --git -I node_modules -I .git --depth 2 .; elif command -v eza >/dev/null 2>&1; then eza --tree --git -L 2 -I 'node_modules|.git' .; elif command -v tree >/dev/null 2>&1; then tree -L 2 -I 'node_modules|.git'; else ls -la; fi; sleep 2; done`}function HW(f){let J=Xf(f.worktree),Y=Xf(f.relPath),z=f.cliInvocation.map(Xf).join(" "),G=`cd ${J} && if ! git diff --quiet HEAD -- ${Y} 2>/dev/null; then git diff HEAD -- ${Y} | { delta --paging=always 2>/dev/null || less -R; }; else bat --style=plain --paging=always ${Y} 2>/dev/null || \${PAGER:-less} ${Y} 2>/dev/null || cat ${Y}; fi`;return`${z} ops --worktree ${J} --preview ${Y} || { ${G}; }`}function BW(f){return`${g1([...f.cliInvocation,"update-page"])}`}function jW(f){let J=f.opener??"open";return[`tmux -L ${Xf(f.tmuxSocket)} capture-pane -Jp -t '#{pane_id}' -S -500`,`grep -oiE 'https?://[^ "'\\''()<>]+'`,"awk '!seen[$0]++'","{ command -v fzf >/dev/null && fzf --reverse || tail -1; }",`xargs -I{} ${J} {}`].join(" | ")}function VY(f,J={}){let Y=[...f,"tasks"];if(J.initialTaskId)Y.push("--initial-task-id",J.initialTaskId);return g1(Y)}function hz(f){if(f.taskId&&f.claudePaneId){let J=f.cliInvocation.map(Xf).join(" "),Y=f.vendor?` --vendor ${Xf(f.vendor)}`:"";return`KOBE_FILETREE_WATCH=1 ${J} ops --task-id ${Xf(f.taskId)} --worktree ${Xf(f.cwd)} --target-pane ${Xf(f.claudePaneId)}${Y} || { ${XW(f.cwd)}; }`}return XW(f.cwd)}var eY=32,i1="tasks",fz="claude",fJ="ops",JJ="shell",nG="workspace_aux",MH=4,YJ="@kobe_hidden_shell_pane",A1="@kobe_hidden_tasks_pane",WY="@kobe_zen_panes",dG="@kobe_zen",aJ="@kobe_tasks_width",LF=16,MF=120,gZ=60,lG=50,Yz="@kobe_right_width_pct",$J="@kobe_ops_height_pct",FF=10,OF=90;var zJ=k(()=>{DH()});import{mkdir as gF,readFile as RF,writeFile as CF}from"fs/promises";import{dirname as kF}from"path";function NF(f){if(typeof f!=="string")return"other";if(f==="rate_limit"||f==="overloaded")return"rate_limit";if(f==="billing_error")return"billing";return"other"}function gJ(f){return!!f&&typeof f==="object"&&!Array.isArray(f)}async function bF(f){try{let J=JSON.parse(await RF(f,"utf8"));return gJ(J)?J:{}}catch{return{}}}function SF(f){if(!gJ(f)||!Array.isArray(f.hooks))return!1;return f.hooks.some((J)=>gJ(J)&&typeof J.command==="string"&&J.command.includes(FH))}function IF(f){if(!gJ(f)||!Array.isArray(f.hooks))return!1;return f.hooks.some((J)=>gJ(J)&&typeof J.command==="string"&&yF.some((Y)=>J.command.includes(Y)))}function TF(f,J){let{hooks:Y,...z}=f,{WorktreeCreate:G,...X}=gJ(Y)?Y:{},Q=(Array.isArray(G)?G:[]).filter((B)=>!SF(B));if(J!==null)Q.push({hooks:[{type:"command",command:J}]});let H={...X};if(Q.length>0)H.WorktreeCreate=Q;return Object.keys(H).length>0?{...z,hooks:H}:{...z}}function uF(f=Cf()){let J={};for(let{event:Y,matcher:z,verb:G}of RZ){let q={hooks:[{type:"command",command:g1([...f,"hook",G])}]};if(z)q.matcher=z;J[Y]=[q]}return J}function WW(f,J,Y=Cf()){let{hooks:z,...G}=f,X=gJ(z)?{...z}:{},q=J?uF(Y):{};for(let{event:Q}of RZ){let B=(Array.isArray(X[Q])?X[Q]:[]).filter((V)=>!IF(V));if(J&&Array.isArray(q[Q]))B.push(...q[Q]);if(B.length>0)X[Q]=B;else delete X[Q]}return Object.keys(X).length>0?{...G,hooks:X}:{...G}}function EF(f=Cf()){return{PostToolUse:[{matcher:"Bash",hooks:[{type:"command",command:g1([...f,"hook",FH])}]}]}}function xF(f){if(!gJ(f)||!Array.isArray(f.hooks))return!1;return f.hooks.some((J)=>gJ(J)&&typeof J.command==="string"&&J.command.includes(FH))}function VW(f,J,Y=Cf()){let{hooks:z,...G}=f,X=gJ(z)?{...z}:{},q="PostToolUse",H=(Array.isArray(X.PostToolUse)?X.PostToolUse:[]).filter((B)=>!xF(B));if(J)H.push(...EF(Y).PostToolUse);if(H.length>0)X.PostToolUse=H;else delete X.PostToolUse;return Object.keys(X).length>0?{...G,hooks:X}:{...G}}class OH{vendor="claude";supportsHooks(){return!0}activityDetailFromPayload(f,J){if(f==="turn-failed")return{failure:NF(J.error_type)};if(f==="awaiting-input")return{waiting:"permission"};return}supportsWorktreeSync(){return!0}async installActivityHooks(f){await this.editSettings(f,(J)=>WW(J,!0))}async removeActivityHooks(f){await this.editSettings(f,(J)=>WW(J,!1))}async removeWorktreeSyncHook(f){await this.editSettings(f,(J)=>TF(J,null))}async installWorktreeWatchHook(f){await this.editSettings(f,(J)=>VW(J,!0))}async removeWorktreeWatchHook(f){await this.editSettings(f,(J)=>VW(J,!1))}async editSettings(f,J){try{let Y=await bF(f),z=J(Y);if(JSON.stringify(z)===JSON.stringify(Y))return;await gF(kF(f),{recursive:!0}),await CF(f,`${JSON.stringify(z,null,2)}
26
+ `)}catch{}}}var RZ,xT,yF,FH="worktree-created";var KW=k(()=>{lJ();zJ();RZ=[{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"}],xT=RZ.map((f)=>f.event);yF=RZ.map((f)=>g1(["hook",f.verb]))});function AH(f){if(typeof f==="string")return f.length>0?[{type:"text",text:f}]:[];if(!Array.isArray(f))return[];let J=[];for(let Y of f){if(typeof Y==="string"){if(Y.length>0)J.push({type:"text",text:Y});continue}if(!wF(Y))continue;let z=typeof Y.type==="string"?Y.type:void 0;if(z==="input_text"||z==="output_text"){let G=typeof Y.text==="string"?Y.text:"";if(G.length>0)J.push({type:"text",text:G});continue}if(z)J.push({type:"text",text:`[codex: ${z}]`})}return J}function wF(f){return typeof f==="object"&&f!==null&&!Array.isArray(f)}function UW(f){if(f.length===0)return!1;for(let J of f){if(J.type!=="text")return!1;let Y=(J.text??"").trim();if(!hF(Y)&&!PF(Y))return!1}return!0}function hF(f){return f.startsWith("<environment_context>")&&f.endsWith("</environment_context>")}function PF(f){return f.startsWith("# AGENTS.md instructions for ")&&f.includes(`
29
27
  <INSTRUCTIONS>
30
- `)&&f.endsWith("</INSTRUCTIONS>")}var qV=()=>{};function QV(f,J={}){let Y=hH(f.input_tokens,0),z=hH(f.cached_input_tokens,0),G=hH(f.output_tokens,0),X=Math.max(0,Y-z);if(Y<=0&&G<=0&&z<=0)return;return{input_tokens:X,output_tokens:G,...z>0?{cache_read_input_tokens:z}:{},...w3(J.contextWindowTokens)?{context_window_tokens:J.contextWindowTokens}:{}}}function hH(f,J){return typeof f==="number"&&Number.isFinite(f)?f:J}function w3(f){return typeof f==="number"&&Number.isFinite(f)&&f>0}import{readFile as h3,readdir as P3,stat as v3,unlink as Eu}from"fs/promises";import{homedir as m3}from"os";import Xz from"path";async function cH(f=Zz){let J=f.sessionsDir(),Y=(await f.readdir(J)).sort().reverse(),z=[];for(let G of Y){let X=Xz.join(J,G),q=(await f.readdir(X)).sort().reverse();for(let Q of q){let H=Xz.join(X,Q),B=(await f.readdir(H)).sort().reverse();for(let V of B){let j=Xz.join(H,V),U=(await f.readdir(j)).filter((L)=>L.startsWith("rollout-")&&L.endsWith(".jsonl"));U.sort().reverse();for(let L of U)z.push(Xz.join(j,L))}}}return z}async function c3(f,J=Zz){if(!f)return;let Y=f.toLowerCase(),z=await cH(J);for(let G of z)if(Xz.basename(G).match(WV)?.[1]?.toLowerCase()===Y)return G;return}function n3(f){for(let J of f.split(`
31
- `)){let Y=J.trim();if(!Y)continue;try{let z=JSON.parse(Y);if(z.type==="session_meta")return z.payload?.cwd??""}catch{}return""}return""}async function VV(f,J){let Y=HV.get(J);if(!Y)Y=new Map,HV.set(J,Y);let z=Y.get(f);if(z!==void 0)return z;let G;try{G=await J.readFile(f)}catch{return null}let X=n3(G);if(X)Y.set(f,X);return X}async function KV(f,J=Zz){if(!f)return[];let Y=await cH(J),z=[],G=0;for(let X of Y){if(G>=d3)break;if(G++,await VV(X,J)!==f)continue;let q=Xz.basename(X).match(WV)?.[1];if(q)z.push(q)}return z.reverse()}async function nH(f,J=Zz){if(!f)return null;let Y=await cH(J),z=0;for(let G of Y){if(z>=i3)break;if(z++,await VV(G,J)!==f)continue;try{return{path:G,mtimeMs:(await J.stat(G)).mtimeMs}}catch{}}return null}async function UV(f,J=Zz){return(await nH(f,J))?.mtimeMs??0}async function DV(f,J=Zz){return(await l3(f,J)).messages}async function l3(f,J=Zz){let Y=await c3(f,J);if(!Y)return{messages:[]};let z;try{z=await J.readFile(Y)}catch{return{messages:[]}}let G=a3($3(z,f)),X=s3(z);return{messages:G,...X?{usageMetrics:X}:{}}}function a3(f){return f.map((J,Y)=>({msg:J,idx:Y})).sort((J,Y)=>{if(J.msg.timestamp<Y.msg.timestamp)return-1;if(J.msg.timestamp>Y.msg.timestamp)return 1;return J.idx-Y.idx}).map((J)=>J.msg)}function $3(f,J){let Y=[];for(let z of f.split(`
32
- `)){let G=z.trim();if(!G)continue;let X;try{X=JSON.parse(G)}catch{continue}if(!eG(X))continue;if(X.type!=="response_item")continue;let q=eG(X.payload)?X.payload:void 0;if(!q)continue;let Q=typeof X.timestamp==="string"?X.timestamp:new Date().toISOString(),H=r3(q,Q,J);if(H)Y.push(H)}return Y}function r3(f,J,Y){if(f.type==="message"){let z=f.role;if(z!=="user"&&z!=="assistant"&&z!=="system")return;let G=wH(f.content);if(z==="user"&&ZV(G))return;return{role:z,blocks:G,timestamp:J,sessionId:Y}}if(f.type==="reasoning")return p3(f,J,Y);if(f.type==="function_call")return PH(f,J,Y,{name:mH(f.name,"function_call"),input:vH(f.arguments)});if(f.type==="custom_tool_call")return PH(f,J,Y,{name:mH(f.name,"custom_tool_call"),input:vH(f.input)});if(f.type==="tool_search_call")return PH(f,J,Y,{name:"tool_search_call",input:cZ(f,["type","call_id","status"])});if(f.type==="function_call_output"||f.type==="custom_tool_call_output")return BV(f,J,Y,vH(f.output));if(f.type==="tool_search_output")return BV(f,J,Y,cZ(f,["type","call_id"]));if(f.type==="web_search_call"||f.type==="image_generation_call"||f.type==="local_shell_call")return _3(f,J,Y);return}function p3(f,J,Y){let z=o3(f);if(z.length===0)return;return{role:"assistant",blocks:[{type:"thinking",text:z}],timestamp:J,sessionId:Y}}function PH(f,J,Y,z){let G=typeof f.call_id==="string"?f.call_id:void 0;if(!G)return;return{role:"assistant",blocks:[{type:"tool_call",callId:G,name:z.name,input:z.input}],timestamp:J,sessionId:Y}}function BV(f,J,Y,z){let G=typeof f.call_id==="string"?f.call_id:void 0;if(!G)return;return{role:"user",blocks:[{type:"tool_result",callId:G,output:z,isError:!1}],timestamp:J,sessionId:Y}}function _3(f,J,Y){let z=typeof f.type==="string"?f.type:"tool",G=typeof f.call_id==="string"&&f.call_id.length>0?f.call_id:`${z}:${J}`,X=mH(f.name,z),q=cZ(f,["type","call_id","status"]),Q=cZ(f,["type","call_id"]);return{role:"assistant",timestamp:J,sessionId:Y,blocks:[{type:"tool_call",callId:G,name:X,input:q},{type:"tool_result",callId:G,output:Q,isError:!1}]}}function o3(f){let J=jV(f.content);if(J.length>0)return J;let Y=typeof f.text==="string"?f.text:"";if(Y.length>0)return Y;return jV(f.summary)}function jV(f){if(typeof f==="string")return f;if(!Array.isArray(f))return"";let J=[];for(let Y of f){if(typeof Y==="string"){J.push(Y);continue}if(!eG(Y))continue;let z=typeof Y.text==="string"?Y.text:"";if(z.length>0)J.push(z)}return J.join("")}function cZ(f,J){let Y={};for(let[z,G]of Object.entries(f))if(!J.includes(z))Y[z]=G;return Y}function mH(f,J){return typeof f==="string"&&f.length>0?f:J}function vH(f){if(typeof f!=="string")return f;try{return JSON.parse(f)}catch{return f}}function s3(f){let J,Y=null;for(let z of f.split(`
33
- `)){let G=z.trim();if(!G)continue;let X;try{X=JSON.parse(G)}catch{continue}if(!eG(X))continue;let q=typeof X.timestamp==="string"?t3(X.timestamp):null;if(X.type==="response_item")continue;if(X.type!=="turn.completed")continue;let Q=eG(X.usage)?X.usage:void 0;if(!Q)continue;let H=QV(Q);if(!H)continue;if(q!==null&&(Y===null||q>Y))Y=q,J=H;else if(Y===null)J=H}return J}function t3(f){let J=new Date(f).getTime();return Number.isFinite(J)?J:null}function eG(f){return typeof f==="object"&&f!==null&&!Array.isArray(f)}var Zz,WV,HV,d3=200,i3=12;var dH=k(()=>{qV();Zz={sessionsDir(){return Xz.join(m3(),".codex","sessions")},async readdir(f){try{return await P3(f)}catch{return[]}},async readFile(f){return await h3(f,"utf8")},stat:v3};WV=/([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})\.jsonl$/i;HV=new WeakMap});function MV(f){if(!nZ(f))return;let J=nZ(f.modelMetrics)?f.modelMetrics:void 0;if(!J)return;let Y=0,z=0,G=0;for(let q of Object.values(J)){if(!nZ(q)||!nZ(q.usage))continue;Y+=dZ(q.usage.inputTokens,0),z+=dZ(q.usage.outputTokens,0),G+=dZ(q.usage.cacheReadTokens,0)}let X=dZ(f.currentTokens,0);if(Y===0&&z===0&&G===0&&X===0)return;return{input_tokens:Y,output_tokens:z,...G>0?{cache_read_input_tokens:G}:{},...X>0?{context_tokens:X}:{}}}function nZ(f){return typeof f==="object"&&f!==null&&!Array.isArray(f)}function dZ(f,J){return typeof f==="number"&&Number.isFinite(f)?f:J}import{readFile as e3,readdir as fO,rm as JO,stat as YO}from"fs/promises";import{homedir as zO}from"os";import LY from"path";async function lH(f=qz){let J=LY.join(f.copilotDir(),"session-state");return(await f.readdir(J)).map((z)=>LY.join(J,z))}async function FV(f,J=qz){let Y=[];for(let z of await lH(J)){let G=await aH(z,J);if(G.cwd!==f)continue;Y.push({id:G.id??LY.basename(z),updatedAt:G.updatedAt??""})}return Y.sort((z,G)=>z.updatedAt.localeCompare(G.updatedAt)).map((z)=>z.id)}async function OV(f,J=qz){if(!f)return 0;let Y=0;for(let z of await lH(J)){if((await aH(z,J)).cwd!==f)continue;try{let{mtimeMs:X}=await J.stat(LY.join(z,"events.jsonl"));if(X>Y)Y=X}catch{}}return Y}async function GO(f,J=qz){let Y=await XO(f,J);if(!Y)return{messages:[]};let z=await J.readFile(LY.join(Y,"events.jsonl")).catch(()=>""),G=qO(z,f);return{messages:G.messages,...G.usageMetrics?{usageMetrics:G.usageMetrics}:{}}}async function AV(f,J=qz){return(await GO(f,J)).messages}async function XO(f,J=qz){for(let Y of await lH(J)){if(LY.basename(Y)===f)return Y;let z=await aH(Y,J);if(z.id===f||z.name?.toLowerCase()===f.toLowerCase())return Y}return}async function aH(f,J=qz){let Y=await J.readFile(LY.join(f,"workspace.yaml")).catch(()=>"");return ZO(Y)}function ZO(f){let J={};for(let Y of f.split(`
34
- `)){let z=Y.match(/^([A-Za-z_]+):\s*(.*)$/);if(!z)continue;let G=z[1],X=z[2]??"";if(X.startsWith('"')&&X.endsWith('"'))X=X.slice(1,-1).replace(/\\"/g,'"');J[G]=X}return{id:J.id,cwd:J.cwd,name:J.name,updatedAt:J.updated_at,createdAt:J.created_at}}function qO(f,J){let Y=[],z=new Map,G=J,X,q=null;for(let Q of f.split(`
35
- `)){let H=Q.trim();if(!H)continue;let B;try{B=JSON.parse(H)}catch{continue}if(!iH(B)||typeof B.type!=="string")continue;let V=typeof B.timestamp==="string"?B.timestamp:new Date().toISOString(),j=iH(B.data)?B.data:{};if(B.type==="session.start"){let U=typeof j.sessionId==="string"?j.sessionId:void 0;if(U)G=U;continue}if(B.type==="user.message"){let U=typeof j.content==="string"?j.content:"";if(!U)continue;if(!q)q=Buffer.from(U.slice(0,QO),"utf8").toString("utf8");Y.push({role:"user",blocks:[{type:"text",text:U}],timestamp:V,sessionId:G});continue}if(B.type==="assistant.message"){let U=[],L=typeof j.content==="string"?j.content:"";if(L)U.push({type:"text",text:L});let O=Array.isArray(j.toolRequests)?j.toolRequests:[];for(let M of O){if(!iH(M))continue;let R=typeof M.id==="string"?M.id:typeof M.toolCallId==="string"?M.toolCallId:"tool",S=typeof M.name==="string"?M.name:typeof M.toolName==="string"?M.toolName:"tool";U.push({type:"tool_call",callId:R,name:S,input:M.arguments??{}})}if(U.length>0)Y.push({role:"assistant",blocks:U,timestamp:V,sessionId:G});continue}if(B.type==="tool.execution_start"){let U=typeof j.toolCallId==="string"?j.toolCallId:void 0,L=typeof j.toolName==="string"?j.toolName:"tool";if(U)z.set(U,L);continue}if(B.type==="tool.execution_complete"){let U=typeof j.toolCallId==="string"?j.toolCallId:void 0;if(!U)continue;let L=z.get(U)??(typeof j.toolName==="string"?j.toolName:"tool"),O=j.result??(j.success===!1?{success:!1}:void 0);Y.push({role:"assistant",blocks:[{type:"tool_result",callId:U,output:O,isError:j.success===!1}],timestamp:V,sessionId:G});continue}if(B.type==="session.shutdown")X=MV(j)}return{messages:Y,usageMetrics:X,firstUserMessage:q}}function iH(f){return typeof f==="object"&&f!==null&&!Array.isArray(f)}var qz,QO=200;var gV=k(()=>{qz={copilotDir(){let f=process.env.COPILOT_HOME?.trim();if(f)return f;return LY.join(zO(),".copilot")},async readdir(f){try{return await fO(f)}catch{return[]}},async readFile(f){return await e3(f,"utf8")},stat:YO,async rm(f){await JO(f,{recursive:!0,force:!0})}}});function $H(f){return pf(f).createHookAdapter()}class fX{vendor;constructor(f){this.vendor=f}supportsHooks(){return!1}activityDetailFromPayload(){return}async installActivityHooks(){}async removeActivityHooks(){}supportsWorktreeSync(){return!1}async removeWorktreeSyncHook(){}async installWorktreeWatchHook(){}async removeWorktreeWatchHook(){}}var rH=k(()=>{MY()});import{readFile as RV}from"fs/promises";class iZ{supportsCompletionMarkers(){return!0}}function CV(f){return pf(f).createTurnDetector()}function WO(f,J="claude",Y=0){let z=null,G=0;for(let X of f.split(`
36
- `)){G++;let q=kV(X);if(!q)continue;let Q=yV(q.message)?q.message:q;if(Q.role!=="assistant")continue;if(!("content"in Q))continue;let H=NV(q,Y),B={id:`claude:${J}:${H}:${G}`,timestampMs:H,source:"claude"};if(!z||B.timestampMs>=z.timestampMs)z=B}return z}function VO(f,J="codex"){let Y=null,z=0;for(let G of f.split(`
37
- `)){z++;let X=kV(G);if(!X||X.type!=="turn.completed")continue;let q=NV(X,0),Q={id:`codex:${J}:${q}:${z}`,timestampMs:q,source:"codex"};if(!Y||Q.timestampMs>=Y.timestampMs)Y=Q}return Y}function kV(f){let J=f.trim();if(!J)return null;try{let Y=JSON.parse(J);return yV(Y)?Y:null}catch{return null}}function NV(f,J){let Y=typeof f.timestamp==="string"?Date.parse(f.timestamp):Number.NaN;return Number.isFinite(Y)?Y:J}function yV(f){return typeof f==="object"&&f!==null&&!Array.isArray(f)}var BO,pH,jO,_H,lZ;var oH=k(()=>{bH();dH();MY();BO={listSessionFiles:(f)=>pG(f),readFile:(f)=>RV(f,"utf8")};pH=class pH extends iZ{deps;vendor="claude";cache=new Map;constructor(f=BO){super();this.deps=f}async latestCompletion(f){let J=await this.deps.listSessionFiles(f),Y=null,z=new Map;for(let G of J.slice(0,4)){let X=this.cache.get(G.path),q;if(X&&G.mtimeMs>0&&X.mtimeMs===G.mtimeMs)q=X.marker;else{let Q=await this.deps.readFile(G.path).catch(()=>"");q=WO(Q,G.path,G.mtimeMs)}if(z.set(G.path,{mtimeMs:G.mtimeMs,marker:q}),q&&(!Y||q.timestampMs>Y.timestampMs))Y=q}return this.cache=z,Y}};jO={findLatestRollout:(f)=>nH(f),readFile:(f)=>RV(f,"utf8")};_H=class _H extends iZ{deps;vendor="codex";cache=null;constructor(f=jO){super();this.deps=f}async latestCompletion(f){if(!f)return null;let J=await this.deps.findLatestRollout(f);if(!J)return null;if(this.cache&&this.cache.path===J.path&&J.mtimeMs>0&&this.cache.mtimeMs===J.mtimeMs)return this.cache.marker;let Y=await this.deps.readFile(J.path).catch(()=>"");if(!Y)return null;let z=VO(Y,J.path);return this.cache={path:J.path,mtimeMs:J.mtimeMs,marker:z},z}};lZ=class lZ extends iZ{vendor;constructor(f){super();this.vendor=f}supportsCompletionMarkers(){return!1}async latestCompletion(){return null}}});function FO(f){return{vendor:f,builtin:!1,displayName:f,defaultCommand:[f],history:KO,detectAccount:async()=>({binary:{found:!1,error:"custom engine: kobe has no account detector for it"},account:{kind:"none"}}),createHookAdapter:()=>new fX(f),createTurnDetector:()=>new lZ(f)}}function pf(f){return Q1(f)?MO[f]:FO(f)}var KO,UO,DO,LO,MO;var MY=k(()=>{U1();fz();bH();XV();dH();gV();rH();oH();KO={async listSessionIdsForWorktree(){return[]},async readHistory(){return[]},async latestTranscriptMtimeForWorktree(){return 0}},UO={async listSessionIdsForWorktree(f){return[...await pG(f)].sort((Y,z)=>Y.mtimeMs-z.mtimeMs).map((Y)=>Y.sessionId)},readHistory:(f)=>rW(f),latestTranscriptMtimeForWorktree:(f)=>$W(f)},DO={listSessionIdsForWorktree:(f)=>KV(f),readHistory:(f)=>DV(f),latestTranscriptMtimeForWorktree:(f)=>UV(f)},LO={listSessionIdsForWorktree:(f)=>FV(f),readHistory:(f)=>AV(f),latestTranscriptMtimeForWorktree:(f)=>OV(f)},MO={claude:{vendor:"claude",builtin:!0,displayName:"Claude",defaultCommand:["claude"],history:UO,detectAccount:(f)=>EZ(f),createHookAdapter:()=>new xH,createTurnDetector:()=>new pH},codex:{vendor:"codex",builtin:!0,displayName:"Codex",defaultCommand:["codex"],effortLevels:["none","low","medium","high","xhigh"],history:DO,detectAccount:(f)=>xZ(f),createHookAdapter:()=>new fX("codex"),createTurnDetector:()=>new _H},copilot:{vendor:"copilot",builtin:!0,displayName:"Copilot",defaultCommand:["copilot"],history:LO,detectAccount:(f)=>wZ(f),createHookAdapter:()=>new fX("copilot"),createTurnDetector:()=>new lZ("copilot")}}});function bV(f){let J=f.find((G)=>G.role==="user");if(!J)return"";let Y=J.blocks.filter((G)=>G.type==="text").map((G)=>G.text).join(" "),z=KW(Y);return z.length>0?Buffer.from(z,"utf8").toString("utf8"):z}async function dz(f,J=Sf){if(!f)return"";let{history:Y}=pf(J),z=await Y.listSessionIdsForWorktree(f);for(let G of z.slice(0,OO)){let X=bV(await Y.readHistory(G));if(X)return X}return""}async function SV(f,J){if(!J)return"";try{return bV(await pf(f).history.readHistory(J))}catch{return""}}var OO=8;var aZ=k(()=>{MY();S1()});function iz(f,J,Y){if(!J)return f;let z=wz(J);return z.ensureReady(),z.wrapCommand(f,{tty:!0,cwd:Y})}function _f(){let f=[];for(let J of["KOBE_HOME_DIR","KOBE_DAEMON_SOCKET_PATH","KOBE_TMUX_SOCKET"]){let Y=process.env[J];if(Y&&Y.length>0)f.push(`${J}=${Xf(Y)}`)}return f.length>0?`${f.join(" ")} `:""}var JX="@kobe_remote";var Qz=k(()=>{e1();qJ()});var XX={};jf(XX,{windowIsSurface:()=>NO,windowCount:()=>RO,tmuxSessionName:()=>Lf,tmuxCommandSequence:()=>tH,tmuxAvailable:()=>NJ,tmuxArgs:()=>Hz,tagPaneRole:()=>uV,tagClaudePane:()=>kO,switchClientBeforeKill:()=>bJ,setWindowOption:()=>AY,setSessionOption:()=>FY,sessionExists:()=>Hf,sendKeys:()=>rZ,sendKeyName:()=>GX,runTmuxSequenceCapturing:()=>YX,runTmuxSequence:()=>Pf,runTmuxCapturing:()=>d0,runTmux:()=>h0,paneIdByRole:()=>fB,newWindow:()=>HJ,killSession:()=>l1,globalTasksPaneWidth:()=>$Z,getSessionOptions:()=>C1,getSessionOption:()=>Bz,getServerOptions:()=>OY,getServerOption:()=>TV,ensureFallbackSession:()=>pZ,currentSessionName:()=>k1,claudePaneIdStrict:()=>$z,claudePaneId:()=>JB,capturePaneById:()=>rz,attachArgv:()=>az,SURFACE_WINDOW_OPTION:()=>YB,PANE_ROLE_OPTION:()=>zX,KOBE_TMUX_SOCKET:()=>QJ,KOBE_HOME_SESSION:()=>EV,CLAUDE_ROLE_OPTION:()=>CO,CHAT_TAB_SESSION_ID_OPTION:()=>yJ});import{homedir as AO}from"os";function Hz(...f){return["tmux","-L",QJ,...f]}function Lf(f){return`kobe-${f.replace(/[^A-Za-z0-9_-]/g,"")}`}function az(f){return Hz("attach-session","-t",`=${f}`)}async function sH(f){if(!f)return"";try{return await new Response(f).text()}catch{return""}}async function h0(f){try{let J=Bun.spawn(Hz(...f),{stdin:"ignore",cwd:lz,stdout:"ignore",stderr:"pipe"}),[Y,z]=await Promise.all([sH(J.stderr),J.exited]);if(z!==0&&Y.trim().length>0)console.error(`[kobe tmux] ${f.join(" ")} (${z}): ${Y.trim()}`);return z}catch{return 1}}async function gO(f){try{return await Bun.spawn(Hz(...f),{stdin:"ignore",cwd:lz,stdout:"ignore",stderr:"ignore"}).exited}catch{return 1}}function tH(f){let J=[];for(let Y of f){if(Y.length===0)continue;if(J.length>0)J.push(";");J.push(...Y)}return J}async function Pf(f){let J=tH(f);return J.length===0?0:h0(J)}async function d0(f){try{let J=Bun.spawn(Hz(...f),{stdin:"ignore",cwd:lz,stdout:"pipe",stderr:"pipe"}),[Y,z,G]=await Promise.all([sH(J.stdout),sH(J.stderr),J.exited]);if(G!==0&&z.trim().length>0)console.error(`[kobe tmux] ${f.join(" ")} (${G}): ${z.trim()}`);return{code:G,stdout:Y}}catch{return{code:1,stdout:""}}}async function YX(f){let J=tH(f);return J.length===0?{code:0,stdout:""}:d0(J)}async function NJ(){try{return await Bun.spawn(["tmux","-V"],{stdin:"ignore",cwd:lz,stdout:"ignore",stderr:"ignore"}).exited===0}catch{return!1}}async function Hf(f){return await gO(["has-session","-t",`=${f}`])===0}async function RO(f){let{code:J,stdout:Y}=await d0(["list-windows","-t",`=${f}`,"-F","#{window_id}"]);if(J!==0)return 0;return Y.split(`
38
- `).filter((z)=>z.trim().length>0).length}async function FY(f,J,Y){await h0(["set-option","-t",f,J,Y])}async function Bz(f,J){let{code:Y,stdout:z}=await d0(["show-options","-v","-t",f,J]);return Y===0?z.trim():""}async function C1(f,J){let Y=Object.fromEntries(J.map((X)=>[X,void 0])),{code:z,stdout:G}=await YX(J.map((X)=>["show-options","-q","-t",f,X]));if(z!==0)return Y;for(let X of G.split(`
39
- `)){let q=X.indexOf(" ");if(q<=0)continue;let Q=X.slice(0,q);if(Q in Y)Y[Q]=X.slice(q+1).trim()}return Y}async function TV(f){let{code:J,stdout:Y}=await d0(["show-options","-sqv",f]);return J===0?Y.trim():""}async function OY(f){let J=Object.fromEntries(f.map((G)=>[G,void 0])),{code:Y,stdout:z}=await YX(f.map((G)=>["show-options","-sq",G]));if(Y!==0)return J;for(let G of z.split(`
40
- `)){let X=G.indexOf(" ");if(X<=0)continue;let q=G.slice(0,X);if(q in J)J[q]=G.slice(X+1).trim()}return J}async function $Z(){let f=await TV($J),J=Number.parseInt(f,10);return Number.isFinite(J)&&J>0?zz(J):Jz}async function uV(f,J){await h0(["set-option","-p","-t",f,zX,J])}async function AY(f,J,Y){await h0(["set-window-option","-t",f,J,Y])}async function kO(f){await uV(f,eH)}async function fB(f,J,Y=!1){let{code:z,stdout:G}=await d0(["list-panes","-t",`=${f}`,"-F",`#{pane_id} #{${zX}}`]);if(z!==0)return"";let X="";for(let q of G.split(`
41
- `)){let[Q,H]=q.split("\t");if(!Q)continue;if(!X)X=Q.trim();if(H?.trim()===J)return Q.trim()}return Y?X:""}async function JB(f){return fB(f,eH,!0)}async function $z(f){return fB(f,eH,!1)}async function rz(f,J){if(!f)return"";let Y=["capture-pane","-t",f,"-p"];if(typeof J==="number"&&J>0)Y.push("-S",String(-J));let{code:z,stdout:G}=await d0(Y);return z===0?G:""}async function rZ(f,J){await h0(["send-keys","-t",f,"-l","--",J])}async function GX(f,J){await h0(["send-keys","-t",f,J])}async function HJ(f,J){let Y=["new-window","-t",`=${f}`,"-c",J.cwd];if(J.name)Y.push("-n",J.name);if(J.surface){Y.push("-P","-F","#{window_id}"),Y.push(J.command);let{code:z,stdout:G}=await d0(Y),X=G.trim();if(z===0&&X)await AY(X,YB,"1");return}Y.push(J.command),await h0(Y)}async function NO(f){let{code:J,stdout:Y}=await d0(["display-message","-t",f,"-p",`#{${YB}}`]);return J===0&&Y.trim()==="1"}async function k1(){let f=["display-message","-p"],J=process.env.TMUX_PANE;if(J&&J.length>0)f.push("-t",J);f.push("#{session_name}");let{code:Y,stdout:z}=await d0(f),G=z.trim();return Y===0&&G.length>0?G:null}async function l1(f){if(!f.startsWith("kobe-hidden-")){let J=sG(f);if(await Hf(J))await h0(["kill-session","-t",`=${J}`])}if(await Hf(f))await h0(["kill-session","-t",`=${f}`])}async function pZ(){let f=EV;if(await Hf(f)){if(await Bz(f,IV)==="tasks")return f;await h0(["kill-session","-t",`=${f}`])}let Y=(await d0(["new-session","-d","-s",f,"-c",lz,"-x","220","-y","50","-P","-F","#{pane_id}",tW()])).stdout.trim();if(Y){let z=await $Z(),X=(await d0(["split-window","-h","-b","-t",Y,"-l",`${z}`,"-c",lz,"-P","-F","#{pane_id}",R1(_f()+DY(Cf()))])).stdout.trim();if(X)await Pf([["set-option","-p","-t",X,zX,"tasks"],["select-pane","-t",X]])}return await FY(f,IV,"tasks"),f}async function bJ(f,J){if(await k1()!==f)return;if(J&&J!==f&&await Hf(J)){await h0(["switch-client","-t",`=${J}`]);return}let z=await pZ();await h0(["switch-client","-t",`=${z}`])}var QJ,lz,zX="@kobe_role",CO,eH="claude",yJ="@kobe_session_id",YB="@kobe_surface",EV="kobe-home",IV="@kobe_home";var Tf=k(()=>{aJ();Qz();qJ();QJ=process.env.KOBE_TMUX_SOCKET?.trim()||"kobe";lz=AO()||"/";CO=zX});async function yO(f,J=xV){let{code:Y,stdout:z}=await J.capture(["list-windows","-t",`=${f}`,"-F",`#{window_index} #{automatic-rename} #{${yJ}}`]);if(Y!==0)return[];let G=[];for(let X of z.split(`
42
- `)){let[q,Q,H]=X.split("\t"),B=Number.parseInt((q??"").trim(),10);if(!Number.isInteger(B))continue;G.push({index:B,sessionId:H?.trim()??"",autoRename:Q?.trim()??""})}return G}async function bO(f,J,Y){let{code:z,stdout:G}=await Y.capture(["show-window-options","-t",`=${f}:${J}`,"automatic-rename"]);return z===0&&/\boff\b/.test(G)}async function SO(f){let{code:J,stdout:Y}=await f.capture(["show-window-options","-g","automatic-rename"]);return J===0&&/\boff\b/.test(Y)}async function IO(f,J,Y,z){return await z.run(["rename-window","-t",`=${f}:${J}`,"--",Y])===0}async function wV(f,J=TO){let Y=0,z=null,G=async(X,q)=>{if(q.autoRename==="1")return!1;if(q.autoRename==="0"){if(z===null)z=await SO(J.runner);if(!z)return!0}return bO(X,q.index,J.runner)};for(let X of f.listTasks()){if(X.archived||X.kind==="main"||!X.worktreePath)continue;let q=Lf(X.id),Q=await yO(q,J.runner);if(Q.length===0)continue;let H=Q.reduce((V,j)=>Math.min(V,j.index),Number.POSITIVE_INFINITY),B=X.vendor??Sf;for(let V of Q)try{if(await G(q,V))continue;let j=V.sessionId?await J.titleFromSessionId(B,V.sessionId):V.index===H?await J.titleFromWorktree(X.worktreePath,B):"";if(j&&await IO(q,V.index,j,J.runner))Y++}catch{}}return Y}var xV,TO;var hV=k(()=>{aZ();Tf();S1();xV={capture:d0,run:h0};TO={runner:xV,titleFromSessionId:SV,titleFromWorktree:dz}});function vV(f){if(f instanceof Error)return f;let J;try{J=typeof f==="string"?f:JSON.stringify(f)}catch{J=String(f)}return Error(J)}function PV(f,J,Y=new Date){let z=vV(J);return`[${Y.toISOString()}] daemon ${f}: ${z.stack??`${z.name}: ${z.message}`}
43
- `}function uO(f,J,Y=new Date){let z=vV(J);return`[${Y.toISOString()}] daemon error [${f}]: ${z.stack??`${z.name}: ${z.message}`}
44
- `}function uf(f,J){process.stderr.write(uO(f,J))}function EO(f,J,Y=new Date){return`[${Y.toISOString()}] daemon [${f}]: ${J}
45
- `}function gY(f,J){process.stderr.write(EO(f,J))}function mV(f=(J)=>process.stderr.write(J)){if(zB||GB)return;zB=(J)=>f(PV("unhandledRejection",J)),GB=(J)=>f(PV("uncaughtException",J)),process.on("unhandledRejection",zB),process.on("uncaughtException",GB)}var zB,GB;async function xO(f,J=dz){let Y=[];for(let z of f.listTasks()){if(z.archived||z.title!==RJ||!z.worktreePath)continue;try{let G=await J(z.worktreePath,z.vendor??Sf);if(!G)continue;let X=f.getTask(z.id);if(!X||X.title!==RJ)continue;await f.setTitle(z.id,G),Y.push({id:z.id,title:G})}catch(G){uf("auto-title-poller",G)}}return Y}function cV(f,J=XB,Y){if(J<=0)return()=>{};let z=!1,X=setInterval(()=>{if(Y&&!Y())return;if(z)return;z=!0,xO(f).then(()=>wV(f)).catch((q)=>uf("auto-title-poller",q)).finally(()=>{z=!1})},J);return X.unref?.(),()=>clearInterval(X)}var XB=4000;var nV=k(()=>{aZ();lG();hV();S1()});class ZB{last=new Map;sinks=new Set;publish(f,J){this.last.set(f,J);let Y={channel:f,payload:J};for(let z of this.sinks)z(Y)}snapshot(){return[...this.last].map(([f,J])=>({channel:f,payload:J}))}onPublish(f){return this.sinks.add(f),()=>{this.sinks.delete(f)}}}function _Z(){return nf()[jz]===!0}var jz="experimental.autoStatus";var ZX=k(()=>{pY()});async function dV(f,J,Y=_Z){if(!Y())return"skipped";let z=f.getTask(J);if(!z)return"skipped";if((z.kind??"task")==="main"||z.archived)return"skipped";if(z.status!=="backlog")return"skipped";return await f.setStatus(J,"in_progress"),"moved"}var iV=k(()=>{ZX()});import{createHash as wO}from"crypto";import{homedir as hO}from"os";import CY from"path";function nO(){return CY.join(process.env.KOBE_HOME_DIR??hO(),".kobe")}function dO(f){let Y=(CY.basename(f)||"repo").replace(/[^a-zA-Z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"repo",z=wO("sha1").update(CY.resolve(f)).digest("hex").slice(0,12);return`${Y}-${z}`}function iO(f){if(!CY.isAbsolute(f))throw Error(`worktreeRootFor: repo must be an absolute path, got: ${f}`);return CY.join(nO(),PO,dO(f))}function lO(f){if(!CY.isAbsolute(f))throw Error(`managedWorktreeRootsFor: repo must be an absolute path, got: ${f}`);return[iO(f),...cO.map((J)=>CY.join(f,J))]}function RY(f){return f.length>1&&f.endsWith("/")?f.slice(0,-1):f}function lV(f,J){return J===f||J.startsWith(`${f}/`)}function aV(f,J){let Y=RY(J),z,G=-1;for(let X of f){if(!X.worktreePath)continue;let q=RY(X.worktreePath);if(lV(q,Y)&&q.length>G)G=q.length,z=X.id}return z}function qB(f,J){let Y=RY(J),z,G=-1;for(let X of f){if(!X.repo)continue;let q=RY(X.repo);if(lV(q,Y)&&q.length>G)G=q.length,z=q}return z}function $V(f,J){let Y=RY(J),z=new Set,G=new Set;for(let X of f){if(X.repo)z.add(RY(X.repo));if(X.worktreePath)G.add(RY(X.worktreePath))}for(let X of z)for(let q of lO(X).map(RY)){let Q=`${q}/`;if(!Y.startsWith(Q))continue;let B=Y.slice(Q.length).split("/")[0];if(!B)continue;let V=`${Q}${B}`;if(G.has(V))return;return{repo:X,worktreePath:V}}return}var PO="worktrees",vO=".kobe/worktrees",mO=".claude/worktrees",cO;var rV=k(()=>{cO=[vO,mO]});function BB(f){return{message:f instanceof Error?f.message:String(f),name:f instanceof Error?f.name:void 0}}async function qX(f,J,Y,z){let G=f.get(J);if(!G)throw Error(`unknown daemon request: ${J}`);return G.handle(jB(Y),z)}function QX(){return new Map([{name:"hello",handle(J,Y){let z=typeof J.protocolVersion==="number"?J.protocolVersion:n1,G=typeof J.minProtocolVersion==="number"?J.minProtocolVersion:z;if(!gZ({localVersion:n1,localMin:jY,remoteVersion:z,remoteMin:G}))throw Error(`daemon is protocol v${n1} (min v${jY}); this client is v${z} (min v${G}). Upgrade your kobe.`);return{protocolVersion:n1,minProtocolVersion:jY,kobeVersion:s0,capabilities:[...AH],daemonPid:Y.daemon.pid,clientId:Y.clientId,tasks:Y.orch.listTasks().map(zJ)}}},{name:"daemon.status",handle(J,Y){return{daemonPid:Y.daemon.pid,kobeVersion:s0,uptimeMs:Date.now()-Y.daemon.startedAt.getTime(),startedAt:Y.daemon.startedAt.toISOString(),attachedClients:Y.daemon.guiCount(),taskCount:Y.orch.listTasks().length,socketPath:Y.daemon.socketPath,webPort:Y.daemon.webPort??null}}},{name:"daemon.stop",async handle(J,Y){return await Y.daemon.stopSoon(),{}}},{name:"task.list",handle(J,Y){return{tasks:Y.orch.listTasks().map(zJ)}}},{name:"task.get",handle(J,Y){let z=Af(J,"taskId"),G=Y.orch.getTask(z);if(!G)throw Error(`task not found: ${z}`);return{task:zJ(G)}}},{name:"task.create",async handle(J,Y){let z=Af(J,"repo"),G=await Y.orch.createTask({repo:z,title:a1(J,"title"),branch:a1(J,"branch"),baseRef:a1(J,"baseRef"),vendor:HB(J,"vendor"),modelEffort:a1(J,"effort")});return{taskId:G.id,task:zJ(G)}}},{name:"task.archive",async handle(J,Y){let z=Af(J,"taskId");return await Y.orch.setArchived(z,QB(J,"archived")),{}}},{name:"task.rename",async handle(J,Y){let z=Af(J,"taskId");return await Y.orch.setTitle(z,Af(J,"title")),{}}},{name:"task.setBranch",async handle(J,Y){let z=Af(J,"taskId");return await Y.orch.setBranch(z,Af(J,"branch")),{}}},{name:"task.setVendor",async handle(J,Y){let z=Af(J,"taskId"),G=HB(J,"vendor");if(!G)throw Error("task.setVendor: vendor is required");return await Y.orch.setVendor(z,G),{}}},{name:"task.delete",async handle(J,Y){let z=Af(J,"taskId");return await Y.orch.deleteTask(z,{force:QB(J,"force")}),Y.activity.clearTask(z),{}}},{name:"task.pin",async handle(J,Y){let z=Af(J,"taskId");return await Y.orch.setPinned(z,QB(J,"pinned")),{}}},{name:"task.move",async handle(J,Y){let z=Af(J,"taskId"),G=Af(J,"direction");if(G!=="up"&&G!=="down")throw Error("direction must be up or down");return await Y.orch.moveTask(z,G==="up"?-1:1),{}}},{name:"task.status",async handle(J,Y){let z=Af(J,"taskId"),G=Af(J,"status");if(!y9(G))throw Error("status must be a TaskStatus");let X=G==="done"?Y.orch.getTask(z):void 0,q=X?.status;if(await Y.orch.setStatus(z,G),G==="done"&&q!=="done"&&X)try{let Q=await Y.issues.mirrorTaskDone(X.repo,z);if(Q)Y.bus.publish("issue.snapshot",Q)}catch(Q){uf("issue-done-mirror",Q)}return{}}},{name:"task.reorder",async handle(J,Y){let z=J.moves;if(!Array.isArray(z)||z.length===0)throw Error("moves must be a non-empty array");if(z.length>500)throw Error("too many moves in one task.reorder batch (max 500)");let G=z.map((X)=>{if(typeof X!=="object"||X===null)throw Error("each move needs taskId and position");let q=X,Q=Af(q,"taskId"),H=q.position;if(typeof H!=="number"||!Number.isFinite(H))throw Error("position must be a finite number");return{taskId:Q,position:H}});return await Y.orch.reorderTasks(G),{}}},{name:"task.ensureMain",async handle(J,Y){let z=Af(J,"repo"),G=await Y.orch.ensureMainTask(z);return{task:zJ(G)}}},{name:"task.ensureWorktree",async handle(J,Y){let z=Af(J,"taskId");Y.bus.publish("task.jobs",{taskId:z,kind:"ensureWorktree",phase:"running"});try{let G=await Y.orch.ensureWorktree(z);return Y.bus.publish("task.jobs",{taskId:z,kind:"ensureWorktree",phase:"done"}),{worktreePath:G}}catch(G){throw Y.bus.publish("task.jobs",{taskId:z,kind:"ensureWorktree",phase:"error",error:G instanceof Error?G.message:String(G)}),G}}},{name:"worktree.discoverAdoptable",async handle(J,Y){let z=Af(J,"repo");return{worktrees:await Y.orch.discoverAdoptableWorktrees(z)}}},{name:"worktree.adopt",async handle(J,Y){let z=await Y.orch.adoptWorktree({repo:Af(J,"repo"),worktreePath:Af(J,"worktreePath"),branch:a1(J,"branch"),vendor:HB(J,"vendor"),title:a1(J,"title"),ifExists:a1(J,"ifExists")==="return"?"return":"error"});return{task:zJ(z)}}},{name:"worktree.reconcile",async handle(J,Y){let z=Af(J,"cwd"),G=Af(J,"worktreePath"),X=qB(Y.orch.listTasks(),z)??qB(Y.orch.listTasks(),G);if(!X)return{adopted:!1};try{return{adopted:!0,taskId:(await Y.orch.adoptWorktree({repo:X,worktreePath:G,ifExists:"return"})).id}}catch(q){return uf("worktree-created",q),{adopted:!1}}}},{name:"task.setActive",async handle(J,Y){let z=a1(J,"taskId")??null;return await Y.orch.setActiveTask(z),Y.bus.publish("active-task",{taskId:z}),{}}},{name:"issue.list",async handle(J,Y){return Y.issues.list(Af(J,"repoRoot"))}},{name:"issue.mutate",async handle(J,Y){let z=await Y.issues.mutate(Af(J,"repoRoot"),J.op);return Y.bus.publish("issue.snapshot",z),z}},{name:"session.deliver",async handle(J,Y){let z=Af(J,"taskId"),G=Af(J,"text"),X=a1(J,"source");if(X!==void 0&&X!=="note"&&X!=="dispatcher")throw Error('source must be "note" or "dispatcher"');if(!Y.orch.getTask(z))throw Error(`task not found: ${z}`);return Y.bus.publish("session.deliver",{taskId:z,text:G,at:Date.now(),source:X??"dispatcher"}),{ok:!0}}},{name:"note.file",async handle(J,Y){let z=Af(J,"taskId"),G=Af(J,"text"),X=Y.orch.getTask(z);if(!X)throw Error(`task not found: ${z}`);let q=Y.orch.listTasks().find((H)=>(H.kind??"task")==="main"&&H.repo===X.repo&&!H.archived);if(!q||q.id===X.id)return{ok:!0,routed:!1};let Q=X.title||X.branch||z;return Y.bus.publish("session.deliver",{taskId:q.id,text:`[KOBE FIELD NOTE] from "${Q}" (task ${z}): ${G}`,at:Date.now(),source:"note"}),{ok:!0,routed:!0}}},{name:"engine.reportEvent",async handle(J,Y){let z=Af(J,"kind");if(!NZ(z))throw Error(`unknown engine event kind: ${z}`);let G=a1(J,"taskId"),X=a1(J,"cwd");if(!G&&X&&z==="session-start"){let H=$V(Y.orch.listTasks(),X);if(H)try{await Y.orch.adoptWorktree({repo:H.repo,worktreePath:H.worktreePath,ifExists:"return"})}catch(B){uf("worktree-autosync",B)}}let q=G??(X?aV(Y.orch.listTasks(),X):void 0);if(!q)return{};let Q=aO(J);if(Y.activity.report(q,z,Q),z==="turn-start")dV(Y.orch,q).then((H)=>{if(H==="moved")console.log(`[status-rules] task ${q} auto-moved backlog \u2192 in_progress`)}).catch((H)=>uf("status-rules",H));return{}}}].map((J)=>[J.name,J]))}function jB(f){if(!f||typeof f!=="object"||Array.isArray(f))return{};return f}function Af(f,J){let Y=f[J];if(typeof Y!=="string"||Y.length===0)throw Error(`${J} is required`);return Y}function a1(f,J){let Y=f[J];if(Y===void 0||Y===null||Y==="")return;if(typeof Y!=="string")throw Error(`${J} must be a string`);return Y}function QB(f,J){let Y=f[J];if(Y===void 0||Y===null)return;if(typeof Y!=="boolean")throw Error(`${J} must be a boolean`);return Y}function HB(f,J){let Y=a1(f,J);return Y&&Y.trim().length>0?Y:void 0}function aO(f){let J=f.detail;if(!J||typeof J!=="object"||Array.isArray(J))return;let Y=J,z={};if(Y.failure==="rate_limit"||Y.failure==="billing"||Y.failure==="other")z.failure=Y.failure;if(Y.waiting==="permission"||Y.waiting==="input")z.waiting=Y.waiting;if(typeof Y.note==="string")z.note=Y.note;return Object.keys(z).length>0?z:void 0}var oZ=k(()=>{yZ();iV();S1();D1();rV();sY()});import{execFile as $O}from"child_process";import{mkdir as rO,readFile as pO,realpath as pV,rename as _O,stat as oO,writeFile as sO}from"fs/promises";import{homedir as tO}from"os";import{dirname as eO,isAbsolute as fA,join as JA,resolve as _V}from"path";import{promisify as YA}from"util";function zA(f){return(f instanceof Error?f.message:String(f)).includes("not a git repository")}function tZ(f=process.env.KOBE_HOME_DIR??tO()){return JA(f,".kobe","issues.json")}function sV(f){return typeof f==="string"&&oV.includes(f)}function GA(f){if(f===null||typeof f!=="object"||Array.isArray(f))return null;let J=f;if(typeof J.id!=="number")return null;return{id:J.id,title:typeof J.title==="string"?J.title:"(untitled)",status:sV(J.status)?J.status:"open",created:typeof J.created==="string"?J.created:"",body:typeof J.body==="string"?J.body:"",taskId:typeof J.taskId==="string"?J.taskId:void 0}}function XA(){return{version:1,repos:{}}}function ZA(){let f=new Date,J=String(f.getMonth()+1).padStart(2,"0"),Y=String(f.getDate()).padStart(2,"0");return`${f.getFullYear()}-${J}-${Y}`}async function qA(f){let{stdout:J}=await LB("git",["-C",f,"rev-parse","--git-common-dir"]),Y=J.trim();return pV(fA(Y)?Y:_V(f,Y))}async function QA(f){let{stdout:J}=await LB("git",["-C",f,"rev-parse","--show-toplevel"]);return J.trim()}async function HA(f){let{stdout:J}=await LB("git",["-C",f,"worktree","list","--porcelain"]),Y=J.split(/\r?\n/).find((z)=>z.startsWith("worktree "))?.slice(9).trim();return Y?pV(Y):QA(f)}async function WB(f){if(typeof f!=="string"||f.length===0)throw Error("repoRoot is required");let J=_V(f);if(!(await oO(J).catch(()=>null))?.isDirectory())throw Error("repoRoot does not exist");try{let[z,G]=await Promise.all([HA(J),qA(J)]);return{repoRoot:z,repoKey:G}}catch(z){if(zA(z))throw Error("repoRoot is not a git repository");throw z}}async function VB(f){try{let J=JSON.parse(await pO(f,"utf8")),Y={};if(J.repos&&typeof J.repos==="object")for(let[z,G]of Object.entries(J.repos)){if(!G||typeof G!=="object")continue;let X=G;Y[z]={repoRoot:typeof X.repoRoot==="string"?X.repoRoot:"",nextId:typeof X.nextId==="number"?X.nextId:1,issues:Array.isArray(X.issues)?X.issues.map(GA).filter((q)=>q!==null):[]}}return{version:1,repos:Y}}catch(J){if(J.code==="ENOENT")return XA();throw J}}async function KB(f,J){await rO(eO(f),{recursive:!0});let Y=`${f}.tmp`;await sO(Y,`${JSON.stringify(J,null,2)}
46
- `,"utf8"),await _O(Y,f)}function UB(f,J){return{repoRoot:f,exists:J!==null,nextId:J?.nextId??1,issues:J?.issues??[]}}async function DB(f,J){let z=(sZ.get(f)??Promise.resolve()).then(J),G=z.then(()=>{return},()=>{return});return sZ.set(f,G),G.then(()=>{if(sZ.get(f)===G)sZ.delete(f)}),z}class eZ{path;constructor(f=tZ()){this.path=f}async list(f){let{repoRoot:J,repoKey:Y}=await WB(f);return DB(this.path,async()=>{let z=await VB(this.path),G=z.repos[Y]??null;if(G&&G.repoRoot!==J)G.repoRoot=J,await KB(this.path,z);return UB(J,G)})}async mirrorTaskDone(f,J){let{repoRoot:Y,repoKey:z}=await WB(f);if(!J)return null;return DB(this.path,async()=>{let G=await VB(this.path),X=G.repos[z];if(!X)return null;let q=X.issues.find((Q)=>Q.taskId===J);if(!q||q.status==="done")return null;return q.status="done",X.repoRoot=Y,await KB(this.path,G),UB(Y,X)})}async mutate(f,J){let{repoRoot:Y,repoKey:z}=await WB(f);if(!J||typeof J!=="object"||Array.isArray(J)||typeof J.type!=="string")throw Error("missing op");return DB(this.path,async()=>{let G=await VB(this.path),X=G.repos[z];if(!X)X={repoRoot:Y,nextId:1,issues:[]},G.repos[z]=X;X.repoRoot=Y;let q=J;if(q.type==="create"){if(typeof q.title!=="string"||q.title.trim().length===0)throw Error("create requires a non-empty title");if(q.body!==void 0&&typeof q.body!=="string")throw Error("body must be a string");X.issues=[{id:X.nextId,title:q.title,status:"open",created:ZA(),body:typeof q.body==="string"?q.body:""},...X.issues],X.nextId+=1}else if(q.type==="setStatus"){if(typeof q.id!=="number")throw Error("setStatus requires a numeric id");if(!sV(q.status))throw Error(`invalid status: must be one of ${oV.join(", ")}`);let Q=X.issues.find((H)=>H.id===q.id);if(!Q)throw Error(`no issue #${q.id}`);Q.status=q.status}else if(q.type==="update"){if(typeof q.id!=="number")throw Error("update requires a numeric id");if(q.title!==void 0&&(typeof q.title!=="string"||q.title.trim().length===0))throw Error("title must be a non-empty string");if(q.body!==void 0&&typeof q.body!=="string")throw Error("body must be a string");let Q=X.issues.find((H)=>H.id===q.id);if(!Q)throw Error(`no issue #${q.id}`);if(typeof q.title==="string")Q.title=q.title;if(typeof q.body==="string")Q.body=q.body}else if(q.type==="link"){if(typeof q.id!=="number")throw Error("link requires a numeric id");if(typeof q.taskId!=="string"||q.taskId.length===0)throw Error("link requires a non-empty taskId");let Q=X.issues.find((H)=>H.id===q.id);if(!Q)throw Error(`no issue #${q.id}`);Q.taskId=q.taskId}else if(q.type==="unlink"){if(typeof q.id!=="number")throw Error("unlink requires a numeric id");let Q=X.issues.find((H)=>H.id===q.id);if(!Q)throw Error(`no issue #${q.id}`);Q.taskId=void 0}else if(q.type==="delete"){if(typeof q.id!=="number")throw Error("delete requires a numeric id");let Q=X.issues.filter((H)=>H.id!==q.id);if(Q.length===X.issues.length)throw Error(`no issue #${q.id}`);X.issues=Q}else throw Error(`unknown op type: ${q.type}`);return await KB(this.path,G),UB(Y,X)})}}var LB,oV,sZ;var MB=k(()=>{LB=YA($O),oV=["open","doing","hold","done"];sZ=new Map});import{mkdirSync as BA,watch as jA}from"fs";import{basename as WA,dirname as VA}from"path";function fq(f){if(f.debounceMs<=0)return()=>{};let J=VA(f.filePath),Y=new Set([WA(f.filePath),...f.matchBasenames??[]]),z=null,G=null,X=null,q=()=>{try{f.onTrigger()}catch(H){f.onError(H)}},Q=()=>{if(z)clearTimeout(z);z=setTimeout(()=>{z=null,q()},f.debounceMs),z.unref?.()};try{BA(J,{recursive:!0}),X=jA(J,(H,B)=>{let V=B===null?null:String(B);if(V!==null&&!Y.has(V))return;Q()}),X.on("error",f.onError)}catch(H){f.onError(H)}if(f.pollMs&&f.pollMs>0)G=setInterval(q,f.pollMs),G.unref?.();return()=>{if(z)clearTimeout(z),z=null;if(G)clearInterval(G),G=null;X?.close(),X=null}}var FB=()=>{};import{homedir as KA}from"os";import{basename as UA,join as DA}from"path";function AB(f=process.env.KOBE_HOME_DIR??KA()){return DA(f,".kobe","settings","keybindings.yaml")}function tV(f,J={}){let Y=J.debounceMs??OB;if(Y<=0)return()=>{};let z=J.path??AB(),G=UA(z),X=G.replace(/\.yaml$/,".yml"),q=0;return f.publish("keybindings",{rev:q}),fq({filePath:z,matchBasenames:[G,X],debounceMs:Y,onTrigger:()=>{try{q+=1,f.publish("keybindings",{rev:q})}catch(H){uf("keybindings-watcher",H)}},onError:(H)=>uf("keybindings-watcher",H)})}var OB=200;var eV=k(()=>{FB()});class gB{clients;idleGraceMs;onIdleStop;schedule;log;cancelIdle=null;stopping=!1;constructor(f){this.clients=f.clients,this.idleGraceMs=f.idleGraceMs,this.onIdleStop=f.onIdleStop,this.schedule=f.schedule??LA,this.log=f.log??gY}guiCount(){let f=0;for(let J of this.clients())if(J.holdsLifetime)f++;return f}hasSubscribers(){for(let f of this.clients())if(f.subscribed)return!0;return!1}isStopping(){return this.stopping}markStopping(){this.stopping=!0,this.clearIdle()}guiAttached(){this.clearIdle()}clientDisconnected(f){if(f)this.maybeArm()}clearIdle(){if(this.cancelIdle)this.cancelIdle(),this.cancelIdle=null}maybeArm(){if(this.stopping||this.guiCount()>0)return;this.clearIdle(),this.log("idle",`last gui gone \u2014 arming ${this.idleGraceMs}ms idle-stop grace`),this.cancelIdle=this.schedule(()=>{if(this.cancelIdle=null,this.stopping||this.guiCount()>0)return;this.log("idle","grace elapsed with no gui \u2014 self-stopping"),this.onIdleStop()},this.idleGraceMs)}}var LA=(f,J)=>{let Y=setTimeout(f,J);return Y.unref?.(),()=>clearTimeout(Y)};var f7=()=>{};import{spawn as MA}from"child_process";function RB(f,J,Y,z){if(Y)return f+z.slowRetryMs;return J+Math.max(z.minIntervalMs,(J-f)*5)}function CB(f,J){return!f.inFlight&&J>=f.nextAllowedAt}function Jq(f,J,Y,z){let G=Date.now();if(!CB(f,G))return!1;f.inFlight=!0;let X=new AbortController,q=setTimeout(()=>X.abort(),J.timeoutMs);return(async()=>{let Q,H=!1;try{Q=await Y(X.signal),H=!0}catch{}clearTimeout(q);let B=X.signal.aborted;if(f.nextAllowedAt=RB(G,Date.now(),B,J),f.inFlight=!1,H&&!B)z(Q)})(),!0}function BJ(f,J,Y){return new Promise((z)=>{let G="",X=!1,q=(H)=>{if(X)return;X=!0,z({status:H,stdout:G})},Q=MA(f,J.slice(),{cwd:Y.cwd,stdio:["ignore","pipe","ignore"],env:Y.env,signal:Y.signal,killSignal:"SIGKILL"});Q.stdout?.on("data",(H)=>{G+=String(H)}),Q.on("error",()=>q(null)),Q.on("close",(H)=>q(H))})}var HX=()=>{};function RA(f){if(f.archived)return!1;if(f.kind==="main")return!1;if(!f.branch||!f.worktreePath)return!1;if(H1(f.repo)||H1(f.worktreePath))return!1;return!0}async function CA(f,J){let Y=J.tickMs??Yq,z=[];for(let G of f.listTasks()){if(!RA(G)){J.schedule.delete(G.id);continue}let X=J.schedule.get(G.id)??0;if(J.now<X)continue;try{let q=await J.run(G.worktreePath,G.branch);if(q.kind==="empty"){J.schedule.set(G.id,J.now+FA);continue}let Q=VW(q.view,J.at),H=f.getTask(G.id);if(!H){J.schedule.delete(G.id);continue}if(!FZ(H.prStatus,Q??void 0))await f.setPRStatus(G.id,Q),z.push(G.id);let B=Q?.lifecycle==="merged"||Q?.lifecycle==="closed";J.schedule.set(G.id,J.now+(B?OA:Y))}catch(q){uf("pr-status-poller",q),J.schedule.set(G.id,J.now+Y)}}return z}function J7(f,J=Yq,Y,z=gA){if(J<=0)return()=>{};let G=new Map,X=!1,Q=setInterval(()=>{if(Y&&!Y())return;if(X)return;X=!0,CA(f,{run:z,now:Date.now(),at:new Date().toISOString(),schedule:G,tickMs:J}).catch((H)=>uf("pr-status-poller",H)).finally(()=>{X=!1})},J);return Q.unref?.(),()=>clearInterval(Q)}var Yq=30000,FA=300000,OA=600000,AA=1e4,gA=async(f,J)=>{let Y=new AbortController,z=setTimeout(()=>Y.abort(),AA);try{let G=await BJ("gh",["pr","view",J,"--json",WW],{cwd:f,signal:Y.signal});if(G.status!==0)return{kind:"empty"};let X=JSON.parse(G.stdout);return typeof X.number==="number"?{kind:"pr",view:X}:{kind:"empty"}}catch{return{kind:"empty"}}finally{clearTimeout(z)}};var Y7=k(()=>{HX();Of()});import{readFileSync as kA}from"fs";import{homedir as NA}from"os";import{basename as yA,join as bA}from"path";function NB(f=process.env.KOBE_HOME_DIR??NA()){return bA(f,".config","kobe","state.json")}function z7(f){let J={};try{let B=JSON.parse(kA(f,"utf8"));if(B&&typeof B==="object"&&!Array.isArray(B))J=B}catch{}let Y=typeof J.activeTheme==="string"&&J.activeTheme.length>0?J.activeTheme:"claude",z=J.transparentBackground===!0,G=typeof J.focusAccent==="string"&&IA.includes(J.focusAccent)?J.focusAccent:null,X=J.activeSortMode==="recent"?"recent":"default",q=J["tasksPane.keysCollapsed"]===!0,Q=typeof J["tasksPane.projectFilter"]==="string"&&J["tasksPane.projectFilter"].length>0?J["tasksPane.projectFilter"]:null,H=typeof J.locale==="string"&&J.locale.length>0?J.locale:"en";return{theme:Y,transparentBackground:z,focusAccent:G,locale:H,sortMode:X,keysCollapsed:q,projectFilter:Q}}function TA(f,J){return f.theme===J.theme&&f.transparentBackground===J.transparentBackground&&f.focusAccent===J.focusAccent&&f.locale===J.locale&&f.sortMode===J.sortMode&&f.keysCollapsed===J.keysCollapsed&&f.projectFilter===J.projectFilter}function G7(f,J={}){let Y=J.debounceMs??kB;if(Y<=0)return()=>{};let z=J.pollMs??SA,G=J.statePath??NB(),X=yA(G),q=z7(G);return f.publish("ui-prefs",q),fq({filePath:G,matchBasenames:[X],debounceMs:Y,pollMs:z,onTrigger:()=>{try{let H=z7(G);if(TA(q,H))return;q=H,f.publish("ui-prefs",H)}catch(H){uf("ui-prefs-watcher",H)}},onError:(H)=>uf("ui-prefs-watcher",H)})}var kB=200,SA=250,IA;var X7=k(()=>{FB();IA=["primary","success","info"]});function yB(){return nf()[Wz]===!0}var Wz="experimental.dispatcher";var zq=k(()=>{pY()});import{randomUUID as uA}from"crypto";function jJ(f){return`engineCommand.${f}`}function WJ(f){return`engineName.${f}`}function Vz(f){return kf(WJ(f))?.trim()||bB[f]||f}function BX(f){return pf(f??"claude").defaultCommand}function EA(f){let J=[],Y=/"([^"]*)"|'([^']*)'|(\S+)/g;for(let z=Y.exec(f);z!==null;z=Y.exec(f))J.push(z[1]??z[2]??z[3]??"");return J}function N1(f,J){let Y=f??"claude",z=kf(jJ(Y))?.trim(),G=(()=>{if(z){let X=EA(z);if(X.length>0)return X}return BX(Y)})();return xA(G,Y,J)}function xA(f,J,Y){let z=Y?.trim();if(!z)return f;let G=J??"claude";if(!pf(G).effortLevels?.includes(z))return f;if(G==="codex")return[...f,"-c",`model_reasoning_effort=${z}`];return f}function pz(f,J){if((J??"claude")!=="claude")return{argv:f,sessionId:null};if(f.some((z)=>wA.has(z)))return{argv:f,sessionId:null};let Y=uA();return{argv:[...f,"--session-id",Y],sessionId:Y}}function Kz(){let f=(J)=>/^[A-Za-z0-9_/.:=-]+$/.test(J)?J:`'${J.replace(/'/g,"'\\''")}'`;try{return[...Cf(),"api"].map(f).join(" ")}catch{return"kobe api"}}function hA(f,J=Kz()){return[`You are running inside kobe (a local multi-session task manager) as task ${f}.`,"kobe tracks a lifecycle status for this task on a board.","When you have COMPLETED the work requested in this session and verified it, report it by running:",` ${J} set-status --task-id ${f} --status in_review`,"Run it only when the work is genuinely done \u2014 never while you are asking the user a question, waiting for input, or mid-task.","Never set any other status value; everything beyond in_review is the user's decision."].join(`
47
- `)}function PA(f,J=Kz()){return["kobe shares hard-won discoveries between its parallel sessions as one-line field notes.","When you RESOLVE a non-obvious, repo-level gotcha (a build flag, a flaky test, an environment quirk, an API trap), file it:",` ${J} note --task-id ${f} --text "<one line: the verified conclusion>"`,"File only verified conclusions another session could act on \u2014 never progress logs, opinions, or details specific to your own task. A handful per session at most."].join(`
48
- `)}function vA(f,J=Kz(),Y={}){let z=[];if((Y.status??_Z)())z.push(hA(f,J));if((Y.notes??yB)())z.push(PA(f,J));return z.length>0?z.join(`
49
-
50
- `):null}function Gq(f,J,Y,z={}){if(!Y)return f;if((J??"claude")!=="claude")return f;if(f.includes("--append-system-prompt")||f.includes("--append-system-prompt-file"))return f;let G=vA(Y,Kz(),z);if(!G)return f;return[...f,"--append-system-prompt",G]}function mA(f,J=Kz()){return[`You are running inside kobe (a local multi-session task manager) as this repository's DISPATCHER (task ${f}, the repo's main session).`,"kobe runs multiple worktree task sessions on this repo in parallel. When one of them resolves a non-obvious gotcha, it files a one-line field note; kobe forwards each note to you as a user message prefixed with [KOBE FIELD NOTE].","Your job is routing that knowledge, fully autonomously \u2014 never ask the user for permission:",` - See the fleet: \`${J} collect --repo .\` (status, running, change counts per task), or \`--task-ids id1,id2\` for specific tasks.`,` - Relay a note to a task that would benefit: \`${J} dispatch --task-id <id> --prompt "[dispatcher] FYI from <author task>: <note verbatim>"\`.`," - Relay to the in-flight tasks whose work plausibly touches the same area \u2014 and to nobody else. If no task benefits, do nothing."," - Never relay a note back to its author, never relay the same note to the same task twice, and keep relays verbatim with provenance \u2014 no summarizing, no embellishment.","Use ONLY the dispatch verb to message sessions \u2014 the `send` verb pastes via tmux and would spawn a DUPLICATE engine for web-hosted sessions. If dispatch fails, report the error in your own session and stop; do not fall back.","Take no action on merge conflicts between tasks \u2014 the board's conflict radar is display-only by design, and resolution timing belongs to the humans and the tasks themselves.","Never run git commands inside other tasks' worktrees."].join(`
51
- `)}function Xq(f,J,Y,z=yB){if(!Y||!z())return f;if((J??"claude")!=="claude")return f;if(f.includes("--append-system-prompt")||f.includes("--append-system-prompt-file"))return f;return[...f,"--append-system-prompt",mA(Y)]}var bB,wA;var E1=k(()=>{aJ();MY();ZX();zq();Of();U1();bB=Object.fromEntries(dY.map((f)=>[f,pf(f).displayName]));wA=new Set(["--session-id","--resume","-r","--continue","-c","--from-pr"])});function _z(f){return Uz.includes(f)?f:"auto"}var Uz,Z7,_J="editor.kind",kY="editor.customCommand",Zq="auto";var qq=k(()=>{Uz=["auto","vim","nvim","nano","emacs","custom"],Z7=["nvim","vim","emacs","nano"]});function Lz(f){return f==="taskpanel"?"taskpanel":"chattab"}var oJ="settings.surface",Dz="chattab";function x1(f=process.env){return{...f,...SB}}var SB;var NY=k(()=>{SB={GIT_OPTIONAL_LOCKS:"0"}});async function oz(f,J,Y={}){if(!f)return{stdout:"",stderr:"worktreePath is required",status:-1};let z=(Y.execForPath??nJ)(f),G=Y.timeoutMs&&Y.timeoutMs>0?new AbortController:null,X=!1,q=G?setTimeout(()=>{X=!0,G.abort()},Y.timeoutMs):null,Q;try{Q=await z.run(["git",...J],{cwd:f,env:SB,signal:G?.signal})}catch(H){if(q)clearTimeout(q);return{stdout:"",stderr:H instanceof Error?H.message:String(H),status:-1}}if(q)clearTimeout(q);if(X&&Q.exitCode===-1&&!Q.stderr)return{stdout:Q.stdout,stderr:`git ${J.join(" ")} timed out after ${Y.timeoutMs}ms`,status:-1};return{stdout:Q.stdout,stderr:Q.stderr,status:Q.exitCode}}function cA(f,J){if(!f||!J||J.startsWith("/"))return null;let Y=J.split("/");if(Y.some((z)=>z===".."))return null;return`${f.replace(/\/+$/,"")}/${Y.filter(Boolean).join("/")}`}async function q7(f,J,Y={}){let z=cA(f,J);if(!z)return null;let G=(Y.execForPath??nJ)(f);try{return await G.readFile(z)}catch{return null}}var Qq=k(()=>{e1();NY()});import{statSync as nA}from"fs";async function jX(f,J){let Y=await oz(f,J,{timeoutMs:dA}),z=Y.status??-1;return{ok:z===0,stdout:Y.stdout,stderr:Y.stderr,code:z}}function lA(f){switch(f){case"M":return"modified";case"A":return"added";case"D":return"deleted";case"R":return"renamed";case"C":return"copied";case"T":return"type changed";case"U":return"unmerged";case"?":return"untracked";default:return"changed"}}function Q7(f){let J=new Map;if(!f)return J;let Y=f.split(/(?=^diff --git )/m);for(let z of Y){if(!z.startsWith("diff --git"))continue;let G=null,X=z.match(/^\+\+\+ b\/(.*)$/m);if(X&&X[1]!=="/dev/null")G=X[1];else{let q=z.match(/^diff --git a\/.* b\/(.*)$/m);if(q)G=q[1]}if(!G)continue;J.set(aA(G),z.endsWith(`
28
+ `)&&f.endsWith("</INSTRUCTIONS>")}var DW=()=>{};function LW(f,J={}){let Y=gH(f.input_tokens,0),z=gH(f.cached_input_tokens,0),G=gH(f.output_tokens,0),X=Math.max(0,Y-z);if(Y<=0&&G<=0&&z<=0)return;return{input_tokens:X,output_tokens:G,...z>0?{cache_read_input_tokens:z}:{},...vF(J.contextWindowTokens)?{context_window_tokens:J.contextWindowTokens}:{}}}function gH(f,J){return typeof f==="number"&&Number.isFinite(f)?f:J}function vF(f){return typeof f==="number"&&Number.isFinite(f)&&f>0}import{readFile as mF,readdir as cF,stat as nF,unlink as nT}from"fs/promises";import{homedir as dF}from"os";import zz from"path";async function NH(f=Gz){let J=f.sessionsDir(),Y=(await f.readdir(J)).sort().reverse(),z=[];for(let G of Y){let X=zz.join(J,G),q=(await f.readdir(X)).sort().reverse();for(let Q of q){let H=zz.join(X,Q),B=(await f.readdir(H)).sort().reverse();for(let V of B){let j=zz.join(H,V),U=(await f.readdir(j)).filter((L)=>L.startsWith("rollout-")&&L.endsWith(".jsonl"));U.sort().reverse();for(let L of U)z.push(zz.join(j,L))}}}return z}async function iF(f,J=Gz){if(!f)return;let Y=f.toLowerCase(),z=await NH(J);for(let G of z)if(zz.basename(G).match(AW)?.[1]?.toLowerCase()===Y)return G;return}function lF(f){for(let J of f.split(`
29
+ `)){let Y=J.trim();if(!Y)continue;try{let z=JSON.parse(Y);if(z.type==="session_meta")return z.payload?.cwd??""}catch{}return""}return""}async function gW(f,J){let Y=MW.get(J);if(!Y)Y=new Map,MW.set(J,Y);let z=Y.get(f);if(z!==void 0)return z;let G;try{G=await J.readFile(f)}catch{return null}let X=lF(G);if(X)Y.set(f,X);return X}async function RW(f,J=Gz){if(!f)return[];let Y=await NH(J),z=[],G=0;for(let X of Y){if(G>=aF)break;if(G++,await gW(X,J)!==f)continue;let q=zz.basename(X).match(AW)?.[1];if(q)z.push(q)}return z.reverse()}async function yH(f,J=Gz){if(!f)return null;let Y=await NH(J),z=0;for(let G of Y){if(z>=$F)break;if(z++,await gW(G,J)!==f)continue;try{return{path:G,mtimeMs:(await J.stat(G)).mtimeMs}}catch{}}return null}async function CW(f,J=Gz){return(await yH(f,J))?.mtimeMs??0}async function kW(f,J=Gz){return(await rF(f,J)).messages}async function rF(f,J=Gz){let Y=await iF(f,J);if(!Y)return{messages:[]};let z;try{z=await J.readFile(Y)}catch{return{messages:[]}}let G=pF(_F(z,f)),X=f3(z);return{messages:G,...X?{usageMetrics:X}:{}}}function pF(f){return f.map((J,Y)=>({msg:J,idx:Y})).sort((J,Y)=>{if(J.msg.timestamp<Y.msg.timestamp)return-1;if(J.msg.timestamp>Y.msg.timestamp)return 1;return J.idx-Y.idx}).map((J)=>J.msg)}function _F(f,J){let Y=[];for(let z of f.split(`
30
+ `)){let G=z.trim();if(!G)continue;let X;try{X=JSON.parse(G)}catch{continue}if(!aG(X))continue;if(X.type!=="response_item")continue;let q=aG(X.payload)?X.payload:void 0;if(!q)continue;let Q=typeof X.timestamp==="string"?X.timestamp:new Date().toISOString(),H=oF(q,Q,J);if(H)Y.push(H)}return Y}function oF(f,J,Y){if(f.type==="message"){let z=f.role;if(z!=="user"&&z!=="assistant"&&z!=="system")return;let G=AH(f.content);if(z==="user"&&UW(G))return;return{role:z,blocks:G,timestamp:J,sessionId:Y}}if(f.type==="reasoning")return sF(f,J,Y);if(f.type==="function_call")return RH(f,J,Y,{name:kH(f.name,"function_call"),input:CH(f.arguments)});if(f.type==="custom_tool_call")return RH(f,J,Y,{name:kH(f.name,"custom_tool_call"),input:CH(f.input)});if(f.type==="tool_search_call")return RH(f,J,Y,{name:"tool_search_call",input:CZ(f,["type","call_id","status"])});if(f.type==="function_call_output"||f.type==="custom_tool_call_output")return FW(f,J,Y,CH(f.output));if(f.type==="tool_search_output")return FW(f,J,Y,CZ(f,["type","call_id"]));if(f.type==="web_search_call"||f.type==="image_generation_call"||f.type==="local_shell_call")return tF(f,J,Y);return}function sF(f,J,Y){let z=eF(f);if(z.length===0)return;return{role:"assistant",blocks:[{type:"thinking",text:z}],timestamp:J,sessionId:Y}}function RH(f,J,Y,z){let G=typeof f.call_id==="string"?f.call_id:void 0;if(!G)return;return{role:"assistant",blocks:[{type:"tool_call",callId:G,name:z.name,input:z.input}],timestamp:J,sessionId:Y}}function FW(f,J,Y,z){let G=typeof f.call_id==="string"?f.call_id:void 0;if(!G)return;return{role:"user",blocks:[{type:"tool_result",callId:G,output:z,isError:!1}],timestamp:J,sessionId:Y}}function tF(f,J,Y){let z=typeof f.type==="string"?f.type:"tool",G=typeof f.call_id==="string"&&f.call_id.length>0?f.call_id:`${z}:${J}`,X=kH(f.name,z),q=CZ(f,["type","call_id","status"]),Q=CZ(f,["type","call_id"]);return{role:"assistant",timestamp:J,sessionId:Y,blocks:[{type:"tool_call",callId:G,name:X,input:q},{type:"tool_result",callId:G,output:Q,isError:!1}]}}function eF(f){let J=OW(f.content);if(J.length>0)return J;let Y=typeof f.text==="string"?f.text:"";if(Y.length>0)return Y;return OW(f.summary)}function OW(f){if(typeof f==="string")return f;if(!Array.isArray(f))return"";let J=[];for(let Y of f){if(typeof Y==="string"){J.push(Y);continue}if(!aG(Y))continue;let z=typeof Y.text==="string"?Y.text:"";if(z.length>0)J.push(z)}return J.join("")}function CZ(f,J){let Y={};for(let[z,G]of Object.entries(f))if(!J.includes(z))Y[z]=G;return Y}function kH(f,J){return typeof f==="string"&&f.length>0?f:J}function CH(f){if(typeof f!=="string")return f;try{return JSON.parse(f)}catch{return f}}function f3(f){let J,Y=null;for(let z of f.split(`
31
+ `)){let G=z.trim();if(!G)continue;let X;try{X=JSON.parse(G)}catch{continue}if(!aG(X))continue;let q=typeof X.timestamp==="string"?J3(X.timestamp):null;if(X.type==="response_item")continue;if(X.type!=="turn.completed")continue;let Q=aG(X.usage)?X.usage:void 0;if(!Q)continue;let H=LW(Q);if(!H)continue;if(q!==null&&(Y===null||q>Y))Y=q,J=H;else if(Y===null)J=H}return J}function J3(f){let J=new Date(f).getTime();return Number.isFinite(J)?J:null}function aG(f){return typeof f==="object"&&f!==null&&!Array.isArray(f)}var Gz,AW,MW,aF=200,$F=12;var bH=k(()=>{DW();Gz={sessionsDir(){return zz.join(dF(),".codex","sessions")},async readdir(f){try{return await cF(f)}catch{return[]}},async readFile(f){return await mF(f,"utf8")},stat:nF};AW=/([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})\.jsonl$/i;MW=new WeakMap});function yW(f){if(!kZ(f))return;let J=kZ(f.modelMetrics)?f.modelMetrics:void 0;if(!J)return;let Y=0,z=0,G=0;for(let q of Object.values(J)){if(!kZ(q)||!kZ(q.usage))continue;Y+=NZ(q.usage.inputTokens,0),z+=NZ(q.usage.outputTokens,0),G+=NZ(q.usage.cacheReadTokens,0)}let X=NZ(f.currentTokens,0);if(Y===0&&z===0&&G===0&&X===0)return;return{input_tokens:Y,output_tokens:z,...G>0?{cache_read_input_tokens:G}:{},...X>0?{context_tokens:X}:{}}}function kZ(f){return typeof f==="object"&&f!==null&&!Array.isArray(f)}function NZ(f,J){return typeof f==="number"&&Number.isFinite(f)?f:J}import{readFile as Y3,readdir as z3,rm as G3,stat as X3}from"fs/promises";import{homedir as Z3}from"os";import KY from"path";async function IH(f=Xz){let J=KY.join(f.copilotDir(),"session-state");return(await f.readdir(J)).map((z)=>KY.join(J,z))}async function bW(f,J=Xz){let Y=[];for(let z of await IH(J)){let G=await TH(z,J);if(G.cwd!==f)continue;Y.push({id:G.id??KY.basename(z),updatedAt:G.updatedAt??""})}return Y.sort((z,G)=>z.updatedAt.localeCompare(G.updatedAt)).map((z)=>z.id)}async function SW(f,J=Xz){if(!f)return 0;let Y=0;for(let z of await IH(J)){if((await TH(z,J)).cwd!==f)continue;try{let{mtimeMs:X}=await J.stat(KY.join(z,"events.jsonl"));if(X>Y)Y=X}catch{}}return Y}async function q3(f,J=Xz){let Y=await Q3(f,J);if(!Y)return{messages:[]};let z=await J.readFile(KY.join(Y,"events.jsonl")).catch(()=>""),G=B3(z,f);return{messages:G.messages,...G.usageMetrics?{usageMetrics:G.usageMetrics}:{}}}async function IW(f,J=Xz){return(await q3(f,J)).messages}async function Q3(f,J=Xz){for(let Y of await IH(J)){if(KY.basename(Y)===f)return Y;let z=await TH(Y,J);if(z.id===f||z.name?.toLowerCase()===f.toLowerCase())return Y}return}async function TH(f,J=Xz){let Y=await J.readFile(KY.join(f,"workspace.yaml")).catch(()=>"");return H3(Y)}function H3(f){let J={};for(let Y of f.split(`
32
+ `)){let z=Y.match(/^([A-Za-z_]+):\s*(.*)$/);if(!z)continue;let G=z[1],X=z[2]??"";if(X.startsWith('"')&&X.endsWith('"'))X=X.slice(1,-1).replace(/\\"/g,'"');J[G]=X}return{id:J.id,cwd:J.cwd,name:J.name,updatedAt:J.updated_at,createdAt:J.created_at}}function B3(f,J){let Y=[],z=new Map,G=J,X,q=null;for(let Q of f.split(`
33
+ `)){let H=Q.trim();if(!H)continue;let B;try{B=JSON.parse(H)}catch{continue}if(!SH(B)||typeof B.type!=="string")continue;let V=typeof B.timestamp==="string"?B.timestamp:new Date().toISOString(),j=SH(B.data)?B.data:{};if(B.type==="session.start"){let U=typeof j.sessionId==="string"?j.sessionId:void 0;if(U)G=U;continue}if(B.type==="user.message"){let U=typeof j.content==="string"?j.content:"";if(!U)continue;if(!q)q=Buffer.from(U.slice(0,j3),"utf8").toString("utf8");Y.push({role:"user",blocks:[{type:"text",text:U}],timestamp:V,sessionId:G});continue}if(B.type==="assistant.message"){let U=[],L=typeof j.content==="string"?j.content:"";if(L)U.push({type:"text",text:L});let O=Array.isArray(j.toolRequests)?j.toolRequests:[];for(let M of O){if(!SH(M))continue;let R=typeof M.id==="string"?M.id:typeof M.toolCallId==="string"?M.toolCallId:"tool",S=typeof M.name==="string"?M.name:typeof M.toolName==="string"?M.toolName:"tool";U.push({type:"tool_call",callId:R,name:S,input:M.arguments??{}})}if(U.length>0)Y.push({role:"assistant",blocks:U,timestamp:V,sessionId:G});continue}if(B.type==="tool.execution_start"){let U=typeof j.toolCallId==="string"?j.toolCallId:void 0,L=typeof j.toolName==="string"?j.toolName:"tool";if(U)z.set(U,L);continue}if(B.type==="tool.execution_complete"){let U=typeof j.toolCallId==="string"?j.toolCallId:void 0;if(!U)continue;let L=z.get(U)??(typeof j.toolName==="string"?j.toolName:"tool"),O=j.result??(j.success===!1?{success:!1}:void 0);Y.push({role:"assistant",blocks:[{type:"tool_result",callId:U,output:O,isError:j.success===!1}],timestamp:V,sessionId:G});continue}if(B.type==="session.shutdown")X=yW(j)}return{messages:Y,usageMetrics:X,firstUserMessage:q}}function SH(f){return typeof f==="object"&&f!==null&&!Array.isArray(f)}var Xz,j3=200;var TW=k(()=>{Xz={copilotDir(){let f=process.env.COPILOT_HOME?.trim();if(f)return f;return KY.join(Z3(),".copilot")},async readdir(f){try{return await z3(f)}catch{return[]}},async readFile(f){return await Y3(f,"utf8")},stat:X3,async rm(f){await G3(f,{recursive:!0,force:!0})}}});function uH(f){return pf(f).createHookAdapter()}class $G{vendor;constructor(f){this.vendor=f}supportsHooks(){return!1}activityDetailFromPayload(){return}async installActivityHooks(){}async removeActivityHooks(){}supportsWorktreeSync(){return!1}async removeWorktreeSyncHook(){}async installWorktreeWatchHook(){}async removeWorktreeWatchHook(){}}var EH=k(()=>{UY()});import{readFile as uW}from"fs/promises";class yZ{supportsCompletionMarkers(){return!0}}function EW(f){return pf(f).createTurnDetector()}function U3(f,J="claude",Y=0){let z=null,G=0;for(let X of f.split(`
34
+ `)){G++;let q=xW(X);if(!q)continue;let Q=hW(q.message)?q.message:q;if(Q.role!=="assistant")continue;if(!("content"in Q))continue;let H=wW(q,Y),B={id:`claude:${J}:${H}:${G}`,timestampMs:H,source:"claude"};if(!z||B.timestampMs>=z.timestampMs)z=B}return z}function D3(f,J="codex"){let Y=null,z=0;for(let G of f.split(`
35
+ `)){z++;let X=xW(G);if(!X||X.type!=="turn.completed")continue;let q=wW(X,0),Q={id:`codex:${J}:${q}:${z}`,timestampMs:q,source:"codex"};if(!Y||Q.timestampMs>=Y.timestampMs)Y=Q}return Y}function xW(f){let J=f.trim();if(!J)return null;try{let Y=JSON.parse(J);return hW(Y)?Y:null}catch{return null}}function wW(f,J){let Y=typeof f.timestamp==="string"?Date.parse(f.timestamp):Number.NaN;return Number.isFinite(Y)?Y:J}function hW(f){return typeof f==="object"&&f!==null&&!Array.isArray(f)}var V3,xH,K3,wH,bZ;var hH=k(()=>{KH();bH();UY();V3={listSessionFiles:(f)=>cG(f),readFile:(f)=>uW(f,"utf8")};xH=class xH extends yZ{deps;vendor="claude";cache=new Map;constructor(f=V3){super();this.deps=f}async latestCompletion(f){let J=await this.deps.listSessionFiles(f),Y=null,z=new Map;for(let G of J.slice(0,4)){let X=this.cache.get(G.path),q;if(X&&G.mtimeMs>0&&X.mtimeMs===G.mtimeMs)q=X.marker;else{let Q=await this.deps.readFile(G.path).catch(()=>"");q=U3(Q,G.path,G.mtimeMs)}if(z.set(G.path,{mtimeMs:G.mtimeMs,marker:q}),q&&(!Y||q.timestampMs>Y.timestampMs))Y=q}return this.cache=z,Y}};K3={findLatestRollout:(f)=>yH(f),readFile:(f)=>uW(f,"utf8")};wH=class wH extends yZ{deps;vendor="codex";cache=null;constructor(f=K3){super();this.deps=f}async latestCompletion(f){if(!f)return null;let J=await this.deps.findLatestRollout(f);if(!J)return null;if(this.cache&&this.cache.path===J.path&&J.mtimeMs>0&&this.cache.mtimeMs===J.mtimeMs)return this.cache.marker;let Y=await this.deps.readFile(J.path).catch(()=>"");if(!Y)return null;let z=D3(Y,J.path);return this.cache={path:J.path,mtimeMs:J.mtimeMs,marker:z},z}};bZ=class bZ extends yZ{vendor;constructor(f){super();this.vendor=f}supportsCompletionMarkers(){return!1}async latestCompletion(){return null}}});function g3(f){return{vendor:f,builtin:!1,displayName:f,defaultCommand:[f],history:L3,detectAccount:async()=>({binary:{found:!1,error:"custom engine: kobe has no account detector for it"},account:{kind:"none"}}),createHookAdapter:()=>new $G(f),createTurnDetector:()=>new bZ(f)}}function pf(f){return H1(f)?A3[f]:g3(f)}var L3,M3,F3,O3,A3;var UY=k(()=>{U1();tY();KH();KW();bH();TW();EH();hH();L3={async listSessionIdsForWorktree(){return[]},async readHistory(){return[]},async latestTranscriptMtimeForWorktree(){return 0}},M3={async listSessionIdsForWorktree(f){return[...await cG(f)].sort((Y,z)=>Y.mtimeMs-z.mtimeMs).map((Y)=>Y.sessionId)},readHistory:(f)=>YW(f),latestTranscriptMtimeForWorktree:(f)=>JW(f)},F3={listSessionIdsForWorktree:(f)=>RW(f),readHistory:(f)=>kW(f),latestTranscriptMtimeForWorktree:(f)=>CW(f)},O3={listSessionIdsForWorktree:(f)=>bW(f),readHistory:(f)=>IW(f),latestTranscriptMtimeForWorktree:(f)=>SW(f)},A3={claude:{vendor:"claude",builtin:!0,displayName:"Claude",defaultCommand:["claude"],history:M3,detectAccount:(f)=>LZ(f),createHookAdapter:()=>new OH,createTurnDetector:()=>new xH},codex:{vendor:"codex",builtin:!0,displayName:"Codex",defaultCommand:["codex"],effortLevels:["none","low","medium","high","xhigh"],history:F3,detectAccount:(f)=>MZ(f),createHookAdapter:()=>new $G("codex"),createTurnDetector:()=>new wH},copilot:{vendor:"copilot",builtin:!0,displayName:"Copilot",defaultCommand:["copilot"],history:O3,detectAccount:(f)=>FZ(f),createHookAdapter:()=>new $G("copilot"),createTurnDetector:()=>new bZ("copilot")}}});function PW(f){if(typeof f!=="string")return"";let J=f.replace(/\s+/g," ").trim();if(J.length===0)return"";let Y=[...J];if(Y.length<=40)return J;return`${Y.slice(0,40).join("")}\u2026`}function SZ(f,J){let Y=f.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,32),z=J.slice(-6).toLowerCase();return`kobe/${Y||"task"}-${z}`}function vW(f){return typeof f==="string"&&R3.includes(f)}var rG=(f)=>f,Sf="claude",R3;var I1=k(()=>{R3=["backlog","in_progress","in_review","done","canceled","error"]});function mW(f){let J=f.find((G)=>G.role==="user");if(!J)return"";let Y=J.blocks.filter((G)=>G.type==="text").map((G)=>G.text).join(" "),z=PW(Y);return z.length>0?Buffer.from(z,"utf8").toString("utf8"):z}async function Pz(f,J=Sf){if(!f)return"";let{history:Y}=pf(J),z=await Y.listSessionIdsForWorktree(f);for(let G of z.slice(0,C3)){let X=mW(await Y.readHistory(G));if(X)return X}return""}async function cW(f,J){if(!J)return"";try{return mW(await pf(f).history.readHistory(J))}catch{return""}}var C3=8;var IZ=k(()=>{UY();I1()});function nW(f){let J=String(f),Y=J.length-1;return hf.context.id+(Y?String.fromCharCode(96+Y):"")+J}function mH(f){hf.context=f}function k3(){return{...hf.context,id:hf.getNextContextId(),count:0}}function Zz(f,J){let Y=Kf,z=e0,G=f.length===0,X=J===void 0?z:J,q=G?{owned:null,cleanups:null,context:null,owner:null}:{owned:null,cleanups:null,context:X?X.context:null,owner:X},Q=G?()=>f(()=>{throw Error("Dispose method must be an explicit argument to createRoot function")}):()=>f(()=>$f(()=>DY(q)));XJ.afterCreateOwner&&XJ.afterCreateOwner(q),e0=q,Kf=null;try{return C1(Q,!0)}finally{Kf=Y,e0=z}}function r(f,J){J=J?Object.assign({},EZ,J):EZ;let Y={value:f,observers:null,observerSlots:null,comparator:J.equals||void 0};{if(J.name)Y.name=J.name;if(J.internal)Y.internal=!0;else if(oW(Y),XJ.afterCreateSignal)XJ.afterCreateSignal(Y)}let z=(G)=>{if(typeof G==="function")if(j0&&j0.running&&j0.sources.has(Y))G=G(Y.tValue);else G=G(Y.value);return nH(Y,G)};return[sW.bind(Y),z]}function iW(f,J,Y){let z=sG(f,J,!0,T1,Y);if(mz&&j0&&j0.running)df.push(z);else qz(z)}function RJ(f,J,Y){let z=sG(f,J,!1,T1,Y);if(mz&&j0&&j0.running)df.push(z);else qz(z)}function Gf(f,J,Y){_W=P3;let z=sG(f,J,!1,T1,Y),G=_G&&u1(_G);if(G)z.suspense=G;if(!Y||!Y.render)z.user=!0;B1?B1.push(z):qz(z)}function U0(f,J,Y){Y=Y?Object.assign({},EZ,Y):EZ;let z=sG(f,J,!0,0,Y);if(z.observers=null,z.observerSlots=null,z.comparator=Y.equals||void 0,mz&&j0&&j0.running)z.tState=T1,df.push(z);else qz(z);return sW.bind(z)}function T3(f){return f&&typeof f==="object"&&"then"in f}function PZ(f,J,Y){let z,G,X;if(typeof J==="function")z=f,G=J,X=Y||{};else z=!0,G=f,X=J||{};let q=null,Q=PH,H=null,B=!1,V=!1,j="initialValue"in X,U=typeof z==="function"&&U0(z),L=new Set,[O,M]=(X.storage||r)(X.initialValue),[R,S]=r(void 0),[a,N]=r(void 0,{equals:!1}),[g,C]=r(j?"ready":"unresolved");if(hf.context){if(H=hf.getNextContextId(),X.ssrLoadFrom==="initial")Q=X.initialValue;else if(hf.load&&hf.has(H))Q=hf.load(H)}function y(T,Q0,p,D0){if(q===T){if(q=null,D0!==void 0&&(j=!0),(T===Q||Q0===Q)&&X.onHydrated)queueMicrotask(()=>X.onHydrated(D0,{value:Q0}));if(Q=PH,j0&&T&&B)j0.promises.delete(T),B=!1,C1(()=>{j0.running=!0,_(Q0,p)},!1);else _(Q0,p)}return Q0}function _(T,Q0){C1(()=>{if(Q0===void 0)M(()=>T);C(Q0!==void 0?"errored":j?"ready":"unresolved"),S(Q0);for(let p of L.keys())p.decrement();L.clear()},!1)}function z0(){let T=_G&&u1(_G),Q0=O(),p=R();if(p!==void 0&&!q)throw p;if(Kf&&!Kf.user&&T)iW(()=>{if(a(),q){if(T.resolved&&j0&&B)j0.promises.add(q);else if(!L.has(T))T.increment(),L.add(T)}});return Q0}function t(T=!0){if(T!==!1&&V)return;V=!1;let Q0=U?U():z;if(B=j0&&j0.running,Q0==null||Q0===!1){y(q,$f(O));return}if(j0&&q)j0.promises.delete(q);let p,D0=Q!==PH?Q:$f(()=>{try{return G(Q0,{value:O(),refetching:T})}catch(g0){p=g0}});if(p!==void 0){y(q,void 0,uZ(p),Q0);return}else if(!T3(D0))return y(q,D0,void 0,Q0),D0;if(q=D0,"v"in D0){if(D0.s===1)y(q,D0.v,void 0,Q0);else y(q,void 0,uZ(D0.v),Q0);return D0}return V=!0,queueMicrotask(()=>V=!1),C1(()=>{C(j?"refreshing":"pending"),N()},!1),D0.then((g0)=>y(D0,g0,void 0,Q0),(g0)=>y(D0,void 0,uZ(g0),Q0))}Object.defineProperties(z0,{state:{get:()=>g()},error:{get:()=>R()},loading:{get(){let T=g();return T==="pending"||T==="refreshing"}},latest:{get(){if(!j)return z0();let T=R();if(T&&!q)throw T;return O()}}});let Y0=e0;if(U)iW(()=>(Y0=e0,t(!1)));else t(!1);return[z0,{refetch:(T)=>u3(Y0,()=>t(T)),mutate:M}]}function vZ(f){return C1(f,!1)}function $f(f){if(!vz&&Kf===null)return f();let J=Kf;Kf=null;try{if(vz)return vz.untrack(f);return f()}finally{Kf=J}}function k1(f,J,Y){let z=Array.isArray(f),G,X=Y&&Y.defer;return(q)=>{let Q;if(z){Q=Array(f.length);for(let B=0;B<f.length;B++)Q[B]=f[B]()}else Q=f();if(X)return X=!1,q;let H=$f(()=>J(Q,G,q));return G=Q,H}}function J1(f){Gf(()=>$f(f))}function mf(f){if(e0===null)console.warn("cleanups created outside a `createRoot` or `render` will never be run");else if(e0.cleanups===null)e0.cleanups=[f];else e0.cleanups.push(f);return f}function mZ(){return Kf}function u3(f,J){let Y=e0,z=Kf;e0=f,Kf=null;try{return C1(J,!0)}catch(G){cZ(G)}finally{e0=Y,Kf=z}}function E3(f){if(j0&&j0.running)return f(),j0.done;let J=Kf,Y=e0;return Promise.resolve().then(()=>{Kf=J,e0=Y;let z;if(mz||_G)z=j0||(j0={sources:new Set,effects:[],promises:new Set,disposed:new Set,queue:new Set,running:!0}),z.done||(z.done=new Promise((G)=>z.resolve=G)),z.running=!0;return C1(f,!1),Kf=e0=null,z?z.done:void 0})}function aW(f,J){let Y=sG(()=>$f(()=>{return Object.assign(f,{[S3]:!0}),f(J)}),void 0,!0,0);return Y.props=J,Y.observers=null,Y.observerSlots=null,Y.name=f.name,Y.component=f,qz(Y),Y.tValue!==void 0?Y.tValue:Y.value}function oW(f){if(e0){if(e0.sourceMap)e0.sourceMap.push(f);else e0.sourceMap=[f];f.graph=e0}if(XJ.afterRegisterGraph)XJ.afterRegisterGraph(f)}function CJ(f,J){let Y=Symbol("context");return{id:Y,Provider:v3(Y,J),defaultValue:f}}function u1(f){let J;return e0&&e0.context&&(J=e0.context[f.id])!==void 0?J:f.defaultValue}function x3(f){let J=U0(f),Y=U0(()=>cH(J()),void 0,{name:"children"});return Y.toArray=()=>{let z=Y();return Array.isArray(z)?z:z!=null?[z]:[]},Y}function sW(){let f=j0&&j0.running;if(this.sources&&(f?this.tState:this.state))if((f?this.tState:this.state)===T1)qz(this);else{let J=df;df=null,C1(()=>xZ(this),!1),df=J}if(Kf){let J=this.observers;if(!J||J[J.length-1]!==Kf){let Y=J?J.length:0;if(!Kf.sources)Kf.sources=[this],Kf.sourceSlots=[Y];else Kf.sources.push(this),Kf.sourceSlots.push(Y);if(!J)this.observers=[Kf],this.observerSlots=[Kf.sources.length-1];else J.push(Kf),this.observerSlots.push(Kf.sources.length-1)}}if(f&&j0.sources.has(this))return this.tValue;return this.value}function nH(f,J,Y){let z=j0&&j0.running&&j0.sources.has(f)?f.tValue:f.value;if(!f.comparator||!f.comparator(z,J)){if(j0){let G=j0.running;if(G||!Y&&j0.sources.has(f))j0.sources.add(f),f.tValue=J;if(!G)f.value=J}else f.value=J;if(f.observers&&f.observers.length)C1(()=>{for(let G=0;G<f.observers.length;G+=1){let X=f.observers[G],q=j0&&j0.running;if(q&&j0.disposed.has(X))continue;if(q?!X.tState:!X.state){if(X.pure)df.push(X);else B1.push(X);if(X.observers)eW(X)}if(!q)X.state=T1;else X.tState=T1}if(df.length>1e6){if(df=[],N3)throw Error("Potential Infinite Loop Detected.");throw Error()}},!1)}return J}function qz(f){if(!f.fn)return;DY(f);let J=hZ;if($W(f,j0&&j0.running&&j0.sources.has(f)?f.tValue:f.value,J),j0&&!j0.running&&j0.sources.has(f))queueMicrotask(()=>{C1(()=>{j0&&(j0.running=!0),Kf=e0=f,$W(f,f.tValue,J),Kf=e0=null},!1)})}function $W(f,J,Y){let z,G=e0,X=Kf;Kf=e0=f;try{z=f.fn(J)}catch(q){if(f.pure)if(j0&&j0.running)f.tState=T1,f.tOwned&&f.tOwned.forEach(DY),f.tOwned=void 0;else f.state=T1,f.owned&&f.owned.forEach(DY),f.owned=null;return f.updatedAt=Y+1,cZ(q)}finally{Kf=X,e0=G}if(!f.updatedAt||f.updatedAt<=Y){if(f.updatedAt!=null&&"observers"in f)nH(f,z,!0);else if(j0&&j0.running&&f.pure){if(!j0.sources.has(f))f.value=z;j0.sources.add(f),f.tValue=z}else f.value=z;f.updatedAt=Y}}function sG(f,J,Y,z=T1,G){let X={fn:f,state:z,updatedAt:null,owned:null,sources:null,sourceSlots:null,cleanups:null,value:J,owner:e0,context:e0?e0.context:null,pure:Y};if(j0&&j0.running)X.state=0,X.tState=z;if(e0===null)console.warn("computations created outside a `createRoot` or `render` will never be disposed");else if(e0!==I3)if(j0&&j0.running&&e0.pure)if(!e0.tOwned)e0.tOwned=[X];else e0.tOwned.push(X);else if(!e0.owned)e0.owned=[X];else e0.owned.push(X);if(G&&G.name)X.name=G.name;if(vz&&X.fn){let q=X.fn,[Q,H]=r(void 0,{equals:!1}),B=vz.factory(q,H);mf(()=>B.dispose());let V,j=()=>E3(H).then(()=>{if(V)V.dispose(),V=void 0});X.fn=(U)=>{if(Q(),j0&&j0.running){if(!V)V=vz.factory(q,j);return V.track(U)}return B.track(U)}}return XJ.afterCreateOwner&&XJ.afterCreateOwner(X),X}function oG(f){let J=j0&&j0.running;if((J?f.tState:f.state)===0)return;if((J?f.tState:f.state)===pG)return xZ(f);if(f.suspense&&$f(f.suspense.inFallback))return f.suspense.effects.push(f);let Y=[f];while((f=f.owner)&&(!f.updatedAt||f.updatedAt<hZ)){if(J&&j0.disposed.has(f))return;if(J?f.tState:f.state)Y.push(f)}for(let z=Y.length-1;z>=0;z--){if(f=Y[z],J){let G=f,X=Y[z+1];while((G=G.owner)&&G!==X)if(j0.disposed.has(G))return}if((J?f.tState:f.state)===T1)qz(f);else if((J?f.tState:f.state)===pG){let G=df;df=null,C1(()=>xZ(f,Y[0]),!1),df=G}}}function C1(f,J){if(df)return f();let Y=!1;if(!J)df=[];if(B1)Y=!0;else B1=[];hZ++;try{let z=f();return w3(Y),z}catch(z){if(!Y)B1=null;df=null,cZ(z)}}function w3(f){if(df){if(mz&&j0&&j0.running)h3(df);else tW(df);df=null}if(f)return;let J;if(j0){if(!j0.promises.size&&!j0.queue.size){let{sources:z,disposed:G}=j0;B1.push.apply(B1,j0.effects),J=j0.resolve;for(let X of B1)"tState"in X&&(X.state=X.tState),delete X.tState;j0=null,C1(()=>{for(let X of G)DY(X);for(let X of z){if(X.value=X.tValue,X.owned)for(let q=0,Q=X.owned.length;q<Q;q++)DY(X.owned[q]);if(X.tOwned)X.owned=X.tOwned;delete X.tValue,delete X.tOwned,X.tState=0}lW(!1)},!1)}else if(j0.running){j0.running=!1,j0.effects.push.apply(j0.effects,B1),B1=null,lW(!0);return}}let Y=B1;if(B1=null,Y.length)C1(()=>_W(Y),!1);else XJ.afterUpdate&&XJ.afterUpdate();if(J)J()}function tW(f){for(let J=0;J<f.length;J++)oG(f[J])}function h3(f){for(let J=0;J<f.length;J++){let Y=f[J],z=j0.queue;if(!z.has(Y))z.add(Y),mz(()=>{z.delete(Y),C1(()=>{j0.running=!0,oG(Y)},!1),j0&&(j0.running=!1)})}}function P3(f){let J,Y=0;for(J=0;J<f.length;J++){let z=f[J];if(!z.user)oG(z);else f[Y++]=z}if(hf.context){if(hf.count){hf.effects||(hf.effects=[]),hf.effects.push(...f.slice(0,Y));return}mH()}if(hf.effects&&(hf.done||!hf.count))f=[...hf.effects,...f],Y+=hf.effects.length,delete hf.effects;for(J=0;J<Y;J++)oG(f[J])}function xZ(f,J){let Y=j0&&j0.running;if(Y)f.tState=0;else f.state=0;for(let z=0;z<f.sources.length;z+=1){let G=f.sources[z];if(G.sources){let X=Y?G.tState:G.state;if(X===T1){if(G!==J&&(!G.updatedAt||G.updatedAt<hZ))oG(G)}else if(X===pG)xZ(G,J)}}}function eW(f){let J=j0&&j0.running;for(let Y=0;Y<f.observers.length;Y+=1){let z=f.observers[Y];if(J?!z.tState:!z.state){if(J)z.tState=pG;else z.state=pG;if(z.pure)df.push(z);else B1.push(z);z.observers&&eW(z)}}}function DY(f){let J;if(f.sources)while(f.sources.length){let Y=f.sources.pop(),z=f.sourceSlots.pop(),G=Y.observers;if(G&&G.length){let X=G.pop(),q=Y.observerSlots.pop();if(z<G.length)X.sourceSlots[q]=z,G[z]=X,Y.observerSlots[z]=q}}if(f.tOwned){for(J=f.tOwned.length-1;J>=0;J--)DY(f.tOwned[J]);delete f.tOwned}if(j0&&j0.running&&f.pure)fV(f,!0);else if(f.owned){for(J=f.owned.length-1;J>=0;J--)DY(f.owned[J]);f.owned=null}if(f.cleanups){for(J=f.cleanups.length-1;J>=0;J--)f.cleanups[J]();f.cleanups=null}if(j0&&j0.running)f.tState=0;else f.state=0;delete f.sourceMap}function fV(f,J){if(!J)f.tState=0,j0.disposed.add(f);if(f.owned)for(let Y=0;Y<f.owned.length;Y++)fV(f.owned[Y])}function uZ(f){if(f instanceof Error)return f;return Error(typeof f==="string"?f:"Unknown error",{cause:f})}function rW(f,J,Y){try{for(let z of J)z(f)}catch(z){cZ(z,Y&&Y.owner||null)}}function cZ(f,J=e0){let Y=dW&&J&&J.context&&J.context[dW],z=uZ(f);if(!Y)throw z;if(B1)B1.push({fn(){rW(z,Y,J)},state:T1});else rW(z,Y,J)}function cH(f){if(typeof f==="function"&&!f.length)return cH(f());if(Array.isArray(f)){let J=[];for(let Y=0;Y<f.length;Y++){let z=cH(f[Y]);if(Array.isArray(z))if(z.length<32768)J.push.apply(J,z);else for(let G=0;G<z.length;G++)J.push(z[G]);else J.push(z)}return J}return f}function v3(f,J){return function(z){let G;return RJ(()=>G=$f(()=>{return e0.context={...e0.context,[f]:z.value},x3(()=>z.children)}),void 0,J),G}}function pW(f){for(let J=0;J<f.length;J++)f[J]()}function c3(f,J,Y={}){let z=[],G=[],X=[],q=0,Q=J.length>1?[]:null;return mf(()=>pW(X)),()=>{let H=f()||[],B=H.length,V,j;return H[wZ],$f(()=>{let L,O,M,R,S,a,N,g,C;if(B===0){if(q!==0)pW(X),X=[],z=[],G=[],q=0,Q&&(Q=[]);if(Y.fallback)z=[m3],G[0]=Zz((y)=>{return X[0]=y,Y.fallback()}),q=1}else if(q===0){G=Array(B);for(j=0;j<B;j++)z[j]=H[j],G[j]=Zz(U);q=B}else{M=Array(B),R=Array(B),Q&&(S=Array(B));for(a=0,N=Math.min(q,B);a<N&&z[a]===H[a];a++);for(N=q-1,g=B-1;N>=a&&g>=a&&z[N]===H[g];N--,g--)M[g]=G[N],R[g]=X[N],Q&&(S[g]=Q[N]);L=new Map,O=Array(g+1);for(j=g;j>=a;j--)C=H[j],V=L.get(C),O[j]=V===void 0?-1:V,L.set(C,j);for(V=a;V<=N;V++)if(C=z[V],j=L.get(C),j!==void 0&&j!==-1)M[j]=G[V],R[j]=X[V],Q&&(S[j]=Q[V]),j=O[j],L.set(C,j);else X[V]();for(j=a;j<B;j++)if(j in M){if(G[j]=M[j],X[j]=R[j],Q)Q[j]=S[j],Q[j](j)}else G[j]=Zz(U);G=G.slice(0,q=B),z=H.slice(0)}return G});function U(L){if(X[j]=L,Q){let[O,M]=r(j,{name:"index"});return Q[j]=M,J(H[j],O)}return J(H[j])}}}function JV(f,J){if(n3){if(hf.context){let Y=hf.context;mH(k3());let z=aW(f,J||{});return mH(Y),z}}return aW(f,J||{})}function TZ(){return!0}function vH(f){return!(f=typeof f==="function"?f():f)?{}:f}function i3(){for(let f=0,J=this.length;f<J;++f){let Y=this[f]();if(Y!==void 0)return Y}}function nZ(...f){let J=!1;for(let q=0;q<f.length;q++){let Q=f[q];J=J||!!Q&&GJ in Q,f[q]=typeof Q==="function"?(J=!0,U0(Q)):Q}if(b3&&J)return new Proxy({get(q){for(let Q=f.length-1;Q>=0;Q--){let H=vH(f[Q])[q];if(H!==void 0)return H}},has(q){for(let Q=f.length-1;Q>=0;Q--)if(q in vH(f[Q]))return!0;return!1},keys(){let q=[];for(let Q=0;Q<f.length;Q++)q.push(...Object.keys(vH(f[Q])));return[...new Set(q)]}},d3);let Y={},z=Object.create(null);for(let q=f.length-1;q>=0;q--){let Q=f[q];if(!Q)continue;let H=Object.getOwnPropertyNames(Q);for(let B=H.length-1;B>=0;B--){let V=H[B];if(V==="__proto__"||V==="constructor")continue;let j=Object.getOwnPropertyDescriptor(Q,V);if(!z[V])z[V]=j.get?{enumerable:!0,configurable:!0,get:i3.bind(Y[V]=[j.get.bind(Q)])}:j.value!==void 0?j:void 0;else{let U=Y[V];if(U){if(j.get)U.push(j.get.bind(Q));else if(j.value!==void 0)U.push(()=>j.value)}}}}let G={},X=Object.keys(z);for(let q=X.length-1;q>=0;q--){let Q=X[q],H=z[Q];if(H&&H.get)Object.defineProperty(G,Q,H);else G[Q]=H?H.value:void 0}return G}function Zf(f){let J="fallback"in f&&{fallback:()=>f.fallback};return U0(c3(()=>f.each,f.children,J||void 0),void 0,{name:"value"})}function X0(f){let J=f.keyed,Y=U0(()=>f.when,void 0,{name:"condition value"}),z=J?Y:U0(Y,void 0,{equals:(G,X)=>!G===!X,name:"condition"});return U0(()=>{let G=z();if(G){let X=f.children;return typeof X==="function"&&X.length>0?$f(()=>X(J?G:()=>{if(!$f(z))throw l3("Show");return Y()})):X}return f.fallback},void 0,{name:"value"})}var hf,N3=!0,y3=(f,J)=>f===J,GJ,b3,wZ,S3,EZ,dW=null,_W,T1=1,pG=2,I3,PH,e0=null,j0=null,mz=null,vz=null,Kf=null,df=null,B1=null,hZ=0,XJ,Uu,lW,_G,m3,n3=!1,d3,l3=(f)=>`Attempting to access a stale value from <${f}> that could possibly be undefined. This may occur because you are reading the accessor returned from the component at a time where it has already been unmounted. We recommend cleaning up any stale timers or async, or reading from the initial condition.`,YV;var Wf=k(()=>{hf={context:void 0,registry:void 0,effects:void 0,done:!1,getContextId(){return nW(this.context.count)},getNextContextId(){return nW(this.context.count++)}};GJ=Symbol("solid-proxy"),b3=typeof Proxy==="function",wZ=Symbol("solid-track"),S3=Symbol("solid-dev-component"),EZ={equals:y3},_W=tW,I3={},PH={},XJ={afterUpdate:null,afterCreateOwner:null,afterCreateSignal:null,afterRegisterGraph:null};[Uu,lW]=r(!1);m3=Symbol("fallback");d3={get(f,J,Y){if(J===GJ)return Y;return f.get(J)},has(f,J){if(J===GJ)return!0;return f.has(J)},set:TZ,deleteProperty:TZ,getOwnPropertyDescriptor(f,J){return{configurable:!0,enumerable:!0,get(){return f.get(J)},set:TZ,deleteProperty:TZ}},ownKeys(f){return f.keys()}};YV={hooks:XJ,writeSignal:nH,registerGraph:oW};if(globalThis)if(!globalThis.Solid$$)globalThis.Solid$$=!0;else console.warn("You appear to have multiple instances of Solid. This can lead to unexpected behavior.")});function a3(f,J){switch((f??"").toUpperCase()){case"MERGED":return"merged";case"CLOSED":return"closed";case"OPEN":return(J??"").toUpperCase()==="APPROVED"?"ready_to_merge":"open";default:return"unknown"}}function $3(f){let J=(f.status??"").toUpperCase(),Y=(f.conclusion??"").toUpperCase(),z=(f.state??"").toUpperCase();if(J&&J!=="COMPLETED")return"pending";if(Y){if(Y==="SUCCESS"||Y==="NEUTRAL"||Y==="SKIPPED")return"passing";return"failing"}if(z==="SUCCESS")return"passing";if(z==="PENDING"||z==="EXPECTED")return"pending";if(z==="FAILURE"||z==="ERROR")return"failing";return"unknown"}function r3(f){if(!f||f.length===0)return"none";let J=!1,Y=!1;for(let z of f){let G=$3(z);if(G==="failing")return"failing";if(G==="pending")J=!0;else if(G==="passing")Y=!0}if(J)return"pending";if(Y)return"passing";return"unknown"}function GV(f,J){if(!f||typeof f.number!=="number")return null;return{provider:"github",lifecycle:a3(f.state,f.reviewDecision),checkState:r3(f.statusCheckRollup),number:f.number,url:f.url,title:f.title,baseRef:f.baseRefName,headRef:f.headRefName,reviewDecision:f.reviewDecision||void 0,mergeable:f.mergeable||void 0,lastCheckedAt:J}}function dZ(f,J){if(f===J)return!0;if(!f||!J)return!1;return f.provider===J.provider&&f.lifecycle===J.lifecycle&&f.checkState===J.checkState&&f.number===J.number&&f.url===J.url&&f.title===J.title&&f.baseRef===J.baseRef&&f.headRef===J.headRef&&f.reviewDecision===J.reviewDecision&&f.mergeable===J.mergeable}var zV="number,url,title,state,baseRefName,headRefName,reviewDecision,mergeable,statusCheckRollup";var dH,iH,lH,aH="DIRTY_WORKTREE",$H,rH;var pH=k(()=>{dH=class dH extends Error{from;to;taskId;constructor(f,J,Y){super(`illegal transition for task ${Y}: ${f} -> ${J}`);this.from=f;this.to=J;this.taskId=Y;this.name="IllegalTransitionError"}};iH=class iH extends Error{constructor(f){super(`task not found: ${f}`);this.name="TaskNotFoundError"}};lH=class lH extends Error{constructor(){super("cannot delete a main task; remove the repo from saved repos instead");this.name="CannotDeleteMainTaskError"}};$H=class $H extends Error{taskId;constructor(f){super(`${aH}: task ${f} worktree has uncommitted or untracked changes`);this.taskId=f;this.name="DirtyWorktreeError"}};rH=class rH extends Error{taskId;cause;constructor(f,J){super(`failed to remove worktree for task ${f}: ${J instanceof Error?J.message:String(J)}`);this.taskId=f;this.cause=J;this.name="WorktreeRemoveFailedError"}}});var XV;var ZV=k(()=>{XV=["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 qV(f){let J=f.auth,Y=J.kind==="key"?{kind:"key",keyPath:J.keyPath}:{kind:"password",getPassword:()=>zZ(J.keychainRef)};return{host:f.host,user:f.user,port:f.port,auth:Y,controlPath:tX(f.host,f.user,f.port)}}function cz(f){let J=mJ(f);if(!J)return new YZ;return new uz(qV(J))}function pJ(f){for(let J of Object.values(XH()))if(f===J.basePath||f.startsWith(`${J.basePath}/`))return new uz(qV(J));return new YZ}function QV(f){return f&&f1(f)?f:void 0}function iZ(f){let J=pJ(f);return J.isRemote||J.existsSync(f)}function If(f){return pJ(f).isRemote?OJ():f}var ZJ=k(()=>{lf();Af();_Q();tQ()});import{createHash as p3}from"crypto";import BV from"fs";import E1 from"path";function jV(f){if(!E1.isAbsolute(f))throw Error(`worktreeRootFor: repo must be an absolute path, got: ${f}`);return E1.join(ef(),_3,fO(f))}function WV(f){if(!E1.isAbsolute(f))throw Error(`managedWorktreeRootsFor: repo must be an absolute path, got: ${f}`);return[jV(f),...t3.map((J)=>E1.join(f,J))]}function VV(f,J){if(!J||/[/\\\0]/.test(J))throw Error(`worktreePathFor: invalid slug: ${JSON.stringify(J)}`);return E1.join(jV(f),J)}async function KV(f){if(f1(f)){let Y=mJ(f)?.basePath;if(!Y)return[];return cz(f).readdir(DV(Y))}let J=new Set;for(let Y of WV(f))try{for(let z of BV.readdirSync(Y,{withFileTypes:!0}))if(z.isDirectory())J.add(z.name)}catch{}return[...J]}function _H(f,J){if(!E1.isAbsolute(f)||!E1.isAbsolute(J))return null;let Y=HV(J);for(let z of WV(f)){let G=HV(z),X=E1.relative(G,Y);if(X!==""&&!X.startsWith("..")&&!E1.isAbsolute(X))return z}return null}function UV(f,J){return _H(f,J)!==null}function DV(f){return`${e3(f)}/.kobe/worktrees`}function LV(f,J){if(!J||/[/\\\0]/.test(J))throw Error(`remoteWorktreePathFor: invalid slug: ${JSON.stringify(J)}`);return`${DV(f)}/${J}`}function e3(f){return f.length>1&&f.endsWith("/")?f.replace(/\/+$/,""):f}function HV(f){try{return BV.realpathSync(f)}catch{return E1.resolve(f)}}function fO(f){let Y=(E1.basename(f)||"repo").replace(/[^a-zA-Z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"repo",z=p3("sha1").update(E1.resolve(f)).digest("hex").slice(0,12);return`${Y}-${z}`}var _3="worktrees",o3=".kobe/worktrees",s3=".claude/worktrees",t3;var oH=k(()=>{lf();ZJ();Af();t3=[o3,s3]});class sH{activeSlugs;random;pool;pendingByRepo=new Map;chain=Promise.resolve();constructor(f,J={}){this.activeSlugs=f;if(this.random=J.random??Math.random,this.pool=J.pool??XV,this.pool.length===0)throw Error("SlugAllocator: animal pool cannot be empty")}async allocate(f){let J=this.chain,Y;this.chain=new Promise((z)=>{Y=z}),await J;try{return await this.pickLocked(f)}finally{Y()}}commit(f,J){this.deletePending(f,J)}cancel(f,J){this.deletePending(f,J)}async pickLocked(f){let J=await this.occupiedSlugs(f),Y=this.pool.filter((G)=>!J.has(G));if(Y.length>0){let G=Y[Math.floor(this.random()*Y.length)];return this.addPending(f,G),G}let z=this.pool[Math.floor(this.random()*this.pool.length)];for(let G=2;;G++){let X=`${z}-v${G}`;if(!J.has(X))return this.addPending(f,X),X}}async occupiedSlugs(f){let J=new Set(this.pendingByRepo.get(f)??[]);for(let Y of this.activeSlugs(f))if(Y)J.add(Y);for(let Y of await KV(f))J.add(Y);return J}addPending(f,J){let Y=this.pendingByRepo.get(f);if(!Y)Y=new Set,this.pendingByRepo.set(f,Y);Y.add(J)}deletePending(f,J){let Y=this.pendingByRepo.get(f);if(!Y)return;if(Y.delete(J),Y.size===0)this.pendingByRepo.delete(f)}}var MV=k(()=>{ZV();oH()});var OV={};jf(OV,{PLACEHOLDER_TASK_TITLE:()=>kJ,Orchestrator:()=>lZ});import{realpathSync as JO}from"fs";import{basename as YO,resolve as zO}from"path";function FV(f){return mJ(f)?.basePath??f}class lZ{store;worktrees;slugs;tasksAcc;setTasks;activeTaskAcc;setActiveTaskSig;unsubscribeStore;worktreeLocks=new Map;mainTaskLocks=new Map;constructor(f){this.store=f.store,this.worktrees=f.worktrees,this.slugs=new sH((X)=>this.store.list().filter((q)=>q.repo===X&&q.kind!=="main").map((q)=>{return q.worktreePath.match(/([^/\\]+)[/\\]*$/)?.[1]??""}).filter((q)=>q.length>0));let[J,Y]=r(this.store.list());this.tasksAcc=J,this.setTasks=(X)=>Y(()=>X);let[z,G]=r(null);this.activeTaskAcc=z,this.setActiveTaskSig=(X)=>G(()=>X),this.unsubscribeStore=this.store.subscribe((X)=>{this.setTasks(X.slice())})}async init(){}activeTaskSignal(){return this.activeTaskAcc}async setActiveTask(f){let J=f===null?null:String(f);if(this.setActiveTaskSig(J),J&&this.store.get(J))await this.store.update(J,{})}tasksSignal(){return this.tasksAcc}subscribeTasks(f){return this.store.subscribe(f)}dispose(){this.unsubscribeStore()}listTasks(){return this.store.list()}getTask(f){return this.store.get(f)}async createTask(f){if(!f.repo)throw Error("createTask: repo is required");let J=(f.title??kJ).trim()||kJ,Y=await this.store.create({repo:f.repo,title:J,branch:f.branch??"",worktreePath:"",status:"backlog",kind:"task",vendor:f.vendor??Sf,...f.modelEffort?{modelEffort:f.modelEffort}:{}});if(f.baseRef)this.pendingBaseRefs.set(Y.id,f.baseRef);return Y}async ensureMainTask(f){let{repo:J,key:Y}=tG(f),z=this.store.list().find((q)=>q.kind==="main"&&tG(q.repo).key===Y);if(z)return z;let G=this.mainTaskLocks.get(Y);if(G)return G;let X=(async()=>{return await this.store.create({repo:J,title:GO(J),branch:"",worktreePath:FV(J),status:"backlog",kind:"main",vendor:Sf})})();this.mainTaskLocks.set(Y,X);try{return await X}finally{this.mainTaskLocks.delete(Y)}}async ensureWorktree(f){let J=this.requireTask(f);if(J.kind==="main")return FV(J.repo);if(J.worktreePath)return J.worktreePath;let Y=this.worktreeLocks.get(J.id);if(Y)return await Y,this.requireTask(J.id).worktreePath;let z=(async()=>{let X=await this.slugs.allocate(J.repo);try{let q=J.branch||SZ(J.title,J.id),Q=this.pendingBaseRefs.get(J.id),H=await this.worktrees.createForTask({repo:J.repo,slug:X,branch:q,baseRef:Q});this.slugs.commit(J.repo,X),this.pendingBaseRefs.delete(J.id),await this.store.update(J.id,{worktreePath:H.path,branch:q})}catch(q){throw this.slugs.cancel(J.repo,X),q}})();this.worktreeLocks.set(J.id,z);try{await z}finally{this.worktreeLocks.delete(J.id)}return this.requireTask(J.id).worktreePath}async setTitle(f,J){let Y=J.trim();if(!Y)throw Error("setTitle: title is required (empty or whitespace-only rejected)");let z=this.requireTask(f);if(z.title===Y)return;await this.store.update(z.id,{title:Y}),await this.followBranchToTitle(z,Y)}async followBranchToTitle(f,J){if(f.kind==="main"||!f.worktreePath)return;if(f.branch!==SZ(kJ,f.id))return;let Y=SZ(J,f.id);if(Y===f.branch)return;try{await this.setBranch(f.id,Y)}catch(z){console.error(`[kobe] follow-branch-to-title failed for ${f.id}:`,z)}}async setBranch(f,J){let Y=J.trim();if(!Y)throw Error("setBranch: branch is required (empty or whitespace-only rejected)");let z=this.requireTask(f);if(z.kind==="main")throw Error("setBranch: a main task tracks the repo's own branch; rename it with git directly");if(z.branch===Y)return;if(z.worktreePath)await this.worktrees.renameBranch(z.worktreePath,z.branch,Y);await this.store.update(z.id,{branch:Y})}async setVendor(f,J){let Y=this.requireTask(f);if(Y.vendor===J)return;await this.store.update(Y.id,{vendor:J})}async setPinned(f,J){let Y=this.requireTask(f);if(Y.kind==="main")return;let z=J??!Y.pinned;if((Y.pinned??!1)===z)return;await this.store.update(Y.id,{pinned:z})}async moveTask(f,J){let Y=this.requireTask(f);if(Y.kind==="main")return;let z=this.store.list().filter((G)=>(G.kind??"task")!=="main"&&G.archived===Y.archived&&(G.pinned??!1)===(Y.pinned??!1)).map((G)=>String(G.id));await this.store.move(Y.id,J,z)}async setArchived(f,J){let Y=this.requireTask(f);if(Y.kind==="main")return;let z=J??!Y.archived;if(Y.archived===z)return;await this.store.update(Y.id,{archived:z})}async reorderTasks(f){if(f.length===0)return;for(let J of f){if(this.requireTask(J.taskId).kind==="main")throw Error(`cannot reorder a main task: ${J.taskId}`);if(!Number.isFinite(J.position))throw Error(`position must be a finite number: ${J.taskId}`)}await this.store.reorder(f.map((J)=>({id:J.taskId,position:J.position})))}async setStatus(f,J){let Y=this.requireTask(f);if(Y.status===J)return;if(Y.status==="done"&&J==="error"||Y.status==="error"&&J==="done")throw new dH(Y.status,J,Y.id);await this.store.update(Y.id,{status:J})}async setPRStatus(f,J){let Y=this.requireTask(f);if(dZ(Y.prStatus,J??void 0))return;await this.store.update(Y.id,{prStatus:J??void 0})}async deleteTask(f,J){let Y=this.store.get(f);if(!Y)return;if(Y.kind==="main")throw new lH;let z=J?.force===!0;if(Y.worktreePath){if(!z){let G=!1;try{G=await this.worktrees.isDirty(Y.worktreePath)}catch{}if(G)throw new $H(Y.id)}try{await this.worktrees.remove(Y.worktreePath,{force:z})}catch(G){throw new rH(Y.id,G)}}await this.store.remove(Y.id),this.pendingBaseRefs.delete(Y.id),this.worktreeLocks.delete(Y.id)}async forgetProject(f){if(!f)throw Error("forgetProject: repo is required");let J=tG(f).key;for(let Y of O1())if(tG(Y).key===J)zH(Y);for(let Y of this.store.list()){if(Y.kind!=="main")continue;if(tG(Y.repo).key!==J)continue;await this.store.remove(Y.id),this.pendingBaseRefs.delete(Y.id),this.worktreeLocks.delete(Y.id)}}async discoverAdoptableWorktrees(f){if(!f)throw Error("discoverAdoptableWorktrees: repo is required");let J=await this.worktrees.listAll(f),Y=new Set(this.store.list().filter((z)=>z.worktreePath).map((z)=>nz(z.worktreePath)));return J.filter((z)=>!Y.has(nz(z.path)))}async adoptWorktree(f){if(!f.repo)throw Error("adoptWorktree: repo is required");if(!f.worktreePath)throw Error("adoptWorktree: worktreePath is required");let J=nz(f.worktreePath),Y=this.adoptLocks.get(J);if(Y)return Y;let z=this.adoptWorktreeLocked(f,J);this.adoptLocks.set(J,z);try{return await z}finally{this.adoptLocks.delete(J)}}async adoptWorktreeLocked(f,J){let Y=this.store.list().find((Q)=>Q.worktreePath&&nz(Q.worktreePath)===J);if(Y){if(f.ifExists==="return")return Y;throw Error(`adoptWorktree: ${f.worktreePath} is already adopted as a task`)}let G=(await this.worktrees.listAll(f.repo)).find((Q)=>nz(Q.path)===J);if(!G)throw Error(`adoptWorktree: ${f.worktreePath} is not an adoptable git worktree of ${f.repo} (unknown, detached, or the main checkout)`);let X=f.branch?.trim()||G.branch,q=(f.title??YO(G.path)).trim()||kJ;return this.store.create({repo:f.repo,title:q,branch:X,worktreePath:G.path,status:"backlog",kind:"task",vendor:f.vendor??Sf})}pendingBaseRefs=new Map;adoptLocks=new Map;requireTask(f){let J=this.store.get(f);if(!J)throw new iH(String(f));return J}}function GO(f){let J=f.split(/[/\\]/).filter(Boolean);return J.length>0?J[J.length-1]??f:f}function tG(f){let J=PJ(f);return{repo:J,key:f1(J)?J:nz(J)}}function nz(f){try{return JO(f)}catch{return zO(f)}}var kJ="(new task)";var eG=k(()=>{Wf();Af();I1();pH();MV()});function dz(f,J,Y){if(!J)return f;let z=cz(J);return z.ensureReady(),z.wrapCommand(f,{tty:!0,cwd:Y})}function _f(){let f=[];for(let J of["KOBE_HOME_DIR","KOBE_DAEMON_SOCKET_PATH","KOBE_TMUX_SOCKET"]){let Y=process.env[J];if(Y&&Y.length>0)f.push(`${J}=${Xf(Y)}`)}return f.length>0?`${f.join(" ")} `:""}var fX="@kobe_remote";var Qz=k(()=>{ZJ();zJ()});var GX={};jf(GX,{windowIsSurface:()=>BO,windowCount:()=>qO,tmuxSessionName:()=>Lf,tmuxCommandSequence:()=>eH,tmuxAvailable:()=>NJ,tmuxArgs:()=>Hz,tagPaneRole:()=>RV,tagClaudePane:()=>HO,switchClientBeforeKill:()=>bJ,setWindowOption:()=>FY,setSessionOption:()=>LY,sessionExists:()=>Hf,sendKeys:()=>$Z,sendKeyName:()=>zX,runTmuxSequenceCapturing:()=>JX,runTmuxSequence:()=>Pf,runTmuxCapturing:()=>d0,runTmux:()=>h0,paneIdByRole:()=>JB,newWindow:()=>QJ,killSession:()=>l1,globalTasksPaneWidth:()=>aZ,getSessionOptions:()=>N1,getSessionOption:()=>Bz,getServerOptions:()=>MY,getServerOption:()=>gV,ensureFallbackSession:()=>rZ,currentSessionName:()=>y1,claudePaneIdStrict:()=>az,claudePaneId:()=>YB,capturePaneById:()=>$z,attachArgv:()=>lz,SURFACE_WINDOW_OPTION:()=>zB,PANE_ROLE_OPTION:()=>YX,KOBE_TMUX_SOCKET:()=>qJ,KOBE_HOME_SESSION:()=>CV,CLAUDE_ROLE_OPTION:()=>QO,CHAT_TAB_SESSION_ID_OPTION:()=>yJ});import{homedir as XO}from"os";function Hz(...f){return["tmux","-L",qJ,...f]}function Lf(f){return`kobe-${f.replace(/[^A-Za-z0-9_-]/g,"")}`}function lz(f){return Hz("attach-session","-t",`=${f}`)}async function tH(f){if(!f)return"";try{return await new Response(f).text()}catch{return""}}async function h0(f){try{let J=Bun.spawn(Hz(...f),{stdin:"ignore",cwd:iz,stdout:"ignore",stderr:"pipe"}),[Y,z]=await Promise.all([tH(J.stderr),J.exited]);if(z!==0&&Y.trim().length>0)console.error(`[kobe tmux] ${f.join(" ")} (${z}): ${Y.trim()}`);return z}catch{return 1}}async function ZO(f){try{return await Bun.spawn(Hz(...f),{stdin:"ignore",cwd:iz,stdout:"ignore",stderr:"ignore"}).exited}catch{return 1}}function eH(f){let J=[];for(let Y of f){if(Y.length===0)continue;if(J.length>0)J.push(";");J.push(...Y)}return J}async function Pf(f){let J=eH(f);return J.length===0?0:h0(J)}async function d0(f){try{let J=Bun.spawn(Hz(...f),{stdin:"ignore",cwd:iz,stdout:"pipe",stderr:"pipe"}),[Y,z,G]=await Promise.all([tH(J.stdout),tH(J.stderr),J.exited]);if(G!==0&&z.trim().length>0)console.error(`[kobe tmux] ${f.join(" ")} (${G}): ${z.trim()}`);return{code:G,stdout:Y}}catch{return{code:1,stdout:""}}}async function JX(f){let J=eH(f);return J.length===0?{code:0,stdout:""}:d0(J)}async function NJ(){try{return await Bun.spawn(["tmux","-V"],{stdin:"ignore",cwd:iz,stdout:"ignore",stderr:"ignore"}).exited===0}catch{return!1}}async function Hf(f){return await ZO(["has-session","-t",`=${f}`])===0}async function qO(f){let{code:J,stdout:Y}=await d0(["list-windows","-t",`=${f}`,"-F","#{window_id}"]);if(J!==0)return 0;return Y.split(`
36
+ `).filter((z)=>z.trim().length>0).length}async function LY(f,J,Y){await h0(["set-option","-t",f,J,Y])}async function Bz(f,J){let{code:Y,stdout:z}=await d0(["show-options","-v","-t",f,J]);return Y===0?z.trim():""}async function N1(f,J){let Y=Object.fromEntries(J.map((X)=>[X,void 0])),{code:z,stdout:G}=await JX(J.map((X)=>["show-options","-q","-t",f,X]));if(z!==0)return Y;for(let X of G.split(`
37
+ `)){let q=X.indexOf(" ");if(q<=0)continue;let Q=X.slice(0,q);if(Q in Y)Y[Q]=X.slice(q+1).trim()}return Y}async function gV(f){let{code:J,stdout:Y}=await d0(["show-options","-sqv",f]);return J===0?Y.trim():""}async function MY(f){let J=Object.fromEntries(f.map((G)=>[G,void 0])),{code:Y,stdout:z}=await JX(f.map((G)=>["show-options","-sq",G]));if(Y!==0)return J;for(let G of z.split(`
38
+ `)){let X=G.indexOf(" ");if(X<=0)continue;let q=G.slice(0,X);if(q in J)J[q]=G.slice(X+1).trim()}return J}async function aZ(){let f=await gV(aJ),J=Number.parseInt(f,10);return Number.isFinite(J)&&J>0?Jz(J):eY}async function RV(f,J){await h0(["set-option","-p","-t",f,YX,J])}async function FY(f,J,Y){await h0(["set-window-option","-t",f,J,Y])}async function HO(f){await RV(f,fB)}async function JB(f,J,Y=!1){let{code:z,stdout:G}=await d0(["list-panes","-t",`=${f}`,"-F",`#{pane_id} #{${YX}}`]);if(z!==0)return"";let X="";for(let q of G.split(`
39
+ `)){let[Q,H]=q.split("\t");if(!Q)continue;if(!X)X=Q.trim();if(H?.trim()===J)return Q.trim()}return Y?X:""}async function YB(f){return JB(f,fB,!0)}async function az(f){return JB(f,fB,!1)}async function $z(f,J){if(!f)return"";let Y=["capture-pane","-t",f,"-p"];if(typeof J==="number"&&J>0)Y.push("-S",String(-J));let{code:z,stdout:G}=await d0(Y);return z===0?G:""}async function $Z(f,J){await h0(["send-keys","-t",f,"-l","--",J])}async function zX(f,J){await h0(["send-keys","-t",f,J])}async function QJ(f,J){let Y=["new-window","-t",`=${f}`,"-c",J.cwd];if(J.name)Y.push("-n",J.name);if(J.surface){Y.push("-P","-F","#{window_id}"),Y.push(J.command);let{code:z,stdout:G}=await d0(Y),X=G.trim();if(z===0&&X)await FY(X,zB,"1");return}Y.push(J.command),await h0(Y)}async function BO(f){let{code:J,stdout:Y}=await d0(["display-message","-t",f,"-p",`#{${zB}}`]);return J===0&&Y.trim()==="1"}async function y1(){let f=["display-message","-p"],J=process.env.TMUX_PANE;if(J&&J.length>0)f.push("-t",J);f.push("#{session_name}");let{code:Y,stdout:z}=await d0(f),G=z.trim();return Y===0&&G.length>0?G:null}async function l1(f){if(!f.startsWith("kobe-hidden-")){let J=iG(f);if(await Hf(J))await h0(["kill-session","-t",`=${J}`])}if(await Hf(f))await h0(["kill-session","-t",`=${f}`])}async function rZ(){let f=CV;if(await Hf(f)){if(await Bz(f,AV)==="tasks")return f;await h0(["kill-session","-t",`=${f}`])}let Y=(await d0(["new-session","-d","-s",f,"-c",iz,"-x","220","-y","50","-P","-F","#{pane_id}",qW()])).stdout.trim();if(Y){let z=await aZ(),X=(await d0(["split-window","-h","-b","-t",Y,"-l",`${z}`,"-c",iz,"-P","-F","#{pane_id}",R1(_f()+VY(Cf()))])).stdout.trim();if(X)await Pf([["set-option","-p","-t",X,YX,"tasks"],["select-pane","-t",X]])}return await LY(f,AV,"tasks"),f}async function bJ(f,J){if(await y1()!==f)return;if(J&&J!==f&&await Hf(J)){await h0(["switch-client","-t",`=${J}`]);return}let z=await rZ();await h0(["switch-client","-t",`=${z}`])}var qJ,iz,YX="@kobe_role",QO,fB="claude",yJ="@kobe_session_id",zB="@kobe_surface",CV="kobe-home",AV="@kobe_home";var Tf=k(()=>{lJ();Qz();zJ();qJ=process.env.KOBE_TMUX_SOCKET?.trim()||"kobe";iz=XO()||"/";QO=YX});async function jO(f,J=kV){let{code:Y,stdout:z}=await J.capture(["list-windows","-t",`=${f}`,"-F",`#{window_index} #{automatic-rename} #{${yJ}}`]);if(Y!==0)return[];let G=[];for(let X of z.split(`
40
+ `)){let[q,Q,H]=X.split("\t"),B=Number.parseInt((q??"").trim(),10);if(!Number.isInteger(B))continue;G.push({index:B,sessionId:H?.trim()??"",autoRename:Q?.trim()??""})}return G}async function WO(f,J,Y){let{code:z,stdout:G}=await Y.capture(["show-window-options","-t",`=${f}:${J}`,"automatic-rename"]);return z===0&&/\boff\b/.test(G)}async function VO(f){let{code:J,stdout:Y}=await f.capture(["show-window-options","-g","automatic-rename"]);return J===0&&/\boff\b/.test(Y)}async function KO(f,J,Y,z){return await z.run(["rename-window","-t",`=${f}:${J}`,"--",Y])===0}async function NV(f,J=UO){let Y=0,z=null,G=async(X,q)=>{if(q.autoRename==="1")return!1;if(q.autoRename==="0"){if(z===null)z=await VO(J.runner);if(!z)return!0}return WO(X,q.index,J.runner)};for(let X of f.listTasks()){if(X.archived||X.kind==="main"||!X.worktreePath)continue;let q=Lf(X.id),Q=await jO(q,J.runner);if(Q.length===0)continue;let H=Q.reduce((V,j)=>Math.min(V,j.index),Number.POSITIVE_INFINITY),B=X.vendor??Sf;for(let V of Q)try{if(await G(q,V))continue;let j=V.sessionId?await J.titleFromSessionId(B,V.sessionId):V.index===H?await J.titleFromWorktree(X.worktreePath,B):"";if(j&&await KO(q,V.index,j,J.runner))Y++}catch{}}return Y}var kV,UO;var yV=k(()=>{IZ();Tf();I1();kV={capture:d0,run:h0};UO={runner:kV,titleFromSessionId:cW,titleFromWorktree:Pz}});function SV(f){if(f instanceof Error)return f;let J;try{J=typeof f==="string"?f:JSON.stringify(f)}catch{J=String(f)}return Error(J)}function bV(f,J,Y=new Date){let z=SV(J);return`[${Y.toISOString()}] daemon ${f}: ${z.stack??`${z.name}: ${z.message}`}
41
+ `}function DO(f,J,Y=new Date){let z=SV(J);return`[${Y.toISOString()}] daemon error [${f}]: ${z.stack??`${z.name}: ${z.message}`}
42
+ `}function uf(f,J){process.stderr.write(DO(f,J))}function LO(f,J,Y=new Date){return`[${Y.toISOString()}] daemon [${f}]: ${J}
43
+ `}function OY(f,J){process.stderr.write(LO(f,J))}function IV(f=(J)=>process.stderr.write(J)){if(GB||XB)return;GB=(J)=>f(bV("unhandledRejection",J)),XB=(J)=>f(bV("uncaughtException",J)),process.on("unhandledRejection",GB),process.on("uncaughtException",XB)}var GB,XB;async function MO(f,J=Pz){let Y=[];for(let z of f.listTasks()){if(z.archived||z.title!==kJ||!z.worktreePath)continue;try{let G=await J(z.worktreePath,z.vendor??Sf);if(!G)continue;let X=f.getTask(z.id);if(!X||X.title!==kJ)continue;await f.setTitle(z.id,G),Y.push({id:z.id,title:G})}catch(G){uf("auto-title-poller",G)}}return Y}function TV(f,J=ZB,Y){if(J<=0)return()=>{};let z=!1,X=setInterval(()=>{if(Y&&!Y())return;if(z)return;z=!0,MO(f).then(()=>NV(f)).catch((q)=>uf("auto-title-poller",q)).finally(()=>{z=!1})},J);return X.unref?.(),()=>clearInterval(X)}var ZB=4000;var uV=k(()=>{IZ();eG();yV();I1()});class qB{last=new Map;sinks=new Set;publish(f,J){this.last.set(f,J);let Y={channel:f,payload:J};for(let z of this.sinks)z(Y)}snapshot(){return[...this.last].map(([f,J])=>({channel:f,payload:J}))}onPublish(f){return this.sinks.add(f),()=>{this.sinks.delete(f)}}}function pZ(){return nf()[jz]===!0}var jz="experimental.autoStatus";var XX=k(()=>{pY()});async function EV(f,J,Y=pZ){if(!Y())return"skipped";let z=f.getTask(J);if(!z)return"skipped";if((z.kind??"task")==="main"||z.archived)return"skipped";if(z.status!=="backlog")return"skipped";return await f.setStatus(J,"in_progress"),"moved"}var xV=k(()=>{XX()});import{createHash as FO}from"crypto";import{homedir as OO}from"os";import gY from"path";function kO(){return gY.join(process.env.KOBE_HOME_DIR??OO(),".kobe")}function NO(f){let Y=(gY.basename(f)||"repo").replace(/[^a-zA-Z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"repo",z=FO("sha1").update(gY.resolve(f)).digest("hex").slice(0,12);return`${Y}-${z}`}function yO(f){if(!gY.isAbsolute(f))throw Error(`worktreeRootFor: repo must be an absolute path, got: ${f}`);return gY.join(kO(),AO,NO(f))}function bO(f){if(!gY.isAbsolute(f))throw Error(`managedWorktreeRootsFor: repo must be an absolute path, got: ${f}`);return[yO(f),...CO.map((J)=>gY.join(f,J))]}function AY(f){return f.length>1&&f.endsWith("/")?f.slice(0,-1):f}function wV(f,J){return J===f||J.startsWith(`${f}/`)}function hV(f,J){let Y=AY(J),z,G=-1;for(let X of f){if(!X.worktreePath)continue;let q=AY(X.worktreePath);if(wV(q,Y)&&q.length>G)G=q.length,z=X.id}return z}function QB(f,J){let Y=AY(J),z,G=-1;for(let X of f){if(!X.repo)continue;let q=AY(X.repo);if(wV(q,Y)&&q.length>G)G=q.length,z=q}return z}function PV(f,J){let Y=AY(J),z=new Set,G=new Set;for(let X of f){if(X.repo)z.add(AY(X.repo));if(X.worktreePath)G.add(AY(X.worktreePath))}for(let X of z)for(let q of bO(X).map(AY)){let Q=`${q}/`;if(!Y.startsWith(Q))continue;let B=Y.slice(Q.length).split("/")[0];if(!B)continue;let V=`${Q}${B}`;if(G.has(V))return;return{repo:X,worktreePath:V}}return}var AO="worktrees",gO=".kobe/worktrees",RO=".claude/worktrees",CO;var vV=k(()=>{CO=[gO,RO]});function jB(f){return{message:f instanceof Error?f.message:String(f),name:f instanceof Error?f.name:void 0}}async function ZX(f,J,Y,z){let G=f.get(J);if(!G)throw Error(`unknown daemon request: ${J}`);return G.handle(WB(Y),z)}function qX(){return new Map([{name:"hello",handle(J,Y){let z=typeof J.protocolVersion==="number"?J.protocolVersion:n1,G=typeof J.minProtocolVersion==="number"?J.minProtocolVersion:z;if(!ZZ({localVersion:n1,localMin:QY,remoteVersion:z,remoteMin:G}))throw Error(`daemon is protocol v${n1} (min v${QY}); this client is v${z} (min v${G}). Upgrade your kobe.`);return{protocolVersion:n1,minProtocolVersion:QY,kobeVersion:s0,capabilities:[...qH],daemonPid:Y.daemon.pid,clientId:Y.clientId,tasks:Y.orch.listTasks().map(e1)}}},{name:"daemon.status",handle(J,Y){return{daemonPid:Y.daemon.pid,kobeVersion:s0,uptimeMs:Date.now()-Y.daemon.startedAt.getTime(),startedAt:Y.daemon.startedAt.toISOString(),attachedClients:Y.daemon.guiCount(),taskCount:Y.orch.listTasks().length,socketPath:Y.daemon.socketPath,webPort:Y.daemon.webPort??null}}},{name:"daemon.stop",async handle(J,Y){return await Y.daemon.stopSoon(),{}}},{name:"task.list",handle(J,Y){return{tasks:Y.orch.listTasks().map(e1)}}},{name:"task.get",handle(J,Y){let z=Ff(J,"taskId"),G=Y.orch.getTask(z);if(!G)throw Error(`task not found: ${z}`);return{task:e1(G)}}},{name:"task.create",async handle(J,Y){let z=Ff(J,"repo"),G=await Y.orch.createTask({repo:z,title:a1(J,"title"),branch:a1(J,"branch"),baseRef:a1(J,"baseRef"),vendor:BB(J,"vendor"),modelEffort:a1(J,"effort")});return{taskId:G.id,task:e1(G)}}},{name:"task.archive",async handle(J,Y){let z=Ff(J,"taskId");return await Y.orch.setArchived(z,HB(J,"archived")),{}}},{name:"task.rename",async handle(J,Y){let z=Ff(J,"taskId");return await Y.orch.setTitle(z,Ff(J,"title")),{}}},{name:"task.setBranch",async handle(J,Y){let z=Ff(J,"taskId");return await Y.orch.setBranch(z,Ff(J,"branch")),{}}},{name:"task.setVendor",async handle(J,Y){let z=Ff(J,"taskId"),G=BB(J,"vendor");if(!G)throw Error("task.setVendor: vendor is required");return await Y.orch.setVendor(z,G),{}}},{name:"task.delete",async handle(J,Y){let z=Ff(J,"taskId");return await Y.orch.deleteTask(z,{force:HB(J,"force")}),Y.activity.clearTask(z),{}}},{name:"task.pin",async handle(J,Y){let z=Ff(J,"taskId");return await Y.orch.setPinned(z,HB(J,"pinned")),{}}},{name:"task.move",async handle(J,Y){let z=Ff(J,"taskId"),G=Ff(J,"direction");if(G!=="up"&&G!=="down")throw Error("direction must be up or down");return await Y.orch.moveTask(z,G==="up"?-1:1),{}}},{name:"task.status",async handle(J,Y){let z=Ff(J,"taskId"),G=Ff(J,"status");if(!vW(G))throw Error("status must be a TaskStatus");let X=G==="done"?Y.orch.getTask(z):void 0,q=X?.status;if(await Y.orch.setStatus(z,G),G==="done"&&q!=="done"&&X)try{let Q=await Y.issues.mirrorTaskDone(X.repo,z);if(Q)Y.bus.publish("issue.snapshot",Q)}catch(Q){uf("issue-done-mirror",Q)}return{}}},{name:"task.reorder",async handle(J,Y){let z=J.moves;if(!Array.isArray(z)||z.length===0)throw Error("moves must be a non-empty array");if(z.length>500)throw Error("too many moves in one task.reorder batch (max 500)");let G=z.map((X)=>{if(typeof X!=="object"||X===null)throw Error("each move needs taskId and position");let q=X,Q=Ff(q,"taskId"),H=q.position;if(typeof H!=="number"||!Number.isFinite(H))throw Error("position must be a finite number");return{taskId:Q,position:H}});return await Y.orch.reorderTasks(G),{}}},{name:"task.ensureMain",async handle(J,Y){let z=Ff(J,"repo"),G=await Y.orch.ensureMainTask(z);return{task:e1(G)}}},{name:"project.forget",async handle(J,Y){let z=Ff(J,"repo");return await Y.orch.forgetProject(z),{}}},{name:"task.ensureWorktree",async handle(J,Y){let z=Ff(J,"taskId");Y.bus.publish("task.jobs",{taskId:z,kind:"ensureWorktree",phase:"running"});try{let G=await Y.orch.ensureWorktree(z);return Y.bus.publish("task.jobs",{taskId:z,kind:"ensureWorktree",phase:"done"}),{worktreePath:G}}catch(G){throw Y.bus.publish("task.jobs",{taskId:z,kind:"ensureWorktree",phase:"error",error:G instanceof Error?G.message:String(G)}),G}}},{name:"worktree.discoverAdoptable",async handle(J,Y){let z=Ff(J,"repo");return{worktrees:await Y.orch.discoverAdoptableWorktrees(z)}}},{name:"worktree.adopt",async handle(J,Y){let z=await Y.orch.adoptWorktree({repo:Ff(J,"repo"),worktreePath:Ff(J,"worktreePath"),branch:a1(J,"branch"),vendor:BB(J,"vendor"),title:a1(J,"title"),ifExists:a1(J,"ifExists")==="return"?"return":"error"});return{task:e1(z)}}},{name:"worktree.reconcile",async handle(J,Y){let z=Ff(J,"cwd"),G=Ff(J,"worktreePath"),X=QB(Y.orch.listTasks(),z)??QB(Y.orch.listTasks(),G);if(!X)return{adopted:!1};try{return{adopted:!0,taskId:(await Y.orch.adoptWorktree({repo:X,worktreePath:G,ifExists:"return"})).id}}catch(q){return uf("worktree-created",q),{adopted:!1}}}},{name:"task.setActive",async handle(J,Y){let z=a1(J,"taskId")??null;return await Y.orch.setActiveTask(z),Y.bus.publish("active-task",{taskId:z}),{}}},{name:"issue.list",async handle(J,Y){return Y.issues.list(Ff(J,"repoRoot"))}},{name:"issue.mutate",async handle(J,Y){let z=await Y.issues.mutate(Ff(J,"repoRoot"),J.op);return Y.bus.publish("issue.snapshot",z),z}},{name:"session.deliver",async handle(J,Y){let z=Ff(J,"taskId"),G=Ff(J,"text"),X=a1(J,"source");if(X!==void 0&&X!=="note"&&X!=="dispatcher")throw Error('source must be "note" or "dispatcher"');if(!Y.orch.getTask(z))throw Error(`task not found: ${z}`);return Y.bus.publish("session.deliver",{taskId:z,text:G,at:Date.now(),source:X??"dispatcher"}),{ok:!0}}},{name:"note.file",async handle(J,Y){let z=Ff(J,"taskId"),G=Ff(J,"text"),X=Y.orch.getTask(z);if(!X)throw Error(`task not found: ${z}`);let q=Y.orch.listTasks().find((H)=>(H.kind??"task")==="main"&&H.repo===X.repo&&!H.archived);if(!q||q.id===X.id)return{ok:!0,routed:!1};let Q=X.title||X.branch||z;return Y.bus.publish("session.deliver",{taskId:q.id,text:`[KOBE FIELD NOTE] from "${Q}" (task ${z}): ${G}`,at:Date.now(),source:"note"}),{ok:!0,routed:!0}}},{name:"engine.reportEvent",async handle(J,Y){let z=Ff(J,"kind");if(!BZ(z))throw Error(`unknown engine event kind: ${z}`);let G=a1(J,"taskId"),X=a1(J,"cwd");if(!G&&X&&z==="session-start"){let H=PV(Y.orch.listTasks(),X);if(H)try{await Y.orch.adoptWorktree({repo:H.repo,worktreePath:H.worktreePath,ifExists:"return"})}catch(B){uf("worktree-autosync",B)}}let q=G??(X?hV(Y.orch.listTasks(),X):void 0);if(!q)return{};let Q=SO(J);if(Y.activity.report(q,z,Q),z==="turn-start")EV(Y.orch,q).then((H)=>{if(H==="moved")console.log(`[status-rules] task ${q} auto-moved backlog \u2192 in_progress`)}).catch((H)=>uf("status-rules",H));return{}}}].map((J)=>[J.name,J]))}function WB(f){if(!f||typeof f!=="object"||Array.isArray(f))return{};return f}function Ff(f,J){let Y=f[J];if(typeof Y!=="string"||Y.length===0)throw Error(`${J} is required`);return Y}function a1(f,J){let Y=f[J];if(Y===void 0||Y===null||Y==="")return;if(typeof Y!=="string")throw Error(`${J} must be a string`);return Y}function HB(f,J){let Y=f[J];if(Y===void 0||Y===null)return;if(typeof Y!=="boolean")throw Error(`${J} must be a boolean`);return Y}function BB(f,J){let Y=a1(f,J);return Y&&Y.trim().length>0?Y:void 0}function SO(f){let J=f.detail;if(!J||typeof J!=="object"||Array.isArray(J))return;let Y=J,z={};if(Y.failure==="rate_limit"||Y.failure==="billing"||Y.failure==="other")z.failure=Y.failure;if(Y.waiting==="permission"||Y.waiting==="input")z.waiting=Y.waiting;if(typeof Y.note==="string")z.note=Y.note;return Object.keys(z).length>0?z:void 0}var _Z=k(()=>{jZ();xV();I1();D1();vV();_Y()});import{execFile as IO}from"child_process";import{mkdir as TO,readFile as uO,realpath as mV,rename as EO,stat as xO,writeFile as wO}from"fs/promises";import{homedir as hO}from"os";import{dirname as PO,isAbsolute as vO,join as mO,resolve as cV}from"path";import{promisify as cO}from"util";function nO(f){return(f instanceof Error?f.message:String(f)).includes("not a git repository")}function sZ(f=process.env.KOBE_HOME_DIR??hO()){return mO(f,".kobe","issues.json")}function dV(f){return typeof f==="string"&&nV.includes(f)}function dO(f){if(f===null||typeof f!=="object"||Array.isArray(f))return null;let J=f;if(typeof J.id!=="number")return null;return{id:J.id,title:typeof J.title==="string"?J.title:"(untitled)",status:dV(J.status)?J.status:"open",created:typeof J.created==="string"?J.created:"",body:typeof J.body==="string"?J.body:"",taskId:typeof J.taskId==="string"?J.taskId:void 0}}function iO(){return{version:1,repos:{}}}function lO(){let f=new Date,J=String(f.getMonth()+1).padStart(2,"0"),Y=String(f.getDate()).padStart(2,"0");return`${f.getFullYear()}-${J}-${Y}`}async function aO(f){let{stdout:J}=await MB("git",["-C",f,"rev-parse","--git-common-dir"]),Y=J.trim();return mV(vO(Y)?Y:cV(f,Y))}async function $O(f){let{stdout:J}=await MB("git",["-C",f,"rev-parse","--show-toplevel"]);return J.trim()}async function rO(f){let{stdout:J}=await MB("git",["-C",f,"worktree","list","--porcelain"]),Y=J.split(/\r?\n/).find((z)=>z.startsWith("worktree "))?.slice(9).trim();return Y?mV(Y):$O(f)}async function VB(f){if(typeof f!=="string"||f.length===0)throw Error("repoRoot is required");let J=cV(f);if(!(await xO(J).catch(()=>null))?.isDirectory())throw Error("repoRoot does not exist");try{let[z,G]=await Promise.all([rO(J),aO(J)]);return{repoRoot:z,repoKey:G}}catch(z){if(nO(z))throw Error("repoRoot is not a git repository");throw z}}async function KB(f){try{let J=JSON.parse(await uO(f,"utf8")),Y={};if(J.repos&&typeof J.repos==="object")for(let[z,G]of Object.entries(J.repos)){if(!G||typeof G!=="object")continue;let X=G;Y[z]={repoRoot:typeof X.repoRoot==="string"?X.repoRoot:"",nextId:typeof X.nextId==="number"?X.nextId:1,issues:Array.isArray(X.issues)?X.issues.map(dO).filter((q)=>q!==null):[]}}return{version:1,repos:Y}}catch(J){if(J.code==="ENOENT")return iO();throw J}}async function UB(f,J){await TO(PO(f),{recursive:!0});let Y=`${f}.tmp`;await wO(Y,`${JSON.stringify(J,null,2)}
44
+ `,"utf8"),await EO(Y,f)}function DB(f,J){return{repoRoot:f,exists:J!==null,nextId:J?.nextId??1,issues:J?.issues??[]}}async function LB(f,J){let z=(oZ.get(f)??Promise.resolve()).then(J),G=z.then(()=>{return},()=>{return});return oZ.set(f,G),G.then(()=>{if(oZ.get(f)===G)oZ.delete(f)}),z}class tZ{path;constructor(f=sZ()){this.path=f}async list(f){let{repoRoot:J,repoKey:Y}=await VB(f);return LB(this.path,async()=>{let z=await KB(this.path),G=z.repos[Y]??null;if(G&&G.repoRoot!==J)G.repoRoot=J,await UB(this.path,z);return DB(J,G)})}async mirrorTaskDone(f,J){let{repoRoot:Y,repoKey:z}=await VB(f);if(!J)return null;return LB(this.path,async()=>{let G=await KB(this.path),X=G.repos[z];if(!X)return null;let q=X.issues.find((Q)=>Q.taskId===J);if(!q||q.status==="done")return null;return q.status="done",X.repoRoot=Y,await UB(this.path,G),DB(Y,X)})}async mutate(f,J){let{repoRoot:Y,repoKey:z}=await VB(f);if(!J||typeof J!=="object"||Array.isArray(J)||typeof J.type!=="string")throw Error("missing op");return LB(this.path,async()=>{let G=await KB(this.path),X=G.repos[z];if(!X)X={repoRoot:Y,nextId:1,issues:[]},G.repos[z]=X;X.repoRoot=Y;let q=J;if(q.type==="create"){if(typeof q.title!=="string"||q.title.trim().length===0)throw Error("create requires a non-empty title");if(q.body!==void 0&&typeof q.body!=="string")throw Error("body must be a string");X.issues=[{id:X.nextId,title:q.title,status:"open",created:lO(),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(!dV(q.status))throw Error(`invalid status: must be one of ${nV.join(", ")}`);let Q=X.issues.find((H)=>H.id===q.id);if(!Q)throw Error(`no issue #${q.id}`);Q.status=q.status}else if(q.type==="update"){if(typeof q.id!=="number")throw Error("update requires a numeric id");if(q.title!==void 0&&(typeof q.title!=="string"||q.title.trim().length===0))throw Error("title must be a non-empty string");if(q.body!==void 0&&typeof q.body!=="string")throw Error("body must be a string");let Q=X.issues.find((H)=>H.id===q.id);if(!Q)throw Error(`no issue #${q.id}`);if(typeof q.title==="string")Q.title=q.title;if(typeof q.body==="string")Q.body=q.body}else if(q.type==="link"){if(typeof q.id!=="number")throw Error("link requires a numeric id");if(typeof q.taskId!=="string"||q.taskId.length===0)throw Error("link requires a non-empty taskId");let Q=X.issues.find((H)=>H.id===q.id);if(!Q)throw Error(`no issue #${q.id}`);Q.taskId=q.taskId}else if(q.type==="unlink"){if(typeof q.id!=="number")throw Error("unlink requires a numeric id");let Q=X.issues.find((H)=>H.id===q.id);if(!Q)throw Error(`no issue #${q.id}`);Q.taskId=void 0}else if(q.type==="delete"){if(typeof q.id!=="number")throw Error("delete requires a numeric id");let Q=X.issues.filter((H)=>H.id!==q.id);if(Q.length===X.issues.length)throw Error(`no issue #${q.id}`);X.issues=Q}else throw Error(`unknown op type: ${q.type}`);return await UB(this.path,G),DB(Y,X)})}}var MB,nV,oZ;var FB=k(()=>{MB=cO(IO),nV=["open","doing","hold","done"];oZ=new Map});import{mkdirSync as pO,watch as _O}from"fs";import{basename as oO,dirname as sO}from"path";function eZ(f){if(f.debounceMs<=0)return()=>{};let J=sO(f.filePath),Y=new Set([oO(f.filePath),...f.matchBasenames??[]]),z=null,G=null,X=null,q=()=>{try{f.onTrigger()}catch(H){f.onError(H)}},Q=()=>{if(z)clearTimeout(z);z=setTimeout(()=>{z=null,q()},f.debounceMs),z.unref?.()};try{pO(J,{recursive:!0}),X=_O(J,(H,B)=>{let V=B===null?null:String(B);if(V!==null&&!Y.has(V))return;Q()}),X.on("error",f.onError)}catch(H){f.onError(H)}if(f.pollMs&&f.pollMs>0)G=setInterval(q,f.pollMs),G.unref?.();return()=>{if(z)clearTimeout(z),z=null;if(G)clearInterval(G),G=null;X?.close(),X=null}}var OB=()=>{};import{homedir as tO}from"os";import{basename as eO,join as fA}from"path";function gB(f=process.env.KOBE_HOME_DIR??tO()){return fA(f,".kobe","settings","keybindings.yaml")}function iV(f,J={}){let Y=J.debounceMs??AB;if(Y<=0)return()=>{};let z=J.path??gB(),G=eO(z),X=G.replace(/\.yaml$/,".yml"),q=0;return f.publish("keybindings",{rev:q}),eZ({filePath:z,matchBasenames:[G,X],debounceMs:Y,onTrigger:()=>{try{q+=1,f.publish("keybindings",{rev:q})}catch(H){uf("keybindings-watcher",H)}},onError:(H)=>uf("keybindings-watcher",H)})}var AB=200;var lV=k(()=>{OB()});class RB{clients;idleGraceMs;onIdleStop;schedule;log;cancelIdle=null;stopping=!1;constructor(f){this.clients=f.clients,this.idleGraceMs=f.idleGraceMs,this.onIdleStop=f.onIdleStop,this.schedule=f.schedule??JA,this.log=f.log??OY}guiCount(){let f=0;for(let J of this.clients())if(J.holdsLifetime)f++;return f}hasSubscribers(){for(let f of this.clients())if(f.subscribed)return!0;return!1}isStopping(){return this.stopping}markStopping(){this.stopping=!0,this.clearIdle()}guiAttached(){this.clearIdle()}clientDisconnected(f){if(f)this.maybeArm()}clearIdle(){if(this.cancelIdle)this.cancelIdle(),this.cancelIdle=null}maybeArm(){if(this.stopping||this.guiCount()>0)return;this.clearIdle(),this.log("idle",`last gui gone \u2014 arming ${this.idleGraceMs}ms idle-stop grace`),this.cancelIdle=this.schedule(()=>{if(this.cancelIdle=null,this.stopping||this.guiCount()>0)return;this.log("idle","grace elapsed with no gui \u2014 self-stopping"),this.onIdleStop()},this.idleGraceMs)}}var JA=(f,J)=>{let Y=setTimeout(f,J);return Y.unref?.(),()=>clearTimeout(Y)};var aV=()=>{};import{spawn as YA}from"child_process";function CB(f,J,Y,z){if(Y)return f+z.slowRetryMs;return J+Math.max(z.minIntervalMs,(J-f)*5)}function kB(f,J){return!f.inFlight&&J>=f.nextAllowedAt}function fq(f,J,Y,z){let G=Date.now();if(!kB(f,G))return!1;f.inFlight=!0;let X=new AbortController,q=setTimeout(()=>X.abort(),J.timeoutMs);return(async()=>{let Q,H=!1;try{Q=await Y(X.signal),H=!0}catch{}clearTimeout(q);let B=X.signal.aborted;if(f.nextAllowedAt=CB(G,Date.now(),B,J),f.inFlight=!1,H&&!B)z(Q)})(),!0}function HJ(f,J,Y){return new Promise((z)=>{let G="",X=!1,q=(H)=>{if(X)return;X=!0,z({status:H,stdout:G})},Q=YA(f,J.slice(),{cwd:Y.cwd,stdio:["ignore","pipe","ignore"],env:Y.env,signal:Y.signal,killSignal:"SIGKILL"});Q.stdout?.on("data",(H)=>{G+=String(H)}),Q.on("error",()=>q(null)),Q.on("close",(H)=>q(H))})}var QX=()=>{};function qA(f){if(f.archived)return!1;if(f.kind==="main")return!1;if(!f.branch||!f.worktreePath)return!1;if(f1(f.repo)||f1(f.worktreePath))return!1;return!0}async function QA(f,J){let Y=J.tickMs??Jq,z=[];for(let G of f.listTasks()){if(!qA(G)){J.schedule.delete(G.id);continue}let X=J.schedule.get(G.id)??0;if(J.now<X)continue;try{let q=await J.run(G.worktreePath,G.branch);if(q.kind==="empty"){J.schedule.set(G.id,J.now+zA);continue}let Q=GV(q.view,J.at),H=f.getTask(G.id);if(!H){J.schedule.delete(G.id);continue}if(!dZ(H.prStatus,Q??void 0))await f.setPRStatus(G.id,Q),z.push(G.id);let B=Q?.lifecycle==="merged"||Q?.lifecycle==="closed";J.schedule.set(G.id,J.now+(B?GA:Y))}catch(q){uf("pr-status-poller",q),J.schedule.set(G.id,J.now+Y)}}return z}function $V(f,J=Jq,Y,z=ZA){if(J<=0)return()=>{};let G=new Map,X=!1,Q=setInterval(()=>{if(Y&&!Y())return;if(X)return;X=!0,QA(f,{run:z,now:Date.now(),at:new Date().toISOString(),schedule:G,tickMs:J}).catch((H)=>uf("pr-status-poller",H)).finally(()=>{X=!1})},J);return Q.unref?.(),()=>clearInterval(Q)}var Jq=30000,zA=300000,GA=600000,XA=1e4,ZA=async(f,J)=>{let Y=new AbortController,z=setTimeout(()=>Y.abort(),XA);try{let G=await HJ("gh",["pr","view",J,"--json",zV],{cwd:f,signal:Y.signal});if(G.status!==0)return{kind:"empty"};let X=JSON.parse(G.stdout);return typeof X.number==="number"?{kind:"pr",view:X}:{kind:"empty"}}catch{return{kind:"empty"}}finally{clearTimeout(z)}};var rV=k(()=>{QX();Af()});import{readFileSync as HA}from"fs";import{homedir as BA}from"os";import{basename as jA,join as WA}from"path";function yB(f=process.env.KOBE_HOME_DIR??BA()){return WA(f,".config","kobe","state.json")}function pV(f){let J={};try{let B=JSON.parse(HA(f,"utf8"));if(B&&typeof B==="object"&&!Array.isArray(B))J=B}catch{}let Y=typeof J.activeTheme==="string"&&J.activeTheme.length>0?J.activeTheme:"claude",z=J.transparentBackground===!0,G=typeof J.focusAccent==="string"&&KA.includes(J.focusAccent)?J.focusAccent:null,X=J.activeSortMode==="recent"?"recent":"default",q=J["tasksPane.keysCollapsed"]===!0,Q=typeof J["tasksPane.projectFilter"]==="string"&&J["tasksPane.projectFilter"].length>0?J["tasksPane.projectFilter"]:null,H=typeof J.locale==="string"&&J.locale.length>0?J.locale:"en";return{theme:Y,transparentBackground:z,focusAccent:G,locale:H,sortMode:X,keysCollapsed:q,projectFilter:Q}}function UA(f,J){return f.theme===J.theme&&f.transparentBackground===J.transparentBackground&&f.focusAccent===J.focusAccent&&f.locale===J.locale&&f.sortMode===J.sortMode&&f.keysCollapsed===J.keysCollapsed&&f.projectFilter===J.projectFilter}function _V(f,J={}){let Y=J.debounceMs??NB;if(Y<=0)return()=>{};let z=J.pollMs??VA,G=J.statePath??yB(),X=jA(G),q=pV(G);return f.publish("ui-prefs",q),eZ({filePath:G,matchBasenames:[X],debounceMs:Y,pollMs:z,onTrigger:()=>{try{let H=pV(G);if(UA(q,H))return;q=H,f.publish("ui-prefs",H)}catch(H){uf("ui-prefs-watcher",H)}},onError:(H)=>uf("ui-prefs-watcher",H)})}var NB=200,VA=250,KA;var oV=k(()=>{OB();KA=["primary","success","info"]});function bB(){return nf()[Wz]===!0}var Wz="experimental.dispatcher";var Yq=k(()=>{pY()});import{randomUUID as DA}from"crypto";function BJ(f){return`engineCommand.${f}`}function jJ(f){return`engineName.${f}`}function Vz(f){return kf(jJ(f))?.trim()||SB[f]||f}function HX(f){return pf(f??"claude").defaultCommand}function LA(f){let J=[],Y=/"([^"]*)"|'([^']*)'|(\S+)/g;for(let z=Y.exec(f);z!==null;z=Y.exec(f))J.push(z[1]??z[2]??z[3]??"");return J}function b1(f,J){let Y=f??"claude",z=kf(BJ(Y))?.trim(),G=(()=>{if(z){let X=LA(z);if(X.length>0)return X}return HX(Y)})();return MA(G,Y,J)}function MA(f,J,Y){let z=Y?.trim();if(!z)return f;let G=J??"claude";if(!pf(G).effortLevels?.includes(z))return f;if(G==="codex")return[...f,"-c",`model_reasoning_effort=${z}`];return f}function rz(f,J){if((J??"claude")!=="claude")return{argv:f,sessionId:null};if(f.some((z)=>FA.has(z)))return{argv:f,sessionId:null};let Y=DA();return{argv:[...f,"--session-id",Y],sessionId:Y}}function Kz(){let f=(J)=>/^[A-Za-z0-9_/.:=-]+$/.test(J)?J:`'${J.replace(/'/g,"'\\''")}'`;try{return[...Cf(),"api"].map(f).join(" ")}catch{return"kobe api"}}function OA(f,J=Kz()){return[`You are running inside kobe (a local multi-session task manager) as task ${f}.`,"kobe tracks a lifecycle status for this task on a board.","When you have COMPLETED the work requested in this session and verified it, report it by running:",` ${J} set-status --task-id ${f} --status in_review`,"Run it only when the work is genuinely done \u2014 never while you are asking the user a question, waiting for input, or mid-task.","Never set any other status value; everything beyond in_review is the user's decision."].join(`
45
+ `)}function AA(f,J=Kz()){return["kobe shares hard-won discoveries between its parallel sessions as one-line field notes.","When you RESOLVE a non-obvious, repo-level gotcha (a build flag, a flaky test, an environment quirk, an API trap), file it:",` ${J} note --task-id ${f} --text "<one line: the verified conclusion>"`,"File only verified conclusions another session could act on \u2014 never progress logs, opinions, or details specific to your own task. A handful per session at most."].join(`
46
+ `)}function gA(f,J=Kz(),Y={}){let z=[];if((Y.status??pZ)())z.push(OA(f,J));if((Y.notes??bB)())z.push(AA(f,J));return z.length>0?z.join(`
47
+
48
+ `):null}function zq(f,J,Y,z={}){if(!Y)return f;if((J??"claude")!=="claude")return f;if(f.includes("--append-system-prompt")||f.includes("--append-system-prompt-file"))return f;let G=gA(Y,Kz(),z);if(!G)return f;return[...f,"--append-system-prompt",G]}function RA(f,J=Kz()){return[`You are running inside kobe (a local multi-session task manager) as this repository's DISPATCHER (task ${f}, the repo's main session).`,"kobe runs multiple worktree task sessions on this repo in parallel. When one of them resolves a non-obvious gotcha, it files a one-line field note; kobe forwards each note to you as a user message prefixed with [KOBE FIELD NOTE].","Your job is routing that knowledge, fully autonomously \u2014 never ask the user for permission:",` - See the fleet: \`${J} collect --repo .\` (status, running, change counts per task), or \`--task-ids id1,id2\` for specific tasks.`,` - Relay a note to a task that would benefit: \`${J} dispatch --task-id <id> --prompt "[dispatcher] FYI from <author task>: <note verbatim>"\`.`," - Relay to the in-flight tasks whose work plausibly touches the same area \u2014 and to nobody else. If no task benefits, do nothing."," - Never relay a note back to its author, never relay the same note to the same task twice, and keep relays verbatim with provenance \u2014 no summarizing, no embellishment.","Use ONLY the dispatch verb to message sessions \u2014 the `send` verb pastes via tmux and would spawn a DUPLICATE engine for web-hosted sessions. If dispatch fails, report the error in your own session and stop; do not fall back.","Take no action on merge conflicts between tasks \u2014 the board's conflict radar is display-only by design, and resolution timing belongs to the humans and the tasks themselves.","Never run git commands inside other tasks' worktrees."].join(`
49
+ `)}function Gq(f,J,Y,z=bB){if(!Y||!z())return f;if((J??"claude")!=="claude")return f;if(f.includes("--append-system-prompt")||f.includes("--append-system-prompt-file"))return f;return[...f,"--append-system-prompt",RA(Y)]}var SB,FA;var x1=k(()=>{lJ();UY();XX();Yq();Af();U1();SB=Object.fromEntries(dY.map((f)=>[f,pf(f).displayName]));FA=new Set(["--session-id","--resume","-r","--continue","-c","--from-pr"])});function pz(f){return Uz.includes(f)?f:"auto"}var Uz,sV,_J="editor.kind",RY="editor.customCommand",Xq="auto";var Zq=k(()=>{Uz=["auto","vim","nvim","nano","emacs","custom"],sV=["nvim","vim","emacs","nano"]});function Lz(f){return f==="taskpanel"?"taskpanel":"chattab"}var oJ="settings.surface",Dz="chattab";function w1(f=process.env){return{...f,...IB}}var IB;var CY=k(()=>{IB={GIT_OPTIONAL_LOCKS:"0"}});async function _z(f,J,Y={}){if(!f)return{stdout:"",stderr:"worktreePath is required",status:-1};let z=(Y.execForPath??pJ)(f),G=Y.timeoutMs&&Y.timeoutMs>0?new AbortController:null,X=!1,q=G?setTimeout(()=>{X=!0,G.abort()},Y.timeoutMs):null,Q;try{Q=await z.run(["git",...J],{cwd:f,env:IB,signal:G?.signal})}catch(H){if(q)clearTimeout(q);return{stdout:"",stderr:H instanceof Error?H.message:String(H),status:-1}}if(q)clearTimeout(q);if(X&&Q.exitCode===-1&&!Q.stderr)return{stdout:Q.stdout,stderr:`git ${J.join(" ")} timed out after ${Y.timeoutMs}ms`,status:-1};return{stdout:Q.stdout,stderr:Q.stderr,status:Q.exitCode}}function CA(f,J){if(!f||!J||J.startsWith("/"))return null;let Y=J.split("/");if(Y.some((z)=>z===".."))return null;return`${f.replace(/\/+$/,"")}/${Y.filter(Boolean).join("/")}`}async function tV(f,J,Y={}){let z=CA(f,J);if(!z)return null;let G=(Y.execForPath??pJ)(f);try{return await G.readFile(z)}catch{return null}}var qq=k(()=>{ZJ();CY()});import{statSync as kA}from"fs";async function BX(f,J){let Y=await _z(f,J,{timeoutMs:NA}),z=Y.status??-1;return{ok:z===0,stdout:Y.stdout,stderr:Y.stderr,code:z}}function bA(f){switch(f){case"M":return"modified";case"A":return"added";case"D":return"deleted";case"R":return"renamed";case"C":return"copied";case"T":return"type changed";case"U":return"unmerged";case"?":return"untracked";default:return"changed"}}function eV(f){let J=new Map;if(!f)return J;let Y=f.split(/(?=^diff --git )/m);for(let z of Y){if(!z.startsWith("diff --git"))continue;let G=null,X=z.match(/^\+\+\+ b\/(.*)$/m);if(X&&X[1]!=="/dev/null")G=X[1];else{let q=z.match(/^diff --git a\/.* b\/(.*)$/m);if(q)G=q[1]}if(!G)continue;J.set(SA(G),z.endsWith(`
52
50
  `)?z:`${z}
53
- `)}return J}function aA(f){if(!(f.startsWith('"')&&f.endsWith('"')))return f;return f.slice(1,-1).replace(/\\([\\"nt])/g,(Y,z)=>z==="n"?`
54
- `:z==="t"?"\t":z)}async function $A(f,J,Y){let z=Array(f.length),G=Math.max(1,Math.min(J,f.length)),X=0;async function q(){while(X<f.length){let Q=X++;z[Q]=await Y(f[Q],Q)}}return await Promise.all(Array.from({length:G},()=>q())),z}async function rA(f,J){let Y=await jX(f,["diff","--no-color","--no-index","--","/dev/null",J]);if(Y.stdout.trim())return Y.stdout.endsWith(`
51
+ `)}return J}function SA(f){if(!(f.startsWith('"')&&f.endsWith('"')))return f;return f.slice(1,-1).replace(/\\([\\"nt])/g,(Y,z)=>z==="n"?`
52
+ `:z==="t"?"\t":z)}async function IA(f,J,Y){let z=Array(f.length),G=Math.max(1,Math.min(J,f.length)),X=0;async function q(){while(X<f.length){let Q=X++;z[Q]=await Y(f[Q],Q)}}return await Promise.all(Array.from({length:G},()=>q())),z}async function TA(f,J){let Y=await BX(f,["diff","--no-color","--no-index","--","/dev/null",J]);if(Y.stdout.trim())return Y.stdout.endsWith(`
55
53
  `)?Y.stdout:`${Y.stdout}
56
- `;return""}async function H7(f,J){if(J.pathname!=="/api/diff")return null;if(f.method!=="GET")return Response.json({error:"method not allowed"},{status:405});let Y=J.searchParams.get("worktreePath");if(!Y)return Response.json({error:"missing worktreePath"},{status:400});let z;try{z=decodeURIComponent(Y)}catch{return Response.json({error:"invalid worktreePath encoding"},{status:400})}if(!z.startsWith("/"))return Response.json({error:"worktreePath must be an absolute path"},{status:400});if(!XZ(z))return Response.json({error:"worktreePath does not exist"},{status:400});if(!nJ(z).isRemote)try{if(!nA(z).isDirectory())return Response.json({error:"worktreePath is not a directory"},{status:400})}catch{return Response.json({error:"worktreePath does not exist"},{status:400})}let X=await jX(z,["rev-parse","--is-inside-work-tree"]);if(!X.ok||X.stdout.trim()!=="true")return Response.json({error:`not a git work tree: ${X.stderr.trim()||z}`},{status:500});let[q,Q,H]=await Promise.all([jX(z,["status","--porcelain=v1","-z","--untracked-files=all"]),jX(z,["diff","--no-color"]),jX(z,["diff","--no-color","--staged"])]);if(!q.ok)return Response.json({error:`git status failed: ${q.stderr.trim()}`},{status:500});let B=Q7(Q.stdout),V=Q7(H.stdout),j=q.stdout.split("\x00"),U=[],L=[];for(let R=0;R<j.length;R++){let S=j[R];if(!S)continue;let a=S[0]??" ",N=S[1]??" ",g=S.slice(3);if(!g)continue;if(a==="R"||a==="C"||N==="R"||N==="C")R++;let C=a==="?"&&N==="?",y=a!==" "&&a!=="?"?a:N,_=a!==" "&&a!=="?",z0="";if(C)L.push({fileIndex:U.length,path:g});else if(z0=V.get(g)??B.get(g)??"",V.has(g)&&B.has(g))z0=`${V.get(g)}${B.get(g)}`;U.push({path:g,status:C?"untracked":lA(y),staged:_,patch:z0})}if(L.length>0){let R=await $A(L,iA,(S)=>rA(z,S.path));for(let S=0;S<L.length;S++)U[L[S].fileIndex].patch=R[S]}U.sort((R,S)=>R.path.localeCompare(S.path));let O=[H.stdout,Q.stdout].filter(Boolean).join(`
57
- `),M={files:U,raw:O};return Response.json(M)}var dA=15000,iA=8;var B7=k(()=>{e1();Qq()});import{isAbsolute as pA}from"path";function W7(f){return typeof f==="string"&&f.length>0&&/^[A-Za-z0-9_-]+$/.test(f)}function oA(f){return typeof f==="string"&&f.length>0&&/^[A-Za-z0-9._-]+$/.test(f)&&!f.includes("..")}async function sA(f){let J=f.searchParams.get("worktreePath"),Y=f.searchParams.get("vendor")??"claude";if(!J||!pA(J))return Response.json({error:"worktreePath must be an absolute path"},{status:400});if(!W7(Y))return Response.json({error:"invalid vendor"},{status:400});try{let z=pf(Y).history,[G,X]=await Promise.all([z.listSessionIdsForWorktree(J),z.latestTranscriptMtimeForWorktree(J)]);return Response.json({sessions:G,latestMtime:X})}catch(z){return Response.json({error:z instanceof Error?z.message:String(z)},{status:500})}}async function tA(f){let J=f.searchParams.get("vendor")??"claude",Y=f.searchParams.get("sessionId");if(!W7(J))return Response.json({error:"invalid vendor"},{status:400});if(!oA(Y))return Response.json({error:"invalid sessionId"},{status:400});try{let z=await pf(J).history.readHistory(Y);return Response.json({messages:z})}catch(z){return Response.json({error:z instanceof Error?z.message:String(z)},{status:500})}}async function V7(f,J){if(J.pathname!==j7&&J.pathname!==_A)return null;if(f.method!=="GET")return Response.json({error:"method not allowed"},{status:405});return J.pathname===j7?sA(J):tA(J)}var j7="/api/history/sessions",_A="/api/history/messages";var K7=k(()=>{MY()});import{mkdir as eA,readFile as fg,writeFile as Jg}from"fs/promises";import{join as U7}from"path";function D7(){return U7(ef(),"notes")}function L7(f){return typeof f==="string"&&f.length>0&&/^[A-Za-z0-9_-]+$/.test(f)}function M7(f){return U7(D7(),`${f}.md`)}async function zg(f){let J=f.searchParams.get("taskId");if(!L7(J))return Response.json({error:"invalid taskId"},{status:400});try{let Y="";try{Y=await fg(M7(J),"utf8")}catch(z){if(z.code!=="ENOENT")throw z}return Response.json({markdown:Y})}catch(Y){return Response.json({error:Y instanceof Error?Y.message:String(Y)},{status:500})}}async function Gg(f){let J;try{J=await f.json()}catch{return Response.json({error:"invalid JSON body"},{status:400})}if(!L7(J.taskId))return Response.json({error:"invalid taskId"},{status:400});if(typeof J.markdown!=="string")return Response.json({error:"markdown must be a string"},{status:400});try{return await eA(D7(),{recursive:!0}),await Jg(M7(J.taskId),J.markdown,"utf8"),Response.json({ok:!0})}catch(Y){return Response.json({error:Y instanceof Error?Y.message:String(Y)},{status:500})}}async function F7(f,J){if(J.pathname!==Yg)return null;if(f.method==="GET")return zg(J);if(f.method==="PUT")return Gg(f);return Response.json({error:"method not allowed"},{status:405})}var Yg="/api/notes";var O7=k(()=>{lf()});var sz;var Hq=k(()=>{sz={$schema:"https://opencode.ai/theme.json",defs:{darkBg:"#141413",darkBgRaised:"#1A1917",darkBgInset:"#2B2A27",darkBgMenu:"#33312E",darkBorderSubtle:"#2B2A27",darkBorder:"#3A3835",darkBorderActive:"#5C5853",darkText:"#EAE7DF",darkTextMuted:"#A9A39A",darkTextSubtle:"#6B665F",darkPrimary:"#CC785C",darkSecondary:"#D4967E",darkAccent:"#CC785C",darkAccentHover:"#E0AB96",darkRed:"#D47563",darkOrange:"#D97757",darkYellow:"#E8C96B",darkGreen:"#9ACA86",darkBlue:"#61AAF2",darkViolet:"#9B87F5",darkTerracotta:"#BF4D43",lightBg:"#FAF9F5",lightBgRaised:"#F0EEE6",lightBgInset:"#EAE7DF",lightBgMenu:"#E2DED4",lightBorderSubtle:"#EAE7DF",lightBorder:"#D9D5CC",lightBorderActive:"#A9A39A",lightText:"#1A1917",lightTextMuted:"#6B665F",lightTextSubtle:"#8D877D",lightPrimary:"#C96442",lightSecondary:"#B85F3D",lightAccent:"#CC785C",lightAccentHover:"#B85F3D",lightRed:"#A84B3A",lightOrange:"#C96442",lightYellow:"#8A6220",lightGreen:"#2E7C4C",lightBlue:"#207FDE",lightViolet:"#7B5BB6",lightTerracotta:"#BF4D43"},theme:{primary:{dark:"darkPrimary",light:"lightPrimary"},secondary:{dark:"darkSecondary",light:"lightSecondary"},accent:{dark:"darkAccent",light:"lightAccent"},error:{dark:"darkRed",light:"lightRed"},warning:{dark:"darkYellow",light:"lightYellow"},success:{dark:"darkGreen",light:"lightGreen"},info:{dark:"darkBlue",light:"lightBlue"},text:{dark:"darkText",light:"lightText"},textMuted:{dark:"darkTextMuted",light:"lightTextMuted"},background:{dark:"darkBg",light:"lightBg"},backgroundPanel:{dark:"darkBgRaised",light:"lightBgRaised"},backgroundElement:{dark:"darkBgInset",light:"lightBgInset"},backgroundMenu:{dark:"darkBgMenu",light:"lightBgMenu"},backgroundDialog:{dark:"darkBgRaised",light:"lightBgRaised"},border:{dark:"darkBorder",light:"lightBorder"},borderActive:{dark:"darkBorderActive",light:"lightBorderActive"},borderSubtle:{dark:"darkBorderSubtle",light:"lightBorderSubtle"},diffAdded:{dark:"darkGreen",light:"lightGreen"},diffRemoved:{dark:"darkRed",light:"lightRed"},diffContext:{dark:"darkTextMuted",light:"lightTextSubtle"},diffHunkHeader:{dark:"darkTextMuted",light:"lightTextSubtle"},diffHighlightAdded:{dark:"#B5E0A0",light:"#1F6638"},diffHighlightRemoved:{dark:"#E89180",light:"#8A3A2C"},diffAddedBg:{dark:"#1F2A1F",light:"#E5EEDF"},diffRemovedBg:{dark:"#2A1F1C",light:"#F5DAD3"},diffContextBg:{dark:"darkBgRaised",light:"lightBgRaised"},diffLineNumber:{dark:"darkTextSubtle",light:"lightTextSubtle"},diffAddedLineNumberBg:{dark:"#1A2419",light:"#D5E2CC"},diffRemovedLineNumberBg:{dark:"#241915",light:"#EBC8BE"},markdownText:{dark:"darkText",light:"lightText"},markdownHeading:{dark:"darkPrimary",light:"lightPrimary"},markdownLink:{dark:"darkAccent",light:"lightAccent"},markdownLinkText:{dark:"darkBlue",light:"lightBlue"},markdownCode:{dark:"darkSecondary",light:"lightSecondary"},markdownBlockQuote:{dark:"darkTextMuted",light:"lightTextMuted"},markdownEmph:{dark:"darkYellow",light:"lightYellow"},markdownStrong:{dark:"darkPrimary",light:"lightPrimary"},markdownHorizontalRule:{dark:"darkTextMuted",light:"lightTextMuted"},markdownListItem:{dark:"darkAccent",light:"lightAccent"},markdownListEnumeration:{dark:"darkBlue",light:"lightBlue"},markdownImage:{dark:"darkAccent",light:"lightAccent"},markdownImageText:{dark:"darkBlue",light:"lightBlue"},markdownCodeBlock:{dark:"darkText",light:"lightText"},markdownQuote:{dark:"darkTextMuted",light:"lightTextMuted"},syntaxComment:{dark:"darkTextSubtle",light:"lightTextSubtle"},syntaxKeyword:{dark:"darkPrimary",light:"lightPrimary"},syntaxFunction:{dark:"darkBlue",light:"lightBlue"},syntaxVariable:{dark:"darkText",light:"lightText"},syntaxString:{dark:"darkGreen",light:"lightGreen"},syntaxNumber:{dark:"darkOrange",light:"lightOrange"},syntaxType:{dark:"darkViolet",light:"lightViolet"},syntaxOperator:{dark:"darkSecondary",light:"lightSecondary"},syntaxPunctuation:{dark:"darkText",light:"lightText"},selectedListItemText:{dark:"darkBg",light:"lightBg"}}}});var tz;var Bq=k(()=>{tz={$schema:"https://opencode.ai/theme.json",defs:{darkStep1:"#0a0a0a",darkStep2:"#111111",darkStep3:"#181818",darkStep4:"#1f1f1f",darkStep5:"#2a2a2a",darkStep6:"#363636",darkStep7:"#444444",darkStep8:"#5a5a5a",darkStep9:"#7a7a7a",darkStep10:"#9a9a9a",darkStep11:"#909090",darkStep12:"#e8e8e8",darkAccent:"#7da5c8",darkAccentBright:"#9bc3e3",darkRed:"#e06c75",darkOrange:"#d6a668",darkGreen:"#7fd88f",darkCyan:"#7da5c8",darkYellow:"#d6a668",lightStep1:"#fafafa",lightStep2:"#f3f3f3",lightStep3:"#ececec",lightStep4:"#e2e2e2",lightStep5:"#d4d4d4",lightStep6:"#bdbdbd",lightStep7:"#9c9c9c",lightStep8:"#7c7c7c",lightStep9:"#5b5b5b",lightStep10:"#404040",lightStep11:"#6c6c6c",lightStep12:"#1a1a1a",lightAccent:"#3d6f9f",lightAccentBright:"#1a4f87",lightRed:"#c9343a",lightOrange:"#a06b1a",lightGreen:"#3d9a57",lightCyan:"#3d6f9f",lightYellow:"#a06b1a"},theme:{primary:{dark:"darkStep12",light:"lightStep12"},secondary:{dark:"darkAccentBright",light:"lightAccentBright"},accent:{dark:"darkAccent",light:"lightAccent"},error:{dark:"darkRed",light:"lightRed"},warning:{dark:"darkOrange",light:"lightOrange"},success:{dark:"darkGreen",light:"lightGreen"},info:{dark:"darkCyan",light:"lightCyan"},text:{dark:"darkStep12",light:"lightStep12"},textMuted:{dark:"darkStep11",light:"lightStep11"},background:{dark:"darkStep1",light:"lightStep1"},backgroundPanel:{dark:"darkStep2",light:"lightStep2"},backgroundElement:{dark:"darkStep3",light:"lightStep3"},backgroundMenu:{dark:"darkStep4",light:"lightStep4"},border:{dark:"darkStep6",light:"lightStep6"},borderActive:{dark:"darkStep8",light:"lightStep8"},borderSubtle:{dark:"darkStep4",light:"lightStep4"},diffAdded:{dark:"#7fd88f",light:"#3d9a57"},diffRemoved:{dark:"#e06c75",light:"#c9343a"},diffContext:{dark:"darkStep10",light:"lightStep10"},diffHunkHeader:{dark:"darkStep10",light:"lightStep10"},diffHighlightAdded:{dark:"#9be5ad",light:"#2d7a3f"},diffHighlightRemoved:{dark:"#f08490",light:"#a82530"},diffAddedBg:{dark:"#15241a",light:"#d8efdc"},diffRemovedBg:{dark:"#2a1518",light:"#f5dadc"},diffContextBg:{dark:"darkStep2",light:"lightStep2"},diffLineNumber:{dark:"darkStep9",light:"lightStep9"},diffAddedLineNumberBg:{dark:"#0f1c14",light:"#c5deca"},diffRemovedLineNumberBg:{dark:"#221012",light:"#e5c5c8"},markdownText:{dark:"darkStep12",light:"lightStep12"},markdownHeading:{dark:"darkStep12",light:"lightStep12"},markdownLink:{dark:"darkAccent",light:"lightAccent"},markdownCode:{dark:"darkAccentBright",light:"lightAccentBright"},markdownCodeBlock:{dark:"darkStep12",light:"lightStep12"},markdownQuote:{dark:"darkStep11",light:"lightStep11"},selectedListItemText:{dark:"darkStep1",light:"lightStep1"}}}});var ez;var jq=k(()=>{ez={$schema:"https://opencode.ai/theme.json",defs:{background:"#282a36",currentLine:"#44475a",selection:"#44475a",foreground:"#f8f8f2",comment:"#6272a4",cyan:"#8be9fd",green:"#50fa7b",orange:"#ffb86c",pink:"#ff79c6",purple:"#bd93f9",red:"#ff5555",yellow:"#f1fa8c"},theme:{primary:{dark:"purple",light:"purple"},secondary:{dark:"pink",light:"pink"},accent:{dark:"cyan",light:"cyan"},error:{dark:"red",light:"red"},warning:{dark:"yellow",light:"yellow"},success:{dark:"green",light:"green"},info:{dark:"orange",light:"orange"},text:{dark:"foreground",light:"#282a36"},textMuted:{dark:"comment",light:"#6272a4"},background:{dark:"#282a36",light:"#f8f8f2"},backgroundPanel:{dark:"#21222c",light:"#e8e8e2"},backgroundElement:{dark:"currentLine",light:"#d8d8d2"},border:{dark:"currentLine",light:"#c8c8c2"},borderActive:{dark:"purple",light:"purple"},borderSubtle:{dark:"#191a21",light:"#e0e0e0"},diffAdded:{dark:"green",light:"green"},diffRemoved:{dark:"red",light:"red"},diffContext:{dark:"comment",light:"#6272a4"},diffHunkHeader:{dark:"comment",light:"#6272a4"},diffHighlightAdded:{dark:"green",light:"green"},diffHighlightRemoved:{dark:"red",light:"red"},diffAddedBg:{dark:"#1a3a1a",light:"#e0ffe0"},diffRemovedBg:{dark:"#3a1a1a",light:"#ffe0e0"},diffContextBg:{dark:"#21222c",light:"#e8e8e2"},diffLineNumber:{dark:"#989aa4",light:"#686865"},diffAddedLineNumberBg:{dark:"#1a3a1a",light:"#e0ffe0"},diffRemovedLineNumberBg:{dark:"#3a1a1a",light:"#ffe0e0"},markdownText:{dark:"foreground",light:"#282a36"},markdownHeading:{dark:"purple",light:"purple"},markdownLink:{dark:"cyan",light:"cyan"},markdownLinkText:{dark:"pink",light:"pink"},markdownCode:{dark:"green",light:"green"},markdownBlockQuote:{dark:"comment",light:"#6272a4"},markdownEmph:{dark:"yellow",light:"yellow"},markdownStrong:{dark:"orange",light:"orange"},markdownHorizontalRule:{dark:"comment",light:"#6272a4"},markdownListItem:{dark:"purple",light:"purple"},markdownListEnumeration:{dark:"cyan",light:"cyan"},markdownImage:{dark:"cyan",light:"cyan"},markdownImageText:{dark:"pink",light:"pink"},markdownCodeBlock:{dark:"foreground",light:"#282a36"},syntaxComment:{dark:"comment",light:"#6272a4"},syntaxKeyword:{dark:"pink",light:"pink"},syntaxFunction:{dark:"green",light:"green"},syntaxVariable:{dark:"foreground",light:"#282a36"},syntaxString:{dark:"yellow",light:"yellow"},syntaxNumber:{dark:"purple",light:"purple"},syntaxType:{dark:"cyan",light:"cyan"},syntaxOperator:{dark:"pink",light:"pink"},syntaxPunctuation:{dark:"foreground",light:"#282a36"}}}});var fG;var Wq=k(()=>{fG={$schema:"https://opencode.ai/theme.json",defs:{nord0:"#2E3440",nord1:"#3B4252",nord2:"#434C5E",nord3:"#4C566A",nord4:"#D8DEE9",nord5:"#E5E9F0",nord6:"#ECEFF4",nord7:"#8FBCBB",nord8:"#88C0D0",nord9:"#81A1C1",nord10:"#5E81AC",nord11:"#BF616A",nord12:"#D08770",nord13:"#EBCB8B",nord14:"#A3BE8C",nord15:"#B48EAD"},theme:{primary:{dark:"nord8",light:"nord10"},secondary:{dark:"nord9",light:"nord9"},accent:{dark:"nord7",light:"nord7"},error:{dark:"nord11",light:"nord11"},warning:{dark:"nord12",light:"nord12"},success:{dark:"nord14",light:"nord14"},info:{dark:"nord8",light:"nord10"},text:{dark:"nord6",light:"nord0"},textMuted:{dark:"#8B95A7",light:"nord1"},background:{dark:"nord0",light:"nord6"},backgroundPanel:{dark:"nord1",light:"nord5"},backgroundElement:{dark:"nord2",light:"nord4"},border:{dark:"nord2",light:"nord3"},borderActive:{dark:"nord3",light:"nord2"},borderSubtle:{dark:"nord2",light:"nord3"},diffAdded:{dark:"nord14",light:"nord14"},diffRemoved:{dark:"nord11",light:"nord11"},diffContext:{dark:"#8B95A7",light:"nord3"},diffHunkHeader:{dark:"#8B95A7",light:"nord3"},diffHighlightAdded:{dark:"nord14",light:"nord14"},diffHighlightRemoved:{dark:"nord11",light:"nord11"},diffAddedBg:{dark:"#3B4252",light:"#E5E9F0"},diffRemovedBg:{dark:"#3B4252",light:"#E5E9F0"},diffContextBg:{dark:"nord1",light:"nord5"},diffLineNumber:{dark:"#a9aeb6",light:"textMuted"},diffAddedLineNumberBg:{dark:"#3B4252",light:"#E5E9F0"},diffRemovedLineNumberBg:{dark:"#3B4252",light:"#E5E9F0"},markdownText:{dark:"nord4",light:"nord0"},markdownHeading:{dark:"nord8",light:"nord10"},markdownLink:{dark:"nord9",light:"nord9"},markdownLinkText:{dark:"nord7",light:"nord7"},markdownCode:{dark:"nord14",light:"nord14"},markdownBlockQuote:{dark:"#8B95A7",light:"nord3"},markdownEmph:{dark:"nord12",light:"nord12"},markdownStrong:{dark:"nord13",light:"nord13"},markdownHorizontalRule:{dark:"#8B95A7",light:"nord3"},markdownListItem:{dark:"nord8",light:"nord10"},markdownListEnumeration:{dark:"nord7",light:"nord7"},markdownImage:{dark:"nord9",light:"nord9"},markdownImageText:{dark:"nord7",light:"nord7"},markdownCodeBlock:{dark:"nord4",light:"nord0"},syntaxComment:{dark:"#8B95A7",light:"nord3"},syntaxKeyword:{dark:"nord9",light:"nord9"},syntaxFunction:{dark:"nord8",light:"nord8"},syntaxVariable:{dark:"nord7",light:"nord7"},syntaxString:{dark:"nord14",light:"nord14"},syntaxNumber:{dark:"nord15",light:"nord15"},syntaxType:{dark:"nord7",light:"nord7"},syntaxOperator:{dark:"nord9",light:"nord9"},syntaxPunctuation:{dark:"nord4",light:"nord0"}}}});var JG;var Vq=k(()=>{JG={$schema:"https://opencode.ai/theme.json",defs:{darkStep1:"#161616",darkStep2:"#1f1f1f",darkStep3:"#282828",darkStep4:"#323232",darkStep5:"#3c3c3c",darkStep6:"#484848",darkStep7:"#545454",darkStep8:"#6a6a6a",darkStep9:"#fab283",darkStep10:"#ffc09f",darkStep11:"#808080",darkStep12:"#eeeeee",darkSecondary:"#5c9cf5",darkAccent:"#7da5c8",darkRed:"#e06c75",darkOrange:"#f5a742",darkGreen:"#7fd88f",darkCyan:"#56b6c2",darkYellow:"#e5c07b",lightStep1:"#ffffff",lightStep2:"#fafafa",lightStep3:"#f5f5f5",lightStep4:"#ebebeb",lightStep5:"#e1e1e1",lightStep6:"#d4d4d4",lightStep7:"#b8b8b8",lightStep8:"#a0a0a0",lightStep9:"#3b7dd8",lightStep10:"#2968c3",lightStep11:"#8a8a8a",lightStep12:"#1a1a1a",lightSecondary:"#7b5bb6",lightAccent:"#3d6f9f",lightRed:"#d1383d",lightOrange:"#d68c27",lightGreen:"#3d9a57",lightCyan:"#318795",lightYellow:"#b0851f"},theme:{primary:{dark:"darkStep9",light:"lightStep9"},secondary:{dark:"darkSecondary",light:"lightSecondary"},accent:{dark:"darkAccent",light:"lightAccent"},error:{dark:"darkRed",light:"lightRed"},warning:{dark:"darkOrange",light:"lightOrange"},success:{dark:"darkGreen",light:"lightGreen"},info:{dark:"darkCyan",light:"lightCyan"},text:{dark:"darkStep12",light:"lightStep12"},textMuted:{dark:"darkStep11",light:"lightStep11"},background:{dark:"darkStep1",light:"lightStep1"},backgroundPanel:{dark:"darkStep2",light:"lightStep2"},backgroundElement:{dark:"darkStep3",light:"lightStep3"},border:{dark:"darkStep7",light:"lightStep7"},borderActive:{dark:"darkStep8",light:"lightStep8"},borderSubtle:{dark:"darkStep6",light:"lightStep6"},diffAdded:{dark:"#4fd6be",light:"#1e725c"},diffRemoved:{dark:"#c53b53",light:"#c53b53"},diffContext:{dark:"#828bb8",light:"#7086b5"},diffHunkHeader:{dark:"#828bb8",light:"#7086b5"},diffHighlightAdded:{dark:"#b8db87",light:"#4db380"},diffHighlightRemoved:{dark:"#e26a75",light:"#f52a65"},diffAddedBg:{dark:"#20303b",light:"#d5e5d5"},diffRemovedBg:{dark:"#37222c",light:"#f7d8db"},diffContextBg:{dark:"darkStep2",light:"lightStep2"},diffLineNumber:{dark:"#8f8f8f",light:"#595959"},diffAddedLineNumberBg:{dark:"#1b2b34",light:"#c5d5c5"},diffRemovedLineNumberBg:{dark:"#2d1f26",light:"#e7c8cb"},markdownText:{dark:"darkStep12",light:"lightStep12"},markdownHeading:{dark:"darkAccent",light:"lightAccent"},markdownLink:{dark:"darkStep9",light:"lightStep9"},markdownLinkText:{dark:"darkCyan",light:"lightCyan"},markdownCode:{dark:"darkGreen",light:"lightGreen"},markdownBlockQuote:{dark:"darkYellow",light:"lightYellow"},markdownEmph:{dark:"darkYellow",light:"lightYellow"},markdownStrong:{dark:"darkOrange",light:"lightOrange"},markdownHorizontalRule:{dark:"darkStep11",light:"lightStep11"},markdownListItem:{dark:"darkStep9",light:"lightStep9"},markdownListEnumeration:{dark:"darkCyan",light:"lightCyan"},markdownImage:{dark:"darkStep9",light:"lightStep9"},markdownImageText:{dark:"darkCyan",light:"lightCyan"},markdownCodeBlock:{dark:"darkStep12",light:"lightStep12"},syntaxComment:{dark:"darkStep11",light:"lightStep11"},syntaxKeyword:{dark:"darkAccent",light:"lightAccent"},syntaxFunction:{dark:"darkStep9",light:"lightStep9"},syntaxVariable:{dark:"darkRed",light:"lightRed"},syntaxString:{dark:"darkGreen",light:"lightGreen"},syntaxNumber:{dark:"darkOrange",light:"lightOrange"},syntaxType:{dark:"darkYellow",light:"lightYellow"},syntaxOperator:{dark:"darkCyan",light:"lightCyan"},syntaxPunctuation:{dark:"darkStep12",light:"lightStep12"}}}});var YG;var Kq=k(()=>{YG={$schema:"https://opencode.ai/theme.json",defs:{darkBg0:"#111c18",darkBg1:"#1a2520",darkBg2:"#23372B",darkBg3:"#3d4a44",darkFg0:"#C1C497",darkFg1:"#9aa88a",darkGray:"#53685B",darkRed:"#FF5345",darkGreen:"#549e6a",darkYellow:"#459451",darkBlue:"#509475",darkMagenta:"#D2689C",darkCyan:"#2DD5B7",darkWhite:"#F6F5DD",darkRedBright:"#db9f9c",darkGreenBright:"#63b07a",darkYellowBright:"#E5C736",darkBlueBright:"#ACD4CF",darkMagentaBright:"#75bbb3",darkCyanBright:"#8CD3CB",lightBg0:"#F6F5DD",lightBg1:"#E8E7CC",lightBg2:"#D5D4B8",lightBg3:"#A8A78C",lightFg0:"#111c18",lightFg1:"#1a2520",lightGray:"#53685B",lightRed:"#c7392d",lightGreen:"#3d7a52",lightYellow:"#b5a020",lightBlue:"#3d7560",lightMagenta:"#a8527a",lightCyan:"#1faa90"},theme:{primary:{dark:"darkCyan",light:"lightCyan"},secondary:{dark:"darkMagenta",light:"lightMagenta"},accent:{dark:"darkGreen",light:"lightGreen"},error:{dark:"darkRed",light:"lightRed"},warning:{dark:"darkYellowBright",light:"lightYellow"},success:{dark:"darkGreen",light:"lightGreen"},info:{dark:"darkCyan",light:"lightCyan"},text:{dark:"darkFg0",light:"lightFg0"},textMuted:{dark:"darkGray",light:"lightGray"},background:{dark:"darkBg0",light:"lightBg0"},backgroundPanel:{dark:"darkBg1",light:"lightBg1"},backgroundElement:{dark:"darkBg2",light:"lightBg2"},border:{dark:"darkBg3",light:"lightBg3"},borderActive:{dark:"darkCyan",light:"lightCyan"},borderSubtle:{dark:"darkBg2",light:"lightBg2"},diffAdded:{dark:"darkGreen",light:"lightGreen"},diffRemoved:{dark:"darkRed",light:"lightRed"},diffContext:{dark:"darkGray",light:"lightGray"},diffHunkHeader:{dark:"darkCyan",light:"lightCyan"},diffHighlightAdded:{dark:"darkGreenBright",light:"lightGreen"},diffHighlightRemoved:{dark:"darkRedBright",light:"lightRed"},diffAddedBg:{dark:"#15241c",light:"#e0eee5"},diffRemovedBg:{dark:"#241515",light:"#eee0e0"},diffContextBg:{dark:"darkBg1",light:"lightBg1"},diffLineNumber:{dark:"#828b87",light:"#5f5e4f"},diffAddedLineNumberBg:{dark:"#121f18",light:"#d5e5da"},diffRemovedLineNumberBg:{dark:"#1f1212",light:"#e5d5d5"},markdownText:{dark:"darkFg0",light:"lightFg0"},markdownHeading:{dark:"darkCyan",light:"lightCyan"},markdownLink:{dark:"darkCyanBright",light:"lightCyan"},markdownLinkText:{dark:"darkGreen",light:"lightGreen"},markdownCode:{dark:"darkGreenBright",light:"lightGreen"},markdownBlockQuote:{dark:"darkGray",light:"lightGray"},markdownEmph:{dark:"darkMagenta",light:"lightMagenta"},markdownStrong:{dark:"darkFg0",light:"lightFg0"},markdownHorizontalRule:{dark:"darkGray",light:"lightGray"},markdownListItem:{dark:"darkCyan",light:"lightCyan"},markdownListEnumeration:{dark:"darkCyanBright",light:"lightCyan"},markdownImage:{dark:"darkCyanBright",light:"lightCyan"},markdownImageText:{dark:"darkGreen",light:"lightGreen"},markdownCodeBlock:{dark:"darkFg0",light:"lightFg0"},syntaxComment:{dark:"darkGray",light:"lightGray"},syntaxKeyword:{dark:"darkCyan",light:"lightCyan"},syntaxFunction:{dark:"darkBlue",light:"lightBlue"},syntaxVariable:{dark:"darkFg0",light:"lightFg0"},syntaxString:{dark:"darkGreenBright",light:"lightGreen"},syntaxNumber:{dark:"darkMagenta",light:"lightMagenta"},syntaxType:{dark:"darkGreen",light:"lightGreen"},syntaxOperator:{dark:"darkYellow",light:"lightYellow"},syntaxPunctuation:{dark:"darkFg0",light:"lightFg0"}}}});var zG;var Uq=k(()=>{zG={$schema:"https://opencode.ai/theme.json",defs:{darkStep1:"#1a1b26",darkStep2:"#1e2030",darkStep3:"#222436",darkStep4:"#292e42",darkStep5:"#3b4261",darkStep6:"#545c7e",darkStep7:"#737aa2",darkStep8:"#9099b2",darkStep9:"#82aaff",darkStep10:"#89b4fa",darkStep11:"#828bb8",darkStep12:"#c8d3f5",darkRed:"#ff757f",darkOrange:"#ff966c",darkYellow:"#ffc777",darkGreen:"#c3e88d",darkCyan:"#86e1fc",darkPurple:"#c099ff",lightStep1:"#e1e2e7",lightStep2:"#d5d6db",lightStep3:"#c8c9ce",lightStep4:"#b9bac1",lightStep5:"#a8aecb",lightStep6:"#9699a8",lightStep7:"#737a8c",lightStep8:"#5a607d",lightStep9:"#2e7de9",lightStep10:"#1a6ce7",lightStep11:"#8990a3",lightStep12:"#3760bf",lightRed:"#f52a65",lightOrange:"#b15c00",lightYellow:"#8c6c3e",lightGreen:"#587539",lightCyan:"#007197",lightPurple:"#9854f1"},theme:{primary:{dark:"darkStep9",light:"lightStep9"},secondary:{dark:"darkPurple",light:"lightPurple"},accent:{dark:"darkOrange",light:"lightOrange"},error:{dark:"darkRed",light:"lightRed"},warning:{dark:"darkOrange",light:"lightOrange"},success:{dark:"darkGreen",light:"lightGreen"},info:{dark:"darkStep9",light:"lightStep9"},text:{dark:"darkStep12",light:"lightStep12"},textMuted:{dark:"darkStep11",light:"lightStep11"},background:{dark:"darkStep1",light:"lightStep1"},backgroundPanel:{dark:"darkStep2",light:"lightStep2"},backgroundElement:{dark:"darkStep3",light:"lightStep3"},border:{dark:"darkStep7",light:"lightStep7"},borderActive:{dark:"darkStep8",light:"lightStep8"},borderSubtle:{dark:"darkStep6",light:"lightStep6"},diffAdded:{dark:"#4fd6be",light:"#1e725c"},diffRemoved:{dark:"#c53b53",light:"#c53b53"},diffContext:{dark:"#828bb8",light:"#7086b5"},diffHunkHeader:{dark:"#828bb8",light:"#7086b5"},diffHighlightAdded:{dark:"#b8db87",light:"#4db380"},diffHighlightRemoved:{dark:"#e26a75",light:"#f52a65"},diffAddedBg:{dark:"#20303b",light:"#d5e5d5"},diffRemovedBg:{dark:"#37222c",light:"#f7d8db"},diffContextBg:{dark:"darkStep2",light:"lightStep2"},diffLineNumber:{dark:"#8f909a",light:"#59595b"},diffAddedLineNumberBg:{dark:"#1b2b34",light:"#c5d5c5"},diffRemovedLineNumberBg:{dark:"#2d1f26",light:"#e7c8cb"},markdownText:{dark:"darkStep12",light:"lightStep12"},markdownHeading:{dark:"darkPurple",light:"lightPurple"},markdownLink:{dark:"darkStep9",light:"lightStep9"},markdownLinkText:{dark:"darkCyan",light:"lightCyan"},markdownCode:{dark:"darkGreen",light:"lightGreen"},markdownBlockQuote:{dark:"darkYellow",light:"lightYellow"},markdownEmph:{dark:"darkYellow",light:"lightYellow"},markdownStrong:{dark:"darkOrange",light:"lightOrange"},markdownHorizontalRule:{dark:"darkStep11",light:"lightStep11"},markdownListItem:{dark:"darkStep9",light:"lightStep9"},markdownListEnumeration:{dark:"darkCyan",light:"lightCyan"},markdownImage:{dark:"darkStep9",light:"lightStep9"},markdownImageText:{dark:"darkCyan",light:"lightCyan"},markdownCodeBlock:{dark:"darkStep12",light:"lightStep12"},syntaxComment:{dark:"darkStep11",light:"lightStep11"},syntaxKeyword:{dark:"darkPurple",light:"lightPurple"},syntaxFunction:{dark:"darkStep9",light:"lightStep9"},syntaxVariable:{dark:"darkRed",light:"lightRed"},syntaxString:{dark:"darkGreen",light:"lightGreen"},syntaxNumber:{dark:"darkOrange",light:"lightOrange"},syntaxType:{dark:"darkYellow",light:"lightYellow"},syntaxOperator:{dark:"darkCyan",light:"lightCyan"},syntaxPunctuation:{dark:"darkStep12",light:"lightStep12"}}}});function TB(f,J,Y=[]){if(J===void 0)return null;if(typeof J!=="string")return TB(f,J.dark,Y);if(J==="transparent"||J==="none")return null;if(J.startsWith("#"))return J;if(Y.includes(J))return null;let z=f.defs?.[J]??f.theme[J];return TB(f,z,[...Y,J])}function IB(f){return Math.max(0,Math.min(255,Math.round(f)))}function WX(f,J,Y){let z=Number.parseInt(f.slice(1),16),G=Number.parseInt(J.slice(1),16),X=(Q,H)=>Q>>H&255;return`#${(IB(X(z,16)+(X(G,16)-X(z,16))*Y)<<16|IB(X(z,8)+(X(G,8)-X(z,8))*Y)<<8|IB(X(z,0)+(X(G,0)-X(z,0))*Y)).toString(16).padStart(6,"0")}`}function Vg(f){let J=(Q)=>TB(f,f.theme[Q]),Y=J("background"),z=J("text");if(!Y||!z)return null;let G=J("textMuted")??WX(z,Y,0.35),X=J("primary")??z,q=J("border")??WX(z,Y,0.8);return{bg:Y,surface:J("backgroundPanel")??Y,inset:J("backgroundElement")??Y,menu:J("backgroundMenu")??J("backgroundElement")??Y,line:q,"line-subtle":J("borderSubtle")??q,"line-active":J("borderActive")??WX(q,z,0.3),fg:z,muted:G,subtle:WX(G,Y,0.35),primary:X,"primary-hover":WX(X,z,0.35),"kobe-orange":X,"kobe-green":J("success")??z,"kobe-blue":J("info")??z,"kobe-red":J("error")??z,"kobe-yellow":J("warning")??z,"kobe-violet":J("secondary")??X}}function A7(f,J){if(J.pathname!==Ug)return null;if(f.method!=="GET")return Response.json({error:"method not allowed"},{status:405});return Response.json({themes:Kg})}var Wg,Kg,Ug="/api/themes";var g7=k(()=>{Hq();Bq();jq();Wq();Vq();Kq();Uq();Wg={claude:sz,conductor:tz,dracula:ez,nord:fG,opencode:JG,"osaka-jade":YG,tokyonight:zG};Kg=Object.fromEntries(Object.entries(Wg).map(([f,J])=>[f,Vg(J)]).filter((f)=>f[1]!==null))});import{createHash as Dg,randomUUID as Lg}from"crypto";import{mkdir as Mg}from"fs/promises";import{join as uB,resolve as Fg}from"path";function gg(f){return Dg("sha1").update(f).digest("hex").slice(0,16)}async function kg(f){let J=Number.parseInt(f.headers.get("content-length")??"",10);if(Number.isFinite(J)&&J>R7)return Response.json({error:"asset too large"},{status:413});let Y;try{Y=await f.formData()}catch{return Response.json({error:"invalid form data"},{status:400})}let z=Y.get("repoRoot");if(typeof z!=="string"||z.length===0)return Response.json({error:"missing repoRoot"},{status:400});let G=Y.get("file");if(!(G instanceof File))return Response.json({error:"file must be a File"},{status:400});if(G.size>R7)return Response.json({error:"asset too large"},{status:413});let X=Og[G.type];if(!X)return Response.json({error:`unsupported content-type: ${G.type||"unknown"}`},{status:415});try{let q=gg(z),Q=uB(nQ(),q);await Mg(Q,{recursive:!0});let B=`${Lg()}.${X}`;return await Bun.write(uB(Q,B),G),Response.json({url:`${Dq}/${q}/${B}`})}catch(q){return Response.json({error:q instanceof Error?q.message:String(q)},{status:500})}}async function Ng(f){let J=f.slice(Dq.length+1),Y=J.indexOf("/");if(Y<0)return Response.json({error:"not found"},{status:404});let z=J.slice(0,Y),G=J.slice(Y+1);if(!Rg.test(z)||!Cg.test(G))return Response.json({error:"invalid asset path"},{status:400});let X=nQ(),q=Fg(X,z,G);if(q!==uB(X,z,G)||!q.startsWith(`${X}/`))return Response.json({error:"invalid asset path"},{status:400});let Q=G.slice(G.lastIndexOf(".")+1).toLowerCase(),H=Ag[Q];if(!H)return Response.json({error:"invalid asset path"},{status:400});let B=Bun.file(q);if(!await B.exists())return Response.json({error:"not found"},{status:404});return new Response(B,{headers:{"content-type":H,"cache-control":"public, max-age=31536000, immutable","x-content-type-options":"nosniff"}})}async function C7(f,J){if(J.pathname===Dq){if(f.method==="POST")return kg(f);return Response.json({error:"method not allowed"},{status:405})}if(J.pathname.startsWith(`${Dq}/`)){if(f.method==="GET")return Ng(J.pathname);return Response.json({error:"method not allowed"},{status:405})}return null}var Dq="/api/issue-assets",R7=10485760,Og,Ag,Rg,Cg;var k7=k(()=>{lf();Og={"image/png":"png","image/jpeg":"jpg","image/gif":"gif","image/webp":"webp"},Ag={png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",webp:"image/webp"};Rg=/^[a-f0-9]{16}$/,Cg=/^[A-Za-z0-9_-]+\.[a-z0-9]+$/});function N7(f,J=500){return Response.json({error:f instanceof Error?f.message:String(f)},{status:J})}function y7(f){let J=f instanceof Error?f.message:String(f);if(/^no issue #\d+$/.test(J))return 404;if(J==="repoRoot is required"||J==="repoRoot does not exist"||J==="repoRoot is not a git repository"||J==="missing op"||J==="create requires a non-empty title"||J==="body must be a string"||J==="setStatus requires a numeric id"||J.startsWith("invalid status:")||J==="update requires a numeric id"||J==="title must be a non-empty string"||J==="link requires a numeric id"||J==="link requires a non-empty taskId"||J==="unlink requires a numeric id"||J==="delete requires a numeric id"||J.startsWith("unknown op type:"))return 400;return 500}async function yg(f,J){let Y=J.searchParams.get("repoRoot");if(!Y)return Response.json({error:"missing repoRoot"},{status:400});try{return Response.json(await f.request("issue.list",{repoRoot:Y}))}catch(z){return N7(z,y7(z))}}async function bg(f,J){let Y;try{Y=await J.json()}catch{return Response.json({error:"invalid JSON body"},{status:400})}if(Y===null||typeof Y!=="object"||Array.isArray(Y))return Response.json({error:"body must be a JSON object"},{status:400});let z=Y;if(typeof z.repoRoot!=="string"||z.repoRoot.length===0)return Response.json({error:"missing repoRoot"},{status:400});try{return Response.json(await f.request("issue.mutate",{repoRoot:z.repoRoot,op:z.op}))}catch(G){return N7(G,y7(G))}}async function b7(f,J,Y){if(J.pathname!=="/api/issues")return null;if(f.method==="GET")return yg(Y,J);if(f.method==="POST")return bg(Y,f);return Response.json({error:"method not allowed"},{status:405})}function S7(f){return Sg.has(String(f??"").trim().toLowerCase())}function I7(f){try{if(!f)return null;let J=new URL(f);if(J.protocol!=="http:"&&J.protocol!=="https:")return null;return J.hostname}catch{return null}}function Ig(f){let J=I7(f);return J!==null&&S7(J)}function T7(f,J={}){if(!f)return!0;if(Ig(f))return!0;let Y=J.allowedHost?.trim();if(!Y)return!1;let z=I7(f);return z!==null&&z===Y}function u7(f){let J=String(f??"").trim();return J&&!S7(J)?J:void 0}var Sg;var E7=k(()=>{Sg=new Set(["localhost","127.0.0.1","::1","[::1]"])});var Tg,x7;var w7=k(()=>{Tg=["daemon.status","task.list","task.get","task.create","task.archive","task.rename","task.setBranch","task.setVendor","task.delete","task.pin","task.move","task.status","task.reorder","task.ensureMain","task.ensureWorktree","task.setActive","worktree.discoverAdoptable","worktree.adopt"],x7=new Set(Tg)});var EB={};jf(EB,{resolveRepoInit:()=>v7,resolveEngineLaunchInit:()=>sJ});import{existsSync as P7,readFileSync as ug}from"fs";import{join as Lq}from"path";function xg(f){return P7(Lq(f,h7))?`sh ${h7}`:void 0}function wg(f){let J=Lq(f,Eg);if(!P7(J))return;try{let Y=ug(J,"utf8");return Y.trim().length>0?Y:void 0}catch{return}}function v7(f,J){let Y=f?eQ(f):{},z=xg(J)??Y.initScript,G=wg(J)??Y.initPrompt;return{initScript:z&&z.trim().length>0?z:void 0,initPrompt:G&&G.trim().length>0?G:void 0}}function hg(f,J){if(f.kind==="none")return;if(f.kind==="explicit")return{source:"explicit",text:f.prompt};let Y=J.initPrompt?.trim();return Y?{source:"repo-init",text:Y}:void 0}function sJ(f,J,Y={kind:"repo-init"}){let z=v7(f,J);return{initScript:z.initScript,firstMessage:hg(Y,z)}}var h7,Eg;var GG=k(()=>{Of();h7=Lq(".kobe","init.sh"),Eg=Lq(".kobe","init-prompt.md")});import{existsSync as m7,readFileSync as Pg}from"fs";function c7(){Mz=null}function vg(){let f=X9();if(m7(f))return{canonical:f,found:f};let J=f.replace(/\.yaml$/,".yml");if(m7(J))return{canonical:f,found:J};return{canonical:f,found:null}}function Mq(){if(Mz)return Mz;let{canonical:f,found:J}=vg();if(!J)return Mz={path:f,exists:!1,doc:null,warnings:[]},Mz;let Y=[],z=null;try{let G=Pg(J,"utf8");z=Bun.YAML.parse(G)}catch(G){let X=G instanceof Error?G.message:String(G);Y.push(`could not read/parse ${J}: ${X}`)}return Mz={path:f,exists:!0,doc:z,warnings:Y},Mz}var Mz=null;var xB=k(()=>{lf()});function XG(f,J){let Y=`alternating [${f}, ${J}] pairs`;return{layout:Y,validateCount:(z)=>z>=2&&z%2===0?null:`needs ${Y} (an even number of chords \u2014 got ${z})`}}function ag(f,J){let Y=f.trim().toLowerCase();if(!Y)return{error:"empty chord"};let z=Y.split("+"),G=z.pop()??"";if(G===""&&z.length>0){if(G="+",z[z.length-1]==="")z.pop()}if(!G)return{error:`"${f}": no key after the modifiers`};let X=new Set;for(let H of z){let B=ng[H];if(!B)return{error:`"${f}": unknown modifier "${H}" (use ctrl / cmd / alt / shift)`};X.add(B)}if(G=dg[G]??G,X.has("shift")&&G.length===1&&!J?.allowShiftCharacter)return{error:`"${f}": shift+<character> can never match \u2014 terminals deliver shift+letter as a plain character, not a modifier event`};let q=lg.filter((H)=>X.has(H)).join("+"),Q=q?`${q}+${G}`:G;if(G.length>1&&!ig.has(G))return{chord:Q,warning:`"${f}": unrecognized key name "${G}" \u2014 the chord may never fire`};return{chord:Q}}function Fq(f){return typeof f==="object"&&f!==null&&!Array.isArray(f)}function $g(f){if(f==="darwin")return["darwin","macos","mac"];if(f==="win32")return["win32","windows"];return[f]}function rg(f){if(!Fq(f))return null;let J=f.bindings;if(Fq(J))return J;return f}function Oq(f,J,Y){let z=[];if(f===null||f===void 0)return{entries:[],warnings:z};if(!Fq(f))return{entries:[],warnings:["config root must be a YAML mapping (e.g. a top-level `bindings:` key)"]};let G=new Map,X=[];if(f.bindings!==void 0)if(Fq(f.bindings))X.push(f.bindings);else z.push("`bindings:` must be a mapping of id \u2192 chord(s)");for(let q of $g(J)){let Q=f[q];if(Q===void 0)continue;let H=rg(Q);if(H)X.push(H);else z.push(`\`${q}:\` must be a mapping (or contain a \`bindings:\` mapping)`)}for(let q of X)for(let[Q,H]of Object.entries(q)){if(H===null||H===!1||Array.isArray(H)&&H.length===0){G.set(Q,[]);continue}let B=typeof H==="string"?[H]:Array.isArray(H)?H:null;if(!B){z.push(`${Q}: expected a chord string, a list of chords, or null \u2014 got ${typeof H}`);continue}let V=[],j=!1;for(let U of B){if(typeof U!=="string"){z.push(`${Q}: chord entries must be strings`),j=!0;continue}let L=ag(U,Y?.chordOptsFor?.(Q));if("error"in L){z.push(`${Q}: ${L.error}`),j=!0;continue}if(L.warning)z.push(`${Q}: ${L.warning}`);if(!V.includes(L.chord))V.push(L.chord)}if(V.length===0&&j){z.push(`${Q}: no valid chords \u2014 keeping the default`);continue}G.set(Q,V)}return{entries:Array.from(G,([q,Q])=>({id:q,keys:Q})),warnings:z}}function pg(f,J){return f===J||f==="global"||J==="global"}function n7(f,J){let Y=[],z=[];for(let G of J){let X=f.find((j)=>j.id===G.id);if(!X){Y.push(`${G.id}: unknown binding id (press F1 in kobe for the full list)`);continue}let q=wB[G.id];if(q){Y.push(`${G.id}: not customizable \u2014 ${q}`);continue}if(X.keys.length===0){Y.push(`${G.id}: not customizable \u2014 the key is handled outside the keymap (doc-only row)`);continue}let Q=mg[G.id];if(Q&&G.keys.length>0){let j=Q.validateCount(G.keys.length);if(j){Y.push(`${G.id}: ${j} \u2014 keeping the default`);continue}}let H=G.keys.filter((j)=>{if(j.length===1&&cg.has(X.scope))return Y.push(`${G.id}: "${j}" dropped \u2014 a bare character on a ${X.scope}-scope binding would steal typed input (add a modifier)`),!1;return!0});if(H.length===0&&G.keys.length>0){Y.push(`${G.id}: no chords survived validation \u2014 keeping the default`);continue}if(Q&&H.length!==G.keys.length){Y.push(`${G.id}: a dropped chord would shift the slot layout (${Q.layout}) \u2014 keeping the default`);continue}let B=X.keys,V=X;if(V.keys=H,X.hint)if(H.length===0)V.hint=void 0;else X.hint.keys=H.join("/");z.push({id:G.id,keys:H,defaultKeys:B})}for(let G of z)for(let X of G.keys){let q=f.find((Q)=>Q.id===G.id);if(!q)continue;for(let Q of f){if(Q.id===G.id)continue;if(!Q.keys.includes(X))continue;if(!pg(q.scope,Q.scope))continue;Y.push(`${G.id}: "${X}" also fires ${Q.id} (${Q.scope} scope) \u2014 last registration wins; consider a different chord`)}}return{applied:z,warnings:Y}}var wB,mg,cg,ng,dg,ig,lg;var Aq=k(()=>{wB={"focus.numeric":"pane focus is positional (h/j/k/l \u2192 pane) and mirrors the tmux-layer ctrl+hjkl bindings \u2014 rebind tmux.focus instead","sidebar.goto":"gg vs Shift+G is discriminated via evt.shift; shift+<letter> chords are inexpressible, so a rebind can't carry both halves","sidebar.pin":"fires on Shift+P via evt.shift; shift+<letter> chords are inexpressible, so a rebind can't work","sidebar.localMerge":"fires on Shift+M via evt.shift; shift+<letter> chords are inexpressible, so a rebind can't work","chat.question.nav":"the question picker has no live registration site (display-only row) \u2014 rebinding would change Help without changing behavior","chat.question.pick-number":"digits map to options positionally and the question picker has no live registration site (display-only row)"};mg={"sidebar.nav":XG("down","up"),"files.nav":XG("down","up"),"sidebar.search.nav":XG("down","up"),"files.hierarchy":XG("collapse","expand"),"sidebar.view":XG("previous view","next view"),"files.tab":XG("previous tab","next tab")},cg=new Set(["global","workspace","terminal"]),ng={ctrl:"ctrl",control:"ctrl",ctl:"ctrl",cmd:"cmd",command:"cmd",meta:"cmd",super:"cmd",win:"cmd",alt:"alt",option:"alt",opt:"alt",shift:"shift"},dg={esc:"escape",spacebar:"space",pgup:"pageup",pgdn:"pagedown",pgdown:"pagedown"},ig=new Set(["up","down","left","right","pageup","pagedown","home","end","insert","delete","backspace","tab","space","escape","enter","return",...Array.from({length:12},(f,J)=>`f${J+1}`)]),lg=["ctrl","cmd","alt","shift"]});function ZG(f){return f in d7}function Az(f,J){let Y=f.split("+"),z=Y.pop()??"";if(z===""&&Y.length>0){if(z="+",Y[Y.length-1]==="")Y.pop()}let G=new Set(Y);if(G.has("cmd"))return{error:`"${f}": the Command key never reaches tmux \u2014 use ctrl/alt/shift`};let X;if(z.length===1)X=G.has("shift")?z.toUpperCase():z;else{let H=og[z];if(!H)return{error:`"${f}": tmux can't bind the key "${z}"`};X=H}let q=/^f\d+$/.test(z);if(G.size===0&&!q&&!J?.allowBare)return{error:`"${f}": tmux session keys are no-prefix root bindings live in every pane \u2014 a bare key would shadow typing (add a modifier, or use an F-key)`};let Q="";if(G.has("ctrl"))Q+="C-";if(G.has("alt"))Q+="M-";if(G.has("shift"))Q+="S-";return{key:Q+X}}function l7(){let f={};for(let[Y,z]of Object.entries(Oz)){let G=Az(z,{allowBare:ZG(Y)});if("error"in G)throw Error(`default tmux chord for ${Y} failed to translate: ${G.error}`);f[Y]={chord:z,key:G.key}}let J=yY.map((Y)=>{let z=Az(Y);if("error"in z)throw Error(`default tmux focus chord ${Y} failed to translate`);return{chord:Y,key:z.key}});return{binds:f,focus:J,overridden:new Set,warnings:[]}}function hB(f){let J=l7(),Y=new Set;for(let z of f){if(!z.id.startsWith("tmux."))continue;if(z.id===SJ){if(z.keys.length===0){J.focus=[null,null,null,null],Y.add(SJ);continue}if(z.keys.length!==yY.length){J.warnings.push(`${SJ}: needs exactly 4 chords in order left/down/up/right (got ${z.keys.length}) \u2014 keeping the default`);continue}let Q=[],H=!0;for(let B of z.keys){let V=Az(B);if("error"in V){J.warnings.push(`${SJ}: ${V.error} \u2014 keeping the default`),H=!1;break}Q.push({chord:B,key:V.key})}if(!H)continue;J.focus=Q,Y.add(SJ);continue}if(!(z.id in Oz)){J.warnings.push(`${z.id}: unknown tmux binding id`);continue}let G=z.id;if(z.keys.length===0){J.binds[G]=null,Y.add(G);continue}if(z.keys.length>1)J.warnings.push(`${G}: tmux bindings take ONE chord \u2014 using "${z.keys[0]}", ignoring the rest`);let X=z.keys[0],q=Az(X,{allowBare:ZG(G)});if("error"in q){J.warnings.push(`${G}: ${q.error} \u2014 keeping the default`);continue}if(X!==Oz[G])Y.add(G);J.binds[G]={chord:X,key:q.key}}return J.overridden=Y,J}function PB(f){return f.startsWith("tmux.")?{allowShiftCharacter:!0}:{}}function a7(){Fz=null}function gq(){if(Fz)return Fz;let f=Mq();if(!f.exists||f.doc===null)return Fz=l7(),Fz;let J=Oq(f.doc,process.platform,{chordOptsFor:PB}),Y=J.warnings.filter((G)=>G.startsWith("tmux.")),z=hB(J.entries);z.warnings=[...Y,...z.warnings];for(let G of z.warnings)console.warn(`[kobe/keybindings] ${G}`);return Fz=z,Fz}var _g,d7,i7,Oz,SJ="tmux.focus",yY,og,Fz=null;var Rq=k(()=>{xB();Aq();_g={"tmux.detach":"ctrl+q","tmux.tab.new":"ctrl+t","tmux.tab.chooseEngine":"ctrl+shift+t","tmux.tab.prev":"ctrl+[","tmux.tab.next":"ctrl+]","tmux.tab.close":"ctrl+w","tmux.tab.rename":"f2"},d7={"tmux.layout.workspaceSplit":"s","tmux.layout.workspaceClose":"x","tmux.layout.workspaceReset":"r","tmux.layout.tasksToggle":"a","tmux.layout.opsToggle":"o","tmux.layout.terminalToggle":"z","tmux.layout.zenToggle":"space"},i7=["F6","F7","F8","F9","F10","F11"],Oz={..._g,...d7};yY=["ctrl+h","ctrl+j","ctrl+k","ctrl+l"],og={up:"Up",down:"Down",left:"Left",right:"Right",pageup:"PgUp",pagedown:"PgDn",home:"Home",end:"End",insert:"IC",delete:"DC",backspace:"BSpace",tab:"Tab",space:"Space",escape:"Escape",enter:"Enter",return:"Enter",...Object.fromEntries(Array.from({length:12},(f,J)=>[`f${J+1}`,`F${J+1}`]))}});async function VX(f,J){let Y=null;for(let G=0;G<24;G++){let X=await $z(f);if(X){if(!J)return{pane:X,ready:!0};let q=(await rz(X)).trim();if(q.length>0&&q===Y)return{pane:X,ready:!0};Y=q}await $7(250)}return{pane:await $z(f)||await JB(f),ready:!1}}async function KX(f,J){let Y=`kobe-api-${f.replace(/[^A-Za-z0-9]/g,"")}`;await h0(["set-buffer","-b",Y,"--",J]),await h0(["paste-buffer","-p","-d","-b",Y,"-t",f]),await $7(sg),await GX(f,"Enter")}async function r7(f,J){let{pane:Y}=await VX(f,!0);if(!Y)return;await KX(Y,J.text)}var $7=(f)=>new Promise((J)=>setTimeout(J,f)),sg=150;var Cq=k(()=>{Tf()});function p7(f,J){if(f===null)return{kind:"create",reason:"no session with this name \u2014 build fresh"};let Y=f.worktree===J.cwd,z=!J.vendor||f.vendor===J.vendor;if(f.claudePaneAlive&&Y&&z)return{kind:"reuse",reason:"healthy: engine pane alive, worktree + vendor match"};if(Y&&!z&&J.hasEngineCommand)return{kind:"respawn-engine",reason:`vendor drift: session tagged ${f.vendor===""?"<untagged>":`"${f.vendor}"`}, task wants "${J.vendor}" \u2014 relaunch engine pane in place (KOB-232)`};if(Y&&z&&f.windowCount>1)return{kind:"reuse",reason:"active window's engine pane is gone but sibling chat tabs exist \u2014 reuse rather than drop them"};if(!Y)return{kind:"rebuild",reason:f.worktree===""?"legacy session with no @kobe_worktree tag \u2014 rebuild in the right place":`worktree drift: session tagged "${f.worktree}", task wants "${J.cwd}" \u2014 rebuild`};if(!z)return{kind:"rebuild",reason:"vendor drift but no engine command to respawn with \u2014 rebuild"};return{kind:"rebuild",reason:"single-window session whose engine pane was destroyed \u2014 rebuild"}}var _7;var o7=k(()=>{Hq();Bq();jq();Wq();Vq();Kq();Uq();_7={claude:sz,conductor:tz,nord:fG,opencode:JG,dracula:ez,tokyonight:zG,"osaka-jade":YG}});function tg(f){let J=/^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/.exec(f);if(!J)return null;let Y=J[1];if(Y.length===3){let[z,G,X]=Y;return`#${z}${z}${G}${G}${X}${X}`.toLowerCase()}return`#${Y.slice(0,6)}`.toLowerCase()}function s7(f,J,Y="dark"){let z=f.defs??{};function G(q,Q){if(typeof q==="string"){if(q==="transparent"||q==="none")return null;if(q.startsWith("#"))return tg(q);if(Q.includes(q))return null;let B=z[q]??f.theme[q];if(B===void 0)return null;return G(B,[...Q,q])}if(!q||typeof q!=="object")return null;let H=q[Y];return typeof H==="string"?G(H,Q):null}let X=f.theme[J];if(X===void 0)return null;return G(X,[J])}function kq(f){return typeof f==="object"&&f!==null&&!Array.isArray(f)}function Nq(f){if(!kq(f))return{ok:!1,reason:"theme must be a JSON object at the top level"};let J=f;if(!("theme"in J))return{ok:!1,reason:"missing required key `theme`"};let Y=J.theme;if(!kq(Y))return{ok:!1,reason:"`theme` must be an object map"};if("defs"in J&&J.defs!==void 0){if(!kq(J.defs))return{ok:!1,reason:"`defs` must be an object map"};for(let[z,G]of Object.entries(J.defs))if(typeof G!=="string")return{ok:!1,reason:`defs.${z} must be a string (hex like "#abc" or a ref name)`}}for(let[z,G]of Object.entries(Y)){if(typeof G==="string")continue;if(!kq(G))return{ok:!1,reason:`theme.${z} must be a string or a { dark, light } object (got ${G===null?"null":Array.isArray(G)?"array":typeof G})`};let X=G;if(typeof X.dark!=="string")return{ok:!1,reason:`theme.${z}.dark must be a string`};if(typeof X.light!=="string")return{ok:!1,reason:`theme.${z}.light must be a string`}}if("$schema"in J&&J.$schema!==void 0&&typeof J.$schema!=="string")return{ok:!1,reason:"`$schema` must be a string when present"};return{ok:!0,theme:J}}var vB=()=>{};import{readFileSync as eg,readdirSync as fR}from"fs";import{join as t7}from"path";function qG(){return t7(ef(),"themes")}function UX(){let f=qG(),J;try{J=fR(f)}catch{return[]}let Y=[];for(let z of J){if(!z.endsWith(".json"))continue;let G=t7(f,z),X;try{let H=eg(G,"utf8");X=JSON.parse(H)}catch(H){let B=H instanceof Error?H.message:String(H);console.warn(`[kobe] skipping user theme ${G}: invalid JSON \u2014 ${B}`);continue}let q=Nq(X);if(!q.ok){console.warn(`[kobe] skipping user theme ${G}: ${q.reason}`);continue}let Q=z.slice(0,-5);Y.push({name:Q,theme:q.theme})}return Y}var yq=k(()=>{lf();vB()});import{readFileSync as JR}from"fs";function zR(){try{let f=JSON.parse(JR(m1(),"utf8")),J=typeof f.activeTheme==="string"&&f.activeTheme?f.activeTheme:"claude",Y=typeof f.focusAccent==="string"&&YR.includes(f.focusAccent)?f.focusAccent:"primary";return{themeName:J,focusAccentSlot:Y,enabled:f.tmuxChromeTheme!=="off"&&f.tmuxBorderTheme!=="off"}}catch{return{themeName:"claude",focusAccentSlot:"primary",enabled:!0}}}function GR(f){return UX().find((Y)=>Y.name===f)?.theme??_7[f]??null}function VJ(f,...J){for(let Y of J){let z=s7(f,Y);if(z)return z}return null}function e7(f,J){let Y=VJ(f,"text"),z=VJ(f,"background"),G=VJ(f,"textMuted","text"),X=VJ(f,"backgroundPanel","background"),q=VJ(f,"backgroundElement","backgroundPanel","background"),Q=VJ(f,"backgroundMenu","backgroundElement","backgroundPanel","background"),H=VJ(f,"selectedListItemText","background"),B=VJ(f,J,"primary","borderActive","border","text");return{border:VJ(f,"border","text"),activeBorder:B,statusBg:X,statusFg:G,statusMutedFg:G,windowFg:G,currentWindowBg:q,currentWindowFg:B,activityFg:VJ(f,"info","primary","text"),bellFg:VJ(f,"warning","error","primary","text"),messageBg:Q,messageFg:Y,messageCommandFg:B,modeBg:B,modeFg:H??z}}function $1(f){let J=[];if(f.bg)J.push(`bg=${f.bg}`);if(f.fg)J.push(`fg=${f.fg}`);if(J.length===0)return null;if(f.attrs)J.push(...f.attrs);return J.join(",")}function J5(f){let J=$1({bg:f.statusBg,fg:f.statusFg}),Y=$1({bg:f.statusBg,fg:f.statusMutedFg}),z=$1({bg:f.statusBg,fg:f.windowFg});return[{key:"border",option:"pane-border-style",showFlag:"-gwqv",setFlag:"-gw",unsetFlag:"-gwu",value:$1({fg:f.border})},{key:"active",option:"pane-active-border-style",showFlag:"-gwqv",setFlag:"-gw",unsetFlag:"-gwu",value:$1({fg:f.activeBorder})},{key:"status",option:"status-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:J},{key:"status-left",option:"status-left-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Y},{key:"status-right",option:"status-right-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Y},{key:"window",option:"window-status-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:z},{key:"current-window",option:"window-status-current-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:$1({bg:f.currentWindowBg,fg:f.currentWindowFg,attrs:["bold"]})},{key:"activity-window",option:"window-status-activity-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:$1({bg:f.statusBg,fg:f.activityFg})},{key:"bell-window",option:"window-status-bell-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:$1({bg:f.statusBg,fg:f.bellFg,attrs:["bold"]})},{key:"last-window",option:"window-status-last-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:$1({bg:f.statusBg,fg:f.statusFg})},{key:"message",option:"message-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:$1({bg:f.messageBg,fg:f.messageFg})},{key:"message-command",option:"message-command-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:$1({bg:f.messageBg,fg:f.messageCommandFg,attrs:["bold"]})},{key:"mode",option:"mode-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:$1({bg:f.modeBg,fg:f.modeFg})},{key:"display-panes",option:"display-panes-colour",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:f.border},{key:"display-panes-active",option:"display-panes-active-colour",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:f.activeBorder}]}function XR(f){let J=new Set(f.marker.split(",").map((X)=>X.trim()).filter(Boolean)),Y=[],z=[];for(let X of J5(f.hexes))if(X.value){if((f.current[X.key]??"")!==X.value)Y.push(["set-option",X.setFlag,X.option,X.value]);z.push(X.key)}else if(J.has(X.key))Y.push(["set-option",X.unsetFlag,X.option]);let G=z.join(",");if(G!==f.marker)Y.push(G?["set-option","-g",mB,G]:["set-option","-gu",mB]);return Y}async function f5(f){let{code:J,stdout:Y}=await d0(f);return J===0?Y.trim():""}async function gz(){try{let f=zR(),J=f.enabled?GR(f.themeName):null,Y=J?e7(J,f.focusAccentSlot):e7({theme:{}},f.focusAccentSlot),z=J5(Y),[G,...X]=await Promise.all([f5(["show-options","-gqv",mB]),...z.map((H)=>f5(["show-options",H.showFlag,H.option]))]),q=Object.fromEntries(z.map((H,B)=>[H.key,X[B]??""])),Q=XR({marker:G,current:q,hexes:Y});if(Q.length>0)await Pf(Q)}catch{}}var mB="@kobe_border_theme",YR;var bq=k(()=>{lf();Tf();o7();yq();YR=["primary","success","info"]});function Y5(){return nf()[Sq]!==!1}var Sq="zen.keepTasks";var cB=k(()=>{pY()});var Iq={};jf(Iq,{recordGen:()=>bY,isLatestGen:()=>q5,genAgeMs:()=>WR,coalesceLayoutWork:()=>VR,RESIZE_GUARD_MS:()=>jR,LAYOUT_COALESCE_MS:()=>X5});import{createHash as ZR,randomUUID as qR}from"crypto";import{mkdirSync as QR,readFileSync as z5,renameSync as HR,writeFileSync as BR}from"fs";import{join as G5}from"path";function Z5(){return G5(ef(),"layout-coord")}function nB(f,J){let Y=ZR("sha1").update(f).digest("hex").slice(0,16);return G5(Z5(),`${Y}.${J}`)}function bY(f,J){let Y=qR();try{QR(Z5(),{recursive:!0});let z=nB(f,J),G=`${z}.${Y}.tmp`;BR(G,`${Date.now()}
58
- ${Y}`),HR(G,z)}catch{}return Y}function q5(f,J,Y){try{return z5(nB(f,J),"utf8").split(`
59
- `)[1]?.trim()===Y}catch{return!0}}function WR(f,J,Y=Date.now()){try{let z=Number.parseInt(z5(nB(f,J),"utf8").split(`
60
- `)[0]??"",10);return Number.isFinite(z)?Y-z:Number.POSITIVE_INFINITY}catch{return Number.POSITIVE_INFINITY}}async function VR(f,J,Y,z=X5){let G=bY(f,J);if(z>0)await new Promise((X)=>setTimeout(X,z));if(!q5(f,J,G))return;await Y()}var X5=120,jR=400;var QG=k(()=>{lf()});function UR(f){let J=[];for(let Y of f.split(`
61
- `)){let z=Y.trim();if(!z)continue;let[G,X,q,Q,H]=z.split("\t");if(!G||!X||!q)continue;let B=Number.parseInt(H?.trim()??"",10);J.push({windowId:G.trim(),paneId:X.trim(),role:q.trim(),version:Q?.trim()??"",...Number.isFinite(B)?{paneWidth:B}:{}})}return J}function Q5(f,J){let Y=new Map;for(let G of f){let X=Y.get(G.windowId)??[];X.push(G),Y.set(G.windowId,X)}let z=[];for(let G of Y.values()){let X=G.find((B)=>B.role==="claude")?.paneId,q=G.find((B)=>B.role==="tasks"),Q=G.find((B)=>B.role==="ops");if(q&&(J.force||q.version!==J.currentVersion))z.push({role:"tasks",paneId:q.paneId});let H=J.force?!0:X&&(J.vendorChanged||Q?.version!==J.currentVersion);if(Q&&H)z.push({role:"ops",paneId:Q.paneId,claudePaneId:X??null})}return z}async function dB(f){let{code:J,stdout:Y}=await d0(["list-panes","-s","-t",`=${f}`,"-F",KR]);if(J!==0)return null;return UR(Y)}function H5(f,J){let Y=Cf(),z=_f(),G=[];for(let X of f){let q=X.role==="tasks"?DY(Y,{initialTaskId:J.taskId}):nz({cwd:J.cwd,taskId:J.taskId,claudePaneId:X.claudePaneId,cliInvocation:Y,vendor:J.vendor});G.push(["respawn-pane","-k","-t",X.paneId,"-c",If(J.cwd),R1(z+q)],["set-option","-p","-t",X.paneId,"@kobe_role",X.role],["set-option","-p","-t",X.paneId,KJ,s0])}return G}async function B5(f,J,Y,z,G){let X=await dB(f);if(!X)return!1;let q=X.filter((B)=>B.role==="claude");if(q.length===0)return!1;let Q=If(J),H=[];for(let B of q){let V=pz(Y,G),j=R1(iz(g1(V.argv),z,J));H.push(["respawn-pane","-k","-c",Q,"-t",B.paneId,j]),H.push(V.sessionId?["set-window-option","-t",B.paneId,yJ,V.sessionId]:["set-window-option","-u","-t",B.paneId,yJ])}return await Pf(H),!0}async function j5(){let f=await OY([$J,Gz,rJ]),J=Number.parseInt(f[$J]??"",10),Y=Number.isFinite(J)&&J>0?zz(J):Jz,z=DR({widthPct:pJ(Number.parseInt(f[Gz]??"",10)),heightPct:pJ(Number.parseInt(f[rJ]??"",10))});return{tasksWidth:Y,rcArgs:z}}function DR(f){let J=[];if(f.widthPct!==null)J.push("-x",`${f.widthPct}%`);if(f.heightPct!==null)J.push("-y",`${f.heightPct}%`);return J}async function W5(){return(await j5()).rcArgs}async function iB(f,J={}){let{tasksWidth:Y,rcArgs:z}=await j5(),G=await dB(f);if(!G)return{rows:null,commands:[]};let X=[];for(let q of G)if(q.role==="tasks"&&(J.force||q.paneWidth!==Y))X.push(["resize-pane","-t",q.paneId,"-x",`${Y}`]);if(z.length>0){for(let q of G)if(q.role==="ops")X.push(["resize-pane","-t",q.paneId,...z])}return{rows:G,commands:X}}async function HG(f,J){bY(f,"resize");let{rows:Y,commands:z}=await iB(f);if(!Y)return;let G=[...z];if(J)G.push(...H5(Q5(Y,{currentVersion:s0,force:!1,vendorChanged:J.vendorChanged}),J));if(G.length>0)await Pf(G)}async function V5(f){if(!await Hf(f))return;await HG(f)}async function DX(f){let{code:J,stdout:Y}=await d0(["list-panes","-t",`=${f}`,"-F",`#{@kobe_role} #{pane_width} #{pane_height} #{window_width} #{window_height} #{window_zoomed_flag} #{${ZJ}} #{${A1}}`]);if(J!==0)return;let z=Y.split(`
62
- `).map((B)=>B.split("\t")).filter((B)=>(B[0]?.trim()??"")!=="");if(z.length===0)return;if(z.some((B)=>B[5]?.trim()==="1"))return;if(z.some((B)=>(B[6]?.trim()??"")!==""))return;if(z.some((B)=>(B[7]?.trim()??"")!==""))return;let G=Number.parseInt(z[0][3]?.trim()??"",10),X=Number.parseInt(z[0][4]?.trim()??"",10),q=[],Q=z.find(([B])=>B?.trim()==="tasks");if(Q){let B=Number.parseInt(Q[1]?.trim()??"",10);if(Number.isFinite(B)&&B>0)q.push(["set-option","-s",$J,`${zz(B)}`])}let H=z.find(([B])=>B?.trim()==="ops");if(H&&Number.isFinite(G)&&G>0&&Number.isFinite(X)&&X>0){let B=Number.parseInt(H[1]?.trim()??"",10),V=Number.parseInt(H[2]?.trim()??"",10),j=Number.isFinite(B)?pJ(100*B/G):null,U=Number.isFinite(V)?pJ(100*V/X):null;if(j!==null)q.push(["set-option","-s",Gz,`${j}`]);if(U!==null)q.push(["set-option","-s",rJ,`${U}`])}if(q.length>0)await Pf(q)}function LR(f){let J=f.split(`
63
- `).map((z)=>z.split("\t")).filter((z)=>(z[0]?.trim()??"")!=="");if(J.length===0)return!1;if(J.some((z)=>z[1]?.trim()==="1"))return!1;if(J.some((z)=>(z[2]?.trim()??"")!==""))return!1;if(J.some((z)=>(z[3]?.trim()??"")!==""))return!1;let Y=new Set(J.map((z)=>z[0]?.trim()));return Y.has("tasks")&&Y.has("ops")}async function K5(f){let{code:J,stdout:Y}=await d0(["list-panes","-t",`=${f}`,"-F",`#{@kobe_role} #{window_zoomed_flag} #{${ZJ}} #{${A1}}`]);if(J!==0||!LR(Y))return;await DX(f)}async function BG(f){let J=await C1(f,["@kobe_worktree","@kobe_task","@kobe_vendor"]),Y=J["@kobe_worktree"]||process.cwd(),z=J["@kobe_task"]||void 0,G=J["@kobe_vendor"]||void 0,X=await dB(f);if(!X)return;let q=H5(Q5(X,{currentVersion:s0,force:!0}),{cwd:Y,taskId:z,vendor:G});if(q.length>0)await Pf(q);await gz()}var KJ="@kobe_pane_version",KR;var LX=k(()=>{aJ();E1();e1();Tf();qJ();bq();D1();Qz();QG();KR=`#{window_id} #{pane_id} #{@kobe_role} #{${KJ}} #{pane_width}`});function FR(f){let J=[];for(let Y of f.split(`
64
- `)){let z=Y.trim();if(!z)continue;let[G,X,q,Q,H,B,V]=z.split("\t");if(!G)continue;let j=Number.parseInt(Q??"",10),U=Number.parseInt(H??"",10),L=Number.parseInt(B??"",10),O=Number.parseInt(V??"",10);J.push({paneId:G.trim(),role:X?.trim()??"",active:q?.trim()==="1",paneWidth:Number.isFinite(j)?j:0,paneHeight:Number.isFinite(U)?U:0,windowWidth:Number.isFinite(L)?L:0,windowHeight:Number.isFinite(O)?O:0})}return J}function OR(f){let J=f.find((z)=>z.role===Yz);if(!J)return{kind:"missing-engine"};let Y=f.filter((z)=>z.role===_G);if(Y.length+1>=uH)return{kind:"maxed"};if(Y.length===0)return{kind:"split",targetPane:J.paneId,direction:"-h"};if(Y.length===1)return{kind:"split",targetPane:Y[0]?.paneId??J.paneId,direction:"-v"};return{kind:"split",targetPane:J.paneId,direction:"-v"}}function lB(f){return f.find((J)=>J.role===XJ)??f.find((J)=>J.role==="")}function AR(f){return 100-(pJ(f??Number.NaN)??tG)}function gR(f){let J=Number.parseInt(f??"",10);return Number.isFinite(J)&&J>0?J:void 0}async function w1(f,J){let Y=J?.trim()||`=${f}`,{code:z,stdout:G}=await d0(["list-panes","-t",Y,"-F",MR]);return z===0?FR(G):null}async function RR(f){let{code:J,stdout:Y}=await d0(["list-windows","-t",`=${f}`,"-F","#{window_active}\t#{window_id}"]);if(J!==0)return"";for(let z of Y.split(`
65
- `)){let[G,X]=z.split("\t");if(G?.trim()==="1"&&X?.trim())return X.trim()}return""}async function tJ(f,J){let{code:Y,stdout:z}=await d0(["show-options","-wqv","-t",f,J]);return Y===0?z.trim():""}async function aB(f,J,Y){await h0(["set-window-option","-t",f,J,Y])}async function SY(f,J){await h0(["set-window-option","-u","-t",f,J])}async function $B(f){let{code:J,stdout:Y}=await d0(["display-message","-p","-t",f,"#{pane_id}"]);return J===0&&Y.trim()===f}async function Nf(f,J){await h0(["display-message","-t",f,J])}async function Tq(f){let J=await C1(f,["@kobe_worktree","@kobe_task","@kobe_vendor"]);return{cwd:J["@kobe_worktree"]||process.cwd(),taskId:J["@kobe_task"]||void 0,vendor:J["@kobe_vendor"]||void 0}}function CR(f){let J=Cf(),Y=_f();return R1(Y+nz({cwd:f.cwd,taskId:f.taskId,claudePaneId:f.enginePaneId,cliInvocation:J,vendor:f.vendor}))}async function kR(f,J){return J?.trim()||await RR(f)}async function NR(f,J){let Y=await w1(f,J);if(!Y)return;let z=OR(Y);if(z.kind==="missing-engine"){await Nf(J,"kobe: no engine pane in this window");return}if(z.kind==="maxed"){await Nf(J,`kobe: workspace split limit is ${uH} panes`);return}let{cwd:G}=await Tq(f),{code:X,stdout:q}=await d0(["split-window",z.direction,"-t",z.targetPane,"-l","50%","-c",If(G),"-P","-F","#{pane_id}",R1("true")]),Q=q.trim();if(X!==0||!Q)return;await Pf([["set-option","-p","-t",Q,"@kobe_role",_G],["select-pane","-t",Q]])}async function yR(f,J){let Y=await w1(f,J);if(!Y)return;let z=Y.filter((q)=>q.role===_G);if(z.length===0){await Nf(J,"kobe: no workspace split to close");return}let X=z.find((q)=>q.active)??z[z.length-1];if(!X)return;await h0(["kill-pane","-t",X.paneId])}async function bR(f,J){let Y=await w1(f,J);if(!Y)return;let z=Y.filter((G)=>G.role===_G);if(z.length===0){await Nf(J,"kobe: no workspace splits to reset");return}await Pf(z.map((G)=>["kill-pane","-t",G.paneId]))}async function U5(){let f=await OY([$J]);return zz(gR(f[$J])??Jz)}async function SR(f){let{cwd:J,taskId:Y}=await Tq(f),z=Cf(),G=_f();return{cwd:J,command:R1(G+DY(z,{initialTaskId:Y}))}}async function D5(f,J){let Y=await w1(f,J);if(!Y)return;let z=Y.find((M)=>M.role===GJ);if(z){await h0(["kill-pane","-t",z.paneId]);return}let G=lB(Y),X=Y.find((M)=>M.role===Yz);if(!X){await Nf(J,"kobe: cannot restore file pane in this layout");return}let{cwd:q,taskId:Q,vendor:H}=await Tq(f),B=CR({cwd:q,taskId:Q,vendor:H,enginePaneId:X.paneId}),V=G?["split-window","-v","-b","-t",G.paneId,"-l",`${await IR()}%`,"-c",If(q),"-P","-F","#{pane_id}",B]:["split-window","-h","-t",X.paneId,"-l",`${await rB()}%`,"-c",If(q),"-P","-F","#{pane_id}",B],{code:j,stdout:U}=await d0(V),L=U.trim();if(j!==0||!L)return;let O=[["set-option","-p","-t",L,"@kobe_role",GJ],["set-option","-p","-t",L,KJ,s0]];if(G?.role==="")O.push(["set-option","-p","-t",G.paneId,"@kobe_role",XJ]);await Pf(O)}async function IR(){let f=await OY([rJ]);return pJ(Number.parseInt(f[rJ]??"",10))??tG}async function rB(){let f=await OY([Gz]);return pJ(Number.parseInt(f[Gz]??"",10))??100-vZ}async function L5(){let f=await OY([rJ]);return AR(Number.parseInt(f[rJ]??"",10))}async function TR(f){let{code:J,stdout:Y}=await d0(["list-windows","-t",`=${f}`,"-F","#{window_index}"]);if(J!==0)return new Set;return new Set(Y.split(`
66
- `).map((z)=>Number.parseInt(z.trim(),10)).filter((z)=>Number.isFinite(z)))}async function M5(f,J){let Y=await TR(f),z=sW(J);while(Y.has(z))z++;return z}async function F5(f){let J=sG(f);if(await Hf(J))return J;return await h0(["new-session","-d","-s",J,"-n","hidden-panes","-c",If(process.cwd()),"while :; do sleep 3600; done"]),J}async function pB(f){let J=sG(f);if(!await Hf(J))return;let{code:Y,stdout:z}=await d0(["list-panes","-s","-t",`=${J}`,"-F","#{@kobe_role}"]);if(Y!==0)return;if(!z.split(`
67
- `).some((X)=>{let q=X.trim();return q===XJ||q===i1}))await h0(["kill-session","-t",`=${J}`])}async function uR(f,J){await O5(f,J,ZJ)}async function ER(f,J){await O5(f,J,A1)}async function O5(f,J,Y){let z=await tJ(J,Y);if(!z)return;if(await $B(z))await h0(["kill-pane","-t",z]);await SY(J,Y)}async function xR(f,J){await uR(f,J),await ER(f,J),await pB(f)}function A5(f){return f.find((J)=>J.role===Yz)??f[0]}async function _B(f,J,Y){let z=A5(Y);if(!z)return await Nf(J,"kobe: cannot restore Tasks pane in this layout"),!1;let G=await U5(),{cwd:X,command:q}=await SR(f),{code:Q,stdout:H}=await d0(["split-window","-h","-b","-t",z.paneId,"-l",`${G}`,"-c",If(X),"-P","-F","#{pane_id}",q]),B=H.trim();if(Q!==0||!B)return!1;return await Pf([["set-option","-p","-t",B,"@kobe_role",i1],["set-option","-p","-t",B,KJ,s0],["select-pane","-t",B]]),await SY(J,A1),await Nf(J,"kobe: Tasks pane restored"),!0}async function g5(f,J,Y){let z=await F5(f),G=await M5(z,J),{code:X,stdout:q}=await d0(["break-pane","-d","-s",Y.paneId,"-t",`${z}:${G}`,"-P","-F","#{pane_id}"]),Q=q.trim()||Y.paneId;if(X!==0||!Q){await Nf(J,"kobe: could not hide Tasks pane");return}await aB(J,A1,Q),await Nf(J,"kobe: Tasks pane hidden")}async function oB(f,J,Y){let z=await w1(f,J);if(!z)return;if(!await $B(Y)){await SY(J,A1);let q=z.find((Q)=>Q.role===i1);if(q){await h0(["select-pane","-t",q.paneId]);return}await _B(f,J,z);return}let G=A5(z);if(!G){await Nf(J,"kobe: cannot restore Tasks pane in this layout");return}if(await h0(["join-pane","-h","-b","-s",Y,"-t",G.paneId,"-l",`${await U5()}`])!==0){await Nf(J,"kobe: could not restore Tasks pane");return}await Pf([["set-option","-p","-t",Y,"@kobe_role",i1],["set-option","-p","-t",Y,KJ,s0],["select-pane","-t",Y]]),await SY(J,A1),await pB(f),await Nf(J,"kobe: Tasks pane restored")}async function wR(f,J){let Y=await tJ(J,A1);if(Y){await oB(f,J,Y);return}let z=await w1(f,J);if(!z)return;let G=z.find((X)=>X.role===i1);if(G){await g5(f,J,G);return}await _B(f,J,z)}async function hR(f,J){let Y=await tJ(J,A1);if(Y){await oB(f,J,Y);return}let z=await w1(f,J);if(!z)return;let G=z.find((X)=>X.role===i1);if(G){await h0(["select-pane","-t",G.paneId]);return}await _B(f,J,z)}async function R5(f,J,Y){if(Y.role==="")await h0(["set-option","-p","-t",Y.paneId,"@kobe_role",XJ]);let z=await F5(f),G=await M5(z,J),{code:X,stdout:q}=await d0(["break-pane","-d","-s",Y.paneId,"-t",`${z}:${G}`,"-P","-F","#{pane_id}"]),Q=q.trim()||Y.paneId;if(X!==0||!Q){await Nf(J,"kobe: could not hide terminal pane");return}await aB(J,ZJ,Q),await Nf(J,"kobe: Terminal pane hidden")}async function C5(f,J,Y){let z=Y.find((V)=>V.role===GJ),G=Y.find((V)=>V.role===Yz);if(!z&&!G)return await Nf(J,"kobe: cannot restore terminal pane in this layout"),!1;let{cwd:X}=await Tq(f),q=z?["split-window","-v","-t",z.paneId,"-l",`${await L5()}%`,"-c",If(X),"-P","-F","#{pane_id}"]:["split-window","-h","-t",G?.paneId??"","-l",`${await rB()}%`,"-c",If(X),"-P","-F","#{pane_id}"],{code:Q,stdout:H}=await d0(q),B=H.trim();if(Q!==0||!B)return!1;return await h0(["set-option","-p","-t",B,"@kobe_role",XJ]),await SY(J,ZJ),await Nf(J,"kobe: Terminal pane restored"),!0}async function k5(f,J,Y){let z=await w1(f,J);if(!z)return;if(!await $B(Y)){await SY(J,ZJ),await C5(f,J,z);return}let G=z.find((B)=>B.role===GJ),X=z.find((B)=>B.role===Yz);if(!G&&!X){await Nf(J,"kobe: cannot restore terminal pane in this layout");return}let q=G?["join-pane","-v","-s",Y,"-t",G.paneId,"-l",`${await L5()}%`]:["join-pane","-h","-s",Y,"-t",X?.paneId??"","-l",`${await rB()}%`];if(await h0(q)!==0){await Nf(J,"kobe: could not restore terminal pane");return}await h0(["set-option","-p","-t",Y,"@kobe_role",XJ]),await SY(J,ZJ),await pB(f),z=await w1(f,J);let H=z?.find((B)=>B.paneId===Y);if(H)await h0(["select-pane","-t",H.paneId]);await Nf(J,"kobe: Terminal pane restored")}async function PR(f,J){let Y=await tJ(J,ZJ);if(Y){await k5(f,J,Y);return}let z=await w1(f,J);if(!z)return;let G=lB(z);if(G){await R5(f,J,G);return}await C5(f,J,z)}async function vR(f){if((await Bz(f,oG)).length>0){await cR(f);return}await mR(f)}async function N5(f){let{code:J,stdout:Y}=await d0(["list-windows","-t",`=${f}`,"-F","#{window_id}"]);if(J!==0)return[];return Y.split(`
68
- `).map((z)=>z.trim()).filter((z)=>z.length>0)}async function y5(f,J){return!!(await w1(f,J))?.some((z)=>z.role===Yz)}async function mR(f){let J=await N5(f);for(let Y of J){if(!await y5(f,Y))continue;if(await tJ(Y,UY))continue;await S5(f,Y)}await FY(f,oG,"1"),await Nf(`=${f}`,"kobe: Zen mode on \u2014 all tabs")}async function cR(f){let J=await N5(f);for(let Y of J){let z=await tJ(Y,UY);if(z)await nR(f,Y,z)}await h0(["set-option","-u","-t",f,oG]),await Nf(`=${f}`,"kobe: Zen mode off \u2014 all tabs")}async function b5(f,J){if((await Bz(f,oG)).length===0)return;if(await tJ(J,UY))return;if(!await y5(f,J))return;await S5(f,J)}async function S5(f,J){let Y=await w1(f,J);if(!Y)return;let z=[],G=Y.find((q)=>q.role===GJ);if(G)await h0(["kill-pane","-t",G.paneId]),z.push(GJ);let X=lB(Y);if(X)await R5(f,J,X),z.push(XJ);if(!Y5()){let q=Y.find((Q)=>Q.role===i1);if(q)await g5(f,J,q),z.push(i1)}if(z.length===0){await Nf(J,"kobe: already focused \u2014 nothing to hide");return}await aB(J,UY,z.join(",")),await Nf(J,"kobe: Zen mode on")}async function nR(f,J,Y){let z=new Set(Y.split(",").map((G)=>G.trim()));if(z.has(i1)){let G=await tJ(J,A1);if(G)await oB(f,J,G)}if(z.has(GJ)){let G=await w1(f,J);if(G&&!G.some((X)=>X.role===GJ))await D5(f,J)}if(z.has(XJ)){let G=await tJ(J,ZJ);if(G)await k5(f,J,G)}await SY(J,UY),await Nf(J,"kobe: Zen mode off")}async function dR(f){let{code:J,stdout:Y}=await d0(["list-windows","-t",`=${f}`,"-F","#{window_id}"]);if(J!==0)return 0;return Y.split(`
69
- `).filter((z)=>z.trim().length>0).length}async function iR(f,J){if(await dR(f)<=1){await Nf(J,"Cannot close the only ChatTab");return}await xR(f,J),await h0(["kill-window","-t",J])}async function uq(f,J,Y={}){if(!await Hf(f))return;let z=await kR(f,Y.windowId);if(!z)return;switch(J){case"workspace-split":await NR(f,z);return;case"workspace-close":await yR(f,z);return;case"workspace-reset":await bR(f,z);return;case"tasks-toggle":await wR(f,z);return;case"tasks-restore":await hR(f,z);return;case"ops-toggle":await D5(f,z);return;case"terminal-toggle":await PR(f,z);return;case"zen-toggle":await vR(f);return;case"chat-tab-close":await iR(f,z);return}}var MR="#{pane_id}\t#{@kobe_role}\t#{pane_active}\t#{pane_width}\t#{pane_height}\t#{window_width}\t#{window_height}";var Eq=k(()=>{aJ();e1();cB();Tf();qJ();D1();Qz();LX()});function wq(f,J){return[["bind-key","-n",f,"if-shell","-F","#{?#{@kobe_surface},0,1}","previous-window"],["bind-key","-n",J,"if-shell","-F","#{?#{@kobe_surface},0,1}","next-window"]]}function hq(f,J="kill-window"){return["bind-key","-n",f,"if-shell","-F","#{>:#{session_windows},1}",J,"display-message 'Cannot close the only ChatTab'"]}function Pq(f){return["bind-key","-n",f,"command-prompt","-I","#{window_name}","rename-window -- '%%'"]}function vq(f){return[["bind-key","-n",f,"command-prompt","-p",xq],["bind-key","T","command-prompt","-p",xq]]}function sB(f){return f.startsWith("C-")&&f.length===3?`^${f.slice(2)}`:f}function mq(f){return`${[f.focusLeft?`${sB(f.focusLeft)} tasks`:null,f.detach?`${sB(f.detach)} detach`:null,f.newTab?`${sB(f.newTab)} tab`:null,f.layoutSplits?`prefix ${f.layoutSplits} splits`:null,f.layoutPanes?`prefix ${f.layoutPanes} panes`:null].filter((Y)=>Y!==null).join(" ")} `}async function eB(f,J){let Y=_f(),z=await $Z(),G=R1(J.opsCommand??Y+nz({cwd:J.cwd,taskId:J.taskId,claudePaneId:f,cliInvocation:J.inv,vendor:J.vendor})),{stdout:X}=await YX([["set-option","-p","-t",f,"@kobe_role","claude"],["set-window-option","-t",f,tB,"idle"],["split-window","-h","-b","-t",f,"-l",`${z}`,"-c",If(J.cwd),"-P","-F","tasks=#{pane_id}",R1(Y+DY(J.inv,{initialTaskId:J.taskId}))],["split-window","-h","-t",f,"-l",`${100-vZ}%`,"-c",If(J.cwd),"-P","-F","ops=#{pane_id}",G],["split-window","-v","-l",`${100-tG}%`,"-c",If(J.cwd),"-P","-F","shell=#{pane_id}"],["select-pane","-t",f]]),q=Object.fromEntries(X.split(`
70
- `).map((Q)=>Q.trim()).filter(Boolean).map((Q)=>Q.split("=",2)));if(await Pf([...q.tasks?[["set-option","-p","-t",q.tasks,"@kobe_role",i1]]:[],...q.tasks?[["set-option","-p","-t",q.tasks,KJ,s0]]:[],...q.ops?[["set-option","-p","-t",q.ops,"@kobe_role",GJ]]:[],...q.ops?[["set-option","-p","-t",q.ops,KJ,s0]]:[],...q.shell?[["set-option","-p","-t",q.shell,"@kobe_role",XJ]]:[]]),q.ops){let Q=await W5();if(Q.length>0)await h0(["resize-pane","-t",q.ops,...Q])}}async function I5(f,J){if(!await Hf(f))return;let Y=await C1(f,["@kobe_worktree","@kobe_task","@kobe_vendor",JX]),z=Y["@kobe_worktree"]||process.cwd(),G=Y["@kobe_task"]||void 0,X=Y[JX]||void 0,q=J??Y["@kobe_vendor"];if(J)await lR(f,G,J);let Q=N1(q),H=pz(Q,q),B=Cf(),j=(await d0(["new-window","-t",`=${f}`,"-c",If(z),"-P","-F","#{pane_id}",R1(iz(g1(H.argv),X,z))])).stdout.trim();if(!j)return;if(H.sessionId)await AY(j,yJ,H.sessionId);await eB(j,{cwd:z,taskId:G,inv:B,vendor:q});let{stdout:U}=await d0(["display-message","-p","-t",j,"#{window_id}"]),L=U.trim();if(L)await b5(f,L)}async function nq(f){if(!await Hf(f))return;let Y=(await C1(f,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),z=Cf(),X=`${_f()}${z.map(Xf).join(" ")} settings`;await HJ(f,{cwd:If(Y),command:X,name:"settings",surface:!0})}async function dq(f){if(!await Hf(f))return;let Y=(await C1(f,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),z=Cf(),X=`${_f()}${z.map(Xf).join(" ")} help-page`;await HJ(f,{cwd:If(Y),command:X,name:"help",surface:!0})}async function iq(f,J){if(!await Hf(f))return;let z=(await C1(f,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),G=Cf(),X=_f(),q=J?` --repo ${Xf(J)}`:"",Q=`${X}${G.map(Xf).join(" ")} new-task${q}`;await HJ(f,{cwd:If(z),command:Q,name:"new task",surface:!0})}async function lq(f){if(!await Hf(f))return;let Y=(await C1(f,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),z=Cf(),X=`${_f()}${JV({cliInvocation:z})}`;await HJ(f,{cwd:If(Y),command:X,name:"update",surface:!0})}async function T5(f){if(!await Hf(f))return;let Y=(await C1(f,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),z=Cf(),X=`${_f()}${z.map(Xf).join(" ")} quick-task --session ${Xf(f)}`;await HJ(f,{cwd:If(Y),command:X,name:"quick task",surface:!0})}async function lR(f,J,Y){if(await FY(f,"@kobe_vendor",Y),!J)return;try{let{connectOrStartDaemon:z}=await Promise.resolve().then(() => (y1(),Jj)),G=await z();try{await G.request("task.setVendor",{taskId:J,vendor:Y})}finally{G.close()}}catch(z){console.error("[kobe tmux] failed to persist selected engine vendor:",z)}}var xq,tB="@kobe_tab_state",MX="#{?#{==:#{@kobe_tab_state},running},\u25CF,#{?#{==:#{@kobe_tab_state},done},\u2713,#{?#{==:#{@kobe_tab_state},error},!,#{?#{==:#{@kobe_tab_state},unknown},?,\u25CB}}}} #I:#W",cq;var fj=k(()=>{aJ();E1();e1();Tf();qJ();U1();D1();Qz();Eq();LX();xq=`engine (${cf.join("/")}/\u2026)`;cq=MX});var r1={};jf(r1,{tmuxWindowSizeArgsForClient:()=>Gj,tmuxSessionName:()=>Lf,tmuxInitialSizeArgs:()=>E5,tmuxInitialClientSize:()=>zj,tmuxAvailable:()=>NJ,switchClientBeforeKill:()=>bJ,sessionExists:()=>Hf,selectTasksPane:()=>tR,runLayoutAction:()=>uq,resyncWindowToClient:()=>rR,refreshKobeWorkspacePanes:()=>BG,quickCreate:()=>T5,prepareWindowForSwitch:()=>$q,prepareWindowForAttach:()=>aq,parseTmuxClientRows:()=>x5,parseObservedSession:()=>P5,openUpdateTab:()=>lq,openSettingsTab:()=>nq,openNewTaskTab:()=>iq,openHelpTab:()=>dq,newChatTab:()=>I5,kobeStatusRight:()=>mq,killSession:()=>l1,healSessionLayout:()=>V5,focusBindCommand:()=>h5,ensureSession:()=>TY,currentSessionName:()=>k1,clientsWithConflictingSize:()=>w5,chatTabSwitchBindings:()=>wq,chatTabRenameBinding:()=>Pq,chatTabCloseBinding:()=>hq,chatTabChooseEngineBindings:()=>vq,captureGlobalLayoutOnDrag:()=>K5,captureGlobalLayout:()=>DX,attachArgv:()=>az,PANE_VERSION_OPTION:()=>KJ,CHAT_TAB_STATUS_FORMAT:()=>MX,CHAT_TAB_STATUS_CURRENT_FORMAT:()=>cq,CHAT_TAB_STATE_OPTION:()=>tB,CHAT_TAB_ENGINE_PROMPT:()=>xq});function E5(f=process.stdout,J=process.env){let Y=zj(f,J);return Y?["-x",`${Y.columns}`,"-y",`${Y.rows}`]:[]}function zj(f=process.stdout,J=process.env){let Y=IY(f.columns)??IY(J.COLUMNS),z=IY(f.rows)??IY(J.LINES);return Y&&z?{columns:Y,rows:z}:null}function IY(f){let J=typeof f==="number"?f:typeof f==="string"?Number.parseInt(f,10):Number.NaN;return Number.isInteger(J)&&J>0?J:void 0}function x5(f){let J=[];for(let Y of f.split(`
71
- `)){let[z,G,X,q,Q]=Y.split("\t"),H=IY(X?.trim()),B=IY(q?.trim());if(!z?.trim()||!G?.trim()||!H||!B)continue;J.push({name:z.trim(),session:G.trim(),width:H,height:B,flags:Q?.trim()??""})}return J}function w5(f,J,Y,z={}){return f.filter((G)=>G.session===J).filter((G)=>G.name!==z.currentClientName).filter((G)=>G.width!==Y.columns||G.height!==Y.rows).map((G)=>G.name)}function Gj(f,J){let Y=Math.max(1,f.rows-(J.status?.trim()==="on"?1:0));return["-x",`${f.columns}`,"-y",`${Y}`]}async function Xj(f,J,Y={}){if(!J)return;let{code:z,stdout:G}=await d0(["list-clients","-t",`=${f}`,"-F",aR]);if(z!==0)return;let X=w5(x5(G),f,J,Y),q=[];if(Y.currentClientName)q.push(["refresh-client","-f","!ignore-size","-t",Y.currentClientName]);for(let Q of X)q.push(["refresh-client","-f","ignore-size","-t",Q]);if(q.length>0)await Pf(q)}async function aq(f){bY(f,"resize");let J=zj();await Xj(f,J);let Y=J?["-x",`${J.columns}`,"-y",`${J.rows}`]:[];if(Y.length>0)await h0(["resize-window","-t",`=${f}`,...Y]);await HG(f)}async function $R(){let{code:f,stdout:J}=await d0(["display-message","-p","#{client_name}\t#{client_width}\t#{client_height}\t#{status}"]);if(f!==0)return{sizeArgs:[],clientSize:null,clientName:void 0};let[Y,z,G,X]=J.trim().split("\t"),q=IY(z),Q=IY(G),H=q&&Q?{columns:q,rows:Q}:null;return{sizeArgs:H?Gj(H,{status:X}):[],clientSize:H,clientName:Y?.trim()||void 0}}async function $q(f){bY(f,"resize");let J=await $R();await Xj(f,J.clientSize,{currentClientName:J.clientName});let Y=J.sizeArgs;if(Y.length>0)await h0(["resize-window","-t",`=${f}`,...Y]);await HG(f)}async function rR(f,J){if(!J.size)return;bY(f,"resize"),await Xj(f,J.size,{currentClientName:J.clientName});let Y=Gj(J.size,{status:J.status}),{commands:z}=await iB(f,{force:!0});await Pf([["resize-window","-t",`=${f}`,...Y],...z])}function h5(f,J,Y){let z=`#{?window_zoomed_flag,1,#{?${pR[J]},,1}}`;if(Y)return["bind-key","-n",f,"if-shell","-F",z,`select-pane ${J}`,Y];return["bind-key","-n",f,"if-shell","-F",z,`select-pane ${J}`]}async function TY(f){let J=Yj.get(f.name);if(J)return J;let Y=sR(f);Yj.set(f.name,Y);try{return await Y}finally{Yj.delete(f.name)}}function P5(f){let J="",Y="",z=!1,G=new Set;for(let X of f.split(`
72
- `)){let[q,Q,H,B,V]=X.split("\t");if(!q?.trim())continue;if(G.add(q.trim()),!J&&B?.trim())J=B.trim();if(!Y&&V?.trim())Y=V.trim();if(Q?.trim()==="1"&&H?.trim()==="claude")z=!0}return{worktree:J,vendor:Y,claudePaneAlive:z,windowCount:G.size}}async function oR(f){if(!await Hf(f))return null;let{code:J,stdout:Y}=await d0(["list-panes","-s","-t",`=${f}`,"-F",_R]);if(J!==0)return{worktree:"",vendor:"",claudePaneAlive:!1,windowCount:0};return P5(Y)}async function sR(f){let J=f.launchInit,Y=await oR(f.name),z=p7(Y,{cwd:f.cwd,vendor:f.vendor,hasEngineCommand:f.command.length>0}),G=h9(f.repo);if(z.kind==="reuse")return await HG(f.name,{cwd:f.cwd,taskId:f.taskId,vendor:f.vendor}),!0;if(z.kind==="respawn-engine"){if(await B5(f.name,f.cwd,f.command,G,f.vendor)){if(f.vendor)await FY(f.name,"@kobe_vendor",f.vendor);return await HG(f.name,{cwd:f.cwd,taskId:f.taskId,vendor:f.vendor,vendorChanged:!0}),!0}}if(z.kind==="rebuild"||z.kind==="respawn-engine")await l1(f.name);let X=Cf(),q=pz(f.command,f.vendor),Q=f.repo!==void 0&&f.cwd===f.repo,H=Q||G?void 0:f.taskId,B=Q&&!G?f.taskId:void 0,V=Xq(Gq(q.argv,f.vendor,H),f.vendor,B),j=iz(g1(V),G,f.cwd),L=(await d0(["new-session","-d","-s",f.name,"-c",If(f.cwd),...E5(),"-P","-F","#{pane_id}",eW(j,{initScript:G?void 0:J?.initScript,markerPath:!G&&J?.initScript?Z9(f.cwd):void 0})])).stdout.trim();if(!L)return console.error("[kobe tmux] new-session returned no pane id; session creation failed"),!1;if(q.sessionId)await AY(L,yJ,q.sessionId);await Pf([...f.taskId?[["set-option","-t",f.name,"@kobe_task",f.taskId]]:[],["set-option","-t",f.name,"@kobe_worktree",f.cwd],...f.vendor?[["set-option","-t",f.name,"@kobe_vendor",f.vendor]]:[],...G?[["set-option","-t",f.name,JX,G]]:[]]),await eB(L,{cwd:f.cwd,taskId:f.taskId,opsCommand:f.opsCommand,inv:X,vendor:f.vendor});let O=_f(),M=X.map(Xf).join(" "),R=`${O}${M} new-chattab --session '#{session_name}'`,S=`${R} --vendor '%%'`,a=`run-shell ${Xf(S)}`,N=`${O}${M} focus-tasks --session '#{session_name}' --window '#{window_id}'`,g=`run-shell ${Xf(N)}`,C=(H0)=>`${O}${M} layout --session '#{session_name}' --window '#{window_id}' --action ${H0}`,y=C("tasks-restore"),_=`run-shell ${Xf(y)}`,z0=C("chat-tab-close"),t=`run-shell ${Xf(z0)}`,Y0=`${O}${M} heal-layout --session '#{session_name}'`,T=`run-shell -b ${Xf(Y0)}`,Q0=`${O}${M} resync-window --session '#{session_name}' --client '#{client_name}' --cols '#{client_width}' --rows '#{client_height}' --status '#{status}'`,p=`run-shell -b ${Xf(Q0)}`,D0=`${O}${M} capture-layout --session '#{session_name}'`,g0=`run-shell -b ${Xf(D0)}`,$=YV({tmuxSocket:QJ}),E=gq(),f0=i7.map((H0)=>["unbind-key","-n",H0]);if(E.overridden.has(SJ))for(let H0 of yY){let y0=Az(H0);if("key"in y0)f0.push(["unbind-key","-n",y0.key])}for(let H0 of E.overridden){if(H0===SJ)continue;let y0=Oz[H0],w0=ZG(H0),T0=Az(y0,{allowBare:w0});if("key"in T0)f0.push(w0?["unbind-key",T0.key]:["unbind-key","-n",T0.key])}let I=["-L","-D","-U","-R"],G0=E.focus.flatMap((H0,y0)=>{let w0=I[y0],T0=w0==="-L"?_:void 0;return H0&&w0?[h5(H0.key,w0,T0)]:[]}),x=E.binds,c=(H0,y0)=>{let w0=x[H0];return w0?[["bind-key",w0.key,"run-shell",C(y0)]]:[]},Z0=(...H0)=>{let y0=H0.map((w0)=>x[w0]?.chord).filter((w0)=>!!w0);return y0.length>0?y0.join("/"):null};await Pf([["set-option","-g","status","on"],["set-window-option","-g","aggressive-resize","on"],["set-option","-g","monitor-activity","on"],["set-option","-g","visual-activity","off"],["set-option","-g","window-status-format",MX],["set-option","-g","window-status-current-format",cq],["set-option","-g","status-right",mq({focusLeft:E.focus[0]?.key??null,detach:x["tmux.detach"]?.key??null,newTab:x["tmux.tab.new"]?.key??null,layoutSplits:Z0("tmux.layout.workspaceSplit","tmux.layout.workspaceClose","tmux.layout.workspaceReset"),layoutPanes:Z0("tmux.layout.tasksToggle","tmux.layout.opsToggle","tmux.layout.terminalToggle","tmux.layout.zenToggle")})],["set-option","-g","mouse","on"],["set-hook","-g","window-resized",T],["set-hook","-g","client-resized",p],["set-hook","-g","window-layout-changed",g0],...f0,...x["tmux.detach"]?[["bind-key","-n",x["tmux.detach"].key,"if-shell","-F",`#{?#{${A1}},1,#{==:#{@kobe_role},tasks}}`,"detach-client",g]]:[],...G0,...x["tmux.tab.new"]?[["bind-key","-n",x["tmux.tab.new"].key,"run-shell",R]]:[],...x["tmux.tab.chooseEngine"]?vq(x["tmux.tab.chooseEngine"].key).map((H0)=>[...H0,a]):[],...x["tmux.tab.prev"]&&x["tmux.tab.next"]?wq(x["tmux.tab.prev"].key,x["tmux.tab.next"].key):x["tmux.tab.prev"]?[["bind-key","-n",x["tmux.tab.prev"].key,"previous-window"]]:x["tmux.tab.next"]?[["bind-key","-n",x["tmux.tab.next"].key,"next-window"]]:[],...x["tmux.tab.close"]?[hq(x["tmux.tab.close"].key,t)]:[],...x["tmux.tab.rename"]?[Pq(x["tmux.tab.rename"].key)]:[],...c("tmux.layout.workspaceSplit","workspace-split"),...c("tmux.layout.workspaceClose","workspace-close"),...c("tmux.layout.workspaceReset","workspace-reset"),...c("tmux.layout.tasksToggle","tasks-toggle"),...c("tmux.layout.opsToggle","ops-toggle"),...c("tmux.layout.terminalToggle","terminal-toggle"),...c("tmux.layout.zenToggle","zen-toggle"),["bind-key","f","run-shell",`${O}${M} quick-create --session '#{session_name}'`],["bind-key","u","display-popup","-E",$]]),await gz(),await h0(["select-pane","-t",L]);let V0=J?.firstMessage;if(V0)r7(f.name,V0).catch((H0)=>console.error("[kobe tmux] first message delivery failed:",H0));return!0}async function u5(f,J,Y){let z=Y?.trim()||`=${f}`,{code:G,stdout:X}=await d0(["list-panes","-t",z,"-F","#{pane_id}\t#{@kobe_role}"]);if(G!==0)return"";for(let q of X.split(`
73
- `)){let[Q,H]=q.split("\t");if(Q?.trim()&&H?.trim()===J)return Q.trim()}return""}async function tR(f,J={}){if(!await Hf(f))return"";let Y=await u5(f,"tasks",J.windowId);if(!Y)await uq(f,"tasks-restore",{windowId:J.windowId}),Y=await u5(f,"tasks",J.windowId);if(!Y)return"";return await h0(["select-pane","-t",Y]),Y}var aR="#{client_name}\t#{client_session}\t#{client_width}\t#{client_height}\t#{client_flags}",pR,Yj,_R="#{window_id}\t#{window_active}\t#{@kobe_role}\t#{@kobe_worktree}\t#{@kobe_vendor}";var J1=k(()=>{aJ();E1();lf();e1();Tf();Rq();Cq();qJ();bq();fj();Qz();Eq();QG();LX();Tf();fj();LX();Eq();pR={"-L":"pane_at_left","-D":"pane_at_bottom","-U":"pane_at_top","-R":"pane_at_right"};Yj=new Map});async function eR(f,J){let{task:Y}=await f.request("task.get",{taskId:J});return Y}async function Zj(f,J){let Y=await eR(f,J);if(Y.worktreePath)return{task:Y,worktreePath:Y.worktreePath};let{worktreePath:z}=await f.request("task.ensureWorktree",{taskId:J});if(!z)throw Error(`task ${J} has no worktree`);return{task:Y,worktreePath:z}}async function v5(f,J){let{task:Y,worktreePath:z}=await Zj(f,J),G=Lf(J);if(!await Hf(G)){let X=sJ(Y.repo??"",z,{kind:"repo-init"});if(!await TY({name:G,cwd:z,command:N1(Y.vendor,Y.modelEffort),taskId:J,vendor:Y.vendor,launchInit:X}))throw Error(`failed to start tmux session for ${J}`)}return{session:G,worktreePath:z}}function f2(f){return PZ(f,{bareSafe:!0})}async function m5(f,J){let{task:Y,worktreePath:z}=await Zj(f,J),G=Y.kind==="main"?void 0:J,X=Y.kind==="main"?J:void 0,q=[...Xq(Gq(N1(Y.vendor,Y.modelEffort),Y.vendor,G),Y.vendor,X)],Q=sJ(Y.repo??"",z,{kind:"none"}),H=f2(q),B=Q.initScript?.trim()?`${Q.initScript}
74
- ${H}`:H,V=process.env.SHELL?.trim()||"/bin/zsh";return{cwd:z,command:[V,"-ilc",B]}}async function c5(f,J){let{worktreePath:Y}=await Zj(f,J),z=process.env.SHELL?.trim()||"/bin/zsh";return{cwd:Y,command:[z,"-il"]}}async function n5(f){let J=Lf(f);await bJ(J).catch(()=>{}),await l1(J).catch(()=>{})}var d5=k(()=>{E1();IH();GG();Tf();J1()});import{existsSync as J2}from"fs";import{join as i5,normalize as $5}from"path";function Y2(f){let J=null,Y=null,z=new TextEncoder,G=new ReadableStream({start(X){J=f((Q,H)=>{try{X.enqueue(z.encode(`event: ${Q}
54
+ `;return""}async function f7(f,J){if(J.pathname!=="/api/diff")return null;if(f.method!=="GET")return Response.json({error:"method not allowed"},{status:405});let Y=J.searchParams.get("worktreePath");if(!Y)return Response.json({error:"missing worktreePath"},{status:400});let z;try{z=decodeURIComponent(Y)}catch{return Response.json({error:"invalid worktreePath encoding"},{status:400})}if(!z.startsWith("/"))return Response.json({error:"worktreePath must be an absolute path"},{status:400});if(!iZ(z))return Response.json({error:"worktreePath does not exist"},{status:400});if(!pJ(z).isRemote)try{if(!kA(z).isDirectory())return Response.json({error:"worktreePath is not a directory"},{status:400})}catch{return Response.json({error:"worktreePath does not exist"},{status:400})}let X=await BX(z,["rev-parse","--is-inside-work-tree"]);if(!X.ok||X.stdout.trim()!=="true")return Response.json({error:`not a git work tree: ${X.stderr.trim()||z}`},{status:500});let[q,Q,H]=await Promise.all([BX(z,["status","--porcelain=v1","-z","--untracked-files=all"]),BX(z,["diff","--no-color"]),BX(z,["diff","--no-color","--staged"])]);if(!q.ok)return Response.json({error:`git status failed: ${q.stderr.trim()}`},{status:500});let B=eV(Q.stdout),V=eV(H.stdout),j=q.stdout.split("\x00"),U=[],L=[];for(let R=0;R<j.length;R++){let S=j[R];if(!S)continue;let a=S[0]??" ",N=S[1]??" ",g=S.slice(3);if(!g)continue;if(a==="R"||a==="C"||N==="R"||N==="C")R++;let C=a==="?"&&N==="?",y=a!==" "&&a!=="?"?a:N,_=a!==" "&&a!=="?",z0="";if(C)L.push({fileIndex:U.length,path:g});else if(z0=V.get(g)??B.get(g)??"",V.has(g)&&B.has(g))z0=`${V.get(g)}${B.get(g)}`;U.push({path:g,status:C?"untracked":bA(y),staged:_,patch:z0})}if(L.length>0){let R=await IA(L,yA,(S)=>TA(z,S.path));for(let S=0;S<L.length;S++)U[L[S].fileIndex].patch=R[S]}U.sort((R,S)=>R.path.localeCompare(S.path));let O=[H.stdout,Q.stdout].filter(Boolean).join(`
55
+ `),M={files:U,raw:O};return Response.json(M)}var NA=15000,yA=8;var J7=k(()=>{ZJ();qq()});import{isAbsolute as uA}from"path";function z7(f){return typeof f==="string"&&f.length>0&&/^[A-Za-z0-9_-]+$/.test(f)}function xA(f){return typeof f==="string"&&f.length>0&&/^[A-Za-z0-9._-]+$/.test(f)&&!f.includes("..")}async function wA(f){let J=f.searchParams.get("worktreePath"),Y=f.searchParams.get("vendor")??"claude";if(!J||!uA(J))return Response.json({error:"worktreePath must be an absolute path"},{status:400});if(!z7(Y))return Response.json({error:"invalid vendor"},{status:400});try{let z=pf(Y).history,[G,X]=await Promise.all([z.listSessionIdsForWorktree(J),z.latestTranscriptMtimeForWorktree(J)]);return Response.json({sessions:G,latestMtime:X})}catch(z){return Response.json({error:z instanceof Error?z.message:String(z)},{status:500})}}async function hA(f){let J=f.searchParams.get("vendor")??"claude",Y=f.searchParams.get("sessionId");if(!z7(J))return Response.json({error:"invalid vendor"},{status:400});if(!xA(Y))return Response.json({error:"invalid sessionId"},{status:400});try{let z=await pf(J).history.readHistory(Y);return Response.json({messages:z})}catch(z){return Response.json({error:z instanceof Error?z.message:String(z)},{status:500})}}async function G7(f,J){if(J.pathname!==Y7&&J.pathname!==EA)return null;if(f.method!=="GET")return Response.json({error:"method not allowed"},{status:405});return J.pathname===Y7?wA(J):hA(J)}var Y7="/api/history/sessions",EA="/api/history/messages";var X7=k(()=>{UY()});import{mkdir as PA,readFile as vA,writeFile as mA}from"fs/promises";import{join as Z7}from"path";function q7(){return Z7(ef(),"notes")}function Q7(f){return typeof f==="string"&&f.length>0&&/^[A-Za-z0-9_-]+$/.test(f)}function H7(f){return Z7(q7(),`${f}.md`)}async function nA(f){let J=f.searchParams.get("taskId");if(!Q7(J))return Response.json({error:"invalid taskId"},{status:400});try{let Y="";try{Y=await vA(H7(J),"utf8")}catch(z){if(z.code!=="ENOENT")throw z}return Response.json({markdown:Y})}catch(Y){return Response.json({error:Y instanceof Error?Y.message:String(Y)},{status:500})}}async function dA(f){let J;try{J=await f.json()}catch{return Response.json({error:"invalid JSON body"},{status:400})}if(!Q7(J.taskId))return Response.json({error:"invalid taskId"},{status:400});if(typeof J.markdown!=="string")return Response.json({error:"markdown must be a string"},{status:400});try{return await PA(q7(),{recursive:!0}),await mA(H7(J.taskId),J.markdown,"utf8"),Response.json({ok:!0})}catch(Y){return Response.json({error:Y instanceof Error?Y.message:String(Y)},{status:500})}}async function B7(f,J){if(J.pathname!==cA)return null;if(f.method==="GET")return nA(J);if(f.method==="PUT")return dA(f);return Response.json({error:"method not allowed"},{status:405})}var cA="/api/notes";var j7=k(()=>{lf()});var oz;var Qq=k(()=>{oz={$schema:"https://opencode.ai/theme.json",defs:{darkBg:"#141413",darkBgRaised:"#1A1917",darkBgInset:"#2B2A27",darkBgMenu:"#33312E",darkBorderSubtle:"#2B2A27",darkBorder:"#3A3835",darkBorderActive:"#5C5853",darkText:"#EAE7DF",darkTextMuted:"#A9A39A",darkTextSubtle:"#6B665F",darkPrimary:"#CC785C",darkSecondary:"#D4967E",darkAccent:"#CC785C",darkAccentHover:"#E0AB96",darkRed:"#D47563",darkOrange:"#D97757",darkYellow:"#E8C96B",darkGreen:"#9ACA86",darkBlue:"#61AAF2",darkViolet:"#9B87F5",darkTerracotta:"#BF4D43",lightBg:"#FAF9F5",lightBgRaised:"#F0EEE6",lightBgInset:"#EAE7DF",lightBgMenu:"#E2DED4",lightBorderSubtle:"#EAE7DF",lightBorder:"#D9D5CC",lightBorderActive:"#A9A39A",lightText:"#1A1917",lightTextMuted:"#6B665F",lightTextSubtle:"#8D877D",lightPrimary:"#C96442",lightSecondary:"#B85F3D",lightAccent:"#CC785C",lightAccentHover:"#B85F3D",lightRed:"#A84B3A",lightOrange:"#C96442",lightYellow:"#8A6220",lightGreen:"#2E7C4C",lightBlue:"#207FDE",lightViolet:"#7B5BB6",lightTerracotta:"#BF4D43"},theme:{primary:{dark:"darkPrimary",light:"lightPrimary"},secondary:{dark:"darkSecondary",light:"lightSecondary"},accent:{dark:"darkAccent",light:"lightAccent"},error:{dark:"darkRed",light:"lightRed"},warning:{dark:"darkYellow",light:"lightYellow"},success:{dark:"darkGreen",light:"lightGreen"},info:{dark:"darkBlue",light:"lightBlue"},text:{dark:"darkText",light:"lightText"},textMuted:{dark:"darkTextMuted",light:"lightTextMuted"},background:{dark:"darkBg",light:"lightBg"},backgroundPanel:{dark:"darkBgRaised",light:"lightBgRaised"},backgroundElement:{dark:"darkBgInset",light:"lightBgInset"},backgroundMenu:{dark:"darkBgMenu",light:"lightBgMenu"},backgroundDialog:{dark:"darkBgRaised",light:"lightBgRaised"},border:{dark:"darkBorder",light:"lightBorder"},borderActive:{dark:"darkBorderActive",light:"lightBorderActive"},borderSubtle:{dark:"darkBorderSubtle",light:"lightBorderSubtle"},diffAdded:{dark:"darkGreen",light:"lightGreen"},diffRemoved:{dark:"darkRed",light:"lightRed"},diffContext:{dark:"darkTextMuted",light:"lightTextSubtle"},diffHunkHeader:{dark:"darkTextMuted",light:"lightTextSubtle"},diffHighlightAdded:{dark:"#B5E0A0",light:"#1F6638"},diffHighlightRemoved:{dark:"#E89180",light:"#8A3A2C"},diffAddedBg:{dark:"#1F2A1F",light:"#E5EEDF"},diffRemovedBg:{dark:"#2A1F1C",light:"#F5DAD3"},diffContextBg:{dark:"darkBgRaised",light:"lightBgRaised"},diffLineNumber:{dark:"darkTextSubtle",light:"lightTextSubtle"},diffAddedLineNumberBg:{dark:"#1A2419",light:"#D5E2CC"},diffRemovedLineNumberBg:{dark:"#241915",light:"#EBC8BE"},markdownText:{dark:"darkText",light:"lightText"},markdownHeading:{dark:"darkPrimary",light:"lightPrimary"},markdownLink:{dark:"darkAccent",light:"lightAccent"},markdownLinkText:{dark:"darkBlue",light:"lightBlue"},markdownCode:{dark:"darkSecondary",light:"lightSecondary"},markdownBlockQuote:{dark:"darkTextMuted",light:"lightTextMuted"},markdownEmph:{dark:"darkYellow",light:"lightYellow"},markdownStrong:{dark:"darkPrimary",light:"lightPrimary"},markdownHorizontalRule:{dark:"darkTextMuted",light:"lightTextMuted"},markdownListItem:{dark:"darkAccent",light:"lightAccent"},markdownListEnumeration:{dark:"darkBlue",light:"lightBlue"},markdownImage:{dark:"darkAccent",light:"lightAccent"},markdownImageText:{dark:"darkBlue",light:"lightBlue"},markdownCodeBlock:{dark:"darkText",light:"lightText"},markdownQuote:{dark:"darkTextMuted",light:"lightTextMuted"},syntaxComment:{dark:"darkTextSubtle",light:"lightTextSubtle"},syntaxKeyword:{dark:"darkPrimary",light:"lightPrimary"},syntaxFunction:{dark:"darkBlue",light:"lightBlue"},syntaxVariable:{dark:"darkText",light:"lightText"},syntaxString:{dark:"darkGreen",light:"lightGreen"},syntaxNumber:{dark:"darkOrange",light:"lightOrange"},syntaxType:{dark:"darkViolet",light:"lightViolet"},syntaxOperator:{dark:"darkSecondary",light:"lightSecondary"},syntaxPunctuation:{dark:"darkText",light:"lightText"},selectedListItemText:{dark:"darkBg",light:"lightBg"}}}});var sz;var Hq=k(()=>{sz={$schema:"https://opencode.ai/theme.json",defs:{darkStep1:"#0a0a0a",darkStep2:"#111111",darkStep3:"#181818",darkStep4:"#1f1f1f",darkStep5:"#2a2a2a",darkStep6:"#363636",darkStep7:"#444444",darkStep8:"#5a5a5a",darkStep9:"#7a7a7a",darkStep10:"#9a9a9a",darkStep11:"#909090",darkStep12:"#e8e8e8",darkAccent:"#7da5c8",darkAccentBright:"#9bc3e3",darkRed:"#e06c75",darkOrange:"#d6a668",darkGreen:"#7fd88f",darkCyan:"#7da5c8",darkYellow:"#d6a668",lightStep1:"#fafafa",lightStep2:"#f3f3f3",lightStep3:"#ececec",lightStep4:"#e2e2e2",lightStep5:"#d4d4d4",lightStep6:"#bdbdbd",lightStep7:"#9c9c9c",lightStep8:"#7c7c7c",lightStep9:"#5b5b5b",lightStep10:"#404040",lightStep11:"#6c6c6c",lightStep12:"#1a1a1a",lightAccent:"#3d6f9f",lightAccentBright:"#1a4f87",lightRed:"#c9343a",lightOrange:"#a06b1a",lightGreen:"#3d9a57",lightCyan:"#3d6f9f",lightYellow:"#a06b1a"},theme:{primary:{dark:"darkStep12",light:"lightStep12"},secondary:{dark:"darkAccentBright",light:"lightAccentBright"},accent:{dark:"darkAccent",light:"lightAccent"},error:{dark:"darkRed",light:"lightRed"},warning:{dark:"darkOrange",light:"lightOrange"},success:{dark:"darkGreen",light:"lightGreen"},info:{dark:"darkCyan",light:"lightCyan"},text:{dark:"darkStep12",light:"lightStep12"},textMuted:{dark:"darkStep11",light:"lightStep11"},background:{dark:"darkStep1",light:"lightStep1"},backgroundPanel:{dark:"darkStep2",light:"lightStep2"},backgroundElement:{dark:"darkStep3",light:"lightStep3"},backgroundMenu:{dark:"darkStep4",light:"lightStep4"},border:{dark:"darkStep6",light:"lightStep6"},borderActive:{dark:"darkStep8",light:"lightStep8"},borderSubtle:{dark:"darkStep4",light:"lightStep4"},diffAdded:{dark:"#7fd88f",light:"#3d9a57"},diffRemoved:{dark:"#e06c75",light:"#c9343a"},diffContext:{dark:"darkStep10",light:"lightStep10"},diffHunkHeader:{dark:"darkStep10",light:"lightStep10"},diffHighlightAdded:{dark:"#9be5ad",light:"#2d7a3f"},diffHighlightRemoved:{dark:"#f08490",light:"#a82530"},diffAddedBg:{dark:"#15241a",light:"#d8efdc"},diffRemovedBg:{dark:"#2a1518",light:"#f5dadc"},diffContextBg:{dark:"darkStep2",light:"lightStep2"},diffLineNumber:{dark:"darkStep9",light:"lightStep9"},diffAddedLineNumberBg:{dark:"#0f1c14",light:"#c5deca"},diffRemovedLineNumberBg:{dark:"#221012",light:"#e5c5c8"},markdownText:{dark:"darkStep12",light:"lightStep12"},markdownHeading:{dark:"darkStep12",light:"lightStep12"},markdownLink:{dark:"darkAccent",light:"lightAccent"},markdownCode:{dark:"darkAccentBright",light:"lightAccentBright"},markdownCodeBlock:{dark:"darkStep12",light:"lightStep12"},markdownQuote:{dark:"darkStep11",light:"lightStep11"},selectedListItemText:{dark:"darkStep1",light:"lightStep1"}}}});var tz;var Bq=k(()=>{tz={$schema:"https://opencode.ai/theme.json",defs:{background:"#282a36",currentLine:"#44475a",selection:"#44475a",foreground:"#f8f8f2",comment:"#6272a4",cyan:"#8be9fd",green:"#50fa7b",orange:"#ffb86c",pink:"#ff79c6",purple:"#bd93f9",red:"#ff5555",yellow:"#f1fa8c"},theme:{primary:{dark:"purple",light:"purple"},secondary:{dark:"pink",light:"pink"},accent:{dark:"cyan",light:"cyan"},error:{dark:"red",light:"red"},warning:{dark:"yellow",light:"yellow"},success:{dark:"green",light:"green"},info:{dark:"orange",light:"orange"},text:{dark:"foreground",light:"#282a36"},textMuted:{dark:"comment",light:"#6272a4"},background:{dark:"#282a36",light:"#f8f8f2"},backgroundPanel:{dark:"#21222c",light:"#e8e8e2"},backgroundElement:{dark:"currentLine",light:"#d8d8d2"},border:{dark:"currentLine",light:"#c8c8c2"},borderActive:{dark:"purple",light:"purple"},borderSubtle:{dark:"#191a21",light:"#e0e0e0"},diffAdded:{dark:"green",light:"green"},diffRemoved:{dark:"red",light:"red"},diffContext:{dark:"comment",light:"#6272a4"},diffHunkHeader:{dark:"comment",light:"#6272a4"},diffHighlightAdded:{dark:"green",light:"green"},diffHighlightRemoved:{dark:"red",light:"red"},diffAddedBg:{dark:"#1a3a1a",light:"#e0ffe0"},diffRemovedBg:{dark:"#3a1a1a",light:"#ffe0e0"},diffContextBg:{dark:"#21222c",light:"#e8e8e2"},diffLineNumber:{dark:"#989aa4",light:"#686865"},diffAddedLineNumberBg:{dark:"#1a3a1a",light:"#e0ffe0"},diffRemovedLineNumberBg:{dark:"#3a1a1a",light:"#ffe0e0"},markdownText:{dark:"foreground",light:"#282a36"},markdownHeading:{dark:"purple",light:"purple"},markdownLink:{dark:"cyan",light:"cyan"},markdownLinkText:{dark:"pink",light:"pink"},markdownCode:{dark:"green",light:"green"},markdownBlockQuote:{dark:"comment",light:"#6272a4"},markdownEmph:{dark:"yellow",light:"yellow"},markdownStrong:{dark:"orange",light:"orange"},markdownHorizontalRule:{dark:"comment",light:"#6272a4"},markdownListItem:{dark:"purple",light:"purple"},markdownListEnumeration:{dark:"cyan",light:"cyan"},markdownImage:{dark:"cyan",light:"cyan"},markdownImageText:{dark:"pink",light:"pink"},markdownCodeBlock:{dark:"foreground",light:"#282a36"},syntaxComment:{dark:"comment",light:"#6272a4"},syntaxKeyword:{dark:"pink",light:"pink"},syntaxFunction:{dark:"green",light:"green"},syntaxVariable:{dark:"foreground",light:"#282a36"},syntaxString:{dark:"yellow",light:"yellow"},syntaxNumber:{dark:"purple",light:"purple"},syntaxType:{dark:"cyan",light:"cyan"},syntaxOperator:{dark:"pink",light:"pink"},syntaxPunctuation:{dark:"foreground",light:"#282a36"}}}});var ez;var jq=k(()=>{ez={$schema:"https://opencode.ai/theme.json",defs:{nord0:"#2E3440",nord1:"#3B4252",nord2:"#434C5E",nord3:"#4C566A",nord4:"#D8DEE9",nord5:"#E5E9F0",nord6:"#ECEFF4",nord7:"#8FBCBB",nord8:"#88C0D0",nord9:"#81A1C1",nord10:"#5E81AC",nord11:"#BF616A",nord12:"#D08770",nord13:"#EBCB8B",nord14:"#A3BE8C",nord15:"#B48EAD"},theme:{primary:{dark:"nord8",light:"nord10"},secondary:{dark:"nord9",light:"nord9"},accent:{dark:"nord7",light:"nord7"},error:{dark:"nord11",light:"nord11"},warning:{dark:"nord12",light:"nord12"},success:{dark:"nord14",light:"nord14"},info:{dark:"nord8",light:"nord10"},text:{dark:"nord6",light:"nord0"},textMuted:{dark:"#8B95A7",light:"nord1"},background:{dark:"nord0",light:"nord6"},backgroundPanel:{dark:"nord1",light:"nord5"},backgroundElement:{dark:"nord2",light:"nord4"},border:{dark:"nord2",light:"nord3"},borderActive:{dark:"nord3",light:"nord2"},borderSubtle:{dark:"nord2",light:"nord3"},diffAdded:{dark:"nord14",light:"nord14"},diffRemoved:{dark:"nord11",light:"nord11"},diffContext:{dark:"#8B95A7",light:"nord3"},diffHunkHeader:{dark:"#8B95A7",light:"nord3"},diffHighlightAdded:{dark:"nord14",light:"nord14"},diffHighlightRemoved:{dark:"nord11",light:"nord11"},diffAddedBg:{dark:"#3B4252",light:"#E5E9F0"},diffRemovedBg:{dark:"#3B4252",light:"#E5E9F0"},diffContextBg:{dark:"nord1",light:"nord5"},diffLineNumber:{dark:"#a9aeb6",light:"textMuted"},diffAddedLineNumberBg:{dark:"#3B4252",light:"#E5E9F0"},diffRemovedLineNumberBg:{dark:"#3B4252",light:"#E5E9F0"},markdownText:{dark:"nord4",light:"nord0"},markdownHeading:{dark:"nord8",light:"nord10"},markdownLink:{dark:"nord9",light:"nord9"},markdownLinkText:{dark:"nord7",light:"nord7"},markdownCode:{dark:"nord14",light:"nord14"},markdownBlockQuote:{dark:"#8B95A7",light:"nord3"},markdownEmph:{dark:"nord12",light:"nord12"},markdownStrong:{dark:"nord13",light:"nord13"},markdownHorizontalRule:{dark:"#8B95A7",light:"nord3"},markdownListItem:{dark:"nord8",light:"nord10"},markdownListEnumeration:{dark:"nord7",light:"nord7"},markdownImage:{dark:"nord9",light:"nord9"},markdownImageText:{dark:"nord7",light:"nord7"},markdownCodeBlock:{dark:"nord4",light:"nord0"},syntaxComment:{dark:"#8B95A7",light:"nord3"},syntaxKeyword:{dark:"nord9",light:"nord9"},syntaxFunction:{dark:"nord8",light:"nord8"},syntaxVariable:{dark:"nord7",light:"nord7"},syntaxString:{dark:"nord14",light:"nord14"},syntaxNumber:{dark:"nord15",light:"nord15"},syntaxType:{dark:"nord7",light:"nord7"},syntaxOperator:{dark:"nord9",light:"nord9"},syntaxPunctuation:{dark:"nord4",light:"nord0"}}}});var fG;var Wq=k(()=>{fG={$schema:"https://opencode.ai/theme.json",defs:{darkStep1:"#161616",darkStep2:"#1f1f1f",darkStep3:"#282828",darkStep4:"#323232",darkStep5:"#3c3c3c",darkStep6:"#484848",darkStep7:"#545454",darkStep8:"#6a6a6a",darkStep9:"#fab283",darkStep10:"#ffc09f",darkStep11:"#808080",darkStep12:"#eeeeee",darkSecondary:"#5c9cf5",darkAccent:"#7da5c8",darkRed:"#e06c75",darkOrange:"#f5a742",darkGreen:"#7fd88f",darkCyan:"#56b6c2",darkYellow:"#e5c07b",lightStep1:"#ffffff",lightStep2:"#fafafa",lightStep3:"#f5f5f5",lightStep4:"#ebebeb",lightStep5:"#e1e1e1",lightStep6:"#d4d4d4",lightStep7:"#b8b8b8",lightStep8:"#a0a0a0",lightStep9:"#3b7dd8",lightStep10:"#2968c3",lightStep11:"#8a8a8a",lightStep12:"#1a1a1a",lightSecondary:"#7b5bb6",lightAccent:"#3d6f9f",lightRed:"#d1383d",lightOrange:"#d68c27",lightGreen:"#3d9a57",lightCyan:"#318795",lightYellow:"#b0851f"},theme:{primary:{dark:"darkStep9",light:"lightStep9"},secondary:{dark:"darkSecondary",light:"lightSecondary"},accent:{dark:"darkAccent",light:"lightAccent"},error:{dark:"darkRed",light:"lightRed"},warning:{dark:"darkOrange",light:"lightOrange"},success:{dark:"darkGreen",light:"lightGreen"},info:{dark:"darkCyan",light:"lightCyan"},text:{dark:"darkStep12",light:"lightStep12"},textMuted:{dark:"darkStep11",light:"lightStep11"},background:{dark:"darkStep1",light:"lightStep1"},backgroundPanel:{dark:"darkStep2",light:"lightStep2"},backgroundElement:{dark:"darkStep3",light:"lightStep3"},border:{dark:"darkStep7",light:"lightStep7"},borderActive:{dark:"darkStep8",light:"lightStep8"},borderSubtle:{dark:"darkStep6",light:"lightStep6"},diffAdded:{dark:"#4fd6be",light:"#1e725c"},diffRemoved:{dark:"#c53b53",light:"#c53b53"},diffContext:{dark:"#828bb8",light:"#7086b5"},diffHunkHeader:{dark:"#828bb8",light:"#7086b5"},diffHighlightAdded:{dark:"#b8db87",light:"#4db380"},diffHighlightRemoved:{dark:"#e26a75",light:"#f52a65"},diffAddedBg:{dark:"#20303b",light:"#d5e5d5"},diffRemovedBg:{dark:"#37222c",light:"#f7d8db"},diffContextBg:{dark:"darkStep2",light:"lightStep2"},diffLineNumber:{dark:"#8f8f8f",light:"#595959"},diffAddedLineNumberBg:{dark:"#1b2b34",light:"#c5d5c5"},diffRemovedLineNumberBg:{dark:"#2d1f26",light:"#e7c8cb"},markdownText:{dark:"darkStep12",light:"lightStep12"},markdownHeading:{dark:"darkAccent",light:"lightAccent"},markdownLink:{dark:"darkStep9",light:"lightStep9"},markdownLinkText:{dark:"darkCyan",light:"lightCyan"},markdownCode:{dark:"darkGreen",light:"lightGreen"},markdownBlockQuote:{dark:"darkYellow",light:"lightYellow"},markdownEmph:{dark:"darkYellow",light:"lightYellow"},markdownStrong:{dark:"darkOrange",light:"lightOrange"},markdownHorizontalRule:{dark:"darkStep11",light:"lightStep11"},markdownListItem:{dark:"darkStep9",light:"lightStep9"},markdownListEnumeration:{dark:"darkCyan",light:"lightCyan"},markdownImage:{dark:"darkStep9",light:"lightStep9"},markdownImageText:{dark:"darkCyan",light:"lightCyan"},markdownCodeBlock:{dark:"darkStep12",light:"lightStep12"},syntaxComment:{dark:"darkStep11",light:"lightStep11"},syntaxKeyword:{dark:"darkAccent",light:"lightAccent"},syntaxFunction:{dark:"darkStep9",light:"lightStep9"},syntaxVariable:{dark:"darkRed",light:"lightRed"},syntaxString:{dark:"darkGreen",light:"lightGreen"},syntaxNumber:{dark:"darkOrange",light:"lightOrange"},syntaxType:{dark:"darkYellow",light:"lightYellow"},syntaxOperator:{dark:"darkCyan",light:"lightCyan"},syntaxPunctuation:{dark:"darkStep12",light:"lightStep12"}}}});var JG;var Vq=k(()=>{JG={$schema:"https://opencode.ai/theme.json",defs:{darkBg0:"#111c18",darkBg1:"#1a2520",darkBg2:"#23372B",darkBg3:"#3d4a44",darkFg0:"#C1C497",darkFg1:"#9aa88a",darkGray:"#53685B",darkRed:"#FF5345",darkGreen:"#549e6a",darkYellow:"#459451",darkBlue:"#509475",darkMagenta:"#D2689C",darkCyan:"#2DD5B7",darkWhite:"#F6F5DD",darkRedBright:"#db9f9c",darkGreenBright:"#63b07a",darkYellowBright:"#E5C736",darkBlueBright:"#ACD4CF",darkMagentaBright:"#75bbb3",darkCyanBright:"#8CD3CB",lightBg0:"#F6F5DD",lightBg1:"#E8E7CC",lightBg2:"#D5D4B8",lightBg3:"#A8A78C",lightFg0:"#111c18",lightFg1:"#1a2520",lightGray:"#53685B",lightRed:"#c7392d",lightGreen:"#3d7a52",lightYellow:"#b5a020",lightBlue:"#3d7560",lightMagenta:"#a8527a",lightCyan:"#1faa90"},theme:{primary:{dark:"darkCyan",light:"lightCyan"},secondary:{dark:"darkMagenta",light:"lightMagenta"},accent:{dark:"darkGreen",light:"lightGreen"},error:{dark:"darkRed",light:"lightRed"},warning:{dark:"darkYellowBright",light:"lightYellow"},success:{dark:"darkGreen",light:"lightGreen"},info:{dark:"darkCyan",light:"lightCyan"},text:{dark:"darkFg0",light:"lightFg0"},textMuted:{dark:"darkGray",light:"lightGray"},background:{dark:"darkBg0",light:"lightBg0"},backgroundPanel:{dark:"darkBg1",light:"lightBg1"},backgroundElement:{dark:"darkBg2",light:"lightBg2"},border:{dark:"darkBg3",light:"lightBg3"},borderActive:{dark:"darkCyan",light:"lightCyan"},borderSubtle:{dark:"darkBg2",light:"lightBg2"},diffAdded:{dark:"darkGreen",light:"lightGreen"},diffRemoved:{dark:"darkRed",light:"lightRed"},diffContext:{dark:"darkGray",light:"lightGray"},diffHunkHeader:{dark:"darkCyan",light:"lightCyan"},diffHighlightAdded:{dark:"darkGreenBright",light:"lightGreen"},diffHighlightRemoved:{dark:"darkRedBright",light:"lightRed"},diffAddedBg:{dark:"#15241c",light:"#e0eee5"},diffRemovedBg:{dark:"#241515",light:"#eee0e0"},diffContextBg:{dark:"darkBg1",light:"lightBg1"},diffLineNumber:{dark:"#828b87",light:"#5f5e4f"},diffAddedLineNumberBg:{dark:"#121f18",light:"#d5e5da"},diffRemovedLineNumberBg:{dark:"#1f1212",light:"#e5d5d5"},markdownText:{dark:"darkFg0",light:"lightFg0"},markdownHeading:{dark:"darkCyan",light:"lightCyan"},markdownLink:{dark:"darkCyanBright",light:"lightCyan"},markdownLinkText:{dark:"darkGreen",light:"lightGreen"},markdownCode:{dark:"darkGreenBright",light:"lightGreen"},markdownBlockQuote:{dark:"darkGray",light:"lightGray"},markdownEmph:{dark:"darkMagenta",light:"lightMagenta"},markdownStrong:{dark:"darkFg0",light:"lightFg0"},markdownHorizontalRule:{dark:"darkGray",light:"lightGray"},markdownListItem:{dark:"darkCyan",light:"lightCyan"},markdownListEnumeration:{dark:"darkCyanBright",light:"lightCyan"},markdownImage:{dark:"darkCyanBright",light:"lightCyan"},markdownImageText:{dark:"darkGreen",light:"lightGreen"},markdownCodeBlock:{dark:"darkFg0",light:"lightFg0"},syntaxComment:{dark:"darkGray",light:"lightGray"},syntaxKeyword:{dark:"darkCyan",light:"lightCyan"},syntaxFunction:{dark:"darkBlue",light:"lightBlue"},syntaxVariable:{dark:"darkFg0",light:"lightFg0"},syntaxString:{dark:"darkGreenBright",light:"lightGreen"},syntaxNumber:{dark:"darkMagenta",light:"lightMagenta"},syntaxType:{dark:"darkGreen",light:"lightGreen"},syntaxOperator:{dark:"darkYellow",light:"lightYellow"},syntaxPunctuation:{dark:"darkFg0",light:"lightFg0"}}}});var YG;var Kq=k(()=>{YG={$schema:"https://opencode.ai/theme.json",defs:{darkStep1:"#1a1b26",darkStep2:"#1e2030",darkStep3:"#222436",darkStep4:"#292e42",darkStep5:"#3b4261",darkStep6:"#545c7e",darkStep7:"#737aa2",darkStep8:"#9099b2",darkStep9:"#82aaff",darkStep10:"#89b4fa",darkStep11:"#828bb8",darkStep12:"#c8d3f5",darkRed:"#ff757f",darkOrange:"#ff966c",darkYellow:"#ffc777",darkGreen:"#c3e88d",darkCyan:"#86e1fc",darkPurple:"#c099ff",lightStep1:"#e1e2e7",lightStep2:"#d5d6db",lightStep3:"#c8c9ce",lightStep4:"#b9bac1",lightStep5:"#a8aecb",lightStep6:"#9699a8",lightStep7:"#737a8c",lightStep8:"#5a607d",lightStep9:"#2e7de9",lightStep10:"#1a6ce7",lightStep11:"#8990a3",lightStep12:"#3760bf",lightRed:"#f52a65",lightOrange:"#b15c00",lightYellow:"#8c6c3e",lightGreen:"#587539",lightCyan:"#007197",lightPurple:"#9854f1"},theme:{primary:{dark:"darkStep9",light:"lightStep9"},secondary:{dark:"darkPurple",light:"lightPurple"},accent:{dark:"darkOrange",light:"lightOrange"},error:{dark:"darkRed",light:"lightRed"},warning:{dark:"darkOrange",light:"lightOrange"},success:{dark:"darkGreen",light:"lightGreen"},info:{dark:"darkStep9",light:"lightStep9"},text:{dark:"darkStep12",light:"lightStep12"},textMuted:{dark:"darkStep11",light:"lightStep11"},background:{dark:"darkStep1",light:"lightStep1"},backgroundPanel:{dark:"darkStep2",light:"lightStep2"},backgroundElement:{dark:"darkStep3",light:"lightStep3"},border:{dark:"darkStep7",light:"lightStep7"},borderActive:{dark:"darkStep8",light:"lightStep8"},borderSubtle:{dark:"darkStep6",light:"lightStep6"},diffAdded:{dark:"#4fd6be",light:"#1e725c"},diffRemoved:{dark:"#c53b53",light:"#c53b53"},diffContext:{dark:"#828bb8",light:"#7086b5"},diffHunkHeader:{dark:"#828bb8",light:"#7086b5"},diffHighlightAdded:{dark:"#b8db87",light:"#4db380"},diffHighlightRemoved:{dark:"#e26a75",light:"#f52a65"},diffAddedBg:{dark:"#20303b",light:"#d5e5d5"},diffRemovedBg:{dark:"#37222c",light:"#f7d8db"},diffContextBg:{dark:"darkStep2",light:"lightStep2"},diffLineNumber:{dark:"#8f909a",light:"#59595b"},diffAddedLineNumberBg:{dark:"#1b2b34",light:"#c5d5c5"},diffRemovedLineNumberBg:{dark:"#2d1f26",light:"#e7c8cb"},markdownText:{dark:"darkStep12",light:"lightStep12"},markdownHeading:{dark:"darkPurple",light:"lightPurple"},markdownLink:{dark:"darkStep9",light:"lightStep9"},markdownLinkText:{dark:"darkCyan",light:"lightCyan"},markdownCode:{dark:"darkGreen",light:"lightGreen"},markdownBlockQuote:{dark:"darkYellow",light:"lightYellow"},markdownEmph:{dark:"darkYellow",light:"lightYellow"},markdownStrong:{dark:"darkOrange",light:"lightOrange"},markdownHorizontalRule:{dark:"darkStep11",light:"lightStep11"},markdownListItem:{dark:"darkStep9",light:"lightStep9"},markdownListEnumeration:{dark:"darkCyan",light:"lightCyan"},markdownImage:{dark:"darkStep9",light:"lightStep9"},markdownImageText:{dark:"darkCyan",light:"lightCyan"},markdownCodeBlock:{dark:"darkStep12",light:"lightStep12"},syntaxComment:{dark:"darkStep11",light:"lightStep11"},syntaxKeyword:{dark:"darkPurple",light:"lightPurple"},syntaxFunction:{dark:"darkStep9",light:"lightStep9"},syntaxVariable:{dark:"darkRed",light:"lightRed"},syntaxString:{dark:"darkGreen",light:"lightGreen"},syntaxNumber:{dark:"darkOrange",light:"lightOrange"},syntaxType:{dark:"darkYellow",light:"lightYellow"},syntaxOperator:{dark:"darkCyan",light:"lightCyan"},syntaxPunctuation:{dark:"darkStep12",light:"lightStep12"}}}});function uB(f,J,Y=[]){if(J===void 0)return null;if(typeof J!=="string")return uB(f,J.dark,Y);if(J==="transparent"||J==="none")return null;if(J.startsWith("#"))return J;if(Y.includes(J))return null;let z=f.defs?.[J]??f.theme[J];return uB(f,z,[...Y,J])}function TB(f){return Math.max(0,Math.min(255,Math.round(f)))}function jX(f,J,Y){let z=Number.parseInt(f.slice(1),16),G=Number.parseInt(J.slice(1),16),X=(Q,H)=>Q>>H&255;return`#${(TB(X(z,16)+(X(G,16)-X(z,16))*Y)<<16|TB(X(z,8)+(X(G,8)-X(z,8))*Y)<<8|TB(X(z,0)+(X(G,0)-X(z,0))*Y)).toString(16).padStart(6,"0")}`}function sA(f){let J=(Q)=>uB(f,f.theme[Q]),Y=J("background"),z=J("text");if(!Y||!z)return null;let G=J("textMuted")??jX(z,Y,0.35),X=J("primary")??z,q=J("border")??jX(z,Y,0.8);return{bg:Y,surface:J("backgroundPanel")??Y,inset:J("backgroundElement")??Y,menu:J("backgroundMenu")??J("backgroundElement")??Y,line:q,"line-subtle":J("borderSubtle")??q,"line-active":J("borderActive")??jX(q,z,0.3),fg:z,muted:G,subtle:jX(G,Y,0.35),primary:X,"primary-hover":jX(X,z,0.35),"kobe-orange":X,"kobe-green":J("success")??z,"kobe-blue":J("info")??z,"kobe-red":J("error")??z,"kobe-yellow":J("warning")??z,"kobe-violet":J("secondary")??X}}function W7(f,J){if(J.pathname!==eA)return null;if(f.method!=="GET")return Response.json({error:"method not allowed"},{status:405});return Response.json({themes:tA})}var oA,tA,eA="/api/themes";var V7=k(()=>{Qq();Hq();Bq();jq();Wq();Vq();Kq();oA={claude:oz,conductor:sz,dracula:tz,nord:ez,opencode:fG,"osaka-jade":JG,tokyonight:YG};tA=Object.fromEntries(Object.entries(oA).map(([f,J])=>[f,sA(J)]).filter((f)=>f[1]!==null))});import{createHash as fg,randomUUID as Jg}from"crypto";import{mkdir as Yg}from"fs/promises";import{join as EB,resolve as zg}from"path";function Zg(f){return fg("sha1").update(f).digest("hex").slice(0,16)}async function Hg(f){let J=Number.parseInt(f.headers.get("content-length")??"",10);if(Number.isFinite(J)&&J>K7)return Response.json({error:"asset too large"},{status:413});let Y;try{Y=await f.formData()}catch{return Response.json({error:"invalid form data"},{status:400})}let z=Y.get("repoRoot");if(typeof z!=="string"||z.length===0)return Response.json({error:"missing repoRoot"},{status:400});let G=Y.get("file");if(!(G instanceof File))return Response.json({error:"file must be a File"},{status:400});if(G.size>K7)return Response.json({error:"asset too large"},{status:413});let X=Gg[G.type];if(!X)return Response.json({error:`unsupported content-type: ${G.type||"unknown"}`},{status:415});try{let q=Zg(z),Q=EB(iQ(),q);await Yg(Q,{recursive:!0});let B=`${Jg()}.${X}`;return await Bun.write(EB(Q,B),G),Response.json({url:`${Uq}/${q}/${B}`})}catch(q){return Response.json({error:q instanceof Error?q.message:String(q)},{status:500})}}async function Bg(f){let J=f.slice(Uq.length+1),Y=J.indexOf("/");if(Y<0)return Response.json({error:"not found"},{status:404});let z=J.slice(0,Y),G=J.slice(Y+1);if(!qg.test(z)||!Qg.test(G))return Response.json({error:"invalid asset path"},{status:400});let X=iQ(),q=zg(X,z,G);if(q!==EB(X,z,G)||!q.startsWith(`${X}/`))return Response.json({error:"invalid asset path"},{status:400});let Q=G.slice(G.lastIndexOf(".")+1).toLowerCase(),H=Xg[Q];if(!H)return Response.json({error:"invalid asset path"},{status:400});let B=Bun.file(q);if(!await B.exists())return Response.json({error:"not found"},{status:404});return new Response(B,{headers:{"content-type":H,"cache-control":"public, max-age=31536000, immutable","x-content-type-options":"nosniff"}})}async function U7(f,J){if(J.pathname===Uq){if(f.method==="POST")return Hg(f);return Response.json({error:"method not allowed"},{status:405})}if(J.pathname.startsWith(`${Uq}/`)){if(f.method==="GET")return Bg(J.pathname);return Response.json({error:"method not allowed"},{status:405})}return null}var Uq="/api/issue-assets",K7=10485760,Gg,Xg,qg,Qg;var D7=k(()=>{lf();Gg={"image/png":"png","image/jpeg":"jpg","image/gif":"gif","image/webp":"webp"},Xg={png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",webp:"image/webp"};qg=/^[a-f0-9]{16}$/,Qg=/^[A-Za-z0-9_-]+\.[a-z0-9]+$/});function L7(f,J=500){return Response.json({error:f instanceof Error?f.message:String(f)},{status:J})}function M7(f){let J=f instanceof Error?f.message:String(f);if(/^no issue #\d+$/.test(J))return 404;if(J==="repoRoot is required"||J==="repoRoot does not exist"||J==="repoRoot is not a git repository"||J==="missing op"||J==="create requires a non-empty title"||J==="body must be a string"||J==="setStatus requires a numeric id"||J.startsWith("invalid status:")||J==="update requires a numeric id"||J==="title must be a non-empty string"||J==="link requires a numeric id"||J==="link requires a non-empty taskId"||J==="unlink requires a numeric id"||J==="delete requires a numeric id"||J.startsWith("unknown op type:"))return 400;return 500}async function jg(f,J){let Y=J.searchParams.get("repoRoot");if(!Y)return Response.json({error:"missing repoRoot"},{status:400});try{return Response.json(await f.request("issue.list",{repoRoot:Y}))}catch(z){return L7(z,M7(z))}}async function Wg(f,J){let Y;try{Y=await J.json()}catch{return Response.json({error:"invalid JSON body"},{status:400})}if(Y===null||typeof Y!=="object"||Array.isArray(Y))return Response.json({error:"body must be a JSON object"},{status:400});let z=Y;if(typeof z.repoRoot!=="string"||z.repoRoot.length===0)return Response.json({error:"missing repoRoot"},{status:400});try{return Response.json(await f.request("issue.mutate",{repoRoot:z.repoRoot,op:z.op}))}catch(G){return L7(G,M7(G))}}async function F7(f,J,Y){if(J.pathname!=="/api/issues")return null;if(f.method==="GET")return jg(Y,J);if(f.method==="POST")return Wg(Y,f);return Response.json({error:"method not allowed"},{status:405})}function O7(f){return Vg.has(String(f??"").trim().toLowerCase())}function A7(f){try{if(!f)return null;let J=new URL(f);if(J.protocol!=="http:"&&J.protocol!=="https:")return null;return J.hostname}catch{return null}}function Kg(f){let J=A7(f);return J!==null&&O7(J)}function g7(f,J={}){if(!f)return!0;if(Kg(f))return!0;let Y=J.allowedHost?.trim();if(!Y)return!1;let z=A7(f);return z!==null&&z===Y}function R7(f){let J=String(f??"").trim();return J&&!O7(J)?J:void 0}var Vg;var C7=k(()=>{Vg=new Set(["localhost","127.0.0.1","::1","[::1]"])});var Ug,k7;var N7=k(()=>{Ug=["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"],k7=new Set(Ug)});var xB={};jf(xB,{resolveRepoInit:()=>S7,resolveEngineLaunchInit:()=>sJ});import{existsSync as b7,readFileSync as Dg}from"fs";import{join as Dq}from"path";function Mg(f){return b7(Dq(f,y7))?`sh ${y7}`:void 0}function Fg(f){let J=Dq(f,Lg);if(!b7(J))return;try{let Y=Dg(J,"utf8");return Y.trim().length>0?Y:void 0}catch{return}}function S7(f,J){let Y=f?YH(f):{},z=Mg(J)??Y.initScript,G=Fg(J)??Y.initPrompt;return{initScript:z&&z.trim().length>0?z:void 0,initPrompt:G&&G.trim().length>0?G:void 0}}function Og(f,J){if(f.kind==="none")return;if(f.kind==="explicit")return{source:"explicit",text:f.prompt};let Y=J.initPrompt?.trim();return Y?{source:"repo-init",text:Y}:void 0}function sJ(f,J,Y={kind:"repo-init"}){let z=S7(f,J);return{initScript:z.initScript,firstMessage:Og(Y,z)}}var y7,Lg;var zG=k(()=>{Af();y7=Dq(".kobe","init.sh"),Lg=Dq(".kobe","init-prompt.md")});import{existsSync as I7,readFileSync as Ag}from"fs";function T7(){Mz=null}function gg(){let f=H9();if(I7(f))return{canonical:f,found:f};let J=f.replace(/\.yaml$/,".yml");if(I7(J))return{canonical:f,found:J};return{canonical:f,found:null}}function Lq(){if(Mz)return Mz;let{canonical:f,found:J}=gg();if(!J)return Mz={path:f,exists:!1,doc:null,warnings:[]},Mz;let Y=[],z=null;try{let G=Ag(J,"utf8");z=Bun.YAML.parse(G)}catch(G){let X=G instanceof Error?G.message:String(G);Y.push(`could not read/parse ${J}: ${X}`)}return Mz={path:f,exists:!0,doc:z,warnings:Y},Mz}var Mz=null;var wB=k(()=>{lf()});function GG(f,J){let Y=`alternating [${f}, ${J}] pairs`;return{layout:Y,validateCount:(z)=>z>=2&&z%2===0?null:`needs ${Y} (an even number of chords \u2014 got ${z})`}}function Sg(f,J){let Y=f.trim().toLowerCase();if(!Y)return{error:"empty chord"};let z=Y.split("+"),G=z.pop()??"";if(G===""&&z.length>0){if(G="+",z[z.length-1]==="")z.pop()}if(!G)return{error:`"${f}": no key after the modifiers`};let X=new Set;for(let H of z){let B=kg[H];if(!B)return{error:`"${f}": unknown modifier "${H}" (use ctrl / cmd / alt / shift)`};X.add(B)}if(G=Ng[G]??G,X.has("shift")&&G.length===1&&!J?.allowShiftCharacter)return{error:`"${f}": shift+<character> can never match \u2014 terminals deliver shift+letter as a plain character, not a modifier event`};let q=bg.filter((H)=>X.has(H)).join("+"),Q=q?`${q}+${G}`:G;if(G.length>1&&!yg.has(G))return{chord:Q,warning:`"${f}": unrecognized key name "${G}" \u2014 the chord may never fire`};return{chord:Q}}function Mq(f){return typeof f==="object"&&f!==null&&!Array.isArray(f)}function Ig(f){if(f==="darwin")return["darwin","macos","mac"];if(f==="win32")return["win32","windows"];return[f]}function Tg(f){if(!Mq(f))return null;let J=f.bindings;if(Mq(J))return J;return f}function Fq(f,J,Y){let z=[];if(f===null||f===void 0)return{entries:[],warnings:z};if(!Mq(f))return{entries:[],warnings:["config root must be a YAML mapping (e.g. a top-level `bindings:` key)"]};let G=new Map,X=[];if(f.bindings!==void 0)if(Mq(f.bindings))X.push(f.bindings);else z.push("`bindings:` must be a mapping of id \u2192 chord(s)");for(let q of Ig(J)){let Q=f[q];if(Q===void 0)continue;let H=Tg(Q);if(H)X.push(H);else z.push(`\`${q}:\` must be a mapping (or contain a \`bindings:\` mapping)`)}for(let q of X)for(let[Q,H]of Object.entries(q)){if(H===null||H===!1||Array.isArray(H)&&H.length===0){G.set(Q,[]);continue}let B=typeof H==="string"?[H]:Array.isArray(H)?H:null;if(!B){z.push(`${Q}: expected a chord string, a list of chords, or null \u2014 got ${typeof H}`);continue}let V=[],j=!1;for(let U of B){if(typeof U!=="string"){z.push(`${Q}: chord entries must be strings`),j=!0;continue}let L=Sg(U,Y?.chordOptsFor?.(Q));if("error"in L){z.push(`${Q}: ${L.error}`),j=!0;continue}if(L.warning)z.push(`${Q}: ${L.warning}`);if(!V.includes(L.chord))V.push(L.chord)}if(V.length===0&&j){z.push(`${Q}: no valid chords \u2014 keeping the default`);continue}G.set(Q,V)}return{entries:Array.from(G,([q,Q])=>({id:q,keys:Q})),warnings:z}}function ug(f,J){return f===J||f==="global"||J==="global"}function u7(f,J){let Y=[],z=[];for(let G of J){let X=f.find((j)=>j.id===G.id);if(!X){Y.push(`${G.id}: unknown binding id (press F1 in kobe for the full list)`);continue}let q=hB[G.id];if(q){Y.push(`${G.id}: not customizable \u2014 ${q}`);continue}if(X.keys.length===0){Y.push(`${G.id}: not customizable \u2014 the key is handled outside the keymap (doc-only row)`);continue}let Q=Rg[G.id];if(Q&&G.keys.length>0){let j=Q.validateCount(G.keys.length);if(j){Y.push(`${G.id}: ${j} \u2014 keeping the default`);continue}}let H=G.keys.filter((j)=>{if(j.length===1&&Cg.has(X.scope))return Y.push(`${G.id}: "${j}" dropped \u2014 a bare character on a ${X.scope}-scope binding would steal typed input (add a modifier)`),!1;return!0});if(H.length===0&&G.keys.length>0){Y.push(`${G.id}: no chords survived validation \u2014 keeping the default`);continue}if(Q&&H.length!==G.keys.length){Y.push(`${G.id}: a dropped chord would shift the slot layout (${Q.layout}) \u2014 keeping the default`);continue}let B=X.keys,V=X;if(V.keys=H,X.hint)if(H.length===0)V.hint=void 0;else X.hint.keys=H.join("/");z.push({id:G.id,keys:H,defaultKeys:B})}for(let G of z)for(let X of G.keys){let q=f.find((Q)=>Q.id===G.id);if(!q)continue;for(let Q of f){if(Q.id===G.id)continue;if(!Q.keys.includes(X))continue;if(!ug(q.scope,Q.scope))continue;Y.push(`${G.id}: "${X}" also fires ${Q.id} (${Q.scope} scope) \u2014 last registration wins; consider a different chord`)}}return{applied:z,warnings:Y}}var hB,Rg,Cg,kg,Ng,yg,bg;var Oq=k(()=>{hB={"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)"};Rg={"sidebar.nav":GG("down","up"),"files.nav":GG("down","up"),"sidebar.search.nav":GG("down","up"),"files.hierarchy":GG("collapse","expand"),"sidebar.view":GG("previous view","next view"),"files.tab":GG("previous tab","next tab")},Cg=new Set(["global","workspace","terminal"]),kg={ctrl:"ctrl",control:"ctrl",ctl:"ctrl",cmd:"cmd",command:"cmd",meta:"cmd",super:"cmd",win:"cmd",alt:"alt",option:"alt",opt:"alt",shift:"shift"},Ng={esc:"escape",spacebar:"space",pgup:"pageup",pgdn:"pagedown",pgdown:"pagedown"},yg=new Set(["up","down","left","right","pageup","pagedown","home","end","insert","delete","backspace","tab","space","escape","enter","return",...Array.from({length:12},(f,J)=>`f${J+1}`)]),bg=["ctrl","cmd","alt","shift"]});function XG(f){return f in E7}function Az(f,J){let Y=f.split("+"),z=Y.pop()??"";if(z===""&&Y.length>0){if(z="+",Y[Y.length-1]==="")Y.pop()}let G=new Set(Y);if(G.has("cmd"))return{error:`"${f}": the Command key never reaches tmux \u2014 use ctrl/alt/shift`};let X;if(z.length===1)X=G.has("shift")?z.toUpperCase():z;else{let H=xg[z];if(!H)return{error:`"${f}": tmux can't bind the key "${z}"`};X=H}let q=/^f\d+$/.test(z);if(G.size===0&&!q&&!J?.allowBare)return{error:`"${f}": tmux session keys are no-prefix root bindings live in every pane \u2014 a bare key would shadow typing (add a modifier, or use an F-key)`};let Q="";if(G.has("ctrl"))Q+="C-";if(G.has("alt"))Q+="M-";if(G.has("shift"))Q+="S-";return{key:Q+X}}function w7(){let f={};for(let[Y,z]of Object.entries(Oz)){let G=Az(z,{allowBare:XG(Y)});if("error"in G)throw Error(`default tmux chord for ${Y} failed to translate: ${G.error}`);f[Y]={chord:z,key:G.key}}let J=kY.map((Y)=>{let z=Az(Y);if("error"in z)throw Error(`default tmux focus chord ${Y} failed to translate`);return{chord:Y,key:z.key}});return{binds:f,focus:J,overridden:new Set,warnings:[]}}function PB(f){let J=w7(),Y=new Set;for(let z of f){if(!z.id.startsWith("tmux."))continue;if(z.id===SJ){if(z.keys.length===0){J.focus=[null,null,null,null],Y.add(SJ);continue}if(z.keys.length!==kY.length){J.warnings.push(`${SJ}: needs exactly 4 chords in order left/down/up/right (got ${z.keys.length}) \u2014 keeping the default`);continue}let Q=[],H=!0;for(let B of z.keys){let V=Az(B);if("error"in V){J.warnings.push(`${SJ}: ${V.error} \u2014 keeping the default`),H=!1;break}Q.push({chord:B,key:V.key})}if(!H)continue;J.focus=Q,Y.add(SJ);continue}if(!(z.id in Oz)){J.warnings.push(`${z.id}: unknown tmux binding id`);continue}let G=z.id;if(z.keys.length===0){J.binds[G]=null,Y.add(G);continue}if(z.keys.length>1)J.warnings.push(`${G}: tmux bindings take ONE chord \u2014 using "${z.keys[0]}", ignoring the rest`);let X=z.keys[0],q=Az(X,{allowBare:XG(G)});if("error"in q){J.warnings.push(`${G}: ${q.error} \u2014 keeping the default`);continue}if(X!==Oz[G])Y.add(G);J.binds[G]={chord:X,key:q.key}}return J.overridden=Y,J}function vB(f){return f.startsWith("tmux.")?{allowShiftCharacter:!0}:{}}function h7(){Fz=null}function Aq(){if(Fz)return Fz;let f=Lq();if(!f.exists||f.doc===null)return Fz=w7(),Fz;let J=Fq(f.doc,process.platform,{chordOptsFor:vB}),Y=J.warnings.filter((G)=>G.startsWith("tmux.")),z=PB(J.entries);z.warnings=[...Y,...z.warnings];for(let G of z.warnings)console.warn(`[kobe/keybindings] ${G}`);return Fz=z,Fz}var Eg,E7,x7,Oz,SJ="tmux.focus",kY,xg,Fz=null;var gq=k(()=>{wB();Oq();Eg={"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"},E7={"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"},x7=["F6","F7","F8","F9","F10","F11"],Oz={...Eg,...E7};kY=["ctrl+h","ctrl+j","ctrl+k","ctrl+l"],xg={up:"Up",down:"Down",left:"Left",right:"Right",pageup:"PgUp",pagedown:"PgDn",home:"Home",end:"End",insert:"IC",delete:"DC",backspace:"BSpace",tab:"Tab",space:"Space",escape:"Escape",enter:"Enter",return:"Enter",...Object.fromEntries(Array.from({length:12},(f,J)=>[`f${J+1}`,`F${J+1}`]))}});async function WX(f,J){let Y=null;for(let G=0;G<24;G++){let X=await az(f);if(X){if(!J)return{pane:X,ready:!0};let q=(await $z(X)).trim();if(q.length>0&&q===Y)return{pane:X,ready:!0};Y=q}await P7(250)}return{pane:await az(f)||await YB(f),ready:!1}}async function VX(f,J){let Y=`kobe-api-${f.replace(/[^A-Za-z0-9]/g,"")}`;await h0(["set-buffer","-b",Y,"--",J]),await h0(["paste-buffer","-p","-d","-b",Y,"-t",f]),await P7(wg),await zX(f,"Enter")}async function v7(f,J){let{pane:Y}=await WX(f,!0);if(!Y)return;await VX(Y,J.text)}var P7=(f)=>new Promise((J)=>setTimeout(J,f)),wg=150;var Rq=k(()=>{Tf()});function m7(f,J){if(f===null)return{kind:"create",reason:"no session with this name \u2014 build fresh"};let Y=f.worktree===J.cwd,z=!J.vendor||f.vendor===J.vendor;if(f.claudePaneAlive&&Y&&z)return{kind:"reuse",reason:"healthy: engine pane alive, worktree + vendor match"};if(Y&&!z&&J.hasEngineCommand)return{kind:"respawn-engine",reason:`vendor drift: session tagged ${f.vendor===""?"<untagged>":`"${f.vendor}"`}, task wants "${J.vendor}" \u2014 relaunch engine pane in place (KOB-232)`};if(Y&&z&&f.windowCount>1)return{kind:"reuse",reason:"active window's engine pane is gone but sibling chat tabs exist \u2014 reuse rather than drop them"};if(!Y)return{kind:"rebuild",reason:f.worktree===""?"legacy session with no @kobe_worktree tag \u2014 rebuild in the right place":`worktree drift: session tagged "${f.worktree}", task wants "${J.cwd}" \u2014 rebuild`};if(!z)return{kind:"rebuild",reason:"vendor drift but no engine command to respawn with \u2014 rebuild"};return{kind:"rebuild",reason:"single-window session whose engine pane was destroyed \u2014 rebuild"}}var c7;var n7=k(()=>{Qq();Hq();Bq();jq();Wq();Vq();Kq();c7={claude:oz,conductor:sz,nord:ez,opencode:fG,dracula:tz,tokyonight:YG,"osaka-jade":JG}});function hg(f){let J=/^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/.exec(f);if(!J)return null;let Y=J[1];if(Y.length===3){let[z,G,X]=Y;return`#${z}${z}${G}${G}${X}${X}`.toLowerCase()}return`#${Y.slice(0,6)}`.toLowerCase()}function d7(f,J,Y="dark"){let z=f.defs??{};function G(q,Q){if(typeof q==="string"){if(q==="transparent"||q==="none")return null;if(q.startsWith("#"))return hg(q);if(Q.includes(q))return null;let B=z[q]??f.theme[q];if(B===void 0)return null;return G(B,[...Q,q])}if(!q||typeof q!=="object")return null;let H=q[Y];return typeof H==="string"?G(H,Q):null}let X=f.theme[J];if(X===void 0)return null;return G(X,[J])}function Cq(f){return typeof f==="object"&&f!==null&&!Array.isArray(f)}function kq(f){if(!Cq(f))return{ok:!1,reason:"theme must be a JSON object at the top level"};let J=f;if(!("theme"in J))return{ok:!1,reason:"missing required key `theme`"};let Y=J.theme;if(!Cq(Y))return{ok:!1,reason:"`theme` must be an object map"};if("defs"in J&&J.defs!==void 0){if(!Cq(J.defs))return{ok:!1,reason:"`defs` must be an object map"};for(let[z,G]of Object.entries(J.defs))if(typeof G!=="string")return{ok:!1,reason:`defs.${z} must be a string (hex like "#abc" or a ref name)`}}for(let[z,G]of Object.entries(Y)){if(typeof G==="string")continue;if(!Cq(G))return{ok:!1,reason:`theme.${z} must be a string or a { dark, light } object (got ${G===null?"null":Array.isArray(G)?"array":typeof G})`};let X=G;if(typeof X.dark!=="string")return{ok:!1,reason:`theme.${z}.dark must be a string`};if(typeof X.light!=="string")return{ok:!1,reason:`theme.${z}.light must be a string`}}if("$schema"in J&&J.$schema!==void 0&&typeof J.$schema!=="string")return{ok:!1,reason:"`$schema` must be a string when present"};return{ok:!0,theme:J}}var mB=()=>{};import{readFileSync as Pg,readdirSync as vg}from"fs";import{join as i7}from"path";function ZG(){return i7(ef(),"themes")}function KX(){let f=ZG(),J;try{J=vg(f)}catch{return[]}let Y=[];for(let z of J){if(!z.endsWith(".json"))continue;let G=i7(f,z),X;try{let H=Pg(G,"utf8");X=JSON.parse(H)}catch(H){let B=H instanceof Error?H.message:String(H);console.warn(`[kobe] skipping user theme ${G}: invalid JSON \u2014 ${B}`);continue}let q=kq(X);if(!q.ok){console.warn(`[kobe] skipping user theme ${G}: ${q.reason}`);continue}let Q=z.slice(0,-5);Y.push({name:Q,theme:q.theme})}return Y}var Nq=k(()=>{lf();mB()});import{readFileSync as mg}from"fs";function ng(){try{let f=JSON.parse(mg(c1(),"utf8")),J=typeof f.activeTheme==="string"&&f.activeTheme?f.activeTheme:"claude",Y=typeof f.focusAccent==="string"&&cg.includes(f.focusAccent)?f.focusAccent:"primary";return{themeName:J,focusAccentSlot:Y,enabled:f.tmuxChromeTheme!=="off"&&f.tmuxBorderTheme!=="off"}}catch{return{themeName:"claude",focusAccentSlot:"primary",enabled:!0}}}function dg(f){return KX().find((Y)=>Y.name===f)?.theme??c7[f]??null}function WJ(f,...J){for(let Y of J){let z=d7(f,Y);if(z)return z}return null}function l7(f,J){let Y=WJ(f,"text"),z=WJ(f,"background"),G=WJ(f,"textMuted","text"),X=WJ(f,"backgroundPanel","background"),q=WJ(f,"backgroundElement","backgroundPanel","background"),Q=WJ(f,"backgroundMenu","backgroundElement","backgroundPanel","background"),H=WJ(f,"selectedListItemText","background"),B=WJ(f,J,"primary","borderActive","border","text");return{border:WJ(f,"border","text"),activeBorder:B,statusBg:X,statusFg:G,statusMutedFg:G,windowFg:G,currentWindowBg:q,currentWindowFg:B,activityFg:WJ(f,"info","primary","text"),bellFg:WJ(f,"warning","error","primary","text"),messageBg:Q,messageFg:Y,messageCommandFg:B,modeBg:B,modeFg:H??z}}function $1(f){let J=[];if(f.bg)J.push(`bg=${f.bg}`);if(f.fg)J.push(`fg=${f.fg}`);if(J.length===0)return null;if(f.attrs)J.push(...f.attrs);return J.join(",")}function $7(f){let J=$1({bg:f.statusBg,fg:f.statusFg}),Y=$1({bg:f.statusBg,fg:f.statusMutedFg}),z=$1({bg:f.statusBg,fg:f.windowFg});return[{key:"border",option:"pane-border-style",showFlag:"-gwqv",setFlag:"-gw",unsetFlag:"-gwu",value:$1({fg:f.border})},{key:"active",option:"pane-active-border-style",showFlag:"-gwqv",setFlag:"-gw",unsetFlag:"-gwu",value:$1({fg:f.activeBorder})},{key:"status",option:"status-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:J},{key:"status-left",option:"status-left-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Y},{key:"status-right",option:"status-right-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Y},{key:"window",option:"window-status-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:z},{key:"current-window",option:"window-status-current-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:$1({bg:f.currentWindowBg,fg:f.currentWindowFg,attrs:["bold"]})},{key:"activity-window",option:"window-status-activity-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:$1({bg:f.statusBg,fg:f.activityFg})},{key:"bell-window",option:"window-status-bell-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:$1({bg:f.statusBg,fg:f.bellFg,attrs:["bold"]})},{key:"last-window",option:"window-status-last-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:$1({bg:f.statusBg,fg:f.statusFg})},{key:"message",option:"message-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:$1({bg:f.messageBg,fg:f.messageFg})},{key:"message-command",option:"message-command-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:$1({bg:f.messageBg,fg:f.messageCommandFg,attrs:["bold"]})},{key:"mode",option:"mode-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:$1({bg:f.modeBg,fg:f.modeFg})},{key:"display-panes",option:"display-panes-colour",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:f.border},{key:"display-panes-active",option:"display-panes-active-colour",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:f.activeBorder}]}function ig(f){let J=new Set(f.marker.split(",").map((X)=>X.trim()).filter(Boolean)),Y=[],z=[];for(let X of $7(f.hexes))if(X.value){if((f.current[X.key]??"")!==X.value)Y.push(["set-option",X.setFlag,X.option,X.value]);z.push(X.key)}else if(J.has(X.key))Y.push(["set-option",X.unsetFlag,X.option]);let G=z.join(",");if(G!==f.marker)Y.push(G?["set-option","-g",cB,G]:["set-option","-gu",cB]);return Y}async function a7(f){let{code:J,stdout:Y}=await d0(f);return J===0?Y.trim():""}async function gz(){try{let f=ng(),J=f.enabled?dg(f.themeName):null,Y=J?l7(J,f.focusAccentSlot):l7({theme:{}},f.focusAccentSlot),z=$7(Y),[G,...X]=await Promise.all([a7(["show-options","-gqv",cB]),...z.map((H)=>a7(["show-options",H.showFlag,H.option]))]),q=Object.fromEntries(z.map((H,B)=>[H.key,X[B]??""])),Q=ig({marker:G,current:q,hexes:Y});if(Q.length>0)await Pf(Q)}catch{}}var cB="@kobe_border_theme",cg;var yq=k(()=>{lf();Tf();n7();Nq();cg=["primary","success","info"]});function r7(){return nf()[bq]!==!1}var bq="zen.keepTasks";var nB=k(()=>{pY()});var Sq={};jf(Sq,{recordGen:()=>NY,isLatestGen:()=>t7,genAgeMs:()=>og,coalesceLayoutWork:()=>sg,RESIZE_GUARD_MS:()=>_g,LAYOUT_COALESCE_MS:()=>o7});import{createHash as lg,randomUUID as ag}from"crypto";import{mkdirSync as $g,readFileSync as p7,renameSync as rg,writeFileSync as pg}from"fs";import{join as _7}from"path";function s7(){return _7(ef(),"layout-coord")}function dB(f,J){let Y=lg("sha1").update(f).digest("hex").slice(0,16);return _7(s7(),`${Y}.${J}`)}function NY(f,J){let Y=ag();try{$g(s7(),{recursive:!0});let z=dB(f,J),G=`${z}.${Y}.tmp`;pg(G,`${Date.now()}
56
+ ${Y}`),rg(G,z)}catch{}return Y}function t7(f,J,Y){try{return p7(dB(f,J),"utf8").split(`
57
+ `)[1]?.trim()===Y}catch{return!0}}function og(f,J,Y=Date.now()){try{let z=Number.parseInt(p7(dB(f,J),"utf8").split(`
58
+ `)[0]??"",10);return Number.isFinite(z)?Y-z:Number.POSITIVE_INFINITY}catch{return Number.POSITIVE_INFINITY}}async function sg(f,J,Y,z=o7){let G=NY(f,J);if(z>0)await new Promise((X)=>setTimeout(X,z));if(!t7(f,J,G))return;await Y()}var o7=120,_g=400;var qG=k(()=>{lf()});function eg(f){let J=[];for(let Y of f.split(`
59
+ `)){let z=Y.trim();if(!z)continue;let[G,X,q,Q,H]=z.split("\t");if(!G||!X||!q)continue;let B=Number.parseInt(H?.trim()??"",10);J.push({windowId:G.trim(),paneId:X.trim(),role:q.trim(),version:Q?.trim()??"",...Number.isFinite(B)?{paneWidth:B}:{}})}return J}function e7(f,J){let Y=new Map;for(let G of f){let X=Y.get(G.windowId)??[];X.push(G),Y.set(G.windowId,X)}let z=[];for(let G of Y.values()){let X=G.find((B)=>B.role==="claude")?.paneId,q=G.find((B)=>B.role==="tasks"),Q=G.find((B)=>B.role==="ops");if(q&&(J.force||q.version!==J.currentVersion))z.push({role:"tasks",paneId:q.paneId});let H=J.force?!0:X&&(J.vendorChanged||Q?.version!==J.currentVersion);if(Q&&H)z.push({role:"ops",paneId:Q.paneId,claudePaneId:X??null})}return z}async function iB(f){let{code:J,stdout:Y}=await d0(["list-panes","-s","-t",`=${f}`,"-F",tg]);if(J!==0)return null;return eg(Y)}function f5(f,J){let Y=Cf(),z=_f(),G=[];for(let X of f){let q=X.role==="tasks"?VY(Y,{initialTaskId:J.taskId}):hz({cwd:J.cwd,taskId:J.taskId,claudePaneId:X.claudePaneId,cliInvocation:Y,vendor:J.vendor});G.push(["respawn-pane","-k","-t",X.paneId,"-c",If(J.cwd),R1(z+q)],["set-option","-p","-t",X.paneId,"@kobe_role",X.role],["set-option","-p","-t",X.paneId,VJ,s0])}return G}async function J5(f,J,Y,z,G){let X=await iB(f);if(!X)return!1;let q=X.filter((B)=>B.role==="claude");if(q.length===0)return!1;let Q=If(J),H=[];for(let B of q){let V=rz(Y,G),j=R1(dz(g1(V.argv),z,J));H.push(["respawn-pane","-k","-c",Q,"-t",B.paneId,j]),H.push(V.sessionId?["set-window-option","-t",B.paneId,yJ,V.sessionId]:["set-window-option","-u","-t",B.paneId,yJ])}return await Pf(H),!0}async function Y5(){let f=await MY([aJ,Yz,$J]),J=Number.parseInt(f[aJ]??"",10),Y=Number.isFinite(J)&&J>0?Jz(J):eY,z=fR({widthPct:rJ(Number.parseInt(f[Yz]??"",10)),heightPct:rJ(Number.parseInt(f[$J]??"",10))});return{tasksWidth:Y,rcArgs:z}}function fR(f){let J=[];if(f.widthPct!==null)J.push("-x",`${f.widthPct}%`);if(f.heightPct!==null)J.push("-y",`${f.heightPct}%`);return J}async function z5(){return(await Y5()).rcArgs}async function lB(f,J={}){let{tasksWidth:Y,rcArgs:z}=await Y5(),G=await iB(f);if(!G)return{rows:null,commands:[]};let X=[];for(let q of G)if(q.role==="tasks"&&(J.force||q.paneWidth!==Y))X.push(["resize-pane","-t",q.paneId,"-x",`${Y}`]);if(z.length>0){for(let q of G)if(q.role==="ops")X.push(["resize-pane","-t",q.paneId,...z])}return{rows:G,commands:X}}async function QG(f,J){NY(f,"resize");let{rows:Y,commands:z}=await lB(f);if(!Y)return;let G=[...z];if(J)G.push(...f5(e7(Y,{currentVersion:s0,force:!1,vendorChanged:J.vendorChanged}),J));if(G.length>0)await Pf(G)}async function G5(f){if(!await Hf(f))return;await QG(f)}async function UX(f){let{code:J,stdout:Y}=await d0(["list-panes","-t",`=${f}`,"-F",`#{@kobe_role} #{pane_width} #{pane_height} #{window_width} #{window_height} #{window_zoomed_flag} #{${YJ}} #{${A1}}`]);if(J!==0)return;let z=Y.split(`
60
+ `).map((B)=>B.split("\t")).filter((B)=>(B[0]?.trim()??"")!=="");if(z.length===0)return;if(z.some((B)=>B[5]?.trim()==="1"))return;if(z.some((B)=>(B[6]?.trim()??"")!==""))return;if(z.some((B)=>(B[7]?.trim()??"")!==""))return;let G=Number.parseInt(z[0][3]?.trim()??"",10),X=Number.parseInt(z[0][4]?.trim()??"",10),q=[],Q=z.find(([B])=>B?.trim()==="tasks");if(Q){let B=Number.parseInt(Q[1]?.trim()??"",10);if(Number.isFinite(B)&&B>0)q.push(["set-option","-s",aJ,`${Jz(B)}`])}let H=z.find(([B])=>B?.trim()==="ops");if(H&&Number.isFinite(G)&&G>0&&Number.isFinite(X)&&X>0){let B=Number.parseInt(H[1]?.trim()??"",10),V=Number.parseInt(H[2]?.trim()??"",10),j=Number.isFinite(B)?rJ(100*B/G):null,U=Number.isFinite(V)?rJ(100*V/X):null;if(j!==null)q.push(["set-option","-s",Yz,`${j}`]);if(U!==null)q.push(["set-option","-s",$J,`${U}`])}if(q.length>0)await Pf(q)}function JR(f){let J=f.split(`
61
+ `).map((z)=>z.split("\t")).filter((z)=>(z[0]?.trim()??"")!=="");if(J.length===0)return!1;if(J.some((z)=>z[1]?.trim()==="1"))return!1;if(J.some((z)=>(z[2]?.trim()??"")!==""))return!1;if(J.some((z)=>(z[3]?.trim()??"")!==""))return!1;let Y=new Set(J.map((z)=>z[0]?.trim()));return Y.has("tasks")&&Y.has("ops")}async function X5(f){let{code:J,stdout:Y}=await d0(["list-panes","-t",`=${f}`,"-F",`#{@kobe_role} #{window_zoomed_flag} #{${YJ}} #{${A1}}`]);if(J!==0||!JR(Y))return;await UX(f)}async function HG(f){let J=await N1(f,["@kobe_worktree","@kobe_task","@kobe_vendor"]),Y=J["@kobe_worktree"]||process.cwd(),z=J["@kobe_task"]||void 0,G=J["@kobe_vendor"]||void 0,X=await iB(f);if(!X)return;let q=f5(e7(X,{currentVersion:s0,force:!0}),{cwd:Y,taskId:z,vendor:G});if(q.length>0)await Pf(q);await gz()}var VJ="@kobe_pane_version",tg;var DX=k(()=>{lJ();x1();ZJ();Tf();zJ();yq();D1();Qz();qG();tg=`#{window_id} #{pane_id} #{@kobe_role} #{${VJ}} #{pane_width}`});function zR(f){let J=[];for(let Y of f.split(`
62
+ `)){let z=Y.trim();if(!z)continue;let[G,X,q,Q,H,B,V]=z.split("\t");if(!G)continue;let j=Number.parseInt(Q??"",10),U=Number.parseInt(H??"",10),L=Number.parseInt(B??"",10),O=Number.parseInt(V??"",10);J.push({paneId:G.trim(),role:X?.trim()??"",active:q?.trim()==="1",paneWidth:Number.isFinite(j)?j:0,paneHeight:Number.isFinite(U)?U:0,windowWidth:Number.isFinite(L)?L:0,windowHeight:Number.isFinite(O)?O:0})}return J}function GR(f){let J=f.find((z)=>z.role===fz);if(!J)return{kind:"missing-engine"};let Y=f.filter((z)=>z.role===nG);if(Y.length+1>=MH)return{kind:"maxed"};if(Y.length===0)return{kind:"split",targetPane:J.paneId,direction:"-h"};if(Y.length===1)return{kind:"split",targetPane:Y[0]?.paneId??J.paneId,direction:"-v"};return{kind:"split",targetPane:J.paneId,direction:"-v"}}function aB(f){return f.find((J)=>J.role===JJ)??f.find((J)=>J.role==="")}function XR(f){return 100-(rJ(f??Number.NaN)??lG)}function ZR(f){let J=Number.parseInt(f??"",10);return Number.isFinite(J)&&J>0?J:void 0}async function h1(f,J){let Y=J?.trim()||`=${f}`,{code:z,stdout:G}=await d0(["list-panes","-t",Y,"-F",YR]);return z===0?zR(G):null}async function qR(f){let{code:J,stdout:Y}=await d0(["list-windows","-t",`=${f}`,"-F","#{window_active}\t#{window_id}"]);if(J!==0)return"";for(let z of Y.split(`
63
+ `)){let[G,X]=z.split("\t");if(G?.trim()==="1"&&X?.trim())return X.trim()}return""}async function tJ(f,J){let{code:Y,stdout:z}=await d0(["show-options","-wqv","-t",f,J]);return Y===0?z.trim():""}async function $B(f,J,Y){await h0(["set-window-option","-t",f,J,Y])}async function yY(f,J){await h0(["set-window-option","-u","-t",f,J])}async function rB(f){let{code:J,stdout:Y}=await d0(["display-message","-p","-t",f,"#{pane_id}"]);return J===0&&Y.trim()===f}async function Nf(f,J){await h0(["display-message","-t",f,J])}async function Iq(f){let J=await N1(f,["@kobe_worktree","@kobe_task","@kobe_vendor"]);return{cwd:J["@kobe_worktree"]||process.cwd(),taskId:J["@kobe_task"]||void 0,vendor:J["@kobe_vendor"]||void 0}}function QR(f){let J=Cf(),Y=_f();return R1(Y+hz({cwd:f.cwd,taskId:f.taskId,claudePaneId:f.enginePaneId,cliInvocation:J,vendor:f.vendor}))}async function HR(f,J){return J?.trim()||await qR(f)}async function BR(f,J){let Y=await h1(f,J);if(!Y)return;let z=GR(Y);if(z.kind==="missing-engine"){await Nf(J,"kobe: no engine pane in this window");return}if(z.kind==="maxed"){await Nf(J,`kobe: workspace split limit is ${MH} panes`);return}let{cwd:G}=await Iq(f),{code:X,stdout:q}=await d0(["split-window",z.direction,"-t",z.targetPane,"-l","50%","-c",If(G),"-P","-F","#{pane_id}",R1("true")]),Q=q.trim();if(X!==0||!Q)return;await Pf([["set-option","-p","-t",Q,"@kobe_role",nG],["select-pane","-t",Q]])}async function jR(f,J){let Y=await h1(f,J);if(!Y)return;let z=Y.filter((q)=>q.role===nG);if(z.length===0){await Nf(J,"kobe: no workspace split to close");return}let X=z.find((q)=>q.active)??z[z.length-1];if(!X)return;await h0(["kill-pane","-t",X.paneId])}async function WR(f,J){let Y=await h1(f,J);if(!Y)return;let z=Y.filter((G)=>G.role===nG);if(z.length===0){await Nf(J,"kobe: no workspace splits to reset");return}await Pf(z.map((G)=>["kill-pane","-t",G.paneId]))}async function Z5(){let f=await MY([aJ]);return Jz(ZR(f[aJ])??eY)}async function VR(f){let{cwd:J,taskId:Y}=await Iq(f),z=Cf(),G=_f();return{cwd:J,command:R1(G+VY(z,{initialTaskId:Y}))}}async function q5(f,J){let Y=await h1(f,J);if(!Y)return;let z=Y.find((M)=>M.role===fJ);if(z){await h0(["kill-pane","-t",z.paneId]);return}let G=aB(Y),X=Y.find((M)=>M.role===fz);if(!X){await Nf(J,"kobe: cannot restore file pane in this layout");return}let{cwd:q,taskId:Q,vendor:H}=await Iq(f),B=QR({cwd:q,taskId:Q,vendor:H,enginePaneId:X.paneId}),V=G?["split-window","-v","-b","-t",G.paneId,"-l",`${await KR()}%`,"-c",If(q),"-P","-F","#{pane_id}",B]:["split-window","-h","-t",X.paneId,"-l",`${await pB()}%`,"-c",If(q),"-P","-F","#{pane_id}",B],{code:j,stdout:U}=await d0(V),L=U.trim();if(j!==0||!L)return;let O=[["set-option","-p","-t",L,"@kobe_role",fJ],["set-option","-p","-t",L,VJ,s0]];if(G?.role==="")O.push(["set-option","-p","-t",G.paneId,"@kobe_role",JJ]);await Pf(O)}async function KR(){let f=await MY([$J]);return rJ(Number.parseInt(f[$J]??"",10))??lG}async function pB(){let f=await MY([Yz]);return rJ(Number.parseInt(f[Yz]??"",10))??100-gZ}async function Q5(){let f=await MY([$J]);return XR(Number.parseInt(f[$J]??"",10))}async function UR(f){let{code:J,stdout:Y}=await d0(["list-windows","-t",`=${f}`,"-F","#{window_index}"]);if(J!==0)return new Set;return new Set(Y.split(`
64
+ `).map((z)=>Number.parseInt(z.trim(),10)).filter((z)=>Number.isFinite(z)))}async function H5(f,J){let Y=await UR(f),z=ZW(J);while(Y.has(z))z++;return z}async function B5(f){let J=iG(f);if(await Hf(J))return J;return await h0(["new-session","-d","-s",J,"-n","hidden-panes","-c",If(process.cwd()),"while :; do sleep 3600; done"]),J}async function _B(f){let J=iG(f);if(!await Hf(J))return;let{code:Y,stdout:z}=await d0(["list-panes","-s","-t",`=${J}`,"-F","#{@kobe_role}"]);if(Y!==0)return;if(!z.split(`
65
+ `).some((X)=>{let q=X.trim();return q===JJ||q===i1}))await h0(["kill-session","-t",`=${J}`])}async function DR(f,J){await j5(f,J,YJ)}async function LR(f,J){await j5(f,J,A1)}async function j5(f,J,Y){let z=await tJ(J,Y);if(!z)return;if(await rB(z))await h0(["kill-pane","-t",z]);await yY(J,Y)}async function MR(f,J){await DR(f,J),await LR(f,J),await _B(f)}function W5(f){return f.find((J)=>J.role===fz)??f[0]}async function oB(f,J,Y){let z=W5(Y);if(!z)return await Nf(J,"kobe: cannot restore Tasks pane in this layout"),!1;let G=await Z5(),{cwd:X,command:q}=await VR(f),{code:Q,stdout:H}=await d0(["split-window","-h","-b","-t",z.paneId,"-l",`${G}`,"-c",If(X),"-P","-F","#{pane_id}",q]),B=H.trim();if(Q!==0||!B)return!1;return await Pf([["set-option","-p","-t",B,"@kobe_role",i1],["set-option","-p","-t",B,VJ,s0],["select-pane","-t",B]]),await yY(J,A1),await Nf(J,"kobe: Tasks pane restored"),!0}async function V5(f,J,Y){let z=await B5(f),G=await H5(z,J),{code:X,stdout:q}=await d0(["break-pane","-d","-s",Y.paneId,"-t",`${z}:${G}`,"-P","-F","#{pane_id}"]),Q=q.trim()||Y.paneId;if(X!==0||!Q){await Nf(J,"kobe: could not hide Tasks pane");return}await $B(J,A1,Q),await Nf(J,"kobe: Tasks pane hidden")}async function sB(f,J,Y){let z=await h1(f,J);if(!z)return;if(!await rB(Y)){await yY(J,A1);let q=z.find((Q)=>Q.role===i1);if(q){await h0(["select-pane","-t",q.paneId]);return}await oB(f,J,z);return}let G=W5(z);if(!G){await Nf(J,"kobe: cannot restore Tasks pane in this layout");return}if(await h0(["join-pane","-h","-b","-s",Y,"-t",G.paneId,"-l",`${await Z5()}`])!==0){await Nf(J,"kobe: could not restore Tasks pane");return}await Pf([["set-option","-p","-t",Y,"@kobe_role",i1],["set-option","-p","-t",Y,VJ,s0],["select-pane","-t",Y]]),await yY(J,A1),await _B(f),await Nf(J,"kobe: Tasks pane restored")}async function FR(f,J){let Y=await tJ(J,A1);if(Y){await sB(f,J,Y);return}let z=await h1(f,J);if(!z)return;let G=z.find((X)=>X.role===i1);if(G){await V5(f,J,G);return}await oB(f,J,z)}async function OR(f,J){let Y=await tJ(J,A1);if(Y){await sB(f,J,Y);return}let z=await h1(f,J);if(!z)return;let G=z.find((X)=>X.role===i1);if(G){await h0(["select-pane","-t",G.paneId]);return}await oB(f,J,z)}async function K5(f,J,Y){if(Y.role==="")await h0(["set-option","-p","-t",Y.paneId,"@kobe_role",JJ]);let z=await B5(f),G=await H5(z,J),{code:X,stdout:q}=await d0(["break-pane","-d","-s",Y.paneId,"-t",`${z}:${G}`,"-P","-F","#{pane_id}"]),Q=q.trim()||Y.paneId;if(X!==0||!Q){await Nf(J,"kobe: could not hide terminal pane");return}await $B(J,YJ,Q),await Nf(J,"kobe: Terminal pane hidden")}async function U5(f,J,Y){let z=Y.find((V)=>V.role===fJ),G=Y.find((V)=>V.role===fz);if(!z&&!G)return await Nf(J,"kobe: cannot restore terminal pane in this layout"),!1;let{cwd:X}=await Iq(f),q=z?["split-window","-v","-t",z.paneId,"-l",`${await Q5()}%`,"-c",If(X),"-P","-F","#{pane_id}"]:["split-window","-h","-t",G?.paneId??"","-l",`${await pB()}%`,"-c",If(X),"-P","-F","#{pane_id}"],{code:Q,stdout:H}=await d0(q),B=H.trim();if(Q!==0||!B)return!1;return await h0(["set-option","-p","-t",B,"@kobe_role",JJ]),await yY(J,YJ),await Nf(J,"kobe: Terminal pane restored"),!0}async function D5(f,J,Y){let z=await h1(f,J);if(!z)return;if(!await rB(Y)){await yY(J,YJ),await U5(f,J,z);return}let G=z.find((B)=>B.role===fJ),X=z.find((B)=>B.role===fz);if(!G&&!X){await Nf(J,"kobe: cannot restore terminal pane in this layout");return}let q=G?["join-pane","-v","-s",Y,"-t",G.paneId,"-l",`${await Q5()}%`]:["join-pane","-h","-s",Y,"-t",X?.paneId??"","-l",`${await pB()}%`];if(await h0(q)!==0){await Nf(J,"kobe: could not restore terminal pane");return}await h0(["set-option","-p","-t",Y,"@kobe_role",JJ]),await yY(J,YJ),await _B(f),z=await h1(f,J);let H=z?.find((B)=>B.paneId===Y);if(H)await h0(["select-pane","-t",H.paneId]);await Nf(J,"kobe: Terminal pane restored")}async function AR(f,J){let Y=await tJ(J,YJ);if(Y){await D5(f,J,Y);return}let z=await h1(f,J);if(!z)return;let G=aB(z);if(G){await K5(f,J,G);return}await U5(f,J,z)}async function gR(f){if((await Bz(f,dG)).length>0){await CR(f);return}await RR(f)}async function L5(f){let{code:J,stdout:Y}=await d0(["list-windows","-t",`=${f}`,"-F","#{window_id}"]);if(J!==0)return[];return Y.split(`
66
+ `).map((z)=>z.trim()).filter((z)=>z.length>0)}async function M5(f,J){return!!(await h1(f,J))?.some((z)=>z.role===fz)}async function RR(f){let J=await L5(f);for(let Y of J){if(!await M5(f,Y))continue;if(await tJ(Y,WY))continue;await O5(f,Y)}await LY(f,dG,"1"),await Nf(`=${f}`,"kobe: Zen mode on \u2014 all tabs")}async function CR(f){let J=await L5(f);for(let Y of J){let z=await tJ(Y,WY);if(z)await kR(f,Y,z)}await h0(["set-option","-u","-t",f,dG]),await Nf(`=${f}`,"kobe: Zen mode off \u2014 all tabs")}async function F5(f,J){if((await Bz(f,dG)).length===0)return;if(await tJ(J,WY))return;if(!await M5(f,J))return;await O5(f,J)}async function O5(f,J){let Y=await h1(f,J);if(!Y)return;let z=[],G=Y.find((q)=>q.role===fJ);if(G)await h0(["kill-pane","-t",G.paneId]),z.push(fJ);let X=aB(Y);if(X)await K5(f,J,X),z.push(JJ);if(!r7()){let q=Y.find((Q)=>Q.role===i1);if(q)await V5(f,J,q),z.push(i1)}if(z.length===0){await Nf(J,"kobe: already focused \u2014 nothing to hide");return}await $B(J,WY,z.join(",")),await Nf(J,"kobe: Zen mode on")}async function kR(f,J,Y){let z=new Set(Y.split(",").map((G)=>G.trim()));if(z.has(i1)){let G=await tJ(J,A1);if(G)await sB(f,J,G)}if(z.has(fJ)){let G=await h1(f,J);if(G&&!G.some((X)=>X.role===fJ))await q5(f,J)}if(z.has(JJ)){let G=await tJ(J,YJ);if(G)await D5(f,J,G)}await yY(J,WY),await Nf(J,"kobe: Zen mode off")}async function NR(f){let{code:J,stdout:Y}=await d0(["list-windows","-t",`=${f}`,"-F","#{window_id}"]);if(J!==0)return 0;return Y.split(`
67
+ `).filter((z)=>z.trim().length>0).length}async function yR(f,J){if(await NR(f)<=1){await Nf(J,"Cannot close the only ChatTab");return}await MR(f,J),await h0(["kill-window","-t",J])}async function Tq(f,J,Y={}){if(!await Hf(f))return;let z=await HR(f,Y.windowId);if(!z)return;switch(J){case"workspace-split":await BR(f,z);return;case"workspace-close":await jR(f,z);return;case"workspace-reset":await WR(f,z);return;case"tasks-toggle":await FR(f,z);return;case"tasks-restore":await OR(f,z);return;case"ops-toggle":await q5(f,z);return;case"terminal-toggle":await AR(f,z);return;case"zen-toggle":await gR(f);return;case"chat-tab-close":await yR(f,z);return}}var YR="#{pane_id}\t#{@kobe_role}\t#{pane_active}\t#{pane_width}\t#{pane_height}\t#{window_width}\t#{window_height}";var uq=k(()=>{lJ();ZJ();nB();Tf();zJ();D1();Qz();DX()});function xq(f,J){return[["bind-key","-n",f,"if-shell","-F","#{?#{@kobe_surface},0,1}","previous-window"],["bind-key","-n",J,"if-shell","-F","#{?#{@kobe_surface},0,1}","next-window"]]}function wq(f,J="kill-window"){return["bind-key","-n",f,"if-shell","-F","#{>:#{session_windows},1}",J,"display-message 'Cannot close the only ChatTab'"]}function hq(f){return["bind-key","-n",f,"command-prompt","-I","#{window_name}","rename-window -- '%%'"]}function Pq(f){return[["bind-key","-n",f,"command-prompt","-p",Eq],["bind-key","T","command-prompt","-p",Eq]]}function tB(f){return f.startsWith("C-")&&f.length===3?`^${f.slice(2)}`:f}function vq(f){return`${[f.focusLeft?`${tB(f.focusLeft)} tasks`:null,f.detach?`${tB(f.detach)} detach`:null,f.newTab?`${tB(f.newTab)} tab`:null,f.layoutSplits?`prefix ${f.layoutSplits} splits`:null,f.layoutPanes?`prefix ${f.layoutPanes} panes`:null].filter((Y)=>Y!==null).join(" ")} `}async function fj(f,J){let Y=_f(),z=await aZ(),G=R1(J.opsCommand??Y+hz({cwd:J.cwd,taskId:J.taskId,claudePaneId:f,cliInvocation:J.inv,vendor:J.vendor})),{stdout:X}=await JX([["set-option","-p","-t",f,"@kobe_role","claude"],["set-window-option","-t",f,eB,"idle"],["split-window","-h","-b","-t",f,"-l",`${z}`,"-c",If(J.cwd),"-P","-F","tasks=#{pane_id}",R1(Y+VY(J.inv,{initialTaskId:J.taskId}))],["split-window","-h","-t",f,"-l",`${100-gZ}%`,"-c",If(J.cwd),"-P","-F","ops=#{pane_id}",G],["split-window","-v","-l",`${100-lG}%`,"-c",If(J.cwd),"-P","-F","shell=#{pane_id}"],["select-pane","-t",f]]),q=Object.fromEntries(X.split(`
68
+ `).map((Q)=>Q.trim()).filter(Boolean).map((Q)=>Q.split("=",2)));if(await Pf([...q.tasks?[["set-option","-p","-t",q.tasks,"@kobe_role",i1]]:[],...q.tasks?[["set-option","-p","-t",q.tasks,VJ,s0]]:[],...q.ops?[["set-option","-p","-t",q.ops,"@kobe_role",fJ]]:[],...q.ops?[["set-option","-p","-t",q.ops,VJ,s0]]:[],...q.shell?[["set-option","-p","-t",q.shell,"@kobe_role",JJ]]:[]]),q.ops){let Q=await z5();if(Q.length>0)await h0(["resize-pane","-t",q.ops,...Q])}}async function A5(f,J){if(!await Hf(f))return;let Y=await N1(f,["@kobe_worktree","@kobe_task","@kobe_vendor",fX]),z=Y["@kobe_worktree"]||process.cwd(),G=Y["@kobe_task"]||void 0,X=Y[fX]||void 0,q=J??Y["@kobe_vendor"];if(J)await bR(f,G,J);let Q=b1(q),H=rz(Q,q),B=Cf(),j=(await d0(["new-window","-t",`=${f}`,"-c",If(z),"-P","-F","#{pane_id}",R1(dz(g1(H.argv),X,z))])).stdout.trim();if(!j)return;if(H.sessionId)await FY(j,yJ,H.sessionId);await fj(j,{cwd:z,taskId:G,inv:B,vendor:q});let{stdout:U}=await d0(["display-message","-p","-t",j,"#{window_id}"]),L=U.trim();if(L)await F5(f,L)}async function cq(f){if(!await Hf(f))return;let Y=(await N1(f,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),z=Cf(),X=`${_f()}${z.map(Xf).join(" ")} settings`;await QJ(f,{cwd:If(Y),command:X,name:"settings",surface:!0})}async function nq(f){if(!await Hf(f))return;let Y=(await N1(f,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),z=Cf(),X=`${_f()}${z.map(Xf).join(" ")} help-page`;await QJ(f,{cwd:If(Y),command:X,name:"help",surface:!0})}async function dq(f,J){if(!await Hf(f))return;let z=(await N1(f,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),G=Cf(),X=_f(),q=J?` --repo ${Xf(J)}`:"",Q=`${X}${G.map(Xf).join(" ")} new-task${q}`;await QJ(f,{cwd:If(z),command:Q,name:"new task",surface:!0})}async function iq(f){if(!await Hf(f))return;let Y=(await N1(f,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),z=Cf(),X=`${_f()}${BW({cliInvocation:z})}`;await QJ(f,{cwd:If(Y),command:X,name:"update",surface:!0})}async function g5(f){if(!await Hf(f))return;let Y=(await N1(f,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),z=Cf(),X=`${_f()}${z.map(Xf).join(" ")} quick-task --session ${Xf(f)}`;await QJ(f,{cwd:If(Y),command:X,name:"quick task",surface:!0})}async function bR(f,J,Y){if(await LY(f,"@kobe_vendor",Y),!J)return;try{let{connectOrStartDaemon:z}=await Promise.resolve().then(() => (L1(),lq)),G=await z();try{await G.request("task.setVendor",{taskId:J,vendor:Y})}finally{G.close()}}catch(z){console.error("[kobe tmux] failed to persist selected engine vendor:",z)}}var Eq,eB="@kobe_tab_state",LX="#{?#{==:#{@kobe_tab_state},running},\u25CF,#{?#{==:#{@kobe_tab_state},done},\u2713,#{?#{==:#{@kobe_tab_state},error},!,#{?#{==:#{@kobe_tab_state},unknown},?,\u25CB}}}} #I:#W",mq;var Jj=k(()=>{lJ();x1();ZJ();Tf();zJ();U1();D1();Qz();uq();DX();Eq=`engine (${cf.join("/")}/\u2026)`;mq=LX});var r1={};jf(r1,{tmuxWindowSizeArgsForClient:()=>Gj,tmuxSessionName:()=>Lf,tmuxInitialSizeArgs:()=>C5,tmuxInitialClientSize:()=>zj,tmuxAvailable:()=>NJ,switchClientBeforeKill:()=>bJ,sessionExists:()=>Hf,selectTasksPane:()=>hR,runLayoutAction:()=>Tq,resyncWindowToClient:()=>TR,refreshKobeWorkspacePanes:()=>HG,quickCreate:()=>g5,prepareWindowForSwitch:()=>$q,prepareWindowForAttach:()=>aq,parseTmuxClientRows:()=>k5,parseObservedSession:()=>b5,openUpdateTab:()=>iq,openSettingsTab:()=>cq,openNewTaskTab:()=>dq,openHelpTab:()=>nq,newChatTab:()=>A5,kobeStatusRight:()=>vq,killSession:()=>l1,healSessionLayout:()=>G5,focusBindCommand:()=>y5,ensureSession:()=>SY,currentSessionName:()=>y1,clientsWithConflictingSize:()=>N5,chatTabSwitchBindings:()=>xq,chatTabRenameBinding:()=>hq,chatTabCloseBinding:()=>wq,chatTabChooseEngineBindings:()=>Pq,captureGlobalLayoutOnDrag:()=>X5,captureGlobalLayout:()=>UX,attachArgv:()=>lz,PANE_VERSION_OPTION:()=>VJ,CHAT_TAB_STATUS_FORMAT:()=>LX,CHAT_TAB_STATUS_CURRENT_FORMAT:()=>mq,CHAT_TAB_STATE_OPTION:()=>eB,CHAT_TAB_ENGINE_PROMPT:()=>Eq});function C5(f=process.stdout,J=process.env){let Y=zj(f,J);return Y?["-x",`${Y.columns}`,"-y",`${Y.rows}`]:[]}function zj(f=process.stdout,J=process.env){let Y=bY(f.columns)??bY(J.COLUMNS),z=bY(f.rows)??bY(J.LINES);return Y&&z?{columns:Y,rows:z}:null}function bY(f){let J=typeof f==="number"?f:typeof f==="string"?Number.parseInt(f,10):Number.NaN;return Number.isInteger(J)&&J>0?J:void 0}function k5(f){let J=[];for(let Y of f.split(`
69
+ `)){let[z,G,X,q,Q]=Y.split("\t"),H=bY(X?.trim()),B=bY(q?.trim());if(!z?.trim()||!G?.trim()||!H||!B)continue;J.push({name:z.trim(),session:G.trim(),width:H,height:B,flags:Q?.trim()??""})}return J}function N5(f,J,Y,z={}){return f.filter((G)=>G.session===J).filter((G)=>G.name!==z.currentClientName).filter((G)=>G.width!==Y.columns||G.height!==Y.rows).map((G)=>G.name)}function Gj(f,J){let Y=Math.max(1,f.rows-(J.status?.trim()==="on"?1:0));return["-x",`${f.columns}`,"-y",`${Y}`]}async function Xj(f,J,Y={}){if(!J)return;let{code:z,stdout:G}=await d0(["list-clients","-t",`=${f}`,"-F",SR]);if(z!==0)return;let X=N5(k5(G),f,J,Y),q=[];if(Y.currentClientName)q.push(["refresh-client","-f","!ignore-size","-t",Y.currentClientName]);for(let Q of X)q.push(["refresh-client","-f","ignore-size","-t",Q]);if(q.length>0)await Pf(q)}async function aq(f){NY(f,"resize");let J=zj();await Xj(f,J);let Y=J?["-x",`${J.columns}`,"-y",`${J.rows}`]:[];if(Y.length>0)await h0(["resize-window","-t",`=${f}`,...Y]);await QG(f)}async function IR(){let{code:f,stdout:J}=await d0(["display-message","-p","#{client_name}\t#{client_width}\t#{client_height}\t#{status}"]);if(f!==0)return{sizeArgs:[],clientSize:null,clientName:void 0};let[Y,z,G,X]=J.trim().split("\t"),q=bY(z),Q=bY(G),H=q&&Q?{columns:q,rows:Q}:null;return{sizeArgs:H?Gj(H,{status:X}):[],clientSize:H,clientName:Y?.trim()||void 0}}async function $q(f){NY(f,"resize");let J=await IR();await Xj(f,J.clientSize,{currentClientName:J.clientName});let Y=J.sizeArgs;if(Y.length>0)await h0(["resize-window","-t",`=${f}`,...Y]);await QG(f)}async function TR(f,J){if(!J.size)return;NY(f,"resize"),await Xj(f,J.size,{currentClientName:J.clientName});let Y=Gj(J.size,{status:J.status}),{commands:z}=await lB(f,{force:!0});await Pf([["resize-window","-t",`=${f}`,...Y],...z])}function y5(f,J,Y){let z=`#{?window_zoomed_flag,1,#{?${uR[J]},,1}}`;if(Y)return["bind-key","-n",f,"if-shell","-F",z,`select-pane ${J}`,Y];return["bind-key","-n",f,"if-shell","-F",z,`select-pane ${J}`]}async function SY(f){let J=Yj.get(f.name);if(J)return J;let Y=wR(f);Yj.set(f.name,Y);try{return await Y}finally{Yj.delete(f.name)}}function b5(f){let J="",Y="",z=!1,G=new Set;for(let X of f.split(`
70
+ `)){let[q,Q,H,B,V]=X.split("\t");if(!q?.trim())continue;if(G.add(q.trim()),!J&&B?.trim())J=B.trim();if(!Y&&V?.trim())Y=V.trim();if(Q?.trim()==="1"&&H?.trim()==="claude")z=!0}return{worktree:J,vendor:Y,claudePaneAlive:z,windowCount:G.size}}async function xR(f){if(!await Hf(f))return null;let{code:J,stdout:Y}=await d0(["list-panes","-s","-t",`=${f}`,"-F",ER]);if(J!==0)return{worktree:"",vendor:"",claudePaneAlive:!1,windowCount:0};return b5(Y)}async function wR(f){let J=f.launchInit,Y=await xR(f.name),z=m7(Y,{cwd:f.cwd,vendor:f.vendor,hasEngineCommand:f.command.length>0}),G=QV(f.repo);if(z.kind==="reuse")return await QG(f.name,{cwd:f.cwd,taskId:f.taskId,vendor:f.vendor}),!0;if(z.kind==="respawn-engine"){if(await J5(f.name,f.cwd,f.command,G,f.vendor)){if(f.vendor)await LY(f.name,"@kobe_vendor",f.vendor);return await QG(f.name,{cwd:f.cwd,taskId:f.taskId,vendor:f.vendor,vendorChanged:!0}),!0}}if(z.kind==="rebuild"||z.kind==="respawn-engine")await l1(f.name);let X=Cf(),q=rz(f.command,f.vendor),Q=f.repo!==void 0&&f.cwd===f.repo,H=Q||G?void 0:f.taskId,B=Q&&!G?f.taskId:void 0,V=Gq(zq(q.argv,f.vendor,H),f.vendor,B),j=dz(g1(V),G,f.cwd),L=(await d0(["new-session","-d","-s",f.name,"-c",If(f.cwd),...C5(),"-P","-F","#{pane_id}",QW(j,{initScript:G?void 0:J?.initScript,markerPath:!G&&J?.initScript?B9(f.cwd):void 0})])).stdout.trim();if(!L)return console.error("[kobe tmux] new-session returned no pane id; session creation failed"),!1;if(q.sessionId)await FY(L,yJ,q.sessionId);await Pf([...f.taskId?[["set-option","-t",f.name,"@kobe_task",f.taskId]]:[],["set-option","-t",f.name,"@kobe_worktree",f.cwd],...f.vendor?[["set-option","-t",f.name,"@kobe_vendor",f.vendor]]:[],...G?[["set-option","-t",f.name,fX,G]]:[]]),await fj(L,{cwd:f.cwd,taskId:f.taskId,opsCommand:f.opsCommand,inv:X,vendor:f.vendor});let O=_f(),M=X.map(Xf).join(" "),R=`${O}${M} new-chattab --session '#{session_name}'`,S=`${R} --vendor '%%'`,a=`run-shell ${Xf(S)}`,N=`${O}${M} focus-tasks --session '#{session_name}' --window '#{window_id}'`,g=`run-shell ${Xf(N)}`,C=(H0)=>`${O}${M} layout --session '#{session_name}' --window '#{window_id}' --action ${H0}`,y=C("tasks-restore"),_=`run-shell ${Xf(y)}`,z0=C("chat-tab-close"),t=`run-shell ${Xf(z0)}`,Y0=`${O}${M} heal-layout --session '#{session_name}'`,T=`run-shell -b ${Xf(Y0)}`,Q0=`${O}${M} resync-window --session '#{session_name}' --client '#{client_name}' --cols '#{client_width}' --rows '#{client_height}' --status '#{status}'`,p=`run-shell -b ${Xf(Q0)}`,D0=`${O}${M} capture-layout --session '#{session_name}'`,g0=`run-shell -b ${Xf(D0)}`,$=jW({tmuxSocket:qJ}),E=Aq(),f0=x7.map((H0)=>["unbind-key","-n",H0]);if(E.overridden.has(SJ))for(let H0 of kY){let y0=Az(H0);if("key"in y0)f0.push(["unbind-key","-n",y0.key])}for(let H0 of E.overridden){if(H0===SJ)continue;let y0=Oz[H0],w0=XG(H0),T0=Az(y0,{allowBare:w0});if("key"in T0)f0.push(w0?["unbind-key",T0.key]:["unbind-key","-n",T0.key])}let I=["-L","-D","-U","-R"],G0=E.focus.flatMap((H0,y0)=>{let w0=I[y0],T0=w0==="-L"?_:void 0;return H0&&w0?[y5(H0.key,w0,T0)]:[]}),x=E.binds,c=(H0,y0)=>{let w0=x[H0];return w0?[["bind-key",w0.key,"run-shell",C(y0)]]:[]},Z0=(...H0)=>{let y0=H0.map((w0)=>x[w0]?.chord).filter((w0)=>!!w0);return y0.length>0?y0.join("/"):null};await Pf([["set-option","-g","status","on"],["set-window-option","-g","aggressive-resize","on"],["set-option","-g","monitor-activity","on"],["set-option","-g","visual-activity","off"],["set-option","-g","window-status-format",LX],["set-option","-g","window-status-current-format",mq],["set-option","-g","status-right",vq({focusLeft:E.focus[0]?.key??null,detach:x["tmux.detach"]?.key??null,newTab:x["tmux.tab.new"]?.key??null,layoutSplits:Z0("tmux.layout.workspaceSplit","tmux.layout.workspaceClose","tmux.layout.workspaceReset"),layoutPanes:Z0("tmux.layout.tasksToggle","tmux.layout.opsToggle","tmux.layout.terminalToggle","tmux.layout.zenToggle")})],["set-option","-g","mouse","on"],["set-hook","-g","window-resized",T],["set-hook","-g","client-resized",p],["set-hook","-g","window-layout-changed",g0],...f0,...x["tmux.detach"]?[["bind-key","-n",x["tmux.detach"].key,"if-shell","-F",`#{?#{${A1}},1,#{==:#{@kobe_role},tasks}}`,"detach-client",g]]:[],...G0,...x["tmux.tab.new"]?[["bind-key","-n",x["tmux.tab.new"].key,"run-shell",R]]:[],...x["tmux.tab.chooseEngine"]?Pq(x["tmux.tab.chooseEngine"].key).map((H0)=>[...H0,a]):[],...x["tmux.tab.prev"]&&x["tmux.tab.next"]?xq(x["tmux.tab.prev"].key,x["tmux.tab.next"].key):x["tmux.tab.prev"]?[["bind-key","-n",x["tmux.tab.prev"].key,"previous-window"]]:x["tmux.tab.next"]?[["bind-key","-n",x["tmux.tab.next"].key,"next-window"]]:[],...x["tmux.tab.close"]?[wq(x["tmux.tab.close"].key,t)]:[],...x["tmux.tab.rename"]?[hq(x["tmux.tab.rename"].key)]:[],...c("tmux.layout.workspaceSplit","workspace-split"),...c("tmux.layout.workspaceClose","workspace-close"),...c("tmux.layout.workspaceReset","workspace-reset"),...c("tmux.layout.tasksToggle","tasks-toggle"),...c("tmux.layout.opsToggle","ops-toggle"),...c("tmux.layout.terminalToggle","terminal-toggle"),...c("tmux.layout.zenToggle","zen-toggle"),["bind-key","f","run-shell",`${O}${M} quick-create --session '#{session_name}'`],["bind-key","u","display-popup","-E",$]]),await gz(),await h0(["select-pane","-t",L]);let V0=J?.firstMessage;if(V0)v7(f.name,V0).catch((H0)=>console.error("[kobe tmux] first message delivery failed:",H0));return!0}async function R5(f,J,Y){let z=Y?.trim()||`=${f}`,{code:G,stdout:X}=await d0(["list-panes","-t",z,"-F","#{pane_id}\t#{@kobe_role}"]);if(G!==0)return"";for(let q of X.split(`
71
+ `)){let[Q,H]=q.split("\t");if(Q?.trim()&&H?.trim()===J)return Q.trim()}return""}async function hR(f,J={}){if(!await Hf(f))return"";let Y=await R5(f,"tasks",J.windowId);if(!Y)await Tq(f,"tasks-restore",{windowId:J.windowId}),Y=await R5(f,"tasks",J.windowId);if(!Y)return"";return await h0(["select-pane","-t",Y]),Y}var SR="#{client_name}\t#{client_session}\t#{client_width}\t#{client_height}\t#{client_flags}",uR,Yj,ER="#{window_id}\t#{window_active}\t#{@kobe_role}\t#{@kobe_worktree}\t#{@kobe_vendor}";var Y1=k(()=>{lJ();x1();lf();ZJ();Tf();gq();Rq();zJ();yq();Jj();Qz();uq();qG();DX();Tf();Jj();DX();uq();uR={"-L":"pane_at_left","-D":"pane_at_bottom","-U":"pane_at_top","-R":"pane_at_right"};Yj=new Map});async function PR(f,J){let{task:Y}=await f.request("task.get",{taskId:J});return Y}async function Zj(f,J){let Y=await PR(f,J);if(Y.worktreePath)return{task:Y,worktreePath:Y.worktreePath};let{worktreePath:z}=await f.request("task.ensureWorktree",{taskId:J});if(!z)throw Error(`task ${J} has no worktree`);return{task:Y,worktreePath:z}}async function S5(f,J){let{task:Y,worktreePath:z}=await Zj(f,J),G=Lf(J);if(!await Hf(G)){let X=sJ(Y.repo??"",z,{kind:"repo-init"});if(!await SY({name:G,cwd:z,command:b1(Y.vendor,Y.modelEffort),taskId:J,vendor:Y.vendor,launchInit:X}))throw Error(`failed to start tmux session for ${J}`)}return{session:G,worktreePath:z}}function vR(f){return AZ(f,{bareSafe:!0})}async function I5(f,J){let{task:Y,worktreePath:z}=await Zj(f,J),G=Y.kind==="main"?void 0:J,X=Y.kind==="main"?J:void 0,q=[...Gq(zq(b1(Y.vendor,Y.modelEffort),Y.vendor,G),Y.vendor,X)],Q=sJ(Y.repo??"",z,{kind:"none"}),H=vR(q),B=Q.initScript?.trim()?`${Q.initScript}
72
+ ${H}`:H,V=process.env.SHELL?.trim()||"/bin/zsh";return{cwd:z,command:[V,"-ilc",B]}}async function T5(f,J){let{worktreePath:Y}=await Zj(f,J),z=process.env.SHELL?.trim()||"/bin/zsh";return{cwd:Y,command:[z,"-il"]}}async function u5(f){let J=Lf(f);await bJ(J).catch(()=>{}),await l1(J).catch(()=>{})}var E5=k(()=>{x1();DH();zG();Tf();Y1()});import{existsSync as mR}from"fs";import{join as x5,normalize as P5}from"path";function cR(f){let J=null,Y=null,z=new TextEncoder,G=new ReadableStream({start(X){J=f((Q,H)=>{try{X.enqueue(z.encode(`event: ${Q}
75
73
  data: ${JSON.stringify(H)}
76
74
 
77
75
  `))}catch{}}),Y=setInterval(()=>{try{X.enqueue(z.encode(`: ping
78
76
 
79
- `))}catch{}},15000)},cancel(){if(Y)clearInterval(Y);J?.()}});return new Response(G,{headers:{"content-type":"text/event-stream","cache-control":"no-cache, no-transform",connection:"keep-alive"}})}async function z2(f,J,Y){try{let{name:z,payload:G}=await f.json();if(!z)return Response.json({error:"missing rpc name"},{status:400});if(!x7.has(z))return Response.json({error:`rpc ${z} is not exposed to the web UI`},{status:403});let X=await J.request(z,G),q=G?.taskId;if(typeof q==="string"){let Q=z==="task.archive"&&G.archived!==!1;if(z==="task.delete"||Q)Y(q)}return Response.json({result:X})}catch(z){let G=z instanceof Error&&z.name!=="Error"?z.name:void 0;return Response.json({error:z instanceof Error?z.message:String(z),...G?{name:G}:{}},{status:500})}}async function G2(){try{let J=(await lJ()).map((Y)=>({id:Y,label:Vz(Y),effortLevels:pf(Y).effortLevels}));return Response.json({engines:J.length>0?J:[{id:"claude",label:"Claude"}]})}catch(f){return Response.json({error:f instanceof Error?f.message:String(f)},{status:500})}}function X2(){return Response.json({api:Kz()})}function Z2(){return Response.json({projects:c1()})}function uY(f,J=""){return typeof f==="string"?f:J}function q2(f,J){return typeof f==="boolean"?f:J}function s5(f){let J=f.customEngineIds;if(!Array.isArray(J))return[];return J.filter((Y)=>typeof Y==="string"&&o5.test(Y)&&!Q1(Y))}function Q2(f){return f.split(/[-_]+/).filter(Boolean).map((J)=>`${J.slice(0,1).toUpperCase()}${J.slice(1)}`).join(" ")}function H2(f,J){return uY(f[WJ(J)]).trim()||Vz(J)}function B2(f,J){return uY(f[jJ(J)]).trim()||BX(J).join(" ")}function t5(){let f=nf(),J=s5(f),Y=[...dY,...J],z=uY(f.lastSelectedVendor,"claude"),G=uY(f.focusAccent,"primary");return Response.json({activeTheme:uY(f.activeTheme,"claude"),transparentBackground:q2(f.transparentBackground,!1),focusAccent:_5.includes(G)?G:"primary",notificationsToast:f["notifications.toast.enabled"]!==!1,notificationsSound:f["notifications.sound.enabled"]!==!1,settingsSurface:Lz(f[oJ]??Dz),editorKind:_z(f[_J]??Zq),editorCustomCommand:uY(f[kY]),remoteProjects:f["experimental.remoteProjects"]===!0,autoStatus:f[jz]===!0,dispatcher:f[Wz]===!0,defaultEngine:z,engines:Y.map((X)=>({id:X,label:H2(f,X),command:B2(f,X),isBuiltin:Q1(X),isCustom:!Q1(X),isDefault:X===z}))})}function FX(f,J,Y){if(typeof Y==="string")f[J]=Y.trim()}function jG(f,J,Y){if(typeof Y==="boolean")f[J]=Y}async function j2(f){try{let J=await f.json(),Y={};if(FX(Y,"activeTheme",J.activeTheme),jG(Y,"transparentBackground",J.transparentBackground),_5.includes(J.focusAccent))Y.focusAccent=J.focusAccent;if(jG(Y,"notifications.toast.enabled",J.notificationsToast),jG(Y,"notifications.sound.enabled",J.notificationsSound),J.settingsSurface==="chattab"||J.settingsSurface==="taskpanel")Y[oJ]=J.settingsSurface;if(Uz.includes(J.editorKind))Y[_J]=J.editorKind;FX(Y,kY,J.editorCustomCommand),jG(Y,"experimental.remoteProjects",J.remoteProjects),jG(Y,jz,J.autoStatus),jG(Y,Wz,J.dispatcher),FX(Y,"lastSelectedVendor",J.defaultEngine);let z=nf(),G=s5(z),X=new Set([...dY,...G]),q=Array.isArray(J.engineUpdates)?J.engineUpdates:[];for(let Q of q){if(!Q||typeof Q!=="object")continue;let H=Q;if(typeof H.id!=="string"||!X.has(H.id))continue;FX(Y,jJ(H.id),H.command),FX(Y,WJ(H.id),H.label)}if(J.addEngine&&typeof J.addEngine==="object"){let Q=J.addEngine,H=typeof Q.id==="string"?Q.id.trim().toLowerCase():"";if(!o5.test(H)||Q1(H)||X.has(H))return Response.json({error:"invalid or duplicate engine id"},{status:400});Y.customEngineIds=[...G,H],Y[jJ(H)]=uY(Q.command).trim();let B=uY(Q.label).trim();Y[WJ(H)]=B&&B!==H?B:Q2(H)}if(typeof J.removeEngine==="string"){let Q=J.removeEngine;if(!Q1(Q)){if(Y.customEngineIds=G.filter((H)=>H!==Q),Y[jJ(Q)]=void 0,Y[WJ(Q)]=void 0,z.lastSelectedVendor===Q)Y.lastSelectedVendor="claude"}}if(Object.keys(Y).length>0)rY(Y);return t5()}catch(J){return Response.json({error:J instanceof Error?J.message:String(J)},{status:400})}}async function W2(f,J){try{let{taskId:Y}=await f.json();if(!Y)return Response.json({error:"missing taskId"},{status:400});return Response.json(await v5(J,Y))}catch(Y){return Response.json({error:Y instanceof Error?Y.message:String(Y)},{status:500})}}async function l5(f,J,Y){try{let z=f.searchParams.get("taskId");if(!z)return Response.json({error:"missing taskId"},{status:400});return Response.json(await Y(J,z))}catch(z){return Response.json({error:z instanceof Error?z.message:String(z)},{status:500})}}function e5(){return Response.json({review:kf(rq.review)??null,pr:kf(rq.pr)??null})}async function V2(f){try{let J=await f.json();if(typeof J.review==="string")af(rq.review,J.review);if(typeof J.pr==="string")af(rq.pr,J.pr);return e5()}catch(J){return Response.json({error:J instanceof Error?J.message:String(J)},{status:400})}}async function K2(f,J){let z=$5(i5(J,f==="/"?"/index.html":f));if(!z.startsWith(J))return new Response("forbidden",{status:403});let G=Bun.file(J2(z)?z:i5(J,"index.html"));if(!await G.exists())return new Response("kobe web assets not built \u2014 run `bun --filter kobe-web build`",{status:503});return new Response(G)}function U2(f){let{link:J,sseSends:Y,staticDir:z}=f,G=f.tearDownSession??((X)=>void n5(X));return async function(q){let Q=new URL(q.url);if(Q.pathname===p5)return new Response(r5);if(!T7(q.headers.get("origin"),{allowedHost:f.allowedHost}))return new Response("forbidden: cross-origin request rejected",{status:403});if(Q.pathname==="/events")return Y2((O)=>{let M=f.onSseOpen?.()??(()=>{});return O("snapshot",J.snapshot()),Y.add(O),()=>{Y.delete(O),M()}});if(Q.pathname==="/api/rpc"&&q.method==="POST")return z2(q,J,G);if(Q.pathname==="/api/session"&&q.method==="POST")return W2(q,J);if(Q.pathname==="/api/engine-spec"&&q.method==="GET")return l5(Q,J,m5);if(Q.pathname==="/api/terminal-spec"&&q.method==="GET")return l5(Q,J,c5);if(Q.pathname==="/api/engines"&&q.method==="GET")return G2();if(Q.pathname==="/api/cli-invocation"&&q.method==="GET")return X2();if(Q.pathname==="/api/projects"&&q.method==="GET")return Z2();if(Q.pathname==="/api/settings"&&q.method==="GET")return t5();if(Q.pathname==="/api/settings"&&q.method==="PATCH")return j2(q);if(Q.pathname==="/api/quick-prompts"&&q.method==="GET")return e5();if(Q.pathname==="/api/quick-prompts"&&q.method==="PUT")return V2(q);let H=await F7(q,Q);if(H)return H;let B=await H7(q,Q);if(B)return B;let V=await V7(q,Q);if(V)return V;let j=await b7(q,Q,J);if(j)return j;let U=await C7(q,Q);if(U)return U;let L=A7(q,Q);if(L)return L;if(z)return K2(Q.pathname,z);return new Response("not found",{status:404})}}function Rz(f,J){let Y=f.snapshot().find((z)=>z.channel===J);return Y?Y.payload:null}function qj(f){return f.length>1?f.replace(/\/+$/,""):f}function D2(f,J){let Y=qj(J),z=new Set([J]);for(let G of f){let X=qj(G.repo),q=qj(G.worktreePath);if(X===Y||q===Y){if(G.repo)z.add(G.repo);if(G.worktreePath)z.add(G.worktreePath)}}return[...z]}function fK(f){let J=QX();return{async request(Y,z){return await qX(J,Y,z,f.ctx(0))},snapshot(){let Y=f.orch.listTasks().map(zJ),z={},G=Rz(f.bus,"issue.snapshot");if(G)for(let Q of D2(Y,G.repoRoot))z[Q]={...G,repoRoot:Q};let X=Rz(f.bus,"task.jobs"),q=X?.phase==="running"?{[X.taskId]:X}:{};return{tasks:Y,activeTaskId:Rz(f.bus,"active-task")?.taskId??null,engineStates:f.activity.snapshotByTask(),update:Rz(f.bus,"update")?.info??null,jobs:q,worktreeChanges:Rz(f.bus,"worktree.changes")?.changes??{},issueSnapshots:z,deliver:Rz(f.bus,"session.deliver"),uiPrefs:Rz(f.bus,"ui-prefs"),connected:!0}}}}async function a5(f){try{let J=Bun.spawn(["lsof","-nP",`-iTCP:${f}`,"-sTCP:LISTEN","-t"],{stdout:"pipe",stderr:"ignore"});return(await new Response(J.stdout).text()).split(`
80
- `).map((z)=>Number.parseInt(z.trim(),10)).filter((z)=>Number.isFinite(z)&&z!==process.pid)}catch{return[]}}async function L2(f,J=p5){let Y;try{Y=(await(await fetch(`http://localhost:${f}${J}`,{signal:AbortSignal.timeout(800)})).text()).trim()}catch{return}if(Y!==r5)throw Error(`port ${f} is in use by a non-kobe service; refusing to replace it`);let z=await a5(f);for(let X of z)try{process.kill(X,"SIGTERM")}catch{}let G=Date.now()+2000;while(Date.now()<G){if((await a5(f)).length===0)return;await new Promise((X)=>setTimeout(X,100))}}async function JK(f){if(f.takeover!==!1)await L2(f.port);let J=new Set,Y=f.onEvent((Q)=>{for(let H of J)H("channel",Q)}),z=f.hostname?.trim()||process.env.KOBE_WEB_HOST?.trim()||"127.0.0.1",G=u7(z),X=U2({link:f.link,sseSends:J,staticDir:f.staticDir?$5(f.staticDir):void 0,allowedHost:G,onSseOpen:f.onSseOpen}),q=Bun.serve({port:f.port,hostname:z,idleTimeout:0,fetch:X});return{port:q.port??f.port,hostname:z,close(){Y(),q.stop(!0)}}}var r5="kobe-web",p5="/__kobe_web",_5,o5,rq;var YK=k(()=>{fz();E1();MY();ZX();zq();Of();pY();qq();U1();B7();K7();O7();g7();oZ();sY();k7();E7();w7();d5();_5=["primary","success","info"],o5=/^[a-z][a-z0-9_-]{0,47}$/;rq={review:"boardPrompt.review",pr:"boardPrompt.pr"}});var zK={};jf(zK,{sameWorktreeChanges:()=>IJ,readWorktreeChanges:()=>F2,pickPushedChanges:()=>_q,parsePorcelain:()=>WG});import{spawnSync as M2}from"child_process";function IJ(f,J){return f.added===J.added&&f.deleted===J.deleted}function _q(f,J){if(!f)return null;return f.get(J)??pq}function F2(f){if(!f)return pq;try{let J=M2("git",["status","--porcelain=v1"],{cwd:f,encoding:"utf8",stdio:["ignore","pipe","pipe"],env:x1()});if(J.status!==0||!J.stdout)return pq;return WG(J.stdout)}catch{return pq}}function WG(f){let J=0,Y=0;for(let z of f.split(`
81
- `)){if(!z||z.startsWith("##"))continue;let G=z.charAt(0),X=z.charAt(1);if(G==="D"||X==="D")Y+=1;else J+=1}return{added:J,deleted:Y}}var pq;var VG=k(()=>{NY();pq={added:0,deleted:0}});async function R2(f,J){let Y=await BJ("git",["status","--porcelain=v1"],{cwd:f,env:x1(),signal:J});if(Y.status!==0)throw Error("git status failed");return WG(Y.stdout)}function C2(f){let J=new Set;for(let Y of f){if(Y.archived)continue;if(!Y.worktreePath)continue;if(H1(Y.repo)||H1(Y.worktreePath))continue;J.add(Y.worktreePath)}return J}class GK{orch;bus;options;entries=new Map;stopped=!1;constructor(f,J,Y={}){this.orch=f;this.bus=J;this.options=Y}tick(){if(this.stopped)return;if(this.options.hasSubscribers&&!this.options.hasSubscribers())return;try{let f=C2(this.orch.listTasks()),J=!1;for(let Y of this.entries.keys()){if(f.has(Y))continue;if(this.entries.get(Y)?.value)J=!0;this.entries.delete(Y)}if(J)this.publish();for(let Y of f)this.maybeCollect(Y)}catch(f){uf("worktree-changes",f)}}stop(){this.stopped=!0}maybeCollect(f){let J=this.entries.get(f);if(!J)J={inFlight:!1,nextAllowedAt:0},this.entries.set(f,J);let Y=this.options.cadence??{timeoutMs:O2,slowRetryMs:A2,minIntervalMs:g2},z=this.options.run??R2;Jq(J,Y,(G)=>z(f,G),(G)=>{if(this.stopped)return;if(this.entries.get(f)!==J)return;if(J.value&&IJ(J.value,G))return;J.value=G,this.publish()})}publish(){let f={};for(let[J,Y]of this.entries)if(Y.value)f[J]=Y.value;this.bus.publish("worktree.changes",{changes:f})}}function XK(f,J,Y=Qj,z){if(Y<=0)return()=>{};let G=new GK(f,J,{hasSubscribers:z});G.tick();let X=setInterval(()=>G.tick(),Y);return X.unref?.(),()=>{clearInterval(X),G.stop()}}var Qj=2000,O2=4000,A2=60000,g2=1500;var ZK=k(()=>{NY();HX();Of();VG()});import{mkdir as qK,readFile as k2,unlink as Hj,writeFile as N2}from"fs/promises";import{createServer as y2}from"net";import{dirname as QK}from"path";import{StringDecoder as b2}from"string_decoder";function I2(){let f=process.env.KOBE_DAEMON_IDLE_GRACE_MS;if(f===void 0)return HK;let J=Number(f);return Number.isFinite(J)&&J>=0?J:HK}async function jK(f,J={}){let Y=J.socketPath??CJ(J.homeDir),z=J.pidPath??dJ(J.homeDir),G=J.startedAt??new Date,X=new Set,q=new Set,Q=1,H=new gB({clients:function*(){yield*X,yield*q},idleGraceMs:I2(),onIdleStop:()=>void Y0().catch(($)=>uf("daemon-idle-shutdown",$))}),B=new ZB;B.onPublish(($)=>{BK(X,{type:"event",name:$.channel,payload:$.payload})});let V=new CH(B),j=new eZ(tZ(J.homeDir));await qK(QK(Y),{recursive:!0}),await qK(QK(z),{recursive:!0}),await Hj(Y).catch(()=>{});let U=y2(($)=>{let E={id:Q++,connectedAt:new Date,socket:$,buffer:"",subscribed:!1,holdsLifetime:!1,channels:null};X.add(E);let f0=new b2("utf8");$.on("data",(I)=>{E.buffer+=f0.write(I),g0(E)}),$.on("error",()=>{}),$.on("close",()=>{if(X.delete(E),E.subscribed)gY("conn",`client #${E.id} (${E.holdsLifetime?"gui":"pane"}) disconnected \u2014 ${X.size} client(s), ${H.guiCount()} gui left`);H.clientDisconnected(E.holdsLifetime)})}),L=f.subscribeTasks(($)=>{B.publish("task.snapshot",{tasks:$.map(zJ)})}),O=J.checkUpdate??wG,M=J.updatePollMs??S2,R=()=>{O().then(($)=>B.publish("update",{info:$})).catch(($)=>uf("update-poller",$))},S=null;if(M>0)R(),S=setInterval(R,M),S.unref?.();let a=J.autoTitlePollMs??XB,N=cV(f,a,()=>H.hasSubscribers()),g=G7(B,{statePath:NB(J.homeDir),debounceMs:J.uiPrefsDebounceMs??kB}),C=tV(B,{path:AB(J.homeDir),debounceMs:J.keybindingsDebounceMs??OB}),y=XK(f,B,J.worktreeChangesTickMs??Qj,()=>H.hasSubscribers()),_=J7(f,J.prStatusPollMs??Yq,()=>H.hasSubscribers()),z0=null,t={socketPath:Y,pidPath:z,startedAt:G,get webPort(){return z0?.port},clients:X,async close(){if(H.markStopping(),L(),z0?.close(),z0=null,S)clearInterval(S);N(),_(),g(),C(),y(),V.close(),BK(X,{type:"event",name:"daemon.stopping",payload:{}});for(let $ of Array.from(X))$.socket.destroy();await new Promise(($)=>U.close(()=>$())),await Hj(Y).catch(()=>{}),await Hj(z).catch(()=>{})}};await new Promise(($,E)=>{let f0=U;f0.once("error",E),U.listen(Y,()=>{f0.removeListener("error",E),$()})}),await N2(z,`${process.pid}
82
- `,"utf8");async function Y0(){if(H.isStopping())return;H.markStopping(),await J.onStop?.(),setTimeout(()=>{t.close().catch(($)=>uf("daemon-shutdown",$))},0).unref()}let T=QX();function Q0($){return{orch:f,bus:B,activity:V,issues:j,daemon:{startedAt:G,socketPath:Y,webPort:z0?.port,pid:process.pid,guiCount:()=>H.guiCount(),stopSoon:Y0},clientId:$}}if(J.webPort!==void 0){let $=fK({orch:f,bus:B,activity:V,ctx:Q0});z0=await JK({port:J.webPort,hostname:J.webHost,staticDir:J.webStaticDir,link:$,onEvent:(E)=>B.onPublish(E),onSseOpen:()=>{let E={subscribed:!0,holdsLifetime:!0};return q.add(E),H.guiAttached(),gY("conn",`web client subscribed \u2014 ${X.size+q.size} client(s), ${H.guiCount()} gui`),()=>{q.delete(E),gY("conn",`web client disconnected \u2014 ${X.size+q.size} client(s), ${H.guiCount()} gui left`),H.clientDisconnected(!0)}}}),gY("web",`daemon web transport listening on http://${z0.hostname}:${z0.port}`)}async function p($,E){if($.name==="subscribe"){let f0=jB($.payload),I=E.subscribed;E.subscribed=!0;let G0=f0.role==="gui"?"gui":"pane";E.holdsLifetime=G0==="gui",E.channels=gW(f0.channels);let x=!I;if(E.holdsLifetime)H.guiAttached();gY("conn",`client #${E.id} subscribed as ${G0}${E.channels?` [${[...E.channels].join(",")}]`:""} \u2014 ${X.size} client(s), ${H.guiCount()} gui${x?" (collectors resume)":""}`);for(let c of B.snapshot()){if(E.channels&&!E.channels.has(c.channel))continue;OX(E,{type:"event",name:c.channel,payload:c.payload})}if(!E.channels||E.channels.has("engine-state"))for(let c of V.currentNonIdle())OX(E,{type:"event",name:"engine-state",payload:c});return{}}return qX(T,$.name,$.payload,Q0(E.id))}async function D0($,E){try{let f0=await p($,E);OX(E,{type:"response",id:$.id,name:$.name,payload:f0})}catch(f0){OX(E,{type:"response",id:$.id,name:$.name,error:BB(f0)})}}function g0($){let E=$.buffer.indexOf(`
83
- `);while(E!==-1){let f0=$.buffer.slice(0,E);if($.buffer=$.buffer.slice(E+1),f0.trim().length>0)try{let I=JSON.parse(f0);if(I.type!=="request")throw Error("daemon only accepts request frames from clients");D0(I,$)}catch(I){OX($,{type:"response",id:"parse-error",error:{message:I instanceof Error?I.message:String(I)}})}E=$.buffer.indexOf(`
84
- `)}}return t}async function KG(f){try{let J=await k2(f,"utf8"),Y=Number(J.trim());return Number.isFinite(Y)?Y:null}catch{return null}}function OX(f,J){f.socket.write(aG(J))}function BK(f,J){let Y=J.type==="event"&&J.name!=="daemon.stopping"?J.name:null,z=null;for(let G of f){if(!G.subscribed&&J.type==="event")continue;if(Y&&G.channels&&!G.channels.has(Y))continue;z??=aG(J),G.socket.write(z)}}var S2=21600000,HK=3000;var oq=k(()=>{D1();uW();nV();oZ();MB();eV();f7();mz();Y7();sY();X7();YK();ZK();oZ();MB()});import{unlink as WK}from"fs/promises";function T2(f){try{return process.kill(f,0),!0}catch(J){return J.code==="EPERM"}}async function UG(f,J){let Y=await KG(J),z=Y!==null&&Y!==process.pid?Y:null,G=z!==null&&T2(z),X=G?"graceful":"absent",q=new d1(f),Q=q.request("daemon.stop").catch(()=>{return}),H=new Promise((B)=>setTimeout(B,2000));if(await Promise.race([Q,H]),q.close(),G&&z!==null){let B=Date.now()+5000,V=!1;while(Date.now()<B){try{process.kill(z,0)}catch{break}if(!V&&Date.now()-(B-5000)>2000){try{process.kill(z,"SIGTERM")}catch{}X="sigterm",V=!0}await new Promise((j)=>setTimeout(j,50))}try{process.kill(z,0),process.kill(z,"SIGKILL"),X="sigkill",await new Promise((j)=>setTimeout(j,100))}catch{}}return await WK(f).catch(()=>{}),await WK(J).catch(()=>{}),{pid:Y,method:X}}var sq=k(()=>{$G();oq()});var Jj={};jf(Jj,{testDaemonResponds:()=>tq,ensureDaemonReachable:()=>DG,connectOrStartDaemon:()=>UJ,connectIfRunning:()=>p1});import{spawn as u2}from"child_process";import{closeSync as E2,existsSync as x2,mkdirSync as w2,openSync as h2}from"fs";import{dirname as VK,resolve as Bj}from"path";import{fileURLToPath as P2}from"url";function c2(f,J,Y,z){let G="ignore",X;try{w2(VK(z),{recursive:!0}),X=h2(z,"a"),G=["ignore",X,X]}catch{G="ignore"}if(u2(f,[...J],{detached:!0,stdio:G,env:Y}).unref(),X!==void 0)try{E2(X)}catch{}}async function DG(){let f=CJ();if(await tq(f))return f;await UG(f,dJ()).catch(()=>{});let[J,...Y]=n2(v2);c2(J,Y,process.env,CZ());let z=Date.now()+5000;while(Date.now()<z){if(await tq(f))return f;await new Promise((G)=>setTimeout(G,100))}throw Error(`kobe: daemon did not start (or stayed wedged) at ${f}`)}async function UJ(){let f=await DG(),J=new d1(f);return await J.connect(),J}async function p1(){let f=CJ();if(!await tq(f))return null;let J=new d1(f);return await J.connect(),J}async function tq(f,J=m2){let Y=new d1(f);try{await Y.connect()}catch{return Y.close(),!1}let z=Y.request("hello",{protocolVersion:n1}).then(()=>!0).catch(()=>!0),G,X=new Promise((Q)=>{G=setTimeout(()=>Q(!1),J)}),q=await Promise.race([z,X]);if(G)clearTimeout(G);return Y.close(),q}function n2(f){let J=P2(import.meta.url);if(J.startsWith("/$bunfs")||J.startsWith("B:\\~BUN"))return[process.execPath,...f];let Y=VK(J),z=[Bj(Y,"../cli/index.ts"),Bj(Y,"../../../kobe/src/cli/index.ts"),Bj(Y,"../cli/index.js")],G=z.find((X)=>x2(X));if(G)return[process.execPath,G,...f];throw Error(`kobe: could not locate kobe entry near ${Y}; checked ${z.join(", ")}`)}var v2,m2=3000;var y1=k(()=>{sq();mz();sY();$G();v2=["daemon","start"]});var LK={};jf(LK,{runExportSubcommand:()=>r2,renderExport:()=>DK});function d2(f){return{id:f.id,title:f.title,status:f.status,archived:String(f.archived),vendor:f.vendor??Sf,branch:f.branch,repo:f.repo,worktreePath:f.worktreePath}}function jj(f){process.stderr.write(`kobe export: ${f}
85
-
86
- ${UK}
87
- `),process.exit(2)}function i2(f){let J="json";for(let Y=0;Y<f.length;Y++){let z=f[Y];if(z==="--json")J="json";else if(z==="--csv")J="csv";else if(z==="--format"){let G=f[++Y];if(G===void 0)jj("--format requires a value (json, csv, or table)");J=KK(G)}else if(z.startsWith("--format="))J=KK(z.slice(9));else jj(`unexpected argument "${z}"`)}return J}function KK(f){if(f==="json"||f==="csv"||f==="table")return f;jj(`unknown format "${f}" (expected json, csv, or table)`)}function l2(f){if(/[",\r\n]/.test(f))return`"${f.replace(/"/g,'""')}"`;return f}function a2(f){let J=[AX.join(",")];for(let Y of f)J.push(AX.map((z)=>l2(Y[z])).join(","));return J.join(`
88
- `)}function $2(f){let J={};for(let G of AX)J[G]=Math.max(G.length,...f.map((X)=>X[G].length));let Y=(G)=>AX.map((X)=>G[X].padEnd(J[X])).join(" ").trimEnd(),z={};for(let G of AX)z[G]=G;return[Y(z),...f.map(Y)].join(`
89
- `)}function DK(f,J){let Y=f.map(d2);if(J==="json")return JSON.stringify(Y,null,2);if(J==="csv")return a2(Y);return $2(Y)}async function r2(f){if(f.includes("--help")||f.includes("-h")||f.includes("help")){process.stdout.write(`${UK}
90
- `);return}let J=i2(f),{TaskIndexStore:Y}=await Promise.resolve().then(() => (vG(),zH)),z=new Y;await z.load();let G=z.list();if(G.length===0&&J==="table"){process.stdout.write(`no tasks
91
- `);return}process.stdout.write(`${DK(G,J)}
92
- `)}var UK,AX;var MK=k(()=>{S1();UK=["Usage: kobe export [--json | --csv | --format <json|csv|table>]","","Print the task list (from ~/.kobe/tasks.json) to stdout. Read-only and","daemon-free \u2014 works with the kobe daemon down.","","Options:"," --json JSON array of tasks (default)"," --csv CSV with a header row"," --format <fmt> One of: json, csv, table"," -h, --help Print this help",""].join(`
93
- `),AX=["id","title","status","archived","vendor","branch","repo","worktreePath"]});var AK={};jf(AK,{runRepoSubcommand:()=>s2});import{readFileSync as p2}from"fs";import{resolve as eq}from"path";function EY(f){process.stderr.write(`kobe repo: ${f}
94
-
95
- ${OK}
96
- `),process.exit(2)}function FK(f){try{return p2(eq(process.cwd(),f),"utf8")}catch(J){EY(`cannot read ${f}: ${J instanceof Error?J.message:String(J)}`)}}function _2(f){let J={};for(let Y=0;Y<f.length;Y++){let z=f[Y],G=()=>{let X=f[++Y];if(X===void 0)EY(`${z} requires a value`);return X};if(z==="--init-script")J.initScript=G();else if(z==="--init-script-file")J.initScript=FK(G());else if(z==="--init-prompt")J.initPrompt=G();else if(z==="--init-prompt-file")J.initPrompt=FK(G());else if(z.startsWith("-"))EY(`unknown flag "${z}"`);else if(J.path===void 0)J.path=z;else EY(`unexpected argument "${z}"`)}return J}function o2(f){let J,Y=!1,z=!1;for(let G of f)if(G==="--init-script")Y=!0;else if(G==="--init-prompt")z=!0;else if(G.startsWith("-"))EY(`unknown flag "${G}"`);else if(J===void 0)J=G;else EY(`unexpected argument "${G}"`);if(!Y&&!z)Y=!0,z=!0;return{path:J,clearScript:Y,clearPrompt:z}}async function s2(f){let[J,...Y]=f;if(J===void 0||J==="--help"||J==="-h"||J==="help"){process.stdout.write(`${OK}
97
- `);return}let{getRepoInitOverride:z,setRepoInitOverride:G,resolveRepoRoot:X}=await Promise.resolve().then(() => (Of(),cJ)),{existsSync:q}=await import("fs"),{join:Q}=await import("path");if(J==="show"){let[H]=Y.filter((L)=>!L.startsWith("-")),B=X(eq(process.cwd(),H??".")),V=z(B),j=q(Q(B,".kobe","init.sh")),U=q(Q(B,".kobe","init-prompt.md"));console.log(`repo: ${B}`),console.log(` .kobe/init.sh: ${j?"present (wins)":"absent"}`),console.log(` .kobe/init-prompt.md: ${U?"present (wins)":"absent"}`),console.log(` override initScript: ${V.initScript?LG(V.initScript):"(unset)"}`),console.log(` override initPrompt: ${V.initPrompt?LG(V.initPrompt):"(unset)"}`);return}if(J==="set"){let H=_2(Y);if(H.initScript===void 0&&H.initPrompt===void 0)EY("set needs at least one of --init-script(-file) / --init-prompt(-file)");let B=X(eq(process.cwd(),H.path??".")),V=G(B,{...H.initScript!==void 0?{initScript:H.initScript}:{},...H.initPrompt!==void 0?{initPrompt:H.initPrompt}:{}});console.log(`updated override for ${B}`),console.log(` initScript: ${V.initScript?LG(V.initScript):"(unset)"}`),console.log(` initPrompt: ${V.initPrompt?LG(V.initPrompt):"(unset)"}`);return}if(J==="unset"){let{path:H,clearScript:B,clearPrompt:V}=o2(Y),j=X(eq(process.cwd(),H??".")),U=G(j,{...B?{initScript:""}:{},...V?{initPrompt:""}:{}});console.log(`cleared override for ${j}`),console.log(` initScript: ${U.initScript?LG(U.initScript):"(unset)"}`),console.log(` initPrompt: ${U.initPrompt?LG(U.initPrompt):"(unset)"}`);return}EY(`unknown verb "${J}"`)}function LG(f){let J=f.replace(/\s+/g," ").trim();return J.length>60?`"${J.slice(0,57)}\u2026"`:`"${J}"`}var OK;var gK=k(()=>{OK=["Usage: kobe repo <show|set|unset> [path] [options]","","Manage a repo's per-user init override (state.json fallback for repos","that don't ship .kobe/init.sh / .kobe/init-prompt.md).","","Commands:"," show [path] Print the override + whether the repo ships .kobe/ files"," set [path] <options> Set the init script and/or first prompt"," unset [path] [--init-script] [--init-prompt] Clear one or both (default: both)","","Set options (later wins; *-file reads from disk):"," --init-script <text> Inline shell to run before the engine"," --init-script-file <path> Read the init script from a file"," --init-prompt <text> Inline first prompt for the engine"," --init-prompt-file <path> Read the first prompt from a file",""," path defaults to the current directory (resolved to its git toplevel).",""].join(`
98
- `)});import{spawnSync as t2}from"child_process";function JC(f){let[J,Y]=f.split("/");if(!J||!Y)throw Error(`invalid GitHub repository slug: ${f}`);return{owner:J,name:Y}}function RK(f,J){let Y=f.trim();if(!Y)throw Error(`${J} is required`);return Y}function CK(f,J){let Y=J?.map((z)=>typeof z.message==="string"?z.message:null).filter((z)=>!!z);if(Y&&Y.length>0)return Y.join("; ");return f.trim()||"GitHub CLI returned an empty response"}function kK(f,J,Y){let z=["api","graphql","-f",`query=${f}`];for(let[H,B]of Object.entries(J))z.push("-f",`${H}=${B}`);let G=Y.spawn("gh",z,{encoding:"utf8"});if(G.error)throw Error(`failed to run gh: ${G.error.message}`);let X=typeof G.stdout==="string"?G.stdout:String(G.stdout??""),q=typeof G.stderr==="string"?G.stderr:String(G.stderr??""),Q;try{Q=JSON.parse(X)}catch{throw Error(`failed to parse gh response: ${CK(q,void 0)}`)}if((G.status??0)!==0||Q.errors?.length)throw Error(CK(q,Q.errors));if(!Q.data)throw Error("GitHub CLI response did not include data");return Q.data}function YC(f){return`${f}
77
+ `))}catch{}},15000)},cancel(){if(Y)clearInterval(Y);J?.()}});return new Response(G,{headers:{"content-type":"text/event-stream","cache-control":"no-cache, no-transform",connection:"keep-alive"}})}async function nR(f,J,Y){try{let{name:z,payload:G}=await f.json();if(!z)return Response.json({error:"missing rpc name"},{status:400});if(!k7.has(z))return Response.json({error:`rpc ${z} is not exposed to the web UI`},{status:403});let X=await J.request(z,G),q=G?.taskId;if(typeof q==="string"){let Q=z==="task.archive"&&G.archived!==!1;if(z==="task.delete"||Q)Y(q)}return Response.json({result:X})}catch(z){let G=z instanceof Error&&z.name!=="Error"?z.name:void 0;return Response.json({error:z instanceof Error?z.message:String(z),...G?{name:G}:{}},{status:500})}}async function dR(){try{let J=(await iJ()).map((Y)=>({id:Y,label:Vz(Y),effortLevels:pf(Y).effortLevels}));return Response.json({engines:J.length>0?J:[{id:"claude",label:"Claude"}]})}catch(f){return Response.json({error:f instanceof Error?f.message:String(f)},{status:500})}}function iR(){return Response.json({api:Kz()})}function lR(){return Response.json({projects:O1()})}function IY(f,J=""){return typeof f==="string"?f:J}function aR(f,J){return typeof f==="boolean"?f:J}function d5(f){let J=f.customEngineIds;if(!Array.isArray(J))return[];return J.filter((Y)=>typeof Y==="string"&&n5.test(Y)&&!H1(Y))}function $R(f){return f.split(/[-_]+/).filter(Boolean).map((J)=>`${J.slice(0,1).toUpperCase()}${J.slice(1)}`).join(" ")}function rR(f,J){return IY(f[jJ(J)]).trim()||Vz(J)}function pR(f,J){return IY(f[BJ(J)]).trim()||HX(J).join(" ")}function i5(){let f=nf(),J=d5(f),Y=[...dY,...J],z=IY(f.lastSelectedVendor,"claude"),G=IY(f.focusAccent,"primary");return Response.json({activeTheme:IY(f.activeTheme,"claude"),transparentBackground:aR(f.transparentBackground,!1),focusAccent:c5.includes(G)?G:"primary",notificationsToast:f["notifications.toast.enabled"]!==!1,notificationsSound:f["notifications.sound.enabled"]!==!1,settingsSurface:Lz(f[oJ]??Dz),editorKind:pz(f[_J]??Xq),editorCustomCommand:IY(f[RY]),remoteProjects:f["experimental.remoteProjects"]===!0,autoStatus:f[jz]===!0,dispatcher:f[Wz]===!0,defaultEngine:z,engines:Y.map((X)=>({id:X,label:rR(f,X),command:pR(f,X),isBuiltin:H1(X),isCustom:!H1(X),isDefault:X===z}))})}function MX(f,J,Y){if(typeof Y==="string")f[J]=Y.trim()}function BG(f,J,Y){if(typeof Y==="boolean")f[J]=Y}async function _R(f){try{let J=await f.json(),Y={};if(MX(Y,"activeTheme",J.activeTheme),BG(Y,"transparentBackground",J.transparentBackground),c5.includes(J.focusAccent))Y.focusAccent=J.focusAccent;if(BG(Y,"notifications.toast.enabled",J.notificationsToast),BG(Y,"notifications.sound.enabled",J.notificationsSound),J.settingsSurface==="chattab"||J.settingsSurface==="taskpanel")Y[oJ]=J.settingsSurface;if(Uz.includes(J.editorKind))Y[_J]=J.editorKind;MX(Y,RY,J.editorCustomCommand),BG(Y,"experimental.remoteProjects",J.remoteProjects),BG(Y,jz,J.autoStatus),BG(Y,Wz,J.dispatcher),MX(Y,"lastSelectedVendor",J.defaultEngine);let z=nf(),G=d5(z),X=new Set([...dY,...G]),q=Array.isArray(J.engineUpdates)?J.engineUpdates:[];for(let Q of q){if(!Q||typeof Q!=="object")continue;let H=Q;if(typeof H.id!=="string"||!X.has(H.id))continue;MX(Y,BJ(H.id),H.command),MX(Y,jJ(H.id),H.label)}if(J.addEngine&&typeof J.addEngine==="object"){let Q=J.addEngine,H=typeof Q.id==="string"?Q.id.trim().toLowerCase():"";if(!n5.test(H)||H1(H)||X.has(H))return Response.json({error:"invalid or duplicate engine id"},{status:400});Y.customEngineIds=[...G,H],Y[BJ(H)]=IY(Q.command).trim();let B=IY(Q.label).trim();Y[jJ(H)]=B&&B!==H?B:$R(H)}if(typeof J.removeEngine==="string"){let Q=J.removeEngine;if(!H1(Q)){if(Y.customEngineIds=G.filter((H)=>H!==Q),Y[BJ(Q)]=void 0,Y[jJ(Q)]=void 0,z.lastSelectedVendor===Q)Y.lastSelectedVendor="claude"}}if(Object.keys(Y).length>0)rY(Y);return i5()}catch(J){return Response.json({error:J instanceof Error?J.message:String(J)},{status:400})}}async function oR(f,J){try{let{taskId:Y}=await f.json();if(!Y)return Response.json({error:"missing taskId"},{status:400});return Response.json(await S5(J,Y))}catch(Y){return Response.json({error:Y instanceof Error?Y.message:String(Y)},{status:500})}}async function w5(f,J,Y){try{let z=f.searchParams.get("taskId");if(!z)return Response.json({error:"missing taskId"},{status:400});return Response.json(await Y(J,z))}catch(z){return Response.json({error:z instanceof Error?z.message:String(z)},{status:500})}}function l5(){return Response.json({review:kf(rq.review)??null,pr:kf(rq.pr)??null})}async function sR(f){try{let J=await f.json();if(typeof J.review==="string")af(rq.review,J.review);if(typeof J.pr==="string")af(rq.pr,J.pr);return l5()}catch(J){return Response.json({error:J instanceof Error?J.message:String(J)},{status:400})}}async function tR(f,J){let z=P5(x5(J,f==="/"?"/index.html":f));if(!z.startsWith(J))return new Response("forbidden",{status:403});let G=Bun.file(mR(z)?z:x5(J,"index.html"));if(!await G.exists())return new Response("kobe web assets not built \u2014 run `bun --filter kobe-web build`",{status:503});return new Response(G)}function eR(f){let{link:J,sseSends:Y,staticDir:z}=f,G=f.tearDownSession??((X)=>void u5(X));return async function(q){let Q=new URL(q.url);if(Q.pathname===m5)return new Response(v5);if(!g7(q.headers.get("origin"),{allowedHost:f.allowedHost}))return new Response("forbidden: cross-origin request rejected",{status:403});if(Q.pathname==="/events")return cR((O)=>{let M=f.onSseOpen?.()??(()=>{});return O("snapshot",J.snapshot()),Y.add(O),()=>{Y.delete(O),M()}});if(Q.pathname==="/api/rpc"&&q.method==="POST")return nR(q,J,G);if(Q.pathname==="/api/session"&&q.method==="POST")return oR(q,J);if(Q.pathname==="/api/engine-spec"&&q.method==="GET")return w5(Q,J,I5);if(Q.pathname==="/api/terminal-spec"&&q.method==="GET")return w5(Q,J,T5);if(Q.pathname==="/api/engines"&&q.method==="GET")return dR();if(Q.pathname==="/api/cli-invocation"&&q.method==="GET")return iR();if(Q.pathname==="/api/projects"&&q.method==="GET")return lR();if(Q.pathname==="/api/settings"&&q.method==="GET")return i5();if(Q.pathname==="/api/settings"&&q.method==="PATCH")return _R(q);if(Q.pathname==="/api/quick-prompts"&&q.method==="GET")return l5();if(Q.pathname==="/api/quick-prompts"&&q.method==="PUT")return sR(q);let H=await B7(q,Q);if(H)return H;let B=await f7(q,Q);if(B)return B;let V=await G7(q,Q);if(V)return V;let j=await F7(q,Q,J);if(j)return j;let U=await U7(q,Q);if(U)return U;let L=W7(q,Q);if(L)return L;if(z)return tR(Q.pathname,z);return new Response("not found",{status:404})}}function Rz(f,J){let Y=f.snapshot().find((z)=>z.channel===J);return Y?Y.payload:null}function qj(f){return f.length>1?f.replace(/\/+$/,""):f}function f2(f,J){let Y=qj(J),z=new Set([J]);for(let G of f){let X=qj(G.repo),q=qj(G.worktreePath);if(X===Y||q===Y){if(G.repo)z.add(G.repo);if(G.worktreePath)z.add(G.worktreePath)}}return[...z]}function a5(f){let J=qX();return{async request(Y,z){return await ZX(J,Y,z,f.ctx(0))},snapshot(){let Y=f.orch.listTasks().map(e1),z={},G=Rz(f.bus,"issue.snapshot");if(G)for(let Q of f2(Y,G.repoRoot))z[Q]={...G,repoRoot:Q};let X=Rz(f.bus,"task.jobs"),q=X?.phase==="running"?{[X.taskId]:X}:{};return{tasks:Y,activeTaskId:Rz(f.bus,"active-task")?.taskId??null,engineStates:f.activity.snapshotByTask(),update:Rz(f.bus,"update")?.info??null,jobs:q,worktreeChanges:Rz(f.bus,"worktree.changes")?.changes??{},issueSnapshots:z,deliver:Rz(f.bus,"session.deliver"),uiPrefs:Rz(f.bus,"ui-prefs"),connected:!0}}}}async function h5(f){try{let J=Bun.spawn(["lsof","-nP",`-iTCP:${f}`,"-sTCP:LISTEN","-t"],{stdout:"pipe",stderr:"ignore"});return(await new Response(J.stdout).text()).split(`
78
+ `).map((z)=>Number.parseInt(z.trim(),10)).filter((z)=>Number.isFinite(z)&&z!==process.pid)}catch{return[]}}async function J2(f,J=m5){let Y;try{Y=(await(await fetch(`http://localhost:${f}${J}`,{signal:AbortSignal.timeout(800)})).text()).trim()}catch{return}if(Y!==v5)throw Error(`port ${f} is in use by a non-kobe service; refusing to replace it`);let z=await h5(f);for(let X of z)try{process.kill(X,"SIGTERM")}catch{}let G=Date.now()+2000;while(Date.now()<G){if((await h5(f)).length===0)return;await new Promise((X)=>setTimeout(X,100))}}async function $5(f){if(f.takeover!==!1)await J2(f.port);let J=new Set,Y=f.onEvent((Q)=>{for(let H of J)H("channel",Q)}),z=f.hostname?.trim()||process.env.KOBE_WEB_HOST?.trim()||"127.0.0.1",G=R7(z),X=eR({link:f.link,sseSends:J,staticDir:f.staticDir?P5(f.staticDir):void 0,allowedHost:G,onSseOpen:f.onSseOpen}),q=Bun.serve({port:f.port,hostname:z,idleTimeout:0,fetch:X});return{port:q.port??f.port,hostname:z,close(){Y(),q.stop(!0)}}}var v5="kobe-web",m5="/__kobe_web",c5,n5,rq;var r5=k(()=>{tY();x1();UY();XX();Yq();Af();pY();Zq();U1();J7();X7();j7();V7();_Z();_Y();D7();C7();N7();E5();c5=["primary","success","info"],n5=/^[a-z][a-z0-9_-]{0,47}$/;rq={review:"boardPrompt.review",pr:"boardPrompt.pr"}});var p5={};jf(p5,{sameWorktreeChanges:()=>IJ,readWorktreeChanges:()=>z2,pickPushedChanges:()=>_q,parsePorcelain:()=>jG});import{spawnSync as Y2}from"child_process";function IJ(f,J){return f.added===J.added&&f.deleted===J.deleted}function _q(f,J){if(!f)return null;return f.get(J)??pq}function z2(f){if(!f)return pq;try{let J=Y2("git",["status","--porcelain=v1"],{cwd:f,encoding:"utf8",stdio:["ignore","pipe","pipe"],env:w1()});if(J.status!==0||!J.stdout)return pq;return jG(J.stdout)}catch{return pq}}function jG(f){let J=0,Y=0;for(let z of f.split(`
79
+ `)){if(!z||z.startsWith("##"))continue;let G=z.charAt(0),X=z.charAt(1);if(G==="D"||X==="D")Y+=1;else J+=1}return{added:J,deleted:Y}}var pq;var WG=k(()=>{CY();pq={added:0,deleted:0}});async function q2(f,J){let Y=await HJ("git",["status","--porcelain=v1"],{cwd:f,env:w1(),signal:J});if(Y.status!==0)throw Error("git status failed");return jG(Y.stdout)}function Q2(f){let J=new Set;for(let Y of f){if(Y.archived)continue;if(!Y.worktreePath)continue;if(f1(Y.repo)||f1(Y.worktreePath))continue;J.add(Y.worktreePath)}return J}class _5{orch;bus;options;entries=new Map;stopped=!1;constructor(f,J,Y={}){this.orch=f;this.bus=J;this.options=Y}tick(){if(this.stopped)return;if(this.options.hasSubscribers&&!this.options.hasSubscribers())return;try{let f=Q2(this.orch.listTasks()),J=!1;for(let Y of this.entries.keys()){if(f.has(Y))continue;if(this.entries.get(Y)?.value)J=!0;this.entries.delete(Y)}if(J)this.publish();for(let Y of f)this.maybeCollect(Y)}catch(f){uf("worktree-changes",f)}}stop(){this.stopped=!0}maybeCollect(f){let J=this.entries.get(f);if(!J)J={inFlight:!1,nextAllowedAt:0},this.entries.set(f,J);let Y=this.options.cadence??{timeoutMs:G2,slowRetryMs:X2,minIntervalMs:Z2},z=this.options.run??q2;fq(J,Y,(G)=>z(f,G),(G)=>{if(this.stopped)return;if(this.entries.get(f)!==J)return;if(J.value&&IJ(J.value,G))return;J.value=G,this.publish()})}publish(){let f={};for(let[J,Y]of this.entries)if(Y.value)f[J]=Y.value;this.bus.publish("worktree.changes",{changes:f})}}function o5(f,J,Y=Qj,z){if(Y<=0)return()=>{};let G=new _5(f,J,{hasSubscribers:z});G.tick();let X=setInterval(()=>G.tick(),Y);return X.unref?.(),()=>{clearInterval(X),G.stop()}}var Qj=2000,G2=4000,X2=60000,Z2=1500;var s5=k(()=>{CY();QX();Af();WG()});import{mkdir as t5,readFile as H2,unlink as Hj,writeFile as B2}from"fs/promises";import{createServer as j2}from"net";import{dirname as e5}from"path";import{StringDecoder as W2}from"string_decoder";function K2(){let f=process.env.KOBE_DAEMON_IDLE_GRACE_MS;if(f===void 0)return fK;let J=Number(f);return Number.isFinite(J)&&J>=0?J:fK}async function YK(f,J={}){let Y=J.socketPath??AJ(J.homeDir),z=J.pidPath??nJ(J.homeDir),G=J.startedAt??new Date,X=new Set,q=new Set,Q=1,H=new RB({clients:function*(){yield*X,yield*q},idleGraceMs:K2(),onIdleStop:()=>void Y0().catch(($)=>uf("daemon-idle-shutdown",$))}),B=new qB;B.onPublish(($)=>{JK(X,{type:"event",name:$.channel,payload:$.payload})});let V=new BH(B),j=new tZ(sZ(J.homeDir));await t5(e5(Y),{recursive:!0}),await t5(e5(z),{recursive:!0}),await Hj(Y).catch(()=>{});let U=j2(($)=>{let E={id:Q++,connectedAt:new Date,socket:$,buffer:"",subscribed:!1,holdsLifetime:!1,channels:null};X.add(E);let f0=new W2("utf8");$.on("data",(I)=>{E.buffer+=f0.write(I),g0(E)}),$.on("error",()=>{}),$.on("close",()=>{if(X.delete(E),E.subscribed)OY("conn",`client #${E.id} (${E.holdsLifetime?"gui":"pane"}) disconnected \u2014 ${X.size} client(s), ${H.guiCount()} gui left`);H.clientDisconnected(E.holdsLifetime)})}),L=f.subscribeTasks(($)=>{B.publish("task.snapshot",{tasks:$.map(e1)})}),O=J.checkUpdate??wG,M=J.updatePollMs??V2,R=()=>{O().then(($)=>B.publish("update",{info:$})).catch(($)=>uf("update-poller",$))},S=null;if(M>0)R(),S=setInterval(R,M),S.unref?.();let a=J.autoTitlePollMs??ZB,N=TV(f,a,()=>H.hasSubscribers()),g=_V(B,{statePath:yB(J.homeDir),debounceMs:J.uiPrefsDebounceMs??NB}),C=iV(B,{path:gB(J.homeDir),debounceMs:J.keybindingsDebounceMs??AB}),y=o5(f,B,J.worktreeChangesTickMs??Qj,()=>H.hasSubscribers()),_=$V(f,J.prStatusPollMs??Jq,()=>H.hasSubscribers()),z0=null,t={socketPath:Y,pidPath:z,startedAt:G,get webPort(){return z0?.port},clients:X,async close(){if(H.markStopping(),L(),z0?.close(),z0=null,S)clearInterval(S);N(),_(),g(),C(),y(),V.close(),JK(X,{type:"event",name:"daemon.stopping",payload:{}});for(let $ of Array.from(X))$.socket.destroy();await new Promise(($)=>U.close(()=>$())),await Hj(Y).catch(()=>{}),await Hj(z).catch(()=>{})}};await new Promise(($,E)=>{let f0=U;f0.once("error",E),U.listen(Y,()=>{f0.removeListener("error",E),$()})}),await B2(z,`${process.pid}
80
+ `,"utf8");async function Y0(){if(H.isStopping())return;H.markStopping(),await J.onStop?.(),setTimeout(()=>{t.close().catch(($)=>uf("daemon-shutdown",$))},0).unref()}let T=qX();function Q0($){return{orch:f,bus:B,activity:V,issues:j,daemon:{startedAt:G,socketPath:Y,webPort:z0?.port,pid:process.pid,guiCount:()=>H.guiCount(),stopSoon:Y0},clientId:$}}if(J.webPort!==void 0){let $=a5({orch:f,bus:B,activity:V,ctx:Q0});z0=await $5({port:J.webPort,hostname:J.webHost,staticDir:J.webStaticDir,link:$,onEvent:(E)=>B.onPublish(E),onSseOpen:()=>{let E={subscribed:!0,holdsLifetime:!0};return q.add(E),H.guiAttached(),OY("conn",`web client subscribed \u2014 ${X.size+q.size} client(s), ${H.guiCount()} gui`),()=>{q.delete(E),OY("conn",`web client disconnected \u2014 ${X.size+q.size} client(s), ${H.guiCount()} gui left`),H.clientDisconnected(!0)}}}),OY("web",`daemon web transport listening on http://${z0.hostname}:${z0.port}`)}async function p($,E){if($.name==="subscribe"){let f0=WB($.payload),I=E.subscribed;E.subscribed=!0;let G0=f0.role==="gui"?"gui":"pane";E.holdsLifetime=G0==="gui",E.channels=T9(f0.channels);let x=!I;if(E.holdsLifetime)H.guiAttached();OY("conn",`client #${E.id} subscribed as ${G0}${E.channels?` [${[...E.channels].join(",")}]`:""} \u2014 ${X.size} client(s), ${H.guiCount()} gui${x?" (collectors resume)":""}`);for(let c of B.snapshot()){if(E.channels&&!E.channels.has(c.channel))continue;FX(E,{type:"event",name:c.channel,payload:c.payload})}if(!E.channels||E.channels.has("engine-state"))for(let c of V.currentNonIdle())FX(E,{type:"event",name:"engine-state",payload:c});return{}}return ZX(T,$.name,$.payload,Q0(E.id))}async function D0($,E){try{let f0=await p($,E);FX(E,{type:"response",id:$.id,name:$.name,payload:f0})}catch(f0){FX(E,{type:"response",id:$.id,name:$.name,error:jB(f0)})}}function g0($){let E=$.buffer.indexOf(`
81
+ `);while(E!==-1){let f0=$.buffer.slice(0,E);if($.buffer=$.buffer.slice(E+1),f0.trim().length>0)try{let I=JSON.parse(f0);if(I.type!=="request")throw Error("daemon only accepts request frames from clients");D0(I,$)}catch(I){FX($,{type:"response",id:"parse-error",error:{message:I instanceof Error?I.message:String(I)}})}E=$.buffer.indexOf(`
82
+ `)}}return t}async function VG(f){try{let J=await H2(f,"utf8"),Y=Number(J.trim());return Number.isFinite(Y)?Y:null}catch{return null}}function FX(f,J){f.socket.write(PG(J))}function JK(f,J){let Y=J.type==="event"&&J.name!=="daemon.stopping"?J.name:null,z=null;for(let G of f){if(!G.subscribed&&J.type==="event")continue;if(Y&&G.channels&&!G.channels.has(Y))continue;z??=PG(J),G.socket.write(z)}}var V2=21600000,fK=3000;var oq=k(()=>{D1();n9();uV();_Z();FB();lV();aV();xz();rV();_Y();oV();r5();s5();_Z();FB()});import{unlink as zK}from"fs/promises";function U2(f){try{return process.kill(f,0),!0}catch(J){return J.code==="EPERM"}}async function KG(f,J){let Y=await VG(J),z=Y!==null&&Y!==process.pid?Y:null,G=z!==null&&U2(z),X=G?"graceful":"absent",q=new d1(f),Q=q.request("daemon.stop").catch(()=>{return}),H=new Promise((B)=>setTimeout(B,2000));if(await Promise.race([Q,H]),q.close(),G&&z!==null){let B=Date.now()+5000,V=!1;while(Date.now()<B){try{process.kill(z,0)}catch{break}if(!V&&Date.now()-(B-5000)>2000){try{process.kill(z,"SIGTERM")}catch{}X="sigterm",V=!0}await new Promise((j)=>setTimeout(j,50))}try{process.kill(z,0),process.kill(z,"SIGKILL"),X="sigkill",await new Promise((j)=>setTimeout(j,100))}catch{}}return await zK(f).catch(()=>{}),await zK(J).catch(()=>{}),{pid:Y,method:X}}var sq=k(()=>{vG();oq()});var lq={};jf(lq,{testDaemonResponds:()=>tq,ensureDaemonReachable:()=>UG,connectOrStartDaemon:()=>KJ,connectIfRunning:()=>p1});import{spawn as D2}from"child_process";import{closeSync as L2,existsSync as M2,mkdirSync as F2,openSync as O2}from"fs";import{dirname as GK,resolve as Bj}from"path";import{fileURLToPath as A2}from"url";function C2(f,J,Y,z){let G="ignore",X;try{F2(GK(z),{recursive:!0}),X=O2(z,"a"),G=["ignore",X,X]}catch{G="ignore"}if(D2(f,[...J],{detached:!0,stdio:G,env:Y}).unref(),X!==void 0)try{L2(X)}catch{}}async function UG(){let f=AJ();if(await tq(f))return f;await KG(f,nJ()).catch(()=>{});let[J,...Y]=k2(g2);C2(J,Y,process.env,QZ());let z=Date.now()+5000;while(Date.now()<z){if(await tq(f))return f;await new Promise((G)=>setTimeout(G,100))}throw Error(`kobe: daemon did not start (or stayed wedged) at ${f}`)}async function KJ(){let f=await UG(),J=new d1(f);return await J.connect(),J}async function p1(){let f=AJ();if(!await tq(f))return null;let J=new d1(f);return await J.connect(),J}async function tq(f,J=R2){let Y=new d1(f);try{await Y.connect()}catch{return Y.close(),!1}let z=Y.request("hello",{protocolVersion:n1}).then(()=>!0).catch(()=>!0),G,X=new Promise((Q)=>{G=setTimeout(()=>Q(!1),J)}),q=await Promise.race([z,X]);if(G)clearTimeout(G);return Y.close(),q}function k2(f){let J=A2(import.meta.url);if(J.startsWith("/$bunfs")||J.startsWith("B:\\~BUN"))return[process.execPath,...f];let Y=GK(J),z=[Bj(Y,"../cli/index.ts"),Bj(Y,"../../../kobe/src/cli/index.ts"),Bj(Y,"../cli/index.js")],G=z.find((X)=>M2(X));if(G)return[process.execPath,G,...f];throw Error(`kobe: could not locate kobe entry near ${Y}; checked ${z.join(", ")}`)}var g2,R2=3000;var L1=k(()=>{sq();xz();_Y();vG();g2=["daemon","start"]});function N2(f,J){let Y="",z=f;for(let G=J-1;G>=0;G--){let X=z%32;Y="0123456789ABCDEFGHJKMNPQRSTVWXYZ"[X]+Y,z=(z-X)/32}return Y}function qK(f){let J=new Uint8Array(f);crypto.getRandomValues(J);let Y=Array(f);for(let z=0;z<f;z++)Y[z]=(J[z]??0)&31;return Y}function y2(f){for(let J=f.length-1;J>=0;J--){let Y=f[J]??0;if(Y<31)return f[J]=Y+1,!0;f[J]=0}return!1}function b2(f){let J="";for(let Y of f)J+="0123456789ABCDEFGHJKMNPQRSTVWXYZ"[Y]??"0";return J}function QK(f=Date.now()){let J;if(f===XK){let Y=ZK.slice();if(!y2(Y))J=qK(16);else J=Y}else J=qK(16);return XK=f,ZK=J,N2(f,10)+b2(J)}var XK=-1,ZK;var HK=k(()=>{ZK=Array(16).fill(0)});var jj={};jf(jj,{TaskIndexStore:()=>DG});import{mkdir as S2,open as I2,readFile as T2,rename as u2,unlink as BK}from"fs/promises";import{homedir as E2}from"os";import{dirname as x2,join as jK}from"path";class DG{homeDir;kobeDir;path;tmpPath;cache={version:TY,tasks:[]};loaded=!1;listeners=new Set;saveChain=Promise.resolve();constructor(f={}){this.homeDir=f.homeDir??E2(),this.kobeDir=jK(this.homeDir,".kobe"),this.path=jK(this.kobeDir,"tasks.json"),this.tmpPath=`${this.path}.tmp`}subscribe(f){if(this.listeners.add(f),this.loaded)try{f(this.cache.tasks.slice())}catch(J){console.error("[kobe TaskIndexStore] listener threw on subscribe:",J)}return()=>{this.listeners.delete(f)}}get filePath(){return this.path}get stateDir(){return this.kobeDir}async load(){let f;try{f=await T2(this.path,"utf8")}catch(Y){if(Y.code==="ENOENT")return this.cache={version:TY,tasks:[]},this.loaded=!0,this.notifyListeners(),this.snapshot();throw Y}let J;try{J=JSON.parse(f)}catch(Y){return console.warn(`[kobe] tasks.json at ${this.path} is corrupted (${Y.message}); recovering with empty index. The stale file is left in place.`),this.cache={version:TY,tasks:[]},this.loaded=!0,this.notifyListeners(),this.snapshot()}return this.cache=w2(J,this.path),this.loaded=!0,this.notifyListeners(),this.snapshot()}async save(){this.assertLoaded();let f=this.saveChain.then(()=>this.doSave());return this.saveChain=f.catch(()=>{}),f}async doSave(){await S2(x2(this.path),{recursive:!0});let f=this.snapshot(),J=`${JSON.stringify(f,null,2)}
83
+ `,Y=await I2(this.tmpPath,"w",420);try{await Y.writeFile(J,"utf8"),await Y.sync()}finally{await Y.close()}await u2(this.tmpPath,this.path)}get(f){return this.assertLoaded(),this.cache.tasks.find((J)=>J.id===f)}list(){return this.assertLoaded(),this.cache.tasks.slice()}async create(f){this.assertLoaded();let J=new Date().toISOString(),Y={archived:!1,vendor:f.vendor??Sf,...f,id:rG(QK()),createdAt:J,updatedAt:J};return this.cache.tasks.push(Y),await this.save(),this.notifyListeners(),Y}async update(f,J){this.assertLoaded();let Y=this.cache.tasks.findIndex((H)=>H.id===f);if(Y<0)throw Error(`task not found: ${f}`);let z=this.cache.tasks[Y];if(!z)throw Error(`task not found: ${f}`);let{id:G,createdAt:X,...q}=J,Q={...z,...q,id:z.id,createdAt:z.createdAt,updatedAt:new Date().toISOString()};return this.cache.tasks[Y]=Q,await this.save(),this.notifyListeners(),Q}async move(f,J,Y){this.assertLoaded();let z=this.cache.tasks.find((L)=>L.id===f);if(!z)throw Error(`task not found: ${f}`);let G=Y?.length?Y:this.cache.tasks.map((L)=>L.id),X=G.indexOf(String(f));if(X<0)throw Error(`task not movable in current group: ${f}`);let q=G[X+J];if(!q)return z;let Q=this.cache.tasks.findIndex((L)=>L.id===f),H=this.cache.tasks.findIndex((L)=>L.id===q);if(Q<0||H<0||Q===H)return z;let[B]=this.cache.tasks.splice(Q,1);if(!B)return z;let V=Q<H?H-1:H,j=J>0?V+1:V,U={...B,updatedAt:new Date().toISOString()};return this.cache.tasks.splice(j,0,U),await this.save(),this.notifyListeners(),U}async reorder(f){this.assertLoaded();let J=f.map((G)=>{let X=this.cache.tasks.findIndex((Q)=>Q.id===G.id);if(!(X>=0?this.cache.tasks[X]:void 0))throw Error(`task not found: ${G.id}`);return{idx:X,position:G.position}}),Y=!1,z=new Map;for(let{idx:G,position:X}of J){let q=this.cache.tasks[G];if(!q||q.position===X)continue;if(!z.has(G))z.set(G,q);this.cache.tasks[G]={...q,position:X},Y=!0}if(!Y)return;try{await this.save()}catch(G){for(let[X,q]of z)this.cache.tasks[X]=q;throw G}this.notifyListeners()}async archive(f,J="done"){return this.update(f,{status:J})}async remove(f){this.assertLoaded();let J=this.cache.tasks.findIndex((Y)=>Y.id===f);if(J<0)return;this.cache.tasks.splice(J,1),await this.save(),this.notifyListeners()}async _unlinkForTests(){try{await BK(this.path)}catch(f){if(f.code!=="ENOENT")throw f}try{await BK(this.tmpPath)}catch(f){if(f.code!=="ENOENT")throw f}this.cache={version:TY,tasks:[]},this.loaded=!1}assertLoaded(){if(!this.loaded)throw Error("TaskIndexStore: call load() before any other method")}snapshot(){return{version:TY,tasks:this.cache.tasks.slice()}}notifyListeners(){if(this.listeners.size===0)return;let f=this.cache.tasks.slice();for(let J of this.listeners)try{J(f)}catch(Y){console.error("[kobe TaskIndexStore] listener threw on notify:",Y)}}}function w2(f,J){if(!f||typeof f!=="object"||Array.isArray(f))return console.warn(`[kobe] tasks.json at ${J} is not an object; recovering with empty index.`),{version:TY,tasks:[]};let Y=f,z=Y.version;if(z!==void 0&&z!==1&&z!==2&&z!==3)return console.warn(`[kobe] tasks.json at ${J} has unsupported version=${String(z)}; recovering with empty index.`),{version:TY,tasks:[]};let G=Array.isArray(Y.tasks)?Y.tasks:[],X=[];for(let q of G){let Q=h2(q);if(Q)X.push(Q);else console.warn(`[kobe] dropping malformed task entry from ${J}: ${JSON.stringify(q)}`)}return{version:TY,tasks:X}}function h2(f){if(!f||typeof f!=="object")return null;let J=f;if(typeof J.id!=="string"||typeof J.title!=="string"||typeof J.repo!=="string"||typeof J.branch!=="string"||typeof J.worktreePath!=="string"||typeof J.status!=="string"||typeof J.createdAt!=="string"||typeof J.updatedAt!=="string")return null;if(!n2(J.status))return null;let Y=typeof J.archived==="boolean"?J.archived:!1,z=J.kind==="main"?"main":"task",G=z==="main"?J.status==="in_progress"||J.status==="done"?"backlog":J.status:J.status==="done"&&!Y?"in_progress":J.status;return{id:rG(J.id),title:J.title,repo:J.repo,branch:J.branch,worktreePath:J.worktreePath,status:G,archived:Y,pinned:typeof J.pinned==="boolean"?J.pinned:!1,kind:z,vendor:iY(typeof J.vendor==="string"?J.vendor:void 0),prStatus:P2(J.prStatus),...typeof J.position==="number"&&Number.isFinite(J.position)?{position:J.position}:{},...typeof J.modelEffort==="string"&&J.modelEffort.length>0?{modelEffort:J.modelEffort}:{},createdAt:J.createdAt,updatedAt:J.updatedAt}}function P2(f){if(!f||typeof f!=="object"||Array.isArray(f))return;let J=f;if(!v2(J.provider)||!m2(J.lifecycle)||!c2(J.checkState))return;return{provider:J.provider,lifecycle:J.lifecycle,checkState:J.checkState,...typeof J.number==="number"&&Number.isFinite(J.number)?{number:J.number}:{},...typeof J.url==="string"?{url:J.url}:{},...typeof J.title==="string"?{title:J.title}:{},...typeof J.baseRef==="string"?{baseRef:J.baseRef}:{},...typeof J.headRef==="string"?{headRef:J.headRef}:{},...typeof J.reviewDecision==="string"?{reviewDecision:J.reviewDecision}:{},...typeof J.mergeable==="string"?{mergeable:J.mergeable}:{},...typeof J.lastCheckedAt==="string"?{lastCheckedAt:J.lastCheckedAt}:{},...typeof J.lastError==="string"?{lastError:J.lastError}:{}}}function v2(f){return f==="github"||f==="gitlab"||f==="bitbucket"||f==="unknown"}function m2(f){return f==="creating"||f==="open"||f==="ready_to_merge"||f==="merged"||f==="closed"||f==="unknown"}function c2(f){return f==="none"||f==="pending"||f==="passing"||f==="failing"||f==="unknown"}function n2(f){return f==="backlog"||f==="in_progress"||f==="in_review"||f==="done"||f==="canceled"||f==="error"}var TY=3;var OX=k(()=>{I1();U1();HK()});var eq;var WK=k(()=>{eq=class eq extends Error{args;cwd;exitCode;stdout;stderr;constructor(f,J,Y){super(`git ${f.join(" ")} (cwd=${J}) exited with code ${Y.exitCode}: ${Y.stderr.trim()||Y.stdout.trim()}`);this.name="GitCommandError",this.args=f,this.cwd=J,this.exitCode=Y.exitCode,this.stdout=Y.stdout,this.stderr=Y.stderr}}});var UK={};jf(UK,{GitWorktreeManager:()=>fQ});import KK from"fs";import UJ from"path";class fQ{execDeps;constructor(f=d2){this.execDeps=f}ctxFor(f){let J=this.execDeps.remoteBasePath(f);return J?{exec:this.execDeps.execForRepo(f),dir:J,remote:!0}:{exec:this.execDeps.execForRepo(f),dir:f,remote:!1}}async runGit(f,J,Y){if(!Y.cwd)throw Error("runGit(): cwd is required; refusing to inherit from process.cwd()");let z=await f.run(["git",...J],{cwd:Y.cwd,env:Y.env}),G={stdout:z.stdout,stderr:z.stderr,exitCode:z.exitCode};if(G.exitCode!==0&&!Y.allowFail)throw new eq(J,Y.cwd,G);return G}async create(f,J,Y,z){let G=this.ctxFor(f);if(uY("repo",G.dir),uY("path",Y),!J)throw Error("create(): branch must be a non-empty string");if(await G.exec.exists(Y)){let H=await this.tryDescribe(G,Y);if(H){if(H.branch!==J)throw Error(`worktree at ${Y} is on branch '${H.branch}', refusing to hijack to '${J}'`);return H}throw Error(`create(): ${Y} exists but is not a registered git worktree`)}await G.exec.mkdirp(UJ.dirname(Y));let q=await this.branchExists(G,J)?["worktree","add",Y,J]:z?["worktree","add","-b",J,Y,z]:["worktree","add","-b",J,Y];await this.runGit(G.exec,q,{cwd:G.dir});let Q=await this.tryDescribe(G,Y);if(!Q)throw Error(`create(): git reported success but ${Y} is not a worktree`);if(Q.branch!==J)throw Error(`create(): post-condition failed \u2014 expected branch '${J}' at ${Y}, got '${Q.branch}'`);return Q}async createForTask(f){let J=this.execDeps.remoteBasePath(f.repo),Y=J?LV(J,f.slug):VV(f.repo,f.slug);return this.create(f.repo,f.branch,Y,f.baseRef)}async remove(f,J){uY("path",f);let Y=this.execDeps.execForPath(f),z=J?.force===!0;if(!await Y.exists(f)){let q=await this.findRepoFor(Y,f);if(q)await this.runGit(Y,["worktree","prune"],{cwd:q,allowFail:!0});return}let G=await this.findRepoFor(Y,f);if(!G)throw Error(`remove(): ${f} is not a git worktree`);if(!z){if(await this.isDirty(f))throw Error(`remove(): refusing to remove dirty worktree at ${f} (pass { force: true } to override)`)}let X=z?["worktree","remove","--force",f]:["worktree","remove",f];await this.runGit(Y,X,{cwd:G}),await this.runGit(Y,["worktree","prune"],{cwd:G,allowFail:!0})}async list(f){let J=this.ctxFor(f);uY("repo",J.dir);let Y=await this.runGit(J.exec,["worktree","list","--porcelain"],{cwd:J.dir}),z=Wj(Y.stdout),G=[];for(let X of z){if(!X.path)continue;let q=J.remote?VK(J.dir,X.path):_H(f,X.path);if(!q)continue;if(!X.branch||X.detached)continue;let Q=AX(q),H=AX(X.path),B=UJ.relative(Q,H),V=UJ.join(q,B),j=await this.isDirty(X.path);G.push({path:V,branch:X.branch,head:X.head??"",dirty:j})}return G}async listAll(f){let J=this.ctxFor(f);uY("repo",J.dir);let Y=await this.runGit(J.exec,["worktree","list","--porcelain"],{cwd:J.dir}),z=Wj(Y.stdout),G=J.remote?J.dir:AX(J.dir),X=[];for(let q of z){if(!q.path)continue;if(q.bare)continue;if(!q.branch||q.detached)continue;if((J.remote?q.path:AX(q.path))===G)continue;let Q=await this.isDirty(q.path);X.push({path:q.path,branch:q.branch,head:q.head??"",dirty:Q,kobeManaged:J.remote?VK(J.dir,q.path)!==null:UV(f,q.path),lastActivityMs:await this.lastActivityMs(J.exec,q.path)})}return X.sort((q,Q)=>Q.lastActivityMs-q.lastActivityMs),X}async lastActivityMs(f,J){try{let Y=await this.runGit(f,["log","-1","--format=%ct"],{cwd:J}),z=Number.parseInt(Y.stdout.trim(),10);if(Number.isFinite(z)&&z>0)return z*1000}catch{}if(!f.isRemote)try{return KK.statSync(J).mtimeMs}catch{}return 0}async isDirty(f){uY("path",f);let J=this.execDeps.execForPath(f);return(await this.runGit(J,["status","--porcelain"],{cwd:f})).stdout.length>0}async currentBranch(f){uY("path",f);let J=this.execDeps.execForPath(f),z=(await this.runGit(J,["rev-parse","--abbrev-ref","HEAD"],{cwd:f})).stdout.trim();if(!z||z==="HEAD")throw Error(`currentBranch(): ${f} is in detached-HEAD state`);return z}async renameBranch(f,J,Y){if(uY("path",f),J===Y)return;let z=this.execDeps.execForPath(f),G=await this.findRepoFor(z,f);if(!G)throw Error(`renameBranch(): ${f} is not a git worktree`);await this.runGit(z,["branch","-m",J,Y],{cwd:G})}async tryDescribe(f,J){let Y=await this.runGit(f.exec,["worktree","list","--porcelain"],{cwd:f.dir}),z=Wj(Y.stdout),G=(Q)=>f.remote?Q:AX(Q),X=G(J),q=z.find((Q)=>Q.path&&G(Q.path)===X);if(!q||!q.path||!q.branch||q.detached)return null;return{path:J,branch:q.branch,head:q.head??"",dirty:await this.isDirty(q.path)}}async branchExists(f,J){let Y=`refs/heads/${J}`;return(await this.runGit(f.exec,["show-ref","--verify","--quiet",Y],{cwd:f.dir,allowFail:!0})).exitCode===0}async findRepoFor(f,J){try{let Y=await this.runGit(f,["rev-parse","--git-common-dir"],{cwd:J,allowFail:!0});if(Y.exitCode!==0)return null;let z=Y.stdout.trim();if(!z)return null;let G=UJ.isAbsolute(z)?z:UJ.resolve(J,z);return UJ.basename(G)===".git"?UJ.dirname(G):G}catch(Y){if(Y instanceof eq)return null;throw Y}}}function Wj(f){let J=[],Y=null;for(let z of f.split(`
84
+ `)){let G=z.replace(/\r$/,"");if(G===""){if(Y)J.push(Y);Y=null;continue}if(!Y)Y={};if(G.startsWith("worktree "))Y.path=G.slice(9);else if(G.startsWith("HEAD "))Y.head=G.slice(5);else if(G.startsWith("branch ")){let X=G.slice(7);Y.branch=X.startsWith("refs/heads/")?X.slice(11):X}else if(G==="detached")Y.detached=!0;else if(G==="bare")Y.bare=!0}if(Y)J.push(Y);return J}function VK(f,J){let Y=`${f.replace(/\/+$/,"")}/.kobe/worktrees`;return J===Y||J.startsWith(`${Y}/`)?Y:null}function uY(f,J){if(!J||!UJ.isAbsolute(J))throw Error(`${f} must be an absolute path, got: ${JSON.stringify(J)}`)}function AX(f){try{return KK.realpathSync(f)}catch{return UJ.resolve(f)}}var d2;var Vj=k(()=>{ZJ();Af();WK();oH();d2={execForRepo:cz,execForPath:pJ,remoteBasePath(f){return mJ(f)?.basePath??null}}});var FK={};jf(FK,{runExportSubcommand:()=>p2,renderExport:()=>MK});function i2(f){return{id:f.id,title:f.title,status:f.status,archived:String(f.archived),vendor:f.vendor??Sf,branch:f.branch,repo:f.repo,worktreePath:f.worktreePath}}function Kj(f){process.stderr.write(`kobe export: ${f}
85
+
86
+ ${LK}
87
+ `),process.exit(2)}function l2(f){let J="json";for(let Y=0;Y<f.length;Y++){let z=f[Y];if(z==="--json")J="json";else if(z==="--csv")J="csv";else if(z==="--format"){let G=f[++Y];if(G===void 0)Kj("--format requires a value (json, csv, or table)");J=DK(G)}else if(z.startsWith("--format="))J=DK(z.slice(9));else Kj(`unexpected argument "${z}"`)}return J}function DK(f){if(f==="json"||f==="csv"||f==="table")return f;Kj(`unknown format "${f}" (expected json, csv, or table)`)}function a2(f){if(/[",\r\n]/.test(f))return`"${f.replace(/"/g,'""')}"`;return f}function $2(f){let J=[gX.join(",")];for(let Y of f)J.push(gX.map((z)=>a2(Y[z])).join(","));return J.join(`
88
+ `)}function r2(f){let J={};for(let G of gX)J[G]=Math.max(G.length,...f.map((X)=>X[G].length));let Y=(G)=>gX.map((X)=>G[X].padEnd(J[X])).join(" ").trimEnd(),z={};for(let G of gX)z[G]=G;return[Y(z),...f.map(Y)].join(`
89
+ `)}function MK(f,J){let Y=f.map(i2);if(J==="json")return JSON.stringify(Y,null,2);if(J==="csv")return $2(Y);return r2(Y)}async function p2(f){if(f.includes("--help")||f.includes("-h")||f.includes("help")){process.stdout.write(`${LK}
90
+ `);return}let J=l2(f),{TaskIndexStore:Y}=await Promise.resolve().then(() => (OX(),jj)),z=new Y;await z.load();let G=z.list();if(G.length===0&&J==="table"){process.stdout.write(`no tasks
91
+ `);return}process.stdout.write(`${MK(G,J)}
92
+ `)}var LK,gX;var OK=k(()=>{I1();LK=["Usage: kobe export [--json | --csv | --format <json|csv|table>]","","Print the task list (from ~/.kobe/tasks.json) to stdout. Read-only and","daemon-free \u2014 works with the kobe daemon down.","","Options:"," --json JSON array of tasks (default)"," --csv CSV with a header row"," --format <fmt> One of: json, csv, table"," -h, --help Print this help",""].join(`
93
+ `),gX=["id","title","status","archived","vendor","branch","repo","worktreePath"]});var RK={};jf(RK,{runRepoSubcommand:()=>t2});import{readFileSync as _2}from"fs";import{resolve as JQ}from"path";function EY(f){process.stderr.write(`kobe repo: ${f}
94
+
95
+ ${gK}
96
+ `),process.exit(2)}function AK(f){try{return _2(JQ(process.cwd(),f),"utf8")}catch(J){EY(`cannot read ${f}: ${J instanceof Error?J.message:String(J)}`)}}function o2(f){let J={};for(let Y=0;Y<f.length;Y++){let z=f[Y],G=()=>{let X=f[++Y];if(X===void 0)EY(`${z} requires a value`);return X};if(z==="--init-script")J.initScript=G();else if(z==="--init-script-file")J.initScript=AK(G());else if(z==="--init-prompt")J.initPrompt=G();else if(z==="--init-prompt-file")J.initPrompt=AK(G());else if(z.startsWith("-"))EY(`unknown flag "${z}"`);else if(J.path===void 0)J.path=z;else EY(`unexpected argument "${z}"`)}return J}function s2(f){let J,Y=!1,z=!1;for(let G of f)if(G==="--init-script")Y=!0;else if(G==="--init-prompt")z=!0;else if(G.startsWith("-"))EY(`unknown flag "${G}"`);else if(J===void 0)J=G;else EY(`unexpected argument "${G}"`);if(!Y&&!z)Y=!0,z=!0;return{path:J,clearScript:Y,clearPrompt:z}}async function t2(f){let[J,...Y]=f;if(J===void 0||J==="--help"||J==="-h"||J==="help"){process.stdout.write(`${gK}
97
+ `);return}let{getRepoInitOverride:z,setRepoInitOverride:G,resolveRepoRoot:X}=await Promise.resolve().then(() => (Af(),cJ)),{existsSync:q}=await import("fs"),{join:Q}=await import("path");if(J==="show"){let[H]=Y.filter((L)=>!L.startsWith("-")),B=X(JQ(process.cwd(),H??".")),V=z(B),j=q(Q(B,".kobe","init.sh")),U=q(Q(B,".kobe","init-prompt.md"));console.log(`repo: ${B}`),console.log(` .kobe/init.sh: ${j?"present (wins)":"absent"}`),console.log(` .kobe/init-prompt.md: ${U?"present (wins)":"absent"}`),console.log(` override initScript: ${V.initScript?LG(V.initScript):"(unset)"}`),console.log(` override initPrompt: ${V.initPrompt?LG(V.initPrompt):"(unset)"}`);return}if(J==="set"){let H=o2(Y);if(H.initScript===void 0&&H.initPrompt===void 0)EY("set needs at least one of --init-script(-file) / --init-prompt(-file)");let B=X(JQ(process.cwd(),H.path??".")),V=G(B,{...H.initScript!==void 0?{initScript:H.initScript}:{},...H.initPrompt!==void 0?{initPrompt:H.initPrompt}:{}});console.log(`updated override for ${B}`),console.log(` initScript: ${V.initScript?LG(V.initScript):"(unset)"}`),console.log(` initPrompt: ${V.initPrompt?LG(V.initPrompt):"(unset)"}`);return}if(J==="unset"){let{path:H,clearScript:B,clearPrompt:V}=s2(Y),j=X(JQ(process.cwd(),H??".")),U=G(j,{...B?{initScript:""}:{},...V?{initPrompt:""}:{}});console.log(`cleared override for ${j}`),console.log(` initScript: ${U.initScript?LG(U.initScript):"(unset)"}`),console.log(` initPrompt: ${U.initPrompt?LG(U.initPrompt):"(unset)"}`);return}EY(`unknown verb "${J}"`)}function LG(f){let J=f.replace(/\s+/g," ").trim();return J.length>60?`"${J.slice(0,57)}\u2026"`:`"${J}"`}var gK;var CK=k(()=>{gK=["Usage: kobe repo <show|set|unset> [path] [options]","","Manage a repo's per-user init override (state.json fallback for repos","that don't ship .kobe/init.sh / .kobe/init-prompt.md).","","Commands:"," show [path] Print the override + whether the repo ships .kobe/ files"," set [path] <options> Set the init script and/or first prompt"," unset [path] [--init-script] [--init-prompt] Clear one or both (default: both)","","Set options (later wins; *-file reads from disk):"," --init-script <text> Inline shell to run before the engine"," --init-script-file <path> Read the init script from a file"," --init-prompt <text> Inline first prompt for the engine"," --init-prompt-file <path> Read the first prompt from a file",""," path defaults to the current directory (resolved to its git toplevel).",""].join(`
98
+ `)});import{spawnSync as e2}from"child_process";function YC(f){let[J,Y]=f.split("/");if(!J||!Y)throw Error(`invalid GitHub repository slug: ${f}`);return{owner:J,name:Y}}function kK(f,J){let Y=f.trim();if(!Y)throw Error(`${J} is required`);return Y}function NK(f,J){let Y=J?.map((z)=>typeof z.message==="string"?z.message:null).filter((z)=>!!z);if(Y&&Y.length>0)return Y.join("; ");return f.trim()||"GitHub CLI returned an empty response"}function yK(f,J,Y){let z=["api","graphql","-f",`query=${f}`];for(let[H,B]of Object.entries(J))z.push("-f",`${H}=${B}`);let G=Y.spawn("gh",z,{encoding:"utf8"});if(G.error)throw Error(`failed to run gh: ${G.error.message}`);let X=typeof G.stdout==="string"?G.stdout:String(G.stdout??""),q=typeof G.stderr==="string"?G.stderr:String(G.stderr??""),Q;try{Q=JSON.parse(X)}catch{throw Error(`failed to parse gh response: ${NK(q,void 0)}`)}if((G.status??0)!==0||Q.errors?.length)throw Error(NK(q,Q.errors));if(!Q.data)throw Error("GitHub CLI response did not include data");return Q.data}function zC(f){return`${f}
99
99
 
100
100
  ---
101
- Submitted from kobe ${s0}.`}function MG(f,J={}){let Y=RK(f.title,"feedback title"),z=YC(RK(f.body,"feedback body")),G=(J.repoSlug??aY)();if(!G)throw Error("package repository is not a GitHub repository");let{owner:X,name:q}=JC(G),Q=f.categorySlug?.trim()||Wj,H={spawn:J.spawn??t2},V=kK(e2,{owner:X,name:q},H).repository,j=V?.id;if(!j)throw Error(`GitHub repository not found: ${G}`);let U=V.discussionCategories?.nodes?.find((M)=>M.slug===Q);if(!U)throw Error(`GitHub Discussion category not found: ${Q}`);let O=kK(fC,{repositoryId:j,categoryId:U.id,title:Y,body:z},H).createDiscussion?.discussion;if(!O?.url||typeof O.number!=="number")throw Error("GitHub did not return the created Discussion");return{number:O.number,url:O.url}}var Wj="feedback",e2=`
101
+ Submitted from kobe ${s0}.`}function MG(f,J={}){let Y=kK(f.title,"feedback title"),z=zC(kK(f.body,"feedback body")),G=(J.repoSlug??aY)();if(!G)throw Error("package repository is not a GitHub repository");let{owner:X,name:q}=YC(G),Q=f.categorySlug?.trim()||Uj,H={spawn:J.spawn??e2},V=yK(fC,{owner:X,name:q},H).repository,j=V?.id;if(!j)throw Error(`GitHub repository not found: ${G}`);let U=V.discussionCategories?.nodes?.find((M)=>M.slug===Q);if(!U)throw Error(`GitHub Discussion category not found: ${Q}`);let O=yK(JC,{repositoryId:j,categoryId:U.id,title:Y,body:z},H).createDiscussion?.discussion;if(!O?.url||typeof O.number!=="number")throw Error("GitHub did not return the created Discussion");return{number:O.number,url:O.url}}var Uj="feedback",fC=`
102
102
  query($owner: String!, $name: String!) {
103
103
  repository(owner: $owner, name: $name) {
104
104
  id
@@ -111,7 +111,7 @@ query($owner: String!, $name: String!) {
111
111
  }
112
112
  }
113
113
  }
114
- `,fC=`
114
+ `,JC=`
115
115
  mutation($repositoryId: ID!, $categoryId: ID!, $title: String!, $body: String!) {
116
116
  createDiscussion(input: {
117
117
  repositoryId: $repositoryId,
@@ -125,74 +125,74 @@ mutation($repositoryId: ID!, $categoryId: ID!, $title: String!, $body: String!)
125
125
  }
126
126
  }
127
127
  }
128
- `;var fQ=k(()=>{D1()});async function NK(f={}){let J=f.mode==="require-running"?await p1():await UJ();if(!J)return null;return{client:J,close:()=>J.close()}}var yK=k(()=>{y1()});var vK={};jf(vK,{verbSchema:()=>Lj,verbHelp:()=>wK,validateAgainstSpec:()=>Uj,schemaIndex:()=>EK,runApiSubcommand:()=>yC,parseFlags:()=>Kj,parseAgentsSpec:()=>TK,invokeVerb:()=>NC,fullSchema:()=>xK,findVerb:()=>gX,deliverPrompt:()=>hK,defaultApiRuntime:()=>Mj,apiUsage:()=>JQ,VerbArgs:()=>Dj,VERB_GROUPS:()=>OG,VERBS:()=>AG,FANOUT_CAP:()=>FG,ApiError:()=>Mf,API_VERBS:()=>XC,API_SCHEMA_VERSION:()=>Vj});import{resolve as bK}from"path";function IK(f){for(let[J,Y]of Object.entries(OG))if(Y.includes(f))return J;return"other"}async function GC(f){let J=f.args.str("verb");if(J){let z=gX(J);if(!z)throw new Mf(`unknown verb: ${J}`,"BAD_VERB");return Lj(z)}let Y=f.args.str("group");if(Y)return qC(Y);if(f.args.bool("all"))return xK();return EK()}function gX(f){let J=YQ[f]??f;return AG.find((Y)=>Y.name===J)}function Kj(f,J=new Set){let Y=new Map,z=!1,G=!1;for(let X=0;X<f.length;X++){let q=f[X];if(!q.startsWith("--")&&q!=="-h")throw new Mf(`unexpected positional arg: ${q}`,"BAD_FLAG");if(q==="-h"){G=!0;continue}let Q=q.indexOf("=");if(Q!==-1){let V=q.slice(2,Q),j=q.slice(Q+1);if(V==="pretty")z=j!=="false"&&j!=="0";else if(V==="help")G=j!=="false"&&j!=="0";else Y.set(V,j);continue}let H=q.slice(2);if(H==="pretty"){z=!0;continue}if(H==="help"){G=!0;continue}if(J.has(H)){Y.set(H,"true");continue}let B=f[X+1];if(B===void 0||B.startsWith("--"))throw new Mf(`flag --${H} requires a value`,"BAD_FLAG");Y.set(H,B),X+=1}return{flags:Y,pretty:z,help:G}}function Uj(f,J){let Y=new Set(f.flags.map((z)=>z.name));for(let z of J.keys())if(!Y.has(z))throw new Mf(`unknown flag --${z} for "${f.name}". Run \`kobe api ${f.name} --help\``,"BAD_FLAG");for(let z of f.flags){if(z.required&&!J.get(z.name))throw new Mf(`--${z.name} is required for "${f.name}"`,"MISSING_FLAG");if(z.type==="enum"&&z.values){let G=J.get(z.name);if(G!==void 0&&!z.values.includes(G))throw new Mf(`--${z.name} must be one of ${z.values.join(", ")}`,"BAD_FLAG")}if(z.type==="int"){let G=J.get(z.name);if(G!==void 0){let X=Number.parseInt(G,10);if(!Number.isInteger(X)||X<=0)throw new Mf(`--${z.name} must be a positive integer`,"BAD_FLAG")}}}}class Dj{verb;flags;constructor(f,J){this.verb=f;this.flags=J}spec(f){let J=this.verb.flags.find((Y)=>Y.name===f);if(!J)throw Error(`internal: --${f} is not declared on verb "${this.verb.name}"`);return J}str(f){this.spec(f);let J=this.flags.get(f);return J&&J.length>0?J:void 0}require(f){let J=this.str(f);if(J===void 0)throw new Mf(`--${f} is required`,"MISSING_FLAG");return J}enumOf(f){let J=this.spec(f),Y=this.str(f);if(Y===void 0)return;if(J.values&&!J.values.includes(Y))throw new Mf(`--${f} must be one of ${J.values.join(", ")}`,"BAD_FLAG");return Y}requireEnum(f){return this.require(f),this.enumOf(f)}vendor(){return this.enumOf("vendor")}bool(f){this.spec(f);let J=this.str(f);if(J===void 0)return;if(["true","1","yes"].includes(J))return!0;if(["false","0","no"].includes(J))return!1;throw new Mf(`--${f} must be a boolean (true/false)`,"BAD_FLAG")}int(f){this.spec(f);let J=this.str(f);if(J===void 0)return;let Y=Number.parseInt(J,10);if(!Number.isInteger(Y)||Y<=0)throw new Mf(`--${f} must be a positive integer`,"BAD_FLAG");return Y}path(f){let J=this.str(f);return J===void 0?void 0:bK(process.cwd(),J)}requirePath(f){return bK(process.cwd(),this.require(f))}}function TK(f){let J=[];for(let Y of f.split(",")){let z=Y.trim();if(!z)continue;let G=z.indexOf(":");if(G===-1)throw new Mf(`--agents entry "${z}" must be vendor:count`,"BAD_FLAG");let X=z.slice(0,G);if(!cf.includes(X))throw new Mf(`--agents vendor "${X}" must be one of ${cf.join(", ")}`,"BAD_FLAG");let q=Number.parseInt(z.slice(G+1),10);if(!Number.isInteger(q)||q<=0)throw new Mf(`--agents count for "${X}" must be a positive integer`,"BAD_FLAG");if(J.length+q>FG)throw new Mf(`--agents requests ${J.length+q} agents, exceeds the cap of ${FG}`,"BAD_FLAG");for(let Q=0;Q<q;Q++)J.push(X)}if(J.length===0)throw new Mf('--agents specified no agents (e.g. "claude:2,codex:1")',"BAD_FLAG");return J}function ZC(f){return{name:f.name,type:f.type,required:f.required??!1,...f.values?{values:f.values}:{},...f.default!==void 0?{default:f.default}:{},...f.placeholder?{placeholder:f.placeholder}:{},description:f.description}}function Lj(f){return{name:f.name,group:IK(f.name),summary:f.summary,offline:f.offline??!1,flags:f.flags.map(ZC)}}function EK(){return{apiVersion:Vj,kobeVersion:s0,hint:"Compact index. Drill into ONE verb: `kobe api schema --verb <name>` (or `kobe api <verb> --help`). One group: `--group <g>`. Whole spec: `--all`.",groups:OG,verbs:AG.map((f)=>({name:f.name,group:IK(f.name),summary:f.summary})),globalFlags:uK,aliases:YQ}}function qC(f){let J=OG[f];if(!J)throw new Mf(`unknown group: ${f}. Groups: ${Object.keys(OG).join(", ")}`,"BAD_FLAG");return{group:f,verbs:J.map((Y)=>{let z=gX(Y);return{name:Y,summary:z?.summary??""}})}}function xK(){return{apiVersion:Vj,kobeVersion:s0,output:{success:"one JSON object on stdout, newline-terminated, exit 0",error:'{"error":{"message","code"}} on stderr, exit != 0',pretty:"--pretty indents stdout JSON"},globalFlags:uK,aliases:YQ,groups:OG,verbs:AG.map(Lj)}}function QC(f){return f.flags.map((J)=>{let Y=J.type==="enum"&&J.values?J.values.join("|"):J.placeholder??(J.type==="bool"?"":"X"),z=Y?`--${J.name} ${Y}`:`--${J.name}`;return J.required?z:`[${z}]`}).join(" ")}function wK(f){let J=[`kobe api ${f.name} ${QC(f)}`.trimEnd(),"",f.summary,""],Y=Object.entries(YQ).find(([,z])=>z===f.name)?.[0];if(Y)J.push(`Alias: ${Y}`,"");if(f.flags.length>0){J.push("Flags:");for(let z of f.flags){let G=z.required?" (required)":"",X=z.default!==void 0?` [default: ${z.default}]`:"",q=z.type==="enum"&&z.values?` {${z.values.join("|")}}`:"";J.push(` --${z.name}${q}${G}${X} ${z.description}`)}J.push("")}return J.push("Global: [--pretty] [--help]"),J.join(`
129
- `)}function JQ(){return["usage: kobe api <verb> [flags] [--pretty] [--help]","","Explore the full surface (names, flags, types) with: kobe api schema","","verbs:",...AG.map((J)=>` ${J.name.padEnd(18)} ${J.summary}`),"","Output is one JSON object on stdout (exit 0); errors are JSON on stderr (exit != 0)."].join(`
130
- `)}function HC(f,J){let Y=J?JSON.stringify(f,null,2):JSON.stringify(f);process.stdout.write(`${Y}
128
+ `;var YQ=k(()=>{D1()});async function bK(f={}){let J=f.mode==="require-running"?await p1():await KJ();if(!J)return null;return{client:J,close:()=>J.close()}}var SK=k(()=>{L1()});var cK={};jf(cK,{verbSchema:()=>Oj,verbHelp:()=>PK,validateAgainstSpec:()=>Mj,schemaIndex:()=>wK,runApiSubcommand:()=>bC,parseFlags:()=>Lj,parseAgentsSpec:()=>EK,invokeVerb:()=>yC,fullSchema:()=>hK,findVerb:()=>RX,deliverPrompt:()=>vK,defaultApiRuntime:()=>Aj,apiUsage:()=>zQ,VerbArgs:()=>Fj,VERB_GROUPS:()=>OG,VERBS:()=>AG,FANOUT_CAP:()=>FG,ApiError:()=>Mf,API_VERBS:()=>ZC,API_SCHEMA_VERSION:()=>Dj});import{resolve as IK}from"path";function uK(f){for(let[J,Y]of Object.entries(OG))if(Y.includes(f))return J;return"other"}async function XC(f){let J=f.args.str("verb");if(J){let z=RX(J);if(!z)throw new Mf(`unknown verb: ${J}`,"BAD_VERB");return Oj(z)}let Y=f.args.str("group");if(Y)return QC(Y);if(f.args.bool("all"))return hK();return wK()}function RX(f){let J=GQ[f]??f;return AG.find((Y)=>Y.name===J)}function Lj(f,J=new Set){let Y=new Map,z=!1,G=!1;for(let X=0;X<f.length;X++){let q=f[X];if(!q.startsWith("--")&&q!=="-h")throw new Mf(`unexpected positional arg: ${q}`,"BAD_FLAG");if(q==="-h"){G=!0;continue}let Q=q.indexOf("=");if(Q!==-1){let V=q.slice(2,Q),j=q.slice(Q+1);if(V==="pretty")z=j!=="false"&&j!=="0";else if(V==="help")G=j!=="false"&&j!=="0";else Y.set(V,j);continue}let H=q.slice(2);if(H==="pretty"){z=!0;continue}if(H==="help"){G=!0;continue}if(J.has(H)){Y.set(H,"true");continue}let B=f[X+1];if(B===void 0||B.startsWith("--"))throw new Mf(`flag --${H} requires a value`,"BAD_FLAG");Y.set(H,B),X+=1}return{flags:Y,pretty:z,help:G}}function Mj(f,J){let Y=new Set(f.flags.map((z)=>z.name));for(let z of J.keys())if(!Y.has(z))throw new Mf(`unknown flag --${z} for "${f.name}". Run \`kobe api ${f.name} --help\``,"BAD_FLAG");for(let z of f.flags){if(z.required&&!J.get(z.name))throw new Mf(`--${z.name} is required for "${f.name}"`,"MISSING_FLAG");if(z.type==="enum"&&z.values){let G=J.get(z.name);if(G!==void 0&&!z.values.includes(G))throw new Mf(`--${z.name} must be one of ${z.values.join(", ")}`,"BAD_FLAG")}if(z.type==="int"){let G=J.get(z.name);if(G!==void 0){let X=Number.parseInt(G,10);if(!Number.isInteger(X)||X<=0)throw new Mf(`--${z.name} must be a positive integer`,"BAD_FLAG")}}}}class Fj{verb;flags;constructor(f,J){this.verb=f;this.flags=J}spec(f){let J=this.verb.flags.find((Y)=>Y.name===f);if(!J)throw Error(`internal: --${f} is not declared on verb "${this.verb.name}"`);return J}str(f){this.spec(f);let J=this.flags.get(f);return J&&J.length>0?J:void 0}require(f){let J=this.str(f);if(J===void 0)throw new Mf(`--${f} is required`,"MISSING_FLAG");return J}enumOf(f){let J=this.spec(f),Y=this.str(f);if(Y===void 0)return;if(J.values&&!J.values.includes(Y))throw new Mf(`--${f} must be one of ${J.values.join(", ")}`,"BAD_FLAG");return Y}requireEnum(f){return this.require(f),this.enumOf(f)}vendor(){return this.enumOf("vendor")}bool(f){this.spec(f);let J=this.str(f);if(J===void 0)return;if(["true","1","yes"].includes(J))return!0;if(["false","0","no"].includes(J))return!1;throw new Mf(`--${f} must be a boolean (true/false)`,"BAD_FLAG")}int(f){this.spec(f);let J=this.str(f);if(J===void 0)return;let Y=Number.parseInt(J,10);if(!Number.isInteger(Y)||Y<=0)throw new Mf(`--${f} must be a positive integer`,"BAD_FLAG");return Y}path(f){let J=this.str(f);return J===void 0?void 0:IK(process.cwd(),J)}requirePath(f){return IK(process.cwd(),this.require(f))}}function EK(f){let J=[];for(let Y of f.split(",")){let z=Y.trim();if(!z)continue;let G=z.indexOf(":");if(G===-1)throw new Mf(`--agents entry "${z}" must be vendor:count`,"BAD_FLAG");let X=z.slice(0,G);if(!cf.includes(X))throw new Mf(`--agents vendor "${X}" must be one of ${cf.join(", ")}`,"BAD_FLAG");let q=Number.parseInt(z.slice(G+1),10);if(!Number.isInteger(q)||q<=0)throw new Mf(`--agents count for "${X}" must be a positive integer`,"BAD_FLAG");if(J.length+q>FG)throw new Mf(`--agents requests ${J.length+q} agents, exceeds the cap of ${FG}`,"BAD_FLAG");for(let Q=0;Q<q;Q++)J.push(X)}if(J.length===0)throw new Mf('--agents specified no agents (e.g. "claude:2,codex:1")',"BAD_FLAG");return J}function qC(f){return{name:f.name,type:f.type,required:f.required??!1,...f.values?{values:f.values}:{},...f.default!==void 0?{default:f.default}:{},...f.placeholder?{placeholder:f.placeholder}:{},description:f.description}}function Oj(f){return{name:f.name,group:uK(f.name),summary:f.summary,offline:f.offline??!1,flags:f.flags.map(qC)}}function wK(){return{apiVersion:Dj,kobeVersion:s0,hint:"Compact index. Drill into ONE verb: `kobe api schema --verb <name>` (or `kobe api <verb> --help`). One group: `--group <g>`. Whole spec: `--all`.",groups:OG,verbs:AG.map((f)=>({name:f.name,group:uK(f.name),summary:f.summary})),globalFlags:xK,aliases:GQ}}function QC(f){let J=OG[f];if(!J)throw new Mf(`unknown group: ${f}. Groups: ${Object.keys(OG).join(", ")}`,"BAD_FLAG");return{group:f,verbs:J.map((Y)=>{let z=RX(Y);return{name:Y,summary:z?.summary??""}})}}function hK(){return{apiVersion:Dj,kobeVersion:s0,output:{success:"one JSON object on stdout, newline-terminated, exit 0",error:'{"error":{"message","code"}} on stderr, exit != 0',pretty:"--pretty indents stdout JSON"},globalFlags:xK,aliases:GQ,groups:OG,verbs:AG.map(Oj)}}function HC(f){return f.flags.map((J)=>{let Y=J.type==="enum"&&J.values?J.values.join("|"):J.placeholder??(J.type==="bool"?"":"X"),z=Y?`--${J.name} ${Y}`:`--${J.name}`;return J.required?z:`[${z}]`}).join(" ")}function PK(f){let J=[`kobe api ${f.name} ${HC(f)}`.trimEnd(),"",f.summary,""],Y=Object.entries(GQ).find(([,z])=>z===f.name)?.[0];if(Y)J.push(`Alias: ${Y}`,"");if(f.flags.length>0){J.push("Flags:");for(let z of f.flags){let G=z.required?" (required)":"",X=z.default!==void 0?` [default: ${z.default}]`:"",q=z.type==="enum"&&z.values?` {${z.values.join("|")}}`:"";J.push(` --${z.name}${q}${G}${X} ${z.description}`)}J.push("")}return J.push("Global: [--pretty] [--help]"),J.join(`
129
+ `)}function zQ(){return["usage: kobe api <verb> [flags] [--pretty] [--help]","","Explore the full surface (names, flags, types) with: kobe api schema","","verbs:",...AG.map((J)=>` ${J.name.padEnd(18)} ${J.summary}`),"","Output is one JSON object on stdout (exit 0); errors are JSON on stderr (exit != 0)."].join(`
130
+ `)}function BC(f,J){let Y=J?JSON.stringify(f,null,2):JSON.stringify(f);process.stdout.write(`${Y}
131
131
  `)}function eJ(f,J,Y=1){process.stderr.write(`${JSON.stringify({error:{message:f,code:J}})}
132
- `),process.exit(Y)}async function hK(f,J,Y,z=BC){let G=J.worktreePath;if(!G)G=(await f.request("task.ensureWorktree",{taskId:J.id})).worktreePath;if(!G)throw new Mf(`task ${J.id} has no worktree`,"NO_WORKTREE");let X=Lf(J.id),q=await z.sessionExists(X);if(!q){let B=await z.resolveEngineLaunchInit(J.repo??"",G,{kind:"none"});if(!await z.ensureSession({name:X,cwd:G,command:z.engineCommand(J.vendor),taskId:J.id,vendor:J.vendor,repo:J.repo,launchInit:B}))throw new Mf(`failed to start tmux session for ${J.id}`,"SESSION_FAILED")}let{pane:Q,ready:H}=await z.waitForEnginePane(X,!q);if(!Q)throw new Mf(`no engine pane in session ${X}`,"NO_ENGINE_PANE");return await z.pasteAndSubmit(Q,Y),{session:X,pane:Q,started:!q,engineReady:H}}async function jC(f){let J=null,Y=f.onChannel("active-task",(z)=>{J=z.taskId});try{await f.subscribe()}finally{Y()}return J}function h1(f){if(!f.client)throw new Mf("daemon required","BAD_DAEMON");return f.client}async function DJ(f,J,Y){return h1(f).request(J,Y)}async function WC(f){let J=f.args.str("title"),Y=f.args.str("body");if(J===void 0&&Y===void 0)throw new Mf("issue-update requires --title and/or --body","MISSING_FLAG");return DJ(f,"issue.mutate",{repoRoot:f.args.requirePath("repo"),op:{type:"update",id:f.args.int("id"),title:J,body:Y}})}async function VC(f){let J=h1(f),{args:Y,runtime:z}=f,X={repo:await z.resolveRepoRoot(Y.requirePath("repo"))},q=Y.str("title");if(q)X.title=q;let Q=Y.str("branch");if(Q)X.branch=Q;let H=Y.str("base-branch");if(H)X.baseRef=H;let B=Y.vendor()??await z.defaultVendor();if(B)X.vendor=B;let V=await J.request("task.create",X),j=V.taskId;await J.request("task.setActive",{taskId:j});let U=Y.enumOf("status");if(U)await J.request("task.status",{taskId:j,status:U});let L=Y.bool("pin");if(L!==void 0)await J.request("task.pin",{taskId:j,pinned:L});let O=V.task;if(U||L!==void 0)O=(await J.request("task.get",{taskId:j})).task;let M=Y.str("prompt");if(!M)return{taskId:j,task:O,started:!1};let R=await f.runtime.deliverPrompt(J,{id:j,worktreePath:O.worktreePath,vendor:O.vendor,repo:O.repo},M);return O=(await J.request("task.get",{taskId:j})).task,{taskId:j,task:O,started:R.started,engineReady:R.engineReady,session:R.session}}async function KC(f){let J=h1(f),Y=f.args.require("prompt"),z=f.args.str("task-id");if(!z){let q=await jC(J);if(!q)throw new Mf("no --task-id given and no active task \u2014 open a task first or pass --task-id","MISSING_TARGET");z=q}let G=await J.request("task.get",{taskId:z}),X=await f.runtime.deliverPrompt(J,{id:z,worktreePath:G.task.worktreePath,vendor:G.task.vendor,repo:G.task.repo},Y);return{ok:!0,taskId:z,session:X.session,started:X.started,engineReady:X.engineReady}}async function UC(f){let J=h1(f),Y=f.args.require("task-id"),z=f.args.require("prompt");return await J.request("session.deliver",{taskId:Y,text:z,source:"dispatcher"}),{ok:!0,taskId:Y,routed:"session.deliver"}}async function DC(f){let J=h1(f),Y=f.args.require("task-id"),z=f.args.require("text");return await J.request("note.file",{taskId:Y,text:z})}async function LC(f){let J=h1(f),Y=f.args.require("task-id"),z=await J.request("task.get",{taskId:Y}),G=await f.runtime.isTaskRunning(Y);return{task:z.task,running:G}}async function MC(f){return h1(f).request("task.list")}async function FC(f){let J=h1(f),z=f.args.bool("none")?null:f.args.require("task-id");return await J.request("task.setActive",{taskId:z}),{ok:!0,activeTaskId:z}}async function OC(f){let J=h1(f),Y=f.args.require("task-id"),z=f.args.bool("archived")??!0,G=await J.request("task.archive",{taskId:Y,archived:z});if(z)await f.runtime.tearDownSession(Y);return G}async function AC(f){let J=h1(f),Y=f.args.require("task-id"),z=f.args.bool("force")??!1,G=await J.request("task.delete",{taskId:Y,force:z});return await f.runtime.tearDownSession(Y),G}async function gC(f){let J=h1(f),{args:Y}=f,z={repo:Y.requirePath("repo"),worktreePath:Y.requirePath("worktree")},G=Y.str("branch");if(G)z.branch=G;let X=Y.vendor();if(X)z.vendor=X;let q=Y.str("title");if(q)z.title=q;return J.request("worktree.adopt",z)}async function RC(f){let J=h1(f),{args:Y,runtime:z}=f,G=await z.resolveRepoRoot(Y.requirePath("repo")),X=Y.require("prompt"),q=Y.str("title"),Q=Y.str("base-branch"),H=Y.str("agents"),B=await z.defaultVendor(),V=H?TK(H):Array(Y.int("count")??1).fill(Y.vendor()??B??"claude");if(V.length>FG)throw new Mf(`fan-out of ${V.length} exceeds the cap of ${FG} \u2014 spawn in batches`,"BAD_FLAG");let j=[];for(let U of V){let L={repo:G,vendor:U};if(q)L.title=q;if(Q)L.baseRef=Q;let O=await J.request("task.create",L),M=await f.runtime.deliverPrompt(J,{id:O.taskId,worktreePath:O.task.worktreePath,vendor:U,repo:O.task.repo},X);j.push({taskId:O.taskId,vendor:U,started:M.started,engineReady:M.engineReady,session:M.session})}return{count:j.length,tasks:j}}async function CC(f){let J=h1(f),{args:Y,runtime:z}=f,G=Y.str("task-ids"),X=Y.path("repo"),q;if(G)q=G.split(",").map((H)=>H.trim()).filter(Boolean);else if(X){let H=await z.resolveRepoRoot(X),{tasks:B}=await J.request("task.list");q=[];for(let V of B){if(V.archived)continue;if(await z.resolveRepoRoot(V.repo)===H)q.push(V.id)}}else throw new Mf("collect needs --task-ids id1,id2 or --repo PATH","MISSING_TARGET");let Q=[];for(let H of q){let{task:B}=await J.request("task.get",{taskId:H}),V=await z.isTaskRunning(H),j=B.worktreePath?await z.readWorktreeChanges(B.worktreePath):{added:0,deleted:0};Q.push({taskId:B.id,title:B.title,branch:B.branch,worktreePath:B.worktreePath,vendor:B.vendor,status:B.status,running:V,changes:j})}return{tasks:Q}}async function kC(f){return{ok:!0,discussion:MG({title:f.args.require("title"),body:f.args.require("body"),categorySlug:f.args.str("category")})}}function PK(f,J,Y,z){return{args:new Dj(f,J),client:Y,runtime:z}}async function NC(f,J,Y){let z=gX(f);if(!z)throw new Mf(`unknown verb: ${f}`,"BAD_VERB");let G=new Set(z.flags.filter((q)=>q.type==="bool").map((q)=>q.name)),X=Kj(J,G);return Uj(z,X.flags),z.handler(PK(z,X.flags,Y.client,Y.runtime??Mj))}async function yC(f){let[J,...Y]=f;if(!J||J==="--help"||J==="-h"||J==="help"){if(!J)eJ(JQ(),"MISSING_VERB",2);process.stdout.write(`${JQ()}
133
- `);return}let z=gX(J);if(!z)eJ(`unknown verb: ${J}
134
- ${JQ()}`,"BAD_VERB",2);let G=new Set(z.flags.filter((Q)=>Q.type==="bool").map((Q)=>Q.name)),X;try{X=Kj(Y,G)}catch(Q){if(Q instanceof Mf)eJ(Q.message,Q.code,2);eJ(Q instanceof Error?Q.message:String(Q),"BAD_FLAG",2)}if(X.help){process.stdout.write(`${wK(z)}
135
- `);return}try{Uj(z,X.flags)}catch(Q){if(Q instanceof Mf)eJ(Q.message,Q.code,2);eJ(Q instanceof Error?Q.message:String(Q),"BAD_FLAG",2)}let q=null;if(!z.offline)try{q=await NK()}catch(Q){eJ(`could not reach or start the kobe daemon: ${Q instanceof Error?Q.message:String(Q)}`,"BAD_DAEMON",2)}try{let Q=await z.handler(PK(z,X.flags,q?.client??null,Mj));HC(Q,X.pretty)}catch(Q){if(Q instanceof Mf)eJ(Q.message,Q.code,1);eJ(Q instanceof Error?Q.message:String(Q),"RPC_ERROR",1)}finally{q?.close()}}var Vj=2,FG=10,SK,zC,Mf,Vf,YQ,OG,AG,XC,uK,BC,Mj;var mK=k(()=>{E1();fQ();Tf();Cq();U1();D1();yK();SK=["backlog","in_progress","in_review","done","canceled","error"],zC=["open","doing","hold","done"];Mf=class Mf extends Error{code;constructor(f,J){super(f);this.code=J}};Vf={repo:(f=!0)=>({name:"repo",type:"string",required:f,placeholder:"PATH",description:"Repo root (git toplevel). Relative paths resolve against $PWD."}),taskId:(f=!0)=>({name:"task-id",type:"string",required:f,placeholder:"ID",description:"Target task id (from `list` / `add`)."}),vendor:()=>({name:"vendor",type:"enum",values:cf,placeholder:"V",description:"Engine vendor for the task."}),title:()=>({name:"title",type:"string",placeholder:"T",description:"Human task title."}),prompt:(f,J)=>({name:"prompt",type:"string",required:f,placeholder:"TEXT",description:J})},YQ={"spawn-task":"add"},OG={discover:["schema"],read:["list","get-task","collect"],create:["add","fan-out"],drive:["send","dispatch","note","set-active"],edit:["rename","set-branch","set-vendor","set-status"],issues:["issue-list","issue-create","issue-set-status","issue-update"],lifecycle:["archive","pin","delete"],worktree:["ensure-worktree","adopt","discover-adoptable"],feedback:["feedback"]};AG=[{name:"schema",summary:"Explore the API. Default = a COMPACT index (groups + verb summaries, no flags). Drill in with --verb / --group; --all for the full spec.",flags:[{name:"verb",type:"string",placeholder:"NAME",description:"Full flag detail for ONE verb."},{name:"group",type:"string",placeholder:"G",description:"List the verbs in one group (compact)."},{name:"all",type:"bool",description:"The COMPLETE spec \u2014 every verb AND every flag (large; avoid by default)."}],offline:!0,handler:GC},{name:"list",summary:"List all tasks (incl. archived). Returns { tasks }.",flags:[],handler:MC},{name:"get-task",summary:"Read one task's metadata. `.running` = its tmux session is live.",flags:[Vf.taskId()],handler:LC},{name:"add",summary:"Create a task (shows in the sidebar immediately). With --prompt it also starts the engine and delivers it. Alias: spawn-task.",flags:[Vf.repo(),Vf.title(),{name:"branch",type:"string",placeholder:"B",description:"Explicit branch name (else auto kobe/<slug>-<id>)."},{name:"base-branch",type:"string",placeholder:"B",description:"Base ref the worktree branches from."},Vf.vendor(),{name:"status",type:"enum",values:SK,default:"backlog",description:"Initial lifecycle status."},{name:"pin",type:"bool",description:"Pin the task to the top of the sidebar."},Vf.prompt(!1,"Optional first message \u2014 when set, materializes the worktree, starts the engine, and pastes it.")],handler:VC},{name:"fan-out",summary:`Spawn N tasks of ONE prompt in a single call (parallel attempts). Capped at ${FG}.`,flags:[Vf.repo(),Vf.prompt(!0,"Shared prompt delivered to every spawned task."),{name:"count",type:"int",placeholder:"N",description:"Number of tasks of one vendor (with --vendor)."},{name:"agents",type:"string",placeholder:"claude:2,codex:1",description:"Per-vendor counts (alternative to --count)."},Vf.vendor(),Vf.title(),{name:"base-branch",type:"string",placeholder:"B",description:"Base ref for every worktree."}],handler:RC},{name:"send",summary:"Paste a follow-up prompt into a task's running engine (one full turn). Defaults to the active task.",flags:[Vf.taskId(!1),Vf.prompt(!0,"Text pasted + submitted into the engine pane.")],handler:KC},{name:"dispatch",summary:"Route text into a task's live session via the daemon's session.deliver channel \u2014 the front-end hosting the session pastes it. The dispatcher's messenger (docs/design/dispatcher.md); unlike `send`, it never spawns or touches tmux itself.",flags:[Vf.taskId(!0),Vf.prompt(!0,"Text delivered into the task's engine session.")],handler:UC},{name:"note",summary:"File a one-line field note \u2014 a resolved, repo-level gotcha worth sharing. kobe forwards it to the repo's dispatcher session (the main session), which relays it to the in-flight tasks that benefit (docs/design/dispatcher.md).",flags:[Vf.taskId(!0),{name:"text",type:"string",required:!0,placeholder:"TEXT",description:"One line: the verified conclusion another session could act on."}],handler:DC},{name:"feedback",summary:"Create a GitHub Discussion in the kobe repo's Feedback category through `gh`.",flags:[{name:"title",type:"string",required:!0,placeholder:"T",description:"Discussion title."},{name:"body",type:"string",required:!0,placeholder:"TEXT",description:"Discussion body."},{name:"category",type:"string",default:Wj,placeholder:"SLUG",description:"Discussion category slug."}],offline:!0,handler:kC},{name:"issue-list",summary:"List daemon-owned issues for a repo.",flags:[Vf.repo()],handler:(f)=>DJ(f,"issue.list",{repoRoot:f.args.requirePath("repo")})},{name:"issue-create",summary:"Create a daemon-owned issue for a repo.",flags:[Vf.repo(),{name:"title",type:"string",required:!0,placeholder:"T",description:"Issue title."},{name:"body",type:"string",placeholder:"TEXT",description:"Issue body."}],handler:(f)=>DJ(f,"issue.mutate",{repoRoot:f.args.requirePath("repo"),op:{type:"create",title:f.args.require("title"),body:f.args.str("body")}})},{name:"issue-set-status",summary:"Set a daemon-owned issue's status.",flags:[Vf.repo(),{name:"id",type:"int",required:!0,placeholder:"N",description:"Issue id."},{name:"status",type:"enum",required:!0,values:zC,description:"New issue status."}],handler:(f)=>DJ(f,"issue.mutate",{repoRoot:f.args.requirePath("repo"),op:{type:"setStatus",id:f.args.int("id"),status:f.args.requireEnum("status")}})},{name:"issue-update",summary:"Update a daemon-owned issue's title and/or body.",flags:[Vf.repo(),{name:"id",type:"int",required:!0,placeholder:"N",description:"Issue id."},{name:"title",type:"string",placeholder:"T",description:"New title."},{name:"body",type:"string",placeholder:"TEXT",description:"New body."}],handler:WC},{name:"collect",summary:"Read-only comparison snapshot of several tasks (identity, branch, .running, uncommitted .changes).",flags:[{name:"task-ids",type:"csv",placeholder:"a,b,c",description:"Comma-separated task ids."},Vf.repo(!1)],handler:CC},{name:"rename",summary:"Set a task's title.",flags:[Vf.taskId(),{name:"title",type:"string",required:!0,placeholder:"T",description:"New title."}],handler:(f)=>DJ(f,"task.rename",{taskId:f.args.require("task-id"),title:f.args.require("title")})},{name:"set-branch",summary:"Rename a task's branch (git branch -m if materialized, else recorded).",flags:[Vf.taskId(),{name:"branch",type:"string",required:!0,placeholder:"B",description:"New branch name."}],handler:(f)=>DJ(f,"task.setBranch",{taskId:f.args.require("task-id"),branch:f.args.require("branch")})},{name:"set-vendor",summary:"Change a task's engine vendor (takes effect on next session rebuild).",flags:[Vf.taskId(),{...Vf.vendor(),required:!0}],handler:(f)=>DJ(f,"task.setVendor",{taskId:f.args.require("task-id"),vendor:f.args.requireEnum("vendor")})},{name:"set-status",summary:"Set a task's lifecycle status.",flags:[Vf.taskId(),{name:"status",type:"enum",required:!0,values:SK,description:"New status."}],handler:(f)=>DJ(f,"task.status",{taskId:f.args.require("task-id"),status:f.args.requireEnum("status")})},{name:"archive",summary:"Archive (or with --archived=false, unarchive) a task. Non-destructive: worktree/branch/history stay.",flags:[Vf.taskId(),{name:"archived",type:"bool",default:"true",description:"true to archive, false to unarchive."}],handler:OC},{name:"pin",summary:"Pin (or with --pinned=false, unpin) a task to the top of the sidebar.",flags:[Vf.taskId(),{name:"pinned",type:"bool",default:"true",description:"true to pin, false to unpin."}],handler:(f)=>DJ(f,"task.pin",{taskId:f.args.require("task-id"),pinned:f.args.bool("pinned")??!0})},{name:"set-active",summary:"Set the shared active task (the focus every Tasks pane highlights). Pass --none to clear.",flags:[Vf.taskId(!1),{name:"none",type:"bool",description:"Clear the active task instead of setting one."}],handler:FC},{name:"ensure-worktree",summary:"Materialize a task's git worktree on disk now (without starting an engine). Returns { worktreePath }.",flags:[Vf.taskId()],handler:(f)=>DJ(f,"task.ensureWorktree",{taskId:f.args.require("task-id")})},{name:"delete",summary:"Permanently remove a task (and its worktree). DESTRUCTIVE \u2014 prefer `archive`. Needs --force on a dirty worktree.",flags:[Vf.taskId(),{name:"force",type:"bool",description:"Delete even with uncommitted changes."}],handler:AC},{name:"discover-adoptable",summary:"List existing git worktrees in a repo not yet tracked as kobe tasks. Returns { worktrees }.",flags:[Vf.repo()],handler:(f)=>DJ(f,"worktree.discoverAdoptable",{repo:f.args.requirePath("repo")})},{name:"adopt",summary:"Import an existing git worktree as a kobe task. Returns { task }.",flags:[Vf.repo(),{name:"worktree",type:"string",required:!0,placeholder:"PATH",description:"Path of the worktree to adopt."},{name:"branch",type:"string",placeholder:"B",description:"Branch override (else the worktree's own)."},Vf.vendor(),Vf.title()],handler:gC}],XC=AG.map((f)=>f.name);uK=[{name:"pretty",type:"bool",description:"Pretty-print stdout JSON."},{name:"help",type:"bool",description:"Show usage for the verb and exit."}];BC={sessionExists:Hf,ensureSession:async(f)=>(await Promise.resolve().then(() => (J1(),r1))).ensureSession(f),waitForEnginePane:VX,pasteAndSubmit:KX,resolveEngineLaunchInit:async(f,J,Y)=>(await Promise.resolve().then(() => (GG(),EB))).resolveEngineLaunchInit(f,J,Y),engineCommand:N1};Mj={isTaskRunning:(f)=>Hf(Lf(f)),deliverPrompt:(f,J,Y)=>hK(f,J,Y),resolveRepoRoot:async(f)=>(await Promise.resolve().then(() => (Of(),cJ))).resolveMainRepoRoot(f),defaultVendor:async()=>{let{getPersistedString:f}=await Promise.resolve().then(() => (Of(),cJ)),J=f("lastSelectedVendor")?.trim();return J?J:void 0},readWorktreeChanges:async(f)=>(await Promise.resolve().then(() => (VG(),zK))).readWorktreeChanges(f),tearDownSession:async(f)=>{let J=Lf(f);await bJ(J).catch(()=>{}),await l1(J).catch(()=>{})}}});var iK={};jf(iK,{updatePlan:()=>cK,runUpdateSubcommand:()=>SC,parseUpdateArgs:()=>nK});import{spawnSync as bC}from"child_process";function cK(){return{command:"sh",args:["-c",hJ],display:hJ}}function nK(f){let J=!1;for(let Y=0;Y<f.length;Y+=1){let z=f[Y];if(z==="--help"||z==="-h"||z==="help")return{help:!0,dryRun:J};if(z==="--dry-run"){J=!0;continue}process.stderr.write(`kobe update: unknown argument "${z}"
132
+ `),process.exit(Y)}async function vK(f,J,Y,z=jC){let G=J.worktreePath;if(!G)G=(await f.request("task.ensureWorktree",{taskId:J.id})).worktreePath;if(!G)throw new Mf(`task ${J.id} has no worktree`,"NO_WORKTREE");let X=Lf(J.id),q=await z.sessionExists(X);if(!q){let B=await z.resolveEngineLaunchInit(J.repo??"",G,{kind:"none"});if(!await z.ensureSession({name:X,cwd:G,command:z.engineCommand(J.vendor),taskId:J.id,vendor:J.vendor,repo:J.repo,launchInit:B}))throw new Mf(`failed to start tmux session for ${J.id}`,"SESSION_FAILED")}let{pane:Q,ready:H}=await z.waitForEnginePane(X,!q);if(!Q)throw new Mf(`no engine pane in session ${X}`,"NO_ENGINE_PANE");return await z.pasteAndSubmit(Q,Y),{session:X,pane:Q,started:!q,engineReady:H}}async function WC(f){let J=null,Y=f.onChannel("active-task",(z)=>{J=z.taskId});try{await f.subscribe()}finally{Y()}return J}function P1(f){if(!f.client)throw new Mf("daemon required","BAD_DAEMON");return f.client}async function DJ(f,J,Y){return P1(f).request(J,Y)}async function VC(f){let J=f.args.str("title"),Y=f.args.str("body");if(J===void 0&&Y===void 0)throw new Mf("issue-update requires --title and/or --body","MISSING_FLAG");return DJ(f,"issue.mutate",{repoRoot:f.args.requirePath("repo"),op:{type:"update",id:f.args.int("id"),title:J,body:Y}})}async function KC(f){let J=P1(f),{args:Y,runtime:z}=f,X={repo:await z.resolveRepoRoot(Y.requirePath("repo"))},q=Y.str("title");if(q)X.title=q;let Q=Y.str("branch");if(Q)X.branch=Q;let H=Y.str("base-branch");if(H)X.baseRef=H;let B=Y.vendor()??await z.defaultVendor();if(B)X.vendor=B;let V=await J.request("task.create",X),j=V.taskId;await J.request("task.setActive",{taskId:j});let U=Y.enumOf("status");if(U)await J.request("task.status",{taskId:j,status:U});let L=Y.bool("pin");if(L!==void 0)await J.request("task.pin",{taskId:j,pinned:L});let O=V.task;if(U||L!==void 0)O=(await J.request("task.get",{taskId:j})).task;let M=Y.str("prompt");if(!M)return{taskId:j,task:O,started:!1};let R=await f.runtime.deliverPrompt(J,{id:j,worktreePath:O.worktreePath,vendor:O.vendor,repo:O.repo},M);return O=(await J.request("task.get",{taskId:j})).task,{taskId:j,task:O,started:R.started,engineReady:R.engineReady,session:R.session}}async function UC(f){let J=P1(f),Y=f.args.require("prompt"),z=f.args.str("task-id");if(!z){let q=await WC(J);if(!q)throw new Mf("no --task-id given and no active task \u2014 open a task first or pass --task-id","MISSING_TARGET");z=q}let G=await J.request("task.get",{taskId:z}),X=await f.runtime.deliverPrompt(J,{id:z,worktreePath:G.task.worktreePath,vendor:G.task.vendor,repo:G.task.repo},Y);return{ok:!0,taskId:z,session:X.session,started:X.started,engineReady:X.engineReady}}async function DC(f){let J=P1(f),Y=f.args.require("task-id"),z=f.args.require("prompt");return await J.request("session.deliver",{taskId:Y,text:z,source:"dispatcher"}),{ok:!0,taskId:Y,routed:"session.deliver"}}async function LC(f){let J=P1(f),Y=f.args.require("task-id"),z=f.args.require("text");return await J.request("note.file",{taskId:Y,text:z})}async function MC(f){let J=P1(f),Y=f.args.require("task-id"),z=await J.request("task.get",{taskId:Y}),G=await f.runtime.isTaskRunning(Y);return{task:z.task,running:G}}async function FC(f){return P1(f).request("task.list")}async function OC(f){let J=P1(f),z=f.args.bool("none")?null:f.args.require("task-id");return await J.request("task.setActive",{taskId:z}),{ok:!0,activeTaskId:z}}async function AC(f){let J=P1(f),Y=f.args.require("task-id"),z=f.args.bool("archived")??!0,G=await J.request("task.archive",{taskId:Y,archived:z});if(z)await f.runtime.tearDownSession(Y);return G}async function gC(f){let J=P1(f),Y=f.args.require("task-id"),z=f.args.bool("force")??!1,G=await J.request("task.delete",{taskId:Y,force:z});return await f.runtime.tearDownSession(Y),G}async function RC(f){let J=P1(f),{args:Y}=f,z={repo:Y.requirePath("repo"),worktreePath:Y.requirePath("worktree")},G=Y.str("branch");if(G)z.branch=G;let X=Y.vendor();if(X)z.vendor=X;let q=Y.str("title");if(q)z.title=q;return J.request("worktree.adopt",z)}async function CC(f){let J=P1(f),{args:Y,runtime:z}=f,G=await z.resolveRepoRoot(Y.requirePath("repo")),X=Y.require("prompt"),q=Y.str("title"),Q=Y.str("base-branch"),H=Y.str("agents"),B=await z.defaultVendor(),V=H?EK(H):Array(Y.int("count")??1).fill(Y.vendor()??B??"claude");if(V.length>FG)throw new Mf(`fan-out of ${V.length} exceeds the cap of ${FG} \u2014 spawn in batches`,"BAD_FLAG");let j=[];for(let U of V){let L={repo:G,vendor:U};if(q)L.title=q;if(Q)L.baseRef=Q;let O=await J.request("task.create",L),M=await f.runtime.deliverPrompt(J,{id:O.taskId,worktreePath:O.task.worktreePath,vendor:U,repo:O.task.repo},X);j.push({taskId:O.taskId,vendor:U,started:M.started,engineReady:M.engineReady,session:M.session})}return{count:j.length,tasks:j}}async function kC(f){let J=P1(f),{args:Y,runtime:z}=f,G=Y.str("task-ids"),X=Y.path("repo"),q;if(G)q=G.split(",").map((H)=>H.trim()).filter(Boolean);else if(X){let H=await z.resolveRepoRoot(X),{tasks:B}=await J.request("task.list");q=[];for(let V of B){if(V.archived)continue;if(await z.resolveRepoRoot(V.repo)===H)q.push(V.id)}}else throw new Mf("collect needs --task-ids id1,id2 or --repo PATH","MISSING_TARGET");let Q=[];for(let H of q){let{task:B}=await J.request("task.get",{taskId:H}),V=await z.isTaskRunning(H),j=B.worktreePath?await z.readWorktreeChanges(B.worktreePath):{added:0,deleted:0};Q.push({taskId:B.id,title:B.title,branch:B.branch,worktreePath:B.worktreePath,vendor:B.vendor,status:B.status,running:V,changes:j})}return{tasks:Q}}async function NC(f){return{ok:!0,discussion:MG({title:f.args.require("title"),body:f.args.require("body"),categorySlug:f.args.str("category")})}}function mK(f,J,Y,z){return{args:new Fj(f,J),client:Y,runtime:z}}async function yC(f,J,Y){let z=RX(f);if(!z)throw new Mf(`unknown verb: ${f}`,"BAD_VERB");let G=new Set(z.flags.filter((q)=>q.type==="bool").map((q)=>q.name)),X=Lj(J,G);return Mj(z,X.flags),z.handler(mK(z,X.flags,Y.client,Y.runtime??Aj))}async function bC(f){let[J,...Y]=f;if(!J||J==="--help"||J==="-h"||J==="help"){if(!J)eJ(zQ(),"MISSING_VERB",2);process.stdout.write(`${zQ()}
133
+ `);return}let z=RX(J);if(!z)eJ(`unknown verb: ${J}
134
+ ${zQ()}`,"BAD_VERB",2);let G=new Set(z.flags.filter((Q)=>Q.type==="bool").map((Q)=>Q.name)),X;try{X=Lj(Y,G)}catch(Q){if(Q instanceof Mf)eJ(Q.message,Q.code,2);eJ(Q instanceof Error?Q.message:String(Q),"BAD_FLAG",2)}if(X.help){process.stdout.write(`${PK(z)}
135
+ `);return}try{Mj(z,X.flags)}catch(Q){if(Q instanceof Mf)eJ(Q.message,Q.code,2);eJ(Q instanceof Error?Q.message:String(Q),"BAD_FLAG",2)}let q=null;if(!z.offline)try{q=await bK()}catch(Q){eJ(`could not reach or start the kobe daemon: ${Q instanceof Error?Q.message:String(Q)}`,"BAD_DAEMON",2)}try{let Q=await z.handler(mK(z,X.flags,q?.client??null,Aj));BC(Q,X.pretty)}catch(Q){if(Q instanceof Mf)eJ(Q.message,Q.code,1);eJ(Q instanceof Error?Q.message:String(Q),"RPC_ERROR",1)}finally{q?.close()}}var Dj=2,FG=10,TK,GC,Mf,Vf,GQ,OG,AG,ZC,xK,jC,Aj;var nK=k(()=>{x1();YQ();Tf();Rq();U1();D1();SK();TK=["backlog","in_progress","in_review","done","canceled","error"],GC=["open","doing","hold","done"];Mf=class Mf extends Error{code;constructor(f,J){super(f);this.code=J}};Vf={repo:(f=!0)=>({name:"repo",type:"string",required:f,placeholder:"PATH",description:"Repo root (git toplevel). Relative paths resolve against $PWD."}),taskId:(f=!0)=>({name:"task-id",type:"string",required:f,placeholder:"ID",description:"Target task id (from `list` / `add`)."}),vendor:()=>({name:"vendor",type:"enum",values:cf,placeholder:"V",description:"Engine vendor for the task."}),title:()=>({name:"title",type:"string",placeholder:"T",description:"Human task title."}),prompt:(f,J)=>({name:"prompt",type:"string",required:f,placeholder:"TEXT",description:J})},GQ={"spawn-task":"add"},OG={discover:["schema"],read:["list","get-task","collect"],create:["add","fan-out"],drive:["send","dispatch","note","set-active"],edit:["rename","set-branch","set-vendor","set-status"],issues:["issue-list","issue-create","issue-set-status","issue-update"],lifecycle:["archive","pin","delete"],worktree:["ensure-worktree","adopt","discover-adoptable"],feedback:["feedback"]};AG=[{name:"schema",summary:"Explore the API. Default = a COMPACT index (groups + verb summaries, no flags). Drill in with --verb / --group; --all for the full spec.",flags:[{name:"verb",type:"string",placeholder:"NAME",description:"Full flag detail for ONE verb."},{name:"group",type:"string",placeholder:"G",description:"List the verbs in one group (compact)."},{name:"all",type:"bool",description:"The COMPLETE spec \u2014 every verb AND every flag (large; avoid by default)."}],offline:!0,handler:XC},{name:"list",summary:"List all tasks (incl. archived). Returns { tasks }.",flags:[],handler:FC},{name:"get-task",summary:"Read one task's metadata. `.running` = its tmux session is live.",flags:[Vf.taskId()],handler:MC},{name:"add",summary:"Create a task (shows in the sidebar immediately). With --prompt it also starts the engine and delivers it. Alias: spawn-task.",flags:[Vf.repo(),Vf.title(),{name:"branch",type:"string",placeholder:"B",description:"Explicit branch name (else auto kobe/<slug>-<id>)."},{name:"base-branch",type:"string",placeholder:"B",description:"Base ref the worktree branches from."},Vf.vendor(),{name:"status",type:"enum",values:TK,default:"backlog",description:"Initial lifecycle status."},{name:"pin",type:"bool",description:"Pin the task to the top of the sidebar."},Vf.prompt(!1,"Optional first message \u2014 when set, materializes the worktree, starts the engine, and pastes it.")],handler:KC},{name:"fan-out",summary:`Spawn N tasks of ONE prompt in a single call (parallel attempts). Capped at ${FG}.`,flags:[Vf.repo(),Vf.prompt(!0,"Shared prompt delivered to every spawned task."),{name:"count",type:"int",placeholder:"N",description:"Number of tasks of one vendor (with --vendor)."},{name:"agents",type:"string",placeholder:"claude:2,codex:1",description:"Per-vendor counts (alternative to --count)."},Vf.vendor(),Vf.title(),{name:"base-branch",type:"string",placeholder:"B",description:"Base ref for every worktree."}],handler:CC},{name:"send",summary:"Paste a follow-up prompt into a task's running engine (one full turn). Defaults to the active task.",flags:[Vf.taskId(!1),Vf.prompt(!0,"Text pasted + submitted into the engine pane.")],handler:UC},{name:"dispatch",summary:"Route text into a task's live session via the daemon's session.deliver channel \u2014 the front-end hosting the session pastes it. The dispatcher's messenger (docs/design/dispatcher.md); unlike `send`, it never spawns or touches tmux itself.",flags:[Vf.taskId(!0),Vf.prompt(!0,"Text delivered into the task's engine session.")],handler:DC},{name:"note",summary:"File a one-line field note \u2014 a resolved, repo-level gotcha worth sharing. kobe forwards it to the repo's dispatcher session (the main session), which relays it to the in-flight tasks that benefit (docs/design/dispatcher.md).",flags:[Vf.taskId(!0),{name:"text",type:"string",required:!0,placeholder:"TEXT",description:"One line: the verified conclusion another session could act on."}],handler:LC},{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:Uj,placeholder:"SLUG",description:"Discussion category slug."}],offline:!0,handler:NC},{name:"issue-list",summary:"List daemon-owned issues for a repo.",flags:[Vf.repo()],handler:(f)=>DJ(f,"issue.list",{repoRoot:f.args.requirePath("repo")})},{name:"issue-create",summary:"Create a daemon-owned issue for a repo.",flags:[Vf.repo(),{name:"title",type:"string",required:!0,placeholder:"T",description:"Issue title."},{name:"body",type:"string",placeholder:"TEXT",description:"Issue body."}],handler:(f)=>DJ(f,"issue.mutate",{repoRoot:f.args.requirePath("repo"),op:{type:"create",title:f.args.require("title"),body:f.args.str("body")}})},{name:"issue-set-status",summary:"Set a daemon-owned issue's status.",flags:[Vf.repo(),{name:"id",type:"int",required:!0,placeholder:"N",description:"Issue id."},{name:"status",type:"enum",required:!0,values:GC,description:"New issue status."}],handler:(f)=>DJ(f,"issue.mutate",{repoRoot:f.args.requirePath("repo"),op:{type:"setStatus",id:f.args.int("id"),status:f.args.requireEnum("status")}})},{name:"issue-update",summary:"Update a daemon-owned issue's title and/or body.",flags:[Vf.repo(),{name:"id",type:"int",required:!0,placeholder:"N",description:"Issue id."},{name:"title",type:"string",placeholder:"T",description:"New title."},{name:"body",type:"string",placeholder:"TEXT",description:"New body."}],handler:VC},{name:"collect",summary:"Read-only comparison snapshot of several tasks (identity, branch, .running, uncommitted .changes).",flags:[{name:"task-ids",type:"csv",placeholder:"a,b,c",description:"Comma-separated task ids."},Vf.repo(!1)],handler:kC},{name:"rename",summary:"Set a task's title.",flags:[Vf.taskId(),{name:"title",type:"string",required:!0,placeholder:"T",description:"New title."}],handler:(f)=>DJ(f,"task.rename",{taskId:f.args.require("task-id"),title:f.args.require("title")})},{name:"set-branch",summary:"Rename a task's branch (git branch -m if materialized, else recorded).",flags:[Vf.taskId(),{name:"branch",type:"string",required:!0,placeholder:"B",description:"New branch name."}],handler:(f)=>DJ(f,"task.setBranch",{taskId:f.args.require("task-id"),branch:f.args.require("branch")})},{name:"set-vendor",summary:"Change a task's engine vendor (takes effect on next session rebuild).",flags:[Vf.taskId(),{...Vf.vendor(),required:!0}],handler:(f)=>DJ(f,"task.setVendor",{taskId:f.args.require("task-id"),vendor:f.args.requireEnum("vendor")})},{name:"set-status",summary:"Set a task's lifecycle status.",flags:[Vf.taskId(),{name:"status",type:"enum",required:!0,values:TK,description:"New status."}],handler:(f)=>DJ(f,"task.status",{taskId:f.args.require("task-id"),status:f.args.requireEnum("status")})},{name:"archive",summary:"Archive (or with --archived=false, unarchive) a task. Non-destructive: worktree/branch/history stay.",flags:[Vf.taskId(),{name:"archived",type:"bool",default:"true",description:"true to archive, false to unarchive."}],handler:AC},{name:"pin",summary:"Pin (or with --pinned=false, unpin) a task to the top of the sidebar.",flags:[Vf.taskId(),{name:"pinned",type:"bool",default:"true",description:"true to pin, false to unpin."}],handler:(f)=>DJ(f,"task.pin",{taskId:f.args.require("task-id"),pinned:f.args.bool("pinned")??!0})},{name:"set-active",summary:"Set the shared active task (the focus every Tasks pane highlights). Pass --none to clear.",flags:[Vf.taskId(!1),{name:"none",type:"bool",description:"Clear the active task instead of setting one."}],handler:OC},{name:"ensure-worktree",summary:"Materialize a task's git worktree on disk now (without starting an engine). Returns { worktreePath }.",flags:[Vf.taskId()],handler:(f)=>DJ(f,"task.ensureWorktree",{taskId:f.args.require("task-id")})},{name:"delete",summary:"Permanently remove a task (and its worktree). DESTRUCTIVE \u2014 prefer `archive`. Needs --force on a dirty worktree.",flags:[Vf.taskId(),{name:"force",type:"bool",description:"Delete even with uncommitted changes."}],handler:gC},{name:"discover-adoptable",summary:"List existing git worktrees in a repo not yet tracked as kobe tasks. Returns { worktrees }.",flags:[Vf.repo()],handler:(f)=>DJ(f,"worktree.discoverAdoptable",{repo:f.args.requirePath("repo")})},{name:"adopt",summary:"Import an existing git worktree as a kobe task. Returns { task }.",flags:[Vf.repo(),{name:"worktree",type:"string",required:!0,placeholder:"PATH",description:"Path of the worktree to adopt."},{name:"branch",type:"string",placeholder:"B",description:"Branch override (else the worktree's own)."},Vf.vendor(),Vf.title()],handler:RC}],ZC=AG.map((f)=>f.name);xK=[{name:"pretty",type:"bool",description:"Pretty-print stdout JSON."},{name:"help",type:"bool",description:"Show usage for the verb and exit."}];jC={sessionExists:Hf,ensureSession:async(f)=>(await Promise.resolve().then(() => (Y1(),r1))).ensureSession(f),waitForEnginePane:WX,pasteAndSubmit:VX,resolveEngineLaunchInit:async(f,J,Y)=>(await Promise.resolve().then(() => (zG(),xB))).resolveEngineLaunchInit(f,J,Y),engineCommand:b1};Aj={isTaskRunning:(f)=>Hf(Lf(f)),deliverPrompt:(f,J,Y)=>vK(f,J,Y),resolveRepoRoot:async(f)=>(await Promise.resolve().then(() => (Af(),cJ))).resolveMainRepoRoot(f),defaultVendor:async()=>{let{getPersistedString:f}=await Promise.resolve().then(() => (Af(),cJ)),J=f("lastSelectedVendor")?.trim();return J?J:void 0},readWorktreeChanges:async(f)=>(await Promise.resolve().then(() => (WG(),p5))).readWorktreeChanges(f),tearDownSession:async(f)=>{let J=Lf(f);await bJ(J).catch(()=>{}),await l1(J).catch(()=>{})}}});var aK={};jf(aK,{updatePlan:()=>dK,runUpdateSubcommand:()=>IC,parseUpdateArgs:()=>iK});import{spawnSync as SC}from"child_process";function dK(){return{command:"sh",args:["-c",hJ],display:hJ}}function iK(f){let J=!1;for(let Y=0;Y<f.length;Y+=1){let z=f[Y];if(z==="--help"||z==="-h"||z==="help")return{help:!0,dryRun:J};if(z==="--dry-run"){J=!0;continue}process.stderr.write(`kobe update: unknown argument "${z}"
136
136
 
137
- `),dK(process.stderr),process.exit(2)}return{help:!1,dryRun:J}}function dK(f){f.write(["Usage: kobe update [--dry-run]","","Runs kobe's GitHub-hosted update script.","","Default command:",` ${hJ}`,"","Script URL:",` ${eX}`,"","Manual fallback:",` ${lQ()}`,"","Examples:"," kobe update"," kobe update --dry-run",""].join(`
138
- `))}async function SC(f,J){let Y={spawn:J?.spawn??bC,stdout:J?.stdout??process.stdout,stderr:J?.stderr??process.stderr,exit:J?.exit??((q)=>process.exit(q))},z=nK(f);if(z.help){dK(Y.stdout);return}let G=cK();if(Y.stdout.write(`kobe ${s0} -> latest
137
+ `),lK(process.stderr),process.exit(2)}return{help:!1,dryRun:J}}function lK(f){f.write(["Usage: kobe update [--dry-run]","","Runs kobe's GitHub-hosted update script.","","Default command:",` ${hJ}`,"","Script URL:",` ${fZ}`,"","Manual fallback:",` ${$Q()}`,"","Examples:"," kobe update"," kobe update --dry-run",""].join(`
138
+ `))}async function IC(f,J){let Y={spawn:J?.spawn??SC,stdout:J?.stdout??process.stdout,stderr:J?.stderr??process.stderr,exit:J?.exit??((q)=>process.exit(q))},z=iK(f);if(z.help){lK(Y.stdout);return}let G=dK();if(Y.stdout.write(`kobe ${s0} -> latest
139
139
  `),Y.stdout.write(`running: ${G.display}
140
140
  `),z.dryRun)return;let X=Y.spawn(G.command,G.args,{stdio:"inherit"});if(X.error)Y.stderr.write(`kobe update: failed to run ${G.command}: ${X.error.message}
141
- `),Y.exit(1);Y.exit(X.status??1)}var lK=k(()=>{D1()});var pK={};jf(pK,{runThemeSubcommand:()=>nC});import{existsSync as $K,mkdirSync as IC,readFileSync as TC,readdirSync as uC,unlinkSync as EC,writeFileSync as xC}from"fs";import{basename as aK,join as Oj,resolve as wC}from"path";function fY(f){process.stderr.write(`kobe theme: ${f}
141
+ `),Y.exit(1);Y.exit(X.status??1)}var $K=k(()=>{D1()});var oK={};jf(oK,{runThemeSubcommand:()=>dC});import{existsSync as pK,mkdirSync as TC,readFileSync as uC,readdirSync as EC,unlinkSync as xC,writeFileSync as wC}from"fs";import{basename as rK,join as Rj,resolve as hC}from"path";function fY(f){process.stderr.write(`kobe theme: ${f}
142
142
  `),process.exit(1)}function xY(f){process.stderr.write(`kobe theme: ${f}
143
143
 
144
- `),rK(),process.exit(2)}function hC(){let f=[];f.push("bundled:");for(let z of[...Fj].sort())f.push(` ${z} [built-in]`);let J=qG(),Y=[];try{Y=uC(J).filter((z)=>z.endsWith(".json")).sort()}catch{}if(f.push(""),f.push(`user (${J}):`),Y.length===0)f.push(" (none)");else for(let z of Y){let G=z.slice(0,-5),X=Oj(J,z),q=Fj.includes(G)?" (overrides built-in)":"";f.push(` ${G}${q} ${X}`)}process.stdout.write(`${f.join(`
144
+ `),_K(),process.exit(2)}function PC(){let f=[];f.push("bundled:");for(let z of[...gj].sort())f.push(` ${z} [built-in]`);let J=ZG(),Y=[];try{Y=EC(J).filter((z)=>z.endsWith(".json")).sort()}catch{}if(f.push(""),f.push(`user (${J}):`),Y.length===0)f.push(" (none)");else for(let z of Y){let G=z.slice(0,-5),X=Rj(J,z),q=gj.includes(G)?" (overrides built-in)":"";f.push(` ${G}${q} ${X}`)}process.stdout.write(`${f.join(`
145
145
  `)}
146
- `)}async function PC(f){if(/^https?:\/\//i.test(f)){let X;try{X=await fetch(f)}catch(V){fY(`failed to fetch ${f}: ${V instanceof Error?V.message:String(V)}`)}if(!X.ok)fY(`failed to fetch ${f}: HTTP ${X.status} ${X.statusText}`);let q=await X.text(),Q=f.split(/[?#]/)[0]??f,H=aK(Q)||"theme.json",B=H.endsWith(".json")?H.slice(0,-5):H;return{text:q,defaultName:B}}let J=wC(process.cwd(),f),Y;try{Y=TC(J,"utf8")}catch(X){fY(`failed to read ${J}: ${X instanceof Error?X.message:String(X)}`)}let z=aK(J),G=z.endsWith(".json")?z.slice(0,-5):z;return{text:Y,defaultName:G}}function vC(f){let J=null,Y,z=!1;for(let G=0;G<f.length;G+=1){let X=f[G];if(X==="--force"||X==="-f"){z=!0;continue}if(X==="--name"||X==="-n"){let q=f[G+1];if(q===void 0)xY("--name requires a value");Y=q,G+=1;continue}if(X.startsWith("--name=")){Y=X.slice(7);continue}if(X.startsWith("--"))xY(`unknown flag: ${X}`);if(J===null){J=X;continue}xY(`unexpected positional argument: ${X}`)}if(J===null)xY("missing <source> (URL or path to theme JSON)");return{source:J,opts:{name:Y,force:z}}}async function mC(f){let{source:J,opts:Y}=vC(f),{text:z,defaultName:G}=await PC(J),X;try{X=JSON.parse(z)}catch(V){fY(`source is not valid JSON: ${V instanceof Error?V.message:String(V)}`)}let q=Nq(X);if(!q.ok)fY(`source is not a valid kobe theme: ${q.reason}`);let Q=Y.name??G;if(!Q||!/^[a-zA-Z0-9._-]+$/.test(Q))fY(`invalid theme name "${Q}" (use letters, digits, '.', '_', '-')`);let H=qG();IC(H,{recursive:!0});let B=Oj(H,`${Q}.json`);if($K(B)&&!Y.force)fY(`${B} already exists (pass --force to overwrite)`);xC(B,`${JSON.stringify(q.theme,null,2)}
146
+ `)}async function vC(f){if(/^https?:\/\//i.test(f)){let X;try{X=await fetch(f)}catch(V){fY(`failed to fetch ${f}: ${V instanceof Error?V.message:String(V)}`)}if(!X.ok)fY(`failed to fetch ${f}: HTTP ${X.status} ${X.statusText}`);let q=await X.text(),Q=f.split(/[?#]/)[0]??f,H=rK(Q)||"theme.json",B=H.endsWith(".json")?H.slice(0,-5):H;return{text:q,defaultName:B}}let J=hC(process.cwd(),f),Y;try{Y=uC(J,"utf8")}catch(X){fY(`failed to read ${J}: ${X instanceof Error?X.message:String(X)}`)}let z=rK(J),G=z.endsWith(".json")?z.slice(0,-5):z;return{text:Y,defaultName:G}}function mC(f){let J=null,Y,z=!1;for(let G=0;G<f.length;G+=1){let X=f[G];if(X==="--force"||X==="-f"){z=!0;continue}if(X==="--name"||X==="-n"){let q=f[G+1];if(q===void 0)xY("--name requires a value");Y=q,G+=1;continue}if(X.startsWith("--name=")){Y=X.slice(7);continue}if(X.startsWith("--"))xY(`unknown flag: ${X}`);if(J===null){J=X;continue}xY(`unexpected positional argument: ${X}`)}if(J===null)xY("missing <source> (URL or path to theme JSON)");return{source:J,opts:{name:Y,force:z}}}async function cC(f){let{source:J,opts:Y}=mC(f),{text:z,defaultName:G}=await vC(J),X;try{X=JSON.parse(z)}catch(V){fY(`source is not valid JSON: ${V instanceof Error?V.message:String(V)}`)}let q=kq(X);if(!q.ok)fY(`source is not a valid kobe theme: ${q.reason}`);let Q=Y.name??G;if(!Q||!/^[a-zA-Z0-9._-]+$/.test(Q))fY(`invalid theme name "${Q}" (use letters, digits, '.', '_', '-')`);let H=ZG();TC(H,{recursive:!0});let B=Rj(H,`${Q}.json`);if(pK(B)&&!Y.force)fY(`${B} already exists (pass --force to overwrite)`);wC(B,`${JSON.stringify(q.theme,null,2)}
147
147
  `,"utf8"),process.stdout.write(`installed theme "${Q}" -> ${B}
148
- `)}function cC(f){let J=f[0];if(!J)xY("missing <name>");if(f.length>1)xY(`unexpected extra arguments after "${J}"`);if(Fj.includes(J))fY(`"${J}" is a built-in theme and cannot be removed`);let Y=Oj(qG(),`${J}.json`);if(!$K(Y))fY(`no user theme named "${J}" (looked for ${Y})`);EC(Y),process.stdout.write(`removed theme "${J}" (${Y})
149
- `)}function rK(){process.stderr.write(["Usage: kobe theme <command> [args]","","Commands:"," list List bundled and user-installed themes"," add <source> [--name <name>] Install a theme from a URL or local path"," Pass --force to overwrite an existing user theme"," remove <name> Remove a user-installed theme","",`User themes live under: ${qG()}`,"Schema: https://raw.githubusercontent.com/sma1lboy/kobe/main/packages/kobe/src/tui/context/theme/theme.schema.json",""].join(`
150
- `))}async function nC(f){let[J,...Y]=f;if(!J||J==="--help"||J==="-h"||J==="help"){if(rK(),!J)process.exit(2);return}if(J==="list"||J==="ls"){if(Y.length>0)xY(`"${J}" takes no arguments`);hC();return}if(J==="add"){await mC(Y);return}if(J==="remove"||J==="rm"){cC(Y);return}xY(`unknown action "${J}" (try "list", "add", or "remove")`)}var Fj;var _K=k(()=>{lf();yq();vB();Fj=["claude","conductor","dracula","nord","opencode","osaka-jade","tokyonight"]});var eK={};jf(eK,{runFeedbackSubcommand:()=>iC,parseFeedbackArgs:()=>tK});import{readFileSync as oK}from"fs";function wY(f){process.stderr.write(`kobe feedback: ${f}
148
+ `)}function nC(f){let J=f[0];if(!J)xY("missing <name>");if(f.length>1)xY(`unexpected extra arguments after "${J}"`);if(gj.includes(J))fY(`"${J}" is a built-in theme and cannot be removed`);let Y=Rj(ZG(),`${J}.json`);if(!pK(Y))fY(`no user theme named "${J}" (looked for ${Y})`);xC(Y),process.stdout.write(`removed theme "${J}" (${Y})
149
+ `)}function _K(){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: ${ZG()}`,"Schema: https://raw.githubusercontent.com/sma1lboy/kobe/main/packages/kobe/src/tui/context/theme/theme.schema.json",""].join(`
150
+ `))}async function dC(f){let[J,...Y]=f;if(!J||J==="--help"||J==="-h"||J==="help"){if(_K(),!J)process.exit(2);return}if(J==="list"||J==="ls"){if(Y.length>0)xY(`"${J}" takes no arguments`);PC();return}if(J==="add"){await cC(Y);return}if(J==="remove"||J==="rm"){nC(Y);return}xY(`unknown action "${J}" (try "list", "add", or "remove")`)}var gj;var sK=k(()=>{lf();Nq();mB();gj=["claude","conductor","dracula","nord","opencode","osaka-jade","tokyonight"]});var JU={};jf(JU,{runFeedbackSubcommand:()=>lC,parseFeedbackArgs:()=>fU});import{readFileSync as tK}from"fs";function wY(f){process.stderr.write(`kobe feedback: ${f}
151
151
 
152
- ${sK}
153
- `),process.exit(2)}function dC(f){if(f==="-")return oK(0,"utf8");return oK(f,"utf8")}function tK(f){let J={help:!1};for(let Y=0;Y<f.length;Y++){let z=f[Y];if(z==="--help"||z==="-h"||z==="help")return{...J,help:!0};if(z==="--title"){if(J.title=f[++Y],J.title===void 0)wY("--title requires a value");continue}if(z==="--body"){if(J.body=f[++Y],J.body===void 0)wY("--body requires a value");continue}if(z==="--body-file"){if(J.bodyFile=f[++Y],J.bodyFile===void 0)wY("--body-file requires a value");continue}if(z==="--category"){if(J.category=f[++Y],J.category===void 0)wY("--category requires a value");continue}wY(`unexpected argument "${z}"`)}return J}async function iC(f){let J=tK(f);if(J.help){process.stdout.write(`${sK}
154
- `);return}if(!J.title)wY("--title is required");if(J.body&&J.bodyFile)wY("pass either --body or --body-file, not both");let Y=J.bodyFile?dC(J.bodyFile):J.body;if(!Y)wY("--body or --body-file is required");let z=MG({title:J.title,body:Y,categorySlug:J.category});console.log(`created Discussion #${z.number}: ${z.url}`)}var sK;var fU=k(()=>{fQ();sK=["Usage: kobe feedback --title <text> (--body <text> | --body-file <path>) [--category <slug>]","","Create a GitHub Discussion in the kobe repository using the GitHub CLI.","","Requires:"," gh auth login","","Options:"," --title <text> Discussion title"," --body <text> Discussion body"," --body-file <path> Read the Discussion body from a file; use - for stdin"," --category <slug> Discussion category slug (default: feedback)"," -h, --help Print this help",""].join(`
155
- `)});import{homedir as lC}from"os";async function JU(f={}){let J=f.homeDir??process.env.KOBE_HOME_DIR??lC(),Y=new xz({homeDir:J});await Y.load();let z=new qZ,G=new AZ({store:Y,worktrees:z});return{homeDir:J,orchestrator:G,store:Y,worktrees:z,async close(){G.dispose()}}}var YU=k(()=>{lG();vG();qH()});var GU={};jf(GU,{runDaemonSubcommand:()=>$C});function zU(f){f.write(["Usage: kobe daemon <command>","","Commands:"," status Print the running daemon's status JSON (default)"," start Run the daemon in the foreground (this process becomes it)"," stop Ask the running daemon to shut down"," restart Stop the daemon (graceful \u2192 SIGTERM \u2192 SIGKILL) and respawn it",""].join(`
156
- `))}function aC(){let f=process.env.KOBE_DAEMON_WEB_PORT?.trim();if(f==="0"||f==="off"||f==="false")return;let J=f?Number.parseInt(f,10):5174;return Number.isFinite(J)&&J>0?J:5174}async function $C(f){let[J="status"]=f,Y=CJ(),z=dJ();if(J==="--help"||J==="-h"||J==="help"){zU(process.stdout);return}if(J==="status"){let Q=new d1(Y);try{let H=await Q.request("daemon.status");console.log(JSON.stringify(H,null,2))}catch{let H=await KG(z);if(H)console.log(`kobe daemon: no daemon socket at ${Y} (stale pidfile pid=${H})`);else console.log(`kobe daemon: no daemon running at ${Y}`);process.exitCode=1}finally{Q.close()}return}if(J==="stop"){let Q=new d1(Y);try{await Q.request("daemon.stop"),console.log("kobe daemon: stop requested")}catch{console.log(`kobe daemon: no daemon running at ${Y}`)}finally{Q.close()}return}if(J==="restart"){await UG(Y,z),(await UJ()).close(),console.log(`kobe daemon: restarted, listening on ${Y}`);return}if(J!=="start")process.stderr.write(`kobe daemon: unknown command "${J}"
152
+ ${eK}
153
+ `),process.exit(2)}function iC(f){if(f==="-")return tK(0,"utf8");return tK(f,"utf8")}function fU(f){let J={help:!1};for(let Y=0;Y<f.length;Y++){let z=f[Y];if(z==="--help"||z==="-h"||z==="help")return{...J,help:!0};if(z==="--title"){if(J.title=f[++Y],J.title===void 0)wY("--title requires a value");continue}if(z==="--body"){if(J.body=f[++Y],J.body===void 0)wY("--body requires a value");continue}if(z==="--body-file"){if(J.bodyFile=f[++Y],J.bodyFile===void 0)wY("--body-file requires a value");continue}if(z==="--category"){if(J.category=f[++Y],J.category===void 0)wY("--category requires a value");continue}wY(`unexpected argument "${z}"`)}return J}async function lC(f){let J=fU(f);if(J.help){process.stdout.write(`${eK}
154
+ `);return}if(!J.title)wY("--title is required");if(J.body&&J.bodyFile)wY("pass either --body or --body-file, not both");let Y=J.bodyFile?iC(J.bodyFile):J.body;if(!Y)wY("--body or --body-file is required");let z=MG({title:J.title,body:Y,categorySlug:J.category});console.log(`created Discussion #${z.number}: ${z.url}`)}var eK;var YU=k(()=>{YQ();eK=["Usage: kobe feedback --title <text> (--body <text> | --body-file <path>) [--category <slug>]","","Create a GitHub Discussion in the kobe repository using the GitHub CLI.","","Requires:"," gh auth login","","Options:"," --title <text> Discussion title"," --body <text> Discussion body"," --body-file <path> Read the Discussion body from a file; use - for stdin"," --category <slug> Discussion category slug (default: feedback)"," -h, --help Print this help",""].join(`
155
+ `)});import{homedir as aC}from"os";async function zU(f={}){let J=f.homeDir??process.env.KOBE_HOME_DIR??aC(),Y=new DG({homeDir:J});await Y.load();let z=new fQ,G=new lZ({store:Y,worktrees:z});return{homeDir:J,orchestrator:G,store:Y,worktrees:z,async close(){G.dispose()}}}var GU=k(()=>{eG();OX();Vj()});var ZU={};jf(ZU,{runDaemonSubcommand:()=>rC});function XU(f){f.write(["Usage: kobe daemon <command>","","Commands:"," status Print the running daemon's status JSON (default)"," start Run the daemon in the foreground (this process becomes it)"," stop Ask the running daemon to shut down"," restart Stop the daemon (graceful \u2192 SIGTERM \u2192 SIGKILL) and respawn it",""].join(`
156
+ `))}function $C(){let f=process.env.KOBE_DAEMON_WEB_PORT?.trim();if(f==="0"||f==="off"||f==="false")return;let J=f?Number.parseInt(f,10):5174;return Number.isFinite(J)&&J>0?J:5174}async function rC(f){let[J="status"]=f,Y=AJ(),z=nJ();if(J==="--help"||J==="-h"||J==="help"){XU(process.stdout);return}if(J==="status"){let Q=new d1(Y);try{let H=await Q.request("daemon.status");console.log(JSON.stringify(H,null,2))}catch{let H=await VG(z);if(H)console.log(`kobe daemon: no daemon socket at ${Y} (stale pidfile pid=${H})`);else console.log(`kobe daemon: no daemon running at ${Y}`);process.exitCode=1}finally{Q.close()}return}if(J==="stop"){let Q=new d1(Y);try{await Q.request("daemon.stop"),console.log("kobe daemon: stop requested")}catch{console.log(`kobe daemon: no daemon running at ${Y}`)}finally{Q.close()}return}if(J==="restart"){await KG(Y,z),(await KJ()).close(),console.log(`kobe daemon: restarted, listening on ${Y}`);return}if(J!=="start")process.stderr.write(`kobe daemon: unknown command "${J}"
157
157
 
158
- `),zU(process.stderr),process.exit(2);mV();let G=await JU(),X=await jK(G.orchestrator,{socketPath:Y,pidPath:z,homeDir:G.homeDir,webPort:aC(),webHost:process.env.KOBE_WEB_HOST,webStaticDir:process.env.KOBE_DAEMON_WEB_STATIC_DIR,onStop:async()=>{await G.close()}});if(console.log(`kobe daemon: listening on ${X.socketPath}`),X.webPort)console.log(`kobe daemon: web transport listening on http://127.0.0.1:${X.webPort}`);let q=async()=>{await X.close(),await G.close(),process.exit(0)};process.once("SIGINT",()=>void q()),process.once("SIGTERM",()=>void q())}var XU=k(()=>{$G();y1();sq();mz();oq();YU()});import{existsSync as rC,readFileSync as pC}from"fs";import{homedir as _C}from"os";import{join as ZU}from"path";function Rj(f={}){return["skills","add",oC,"--skill","kobe","--agent",f.agent??zQ]}function GQ(f={}){return`npx ${Rj(f).join(" ")}`}function Cj(f={}){let J=f.home??_C(),Y=f.cwd??process.cwd();return[ZU(J,qU),ZU(Y,qU)]}function sC(f){let J=f.match(/kobe-skill-version:\s*(\d+)/);return J?Number.parseInt(J[1],10):null}function CX(f){let J=Cj(f).find((G)=>rC(G));if(!J)return{installed:!1,installedVersion:null,currentVersion:Aj,stale:!1};let Y=null;try{Y=sC(pC(J,"utf8"))}catch{Y=null}let z=Y===null||Y<Aj;return{installed:!0,installedVersion:Y,currentVersion:Aj,stale:z}}function QU(){let f=CX();if(!f.installed){if(kf(gj)==="1")return;af(gj,"1"),process.stderr.write(`
158
+ `),XU(process.stderr),process.exit(2);IV();let G=await zU(),X=await YK(G.orchestrator,{socketPath:Y,pidPath:z,homeDir:G.homeDir,webPort:$C(),webHost:process.env.KOBE_WEB_HOST,webStaticDir:process.env.KOBE_DAEMON_WEB_STATIC_DIR,onStop:async()=>{await G.close()}});if(console.log(`kobe daemon: listening on ${X.socketPath}`),X.webPort)console.log(`kobe daemon: web transport listening on http://127.0.0.1:${X.webPort}`);let q=async()=>{await X.close(),await G.close(),process.exit(0)};process.once("SIGINT",()=>void q()),process.once("SIGTERM",()=>void q())}var qU=k(()=>{vG();L1();sq();xz();oq();GU()});import{existsSync as pC,readFileSync as _C}from"fs";import{homedir as oC}from"os";import{join as QU}from"path";function Nj(f={}){return["skills","add",sC,"--skill","kobe","--agent",f.agent??XQ]}function ZQ(f={}){return`npx ${Nj(f).join(" ")}`}function yj(f={}){let J=f.home??oC(),Y=f.cwd??process.cwd();return[QU(J,HU),QU(Y,HU)]}function tC(f){let J=f.match(/kobe-skill-version:\s*(\d+)/);return J?Number.parseInt(J[1],10):null}function kX(f){let J=yj(f).find((G)=>pC(G));if(!J)return{installed:!1,installedVersion:null,currentVersion:Cj,stale:!1};let Y=null;try{Y=tC(_C(J,"utf8"))}catch{Y=null}let z=Y===null||Y<Cj;return{installed:!0,installedVersion:Y,currentVersion:Cj,stale:z}}function BU(){let f=kX();if(!f.installed){if(kf(kj)==="1")return;af(kj,"1"),process.stderr.write(`
159
159
  kobe: the kobe agent skill isn't installed \u2014 install it so your coding agent can drive kobe via \`kobe api\`:
160
- ${RX}
161
- (wraps \`${GQ()}\`; check anytime with \`kobe doctor\`)
160
+ ${CX}
161
+ (wraps \`${ZQ()}\`; check anytime with \`kobe doctor\`)
162
162
 
163
- `);return}if(f.stale){let J=`${gj}:v${f.currentVersion}`;if(kf(J)==="1")return;af(J,"1");let Y=f.installedVersion===null?"an older":`v${f.installedVersion}`;process.stderr.write(`
163
+ `);return}if(f.stale){let J=`${kj}:v${f.currentVersion}`;if(kf(J)==="1")return;af(J,"1");let Y=f.installedVersion===null?"an older":`v${f.installedVersion}`;process.stderr.write(`
164
164
  kobe: your kobe agent skill is out of date (${Y}; this kobe wants v${f.currentVersion}) \u2014 refresh it so \`kobe api\` guidance matches:
165
- ${RX}
165
+ ${CX}
166
166
 
167
- `)}}var Aj=2,qU=".claude/skills/kobe/SKILL.md",RX="kobe skill install",oC="Sma1lboy/kobe",zQ="claude-code",gj="skillHintSeen";var XQ=k(()=>{Of()});var ZQ={};jf(ZQ,{runResetSubcommand:()=>Bk,runReloadSubcommand:()=>jk,runDoctorSubcommand:()=>Qk});import{existsSync as tC,readFileSync as jU,statSync as eC}from"fs";import{unlink as fk}from"fs/promises";import{join as WU}from"path";import{createInterface as Jk}from"readline";function Yk(f){try{return process.kill(f,0),!0}catch(J){return J.code==="EPERM"}}async function zk(f){let J=new d1(f);try{return await J.request("daemon.status")}catch{return null}finally{J.close()}}function Gk(f){let J=Math.floor(f/1000);if(J<60)return`${J}s`;let Y=Math.floor(J/60);if(Y<60)return`${Y}m ${J%60}s`;return`${Math.floor(Y/60)}h ${Y%60}m`}function Xk(f){if(f<1024)return`${f} B`;if(f<1048576)return`${(f/1024).toFixed(1)} KB`;return`${(f/1048576).toFixed(1)} MB`}function kj(f){try{let J=eC(f);return`present (${Xk(J.size)}, modified ${J.mtime.toISOString()})`}catch{return"absent"}}function VU(f){try{let J=JSON.parse(jU(f,"utf8"));return Array.isArray(J.tasks)?J.tasks.length:null}catch{return null}}function Zk(f,J){try{return jU(f,"utf8").split(`
167
+ `)}}var Cj=2,HU=".claude/skills/kobe/SKILL.md",CX="kobe skill install",sC="Sma1lboy/kobe",XQ="claude-code",kj="skillHintSeen";var qQ=k(()=>{Af()});var QQ={};jf(QQ,{runResetSubcommand:()=>jk,runReloadSubcommand:()=>Wk,runDoctorSubcommand:()=>Hk});import{existsSync as eC,readFileSync as VU,statSync as fk}from"fs";import{unlink as Jk}from"fs/promises";import{join as KU}from"path";import{createInterface as Yk}from"readline";function zk(f){try{return process.kill(f,0),!0}catch(J){return J.code==="EPERM"}}async function Gk(f){let J=new d1(f);try{return await J.request("daemon.status")}catch{return null}finally{J.close()}}function Xk(f){let J=Math.floor(f/1000);if(J<60)return`${J}s`;let Y=Math.floor(J/60);if(Y<60)return`${Y}m ${J%60}s`;return`${Math.floor(Y/60)}h ${Y%60}m`}function Zk(f){if(f<1024)return`${f} B`;if(f<1048576)return`${(f/1024).toFixed(1)} KB`;return`${(f/1048576).toFixed(1)} MB`}function bj(f){try{let J=fk(f);return`present (${Zk(J.size)}, modified ${J.mtime.toISOString()})`}catch{return"absent"}}function UU(f){try{let J=JSON.parse(VU(f,"utf8"));return Array.isArray(J.tasks)?J.tasks.length:null}catch{return null}}function qk(f,J){try{return VU(f,"utf8").split(`
168
168
  `).filter((z)=>z.trim().length>0).slice(-J).join(`
169
- `)}catch{return""}}async function Nj(f){let J=Bun.spawn(Hz(...f),{stdin:"ignore",stdout:"pipe",stderr:"ignore"}),[Y,z]=await Promise.all([new Response(J.stdout).text().catch(()=>""),J.exited]);return{code:z,stdout:Y}}async function qk(){if(!await NJ())return 0;let{code:f,stdout:J}=await Nj(["list-sessions","-F","#{session_name}"]);if(f!==0)return 0;return J.split(`
170
- `).filter((Y)=>Y.trim().length>0).length}async function Qk(f=[]){if(f.includes("--help")||f.includes("-h")||f.includes("help")){process.stdout.write(["Usage: kobe doctor","","Read-only diagnosis of the daemon / tmux / state. Takes no options.",""].join(`
169
+ `)}catch{return""}}async function Sj(f){let J=Bun.spawn(Hz(...f),{stdin:"ignore",stdout:"pipe",stderr:"ignore"}),[Y,z]=await Promise.all([new Response(J.stdout).text().catch(()=>""),J.exited]);return{code:z,stdout:Y}}async function Qk(){if(!await NJ())return 0;let{code:f,stdout:J}=await Sj(["list-sessions","-F","#{session_name}"]);if(f!==0)return 0;return J.split(`
170
+ `).filter((Y)=>Y.trim().length>0).length}async function Hk(f=[]){if(f.includes("--help")||f.includes("-h")||f.includes("help")){process.stdout.write(["Usage: kobe doctor","","Read-only diagnosis of the daemon / tmux / state. Takes no options.",""].join(`
171
171
  `));return}let J=f.find((j)=>j.length>0);if(J!==void 0)process.stderr.write([`kobe doctor: unexpected argument "${J}"`,"","Usage: kobe doctor (read-only; takes no options)",""].join(`
172
- `)),process.exit(2);let Y=CJ(),z=dJ(),G=CZ(),X=WU(ef(),"tasks.json"),q=m1(),Q=["kobe doctor",` home: ${OJ()}`,` socket: ${Y}`,""],H=await zk(Y);if(H){let j=typeof H.daemonPid==="number"?H.daemonPid:"?",U=typeof H.uptimeMs==="number"?Gk(H.uptimeMs):"?",L=typeof H.taskCount==="number"?H.taskCount:"?",O=typeof H.attachedClients==="number"?H.attachedClients:"?";Q.push(`daemon: \u2713 running (pid ${j}, up ${U}, ${L} task(s), ${O} client(s))`);let M=typeof H.kobeVersion==="string"?H.kobeVersion:void 0;if(M&&M!==s0)Q.push(` \u26A0 stale build: daemon is v${M}, you launched v${s0}`),Q.push(" \u2192 run `kobe daemon restart`, then `kobe reload` in any open kobe sessions");else if(M)Q.push(` build: v${M}`)}else{let j=await KG(z);if(j&&Yk(j))Q.push(`daemon: \u2717 WEDGED \u2014 process alive (pid ${j}) but not accepting connections`),Q.push(" \u2192 run `kobe reset` to kill it, then relaunch kobe");else if(j)Q.push(`daemon: \u2717 not running (stale pidfile \u2192 pid ${j} is gone)`),Q.push(" \u2192 harmless; relaunch kobe, or `kobe reset` to clear the stale pidfile");else Q.push("daemon: \u2717 not running (no pidfile)");if(tC(Y))Q.push(` orphan socket file present: ${Y}`);let U=Zk(G,8);if(U){Q.push(" last lines of daemon.log:");for(let L of U.split(`
173
- `))Q.push(` \u2502 ${L}`)}}if(Q.push(""),await NJ())Q.push(`tmux: ${await qk()} kobe session(s) on \`${QJ}\` socket`);else Q.push("tmux: \u2717 not found on PATH (task sessions need tmux)");Q.push("");let B=CX();if(!B.installed)Q.push("skill: \u2717 kobe agent skill not installed (optional \u2014 lets a coding agent drive `kobe api`)"),Q.push(` \u2192 ${RX}`);else if(B.stale){let j=B.installedVersion===null?"unstamped":`v${B.installedVersion}`;Q.push(`skill: \u26A0 kobe agent skill out of date (${j}; this kobe wants v${B.currentVersion})`),Q.push(` \u2192 ${RX}`)}else Q.push(`skill: \u2713 kobe agent skill installed (v${B.installedVersion})`);Q.push("");let V=VU(X);Q.push(`tasks.json: ${kj(X)}${V===null?"":` \u2014 ${V} task(s)`}`),Q.push(`state.json: ${kj(q)}`),Q.push(`daemon.log: ${kj(G)}`),console.log(Q.join(`
174
- `))}async function Hk(f){let J=Jk({input:process.stdin,output:process.stdout});try{let Y=await new Promise((z)=>J.question(f,z));return/^y(es)?$/i.test(Y.trim())}finally{J.close()}}async function HU(f,J){try{await fk(f),console.log(` removed ${J} (${f})`)}catch(Y){if(Y.code==="ENOENT")console.log(` ${J}: already absent`);else console.error(` failed to remove ${J} (${f}): ${Y instanceof Error?Y.message:String(Y)}`)}}function BU(f){f.write(["Usage: kobe reset [--hard] [--yes]","","Recover a wedged install: stop the daemon (graceful \u2192 SIGTERM \u2192 SIGKILL),","remove its socket + pidfile, and kill all kobe tmux sessions.","Never touches your git worktrees.","","Options:"," --hard Also wipe the task index + UI state"," -y, --yes Skip the interactive confirmation"," -h, --help Print this help",""].join(`
175
- `))}async function Bk(f){if(f.includes("--help")||f.includes("-h")||f.includes("help")){BU(process.stdout);return}let J=new Set(["--hard","--yes","-y"]),Y=f.find((j)=>!J.has(j));if(Y!==void 0)process.stderr.write(`kobe reset: unknown argument "${Y}"
172
+ `)),process.exit(2);let Y=AJ(),z=nJ(),G=QZ(),X=KU(ef(),"tasks.json"),q=c1(),Q=["kobe doctor",` home: ${OJ()}`,` socket: ${Y}`,""],H=await Gk(Y);if(H){let j=typeof H.daemonPid==="number"?H.daemonPid:"?",U=typeof H.uptimeMs==="number"?Xk(H.uptimeMs):"?",L=typeof H.taskCount==="number"?H.taskCount:"?",O=typeof H.attachedClients==="number"?H.attachedClients:"?";Q.push(`daemon: \u2713 running (pid ${j}, up ${U}, ${L} task(s), ${O} client(s))`);let M=typeof H.kobeVersion==="string"?H.kobeVersion:void 0;if(M&&M!==s0)Q.push(` \u26A0 stale build: daemon is v${M}, you launched v${s0}`),Q.push(" \u2192 run `kobe daemon restart`, then `kobe reload` in any open kobe sessions");else if(M)Q.push(` build: v${M}`)}else{let j=await VG(z);if(j&&zk(j))Q.push(`daemon: \u2717 WEDGED \u2014 process alive (pid ${j}) but not accepting connections`),Q.push(" \u2192 run `kobe reset` to kill it, then relaunch kobe");else if(j)Q.push(`daemon: \u2717 not running (stale pidfile \u2192 pid ${j} is gone)`),Q.push(" \u2192 harmless; relaunch kobe, or `kobe reset` to clear the stale pidfile");else Q.push("daemon: \u2717 not running (no pidfile)");if(eC(Y))Q.push(` orphan socket file present: ${Y}`);let U=qk(G,8);if(U){Q.push(" last lines of daemon.log:");for(let L of U.split(`
173
+ `))Q.push(` \u2502 ${L}`)}}if(Q.push(""),await NJ())Q.push(`tmux: ${await Qk()} kobe session(s) on \`${qJ}\` socket`);else Q.push("tmux: \u2717 not found on PATH (task sessions need tmux)");Q.push("");let B=kX();if(!B.installed)Q.push("skill: \u2717 kobe agent skill not installed (optional \u2014 lets a coding agent drive `kobe api`)"),Q.push(` \u2192 ${CX}`);else if(B.stale){let j=B.installedVersion===null?"unstamped":`v${B.installedVersion}`;Q.push(`skill: \u26A0 kobe agent skill out of date (${j}; this kobe wants v${B.currentVersion})`),Q.push(` \u2192 ${CX}`)}else Q.push(`skill: \u2713 kobe agent skill installed (v${B.installedVersion})`);Q.push("");let V=UU(X);Q.push(`tasks.json: ${bj(X)}${V===null?"":` \u2014 ${V} task(s)`}`),Q.push(`state.json: ${bj(q)}`),Q.push(`daemon.log: ${bj(G)}`),console.log(Q.join(`
174
+ `))}async function Bk(f){let J=Yk({input:process.stdin,output:process.stdout});try{let Y=await new Promise((z)=>J.question(f,z));return/^y(es)?$/i.test(Y.trim())}finally{J.close()}}async function jU(f,J){try{await Jk(f),console.log(` removed ${J} (${f})`)}catch(Y){if(Y.code==="ENOENT")console.log(` ${J}: already absent`);else console.error(` failed to remove ${J} (${f}): ${Y instanceof Error?Y.message:String(Y)}`)}}function WU(f){f.write(["Usage: kobe reset [--hard] [--yes]","","Recover a wedged install: stop the daemon (graceful \u2192 SIGTERM \u2192 SIGKILL),","remove its socket + pidfile, and kill all kobe tmux sessions.","Never touches your git worktrees.","","Options:"," --hard Also wipe the task index + UI state"," -y, --yes Skip the interactive confirmation"," -h, --help Print this help",""].join(`
175
+ `))}async function jk(f){if(f.includes("--help")||f.includes("-h")||f.includes("help")){WU(process.stdout);return}let J=new Set(["--hard","--yes","-y"]),Y=f.find((j)=>!J.has(j));if(Y!==void 0)process.stderr.write(`kobe reset: unknown argument "${Y}"
176
176
 
177
- `),BU(process.stderr),process.exit(2);let z=f.includes("--hard"),G=f.includes("--yes")||f.includes("-y"),X=CJ(),q=dJ(),Q=WU(ef(),"tasks.json"),H=m1();if(console.log("kobe reset will:"),console.log(" \u2022 stop the kobe daemon (graceful \u2192 SIGTERM \u2192 SIGKILL)"),console.log(` \u2022 remove its socket + pidfile (${X})`),console.log(` \u2022 kill all kobe tmux sessions on the \`${QJ}\` socket`),z){let j=VU(Q);console.log(` \u2022 DELETE the task index${j===null?"":` (${j} task(s))`} \u2014 ${Q}`),console.log(` \u2022 DELETE the UI state \u2014 ${H}`)}if(console.log(" \u2022 NOT touch your git worktrees under ~/.kobe/worktrees/ or legacy repo-local roots"),!z)console.log(" (your task list & worktrees are kept \u2014 add --hard to also wipe the task index + UI state)");if(!G){if(!process.stdin.isTTY){console.log(`
178
- re-run with --yes to proceed (no interactive terminal for a y/N prompt)`);return}if(!await Hk(z?`
177
+ `),WU(process.stderr),process.exit(2);let z=f.includes("--hard"),G=f.includes("--yes")||f.includes("-y"),X=AJ(),q=nJ(),Q=KU(ef(),"tasks.json"),H=c1();if(console.log("kobe reset will:"),console.log(" \u2022 stop the kobe daemon (graceful \u2192 SIGTERM \u2192 SIGKILL)"),console.log(` \u2022 remove its socket + pidfile (${X})`),console.log(` \u2022 kill all kobe tmux sessions on the \`${qJ}\` socket`),z){let j=UU(Q);console.log(` \u2022 DELETE the task index${j===null?"":` (${j} task(s))`} \u2014 ${Q}`),console.log(` \u2022 DELETE the UI state \u2014 ${H}`)}if(console.log(" \u2022 NOT touch your git worktrees under ~/.kobe/worktrees/ or legacy repo-local roots"),!z)console.log(" (your task list & worktrees are kept \u2014 add --hard to also wipe the task index + UI state)");if(!G){if(!process.stdin.isTTY){console.log(`
178
+ re-run with --yes to proceed (no interactive terminal for a y/N prompt)`);return}if(!await Bk(z?`
179
179
  Stop daemon, kill sessions AND wipe task index? [y/N] `:`
180
- Stop daemon and kill kobe sessions? [y/N] `)){console.log("aborted \u2014 nothing changed");return}}console.log("");let{pid:B,method:V}=await UG(X,q);if(console.log(V==="absent"?" daemon: was not running (cleared any stale socket/pidfile)":` daemon: stopped via ${V}${B?` (pid ${B})`:""}`),await NJ()){let{code:j}=await Nj(["kill-server"]);console.log(j===0?` tmux: killed all sessions on \`${QJ}\``:` tmux: no sessions on \`${QJ}\``)}else console.log(" tmux: not installed \u2014 no sessions to kill");if(z)await HU(Q,"task index"),await HU(H,"UI state");console.log(`
181
- kobe: reset complete. Relaunch kobe to start fresh.`)}async function jk(f=[]){if(f.includes("--help")||f.includes("-h")||f.includes("help")){process.stdout.write(["Usage: kobe reload","","Restart kobe's Tasks + Ops panes in every live session, in place.","Picks up new kobe code without `kobe reset` \u2014 the engine (claude)","panes and your running turns are never touched. Takes no options.",""].join(`
180
+ Stop daemon and kill kobe sessions? [y/N] `)){console.log("aborted \u2014 nothing changed");return}}console.log("");let{pid:B,method:V}=await KG(X,q);if(console.log(V==="absent"?" daemon: was not running (cleared any stale socket/pidfile)":` daemon: stopped via ${V}${B?` (pid ${B})`:""}`),await NJ()){let{code:j}=await Sj(["kill-server"]);console.log(j===0?` tmux: killed all sessions on \`${qJ}\``:` tmux: no sessions on \`${qJ}\``)}else console.log(" tmux: not installed \u2014 no sessions to kill");if(z)await jU(Q,"task index"),await jU(H,"UI state");console.log(`
181
+ kobe: reset complete. Relaunch kobe to start fresh.`)}async function Wk(f=[]){if(f.includes("--help")||f.includes("-h")||f.includes("help")){process.stdout.write(["Usage: kobe reload","","Restart kobe's Tasks + Ops panes in every live session, in place.","Picks up new kobe code without `kobe reset` \u2014 the engine (claude)","panes and your running turns are never touched. Takes no options.",""].join(`
182
182
  `));return}let J=f.find((Q)=>Q.length>0);if(J!==void 0)process.stderr.write(`kobe reload: unexpected argument "${J}"
183
183
 
184
184
  Usage: kobe reload (takes no options)
185
- `),process.exit(2);if(!await NJ()){console.log("kobe reload: tmux is not installed \u2014 no panes to reload");return}let{code:Y,stdout:z}=await Nj(["list-sessions","-F","#{session_name}"]);if(Y!==0){console.log(`kobe reload: no kobe tmux sessions on the \`${QJ}\` socket`);return}let G=z.split(`
186
- `).map((Q)=>Q.trim()).filter((Q)=>Q.length>0);if(G.length===0){console.log(`kobe reload: no kobe tmux sessions on the \`${QJ}\` socket`);return}let{refreshKobeWorkspacePanes:X}=await Promise.resolve().then(() => (J1(),r1)),q=0;for(let Q of G)try{await X(Q),q++}catch(H){console.error(` failed to reload session "${Q}": ${H instanceof Error?H.message:String(H)}`)}console.log(`kobe: reloaded Tasks/Ops panes in ${q}/${G.length} session(s) \u2014 engine panes untouched`)}var qQ=k(()=>{$G();sq();mz();oq();lf();XQ();Tf();D1()});var OU={};jf(OU,{runWebSubcommand:()=>Fk});import{existsSync as DU}from"fs";import{homedir as Wk}from"os";import{resolve as QQ}from"path";import{fileURLToPath as LU}from"url";function KU(){let f=process.env.KOBE_HOME_DIR?.trim();return f?`sandbox: ${f}`:`${Wk()}/.kobe (production)`}function Kk(){let f=LU(import.meta.url),J=[QQ(f,"../../../../kobe-web/dist"),QQ(f,"../../web-ui")];for(let Y of J)if(DU(`${Y}/index.html`))return Y;return}function Uk(){let f=LU(import.meta.url),J=[QQ(f,"../../../../kobe-web/pty-server.mjs"),QQ(f,"../../web-ui/pty-server.mjs")];for(let Y of J)if(DU(Y))return Y;return}async function UU(f){try{let J=Bun.spawn(["lsof","-nP",`-iTCP:${f}`,"-sTCP:LISTEN","-t"],{stdout:"pipe",stderr:"ignore"});return(await new Response(J.stdout).text()).split(`
187
- `).map((z)=>Number.parseInt(z.trim(),10)).filter((z)=>Number.isFinite(z)&&z!==process.pid)}catch{return[]}}async function Dk(f){let J;try{J=(await(await fetch(`http://localhost:${f}${FU}`,{signal:AbortSignal.timeout(800)})).text()).trim()}catch{return}if(J!==MU)throw Error(`PTY port ${f} is in use by a non-kobe service; refusing to replace it`);let Y=await UU(f);for(let G of Y)try{process.kill(G,"SIGTERM")}catch{}let z=Date.now()+2000;while(Date.now()<z){if((await UU(f)).length===0)return;await new Promise((G)=>setTimeout(G,100))}}async function Lk(f){let J=Uk();if(!J)return null;let Y=f.webPort+2;if(f.takeover)await Dk(Y);return Bun.spawn(["node",J],{stdin:"ignore",stdout:"inherit",stderr:"inherit",env:{...process.env,KOBE_DAEMON_WEB_PORT:String(f.webPort),KOBE_PTY_PORT:String(Y)}})}async function Mk(f,J){if(process.env.KOBE_DAEMON_WEB_PORT=String(f),J)process.env.KOBE_DAEMON_WEB_STATIC_DIR=J;await DG();let Y;try{Y=(await(await fetch(`http://127.0.0.1:${f}${FU}`,{signal:AbortSignal.timeout(1500)})).text()).trim()}catch(z){throw Error(`daemon web transport is not reachable on :${f}; run \`kobe daemon restart\` so the daemon picks up this build (${z instanceof Error?z.message:String(z)})`)}if(Y!==MU)throw Error(`unexpected daemon web health marker on :${f}: ${Y}`);if(J){if(!(await fetch(`http://127.0.0.1:${f}/`,{signal:AbortSignal.timeout(1500)})).ok)throw Error(`daemon web transport is up on :${f} but is not serving web assets; run \`kobe daemon restart\` so it picks up ${J}`)}}async function Fk(f){if(f.includes("--help")||f.includes("-h")){process.stdout.write(Vk);return}let J=5174,Y=f.indexOf("--port");if(Y!==-1){let z=Number.parseInt(f[Y+1]??"",10);if(!Number.isFinite(z))process.stderr.write(`kobe web: --port needs a number
188
- `),process.exit(2);J=z}try{let z=f.includes("--routes-only")||f.includes("--bridge-only"),G=!f.includes("--no-takeover"),X=z?void 0:Kk();if(!z&&!X)throw Error("web assets are missing from this kobe build; run `bun run build` in packages/kobe, or `bun run dev` in packages/kobe-web from a source checkout");await Mk(J,X);let q=null,Q=!1,H=()=>{if(Q)return;Q=!0,q?.kill(),q=null};if(z)process.stdout.write(`kobe daemon web transport listening on http://localhost:${J} (routes only)
189
- `),process.stdout.write(` home: ${KU()}
190
- `);else if(q=await Lk({webPort:J,takeover:G}),process.stdout.write(`kobe web \u2192 http://localhost:${J}
191
- `),process.stdout.write(` home: ${KU()}
185
+ `),process.exit(2);if(!await NJ()){console.log("kobe reload: tmux is not installed \u2014 no panes to reload");return}let{code:Y,stdout:z}=await Sj(["list-sessions","-F","#{session_name}"]);if(Y!==0){console.log(`kobe reload: no kobe tmux sessions on the \`${qJ}\` socket`);return}let G=z.split(`
186
+ `).map((Q)=>Q.trim()).filter((Q)=>Q.length>0);if(G.length===0){console.log(`kobe reload: no kobe tmux sessions on the \`${qJ}\` socket`);return}let{refreshKobeWorkspacePanes:X}=await Promise.resolve().then(() => (Y1(),r1)),q=0;for(let Q of G)try{await X(Q),q++}catch(H){console.error(` failed to reload session "${Q}": ${H instanceof Error?H.message:String(H)}`)}console.log(`kobe: reloaded Tasks/Ops panes in ${q}/${G.length} session(s) \u2014 engine panes untouched`)}var HQ=k(()=>{vG();sq();xz();oq();lf();qQ();Tf();D1()});var gU={};jf(gU,{runWebSubcommand:()=>Ok});import{existsSync as MU}from"fs";import{homedir as Vk}from"os";import{resolve as BQ}from"path";import{fileURLToPath as FU}from"url";function DU(){let f=process.env.KOBE_HOME_DIR?.trim();return f?`sandbox: ${f}`:`${Vk()}/.kobe (production)`}function Uk(){let f=FU(import.meta.url),J=[BQ(f,"../../../../kobe-web/dist"),BQ(f,"../../web-ui")];for(let Y of J)if(MU(`${Y}/index.html`))return Y;return}function Dk(){let f=FU(import.meta.url),J=[BQ(f,"../../../../kobe-web/pty-server.mjs"),BQ(f,"../../web-ui/pty-server.mjs")];for(let Y of J)if(MU(Y))return Y;return}async function LU(f){try{let J=Bun.spawn(["lsof","-nP",`-iTCP:${f}`,"-sTCP:LISTEN","-t"],{stdout:"pipe",stderr:"ignore"});return(await new Response(J.stdout).text()).split(`
187
+ `).map((z)=>Number.parseInt(z.trim(),10)).filter((z)=>Number.isFinite(z)&&z!==process.pid)}catch{return[]}}async function Lk(f){let J;try{J=(await(await fetch(`http://localhost:${f}${AU}`,{signal:AbortSignal.timeout(800)})).text()).trim()}catch{return}if(J!==OU)throw Error(`PTY port ${f} is in use by a non-kobe service; refusing to replace it`);let Y=await LU(f);for(let G of Y)try{process.kill(G,"SIGTERM")}catch{}let z=Date.now()+2000;while(Date.now()<z){if((await LU(f)).length===0)return;await new Promise((G)=>setTimeout(G,100))}}async function Mk(f){let J=Dk();if(!J)return null;let Y=f.webPort+2;if(f.takeover)await Lk(Y);return Bun.spawn(["node",J],{stdin:"ignore",stdout:"inherit",stderr:"inherit",env:{...process.env,KOBE_DAEMON_WEB_PORT:String(f.webPort),KOBE_PTY_PORT:String(Y)}})}async function Fk(f,J){if(process.env.KOBE_DAEMON_WEB_PORT=String(f),J)process.env.KOBE_DAEMON_WEB_STATIC_DIR=J;await UG();let Y;try{Y=(await(await fetch(`http://127.0.0.1:${f}${AU}`,{signal:AbortSignal.timeout(1500)})).text()).trim()}catch(z){throw Error(`daemon web transport is not reachable on :${f}; run \`kobe daemon restart\` so the daemon picks up this build (${z instanceof Error?z.message:String(z)})`)}if(Y!==OU)throw Error(`unexpected daemon web health marker on :${f}: ${Y}`);if(J){if(!(await fetch(`http://127.0.0.1:${f}/`,{signal:AbortSignal.timeout(1500)})).ok)throw Error(`daemon web transport is up on :${f} but is not serving web assets; run \`kobe daemon restart\` so it picks up ${J}`)}}async function Ok(f){if(f.includes("--help")||f.includes("-h")){process.stdout.write(Kk);return}let J=5174,Y=f.indexOf("--port");if(Y!==-1){let z=Number.parseInt(f[Y+1]??"",10);if(!Number.isFinite(z))process.stderr.write(`kobe web: --port needs a number
188
+ `),process.exit(2);J=z}try{let z=f.includes("--routes-only")||f.includes("--bridge-only"),G=!f.includes("--no-takeover"),X=z?void 0:Uk();if(!z&&!X)throw Error("web assets are missing from this kobe build; run `bun run build` in packages/kobe, or `bun run dev` in packages/kobe-web from a source checkout");await Fk(J,X);let q=null,Q=!1,H=()=>{if(Q)return;Q=!0,q?.kill(),q=null};if(z)process.stdout.write(`kobe daemon web transport listening on http://localhost:${J} (routes only)
189
+ `),process.stdout.write(` home: ${DU()}
190
+ `);else if(q=await Mk({webPort:J,takeover:G}),process.stdout.write(`kobe web \u2192 http://localhost:${J}
191
+ `),process.stdout.write(` home: ${DU()}
192
192
  `),!q)process.stderr.write(`kobe web: PTY server not found; terminal tabs will be unavailable
193
193
  `);process.on("SIGINT",()=>{H(),process.exit(0)}),process.on("SIGTERM",()=>{H(),process.exit(0)}),q?.exited.then(()=>{if(!Q)process.stderr.write(`kobe web: PTY server exited
194
194
  `),H(),process.exit(1)}),await new Promise(()=>{})}catch(z){process.stderr.write(`kobe web: ${z instanceof Error?z.message:String(z)}
195
- `),process.exit(1)}}var MU="kobe-web",FU="/__kobe_web",Vk=`Usage: kobe web [options]
195
+ `),process.exit(1)}}var OU="kobe-web",AU="/__kobe_web",Kk=`Usage: kobe web [options]
196
196
 
197
197
  Launch the kobe web UI through daemon web transport on http://localhost:<port>.
198
198
 
@@ -201,45 +201,45 @@ Options:
201
201
  --routes-only Routes only; Vite serves the SPA separately.
202
202
  --no-takeover Reserved for compatibility; daemon owns the web port.
203
203
  -h, --help Show this help.
204
- `;var AU=k(()=>{y1()});var RU={};jf(RU,{runSkillSubcommand:()=>Ak});function yj(){return["usage: kobe skill <verb>","","verbs:"," install [--agent NAME] Install the kobe agent skill (wraps `npx skills add`)"," status Show whether the skill is installed"," command [--agent NAME] Print the underlying npx command without running it","",`The skill teaches a coding agent how to drive \`kobe api\`. Default agent: ${zQ}.`].join(`
205
- `)}function gU(f){let J=zQ;for(let Y=0;Y<f.length;Y++){let z=f[Y];if(z==="--agent"){let G=f[Y+1];if(!G||G.startsWith("--"))process.stderr.write(`kobe skill: --agent requires a value
204
+ `;var RU=k(()=>{L1()});var kU={};jf(kU,{runSkillSubcommand:()=>gk});function Ij(){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: ${XQ}.`].join(`
205
+ `)}function CU(f){let J=XQ;for(let Y=0;Y<f.length;Y++){let z=f[Y];if(z==="--agent"){let G=f[Y+1];if(!G||G.startsWith("--"))process.stderr.write(`kobe skill: --agent requires a value
206
206
  `),process.exit(2);J=G,Y++}else if(z.startsWith("--agent="))J=z.slice(8);else process.stderr.write(`kobe skill: unknown flag "${z}"
207
207
 
208
- ${yj()}
209
- `),process.exit(2)}return J}async function Ak(f){let[J,...Y]=f;if(!J||J==="--help"||J==="-h"||J==="help"){if(process.stdout.write(`${yj()}
210
- `),!J)process.exitCode=2;return}if(!Ok.includes(J))process.stderr.write(`kobe skill: unknown verb "${J}"
208
+ ${Ij()}
209
+ `),process.exit(2)}return J}async function gk(f){let[J,...Y]=f;if(!J||J==="--help"||J==="-h"||J==="help"){if(process.stdout.write(`${Ij()}
210
+ `),!J)process.exitCode=2;return}if(!Ak.includes(J))process.stderr.write(`kobe skill: unknown verb "${J}"
211
211
 
212
- ${yj()}
213
- `),process.exit(2);if(J==="status"){let Q=CX(),[H,B]=Cj(),V=!Q.installed?"\u2717 not installed":Q.stale?`\u26A0 out of date (installed ${Q.installedVersion===null?"unstamped":`v${Q.installedVersion}`}, this kobe wants v${Q.currentVersion})`:`\u2713 installed (v${Q.installedVersion})`;process.stdout.write([`kobe skill: ${V}`,` looked in: ${H}`,` ${B}`,Q.installed&&!Q.stale?"":" \u2192 run `kobe skill install` to install / refresh",""].join(`
214
- `));return}if(J==="command"){process.stdout.write(`${GQ({agent:gU(Y)})}
215
- `);return}let z=gU(Y),G=Rj({agent:z});process.stdout.write(`kobe skill: running \`npx ${G.join(" ")}\`
212
+ ${Ij()}
213
+ `),process.exit(2);if(J==="status"){let Q=kX(),[H,B]=yj(),V=!Q.installed?"\u2717 not installed":Q.stale?`\u26A0 out of date (installed ${Q.installedVersion===null?"unstamped":`v${Q.installedVersion}`}, this kobe wants v${Q.currentVersion})`:`\u2713 installed (v${Q.installedVersion})`;process.stdout.write([`kobe skill: ${V}`,` looked in: ${H}`,` ${B}`,Q.installed&&!Q.stale?"":" \u2192 run `kobe skill install` to install / refresh",""].join(`
214
+ `));return}if(J==="command"){process.stdout.write(`${ZQ({agent:CU(Y)})}
215
+ `);return}let z=CU(Y),G=Nj({agent:z});process.stdout.write(`kobe skill: running \`npx ${G.join(" ")}\`
216
216
  `);let q=await Bun.spawn(["npx",...G],{stdin:"inherit",stdout:"inherit",stderr:"inherit"}).exited;if(q!==0)process.stderr.write(`
217
217
  kobe skill install failed (npx exited ${q}). Is \`npx\` on PATH and are you online?
218
- You can run it yourself: ${GQ({agent:z})}
218
+ You can run it yourself: ${ZQ({agent:z})}
219
219
  `),process.exit(q||1);process.stdout.write(`kobe skill: installed.
220
- `)}var Ok;var CU=k(()=>{XQ();Ok=["install","status","command"]});var Sj={};jf(Sj,{runHookSubcommand:()=>Sk,readTextWithTimeout:()=>bU,parseWorktreeAddPath:()=>IU,ensureGlobalKobeHooks:()=>uk});import{homedir as gk}from"os";import{join as NU,resolve as yU}from"path";async function bU(f,J=Rk){let Y;try{return await Promise.race([f(),new Promise((z)=>{Y=setTimeout(()=>z(""),J)})])}finally{if(Y!==void 0)clearTimeout(Y)}}async function SU(){try{let f=await bU(()=>Bun.stdin.text());if(!f.trim())return{};let J=JSON.parse(f);return J&&typeof J==="object"&&!Array.isArray(J)?J:{}}catch{return{}}}function Ck(f,J){for(let Y=0;Y<f.length;Y++){if(f[Y]===J)return f[Y+1];if(f[Y].startsWith(`${J}=`))return f[Y].slice(J.length+1)}return}function Nk(f){return!!f&&typeof f==="object"&&!Array.isArray(f)}function yk(f){let J=[],Y=/"([^"]*)"|'([^']*)'|(\S+)/g,z;while((z=Y.exec(f))!==null)J.push(z[1]??z[2]??z[3]??"");return J}function IU(f){let J=yk(f),Y=new Set(["-b","-B","--reason"]);for(let z=0;z+1<J.length;z++){if(J[z]!=="worktree"||J[z+1]!=="add")continue;let G=z+2;while(G<J.length){let X=J[G];if(X==="&&"||X==="||"||X===";"||X==="|"||X===">"||X===">>")break;if(X.startsWith("-")){G+=Y.has(X)?2:1;continue}return X}}return}async function bk(){let f=await SU(),J=Nk(f.tool_input)?f.tool_input:{},Y=typeof J.command==="string"?J.command:"";if(!Y.includes("worktree"))return;let z=IU(Y);if(!z)return;let G=typeof f.cwd==="string"&&f.cwd?f.cwd:process.cwd(),X=yU(G,z),q=await p1();if(!q)return;try{await q.request("worktree.reconcile",{cwd:G,worktreePath:X})}finally{q.close()}}async function Sk(f){let[J,...Y]=f;if(J==="setup"){await Ek(Y);return}if(J===kk){try{await bk()}catch{}return}try{if(!J||!NZ(J))return;let z=await SU(),G=Ck(Y,"--task-id"),X=typeof z.cwd==="string"&&z.cwd?z.cwd:process.cwd(),q;for(let H of TU())if(q=H.activityDetailFromPayload(J,z),q)break;let Q=await p1();if(!Q)return;try{await Q.request("engine.reportEvent",{...G?{taskId:G}:{cwd:X},kind:J,...q?{detail:q}:{}})}finally{Q.close()}}catch{}}function Ik(){return cf.map((f)=>$H(f)).filter((f)=>f.supportsWorktreeSync())}function TU(){return cf.map((f)=>$H(f)).filter((f)=>f.supportsHooks())}function bj(){return NU(gk(),".claude","settings.json")}function Tk(f){if(!f||f==="off")return;if(f==="global")return bj();if(f.startsWith("repo:"))return NU(yU(f.slice(5)),".claude","settings.json");return f}async function uk(){try{let f=bj();for(let J of TU())await J.installActivityHooks(f),await J.installWorktreeWatchHook(f);await uU()}catch{}}async function uU(){let f=Ik();if(f.length===0)return;let J=kf(kU),Y=new Set([bj()]),z=Tk(J);if(z)Y.add(z);for(let G of f)for(let X of Y)await G.removeWorktreeSyncHook(X);if(J!=="off")af(kU,"off")}async function Ek(f){await uU(),process.stdout.write(["kobe hook setup is deprecated and now a no-op (cleanup only).","","The old external-worktree sync used a global WorktreeCreate hook, which is","a VCS provider hook \u2014 its presence broke `claude --worktree` / EnterWorktree","in every repo. Any hook kobe previously installed has been removed.","","Sync is now automatic: a `claude --worktree` (or any session) started in a","worktree under a repo kobe already tracks is adopted as a task on launch.","To adopt existing worktrees on demand, use the New Task dialog or `kobe adopt`.",""].join(`
221
- `))}var Rk=500,kk="worktree-created",kU="externalWorktreeSync";var Ij=k(()=>{y1();rH();yZ();Of();U1()});function xU(f){var J;if(f>=55296&&f<=57343||f>1114111)return 65533;return(J=xk.get(f))!==null&&J!==void 0?J:f}var Tj,xk,EU;var wU=k(()=>{xk=new Map([[0,65533],[128,8364],[130,8218],[131,402],[132,8222],[133,8230],[134,8224],[135,8225],[136,710],[137,8240],[138,352],[139,8249],[140,338],[142,381],[145,8216],[146,8217],[147,8220],[148,8221],[149,8226],[150,8211],[151,8212],[152,732],[153,8482],[154,353],[155,8250],[156,339],[158,382],[159,376]]),EU=(Tj=String.fromCodePoint)!==null&&Tj!==void 0?Tj:(f)=>{let J="";if(f>65535)f-=65536,J+=String.fromCharCode(f>>>10&1023|55296),f=56320|f&1023;return J+=String.fromCharCode(f),J}});function hU(f){let J=typeof atob==="function"?atob(f):typeof Buffer.from==="function"?Buffer.from(f,"base64").toString("binary"):new Buffer(f,"base64").toString("binary"),Y=J.length&-2,z=new Uint16Array(Y/2);for(let G=0,X=0;G<Y;G+=2){let q=J.charCodeAt(G),Q=J.charCodeAt(G+1);z[X++]=q|Q<<8}return z}var PU;var vU=k(()=>{PU=hU("QR08ALkAAgH6AYsDNQR2BO0EPgXZBQEGLAbdBxMISQrvCmQLfQurDKQNLw4fD4YPpA+6D/IPAAAAAAAAAAAAAAAAKhBMEY8TmxUWF2EYLBkxGuAa3RsJHDscWR8YIC8jSCSIJcMl6ie3Ku8rEC0CLjoupS7kLgAIRU1hYmNmZ2xtbm9wcnN0dVQAWgBeAGUAaQBzAHcAfgCBAIQAhwCSAJoAoACsALMAbABpAGcAO4DGAMZAUAA7gCYAJkBjAHUAdABlADuAwQDBQHIiZXZlAAJhAAFpeW0AcgByAGMAO4DCAMJAEGRyAADgNdgE3XIAYQB2AGUAO4DAAMBA8CFoYZFj4SFjcgBhZAAAoFMqAAFncIsAjgBvAG4ABGFmAADgNdg43fAlbHlGdW5jdGlvbgCgYSBpAG4AZwA7gMUAxUAAAWNzpACoAHIAAOA12Jzc6SFnbgCgVCJpAGwAZABlADuAwwDDQG0AbAA7gMQAxEAABGFjZWZvcnN1xQDYANoA7QDxAPYA+QD8AAABY3LJAM8AayNzbGFzaAAAoBYidgHTANUAAKDnKmUAZAAAoAYjeQARZIABY3J0AOAA5QDrAGEidXNlAACgNSLuI291bGxpcwCgLCFhAJJjcgAA4DXYBd1wAGYAAOA12Dnd5SF2ZdhiYwDyAOoAbSJwZXEAAKBOIgAHSE9hY2RlZmhpbG9yc3UXARoBHwE6AVIBVQFiAWQBZgGCAakB6QHtAfIBYwB5ACdkUABZADuAqQCpQIABY3B5ACUBKAE1AfUhdGUGYWmg0iJ0KGFsRGlmZmVyZW50aWFsRAAAoEUhbCJleXMAAKAtIQACYWVpb0EBRAFKAU0B8iFvbgxhZABpAGwAO4DHAMdAcgBjAAhhbiJpbnQAAKAwIm8AdAAKYQABZG5ZAV0BaSJsbGEAuGB0I2VyRG90ALdg8gA5AWkAp2NyImNsZQAAAkRNUFRwAXQBeQF9AW8AdAAAoJkiaSJudXMAAKCWIuwhdXMAoJUiaSJtZXMAAKCXIm8AAAFjc4cBlAFrKndpc2VDb250b3VySW50ZWdyYWwAAKAyImUjQ3VybHkAAAFEUZwBpAFvJXVibGVRdW90ZQAAoB0gdSJvdGUAAKAZIAACbG5wdbABtgHNAdgBbwBuAGWgNyIAoHQqgAFnaXQAvAHBAcUB8iJ1ZW50AKBhIm4AdAAAoC8i7yV1ckludGVncmFsAKAuIgABZnLRAdMBAKACIe8iZHVjdACgECJuLnRlckNsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbAAAoDMi7yFzcwCgLypjAHIAAOA12J7ccABDoNMiYQBwAACgTSKABURKU1phY2VmaW9zAAsCEgIVAhgCGwIsAjQCOQI9AnMCfwNvoEUh9CJyYWhkAKARKWMAeQACZGMAeQAFZGMAeQAPZIABZ3JzACECJQIoAuchZXIAoCEgcgAAoKEhaAB2AACg5CoAAWF5MAIzAvIhb24OYRRkbAB0oAciYQCUY3IAAOA12AfdAAFhZkECawIAAWNtRQJnAvIjaXRpY2FsAAJBREdUUAJUAl8CYwJjInV0ZQC0YG8AdAFZAloC2WJiJGxlQWN1dGUA3WJyImF2ZQBgYGkibGRlANxi7yFuZACgxCJmJWVyZW50aWFsRAAAoEYhcAR9AgAAAAAAAIECjgIAABoDZgAA4DXYO91EoagAhQKJAm8AdAAAoNwgcSJ1YWwAAKBQIuIhbGUAA0NETFJVVpkCqAK1Au8C/wIRA28AbgB0AG8AdQByAEkAbgB0AGUAZwByAGEA7ADEAW8AdAKvAgAAAACwAqhgbiNBcnJvdwAAoNMhAAFlb7kC0AJmAHQAgAFBUlQAwQLGAs0CciJyb3cAAKDQIekkZ2h0QXJyb3cAoNQhZQDlACsCbgBnAAABTFLWAugC5SFmdAABQVLcAuECciJyb3cAAKD4J+kkZ2h0QXJyb3cAoPon6SRnaHRBcnJvdwCg+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 j1;var mU=k(()=>{(function(f){f[f.VALUE_LENGTH=49152]="VALUE_LENGTH",f[f.FLAG13=8192]="FLAG13",f[f.BRANCH_LENGTH=8064]="BRANCH_LENGTH",f[f.JUMP_TABLE=127]="JUMP_TABLE"})(j1||(j1={}))});function uj(f){return f>=Ef.ZERO&&f<=Ef.NINE}function wk(f){return f>=Ef.UPPER_A&&f<=Ef.UPPER_F||f>=Ef.LOWER_A&&f<=Ef.LOWER_F}function hk(f){return f>=Ef.UPPER_A&&f<=Ef.UPPER_Z||f>=Ef.LOWER_A&&f<=Ef.LOWER_Z||uj(f)}function Pk(f){return f===Ef.EQUALS||hk(f)}class Ej{constructor(f,J,Y){this.decodeTree=f,this.emitCodePoint=J,this.errors=Y,this.state=of.EntityStart,this.consumed=1,this.result=0,this.treeIndex=0,this.excess=1,this.decodeMode=JY.Strict,this.runConsumed=0}startEntity(f){this.decodeMode=f,this.state=of.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1,this.runConsumed=0}write(f,J){switch(this.state){case of.EntityStart:{if(f.charCodeAt(J)===Ef.NUM)return this.state=of.NumericStart,this.consumed+=1,this.stateNumericStart(f,J+1);return this.state=of.NamedEntity,this.stateNamedEntity(f,J)}case of.NumericStart:return this.stateNumericStart(f,J);case of.NumericDecimal:return this.stateNumericDecimal(f,J);case of.NumericHex:return this.stateNumericHex(f,J);case of.NamedEntity:return this.stateNamedEntity(f,J)}}stateNumericStart(f,J){if(J>=f.length)return-1;if((f.charCodeAt(J)|cU)===Ef.LOWER_X)return this.state=of.NumericHex,this.consumed+=1,this.stateNumericHex(f,J+1);return this.state=of.NumericDecimal,this.stateNumericDecimal(f,J)}stateNumericHex(f,J){while(J<f.length){let Y=f.charCodeAt(J);if(uj(Y)||wk(Y)){let z=Y<=Ef.NINE?Y-Ef.ZERO:(Y|cU)-Ef.LOWER_A+10;this.result=this.result*16+z,this.consumed++,J++}else return this.emitNumericEntity(Y,3)}return-1}stateNumericDecimal(f,J){while(J<f.length){let Y=f.charCodeAt(J);if(uj(Y))this.result=this.result*10+(Y-Ef.ZERO),this.consumed++,J++;else return this.emitNumericEntity(Y,2)}return-1}emitNumericEntity(f,J){var Y;if(this.consumed<=J)return(Y=this.errors)===null||Y===void 0||Y.absenceOfDigitsInNumericCharacterReference(this.consumed),0;if(f===Ef.SEMI)this.consumed+=1;else if(this.decodeMode===JY.Strict)return 0;if(this.emitCodePoint(xU(this.result),this.consumed),this.errors){if(f!==Ef.SEMI)this.errors.missingSemicolonAfterCharacterReference();this.errors.validateNumericCharacterReference(this.result)}return this.consumed}stateNamedEntity(f,J){let{decodeTree:Y}=this,z=Y[this.treeIndex],G=(z&j1.VALUE_LENGTH)>>14;while(J<f.length){if(G===0&&(z&j1.FLAG13)!==0){let q=(z&j1.BRANCH_LENGTH)>>7;if(this.runConsumed===0){let Q=z&j1.JUMP_TABLE;if(f.charCodeAt(J)!==Q)return this.result===0?0:this.emitNotTerminatedNamedEntity();J++,this.excess++,this.runConsumed++}while(this.runConsumed<q){if(J>=f.length)return-1;let Q=this.runConsumed-1,H=Y[this.treeIndex+1+(Q>>1)],B=Q%2===0?H&255:H>>8&255;if(f.charCodeAt(J)!==B)return this.runConsumed=0,this.result===0?0:this.emitNotTerminatedNamedEntity();J++,this.excess++,this.runConsumed++}this.runConsumed=0,this.treeIndex+=1+(q>>1),z=Y[this.treeIndex],G=(z&j1.VALUE_LENGTH)>>14}if(J>=f.length)break;let X=f.charCodeAt(J);if(X===Ef.SEMI&&G!==0&&(z&j1.FLAG13)!==0)return this.emitNamedEntityData(this.treeIndex,G,this.consumed+this.excess);if(this.treeIndex=mk(Y,z,this.treeIndex+Math.max(1,G),X),this.treeIndex<0)return this.result===0||this.decodeMode===JY.Attribute&&(G===0||Pk(X))?0:this.emitNotTerminatedNamedEntity();if(z=Y[this.treeIndex],G=(z&j1.VALUE_LENGTH)>>14,G!==0){if(X===Ef.SEMI)return this.emitNamedEntityData(this.treeIndex,G,this.consumed+this.excess);if(this.decodeMode!==JY.Strict&&(z&j1.FLAG13)===0)this.result=this.treeIndex,this.consumed+=this.excess,this.excess=0}J++,this.excess++}return-1}emitNotTerminatedNamedEntity(){var f;let{result:J,decodeTree:Y}=this,z=(Y[J]&j1.VALUE_LENGTH)>>14;return this.emitNamedEntityData(J,z,this.consumed),(f=this.errors)===null||f===void 0||f.missingSemicolonAfterCharacterReference(),this.consumed}emitNamedEntityData(f,J,Y){let{decodeTree:z}=this;if(this.emitCodePoint(J===1?z[f]&~(j1.VALUE_LENGTH|j1.FLAG13):z[f+1],Y),J===3)this.emitCodePoint(z[f+2],Y);return Y}end(){var f;switch(this.state){case of.NamedEntity:return this.result!==0&&(this.decodeMode!==JY.Attribute||this.result===this.treeIndex)?this.emitNotTerminatedNamedEntity():0;case of.NumericDecimal:return this.emitNumericEntity(0,2);case of.NumericHex:return this.emitNumericEntity(0,3);case of.NumericStart:return(f=this.errors)===null||f===void 0||f.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case of.EntityStart:return 0}}}function vk(f){let J="",Y=new Ej(f,(z)=>J+=EU(z));return function(G,X){let q=0,Q=0;while((Q=G.indexOf("&",Q))>=0){J+=G.slice(q,Q),Y.startEntity(X);let B=Y.write(G,Q+1);if(B<0){q=Q+Y.end();break}q=Q+B,Q=B===0?q+1:q}let H=J+G.slice(q);return J="",H}}function mk(f,J,Y,z){let G=(J&j1.BRANCH_LENGTH)>>7,X=J&j1.JUMP_TABLE;if(G===0)return X!==0&&z===X?Y:-1;if(X){let B=z-X;return B<0||B>=G?-1:f[Y+B]-1}let q=G+1>>1,Q=0,H=G-1;while(Q<=H){let B=Q+H>>>1,V=B>>1,U=f[Y+V]>>(B&1)*8&255;if(U<z)Q=B+1;else if(U>z)H=B-1;else return f[Y+q+B]}return-1}function Cz(f,J=JY.Legacy){return ck(f,J)}var Ef,cU=32,of,JY,ck;var nU=k(()=>{wU();vU();mU();(function(f){f[f.NUM=35]="NUM",f[f.SEMI=59]="SEMI",f[f.EQUALS=61]="EQUALS",f[f.ZERO=48]="ZERO",f[f.NINE=57]="NINE",f[f.LOWER_A=97]="LOWER_A",f[f.LOWER_F=102]="LOWER_F",f[f.LOWER_X=120]="LOWER_X",f[f.LOWER_Z=122]="LOWER_Z",f[f.UPPER_A=65]="UPPER_A",f[f.UPPER_F=70]="UPPER_F",f[f.UPPER_Z=90]="UPPER_Z"})(Ef||(Ef={}));(function(f){f[f.EntityStart=0]="EntityStart",f[f.NumericStart=1]="NumericStart",f[f.NumericDecimal=2]="NumericDecimal",f[f.NumericHex=3]="NumericHex",f[f.NamedEntity=4]="NamedEntity"})(of||(of={}));(function(f){f[f.Legacy=0]="Legacy",f[f.Strict=1]="Strict",f[f.Attribute=2]="Attribute"})(JY||(JY={}));ck=vk(PU)});var dU,iU;var aU=k(()=>{nU();(function(f){f[f.XML=0]="XML",f[f.HTML=1]="HTML"})(dU||(dU={}));(function(f){f[f.UTF8=0]="UTF8",f[f.ASCII=1]="ASCII",f[f.Extensive=2]="Extensive",f[f.Attribute=3]="Attribute",f[f.Text=4]="Text"})(iU||(iU={}))});import{CliRenderer as dk,createCliRenderer as ik,engine as lk}from"@opentui/core";import{createTestRenderer as mm}from"@opentui/core/testing";import{ASCIIFontRenderable as ak,BoxRenderable as $k,CodeRenderable as rk,DiffRenderable as pk,InputRenderable as _k,LineNumberRenderable as ok,MarkdownRenderable as sk,ScrollBoxRenderable as tk,SelectRenderable as ek,TabSelectRenderable as fN,TextareaRenderable as JN,TextAttributes as xj,TextNodeRenderable as YN,TextRenderable as zN}from"@opentui/core";import{engine as dm,Timeline as im}from"@opentui/core";import{BaseRenderable as sU,createTextAttributes as XN,InputRenderable as wj,InputRenderableEvents as kX,isTextNodeRenderable as vj,parseColor as $U,Renderable as ZN,RootTextNodeRenderable as qN,ScrollBoxRenderable as QN,SelectRenderable as rU,SelectRenderableEvents as hj,TabSelectRenderable as pU,TabSelectRenderableEvents as Pj,TextNodeRenderable as HN,TextRenderable as tU}from"@opentui/core";import{BaseRenderable as MN,isTextNodeRenderable as FN,TextNodeRenderable as ON,TextRenderable as AN,Yoga as oU}from"@opentui/core";import{BoxRenderable as em,RootRenderable as fc}from"@opentui/core";import{TimeToFirstDrawRenderable as kN}from"@opentui/core";import{createSlotRegistry as zc}from"@opentui/core";function jN({createElement:f,createTextNode:J,createSlotNode:Y,isTextNode:z,replaceText:G,insertNode:X,removeNode:q,setProperty:Q,getParentNode:H,getFirstChild:B,getNextSibling:V}){function j(N,g,C,y){if(C!==void 0&&!y)y=[];if(typeof g!=="function")return U(N,g,y,C);AJ((_)=>U(N,g(),_,C),y)}function U(N,g,C,y,_){while(typeof C==="function")C=C();if(g===C)return C;let z0=typeof g,t=y!==void 0;if(z0==="string"||z0==="number"){if(z0==="number")g=g.toString();if(t){let Y0=C[0];if(Y0&&z(Y0))G(Y0,g);else Y0=J(g);C=M(N,C,y,Y0)}else if(C!==""&&typeof C==="string")G(B(N),C=g);else M(N,C,y,J(g)),C=g}else if(g==null||z0==="boolean")C=M(N,C,y);else if(z0==="function")return AJ(()=>{let Y0=g();while(typeof Y0==="function")Y0=Y0();C=U(N,Y0,C,y)}),()=>C;else if(Array.isArray(g)){let Y0=[];if(L(Y0,g,_))return AJ(()=>C=U(N,Y0,C,y,!0)),()=>C;if(Y0.length===0){let T=M(N,C,y);if(t)return C=T}else if(Array.isArray(C))if(C.length===0)R(N,Y0,y);else O(N,C,Y0);else if(C==null||C==="")R(N,Y0);else O(N,t&&C||[B(N)],Y0);C=Y0}else{if(Array.isArray(C)){if(t)return C=M(N,C,y,g);M(N,C,null,g)}else if(C==null||C===""||!B(N))X(N,g);else S(N,g,B(N));C=g}return C}function L(N,g,C){let y=!1;for(let _=0,z0=g.length;_<z0;_++){let t=g[_],Y0;if(t==null||t===!0||t===!1);else if(Array.isArray(t))y=L(N,t)||y;else if((Y0=typeof t)==="string"||Y0==="number")N.push(J(t));else if(Y0==="function")if(C){while(typeof t==="function")t=t();y=L(N,Array.isArray(t)?t:[t])||y}else N.push(t),y=!0;else N.push(t)}return y}function O(N,g,C){let y=C.length,_=g.length,z0=y,t=0,Y0=0,T=V(g[_-1]),Q0=null;while(t<_||Y0<z0){if(g[t]===C[Y0]){t++,Y0++;continue}while(g[_-1]===C[z0-1])_--,z0--;if(_===t){let p=z0<y?Y0?V(C[Y0-1]):C[z0-Y0]:T;while(Y0<z0)X(N,C[Y0++],p)}else if(z0===Y0)while(t<_){if(!Q0||!Q0.has(g[t]))q(N,g[t]);t++}else if(g[t]===C[z0-1]&&C[Y0]===g[_-1]){let p=V(g[--_]);X(N,C[Y0++],V(g[t++])),X(N,C[--z0],p),g[_]=C[z0]}else{if(!Q0){Q0=new Map;let D0=Y0;while(D0<z0)Q0.set(C[D0],D0++)}let p=Q0.get(g[t]);if(p!=null)if(Y0<p&&p<z0){let D0=t,g0=1,$;while(++D0<_&&D0<z0){if(($=Q0.get(g[D0]))==null||$!==p+g0)break;g0++}if(g0>p-Y0){let E=g[t];while(Y0<p)X(N,C[Y0++],E)}else S(N,C[Y0++],g[t++])}else t++;else q(N,g[t++])}}}function M(N,g,C,y){if(C===void 0){let z0;while(z0=B(N))q(N,z0);return y&&X(N,y),y??""}let _=y||Y();if(g.length){let z0=!1;for(let t=g.length-1;t>=0;t--){let Y0=g[t];if(_!==Y0){let T=H(Y0)===N;if(!z0&&!t)T?S(N,_,Y0):X(N,_,C);else T&&q(N,Y0)}else z0=!0}}else X(N,_,C);return[_]}function R(N,g,C){for(let y=0,_=g.length;y<_;y++)X(N,g[y],C)}function S(N,g,C){X(N,g,C),q(N,C)}function a(N,g,C={},y){if(g||(g={}),!y)AJ(()=>C.children=U(N,g.children,C.children));return AJ(()=>g.ref&&g.ref(N)),AJ(()=>{for(let _ in g){if(_==="children"||_==="ref")continue;let z0=g[_];if(z0===C[_])continue;Q(N,_,z0,C[_]),C[_]=z0}}),C}return{render(N,g){let C;return _Y((y)=>{C=y,j(g,N())}),C},insert:j,spread(N,g,C){if(typeof g==="function")AJ((y)=>a(N,g(),y,C));else a(N,g,void 0,C)},createElement:f,createTextNode:J,insertNode:X,setProp(N,g,C,y){return Q(N,g,C,y),C},mergeProps:MZ,effect:AJ,memo:BN,createComponent:BW,use(N,g,C){return $f(()=>N(g,C))}}}function WN(f){let J=jN(f);return J.mergeProps=MZ,J}function ij(f){if(!HQ.has(f))HQ.set(f,0);let J=HQ.get(f)+1;return HQ.set(f,J),`${f}-${J}`}function VN(f,J,Y){if(sf("Inserting node:",rf(J),"into parent:",rf(f),"with anchor:",rf(Y),J instanceof gG),J instanceof NX)J.parent=f,J=J.getSlotChild(f);if(Y&&Y instanceof NX)Y=Y.getSlotChild(f);if(vj(J)){if(!(f instanceof tU)&&!vj(f))throw Error(`Orphan text error: "${J.toChunks().map((X)=>X.text).join("")}" must have a <text> as a parent: ${f.id} above ${J.id}`)}if(!(f instanceof sU))throw console.error("[INSERT]","Tried to mount a non base renderable"),Error("Tried to mount a non base renderable");if(!Y){f.add(J);return}let z=mj(f),G=z.findIndex((X)=>X.id===Y.id);if(G===-1)sf("[INSERT]","Could not find anchor",rf(f),rf(Y),"[children]",...z.map((X)=>X.id));f.add(J,G)}function KN(f,J){if(sf("Removing node:",rf(J),"from parent:",rf(f)),J instanceof NX)J.parent=null,J=J.getSlotChild(f);f.remove(J.id),process.nextTick(()=>{if(J instanceof sU&&!J.parent){J.destroyRecursively();return}})}function UN(f){sf("Creating text node:",f);let J=ij("text-node");if(typeof f==="number")f=f.toString();return gG.fromString(Cz(f),{id:J})}function DN(){let f=ij("slot-node");return sf("Creating slot node",f),new NX(f)}function _U(f){sf("Getting parent of node:",rf(f));let J=f.parent??void 0;if(J instanceof qN)J=J.textParent??void 0;let Y=J?.parent?.parent?.parent;if(Y instanceof QN&&Y.content===J)J=Y;return J}function RN(f){Object.assign(X6,f)}function CN(){return X6}var dj,Y1=()=>{let f=u1(dj);if(!f)throw Error("No renderer found");return f},GN=(f)=>{let J=Y1();f1(()=>{J.on("resize",f)}),mf(()=>{J.off("resize",f)})},TJ=()=>{let f=Y1(),[J,Y]=r({width:f.width,height:f.height});return GN((G,X)=>{Y({width:G,height:X})}),J},BN=(f)=>U0(()=>f()),HQ,sf=(...f)=>{if(process.env.DEBUG)console.log("[Reconciler]",...f)},gG,rf=(f)=>{if(!f)return;return f.id},mj=(f)=>{let J;if(f instanceof tU)J=f.getTextChildren();else J=f.getChildren();return J},LN,u,I0,b,W,x0,D,K,om,Z,eU,hY,lj,f6,J6,NX,yX,BQ,cj,nj,Y6,z6,G6,gN,X6,NN=(f,J)=>{let Y,z=!1,G=!1,X=!0,q=!1,Q=f.destroy.bind(f),H=()=>{if(G)return;if(!Y){z=!0;return}G=!0,Y()};f.once("destroy",H),f.destroy=()=>{if(X){q=!0;return}Q()};try{Y=LN(()=>b(dj.Provider,{get value(){return f},get children(){return b(J,{})}}),f.root)}finally{X=!1,f.destroy=Q}if(z)H();if(q)Q()},Z6=async(f,J={})=>{let Y=J instanceof dk?J:await ik({...J,onDestroy:()=>{J.onDestroy?.()}});lk.attach(Y),NN(Y,f)};var h=k(()=>{Wf();aU();Wf();Wf();Wf();dj=gJ();HQ=new Map;gG=class gG extends HN{static fromString(f,J={}){let Y=new gG(J);return Y.add(f),Y}};({render:LN,effect:u,memo:I0,createComponent:b,createElement:W,createTextNode:x0,insertNode:D,insert:K,spread:om,setProp:Z,mergeProps:eU,use:hY}=WN({createElement(f){sf("Creating element:",f);let J=ij(f),Y=u1(dj);if(!Y)throw Error("No renderer found");let z=CN();if(!z[f])throw Error(`[Reconciler] Unknown component type: ${f}`);let G=new z[f](Y,{id:J});return sf("Element created with id:",J),G},createTextNode:UN,createSlotNode:DN,replaceText(f,J){if(sf("Replacing text:",J,"in node:",rf(f)),!(f instanceof gG))return;f.replace(Cz(J),0)},setProperty(f,J,Y,z){if(J.startsWith("on:")){let G=J.slice(3);if(Y)f.on(G,Y);if(z)f.off(G,z);return}if(vj(f)){if(J==="href"){f.link={url:Y};return}if(J==="style"){f.attributes|=XN(Y),f.fg=Y.fg?$U(Y.fg):f.fg,f.bg=Y.bg?$U(Y.bg):f.bg;return}return}switch(J){case"id":sf("Id mapped",f.id,"=",Y),f[J]=Y;break;case"focused":if(!(f instanceof ZN))return;if(Y)f.focus();else f.blur();break;case"onChange":let G=void 0;if(f instanceof rU)G=hj.SELECTION_CHANGED;else if(f instanceof pU)G=Pj.SELECTION_CHANGED;else if(f instanceof wj)G=kX.CHANGE;if(!G)break;if(Y)f.on(G,Y);if(z)f.off(G,z);break;case"onInput":if(f instanceof wj){if(Y)f.on(kX.INPUT,Y);if(z)f.off(kX.INPUT,z)}break;case"onSubmit":if(f instanceof wj){if(Y)f.on(kX.ENTER,Y);if(z)f.off(kX.ENTER,z)}else f[J]=Y;break;case"onSelect":if(f instanceof rU){if(Y)f.on(hj.ITEM_SELECTED,Y);if(z)f.off(hj.ITEM_SELECTED,z)}else if(f instanceof pU){if(Y)f.on(Pj.ITEM_SELECTED,Y);if(z)f.off(Pj.ITEM_SELECTED,z)}break;case"style":for(let X in Y){let q=Y[X];if(z!==void 0&&q===z[X])continue;f[X]=q}break;case"text":case"content":{let X=typeof Y==="string"?Y:Array.isArray(Y)?Y.join(""):`${Y}`;f[J]=Cz(X);break}default:f[J]=Y}},isTextNode(f){return f instanceof gG},insertNode:VN,removeNode:KN,getParentNode:_U,getFirstChild(f){sf("Getting first child of node:",rf(f));let J=mj(f)[0];if(!J){sf("No first child found for node:",rf(f));return}return sf("First child found:",rf(J),"for node:",rf(f)),J},getNextSibling(f){sf("Getting next sibling of node:",rf(f));let J=_U(f);if(!J){sf("No parent found for node:",rf(f));return}let Y=mj(J),z=Y.indexOf(f);if(z===-1||z===Y.length-1){sf("No next sibling found for node:",rf(f));return}let G=Y[z+1];if(!G){sf("Next sibling is null for node:",rf(f));return}return sf("Next sibling found:",rf(G),"for node:",rf(f)),G}}));lj=class lj extends MN{constructor(f){super({id:f})}add(f,J){throw Error("Can't add children on an Slot renderable")}getChildren(){return[]}remove(f){}insertBefore(f,J){throw Error("Can't add children on an Slot renderable")}getRenderable(f){return}getChildrenCount(){return 0}requestRender(){}findDescendantById(f){return}};f6=class f6 extends ON{slotParent;destroyed=!1;constructor(f,J){super({id:f});this._visible=!1,this.slotParent=J}destroy(){if(this.destroyed)return;this.destroyed=!0,this.slotParent?.destroy(),super.destroy()}};J6=class J6 extends lj{yogaNode;slotParent;destroyed=!1;constructor(f,J){super(f);this._visible=!1,this.slotParent=J,this.yogaNode=oU.default.Node.create(),this.yogaNode.setDisplay(oU.Display.None)}getLayoutNode(){return this.yogaNode}updateFromLayout(){}updateLayout(){}onRemove(){}destroy(){if(this.destroyed)return;this.destroyed=!0,super.destroy(),this.slotParent?.destroy()}};NX=class NX extends lj{layoutNode;textNode;destroyed=!1;constructor(f){super(f);this._visible=!1}getSlotChild(f){if(FN(f)||f instanceof AN){if(!this.textNode)this.textNode=new f6(`slot-text-${this.id}`,this);return this.textNode}if(!this.layoutNode)this.layoutNode=new J6(`slot-layout-${this.id}`,this);return this.layoutNode}destroy(){if(this.destroyed)return;if(this.destroyed=!0,this.layoutNode)this.layoutNode.destroy();if(this.textNode)this.textNode.destroy()}};yX=class yX extends YN{_ctx;constructor(f,J){super(J);this._ctx=f}};BQ=class BQ extends yX{constructor(f,J){super(null,f);if(J==="b"||J==="strong")this.attributes=(this.attributes||0)|xj.BOLD;else if(J==="i"||J==="em")this.attributes=(this.attributes||0)|xj.ITALIC;else if(J==="u")this.attributes=(this.attributes||0)|xj.UNDERLINE}};cj=class cj extends BQ{constructor(f){super(f,"b")}};nj=class nj extends BQ{constructor(f){super(f,"i")}};Y6=class Y6 extends BQ{constructor(f){super(f,"u")}};z6=class z6 extends yX{constructor(f,J){super(null,J);this.add()}add(){return super.add(`
222
- `)}};G6=class G6 extends yX{constructor(f,J){let Y={...J,link:{url:J.href}};super(null,Y)}};gN={box:$k,text:zN,input:_k,select:ek,textarea:JN,ascii_font:ak,tab_select:fN,scrollbox:tk,code:rk,diff:pk,line_number:ok,markdown:sk,span:yX,strong:cj,b:cj,em:nj,i:nj,u:Y6,br:z6,a:G6},X6={...gN};RN({time_to_first_draw:kN})});function yN(f){let J=f?.changes;if(!J||typeof J!=="object"||Array.isArray(J))return null;let Y=new Map;for(let[z,G]of Object.entries(J)){let X=G;if(typeof X?.added!=="number"||typeof X.deleted!=="number")return null;Y.set(z,{added:X.added,deleted:X.deleted})}return Y}function bN(f,J){if(f.size!==J.size)return!1;for(let[Y,z]of f){let G=J.get(Y);if(!G||!IJ(z,G))return!1}return!0}class W1{client;tasksAcc;setTasks;activeTaskAcc;setActiveTaskSig;updateAcc;setUpdateSig;daemonVersionAcc;setDaemonVersionSig;engineStateAcc;setEngineStateSig;taskJobsAcc;setTaskJobsSig;worktreeChangesAcc;setWorktreeChangesSig;uiPrefsAcc;setUiPrefsSig;keybindingsRevAcc;setKeybindingsRevSig;connectionStateAcc;setConnectionState;ensureReachable;role;channels;subscribesTasks;reconnecting=!1;constructor(f,J={}){this.client=f;let[Y,z]=r([]),[G,X]=r(null),[q,Q]=r(null),[H,B]=r(null),[V,j]=r(new Map),[U,L]=r(new Map),[O,M]=r(null),[R,S]=r(null),[a,N]=r(null),[g,C]=r("online");this.tasksAcc=Y,this.setTasks=(y)=>z(()=>y),this.activeTaskAcc=G,this.setActiveTaskSig=(y)=>X(()=>y),this.updateAcc=q,this.setUpdateSig=(y)=>Q(()=>y),this.daemonVersionAcc=H,this.setDaemonVersionSig=(y)=>B(()=>y),this.engineStateAcc=V,this.setEngineStateSig=(y)=>j(()=>y),this.taskJobsAcc=U,this.setTaskJobsSig=(y)=>L(()=>y),this.worktreeChangesAcc=O,this.setWorktreeChangesSig=(y)=>M(()=>y),this.uiPrefsAcc=R,this.setUiPrefsSig=(y)=>S(()=>y),this.keybindingsRevAcc=a,this.setKeybindingsRevSig=(y)=>N(()=>y),this.connectionStateAcc=g,this.setConnectionState=(y)=>C(()=>y),this.ensureReachable=J.ensureReachable??DG,this.role=J.role??"pane",this.channels=J.channels,this.subscribesTasks=!J.channels||J.channels.includes("task.snapshot"),this.client.on("*",(y)=>this.handleEvent(y.name,y.payload)),this.client.onLifecycle("close",()=>{if(this.setConnectionState("disconnected"),this.role==="pane")iJ("orch","daemon socket closed \u2014 starting non-spawning reconnect loop"),this.reconnectLoop()})}async reconnectLoop(){if(this.reconnecting)return;this.reconnecting=!0;let f=500,J=0;while(!this.client.isDisposed){if(await new Promise((Y)=>setTimeout(Y,f)),this.client.isDisposed)break;J++;try{await this.init(),iJ("orch",`reconnected and re-subscribed after ${J} attempt(s) \u2014 task list re-synced`),this.reconnecting=!1;return}catch(Y){if(J===1||J%10===0)WY("orch-reconnect",Y);f=Math.min(f*2,3000)}}this.reconnecting=!1}async init(){let f=await this.client.request("hello",{protocolVersion:n1,minProtocolVersion:jY}),J=typeof f.protocolVersion==="number"?f.protocolVersion:n1,Y=typeof f.minProtocolVersion==="number"?f.minProtocolVersion:J;if(!gZ({localVersion:n1,localMin:jY,remoteVersion:J,remoteMin:Y}))throw Error(`kobe daemon is protocol v${J} (min v${Y}); this client is v${n1} (min v${jY}). Restart the daemon (\`kobe daemon restart\`) or upgrade kobe.`);if(this.setDaemonVersionSig(typeof f.kobeVersion==="string"?f.kobeVersion:null),f.tasks&&this.subscribesTasks)this.setTasks(f.tasks.map(bX));if(await this.client.subscribe({role:this.role,channels:this.channels}),f.capabilities?.includes("worktree.changes")){if(this.worktreeChangesAcc()===null)this.setWorktreeChangesSig(new Map)}else this.setWorktreeChangesSig(null);this.setConnectionState("online"),iJ("orch",`subscribed as ${this.role} (${this.tasksAcc().length} tasks)`)}connectionStateSignal(){return this.connectionStateAcc}async manualReconnect(){this.client.forceDisconnect(),await this.ensureReachable(),await this.init()}dispose(){this.client.close()}tasksSignal(){return this.tasksAcc}activeTaskSignal(){return this.activeTaskAcc}updateSignal(){return this.updateAcc}daemonVersionSignal(){return this.daemonVersionAcc}daemonStaleSignal(){return()=>AW(this.daemonVersionAcc()??void 0,s0)}engineStateSignal(){return this.engineStateAcc}taskJobsSignal(){return this.taskJobsAcc}worktreeChangesSignal(){return this.worktreeChangesAcc}uiPrefsSignal(){return this.uiPrefsAcc}keybindingsRevSignal(){return this.keybindingsRevAcc}listTasks(){return this.tasksAcc()}getTask(f){return this.tasksAcc().find((J)=>J.id===f)}subscribeTasks(f){try{f(this.listTasks())}catch(Y){console.error("[kobe RemoteOrchestrator] task listener threw on subscribe:",Y)}let J=!0;return _Y((Y)=>{return zf(()=>{let z=this.tasksAcc();if(J){J=!1;return}try{f(z)}catch(G){console.error("[kobe RemoteOrchestrator] task listener threw:",G)}}),Y})}async createTask(f){let{modelEffort:J,...Y}=f,z=await this.client.request("task.create",{...Y,effort:J});return bX(z.task)}async ensureMainTask(f){let J=await this.client.request("task.ensureMain",{repo:f});return bX(J.task)}async ensureWorktree(f){return(await this.client.request("task.ensureWorktree",{taskId:String(f)})).worktreePath}async setTitle(f,J){await this.client.request("task.rename",{taskId:String(f),title:J})}async setBranch(f,J){await this.client.request("task.setBranch",{taskId:String(f),branch:J})}async setVendor(f,J){await this.client.request("task.setVendor",{taskId:String(f),vendor:J})}async setPinned(f,J){await this.client.request("task.pin",{taskId:String(f),pinned:J})}async moveTask(f,J){await this.client.request("task.move",{taskId:String(f),direction:J<0?"up":"down"})}async setArchived(f,J){await this.client.request("task.archive",{taskId:String(f),archived:J})}async setStatus(f,J){await this.client.request("task.status",{taskId:String(f),status:J})}async deleteTask(f,J){await this.client.request("task.delete",{taskId:String(f),force:J?.force})}async discoverAdoptableWorktrees(f){return(await this.client.request("worktree.discoverAdoptable",{repo:f})).worktrees}async adoptWorktree(f){let J=await this.client.request("worktree.adopt",f);return bX(J.task)}async setActiveTask(f){await this.client.request("task.setActive",{taskId:f===null?null:String(f)})}handleEvent(f,J){if(f==="task.snapshot"){let Y=J?.tasks;if(Array.isArray(Y))this.setTasks(Y.map(bX)),this.pruneEngineState(Y),this.pruneTaskJobs(Y);return}if(f==="active-task"){let Y=J?.taskId;this.setActiveTaskSig(typeof Y==="string"?Y:null);return}if(f==="update"){let Y=J?.info;this.setUpdateSig(Y??null);return}if(f==="engine-state"){let Y=J;if(typeof Y?.taskId!=="string"||typeof Y.state!=="string")return;let z=new Map(this.engineStateAcc());if(Y.state==="idle")z.delete(Y.taskId);else z.set(Y.taskId,{state:Y.state,detail:Y.detail,at:typeof Y.at==="number"?Y.at:0});this.setEngineStateSig(z);return}if(f==="task.jobs"){let Y=J;if(typeof Y?.taskId!=="string"||Y.kind!=="ensureWorktree")return;let z=this.taskJobsAcc();if(Y.phase==="running"){let G=new Map(z);G.set(Y.taskId,{kind:Y.kind}),this.setTaskJobsSig(G);return}if((Y.phase==="done"||Y.phase==="error")&&z.has(Y.taskId)){let G=new Map(z);G.delete(Y.taskId),this.setTaskJobsSig(G)}return}if(f==="worktree.changes"){let Y=yN(J);if(!Y)return;let z=this.worktreeChangesAcc();if(z&&bN(z,Y))return;this.setWorktreeChangesSig(Y);return}if(f==="ui-prefs"){let Y=J;if(typeof Y?.theme!=="string")return;this.setUiPrefsSig({theme:Y.theme,transparentBackground:Y.transparentBackground===!0,focusAccent:typeof Y.focusAccent==="string"?Y.focusAccent:null,locale:typeof Y.locale==="string"?Y.locale:"",sortMode:Y.sortMode==="recent"?"recent":"default",keysCollapsed:Y.keysCollapsed===!0,projectFilter:typeof Y.projectFilter==="string"&&Y.projectFilter.length>0?Y.projectFilter:null});return}if(f==="keybindings"){let Y=J;if(typeof Y?.rev!=="number")return;this.setKeybindingsRevSig(Y.rev);return}}pruneEngineState(f){let J=this.engineStateAcc();if(J.size===0)return;let Y=new Set(f.map((G)=>G.id)),z=null;for(let G of J.keys()){if(Y.has(G))continue;if(!z)z=new Map(J);z.delete(G)}if(z)this.setEngineStateSig(z)}pruneTaskJobs(f){let J=this.taskJobsAcc();if(J.size===0)return;let Y=new Set(f.map((G)=>G.id)),z=null;for(let G of J.keys()){if(Y.has(G))continue;if(!z)z=new Map(J);z.delete(G)}if(z)this.setTaskJobsSig(z)}}function bX(f){return{id:PG(f.id),title:f.title,repo:f.repo,branch:f.branch,worktreePath:f.worktreePath,kind:f.kind,status:f.status,archived:f.archived,pinned:f.pinned,vendor:f.vendor,prStatus:f.prStatus,modelEffort:f.modelEffort,createdAt:f.createdAt,updatedAt:f.updatedAt}}var PY=k(()=>{eY();y1();sY();Wf();VG();S1();D1()});function H6(f){let J=f[JJ];if(!J){if(Object.defineProperty(f,JJ,{value:J=new Proxy(f,TN)}),!Array.isArray(f)){let Y=Object.keys(f),z=Object.getOwnPropertyDescriptors(f),G=Object.getPrototypeOf(f),X=G!==null&&f!==null&&typeof f==="object"&&!Array.isArray(f)&&G!==Object.prototype;if(X){let q=Object.getOwnPropertyDescriptors(G);Y.push(...Object.keys(q)),Object.assign(z,q)}for(let q=0,Q=Y.length;q<Q;q++){let H=Y[q];if(X&&H==="constructor")continue;if(z[H].get)Object.defineProperty(f,H,{configurable:!0,enumerable:z[H].enumerable,get:z[H].get.bind(J)})}}}return J}function jQ(f){let J;return f!=null&&typeof f==="object"&&(f[JJ]||!(J=Object.getPrototypeOf(f))||J===Object.prototype||Array.isArray(f))}function IX(f,J=new Set){let Y,z,G,X;if(Y=f!=null&&f[aj])return Y;if(!jQ(f)||J.has(f))return f;if(Array.isArray(f)){if(Object.isFrozen(f))f=f.slice(0);else J.add(f);for(let q=0,Q=f.length;q<Q;q++)if(G=f[q],(z=IX(G,J))!==G)f[q]=z}else{if(Object.isFrozen(f))f=Object.assign({},f);else J.add(f);let q=Object.keys(f),Q=Object.getOwnPropertyDescriptors(f);for(let H=0,B=q.length;H<B;H++){if(X=q[H],Q[X].get)continue;if(G=f[X],(z=IX(G,J))!==G)f[X]=z}}return f}function WQ(f,J){let Y=f[J];if(!Y)Object.defineProperty(f,J,{value:Y=Object.create(null)});return Y}function TX(f,J,Y){if(f[J])return f[J];let[z,G]=r(Y,{equals:!1,internal:!0});return z.$=G,f[J]=z}function SN(f,J){let Y=Reflect.getOwnPropertyDescriptor(f,J);if(!Y||Y.get||!Y.configurable||J===JJ||J===RG)return Y;return delete Y.value,delete Y.writable,Y.get=()=>f[JJ][J],Y}function B6(f){DZ()&&TX(WQ(f,RG),Q6)()}function IN(f){return B6(f),Reflect.ownKeys(f)}function VQ(f,J,Y,z=!1){if(J==="__proto__"){console.warn('Refusing to set "__proto__" on a store.');return}if(!z&&f[J]===Y)return;let G=f[J],X=f.length;if(q6.onStoreNodeUpdate&&q6.onStoreNodeUpdate(f,J,Y,G),Y===void 0){if(delete f[J],f[YY]&&f[YY][J]&&G!==void 0)f[YY][J].$()}else if(f[J]=Y,f[YY]&&f[YY][J]&&G===void 0)f[YY][J].$();let q=WQ(f,RG),Q;if(Q=TX(q,J,G))Q.$(()=>Y);if(Array.isArray(f)&&f.length!==X){for(let H=f.length;H<X;H++)(Q=q[H])&&Q.$();(Q=TX(q,"length",X))&&Q.$(f.length)}(Q=q[Q6])&&Q.$()}function j6(f,J){let Y=Object.keys(J);for(let z=0;z<Y.length;z+=1){let G=Y[z];if(W6(G))continue;VQ(f,G,J[G])}}function W6(f){return f==="__proto__"||f==="constructor"||f==="prototype"}function uN(f,J){if(typeof J==="function")J=J(f);if(J=IX(J),Array.isArray(J)){if(f===J)return;let Y=0,z=J.length;for(;Y<z;Y++){let G=J[Y];if(f[Y]!==G)VQ(f,Y,G)}VQ(f,"length",z)}else j6(f,J)}function SX(f,J,Y=[]){let z,G=f;if(J.length>1){z=J.shift();let q=typeof z,Q=Array.isArray(f);if(q==="string"&&(z==="__proto__"||J.length>1&&W6(z))){console.warn(`Refusing to traverse unsafe key "${z}" on a store.`);return}if(Array.isArray(z)){for(let H=0;H<z.length;H++)SX(f,[z[H]].concat(J),Y);return}else if(Q&&q==="function"){for(let H=0;H<f.length;H++)if(z(f[H],H))SX(f,[H].concat(J),Y);return}else if(Q&&q==="object"){let{from:H=0,to:B=f.length-1,by:V=1}=z;for(let j=H;j<=B;j+=V)SX(f,[j].concat(J),Y);return}else if(J.length>1){SX(f[z],J,[z].concat(Y));return}G=f[z],Y=[z].concat(Y)}let X=J[0];if(typeof X==="function"){if(X=X(G,Y),X===G)return}if(z===void 0&&X==null)return;if(X=IX(X),z===void 0||jQ(G)&&jQ(X)&&!Array.isArray(X))j6(G,X);else VQ(f,z,X)}function uJ(...[f,J]){let Y=IX(f||{}),z=Array.isArray(Y);if(typeof Y!=="object"&&typeof Y!=="function")throw Error(`Unexpected type ${typeof Y} received when initializing 'createStore'. Expected an object.`);let G=H6(Y);jW.registerGraph({value:Y,name:J&&J.name});function X(...q){UZ(()=>{z&&q.length===1?uN(Y,q[0]):SX(Y,q)})}return[G,X]}var aj,RG,YY,Q6,q6,TN,Kc;var CG=k(()=>{Wf();aj=Symbol("store-raw"),RG=Symbol("store-node"),YY=Symbol("store-has"),Q6=Symbol("store-self"),q6={onStoreNodeUpdate:null};TN={get(f,J,Y){if(J===aj)return f;if(J===JJ)return Y;if(J===WZ)return B6(f),Y;let z=WQ(f,RG),G=z[J],X=G?G():f[J];if(J===RG||J===YY||J==="__proto__")return X;if(!G){let q=Object.getOwnPropertyDescriptor(f,J);if(DZ()&&(typeof X!=="function"||f.hasOwnProperty(J))&&!(q&&q.get))X=TX(z,J,X)()}return jQ(X)?H6(X):X},has(f,J){if(J===aj||J===JJ||J===WZ||J===RG||J===YY||J==="__proto__")return!0;return DZ()&&TX(WQ(f,YY),J)(),J in f},set(){return console.warn("Cannot mutate a Store directly"),!0},deleteProperty(){return console.warn("Cannot mutate a Store directly"),!0},ownKeys:IN,getOwnPropertyDescriptor:SN};Kc=Symbol("store-root")});function KQ(f){let J=gJ();return{provider:(Y)=>{let z=f.init(Y);return b(X0,{get when(){return z.ready===void 0||z.ready===!0},get children(){return b(J.Provider,{value:z,get children(){return Y.children}})}})},use(){let Y=u1(J);if(!Y)throw Error(`${f.name} context must be used within a context provider`);return Y}}}var $j=k(()=>{h();h();Wf()});import{RGBA as kz}from"@opentui/core";function xN(){return Object.keys(z1.themes)}function uX(f){return Boolean(z1.themes[f])}function pj(f,J){if(!f)return!1;if(!J||typeof J!=="object"||!J.theme)return!1;return Nz("themes",{...z1.themes,[f]:J}),!0}function rj(f,J="dark"){let Y=f.defs??{};function z(H,B=[]){if(typeof H==="string"){if(H==="transparent"||H==="none")return kz.fromInts(0,0,0,0);if(H.startsWith("#"))return kz.fromHex(H);if(B.includes(H))return kz.fromInts(0,0,0);let V=Y[H]??f.theme[H];if(V===void 0)return kz.fromInts(0,0,0);return z(V,[...B,H])}return z(H[J],B)}let G={};for(let[H,B]of Object.entries(f.theme))G[H]=z(B);let X=G.text??kz.fromHex("#ffffff"),q=G.background??kz.fromHex("#000000");return{...{primary:G.primary??X,secondary:G.secondary??X,accent:G.accent??G.primary??X,error:G.error??X,warning:G.warning??X,success:G.success??X,info:G.info??X,text:X,textMuted:G.textMuted??X,background:q,backgroundPanel:G.backgroundPanel??q,backgroundElement:G.backgroundElement??q,backgroundMenu:G.backgroundMenu??G.backgroundElement??q,backgroundDialog:G.backgroundDialog??G.backgroundPanel??q,border:G.border??X,borderActive:G.borderActive??G.border??X,borderSubtle:G.borderSubtle??G.border??X,diffAdded:G.diffAdded??G.success??X,diffRemoved:G.diffRemoved??G.error??X,diffContext:G.diffContext??G.textMuted??X,diffHunkHeader:G.diffHunkHeader??G.textMuted??X,diffAddedBg:G.diffAddedBg??q,diffRemovedBg:G.diffRemovedBg??q,selectedListItemText:G.selectedListItemText??q},...G}}var EN,yz,z1,Nz,i0,V6;var xf=k(()=>{h();Wf();CG();$j();Hq();Bq();jq();Wq();Vq();Kq();Uq();EN={claude:sz,conductor:tz,nord:fG,opencode:JG,dracula:ez,tokyonight:zG,"osaka-jade":YG},yz=["primary","success","info"],[z1,Nz]=uJ({themes:{...EN},active:"claude",mode:"dark",transparentBackground:!1,focusAccent:"primary"});({use:i0,provider:V6}=KQ({name:"Theme",init:(f)=>{if(f.mode)Nz("mode",f.mode);if(f.theme&&uX(f.theme))Nz("active",f.theme);let J=Y1(),Y=U0(()=>{let G=z1.themes[z1.active];if(G)return rj(G,z1.mode);let X=z1.themes.claude??z1.themes.opencode??Object.values(z1.themes)[0];if(!X)return rj({theme:{background:"#000000",text:"#ffffff"}},z1.mode);return rj(X,z1.mode)}),z=U0(()=>{let G=Y(),X=G[z1.focusAccent]??G.primary,q={...G,focusAccent:X};if(!z1.transparentBackground)return q;let Q=kz.fromInts(0,0,0,0);return{...q,background:Q,backgroundPanel:Q}});return zf(()=>{J?.setBackgroundColor(z().background)}),{theme:new Proxy({},{get(G,X){let q=z();return q[X]??q.text}}),get selected(){return z1.active},get transparentBackground(){return z1.transparentBackground},get focusAccent(){return z1.focusAccent},mode(){return z1.mode},set(G){if(!uX(G))return!1;return Nz("active",G),!0},setMode(G){Nz("mode",G)},setTransparentBackground(G){Nz("transparentBackground",G)},setFocusAccent(G){Nz("focusAccent",G)},all(){return xN()},has(G){return uX(G)}}}}))});var K6,U6;var D6=k(()=>{K6={cancel:"Cancel",confirm:"Confirm",rename:{defaultTitle:"Rename task",defaultFieldLabel:"title",footerHint:"enter {submitLabel} \xB7 esc cancel",defaultSubmitLabel:"rename"}},U6={cancel:"\u53D6\u6D88",confirm:"\u786E\u8BA4",rename:{defaultTitle:"\u91CD\u547D\u540D\u4EFB\u52A1",defaultFieldLabel:"\u540D\u79F0",footerHint:"enter {submitLabel} \xB7 esc \u53D6\u6D88",defaultSubmitLabel:"\u91CD\u547D\u540D"}}});var L6,M6;var F6=k(()=>{L6={tabs:{all:"All",changes:"Changes"},actions:{zen:"Zen",createPR:"Create PR"},legend:{changes:"M modified \xB7 A added \xB7 D deleted \xB7 ? untracked"},empty:{noTask:"(no task \u2014 press n to create)",noFiles:"(empty worktree)",noChanges:"(no changes \u2014 clean worktree)"},error:{retryHint:"press r to retry",notGitRepo:"not a git repository",pathMissing:"worktree path is missing",permissionDenied:"permission denied",gitNotInstalled:"git is not installed",gitFailed:"git command failed"},footer:{openHint:"\u21B5 open"}},M6={tabs:{all:"\u5168\u90E8",changes:"\u6539\u52A8"},actions:{zen:"\u4E13\u6CE8\u6A21\u5F0F",createPR:"\u521B\u5EFA PR"},legend:{changes:"M \u5DF2\u4FEE\u6539 \xB7 A \u5DF2\u6DFB\u52A0 \xB7 D \u5DF2\u5220\u9664 \xB7 ? \u672A\u8DDF\u8E2A"},empty:{noTask:"\uFF08\u6682\u65E0\u4EFB\u52A1 \u2014 \u6309 n \u521B\u5EFA\uFF09",noFiles:"\uFF08worktree \u4E3A\u7A7A\uFF09",noChanges:"\uFF08\u65E0\u6539\u52A8 \u2014 worktree \u5E72\u51C0\uFF09"},error:{retryHint:"\u6309 r \u91CD\u8BD5",notGitRepo:"\u4E0D\u662F git \u4ED3\u5E93",pathMissing:"worktree \u8DEF\u5F84\u4E0D\u5B58\u5728",permissionDenied:"\u6743\u9650\u4E0D\u8DB3",gitNotInstalled:"\u672A\u5B89\u88C5 git",gitFailed:"git \u547D\u4EE4\u5931\u8D25"},footer:{openHint:"\u21B5 \u6253\u5F00"}}});var O6,A6;var g6=k(()=>{O6={title:"kobe \u2014 keybindings",esc:"esc"},A6={title:"kobe \u2014 \u5FEB\u6377\u952E",esc:"esc"}});var R6,C6;var k6=k(()=>{R6={category:{Global:"Global",Sidebar:"Sidebar",Workspace:"Workspace",Navigation:"Navigation","Tasks pane":"Tasks pane","Workspace (tmux)":"Workspace (tmux)",Files:"Files",Terminal:"Terminal",Dialog:"Dialog"},desc:{"help.open":"Show keybindings help","task.new":"New task","task.openEditor":"Open active task worktree in editor","settings.open":"Open settings","settings.open.sidebar":"Open settings","app.quit":"Quit (with confirm)","focus.sidebar":"Back to sidebar (tasks)","focus.numeric":"Jump to pane (h=sidebar, j=workspace, k=files, l=terminal)","chat.interrupt":"Interrupt current turn (esc while streaming)","sidebar.nav":"Move cursor up/down","sidebar.select":"Open the selected task","sidebar.goto":"Top / bottom of list (gg or shift-G)","sidebar.rename":"Rename task","sidebar.archive":"Toggle archive","sidebar.localMerge":"Local merge task into parent repo (Shift+M)","sidebar.pin":"Pin / unpin task at top (Shift+P)","sidebar.view":"Switch view (Working session \u2194 Archives)","sidebar.sort":"Switch task sort (default \u2194 recent)","sidebar.projectFilter":"Cycle task project filter","sidebar.delete":"Delete task (with confirm)","sidebar.search.enter":"Search tasks (fuzzy filter)","sidebar.search.nav":"Move highlight in search results","sidebar.search.submit":"Select search match and exit search","sidebar.search.cancel":"Cancel search (restore prior selection)","tasks.openWorktree":"Open selected task's worktree in your editor","tasks.renameBranch":"Rename the selected task's git branch","tasks.cycleEngine":"Cycle engine vendor (claude \u2194 codex \u2194 \u2026) \u2014 applies on reopen","tasks.update":"Open the update page (when a new version is available)","tasks.focusEngine":"Focus the engine pane of the current window","tasks.toggleKeys":"Collapse / expand the keys legend","tmux.quickTask":"Quick new task (tmux prefix, then f)","tmux.engineTab":"Open the engine in a new tab (tmux prefix, then t)","tmux.layout.workspaceSplit":"Add a temporary workspace split (tmux prefix, then s)","tmux.layout.workspaceClose":"Close the focused temporary workspace split (tmux prefix, then x)","tmux.layout.workspaceReset":"Close all temporary workspace splits (tmux prefix, then r)","tmux.layout.tasksToggle":"Hide / restore the Tasks pane (tmux prefix, then a)","tmux.layout.opsToggle":"Toggle the file/Ops pane (tmux prefix, then o)","tmux.layout.terminalToggle":"Hide / restore the terminal pane (tmux prefix, then z)","tmux.layout.zenToggle":"Zen mode \u2014 collapse to the engine pane (tmux prefix, then space)","chat.send":"Send message (composer)","chat.newline":"Newline in composer","chat.cycle-mode":"Cycle permission mode (composer)","chat.steer":"Steer (interrupt + send) \u2014 mid-stream only","chat.tab.new":"New chat tab","chat.fork.new":"Quick-fork: create child task seeded with current repo/branch/model","chat.session.resume":"Resume a prior session in this task's worktree","chat.tab.close":"Close chat tab","chat.tab.rename":"Rename active chat tab","chat.tab.cycle-next":"Next chat tab","chat.tab.cycle-prev":"Previous chat tab","chat.question.nav":"Move highlight in question picker","chat.question.toggle":"Toggle highlighted option in question picker","chat.question.submit":"Advance / submit question picker","chat.question.pick-number":"Pick option by number in question picker","files.nav":"Move cursor up/down","files.hierarchy":"Collapse / expand tree level","files.open":"Open file in nvim (diff vs HEAD when changed)","files.tab":"Switch tab (cycle All / Changes)","files.refresh":"Refresh","files.openExternal":"Open file in system default app (audio / video / pdf preview)","files.mention":"Inject @<path> mention into the engine pane","files.createPR":"Create PR from the current task","terminal.scroll-up":"Scroll scrollback up","terminal.scroll-down":"Scroll scrollback down","terminal.reset":"Reset terminal \u2014 kill the current shell and respawn","dialog.cancel":"Close the top dialog (esc)","dialog.newtask.tab.cycle":"Switch New Task tab (Existing / New Repo)"}},C6={category:{Global:"\u5168\u5C40",Sidebar:"\u4FA7\u8FB9\u680F",Workspace:"\u5DE5\u4F5C\u533A",Navigation:"\u5BFC\u822A","Tasks pane":"\u4EFB\u52A1\u9762\u677F","Workspace (tmux)":"\u5DE5\u4F5C\u533A\uFF08tmux\uFF09",Files:"\u6587\u4EF6",Terminal:"\u7EC8\u7AEF",Dialog:"\u5BF9\u8BDD\u6846"},desc:{"help.open":"\u663E\u793A\u5FEB\u6377\u952E\u5E2E\u52A9","task.new":"\u65B0\u5EFA\u4EFB\u52A1","task.openEditor":"\u5728\u7F16\u8F91\u5668\u4E2D\u6253\u5F00\u5F53\u524D\u4EFB\u52A1\u7684 worktree","settings.open":"\u6253\u5F00\u8BBE\u7F6E","settings.open.sidebar":"\u6253\u5F00\u8BBE\u7F6E","app.quit":"\u9000\u51FA\uFF08\u9700\u786E\u8BA4\uFF09","focus.sidebar":"\u8FD4\u56DE\u4FA7\u8FB9\u680F\uFF08\u4EFB\u52A1\u5217\u8868\uFF09","focus.numeric":"\u8DF3\u8F6C\u5230\u9762\u677F\uFF08h=\u4FA7\u8FB9\u680F\uFF0Cj=\u5DE5\u4F5C\u533A\uFF0Ck=\u6587\u4EF6\uFF0Cl=\u7EC8\u7AEF\uFF09","chat.interrupt":"\u4E2D\u65AD\u5F53\u524D\u8F6E\u6B21\uFF08\u6D41\u5F0F\u8F93\u51FA\u4E2D\u6309 esc\uFF09","sidebar.nav":"\u4E0A\u4E0B\u79FB\u52A8\u5149\u6807","sidebar.select":"\u6253\u5F00\u9009\u4E2D\u7684\u4EFB\u52A1","sidebar.goto":"\u8DF3\u5230\u5217\u8868\u9876\u90E8 / \u5E95\u90E8\uFF08gg \u6216 shift-G\uFF09","sidebar.rename":"\u91CD\u547D\u540D\u4EFB\u52A1","sidebar.archive":"\u5207\u6362\u5F52\u6863\u72B6\u6001","sidebar.localMerge":"\u5C06\u4EFB\u52A1\u672C\u5730\u5408\u5E76\u5230\u7236\u4ED3\u5E93\uFF08Shift+M\uFF09","sidebar.pin":"\u7F6E\u9876 / \u53D6\u6D88\u7F6E\u9876\u4EFB\u52A1\uFF08Shift+P\uFF09","sidebar.view":"\u5207\u6362\u89C6\u56FE\uFF08\u5DE5\u4F5C\u4F1A\u8BDD \u2194 \u5F52\u6863\uFF09","sidebar.sort":"\u5207\u6362\u4EFB\u52A1\u6392\u5E8F\u65B9\u5F0F\uFF08\u9ED8\u8BA4 \u2194 \u6700\u8FD1\uFF09","sidebar.projectFilter":"\u5FAA\u73AF\u5207\u6362\u4EFB\u52A1\u9879\u76EE\u7B5B\u9009","sidebar.delete":"\u5220\u9664\u4EFB\u52A1\uFF08\u9700\u786E\u8BA4\uFF09","sidebar.search.enter":"\u641C\u7D22\u4EFB\u52A1\uFF08\u6A21\u7CCA\u8FC7\u6EE4\uFF09","sidebar.search.nav":"\u5728\u641C\u7D22\u7ED3\u679C\u4E2D\u79FB\u52A8\u9AD8\u4EAE","sidebar.search.submit":"\u9009\u4E2D\u641C\u7D22\u5339\u914D\u9879\u5E76\u9000\u51FA\u641C\u7D22","sidebar.search.cancel":"\u53D6\u6D88\u641C\u7D22\uFF08\u6062\u590D\u4E4B\u524D\u7684\u9009\u4E2D\u9879\uFF09","tasks.openWorktree":"\u5728\u7F16\u8F91\u5668\u4E2D\u6253\u5F00\u9009\u4E2D\u4EFB\u52A1\u7684 worktree","tasks.renameBranch":"\u91CD\u547D\u540D\u9009\u4E2D\u4EFB\u52A1\u7684 git \u5206\u652F","tasks.cycleEngine":"\u5FAA\u73AF\u5207\u6362\u5F15\u64CE\u5382\u5546\uFF08claude \u2194 codex \u2194 \u2026\uFF09\u2014\u2014\u91CD\u65B0\u6253\u5F00\u540E\u751F\u6548","tasks.update":"\u6253\u5F00\u66F4\u65B0\u9875\u9762\uFF08\u6709\u65B0\u7248\u672C\u65F6\uFF09","tasks.focusEngine":"\u805A\u7126\u5F53\u524D\u7A97\u53E3\u7684\u5F15\u64CE\u9762\u677F","tasks.toggleKeys":"\u6298\u53E0 / \u5C55\u5F00\u5FEB\u6377\u952E\u8BF4\u660E","tmux.quickTask":"\u5FEB\u901F\u65B0\u5EFA\u4EFB\u52A1\uFF08tmux \u524D\u7F00\uFF0C\u7136\u540E\u6309 f\uFF09","tmux.engineTab":"\u5728\u65B0\u6807\u7B7E\u9875\u4E2D\u6253\u5F00\u5F15\u64CE\uFF08tmux \u524D\u7F00\uFF0C\u7136\u540E\u6309 t\uFF09","tmux.layout.workspaceSplit":"\u6DFB\u52A0\u4E34\u65F6\u5DE5\u4F5C\u533A\u5206\u5C4F\uFF08tmux \u524D\u7F00\uFF0C\u7136\u540E\u6309 s\uFF09","tmux.layout.workspaceClose":"\u5173\u95ED\u5F53\u524D\u805A\u7126\u7684\u4E34\u65F6\u5DE5\u4F5C\u533A\u5206\u5C4F\uFF08tmux \u524D\u7F00\uFF0C\u7136\u540E\u6309 x\uFF09","tmux.layout.workspaceReset":"\u5173\u95ED\u6240\u6709\u4E34\u65F6\u5DE5\u4F5C\u533A\u5206\u5C4F\uFF08tmux \u524D\u7F00\uFF0C\u7136\u540E\u6309 r\uFF09","tmux.layout.tasksToggle":"\u9690\u85CF / \u6062\u590D\u4EFB\u52A1\u9762\u677F\uFF08tmux \u524D\u7F00\uFF0C\u7136\u540E\u6309 a\uFF09","tmux.layout.opsToggle":"\u5207\u6362\u6587\u4EF6/Ops \u9762\u677F\uFF08tmux \u524D\u7F00\uFF0C\u7136\u540E\u6309 o\uFF09","tmux.layout.terminalToggle":"\u9690\u85CF / \u6062\u590D\u7EC8\u7AEF\u9762\u677F\uFF08tmux \u524D\u7F00\uFF0C\u7136\u540E\u6309 z\uFF09","tmux.layout.zenToggle":"\u4E13\u6CE8\u6A21\u5F0F\u2014\u2014\u6298\u53E0\u5230\u5F15\u64CE\u9762\u677F\uFF08tmux \u524D\u7F00\uFF0C\u7136\u540E\u6309 space\uFF09","chat.send":"\u53D1\u9001\u6D88\u606F\uFF08\u8F93\u5165\u6846\uFF09","chat.newline":"\u5728\u8F93\u5165\u6846\u4E2D\u6362\u884C","chat.cycle-mode":"\u5FAA\u73AF\u5207\u6362\u6743\u9650\u6A21\u5F0F\uFF08\u8F93\u5165\u6846\uFF09","chat.steer":"\u5F15\u5BFC\uFF08\u4E2D\u65AD\u5E76\u53D1\u9001\uFF09\u2014\u2014\u4EC5\u9650\u6D41\u5F0F\u8F93\u51FA\u4E2D","chat.tab.new":"\u65B0\u5EFA\u804A\u5929\u6807\u7B7E\u9875","chat.fork.new":"\u5FEB\u901F\u6D3E\u751F\uFF1A\u4EE5\u5F53\u524D\u4ED3\u5E93/\u5206\u652F/\u6A21\u578B\u521B\u5EFA\u5B50\u4EFB\u52A1","chat.session.resume":"\u5728\u6B64\u4EFB\u52A1\u7684 worktree \u4E2D\u6062\u590D\u4E4B\u524D\u7684\u4F1A\u8BDD","chat.tab.close":"\u5173\u95ED\u804A\u5929\u6807\u7B7E\u9875","chat.tab.rename":"\u91CD\u547D\u540D\u5F53\u524D\u804A\u5929\u6807\u7B7E\u9875","chat.tab.cycle-next":"\u4E0B\u4E00\u4E2A\u804A\u5929\u6807\u7B7E\u9875","chat.tab.cycle-prev":"\u4E0A\u4E00\u4E2A\u804A\u5929\u6807\u7B7E\u9875","chat.question.nav":"\u5728\u63D0\u95EE\u9009\u62E9\u5668\u4E2D\u79FB\u52A8\u9AD8\u4EAE","chat.question.toggle":"\u5728\u63D0\u95EE\u9009\u62E9\u5668\u4E2D\u5207\u6362\u9AD8\u4EAE\u9009\u9879","chat.question.submit":"\u63A8\u8FDB / \u63D0\u4EA4\u63D0\u95EE\u9009\u62E9\u5668","chat.question.pick-number":"\u5728\u63D0\u95EE\u9009\u62E9\u5668\u4E2D\u6309\u6570\u5B57\u9009\u62E9\u9009\u9879","files.nav":"\u4E0A\u4E0B\u79FB\u52A8\u5149\u6807","files.hierarchy":"\u6298\u53E0 / \u5C55\u5F00\u6811\u5C42\u7EA7","files.open":"\u5728 nvim \u4E2D\u6253\u5F00\u6587\u4EF6\uFF08\u6709\u53D8\u66F4\u65F6\u663E\u793A\u4E0E HEAD \u7684\u5DEE\u5F02\uFF09","files.tab":"\u5207\u6362\u6807\u7B7E\u9875\uFF08\u5FAA\u73AF \u5168\u90E8 / \u53D8\u66F4\uFF09","files.refresh":"\u5237\u65B0","files.openExternal":"\u5728\u7CFB\u7EDF\u9ED8\u8BA4\u5E94\u7528\u4E2D\u6253\u5F00\u6587\u4EF6\uFF08\u97F3\u9891 / \u89C6\u9891 / pdf \u9884\u89C8\uFF09","files.mention":"\u5C06 @<path> \u63D0\u53CA\u6CE8\u5165\u5F15\u64CE\u9762\u677F","files.createPR":"\u4ECE\u5F53\u524D\u4EFB\u52A1\u521B\u5EFA PR","terminal.scroll-up":"\u5411\u4E0A\u6EDA\u52A8\u56DE\u6EDA","terminal.scroll-down":"\u5411\u4E0B\u6EDA\u52A8\u56DE\u6EDA","terminal.reset":"\u91CD\u7F6E\u7EC8\u7AEF\u2014\u2014\u5173\u95ED\u5F53\u524D shell \u5E76\u91CD\u65B0\u542F\u52A8","dialog.cancel":"\u5173\u95ED\u9876\u5C42\u5BF9\u8BDD\u6846\uFF08esc\uFF09","dialog.newtask.tab.cycle":"\u5207\u6362\u65B0\u5EFA\u4EFB\u52A1\u6807\u7B7E\u9875\uFF08\u73B0\u6709\u4ED3\u5E93 / \u65B0\u4ED3\u5E93\uFF09"}}});var N6,y6;var b6=k(()=>{N6={title:"New task",tabs:{existing:"For Existing",clone:"For New Repo",adopt:"Adopt Worktree"},field:{engine:"engine",repo:"repo",fromBranch:"from branch",gitUrl:"git url",parentDir:"parent dir",folderName:"folder name",baseBranch:"base branch",adoptFilter:"filter (path glob)"},placeholder:{folderName:"auto from url",adoptFilter:"* \u2014 type e.g. feature-* to narrow"},hint:{engineCycle:"ctrl+e",remembered:"(remembered \u2014 next clone defaults to this dir)",currentDir:"(current dir)",noBranchesFound:"(no local branches found \u2014 typed text will be used as ref)",noMatchBranch:"(no match \u2014 typed text will be used as ref)",scanningWorktrees:"scanning worktrees\u2026",legend:"\u2191\u2193 pick \xB7 tab next field \xB7 \u2190\u2192 switch \xB7 enter done \xB7 esc cancel"},picker:{moreAbove:"\u2191 {count} more",moreBelow:"\u2193 {count} more"},adopt:{repoLine:"repo: {path}",repoNone:"(none)",noUnlinked:"no unlinked worktrees \u2014 every git worktree here is already a task",noMatch:"no worktrees match the filter",hintSelected:"{count} selected \xB7 enter toggles \xB7 ctrl+a all \xB7 Create imports",hintDefault:"enter toggles \xB7 ctrl+a all \xB7 Create imports the highlighted row"},clone:{progressFallback:"Cloning\u2026",progressInto:"Cloning into {target}\u2026"},button:{create:"[ Create ]",createFocused:"\u25B8 [ Create ]",cloning:"[ Cloning\u2026 ]"},error:{gitUrlRequired:"git URL is required",gitUrlInvalid:"does not look like a git URL: {url}",folderRequired:"folder name is required",folderHasSeparator:"folder name cannot contain path separators",parentRequired:"parent directory is required",parentNotFound:"parent directory does not exist: {path}",parentNotDir:"not a directory: {path}",targetExists:"target already exists: {path}",cloneFailed:"git clone failed: {error}",noAdoptable:"no adoptable worktrees to import"}},y6={title:"\u65B0\u5EFA\u4EFB\u52A1",tabs:{existing:"\u5DF2\u6709\u4ED3\u5E93",clone:"\u514B\u9686\u65B0\u4ED3\u5E93",adopt:"\u63A5\u7BA1 Worktree"},field:{engine:"\u5F15\u64CE",repo:"\u4ED3\u5E93",fromBranch:"\u57FA\u51C6\u5206\u652F",gitUrl:"git \u5730\u5740",parentDir:"\u7236\u76EE\u5F55",folderName:"\u6587\u4EF6\u5939\u540D",baseBranch:"\u57FA\u51C6\u5206\u652F",adoptFilter:"\u8FC7\u6EE4\uFF08\u8DEF\u5F84 glob\uFF09"},placeholder:{folderName:"\u81EA\u52A8\u4ECE\u5730\u5740\u63A8\u5BFC",adoptFilter:"* \u2014 \u8F93\u5165\u5982 feature-* \u6765\u7F29\u5C0F\u8303\u56F4"},hint:{engineCycle:"ctrl+e",remembered:"\uFF08\u5DF2\u8BB0\u4F4F \u2014 \u4E0B\u6B21\u514B\u9686\u9ED8\u8BA4\u4F7F\u7528\u6B64\u76EE\u5F55\uFF09",currentDir:"\uFF08\u5F53\u524D\u76EE\u5F55\uFF09",noBranchesFound:"\uFF08\u672A\u627E\u5230\u672C\u5730\u5206\u652F \u2014 \u5C06\u76F4\u63A5\u4F7F\u7528\u8F93\u5165\u6587\u672C\u4F5C\u4E3A ref\uFF09",noMatchBranch:"\uFF08\u65E0\u5339\u914D \u2014 \u5C06\u76F4\u63A5\u4F7F\u7528\u8F93\u5165\u6587\u672C\u4F5C\u4E3A ref\uFF09",scanningWorktrees:"\u6B63\u5728\u626B\u63CF worktree\u2026",legend:"\u2191\u2193 \u9009\u62E9 \xB7 tab \u4E0B\u4E00\u5B57\u6BB5 \xB7 \u2190\u2192 \u5207\u6362 \xB7 enter \u786E\u8BA4 \xB7 esc \u53D6\u6D88"},picker:{moreAbove:"\u2191 \u8FD8\u6709 {count} \u9879",moreBelow:"\u2193 \u8FD8\u6709 {count} \u9879"},adopt:{repoLine:"\u4ED3\u5E93\uFF1A{path}",repoNone:"\uFF08\u65E0\uFF09",noUnlinked:"\u6CA1\u6709\u672A\u5173\u8054\u7684 worktree \u2014 \u6B64\u4ED3\u5E93\u6240\u6709 git worktree \u5747\u5DF2\u662F\u4EFB\u52A1",noMatch:"\u6CA1\u6709 worktree \u5339\u914D\u6B64\u8FC7\u6EE4\u6761\u4EF6",hintSelected:"\u5DF2\u9009 {count} \u9879 \xB7 enter \u5207\u6362\u9009\u4E2D \xB7 ctrl+a \u5168\u9009 \xB7 \u521B\u5EFA \u5BFC\u5165",hintDefault:"enter \u5207\u6362\u9009\u4E2D \xB7 ctrl+a \u5168\u9009 \xB7 \u521B\u5EFA \u5C06\u5BFC\u5165\u9AD8\u4EAE\u884C"},clone:{progressFallback:"\u514B\u9686\u4E2D\u2026",progressInto:"\u6B63\u5728\u514B\u9686\u5230 {target}\u2026"},button:{create:"[ \u521B\u5EFA ]",createFocused:"\u25B8 [ \u521B\u5EFA ]",cloning:"[ \u514B\u9686\u4E2D\u2026 ]"},error:{gitUrlRequired:"git \u5730\u5740\u4E0D\u80FD\u4E3A\u7A7A",gitUrlInvalid:"\u4E0D\u50CF\u662F\u6709\u6548\u7684 git \u5730\u5740\uFF1A{url}",folderRequired:"\u6587\u4EF6\u5939\u540D\u4E0D\u80FD\u4E3A\u7A7A",folderHasSeparator:"\u6587\u4EF6\u5939\u540D\u4E0D\u80FD\u5305\u542B\u8DEF\u5F84\u5206\u9694\u7B26",parentRequired:"\u7236\u76EE\u5F55\u4E0D\u80FD\u4E3A\u7A7A",parentNotFound:"\u7236\u76EE\u5F55\u4E0D\u5B58\u5728\uFF1A{path}",parentNotDir:"\u4E0D\u662F\u76EE\u5F55\uFF1A{path}",targetExists:"\u76EE\u6807\u8DEF\u5F84\u5DF2\u5B58\u5728\uFF1A{path}",cloneFailed:"git clone \u5931\u8D25\uFF1A{error}",noAdoptable:"\u6CA1\u6709\u53EF\u63A5\u7BA1\u7684 worktree"}}});var S6,I6;var T6=k(()=>{S6={badge:{newActivity:"\u25CF new"},preview:{diffVsHead:"diff vs HEAD",file:"file",closeHint:"\xB7 q to close",loading:"loading\u2026"}},I6={badge:{newActivity:"\u25CF \u65B0\u52A8\u6001"},preview:{diffVsHead:"\u4E0E HEAD \u5BF9\u6BD4",file:"\u6587\u4EF6",closeHint:"\xB7 q \u5173\u95ED",loading:"\u52A0\u8F7D\u4E2D\u2026"}}});var u6,E6;var x6=k(()=>{u6={title:"Quick task \xB7 {repoLabel}",esc:"esc",promptLabel:"prompt",promptPlaceholder:"what should this task do?",engineLabel:"engine",branchLabel:"branch",legend:"enter create \xB7 tab field \xB7 ctrl+e engine \xB7 esc cancel"},E6={title:"\u5FEB\u901F\u4EFB\u52A1 \xB7 {repoLabel}",esc:"esc",promptLabel:"\u63D0\u793A\u8BCD",promptPlaceholder:"\u8FD9\u4E2A\u4EFB\u52A1\u8981\u505A\u4EC0\u4E48\uFF1F",engineLabel:"\u5F15\u64CE",branchLabel:"\u5206\u652F",legend:"enter \u521B\u5EFA \xB7 tab \u5207\u6362\u5B57\u6BB5 \xB7 ctrl+e \u5207\u6362\u5F15\u64CE \xB7 esc \u53D6\u6D88"}});var w6,h6;var P6=k(()=>{w6={title:"Settings",esc:"esc",nav:{default:"j/k pick \xB7 h/l switch level \xB7 enter activate \xB7 esc close",feedback:"tab next field \xB7 enter send \xB7 esc close"},sections:{general:"General",engines:"Engines",accounts:"Accounts",keys:"Keybindings",feedback:"Feedback",dev:"Dev"},general:{theme:"Theme",themeHint:"l to enter list \xB7 j/k to highlight \xB7 enter to apply",language:"Language",languageHint:"Display language for kobe's UI. l to enter list \xB7 j/k to highlight \xB7 enter to apply.",transparent:"Transparent background",transparentHint:"Drops the renderer's bg fill so the host terminal shows through. `t` toggles.",on:"[x] on",off:"[ ] off",focusAccent:"Focus accent",focusAccentHint:"Color of focused pane title, \u258C marker, and split borders.",accentPrimary:"Primary (brand accent)",accentSuccess:"Success (legacy green)",accentInfo:"Info (cool blue)",notifications:"Notifications",notificationsHint:"Fired when a background chat tab finishes or pauses on an approval. Toast = bottom-right popup; Sound = terminal bell + chime. Tab-chip unread dot is always on.",toast:"Toast",sound:"Sound",zen:"Zen mode",zenHint:"The `zen` chip (above the file list) and `prefix`+space collapse the ChatTab to the engine pane \u2014 hiding the file and terminal panes. Keep this on to leave the Tasks rail visible so you can always get back out.",zenKeepTasks:"Keep Tasks pane in zen mode",surface:"Settings page",surfaceHint:"Where Settings and the other full dialogs (new task, rename) open. ChatTab = a dedicated full-window page alongside the engine tabs; Task panel = an overlay inside the left Tasks pane. enter to pick.",surfaceChattab:"ChatTab (separate page)",surfaceTaskpanel:"Task panel (in-pane overlay)",editor:"Editor",editorHint:"What `e` opens a file with in the file tree (enter stays the read-only preview). `auto` (default) follows $VISUAL / $EDITOR, else auto-detects nvim / vim / emacs / nano. enter on the row below cycles auto / vim / nvim / nano / emacs / custom; if the editor isn't installed it falls back to the preview.",editorRow:"editor: < {kind} > (enter to change)",editorCustom:"custom: {cmd}",editorCustomUnset:"(unset \u2014 enter to edit)"},engines:{title:"Launch command",hint:"The command each engine's task pane runs. Override a built-in when your binary isn't on PATH as `claude` / `codex` (e.g. it's `cl`) or to pass default flags, or add your own engine. \u25CF = default engine for new tasks (also set by Ctrl+Shift+T). enter edit command \xB7 r rename \xB7 x reset/remove \xB7 d set default.",defaultTag:" (default)",customTag:" (custom)",addEngine:"+ Add engine"},accounts:{title:"Accounts",hint:"Read-only view of locally-detected engine accounts. Login flows land here later.",checking:"Checking\u2026",notLoggedIn:"\u25CB Not logged in",loggedIn:"\u25CF Logged in: {email}",apiKeyConfigured:"\u25CF API key configured",chatgptLogin:"\u25CF ChatGPT login: {email}",tokenConfigured:"\u25CF Token configured ({source})",copilotDetected:"\u25CF Copilot login detected"},keybindings:{title:"Keybindings",hint:"Rebind chords by editing the YAML below, then restart kobe (or respawn the pane). Press F1 anywhere for the live keymap with every binding id.",configFile:"Config file",notCreated:" (not created yet)",example:"Example",overridesApplied:"Overrides applied",none:"none",warnings:"Warnings"},feedback:{title:"Feedback",hint:"Sends a GitHub Discussion to the kobe repo through `gh`. Requires `gh auth login`; category defaults to Feedback.",titleLabel:"title",titlePlaceholder:"Short summary",descriptionLabel:"description",descriptionPlaceholder:"What happened? (enter sends)",send:"[enter] Send to GitHub Discussions"},dev:{reset:"Reset UI state",resetHint:"Clears ~/.config/kobe/state.json and ~/.kobe/tasks.json, then quits kobe \u2014 relaunch to start fresh. Working session / Archive lists, pane sizes, theme, model picks all reset. Worktrees on disk and Claude Code session history are not touched.",resetButton:"[enter] Reset",restart:"Restart backend",restartHint:"Stops the kobe daemon and quits this kobe window so the next launch spawns a fresh daemon \u2014 picks up daemon / orchestrator / engine edits without a process kill. Other attached kobe windows will lose their connection too.",restartButton:"[enter] Restart",doctorHint:"Daemon wedged or unresponsive? From a shell, run `kobe doctor` to diagnose, or `kobe reset` to stop the daemon + kill sessions (keeps your tasks). Use `kobe reset --hard` only to also wipe the task index + UI state.",experimental:"Experimental",remoteHint:"Remote projects (SSH): register a project whose git worktrees + engine run on another host over SSH, driven from this local kobe. Unfinished \u2014 file/diff panes still degrade for remote. Enables `kobe add --remote`.",remoteOn:"[x] Remote projects (on)",remoteOff:"[ ] Remote projects (off)",autoStatusHint:"Auto status flow: a backlog task moves to in_progress when its engine starts a turn, and new claude sessions get a system-prompt note telling the agent to set in_review itself when the work is done. Never touches done/canceled.",autoStatusOn:"[x] Auto status flow (on)",autoStatusOff:"[ ] Auto status flow (off)",dispatcherHint:"Field-notes dispatcher: task sessions file one-line gotchas (`kobe api note`), the daemon forwards each to the repo's main session, and that session relays them to the in-flight tasks that benefit (`kobe api dispatch`). Web-hosted sessions receive the relays today.",dispatcherOn:"[x] Field-notes dispatcher (on)",dispatcherOff:"[ ] Field-notes dispatcher (off)"}},h6={title:"\u8BBE\u7F6E",esc:"esc",nav:{default:"j/k \u9009\u62E9 \xB7 h/l \u5207\u6362\u5C42\u7EA7 \xB7 enter \u786E\u8BA4 \xB7 esc \u5173\u95ED",feedback:"tab \u4E0B\u4E00\u9879 \xB7 enter \u53D1\u9001 \xB7 esc \u5173\u95ED"},sections:{general:"\u901A\u7528",engines:"\u5F15\u64CE",accounts:"\u8D26\u6237",keys:"\u5FEB\u6377\u952E",feedback:"\u53CD\u9988",dev:"\u5F00\u53D1"},general:{theme:"\u4E3B\u9898",themeHint:"l \u8FDB\u5165\u5217\u8868 \xB7 j/k \u9AD8\u4EAE \xB7 enter \u5E94\u7528",language:"\u8BED\u8A00",languageHint:"kobe \u754C\u9762\u7684\u663E\u793A\u8BED\u8A00\u3002l \u8FDB\u5165\u5217\u8868 \xB7 j/k \u9AD8\u4EAE \xB7 enter \u5E94\u7528\u3002",transparent:"\u900F\u660E\u80CC\u666F",transparentHint:"\u53BB\u6389\u6E32\u67D3\u5668\u7684\u80CC\u666F\u586B\u5145\uFF0C\u8BA9\u5BBF\u4E3B\u7EC8\u7AEF\u900F\u51FA\u6765\u3002\u6309 `t` \u5207\u6362\u3002",on:"[x] \u5F00",off:"[ ] \u5173",focusAccent:"\u805A\u7126\u5F3A\u8C03\u8272",focusAccentHint:"\u805A\u7126\u9762\u677F\u6807\u9898\u3001\u258C \u6807\u8BB0\u548C\u5206\u9694\u8FB9\u6846\u7684\u989C\u8272\u3002",accentPrimary:"\u4E3B\u8272\uFF08\u54C1\u724C\u5F3A\u8C03\u8272\uFF09",accentSuccess:"\u6210\u529F\u8272\uFF08\u4F20\u7EDF\u7EFF\uFF09",accentInfo:"\u4FE1\u606F\u8272\uFF08\u51B7\u84DD\uFF09",notifications:"\u901A\u77E5",notificationsHint:"\u540E\u53F0\u804A\u5929\u9875\u5B8C\u6210\u6216\u5728\u5BA1\u6279\u5904\u6682\u505C\u65F6\u89E6\u53D1\u3002Toast = \u53F3\u4E0B\u89D2\u5F39\u7A97\uFF1BSound = \u7EC8\u7AEF\u54CD\u94C3 + \u63D0\u793A\u97F3\u3002\u6807\u7B7E\u4E0A\u7684\u672A\u8BFB\u5706\u70B9\u59CB\u7EC8\u5F00\u542F\u3002",toast:"Toast \u5F39\u7A97",sound:"\u58F0\u97F3",zen:"\u7985\u6A21\u5F0F",zenHint:"`zen` \u6807\u8BB0\uFF08\u6587\u4EF6\u5217\u8868\u4E0A\u65B9\uFF09\u548C `prefix`+\u7A7A\u683C \u4F1A\u628A ChatTab \u6536\u8D77\u5230\u5F15\u64CE\u9762\u677F\u2014\u2014\u9690\u85CF\u6587\u4EF6\u4E0E\u7EC8\u7AEF\u9762\u677F\u3002\u4FDD\u6301\u5F00\u542F\u53EF\u8BA9 Tasks \u4FA7\u680F\u59CB\u7EC8\u53EF\u89C1\uFF0C\u65B9\u4FBF\u968F\u65F6\u9000\u51FA\u3002",zenKeepTasks:"\u7985\u6A21\u5F0F\u4E0B\u4FDD\u7559 Tasks \u9762\u677F",surface:"\u8BBE\u7F6E\u9875\u9762",surfaceHint:"\u8BBE\u7F6E\u53CA\u5176\u4ED6\u5B8C\u6574\u5BF9\u8BDD\u6846\uFF08\u65B0\u5EFA\u4EFB\u52A1\u3001\u91CD\u547D\u540D\uFF09\u7684\u6253\u5F00\u4F4D\u7F6E\u3002ChatTab = \u4E0E\u5F15\u64CE\u6807\u7B7E\u5E76\u5217\u7684\u72EC\u7ACB\u6574\u7A97\u9875\u9762\uFF1BTask panel = \u5DE6\u4FA7 Tasks \u9762\u677F\u5185\u7684\u6D6E\u5C42\u3002enter \u9009\u62E9\u3002",surfaceChattab:"ChatTab\uFF08\u72EC\u7ACB\u9875\u9762\uFF09",surfaceTaskpanel:"Task panel\uFF08\u9762\u677F\u5185\u6D6E\u5C42\uFF09",editor:"\u7F16\u8F91\u5668",editorHint:"\u6587\u4EF6\u6811\u91CC\u6309 `e` \u7528\u4EC0\u4E48\u6253\u5F00\u6587\u4EF6\uFF08enter \u4ECD\u662F\u53EA\u8BFB\u9884\u89C8\uFF09\u3002`auto`\uFF08\u9ED8\u8BA4\uFF09\u8DDF\u968F $VISUAL / $EDITOR\uFF0C\u5426\u5219\u81EA\u52A8\u63A2\u6D4B nvim / vim / emacs / nano\u3002\u5728\u4E0B\u65B9\u4E00\u884C\u6309 enter \u5728 auto / vim / nvim / nano / emacs / custom \u95F4\u5FAA\u73AF\uFF1B\u7F16\u8F91\u5668\u672A\u5B89\u88C5\u65F6\u56DE\u9000\u5230\u9884\u89C8\u3002",editorRow:"\u7F16\u8F91\u5668: < {kind} > (enter \u5207\u6362)",editorCustom:"\u81EA\u5B9A\u4E49: {cmd}",editorCustomUnset:"(\u672A\u8BBE\u7F6E \u2014 enter \u7F16\u8F91)"},engines:{title:"\u542F\u52A8\u547D\u4EE4",hint:"\u6BCF\u4E2A\u5F15\u64CE\u7684\u4EFB\u52A1\u9762\u677F\u8FD0\u884C\u7684\u547D\u4EE4\u3002\u5F53\u4E8C\u8FDB\u5236\u6587\u4EF6\u4E0D\u5728 PATH \u4E0A\u7684 `claude` / `codex` \u540D\u4E0B\uFF08\u6BD4\u5982\u53EB `cl`\uFF09\u3001\u8981\u4F20\u9ED8\u8BA4\u53C2\u6570\uFF0C\u6216\u8981\u6DFB\u52A0\u81EA\u5DF1\u7684\u5F15\u64CE\u65F6\uFF0C\u53EF\u8986\u76D6\u5185\u7F6E\u9879\u3002\u25CF = \u65B0\u4EFB\u52A1\u7684\u9ED8\u8BA4\u5F15\u64CE\uFF08\u4E5F\u53EF\u7528 Ctrl+Shift+T \u8BBE\u7F6E\uFF09\u3002enter \u7F16\u8F91\u547D\u4EE4 \xB7 r \u91CD\u547D\u540D \xB7 x \u91CD\u7F6E/\u79FB\u9664 \xB7 d \u8BBE\u4E3A\u9ED8\u8BA4\u3002",defaultTag:" (\u9ED8\u8BA4)",customTag:" (\u81EA\u5B9A\u4E49)",addEngine:"+ \u6DFB\u52A0\u5F15\u64CE"},accounts:{title:"\u8D26\u6237",hint:"\u672C\u5730\u63A2\u6D4B\u5230\u7684\u5F15\u64CE\u8D26\u6237\u7684\u53EA\u8BFB\u89C6\u56FE\u3002\u767B\u5F55\u6D41\u7A0B\u7A0D\u540E\u4F1A\u63A5\u5165\u8FD9\u91CC\u3002",checking:"\u68C0\u67E5\u4E2D\u2026",notLoggedIn:"\u25CB \u672A\u767B\u5F55",loggedIn:"\u25CF \u5DF2\u767B\u5F55: {email}",apiKeyConfigured:"\u25CF \u5DF2\u914D\u7F6E API key",chatgptLogin:"\u25CF ChatGPT \u767B\u5F55: {email}",tokenConfigured:"\u25CF \u5DF2\u914D\u7F6E Token ({source})",copilotDetected:"\u25CF \u68C0\u6D4B\u5230 Copilot \u767B\u5F55"},keybindings:{title:"\u5FEB\u6377\u952E",hint:"\u7F16\u8F91\u4E0B\u9762\u7684 YAML \u6765\u91CD\u7ED1\u5B9A\u6309\u952E\uFF0C\u7136\u540E\u91CD\u542F kobe\uFF08\u6216\u91CD\u5EFA\u9762\u677F\uFF09\u3002\u4EFB\u610F\u4F4D\u7F6E\u6309 F1 \u67E5\u770B\u5E26\u6BCF\u4E2A\u7ED1\u5B9A id \u7684\u5B9E\u65F6\u952E\u4F4D\u8868\u3002",configFile:"\u914D\u7F6E\u6587\u4EF6",notCreated:" (\u5C1A\u672A\u521B\u5EFA)",example:"\u793A\u4F8B",overridesApplied:"\u5DF2\u5E94\u7528\u7684\u8986\u76D6",none:"\u65E0",warnings:"\u8B66\u544A"},feedback:{title:"\u53CD\u9988",hint:"\u901A\u8FC7 `gh` \u5411 kobe \u4ED3\u5E93\u53D1\u4E00\u6761 GitHub Discussion\u3002\u9700\u8981 `gh auth login`\uFF1B\u5206\u7C7B\u9ED8\u8BA4\u4E3A Feedback\u3002",titleLabel:"\u6807\u9898",titlePlaceholder:"\u7B80\u77ED\u6982\u62EC",descriptionLabel:"\u63CF\u8FF0",descriptionPlaceholder:"\u53D1\u751F\u4E86\u4EC0\u4E48\uFF1F(enter \u53D1\u9001)",send:"[enter] \u53D1\u9001\u5230 GitHub Discussions"},dev:{reset:"\u91CD\u7F6E UI \u72B6\u6001",resetHint:"\u6E05\u7A7A ~/.config/kobe/state.json \u548C ~/.kobe/tasks.json\uFF0C\u7136\u540E\u9000\u51FA kobe\u2014\u2014\u91CD\u65B0\u542F\u52A8\u5373\u53EF\u4ECE\u5934\u5F00\u59CB\u3002\u5DE5\u4F5C\u4F1A\u8BDD / \u5F52\u6863\u5217\u8868\u3001\u9762\u677F\u5C3A\u5BF8\u3001\u4E3B\u9898\u3001\u6A21\u578B\u9009\u62E9\u90FD\u4F1A\u91CD\u7F6E\u3002\u78C1\u76D8\u4E0A\u7684 worktree \u548C Claude Code \u4F1A\u8BDD\u5386\u53F2\u4E0D\u53D7\u5F71\u54CD\u3002",resetButton:"[enter] \u91CD\u7F6E",restart:"\u91CD\u542F\u540E\u7AEF",restartHint:"\u505C\u6B62 kobe daemon \u5E76\u9000\u51FA\u5F53\u524D kobe \u7A97\u53E3\uFF0C\u4E0B\u6B21\u542F\u52A8\u4F1A\u62C9\u8D77\u4E00\u4E2A\u5168\u65B0\u7684 daemon\u2014\u2014\u65E0\u9700\u6740\u8FDB\u7A0B\u5373\u53EF\u5E94\u7528 daemon / orchestrator / engine \u7684\u6539\u52A8\u3002\u5176\u4ED6\u5DF2\u8FDE\u63A5\u7684 kobe \u7A97\u53E3\u4E5F\u4F1A\u65AD\u5F00\u8FDE\u63A5\u3002",restartButton:"[enter] \u91CD\u542F",doctorHint:"daemon \u5361\u4F4F\u6216\u65E0\u54CD\u5E94\uFF1F\u5728 shell \u91CC\u8FD0\u884C `kobe doctor` \u8BCA\u65AD\uFF0C\u6216 `kobe reset` \u505C\u6B62 daemon + \u6740\u6389\u4F1A\u8BDD\uFF08\u4FDD\u7559\u4F60\u7684\u4EFB\u52A1\uFF09\u3002\u53EA\u6709\u8981\u540C\u65F6\u6E05\u7A7A\u4EFB\u52A1\u7D22\u5F15 + UI \u72B6\u6001\u65F6\u624D\u7528 `kobe reset --hard`\u3002",experimental:"\u5B9E\u9A8C\u6027",remoteHint:"\u8FDC\u7A0B\u9879\u76EE\uFF08SSH\uFF09\uFF1A\u6CE8\u518C\u4E00\u4E2A git worktree + \u5F15\u64CE\u90FD\u901A\u8FC7 SSH \u8DD1\u5728\u53E6\u4E00\u53F0\u4E3B\u673A\u4E0A\u3001\u7531\u672C\u5730 kobe \u9A71\u52A8\u7684\u9879\u76EE\u3002\u5C1A\u672A\u5B8C\u6210\u2014\u2014\u6587\u4EF6/diff \u9762\u677F\u5BF9\u8FDC\u7A0B\u4ECD\u4F1A\u964D\u7EA7\u3002\u542F\u7528 `kobe add --remote`\u3002",remoteOn:"[x] \u8FDC\u7A0B\u9879\u76EE (\u5F00)",remoteOff:"[ ] \u8FDC\u7A0B\u9879\u76EE (\u5173)",autoStatusHint:"\u81EA\u52A8\u72B6\u6001\u6D41\u8F6C\uFF1Abacklog \u4EFB\u52A1\u5728\u5176\u5F15\u64CE\u5F00\u59CB\u4E00\u8F6E\u65F6\u79FB\u5230 in_progress\uFF0C\u65B0\u7684 claude \u4F1A\u8BDD\u4F1A\u62FF\u5230\u4E00\u6761\u7CFB\u7EDF\u63D0\u793A\uFF0C\u544A\u8BC9 agent \u5B8C\u6210\u540E\u81EA\u884C\u8BBE\u4E3A in_review\u3002\u7EDD\u4E0D\u89E6\u78B0 done/canceled\u3002",autoStatusOn:"[x] \u81EA\u52A8\u72B6\u6001\u6D41\u8F6C (\u5F00)",autoStatusOff:"[ ] \u81EA\u52A8\u72B6\u6001\u6D41\u8F6C (\u5173)",dispatcherHint:"\u73B0\u573A\u7B14\u8BB0\u8C03\u5EA6\u5668\uFF1A\u4EFB\u52A1\u4F1A\u8BDD\u63D0\u4EA4\u4E00\u884C\u7ECF\u9A8C\uFF08`kobe api note`\uFF09\uFF0Cdaemon \u5C06\u6BCF\u6761\u8F6C\u53D1\u7ED9\u4ED3\u5E93\u7684\u4E3B\u4F1A\u8BDD\uFF0C\u4E3B\u4F1A\u8BDD\u518D\u628A\u5B83\u4EEC\u8F6C\u8FBE\u7ED9\u80FD\u53D7\u76CA\u7684\u8FDB\u884C\u4E2D\u4EFB\u52A1\uFF08`kobe api dispatch`\uFF09\u3002\u76EE\u524D\u7531 Web \u6258\u7BA1\u7684\u4F1A\u8BDD\u4F1A\u6536\u5230\u8F6C\u8FBE\u3002",dispatcherOn:"[x] \u73B0\u573A\u7B14\u8BB0\u8C03\u5EA6\u5668 (\u5F00)",dispatcherOff:"[ ] \u73B0\u573A\u7B14\u8BB0\u8C03\u5EA6\u5668 (\u5173)"}}});var v6,m6;var c6=k(()=>{v6={view:{workspace:"Workspace",archives:"Archives"},header:{projects:"PROJECTS",tasks:"TASKS"},search:{placeholder:"fuzzy filter"},sort:"sort",project:{taskSingular:"task",taskPlural:"tasks"},moveChip:" move",empty:{noMatchSearch:"No matching tasks \u2014 esc to clear.",noActiveProject:"No active tasks for this project.",noArchivedProject:"No archived tasks for this project.",noActive:"No active tasks \u2014 press n or [+] to create one.",noArchived:"No archived tasks."},archiveHint:"a to unarchive",status:{done:"done",inReview:"in review",working:"working",backlog:"\u2014",canceled:"canceled",error:"error"},activity:{rateLimited:"rate limited",permissionNeeded:"needs permission",error:"error"},subtitle:{noTracking:"no activity tracking",materializing:"materializing"},hints:{headerFolded:"\u2500\u2500 keys ?\u25B8 \u2500\u2500",headerUnfolded:"\u2500\u2500 keys ?\u25BE \u2500\u2500",fullHelp:"full help",newTask:"new task",settings:"settings",open:"open",focusEngine:"focus engine",openWorktree:"open wt",delete:"delete",views:"views",project:"project",movePanes:"move panes",detach:"tasks\u2192detach",splits:"splits",panes:"panes",reorder:"reorder",done:"done"},toast:{noDaemonWorktree:"No daemon running \u2014 can't create the worktree",noDaemonOpen:"No daemon running \u2014 can't open this task",noEditor:"No editor found \u2014 set KOBE_OPEN_EDITOR (e.g. 'code', 'cursor', 'nvim')",openWorktreeFailed:"Couldn't open worktree with {label}",sessionStartFailed:"Couldn't start this task's session",moveTaskFailed:"Couldn't move task: {message}",alreadyLatest:"Already on the latest version (v{version})",worktreeErrorNotGit:"This project isn't a git repo yet \u2014 a task needs a git branch. Run `git init` (+ a first commit) in the project, then open the task. Non-git support is coming.",worktreeErrorGeneric:"Couldn't create the worktree: {message}"}},m6={view:{workspace:"\u5DE5\u4F5C\u533A",archives:"\u5F52\u6863"},header:{projects:"\u9879\u76EE",tasks:"\u4EFB\u52A1"},search:{placeholder:"\u6A21\u7CCA\u641C\u7D22"},sort:"\u6392\u5E8F",project:{taskSingular:"\u4E2A\u4EFB\u52A1",taskPlural:"\u4E2A\u4EFB\u52A1"},moveChip:" \u79FB\u52A8",empty:{noMatchSearch:"\u65E0\u5339\u914D\u4EFB\u52A1\u2014\u2014\u6309 esc \u6E05\u9664\u3002",noActiveProject:"\u8BE5\u9879\u76EE\u6682\u65E0\u6D3B\u8DC3\u4EFB\u52A1\u3002",noArchivedProject:"\u8BE5\u9879\u76EE\u6682\u65E0\u5F52\u6863\u4EFB\u52A1\u3002",noActive:"\u6682\u65E0\u6D3B\u8DC3\u4EFB\u52A1\u2014\u2014\u6309 n \u6216 [+] \u65B0\u5EFA\u3002",noArchived:"\u6682\u65E0\u5F52\u6863\u4EFB\u52A1\u3002"},archiveHint:"a \u53D6\u6D88\u5F52\u6863",status:{done:"\u5DF2\u5B8C\u6210",inReview:"\u5BA1\u6838\u4E2D",working:"\u8FDB\u884C\u4E2D",backlog:"\u2014",canceled:"\u5DF2\u53D6\u6D88",error:"\u9519\u8BEF"},activity:{rateLimited:"\u8BF7\u6C42\u53D7\u9650",permissionNeeded:"\u7B49\u5F85\u6388\u6743",error:"\u9519\u8BEF"},subtitle:{noTracking:"\u4E0D\u8DDF\u8E2A\u6D3B\u52A8",materializing:"\u6B63\u5728\u521B\u5EFA worktree"},hints:{headerFolded:"\u2500\u2500 \u5FEB\u6377\u952E ?\u25B8 \u2500\u2500",headerUnfolded:"\u2500\u2500 \u5FEB\u6377\u952E ?\u25BE \u2500\u2500",fullHelp:"\u5B8C\u6574\u5E2E\u52A9",newTask:"\u65B0\u5EFA\u4EFB\u52A1",settings:"\u8BBE\u7F6E",open:"\u6253\u5F00",focusEngine:"\u805A\u7126\u5F15\u64CE",openWorktree:"\u6253\u5F00 worktree",delete:"\u5220\u9664",views:"\u89C6\u56FE",project:"\u9879\u76EE",movePanes:"\u79FB\u52A8\u9762\u677F",detach:"\u4EFB\u52A1\u2192\u5206\u79BB",splits:"\u5206\u5272",panes:"\u9762\u677F",reorder:"\u91CD\u65B0\u6392\u5E8F",done:"\u5B8C\u6210"},toast:{noDaemonWorktree:"\u5B88\u62A4\u8FDB\u7A0B\u672A\u8FD0\u884C\u2014\u2014\u65E0\u6CD5\u521B\u5EFA worktree",noDaemonOpen:"\u5B88\u62A4\u8FDB\u7A0B\u672A\u8FD0\u884C\u2014\u2014\u65E0\u6CD5\u6253\u5F00\u6B64\u4EFB\u52A1",noEditor:"\u672A\u627E\u5230\u7F16\u8F91\u5668\u2014\u2014\u8BF7\u8BBE\u7F6E KOBE_OPEN_EDITOR\uFF08\u5982 'code'\u3001'cursor'\u3001'nvim'\uFF09",openWorktreeFailed:"\u65E0\u6CD5\u7528 {label} \u6253\u5F00 worktree",sessionStartFailed:"\u65E0\u6CD5\u542F\u52A8\u6B64\u4EFB\u52A1\u7684\u4F1A\u8BDD",moveTaskFailed:"\u65E0\u6CD5\u79FB\u52A8\u4EFB\u52A1\uFF1A{message}",alreadyLatest:"\u5DF2\u662F\u6700\u65B0\u7248\u672C\uFF08v{version}\uFF09",worktreeErrorNotGit:"\u8BE5\u9879\u76EE\u5C1A\u975E git \u4ED3\u5E93\u2014\u2014\u4EFB\u52A1\u9700\u8981 git \u5206\u652F\u3002\u8BF7\u5728\u9879\u76EE\u4E2D\u6267\u884C `git init`\uFF08+ \u9996\u6B21\u63D0\u4EA4\uFF09\u540E\u518D\u6253\u5F00\u4EFB\u52A1\u3002\u975E git \u9879\u76EE\u7684\u652F\u6301\u5373\u5C06\u63A8\u51FA\u3002",worktreeErrorGeneric:"\u65E0\u6CD5\u521B\u5EFA worktree\uFF1A{message}"}}});var n6,d6;var i6=k(()=>{n6={pageTitle:"KOBE UPDATE",current:"current",latest:"latest",releaseUrlUnavailable:"release URL unavailable",statusReleaseOpened:"Opened release page in your browser.",statusReleaseError:"Could not open release URL.",statusRunningUpdater:"Leaving the TUI page and running the updater in this tmux window...",loadingNotes:"Loading release notes...",notesUnavailable:"Release notes are unavailable. Use Open release to view the GitHub release page.",changesSectionHeader:"\u2500\u2500 changes from v{from} to v{to} \u2500\u2500",updateComplete:"kobe update complete. Relaunch kobe to use the new version.",updateFailed:"kobe update failed with exit code {code}.",pressAnyKey:"Press any key to close this update window.",actions:{updateNow:"Update now",openRelease:"Open release",close:"Close",closeDetail:"return to the previous tmux window"},skew:{title:"\u26A0 DAEMON OUT OF DATE",olderBuild:"an older build",hint:"daemon is {daemon} \u2014 you launched v{clientVersion}. Run `kobe daemon restart` then `kobe reload`"}},d6={pageTitle:"KOBE \u66F4\u65B0",current:"\u5F53\u524D",latest:"\u6700\u65B0",releaseUrlUnavailable:"\u53D1\u5E03\u94FE\u63A5\u4E0D\u53EF\u7528",statusReleaseOpened:"\u5DF2\u5728\u6D4F\u89C8\u5668\u4E2D\u6253\u5F00\u53D1\u5E03\u8BF4\u660E\u9875\u9762\u3002",statusReleaseError:"\u65E0\u6CD5\u6253\u5F00\u53D1\u5E03\u94FE\u63A5\u3002",statusRunningUpdater:"\u6B63\u5728\u79BB\u5F00 TUI \u9875\u9762\uFF0C\u5E76\u5728\u6B64 tmux \u7A97\u53E3\u4E2D\u8FD0\u884C\u66F4\u65B0\u7A0B\u5E8F\u2026\u2026",loadingNotes:"\u6B63\u5728\u52A0\u8F7D\u53D1\u5E03\u8BF4\u660E\u2026\u2026",notesUnavailable:"\u53D1\u5E03\u8BF4\u660E\u4E0D\u53EF\u7528\u3002\u8BF7\u4F7F\u7528\u300C\u6253\u5F00\u53D1\u5E03\u9875\u300D\u67E5\u770B GitHub \u53D1\u5E03\u9875\u9762\u3002",changesSectionHeader:"\u2500\u2500 v{from} \u81F3 v{to} \u7684\u53D8\u66F4 \u2500\u2500",updateComplete:"kobe \u66F4\u65B0\u5B8C\u6210\u3002\u8BF7\u91CD\u65B0\u542F\u52A8 kobe \u4EE5\u4F7F\u7528\u65B0\u7248\u672C\u3002",updateFailed:"kobe \u66F4\u65B0\u5931\u8D25\uFF0C\u9000\u51FA\u7801\u4E3A {code}\u3002",pressAnyKey:"\u6309\u4EFB\u610F\u952E\u5173\u95ED\u6B64\u66F4\u65B0\u7A97\u53E3\u3002",actions:{updateNow:"\u7ACB\u5373\u66F4\u65B0",openRelease:"\u6253\u5F00\u53D1\u5E03\u9875",close:"\u5173\u95ED",closeDetail:"\u8FD4\u56DE\u4E0A\u4E00\u4E2A tmux \u7A97\u53E3"},skew:{title:"\u26A0 DAEMON \u7248\u672C\u4E0D\u4E00\u81F4",olderBuild:"\u65E7\u7248\u672C\u6784\u5EFA",hint:"daemon \u8FD0\u884C\u7684\u662F {daemon}\uFF0C\u800C\u4F60\u542F\u52A8\u7684\u662F v{clientVersion}\u3002\u8BF7\u8FD0\u884C `kobe daemon restart` \u518D\u8FD0\u884C `kobe reload`"}}});function EX(f){return typeof f==="string"&&bz.some((J)=>J.id===f)}var wN,hN,bz,kG,NG="en";var yG=k(()=>{D6();F6();g6();k6();b6();T6();x6();P6();c6();i6();wN={settings:w6,tasks:v6,files:L6,newTask:N6,ops:S6,update:n6,quickTask:u6,help:O6,common:K6,keys:R6},hN={settings:h6,tasks:m6,files:M6,newTask:y6,ops:I6,update:d6,quickTask:E6,help:A6,common:U6,keys:C6},bz=[{id:"en",label:"English"},{id:"zh",label:"\u4E2D\u6587"}],kG={en:wN,zh:hN}});function xX(f){if(kG[f])PN("lang",f)}function oj(){return _j.lang}function l6(f,J){let Y=f;for(let z of J.split("."))if(Y&&typeof Y==="object"&&z in Y)Y=Y[z];else return;return typeof Y==="string"?Y:void 0}function vN(f,J){if(!J)return f;return f.replace(/\{(\w+)\}/g,(Y,z)=>(z in J)?String(J[z]):Y)}function F(f,J){let Y=_j.lang,z=l6(kG[Y],f)??l6(kG.en,f)??f;return vN(z,J)}function sj(f,J){let Y=_j.lang,z=(G)=>{return G.keys[f]?.[J]};return z(kG[Y])??z(kG.en)??J}var _j,PN;var G1=k(()=>{CG();yG();yG();[_j,PN]=uJ({lang:NG})});function mN(f){let J=[],Y=f.name;if(Y)J.push(Y);if(Y==="return")J.push("enter");if(Y==="enter")J.push("return");let z=[];if(f.ctrl)z.push("ctrl");if(f.meta)z.push("cmd");if(f.option)z.push("alt");if(f.shift&&Y&&Y.length>1)z.push("shift");if(z.length===0)return J;let G=`${z.join("+")}+`;return J.map((X)=>G+X)}function tj(f,J){if(J.defaultPrevented)return!1;let Y=mN(J);for(let z=f.length-1;z>=0;z--){let G=f[z];if(!G)continue;let X=G.config();if(X.enabled===!1)continue;let q=X.bindings.find((Q)=>Y.includes(Q.key));if(q)return q.cmd(J,q.slot),J.preventDefault(),!0}return!1}function nN(){if(ej)return;let f=Y1();if(!f)throw Error("useBindings: no renderer in scope; call inside a component rendered by @opentui/solid.");ej=f.keyInput,a6=(J)=>{tj(UQ,J)},ej.on("keypress",a6)}function Uf(f){nN();let J=cN++,Y={config:f,id:J};zf(()=>{f()}),UQ.push(Y),mf(()=>{let z=UQ.findIndex((G)=>G.id===J);if(z>=0)UQ.splice(z,1)})}var cN=1,UQ,ej=null,a6=null;var b1=k(()=>{h();Wf();UQ=[]});import{RGBA as $6}from"@opentui/core";function lN(f){let J=TJ(),Y=i0(),{theme:z}=Y,G=Y1(),X=!1,q=()=>{if(f.size==="xlarge")return 140;if(f.size==="large")return 110;if(f.size==="small")return 50;return 80},Q=2,H=()=>Math.max(8,J().height-Q*2);return(()=>{var B=W("box"),V=W("box");return D(B,V),Z(B,"onMouseDown",()=>{X=!!G?.getSelection()}),Z(B,"onMouseUp",()=>{if(X){X=!1;return}f.onClose?.()}),Z(B,"alignItems","center"),Z(B,"justifyContent","center"),Z(B,"position","absolute"),Z(B,"zIndex",3000),Z(B,"left",0),Z(B,"top",0),Z(V,"onMouseUp",(j)=>{X=!1,j.stopPropagation()}),Z(V,"flexShrink",1),Z(V,"flexGrow",0),Z(V,"paddingTop",1),K(V,()=>f.children),u((j)=>{var U=J().width,L=J().height,O=Y.transparentBackground?iN:dN,M=q(),R=J().width-2,S=H(),a=z.backgroundDialog;return U!==j.e&&(j.e=Z(B,"width",U,j.e)),L!==j.t&&(j.t=Z(B,"height",L,j.t)),O!==j.a&&(j.a=Z(B,"backgroundColor",O,j.a)),M!==j.o&&(j.o=Z(V,"width",M,j.o)),R!==j.i&&(j.i=Z(V,"maxWidth",R,j.i)),S!==j.n&&(j.n=Z(V,"maxHeight",S,j.n)),a!==j.s&&(j.s=Z(V,"backgroundColor",a,j.s)),j},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),B})()}function aN(){let[f,J]=uJ({stack:[],size:"medium"}),Y=Y1(),z=null;function G(){setTimeout(()=>{if(!z)return;if(z.isDestroyed)return;function X(Q){for(let H of Q.getChildren()){if(H===z)return!0;if(X(H))return!0}return!1}let q=Y?.root;if(!q)return;if(!X(q))return;z.focus()},1)}return Uf(()=>({enabled:f.stack.length>0&&!Y?.getSelection()?.getSelectedText(),bindings:[{key:"escape",cmd:()=>{if(Y?.getSelection())Y.clearSelection();f.stack.at(-1)?.onClose?.(),J("stack",f.stack.slice(0,-1)),G()}},{key:"ctrl+c",cmd:()=>{if(Y?.getSelection())Y.clearSelection();f.stack.at(-1)?.onClose?.(),J("stack",f.stack.slice(0,-1)),G()}}]})),{clear(){for(let X of f.stack)X.onClose?.();UZ(()=>{J("size","medium"),J("stack",[])}),G()},replace(X,q){if(f.stack.length===0)z=Y?.currentFocusedRenderable??null,z?.blur();for(let Q of f.stack)Q.onClose?.();J("size","medium"),J("stack",[{element:X,onClose:q}])},push(X,q){if(f.stack.length===0)z=Y?.currentFocusedRenderable??null,z?.blur();J("stack",[...f.stack,{element:X,onClose:q}])},pop(){if(f.stack.at(-1)?.onClose?.(),J("stack",f.stack.slice(0,-1)),f.stack.length===0)G()},get stack(){return f.stack},get size(){return f.size},setSize(X){J("size",X)}}}function p6(f){let J=aN();return b(r6.Provider,{value:J,get children(){return[I0(()=>f.children),(()=>{var Y=W("box");return Z(Y,"position","absolute"),Z(Y,"zIndex",3000),K(Y,b(X0,{get when(){return J.stack.length},get children(){return b(lN,{onClose:()=>J.clear(),get size(){return J.size},get children(){return J.stack.at(-1).element()}})}})),Y})()]}})}function vf(){let f=u1(r6);if(!f)throw Error("useDialog must be used within a DialogProvider");return f}var dN,iN,r6;var P1=k(()=>{h();h();h();h();h();h();h();h();Wf();CG();xf();b1();dN=$6.fromInts(0,0,0,128),iN=$6.fromInts(0,0,0,64);r6=gJ()});import{spawnSync as f8}from"child_process";import*as o6 from"fs";function _6(f){return`This folder isn't a git repository yet, and a task needs a git branch to work in. To fix it, turn ${f} into a repo: git init && git add -A && git commit -m "init" \u2014 then create the task again. (Working in non-git folders is coming soon.)`}function s6(f){let J=f.trim();if(!J)return"repo path is required";let Y;try{Y=o6.statSync(J)}catch{return`path does not exist: ${J}`}if(!Y.isDirectory())return`not a directory: ${J}`;try{if(f8("git",["rev-parse","--git-dir"],{cwd:J,encoding:"utf-8",timeout:2000,stdio:["ignore","pipe","ignore"]}).status!==0)return _6(J)}catch{return _6(J)}return null}function wX(f){if(!f)return null;try{let J=f8("git",["rev-parse","--abbrev-ref","HEAD"],{cwd:f,encoding:"utf-8",timeout:2000,stdio:["ignore","pipe","ignore"]});if(J.status!==0)return null;let Y=J.stdout.trim();if(!Y||Y==="HEAD")return null;return Y}catch{return null}}function t6(f){if(!f)return[];try{let J=f8("git",["for-each-ref","--format=%(refname:short)","refs/heads/"],{cwd:f,encoding:"utf-8",timeout:2000});if(J.status!==0)return[];return J.stdout.split(`
223
- `).map((Y)=>Y.trim()).filter(Boolean).sort((Y,z)=>{let G=(Q)=>Q==="main"?0:Q==="master"?1:Q==="develop"?2:3,X=G(Y),q=G(z);if(X!==q)return X-q;return Y.localeCompare(z)})}catch{return[]}}var LJ="main";var DQ=()=>{};import*as e6 from"fs";import*as LQ from"os";function V1(f){if(f==="~")return LQ.homedir();if(f.startsWith("~/"))return LQ.homedir()+f.slice(1);return f}function J8(f){if(!f)return{base:"",filter:""};let Y=V1(f==="~"?"~/":f);if(Y.endsWith("/"))return{base:Y,filter:""};let z=Y.lastIndexOf("/");if(z===-1)return{base:"",filter:Y};return{base:Y.slice(0,z+1),filter:Y.slice(z+1)}}function Y8(f){if(!f)return[];try{let J=e6.readdirSync(f,{withFileTypes:!0}),Y=[];for(let z of J)if(z.isDirectory())Y.push(z.name);return Y.sort((z,G)=>z.localeCompare(G))}catch{return[]}}function z8(f,J){let Y=J.toLowerCase(),G=Y.startsWith(".")?f:f.filter((X)=>!X.startsWith("."));if(!Y)return G;return G.filter((X)=>X.toLowerCase().startsWith(Y))}function hX(f,J,Y){let z=J+Y;if(f.startsWith("~")){let G=LQ.homedir();if(z===G)return"~";if(z.startsWith(`${G}/`))return`~${z.slice(G.length)}`}return z}var MQ=()=>{};import{spawn as $N}from"child_process";import*as Sz from"fs";import*as PX from"path";function f4(f){let J=f.trim().replace(/\/+$/,"");if(!J)return"";let Y=J.lastIndexOf("/"),z=J.lastIndexOf(":"),G=Math.max(Y,z);return(G>=0?J.slice(G+1):J).replace(/\.git$/i,"")}function J4(f){let J=f.trim();if(!J)return F("newTask.error.gitUrlRequired");let Y=J.includes("://"),z=J.includes("@")&&J.includes(":"),G=J.includes("/");if(!Y&&!z&&!G)return F("newTask.error.gitUrlInvalid",{url:J});return null}function Y4(f,J){let Y=J.trim();if(!Y)return F("newTask.error.folderRequired");if(Y.includes("/")||Y.includes("\\"))return F("newTask.error.folderHasSeparator");let z=f.trim();if(!z)return F("newTask.error.parentRequired");let G=V1(z),X;try{X=Sz.statSync(G)}catch{return F("newTask.error.parentNotFound",{path:G})}if(!X.isDirectory())return F("newTask.error.parentNotDir",{path:G});let q=PX.join(G,Y);if(Sz.existsSync(q))return F("newTask.error.targetExists",{path:q});return null}function z4(f,J){return PX.join(V1(f.trim()),J.trim())}function G4(f,J){let Y=J.trim();if(!Y)return J;let z=V1(f.trim());if(!z)return J;try{if(!Sz.statSync(z).isDirectory())return J}catch{return J}if(!Sz.existsSync(PX.join(z,Y)))return Y;for(let G=2;G<1000;G++){let X=`${Y}-${G}`;if(!Sz.existsSync(PX.join(z,X)))return X}return Y}function X4(f,J,Y){return new Promise((z)=>{let G="";try{let X=$N("git",["clone","--progress",f,J],{stdio:["ignore","ignore","pipe"]});X.stderr?.setEncoding("utf-8"),X.stderr?.on("data",(q)=>{if(G+=q,Y){let Q=q.split(/[\r\n]+/).filter((B)=>B.trim().length>0),H=Q[Q.length-1];if(H)Y(H)}}),X.on("error",(q)=>{z({ok:!1,error:q.message})}),X.on("close",(q)=>{if(q===0){z({ok:!0,path:J});return}let Q=G.split(/[\r\n]+/).filter((H)=>H.trim().length>0).pop()??`git clone exited with ${q}`;z({ok:!1,error:Q})})}catch(X){z({ok:!1,error:X instanceof Error?X.message:String(X)})}})}var Z4=k(()=>{G1();MQ()});function FQ(f){if(f==="existing")return"clone";if(f==="clone")return"adopt";return"existing"}function q4(f){if(f==="existing")return"adopt";if(f==="clone")return"existing";return"clone"}function Q4(f,J){let Y=f.trim();if(J.includes(Y))return"saved";if(Y.startsWith("~"))return"browse";if(Y.includes("/"))return"browse";return"saved"}function X1(f){return f.replace(/[\r\n]+/g,"")}function G8(f,J="existing"){if(f==="confirm")return"tabs";if(f==="tabs")return"engine";if(f==="engine")return X8(J);if(J==="clone"){if(f==="cloneUrl")return"cloneParent";if(f==="cloneParent")return"cloneFolder";if(f==="cloneFolder")return"cloneBaseRef";if(f==="cloneBaseRef")return"confirm";return"cloneUrl"}if(J==="adopt")return f==="adoptFilter"?"confirm":"adoptFilter";if(f==="repo")return"baseRef";if(f==="baseRef")return"confirm";return"repo"}function X8(f){if(f==="clone")return"cloneUrl";if(f==="adopt")return"adoptFilter";return"repo"}function H4(f,J){let Y=J.trim();if(!Y)return f;return f.filter((z)=>_X(Y,z.path))}function B4(f,J){let Y=new Set,z=[];for(let G of[f,...J]){let X=G.trim();if(!X||Y.has(X))continue;Y.add(X),z.push(X)}return z}function j4(f,J){let Y=J.trim().toLowerCase();if(!Y)return f;return f.filter((z)=>z.toLowerCase().includes(Y))}function W4(f,J){let Y=J.trim().toLowerCase();if(!Y)return f;return f.filter((z)=>z.toLowerCase().includes(Y))}function vX(f,J,Y=rN){let z=f.length;if(z<=Y)return{items:f,start:0,total:z};let G=Math.floor(Y/2),X=Math.max(0,J-G);if(X+Y>z)X=z-Y;return{items:f.slice(X,X+Y),start:X,total:z}}function EJ(f,J){if(J<=0)return 0;return Math.max(0,Math.min(J-1,f))}function V4(f,J,Y){let z=J[Y];if(z)return z;return f.trim()||LJ}var rN=8;var Z8=k(()=>{mQ();DQ()});import{TextAttributes as _1}from"@opentui/core";function K4(f){let J=vf(),{theme:Y}=i0(),[z,G]=r("existing"),X=()=>{let d=f.availableVendors;return d&&d.length>0?d:cf},q=(()=>{let d=X(),s=f.defaultVendor??"claude";return d.includes(s)?s:d[0]??"claude"})(),[Q,H]=r(q),[B,V]=r("tabs"),[j,U]=r(f.defaultRepo),[L,O]=r(wX(V1(f.defaultRepo.trim()))??LJ),[M,R]=r(!1),[S,a]=r(""),[N,g]=r(f.defaultCloneParent?.trim()?f.defaultCloneParent:"~/"),[C,y]=r(""),[_,z0]=r(!1),[t,Y0]=r(LJ),[T,Q0]=r(!1),[p,D0]=r(""),g0=U0(()=>B4(f.defaultRepo,f.savedRepos)),$=U0(()=>Q4(j(),g0())),E=U0(()=>J8(j())),f0=U0(()=>Y8(E().base)),I=U0(()=>z8(f0(),E().filter)),G0=U0(()=>j4(g0(),j())),x=U0(()=>$()==="browse"?I():G0()),[c,Z0]=r(0),V0=U0(()=>vX(x(),c())),[H0,y0]=r(!1),w0=U0(()=>t6(V1(j().trim()))),T0=U0(()=>W4(w0(),L())),[r0,P]=r(0),M0=U0(()=>vX(T0(),r0())),J0=U0(()=>J8(N())),F0=U0(()=>Y8(J0().base)),a0=U0(()=>z8(F0(),J0().filter)),[p0,u0]=r(0),_0=U0(()=>vX(a0(),p0())),[n,q0]=r(!1),[b0,o0]=r(""),[l0,$0]=r(0),[t0,Rf]=r(new Set),[gf]=KZ(()=>z()==="adopt"?V1(j().trim()):null,async(d)=>f.discoverAdoptable?await f.discoverAdoptable(d):[]),o=U0(()=>H4(gf()??[],b0())),e=U0(()=>vX(o().map((d)=>d.path),l0())),B0=U0(()=>{let d=e();return o().slice(d.start,d.start+d.items.length)});zf(()=>{o(),$0((d)=>EJ(d,o().length))});function C0(d){Rf((s)=>{let S0=new Set(s);if(S0.has(d))S0.delete(d);else S0.add(d);return S0})}function A(){let d=o()[l0()];if(d)C0(d.path)}zf(()=>{T0(),P(0)}),zf(()=>{let d=V1(j().trim());if(!d)return;if(M())return;let s=wX(d);if(s)O(s)}),zf(()=>{x(),Z0(0)}),zf(()=>{a0(),u0(0)}),zf(()=>{let d=S(),s=N();if(_())return;let S0=f4(d);y(G4(s,S0))});let[P0,K0]=r(null);zf(()=>{j(),S(),N(),C(),b0(),K0(null)});function E0(){let d=V1(j().trim());if(!d)return;let s=s6(d);if(s){K0(s),V("repo");return}let S0=L().trim()||LJ;f.onSubmit({repo:d,baseRef:S0,vendor:Q()}),J.clear()}async function W0(){if(T())return;let d=J4(S());if(d){K0(d),V("cloneUrl");return}let s=Y4(N(),C());if(s){K0(s),V(C().trim()?"cloneParent":"cloneFolder");return}let S0=z4(N(),C());Q0(!0),D0(F("newTask.clone.progressInto",{target:S0}));let N0=await X4(S().trim(),S0,(tf)=>{D0(tf)});if(Q0(!1),!N0.ok){K0(F("newTask.error.cloneFailed",{error:N0.error})),V("cloneUrl");return}let Z1=t().trim()||LJ,K1=V1(N().trim());f.onSubmit({repo:N0.path,baseRef:Z1,vendor:Q(),cloned:{parentDir:K1}}),J.clear()}function L0(){let d=o();if(d.length===0){K0(F("newTask.error.noAdoptable"));return}let s=t0(),S0=s.size>0?d.filter((N0)=>s.has(N0.path)):d.slice(l0(),l0()+1);if(S0.length===0)return;f.onSubmit({mode:"adopt",repo:V1(j().trim()),vendor:Q(),adopt:S0.map((N0)=>({worktreePath:N0.path,branch:N0.branch}))}),J.clear()}function R0(){if(z()==="clone"){W0();return}if(z()==="adopt"){L0();return}E0()}function Jf(d){if(T())return;if(d===z())return;G(d),V(X8(d)),K0(null)}function Yf(d){if(T())return;let s=d===1?FQ(z()):q4(z());if(s===z())return;G(s),K0(null),V("tabs")}function n0(d){H((s)=>d===1?qY(X(),s):cQ(X(),s))}function yf(){if(!j().trim()&&$()==="saved"){let s=x()[0];if(s){U(s),V("baseRef");return}}if($()==="browse"){let S0=I()[c()],N0=E();if(S0){U(hX(j(),N0.base,S0)),Z0(0),y0(!0),V("baseRef");return}V("baseRef");return}let d=x()[c()];if(d){U(d),V("baseRef");return}V("baseRef")}function k0(d){let S0=x()[d];if(!S0)return;if($()==="browse"){let N0=E();U(hX(j(),N0.base,S0)),Z0(d),y0(!0),V("baseRef");return}U(S0),Z0(d),V("baseRef")}function wf(){let s=a0()[p0()],S0=J0();if(s){g(hX(N(),S0.base,s)),u0(0),q0(!0),V("cloneFolder");return}V("cloneFolder")}function v(d){let S0=a0()[d];if(!S0)return;let N0=J0();g(hX(N(),N0.base,S0)),u0(d),q0(!0),V("cloneFolder")}let A0=()=>{let d=o();if(d.length===0)return;let s=d.every((S0)=>t0().has(S0.path));Rf(s?new Set:new Set(d.map((S0)=>S0.path)))};Uf(()=>({bindings:[{key:"tab",cmd:()=>V((d)=>G8(d,z()))},{key:"ctrl+]",cmd:()=>Jf(FQ(z()))},{key:"ctrl+[",cmd:()=>Jf(FQ(z()))},{key:"ctrl+e",cmd:()=>H((d)=>qY(X(),d))},{key:"up",cmd:()=>{if(T())return;if(z()==="existing"&&B()==="repo"){let d=x();if(d.length===0)return;Z0(EJ(c()-1,d.length));return}if(z()==="existing"&&B()==="baseRef"){let d=T0();if(d.length===0)return;P(EJ(r0()-1,d.length));return}if(z()==="clone"&&B()==="cloneParent"){let d=a0();if(d.length===0)return;u0(EJ(p0()-1,d.length));return}if(z()==="adopt"){let d=o();if(d.length===0)return;$0(EJ(l0()-1,d.length))}}},{key:"down",cmd:()=>{if(T())return;if(z()==="existing"&&B()==="repo"){let d=x();if(d.length===0)return;Z0(EJ(c()+1,d.length));return}if(z()==="existing"&&B()==="baseRef"){let d=T0();if(d.length===0)return;P(EJ(r0()+1,d.length));return}if(z()==="clone"&&B()==="cloneParent"){let d=a0();if(d.length===0)return;u0(EJ(p0()+1,d.length));return}if(z()==="adopt"){let d=o();if(d.length===0)return;$0(EJ(l0()+1,d.length))}}},...B()==="tabs"||B()==="engine"?[{key:"left",cmd:()=>B()==="tabs"?Yf(-1):n0(-1)},{key:"right",cmd:()=>B()==="tabs"?Yf(1):n0(1)},{key:"return",cmd:()=>V((d)=>G8(d,z()))}]:[],...z()==="adopt"?[{key:"ctrl+a",cmd:A0}]:[]]})),Uf(()=>({enabled:B()==="confirm"&&!T(),bindings:[{key:"return",cmd:()=>R0()}]}));let Bf=(d)=>B()===d?Y.primary:Y.textMuted,Ff=(d)=>B()===d?_1.BOLD|_1.UNDERLINE:void 0,Qf=(d,s)=>d?s?_1.BOLD|_1.UNDERLINE:_1.BOLD:void 0;return(()=>{var d=W("box"),s=W("box"),S0=W("text"),N0=W("box"),Z1=W("box"),K1=W("text"),tf=W("box"),v1=W("box"),xJ=W("text"),M1=W("box"),wJ=W("text"),XY=W("text");return D(d,s),D(d,N0),D(d,M1),Z(d,"paddingLeft",2),Z(d,"paddingRight",2),Z(d,"gap",0),D(s,S0),Z(s,"flexDirection","row"),K(S0,()=>F("newTask.title")),D(N0,Z1),Z(N0,"gap",1),Z(N0,"paddingTop",1),Z(N0,"paddingBottom",1),K(N0,()=>{let m=()=>B()==="tabs",i=(l)=>l?Y.primary:Y.textMuted;return(()=>{var l=W("box"),w=W("text"),m0=W("text"),v0=W("text");return D(l,w),D(l,m0),D(l,v0),Z(l,"flexDirection","row"),Z(l,"gap",2),Z(w,"onMouseUp",()=>Jf("existing")),K(w,(()=>{var O0=I0(()=>z()==="existing");return()=>O0()?`\u25B8 ${F("newTask.tabs.existing")}`:` ${F("newTask.tabs.existing")}`})()),Z(m0,"onMouseUp",()=>Jf("clone")),K(m0,(()=>{var O0=I0(()=>z()==="clone");return()=>O0()?`\u25B8 ${F("newTask.tabs.clone")}`:` ${F("newTask.tabs.clone")}`})()),Z(v0,"onMouseUp",()=>Jf("adopt")),K(v0,(()=>{var O0=I0(()=>z()==="adopt");return()=>O0()?`\u25B8 ${F("newTask.tabs.adopt")}`:` ${F("newTask.tabs.adopt")}`})()),u((O0)=>{var c0=i(z()==="existing"),qf=Qf(z()==="existing",m()),Df=i(z()==="clone"),q1=Qf(z()==="clone",m()),s1=i(z()==="adopt"),ZY=Qf(z()==="adopt",m());return c0!==O0.e&&(O0.e=Z(w,"fg",c0,O0.e)),qf!==O0.t&&(O0.t=Z(w,"attributes",qf,O0.t)),Df!==O0.a&&(O0.a=Z(m0,"fg",Df,O0.a)),q1!==O0.o&&(O0.o=Z(m0,"attributes",q1,O0.o)),s1!==O0.i&&(O0.i=Z(v0,"fg",s1,O0.i)),ZY!==O0.n&&(O0.n=Z(v0,"attributes",ZY,O0.n)),O0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),l})()},Z1),D(Z1,K1),D(Z1,tf),Z(Z1,"gap",0),K(K1,()=>F("newTask.field.engine")),D(tf,v1),D(tf,xJ),Z(tf,"flexDirection","row"),Z(tf,"gap",2),K(tf,b(Zf,{get each(){return X()},children:(m)=>{let i=()=>Q()===m;return(()=>{var l=W("text");return Z(l,"onMouseUp",()=>H(m)),K(l,()=>i()?"\u25B8 ":" ",null),K(l,m,null),u((w)=>{var m0=i()?Y.primary:Y.textMuted,v0=i()?_1.BOLD:void 0;return m0!==w.e&&(w.e=Z(l,"fg",m0,w.e)),v0!==w.t&&(w.t=Z(l,"attributes",v0,w.t)),w},{e:void 0,t:void 0}),l})()}}),v1),Z(v1,"flexGrow",1),K(xJ,()=>F("newTask.hint.engineCycle")),K(N0,b(X0,{get when(){return z()==="existing"},get children(){return[(()=>{var m=W("box"),i=W("text"),l=W("input");return D(m,i),D(m,l),Z(m,"gap",0),K(i,()=>F("newTask.field.repo")),Z(l,"onInput",(w)=>{y0(!1),U(X1(w))}),Z(l,"onSubmit",()=>{if(!j().trim())return;yf()}),u((w)=>{var m0=Bf("repo"),v0=Ff("repo"),O0=j(),c0=f.defaultRepo,qf=B()==="repo";return m0!==w.e&&(w.e=Z(i,"fg",m0,w.e)),v0!==w.t&&(w.t=Z(i,"attributes",v0,w.t)),O0!==w.a&&(w.a=Z(l,"value",O0,w.a)),c0!==w.o&&(w.o=Z(l,"placeholder",c0,w.o)),qf!==w.i&&(w.i=Z(l,"focused",qf,w.i)),w},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),m})(),b(X0,{get when(){return I0(()=>B()==="repo"&&x().length>0)()&&!H0()},get children(){var m=W("box");return Z(m,"gap",0),Z(m,"paddingLeft",2),K(m,b(X0,{get when(){return V0().start>0},get children(){var i=W("text");return Z(i,"wrapMode","none"),K(i,()=>F("newTask.picker.moreAbove",{count:V0().start})),u((l)=>Z(i,"fg",Y.textMuted,l)),i}}),null),K(m,b(Zf,{get each(){return V0().items},children:(i,l)=>{let w=()=>V0().start+l(),m0=()=>w()===c(),v0=()=>$()==="saved"&&i===f.defaultRepo,O0=()=>$()==="saved"&&j().trim()===i,c0=()=>$()==="browse"?"/":"",qf=()=>v0()?` ${F("newTask.hint.currentDir")}`:"";return(()=>{var Df=W("text");return Z(Df,"wrapMode","none"),Z(Df,"onMouseUp",()=>k0(w())),K(Df,()=>m0()?"\u25B8 ":" ",null),K(Df,i,null),K(Df,c0,null),K(Df,qf,null),u((q1)=>{var s1=m0()?Y.primary:O0()?Y.accent:Y.textMuted,ZY=m0()?_1.BOLD:void 0;return s1!==q1.e&&(q1.e=Z(Df,"fg",s1,q1.e)),ZY!==q1.t&&(q1.t=Z(Df,"attributes",ZY,q1.t)),q1},{e:void 0,t:void 0}),Df})()}}),null),K(m,b(X0,{get when(){return V0().start+V0().items.length<V0().total},get children(){var i=W("text");return Z(i,"wrapMode","none"),K(i,()=>F("newTask.picker.moreBelow",{count:V0().total-V0().start-V0().items.length})),u((l)=>Z(i,"fg",Y.textMuted,l)),i}}),null),m}}),(()=>{var m=W("box"),i=W("text"),l=W("input");return D(m,i),D(m,l),Z(m,"gap",0),K(i,()=>F("newTask.field.fromBranch")),Z(l,"placeholder",LJ),Z(l,"onInput",(w)=>{R(!0),O(X1(w))}),Z(l,"onSubmit",()=>{O(V4(L(),T0(),r0())),R(!0),E0()}),u((w)=>{var m0=Bf("baseRef"),v0=Ff("baseRef"),O0=L(),c0=B()==="baseRef";return m0!==w.e&&(w.e=Z(i,"fg",m0,w.e)),v0!==w.t&&(w.t=Z(i,"attributes",v0,w.t)),O0!==w.a&&(w.a=Z(l,"value",O0,w.a)),c0!==w.o&&(w.o=Z(l,"focused",c0,w.o)),w},{e:void 0,t:void 0,a:void 0,o:void 0}),m})(),b(X0,{get when(){return I0(()=>B()==="baseRef"&&T0().length===0)()&&P0()==null},get children(){var m=W("box"),i=W("text");return D(m,i),Z(m,"gap",0),Z(m,"paddingLeft",2),Z(m,"paddingBottom",1),Z(i,"wrapMode","none"),K(i,(()=>{var l=I0(()=>w0().length===0);return()=>l()?F("newTask.hint.noBranchesFound"):F("newTask.hint.noMatchBranch")})()),u((l)=>Z(i,"fg",Y.textMuted,l)),m}}),b(X0,{get when(){return I0(()=>B()==="baseRef")()&&T0().length>0},get children(){var m=W("box");return Z(m,"gap",0),Z(m,"paddingLeft",2),Z(m,"paddingBottom",1),K(m,b(X0,{get when(){return M0().start>0},get children(){var i=W("text");return Z(i,"wrapMode","none"),K(i,()=>F("newTask.picker.moreAbove",{count:M0().start})),u((l)=>Z(i,"fg",Y.textMuted,l)),i}}),null),K(m,b(Zf,{get each(){return M0().items},children:(i,l)=>{let w=()=>M0().start+l(),m0=()=>w()===r0(),v0=()=>L().trim()===i;return(()=>{var O0=W("text");return Z(O0,"wrapMode","none"),Z(O0,"onMouseUp",()=>{O(i),R(!0),P(w()),V("confirm")}),K(O0,()=>m0()?"\u25B8 ":" ",null),K(O0,i,null),u((c0)=>{var qf=m0()?Y.primary:v0()?Y.accent:Y.textMuted,Df=m0()?_1.BOLD:void 0;return qf!==c0.e&&(c0.e=Z(O0,"fg",qf,c0.e)),Df!==c0.t&&(c0.t=Z(O0,"attributes",Df,c0.t)),c0},{e:void 0,t:void 0}),O0})()}}),null),K(m,b(X0,{get when(){return M0().start+M0().items.length<M0().total},get children(){var i=W("text");return Z(i,"wrapMode","none"),K(i,()=>F("newTask.picker.moreBelow",{count:M0().total-M0().start-M0().items.length})),u((l)=>Z(i,"fg",Y.textMuted,l)),i}}),null),m}})]}}),null),K(N0,b(X0,{get when(){return z()==="clone"},get children(){return[(()=>{var m=W("box"),i=W("text"),l=W("input");return D(m,i),D(m,l),Z(m,"gap",0),K(i,()=>F("newTask.field.gitUrl")),Z(l,"placeholder","https://github.com/user/repo.git"),Z(l,"onInput",(w)=>a(X1(w))),Z(l,"onSubmit",()=>{if(!S().trim())return;V("cloneParent")}),u((w)=>{var m0=Bf("cloneUrl"),v0=Ff("cloneUrl"),O0=S(),c0=B()==="cloneUrl";return m0!==w.e&&(w.e=Z(i,"fg",m0,w.e)),v0!==w.t&&(w.t=Z(i,"attributes",v0,w.t)),O0!==w.a&&(w.a=Z(l,"value",O0,w.a)),c0!==w.o&&(w.o=Z(l,"focused",c0,w.o)),w},{e:void 0,t:void 0,a:void 0,o:void 0}),m})(),(()=>{var m=W("box"),i=W("text"),l=W("input");return D(m,i),D(m,l),Z(m,"gap",0),K(i,()=>F("newTask.field.parentDir")),Z(l,"placeholder","~/"),Z(l,"onInput",(w)=>{q0(!1),g(X1(w))}),Z(l,"onSubmit",()=>wf()),u((w)=>{var m0=Bf("cloneParent"),v0=Ff("cloneParent"),O0=N(),c0=B()==="cloneParent";return m0!==w.e&&(w.e=Z(i,"fg",m0,w.e)),v0!==w.t&&(w.t=Z(i,"attributes",v0,w.t)),O0!==w.a&&(w.a=Z(l,"value",O0,w.a)),c0!==w.o&&(w.o=Z(l,"focused",c0,w.o)),w},{e:void 0,t:void 0,a:void 0,o:void 0}),m})(),b(X0,{get when(){return B()==="cloneParent"},get children(){var m=W("box"),i=W("text");return D(m,i),Z(m,"paddingLeft",2),Z(i,"wrapMode","none"),K(i,()=>F("newTask.hint.remembered")),u((l)=>Z(i,"fg",Y.textMuted,l)),m}}),b(X0,{get when(){return I0(()=>B()==="cloneParent"&&a0().length>0)()&&!n()},get children(){var m=W("box");return Z(m,"gap",0),Z(m,"paddingLeft",2),K(m,b(X0,{get when(){return _0().start>0},get children(){var i=W("text");return Z(i,"wrapMode","none"),K(i,()=>F("newTask.picker.moreAbove",{count:_0().start})),u((l)=>Z(i,"fg",Y.textMuted,l)),i}}),null),K(m,b(Zf,{get each(){return _0().items},children:(i,l)=>{let w=()=>_0().start+l(),m0=()=>w()===p0();return(()=>{var v0=W("text"),O0=x0("/");return D(v0,O0),Z(v0,"wrapMode","none"),Z(v0,"onMouseUp",()=>v(w())),K(v0,()=>m0()?"\u25B8 ":" ",O0),K(v0,i,O0),u((c0)=>{var qf=m0()?Y.primary:Y.textMuted,Df=m0()?_1.BOLD:void 0;return qf!==c0.e&&(c0.e=Z(v0,"fg",qf,c0.e)),Df!==c0.t&&(c0.t=Z(v0,"attributes",Df,c0.t)),c0},{e:void 0,t:void 0}),v0})()}}),null),K(m,b(X0,{get when(){return _0().start+_0().items.length<_0().total},get children(){var i=W("text");return Z(i,"wrapMode","none"),K(i,()=>F("newTask.picker.moreBelow",{count:_0().total-_0().start-_0().items.length})),u((l)=>Z(i,"fg",Y.textMuted,l)),i}}),null),m}}),(()=>{var m=W("box"),i=W("text"),l=W("input");return D(m,i),D(m,l),Z(m,"gap",0),K(i,()=>F("newTask.field.folderName")),Z(l,"onInput",(w)=>{z0(!0),y(X1(w))}),Z(l,"onSubmit",()=>V("cloneBaseRef")),u((w)=>{var m0=Bf("cloneFolder"),v0=Ff("cloneFolder"),O0=C(),c0=F("newTask.placeholder.folderName"),qf=B()==="cloneFolder";return m0!==w.e&&(w.e=Z(i,"fg",m0,w.e)),v0!==w.t&&(w.t=Z(i,"attributes",v0,w.t)),O0!==w.a&&(w.a=Z(l,"value",O0,w.a)),c0!==w.o&&(w.o=Z(l,"placeholder",c0,w.o)),qf!==w.i&&(w.i=Z(l,"focused",qf,w.i)),w},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),m})(),(()=>{var m=W("box"),i=W("text"),l=W("input");return D(m,i),D(m,l),Z(m,"gap",0),K(i,()=>F("newTask.field.baseBranch")),Z(l,"placeholder",LJ),Z(l,"onInput",(w)=>Y0(X1(w))),Z(l,"onSubmit",()=>void W0()),u((w)=>{var m0=Bf("cloneBaseRef"),v0=Ff("cloneBaseRef"),O0=t(),c0=B()==="cloneBaseRef";return m0!==w.e&&(w.e=Z(i,"fg",m0,w.e)),v0!==w.t&&(w.t=Z(i,"attributes",v0,w.t)),O0!==w.a&&(w.a=Z(l,"value",O0,w.a)),c0!==w.o&&(w.o=Z(l,"focused",c0,w.o)),w},{e:void 0,t:void 0,a:void 0,o:void 0}),m})(),b(X0,{get when(){return T()},get children(){var m=W("box"),i=W("text");return D(m,i),Z(m,"gap",0),Z(m,"paddingLeft",2),Z(i,"wrapMode","none"),K(i,()=>p()||F("newTask.clone.progressFallback")),u((l)=>Z(i,"fg",Y.textMuted,l)),m}})]}}),null),K(N0,b(X0,{get when(){return z()==="adopt"},get children(){return[(()=>{var m=W("box"),i=W("text"),l=W("input");return D(m,i),D(m,l),Z(m,"gap",0),K(i,()=>F("newTask.field.adoptFilter")),Z(l,"onInput",(w)=>o0(X1(w))),Z(l,"onSubmit",()=>A()),u((w)=>{var m0=Bf("adoptFilter"),v0=Ff("adoptFilter"),O0=b0(),c0=F("newTask.placeholder.adoptFilter"),qf=B()==="adoptFilter";return m0!==w.e&&(w.e=Z(i,"fg",m0,w.e)),v0!==w.t&&(w.t=Z(i,"attributes",v0,w.t)),O0!==w.a&&(w.a=Z(l,"value",O0,w.a)),c0!==w.o&&(w.o=Z(l,"placeholder",c0,w.o)),qf!==w.i&&(w.i=Z(l,"focused",qf,w.i)),w},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),m})(),(()=>{var m=W("box"),i=W("text");return D(m,i),Z(m,"paddingLeft",2),Z(i,"wrapMode","none"),K(i,()=>F("newTask.adopt.repoLine",{path:V1(j().trim())||F("newTask.adopt.repoNone")})),u((l)=>Z(i,"fg",Y.textMuted,l)),m})(),b(X0,{get when(){return gf.loading},get children(){var m=W("box"),i=W("text");return D(m,i),Z(m,"paddingLeft",2),Z(i,"wrapMode","none"),K(i,()=>F("newTask.hint.scanningWorktrees")),u((l)=>Z(i,"fg",Y.textMuted,l)),m}}),b(X0,{get when(){return I0(()=>!gf.loading)()&&o().length===0},get children(){var m=W("box"),i=W("text");return D(m,i),Z(m,"paddingLeft",2),Z(i,"wrapMode","none"),K(i,(()=>{var l=I0(()=>(gf()??[]).length===0);return()=>l()?F("newTask.adopt.noUnlinked"):F("newTask.adopt.noMatch")})()),u((l)=>Z(i,"fg",Y.textMuted,l)),m}}),b(X0,{get when(){return o().length>0},get children(){var m=W("box"),i=W("text");return D(m,i),Z(m,"gap",0),Z(m,"paddingLeft",2),K(m,b(X0,{get when(){return e().start>0},get children(){var l=W("text");return Z(l,"wrapMode","none"),K(l,()=>F("newTask.picker.moreAbove",{count:e().start})),u((w)=>Z(l,"fg",Y.textMuted,w)),l}}),i),K(m,b(Zf,{get each(){return B0()},children:(l,w)=>{let m0=()=>e().start+w(),v0=()=>m0()===l0(),O0=()=>t0().has(l.path),c0=()=>[l.dirty?"dirty":"",l.kobeManaged?"":"external"].filter(Boolean).join(",");return(()=>{var qf=W("text");return Z(qf,"wrapMode","none"),Z(qf,"onMouseUp",()=>{$0(m0()),C0(l.path)}),K(qf,()=>v0()?"\u25B8 ":" ",null),K(qf,()=>O0()?"[x] ":"[ ] ",null),K(qf,()=>l.branch,null),K(qf,(()=>{var Df=I0(()=>!!c0());return()=>Df()?` (${c0()})`:""})(),null),u((Df)=>{var q1=v0()?Y.primary:O0()?Y.accent:Y.textMuted,s1=v0()?_1.BOLD:void 0;return q1!==Df.e&&(Df.e=Z(qf,"fg",q1,Df.e)),s1!==Df.t&&(Df.t=Z(qf,"attributes",s1,Df.t)),Df},{e:void 0,t:void 0}),qf})()}}),i),K(m,b(X0,{get when(){return e().start+e().items.length<e().total},get children(){var l=W("text");return Z(l,"wrapMode","none"),K(l,()=>F("newTask.picker.moreBelow",{count:e().total-e().start-e().items.length})),u((w)=>Z(l,"fg",Y.textMuted,w)),l}}),i),Z(i,"wrapMode","none"),K(i,(()=>{var l=I0(()=>t0().size>0);return()=>l()?F("newTask.adopt.hintSelected",{count:t0().size}):F("newTask.adopt.hintDefault")})()),u((l)=>Z(i,"fg",Y.textMuted,l)),m}})]}}),null),K(N0,b(X0,{get when(){return P0()},get children(){var m=W("text"),i=x0("\u203B ");return D(m,i),Z(m,"wrapMode","word"),K(m,P0,null),u((l)=>Z(m,"fg",Y.error,l)),m}}),null),D(M1,wJ),D(M1,XY),Z(M1,"flexDirection","row"),Z(M1,"justifyContent","space-between"),Z(M1,"alignItems","center"),Z(M1,"paddingTop",1),Z(M1,"paddingBottom",1),K(wJ,()=>F("newTask.hint.legend")),Z(XY,"onMouseUp",()=>R0()),K(XY,(()=>{var m=I0(()=>!!T());return()=>m()?F("newTask.button.cloning"):I0(()=>B()==="confirm")()?F("newTask.button.createFocused"):F("newTask.button.create")})()),u((m)=>{var i=_1.BOLD,l=Y.text,w=Bf("engine"),m0=Ff("engine"),v0=Y.textMuted,O0=Y.textMuted,c0=B()==="confirm"?Y.primary:Y.text,qf=B()==="confirm"?_1.BOLD:void 0;return i!==m.e&&(m.e=Z(S0,"attributes",i,m.e)),l!==m.t&&(m.t=Z(S0,"fg",l,m.t)),w!==m.a&&(m.a=Z(K1,"fg",w,m.a)),m0!==m.o&&(m.o=Z(K1,"attributes",m0,m.o)),v0!==m.i&&(m.i=Z(xJ,"fg",v0,m.i)),O0!==m.n&&(m.n=Z(wJ,"fg",O0,m.n)),c0!==m.s&&(m.s=Z(XY,"fg",c0,m.s)),qf!==m.h&&(m.h=Z(XY,"attributes",qf,m.h)),m},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0}),d})()}var U4=k(()=>{h();h();h();h();h();h();h();h();G1();U1();Wf();xf();DQ();b1();MQ();P1();Z4();Z8()});function pN(f,J,Y,z){return new Promise((G)=>{f.replace(()=>b(K4,{defaultRepo:J,savedRepos:Y,get defaultCloneParent(){return z?.defaultCloneParent},get defaultVendor(){return z?.defaultVendor},get availableVendors(){return z?.availableVendors},get discoverAdoptable(){return z?.discoverAdoptable},onSubmit:(X)=>G(X),onCancel:()=>G(void 0)}),()=>G(void 0)),f.setSize("medium")})}var OQ;var bG=k(()=>{h();U4();Z8();OQ={show:pN}});function D4(f,J){return[{key:"tab",cmd:()=>J.cycleField(1)},{key:"shift+tab",cmd:()=>J.cycleField(-1)},{key:"ctrl+e",cmd:()=>J.stepEngine(1)},...f==="engine"?[{key:"left",cmd:()=>J.stepEngine(-1)},{key:"right",cmd:()=>J.stepEngine(1)},{key:"return",cmd:()=>J.commit()}]:[]]}import{TextAttributes as L4}from"@opentui/core";function _N(f){let J=vf(),{theme:Y}=i0(),[z,G]=r("prompt"),[X,q]=r(""),[Q,H]=r(f.defaultVendor),[B,V]=r(f.defaultBaseRef);function j(M){let R=AQ.indexOf(z());G(AQ[(R+M+AQ.length)%AQ.length]??"prompt")}function U(M){let R=f.engines;if(R.length===0)return;if(M>0){H((a)=>qY(R,a));return}let S=Math.max(0,R.indexOf(Q()));H(R[(S-1+R.length)%R.length]??Q())}function L(){let M=X().trim();if(!M){G("prompt");return}f.onSubmit({prompt:M,vendor:Q(),baseRef:B().trim()||f.defaultBaseRef}),J.clear()}Uf(()=>({enabled:!0,bindings:D4(z(),{cycleField:j,stepEngine:U,commit:L})}));let O=(M)=>z()===M?Y.accent:Y.textMuted;return(()=>{var M=W("box"),R=W("box"),S=W("text"),a=W("text"),N=W("box"),g=W("text"),C=W("input"),y=W("box"),_=W("text"),z0=W("box"),t=W("text"),Y0=W("input"),T=W("box"),Q0=W("text");return D(M,R),D(M,N),D(M,y),D(M,z0),D(M,T),Z(M,"paddingLeft",2),Z(M,"paddingRight",2),Z(M,"gap",1),D(R,S),D(R,a),Z(R,"flexDirection","row"),Z(R,"justifyContent","space-between"),K(S,()=>F("quickTask.title",{repoLabel:f.repoLabel})),Z(a,"onMouseUp",()=>f.onCancel()),K(a,()=>F("quickTask.esc")),D(N,g),D(N,C),Z(N,"gap",0),K(g,()=>F("quickTask.promptLabel")),Z(C,"onInput",(p)=>q(X1(p))),Z(C,"onSubmit",()=>L()),D(y,_),Z(y,"flexDirection","row"),Z(y,"gap",2),K(_,()=>F("quickTask.engineLabel")),K(y,b(Zf,{get each(){return f.engines},children:(p)=>(()=>{var D0=W("text");return Z(D0,"onMouseUp",()=>{H(p),G("engine")}),K(D0,()=>f.engineLabel(p)),u((g0)=>{var $=Q()===p?Y.primary:Y.textMuted,E=Q()===p?L4.BOLD:void 0;return $!==g0.e&&(g0.e=Z(D0,"fg",$,g0.e)),E!==g0.t&&(g0.t=Z(D0,"attributes",E,g0.t)),g0},{e:void 0,t:void 0}),D0})()}),null),D(z0,t),D(z0,Y0),Z(z0,"gap",0),K(t,()=>F("quickTask.branchLabel")),Z(Y0,"onInput",(p)=>V(X1(p))),Z(Y0,"onSubmit",()=>L()),D(T,Q0),Z(T,"paddingBottom",1),K(Q0,()=>F("quickTask.legend")),u((p)=>{var D0=L4.BOLD,g0=Y.text,$=Y.textMuted,E=O("prompt"),f0=X(),I=F("quickTask.promptPlaceholder"),G0=z()==="prompt",x=O("engine"),c=O("branch"),Z0=B(),V0=f.defaultBaseRef,H0=z()==="branch",y0=Y.textMuted;return D0!==p.e&&(p.e=Z(S,"attributes",D0,p.e)),g0!==p.t&&(p.t=Z(S,"fg",g0,p.t)),$!==p.a&&(p.a=Z(a,"fg",$,p.a)),E!==p.o&&(p.o=Z(g,"fg",E,p.o)),f0!==p.i&&(p.i=Z(C,"value",f0,p.i)),I!==p.n&&(p.n=Z(C,"placeholder",I,p.n)),G0!==p.s&&(p.s=Z(C,"focused",G0,p.s)),x!==p.h&&(p.h=Z(_,"fg",x,p.h)),c!==p.r&&(p.r=Z(t,"fg",c,p.r)),Z0!==p.d&&(p.d=Z(Y0,"value",Z0,p.d)),V0!==p.l&&(p.l=Z(Y0,"placeholder",V0,p.l)),H0!==p.u&&(p.u=Z(Y0,"focused",H0,p.u)),y0!==p.c&&(p.c=Z(Q0,"fg",y0,p.c)),p},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0}),M})()}function oN(f,J){return new Promise((Y)=>{f.replace(()=>b(_N,eU(J,{onSubmit:(z)=>Y(z),onCancel:()=>Y(void 0)})),()=>Y(void 0)),f.setSize("medium")})}var AQ,M4;var F4=k(()=>{h();h();h();h();h();h();h();Wf();U1();xf();G1();b1();P1();bG();AQ=["prompt","engine","branch"];M4={show:oN}});async function O4(f={}){let J=f.logTag??"orch-connect",Y=f.connect??p1,z=null;try{let G=await Y();if(!G)return iJ(J,"no daemon running \u2014 caller degrades"),null;return z=new W1(G,{...f.orchestratorOptions,channels:f.channels}),await z.init(),z}catch(G){return WY(J,G),z?.dispose(),null}}var A4=k(()=>{eY();y1();PY()});function g4(f){let[J,Y]=r(f.initial??"sidebar"),[z,G]=r(0),X=Y1();function q(j){if(G((L)=>L+1),J()===j)return;let U=X?.currentFocusedRenderable;if(U&&!U.isDestroyed)try{U.blur()}catch{}Y(j)}function Q(j){let L=(gQ.indexOf(J())+j+gQ.length)%gQ.length;q(gQ[L])}let H=new Map;function B(j){let U=H.get(j);if(!U)U=()=>J()===j,H.set(j,U);return U}let V={focused:J,is:B,setFocused:q,cycle:Q,refocusTick:z};return b(sN.Provider,{value:V,get children(){return f.children}})}var gQ,sN;var R4=k(()=>{h();h();Wf();gQ=["sidebar","workspace","files","terminal"],sN=gJ(null)});function C4(){for(let f of vY){let J=tN.get(f.id);if(!J)continue;let Y=f;Y.keys=[...J.keys],Y.hint=J.hint?{...J.hint}:void 0}}function k4(){eN((f)=>f+1)}function Q8(f){return fy.get(f)}function Jy(f){return Q8(f)?.keys??[]}function mY(f){let J=[];for(let Y in f){let z=f[Y];if(!z)continue;let G=Jy(Y);if(G.length===0){console.warn(`[kobe/keybindings] bindByIds: id="${Y}" has no chords (or doesn't exist in KobeKeymap)`);continue}G.forEach((X,q)=>J.push({key:X,cmd:z,slot:q}))}return J}var vY,tN,q8,eN,fy;var SG=k(()=>{Wf();vY=[{id:"help.open",scope:"global",keys:["f1"],category:"Global",description:"Show keybindings help",hint:{keys:"F1",label:"help",pin:"right"}},{id:"task.new",scope:"sidebar",keys:["n"],category:"Sidebar",description:"New task",hint:{keys:"n",label:"new"}},{id:"task.openEditor",scope:"global",keys:["ctrl+o"],category:"Global",description:"Open active task worktree in editor"},{id:"settings.open",scope:"global",keys:["ctrl+,"],category:"Global",description:"Open settings"},{id:"settings.open.sidebar",scope:"sidebar",keys:["s"],category:"Sidebar",description:"Open settings",hint:{keys:"s",label:"settings",status:!1}},{id:"app.quit",scope:"sidebar",keys:["q"],category:"Sidebar",description:"Quit (with confirm)",hint:{keys:"q",label:"quit",status:!1}},{id:"focus.sidebar",scope:"workspace",keys:["ctrl+q"],category:"Workspace",description:"Back to sidebar (tasks)",hint:{keys:"ctrl+q",label:"tasks"}},{id:"focus.numeric",scope:"global",keys:["ctrl+h","ctrl+j","ctrl+k","ctrl+l"],category:"Navigation",description:"Jump to pane (h=sidebar, j=workspace, k=files, l=terminal)",hint:{keys:"ctrl+hjkl",label:"focus",pin:"right",status:!1}},{id:"chat.interrupt",scope:"workspace",keys:[],category:"Workspace",description:"Interrupt current turn (esc while streaming)"},{id:"sidebar.nav",scope:"sidebar",keys:["j","k","down","up"],category:"Sidebar",description:"Move cursor up/down",hint:{keys:"j/k",label:"nav"}},{id:"sidebar.select",scope:"sidebar",keys:["return"],category:"Sidebar",description:"Open the selected task",hint:{keys:"enter",label:"select"}},{id:"sidebar.goto",scope:"sidebar",keys:["g"],category:"Sidebar",description:"Top / bottom of list (gg or shift-G)"},{id:"sidebar.rename",scope:"sidebar",keys:["r"],category:"Sidebar",description:"Rename task",hint:{keys:"r",label:"rename",status:!1}},{id:"sidebar.archive",scope:"sidebar",keys:["a"],category:"Sidebar",description:"Toggle archive",hint:{keys:"a",label:"archive",status:!1}},{id:"sidebar.localMerge",scope:"sidebar",keys:["m"],category:"Sidebar",description:"Local merge task into parent repo (Shift+M)",hint:{keys:"M",label:"merge",status:!1}},{id:"sidebar.pin",scope:"sidebar",keys:["p"],category:"Sidebar",description:"Pin / unpin task at top (Shift+P)",hint:{keys:"P",label:"pin",status:!1}},{id:"sidebar.view",scope:"sidebar",keys:["[","]"],category:"Sidebar",description:"Switch view (Working session \u2194 Archives)",hint:{keys:"[/]",label:"view",status:!1}},{id:"sidebar.sort",scope:"sidebar",keys:["t"],category:"Sidebar",description:"Switch task sort (default \u2194 recent)",hint:{keys:"t",label:"sort",status:!1}},{id:"sidebar.projectFilter",scope:"sidebar",keys:["ctrl+p"],category:"Sidebar",description:"Cycle task project filter",hint:{keys:"ctrl+p",label:"project",status:!1}},{id:"sidebar.delete",scope:"sidebar",keys:["d"],category:"Sidebar",description:"Delete task (with confirm)",hint:{keys:"d",label:"delete",status:!1}},{id:"sidebar.search.enter",scope:"sidebar",keys:["/"],category:"Sidebar",description:"Search tasks (fuzzy filter)",hint:{keys:"/",label:"search"}},{id:"sidebar.search.nav",scope:"sidebar",keys:["down","up"],category:"Sidebar",description:"Move highlight in search results"},{id:"sidebar.search.submit",scope:"sidebar",keys:["return"],category:"Sidebar",description:"Select search match and exit search"},{id:"sidebar.search.cancel",scope:"sidebar",keys:["escape"],category:"Sidebar",description:"Cancel search (restore prior selection)"},{id:"tasks.openWorktree",scope:"sidebar",keys:["o"],category:"Tasks pane",description:"Open selected task's worktree in your editor",hint:{keys:"o",label:"open wt",status:!1}},{id:"tasks.renameBranch",scope:"sidebar",keys:["b"],category:"Tasks pane",description:"Rename the selected task's git branch",hint:{keys:"b",label:"branch",status:!1}},{id:"tasks.cycleEngine",scope:"sidebar",keys:["v"],category:"Tasks pane",description:"Cycle engine vendor (claude \u2194 codex \u2194 \u2026) \u2014 applies on reopen",hint:{keys:"v",label:"engine",status:!1}},{id:"tasks.update",scope:"sidebar",keys:["u"],category:"Tasks pane",description:"Open the update page (when a new version is available)",hint:{keys:"u",label:"update",status:!1}},{id:"tasks.focusEngine",scope:"sidebar",keys:["right"],category:"Tasks pane",description:"Focus the engine pane of the current window",hint:{keys:"\u2192",label:"engine",status:!1}},{id:"tasks.toggleKeys",scope:"sidebar",keys:["?"],category:"Tasks pane",description:"Collapse / expand the keys legend",hint:{keys:"?",label:"fold keys",status:!1}},{id:"tmux.quickTask",scope:"global",keys:[],category:"Workspace (tmux)",description:"Quick new task (tmux prefix, then f)",hint:{keys:"prefix f",label:"new task",status:!1}},{id:"tmux.engineTab",scope:"global",keys:[],category:"Workspace (tmux)",description:"Open the engine in a new tab (tmux prefix, then t)",hint:{keys:"prefix t",label:"engine tab",status:!1}},{id:"tmux.layout.workspaceSplit",scope:"global",keys:[],category:"Workspace (tmux)",description:"Add a temporary workspace split (tmux prefix, then s)",hint:{keys:"prefix s",label:"split",status:!1}},{id:"tmux.layout.workspaceClose",scope:"global",keys:[],category:"Workspace (tmux)",description:"Close the focused temporary workspace split (tmux prefix, then x)",hint:{keys:"prefix x",label:"close split",status:!1}},{id:"tmux.layout.workspaceReset",scope:"global",keys:[],category:"Workspace (tmux)",description:"Close all temporary workspace splits (tmux prefix, then r)",hint:{keys:"prefix r",label:"reset splits",status:!1}},{id:"tmux.layout.tasksToggle",scope:"global",keys:[],category:"Workspace (tmux)",description:"Hide / restore the Tasks pane (tmux prefix, then a)",hint:{keys:"prefix a",label:"tasks pane",status:!1}},{id:"tmux.layout.opsToggle",scope:"global",keys:[],category:"Workspace (tmux)",description:"Toggle the file/Ops pane (tmux prefix, then o)",hint:{keys:"prefix o",label:"file pane",status:!1}},{id:"tmux.layout.terminalToggle",scope:"global",keys:[],category:"Workspace (tmux)",description:"Hide / restore the terminal pane (tmux prefix, then z)",hint:{keys:"prefix z",label:"terminal",status:!1}},{id:"tmux.layout.zenToggle",scope:"global",keys:[],category:"Workspace (tmux)",description:"Zen mode \u2014 collapse to the engine pane (tmux prefix, then space)",hint:{keys:"prefix space",label:"zen",status:!1}},{id:"chat.send",scope:"workspace",keys:[],category:"Workspace",description:"Send message (composer)",hint:{keys:"enter",label:"send"}},{id:"chat.newline",scope:"workspace",keys:[],category:"Workspace",description:"Newline in composer",hint:{keys:"shift+enter",label:"newline"}},{id:"chat.cycle-mode",scope:"workspace",keys:[],category:"Workspace",description:"Cycle permission mode (composer)",hint:{keys:"shift+tab",label:"mode"}},{id:"chat.steer",scope:"workspace",keys:[],category:"Workspace",description:"Steer (interrupt + send) \u2014 mid-stream only",hint:{keys:"ctrl+enter",label:"steer",status:!1}},{id:"chat.tab.new",scope:"workspace",keys:["ctrl+t"],category:"Workspace",description:"New chat tab",hint:{keys:"ctrl+t",label:"new tab"}},{id:"chat.fork.new",scope:"workspace",keys:["ctrl+f"],category:"Workspace",description:"Quick-fork: create child task seeded with current repo/branch/model",hint:{keys:"ctrl+f",label:"fork"}},{id:"chat.session.resume",scope:"workspace",keys:["ctrl+y"],category:"Workspace",description:"Resume a prior session in this task's worktree",hint:{keys:"ctrl+y",label:"resume",status:!1}},{id:"chat.tab.close",scope:"workspace",keys:["ctrl+w"],category:"Workspace",description:"Close chat tab",hint:{keys:"ctrl+w",label:"close tab",status:!1}},{id:"chat.tab.rename",scope:"workspace",keys:["f2"],category:"Workspace",description:"Rename active chat tab",hint:{keys:"f2",label:"rename tab",status:!1}},{id:"chat.tab.cycle-next",scope:"workspace",keys:["ctrl+]"],category:"Workspace",description:"Next chat tab",hint:{keys:"ctrl+]",label:"next tab",status:!1}},{id:"chat.tab.cycle-prev",scope:"workspace",keys:["ctrl+["],category:"Workspace",description:"Previous chat tab",hint:{keys:"ctrl+[",label:"prev tab",status:!1}},{id:"chat.question.nav",scope:"workspace",keys:["j","k","down","up"],category:"Workspace",description:"Move highlight in question picker",hint:{keys:"j/k",label:"pick",status:!1}},{id:"chat.question.toggle",scope:"workspace",keys:["space"],category:"Workspace",description:"Toggle highlighted option in question picker",hint:{keys:"space",label:"toggle",status:!1}},{id:"chat.question.submit",scope:"workspace",keys:["return"],category:"Workspace",description:"Advance / submit question picker",hint:{keys:"enter",label:"submit",status:!1}},{id:"chat.question.pick-number",scope:"workspace",keys:["1","2","3","4","5","6","7","8","9"],category:"Workspace",description:"Pick option by number in question picker",hint:{keys:"1-9",label:"pick",status:!1}},{id:"files.nav",scope:"files",keys:["j","k","down","up"],category:"Files",description:"Move cursor up/down",hint:{keys:"j/k",label:"nav"}},{id:"files.hierarchy",scope:"files",keys:["h","l","left","right"],category:"Files",description:"Collapse / expand tree level",hint:{keys:"h/l",label:"level"}},{id:"files.open",scope:"files",keys:["return"],category:"Files",description:"Open file in nvim (diff vs HEAD when changed)",hint:{keys:"enter",label:"open"}},{id:"files.tab",scope:"files",keys:["[","]"],category:"Files",description:"Switch tab (cycle All / Changes)",hint:{keys:"[/]",label:"tab",status:!1}},{id:"files.refresh",scope:"files",keys:["r"],category:"Files",description:"Refresh",hint:{keys:"r",label:"refresh",status:!1}},{id:"files.openExternal",scope:"files",keys:["o"],category:"Files",description:"Open file in system default app (audio / video / pdf preview)",hint:{keys:"o",label:"open external",status:!1}},{id:"files.mention",scope:"files",keys:["a"],category:"Files",description:"Inject @<path> mention into the engine pane",hint:{keys:"a",label:"@mention"}},{id:"files.createPR",scope:"files",keys:["p"],category:"Files",description:"Create PR from the current task",hint:{keys:"p",label:"create PR"}},{id:"terminal.scroll-up",scope:"terminal",keys:["ctrl+pageup"],category:"Terminal",description:"Scroll scrollback up",hint:{keys:"ctrl+pgup",label:"scroll",status:!1}},{id:"terminal.scroll-down",scope:"terminal",keys:["ctrl+pagedown"],category:"Terminal",description:"Scroll scrollback down"},{id:"terminal.reset",scope:"terminal",keys:["f5"],category:"Terminal",description:"Reset terminal \u2014 kill the current shell and respawn",hint:{keys:"f5",label:"reset"}},{id:"dialog.cancel",scope:"global",keys:[],category:"Dialog",description:"Close the top dialog (esc)"},{id:"dialog.newtask.tab.cycle",scope:"global",keys:[],category:"Dialog",description:"Switch New Task tab (Existing / New Repo)",hint:{keys:"ctrl+[/]",label:"tab"}}],tN=new Map(vY.map((f)=>[f.id,{keys:[...f.keys],hint:f.hint?{...f.hint}:void 0}]));[q8,eN]=r(0);fy=new Map(vY.map((f)=>[f.id,f]))});function RQ(){if(cY)return cY;let f=Mq();if(!f.exists)return cY={path:f.path,exists:!1,applied:[],warnings:[]},cY;let J=[...f.warnings],Y=Oq(f.doc,process.platform,{chordOptsFor:PB});J.push(...Y.warnings);let z=Y.entries.filter((Q)=>Q.id.startsWith("tmux.")),G=Y.entries.filter((Q)=>!Q.id.startsWith("tmux.")),X=n7(vY,G);J.push(...X.warnings);let q=[...X.applied];if(z.length>0){let Q=hB(z);J.push(...Q.warnings);for(let H of Q.overridden){if(H===SJ){q.push({id:H,keys:Q.focus.map((j)=>j?.chord??"").filter((j)=>j!==""),defaultKeys:yY});continue}let B=Q.binds[H];q.push({id:H,keys:B?[B.chord]:[],defaultKeys:[Oz[H]]});let V=vY.find((j)=>j.id===H);if(V?.hint)V.hint.keys=B?`${ZG(H)?"prefix ":""}${B.chord}`:"\u2014"}}for(let Q of J)console.warn(`[kobe/keybindings] ${Q}`);return cY={path:f.path,exists:!0,applied:q,warnings:J},cY}function N4(){return cY??RQ()}function y4(){cY=null,c7(),a7(),C4();let f=RQ();return k4(),f}var cY=null;var H8=k(()=>{xB();Rq();Aq();SG()});var Yy=250,IG,b4;var mX=k(()=>{CG();pY();$j();({use:IG,provider:b4}=KQ({name:"KV",init:()=>{let[f,J]=uJ(nf()),Y=new Set,z=null;function G(Q){if(Y.size===0)return!0;try{let H={};for(let B of Y)H[B]=f[B];return rY(H),Y.clear(),!0}catch(H){return console.error(`[kobe] kv ${Q} failed:`,H),!1}}function X(){if(z)clearTimeout(z);z=setTimeout(()=>{z=null,G("write")},Yy)}let q={get ready(){return!0},get store(){return f},signal(Q,H){if(f[Q]===void 0)J(Q,H);return[()=>q.get(Q),(B)=>q.set(Q,B)]},get(Q,H){return f[Q]??H},set(Q,H){J(Q,H),Y.add(Q),X()},flush(){if(z)clearTimeout(z),z=null;return G("flush")},clear(){for(let Q of Object.keys(f))J(Q,void 0);if(z)clearTimeout(z),z=null;Y.clear();try{L9({})}catch(Q){console.error("[kobe] kv clear write failed:",Q)}}};return q}}))});var CQ="../pulse-n3cq1btw.wav";var S4=()=>{};import{existsSync as Gy,mkdirSync as Xy}from"fs";import{tmpdir as Zy}from"os";import{basename as qy,isAbsolute as Qy,join as B8,resolve as Hy}from"path";function jy(f,J,Y){if(f==="ffplay")return[f,"-autoexit","-nodisp","-af",`volume=${Y}`,J];if(f==="mpv")return[f,"--no-video","--audio-display=no","--volume",String(Math.round(Y*100)),J];if(f==="mpg123"||f==="mpg321")return[f,"-g",String(Math.round(Y*100)),J];if(f==="mplayer")return[f,"-vo","null","-volume",String(Math.round(Y*100)),J];if(f==="afplay"||f==="omxplayer"||f==="aplay"||f==="cmdmp3")return[f,J];if(f==="play")return[f,"-v",String(Y),J];if(f==="cvlc")return[f,`--gain=${Y}`,"--play-and-exit",J];return[f,"-c",`(New-Object Media.SoundPlayer '${J.replace(/'/g,"''")}').PlaySync()`]}function Wy(){if(kQ!==void 0)return kQ;let J=(process.env.PATH??"").split(":").filter(Boolean);return kQ=By.find((Y)=>J.some((z)=>Gy(B8(z,Y))))??null,kQ}async function Vy(){return u4??=(async()=>{Xy(T4,{recursive:!0});let f=B8(T4,qy(I4)),J=Bun.file(f);if(await J.exists())return f;return await Bun.write(J,Bun.file(I4)),f})(),u4}function E4(f=0.4){let J=Wy();if(!J)return;Vy().then((Y)=>{try{Bun.spawn(jy(J,Y,f),{stdin:"ignore",stdout:"ignore",stderr:"ignore"}).unref?.()}catch{}}).catch(()=>{return})}var I4,T4,By,kQ,u4;var x4=k(()=>{S4();I4=Qy(CQ)?CQ:Hy(import.meta.dir,CQ),T4=B8(Zy(),"kobe-sfx"),By=["ffplay","mpv","mpg123","mpg321","mplayer","afplay","play","omxplayer","aplay","cmdmp3","cvlc","powershell.exe"]});function w4(f,J){return`${f}:${J}`}function P4(f){let J=IG(),[Y,z]=r([]),[G,X]=r(new Map),q=0;function Q(j){if(X((U)=>{let L=new Map(U),O=w4(j.taskId,j.tabId),M=U.get(O);if(M==="needs_input"||M==="error")return U;return L.set(O,j.kind),L}),J.get("notifications.sound.enabled",!0)!==!1){try{process.stdout.write("\x07")}catch{}E4()}if(J.get("notifications.toast.enabled",!0)!==!1){let U=++q,L={id:U,kind:j.kind,taskId:j.taskId,tabId:j.tabId,title:j.title};z((O)=>[...O,L]),setTimeout(()=>H(U),Ky)}}function H(j){z((U)=>U.filter((L)=>L.id!==j))}function B(j,U){X((L)=>{let O=w4(j,U);if(!L.has(O))return L;let M=new Map(L);return M.delete(O),M})}let V={toasts:Y,unread:G,notify:Q,dismiss:H,markRead:B};return b(h4.Provider,{value:V,get children(){return f.children}})}function NQ(){let f=u1(h4);if(!f)throw Error("useNotifications must be used within a NotificationsProvider");return f}var Ky=4500,h4;var yQ=k(()=>{h();Wf();x4();mX();h4=gJ()});function j8(f,J){if(typeof J.theme==="string"&&J.theme.length>0&&J.theme!==f.selectedTheme()){if(!f.hasTheme(J.theme))f.reloadUserThemes();if(f.hasTheme(J.theme))f.setTheme(J.theme)}if(typeof J.transparentBackground==="boolean"&&J.transparentBackground!==f.transparentBackground())f.setTransparentBackground(J.transparentBackground);if(J.focusAccent===null||typeof J.focusAccent==="string"){let Y=Dy(J.focusAccent);if(Y&&Y!==f.focusAccent())f.setFocusAccent(Y)}}function Dy(f){if(f===null)return"primary";return Uy.includes(f)?f:null}var Uy;var v4=k(()=>{Uy=["primary","success","info"]});import{readFileSync as Ly}from"fs";function m4(f){try{let J=JSON.parse(Ly(m1(),"utf8")),Y=typeof J.activeTheme==="string"&&uX(J.activeTheme)?J.activeTheme:f,z=J.transparentBackground===!0,G=typeof J.focusAccent==="string"&&yz.includes(J.focusAccent)?J.focusAccent:null,X=EX(J[bQ])?J[bQ]:NG;return{theme:Y,transparent:z,focusAccent:G,locale:X}}catch{return{theme:f,transparent:!1,focusAccent:null,locale:NG}}}var bQ="locale";var W8=k(()=>{lf();xf();yG()});function Fy(f){if(f)kZ(f);RQ();for(let{name:J,theme:Y}of UX())pj(J,Y)}function Oy(f){let J={backgroundColor:"transparent",externalOutputMode:"passthrough",exitOnCtrlC:!1,screenMode:"alternate-screen",useKittyKeyboard:{}};return f?{...J,onDestroy:f}:J}function Ay(f){let J=()=>f.children,Y=()=>f.notifications?b(P4,{get children(){return J()}}):J(),z=()=>b(p6,{get children(){return Y()}}),G=()=>f.focus?b(g4,{initial:"sidebar",get children(){return z()}}):z(),X=()=>f.kv?b(b4,{get children(){return G()}}):G();return b(V6,{mode:"dark",get theme(){return f.theme},get children(){return X()}})}function gy(f){let J=i0(),Y={selectedTheme:()=>J.selected,hasTheme:(Q)=>J.has(Q),setTheme:(Q)=>J.set(Q),reloadUserThemes:()=>{for(let{name:Q,theme:H}of UX())pj(Q,H)},transparentBackground:()=>J.transparentBackground,setTransparentBackground:(Q)=>J.setTransparentBackground(Q),focusAccent:()=>J.focusAccent,setFocusAccent:(Q)=>J.setFocusAccent(Q)};j8(Y,{theme:f.boot.theme,transparentBackground:f.boot.transparent,focusAccent:f.boot.focusAccent}),xX(f.boot.locale);let[z,G]=r(null),X=!1;f1(()=>{(async()=>{let Q=await O4({logTag:"ui-prefs",channels:["ui-prefs","keybindings"]});if(!Q)return;if(X){Q.dispose();return}G(Q)})()}),zf(()=>{let Q=z()?.uiPrefsSignal()();if(!Q)return;if(j8(Y,Q),EX(Q.locale))xX(Q.locale)});let q=null;return zf(()=>{let Q=z()?.keybindingsRevSignal()();if(Q==null)return;if(q===null||Q===q){q=Q;return}q=Q,y4()}),mf(()=>{X=!0,z()?.dispose()}),null}async function L1(f){Fy(f.logContext);let J=m4(My),Y=await f.setup(J),z=f.providers?.kv??!0,G=f.providers?.focus??!0,X=f.providers?.notifications??!1;await Z6(()=>b(Ay,{get theme(){return J.theme},kv:z,focus:G,notifications:X,get children(){return[b(gy,{boot:J}),I0(()=>Y.root())]}}),Oy(Y.onDestroy))}var My="claude";var nY=k(()=>{h();h();h();eY();Wf();A4();R4();H8();mX();yQ();xf();yq();G1();P1();v4();W8()});async function V8(f,J,Y,z,G={}){let X=Lf(J.id);if(await Hf(X))return!0;let q=J.worktreePath;if(!q)q=await f.ensureWorktree(J.id);if(!q)throw Error(`task ${J.id} has no worktree`);let{ensureSession:Q}=await Promise.resolve().then(() => (J1(),r1)),{resolveEngineLaunchInit:H}=await Promise.resolve().then(() => (GG(),EB)),B=H(Y,q,{kind:G.includeInitPrompt?"repo-init":"none"});if(!await Q({name:X,cwd:q,command:N1(z),taskId:J.id,vendor:z,repo:Y,launchInit:B}))throw Error(`failed to start tmux session for ${J.id}`);return!1}async function SQ(f,J,Y,z,G={}){await V8(f,J,Y,z,G),await f.setActiveTask(J.id).catch(()=>{});let{prepareWindowForSwitch:X}=await Promise.resolve().then(() => (J1(),r1));await X(Lf(J.id)),await h0(["switch-client","-t",`=${Lf(J.id)}`])}var K8=k(()=>{E1();Tf()});var c4={};jf(c4,{startNewTaskHost:()=>Ry,NewTaskPage:()=>IQ});function IQ(f){let{theme:J}=i0(),Y=vf();f1(()=>{z()});async function z(){let G=c1(),X=f.defaultRepo||G[0]||process.cwd(),q=kf("lastSelectedVendor")??Sf,Q=await lJ(),H=f.orchestrator,B=await OQ.show(Y,X,G,{defaultVendor:q,availableVendors:Q,discoverAdoptable:H?(j)=>H.discoverAdoptableWorktrees(j):void 0});if(!B)process.exit(0);if(af("lastSelectedVendor",B.vendor),vJ(B.repo),!H)console.error("[kobe new-task] no daemon; cannot create task"),process.exit(1);let V;try{if(B.mode==="adopt")for(let j of B.adopt)V=await H.adoptWorktree({repo:B.repo,worktreePath:j.worktreePath,branch:j.branch,vendor:B.vendor});else V=await H.createTask({repo:B.repo,baseRef:B.baseRef,vendor:B.vendor})}catch(j){console.error("[kobe new-task] task.create/adopt failed:",j),process.exit(1)}if(V)try{await SQ(H,V,B.repo,B.vendor,{includeInitPrompt:B.mode!=="adopt"})}catch(j){console.error("[kobe new-task] auto-enter failed:",j)}process.exit(0)}return(()=>{var G=W("box");return Z(G,"flexDirection","column"),Z(G,"flexGrow",1),u((X)=>Z(G,"backgroundColor",J.background,X)),G})()}async function Ry(f){await L1({setup:async()=>{let J=null;try{let Y=await UJ(),z=new W1(Y);await z.init(),J=z}catch(Y){console.error("[kobe new-task] daemon unavailable; cannot create task:",Y)}return{root:()=>b(IQ,{get defaultRepo(){return f.defaultRepo},orchestrator:J}),onDestroy:()=>{J?.dispose()}}}})}var U8=k(()=>{h();h();h();h();y1();Wf();PY();fz();Of();S1();bG();xf();nY();K8();P1()});function TQ(f,J,Y,z,G={}){if(f.length===0)return J;let X=new Map;for(let H of f)X.set(Y(H),H);let q=f.length===J.length,Q=Array(J.length);for(let H=0;H<J.length;H++){let B=J[H],V=X.get(Y(B));if(V&&z(V,B)&&(!G.samePosition||f[H]===V)){if(Q[H]=V,q&&f[H]!==V)q=!1}else Q[H]=B,q=!1}return q?f:Q}function n4(f,J){if(!f)return!0;let Y=f.toLowerCase(),z=J.toLowerCase(),G=0;for(let X=0;X<z.length&&G<Y.length;X++)if(z.charCodeAt(X)===Y.charCodeAt(G))G++;return G===Y.length}function Cy(f,J){let Y=J==="archived";return f.filter((z)=>z.archived===Y)}function D8(f,J,Y,z="default",G){let X=Cy(f,J),q=Y?.trim()??"",Q=G?o1(G):null,H=q?X.filter((M)=>n4(q,`${M.title} ${MJ(M.repo)}`)):X,B=[],V=[],j=[],U=new Set;for(let M of H){if(M.kind==="main"){let R=o1(M.repo);if(U.has(R))continue;U.add(R),B.push(M);continue}if(Q&&o1(M.repo)!==Q)continue;if(M.pinned===!0)V.push(M);else j.push(M)}if(B.sort((M,R)=>MJ(M.repo).localeCompare(MJ(R.repo))),z==="recent")V.sort(d4),j.sort(d4);let L=[],O=0;for(let M of B)L.push({kind:"task",task:M,flatIndex:O}),O++;for(let M of V)L.push({kind:"task",task:M,flatIndex:O}),O++;for(let M of j)L.push({kind:"task",task:M,flatIndex:O}),O++;return L}function d4(f,J){let Y=i4(J)-i4(f);if(Y!==0)return Y;return String(J.id).localeCompare(String(f.id))}function i4(f){let J=Date.parse(f.updatedAt||f.createdAt);return Number.isFinite(J)?J:0}function MJ(f){let J=f.split("/").filter(Boolean);return J[J.length-1]??f}function o1(f){return f.trim().replace(/[\\/]+$/,"")||f}function ky(f,J){let Y=MJ(f);if(!J.some((G)=>G!==f&&MJ(G)===Y))return Y;return f.replace(/[\\/]+$/,"").split(/[\\/]+/).slice(-2).join("/")}function l4(f,J){let Y=J==="archived",z=new Map;for(let X of f){let q=o1(X.repo),Q=z.get(q)??{repo:X.repo,count:0};if(X.kind==="main")Q.repo=X.repo;else if(X.archived===Y)Q.count+=1;z.set(q,Q)}let G=[...z.values()].map((X)=>X.repo);return[...z.values()].map((X)=>({repo:X.repo,label:ky(X.repo,G),count:X.count})).sort((X,q)=>X.label.localeCompare(q.label))}function a4(f,J){if(f.length===0)return-1;if(!J)return f[0]?.flatIndex??-1;let Y=o1(J),z=f.find((X)=>X.task.kind!=="main"&&o1(X.task.repo)===Y);if(z)return z.flatIndex;return f.find((X)=>X.task.kind==="main"&&o1(X.task.repo)===Y)?.flatIndex??f[0]?.flatIndex??-1}function L8(f){return f.map((J)=>J.task.id)}function $4(f){let J=[],Y=[];for(let z of f)if(z.task.kind==="main")J.push(z);else Y.push(z);return{projectRows:J,taskRows:Y}}function Ny(f,J){return f===J||f.id===J.id&&f.kind===J.kind&&f.title===J.title&&f.repo===J.repo&&f.branch===J.branch&&f.worktreePath===J.worktreePath&&f.status===J.status&&f.archived===J.archived&&f.pinned===J.pinned&&f.vendor===J.vendor}function r4(f,J){return TQ(f,J,(Y)=>Y.task.id,(Y,z)=>Y.flatIndex===z.flatIndex&&Ny(Y.task,z.task),{samePosition:!0})}var uQ=()=>{};var p4={};jf(p4,{startQuickTaskHost:()=>Iy});async function yy(f,J){let Y,z;if(J){let j=await C1(J,["@kobe_task","@kobe_worktree"]);Y=j["@kobe_task"]||void 0,z=j["@kobe_worktree"]||void 0}let G=(Y?f?.getTask(Y)?.repo:void 0)??c1()[0],X=G??z??process.cwd();if(!G)return{ctx:null,fallbackRepo:X};let q=await lJ(),Q=kf("lastSelectedVendor")??Sf,H=q.length===0||q.includes(Q)?Q:q[0]??Q,B=wX(V1(G))??LJ,V=q.length>0?q:[H];return{ctx:{repo:G,vendor:H,baseRef:B,engines:V},fallbackRepo:X}}async function by(f,J,Y,z,G){let X=await V8(f,J,Y,z),q=Lf(J.id),{pane:Q}=await VX(q,!X);if(Q)await KX(Q,G)}function Sy(f){let{theme:J}=i0(),Y=vf();f1(()=>{z()});async function z(){let G=f.ctx,X=await M4.show(Y,{repoLabel:MJ(G.repo),engines:G.engines,defaultVendor:G.vendor,defaultBaseRef:G.baseRef,engineLabel:Vz});if(X===void 0)process.exit(0);af("lastSelectedVendor",X.vendor),vJ(G.repo);let q=f.orchestrator;if(!q)console.error("[kobe quick-task] no daemon; cannot create task"),process.exit(1);try{let Q=await q.createTask({repo:G.repo,baseRef:X.baseRef,vendor:X.vendor});await by(q,Q,G.repo,X.vendor,X.prompt),await SQ(q,Q,G.repo,X.vendor)}catch(Q){console.error("[kobe quick-task] task.create/deliver failed:",Q),process.exit(1)}process.exit(0)}return(()=>{var G=W("box");return Z(G,"flexDirection","column"),Z(G,"flexGrow",1),u((X)=>Z(G,"backgroundColor",J.background,X)),G})()}async function Iy(f){await L1({setup:async()=>{let J=null;try{let G=await UJ(),X=new W1(G);await X.init(),J=X}catch(G){console.error("[kobe quick-task] daemon unavailable; cannot create task:",G)}let{ctx:Y,fallbackRepo:z}=await yy(J,f.session);return{root:()=>Y?b(Sy,{ctx:Y,orchestrator:J}):b(IQ,{defaultRepo:z,orchestrator:J}),onDestroy:()=>{J?.dispose()}}}})}var _4=k(()=>{h();h();h();h();y1();Wf();PY();fz();E1();Of();Tf();Cq();S1();F4();xf();DQ();nY();MQ();K8();U8();uQ();P1()});function xQ(f){let J=f.trim().split(/\s+/).pop()??"",Y=/^([CM])-(.+)$/.exec(J);if(!Y)return null;let z=Y[1]==="C"?"\u2303":"\u2325",G=Y[2]??"";return`${z}${G.length===1?G.toUpperCase():G}`}function EQ(f,J){if(f.includes("/"))return f.split("/").map((G)=>EQ(G,J)).join("/");let Y=f.toLowerCase();if(Y==="tab")return"tab";let z=uy[Y];if(z)return z;if(/^f\d{1,2}$/.test(Y))return Y.toUpperCase();if(!J)return f;if(/^[a-z]$/.test(Y))return f.toUpperCase();return f.replace(/[a-z]+/gi,(G)=>G.toUpperCase())}function TG(f,J="\u2303B"){let Y=f.trim();if(!Y)return Y;let z=/^prefix\s+(.+)$/i.exec(Y);if(z){let Q=z[1]??"";return`${J} ${Q.includes("+")?TG(Q,J):EQ(Q,!0)}`}let G=Y.split("+");if(G.length===1)return EQ(G[0]??"",!1);let X=G[G.length-1]??"";return`${G.slice(0,-1).map((Q)=>Ty[Q.toLowerCase().trim()]??Q).join("")} ${EQ(X,!0)}`}var Ty,uy;var M8=k(()=>{Ty={ctrl:"\u2303",control:"\u2303",alt:"\u2325",opt:"\u2325",option:"\u2325",shift:"\u21E7",cmd:"\u2318",command:"\u2318",meta:"\u2318",super:"\u2318"},uy={enter:"\u23CE",return:"\u23CE",esc:"\u238B",escape:"\u238B",space:"\u2423",up:"\u2191",down:"\u2193",left:"\u2190",right:"\u2192",backspace:"\u232B",delete:"\u2326",del:"\u2326",pgup:"\u21DE",pageup:"\u21DE",pgdn:"\u21DF",pagedown:"\u21DF",home:"\u2196",end:"\u2198"}});import{TextAttributes as o4}from"@opentui/core";function Ey(f){let J=new Map,Y=[];for(let z of f){if(!J.has(z.category))J.set(z.category,[]),Y.push(z.category);J.get(z.category).push(z)}return Y.map((z)=>({category:z,rows:J.get(z)}))}function uG(f={}){let J=vf(),{theme:Y}=i0(),z=()=>Ey(vY),G=()=>f.onClose?f.onClose():J.clear(),[X,q]=r("\u2303B");return f1(()=>{d0(["show-options","-g","prefix"]).then(({code:Q,stdout:H})=>{if(Q!==0)return;let B=xQ(H);if(B)q(B)})}),Uf(()=>({bindings:[{key:"?",cmd:G}]})),(()=>{var Q=W("box"),H=W("box"),B=W("text"),V=W("text"),j=W("scrollbox"),U=W("box");return D(Q,H),D(Q,j),Z(Q,"paddingLeft",2),Z(Q,"paddingRight",2),Z(Q,"gap",1),Z(Q,"flexShrink",1),D(H,B),D(H,V),Z(H,"flexDirection","row"),Z(H,"justifyContent","space-between"),Z(H,"flexShrink",0),K(B,()=>F("help.title")),Z(V,"onMouseUp",G),K(V,()=>F("help.esc")),D(j,U),Z(j,"flexShrink",1),Z(j,"flexGrow",1),Z(j,"stickyScroll",!1),Z(U,"paddingBottom",1),Z(U,"gap",1),Z(U,"paddingRight",1),K(U,b(Zf,{get each(){return z()},children:(L)=>(()=>{var O=W("box"),M=W("text");return D(O,M),Z(O,"gap",0),K(M,()=>sj("category",L.category)),K(O,b(Zf,{get each(){return L.rows},children:(R)=>{let S=R.hint?.keys??R.keys[0]??"\u2014",a=()=>S==="\u2014"?"\u2014":TG(S,X()),N=()=>(R.hint?R.keys:R.keys.slice(1)).map((g)=>TG(g,X()));return(()=>{var g=W("box"),C=W("box"),y=W("text"),_=W("box"),z0=W("text");return D(g,C),D(g,_),Z(g,"flexDirection","row"),Z(g,"gap",2),Z(g,"paddingLeft",1),D(C,y),Z(C,"width",14),K(y,a),D(_,z0),Z(_,"flexGrow",1),K(z0,()=>sj("desc",R.id)),K(g,(()=>{var t=I0(()=>N().length>0);return()=>t()?(()=>{var Y0=W("box"),T=W("text");return D(Y0,T),K(T,()=>`(${N().join(", ")})`),u((Q0)=>Z(T,"fg",Y.textMuted,Q0)),Y0})():null})(),null),u((t)=>{var{primary:Y0,text:T}=Y;return Y0!==t.e&&(t.e=Z(y,"fg",Y0,t.e)),T!==t.t&&(t.t=Z(z0,"fg",T,t.t)),t},{e:void 0,t:void 0}),g})()}}),null),u((R)=>{var S=Y.accent,a=o4.BOLD;return S!==R.e&&(R.e=Z(M,"fg",S,R.e)),a!==R.t&&(R.t=Z(M,"attributes",a,R.t)),R},{e:void 0,t:void 0}),O})()})),u((L)=>{var O=o4.BOLD,M=Y.text,R=Y.textMuted,S={trackOptions:{backgroundColor:Y.backgroundDialog,foregroundColor:Y.borderActive}};return O!==L.e&&(L.e=Z(B,"attributes",O,L.e)),M!==L.t&&(L.t=Z(B,"fg",M,L.t)),R!==L.a&&(L.a=Z(V,"fg",R,L.a)),S!==L.o&&(L.o=Z(j,"verticalScrollbarOptions",S,L.o)),L},{e:void 0,t:void 0,a:void 0,o:void 0}),Q})()}var F8=k(()=>{h();h();h();h();h();h();h();Wf();Tf();SG();xf();G1();M8();b1();P1();uG.show=(f)=>{f.replace(()=>b(uG,{}))}});import{TextAttributes as xy}from"@opentui/core";function s4(f){let J=vf(),{theme:Y}=i0(),[z,G]=r(f.currentTitle);function X(){let q=z().trim();if(!q&&!f.allowEmpty)return;f.onSubmit(q),J.clear()}return(()=>{var q=W("box"),Q=W("box"),H=W("text"),B=W("text"),V=W("box"),j=W("text"),U=W("input"),L=W("box"),O=W("text");return D(q,Q),D(q,V),D(q,L),Z(q,"paddingLeft",2),Z(q,"paddingRight",2),Z(q,"gap",1),D(Q,H),D(Q,B),Z(Q,"flexDirection","row"),Z(Q,"justifyContent","space-between"),K(H,()=>f.dialogTitle??F("common.rename.defaultTitle")),D(B,x0("esc")),Z(B,"onMouseUp",()=>f.onCancel()),D(V,j),D(V,U),Z(V,"gap",0),K(j,()=>f.fieldLabel??F("common.rename.defaultFieldLabel")),Z(U,"focused",!0),Z(U,"onInput",(M)=>G(X1(M))),Z(U,"onSubmit",()=>X()),D(L,O),Z(L,"paddingBottom",1),K(O,()=>F("common.rename.footerHint",{submitLabel:f.submitLabel??F("common.rename.defaultSubmitLabel")})),u((M)=>{var R=xy.BOLD,S=Y.text,a=Y.textMuted,N=Y.accent,g=z(),C=f.placeholder??f.currentTitle,y=Y.textMuted;return R!==M.e&&(M.e=Z(H,"attributes",R,M.e)),S!==M.t&&(M.t=Z(H,"fg",S,M.t)),a!==M.a&&(M.a=Z(B,"fg",a,M.a)),N!==M.o&&(M.o=Z(j,"fg",N,M.o)),g!==M.i&&(M.i=Z(U,"value",g,M.i)),C!==M.n&&(M.n=Z(U,"placeholder",C,M.n)),y!==M.s&&(M.s=Z(O,"fg",y,M.s)),M},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),q})()}var t4=k(()=>{h();h();h();h();h();h();h();G1();Wf();xf();P1();bG()});function wy(f,J,Y={}){return new Promise((z)=>{f.replace(()=>b(s4,{currentTitle:J,get dialogTitle(){return Y.dialogTitle},get fieldLabel(){return Y.fieldLabel},get submitLabel(){return Y.submitLabel},get placeholder(){return Y.placeholder},get allowEmpty(){return Y.allowEmpty},onSubmit:(G)=>z(G),onCancel:()=>z(void 0)}),()=>z(void 0))})}var zY;var O8=k(()=>{h();t4();zY={show:wy}});import{TextAttributes as hy}from"@opentui/core";function Py(f){if(!f)return f;return f.charAt(0).toUpperCase()+f.slice(1)}function GY(f){let J=vf(),{theme:Y}=i0(),[z,G]=uJ({active:f.initialActive??"confirm"});return Uf(()=>({bindings:[{key:"return",cmd:()=>{if(z.active==="confirm")f.onConfirm?.();if(z.active==="cancel")f.onCancel?.();J.clear()}},{key:"left",cmd:()=>G("active",z.active==="confirm"?"cancel":"confirm")},{key:"right",cmd:()=>G("active",z.active==="confirm"?"cancel":"confirm")}]})),(()=>{var X=W("box"),q=W("box"),Q=W("text"),H=W("text"),B=W("text"),V=W("box");return D(X,q),D(X,B),D(X,V),Z(X,"paddingLeft",2),Z(X,"paddingRight",2),Z(X,"paddingBottom",1),Z(X,"gap",0),D(q,Q),D(q,H),Z(q,"flexDirection","row"),Z(q,"justifyContent","space-between"),K(Q,()=>f.title),D(H,x0("esc")),Z(H,"onMouseUp",()=>J.clear()),K(B,()=>f.message),Z(V,"flexDirection","row"),Z(V,"justifyContent","flex-end"),Z(V,"paddingTop",1),K(V,b(Zf,{each:["cancel","confirm"],children:(j)=>(()=>{var U=W("box"),L=W("text");return D(U,L),Z(U,"paddingLeft",1),Z(U,"paddingRight",1),Z(U,"onMouseUp",()=>{if(j==="confirm")f.onConfirm?.();if(j==="cancel")f.onCancel?.();J.clear()}),K(L,()=>Py(j==="cancel"?f.label??F("common.cancel"):f.confirmLabel??F("common.confirm"))),u((O)=>{var M=j===z.active?Y.primary:void 0,R=j===z.active?Y.selectedListItemText:Y.textMuted;return M!==O.e&&(O.e=Z(U,"backgroundColor",M,O.e)),R!==O.t&&(O.t=Z(L,"fg",R,O.t)),O},{e:void 0,t:void 0}),U})()})),u((j)=>{var U=hy.BOLD,L=Y.text,O=Y.textMuted,M=Y.textMuted;return U!==j.e&&(j.e=Z(Q,"attributes",U,j.e)),L!==j.t&&(j.t=Z(Q,"fg",L,j.t)),O!==j.a&&(j.a=Z(H,"fg",O,j.a)),M!==j.o&&(j.o=Z(B,"fg",M,j.o)),j},{e:void 0,t:void 0,a:void 0,o:void 0}),X})()}var A8=k(()=>{h();h();h();h();h();h();h();G1();Wf();CG();xf();b1();P1();GY.show=(f,J,Y,z,G,X)=>{return new Promise((q)=>{f.replace(()=>b(GY,{title:J,message:Y,onConfirm:()=>q(!0),onCancel:()=>q(!1),label:z,confirmLabel:G,get initialActive(){return X?.initialActive}}),()=>q(void 0)),f.setSize("small")})}});import{unlinkSync as vy}from"fs";import{join as my}from"path";function e4(f){return f instanceof W1}function fD(f,J){try{f?.destroy()}catch(Y){console.error(`kobe: renderer.destroy() failed during ${J}:`,Y)}}async function g8(f,J,Y){if(await GY.show(f,"Reset UI state?","Wipes ~/.config/kobe/state.json and ~/.kobe/tasks.json, then quits kobe \u2014 relaunch for a fresh start with empty Working session / Archive lists. Worktrees on disk and Claude Code session history are NOT touched.","cancel")!==!0)return;J.clear();try{vy(my(OJ(),".kobe","tasks.json"))}catch(G){if(G.code!=="ENOENT")console.error("kobe: failed to delete tasks.json during reset:",G)}fD(Y,"reset"),process.stderr.write(`kobe: UI state reset. Relaunch kobe to start fresh.
224
- `),process.exit(0)}async function R8(f,J,Y){if(!(J instanceof W1))return;if(await GY.show(f,"Restart backend?","Quits this kobe window. Relaunch to (re)spawn the daemon. Any other attached windows keep their connection. In v0.6 the daemon's RPC surface shrank to task CRUD + subscribe, so a graceful daemon.stop RPC is no longer plumbed through the client \u2014 quit + relaunch is the path.","cancel")!==!0)return;fD(Y,"daemon restart"),process.stderr.write(`kobe: window closed. Relaunch kobe to start fresh.
225
- `),process.exit(0)}var JD=k(()=>{PY();lf();A8()});function cy(f){return`theme:${f}`}function C8(f){return`language:${f}`}function k8(f){return`accent:${f}`}function ny(f){return`engine:${f}`}function cX(f){return`surface:${f}`}function N8(f){return[...f.themeNames.map((J)=>({id:cy(J),kind:"theme",name:J})),...bz.map((J)=>({id:C8(J.id),kind:"language",locale:J.id})),{id:"transparent",kind:"transparent"},...f.focusAccentSlots.map((J)=>({id:k8(J),kind:"focusAccent",slot:J})),{id:"toast",kind:"toast"},{id:"sound",kind:"sound"},{id:"zen-keep-tasks",kind:"zenKeepTasks"},{id:cX("chattab"),kind:"surface",surface:"chattab"},{id:cX("taskpanel"),kind:"surface",surface:"taskpanel"},{id:"editor-kind",kind:"editorKind"},{id:"editor-custom",kind:"editorCustom"}]}function dy(f){return[...f.map((J)=>({id:ny(J),kind:"engine",vendor:J})),{id:"add-engine",kind:"engineAdd"}]}function iy(){return[{id:"feedback-title",kind:"feedbackTitle"},{id:"feedback-body",kind:"feedbackBody"},{id:"feedback-send",kind:"feedbackSend"}]}function nX(f){return[{id:"dev-reset",kind:"devReset"},...f?[{id:"dev-restart",kind:"devRestartDaemon"}]:[],{id:"remote-projects",kind:"devRemoteProjects"},{id:"auto-status",kind:"devAutoStatus"},{id:"dispatcher",kind:"devDispatcher"}]}function YD(f,J){switch(f){case"general":return N8(J);case"engines":return dy(J.engineList);case"accounts":case"keys":return[];case"feedback":return iy();case"dev":return nX(J.hasDaemon)}}function dX(f,J){return f.findIndex((Y)=>Y.id===J)}function wQ(f,J){return f[J]}var Iz;var y8=k(()=>{yG();Iz=[{id:"general",label:"General"},{id:"engines",label:"Engines"},{id:"accounts",label:"Accounts"},{id:"keys",label:"Keybindings"},{id:"feedback",label:"Feedback"},{id:"dev",label:"Dev"}]});import{TextAttributes as ff}from"@opentui/core";function zD(f){let{theme:J}=i0();return(()=>{var Y=W("box");return Z(Y,"flexDirection","column"),Z(Y,"flexShrink",0),Z(Y,"width",14),Z(Y,"gap",1),K(Y,b(Zf,{each:Iz,children:(z,G)=>{let X=()=>G()===f.cursor(),q=()=>X()&&f.level()==="sidebar";return(()=>{var Q=W("box"),H=W("text");return D(Q,H),Z(Q,"paddingLeft",1),Z(Q,"paddingRight",1),Z(Q,"onMouseUp",()=>f.switchSection(z.id)),Z(H,"wrapMode","none"),K(H,()=>F(`settings.sections.${z.id}`)),u((B)=>{var V=q()?J.primary:void 0,j=q()?J.selectedListItemText:X()?J.accent:J.textMuted,U=X()?ff.BOLD:void 0;return V!==B.e&&(B.e=Z(Q,"backgroundColor",V,B.e)),j!==B.t&&(B.t=Z(H,"fg",j,B.t)),U!==B.a&&(B.a=Z(H,"attributes",U,B.a)),B},{e:void 0,t:void 0,a:void 0}),Q})()}})),Y})()}function GD(f){let J=i0(),{theme:Y}=J,z=()=>N8({themeNames:f.themeNames(),focusAccentSlots:yz}),G=(C)=>dX(z(),C),X=()=>G("transparent"),q=()=>G("toast"),Q=()=>G("sound"),H=()=>G("zen-keep-tasks"),B=()=>G(cX("chattab")),V=()=>G(cX("taskpanel")),j=()=>G("editor-kind"),U=()=>G("editor-custom"),L=()=>f.bodyRow()===X(),O=()=>f.bodyRow()===q(),M=()=>f.bodyRow()===Q(),R=()=>f.bodyRow()===H(),S=()=>f.bodyRow()===B(),a=()=>f.bodyRow()===V(),N=()=>f.bodyRow()===j(),g=()=>f.bodyRow()===U();return(()=>{var C=W("box"),y=W("text"),_=W("text"),z0=W("box"),t=W("box"),Y0=W("text"),T=W("text"),Q0=W("box"),p=W("text"),D0=W("text"),g0=W("box"),$=W("text"),E=W("box"),f0=W("text"),I=W("text"),G0=W("box"),x=W("text"),c=W("text"),Z0=W("box"),V0=W("text"),H0=x0(" "),y0=W("box"),w0=W("text"),T0=x0(" "),r0=W("box"),P=W("text"),M0=W("text"),J0=W("box"),F0=W("text"),a0=x0(" "),p0=W("box"),u0=W("text"),_0=W("text"),n=W("box"),q0=W("text"),b0=x0(" "),o0=W("box"),l0=W("text"),$0=x0(" "),t0=W("box"),Rf=W("text"),gf=W("text"),o=W("box"),e=W("text"),B0=W("box"),C0=W("text");return D(C,y),D(C,_),D(C,z0),D(C,t),D(C,Q0),D(C,E),D(C,G0),D(C,r0),D(C,p0),D(C,t0),Z(C,"flexDirection","column"),Z(C,"gap",1),K(y,()=>F("settings.general.theme")),K(_,()=>F("settings.general.themeHint")),Z(z0,"flexDirection","column"),Z(z0,"gap",0),K(z0,b(Zf,{get each(){return f.themeNames()},children:(A,P0)=>{let K0=()=>f.level()==="body"&&f.bodyRow()===P0(),E0=()=>A===J.selected;return(()=>{var W0=W("box"),L0=W("text");return D(W0,L0),Z(W0,"flexDirection","row"),Z(W0,"gap",1),Z(W0,"paddingLeft",1),Z(W0,"paddingRight",1),Z(W0,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(P0()),f.setThemeCursor(P0()),f.selectTheme(A)}),Z(L0,"wrapMode","none"),K(L0,()=>E0()?"\u25CF ":" ",null),K(L0,A,null),u((R0)=>{var Jf=K0()?Y.primary:void 0,Yf=K0()?Y.selectedListItemText:E0()?Y.accent:Y.text,n0=K0()||E0()?ff.BOLD:void 0;return Jf!==R0.e&&(R0.e=Z(W0,"backgroundColor",Jf,R0.e)),Yf!==R0.t&&(R0.t=Z(L0,"fg",Yf,R0.t)),n0!==R0.a&&(R0.a=Z(L0,"attributes",n0,R0.a)),R0},{e:void 0,t:void 0,a:void 0}),W0})()}})),D(t,Y0),D(t,T),Z(t,"flexDirection","column"),Z(t,"gap",0),Z(t,"paddingTop",1),K(Y0,()=>F("settings.general.language")),Z(T,"wrapMode","word"),K(T,()=>F("settings.general.languageHint")),K(t,b(Zf,{each:bz,children:(A)=>{let P0=()=>G(C8(A.id)),K0=()=>f.level()==="body"&&f.bodyRow()===P0(),E0=()=>f.currentLocale()===A.id;return(()=>{var W0=W("box"),L0=W("text");return D(W0,L0),Z(W0,"flexDirection","row"),Z(W0,"gap",1),Z(W0,"paddingLeft",1),Z(W0,"paddingRight",1),Z(W0,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(P0()),f.selectLanguage(A.id)}),Z(L0,"wrapMode","none"),K(L0,()=>E0()?"\u25CF ":" ",null),K(L0,()=>A.label,null),u((R0)=>{var Jf=K0()?Y.primary:void 0,Yf=K0()?Y.selectedListItemText:E0()?Y.accent:Y.text,n0=K0()||E0()?ff.BOLD:void 0;return Jf!==R0.e&&(R0.e=Z(W0,"backgroundColor",Jf,R0.e)),Yf!==R0.t&&(R0.t=Z(L0,"fg",Yf,R0.t)),n0!==R0.a&&(R0.a=Z(L0,"attributes",n0,R0.a)),R0},{e:void 0,t:void 0,a:void 0}),W0})()}}),null),D(Q0,p),D(Q0,D0),D(Q0,g0),Z(Q0,"flexDirection","column"),Z(Q0,"gap",0),Z(Q0,"paddingTop",1),K(p,()=>F("settings.general.transparent")),Z(D0,"wrapMode","word"),K(D0,()=>F("settings.general.transparentHint")),D(g0,$),Z(g0,"flexDirection","row"),Z(g0,"paddingLeft",1),Z(g0,"paddingRight",1),Z(g0,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(X()),f.toggleTransparent()}),Z($,"wrapMode","none"),K($,(()=>{var A=I0(()=>!!J.transparentBackground);return()=>A()?F("settings.general.on"):F("settings.general.off")})()),D(E,f0),D(E,I),Z(E,"flexDirection","column"),Z(E,"gap",0),Z(E,"paddingTop",1),K(f0,()=>F("settings.general.focusAccent")),Z(I,"wrapMode","word"),K(I,()=>F("settings.general.focusAccentHint")),K(E,b(Zf,{each:yz,children:(A)=>{let P0=()=>G(k8(A)),K0=()=>f.level()==="body"&&f.bodyRow()===P0(),E0=()=>J.focusAccent===A;return(()=>{var W0=W("box"),L0=W("text");return D(W0,L0),Z(W0,"flexDirection","row"),Z(W0,"gap",1),Z(W0,"paddingLeft",1),Z(W0,"paddingRight",1),Z(W0,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(P0()),f.selectFocusAccent(A)}),Z(L0,"wrapMode","none"),K(L0,()=>E0()?"\u25CF ":" ",null),K(L0,()=>F(`settings.general.accent${A.charAt(0).toUpperCase()}${A.slice(1)}`),null),u((R0)=>{var Jf=K0()?Y.primary:void 0,Yf=K0()?Y.selectedListItemText:E0()?Y.focusAccent:Y.text,n0=K0()||E0()?ff.BOLD:void 0;return Jf!==R0.e&&(R0.e=Z(W0,"backgroundColor",Jf,R0.e)),Yf!==R0.t&&(R0.t=Z(L0,"fg",Yf,R0.t)),n0!==R0.a&&(R0.a=Z(L0,"attributes",n0,R0.a)),R0},{e:void 0,t:void 0,a:void 0}),W0})()}}),null),D(G0,x),D(G0,c),D(G0,Z0),D(G0,y0),Z(G0,"flexDirection","column"),Z(G0,"gap",0),Z(G0,"paddingTop",1),K(x,()=>F("settings.general.notifications")),Z(c,"wrapMode","word"),K(c,()=>F("settings.general.notificationsHint")),D(Z0,V0),Z(Z0,"flexDirection","row"),Z(Z0,"gap",1),Z(Z0,"paddingLeft",1),Z(Z0,"paddingRight",1),Z(Z0,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(q()),f.toggleToast()}),D(V0,H0),Z(V0,"wrapMode","none"),K(V0,()=>f.toastEnabled()?"[x]":"[ ]",H0),K(V0,()=>F("settings.general.toast"),null),D(y0,w0),Z(y0,"flexDirection","row"),Z(y0,"gap",1),Z(y0,"paddingLeft",1),Z(y0,"paddingRight",1),Z(y0,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(Q()),f.toggleSound()}),D(w0,T0),Z(w0,"wrapMode","none"),K(w0,()=>f.soundEnabled()?"[x]":"[ ]",T0),K(w0,()=>F("settings.general.sound"),null),D(r0,P),D(r0,M0),D(r0,J0),Z(r0,"flexDirection","column"),Z(r0,"gap",0),Z(r0,"paddingTop",1),K(P,()=>F("settings.general.zen")),Z(M0,"wrapMode","word"),K(M0,()=>F("settings.general.zenHint")),D(J0,F0),Z(J0,"flexDirection","row"),Z(J0,"gap",1),Z(J0,"paddingLeft",1),Z(J0,"paddingRight",1),Z(J0,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(H()),f.toggleZenKeepsTasks()}),D(F0,a0),Z(F0,"wrapMode","none"),K(F0,()=>f.zenKeepsTasks()?"[x]":"[ ]",a0),K(F0,()=>F("settings.general.zenKeepTasks"),null),D(p0,u0),D(p0,_0),D(p0,n),D(p0,o0),Z(p0,"flexDirection","column"),Z(p0,"gap",0),Z(p0,"paddingTop",1),K(u0,()=>F("settings.general.surface")),Z(_0,"wrapMode","word"),K(_0,()=>F("settings.general.surfaceHint")),D(n,q0),Z(n,"flexDirection","row"),Z(n,"gap",1),Z(n,"paddingLeft",1),Z(n,"paddingRight",1),Z(n,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(B()),f.selectSurface("chattab")}),D(q0,b0),Z(q0,"wrapMode","none"),K(q0,()=>f.settingsSurface()==="chattab"?"[x]":"[ ]",b0),K(q0,()=>F("settings.general.surfaceChattab"),null),D(o0,l0),Z(o0,"flexDirection","row"),Z(o0,"gap",1),Z(o0,"paddingLeft",1),Z(o0,"paddingRight",1),Z(o0,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(V()),f.selectSurface("taskpanel")}),D(l0,$0),Z(l0,"wrapMode","none"),K(l0,()=>f.settingsSurface()==="taskpanel"?"[x]":"[ ]",$0),K(l0,()=>F("settings.general.surfaceTaskpanel"),null),D(t0,Rf),D(t0,gf),D(t0,o),D(t0,B0),Z(t0,"flexDirection","column"),Z(t0,"gap",0),Z(t0,"paddingTop",1),K(Rf,()=>F("settings.general.editor")),Z(gf,"wrapMode","word"),K(gf,()=>F("settings.general.editorHint")),D(o,e),Z(o,"flexDirection","row"),Z(o,"gap",1),Z(o,"paddingLeft",1),Z(o,"paddingRight",1),Z(o,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(j()),f.cycleEditorKind()}),Z(e,"wrapMode","none"),K(e,()=>F("settings.general.editorRow",{kind:f.editorKind()})),D(B0,C0),Z(B0,"flexDirection","row"),Z(B0,"gap",1),Z(B0,"paddingLeft",1),Z(B0,"paddingRight",1),Z(B0,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(U()),f.editEditorCustom()}),Z(C0,"wrapMode","none"),K(C0,()=>F("settings.general.editorCustom",{cmd:f.editorCustomCommand().trim()||F("settings.general.editorCustomUnset")})),u((A)=>{var P0=Y.text,K0=ff.BOLD,E0=Y.textMuted,W0=Y.text,L0=ff.BOLD,R0=Y.textMuted,Jf=Y.text,Yf=ff.BOLD,n0=Y.textMuted,yf=L()?Y.primary:void 0,k0=L()?Y.selectedListItemText:J.transparentBackground?Y.accent:Y.textMuted,wf=ff.BOLD,v=Y.text,A0=ff.BOLD,Bf=Y.textMuted,Ff=Y.text,Qf=ff.BOLD,d=Y.textMuted,s=O()?Y.primary:void 0,S0=O()?Y.selectedListItemText:f.toastEnabled()?Y.accent:Y.textMuted,N0=ff.BOLD,Z1=M()?Y.primary:void 0,K1=M()?Y.selectedListItemText:f.soundEnabled()?Y.accent:Y.textMuted,tf=ff.BOLD,v1=Y.text,xJ=ff.BOLD,M1=Y.textMuted,wJ=R()?Y.primary:void 0,XY=R()?Y.selectedListItemText:f.zenKeepsTasks()?Y.accent:Y.textMuted,m=ff.BOLD,i=Y.text,l=ff.BOLD,w=Y.textMuted,m0=S()?Y.primary:void 0,v0=S()?Y.selectedListItemText:f.settingsSurface()==="chattab"?Y.accent:Y.textMuted,O0=ff.BOLD,c0=a()?Y.primary:void 0,qf=a()?Y.selectedListItemText:f.settingsSurface()==="taskpanel"?Y.accent:Y.textMuted,Df=ff.BOLD,q1=Y.text,s1=ff.BOLD,ZY=Y.textMuted,o8=N()?Y.primary:void 0,s8=N()?Y.selectedListItemText:Y.accent,t8=ff.BOLD,e8=g()?Y.primary:void 0,f9=g()?Y.selectedListItemText:f.editorKind()==="custom"?Y.text:Y.textMuted;return P0!==A.e&&(A.e=Z(y,"fg",P0,A.e)),K0!==A.t&&(A.t=Z(y,"attributes",K0,A.t)),E0!==A.a&&(A.a=Z(_,"fg",E0,A.a)),W0!==A.o&&(A.o=Z(Y0,"fg",W0,A.o)),L0!==A.i&&(A.i=Z(Y0,"attributes",L0,A.i)),R0!==A.n&&(A.n=Z(T,"fg",R0,A.n)),Jf!==A.s&&(A.s=Z(p,"fg",Jf,A.s)),Yf!==A.h&&(A.h=Z(p,"attributes",Yf,A.h)),n0!==A.r&&(A.r=Z(D0,"fg",n0,A.r)),yf!==A.d&&(A.d=Z(g0,"backgroundColor",yf,A.d)),k0!==A.l&&(A.l=Z($,"fg",k0,A.l)),wf!==A.u&&(A.u=Z($,"attributes",wf,A.u)),v!==A.c&&(A.c=Z(f0,"fg",v,A.c)),A0!==A.w&&(A.w=Z(f0,"attributes",A0,A.w)),Bf!==A.m&&(A.m=Z(I,"fg",Bf,A.m)),Ff!==A.f&&(A.f=Z(x,"fg",Ff,A.f)),Qf!==A.y&&(A.y=Z(x,"attributes",Qf,A.y)),d!==A.g&&(A.g=Z(c,"fg",d,A.g)),s!==A.p&&(A.p=Z(Z0,"backgroundColor",s,A.p)),S0!==A.b&&(A.b=Z(V0,"fg",S0,A.b)),N0!==A.T&&(A.T=Z(V0,"attributes",N0,A.T)),Z1!==A.A&&(A.A=Z(y0,"backgroundColor",Z1,A.A)),K1!==A.O&&(A.O=Z(w0,"fg",K1,A.O)),tf!==A.I&&(A.I=Z(w0,"attributes",tf,A.I)),v1!==A.S&&(A.S=Z(P,"fg",v1,A.S)),xJ!==A.W&&(A.W=Z(P,"attributes",xJ,A.W)),M1!==A.C&&(A.C=Z(M0,"fg",M1,A.C)),wJ!==A.B&&(A.B=Z(J0,"backgroundColor",wJ,A.B)),XY!==A.v&&(A.v=Z(F0,"fg",XY,A.v)),m!==A.k&&(A.k=Z(F0,"attributes",m,A.k)),i!==A.x&&(A.x=Z(u0,"fg",i,A.x)),l!==A.j&&(A.j=Z(u0,"attributes",l,A.j)),w!==A.q&&(A.q=Z(_0,"fg",w,A.q)),m0!==A.z&&(A.z=Z(n,"backgroundColor",m0,A.z)),v0!==A.P&&(A.P=Z(q0,"fg",v0,A.P)),O0!==A.H&&(A.H=Z(q0,"attributes",O0,A.H)),c0!==A.F&&(A.F=Z(o0,"backgroundColor",c0,A.F)),qf!==A.M&&(A.M=Z(l0,"fg",qf,A.M)),Df!==A.D&&(A.D=Z(l0,"attributes",Df,A.D)),q1!==A.R&&(A.R=Z(Rf,"fg",q1,A.R)),s1!==A.E&&(A.E=Z(Rf,"attributes",s1,A.E)),ZY!==A.L&&(A.L=Z(gf,"fg",ZY,A.L)),o8!==A.N&&(A.N=Z(o,"backgroundColor",o8,A.N)),s8!==A.G&&(A.G=Z(e,"fg",s8,A.G)),t8!==A.U&&(A.U=Z(e,"attributes",t8,A.U)),e8!==A.K&&(A.K=Z(B0,"backgroundColor",e8,A.K)),f9!==A.V&&(A.V=Z(C0,"fg",f9,A.V)),A},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0,w:void 0,m:void 0,f:void 0,y:void 0,g:void 0,p:void 0,b:void 0,T:void 0,A:void 0,O:void 0,I:void 0,S:void 0,W:void 0,C:void 0,B:void 0,v:void 0,k:void 0,x:void 0,j:void 0,q:void 0,z:void 0,P:void 0,H:void 0,F:void 0,M:void 0,D:void 0,R:void 0,E:void 0,L:void 0,N:void 0,G:void 0,U:void 0,K:void 0,V:void 0}),C})()}function XD(f){let{theme:J}=i0(),Y=()=>f.vendors.length;return(()=>{var z=W("box"),G=W("text"),X=W("text"),q=W("box"),Q=W("box"),H=W("text");return D(z,G),D(z,X),D(z,q),Z(z,"flexDirection","column"),Z(z,"gap",1),K(G,()=>F("settings.engines.title")),Z(X,"wrapMode","word"),K(X,()=>F("settings.engines.hint")),D(q,Q),Z(q,"flexDirection","column"),Z(q,"gap",0),K(q,b(Zf,{get each(){return f.vendors},children:(B,V)=>{let j=()=>f.level()==="body"&&f.bodyRow()===V();return(()=>{var U=W("box"),L=W("text"),O=W("text"),M=W("text");return D(U,L),D(U,O),D(U,M),Z(U,"flexDirection","row"),Z(U,"gap",1),Z(U,"paddingLeft",1),Z(U,"paddingRight",1),Z(U,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(V()),f.editEngine(B)}),Z(L,"wrapMode","none"),K(L,()=>f.isDefaultEngine(B)?"\u25CF":" "),Z(O,"wrapMode","none"),K(O,()=>f.displayName(B)),Z(M,"wrapMode","none"),K(M,()=>f.commandText(B),null),K(M,(()=>{var R=I0(()=>!!f.isDefault(B));return()=>R()?F("settings.engines.defaultTag"):I0(()=>!!f.isCustom(B))()?F("settings.engines.customTag"):""})(),null),u((R)=>{var S=j()?J.primary:void 0,a=j()?J.selectedListItemText:J.accent,N=ff.BOLD,g=j()?J.selectedListItemText:J.text,C=ff.BOLD,y=j()?J.selectedListItemText:f.isDefault(B)?J.textMuted:J.accent;return S!==R.e&&(R.e=Z(U,"backgroundColor",S,R.e)),a!==R.t&&(R.t=Z(L,"fg",a,R.t)),N!==R.a&&(R.a=Z(L,"attributes",N,R.a)),g!==R.o&&(R.o=Z(O,"fg",g,R.o)),C!==R.i&&(R.i=Z(O,"attributes",C,R.i)),y!==R.n&&(R.n=Z(M,"fg",y,R.n)),R},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),U})()}}),Q),D(Q,H),Z(Q,"flexDirection","row"),Z(Q,"paddingLeft",1),Z(Q,"paddingRight",1),Z(Q,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(Y()),f.onAddEngine()}),Z(H,"wrapMode","none"),K(H,()=>F("settings.engines.addEngine")),u((B)=>{var V=J.text,j=ff.BOLD,U=J.textMuted,L=f.level()==="body"&&f.bodyRow()===Y()?J.primary:void 0,O=f.level()==="body"&&f.bodyRow()===Y()?J.selectedListItemText:J.primary;return V!==B.e&&(B.e=Z(G,"fg",V,B.e)),j!==B.t&&(B.t=Z(G,"attributes",j,B.t)),U!==B.a&&(B.a=Z(X,"fg",U,B.a)),L!==B.o&&(B.o=Z(Q,"backgroundColor",L,B.o)),O!==B.i&&(B.i=Z(H,"fg",O,B.i)),B},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),z})()}function ZD(f){let{theme:J}=i0(),Y=(z)=>z.binary.found?`Binary: ${z.binary.path}`:`Binary: ${z.binary.error}`;return(()=>{var z=W("box"),G=W("text"),X=W("text"),q=W("box"),Q=W("text"),H=W("box"),B=W("text"),V=W("box"),j=W("text");return D(z,G),D(z,X),D(z,q),D(z,H),D(z,V),Z(z,"flexDirection","column"),Z(z,"gap",1),K(G,()=>F("settings.accounts.title")),Z(X,"wrapMode","word"),K(X,()=>F("settings.accounts.hint")),D(q,Q),Z(q,"flexDirection","column"),Z(q,"gap",0),D(Q,x0("claude-code")),K(q,b(X0,{get when(){return f.claudeStatus()===null},get children(){var U=W("text");return K(U,()=>F("settings.accounts.checking")),u((L)=>Z(U,"fg",J.textMuted,L)),U}}),null),K(q,b(X0,{get when(){return f.claudeStatus()},children:(U)=>(()=>{var L=W("box"),O=W("text");return D(L,O),Z(L,"flexDirection","column"),Z(L,"gap",0),Z(O,"wrapMode","word"),K(O,()=>Y(U())),K(L,()=>{let M=U().account;if(M.kind==="oauth"){let R=[M.organization,M.billingType].filter((S)=>!!S).join(" \xB7 ");return(()=>{var S=W("text");return Z(S,"wrapMode","word"),K(S,()=>F("settings.accounts.loggedIn",{email:M.email}),null),K(S,R?` (${R})`:"",null),u((a)=>Z(S,"fg",J.success,a)),S})()}return(()=>{var R=W("text");return K(R,()=>F("settings.accounts.notLoggedIn")),u((S)=>Z(R,"fg",J.textMuted,S)),R})()},null),K(L,b(X0,{get when(){return U().accountError},children:(M)=>(()=>{var R=W("text");return Z(R,"wrapMode","word"),K(R,()=>`! ${M()}`),u((S)=>Z(R,"fg",J.warning,S)),R})()}),null),u((M)=>Z(O,"fg",U().binary.found?J.textMuted:J.warning,M)),L})()}),null),D(H,B),Z(H,"flexDirection","column"),Z(H,"gap",0),D(B,x0("codex")),K(H,b(X0,{get when(){return f.codexStatus()===null},get children(){var U=W("text");return K(U,()=>F("settings.accounts.checking")),u((L)=>Z(U,"fg",J.textMuted,L)),U}}),null),K(H,b(X0,{get when(){return f.codexStatus()},children:(U)=>(()=>{var L=W("box"),O=W("text");return D(L,O),Z(L,"flexDirection","column"),Z(L,"gap",0),Z(O,"wrapMode","word"),K(O,()=>Y(U())),K(L,()=>{let M=U().account;if(M.kind==="chatgpt")return(()=>{var R=W("text");return Z(R,"wrapMode","word"),K(R,()=>F("settings.accounts.chatgptLogin",{email:M.email}),null),K(R,(()=>{var S=I0(()=>!!M.plan);return()=>S()?` (${M.plan})`:""})(),null),u((S)=>Z(R,"fg",J.success,S)),R})();if(M.kind==="apikey")return(()=>{var R=W("text");return K(R,()=>F("settings.accounts.apiKeyConfigured")),u((S)=>Z(R,"fg",J.success,S)),R})();return(()=>{var R=W("text");return K(R,()=>F("settings.accounts.notLoggedIn")),u((S)=>Z(R,"fg",J.textMuted,S)),R})()},null),K(L,b(X0,{get when(){return U().accountError},children:(M)=>(()=>{var R=W("text");return Z(R,"wrapMode","word"),K(R,()=>`! ${M()}`),u((S)=>Z(R,"fg",J.warning,S)),R})()}),null),u((M)=>Z(O,"fg",U().binary.found?J.textMuted:J.warning,M)),L})()}),null),D(V,j),Z(V,"flexDirection","column"),Z(V,"gap",0),D(j,x0("copilot")),K(V,b(X0,{get when(){return f.copilotStatus()===null},get children(){var U=W("text");return K(U,()=>F("settings.accounts.checking")),u((L)=>Z(U,"fg",J.textMuted,L)),U}}),null),K(V,b(X0,{get when(){return f.copilotStatus()},children:(U)=>(()=>{var L=W("box"),O=W("text");return D(L,O),Z(L,"flexDirection","column"),Z(L,"gap",0),Z(O,"wrapMode","word"),K(O,()=>Y(U())),K(L,()=>{let M=U().account;if(M.kind==="token")return(()=>{var R=W("text");return K(R,()=>F("settings.accounts.tokenConfigured",{source:M.source})),u((S)=>Z(R,"fg",J.success,S)),R})();if(M.kind==="oauth")return(()=>{var R=W("text");return K(R,()=>F("settings.accounts.copilotDetected")),u((S)=>Z(R,"fg",J.success,S)),R})();return(()=>{var R=W("text");return K(R,()=>F("settings.accounts.notLoggedIn")),u((S)=>Z(R,"fg",J.textMuted,S)),R})()},null),K(L,b(X0,{get when(){return U().accountError},children:(M)=>(()=>{var R=W("text");return Z(R,"wrapMode","word"),K(R,()=>`! ${M()}`),u((S)=>Z(R,"fg",J.warning,S)),R})()}),null),u((M)=>Z(O,"fg",U().binary.found?J.textMuted:J.warning,M)),L})()}),null),u((U)=>{var L=J.text,O=ff.BOLD,M=J.textMuted,R=J.text,S=ff.BOLD,a=J.text,N=ff.BOLD,g=J.text,C=ff.BOLD;return L!==U.e&&(U.e=Z(G,"fg",L,U.e)),O!==U.t&&(U.t=Z(G,"attributes",O,U.t)),M!==U.a&&(U.a=Z(X,"fg",M,U.a)),R!==U.o&&(U.o=Z(Q,"fg",R,U.o)),S!==U.i&&(U.i=Z(Q,"attributes",S,U.i)),a!==U.n&&(U.n=Z(B,"fg",a,U.n)),N!==U.s&&(U.s=Z(B,"attributes",N,U.s)),g!==U.h&&(U.h=Z(j,"fg",g,U.h)),C!==U.r&&(U.r=Z(j,"attributes",C,U.r)),U},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0}),z})()}function qD(f){let{theme:J}=i0(),Y=()=>f.level()==="body",z=()=>Y()&&f.bodyRow()===0,G=()=>Y()&&f.bodyRow()===1,X=()=>Y()&&f.bodyRow()===2,q=(H)=>H?J.primary:J.textMuted,Q=(H)=>H?ff.BOLD|ff.UNDERLINE:void 0;return(()=>{var H=W("box"),B=W("text"),V=W("text"),j=W("box"),U=W("box"),L=W("text"),O=W("input"),M=W("box"),R=W("text"),S=W("input"),a=W("box"),N=W("text");return D(H,B),D(H,V),D(H,j),Z(H,"flexDirection","column"),Z(H,"gap",1),K(B,()=>F("settings.feedback.title")),Z(V,"wrapMode","word"),K(V,()=>F("settings.feedback.hint")),D(j,U),D(j,M),D(j,a),Z(j,"flexDirection","column"),Z(j,"gap",1),D(U,L),D(U,O),Z(U,"gap",0),K(L,()=>F("settings.feedback.titleLabel")),Z(O,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(0)}),Z(O,"onInput",(g)=>f.setTitle(X1(g))),Z(O,"onSubmit",()=>f.onTitleSubmit()),D(M,R),D(M,S),Z(M,"gap",0),K(R,()=>F("settings.feedback.descriptionLabel")),Z(S,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(1)}),Z(S,"onInput",(g)=>f.setBody(X1(g))),Z(S,"onSubmit",()=>f.onBodySubmit()),D(a,N),Z(a,"flexDirection","row"),Z(a,"paddingLeft",1),Z(a,"paddingRight",1),Z(a,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(2),f.submit()}),K(N,()=>F("settings.feedback.send")),K(H,b(X0,{get when(){return f.status()},get children(){var g=W("text");return Z(g,"wrapMode","word"),K(g,()=>f.status()),u((C)=>Z(g,"fg",f.status().startsWith("error:")?J.warning:J.success,C)),g}}),null),u((g)=>{var C=J.text,y=ff.BOLD,_=J.textMuted,z0=q(z()),t=Q(z()),Y0=f.title(),T=F("settings.feedback.titlePlaceholder"),Q0=z(),p=q(G()),D0=Q(G()),g0=f.body(),$=F("settings.feedback.descriptionPlaceholder"),E=G(),f0=X()?J.primary:J.backgroundElement,I=X()?J.selectedListItemText:J.accent,G0=ff.BOLD;return C!==g.e&&(g.e=Z(B,"fg",C,g.e)),y!==g.t&&(g.t=Z(B,"attributes",y,g.t)),_!==g.a&&(g.a=Z(V,"fg",_,g.a)),z0!==g.o&&(g.o=Z(L,"fg",z0,g.o)),t!==g.i&&(g.i=Z(L,"attributes",t,g.i)),Y0!==g.n&&(g.n=Z(O,"value",Y0,g.n)),T!==g.s&&(g.s=Z(O,"placeholder",T,g.s)),Q0!==g.h&&(g.h=Z(O,"focused",Q0,g.h)),p!==g.r&&(g.r=Z(R,"fg",p,g.r)),D0!==g.d&&(g.d=Z(R,"attributes",D0,g.d)),g0!==g.l&&(g.l=Z(S,"value",g0,g.l)),$!==g.u&&(g.u=Z(S,"placeholder",$,g.u)),E!==g.c&&(g.c=Z(S,"focused",E,g.c)),f0!==g.w&&(g.w=Z(a,"backgroundColor",f0,g.w)),I!==g.m&&(g.m=Z(N,"fg",I,g.m)),G0!==g.f&&(g.f=Z(N,"attributes",G0,g.f)),g},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0,w:void 0,m:void 0,f:void 0}),H})()}function QD(f){let{theme:J}=i0(),Y=()=>f.level()==="body"&&f.bodyRow()===0,z=()=>f.level()==="body"&&f.bodyRow()===1,G=()=>dX(nX(f.hasDaemon),"remote-projects"),X=()=>f.level()==="body"&&f.bodyRow()===G(),q=()=>dX(nX(f.hasDaemon),"auto-status"),Q=()=>f.level()==="body"&&f.bodyRow()===q(),H=()=>dX(nX(f.hasDaemon),"dispatcher"),B=()=>f.level()==="body"&&f.bodyRow()===H();return(()=>{var V=W("box"),j=W("text"),U=W("text"),L=W("box"),O=W("text"),M=W("text"),R=W("box"),S=W("text"),a=W("text"),N=W("box"),g=W("text"),C=W("text"),y=W("box"),_=W("text"),z0=W("text"),t=W("box"),Y0=W("text");return D(V,j),D(V,U),D(V,L),D(V,M),D(V,R),Z(V,"flexDirection","column"),Z(V,"gap",1),K(j,()=>F("settings.dev.reset")),Z(U,"wrapMode","word"),K(U,()=>F("settings.dev.resetHint")),D(L,O),Z(L,"flexDirection","row"),Z(L,"paddingLeft",1),Z(L,"paddingRight",1),Z(L,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(0),f.confirmReset()}),K(O,()=>F("settings.dev.resetButton")),K(V,b(X0,{get when(){return f.hasDaemon},get children(){var T=W("box"),Q0=W("text"),p=W("text"),D0=W("box"),g0=W("text");return D(T,Q0),D(T,p),D(T,D0),Z(T,"flexDirection","column"),Z(T,"gap",0),Z(T,"paddingTop",1),K(Q0,()=>F("settings.dev.restart")),Z(p,"wrapMode","word"),K(p,()=>F("settings.dev.restartHint")),D(D0,g0),Z(D0,"flexDirection","row"),Z(D0,"paddingLeft",1),Z(D0,"paddingRight",1),Z(D0,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(1),f.confirmRestartDaemon()}),K(g0,()=>F("settings.dev.restartButton")),u(($)=>{var E=J.text,f0=ff.BOLD,I=J.textMuted,G0=z()?J.primary:J.backgroundElement,x=z()?J.selectedListItemText:J.accent,c=ff.BOLD;return E!==$.e&&($.e=Z(Q0,"fg",E,$.e)),f0!==$.t&&($.t=Z(Q0,"attributes",f0,$.t)),I!==$.a&&($.a=Z(p,"fg",I,$.a)),G0!==$.o&&($.o=Z(D0,"backgroundColor",G0,$.o)),x!==$.i&&($.i=Z(g0,"fg",x,$.i)),c!==$.n&&($.n=Z(g0,"attributes",c,$.n)),$},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),T}}),M),Z(M,"wrapMode","word"),K(M,()=>F("settings.dev.doctorHint")),D(R,S),D(R,a),D(R,N),D(R,C),D(R,y),D(R,z0),D(R,t),Z(R,"flexDirection","column"),Z(R,"gap",0),Z(R,"paddingTop",1),K(S,()=>F("settings.dev.experimental")),Z(a,"wrapMode","word"),K(a,()=>F("settings.dev.remoteHint")),D(N,g),Z(N,"flexDirection","row"),Z(N,"paddingLeft",1),Z(N,"paddingRight",1),Z(N,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(G()),f.toggleRemoteProjects()}),K(g,(()=>{var T=I0(()=>!!f.remoteProjectsEnabled());return()=>T()?F("settings.dev.remoteOn"):F("settings.dev.remoteOff")})()),Z(C,"wrapMode","word"),K(C,()=>F("settings.dev.autoStatusHint")),D(y,_),Z(y,"flexDirection","row"),Z(y,"paddingLeft",1),Z(y,"paddingRight",1),Z(y,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(q()),f.toggleAutoStatus()}),K(_,(()=>{var T=I0(()=>!!f.autoStatusEnabled());return()=>T()?F("settings.dev.autoStatusOn"):F("settings.dev.autoStatusOff")})()),Z(z0,"wrapMode","word"),K(z0,()=>F("settings.dev.dispatcherHint")),D(t,Y0),Z(t,"flexDirection","row"),Z(t,"paddingLeft",1),Z(t,"paddingRight",1),Z(t,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(H()),f.toggleDispatcher()}),K(Y0,(()=>{var T=I0(()=>!!f.dispatcherEnabled());return()=>T()?F("settings.dev.dispatcherOn"):F("settings.dev.dispatcherOff")})()),u((T)=>{var Q0=J.text,p=ff.BOLD,D0=J.textMuted,g0=Y()?J.primary:J.backgroundElement,$=Y()?J.selectedListItemText:J.warning,E=ff.BOLD,f0=J.textMuted,I=J.text,G0=ff.BOLD,x=J.textMuted,c=X()?J.primary:J.backgroundElement,Z0=X()?J.selectedListItemText:J.text,V0=f.remoteProjectsEnabled()?ff.BOLD:void 0,H0=J.textMuted,y0=Q()?J.primary:J.backgroundElement,w0=Q()?J.selectedListItemText:J.text,T0=f.autoStatusEnabled()?ff.BOLD:void 0,r0=J.textMuted,P=B()?J.primary:J.backgroundElement,M0=B()?J.selectedListItemText:J.text,J0=f.dispatcherEnabled()?ff.BOLD:void 0;return Q0!==T.e&&(T.e=Z(j,"fg",Q0,T.e)),p!==T.t&&(T.t=Z(j,"attributes",p,T.t)),D0!==T.a&&(T.a=Z(U,"fg",D0,T.a)),g0!==T.o&&(T.o=Z(L,"backgroundColor",g0,T.o)),$!==T.i&&(T.i=Z(O,"fg",$,T.i)),E!==T.n&&(T.n=Z(O,"attributes",E,T.n)),f0!==T.s&&(T.s=Z(M,"fg",f0,T.s)),I!==T.h&&(T.h=Z(S,"fg",I,T.h)),G0!==T.r&&(T.r=Z(S,"attributes",G0,T.r)),x!==T.d&&(T.d=Z(a,"fg",x,T.d)),c!==T.l&&(T.l=Z(N,"backgroundColor",c,T.l)),Z0!==T.u&&(T.u=Z(g,"fg",Z0,T.u)),V0!==T.c&&(T.c=Z(g,"attributes",V0,T.c)),H0!==T.w&&(T.w=Z(C,"fg",H0,T.w)),y0!==T.m&&(T.m=Z(y,"backgroundColor",y0,T.m)),w0!==T.f&&(T.f=Z(_,"fg",w0,T.f)),T0!==T.y&&(T.y=Z(_,"attributes",T0,T.y)),r0!==T.g&&(T.g=Z(z0,"fg",r0,T.g)),P!==T.p&&(T.p=Z(t,"backgroundColor",P,T.p)),M0!==T.b&&(T.b=Z(Y0,"fg",M0,T.b)),J0!==T.T&&(T.T=Z(Y0,"attributes",J0,T.T)),T},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0,w:void 0,m:void 0,f:void 0,y:void 0,g:void 0,p:void 0,b:void 0,T:void 0}),V})()}function HD(){let{theme:f}=i0(),J=N4(),Y=Object.keys(wB).sort();return(()=>{var z=W("box"),G=W("text"),X=W("text"),q=W("box"),Q=W("text"),H=W("text"),B=W("text"),V=W("text");return D(z,G),D(z,X),D(z,q),D(z,B),D(z,V),Z(z,"flexDirection","column"),Z(z,"gap",1),K(G,()=>F("settings.keybindings.title")),Z(X,"wrapMode","word"),K(X,()=>F("settings.keybindings.hint")),D(q,Q),D(q,H),Z(q,"flexDirection","column"),Z(q,"gap",0),K(Q,()=>F("settings.keybindings.configFile")),Z(H,"wrapMode","word"),K(H,()=>J.path,null),K(H,(()=>{var j=I0(()=>!!J.exists);return()=>j()?"":F("settings.keybindings.notCreated")})(),null),K(z,b(X0,{get when(){return!J.exists},get children(){var j=W("box"),U=W("text"),L=W("text"),O=W("text"),M=W("text"),R=W("text"),S=W("text"),a=W("text"),N=W("text"),g=W("text"),C=W("text");return D(j,U),D(j,L),D(j,O),D(j,M),D(j,R),D(j,S),D(j,a),D(j,N),D(j,g),D(j,C),Z(j,"flexDirection","column"),Z(j,"gap",0),K(U,()=>F("settings.keybindings.example")),D(L,x0("bindings:")),D(O,x0(" chat.fork.new: ctrl+g # string = one chord")),D(M,x0(" sidebar.select: [enter] # list = several chords")),D(R,x0(" files.createPR: null # null = unbind")),D(S,x0(" tmux.tab.new: ctrl+y # tmux session key (see below)")),D(a,x0(" tmux.layout.workspaceSplit: g # prefix g")),D(N,x0("darwin: # platform overlay (also: linux)")),D(g,x0(" bindings:")),D(C,x0(" palette.open: [cmd+p, ctrl+p]")),u((y)=>{var _=f.text,z0=ff.BOLD,t=f.textMuted,Y0=f.textMuted,T=f.textMuted,Q0=f.textMuted,p=f.textMuted,D0=f.textMuted,g0=f.textMuted,$=f.textMuted,E=f.textMuted;return _!==y.e&&(y.e=Z(U,"fg",_,y.e)),z0!==y.t&&(y.t=Z(U,"attributes",z0,y.t)),t!==y.a&&(y.a=Z(L,"fg",t,y.a)),Y0!==y.o&&(y.o=Z(O,"fg",Y0,y.o)),T!==y.i&&(y.i=Z(M,"fg",T,y.i)),Q0!==y.n&&(y.n=Z(R,"fg",Q0,y.n)),p!==y.s&&(y.s=Z(S,"fg",p,y.s)),D0!==y.h&&(y.h=Z(a,"fg",D0,y.h)),g0!==y.r&&(y.r=Z(N,"fg",g0,y.r)),$!==y.d&&(y.d=Z(g,"fg",$,y.d)),E!==y.l&&(y.l=Z(C,"fg",E,y.l)),y},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0}),j}}),B),K(z,b(X0,{get when(){return J.exists},get children(){var j=W("box"),U=W("text");return D(j,U),Z(j,"flexDirection","column"),Z(j,"gap",0),K(U,()=>F("settings.keybindings.overridesApplied")),K(j,b(X0,{get when(){return J.applied.length===0},get children(){var L=W("text");return K(L,()=>F("settings.keybindings.none")),u((O)=>Z(L,"fg",f.textMuted,O)),L}}),null),K(j,b(Zf,{get each(){return J.applied},children:(L)=>(()=>{var O=W("text");return Z(O,"wrapMode","word"),K(O,()=>`${L.id} \u2192 ${L.keys.length>0?L.keys.join(" / "):"(unbound)"} (default: ${L.defaultKeys.join(" / ")})`),u((M)=>Z(O,"fg",f.text,M)),O})()}),null),u((L)=>{var O=f.text,M=ff.BOLD;return O!==L.e&&(L.e=Z(U,"fg",O,L.e)),M!==L.t&&(L.t=Z(U,"attributes",M,L.t)),L},{e:void 0,t:void 0}),j}}),B),K(z,b(X0,{get when(){return J.warnings.length>0},get children(){var j=W("box"),U=W("text");return D(j,U),Z(j,"flexDirection","column"),Z(j,"gap",0),K(U,()=>F("settings.keybindings.warnings")),K(j,b(Zf,{get each(){return J.warnings},children:(L)=>(()=>{var O=W("text");return Z(O,"wrapMode","word"),K(O,`! ${L}`),u((M)=>Z(O,"fg",f.warning,M)),O})()}),null),u((L)=>{var O=f.warning,M=ff.BOLD;return O!==L.e&&(L.e=Z(U,"fg",O,L.e)),M!==L.t&&(L.t=Z(U,"attributes",M,L.t)),L},{e:void 0,t:void 0}),j}}),B),D(B,x0("tmux session keys use the same file: tmux.tab.new (ctrl+t), tmux.tab.prev/next (ctrl+[/]), tmux.tab.close (ctrl+w), tmux.tab.rename (f2), tmux.tab.chooseEngine (ctrl+shift+t), tmux.detach (ctrl+q), tmux.focus (4 chords, left/down/up/right), and prefix layout keys: workspaceSplit (s), workspaceClose (x), workspaceReset (r), tasksToggle (a), opsToggle (o), terminalToggle (z). They apply when a session is (re)built.")),Z(B,"wrapMode","word"),Z(V,"wrapMode","word"),K(V,()=>`Fixed (not rebindable): ${Y.join(", ")}.`),u((j)=>{var U=f.text,L=ff.BOLD,O=f.textMuted,M=f.text,R=ff.BOLD,S=f.textMuted,a=f.textMuted,N=f.textMuted;return U!==j.e&&(j.e=Z(G,"fg",U,j.e)),L!==j.t&&(j.t=Z(G,"attributes",L,j.t)),O!==j.a&&(j.a=Z(X,"fg",O,j.a)),M!==j.o&&(j.o=Z(Q,"fg",M,j.o)),R!==j.i&&(j.i=Z(Q,"attributes",R,j.i)),S!==j.n&&(j.n=Z(H,"fg",S,j.n)),a!==j.s&&(j.s=Z(B,"fg",a,j.s)),N!==j.h&&(j.h=Z(V,"fg",N,j.h)),j},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0}),z})()}var BD=k(()=>{h();h();h();h();h();h();h();h();Wf();H8();xf();G1();yG();Aq();bG();y8()});import{TextAttributes as ly}from"@opentui/core";function ay(f){return f.split(/[-_]+/).filter((J)=>J.length>0).map((J)=>J.charAt(0).toUpperCase()+J.slice(1)).join(" ")}function Tz(f){let J=vf(),Y=i0(),z=Y1(),{theme:G}=Y,[X,q]=r("sidebar"),[Q,H]=r("general"),[B,V]=r(0),[j,U]=r(0),[L,O]=r(""),[M,R]=r(""),[S,a]=r(""),N=U0(()=>Y.all().slice().sort()),[,g]=r(Math.max(0,N().findIndex((v)=>v===Y.selected))),C=e4(f.orchestrator),[y,_]=r(null),[z0,t]=r(null),[Y0,T]=r(null),Q0=!1;zf(()=>{if(Q()!=="accounts"||Q0)return;Q0=!0,EZ().then(_),xZ().then(t),wZ().then(T)});function p(){return YD(Q(),{themeNames:N(),focusAccentSlots:yz,engineList:u0(),hasDaemon:C})}function D0(){return p().length}function g0(){return Lz(f.kv.get(oJ,Dz))}function $(v){if(Y.selected===v)return;if(!Y.set(v))return;f.kv.set("activeTheme",v),f.onVisualPrefsChange?.()}function E(){return oj()}function f0(v){if(oj()===v)return;xX(v),f.kv.set(bQ,v),f.onVisualPrefsChange?.()}function I(v){if(Y.transparentBackground===v)return;Y.setTransparentBackground(v),f.kv.set("transparentBackground",v),f.onVisualPrefsChange?.()}function G0(){I(!Y.transparentBackground)}function x(v){if(Y.focusAccent===v)return;Y.setFocusAccent(v),f.kv.set("focusAccent",v),f.onVisualPrefsChange?.()}function c(v){f.kv.set(oJ,v)}function Z0(){return f.kv.get("notifications.toast.enabled",!0)!==!1}function V0(){return f.kv.get("notifications.sound.enabled",!0)!==!1}function H0(){f.kv.set("notifications.toast.enabled",!Z0())}function y0(){f.kv.set("notifications.sound.enabled",!V0())}function w0(){return f.kv.get(Sq,!0)!==!1}function T0(){f.kv.set(Sq,!w0())}function r0(){return f.kv.get("experimental.remoteProjects",!1)===!0}function P(){f.kv.set("experimental.remoteProjects",!r0())}function M0(){return f.kv.get(jz,!1)===!0}function J0(){f.kv.set(jz,!M0())}function F0(){return f.kv.get(Wz,!1)===!0}function a0(){f.kv.set(Wz,!F0())}function p0(){let v=f.kv.get("customEngineIds",[]);return Array.isArray(v)?v.filter((A0)=>typeof A0==="string"&&A0.trim().length>0):[]}function u0(){return[...cf,...p0()]}function _0(v){let A0=f.kv.get(jJ(v),"");return typeof A0==="string"?A0.trim():""}function n(v){return _0(v)||BX(v).join(" ")}function q0(v){return Q1(v)&&_0(v).length===0&&!o0(v)}function b0(v){let A0=f.kv.get(WJ(v),"");return typeof A0==="string"?A0.trim():""}function o0(v){return b0(v).length>0}function l0(v){return b0(v)||bB[v]||v}let[$0,t0]=r(kf("lastSelectedVendor")??Sf);function Rf(v){return $0()===v}function gf(v){af("lastSelectedVendor",v),f.kv.set("lastSelectedVendor",v),t0(v)}async function o(v){let A0=await zY.show(J,n(v),{dialogTitle:`${l0(v)} launch command`,fieldLabel:"command",submitLabel:"save",allowEmpty:!0});if(A0===void 0)return;f.kv.set(jJ(v),A0.trim())}async function e(v){let A0=await zY.show(J,l0(v),{dialogTitle:`${l0(v)} display name (blank = default)`,fieldLabel:"name",submitLabel:"save",allowEmpty:!0});if(A0===void 0)return;f.kv.set(WJ(v),A0.trim())}function B0(v){if(f.kv.set(jJ(v),""),f.kv.set(WJ(v),""),!Q1(v))f.kv.set("customEngineIds",p0().filter((A0)=>A0!==v)),U((A0)=>Math.max(0,Math.min(A0,u0().length)))}async function C0(){let v=await zY.show(J,"",{dialogTitle:"Add engine",fieldLabel:"id",submitLabel:"next",placeholder:"lowercase slug, e.g. aider"});if(v===void 0)return;let A0=v.trim().toLowerCase();if(!A0||Q1(A0)||p0().includes(A0))return;let Bf=await zY.show(J,"",{dialogTitle:`Add engine \xB7 ${A0}`,fieldLabel:"command",submitLabel:"next",placeholder:"e.g. aider --model sonnet"});if(Bf===void 0)return;let Ff=await zY.show(J,A0,{dialogTitle:`Add engine \xB7 ${A0}`,fieldLabel:"name",submitLabel:"add",allowEmpty:!0});if(f.kv.set("customEngineIds",[...p0(),A0]),Bf.trim())f.kv.set(jJ(A0),Bf.trim());let Qf=Ff?.trim()??"";f.kv.set(WJ(A0),Qf&&Qf!==A0?Qf:ay(A0))}function A(){if(Q()!=="engines"||X()!=="body")return null;let v=wQ(p(),j());return v?.kind==="engine"?v.vendor:null}function P0(){return _z(f.kv.get(_J,Zq))}function K0(){let v=Uz.indexOf(P0()),A0=Uz[(v+1)%Uz.length];if(A0)f.kv.set(_J,A0)}function E0(){let v=f.kv.get(kY,"");return typeof v==="string"?v:""}async function W0(){let v=await zY.show(J,E0(),{dialogTitle:"Custom editor command (use {file} for the path)",fieldLabel:"command",submitLabel:"save",allowEmpty:!0});if(v===void 0)return;let A0=v.trim();if(f.kv.set(kY,A0),A0)f.kv.set(_J,"custom")}async function L0(){a("submitting...");try{let v=MG({title:L(),body:M()});a(`sent: ${v.url}`),O(""),R(""),U(0)}catch(v){a(`error: ${v instanceof Error?v.message:String(v)}`)}}let R0=()=>Q()==="feedback"&&X()==="body";function Jf(v){let A0=j()+v;if(A0<0||A0>2){q("sidebar");return}U(A0)}function Yf(){if(X()!=="sidebar"||D0()===0)return;if(q("body"),U(0),Q()==="general")g(0)}function n0(v){if(X()==="sidebar"){let Ff=(B()+v+Iz.length)%Iz.length;V(Ff);let Qf=Iz[Ff];if(Qf)H(Qf.id),U(0);return}let A0=D0();if(A0===0)return;let Bf=(j()+v+A0)%A0;if(U(Bf),wQ(p(),Bf)?.kind==="theme")g(Bf)}function yf(v){H(v),V(Iz.findIndex((A0)=>A0.id===v)),U(0),q("sidebar")}let k0={theme:(v)=>$(v.name),language:(v)=>f0(v.locale),transparent:()=>G0(),focusAccent:(v)=>x(v.slot),toast:()=>H0(),sound:()=>y0(),zenKeepTasks:()=>T0(),surface:(v)=>c(v.surface),editorKind:()=>K0(),editorCustom:()=>void W0(),engine:(v)=>void o(v.vendor),engineAdd:()=>void C0(),feedbackTitle:()=>U(0),feedbackBody:()=>U(1),feedbackSend:()=>void L0(),devReset:()=>void g8(J,f.kv,z),devRestartDaemon:()=>void R8(J,f.orchestrator,z),devRemoteProjects:()=>P(),devAutoStatus:()=>J0(),devDispatcher:()=>a0()};function wf(){let v=wQ(p(),j());if(!v)return;k0[v.kind](v)}return Uf(()=>({enabled:(!f.standalone||J.stack.length===0)&&!R0(),bindings:[{key:"down",cmd:()=>n0(1)},{key:"up",cmd:()=>n0(-1)},{key:"j",cmd:()=>n0(1)},{key:"k",cmd:()=>n0(-1)},{key:"tab",cmd:()=>n0(1)},{key:"right",cmd:Yf},{key:"l",cmd:Yf},{key:"left",cmd:()=>q("sidebar")},{key:"h",cmd:()=>q("sidebar")},{key:"return",cmd:()=>{if(X()==="sidebar"){Yf();return}wf()}},{key:"t",cmd:G0},{key:"r",cmd:()=>{let v=A();if(v)e(v)}},{key:"x",cmd:()=>{let v=A();if(v)B0(v)}},{key:"d",cmd:()=>{let v=A();if(v)gf(v)}}]})),Uf(()=>({enabled:R0(),bindings:[{key:"tab",cmd:()=>Jf(1)},{key:"shift+tab",cmd:()=>Jf(-1)}]})),Uf(()=>({enabled:R0()&&j()===2,bindings:[{key:"return",cmd:()=>void L0()}]})),(()=>{var v=W("box"),A0=W("box"),Bf=W("text"),Ff=W("text"),Qf=W("box"),d=W("box"),s=W("box"),S0=W("text");return D(v,A0),D(v,Qf),D(v,s),Z(v,"paddingLeft",2),Z(v,"paddingRight",2),Z(v,"paddingBottom",1),Z(v,"gap",1),D(A0,Bf),D(A0,Ff),Z(A0,"flexDirection","row"),Z(A0,"justifyContent","space-between"),K(Bf,()=>F("settings.title")),Z(Ff,"onMouseUp",()=>f.onClose()),K(Ff,()=>F("settings.esc")),D(Qf,d),Z(Qf,"flexDirection","row"),Z(Qf,"gap",2),K(Qf,b(zD,{level:X,cursor:B,switchSection:yf}),d),Z(d,"flexGrow",1),Z(d,"flexShrink",1),Z(d,"flexDirection","column"),Z(d,"gap",1),K(d,b(X0,{get when(){return Q()==="general"},get children(){return b(GD,{level:X,bodyRow:j,setLevel:q,setBodyRow:U,themeNames:N,setThemeCursor:g,selectTheme:$,currentLocale:E,selectLanguage:f0,toggleTransparent:G0,selectFocusAccent:x,toastEnabled:Z0,soundEnabled:V0,toggleToast:H0,toggleSound:y0,zenKeepsTasks:w0,toggleZenKeepsTasks:T0,settingsSurface:g0,selectSurface:c,editorKind:P0,cycleEditorKind:K0,editorCustomCommand:E0,editEditorCustom:()=>void W0()})}}),null),K(d,b(X0,{get when(){return Q()==="engines"},get children(){return b(XD,{level:X,bodyRow:j,setLevel:q,setBodyRow:U,get vendors(){return u0()},isCustom:(N0)=>!Q1(N0),displayName:l0,commandText:n,isDefault:q0,isDefaultEngine:Rf,editEngine:(N0)=>void o(N0),renameEngine:(N0)=>void e(N0),resetEngine:B0,onAddEngine:()=>void C0()})}}),null),K(d,b(X0,{get when(){return Q()==="accounts"},get children(){return b(ZD,{claudeStatus:y,codexStatus:z0,copilotStatus:Y0})}}),null),K(d,b(X0,{get when(){return Q()==="keys"},get children(){return b(HD,{})}}),null),K(d,b(X0,{get when(){return Q()==="feedback"},get children(){return b(qD,{level:X,bodyRow:j,setLevel:q,setBodyRow:U,title:L,setTitle:(N0)=>{O(N0),a("")},body:M,setBody:(N0)=>{R(N0),a("")},status:S,onTitleSubmit:()=>U(1),onBodySubmit:()=>void L0(),submit:()=>void L0()})}}),null),K(d,b(X0,{get when(){return Q()==="dev"},get children(){return b(QD,{level:X,bodyRow:j,setLevel:q,setBodyRow:U,hasDaemon:C,confirmReset:()=>void g8(J,f.kv,z),confirmRestartDaemon:()=>void R8(J,f.orchestrator,z),remoteProjectsEnabled:r0,toggleRemoteProjects:P,autoStatusEnabled:M0,toggleAutoStatus:J0,dispatcherEnabled:F0,toggleDispatcher:a0})}}),null),D(s,S0),Z(s,"paddingTop",0),K(S0,(()=>{var N0=I0(()=>!!R0());return()=>N0()?F("settings.nav.feedback"):F("settings.nav.default")})()),u((N0)=>{var Z1=ly.BOLD,K1=G.text,tf=G.textMuted,v1=G.textMuted;return Z1!==N0.e&&(N0.e=Z(Bf,"attributes",Z1,N0.e)),K1!==N0.t&&(N0.t=Z(Bf,"fg",K1,N0.t)),tf!==N0.a&&(N0.a=Z(Ff,"fg",tf,N0.a)),v1!==N0.o&&(N0.o=Z(S0,"fg",v1,N0.o)),N0},{e:void 0,t:void 0,a:void 0,o:void 0}),v})()}var b8=k(()=>{h();h();h();h();h();h();h();h();Wf();fz();E1();fQ();ZX();zq();Of();cB();S1();U1();xf();G1();qq();b1();W8();P1();O8();JD();y8();BD();Tz.show=(f,J,Y)=>{let z=!1;return new Promise((G)=>{f.replace(()=>b(Tz,{kv:J,orchestrator:Y,onVisualPrefsChange:()=>{z=!0},onClose:()=>G({visualPrefsChanged:z})}),()=>G({visualPrefsChanged:z}))})}});import{TextAttributes as $y}from"@opentui/core";function WD(){let{theme:f}=i0(),J=TJ(),Y=NQ(),z=()=>Y.toasts().slice(-jD),G=()=>Math.max(0,J().width-ry-py),X=()=>Math.max(0,J().height-_y-jD-1);return b(X0,{get when(){return Y.toasts().length>0},get children(){var q=W("box");return Z(q,"position","absolute"),Z(q,"zIndex",2500),Z(q,"width",40),Z(q,"flexDirection","column"),Z(q,"gap",0),K(q,b(Zf,{get each(){return z()},children:(Q)=>{let H=()=>Q.kind==="needs_input"?f.warning:Q.kind==="error"?f.error:f.success,B=()=>f.selectedListItemText,V=()=>Q.kind==="needs_input"?"?":Q.kind==="error"?"\u2715":"\u2713";return(()=>{var j=W("box"),U=W("text"),L=W("text");return D(j,U),D(j,L),Z(j,"flexDirection","row"),Z(j,"gap",1),Z(j,"paddingLeft",1),Z(j,"paddingRight",1),Z(j,"onMouseUp",()=>Y.dismiss(Q.id)),Z(U,"wrapMode","none"),K(U,V),Z(L,"wrapMode","none"),K(L,()=>Q.title),u((O)=>{var M=H(),R=B(),S=$y.BOLD,a=B();return M!==O.e&&(O.e=Z(j,"backgroundColor",M,O.e)),R!==O.t&&(O.t=Z(U,"fg",R,O.t)),S!==O.a&&(O.a=Z(U,"attributes",S,O.a)),a!==O.o&&(O.o=Z(L,"fg",a,O.o)),O},{e:void 0,t:void 0,a:void 0,o:void 0}),j})()}})),u((Q)=>{var H=G(),B=X();return H!==Q.e&&(Q.e=Z(q,"left",H,Q.e)),B!==Q.t&&(Q.t=Z(q,"top",B,Q.t)),Q},{e:void 0,t:void 0}),q}})}var jD=4,ry=40,py=2,_y=2;var VD=k(()=>{h();h();h();h();h();h();h();Wf();yQ();xf()});import{TextAttributes as oy}from"@opentui/core";function sy(f,J){let Y=f?`v${f}`:F("update.skew.olderBuild");return F("update.skew.hint",{daemon:Y,clientVersion:J})}function KD(f){let{theme:J}=i0(),Y=()=>Math.max(4,f.width()-2);return b(X0,{get when(){return f.stale()},get children(){var z=W("box"),G=W("text"),X=W("box"),q=W("text"),Q=W("box"),H=W("text");return D(z,G),D(z,X),D(z,Q),Z(z,"flexDirection","column"),Z(z,"flexShrink",0),Z(z,"paddingLeft",1),Z(z,"paddingRight",1),Z(z,"paddingBottom",1),Z(G,"wrapMode","none"),K(G,()=>"\u2594".repeat(Y())),D(X,q),Z(X,"flexDirection","row"),Z(X,"gap",1),Z(q,"wrapMode","none"),K(q,()=>F("update.skew.title")),D(Q,H),Z(Q,"flexDirection","row"),Z(Q,"gap",1),Z(H,"wrapMode","word"),K(H,()=>sy(f.daemonVersion(),f.clientVersion)),u((B)=>{var{warning:V,warning:j}=J,U=oy.BOLD,L=J.text;return V!==B.e&&(B.e=Z(G,"fg",V,B.e)),j!==B.t&&(B.t=Z(q,"fg",j,B.t)),U!==B.a&&(B.a=Z(q,"attributes",U,B.a)),L!==B.o&&(B.o=Z(H,"fg",L,B.o)),B},{e:void 0,t:void 0,a:void 0,o:void 0}),z}})}var UD=k(()=>{h();h();h();h();h();h();Wf();xf();G1()});function DD(f,J){return f.find((Y)=>Y.id!==J&&!Y.archived)}async function ty(f){let J=f.tasks.find((X)=>X.id===f.taskId);if(!J)return null;let Y=!J.archived;try{await f.orch.setArchived(f.taskId,Y)}catch(X){return f.logger.error(`${f.logPrefix} archive failed:`,X),null}if(!Y)return{archived:Y};let z=Lf(f.taskId),G=DD(f.tasks,f.taskId);if(await bJ(z,G?Lf(G.id):void 0).catch((X)=>{f.logger.error(`${f.logPrefix} switch-client failed:`,X)}),f.updateActiveTask)await f.orch.setActiveTask(G?.id??null).catch(()=>{});return await l1(z).catch((X)=>{f.logger.error(`${f.logPrefix} kill tmux session failed:`,X)}),{archived:Y,nextTask:G}}async function ey(f){let J=DD(f.tasks,f.taskId),Y=Lf(f.taskId);if(f.switchBeforeKill)await bJ(Y,J?Lf(J.id):void 0).catch((z)=>{f.logger.error(`${f.logPrefix} switch-client failed:`,z)});if(f.updateActiveTask)await f.orch?.setActiveTask(J?.id??null).catch(()=>{});return await l1(Y).catch((z)=>{f.logger.error(`${f.logPrefix} kill tmux session failed:`,z)}),{nextTask:J}}async function LD(f,J){if(!f.orch)return;let Y=f.tasks().find((G)=>G.id===J);if(!Y)return;if(!Y.archived){if(!await f.confirm({title:`Archive "${Y.title}"?`,body:"Moves it to Archives and stops its running session. The worktree, branch, and chat history stay \u2014 unarchive to bring it back.",cancelLabel:"cancel",confirmLabel:"archive"}))return}if(!await ty({orch:f.orch,tasks:f.tasks(),taskId:J,logger:f.logger,logPrefix:f.logPrefix,updateActiveTask:f.updateActiveTask}))return;await f.reload?.()}async function MD(f,J){if(!f.orch)return;let Y=f.tasks().find((q)=>q.id===J);if(!Y)return;if(!await f.confirm({title:`Delete "${Y.title}"?`,body:"Removes the task entry and its worktree. The tmux session (if any) is killed.",cancelLabel:"cancel",confirmLabel:"delete"}))return;let G=!1;try{await f.orch.deleteTask(J),G=!0}catch(q){if((q instanceof Error?q.message:String(q)).includes(DH)){if(await f.confirm({title:`"${Y.title}" has uncommitted changes`,body:"Its worktree has uncommitted or untracked work that will be permanently deleted. Force delete anyway?",cancelLabel:"cancel",confirmLabel:"force delete"}))try{await f.orch.deleteTask(J,{force:!0}),G=!0}catch(B){f.logger.error(`${f.logPrefix} force delete failed:`,B),f.notifyError?.(`Couldn't delete: ${B instanceof Error?B.message:String(B)}`)}}else f.logger.error(`${f.logPrefix} delete failed:`,q),f.notifyError?.(`Couldn't delete: ${q instanceof Error?q.message:String(q)}`)}if(!G)return;let{nextTask:X}=await ey({orch:f.orch,tasks:f.tasks(),taskId:J,logger:f.logger,logPrefix:f.logPrefix,switchBeforeKill:f.switchBeforeKill,updateActiveTask:f.updateActiveTask});await f.reload?.(),f.onTaskDeleted?.(J,X)}async function FD(f,J){let Y=f.tasks().find((G)=>G.id===J);if(!Y)return;let z=await f.promptText(Y.title);if(!z||!f.orch)return;try{await f.orch.setTitle(J,z)}catch(G){f.logger.error(`${f.logPrefix} task.rename failed:`,G),f.notifyError?.(`Couldn't rename task: ${G instanceof Error?G.message:String(G)}`);return}await f.reload?.()}async function OD(f,J){let Y=f.tasks().find((G)=>G.id===J);if(!Y||Y.kind==="main")return;let z=await f.promptText(Y.branch,{dialogTitle:"Rename branch",fieldLabel:"branch"});if(!z||!f.orch)return;try{await f.orch.setBranch(J,z)}catch(G){f.logger.error(`${f.logPrefix} task.setBranch failed:`,G),f.notifyError?.(`Couldn't rename branch: ${G instanceof Error?G.message:String(G)}`);return}await f.reload?.()}async function AD(f,J){let Y=f.tasks().find((X)=>X.id===J);if(!Y||!f.orch)return;let z=await lJ(),G=qY(z,Y.vendor??Sf);try{await f.orch.setVendor(J,G)}catch(X){f.logger.error(`${f.logPrefix} task.setVendor failed:`,X),f.notifyError?.(`Couldn't switch engine: ${X instanceof Error?X.message:String(X)}`);return}f.notifyInfo?.(`Engine \u2192 ${Vz(G)} (applies on reopen)`),await f.reload?.()}async function gD(f){let J=c1(),Y=f.cursorRepo()??J[0]??process.cwd();if(f.openCreateSurface&&await f.openCreateSurface(Y))return;let z=f.lastVendor()??Sf,G=await lJ();if(G.length===0)f.notifyInfo?.("No engine CLI detected \u2014 install claude or codex, or add one in Settings \u2192 Engines");let X=f.orch,q=await f.promptNewTask(Y,J,{defaultVendor:z,availableVendors:G,discoverAdoptable:X?(H)=>X.discoverAdoptableWorktrees(H):void 0});if(!q)return;if(f.rememberVendor(q.vendor),vJ(q.repo),f.onRepoSaved?.(),!X){f.logger.error(`${f.logPrefix} no daemon; cannot create task`);return}f.notifyInfo?.("Creating task\u2026");let Q;try{if(q.mode==="adopt")for(let H of q.adopt)Q=(await X.adoptWorktree({repo:q.repo,worktreePath:H.worktreePath,branch:H.branch,vendor:q.vendor})).id;else Q=(await X.createTask({repo:q.repo,baseRef:q.baseRef,vendor:q.vendor})).id}catch(H){f.logger.error(`${f.logPrefix} task.create/adopt failed:`,H),f.notifyError?.(`Couldn't create task: ${H instanceof Error?H.message:String(H)}`);return}if(await f.reload?.(),Q)f.selectTask?.(Q),await f.enterTask?.(Q)}var RD=k(()=>{fz();E1();FH();Of();S1();U1();J1()});import{spawn as fb}from"child_process";import{existsSync as Jb}from"fs";import{basename as Yb,delimiter as zb,isAbsolute as Gb,join as Xb}from"path";function S8(f,J,Y){if(Gb(f))return Y(f);let z=J.PATH??"";for(let G of z.split(zb)){if(!G)continue;if(Y(Xb(G,f)))return!0}return!1}function Qb(f){let J=Yb(f);if(J==="code")return"VS Code";if(J==="cursor")return"Cursor";if(J==="windsurf")return"Windsurf";if(J==="zed")return"Zed";return J||f}function CD(f={}){let J=f.env??process.env,Y=f.platform??process.platform,z=f.exists??Jb,G=J.KOBE_OPEN_EDITOR?.trim();if(G)return{id:"env",label:Qb(G),command:G,args:[]};for(let X of Zb)if(S8(X.command,J,z))return{id:X.id,label:X.label,command:X.command,args:[]};if(Y==="darwin"&&S8("open",J,z)){for(let X of qb)if(X.paths.some((q)=>z(q)))return{id:X.id,label:X.label,command:"open",args:["-a",X.appName]};return{id:"mac-open",label:"Finder",command:"open",args:[]}}if(Y==="linux"&&S8("xdg-open",J,z))return{id:"xdg-open",label:"Open",command:"xdg-open",args:[]};return null}function Hb(f,J){return[J.command,[...J.args,f]]}function kD(f,J,Y={}){if(!f)return!1;let z=Y.spawn??fb,[G,X]=Hb(f,J);try{let q=z(G,X,{detached:!0,stdio:"ignore"});if(q.pid===void 0)return!1;return q.unref(),!0}catch{return!1}}var Zb,qb;var ND=k(()=>{Zb=[{id:"code",label:"VS Code",command:"code"},{id:"cursor",label:"Cursor",command:"cursor"},{id:"windsurf",label:"Windsurf",command:"windsurf"},{id:"zed",label:"Zed",command:"zed"}],qb=[{id:"vscode.app",label:"VS Code",appName:"Visual Studio Code",paths:["/Applications/Visual Studio Code.app"]},{id:"cursor.app",label:"Cursor",appName:"Cursor",paths:["/Applications/Cursor.app","/System/Applications/Cursor.app"]},{id:"windsurf.app",label:"Windsurf",appName:"Windsurf",paths:["/Applications/Windsurf.app"]},{id:"zed.app",label:"Zed",appName:"Zed",paths:["/Applications/Zed.app"]}]});function hQ(f){let J=new Map;function Y(z){let G=J.get(z);if(!G){let[X,q]=r(f.initial,f.equals?{equals:f.equals}:void 0);G={read:X,write:(Q)=>q(()=>Q),inFlight:!1,nextAllowedAt:0},J.set(z,G)}return G}return{read(z){if(!z)return f.initial;return Y(z).read()},poll(z){if(!z)return;let G=Y(z);Jq(G,f,(X)=>f.run(z,X),(X)=>G.write(X))},reset(){J.clear()}}}var iX=k(()=>{Wf();HX();HX()});import{stat as Bb}from"fs/promises";import{join as jb}from"path";async function Ub(f){try{let J=await Bb(jb(f,".git","HEAD"));return`${J.mtimeMs}:${J.size}`}catch{return null}}async function Db(f,J,Y=BJ){let z=await Ub(f);if(z!==null){let Q=yD.get(f);if(Q&&Q.fingerprint===z)return Q.value}let G="",X=await Y("git",["symbolic-ref","--short","HEAD"],{cwd:f,env:x1(),signal:J}),q=X.status===0?X.stdout.trim():"";if(q&&q!=="HEAD")G=q;else if((await Y("git",["rev-parse","--verify","HEAD"],{cwd:f,env:x1(),signal:J})).status===0)G="(detached)";if(z!==null)yD.set(f,{fingerprint:z,value:G});return G}function SD(f){return bD.read(f)}function ID(f){bD.poll(f)}var Wb=2000,Vb=30000,Kb=1500,yD,bD;var TD=k(()=>{NY();iX();yD=new Map;bD=hQ({initial:"",timeoutMs:Wb,slowRetryMs:Vb,minIntervalMs:Kb,run:(f,J)=>Db(f,J)})});function I8(f){let J=f.scheduleTimeout??((H,B)=>{let V=setTimeout(H,B);return()=>clearTimeout(V)}),Y=!1,z=null,G=()=>{Y=!0,z?.(),z=J(()=>{Y=!1,z=null},700)},X=()=>{Y=!1,z?.(),z=null},q=(H)=>{let B=f.getFlatIds();if(B.length===0)return;let V=f.getCursor(),j=V<0?0:V,U=Math.min(B.length-1,Math.max(0,j+H));f.setCursor(U)},Q=(H)=>{let B=f.getFlatIds();if(B.length===0)return;f.setCursor(Math.min(B.length-1,Math.max(0,H)))};return{moveDown(){X(),q(1)},moveUp(){X(),q(-1)},selectCurrent(){X();let H=f.getFlatIds(),B=f.getCursor();if(B<0||B>=H.length)return;let V=H[B];if(V!==void 0)f.onSelect(V)},pressG(){if(Y)X(),Q(0);else G()},pressShiftG(){X(),Q(f.getFlatIds().length-1)},isChordArmed(){return Y},disarmChord(){X()}}}function uD(f){let J=I8({getCursor:()=>f.cursorIndex(),setCursor:(X)=>f.setCursorIndex(X),getFlatIds:()=>f.flatTaskIds(),onSelect:(X)=>f.onSelect(X)}),Y=()=>{let X=f.flatTaskIds(),q=f.cursorIndex();if(q<0||q>=X.length)return;return X[q]},z=()=>f.searchMode?.()??!1,G=()=>f.moveMode?.()??!1;Uf(()=>({enabled:f.focused()&&!z(),bindings:mY({"sidebar.nav":(X,q)=>{let Q=(q??0)%2===0;if(G()){let H=Y();if(H===void 0)return;f.onMoveRequest?.(H,Q?1:-1);return}if(Q)J.moveDown();else J.moveUp()},"sidebar.select":()=>{if(G()){f.onMoveModeExit?.();return}J.selectCurrent()},"sidebar.goto":(X)=>{if(G())return;if(X.shift)J.pressShiftG();else J.pressG()},"sidebar.delete":()=>{if(G())return;let X=Y();if(X!==void 0)f.onDeleteRequest?.(X)},"sidebar.archive":()=>{if(G())return;let X=Y();if(X!==void 0)f.onArchiveRequest?.(X)},"sidebar.localMerge":(X)=>{if(!X.shift)return;let q=Y();if(q!==void 0)f.onLocalMergeRequest?.(q)},"sidebar.rename":()=>{if(G())return;let X=Y();if(X!==void 0)f.onRenameRequest?.(X)},"sidebar.pin":(X)=>{if(G())return;if(!X.shift)return;let q=Y();if(q!==void 0)f.onPinRequest?.(q)},"sidebar.search.enter":()=>{if(G())return;f.onSearchEnter?.()},"sidebar.sort":()=>{if(G())return;f.onSortModeToggle?.()},"sidebar.projectFilter":()=>{if(G())return;f.onProjectFilterToggle?.()}})})),Uf(()=>({enabled:f.focused()&&G(),bindings:[{key:"escape",cmd:()=>f.onMoveModeExit?.()}]})),Uf(()=>({enabled:f.focused(),bindings:mY({"sidebar.view":(X,q)=>{f.onViewSwitch?.((q??0)%2===0?-1:1)}})})),Uf(()=>({enabled:f.focused()&&z(),bindings:mY({"sidebar.search.nav":(X,q)=>{if((q??0)%2===0)J.moveDown();else J.moveUp()},"sidebar.search.submit":()=>{J.selectCurrent(),f.onSearchExit?.(!0)},"sidebar.search.cancel":()=>f.onSearchExit?.(!1)})}))}var ED=k(()=>{SG();b1()});function T8(f,J){if(J<=0)return"";if(f.length<=J)return f;return`${f.slice(0,Math.max(0,J-1))}\u2026`}function u8(f,J){return` ${T8(f,Math.max(0,J))}`}function Mb(f){switch(f){case"done":return F("tasks.status.done");case"in_review":return F("tasks.status.inReview");case"in_progress":return F("tasks.status.working");case"backlog":return F("tasks.status.backlog");case"canceled":return F("tasks.status.canceled");case"error":return F("tasks.status.error")}}function Fb(f){switch(f){case"rate_limited":return{text:F("tasks.activity.rateLimited"),tone:"warning"};case"permission_needed":return{text:F("tasks.activity.permissionNeeded"),tone:"warning"};case"error":return{text:F("tasks.activity.error"),tone:"error"};default:return null}}function hD(f){switch(f.prStatus?.checkState){case"passing":return{glyph:"\u2713",tone:"success"};case"failing":return{glyph:"\u2717",tone:"error"};case"pending":return{glyph:"\u2022",tone:"warning"};default:return null}}function Ob(){return F("tasks.subtitle.noTracking")}function Ab(){return F("tasks.subtitle.materializing")}function gb(f){if(f.kind==="main")return!1;return f.vendor!==void 0&&!Q1(f.vendor)}function E8(f){let{task:J}=f,Y=J.kind==="main",z=Y?f.mainBranch??"":J.branch,G=Lb[J.status],X=f.activity?.state,q=X!==void 0,Q=Rb(X),H=Fb(X),B=gb(J)&&!q,V=f.job!==void 0,j=V||!B&&(X==="running"||f.live||!q&&!Y&&J.status==="in_progress"),U=EG[f.spinnerFrame]??EG[0],L=V?"primary":B?"textMuted":H?.tone??(j?"primary":Q?.tone??G.tone),O=B?Ob():Mb(J.status),M=V?f.truncateBranch(Ab(),f.subtitleBudget):H?f.truncateBranch(H.text,f.subtitleBudget):z.length>0?f.truncateBranch(z,f.subtitleBudget):f.truncateBranch(O,f.subtitleBudget),R=B?xD:Q?.glyph??G.glyph,S=B?xD:Q?.glyph??"\u2605";return{isMain:Y,titleText:Y?MJ(J.repo):J.title,subtitleText:M,loading:j,stateGlyph:j?U:R,projectGlyph:j?U:S,tone:L}}function x8(f,J){if(!f.loading)return f;let Y=EG[J()%EG.length]??"\u280B";if(Y===f.stateGlyph&&Y===f.projectGlyph)return f;return{...f,stateGlyph:Y,projectGlyph:Y}}function Rb(f){switch(f){case"rate_limited":return{glyph:"\u25F7",tone:"warning"};case"permission_needed":return{glyph:"?",tone:"warning"};case"error":return{glyph:"\u2715",tone:"error"};case"turn_complete":return{glyph:"\u2713",tone:"primary"};default:return null}}var Lb,EG,wD=100,xD="\xB7";var PD=k(()=>{G1();U1();uQ();Lb={done:{glyph:"\u2713",tone:"success"},in_review:{glyph:"\u25D0",tone:"warning"},in_progress:{glyph:"",tone:"primary"},backlog:{glyph:"\u25CB",tone:"textMuted"},canceled:{glyph:"\u2298",tone:"textMuted"},error:{glyph:"\u2715",tone:"error"}};EG=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"]});function w8(f){return vD.read(f)}function h8(f){vD.poll(f)}var Cb=4000,kb=60000,Nb=1500,yb,vD;var mD=k(()=>{NY();iX();VG();iX();yb={added:0,deleted:0},vD=hQ({initial:yb,equals:IJ,timeoutMs:Cb,slowRetryMs:kb,minIntervalMs:Nb,run:async(f,J)=>{let Y=await BJ("git",["status","--porcelain=v1"],{cwd:f,env:x1(),signal:J});if(Y.status!==0)throw Error("git status failed");return WG(Y.stdout)}})});import{TextAttributes as bf}from"@opentui/core";function bb(f){switch(f){case"active":return F("tasks.view.workspace");case"archived":return F("tasks.view.archives")}}function nD(f,J=Ib){if(f.length<=J)return f;return`${f.slice(0,Math.max(0,J-1))}\u2026`}function Tb(f){let J=0;for(let Y of f)J+=(Y.codePointAt(0)??0)>=4352?2:1;return J}function ub(f,J){if(J<=0||f.length<=J)return f;return`\u2026${f.slice(f.length-Math.max(0,J-1))}`}function dD(f){let{theme:J}=i0(),Y=()=>f.focused?f.focused():!0,[z,G]=r("active"),[X,q]=r(!1),[Q,H]=r(""),[B,V]=r(null),j=()=>f.projectFilter?.()??B(),U=(n)=>{if(f.onProjectFilterChange)f.onProjectFilterChange(n);else V(n)};function L(){H(""),q(!0),f.onSearchActiveChange?.(!0)}function O(n){q(!1),H(""),f.onSearchActiveChange?.(!1)}zf(()=>{if(!X())return;let n=Y1();if(!n)return;let q0=(b0)=>{if(b0.defaultPrevented)return;if(!Y())return;if(b0.ctrl||b0.meta||b0.option)return;if(b0.name==="backspace"){H(($0)=>$0.slice(0,-1));return}let o0=b0.sequence;if(!o0||o0.length!==1)return;let l0=o0.charCodeAt(0);if(l0<32||l0===127)return;H(($0)=>$0+o0)};n.keyInput.on("keypress",q0),mf(()=>n.keyInput.off("keypress",q0))});let[M,R]=r(0),S=setInterval(()=>R((n)=>n+1),Sb);mf(()=>clearInterval(S));let[a,N]=r(0),g=setInterval(()=>N((n)=>(n+1)%EG.length),wD);mf(()=>clearInterval(g));let C=()=>f.sortMode?.()??"default",y=U0(()=>l4(f.tasks(),z())),_=U0(()=>{let n=j();if(!n)return null;let q0=o1(n);return y().find((b0)=>o1(b0.repo)===q0)??null}),z0=U0(()=>_()?.repo??null),t=U0(()=>_()?.label??"all"),Y0=U0(()=>{let n=_();return n?n.count:y().reduce((q0,b0)=>q0+b0.count,0)}),T=U0(()=>{let n=Y0();return`${n} ${n===1?F("tasks.project.taskSingular"):F("tasks.project.taskPlural")}`}),Q0=U0((n)=>r4(n,D8(f.tasks(),z(),X()?Q():"",C(),z0())),[]),p=U0(()=>L8(Q0())),D0=U0(()=>$4(Q0())),g0=U0(()=>D0().projectRows),$=U0(()=>D0().taskRows),E=U0(()=>{let n=new Map;for(let q0 of Q0())n.set(q0.flatIndex,q0);return n}),f0=U0(()=>L8(D8(f.tasks(),z(),"",C(),z0())).length),I=U0(()=>$().length>0);zf(()=>{let n=j(),q0=y();if(n!==null&&q0.length>0&&(q0.length<=1||_()===null))U(null)});function G0(){let n=y();if(n.length<=1){U(null);return}let q0=z0(),b0=q0?o1(q0):null,o0=b0===null?-1:n.findIndex(($0)=>o1($0.repo)===b0),l0=n[o0+1];U(l0?.repo??null)}let x=()=>f.width?f.width():cD,c=U0(()=>Math.max(6,x()-9)),Z0=U0(()=>Math.max(6,x()-16)),V0=TJ(),H0=U0(()=>{let n=Math.max(2,Math.min(10,Math.floor(V0().height*0.25))),q0=Math.max(2,g0().length*2);return Math.min(n,q0)}),[y0,w0]=r(null),[T0,r0]=r(-1),P,M0,J0,F0=new Map;zf(()=>{let n=f.width?f.width():cD,q0=J0;if(!q0)return;q0.width=n,q0.flexShrink=1,q0.minHeight=0}),zf(O1([T0,Q0],([n])=>{let q0=E().get(n);if(!q0)return;let b0=q0.task.kind==="main"?P:M0;if(!b0)return;if(b0.viewport.height<=0)return;let o0=F0.get(n);if(!o0)return;b0.scrollChildIntoView(o0.id)})),zf(O1(()=>[f.selectedId(),p()],([n,q0])=>{let b0=$f(T0);if(n===null){if(b0===-1&&q0.length>0)r0(0);else if(b0>=q0.length)r0(Math.max(0,q0.length-1));else if(q0.length===0)r0(-1);return}let o0=q0.indexOf(n);if(o0>=0){if(o0!==b0)r0(o0)}else if(q0.length===0)r0(-1);else if(b0<0||b0>=q0.length)r0(q0.length-1)})),zf(O1(z,()=>{let n=p();r0(n.length>0?0:-1)},{defer:!0})),zf(O1(z0,(n)=>r0(a4(Q0(),n)),{defer:!0})),zf(O1([X,Q],()=>{if(!X())return;let n=p();r0(n.length>0?0:-1)}));function a0(n){let q0=z(),b0=lX.findIndex(($0)=>$0.view===q0);if(b0<0)return;let o0=(b0+n+lX.length)%lX.length,l0=lX[o0];if(l0)G(l0.view)}uD({focused:Y,cursorIndex:T0,setCursorIndex:r0,flatTaskIds:p,onSelect:(n)=>{f.onSelect(n),f.onActivate?.(n)},onDeleteRequest:(n)=>f.onDeleteRequest?.(n),onArchiveRequest:(n)=>f.onArchiveRequest?.(n),onLocalMergeRequest:(n)=>f.onLocalMergeRequest?.(n),moveMode:f.moveMode,onMoveRequest:(n,q0)=>f.onMoveRequest?.(n,q0),onMoveModeExit:()=>f.onMoveModeExit?.(),onRenameRequest:(n)=>f.onRenameRequest?.(n),onPinRequest:(n)=>f.onPinRequest?.(n),onViewSwitch:(n)=>a0(n),onSortModeToggle:()=>f.onSortModeToggle?.(),onProjectFilterToggle:()=>G0(),searchMode:X,onSearchEnter:()=>L(),onSearchExit:(n)=>O(n)});let p0=(n)=>(()=>{var q0=W("box"),b0=W("box"),o0=W("text"),l0=W("text");return D(q0,b0),Z(q0,"flexDirection","column"),Z(q0,"flexShrink",0),K(q0,b(X0,{get when(){return n.topPad},get children(){var $0=W("box"),t0=W("text");return D($0,t0),Z($0,"flexShrink",0),D(t0,x0(" ")),Z(t0,"wrapMode","none"),$0}}),b0),D(b0,o0),D(b0,l0),Z(b0,"flexDirection","row"),Z(b0,"flexShrink",0),Z(b0,"gap",1),Z(b0,"paddingLeft",1),Z(b0,"paddingRight",1),Z(o0,"wrapMode","none"),K(o0,()=>n.label),Z(l0,"wrapMode","none"),K(l0,()=>"\u2500".repeat(Math.max(2,x()-10-n.label.length-(n.suffix?.length??0)))),K(b0,b(X0,{get when(){return n.suffix},get children(){var $0=W("text");return Z($0,"wrapMode","none"),K($0,()=>n.suffix),u((t0)=>{var Rf=J.info,gf=bf.BOLD;return Rf!==t0.e&&(t0.e=Z($0,"fg",Rf,t0.e)),gf!==t0.t&&(t0.t=Z($0,"attributes",gf,t0.t)),t0},{e:void 0,t:void 0}),$0}}),null),u(($0)=>{var t0=J.textMuted,Rf=bf.BOLD,gf=J.border;return t0!==$0.e&&($0.e=Z(o0,"fg",t0,$0.e)),Rf!==$0.t&&($0.t=Z(o0,"attributes",Rf,$0.t)),gf!==$0.a&&($0.a=Z(l0,"fg",gf,$0.a)),$0},{e:void 0,t:void 0,a:void 0}),q0})(),u0=(n)=>{switch(n){case"success":return J.success;case"warning":return J.warning;case"primary":return J.primary;case"error":return J.error;default:return J.textMuted}},_0=(n)=>{let q0=n.row.task,b0=n.row.flatIndex,o0=()=>b0===T0(),l0=()=>q0.id===f.selectedId(),$0=U0(()=>{let A=f.chatRunState?.();if(!A)return!1;let P0=`${q0.id}:`;for(let[K0,E0]of A)if(E0==="running"&&K0.startsWith(P0))return!0;return!1}),t0=U0(()=>{let A=_q(f.worktreeChanges?.(),q0.worktreePath);if(A)return A;if(M(),!q0.archived)h8(q0.worktreePath);return w8(q0.worktreePath)},void 0,{equals:IJ}),Rf=U0(()=>{return M(),ID(q0.repo),SD(q0.repo)}),gf=U0(()=>E8({task:q0,activity:f.engineState?.().get(q0.id),job:f.taskJobs?.().get(q0.id),live:$0(),spinnerFrame:0,subtitleBudget:Z0(),truncateBranch:nD,mainBranch:Rf()})),o=U0(()=>x8(gf(),a)),e=()=>!o().loading?J.primary:u0(o().tone),B0=()=>o0()?J.focusAccent:l0()?J.primary:void 0,C0=()=>o0()||l0()?"\u258C":" ";return(()=>{var A=W("box"),P0=W("box"),K0=W("box"),E0=W("text"),W0=W("box"),L0=W("text"),R0=W("text"),Jf=W("box"),Yf=W("text"),n0=W("box"),yf=W("text");return D(A,P0),Z(A,"flexDirection","column"),Z(A,"gap",0),Z(A,"paddingBottom",0),D(P0,K0),D(P0,Jf),hY((k0)=>{F0.set(b0,k0),mf(()=>{if(F0.get(b0)===k0)F0.delete(b0)})},P0),Z(P0,"flexDirection","column"),Z(P0,"gap",0),Z(P0,"onMouseUp",()=>{if(f.onSelect(q0.id),f.activateOnClick)f.onActivate?.(q0.id)}),Z(P0,"onMouseOver",(k0)=>w0({task:q0,x:k0.x,y:k0.y})),Z(P0,"onMouseOut",()=>w0((k0)=>k0?.task.id===q0.id?null:k0)),D(K0,E0),D(K0,W0),Z(K0,"flexDirection","row"),Z(K0,"gap",0),Z(E0,"wrapMode","none"),K(E0,C0),D(W0,L0),D(W0,R0),Z(W0,"flexDirection","row"),Z(W0,"flexGrow",1),Z(W0,"paddingRight",1),Z(W0,"gap",0),Z(L0,"wrapMode","none"),K(L0,()=>o().projectGlyph),Z(R0,"wrapMode","none"),Z(R0,"flexGrow",1),K(R0,()=>u8(o().titleText,c())),D(Jf,Yf),D(Jf,n0),Z(Jf,"flexDirection","row"),Z(Jf,"gap",0),Z(Yf,"wrapMode","none"),K(Yf,C0),D(n0,yf),Z(n0,"flexDirection","row"),Z(n0,"flexGrow",1),Z(n0,"paddingLeft",2),Z(n0,"paddingRight",1),Z(n0,"gap",1),Z(yf,"wrapMode","none"),Z(yf,"flexGrow",1),K(yf,()=>o().subtitleText),K(n0,b(X0,{get when(){return t0().added>0},get children(){var k0=W("text"),wf=x0("+");return D(k0,wf),Z(k0,"wrapMode","none"),K(k0,()=>t0().added,null),u((v)=>Z(k0,"fg",J.success,v)),k0}}),null),K(n0,b(X0,{get when(){return t0().deleted>0},get children(){var k0=W("text"),wf=x0("\u2212");return D(k0,wf),Z(k0,"wrapMode","none"),K(k0,()=>t0().deleted,null),u((v)=>Z(k0,"fg",J.error,v)),k0}}),null),u((k0)=>{var wf=o0()?J.backgroundElement:void 0,v=B0(),A0=e(),Bf=bf.BOLD,Ff=J.text,Qf=bf.BOLD,d=B0(),s=J.textMuted,S0=bf.DIM;return wf!==k0.e&&(k0.e=Z(P0,"backgroundColor",wf,k0.e)),v!==k0.t&&(k0.t=Z(E0,"fg",v,k0.t)),A0!==k0.a&&(k0.a=Z(L0,"fg",A0,k0.a)),Bf!==k0.o&&(k0.o=Z(L0,"attributes",Bf,k0.o)),Ff!==k0.i&&(k0.i=Z(R0,"fg",Ff,k0.i)),Qf!==k0.n&&(k0.n=Z(R0,"attributes",Qf,k0.n)),d!==k0.s&&(k0.s=Z(Yf,"fg",d,k0.s)),s!==k0.h&&(k0.h=Z(yf,"fg",s,k0.h)),S0!==k0.r&&(k0.r=Z(yf,"attributes",S0,k0.r)),k0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0}),A})()};return(()=>{var n=W("box"),q0=W("box"),b0=W("box"),o0=W("text"),l0=W("box"),$0=W("box"),t0=W("text"),Rf=W("scrollbox"),gf=W("box");return D(n,q0),D(n,l0),D(n,Rf),hY((o)=>{J0=o},n),Z(n,"flexGrow",1),Z(n,"minHeight",0),Z(n,"flexDirection","column"),Z(n,"paddingTop",1),Z(n,"paddingBottom",1),Z(n,"paddingLeft",0),Z(n,"paddingRight",0),D(q0,b0),Z(q0,"flexDirection","row"),Z(q0,"justifyContent","space-between"),Z(q0,"gap",1),Z(q0,"paddingBottom",1),Z(q0,"paddingLeft",1),Z(q0,"paddingRight",1),D(b0,o0),Z(b0,"flexDirection","row"),Z(b0,"gap",1),D(o0,x0("KOBE")),Z(o0,"wrapMode","none"),K(b0,b(X0,{get when(){return f.headerStatus?.()},children:(o)=>(()=>{var e=W("text");return Z(e,"wrapMode","none"),Z(e,"onMouseUp",()=>f.onHeaderStatusClick?.()),K(e,()=>o().label),u((B0)=>{var C0=o().emphasize?J.warning:J.textMuted,A=o().emphasize?bf.BOLD:bf.DIM;return C0!==B0.e&&(B0.e=Z(e,"fg",C0,B0.e)),A!==B0.t&&(B0.t=Z(e,"attributes",A,B0.t)),B0},{e:void 0,t:void 0}),e})()}),null),K(q0,b(X0,{get when(){return f.onAddTask},get children(){var o=W("text");return D(o,x0("[+]")),Z(o,"wrapMode","none"),Z(o,"onMouseUp",()=>f.onAddTask?.()),u((e)=>{var B0=J.primary,C0=bf.BOLD;return B0!==e.e&&(e.e=Z(o,"fg",B0,e.e)),C0!==e.t&&(e.t=Z(o,"attributes",C0,e.t)),e},{e:void 0,t:void 0}),o}}),null),K(n,b(X0,{get when(){return X()},get children(){var o=W("box"),e=W("text"),B0=W("text"),C0=W("text");return D(o,e),D(o,B0),D(o,C0),Z(o,"flexDirection","row"),Z(o,"gap",0),Z(o,"paddingBottom",1),Z(o,"paddingLeft",1),D(e,x0("/")),Z(e,"wrapMode","none"),Z(B0,"wrapMode","none"),K(B0,Q),D(C0,x0("\u2588")),Z(C0,"wrapMode","none"),K(o,b(X0,{get when(){return Q().length===0},get children(){var A=W("text"),P0=x0(" ");return D(A,P0),Z(A,"wrapMode","none"),K(A,()=>F("tasks.search.placeholder"),null),u((K0)=>Z(A,"fg",J.textMuted,K0)),A}}),null),K(o,b(X0,{get when(){return Q().length>0},get children(){var A=W("text"),P0=x0(" "),K0=x0("/");return D(A,P0),D(A,K0),Z(A,"wrapMode","none"),K(A,()=>p().length,K0),K(A,f0,null),u((E0)=>Z(A,"fg",J.textMuted,E0)),A}}),null),u((A)=>{var{info:P0,text:K0,info:E0}=J,W0=bf.BLINK;return P0!==A.e&&(A.e=Z(e,"fg",P0,A.e)),K0!==A.t&&(A.t=Z(B0,"fg",K0,A.t)),E0!==A.a&&(A.a=Z(C0,"fg",E0,A.a)),W0!==A.o&&(A.o=Z(C0,"attributes",W0,A.o)),A},{e:void 0,t:void 0,a:void 0,o:void 0}),o}}),l0),D(l0,$0),Z(l0,"flexDirection","row"),Z(l0,"justifyContent","space-between"),Z(l0,"gap",1),Z(l0,"paddingBottom",1),Z(l0,"paddingLeft",1),Z(l0,"paddingRight",1),D($0,t0),Z($0,"flexDirection","row"),Z($0,"gap",2),K($0,b(Zf,{each:lX,children:(o)=>{let e=()=>z()===o.view;return(()=>{var B0=W("text");return Z(B0,"wrapMode","none"),Z(B0,"onMouseUp",()=>G(o.view)),K(B0,()=>bb(o.view)),u((C0)=>{var A=e()?J.primary:J.textMuted,P0=e()?bf.BOLD:void 0;return A!==C0.e&&(C0.e=Z(B0,"fg",A,C0.e)),P0!==C0.t&&(C0.t=Z(B0,"attributes",P0,C0.t)),C0},{e:void 0,t:void 0}),B0})()}}),t0),D(t0,x0("[/]")),Z(t0,"wrapMode","none"),K(l0,b(X0,{get when(){return f.sortMode},get children(){var o=W("text");return Z(o,"wrapMode","none"),Z(o,"onMouseUp",()=>f.onSortModeToggle?.()),K(o,()=>F("tasks.sort")),u((e)=>{var B0=J.textMuted,C0=bf.DIM;return B0!==e.e&&(e.e=Z(o,"fg",B0,e.e)),C0!==e.t&&(e.t=Z(o,"attributes",C0,e.t)),e},{e:void 0,t:void 0}),o}}),null),K(n,b(X0,{get when(){return g0().length>0},get children(){var o=W("box"),e=W("box"),B0=W("text"),C0=W("text"),A=W("scrollbox"),P0=W("box");return D(o,e),D(o,A),Z(o,"flexDirection","column"),Z(o,"flexShrink",0),D(e,B0),D(e,C0),Z(e,"flexDirection","row"),Z(e,"flexShrink",0),Z(e,"gap",1),Z(e,"paddingLeft",1),Z(e,"paddingRight",1),Z(e,"onMouseUp",()=>G0()),Z(B0,"wrapMode","none"),K(B0,()=>F("tasks.header.projects")),K(e,b(X0,{get when(){return y().length>1},get children(){var K0=W("text");return Z(K0,"wrapMode","none"),K(K0,t),u((E0)=>{var W0=z0()?J.primary:J.textMuted,L0=z0()?bf.BOLD:void 0;return W0!==E0.e&&(E0.e=Z(K0,"fg",W0,E0.e)),L0!==E0.t&&(E0.t=Z(K0,"attributes",L0,E0.t)),E0},{e:void 0,t:void 0}),K0}}),C0),Z(C0,"wrapMode","none"),K(C0,()=>"\u2500".repeat(Math.max(2,x()-10-F("tasks.header.projects").length-(y().length>1?t().length+1:0)-(y().length>1?T().length+1:0)))),K(e,b(X0,{get when(){return y().length>1},get children(){var K0=W("text");return Z(K0,"wrapMode","none"),K(K0,T),u((E0)=>{var W0=J.textMuted,L0=bf.DIM;return W0!==E0.e&&(E0.e=Z(K0,"fg",W0,E0.e)),L0!==E0.t&&(E0.t=Z(K0,"attributes",L0,E0.t)),E0},{e:void 0,t:void 0}),K0}}),null),D(A,P0),hY((K0)=>{P=K0},A),Z(A,"flexShrink",0),Z(A,"flexGrow",0),Z(A,"minHeight",0),Z(A,"stickyScroll",!1),Z(A,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),Z(P0,"flexShrink",0),Z(P0,"gap",0),Z(P0,"paddingRight",1),K(P0,b(Zf,{get each(){return g0()},children:(K0)=>b(_0,{row:K0})})),u((K0)=>{var E0=J.textMuted,W0=bf.BOLD,L0=J.border,R0=H0();return E0!==K0.e&&(K0.e=Z(B0,"fg",E0,K0.e)),W0!==K0.t&&(K0.t=Z(B0,"attributes",W0,K0.t)),L0!==K0.a&&(K0.a=Z(C0,"fg",L0,K0.a)),R0!==K0.o&&(K0.o=Z(A,"maxHeight",R0,K0.o)),K0},{e:void 0,t:void 0,a:void 0,o:void 0}),o}}),Rf),K(n,b(p0,{get label(){return F("tasks.header.tasks")},get suffix(){return I0(()=>C()==="default")()?void 0:C()},get topPad(){return g0().length>0}}),Rf),D(Rf,gf),hY((o)=>{M0=o},Rf),Z(Rf,"flexGrow",1),Z(Rf,"minHeight",0),Z(Rf,"stickyScroll",!1),Z(Rf,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),Z(gf,"flexShrink",0),Z(gf,"gap",0),Z(gf,"paddingRight",1),K(gf,b(Zf,{get each(){return $()},children:(o)=>{let{task:e,flatIndex:B0}=o,C0=()=>B0===T0(),A=()=>e.id===f.selectedId(),P0=U0(()=>{let Yf=f.chatRunState?.();if(!Yf)return!1;let n0=`${e.id}:`;for(let[yf,k0]of Yf)if(k0==="running"&&yf.startsWith(n0))return!0;return!1}),K0=U0(()=>{let Yf=_q(f.worktreeChanges?.(),e.worktreePath);if(Yf)return Yf;if(M(),!e.archived)h8(e.worktreePath);return w8(e.worktreePath)},void 0,{equals:IJ}),E0=U0(()=>E8({task:e,activity:f.engineState?.().get(e.id),job:f.taskJobs?.().get(e.id),live:P0(),spinnerFrame:0,subtitleBudget:Z0(),truncateBranch:nD,mainBranch:""})),W0=U0(()=>x8(E0(),a)),L0=()=>u0(W0().tone),R0=()=>C0()?J.focusAccent:A()?J.primary:void 0,Jf=()=>C0()||A()?"\u258C":" ";return(()=>{var Yf=W("box"),n0=W("box"),yf=W("box"),k0=W("text"),wf=W("box"),v=W("text"),A0=W("text"),Bf=W("box"),Ff=W("text"),Qf=W("box"),d=W("text");return D(Yf,n0),Z(Yf,"flexDirection","column"),Z(Yf,"gap",0),Z(Yf,"paddingBottom",1),D(n0,yf),D(n0,Bf),hY((s)=>{F0.set(B0,s),mf(()=>{if(F0.get(B0)===s)F0.delete(B0)})},n0),Z(n0,"flexDirection","column"),Z(n0,"gap",0),Z(n0,"onMouseUp",()=>{if(f.onSelect(e.id),f.activateOnClick)f.onActivate?.(e.id)}),Z(n0,"onMouseOver",(s)=>w0({task:e,x:s.x,y:s.y})),Z(n0,"onMouseOut",()=>w0((s)=>s?.task.id===e.id?null:s)),D(yf,k0),D(yf,wf),Z(yf,"flexDirection","row"),Z(yf,"gap",0),Z(k0,"wrapMode","none"),K(k0,Jf),D(wf,v),D(wf,A0),Z(wf,"flexDirection","row"),Z(wf,"flexGrow",1),Z(wf,"paddingRight",1),Z(wf,"gap",0),Z(v,"wrapMode","none"),K(v,()=>W0().stateGlyph),Z(A0,"wrapMode","none"),Z(A0,"flexGrow",1),K(A0,()=>u8(W0().titleText,c())),K(wf,b(X0,{get when(){return I0(()=>!!f.moveMode?.())()&&C0()},get children(){var s=W("text");return Z(s,"wrapMode","none"),K(s,()=>F("tasks.moveChip")),u((S0)=>Z(s,"fg",J.warning,S0)),s}}),null),D(Bf,Ff),D(Bf,Qf),Z(Bf,"flexDirection","row"),Z(Bf,"gap",0),Z(Ff,"wrapMode","none"),K(Ff,Jf),D(Qf,d),Z(Qf,"flexDirection","row"),Z(Qf,"flexGrow",1),Z(Qf,"paddingLeft",2),Z(Qf,"paddingRight",1),Z(Qf,"gap",1),Z(d,"wrapMode","none"),Z(d,"flexGrow",1),K(d,()=>W0().subtitleText),K(Qf,b(X0,{get when(){return e.pinned===!0},get children(){var s=W("text");return D(s,x0("\u25B4")),Z(s,"wrapMode","none"),u((S0)=>Z(s,"fg",J.warning,S0)),s}}),null),K(Qf,b(X0,{get when(){return hD(e)},children:(s)=>(()=>{var S0=W("text");return Z(S0,"wrapMode","none"),K(S0,()=>s().glyph),u((N0)=>Z(S0,"fg",u0(s().tone),N0)),S0})()}),null),K(Qf,b(X0,{get when(){return K0().added>0},get children(){var s=W("text"),S0=x0("+");return D(s,S0),Z(s,"wrapMode","none"),K(s,()=>K0().added,null),u((N0)=>Z(s,"fg",J.success,N0)),s}}),null),K(Qf,b(X0,{get when(){return K0().deleted>0},get children(){var s=W("text"),S0=x0("\u2212");return D(s,S0),Z(s,"wrapMode","none"),K(s,()=>K0().deleted,null),u((N0)=>Z(s,"fg",J.error,N0)),s}}),null),u((s)=>{var S0=C0()?J.backgroundElement:void 0,N0=R0(),Z1=L0(),K1=bf.BOLD,tf=J.text,v1=A()||C0()?bf.BOLD:void 0,xJ=R0(),M1=J.textMuted,wJ=bf.DIM;return S0!==s.e&&(s.e=Z(n0,"backgroundColor",S0,s.e)),N0!==s.t&&(s.t=Z(k0,"fg",N0,s.t)),Z1!==s.a&&(s.a=Z(v,"fg",Z1,s.a)),K1!==s.o&&(s.o=Z(v,"attributes",K1,s.o)),tf!==s.i&&(s.i=Z(A0,"fg",tf,s.i)),v1!==s.n&&(s.n=Z(A0,"attributes",v1,s.n)),xJ!==s.s&&(s.s=Z(Ff,"fg",xJ,s.s)),M1!==s.h&&(s.h=Z(d,"fg",M1,s.h)),wJ!==s.r&&(s.r=Z(d,"attributes",wJ,s.r)),s},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0}),Yf})()}}),null),K(gf,b(X0,{get when(){return p().length===0},get children(){var o=W("box"),e=W("text");return D(o,e),Z(o,"paddingTop",1),Z(o,"paddingLeft",1),K(e,(()=>{var B0=I0(()=>!!(X()&&Q().trim().length>0));return()=>B0()?F("tasks.empty.noMatchSearch"):I0(()=>!!z0())()?I0(()=>z()==="active")()?F("tasks.empty.noActiveProject"):F("tasks.empty.noArchivedProject"):I0(()=>z()==="active")()?F("tasks.empty.noActive"):F("tasks.empty.noArchived")})()),u((B0)=>Z(e,"fg",J.textMuted,B0)),o}}),null),K(gf,b(X0,{get when(){return I0(()=>!!(z0()&&p().length>0&&!I()))()&&!(X()&&Q().trim().length>0)},get children(){var o=W("box"),e=W("text");return D(o,e),Z(o,"paddingTop",1),Z(o,"paddingLeft",1),Z(e,"wrapMode","none"),K(e,(()=>{var B0=I0(()=>z()==="active");return()=>B0()?F("tasks.empty.noActiveProject"):F("tasks.empty.noArchivedProject")})()),u((B0)=>{var C0=J.textMuted,A=bf.DIM;return C0!==B0.e&&(B0.e=Z(e,"fg",C0,B0.e)),A!==B0.t&&(B0.t=Z(e,"attributes",A,B0.t)),B0},{e:void 0,t:void 0}),o}}),null),K(gf,b(X0,{get when(){return I0(()=>z()==="archived")()&&p().length>0},get children(){var o=W("box"),e=W("text");return D(o,e),Z(o,"paddingTop",1),Z(o,"paddingLeft",1),Z(e,"wrapMode","none"),K(e,()=>F("tasks.archiveHint")),u((B0)=>{var C0=J.textMuted,A=bf.DIM;return C0!==B0.e&&(B0.e=Z(e,"fg",C0,B0.e)),A!==B0.t&&(B0.t=Z(e,"attributes",A,B0.t)),B0},{e:void 0,t:void 0}),o}}),null),K(n,b(X0,{get when(){return f.zenActive?.()},get children(){var o=W("box"),e=W("text");return D(o,e),Z(o,"flexShrink",0),Z(o,"paddingLeft",1),Z(o,"paddingRight",1),Z(o,"paddingTop",1),D(e,x0("\u262F ZEN")),Z(e,"wrapMode","none"),u((B0)=>{var C0=J.accent,A=bf.BOLD;return C0!==B0.e&&(B0.e=Z(e,"fg",C0,B0.e)),A!==B0.t&&(B0.t=Z(e,"attributes",A,B0.t)),B0},{e:void 0,t:void 0}),o}}),null),K(n,b(X0,{get when(){return y0()},children:(o)=>{let e=U0(()=>{let W0=o().task,L0=[];if(L0.push({text:W0.kind==="main"?MJ(W0.repo):W0.title,bold:!0}),W0.branch.length>0)L0.push({text:`\u2387 ${W0.branch}`});if(W0.worktreePath.length>0)L0.push({text:W0.worktreePath,dim:!0});return L0}),B0=72,C0=U0(()=>Math.min(68,Math.max(...e().map((W0)=>Tb(W0.text))))),A=U0(()=>C0()+4),P0=U0(()=>e().length+2),K0=U0(()=>Math.max(0,Math.min(o().x+2,V0().width-A()-1))),E0=U0(()=>Math.max(0,Math.min(o().y+1,V0().height-P0()-1)));return(()=>{var W0=W("box");return Z(W0,"position","absolute"),Z(W0,"zIndex",2600),Z(W0,"flexDirection","column"),Z(W0,"border",!0),Z(W0,"paddingLeft",1),Z(W0,"paddingRight",1),K(W0,b(Zf,{get each(){return e()},children:(L0)=>(()=>{var R0=W("text");return Z(R0,"wrapMode","none"),K(R0,(()=>{var Jf=I0(()=>!!L0.dim);return()=>Jf()?ub(L0.text,C0()):T8(L0.text,C0())})()),u((Jf)=>{var Yf=L0.dim?J.textMuted:J.text,n0=L0.bold?bf.BOLD:L0.dim?bf.DIM:void 0;return Yf!==Jf.e&&(Jf.e=Z(R0,"fg",Yf,Jf.e)),n0!==Jf.t&&(Jf.t=Z(R0,"attributes",n0,Jf.t)),Jf},{e:void 0,t:void 0}),R0})()})),u((L0)=>{var R0=K0(),Jf=E0(),Yf=A(),n0=J.focusAccent,yf=J.backgroundElement;return R0!==L0.e&&(L0.e=Z(W0,"left",R0,L0.e)),Jf!==L0.t&&(L0.t=Z(W0,"top",Jf,L0.t)),Yf!==L0.a&&(L0.a=Z(W0,"width",Yf,L0.a)),n0!==L0.o&&(L0.o=Z(W0,"borderColor",n0,L0.o)),yf!==L0.i&&(L0.i=Z(W0,"backgroundColor",yf,L0.i)),L0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),W0})()}}),null),u((o)=>{var e=Y()?J.focusAccent:J.textMuted,B0=bf.BOLD,C0=J.textMuted,A=bf.DIM;return e!==o.e&&(o.e=Z(o0,"fg",e,o.e)),B0!==o.t&&(o.t=Z(o0,"attributes",B0,o.t)),C0!==o.a&&(o.a=Z(t0,"fg",C0,o.a)),A!==o.o&&(o.o=Z(t0,"attributes",A,o.o)),o},{e:void 0,t:void 0,a:void 0,o:void 0}),n})()}var cD=32,lX,Sb=2000,Ib=16;var iD=k(()=>{h();h();h();h();h();h();h();h();h();G1();h();Wf();xf();xf();TD();uQ();ED();PD();VG();mD();lX=[{view:"active"},{view:"archived"}]});var pD={};jf(pD,{startTasksPane:()=>Pb,legendRowCap:()=>rD,legendCap:()=>$D});import{existsSync as lD}from"fs";import{stat as Eb}from"fs/promises";import{TextAttributes as PQ}from"@opentui/core";function P8(f){return!!f&&XZ(f)}function aD(f){let J=f instanceof Error?f.message:String(f);if(/not a git repository/i.test(J))return F("tasks.toast.worktreeErrorNotGit");return F("tasks.toast.worktreeErrorGeneric",{message:J})}function wb(f){let{theme:J}=i0(),Y=vf(),z=IG(),G=NQ(),[X,q]=r(f.tasks().some((P)=>P.id===f.initialTaskId)?f.initialTaskId:f.tasks()[0]?.id??null);function Q(P){G.notify({kind:"error",taskId:X()??"",tabId:"",title:P})}function H(P){G.notify({kind:"done",taskId:X()??"",tabId:"",title:P})}let[B,V]=r(!1),[j,U]=r(z.get("activeSortMode")==="recent"?"recent":"default"),L=z.get("tasksPane.projectFilter"),[O,M]=r(typeof L==="string"&&L.length>0?L:null),R=(P)=>{M(P),z.set("tasksPane.projectFilter",P)},[S,a]=r(null),[N,g]=r(!1);{let P=process.env.TMUX_PANE;if(P){let M0=()=>{d0(["show-options","-wqv","-t",P,UY]).then(({code:F0,stdout:a0})=>{g(F0===0&&a0.trim().length>0)})};M0();let J0=setInterval(M0,1000);mf(()=>clearInterval(J0))}}let C=TJ(),y=!f.initialTaskId;zf(()=>{let P=f.orch?.activeTaskSignal()();if(!P)return;if(!y){if(P!==f.initialTaskId)return;y=!0}q(P)}),zf(O1(()=>f.orch?.uiPrefsSignal()(),(P)=>{if(P&&P.sortMode!==$f(j))U(P.sortMode);if(P&&P.projectFilter!==$f(O))M(P.projectFilter)})),zf(()=>{let P=f.orch?.updateSignal()();if(P)a(P)});let _={orch:f.orch,tasks:()=>f.tasks(),confirm:async(P)=>await GY.show(Y,P.title,P.body,P.cancelLabel,P.confirmLabel)===!0,promptText:(P,M0)=>zY.show(Y,P,M0),logger:console,logPrefix:"[kobe tasks]",notifyError:Q,notifyInfo:H,reload:()=>f.reload(),switchBeforeKill:!0,updateActiveTask:!0,onTaskDeleted:(P,M0)=>{if(X()!==P)return;let J0=f.tasks();q(M0?.id??(J0.find((F0)=>!F0.archived)??J0[0])?.id??null)},promptNewTask:(P,M0,J0)=>OQ.show(Y,P,M0,J0),cursorRepo:()=>{let P=f.tasks();return(P.find((M0)=>M0.id===X())??P[0])?.repo},lastVendor:()=>kf("lastSelectedVendor"),rememberVendor:(P)=>af("lastSelectedVendor",P),openCreateSurface:async(P)=>{if(Lz(z.get(oJ,Dz))!=="chattab")return!1;let J0=await k1();if(!J0)return!1;return await iq(J0,P),!0},selectTask:(P)=>q(P),enterTask:(P)=>H0(P)};async function z0(){await gD(_)}async function t(){if(Lz(z.get(oJ,Dz))==="chattab"){let J0=await k1();if(J0){await nq(J0);return}}if(!(await Tz.show(Y,z,f.orch??void 0)).visualPrefsChanged)return;if(!z.flush())return;try{let J0=await k1();if(J0)await BG(J0)}catch(J0){console.error("[kobe tasks] failed to refresh workspace panes:",J0)}}async function Y0(){let P=await k1();if(P){await dq(P);return}uG.show(Y)}async function T(){if(!S()?.hasUpdate){H(F("tasks.toast.alreadyLatest",{version:s0}));return}let M0=await k1();if(!M0)return;await lq(M0)}async function Q0(P){await LD(_,P)}async function p(P){await MD(_,P)}async function D0(P){await FD(_,P)}async function g0(P){await OD(_,P)}async function $(P){await AD(_,P)}async function E(P){let J0=f.tasks().find((a0)=>a0.id===P)?.worktreePath;if(!J0||!lD(J0)){if(!f.orch){console.error("[kobe tasks] no daemon; cannot materialise worktree"),Q(F("tasks.toast.noDaemonWorktree"));return}try{J0=await f.orch.ensureWorktree(P)}catch(a0){console.error("[kobe tasks] task.ensureWorktree failed:",a0),Q(aD(a0));return}await f.reload()}if(!J0||!lD(J0))return;let F0=CD();if(!F0){console.error("[kobe tasks] no editor/opener found; set KOBE_OPEN_EDITOR"),Q(F("tasks.toast.noEditor"));return}if(!kD(J0,F0))console.error(`[kobe tasks] failed to open worktree with ${F0.label}`),Q(F("tasks.toast.openWorktreeFailed",{label:F0.label}))}async function f0(){if(!process.env.TMUX_PANE)return;let P=await k1();if(!P)return;let M0=await $z(P);if(!M0)return;await h0(["select-pane","-t",M0])}async function I(P,M0){let J0=f.tasks().find((F0)=>F0.id===P);if(!J0||J0.kind==="main"||!f.orch)return;try{await f.orch.moveTask(P,M0)}catch(F0){console.error("[kobe tasks] task.move failed:",F0),Q(F("tasks.toast.moveTaskFailed",{message:F0 instanceof Error?F0.message:String(F0)}));return}q(P),await f.reload()}let[G0,x]=r(z.get("tasksPane.keysCollapsed",!1)===!0),c=(P)=>{x(P),z.set("tasksPane.keysCollapsed",P)};zf(O1(()=>f.orch?.uiPrefsSignal()(),(P)=>{if(P&&P.keysCollapsed!==$f(G0))x(P.keysCollapsed)}));let[Z0,V0]=r(!1);Uf(()=>({enabled:Y.stack.length===0&&!Z0(),bindings:mY({"help.open":()=>void Y0(),"task.new":()=>void z0(),"settings.open.sidebar":()=>void t(),"tasks.update":()=>void T(),"tasks.openWorktree":()=>{let P=X();if(P)E(P)},"tasks.renameBranch":()=>{let P=X();if(P)g0(P)},"tasks.cycleEngine":()=>{let P=X();if(P)$(P)},"tasks.toggleKeys":()=>c(!G0()),"tasks.focusEngine":()=>void f0().catch((P)=>console.error("[kobe tasks] focus engine pane failed:",P))})}));async function H0(P){let M0=Lf(P),J0=f.tasks().find((n)=>n.id===P),F0=await k1();if(F0&&F0!==M0)await DX(F0);if(await Hf(M0)){let n=await Bz(M0,"@kobe_worktree")||J0?.worktreePath||"";if(P8(n)){let q0=J0?.repo?sJ(J0.repo,n,{kind:"repo-init"}):void 0;await TY({name:M0,cwd:n,command:N1(J0?.vendor),taskId:P,vendor:J0?.vendor,repo:J0?.repo,launchInit:q0})}await $q(M0),await h0(["switch-client","-t",`=${M0}`]),f.orch?.setActiveTask(P).catch(()=>{});return}let p0=J0?.worktreePath;if(!P8(p0)){if(!f.orch){console.error("[kobe tasks] no daemon; cannot materialise worktree"),Q(F("tasks.toast.noDaemonOpen"));return}try{p0=await f.orch.ensureWorktree(P)}catch(n){console.error("[kobe tasks] task.ensureWorktree failed:",n),Q(aD(n));return}await f.reload()}if(!P8(p0))return;let u0=J0?.repo?sJ(J0.repo,p0,{kind:"repo-init"}):void 0;if(!await TY({name:M0,cwd:p0,command:N1(J0?.vendor),taskId:P,vendor:J0?.vendor,repo:J0?.repo,launchInit:u0})){console.error(`[kobe tasks] failed to start session ${M0}`),Q(F("tasks.toast.sessionStartFailed"));return}await $q(M0),await h0(["switch-client","-t",`=${M0}`]),f.orch?.setActiveTask(P).catch(()=>{})}let y0=U0(()=>{let P=S();if(P?.hasUpdate)return{label:`v${P.latest} \u2191`,emphasize:!0};return{label:`v${s0}`,emphasize:!1}}),w0=()=>f.orch?.daemonStaleSignal()()??!1,T0=()=>f.orch?.daemonVersionSignal()()??null,r0=U0(()=>f.tasks().find((P)=>P.id===X())?.kind==="main");return(()=>{var P=W("box"),M0=W("box");return D(P,M0),Z(P,"flexDirection","column"),Z(P,"flexGrow",1),K(P,b(KD,{stale:w0,daemonVersion:T0,clientVersion:s0,width:()=>C().width}),M0),Z(M0,"flexGrow",1),Z(M0,"flexShrink",1),K(M0,b(dD,{get tasks(){return f.tasks},selectedId:X,onSelect:q,onActivate:(J0)=>void H0(J0),activateOnClick:!0,headerStatus:y0,onHeaderStatusClick:()=>void T(),onAddTask:()=>void z0(),zenActive:N,width:()=>C().width,get engineState(){return I0(()=>!!f.orch)()?f.orch.engineStateSignal():void 0},get taskJobs(){return I0(()=>!!f.orch)()?f.orch.taskJobsSignal():void 0},get worktreeChanges(){return f.orch?()=>{let J0=f.orch;if(!J0||J0.connectionStateSignal()()!=="online")return null;return J0.worktreeChangesSignal()()}:void 0},onRenameRequest:(J0)=>void D0(J0),onDeleteRequest:(J0)=>void p(J0),onArchiveRequest:(J0)=>void Q0(J0),onLocalMergeRequest:(J0)=>{let F0=f.tasks().find((a0)=>a0.id===J0);if(!F0||F0.kind==="main")return;q(J0),V((a0)=>!a0)},moveMode:B,onMoveRequest:(J0,F0)=>void I(J0,F0),onMoveModeExit:()=>V(!1),sortMode:j,projectFilter:O,onProjectFilterChange:R,onSortModeToggle:()=>{let J0=j()==="default"?"recent":"default";U(J0),z.set("activeSortMode",J0)},focused:()=>Y.stack.length===0,onSearchActiveChange:V0})),K(P,b(hb,{moveMode:B,selectedIsMain:r0,collapsed:G0,onToggleCollapsed:()=>c(!G0())}),null),u((J0)=>Z(P,"backgroundColor",J.background,J0)),P})()}function $D(f){let J=Q8(f);if(!J)return null;let Y=J.hint?.keys??J.keys[0];return Y&&Y.length>0?Y:null}function rD(f){let J=f.map($D).filter((Y)=>Y!==null);return J.length>0?J.join("/"):null}function hb(f){let{theme:J}=i0(),[Y,z]=r("Prefix");f1(()=>{d0(["show-options","-g","prefix"]).then(({code:U,stdout:L})=>{if(U!==0)return;let O=xQ(L);if(O)z(O)})});let G=()=>{q8();let U=gq(),L=U.binds,O=[],M=U.focus.filter((S)=>S!==null).map((S)=>S.chord);if(M.length===4&&M.every((S,a)=>S===yY[a]))O.push({k:"ctrl+hjkl",label:F("tasks.hints.movePanes")});else if(M.length>0)O.push({k:M[0],label:F("tasks.hints.movePanes")});let R=(S,a)=>{let N=a.map((g)=>L[g]?.chord).filter((g)=>!!g);if(N.length>0)O.push({k:`prefix ${N.join("/")}`,label:S})};if(L["tmux.detach"])O.push({k:L["tmux.detach"].chord,label:F("tasks.hints.detach")});return R(F("tasks.hints.splits"),["tmux.layout.workspaceSplit","tmux.layout.workspaceClose","tmux.layout.workspaceReset"]),R(F("tasks.hints.panes"),["tmux.layout.tasksToggle","tmux.layout.opsToggle","tmux.layout.terminalToggle"]),O},X=()=>{q8();let U=[{ids:["help.open"],label:F("tasks.hints.fullHelp")},{ids:["task.new"],label:F("tasks.hints.newTask")},{ids:["settings.open.sidebar"],label:F("tasks.hints.settings")},{ids:["sidebar.select"],label:F("tasks.hints.open")},{ids:["tasks.focusEngine"],label:F("tasks.hints.focusEngine")},{ids:["tasks.openWorktree"],label:F("tasks.hints.openWorktree")},{ids:["sidebar.delete"],label:F("tasks.hints.delete")},{ids:["sidebar.view"],label:F("tasks.hints.views")},{ids:["sidebar.projectFilter"],label:F("tasks.hints.project")}],L=[];for(let O of U){let M=rD(O.ids);if(M===null)continue;L.push({k:M,label:O.label,dimWhenMain:O.dimWhenMain})}return L.push(...G()),L},q=()=>[{k:"j/k",label:F("tasks.hints.reorder")},{k:"enter/esc",label:F("tasks.hints.done")}],Q=()=>f.moveMode?.()?q():X(),H=18,B=()=>Math.min(H,Math.max(...Q().map((U)=>U.label.length))),V=(U)=>U.length<=B()?U:`${U.slice(0,Math.max(0,B()-1))}\u2026`,j=()=>(f.collapsed?.()??!1)&&!(f.moveMode?.()??!1);return(()=>{var U=W("box"),L=W("text");return D(U,L),Z(U,"flexShrink",0),Z(U,"flexDirection","column"),Z(U,"paddingLeft",1),Z(U,"paddingRight",1),Z(U,"paddingTop",1),Z(U,"paddingBottom",1),Z(U,"gap",0),Z(L,"wrapMode","none"),Z(L,"onMouseUp",()=>f.onToggleCollapsed?.()),K(L,(()=>{var O=I0(()=>!!j());return()=>O()?F("tasks.hints.headerFolded"):F("tasks.hints.headerUnfolded")})()),K(U,b(X0,{get when(){return!j()},get children(){return b(Zf,{get each(){return Q()},children:(O)=>{let M=()=>O.dimWhenMain===!0&&(f.selectedIsMain?.()??!1);return(()=>{var R=W("box"),S=W("box"),a=W("text"),N=x0("["),g=x0("]"),C=W("box"),y=W("text");return D(R,S),D(R,C),Z(R,"flexDirection","row"),Z(R,"gap",1),Z(R,"justifyContent","space-between"),D(S,a),Z(S,"width",10),Z(S,"flexShrink",0),D(a,N),D(a,g),Z(a,"wrapMode","none"),K(a,()=>TG(O.k,Y()),g),D(C,y),Z(C,"flexShrink",0),Z(y,"wrapMode","none"),K(y,()=>V(O.label)),u((_)=>{var z0=M()?J.textMuted:J.accent,t=M()?PQ.DIM:PQ.BOLD,Y0=B(),T=J.textMuted,Q0=M()?PQ.DIM:void 0;return z0!==_.e&&(_.e=Z(a,"fg",z0,_.e)),t!==_.t&&(_.t=Z(a,"attributes",t,_.t)),Y0!==_.a&&(_.a=Z(C,"width",Y0,_.a)),T!==_.o&&(_.o=Z(y,"fg",T,_.o)),Q0!==_.i&&(_.i=Z(y,"attributes",Q0,_.i)),_},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),R})()}})}}),null),u((O)=>{var M=J.textMuted,R=PQ.DIM;return M!==O.e&&(O.e=Z(L,"fg",M,O.e)),R!==O.t&&(O.t=Z(L,"attributes",R,O.t)),O},{e:void 0,t:void 0}),U})()}async function Pb(f={}){await L1({logContext:"tasks",providers:{notifications:!0},setup:()=>vb(f)})}async function vb(f){let J=new xz({homeDir:OJ()});await J.load();let[Y,z]=r(J.list()),G=null;try{let B=await p1();if(B){let V=new W1(B);await V.init(),G=V}else iJ("tasks-boot","no daemon running \u2014 polling tasks.json (a gui owns daemon lifecycle)")}catch(B){WY("tasks-boot",B),iJ("tasks-boot","daemon subscribe failed \u2014 polling tasks.json")}let X=()=>G&&G.connectionStateSignal()()==="online"?G.tasksSignal()():Y(),q=async()=>{await J.load(),z(J.list())},Q="",H=setInterval(()=>{if(G&&G.connectionStateSignal()()==="online")return;(async()=>{let B="missing";try{let V=await Eb(J.filePath);B=`${V.mtimeMs}:${V.size}`}catch{}if(B===Q)return;Q=B,await q()})().catch(()=>{})},xb);return{root:()=>[b(wb,{tasks:X,get initialTaskId(){return f.initialTaskId},orch:G,reload:q}),b(WD,{})],onDestroy:()=>{if(H)clearInterval(H);G?.dispose()}}}var xb=1500;var _D=k(()=>{h();h();h();h();h();h();h();h();Tf();qJ();G1();h();eY();y1();Wf();PY();E1();lf();e1();vG();GG();Of();Rq();D1();F8();bG();O8();b8();VD();UD();SG();mX();yQ();xf();M8();nY();b1();RD();ND();iD();J1();P1();A8()});var oD={};jf(oD,{startSettingsHost:()=>cb});function mb(f){let J=IG(),Y=vf(),{theme:z}=i0(),G=!1,X=!1;async function q(){if(X)return;X=!0;try{if(J.flush()&&G){let H=await k1();if(H)await BG(H)}}catch(Q){console.error("[kobe settings] failed to refresh workspace panes:",Q)}finally{process.exit(0)}}return Uf(()=>({enabled:Y.stack.length===0,bindings:[{key:"escape",cmd:q},{key:"q",cmd:q},{key:"ctrl+c",cmd:q}]})),(()=>{var Q=W("scrollbox");return Z(Q,"flexGrow",1),Z(Q,"paddingTop",1),Z(Q,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),K(Q,b(Tz,{kv:J,get orchestrator(){return f.orchestrator??void 0},standalone:!0,onVisualPrefsChange:()=>{G=!0},onClose:q})),u((H)=>Z(Q,"backgroundColor",z.background,H)),Q})()}async function cb(){await L1({setup:async()=>{let f=null;try{let J=await p1();if(J){let Y=new W1(J);await Y.init(),f=Y}else console.error("[kobe settings] no daemon running; Restart backend disabled")}catch(J){console.error("[kobe settings] daemon unavailable; Restart backend disabled:",J)}return{root:()=>b(mb,{orchestrator:f}),onDestroy:()=>{f?.dispose()}}}})}var sD=k(()=>{h();h();h();h();h();h();y1();PY();b8();mX();xf();nY();b1();J1();P1()});var tD={};jf(tD,{startHelpHost:()=>db});function nb(){let f=vf(),{theme:J}=i0();function Y(){process.exit(0)}return Uf(()=>({enabled:f.stack.length===0,bindings:[{key:"escape",cmd:Y},{key:"q",cmd:Y},{key:"f1",cmd:Y},{key:"ctrl+c",cmd:Y}]})),(()=>{var z=W("box");return Z(z,"flexGrow",1),Z(z,"paddingTop",1),K(z,b(uG,{onClose:Y})),u((G)=>Z(z,"backgroundColor",J.background,G)),z})()}async function db(){await L1({providers:{kv:!1,focus:!1},setup:()=>({root:()=>b(nb,{})})})}var eD=k(()=>{h();h();h();h();h();F8();xf();nY();b1();P1()});var fL={};jf(fL,{startUpdateHost:()=>_b});import{spawn as ib,spawnSync as lb}from"child_process";import{TextAttributes as xG}from"@opentui/core";function ab(f){if(!f)return!1;let J=process.platform,[Y,z]=J==="darwin"?["open",[f]]:J==="win32"?["cmd",["/c","start","",f]]:["xdg-open",[f]];try{return ib(Y,z,{stdio:"ignore",detached:!0}).unref(),!0}catch{return!1}}function $b(f){return f.replace(/\r\n/g,`
220
+ `)}var Ak;var NU=k(()=>{qQ();Ak=["install","status","command"]});var uj={};jf(uj,{runHookSubcommand:()=>Ik,readTextWithTimeout:()=>IU,parseWorktreeAddPath:()=>uU,ensureGlobalKobeHooks:()=>Ek});import{homedir as Rk}from"os";import{join as bU,resolve as SU}from"path";async function IU(f,J=Ck){let Y;try{return await Promise.race([f(),new Promise((z)=>{Y=setTimeout(()=>z(""),J)})])}finally{if(Y!==void 0)clearTimeout(Y)}}async function TU(){try{let f=await IU(()=>Bun.stdin.text());if(!f.trim())return{};let J=JSON.parse(f);return J&&typeof J==="object"&&!Array.isArray(J)?J:{}}catch{return{}}}function kk(f,J){for(let Y=0;Y<f.length;Y++){if(f[Y]===J)return f[Y+1];if(f[Y].startsWith(`${J}=`))return f[Y].slice(J.length+1)}return}function yk(f){return!!f&&typeof f==="object"&&!Array.isArray(f)}function bk(f){let J=[],Y=/"([^"]*)"|'([^']*)'|(\S+)/g,z;while((z=Y.exec(f))!==null)J.push(z[1]??z[2]??z[3]??"");return J}function uU(f){let J=bk(f),Y=new Set(["-b","-B","--reason"]);for(let z=0;z+1<J.length;z++){if(J[z]!=="worktree"||J[z+1]!=="add")continue;let G=z+2;while(G<J.length){let X=J[G];if(X==="&&"||X==="||"||X===";"||X==="|"||X===">"||X===">>")break;if(X.startsWith("-")){G+=Y.has(X)?2:1;continue}return X}}return}async function Sk(){let f=await TU(),J=yk(f.tool_input)?f.tool_input:{},Y=typeof J.command==="string"?J.command:"";if(!Y.includes("worktree"))return;let z=uU(Y);if(!z)return;let G=typeof f.cwd==="string"&&f.cwd?f.cwd:process.cwd(),X=SU(G,z),q=await p1();if(!q)return;try{await q.request("worktree.reconcile",{cwd:G,worktreePath:X})}finally{q.close()}}async function Ik(f){let[J,...Y]=f;if(J==="setup"){await xk(Y);return}if(J===Nk){try{await Sk()}catch{}return}try{if(!J||!BZ(J))return;let z=await TU(),G=kk(Y,"--task-id"),X=typeof z.cwd==="string"&&z.cwd?z.cwd:process.cwd(),q;for(let H of EU())if(q=H.activityDetailFromPayload(J,z),q)break;let Q=await p1();if(!Q)return;try{await Q.request("engine.reportEvent",{...G?{taskId:G}:{cwd:X},kind:J,...q?{detail:q}:{}})}finally{Q.close()}}catch{}}function Tk(){return cf.map((f)=>uH(f)).filter((f)=>f.supportsWorktreeSync())}function EU(){return cf.map((f)=>uH(f)).filter((f)=>f.supportsHooks())}function Tj(){return bU(Rk(),".claude","settings.json")}function uk(f){if(!f||f==="off")return;if(f==="global")return Tj();if(f.startsWith("repo:"))return bU(SU(f.slice(5)),".claude","settings.json");return f}async function Ek(){try{let f=Tj();for(let J of EU())await J.installActivityHooks(f),await J.installWorktreeWatchHook(f);await xU()}catch{}}async function xU(){let f=Tk();if(f.length===0)return;let J=kf(yU),Y=new Set([Tj()]),z=uk(J);if(z)Y.add(z);for(let G of f)for(let X of Y)await G.removeWorktreeSyncHook(X);if(J!=="off")af(yU,"off")}async function xk(f){await xU(),process.stdout.write(["kobe hook setup is deprecated and now a no-op (cleanup only).","","The old external-worktree sync used a global WorktreeCreate hook, which is","a VCS provider hook \u2014 its presence broke `claude --worktree` / EnterWorktree","in every repo. Any hook kobe previously installed has been removed.","","Sync is now automatic: a `claude --worktree` (or any session) started in a","worktree under a repo kobe already tracks is adopted as a task on launch.","To adopt existing worktrees on demand, use the New Task dialog or `kobe adopt`.",""].join(`
221
+ `))}var Ck=500,Nk="worktree-created",yU="externalWorktreeSync";var Ej=k(()=>{L1();EH();jZ();Af();U1()});function hU(f){var J;if(f>=55296&&f<=57343||f>1114111)return 65533;return(J=wk.get(f))!==null&&J!==void 0?J:f}var xj,wk,wU;var PU=k(()=>{wk=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]]),wU=(xj=String.fromCodePoint)!==null&&xj!==void 0?xj:(f)=>{let J="";if(f>65535)f-=65536,J+=String.fromCharCode(f>>>10&1023|55296),f=56320|f&1023;return J+=String.fromCharCode(f),J}});function vU(f){let J=typeof atob==="function"?atob(f):typeof Buffer.from==="function"?Buffer.from(f,"base64").toString("binary"):new Buffer(f,"base64").toString("binary"),Y=J.length&-2,z=new Uint16Array(Y/2);for(let G=0,X=0;G<Y;G+=2){let q=J.charCodeAt(G),Q=J.charCodeAt(G+1);z[X++]=q|Q<<8}return z}var mU;var cU=k(()=>{mU=vU("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 j1;var nU=k(()=>{(function(f){f[f.VALUE_LENGTH=49152]="VALUE_LENGTH",f[f.FLAG13=8192]="FLAG13",f[f.BRANCH_LENGTH=8064]="BRANCH_LENGTH",f[f.JUMP_TABLE=127]="JUMP_TABLE"})(j1||(j1={}))});function wj(f){return f>=Ef.ZERO&&f<=Ef.NINE}function hk(f){return f>=Ef.UPPER_A&&f<=Ef.UPPER_F||f>=Ef.LOWER_A&&f<=Ef.LOWER_F}function Pk(f){return f>=Ef.UPPER_A&&f<=Ef.UPPER_Z||f>=Ef.LOWER_A&&f<=Ef.LOWER_Z||wj(f)}function vk(f){return f===Ef.EQUALS||Pk(f)}class hj{constructor(f,J,Y){this.decodeTree=f,this.emitCodePoint=J,this.errors=Y,this.state=of.EntityStart,this.consumed=1,this.result=0,this.treeIndex=0,this.excess=1,this.decodeMode=JY.Strict,this.runConsumed=0}startEntity(f){this.decodeMode=f,this.state=of.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1,this.runConsumed=0}write(f,J){switch(this.state){case of.EntityStart:{if(f.charCodeAt(J)===Ef.NUM)return this.state=of.NumericStart,this.consumed+=1,this.stateNumericStart(f,J+1);return this.state=of.NamedEntity,this.stateNamedEntity(f,J)}case of.NumericStart:return this.stateNumericStart(f,J);case of.NumericDecimal:return this.stateNumericDecimal(f,J);case of.NumericHex:return this.stateNumericHex(f,J);case of.NamedEntity:return this.stateNamedEntity(f,J)}}stateNumericStart(f,J){if(J>=f.length)return-1;if((f.charCodeAt(J)|dU)===Ef.LOWER_X)return this.state=of.NumericHex,this.consumed+=1,this.stateNumericHex(f,J+1);return this.state=of.NumericDecimal,this.stateNumericDecimal(f,J)}stateNumericHex(f,J){while(J<f.length){let Y=f.charCodeAt(J);if(wj(Y)||hk(Y)){let z=Y<=Ef.NINE?Y-Ef.ZERO:(Y|dU)-Ef.LOWER_A+10;this.result=this.result*16+z,this.consumed++,J++}else return this.emitNumericEntity(Y,3)}return-1}stateNumericDecimal(f,J){while(J<f.length){let Y=f.charCodeAt(J);if(wj(Y))this.result=this.result*10+(Y-Ef.ZERO),this.consumed++,J++;else return this.emitNumericEntity(Y,2)}return-1}emitNumericEntity(f,J){var Y;if(this.consumed<=J)return(Y=this.errors)===null||Y===void 0||Y.absenceOfDigitsInNumericCharacterReference(this.consumed),0;if(f===Ef.SEMI)this.consumed+=1;else if(this.decodeMode===JY.Strict)return 0;if(this.emitCodePoint(hU(this.result),this.consumed),this.errors){if(f!==Ef.SEMI)this.errors.missingSemicolonAfterCharacterReference();this.errors.validateNumericCharacterReference(this.result)}return this.consumed}stateNamedEntity(f,J){let{decodeTree:Y}=this,z=Y[this.treeIndex],G=(z&j1.VALUE_LENGTH)>>14;while(J<f.length){if(G===0&&(z&j1.FLAG13)!==0){let q=(z&j1.BRANCH_LENGTH)>>7;if(this.runConsumed===0){let Q=z&j1.JUMP_TABLE;if(f.charCodeAt(J)!==Q)return this.result===0?0:this.emitNotTerminatedNamedEntity();J++,this.excess++,this.runConsumed++}while(this.runConsumed<q){if(J>=f.length)return-1;let Q=this.runConsumed-1,H=Y[this.treeIndex+1+(Q>>1)],B=Q%2===0?H&255:H>>8&255;if(f.charCodeAt(J)!==B)return this.runConsumed=0,this.result===0?0:this.emitNotTerminatedNamedEntity();J++,this.excess++,this.runConsumed++}this.runConsumed=0,this.treeIndex+=1+(q>>1),z=Y[this.treeIndex],G=(z&j1.VALUE_LENGTH)>>14}if(J>=f.length)break;let X=f.charCodeAt(J);if(X===Ef.SEMI&&G!==0&&(z&j1.FLAG13)!==0)return this.emitNamedEntityData(this.treeIndex,G,this.consumed+this.excess);if(this.treeIndex=ck(Y,z,this.treeIndex+Math.max(1,G),X),this.treeIndex<0)return this.result===0||this.decodeMode===JY.Attribute&&(G===0||vk(X))?0:this.emitNotTerminatedNamedEntity();if(z=Y[this.treeIndex],G=(z&j1.VALUE_LENGTH)>>14,G!==0){if(X===Ef.SEMI)return this.emitNamedEntityData(this.treeIndex,G,this.consumed+this.excess);if(this.decodeMode!==JY.Strict&&(z&j1.FLAG13)===0)this.result=this.treeIndex,this.consumed+=this.excess,this.excess=0}J++,this.excess++}return-1}emitNotTerminatedNamedEntity(){var f;let{result:J,decodeTree:Y}=this,z=(Y[J]&j1.VALUE_LENGTH)>>14;return this.emitNamedEntityData(J,z,this.consumed),(f=this.errors)===null||f===void 0||f.missingSemicolonAfterCharacterReference(),this.consumed}emitNamedEntityData(f,J,Y){let{decodeTree:z}=this;if(this.emitCodePoint(J===1?z[f]&~(j1.VALUE_LENGTH|j1.FLAG13):z[f+1],Y),J===3)this.emitCodePoint(z[f+2],Y);return Y}end(){var f;switch(this.state){case of.NamedEntity:return this.result!==0&&(this.decodeMode!==JY.Attribute||this.result===this.treeIndex)?this.emitNotTerminatedNamedEntity():0;case of.NumericDecimal:return this.emitNumericEntity(0,2);case of.NumericHex:return this.emitNumericEntity(0,3);case of.NumericStart:return(f=this.errors)===null||f===void 0||f.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case of.EntityStart:return 0}}}function mk(f){let J="",Y=new hj(f,(z)=>J+=wU(z));return function(G,X){let q=0,Q=0;while((Q=G.indexOf("&",Q))>=0){J+=G.slice(q,Q),Y.startEntity(X);let B=Y.write(G,Q+1);if(B<0){q=Q+Y.end();break}q=Q+B,Q=B===0?q+1:q}let H=J+G.slice(q);return J="",H}}function ck(f,J,Y,z){let G=(J&j1.BRANCH_LENGTH)>>7,X=J&j1.JUMP_TABLE;if(G===0)return X!==0&&z===X?Y:-1;if(X){let B=z-X;return B<0||B>=G?-1:f[Y+B]-1}let q=G+1>>1,Q=0,H=G-1;while(Q<=H){let B=Q+H>>>1,V=B>>1,U=f[Y+V]>>(B&1)*8&255;if(U<z)Q=B+1;else if(U>z)H=B-1;else return f[Y+q+B]}return-1}function Cz(f,J=JY.Legacy){return nk(f,J)}var Ef,dU=32,of,JY,nk;var iU=k(()=>{PU();cU();nU();(function(f){f[f.NUM=35]="NUM",f[f.SEMI=59]="SEMI",f[f.EQUALS=61]="EQUALS",f[f.ZERO=48]="ZERO",f[f.NINE=57]="NINE",f[f.LOWER_A=97]="LOWER_A",f[f.LOWER_F=102]="LOWER_F",f[f.LOWER_X=120]="LOWER_X",f[f.LOWER_Z=122]="LOWER_Z",f[f.UPPER_A=65]="UPPER_A",f[f.UPPER_F=70]="UPPER_F",f[f.UPPER_Z=90]="UPPER_Z"})(Ef||(Ef={}));(function(f){f[f.EntityStart=0]="EntityStart",f[f.NumericStart=1]="NumericStart",f[f.NumericDecimal=2]="NumericDecimal",f[f.NumericHex=3]="NumericHex",f[f.NamedEntity=4]="NamedEntity"})(of||(of={}));(function(f){f[f.Legacy=0]="Legacy",f[f.Strict=1]="Strict",f[f.Attribute=2]="Attribute"})(JY||(JY={}));nk=mk(mU)});var lU,aU;var rU=k(()=>{iU();(function(f){f[f.XML=0]="XML",f[f.HTML=1]="HTML"})(lU||(lU={}));(function(f){f[f.UTF8=0]="UTF8",f[f.ASCII=1]="ASCII",f[f.Extensive=2]="Extensive",f[f.Attribute=3]="Attribute",f[f.Text=4]="Text"})(aU||(aU={}))});import{CliRenderer as ik,createCliRenderer as lk,engine as ak}from"@opentui/core";import{createTestRenderer as cm}from"@opentui/core/testing";import{ASCIIFontRenderable as $k,BoxRenderable as rk,CodeRenderable as pk,DiffRenderable as _k,InputRenderable as ok,LineNumberRenderable as sk,MarkdownRenderable as tk,ScrollBoxRenderable as ek,SelectRenderable as fN,TabSelectRenderable as JN,TextareaRenderable as YN,TextAttributes as Pj,TextNodeRenderable as zN,TextRenderable as GN}from"@opentui/core";import{engine as im,Timeline as lm}from"@opentui/core";import{BaseRenderable as eU,createTextAttributes as ZN,InputRenderable as vj,InputRenderableEvents as NX,isTextNodeRenderable as nj,parseColor as pU,Renderable as qN,RootTextNodeRenderable as QN,ScrollBoxRenderable as HN,SelectRenderable as _U,SelectRenderableEvents as mj,TabSelectRenderable as oU,TabSelectRenderableEvents as cj,TextNodeRenderable as BN,TextRenderable as f6}from"@opentui/core";import{BaseRenderable as FN,isTextNodeRenderable as ON,TextNodeRenderable as AN,TextRenderable as gN,Yoga as tU}from"@opentui/core";import{BoxRenderable as fc,RootRenderable as Jc}from"@opentui/core";import{TimeToFirstDrawRenderable as NN}from"@opentui/core";import{createSlotRegistry as Gc}from"@opentui/core";function WN({createElement:f,createTextNode:J,createSlotNode:Y,isTextNode:z,replaceText:G,insertNode:X,removeNode:q,setProperty:Q,getParentNode:H,getFirstChild:B,getNextSibling:V}){function j(N,g,C,y){if(C!==void 0&&!y)y=[];if(typeof g!=="function")return U(N,g,y,C);RJ((_)=>U(N,g(),_,C),y)}function U(N,g,C,y,_){while(typeof C==="function")C=C();if(g===C)return C;let z0=typeof g,t=y!==void 0;if(z0==="string"||z0==="number"){if(z0==="number")g=g.toString();if(t){let Y0=C[0];if(Y0&&z(Y0))G(Y0,g);else Y0=J(g);C=M(N,C,y,Y0)}else if(C!==""&&typeof C==="string")G(B(N),C=g);else M(N,C,y,J(g)),C=g}else if(g==null||z0==="boolean")C=M(N,C,y);else if(z0==="function")return RJ(()=>{let Y0=g();while(typeof Y0==="function")Y0=Y0();C=U(N,Y0,C,y)}),()=>C;else if(Array.isArray(g)){let Y0=[];if(L(Y0,g,_))return RJ(()=>C=U(N,Y0,C,y,!0)),()=>C;if(Y0.length===0){let T=M(N,C,y);if(t)return C=T}else if(Array.isArray(C))if(C.length===0)R(N,Y0,y);else O(N,C,Y0);else if(C==null||C==="")R(N,Y0);else O(N,t&&C||[B(N)],Y0);C=Y0}else{if(Array.isArray(C)){if(t)return C=M(N,C,y,g);M(N,C,null,g)}else if(C==null||C===""||!B(N))X(N,g);else S(N,g,B(N));C=g}return C}function L(N,g,C){let y=!1;for(let _=0,z0=g.length;_<z0;_++){let t=g[_],Y0;if(t==null||t===!0||t===!1);else if(Array.isArray(t))y=L(N,t)||y;else if((Y0=typeof t)==="string"||Y0==="number")N.push(J(t));else if(Y0==="function")if(C){while(typeof t==="function")t=t();y=L(N,Array.isArray(t)?t:[t])||y}else N.push(t),y=!0;else N.push(t)}return y}function O(N,g,C){let y=C.length,_=g.length,z0=y,t=0,Y0=0,T=V(g[_-1]),Q0=null;while(t<_||Y0<z0){if(g[t]===C[Y0]){t++,Y0++;continue}while(g[_-1]===C[z0-1])_--,z0--;if(_===t){let p=z0<y?Y0?V(C[Y0-1]):C[z0-Y0]:T;while(Y0<z0)X(N,C[Y0++],p)}else if(z0===Y0)while(t<_){if(!Q0||!Q0.has(g[t]))q(N,g[t]);t++}else if(g[t]===C[z0-1]&&C[Y0]===g[_-1]){let p=V(g[--_]);X(N,C[Y0++],V(g[t++])),X(N,C[--z0],p),g[_]=C[z0]}else{if(!Q0){Q0=new Map;let D0=Y0;while(D0<z0)Q0.set(C[D0],D0++)}let p=Q0.get(g[t]);if(p!=null)if(Y0<p&&p<z0){let D0=t,g0=1,$;while(++D0<_&&D0<z0){if(($=Q0.get(g[D0]))==null||$!==p+g0)break;g0++}if(g0>p-Y0){let E=g[t];while(Y0<p)X(N,C[Y0++],E)}else S(N,C[Y0++],g[t++])}else t++;else q(N,g[t++])}}}function M(N,g,C,y){if(C===void 0){let z0;while(z0=B(N))q(N,z0);return y&&X(N,y),y??""}let _=y||Y();if(g.length){let z0=!1;for(let t=g.length-1;t>=0;t--){let Y0=g[t];if(_!==Y0){let T=H(Y0)===N;if(!z0&&!t)T?S(N,_,Y0):X(N,_,C);else T&&q(N,Y0)}else z0=!0}}else X(N,_,C);return[_]}function R(N,g,C){for(let y=0,_=g.length;y<_;y++)X(N,g[y],C)}function S(N,g,C){X(N,g,C),q(N,C)}function a(N,g,C={},y){if(g||(g={}),!y)RJ(()=>C.children=U(N,g.children,C.children));return RJ(()=>g.ref&&g.ref(N)),RJ(()=>{for(let _ in g){if(_==="children"||_==="ref")continue;let z0=g[_];if(z0===C[_])continue;Q(N,_,z0,C[_]),C[_]=z0}}),C}return{render(N,g){let C;return Zz((y)=>{C=y,j(g,N())}),C},insert:j,spread(N,g,C){if(typeof g==="function")RJ((y)=>a(N,g(),y,C));else a(N,g,void 0,C)},createElement:f,createTextNode:J,insertNode:X,setProp(N,g,C,y){return Q(N,g,C,y),C},mergeProps:nZ,effect:RJ,memo:jN,createComponent:JV,use(N,g,C){return $f(()=>N(g,C))}}}function VN(f){let J=WN(f);return J.mergeProps=nZ,J}function $j(f){if(!jQ.has(f))jQ.set(f,0);let J=jQ.get(f)+1;return jQ.set(f,J),`${f}-${J}`}function KN(f,J,Y){if(sf("Inserting node:",rf(J),"into parent:",rf(f),"with anchor:",rf(Y),J instanceof gG),J instanceof yX)J.parent=f,J=J.getSlotChild(f);if(Y&&Y instanceof yX)Y=Y.getSlotChild(f);if(nj(J)){if(!(f instanceof f6)&&!nj(f))throw Error(`Orphan text error: "${J.toChunks().map((X)=>X.text).join("")}" must have a <text> as a parent: ${f.id} above ${J.id}`)}if(!(f instanceof eU))throw console.error("[INSERT]","Tried to mount a non base renderable"),Error("Tried to mount a non base renderable");if(!Y){f.add(J);return}let z=dj(f),G=z.findIndex((X)=>X.id===Y.id);if(G===-1)sf("[INSERT]","Could not find anchor",rf(f),rf(Y),"[children]",...z.map((X)=>X.id));f.add(J,G)}function UN(f,J){if(sf("Removing node:",rf(J),"from parent:",rf(f)),J instanceof yX)J.parent=null,J=J.getSlotChild(f);f.remove(J.id),process.nextTick(()=>{if(J instanceof eU&&!J.parent){J.destroyRecursively();return}})}function DN(f){sf("Creating text node:",f);let J=$j("text-node");if(typeof f==="number")f=f.toString();return gG.fromString(Cz(f),{id:J})}function LN(){let f=$j("slot-node");return sf("Creating slot node",f),new yX(f)}function sU(f){sf("Getting parent of node:",rf(f));let J=f.parent??void 0;if(J instanceof QN)J=J.textParent??void 0;let Y=J?.parent?.parent?.parent;if(Y instanceof HN&&Y.content===J)J=Y;return J}function CN(f){Object.assign(q6,f)}function kN(){return q6}var aj,z1=()=>{let f=u1(aj);if(!f)throw Error("No renderer found");return f},XN=(f)=>{let J=z1();J1(()=>{J.on("resize",f)}),mf(()=>{J.off("resize",f)})},TJ=()=>{let f=z1(),[J,Y]=r({width:f.width,height:f.height});return XN((G,X)=>{Y({width:G,height:X})}),J},jN=(f)=>U0(()=>f()),jQ,sf=(...f)=>{if(process.env.DEBUG)console.log("[Reconciler]",...f)},gG,rf=(f)=>{if(!f)return;return f.id},dj=(f)=>{let J;if(f instanceof f6)J=f.getTextChildren();else J=f.getChildren();return J},MN,u,I0,b,W,x0,D,K,sm,Z,J6,hY,rj,Y6,z6,yX,bX,WQ,ij,lj,G6,X6,Z6,RN,q6,yN=(f,J)=>{let Y,z=!1,G=!1,X=!0,q=!1,Q=f.destroy.bind(f),H=()=>{if(G)return;if(!Y){z=!0;return}G=!0,Y()};f.once("destroy",H),f.destroy=()=>{if(X){q=!0;return}Q()};try{Y=MN(()=>b(aj.Provider,{get value(){return f},get children(){return b(J,{})}}),f.root)}finally{X=!1,f.destroy=Q}if(z)H();if(q)Q()},Q6=async(f,J={})=>{let Y=J instanceof ik?J:await lk({...J,onDestroy:()=>{J.onDestroy?.()}});ak.attach(Y),yN(Y,f)};var h=k(()=>{Wf();rU();Wf();Wf();Wf();aj=CJ();jQ=new Map;gG=class gG extends BN{static fromString(f,J={}){let Y=new gG(J);return Y.add(f),Y}};({render:MN,effect:u,memo:I0,createComponent:b,createElement:W,createTextNode:x0,insertNode:D,insert:K,spread:sm,setProp:Z,mergeProps:J6,use:hY}=VN({createElement(f){sf("Creating element:",f);let J=$j(f),Y=u1(aj);if(!Y)throw Error("No renderer found");let z=kN();if(!z[f])throw Error(`[Reconciler] Unknown component type: ${f}`);let G=new z[f](Y,{id:J});return sf("Element created with id:",J),G},createTextNode:DN,createSlotNode:LN,replaceText(f,J){if(sf("Replacing text:",J,"in node:",rf(f)),!(f instanceof gG))return;f.replace(Cz(J),0)},setProperty(f,J,Y,z){if(J.startsWith("on:")){let G=J.slice(3);if(Y)f.on(G,Y);if(z)f.off(G,z);return}if(nj(f)){if(J==="href"){f.link={url:Y};return}if(J==="style"){f.attributes|=ZN(Y),f.fg=Y.fg?pU(Y.fg):f.fg,f.bg=Y.bg?pU(Y.bg):f.bg;return}return}switch(J){case"id":sf("Id mapped",f.id,"=",Y),f[J]=Y;break;case"focused":if(!(f instanceof qN))return;if(Y)f.focus();else f.blur();break;case"onChange":let G=void 0;if(f instanceof _U)G=mj.SELECTION_CHANGED;else if(f instanceof oU)G=cj.SELECTION_CHANGED;else if(f instanceof vj)G=NX.CHANGE;if(!G)break;if(Y)f.on(G,Y);if(z)f.off(G,z);break;case"onInput":if(f instanceof vj){if(Y)f.on(NX.INPUT,Y);if(z)f.off(NX.INPUT,z)}break;case"onSubmit":if(f instanceof vj){if(Y)f.on(NX.ENTER,Y);if(z)f.off(NX.ENTER,z)}else f[J]=Y;break;case"onSelect":if(f instanceof _U){if(Y)f.on(mj.ITEM_SELECTED,Y);if(z)f.off(mj.ITEM_SELECTED,z)}else if(f instanceof oU){if(Y)f.on(cj.ITEM_SELECTED,Y);if(z)f.off(cj.ITEM_SELECTED,z)}break;case"style":for(let X in Y){let q=Y[X];if(z!==void 0&&q===z[X])continue;f[X]=q}break;case"text":case"content":{let X=typeof Y==="string"?Y:Array.isArray(Y)?Y.join(""):`${Y}`;f[J]=Cz(X);break}default:f[J]=Y}},isTextNode(f){return f instanceof gG},insertNode:KN,removeNode:UN,getParentNode:sU,getFirstChild(f){sf("Getting first child of node:",rf(f));let J=dj(f)[0];if(!J){sf("No first child found for node:",rf(f));return}return sf("First child found:",rf(J),"for node:",rf(f)),J},getNextSibling(f){sf("Getting next sibling of node:",rf(f));let J=sU(f);if(!J){sf("No parent found for node:",rf(f));return}let Y=dj(J),z=Y.indexOf(f);if(z===-1||z===Y.length-1){sf("No next sibling found for node:",rf(f));return}let G=Y[z+1];if(!G){sf("Next sibling is null for node:",rf(f));return}return sf("Next sibling found:",rf(G),"for node:",rf(f)),G}}));rj=class rj extends FN{constructor(f){super({id:f})}add(f,J){throw Error("Can't add children on an Slot renderable")}getChildren(){return[]}remove(f){}insertBefore(f,J){throw Error("Can't add children on an Slot renderable")}getRenderable(f){return}getChildrenCount(){return 0}requestRender(){}findDescendantById(f){return}};Y6=class Y6 extends AN{slotParent;destroyed=!1;constructor(f,J){super({id:f});this._visible=!1,this.slotParent=J}destroy(){if(this.destroyed)return;this.destroyed=!0,this.slotParent?.destroy(),super.destroy()}};z6=class z6 extends rj{yogaNode;slotParent;destroyed=!1;constructor(f,J){super(f);this._visible=!1,this.slotParent=J,this.yogaNode=tU.default.Node.create(),this.yogaNode.setDisplay(tU.Display.None)}getLayoutNode(){return this.yogaNode}updateFromLayout(){}updateLayout(){}onRemove(){}destroy(){if(this.destroyed)return;this.destroyed=!0,super.destroy(),this.slotParent?.destroy()}};yX=class yX extends rj{layoutNode;textNode;destroyed=!1;constructor(f){super(f);this._visible=!1}getSlotChild(f){if(ON(f)||f instanceof gN){if(!this.textNode)this.textNode=new Y6(`slot-text-${this.id}`,this);return this.textNode}if(!this.layoutNode)this.layoutNode=new z6(`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()}};bX=class bX extends zN{_ctx;constructor(f,J){super(J);this._ctx=f}};WQ=class WQ extends bX{constructor(f,J){super(null,f);if(J==="b"||J==="strong")this.attributes=(this.attributes||0)|Pj.BOLD;else if(J==="i"||J==="em")this.attributes=(this.attributes||0)|Pj.ITALIC;else if(J==="u")this.attributes=(this.attributes||0)|Pj.UNDERLINE}};ij=class ij extends WQ{constructor(f){super(f,"b")}};lj=class lj extends WQ{constructor(f){super(f,"i")}};G6=class G6 extends WQ{constructor(f){super(f,"u")}};X6=class X6 extends bX{constructor(f,J){super(null,J);this.add()}add(){return super.add(`
222
+ `)}};Z6=class Z6 extends bX{constructor(f,J){let Y={...J,link:{url:J.href}};super(null,Y)}};RN={box:rk,text:GN,input:ok,select:fN,textarea:YN,ascii_font:$k,tab_select:JN,scrollbox:ek,code:pk,diff:_k,line_number:sk,markdown:tk,span:bX,strong:ij,b:ij,em:lj,i:lj,u:G6,br:X6,a:Z6},q6={...RN};CN({time_to_first_draw:NN})});function bN(f){let J=f?.changes;if(!J||typeof J!=="object"||Array.isArray(J))return null;let Y=new Map;for(let[z,G]of Object.entries(J)){let X=G;if(typeof X?.added!=="number"||typeof X.deleted!=="number")return null;Y.set(z,{added:X.added,deleted:X.deleted})}return Y}function SN(f,J){if(f.size!==J.size)return!1;for(let[Y,z]of f){let G=J.get(Y);if(!G||!IJ(z,G))return!1}return!0}class W1{client;tasksAcc;setTasks;activeTaskAcc;setActiveTaskSig;updateAcc;setUpdateSig;daemonVersionAcc;setDaemonVersionSig;engineStateAcc;setEngineStateSig;taskJobsAcc;setTaskJobsSig;worktreeChangesAcc;setWorktreeChangesSig;uiPrefsAcc;setUiPrefsSig;keybindingsRevAcc;setKeybindingsRevSig;connectionStateAcc;setConnectionState;ensureReachable;role;channels;subscribesTasks;reconnecting=!1;constructor(f,J={}){this.client=f;let[Y,z]=r([]),[G,X]=r(null),[q,Q]=r(null),[H,B]=r(null),[V,j]=r(new Map),[U,L]=r(new Map),[O,M]=r(null),[R,S]=r(null),[a,N]=r(null),[g,C]=r("online");this.tasksAcc=Y,this.setTasks=(y)=>z(()=>y),this.activeTaskAcc=G,this.setActiveTaskSig=(y)=>X(()=>y),this.updateAcc=q,this.setUpdateSig=(y)=>Q(()=>y),this.daemonVersionAcc=H,this.setDaemonVersionSig=(y)=>B(()=>y),this.engineStateAcc=V,this.setEngineStateSig=(y)=>j(()=>y),this.taskJobsAcc=U,this.setTaskJobsSig=(y)=>L(()=>y),this.worktreeChangesAcc=O,this.setWorktreeChangesSig=(y)=>M(()=>y),this.uiPrefsAcc=R,this.setUiPrefsSig=(y)=>S(()=>y),this.keybindingsRevAcc=a,this.setKeybindingsRevSig=(y)=>N(()=>y),this.connectionStateAcc=g,this.setConnectionState=(y)=>C(()=>y),this.ensureReachable=J.ensureReachable??UG,this.role=J.role??"pane",this.channels=J.channels,this.subscribesTasks=!J.channels||J.channels.includes("task.snapshot"),this.client.on("*",(y)=>this.handleEvent(y.name,y.payload)),this.client.onLifecycle("close",()=>{if(this.setConnectionState("disconnected"),this.role==="pane")dJ("orch","daemon socket closed \u2014 starting non-spawning reconnect loop"),this.reconnectLoop()})}async reconnectLoop(){if(this.reconnecting)return;this.reconnecting=!0;let f=500,J=0;while(!this.client.isDisposed){if(await new Promise((Y)=>setTimeout(Y,f)),this.client.isDisposed)break;J++;try{await this.init(),dJ("orch",`reconnected and re-subscribed after ${J} attempt(s) \u2014 task list re-synced`),this.reconnecting=!1;return}catch(Y){if(J===1||J%10===0)HY("orch-reconnect",Y);f=Math.min(f*2,3000)}}this.reconnecting=!1}async init(){let f=await this.client.request("hello",{protocolVersion:n1,minProtocolVersion:QY}),J=typeof f.protocolVersion==="number"?f.protocolVersion:n1,Y=typeof f.minProtocolVersion==="number"?f.minProtocolVersion:J;if(!ZZ({localVersion:n1,localMin:QY,remoteVersion:J,remoteMin:Y}))throw Error(`kobe daemon is protocol v${J} (min v${Y}); this client is v${n1} (min v${QY}). Restart the daemon (\`kobe daemon restart\`) or upgrade kobe.`);if(this.setDaemonVersionSig(typeof f.kobeVersion==="string"?f.kobeVersion:null),f.tasks&&this.subscribesTasks)this.setTasks(f.tasks.map(SX));if(await this.client.subscribe({role:this.role,channels:this.channels}),f.capabilities?.includes("worktree.changes")){if(this.worktreeChangesAcc()===null)this.setWorktreeChangesSig(new Map)}else this.setWorktreeChangesSig(null);this.setConnectionState("online"),dJ("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()=>I9(this.daemonVersionAcc()??void 0,s0)}engineStateSignal(){return this.engineStateAcc}taskJobsSignal(){return this.taskJobsAcc}worktreeChangesSignal(){return this.worktreeChangesAcc}uiPrefsSignal(){return this.uiPrefsAcc}keybindingsRevSignal(){return this.keybindingsRevAcc}listTasks(){return this.tasksAcc()}getTask(f){return this.tasksAcc().find((J)=>J.id===f)}subscribeTasks(f){try{f(this.listTasks())}catch(Y){console.error("[kobe RemoteOrchestrator] task listener threw on subscribe:",Y)}let J=!0;return Zz((Y)=>{return Gf(()=>{let z=this.tasksAcc();if(J){J=!1;return}try{f(z)}catch(G){console.error("[kobe RemoteOrchestrator] task listener threw:",G)}}),Y})}async createTask(f){let{modelEffort:J,...Y}=f,z=await this.client.request("task.create",{...Y,effort:J});return SX(z.task)}async ensureMainTask(f){let J=await this.client.request("task.ensureMain",{repo:f});return SX(J.task)}async ensureWorktree(f){return(await this.client.request("task.ensureWorktree",{taskId:String(f)})).worktreePath}async forgetProject(f){await this.client.request("project.forget",{repo:f})}async setTitle(f,J){await this.client.request("task.rename",{taskId:String(f),title:J})}async setBranch(f,J){await this.client.request("task.setBranch",{taskId:String(f),branch:J})}async setVendor(f,J){await this.client.request("task.setVendor",{taskId:String(f),vendor:J})}async setPinned(f,J){await this.client.request("task.pin",{taskId:String(f),pinned:J})}async moveTask(f,J){await this.client.request("task.move",{taskId:String(f),direction:J<0?"up":"down"})}async setArchived(f,J){await this.client.request("task.archive",{taskId:String(f),archived:J})}async setStatus(f,J){await this.client.request("task.status",{taskId:String(f),status:J})}async deleteTask(f,J){await this.client.request("task.delete",{taskId:String(f),force:J?.force})}async discoverAdoptableWorktrees(f){return(await this.client.request("worktree.discoverAdoptable",{repo:f})).worktrees}async adoptWorktree(f){let J=await this.client.request("worktree.adopt",f);return SX(J.task)}async setActiveTask(f){await this.client.request("task.setActive",{taskId:f===null?null:String(f)})}handleEvent(f,J){if(f==="task.snapshot"){let Y=J?.tasks;if(Array.isArray(Y))this.setTasks(Y.map(SX)),this.pruneEngineState(Y),this.pruneTaskJobs(Y);return}if(f==="active-task"){let Y=J?.taskId;this.setActiveTaskSig(typeof Y==="string"?Y:null);return}if(f==="update"){let Y=J?.info;this.setUpdateSig(Y??null);return}if(f==="engine-state"){let Y=J;if(typeof Y?.taskId!=="string"||typeof Y.state!=="string")return;let z=new Map(this.engineStateAcc());if(Y.state==="idle")z.delete(Y.taskId);else z.set(Y.taskId,{state:Y.state,detail:Y.detail,at:typeof Y.at==="number"?Y.at:0});this.setEngineStateSig(z);return}if(f==="task.jobs"){let Y=J;if(typeof Y?.taskId!=="string"||Y.kind!=="ensureWorktree")return;let z=this.taskJobsAcc();if(Y.phase==="running"){let G=new Map(z);G.set(Y.taskId,{kind:Y.kind}),this.setTaskJobsSig(G);return}if((Y.phase==="done"||Y.phase==="error")&&z.has(Y.taskId)){let G=new Map(z);G.delete(Y.taskId),this.setTaskJobsSig(G)}return}if(f==="worktree.changes"){let Y=bN(J);if(!Y)return;let z=this.worktreeChangesAcc();if(z&&SN(z,Y))return;this.setWorktreeChangesSig(Y);return}if(f==="ui-prefs"){let Y=J;if(typeof Y?.theme!=="string")return;this.setUiPrefsSig({theme:Y.theme,transparentBackground:Y.transparentBackground===!0,focusAccent:typeof Y.focusAccent==="string"?Y.focusAccent:null,locale:typeof Y.locale==="string"?Y.locale:"",sortMode:Y.sortMode==="recent"?"recent":"default",keysCollapsed:Y.keysCollapsed===!0,projectFilter:typeof Y.projectFilter==="string"&&Y.projectFilter.length>0?Y.projectFilter:null});return}if(f==="keybindings"){let Y=J;if(typeof Y?.rev!=="number")return;this.setKeybindingsRevSig(Y.rev);return}}pruneEngineState(f){let J=this.engineStateAcc();if(J.size===0)return;let Y=new Set(f.map((G)=>G.id)),z=null;for(let G of J.keys()){if(Y.has(G))continue;if(!z)z=new Map(J);z.delete(G)}if(z)this.setEngineStateSig(z)}pruneTaskJobs(f){let J=this.taskJobsAcc();if(J.size===0)return;let Y=new Set(f.map((G)=>G.id)),z=null;for(let G of J.keys()){if(Y.has(G))continue;if(!z)z=new Map(J);z.delete(G)}if(z)this.setTaskJobsSig(z)}}function SX(f){return{id:rG(f.id),title:f.title,repo:f.repo,branch:f.branch,worktreePath:f.worktreePath,kind:f.kind,status:f.status,archived:f.archived,pinned:f.pinned,vendor:f.vendor,prStatus:f.prStatus,modelEffort:f.modelEffort,createdAt:f.createdAt,updatedAt:f.updatedAt}}var PY=k(()=>{sY();L1();_Y();Wf();WG();I1();D1()});function j6(f){let J=f[GJ];if(!J){if(Object.defineProperty(f,GJ,{value:J=new Proxy(f,uN)}),!Array.isArray(f)){let Y=Object.keys(f),z=Object.getOwnPropertyDescriptors(f),G=Object.getPrototypeOf(f),X=G!==null&&f!==null&&typeof f==="object"&&!Array.isArray(f)&&G!==Object.prototype;if(X){let q=Object.getOwnPropertyDescriptors(G);Y.push(...Object.keys(q)),Object.assign(z,q)}for(let q=0,Q=Y.length;q<Q;q++){let H=Y[q];if(X&&H==="constructor")continue;if(z[H].get)Object.defineProperty(f,H,{configurable:!0,enumerable:z[H].enumerable,get:z[H].get.bind(J)})}}}return J}function VQ(f){let J;return f!=null&&typeof f==="object"&&(f[GJ]||!(J=Object.getPrototypeOf(f))||J===Object.prototype||Array.isArray(f))}function TX(f,J=new Set){let Y,z,G,X;if(Y=f!=null&&f[pj])return Y;if(!VQ(f)||J.has(f))return f;if(Array.isArray(f)){if(Object.isFrozen(f))f=f.slice(0);else J.add(f);for(let q=0,Q=f.length;q<Q;q++)if(G=f[q],(z=TX(G,J))!==G)f[q]=z}else{if(Object.isFrozen(f))f=Object.assign({},f);else J.add(f);let q=Object.keys(f),Q=Object.getOwnPropertyDescriptors(f);for(let H=0,B=q.length;H<B;H++){if(X=q[H],Q[X].get)continue;if(G=f[X],(z=TX(G,J))!==G)f[X]=z}}return f}function KQ(f,J){let Y=f[J];if(!Y)Object.defineProperty(f,J,{value:Y=Object.create(null)});return Y}function uX(f,J,Y){if(f[J])return f[J];let[z,G]=r(Y,{equals:!1,internal:!0});return z.$=G,f[J]=z}function IN(f,J){let Y=Reflect.getOwnPropertyDescriptor(f,J);if(!Y||Y.get||!Y.configurable||J===GJ||J===RG)return Y;return delete Y.value,delete Y.writable,Y.get=()=>f[GJ][J],Y}function W6(f){mZ()&&uX(KQ(f,RG),B6)()}function TN(f){return W6(f),Reflect.ownKeys(f)}function UQ(f,J,Y,z=!1){if(J==="__proto__"){console.warn('Refusing to set "__proto__" on a store.');return}if(!z&&f[J]===Y)return;let G=f[J],X=f.length;if(H6.onStoreNodeUpdate&&H6.onStoreNodeUpdate(f,J,Y,G),Y===void 0){if(delete f[J],f[YY]&&f[YY][J]&&G!==void 0)f[YY][J].$()}else if(f[J]=Y,f[YY]&&f[YY][J]&&G===void 0)f[YY][J].$();let q=KQ(f,RG),Q;if(Q=uX(q,J,G))Q.$(()=>Y);if(Array.isArray(f)&&f.length!==X){for(let H=f.length;H<X;H++)(Q=q[H])&&Q.$();(Q=uX(q,"length",X))&&Q.$(f.length)}(Q=q[B6])&&Q.$()}function V6(f,J){let Y=Object.keys(J);for(let z=0;z<Y.length;z+=1){let G=Y[z];if(K6(G))continue;UQ(f,G,J[G])}}function K6(f){return f==="__proto__"||f==="constructor"||f==="prototype"}function EN(f,J){if(typeof J==="function")J=J(f);if(J=TX(J),Array.isArray(J)){if(f===J)return;let Y=0,z=J.length;for(;Y<z;Y++){let G=J[Y];if(f[Y]!==G)UQ(f,Y,G)}UQ(f,"length",z)}else V6(f,J)}function IX(f,J,Y=[]){let z,G=f;if(J.length>1){z=J.shift();let q=typeof z,Q=Array.isArray(f);if(q==="string"&&(z==="__proto__"||J.length>1&&K6(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++)IX(f,[z[H]].concat(J),Y);return}else if(Q&&q==="function"){for(let H=0;H<f.length;H++)if(z(f[H],H))IX(f,[H].concat(J),Y);return}else if(Q&&q==="object"){let{from:H=0,to:B=f.length-1,by:V=1}=z;for(let j=H;j<=B;j+=V)IX(f,[j].concat(J),Y);return}else if(J.length>1){IX(f[z],J,[z].concat(Y));return}G=f[z],Y=[z].concat(Y)}let X=J[0];if(typeof X==="function"){if(X=X(G,Y),X===G)return}if(z===void 0&&X==null)return;if(X=TX(X),z===void 0||VQ(G)&&VQ(X)&&!Array.isArray(X))V6(G,X);else UQ(f,z,X)}function uJ(...[f,J]){let Y=TX(f||{}),z=Array.isArray(Y);if(typeof Y!=="object"&&typeof Y!=="function")throw Error(`Unexpected type ${typeof Y} received when initializing 'createStore'. Expected an object.`);let G=j6(Y);YV.registerGraph({value:Y,name:J&&J.name});function X(...q){vZ(()=>{z&&q.length===1?EN(Y,q[0]):IX(Y,q)})}return[G,X]}var pj,RG,YY,B6,H6,uN,Uc;var CG=k(()=>{Wf();pj=Symbol("store-raw"),RG=Symbol("store-node"),YY=Symbol("store-has"),B6=Symbol("store-self"),H6={onStoreNodeUpdate:null};uN={get(f,J,Y){if(J===pj)return f;if(J===GJ)return Y;if(J===wZ)return W6(f),Y;let z=KQ(f,RG),G=z[J],X=G?G():f[J];if(J===RG||J===YY||J==="__proto__")return X;if(!G){let q=Object.getOwnPropertyDescriptor(f,J);if(mZ()&&(typeof X!=="function"||f.hasOwnProperty(J))&&!(q&&q.get))X=uX(z,J,X)()}return VQ(X)?j6(X):X},has(f,J){if(J===pj||J===GJ||J===wZ||J===RG||J===YY||J==="__proto__")return!0;return mZ()&&uX(KQ(f,YY),J)(),J in f},set(){return console.warn("Cannot mutate a Store directly"),!0},deleteProperty(){return console.warn("Cannot mutate a Store directly"),!0},ownKeys:TN,getOwnPropertyDescriptor:IN};Uc=Symbol("store-root")});function DQ(f){let J=CJ();return{provider:(Y)=>{let z=f.init(Y);return b(X0,{get when(){return z.ready===void 0||z.ready===!0},get children(){return b(J.Provider,{value:z,get children(){return Y.children}})}})},use(){let Y=u1(J);if(!Y)throw Error(`${f.name} context must be used within a context provider`);return Y}}}var _j=k(()=>{h();h();Wf()});import{RGBA as kz}from"@opentui/core";function wN(){return Object.keys(G1.themes)}function EX(f){return Boolean(G1.themes[f])}function sj(f,J){if(!f)return!1;if(!J||typeof J!=="object"||!J.theme)return!1;return Nz("themes",{...G1.themes,[f]:J}),!0}function oj(f,J="dark"){let Y=f.defs??{};function z(H,B=[]){if(typeof H==="string"){if(H==="transparent"||H==="none")return kz.fromInts(0,0,0,0);if(H.startsWith("#"))return kz.fromHex(H);if(B.includes(H))return kz.fromInts(0,0,0);let V=Y[H]??f.theme[H];if(V===void 0)return kz.fromInts(0,0,0);return z(V,[...B,H])}return z(H[J],B)}let G={};for(let[H,B]of Object.entries(f.theme))G[H]=z(B);let X=G.text??kz.fromHex("#ffffff"),q=G.background??kz.fromHex("#000000");return{...{primary:G.primary??X,secondary:G.secondary??X,accent:G.accent??G.primary??X,error:G.error??X,warning:G.warning??X,success:G.success??X,info:G.info??X,text:X,textMuted:G.textMuted??X,background:q,backgroundPanel:G.backgroundPanel??q,backgroundElement:G.backgroundElement??q,backgroundMenu:G.backgroundMenu??G.backgroundElement??q,backgroundDialog:G.backgroundDialog??G.backgroundPanel??q,border:G.border??X,borderActive:G.borderActive??G.border??X,borderSubtle:G.borderSubtle??G.border??X,diffAdded:G.diffAdded??G.success??X,diffRemoved:G.diffRemoved??G.error??X,diffContext:G.diffContext??G.textMuted??X,diffHunkHeader:G.diffHunkHeader??G.textMuted??X,diffAddedBg:G.diffAddedBg??q,diffRemovedBg:G.diffRemovedBg??q,selectedListItemText:G.selectedListItemText??q},...G}}var xN,yz,G1,Nz,i0,U6;var xf=k(()=>{h();Wf();CG();_j();Qq();Hq();Bq();jq();Wq();Vq();Kq();xN={claude:oz,conductor:sz,nord:ez,opencode:fG,dracula:tz,tokyonight:YG,"osaka-jade":JG},yz=["primary","success","info"],[G1,Nz]=uJ({themes:{...xN},active:"claude",mode:"dark",transparentBackground:!1,focusAccent:"primary"});({use:i0,provider:U6}=DQ({name:"Theme",init:(f)=>{if(f.mode)Nz("mode",f.mode);if(f.theme&&EX(f.theme))Nz("active",f.theme);let J=z1(),Y=U0(()=>{let G=G1.themes[G1.active];if(G)return oj(G,G1.mode);let X=G1.themes.claude??G1.themes.opencode??Object.values(G1.themes)[0];if(!X)return oj({theme:{background:"#000000",text:"#ffffff"}},G1.mode);return oj(X,G1.mode)}),z=U0(()=>{let G=Y(),X=G[G1.focusAccent]??G.primary,q={...G,focusAccent:X};if(!G1.transparentBackground)return q;let Q=kz.fromInts(0,0,0,0);return{...q,background:Q,backgroundPanel:Q}});return Gf(()=>{J?.setBackgroundColor(z().background)}),{theme:new Proxy({},{get(G,X){let q=z();return q[X]??q.text}}),get selected(){return G1.active},get transparentBackground(){return G1.transparentBackground},get focusAccent(){return G1.focusAccent},mode(){return G1.mode},set(G){if(!EX(G))return!1;return Nz("active",G),!0},setMode(G){Nz("mode",G)},setTransparentBackground(G){Nz("transparentBackground",G)},setFocusAccent(G){Nz("focusAccent",G)},all(){return wN()},has(G){return EX(G)}}}}))});var D6,L6;var M6=k(()=>{D6={cancel:"Cancel",confirm:"Confirm",rename:{defaultTitle:"Rename task",defaultFieldLabel:"title",footerHint:"enter {submitLabel} \xB7 esc cancel",defaultSubmitLabel:"rename"}},L6={cancel:"\u53D6\u6D88",confirm:"\u786E\u8BA4",rename:{defaultTitle:"\u91CD\u547D\u540D\u4EFB\u52A1",defaultFieldLabel:"\u540D\u79F0",footerHint:"enter {submitLabel} \xB7 esc \u53D6\u6D88",defaultSubmitLabel:"\u91CD\u547D\u540D"}}});var F6,O6;var A6=k(()=>{F6={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"}},O6={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 g6,R6;var C6=k(()=>{g6={title:"kobe \u2014 keybindings",esc:"esc"},R6={title:"kobe \u2014 \u5FEB\u6377\u952E",esc:"esc"}});var k6,N6;var y6=k(()=>{k6={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)"}},N6={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 b6,S6;var I6=k(()=>{b6={title:"New task",tabs:{existing:"For Existing",clone:"For New Repo",adopt:"Adopt Worktree"},field:{engine:"engine",repo:"repo",fromBranch:"from branch",gitUrl:"git url",parentDir:"parent dir",folderName:"folder name",baseBranch:"base branch",adoptFilter:"filter (path glob)"},placeholder:{folderName:"auto from url",adoptFilter:"* \u2014 type e.g. feature-* to narrow"},hint:{engineCycle:"ctrl+e",remembered:"(remembered \u2014 next clone defaults to this dir)",currentDir:"(current dir)",noBranchesFound:"(no local branches found \u2014 typed text will be used as ref)",noMatchBranch:"(no match \u2014 typed text will be used as ref)",scanningWorktrees:"scanning worktrees\u2026",legend:"\u2191\u2193 pick \xB7 tab next field \xB7 \u2190\u2192 switch \xB7 enter done \xB7 esc cancel"},picker:{moreAbove:"\u2191 {count} more",moreBelow:"\u2193 {count} more"},adopt:{repoLine:"repo: {path}",repoNone:"(none)",noUnlinked:"no unlinked worktrees \u2014 every git worktree here is already a task",noMatch:"no worktrees match the filter",hintSelected:"{count} selected \xB7 enter toggles \xB7 ctrl+a all \xB7 Create imports",hintDefault:"enter toggles \xB7 ctrl+a all \xB7 Create imports the highlighted row"},clone:{progressFallback:"Cloning\u2026",progressInto:"Cloning into {target}\u2026"},button:{create:"[ Create ]",createFocused:"\u25B8 [ Create ]",cloning:"[ Cloning\u2026 ]"},error:{gitUrlRequired:"git URL is required",gitUrlInvalid:"does not look like a git URL: {url}",folderRequired:"folder name is required",folderHasSeparator:"folder name cannot contain path separators",parentRequired:"parent directory is required",parentNotFound:"parent directory does not exist: {path}",parentNotDir:"not a directory: {path}",targetExists:"target already exists: {path}",cloneFailed:"git clone failed: {error}",noAdoptable:"no adoptable worktrees to import"}},S6={title:"\u65B0\u5EFA\u4EFB\u52A1",tabs:{existing:"\u5DF2\u6709\u4ED3\u5E93",clone:"\u514B\u9686\u65B0\u4ED3\u5E93",adopt:"\u63A5\u7BA1 Worktree"},field:{engine:"\u5F15\u64CE",repo:"\u4ED3\u5E93",fromBranch:"\u57FA\u51C6\u5206\u652F",gitUrl:"git \u5730\u5740",parentDir:"\u7236\u76EE\u5F55",folderName:"\u6587\u4EF6\u5939\u540D",baseBranch:"\u57FA\u51C6\u5206\u652F",adoptFilter:"\u8FC7\u6EE4\uFF08\u8DEF\u5F84 glob\uFF09"},placeholder:{folderName:"\u81EA\u52A8\u4ECE\u5730\u5740\u63A8\u5BFC",adoptFilter:"* \u2014 \u8F93\u5165\u5982 feature-* \u6765\u7F29\u5C0F\u8303\u56F4"},hint:{engineCycle:"ctrl+e",remembered:"\uFF08\u5DF2\u8BB0\u4F4F \u2014 \u4E0B\u6B21\u514B\u9686\u9ED8\u8BA4\u4F7F\u7528\u6B64\u76EE\u5F55\uFF09",currentDir:"\uFF08\u5F53\u524D\u76EE\u5F55\uFF09",noBranchesFound:"\uFF08\u672A\u627E\u5230\u672C\u5730\u5206\u652F \u2014 \u5C06\u76F4\u63A5\u4F7F\u7528\u8F93\u5165\u6587\u672C\u4F5C\u4E3A ref\uFF09",noMatchBranch:"\uFF08\u65E0\u5339\u914D \u2014 \u5C06\u76F4\u63A5\u4F7F\u7528\u8F93\u5165\u6587\u672C\u4F5C\u4E3A ref\uFF09",scanningWorktrees:"\u6B63\u5728\u626B\u63CF worktree\u2026",legend:"\u2191\u2193 \u9009\u62E9 \xB7 tab \u4E0B\u4E00\u5B57\u6BB5 \xB7 \u2190\u2192 \u5207\u6362 \xB7 enter \u786E\u8BA4 \xB7 esc \u53D6\u6D88"},picker:{moreAbove:"\u2191 \u8FD8\u6709 {count} \u9879",moreBelow:"\u2193 \u8FD8\u6709 {count} \u9879"},adopt:{repoLine:"\u4ED3\u5E93\uFF1A{path}",repoNone:"\uFF08\u65E0\uFF09",noUnlinked:"\u6CA1\u6709\u672A\u5173\u8054\u7684 worktree \u2014 \u6B64\u4ED3\u5E93\u6240\u6709 git worktree \u5747\u5DF2\u662F\u4EFB\u52A1",noMatch:"\u6CA1\u6709 worktree \u5339\u914D\u6B64\u8FC7\u6EE4\u6761\u4EF6",hintSelected:"\u5DF2\u9009 {count} \u9879 \xB7 enter \u5207\u6362\u9009\u4E2D \xB7 ctrl+a \u5168\u9009 \xB7 \u521B\u5EFA \u5BFC\u5165",hintDefault:"enter \u5207\u6362\u9009\u4E2D \xB7 ctrl+a \u5168\u9009 \xB7 \u521B\u5EFA \u5C06\u5BFC\u5165\u9AD8\u4EAE\u884C"},clone:{progressFallback:"\u514B\u9686\u4E2D\u2026",progressInto:"\u6B63\u5728\u514B\u9686\u5230 {target}\u2026"},button:{create:"[ \u521B\u5EFA ]",createFocused:"\u25B8 [ \u521B\u5EFA ]",cloning:"[ \u514B\u9686\u4E2D\u2026 ]"},error:{gitUrlRequired:"git \u5730\u5740\u4E0D\u80FD\u4E3A\u7A7A",gitUrlInvalid:"\u4E0D\u50CF\u662F\u6709\u6548\u7684 git \u5730\u5740\uFF1A{url}",folderRequired:"\u6587\u4EF6\u5939\u540D\u4E0D\u80FD\u4E3A\u7A7A",folderHasSeparator:"\u6587\u4EF6\u5939\u540D\u4E0D\u80FD\u5305\u542B\u8DEF\u5F84\u5206\u9694\u7B26",parentRequired:"\u7236\u76EE\u5F55\u4E0D\u80FD\u4E3A\u7A7A",parentNotFound:"\u7236\u76EE\u5F55\u4E0D\u5B58\u5728\uFF1A{path}",parentNotDir:"\u4E0D\u662F\u76EE\u5F55\uFF1A{path}",targetExists:"\u76EE\u6807\u8DEF\u5F84\u5DF2\u5B58\u5728\uFF1A{path}",cloneFailed:"git clone \u5931\u8D25\uFF1A{error}",noAdoptable:"\u6CA1\u6709\u53EF\u63A5\u7BA1\u7684 worktree"}}});var T6,u6;var E6=k(()=>{T6={badge:{newActivity:"\u25CF new"},preview:{diffVsHead:"diff vs HEAD",file:"file",closeHint:"\xB7 q to close",loading:"loading\u2026"}},u6={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 x6,w6;var h6=k(()=>{x6={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"},w6={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 P6,v6;var m6=k(()=>{P6={title:"Settings",esc:"esc",nav:{default:"j/k pick \xB7 h/l switch level \xB7 enter activate \xB7 esc close",feedback:"tab next field \xB7 enter send \xB7 esc close"},sections:{general:"General",engines:"Engines",accounts:"Accounts",keys:"Keybindings",feedback:"Feedback",dev:"Dev"},general:{theme:"Theme",themeHint:"l to enter list \xB7 j/k to highlight \xB7 enter to apply",language:"Language",languageHint:"Display language for kobe's UI. l to enter list \xB7 j/k to highlight \xB7 enter to apply.",transparent:"Transparent background",transparentHint:"Drops the renderer's bg fill so the host terminal shows through. `t` toggles.",on:"[x] on",off:"[ ] off",focusAccent:"Focus accent",focusAccentHint:"Color of focused pane title, \u258C marker, and split borders.",accentPrimary:"Primary (brand accent)",accentSuccess:"Success (legacy green)",accentInfo:"Info (cool blue)",notifications:"Notifications",notificationsHint:"Fired when a background chat tab finishes or pauses on an approval. Toast = bottom-right popup; Sound = terminal bell + chime. Tab-chip unread dot is always on.",toast:"Toast",sound:"Sound",zen:"Zen mode",zenHint:"The `zen` chip (above the file list) and `prefix`+space collapse the ChatTab to the engine pane \u2014 hiding the file and terminal panes. Keep this on to leave the Tasks rail visible so you can always get back out.",zenKeepTasks:"Keep Tasks pane in zen mode",surface:"Settings page",surfaceHint:"Where Settings and the other full dialogs (new task, rename) open. ChatTab = a dedicated full-window page alongside the engine tabs; Task panel = an overlay inside the left Tasks pane. enter to pick.",surfaceChattab:"ChatTab (separate page)",surfaceTaskpanel:"Task panel (in-pane overlay)",editor:"Editor",editorHint:"What `e` opens a file with in the file tree (enter stays the read-only preview). `auto` (default) follows $VISUAL / $EDITOR, else auto-detects nvim / vim / emacs / nano. enter on the row below cycles auto / vim / nvim / nano / emacs / custom; if the editor isn't installed it falls back to the preview.",editorRow:"editor: < {kind} > (enter to change)",editorCustom:"custom: {cmd}",editorCustomUnset:"(unset \u2014 enter to edit)"},engines:{title:"Launch command",hint:"The command each engine's task pane runs. Override a built-in when your binary isn't on PATH as `claude` / `codex` (e.g. it's `cl`) or to pass default flags, or add your own engine. \u25CF = default engine for new tasks (also set by Ctrl+Shift+T). enter edit command \xB7 r rename \xB7 x reset/remove \xB7 d set default.",defaultTag:" (default)",customTag:" (custom)",addEngine:"+ Add engine"},accounts:{title:"Accounts",hint:"Read-only view of locally-detected engine accounts. Login flows land here later.",checking:"Checking\u2026",notLoggedIn:"\u25CB Not logged in",loggedIn:"\u25CF Logged in: {email}",apiKeyConfigured:"\u25CF API key configured",chatgptLogin:"\u25CF ChatGPT login: {email}",tokenConfigured:"\u25CF Token configured ({source})",copilotDetected:"\u25CF Copilot login detected"},keybindings:{title:"Keybindings",hint:"Rebind chords by editing the YAML below, then restart kobe (or respawn the pane). Press F1 anywhere for the live keymap with every binding id.",configFile:"Config file",notCreated:" (not created yet)",example:"Example",overridesApplied:"Overrides applied",none:"none",warnings:"Warnings"},feedback:{title:"Feedback",hint:"Sends a GitHub Discussion to the kobe repo through `gh`. Requires `gh auth login`; category defaults to Feedback.",titleLabel:"title",titlePlaceholder:"Short summary",descriptionLabel:"description",descriptionPlaceholder:"What happened? (enter sends)",send:"[enter] Send to GitHub Discussions"},dev:{reset:"Reset UI state",resetHint:"Clears ~/.config/kobe/state.json and ~/.kobe/tasks.json, then quits kobe \u2014 relaunch to start fresh. Working session / Archive lists, pane sizes, theme, model picks all reset. Worktrees on disk and Claude Code session history are not touched.",resetButton:"[enter] Reset",restart:"Restart backend",restartHint:"Stops the kobe daemon and quits this kobe window so the next launch spawns a fresh daemon \u2014 picks up daemon / orchestrator / engine edits without a process kill. Other attached kobe windows will lose their connection too.",restartButton:"[enter] Restart",doctorHint:"Daemon wedged or unresponsive? From a shell, run `kobe doctor` to diagnose, or `kobe reset` to stop the daemon + kill sessions (keeps your tasks). Use `kobe reset --hard` only to also wipe the task index + UI state.",experimental:"Experimental",remoteHint:"Remote projects (SSH): register a project whose git worktrees + engine run on another host over SSH, driven from this local kobe. Unfinished \u2014 file/diff panes still degrade for remote. Enables `kobe add --remote`.",remoteOn:"[x] Remote projects (on)",remoteOff:"[ ] Remote projects (off)",autoStatusHint:"Auto status flow: a backlog task moves to in_progress when its engine starts a turn, and new claude sessions get a system-prompt note telling the agent to set in_review itself when the work is done. Never touches done/canceled.",autoStatusOn:"[x] Auto status flow (on)",autoStatusOff:"[ ] Auto status flow (off)",dispatcherHint:"Field-notes dispatcher: task sessions file one-line gotchas (`kobe api note`), the daemon forwards each to the repo's main session, and that session relays them to the in-flight tasks that benefit (`kobe api dispatch`). Web-hosted sessions receive the relays today.",dispatcherOn:"[x] Field-notes dispatcher (on)",dispatcherOff:"[ ] Field-notes dispatcher (off)"}},v6={title:"\u8BBE\u7F6E",esc:"esc",nav:{default:"j/k \u9009\u62E9 \xB7 h/l \u5207\u6362\u5C42\u7EA7 \xB7 enter \u786E\u8BA4 \xB7 esc \u5173\u95ED",feedback:"tab \u4E0B\u4E00\u9879 \xB7 enter \u53D1\u9001 \xB7 esc \u5173\u95ED"},sections:{general:"\u901A\u7528",engines:"\u5F15\u64CE",accounts:"\u8D26\u6237",keys:"\u5FEB\u6377\u952E",feedback:"\u53CD\u9988",dev:"\u5F00\u53D1"},general:{theme:"\u4E3B\u9898",themeHint:"l \u8FDB\u5165\u5217\u8868 \xB7 j/k \u9AD8\u4EAE \xB7 enter \u5E94\u7528",language:"\u8BED\u8A00",languageHint:"kobe \u754C\u9762\u7684\u663E\u793A\u8BED\u8A00\u3002l \u8FDB\u5165\u5217\u8868 \xB7 j/k \u9AD8\u4EAE \xB7 enter \u5E94\u7528\u3002",transparent:"\u900F\u660E\u80CC\u666F",transparentHint:"\u53BB\u6389\u6E32\u67D3\u5668\u7684\u80CC\u666F\u586B\u5145\uFF0C\u8BA9\u5BBF\u4E3B\u7EC8\u7AEF\u900F\u51FA\u6765\u3002\u6309 `t` \u5207\u6362\u3002",on:"[x] \u5F00",off:"[ ] \u5173",focusAccent:"\u805A\u7126\u5F3A\u8C03\u8272",focusAccentHint:"\u805A\u7126\u9762\u677F\u6807\u9898\u3001\u258C \u6807\u8BB0\u548C\u5206\u9694\u8FB9\u6846\u7684\u989C\u8272\u3002",accentPrimary:"\u4E3B\u8272\uFF08\u54C1\u724C\u5F3A\u8C03\u8272\uFF09",accentSuccess:"\u6210\u529F\u8272\uFF08\u4F20\u7EDF\u7EFF\uFF09",accentInfo:"\u4FE1\u606F\u8272\uFF08\u51B7\u84DD\uFF09",notifications:"\u901A\u77E5",notificationsHint:"\u540E\u53F0\u804A\u5929\u9875\u5B8C\u6210\u6216\u5728\u5BA1\u6279\u5904\u6682\u505C\u65F6\u89E6\u53D1\u3002Toast = \u53F3\u4E0B\u89D2\u5F39\u7A97\uFF1BSound = \u7EC8\u7AEF\u54CD\u94C3 + \u63D0\u793A\u97F3\u3002\u6807\u7B7E\u4E0A\u7684\u672A\u8BFB\u5706\u70B9\u59CB\u7EC8\u5F00\u542F\u3002",toast:"Toast \u5F39\u7A97",sound:"\u58F0\u97F3",zen:"\u7985\u6A21\u5F0F",zenHint:"`zen` \u6807\u8BB0\uFF08\u6587\u4EF6\u5217\u8868\u4E0A\u65B9\uFF09\u548C `prefix`+\u7A7A\u683C \u4F1A\u628A ChatTab \u6536\u8D77\u5230\u5F15\u64CE\u9762\u677F\u2014\u2014\u9690\u85CF\u6587\u4EF6\u4E0E\u7EC8\u7AEF\u9762\u677F\u3002\u4FDD\u6301\u5F00\u542F\u53EF\u8BA9 Tasks \u4FA7\u680F\u59CB\u7EC8\u53EF\u89C1\uFF0C\u65B9\u4FBF\u968F\u65F6\u9000\u51FA\u3002",zenKeepTasks:"\u7985\u6A21\u5F0F\u4E0B\u4FDD\u7559 Tasks \u9762\u677F",surface:"\u8BBE\u7F6E\u9875\u9762",surfaceHint:"\u8BBE\u7F6E\u53CA\u5176\u4ED6\u5B8C\u6574\u5BF9\u8BDD\u6846\uFF08\u65B0\u5EFA\u4EFB\u52A1\u3001\u91CD\u547D\u540D\uFF09\u7684\u6253\u5F00\u4F4D\u7F6E\u3002ChatTab = \u4E0E\u5F15\u64CE\u6807\u7B7E\u5E76\u5217\u7684\u72EC\u7ACB\u6574\u7A97\u9875\u9762\uFF1BTask panel = \u5DE6\u4FA7 Tasks \u9762\u677F\u5185\u7684\u6D6E\u5C42\u3002enter \u9009\u62E9\u3002",surfaceChattab:"ChatTab\uFF08\u72EC\u7ACB\u9875\u9762\uFF09",surfaceTaskpanel:"Task panel\uFF08\u9762\u677F\u5185\u6D6E\u5C42\uFF09",editor:"\u7F16\u8F91\u5668",editorHint:"\u6587\u4EF6\u6811\u91CC\u6309 `e` \u7528\u4EC0\u4E48\u6253\u5F00\u6587\u4EF6\uFF08enter \u4ECD\u662F\u53EA\u8BFB\u9884\u89C8\uFF09\u3002`auto`\uFF08\u9ED8\u8BA4\uFF09\u8DDF\u968F $VISUAL / $EDITOR\uFF0C\u5426\u5219\u81EA\u52A8\u63A2\u6D4B nvim / vim / emacs / nano\u3002\u5728\u4E0B\u65B9\u4E00\u884C\u6309 enter \u5728 auto / vim / nvim / nano / emacs / custom \u95F4\u5FAA\u73AF\uFF1B\u7F16\u8F91\u5668\u672A\u5B89\u88C5\u65F6\u56DE\u9000\u5230\u9884\u89C8\u3002",editorRow:"\u7F16\u8F91\u5668: < {kind} > (enter \u5207\u6362)",editorCustom:"\u81EA\u5B9A\u4E49: {cmd}",editorCustomUnset:"(\u672A\u8BBE\u7F6E \u2014 enter \u7F16\u8F91)"},engines:{title:"\u542F\u52A8\u547D\u4EE4",hint:"\u6BCF\u4E2A\u5F15\u64CE\u7684\u4EFB\u52A1\u9762\u677F\u8FD0\u884C\u7684\u547D\u4EE4\u3002\u5F53\u4E8C\u8FDB\u5236\u6587\u4EF6\u4E0D\u5728 PATH \u4E0A\u7684 `claude` / `codex` \u540D\u4E0B\uFF08\u6BD4\u5982\u53EB `cl`\uFF09\u3001\u8981\u4F20\u9ED8\u8BA4\u53C2\u6570\uFF0C\u6216\u8981\u6DFB\u52A0\u81EA\u5DF1\u7684\u5F15\u64CE\u65F6\uFF0C\u53EF\u8986\u76D6\u5185\u7F6E\u9879\u3002\u25CF = \u65B0\u4EFB\u52A1\u7684\u9ED8\u8BA4\u5F15\u64CE\uFF08\u4E5F\u53EF\u7528 Ctrl+Shift+T \u8BBE\u7F6E\uFF09\u3002enter \u7F16\u8F91\u547D\u4EE4 \xB7 r \u91CD\u547D\u540D \xB7 x \u91CD\u7F6E/\u79FB\u9664 \xB7 d \u8BBE\u4E3A\u9ED8\u8BA4\u3002",defaultTag:" (\u9ED8\u8BA4)",customTag:" (\u81EA\u5B9A\u4E49)",addEngine:"+ \u6DFB\u52A0\u5F15\u64CE"},accounts:{title:"\u8D26\u6237",hint:"\u672C\u5730\u63A2\u6D4B\u5230\u7684\u5F15\u64CE\u8D26\u6237\u7684\u53EA\u8BFB\u89C6\u56FE\u3002\u767B\u5F55\u6D41\u7A0B\u7A0D\u540E\u4F1A\u63A5\u5165\u8FD9\u91CC\u3002",checking:"\u68C0\u67E5\u4E2D\u2026",notLoggedIn:"\u25CB \u672A\u767B\u5F55",loggedIn:"\u25CF \u5DF2\u767B\u5F55: {email}",apiKeyConfigured:"\u25CF \u5DF2\u914D\u7F6E API key",chatgptLogin:"\u25CF ChatGPT \u767B\u5F55: {email}",tokenConfigured:"\u25CF \u5DF2\u914D\u7F6E Token ({source})",copilotDetected:"\u25CF \u68C0\u6D4B\u5230 Copilot \u767B\u5F55"},keybindings:{title:"\u5FEB\u6377\u952E",hint:"\u7F16\u8F91\u4E0B\u9762\u7684 YAML \u6765\u91CD\u7ED1\u5B9A\u6309\u952E\uFF0C\u7136\u540E\u91CD\u542F kobe\uFF08\u6216\u91CD\u5EFA\u9762\u677F\uFF09\u3002\u4EFB\u610F\u4F4D\u7F6E\u6309 F1 \u67E5\u770B\u5E26\u6BCF\u4E2A\u7ED1\u5B9A id \u7684\u5B9E\u65F6\u952E\u4F4D\u8868\u3002",configFile:"\u914D\u7F6E\u6587\u4EF6",notCreated:" (\u5C1A\u672A\u521B\u5EFA)",example:"\u793A\u4F8B",overridesApplied:"\u5DF2\u5E94\u7528\u7684\u8986\u76D6",none:"\u65E0",warnings:"\u8B66\u544A"},feedback:{title:"\u53CD\u9988",hint:"\u901A\u8FC7 `gh` \u5411 kobe \u4ED3\u5E93\u53D1\u4E00\u6761 GitHub Discussion\u3002\u9700\u8981 `gh auth login`\uFF1B\u5206\u7C7B\u9ED8\u8BA4\u4E3A Feedback\u3002",titleLabel:"\u6807\u9898",titlePlaceholder:"\u7B80\u77ED\u6982\u62EC",descriptionLabel:"\u63CF\u8FF0",descriptionPlaceholder:"\u53D1\u751F\u4E86\u4EC0\u4E48\uFF1F(enter \u53D1\u9001)",send:"[enter] \u53D1\u9001\u5230 GitHub Discussions"},dev:{reset:"\u91CD\u7F6E UI \u72B6\u6001",resetHint:"\u6E05\u7A7A ~/.config/kobe/state.json \u548C ~/.kobe/tasks.json\uFF0C\u7136\u540E\u9000\u51FA kobe\u2014\u2014\u91CD\u65B0\u542F\u52A8\u5373\u53EF\u4ECE\u5934\u5F00\u59CB\u3002\u5DE5\u4F5C\u4F1A\u8BDD / \u5F52\u6863\u5217\u8868\u3001\u9762\u677F\u5C3A\u5BF8\u3001\u4E3B\u9898\u3001\u6A21\u578B\u9009\u62E9\u90FD\u4F1A\u91CD\u7F6E\u3002\u78C1\u76D8\u4E0A\u7684 worktree \u548C Claude Code \u4F1A\u8BDD\u5386\u53F2\u4E0D\u53D7\u5F71\u54CD\u3002",resetButton:"[enter] \u91CD\u7F6E",restart:"\u91CD\u542F\u540E\u7AEF",restartHint:"\u505C\u6B62 kobe daemon \u5E76\u9000\u51FA\u5F53\u524D kobe \u7A97\u53E3\uFF0C\u4E0B\u6B21\u542F\u52A8\u4F1A\u62C9\u8D77\u4E00\u4E2A\u5168\u65B0\u7684 daemon\u2014\u2014\u65E0\u9700\u6740\u8FDB\u7A0B\u5373\u53EF\u5E94\u7528 daemon / orchestrator / engine \u7684\u6539\u52A8\u3002\u5176\u4ED6\u5DF2\u8FDE\u63A5\u7684 kobe \u7A97\u53E3\u4E5F\u4F1A\u65AD\u5F00\u8FDE\u63A5\u3002",restartButton:"[enter] \u91CD\u542F",doctorHint:"daemon \u5361\u4F4F\u6216\u65E0\u54CD\u5E94\uFF1F\u5728 shell \u91CC\u8FD0\u884C `kobe doctor` \u8BCA\u65AD\uFF0C\u6216 `kobe reset` \u505C\u6B62 daemon + \u6740\u6389\u4F1A\u8BDD\uFF08\u4FDD\u7559\u4F60\u7684\u4EFB\u52A1\uFF09\u3002\u53EA\u6709\u8981\u540C\u65F6\u6E05\u7A7A\u4EFB\u52A1\u7D22\u5F15 + UI \u72B6\u6001\u65F6\u624D\u7528 `kobe reset --hard`\u3002",experimental:"\u5B9E\u9A8C\u6027",remoteHint:"\u8FDC\u7A0B\u9879\u76EE\uFF08SSH\uFF09\uFF1A\u6CE8\u518C\u4E00\u4E2A git worktree + \u5F15\u64CE\u90FD\u901A\u8FC7 SSH \u8DD1\u5728\u53E6\u4E00\u53F0\u4E3B\u673A\u4E0A\u3001\u7531\u672C\u5730 kobe \u9A71\u52A8\u7684\u9879\u76EE\u3002\u5C1A\u672A\u5B8C\u6210\u2014\u2014\u6587\u4EF6/diff \u9762\u677F\u5BF9\u8FDC\u7A0B\u4ECD\u4F1A\u964D\u7EA7\u3002\u542F\u7528 `kobe add --remote`\u3002",remoteOn:"[x] \u8FDC\u7A0B\u9879\u76EE (\u5F00)",remoteOff:"[ ] \u8FDC\u7A0B\u9879\u76EE (\u5173)",autoStatusHint:"\u81EA\u52A8\u72B6\u6001\u6D41\u8F6C\uFF1Abacklog \u4EFB\u52A1\u5728\u5176\u5F15\u64CE\u5F00\u59CB\u4E00\u8F6E\u65F6\u79FB\u5230 in_progress\uFF0C\u65B0\u7684 claude \u4F1A\u8BDD\u4F1A\u62FF\u5230\u4E00\u6761\u7CFB\u7EDF\u63D0\u793A\uFF0C\u544A\u8BC9 agent \u5B8C\u6210\u540E\u81EA\u884C\u8BBE\u4E3A in_review\u3002\u7EDD\u4E0D\u89E6\u78B0 done/canceled\u3002",autoStatusOn:"[x] \u81EA\u52A8\u72B6\u6001\u6D41\u8F6C (\u5F00)",autoStatusOff:"[ ] \u81EA\u52A8\u72B6\u6001\u6D41\u8F6C (\u5173)",dispatcherHint:"\u73B0\u573A\u7B14\u8BB0\u8C03\u5EA6\u5668\uFF1A\u4EFB\u52A1\u4F1A\u8BDD\u63D0\u4EA4\u4E00\u884C\u7ECF\u9A8C\uFF08`kobe api note`\uFF09\uFF0Cdaemon \u5C06\u6BCF\u6761\u8F6C\u53D1\u7ED9\u4ED3\u5E93\u7684\u4E3B\u4F1A\u8BDD\uFF0C\u4E3B\u4F1A\u8BDD\u518D\u628A\u5B83\u4EEC\u8F6C\u8FBE\u7ED9\u80FD\u53D7\u76CA\u7684\u8FDB\u884C\u4E2D\u4EFB\u52A1\uFF08`kobe api dispatch`\uFF09\u3002\u76EE\u524D\u7531 Web \u6258\u7BA1\u7684\u4F1A\u8BDD\u4F1A\u6536\u5230\u8F6C\u8FBE\u3002",dispatcherOn:"[x] \u73B0\u573A\u7B14\u8BB0\u8C03\u5EA6\u5668 (\u5F00)",dispatcherOff:"[ ] \u73B0\u573A\u7B14\u8BB0\u8C03\u5EA6\u5668 (\u5173)"}}});var c6,n6;var d6=k(()=>{c6={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}"}},n6={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 i6,l6;var a6=k(()=>{i6={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`"}},l6={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 xX(f){return typeof f==="string"&&bz.some((J)=>J.id===f)}var hN,PN,bz,kG,NG="en";var yG=k(()=>{M6();A6();C6();y6();I6();E6();h6();m6();d6();a6();hN={settings:P6,tasks:c6,files:F6,newTask:b6,ops:T6,update:i6,quickTask:x6,help:g6,common:D6,keys:k6},PN={settings:v6,tasks:n6,files:O6,newTask:S6,ops:u6,update:l6,quickTask:w6,help:R6,common:L6,keys:N6},bz=[{id:"en",label:"English"},{id:"zh",label:"\u4E2D\u6587"}],kG={en:hN,zh:PN}});function wX(f){if(kG[f])vN("lang",f)}function ej(){return tj.lang}function $6(f,J){let Y=f;for(let z of J.split("."))if(Y&&typeof Y==="object"&&z in Y)Y=Y[z];else return;return typeof Y==="string"?Y:void 0}function mN(f,J){if(!J)return f;return f.replace(/\{(\w+)\}/g,(Y,z)=>(z in J)?String(J[z]):Y)}function F(f,J){let Y=tj.lang,z=$6(kG[Y],f)??$6(kG.en,f)??f;return mN(z,J)}function f8(f,J){let Y=tj.lang,z=(G)=>{return G.keys[f]?.[J]};return z(kG[Y])??z(kG.en)??J}var tj,vN;var X1=k(()=>{CG();yG();yG();[tj,vN]=uJ({lang:NG})});function cN(f){let J=[],Y=f.name;if(Y)J.push(Y);if(Y==="return")J.push("enter");if(Y==="enter")J.push("return");let z=[];if(f.ctrl)z.push("ctrl");if(f.meta)z.push("cmd");if(f.option)z.push("alt");if(f.shift&&Y&&Y.length>1)z.push("shift");if(z.length===0)return J;let G=`${z.join("+")}+`;return J.map((X)=>G+X)}function J8(f,J){if(J.defaultPrevented)return!1;let Y=cN(J);for(let z=f.length-1;z>=0;z--){let G=f[z];if(!G)continue;let X=G.config();if(X.enabled===!1)continue;let q=X.bindings.find((Q)=>Y.includes(Q.key));if(q)return q.cmd(J,q.slot),J.preventDefault(),!0}return!1}function dN(){if(Y8)return;let f=z1();if(!f)throw Error("useBindings: no renderer in scope; call inside a component rendered by @opentui/solid.");Y8=f.keyInput,r6=(J)=>{J8(LQ,J)},Y8.on("keypress",r6)}function Uf(f){dN();let J=nN++,Y={config:f,id:J};Gf(()=>{f()}),LQ.push(Y),mf(()=>{let z=LQ.findIndex((G)=>G.id===J);if(z>=0)LQ.splice(z,1)})}var nN=1,LQ,Y8=null,r6=null;var S1=k(()=>{h();Wf();LQ=[]});import{RGBA as p6}from"@opentui/core";function aN(f){let J=TJ(),Y=i0(),{theme:z}=Y,G=z1(),X=!1,q=()=>{if(f.size==="xlarge")return 140;if(f.size==="large")return 110;if(f.size==="small")return 50;return 80},Q=2,H=()=>Math.max(8,J().height-Q*2);return(()=>{var B=W("box"),V=W("box");return D(B,V),Z(B,"onMouseDown",()=>{X=!!G?.getSelection()}),Z(B,"onMouseUp",()=>{if(X){X=!1;return}f.onClose?.()}),Z(B,"alignItems","center"),Z(B,"justifyContent","center"),Z(B,"position","absolute"),Z(B,"zIndex",3000),Z(B,"left",0),Z(B,"top",0),Z(V,"onMouseUp",(j)=>{X=!1,j.stopPropagation()}),Z(V,"flexShrink",1),Z(V,"flexGrow",0),Z(V,"paddingTop",1),K(V,()=>f.children),u((j)=>{var U=J().width,L=J().height,O=Y.transparentBackground?lN:iN,M=q(),R=J().width-2,S=H(),a=z.backgroundDialog;return U!==j.e&&(j.e=Z(B,"width",U,j.e)),L!==j.t&&(j.t=Z(B,"height",L,j.t)),O!==j.a&&(j.a=Z(B,"backgroundColor",O,j.a)),M!==j.o&&(j.o=Z(V,"width",M,j.o)),R!==j.i&&(j.i=Z(V,"maxWidth",R,j.i)),S!==j.n&&(j.n=Z(V,"maxHeight",S,j.n)),a!==j.s&&(j.s=Z(V,"backgroundColor",a,j.s)),j},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),B})()}function $N(){let[f,J]=uJ({stack:[],size:"medium"}),Y=z1(),z=null;function G(){setTimeout(()=>{if(!z)return;if(z.isDestroyed)return;function X(Q){for(let H of Q.getChildren()){if(H===z)return!0;if(X(H))return!0}return!1}let q=Y?.root;if(!q)return;if(!X(q))return;z.focus()},1)}return Uf(()=>({enabled:f.stack.length>0&&!Y?.getSelection()?.getSelectedText(),bindings:[{key:"escape",cmd:()=>{if(Y?.getSelection())Y.clearSelection();f.stack.at(-1)?.onClose?.(),J("stack",f.stack.slice(0,-1)),G()}},{key:"ctrl+c",cmd:()=>{if(Y?.getSelection())Y.clearSelection();f.stack.at(-1)?.onClose?.(),J("stack",f.stack.slice(0,-1)),G()}}]})),{clear(){for(let X of f.stack)X.onClose?.();vZ(()=>{J("size","medium"),J("stack",[])}),G()},replace(X,q){if(f.stack.length===0)z=Y?.currentFocusedRenderable??null,z?.blur();for(let Q of f.stack)Q.onClose?.();J("size","medium"),J("stack",[{element:X,onClose:q}])},push(X,q){if(f.stack.length===0)z=Y?.currentFocusedRenderable??null,z?.blur();J("stack",[...f.stack,{element:X,onClose:q}])},pop(){if(f.stack.at(-1)?.onClose?.(),J("stack",f.stack.slice(0,-1)),f.stack.length===0)G()},get stack(){return f.stack},get size(){return f.size},setSize(X){J("size",X)}}}function o6(f){let J=$N();return b(_6.Provider,{value:J,get children(){return[I0(()=>f.children),(()=>{var Y=W("box");return Z(Y,"position","absolute"),Z(Y,"zIndex",3000),K(Y,b(X0,{get when(){return J.stack.length},get children(){return b(aN,{onClose:()=>J.clear(),get size(){return J.size},get children(){return J.stack.at(-1).element()}})}})),Y})()]}})}function vf(){let f=u1(_6);if(!f)throw Error("useDialog must be used within a DialogProvider");return f}var iN,lN,_6;var v1=k(()=>{h();h();h();h();h();h();h();h();Wf();CG();xf();S1();iN=p6.fromInts(0,0,0,128),lN=p6.fromInts(0,0,0,64);_6=CJ()});import{spawnSync as z8}from"child_process";import*as t6 from"fs";function s6(f){return`This folder isn't a git repository yet, and a task needs a git branch to work in. To fix it, turn ${f} into a repo: git init && git add -A && git commit -m "init" \u2014 then create the task again. (Working in non-git folders is coming soon.)`}function e6(f){let J=f.trim();if(!J)return"repo path is required";let Y;try{Y=t6.statSync(J)}catch{return`path does not exist: ${J}`}if(!Y.isDirectory())return`not a directory: ${J}`;try{if(z8("git",["rev-parse","--git-dir"],{cwd:J,encoding:"utf-8",timeout:2000,stdio:["ignore","pipe","ignore"]}).status!==0)return s6(J)}catch{return s6(J)}return null}function hX(f){if(!f)return null;try{let J=z8("git",["rev-parse","--abbrev-ref","HEAD"],{cwd:f,encoding:"utf-8",timeout:2000,stdio:["ignore","pipe","ignore"]});if(J.status!==0)return null;let Y=J.stdout.trim();if(!Y||Y==="HEAD")return null;return Y}catch{return null}}function f4(f){if(!f)return[];try{let J=z8("git",["for-each-ref","--format=%(refname:short)","refs/heads/"],{cwd:f,encoding:"utf-8",timeout:2000});if(J.status!==0)return[];return J.stdout.split(`
223
+ `).map((Y)=>Y.trim()).filter(Boolean).sort((Y,z)=>{let G=(Q)=>Q==="main"?0:Q==="master"?1:Q==="develop"?2:3,X=G(Y),q=G(z);if(X!==q)return X-q;return Y.localeCompare(z)})}catch{return[]}}var LJ="main";var MQ=()=>{};import*as J4 from"fs";import*as FQ from"os";function V1(f){if(f==="~")return FQ.homedir();if(f.startsWith("~/"))return FQ.homedir()+f.slice(1);return f}function G8(f){if(!f)return{base:"",filter:""};let Y=V1(f==="~"?"~/":f);if(Y.endsWith("/"))return{base:Y,filter:""};let z=Y.lastIndexOf("/");if(z===-1)return{base:"",filter:Y};return{base:Y.slice(0,z+1),filter:Y.slice(z+1)}}function X8(f){if(!f)return[];try{let J=J4.readdirSync(f,{withFileTypes:!0}),Y=[];for(let z of J)if(z.isDirectory())Y.push(z.name);return Y.sort((z,G)=>z.localeCompare(G))}catch{return[]}}function Z8(f,J){let Y=J.toLowerCase(),G=Y.startsWith(".")?f:f.filter((X)=>!X.startsWith("."));if(!Y)return G;return G.filter((X)=>X.toLowerCase().startsWith(Y))}function PX(f,J,Y){let z=J+Y;if(f.startsWith("~")){let G=FQ.homedir();if(z===G)return"~";if(z.startsWith(`${G}/`))return`~${z.slice(G.length)}`}return z}var OQ=()=>{};import{spawn as rN}from"child_process";import*as Sz from"fs";import*as vX from"path";function Y4(f){let J=f.trim().replace(/\/+$/,"");if(!J)return"";let Y=J.lastIndexOf("/"),z=J.lastIndexOf(":"),G=Math.max(Y,z);return(G>=0?J.slice(G+1):J).replace(/\.git$/i,"")}function z4(f){let J=f.trim();if(!J)return F("newTask.error.gitUrlRequired");let Y=J.includes("://"),z=J.includes("@")&&J.includes(":"),G=J.includes("/");if(!Y&&!z&&!G)return F("newTask.error.gitUrlInvalid",{url:J});return null}function G4(f,J){let Y=J.trim();if(!Y)return F("newTask.error.folderRequired");if(Y.includes("/")||Y.includes("\\"))return F("newTask.error.folderHasSeparator");let z=f.trim();if(!z)return F("newTask.error.parentRequired");let G=V1(z),X;try{X=Sz.statSync(G)}catch{return F("newTask.error.parentNotFound",{path:G})}if(!X.isDirectory())return F("newTask.error.parentNotDir",{path:G});let q=vX.join(G,Y);if(Sz.existsSync(q))return F("newTask.error.targetExists",{path:q});return null}function X4(f,J){return vX.join(V1(f.trim()),J.trim())}function Z4(f,J){let Y=J.trim();if(!Y)return J;let z=V1(f.trim());if(!z)return J;try{if(!Sz.statSync(z).isDirectory())return J}catch{return J}if(!Sz.existsSync(vX.join(z,Y)))return Y;for(let G=2;G<1000;G++){let X=`${Y}-${G}`;if(!Sz.existsSync(vX.join(z,X)))return X}return Y}function q4(f,J,Y){return new Promise((z)=>{let G="";try{let X=rN("git",["clone","--progress",f,J],{stdio:["ignore","ignore","pipe"]});X.stderr?.setEncoding("utf-8"),X.stderr?.on("data",(q)=>{if(G+=q,Y){let Q=q.split(/[\r\n]+/).filter((B)=>B.trim().length>0),H=Q[Q.length-1];if(H)Y(H)}}),X.on("error",(q)=>{z({ok:!1,error:q.message})}),X.on("close",(q)=>{if(q===0){z({ok:!0,path:J});return}let Q=G.split(/[\r\n]+/).filter((H)=>H.trim().length>0).pop()??`git clone exited with ${q}`;z({ok:!1,error:Q})})}catch(X){z({ok:!1,error:X instanceof Error?X.message:String(X)})}})}var Q4=k(()=>{X1();OQ()});function AQ(f){if(f==="existing")return"clone";if(f==="clone")return"adopt";return"existing"}function H4(f){if(f==="existing")return"adopt";if(f==="clone")return"existing";return"clone"}function B4(f,J){let Y=f.trim();if(J.includes(Y))return"saved";if(Y.startsWith("~"))return"browse";if(Y.includes("/"))return"browse";return"saved"}function Z1(f){return f.replace(/[\r\n]+/g,"")}function q8(f,J="existing"){if(f==="confirm")return"tabs";if(f==="tabs")return"engine";if(f==="engine")return Q8(J);if(J==="clone"){if(f==="cloneUrl")return"cloneParent";if(f==="cloneParent")return"cloneFolder";if(f==="cloneFolder")return"cloneBaseRef";if(f==="cloneBaseRef")return"confirm";return"cloneUrl"}if(J==="adopt")return f==="adoptFilter"?"confirm":"adoptFilter";if(f==="repo")return"baseRef";if(f==="baseRef")return"confirm";return"repo"}function Q8(f){if(f==="clone")return"cloneUrl";if(f==="adopt")return"adoptFilter";return"repo"}function j4(f,J){let Y=J.trim();if(!Y)return f;return f.filter((z)=>oX(Y,z.path))}function W4(f,J){let Y=new Set,z=[];for(let G of[f,...J]){let X=G.trim();if(!X||Y.has(X))continue;Y.add(X),z.push(X)}return z}function V4(f,J){let Y=J.trim().toLowerCase();if(!Y)return f;return f.filter((z)=>z.toLowerCase().includes(Y))}function K4(f,J){let Y=J.trim().toLowerCase();if(!Y)return f;return f.filter((z)=>z.toLowerCase().includes(Y))}function mX(f,J,Y=pN){let z=f.length;if(z<=Y)return{items:f,start:0,total:z};let G=Math.floor(Y/2),X=Math.max(0,J-G);if(X+Y>z)X=z-Y;return{items:f.slice(X,X+Y),start:X,total:z}}function EJ(f,J){if(J<=0)return 0;return Math.max(0,Math.min(J-1,f))}function U4(f,J,Y){let z=J[Y];if(z)return z;return f.trim()||LJ}var pN=8;var H8=k(()=>{nQ();MQ()});import{TextAttributes as _1}from"@opentui/core";function D4(f){let J=vf(),{theme:Y}=i0(),[z,G]=r("existing"),X=()=>{let d=f.availableVendors;return d&&d.length>0?d:cf},q=(()=>{let d=X(),s=f.defaultVendor??"claude";return d.includes(s)?s:d[0]??"claude"})(),[Q,H]=r(q),[B,V]=r("tabs"),[j,U]=r(f.defaultRepo),[L,O]=r(hX(V1(f.defaultRepo.trim()))??LJ),[M,R]=r(!1),[S,a]=r(""),[N,g]=r(f.defaultCloneParent?.trim()?f.defaultCloneParent:"~/"),[C,y]=r(""),[_,z0]=r(!1),[t,Y0]=r(LJ),[T,Q0]=r(!1),[p,D0]=r(""),g0=U0(()=>W4(f.defaultRepo,f.savedRepos)),$=U0(()=>B4(j(),g0())),E=U0(()=>G8(j())),f0=U0(()=>X8(E().base)),I=U0(()=>Z8(f0(),E().filter)),G0=U0(()=>V4(g0(),j())),x=U0(()=>$()==="browse"?I():G0()),[c,Z0]=r(0),V0=U0(()=>mX(x(),c())),[H0,y0]=r(!1),w0=U0(()=>f4(V1(j().trim()))),T0=U0(()=>K4(w0(),L())),[r0,P]=r(0),M0=U0(()=>mX(T0(),r0())),J0=U0(()=>G8(N())),F0=U0(()=>X8(J0().base)),a0=U0(()=>Z8(F0(),J0().filter)),[p0,u0]=r(0),_0=U0(()=>mX(a0(),p0())),[n,q0]=r(!1),[b0,o0]=r(""),[l0,$0]=r(0),[t0,Rf]=r(new Set),[gf]=PZ(()=>z()==="adopt"?V1(j().trim()):null,async(d)=>f.discoverAdoptable?await f.discoverAdoptable(d):[]),o=U0(()=>j4(gf()??[],b0())),e=U0(()=>mX(o().map((d)=>d.path),l0())),B0=U0(()=>{let d=e();return o().slice(d.start,d.start+d.items.length)});Gf(()=>{o(),$0((d)=>EJ(d,o().length))});function C0(d){Rf((s)=>{let S0=new Set(s);if(S0.has(d))S0.delete(d);else S0.add(d);return S0})}function A(){let d=o()[l0()];if(d)C0(d.path)}Gf(()=>{T0(),P(0)}),Gf(()=>{let d=V1(j().trim());if(!d)return;if(M())return;let s=hX(d);if(s)O(s)}),Gf(()=>{x(),Z0(0)}),Gf(()=>{a0(),u0(0)}),Gf(()=>{let d=S(),s=N();if(_())return;let S0=Y4(d);y(Z4(s,S0))});let[P0,K0]=r(null);Gf(()=>{j(),S(),N(),C(),b0(),K0(null)});function E0(){let d=V1(j().trim());if(!d)return;let s=e6(d);if(s){K0(s),V("repo");return}let S0=L().trim()||LJ;f.onSubmit({repo:d,baseRef:S0,vendor:Q()}),J.clear()}async function W0(){if(T())return;let d=z4(S());if(d){K0(d),V("cloneUrl");return}let s=G4(N(),C());if(s){K0(s),V(C().trim()?"cloneParent":"cloneFolder");return}let S0=X4(N(),C());Q0(!0),D0(F("newTask.clone.progressInto",{target:S0}));let N0=await q4(S().trim(),S0,(tf)=>{D0(tf)});if(Q0(!1),!N0.ok){K0(F("newTask.error.cloneFailed",{error:N0.error})),V("cloneUrl");return}let q1=t().trim()||LJ,K1=V1(N().trim());f.onSubmit({repo:N0.path,baseRef:q1,vendor:Q(),cloned:{parentDir:K1}}),J.clear()}function L0(){let d=o();if(d.length===0){K0(F("newTask.error.noAdoptable"));return}let s=t0(),S0=s.size>0?d.filter((N0)=>s.has(N0.path)):d.slice(l0(),l0()+1);if(S0.length===0)return;f.onSubmit({mode:"adopt",repo:V1(j().trim()),vendor:Q(),adopt:S0.map((N0)=>({worktreePath:N0.path,branch:N0.branch}))}),J.clear()}function R0(){if(z()==="clone"){W0();return}if(z()==="adopt"){L0();return}E0()}function Jf(d){if(T())return;if(d===z())return;G(d),V(Q8(d)),K0(null)}function Yf(d){if(T())return;let s=d===1?AQ(z()):H4(z());if(s===z())return;G(s),K0(null),V("tabs")}function n0(d){H((s)=>d===1?qY(X(),s):dQ(X(),s))}function yf(){if(!j().trim()&&$()==="saved"){let s=x()[0];if(s){U(s),V("baseRef");return}}if($()==="browse"){let S0=I()[c()],N0=E();if(S0){U(PX(j(),N0.base,S0)),Z0(0),y0(!0),V("baseRef");return}V("baseRef");return}let d=x()[c()];if(d){U(d),V("baseRef");return}V("baseRef")}function k0(d){let S0=x()[d];if(!S0)return;if($()==="browse"){let N0=E();U(PX(j(),N0.base,S0)),Z0(d),y0(!0),V("baseRef");return}U(S0),Z0(d),V("baseRef")}function wf(){let s=a0()[p0()],S0=J0();if(s){g(PX(N(),S0.base,s)),u0(0),q0(!0),V("cloneFolder");return}V("cloneFolder")}function v(d){let S0=a0()[d];if(!S0)return;let N0=J0();g(PX(N(),N0.base,S0)),u0(d),q0(!0),V("cloneFolder")}let A0=()=>{let d=o();if(d.length===0)return;let s=d.every((S0)=>t0().has(S0.path));Rf(s?new Set:new Set(d.map((S0)=>S0.path)))};Uf(()=>({bindings:[{key:"tab",cmd:()=>V((d)=>q8(d,z()))},{key:"ctrl+]",cmd:()=>Jf(AQ(z()))},{key:"ctrl+[",cmd:()=>Jf(AQ(z()))},{key:"ctrl+e",cmd:()=>H((d)=>qY(X(),d))},{key:"up",cmd:()=>{if(T())return;if(z()==="existing"&&B()==="repo"){let d=x();if(d.length===0)return;Z0(EJ(c()-1,d.length));return}if(z()==="existing"&&B()==="baseRef"){let d=T0();if(d.length===0)return;P(EJ(r0()-1,d.length));return}if(z()==="clone"&&B()==="cloneParent"){let d=a0();if(d.length===0)return;u0(EJ(p0()-1,d.length));return}if(z()==="adopt"){let d=o();if(d.length===0)return;$0(EJ(l0()-1,d.length))}}},{key:"down",cmd:()=>{if(T())return;if(z()==="existing"&&B()==="repo"){let d=x();if(d.length===0)return;Z0(EJ(c()+1,d.length));return}if(z()==="existing"&&B()==="baseRef"){let d=T0();if(d.length===0)return;P(EJ(r0()+1,d.length));return}if(z()==="clone"&&B()==="cloneParent"){let d=a0();if(d.length===0)return;u0(EJ(p0()+1,d.length));return}if(z()==="adopt"){let d=o();if(d.length===0)return;$0(EJ(l0()+1,d.length))}}},...B()==="tabs"||B()==="engine"?[{key:"left",cmd:()=>B()==="tabs"?Yf(-1):n0(-1)},{key:"right",cmd:()=>B()==="tabs"?Yf(1):n0(1)},{key:"return",cmd:()=>V((d)=>q8(d,z()))}]:[],...z()==="adopt"?[{key:"ctrl+a",cmd:A0}]:[]]})),Uf(()=>({enabled:B()==="confirm"&&!T(),bindings:[{key:"return",cmd:()=>R0()}]}));let Bf=(d)=>B()===d?Y.primary:Y.textMuted,Of=(d)=>B()===d?_1.BOLD|_1.UNDERLINE:void 0,Qf=(d,s)=>d?s?_1.BOLD|_1.UNDERLINE:_1.BOLD:void 0;return(()=>{var d=W("box"),s=W("box"),S0=W("text"),N0=W("box"),q1=W("box"),K1=W("text"),tf=W("box"),m1=W("box"),xJ=W("text"),F1=W("box"),wJ=W("text"),XY=W("text");return D(d,s),D(d,N0),D(d,F1),Z(d,"paddingLeft",2),Z(d,"paddingRight",2),Z(d,"gap",0),D(s,S0),Z(s,"flexDirection","row"),K(S0,()=>F("newTask.title")),D(N0,q1),Z(N0,"gap",1),Z(N0,"paddingTop",1),Z(N0,"paddingBottom",1),K(N0,()=>{let m=()=>B()==="tabs",i=(l)=>l?Y.primary:Y.textMuted;return(()=>{var l=W("box"),w=W("text"),m0=W("text"),v0=W("text");return D(l,w),D(l,m0),D(l,v0),Z(l,"flexDirection","row"),Z(l,"gap",2),Z(w,"onMouseUp",()=>Jf("existing")),K(w,(()=>{var O0=I0(()=>z()==="existing");return()=>O0()?`\u25B8 ${F("newTask.tabs.existing")}`:` ${F("newTask.tabs.existing")}`})()),Z(m0,"onMouseUp",()=>Jf("clone")),K(m0,(()=>{var O0=I0(()=>z()==="clone");return()=>O0()?`\u25B8 ${F("newTask.tabs.clone")}`:` ${F("newTask.tabs.clone")}`})()),Z(v0,"onMouseUp",()=>Jf("adopt")),K(v0,(()=>{var O0=I0(()=>z()==="adopt");return()=>O0()?`\u25B8 ${F("newTask.tabs.adopt")}`:` ${F("newTask.tabs.adopt")}`})()),u((O0)=>{var c0=i(z()==="existing"),qf=Qf(z()==="existing",m()),Df=i(z()==="clone"),Q1=Qf(z()==="clone",m()),s1=i(z()==="adopt"),ZY=Qf(z()==="adopt",m());return c0!==O0.e&&(O0.e=Z(w,"fg",c0,O0.e)),qf!==O0.t&&(O0.t=Z(w,"attributes",qf,O0.t)),Df!==O0.a&&(O0.a=Z(m0,"fg",Df,O0.a)),Q1!==O0.o&&(O0.o=Z(m0,"attributes",Q1,O0.o)),s1!==O0.i&&(O0.i=Z(v0,"fg",s1,O0.i)),ZY!==O0.n&&(O0.n=Z(v0,"attributes",ZY,O0.n)),O0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),l})()},q1),D(q1,K1),D(q1,tf),Z(q1,"gap",0),K(K1,()=>F("newTask.field.engine")),D(tf,m1),D(tf,xJ),Z(tf,"flexDirection","row"),Z(tf,"gap",2),K(tf,b(Zf,{get each(){return X()},children:(m)=>{let i=()=>Q()===m;return(()=>{var l=W("text");return Z(l,"onMouseUp",()=>H(m)),K(l,()=>i()?"\u25B8 ":" ",null),K(l,m,null),u((w)=>{var m0=i()?Y.primary:Y.textMuted,v0=i()?_1.BOLD:void 0;return m0!==w.e&&(w.e=Z(l,"fg",m0,w.e)),v0!==w.t&&(w.t=Z(l,"attributes",v0,w.t)),w},{e:void 0,t:void 0}),l})()}}),m1),Z(m1,"flexGrow",1),K(xJ,()=>F("newTask.hint.engineCycle")),K(N0,b(X0,{get when(){return z()==="existing"},get children(){return[(()=>{var m=W("box"),i=W("text"),l=W("input");return D(m,i),D(m,l),Z(m,"gap",0),K(i,()=>F("newTask.field.repo")),Z(l,"onInput",(w)=>{y0(!1),U(Z1(w))}),Z(l,"onSubmit",()=>{if(!j().trim())return;yf()}),u((w)=>{var m0=Bf("repo"),v0=Of("repo"),O0=j(),c0=f.defaultRepo,qf=B()==="repo";return m0!==w.e&&(w.e=Z(i,"fg",m0,w.e)),v0!==w.t&&(w.t=Z(i,"attributes",v0,w.t)),O0!==w.a&&(w.a=Z(l,"value",O0,w.a)),c0!==w.o&&(w.o=Z(l,"placeholder",c0,w.o)),qf!==w.i&&(w.i=Z(l,"focused",qf,w.i)),w},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),m})(),b(X0,{get when(){return I0(()=>B()==="repo"&&x().length>0)()&&!H0()},get children(){var m=W("box");return Z(m,"gap",0),Z(m,"paddingLeft",2),K(m,b(X0,{get when(){return V0().start>0},get children(){var i=W("text");return Z(i,"wrapMode","none"),K(i,()=>F("newTask.picker.moreAbove",{count:V0().start})),u((l)=>Z(i,"fg",Y.textMuted,l)),i}}),null),K(m,b(Zf,{get each(){return V0().items},children:(i,l)=>{let w=()=>V0().start+l(),m0=()=>w()===c(),v0=()=>$()==="saved"&&i===f.defaultRepo,O0=()=>$()==="saved"&&j().trim()===i,c0=()=>$()==="browse"?"/":"",qf=()=>v0()?` ${F("newTask.hint.currentDir")}`:"";return(()=>{var Df=W("text");return Z(Df,"wrapMode","none"),Z(Df,"onMouseUp",()=>k0(w())),K(Df,()=>m0()?"\u25B8 ":" ",null),K(Df,i,null),K(Df,c0,null),K(Df,qf,null),u((Q1)=>{var s1=m0()?Y.primary:O0()?Y.accent:Y.textMuted,ZY=m0()?_1.BOLD:void 0;return s1!==Q1.e&&(Q1.e=Z(Df,"fg",s1,Q1.e)),ZY!==Q1.t&&(Q1.t=Z(Df,"attributes",ZY,Q1.t)),Q1},{e:void 0,t:void 0}),Df})()}}),null),K(m,b(X0,{get when(){return V0().start+V0().items.length<V0().total},get children(){var i=W("text");return Z(i,"wrapMode","none"),K(i,()=>F("newTask.picker.moreBelow",{count:V0().total-V0().start-V0().items.length})),u((l)=>Z(i,"fg",Y.textMuted,l)),i}}),null),m}}),(()=>{var m=W("box"),i=W("text"),l=W("input");return D(m,i),D(m,l),Z(m,"gap",0),K(i,()=>F("newTask.field.fromBranch")),Z(l,"placeholder",LJ),Z(l,"onInput",(w)=>{R(!0),O(Z1(w))}),Z(l,"onSubmit",()=>{O(U4(L(),T0(),r0())),R(!0),E0()}),u((w)=>{var m0=Bf("baseRef"),v0=Of("baseRef"),O0=L(),c0=B()==="baseRef";return m0!==w.e&&(w.e=Z(i,"fg",m0,w.e)),v0!==w.t&&(w.t=Z(i,"attributes",v0,w.t)),O0!==w.a&&(w.a=Z(l,"value",O0,w.a)),c0!==w.o&&(w.o=Z(l,"focused",c0,w.o)),w},{e:void 0,t:void 0,a:void 0,o:void 0}),m})(),b(X0,{get when(){return I0(()=>B()==="baseRef"&&T0().length===0)()&&P0()==null},get children(){var m=W("box"),i=W("text");return D(m,i),Z(m,"gap",0),Z(m,"paddingLeft",2),Z(m,"paddingBottom",1),Z(i,"wrapMode","none"),K(i,(()=>{var l=I0(()=>w0().length===0);return()=>l()?F("newTask.hint.noBranchesFound"):F("newTask.hint.noMatchBranch")})()),u((l)=>Z(i,"fg",Y.textMuted,l)),m}}),b(X0,{get when(){return I0(()=>B()==="baseRef")()&&T0().length>0},get children(){var m=W("box");return Z(m,"gap",0),Z(m,"paddingLeft",2),Z(m,"paddingBottom",1),K(m,b(X0,{get when(){return M0().start>0},get children(){var i=W("text");return Z(i,"wrapMode","none"),K(i,()=>F("newTask.picker.moreAbove",{count:M0().start})),u((l)=>Z(i,"fg",Y.textMuted,l)),i}}),null),K(m,b(Zf,{get each(){return M0().items},children:(i,l)=>{let w=()=>M0().start+l(),m0=()=>w()===r0(),v0=()=>L().trim()===i;return(()=>{var O0=W("text");return Z(O0,"wrapMode","none"),Z(O0,"onMouseUp",()=>{O(i),R(!0),P(w()),V("confirm")}),K(O0,()=>m0()?"\u25B8 ":" ",null),K(O0,i,null),u((c0)=>{var qf=m0()?Y.primary:v0()?Y.accent:Y.textMuted,Df=m0()?_1.BOLD:void 0;return qf!==c0.e&&(c0.e=Z(O0,"fg",qf,c0.e)),Df!==c0.t&&(c0.t=Z(O0,"attributes",Df,c0.t)),c0},{e:void 0,t:void 0}),O0})()}}),null),K(m,b(X0,{get when(){return M0().start+M0().items.length<M0().total},get children(){var i=W("text");return Z(i,"wrapMode","none"),K(i,()=>F("newTask.picker.moreBelow",{count:M0().total-M0().start-M0().items.length})),u((l)=>Z(i,"fg",Y.textMuted,l)),i}}),null),m}})]}}),null),K(N0,b(X0,{get when(){return z()==="clone"},get children(){return[(()=>{var m=W("box"),i=W("text"),l=W("input");return D(m,i),D(m,l),Z(m,"gap",0),K(i,()=>F("newTask.field.gitUrl")),Z(l,"placeholder","https://github.com/user/repo.git"),Z(l,"onInput",(w)=>a(Z1(w))),Z(l,"onSubmit",()=>{if(!S().trim())return;V("cloneParent")}),u((w)=>{var m0=Bf("cloneUrl"),v0=Of("cloneUrl"),O0=S(),c0=B()==="cloneUrl";return m0!==w.e&&(w.e=Z(i,"fg",m0,w.e)),v0!==w.t&&(w.t=Z(i,"attributes",v0,w.t)),O0!==w.a&&(w.a=Z(l,"value",O0,w.a)),c0!==w.o&&(w.o=Z(l,"focused",c0,w.o)),w},{e:void 0,t:void 0,a:void 0,o:void 0}),m})(),(()=>{var m=W("box"),i=W("text"),l=W("input");return D(m,i),D(m,l),Z(m,"gap",0),K(i,()=>F("newTask.field.parentDir")),Z(l,"placeholder","~/"),Z(l,"onInput",(w)=>{q0(!1),g(Z1(w))}),Z(l,"onSubmit",()=>wf()),u((w)=>{var m0=Bf("cloneParent"),v0=Of("cloneParent"),O0=N(),c0=B()==="cloneParent";return m0!==w.e&&(w.e=Z(i,"fg",m0,w.e)),v0!==w.t&&(w.t=Z(i,"attributes",v0,w.t)),O0!==w.a&&(w.a=Z(l,"value",O0,w.a)),c0!==w.o&&(w.o=Z(l,"focused",c0,w.o)),w},{e:void 0,t:void 0,a:void 0,o:void 0}),m})(),b(X0,{get when(){return B()==="cloneParent"},get children(){var m=W("box"),i=W("text");return D(m,i),Z(m,"paddingLeft",2),Z(i,"wrapMode","none"),K(i,()=>F("newTask.hint.remembered")),u((l)=>Z(i,"fg",Y.textMuted,l)),m}}),b(X0,{get when(){return I0(()=>B()==="cloneParent"&&a0().length>0)()&&!n()},get children(){var m=W("box");return Z(m,"gap",0),Z(m,"paddingLeft",2),K(m,b(X0,{get when(){return _0().start>0},get children(){var i=W("text");return Z(i,"wrapMode","none"),K(i,()=>F("newTask.picker.moreAbove",{count:_0().start})),u((l)=>Z(i,"fg",Y.textMuted,l)),i}}),null),K(m,b(Zf,{get each(){return _0().items},children:(i,l)=>{let w=()=>_0().start+l(),m0=()=>w()===p0();return(()=>{var v0=W("text"),O0=x0("/");return D(v0,O0),Z(v0,"wrapMode","none"),Z(v0,"onMouseUp",()=>v(w())),K(v0,()=>m0()?"\u25B8 ":" ",O0),K(v0,i,O0),u((c0)=>{var qf=m0()?Y.primary:Y.textMuted,Df=m0()?_1.BOLD:void 0;return qf!==c0.e&&(c0.e=Z(v0,"fg",qf,c0.e)),Df!==c0.t&&(c0.t=Z(v0,"attributes",Df,c0.t)),c0},{e:void 0,t:void 0}),v0})()}}),null),K(m,b(X0,{get when(){return _0().start+_0().items.length<_0().total},get children(){var i=W("text");return Z(i,"wrapMode","none"),K(i,()=>F("newTask.picker.moreBelow",{count:_0().total-_0().start-_0().items.length})),u((l)=>Z(i,"fg",Y.textMuted,l)),i}}),null),m}}),(()=>{var m=W("box"),i=W("text"),l=W("input");return D(m,i),D(m,l),Z(m,"gap",0),K(i,()=>F("newTask.field.folderName")),Z(l,"onInput",(w)=>{z0(!0),y(Z1(w))}),Z(l,"onSubmit",()=>V("cloneBaseRef")),u((w)=>{var m0=Bf("cloneFolder"),v0=Of("cloneFolder"),O0=C(),c0=F("newTask.placeholder.folderName"),qf=B()==="cloneFolder";return m0!==w.e&&(w.e=Z(i,"fg",m0,w.e)),v0!==w.t&&(w.t=Z(i,"attributes",v0,w.t)),O0!==w.a&&(w.a=Z(l,"value",O0,w.a)),c0!==w.o&&(w.o=Z(l,"placeholder",c0,w.o)),qf!==w.i&&(w.i=Z(l,"focused",qf,w.i)),w},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),m})(),(()=>{var m=W("box"),i=W("text"),l=W("input");return D(m,i),D(m,l),Z(m,"gap",0),K(i,()=>F("newTask.field.baseBranch")),Z(l,"placeholder",LJ),Z(l,"onInput",(w)=>Y0(Z1(w))),Z(l,"onSubmit",()=>void W0()),u((w)=>{var m0=Bf("cloneBaseRef"),v0=Of("cloneBaseRef"),O0=t(),c0=B()==="cloneBaseRef";return m0!==w.e&&(w.e=Z(i,"fg",m0,w.e)),v0!==w.t&&(w.t=Z(i,"attributes",v0,w.t)),O0!==w.a&&(w.a=Z(l,"value",O0,w.a)),c0!==w.o&&(w.o=Z(l,"focused",c0,w.o)),w},{e:void 0,t:void 0,a:void 0,o:void 0}),m})(),b(X0,{get when(){return T()},get children(){var m=W("box"),i=W("text");return D(m,i),Z(m,"gap",0),Z(m,"paddingLeft",2),Z(i,"wrapMode","none"),K(i,()=>p()||F("newTask.clone.progressFallback")),u((l)=>Z(i,"fg",Y.textMuted,l)),m}})]}}),null),K(N0,b(X0,{get when(){return z()==="adopt"},get children(){return[(()=>{var m=W("box"),i=W("text"),l=W("input");return D(m,i),D(m,l),Z(m,"gap",0),K(i,()=>F("newTask.field.adoptFilter")),Z(l,"onInput",(w)=>o0(Z1(w))),Z(l,"onSubmit",()=>A()),u((w)=>{var m0=Bf("adoptFilter"),v0=Of("adoptFilter"),O0=b0(),c0=F("newTask.placeholder.adoptFilter"),qf=B()==="adoptFilter";return m0!==w.e&&(w.e=Z(i,"fg",m0,w.e)),v0!==w.t&&(w.t=Z(i,"attributes",v0,w.t)),O0!==w.a&&(w.a=Z(l,"value",O0,w.a)),c0!==w.o&&(w.o=Z(l,"placeholder",c0,w.o)),qf!==w.i&&(w.i=Z(l,"focused",qf,w.i)),w},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),m})(),(()=>{var m=W("box"),i=W("text");return D(m,i),Z(m,"paddingLeft",2),Z(i,"wrapMode","none"),K(i,()=>F("newTask.adopt.repoLine",{path:V1(j().trim())||F("newTask.adopt.repoNone")})),u((l)=>Z(i,"fg",Y.textMuted,l)),m})(),b(X0,{get when(){return gf.loading},get children(){var m=W("box"),i=W("text");return D(m,i),Z(m,"paddingLeft",2),Z(i,"wrapMode","none"),K(i,()=>F("newTask.hint.scanningWorktrees")),u((l)=>Z(i,"fg",Y.textMuted,l)),m}}),b(X0,{get when(){return I0(()=>!gf.loading)()&&o().length===0},get children(){var m=W("box"),i=W("text");return D(m,i),Z(m,"paddingLeft",2),Z(i,"wrapMode","none"),K(i,(()=>{var l=I0(()=>(gf()??[]).length===0);return()=>l()?F("newTask.adopt.noUnlinked"):F("newTask.adopt.noMatch")})()),u((l)=>Z(i,"fg",Y.textMuted,l)),m}}),b(X0,{get when(){return o().length>0},get children(){var m=W("box"),i=W("text");return D(m,i),Z(m,"gap",0),Z(m,"paddingLeft",2),K(m,b(X0,{get when(){return e().start>0},get children(){var l=W("text");return Z(l,"wrapMode","none"),K(l,()=>F("newTask.picker.moreAbove",{count:e().start})),u((w)=>Z(l,"fg",Y.textMuted,w)),l}}),i),K(m,b(Zf,{get each(){return B0()},children:(l,w)=>{let m0=()=>e().start+w(),v0=()=>m0()===l0(),O0=()=>t0().has(l.path),c0=()=>[l.dirty?"dirty":"",l.kobeManaged?"":"external"].filter(Boolean).join(",");return(()=>{var qf=W("text");return Z(qf,"wrapMode","none"),Z(qf,"onMouseUp",()=>{$0(m0()),C0(l.path)}),K(qf,()=>v0()?"\u25B8 ":" ",null),K(qf,()=>O0()?"[x] ":"[ ] ",null),K(qf,()=>l.branch,null),K(qf,(()=>{var Df=I0(()=>!!c0());return()=>Df()?` (${c0()})`:""})(),null),u((Df)=>{var Q1=v0()?Y.primary:O0()?Y.accent:Y.textMuted,s1=v0()?_1.BOLD:void 0;return Q1!==Df.e&&(Df.e=Z(qf,"fg",Q1,Df.e)),s1!==Df.t&&(Df.t=Z(qf,"attributes",s1,Df.t)),Df},{e:void 0,t:void 0}),qf})()}}),i),K(m,b(X0,{get when(){return e().start+e().items.length<e().total},get children(){var l=W("text");return Z(l,"wrapMode","none"),K(l,()=>F("newTask.picker.moreBelow",{count:e().total-e().start-e().items.length})),u((w)=>Z(l,"fg",Y.textMuted,w)),l}}),i),Z(i,"wrapMode","none"),K(i,(()=>{var l=I0(()=>t0().size>0);return()=>l()?F("newTask.adopt.hintSelected",{count:t0().size}):F("newTask.adopt.hintDefault")})()),u((l)=>Z(i,"fg",Y.textMuted,l)),m}})]}}),null),K(N0,b(X0,{get when(){return P0()},get children(){var m=W("text"),i=x0("\u203B ");return D(m,i),Z(m,"wrapMode","word"),K(m,P0,null),u((l)=>Z(m,"fg",Y.error,l)),m}}),null),D(F1,wJ),D(F1,XY),Z(F1,"flexDirection","row"),Z(F1,"justifyContent","space-between"),Z(F1,"alignItems","center"),Z(F1,"paddingTop",1),Z(F1,"paddingBottom",1),K(wJ,()=>F("newTask.hint.legend")),Z(XY,"onMouseUp",()=>R0()),K(XY,(()=>{var m=I0(()=>!!T());return()=>m()?F("newTask.button.cloning"):I0(()=>B()==="confirm")()?F("newTask.button.createFocused"):F("newTask.button.create")})()),u((m)=>{var i=_1.BOLD,l=Y.text,w=Bf("engine"),m0=Of("engine"),v0=Y.textMuted,O0=Y.textMuted,c0=B()==="confirm"?Y.primary:Y.text,qf=B()==="confirm"?_1.BOLD:void 0;return i!==m.e&&(m.e=Z(S0,"attributes",i,m.e)),l!==m.t&&(m.t=Z(S0,"fg",l,m.t)),w!==m.a&&(m.a=Z(K1,"fg",w,m.a)),m0!==m.o&&(m.o=Z(K1,"attributes",m0,m.o)),v0!==m.i&&(m.i=Z(xJ,"fg",v0,m.i)),O0!==m.n&&(m.n=Z(wJ,"fg",O0,m.n)),c0!==m.s&&(m.s=Z(XY,"fg",c0,m.s)),qf!==m.h&&(m.h=Z(XY,"attributes",qf,m.h)),m},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0}),d})()}var L4=k(()=>{h();h();h();h();h();h();h();h();X1();U1();Wf();xf();MQ();S1();OQ();v1();Q4();H8()});function _N(f,J,Y,z){return new Promise((G)=>{f.replace(()=>b(D4,{defaultRepo:J,savedRepos:Y,get defaultCloneParent(){return z?.defaultCloneParent},get defaultVendor(){return z?.defaultVendor},get availableVendors(){return z?.availableVendors},get discoverAdoptable(){return z?.discoverAdoptable},onSubmit:(X)=>G(X),onCancel:()=>G(void 0)}),()=>G(void 0)),f.setSize("medium")})}var gQ;var bG=k(()=>{h();L4();H8();gQ={show:_N}});function M4(f,J){return[{key:"tab",cmd:()=>J.cycleField(1)},{key:"shift+tab",cmd:()=>J.cycleField(-1)},{key:"ctrl+e",cmd:()=>J.stepEngine(1)},...f==="engine"?[{key:"left",cmd:()=>J.stepEngine(-1)},{key:"right",cmd:()=>J.stepEngine(1)},{key:"return",cmd:()=>J.commit()}]:[]]}import{TextAttributes as F4}from"@opentui/core";function oN(f){let J=vf(),{theme:Y}=i0(),[z,G]=r("prompt"),[X,q]=r(""),[Q,H]=r(f.defaultVendor),[B,V]=r(f.defaultBaseRef);function j(M){let R=RQ.indexOf(z());G(RQ[(R+M+RQ.length)%RQ.length]??"prompt")}function U(M){let R=f.engines;if(R.length===0)return;if(M>0){H((a)=>qY(R,a));return}let S=Math.max(0,R.indexOf(Q()));H(R[(S-1+R.length)%R.length]??Q())}function L(){let M=X().trim();if(!M){G("prompt");return}f.onSubmit({prompt:M,vendor:Q(),baseRef:B().trim()||f.defaultBaseRef}),J.clear()}Uf(()=>({enabled:!0,bindings:M4(z(),{cycleField:j,stepEngine:U,commit:L})}));let O=(M)=>z()===M?Y.accent:Y.textMuted;return(()=>{var M=W("box"),R=W("box"),S=W("text"),a=W("text"),N=W("box"),g=W("text"),C=W("input"),y=W("box"),_=W("text"),z0=W("box"),t=W("text"),Y0=W("input"),T=W("box"),Q0=W("text");return D(M,R),D(M,N),D(M,y),D(M,z0),D(M,T),Z(M,"paddingLeft",2),Z(M,"paddingRight",2),Z(M,"gap",1),D(R,S),D(R,a),Z(R,"flexDirection","row"),Z(R,"justifyContent","space-between"),K(S,()=>F("quickTask.title",{repoLabel:f.repoLabel})),Z(a,"onMouseUp",()=>f.onCancel()),K(a,()=>F("quickTask.esc")),D(N,g),D(N,C),Z(N,"gap",0),K(g,()=>F("quickTask.promptLabel")),Z(C,"onInput",(p)=>q(Z1(p))),Z(C,"onSubmit",()=>L()),D(y,_),Z(y,"flexDirection","row"),Z(y,"gap",2),K(_,()=>F("quickTask.engineLabel")),K(y,b(Zf,{get each(){return f.engines},children:(p)=>(()=>{var D0=W("text");return Z(D0,"onMouseUp",()=>{H(p),G("engine")}),K(D0,()=>f.engineLabel(p)),u((g0)=>{var $=Q()===p?Y.primary:Y.textMuted,E=Q()===p?F4.BOLD:void 0;return $!==g0.e&&(g0.e=Z(D0,"fg",$,g0.e)),E!==g0.t&&(g0.t=Z(D0,"attributes",E,g0.t)),g0},{e:void 0,t:void 0}),D0})()}),null),D(z0,t),D(z0,Y0),Z(z0,"gap",0),K(t,()=>F("quickTask.branchLabel")),Z(Y0,"onInput",(p)=>V(Z1(p))),Z(Y0,"onSubmit",()=>L()),D(T,Q0),Z(T,"paddingBottom",1),K(Q0,()=>F("quickTask.legend")),u((p)=>{var D0=F4.BOLD,g0=Y.text,$=Y.textMuted,E=O("prompt"),f0=X(),I=F("quickTask.promptPlaceholder"),G0=z()==="prompt",x=O("engine"),c=O("branch"),Z0=B(),V0=f.defaultBaseRef,H0=z()==="branch",y0=Y.textMuted;return D0!==p.e&&(p.e=Z(S,"attributes",D0,p.e)),g0!==p.t&&(p.t=Z(S,"fg",g0,p.t)),$!==p.a&&(p.a=Z(a,"fg",$,p.a)),E!==p.o&&(p.o=Z(g,"fg",E,p.o)),f0!==p.i&&(p.i=Z(C,"value",f0,p.i)),I!==p.n&&(p.n=Z(C,"placeholder",I,p.n)),G0!==p.s&&(p.s=Z(C,"focused",G0,p.s)),x!==p.h&&(p.h=Z(_,"fg",x,p.h)),c!==p.r&&(p.r=Z(t,"fg",c,p.r)),Z0!==p.d&&(p.d=Z(Y0,"value",Z0,p.d)),V0!==p.l&&(p.l=Z(Y0,"placeholder",V0,p.l)),H0!==p.u&&(p.u=Z(Y0,"focused",H0,p.u)),y0!==p.c&&(p.c=Z(Q0,"fg",y0,p.c)),p},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0}),M})()}function sN(f,J){return new Promise((Y)=>{f.replace(()=>b(oN,J6(J,{onSubmit:(z)=>Y(z),onCancel:()=>Y(void 0)})),()=>Y(void 0)),f.setSize("medium")})}var RQ,O4;var A4=k(()=>{h();h();h();h();h();h();h();Wf();U1();xf();X1();S1();v1();bG();RQ=["prompt","engine","branch"];O4={show:sN}});async function g4(f={}){let J=f.logTag??"orch-connect",Y=f.connect??p1,z=null;try{let G=await Y();if(!G)return dJ(J,"no daemon running \u2014 caller degrades"),null;return z=new W1(G,{...f.orchestratorOptions,channels:f.channels}),await z.init(),z}catch(G){return HY(J,G),z?.dispose(),null}}var R4=k(()=>{sY();L1();PY()});function C4(f){let[J,Y]=r(f.initial??"sidebar"),[z,G]=r(0),X=z1();function q(j){if(G((L)=>L+1),J()===j)return;let U=X?.currentFocusedRenderable;if(U&&!U.isDestroyed)try{U.blur()}catch{}Y(j)}function Q(j){let L=(CQ.indexOf(J())+j+CQ.length)%CQ.length;q(CQ[L])}let H=new Map;function B(j){let U=H.get(j);if(!U)U=()=>J()===j,H.set(j,U);return U}let V={focused:J,is:B,setFocused:q,cycle:Q,refocusTick:z};return b(tN.Provider,{value:V,get children(){return f.children}})}var CQ,tN;var k4=k(()=>{h();h();Wf();CQ=["sidebar","workspace","files","terminal"],tN=CJ(null)});function N4(){for(let f of vY){let J=eN.get(f.id);if(!J)continue;let Y=f;Y.keys=[...J.keys],Y.hint=J.hint?{...J.hint}:void 0}}function y4(){fy((f)=>f+1)}function j8(f){return Jy.get(f)}function Yy(f){return j8(f)?.keys??[]}function mY(f){let J=[];for(let Y in f){let z=f[Y];if(!z)continue;let G=Yy(Y);if(G.length===0){console.warn(`[kobe/keybindings] bindByIds: id="${Y}" has no chords (or doesn't exist in KobeKeymap)`);continue}G.forEach((X,q)=>J.push({key:X,cmd:z,slot:q}))}return J}var vY,eN,B8,fy,Jy;var SG=k(()=>{Wf();vY=[{id:"help.open",scope:"global",keys:["f1"],category:"Global",description:"Show keybindings help",hint:{keys:"F1",label:"help",pin:"right"}},{id:"task.new",scope:"sidebar",keys:["n"],category:"Sidebar",description:"New task",hint:{keys:"n",label:"new"}},{id:"task.openEditor",scope:"global",keys:["ctrl+o"],category:"Global",description:"Open active task worktree in editor"},{id:"settings.open",scope:"global",keys:["ctrl+,"],category:"Global",description:"Open settings"},{id:"settings.open.sidebar",scope:"sidebar",keys:["s"],category:"Sidebar",description:"Open settings",hint:{keys:"s",label:"settings",status:!1}},{id:"app.quit",scope:"sidebar",keys:["q"],category:"Sidebar",description:"Quit (with confirm)",hint:{keys:"q",label:"quit",status:!1}},{id:"focus.sidebar",scope:"workspace",keys:["ctrl+q"],category:"Workspace",description:"Back to sidebar (tasks)",hint:{keys:"ctrl+q",label:"tasks"}},{id:"focus.numeric",scope:"global",keys:["ctrl+h","ctrl+j","ctrl+k","ctrl+l"],category:"Navigation",description:"Jump to pane (h=sidebar, j=workspace, k=files, l=terminal)",hint:{keys:"ctrl+hjkl",label:"focus",pin:"right",status:!1}},{id:"chat.interrupt",scope:"workspace",keys:[],category:"Workspace",description:"Interrupt current turn (esc while streaming)"},{id:"sidebar.nav",scope:"sidebar",keys:["j","k","down","up"],category:"Sidebar",description:"Move cursor up/down",hint:{keys:"j/k",label:"nav"}},{id:"sidebar.select",scope:"sidebar",keys:["return"],category:"Sidebar",description:"Open the selected task",hint:{keys:"enter",label:"select"}},{id:"sidebar.goto",scope:"sidebar",keys:["g"],category:"Sidebar",description:"Top / bottom of list (gg or shift-G)"},{id:"sidebar.rename",scope:"sidebar",keys:["r"],category:"Sidebar",description:"Rename task",hint:{keys:"r",label:"rename",status:!1}},{id:"sidebar.archive",scope:"sidebar",keys:["a"],category:"Sidebar",description:"Toggle archive",hint:{keys:"a",label:"archive",status:!1}},{id:"sidebar.localMerge",scope:"sidebar",keys:["m"],category:"Sidebar",description:"Local merge task into parent repo (Shift+M)",hint:{keys:"M",label:"merge",status:!1}},{id:"sidebar.pin",scope:"sidebar",keys:["p"],category:"Sidebar",description:"Pin / unpin task at top (Shift+P)",hint:{keys:"P",label:"pin",status:!1}},{id:"sidebar.view",scope:"sidebar",keys:["[","]"],category:"Sidebar",description:"Switch view (Working session \u2194 Archives)",hint:{keys:"[/]",label:"view",status:!1}},{id:"sidebar.sort",scope:"sidebar",keys:["t"],category:"Sidebar",description:"Switch task sort (default \u2194 recent)",hint:{keys:"t",label:"sort",status:!1}},{id:"sidebar.projectFilter",scope:"sidebar",keys:["ctrl+p"],category:"Sidebar",description:"Cycle task project filter",hint:{keys:"ctrl+p",label:"project",status:!1}},{id:"sidebar.delete",scope:"sidebar",keys:["d"],category:"Sidebar",description:"Delete task (with confirm)",hint:{keys:"d",label:"delete",status:!1}},{id:"sidebar.search.enter",scope:"sidebar",keys:["/"],category:"Sidebar",description:"Search tasks (fuzzy filter)",hint:{keys:"/",label:"search"}},{id:"sidebar.search.nav",scope:"sidebar",keys:["down","up"],category:"Sidebar",description:"Move highlight in search results"},{id:"sidebar.search.submit",scope:"sidebar",keys:["return"],category:"Sidebar",description:"Select search match and exit search"},{id:"sidebar.search.cancel",scope:"sidebar",keys:["escape"],category:"Sidebar",description:"Cancel search (restore prior selection)"},{id:"tasks.openWorktree",scope:"sidebar",keys:["o"],category:"Tasks pane",description:"Open selected task's worktree in your editor",hint:{keys:"o",label:"open wt",status:!1}},{id:"tasks.renameBranch",scope:"sidebar",keys:["b"],category:"Tasks pane",description:"Rename the selected task's git branch",hint:{keys:"b",label:"branch",status:!1}},{id:"tasks.cycleEngine",scope:"sidebar",keys:["v"],category:"Tasks pane",description:"Cycle engine vendor (claude \u2194 codex \u2194 \u2026) \u2014 applies on reopen",hint:{keys:"v",label:"engine",status:!1}},{id:"tasks.update",scope:"sidebar",keys:["u"],category:"Tasks pane",description:"Open the update page (when a new version is available)",hint:{keys:"u",label:"update",status:!1}},{id:"tasks.focusEngine",scope:"sidebar",keys:["right"],category:"Tasks pane",description:"Focus the engine pane of the current window",hint:{keys:"\u2192",label:"engine",status:!1}},{id:"tasks.toggleKeys",scope:"sidebar",keys:["?"],category:"Tasks pane",description:"Collapse / expand the keys legend",hint:{keys:"?",label:"fold keys",status:!1}},{id:"tmux.quickTask",scope:"global",keys:[],category:"Workspace (tmux)",description:"Quick new task (tmux prefix, then f)",hint:{keys:"prefix f",label:"new task",status:!1}},{id:"tmux.engineTab",scope:"global",keys:[],category:"Workspace (tmux)",description:"Open the engine in a new tab (tmux prefix, then t)",hint:{keys:"prefix t",label:"engine tab",status:!1}},{id:"tmux.layout.workspaceSplit",scope:"global",keys:[],category:"Workspace (tmux)",description:"Add a temporary workspace split (tmux prefix, then s)",hint:{keys:"prefix s",label:"split",status:!1}},{id:"tmux.layout.workspaceClose",scope:"global",keys:[],category:"Workspace (tmux)",description:"Close the focused temporary workspace split (tmux prefix, then x)",hint:{keys:"prefix x",label:"close split",status:!1}},{id:"tmux.layout.workspaceReset",scope:"global",keys:[],category:"Workspace (tmux)",description:"Close all temporary workspace splits (tmux prefix, then r)",hint:{keys:"prefix r",label:"reset splits",status:!1}},{id:"tmux.layout.tasksToggle",scope:"global",keys:[],category:"Workspace (tmux)",description:"Hide / restore the Tasks pane (tmux prefix, then a)",hint:{keys:"prefix a",label:"tasks pane",status:!1}},{id:"tmux.layout.opsToggle",scope:"global",keys:[],category:"Workspace (tmux)",description:"Toggle the file/Ops pane (tmux prefix, then o)",hint:{keys:"prefix o",label:"file pane",status:!1}},{id:"tmux.layout.terminalToggle",scope:"global",keys:[],category:"Workspace (tmux)",description:"Hide / restore the terminal pane (tmux prefix, then z)",hint:{keys:"prefix z",label:"terminal",status:!1}},{id:"tmux.layout.zenToggle",scope:"global",keys:[],category:"Workspace (tmux)",description:"Zen mode \u2014 collapse to the engine pane (tmux prefix, then space)",hint:{keys:"prefix space",label:"zen",status:!1}},{id:"chat.send",scope:"workspace",keys:[],category:"Workspace",description:"Send message (composer)",hint:{keys:"enter",label:"send"}},{id:"chat.newline",scope:"workspace",keys:[],category:"Workspace",description:"Newline in composer",hint:{keys:"shift+enter",label:"newline"}},{id:"chat.cycle-mode",scope:"workspace",keys:[],category:"Workspace",description:"Cycle permission mode (composer)",hint:{keys:"shift+tab",label:"mode"}},{id:"chat.steer",scope:"workspace",keys:[],category:"Workspace",description:"Steer (interrupt + send) \u2014 mid-stream only",hint:{keys:"ctrl+enter",label:"steer",status:!1}},{id:"chat.tab.new",scope:"workspace",keys:["ctrl+t"],category:"Workspace",description:"New chat tab",hint:{keys:"ctrl+t",label:"new tab"}},{id:"chat.fork.new",scope:"workspace",keys:["ctrl+f"],category:"Workspace",description:"Quick-fork: create child task seeded with current repo/branch/model",hint:{keys:"ctrl+f",label:"fork"}},{id:"chat.session.resume",scope:"workspace",keys:["ctrl+y"],category:"Workspace",description:"Resume a prior session in this task's worktree",hint:{keys:"ctrl+y",label:"resume",status:!1}},{id:"chat.tab.close",scope:"workspace",keys:["ctrl+w"],category:"Workspace",description:"Close chat tab",hint:{keys:"ctrl+w",label:"close tab",status:!1}},{id:"chat.tab.rename",scope:"workspace",keys:["f2"],category:"Workspace",description:"Rename active chat tab",hint:{keys:"f2",label:"rename tab",status:!1}},{id:"chat.tab.cycle-next",scope:"workspace",keys:["ctrl+]"],category:"Workspace",description:"Next chat tab",hint:{keys:"ctrl+]",label:"next tab",status:!1}},{id:"chat.tab.cycle-prev",scope:"workspace",keys:["ctrl+["],category:"Workspace",description:"Previous chat tab",hint:{keys:"ctrl+[",label:"prev tab",status:!1}},{id:"chat.question.nav",scope:"workspace",keys:["j","k","down","up"],category:"Workspace",description:"Move highlight in question picker",hint:{keys:"j/k",label:"pick",status:!1}},{id:"chat.question.toggle",scope:"workspace",keys:["space"],category:"Workspace",description:"Toggle highlighted option in question picker",hint:{keys:"space",label:"toggle",status:!1}},{id:"chat.question.submit",scope:"workspace",keys:["return"],category:"Workspace",description:"Advance / submit question picker",hint:{keys:"enter",label:"submit",status:!1}},{id:"chat.question.pick-number",scope:"workspace",keys:["1","2","3","4","5","6","7","8","9"],category:"Workspace",description:"Pick option by number in question picker",hint:{keys:"1-9",label:"pick",status:!1}},{id:"files.nav",scope:"files",keys:["j","k","down","up"],category:"Files",description:"Move cursor up/down",hint:{keys:"j/k",label:"nav"}},{id:"files.hierarchy",scope:"files",keys:["h","l","left","right"],category:"Files",description:"Collapse / expand tree level",hint:{keys:"h/l",label:"level"}},{id:"files.open",scope:"files",keys:["return"],category:"Files",description:"Open file in nvim (diff vs HEAD when changed)",hint:{keys:"enter",label:"open"}},{id:"files.tab",scope:"files",keys:["[","]"],category:"Files",description:"Switch tab (cycle All / Changes)",hint:{keys:"[/]",label:"tab",status:!1}},{id:"files.refresh",scope:"files",keys:["r"],category:"Files",description:"Refresh",hint:{keys:"r",label:"refresh",status:!1}},{id:"files.openExternal",scope:"files",keys:["o"],category:"Files",description:"Open file in system default app (audio / video / pdf preview)",hint:{keys:"o",label:"open external",status:!1}},{id:"files.mention",scope:"files",keys:["a"],category:"Files",description:"Inject @<path> mention into the engine pane",hint:{keys:"a",label:"@mention"}},{id:"files.createPR",scope:"files",keys:["p"],category:"Files",description:"Create PR from the current task",hint:{keys:"p",label:"create PR"}},{id:"terminal.scroll-up",scope:"terminal",keys:["ctrl+pageup"],category:"Terminal",description:"Scroll scrollback up",hint:{keys:"ctrl+pgup",label:"scroll",status:!1}},{id:"terminal.scroll-down",scope:"terminal",keys:["ctrl+pagedown"],category:"Terminal",description:"Scroll scrollback down"},{id:"terminal.reset",scope:"terminal",keys:["f5"],category:"Terminal",description:"Reset terminal \u2014 kill the current shell and respawn",hint:{keys:"f5",label:"reset"}},{id:"dialog.cancel",scope:"global",keys:[],category:"Dialog",description:"Close the top dialog (esc)"},{id:"dialog.newtask.tab.cycle",scope:"global",keys:[],category:"Dialog",description:"Switch New Task tab (Existing / New Repo)",hint:{keys:"ctrl+[/]",label:"tab"}}],eN=new Map(vY.map((f)=>[f.id,{keys:[...f.keys],hint:f.hint?{...f.hint}:void 0}]));[B8,fy]=r(0);Jy=new Map(vY.map((f)=>[f.id,f]))});function kQ(){if(cY)return cY;let f=Lq();if(!f.exists)return cY={path:f.path,exists:!1,applied:[],warnings:[]},cY;let J=[...f.warnings],Y=Fq(f.doc,process.platform,{chordOptsFor:vB});J.push(...Y.warnings);let z=Y.entries.filter((Q)=>Q.id.startsWith("tmux.")),G=Y.entries.filter((Q)=>!Q.id.startsWith("tmux.")),X=u7(vY,G);J.push(...X.warnings);let q=[...X.applied];if(z.length>0){let Q=PB(z);J.push(...Q.warnings);for(let H of Q.overridden){if(H===SJ){q.push({id:H,keys:Q.focus.map((j)=>j?.chord??"").filter((j)=>j!==""),defaultKeys:kY});continue}let B=Q.binds[H];q.push({id:H,keys:B?[B.chord]:[],defaultKeys:[Oz[H]]});let V=vY.find((j)=>j.id===H);if(V?.hint)V.hint.keys=B?`${XG(H)?"prefix ":""}${B.chord}`:"\u2014"}}for(let Q of J)console.warn(`[kobe/keybindings] ${Q}`);return cY={path:f.path,exists:!0,applied:q,warnings:J},cY}function b4(){return cY??kQ()}function S4(){cY=null,T7(),h7(),N4();let f=kQ();return y4(),f}var cY=null;var W8=k(()=>{wB();gq();Oq();SG()});var zy=250,IG,I4;var cX=k(()=>{CG();pY();_j();({use:IG,provider:I4}=DQ({name:"KV",init:()=>{let[f,J]=uJ(nf()),Y=new Set,z=null;function G(Q){if(Y.size===0)return!0;try{let H={};for(let B of Y)H[B]=f[B];return rY(H),Y.clear(),!0}catch(H){return console.error(`[kobe] kv ${Q} failed:`,H),!1}}function X(){if(z)clearTimeout(z);z=setTimeout(()=>{z=null,G("write")},zy)}let q={get ready(){return!0},get store(){return f},signal(Q,H){if(f[Q]===void 0)J(Q,H);return[()=>q.get(Q),(B)=>q.set(Q,B)]},get(Q,H){return f[Q]??H},set(Q,H){J(Q,H),Y.add(Q),X()},flush(){if(z)clearTimeout(z),z=null;return G("flush")},clear(){for(let Q of Object.keys(f))J(Q,void 0);if(z)clearTimeout(z),z=null;Y.clear();try{A9({})}catch(Q){console.error("[kobe] kv clear write failed:",Q)}}};return q}}))});var NQ="../pulse-n3cq1btw.wav";var T4=()=>{};import{existsSync as Xy,mkdirSync as Zy}from"fs";import{tmpdir as qy}from"os";import{basename as Qy,isAbsolute as Hy,join as V8,resolve as By}from"path";function Wy(f,J,Y){if(f==="ffplay")return[f,"-autoexit","-nodisp","-af",`volume=${Y}`,J];if(f==="mpv")return[f,"--no-video","--audio-display=no","--volume",String(Math.round(Y*100)),J];if(f==="mpg123"||f==="mpg321")return[f,"-g",String(Math.round(Y*100)),J];if(f==="mplayer")return[f,"-vo","null","-volume",String(Math.round(Y*100)),J];if(f==="afplay"||f==="omxplayer"||f==="aplay"||f==="cmdmp3")return[f,J];if(f==="play")return[f,"-v",String(Y),J];if(f==="cvlc")return[f,`--gain=${Y}`,"--play-and-exit",J];return[f,"-c",`(New-Object Media.SoundPlayer '${J.replace(/'/g,"''")}').PlaySync()`]}function Vy(){if(yQ!==void 0)return yQ;let J=(process.env.PATH??"").split(":").filter(Boolean);return yQ=jy.find((Y)=>J.some((z)=>Xy(V8(z,Y))))??null,yQ}async function Ky(){return x4??=(async()=>{Zy(E4,{recursive:!0});let f=V8(E4,Qy(u4)),J=Bun.file(f);if(await J.exists())return f;return await Bun.write(J,Bun.file(u4)),f})(),x4}function w4(f=0.4){let J=Vy();if(!J)return;Ky().then((Y)=>{try{Bun.spawn(Wy(J,Y,f),{stdin:"ignore",stdout:"ignore",stderr:"ignore"}).unref?.()}catch{}}).catch(()=>{return})}var u4,E4,jy,yQ,x4;var h4=k(()=>{T4();u4=Hy(NQ)?NQ:By(import.meta.dir,NQ),E4=V8(qy(),"kobe-sfx"),jy=["ffplay","mpv","mpg123","mpg321","mplayer","afplay","play","omxplayer","aplay","cmdmp3","cvlc","powershell.exe"]});function P4(f,J){return`${f}:${J}`}function m4(f){let J=IG(),[Y,z]=r([]),[G,X]=r(new Map),q=0;function Q(j){if(X((U)=>{let L=new Map(U),O=P4(j.taskId,j.tabId),M=U.get(O);if(M==="needs_input"||M==="error")return U;return L.set(O,j.kind),L}),J.get("notifications.sound.enabled",!0)!==!1){try{process.stdout.write("\x07")}catch{}w4()}if(J.get("notifications.toast.enabled",!0)!==!1){let U=++q,L={id:U,kind:j.kind,taskId:j.taskId,tabId:j.tabId,title:j.title};z((O)=>[...O,L]),setTimeout(()=>H(U),Uy)}}function H(j){z((U)=>U.filter((L)=>L.id!==j))}function B(j,U){X((L)=>{let O=P4(j,U);if(!L.has(O))return L;let M=new Map(L);return M.delete(O),M})}let V={toasts:Y,unread:G,notify:Q,dismiss:H,markRead:B};return b(v4.Provider,{value:V,get children(){return f.children}})}function bQ(){let f=u1(v4);if(!f)throw Error("useNotifications must be used within a NotificationsProvider");return f}var Uy=4500,v4;var SQ=k(()=>{h();Wf();h4();cX();v4=CJ()});function K8(f,J){if(typeof J.theme==="string"&&J.theme.length>0&&J.theme!==f.selectedTheme()){if(!f.hasTheme(J.theme))f.reloadUserThemes();if(f.hasTheme(J.theme))f.setTheme(J.theme)}if(typeof J.transparentBackground==="boolean"&&J.transparentBackground!==f.transparentBackground())f.setTransparentBackground(J.transparentBackground);if(J.focusAccent===null||typeof J.focusAccent==="string"){let Y=Ly(J.focusAccent);if(Y&&Y!==f.focusAccent())f.setFocusAccent(Y)}}function Ly(f){if(f===null)return"primary";return Dy.includes(f)?f:null}var Dy;var c4=k(()=>{Dy=["primary","success","info"]});import{readFileSync as My}from"fs";function n4(f){try{let J=JSON.parse(My(c1(),"utf8")),Y=typeof J.activeTheme==="string"&&EX(J.activeTheme)?J.activeTheme:f,z=J.transparentBackground===!0,G=typeof J.focusAccent==="string"&&yz.includes(J.focusAccent)?J.focusAccent:null,X=xX(J[IQ])?J[IQ]:NG;return{theme:Y,transparent:z,focusAccent:G,locale:X}}catch{return{theme:f,transparent:!1,focusAccent:null,locale:NG}}}var IQ="locale";var U8=k(()=>{lf();xf();yG()});function Oy(f){if(f)HZ(f);kQ();for(let{name:J,theme:Y}of KX())sj(J,Y)}function Ay(f){let J={backgroundColor:"transparent",externalOutputMode:"passthrough",exitOnCtrlC:!1,screenMode:"alternate-screen",useKittyKeyboard:{}};return f?{...J,onDestroy:f}:J}function gy(f){let J=()=>f.children,Y=()=>f.notifications?b(m4,{get children(){return J()}}):J(),z=()=>b(o6,{get children(){return Y()}}),G=()=>f.focus?b(C4,{initial:"sidebar",get children(){return z()}}):z(),X=()=>f.kv?b(I4,{get children(){return G()}}):G();return b(U6,{mode:"dark",get theme(){return f.theme},get children(){return X()}})}function Ry(f){let J=i0(),Y={selectedTheme:()=>J.selected,hasTheme:(Q)=>J.has(Q),setTheme:(Q)=>J.set(Q),reloadUserThemes:()=>{for(let{name:Q,theme:H}of KX())sj(Q,H)},transparentBackground:()=>J.transparentBackground,setTransparentBackground:(Q)=>J.setTransparentBackground(Q),focusAccent:()=>J.focusAccent,setFocusAccent:(Q)=>J.setFocusAccent(Q)};K8(Y,{theme:f.boot.theme,transparentBackground:f.boot.transparent,focusAccent:f.boot.focusAccent}),wX(f.boot.locale);let[z,G]=r(null),X=!1;J1(()=>{(async()=>{let Q=await g4({logTag:"ui-prefs",channels:["ui-prefs","keybindings"]});if(!Q)return;if(X){Q.dispose();return}G(Q)})()}),Gf(()=>{let Q=z()?.uiPrefsSignal()();if(!Q)return;if(K8(Y,Q),xX(Q.locale))wX(Q.locale)});let q=null;return Gf(()=>{let Q=z()?.keybindingsRevSignal()();if(Q==null)return;if(q===null||Q===q){q=Q;return}q=Q,S4()}),mf(()=>{X=!0,z()?.dispose()}),null}async function M1(f){Oy(f.logContext);let J=n4(Fy),Y=await f.setup(J),z=f.providers?.kv??!0,G=f.providers?.focus??!0,X=f.providers?.notifications??!1;await Q6(()=>b(gy,{get theme(){return J.theme},kv:z,focus:G,notifications:X,get children(){return[b(Ry,{boot:J}),I0(()=>Y.root())]}}),Ay(Y.onDestroy))}var Fy="claude";var nY=k(()=>{h();h();h();sY();Wf();R4();k4();W8();cX();SQ();xf();Nq();X1();v1();c4();U8()});async function D8(f,J,Y,z,G={}){let X=Lf(J.id);if(await Hf(X))return!0;let q=J.worktreePath;if(!q)q=await f.ensureWorktree(J.id);if(!q)throw Error(`task ${J.id} has no worktree`);let{ensureSession:Q}=await Promise.resolve().then(() => (Y1(),r1)),{resolveEngineLaunchInit:H}=await Promise.resolve().then(() => (zG(),xB)),B=H(Y,q,{kind:G.includeInitPrompt?"repo-init":"none"});if(!await Q({name:X,cwd:q,command:b1(z),taskId:J.id,vendor:z,repo:Y,launchInit:B}))throw Error(`failed to start tmux session for ${J.id}`);return!1}async function TQ(f,J,Y,z,G={}){await D8(f,J,Y,z,G),await f.setActiveTask(J.id).catch(()=>{});let{prepareWindowForSwitch:X}=await Promise.resolve().then(() => (Y1(),r1));await X(Lf(J.id)),await h0(["switch-client","-t",`=${Lf(J.id)}`])}var L8=k(()=>{x1();Tf()});var d4={};jf(d4,{startNewTaskHost:()=>Cy,NewTaskPage:()=>uQ});function uQ(f){let{theme:J}=i0(),Y=vf();J1(()=>{z()});async function z(){let G=O1(),X=f.defaultRepo||G[0]||process.cwd(),q=kf("lastSelectedVendor")??Sf,Q=await iJ(),H=f.orchestrator,B=await gQ.show(Y,X,G,{defaultVendor:q,availableVendors:Q,discoverAdoptable:H?(j)=>H.discoverAdoptableWorktrees(j):void 0});if(!B)process.exit(0);if(af("lastSelectedVendor",B.vendor),vJ(B.repo),!H)console.error("[kobe new-task] no daemon; cannot create task"),process.exit(1);let V;try{if(B.mode==="adopt")for(let j of B.adopt)V=await H.adoptWorktree({repo:B.repo,worktreePath:j.worktreePath,branch:j.branch,vendor:B.vendor});else V=await H.createTask({repo:B.repo,baseRef:B.baseRef,vendor:B.vendor})}catch(j){console.error("[kobe new-task] task.create/adopt failed:",j),process.exit(1)}if(V)try{await TQ(H,V,B.repo,B.vendor,{includeInitPrompt:B.mode!=="adopt"})}catch(j){console.error("[kobe new-task] auto-enter failed:",j)}process.exit(0)}return(()=>{var G=W("box");return Z(G,"flexDirection","column"),Z(G,"flexGrow",1),u((X)=>Z(G,"backgroundColor",J.background,X)),G})()}async function Cy(f){await M1({setup:async()=>{let J=null;try{let Y=await KJ(),z=new W1(Y);await z.init(),J=z}catch(Y){console.error("[kobe new-task] daemon unavailable; cannot create task:",Y)}return{root:()=>b(uQ,{get defaultRepo(){return f.defaultRepo},orchestrator:J}),onDestroy:()=>{J?.dispose()}}}})}var M8=k(()=>{h();h();h();h();L1();Wf();PY();tY();Af();I1();bG();xf();nY();L8();v1()});function EQ(f,J,Y,z,G={}){if(f.length===0)return J;let X=new Map;for(let H of f)X.set(Y(H),H);let q=f.length===J.length,Q=Array(J.length);for(let H=0;H<J.length;H++){let B=J[H],V=X.get(Y(B));if(V&&z(V,B)&&(!G.samePosition||f[H]===V)){if(Q[H]=V,q&&f[H]!==V)q=!1}else Q[H]=B,q=!1}return q?f:Q}function i4(f,J){if(!f)return!0;let Y=f.toLowerCase(),z=J.toLowerCase(),G=0;for(let X=0;X<z.length&&G<Y.length;X++)if(z.charCodeAt(X)===Y.charCodeAt(G))G++;return G===Y.length}function ky(f,J){let Y=J==="archived";return f.filter((z)=>z.archived===Y)}function F8(f,J,Y,z="default",G){let X=ky(f,J),q=Y?.trim()??"",Q=G?o1(G):null,H=q?X.filter((M)=>i4(q,`${M.title} ${MJ(M.repo)}`)):X,B=[],V=[],j=[],U=new Set;for(let M of H){if(M.kind==="main"){let R=o1(M.repo);if(U.has(R))continue;U.add(R),B.push(M);continue}if(Q&&o1(M.repo)!==Q)continue;if(M.pinned===!0)V.push(M);else j.push(M)}if(B.sort((M,R)=>MJ(M.repo).localeCompare(MJ(R.repo))),z==="recent")V.sort(l4),j.sort(l4);let L=[],O=0;for(let M of B)L.push({kind:"task",task:M,flatIndex:O}),O++;for(let M of V)L.push({kind:"task",task:M,flatIndex:O}),O++;for(let M of j)L.push({kind:"task",task:M,flatIndex:O}),O++;return L}function l4(f,J){let Y=a4(J)-a4(f);if(Y!==0)return Y;return String(J.id).localeCompare(String(f.id))}function a4(f){let J=Date.parse(f.updatedAt||f.createdAt);return Number.isFinite(J)?J:0}function MJ(f){let J=f.split("/").filter(Boolean);return J[J.length-1]??f}function o1(f){return f.trim().replace(/[\\/]+$/,"")||f}function Ny(f,J){let Y=MJ(f);if(!J.some((G)=>G!==f&&MJ(G)===Y))return Y;return f.replace(/[\\/]+$/,"").split(/[\\/]+/).slice(-2).join("/")}function $4(f,J){let Y=J==="archived",z=new Map;for(let X of f){let q=o1(X.repo),Q=z.get(q)??{repo:X.repo,count:0};if(X.kind==="main")Q.repo=X.repo;else if(X.archived===Y)Q.count+=1;z.set(q,Q)}let G=[...z.values()].map((X)=>X.repo);return[...z.values()].map((X)=>({repo:X.repo,label:Ny(X.repo,G),count:X.count})).sort((X,q)=>X.label.localeCompare(q.label))}function r4(f,J){if(f.length===0)return-1;if(!J)return f[0]?.flatIndex??-1;let Y=o1(J),z=f.find((X)=>X.task.kind!=="main"&&o1(X.task.repo)===Y);if(z)return z.flatIndex;return f.find((X)=>X.task.kind==="main"&&o1(X.task.repo)===Y)?.flatIndex??f[0]?.flatIndex??-1}function O8(f){return f.map((J)=>J.task.id)}function p4(f){let J=[],Y=[];for(let z of f)if(z.task.kind==="main")J.push(z);else Y.push(z);return{projectRows:J,taskRows:Y}}function yy(f,J){return f===J||f.id===J.id&&f.kind===J.kind&&f.title===J.title&&f.repo===J.repo&&f.branch===J.branch&&f.worktreePath===J.worktreePath&&f.status===J.status&&f.archived===J.archived&&f.pinned===J.pinned&&f.vendor===J.vendor}function _4(f,J){return EQ(f,J,(Y)=>Y.task.id,(Y,z)=>Y.flatIndex===z.flatIndex&&yy(Y.task,z.task),{samePosition:!0})}var xQ=()=>{};var o4={};jf(o4,{startQuickTaskHost:()=>Ty});async function by(f,J){let Y,z;if(J){let j=await N1(J,["@kobe_task","@kobe_worktree"]);Y=j["@kobe_task"]||void 0,z=j["@kobe_worktree"]||void 0}let G=(Y?f?.getTask(Y)?.repo:void 0)??O1()[0],X=G??z??process.cwd();if(!G)return{ctx:null,fallbackRepo:X};let q=await iJ(),Q=kf("lastSelectedVendor")??Sf,H=q.length===0||q.includes(Q)?Q:q[0]??Q,B=hX(V1(G))??LJ,V=q.length>0?q:[H];return{ctx:{repo:G,vendor:H,baseRef:B,engines:V},fallbackRepo:X}}async function Sy(f,J,Y,z,G){let X=await D8(f,J,Y,z),q=Lf(J.id),{pane:Q}=await WX(q,!X);if(Q)await VX(Q,G)}function Iy(f){let{theme:J}=i0(),Y=vf();J1(()=>{z()});async function z(){let G=f.ctx,X=await O4.show(Y,{repoLabel:MJ(G.repo),engines:G.engines,defaultVendor:G.vendor,defaultBaseRef:G.baseRef,engineLabel:Vz});if(X===void 0)process.exit(0);af("lastSelectedVendor",X.vendor),vJ(G.repo);let q=f.orchestrator;if(!q)console.error("[kobe quick-task] no daemon; cannot create task"),process.exit(1);try{let Q=await q.createTask({repo:G.repo,baseRef:X.baseRef,vendor:X.vendor});await Sy(q,Q,G.repo,X.vendor,X.prompt),await TQ(q,Q,G.repo,X.vendor)}catch(Q){console.error("[kobe quick-task] task.create/deliver failed:",Q),process.exit(1)}process.exit(0)}return(()=>{var G=W("box");return Z(G,"flexDirection","column"),Z(G,"flexGrow",1),u((X)=>Z(G,"backgroundColor",J.background,X)),G})()}async function Ty(f){await M1({setup:async()=>{let J=null;try{let G=await KJ(),X=new W1(G);await X.init(),J=X}catch(G){console.error("[kobe quick-task] daemon unavailable; cannot create task:",G)}let{ctx:Y,fallbackRepo:z}=await by(J,f.session);return{root:()=>Y?b(Iy,{ctx:Y,orchestrator:J}):b(uQ,{defaultRepo:z,orchestrator:J}),onDestroy:()=>{J?.dispose()}}}})}var s4=k(()=>{h();h();h();h();L1();Wf();PY();tY();x1();Af();Tf();Rq();I1();A4();xf();MQ();nY();OQ();L8();M8();xQ();v1()});function hQ(f){let J=f.trim().split(/\s+/).pop()??"",Y=/^([CM])-(.+)$/.exec(J);if(!Y)return null;let z=Y[1]==="C"?"\u2303":"\u2325",G=Y[2]??"";return`${z}${G.length===1?G.toUpperCase():G}`}function wQ(f,J){if(f.includes("/"))return f.split("/").map((G)=>wQ(G,J)).join("/");let Y=f.toLowerCase();if(Y==="tab")return"tab";let z=Ey[Y];if(z)return z;if(/^f\d{1,2}$/.test(Y))return Y.toUpperCase();if(!J)return f;if(/^[a-z]$/.test(Y))return f.toUpperCase();return f.replace(/[a-z]+/gi,(G)=>G.toUpperCase())}function TG(f,J="\u2303B"){let Y=f.trim();if(!Y)return Y;let z=/^prefix\s+(.+)$/i.exec(Y);if(z){let Q=z[1]??"";return`${J} ${Q.includes("+")?TG(Q,J):wQ(Q,!0)}`}let G=Y.split("+");if(G.length===1)return wQ(G[0]??"",!1);let X=G[G.length-1]??"";return`${G.slice(0,-1).map((Q)=>uy[Q.toLowerCase().trim()]??Q).join("")} ${wQ(X,!0)}`}var uy,Ey;var A8=k(()=>{uy={ctrl:"\u2303",control:"\u2303",alt:"\u2325",opt:"\u2325",option:"\u2325",shift:"\u21E7",cmd:"\u2318",command:"\u2318",meta:"\u2318",super:"\u2318"},Ey={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 t4}from"@opentui/core";function xy(f){let J=new Map,Y=[];for(let z of f){if(!J.has(z.category))J.set(z.category,[]),Y.push(z.category);J.get(z.category).push(z)}return Y.map((z)=>({category:z,rows:J.get(z)}))}function uG(f={}){let J=vf(),{theme:Y}=i0(),z=()=>xy(vY),G=()=>f.onClose?f.onClose():J.clear(),[X,q]=r("\u2303B");return J1(()=>{d0(["show-options","-g","prefix"]).then(({code:Q,stdout:H})=>{if(Q!==0)return;let B=hQ(H);if(B)q(B)})}),Uf(()=>({bindings:[{key:"?",cmd:G}]})),(()=>{var Q=W("box"),H=W("box"),B=W("text"),V=W("text"),j=W("scrollbox"),U=W("box");return D(Q,H),D(Q,j),Z(Q,"paddingLeft",2),Z(Q,"paddingRight",2),Z(Q,"gap",1),Z(Q,"flexShrink",1),D(H,B),D(H,V),Z(H,"flexDirection","row"),Z(H,"justifyContent","space-between"),Z(H,"flexShrink",0),K(B,()=>F("help.title")),Z(V,"onMouseUp",G),K(V,()=>F("help.esc")),D(j,U),Z(j,"flexShrink",1),Z(j,"flexGrow",1),Z(j,"stickyScroll",!1),Z(U,"paddingBottom",1),Z(U,"gap",1),Z(U,"paddingRight",1),K(U,b(Zf,{get each(){return z()},children:(L)=>(()=>{var O=W("box"),M=W("text");return D(O,M),Z(O,"gap",0),K(M,()=>f8("category",L.category)),K(O,b(Zf,{get each(){return L.rows},children:(R)=>{let S=R.hint?.keys??R.keys[0]??"\u2014",a=()=>S==="\u2014"?"\u2014":TG(S,X()),N=()=>(R.hint?R.keys:R.keys.slice(1)).map((g)=>TG(g,X()));return(()=>{var g=W("box"),C=W("box"),y=W("text"),_=W("box"),z0=W("text");return D(g,C),D(g,_),Z(g,"flexDirection","row"),Z(g,"gap",2),Z(g,"paddingLeft",1),D(C,y),Z(C,"width",14),K(y,a),D(_,z0),Z(_,"flexGrow",1),K(z0,()=>f8("desc",R.id)),K(g,(()=>{var t=I0(()=>N().length>0);return()=>t()?(()=>{var Y0=W("box"),T=W("text");return D(Y0,T),K(T,()=>`(${N().join(", ")})`),u((Q0)=>Z(T,"fg",Y.textMuted,Q0)),Y0})():null})(),null),u((t)=>{var{primary:Y0,text:T}=Y;return Y0!==t.e&&(t.e=Z(y,"fg",Y0,t.e)),T!==t.t&&(t.t=Z(z0,"fg",T,t.t)),t},{e:void 0,t:void 0}),g})()}}),null),u((R)=>{var S=Y.accent,a=t4.BOLD;return S!==R.e&&(R.e=Z(M,"fg",S,R.e)),a!==R.t&&(R.t=Z(M,"attributes",a,R.t)),R},{e:void 0,t:void 0}),O})()})),u((L)=>{var O=t4.BOLD,M=Y.text,R=Y.textMuted,S={trackOptions:{backgroundColor:Y.backgroundDialog,foregroundColor:Y.borderActive}};return O!==L.e&&(L.e=Z(B,"attributes",O,L.e)),M!==L.t&&(L.t=Z(B,"fg",M,L.t)),R!==L.a&&(L.a=Z(V,"fg",R,L.a)),S!==L.o&&(L.o=Z(j,"verticalScrollbarOptions",S,L.o)),L},{e:void 0,t:void 0,a:void 0,o:void 0}),Q})()}var g8=k(()=>{h();h();h();h();h();h();h();Wf();Tf();SG();xf();X1();A8();S1();v1();uG.show=(f)=>{f.replace(()=>b(uG,{}))}});import{TextAttributes as wy}from"@opentui/core";function e4(f){let J=vf(),{theme:Y}=i0(),[z,G]=r(f.currentTitle);function X(){let q=z().trim();if(!q&&!f.allowEmpty)return;f.onSubmit(q),J.clear()}return(()=>{var q=W("box"),Q=W("box"),H=W("text"),B=W("text"),V=W("box"),j=W("text"),U=W("input"),L=W("box"),O=W("text");return D(q,Q),D(q,V),D(q,L),Z(q,"paddingLeft",2),Z(q,"paddingRight",2),Z(q,"gap",1),D(Q,H),D(Q,B),Z(Q,"flexDirection","row"),Z(Q,"justifyContent","space-between"),K(H,()=>f.dialogTitle??F("common.rename.defaultTitle")),D(B,x0("esc")),Z(B,"onMouseUp",()=>f.onCancel()),D(V,j),D(V,U),Z(V,"gap",0),K(j,()=>f.fieldLabel??F("common.rename.defaultFieldLabel")),Z(U,"focused",!0),Z(U,"onInput",(M)=>G(Z1(M))),Z(U,"onSubmit",()=>X()),D(L,O),Z(L,"paddingBottom",1),K(O,()=>F("common.rename.footerHint",{submitLabel:f.submitLabel??F("common.rename.defaultSubmitLabel")})),u((M)=>{var R=wy.BOLD,S=Y.text,a=Y.textMuted,N=Y.accent,g=z(),C=f.placeholder??f.currentTitle,y=Y.textMuted;return R!==M.e&&(M.e=Z(H,"attributes",R,M.e)),S!==M.t&&(M.t=Z(H,"fg",S,M.t)),a!==M.a&&(M.a=Z(B,"fg",a,M.a)),N!==M.o&&(M.o=Z(j,"fg",N,M.o)),g!==M.i&&(M.i=Z(U,"value",g,M.i)),C!==M.n&&(M.n=Z(U,"placeholder",C,M.n)),y!==M.s&&(M.s=Z(O,"fg",y,M.s)),M},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),q})()}var fD=k(()=>{h();h();h();h();h();h();h();X1();Wf();xf();v1();bG()});function hy(f,J,Y={}){return new Promise((z)=>{f.replace(()=>b(e4,{currentTitle:J,get dialogTitle(){return Y.dialogTitle},get fieldLabel(){return Y.fieldLabel},get submitLabel(){return Y.submitLabel},get placeholder(){return Y.placeholder},get allowEmpty(){return Y.allowEmpty},onSubmit:(G)=>z(G),onCancel:()=>z(void 0)}),()=>z(void 0))})}var zY;var R8=k(()=>{h();fD();zY={show:hy}});import{TextAttributes as Py}from"@opentui/core";function vy(f){if(!f)return f;return f.charAt(0).toUpperCase()+f.slice(1)}function GY(f){let J=vf(),{theme:Y}=i0(),[z,G]=uJ({active:f.initialActive??"confirm"});return Uf(()=>({bindings:[{key:"return",cmd:()=>{if(z.active==="confirm")f.onConfirm?.();if(z.active==="cancel")f.onCancel?.();J.clear()}},{key:"left",cmd:()=>G("active",z.active==="confirm"?"cancel":"confirm")},{key:"right",cmd:()=>G("active",z.active==="confirm"?"cancel":"confirm")}]})),(()=>{var X=W("box"),q=W("box"),Q=W("text"),H=W("text"),B=W("text"),V=W("box");return D(X,q),D(X,B),D(X,V),Z(X,"paddingLeft",2),Z(X,"paddingRight",2),Z(X,"paddingBottom",1),Z(X,"gap",0),D(q,Q),D(q,H),Z(q,"flexDirection","row"),Z(q,"justifyContent","space-between"),K(Q,()=>f.title),D(H,x0("esc")),Z(H,"onMouseUp",()=>J.clear()),K(B,()=>f.message),Z(V,"flexDirection","row"),Z(V,"justifyContent","flex-end"),Z(V,"paddingTop",1),K(V,b(Zf,{each:["cancel","confirm"],children:(j)=>(()=>{var U=W("box"),L=W("text");return D(U,L),Z(U,"paddingLeft",1),Z(U,"paddingRight",1),Z(U,"onMouseUp",()=>{if(j==="confirm")f.onConfirm?.();if(j==="cancel")f.onCancel?.();J.clear()}),K(L,()=>vy(j==="cancel"?f.label??F("common.cancel"):f.confirmLabel??F("common.confirm"))),u((O)=>{var M=j===z.active?Y.primary:void 0,R=j===z.active?Y.selectedListItemText:Y.textMuted;return M!==O.e&&(O.e=Z(U,"backgroundColor",M,O.e)),R!==O.t&&(O.t=Z(L,"fg",R,O.t)),O},{e:void 0,t:void 0}),U})()})),u((j)=>{var U=Py.BOLD,L=Y.text,O=Y.textMuted,M=Y.textMuted;return U!==j.e&&(j.e=Z(Q,"attributes",U,j.e)),L!==j.t&&(j.t=Z(Q,"fg",L,j.t)),O!==j.a&&(j.a=Z(H,"fg",O,j.a)),M!==j.o&&(j.o=Z(B,"fg",M,j.o)),j},{e:void 0,t:void 0,a:void 0,o:void 0}),X})()}var C8=k(()=>{h();h();h();h();h();h();h();X1();Wf();CG();xf();S1();v1();GY.show=(f,J,Y,z,G,X)=>{return new Promise((q)=>{f.replace(()=>b(GY,{title:J,message:Y,onConfirm:()=>q(!0),onCancel:()=>q(!1),label:z,confirmLabel:G,get initialActive(){return X?.initialActive}}),()=>q(void 0)),f.setSize("small")})}});import{unlinkSync as my}from"fs";import{join as cy}from"path";function JD(f){return f instanceof W1}function YD(f,J){try{f?.destroy()}catch(Y){console.error(`kobe: renderer.destroy() failed during ${J}:`,Y)}}async function k8(f,J,Y){if(await GY.show(f,"Reset UI state?","Wipes ~/.config/kobe/state.json and ~/.kobe/tasks.json, then quits kobe \u2014 relaunch for a fresh start with empty Working session / Archive lists. Worktrees on disk and Claude Code session history are NOT touched.","cancel")!==!0)return;J.clear();try{my(cy(OJ(),".kobe","tasks.json"))}catch(G){if(G.code!=="ENOENT")console.error("kobe: failed to delete tasks.json during reset:",G)}YD(Y,"reset"),process.stderr.write(`kobe: UI state reset. Relaunch kobe to start fresh.
224
+ `),process.exit(0)}async function N8(f,J,Y){if(!(J instanceof W1))return;if(await GY.show(f,"Restart backend?","Quits this kobe window. Relaunch to (re)spawn the daemon. Any other attached windows keep their connection. In v0.6 the daemon's RPC surface shrank to task CRUD + subscribe, so a graceful daemon.stop RPC is no longer plumbed through the client \u2014 quit + relaunch is the path.","cancel")!==!0)return;YD(Y,"daemon restart"),process.stderr.write(`kobe: window closed. Relaunch kobe to start fresh.
225
+ `),process.exit(0)}var zD=k(()=>{PY();lf();C8()});function ny(f){return`theme:${f}`}function y8(f){return`language:${f}`}function b8(f){return`accent:${f}`}function dy(f){return`engine:${f}`}function nX(f){return`surface:${f}`}function S8(f){return[...f.themeNames.map((J)=>({id:ny(J),kind:"theme",name:J})),...bz.map((J)=>({id:y8(J.id),kind:"language",locale:J.id})),{id:"transparent",kind:"transparent"},...f.focusAccentSlots.map((J)=>({id:b8(J),kind:"focusAccent",slot:J})),{id:"toast",kind:"toast"},{id:"sound",kind:"sound"},{id:"zen-keep-tasks",kind:"zenKeepTasks"},{id:nX("chattab"),kind:"surface",surface:"chattab"},{id:nX("taskpanel"),kind:"surface",surface:"taskpanel"},{id:"editor-kind",kind:"editorKind"},{id:"editor-custom",kind:"editorCustom"}]}function iy(f){return[...f.map((J)=>({id:dy(J),kind:"engine",vendor:J})),{id:"add-engine",kind:"engineAdd"}]}function ly(){return[{id:"feedback-title",kind:"feedbackTitle"},{id:"feedback-body",kind:"feedbackBody"},{id:"feedback-send",kind:"feedbackSend"}]}function dX(f){return[{id:"dev-reset",kind:"devReset"},...f?[{id:"dev-restart",kind:"devRestartDaemon"}]:[],{id:"remote-projects",kind:"devRemoteProjects"},{id:"auto-status",kind:"devAutoStatus"},{id:"dispatcher",kind:"devDispatcher"}]}function GD(f,J){switch(f){case"general":return S8(J);case"engines":return iy(J.engineList);case"accounts":case"keys":return[];case"feedback":return ly();case"dev":return dX(J.hasDaemon)}}function iX(f,J){return f.findIndex((Y)=>Y.id===J)}function PQ(f,J){return f[J]}var Iz;var I8=k(()=>{yG();Iz=[{id:"general",label:"General"},{id:"engines",label:"Engines"},{id:"accounts",label:"Accounts"},{id:"keys",label:"Keybindings"},{id:"feedback",label:"Feedback"},{id:"dev",label:"Dev"}]});import{TextAttributes as ff}from"@opentui/core";function XD(f){let{theme:J}=i0();return(()=>{var Y=W("box");return Z(Y,"flexDirection","column"),Z(Y,"flexShrink",0),Z(Y,"width",14),Z(Y,"gap",1),K(Y,b(Zf,{each:Iz,children:(z,G)=>{let X=()=>G()===f.cursor(),q=()=>X()&&f.level()==="sidebar";return(()=>{var Q=W("box"),H=W("text");return D(Q,H),Z(Q,"paddingLeft",1),Z(Q,"paddingRight",1),Z(Q,"onMouseUp",()=>f.switchSection(z.id)),Z(H,"wrapMode","none"),K(H,()=>F(`settings.sections.${z.id}`)),u((B)=>{var V=q()?J.primary:void 0,j=q()?J.selectedListItemText:X()?J.accent:J.textMuted,U=X()?ff.BOLD:void 0;return V!==B.e&&(B.e=Z(Q,"backgroundColor",V,B.e)),j!==B.t&&(B.t=Z(H,"fg",j,B.t)),U!==B.a&&(B.a=Z(H,"attributes",U,B.a)),B},{e:void 0,t:void 0,a:void 0}),Q})()}})),Y})()}function ZD(f){let J=i0(),{theme:Y}=J,z=()=>S8({themeNames:f.themeNames(),focusAccentSlots:yz}),G=(C)=>iX(z(),C),X=()=>G("transparent"),q=()=>G("toast"),Q=()=>G("sound"),H=()=>G("zen-keep-tasks"),B=()=>G(nX("chattab")),V=()=>G(nX("taskpanel")),j=()=>G("editor-kind"),U=()=>G("editor-custom"),L=()=>f.bodyRow()===X(),O=()=>f.bodyRow()===q(),M=()=>f.bodyRow()===Q(),R=()=>f.bodyRow()===H(),S=()=>f.bodyRow()===B(),a=()=>f.bodyRow()===V(),N=()=>f.bodyRow()===j(),g=()=>f.bodyRow()===U();return(()=>{var C=W("box"),y=W("text"),_=W("text"),z0=W("box"),t=W("box"),Y0=W("text"),T=W("text"),Q0=W("box"),p=W("text"),D0=W("text"),g0=W("box"),$=W("text"),E=W("box"),f0=W("text"),I=W("text"),G0=W("box"),x=W("text"),c=W("text"),Z0=W("box"),V0=W("text"),H0=x0(" "),y0=W("box"),w0=W("text"),T0=x0(" "),r0=W("box"),P=W("text"),M0=W("text"),J0=W("box"),F0=W("text"),a0=x0(" "),p0=W("box"),u0=W("text"),_0=W("text"),n=W("box"),q0=W("text"),b0=x0(" "),o0=W("box"),l0=W("text"),$0=x0(" "),t0=W("box"),Rf=W("text"),gf=W("text"),o=W("box"),e=W("text"),B0=W("box"),C0=W("text");return D(C,y),D(C,_),D(C,z0),D(C,t),D(C,Q0),D(C,E),D(C,G0),D(C,r0),D(C,p0),D(C,t0),Z(C,"flexDirection","column"),Z(C,"gap",1),K(y,()=>F("settings.general.theme")),K(_,()=>F("settings.general.themeHint")),Z(z0,"flexDirection","column"),Z(z0,"gap",0),K(z0,b(Zf,{get each(){return f.themeNames()},children:(A,P0)=>{let K0=()=>f.level()==="body"&&f.bodyRow()===P0(),E0=()=>A===J.selected;return(()=>{var W0=W("box"),L0=W("text");return D(W0,L0),Z(W0,"flexDirection","row"),Z(W0,"gap",1),Z(W0,"paddingLeft",1),Z(W0,"paddingRight",1),Z(W0,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(P0()),f.setThemeCursor(P0()),f.selectTheme(A)}),Z(L0,"wrapMode","none"),K(L0,()=>E0()?"\u25CF ":" ",null),K(L0,A,null),u((R0)=>{var Jf=K0()?Y.primary:void 0,Yf=K0()?Y.selectedListItemText:E0()?Y.accent:Y.text,n0=K0()||E0()?ff.BOLD:void 0;return Jf!==R0.e&&(R0.e=Z(W0,"backgroundColor",Jf,R0.e)),Yf!==R0.t&&(R0.t=Z(L0,"fg",Yf,R0.t)),n0!==R0.a&&(R0.a=Z(L0,"attributes",n0,R0.a)),R0},{e:void 0,t:void 0,a:void 0}),W0})()}})),D(t,Y0),D(t,T),Z(t,"flexDirection","column"),Z(t,"gap",0),Z(t,"paddingTop",1),K(Y0,()=>F("settings.general.language")),Z(T,"wrapMode","word"),K(T,()=>F("settings.general.languageHint")),K(t,b(Zf,{each:bz,children:(A)=>{let P0=()=>G(y8(A.id)),K0=()=>f.level()==="body"&&f.bodyRow()===P0(),E0=()=>f.currentLocale()===A.id;return(()=>{var W0=W("box"),L0=W("text");return D(W0,L0),Z(W0,"flexDirection","row"),Z(W0,"gap",1),Z(W0,"paddingLeft",1),Z(W0,"paddingRight",1),Z(W0,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(P0()),f.selectLanguage(A.id)}),Z(L0,"wrapMode","none"),K(L0,()=>E0()?"\u25CF ":" ",null),K(L0,()=>A.label,null),u((R0)=>{var Jf=K0()?Y.primary:void 0,Yf=K0()?Y.selectedListItemText:E0()?Y.accent:Y.text,n0=K0()||E0()?ff.BOLD:void 0;return Jf!==R0.e&&(R0.e=Z(W0,"backgroundColor",Jf,R0.e)),Yf!==R0.t&&(R0.t=Z(L0,"fg",Yf,R0.t)),n0!==R0.a&&(R0.a=Z(L0,"attributes",n0,R0.a)),R0},{e:void 0,t:void 0,a:void 0}),W0})()}}),null),D(Q0,p),D(Q0,D0),D(Q0,g0),Z(Q0,"flexDirection","column"),Z(Q0,"gap",0),Z(Q0,"paddingTop",1),K(p,()=>F("settings.general.transparent")),Z(D0,"wrapMode","word"),K(D0,()=>F("settings.general.transparentHint")),D(g0,$),Z(g0,"flexDirection","row"),Z(g0,"paddingLeft",1),Z(g0,"paddingRight",1),Z(g0,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(X()),f.toggleTransparent()}),Z($,"wrapMode","none"),K($,(()=>{var A=I0(()=>!!J.transparentBackground);return()=>A()?F("settings.general.on"):F("settings.general.off")})()),D(E,f0),D(E,I),Z(E,"flexDirection","column"),Z(E,"gap",0),Z(E,"paddingTop",1),K(f0,()=>F("settings.general.focusAccent")),Z(I,"wrapMode","word"),K(I,()=>F("settings.general.focusAccentHint")),K(E,b(Zf,{each:yz,children:(A)=>{let P0=()=>G(b8(A)),K0=()=>f.level()==="body"&&f.bodyRow()===P0(),E0=()=>J.focusAccent===A;return(()=>{var W0=W("box"),L0=W("text");return D(W0,L0),Z(W0,"flexDirection","row"),Z(W0,"gap",1),Z(W0,"paddingLeft",1),Z(W0,"paddingRight",1),Z(W0,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(P0()),f.selectFocusAccent(A)}),Z(L0,"wrapMode","none"),K(L0,()=>E0()?"\u25CF ":" ",null),K(L0,()=>F(`settings.general.accent${A.charAt(0).toUpperCase()}${A.slice(1)}`),null),u((R0)=>{var Jf=K0()?Y.primary:void 0,Yf=K0()?Y.selectedListItemText:E0()?Y.focusAccent:Y.text,n0=K0()||E0()?ff.BOLD:void 0;return Jf!==R0.e&&(R0.e=Z(W0,"backgroundColor",Jf,R0.e)),Yf!==R0.t&&(R0.t=Z(L0,"fg",Yf,R0.t)),n0!==R0.a&&(R0.a=Z(L0,"attributes",n0,R0.a)),R0},{e:void 0,t:void 0,a:void 0}),W0})()}}),null),D(G0,x),D(G0,c),D(G0,Z0),D(G0,y0),Z(G0,"flexDirection","column"),Z(G0,"gap",0),Z(G0,"paddingTop",1),K(x,()=>F("settings.general.notifications")),Z(c,"wrapMode","word"),K(c,()=>F("settings.general.notificationsHint")),D(Z0,V0),Z(Z0,"flexDirection","row"),Z(Z0,"gap",1),Z(Z0,"paddingLeft",1),Z(Z0,"paddingRight",1),Z(Z0,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(q()),f.toggleToast()}),D(V0,H0),Z(V0,"wrapMode","none"),K(V0,()=>f.toastEnabled()?"[x]":"[ ]",H0),K(V0,()=>F("settings.general.toast"),null),D(y0,w0),Z(y0,"flexDirection","row"),Z(y0,"gap",1),Z(y0,"paddingLeft",1),Z(y0,"paddingRight",1),Z(y0,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(Q()),f.toggleSound()}),D(w0,T0),Z(w0,"wrapMode","none"),K(w0,()=>f.soundEnabled()?"[x]":"[ ]",T0),K(w0,()=>F("settings.general.sound"),null),D(r0,P),D(r0,M0),D(r0,J0),Z(r0,"flexDirection","column"),Z(r0,"gap",0),Z(r0,"paddingTop",1),K(P,()=>F("settings.general.zen")),Z(M0,"wrapMode","word"),K(M0,()=>F("settings.general.zenHint")),D(J0,F0),Z(J0,"flexDirection","row"),Z(J0,"gap",1),Z(J0,"paddingLeft",1),Z(J0,"paddingRight",1),Z(J0,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(H()),f.toggleZenKeepsTasks()}),D(F0,a0),Z(F0,"wrapMode","none"),K(F0,()=>f.zenKeepsTasks()?"[x]":"[ ]",a0),K(F0,()=>F("settings.general.zenKeepTasks"),null),D(p0,u0),D(p0,_0),D(p0,n),D(p0,o0),Z(p0,"flexDirection","column"),Z(p0,"gap",0),Z(p0,"paddingTop",1),K(u0,()=>F("settings.general.surface")),Z(_0,"wrapMode","word"),K(_0,()=>F("settings.general.surfaceHint")),D(n,q0),Z(n,"flexDirection","row"),Z(n,"gap",1),Z(n,"paddingLeft",1),Z(n,"paddingRight",1),Z(n,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(B()),f.selectSurface("chattab")}),D(q0,b0),Z(q0,"wrapMode","none"),K(q0,()=>f.settingsSurface()==="chattab"?"[x]":"[ ]",b0),K(q0,()=>F("settings.general.surfaceChattab"),null),D(o0,l0),Z(o0,"flexDirection","row"),Z(o0,"gap",1),Z(o0,"paddingLeft",1),Z(o0,"paddingRight",1),Z(o0,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(V()),f.selectSurface("taskpanel")}),D(l0,$0),Z(l0,"wrapMode","none"),K(l0,()=>f.settingsSurface()==="taskpanel"?"[x]":"[ ]",$0),K(l0,()=>F("settings.general.surfaceTaskpanel"),null),D(t0,Rf),D(t0,gf),D(t0,o),D(t0,B0),Z(t0,"flexDirection","column"),Z(t0,"gap",0),Z(t0,"paddingTop",1),K(Rf,()=>F("settings.general.editor")),Z(gf,"wrapMode","word"),K(gf,()=>F("settings.general.editorHint")),D(o,e),Z(o,"flexDirection","row"),Z(o,"gap",1),Z(o,"paddingLeft",1),Z(o,"paddingRight",1),Z(o,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(j()),f.cycleEditorKind()}),Z(e,"wrapMode","none"),K(e,()=>F("settings.general.editorRow",{kind:f.editorKind()})),D(B0,C0),Z(B0,"flexDirection","row"),Z(B0,"gap",1),Z(B0,"paddingLeft",1),Z(B0,"paddingRight",1),Z(B0,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(U()),f.editEditorCustom()}),Z(C0,"wrapMode","none"),K(C0,()=>F("settings.general.editorCustom",{cmd:f.editorCustomCommand().trim()||F("settings.general.editorCustomUnset")})),u((A)=>{var P0=Y.text,K0=ff.BOLD,E0=Y.textMuted,W0=Y.text,L0=ff.BOLD,R0=Y.textMuted,Jf=Y.text,Yf=ff.BOLD,n0=Y.textMuted,yf=L()?Y.primary:void 0,k0=L()?Y.selectedListItemText:J.transparentBackground?Y.accent:Y.textMuted,wf=ff.BOLD,v=Y.text,A0=ff.BOLD,Bf=Y.textMuted,Of=Y.text,Qf=ff.BOLD,d=Y.textMuted,s=O()?Y.primary:void 0,S0=O()?Y.selectedListItemText:f.toastEnabled()?Y.accent:Y.textMuted,N0=ff.BOLD,q1=M()?Y.primary:void 0,K1=M()?Y.selectedListItemText:f.soundEnabled()?Y.accent:Y.textMuted,tf=ff.BOLD,m1=Y.text,xJ=ff.BOLD,F1=Y.textMuted,wJ=R()?Y.primary:void 0,XY=R()?Y.selectedListItemText:f.zenKeepsTasks()?Y.accent:Y.textMuted,m=ff.BOLD,i=Y.text,l=ff.BOLD,w=Y.textMuted,m0=S()?Y.primary:void 0,v0=S()?Y.selectedListItemText:f.settingsSurface()==="chattab"?Y.accent:Y.textMuted,O0=ff.BOLD,c0=a()?Y.primary:void 0,qf=a()?Y.selectedListItemText:f.settingsSurface()==="taskpanel"?Y.accent:Y.textMuted,Df=ff.BOLD,Q1=Y.text,s1=ff.BOLD,ZY=Y.textMuted,f9=N()?Y.primary:void 0,J9=N()?Y.selectedListItemText:Y.accent,Y9=ff.BOLD,z9=g()?Y.primary:void 0,G9=g()?Y.selectedListItemText:f.editorKind()==="custom"?Y.text:Y.textMuted;return P0!==A.e&&(A.e=Z(y,"fg",P0,A.e)),K0!==A.t&&(A.t=Z(y,"attributes",K0,A.t)),E0!==A.a&&(A.a=Z(_,"fg",E0,A.a)),W0!==A.o&&(A.o=Z(Y0,"fg",W0,A.o)),L0!==A.i&&(A.i=Z(Y0,"attributes",L0,A.i)),R0!==A.n&&(A.n=Z(T,"fg",R0,A.n)),Jf!==A.s&&(A.s=Z(p,"fg",Jf,A.s)),Yf!==A.h&&(A.h=Z(p,"attributes",Yf,A.h)),n0!==A.r&&(A.r=Z(D0,"fg",n0,A.r)),yf!==A.d&&(A.d=Z(g0,"backgroundColor",yf,A.d)),k0!==A.l&&(A.l=Z($,"fg",k0,A.l)),wf!==A.u&&(A.u=Z($,"attributes",wf,A.u)),v!==A.c&&(A.c=Z(f0,"fg",v,A.c)),A0!==A.w&&(A.w=Z(f0,"attributes",A0,A.w)),Bf!==A.m&&(A.m=Z(I,"fg",Bf,A.m)),Of!==A.f&&(A.f=Z(x,"fg",Of,A.f)),Qf!==A.y&&(A.y=Z(x,"attributes",Qf,A.y)),d!==A.g&&(A.g=Z(c,"fg",d,A.g)),s!==A.p&&(A.p=Z(Z0,"backgroundColor",s,A.p)),S0!==A.b&&(A.b=Z(V0,"fg",S0,A.b)),N0!==A.T&&(A.T=Z(V0,"attributes",N0,A.T)),q1!==A.A&&(A.A=Z(y0,"backgroundColor",q1,A.A)),K1!==A.O&&(A.O=Z(w0,"fg",K1,A.O)),tf!==A.I&&(A.I=Z(w0,"attributes",tf,A.I)),m1!==A.S&&(A.S=Z(P,"fg",m1,A.S)),xJ!==A.W&&(A.W=Z(P,"attributes",xJ,A.W)),F1!==A.C&&(A.C=Z(M0,"fg",F1,A.C)),wJ!==A.B&&(A.B=Z(J0,"backgroundColor",wJ,A.B)),XY!==A.v&&(A.v=Z(F0,"fg",XY,A.v)),m!==A.k&&(A.k=Z(F0,"attributes",m,A.k)),i!==A.x&&(A.x=Z(u0,"fg",i,A.x)),l!==A.j&&(A.j=Z(u0,"attributes",l,A.j)),w!==A.q&&(A.q=Z(_0,"fg",w,A.q)),m0!==A.z&&(A.z=Z(n,"backgroundColor",m0,A.z)),v0!==A.P&&(A.P=Z(q0,"fg",v0,A.P)),O0!==A.H&&(A.H=Z(q0,"attributes",O0,A.H)),c0!==A.F&&(A.F=Z(o0,"backgroundColor",c0,A.F)),qf!==A.M&&(A.M=Z(l0,"fg",qf,A.M)),Df!==A.D&&(A.D=Z(l0,"attributes",Df,A.D)),Q1!==A.R&&(A.R=Z(Rf,"fg",Q1,A.R)),s1!==A.E&&(A.E=Z(Rf,"attributes",s1,A.E)),ZY!==A.L&&(A.L=Z(gf,"fg",ZY,A.L)),f9!==A.N&&(A.N=Z(o,"backgroundColor",f9,A.N)),J9!==A.G&&(A.G=Z(e,"fg",J9,A.G)),Y9!==A.U&&(A.U=Z(e,"attributes",Y9,A.U)),z9!==A.K&&(A.K=Z(B0,"backgroundColor",z9,A.K)),G9!==A.V&&(A.V=Z(C0,"fg",G9,A.V)),A},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0,w:void 0,m:void 0,f:void 0,y:void 0,g:void 0,p:void 0,b:void 0,T:void 0,A:void 0,O:void 0,I:void 0,S:void 0,W:void 0,C:void 0,B:void 0,v:void 0,k:void 0,x:void 0,j:void 0,q:void 0,z:void 0,P:void 0,H:void 0,F:void 0,M:void 0,D:void 0,R:void 0,E:void 0,L:void 0,N:void 0,G:void 0,U:void 0,K:void 0,V:void 0}),C})()}function qD(f){let{theme:J}=i0(),Y=()=>f.vendors.length;return(()=>{var z=W("box"),G=W("text"),X=W("text"),q=W("box"),Q=W("box"),H=W("text");return D(z,G),D(z,X),D(z,q),Z(z,"flexDirection","column"),Z(z,"gap",1),K(G,()=>F("settings.engines.title")),Z(X,"wrapMode","word"),K(X,()=>F("settings.engines.hint")),D(q,Q),Z(q,"flexDirection","column"),Z(q,"gap",0),K(q,b(Zf,{get each(){return f.vendors},children:(B,V)=>{let j=()=>f.level()==="body"&&f.bodyRow()===V();return(()=>{var U=W("box"),L=W("text"),O=W("text"),M=W("text");return D(U,L),D(U,O),D(U,M),Z(U,"flexDirection","row"),Z(U,"gap",1),Z(U,"paddingLeft",1),Z(U,"paddingRight",1),Z(U,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(V()),f.editEngine(B)}),Z(L,"wrapMode","none"),K(L,()=>f.isDefaultEngine(B)?"\u25CF":" "),Z(O,"wrapMode","none"),K(O,()=>f.displayName(B)),Z(M,"wrapMode","none"),K(M,()=>f.commandText(B),null),K(M,(()=>{var R=I0(()=>!!f.isDefault(B));return()=>R()?F("settings.engines.defaultTag"):I0(()=>!!f.isCustom(B))()?F("settings.engines.customTag"):""})(),null),u((R)=>{var S=j()?J.primary:void 0,a=j()?J.selectedListItemText:J.accent,N=ff.BOLD,g=j()?J.selectedListItemText:J.text,C=ff.BOLD,y=j()?J.selectedListItemText:f.isDefault(B)?J.textMuted:J.accent;return S!==R.e&&(R.e=Z(U,"backgroundColor",S,R.e)),a!==R.t&&(R.t=Z(L,"fg",a,R.t)),N!==R.a&&(R.a=Z(L,"attributes",N,R.a)),g!==R.o&&(R.o=Z(O,"fg",g,R.o)),C!==R.i&&(R.i=Z(O,"attributes",C,R.i)),y!==R.n&&(R.n=Z(M,"fg",y,R.n)),R},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),U})()}}),Q),D(Q,H),Z(Q,"flexDirection","row"),Z(Q,"paddingLeft",1),Z(Q,"paddingRight",1),Z(Q,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(Y()),f.onAddEngine()}),Z(H,"wrapMode","none"),K(H,()=>F("settings.engines.addEngine")),u((B)=>{var V=J.text,j=ff.BOLD,U=J.textMuted,L=f.level()==="body"&&f.bodyRow()===Y()?J.primary:void 0,O=f.level()==="body"&&f.bodyRow()===Y()?J.selectedListItemText:J.primary;return V!==B.e&&(B.e=Z(G,"fg",V,B.e)),j!==B.t&&(B.t=Z(G,"attributes",j,B.t)),U!==B.a&&(B.a=Z(X,"fg",U,B.a)),L!==B.o&&(B.o=Z(Q,"backgroundColor",L,B.o)),O!==B.i&&(B.i=Z(H,"fg",O,B.i)),B},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),z})()}function QD(f){let{theme:J}=i0(),Y=(z)=>z.binary.found?`Binary: ${z.binary.path}`:`Binary: ${z.binary.error}`;return(()=>{var z=W("box"),G=W("text"),X=W("text"),q=W("box"),Q=W("text"),H=W("box"),B=W("text"),V=W("box"),j=W("text");return D(z,G),D(z,X),D(z,q),D(z,H),D(z,V),Z(z,"flexDirection","column"),Z(z,"gap",1),K(G,()=>F("settings.accounts.title")),Z(X,"wrapMode","word"),K(X,()=>F("settings.accounts.hint")),D(q,Q),Z(q,"flexDirection","column"),Z(q,"gap",0),D(Q,x0("claude-code")),K(q,b(X0,{get when(){return f.claudeStatus()===null},get children(){var U=W("text");return K(U,()=>F("settings.accounts.checking")),u((L)=>Z(U,"fg",J.textMuted,L)),U}}),null),K(q,b(X0,{get when(){return f.claudeStatus()},children:(U)=>(()=>{var L=W("box"),O=W("text");return D(L,O),Z(L,"flexDirection","column"),Z(L,"gap",0),Z(O,"wrapMode","word"),K(O,()=>Y(U())),K(L,()=>{let M=U().account;if(M.kind==="oauth"){let R=[M.organization,M.billingType].filter((S)=>!!S).join(" \xB7 ");return(()=>{var S=W("text");return Z(S,"wrapMode","word"),K(S,()=>F("settings.accounts.loggedIn",{email:M.email}),null),K(S,R?` (${R})`:"",null),u((a)=>Z(S,"fg",J.success,a)),S})()}return(()=>{var R=W("text");return K(R,()=>F("settings.accounts.notLoggedIn")),u((S)=>Z(R,"fg",J.textMuted,S)),R})()},null),K(L,b(X0,{get when(){return U().accountError},children:(M)=>(()=>{var R=W("text");return Z(R,"wrapMode","word"),K(R,()=>`! ${M()}`),u((S)=>Z(R,"fg",J.warning,S)),R})()}),null),u((M)=>Z(O,"fg",U().binary.found?J.textMuted:J.warning,M)),L})()}),null),D(H,B),Z(H,"flexDirection","column"),Z(H,"gap",0),D(B,x0("codex")),K(H,b(X0,{get when(){return f.codexStatus()===null},get children(){var U=W("text");return K(U,()=>F("settings.accounts.checking")),u((L)=>Z(U,"fg",J.textMuted,L)),U}}),null),K(H,b(X0,{get when(){return f.codexStatus()},children:(U)=>(()=>{var L=W("box"),O=W("text");return D(L,O),Z(L,"flexDirection","column"),Z(L,"gap",0),Z(O,"wrapMode","word"),K(O,()=>Y(U())),K(L,()=>{let M=U().account;if(M.kind==="chatgpt")return(()=>{var R=W("text");return Z(R,"wrapMode","word"),K(R,()=>F("settings.accounts.chatgptLogin",{email:M.email}),null),K(R,(()=>{var S=I0(()=>!!M.plan);return()=>S()?` (${M.plan})`:""})(),null),u((S)=>Z(R,"fg",J.success,S)),R})();if(M.kind==="apikey")return(()=>{var R=W("text");return K(R,()=>F("settings.accounts.apiKeyConfigured")),u((S)=>Z(R,"fg",J.success,S)),R})();return(()=>{var R=W("text");return K(R,()=>F("settings.accounts.notLoggedIn")),u((S)=>Z(R,"fg",J.textMuted,S)),R})()},null),K(L,b(X0,{get when(){return U().accountError},children:(M)=>(()=>{var R=W("text");return Z(R,"wrapMode","word"),K(R,()=>`! ${M()}`),u((S)=>Z(R,"fg",J.warning,S)),R})()}),null),u((M)=>Z(O,"fg",U().binary.found?J.textMuted:J.warning,M)),L})()}),null),D(V,j),Z(V,"flexDirection","column"),Z(V,"gap",0),D(j,x0("copilot")),K(V,b(X0,{get when(){return f.copilotStatus()===null},get children(){var U=W("text");return K(U,()=>F("settings.accounts.checking")),u((L)=>Z(U,"fg",J.textMuted,L)),U}}),null),K(V,b(X0,{get when(){return f.copilotStatus()},children:(U)=>(()=>{var L=W("box"),O=W("text");return D(L,O),Z(L,"flexDirection","column"),Z(L,"gap",0),Z(O,"wrapMode","word"),K(O,()=>Y(U())),K(L,()=>{let M=U().account;if(M.kind==="token")return(()=>{var R=W("text");return K(R,()=>F("settings.accounts.tokenConfigured",{source:M.source})),u((S)=>Z(R,"fg",J.success,S)),R})();if(M.kind==="oauth")return(()=>{var R=W("text");return K(R,()=>F("settings.accounts.copilotDetected")),u((S)=>Z(R,"fg",J.success,S)),R})();return(()=>{var R=W("text");return K(R,()=>F("settings.accounts.notLoggedIn")),u((S)=>Z(R,"fg",J.textMuted,S)),R})()},null),K(L,b(X0,{get when(){return U().accountError},children:(M)=>(()=>{var R=W("text");return Z(R,"wrapMode","word"),K(R,()=>`! ${M()}`),u((S)=>Z(R,"fg",J.warning,S)),R})()}),null),u((M)=>Z(O,"fg",U().binary.found?J.textMuted:J.warning,M)),L})()}),null),u((U)=>{var L=J.text,O=ff.BOLD,M=J.textMuted,R=J.text,S=ff.BOLD,a=J.text,N=ff.BOLD,g=J.text,C=ff.BOLD;return L!==U.e&&(U.e=Z(G,"fg",L,U.e)),O!==U.t&&(U.t=Z(G,"attributes",O,U.t)),M!==U.a&&(U.a=Z(X,"fg",M,U.a)),R!==U.o&&(U.o=Z(Q,"fg",R,U.o)),S!==U.i&&(U.i=Z(Q,"attributes",S,U.i)),a!==U.n&&(U.n=Z(B,"fg",a,U.n)),N!==U.s&&(U.s=Z(B,"attributes",N,U.s)),g!==U.h&&(U.h=Z(j,"fg",g,U.h)),C!==U.r&&(U.r=Z(j,"attributes",C,U.r)),U},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0}),z})()}function HD(f){let{theme:J}=i0(),Y=()=>f.level()==="body",z=()=>Y()&&f.bodyRow()===0,G=()=>Y()&&f.bodyRow()===1,X=()=>Y()&&f.bodyRow()===2,q=(H)=>H?J.primary:J.textMuted,Q=(H)=>H?ff.BOLD|ff.UNDERLINE:void 0;return(()=>{var H=W("box"),B=W("text"),V=W("text"),j=W("box"),U=W("box"),L=W("text"),O=W("input"),M=W("box"),R=W("text"),S=W("input"),a=W("box"),N=W("text");return D(H,B),D(H,V),D(H,j),Z(H,"flexDirection","column"),Z(H,"gap",1),K(B,()=>F("settings.feedback.title")),Z(V,"wrapMode","word"),K(V,()=>F("settings.feedback.hint")),D(j,U),D(j,M),D(j,a),Z(j,"flexDirection","column"),Z(j,"gap",1),D(U,L),D(U,O),Z(U,"gap",0),K(L,()=>F("settings.feedback.titleLabel")),Z(O,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(0)}),Z(O,"onInput",(g)=>f.setTitle(Z1(g))),Z(O,"onSubmit",()=>f.onTitleSubmit()),D(M,R),D(M,S),Z(M,"gap",0),K(R,()=>F("settings.feedback.descriptionLabel")),Z(S,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(1)}),Z(S,"onInput",(g)=>f.setBody(Z1(g))),Z(S,"onSubmit",()=>f.onBodySubmit()),D(a,N),Z(a,"flexDirection","row"),Z(a,"paddingLeft",1),Z(a,"paddingRight",1),Z(a,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(2),f.submit()}),K(N,()=>F("settings.feedback.send")),K(H,b(X0,{get when(){return f.status()},get children(){var g=W("text");return Z(g,"wrapMode","word"),K(g,()=>f.status()),u((C)=>Z(g,"fg",f.status().startsWith("error:")?J.warning:J.success,C)),g}}),null),u((g)=>{var C=J.text,y=ff.BOLD,_=J.textMuted,z0=q(z()),t=Q(z()),Y0=f.title(),T=F("settings.feedback.titlePlaceholder"),Q0=z(),p=q(G()),D0=Q(G()),g0=f.body(),$=F("settings.feedback.descriptionPlaceholder"),E=G(),f0=X()?J.primary:J.backgroundElement,I=X()?J.selectedListItemText:J.accent,G0=ff.BOLD;return C!==g.e&&(g.e=Z(B,"fg",C,g.e)),y!==g.t&&(g.t=Z(B,"attributes",y,g.t)),_!==g.a&&(g.a=Z(V,"fg",_,g.a)),z0!==g.o&&(g.o=Z(L,"fg",z0,g.o)),t!==g.i&&(g.i=Z(L,"attributes",t,g.i)),Y0!==g.n&&(g.n=Z(O,"value",Y0,g.n)),T!==g.s&&(g.s=Z(O,"placeholder",T,g.s)),Q0!==g.h&&(g.h=Z(O,"focused",Q0,g.h)),p!==g.r&&(g.r=Z(R,"fg",p,g.r)),D0!==g.d&&(g.d=Z(R,"attributes",D0,g.d)),g0!==g.l&&(g.l=Z(S,"value",g0,g.l)),$!==g.u&&(g.u=Z(S,"placeholder",$,g.u)),E!==g.c&&(g.c=Z(S,"focused",E,g.c)),f0!==g.w&&(g.w=Z(a,"backgroundColor",f0,g.w)),I!==g.m&&(g.m=Z(N,"fg",I,g.m)),G0!==g.f&&(g.f=Z(N,"attributes",G0,g.f)),g},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0,w:void 0,m:void 0,f:void 0}),H})()}function BD(f){let{theme:J}=i0(),Y=()=>f.level()==="body"&&f.bodyRow()===0,z=()=>f.level()==="body"&&f.bodyRow()===1,G=()=>iX(dX(f.hasDaemon),"remote-projects"),X=()=>f.level()==="body"&&f.bodyRow()===G(),q=()=>iX(dX(f.hasDaemon),"auto-status"),Q=()=>f.level()==="body"&&f.bodyRow()===q(),H=()=>iX(dX(f.hasDaemon),"dispatcher"),B=()=>f.level()==="body"&&f.bodyRow()===H();return(()=>{var V=W("box"),j=W("text"),U=W("text"),L=W("box"),O=W("text"),M=W("text"),R=W("box"),S=W("text"),a=W("text"),N=W("box"),g=W("text"),C=W("text"),y=W("box"),_=W("text"),z0=W("text"),t=W("box"),Y0=W("text");return D(V,j),D(V,U),D(V,L),D(V,M),D(V,R),Z(V,"flexDirection","column"),Z(V,"gap",1),K(j,()=>F("settings.dev.reset")),Z(U,"wrapMode","word"),K(U,()=>F("settings.dev.resetHint")),D(L,O),Z(L,"flexDirection","row"),Z(L,"paddingLeft",1),Z(L,"paddingRight",1),Z(L,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(0),f.confirmReset()}),K(O,()=>F("settings.dev.resetButton")),K(V,b(X0,{get when(){return f.hasDaemon},get children(){var T=W("box"),Q0=W("text"),p=W("text"),D0=W("box"),g0=W("text");return D(T,Q0),D(T,p),D(T,D0),Z(T,"flexDirection","column"),Z(T,"gap",0),Z(T,"paddingTop",1),K(Q0,()=>F("settings.dev.restart")),Z(p,"wrapMode","word"),K(p,()=>F("settings.dev.restartHint")),D(D0,g0),Z(D0,"flexDirection","row"),Z(D0,"paddingLeft",1),Z(D0,"paddingRight",1),Z(D0,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(1),f.confirmRestartDaemon()}),K(g0,()=>F("settings.dev.restartButton")),u(($)=>{var E=J.text,f0=ff.BOLD,I=J.textMuted,G0=z()?J.primary:J.backgroundElement,x=z()?J.selectedListItemText:J.accent,c=ff.BOLD;return E!==$.e&&($.e=Z(Q0,"fg",E,$.e)),f0!==$.t&&($.t=Z(Q0,"attributes",f0,$.t)),I!==$.a&&($.a=Z(p,"fg",I,$.a)),G0!==$.o&&($.o=Z(D0,"backgroundColor",G0,$.o)),x!==$.i&&($.i=Z(g0,"fg",x,$.i)),c!==$.n&&($.n=Z(g0,"attributes",c,$.n)),$},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),T}}),M),Z(M,"wrapMode","word"),K(M,()=>F("settings.dev.doctorHint")),D(R,S),D(R,a),D(R,N),D(R,C),D(R,y),D(R,z0),D(R,t),Z(R,"flexDirection","column"),Z(R,"gap",0),Z(R,"paddingTop",1),K(S,()=>F("settings.dev.experimental")),Z(a,"wrapMode","word"),K(a,()=>F("settings.dev.remoteHint")),D(N,g),Z(N,"flexDirection","row"),Z(N,"paddingLeft",1),Z(N,"paddingRight",1),Z(N,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(G()),f.toggleRemoteProjects()}),K(g,(()=>{var T=I0(()=>!!f.remoteProjectsEnabled());return()=>T()?F("settings.dev.remoteOn"):F("settings.dev.remoteOff")})()),Z(C,"wrapMode","word"),K(C,()=>F("settings.dev.autoStatusHint")),D(y,_),Z(y,"flexDirection","row"),Z(y,"paddingLeft",1),Z(y,"paddingRight",1),Z(y,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(q()),f.toggleAutoStatus()}),K(_,(()=>{var T=I0(()=>!!f.autoStatusEnabled());return()=>T()?F("settings.dev.autoStatusOn"):F("settings.dev.autoStatusOff")})()),Z(z0,"wrapMode","word"),K(z0,()=>F("settings.dev.dispatcherHint")),D(t,Y0),Z(t,"flexDirection","row"),Z(t,"paddingLeft",1),Z(t,"paddingRight",1),Z(t,"onMouseUp",()=>{f.setLevel("body"),f.setBodyRow(H()),f.toggleDispatcher()}),K(Y0,(()=>{var T=I0(()=>!!f.dispatcherEnabled());return()=>T()?F("settings.dev.dispatcherOn"):F("settings.dev.dispatcherOff")})()),u((T)=>{var Q0=J.text,p=ff.BOLD,D0=J.textMuted,g0=Y()?J.primary:J.backgroundElement,$=Y()?J.selectedListItemText:J.warning,E=ff.BOLD,f0=J.textMuted,I=J.text,G0=ff.BOLD,x=J.textMuted,c=X()?J.primary:J.backgroundElement,Z0=X()?J.selectedListItemText:J.text,V0=f.remoteProjectsEnabled()?ff.BOLD:void 0,H0=J.textMuted,y0=Q()?J.primary:J.backgroundElement,w0=Q()?J.selectedListItemText:J.text,T0=f.autoStatusEnabled()?ff.BOLD:void 0,r0=J.textMuted,P=B()?J.primary:J.backgroundElement,M0=B()?J.selectedListItemText:J.text,J0=f.dispatcherEnabled()?ff.BOLD:void 0;return Q0!==T.e&&(T.e=Z(j,"fg",Q0,T.e)),p!==T.t&&(T.t=Z(j,"attributes",p,T.t)),D0!==T.a&&(T.a=Z(U,"fg",D0,T.a)),g0!==T.o&&(T.o=Z(L,"backgroundColor",g0,T.o)),$!==T.i&&(T.i=Z(O,"fg",$,T.i)),E!==T.n&&(T.n=Z(O,"attributes",E,T.n)),f0!==T.s&&(T.s=Z(M,"fg",f0,T.s)),I!==T.h&&(T.h=Z(S,"fg",I,T.h)),G0!==T.r&&(T.r=Z(S,"attributes",G0,T.r)),x!==T.d&&(T.d=Z(a,"fg",x,T.d)),c!==T.l&&(T.l=Z(N,"backgroundColor",c,T.l)),Z0!==T.u&&(T.u=Z(g,"fg",Z0,T.u)),V0!==T.c&&(T.c=Z(g,"attributes",V0,T.c)),H0!==T.w&&(T.w=Z(C,"fg",H0,T.w)),y0!==T.m&&(T.m=Z(y,"backgroundColor",y0,T.m)),w0!==T.f&&(T.f=Z(_,"fg",w0,T.f)),T0!==T.y&&(T.y=Z(_,"attributes",T0,T.y)),r0!==T.g&&(T.g=Z(z0,"fg",r0,T.g)),P!==T.p&&(T.p=Z(t,"backgroundColor",P,T.p)),M0!==T.b&&(T.b=Z(Y0,"fg",M0,T.b)),J0!==T.T&&(T.T=Z(Y0,"attributes",J0,T.T)),T},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0,w:void 0,m:void 0,f:void 0,y:void 0,g:void 0,p:void 0,b:void 0,T:void 0}),V})()}function jD(){let{theme:f}=i0(),J=b4(),Y=Object.keys(hB).sort();return(()=>{var z=W("box"),G=W("text"),X=W("text"),q=W("box"),Q=W("text"),H=W("text"),B=W("text"),V=W("text");return D(z,G),D(z,X),D(z,q),D(z,B),D(z,V),Z(z,"flexDirection","column"),Z(z,"gap",1),K(G,()=>F("settings.keybindings.title")),Z(X,"wrapMode","word"),K(X,()=>F("settings.keybindings.hint")),D(q,Q),D(q,H),Z(q,"flexDirection","column"),Z(q,"gap",0),K(Q,()=>F("settings.keybindings.configFile")),Z(H,"wrapMode","word"),K(H,()=>J.path,null),K(H,(()=>{var j=I0(()=>!!J.exists);return()=>j()?"":F("settings.keybindings.notCreated")})(),null),K(z,b(X0,{get when(){return!J.exists},get children(){var j=W("box"),U=W("text"),L=W("text"),O=W("text"),M=W("text"),R=W("text"),S=W("text"),a=W("text"),N=W("text"),g=W("text"),C=W("text");return D(j,U),D(j,L),D(j,O),D(j,M),D(j,R),D(j,S),D(j,a),D(j,N),D(j,g),D(j,C),Z(j,"flexDirection","column"),Z(j,"gap",0),K(U,()=>F("settings.keybindings.example")),D(L,x0("bindings:")),D(O,x0(" chat.fork.new: ctrl+g # string = one chord")),D(M,x0(" sidebar.select: [enter] # list = several chords")),D(R,x0(" files.createPR: null # null = unbind")),D(S,x0(" tmux.tab.new: ctrl+y # tmux session key (see below)")),D(a,x0(" tmux.layout.workspaceSplit: g # prefix g")),D(N,x0("darwin: # platform overlay (also: linux)")),D(g,x0(" bindings:")),D(C,x0(" palette.open: [cmd+p, ctrl+p]")),u((y)=>{var _=f.text,z0=ff.BOLD,t=f.textMuted,Y0=f.textMuted,T=f.textMuted,Q0=f.textMuted,p=f.textMuted,D0=f.textMuted,g0=f.textMuted,$=f.textMuted,E=f.textMuted;return _!==y.e&&(y.e=Z(U,"fg",_,y.e)),z0!==y.t&&(y.t=Z(U,"attributes",z0,y.t)),t!==y.a&&(y.a=Z(L,"fg",t,y.a)),Y0!==y.o&&(y.o=Z(O,"fg",Y0,y.o)),T!==y.i&&(y.i=Z(M,"fg",T,y.i)),Q0!==y.n&&(y.n=Z(R,"fg",Q0,y.n)),p!==y.s&&(y.s=Z(S,"fg",p,y.s)),D0!==y.h&&(y.h=Z(a,"fg",D0,y.h)),g0!==y.r&&(y.r=Z(N,"fg",g0,y.r)),$!==y.d&&(y.d=Z(g,"fg",$,y.d)),E!==y.l&&(y.l=Z(C,"fg",E,y.l)),y},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0}),j}}),B),K(z,b(X0,{get when(){return J.exists},get children(){var j=W("box"),U=W("text");return D(j,U),Z(j,"flexDirection","column"),Z(j,"gap",0),K(U,()=>F("settings.keybindings.overridesApplied")),K(j,b(X0,{get when(){return J.applied.length===0},get children(){var L=W("text");return K(L,()=>F("settings.keybindings.none")),u((O)=>Z(L,"fg",f.textMuted,O)),L}}),null),K(j,b(Zf,{get each(){return J.applied},children:(L)=>(()=>{var O=W("text");return Z(O,"wrapMode","word"),K(O,()=>`${L.id} \u2192 ${L.keys.length>0?L.keys.join(" / "):"(unbound)"} (default: ${L.defaultKeys.join(" / ")})`),u((M)=>Z(O,"fg",f.text,M)),O})()}),null),u((L)=>{var O=f.text,M=ff.BOLD;return O!==L.e&&(L.e=Z(U,"fg",O,L.e)),M!==L.t&&(L.t=Z(U,"attributes",M,L.t)),L},{e:void 0,t:void 0}),j}}),B),K(z,b(X0,{get when(){return J.warnings.length>0},get children(){var j=W("box"),U=W("text");return D(j,U),Z(j,"flexDirection","column"),Z(j,"gap",0),K(U,()=>F("settings.keybindings.warnings")),K(j,b(Zf,{get each(){return J.warnings},children:(L)=>(()=>{var O=W("text");return Z(O,"wrapMode","word"),K(O,`! ${L}`),u((M)=>Z(O,"fg",f.warning,M)),O})()}),null),u((L)=>{var O=f.warning,M=ff.BOLD;return O!==L.e&&(L.e=Z(U,"fg",O,L.e)),M!==L.t&&(L.t=Z(U,"attributes",M,L.t)),L},{e:void 0,t:void 0}),j}}),B),D(B,x0("tmux session keys use the same file: tmux.tab.new (ctrl+t), tmux.tab.prev/next (ctrl+[/]), tmux.tab.close (ctrl+w), tmux.tab.rename (f2), tmux.tab.chooseEngine (ctrl+shift+t), tmux.detach (ctrl+q), tmux.focus (4 chords, left/down/up/right), and prefix layout keys: workspaceSplit (s), workspaceClose (x), workspaceReset (r), tasksToggle (a), opsToggle (o), terminalToggle (z). They apply when a session is (re)built.")),Z(B,"wrapMode","word"),Z(V,"wrapMode","word"),K(V,()=>`Fixed (not rebindable): ${Y.join(", ")}.`),u((j)=>{var U=f.text,L=ff.BOLD,O=f.textMuted,M=f.text,R=ff.BOLD,S=f.textMuted,a=f.textMuted,N=f.textMuted;return U!==j.e&&(j.e=Z(G,"fg",U,j.e)),L!==j.t&&(j.t=Z(G,"attributes",L,j.t)),O!==j.a&&(j.a=Z(X,"fg",O,j.a)),M!==j.o&&(j.o=Z(Q,"fg",M,j.o)),R!==j.i&&(j.i=Z(Q,"attributes",R,j.i)),S!==j.n&&(j.n=Z(H,"fg",S,j.n)),a!==j.s&&(j.s=Z(B,"fg",a,j.s)),N!==j.h&&(j.h=Z(V,"fg",N,j.h)),j},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0}),z})()}var WD=k(()=>{h();h();h();h();h();h();h();h();Wf();W8();xf();X1();yG();Oq();bG();I8()});import{TextAttributes as ay}from"@opentui/core";function $y(f){return f.split(/[-_]+/).filter((J)=>J.length>0).map((J)=>J.charAt(0).toUpperCase()+J.slice(1)).join(" ")}function Tz(f){let J=vf(),Y=i0(),z=z1(),{theme:G}=Y,[X,q]=r("sidebar"),[Q,H]=r("general"),[B,V]=r(0),[j,U]=r(0),[L,O]=r(""),[M,R]=r(""),[S,a]=r(""),N=U0(()=>Y.all().slice().sort()),[,g]=r(Math.max(0,N().findIndex((v)=>v===Y.selected))),C=JD(f.orchestrator),[y,_]=r(null),[z0,t]=r(null),[Y0,T]=r(null),Q0=!1;Gf(()=>{if(Q()!=="accounts"||Q0)return;Q0=!0,LZ().then(_),MZ().then(t),FZ().then(T)});function p(){return GD(Q(),{themeNames:N(),focusAccentSlots:yz,engineList:u0(),hasDaemon:C})}function D0(){return p().length}function g0(){return Lz(f.kv.get(oJ,Dz))}function $(v){if(Y.selected===v)return;if(!Y.set(v))return;f.kv.set("activeTheme",v),f.onVisualPrefsChange?.()}function E(){return ej()}function f0(v){if(ej()===v)return;wX(v),f.kv.set(IQ,v),f.onVisualPrefsChange?.()}function I(v){if(Y.transparentBackground===v)return;Y.setTransparentBackground(v),f.kv.set("transparentBackground",v),f.onVisualPrefsChange?.()}function G0(){I(!Y.transparentBackground)}function x(v){if(Y.focusAccent===v)return;Y.setFocusAccent(v),f.kv.set("focusAccent",v),f.onVisualPrefsChange?.()}function c(v){f.kv.set(oJ,v)}function Z0(){return f.kv.get("notifications.toast.enabled",!0)!==!1}function V0(){return f.kv.get("notifications.sound.enabled",!0)!==!1}function H0(){f.kv.set("notifications.toast.enabled",!Z0())}function y0(){f.kv.set("notifications.sound.enabled",!V0())}function w0(){return f.kv.get(bq,!0)!==!1}function T0(){f.kv.set(bq,!w0())}function r0(){return f.kv.get("experimental.remoteProjects",!1)===!0}function P(){f.kv.set("experimental.remoteProjects",!r0())}function M0(){return f.kv.get(jz,!1)===!0}function J0(){f.kv.set(jz,!M0())}function F0(){return f.kv.get(Wz,!1)===!0}function a0(){f.kv.set(Wz,!F0())}function p0(){let v=f.kv.get("customEngineIds",[]);return Array.isArray(v)?v.filter((A0)=>typeof A0==="string"&&A0.trim().length>0):[]}function u0(){return[...cf,...p0()]}function _0(v){let A0=f.kv.get(BJ(v),"");return typeof A0==="string"?A0.trim():""}function n(v){return _0(v)||HX(v).join(" ")}function q0(v){return H1(v)&&_0(v).length===0&&!o0(v)}function b0(v){let A0=f.kv.get(jJ(v),"");return typeof A0==="string"?A0.trim():""}function o0(v){return b0(v).length>0}function l0(v){return b0(v)||SB[v]||v}let[$0,t0]=r(kf("lastSelectedVendor")??Sf);function Rf(v){return $0()===v}function gf(v){af("lastSelectedVendor",v),f.kv.set("lastSelectedVendor",v),t0(v)}async function o(v){let A0=await zY.show(J,n(v),{dialogTitle:`${l0(v)} launch command`,fieldLabel:"command",submitLabel:"save",allowEmpty:!0});if(A0===void 0)return;f.kv.set(BJ(v),A0.trim())}async function e(v){let A0=await zY.show(J,l0(v),{dialogTitle:`${l0(v)} display name (blank = default)`,fieldLabel:"name",submitLabel:"save",allowEmpty:!0});if(A0===void 0)return;f.kv.set(jJ(v),A0.trim())}function B0(v){if(f.kv.set(BJ(v),""),f.kv.set(jJ(v),""),!H1(v))f.kv.set("customEngineIds",p0().filter((A0)=>A0!==v)),U((A0)=>Math.max(0,Math.min(A0,u0().length)))}async function C0(){let v=await zY.show(J,"",{dialogTitle:"Add engine",fieldLabel:"id",submitLabel:"next",placeholder:"lowercase slug, e.g. aider"});if(v===void 0)return;let A0=v.trim().toLowerCase();if(!A0||H1(A0)||p0().includes(A0))return;let Bf=await zY.show(J,"",{dialogTitle:`Add engine \xB7 ${A0}`,fieldLabel:"command",submitLabel:"next",placeholder:"e.g. aider --model sonnet"});if(Bf===void 0)return;let Of=await zY.show(J,A0,{dialogTitle:`Add engine \xB7 ${A0}`,fieldLabel:"name",submitLabel:"add",allowEmpty:!0});if(f.kv.set("customEngineIds",[...p0(),A0]),Bf.trim())f.kv.set(BJ(A0),Bf.trim());let Qf=Of?.trim()??"";f.kv.set(jJ(A0),Qf&&Qf!==A0?Qf:$y(A0))}function A(){if(Q()!=="engines"||X()!=="body")return null;let v=PQ(p(),j());return v?.kind==="engine"?v.vendor:null}function P0(){return pz(f.kv.get(_J,Xq))}function K0(){let v=Uz.indexOf(P0()),A0=Uz[(v+1)%Uz.length];if(A0)f.kv.set(_J,A0)}function E0(){let v=f.kv.get(RY,"");return typeof v==="string"?v:""}async function W0(){let v=await zY.show(J,E0(),{dialogTitle:"Custom editor command (use {file} for the path)",fieldLabel:"command",submitLabel:"save",allowEmpty:!0});if(v===void 0)return;let A0=v.trim();if(f.kv.set(RY,A0),A0)f.kv.set(_J,"custom")}async function L0(){a("submitting...");try{let v=MG({title:L(),body:M()});a(`sent: ${v.url}`),O(""),R(""),U(0)}catch(v){a(`error: ${v instanceof Error?v.message:String(v)}`)}}let R0=()=>Q()==="feedback"&&X()==="body";function Jf(v){let A0=j()+v;if(A0<0||A0>2){q("sidebar");return}U(A0)}function Yf(){if(X()!=="sidebar"||D0()===0)return;if(q("body"),U(0),Q()==="general")g(0)}function n0(v){if(X()==="sidebar"){let Of=(B()+v+Iz.length)%Iz.length;V(Of);let Qf=Iz[Of];if(Qf)H(Qf.id),U(0);return}let A0=D0();if(A0===0)return;let Bf=(j()+v+A0)%A0;if(U(Bf),PQ(p(),Bf)?.kind==="theme")g(Bf)}function yf(v){H(v),V(Iz.findIndex((A0)=>A0.id===v)),U(0),q("sidebar")}let k0={theme:(v)=>$(v.name),language:(v)=>f0(v.locale),transparent:()=>G0(),focusAccent:(v)=>x(v.slot),toast:()=>H0(),sound:()=>y0(),zenKeepTasks:()=>T0(),surface:(v)=>c(v.surface),editorKind:()=>K0(),editorCustom:()=>void W0(),engine:(v)=>void o(v.vendor),engineAdd:()=>void C0(),feedbackTitle:()=>U(0),feedbackBody:()=>U(1),feedbackSend:()=>void L0(),devReset:()=>void k8(J,f.kv,z),devRestartDaemon:()=>void N8(J,f.orchestrator,z),devRemoteProjects:()=>P(),devAutoStatus:()=>J0(),devDispatcher:()=>a0()};function wf(){let v=PQ(p(),j());if(!v)return;k0[v.kind](v)}return Uf(()=>({enabled:(!f.standalone||J.stack.length===0)&&!R0(),bindings:[{key:"down",cmd:()=>n0(1)},{key:"up",cmd:()=>n0(-1)},{key:"j",cmd:()=>n0(1)},{key:"k",cmd:()=>n0(-1)},{key:"tab",cmd:()=>n0(1)},{key:"right",cmd:Yf},{key:"l",cmd:Yf},{key:"left",cmd:()=>q("sidebar")},{key:"h",cmd:()=>q("sidebar")},{key:"return",cmd:()=>{if(X()==="sidebar"){Yf();return}wf()}},{key:"t",cmd:G0},{key:"r",cmd:()=>{let v=A();if(v)e(v)}},{key:"x",cmd:()=>{let v=A();if(v)B0(v)}},{key:"d",cmd:()=>{let v=A();if(v)gf(v)}}]})),Uf(()=>({enabled:R0(),bindings:[{key:"tab",cmd:()=>Jf(1)},{key:"shift+tab",cmd:()=>Jf(-1)}]})),Uf(()=>({enabled:R0()&&j()===2,bindings:[{key:"return",cmd:()=>void L0()}]})),(()=>{var v=W("box"),A0=W("box"),Bf=W("text"),Of=W("text"),Qf=W("box"),d=W("box"),s=W("box"),S0=W("text");return D(v,A0),D(v,Qf),D(v,s),Z(v,"paddingLeft",2),Z(v,"paddingRight",2),Z(v,"paddingBottom",1),Z(v,"gap",1),D(A0,Bf),D(A0,Of),Z(A0,"flexDirection","row"),Z(A0,"justifyContent","space-between"),K(Bf,()=>F("settings.title")),Z(Of,"onMouseUp",()=>f.onClose()),K(Of,()=>F("settings.esc")),D(Qf,d),Z(Qf,"flexDirection","row"),Z(Qf,"gap",2),K(Qf,b(XD,{level:X,cursor:B,switchSection:yf}),d),Z(d,"flexGrow",1),Z(d,"flexShrink",1),Z(d,"flexDirection","column"),Z(d,"gap",1),K(d,b(X0,{get when(){return Q()==="general"},get children(){return b(ZD,{level:X,bodyRow:j,setLevel:q,setBodyRow:U,themeNames:N,setThemeCursor:g,selectTheme:$,currentLocale:E,selectLanguage:f0,toggleTransparent:G0,selectFocusAccent:x,toastEnabled:Z0,soundEnabled:V0,toggleToast:H0,toggleSound:y0,zenKeepsTasks:w0,toggleZenKeepsTasks:T0,settingsSurface:g0,selectSurface:c,editorKind:P0,cycleEditorKind:K0,editorCustomCommand:E0,editEditorCustom:()=>void W0()})}}),null),K(d,b(X0,{get when(){return Q()==="engines"},get children(){return b(qD,{level:X,bodyRow:j,setLevel:q,setBodyRow:U,get vendors(){return u0()},isCustom:(N0)=>!H1(N0),displayName:l0,commandText:n,isDefault:q0,isDefaultEngine:Rf,editEngine:(N0)=>void o(N0),renameEngine:(N0)=>void e(N0),resetEngine:B0,onAddEngine:()=>void C0()})}}),null),K(d,b(X0,{get when(){return Q()==="accounts"},get children(){return b(QD,{claudeStatus:y,codexStatus:z0,copilotStatus:Y0})}}),null),K(d,b(X0,{get when(){return Q()==="keys"},get children(){return b(jD,{})}}),null),K(d,b(X0,{get when(){return Q()==="feedback"},get children(){return b(HD,{level:X,bodyRow:j,setLevel:q,setBodyRow:U,title:L,setTitle:(N0)=>{O(N0),a("")},body:M,setBody:(N0)=>{R(N0),a("")},status:S,onTitleSubmit:()=>U(1),onBodySubmit:()=>void L0(),submit:()=>void L0()})}}),null),K(d,b(X0,{get when(){return Q()==="dev"},get children(){return b(BD,{level:X,bodyRow:j,setLevel:q,setBodyRow:U,hasDaemon:C,confirmReset:()=>void k8(J,f.kv,z),confirmRestartDaemon:()=>void N8(J,f.orchestrator,z),remoteProjectsEnabled:r0,toggleRemoteProjects:P,autoStatusEnabled:M0,toggleAutoStatus:J0,dispatcherEnabled:F0,toggleDispatcher:a0})}}),null),D(s,S0),Z(s,"paddingTop",0),K(S0,(()=>{var N0=I0(()=>!!R0());return()=>N0()?F("settings.nav.feedback"):F("settings.nav.default")})()),u((N0)=>{var q1=ay.BOLD,K1=G.text,tf=G.textMuted,m1=G.textMuted;return q1!==N0.e&&(N0.e=Z(Bf,"attributes",q1,N0.e)),K1!==N0.t&&(N0.t=Z(Bf,"fg",K1,N0.t)),tf!==N0.a&&(N0.a=Z(Of,"fg",tf,N0.a)),m1!==N0.o&&(N0.o=Z(S0,"fg",m1,N0.o)),N0},{e:void 0,t:void 0,a:void 0,o:void 0}),v})()}var T8=k(()=>{h();h();h();h();h();h();h();h();Wf();tY();x1();YQ();XX();Yq();Af();nB();I1();U1();xf();X1();Zq();S1();U8();v1();R8();zD();I8();WD();Tz.show=(f,J,Y)=>{let z=!1;return new Promise((G)=>{f.replace(()=>b(Tz,{kv:J,orchestrator:Y,onVisualPrefsChange:()=>{z=!0},onClose:()=>G({visualPrefsChanged:z})}),()=>G({visualPrefsChanged:z}))})}});import{TextAttributes as ry}from"@opentui/core";function KD(){let{theme:f}=i0(),J=TJ(),Y=bQ(),z=()=>Y.toasts().slice(-VD),G=()=>Math.max(0,J().width-py-_y),X=()=>Math.max(0,J().height-oy-VD-1);return b(X0,{get when(){return Y.toasts().length>0},get children(){var q=W("box");return Z(q,"position","absolute"),Z(q,"zIndex",2500),Z(q,"width",40),Z(q,"flexDirection","column"),Z(q,"gap",0),K(q,b(Zf,{get each(){return z()},children:(Q)=>{let H=()=>Q.kind==="needs_input"?f.warning:Q.kind==="error"?f.error:f.success,B=()=>f.selectedListItemText,V=()=>Q.kind==="needs_input"?"?":Q.kind==="error"?"\u2715":"\u2713";return(()=>{var j=W("box"),U=W("text"),L=W("text");return D(j,U),D(j,L),Z(j,"flexDirection","row"),Z(j,"gap",1),Z(j,"paddingLeft",1),Z(j,"paddingRight",1),Z(j,"onMouseUp",()=>Y.dismiss(Q.id)),Z(U,"wrapMode","none"),K(U,V),Z(L,"wrapMode","none"),K(L,()=>Q.title),u((O)=>{var M=H(),R=B(),S=ry.BOLD,a=B();return M!==O.e&&(O.e=Z(j,"backgroundColor",M,O.e)),R!==O.t&&(O.t=Z(U,"fg",R,O.t)),S!==O.a&&(O.a=Z(U,"attributes",S,O.a)),a!==O.o&&(O.o=Z(L,"fg",a,O.o)),O},{e:void 0,t:void 0,a:void 0,o:void 0}),j})()}})),u((Q)=>{var H=G(),B=X();return H!==Q.e&&(Q.e=Z(q,"left",H,Q.e)),B!==Q.t&&(Q.t=Z(q,"top",B,Q.t)),Q},{e:void 0,t:void 0}),q}})}var VD=4,py=40,_y=2,oy=2;var UD=k(()=>{h();h();h();h();h();h();h();Wf();SQ();xf()});import{TextAttributes as sy}from"@opentui/core";function ty(f,J){let Y=f?`v${f}`:F("update.skew.olderBuild");return F("update.skew.hint",{daemon:Y,clientVersion:J})}function DD(f){let{theme:J}=i0(),Y=()=>Math.max(4,f.width()-2);return b(X0,{get when(){return f.stale()},get children(){var z=W("box"),G=W("text"),X=W("box"),q=W("text"),Q=W("box"),H=W("text");return D(z,G),D(z,X),D(z,Q),Z(z,"flexDirection","column"),Z(z,"flexShrink",0),Z(z,"paddingLeft",1),Z(z,"paddingRight",1),Z(z,"paddingBottom",1),Z(G,"wrapMode","none"),K(G,()=>"\u2594".repeat(Y())),D(X,q),Z(X,"flexDirection","row"),Z(X,"gap",1),Z(q,"wrapMode","none"),K(q,()=>F("update.skew.title")),D(Q,H),Z(Q,"flexDirection","row"),Z(Q,"gap",1),Z(H,"wrapMode","word"),K(H,()=>ty(f.daemonVersion(),f.clientVersion)),u((B)=>{var{warning:V,warning:j}=J,U=sy.BOLD,L=J.text;return V!==B.e&&(B.e=Z(G,"fg",V,B.e)),j!==B.t&&(B.t=Z(q,"fg",j,B.t)),U!==B.a&&(B.a=Z(q,"attributes",U,B.a)),L!==B.o&&(B.o=Z(H,"fg",L,B.o)),B},{e:void 0,t:void 0,a:void 0,o:void 0}),z}})}var LD=k(()=>{h();h();h();h();h();h();Wf();xf();X1()});function MD(f,J){return f.find((Y)=>Y.id!==J&&!Y.archived)}async function ey(f){let J=f.tasks.find((X)=>X.id===f.taskId);if(!J)return null;let Y=!J.archived;try{await f.orch.setArchived(f.taskId,Y)}catch(X){return f.logger.error(`${f.logPrefix} archive failed:`,X),null}if(!Y)return{archived:Y};let z=Lf(f.taskId),G=MD(f.tasks,f.taskId);if(await bJ(z,G?Lf(G.id):void 0).catch((X)=>{f.logger.error(`${f.logPrefix} switch-client failed:`,X)}),f.updateActiveTask)await f.orch.setActiveTask(G?.id??null).catch(()=>{});return await l1(z).catch((X)=>{f.logger.error(`${f.logPrefix} kill tmux session failed:`,X)}),{archived:Y,nextTask:G}}async function fb(f){let J=MD(f.tasks,f.taskId),Y=Lf(f.taskId);if(f.switchBeforeKill)await bJ(Y,J?Lf(J.id):void 0).catch((z)=>{f.logger.error(`${f.logPrefix} switch-client failed:`,z)});if(f.updateActiveTask)await f.orch?.setActiveTask(J?.id??null).catch(()=>{});return await l1(Y).catch((z)=>{f.logger.error(`${f.logPrefix} kill tmux session failed:`,z)}),{nextTask:J}}async function FD(f,J){if(!f.orch)return;let Y=f.tasks().find((G)=>G.id===J);if(!Y)return;if(!Y.archived){if(!await f.confirm({title:`Archive "${Y.title}"?`,body:"Moves it to Archives and stops its running session. The worktree, branch, and chat history stay \u2014 unarchive to bring it back.",cancelLabel:"cancel",confirmLabel:"archive"}))return}if(!await ey({orch:f.orch,tasks:f.tasks(),taskId:J,logger:f.logger,logPrefix:f.logPrefix,updateActiveTask:f.updateActiveTask}))return;await f.reload?.()}async function OD(f,J){if(!f.orch)return;let Y=f.tasks().find((q)=>q.id===J);if(!Y)return;if(Y.kind==="main"){if(!await f.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 f.orch.forgetProject(Y.repo)}catch(Q){f.logger.error(`${f.logPrefix} forget project failed:`,Q),f.notifyError?.(`Couldn't remove: ${Q instanceof Error?Q.message:String(Q)}`);return}await f.reload?.();return}if(!await f.confirm({title:`Delete "${Y.title}"?`,body:"Removes the task entry and its worktree. The tmux session (if any) is killed.",cancelLabel:"cancel",confirmLabel:"delete"}))return;let G=!1;try{await f.orch.deleteTask(J),G=!0}catch(q){if((q instanceof Error?q.message:String(q)).includes(aH)){if(await f.confirm({title:`"${Y.title}" has uncommitted changes`,body:"Its worktree has uncommitted or untracked work that will be permanently deleted. Force delete anyway?",cancelLabel:"cancel",confirmLabel:"force delete"}))try{await f.orch.deleteTask(J,{force:!0}),G=!0}catch(B){f.logger.error(`${f.logPrefix} force delete failed:`,B),f.notifyError?.(`Couldn't delete: ${B instanceof Error?B.message:String(B)}`)}}else f.logger.error(`${f.logPrefix} delete failed:`,q),f.notifyError?.(`Couldn't delete: ${q instanceof Error?q.message:String(q)}`)}if(!G)return;let{nextTask:X}=await fb({orch:f.orch,tasks:f.tasks(),taskId:J,logger:f.logger,logPrefix:f.logPrefix,switchBeforeKill:f.switchBeforeKill,updateActiveTask:f.updateActiveTask});await f.reload?.(),f.onTaskDeleted?.(J,X)}async function AD(f,J){let Y=f.tasks().find((G)=>G.id===J);if(!Y)return;let z=await f.promptText(Y.title);if(!z||!f.orch)return;try{await f.orch.setTitle(J,z)}catch(G){f.logger.error(`${f.logPrefix} task.rename failed:`,G),f.notifyError?.(`Couldn't rename task: ${G instanceof Error?G.message:String(G)}`);return}await f.reload?.()}async function gD(f,J){let Y=f.tasks().find((G)=>G.id===J);if(!Y||Y.kind==="main")return;let z=await f.promptText(Y.branch,{dialogTitle:"Rename branch",fieldLabel:"branch"});if(!z||!f.orch)return;try{await f.orch.setBranch(J,z)}catch(G){f.logger.error(`${f.logPrefix} task.setBranch failed:`,G),f.notifyError?.(`Couldn't rename branch: ${G instanceof Error?G.message:String(G)}`);return}await f.reload?.()}async function RD(f,J){let Y=f.tasks().find((X)=>X.id===J);if(!Y||!f.orch)return;let z=await iJ(),G=qY(z,Y.vendor??Sf);try{await f.orch.setVendor(J,G)}catch(X){f.logger.error(`${f.logPrefix} task.setVendor failed:`,X),f.notifyError?.(`Couldn't switch engine: ${X instanceof Error?X.message:String(X)}`);return}f.notifyInfo?.(`Engine \u2192 ${Vz(G)} (applies on reopen)`),await f.reload?.()}async function CD(f){let J=O1(),Y=f.cursorRepo()??J[0]??process.cwd();if(f.openCreateSurface&&await f.openCreateSurface(Y))return;let z=f.lastVendor()??Sf,G=await iJ();if(G.length===0)f.notifyInfo?.("No engine CLI detected \u2014 install claude or codex, or add one in Settings \u2192 Engines");let X=f.orch,q=await f.promptNewTask(Y,J,{defaultVendor:z,availableVendors:G,discoverAdoptable:X?(H)=>X.discoverAdoptableWorktrees(H):void 0});if(!q)return;if(f.rememberVendor(q.vendor),vJ(q.repo),f.onRepoSaved?.(),!X){f.logger.error(`${f.logPrefix} no daemon; cannot create task`);return}f.notifyInfo?.("Creating task\u2026");let Q;try{if(q.mode==="adopt")for(let H of q.adopt)Q=(await X.adoptWorktree({repo:q.repo,worktreePath:H.worktreePath,branch:H.branch,vendor:q.vendor})).id;else Q=(await X.createTask({repo:q.repo,baseRef:q.baseRef,vendor:q.vendor})).id}catch(H){f.logger.error(`${f.logPrefix} task.create/adopt failed:`,H),f.notifyError?.(`Couldn't create task: ${H instanceof Error?H.message:String(H)}`);return}if(await f.reload?.(),Q)f.selectTask?.(Q),await f.enterTask?.(Q)}var kD=k(()=>{tY();x1();pH();Af();I1();U1();Y1()});import{spawn as Jb}from"child_process";import{existsSync as Yb}from"fs";import{basename as zb,delimiter as Gb,isAbsolute as Xb,join as Zb}from"path";function u8(f,J,Y){if(Xb(f))return Y(f);let z=J.PATH??"";for(let G of z.split(Gb)){if(!G)continue;if(Y(Zb(G,f)))return!0}return!1}function Hb(f){let J=zb(f);if(J==="code")return"VS Code";if(J==="cursor")return"Cursor";if(J==="windsurf")return"Windsurf";if(J==="zed")return"Zed";return J||f}function ND(f={}){let J=f.env??process.env,Y=f.platform??process.platform,z=f.exists??Yb,G=J.KOBE_OPEN_EDITOR?.trim();if(G)return{id:"env",label:Hb(G),command:G,args:[]};for(let X of qb)if(u8(X.command,J,z))return{id:X.id,label:X.label,command:X.command,args:[]};if(Y==="darwin"&&u8("open",J,z)){for(let X of Qb)if(X.paths.some((q)=>z(q)))return{id:X.id,label:X.label,command:"open",args:["-a",X.appName]};return{id:"mac-open",label:"Finder",command:"open",args:[]}}if(Y==="linux"&&u8("xdg-open",J,z))return{id:"xdg-open",label:"Open",command:"xdg-open",args:[]};return null}function Bb(f,J){return[J.command,[...J.args,f]]}function yD(f,J,Y={}){if(!f)return!1;let z=Y.spawn??Jb,[G,X]=Bb(f,J);try{let q=z(G,X,{detached:!0,stdio:"ignore"});if(q.pid===void 0)return!1;return q.unref(),!0}catch{return!1}}var qb,Qb;var bD=k(()=>{qb=[{id:"code",label:"VS Code",command:"code"},{id:"cursor",label:"Cursor",command:"cursor"},{id:"windsurf",label:"Windsurf",command:"windsurf"},{id:"zed",label:"Zed",command:"zed"}],Qb=[{id:"vscode.app",label:"VS Code",appName:"Visual Studio Code",paths:["/Applications/Visual Studio Code.app"]},{id:"cursor.app",label:"Cursor",appName:"Cursor",paths:["/Applications/Cursor.app","/System/Applications/Cursor.app"]},{id:"windsurf.app",label:"Windsurf",appName:"Windsurf",paths:["/Applications/Windsurf.app"]},{id:"zed.app",label:"Zed",appName:"Zed",paths:["/Applications/Zed.app"]}]});function vQ(f){let J=new Map;function Y(z){let G=J.get(z);if(!G){let[X,q]=r(f.initial,f.equals?{equals:f.equals}:void 0);G={read:X,write:(Q)=>q(()=>Q),inFlight:!1,nextAllowedAt:0},J.set(z,G)}return G}return{read(z){if(!z)return f.initial;return Y(z).read()},poll(z){if(!z)return;let G=Y(z);fq(G,f,(X)=>f.run(z,X),(X)=>G.write(X))},reset(){J.clear()}}}var lX=k(()=>{Wf();QX();QX()});import{stat as jb}from"fs/promises";import{join as Wb}from"path";async function Db(f){try{let J=await jb(Wb(f,".git","HEAD"));return`${J.mtimeMs}:${J.size}`}catch{return null}}async function Lb(f,J,Y=HJ){let z=await Db(f);if(z!==null){let Q=SD.get(f);if(Q&&Q.fingerprint===z)return Q.value}let G="",X=await Y("git",["symbolic-ref","--short","HEAD"],{cwd:f,env:w1(),signal:J}),q=X.status===0?X.stdout.trim():"";if(q&&q!=="HEAD")G=q;else if((await Y("git",["rev-parse","--verify","HEAD"],{cwd:f,env:w1(),signal:J})).status===0)G="(detached)";if(z!==null)SD.set(f,{fingerprint:z,value:G});return G}function TD(f){return ID.read(f)}function uD(f){ID.poll(f)}var Vb=2000,Kb=30000,Ub=1500,SD,ID;var ED=k(()=>{CY();lX();SD=new Map;ID=vQ({initial:"",timeoutMs:Vb,slowRetryMs:Kb,minIntervalMs:Ub,run:(f,J)=>Lb(f,J)})});function E8(f){let J=f.scheduleTimeout??((H,B)=>{let V=setTimeout(H,B);return()=>clearTimeout(V)}),Y=!1,z=null,G=()=>{Y=!0,z?.(),z=J(()=>{Y=!1,z=null},700)},X=()=>{Y=!1,z?.(),z=null},q=(H)=>{let B=f.getFlatIds();if(B.length===0)return;let V=f.getCursor(),j=V<0?0:V,U=Math.min(B.length-1,Math.max(0,j+H));f.setCursor(U)},Q=(H)=>{let B=f.getFlatIds();if(B.length===0)return;f.setCursor(Math.min(B.length-1,Math.max(0,H)))};return{moveDown(){X(),q(1)},moveUp(){X(),q(-1)},selectCurrent(){X();let H=f.getFlatIds(),B=f.getCursor();if(B<0||B>=H.length)return;let V=H[B];if(V!==void 0)f.onSelect(V)},pressG(){if(Y)X(),Q(0);else G()},pressShiftG(){X(),Q(f.getFlatIds().length-1)},isChordArmed(){return Y},disarmChord(){X()}}}function xD(f){let J=E8({getCursor:()=>f.cursorIndex(),setCursor:(X)=>f.setCursorIndex(X),getFlatIds:()=>f.flatTaskIds(),onSelect:(X)=>f.onSelect(X)}),Y=()=>{let X=f.flatTaskIds(),q=f.cursorIndex();if(q<0||q>=X.length)return;return X[q]},z=()=>f.searchMode?.()??!1,G=()=>f.moveMode?.()??!1;Uf(()=>({enabled:f.focused()&&!z(),bindings:mY({"sidebar.nav":(X,q)=>{let Q=(q??0)%2===0;if(G()){let H=Y();if(H===void 0)return;f.onMoveRequest?.(H,Q?1:-1);return}if(Q)J.moveDown();else J.moveUp()},"sidebar.select":()=>{if(G()){f.onMoveModeExit?.();return}J.selectCurrent()},"sidebar.goto":(X)=>{if(G())return;if(X.shift)J.pressShiftG();else J.pressG()},"sidebar.delete":()=>{if(G())return;let X=Y();if(X!==void 0)f.onDeleteRequest?.(X)},"sidebar.archive":()=>{if(G())return;let X=Y();if(X!==void 0)f.onArchiveRequest?.(X)},"sidebar.localMerge":(X)=>{if(!X.shift)return;let q=Y();if(q!==void 0)f.onLocalMergeRequest?.(q)},"sidebar.rename":()=>{if(G())return;let X=Y();if(X!==void 0)f.onRenameRequest?.(X)},"sidebar.pin":(X)=>{if(G())return;if(!X.shift)return;let q=Y();if(q!==void 0)f.onPinRequest?.(q)},"sidebar.search.enter":()=>{if(G())return;f.onSearchEnter?.()},"sidebar.sort":()=>{if(G())return;f.onSortModeToggle?.()},"sidebar.projectFilter":()=>{if(G())return;f.onProjectFilterToggle?.()}})})),Uf(()=>({enabled:f.focused()&&G(),bindings:[{key:"escape",cmd:()=>f.onMoveModeExit?.()}]})),Uf(()=>({enabled:f.focused(),bindings:mY({"sidebar.view":(X,q)=>{f.onViewSwitch?.((q??0)%2===0?-1:1)}})})),Uf(()=>({enabled:f.focused()&&z(),bindings:mY({"sidebar.search.nav":(X,q)=>{if((q??0)%2===0)J.moveDown();else J.moveUp()},"sidebar.search.submit":()=>{J.selectCurrent(),f.onSearchExit?.(!0)},"sidebar.search.cancel":()=>f.onSearchExit?.(!1)})}))}var wD=k(()=>{SG();S1()});function x8(f,J){if(J<=0)return"";if(f.length<=J)return f;return`${f.slice(0,Math.max(0,J-1))}\u2026`}function w8(f,J){return` ${x8(f,Math.max(0,J))}`}function Fb(f){switch(f){case"done":return F("tasks.status.done");case"in_review":return F("tasks.status.inReview");case"in_progress":return F("tasks.status.working");case"backlog":return F("tasks.status.backlog");case"canceled":return F("tasks.status.canceled");case"error":return F("tasks.status.error")}}function Ob(f){switch(f){case"rate_limited":return{text:F("tasks.activity.rateLimited"),tone:"warning"};case"permission_needed":return{text:F("tasks.activity.permissionNeeded"),tone:"warning"};case"error":return{text:F("tasks.activity.error"),tone:"error"};default:return null}}function vD(f){switch(f.prStatus?.checkState){case"passing":return{glyph:"\u2713",tone:"success"};case"failing":return{glyph:"\u2717",tone:"error"};case"pending":return{glyph:"\u2022",tone:"warning"};default:return null}}function Ab(){return F("tasks.subtitle.noTracking")}function gb(){return F("tasks.subtitle.materializing")}function Rb(f){if(f.kind==="main")return!1;return f.vendor!==void 0&&!H1(f.vendor)}function h8(f){let{task:J}=f,Y=J.kind==="main",z=Y?f.mainBranch??"":J.branch,G=Mb[J.status],X=f.activity?.state,q=X!==void 0,Q=Cb(X),H=Ob(X),B=Rb(J)&&!q,V=f.job!==void 0,j=V||!B&&(X==="running"||f.live||!q&&!Y&&J.status==="in_progress"),U=EG[f.spinnerFrame]??EG[0],L=V?"primary":B?"textMuted":H?.tone??(j?"primary":Q?.tone??G.tone),O=B?Ab():Fb(J.status),M=V?f.truncateBranch(gb(),f.subtitleBudget):H?f.truncateBranch(H.text,f.subtitleBudget):z.length>0?f.truncateBranch(z,f.subtitleBudget):f.truncateBranch(O,f.subtitleBudget),R=B?hD:Q?.glyph??G.glyph,S=B?hD:Q?.glyph??"\u2605";return{isMain:Y,titleText:Y?MJ(J.repo):J.title,subtitleText:M,loading:j,stateGlyph:j?U:R,projectGlyph:j?U:S,tone:L}}function P8(f,J){if(!f.loading)return f;let Y=EG[J()%EG.length]??"\u280B";if(Y===f.stateGlyph&&Y===f.projectGlyph)return f;return{...f,stateGlyph:Y,projectGlyph:Y}}function Cb(f){switch(f){case"rate_limited":return{glyph:"\u25F7",tone:"warning"};case"permission_needed":return{glyph:"?",tone:"warning"};case"error":return{glyph:"\u2715",tone:"error"};case"turn_complete":return{glyph:"\u2713",tone:"primary"};default:return null}}var Mb,EG,PD=100,hD="\xB7";var mD=k(()=>{X1();U1();xQ();Mb={done:{glyph:"\u2713",tone:"success"},in_review:{glyph:"\u25D0",tone:"warning"},in_progress:{glyph:"",tone:"primary"},backlog:{glyph:"\u25CB",tone:"textMuted"},canceled:{glyph:"\u2298",tone:"textMuted"},error:{glyph:"\u2715",tone:"error"}};EG=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"]});function v8(f){return cD.read(f)}function m8(f){cD.poll(f)}var kb=4000,Nb=60000,yb=1500,bb,cD;var nD=k(()=>{CY();lX();WG();lX();bb={added:0,deleted:0},cD=vQ({initial:bb,equals:IJ,timeoutMs:kb,slowRetryMs:Nb,minIntervalMs:yb,run:async(f,J)=>{let Y=await HJ("git",["status","--porcelain=v1"],{cwd:f,env:w1(),signal:J});if(Y.status!==0)throw Error("git status failed");return jG(Y.stdout)}})});import{TextAttributes as bf}from"@opentui/core";function Sb(f){switch(f){case"active":return F("tasks.view.workspace");case"archived":return F("tasks.view.archives")}}function iD(f,J=Tb){if(f.length<=J)return f;return`${f.slice(0,Math.max(0,J-1))}\u2026`}function ub(f){let J=0;for(let Y of f)J+=(Y.codePointAt(0)??0)>=4352?2:1;return J}function Eb(f,J){if(J<=0||f.length<=J)return f;return`\u2026${f.slice(f.length-Math.max(0,J-1))}`}function lD(f){let{theme:J}=i0(),Y=()=>f.focused?f.focused():!0,[z,G]=r("active"),[X,q]=r(!1),[Q,H]=r(""),[B,V]=r(null),j=()=>f.projectFilter?.()??B(),U=(n)=>{if(f.onProjectFilterChange)f.onProjectFilterChange(n);else V(n)};function L(){H(""),q(!0),f.onSearchActiveChange?.(!0)}function O(n){q(!1),H(""),f.onSearchActiveChange?.(!1)}Gf(()=>{if(!X())return;let n=z1();if(!n)return;let q0=(b0)=>{if(b0.defaultPrevented)return;if(!Y())return;if(b0.ctrl||b0.meta||b0.option)return;if(b0.name==="backspace"){H(($0)=>$0.slice(0,-1));return}let o0=b0.sequence;if(!o0||o0.length!==1)return;let l0=o0.charCodeAt(0);if(l0<32||l0===127)return;H(($0)=>$0+o0)};n.keyInput.on("keypress",q0),mf(()=>n.keyInput.off("keypress",q0))});let[M,R]=r(0),S=setInterval(()=>R((n)=>n+1),Ib);mf(()=>clearInterval(S));let[a,N]=r(0),g=setInterval(()=>N((n)=>(n+1)%EG.length),PD);mf(()=>clearInterval(g));let C=()=>f.sortMode?.()??"default",y=U0(()=>$4(f.tasks(),z())),_=U0(()=>{let n=j();if(!n)return null;let q0=o1(n);return y().find((b0)=>o1(b0.repo)===q0)??null}),z0=U0(()=>_()?.repo??null),t=U0(()=>_()?.label??"all"),Y0=U0(()=>{let n=_();return n?n.count:y().reduce((q0,b0)=>q0+b0.count,0)}),T=U0(()=>{let n=Y0();return`${n} ${n===1?F("tasks.project.taskSingular"):F("tasks.project.taskPlural")}`}),Q0=U0((n)=>_4(n,F8(f.tasks(),z(),X()?Q():"",C(),z0())),[]),p=U0(()=>O8(Q0())),D0=U0(()=>p4(Q0())),g0=U0(()=>D0().projectRows),$=U0(()=>D0().taskRows),E=U0(()=>{let n=new Map;for(let q0 of Q0())n.set(q0.flatIndex,q0);return n}),f0=U0(()=>O8(F8(f.tasks(),z(),"",C(),z0())).length),I=U0(()=>$().length>0);Gf(()=>{let n=j(),q0=y();if(n!==null&&q0.length>0&&(q0.length<=1||_()===null))U(null)});function G0(){let n=y();if(n.length<=1){U(null);return}let q0=z0(),b0=q0?o1(q0):null,o0=b0===null?-1:n.findIndex(($0)=>o1($0.repo)===b0),l0=n[o0+1];U(l0?.repo??null)}let x=()=>f.width?f.width():dD,c=U0(()=>Math.max(6,x()-9)),Z0=U0(()=>Math.max(6,x()-16)),V0=TJ(),H0=U0(()=>{let n=Math.max(2,Math.min(10,Math.floor(V0().height*0.25))),q0=Math.max(2,g0().length*2);return Math.min(n,q0)}),[y0,w0]=r(null),[T0,r0]=r(-1),P,M0,J0,F0=new Map;Gf(()=>{let n=f.width?f.width():dD,q0=J0;if(!q0)return;q0.width=n,q0.flexShrink=1,q0.minHeight=0}),Gf(k1([T0,Q0],([n])=>{let q0=E().get(n);if(!q0)return;let b0=q0.task.kind==="main"?P:M0;if(!b0)return;if(b0.viewport.height<=0)return;let o0=F0.get(n);if(!o0)return;b0.scrollChildIntoView(o0.id)})),Gf(k1(()=>[f.selectedId(),p()],([n,q0])=>{let b0=$f(T0);if(n===null){if(b0===-1&&q0.length>0)r0(0);else if(b0>=q0.length)r0(Math.max(0,q0.length-1));else if(q0.length===0)r0(-1);return}let o0=q0.indexOf(n);if(o0>=0){if(o0!==b0)r0(o0)}else if(q0.length===0)r0(-1);else if(b0<0||b0>=q0.length)r0(q0.length-1)})),Gf(k1(z,()=>{let n=p();r0(n.length>0?0:-1)},{defer:!0})),Gf(k1(z0,(n)=>r0(r4(Q0(),n)),{defer:!0})),Gf(k1([X,Q],()=>{if(!X())return;let n=p();r0(n.length>0?0:-1)}));function a0(n){let q0=z(),b0=aX.findIndex(($0)=>$0.view===q0);if(b0<0)return;let o0=(b0+n+aX.length)%aX.length,l0=aX[o0];if(l0)G(l0.view)}xD({focused:Y,cursorIndex:T0,setCursorIndex:r0,flatTaskIds:p,onSelect:(n)=>{f.onSelect(n),f.onActivate?.(n)},onDeleteRequest:(n)=>f.onDeleteRequest?.(n),onArchiveRequest:(n)=>f.onArchiveRequest?.(n),onLocalMergeRequest:(n)=>f.onLocalMergeRequest?.(n),moveMode:f.moveMode,onMoveRequest:(n,q0)=>f.onMoveRequest?.(n,q0),onMoveModeExit:()=>f.onMoveModeExit?.(),onRenameRequest:(n)=>f.onRenameRequest?.(n),onPinRequest:(n)=>f.onPinRequest?.(n),onViewSwitch:(n)=>a0(n),onSortModeToggle:()=>f.onSortModeToggle?.(),onProjectFilterToggle:()=>G0(),searchMode:X,onSearchEnter:()=>L(),onSearchExit:(n)=>O(n)});let p0=(n)=>(()=>{var q0=W("box"),b0=W("box"),o0=W("text"),l0=W("text");return D(q0,b0),Z(q0,"flexDirection","column"),Z(q0,"flexShrink",0),K(q0,b(X0,{get when(){return n.topPad},get children(){var $0=W("box"),t0=W("text");return D($0,t0),Z($0,"flexShrink",0),D(t0,x0(" ")),Z(t0,"wrapMode","none"),$0}}),b0),D(b0,o0),D(b0,l0),Z(b0,"flexDirection","row"),Z(b0,"flexShrink",0),Z(b0,"gap",1),Z(b0,"paddingLeft",1),Z(b0,"paddingRight",1),Z(o0,"wrapMode","none"),K(o0,()=>n.label),Z(l0,"wrapMode","none"),K(l0,()=>"\u2500".repeat(Math.max(2,x()-10-n.label.length-(n.suffix?.length??0)))),K(b0,b(X0,{get when(){return n.suffix},get children(){var $0=W("text");return Z($0,"wrapMode","none"),K($0,()=>n.suffix),u((t0)=>{var Rf=J.info,gf=bf.BOLD;return Rf!==t0.e&&(t0.e=Z($0,"fg",Rf,t0.e)),gf!==t0.t&&(t0.t=Z($0,"attributes",gf,t0.t)),t0},{e:void 0,t:void 0}),$0}}),null),u(($0)=>{var t0=J.textMuted,Rf=bf.BOLD,gf=J.border;return t0!==$0.e&&($0.e=Z(o0,"fg",t0,$0.e)),Rf!==$0.t&&($0.t=Z(o0,"attributes",Rf,$0.t)),gf!==$0.a&&($0.a=Z(l0,"fg",gf,$0.a)),$0},{e:void 0,t:void 0,a:void 0}),q0})(),u0=(n)=>{switch(n){case"success":return J.success;case"warning":return J.warning;case"primary":return J.primary;case"error":return J.error;default:return J.textMuted}},_0=(n)=>{let q0=n.row.task,b0=n.row.flatIndex,o0=()=>b0===T0(),l0=()=>q0.id===f.selectedId(),$0=U0(()=>{let A=f.chatRunState?.();if(!A)return!1;let P0=`${q0.id}:`;for(let[K0,E0]of A)if(E0==="running"&&K0.startsWith(P0))return!0;return!1}),t0=U0(()=>{let A=_q(f.worktreeChanges?.(),q0.worktreePath);if(A)return A;if(M(),!q0.archived)m8(q0.worktreePath);return v8(q0.worktreePath)},void 0,{equals:IJ}),Rf=U0(()=>{return M(),uD(q0.repo),TD(q0.repo)}),gf=U0(()=>h8({task:q0,activity:f.engineState?.().get(q0.id),job:f.taskJobs?.().get(q0.id),live:$0(),spinnerFrame:0,subtitleBudget:Z0(),truncateBranch:iD,mainBranch:Rf()})),o=U0(()=>P8(gf(),a)),e=()=>!o().loading?J.primary:u0(o().tone),B0=()=>o0()?J.focusAccent:l0()?J.primary:void 0,C0=()=>o0()||l0()?"\u258C":" ";return(()=>{var A=W("box"),P0=W("box"),K0=W("box"),E0=W("text"),W0=W("box"),L0=W("text"),R0=W("text"),Jf=W("box"),Yf=W("text"),n0=W("box"),yf=W("text");return D(A,P0),Z(A,"flexDirection","column"),Z(A,"gap",0),Z(A,"paddingBottom",0),D(P0,K0),D(P0,Jf),hY((k0)=>{F0.set(b0,k0),mf(()=>{if(F0.get(b0)===k0)F0.delete(b0)})},P0),Z(P0,"flexDirection","column"),Z(P0,"gap",0),Z(P0,"onMouseUp",()=>{if(f.onSelect(q0.id),f.activateOnClick)f.onActivate?.(q0.id)}),Z(P0,"onMouseOver",(k0)=>w0({task:q0,x:k0.x,y:k0.y})),Z(P0,"onMouseOut",()=>w0((k0)=>k0?.task.id===q0.id?null:k0)),D(K0,E0),D(K0,W0),Z(K0,"flexDirection","row"),Z(K0,"gap",0),Z(E0,"wrapMode","none"),K(E0,C0),D(W0,L0),D(W0,R0),Z(W0,"flexDirection","row"),Z(W0,"flexGrow",1),Z(W0,"paddingRight",1),Z(W0,"gap",0),Z(L0,"wrapMode","none"),K(L0,()=>o().projectGlyph),Z(R0,"wrapMode","none"),Z(R0,"flexGrow",1),K(R0,()=>w8(o().titleText,c())),D(Jf,Yf),D(Jf,n0),Z(Jf,"flexDirection","row"),Z(Jf,"gap",0),Z(Yf,"wrapMode","none"),K(Yf,C0),D(n0,yf),Z(n0,"flexDirection","row"),Z(n0,"flexGrow",1),Z(n0,"paddingLeft",2),Z(n0,"paddingRight",1),Z(n0,"gap",1),Z(yf,"wrapMode","none"),Z(yf,"flexGrow",1),K(yf,()=>o().subtitleText),K(n0,b(X0,{get when(){return t0().added>0},get children(){var k0=W("text"),wf=x0("+");return D(k0,wf),Z(k0,"wrapMode","none"),K(k0,()=>t0().added,null),u((v)=>Z(k0,"fg",J.success,v)),k0}}),null),K(n0,b(X0,{get when(){return t0().deleted>0},get children(){var k0=W("text"),wf=x0("\u2212");return D(k0,wf),Z(k0,"wrapMode","none"),K(k0,()=>t0().deleted,null),u((v)=>Z(k0,"fg",J.error,v)),k0}}),null),u((k0)=>{var wf=o0()?J.backgroundElement:void 0,v=B0(),A0=e(),Bf=bf.BOLD,Of=J.text,Qf=bf.BOLD,d=B0(),s=J.textMuted,S0=bf.DIM;return wf!==k0.e&&(k0.e=Z(P0,"backgroundColor",wf,k0.e)),v!==k0.t&&(k0.t=Z(E0,"fg",v,k0.t)),A0!==k0.a&&(k0.a=Z(L0,"fg",A0,k0.a)),Bf!==k0.o&&(k0.o=Z(L0,"attributes",Bf,k0.o)),Of!==k0.i&&(k0.i=Z(R0,"fg",Of,k0.i)),Qf!==k0.n&&(k0.n=Z(R0,"attributes",Qf,k0.n)),d!==k0.s&&(k0.s=Z(Yf,"fg",d,k0.s)),s!==k0.h&&(k0.h=Z(yf,"fg",s,k0.h)),S0!==k0.r&&(k0.r=Z(yf,"attributes",S0,k0.r)),k0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0}),A})()};return(()=>{var n=W("box"),q0=W("box"),b0=W("box"),o0=W("text"),l0=W("box"),$0=W("box"),t0=W("text"),Rf=W("scrollbox"),gf=W("box");return D(n,q0),D(n,l0),D(n,Rf),hY((o)=>{J0=o},n),Z(n,"flexGrow",1),Z(n,"minHeight",0),Z(n,"flexDirection","column"),Z(n,"paddingTop",1),Z(n,"paddingBottom",1),Z(n,"paddingLeft",0),Z(n,"paddingRight",0),D(q0,b0),Z(q0,"flexDirection","row"),Z(q0,"justifyContent","space-between"),Z(q0,"gap",1),Z(q0,"paddingBottom",1),Z(q0,"paddingLeft",1),Z(q0,"paddingRight",1),D(b0,o0),Z(b0,"flexDirection","row"),Z(b0,"gap",1),D(o0,x0("KOBE")),Z(o0,"wrapMode","none"),K(b0,b(X0,{get when(){return f.headerStatus?.()},children:(o)=>(()=>{var e=W("text");return Z(e,"wrapMode","none"),Z(e,"onMouseUp",()=>f.onHeaderStatusClick?.()),K(e,()=>o().label),u((B0)=>{var C0=o().emphasize?J.warning:J.textMuted,A=o().emphasize?bf.BOLD:bf.DIM;return C0!==B0.e&&(B0.e=Z(e,"fg",C0,B0.e)),A!==B0.t&&(B0.t=Z(e,"attributes",A,B0.t)),B0},{e:void 0,t:void 0}),e})()}),null),K(q0,b(X0,{get when(){return f.onAddTask},get children(){var o=W("text");return D(o,x0("[+]")),Z(o,"wrapMode","none"),Z(o,"onMouseUp",()=>f.onAddTask?.()),u((e)=>{var B0=J.primary,C0=bf.BOLD;return B0!==e.e&&(e.e=Z(o,"fg",B0,e.e)),C0!==e.t&&(e.t=Z(o,"attributes",C0,e.t)),e},{e:void 0,t:void 0}),o}}),null),K(n,b(X0,{get when(){return X()},get children(){var o=W("box"),e=W("text"),B0=W("text"),C0=W("text");return D(o,e),D(o,B0),D(o,C0),Z(o,"flexDirection","row"),Z(o,"gap",0),Z(o,"paddingBottom",1),Z(o,"paddingLeft",1),D(e,x0("/")),Z(e,"wrapMode","none"),Z(B0,"wrapMode","none"),K(B0,Q),D(C0,x0("\u2588")),Z(C0,"wrapMode","none"),K(o,b(X0,{get when(){return Q().length===0},get children(){var A=W("text"),P0=x0(" ");return D(A,P0),Z(A,"wrapMode","none"),K(A,()=>F("tasks.search.placeholder"),null),u((K0)=>Z(A,"fg",J.textMuted,K0)),A}}),null),K(o,b(X0,{get when(){return Q().length>0},get children(){var A=W("text"),P0=x0(" "),K0=x0("/");return D(A,P0),D(A,K0),Z(A,"wrapMode","none"),K(A,()=>p().length,K0),K(A,f0,null),u((E0)=>Z(A,"fg",J.textMuted,E0)),A}}),null),u((A)=>{var{info:P0,text:K0,info:E0}=J,W0=bf.BLINK;return P0!==A.e&&(A.e=Z(e,"fg",P0,A.e)),K0!==A.t&&(A.t=Z(B0,"fg",K0,A.t)),E0!==A.a&&(A.a=Z(C0,"fg",E0,A.a)),W0!==A.o&&(A.o=Z(C0,"attributes",W0,A.o)),A},{e:void 0,t:void 0,a:void 0,o:void 0}),o}}),l0),D(l0,$0),Z(l0,"flexDirection","row"),Z(l0,"justifyContent","space-between"),Z(l0,"gap",1),Z(l0,"paddingBottom",1),Z(l0,"paddingLeft",1),Z(l0,"paddingRight",1),D($0,t0),Z($0,"flexDirection","row"),Z($0,"gap",2),K($0,b(Zf,{each:aX,children:(o)=>{let e=()=>z()===o.view;return(()=>{var B0=W("text");return Z(B0,"wrapMode","none"),Z(B0,"onMouseUp",()=>G(o.view)),K(B0,()=>Sb(o.view)),u((C0)=>{var A=e()?J.primary:J.textMuted,P0=e()?bf.BOLD:void 0;return A!==C0.e&&(C0.e=Z(B0,"fg",A,C0.e)),P0!==C0.t&&(C0.t=Z(B0,"attributes",P0,C0.t)),C0},{e:void 0,t:void 0}),B0})()}}),t0),D(t0,x0("[/]")),Z(t0,"wrapMode","none"),K(l0,b(X0,{get when(){return f.sortMode},get children(){var o=W("text");return Z(o,"wrapMode","none"),Z(o,"onMouseUp",()=>f.onSortModeToggle?.()),K(o,()=>F("tasks.sort")),u((e)=>{var B0=J.textMuted,C0=bf.DIM;return B0!==e.e&&(e.e=Z(o,"fg",B0,e.e)),C0!==e.t&&(e.t=Z(o,"attributes",C0,e.t)),e},{e:void 0,t:void 0}),o}}),null),K(n,b(X0,{get when(){return g0().length>0},get children(){var o=W("box"),e=W("box"),B0=W("text"),C0=W("text"),A=W("scrollbox"),P0=W("box");return D(o,e),D(o,A),Z(o,"flexDirection","column"),Z(o,"flexShrink",0),D(e,B0),D(e,C0),Z(e,"flexDirection","row"),Z(e,"flexShrink",0),Z(e,"gap",1),Z(e,"paddingLeft",1),Z(e,"paddingRight",1),Z(e,"onMouseUp",()=>G0()),Z(B0,"wrapMode","none"),K(B0,()=>F("tasks.header.projects")),K(e,b(X0,{get when(){return y().length>1},get children(){var K0=W("text");return Z(K0,"wrapMode","none"),K(K0,t),u((E0)=>{var W0=z0()?J.primary:J.textMuted,L0=z0()?bf.BOLD:void 0;return W0!==E0.e&&(E0.e=Z(K0,"fg",W0,E0.e)),L0!==E0.t&&(E0.t=Z(K0,"attributes",L0,E0.t)),E0},{e:void 0,t:void 0}),K0}}),C0),Z(C0,"wrapMode","none"),K(C0,()=>"\u2500".repeat(Math.max(2,x()-10-F("tasks.header.projects").length-(y().length>1?t().length+1:0)-(y().length>1?T().length+1:0)))),K(e,b(X0,{get when(){return y().length>1},get children(){var K0=W("text");return Z(K0,"wrapMode","none"),K(K0,T),u((E0)=>{var W0=J.textMuted,L0=bf.DIM;return W0!==E0.e&&(E0.e=Z(K0,"fg",W0,E0.e)),L0!==E0.t&&(E0.t=Z(K0,"attributes",L0,E0.t)),E0},{e:void 0,t:void 0}),K0}}),null),D(A,P0),hY((K0)=>{P=K0},A),Z(A,"flexShrink",0),Z(A,"flexGrow",0),Z(A,"minHeight",0),Z(A,"stickyScroll",!1),Z(A,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),Z(P0,"flexShrink",0),Z(P0,"gap",0),Z(P0,"paddingRight",1),K(P0,b(Zf,{get each(){return g0()},children:(K0)=>b(_0,{row:K0})})),u((K0)=>{var E0=J.textMuted,W0=bf.BOLD,L0=J.border,R0=H0();return E0!==K0.e&&(K0.e=Z(B0,"fg",E0,K0.e)),W0!==K0.t&&(K0.t=Z(B0,"attributes",W0,K0.t)),L0!==K0.a&&(K0.a=Z(C0,"fg",L0,K0.a)),R0!==K0.o&&(K0.o=Z(A,"maxHeight",R0,K0.o)),K0},{e:void 0,t:void 0,a:void 0,o:void 0}),o}}),Rf),K(n,b(p0,{get label(){return F("tasks.header.tasks")},get suffix(){return I0(()=>C()==="default")()?void 0:C()},get topPad(){return g0().length>0}}),Rf),D(Rf,gf),hY((o)=>{M0=o},Rf),Z(Rf,"flexGrow",1),Z(Rf,"minHeight",0),Z(Rf,"stickyScroll",!1),Z(Rf,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),Z(gf,"flexShrink",0),Z(gf,"gap",0),Z(gf,"paddingRight",1),K(gf,b(Zf,{get each(){return $()},children:(o)=>{let{task:e,flatIndex:B0}=o,C0=()=>B0===T0(),A=()=>e.id===f.selectedId(),P0=U0(()=>{let Yf=f.chatRunState?.();if(!Yf)return!1;let n0=`${e.id}:`;for(let[yf,k0]of Yf)if(k0==="running"&&yf.startsWith(n0))return!0;return!1}),K0=U0(()=>{let Yf=_q(f.worktreeChanges?.(),e.worktreePath);if(Yf)return Yf;if(M(),!e.archived)m8(e.worktreePath);return v8(e.worktreePath)},void 0,{equals:IJ}),E0=U0(()=>h8({task:e,activity:f.engineState?.().get(e.id),job:f.taskJobs?.().get(e.id),live:P0(),spinnerFrame:0,subtitleBudget:Z0(),truncateBranch:iD,mainBranch:""})),W0=U0(()=>P8(E0(),a)),L0=()=>u0(W0().tone),R0=()=>C0()?J.focusAccent:A()?J.primary:void 0,Jf=()=>C0()||A()?"\u258C":" ";return(()=>{var Yf=W("box"),n0=W("box"),yf=W("box"),k0=W("text"),wf=W("box"),v=W("text"),A0=W("text"),Bf=W("box"),Of=W("text"),Qf=W("box"),d=W("text");return D(Yf,n0),Z(Yf,"flexDirection","column"),Z(Yf,"gap",0),Z(Yf,"paddingBottom",1),D(n0,yf),D(n0,Bf),hY((s)=>{F0.set(B0,s),mf(()=>{if(F0.get(B0)===s)F0.delete(B0)})},n0),Z(n0,"flexDirection","column"),Z(n0,"gap",0),Z(n0,"onMouseUp",()=>{if(f.onSelect(e.id),f.activateOnClick)f.onActivate?.(e.id)}),Z(n0,"onMouseOver",(s)=>w0({task:e,x:s.x,y:s.y})),Z(n0,"onMouseOut",()=>w0((s)=>s?.task.id===e.id?null:s)),D(yf,k0),D(yf,wf),Z(yf,"flexDirection","row"),Z(yf,"gap",0),Z(k0,"wrapMode","none"),K(k0,Jf),D(wf,v),D(wf,A0),Z(wf,"flexDirection","row"),Z(wf,"flexGrow",1),Z(wf,"paddingRight",1),Z(wf,"gap",0),Z(v,"wrapMode","none"),K(v,()=>W0().stateGlyph),Z(A0,"wrapMode","none"),Z(A0,"flexGrow",1),K(A0,()=>w8(W0().titleText,c())),K(wf,b(X0,{get when(){return I0(()=>!!f.moveMode?.())()&&C0()},get children(){var s=W("text");return Z(s,"wrapMode","none"),K(s,()=>F("tasks.moveChip")),u((S0)=>Z(s,"fg",J.warning,S0)),s}}),null),D(Bf,Of),D(Bf,Qf),Z(Bf,"flexDirection","row"),Z(Bf,"gap",0),Z(Of,"wrapMode","none"),K(Of,Jf),D(Qf,d),Z(Qf,"flexDirection","row"),Z(Qf,"flexGrow",1),Z(Qf,"paddingLeft",2),Z(Qf,"paddingRight",1),Z(Qf,"gap",1),Z(d,"wrapMode","none"),Z(d,"flexGrow",1),K(d,()=>W0().subtitleText),K(Qf,b(X0,{get when(){return e.pinned===!0},get children(){var s=W("text");return D(s,x0("\u25B4")),Z(s,"wrapMode","none"),u((S0)=>Z(s,"fg",J.warning,S0)),s}}),null),K(Qf,b(X0,{get when(){return vD(e)},children:(s)=>(()=>{var S0=W("text");return Z(S0,"wrapMode","none"),K(S0,()=>s().glyph),u((N0)=>Z(S0,"fg",u0(s().tone),N0)),S0})()}),null),K(Qf,b(X0,{get when(){return K0().added>0},get children(){var s=W("text"),S0=x0("+");return D(s,S0),Z(s,"wrapMode","none"),K(s,()=>K0().added,null),u((N0)=>Z(s,"fg",J.success,N0)),s}}),null),K(Qf,b(X0,{get when(){return K0().deleted>0},get children(){var s=W("text"),S0=x0("\u2212");return D(s,S0),Z(s,"wrapMode","none"),K(s,()=>K0().deleted,null),u((N0)=>Z(s,"fg",J.error,N0)),s}}),null),u((s)=>{var S0=C0()?J.backgroundElement:void 0,N0=R0(),q1=L0(),K1=bf.BOLD,tf=J.text,m1=A()||C0()?bf.BOLD:void 0,xJ=R0(),F1=J.textMuted,wJ=bf.DIM;return S0!==s.e&&(s.e=Z(n0,"backgroundColor",S0,s.e)),N0!==s.t&&(s.t=Z(k0,"fg",N0,s.t)),q1!==s.a&&(s.a=Z(v,"fg",q1,s.a)),K1!==s.o&&(s.o=Z(v,"attributes",K1,s.o)),tf!==s.i&&(s.i=Z(A0,"fg",tf,s.i)),m1!==s.n&&(s.n=Z(A0,"attributes",m1,s.n)),xJ!==s.s&&(s.s=Z(Of,"fg",xJ,s.s)),F1!==s.h&&(s.h=Z(d,"fg",F1,s.h)),wJ!==s.r&&(s.r=Z(d,"attributes",wJ,s.r)),s},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0}),Yf})()}}),null),K(gf,b(X0,{get when(){return p().length===0},get children(){var o=W("box"),e=W("text");return D(o,e),Z(o,"paddingTop",1),Z(o,"paddingLeft",1),K(e,(()=>{var B0=I0(()=>!!(X()&&Q().trim().length>0));return()=>B0()?F("tasks.empty.noMatchSearch"):I0(()=>!!z0())()?I0(()=>z()==="active")()?F("tasks.empty.noActiveProject"):F("tasks.empty.noArchivedProject"):I0(()=>z()==="active")()?F("tasks.empty.noActive"):F("tasks.empty.noArchived")})()),u((B0)=>Z(e,"fg",J.textMuted,B0)),o}}),null),K(gf,b(X0,{get when(){return I0(()=>!!(z0()&&p().length>0&&!I()))()&&!(X()&&Q().trim().length>0)},get children(){var o=W("box"),e=W("text");return D(o,e),Z(o,"paddingTop",1),Z(o,"paddingLeft",1),Z(e,"wrapMode","none"),K(e,(()=>{var B0=I0(()=>z()==="active");return()=>B0()?F("tasks.empty.noActiveProject"):F("tasks.empty.noArchivedProject")})()),u((B0)=>{var C0=J.textMuted,A=bf.DIM;return C0!==B0.e&&(B0.e=Z(e,"fg",C0,B0.e)),A!==B0.t&&(B0.t=Z(e,"attributes",A,B0.t)),B0},{e:void 0,t:void 0}),o}}),null),K(gf,b(X0,{get when(){return I0(()=>z()==="archived")()&&p().length>0},get children(){var o=W("box"),e=W("text");return D(o,e),Z(o,"paddingTop",1),Z(o,"paddingLeft",1),Z(e,"wrapMode","none"),K(e,()=>F("tasks.archiveHint")),u((B0)=>{var C0=J.textMuted,A=bf.DIM;return C0!==B0.e&&(B0.e=Z(e,"fg",C0,B0.e)),A!==B0.t&&(B0.t=Z(e,"attributes",A,B0.t)),B0},{e:void 0,t:void 0}),o}}),null),K(n,b(X0,{get when(){return f.zenActive?.()},get children(){var o=W("box"),e=W("text");return D(o,e),Z(o,"flexShrink",0),Z(o,"paddingLeft",1),Z(o,"paddingRight",1),Z(o,"paddingTop",1),D(e,x0("\u262F ZEN")),Z(e,"wrapMode","none"),u((B0)=>{var C0=J.accent,A=bf.BOLD;return C0!==B0.e&&(B0.e=Z(e,"fg",C0,B0.e)),A!==B0.t&&(B0.t=Z(e,"attributes",A,B0.t)),B0},{e:void 0,t:void 0}),o}}),null),K(n,b(X0,{get when(){return y0()},children:(o)=>{let e=U0(()=>{let W0=o().task,L0=[];if(L0.push({text:W0.kind==="main"?MJ(W0.repo):W0.title,bold:!0}),W0.branch.length>0)L0.push({text:`\u2387 ${W0.branch}`});if(W0.worktreePath.length>0)L0.push({text:W0.worktreePath,dim:!0});return L0}),B0=72,C0=U0(()=>Math.min(68,Math.max(...e().map((W0)=>ub(W0.text))))),A=U0(()=>C0()+4),P0=U0(()=>e().length+2),K0=U0(()=>Math.max(0,Math.min(o().x+2,V0().width-A()-1))),E0=U0(()=>Math.max(0,Math.min(o().y+1,V0().height-P0()-1)));return(()=>{var W0=W("box");return Z(W0,"position","absolute"),Z(W0,"zIndex",2600),Z(W0,"flexDirection","column"),Z(W0,"border",!0),Z(W0,"paddingLeft",1),Z(W0,"paddingRight",1),K(W0,b(Zf,{get each(){return e()},children:(L0)=>(()=>{var R0=W("text");return Z(R0,"wrapMode","none"),K(R0,(()=>{var Jf=I0(()=>!!L0.dim);return()=>Jf()?Eb(L0.text,C0()):x8(L0.text,C0())})()),u((Jf)=>{var Yf=L0.dim?J.textMuted:J.text,n0=L0.bold?bf.BOLD:L0.dim?bf.DIM:void 0;return Yf!==Jf.e&&(Jf.e=Z(R0,"fg",Yf,Jf.e)),n0!==Jf.t&&(Jf.t=Z(R0,"attributes",n0,Jf.t)),Jf},{e:void 0,t:void 0}),R0})()})),u((L0)=>{var R0=K0(),Jf=E0(),Yf=A(),n0=J.focusAccent,yf=J.backgroundElement;return R0!==L0.e&&(L0.e=Z(W0,"left",R0,L0.e)),Jf!==L0.t&&(L0.t=Z(W0,"top",Jf,L0.t)),Yf!==L0.a&&(L0.a=Z(W0,"width",Yf,L0.a)),n0!==L0.o&&(L0.o=Z(W0,"borderColor",n0,L0.o)),yf!==L0.i&&(L0.i=Z(W0,"backgroundColor",yf,L0.i)),L0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),W0})()}}),null),u((o)=>{var e=Y()?J.focusAccent:J.textMuted,B0=bf.BOLD,C0=J.textMuted,A=bf.DIM;return e!==o.e&&(o.e=Z(o0,"fg",e,o.e)),B0!==o.t&&(o.t=Z(o0,"attributes",B0,o.t)),C0!==o.a&&(o.a=Z(t0,"fg",C0,o.a)),A!==o.o&&(o.o=Z(t0,"attributes",A,o.o)),o},{e:void 0,t:void 0,a:void 0,o:void 0}),n})()}var dD=32,aX,Ib=2000,Tb=16;var aD=k(()=>{h();h();h();h();h();h();h();h();h();X1();h();Wf();xf();xf();ED();xQ();wD();mD();WG();nD();aX=[{view:"active"},{view:"archived"}]});var oD={};jf(oD,{startTasksPane:()=>vb,legendRowCap:()=>_D,legendCap:()=>pD});import{existsSync as $D}from"fs";import{stat as xb}from"fs/promises";import{TextAttributes as mQ}from"@opentui/core";function c8(f){return!!f&&iZ(f)}function rD(f){let J=f instanceof Error?f.message:String(f);if(/not a git repository/i.test(J))return F("tasks.toast.worktreeErrorNotGit");return F("tasks.toast.worktreeErrorGeneric",{message:J})}function hb(f){let{theme:J}=i0(),Y=vf(),z=IG(),G=bQ(),[X,q]=r(f.tasks().some((P)=>P.id===f.initialTaskId)?f.initialTaskId:f.tasks()[0]?.id??null);function Q(P){G.notify({kind:"error",taskId:X()??"",tabId:"",title:P})}function H(P){G.notify({kind:"done",taskId:X()??"",tabId:"",title:P})}let[B,V]=r(!1),[j,U]=r(z.get("activeSortMode")==="recent"?"recent":"default"),L=z.get("tasksPane.projectFilter"),[O,M]=r(typeof L==="string"&&L.length>0?L:null),R=(P)=>{M(P),z.set("tasksPane.projectFilter",P)},[S,a]=r(null),[N,g]=r(!1);{let P=process.env.TMUX_PANE;if(P){let M0=()=>{d0(["show-options","-wqv","-t",P,WY]).then(({code:F0,stdout:a0})=>{g(F0===0&&a0.trim().length>0)})};M0();let J0=setInterval(M0,1000);mf(()=>clearInterval(J0))}}let C=TJ(),y=!f.initialTaskId;Gf(()=>{let P=f.orch?.activeTaskSignal()();if(!P)return;if(!y){if(P!==f.initialTaskId)return;y=!0}q(P)}),Gf(k1(()=>f.orch?.uiPrefsSignal()(),(P)=>{if(P&&P.sortMode!==$f(j))U(P.sortMode);if(P&&P.projectFilter!==$f(O))M(P.projectFilter)})),Gf(()=>{let P=f.orch?.updateSignal()();if(P)a(P)});let _={orch:f.orch,tasks:()=>f.tasks(),confirm:async(P)=>await GY.show(Y,P.title,P.body,P.cancelLabel,P.confirmLabel)===!0,promptText:(P,M0)=>zY.show(Y,P,M0),logger:console,logPrefix:"[kobe tasks]",notifyError:Q,notifyInfo:H,reload:()=>f.reload(),switchBeforeKill:!0,updateActiveTask:!0,onTaskDeleted:(P,M0)=>{if(X()!==P)return;let J0=f.tasks();q(M0?.id??(J0.find((F0)=>!F0.archived)??J0[0])?.id??null)},promptNewTask:(P,M0,J0)=>gQ.show(Y,P,M0,J0),cursorRepo:()=>{let P=f.tasks();return(P.find((M0)=>M0.id===X())??P[0])?.repo},lastVendor:()=>kf("lastSelectedVendor"),rememberVendor:(P)=>af("lastSelectedVendor",P),openCreateSurface:async(P)=>{if(Lz(z.get(oJ,Dz))!=="chattab")return!1;let J0=await y1();if(!J0)return!1;return await dq(J0,P),!0},selectTask:(P)=>q(P),enterTask:(P)=>H0(P)};async function z0(){await CD(_)}async function t(){if(Lz(z.get(oJ,Dz))==="chattab"){let J0=await y1();if(J0){await cq(J0);return}}if(!(await Tz.show(Y,z,f.orch??void 0)).visualPrefsChanged)return;if(!z.flush())return;try{let J0=await y1();if(J0)await HG(J0)}catch(J0){console.error("[kobe tasks] failed to refresh workspace panes:",J0)}}async function Y0(){let P=await y1();if(P){await nq(P);return}uG.show(Y)}async function T(){if(!S()?.hasUpdate){H(F("tasks.toast.alreadyLatest",{version:s0}));return}let M0=await y1();if(!M0)return;await iq(M0)}async function Q0(P){await FD(_,P)}async function p(P){await OD(_,P)}async function D0(P){await AD(_,P)}async function g0(P){await gD(_,P)}async function $(P){await RD(_,P)}async function E(P){let J0=f.tasks().find((a0)=>a0.id===P)?.worktreePath;if(!J0||!$D(J0)){if(!f.orch){console.error("[kobe tasks] no daemon; cannot materialise worktree"),Q(F("tasks.toast.noDaemonWorktree"));return}try{J0=await f.orch.ensureWorktree(P)}catch(a0){console.error("[kobe tasks] task.ensureWorktree failed:",a0),Q(rD(a0));return}await f.reload()}if(!J0||!$D(J0))return;let F0=ND();if(!F0){console.error("[kobe tasks] no editor/opener found; set KOBE_OPEN_EDITOR"),Q(F("tasks.toast.noEditor"));return}if(!yD(J0,F0))console.error(`[kobe tasks] failed to open worktree with ${F0.label}`),Q(F("tasks.toast.openWorktreeFailed",{label:F0.label}))}async function f0(){if(!process.env.TMUX_PANE)return;let P=await y1();if(!P)return;let M0=await az(P);if(!M0)return;await h0(["select-pane","-t",M0])}async function I(P,M0){let J0=f.tasks().find((F0)=>F0.id===P);if(!J0||J0.kind==="main"||!f.orch)return;try{await f.orch.moveTask(P,M0)}catch(F0){console.error("[kobe tasks] task.move failed:",F0),Q(F("tasks.toast.moveTaskFailed",{message:F0 instanceof Error?F0.message:String(F0)}));return}q(P),await f.reload()}let[G0,x]=r(z.get("tasksPane.keysCollapsed",!1)===!0),c=(P)=>{x(P),z.set("tasksPane.keysCollapsed",P)};Gf(k1(()=>f.orch?.uiPrefsSignal()(),(P)=>{if(P&&P.keysCollapsed!==$f(G0))x(P.keysCollapsed)}));let[Z0,V0]=r(!1);Uf(()=>({enabled:Y.stack.length===0&&!Z0(),bindings:mY({"help.open":()=>void Y0(),"task.new":()=>void z0(),"settings.open.sidebar":()=>void t(),"tasks.update":()=>void T(),"tasks.openWorktree":()=>{let P=X();if(P)E(P)},"tasks.renameBranch":()=>{let P=X();if(P)g0(P)},"tasks.cycleEngine":()=>{let P=X();if(P)$(P)},"tasks.toggleKeys":()=>c(!G0()),"tasks.focusEngine":()=>void f0().catch((P)=>console.error("[kobe tasks] focus engine pane failed:",P))})}));async function H0(P){let M0=Lf(P),J0=f.tasks().find((n)=>n.id===P),F0=await y1();if(F0&&F0!==M0)await UX(F0);if(await Hf(M0)){let n=await Bz(M0,"@kobe_worktree")||J0?.worktreePath||"";if(c8(n)){let q0=J0?.repo?sJ(J0.repo,n,{kind:"repo-init"}):void 0;await SY({name:M0,cwd:n,command:b1(J0?.vendor),taskId:P,vendor:J0?.vendor,repo:J0?.repo,launchInit:q0})}await $q(M0),await h0(["switch-client","-t",`=${M0}`]),f.orch?.setActiveTask(P).catch(()=>{});return}let p0=J0?.worktreePath;if(!c8(p0)){if(!f.orch){console.error("[kobe tasks] no daemon; cannot materialise worktree"),Q(F("tasks.toast.noDaemonOpen"));return}try{p0=await f.orch.ensureWorktree(P)}catch(n){console.error("[kobe tasks] task.ensureWorktree failed:",n),Q(rD(n));return}await f.reload()}if(!c8(p0))return;let u0=J0?.repo?sJ(J0.repo,p0,{kind:"repo-init"}):void 0;if(!await SY({name:M0,cwd:p0,command:b1(J0?.vendor),taskId:P,vendor:J0?.vendor,repo:J0?.repo,launchInit:u0})){console.error(`[kobe tasks] failed to start session ${M0}`),Q(F("tasks.toast.sessionStartFailed"));return}await $q(M0),await h0(["switch-client","-t",`=${M0}`]),f.orch?.setActiveTask(P).catch(()=>{})}let y0=U0(()=>{let P=S();if(P?.hasUpdate)return{label:`v${P.latest} \u2191`,emphasize:!0};return{label:`v${s0}`,emphasize:!1}}),w0=()=>f.orch?.daemonStaleSignal()()??!1,T0=()=>f.orch?.daemonVersionSignal()()??null,r0=U0(()=>f.tasks().find((P)=>P.id===X())?.kind==="main");return(()=>{var P=W("box"),M0=W("box");return D(P,M0),Z(P,"flexDirection","column"),Z(P,"flexGrow",1),K(P,b(DD,{stale:w0,daemonVersion:T0,clientVersion:s0,width:()=>C().width}),M0),Z(M0,"flexGrow",1),Z(M0,"flexShrink",1),K(M0,b(lD,{get tasks(){return f.tasks},selectedId:X,onSelect:q,onActivate:(J0)=>void H0(J0),activateOnClick:!0,headerStatus:y0,onHeaderStatusClick:()=>void T(),onAddTask:()=>void z0(),zenActive:N,width:()=>C().width,get engineState(){return I0(()=>!!f.orch)()?f.orch.engineStateSignal():void 0},get taskJobs(){return I0(()=>!!f.orch)()?f.orch.taskJobsSignal():void 0},get worktreeChanges(){return f.orch?()=>{let J0=f.orch;if(!J0||J0.connectionStateSignal()()!=="online")return null;return J0.worktreeChangesSignal()()}:void 0},onRenameRequest:(J0)=>void D0(J0),onDeleteRequest:(J0)=>void p(J0),onArchiveRequest:(J0)=>void Q0(J0),onLocalMergeRequest:(J0)=>{let F0=f.tasks().find((a0)=>a0.id===J0);if(!F0||F0.kind==="main")return;q(J0),V((a0)=>!a0)},moveMode:B,onMoveRequest:(J0,F0)=>void I(J0,F0),onMoveModeExit:()=>V(!1),sortMode:j,projectFilter:O,onProjectFilterChange:R,onSortModeToggle:()=>{let J0=j()==="default"?"recent":"default";U(J0),z.set("activeSortMode",J0)},focused:()=>Y.stack.length===0,onSearchActiveChange:V0})),K(P,b(Pb,{moveMode:B,selectedIsMain:r0,collapsed:G0,onToggleCollapsed:()=>c(!G0())}),null),u((J0)=>Z(P,"backgroundColor",J.background,J0)),P})()}function pD(f){let J=j8(f);if(!J)return null;let Y=J.hint?.keys??J.keys[0];return Y&&Y.length>0?Y:null}function _D(f){let J=f.map(pD).filter((Y)=>Y!==null);return J.length>0?J.join("/"):null}function Pb(f){let{theme:J}=i0(),[Y,z]=r("Prefix");J1(()=>{d0(["show-options","-g","prefix"]).then(({code:U,stdout:L})=>{if(U!==0)return;let O=hQ(L);if(O)z(O)})});let G=()=>{B8();let U=Aq(),L=U.binds,O=[],M=U.focus.filter((S)=>S!==null).map((S)=>S.chord);if(M.length===4&&M.every((S,a)=>S===kY[a]))O.push({k:"ctrl+hjkl",label:F("tasks.hints.movePanes")});else if(M.length>0)O.push({k:M[0],label:F("tasks.hints.movePanes")});let R=(S,a)=>{let N=a.map((g)=>L[g]?.chord).filter((g)=>!!g);if(N.length>0)O.push({k:`prefix ${N.join("/")}`,label:S})};if(L["tmux.detach"])O.push({k:L["tmux.detach"].chord,label:F("tasks.hints.detach")});return R(F("tasks.hints.splits"),["tmux.layout.workspaceSplit","tmux.layout.workspaceClose","tmux.layout.workspaceReset"]),R(F("tasks.hints.panes"),["tmux.layout.tasksToggle","tmux.layout.opsToggle","tmux.layout.terminalToggle"]),O},X=()=>{B8();let U=[{ids:["help.open"],label:F("tasks.hints.fullHelp")},{ids:["task.new"],label:F("tasks.hints.newTask")},{ids:["settings.open.sidebar"],label:F("tasks.hints.settings")},{ids:["sidebar.select"],label:F("tasks.hints.open")},{ids:["tasks.focusEngine"],label:F("tasks.hints.focusEngine")},{ids:["tasks.openWorktree"],label:F("tasks.hints.openWorktree")},{ids:["sidebar.delete"],label:F("tasks.hints.delete")},{ids:["sidebar.view"],label:F("tasks.hints.views")},{ids:["sidebar.projectFilter"],label:F("tasks.hints.project")}],L=[];for(let O of U){let M=_D(O.ids);if(M===null)continue;L.push({k:M,label:O.label,dimWhenMain:O.dimWhenMain})}return L.push(...G()),L},q=()=>[{k:"j/k",label:F("tasks.hints.reorder")},{k:"enter/esc",label:F("tasks.hints.done")}],Q=()=>f.moveMode?.()?q():X(),H=18,B=()=>Math.min(H,Math.max(...Q().map((U)=>U.label.length))),V=(U)=>U.length<=B()?U:`${U.slice(0,Math.max(0,B()-1))}\u2026`,j=()=>(f.collapsed?.()??!1)&&!(f.moveMode?.()??!1);return(()=>{var U=W("box"),L=W("text");return D(U,L),Z(U,"flexShrink",0),Z(U,"flexDirection","column"),Z(U,"paddingLeft",1),Z(U,"paddingRight",1),Z(U,"paddingTop",1),Z(U,"paddingBottom",1),Z(U,"gap",0),Z(L,"wrapMode","none"),Z(L,"onMouseUp",()=>f.onToggleCollapsed?.()),K(L,(()=>{var O=I0(()=>!!j());return()=>O()?F("tasks.hints.headerFolded"):F("tasks.hints.headerUnfolded")})()),K(U,b(X0,{get when(){return!j()},get children(){return b(Zf,{get each(){return Q()},children:(O)=>{let M=()=>O.dimWhenMain===!0&&(f.selectedIsMain?.()??!1);return(()=>{var R=W("box"),S=W("box"),a=W("text"),N=x0("["),g=x0("]"),C=W("box"),y=W("text");return D(R,S),D(R,C),Z(R,"flexDirection","row"),Z(R,"gap",1),Z(R,"justifyContent","space-between"),D(S,a),Z(S,"width",10),Z(S,"flexShrink",0),D(a,N),D(a,g),Z(a,"wrapMode","none"),K(a,()=>TG(O.k,Y()),g),D(C,y),Z(C,"flexShrink",0),Z(y,"wrapMode","none"),K(y,()=>V(O.label)),u((_)=>{var z0=M()?J.textMuted:J.accent,t=M()?mQ.DIM:mQ.BOLD,Y0=B(),T=J.textMuted,Q0=M()?mQ.DIM:void 0;return z0!==_.e&&(_.e=Z(a,"fg",z0,_.e)),t!==_.t&&(_.t=Z(a,"attributes",t,_.t)),Y0!==_.a&&(_.a=Z(C,"width",Y0,_.a)),T!==_.o&&(_.o=Z(y,"fg",T,_.o)),Q0!==_.i&&(_.i=Z(y,"attributes",Q0,_.i)),_},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),R})()}})}}),null),u((O)=>{var M=J.textMuted,R=mQ.DIM;return M!==O.e&&(O.e=Z(L,"fg",M,O.e)),R!==O.t&&(O.t=Z(L,"attributes",R,O.t)),O},{e:void 0,t:void 0}),U})()}async function vb(f={}){await M1({logContext:"tasks",providers:{notifications:!0},setup:()=>mb(f)})}async function mb(f){let J=new DG({homeDir:OJ()});await J.load();let[Y,z]=r(J.list()),G=null;try{let B=await p1();if(B){let V=new W1(B);await V.init(),G=V}else dJ("tasks-boot","no daemon running \u2014 polling tasks.json (a gui owns daemon lifecycle)")}catch(B){HY("tasks-boot",B),dJ("tasks-boot","daemon subscribe failed \u2014 polling tasks.json")}let X=()=>G&&G.connectionStateSignal()()==="online"?G.tasksSignal()():Y(),q=async()=>{await J.load(),z(J.list())},Q="",H=setInterval(()=>{if(G&&G.connectionStateSignal()()==="online")return;(async()=>{let B="missing";try{let V=await xb(J.filePath);B=`${V.mtimeMs}:${V.size}`}catch{}if(B===Q)return;Q=B,await q()})().catch(()=>{})},wb);return{root:()=>[b(hb,{tasks:X,get initialTaskId(){return f.initialTaskId},orch:G,reload:q}),b(KD,{})],onDestroy:()=>{if(H)clearInterval(H);G?.dispose()}}}var wb=1500;var sD=k(()=>{h();h();h();h();h();h();h();h();Tf();zJ();X1();h();sY();L1();Wf();PY();x1();lf();ZJ();OX();zG();Af();gq();D1();g8();bG();R8();T8();UD();LD();SG();cX();SQ();xf();A8();nY();S1();kD();bD();aD();Y1();v1();C8()});var tD={};jf(tD,{startSettingsHost:()=>nb});function cb(f){let J=IG(),Y=vf(),{theme:z}=i0(),G=!1,X=!1;async function q(){if(X)return;X=!0;try{if(J.flush()&&G){let H=await y1();if(H)await HG(H)}}catch(Q){console.error("[kobe settings] failed to refresh workspace panes:",Q)}finally{process.exit(0)}}return Uf(()=>({enabled:Y.stack.length===0,bindings:[{key:"escape",cmd:q},{key:"q",cmd:q},{key:"ctrl+c",cmd:q}]})),(()=>{var Q=W("scrollbox");return Z(Q,"flexGrow",1),Z(Q,"paddingTop",1),Z(Q,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),K(Q,b(Tz,{kv:J,get orchestrator(){return f.orchestrator??void 0},standalone:!0,onVisualPrefsChange:()=>{G=!0},onClose:q})),u((H)=>Z(Q,"backgroundColor",z.background,H)),Q})()}async function nb(){await M1({setup:async()=>{let f=null;try{let J=await p1();if(J){let Y=new W1(J);await Y.init(),f=Y}else console.error("[kobe settings] no daemon running; Restart backend disabled")}catch(J){console.error("[kobe settings] daemon unavailable; Restart backend disabled:",J)}return{root:()=>b(cb,{orchestrator:f}),onDestroy:()=>{f?.dispose()}}}})}var eD=k(()=>{h();h();h();h();h();h();L1();PY();T8();cX();xf();nY();S1();Y1();v1()});var fL={};jf(fL,{startHelpHost:()=>ib});function db(){let f=vf(),{theme:J}=i0();function Y(){process.exit(0)}return Uf(()=>({enabled:f.stack.length===0,bindings:[{key:"escape",cmd:Y},{key:"q",cmd:Y},{key:"f1",cmd:Y},{key:"ctrl+c",cmd:Y}]})),(()=>{var z=W("box");return Z(z,"flexGrow",1),Z(z,"paddingTop",1),K(z,b(uG,{onClose:Y})),u((G)=>Z(z,"backgroundColor",J.background,G)),z})()}async function ib(){await M1({providers:{kv:!1,focus:!1},setup:()=>({root:()=>b(db,{})})})}var JL=k(()=>{h();h();h();h();h();g8();xf();nY();S1();v1()});var YL={};jf(YL,{startUpdateHost:()=>ob});import{spawn as lb,spawnSync as ab}from"child_process";import{TextAttributes as xG}from"@opentui/core";function $b(f){if(!f)return!1;let J=process.platform,[Y,z]=J==="darwin"?["open",[f]]:J==="win32"?["cmd",["/c","start","",f]]:["xdg-open",[f]];try{return lb(Y,z,{stdio:"ignore",detached:!0}).unref(),!0}catch{return!1}}function rb(f){return f.replace(/\r\n/g,`
226
226
  `).split(`
227
- `).map((J)=>J.trim()).filter(Boolean)}function rb(){if(!process.stdin.isTTY)return Promise.resolve();return new Promise((f)=>{let J=process.stdin,Y=()=>{J.off("data",Y),J.setRawMode?.(!1),J.pause(),f()};J.setRawMode?.(!0),J.resume(),J.once("data",Y)})}function pb(){let{theme:f}=i0(),J=Y1(),[Y,z]=r(null),[G,X]=r([]),[q,Q]=r(!0),[H,B]=r("update"),[V,j]=r(null),U=U0(()=>Y()?.latest??s0),L=U0(()=>G()[0]?.url??$Q(U())),O=U0(()=>[{id:"update",key:"U",label:F("update.actions.updateNow"),detail:hJ},{id:"release",key:"R",label:F("update.actions.openRelease"),detail:L()??F("update.releaseUrlUnavailable")},{id:"close",key:"Q",label:F("update.actions.close"),detail:F("update.actions.closeDetail")}]);f1(()=>{M()});async function M(){let N=await wG({force:!0});z(N);let g=N?.latest??s0,C=await aQ({current:s0,latest:g});X(C),Q(!1)}function R(N){let g=O().map((_)=>_.id),y=(g.indexOf(H())+N+g.length)%g.length;B(g[y]??"update")}function S(N=H()){if(N==="close")process.exit(0);if(N==="release"){j(ab(L())?F("update.statusReleaseOpened"):F("update.statusReleaseError"));return}a()}async function a(){j(F("update.statusRunningUpdater")),await new Promise((C)=>setTimeout(C,30)),J?.destroy(),process.stdout.write(`
227
+ `).map((J)=>J.trim()).filter(Boolean)}function pb(){if(!process.stdin.isTTY)return Promise.resolve();return new Promise((f)=>{let J=process.stdin,Y=()=>{J.off("data",Y),J.setRawMode?.(!1),J.pause(),f()};J.setRawMode?.(!0),J.resume(),J.once("data",Y)})}function _b(){let{theme:f}=i0(),J=z1(),[Y,z]=r(null),[G,X]=r([]),[q,Q]=r(!0),[H,B]=r("update"),[V,j]=r(null),U=U0(()=>Y()?.latest??s0),L=U0(()=>G()[0]?.url??pQ(U())),O=U0(()=>[{id:"update",key:"U",label:F("update.actions.updateNow"),detail:hJ},{id:"release",key:"R",label:F("update.actions.openRelease"),detail:L()??F("update.releaseUrlUnavailable")},{id:"close",key:"Q",label:F("update.actions.close"),detail:F("update.actions.closeDetail")}]);J1(()=>{M()});async function M(){let N=await wG({force:!0});z(N);let g=N?.latest??s0,C=await rQ({current:s0,latest:g});X(C),Q(!1)}function R(N){let g=O().map((_)=>_.id),y=(g.indexOf(H())+N+g.length)%g.length;B(g[y]??"update")}function S(N=H()){if(N==="close")process.exit(0);if(N==="release"){j($b(L())?F("update.statusReleaseOpened"):F("update.statusReleaseError"));return}a()}async function a(){j(F("update.statusRunningUpdater")),await new Promise((C)=>setTimeout(C,30)),J?.destroy(),process.stdout.write(`
228
228
  kobe ${s0} -> latest
229
229
  `),process.stdout.write(`running: ${hJ}
230
230
 
231
- `);let N=lb("sh",["-c",hJ],{stdio:"inherit"}),g=N.status??(N.error?1:0);if(N.error)process.stderr.write(`
231
+ `);let N=ab("sh",["-c",hJ],{stdio:"inherit"}),g=N.status??(N.error?1:0);if(N.error)process.stderr.write(`
232
232
  kobe update: failed to start updater: ${N.error.message}
233
233
  `);process.stdout.write(g===0?`
234
234
  ${F("update.updateComplete")}
235
235
  `:`
236
236
  ${F("update.updateFailed",{code:String(g)})}
237
- `),process.stdout.write(F("update.pressAnyKey")),await rb(),process.exit(g)}return Uf(()=>({bindings:[{key:"up",cmd:()=>R(-1)},{key:"down",cmd:()=>R(1)},{key:"k",cmd:()=>R(-1)},{key:"j",cmd:()=>R(1)},{key:"return",cmd:()=>S()},{key:"u",cmd:()=>S("update")},{key:"r",cmd:()=>S("release")},{key:"q",cmd:()=>S("close")},{key:"escape",cmd:()=>S("close")},{key:"ctrl+c",cmd:()=>S("close")}]})),(()=>{var N=W("box"),g=W("box"),C=W("text"),y=W("text"),_=W("box"),z0=W("text"),t=W("text"),Y0=x0("v"),T=W("text"),Q0=W("text"),p=x0("v"),D0=W("box"),g0=W("box"),$=W("text"),E=W("scrollbox"),f0=W("box");return D(N,g),D(N,_),D(N,D0),D(N,g0),D(N,E),Z(N,"flexDirection","column"),Z(N,"flexGrow",1),Z(N,"paddingTop",1),Z(N,"paddingLeft",2),Z(N,"paddingRight",2),D(g,C),D(g,y),Z(g,"flexDirection","row"),Z(g,"justifyContent","space-between"),Z(g,"flexShrink",0),Z(C,"wrapMode","none"),K(C,()=>F("update.pageTitle")),D(y,x0("q / esc")),Z(y,"wrapMode","none"),Z(y,"onMouseUp",()=>S("close")),D(_,z0),D(_,t),D(_,T),D(_,Q0),Z(_,"flexDirection","row"),Z(_,"gap",2),Z(_,"flexShrink",0),Z(_,"paddingTop",1),Z(z0,"wrapMode","none"),K(z0,()=>F("update.current")),D(t,Y0),Z(t,"wrapMode","none"),K(t,s0,null),Z(T,"wrapMode","none"),K(T,()=>F("update.latest")),D(Q0,p),Z(Q0,"wrapMode","none"),K(Q0,U,null),Z(D0,"flexDirection","column"),Z(D0,"flexShrink",0),Z(D0,"paddingTop",1),Z(D0,"gap",0),K(D0,b(Zf,{get each(){return O()},children:(I)=>(()=>{var G0=W("box"),x=W("box"),c=W("text"),Z0=x0("["),V0=x0("]"),H0=W("box"),y0=W("text"),w0=W("text");return D(G0,x),D(G0,H0),D(G0,w0),Z(G0,"flexDirection","row"),Z(G0,"gap",1),Z(G0,"paddingLeft",1),Z(G0,"paddingRight",1),Z(G0,"onMouseUp",()=>S(I.id)),D(x,c),Z(x,"width",4),Z(x,"flexShrink",0),D(c,Z0),D(c,V0),Z(c,"wrapMode","none"),K(c,()=>I.key,V0),D(H0,y0),Z(H0,"width",14),Z(H0,"flexShrink",0),Z(y0,"wrapMode","none"),K(y0,()=>I.label),Z(w0,"wrapMode","word"),K(w0,()=>I.detail),u((T0)=>{var r0=H()===I.id?f.primary:void 0,P=H()===I.id?f.selectedListItemText:f.accent,M0=xG.BOLD,J0=H()===I.id?f.selectedListItemText:f.text,F0=H()===I.id?f.selectedListItemText:f.textMuted;return r0!==T0.e&&(T0.e=Z(G0,"backgroundColor",r0,T0.e)),P!==T0.t&&(T0.t=Z(c,"fg",P,T0.t)),M0!==T0.a&&(T0.a=Z(c,"attributes",M0,T0.a)),J0!==T0.o&&(T0.o=Z(y0,"fg",J0,T0.o)),F0!==T0.i&&(T0.i=Z(w0,"fg",F0,T0.i)),T0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),G0})()})),K(N,b(X0,{get when(){return V()},get children(){var I=W("text");return Z(I,"wrapMode","word"),K(I,V),u((G0)=>Z(I,"fg",f.info,G0)),I}}),g0),D(g0,$),Z(g0,"flexShrink",0),Z(g0,"paddingTop",1),Z($,"wrapMode","none"),K($,()=>F("update.changesSectionHeader",{from:s0,to:U()})),D(E,f0),Z(E,"flexGrow",1),Z(E,"flexShrink",1),Z(E,"stickyScroll",!1),Z(f0,"flexDirection","column"),Z(f0,"paddingRight",1),Z(f0,"paddingBottom",1),Z(f0,"gap",0),K(f0,b(X0,{get when(){return q()},get children(){var I=W("text");return K(I,()=>F("update.loadingNotes")),u((G0)=>Z(I,"fg",f.textMuted,G0)),I}}),null),K(f0,b(X0,{get when(){return I0(()=>!q())()&&G().length===0},get children(){var I=W("text");return Z(I,"wrapMode","word"),K(I,()=>F("update.notesUnavailable")),u((G0)=>Z(I,"fg",f.textMuted,G0)),I}}),null),K(f0,b(Zf,{get each(){return G()},children:(I)=>(()=>{var G0=W("box"),x=W("text"),c=x0("v");return D(G0,x),Z(G0,"flexDirection","column"),Z(G0,"paddingBottom",1),Z(G0,"gap",0),D(x,c),Z(x,"wrapMode","none"),K(x,()=>I.version,null),K(G0,b(Zf,{get each(){return $b(I.body)},children:(Z0)=>(()=>{var V0=W("text");return Z(V0,"wrapMode","word"),K(V0,Z0),u((H0)=>Z(V0,"fg",f.textMuted,H0)),V0})()}),null),u((Z0)=>{var V0=f.text,H0=xG.BOLD;return V0!==Z0.e&&(Z0.e=Z(x,"fg",V0,Z0.e)),H0!==Z0.t&&(Z0.t=Z(x,"attributes",H0,Z0.t)),Z0},{e:void 0,t:void 0}),G0})()}),null),u((I)=>{var{background:G0,text:x}=f,c=xG.BOLD,Z0=f.textMuted,V0=f.textMuted,H0=f.text,y0=xG.BOLD,w0=f.textMuted,T0=Y()?.hasUpdate?f.warning:f.success,r0=xG.BOLD,P=f.textMuted,M0=xG.DIM,J0={trackOptions:{backgroundColor:f.background,foregroundColor:f.borderActive}};return G0!==I.e&&(I.e=Z(N,"backgroundColor",G0,I.e)),x!==I.t&&(I.t=Z(C,"fg",x,I.t)),c!==I.a&&(I.a=Z(C,"attributes",c,I.a)),Z0!==I.o&&(I.o=Z(y,"fg",Z0,I.o)),V0!==I.i&&(I.i=Z(z0,"fg",V0,I.i)),H0!==I.n&&(I.n=Z(t,"fg",H0,I.n)),y0!==I.s&&(I.s=Z(t,"attributes",y0,I.s)),w0!==I.h&&(I.h=Z(T,"fg",w0,I.h)),T0!==I.r&&(I.r=Z(Q0,"fg",T0,I.r)),r0!==I.d&&(I.d=Z(Q0,"attributes",r0,I.d)),P!==I.l&&(I.l=Z($,"fg",P,I.l)),M0!==I.u&&(I.u=Z($,"attributes",M0,I.u)),J0!==I.c&&(I.c=Z(E,"verticalScrollbarOptions",J0,I.c)),I},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0}),N})()}async function _b(){await L1({setup:()=>({root:()=>b(pb,{})})})}var JL=k(()=>{h();h();h();h();h();h();h();h();h();Wf();D1();xf();G1();nY();b1()});async function YL(f,J){if(!J)return 0;return pf(f).history.latestTranscriptMtimeForWorktree(J)}var zL=k(()=>{MY()});function ob(f){return f.trim().split(/\s+/)[0]??""}function XL(f,J,Y,z){let G=Xf(Y);if(f==="vim")return{bin:"vim",command:`vim ${G}`};if(f==="nvim")return{bin:"nvim",command:`nvim ${G}`};if(f==="nano")return{bin:"nano",command:`nano ${G}`};if(f==="emacs")return{bin:"emacs",command:`emacs ${G}`};let X=(J.trim()||(z??"").trim()).trim();if(!X)return null;let q=ob(X);if(!q)return null;let Q=X.includes(GL)?X.split(GL).join(G):`${X} ${G}`;return{bin:q,command:Q}}function sb(f,J,Y){let z=Xf(J);return["f=$(mktemp 2>/dev/null)",`if [ -n "$f" ] && git show ${Xf(`HEAD:./${Y}`)} > "$f" 2>/dev/null; then`,` ${f} -d "$f" ${z} -c 'setlocal nomodifiable' -c 'wincmd l'; r=$?`,"else",` ${f} ${z}; r=$?`,"fi",'rm -f "$f" 2>/dev/null; exit $r'].join(`
238
- `)}function tb(f,J){let Y=f.endsWith("/")?f:`${f}/`;return J.startsWith(Y)?J.slice(Y.length):null}async function eb(f){let J=_z(kf(_J)),Y=kf(kY)??"",z=(process.env.VISUAL??process.env.EDITOR??"").trim();if(J!=="auto")return XL(J,Y,f,z);if(z)return XL("custom","",f,z);let G=Xf(f);for(let X of Z7)if(await ZL(X))return{bin:X,command:`${X} ${G}`};return null}async function ZL(f){try{return await Bun.spawn(["sh","-c",`command -v ${Xf(f)} >/dev/null 2>&1`],{stdin:"ignore",stdout:"ignore",stderr:"ignore"}).exited===0}catch{return!1}}async function fS(f,J){try{return await Bun.spawn(["git","diff","--quiet","HEAD","--",J],{cwd:f,stdin:"ignore",stdout:"ignore",stderr:"ignore",env:x1()}).exited===1}catch{return!1}}async function qL(f,J,Y){let z=await eb(Y);if(!z)return!1;if(!await ZL(z.bin))return!1;let G=await JS(z,J,Y);return await HJ(f,{cwd:J,command:G,name:YS(Y)}),!0}async function JS(f,J,Y){let{bin:z,command:G}=f;if(z!=="nvim"&&z!=="vim")return G;if(G!==`${z} ${Xf(Y)}`)return G;let X=tb(J,Y);if(!X)return G;if(!await fS(J,X))return G;return sb(z,Y,X)}function YS(f){let J=f.slice(f.lastIndexOf("/")+1).trim();return J.length>0?J:"edit"}var GL="{file}";var QL=k(()=>{NY();Of();qq();Tf();qJ()});async function v8(f,J){if(!J)throw Error("git(): cwd is required");let Y=await oz(J,f),z=Y.status??-1;if(z!==0){let G=(Y.stderr??"").trim(),X=(Y.stdout??"").trim();throw Error(`git ${f.join(" ")} (cwd=${J}) exited with code ${z}: ${G||X||"(no output)"}`)}return Y.stdout??""}async function m8(f){let Y=(await v8(["ls-files","--cached","--others","--exclude-standard","--full-name"],f)).split(`
239
- `).map((G)=>G.replace(/\r$/,"")),z=new Set;for(let G of Y)if(G.length>0)z.add(G);return Array.from(z).sort()}async function c8(f){let J=await v8(["status","--porcelain","--untracked-files=all"],f),Y=jL(J),z=null;try{let G=await v8(["diff","--no-color","--numstat","HEAD"],f);z=new Map(zS(G).map((X)=>[X.path,{added:X.added,deleted:X.deleted}]))}catch{z=new Map}return Y.map((G)=>{let X=z?.get(G.path);if(X)return{...G,added:X.added,deleted:X.deleted};return G})}function zS(f){let J=f.split(`
240
- `).map((z)=>z.replace(/\r$/,"")),Y=[];for(let z of J){if(z.length===0)continue;let G=z.indexOf("\t");if(G<0)continue;let X=z.indexOf("\t",G+1);if(X<0)continue;let q=z.slice(0,G),Q=z.slice(G+1,X),H=z.slice(X+1),B=H.indexOf(" -> ");if(B>=0)H=H.slice(B+4);let V=q==="-"?null:Number.parseInt(q,10),j=Q==="-"?null:Number.parseInt(Q,10);if(H.length===0)continue;Y.push({path:H,added:Number.isNaN(V)?null:V,deleted:Number.isNaN(j)?null:j})}return Y}function HL(f){let J={name:"",path:"",isDir:!0,children:[]};for(let Y of f){if(!Y)continue;let z=Y.split("/").filter((X)=>X.length>0);if(z.length===0)continue;let G=J;for(let X=0;X<z.length;X++){let q=z[X],H=X!==z.length-1,B=G.children.find((V)=>V.name===q&&V.isDir===H);if(!B)B={name:q,path:z.slice(0,X+1).join("/"),isDir:H,children:[]},G.children.push(B);G=B}}return BL(J),J}function BL(f){f.children.sort((J,Y)=>{if(J.isDir!==Y.isDir)return J.isDir?-1:1;return J.name.localeCompare(Y.name)});for(let J of f.children)BL(J)}function jL(f){let J=f.split(`
241
- `).map((z)=>z.replace(/\r$/,"")),Y=[];for(let z of J){if(z.length<4)continue;let G=z[0],X=z[1],q=z[2];if(G===void 0||X===void 0||q!==" ")continue;let Q=z.slice(3),H;if(G==="?"&&X==="?")H="?";else{let B=X!==" "?X:G;if(B==="M"||B==="A"||B==="D"||B==="R"||B==="C"||B==="U")H=B;else continue}if(H==="R"){let B=Q.indexOf(" -> ");if(B>=0)Q=Q.slice(B+4)}if(Q.length===0)continue;if(Q.endsWith("/"))continue;Y.push({path:Q,status:H})}return Y}var n8=k(()=>{Qq()});function d8(f){Uf(()=>({enabled:f.focused(),bindings:mY({"files.nav":(J,Y)=>{if((Y??0)%2===0)f.moveDown();else f.moveUp()},"files.hierarchy":(J,Y)=>{if((Y??0)%2===0)f.collapseOrParent();else f.expandOrDescend()},"files.tab":(J,Y)=>{let z=f.currentTab(),G=aX.indexOf(z);if(G<0)return;let X=(Y??0)%2===0?-1:1,q=aX[(G+X+aX.length)%aX.length];if(q)f.setTab(q)},"files.open":()=>f.openCurrent(),"files.mention":()=>f.mentionCurrent?.(),"files.createPR":()=>f.createPR?.(),"files.openExternal":()=>f.openExternal(),"files.refresh":()=>f.refresh()})}))}var aX;var i8=k(()=>{SG();b1();aX=["all","changes"]});import{spawn as WL}from"child_process";import{existsSync as GS}from"fs";import{platform as XS}from"os";function VL(f){if(!f)return;let J=XS();if(J==="linux"){if(GS("/proc/sys/fs/binfmt_misc/WSLInterop")||process.env.WSL_DISTRO_NAME){$X("wslview",[f],()=>{let Y=WL("wslpath",["-w",f],{stdio:["ignore","pipe","ignore"]}),z="";Y.stdout?.on("data",(G)=>{z+=G.toString()}),Y.on("close",(G)=>{if(G===0)$X("explorer.exe",[z.trim()])})});return}$X("xdg-open",[f]);return}if(J==="darwin"){$X("open",[f]);return}if(J==="win32"){$X("cmd.exe",["/c","start","",f]);return}}function $X(f,J,Y){try{let z=WL(f,J,{stdio:"ignore",detached:!0});z.on("error",()=>Y?.()),z.unref()}catch{Y?.()}}var KL=()=>{};function l8(f,J,Y,z){for(let G of f.children)if(G.isDir){let X=J.has(G.path);if(z.push({kind:"dir",path:G.path,name:G.name,depth:Y,expanded:X,hasChildren:G.children.length>0}),X)l8(G,J,Y+1,z)}else z.push({kind:"file",path:G.path,name:G.name,depth:Y})}function UL(f,J){if(J<=0)return f;let Y=[...f];if(Y.length<=J)return f;return`\u2026${Y.slice(Y.length-Math.max(0,J-1)).join("")}`}function DL(f){return f.map((J)=>({kind:"status",path:J.path,status:J.status,added:J.added,deleted:J.deleted}))}function ZS(f){return`${f.kind}\x00${f.path}`}function qS(f,J){if(f.kind!==J.kind||f.path!==J.path)return!1;switch(f.kind){case"file":{let Y=J;return f.name===Y.name&&f.depth===Y.depth}case"dir":{let Y=J;return f.name===Y.name&&f.depth===Y.depth&&f.expanded===Y.expanded&&f.hasChildren===Y.hasChildren}case"status":{let Y=J;return f.status===Y.status&&f.added===Y.added&&f.deleted===Y.deleted}}}function LL(f,J){return TQ(f,J,ZS,qS)}function ML(f,J){if(f===J)return!0;if(f==null||J==null)return!1;if(f.length!==J.length)return!1;for(let Y=0;Y<f.length;Y++)if(f[Y]!==J[Y])return!1;return!0}function FL(f,J){if(f===J)return!0;if(f==null||J==null)return!1;if(f.length!==J.length)return!1;for(let Y=0;Y<f.length;Y++){let z=f[Y],G=J[Y];if(z.path!==G.path||z.status!==G.status||z.added!==G.added||z.deleted!==G.deleted)return!1}return!0}var OL=()=>{};import{watch as QS}from"fs";import{TextAttributes as rX}from"@opentui/core";function HS(f){switch(f){case"M":return"warning";case"A":return"success";case"D":return"error";case"?":return"textMuted";case"R":case"C":case"U":return"info"}}function jS(f){let J=f.toLowerCase();if(J.includes("not a git repository"))return F("files.error.notGitRepo");if(J.includes("does not exist")||J.includes("enoent"))return F("files.error.pathMissing");if(J.includes("permission denied")||J.includes("eacces"))return F("files.error.permissionDenied");if(J.includes("git: not found")||J.includes("command not found"))return F("files.error.gitNotInstalled");let Y=f.indexOf(": ");if(Y>=0&&f.startsWith("git "))return f.slice(Y+2).trim()||F("files.error.gitFailed");return f.trim()||F("files.error.gitFailed")}function WS(f){switch(f){case"all":return F("files.tabs.all");case"changes":return F("files.tabs.changes")}}function a8(f){let{theme:J}=i0(),Y=TJ(),z=()=>f.focused?f.focused():!0,[G,X]=r("all"),[q,Q]=r(0),[H,B]=r(0),[V,j]=r(null,{equals:ML}),[U,L]=r(null,{equals:FL}),[O,M]=r(null),[R,S]=r(new Set),a=0;async function N(E,f0){let I=++a;if(f0==null){j(null),L(null),M(null);return}M(null);try{if(E==="all"){let G0=await m8(f0);if(I!==a||f.worktreePath()!==f0)return;j(G0)}else if(E==="changes"){let G0=await c8(f0);if(I!==a||f.worktreePath()!==f0)return;L(G0)}}catch(G0){let x=G0 instanceof Error?G0.message:String(G0);if(I===a&&f.worktreePath()===f0)M(x)}}zf(O1(f.worktreePath,async(E)=>{j(null),L(null),M(null),Q(0),S(new Set),await N(G(),E)})),zf(O1(f.worktreePath,(E)=>{if(E==null)return;if(process.env.KOBE_FILETREE_WATCH!=="1")return;let f0=null,I=null;try{I=QS(E,{recursive:!0},(G0,x)=>{if(x==null)return;let c=x.toString();if(c===".git"||c.startsWith(".git/")||c.startsWith(".git\\"))return;if(c.startsWith("node_modules/")||c.startsWith("node_modules\\"))return;if(f0!=null)clearTimeout(f0);f0=setTimeout(()=>{f0=null,B((Z0)=>Z0+1)},500)}),I.on("error",()=>{})}catch{}mf(()=>{if(f0!=null)clearTimeout(f0);if(I!=null)I.close()})})),zf(O1([G,H],async([E,f0])=>{let I=f.worktreePath();if(I==null)return;Q(0);let x=H()>0;if(E==="all"){if(V()==null||x)await N("all",I)}else if(E==="changes"){if(U()==null||x)await N("changes",I)}}));let g=U0(()=>{let E=V();if(E==null)return null;return HL(E)}),C=U0((E)=>{let f0=[];if(G()==="all"){let I=g();if(I!=null)l8(I,R(),0,f0)}else if(G()==="changes"){let I=U();if(I!=null)f0.push(...DL(I))}return LL(E??[],f0)},[]),y=U0(()=>{let E=0,f0=0;for(let I of C()){if(I.kind!=="status")continue;if(I.added!=null)E=Math.max(E,String(I.added).length+1);if(I.deleted!=null)f0=Math.max(f0,String(I.deleted).length+1)}return{added:E,deleted:f0}}),_=U0(()=>{let E=y(),f0=(E.added>0?E.added+1:0)+(E.deleted>0?E.deleted+1:0);return Math.max(8,Y().width-6-f0)});function z0(){let E=C();if(E.length===0)return;Q(Math.min(q()+1,E.length-1))}function t(){if(C().length===0)return;Q(Math.max(q()-1,0))}function Y0(){let E=C(),f0=q(),I=E[f0];if(!I)return;if(I.kind!=="dir")return;if(!I.expanded&&I.hasChildren)S((G0)=>{let x=new Set(G0);return x.add(I.path),x});else if(I.expanded){if(f0+1<E.length)Q(f0+1)}}function T(){if(G()!=="all")return;let E=C(),f0=q(),I=E[f0];if(!I)return;if(I.kind==="dir"&&I.expanded){S((x)=>{let c=new Set(x);return c.delete(I.path),c});return}if(I.kind!=="dir"&&I.kind!=="file")return;let G0=I.depth-1;if(G0<0)return;for(let x=f0-1;x>=0;x--){let c=E[x];if(!c)continue;if(c.kind==="dir"&&c.depth===G0){Q(x);return}}}function Q0(){let E=C(),f0=q();if(f0<0||f0>=E.length)return;let I=E[f0];if(!I)return;if(I.kind==="dir"){S((G0)=>{let x=new Set(G0);if(x.has(I.path))x.delete(I.path);else x.add(I.path);return x});return}f.onOpenFile(I.path)}function p(){let E=C(),f0=q();if(f0<0||f0>=E.length)return;let I=E[f0];if(!I||I.kind==="dir")return;f.onMention?.(I.path)}function D0(){B((E)=>E+1),f.onRefresh?.()}function g0(){let E=C(),f0=q();if(f0<0||f0>=E.length)return;let I=E[f0];if(!I||I.kind==="dir")return;let G0=f.worktreePath();if(!G0)return;let x=`${G0}/${I.path}`;VL(x)}d8({focused:z,moveDown:z0,moveUp:t,setTab:(E)=>X(E),currentTab:G,openCurrent:Q0,mentionCurrent:p,createPR:f.onCreatePR,openExternal:g0,refresh:D0,expandOrDescend:Y0,collapseOrParent:T});let $;return zf(O1([q,C],([E,f0])=>{if(!$)return;if(f0.length===0)return;let I=$.scrollTop,G0=$.viewport.height;if(G0<=0)return;if(E<I)$.scrollTo({x:0,y:E});else if(E>=I+G0)$.scrollTo({x:0,y:E-G0+1})})),(()=>{var E=W("box"),f0=W("box"),I=W("box"),G0=W("scrollbox");return D(E,f0),D(E,G0),Z(E,"flexDirection","column"),Z(E,"flexGrow",1),Z(E,"paddingTop",1),Z(E,"paddingBottom",1),Z(E,"paddingLeft",0),Z(E,"paddingRight",0),K(E,b(X0,{get when(){return f.onZenToggle||f.onCreatePR},get children(){var x=W("box");return Z(x,"flexDirection","row"),Z(x,"justifyContent","flex-end"),Z(x,"gap",2),Z(x,"paddingBottom",1),Z(x,"flexShrink",0),K(x,b(X0,{get when(){return f.onZenToggle},get children(){var c=W("box"),Z0=W("text"),V0=W("text");return D(c,Z0),D(c,V0),Z(c,"flexDirection","row"),Z(c,"gap",1),Z(c,"onMouseUp",()=>f.onZenToggle?.()),D(Z0,x0("[~]")),Z(Z0,"wrapMode","none"),Z(V0,"wrapMode","none"),K(V0,()=>F("files.actions.zen")),u((H0)=>{var y0=J.accent,w0=rX.BOLD,T0=J.text;return y0!==H0.e&&(H0.e=Z(Z0,"fg",y0,H0.e)),w0!==H0.t&&(H0.t=Z(Z0,"attributes",w0,H0.t)),T0!==H0.a&&(H0.a=Z(V0,"fg",T0,H0.a)),H0},{e:void 0,t:void 0,a:void 0}),c}}),null),K(x,b(X0,{get when(){return f.onCreatePR},get children(){var c=W("box"),Z0=W("text"),V0=W("text");return D(c,Z0),D(c,V0),Z(c,"flexDirection","row"),Z(c,"gap",1),Z(c,"onMouseUp",()=>f.onCreatePR?.()),D(Z0,x0("[P]")),Z(Z0,"wrapMode","none"),Z(V0,"wrapMode","none"),K(V0,()=>F("files.actions.createPR")),u((H0)=>{var y0=J.accent,w0=rX.BOLD,T0=J.text;return y0!==H0.e&&(H0.e=Z(Z0,"fg",y0,H0.e)),w0!==H0.t&&(H0.t=Z(Z0,"attributes",w0,H0.t)),T0!==H0.a&&(H0.a=Z(V0,"fg",T0,H0.a)),H0},{e:void 0,t:void 0,a:void 0}),c}}),null),x}}),f0),D(f0,I),Z(f0,"flexDirection","row"),Z(f0,"justifyContent","space-between"),Z(f0,"paddingBottom",0),Z(f0,"flexShrink",0),Z(I,"flexDirection","row"),Z(I,"gap",2),K(I,b(Zf,{each:BS,children:(x)=>{let c=()=>G()===x;return(()=>{var Z0=W("text");return Z(Z0,"wrapMode","none"),Z(Z0,"onMouseUp",()=>X(x)),K(Z0,()=>WS(x)),u((V0)=>{var H0=c()?J.primary:J.textMuted,y0=c()?rX.BOLD:void 0;return H0!==V0.e&&(V0.e=Z(Z0,"fg",H0,V0.e)),y0!==V0.t&&(V0.t=Z(Z0,"attributes",y0,V0.t)),V0},{e:void 0,t:void 0}),Z0})()}})),K(f0,b(X0,{get when(){return f.cornerBadge?.()},children:(x)=>(()=>{var c=W("text");return Z(c,"wrapMode","none"),K(c,()=>x().text),u((Z0)=>{var V0=x().active?J.accent:J.textMuted,H0=x().active?rX.BOLD:void 0;return V0!==Z0.e&&(Z0.e=Z(c,"fg",V0,Z0.e)),H0!==Z0.t&&(Z0.t=Z(c,"attributes",H0,Z0.t)),Z0},{e:void 0,t:void 0}),c})()}),null),K(E,b(X0,{get when(){return G()==="changes"},get children(){var x=W("box"),c=W("text");return D(x,c),Z(x,"flexDirection","column"),Z(x,"paddingBottom",1),Z(x,"flexShrink",0),Z(x,"gap",0),Z(c,"wrapMode","none"),K(c,()=>F("files.legend.changes")),u((Z0)=>Z(c,"fg",J.textMuted,Z0)),x}}),G0),K(E,b(X0,{get when(){return G()!=="changes"},get children(){var x=W("box");return Z(x,"flexDirection","row"),Z(x,"paddingBottom",1),Z(x,"flexShrink",0),x}}),G0),hY((x)=>{$=x},G0),Z(G0,"flexGrow",1),Z(G0,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),K(G0,b(X0,{get when(){return f.worktreePath()==null},get children(){var x=W("box"),c=W("text");return D(x,c),Z(x,"paddingTop",1),Z(x,"paddingLeft",1),K(c,()=>F("files.empty.noTask")),u((Z0)=>Z(c,"fg",J.textMuted,Z0)),x}}),null),K(G0,b(X0,{get when(){return I0(()=>f.worktreePath()!=null)()&&O()!=null},get children(){var x=W("box"),c=W("text"),Z0=W("text");return D(x,c),D(x,Z0),Z(x,"paddingTop",1),Z(x,"paddingLeft",1),Z(x,"flexDirection","column"),Z(x,"gap",0),Z(c,"wrapMode","word"),K(c,()=>jS(O()??"")),Z(Z0,"wrapMode","word"),K(Z0,()=>F("files.error.retryHint")),u((V0)=>{var{error:H0,textMuted:y0}=J;return H0!==V0.e&&(V0.e=Z(c,"fg",H0,V0.e)),y0!==V0.t&&(V0.t=Z(Z0,"fg",y0,V0.t)),V0},{e:void 0,t:void 0}),x}}),null),K(G0,b(X0,{get when(){return I0(()=>f.worktreePath()!=null&&O()==null&&C().length===0)()&&(G()==="all"&&V()!=null||G()==="changes"&&U()!=null)},get children(){var x=W("box"),c=W("text");return D(x,c),Z(x,"paddingTop",1),Z(x,"paddingLeft",1),K(c,(()=>{var Z0=I0(()=>G()==="all");return()=>Z0()?F("files.empty.noFiles"):F("files.empty.noChanges")})()),u((Z0)=>Z(c,"fg",J.textMuted,Z0)),x}}),null),K(G0,b(X0,{get when(){return I0(()=>f.worktreePath()!=null&&O()==null)()&&C().length>0},get children(){var x=W("box");return Z(x,"flexShrink",0),Z(x,"gap",0),Z(x,"paddingRight",1),K(x,b(Zf,{get each(){return C()},children:(c,Z0)=>{let V0=()=>Z0()===q(),H0=(()=>{var J0=W("text");return Z(J0,"wrapMode","none"),K(J0,()=>V0()?"\u258C":" "),u((F0)=>Z(J0,"fg",V0()?J.focusAccent:void 0,F0)),J0})(),y0=()=>V0()?J.backgroundElement:void 0;if(c.kind==="dir"){let J0=" ".repeat(c.depth),F0=c.expanded?"\u25BE":"\u25B8";return(()=>{var a0=W("box"),p0=W("box"),u0=W("text");return D(a0,p0),Z(a0,"flexDirection","row"),Z(a0,"gap",0),Z(a0,"onMouseUp",()=>{Q(Z0()),S((_0)=>{let n=new Set(_0);if(n.has(c.path))n.delete(c.path);else n.add(c.path);return n})}),K(a0,H0,p0),D(p0,u0),Z(p0,"flexGrow",1),Z(p0,"paddingRight",1),Z(u0,"wrapMode","none"),K(u0,()=>`${J0}${F0} ${c.name}/`),u((_0)=>{var n=y0(),q0=J.textMuted,b0=rX.BOLD;return n!==_0.e&&(_0.e=Z(a0,"backgroundColor",n,_0.e)),q0!==_0.t&&(_0.t=Z(u0,"fg",q0,_0.t)),b0!==_0.a&&(_0.a=Z(u0,"attributes",b0,_0.a)),_0},{e:void 0,t:void 0,a:void 0}),a0})()}if(c.kind==="file"){let J0=" ".repeat(c.depth);return(()=>{var F0=W("box"),a0=W("box"),p0=W("text");return D(F0,a0),Z(F0,"flexDirection","row"),Z(F0,"gap",0),Z(F0,"onMouseUp",()=>{Q(Z0()),f.onOpenFile(c.path)}),K(F0,H0,a0),D(a0,p0),Z(a0,"flexGrow",1),Z(a0,"paddingRight",1),Z(p0,"wrapMode","none"),K(p0,()=>`${J0} ${c.name}`),u((u0)=>{var _0=y0(),n=J.text;return _0!==u0.e&&(u0.e=Z(F0,"backgroundColor",_0,u0.e)),n!==u0.t&&(u0.t=Z(p0,"fg",n,u0.t)),u0},{e:void 0,t:void 0}),F0})()}let w0=HS(c.status),T0=()=>{switch(w0){case"success":return J.success;case"warning":return J.warning;case"error":return J.error;case"info":return J.info;default:return J.textMuted}},r0=y(),P=c.added==null?" ".repeat(r0.added):`+${c.added}`.padStart(r0.added),M0=c.deleted==null?" ".repeat(r0.deleted):`-${c.deleted}`.padStart(r0.deleted);return(()=>{var J0=W("box"),F0=W("box"),a0=W("text"),p0=W("text");return D(J0,F0),Z(J0,"flexDirection","row"),Z(J0,"gap",0),Z(J0,"onMouseUp",()=>{Q(Z0()),f.onOpenFile(c.path)}),K(J0,H0,F0),D(F0,a0),D(F0,p0),Z(F0,"flexDirection","row"),Z(F0,"flexGrow",1),Z(F0,"gap",1),Z(F0,"paddingRight",1),Z(a0,"wrapMode","none"),K(a0,()=>c.status),Z(p0,"wrapMode","none"),Z(p0,"flexGrow",1),K(p0,()=>UL(c.path,_())),K(F0,b(X0,{get when(){return r0.added>0},get children(){var u0=W("text");return Z(u0,"wrapMode","none"),K(u0,P),u((_0)=>Z(u0,"fg",J.success,_0)),u0}}),null),K(F0,b(X0,{get when(){return r0.deleted>0},get children(){var u0=W("text");return Z(u0,"wrapMode","none"),K(u0,M0),u((_0)=>Z(u0,"fg",J.error,_0)),u0}}),null),u((u0)=>{var _0=y0(),n=T0(),q0=J.text;return _0!==u0.e&&(u0.e=Z(J0,"backgroundColor",_0,u0.e)),n!==u0.t&&(u0.t=Z(a0,"fg",n,u0.t)),q0!==u0.a&&(u0.a=Z(p0,"fg",q0,u0.a)),u0},{e:void 0,t:void 0,a:void 0}),J0})()}})),x}}),null),K(E,b(X0,{get when(){return f.worktreePath()!=null},get children(){var x=W("box"),c=W("text");return D(x,c),Z(x,"flexDirection","row"),Z(x,"paddingTop",1),Z(x,"flexShrink",0),Z(c,"wrapMode","none"),K(c,()=>F("files.footer.openHint")),u((Z0)=>Z(c,"fg",J.textMuted,Z0)),x}}),null),E})()}var BS;var AL=k(()=>{h();h();h();h();h();h();h();h();h();G1();h();Wf();xf();n8();i8();KL();OL();BS=["all","changes"]});var gL=k(()=>{AL();n8();i8()});import{promises as VS}from"fs";import KS from"path";async function vQ(f,J){let Y=new AbortController,z=setTimeout(()=>Y.abort(),US);try{let G=await BJ("git",J,{cwd:f,env:x1(),signal:Y.signal});if(Y.signal.aborted)return null;if(G.status!==0)return null;return G.stdout.trim()}finally{clearTimeout(z)}}async function DS(f){return await vQ(f,["rev-parse","--abbrev-ref","HEAD"])||"HEAD"}async function LS(f){let J=await vQ(f,["symbolic-ref","refs/remotes/origin/HEAD","--short"]);if(!J)return"main";return J.startsWith("origin/")?J.slice(7):J}async function MS(f){let J=await vQ(f,["rev-parse","--abbrev-ref","@{u}"]);return J!==null&&J.length>0}async function FS(f){let J=await vQ(f,["status","--porcelain"]);if(!J)return 0;return J.split(`
242
- `).filter((Y)=>Y.length>0).length}async function OS(f){let[J,Y,z,G]=await Promise.all([DS(f),LS(f),MS(f),FS(f)]);return{branch:J,targetBranch:Y,hasUpstream:z,dirtyCount:G}}function AS(f){if(f<=0)return"There are no uncommitted changes.";if(f===1)return"There is 1 uncommitted change.";return`There are ${f} uncommitted changes.`}function gS(f){return f?"The current branch tracks an upstream.":"There is no upstream branch yet."}function RS(f,J){let Y={branch:J.branch,targetBranch:J.targetBranch,dirtyCountSentence:AS(J.dirtyCount),upstreamSentence:gS(J.hasUpstream)};return f.replace(/\{\{([a-zA-Z][a-zA-Z0-9_]*)\}\}/g,(z,G)=>Object.hasOwn(Y,G)?Y[G]:z)}async function CS(f){let J=KS.join(f,".kobe","pr-instructions.md");try{let Y=await VS.readFile(J,"utf8");return Y.length>0?Y:RL}catch{return RL}}async function CL(f){let[J,Y]=await Promise.all([CS(f),OS(f)]);return RS(J,Y)}var US=5000,RL=`The user likes the current state of the code.
237
+ `),process.stdout.write(F("update.pressAnyKey")),await pb(),process.exit(g)}return Uf(()=>({bindings:[{key:"up",cmd:()=>R(-1)},{key:"down",cmd:()=>R(1)},{key:"k",cmd:()=>R(-1)},{key:"j",cmd:()=>R(1)},{key:"return",cmd:()=>S()},{key:"u",cmd:()=>S("update")},{key:"r",cmd:()=>S("release")},{key:"q",cmd:()=>S("close")},{key:"escape",cmd:()=>S("close")},{key:"ctrl+c",cmd:()=>S("close")}]})),(()=>{var N=W("box"),g=W("box"),C=W("text"),y=W("text"),_=W("box"),z0=W("text"),t=W("text"),Y0=x0("v"),T=W("text"),Q0=W("text"),p=x0("v"),D0=W("box"),g0=W("box"),$=W("text"),E=W("scrollbox"),f0=W("box");return D(N,g),D(N,_),D(N,D0),D(N,g0),D(N,E),Z(N,"flexDirection","column"),Z(N,"flexGrow",1),Z(N,"paddingTop",1),Z(N,"paddingLeft",2),Z(N,"paddingRight",2),D(g,C),D(g,y),Z(g,"flexDirection","row"),Z(g,"justifyContent","space-between"),Z(g,"flexShrink",0),Z(C,"wrapMode","none"),K(C,()=>F("update.pageTitle")),D(y,x0("q / esc")),Z(y,"wrapMode","none"),Z(y,"onMouseUp",()=>S("close")),D(_,z0),D(_,t),D(_,T),D(_,Q0),Z(_,"flexDirection","row"),Z(_,"gap",2),Z(_,"flexShrink",0),Z(_,"paddingTop",1),Z(z0,"wrapMode","none"),K(z0,()=>F("update.current")),D(t,Y0),Z(t,"wrapMode","none"),K(t,s0,null),Z(T,"wrapMode","none"),K(T,()=>F("update.latest")),D(Q0,p),Z(Q0,"wrapMode","none"),K(Q0,U,null),Z(D0,"flexDirection","column"),Z(D0,"flexShrink",0),Z(D0,"paddingTop",1),Z(D0,"gap",0),K(D0,b(Zf,{get each(){return O()},children:(I)=>(()=>{var G0=W("box"),x=W("box"),c=W("text"),Z0=x0("["),V0=x0("]"),H0=W("box"),y0=W("text"),w0=W("text");return D(G0,x),D(G0,H0),D(G0,w0),Z(G0,"flexDirection","row"),Z(G0,"gap",1),Z(G0,"paddingLeft",1),Z(G0,"paddingRight",1),Z(G0,"onMouseUp",()=>S(I.id)),D(x,c),Z(x,"width",4),Z(x,"flexShrink",0),D(c,Z0),D(c,V0),Z(c,"wrapMode","none"),K(c,()=>I.key,V0),D(H0,y0),Z(H0,"width",14),Z(H0,"flexShrink",0),Z(y0,"wrapMode","none"),K(y0,()=>I.label),Z(w0,"wrapMode","word"),K(w0,()=>I.detail),u((T0)=>{var r0=H()===I.id?f.primary:void 0,P=H()===I.id?f.selectedListItemText:f.accent,M0=xG.BOLD,J0=H()===I.id?f.selectedListItemText:f.text,F0=H()===I.id?f.selectedListItemText:f.textMuted;return r0!==T0.e&&(T0.e=Z(G0,"backgroundColor",r0,T0.e)),P!==T0.t&&(T0.t=Z(c,"fg",P,T0.t)),M0!==T0.a&&(T0.a=Z(c,"attributes",M0,T0.a)),J0!==T0.o&&(T0.o=Z(y0,"fg",J0,T0.o)),F0!==T0.i&&(T0.i=Z(w0,"fg",F0,T0.i)),T0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),G0})()})),K(N,b(X0,{get when(){return V()},get children(){var I=W("text");return Z(I,"wrapMode","word"),K(I,V),u((G0)=>Z(I,"fg",f.info,G0)),I}}),g0),D(g0,$),Z(g0,"flexShrink",0),Z(g0,"paddingTop",1),Z($,"wrapMode","none"),K($,()=>F("update.changesSectionHeader",{from:s0,to:U()})),D(E,f0),Z(E,"flexGrow",1),Z(E,"flexShrink",1),Z(E,"stickyScroll",!1),Z(f0,"flexDirection","column"),Z(f0,"paddingRight",1),Z(f0,"paddingBottom",1),Z(f0,"gap",0),K(f0,b(X0,{get when(){return q()},get children(){var I=W("text");return K(I,()=>F("update.loadingNotes")),u((G0)=>Z(I,"fg",f.textMuted,G0)),I}}),null),K(f0,b(X0,{get when(){return I0(()=>!q())()&&G().length===0},get children(){var I=W("text");return Z(I,"wrapMode","word"),K(I,()=>F("update.notesUnavailable")),u((G0)=>Z(I,"fg",f.textMuted,G0)),I}}),null),K(f0,b(Zf,{get each(){return G()},children:(I)=>(()=>{var G0=W("box"),x=W("text"),c=x0("v");return D(G0,x),Z(G0,"flexDirection","column"),Z(G0,"paddingBottom",1),Z(G0,"gap",0),D(x,c),Z(x,"wrapMode","none"),K(x,()=>I.version,null),K(G0,b(Zf,{get each(){return rb(I.body)},children:(Z0)=>(()=>{var V0=W("text");return Z(V0,"wrapMode","word"),K(V0,Z0),u((H0)=>Z(V0,"fg",f.textMuted,H0)),V0})()}),null),u((Z0)=>{var V0=f.text,H0=xG.BOLD;return V0!==Z0.e&&(Z0.e=Z(x,"fg",V0,Z0.e)),H0!==Z0.t&&(Z0.t=Z(x,"attributes",H0,Z0.t)),Z0},{e:void 0,t:void 0}),G0})()}),null),u((I)=>{var{background:G0,text:x}=f,c=xG.BOLD,Z0=f.textMuted,V0=f.textMuted,H0=f.text,y0=xG.BOLD,w0=f.textMuted,T0=Y()?.hasUpdate?f.warning:f.success,r0=xG.BOLD,P=f.textMuted,M0=xG.DIM,J0={trackOptions:{backgroundColor:f.background,foregroundColor:f.borderActive}};return G0!==I.e&&(I.e=Z(N,"backgroundColor",G0,I.e)),x!==I.t&&(I.t=Z(C,"fg",x,I.t)),c!==I.a&&(I.a=Z(C,"attributes",c,I.a)),Z0!==I.o&&(I.o=Z(y,"fg",Z0,I.o)),V0!==I.i&&(I.i=Z(z0,"fg",V0,I.i)),H0!==I.n&&(I.n=Z(t,"fg",H0,I.n)),y0!==I.s&&(I.s=Z(t,"attributes",y0,I.s)),w0!==I.h&&(I.h=Z(T,"fg",w0,I.h)),T0!==I.r&&(I.r=Z(Q0,"fg",T0,I.r)),r0!==I.d&&(I.d=Z(Q0,"attributes",r0,I.d)),P!==I.l&&(I.l=Z($,"fg",P,I.l)),M0!==I.u&&(I.u=Z($,"attributes",M0,I.u)),J0!==I.c&&(I.c=Z(E,"verticalScrollbarOptions",J0,I.c)),I},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0}),N})()}async function ob(){await M1({setup:()=>({root:()=>b(_b,{})})})}var zL=k(()=>{h();h();h();h();h();h();h();h();h();Wf();D1();xf();X1();nY();S1()});async function GL(f,J){if(!J)return 0;return pf(f).history.latestTranscriptMtimeForWorktree(J)}var XL=k(()=>{UY()});function sb(f){return f.trim().split(/\s+/)[0]??""}function qL(f,J,Y,z){let G=Xf(Y);if(f==="vim")return{bin:"vim",command:`vim ${G}`};if(f==="nvim")return{bin:"nvim",command:`nvim ${G}`};if(f==="nano")return{bin:"nano",command:`nano ${G}`};if(f==="emacs")return{bin:"emacs",command:`emacs ${G}`};let X=(J.trim()||(z??"").trim()).trim();if(!X)return null;let q=sb(X);if(!q)return null;let Q=X.includes(ZL)?X.split(ZL).join(G):`${X} ${G}`;return{bin:q,command:Q}}function tb(f,J,Y){let z=Xf(J);return["f=$(mktemp 2>/dev/null)",`if [ -n "$f" ] && git show ${Xf(`HEAD:./${Y}`)} > "$f" 2>/dev/null; then`,` ${f} -d "$f" ${z} -c 'setlocal nomodifiable' -c 'wincmd l'; r=$?`,"else",` ${f} ${z}; r=$?`,"fi",'rm -f "$f" 2>/dev/null; exit $r'].join(`
238
+ `)}function eb(f,J){let Y=f.endsWith("/")?f:`${f}/`;return J.startsWith(Y)?J.slice(Y.length):null}async function fS(f){let J=pz(kf(_J)),Y=kf(RY)??"",z=(process.env.VISUAL??process.env.EDITOR??"").trim();if(J!=="auto")return qL(J,Y,f,z);if(z)return qL("custom","",f,z);let G=Xf(f);for(let X of sV)if(await QL(X))return{bin:X,command:`${X} ${G}`};return null}async function QL(f){try{return await Bun.spawn(["sh","-c",`command -v ${Xf(f)} >/dev/null 2>&1`],{stdin:"ignore",stdout:"ignore",stderr:"ignore"}).exited===0}catch{return!1}}async function JS(f,J){try{return await Bun.spawn(["git","diff","--quiet","HEAD","--",J],{cwd:f,stdin:"ignore",stdout:"ignore",stderr:"ignore",env:w1()}).exited===1}catch{return!1}}async function HL(f,J,Y){let z=await fS(Y);if(!z)return!1;if(!await QL(z.bin))return!1;let G=await YS(z,J,Y);return await QJ(f,{cwd:J,command:G,name:zS(Y)}),!0}async function YS(f,J,Y){let{bin:z,command:G}=f;if(z!=="nvim"&&z!=="vim")return G;if(G!==`${z} ${Xf(Y)}`)return G;let X=eb(J,Y);if(!X)return G;if(!await JS(J,X))return G;return tb(z,Y,X)}function zS(f){let J=f.slice(f.lastIndexOf("/")+1).trim();return J.length>0?J:"edit"}var ZL="{file}";var BL=k(()=>{CY();Af();Zq();Tf();zJ()});async function n8(f,J){if(!J)throw Error("git(): cwd is required");let Y=await _z(J,f),z=Y.status??-1;if(z!==0){let G=(Y.stderr??"").trim(),X=(Y.stdout??"").trim();throw Error(`git ${f.join(" ")} (cwd=${J}) exited with code ${z}: ${G||X||"(no output)"}`)}return Y.stdout??""}async function d8(f){let Y=(await n8(["ls-files","--cached","--others","--exclude-standard","--full-name"],f)).split(`
239
+ `).map((G)=>G.replace(/\r$/,"")),z=new Set;for(let G of Y)if(G.length>0)z.add(G);return Array.from(z).sort()}async function i8(f){let J=await n8(["status","--porcelain","--untracked-files=all"],f),Y=VL(J),z=null;try{let G=await n8(["diff","--no-color","--numstat","HEAD"],f);z=new Map(GS(G).map((X)=>[X.path,{added:X.added,deleted:X.deleted}]))}catch{z=new Map}return Y.map((G)=>{let X=z?.get(G.path);if(X)return{...G,added:X.added,deleted:X.deleted};return G})}function GS(f){let J=f.split(`
240
+ `).map((z)=>z.replace(/\r$/,"")),Y=[];for(let z of J){if(z.length===0)continue;let G=z.indexOf("\t");if(G<0)continue;let X=z.indexOf("\t",G+1);if(X<0)continue;let q=z.slice(0,G),Q=z.slice(G+1,X),H=z.slice(X+1),B=H.indexOf(" -> ");if(B>=0)H=H.slice(B+4);let V=q==="-"?null:Number.parseInt(q,10),j=Q==="-"?null:Number.parseInt(Q,10);if(H.length===0)continue;Y.push({path:H,added:Number.isNaN(V)?null:V,deleted:Number.isNaN(j)?null:j})}return Y}function jL(f){let J={name:"",path:"",isDir:!0,children:[]};for(let Y of f){if(!Y)continue;let z=Y.split("/").filter((X)=>X.length>0);if(z.length===0)continue;let G=J;for(let X=0;X<z.length;X++){let q=z[X],H=X!==z.length-1,B=G.children.find((V)=>V.name===q&&V.isDir===H);if(!B)B={name:q,path:z.slice(0,X+1).join("/"),isDir:H,children:[]},G.children.push(B);G=B}}return WL(J),J}function WL(f){f.children.sort((J,Y)=>{if(J.isDir!==Y.isDir)return J.isDir?-1:1;return J.name.localeCompare(Y.name)});for(let J of f.children)WL(J)}function VL(f){let J=f.split(`
241
+ `).map((z)=>z.replace(/\r$/,"")),Y=[];for(let z of J){if(z.length<4)continue;let G=z[0],X=z[1],q=z[2];if(G===void 0||X===void 0||q!==" ")continue;let Q=z.slice(3),H;if(G==="?"&&X==="?")H="?";else{let B=X!==" "?X:G;if(B==="M"||B==="A"||B==="D"||B==="R"||B==="C"||B==="U")H=B;else continue}if(H==="R"){let B=Q.indexOf(" -> ");if(B>=0)Q=Q.slice(B+4)}if(Q.length===0)continue;if(Q.endsWith("/"))continue;Y.push({path:Q,status:H})}return Y}var l8=k(()=>{qq()});function a8(f){Uf(()=>({enabled:f.focused(),bindings:mY({"files.nav":(J,Y)=>{if((Y??0)%2===0)f.moveDown();else f.moveUp()},"files.hierarchy":(J,Y)=>{if((Y??0)%2===0)f.collapseOrParent();else f.expandOrDescend()},"files.tab":(J,Y)=>{let z=f.currentTab(),G=$X.indexOf(z);if(G<0)return;let X=(Y??0)%2===0?-1:1,q=$X[(G+X+$X.length)%$X.length];if(q)f.setTab(q)},"files.open":()=>f.openCurrent(),"files.mention":()=>f.mentionCurrent?.(),"files.createPR":()=>f.createPR?.(),"files.openExternal":()=>f.openExternal(),"files.refresh":()=>f.refresh()})}))}var $X;var $8=k(()=>{SG();S1();$X=["all","changes"]});import{spawn as KL}from"child_process";import{existsSync as XS}from"fs";import{platform as ZS}from"os";function UL(f){if(!f)return;let J=ZS();if(J==="linux"){if(XS("/proc/sys/fs/binfmt_misc/WSLInterop")||process.env.WSL_DISTRO_NAME){rX("wslview",[f],()=>{let Y=KL("wslpath",["-w",f],{stdio:["ignore","pipe","ignore"]}),z="";Y.stdout?.on("data",(G)=>{z+=G.toString()}),Y.on("close",(G)=>{if(G===0)rX("explorer.exe",[z.trim()])})});return}rX("xdg-open",[f]);return}if(J==="darwin"){rX("open",[f]);return}if(J==="win32"){rX("cmd.exe",["/c","start","",f]);return}}function rX(f,J,Y){try{let z=KL(f,J,{stdio:"ignore",detached:!0});z.on("error",()=>Y?.()),z.unref()}catch{Y?.()}}var DL=()=>{};function r8(f,J,Y,z){for(let G of f.children)if(G.isDir){let X=J.has(G.path);if(z.push({kind:"dir",path:G.path,name:G.name,depth:Y,expanded:X,hasChildren:G.children.length>0}),X)r8(G,J,Y+1,z)}else z.push({kind:"file",path:G.path,name:G.name,depth:Y})}function LL(f,J){if(J<=0)return f;let Y=[...f];if(Y.length<=J)return f;return`\u2026${Y.slice(Y.length-Math.max(0,J-1)).join("")}`}function ML(f){return f.map((J)=>({kind:"status",path:J.path,status:J.status,added:J.added,deleted:J.deleted}))}function qS(f){return`${f.kind}\x00${f.path}`}function QS(f,J){if(f.kind!==J.kind||f.path!==J.path)return!1;switch(f.kind){case"file":{let Y=J;return f.name===Y.name&&f.depth===Y.depth}case"dir":{let Y=J;return f.name===Y.name&&f.depth===Y.depth&&f.expanded===Y.expanded&&f.hasChildren===Y.hasChildren}case"status":{let Y=J;return f.status===Y.status&&f.added===Y.added&&f.deleted===Y.deleted}}}function FL(f,J){return EQ(f,J,qS,QS)}function OL(f,J){if(f===J)return!0;if(f==null||J==null)return!1;if(f.length!==J.length)return!1;for(let Y=0;Y<f.length;Y++)if(f[Y]!==J[Y])return!1;return!0}function AL(f,J){if(f===J)return!0;if(f==null||J==null)return!1;if(f.length!==J.length)return!1;for(let Y=0;Y<f.length;Y++){let z=f[Y],G=J[Y];if(z.path!==G.path||z.status!==G.status||z.added!==G.added||z.deleted!==G.deleted)return!1}return!0}var gL=()=>{};import{watch as HS}from"fs";import{TextAttributes as pX}from"@opentui/core";function BS(f){switch(f){case"M":return"warning";case"A":return"success";case"D":return"error";case"?":return"textMuted";case"R":case"C":case"U":return"info"}}function WS(f){let J=f.toLowerCase();if(J.includes("not a git repository"))return F("files.error.notGitRepo");if(J.includes("does not exist")||J.includes("enoent"))return F("files.error.pathMissing");if(J.includes("permission denied")||J.includes("eacces"))return F("files.error.permissionDenied");if(J.includes("git: not found")||J.includes("command not found"))return F("files.error.gitNotInstalled");let Y=f.indexOf(": ");if(Y>=0&&f.startsWith("git "))return f.slice(Y+2).trim()||F("files.error.gitFailed");return f.trim()||F("files.error.gitFailed")}function VS(f){switch(f){case"all":return F("files.tabs.all");case"changes":return F("files.tabs.changes")}}function p8(f){let{theme:J}=i0(),Y=TJ(),z=()=>f.focused?f.focused():!0,[G,X]=r("all"),[q,Q]=r(0),[H,B]=r(0),[V,j]=r(null,{equals:OL}),[U,L]=r(null,{equals:AL}),[O,M]=r(null),[R,S]=r(new Set),a=0;async function N(E,f0){let I=++a;if(f0==null){j(null),L(null),M(null);return}M(null);try{if(E==="all"){let G0=await d8(f0);if(I!==a||f.worktreePath()!==f0)return;j(G0)}else if(E==="changes"){let G0=await i8(f0);if(I!==a||f.worktreePath()!==f0)return;L(G0)}}catch(G0){let x=G0 instanceof Error?G0.message:String(G0);if(I===a&&f.worktreePath()===f0)M(x)}}Gf(k1(f.worktreePath,async(E)=>{j(null),L(null),M(null),Q(0),S(new Set),await N(G(),E)})),Gf(k1(f.worktreePath,(E)=>{if(E==null)return;if(process.env.KOBE_FILETREE_WATCH!=="1")return;let f0=null,I=null;try{I=HS(E,{recursive:!0},(G0,x)=>{if(x==null)return;let c=x.toString();if(c===".git"||c.startsWith(".git/")||c.startsWith(".git\\"))return;if(c.startsWith("node_modules/")||c.startsWith("node_modules\\"))return;if(f0!=null)clearTimeout(f0);f0=setTimeout(()=>{f0=null,B((Z0)=>Z0+1)},500)}),I.on("error",()=>{})}catch{}mf(()=>{if(f0!=null)clearTimeout(f0);if(I!=null)I.close()})})),Gf(k1([G,H],async([E,f0])=>{let I=f.worktreePath();if(I==null)return;Q(0);let x=H()>0;if(E==="all"){if(V()==null||x)await N("all",I)}else if(E==="changes"){if(U()==null||x)await N("changes",I)}}));let g=U0(()=>{let E=V();if(E==null)return null;return jL(E)}),C=U0((E)=>{let f0=[];if(G()==="all"){let I=g();if(I!=null)r8(I,R(),0,f0)}else if(G()==="changes"){let I=U();if(I!=null)f0.push(...ML(I))}return FL(E??[],f0)},[]),y=U0(()=>{let E=0,f0=0;for(let I of C()){if(I.kind!=="status")continue;if(I.added!=null)E=Math.max(E,String(I.added).length+1);if(I.deleted!=null)f0=Math.max(f0,String(I.deleted).length+1)}return{added:E,deleted:f0}}),_=U0(()=>{let E=y(),f0=(E.added>0?E.added+1:0)+(E.deleted>0?E.deleted+1:0);return Math.max(8,Y().width-6-f0)});function z0(){let E=C();if(E.length===0)return;Q(Math.min(q()+1,E.length-1))}function t(){if(C().length===0)return;Q(Math.max(q()-1,0))}function Y0(){let E=C(),f0=q(),I=E[f0];if(!I)return;if(I.kind!=="dir")return;if(!I.expanded&&I.hasChildren)S((G0)=>{let x=new Set(G0);return x.add(I.path),x});else if(I.expanded){if(f0+1<E.length)Q(f0+1)}}function T(){if(G()!=="all")return;let E=C(),f0=q(),I=E[f0];if(!I)return;if(I.kind==="dir"&&I.expanded){S((x)=>{let c=new Set(x);return c.delete(I.path),c});return}if(I.kind!=="dir"&&I.kind!=="file")return;let G0=I.depth-1;if(G0<0)return;for(let x=f0-1;x>=0;x--){let c=E[x];if(!c)continue;if(c.kind==="dir"&&c.depth===G0){Q(x);return}}}function Q0(){let E=C(),f0=q();if(f0<0||f0>=E.length)return;let I=E[f0];if(!I)return;if(I.kind==="dir"){S((G0)=>{let x=new Set(G0);if(x.has(I.path))x.delete(I.path);else x.add(I.path);return x});return}f.onOpenFile(I.path)}function p(){let E=C(),f0=q();if(f0<0||f0>=E.length)return;let I=E[f0];if(!I||I.kind==="dir")return;f.onMention?.(I.path)}function D0(){B((E)=>E+1),f.onRefresh?.()}function g0(){let E=C(),f0=q();if(f0<0||f0>=E.length)return;let I=E[f0];if(!I||I.kind==="dir")return;let G0=f.worktreePath();if(!G0)return;let x=`${G0}/${I.path}`;UL(x)}a8({focused:z,moveDown:z0,moveUp:t,setTab:(E)=>X(E),currentTab:G,openCurrent:Q0,mentionCurrent:p,createPR:f.onCreatePR,openExternal:g0,refresh:D0,expandOrDescend:Y0,collapseOrParent:T});let $;return Gf(k1([q,C],([E,f0])=>{if(!$)return;if(f0.length===0)return;let I=$.scrollTop,G0=$.viewport.height;if(G0<=0)return;if(E<I)$.scrollTo({x:0,y:E});else if(E>=I+G0)$.scrollTo({x:0,y:E-G0+1})})),(()=>{var E=W("box"),f0=W("box"),I=W("box"),G0=W("scrollbox");return D(E,f0),D(E,G0),Z(E,"flexDirection","column"),Z(E,"flexGrow",1),Z(E,"paddingTop",1),Z(E,"paddingBottom",1),Z(E,"paddingLeft",0),Z(E,"paddingRight",0),K(E,b(X0,{get when(){return f.onZenToggle||f.onCreatePR},get children(){var x=W("box");return Z(x,"flexDirection","row"),Z(x,"justifyContent","flex-end"),Z(x,"gap",2),Z(x,"paddingBottom",1),Z(x,"flexShrink",0),K(x,b(X0,{get when(){return f.onZenToggle},get children(){var c=W("box"),Z0=W("text"),V0=W("text");return D(c,Z0),D(c,V0),Z(c,"flexDirection","row"),Z(c,"gap",1),Z(c,"onMouseUp",()=>f.onZenToggle?.()),D(Z0,x0("[~]")),Z(Z0,"wrapMode","none"),Z(V0,"wrapMode","none"),K(V0,()=>F("files.actions.zen")),u((H0)=>{var y0=J.accent,w0=pX.BOLD,T0=J.text;return y0!==H0.e&&(H0.e=Z(Z0,"fg",y0,H0.e)),w0!==H0.t&&(H0.t=Z(Z0,"attributes",w0,H0.t)),T0!==H0.a&&(H0.a=Z(V0,"fg",T0,H0.a)),H0},{e:void 0,t:void 0,a:void 0}),c}}),null),K(x,b(X0,{get when(){return f.onCreatePR},get children(){var c=W("box"),Z0=W("text"),V0=W("text");return D(c,Z0),D(c,V0),Z(c,"flexDirection","row"),Z(c,"gap",1),Z(c,"onMouseUp",()=>f.onCreatePR?.()),D(Z0,x0("[P]")),Z(Z0,"wrapMode","none"),Z(V0,"wrapMode","none"),K(V0,()=>F("files.actions.createPR")),u((H0)=>{var y0=J.accent,w0=pX.BOLD,T0=J.text;return y0!==H0.e&&(H0.e=Z(Z0,"fg",y0,H0.e)),w0!==H0.t&&(H0.t=Z(Z0,"attributes",w0,H0.t)),T0!==H0.a&&(H0.a=Z(V0,"fg",T0,H0.a)),H0},{e:void 0,t:void 0,a:void 0}),c}}),null),x}}),f0),D(f0,I),Z(f0,"flexDirection","row"),Z(f0,"justifyContent","space-between"),Z(f0,"paddingBottom",0),Z(f0,"flexShrink",0),Z(I,"flexDirection","row"),Z(I,"gap",2),K(I,b(Zf,{each:jS,children:(x)=>{let c=()=>G()===x;return(()=>{var Z0=W("text");return Z(Z0,"wrapMode","none"),Z(Z0,"onMouseUp",()=>X(x)),K(Z0,()=>VS(x)),u((V0)=>{var H0=c()?J.primary:J.textMuted,y0=c()?pX.BOLD:void 0;return H0!==V0.e&&(V0.e=Z(Z0,"fg",H0,V0.e)),y0!==V0.t&&(V0.t=Z(Z0,"attributes",y0,V0.t)),V0},{e:void 0,t:void 0}),Z0})()}})),K(f0,b(X0,{get when(){return f.cornerBadge?.()},children:(x)=>(()=>{var c=W("text");return Z(c,"wrapMode","none"),K(c,()=>x().text),u((Z0)=>{var V0=x().active?J.accent:J.textMuted,H0=x().active?pX.BOLD:void 0;return V0!==Z0.e&&(Z0.e=Z(c,"fg",V0,Z0.e)),H0!==Z0.t&&(Z0.t=Z(c,"attributes",H0,Z0.t)),Z0},{e:void 0,t:void 0}),c})()}),null),K(E,b(X0,{get when(){return G()==="changes"},get children(){var x=W("box"),c=W("text");return D(x,c),Z(x,"flexDirection","column"),Z(x,"paddingBottom",1),Z(x,"flexShrink",0),Z(x,"gap",0),Z(c,"wrapMode","none"),K(c,()=>F("files.legend.changes")),u((Z0)=>Z(c,"fg",J.textMuted,Z0)),x}}),G0),K(E,b(X0,{get when(){return G()!=="changes"},get children(){var x=W("box");return Z(x,"flexDirection","row"),Z(x,"paddingBottom",1),Z(x,"flexShrink",0),x}}),G0),hY((x)=>{$=x},G0),Z(G0,"flexGrow",1),Z(G0,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),K(G0,b(X0,{get when(){return f.worktreePath()==null},get children(){var x=W("box"),c=W("text");return D(x,c),Z(x,"paddingTop",1),Z(x,"paddingLeft",1),K(c,()=>F("files.empty.noTask")),u((Z0)=>Z(c,"fg",J.textMuted,Z0)),x}}),null),K(G0,b(X0,{get when(){return I0(()=>f.worktreePath()!=null)()&&O()!=null},get children(){var x=W("box"),c=W("text"),Z0=W("text");return D(x,c),D(x,Z0),Z(x,"paddingTop",1),Z(x,"paddingLeft",1),Z(x,"flexDirection","column"),Z(x,"gap",0),Z(c,"wrapMode","word"),K(c,()=>WS(O()??"")),Z(Z0,"wrapMode","word"),K(Z0,()=>F("files.error.retryHint")),u((V0)=>{var{error:H0,textMuted:y0}=J;return H0!==V0.e&&(V0.e=Z(c,"fg",H0,V0.e)),y0!==V0.t&&(V0.t=Z(Z0,"fg",y0,V0.t)),V0},{e:void 0,t:void 0}),x}}),null),K(G0,b(X0,{get when(){return I0(()=>f.worktreePath()!=null&&O()==null&&C().length===0)()&&(G()==="all"&&V()!=null||G()==="changes"&&U()!=null)},get children(){var x=W("box"),c=W("text");return D(x,c),Z(x,"paddingTop",1),Z(x,"paddingLeft",1),K(c,(()=>{var Z0=I0(()=>G()==="all");return()=>Z0()?F("files.empty.noFiles"):F("files.empty.noChanges")})()),u((Z0)=>Z(c,"fg",J.textMuted,Z0)),x}}),null),K(G0,b(X0,{get when(){return I0(()=>f.worktreePath()!=null&&O()==null)()&&C().length>0},get children(){var x=W("box");return Z(x,"flexShrink",0),Z(x,"gap",0),Z(x,"paddingRight",1),K(x,b(Zf,{get each(){return C()},children:(c,Z0)=>{let V0=()=>Z0()===q(),H0=(()=>{var J0=W("text");return Z(J0,"wrapMode","none"),K(J0,()=>V0()?"\u258C":" "),u((F0)=>Z(J0,"fg",V0()?J.focusAccent:void 0,F0)),J0})(),y0=()=>V0()?J.backgroundElement:void 0;if(c.kind==="dir"){let J0=" ".repeat(c.depth),F0=c.expanded?"\u25BE":"\u25B8";return(()=>{var a0=W("box"),p0=W("box"),u0=W("text");return D(a0,p0),Z(a0,"flexDirection","row"),Z(a0,"gap",0),Z(a0,"onMouseUp",()=>{Q(Z0()),S((_0)=>{let n=new Set(_0);if(n.has(c.path))n.delete(c.path);else n.add(c.path);return n})}),K(a0,H0,p0),D(p0,u0),Z(p0,"flexGrow",1),Z(p0,"paddingRight",1),Z(u0,"wrapMode","none"),K(u0,()=>`${J0}${F0} ${c.name}/`),u((_0)=>{var n=y0(),q0=J.textMuted,b0=pX.BOLD;return n!==_0.e&&(_0.e=Z(a0,"backgroundColor",n,_0.e)),q0!==_0.t&&(_0.t=Z(u0,"fg",q0,_0.t)),b0!==_0.a&&(_0.a=Z(u0,"attributes",b0,_0.a)),_0},{e:void 0,t:void 0,a:void 0}),a0})()}if(c.kind==="file"){let J0=" ".repeat(c.depth);return(()=>{var F0=W("box"),a0=W("box"),p0=W("text");return D(F0,a0),Z(F0,"flexDirection","row"),Z(F0,"gap",0),Z(F0,"onMouseUp",()=>{Q(Z0()),f.onOpenFile(c.path)}),K(F0,H0,a0),D(a0,p0),Z(a0,"flexGrow",1),Z(a0,"paddingRight",1),Z(p0,"wrapMode","none"),K(p0,()=>`${J0} ${c.name}`),u((u0)=>{var _0=y0(),n=J.text;return _0!==u0.e&&(u0.e=Z(F0,"backgroundColor",_0,u0.e)),n!==u0.t&&(u0.t=Z(p0,"fg",n,u0.t)),u0},{e:void 0,t:void 0}),F0})()}let w0=BS(c.status),T0=()=>{switch(w0){case"success":return J.success;case"warning":return J.warning;case"error":return J.error;case"info":return J.info;default:return J.textMuted}},r0=y(),P=c.added==null?" ".repeat(r0.added):`+${c.added}`.padStart(r0.added),M0=c.deleted==null?" ".repeat(r0.deleted):`-${c.deleted}`.padStart(r0.deleted);return(()=>{var J0=W("box"),F0=W("box"),a0=W("text"),p0=W("text");return D(J0,F0),Z(J0,"flexDirection","row"),Z(J0,"gap",0),Z(J0,"onMouseUp",()=>{Q(Z0()),f.onOpenFile(c.path)}),K(J0,H0,F0),D(F0,a0),D(F0,p0),Z(F0,"flexDirection","row"),Z(F0,"flexGrow",1),Z(F0,"gap",1),Z(F0,"paddingRight",1),Z(a0,"wrapMode","none"),K(a0,()=>c.status),Z(p0,"wrapMode","none"),Z(p0,"flexGrow",1),K(p0,()=>LL(c.path,_())),K(F0,b(X0,{get when(){return r0.added>0},get children(){var u0=W("text");return Z(u0,"wrapMode","none"),K(u0,P),u((_0)=>Z(u0,"fg",J.success,_0)),u0}}),null),K(F0,b(X0,{get when(){return r0.deleted>0},get children(){var u0=W("text");return Z(u0,"wrapMode","none"),K(u0,M0),u((_0)=>Z(u0,"fg",J.error,_0)),u0}}),null),u((u0)=>{var _0=y0(),n=T0(),q0=J.text;return _0!==u0.e&&(u0.e=Z(J0,"backgroundColor",_0,u0.e)),n!==u0.t&&(u0.t=Z(a0,"fg",n,u0.t)),q0!==u0.a&&(u0.a=Z(p0,"fg",q0,u0.a)),u0},{e:void 0,t:void 0,a:void 0}),J0})()}})),x}}),null),K(E,b(X0,{get when(){return f.worktreePath()!=null},get children(){var x=W("box"),c=W("text");return D(x,c),Z(x,"flexDirection","row"),Z(x,"paddingTop",1),Z(x,"flexShrink",0),Z(c,"wrapMode","none"),K(c,()=>F("files.footer.openHint")),u((Z0)=>Z(c,"fg",J.textMuted,Z0)),x}}),null),E})()}var jS;var RL=k(()=>{h();h();h();h();h();h();h();h();h();X1();h();Wf();xf();l8();$8();DL();gL();jS=["all","changes"]});var CL=k(()=>{RL();l8();$8()});import{promises as KS}from"fs";import US from"path";async function cQ(f,J){let Y=new AbortController,z=setTimeout(()=>Y.abort(),DS);try{let G=await HJ("git",J,{cwd:f,env:w1(),signal:Y.signal});if(Y.signal.aborted)return null;if(G.status!==0)return null;return G.stdout.trim()}finally{clearTimeout(z)}}async function LS(f){return await cQ(f,["rev-parse","--abbrev-ref","HEAD"])||"HEAD"}async function MS(f){let J=await cQ(f,["symbolic-ref","refs/remotes/origin/HEAD","--short"]);if(!J)return"main";return J.startsWith("origin/")?J.slice(7):J}async function FS(f){let J=await cQ(f,["rev-parse","--abbrev-ref","@{u}"]);return J!==null&&J.length>0}async function OS(f){let J=await cQ(f,["status","--porcelain"]);if(!J)return 0;return J.split(`
242
+ `).filter((Y)=>Y.length>0).length}async function AS(f){let[J,Y,z,G]=await Promise.all([LS(f),MS(f),FS(f),OS(f)]);return{branch:J,targetBranch:Y,hasUpstream:z,dirtyCount:G}}function gS(f){if(f<=0)return"There are no uncommitted changes.";if(f===1)return"There is 1 uncommitted change.";return`There are ${f} uncommitted changes.`}function RS(f){return f?"The current branch tracks an upstream.":"There is no upstream branch yet."}function CS(f,J){let Y={branch:J.branch,targetBranch:J.targetBranch,dirtyCountSentence:gS(J.dirtyCount),upstreamSentence:RS(J.hasUpstream)};return f.replace(/\{\{([a-zA-Z][a-zA-Z0-9_]*)\}\}/g,(z,G)=>Object.hasOwn(Y,G)?Y[G]:z)}async function kS(f){let J=US.join(f,".kobe","pr-instructions.md");try{let Y=await KS.readFile(J,"utf8");return Y.length>0?Y:kL}catch{return kL}}async function NL(f){let[J,Y]=await Promise.all([kS(f),AS(f)]);return CS(J,Y)}var DS=5000,kL=`The user likes the current state of the code.
243
243
 
244
244
  {{dirtyCountSentence}}
245
245
  The current branch is {{branch}}.
@@ -256,15 +256,16 @@ Follow these steps to create a PR:
256
256
  - Push to origin.
257
257
  - Use \`gh pr create --base {{targetBranch}}\` to create a PR onto the target branch. Keep the title under 80 characters. Keep the description under five sentences. Describe not just changes made in this session but ALL changes since the branch diverged from the target.
258
258
 
259
- If any of these steps fail, ask the user for help.`;var kL=k(()=>{NY();iX()});var $8={};jf($8,{startOpsPreview:()=>cS,startOpsHost:()=>xS,nextActivityPollDelay:()=>bL});import{createHash as kS}from"crypto";import{SyntaxStyle as NS}from"@opentui/core";function bL(f,J){if(J<bS)return yL;return Math.min(f*2,yS)}function uS(f){let{theme:J}=i0(),[Y,z]=r(0),[G,X]=r(0),q=!1;f1(()=>{let M=!1,R,S=yL,a=0,N=0;async function g(){try{let C=await YL(f.vendor,f.worktree);if(M)return;if(!q)q=!0,z(C),N=C;if(C>N)N=C,a=0;else a++;X(C)}catch{a++}finally{if(!M)S=bL(S,a),R=setTimeout(()=>void g(),S)}}g(),mf(()=>{if(M=!0,R)clearTimeout(R)})});let Q=()=>q&&G()>Y(),H=()=>Q()?{text:F("ops.badge.newActivity"),active:!0}:null;function B(){z(G())}f1(()=>{if(!f.targetPane)return;let M=CV(f.vendor),R=!1,S=null,a="",N=!1,g=0,C=null;async function y(Y0){if(Y0===C)return;C=Y0,await AY(f.targetPane,TS,Y0)}async function _(){try{a=NL(await rz(f.targetPane,80)),S=(await M.latestCompletion(f.worktree))?.id??null,await y(M.supportsCompletionMarkers()?"idle":"unknown")}catch{}}async function z0(){try{let Y0=NL(await rz(f.targetPane,80));if(R)return;if(Y0!==a)a=Y0,N=!0,g=0,await y(M.supportsCompletionMarkers()?"running":"unknown");else if(N)g++;if(!M.supportsCompletionMarkers()||!N||g<IS)return;let T=await M.latestCompletion(f.worktree);if(R||!T||T.id===S)return;S=T.id,N=!1,g=0,await y("done")}catch{}}_();let t=setInterval(()=>void z0(),SS);mf(()=>{R=!0,clearInterval(t)})});function V(M){if(!f.taskId)return;HJ(Lf(f.taskId),{cwd:f.worktree,command:fV({worktree:f.worktree,relPath:M,cliInvocation:Cf()}),name:ES(M)})}function j(M){if(!f.taskId){V(M);return}let R=`${f.worktree}/${M}`;qL(Lf(f.taskId),f.worktree,R).then((S)=>{if(!S)V(M)})}function U(M){if(!f.targetPane)return;rZ(f.targetPane,`@${M} `)}async function L(){if(!f.targetPane)return;let M=await CL(f.worktree);await rZ(f.targetPane,M),await GX(f.targetPane,"Enter")}function O(){if(!f.taskId)return;let M=Lf(f.taskId),R=Cf(),S=`${_f()}${g1(R)} layout --session ${Xf(M)} --action zen-toggle`;h0(["run-shell","-b",S])}return(()=>{var M=W("box");return Z(M,"flexDirection","column"),Z(M,"flexGrow",1),K(M,b(a8,{worktreePath:()=>f.worktree,focused:()=>!0,onOpenFile:j,onMention:U,onCreatePR:()=>void L(),get onZenToggle(){return f.taskId?O:void 0},cornerBadge:H,onRefresh:B})),u((R)=>Z(M,"backgroundColor",J.background,R)),M})()}function ES(f){let J=f.lastIndexOf("/");return J>=0?f.slice(J+1):f}function NL(f){return kS("sha1").update(f).digest("hex")}async function xS(f){await L1({logContext:"ops",providers:{kv:!1,focus:!1},setup:()=>({root:()=>b(uS,f)})})}function wS(f){switch(f.slice(f.lastIndexOf(".")+1).toLowerCase()){case"ts":case"tsx":case"mts":case"cts":return"typescript";case"js":case"jsx":case"mjs":case"cjs":return"javascript";case"md":case"markdown":return"markdown";default:return}}async function hS(f,J){let Y=await oz(f,["diff","HEAD","--",J]);return Y.status===0?Y.stdout:""}async function PS(f,J){return await q7(f,J)??""}function vS(f){let J={fg:f.primary},Y={fg:f.success},z={fg:f.info},G={fg:f.warning},X={fg:f.accent},q={fg:f.textMuted,italic:!0},Q={fg:f.textMuted},H={fg:f.text};return NS.fromStyles({keyword:J,"keyword.function":J,"keyword.return":J,"keyword.import":J,"keyword.exception":J,"keyword.conditional":J,"keyword.repeat":J,"keyword.operator":J,"keyword.modifier":J,"keyword.type":J,string:Y,"string.escape":Y,"string.regexp":Y,"string.special":Y,"character.special":Y,comment:q,"comment.documentation":q,function:z,"function.call":z,"function.method":z,"function.builtin":z,constructor:z,type:G,"type.builtin":G,constant:X,"constant.builtin":X,boolean:X,number:X,operator:Q,"punctuation.bracket":Q,"punctuation.delimiter":Q,"punctuation.special":Q,variable:H,"variable.member":H,"variable.parameter":H,"variable.builtin":X,property:H,attribute:G,label:H,module:H})}function mS(f){let{theme:J}=i0(),Y=vS(J),z=wS(f.relPath),[G]=KZ(()=>f.relPath,async(X)=>{let q=await hS(f.worktree,X);if(q.trim().length>0)return{kind:"diff",text:q};return{kind:"code",text:await PS(f.worktree,X)}});return Uf(()=>({bindings:[{key:"q",cmd:()=>process.exit(0)},{key:"escape",cmd:()=>process.exit(0)},{key:"ctrl+c",cmd:()=>process.exit(0)}]})),(()=>{var X=W("box"),q=W("box"),Q=W("text"),H=W("text"),B=W("text"),V=W("box");return D(X,q),D(X,V),Z(X,"flexDirection","column"),Z(X,"flexGrow",1),D(q,Q),D(q,H),D(q,B),Z(q,"flexDirection","row"),Z(q,"gap",1),Z(q,"paddingLeft",1),Z(q,"paddingRight",1),K(Q,()=>f.relPath),K(H,(()=>{var j=I0(()=>G()?.kind==="diff");return()=>j()?F("ops.preview.diffVsHead"):F("ops.preview.file")})()),K(B,()=>F("ops.preview.closeHint")),Z(V,"flexGrow",1),K(V,b(X0,{get when(){return G()},get fallback(){return(()=>{var j=W("text");return K(j,()=>F("ops.preview.loading")),u((U)=>Z(j,"fg",J.textMuted,U)),j})()},children:(j)=>b(X0,{get when(){return j().kind==="diff"},get fallback(){return(()=>{var U=W("code");return Z(U,"filetype",z),Z(U,"syntaxStyle",Y),u((L)=>Z(U,"content",j().text,L)),U})()},get children(){var U=W("diff");return Z(U,"view","unified"),Z(U,"filetype",z),Z(U,"syntaxStyle",Y),Z(U,"showLineNumbers",!0),u((L)=>Z(U,"diff",j().text,L)),U}})})),u((j)=>{var{background:U,accent:L,textMuted:O,textMuted:M}=J;return U!==j.e&&(j.e=Z(X,"backgroundColor",U,j.e)),L!==j.t&&(j.t=Z(Q,"fg",L,j.t)),O!==j.a&&(j.a=Z(H,"fg",O,j.a)),M!==j.o&&(j.o=Z(B,"fg",M,j.o)),j},{e:void 0,t:void 0,a:void 0,o:void 0}),X})()}async function cS(f){await L1({providers:{kv:!1,focus:!1},setup:()=>({root:()=>b(mS,f)})})}var yL=2500,yS=20000,bS=3,SS=1500,IS=2,TS="@kobe_tab_state";var r8=k(()=>{h();h();h();h();h();h();h();aJ();oH();zL();Tf();QL();qJ();Qq();Wf();xf();G1();nY();b1();gL();Qz();kL()});var uL={};jf(uL,{startDirectTmux:()=>dS,chooseInitialTask:()=>TL});import{resolve as SL}from"path";function TL(f,J={}){let Y=(q)=>q?f.find((Q)=>Q.id===q):void 0,z=Y(J.activeTaskId);if(z)return z;let G=Y(J.persistedTaskId);if(G)return G;if(J.cwdRepo){let q=f.find((Q)=>Q.kind==="main"&&Q.repo===J.cwdRepo);if(q)return q}let X=f.filter((q)=>!q.archived);return X.find((q)=>q.pinned)??X[0]??f[0]}async function IL(f){if(f.length===0)return null;try{return await Bun.spawn(f,{stdin:"inherit",stdout:"inherit",stderr:"inherit",env:process.env}).exited}catch{return null}}async function nS(f){tQ();let J=[...c1()];if(J.length===0)J=[vJ(SL(process.cwd())).path];for(let Y of J)try{await f.ensureMainTask(Y)}catch(z){console.error(`[kobe] ensureMainTask failed for ${Y}:`,z)}return J[0]??SL(process.cwd())}async function dS(){if(kZ("gui"),Promise.resolve().then(() => (Ij(),Sj)).then((Y)=>Y.ensureGlobalKobeHooks()),!await NJ()){console.error("kobe: tmux not found on PATH \u2014 install tmux to use kobe 0.6 direct mode"),process.exitCode=1;return}let f=await UJ(),J=new W1(f,{role:"gui"});try{process.env.KOBE_DAEMON_SOCKET_PATH=f.socketPath,await J.init();let Y=await nS(J),z=TL(J.listTasks(),{activeTaskId:J.activeTaskSignal()(),persistedTaskId:kf("lastSelectedTaskId"),cwdRepo:Y});if(!z){let V=await pZ();if(await gz(),await aq(V),await IL(az(V))===null)console.error("kobe: failed to attach to the kobe-home session"),process.exitCode=1;return}let G=z.worktreePath||await J.ensureWorktree(z.id),X=Lf(z.id);await J.setActiveTask(z.id).catch(()=>{}),af("lastSelectedTaskId",z.id);let q=sJ(z.repo,G,{kind:"repo-init"});if(!await TY({name:X,cwd:G,command:N1(z.vendor),taskId:z.id,vendor:z.vendor,repo:z.repo,launchInit:q})){console.error(`kobe: tmux session ${X} failed to start (check the daemon log)`),process.exitCode=1;return}await gz(),await aq(X);let H=await IL(az(X));if(H===null){console.error(`kobe: failed to attach to tmux session ${X}`),process.exitCode=1;return}if(H!==0&&!await Hf(X)){console.error(`kobe: tmux session ${X} ended unexpectedly (attach exited ${H})`),process.exitCode=H;return}let B=J.getTask(z.id);if(B&&B.title===RJ&&B.worktreePath)try{let V=await dz(B.worktreePath,B.vendor);if(V)await J.setTitle(B.id,V)}catch(V){console.error("[kobe] auto-title failed:",V)}}finally{J.dispose()}}var EL=k(()=>{eY();y1();PY();E1();aZ();lG();GG();Of();Tf();bq();J1()});var xL={};jf(xL,{startTui:()=>iS});async function iS(){QU();let{startDirectTmux:f}=await Promise.resolve().then(() => (EL(),uL));await f()}var wL=k(()=>{XQ()});mQ();U1();import{resolve as _8}from"path";D1();function H9(){return[`kobe ${s0}`,"","Usage: kobe [command] [options]","","Run with no command to launch the TUI.","","Commands:"," web [options] Launch the browser dashboard"," add [path] Save a repo path for the new-task picker"," remove [path] Forget a saved project (inverse of add; non-destructive)"," adopt [glob] Import existing git worktrees as tasks"," export [--csv|--json] Print the task list (json/csv/table; daemon-free)"," repo <verb> Per-repo init script + first prompt (show|set|unset)"," api <verb> Scriptable RPC surface for agents (see `kobe api --help`)"," daemon <verb> Manage the daemon (start|stop|status|restart)"," theme <verb> Manage user themes (list|add|remove)"," skill <verb> Install the kobe agent skill (install|status|command)"," feedback Send feedback to GitHub Discussions"," update [target] Self-update kobe"," doctor Diagnose daemon / tmux / state (read-only)"," reset [--hard] Recover a wedged install"," reload Restart Tasks/Ops panes in place (engine untouched)"," kill-sessions Tear down kobe's tmux server (dev reset)","","Options:"," -v, --version Print version"," -h, --help Print this help"].join(`
260
- `)}var hL=`Usage: kobe add [path]
259
+ If any of these steps fail, ask the user for help.`;var yL=k(()=>{CY();lX()});var _8={};jf(_8,{startOpsPreview:()=>nS,startOpsHost:()=>wS,nextActivityPollDelay:()=>IL});import{createHash as NS}from"crypto";import{SyntaxStyle as yS}from"@opentui/core";function IL(f,J){if(J<SS)return SL;return Math.min(f*2,bS)}function ES(f){let{theme:J}=i0(),[Y,z]=r(0),[G,X]=r(0),q=!1;J1(()=>{let M=!1,R,S=SL,a=0,N=0;async function g(){try{let C=await GL(f.vendor,f.worktree);if(M)return;if(!q)q=!0,z(C),N=C;if(C>N)N=C,a=0;else a++;X(C)}catch{a++}finally{if(!M)S=IL(S,a),R=setTimeout(()=>void g(),S)}}g(),mf(()=>{if(M=!0,R)clearTimeout(R)})});let Q=()=>q&&G()>Y(),H=()=>Q()?{text:F("ops.badge.newActivity"),active:!0}:null;function B(){z(G())}J1(()=>{if(!f.targetPane)return;let M=EW(f.vendor),R=!1,S=null,a="",N=!1,g=0,C=null;async function y(Y0){if(Y0===C)return;C=Y0,await FY(f.targetPane,uS,Y0)}async function _(){try{a=bL(await $z(f.targetPane,80)),S=(await M.latestCompletion(f.worktree))?.id??null,await y(M.supportsCompletionMarkers()?"idle":"unknown")}catch{}}async function z0(){try{let Y0=bL(await $z(f.targetPane,80));if(R)return;if(Y0!==a)a=Y0,N=!0,g=0,await y(M.supportsCompletionMarkers()?"running":"unknown");else if(N)g++;if(!M.supportsCompletionMarkers()||!N||g<TS)return;let T=await M.latestCompletion(f.worktree);if(R||!T||T.id===S)return;S=T.id,N=!1,g=0,await y("done")}catch{}}_();let t=setInterval(()=>void z0(),IS);mf(()=>{R=!0,clearInterval(t)})});function V(M){if(!f.taskId)return;QJ(Lf(f.taskId),{cwd:f.worktree,command:HW({worktree:f.worktree,relPath:M,cliInvocation:Cf()}),name:xS(M)})}function j(M){if(!f.taskId){V(M);return}let R=`${f.worktree}/${M}`;HL(Lf(f.taskId),f.worktree,R).then((S)=>{if(!S)V(M)})}function U(M){if(!f.targetPane)return;$Z(f.targetPane,`@${M} `)}async function L(){if(!f.targetPane)return;let M=await NL(f.worktree);await $Z(f.targetPane,M),await zX(f.targetPane,"Enter")}function O(){if(!f.taskId)return;let M=Lf(f.taskId),R=Cf(),S=`${_f()}${g1(R)} layout --session ${Xf(M)} --action zen-toggle`;h0(["run-shell","-b",S])}return(()=>{var M=W("box");return Z(M,"flexDirection","column"),Z(M,"flexGrow",1),K(M,b(p8,{worktreePath:()=>f.worktree,focused:()=>!0,onOpenFile:j,onMention:U,onCreatePR:()=>void L(),get onZenToggle(){return f.taskId?O:void 0},cornerBadge:H,onRefresh:B})),u((R)=>Z(M,"backgroundColor",J.background,R)),M})()}function xS(f){let J=f.lastIndexOf("/");return J>=0?f.slice(J+1):f}function bL(f){return NS("sha1").update(f).digest("hex")}async function wS(f){await M1({logContext:"ops",providers:{kv:!1,focus:!1},setup:()=>({root:()=>b(ES,f)})})}function hS(f){switch(f.slice(f.lastIndexOf(".")+1).toLowerCase()){case"ts":case"tsx":case"mts":case"cts":return"typescript";case"js":case"jsx":case"mjs":case"cjs":return"javascript";case"md":case"markdown":return"markdown";default:return}}async function PS(f,J){let Y=await _z(f,["diff","HEAD","--",J]);return Y.status===0?Y.stdout:""}async function vS(f,J){return await tV(f,J)??""}function mS(f){let J={fg:f.primary},Y={fg:f.success},z={fg:f.info},G={fg:f.warning},X={fg:f.accent},q={fg:f.textMuted,italic:!0},Q={fg:f.textMuted},H={fg:f.text};return yS.fromStyles({keyword:J,"keyword.function":J,"keyword.return":J,"keyword.import":J,"keyword.exception":J,"keyword.conditional":J,"keyword.repeat":J,"keyword.operator":J,"keyword.modifier":J,"keyword.type":J,string:Y,"string.escape":Y,"string.regexp":Y,"string.special":Y,"character.special":Y,comment:q,"comment.documentation":q,function:z,"function.call":z,"function.method":z,"function.builtin":z,constructor:z,type:G,"type.builtin":G,constant:X,"constant.builtin":X,boolean:X,number:X,operator:Q,"punctuation.bracket":Q,"punctuation.delimiter":Q,"punctuation.special":Q,variable:H,"variable.member":H,"variable.parameter":H,"variable.builtin":X,property:H,attribute:G,label:H,module:H})}function cS(f){let{theme:J}=i0(),Y=mS(J),z=hS(f.relPath),[G]=PZ(()=>f.relPath,async(X)=>{let q=await PS(f.worktree,X);if(q.trim().length>0)return{kind:"diff",text:q};return{kind:"code",text:await vS(f.worktree,X)}});return Uf(()=>({bindings:[{key:"q",cmd:()=>process.exit(0)},{key:"escape",cmd:()=>process.exit(0)},{key:"ctrl+c",cmd:()=>process.exit(0)}]})),(()=>{var X=W("box"),q=W("box"),Q=W("text"),H=W("text"),B=W("text"),V=W("box");return D(X,q),D(X,V),Z(X,"flexDirection","column"),Z(X,"flexGrow",1),D(q,Q),D(q,H),D(q,B),Z(q,"flexDirection","row"),Z(q,"gap",1),Z(q,"paddingLeft",1),Z(q,"paddingRight",1),K(Q,()=>f.relPath),K(H,(()=>{var j=I0(()=>G()?.kind==="diff");return()=>j()?F("ops.preview.diffVsHead"):F("ops.preview.file")})()),K(B,()=>F("ops.preview.closeHint")),Z(V,"flexGrow",1),K(V,b(X0,{get when(){return G()},get fallback(){return(()=>{var j=W("text");return K(j,()=>F("ops.preview.loading")),u((U)=>Z(j,"fg",J.textMuted,U)),j})()},children:(j)=>b(X0,{get when(){return j().kind==="diff"},get fallback(){return(()=>{var U=W("code");return Z(U,"filetype",z),Z(U,"syntaxStyle",Y),u((L)=>Z(U,"content",j().text,L)),U})()},get children(){var U=W("diff");return Z(U,"view","unified"),Z(U,"filetype",z),Z(U,"syntaxStyle",Y),Z(U,"showLineNumbers",!0),u((L)=>Z(U,"diff",j().text,L)),U}})})),u((j)=>{var{background:U,accent:L,textMuted:O,textMuted:M}=J;return U!==j.e&&(j.e=Z(X,"backgroundColor",U,j.e)),L!==j.t&&(j.t=Z(Q,"fg",L,j.t)),O!==j.a&&(j.a=Z(H,"fg",O,j.a)),M!==j.o&&(j.o=Z(B,"fg",M,j.o)),j},{e:void 0,t:void 0,a:void 0,o:void 0}),X})()}async function nS(f){await M1({providers:{kv:!1,focus:!1},setup:()=>({root:()=>b(cS,f)})})}var SL=2500,bS=20000,SS=3,IS=1500,TS=2,uS="@kobe_tab_state";var o8=k(()=>{h();h();h();h();h();h();h();lJ();hH();XL();Tf();BL();zJ();qq();Wf();xf();X1();nY();S1();CL();Qz();yL()});var xL={};jf(xL,{startDirectTmux:()=>iS,chooseInitialTask:()=>EL});import{resolve as TL}from"path";function EL(f,J={}){let Y=(q)=>q?f.find((Q)=>Q.id===q):void 0,z=Y(J.activeTaskId);if(z)return z;let G=Y(J.persistedTaskId);if(G)return G;if(J.cwdRepo){let q=f.find((Q)=>Q.kind==="main"&&Q.repo===J.cwdRepo);if(q)return q}let X=f.filter((q)=>!q.archived);return X.find((q)=>q.pinned)??X[0]??f[0]}async function uL(f){if(f.length===0)return null;try{return await Bun.spawn(f,{stdin:"inherit",stdout:"inherit",stderr:"inherit",env:process.env}).exited}catch{return null}}async function dS(f){JH();let J=[...O1()];if(J.length===0)J=[vJ(TL(process.cwd())).path];for(let Y of J)try{await f.ensureMainTask(Y)}catch(z){console.error(`[kobe] ensureMainTask failed for ${Y}:`,z)}return J[0]??TL(process.cwd())}async function iS(){if(HZ("gui"),Promise.resolve().then(() => (Ej(),uj)).then((Y)=>Y.ensureGlobalKobeHooks()),!await NJ()){console.error("kobe: tmux not found on PATH \u2014 install tmux to use kobe 0.6 direct mode"),process.exitCode=1;return}let f=await KJ(),J=new W1(f,{role:"gui"});try{process.env.KOBE_DAEMON_SOCKET_PATH=f.socketPath,await J.init();let Y=await dS(J),z=EL(J.listTasks(),{activeTaskId:J.activeTaskSignal()(),persistedTaskId:kf("lastSelectedTaskId"),cwdRepo:Y});if(!z){let V=await rZ();if(await gz(),await aq(V),await uL(lz(V))===null)console.error("kobe: failed to attach to the kobe-home session"),process.exitCode=1;return}let G=z.worktreePath||await J.ensureWorktree(z.id),X=Lf(z.id);await J.setActiveTask(z.id).catch(()=>{}),af("lastSelectedTaskId",z.id);let q=sJ(z.repo,G,{kind:"repo-init"});if(!await SY({name:X,cwd:G,command:b1(z.vendor),taskId:z.id,vendor:z.vendor,repo:z.repo,launchInit:q})){console.error(`kobe: tmux session ${X} failed to start (check the daemon log)`),process.exitCode=1;return}await gz(),await aq(X);let H=await uL(lz(X));if(H===null){console.error(`kobe: failed to attach to tmux session ${X}`),process.exitCode=1;return}if(H!==0&&!await Hf(X)){console.error(`kobe: tmux session ${X} ended unexpectedly (attach exited ${H})`),process.exitCode=H;return}let B=J.getTask(z.id);if(B&&B.title===kJ&&B.worktreePath)try{let V=await Pz(B.worktreePath,B.vendor);if(V)await J.setTitle(B.id,V)}catch(V){console.error("[kobe] auto-title failed:",V)}}finally{J.dispose()}}var wL=k(()=>{sY();L1();PY();x1();IZ();eG();zG();Af();Tf();yq();Y1()});var hL={};jf(hL,{startTui:()=>lS});async function lS(){BU();let{startDirectTmux:f}=await Promise.resolve().then(() => (wL(),xL));await f()}var PL=k(()=>{qQ()});nQ();U1();import{resolve as t8}from"path";D1();function V9(){return[`kobe ${s0}`,"","Usage: kobe [command] [options]","","Run with no command to launch the TUI.","","Commands:"," web [options] Launch the browser dashboard"," add [path] Save a repo path for the new-task picker"," remove [path] Forget a saved project (inverse of add; non-destructive)"," adopt [glob] Import existing git worktrees as tasks"," export [--csv|--json] Print the task list (json/csv/table; daemon-free)"," repo <verb> Per-repo init script + first prompt (show|set|unset)"," api <verb> Scriptable RPC surface for agents (see `kobe api --help`)"," daemon <verb> Manage the daemon (start|stop|status|restart)"," theme <verb> Manage user themes (list|add|remove)"," skill <verb> Install the kobe agent skill (install|status|command)"," feedback Send feedback to GitHub Discussions"," update [target] Self-update kobe"," doctor Diagnose daemon / tmux / state (read-only)"," reset [--hard] Recover a wedged install"," reload Restart Tasks/Ops panes in place (engine untouched)"," kill-sessions Tear down kobe's tmux server (dev reset)","","Options:"," -v, --version Print version"," -h, --help Print this help"].join(`
260
+ `)}var vL=`Usage: kobe add [path]
261
261
  kobe add --remote --host <host> --user <user> --path <basePath> [--port N] [--key <path> | --password]
262
262
 
263
263
  Save a repo for the new-task picker. With --remote, register an SSH-backed
264
264
  project whose worktrees + engine run on <host> under <basePath>.
265
- `;async function lS(f){let J=f[0];if(J==="--help"||J==="-h"||J==="help"){process.stdout.write(hL);return}if(J==="--remote"){let{runAddRemote:X}=await Promise.resolve().then(() => (N9(),k9));await X(f.slice(1));return}if(J?.startsWith("-"))process.stderr.write(`kobe add: unknown flag "${J}"
265
+ `;async function aS(f){let J=f[0];if(J==="--help"||J==="-h"||J==="help"){process.stdout.write(vL);return}if(J==="--remote"){let{runAddRemote:q}=await Promise.resolve().then(() => (S9(),b9));await q(f.slice(1));return}if(J?.startsWith("-"))process.stderr.write(`kobe add: unknown flag "${J}"
266
266
 
267
- ${hL}`),process.exit(2);let Y=_8(process.cwd(),J&&J.length>0?J:"."),{addSavedRepo:z}=await Promise.resolve().then(() => (Of(),cJ)),G=z(Y);if(G.added)console.log(`added ${G.path} (${G.total} saved repo${G.total===1?"":"s"} total)`);else console.log(`already saved: ${G.path}`);await $S(G.path)}var PL=`Usage: kobe remove [path]
267
+ ${vL}`),process.exit(2);let Y=t8(process.cwd(),J&&J.length>0?J:"."),{addSavedRepo:z,isGitRepo:G}=await Promise.resolve().then(() => (Af(),cJ));if(!G(Y))process.stderr.write(`kobe add: "${J&&J.length>0?J:"."}" is not a git repository (resolved to ${Y}).
268
+ `),process.exit(1);let X=z(Y);if(X.added)console.log(`added ${X.path} (${X.total} saved repo${X.total===1?"":"s"} total)`);else console.log(`already saved: ${X.path}`);await rS(X.path)}var mL=`Usage: kobe remove [path]
268
269
 
269
270
  Forget a saved project (drop it from the new-task picker). Non-destructive:
270
271
  the repo's files, worktrees, branches and tasks all stay on disk. A remote
@@ -273,19 +274,19 @@ the repo's files, worktrees, branches and tasks all stay on disk. A remote
273
274
  path defaults to the current directory. Pass an exact saved entry (e.g. a
274
275
  remote \`ssh://user@host\` key) to remove it verbatim. Run with no match to
275
276
  print the current saved projects.
276
- `;async function aS(f){let J=f[0];if(J==="--help"||J==="-h"||J==="help"){process.stdout.write(PL);return}if(J?.startsWith("-"))process.stderr.write(`kobe remove: unknown flag "${J}"
277
+ `;async function $S(f){let J=f[0];if(J==="--help"||J==="-h"||J==="help"){process.stdout.write(mL);return}if(J?.startsWith("-"))process.stderr.write(`kobe remove: unknown flag "${J}"
277
278
 
278
- ${PL}`),process.exit(2);let{getSavedRepos:Y,removeSavedRepo:z,resolveRepoRoot:G}=await Promise.resolve().then(() => (Of(),cJ)),X=Y();if(X.length===0){console.log("no saved projects to remove.");return}let q=J&&J.length>0?J:".",Q=X.includes(q)?q:(()=>{let B=_8(process.cwd(),q),V=G(B);if(X.includes(V))return V;if(X.includes(B))return B;return null})();if(Q===null){process.stderr.write(`kobe remove: "${q}" is not a saved project.
279
+ ${mL}`),process.exit(2);let{getSavedRepos:Y,resolveRepoRoot:z}=await Promise.resolve().then(() => (Af(),cJ)),G=Y();if(G.length===0){console.log("no saved projects to remove.");return}let X=J&&J.length>0?J:".",q=G.includes(X)?X:(()=>{let V=t8(process.cwd(),X),j=z(V);if(G.includes(j))return j;if(G.includes(V))return V;return null})();if(q===null){process.stderr.write(`kobe remove: "${X}" is not a saved project.
279
280
 
280
281
  Saved projects:
281
- `);for(let B of X)process.stderr.write(` ${B}
282
- `);process.exit(1)}let H=z(Q);console.log(`removed ${H.path} (${H.total} saved repo${H.total===1?"":"s"} left)`)}async function $S(f){let J=await mL(),Y;try{Y=await J.discoverAdoptableWorktrees(f)}catch(z){console.error(`(skipped worktree scan: ${z instanceof Error?z.message:String(z)})`);return}if(Y.length===0)return;console.log(`scanning ${f}: ${Y.length} unlinked worktree(s) \u2192 importing`),await cL(J,f,Y,iY(void 0))}async function mL(){let{TaskIndexStore:f}=await Promise.resolve().then(() => (vG(),zH)),{GitWorktreeManager:J}=await Promise.resolve().then(() => (qH(),_9)),{Orchestrator:Y}=await Promise.resolve().then(() => (lG(),OW)),z=new f;return await z.load(),new Y({store:z,worktrees:new J})}async function cL(f,J,Y,z){let{connectIfRunning:G}=await Promise.resolve().then(() => (y1(),Jj)),X=await G();try{for(let q of Y){let Q=X?(await X.request("worktree.adopt",{repo:J,worktreePath:q.path,branch:q.branch,vendor:z})).task:await f.adoptWorktree({repo:J,worktreePath:q.path,branch:q.branch,vendor:z});console.log(` adopted ${q.branch} \u2192 task ${Q.id} (${Q.title})`)}}finally{X?.close()}}var nL=["Usage: kobe adopt [glob] [--repo <path>] [--vendor <v>] [--yes]","","Import existing git worktrees in a repo as kobe tasks.","No glob \u2192 dry-run listing. With a glob \u2192 list matches; --yes adopts them.","","Options:"," --repo <path> Repo to scan (default: current directory)"," --vendor <v> Engine vendor for adopted tasks"," -y, --yes Actually adopt the matched worktrees"," -h, --help Print this help",""].join(`
283
- `);function p8(f){process.stderr.write(`kobe adopt: ${f}
282
+ `);for(let V of G)process.stderr.write(` ${V}
283
+ `);process.exit(1)}let{connectIfRunning:Q}=await Promise.resolve().then(() => (L1(),lq)),H=await Q();try{if(H)await H.request("project.forget",{repo:q});else await(await e8()).forgetProject(q)}finally{H?.close()}let B=Y().length;console.log(`removed ${q} (${B} saved repo${B===1?"":"s"} left)`)}async function rS(f){let J=await e8(),Y;try{Y=await J.discoverAdoptableWorktrees(f)}catch(z){console.error(`(skipped worktree scan: ${z instanceof Error?z.message:String(z)})`);return}if(Y.length===0)return;console.log(`scanning ${f}: ${Y.length} unlinked worktree(s) \u2192 importing`),await nL(J,f,Y,iY(void 0))}async function e8(){let{TaskIndexStore:f}=await Promise.resolve().then(() => (OX(),jj)),{GitWorktreeManager:J}=await Promise.resolve().then(() => (Vj(),UK)),{Orchestrator:Y}=await Promise.resolve().then(() => (eG(),OV)),z=new f;return await z.load(),new Y({store:z,worktrees:new J})}async function nL(f,J,Y,z){let{connectIfRunning:G}=await Promise.resolve().then(() => (L1(),lq)),X=await G();try{for(let q of Y){let Q=X?(await X.request("worktree.adopt",{repo:J,worktreePath:q.path,branch:q.branch,vendor:z})).task:await f.adoptWorktree({repo:J,worktreePath:q.path,branch:q.branch,vendor:z});console.log(` adopted ${q.branch} \u2192 task ${Q.id} (${Q.title})`)}}finally{X?.close()}}var dL=["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(`
284
+ `);function s8(f){process.stderr.write(`kobe adopt: ${f}
284
285
 
285
- ${nL}
286
- `),process.exit(2)}async function rS(f){let J,Y,z,G=!1;for(let U=0;U<f.length;U++){let L=f[U];if(L==="--help"||L==="-h"||L==="help"){process.stdout.write(`${nL}
287
- `);return}if(L==="--repo"){if(Y=f[++U],Y===void 0)p8("--repo requires a value")}else if(L==="--vendor"){if(z=f[++U],z===void 0)p8("--vendor requires a value")}else if(L==="--yes"||L==="-y")G=!0;else if(L&&!L.startsWith("-")&&J===void 0)J=L;else p8(`unexpected argument "${L}"`)}let{resolveRepoRoot:X}=await Promise.resolve().then(() => (Of(),cJ)),q=X(_8(process.cwd(),Y&&Y.length>0?Y:".")),Q=iY(z),H=await mL(),B=await H.discoverAdoptableWorktrees(q);if(B.length===0){console.log(`no adoptable worktrees for ${q} \u2014 every git worktree here is already a task`);return}let V=(U)=>!J||_X(J,U.path);console.log(`adoptable worktrees in ${q}:`);for(let U of B){let L=J?V(U)?"*":" ":"-",O=[U.dirty?"dirty":"",U.kobeManaged?"":"external"].filter(Boolean).join(",");console.log(` ${L} ${U.branch} ${U.path}${O?` (${O})`:""}`)}if(!J){console.log(`
286
+ ${dL}
287
+ `),process.exit(2)}async function pS(f){let J,Y,z,G=!1;for(let U=0;U<f.length;U++){let L=f[U];if(L==="--help"||L==="-h"||L==="help"){process.stdout.write(`${dL}
288
+ `);return}if(L==="--repo"){if(Y=f[++U],Y===void 0)s8("--repo requires a value")}else if(L==="--vendor"){if(z=f[++U],z===void 0)s8("--vendor requires a value")}else if(L==="--yes"||L==="-y")G=!0;else if(L&&!L.startsWith("-")&&J===void 0)J=L;else s8(`unexpected argument "${L}"`)}let{resolveRepoRoot:X}=await Promise.resolve().then(() => (Af(),cJ)),q=X(t8(process.cwd(),Y&&Y.length>0?Y:".")),Q=iY(z),H=await e8(),B=await H.discoverAdoptableWorktrees(q);if(B.length===0){console.log(`no adoptable worktrees for ${q} \u2014 every git worktree here is already a task`);return}let V=(U)=>!J||oX(J,U.path);console.log(`adoptable worktrees in ${q}:`);for(let U of B){let L=J?V(U)?"*":" ":"-",O=[U.dirty?"dirty":"",U.kobeManaged?"":"external"].filter(Boolean).join(",");console.log(` ${L} ${U.branch} ${U.path}${O?` (${O})`:""}`)}if(!J){console.log(`
288
289
  pass a path glob to adopt, e.g. kobe adopt '${q}/*' --yes`);return}let j=B.filter(V);if(j.length===0){console.log(`
289
290
  no worktrees match glob ${JSON.stringify(J)}`);return}if(!G){console.log(`
290
- ${j.length} worktree(s) match \u2014 re-run with --yes to adopt them`);return}await cL(H,q,j,Q),console.log(`done \u2014 adopted ${j.length} worktree(s)`)}function vL(f){f.write(`${H9()}
291
- `)}function FJ(f){let J={};for(let Y=0;Y<f.length;Y++){let z=f[Y],G=f[Y+1];if(G===void 0)continue;if(z==="--task-id")J.taskId=G,Y++;else if(z==="--worktree")J.worktree=G,Y++;else if(z==="--target-pane")J.targetPane=G,Y++;else if(z==="--vendor")J.vendor=G,Y++;else if(z==="--preview")J.preview=G,Y++;else if(z==="--session")J.session=G,Y++;else if(z==="--repo")J.repo=G,Y++;else if(z==="--initial-task-id")J.initialTaskId=G,Y++;else if(z==="--action")J.action=G,Y++;else if(z==="--window")J.windowId=G,Y++;else if(z==="--cols")J.cols=G,Y++;else if(z==="--rows")J.rows=G,Y++;else if(z==="--status")J.status=G,Y++;else if(z==="--client")J.client=G,Y++}return J}async function pS(){let[,,...f]=process.argv,[J,...Y]=f;if(J==="--version"||J==="-v"||J==="version"){let{CURRENT_VERSION:G}=await Promise.resolve().then(() => (D1(),Q9));console.log(`kobe ${G}`);return}if(J==="--help"||J==="-h"||J==="help"){vL(process.stdout);return}if(J==="add"){await lS(Y);return}if(J==="remove"){await aS(Y);return}if(J==="adopt"){await rS(Y);return}if(J==="export"){let{runExportSubcommand:G}=await Promise.resolve().then(() => (MK(),LK));await G(Y);return}if(J==="repo"){let{runRepoSubcommand:G}=await Promise.resolve().then(() => (gK(),AK));await G(Y);return}if(J==="api"){let{runApiSubcommand:G}=await Promise.resolve().then(() => (mK(),vK));await G(Y);return}if(J==="update"){let{runUpdateSubcommand:G}=await Promise.resolve().then(() => (lK(),iK));await G(Y);return}if(J==="theme"){let{runThemeSubcommand:G}=await Promise.resolve().then(() => (_K(),pK));await G(Y);return}if(J==="feedback"){let{runFeedbackSubcommand:G}=await Promise.resolve().then(() => (fU(),eK));await G(Y);return}if(J==="daemon"){let{runDaemonSubcommand:G}=await Promise.resolve().then(() => (XU(),GU));await G(Y);return}if(J==="doctor"){let{runDoctorSubcommand:G}=await Promise.resolve().then(() => (qQ(),ZQ));await G(Y);return}if(J==="web"){let{runWebSubcommand:G}=await Promise.resolve().then(() => (AU(),OU));await G(Y);return}if(J==="reset"){let{runResetSubcommand:G}=await Promise.resolve().then(() => (qQ(),ZQ));await G(Y);return}if(J==="reload"){let{runReloadSubcommand:G}=await Promise.resolve().then(() => (qQ(),ZQ));await G(Y);return}if(J==="skill"){let{runSkillSubcommand:G}=await Promise.resolve().then(() => (CU(),RU));await G(Y);return}if(J==="hook"){let{runHookSubcommand:G}=await Promise.resolve().then(() => (Ij(),Sj));await G(Y);return}if(J==="new-chattab"){let G=FJ(Y),X=G.session;if(!X)console.error("kobe new-chattab: --session <name> is required"),process.exit(2);let{windowIsSurface:q}=await Promise.resolve().then(() => (Tf(),XX));if(await q(X))return;let Q;if(G.vendor!==void 0){let B=G.vendor.trim(),{getCustomEngineIds:V}=await Promise.resolve().then(() => (Of(),cJ)),{isBuiltinVendor:j}=await Promise.resolve().then(() => (U1(),J9));if(!(j(B)||V().includes(B))){let O=[...cf,...V()].join(", "),M=`kobe: unknown engine '${B}' (known: ${O})`,{runTmux:R}=await Promise.resolve().then(() => (Tf(),XX));await R(["display-message","-t",X,M]),console.error(M),process.exit(2)}Q=B;let{setPersistedString:L}=await Promise.resolve().then(() => (Of(),cJ));L("lastSelectedVendor",Q)}let{newChatTab:H}=await Promise.resolve().then(() => (J1(),r1));await H(X,Q);return}if(J==="kill-sessions"){let{runTmux:G,KOBE_TMUX_SOCKET:X}=await Promise.resolve().then(() => (Tf(),XX)),q=await G(["kill-server"]);console.log(q===0?`kobe: killed all tmux sessions on the \`${X}\` socket`:`kobe: no tmux sessions to kill on the \`${X}\` socket`);return}if(J==="quick-create"){let X=FJ(Y).session;if(!X)console.error("kobe quick-create: --session <name> is required"),process.exit(2);let{quickCreate:q}=await Promise.resolve().then(() => (J1(),r1));await q(X);return}if(J==="focus-tasks"){let G=FJ(Y),X=G.session;if(!X)console.error("kobe focus-tasks: --session <name> is required"),process.exit(2);let{windowIsSurface:q}=await Promise.resolve().then(() => (Tf(),XX));if(G.windowId&&await q(G.windowId))return;let{selectTasksPane:Q}=await Promise.resolve().then(() => (J1(),r1));await Q(X,{windowId:G.windowId});return}if(J==="heal-layout"){let X=FJ(Y).session;if(!X)console.error("kobe heal-layout: --session <name> is required"),process.exit(2);let{healSessionLayout:q}=await Promise.resolve().then(() => (J1(),r1)),{coalesceLayoutWork:Q}=await Promise.resolve().then(() => (QG(),Iq));await Q(X,"heal",()=>q(X));return}if(J==="resync-window"){let G=FJ(Y),X=G.session;if(!X)console.error("kobe resync-window: --session <name> is required"),process.exit(2);let q=Number.parseInt(G.cols??"",10),Q=Number.parseInt(G.rows??"",10),H=Number.isInteger(q)&&q>0&&Number.isInteger(Q)&&Q>0?{columns:q,rows:Q}:null,{resyncWindowToClient:B}=await Promise.resolve().then(() => (J1(),r1)),{coalesceLayoutWork:V}=await Promise.resolve().then(() => (QG(),Iq));await V(X,"resync",()=>B(X,{size:H,status:G.status,clientName:G.client}));return}if(J==="capture-layout"){let X=FJ(Y).session;if(!X)console.error("kobe capture-layout: --session <name> is required"),process.exit(2);let{captureGlobalLayoutOnDrag:q}=await Promise.resolve().then(() => (J1(),r1)),{coalesceLayoutWork:Q,genAgeMs:H,RESIZE_GUARD_MS:B}=await Promise.resolve().then(() => (QG(),Iq));await Q(X,"capture",async()=>{if(H(X,"resize")<B)return;await q(X)});return}if(J==="layout"){let G=FJ(Y),X=G.session;if(!X)console.error("kobe layout: --session <name> is required"),process.exit(2);let q=G.action;if(!q||!new Set(["workspace-split","workspace-close","workspace-reset","tasks-toggle","tasks-restore","ops-toggle","terminal-toggle","zen-toggle","chat-tab-close"]).has(q))console.error("kobe layout: --action must be one of workspace-split, workspace-close, workspace-reset, tasks-toggle, tasks-restore, ops-toggle, terminal-toggle, zen-toggle, chat-tab-close"),process.exit(2);let{runLayoutAction:H}=await Promise.resolve().then(() => (J1(),r1));await H(X,q,{windowId:G.windowId});return}if(J==="quick-task"){let G=FJ(Y),{startQuickTaskHost:X}=await Promise.resolve().then(() => (_4(),p4));await X({session:G.session});return}if(J==="tasks"){let G=FJ(Y),{startTasksPane:X}=await Promise.resolve().then(() => (_D(),pD));await X({initialTaskId:G.initialTaskId});return}if(J==="settings"){let{startSettingsHost:G}=await Promise.resolve().then(() => (sD(),oD));await G();return}if(J==="help-page"){let{startHelpHost:G}=await Promise.resolve().then(() => (eD(),tD));await G();return}if(J==="new-task"){let G=FJ(Y),{startNewTaskHost:X}=await Promise.resolve().then(() => (U8(),c4));await X({defaultRepo:G.repo});return}if(J==="update-page"){let{startUpdateHost:G}=await Promise.resolve().then(() => (JL(),fL));await G();return}if(J==="ops"){let G=FJ(Y);if(!G.worktree)console.error("kobe ops: --worktree <path> is required"),process.exit(2);if(G.preview){let{startOpsPreview:q}=await Promise.resolve().then(() => (r8(),$8));await q({worktree:G.worktree,relPath:G.preview});return}let{startOpsHost:X}=await Promise.resolve().then(() => (r8(),$8));await X({taskId:G.taskId??"",worktree:G.worktree,targetPane:G.targetPane??null,vendor:iY(G.vendor)});return}if(J!==void 0)console.error(`kobe: unknown command '${J}'`),vL(process.stderr),process.exit(2);let{startTui:z}=await Promise.resolve().then(() => (wL(),xL));await z()}pS().catch((f)=>{console.error("kobe failed to start:",f),process.exit(1)});
291
+ ${j.length} worktree(s) match \u2014 re-run with --yes to adopt them`);return}await nL(H,q,j,Q),console.log(`done \u2014 adopted ${j.length} worktree(s)`)}function cL(f){f.write(`${V9()}
292
+ `)}function FJ(f){let J={};for(let Y=0;Y<f.length;Y++){let z=f[Y],G=f[Y+1];if(G===void 0)continue;if(z==="--task-id")J.taskId=G,Y++;else if(z==="--worktree")J.worktree=G,Y++;else if(z==="--target-pane")J.targetPane=G,Y++;else if(z==="--vendor")J.vendor=G,Y++;else if(z==="--preview")J.preview=G,Y++;else if(z==="--session")J.session=G,Y++;else if(z==="--repo")J.repo=G,Y++;else if(z==="--initial-task-id")J.initialTaskId=G,Y++;else if(z==="--action")J.action=G,Y++;else if(z==="--window")J.windowId=G,Y++;else if(z==="--cols")J.cols=G,Y++;else if(z==="--rows")J.rows=G,Y++;else if(z==="--status")J.status=G,Y++;else if(z==="--client")J.client=G,Y++}return J}async function _S(){let[,,...f]=process.argv,[J,...Y]=f;if(J==="--version"||J==="-v"||J==="version"){let{CURRENT_VERSION:G}=await Promise.resolve().then(() => (D1(),W9));console.log(`kobe ${G}`);return}if(J==="--help"||J==="-h"||J==="help"){cL(process.stdout);return}if(J==="add"){await aS(Y);return}if(J==="remove"){await $S(Y);return}if(J==="adopt"){await pS(Y);return}if(J==="export"){let{runExportSubcommand:G}=await Promise.resolve().then(() => (OK(),FK));await G(Y);return}if(J==="repo"){let{runRepoSubcommand:G}=await Promise.resolve().then(() => (CK(),RK));await G(Y);return}if(J==="api"){let{runApiSubcommand:G}=await Promise.resolve().then(() => (nK(),cK));await G(Y);return}if(J==="update"){let{runUpdateSubcommand:G}=await Promise.resolve().then(() => ($K(),aK));await G(Y);return}if(J==="theme"){let{runThemeSubcommand:G}=await Promise.resolve().then(() => (sK(),oK));await G(Y);return}if(J==="feedback"){let{runFeedbackSubcommand:G}=await Promise.resolve().then(() => (YU(),JU));await G(Y);return}if(J==="daemon"){let{runDaemonSubcommand:G}=await Promise.resolve().then(() => (qU(),ZU));await G(Y);return}if(J==="doctor"){let{runDoctorSubcommand:G}=await Promise.resolve().then(() => (HQ(),QQ));await G(Y);return}if(J==="web"){let{runWebSubcommand:G}=await Promise.resolve().then(() => (RU(),gU));await G(Y);return}if(J==="reset"){let{runResetSubcommand:G}=await Promise.resolve().then(() => (HQ(),QQ));await G(Y);return}if(J==="reload"){let{runReloadSubcommand:G}=await Promise.resolve().then(() => (HQ(),QQ));await G(Y);return}if(J==="skill"){let{runSkillSubcommand:G}=await Promise.resolve().then(() => (NU(),kU));await G(Y);return}if(J==="hook"){let{runHookSubcommand:G}=await Promise.resolve().then(() => (Ej(),uj));await G(Y);return}if(J==="new-chattab"){let G=FJ(Y),X=G.session;if(!X)console.error("kobe new-chattab: --session <name> is required"),process.exit(2);let{windowIsSurface:q}=await Promise.resolve().then(() => (Tf(),GX));if(await q(X))return;let Q;if(G.vendor!==void 0){let B=G.vendor.trim(),{getCustomEngineIds:V}=await Promise.resolve().then(() => (Af(),cJ)),{isBuiltinVendor:j}=await Promise.resolve().then(() => (U1(),X9));if(!(j(B)||V().includes(B))){let O=[...cf,...V()].join(", "),M=`kobe: unknown engine '${B}' (known: ${O})`,{runTmux:R}=await Promise.resolve().then(() => (Tf(),GX));await R(["display-message","-t",X,M]),console.error(M),process.exit(2)}Q=B;let{setPersistedString:L}=await Promise.resolve().then(() => (Af(),cJ));L("lastSelectedVendor",Q)}let{newChatTab:H}=await Promise.resolve().then(() => (Y1(),r1));await H(X,Q);return}if(J==="kill-sessions"){let{runTmux:G,KOBE_TMUX_SOCKET:X}=await Promise.resolve().then(() => (Tf(),GX)),q=await G(["kill-server"]);console.log(q===0?`kobe: killed all tmux sessions on the \`${X}\` socket`:`kobe: no tmux sessions to kill on the \`${X}\` socket`);return}if(J==="quick-create"){let X=FJ(Y).session;if(!X)console.error("kobe quick-create: --session <name> is required"),process.exit(2);let{quickCreate:q}=await Promise.resolve().then(() => (Y1(),r1));await q(X);return}if(J==="focus-tasks"){let G=FJ(Y),X=G.session;if(!X)console.error("kobe focus-tasks: --session <name> is required"),process.exit(2);let{windowIsSurface:q}=await Promise.resolve().then(() => (Tf(),GX));if(G.windowId&&await q(G.windowId))return;let{selectTasksPane:Q}=await Promise.resolve().then(() => (Y1(),r1));await Q(X,{windowId:G.windowId});return}if(J==="heal-layout"){let X=FJ(Y).session;if(!X)console.error("kobe heal-layout: --session <name> is required"),process.exit(2);let{healSessionLayout:q}=await Promise.resolve().then(() => (Y1(),r1)),{coalesceLayoutWork:Q}=await Promise.resolve().then(() => (qG(),Sq));await Q(X,"heal",()=>q(X));return}if(J==="resync-window"){let G=FJ(Y),X=G.session;if(!X)console.error("kobe resync-window: --session <name> is required"),process.exit(2);let q=Number.parseInt(G.cols??"",10),Q=Number.parseInt(G.rows??"",10),H=Number.isInteger(q)&&q>0&&Number.isInteger(Q)&&Q>0?{columns:q,rows:Q}:null,{resyncWindowToClient:B}=await Promise.resolve().then(() => (Y1(),r1)),{coalesceLayoutWork:V}=await Promise.resolve().then(() => (qG(),Sq));await V(X,"resync",()=>B(X,{size:H,status:G.status,clientName:G.client}));return}if(J==="capture-layout"){let X=FJ(Y).session;if(!X)console.error("kobe capture-layout: --session <name> is required"),process.exit(2);let{captureGlobalLayoutOnDrag:q}=await Promise.resolve().then(() => (Y1(),r1)),{coalesceLayoutWork:Q,genAgeMs:H,RESIZE_GUARD_MS:B}=await Promise.resolve().then(() => (qG(),Sq));await Q(X,"capture",async()=>{if(H(X,"resize")<B)return;await q(X)});return}if(J==="layout"){let G=FJ(Y),X=G.session;if(!X)console.error("kobe layout: --session <name> is required"),process.exit(2);let q=G.action;if(!q||!new Set(["workspace-split","workspace-close","workspace-reset","tasks-toggle","tasks-restore","ops-toggle","terminal-toggle","zen-toggle","chat-tab-close"]).has(q))console.error("kobe layout: --action must be one of workspace-split, workspace-close, workspace-reset, tasks-toggle, tasks-restore, ops-toggle, terminal-toggle, zen-toggle, chat-tab-close"),process.exit(2);let{runLayoutAction:H}=await Promise.resolve().then(() => (Y1(),r1));await H(X,q,{windowId:G.windowId});return}if(J==="quick-task"){let G=FJ(Y),{startQuickTaskHost:X}=await Promise.resolve().then(() => (s4(),o4));await X({session:G.session});return}if(J==="tasks"){let G=FJ(Y),{startTasksPane:X}=await Promise.resolve().then(() => (sD(),oD));await X({initialTaskId:G.initialTaskId});return}if(J==="settings"){let{startSettingsHost:G}=await Promise.resolve().then(() => (eD(),tD));await G();return}if(J==="help-page"){let{startHelpHost:G}=await Promise.resolve().then(() => (JL(),fL));await G();return}if(J==="new-task"){let G=FJ(Y),{startNewTaskHost:X}=await Promise.resolve().then(() => (M8(),d4));await X({defaultRepo:G.repo});return}if(J==="update-page"){let{startUpdateHost:G}=await Promise.resolve().then(() => (zL(),YL));await G();return}if(J==="ops"){let G=FJ(Y);if(!G.worktree)console.error("kobe ops: --worktree <path> is required"),process.exit(2);if(G.preview){let{startOpsPreview:q}=await Promise.resolve().then(() => (o8(),_8));await q({worktree:G.worktree,relPath:G.preview});return}let{startOpsHost:X}=await Promise.resolve().then(() => (o8(),_8));await X({taskId:G.taskId??"",worktree:G.worktree,targetPane:G.targetPane??null,vendor:iY(G.vendor)});return}if(J!==void 0)console.error(`kobe: unknown command '${J}'`),cL(process.stderr),process.exit(2);let{startTui:z}=await Promise.resolve().then(() => (PL(),hL));await z()}_S().catch((f)=>{console.error("kobe failed to start:",f),process.exit(1)});