@sma1lboy/kobe 0.7.55 → 0.7.57

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 +185 -185
  2. package/package.json +1 -1
package/dist/cli/index.js CHANGED
@@ -1,87 +1,87 @@
1
1
  #!/usr/bin/env bun
2
2
  // @bun
3
- var o3=Object.defineProperty;var s3=(J)=>J;function t3(J,z){this[J]=s3.bind(null,z)}var q1=(J,z)=>{for(var Y in z)o3(J,Y,{get:z[Y],enumerable:!0,configurable:!0,set:t3.bind(z,Y)})};var C=(J,z)=>()=>(J&&(z=J(J=0)),z);var Pq=import.meta.require;import{basename as e3}from"path";function JO(J){let z="";for(let Y=0;Y<J.length;Y++){let Z=J[Y];if(Z==="*")if(J[Y+1]==="*")z+=".*",Y++;else z+="[^/]*";else if(Z==="?")z+="[^/]";else if(Z&&"\\^$.|+()[]{}".includes(Z))z+=`\\${Z}`;else z+=Z}return new RegExp(`^${z}$`)}function hq(J,z){let Y;try{Y=JO(J)}catch{return!1}return Y.test(z)||Y.test(e3(z))}var nf=()=>{};var EW={};q1(EW,{resolvePersistedVendor:()=>uJ,prevVendorWithin:()=>lf,nextVendorWithin:()=>OY,nextVendor:()=>zO,isBuiltinVendor:()=>fJ,coerceVendorId:()=>AY,BUILTIN_VENDORS:()=>tY,ALL_VENDORS:()=>$1});function fJ(J){return J==="claude"||J==="codex"||J==="copilot"}function zO(J){let z=$1.indexOf(J);return $1[(z+1)%$1.length]??$1[0]}function OY(J,z){if(J.length===0)return z;let Y=J.indexOf(z);return J[(Y+1)%J.length]??J[0]??z}function lf(J,z){if(J.length===0)return z;let Y=J.indexOf(z);if(Y<0)return J[J.length-1]??z;return J[(Y-1+J.length)%J.length]??z}function AY(J){let z=J?.trim();return z&&z.length>0?z:"claude"}function uJ(J,z=[]){let Y=J?.trim();if(!Y)return"claude";if(fJ(Y))return Y;if(z.includes(Y))return Y;return"claude"}var tY,$1;var a1=C(()=>{tY=["claude","codex","copilot"],$1=[...tY]});var vq;var wW=C(()=>{vq={$schema:"https://json.schemastore.org/package.json",name:"@sma1lboy/kobe",version:"0.7.55",description:"TUI orchestrator for Claude Code (codename)",type:"module",packageManager:"bun@1.3.13",bin:{kobe:"dist/cli/index.js"},files:["dist/cli","dist/web-ui","dist/*.wav","README.md","LICENSE"],publishConfig:{access:"public"},repository:{type:"git",url:"git+https://github.com/Sma1lboy/kobe.git"},homepage:"https://github.com/Sma1lboy/kobe#readme",bugs:{url:"https://github.com/Sma1lboy/kobe/issues"},engines:{bun:">=1.3.11"},scripts:{dev:"env KOBE_DEV=1 bun --preload @opentui/solid/preload --conditions=browser ./src/cli/index.ts","dev:sandbox":"mkdir -p .dev-sandbox/home && env KOBE_DEV=1 KOBE_HOME_DIR=$PWD/.dev-sandbox/home KOBE_TMUX_SOCKET=kobe-sandbox bun --preload @opentui/solid/preload --conditions=browser ./src/cli/index.ts","dev:sandbox:reset":"env KOBE_TMUX_SOCKET=kobe-sandbox bun ./src/cli/index.ts kill-sessions","dev:version":"bash ../../scripts/dev-version.sh",build:"bun run scripts/build.ts","build:with-web":"bun run build",compile:"bun run scripts/compile.ts",typecheck:"tsc --noEmit","check-i18n":"bun run scripts/check-i18n.ts",test:"bun run test:fast && bun run test:socket","test:fast":"vitest run --passWithNoTests","test:socket":"KOBE_INCLUDE_SOCKET=1 vitest run test/daemon --pool forks --minWorkers=1 --maxWorkers=1 --passWithNoTests","test:behavior":"KOBE_INCLUDE_BEHAVIOR=1 vitest run test/behavior --passWithNoTests",bench:"vitest bench --run",lint:"biome check .",knip:"knip-bun",postinstall:"bun run scripts/check-preview-deps.ts || true",prepublishOnly:"bun run typecheck && bun run build"},"//":"biome.json + bunfig.toml live at the monorepo root since they apply repo-wide; bun.lock also lives at root (workspace-shared).",dependencies:{"@ansi-tools/parser":"^1.0.15","@opentui/core":"0.2.4","@opentui/solid":"0.2.4",ws:"^8.18.0","solid-js":"1.9.13","node-pty":"^1.1.0"},devDependencies:{"@biomejs/biome":"1.9.4","@sma1lboy/kobe-daemon":"0.7.11","@tsconfig/bun":"1.0.10","@types/bun":"1.3.14","@types/node":"25.6.2",knip:"^6.14.2","kobe-web":"workspace:*",typescript:"5.8.2",vitest:"2.1.9"},trustedDependencies:[]}});import{createHash as PW}from"crypto";import{homedir as ZO}from"os";import{join as eY}from"path";function hW(){return process.env.KOBE_DEV==="1"}function Tz(){return process.env.KOBE_HOME_DIR??ZO()}function jJ(){return eY(Tz(),".kobe")}function _J(){return eY(Tz(),".config","kobe","state.json")}function GO(){return eY(jJ(),"settings")}function vW(){return eY(GO(),"keybindings.yaml")}function $f(){return eY(jJ(),"issue-assets")}function mq(J,z,Y){let Z=PW("sha1").update(`${z}@${J}:${Y??22}`).digest("hex").slice(0,16);return eY(jJ(),"ssh",`${Z}.sock`)}function mW(J){let z=PW("sha1").update(J).digest("hex").slice(0,16);return eY(jJ(),"worktree-init",z)}var t1=()=>{};var dW={};q1(dW,{repoSlug:()=>JZ,releasePageUrl:()=>of,recommendedGlobalInstallCommand:()=>pf,isNewerSemver:()=>af,fetchReleaseSummaries:()=>QO,fetchReleaseNotesRange:()=>rf,fetchReleaseNotes:()=>qO,compareSemver:()=>cq,checkLatestVersion:()=>XX,UPDATE_SCRIPT_URL:()=>dq,UPDATE_COMMAND:()=>pz,PACKAGE_NAME:()=>_f,CURRENT_VERSION:()=>r0});function JZ(){let J=vq.repository?.url;if(!J)return null;let z=J.match(/github\.com[:/]([^/]+)\/([^/.]+)/);if(!z||!z[1]||!z[2])return null;return`${z[1]}/${z[2]}`}function pf(){return`npm install -g ${_f}@latest`}async function XO(J){let z=new AbortController,Y=setTimeout(()=>z.abort(),nq);try{let Z=J.replace("/","%2F"),G=await fetch(`https://registry.npmjs.org/${Z}/latest`,{signal:z.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 af(J,z){return cq(J,z)>0}function cq(J,z){let Y=(X)=>X.split("-")[0]??X,Z=Y(J).split(".").map((X)=>Number.parseInt(X,10)),G=Y(z).split(".").map((X)=>Number.parseInt(X,10));for(let X=0;X<3;X++){let q=Z[X]??0,H=G[X]??0;if(Number.isNaN(q)||Number.isNaN(H))return 0;if(q>H)return 1;if(q<H)return-1}return 0}async function XX(J={}){let z=process.env.KOBE_FAKE_UPDATE;if(z)return{current:r0,latest:z,hasUpdate:af(z,r0)};if(hW()&&!J.force)return null;let Y=await XO(_f);if(!Y)return null;return{current:r0,latest:Y,hasUpdate:af(Y,r0)}}function cW(J){if(typeof J!=="string")return null;return J.match(/^v(\d+\.\d+\.\d+)$/)?.[1]??null}async function qO(J){let z=JZ();if(!z)return null;let Y=`v${J}`,Z=new AbortController,G=setTimeout(()=>Z.abort(),nq);try{let X=await fetch(`https://api.github.com/repos/${z}/releases/tags/${Y}`,{signal:Z.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!X.ok)return null;let q=await X.json();if(typeof q.body!=="string"||typeof q.html_url!=="string")return null;return{body:q.body,url:q.html_url,version:J}}catch{return null}finally{clearTimeout(G)}}async function rf(J){let z=JZ();if(!z)return[];let Y=J.limit??100,Z=new AbortController,G=setTimeout(()=>Z.abort(),nq);try{let X=await fetch(`https://api.github.com/repos/${z}/releases?per_page=${Y}`,{signal:Z.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!X.ok)return[];let q=await X.json();if(!Array.isArray(q))return[];return q.map((H)=>{let f=cW(H.tag_name);if(!f||typeof H.html_url!=="string"||typeof H.body!=="string")return null;if(cq(f,J.current)<=0)return null;if(cq(f,J.latest)>0)return null;return{version:f,url:H.html_url,body:H.body}}).filter((H)=>H!==null)}catch{return[]}finally{clearTimeout(G)}}async function QO(J=12){let z=JZ();if(!z)return[];let Y=new AbortController,Z=setTimeout(()=>Y.abort(),nq);try{let G=await fetch(`https://api.github.com/repos/${z}/releases?per_page=${J}`,{signal:Y.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!G.ok)return[];let X=await G.json();if(!Array.isArray(X))return[];return X.map((q)=>{let H=cW(q.tag_name);if(!H||typeof q.html_url!=="string")return null;return{version:H,url:q.html_url}}).filter((q)=>q!==null)}catch{return[]}finally{clearTimeout(Z)}}function of(J){let z=JZ();if(!z)return null;return`https://github.com/${z}/releases/tag/v${J}`}var r0,_f,dq="https://raw.githubusercontent.com/Sma1lboy/kobe/main/scripts/update.sh",pz,nq=3000;var AJ=C(()=>{wW();t1();r0=vq.version,_f=vq.name;pz=`curl -fsSL ${dq} | sh`});import{spawn as HO,spawnSync as fO}from"child_process";import{existsSync as iW}from"fs";import{mkdir as jO,readFile as BO,readdir as WO}from"fs/promises";function zZ(J){return`'${J.replace(/'/g,"'\\''")}'`}function VO(J){return/^[A-Za-z0-9_@%+=:,./-]+$/.test(J)?J:zZ(J)}function $W(J){return J.map(zZ).join(" ")}function KO(J,z){let Y=$W(J);return z?`cd ${zZ(z)} && ${Y}`:Y}function UO(J){if(!J)return"";let z=Object.entries(J).filter(([Y])=>/^[A-Za-z_][A-Za-z0-9_]*$/.test(Y));if(z.length===0)return"";return`${z.map(([Y,Z])=>`${Y}=${zZ(Z)}`).join(" ")} `}function qX(J,z={}){let Y=["ssh"];if(z.tty)Y.push("-tt");if(z.batch)Y.push("-o","BatchMode=yes");if(Y.push("-o","ControlMaster=auto","-o",`ControlPath=${J.controlPath}`,"-o","ControlPersist=300"),Y.push("-o","StrictHostKeyChecking=accept-new"),J.port)Y.push("-p",String(J.port));if(J.auth.kind==="key"&&J.auth.keyPath)Y.push("-i",J.auth.keyPath);return Y.push(`${J.user}@${J.host}`),Y}function aW(J,z={}){return new Promise((Y)=>{let[Z,...G]=J,X="",q="",H=!1,f=(V)=>{if(H)return;H=!0,Y({stdout:X,stderr:q,exitCode:V})},j;try{j=HO(Z??"",G,{cwd:z.cwd,env:z.env,shell:!1,signal:z.signal})}catch{f(-1);return}j.stdout?.setEncoding("utf8"),j.stdout?.on("data",(V)=>{X+=V}),j.stderr?.setEncoding("utf8"),j.stderr?.on("data",(V)=>{q+=V}),j.on("error",()=>f(-1)),j.on("close",(V)=>f(V??-1))})}class iq{isRemote=!1;run(J,z={}){return aW(J,{cwd:z.cwd,env:z.env?{...process.env,...z.env}:process.env,signal:z.signal})}async exists(J){return iW(J)}existsSync(J){return iW(J)}async mkdirp(J){await jO(J,{recursive:!0})}async readFile(J){try{return await BO(J,"utf8")}catch{return null}}async readdir(J){try{return await WO(J)}catch{return[]}}wrapCommand(J){return J}ensureReady(){}}class iZ{spec;spawn;isRemote=!0;masterUp=!1;spawnAsync;constructor(J,z=lW,Y){this.spec=J;this.spawn=z;this.spawnAsync=Y??(this.spawn===lW?DO:async(Z,G)=>this.spawn(Z,G))}ensureReady(){if(this.masterUp)return;if(this.spawn([...qX(this.spec,{batch:!0}),"-O","check"]).exitCode===0){this.masterUp=!0;return}let z=[...qX(this.spec,{batch:this.spec.auth.kind!=="password"}),"-fN"];if(this.spec.auth.kind==="password"){let Y=this.spec.auth.getPassword();if(Y!=null){this.spawn(["sshpass","-e",...z],{SSHPASS:Y}),this.masterUp=!0;return}}this.spawn(z),this.masterUp=!0}async run(J,z={}){this.ensureReady();let Y=`${UO(z.env)}${$W(J)}`,Z=z.cwd?`cd ${zZ(z.cwd)} && ${Y}`:Y;return this.spawnAsync([...qX(this.spec,{batch:!0}),Z],void 0,{signal:z.signal})}async exists(J){return(await this.run(["test","-e",J])).exitCode===0}existsSync(J){return this.ensureReady(),this.spawn([...qX(this.spec,{batch:!0}),KO(["test","-e",J])]).exitCode===0}async mkdirp(J){await this.run(["mkdir","-p",J])}async readFile(J){let z=await this.run(["cat",J]);return z.exitCode===0?z.stdout:null}async readdir(J){let z=await this.run(["ls","-1A",J]);if(z.exitCode!==0)return[];return z.stdout.split(`
4
- `).filter((Y)=>Y.length>0)}wrapCommand(J,z={}){let Y=z.cwd?`cd ${zZ(z.cwd)} && ${J}`:J;return`${qX(this.spec,{tty:z.tty}).map(VO).join(" ")} ${zZ(Y)}`}}var lW=(J,z)=>{let[Y,...Z]=J,G=fO(Y??"",Z,{env:z?{...process.env,...z}:process.env,encoding:"utf8",shell:!1});return{stdout:G.stdout??"",stderr:G.stderr??"",exitCode:G.status??-1}},DO=(J,z,Y)=>aW(J,{env:z?{...process.env,...z}:process.env,signal:Y?.signal});var sf=()=>{};import{spawnSync as LO}from"child_process";import{platform as FO}from"os";function _W(J,z,Y){return{service:MO,account:Y?`${z}@${J}:${Y}`:`${z}@${J}`}}function ef(J=tf){return J.platform()==="darwin"}function pW(J,z,Y=tf){if(Y.platform()!=="darwin")return!1;let{exitCode:Z}=Y.run(["security","add-generic-password","-U","-s",J.service,"-a",J.account,"-w",z]);return Z===0}function lq(J,z=tf){if(z.platform()!=="darwin")return null;let{stdout:Y,exitCode:Z}=z.run(["security","find-generic-password","-s",J.service,"-a",J.account,"-w"]);if(Z!==0)return null;return Y.replace(/\n$/,"")}var tf,MO="kobe-remote-ssh";var J8=C(()=>{tf={run(J){let[z,...Y]=J,Z=LO(z??"",Y,{encoding:"utf8",shell:!1});return{stdout:Z.stdout??"",exitCode:Z.status??-1}},platform(){return FO()}}});import{mkdirSync as OO,readFileSync as AO,renameSync as RO,writeFileSync as gO}from"fs";import{dirname as NO}from"path";function NJ(){try{let J=AO(_J(),"utf8"),z=JSON.parse(J);if(z&&typeof z==="object"&&!Array.isArray(z))return z}catch{}return{}}function rW(J){let z=_J();OO(NO(z),{recursive:!0});let Y=`${z}.tmp`;gO(Y,JSON.stringify(J,null,2),"utf8"),RO(Y,z)}function lZ(J){let z=NJ();if(J(z)!==!1)rW(z);return z}function RY(J){return lZ((z)=>{for(let[Y,Z]of Object.entries(J))if(Z===void 0)delete z[Y];else z[Y]=Z;return})}function fz(J,z){let Y=NJ()[J];return typeof Y==="boolean"?Y:z}function oW(J,z){RY({[J]:z})}function sW(J){rW(J)}var gY=C(()=>{t1()});var tz={};q1(tz,{statePath:()=>bO,setRepoInitOverride:()=>SO,setPersistedString:()=>e1,resolveRepoRoot:()=>rz,resolveMainRepoRoot:()=>kO,removeSavedRepo:()=>G8,remoteRepoKey:()=>zV,normalizeSavedRepos:()=>Y8,isRemoteRepoKey:()=>_1,isRemoteProjectsEnabled:()=>X8,isGitRepo:()=>CO,getSavedRepos:()=>CJ,getRepoInitOverride:()=>Z8,getRemoteRepos:()=>q8,getRemoteRepoConfig:()=>sz,getPersistedString:()=>N1,getCustomEngineIds:()=>EJ,addSavedRepo:()=>oz,addRemoteRepo:()=>Q8});import{spawnSync as z8}from"child_process";import{realpathSync as tW}from"fs";function rz(J){if(_1(J))return J;let z=z8("git",["rev-parse","--show-toplevel"],{cwd:J,encoding:"utf8",shell:!1});if(z.status!==0)return J;let Y=(z.stdout??"").trim();if(!Y)return J;try{if(tW(J)===tW(Y))return J}catch{}return Y}function CO(J){if(_1(J))return!1;let z=z8("git",["rev-parse","--is-inside-work-tree"],{cwd:J,encoding:"utf8",shell:!1});return z.status===0&&(z.stdout??"").trim()==="true"}function kO(J){if(_1(J))return J;let z=z8("git",["worktree","list","--porcelain"],{cwd:J,encoding:"utf8",shell:!1});if(z.status!==0)return rz(J);return(z.stdout??"").split(/\r?\n/).find((Z)=>Z.startsWith("worktree "))?.slice(9).trim()||rz(J)}function bO(){return _J()}function $q(J){let z=J.savedRepos;if(!Array.isArray(z))return[];return z.filter((Y)=>typeof Y==="string")}function CJ(){return $q(NJ())}function N1(J){let z=NJ()[J];return typeof z==="string"?z:void 0}function e1(J,z){RY({[J]:z})}function EJ(){let J=NJ().customEngineIds;if(!Array.isArray(J))return[];return J.filter((z)=>typeof z==="string"&&z.trim().length>0)}function oz(J){let z=rz(J),Y={added:!1,path:z,total:0};return lZ((Z)=>{let G=$q(Z);if(G.includes(z))return Y={added:!1,path:z,total:G.length},!1;Z.savedRepos=[...G,z],Y={added:!0,path:z,total:G.length+1};return}),Y}function Y8(){let J=CJ(),z=new Set,Y=[],Z=!1;for(let G of J){let X=rz(G);if(X!==G)Z=!0;if(z.has(X)){Z=!0;continue}z.add(X),Y.push(X)}if(!Z)return;RY({savedRepos:Y})}function eW(J){let z=J.repoConfigs;if(!z||typeof z!=="object"||Array.isArray(z))return{};return z}function JV(J){if(!J||typeof J!=="object")return{};let z=J;return{initScript:typeof z.initScript==="string"&&z.initScript.length>0?z.initScript:void 0,initPrompt:typeof z.initPrompt==="string"&&z.initPrompt.length>0?z.initPrompt:void 0}}function Z8(J){return JV(eW(NJ())[rz(J)])}function SO(J,z){let Y=rz(J),Z={};return lZ((G)=>{let X={...eW(G)},q=JV(X[Y]),H=z.initScript===void 0?q.initScript:z.initScript||void 0,f=z.initPrompt===void 0?q.initPrompt:z.initPrompt||void 0;if(Z={...H?{initScript:H}:{},...f?{initPrompt:f}:{}},!Z.initScript&&!Z.initPrompt){let{[Y]:j,...V}=X;G.repoConfigs=V}else X[Y]=Z,G.repoConfigs=X;return}),Z}function G8(J){let z={removed:!1,path:J,total:0};return lZ((Y)=>{let Z=$q(Y);if(!Z.includes(J))return z={removed:!1,path:J,total:Z.length},!1;if(Y.savedRepos=Z.filter((G)=>G!==J),_1(J)){let G=aq(Y);if(J in G){let X={...G};delete X[J],Y.remoteRepos=X}}z={removed:!0,path:J,total:Z.length-1};return}),z}function _1(J){return J.startsWith("ssh://")}function X8(){return fz("experimental.remoteProjects",!1)}function zV(J,z,Y){return Y?`ssh://${z}@${J}:${Y}`:`ssh://${z}@${J}`}function aq(J){let z=J.remoteRepos;if(!z||typeof z!=="object"||Array.isArray(z))return{};return z}function sz(J){return aq(NJ())[J]??null}function q8(){return aq(NJ())}function Q8(J){let z=zV(J.host,J.user,J.port),Y=!1;return lZ((Z)=>{let G={...aq(Z)};G[z]=J,Z.remoteRepos=G;let X=$q(Z);if(Y=!X.includes(z),Y)Z.savedRepos=[...X,z];return}),{key:z,added:Y}}var A1=C(()=>{t1();gY()});var GV={};q1(GV,{runAddRemote:()=>TO,parseRemoteFlags:()=>ZV});import{createInterface as IO}from"readline";function ZV(J){let z={};for(let Y=0;Y<J.length;Y++){let Z=J[Y];switch(Z){case"--host":z.host=J[++Y];break;case"--user":z.user=J[++Y];break;case"--path":z.path=J[++Y];break;case"--port":{let G=Number(J[++Y]);if(!Number.isInteger(G)||G<=0)jz(`invalid --port "${J[Y]}"`);z.port=G;break}case"--key":{let G=J[Y+1];if(G&&!G.startsWith("-"))z.key={present:!0,path:G},Y++;else z.key={present:!0};break}case"--password":z.password=!0;break;case"--help":case"-h":process.stdout.write(YV),process.exit(0);break;default:jz(`unknown flag "${Z}"`)}}return z}function jz(J){process.stderr.write(`kobe add --remote: ${J}
3
+ var DO=Object.defineProperty;var LO=(J)=>J;function FO(J,z){this[J]=LO.bind(null,z)}var q1=(J,z)=>{for(var Y in z)DO(J,Y,{get:z[Y],enumerable:!0,configurable:!0,set:FO.bind(z,Y)})};var C=(J,z)=>()=>(J&&(z=J(J=0)),z);var PQ=import.meta.require;import{basename as MO}from"path";function OO(J){let z="";for(let Y=0;Y<J.length;Y++){let Z=J[Y];if(Z==="*")if(J[Y+1]==="*")z+=".*",Y++;else z+="[^/]*";else if(Z==="?")z+="[^/]";else if(Z&&"\\^$.|+()[]{}".includes(Z))z+=`\\${Z}`;else z+=Z}return new RegExp(`^${z}$`)}function hQ(J,z){let Y;try{Y=OO(J)}catch{return!1}return Y.test(z)||Y.test(MO(z))}var $f=()=>{};var oW={};q1(oW,{resolvePersistedVendor:()=>PJ,prevVendorWithin:()=>af,nextVendorWithin:()=>AY,nextVendor:()=>AO,isBuiltinVendor:()=>jJ,coerceVendorId:()=>RY,BUILTIN_VENDORS:()=>tY,ALL_VENDORS:()=>a1});function jJ(J){return J==="claude"||J==="codex"||J==="copilot"}function AO(J){let z=a1.indexOf(J);return a1[(z+1)%a1.length]??a1[0]}function AY(J,z){if(J.length===0)return z;let Y=J.indexOf(z);return J[(Y+1)%J.length]??J[0]??z}function af(J,z){if(J.length===0)return z;let Y=J.indexOf(z);if(Y<0)return J[J.length-1]??z;return J[(Y-1+J.length)%J.length]??z}function RY(J){let z=J?.trim();return z&&z.length>0?z:"claude"}function PJ(J,z=[]){let Y=J?.trim();if(!Y)return"claude";if(jJ(Y))return Y;if(z.includes(Y))return Y;return"claude"}var tY,a1;var _1=C(()=>{tY=["claude","codex","copilot"],a1=[...tY]});var vQ;var sW=C(()=>{vQ={$schema:"https://json.schemastore.org/package.json",name:"@sma1lboy/kobe",version:"0.7.57",description:"TUI orchestrator for Claude Code (codename)",type:"module",packageManager:"bun@1.3.13",bin:{kobe:"dist/cli/index.js"},files:["dist/cli","dist/web-ui","dist/*.wav","README.md","LICENSE"],publishConfig:{access:"public"},repository:{type:"git",url:"git+https://github.com/Sma1lboy/kobe.git"},homepage:"https://github.com/Sma1lboy/kobe#readme",bugs:{url:"https://github.com/Sma1lboy/kobe/issues"},engines:{bun:">=1.3.11"},scripts:{dev:"env KOBE_DEV=1 bun --preload @opentui/solid/preload --conditions=browser ./src/cli/index.ts","dev:sandbox":"mkdir -p .dev-sandbox/home && env KOBE_DEV=1 KOBE_HOME_DIR=$PWD/.dev-sandbox/home KOBE_TMUX_SOCKET=kobe-sandbox bun --preload @opentui/solid/preload --conditions=browser ./src/cli/index.ts","dev:sandbox:reset":"env KOBE_TMUX_SOCKET=kobe-sandbox bun ./src/cli/index.ts kill-sessions","dev:version":"bash ../../scripts/dev-version.sh",build:"bun run scripts/build.ts","build:with-web":"bun run build",compile:"bun run scripts/compile.ts",typecheck:"tsc --noEmit","check-i18n":"bun run scripts/check-i18n.ts",test:"bun run test:fast && bun run test:socket","test:fast":"vitest run --passWithNoTests","test:socket":"KOBE_INCLUDE_SOCKET=1 vitest run test/daemon --pool forks --minWorkers=1 --maxWorkers=1 --passWithNoTests","test:behavior":"KOBE_INCLUDE_BEHAVIOR=1 vitest run test/behavior --passWithNoTests",bench:"vitest bench --run",lint:"biome check .",knip:"knip-bun",postinstall:"bun run scripts/check-preview-deps.ts || true",prepublishOnly:"bun run typecheck && bun run build"},"//":"biome.json + bunfig.toml live at the monorepo root since they apply repo-wide; bun.lock also lives at root (workspace-shared).",dependencies:{"@ansi-tools/parser":"^1.0.15","@opentui/core":"0.2.4","@opentui/solid":"0.2.4",ws:"^8.18.0","solid-js":"1.9.13","node-pty":"^1.1.0"},devDependencies:{"@biomejs/biome":"1.9.4","@sma1lboy/kobe-daemon":"0.7.11","@tsconfig/bun":"1.0.10","@types/bun":"1.3.14","@types/node":"25.6.2",knip:"^6.14.2","kobe-web":"workspace:*",typescript:"5.8.2",vitest:"2.1.9"},trustedDependencies:[]}});import{createHash as tW}from"crypto";import{homedir as gO}from"os";import{join as eY}from"path";function eW(){return process.env.KOBE_DEV==="1"}function rJ(){return process.env.KOBE_HOME_DIR??gO()}function XJ(){return eY(rJ(),".kobe")}function oJ(){return eY(rJ(),".config","kobe","state.json")}function NO(){return eY(XJ(),"settings")}function JV(){return eY(NO(),"keybindings.yaml")}function _f(){return eY(XJ(),"issue-assets")}function mQ(J,z,Y){let Z=tW("sha1").update(`${z}@${J}:${Y??22}`).digest("hex").slice(0,16);return eY(XJ(),"ssh",`${Z}.sock`)}function zV(J){let z=tW("sha1").update(J).digest("hex").slice(0,16);return eY(XJ(),"worktree-init",z)}var p1=()=>{};var ZV={};q1(ZV,{repoSlug:()=>JZ,releasePageUrl:()=>tf,recommendedGlobalInstallCommand:()=>of,isNewerSemver:()=>pf,fetchReleaseSummaries:()=>bO,fetchReleaseNotesRange:()=>sf,fetchReleaseNotes:()=>kO,compareSemver:()=>cQ,checkLatestVersion:()=>XX,UPDATE_SCRIPT_URL:()=>dQ,UPDATE_COMMAND:()=>oz,PACKAGE_NAME:()=>rf,CURRENT_VERSION:()=>J1});function JZ(){let J=vQ.repository?.url;if(!J)return null;let z=J.match(/github\.com[:/]([^/]+)\/([^/.]+)/);if(!z||!z[1]||!z[2])return null;return`${z[1]}/${z[2]}`}function of(){return`npm install -g ${rf}@latest`}async function CO(J){let z=new AbortController,Y=setTimeout(()=>z.abort(),nQ);try{let Z=J.replace("/","%2F"),G=await fetch(`https://registry.npmjs.org/${Z}/latest`,{signal:z.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 pf(J,z){return cQ(J,z)>0}function cQ(J,z){let Y=(X)=>X.split("-")[0]??X,Z=Y(J).split(".").map((X)=>Number.parseInt(X,10)),G=Y(z).split(".").map((X)=>Number.parseInt(X,10));for(let X=0;X<3;X++){let Q=Z[X]??0,H=G[X]??0;if(Number.isNaN(Q)||Number.isNaN(H))return 0;if(Q>H)return 1;if(Q<H)return-1}return 0}async function XX(J={}){let z=process.env.KOBE_FAKE_UPDATE;if(z)return{current:J1,latest:z,hasUpdate:pf(z,J1)};if(eW()&&!J.force)return null;let Y=await CO(rf);if(!Y)return null;return{current:J1,latest:Y,hasUpdate:pf(Y,J1)}}function YV(J){if(typeof J!=="string")return null;return J.match(/^v(\d+\.\d+\.\d+)$/)?.[1]??null}async function kO(J){let z=JZ();if(!z)return null;let Y=`v${J}`,Z=new AbortController,G=setTimeout(()=>Z.abort(),nQ);try{let X=await fetch(`https://api.github.com/repos/${z}/releases/tags/${Y}`,{signal:Z.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!X.ok)return null;let Q=await X.json();if(typeof Q.body!=="string"||typeof Q.html_url!=="string")return null;return{body:Q.body,url:Q.html_url,version:J}}catch{return null}finally{clearTimeout(G)}}async function sf(J){let z=JZ();if(!z)return[];let Y=J.limit??100,Z=new AbortController,G=setTimeout(()=>Z.abort(),nQ);try{let X=await fetch(`https://api.github.com/repos/${z}/releases?per_page=${Y}`,{signal:Z.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!X.ok)return[];let Q=await X.json();if(!Array.isArray(Q))return[];return Q.map((H)=>{let f=YV(H.tag_name);if(!f||typeof H.html_url!=="string"||typeof H.body!=="string")return null;if(cQ(f,J.current)<=0)return null;if(cQ(f,J.latest)>0)return null;return{version:f,url:H.html_url,body:H.body}}).filter((H)=>H!==null)}catch{return[]}finally{clearTimeout(G)}}async function bO(J=12){let z=JZ();if(!z)return[];let Y=new AbortController,Z=setTimeout(()=>Y.abort(),nQ);try{let G=await fetch(`https://api.github.com/repos/${z}/releases?per_page=${J}`,{signal:Y.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!G.ok)return[];let X=await G.json();if(!Array.isArray(X))return[];return X.map((Q)=>{let H=YV(Q.tag_name);if(!H||typeof Q.html_url!=="string")return null;return{version:H,url:Q.html_url}}).filter((Q)=>Q!==null)}catch{return[]}finally{clearTimeout(Z)}}function tf(J){let z=JZ();if(!z)return null;return`https://github.com/${z}/releases/tag/v${J}`}var J1,rf,dQ="https://raw.githubusercontent.com/Sma1lboy/kobe/main/scripts/update.sh",oz,nQ=3000;var NJ=C(()=>{sW();p1();J1=vQ.version,rf=vQ.name;oz=`curl -fsSL ${dQ} | sh`});import{spawn as SO,spawnSync as IO}from"child_process";import{existsSync as XV}from"fs";import{mkdir as yO,readFile as TO,readdir as xO}from"fs/promises";function zZ(J){return`'${J.replace(/'/g,"'\\''")}'`}function uO(J){return/^[A-Za-z0-9_@%+=:,./-]+$/.test(J)?J:zZ(J)}function qV(J){return J.map(zZ).join(" ")}function EO(J,z){let Y=qV(J);return z?`cd ${zZ(z)} && ${Y}`:Y}function wO(J){if(!J)return"";let z=Object.entries(J).filter(([Y])=>/^[A-Za-z_][A-Za-z0-9_]*$/.test(Y));if(z.length===0)return"";return`${z.map(([Y,Z])=>`${Y}=${zZ(Z)}`).join(" ")} `}function QX(J,z={}){let Y=["ssh"];if(z.tty)Y.push("-tt");if(z.batch)Y.push("-o","BatchMode=yes");if(Y.push("-o","ControlMaster=auto","-o",`ControlPath=${J.controlPath}`,"-o","ControlPersist=300"),Y.push("-o","StrictHostKeyChecking=accept-new"),J.port)Y.push("-p",String(J.port));if(J.auth.kind==="key"&&J.auth.keyPath)Y.push("-i",J.auth.keyPath);return Y.push(`${J.user}@${J.host}`),Y}function HV(J,z={}){return new Promise((Y)=>{let[Z,...G]=J,X="",Q="",H=!1,f=(V)=>{if(H)return;H=!0,Y({stdout:X,stderr:Q,exitCode:V})},j;try{j=SO(Z??"",G,{cwd:z.cwd,env:z.env,shell:!1,signal:z.signal})}catch{f(-1);return}j.stdout?.setEncoding("utf8"),j.stdout?.on("data",(V)=>{X+=V}),j.stderr?.setEncoding("utf8"),j.stderr?.on("data",(V)=>{Q+=V}),j.on("error",()=>f(-1)),j.on("close",(V)=>f(V??-1))})}class iQ{isRemote=!1;run(J,z={}){return HV(J,{cwd:z.cwd,env:z.env?{...process.env,...z.env}:process.env,signal:z.signal})}async exists(J){return XV(J)}existsSync(J){return XV(J)}async mkdirp(J){await yO(J,{recursive:!0})}async readFile(J){try{return await TO(J,"utf8")}catch{return null}}async readdir(J){try{return await xO(J)}catch{return[]}}wrapCommand(J){return J}ensureReady(){}}class iZ{spec;spawn;isRemote=!0;masterUp=!1;spawnAsync;constructor(J,z=QV,Y){this.spec=J;this.spawn=z;this.spawnAsync=Y??(this.spawn===QV?PO:async(Z,G)=>this.spawn(Z,G))}ensureReady(){if(this.masterUp)return;if(this.spawn([...QX(this.spec,{batch:!0}),"-O","check"]).exitCode===0){this.masterUp=!0;return}let z=[...QX(this.spec,{batch:this.spec.auth.kind!=="password"}),"-fN"];if(this.spec.auth.kind==="password"){let Y=this.spec.auth.getPassword();if(Y!=null){this.spawn(["sshpass","-e",...z],{SSHPASS:Y}),this.masterUp=!0;return}}this.spawn(z),this.masterUp=!0}async run(J,z={}){this.ensureReady();let Y=`${wO(z.env)}${qV(J)}`,Z=z.cwd?`cd ${zZ(z.cwd)} && ${Y}`:Y;return this.spawnAsync([...QX(this.spec,{batch:!0}),Z],void 0,{signal:z.signal})}async exists(J){return(await this.run(["test","-e",J])).exitCode===0}existsSync(J){return this.ensureReady(),this.spawn([...QX(this.spec,{batch:!0}),EO(["test","-e",J])]).exitCode===0}async mkdirp(J){await this.run(["mkdir","-p",J])}async readFile(J){let z=await this.run(["cat",J]);return z.exitCode===0?z.stdout:null}async readdir(J){let z=await this.run(["ls","-1A",J]);if(z.exitCode!==0)return[];return z.stdout.split(`
4
+ `).filter((Y)=>Y.length>0)}wrapCommand(J,z={}){let Y=z.cwd?`cd ${zZ(z.cwd)} && ${J}`:J;return`${QX(this.spec,{tty:z.tty}).map(uO).join(" ")} ${zZ(Y)}`}}var QV=(J,z)=>{let[Y,...Z]=J,G=IO(Y??"",Z,{env:z?{...process.env,...z}:process.env,encoding:"utf8",shell:!1});return{stdout:G.stdout??"",stderr:G.stderr??"",exitCode:G.status??-1}},PO=(J,z,Y)=>HV(J,{env:z?{...process.env,...z}:process.env,signal:Y?.signal});var ef=()=>{};import{spawnSync as hO}from"child_process";import{platform as vO}from"os";function fV(J,z,Y){return{service:mO,account:Y?`${z}@${J}:${Y}`:`${z}@${J}`}}function zj(J=Jj){return J.platform()==="darwin"}function jV(J,z,Y=Jj){if(Y.platform()!=="darwin")return!1;let{exitCode:Z}=Y.run(["security","add-generic-password","-U","-s",J.service,"-a",J.account,"-w",z]);return Z===0}function lQ(J,z=Jj){if(z.platform()!=="darwin")return null;let{stdout:Y,exitCode:Z}=z.run(["security","find-generic-password","-s",J.service,"-a",J.account,"-w"]);if(Z!==0)return null;return Y.replace(/\n$/,"")}var Jj,mO="kobe-remote-ssh";var Yj=C(()=>{Jj={run(J){let[z,...Y]=J,Z=hO(z??"",Y,{encoding:"utf8",shell:!1});return{stdout:Z.stdout??"",exitCode:Z.status??-1}},platform(){return vO()}}});import{mkdirSync as cO,readFileSync as dO,renameSync as nO,writeFileSync as iO}from"fs";import{dirname as lO}from"path";function LJ(){try{let J=dO(oJ(),"utf8"),z=JSON.parse(J);if(z&&typeof z==="object"&&!Array.isArray(z))return z}catch{}return{}}function BV(J){let z=oJ();cO(lO(z),{recursive:!0});let Y=`${z}.tmp`;iO(Y,JSON.stringify(J,null,2),"utf8"),nO(Y,z)}function lZ(J){let z=LJ();if(J(z)!==!1)BV(z);return z}function gY(J){return lZ((z)=>{for(let[Y,Z]of Object.entries(J))if(Z===void 0)delete z[Y];else z[Y]=Z;return})}function Bz(J,z){let Y=LJ()[J];return typeof Y==="boolean"?Y:z}function WV(J,z){gY({[J]:z})}function VV(J){BV(J)}var sz=C(()=>{p1()});var zY={};q1(zY,{statePath:()=>_O,setRepoInitOverride:()=>pO,setPersistedString:()=>e1,resolveRepoRoot:()=>tz,resolveMainRepoRoot:()=>aO,removeSavedRepo:()=>Qj,remoteRepoKey:()=>LV,normalizeSavedRepos:()=>Gj,isRemoteRepoKey:()=>r1,isRemoteProjectsEnabled:()=>qj,isGitRepo:()=>$O,getSavedRepos:()=>SJ,getRepoInitOverride:()=>Xj,getRemoteRepos:()=>Hj,getRemoteRepoConfig:()=>JY,getPersistedString:()=>S1,getCustomEngineIds:()=>hJ,addSavedRepo:()=>ez,addRemoteRepo:()=>fj});import{spawnSync as Zj}from"child_process";import{realpathSync as KV}from"fs";function tz(J){if(r1(J))return J;let z=Zj("git",["rev-parse","--show-toplevel"],{cwd:J,encoding:"utf8",shell:!1});if(z.status!==0)return J;let Y=(z.stdout??"").trim();if(!Y)return J;try{if(KV(J)===KV(Y))return J}catch{}return Y}function $O(J){if(r1(J))return!1;let z=Zj("git",["rev-parse","--is-inside-work-tree"],{cwd:J,encoding:"utf8",shell:!1});return z.status===0&&(z.stdout??"").trim()==="true"}function aO(J){if(r1(J))return J;let z=Zj("git",["worktree","list","--porcelain"],{cwd:J,encoding:"utf8",shell:!1});if(z.status!==0)return tz(J);return(z.stdout??"").split(/\r?\n/).find((Z)=>Z.startsWith("worktree "))?.slice(9).trim()||tz(J)}function _O(){return oJ()}function $Q(J){let z=J.savedRepos;if(!Array.isArray(z))return[];return z.filter((Y)=>typeof Y==="string")}function SJ(){return $Q(LJ())}function S1(J){let z=LJ()[J];return typeof z==="string"?z:void 0}function e1(J,z){gY({[J]:z})}function hJ(){let J=LJ().customEngineIds;if(!Array.isArray(J))return[];return J.filter((z)=>typeof z==="string"&&z.trim().length>0)}function ez(J){let z=tz(J),Y={added:!1,path:z,total:0};return lZ((Z)=>{let G=$Q(Z);if(G.includes(z))return Y={added:!1,path:z,total:G.length},!1;Z.savedRepos=[...G,z],Y={added:!0,path:z,total:G.length+1};return}),Y}function Gj(){let J=SJ(),z=new Set,Y=[],Z=!1;for(let G of J){let X=tz(G);if(X!==G)Z=!0;if(z.has(X)){Z=!0;continue}z.add(X),Y.push(X)}if(!Z)return;gY({savedRepos:Y})}function UV(J){let z=J.repoConfigs;if(!z||typeof z!=="object"||Array.isArray(z))return{};return z}function DV(J){if(!J||typeof J!=="object")return{};let z=J;return{initScript:typeof z.initScript==="string"&&z.initScript.length>0?z.initScript:void 0,initPrompt:typeof z.initPrompt==="string"&&z.initPrompt.length>0?z.initPrompt:void 0}}function Xj(J){return DV(UV(LJ())[tz(J)])}function pO(J,z){let Y=tz(J),Z={};return lZ((G)=>{let X={...UV(G)},Q=DV(X[Y]),H=z.initScript===void 0?Q.initScript:z.initScript||void 0,f=z.initPrompt===void 0?Q.initPrompt:z.initPrompt||void 0;if(Z={...H?{initScript:H}:{},...f?{initPrompt:f}:{}},!Z.initScript&&!Z.initPrompt){let{[Y]:j,...V}=X;G.repoConfigs=V}else X[Y]=Z,G.repoConfigs=X;return}),Z}function Qj(J){let z={removed:!1,path:J,total:0};return lZ((Y)=>{let Z=$Q(Y);if(!Z.includes(J))return z={removed:!1,path:J,total:Z.length},!1;if(Y.savedRepos=Z.filter((G)=>G!==J),r1(J)){let G=aQ(Y);if(J in G){let X={...G};delete X[J],Y.remoteRepos=X}}z={removed:!0,path:J,total:Z.length-1};return}),z}function r1(J){return J.startsWith("ssh://")}function qj(){return Bz("experimental.remoteProjects",!1)}function LV(J,z,Y){return Y?`ssh://${z}@${J}:${Y}`:`ssh://${z}@${J}`}function aQ(J){let z=J.remoteRepos;if(!z||typeof z!=="object"||Array.isArray(z))return{};return z}function JY(J){return aQ(LJ())[J]??null}function Hj(){return aQ(LJ())}function fj(J){let z=LV(J.host,J.user,J.port),Y=!1;return lZ((Z)=>{let G={...aQ(Z)};G[z]=J,Z.remoteRepos=G;let X=$Q(Z);if(Y=!X.includes(z),Y)Z.savedRepos=[...X,z];return}),{key:z,added:Y}}var C1=C(()=>{p1();sz()});var OV={};q1(OV,{runAddRemote:()=>sO,parseRemoteFlags:()=>MV});import{createInterface as rO}from"readline";function MV(J){let z={};for(let Y=0;Y<J.length;Y++){let Z=J[Y];switch(Z){case"--host":z.host=J[++Y];break;case"--user":z.user=J[++Y];break;case"--path":z.path=J[++Y];break;case"--port":{let G=Number(J[++Y]);if(!Number.isInteger(G)||G<=0)Wz(`invalid --port "${J[Y]}"`);z.port=G;break}case"--key":{let G=J[Y+1];if(G&&!G.startsWith("-"))z.key={present:!0,path:G},Y++;else z.key={present:!0};break}case"--password":z.password=!0;break;case"--help":case"-h":process.stdout.write(FV),process.exit(0);break;default:Wz(`unknown flag "${Z}"`)}}return z}function Wz(J){process.stderr.write(`kobe add --remote: ${J}
5
5
 
6
- ${YV}`),process.exit(2)}async function yO(J){let z=IO({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(J),Z=!0,new Promise((X)=>{z.question("",(q)=>{if(Z=!1,G)Y._writeToOutput=G;process.stdout.write(`
7
- `),z.close(),X(q)})})}async function TO(J){if(!X8())jz("remote projects are experimental and disabled \u2014 enable Settings \u2192 Dev \u2192 Experimental \u2192 Remote projects first");let z=ZV(J);if(!z.host)jz("--host is required");if(!z.user)jz("--user is required");if(!z.path)jz("--path (remote base path) is required");if(z.key&&z.password)jz("choose ONE of --key or --password, not both");if(!z.key&&!z.password)jz("an auth method is required: --key [path] or --password");let Y;if(z.password){if(!ef())jz("--password needs the macOS keychain (unsupported on this platform)");let X=_W(z.host,z.user,z.port),q=await yO(`Password for ${z.user}@${z.host}: `);if(q.length===0)jz("empty password");if(!pW(X,q))jz("failed to store the password in the keychain");Y={kind:"password",keychainRef:X}}else Y={kind:"key",keyPath:z.key?.path};let{key:Z,added:G}=Q8({host:z.host,user:z.user,port:z.port,basePath:z.path,auth:Y});console.log(G?`added remote project ${Z} (base ${z.path})`:`updated remote project ${Z} (base ${z.path})`),await xO(z,Y)}async function xO(J,z){if(z.kind==="password"&&!ef())return;let Y=z.kind==="key"?{kind:"key",keyPath:z.keyPath}:{kind:"password",getPassword:()=>lq(z.keychainRef)},Z={host:J.host,user:J.user,port:J.port,auth:Y,controlPath:mq(J.host,J.user,J.port)};process.stdout.write("checking connection\u2026 ");try{if((await new iZ(Z).run(["test","-d",J.path])).exitCode===0)console.log("ok");else console.log(`reachable, but base path "${J.path}" is not a directory (you can create it later)`)}catch(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 YV;var XV=C(()=>{t1();sf();J8();A1();YV=`Usage: kobe add --remote --host <host> --user <user> --path <basePath>
6
+ ${FV}`),process.exit(2)}async function oO(J){let z=rO({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(J),Z=!0,new Promise((X)=>{z.question("",(Q)=>{if(Z=!1,G)Y._writeToOutput=G;process.stdout.write(`
7
+ `),z.close(),X(Q)})})}async function sO(J){if(!qj())Wz("remote projects are experimental and disabled \u2014 enable Settings \u2192 Dev \u2192 Experimental \u2192 Remote projects first");let z=MV(J);if(!z.host)Wz("--host is required");if(!z.user)Wz("--user is required");if(!z.path)Wz("--path (remote base path) is required");if(z.key&&z.password)Wz("choose ONE of --key or --password, not both");if(!z.key&&!z.password)Wz("an auth method is required: --key [path] or --password");let Y;if(z.password){if(!zj())Wz("--password needs the macOS keychain (unsupported on this platform)");let X=fV(z.host,z.user,z.port),Q=await oO(`Password for ${z.user}@${z.host}: `);if(Q.length===0)Wz("empty password");if(!jV(X,Q))Wz("failed to store the password in the keychain");Y={kind:"password",keychainRef:X}}else Y={kind:"key",keyPath:z.key?.path};let{key:Z,added:G}=fj({host:z.host,user:z.user,port:z.port,basePath:z.path,auth:Y});console.log(G?`added remote project ${Z} (base ${z.path})`:`updated remote project ${Z} (base ${z.path})`),await tO(z,Y)}async function tO(J,z){if(z.kind==="password"&&!zj())return;let Y=z.kind==="key"?{kind:"key",keyPath:z.keyPath}:{kind:"password",getPassword:()=>lQ(z.keychainRef)},Z={host:J.host,user:J.user,port:J.port,auth:Y,controlPath:mQ(J.host,J.user,J.port)};process.stdout.write("checking connection\u2026 ");try{if((await new iZ(Z).run(["test","-d",J.path])).exitCode===0)console.log("ok");else console.log(`reachable, but base path "${J.path}" is not a directory (you can create it later)`)}catch(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 FV;var AV=C(()=>{p1();ef();Yj();C1();FV=`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 _q(J){return J.remoteVersion>=J.localMin&&J.localVersion>=J.remoteMin}function qV(J,z){if(!J)return!1;return J!==z}function EO(J){return typeof J==="string"&&uO.has(J)}function QV(J){if(!Array.isArray(J))return null;let z=new Set;for(let Y of J)if(EO(Y))z.add(Y);return z.size>0?z:null}function Bz(J){return{id:J.id,title:J.title,repo:J.repo,branch:J.branch,worktreePath:J.worktreePath,kind:J.kind??"task",status:J.status,archived:J.archived,pinned:J.pinned??!1,vendor:J.vendor,prStatus:J.prStatus,position:J.position,modelEffort:J.modelEffort,createdAt:J.createdAt,updatedAt:J.updatedAt}}function QX(J){return`${JSON.stringify(J)}
14
- `}var pJ=3,NY=2,H8,uO;var YZ=C(()=>{H8=["task.snapshot","issue.snapshot","active-task","update","engine-state","ui-prefs","keybindings","task.jobs","worktree.changes","transcript.activity","session.deliver"],uO=new Set(H8)});import{createHash as wO}from"crypto";import{homedir as pq,tmpdir as PO}from"os";import{join as ZZ}from"path";function hO(J){return wO("sha1").update(J).digest("hex").slice(0,8)}function j8(J,z,Y,Z){if(Buffer.byteLength(J,"utf8")<=f8)return J;let G=hO(z),X=Z===void 0?"":`-${Z}`,q=ZZ(PO(),`kobe-${G}-${Y}${X}.sock`);if(Buffer.byteLength(q,"utf8")<=f8)return q;throw Error(`kobe socket path exceeds ${f8} bytes even after fallback: ${q}`)}function xz(J){let z=process.env.KOBE_DAEMON_SOCKET_PATH;if(z&&z.length>0)return z;let Y=J??process.env.KOBE_HOME_DIR;if(Y&&Y.length>0)return j8(ZZ(Y,".kobe","daemon.sock"),Y,"daemon");let Z=process.env.XDG_RUNTIME_DIR;if(Z&&Z.length>0)return j8(ZZ(Z,"kobe.sock"),Z,"daemon");let G=pq();return j8(ZZ(G,".kobe","daemon.sock"),G,"daemon")}function ez(J=process.env.KOBE_HOME_DIR??pq()){let z=process.env.KOBE_DAEMON_PID_PATH;if(z&&z.length>0)return z;return ZZ(J,".kobe","daemon.pid")}function rq(J=process.env.KOBE_HOME_DIR??pq()){return ZZ(J,".kobe","daemon.log")}function HV(J=process.env.KOBE_HOME_DIR??pq()){return ZZ(J,".kobe","client.log")}var f8=100;var $Z=()=>{};import{appendFile as fV,mkdir as vO}from"fs/promises";import{dirname as mO}from"path";function oq(J){WV=J}function cO(J){if(J instanceof Error)return{message:J.message,stack:J.stack};let z;try{z=typeof J==="string"?J:JSON.stringify(J)}catch{z=String(J)}return{message:z}}function VV(J,z,Y=new Date){return`[${Y.toISOString()}] client ${WV} [${J}] pid=${process.pid}: ${z}
15
- `}function dO(){if(jV)return;jV=!0;try{process.stderr.write(`[kobe] client log write failed; continuing without it
16
- `)}catch{}}function KV(J){let z=HV();BV=BV.then(async()=>{try{await fV(z,J)}catch(Y){if(Y?.code==="ENOENT")await vO(mO(z),{recursive:!0}),await fV(z,J);else throw Y}}).catch(()=>dO())}function JY(J,z){KV(VV(J,z))}function JJ(J,z){let Y=cO(z);KV(VV(J,Y.stack??Y.message))}function UV(){if(B8||W8)return;B8=(J)=>JJ("crash-net",J),W8=(J)=>JJ("crash-net",J),process.on("unhandledRejection",B8),process.on("uncaughtException",W8)}var WV="client",jV=!1,BV,B8,W8;var GZ=C(()=>{$Z();BV=Promise.resolve()});import{connect as nO}from"net";import{StringDecoder as iO}from"string_decoder";class rJ{socketPath;socket=null;buffer="";nextId=1;pending=new Map;handlers=new Map;lifecycleHandlers=new Map;connecting=null;disposed=!1;constructor(J){this.socketPath=J}connect(){if(this.socket)return Promise.resolve();if(this.disposed)return Promise.reject(Error("daemon client disposed"));if(this.connecting)return this.connecting;let J=this.openSocket();this.connecting=J;let z=()=>{if(this.connecting===J)this.connecting=null};return J.then(z,z),J}get isDisposed(){return this.disposed}close(){this.disposed=!0,this.socket?.end(),this.socket=null,this.failPending()}forceDisconnect(){let J=this.socket;if(!J)return;this.socket=null,J.destroy(),this.failPending()}failPending(){if(this.pending.size===0)return;let J=Error("daemon connection closed");for(let z of this.pending.values())z.reject(J);this.pending.clear()}on(J,z){let Y=this.handlers.get(J);if(!Y)Y=new Set,this.handlers.set(J,Y);return Y.add(z),()=>{if(Y?.delete(z),Y?.size===0)this.handlers.delete(J)}}onChannel(J,z){return this.on(J,(Y)=>z(Y.payload))}subscribe(J={}){let z={};if(J.channels)z.channels=J.channels;if(J.role)z.role=J.role;return this.request("subscribe",z)}onLifecycle(J,z){let Y=this.lifecycleHandlers.get(J);if(!Y)Y=new Set,this.lifecycleHandlers.set(J,Y);return Y.add(z),()=>{if(Y?.delete(z),Y?.size===0)this.lifecycleHandlers.delete(J)}}async request(J,z){await this.connect();let Y=this.socket;if(!Y)throw Error("daemon connection is not open");let Z=String(this.nextId++),G=new Promise((X,q)=>{this.pending.set(Z,{resolve:(H)=>X(H),reject:q})});return Y.write(QX({type:"request",id:Z,name:J,payload:z})),G}openSocket(){return new Promise((J,z)=>{let Y=nO(this.socketPath);this.socket=Y;let Z=()=>{Y.off("error",G),J()},G=(q)=>{if(Y.off("connect",Z),this.socket===Y)this.socket=null;z(q)};Y.once("connect",Z),Y.once("error",G);let X=new iO("utf8");this.buffer="",Y.on("data",(q)=>this.onData(X.write(q))),Y.on("close",()=>this.onSocketClose(Y))})}onSocketClose(J){if(this.socket!==J)return;this.socket=null,this.failPending(),this.emitLifecycle("close")}emitLifecycle(J){for(let z of this.lifecycleHandlers.get(J)??[])try{z()}catch(Y){console.error(`[kobe] lifecycle handler for "${J}" threw:`,Y)}}onData(J){this.buffer+=J;let z=this.buffer.indexOf(`
13
+ `});function _Q(J){return J.remoteVersion>=J.localMin&&J.localVersion>=J.remoteMin}function RV(J,z){if(!J)return!1;return J!==z}function JA(J){return typeof J==="string"&&eO.has(J)}function gV(J){if(!Array.isArray(J))return null;let z=new Set;for(let Y of J)if(JA(Y))z.add(Y);return z.size>0?z:null}function Vz(J){return{id:J.id,title:J.title,repo:J.repo,branch:J.branch,worktreePath:J.worktreePath,kind:J.kind??"task",status:J.status,archived:J.archived,pinned:J.pinned??!1,vendor:J.vendor,prStatus:J.prStatus,position:J.position,modelEffort:J.modelEffort,createdAt:J.createdAt,updatedAt:J.updatedAt}}function qX(J){return`${JSON.stringify(J)}
14
+ `}var sJ=3,NY=2,jj,eO;var YZ=C(()=>{jj=["task.snapshot","issue.snapshot","active-task","update","engine-state","ui-prefs","keybindings","task.jobs","worktree.changes","transcript.activity","session.deliver"],eO=new Set(jj)});import{createHash as zA}from"crypto";import{homedir as pQ,tmpdir as YA}from"os";import{join as ZZ}from"path";function ZA(J){return zA("sha1").update(J).digest("hex").slice(0,8)}function Wj(J,z,Y,Z){if(Buffer.byteLength(J,"utf8")<=Bj)return J;let G=ZA(z),X=Z===void 0?"":`-${Z}`,Q=ZZ(YA(),`kobe-${G}-${Y}${X}.sock`);if(Buffer.byteLength(Q,"utf8")<=Bj)return Q;throw Error(`kobe socket path exceeds ${Bj} bytes even after fallback: ${Q}`)}function Ez(J){let z=process.env.KOBE_DAEMON_SOCKET_PATH;if(z&&z.length>0)return z;let Y=J??process.env.KOBE_HOME_DIR;if(Y&&Y.length>0)return Wj(ZZ(Y,".kobe","daemon.sock"),Y,"daemon");let Z=process.env.XDG_RUNTIME_DIR;if(Z&&Z.length>0)return Wj(ZZ(Z,"kobe.sock"),Z,"daemon");let G=pQ();return Wj(ZZ(G,".kobe","daemon.sock"),G,"daemon")}function YY(J=process.env.KOBE_HOME_DIR??pQ()){let z=process.env.KOBE_DAEMON_PID_PATH;if(z&&z.length>0)return z;return ZZ(J,".kobe","daemon.pid")}function rQ(J=process.env.KOBE_HOME_DIR??pQ()){return ZZ(J,".kobe","daemon.log")}function NV(J=process.env.KOBE_HOME_DIR??pQ()){return ZZ(J,".kobe","client.log")}var Bj=100;var $Z=()=>{};import{appendFile as CV,mkdir as GA}from"fs/promises";import{dirname as XA}from"path";function oQ(J){SV=J}function QA(J){if(J instanceof Error)return{message:J.message,stack:J.stack};let z;try{z=typeof J==="string"?J:JSON.stringify(J)}catch{z=String(J)}return{message:z}}function IV(J,z,Y=new Date){return`[${Y.toISOString()}] client ${SV} [${J}] pid=${process.pid}: ${z}
15
+ `}function qA(){if(kV)return;kV=!0;try{process.stderr.write(`[kobe] client log write failed; continuing without it
16
+ `)}catch{}}function yV(J){let z=NV();bV=bV.then(async()=>{try{await CV(z,J)}catch(Y){if(Y?.code==="ENOENT")await GA(XA(z),{recursive:!0}),await CV(z,J);else throw Y}}).catch(()=>qA())}function ZY(J,z){yV(IV(J,z))}function JJ(J,z){let Y=QA(z);yV(IV(J,Y.stack??Y.message))}function TV(){if(Vj||Kj)return;Vj=(J)=>JJ("crash-net",J),Kj=(J)=>JJ("crash-net",J),process.on("unhandledRejection",Vj),process.on("uncaughtException",Kj)}var SV="client",kV=!1,bV,Vj,Kj;var GZ=C(()=>{$Z();bV=Promise.resolve()});import{connect as HA}from"net";import{StringDecoder as fA}from"string_decoder";class tJ{socketPath;socket=null;buffer="";nextId=1;pending=new Map;handlers=new Map;lifecycleHandlers=new Map;connecting=null;disposed=!1;constructor(J){this.socketPath=J}connect(){if(this.socket)return Promise.resolve();if(this.disposed)return Promise.reject(Error("daemon client disposed"));if(this.connecting)return this.connecting;let J=this.openSocket();this.connecting=J;let z=()=>{if(this.connecting===J)this.connecting=null};return J.then(z,z),J}get isDisposed(){return this.disposed}close(){this.disposed=!0,this.socket?.end(),this.socket=null,this.failPending()}forceDisconnect(){let J=this.socket;if(!J)return;this.socket=null,J.destroy(),this.failPending()}failPending(){if(this.pending.size===0)return;let J=Error("daemon connection closed");for(let z of this.pending.values())z.reject(J);this.pending.clear()}on(J,z){let Y=this.handlers.get(J);if(!Y)Y=new Set,this.handlers.set(J,Y);return Y.add(z),()=>{if(Y?.delete(z),Y?.size===0)this.handlers.delete(J)}}onChannel(J,z){return this.on(J,(Y)=>z(Y.payload))}subscribe(J={}){let z={};if(J.channels)z.channels=J.channels;if(J.role)z.role=J.role;return this.request("subscribe",z)}onLifecycle(J,z){let Y=this.lifecycleHandlers.get(J);if(!Y)Y=new Set,this.lifecycleHandlers.set(J,Y);return Y.add(z),()=>{if(Y?.delete(z),Y?.size===0)this.lifecycleHandlers.delete(J)}}async request(J,z){await this.connect();let Y=this.socket;if(!Y)throw Error("daemon connection is not open");let Z=String(this.nextId++),G=new Promise((X,Q)=>{this.pending.set(Z,{resolve:(H)=>X(H),reject:Q})});return Y.write(qX({type:"request",id:Z,name:J,payload:z})),G}openSocket(){return new Promise((J,z)=>{let Y=HA(this.socketPath);this.socket=Y;let Z=()=>{Y.off("error",G),J()},G=(Q)=>{if(Y.off("connect",Z),this.socket===Y)this.socket=null;z(Q)};Y.once("connect",Z),Y.once("error",G);let X=new fA("utf8");this.buffer="",Y.on("data",(Q)=>this.onData(X.write(Q))),Y.on("close",()=>this.onSocketClose(Y))})}onSocketClose(J){if(this.socket!==J)return;this.socket=null,this.failPending(),this.emitLifecycle("close")}emitLifecycle(J){for(let z of this.lifecycleHandlers.get(J)??[])try{z()}catch(Y){console.error(`[kobe] lifecycle handler for "${J}" threw:`,Y)}}onData(J){this.buffer+=J;let z=this.buffer.indexOf(`
17
17
  `);while(z!==-1){let Y=this.buffer.slice(0,z);if(this.buffer=this.buffer.slice(z+1),Y.trim().length>0)this.onLine(Y);z=this.buffer.indexOf(`
18
- `)}}onLine(J){let z;try{z=JSON.parse(J)}catch(Z){JJ("client-frame",Z);return}if(z.type==="event"){this.emit(z);return}if(z.type!=="response")return;let Y=this.pending.get(z.id);if(!Y)return;if(this.pending.delete(z.id),z.error){let Z=Error(z.error.message);if(z.error.name)Z.name=z.error.name;Y.reject(Z)}else Y.resolve(z.payload)}emit(J){for(let z of this.handlers.get(J.name)??[])z(J);for(let z of this.handlers.get("*")??[])z(J)}}var HX=C(()=>{YZ();GZ()});import{spawnSync as lO}from"child_process";import{existsSync as $O,statSync as aO}from"fs";import{homedir as _O}from"os";import fX from"path";async function DV(J=pO){let z=[],Y=(j)=>{if(!j)return;return z.push(j),J.fileExists(j)?j:void 0},Z=J.which("claude");if(Z){if(z.push(`which:${Z}`),J.fileExists(Z))return Z}let G=J.home(),X=Y(fX.join(G,".claude","local","claude"));if(X)return X;let q=J.env("NVM_BIN");if(q){let j=Y(fX.join(q,"claude"));if(j)return j}let H=fX.join(G,".nvm","versions","node"),f=J.readdir(H).sort().reverse();for(let j of f){let V=Y(fX.join(H,j,"bin","claude"));if(V)return V}for(let j of["/opt/homebrew/bin/claude","/usr/local/bin/claude","/usr/bin/claude","/bin/claude"]){let V=Y(j);if(V)return V}for(let j of[".local/bin/claude",".npm-global/bin/claude",".yarn/bin/claude",".bun/bin/claude","bin/claude"]){let V=Y(fX.join(G,j));if(V)return V}throw new sq(z)}var sq,pO;var LV=C(()=>{sq=class sq extends Error{checkedPaths;constructor(J){super(`Claude Code binary not found. Checked: ${J.join(", ")}. Ensure 'claude' is on PATH, or install at ~/.claude/local/claude.`);this.name="ClaudeBinaryNotFoundError",this.checkedPaths=J}};pO={fileExists(J){try{return aO(J).isFile()}catch{return!1}},env(J){return process.env[J]},home(){return _O()},which(J){let z=process.platform==="win32"?"where":"which",Y=lO(z,[J],{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&&$O(G)?G:void 0}return Z},readdir(J){try{return Pq("fs").readdirSync(J)}catch{return[]}}}});import{spawnSync as rO}from"child_process";import{existsSync as oO,statSync as sO}from"fs";import{homedir as tO}from"os";import FV from"path";async function MV(J=eO){let z=[],Y=(q)=>{if(!q)return;return z.push(q),J.fileExists(q)?q:void 0},Z=J.which("codex");if(Z){if(z.push(`which:${Z}`),J.fileExists(Z))return Z}let G=J.home();for(let q of["/opt/homebrew/bin/codex","/usr/local/bin/codex","/usr/bin/codex","/bin/codex"]){let H=Y(q);if(H)return H}let X=J.env("NVM_BIN");if(X){let q=Y(FV.join(X,"codex"));if(q)return q}for(let q of[".local/bin/codex",".bun/bin/codex","bin/codex"]){let H=Y(FV.join(G,q));if(H)return H}throw new tq(z)}var tq,eO;var OV=C(()=>{tq=class tq extends Error{checkedPaths;constructor(J){super(`Codex CLI binary not found. Checked: ${J.join(", ")}. Ensure 'codex' is on PATH (e.g. \`brew install codex\` or the official installer).`);this.name="CodexBinaryNotFoundError",this.checkedPaths=J}};eO={fileExists(J){try{return sO(J).isFile()}catch{return!1}},env(J){return process.env[J]},home(){return tO()},which(J){let z=process.platform==="win32"?"where":"which",Y=rO(z,[J],{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&&oO(G)?G:void 0}return Z},readdir(J){try{return Pq("fs").readdirSync(J)}catch{return[]}}}});import{spawnSync as JA}from"child_process";import{existsSync as zA,statSync as YA}from"fs";import{homedir as ZA}from"os";import CY from"path";async function AV(J=GA){let z=[],Y=(V)=>{if(!V)return;return z.push(V),J.fileExists(V)?V:void 0},Z=J.which("copilot");if(Z){if(z.push(`which:${Z}`),J.fileExists(Z))return Z}let G=J.platform()==="win32"?["copilot.exe","copilot.cmd","copilot"]:["copilot"],X=(V)=>{if(!V)return;for(let B of G){let K=Y(CY.join(V,B));if(K)return K}return};for(let V of["/opt/homebrew/bin","/usr/local/bin","/usr/bin","/bin"]){let B=X(V);if(B)return B}let q=J.env("NVM_BIN"),H=X(q);if(H)return H;let f=J.home(),j=[CY.join(f,".npm-global/bin"),CY.join(f,".local/bin"),CY.join(f,".bun/bin"),CY.join(f,"bin")];if(J.platform()==="win32"){let V=J.env("APPDATA"),B=J.env("LOCALAPPDATA");if(j.unshift(CY.join(f,"AppData/Roaming/npm")),V)j.unshift(CY.join(V,"npm"));if(B)j.unshift(CY.join(B,"npm"))}for(let V of j){let B=X(V);if(B)return B}throw new eq(z)}var eq,GA;var RV=C(()=>{eq=class eq extends Error{checkedPaths;constructor(J){super(`GitHub Copilot CLI binary not found. Checked: ${J.join(", ")}. Ensure 'copilot' is on PATH (for example \`npm install -g @github/copilot\` or \`brew install copilot-cli\`).`);this.name="CopilotBinaryNotFoundError",this.checkedPaths=J}};GA={fileExists(J){try{return YA(J).isFile()}catch{return!1}},env(J){return process.env[J]},home(){return ZA()},which(J){let z=process.platform==="win32"?"where":"which",Y=JA(z,[J],{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&&zA(G)?G:void 0}return Z},platform(){return process.platform}}});import{readFileSync as XA,statSync as qA}from"fs";import{readFile as QA,stat as HA}from"fs/promises";async function aZ(J,z=gV){let{size:Y}=await HA(J);if(Y>z)return"";return QA(J,"utf8")}function NV(J,z=gV){let Y;try{Y=qA(J)}catch(Z){if(Z.code==="ENOENT")return null;throw Z}if(Y.size>z)return null;return XA(J,"utf8")}function kY(J,z=fA){return J.length<=z}var gV=104857600,fA=8388608;var jX=()=>{};import{homedir as jA}from"os";import bY from"path";function BA(J,z){let Y=J("CLAUDE_CONFIG_DIR")?.trim();if(Y)return bY.join(Y,".claude.json");return bY.join(z,".claude.json")}function WA(J,z){let Z=J("CODEX_HOME")?.trim()??bY.join(z,".codex");return bY.join(Z,"auth.json")}function VA(J,z){let Z=J("COPILOT_HOME")?.trim()??bY.join(z,".copilot");return bY.join(Z,"config.json")}function KA(J){let z=J.split(".");if(z.length!==3)return null;let Y=z[1];if(!Y)return null;let Z=Y.replace(/-/g,"+").replace(/_/g,"/"),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 zQ(J){try{return{found:!0,path:await J()}}catch(z){if(z instanceof sq||z instanceof tq||z instanceof eq)return{found:!1,error:"not found on PATH"};return{found:!1,error:z instanceof Error?z.message:String(z)}}}async function CV(J){return(await Promise.all([["claude",()=>J.findClaudeBinary()],["codex",()=>J.findCodexBinary()],["copilot",()=>J.findCopilotBinary()]].map(async([Z,G])=>(await zQ(G)).found?Z:null))).filter((Z)=>Z!==null)}function UA(J=_Z){if(J!==_Z)return CV(J);if(JQ)return JQ;let z=CV(J).catch((Y)=>{throw JQ=null,Y});return JQ=z,z}async function zY(J=_Z){return[...await UA(J),...EJ()]}async function YQ(J=_Z){let z=await zQ(()=>J.findClaudeBinary()),Y=BA(J.env,J.home()),Z;try{Z=J.readFile(Y)}catch(f){return{binary:z,account:{kind:"none"},accountError:`read ${Y}: ${f instanceof Error?f.message:String(f)}`}}if(Z===null)return{binary:z,account:{kind:"none"}};let G;try{G=JSON.parse(Z)}catch(f){return{binary:z,account:{kind:"none"},accountError:`parse ${Y}: ${f instanceof Error?f.message:String(f)}`}}let X=G?.oauthAccount;if(!X||typeof X!=="object")return{binary:z,account:{kind:"none"}};let q=X,H=typeof q.emailAddress==="string"?q.emailAddress:void 0;if(!H)return{binary:z,account:{kind:"none"}};return{binary:z,account:{kind:"oauth",email:H,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 ZQ(J=_Z){let z=await zQ(()=>J.findCodexBinary()),Y=WA(J.env,J.home()),Z;try{Z=J.readFile(Y)}catch(j){return{binary:z,account:{kind:"none"},accountError:`read ${Y}: ${j instanceof Error?j.message:String(j)}`}}if(Z===null)return{binary:z,account:{kind:"none"}};let G;try{G=JSON.parse(Z)}catch(j){return{binary:z,account:{kind:"none"},accountError:`parse ${Y}: ${j instanceof Error?j.message:String(j)}`}}let X=G??{},q=X.tokens,H=typeof q?.id_token==="string"?q.id_token:void 0;if(H){let j=KA(H);if(!j)return{binary:z,account:{kind:"none"},accountError:"codex id_token: malformed JWT"};let V=typeof j.email==="string"?j.email:void 0,B=j["https://api.openai.com/auth"],K=typeof B==="object"&&B!==null&&!Array.isArray(B)?B:void 0,L=typeof K?.chatgpt_plan_type==="string"?K.chatgpt_plan_type:void 0;if(V)return{binary:z,account:{kind:"chatgpt",email:V,plan:L}};return{binary:z,account:{kind:"none"},accountError:"codex id_token: no email claim"}}let f=X.OPENAI_API_KEY;if(typeof f==="string"&&f.length>0)return{binary:z,account:{kind:"apikey"}};return{binary:z,account:{kind:"none"}}}async function GQ(J=_Z){let z=await zQ(()=>J.findCopilotBinary());for(let X of["COPILOT_GITHUB_TOKEN","GH_TOKEN","GITHUB_TOKEN"])if(J.env(X)?.trim())return{binary:z,account:{kind:"token",source:X}};let Y=VA(J.env,J.home()),Z;try{Z=J.readFile(Y)}catch(X){return{binary:z,account:{kind:"none"},accountError:`read ${Y}: ${X instanceof Error?X.message:String(X)}`}}if(Z===null)return{binary:z,account:{kind:"none"}};let G;try{G=JSON.parse(Z)}catch(X){return{binary:z,account:{kind:"none"},accountError:`parse ${Y}: ${X instanceof Error?X.message:String(X)}`}}if(!V8(G))return{binary:z,account:{kind:"none"}};if(kV(G,["github_token","oauth_token","access_token","token","selectedUser","currentUser","user"]))return{binary:z,account:{kind:"oauth"}};return{binary:z,account:{kind:"none"}}}function V8(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}function kV(J,z,Y=0){if(Y>4||!V8(J))return!1;for(let[Z,G]of Object.entries(J)){if(z.includes(Z)&&typeof G==="string"&&G.length>0)return!0;if(V8(G)&&kV(G,z,Y+1))return!0}return!1}var _Z,JQ=null;var XZ=C(()=>{A1();LV();OV();RV();jX();_Z={readFile(J){return NV(J)},env(J){return process.env[J]},home(){return jA()},findClaudeBinary(){return DV()},findCodexBinary(){return MV()},findCopilotBinary(){return AV()}}});function bV(J){if(typeof J==="string")return J.length>0?[{type:"text",text:J}]:[];if(!Array.isArray(J))return[];let z=[];for(let Y of J){if(typeof Y==="string"){if(Y.length>0)z.push({type:"text",text:Y});continue}if(!Y||typeof Y!=="object")continue;let Z=Y;if(Z.type==="text"&&typeof Z.text==="string"){z.push({type:"text",text:Z.text});continue}if(Z.type==="tool_use"){z.push({type:"tool_call",callId:typeof Z.id==="string"?Z.id:"",name:typeof Z.name==="string"?Z.name:"",input:Z.input});continue}if(Z.type==="tool_result"){z.push({type:"tool_result",callId:typeof Z.tool_use_id==="string"?Z.tool_use_id:"",output:Z.content,isError:Z.is_error===!0});continue}if(Z.type==="thinking"&&typeof Z.thinking==="string")z.push({type:"thinking",text:Z.thinking})}return z}function SV(J){return J.isMeta===!0||J.isCompactSummary===!0}function IV(J){if(J.length===0)return!1;for(let z of J){if(z.type!=="text")return!1;let Y=z.text.trim();if(!Y.startsWith("<command-name>")&&!Y.startsWith("<command-message>")&&!Y.startsWith("<local-command"))return!1}return!0}import{appendFile as jP,mkdir as BP,readdir as K8,stat as DA,unlink as WP}from"fs/promises";import{homedir as yV}from"os";import XQ from"path";function FA(J){return J.replace(/[/.]/g,"-")}async function BX(J){if(!J)return[];let z=XQ.join(yV(),".claude","projects",FA(J)),Y;try{Y=await K8(z)}catch{return[]}let Z=[];for(let G of Y){if(!G.endsWith(".jsonl"))continue;let X=XQ.join(z,G),q=0;try{q=(await DA(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 TV(J){return(await BX(J))[0]?.mtimeMs??0}async function xV(J,z=LA){let Y=z.projectsDir(),Z=await z.readdir(Y);for(let G of Z){let X=XQ.join(Y,G,`${J}.jsonl`),q;try{q=await z.readFile(X)}catch{continue}return MA(OA(q,J))}return[]}function MA(J){return J.map((z,Y)=>({msg:z,idx:Y})).sort((z,Y)=>{if(z.msg.timestamp<Y.msg.timestamp)return-1;if(z.msg.timestamp>Y.msg.timestamp)return 1;return z.idx-Y.idx}).map((z)=>z.msg)}function OA(J,z){let Y=[];for(let Z of J.split(`
22
- `)){let G=Z.trim();if(!G)continue;if(!kY(G))continue;let X;try{X=JSON.parse(G)}catch{continue}if(!U8(X))continue;let q=AA(X,z);if(q)Y.push(q)}return Y}function AA(J,z){if(SV(J))return null;let Y=U8(J.message)?J.message:J,Z=Y.role;if(Z!=="user"&&Z!=="assistant"&&Z!=="system")return null;if(!("content"in Y))return null;let G=bV(Y.content);if(Z==="user"&&IV(G))return null;let X=typeof J.timestamp==="string"?J.timestamp:new Date().toISOString(),q=typeof J.sessionId==="string"?J.sessionId:z,H=RA(Y.usage);return H?{role:Z,blocks:G,timestamp:X,sessionId:q,usage:H}:{role:Z,blocks:G,timestamp:X,sessionId:q}}function RA(J){if(!U8(J))return;let z=typeof J.input_tokens==="number"?J.input_tokens:void 0,Y=typeof J.output_tokens==="number"?J.output_tokens:void 0;if(z===void 0||Y===void 0)return;let Z=typeof J.cache_read_input_tokens==="number"?J.cache_read_input_tokens:void 0,G=typeof J.cache_creation_input_tokens==="number"?J.cache_creation_input_tokens:void 0;return{input_tokens:z,output_tokens:Y,...Z!==void 0?{cache_read_input_tokens:Z}:{},...G!==void 0?{cache_creation_input_tokens:G}:{}}}function U8(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}var LA;var D8=C(()=>{jX();LA={projectsDir(){return XQ.join(yV(),".claude","projects")},async readdir(J){try{return await K8(J)}catch{return[]}},async readFile(J){return await aZ(J)},async pathExists(J){try{return await K8(J),!0}catch{return!1}}}});import{fileURLToPath as EV}from"url";function b1(){if(import.meta.url.endsWith(".js"))return["kobe"];let z=EV(new URL("./index.ts",import.meta.url)),Y=EV(import.meta.resolve("@opentui/solid/preload"));return[process.execPath,"--preload",Y,"--conditions=browser",z]}var YY=()=>{};function L8(J,z={}){if(z.bareSafe&&gA.test(J))return J;return`'${J.replace(/'/g,"'\\''")}'`}function qQ(J,z={}){return J.map((Y)=>L8(Y,z)).join(" ")}var gA;var F8=C(()=>{gA=/^[A-Za-z0-9_/.:=-]+$/});function VX(J){return`kobe-hidden-${J.replace(/[^A-Za-z0-9_-]/g,"")||"session"}`}function hV(J){let z=Number.parseInt(J.replace(/^@/,""),10);return Number.isFinite(z)&&z>=0?1000+z:1000}function R8(J){if(!Number.isFinite(J))return PV;return Math.max(NA,Math.min(CA,Math.round(J)))}function qZ(J){if(!Number.isFinite(J))return null;return Math.max(kA,Math.min(bA,Math.round(J)))}function mV(J){let z=Number.parseInt(J[QQ]??"",10),Y=Number.isFinite(z)&&z>0?R8(z):PV,Z=qZ(Number.parseInt(J[HQ]??"",10)),G=qZ(Number.parseInt(J[fQ]??"",10)),X=[];if(Z!==null)X.push("-x",`${Z}%`);if(G!==null)X.push("-y",`${G}%`);return{tasksWidth:Y,rightColumnWidthPct:Z??100-g8,opsHeightPct:G??KX,rightColumnResizeArgs:X}}function Z1(J){return L8(J)}function bJ(J){return qQ(J)}function SJ(J,z){let G=`${z?M8:""}${J}; __rc=$?; [ "$__rc" -ne 0 ] && printf '${"\\n \u26A0 Engine exited (code %s). Check Settings \u2192 Engines and fix the launch command.\\n\\n"}' "$__rc"; `;return z?`${G}"\${SHELL:-/bin/sh}"; ${z}`:`${G}exec "\${SHELL:-/bin/sh}"`}function rZ(J,z,Y){return`${J}${z.map(Z1).join(" ")} engine-tab-exit --session ${Z1(Y)}`}function O8(J){return`'${J.replace(/'/g,"'\\''")}'`}function cV(){return`clear; printf ${O8("\\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 N8(J){let z=typeof J==="number"?J:J==null?Number.NaN:Number.parseInt(J,10);if(!Number.isFinite(z))return SA;return Math.max(IA,Math.min(yA,Math.round(z)))}function TA(J,z){let Y=String(z),Z="\\n \u26A0 Repo init (.kobe/init.sh) timed out after %ss and was killed; continuing to the engine.\\n\\n",G="\\n \u26A0 Repo init (.kobe/init.sh) failed (code %s); continuing to the engine.\\n\\n";return['__kobe_init_env="${TMPDIR:-/tmp}/kobe-init-env.$$"','__kobe_init_to="${TMPDIR:-/tmp}/kobe-init-timeout.$$"','rm -f "$__kobe_init_env" "$__kobe_init_to" 2>/dev/null',"(",J,"__kobe_init_ec=$?",'export -p > "$__kobe_init_env" 2>/dev/null',"exit $__kobe_init_ec",") </dev/null &","__kobe_init_pid=$!",`( sleep ${Y}; : > "$__kobe_init_to"; kill -TERM "$__kobe_init_pid" 2>/dev/null; sleep 2; kill -KILL "$__kobe_init_pid" 2>/dev/null ) &`,"__kobe_init_wd=$!",'wait "$__kobe_init_pid" 2>/dev/null; __kobe_init_rc=$?','kill "$__kobe_init_wd" 2>/dev/null; wait "$__kobe_init_wd" 2>/dev/null',`if [ -f "$__kobe_init_to" ]; then __kobe_init_rc=124; printf '${"\\n \u26A0 Repo init (.kobe/init.sh) timed out after %ss and was killed; continuing to the engine.\\n\\n"}' '${Y}';`,'elif [ "$__kobe_init_rc" -eq 0 ]; then [ -f "$__kobe_init_env" ] && . "$__kobe_init_env" 2>/dev/null;',`else printf '${"\\n \u26A0 Repo init (.kobe/init.sh) failed (code %s); continuing to the engine.\\n\\n"}' "$__kobe_init_rc"; fi`,'rm -f "$__kobe_init_env" "$__kobe_init_to" 2>/dev/null'].join(`
23
- `)}function dV(J,z,Y){let Z=SJ(J,Y),G=z?.initScript?.trim();if(!G)return Z;let X=N8(z?.timeoutSeconds),q=TA(G,X);if(z?.markerPath){let H=O8(z.markerPath),f=O8(xA(z.markerPath));return M8+[`if [ ! -f ${H} ]; then`,q,`if [ "$__kobe_init_rc" -eq 0 ]; then mkdir -p ${f} && : > ${H}; fi`,"fi",Z].join(`
24
- `)}return M8+[q,Z].join(`
25
- `)}function xA(J){let z=J.lastIndexOf("/");return z<=0?".":J.slice(0,z)}function wV(J){return`cd ${Z1(J)} && while :; do clear; printf "\\033[1m# %s\\033[0m\\n\\n" ${Z1(J)}; git status --short --branch 2>/dev/null | sed 's/^/ /' || true; printf "\\n"; if command -v lsd >/dev/null 2>&1; then lsd --tree --git -I node_modules -I .git --depth 2 .; elif command -v eza >/dev/null 2>&1; then eza --tree --git -L 2 -I 'node_modules|.git' .; elif command -v tree >/dev/null 2>&1; then tree -L 2 -I 'node_modules|.git'; else ls -la; fi; sleep 2; done`}function nV(J){let z=Z1(J.worktree),Y=Z1(J.relPath),Z=J.cliInvocation.map(Z1).join(" "),G=`cd ${z} && if ! git diff --quiet HEAD -- ${Y} 2>/dev/null; then git diff HEAD -- ${Y} | { delta --paging=always 2>/dev/null || less -R; }; else bat --style=plain --paging=always ${Y} 2>/dev/null || \${PAGER:-less} ${Y} 2>/dev/null || cat ${Y}; fi`;return`${Z} ops --worktree ${z} --preview ${Y} || { ${G}; }`}function iV(J){return`${bJ([...J.cliInvocation,"update-page"])}`}function lV(J){let z=J.opener??"open";return[`tmux -L ${Z1(J.tmuxSocket)} capture-pane -Jp -t '#{pane_id}' -S -500`,`grep -oiE 'https?://[^ "'\\''()<>]+'`,"awk '!seen[$0]++'","{ command -v fzf >/dev/null && fzf --reverse || tail -1; }",`xargs -I{} ${z} {}`].join(" | ")}function IY(J,z={}){let Y=[...J,"tasks"];if(z.initialTaskId)Y.push("--initial-task-id",z.initialTaskId);return bJ(Y)}function oZ(J){if(J.taskId&&J.claudePaneId){let z=J.cliInvocation.map(Z1).join(" "),Y=J.vendor?` --vendor ${Z1(J.vendor)}`:"";return`KOBE_FILETREE_WATCH=1 ${z} ops --task-id ${Z1(J.taskId)} --worktree ${Z1(J.cwd)} --target-pane ${Z1(J.claudePaneId)}${Y} || { ${wV(J.cwd)}; }`}return wV(J.cwd)}var PV=32,oJ="tasks",QZ="claude",Wz="ops",Vz="shell",WX="workspace_aux",A8=4,Kz="@kobe_hidden_shell_pane",kJ="@kobe_hidden_tasks_pane",SY="@kobe_zen_panes",pZ="@kobe_zen",QQ="@kobe_tasks_width",NA=16,CA=120,g8=60,KX=50,HQ="@kobe_right_width_pct",fQ="@kobe_ops_height_pct",kA=10,bA=90,vV,M8="trap ':' INT; ",SA=120,IA=5,yA=3600;var Uz=C(()=>{F8();vV=[QQ,HQ,fQ]});function sJ(J){return!!J&&typeof J==="object"&&!Array.isArray(J)}function EA(J){return J.map((z)=>bJ(["hook",z.verb]))}function wA(J,z){if(!sJ(J)||!Array.isArray(J.hooks))return!1;return J.hooks.some((Y)=>sJ(Y)&&typeof Y.command==="string"&&z.some((Z)=>Y.command.includes(Z)))}function _V(J,z=b1()){let Y={};for(let{event:Z,matcher:G,verb:X}of J){let H={hooks:[{type:"command",command:bJ([...z,"hook",X])}]};if(G)H.matcher=G;Y[Z]=[H]}return Y}function jQ(J,z,Y,Z=b1()){let G=EA(Y),{hooks:X,...q}=J,H=sJ(X)?{...X}:{},f=z?_V(Y,Z):{};for(let{event:j}of Y){let B=(Array.isArray(H[j])?H[j]:[]).filter((K)=>!wA(K,G));if(z&&Array.isArray(f[j]))B.push(...f[j]);if(B.length>0)H[j]=B;else delete H[j]}return Object.keys(H).length>0?{...q,hooks:H}:{...q}}function pV(J=b1()){let z=bJ([...J,"hook",aV]);return{[$V]:[{matcher:uA,hooks:[{type:"command",command:z}]}]}}function PA(J){if(!sJ(J)||!Array.isArray(J.hooks))return!1;return J.hooks.some((z)=>sJ(z)&&typeof z.command==="string"&&z.command.includes(aV))}function BQ(J,z,Y=b1()){let{hooks:Z,...G}=J,X=sJ(Z)?{...Z}:{},q=$V,f=(Array.isArray(X[q])?X[q]:[]).filter((j)=>!PA(j));if(z)f.push(...pV(Y)[q]);if(f.length>0)X[q]=f;else delete X[q];return Object.keys(X).length>0?{...G,hooks:X}:{...G}}var $V="PostToolUse",uA="Bash",aV="worktree-created";var C8=C(()=>{YY();Uz()});import{mkdir as hA,readFile as vA,writeFile as mA}from"fs/promises";import{dirname as cA}from"path";async function dA(J){try{let z=JSON.parse(await vA(J,"utf8"));return sJ(z)?z:{}}catch{return{}}}async function sZ(J,z){try{let Y=await dA(J),Z=z(Y);if(JSON.stringify(Z)===JSON.stringify(Y))return;await hA(cA(J),{recursive:!0}),await mA(J,`${JSON.stringify(Z,null,2)}
26
- `)}catch{}}class UX{supportsHooks(){return!0}activityDetailFromPayload(J,z){return}supportsWorktreeSync(){return!1}async removeWorktreeSyncHook(J){}async installActivityHooks(J){await sZ(J,(z)=>jQ(z,!0,this.eventMap))}async removeActivityHooks(J){await sZ(J,(z)=>jQ(z,!1,this.eventMap))}async installWorktreeWatchHook(J){await sZ(J,(z)=>BQ(z,!0))}async removeWorktreeWatchHook(J){await sZ(J,(z)=>BQ(z,!1))}}var k8=C(()=>{C8()});import{homedir as nA}from"os";import{join as iA}from"path";function lA(J){if(typeof J!=="string")return"other";if(J==="rate_limit"||J==="overloaded")return"rate_limit";if(J==="billing_error")return"billing";return"other"}function $A(){return iA(nA(),".claude","settings.json")}function _A(J){if(!sJ(J)||!Array.isArray(J.hooks))return!1;return J.hooks.some((z)=>sJ(z)&&typeof z.command==="string"&&z.command.includes(aA))}function pA(J,z){let{hooks:Y,...Z}=J,{WorktreeCreate:G,...X}=sJ(Y)?Y:{},H=(Array.isArray(G)?G:[]).filter((j)=>!_A(j));if(z!==null)H.push({hooks:[{type:"command",command:z}]});let f={...X};if(H.length>0)f.WorktreeCreate=H;return Object.keys(f).length>0?{...Z,hooks:f}:{...Z}}var rV,EP,aA="worktree-created",b8;var oV=C(()=>{k8();C8();rV=[{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"}],EP=rV.map((J)=>J.event);b8=class b8 extends UX{vendor="claude";eventMap=rV;globalSettingsPath(){return $A()}activityDetailFromPayload(J,z){if(J==="turn-failed")return{failure:lA(z.error_type)};if(J==="awaiting-input")return{waiting:"permission"};return}supportsWorktreeSync(){return!0}async removeWorktreeSyncHook(J){await sZ(J,(z)=>pA(z,null))}}});function S8(J){if(typeof J==="string")return J.length>0?[{type:"text",text:J}]:[];if(!Array.isArray(J))return[];let z=[];for(let Y of J){if(typeof Y==="string"){if(Y.length>0)z.push({type:"text",text:Y});continue}if(!rA(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)z.push({type:"text",text:G});continue}if(Z)z.push({type:"text",text:`[codex: ${Z}]`})}return z}function rA(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}function sV(J){if(J.length===0)return!1;for(let z of J){if(z.type!=="text")return!1;let Y=(z.text??"").trim();if(!oA(Y)&&!sA(Y))return!1}return!0}function oA(J){return J.startsWith("<environment_context>")&&J.endsWith("</environment_context>")}function sA(J){return J.startsWith("# AGENTS.md instructions for ")&&J.includes(`
18
+ `)}}onLine(J){let z;try{z=JSON.parse(J)}catch(Z){JJ("client-frame",Z);return}if(z.type==="event"){this.emit(z);return}if(z.type!=="response")return;let Y=this.pending.get(z.id);if(!Y)return;if(this.pending.delete(z.id),z.error){let Z=Error(z.error.message);if(z.error.name)Z.name=z.error.name;Y.reject(Z)}else Y.resolve(z.payload)}emit(J){for(let z of this.handlers.get(J.name)??[])z(J);for(let z of this.handlers.get("*")??[])z(J)}}var HX=C(()=>{YZ();GZ()});import{spawnSync as jA}from"child_process";import{existsSync as BA,statSync as WA}from"fs";import{homedir as VA}from"os";import fX from"path";async function xV(J=KA){let z=[],Y=(j)=>{if(!j)return;return z.push(j),J.fileExists(j)?j:void 0},Z=J.which("claude");if(Z){if(z.push(`which:${Z}`),J.fileExists(Z))return Z}let G=J.home(),X=Y(fX.join(G,".claude","local","claude"));if(X)return X;let Q=J.env("NVM_BIN");if(Q){let j=Y(fX.join(Q,"claude"));if(j)return j}let H=fX.join(G,".nvm","versions","node"),f=J.readdir(H).sort().reverse();for(let j of f){let V=Y(fX.join(H,j,"bin","claude"));if(V)return V}for(let j of["/opt/homebrew/bin/claude","/usr/local/bin/claude","/usr/bin/claude","/bin/claude"]){let V=Y(j);if(V)return V}for(let j of[".local/bin/claude",".npm-global/bin/claude",".yarn/bin/claude",".bun/bin/claude","bin/claude"]){let V=Y(fX.join(G,j));if(V)return V}throw new sQ(z)}var sQ,KA;var uV=C(()=>{sQ=class sQ extends Error{checkedPaths;constructor(J){super(`Claude Code binary not found. Checked: ${J.join(", ")}. Ensure 'claude' is on PATH, or install at ~/.claude/local/claude.`);this.name="ClaudeBinaryNotFoundError",this.checkedPaths=J}};KA={fileExists(J){try{return WA(J).isFile()}catch{return!1}},env(J){return process.env[J]},home(){return VA()},which(J){let z=process.platform==="win32"?"where":"which",Y=jA(z,[J],{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&&BA(G)?G:void 0}return Z},readdir(J){try{return PQ("fs").readdirSync(J)}catch{return[]}}}});import{spawnSync as UA}from"child_process";import{existsSync as DA,statSync as LA}from"fs";import{homedir as FA}from"os";import EV from"path";async function wV(J=MA){let z=[],Y=(Q)=>{if(!Q)return;return z.push(Q),J.fileExists(Q)?Q:void 0},Z=J.which("codex");if(Z){if(z.push(`which:${Z}`),J.fileExists(Z))return Z}let G=J.home();for(let Q of["/opt/homebrew/bin/codex","/usr/local/bin/codex","/usr/bin/codex","/bin/codex"]){let H=Y(Q);if(H)return H}let X=J.env("NVM_BIN");if(X){let Q=Y(EV.join(X,"codex"));if(Q)return Q}for(let Q of[".local/bin/codex",".bun/bin/codex","bin/codex"]){let H=Y(EV.join(G,Q));if(H)return H}throw new tQ(z)}var tQ,MA;var PV=C(()=>{tQ=class tQ extends Error{checkedPaths;constructor(J){super(`Codex CLI binary not found. Checked: ${J.join(", ")}. Ensure 'codex' is on PATH (e.g. \`brew install codex\` or the official installer).`);this.name="CodexBinaryNotFoundError",this.checkedPaths=J}};MA={fileExists(J){try{return LA(J).isFile()}catch{return!1}},env(J){return process.env[J]},home(){return FA()},which(J){let z=process.platform==="win32"?"where":"which",Y=UA(z,[J],{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&&DA(G)?G:void 0}return Z},readdir(J){try{return PQ("fs").readdirSync(J)}catch{return[]}}}});import{spawnSync as OA}from"child_process";import{existsSync as AA,statSync as RA}from"fs";import{homedir as gA}from"os";import CY from"path";async function hV(J=NA){let z=[],Y=(V)=>{if(!V)return;return z.push(V),J.fileExists(V)?V:void 0},Z=J.which("copilot");if(Z){if(z.push(`which:${Z}`),J.fileExists(Z))return Z}let G=J.platform()==="win32"?["copilot.exe","copilot.cmd","copilot"]:["copilot"],X=(V)=>{if(!V)return;for(let B of G){let K=Y(CY.join(V,B));if(K)return K}return};for(let V of["/opt/homebrew/bin","/usr/local/bin","/usr/bin","/bin"]){let B=X(V);if(B)return B}let Q=J.env("NVM_BIN"),H=X(Q);if(H)return H;let f=J.home(),j=[CY.join(f,".npm-global/bin"),CY.join(f,".local/bin"),CY.join(f,".bun/bin"),CY.join(f,"bin")];if(J.platform()==="win32"){let V=J.env("APPDATA"),B=J.env("LOCALAPPDATA");if(j.unshift(CY.join(f,"AppData/Roaming/npm")),V)j.unshift(CY.join(V,"npm"));if(B)j.unshift(CY.join(B,"npm"))}for(let V of j){let B=X(V);if(B)return B}throw new eQ(z)}var eQ,NA;var vV=C(()=>{eQ=class eQ extends Error{checkedPaths;constructor(J){super(`GitHub Copilot CLI binary not found. Checked: ${J.join(", ")}. Ensure 'copilot' is on PATH (for example \`npm install -g @github/copilot\` or \`brew install copilot-cli\`).`);this.name="CopilotBinaryNotFoundError",this.checkedPaths=J}};NA={fileExists(J){try{return RA(J).isFile()}catch{return!1}},env(J){return process.env[J]},home(){return gA()},which(J){let z=process.platform==="win32"?"where":"which",Y=OA(z,[J],{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&&AA(G)?G:void 0}return Z},platform(){return process.platform}}});import{readFileSync as CA,statSync as kA}from"fs";import{readFile as bA,stat as SA}from"fs/promises";async function aZ(J,z=mV){let{size:Y}=await SA(J);if(Y>z)return"";return bA(J,"utf8")}function cV(J,z=mV){let Y;try{Y=kA(J)}catch(Z){if(Z.code==="ENOENT")return null;throw Z}if(Y.size>z)return null;return CA(J,"utf8")}function kY(J,z=IA){return J.length<=z}var mV=104857600,IA=8388608;var jX=()=>{};import{homedir as yA}from"os";import bY from"path";function TA(J,z){let Y=J("CLAUDE_CONFIG_DIR")?.trim();if(Y)return bY.join(Y,".claude.json");return bY.join(z,".claude.json")}function xA(J,z){let Z=J("CODEX_HOME")?.trim()??bY.join(z,".codex");return bY.join(Z,"auth.json")}function uA(J,z){let Z=J("COPILOT_HOME")?.trim()??bY.join(z,".copilot");return bY.join(Z,"config.json")}function EA(J){let z=J.split(".");if(z.length!==3)return null;let Y=z[1];if(!Y)return null;let Z=Y.replace(/-/g,"+").replace(/_/g,"/"),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 zq(J){try{return{found:!0,path:await J()}}catch(z){if(z instanceof sQ||z instanceof tQ||z instanceof eQ)return{found:!1,error:"not found on PATH"};return{found:!1,error:z instanceof Error?z.message:String(z)}}}async function dV(J){return(await Promise.all([["claude",()=>J.findClaudeBinary()],["codex",()=>J.findCodexBinary()],["copilot",()=>J.findCopilotBinary()]].map(async([Z,G])=>(await zq(G)).found?Z:null))).filter((Z)=>Z!==null)}function wA(J=_Z){if(J!==_Z)return dV(J);if(Jq)return Jq;let z=dV(J).catch((Y)=>{throw Jq=null,Y});return Jq=z,z}async function GY(J=_Z){return[...await wA(J),...hJ()]}async function Yq(J=_Z){let z=await zq(()=>J.findClaudeBinary()),Y=TA(J.env,J.home()),Z;try{Z=J.readFile(Y)}catch(f){return{binary:z,account:{kind:"none"},accountError:`read ${Y}: ${f instanceof Error?f.message:String(f)}`}}if(Z===null)return{binary:z,account:{kind:"none"}};let G;try{G=JSON.parse(Z)}catch(f){return{binary:z,account:{kind:"none"},accountError:`parse ${Y}: ${f instanceof Error?f.message:String(f)}`}}let X=G?.oauthAccount;if(!X||typeof X!=="object")return{binary:z,account:{kind:"none"}};let Q=X,H=typeof Q.emailAddress==="string"?Q.emailAddress:void 0;if(!H)return{binary:z,account:{kind:"none"}};return{binary:z,account:{kind:"oauth",email:H,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 Zq(J=_Z){let z=await zq(()=>J.findCodexBinary()),Y=xA(J.env,J.home()),Z;try{Z=J.readFile(Y)}catch(j){return{binary:z,account:{kind:"none"},accountError:`read ${Y}: ${j instanceof Error?j.message:String(j)}`}}if(Z===null)return{binary:z,account:{kind:"none"}};let G;try{G=JSON.parse(Z)}catch(j){return{binary:z,account:{kind:"none"},accountError:`parse ${Y}: ${j instanceof Error?j.message:String(j)}`}}let X=G??{},Q=X.tokens,H=typeof Q?.id_token==="string"?Q.id_token:void 0;if(H){let j=EA(H);if(!j)return{binary:z,account:{kind:"none"},accountError:"codex id_token: malformed JWT"};let V=typeof j.email==="string"?j.email:void 0,B=j["https://api.openai.com/auth"],K=typeof B==="object"&&B!==null&&!Array.isArray(B)?B:void 0,L=typeof K?.chatgpt_plan_type==="string"?K.chatgpt_plan_type:void 0;if(V)return{binary:z,account:{kind:"chatgpt",email:V,plan:L}};return{binary:z,account:{kind:"none"},accountError:"codex id_token: no email claim"}}let f=X.OPENAI_API_KEY;if(typeof f==="string"&&f.length>0)return{binary:z,account:{kind:"apikey"}};return{binary:z,account:{kind:"none"}}}async function Gq(J=_Z){let z=await zq(()=>J.findCopilotBinary());for(let X of["COPILOT_GITHUB_TOKEN","GH_TOKEN","GITHUB_TOKEN"])if(J.env(X)?.trim())return{binary:z,account:{kind:"token",source:X}};let Y=uA(J.env,J.home()),Z;try{Z=J.readFile(Y)}catch(X){return{binary:z,account:{kind:"none"},accountError:`read ${Y}: ${X instanceof Error?X.message:String(X)}`}}if(Z===null)return{binary:z,account:{kind:"none"}};let G;try{G=JSON.parse(Z)}catch(X){return{binary:z,account:{kind:"none"},accountError:`parse ${Y}: ${X instanceof Error?X.message:String(X)}`}}if(!Uj(G))return{binary:z,account:{kind:"none"}};if(nV(G,["github_token","oauth_token","access_token","token","selectedUser","currentUser","user"]))return{binary:z,account:{kind:"oauth"}};return{binary:z,account:{kind:"none"}}}function Uj(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}function nV(J,z,Y=0){if(Y>4||!Uj(J))return!1;for(let[Z,G]of Object.entries(J)){if(z.includes(Z)&&typeof G==="string"&&G.length>0)return!0;if(Uj(G)&&nV(G,z,Y+1))return!0}return!1}var _Z,Jq=null;var XZ=C(()=>{C1();uV();PV();vV();jX();_Z={readFile(J){return cV(J)},env(J){return process.env[J]},home(){return yA()},findClaudeBinary(){return xV()},findCodexBinary(){return wV()},findCopilotBinary(){return hV()}}});function iV(J){if(typeof J==="string")return J.length>0?[{type:"text",text:J}]:[];if(!Array.isArray(J))return[];let z=[];for(let Y of J){if(typeof Y==="string"){if(Y.length>0)z.push({type:"text",text:Y});continue}if(!Y||typeof Y!=="object")continue;let Z=Y;if(Z.type==="text"&&typeof Z.text==="string"){z.push({type:"text",text:Z.text});continue}if(Z.type==="tool_use"){z.push({type:"tool_call",callId:typeof Z.id==="string"?Z.id:"",name:typeof Z.name==="string"?Z.name:"",input:Z.input});continue}if(Z.type==="tool_result"){z.push({type:"tool_result",callId:typeof Z.tool_use_id==="string"?Z.tool_use_id:"",output:Z.content,isError:Z.is_error===!0});continue}if(Z.type==="thinking"&&typeof Z.thinking==="string")z.push({type:"thinking",text:Z.thinking})}return z}function lV(J){return J.isMeta===!0||J.isCompactSummary===!0}function $V(J){if(J.length===0)return!1;for(let z of J){if(z.type!=="text")return!1;let Y=z.text.trim();if(!Y.startsWith("<command-name>")&&!Y.startsWith("<command-message>")&&!Y.startsWith("<local-command"))return!1}return!0}import{appendFile as PP,mkdir as hP,readdir as Dj,stat as PA,unlink as vP}from"fs/promises";import{homedir as aV}from"os";import Xq from"path";function vA(J){return J.replace(/[/.]/g,"-")}async function BX(J){if(!J)return[];let z=Xq.join(aV(),".claude","projects",vA(J)),Y;try{Y=await Dj(z)}catch{return[]}let Z=[];for(let G of Y){if(!G.endsWith(".jsonl"))continue;let X=Xq.join(z,G),Q=0;try{Q=(await PA(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 _V(J){return(await BX(J))[0]?.mtimeMs??0}async function pV(J,z=hA){let Y=z.projectsDir(),Z=await z.readdir(Y);for(let G of Z){let X=Xq.join(Y,G,`${J}.jsonl`),Q;try{Q=await z.readFile(X)}catch{continue}return mA(cA(Q,J))}return[]}function mA(J){return J.map((z,Y)=>({msg:z,idx:Y})).sort((z,Y)=>{if(z.msg.timestamp<Y.msg.timestamp)return-1;if(z.msg.timestamp>Y.msg.timestamp)return 1;return z.idx-Y.idx}).map((z)=>z.msg)}function cA(J,z){let Y=[];for(let Z of J.split(`
22
+ `)){let G=Z.trim();if(!G)continue;if(!kY(G))continue;let X;try{X=JSON.parse(G)}catch{continue}if(!Lj(X))continue;let Q=dA(X,z);if(Q)Y.push(Q)}return Y}function dA(J,z){if(lV(J))return null;let Y=Lj(J.message)?J.message:J,Z=Y.role;if(Z!=="user"&&Z!=="assistant"&&Z!=="system")return null;if(!("content"in Y))return null;let G=iV(Y.content);if(Z==="user"&&$V(G))return null;let X=typeof J.timestamp==="string"?J.timestamp:new Date().toISOString(),Q=typeof J.sessionId==="string"?J.sessionId:z,H=nA(Y.usage);return H?{role:Z,blocks:G,timestamp:X,sessionId:Q,usage:H}:{role:Z,blocks:G,timestamp:X,sessionId:Q}}function nA(J){if(!Lj(J))return;let z=typeof J.input_tokens==="number"?J.input_tokens:void 0,Y=typeof J.output_tokens==="number"?J.output_tokens:void 0;if(z===void 0||Y===void 0)return;let Z=typeof J.cache_read_input_tokens==="number"?J.cache_read_input_tokens:void 0,G=typeof J.cache_creation_input_tokens==="number"?J.cache_creation_input_tokens:void 0;return{input_tokens:z,output_tokens:Y,...Z!==void 0?{cache_read_input_tokens:Z}:{},...G!==void 0?{cache_creation_input_tokens:G}:{}}}function Lj(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}var hA;var Fj=C(()=>{jX();hA={projectsDir(){return Xq.join(aV(),".claude","projects")},async readdir(J){try{return await Dj(J)}catch{return[]}},async readFile(J){return await aZ(J)},async pathExists(J){try{return await Dj(J),!0}catch{return!1}}}});import{fileURLToPath as oV}from"url";function y1(){if(import.meta.url.endsWith(".js"))return["kobe"];let z=oV(new URL("./index.ts",import.meta.url)),Y=oV(import.meta.resolve("@opentui/solid/preload"));return[process.execPath,"--preload",Y,"--conditions=browser",z]}var XY=()=>{};function Mj(J,z={}){if(z.bareSafe&&iA.test(J))return J;return`'${J.replace(/'/g,"'\\''")}'`}function Qq(J,z={}){return J.map((Y)=>Mj(Y,z)).join(" ")}var iA;var Oj=C(()=>{iA=/^[A-Za-z0-9_/.:=-]+$/});function VX(J){return`kobe-hidden-${J.replace(/[^A-Za-z0-9_-]/g,"")||"session"}`}function eV(J){let z=Number.parseInt(J.replace(/^@/,""),10);return Number.isFinite(z)&&z>=0?1000+z:1000}function Nj(J){if(!Number.isFinite(J))return tV;return Math.max(lA,Math.min($A,Math.round(J)))}function QZ(J){if(!Number.isFinite(J))return null;return Math.max(aA,Math.min(_A,Math.round(J)))}function z7(J){let z=Number.parseInt(J[qq]??"",10),Y=Number.isFinite(z)&&z>0?Nj(z):tV,Z=QZ(Number.parseInt(J[Hq]??"",10)),G=QZ(Number.parseInt(J[fq]??"",10)),X=[];if(Z!==null)X.push("-x",`${Z}%`);if(G!==null)X.push("-y",`${G}%`);return{tasksWidth:Y,rightColumnWidthPct:Z??100-Cj,opsHeightPct:G??KX,rightColumnResizeArgs:X}}function Q1(J){return Mj(J)}function yJ(J){return Qq(J)}function TJ(J,z){let G=`${z?Aj:""}${J}; __rc=$?; [ "$__rc" -ne 0 ] && printf '${"\\n \u26A0 Engine exited (code %s). Check Settings \u2192 Engines and fix the launch command.\\n\\n"}' "$__rc"; `;return z?`${G}"\${SHELL:-/bin/sh}"; ${z}`:`${G}exec "\${SHELL:-/bin/sh}"`}function Y7(J){return`trap '' INT; while :; do ${J}; sleep 1; done`}function rZ(J,z,Y){return`${J}${z.map(Q1).join(" ")} engine-tab-exit --session ${Q1(Y)}`}function Rj(J){return`'${J.replace(/'/g,"'\\''")}'`}function Z7(){return`clear; printf ${Rj("\\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 kj(J){let z=typeof J==="number"?J:J==null?Number.NaN:Number.parseInt(J,10);if(!Number.isFinite(z))return pA;return Math.max(rA,Math.min(oA,Math.round(z)))}function sA(J,z){let Y=String(z),Z="\\n \u26A0 Repo init (.kobe/init.sh) timed out after %ss and was killed; continuing to the engine.\\n\\n",G="\\n \u26A0 Repo init (.kobe/init.sh) failed (code %s); continuing to the engine.\\n\\n";return['__kobe_init_env="${TMPDIR:-/tmp}/kobe-init-env.$$"','__kobe_init_to="${TMPDIR:-/tmp}/kobe-init-timeout.$$"','rm -f "$__kobe_init_env" "$__kobe_init_to" 2>/dev/null',"(",J,"__kobe_init_ec=$?",'export -p > "$__kobe_init_env" 2>/dev/null',"exit $__kobe_init_ec",") </dev/null &","__kobe_init_pid=$!",`( sleep ${Y}; : > "$__kobe_init_to"; kill -TERM "$__kobe_init_pid" 2>/dev/null; sleep 2; kill -KILL "$__kobe_init_pid" 2>/dev/null ) &`,"__kobe_init_wd=$!",'wait "$__kobe_init_pid" 2>/dev/null; __kobe_init_rc=$?','kill "$__kobe_init_wd" 2>/dev/null; wait "$__kobe_init_wd" 2>/dev/null',`if [ -f "$__kobe_init_to" ]; then __kobe_init_rc=124; printf '${"\\n \u26A0 Repo init (.kobe/init.sh) timed out after %ss and was killed; continuing to the engine.\\n\\n"}' '${Y}';`,'elif [ "$__kobe_init_rc" -eq 0 ]; then [ -f "$__kobe_init_env" ] && . "$__kobe_init_env" 2>/dev/null;',`else printf '${"\\n \u26A0 Repo init (.kobe/init.sh) failed (code %s); continuing to the engine.\\n\\n"}' "$__kobe_init_rc"; fi`,'rm -f "$__kobe_init_env" "$__kobe_init_to" 2>/dev/null'].join(`
23
+ `)}function G7(J,z,Y){let Z=TJ(J,Y),G=z?.initScript?.trim();if(!G)return Z;let X=kj(z?.timeoutSeconds),Q=sA(G,X);if(z?.markerPath){let H=Rj(z.markerPath),f=Rj(tA(z.markerPath));return Aj+[`if [ ! -f ${H} ]; then`,Q,`if [ "$__kobe_init_rc" -eq 0 ]; then mkdir -p ${f} && : > ${H}; fi`,"fi",Z].join(`
24
+ `)}return Aj+[Q,Z].join(`
25
+ `)}function tA(J){let z=J.lastIndexOf("/");return z<=0?".":J.slice(0,z)}function sV(J){return`cd ${Q1(J)} && while :; do clear; printf "\\033[1m# %s\\033[0m\\n\\n" ${Q1(J)}; git status --short --branch 2>/dev/null | sed 's/^/ /' || true; printf "\\n"; if command -v lsd >/dev/null 2>&1; then lsd --tree --git -I node_modules -I .git --depth 2 .; elif command -v eza >/dev/null 2>&1; then eza --tree --git -L 2 -I 'node_modules|.git' .; elif command -v tree >/dev/null 2>&1; then tree -L 2 -I 'node_modules|.git'; else ls -la; fi; sleep 2; done`}function X7(J){let z=Q1(J.worktree),Y=Q1(J.relPath),Z=J.cliInvocation.map(Q1).join(" "),G=`cd ${z} && if ! git diff --quiet HEAD -- ${Y} 2>/dev/null; then git diff HEAD -- ${Y} | { delta --paging=always 2>/dev/null || less -R; }; else bat --style=plain --paging=always ${Y} 2>/dev/null || \${PAGER:-less} ${Y} 2>/dev/null || cat ${Y}; fi`;return`${Z} ops --worktree ${z} --preview ${Y} || { ${G}; }`}function Q7(J){return`${yJ([...J.cliInvocation,"update-page"])}`}function q7(J){let z=J.opener??"open";return[`tmux -L ${Q1(J.tmuxSocket)} capture-pane -Jp -t '#{pane_id}' -S -500`,`grep -oiE 'https?://[^ "'\\''()<>]+'`,"awk '!seen[$0]++'","{ command -v fzf >/dev/null && fzf --reverse || tail -1; }",`xargs -I{} ${z} {}`].join(" | ")}function IY(J,z={}){let Y=[...J,"tasks"];if(z.initialTaskId)Y.push("--initial-task-id",z.initialTaskId);return yJ(Y)}function oZ(J){if(J.taskId&&J.claudePaneId){let z=J.cliInvocation.map(Q1).join(" "),Y=J.vendor?` --vendor ${Q1(J.vendor)}`:"";return`KOBE_FILETREE_WATCH=1 ${z} ops --task-id ${Q1(J.taskId)} --worktree ${Q1(J.cwd)} --target-pane ${Q1(J.claudePaneId)}${Y} || { ${sV(J.cwd)}; }`}return sV(J.cwd)}var tV=32,eJ="tasks",qZ="claude",Kz="ops",Uz="shell",WX="workspace_aux",gj=4,Dz="@kobe_hidden_shell_pane",IJ="@kobe_hidden_tasks_pane",SY="@kobe_zen_panes",pZ="@kobe_zen",qq="@kobe_tasks_width",lA=16,$A=120,Cj=60,KX=50,Hq="@kobe_right_width_pct",fq="@kobe_ops_height_pct",aA=10,_A=90,J7,Aj="trap ':' INT; ",pA=120,rA=5,oA=3600;var Lz=C(()=>{Oj();J7=[qq,Hq,fq]});function Jz(J){return!!J&&typeof J==="object"&&!Array.isArray(J)}function JR(J){return J.map((z)=>yJ(["hook",z.verb]))}function zR(J,z){if(!Jz(J)||!Array.isArray(J.hooks))return!1;return J.hooks.some((Y)=>Jz(Y)&&typeof Y.command==="string"&&z.some((Z)=>Y.command.includes(Z)))}function j7(J,z=y1()){let Y={};for(let{event:Z,matcher:G,verb:X}of J){let H={hooks:[{type:"command",command:yJ([...z,"hook",X])}]};if(G)H.matcher=G;Y[Z]=[H]}return Y}function jq(J,z,Y,Z=y1()){let G=JR(Y),{hooks:X,...Q}=J,H=Jz(X)?{...X}:{},f=z?j7(Y,Z):{};for(let{event:j}of Y){let B=(Array.isArray(H[j])?H[j]:[]).filter((K)=>!zR(K,G));if(z&&Array.isArray(f[j]))B.push(...f[j]);if(B.length>0)H[j]=B;else delete H[j]}return Object.keys(H).length>0?{...Q,hooks:H}:{...Q}}function B7(J=y1()){let z=yJ([...J,"hook",f7]);return{[H7]:[{matcher:eA,hooks:[{type:"command",command:z}]}]}}function YR(J){if(!Jz(J)||!Array.isArray(J.hooks))return!1;return J.hooks.some((z)=>Jz(z)&&typeof z.command==="string"&&z.command.includes(f7))}function Bq(J,z,Y=y1()){let{hooks:Z,...G}=J,X=Jz(Z)?{...Z}:{},Q=H7,f=(Array.isArray(X[Q])?X[Q]:[]).filter((j)=>!YR(j));if(z)f.push(...B7(Y)[Q]);if(f.length>0)X[Q]=f;else delete X[Q];return Object.keys(X).length>0?{...G,hooks:X}:{...G}}var H7="PostToolUse",eA="Bash",f7="worktree-created";var bj=C(()=>{XY();Lz()});import{mkdir as ZR,readFile as GR,writeFile as XR}from"fs/promises";import{dirname as QR}from"path";async function qR(J){try{let z=JSON.parse(await GR(J,"utf8"));return Jz(z)?z:{}}catch{return{}}}async function sZ(J,z){try{let Y=await qR(J),Z=z(Y);if(JSON.stringify(Z)===JSON.stringify(Y))return;await ZR(QR(J),{recursive:!0}),await XR(J,`${JSON.stringify(Z,null,2)}
26
+ `)}catch{}}class UX{supportsHooks(){return!0}activityDetailFromPayload(J,z){return}supportsWorktreeSync(){return!1}async removeWorktreeSyncHook(J){}async installActivityHooks(J){await sZ(J,(z)=>jq(z,!0,this.eventMap))}async removeActivityHooks(J){await sZ(J,(z)=>jq(z,!1,this.eventMap))}async installWorktreeWatchHook(J){await sZ(J,(z)=>Bq(z,!0))}async removeWorktreeWatchHook(J){await sZ(J,(z)=>Bq(z,!1))}}var Sj=C(()=>{bj()});import{homedir as HR}from"os";import{join as fR}from"path";function jR(J){if(typeof J!=="string")return"other";if(J==="rate_limit"||J==="overloaded")return"rate_limit";if(J==="billing_error")return"billing";return"other"}function BR(){return fR(HR(),".claude","settings.json")}function VR(J){if(!Jz(J)||!Array.isArray(J.hooks))return!1;return J.hooks.some((z)=>Jz(z)&&typeof z.command==="string"&&z.command.includes(WR))}function KR(J,z){let{hooks:Y,...Z}=J,{WorktreeCreate:G,...X}=Jz(Y)?Y:{},H=(Array.isArray(G)?G:[]).filter((j)=>!VR(j));if(z!==null)H.push({hooks:[{type:"command",command:z}]});let f={...X};if(H.length>0)f.WorktreeCreate=H;return Object.keys(f).length>0?{...Z,hooks:f}:{...Z}}var W7,Qh,WR="worktree-created",Ij;var V7=C(()=>{Sj();bj();W7=[{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"}],Qh=W7.map((J)=>J.event);Ij=class Ij extends UX{vendor="claude";eventMap=W7;globalSettingsPath(){return BR()}activityDetailFromPayload(J,z){if(J==="turn-failed")return{failure:jR(z.error_type)};if(J==="awaiting-input")return{waiting:"permission"};return}supportsWorktreeSync(){return!0}async removeWorktreeSyncHook(J){await sZ(J,(z)=>KR(z,null))}}});function yj(J){if(typeof J==="string")return J.length>0?[{type:"text",text:J}]:[];if(!Array.isArray(J))return[];let z=[];for(let Y of J){if(typeof Y==="string"){if(Y.length>0)z.push({type:"text",text:Y});continue}if(!UR(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)z.push({type:"text",text:G});continue}if(Z)z.push({type:"text",text:`[codex: ${Z}]`})}return z}function UR(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}function K7(J){if(J.length===0)return!1;for(let z of J){if(z.type!=="text")return!1;let Y=(z.text??"").trim();if(!DR(Y)&&!LR(Y))return!1}return!0}function DR(J){return J.startsWith("<environment_context>")&&J.endsWith("</environment_context>")}function LR(J){return J.startsWith("# AGENTS.md instructions for ")&&J.includes(`
27
27
  <INSTRUCTIONS>
28
- `)&&J.endsWith("</INSTRUCTIONS>")}var tV=()=>{};function eV(J,z={}){let Y=I8(J.input_tokens,0),Z=I8(J.cached_input_tokens,0),G=I8(J.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}:{},...tA(z.contextWindowTokens)?{context_window_tokens:z.contextWindowTokens}:{}}}function I8(J,z){return typeof J==="number"&&Number.isFinite(J)?J:z}function tA(J){return typeof J==="number"&&Number.isFinite(J)&&J>0}import{readdir as eA,stat as J2,unlink as dP}from"fs/promises";import{homedir as z2}from"os";import HZ from"path";async function u8(J=fZ){let z=J.sessionsDir(),Y=(await J.readdir(z)).sort().reverse(),Z=[];for(let G of Y){let X=HZ.join(z,G),q=(await J.readdir(X)).sort().reverse();for(let H of q){let f=HZ.join(X,H),j=(await J.readdir(f)).sort().reverse();for(let V of j){let B=HZ.join(f,V),K=(await J.readdir(B)).filter((L)=>L.startsWith("rollout-")&&L.endsWith(".jsonl"));K.sort().reverse();for(let L of K)if(Z.push(HZ.join(B,L)),Z.length>=J7){if(!z7)z7=!0,console.warn(`[codex history] rollout scan truncated at ${J7} files; older sessions may be omitted`);return Z}}}}return Z}async function Y2(J,z=fZ){if(!J)return;let Y=J.toLowerCase(),Z=await u8(z);for(let G of Z)if(HZ.basename(G).match(X7)?.[1]?.toLowerCase()===Y)return G;return}function Z2(J){for(let z of J.split(`
29
- `)){let Y=z.trim();if(!Y)continue;if(!kY(Y))return"";try{let Z=JSON.parse(Y);if(Z.type==="session_meta")return Z.payload?.cwd??""}catch{}return""}return""}async function q7(J,z){let Y=Y7.get(z);if(!Y)Y=new Map,Y7.set(z,Y);let Z=Y.get(J);if(Z!==void 0)return Z;let G;try{G=await z.readFile(J)}catch{return null}let X=Z2(G);if(X)Y.set(J,X);return X}async function Q7(J,z=fZ){if(!J)return[];let Y=await u8(z),Z=[],G=0;for(let X of Y){if(G>=G2)break;if(G++,await q7(X,z)!==J)continue;let q=HZ.basename(X).match(X7)?.[1];if(q)Z.push(q)}return Z.reverse()}async function E8(J,z=fZ){if(!J)return null;let Y=await u8(z),Z=0;for(let G of Y){if(Z>=X2)break;if(Z++,await q7(G,z)!==J)continue;try{return{path:G,mtimeMs:(await z.stat(G)).mtimeMs}}catch{}}return null}async function H7(J,z=fZ){return(await E8(J,z))?.mtimeMs??0}async function f7(J,z=fZ){return(await q2(J,z)).messages}async function q2(J,z=fZ){let Y=await Y2(J,z);if(!Y)return{messages:[]};let Z;try{Z=await z.readFile(Y)}catch{return{messages:[]}}let G=Q2(H2(Z,J)),X=V2(Z);return{messages:G,...X?{usageMetrics:X}:{}}}function Q2(J){return J.map((z,Y)=>({msg:z,idx:Y})).sort((z,Y)=>{if(z.msg.timestamp<Y.msg.timestamp)return-1;if(z.msg.timestamp>Y.msg.timestamp)return 1;return z.idx-Y.idx}).map((z)=>z.msg)}function H2(J,z){let Y=[];for(let Z of J.split(`
30
- `)){let G=Z.trim();if(!G)continue;if(!kY(G))continue;let X;try{X=JSON.parse(G)}catch{continue}if(!DX(X))continue;if(X.type!=="response_item")continue;let q=DX(X.payload)?X.payload:void 0;if(!q)continue;let H=typeof X.timestamp==="string"?X.timestamp:new Date().toISOString(),f=f2(q,H,z);if(f)Y.push(f)}return Y}function f2(J,z,Y){if(J.type==="message"){let Z=J.role;if(Z!=="user"&&Z!=="assistant"&&Z!=="system")return;let G=S8(J.content);if(Z==="user"&&sV(G))return;return{role:Z,blocks:G,timestamp:z,sessionId:Y}}if(J.type==="reasoning")return j2(J,z,Y);if(J.type==="function_call")return y8(J,z,Y,{name:x8(J.name,"function_call"),input:T8(J.arguments)});if(J.type==="custom_tool_call")return y8(J,z,Y,{name:x8(J.name,"custom_tool_call"),input:T8(J.input)});if(J.type==="tool_search_call")return y8(J,z,Y,{name:"tool_search_call",input:WQ(J,["type","call_id","status"])});if(J.type==="function_call_output"||J.type==="custom_tool_call_output")return Z7(J,z,Y,T8(J.output));if(J.type==="tool_search_output")return Z7(J,z,Y,WQ(J,["type","call_id"]));if(J.type==="web_search_call"||J.type==="image_generation_call"||J.type==="local_shell_call")return B2(J,z,Y);return}function j2(J,z,Y){let Z=W2(J);if(Z.length===0)return;return{role:"assistant",blocks:[{type:"thinking",text:Z}],timestamp:z,sessionId:Y}}function y8(J,z,Y,Z){let G=typeof J.call_id==="string"?J.call_id:void 0;if(!G)return;return{role:"assistant",blocks:[{type:"tool_call",callId:G,name:Z.name,input:Z.input}],timestamp:z,sessionId:Y}}function Z7(J,z,Y,Z){let G=typeof J.call_id==="string"?J.call_id:void 0;if(!G)return;return{role:"user",blocks:[{type:"tool_result",callId:G,output:Z,isError:!1}],timestamp:z,sessionId:Y}}function B2(J,z,Y){let Z=typeof J.type==="string"?J.type:"tool",G=typeof J.call_id==="string"&&J.call_id.length>0?J.call_id:`${Z}:${z}`,X=x8(J.name,Z),q=WQ(J,["type","call_id","status"]),H=WQ(J,["type","call_id"]);return{role:"assistant",timestamp:z,sessionId:Y,blocks:[{type:"tool_call",callId:G,name:X,input:q},{type:"tool_result",callId:G,output:H,isError:!1}]}}function W2(J){let z=G7(J.content);if(z.length>0)return z;let Y=typeof J.text==="string"?J.text:"";if(Y.length>0)return Y;return G7(J.summary)}function G7(J){if(typeof J==="string")return J;if(!Array.isArray(J))return"";let z=[];for(let Y of J){if(typeof Y==="string"){z.push(Y);continue}if(!DX(Y))continue;let Z=typeof Y.text==="string"?Y.text:"";if(Z.length>0)z.push(Z)}return z.join("")}function WQ(J,z){let Y={};for(let[Z,G]of Object.entries(J))if(!z.includes(Z))Y[Z]=G;return Y}function x8(J,z){return typeof J==="string"&&J.length>0?J:z}function T8(J){if(typeof J!=="string")return J;try{return JSON.parse(J)}catch{return J}}function V2(J){let z,Y=null;for(let Z of J.split(`
31
- `)){let G=Z.trim();if(!G)continue;if(!kY(G))continue;let X;try{X=JSON.parse(G)}catch{continue}if(!DX(X))continue;let q=typeof X.timestamp==="string"?K2(X.timestamp):null;if(X.type==="response_item")continue;if(X.type!=="turn.completed")continue;let H=DX(X.usage)?X.usage:void 0;if(!H)continue;let f=eV(H);if(!f)continue;if(q!==null&&(Y===null||q>Y))Y=q,z=f;else if(Y===null)z=f}return z}function K2(J){let z=new Date(J).getTime();return Number.isFinite(z)?z:null}function DX(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}var fZ,J7=5000,z7=!1,X7,Y7,G2=200,X2=12;var w8=C(()=>{jX();tV();fZ={sessionsDir(){return HZ.join(z2(),".codex","sessions")},async readdir(J){try{return await eA(J)}catch{return[]}},async readFile(J){return await aZ(J)},stat:J2};X7=/([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})\.jsonl$/i;Y7=new WeakMap});import{homedir as U2}from"os";import{join as D2}from"path";function L2(){return D2(U2(),".codex","hooks.json")}var B7,sP,P8;var W7=C(()=>{k8();B7=[{event:"SessionStart",verb:"session-start"},{event:"UserPromptSubmit",verb:"turn-start"},{event:"Stop",verb:"turn-complete"}],sP=B7.map((J)=>J.event);P8=class P8 extends UX{vendor="codex";eventMap=B7;globalSettingsPath(){return L2()}}});function V7(J){if(!VQ(J))return;let z=VQ(J.modelMetrics)?J.modelMetrics:void 0;if(!z)return;let Y=0,Z=0,G=0;for(let q of Object.values(z)){if(!VQ(q)||!VQ(q.usage))continue;Y+=KQ(q.usage.inputTokens,0),Z+=KQ(q.usage.outputTokens,0),G+=KQ(q.usage.cacheReadTokens,0)}let X=KQ(J.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 VQ(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}function KQ(J,z){return typeof J==="number"&&Number.isFinite(J)?J:z}import{readdir as F2,rm as M2,stat as O2}from"fs/promises";import{homedir as A2}from"os";import yY from"path";async function v8(J=jZ){let z=yY.join(J.copilotDir(),"session-state");return(await J.readdir(z)).map((Z)=>yY.join(z,Z))}async function K7(J,z=jZ){let Y=[];for(let Z of await v8(z)){let G=await m8(Z,z);if(G.cwd!==J)continue;Y.push({id:G.id??yY.basename(Z),updatedAt:G.updatedAt??""})}return Y.sort((Z,G)=>Z.updatedAt.localeCompare(G.updatedAt)).map((Z)=>Z.id)}async function U7(J,z=jZ){if(!J)return 0;let Y=0;for(let Z of await v8(z)){if((await m8(Z,z)).cwd!==J)continue;try{let{mtimeMs:X}=await z.stat(yY.join(Z,"events.jsonl"));if(X>Y)Y=X}catch{}}return Y}async function R2(J,z=jZ){let Y=await g2(J,z);if(!Y)return{messages:[]};let Z=await z.readFile(yY.join(Y,"events.jsonl")).catch(()=>""),G=C2(Z,J);return{messages:G.messages,...G.usageMetrics?{usageMetrics:G.usageMetrics}:{}}}async function D7(J,z=jZ){return(await R2(J,z)).messages}async function g2(J,z=jZ){for(let Y of await v8(z)){if(yY.basename(Y)===J)return Y;let Z=await m8(Y,z);if(Z.id===J||Z.name?.toLowerCase()===J.toLowerCase())return Y}return}async function m8(J,z=jZ){let Y=await z.readFile(yY.join(J,"workspace.yaml")).catch(()=>"");return N2(Y)}function N2(J){let z={};for(let Y of J.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,'"');z[G]=X}return{id:z.id,cwd:z.cwd,name:z.name,updatedAt:z.updated_at,createdAt:z.created_at}}function C2(J,z){let Y=[],Z=new Map,G=z,X,q=null;for(let H of J.split(`
33
- `)){let f=H.trim();if(!f)continue;if(!kY(f))continue;let j;try{j=JSON.parse(f)}catch{continue}if(!h8(j)||typeof j.type!=="string")continue;let V=typeof j.timestamp==="string"?j.timestamp:new Date().toISOString(),B=h8(j.data)?j.data:{};if(j.type==="session.start"){let K=typeof B.sessionId==="string"?B.sessionId:void 0;if(K)G=K;continue}if(j.type==="user.message"){let K=typeof B.content==="string"?B.content:"";if(!K)continue;if(!q)q=Buffer.from(K.slice(0,k2),"utf8").toString("utf8");Y.push({role:"user",blocks:[{type:"text",text:K}],timestamp:V,sessionId:G});continue}if(j.type==="assistant.message"){let K=[],L=typeof B.content==="string"?B.content:"";if(L)K.push({type:"text",text:L});let A=Array.isArray(B.toolRequests)?B.toolRequests:[];for(let O of A){if(!h8(O))continue;let R=typeof O.id==="string"?O.id:typeof O.toolCallId==="string"?O.toolCallId:"tool",x=typeof O.name==="string"?O.name:typeof O.toolName==="string"?O.toolName:"tool";K.push({type:"tool_call",callId:R,name:x,input:O.arguments??{}})}if(K.length>0)Y.push({role:"assistant",blocks:K,timestamp:V,sessionId:G});continue}if(j.type==="tool.execution_start"){let K=typeof B.toolCallId==="string"?B.toolCallId:void 0,L=typeof B.toolName==="string"?B.toolName:"tool";if(K)Z.set(K,L);continue}if(j.type==="tool.execution_complete"){let K=typeof B.toolCallId==="string"?B.toolCallId:void 0;if(!K)continue;let L=Z.get(K)??(typeof B.toolName==="string"?B.toolName:"tool"),A=B.result??(B.success===!1?{success:!1}:void 0);Y.push({role:"assistant",blocks:[{type:"tool_result",callId:K,output:A,isError:B.success===!1}],timestamp:V,sessionId:G});continue}if(j.type==="session.shutdown")X=V7(B)}return{messages:Y,usageMetrics:X,firstUserMessage:q}}function h8(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}var jZ,k2=200;var L7=C(()=>{jX();jZ={copilotDir(){let J=process.env.COPILOT_HOME?.trim();if(J)return J;return yY.join(A2(),".copilot")},async readdir(J){try{return await F2(J)}catch{return[]}},async readFile(J){return await aZ(J)},stat:O2,async rm(J){await M2(J,{recursive:!0,force:!0})}}});function c8(J){return n1(J).createHookAdapter()}class UQ{vendor;constructor(J){this.vendor=J}supportsHooks(){return!1}globalSettingsPath(){return""}activityDetailFromPayload(){return}async installActivityHooks(){}async removeActivityHooks(){}supportsWorktreeSync(){return!1}async removeWorktreeSyncHook(){}async installWorktreeWatchHook(){}async removeWorktreeWatchHook(){}}var d8=C(()=>{ZY()});import{readFile as F7}from"fs/promises";class DQ{supportsCompletionMarkers(){return!0}}function LX(J){return n1(J).createTurnDetector()}function y2(J,z="claude",Y=0){let Z=null,G=0;for(let X of J.split(`
34
- `)){G++;let q=M7(X);if(!q)continue;let H=A7(q.message)?q.message:q;if(H.role!=="assistant")continue;if(!("content"in H))continue;let f=O7(q,Y),j={id:`claude:${z}:${f}:${G}`,timestampMs:f,source:"claude"};if(!Z||j.timestampMs>=Z.timestampMs)Z=j}return Z}function T2(J,z="codex"){let Y=null,Z=0;for(let G of J.split(`
35
- `)){Z++;let X=M7(G);if(!X||X.type!=="turn.completed")continue;let q=O7(X,0),H={id:`codex:${z}:${q}:${Z}`,timestampMs:q,source:"codex"};if(!Y||H.timestampMs>=Y.timestampMs)Y=H}return Y}function M7(J){let z=J.trim();if(!z)return null;try{let Y=JSON.parse(z);return A7(Y)?Y:null}catch{return null}}function O7(J,z){let Y=typeof J.timestamp==="string"?Date.parse(J.timestamp):Number.NaN;return Number.isFinite(Y)?Y:z}function A7(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}var S2,n8,I2,i8,LQ;var FQ=C(()=>{D8();w8();ZY();S2={listSessionFiles:(J)=>BX(J),readFile:(J)=>F7(J,"utf8")};n8=class n8 extends DQ{deps;vendor="claude";cache=new Map;constructor(J=S2){super();this.deps=J}async latestCompletion(J){let z=await this.deps.listSessionFiles(J),Y=null,Z=new Map;for(let G of z.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 H=await this.deps.readFile(G.path).catch(()=>"");q=y2(H,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}};I2={findLatestRollout:(J)=>E8(J),readFile:(J)=>F7(J,"utf8")};i8=class i8 extends DQ{deps;vendor="codex";cache=null;constructor(J=I2){super();this.deps=J}async latestCompletion(J){if(!J)return null;let z=await this.deps.findLatestRollout(J);if(!z)return null;if(this.cache&&this.cache.path===z.path&&z.mtimeMs>0&&this.cache.mtimeMs===z.mtimeMs)return this.cache.marker;let Y=await this.deps.readFile(z.path).catch(()=>"");if(!Y)return null;let Z=T2(Y,z.path);return this.cache={path:z.path,mtimeMs:z.mtimeMs,marker:Z},Z}};LQ=class LQ extends DQ{vendor;constructor(J){super();this.vendor=J}supportsCompletionMarkers(){return!1}async latestCompletion(){return null}}});function h2(J){return{vendor:J,builtin:!1,displayName:J,defaultCommand:[J],history:x2,detectAccount:async()=>({binary:{found:!1,error:"custom engine: kobe has no account detector for it"},account:{kind:"none"}}),createHookAdapter:()=>new UQ(J),createTurnDetector:()=>new LQ(J)}}function n1(J){return fJ(J)?P2[J]:h2(J)}var x2,u2,E2,w2,P2;var ZY=C(()=>{a1();XZ();D8();oV();w8();W7();L7();d8();FQ();x2={async listSessionIdsForWorktree(){return[]},async readHistory(){return[]},async latestTranscriptMtimeForWorktree(){return 0}},u2={async listSessionIdsForWorktree(J){return[...await BX(J)].sort((Y,Z)=>Y.mtimeMs-Z.mtimeMs).map((Y)=>Y.sessionId)},readHistory:(J)=>xV(J),latestTranscriptMtimeForWorktree:(J)=>TV(J)},E2={listSessionIdsForWorktree:(J)=>Q7(J),readHistory:(J)=>f7(J),latestTranscriptMtimeForWorktree:(J)=>H7(J)},w2={listSessionIdsForWorktree:(J)=>K7(J),readHistory:(J)=>D7(J),latestTranscriptMtimeForWorktree:(J)=>U7(J)},P2={claude:{vendor:"claude",builtin:!0,displayName:"Claude",defaultCommand:["claude"],history:u2,detectAccount:(J)=>YQ(J),createHookAdapter:()=>new b8,createTurnDetector:()=>new n8},codex:{vendor:"codex",builtin:!0,displayName:"Codex",defaultCommand:["codex"],effortLevels:["none","low","medium","high","xhigh"],history:E2,detectAccount:(J)=>ZQ(J),createHookAdapter:()=>new P8,createTurnDetector:()=>new i8},copilot:{vendor:"copilot",builtin:!0,displayName:"Copilot",defaultCommand:["copilot"],history:w2,detectAccount:(J)=>GQ(J),createHookAdapter:()=>new UQ("copilot"),createTurnDetector:()=>new LQ("copilot")}}});async function tZ(J,z){if(!z)return 0;return n1(J).history.latestTranscriptMtimeForWorktree(z)}var MQ=C(()=>{ZY()});function R7(J){return typeof J==="string"&&v2.includes(J)}var FX=(J)=>J,p1="claude",v2;var tJ=C(()=>{v2=["backlog","in_progress","in_review","done","canceled","error"]});function OQ(J){return m2.includes(J)}function g7(J,z,Y){switch(z){case"session-start":case"session-end":return"idle";case"turn-start":return"running";case"turn-complete":return"turn_complete";case"turn-failed":return Y?.failure==="rate_limit"||Y?.failure==="billing"?"rate_limited":"error";case"awaiting-input":return Y?.waiting==="permission"?"permission_needed":"running"}}var m2;var AQ=C(()=>{m2=["session-start","turn-start","turn-complete","turn-failed","awaiting-input","session-end"]});function c2(){let J=process.env.KOBE_ENGINE_STATE_TTL_MS;if(J===void 0)return N7;let z=Number(J);return Number.isFinite(z)&&z>0?z:N7}class l8{bus;staleMs;now;livenessAt;activity=new Map;constructor(J,z=c2(),Y=()=>Date.now(),Z=()=>Promise.resolve(void 0)){this.bus=J;this.staleMs=z;this.now=Y;this.livenessAt=Z}report(J,z,Y){let Z=this.activity.get(J);if(Z?.lapse)clearTimeout(Z.lapse);let G=g7(Z?.state,z,Y),X=this.now(),q={state:G,detail:Y,at:X};if(G!=="idle"&&G!=="turn_complete")q.lapse=this.armLapse(J,X);this.activity.set(J,q),this.bus.publish("engine-state",this.payload(J,q))}armLapse(J,z){let Y=setTimeout(()=>{this.handleLapse(J,z)},this.staleMs);return Y.unref?.(),Y}async handleLapse(J,z){let Y=this.activity.get(J);if(!Y||Y.at!==z)return;let Z;try{Z=await this.livenessAt(J)}catch{Z=void 0}let G=this.activity.get(J);if(!G||G.at!==z)return;if(Z!==void 0&&Z>this.now()-this.staleMs){G.lapse=this.armLapse(J,z);return}this.publishIdle(J)}clearTask(J){let z=this.activity.get(J);if(z?.lapse)clearTimeout(z.lapse);if(this.activity.delete(J),z)this.bus.publish("engine-state",{taskId:J,state:"idle",at:this.now()})}snapshotByTask(){let J={};for(let[z,Y]of this.activity)J[z]=this.payload(z,Y);return J}currentNonIdle(){let J=[];for(let[z,Y]of this.activity)if(Y.state!=="idle")J.push(this.payload(z,Y));return J}close(){for(let J of this.activity.values())if(J.lapse)clearTimeout(J.lapse);this.activity.clear()}publishIdle(J){let z={state:"idle",at:this.now()};this.activity.set(J,z),this.bus.publish("engine-state",this.payload(J,z))}payload(J,z){return{taskId:J,state:z.state,...z.detail?{detail:z.detail}:{},at:z.at}}}var N7=600000;var C7=C(()=>{AQ()});function k7(J){if(typeof J!=="string")return"";let z=J.replace(/\s+/g," ").trim();if(z.length===0)return"";let Y=[...z];if(Y.length<=40)return z;return`${Y.slice(0,40).join("")}\u2026`}function RQ(J,z){let Y=J.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,32),Z=z.slice(-6).toLowerCase();return`kobe/${Y||"task"}-${Z}`}function b7(J){let z=J.find((G)=>G.role==="user");if(!z)return"";let Y=z.blocks.filter((G)=>G.type==="text").map((G)=>G.text).join(" "),Z=k7(Y);return Z.length>0?Buffer.from(Z,"utf8").toString("utf8"):Z}async function eZ(J,z=p1){if(!J)return"";let{history:Y}=n1(z),Z=await Y.listSessionIdsForWorktree(J);for(let G of Z.slice(0,d2)){let X=b7(await Y.readHistory(G));if(X)return X}return""}async function S7(J,z){if(!z)return"";try{return b7(await n1(J).history.readHistory(z))}catch{return""}}var d2=8;var gQ=C(()=>{ZY();tJ()});function I7(J){let z=String(J),Y=z.length-1;return I1.context.id+(Y?String.fromCharCode(96+Y):"")+z}function _8(J){I1.context=J}function n2(){return{...I1.context,id:I1.getNextContextId(),count:0}}function BZ(J,z){let Y=L1,Z=l0,G=J.length===0,X=z===void 0?Z:z,q=G?{owned:null,cleanups:null,context:null,owner:null}:{owned:null,cleanups:null,context:X?X.context:null,owner:X},H=G?()=>J(()=>{throw Error("Dispose method must be an explicit argument to createRoot function")}):()=>J(()=>o1(()=>TY(q)));Lz.afterCreateOwner&&Lz.afterCreateOwner(q),l0=q,L1=null;try{return IJ(H,!0)}finally{L1=Y,l0=Z}}function p(J,z){z=z?Object.assign({},bQ,z):bQ;let Y={value:J,observers:null,observerSlots:null,comparator:z.equals||void 0};{if(z.name)Y.name=z.name;if(z.internal)Y.internal=!0;else if(h7(Y),Lz.afterCreateSignal)Lz.afterCreateSignal(Y)}let Z=(G)=>{if(typeof G==="function")if(B0&&B0.running&&B0.sources.has(Y))G=G(Y.tValue);else G=G(Y.value);return r8(Y,G)};return[v7.bind(Y),Z]}function y7(J,z,Y){let Z=YG(J,z,!0,wJ,Y);if(zG&&B0&&B0.running)r1.push(Z);else VZ(Z)}function uz(J,z,Y){let Z=YG(J,z,!1,wJ,Y);if(zG&&B0&&B0.running)r1.push(Z);else VZ(Z)}function _0(J,z,Y){P7=zR;let Z=YG(J,z,!1,wJ,Y),G=AX&&PJ(AX);if(G)Z.suspense=G;if(!Y||!Y.render)Z.user=!0;DJ?DJ.push(Z):VZ(Z)}function U0(J,z,Y){Y=Y?Object.assign({},bQ,Y):bQ;let Z=YG(J,z,!0,0,Y);if(Z.observers=null,Z.observerSlots=null,Z.comparator=Y.equals||void 0,zG&&B0&&B0.running)Z.tState=wJ,r1.push(Z);else VZ(Z);return v7.bind(Z)}function p2(J){return J&&typeof J==="object"&&"then"in J}function WZ(J,z,Y){let Z,G,X;if(typeof z==="function")Z=J,G=z,X=Y||{};else Z=!0,G=J,X=z||{};let q=null,H=$8,f=null,j=!1,V=!1,B="initialValue"in X,K=typeof Z==="function"&&U0(Z),L=new Set,[A,O]=(X.storage||p)(X.initialValue),[R,x]=p(void 0),[w,S]=p(void 0,{equals:!1}),[g,M]=p(B?"ready":"unresolved");if(I1.context){if(f=I1.getNextContextId(),X.ssrLoadFrom==="initial")H=X.initialValue;else if(I1.load&&I1.has(f))H=I1.load(f)}function T(z0,Q0,o,K0){if(q===z0){if(q=null,K0!==void 0&&(B=!0),(z0===H||Q0===H)&&X.onHydrated)queueMicrotask(()=>X.onHydrated(K0,{value:Q0}));if(H=$8,B0&&z0&&j)B0.promises.delete(z0),j=!1,IJ(()=>{B0.running=!0,$(Q0,o)},!1);else $(Q0,o)}return Q0}function $(z0,Q0){IJ(()=>{if(Q0===void 0)O(()=>z0);M(Q0!==void 0?"errored":B?"ready":"unresolved"),x(Q0);for(let o of L.keys())o.decrement();L.clear()},!1)}function d(){let z0=AX&&PJ(AX),Q0=A(),o=R();if(o!==void 0&&!q)throw o;if(L1&&!L1.user&&z0)y7(()=>{if(w(),q){if(z0.resolved&&B0&&j)B0.promises.add(q);else if(!L.has(z0))z0.increment(),L.add(z0)}});return Q0}function e(z0=!0){if(z0!==!1&&V)return;V=!1;let Q0=K?K():Z;if(j=B0&&B0.running,Q0==null||Q0===!1){T(q,o1(A));return}if(B0&&q)B0.promises.delete(q);let o,K0=H!==$8?H:o1(()=>{try{return G(Q0,{value:A(),refetching:z0})}catch(N0){o=N0}});if(o!==void 0){T(q,void 0,kQ(o),Q0);return}else if(!p2(K0))return T(q,K0,void 0,Q0),K0;if(q=K0,"v"in K0){if(K0.s===1)T(q,K0.v,void 0,Q0);else T(q,void 0,kQ(K0.v),Q0);return K0}return V=!0,queueMicrotask(()=>V=!1),IJ(()=>{M(B?"refreshing":"pending"),S()},!1),K0.then((N0)=>T(K0,N0,void 0,Q0),(N0)=>T(K0,void 0,kQ(N0),Q0))}Object.defineProperties(d,{state:{get:()=>g()},error:{get:()=>R()},loading:{get(){let z0=g();return z0==="pending"||z0==="refreshing"}},latest:{get(){if(!B)return d();let z0=R();if(z0&&!q)throw z0;return A()}}});let u=l0;if(K)y7(()=>(u=l0,e(!1)));else e(!1);return[d,{refetch:(z0)=>o2(u,()=>e(z0)),mutate:O}]}function TQ(J){return IJ(J,!1)}function o1(J){if(!JG&&L1===null)return J();let z=L1;L1=null;try{if(JG)return JG.untrack(J);return J()}finally{L1=z}}function BJ(J,z,Y){let Z=Array.isArray(J),G,X=Y&&Y.defer;return(q)=>{let H;if(Z){H=Array(J.length);for(let j=0;j<J.length;j++)H[j]=J[j]()}else H=J();if(X)return X=!1,q;let f=o1(()=>z(H,G,q));return G=H,f}}function GJ(J){_0(()=>o1(J))}function S1(J){if(l0===null)console.warn("cleanups created outside a `createRoot` or `render` will never be run");else if(l0.cleanups===null)l0.cleanups=[J];else l0.cleanups.push(J);return J}function r2(J,z){if(MX||(MX=Symbol("error")),l0=YG(void 0,void 0,!0),l0.context={...l0.context,[MX]:[z]},B0&&B0.running)B0.sources.add(l0);try{return J()}catch(Y){gX(Y)}finally{l0=l0.owner}}function xQ(){return L1}function o2(J,z){let Y=l0,Z=L1;l0=J,L1=null;try{return IJ(z,!0)}catch(G){gX(G)}finally{l0=Y,L1=Z}}function s2(J){if(B0&&B0.running)return J(),B0.done;let z=L1,Y=l0;return Promise.resolve().then(()=>{L1=z,l0=Y;let Z;if(zG||AX)Z=B0||(B0={sources:new Set,effects:[],promises:new Set,disposed:new Set,queue:new Set,running:!0}),Z.done||(Z.done=new Promise((G)=>Z.resolve=G)),Z.running=!0;return IJ(J,!1),L1=l0=null,Z?Z.done:void 0})}function x7(J,z){let Y=YG(()=>o1(()=>{return Object.assign(J,{[a2]:!0}),J(z)}),void 0,!0,0);return Y.props=z,Y.observers=null,Y.observerSlots=null,Y.name=J.name,Y.component=J,VZ(Y),Y.tValue!==void 0?Y.tValue:Y.value}function h7(J){if(l0){if(l0.sourceMap)l0.sourceMap.push(J);else l0.sourceMap=[J];J.graph=l0}if(Lz.afterRegisterGraph)Lz.afterRegisterGraph(J)}function Ez(J,z){let Y=Symbol("context");return{id:Y,Provider:YR(Y,z),defaultValue:J}}function PJ(J){let z;return l0&&l0.context&&(z=l0.context[J.id])!==void 0?z:J.defaultValue}function t2(J){let z=U0(J),Y=U0(()=>p8(z()),void 0,{name:"children"});return Y.toArray=()=>{let Z=Y();return Array.isArray(Z)?Z:Z!=null?[Z]:[]},Y}function v7(){let J=B0&&B0.running;if(this.sources&&(J?this.tState:this.state))if((J?this.tState:this.state)===wJ)VZ(this);else{let z=r1;r1=null,IJ(()=>SQ(this),!1),r1=z}if(L1){let z=this.observers;if(!z||z[z.length-1]!==L1){let Y=z?z.length:0;if(!L1.sources)L1.sources=[this],L1.sourceSlots=[Y];else L1.sources.push(this),L1.sourceSlots.push(Y);if(!z)this.observers=[L1],this.observerSlots=[L1.sources.length-1];else z.push(L1),this.observerSlots.push(L1.sources.length-1)}}if(J&&B0.sources.has(this))return this.tValue;return this.value}function r8(J,z,Y){let Z=B0&&B0.running&&B0.sources.has(J)?J.tValue:J.value;if(!J.comparator||!J.comparator(Z,z)){if(B0){let G=B0.running;if(G||!Y&&B0.sources.has(J))B0.sources.add(J),J.tValue=z;if(!G)J.value=z}else J.value=z;if(J.observers&&J.observers.length)IJ(()=>{for(let G=0;G<J.observers.length;G+=1){let X=J.observers[G],q=B0&&B0.running;if(q&&B0.disposed.has(X))continue;if(q?!X.tState:!X.state){if(X.pure)r1.push(X);else DJ.push(X);if(X.observers)c7(X)}if(!q)X.state=wJ;else X.tState=wJ}if(r1.length>1e6){if(r1=[],i2)throw Error("Potential Infinite Loop Detected.");throw Error()}},!1)}return z}function VZ(J){if(!J.fn)return;TY(J);let z=yQ;if(u7(J,B0&&B0.running&&B0.sources.has(J)?J.tValue:J.value,z),B0&&!B0.running&&B0.sources.has(J))queueMicrotask(()=>{IJ(()=>{B0&&(B0.running=!0),L1=l0=J,u7(J,J.tValue,z),L1=l0=null},!1)})}function u7(J,z,Y){let Z,G=l0,X=L1;L1=l0=J;try{Z=J.fn(z)}catch(q){if(J.pure)if(B0&&B0.running)J.tState=wJ,J.tOwned&&J.tOwned.forEach(TY),J.tOwned=void 0;else J.state=wJ,J.owned&&J.owned.forEach(TY),J.owned=null;return J.updatedAt=Y+1,gX(q)}finally{L1=X,l0=G}if(!J.updatedAt||J.updatedAt<=Y){if(J.updatedAt!=null&&"observers"in J)r8(J,Z,!0);else if(B0&&B0.running&&J.pure){if(!B0.sources.has(J))J.value=Z;B0.sources.add(J),J.tValue=Z}else J.value=Z;J.updatedAt=Y}}function YG(J,z,Y,Z=wJ,G){let X={fn:J,state:Z,updatedAt:null,owned:null,sources:null,sourceSlots:null,cleanups:null,value:z,owner:l0,context:l0?l0.context:null,pure:Y};if(B0&&B0.running)X.state=0,X.tState=Z;if(l0===null)console.warn("computations created outside a `createRoot` or `render` will never be disposed");else if(l0!==_2)if(B0&&B0.running&&l0.pure)if(!l0.tOwned)l0.tOwned=[X];else l0.tOwned.push(X);else if(!l0.owned)l0.owned=[X];else l0.owned.push(X);if(G&&G.name)X.name=G.name;if(JG&&X.fn){let q=X.fn,[H,f]=p(void 0,{equals:!1}),j=JG.factory(q,f);S1(()=>j.dispose());let V,B=()=>s2(f).then(()=>{if(V)V.dispose(),V=void 0});X.fn=(K)=>{if(H(),B0&&B0.running){if(!V)V=JG.factory(q,B);return V.track(K)}return j.track(K)}}return Lz.afterCreateOwner&&Lz.afterCreateOwner(X),X}function RX(J){let z=B0&&B0.running;if((z?J.tState:J.state)===0)return;if((z?J.tState:J.state)===OX)return SQ(J);if(J.suspense&&o1(J.suspense.inFallback))return J.suspense.effects.push(J);let Y=[J];while((J=J.owner)&&(!J.updatedAt||J.updatedAt<yQ)){if(z&&B0.disposed.has(J))return;if(z?J.tState:J.state)Y.push(J)}for(let Z=Y.length-1;Z>=0;Z--){if(J=Y[Z],z){let G=J,X=Y[Z+1];while((G=G.owner)&&G!==X)if(B0.disposed.has(G))return}if((z?J.tState:J.state)===wJ)VZ(J);else if((z?J.tState:J.state)===OX){let G=r1;r1=null,IJ(()=>SQ(J,Y[0]),!1),r1=G}}}function IJ(J,z){if(r1)return J();let Y=!1;if(!z)r1=[];if(DJ)Y=!0;else DJ=[];yQ++;try{let Z=J();return e2(Y),Z}catch(Z){if(!Y)DJ=null;r1=null,gX(Z)}}function e2(J){if(r1){if(zG&&B0&&B0.running)JR(r1);else m7(r1);r1=null}if(J)return;let z;if(B0){if(!B0.promises.size&&!B0.queue.size){let{sources:Z,disposed:G}=B0;DJ.push.apply(DJ,B0.effects),z=B0.resolve;for(let X of DJ)"tState"in X&&(X.state=X.tState),delete X.tState;B0=null,IJ(()=>{for(let X of G)TY(X);for(let X of Z){if(X.value=X.tValue,X.owned)for(let q=0,H=X.owned.length;q<H;q++)TY(X.owned[q]);if(X.tOwned)X.owned=X.tOwned;delete X.tValue,delete X.tOwned,X.tState=0}T7(!1)},!1)}else if(B0.running){B0.running=!1,B0.effects.push.apply(B0.effects,DJ),DJ=null,T7(!0);return}}let Y=DJ;if(DJ=null,Y.length)IJ(()=>P7(Y),!1);else Lz.afterUpdate&&Lz.afterUpdate();if(z)z()}function m7(J){for(let z=0;z<J.length;z++)RX(J[z])}function JR(J){for(let z=0;z<J.length;z++){let Y=J[z],Z=B0.queue;if(!Z.has(Y))Z.add(Y),zG(()=>{Z.delete(Y),IJ(()=>{B0.running=!0,RX(Y)},!1),B0&&(B0.running=!1)})}}function zR(J){let z,Y=0;for(z=0;z<J.length;z++){let Z=J[z];if(!Z.user)RX(Z);else J[Y++]=Z}if(I1.context){if(I1.count){I1.effects||(I1.effects=[]),I1.effects.push(...J.slice(0,Y));return}_8()}if(I1.effects&&(I1.done||!I1.count))J=[...I1.effects,...J],Y+=I1.effects.length,delete I1.effects;for(z=0;z<Y;z++)RX(J[z])}function SQ(J,z){let Y=B0&&B0.running;if(Y)J.tState=0;else J.state=0;for(let Z=0;Z<J.sources.length;Z+=1){let G=J.sources[Z];if(G.sources){let X=Y?G.tState:G.state;if(X===wJ){if(G!==z&&(!G.updatedAt||G.updatedAt<yQ))RX(G)}else if(X===OX)SQ(G,z)}}}function c7(J){let z=B0&&B0.running;for(let Y=0;Y<J.observers.length;Y+=1){let Z=J.observers[Y];if(z?!Z.tState:!Z.state){if(z)Z.tState=OX;else Z.state=OX;if(Z.pure)r1.push(Z);else DJ.push(Z);Z.observers&&c7(Z)}}}function TY(J){let z;if(J.sources)while(J.sources.length){let Y=J.sources.pop(),Z=J.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(J.tOwned){for(z=J.tOwned.length-1;z>=0;z--)TY(J.tOwned[z]);delete J.tOwned}if(B0&&B0.running&&J.pure)d7(J,!0);else if(J.owned){for(z=J.owned.length-1;z>=0;z--)TY(J.owned[z]);J.owned=null}if(J.cleanups){for(z=J.cleanups.length-1;z>=0;z--)J.cleanups[z]();J.cleanups=null}if(B0&&B0.running)J.tState=0;else J.state=0;delete J.sourceMap}function d7(J,z){if(!z)J.tState=0,B0.disposed.add(J);if(J.owned)for(let Y=0;Y<J.owned.length;Y++)d7(J.owned[Y])}function kQ(J){if(J instanceof Error)return J;return Error(typeof J==="string"?J:"Unknown error",{cause:J})}function E7(J,z,Y){try{for(let Z of z)Z(J)}catch(Z){gX(Z,Y&&Y.owner||null)}}function gX(J,z=l0){let Y=MX&&z&&z.context&&z.context[MX],Z=kQ(J);if(!Y)throw Z;if(DJ)DJ.push({fn(){E7(Z,Y,z)},state:wJ});else E7(Z,Y,z)}function p8(J){if(typeof J==="function"&&!J.length)return p8(J());if(Array.isArray(J)){let z=[];for(let Y=0;Y<J.length;Y++){let Z=p8(J[Y]);if(Array.isArray(Z))if(Z.length<32768)z.push.apply(z,Z);else for(let G=0;G<Z.length;G++)z.push(Z[G]);else z.push(Z)}return z}return J}function YR(J,z){return function(Z){let G;return uz(()=>G=o1(()=>{return l0.context={...l0.context,[J]:Z.value},t2(()=>Z.children)}),void 0,z),G}}function w7(J){for(let z=0;z<J.length;z++)J[z]()}function GR(J,z,Y={}){let Z=[],G=[],X=[],q=0,H=z.length>1?[]:null;return S1(()=>w7(X)),()=>{let f=J()||[],j=f.length,V,B;return f[IQ],o1(()=>{let L,A,O,R,x,w,S,g,M;if(j===0){if(q!==0)w7(X),X=[],Z=[],G=[],q=0,H&&(H=[]);if(Y.fallback)Z=[ZR],G[0]=BZ((T)=>{return X[0]=T,Y.fallback()}),q=1}else if(q===0){G=Array(j);for(B=0;B<j;B++)Z[B]=f[B],G[B]=BZ(K);q=j}else{O=Array(j),R=Array(j),H&&(x=Array(j));for(w=0,S=Math.min(q,j);w<S&&Z[w]===f[w];w++);for(S=q-1,g=j-1;S>=w&&g>=w&&Z[S]===f[g];S--,g--)O[g]=G[S],R[g]=X[S],H&&(x[g]=H[S]);L=new Map,A=Array(g+1);for(B=g;B>=w;B--)M=f[B],V=L.get(M),A[B]=V===void 0?-1:V,L.set(M,B);for(V=w;V<=S;V++)if(M=Z[V],B=L.get(M),B!==void 0&&B!==-1)O[B]=G[V],R[B]=X[V],H&&(x[B]=H[V]),B=A[B],L.set(M,B);else X[V]();for(B=w;B<j;B++)if(B in O){if(G[B]=O[B],X[B]=R[B],H)H[B]=x[B],H[B](B)}else G[B]=BZ(K);G=G.slice(0,q=j),Z=f.slice(0)}return G});function K(L){if(X[B]=L,H){let[A,O]=p(B,{name:"index"});return H[B]=O,z(f[B],A)}return z(f[B])}}}function n7(J,z){if(XR){if(I1.context){let Y=I1.context;_8(n2());let Z=x7(J,z||{});return _8(Y),Z}}return x7(J,z||{})}function NQ(){return!0}function a8(J){return!(J=typeof J==="function"?J():J)?{}:J}function QR(){for(let J=0,z=this.length;J<z;++J){let Y=this[J]();if(Y!==void 0)return Y}}function uQ(...J){let z=!1;for(let q=0;q<J.length;q++){let H=J[q];z=z||!!H&&Dz in H,J[q]=typeof H==="function"?(z=!0,U0(H)):H}if($2&&z)return new Proxy({get(q){for(let H=J.length-1;H>=0;H--){let f=a8(J[H])[q];if(f!==void 0)return f}},has(q){for(let H=J.length-1;H>=0;H--)if(q in a8(J[H]))return!0;return!1},keys(){let q=[];for(let H=0;H<J.length;H++)q.push(...Object.keys(a8(J[H])));return[...new Set(q)]}},qR);let Y={},Z=Object.create(null);for(let q=J.length-1;q>=0;q--){let H=J[q];if(!H)continue;let f=Object.getOwnPropertyNames(H);for(let j=f.length-1;j>=0;j--){let V=f[j];if(V==="__proto__"||V==="constructor")continue;let B=Object.getOwnPropertyDescriptor(H,V);if(!Z[V])Z[V]=B.get?{enumerable:!0,configurable:!0,get:QR.bind(Y[V]=[B.get.bind(H)])}:B.value!==void 0?B:void 0;else{let K=Y[V];if(K){if(B.get)K.push(B.get.bind(H));else if(B.value!==void 0)K.push(()=>B.value)}}}}let G={},X=Object.keys(Z);for(let q=X.length-1;q>=0;q--){let H=X[q],f=Z[H];if(f&&f.get)Object.defineProperty(G,H,f);else G[H]=f?f.value:void 0}return G}function z1(J){let z="fallback"in J&&{fallback:()=>J.fallback};return U0(GR(()=>J.each,J.children,z||void 0),void 0,{name:"value"})}function Y0(J){let z=J.keyed,Y=U0(()=>J.when,void 0,{name:"condition value"}),Z=z?Y:U0(Y,void 0,{equals:(G,X)=>!G===!X,name:"condition"});return U0(()=>{let G=Z();if(G){let X=J.children;return typeof X==="function"&&X.length>0?o1(()=>X(z?G:()=>{if(!o1(Z))throw HR("Show");return Y()})):X}return J.fallback},void 0,{name:"value"})}function i7(J){let z;if(I1.context&&I1.load)z=I1.load(I1.getContextId());let[Y,Z]=p(z,{name:"errored"});return CQ||(CQ=new Set),CQ.add(Z),S1(()=>CQ.delete(Z)),U0(()=>{let G;if(G=Y()){let X=J.fallback;if(typeof X!=="function"||X.length==0)console.error(G);return typeof X==="function"&&X.length?o1(()=>X(G,()=>Z())):X}return r2(()=>J.children,Z)},void 0,{name:"value"})}var I1,i2=!0,l2=(J,z)=>J===z,Dz,$2,IQ,a2,bQ,MX=null,P7,wJ=1,OX=2,_2,$8,l0=null,B0=null,zG=null,JG=null,L1=null,r1=null,DJ=null,yQ=0,Lz,Sh,T7,AX,ZR,XR=!1,qR,HR=(J)=>`Attempting to access a stale value from <${J}> that could possibly be undefined. This may occur because you are reading the accessor returned from the component at a time where it has already been unmounted. We recommend cleaning up any stale timers or async, or reading from the initial condition.`,CQ,l7;var W1=C(()=>{I1={context:void 0,registry:void 0,effects:void 0,done:!1,getContextId(){return I7(this.context.count)},getNextContextId(){return I7(this.context.count++)}};Dz=Symbol("solid-proxy"),$2=typeof Proxy==="function",IQ=Symbol("solid-track"),a2=Symbol("solid-dev-component"),bQ={equals:l2},P7=m7,_2={},$8={},Lz={afterUpdate:null,afterCreateOwner:null,afterCreateSignal:null,afterRegisterGraph:null};[Sh,T7]=p(!1);ZR=Symbol("fallback");qR={get(J,z,Y){if(z===Dz)return Y;return J.get(z)},has(J,z){if(z===Dz)return!0;return J.has(z)},set:NQ,deleteProperty:NQ,getOwnPropertyDescriptor(J,z){return{configurable:!0,enumerable:!0,get(){return J.get(z)},set:NQ,deleteProperty:NQ}},ownKeys(J){return J.keys()}};l7={hooks:Lz,writeSignal:r8,registerGraph:h7};if(globalThis)if(!globalThis.Solid$$)globalThis.Solid$$=!0;else console.warn("You appear to have multiple instances of Solid. This can lead to unexpected behavior.")});import{spawn as fR}from"child_process";function o8(J,z,Y,Z){if(Y)return J+Z.slowRetryMs;return z+Math.max(Z.minIntervalMs,(z-J)*5)}function s8(J,z){return!J.inFlight&&z>=J.nextAllowedAt}function $7(J,z,Y=Math.random){let Z=Math.max(0,Math.min(1,z)),G=(Y()*2-1)*J*Z;return Math.max(0,J+G)}function a7(J,z,Y){if(z<=0)return Math.min(J,Y);return Math.min(J*2**z,Y)}function ZG(J,z,Y,Z){let G=Date.now();if(!s8(J,G))return!1;J.inFlight=!0;let X=new AbortController,q=setTimeout(()=>X.abort(),z.timeoutMs);return(async()=>{let H,f=!1;try{H=await Y(X.signal),f=!0}catch{}clearTimeout(q);let j=X.signal.aborted;if(J.nextAllowedAt=o8(G,Date.now(),j,z),J.inFlight=!1,f&&!j)Z(H)})(),!0}function GY(J,z,Y){return new Promise((Z)=>{let G="",X=!1,q=(f)=>{if(X)return;X=!0,Z({status:f,stdout:G})},H=fR(J,z.slice(),{cwd:Y.cwd,stdio:["ignore","pipe","ignore"],env:Y.env,signal:Y.signal,killSignal:"SIGKILL"});H.stdout?.on("data",(f)=>{G+=String(f)}),H.on("error",()=>q(null)),H.on("close",(f)=>q(f))})}var GG=()=>{};function jR(J,z){switch((J??"").toUpperCase()){case"MERGED":return"merged";case"CLOSED":return"closed";case"OPEN":return(z??"").toUpperCase()==="APPROVED"?"ready_to_merge":"open";default:return"unknown"}}function BR(J){let z=(J.status??"").toUpperCase(),Y=(J.conclusion??"").toUpperCase(),Z=(J.state??"").toUpperCase();if(z&&z!=="COMPLETED")return"pending";if(Y){if(Y==="SUCCESS"||Y==="NEUTRAL"||Y==="SKIPPED")return"passing";return"failing"}if(Z==="SUCCESS")return"passing";if(Z==="PENDING"||Z==="EXPECTED")return"pending";if(Z==="FAILURE"||Z==="ERROR")return"failing";return"unknown"}function WR(J){if(!J||J.length===0)return"none";let z=!1,Y=!1;for(let Z of J){let G=BR(Z);if(G==="failing")return"failing";if(G==="pending")z=!0;else if(G==="passing")Y=!0}if(z)return"pending";if(Y)return"passing";return"unknown"}function p7(J,z){if(!J||typeof J.number!=="number")return null;return{provider:"github",lifecycle:jR(J.state,J.reviewDecision),checkState:WR(J.statusCheckRollup),number:J.number,url:J.url,title:J.title,baseRef:J.baseRefName,headRef:J.headRefName,reviewDecision:J.reviewDecision||void 0,mergeable:J.mergeable||void 0,lastCheckedAt:z}}function wQ(J,z){if(J===z)return!0;if(!J||!z)return!1;return J.provider===z.provider&&J.lifecycle===z.lifecycle&&J.checkState===z.checkState&&J.number===z.number&&J.url===z.url&&J.title===z.title&&J.baseRef===z.baseRef&&J.headRef===z.headRef&&J.reviewDecision===z.reviewDecision&&J.mergeable===z.mergeable}function EQ(J,z){return z.some((Y)=>J.includes(Y))}function t8(J){if(J.parseError)return{kind:"error",error:"parse"};if(J.timedOut)return{kind:"error",error:"timeout"};if(J.spawnError)return{kind:"error",error:"missing-binary"};let z=(J.stderr??"").toLowerCase();if(EQ(z,DR))return{kind:"empty"};if(EQ(z,VR))return{kind:"error",error:"no-remote"};if(EQ(z,KR))return{kind:"error",error:"auth"};if(EQ(z,UR))return{kind:"error",error:"network"};return{kind:"empty"}}function NX(J,z,Y,Z,G=Math.random){let X=(H)=>Y+$7(H,Z.jitterRatio,G);if(J.kind==="pr")return{nextAllowedAt:X(J.settled?Z.settledMs:Z.tickMs),failures:0};if(J.kind==="empty")return{nextAllowedAt:X(Z.noPrMs),failures:0};if(J.error==="no-remote")return{nextAllowedAt:X(Z.noRemoteMs),failures:0};let q=z+1;return{nextAllowedAt:X(a7(Z.failureBaseMs,q-1,Z.failureCapMs)),failures:q}}var _7="number,url,title,state,baseRefName,headRefName,reviewDecision,mergeable,statusCheckRollup",VR,KR,UR,DR;var e8=C(()=>{GG();VR=["none of the git remotes","no git remote","to use github cli in a github repository","not a github repository"],KR=["gh auth login","authentication required","not logged in","http 401","bad credentials","requires authentication"],UR=["could not resolve host","no such host","dial tcp","connection refused","connection reset","network is unreachable","i/o timeout","timeout","tls handshake","http 5","rate limit","try again"],DR=["no pull requests found","no open pull requests","no pull request found"]});var Jj,zj,Yj,Zj="DIRTY_WORKTREE",Gj,Xj;var qj=C(()=>{Jj=class Jj extends Error{from;to;taskId;constructor(J,z,Y){super(`illegal transition for task ${Y}: ${J} -> ${z}`);this.from=J;this.to=z;this.taskId=Y;this.name="IllegalTransitionError"}};zj=class zj extends Error{constructor(J){super(`task not found: ${J}`);this.name="TaskNotFoundError"}};Yj=class Yj extends Error{constructor(){super("cannot delete a main task; remove the repo from saved repos instead");this.name="CannotDeleteMainTaskError"}};Gj=class Gj extends Error{taskId;constructor(J){super(`${Zj}: task ${J} worktree has uncommitted or untracked changes`);this.taskId=J;this.name="DirtyWorktreeError"}};Xj=class Xj extends Error{taskId;cause;constructor(J,z){super(`failed to remove worktree for task ${J}: ${z instanceof Error?z.message:String(z)}`);this.taskId=J;this.cause=z;this.name="WorktreeRemoveFailedError"}}});var r7;var o7=C(()=>{r7=["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 s7(J){let z=J.auth,Y=z.kind==="key"?{kind:"key",keyPath:z.keyPath}:{kind:"password",getPassword:()=>lq(z.keychainRef)};return{host:J.host,user:J.user,port:J.port,auth:Y,controlPath:mq(J.host,J.user,J.port)}}function XG(J){let z=sz(J);if(!z)return new iq;return new iZ(s7(z))}function XY(J){for(let z of Object.values(q8()))if(J===z.basePath||J.startsWith(`${z.basePath}/`))return new iZ(s7(z));return new iq}function t7(J){return J&&_1(J)?J:void 0}function xY(J){let z=XY(J);return z.isRemote||z.existsSync(J)}function h1(J){return XY(J).isRemote?Tz():J}var Fz=C(()=>{t1();A1();sf();J8()});import{createHash as LR}from"crypto";import JK from"fs";import hJ from"path";function zK(J){if(!hJ.isAbsolute(J))throw Error(`worktreeRootFor: repo must be an absolute path, got: ${J}`);return hJ.join(jJ(),FR,gR(J))}function YK(J){if(!hJ.isAbsolute(J))throw Error(`managedWorktreeRootsFor: repo must be an absolute path, got: ${J}`);return[zK(J),...AR.map((z)=>hJ.join(J,z))]}function ZK(J,z){if(!z||/[/\\\0]/.test(z))throw Error(`worktreePathFor: invalid slug: ${JSON.stringify(z)}`);return hJ.join(zK(J),z)}async function GK(J){if(_1(J)){let Y=sz(J)?.basePath;if(!Y)return[];return XG(J).readdir(qK(Y))}let z=new Set;for(let Y of YK(J))try{for(let Z of JK.readdirSync(Y,{withFileTypes:!0}))if(Z.isDirectory())z.add(Z.name)}catch{}return[...z]}function Qj(J,z){if(!hJ.isAbsolute(J)||!hJ.isAbsolute(z))return null;let Y=e7(z);for(let Z of YK(J)){let G=e7(Z),X=hJ.relative(G,Y);if(X!==""&&!X.startsWith("..")&&!hJ.isAbsolute(X))return Z}return null}function XK(J,z){return Qj(J,z)!==null}function qK(J){return`${RR(J)}/.kobe/worktrees`}function QK(J,z){if(!z||/[/\\\0]/.test(z))throw Error(`remoteWorktreePathFor: invalid slug: ${JSON.stringify(z)}`);return`${qK(J)}/${z}`}function RR(J){return J.length>1&&J.endsWith("/")?J.replace(/\/+$/,""):J}function e7(J){try{return JK.realpathSync(J)}catch{return hJ.resolve(J)}}function gR(J){let Y=(hJ.basename(J)||"repo").replace(/[^a-zA-Z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"repo",Z=LR("sha1").update(hJ.resolve(J)).digest("hex").slice(0,12);return`${Y}-${Z}`}var FR="worktrees",MR=".kobe/worktrees",OR=".claude/worktrees",AR;var Hj=C(()=>{t1();Fz();A1();AR=[MR,OR]});class fj{activeSlugs;random;pool;pendingByRepo=new Map;chain=Promise.resolve();constructor(J,z={}){this.activeSlugs=J;if(this.random=z.random??Math.random,this.pool=z.pool??r7,this.pool.length===0)throw Error("SlugAllocator: animal pool cannot be empty")}async allocate(J){let z=this.chain,Y;this.chain=new Promise((Z)=>{Y=Z}),await z;try{return await this.pickLocked(J)}finally{Y()}}commit(J,z){this.deletePending(J,z)}cancel(J,z){this.deletePending(J,z)}async pickLocked(J){let z=await this.occupiedSlugs(J),Y=this.pool.filter((G)=>!z.has(G));if(Y.length>0){let G=Y[Math.floor(this.random()*Y.length)];return this.addPending(J,G),G}let Z=this.pool[Math.floor(this.random()*this.pool.length)];for(let G=2;;G++){let X=`${Z}-v${G}`;if(!z.has(X))return this.addPending(J,X),X}}async occupiedSlugs(J){let z=new Set(this.pendingByRepo.get(J)??[]);for(let Y of this.activeSlugs(J))if(Y)z.add(Y);for(let Y of await GK(J))z.add(Y);return z}addPending(J,z){let Y=this.pendingByRepo.get(J);if(!Y)Y=new Set,this.pendingByRepo.set(J,Y);Y.add(z)}deletePending(J,z){let Y=this.pendingByRepo.get(J);if(!Y)return;if(Y.delete(z),Y.size===0)this.pendingByRepo.delete(J)}}var HK=C(()=>{o7();Hj()});var jK={};q1(jK,{PLACEHOLDER_TASK_TITLE:()=>wz,Orchestrator:()=>PQ});import{realpathSync as NR}from"fs";import{basename as CR,resolve as kR}from"path";function fK(J){return sz(J)?.basePath??J}class PQ{store;worktrees;slugs;tasksAcc;setTasks;activeTaskAcc;setActiveTaskSig;unsubscribeStore;worktreeLocks=new Map;mainTaskLocks=new Map;constructor(J){this.store=J.store,this.worktrees=J.worktrees,this.slugs=new fj((X)=>this.store.list().filter((q)=>q.repo===X&&q.kind!=="main").map((q)=>{return q.worktreePath.match(/([^/\\]+)[/\\]*$/)?.[1]??""}).filter((q)=>q.length>0));let[z,Y]=p(this.store.list());this.tasksAcc=z,this.setTasks=(X)=>Y(()=>X);let[Z,G]=p(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(J){let z=J===null?null:String(J);if(this.setActiveTaskSig(z),z&&this.store.get(z))await this.store.update(z,{})}tasksSignal(){return this.tasksAcc}subscribeTasks(J){return this.store.subscribe(J)}dispose(){this.unsubscribeStore()}listTasks(){return this.store.list()}getTask(J){return this.store.get(J)}async createTask(J){if(!J.repo)throw Error("createTask: repo is required");let z=(J.title??wz).trim()||wz,Y=await this.store.create({repo:J.repo,title:z,branch:J.branch??"",worktreePath:"",status:"backlog",kind:"task",vendor:J.vendor??p1,...J.modelEffort?{modelEffort:J.modelEffort}:{}});if(J.baseRef)this.pendingBaseRefs.set(Y.id,J.baseRef);return Y}async ensureMainTask(J){let{repo:z,key:Y}=CX(J),Z=this.store.list().find((q)=>q.kind==="main"&&CX(q.repo).key===Y);if(Z)return Z;let G=this.mainTaskLocks.get(Y);if(G)return G;let X=(async()=>{let q=uJ(N1("lastSelectedVendor"),EJ());return await this.store.create({repo:z,title:bR(z),branch:"",worktreePath:fK(z),status:"backlog",kind:"main",vendor:q})})();this.mainTaskLocks.set(Y,X);try{return await X}finally{this.mainTaskLocks.delete(Y)}}async ensureWorktree(J){let z=this.requireTask(J);if(z.kind==="main")return fK(z.repo);if(z.worktreePath)return z.worktreePath;let Y=this.worktreeLocks.get(z.id);if(Y)return Y;let Z=this.createWorktree(z);this.worktreeLocks.set(z.id,Z);try{return await Z}finally{this.worktreeLocks.delete(z.id)}}async createWorktree(J){let z=await this.slugs.allocate(J.repo),Y=J.branch||RQ(J.title,J.id),Z=this.pendingBaseRefs.get(J.id),G;try{G=await this.worktrees.createForTask({repo:J.repo,slug:z,branch:Y,baseRef:Z})}catch(X){throw this.slugs.cancel(J.repo,z),X}try{await this.store.update(J.id,{worktreePath:G.path,branch:Y})}catch(X){throw await this.rollbackWorktree(G.path),this.slugs.cancel(J.repo,z),X}return this.slugs.commit(J.repo,z),this.pendingBaseRefs.delete(J.id),G.path}async rollbackWorktree(J){try{await this.worktrees.remove(J,{force:!0})}catch(z){console.error(`[kobe] ensureWorktree rollback failed for ${J}:`,z)}}async setTitle(J,z){let Y=z.trim();if(!Y)throw Error("setTitle: title is required (empty or whitespace-only rejected)");let Z=this.requireTask(J);if(Z.title===Y)return;await this.store.update(Z.id,{title:Y}),await this.followBranchToTitle(Z,Y)}async followBranchToTitle(J,z){if(J.kind==="main"||!J.worktreePath)return;if(J.branch!==RQ(wz,J.id))return;let Y=RQ(z,J.id);if(Y===J.branch)return;try{await this.setBranch(J.id,Y)}catch(Z){console.error(`[kobe] follow-branch-to-title failed for ${J.id}:`,Z)}}async setBranch(J,z){let Y=z.trim();if(!Y)throw Error("setBranch: branch is required (empty or whitespace-only rejected)");let Z=this.requireTask(J);if(Z.kind==="main")throw Error("setBranch: a main task tracks the repo's own branch; rename it with git directly");if(Z.branch===Y)return;if(Z.worktreePath)await this.worktrees.renameBranch(Z.worktreePath,Z.branch,Y);await this.store.update(Z.id,{branch:Y})}async setVendor(J,z){let Y=this.requireTask(J);if(Y.vendor===z)return;await this.store.update(Y.id,{vendor:z})}async setPinned(J,z){let Y=this.requireTask(J);if(Y.kind==="main")return;let Z=z??!Y.pinned;if((Y.pinned??!1)===Z)return;await this.store.update(Y.id,{pinned:Z})}async moveTask(J,z){let Y=this.requireTask(J);if(Y.kind==="main")return;let Z=this.store.list().filter((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,z,Z)}async setArchived(J,z){let Y=this.requireTask(J);if(Y.kind==="main")return;let Z=z??!Y.archived;if(Y.archived===Z)return;await this.store.update(Y.id,{archived:Z})}async reorderTasks(J){if(J.length===0)return;for(let z of J){if(this.requireTask(z.taskId).kind==="main")throw Error(`cannot reorder a main task: ${z.taskId}`);if(!Number.isFinite(z.position))throw Error(`position must be a finite number: ${z.taskId}`)}await this.store.reorder(J.map((z)=>({id:z.taskId,position:z.position})))}async setStatus(J,z){let Y=this.requireTask(J);if(Y.status===z)return;if(Y.status==="done"&&z==="error"||Y.status==="error"&&z==="done")throw new Jj(Y.status,z,Y.id);await this.store.update(Y.id,{status:z})}async setPRStatus(J,z){let Y=this.requireTask(J);if(wQ(Y.prStatus,z??void 0))return;await this.store.update(Y.id,{prStatus:z??void 0})}async deleteTask(J,z){let Y=this.store.get(J);if(!Y)return;if(Y.kind==="main")throw new Yj;let Z=z?.force===!0;if(Y.worktreePath){if(!Z){let G=!1;try{G=await this.worktrees.isDirty(Y.worktreePath)}catch{}if(G)throw new Gj(Y.id)}try{await this.worktrees.remove(Y.worktreePath,{force:Z})}catch(G){throw new Xj(Y.id,G)}}await this.store.remove(Y.id),this.pendingBaseRefs.delete(Y.id),this.worktreeLocks.delete(Y.id)}async forgetProject(J){if(!J)throw Error("forgetProject: repo is required");let z=CX(J).key;for(let Y of CJ())if(CX(Y).key===z)G8(Y);for(let Y of this.store.list()){if(Y.kind!=="main")continue;if(CX(Y.repo).key!==z)continue;await this.store.remove(Y.id),this.pendingBaseRefs.delete(Y.id),this.worktreeLocks.delete(Y.id)}}async discoverAdoptableWorktrees(J){if(!J)throw Error("discoverAdoptableWorktrees: repo is required");let z=await this.worktrees.listAll(J),Y=new Set(this.store.list().filter((Z)=>Z.worktreePath).map((Z)=>qG(Z.worktreePath)));return z.filter((Z)=>!Y.has(qG(Z.path)))}async adoptWorktree(J){if(!J.repo)throw Error("adoptWorktree: repo is required");if(!J.worktreePath)throw Error("adoptWorktree: worktreePath is required");let z=qG(J.worktreePath),Y=this.adoptLocks.get(z);if(Y)return Y;let Z=this.adoptWorktreeLocked(J,z);this.adoptLocks.set(z,Z);try{return await Z}finally{this.adoptLocks.delete(z)}}async adoptWorktreeLocked(J,z){let Y=this.store.list().find((H)=>H.worktreePath&&qG(H.worktreePath)===z);if(Y){if(J.ifExists==="return")return Y;throw Error(`adoptWorktree: ${J.worktreePath} is already adopted as a task`)}let G=(await this.worktrees.listAll(J.repo)).find((H)=>qG(H.path)===z);if(!G)throw Error(`adoptWorktree: ${J.worktreePath} is not an adoptable git worktree of ${J.repo} (unknown, detached, or the main checkout)`);let X=J.branch?.trim()||G.branch,q=(J.title??CR(G.path)).trim()||wz;return this.store.create({repo:J.repo,title:q,branch:X,worktreePath:G.path,status:"backlog",kind:"task",vendor:J.vendor??p1})}pendingBaseRefs=new Map;adoptLocks=new Map;requireTask(J){let z=this.store.get(J);if(!z)throw new zj(String(J));return z}}function bR(J){let z=J.split(/[/\\]/).filter(Boolean);return z.length>0?z[z.length-1]??J:J}function CX(J){let z=rz(J);return{repo:z,key:_1(z)?z:qG(z)}}function qG(J){try{return NR(J)}catch{return kR(J)}}var wz="(new task)";var kX=C(()=>{W1();e8();A1();tJ();a1();qj();HK()});function QG(J,z,Y){if(!z)return J;let Z=XG(z);return Z.ensureReady(),Z.wrapCommand(J,{tty:!0,cwd:Y})}function i1(){let J=[];for(let z of["KOBE_HOME_DIR","KOBE_DAEMON_SOCKET_PATH","KOBE_TMUX_SOCKET"]){let Y=process.env[z];if(Y&&Y.length>0)J.push(`${z}=${Z1(Y)}`)}return J.length>0?`${J.join(" ")} `:""}var bX="@kobe_remote";var KZ=C(()=>{Fz();Uz()});function hQ(){return fz(UZ,!1)}var UZ="experimental.autoStatus";var SX=C(()=>{gY()});function jj(){return fz(DZ,!1)}var DZ="experimental.dispatcher";var vQ=C(()=>{gY()});import{randomUUID as SR}from"crypto";function Mz(J){return`engineCommand.${J}`}function Oz(J){return`engineName.${J}`}function LZ(J){return N1(Oz(J))?.trim()||Bj[J]||J}function IX(J){return n1(J??"claude").defaultCommand}function IR(J){let z=[],Y=/"([^"]*)"|'([^']*)'|(\S+)/g;for(let Z=Y.exec(J);Z!==null;Z=Y.exec(J))z.push(Z[1]??Z[2]??Z[3]??"");return z}function vJ(J,z){let Y=J??"claude",Z=N1(Mz(Y))?.trim(),G=(()=>{if(Z){let X=IR(Z);if(X.length>0)return X}return IX(Y)})();return yR(G,Y,z)}function yR(J,z,Y){let Z=Y?.trim();if(!Z)return J;let G=z??"claude";if(!n1(G).effortLevels?.includes(Z))return J;if(G==="codex")return[...J,"-c",`model_reasoning_effort=${Z}`];return J}function HG(J,z){if((z??"claude")!=="claude")return{argv:J,sessionId:null};if(J.some((Z)=>TR.has(Z)))return{argv:J,sessionId:null};let Y=SR();return{argv:[...J,"--session-id",Y],sessionId:Y}}function FZ(){let J=(z)=>/^[A-Za-z0-9_/.:=-]+$/.test(z)?z:`'${z.replace(/'/g,"'\\''")}'`;try{return[...b1(),"api"].map(J).join(" ")}catch{return"kobe api"}}function xR(J,z=FZ()){return[`You are running inside kobe (a local multi-session task manager) as task ${J}.`,"kobe tracks a lifecycle status for this task on a board.","When you have COMPLETED the work requested in this session and verified it, report it by running:",` ${z} set-status --task-id ${J} --status in_review`,"Run it only when the work is genuinely done \u2014 never while you are asking the user a question, waiting for input, or mid-task.","Never set any other status value; everything beyond in_review is the user's decision."].join(`
36
- `)}function uR(J,z=FZ()){return["kobe shares hard-won discoveries between its parallel sessions as one-line field notes.","When you RESOLVE a non-obvious, repo-level gotcha (a build flag, a flaky test, an environment quirk, an API trap), file it:",` ${z} note --task-id ${J} --text "<one line: the verified conclusion>"`,"File only verified conclusions another session could act on \u2014 never progress logs, opinions, or details specific to your own task. A handful per session at most."].join(`
37
- `)}function ER(J,z=FZ(),Y={}){let Z=[];if((Y.status??hQ)())Z.push(xR(J,z));if((Y.notes??jj)())Z.push(uR(J,z));return Z.length>0?Z.join(`
38
-
39
- `):null}function mQ(J,z,Y,Z={}){if(!Y)return J;if((z??"claude")!=="claude")return J;if(J.includes("--append-system-prompt")||J.includes("--append-system-prompt-file"))return J;let G=ER(Y,FZ(),Z);if(!G)return J;return[...J,"--append-system-prompt",G]}function wR(J,z=FZ()){return[`You are running inside kobe (a local multi-session task manager) as this repository's DISPATCHER (task ${J}, the repo's main session).`,"kobe runs multiple worktree task sessions on this repo in parallel. When one of them resolves a non-obvious gotcha, it files a one-line field note; kobe forwards each note to you as a user message prefixed with [KOBE FIELD NOTE].","Your job is routing that knowledge, fully autonomously \u2014 never ask the user for permission:",` - See the fleet: \`${z} collect --repo .\` (status, running, change counts per task), or \`--task-ids id1,id2\` for specific tasks.`,` - Relay a note to a task that would benefit: \`${z} dispatch --task-id <id> --prompt "[dispatcher] FYI from <author task>: <note verbatim>"\`.`," - Relay to the in-flight tasks whose work plausibly touches the same area \u2014 and to nobody else. If no task benefits, do nothing."," - Never relay a note back to its author, never relay the same note to the same task twice, and keep relays verbatim with provenance \u2014 no summarizing, no embellishment.","Use ONLY the dispatch verb to message sessions \u2014 the `send` verb pastes via tmux and would spawn a DUPLICATE engine for web-hosted sessions. If dispatch fails, report the error in your own session and stop; do not fall back.","Take no action on merge conflicts between tasks \u2014 the board's conflict radar is display-only by design, and resolution timing belongs to the humans and the tasks themselves.","Never run git commands inside other tasks' worktrees."].join(`
40
- `)}function cQ(J,z,Y,Z=jj){if(!Y||!Z())return J;if((z??"claude")!=="claude")return J;if(J.includes("--append-system-prompt")||J.includes("--append-system-prompt-file"))return J;return[...J,"--append-system-prompt",wR(Y)]}var Bj,TR;var eJ=C(()=>{YY();ZY();SX();vQ();A1();a1();Bj=Object.fromEntries(tY.map((J)=>[J,n1(J).displayName]));TR=new Set(["--session-id","--resume","-r","--continue","-c","--from-pr"])});var BK={};q1(BK,{archivedHistoryPreviewEnabled:()=>Wj,ARCHIVED_HISTORY_PREVIEW_KEY:()=>yX});function Wj(){return fz(yX,!1)}var yX="experimental.archivedHistoryPreview";var dQ=C(()=>{gY()});import{spawnSync as PR}from"child_process";function WK(J,z){if(J==="darwin")return"pbcopy";if(J==="linux"){for(let Y of hR)if(z(Y.binary))return Y.command;return null}return null}function KK(J){let z=[["set-option","-g","set-clipboard","on"]];if(J)for(let Y of vR)for(let Z of mR)z.push(["bind-key","-T",Y,Z,"send-keys","-X","copy-pipe-and-cancel",J]);return z}var hR,VK=(J)=>{try{let z=process.platform==="win32"?"where":"which";return PR(z,[J],{encoding:"utf8"}).status===0}catch{return!1}},vR,mR;var UK=C(()=>{hR=[{binary:"wl-copy",command:"wl-copy"},{binary:"xclip",command:"xclip -selection clipboard -in"},{binary:"xsel",command:"xsel --clipboard --input"}];vR=["copy-mode","copy-mode-vi"],mR=["MouseDragEnd1Pane","y","Enter"]});import{existsSync as DK,readFileSync as cR}from"fs";function LK(){MZ=null}function dR(){let J=vW();if(DK(J))return{canonical:J,found:J};let z=J.replace(/\.yaml$/,".yml");if(DK(z))return{canonical:J,found:z};return{canonical:J,found:null}}function nQ(){if(MZ)return MZ;let{canonical:J,found:z}=dR();if(!z)return MZ={path:J,exists:!1,doc:null,warnings:[]},MZ;let Y=[],Z=null;try{let G=cR(z,"utf8");Z=Bun.YAML.parse(G)}catch(G){let X=G instanceof Error?G.message:String(G);Y.push(`could not read/parse ${z}: ${X}`)}return MZ={path:J,exists:!0,doc:Z,warnings:Y},MZ}var MZ=null;var Vj=C(()=>{t1()});function fG(J,z){let Y=`alternating [${J}, ${z}] pairs`;return{layout:Y,validateCount:(Z)=>Z>=2&&Z%2===0?null:`needs ${Y} (an even number of chords \u2014 got ${Z})`}}function pR(J,z){let Y=J.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:`"${J}": no key after the modifiers`};let X=new Set;for(let f of Z){let j=lR[f];if(!j)return{error:`"${J}": unknown modifier "${f}" (use ctrl / cmd / alt / shift)`};X.add(j)}if(G=$R[G]??G,X.has("shift")&&G.length===1&&!z?.allowShiftCharacter)return{error:`"${J}": shift+<character> can never match \u2014 terminals deliver shift+letter as a plain character, not a modifier event`};let q=_R.filter((f)=>X.has(f)).join("+"),H=q?`${q}+${G}`:G;if(G.length>1&&!aR.has(G))return{chord:H,warning:`"${J}": unrecognized key name "${G}" \u2014 the chord may never fire`};return{chord:H}}function iQ(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}function rR(J){if(J==="darwin")return["darwin","macos","mac"];if(J==="win32")return["win32","windows"];return[J]}function oR(J){if(!iQ(J))return null;let z=J.bindings;if(iQ(z))return z;return J}function lQ(J,z,Y){let Z=[];if(J===null||J===void 0)return{entries:[],warnings:Z};if(!iQ(J))return{entries:[],warnings:["config root must be a YAML mapping (e.g. a top-level `bindings:` key)"]};let G=new Map,X=[];if(J.bindings!==void 0)if(iQ(J.bindings))X.push(J.bindings);else Z.push("`bindings:` must be a mapping of id \u2192 chord(s)");for(let q of rR(z)){let H=J[q];if(H===void 0)continue;let f=oR(H);if(f)X.push(f);else Z.push(`\`${q}:\` must be a mapping (or contain a \`bindings:\` mapping)`)}for(let q of X)for(let[H,f]of Object.entries(q)){if(f===null||f===!1||Array.isArray(f)&&f.length===0){G.set(H,[]);continue}let j=typeof f==="string"?[f]:Array.isArray(f)?f:null;if(!j){Z.push(`${H}: expected a chord string, a list of chords, or null \u2014 got ${typeof f}`);continue}let V=[],B=!1;for(let K of j){if(typeof K!=="string"){Z.push(`${H}: chord entries must be strings`),B=!0;continue}let L=pR(K,Y?.chordOptsFor?.(H));if("error"in L){Z.push(`${H}: ${L.error}`),B=!0;continue}if(L.warning)Z.push(`${H}: ${L.warning}`);if(!V.includes(L.chord))V.push(L.chord)}if(V.length===0&&B){Z.push(`${H}: no valid chords \u2014 keeping the default`);continue}G.set(H,V)}return{entries:Array.from(G,([q,H])=>({id:q,keys:H})),warnings:Z}}function sR(J,z){return J===z||J==="global"||z==="global"}function FK(J,z){let Y=[],Z=[];for(let G of z){let X=J.find((B)=>B.id===G.id);if(!X){Y.push(`${G.id}: unknown binding id (press F1 in kobe for the full list)`);continue}let q=Kj[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 H=nR[G.id];if(H&&G.keys.length>0){let B=H.validateCount(G.keys.length);if(B){Y.push(`${G.id}: ${B} \u2014 keeping the default`);continue}}let f=G.keys.filter((B)=>{if(B.length===1&&iR.has(X.scope))return Y.push(`${G.id}: "${B}" dropped \u2014 a bare character on a ${X.scope}-scope binding would steal typed input (add a modifier)`),!1;return!0});if(f.length===0&&G.keys.length>0){Y.push(`${G.id}: no chords survived validation \u2014 keeping the default`);continue}if(H&&f.length!==G.keys.length){Y.push(`${G.id}: a dropped chord would shift the slot layout (${H.layout}) \u2014 keeping the default`);continue}let j=X.keys,V=X;if(V.keys=f,X.hint)if(f.length===0)V.hint=void 0;else X.hint.keys=f.join("/");Z.push({id:G.id,keys:f,defaultKeys:j})}for(let G of Z)for(let X of G.keys){let q=J.find((H)=>H.id===G.id);if(!q)continue;for(let H of J){if(H.id===G.id)continue;if(!H.keys.includes(X))continue;if(!sR(q.scope,H.scope))continue;Y.push(`${G.id}: "${X}" also fires ${H.id} (${H.scope} scope) \u2014 last registration wins; consider a different chord`)}}return{applied:Z,warnings:Y}}var Kj,nR,iR,lR,$R,aR,_R;var $Q=C(()=>{Kj={"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)"};nR={"sidebar.nav":fG("down","up"),"files.nav":fG("down","up"),"sidebar.search.nav":fG("down","up"),"files.hierarchy":fG("collapse","expand"),"sidebar.view":fG("previous view","next view"),"files.tab":fG("previous tab","next tab")},iR=new Set(["global","workspace","terminal"]),lR={ctrl:"ctrl",control:"ctrl",ctl:"ctrl",cmd:"cmd",command:"cmd",meta:"cmd",super:"cmd",win:"cmd",alt:"alt",option:"alt",opt:"alt",shift:"shift"},$R={esc:"escape",spacebar:"space",pgup:"pageup",pgdn:"pagedown",pgdown:"pagedown"},aR=new Set(["up","down","left","right","pageup","pagedown","home","end","insert","delete","backspace","tab","space","escape","enter","return",...Array.from({length:12},(J,z)=>`f${z+1}`)]),_R=["ctrl","cmd","alt","shift"]});function jG(J){return J in MK}function RZ(J,z){let Y=J.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:`"${J}": 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 f=eR[Z];if(!f)return{error:`"${J}": tmux can't bind the key "${Z}"`};X=f}let q=/^f\d+$/.test(Z);if(G.size===0&&!q&&!z?.allowBare)return{error:`"${J}": tmux session keys are no-prefix root bindings live in every pane \u2014 a bare key would shadow typing (add a modifier, or use an F-key)`};let H="";if(G.has("ctrl"))H+="C-";if(G.has("alt"))H+="M-";if(G.has("shift"))H+="S-";return{key:H+X}}function AK(){let J={};for(let[Y,Z]of Object.entries(AZ)){let G=RZ(Z,{allowBare:jG(Y)});if("error"in G)throw Error(`default tmux chord for ${Y} failed to translate: ${G.error}`);J[Y]={chord:Z,key:G.key}}let z=uY.map((Y)=>{let Z=RZ(Y);if("error"in Z)throw Error(`default tmux focus chord ${Y} failed to translate`);return{chord:Y,key:Z.key}});return{binds:J,focus:z,overridden:new Set,warnings:[]}}function Uj(J){let z=AK(),Y=new Set;for(let Z of J){if(!Z.id.startsWith("tmux."))continue;if(Z.id===Pz){if(Z.keys.length===0){z.focus=[null,null,null,null],Y.add(Pz);continue}if(Z.keys.length!==uY.length){z.warnings.push(`${Pz}: needs exactly 4 chords in order left/down/up/right (got ${Z.keys.length}) \u2014 keeping the default`);continue}let H=[],f=!0;for(let j of Z.keys){let V=RZ(j);if("error"in V){z.warnings.push(`${Pz}: ${V.error} \u2014 keeping the default`),f=!1;break}H.push({chord:j,key:V.key})}if(!f)continue;z.focus=H,Y.add(Pz);continue}if(!(Z.id in AZ)){z.warnings.push(`${Z.id}: unknown tmux binding id`);continue}let G=Z.id;if(Z.keys.length===0){z.binds[G]=null,Y.add(G);continue}if(Z.keys.length>1)z.warnings.push(`${G}: tmux bindings take ONE chord \u2014 using "${Z.keys[0]}", ignoring the rest`);let X=Z.keys[0],q=RZ(X,{allowBare:jG(G)});if("error"in q){z.warnings.push(`${G}: ${q.error} \u2014 keeping the default`);continue}if(X!==AZ[G])Y.add(G);z.binds[G]={chord:X,key:q.key}}return z.overridden=Y,z}function Dj(J){return J.startsWith("tmux.")?{allowShiftCharacter:!0}:{}}function RK(){OZ=null}function aQ(){if(OZ)return OZ;let J=nQ();if(!J.exists||J.doc===null)return OZ=AK(),OZ;let z=lQ(J.doc,process.platform,{chordOptsFor:Dj}),Y=z.warnings.filter((G)=>G.startsWith("tmux.")),Z=Uj(z.entries);Z.warnings=[...Y,...Z.warnings];for(let G of Z.warnings)console.warn(`[kobe/keybindings] ${G}`);return OZ=Z,OZ}var tR,MK,OK,AZ,Pz="tmux.focus",uY,eR,OZ=null;var _Q=C(()=>{Vj();$Q();tR={"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"},MK={"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"},OK=["F6","F7","F8","F9","F10","F11"],AZ={...tR,...MK};uY=["ctrl+h","ctrl+j","ctrl+k","ctrl+l"],eR={up:"Up",down:"Down",left:"Left",right:"Right",pageup:"PgUp",pagedown:"PgDn",home:"Home",end:"End",insert:"IC",delete:"DC",backspace:"BSpace",tab:"Tab",space:"Space",escape:"Escape",enter:"Enter",return:"Enter",...Object.fromEntries(Array.from({length:12},(J,z)=>[`f${z+1}`,`F${z+1}`]))}});async function TX(J,z){let Y=null;for(let G=0;G<24;G++){let X=await BG(J);if(X){if(!z)return{pane:X,ready:!0};let q=(await WG(X)).trim();if(q.length>0&&q===Y)return{pane:X,ready:!0};Y=q}await gK(250)}return{pane:await BG(J)||await Lj(J),ready:!1}}async function xX(J,z){let Y=`kobe-api-${J.replace(/[^A-Za-z0-9]/g,"")}`;await c0(["set-buffer","-b",Y,"--",z]),await c0(["paste-buffer","-p","-d","-b",Y,"-t",J]),await gK(Jg),await uX(J,"Enter")}async function NK(J,z){let{pane:Y}=await TX(J,!0);if(!Y)return;await xX(Y,z.text)}var gK=(J)=>new Promise((z)=>setTimeout(z,J)),Jg=150;var pQ=C(()=>{v1()});function CK(J,z){if(J===null)return{kind:"create",reason:"no session with this name \u2014 build fresh"};let Y=J.worktree===z.cwd,Z=!z.vendor||J.vendor===z.vendor;if(J.claudePaneAlive&&Y&&Z)return{kind:"reuse",reason:"healthy: engine pane alive, worktree + vendor match"};if(Y&&!Z&&z.hasEngineCommand)return{kind:"respawn-engine",reason:`vendor drift: session tagged ${J.vendor===""?"<untagged>":`"${J.vendor}"`}, task wants "${z.vendor}" \u2014 relaunch engine pane in place (KOB-232)`};if(Y&&Z&&J.windowCount>1)return{kind:"reuse",reason:"active window's engine pane is gone but sibling chat tabs exist \u2014 reuse rather than drop them"};if(!Y)return{kind:"rebuild",reason:J.worktree===""?"legacy session with no @kobe_worktree tag \u2014 rebuild in the right place":`worktree drift: session tagged "${J.worktree}", task wants "${z.cwd}" \u2014 rebuild`};if(!Z)return{kind:"rebuild",reason:"vendor drift but no engine command to respawn with \u2014 rebuild"};return{kind:"rebuild",reason:"single-window session whose engine pane was destroyed \u2014 rebuild"}}var VG;var rQ=C(()=>{VG={$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 KG;var oQ=C(()=>{KG={$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 UG;var sQ=C(()=>{UG={$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 DG;var tQ=C(()=>{DG={$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 LG;var eQ=C(()=>{LG={$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 FG;var JH=C(()=>{FG={$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 MG;var zH=C(()=>{MG={$schema:"https://opencode.ai/theme.json",defs:{darkStep1:"#1a1b26",darkStep2:"#1e2030",darkStep3:"#222436",darkStep4:"#292e42",darkStep5:"#3b4261",darkStep6:"#545c7e",darkStep7:"#737aa2",darkStep8:"#9099b2",darkStep9:"#82aaff",darkStep10:"#89b4fa",darkStep11:"#828bb8",darkStep12:"#c8d3f5",darkRed:"#ff757f",darkOrange:"#ff966c",darkYellow:"#ffc777",darkGreen:"#c3e88d",darkCyan:"#86e1fc",darkPurple:"#c099ff",lightStep1:"#e1e2e7",lightStep2:"#d5d6db",lightStep3:"#c8c9ce",lightStep4:"#b9bac1",lightStep5:"#a8aecb",lightStep6:"#9699a8",lightStep7:"#737a8c",lightStep8:"#5a607d",lightStep9:"#2e7de9",lightStep10:"#1a6ce7",lightStep11:"#8990a3",lightStep12:"#3760bf",lightRed:"#f52a65",lightOrange:"#b15c00",lightYellow:"#8c6c3e",lightGreen:"#587539",lightCyan:"#007197",lightPurple:"#9854f1"},theme:{primary:{dark:"darkStep9",light:"lightStep9"},secondary:{dark:"darkPurple",light:"lightPurple"},accent:{dark:"darkOrange",light:"lightOrange"},error:{dark:"darkRed",light:"lightRed"},warning:{dark:"darkOrange",light:"lightOrange"},success:{dark:"darkGreen",light:"lightGreen"},info:{dark:"darkStep9",light:"lightStep9"},text:{dark:"darkStep12",light:"lightStep12"},textMuted:{dark:"darkStep11",light:"lightStep11"},background:{dark:"darkStep1",light:"lightStep1"},backgroundPanel:{dark:"darkStep2",light:"lightStep2"},backgroundElement:{dark:"darkStep3",light:"lightStep3"},border:{dark:"darkStep7",light:"lightStep7"},borderActive:{dark:"darkStep8",light:"lightStep8"},borderSubtle:{dark:"darkStep6",light:"lightStep6"},diffAdded:{dark:"#4fd6be",light:"#1e725c"},diffRemoved:{dark:"#c53b53",light:"#c53b53"},diffContext:{dark:"#828bb8",light:"#7086b5"},diffHunkHeader:{dark:"#828bb8",light:"#7086b5"},diffHighlightAdded:{dark:"#b8db87",light:"#4db380"},diffHighlightRemoved:{dark:"#e26a75",light:"#f52a65"},diffAddedBg:{dark:"#20303b",light:"#d5e5d5"},diffRemovedBg:{dark:"#37222c",light:"#f7d8db"},diffContextBg:{dark:"darkStep2",light:"lightStep2"},diffLineNumber:{dark:"#8f909a",light:"#59595b"},diffAddedLineNumberBg:{dark:"#1b2b34",light:"#c5d5c5"},diffRemovedLineNumberBg:{dark:"#2d1f26",light:"#e7c8cb"},markdownText:{dark:"darkStep12",light:"lightStep12"},markdownHeading:{dark:"darkPurple",light:"lightPurple"},markdownLink:{dark:"darkStep9",light:"lightStep9"},markdownLinkText:{dark:"darkCyan",light:"lightCyan"},markdownCode:{dark:"darkGreen",light:"lightGreen"},markdownBlockQuote:{dark:"darkYellow",light:"lightYellow"},markdownEmph:{dark:"darkYellow",light:"lightYellow"},markdownStrong:{dark:"darkOrange",light:"lightOrange"},markdownHorizontalRule:{dark:"darkStep11",light:"lightStep11"},markdownListItem:{dark:"darkStep9",light:"lightStep9"},markdownListEnumeration:{dark:"darkCyan",light:"lightCyan"},markdownImage:{dark:"darkStep9",light:"lightStep9"},markdownImageText:{dark:"darkCyan",light:"lightCyan"},markdownCodeBlock:{dark:"darkStep12",light:"lightStep12"},syntaxComment:{dark:"darkStep11",light:"lightStep11"},syntaxKeyword:{dark:"darkPurple",light:"lightPurple"},syntaxFunction:{dark:"darkStep9",light:"lightStep9"},syntaxVariable:{dark:"darkRed",light:"lightRed"},syntaxString:{dark:"darkGreen",light:"lightGreen"},syntaxNumber:{dark:"darkOrange",light:"lightOrange"},syntaxType:{dark:"darkYellow",light:"lightYellow"},syntaxOperator:{dark:"darkCyan",light:"lightCyan"},syntaxPunctuation:{dark:"darkStep12",light:"lightStep12"}}}});var kK;var bK=C(()=>{rQ();oQ();sQ();tQ();eQ();JH();zH();kK={claude:VG,conductor:KG,nord:DG,opencode:LG,dracula:UG,tokyonight:MG,"osaka-jade":FG}});function Hg(J){let z=/^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/.exec(J);if(!z)return null;let Y=z[1];if(Y.length===3){let[Z,G,X]=Y;return`#${Z}${Z}${G}${G}${X}${X}`.toLowerCase()}return`#${Y.slice(0,6)}`.toLowerCase()}function SK(J,z,Y="dark"){let Z=J.defs??{};function G(q,H){if(typeof q==="string"){if(q==="transparent"||q==="none")return null;if(q.startsWith("#"))return Hg(q);if(H.includes(q))return null;let j=Z[q]??J.theme[q];if(j===void 0)return null;return G(j,[...H,q])}if(!q||typeof q!=="object")return null;let f=q[Y];return typeof f==="string"?G(f,H):null}let X=J.theme[z];if(X===void 0)return null;return G(X,[z])}function YH(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}function ZH(J){if(!YH(J))return{ok:!1,reason:"theme must be a JSON object at the top level"};let z=J;if(!("theme"in z))return{ok:!1,reason:"missing required key `theme`"};let Y=z.theme;if(!YH(Y))return{ok:!1,reason:"`theme` must be an object map"};if("defs"in z&&z.defs!==void 0){if(!YH(z.defs))return{ok:!1,reason:"`defs` must be an object map"};for(let[Z,G]of Object.entries(z.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(!YH(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 z&&z.$schema!==void 0&&typeof z.$schema!=="string")return{ok:!1,reason:"`$schema` must be a string when present"};return{ok:!0,theme:z}}var Fj=()=>{};import{readFileSync as fg,readdirSync as jg}from"fs";import{join as IK}from"path";function OG(){return IK(jJ(),"themes")}function EX(){let J=OG(),z;try{z=jg(J)}catch{return[]}let Y=[];for(let Z of z){if(!Z.endsWith(".json"))continue;let G=IK(J,Z),X;try{let f=fg(G,"utf8");X=JSON.parse(f)}catch(f){let j=f instanceof Error?f.message:String(f);console.warn(`[kobe] skipping user theme ${G}: invalid JSON \u2014 ${j}`);continue}let q=ZH(X);if(!q.ok){console.warn(`[kobe] skipping user theme ${G}: ${q.reason}`);continue}let H=Z.slice(0,-5);Y.push({name:H,theme:q.theme})}return Y}var GH=C(()=>{t1();Fj()});import{readFileSync as Bg}from"fs";function Vg(){try{let J=JSON.parse(Bg(_J(),"utf8")),z=typeof J.activeTheme==="string"&&J.activeTheme?J.activeTheme:"claude",Y=typeof J.focusAccent==="string"&&Wg.includes(J.focusAccent)?J.focusAccent:"primary";return{themeName:z,focusAccentSlot:Y,enabled:J.tmuxChromeTheme!=="off"&&J.tmuxBorderTheme!=="off"}}catch{return{themeName:"claude",focusAccentSlot:"primary",enabled:!0}}}function Kg(J){return EX().find((Y)=>Y.name===J)?.theme??kK[J]??null}function Az(J,...z){for(let Y of z){let Z=SK(J,Y);if(Z)return Z}return null}function yK(J,z){let Y=Az(J,"text"),Z=Az(J,"background"),G=Az(J,"textMuted","text"),X=Az(J,"backgroundPanel","background"),q=Az(J,"backgroundElement","backgroundPanel","background"),H=Az(J,"backgroundMenu","backgroundElement","backgroundPanel","background"),f=Az(J,"selectedListItemText","background"),j=Az(J,z,"primary","borderActive","border","text");return{border:Az(J,"border","text"),activeBorder:j,statusBg:X,statusFg:G,statusMutedFg:G,windowFg:G,currentWindowBg:q,currentWindowFg:j,activityFg:Az(J,"info","primary","text"),bellFg:Az(J,"warning","error","primary","text"),messageBg:H,messageFg:Y,messageCommandFg:j,modeBg:j,modeFg:f??Z}}function Jz(J){let z=[];if(J.bg)z.push(`bg=${J.bg}`);if(J.fg)z.push(`fg=${J.fg}`);if(z.length===0)return null;if(J.attrs)z.push(...J.attrs);return z.join(",")}function xK(J){let z=Jz({bg:J.statusBg,fg:J.statusFg}),Y=Jz({bg:J.statusBg,fg:J.statusMutedFg}),Z=Jz({bg:J.statusBg,fg:J.windowFg});return[{key:"border",option:"pane-border-style",showFlag:"-gwqv",setFlag:"-gw",unsetFlag:"-gwu",value:Jz({fg:J.border})},{key:"active",option:"pane-active-border-style",showFlag:"-gwqv",setFlag:"-gw",unsetFlag:"-gwu",value:Jz({fg:J.activeBorder})},{key:"status",option:"status-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:z},{key:"status-left",option:"status-left-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Y},{key:"status-right",option:"status-right-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Y},{key:"window",option:"window-status-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Z},{key:"current-window",option:"window-status-current-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Jz({bg:J.currentWindowBg,fg:J.currentWindowFg,attrs:["bold"]})},{key:"activity-window",option:"window-status-activity-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Jz({bg:J.statusBg,fg:J.activityFg})},{key:"bell-window",option:"window-status-bell-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Jz({bg:J.statusBg,fg:J.bellFg,attrs:["bold"]})},{key:"last-window",option:"window-status-last-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Jz({bg:J.statusBg,fg:J.statusFg})},{key:"message",option:"message-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Jz({bg:J.messageBg,fg:J.messageFg})},{key:"message-command",option:"message-command-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Jz({bg:J.messageBg,fg:J.messageCommandFg,attrs:["bold"]})},{key:"mode",option:"mode-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Jz({bg:J.modeBg,fg:J.modeFg})},{key:"display-panes",option:"display-panes-colour",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:J.border},{key:"display-panes-active",option:"display-panes-active-colour",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:J.activeBorder}]}function Ug(J){let z=new Set(J.marker.split(",").map((X)=>X.trim()).filter(Boolean)),Y=[],Z=[];for(let X of xK(J.hexes))if(X.value){if((J.current[X.key]??"")!==X.value)Y.push(["set-option",X.setFlag,X.option,X.value]);Z.push(X.key)}else if(z.has(X.key))Y.push(["set-option",X.unsetFlag,X.option]);let G=Z.join(",");if(G!==J.marker)Y.push(G?["set-option","-g",Mj,G]:["set-option","-gu",Mj]);return Y}async function TK(J){let{code:z,stdout:Y}=await $0(J);return z===0?Y.trim():""}async function gZ(){try{let J=Vg(),z=J.enabled?Kg(J.themeName):null,Y=z?yK(z,J.focusAccentSlot):yK({theme:{}},J.focusAccentSlot),Z=xK(Y),[G,...X]=await Promise.all([TK(["show-options","-gqv",Mj]),...Z.map((f)=>TK(["show-options",f.showFlag,f.option]))]),q=Object.fromEntries(Z.map((f,j)=>[f.key,X[j]??""])),H=Ug({marker:G,current:q,hexes:Y});if(H.length>0)await l1(H)}catch{}}var Mj="@kobe_border_theme",Wg;var XH=C(()=>{t1();v1();bK();GH();Wg=["primary","success","info"]});function uK(){return fz(qH,!0)}function QH(){return fz(EK,!1)}function wK(J){oW(EK,J)}var qH="zen.keepTasks",EK="zen.active";var Oj=C(()=>{gY()});var HH={};q1(HH,{recordGen:()=>EY,isLatestGen:()=>cK,genAgeMs:()=>Rg,coalesceLayoutWork:()=>gg,RESIZE_GUARD_MS:()=>Ag,LAYOUT_COALESCE_MS:()=>vK});import{createHash as Dg,randomUUID as Lg}from"crypto";import{mkdirSync as Fg,readFileSync as PK,renameSync as Mg,writeFileSync as Og}from"fs";import{join as hK}from"path";function mK(){return hK(jJ(),"layout-coord")}function Aj(J,z){let Y=Dg("sha1").update(J).digest("hex").slice(0,16);return hK(mK(),`${Y}.${z}`)}function EY(J,z){let Y=Lg();try{Fg(mK(),{recursive:!0});let Z=Aj(J,z),G=`${Z}.${Y}.tmp`;Og(G,`${Date.now()}
41
- ${Y}`),Mg(G,Z)}catch{}return Y}function cK(J,z,Y){try{return PK(Aj(J,z),"utf8").split(`
42
- `)[1]?.trim()===Y}catch{return!0}}function Rg(J,z,Y=Date.now()){try{let Z=Number.parseInt(PK(Aj(J,z),"utf8").split(`
43
- `)[0]??"",10);return Number.isFinite(Z)?Y-Z:Number.POSITIVE_INFINITY}catch{return Number.POSITIVE_INFINITY}}async function gg(J,z,Y,Z=vK){let G=EY(J,z);if(Z>0)await new Promise((X)=>setTimeout(X,Z));if(!cK(J,z,G))return;await Y()}var vK=120,Ag=400;var AG=C(()=>{t1()});function Cg(J){let z=[];for(let Y of J.split(`
44
- `)){let Z=Y.trim();if(!Z)continue;let[G,X,q,H,f]=Z.split("\t");if(!G||!X||!q)continue;let j=Number.parseInt(f?.trim()??"",10);z.push({windowId:G.trim(),paneId:X.trim(),role:q.trim(),version:H?.trim()??"",...Number.isFinite(j)?{paneWidth:j}:{}})}return z}function kg(J){let z=J.indexOf("-t");return z>=0&&z+1<J.length?J[z+1]??null:null}function bg(J,z){return J.filter((Y)=>{let Z=kg(Y);return Z===null||z.has(Z)})}function dK(J,z){let Y=new Map;for(let G of J){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((j)=>j.role==="claude")?.paneId,q=G.find((j)=>j.role==="tasks"),H=G.find((j)=>j.role==="ops");if(q&&(z.force||q.version!==z.currentVersion))Z.push({role:"tasks",paneId:q.paneId});let f=z.force?!0:X&&(z.vendorChanged||H?.version!==z.currentVersion);if(H&&f)Z.push({role:"ops",paneId:H.paneId,claudePaneId:X??null})}return Z}async function fH(J){let{code:z,stdout:Y}=await $0(["list-panes","-s","-t",`=${J}`,"-F",Ng]);if(z!==0)return null;return Cg(Y)}async function nK(J,z){if(z.length===0)return;let Y=await fH(J),Z=Y?bg(z,new Set(Y.map((G)=>G.paneId))):z;if(Z.length>0)await l1(Z)}function iK(J,z){let Y=b1(),Z=i1(),G=[];for(let X of J){let q=X.role==="tasks"?IY(Y,{initialTaskId:z.taskId}):oZ({cwd:z.cwd,taskId:z.taskId,claudePaneId:X.claudePaneId,cliInvocation:Y,vendor:z.vendor});G.push(["respawn-pane","-k","-t",X.paneId,"-c",h1(z.cwd),SJ(Z+q)],["set-option","-p","-t",X.paneId,"@kobe_role",X.role],["set-option","-p","-t",X.paneId,Rz,r0])}return G}function Sg(J,z){if(J===0)return"no-engine-pane";return z===0?"switched":"respawn-failed"}async function lK(J,z,Y,Z,G){let X=await fH(J);if(!X)return"no-engine-pane";let q=X.filter((B)=>B.role==="claude");if(q.length===0)return"no-engine-pane";let H=h1(z),f=rZ(i1(),b1(),J),j=[];for(let B of q){let K=HG(Y,G),L=SJ(QG(bJ(K.argv),Z,z),f);j.push(["respawn-pane","-k","-c",H,"-t",B.paneId,L]),j.push(K.sessionId?["set-window-option","-t",B.paneId,hz,K.sessionId]:["set-window-option","-u","-t",B.paneId,hz])}let V=await l1(j);return Sg(q.length,V)}async function $K(){return(await vz()).rightColumnResizeArgs}async function Rj(J,z={}){let{tasksWidth:Y,rightColumnResizeArgs:Z}=await vz(),G=await fH(J);if(!G)return{rows:null,commands:[]};let X=[];for(let q of G)if(q.role==="tasks"&&(z.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 NZ(J,z){EY(J,"resize");let{rows:Y,commands:Z}=await Rj(J);if(!Y)return;let G=[...Z];if(z)G.push(...iK(dK(Y,{currentVersion:r0,force:!1,vendorChanged:z.vendorChanged}),z));await nK(J,G)}async function aK(J){if(!await V1(J))return;await NZ(J)}async function gj(J){let{code:z,stdout:Y}=await $0(["list-panes","-t",`=${J}`,"-F",`#{@kobe_role} #{pane_width} #{pane_height} #{window_width} #{window_height} #{window_zoomed_flag} #{${Kz}} #{${kJ}}`]);if(z!==0)return;let Z=Y.split(`
45
- `).map((j)=>j.split("\t")).filter((j)=>(j[0]?.trim()??"")!=="");if(Z.length===0)return;if(Z.some((j)=>j[5]?.trim()==="1"))return;if(Z.some((j)=>(j[6]?.trim()??"")!==""))return;if(Z.some((j)=>(j[7]?.trim()??"")!==""))return;if(!Z.some((j)=>j[0]?.trim()==="shell"))return;let G=Number.parseInt(Z[0][3]?.trim()??"",10),X=Number.parseInt(Z[0][4]?.trim()??"",10),q=[],H=Z.find(([j])=>j?.trim()==="tasks");if(H){let j=Number.parseInt(H[1]?.trim()??"",10);if(Number.isFinite(j)&&j>0)q.push(["set-option","-s",QQ,`${R8(j)}`])}let f=Z.find(([j])=>j?.trim()==="ops");if(f&&Number.isFinite(G)&&G>0&&Number.isFinite(X)&&X>0){let j=Number.parseInt(f[1]?.trim()??"",10),V=Number.parseInt(f[2]?.trim()??"",10),B=Number.isFinite(j)?qZ(100*j/G):null,K=Number.isFinite(V)?qZ(100*V/X):null;if(B!==null)q.push(["set-option","-s",HQ,`${B}`]);if(K!==null)q.push(["set-option","-s",fQ,`${K}`])}if(q.length>0)await l1(q)}function Ig(J){let z=J.split(`
46
- `).map((Z)=>Z.split("\t")).filter((Z)=>(Z[0]?.trim()??"")!=="");if(z.length===0)return!1;if(z.some((Z)=>Z[1]?.trim()==="1"))return!1;if(z.some((Z)=>(Z[2]?.trim()??"")!==""))return!1;if(z.some((Z)=>(Z[3]?.trim()??"")!==""))return!1;let Y=new Set(z.map((Z)=>Z[0]?.trim()));return Y.has("tasks")&&Y.has("ops")&&Y.has("shell")}async function _K(J){let{code:z,stdout:Y}=await $0(["list-panes","-t",`=${J}`,"-F",`#{@kobe_role} #{window_zoomed_flag} #{${Kz}} #{${kJ}}`]);if(z!==0||!Ig(Y))return;await gj(J)}async function RG(J){let z=await yJ(J,["@kobe_worktree","@kobe_task","@kobe_vendor"]),Y=z["@kobe_worktree"]||process.cwd(),Z=z["@kobe_task"]||void 0,G=z["@kobe_vendor"]||void 0,X=await fH(J);if(!X)return;let q=iK(dK(X,{currentVersion:r0,force:!0}),{cwd:Y,taskId:Z,vendor:G});await nK(J,q),await gZ()}var Rz="@kobe_pane_version",Ng;var wX=C(()=>{YY();eJ();Fz();v1();Uz();XH();AJ();KZ();AG();Ng=`#{window_id} #{pane_id} #{@kobe_role} #{${Rz}} #{pane_width}`});var uj={};q1(uj,{syncSessionZen:()=>WH,runLayoutAction:()=>CZ,resolveShellPane:()=>jH,planWorkspaceSplit:()=>rK,parseLayoutPaneRows:()=>pK,expandedTerminalHeightPercent:()=>oK,engineTabExit:()=>_g,applyZenToNewWindow:()=>xj});function pK(J){let z=[];for(let Y of J.split(`
47
- `)){let Z=Y.trim();if(!Z)continue;let[G,X,q,H,f,j,V]=Z.split("\t");if(!G)continue;let B=Number.parseInt(H??"",10),K=Number.parseInt(f??"",10),L=Number.parseInt(j??"",10),A=Number.parseInt(V??"",10);z.push({paneId:G.trim(),role:X?.trim()??"",active:q?.trim()==="1",paneWidth:Number.isFinite(B)?B:0,paneHeight:Number.isFinite(K)?K:0,windowWidth:Number.isFinite(L)?L:0,windowHeight:Number.isFinite(A)?A:0})}return z}function rK(J){let z=J.find((Z)=>Z.role===QZ);if(!z)return{kind:"missing-engine"};let Y=J.filter((Z)=>Z.role===WX);if(Y.length+1>=A8)return{kind:"maxed"};if(Y.length===0)return{kind:"split",targetPane:z.paneId,direction:"-h"};if(Y.length===1)return{kind:"split",targetPane:Y[0]?.paneId??z.paneId,direction:"-v"};return{kind:"split",targetPane:z.paneId,direction:"-v"}}function jH(J){return J.find((z)=>z.role===Vz)??J.find((z)=>z.role==="")}function oK(J){return 100-(qZ(J??Number.NaN)??KX)}async function mJ(J,z){let Y=z?.trim()||`=${J}`,{code:Z,stdout:G}=await $0(["list-panes","-t",Y,"-F",yg]);return Z===0?pK(G):null}async function Nj(J){let{code:z,stdout:Y}=await $0(["list-windows","-t",`=${J}`,"-F","#{window_active}\t#{window_id}"]);if(z!==0)return"";for(let Z of Y.split(`
48
- `)){let[G,X]=Z.split("\t");if(G?.trim()==="1"&&X?.trim())return X.trim()}return""}async function qY(J,z){let{code:Y,stdout:Z}=await $0(["show-options","-wqv","-t",J,z]);return Y===0?Z.trim():""}async function kj(J,z,Y){await c0(["set-window-option","-t",J,z,Y])}async function wY(J,z){await c0(["set-window-option","-u","-t",J,z])}async function bj(J){let{code:z,stdout:Y}=await $0(["display-message","-p","-t",J,"#{pane_id}"]);return z===0&&Y.trim()===J}async function T1(J,z){await c0(["display-message","-t",J,z])}async function BH(J){let z=await yJ(J,["@kobe_worktree","@kobe_task","@kobe_vendor"]);return{cwd:z["@kobe_worktree"]||process.cwd(),taskId:z["@kobe_task"]||void 0,vendor:z["@kobe_vendor"]||void 0}}function Tg(J){let z=b1(),Y=i1();return SJ(Y+oZ({cwd:J.cwd,taskId:J.taskId,claudePaneId:J.enginePaneId,cliInvocation:z,vendor:J.vendor}))}async function xg(J,z){return z?.trim()||await Nj(J)}async function ug(J,z){let Y=await mJ(J,z);if(!Y)return;let Z=rK(Y);if(Z.kind==="missing-engine"){await T1(z,"kobe: no engine pane in this window");return}if(Z.kind==="maxed"){await T1(z,`kobe: workspace split limit is ${A8} panes`);return}let{cwd:G}=await BH(J),{code:X,stdout:q}=await $0(["split-window",Z.direction,"-t",Z.targetPane,"-l","50%","-c",h1(G),"-P","-F","#{pane_id}",SJ("true")]),H=q.trim();if(X!==0||!H)return;await l1([["set-option","-p","-t",H,"@kobe_role",WX],["select-pane","-t",H]])}async function Eg(J,z){let Y=await mJ(J,z);if(!Y)return;let Z=Y.filter((q)=>q.role===WX);if(Z.length===0){await T1(z,"kobe: no workspace split to close");return}let X=Z.find((q)=>q.active)??Z[Z.length-1];if(!X)return;await c0(["kill-pane","-t",X.paneId])}async function wg(J,z){let Y=await mJ(J,z);if(!Y)return;let Z=Y.filter((G)=>G.role===WX);if(Z.length===0){await T1(z,"kobe: no workspace splits to reset");return}await l1(Z.map((G)=>["kill-pane","-t",G.paneId]))}async function sK(){return(await vz()).tasksWidth}async function Pg(J){let{cwd:z,taskId:Y}=await BH(J),Z=b1(),G=i1();return{cwd:z,command:SJ(G+IY(Z,{initialTaskId:Y}))}}async function tK(J,z){let Y=await mJ(J,z);if(!Y)return;let Z=Y.find((O)=>O.role===Wz);if(Z){await c0(["kill-pane","-t",Z.paneId]);return}let G=jH(Y),X=Y.find((O)=>O.role===QZ);if(!X){await T1(z,"kobe: cannot restore file pane in this layout");return}let{cwd:q,taskId:H,vendor:f}=await BH(J),j=Tg({cwd:q,taskId:H,vendor:f,enginePaneId:X.paneId}),V=G?["split-window","-v","-b","-t",G.paneId,"-l",`${await hg()}%`,"-c",h1(q),"-P","-F","#{pane_id}",j]:["split-window","-h","-t",X.paneId,"-l",`${await Sj()}%`,"-c",h1(q),"-P","-F","#{pane_id}",j],{code:B,stdout:K}=await $0(V),L=K.trim();if(B!==0||!L)return;let A=[["set-option","-p","-t",L,"@kobe_role",Wz],["set-option","-p","-t",L,Rz,r0]];if(G?.role==="")A.push(["set-option","-p","-t",G.paneId,"@kobe_role",Vz]);await l1(A)}async function hg(){return(await vz()).opsHeightPct}async function Sj(){return(await vz()).rightColumnWidthPct}async function eK(){return oK((await vz()).opsHeightPct)}async function vg(J){let{code:z,stdout:Y}=await $0(["list-windows","-t",`=${J}`,"-F","#{window_index}"]);if(z!==0)return new Set;return new Set(Y.split(`
49
- `).map((Z)=>Number.parseInt(Z.trim(),10)).filter((Z)=>Number.isFinite(Z)))}async function J6(J,z){let Y=await vg(J),Z=hV(z);while(Y.has(Z))Z++;return Z}async function z6(J){let z=VX(J);if(await V1(z))return z;return await c0(["new-session","-d","-s",z,"-n","hidden-panes","-c",h1(process.cwd()),"while :; do sleep 3600; done"]),z}async function Ij(J){let z=VX(J);if(!await V1(z))return;let{code:Y,stdout:Z}=await $0(["list-panes","-s","-t",`=${z}`,"-F","#{@kobe_role}"]);if(Y!==0)return;if(!Z.split(`
50
- `).some((X)=>{let q=X.trim();return q===Vz||q===oJ}))await c0(["kill-session","-t",`=${z}`])}async function mg(J,z){await Y6(J,z,Kz)}async function cg(J,z){await Y6(J,z,kJ)}async function Y6(J,z,Y){let Z=await qY(z,Y);if(!Z)return;if(await bj(Z))await c0(["kill-pane","-t",Z]);await wY(z,Y)}async function Cj(J,z){await mg(J,z),await cg(J,z),await Ij(J)}function Z6(J){return J.find((z)=>z.role===QZ)??J[0]}async function yj(J,z,Y){let Z=Z6(Y);if(!Z)return await T1(z,"kobe: cannot restore Tasks pane in this layout"),!1;let G=await sK(),{cwd:X,command:q}=await Pg(J),{code:H,stdout:f}=await $0(["split-window","-h","-b","-t",Z.paneId,"-l",`${G}`,"-c",h1(X),"-P","-F","#{pane_id}",q]),j=f.trim();if(H!==0||!j)return!1;return await l1([["set-option","-p","-t",j,"@kobe_role",oJ],["set-option","-p","-t",j,Rz,r0],["select-pane","-t",j]]),await wY(z,kJ),await T1(z,"kobe: Tasks pane restored"),!0}async function G6(J,z,Y){let Z=await z6(J),G=await J6(Z,z),{code:X,stdout:q}=await $0(["break-pane","-d","-s",Y.paneId,"-t",`${Z}:${G}`,"-P","-F","#{pane_id}"]),H=q.trim()||Y.paneId;if(X!==0||!H){await T1(z,"kobe: could not hide Tasks pane");return}await kj(z,kJ,H),await T1(z,"kobe: Tasks pane hidden")}async function Tj(J,z,Y){let Z=await mJ(J,z);if(!Z)return;if(!await bj(Y)){await wY(z,kJ);let q=Z.find((H)=>H.role===oJ);if(q){await c0(["select-pane","-t",q.paneId]);return}await yj(J,z,Z);return}let G=Z6(Z);if(!G){await T1(z,"kobe: cannot restore Tasks pane in this layout");return}if(await c0(["join-pane","-h","-b","-s",Y,"-t",G.paneId,"-l",`${await sK()}`])!==0){await T1(z,"kobe: could not restore Tasks pane");return}await l1([["set-option","-p","-t",Y,"@kobe_role",oJ],["set-option","-p","-t",Y,Rz,r0],["select-pane","-t",Y]]),await wY(z,kJ),await Ij(J),await T1(z,"kobe: Tasks pane restored")}async function dg(J,z){let Y=await qY(z,kJ);if(Y){await Tj(J,z,Y);return}let Z=await mJ(J,z);if(!Z)return;let G=Z.find((X)=>X.role===oJ);if(G){await G6(J,z,G);return}await yj(J,z,Z)}async function ng(J,z){let Y=await qY(z,kJ);if(Y){await Tj(J,z,Y);return}let Z=await mJ(J,z);if(!Z)return;let G=Z.find((X)=>X.role===oJ);if(G){await c0(["select-pane","-t",G.paneId]);return}await yj(J,z,Z)}async function X6(J,z,Y){if(Y.role==="")await c0(["set-option","-p","-t",Y.paneId,"@kobe_role",Vz]);let Z=await z6(J),G=await J6(Z,z),{code:X,stdout:q}=await $0(["break-pane","-d","-s",Y.paneId,"-t",`${Z}:${G}`,"-P","-F","#{pane_id}"]),H=q.trim()||Y.paneId;if(X!==0||!H){await T1(z,"kobe: could not hide terminal pane");return}await kj(z,Kz,H),await T1(z,"kobe: Terminal pane hidden")}async function q6(J,z,Y){let Z=Y.find((V)=>V.role===Wz),G=Y.find((V)=>V.role===QZ);if(!Z&&!G)return await T1(z,"kobe: cannot restore terminal pane in this layout"),!1;let{cwd:X}=await BH(J),q=Z?["split-window","-v","-t",Z.paneId,"-l",`${await eK()}%`,"-c",h1(X),"-P","-F","#{pane_id}"]:["split-window","-h","-t",G?.paneId??"","-l",`${await Sj()}%`,"-c",h1(X),"-P","-F","#{pane_id}"],{code:H,stdout:f}=await $0(q),j=f.trim();if(H!==0||!j)return!1;return await c0(["set-option","-p","-t",j,"@kobe_role",Vz]),await wY(z,Kz),await T1(z,"kobe: Terminal pane restored"),!0}async function Q6(J,z,Y){let Z=await mJ(J,z);if(!Z)return;if(!await bj(Y)){await wY(z,Kz),await q6(J,z,Z);return}let G=Z.find((j)=>j.role===Wz),X=Z.find((j)=>j.role===QZ);if(!G&&!X){await T1(z,"kobe: cannot restore terminal pane in this layout");return}let q=G?["join-pane","-v","-s",Y,"-t",G.paneId,"-l",`${await eK()}%`]:["join-pane","-h","-s",Y,"-t",X?.paneId??"","-l",`${await Sj()}%`];if(await c0(q)!==0){await T1(z,"kobe: could not restore terminal pane");return}await c0(["set-option","-p","-t",Y,"@kobe_role",Vz]),await wY(z,Kz),await Ij(J),Z=await mJ(J,z);let f=Z?.find((j)=>j.paneId===Y);if(f)await c0(["select-pane","-t",f.paneId]);await T1(z,"kobe: Terminal pane restored")}async function ig(J,z){let Y=await qY(z,Kz);if(Y){await Q6(J,z,Y);return}let Z=await mJ(J,z);if(!Z)return;let G=jH(Z);if(G){await X6(J,z,G);return}await q6(J,z,Z)}async function lg(J){let z=QH();if(wK(!z),z){await B6(J);return}await j6(J)}async function WH(J){if(!await V1(J))return;let z=QH(),Y=(await kZ(J,pZ)).length>0;if(z===Y)return;if(z)await j6(J);else await B6(J)}async function H6(J){let{code:z,stdout:Y}=await $0(["list-windows","-t",`=${J}`,"-F","#{window_id}"]);if(z!==0)return[];return Y.split(`
51
- `).map((Z)=>Z.trim()).filter((Z)=>Z.length>0)}async function f6(J,z){return!!(await mJ(J,z))?.some((Z)=>Z.role===QZ)}async function j6(J){let z=await H6(J);for(let Y of z){if(!await f6(J,Y))continue;if(await qY(Y,SY))continue;await W6(J,Y)}await QY(J,pZ,"1"),await T1(`=${J}`,"kobe: Zen mode on \u2014 all tabs")}async function B6(J){let z=await H6(J);for(let Y of z){let Z=await qY(Y,SY);if(Z)await $g(J,Y,Z)}await c0(["set-option","-u","-t",J,pZ]),await T1(`=${J}`,"kobe: Zen mode off \u2014 all tabs")}async function xj(J,z){let Y=(await kZ(J,pZ)).length>0;if(!Y&&!QH())return;if(!Y)await QY(J,pZ,"1");if(await qY(z,SY))return;if(!await f6(J,z))return;await W6(J,z)}async function W6(J,z){let Y=await mJ(J,z);if(!Y)return;let Z=[],G=Y.find((q)=>q.role===Wz);if(G)await c0(["kill-pane","-t",G.paneId]),Z.push(Wz);let X=jH(Y);if(X)await X6(J,z,X),Z.push(Vz);if(!uK()){let q=Y.find((H)=>H.role===oJ);if(q)await G6(J,z,q),Z.push(oJ)}if(Z.length===0){await T1(z,"kobe: already focused \u2014 nothing to hide");return}await kj(z,SY,Z.join(",")),await T1(z,"kobe: Zen mode on")}async function $g(J,z,Y){let Z=new Set(Y.split(",").map((G)=>G.trim()));if(Z.has(oJ)){let G=await qY(z,kJ);if(G)await Tj(J,z,G)}if(Z.has(Wz)){let G=await mJ(J,z);if(G&&!G.some((X)=>X.role===Wz))await tK(J,z)}if(Z.has(Vz)){let G=await qY(z,Kz);if(G)await Q6(J,z,G)}await wY(z,SY),await T1(z,"kobe: Zen mode off")}async function V6(J){let{code:z,stdout:Y}=await $0(["list-windows","-t",`=${J}`,"-F","#{window_id}"]);if(z!==0)return 0;return Y.split(`
52
- `).filter((Z)=>Z.trim().length>0).length}async function ag(J,z){if(await V6(J)<=1){await T1(z,"Cannot close the only ChatTab");return}await Cj(J,z),await c0(["kill-window","-t",z])}async function _g(J){if(!await V1(J))return;let z=await Nj(J);if(!z)return;if(await V6(J)>1){await Cj(J,z),await c0(["kill-window","-t",z]);return}let{newChatTab:Y}=await Promise.resolve().then(() => (VH(),K6));if(await Y(J),await Nj(J)!==z)await Cj(J,z),await c0(["kill-window","-t",z])}async function CZ(J,z,Y={}){if(!await V1(J))return;let Z=await xg(J,Y.windowId);if(!Z)return;switch(z){case"workspace-split":await ug(J,Z);return;case"workspace-close":await Eg(J,Z);return;case"workspace-reset":await wg(J,Z);return;case"tasks-toggle":await dg(J,Z);return;case"tasks-restore":await ng(J,Z);return;case"ops-toggle":await tK(J,Z);return;case"terminal-toggle":await ig(J,Z);return;case"zen-toggle":await lg(J);return;case"chat-tab-close":await ag(J,Z);return}}var yg="#{pane_id}\t#{@kobe_role}\t#{pane_active}\t#{pane_width}\t#{pane_height}\t#{window_width}\t#{window_height}";var PY=C(()=>{YY();Fz();Oj();v1();Uz();AJ();KZ();wX()});var K6={};q1(K6,{quickCreate:()=>Pj,openUpdateTab:()=>aX,openSettingsTab:()=>iX,openNewTaskTab:()=>$X,openHelpTab:()=>lX,newChatTab:()=>wj,kobeStatusRight:()=>dX,chatTabSwitchBindings:()=>hX,chatTabRenameBinding:()=>mX,chatTabCloseBinding:()=>vX,chatTabChooseEngineBindings:()=>cX,buildPanesAround:()=>UH,CHAT_TAB_STATUS_FORMAT:()=>gG,CHAT_TAB_STATUS_CURRENT_FORMAT:()=>nX,CHAT_TAB_STATE_OPTION:()=>KH,CHAT_TAB_ENGINE_PROMPT:()=>PX});function hX(J,z){return[["bind-key","-n",J,"if-shell","-F","#{?#{@kobe_surface},0,1}","previous-window"],["bind-key","-n",z,"if-shell","-F","#{?#{@kobe_surface},0,1}","next-window"]]}function vX(J,z="kill-window"){return["bind-key","-n",J,"if-shell","-F","#{>:#{session_windows},1}",z,"display-message 'Cannot close the only ChatTab'"]}function mX(J){return["bind-key","-n",J,"command-prompt","-I","#{window_name}","rename-window -- '%%'"]}function cX(J){return[["bind-key","-n",J,"command-prompt","-p",PX],["bind-key","T","command-prompt","-p",PX]]}function Ej(J){return J.startsWith("C-")&&J.length===3?`^${J.slice(2)}`:J}function dX(J){return`${[J.focusLeft?`${Ej(J.focusLeft)} tasks`:null,J.detach?`${Ej(J.detach)} detach`:null,J.newTab?`${Ej(J.newTab)} tab`:null,J.layoutSplits?`prefix ${J.layoutSplits} splits`:null,J.layoutPanes?`prefix ${J.layoutPanes} panes`:null].filter((Y)=>Y!==null).join(" ")} `}async function UH(J,z){let Y=i1(),Z=await DH(),G=SJ(z.opsCommand??Y+oZ({cwd:z.cwd,taskId:z.taskId,claudePaneId:J,cliInvocation:z.inv,vendor:z.vendor})),{stdout:X}=await _X([["set-option","-p","-t",J,"@kobe_role","claude"],["set-window-option","-t",J,KH,"idle"],["split-window","-h","-b","-t",J,"-l",`${Z}`,"-c",h1(z.cwd),"-P","-F","tasks=#{pane_id}",SJ(Y+IY(z.inv,{initialTaskId:z.taskId}))],["split-window","-h","-t",J,"-l",`${100-g8}%`,"-c",h1(z.cwd),"-P","-F","ops=#{pane_id}",G],["split-window","-v","-l",`${100-KX}%`,"-c",h1(z.cwd),"-P","-F","shell=#{pane_id}"],["select-pane","-t",J]]),q=Object.fromEntries(X.split(`
53
- `).map((H)=>H.trim()).filter(Boolean).map((H)=>H.split("=",2)));if(await l1([...q.tasks?[["set-option","-p","-t",q.tasks,"@kobe_role",oJ]]:[],...q.tasks?[["set-option","-p","-t",q.tasks,Rz,r0]]:[],...q.ops?[["set-option","-p","-t",q.ops,"@kobe_role",Wz]]:[],...q.ops?[["set-option","-p","-t",q.ops,Rz,r0]]:[],...q.shell?[["set-option","-p","-t",q.shell,"@kobe_role",Vz]]:[]]),q.ops){let H=await $K();if(H.length>0)await c0(["resize-pane","-t",q.ops,...H])}}async function wj(J,z){if(!await V1(J))return;let Y=await yJ(J,["@kobe_worktree","@kobe_task","@kobe_vendor",bX]),Z=Y["@kobe_worktree"]||process.cwd(),G=Y["@kobe_task"]||void 0,X=Y[bX]||void 0,q=z??Y["@kobe_vendor"];if(z)await pg(J,G,z);let H=vJ(q),f=HG(H,q),j=b1(),B=(await $0(["new-window","-t",`=${J}`,"-c",h1(Z),"-P","-F","#{pane_id}",SJ(QG(bJ(f.argv),X,Z),rZ(i1(),j,J))])).stdout.trim();if(!B)return;if(f.sessionId)await hY(B,hz,f.sessionId);await UH(B,{cwd:Z,taskId:G,inv:j,vendor:q});let{stdout:K}=await $0(["display-message","-p","-t",B,"#{window_id}"]),L=K.trim();if(L)await xj(J,L)}async function iX(J){if(!await V1(J))return;let Y=(await yJ(J,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),Z=b1(),X=`${i1()}${Z.map(Z1).join(" ")} settings`;await gz(J,{cwd:h1(Y),command:X,name:"settings",surface:!0})}async function lX(J){if(!await V1(J))return;let Y=(await yJ(J,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),Z=b1(),X=`${i1()}${Z.map(Z1).join(" ")} help-page`;await gz(J,{cwd:h1(Y),command:X,name:"help",surface:!0})}async function $X(J,z){if(!await V1(J))return;let Z=(await yJ(J,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),G=b1(),X=i1(),q=z?` --repo ${Z1(z)}`:"",H=`${X}${G.map(Z1).join(" ")} new-task${q}`;await gz(J,{cwd:h1(Z),command:H,name:"new task",surface:!0})}async function aX(J){if(!await V1(J))return;let Y=(await yJ(J,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),Z=b1(),X=`${i1()}${iV({cliInvocation:Z})}`;await gz(J,{cwd:h1(Y),command:X,name:"update",surface:!0})}async function Pj(J){if(!await V1(J))return;let Y=(await yJ(J,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),Z=b1(),X=`${i1()}${Z.map(Z1).join(" ")} quick-task --session ${Z1(J)}`;await gz(J,{cwd:h1(Y),command:X,name:"quick task",surface:!0})}async function pg(J,z,Y){if(await QY(J,"@kobe_vendor",Y),!z)return;try{let{connectOrStartDaemon:Z}=await Promise.resolve().then(() => (RJ(),LH)),G=await Z();try{await G.request("task.setVendor",{taskId:z,vendor:Y})}finally{G.close()}}catch(Z){console.error("[kobe tmux] failed to persist selected engine vendor:",Z)}}var PX,KH="@kobe_tab_state",gG="#{?#{==:#{@kobe_tab_state},running},\u25CF,#{?#{==:#{@kobe_tab_state},done},\u2713,#{?#{==:#{@kobe_tab_state},error},!,#{?#{==:#{@kobe_tab_state},unknown},?,\u25CB}}}} #I:#W",nX;var VH=C(()=>{YY();eJ();Fz();v1();Uz();a1();AJ();KZ();PY();wX();PX=`engine (${$1.join("/")}/\u2026)`;nX=gG});var TJ={};q1(TJ,{tmuxWindowSizeArgsForClient:()=>mj,tmuxSessionName:()=>C1,tmuxInitialSizeArgs:()=>D6,tmuxInitialClientSize:()=>vj,tmuxAvailable:()=>mz,switchClientBeforeKill:()=>cz,sessionExists:()=>V1,selectTasksPane:()=>zN,runLayoutAction:()=>CZ,resyncWindowToClient:()=>sg,refreshKobeWorkspacePanes:()=>RG,quickCreate:()=>Pj,prepareWindowForSwitch:()=>O6,prepareWindowForAttach:()=>FH,parseTmuxClientRows:()=>L6,parseObservedSession:()=>R6,openUpdateTab:()=>aX,openSettingsTab:()=>iX,openNewTaskTab:()=>$X,openHelpTab:()=>lX,observeSessionVendor:()=>dj,newChatTab:()=>wj,kobeStatusRight:()=>dX,killSession:()=>zz,healSessionLayout:()=>aK,focusBindCommand:()=>A6,enterWindow:()=>og,ensureSession:()=>pX,currentSessionName:()=>xJ,clientsWithConflictingSize:()=>F6,chatTabSwitchBindings:()=>hX,chatTabRenameBinding:()=>mX,chatTabCloseBinding:()=>vX,chatTabChooseEngineBindings:()=>cX,captureGlobalLayoutOnDrag:()=>_K,captureGlobalLayout:()=>gj,attachArgv:()=>NG,PANE_VERSION_OPTION:()=>Rz,CHAT_TAB_STATUS_FORMAT:()=>gG,CHAT_TAB_STATUS_CURRENT_FORMAT:()=>nX,CHAT_TAB_STATE_OPTION:()=>KH,CHAT_TAB_ENGINE_PROMPT:()=>PX});function D6(J=process.stdout,z=process.env){let Y=vj(J,z);return Y?["-x",`${Y.columns}`,"-y",`${Y.rows}`]:[]}function vj(J=process.stdout,z=process.env){let Y=vY(J.columns)??vY(z.COLUMNS),Z=vY(J.rows)??vY(z.LINES);return Y&&Z?{columns:Y,rows:Z}:null}function vY(J){let z=typeof J==="number"?J:typeof J==="string"?Number.parseInt(J,10):Number.NaN;return Number.isInteger(z)&&z>0?z:void 0}function L6(J){let z=[];for(let Y of J.split(`
54
- `)){let[Z,G,X,q,H]=Y.split("\t"),f=vY(X?.trim()),j=vY(q?.trim());if(!Z?.trim()||!G?.trim()||!f||!j)continue;z.push({name:Z.trim(),session:G.trim(),width:f,height:j,flags:H?.trim()??""})}return z}function F6(J,z,Y,Z={}){return J.filter((G)=>G.session===z).filter((G)=>G.name!==Z.currentClientName).filter((G)=>G.width!==Y.columns||G.height!==Y.rows).map((G)=>G.name)}function mj(J,z){let Y=Math.max(1,J.rows-(z.status?.trim()==="on"?1:0));return["-x",`${J.columns}`,"-y",`${Y}`]}async function cj(J,z,Y={}){if(!z)return;let{code:Z,stdout:G}=await $0(["list-clients","-t",`=${J}`,"-F",rg]);if(Z!==0)return;let X=F6(L6(G),J,z,Y),q=[];if(Y.currentClientName)q.push(["refresh-client","-f","!ignore-size","-t",Y.currentClientName]);for(let H of X)q.push(["refresh-client","-f","ignore-size","-t",H]);if(q.length>0)await l1(q)}async function FH(J){EY(J,"resize");let z=vj();await cj(J,z);let Y=z?["-x",`${z.columns}`,"-y",`${z.rows}`]:[];if(Y.length>0)await c0(["resize-window","-t",`=${J}`,...Y]);await NZ(J)}async function M6(){let{code:J,stdout:z}=await $0(["display-message","-p","#{client_name}\t#{client_width}\t#{client_height}\t#{status}"]);if(J!==0)return{sizeArgs:[],clientSize:null,clientName:void 0};let[Y,Z,G,X]=z.trim().split("\t"),q=vY(Z),H=vY(G),f=q&&H?{columns:q,rows:H}:null;return{sizeArgs:f?mj(f,{status:X}):[],clientSize:f,clientName:Y?.trim()||void 0}}async function O6(J){EY(J,"resize");let z=await M6();await cj(J,z.clientSize,{currentClientName:z.clientName});let Y=z.sizeArgs;if(Y.length>0)await c0(["resize-window","-t",`=${J}`,...Y]);await NZ(J)}async function og(J){await O6(J),await c0(["switch-client","-t",`=${J}`])}async function sg(J,z){if(!z.size)return;EY(J,"resize"),await cj(J,z.size,{currentClientName:z.clientName});let Y=mj(z.size,{status:z.status}),{commands:Z}=await Rj(J,{force:!0});await l1([["resize-window","-t",`=${J}`,...Y],...Z])}function A6(J,z,Y){let Z=`#{?window_zoomed_flag,1,#{?${tg[z]},,1}}`;if(Y)return["bind-key","-n",J,"if-shell","-F",Z,`select-pane ${z}`,Y];return["bind-key","-n",J,"if-shell","-F",Z,`select-pane ${z}`]}async function pX(J){let z=hj.get(J.name);if(z)return z;let Y=JN(J);hj.set(J.name,Y);try{return await Y}finally{hj.delete(J.name)}}function R6(J){let z="",Y="",Z=!1,G=new Set;for(let X of J.split(`
55
- `)){let[q,H,f,j,V]=X.split("\t");if(!q?.trim())continue;if(G.add(q.trim()),!z&&j?.trim())z=j.trim();if(!Y&&V?.trim())Y=V.trim();if(H?.trim()==="1"&&f?.trim()==="claude")Z=!0}return{worktree:z,vendor:Y,claudePaneAlive:Z,windowCount:G.size}}async function g6(J){if(!await V1(J))return null;let{code:z,stdout:Y}=await $0(["list-panes","-s","-t",`=${J}`,"-F",eg]);if(z!==0)return{worktree:"",vendor:"",claudePaneAlive:!1,windowCount:0};return R6(Y)}async function dj(J){let Y=(await g6(J))?.vendor.trim();return Y?Y:null}async function JN(J){let z=J.launchInit,Y=await g6(J.name),Z=CK(Y,{cwd:J.cwd,vendor:J.vendor,hasEngineCommand:J.command.length>0}),G=t7(J.repo);if(Z.kind==="reuse")return await NZ(J.name,{cwd:J.cwd,taskId:J.taskId,vendor:J.vendor}),!0;if(Z.kind==="respawn-engine"){let R0=await lK(J.name,J.cwd,J.command,G,J.vendor);if(R0==="switched"){if(J.vendor)await QY(J.name,"@kobe_vendor",J.vendor);return await NZ(J.name,{cwd:J.cwd,taskId:J.taskId,vendor:J.vendor,vendorChanged:!0}),!0}if(R0==="respawn-failed")return await NZ(J.name,{cwd:J.cwd,taskId:J.taskId,vendor:J.vendor}),!0}if(Z.kind==="rebuild"||Z.kind==="respawn-engine")await zz(J.name);let X=b1(),q=J.archived===!0&&Wj(),H=q?{argv:[],sessionId:void 0}:HG(J.command,J.vendor),f=J.repo!==void 0&&J.cwd===J.repo,j=f||G?void 0:J.taskId,V=f&&!G?J.taskId:void 0,B=cQ(mQ(H.argv,J.vendor,j),J.vendor,V),K=[...X,"history","--worktree",J.archivedWorktree??J.cwd,...J.vendor?["--vendor",J.vendor]:[],...J.title?["--title",J.title]:[]],L=QG(bJ(q?K:B),G,J.cwd),O=(await $0(["new-session","-d","-s",J.name,"-c",h1(J.cwd),...D6(),"-P","-F","#{pane_id}",dV(L,{initScript:G||q?void 0:z?.initScript,markerPath:!G&&!q&&z?.initScript?mW(J.cwd):void 0,timeoutSeconds:N8(process.env.KOBE_REPO_INIT_TIMEOUT_SECONDS)},rZ(i1(),X,J.name))])).stdout.trim();if(!O)return console.error("[kobe tmux] new-session returned no pane id; session creation failed"),!1;if(H.sessionId)await hY(O,hz,H.sessionId);if(await l1([...J.taskId?[["set-option","-t",J.name,"@kobe_task",J.taskId]]:[],["set-option","-t",J.name,"@kobe_worktree",J.cwd],...J.vendor?[["set-option","-t",J.name,"@kobe_vendor",J.vendor]]:[],...G?[["set-option","-t",J.name,bX,G]]:[]]),process.env.TMUX){let{sizeArgs:R0}=await M6();if(R0.length>0)await c0(["resize-window","-t",`=${J.name}`,...R0])}await UH(O,{cwd:J.cwd,taskId:J.taskId,opsCommand:J.opsCommand,inv:X,vendor:J.vendor});let R=i1(),x=X.map(Z1).join(" "),w=`${R}${x} new-chattab --session '#{session_name}'`,S=`${w} --vendor '%%'`,g=`run-shell ${Z1(S)}`,M=`${R}${x} focus-tasks --session '#{session_name}' --window '#{window_id}'`,T=`run-shell ${Z1(M)}`,$=(R0)=>`${R}${x} layout --session '#{session_name}' --window '#{window_id}' --action ${R0}`,d=$("tasks-restore"),e=`run-shell ${Z1(d)}`,u=$("chat-tab-close"),z0=`run-shell ${Z1(u)}`,Q0=`${R}${x} heal-layout --session '#{session_name}'`,o=`run-shell -b ${Z1(Q0)}`,K0=`${R}${x} resync-window --session '#{session_name}' --client '#{client_name}' --cols '#{client_width}' --rows '#{client_height}' --status '#{status}'`,N0=`run-shell -b ${Z1(K0)}`,h=`${R}${x} capture-layout --session '#{session_name}'`,s=`run-shell -b ${Z1(h)}`,v=lV({tmuxSocket:Nz}),k=WK(process.platform,VK),t=KK(k),I=aQ(),n=OK.map((R0)=>["unbind-key","-n",R0]);if(I.overridden.has(Pz))for(let R0 of uY){let m=RZ(R0);if("key"in m)n.push(["unbind-key","-n",m.key])}for(let R0 of I.overridden){if(R0===Pz)continue;let m=AZ[R0],L0=jG(R0),G0=RZ(m,{allowBare:L0});if("key"in G0)n.push(L0?["unbind-key",G0.key]:["unbind-key","-n",G0.key])}let q0=["-L","-D","-U","-R"],H0=I.focus.flatMap((R0,m)=>{let L0=q0[m],G0=L0==="-L"?e:void 0;return R0&&L0?[A6(R0.key,L0,G0)]:[]}),j0=I.binds,y0=(R0,m)=>{let L0=j0[R0];return L0?[["bind-key",L0.key,"run-shell",$(m)]]:[]},p0=(...R0)=>{let m=R0.map((L0)=>j0[L0]?.chord).filter((L0)=>!!L0);return m.length>0?m.join("/"):null};await l1([["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",gG],["set-option","-g","window-status-current-format",nX],["set-option","-g","status-right",dX({focusLeft:I.focus[0]?.key??null,detach:j0["tmux.detach"]?.key??null,newTab:j0["tmux.tab.new"]?.key??null,layoutSplits:p0("tmux.layout.workspaceSplit","tmux.layout.workspaceClose","tmux.layout.workspaceReset"),layoutPanes:p0("tmux.layout.tasksToggle","tmux.layout.opsToggle","tmux.layout.terminalToggle","tmux.layout.zenToggle")})],["set-option","-g","mouse","on"],...t,["set-hook","-g","window-resized",o],["set-hook","-g","client-resized",N0],["set-hook","-g","pane-exited",o],["set-hook","-g","window-layout-changed",s],...n,...j0["tmux.detach"]?[["bind-key","-n",j0["tmux.detach"].key,"if-shell","-F",`#{?#{${kJ}},1,#{==:#{@kobe_role},tasks}}`,"detach-client",T]]:[],...H0,...j0["tmux.tab.new"]?[["bind-key","-n",j0["tmux.tab.new"].key,"run-shell",w]]:[],...j0["tmux.tab.chooseEngine"]?cX(j0["tmux.tab.chooseEngine"].key).map((R0)=>[...R0,g]):[],...j0["tmux.tab.prev"]&&j0["tmux.tab.next"]?hX(j0["tmux.tab.prev"].key,j0["tmux.tab.next"].key):j0["tmux.tab.prev"]?[["bind-key","-n",j0["tmux.tab.prev"].key,"previous-window"]]:j0["tmux.tab.next"]?[["bind-key","-n",j0["tmux.tab.next"].key,"next-window"]]:[],...j0["tmux.tab.close"]?[vX(j0["tmux.tab.close"].key,z0)]:[],...j0["tmux.tab.rename"]?[mX(j0["tmux.tab.rename"].key)]:[],...y0("tmux.layout.workspaceSplit","workspace-split"),...y0("tmux.layout.workspaceClose","workspace-close"),...y0("tmux.layout.workspaceReset","workspace-reset"),...y0("tmux.layout.tasksToggle","tasks-toggle"),...y0("tmux.layout.opsToggle","ops-toggle"),...y0("tmux.layout.terminalToggle","terminal-toggle"),...y0("tmux.layout.zenToggle","zen-toggle"),["bind-key","f","run-shell",`${R}${x} quick-create --session '#{session_name}'`],["bind-key","u","display-popup","-E",v]]),await gZ(),await c0(["select-pane","-t",O]);let E0=z?.firstMessage;if(E0)NK(J.name,E0).catch((R0)=>console.error("[kobe tmux] first message delivery failed:",R0));return!0}async function U6(J,z,Y){let Z=Y?.trim()||`=${J}`,{code:G,stdout:X}=await $0(["list-panes","-t",Z,"-F","#{pane_id}\t#{@kobe_role}"]);if(G!==0)return"";for(let q of X.split(`
56
- `)){let[H,f]=q.split("\t");if(H?.trim()&&f?.trim()===z)return H.trim()}return""}async function zN(J,z={}){if(!await V1(J))return"";let Y=await U6(J,"tasks",z.windowId);if(!Y)await CZ(J,"tasks-restore",{windowId:z.windowId}),Y=await U6(J,"tasks",z.windowId);if(!Y)return"";return await c0(["select-pane","-t",Y]),Y}var rg="#{client_name}\t#{client_session}\t#{client_width}\t#{client_height}\t#{client_flags}",tg,hj,eg="#{window_id}\t#{window_active}\t#{@kobe_role}\t#{@kobe_worktree}\t#{@kobe_vendor}";var zJ=C(()=>{YY();eJ();t1();Fz();dQ();v1();UK();_Q();pQ();Uz();XH();VH();KZ();PY();AG();wX();v1();VH();wX();PY();tg={"-L":"pane_at_left","-D":"pane_at_bottom","-U":"pane_at_top","-R":"pane_at_right"};hj=new Map});var oX={};q1(oX,{windowIsSurface:()=>HN,windowCount:()=>GN,tmuxSessionName:()=>C1,tmuxCommandSequence:()=>ij,tmuxAvailable:()=>mz,tmuxArgs:()=>bZ,tagPaneRole:()=>k6,tagClaudePane:()=>QN,switchClientBeforeKill:()=>cz,setWindowOption:()=>hY,setSessionOption:()=>QY,sessionExists:()=>V1,sendKeys:()=>MH,sendKeyName:()=>uX,runTmuxSequenceCapturing:()=>_X,runTmuxSequence:()=>l1,runTmuxCapturing:()=>$0,runTmux:()=>c0,readLayoutGeometry:()=>vz,paneIdByRole:()=>$j,newWindow:()=>gz,killSession:()=>zz,globalTasksPaneWidth:()=>DH,getSessionOptions:()=>yJ,getSessionOption:()=>kZ,getServerOptions:()=>C6,getServerOption:()=>XN,ensureFallbackSession:()=>OH,currentSessionName:()=>xJ,claudePaneIdStrict:()=>BG,claudePaneId:()=>Lj,capturePaneById:()=>WG,attachArgv:()=>NG,SURFACE_WINDOW_OPTION:()=>aj,PANE_ROLE_OPTION:()=>rX,KOBE_TMUX_SOCKET:()=>Nz,KOBE_HOME_SESSION:()=>b6,CLAUDE_ROLE_OPTION:()=>qN,CHAT_TAB_SESSION_ID_OPTION:()=>hz});import{homedir as YN}from"os";function bZ(...J){return["tmux","-L",Nz,...J]}function C1(J){return`kobe-${J.replace(/[^A-Za-z0-9_-]/g,"")}`}function NG(J){return bZ("attach-session","-t",`=${J}`)}async function nj(J){if(!J)return"";try{return await new Response(J).text()}catch{return""}}async function c0(J){try{let z=Bun.spawn(bZ(...J),{stdin:"ignore",cwd:CG,stdout:"ignore",stderr:"pipe"}),[Y,Z]=await Promise.all([nj(z.stderr),z.exited]);if(Z!==0&&Y.trim().length>0)console.error(`[kobe tmux] ${J.join(" ")} (${Z}): ${Y.trim()}`);return Z}catch{return 1}}async function ZN(J){try{return await Bun.spawn(bZ(...J),{stdin:"ignore",cwd:CG,stdout:"ignore",stderr:"ignore"}).exited}catch{return 1}}function ij(J){let z=[];for(let Y of J){if(Y.length===0)continue;if(z.length>0)z.push(";");z.push(...Y)}return z}async function l1(J){let z=ij(J);return z.length===0?0:c0(z)}async function $0(J){try{let z=Bun.spawn(bZ(...J),{stdin:"ignore",cwd:CG,stdout:"pipe",stderr:"pipe"}),[Y,Z,G]=await Promise.all([nj(z.stdout),nj(z.stderr),z.exited]);if(G!==0&&Z.trim().length>0)console.error(`[kobe tmux] ${J.join(" ")} (${G}): ${Z.trim()}`);return{code:G,stdout:Y}}catch{return{code:1,stdout:""}}}async function _X(J){let z=ij(J);return z.length===0?{code:0,stdout:""}:$0(z)}async function mz(){try{return await Bun.spawn(["tmux","-V"],{stdin:"ignore",cwd:CG,stdout:"ignore",stderr:"ignore"}).exited===0}catch{return!1}}async function V1(J){return await ZN(["has-session","-t",`=${J}`])===0}async function GN(J){let{code:z,stdout:Y}=await $0(["list-windows","-t",`=${J}`,"-F","#{window_id}"]);if(z!==0)return 0;return Y.split(`
57
- `).filter((Z)=>Z.trim().length>0).length}async function QY(J,z,Y){await c0(["set-option","-t",J,z,Y])}async function kZ(J,z){let{code:Y,stdout:Z}=await $0(["show-options","-qv","-t",J,z]);return Y===0?Z.trim():""}async function yJ(J,z){let Y=Object.fromEntries(z.map((X)=>[X,void 0])),{code:Z,stdout:G}=await _X(z.map((X)=>["show-options","-q","-t",J,X]));if(Z!==0)return Y;for(let X of G.split(`
58
- `)){let q=X.indexOf(" ");if(q<=0)continue;let H=X.slice(0,q);if(H in Y)Y[H]=X.slice(q+1).trim()}return Y}async function XN(J){let{code:z,stdout:Y}=await $0(["show-options","-sqv",J]);return z===0?Y.trim():""}async function C6(J){let z=Object.fromEntries(J.map((G)=>[G,void 0])),{code:Y,stdout:Z}=await _X(J.map((G)=>["show-options","-sq",G]));if(Y!==0)return z;for(let G of Z.split(`
59
- `)){let X=G.indexOf(" ");if(X<=0)continue;let q=G.slice(0,X);if(q in z)z[q]=G.slice(X+1).trim()}return z}async function DH(){return(await vz()).tasksWidth}async function vz(){return mV(await C6(vV))}async function k6(J,z){await c0(["set-option","-p","-t",J,rX,z])}async function hY(J,z,Y){await c0(["set-window-option","-t",J,z,Y])}async function QN(J){await k6(J,lj)}async function $j(J,z,Y=!1){let{code:Z,stdout:G}=await $0(["list-panes","-t",`=${J}`,"-F",`#{pane_id} #{${rX}}`]);if(Z!==0)return"";let X="";for(let q of G.split(`
60
- `)){let[H,f]=q.split("\t");if(!H)continue;if(!X)X=H.trim();if(f?.trim()===z)return H.trim()}return Y?X:""}async function Lj(J){return $j(J,lj,!0)}async function BG(J){return $j(J,lj,!1)}async function WG(J,z){if(!J)return"";let Y=["capture-pane","-t",J,"-p"];if(typeof z==="number"&&z>0)Y.push("-S",String(-z));let{code:Z,stdout:G}=await $0(Y);return Z===0?G:""}async function MH(J,z){await c0(["send-keys","-t",J,"-l","--",z])}async function uX(J,z){await c0(["send-keys","-t",J,z])}async function gz(J,z){let Y=["new-window","-t",`=${J}`,"-c",z.cwd];if(z.name)Y.push("-n",z.name);if(z.surface){Y.push("-P","-F","#{window_id}"),Y.push(z.command);let{code:Z,stdout:G}=await $0(Y),X=G.trim();if(Z===0&&X)await hY(X,aj,"1");return}Y.push(z.command),await c0(Y)}async function HN(J){let{code:z,stdout:Y}=await $0(["display-message","-t",J,"-p",`#{${aj}}`]);return z===0&&Y.trim()==="1"}async function xJ(){let J=["display-message","-p"],z=process.env.TMUX_PANE;if(z&&z.length>0)J.push("-t",z);J.push("#{session_name}");let{code:Y,stdout:Z}=await $0(J),G=Z.trim();return Y===0&&G.length>0?G:null}async function zz(J){if(!J.startsWith("kobe-hidden-")){let z=VX(J);if(await V1(z))await c0(["kill-session","-t",`=${z}`])}if(await V1(J))await c0(["kill-session","-t",`=${J}`])}async function OH(){let J=b6;if(await V1(J)){if(await kZ(J,N6)==="tasks")return J;await c0(["kill-session","-t",`=${J}`])}let Y=(await $0(["new-session","-d","-s",J,"-c",CG,"-x","220","-y","50","-P","-F","#{pane_id}",cV()])).stdout.trim();if(Y){let Z=await DH(),X=(await $0(["split-window","-h","-b","-t",Y,"-l",`${Z}`,"-c",CG,"-P","-F","#{pane_id}",SJ(i1()+IY(b1()))])).stdout.trim();if(X)await l1([["set-option","-p","-t",X,rX,"tasks"],["select-pane","-t",X]])}return await QY(J,N6,"tasks"),J}async function cz(J,z){if(await xJ()!==J)return;let{enterWindow:Z}=await Promise.resolve().then(() => (zJ(),TJ));if(z&&z!==J&&await V1(z)){await Z(z);return}await Z(await OH())}var Nz,CG,rX="@kobe_role",qN,lj="claude",hz="@kobe_session_id",aj="@kobe_surface",b6="kobe-home",N6="@kobe_home";var v1=C(()=>{YY();KZ();Uz();Nz=process.env.KOBE_TMUX_SOCKET?.trim()||"kobe";CG=YN()||"/";qN=rX});async function fN(J,z=S6){let{code:Y,stdout:Z}=await z.capture(["list-windows","-t",`=${J}`,"-F",`#{window_index} #{automatic-rename} #{${hz}}`]);if(Y!==0)return[];let G=[];for(let X of Z.split(`
61
- `)){let[q,H,f]=X.split("\t"),j=Number.parseInt((q??"").trim(),10);if(!Number.isInteger(j))continue;G.push({index:j,sessionId:f?.trim()??"",autoRename:H?.trim()??""})}return G}async function jN(J,z,Y){let{code:Z,stdout:G}=await Y.capture(["show-window-options","-t",`=${J}:${z}`,"automatic-rename"]);return Z===0&&/\boff\b/.test(G)}async function BN(J){let{code:z,stdout:Y}=await J.capture(["show-window-options","-g","automatic-rename"]);return z===0&&/\boff\b/.test(Y)}async function WN(J,z,Y,Z){return await Z.run(["rename-window","-t",`=${J}:${z}`,"--",Y])===0}async function I6(J,z=VN){let Y=0,Z=null,G=async(X,q)=>{if(q.autoRename==="1")return!1;if(q.autoRename==="0"){if(Z===null)Z=await BN(z.runner);if(!Z)return!0}return jN(X,q.index,z.runner)};for(let X of J.listTasks()){if(X.archived||X.kind==="main"||!X.worktreePath)continue;let q=C1(X.id),H=await fN(q,z.runner);if(H.length===0)continue;let f=H.reduce((V,B)=>Math.min(V,B.index),Number.POSITIVE_INFINITY),j=X.vendor??p1;for(let V of H)try{if(await G(q,V))continue;let B=V.sessionId?await z.titleFromSessionId(j,V.sessionId):V.index===f?await z.titleFromWorktree(X.worktreePath,j):"";if(B&&await WN(q,V.index,B,z.runner))Y++}catch{}}return Y}var S6,VN;var y6=C(()=>{gQ();v1();tJ();S6={capture:$0,run:c0};VN={runner:S6,titleFromSessionId:S7,titleFromWorktree:eZ}});function x6(J){if(J instanceof Error)return J;let z;try{z=typeof J==="string"?J:JSON.stringify(J)}catch{z=String(J)}return Error(z)}function T6(J,z,Y=new Date){let Z=x6(z);return`[${Y.toISOString()}] daemon ${J}: ${Z.stack??`${Z.name}: ${Z.message}`}
62
- `}function KN(J,z,Y=new Date){let Z=x6(z);return`[${Y.toISOString()}] daemon error [${J}]: ${Z.stack??`${Z.name}: ${Z.message}`}
63
- `}function y1(J,z){process.stderr.write(KN(J,z))}function UN(J,z,Y=new Date){return`[${Y.toISOString()}] daemon [${J}]: ${z}
64
- `}function dz(J,z){process.stderr.write(UN(J,z))}function u6(J=(z)=>process.stderr.write(z)){if(_j||pj)return;_j=(z)=>J(T6("unhandledRejection",z)),pj=(z)=>J(T6("uncaughtException",z)),process.on("unhandledRejection",_j),process.on("uncaughtException",pj)}var _j,pj;async function DN(J,z=eZ){let Y=[];for(let Z of J.listTasks()){if(Z.archived||Z.title!==wz||!Z.worktreePath)continue;try{let G=await z(Z.worktreePath,Z.vendor??p1);if(!G)continue;let X=J.getTask(Z.id);if(!X||X.title!==wz)continue;await J.setTitle(Z.id,G),Y.push({id:Z.id,title:G})}catch(G){y1("auto-title-poller",G)}}return Y}function E6(J,z=rj,Y){if(z<=0)return()=>{};let Z=!1,X=setInterval(()=>{if(Y&&!Y())return;if(Z)return;Z=!0,DN(J).then(()=>I6(J)).catch((q)=>y1("auto-title-poller",q)).finally(()=>{Z=!1})},z);return X.unref?.(),()=>clearInterval(X)}var rj=4000;var w6=C(()=>{gQ();kX();y6();tJ()});class oj{socket;highWaterMark;queue=[];queuedBytes=0;paused=!1;draining=!1;droppedFrames=0;constructor(J,z={}){this.socket=J,this.highWaterMark=z.highWaterMark??8388608}get isPaused(){return this.paused}get pendingBytes(){return this.queuedBytes}get pendingCount(){return this.queue.length}get dropped(){return this.droppedFrames}write(J,z){if(!this.paused){if(this.safeWrite(J))return;this.pause();return}this.enqueue({line:J,bytes:Buffer.byteLength(J),critical:z})}enqueue(J){if(this.queue.push(J),this.queuedBytes+=J.bytes,this.queuedBytes<=this.highWaterMark)return;let z=[];for(let Y of this.queue){if(this.queuedBytes>this.highWaterMark&&!Y.critical){this.queuedBytes-=Y.bytes,this.droppedFrames++;continue}z.push(Y)}this.queue=z}pause(){if(this.draining)return;this.paused=!0,this.draining=!0,this.socket.once("drain",()=>{this.draining=!1,this.paused=!1,this.flush()})}flush(){while(this.queue.length>0){let J=this.queue[0],z=this.safeWrite(J.line);if(this.queue.shift(),this.queuedBytes-=J.bytes,!z){this.pause();return}}}safeWrite(J){try{return this.socket.write(J)}catch{return!0}}}class sj{last=new Map;sinks=new Set;publish(J,z){this.last.set(J,z);let Y={channel:J,payload:z};for(let Z of this.sinks)Z(Y)}snapshot(){return[...this.last].map(([J,z])=>({channel:J,payload:z}))}onPublish(J){return this.sinks.add(J),()=>{this.sinks.delete(J)}}}async function P6(J,z,Y=hQ){if(!Y())return"skipped";let Z=J.getTask(z);if(!Z)return"skipped";if((Z.kind??"task")==="main"||Z.archived)return"skipped";if(Z.status!=="backlog")return"skipped";return await J.setStatus(z,"in_progress"),"moved"}var h6=C(()=>{SX()});import{createHash as LN}from"crypto";import{homedir as FN}from"os";import mY from"path";function gN(){return mY.join(process.env.KOBE_HOME_DIR??FN(),".kobe")}function NN(J){let Y=(mY.basename(J)||"repo").replace(/[^a-zA-Z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"repo",Z=LN("sha1").update(mY.resolve(J)).digest("hex").slice(0,12);return`${Y}-${Z}`}function CN(J){if(!mY.isAbsolute(J))throw Error(`worktreeRootFor: repo must be an absolute path, got: ${J}`);return mY.join(gN(),MN,NN(J))}function kN(J){if(!mY.isAbsolute(J))throw Error(`managedWorktreeRootsFor: repo must be an absolute path, got: ${J}`);return[CN(J),...RN.map((z)=>mY.join(J,z))]}function nz(J){return J.length>1&&J.endsWith("/")?J.slice(0,-1):J}function v6(J,z){return z===J||z.startsWith(`${J}/`)}function m6(J,z){let Y=nz(z),Z,G=-1;for(let X of J){if(!X.worktreePath)continue;let q=nz(X.worktreePath);if(v6(q,Y)&&q.length>G)G=q.length,Z=X.id}return Z}function c6(J,z){let Y=nz(z);for(let Z of J)if(Z.worktreePath&&nz(Z.worktreePath)===Y)return Z.id;return}function tj(J,z){let Y=nz(z),Z,G=-1;for(let X of J){if(!X.repo)continue;let q=nz(X.repo);if(v6(q,Y)&&q.length>G)G=q.length,Z=q}return Z}function d6(J,z){let Y=nz(z),Z=new Set,G=new Set;for(let X of J){if(X.repo)Z.add(nz(X.repo));if(X.worktreePath)G.add(nz(X.worktreePath))}for(let X of Z)for(let q of kN(X).map(nz)){let H=`${q}/`;if(!Y.startsWith(H))continue;let j=Y.slice(H.length).split("/")[0];if(!j)continue;let V=`${H}${j}`;if(G.has(V))return;return{repo:X,worktreePath:V}}return}var MN="worktrees",ON=".kobe/worktrees",AN=".claude/worktrees",RN;var n6=C(()=>{RN=[ON,AN]});function zB(J){return{message:J instanceof Error?J.message:String(J),name:J instanceof Error?J.name:void 0}}async function sX(J,z,Y,Z){let G=J.get(z);if(!G)throw Error(`unknown daemon request: ${z}`);return G.handle(YB(Y),Z)}function tX(){return new Map([{name:"hello",handle(z,Y){let Z=typeof z.protocolVersion==="number"?z.protocolVersion:pJ,G=typeof z.minProtocolVersion==="number"?z.minProtocolVersion:Z;if(!_q({localVersion:pJ,localMin:NY,remoteVersion:Z,remoteMin:G}))throw Error(`daemon is protocol v${pJ} (min v${NY}); this client is v${Z} (min v${G}). Upgrade your kobe.`);return{protocolVersion:pJ,minProtocolVersion:NY,kobeVersion:r0,capabilities:[...H8],daemonPid:Y.daemon.pid,clientId:Y.clientId,tasks:Y.orch.listTasks().map(Bz)}}},{name:"daemon.status",handle(z,Y){return{daemonPid:Y.daemon.pid,kobeVersion:r0,uptimeMs:Date.now()-Y.daemon.startedAt.getTime(),startedAt:Y.daemon.startedAt.toISOString(),attachedClients:Y.daemon.guiCount(),taskCount:Y.orch.listTasks().length,socketPath:Y.daemon.socketPath,webPort:Y.daemon.webPort??null}}},{name:"daemon.stop",async handle(z,Y){return await Y.daemon.stopSoon(),{}}},{name:"task.list",handle(z,Y){return{tasks:Y.orch.listTasks().map(Bz)}}},{name:"task.get",handle(z,Y){let Z=M1(z,"taskId"),G=Y.orch.getTask(Z);if(!G)throw Error(`task not found: ${Z}`);return{task:Bz(G)}}},{name:"task.create",async handle(z,Y){let Z=M1(z,"repo"),G=await Y.orch.createTask({repo:Z,title:Yz(z,"title"),branch:Yz(z,"branch"),baseRef:Yz(z,"baseRef"),vendor:JB(z,"vendor"),modelEffort:Yz(z,"effort")});return{taskId:G.id,task:Bz(G)}}},{name:"task.archive",async handle(z,Y){let Z=M1(z,"taskId");return await Y.orch.setArchived(Z,ej(z,"archived")),{}}},{name:"task.rename",async handle(z,Y){let Z=M1(z,"taskId");return await Y.orch.setTitle(Z,M1(z,"title")),{}}},{name:"task.setBranch",async handle(z,Y){let Z=M1(z,"taskId");return await Y.orch.setBranch(Z,M1(z,"branch")),{}}},{name:"task.setVendor",async handle(z,Y){let Z=M1(z,"taskId"),G=JB(z,"vendor");if(!G)throw Error("task.setVendor: vendor is required");return await Y.orch.setVendor(Z,G),{}}},{name:"task.delete",async handle(z,Y){let Z=M1(z,"taskId");return await Y.orch.deleteTask(Z,{force:ej(z,"force")}),Y.activity.clearTask(Z),{}}},{name:"task.pin",async handle(z,Y){let Z=M1(z,"taskId");return await Y.orch.setPinned(Z,ej(z,"pinned")),{}}},{name:"task.move",async handle(z,Y){let Z=M1(z,"taskId"),G=M1(z,"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(z,Y){let Z=M1(z,"taskId"),G=M1(z,"status");if(!R7(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 H=await Y.issues.mirrorTaskDone(X.repo,Z);if(H)Y.bus.publish("issue.snapshot",H)}catch(H){y1("issue-done-mirror",H)}return{}}},{name:"task.reorder",async handle(z,Y){let Z=z.moves;if(!Array.isArray(Z)||Z.length===0)throw Error("moves must be a non-empty array");if(Z.length>500)throw Error("too many moves in one task.reorder batch (max 500)");let G=Z.map((X)=>{if(typeof X!=="object"||X===null)throw Error("each move needs taskId and position");let q=X,H=M1(q,"taskId"),f=q.position;if(typeof f!=="number"||!Number.isFinite(f))throw Error("position must be a finite number");return{taskId:H,position:f}});return await Y.orch.reorderTasks(G),{}}},{name:"task.ensureMain",async handle(z,Y){let Z=M1(z,"repo"),G=await Y.orch.ensureMainTask(Z);return{task:Bz(G)}}},{name:"project.forget",async handle(z,Y){let Z=M1(z,"repo");return await Y.orch.forgetProject(Z),{}}},{name:"task.ensureWorktree",async handle(z,Y){let Z=M1(z,"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(z,Y){let Z=M1(z,"repo");return{worktrees:await Y.orch.discoverAdoptableWorktrees(Z)}}},{name:"worktree.adopt",async handle(z,Y){let Z=await Y.orch.adoptWorktree({repo:M1(z,"repo"),worktreePath:M1(z,"worktreePath"),branch:Yz(z,"branch"),vendor:JB(z,"vendor"),title:Yz(z,"title"),ifExists:Yz(z,"ifExists")==="return"?"return":"error"});return{task:Bz(Z)}}},{name:"worktree.reconcile",async handle(z,Y){let Z=M1(z,"cwd"),G=M1(z,"worktreePath"),X=tj(Y.orch.listTasks(),Z)??tj(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 y1("worktree-created",q),{adopted:!1}}}},{name:"worktree.archiveRemoved",async handle(z,Y){let Z=M1(z,"worktreePath"),G=c6(Y.orch.listTasks(),Z);if(!G)return{archived:!1};try{return await Y.orch.setArchived(G,!0),{archived:!0,taskId:G}}catch(X){return y1("worktree-removed",X),{archived:!1}}}},{name:"task.setActive",async handle(z,Y){let Z=Yz(z,"taskId")??null;return await Y.orch.setActiveTask(Z),Y.bus.publish("active-task",{taskId:Z}),{}}},{name:"issue.list",async handle(z,Y){return Y.issues.list(M1(z,"repoRoot"))}},{name:"issue.mutate",async handle(z,Y){let Z=await Y.issues.mutate(M1(z,"repoRoot"),z.op);return Y.bus.publish("issue.snapshot",Z),Z}},{name:"session.deliver",async handle(z,Y){let Z=M1(z,"taskId"),G=M1(z,"text"),X=Yz(z,"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(z,Y){let Z=M1(z,"taskId"),G=M1(z,"text"),X=Y.orch.getTask(Z);if(!X)throw Error(`task not found: ${Z}`);let q=Y.orch.listTasks().find((f)=>(f.kind??"task")==="main"&&f.repo===X.repo&&!f.archived);if(!q||q.id===X.id)return{ok:!0,routed:!1};let H=X.title||X.branch||Z;return Y.bus.publish("session.deliver",{taskId:q.id,text:`[KOBE FIELD NOTE] from "${H}" (task ${Z}): ${G}`,at:Date.now(),source:"note"}),{ok:!0,routed:!0}}},{name:"engine.reportEvent",async handle(z,Y){let Z=M1(z,"kind");if(!OQ(Z))throw Error(`unknown engine event kind: ${Z}`);let G=Yz(z,"taskId"),X=Yz(z,"cwd");if(!G&&X&&Z==="session-start"){let f=d6(Y.orch.listTasks(),X);if(f)try{await Y.orch.adoptWorktree({repo:f.repo,worktreePath:f.worktreePath,ifExists:"return"})}catch(j){y1("worktree-autosync",j)}}let q=G??(X?m6(Y.orch.listTasks(),X):void 0);if(!q)return{};let H=bN(z);if(Y.activity.report(q,Z,H),Z==="turn-start")P6(Y.orch,q).then((f)=>{if(f==="moved")console.log(`[status-rules] task ${q} auto-moved backlog \u2192 in_progress`)}).catch((f)=>y1("status-rules",f));return{}}}].map((z)=>[z.name,z]))}function YB(J){if(!J||typeof J!=="object"||Array.isArray(J))return{};return J}function M1(J,z){let Y=J[z];if(typeof Y!=="string"||Y.length===0)throw Error(`${z} is required`);return Y}function Yz(J,z){let Y=J[z];if(Y===void 0||Y===null||Y==="")return;if(typeof Y!=="string")throw Error(`${z} must be a string`);return Y}function ej(J,z){let Y=J[z];if(Y===void 0||Y===null)return;if(typeof Y!=="boolean")throw Error(`${z} must be a boolean`);return Y}function JB(J,z){let Y=Yz(J,z);return Y&&Y.trim().length>0?Y:void 0}function bN(J){let z=J.detail;if(!z||typeof z!=="object"||Array.isArray(z))return;let Y=z,Z={};if(Y.failure==="rate_limit"||Y.failure==="billing"||Y.failure==="other")Z.failure=Y.failure;if(Y.waiting==="permission"||Y.waiting==="input")Z.waiting=Y.waiting;if(typeof Y.note==="string")Z.note=Y.note;return Object.keys(Z).length>0?Z:void 0}var AH=C(()=>{AQ();h6();tJ();AJ();n6();YZ()});import{execFile as SN}from"child_process";import{mkdir as IN,readFile as yN,realpath as i6,rename as TN,stat as xN,writeFile as uN}from"fs/promises";import{homedir as EN}from"os";import{dirname as wN,isAbsolute as PN,join as hN,resolve as l6}from"path";import{promisify as vN}from"util";function mN(J){return(J instanceof Error?J.message:String(J)).includes("not a git repository")}function gH(J=process.env.KOBE_HOME_DIR??EN()){return hN(J,".kobe","issues.json")}function a6(J){return typeof J==="string"&&$6.includes(J)}function cN(J){if(J===null||typeof J!=="object"||Array.isArray(J))return null;let z=J;if(typeof z.id!=="number")return null;return{id:z.id,title:typeof z.title==="string"?z.title:"(untitled)",status:a6(z.status)?z.status:"open",created:typeof z.created==="string"?z.created:"",body:typeof z.body==="string"?z.body:"",taskId:typeof z.taskId==="string"?z.taskId:void 0}}function dN(){return{version:1,repos:{}}}function nN(){let J=new Date,z=String(J.getMonth()+1).padStart(2,"0"),Y=String(J.getDate()).padStart(2,"0");return`${J.getFullYear()}-${z}-${Y}`}async function iN(J){let{stdout:z}=await HB("git",["-C",J,"rev-parse","--git-common-dir"]),Y=z.trim();return i6(PN(Y)?Y:l6(J,Y))}async function lN(J){let{stdout:z}=await HB("git",["-C",J,"rev-parse","--show-toplevel"]);return z.trim()}async function $N(J){let{stdout:z}=await HB("git",["-C",J,"worktree","list","--porcelain"]),Y=z.split(/\r?\n/).find((Z)=>Z.startsWith("worktree "))?.slice(9).trim();return Y?i6(Y):lN(J)}async function ZB(J){if(typeof J!=="string"||J.length===0)throw Error("repoRoot is required");let z=l6(J);if(!(await xN(z).catch(()=>null))?.isDirectory())throw Error("repoRoot does not exist");try{let[Z,G]=await Promise.all([$N(z),iN(z)]);return{repoRoot:Z,repoKey:G}}catch(Z){if(mN(Z))throw Error("repoRoot is not a git repository");throw Z}}async function GB(J){try{let z=JSON.parse(await yN(J,"utf8")),Y={};if(z.repos&&typeof z.repos==="object")for(let[Z,G]of Object.entries(z.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(cN).filter((q)=>q!==null):[]}}return{version:1,repos:Y}}catch(z){if(z.code==="ENOENT")return dN();throw z}}async function XB(J,z){await IN(wN(J),{recursive:!0});let Y=`${J}.tmp`;await uN(Y,`${JSON.stringify(z,null,2)}
65
- `,"utf8"),await TN(Y,J)}function qB(J,z){return{repoRoot:J,exists:z!==null,nextId:z?.nextId??1,issues:z?.issues??[]}}async function QB(J,z){let Z=(RH.get(J)??Promise.resolve()).then(z),G=Z.then(()=>{return},()=>{return});return RH.set(J,G),G.then(()=>{if(RH.get(J)===G)RH.delete(J)}),Z}class NH{path;constructor(J=gH()){this.path=J}async list(J){let{repoRoot:z,repoKey:Y}=await ZB(J);return QB(this.path,async()=>{let Z=await GB(this.path),G=Z.repos[Y]??null;if(G&&G.repoRoot!==z)G.repoRoot=z,await XB(this.path,Z);return qB(z,G)})}async mirrorTaskDone(J,z){let{repoRoot:Y,repoKey:Z}=await ZB(J);if(!z)return null;return QB(this.path,async()=>{let G=await GB(this.path),X=G.repos[Z];if(!X)return null;let q=X.issues.find((H)=>H.taskId===z);if(!q||q.status==="done")return null;return q.status="done",X.repoRoot=Y,await XB(this.path,G),qB(Y,X)})}async mutate(J,z){let{repoRoot:Y,repoKey:Z}=await ZB(J);if(!z||typeof z!=="object"||Array.isArray(z)||typeof z.type!=="string")throw Error("missing op");return QB(this.path,async()=>{let G=await GB(this.path),X=G.repos[Z];if(!X)X={repoRoot:Y,nextId:1,issues:[]},G.repos[Z]=X;X.repoRoot=Y;let q=z;if(q.type==="create"){if(typeof q.title!=="string"||q.title.trim().length===0)throw Error("create requires a non-empty title");if(q.body!==void 0&&typeof q.body!=="string")throw Error("body must be a string");X.issues=[{id:X.nextId,title:q.title,status:"open",created:nN(),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(!a6(q.status))throw Error(`invalid status: must be one of ${$6.join(", ")}`);let H=X.issues.find((f)=>f.id===q.id);if(!H)throw Error(`no issue #${q.id}`);H.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 H=X.issues.find((f)=>f.id===q.id);if(!H)throw Error(`no issue #${q.id}`);if(typeof q.title==="string")H.title=q.title;if(typeof q.body==="string")H.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 H=X.issues.find((f)=>f.id===q.id);if(!H)throw Error(`no issue #${q.id}`);H.taskId=q.taskId}else if(q.type==="unlink"){if(typeof q.id!=="number")throw Error("unlink requires a numeric id");let H=X.issues.find((f)=>f.id===q.id);if(!H)throw Error(`no issue #${q.id}`);H.taskId=void 0}else if(q.type==="delete"){if(typeof q.id!=="number")throw Error("delete requires a numeric id");let H=X.issues.filter((f)=>f.id!==q.id);if(H.length===X.issues.length)throw Error(`no issue #${q.id}`);X.issues=H}else throw Error(`unknown op type: ${q.type}`);return await XB(this.path,G),qB(Y,X)})}}var HB,$6,RH;var fB=C(()=>{HB=vN(SN),$6=["open","doing","hold","done"];RH=new Map});import{lstat as _6,readdir as aN,realpath as _N,stat as pN}from"fs/promises";import{join as rN,relative as oN,resolve as p6,sep as sN}from"path";import{Readable as tN}from"stream";function e6(J,z={}){let Y=z.entryType||z.type;if(Y==="both")Y=cJ.FILE_DIR_TYPE;if(Y)z.type=Y;if(!J)throw Error("readdirp: root argument is required. Usage: readdirp(root, options)");else if(typeof J!=="string")throw TypeError("readdirp: root argument must be a string. Usage: readdirp(root, options)");else if(Y&&!r6.includes(Y))throw Error(`readdirp: Invalid type passed. Use one of ${r6.join(", ")}`);return z.root=J,new BB(z)}var cJ,jB,t6="READDIRP_RECURSIVE_ERROR",eN,r6,JC,zC,YC=(J)=>eN.has(J.code),ZC,o6=(J)=>!0,s6=(J)=>{if(J===void 0)return o6;if(typeof J==="function")return J;if(typeof J==="string"){let z=J.trim();return(Y)=>Y.basename===z}if(Array.isArray(J)){let z=J.map((Y)=>Y.trim());return(Y)=>z.some((Z)=>Y.basename===Z)}return o6},BB;var J5=C(()=>{cJ={FILE_TYPE:"files",DIR_TYPE:"directories",FILE_DIR_TYPE:"files_directories",EVERYTHING_TYPE:"all"},jB={root:".",fileFilter:(J)=>!0,directoryFilter:(J)=>!0,type:cJ.FILE_TYPE,lstat:!1,depth:2147483648,alwaysStat:!1,highWaterMark:4096};Object.freeze(jB);eN=new Set(["ENOENT","EPERM","EACCES","ELOOP",t6]),r6=[cJ.DIR_TYPE,cJ.EVERYTHING_TYPE,cJ.FILE_DIR_TYPE,cJ.FILE_TYPE],JC=new Set([cJ.DIR_TYPE,cJ.EVERYTHING_TYPE,cJ.FILE_DIR_TYPE]),zC=new Set([cJ.EVERYTHING_TYPE,cJ.FILE_DIR_TYPE,cJ.FILE_TYPE]),ZC=process.platform==="win32";BB=class BB extends tN{parents;reading;parent;_stat;_maxDepth;_wantsDir;_wantsFile;_wantsEverything;_root;_isDirent;_statsProp;_rdOptions;_fileFilter;_directoryFilter;constructor(J={}){super({objectMode:!0,autoDestroy:!0,highWaterMark:J.highWaterMark});let z={...jB,...J},{root:Y,type:Z}=z;this._fileFilter=s6(z.fileFilter),this._directoryFilter=s6(z.directoryFilter);let G=z.lstat?_6:pN;if(ZC)this._stat=(X)=>G(X,{bigint:!0});else this._stat=G;this._maxDepth=z.depth!=null&&Number.isSafeInteger(z.depth)?z.depth:jB.depth,this._wantsDir=Z?JC.has(Z):!1,this._wantsFile=Z?zC.has(Z):!1,this._wantsEverything=Z===cJ.EVERYTHING_TYPE,this._root=p6(Y),this._isDirent=!z.alwaysStat,this._statsProp=this._isDirent?"dirent":"stats",this._rdOptions={encoding:"utf8",withFileTypes:this._isDirent},this.parents=[this._exploreDir(Y,1)],this.reading=!1,this.parent=void 0}async _read(J){if(this.reading)return;this.reading=!0;try{while(!this.destroyed&&J>0){let z=this.parent,Y=z&&z.files;if(Y&&Y.length>0){let{path:Z,depth:G}=z,X=Y.splice(0,J).map((H)=>this._formatEntry(H,Z)),q=await Promise.all(X);for(let H of q){if(!H)continue;if(this.destroyed)return;let f=await this._getEntryType(H);if(f==="directory"&&this._directoryFilter(H)){if(G<=this._maxDepth)this.parents.push(this._exploreDir(H.fullPath,G+1));if(this._wantsDir)this.push(H),J--}else if((f==="file"||this._includeAsFile(H))&&this._fileFilter(H)){if(this._wantsFile)this.push(H),J--}}}else{let Z=this.parents.pop();if(!Z){this.push(null);break}if(this.parent=await Z,this.destroyed)return}}}catch(z){this.destroy(z)}finally{this.reading=!1}}async _exploreDir(J,z){let Y;try{Y=await aN(J,this._rdOptions)}catch(Z){this._onError(Z)}return{files:Y,depth:z,path:J}}async _formatEntry(J,z){let Y,Z=this._isDirent?J.name:J;try{let G=p6(rN(z,Z));Y={path:oN(this._root,G),fullPath:G,basename:Z},Y[this._statsProp]=this._isDirent?J:await this._stat(G)}catch(G){this._onError(G);return}return Y}_onError(J){if(YC(J)&&!this.destroyed)this.emit("warn",J);else this.destroy(J)}async _getEntryType(J){if(!J&&this._statsProp in J)return"";let z=J[this._statsProp];if(z.isFile())return"file";if(z.isDirectory())return"directory";if(z&&z.isSymbolicLink()){let Y=J.fullPath;try{let Z=await _N(Y),G=await _6(Z);if(G.isFile())return"file";if(G.isDirectory()){let X=Z.length;if(Y.startsWith(Z)&&Y.substr(X,1)===sN){let q=Error(`Circular symlink detected: "${Y}" points to "${Z}"`);return q.code=t6,this._onError(q)}return"directory"}}catch(Z){return this._onError(Z),""}}}_includeAsFile(J){let z=J&&J[this._statsProp];return z&&this._wantsEverything&&!z.isDirectory()}}});import{watch as GC,unwatchFile as z5,watchFile as XC}from"fs";import{realpath as WB,lstat as qC,open as QC,stat as Z5}from"fs/promises";import{type as HC}from"os";import*as u1 from"path";function Y5(J,z,Y,Z,G){let X=(q,H)=>{if(Y(J),G(q,H,{watchedPath:J}),H&&J!==H)bH(u1.resolve(J,H),SZ,u1.join(J,H))};try{return GC(J,{persistent:z.persistent},X)}catch(q){Z(q);return}}class LB{fsw;_boundHandleError;constructor(J){this.fsw=J,this._boundHandleError=(z)=>J._handleError(z)}_watchWithNodeFs(J,z){let Y=this.fsw.options,Z=u1.dirname(J),G=u1.basename(J);this.fsw._getWatchedDir(Z).add(G);let q=u1.resolve(J),H={persistent:Y.persistent};if(!z)z=SH;let f;if(Y.usePolling){let j=Y.interval!==Y.binaryInterval;H.interval=j&&LC(G)?Y.binaryInterval:Y.interval,f=OC(J,q,H,{listener:z,rawEmitter:this.fsw._emitRaw})}else f=MC(J,q,H,{listener:z,errHandler:this._boundHandleError,rawEmitter:this.fsw._emitRaw});return f}_handleFile(J,z,Y){if(this.fsw.closed)return;let Z=u1.dirname(J),G=u1.basename(J),X=this.fsw._getWatchedDir(Z),q=z;if(X.has(G))return;let H=async(j,V)=>{if(!this.fsw._throttle(VC,J,5))return;if(!V||V.mtimeMs===0)try{let B=await Z5(J);if(this.fsw.closed)return;let{atimeMs:K,mtimeMs:L}=B;if(!K||K<=L||L!==q.mtimeMs)this.fsw._emit(Cz.CHANGE,J,B);if((jC||BC||WC)&&q.ino!==B.ino){this.fsw._closeFile(j),q=B;let A=this._watchWithNodeFs(J,H);if(A)this.fsw._addPathCloser(j,A)}else q=B}catch(B){this.fsw._remove(Z,G)}else if(X.has(G)){let{atimeMs:B,mtimeMs:K}=V;if(!B||B<=K||K!==q.mtimeMs)this.fsw._emit(Cz.CHANGE,J,V);q=V}},f=this._watchWithNodeFs(J,H);if(!(Y&&this.fsw.options.ignoreInitial)&&this.fsw._isntIgnored(J)){if(!this.fsw._throttle(Cz.ADD,J,0))return;this.fsw._emit(Cz.ADD,J,z)}return f}async _handleSymlink(J,z,Y,Z){if(this.fsw.closed)return;let G=J.fullPath,X=this.fsw._getWatchedDir(z);if(!this.fsw.options.followSymlinks){this.fsw._incrReadyCount();let q;try{q=await WB(Y)}catch(H){return this.fsw._emitReady(),!0}if(this.fsw.closed)return;if(X.has(Z)){if(this.fsw._symlinkPaths.get(G)!==q)this.fsw._symlinkPaths.set(G,q),this.fsw._emit(Cz.CHANGE,Y,J.stats)}else X.add(Z),this.fsw._symlinkPaths.set(G,q),this.fsw._emit(Cz.ADD,Y,J.stats);return this.fsw._emitReady(),!0}if(this.fsw._symlinkPaths.has(G))return!0;this.fsw._symlinkPaths.set(G,!0)}_handleRead(J,z,Y,Z,G,X,q){J=u1.join(J,"");let H=Z?`${J}:${Z}`:J;if(q=this.fsw._throttle("readdir",H,1000),!q)return;let f=this.fsw._getWatchedDir(Y.path),j=new Set,V=this.fsw._readdirp(J,{fileFilter:(B)=>Y.filterPath(B),directoryFilter:(B)=>Y.filterDir(B)});if(!V)return;return V.on(fC,async(B)=>{if(this.fsw.closed){V=void 0;return}let K=B.path,L=u1.join(J,K);if(j.add(K),B.stats.isSymbolicLink()&&await this._handleSymlink(B,J,L,K))return;if(this.fsw.closed){V=void 0;return}if(K===Z||!Z&&!f.has(K))this.fsw._incrReadyCount(),L=u1.join(G,u1.relative(G,L)),this._addToNodeFs(L,z,Y,X+1)}).on(Cz.ERROR,this._boundHandleError),new Promise((B,K)=>{if(!V)return K();V.once(UB,()=>{if(this.fsw.closed){V=void 0;return}let L=q?q.clear():!1;if(B(void 0),f.getChildren().filter((A)=>{return A!==J&&!j.has(A)}).forEach((A)=>{this.fsw._remove(J,A)}),V=void 0,L)this._handleRead(J,!1,Y,Z,G,X,q)})})}async _handleDir(J,z,Y,Z,G,X,q){let H=this.fsw._getWatchedDir(u1.dirname(J)),f=H.has(u1.basename(J));if(!(Y&&this.fsw.options.ignoreInitial)&&!G&&!f)this.fsw._emit(Cz.ADD_DIR,J,z);H.add(u1.basename(J)),this.fsw._getWatchedDir(J);let j,V,B=this.fsw.options.depth;if((B==null||Z<=B)&&!this.fsw._symlinkPaths.has(q)){if(!G){if(await this._handleRead(J,Y,X,G,J,Z,j),this.fsw.closed)return}V=this._watchWithNodeFs(J,(K,L)=>{if(L&&L.mtimeMs===0)return;this._handleRead(K,!1,X,G,J,Z,j)})}return V}async _addToNodeFs(J,z,Y,Z,G){let X=this.fsw._emitReady;if(this.fsw._isIgnored(J)||this.fsw.closed)return X(),!1;let q=this.fsw._getWatchHelpers(J);if(Y)q.filterPath=(H)=>Y.filterPath(H),q.filterDir=(H)=>Y.filterDir(H);try{let H=await KC[q.statMethod](q.watchPath);if(this.fsw.closed)return;if(this.fsw._isIgnored(q.watchPath,H))return X(),!1;let f=this.fsw.options.followSymlinks,j;if(H.isDirectory()){let V=u1.resolve(J),B=f?await WB(J):J;if(this.fsw.closed)return;if(j=await this._handleDir(q.watchPath,H,z,Z,G,q,B),this.fsw.closed)return;if(V!==B&&B!==void 0)this.fsw._symlinkPaths.set(V,B)}else if(H.isSymbolicLink()){let V=f?await WB(J):J;if(this.fsw.closed)return;let B=u1.dirname(q.watchPath);if(this.fsw._getWatchedDir(B).add(q.watchPath),this.fsw._emit(Cz.ADD,q.watchPath,H),j=await this._handleDir(B,H,z,Z,J,q,V),this.fsw.closed)return;if(V!==void 0)this.fsw._symlinkPaths.set(u1.resolve(J),V)}else j=this._handleFile(q.watchPath,H,z);if(X(),j)this.fsw._addPathCloser(J,j);return!1}catch(H){if(this.fsw._handleError(H))return X(),J}}}var fC="data",UB="end",G5="close",SH=()=>{},IH,DB,jC,BC,WC,X5,x1,Cz,VC="watch",KC,SZ="listeners",CH="errHandlers",kG="rawEmitters",UC,DC,LC=(J)=>DC.has(u1.extname(J).slice(1).toLowerCase()),KB=(J,z)=>{if(J instanceof Set)J.forEach(z);else z(J)},eX=(J,z,Y)=>{let Z=J[z];if(!(Z instanceof Set))J[z]=Z=new Set([Z]);Z.add(Y)},FC=(J)=>(z)=>{let Y=J[z];if(Y instanceof Set)Y.clear();else delete J[z]},Jq=(J,z,Y)=>{let Z=J[z];if(Z instanceof Set)Z.delete(Y);else if(Z===Y)delete J[z]},q5=(J)=>J instanceof Set?J.size===0:!J,kH,bH=(J,z,Y,Z,G)=>{let X=kH.get(J);if(!X)return;KB(X[z],(q)=>{q(Y,Z,G)})},MC=(J,z,Y,Z)=>{let{listener:G,errHandler:X,rawEmitter:q}=Z,H=kH.get(z),f;if(!Y.persistent){if(f=Y5(J,Y,G,X,q),!f)return;return f.close.bind(f)}if(H)eX(H,SZ,G),eX(H,CH,X),eX(H,kG,q);else{if(f=Y5(J,Y,bH.bind(null,z,SZ),X,bH.bind(null,z,kG)),!f)return;f.on(Cz.ERROR,async(j)=>{let V=bH.bind(null,z,CH);if(H)H.watcherUnusable=!0;if(DB&&j.code==="EPERM")try{await(await QC(J,"r")).close(),V(j)}catch(B){}else V(j)}),H={listeners:G,errHandlers:X,rawEmitters:q,watcher:f},kH.set(z,H)}return()=>{if(Jq(H,SZ,G),Jq(H,CH,X),Jq(H,kG,q),q5(H.listeners))H.watcher.close(),kH.delete(z),UC.forEach(FC(H)),H.watcher=void 0,Object.freeze(H)}},VB,OC=(J,z,Y,Z)=>{let{listener:G,rawEmitter:X}=Z,q=VB.get(z),H=q&&q.options;if(H&&(H.persistent<Y.persistent||H.interval>Y.interval))z5(z),q=void 0;if(q)eX(q,SZ,G),eX(q,kG,X);else q={listeners:G,rawEmitters:X,options:Y,watcher:XC(z,Y,(f,j)=>{KB(q.rawEmitters,(B)=>{B(Cz.CHANGE,z,{curr:f,prev:j})});let V=f.mtimeMs;if(f.size!==j.size||V>j.mtimeMs||V===0)KB(q.listeners,(B)=>B(J,f))})},VB.set(z,q);return()=>{if(Jq(q,SZ,G),Jq(q,kG,X),q5(q.listeners))VB.delete(z),z5(z),q.options=q.watcher=void 0,Object.freeze(q)}};var Q5=C(()=>{IH=process.platform,DB=IH==="win32",jC=IH==="darwin",BC=IH==="linux",WC=IH==="freebsd",X5=HC()==="OS400",x1={ALL:"all",READY:"ready",ADD:"add",CHANGE:"change",ADD_DIR:"addDir",UNLINK:"unlink",UNLINK_DIR:"unlinkDir",RAW:"raw",ERROR:"error"},Cz=x1,KC={lstat:qC,stat:Z5},UC=[SZ,CH,kG],DC=new Set(["3dm","3ds","3g2","3gp","7z","a","aac","adp","afdesign","afphoto","afpub","ai","aif","aiff","alz","ape","apk","appimage","ar","arj","asf","au","avi","bak","baml","bh","bin","bk","bmp","btif","bz2","bzip2","cab","caf","cgm","class","cmx","cpio","cr2","cur","dat","dcm","deb","dex","djvu","dll","dmg","dng","doc","docm","docx","dot","dotm","dra","DS_Store","dsk","dts","dtshd","dvb","dwg","dxf","ecelp4800","ecelp7470","ecelp9600","egg","eol","eot","epub","exe","f4v","fbs","fh","fla","flac","flatpak","fli","flv","fpx","fst","fvt","g3","gh","gif","graffle","gz","gzip","h261","h263","h264","icns","ico","ief","img","ipa","iso","jar","jpeg","jpg","jpgv","jpm","jxr","key","ktx","lha","lib","lvp","lz","lzh","lzma","lzo","m3u","m4a","m4v","mar","mdi","mht","mid","midi","mj2","mka","mkv","mmr","mng","mobi","mov","movie","mp3","mp4","mp4a","mpeg","mpg","mpga","mxu","nef","npx","numbers","nupkg","o","odp","ods","odt","oga","ogg","ogv","otf","ott","pages","pbm","pcx","pdb","pdf","pea","pgm","pic","png","pnm","pot","potm","potx","ppa","ppam","ppm","pps","ppsm","ppsx","ppt","pptm","pptx","psd","pya","pyc","pyo","pyv","qt","rar","ras","raw","resources","rgb","rip","rlc","rmf","rmvb","rpm","rtf","rz","s3m","s7z","scpt","sgi","shar","snap","sil","sketch","slk","smv","snk","so","stl","suo","sub","swf","tar","tbz","tbz2","tga","tgz","thmx","tif","tiff","tlz","ttc","ttf","txz","udf","uvh","uvi","uvm","uvp","uvs","uvu","viv","vob","war","wav","wax","wbmp","wdp","weba","webm","webp","whl","wim","wm","wma","wmv","wmx","woff","woff2","wrm","wvx","xbm","xif","xla","xlam","xls","xlsb","xlsm","xlsx","xlt","xltm","xltx","xm","xmind","xpi","xpm","xwd","xz","z","zip","zipx"]),kH=new Map;VB=new Map});import{EventEmitter as AC}from"events";import{stat as RC,Stats as qd}from"fs";import{readdir as gC,stat as NC}from"fs/promises";import*as H1 from"path";function yH(J){return Array.isArray(J)?J:[J]}function TC(J){if(typeof J==="function")return J;if(typeof J==="string")return(z)=>J===z;if(J instanceof RegExp)return(z)=>J.test(z);if(typeof J==="object"&&J!==null)return(z)=>{if(J.path===z)return!0;if(J.recursive){let Y=H1.relative(J.path,z);if(!Y)return!1;return!Y.startsWith("..")&&!H1.isAbsolute(Y)}return!1};return()=>!1}function xC(J){if(typeof J!=="string")throw Error("string expected");J=H1.normalize(J),J=J.replace(/\\/g,"/");let z=!1;if(J.startsWith("//"))z=!0;if(J=J.replace(V5,"/"),z)J="/"+J;return J}function H5(J,z,Y){let Z=xC(z);for(let G=0;G<J.length;G++){let X=J[G];if(X(Z,Y))return!0}return!1}function uC(J,z){if(J==null)throw TypeError("anymatch: specify first argument");let Z=yH(J).map((G)=>TC(G));if(z==null)return(G,X)=>{return H5(Z,G,X)};return H5(Z,z)}class U5{path;_removeWatcher;items;constructor(J,z){this.path=J,this._removeWatcher=z,this.items=new Set}add(J){let{items:z}=this;if(!z)return;if(J!==W5&&J!==kC)z.add(J)}async remove(J){let{items:z}=this;if(!z)return;if(z.delete(J),z.size>0)return;let Y=this.path;try{await gC(Y)}catch(Z){if(this._removeWatcher)this._removeWatcher(H1.dirname(Y),H1.basename(Y))}}has(J){let{items:z}=this;if(!z)return;return z.has(J)}getChildren(){let{items:J}=this;if(!J)return[];return[...J.values()]}dispose(){this.items.clear(),this.path="",this._removeWatcher=SH,this.items=wC,Object.freeze(this)}}class D5{fsw;path;watchPath;fullWatchPath;dirParts;followSymlinks;statMethod;constructor(J,z,Y){this.fsw=Y;let Z=J;this.path=J=J.replace(yC,""),this.watchPath=Z,this.fullWatchPath=H1.resolve(Z),this.dirParts=[],this.dirParts.forEach((G)=>{if(G.length>1)G.pop()}),this.followSymlinks=z,this.statMethod=z?PC:hC}entryPath(J){return H1.join(this.watchPath,H1.relative(this.watchPath,J.fullPath))}filterPath(J){let{stats:z}=J;if(z&&z.isSymbolicLink())return this.filterDir(J);let Y=this.entryPath(J);return this.fsw._isntIgnored(Y,z)&&this.fsw._hasReadPermissions(z)}filterDir(J){return this.fsw._isntIgnored(this.entryPath(J),J.stats)}}function F5(J,z={}){let Y=new L5(z);return Y.add(J),Y}var FB="/",CC="//",W5=".",kC="..",bC="string",SC,V5,IC,yC,MB=(J)=>typeof J==="object"&&J!==null&&!(J instanceof RegExp),f5=(J)=>{let z=yH(J).flat();if(!z.every((Y)=>typeof Y===bC))throw TypeError(`Non-string provided as watch path: ${z}`);return z.map(K5)},j5=(J)=>{let z=J.replace(SC,FB),Y=!1;if(z.startsWith(CC))Y=!0;if(z=z.replace(V5,FB),Y)z=FB+z;return z},K5=(J)=>j5(H1.normalize(j5(J))),B5=(J="")=>(z)=>{if(typeof z==="string")return K5(H1.isAbsolute(z)?z:H1.join(J,z));else return z},EC=(J,z)=>{if(H1.isAbsolute(J))return J;return H1.join(z,J)},wC,PC="stat",hC="lstat",L5;var M5=C(()=>{J5();Q5();/*! chokidar - MIT License (c) 2012 Paul Miller (paulmillr.com) */SC=/\\/g,V5=/\/\//g,IC=/\..*\.(sw[px])$|~$|\.subl.*\.tmp/,yC=/^\.[/\\]/;wC=Object.freeze(new Set);L5=class L5 extends AC{closed;options;_closers;_ignoredPaths;_throttled;_streams;_symlinkPaths;_watched;_pendingWrites;_pendingUnlinks;_readyCount;_emitReady;_closePromise;_userIgnored;_readyEmitted;_emitRaw;_boundRemove;_nodeFsHandler;constructor(J={}){super();this.closed=!1,this._closers=new Map,this._ignoredPaths=new Set,this._throttled=new Map,this._streams=new Set,this._symlinkPaths=new Map,this._watched=new Map,this._pendingWrites=new Map,this._pendingUnlinks=new Map,this._readyCount=0,this._readyEmitted=!1;let z=J.awaitWriteFinish,Y={stabilityThreshold:2000,pollInterval:100},Z={persistent:!0,ignoreInitial:!1,ignorePermissionErrors:!1,interval:100,binaryInterval:300,followSymlinks:!0,usePolling:!1,atomic:!0,...J,ignored:J.ignored?yH(J.ignored):yH([]),awaitWriteFinish:z===!0?Y:typeof z==="object"?{...Y,...z}:!1};if(X5)Z.usePolling=!0;if(Z.atomic===void 0)Z.atomic=!Z.usePolling;let G=process.env.CHOKIDAR_USEPOLLING;if(G!==void 0){let H=G.toLowerCase();if(H==="false"||H==="0")Z.usePolling=!1;else if(H==="true"||H==="1")Z.usePolling=!0;else Z.usePolling=!!H}let X=process.env.CHOKIDAR_INTERVAL;if(X)Z.interval=Number.parseInt(X,10);let q=0;this._emitReady=()=>{if(q++,q>=this._readyCount)this._emitReady=SH,this._readyEmitted=!0,process.nextTick(()=>this.emit(x1.READY))},this._emitRaw=(...H)=>this.emit(x1.RAW,...H),this._boundRemove=this._remove.bind(this),this.options=Z,this._nodeFsHandler=new LB(this),Object.freeze(Z)}_addIgnoredPath(J){if(MB(J)){for(let z of this._ignoredPaths)if(MB(z)&&z.path===J.path&&z.recursive===J.recursive)return}this._ignoredPaths.add(J)}_removeIgnoredPath(J){if(this._ignoredPaths.delete(J),typeof J==="string"){for(let z of this._ignoredPaths)if(MB(z)&&z.path===J)this._ignoredPaths.delete(z)}}add(J,z,Y){let{cwd:Z}=this.options;this.closed=!1,this._closePromise=void 0;let G=f5(J);if(Z)G=G.map((X)=>{return EC(X,Z)});if(G.forEach((X)=>{this._removeIgnoredPath(X)}),this._userIgnored=void 0,!this._readyCount)this._readyCount=0;return this._readyCount+=G.length,Promise.all(G.map(async(X)=>{let q=await this._nodeFsHandler._addToNodeFs(X,!Y,void 0,0,z);if(q)this._emitReady();return q})).then((X)=>{if(this.closed)return;X.forEach((q)=>{if(q)this.add(H1.dirname(q),H1.basename(z||q))})}),this}unwatch(J){if(this.closed)return this;let z=f5(J),{cwd:Y}=this.options;return z.forEach((Z)=>{if(!H1.isAbsolute(Z)&&!this._closers.has(Z)){if(Y)Z=H1.join(Y,Z);Z=H1.resolve(Z)}if(this._closePath(Z),this._addIgnoredPath(Z),this._watched.has(Z))this._addIgnoredPath({path:Z,recursive:!0});this._userIgnored=void 0}),this}close(){if(this._closePromise)return this._closePromise;this.closed=!0,this.removeAllListeners();let J=[];return this._closers.forEach((z)=>z.forEach((Y)=>{let Z=Y();if(Z instanceof Promise)J.push(Z)})),this._streams.forEach((z)=>z.destroy()),this._userIgnored=void 0,this._readyCount=0,this._readyEmitted=!1,this._watched.forEach((z)=>z.dispose()),this._closers.clear(),this._watched.clear(),this._streams.clear(),this._symlinkPaths.clear(),this._throttled.clear(),this._closePromise=J.length?Promise.all(J).then(()=>{return}):Promise.resolve(),this._closePromise}getWatched(){let J={};return this._watched.forEach((z,Y)=>{let G=(this.options.cwd?H1.relative(this.options.cwd,Y):Y)||W5;J[G]=z.getChildren().sort()}),J}emitWithAll(J,z){if(this.emit(J,...z),J!==x1.ERROR)this.emit(x1.ALL,J,...z)}async _emit(J,z,Y){if(this.closed)return;let Z=this.options;if(DB)z=H1.normalize(z);if(Z.cwd)z=H1.relative(Z.cwd,z);let G=[z];if(Y!=null)G.push(Y);let X=Z.awaitWriteFinish,q;if(X&&(q=this._pendingWrites.get(z)))return q.lastChange=new Date,this;if(Z.atomic){if(J===x1.UNLINK)return this._pendingUnlinks.set(z,[J,...G]),setTimeout(()=>{this._pendingUnlinks.forEach((H,f)=>{this.emit(...H),this.emit(x1.ALL,...H),this._pendingUnlinks.delete(f)})},typeof Z.atomic==="number"?Z.atomic:100),this;if(J===x1.ADD&&this._pendingUnlinks.has(z))J=x1.CHANGE,this._pendingUnlinks.delete(z)}if(X&&(J===x1.ADD||J===x1.CHANGE)&&this._readyEmitted){let H=(f,j)=>{if(f)J=x1.ERROR,G[0]=f,this.emitWithAll(J,G);else if(j){if(G.length>1)G[1]=j;else G.push(j);this.emitWithAll(J,G)}};return this._awaitWriteFinish(z,X.stabilityThreshold,J,H),this}if(J===x1.CHANGE){if(!this._throttle(x1.CHANGE,z,50))return this}if(Z.alwaysStat&&Y===void 0&&(J===x1.ADD||J===x1.ADD_DIR||J===x1.CHANGE)){let H=Z.cwd?H1.join(Z.cwd,z):z,f;try{f=await NC(H)}catch(j){}if(!f||this.closed)return;G.push(f)}return this.emitWithAll(J,G),this}_handleError(J){let z=J&&J.code;if(J&&z!=="ENOENT"&&z!=="ENOTDIR"&&(!this.options.ignorePermissionErrors||z!=="EPERM"&&z!=="EACCES"))this.emit(x1.ERROR,J);return J||this.closed}_throttle(J,z,Y){if(!this._throttled.has(J))this._throttled.set(J,new Map);let Z=this._throttled.get(J);if(!Z)throw Error("invalid throttle");let G=Z.get(z);if(G)return G.count++,!1;let X,q=()=>{let f=Z.get(z),j=f?f.count:0;if(Z.delete(z),clearTimeout(X),f)clearTimeout(f.timeoutObject);return j};X=setTimeout(q,Y);let H={timeoutObject:X,clear:q,count:0};return Z.set(z,H),H}_incrReadyCount(){return this._readyCount++}_awaitWriteFinish(J,z,Y,Z){let G=this.options.awaitWriteFinish;if(typeof G!=="object")return;let X=G.pollInterval,q,H=J;if(this.options.cwd&&!H1.isAbsolute(J))H=H1.join(this.options.cwd,J);let f=new Date,j=this._pendingWrites;function V(B){RC(H,(K,L)=>{if(K||!j.has(J)){if(K&&K.code!=="ENOENT")Z(K);return}let A=Number(new Date);if(B&&L.size!==B.size)j.get(J).lastChange=A;let O=j.get(J);if(A-O.lastChange>=z)j.delete(J),Z(void 0,L);else q=setTimeout(V,X,L)})}if(!j.has(J))j.set(J,{lastChange:f,cancelWait:()=>{return j.delete(J),clearTimeout(q),Y}}),q=setTimeout(V,X)}_isIgnored(J,z){if(this.options.atomic&&IC.test(J))return!0;if(!this._userIgnored){let{cwd:Y}=this.options,G=(this.options.ignored||[]).map(B5(Y)),q=[...[...this._ignoredPaths].map(B5(Y)),...G];this._userIgnored=uC(q,void 0)}return this._userIgnored(J,z)}_isntIgnored(J,z){return!this._isIgnored(J,z)}_getWatchHelpers(J){return new D5(J,this.options.followSymlinks,this)}_getWatchedDir(J){let z=H1.resolve(J);if(!this._watched.has(z))this._watched.set(z,new U5(z,this._boundRemove));return this._watched.get(z)}_hasReadPermissions(J){if(this.options.ignorePermissionErrors)return!0;return Boolean(Number(J.mode)&256)}_remove(J,z,Y){let Z=H1.join(J,z),G=H1.resolve(Z);if(Y=Y!=null?Y:this._watched.has(Z)||this._watched.has(G),!this._throttle("remove",Z,100))return;if(!Y&&this._watched.size===1)this.add(J,z,!0);this._getWatchedDir(Z).getChildren().forEach((B)=>this._remove(Z,B));let H=this._getWatchedDir(J),f=H.has(z);if(H.remove(z),this._symlinkPaths.has(G))this._symlinkPaths.delete(G);let j=Z;if(this.options.cwd)j=H1.relative(this.options.cwd,Z);if(this.options.awaitWriteFinish&&this._pendingWrites.has(j)){if(this._pendingWrites.get(j).cancelWait()===x1.ADD)return}this._watched.delete(Z),this._watched.delete(G);let V=Y?x1.UNLINK_DIR:x1.UNLINK;if(f&&!this._isIgnored(Z))this._emit(V,Z);this._closePath(Z)}_closePath(J){this._closeFile(J);let z=H1.dirname(J);this._getWatchedDir(z).remove(H1.basename(J))}_closeFile(J){let z=this._closers.get(J);if(!z)return;z.forEach((Y)=>Y()),this._closers.delete(J)}_addPathCloser(J,z){if(!z)return;let Y=this._closers.get(J);if(!Y)Y=[],this._closers.set(J,Y);Y.push(z)}_readdirp(J,z){if(this.closed)return;let Y={type:x1.ALL,alwaysStat:!0,lstat:!0,...z,depth:0},Z=e6(J,Y);return this._streams.add(Z),Z.once(G5,()=>{Z=void 0}),Z.once(UB,()=>{if(Z)this._streams.delete(Z),Z=void 0}),Z}}});import{mkdirSync as vC,statSync as mC}from"fs";import{basename as O5,dirname as cC,join as dC}from"path";function TH(J){if(J.debounceMs<=0)return()=>{};let z=cC(J.filePath),Y=new Set([O5(J.filePath),...J.matchBasenames??[]]),Z=null,G=null,X=!1,q=()=>{try{J.onTrigger()}catch(V){J.onError(V)}},H=()=>{if(Z)clearTimeout(Z);Z=setTimeout(()=>{Z=null,q()},J.debounceMs),Z.unref?.()},f=(V)=>{if(!Y.has(O5(V)))return;H()},j=(V)=>{try{let B=mC(dC(z,V));return`${B.mtimeMs}:${B.size}`}catch{return null}};try{vC(z,{recursive:!0});let V=new Map;for(let B of Y)V.set(B,j(B));G=F5(z,{depth:0,ignoreInitial:!0}),G.on("add",f),G.on("change",f),G.on("unlink",f),G.on("error",J.onError),G.once("ready",()=>{for(let B of Y)if(j(B)!==V.get(B)){H();break}})}catch(V){J.onError(V)}return()=>{if(X)return;if(X=!0,Z)clearTimeout(Z),Z=null;let V=G;G=null,V?.close().catch(J.onError)}}var OB=C(()=>{M5()});import{homedir as nC}from"os";import{basename as iC,join as lC}from"path";function RB(J=process.env.KOBE_HOME_DIR??nC()){return lC(J,".kobe","settings","keybindings.yaml")}function A5(J,z={}){let Y=z.debounceMs??AB;if(Y<=0)return()=>{};let Z=z.path??RB(),G=iC(Z),X=G.replace(/\.yaml$/,".yml"),q=0;return J.publish("keybindings",{rev:q}),TH({filePath:Z,matchBasenames:[G,X],debounceMs:Y,onTrigger:()=>{try{q+=1,J.publish("keybindings",{rev:q})}catch(f){y1("keybindings-watcher",f)}},onError:(f)=>y1("keybindings-watcher",f)})}var AB=200;var R5=C(()=>{OB()});class gB{clients;idleGraceMs;onIdleStop;schedule;log;cancelIdle=null;stopping=!1;constructor(J){this.clients=J.clients,this.idleGraceMs=J.idleGraceMs,this.onIdleStop=J.onIdleStop,this.schedule=J.schedule??$C,this.log=J.log??dz}guiCount(){let J=0;for(let z of this.clients())if(z.holdsLifetime)J++;return J}hasSubscribers(){for(let J of this.clients())if(J.subscribed)return!0;return!1}isStopping(){return this.stopping}markStopping(){this.stopping=!0,this.clearIdle()}guiAttached(){this.clearIdle()}clientDisconnected(J){if(J)this.maybeArm()}clearIdle(){if(this.cancelIdle)this.cancelIdle(),this.cancelIdle=null}maybeArm(){if(this.stopping||this.guiCount()>0)return;this.clearIdle(),this.log("idle",`last gui gone \u2014 arming ${this.idleGraceMs}ms idle-stop grace`),this.cancelIdle=this.schedule(()=>{if(this.cancelIdle=null,this.stopping||this.guiCount()>0)return;this.log("idle","grace elapsed with no gui \u2014 self-stopping"),this.onIdleStop()},this.idleGraceMs)}}var $C=(J,z)=>{let Y=setTimeout(J,z);return Y.unref?.(),()=>clearTimeout(Y)};var g5=()=>{};import{spawn as aC}from"child_process";function Jk(J,z,Y){return new Promise((Z)=>{let G="",X="",q=!1,H=(j,V)=>{if(q)return;q=!0,Z({status:j,stdout:G,stderr:X,spawnError:V})},f=aC("gh",J.slice(),{cwd:z,stdio:["ignore","pipe","pipe"],signal:Y,killSignal:"SIGKILL"});f.stdout?.on("data",(j)=>{G+=String(j)}),f.stderr?.on("data",(j)=>{X+=String(j)}),f.on("error",()=>H(null,!Y.aborted)),f.on("close",(j)=>H(j,!1))})}function Yk(J){if(J.archived)return!1;if(J.kind==="main")return!1;if(!J.branch||!J.worktreePath)return!1;if(_1(J.repo)||_1(J.worktreePath))return!1;return!0}async function Zk(J,z){let Y=z.tickMs??zq,Z=z.rand,G={tickMs:Y,settledMs:pC,noPrMs:_C,noRemoteMs:sC,failureBaseMs:rC,failureCapMs:oC,jitterRatio:tC},X=[];for(let q of J.listTasks()){if(!Yk(q)){z.schedule.delete(q.id);continue}let H=z.schedule.get(q.id);if(H&&z.now<H.nextAllowedAt)continue;let f=H?.failures??0;try{let j=await z.run(q.worktreePath,q.branch);if(j.kind==="error"){dz("pr-status-poller",`gh pr view failed (${j.error}) for task ${q.id} [${q.branch}] \u2014 keeping last PR status, backing off`),z.schedule.set(q.id,NX({kind:"error",error:j.error},f,z.now,G,Z));continue}if(j.kind==="empty"){z.schedule.set(q.id,NX({kind:"empty"},f,z.now,G,Z));continue}let V=p7(j.view,z.at),B=J.getTask(q.id);if(!B){z.schedule.delete(q.id);continue}if(!wQ(B.prStatus,V??void 0))await J.setPRStatus(q.id,V),X.push(q.id);let K=V?.lifecycle==="merged"||V?.lifecycle==="closed";z.schedule.set(q.id,NX({kind:"pr",settled:K},f,z.now,G,Z))}catch(j){y1("pr-status-poller",j),z.schedule.set(q.id,NX({kind:"error",error:"network"},f,z.now,G,Z))}}return X}function N5(J,z=zq,Y,Z=zk){if(z<=0)return()=>{};let G=new Map,X=!1,H=setInterval(()=>{if(Y&&!Y())return;if(X)return;X=!0,Zk(J,{run:Z,now:Date.now(),at:new Date().toISOString(),schedule:G,tickMs:z}).catch((f)=>y1("pr-status-poller",f)).finally(()=>{X=!1})},z);return H.unref?.(),()=>clearInterval(H)}var zq=30000,_C=300000,pC=600000,rC,oC=900000,sC=1800000,tC=0.2,eC=1e4,zk=async(J,z)=>{let Y=new AbortController,Z=!1,G=setTimeout(()=>{Z=!0,Y.abort()},eC);try{let X=await Jk(["pr","view",z,"--json",_7],J,Y.signal);if(X.status===0&&!Z)try{let q=JSON.parse(X.stdout);return typeof q.number==="number"?{kind:"pr",view:q}:{kind:"empty"}}catch{return t8({parseError:!0})}return t8({spawnError:X.spawnError,timedOut:Z,exitCode:X.status,stderr:X.stderr})}finally{clearTimeout(G)}};var C5=C(()=>{e8();A1();rC=zq});function Qk(J,z){return J.mtimeMs===z.mtimeMs&&J.completionId===z.completionId&&J.completionAt===z.completionAt}async function Hk(J,z,Y,Z){let G=await tZ(z,J),X=await Y.latestCompletion(J);return{mtimeMs:G,completionId:X?.id??null,completionAt:X?.timestampMs??0}}function fk(J){let z=new Map;for(let Y of J){if(Y.archived)continue;if(!Y.worktreePath)continue;if(_1(Y.repo)||_1(Y.worktreePath))continue;if(z.has(Y.worktreePath))continue;z.set(Y.worktreePath,Y.vendor??p1)}return z}class k5{orch;bus;options;entries=new Map;stopped=!1;constructor(J,z,Y={}){this.orch=J;this.bus=z;this.options=Y}tick(){if(this.stopped)return;if(this.options.hasSubscribers&&!this.options.hasSubscribers())return;try{let J=fk(this.orch.listTasks()),z=!1;for(let Y of this.entries.keys()){if(J.has(Y))continue;if(this.entries.get(Y)?.value)z=!0;this.entries.delete(Y)}if(z)this.publish();for(let[Y,Z]of J)this.maybeCollect(Y,Z)}catch(J){y1("transcript-activity",J)}}stop(){this.stopped=!0}maybeCollect(J,z){let Y=this.entries.get(J);if(!Y)Y={inFlight:!1,nextAllowedAt:0,vendor:z,detector:LX(z)},this.entries.set(J,Y);else if(Y.vendor!==z)Y.vendor=z,Y.detector=LX(z);let Z=this.options.cadence??{timeoutMs:Gk,slowRetryMs:Xk,minIntervalMs:qk},G=this.options.run??Hk,X=Y;ZG(X,Z,(q)=>G(J,X.vendor,X.detector,q),(q)=>{if(this.stopped)return;if(this.entries.get(J)!==X)return;if(X.value&&Qk(X.value,q))return;X.value=q,this.publish()})}publish(){let J={};for(let[z,Y]of this.entries)if(Y.value)J[z]=Y.value;this.bus.publish("transcript.activity",{activity:J})}}function b5(J,z,Y=NB,Z){if(Y<=0)return()=>{};let G=new k5(J,z,{hasSubscribers:Z});G.tick();let X=setInterval(()=>G.tick(),Y);return X.unref?.(),()=>{clearInterval(X),G.stop()}}var NB=1500,Gk=4000,Xk=60000,qk=1500;var S5=C(()=>{FQ();GG();MQ();A1();tJ()});import{readFileSync as jk}from"fs";import{homedir as Bk}from"os";import{basename as Wk,join as Vk}from"path";function kB(J=process.env.KOBE_HOME_DIR??Bk()){return Vk(J,".config","kobe","state.json")}function I5(J){let z={};try{let j=JSON.parse(jk(J,"utf8"));if(j&&typeof j==="object"&&!Array.isArray(j))z=j}catch{}let Y=typeof z.activeTheme==="string"&&z.activeTheme.length>0?z.activeTheme:"claude",Z=z.transparentBackground===!0,G=typeof z.focusAccent==="string"&&Uk.includes(z.focusAccent)?z.focusAccent:null,X=z.activeSortMode==="recent"?"recent":"default",q=z["tasksPane.keysCollapsed"]===!0,H=typeof z["tasksPane.projectFilter"]==="string"&&z["tasksPane.projectFilter"].length>0?z["tasksPane.projectFilter"]:null,f=typeof z.locale==="string"&&z.locale.length>0?z.locale:"en";return{theme:Y,transparentBackground:Z,focusAccent:G,locale:f,sortMode:X,keysCollapsed:q,projectFilter:H}}function Dk(J,z){return J.theme===z.theme&&J.transparentBackground===z.transparentBackground&&J.focusAccent===z.focusAccent&&J.locale===z.locale&&J.sortMode===z.sortMode&&J.keysCollapsed===z.keysCollapsed&&J.projectFilter===z.projectFilter}function y5(J,z={}){let Y=z.debounceMs??CB;if(Y<=0)return()=>{};let Z=z.pollMs??Kk,G=z.statePath??kB(),X=Wk(G),q=I5(G);return J.publish("ui-prefs",q),TH({filePath:G,matchBasenames:[X],debounceMs:Y,pollMs:Z,onTrigger:()=>{try{let f=I5(G);if(Dk(q,f))return;q=f,J.publish("ui-prefs",f)}catch(f){y1("ui-prefs-watcher",f)}},onError:(f)=>y1("ui-prefs-watcher",f)})}var CB=200,Kk=250,Uk;var T5=C(()=>{OB();Uk=["primary","success","info"]});function bG(J){return IZ.includes(J)?J:"auto"}var IZ,x5,HY="editor.kind",cY="editor.customCommand",xH="auto";var uH=C(()=>{IZ=["auto","vim","nvim","nano","emacs","custom"],x5=["nvim","vim","emacs","nano"]});function TZ(J){return J==="taskpanel"?"taskpanel":"chattab"}var fY="settings.surface",yZ="chattab";function u5(J){return J>="0"&&J<="7"}function w5(J,z){let Y=[],Z="",G=()=>{if(Z.length>0){for(let q of Lk.encode(Z))Y.push(q);Z=""}},X=z+1;while(X<J.length){let q=J[X];if(q==='"'){X++;break}if(q==="\\"){let H=J[X+1];if(H===void 0){Z+="\\",X++;continue}switch(H){case"a":G(),Y.push(7),X+=2;break;case"b":G(),Y.push(8),X+=2;break;case"t":G(),Y.push(9),X+=2;break;case"n":G(),Y.push(10),X+=2;break;case"v":G(),Y.push(11),X+=2;break;case"f":G(),Y.push(12),X+=2;break;case"r":G(),Y.push(13),X+=2;break;case'"':Z+='"',X+=2;break;case"\\":Z+="\\",X+=2;break;default:if(u5(H)){let f="",j=X+1;while(j<J.length&&f.length<3&&u5(J[j]))f+=J[j],j++;G(),Y.push(Number.parseInt(f,8)&255),X=j}else Z+=H,X+=2;break}}else Z+=q,X++}return G(),{value:Fk.decode(new Uint8Array(Y)),end:X}}function xZ(J){if(J.length===0||J[0]!=='"')return J;return w5(J,0).value}function P5(J,z){if(J[0]==='"'){let Z=w5(J,0);if(J.startsWith(z,Z.end))return{orig:Z.value,neu:xZ(J.slice(Z.end+z.length))};return null}let Y=J.indexOf(z);if(Y<0)return null;return{orig:J.slice(0,Y),neu:xZ(J.slice(Y+z.length))}}function Mk(J){let z=J.indexOf("{");if(z>=0){let Z=J.indexOf("}",z),G=J.indexOf(" => ",z);if(Z>z&&G>=0&&G<Z){let X=J.slice(0,z),q=J.slice(z+1,G),H=J.slice(G+4,Z),f=J.slice(Z+1);return{path:X+H+f,origPath:X+q+f}}}let Y=P5(J," => ");if(Y)return{path:Y.neu,origPath:Y.orig};return{path:xZ(J)}}function EH(J){let z=[];for(let Y of J.split(`
66
- `)){let Z=Y.replace(/\r$/,"");if(Z.length<4)continue;if(Z.startsWith("##"))continue;let G=Z[0],X=Z[1];if(Z[2]!==" ")continue;let q=Z.slice(3);if(G==="R"||G==="C"||X==="R"||X==="C"){let H=P5(q," -> ");if(H){z.push({x:G,y:X,path:H.neu,origPath:H.orig});continue}}z.push({x:G,y:X,path:xZ(q)})}return z}function E5(J){if(J==="-")return null;let z=Number.parseInt(J,10);return Number.isNaN(z)?null:z}function h5(J){let z=[];for(let Y of J.split(`
67
- `)){let Z=Y.replace(/\r$/,"");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(X+1);if(q.length===0)continue;let H=Mk(q);if(H.path.length===0)continue;z.push({path:H.path,...H.origPath!==void 0?{origPath:H.origPath}:{},added:E5(Z.slice(0,G)),deleted:E5(Z.slice(G+1,X))})}return z}var Lk,Fk;var wH=C(()=>{Lk=new TextEncoder,Fk=new TextDecoder});function dJ(J=process.env){return{...J,...bB}}var bB;var dY=C(()=>{bB={GIT_OPTIONAL_LOCKS:"0"}});async function SG(J,z,Y={}){if(!J)return{stdout:"",stderr:"worktreePath is required",status:-1};let Z=(Y.execForPath??XY)(J),G=Y.timeoutMs&&Y.timeoutMs>0?new AbortController:null,X=!1,q=G?setTimeout(()=>{X=!0,G.abort()},Y.timeoutMs):null,H=G&&Y.signal?AbortSignal.any([G.signal,Y.signal]):G?.signal??Y.signal,f;try{f=await Z.run(["git",...z],{cwd:J,env:bB,signal:H})}catch(j){if(q)clearTimeout(q);return{stdout:"",stderr:j instanceof Error?j.message:String(j),status:-1}}if(q)clearTimeout(q);if(X&&f.exitCode===-1&&!f.stderr)return{stdout:f.stdout,stderr:`git ${z.join(" ")} timed out after ${Y.timeoutMs}ms`,status:-1};return{stdout:f.stdout,stderr:f.stderr,status:f.exitCode}}function Ok(J,z){if(!J||!z||z.startsWith("/"))return null;let Y=z.split("/");if(Y.some((Z)=>Z===".."))return null;return`${J.replace(/\/+$/,"")}/${Y.filter(Boolean).join("/")}`}async function v5(J,z,Y={}){let Z=Ok(J,z);if(!Z)return null;let G=(Y.execForPath??XY)(J);try{return await G.readFile(Z)}catch{return null}}var PH=C(()=>{Fz();dY()});import{statSync as Ak}from"fs";async function Yq(J,z){let Y=await SG(J,z,{timeoutMs:Rk}),Z=Y.status??-1;return{ok:Z===0,stdout:Y.stdout,stderr:Y.stderr,code:Z}}function Nk(J){switch(J){case"M":return"modified";case"A":return"added";case"D":return"deleted";case"R":return"renamed";case"C":return"copied";case"T":return"type changed";case"U":return"unmerged";case"?":return"untracked";default:return"changed"}}function m5(J){if(J==="/dev/null")return null;let z=J;if(z.startsWith('"'))z=xZ(z);else{let Y=z.indexOf("\t");if(Y>=0)z=z.slice(0,Y)}if(z.startsWith("a/")||z.startsWith("b/"))z=z.slice(2);return z.length>0?z:null}function c5(J){let z=new Map;if(!J)return z;let Y=J.split(/(?=^diff --git )/m);for(let Z of Y){if(!Z.startsWith("diff --git"))continue;let G=null,X=Z.match(/^\+\+\+ (.*)$/m);if(X)G=m5(X[1]);if(G===null){let q=Z.match(/^--- (.*)$/m);if(q)G=m5(q[1])}if(G===null){let q=Z.match(/^diff --git a\/.* b\/(.*)$/m);if(q)G=xZ(q[1])}if(G===null)continue;z.set(G,Z.endsWith(`
28
+ `)&&J.endsWith("</INSTRUCTIONS>")}var U7=()=>{};function D7(J,z={}){let Y=Tj(J.input_tokens,0),Z=Tj(J.cached_input_tokens,0),G=Tj(J.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}:{},...FR(z.contextWindowTokens)?{context_window_tokens:z.contextWindowTokens}:{}}}function Tj(J,z){return typeof J==="number"&&Number.isFinite(J)?J:z}function FR(J){return typeof J==="number"&&Number.isFinite(J)&&J>0}import{readdir as MR,stat as OR,unlink as Vh}from"fs/promises";import{homedir as AR}from"os";import HZ from"path";async function wj(J=fZ){let z=J.sessionsDir(),Y=(await J.readdir(z)).sort().reverse(),Z=[];for(let G of Y){let X=HZ.join(z,G),Q=(await J.readdir(X)).sort().reverse();for(let H of Q){let f=HZ.join(X,H),j=(await J.readdir(f)).sort().reverse();for(let V of j){let B=HZ.join(f,V),K=(await J.readdir(B)).filter((L)=>L.startsWith("rollout-")&&L.endsWith(".jsonl"));K.sort().reverse();for(let L of K)if(Z.push(HZ.join(B,L)),Z.length>=L7){if(!F7)F7=!0,console.warn(`[codex history] rollout scan truncated at ${L7} files; older sessions may be omitted`);return Z}}}}return Z}async function RR(J,z=fZ){if(!J)return;let Y=J.toLowerCase(),Z=await wj(z);for(let G of Z)if(HZ.basename(G).match(R7)?.[1]?.toLowerCase()===Y)return G;return}function gR(J){for(let z of J.split(`
29
+ `)){let Y=z.trim();if(!Y)continue;if(!kY(Y))return"";try{let Z=JSON.parse(Y);if(Z.type==="session_meta")return Z.payload?.cwd??""}catch{}return""}return""}async function g7(J,z){let Y=M7.get(z);if(!Y)Y=new Map,M7.set(z,Y);let Z=Y.get(J);if(Z!==void 0)return Z;let G;try{G=await z.readFile(J)}catch{return null}let X=gR(G);if(X)Y.set(J,X);return X}async function N7(J,z=fZ){if(!J)return[];let Y=await wj(z),Z=[],G=0;for(let X of Y){if(G>=NR)break;if(G++,await g7(X,z)!==J)continue;let Q=HZ.basename(X).match(R7)?.[1];if(Q)Z.push(Q)}return Z.reverse()}async function Pj(J,z=fZ){if(!J)return null;let Y=await wj(z),Z=0;for(let G of Y){if(Z>=CR)break;if(Z++,await g7(G,z)!==J)continue;try{return{path:G,mtimeMs:(await z.stat(G)).mtimeMs}}catch{}}return null}async function C7(J,z=fZ){return(await Pj(J,z))?.mtimeMs??0}async function k7(J,z=fZ){return(await kR(J,z)).messages}async function kR(J,z=fZ){let Y=await RR(J,z);if(!Y)return{messages:[]};let Z;try{Z=await z.readFile(Y)}catch{return{messages:[]}}let G=bR(SR(Z,J)),X=uR(Z);return{messages:G,...X?{usageMetrics:X}:{}}}function bR(J){return J.map((z,Y)=>({msg:z,idx:Y})).sort((z,Y)=>{if(z.msg.timestamp<Y.msg.timestamp)return-1;if(z.msg.timestamp>Y.msg.timestamp)return 1;return z.idx-Y.idx}).map((z)=>z.msg)}function SR(J,z){let Y=[];for(let Z of J.split(`
30
+ `)){let G=Z.trim();if(!G)continue;if(!kY(G))continue;let X;try{X=JSON.parse(G)}catch{continue}if(!DX(X))continue;if(X.type!=="response_item")continue;let Q=DX(X.payload)?X.payload:void 0;if(!Q)continue;let H=typeof X.timestamp==="string"?X.timestamp:new Date().toISOString(),f=IR(Q,H,z);if(f)Y.push(f)}return Y}function IR(J,z,Y){if(J.type==="message"){let Z=J.role;if(Z!=="user"&&Z!=="assistant"&&Z!=="system")return;let G=yj(J.content);if(Z==="user"&&K7(G))return;return{role:Z,blocks:G,timestamp:z,sessionId:Y}}if(J.type==="reasoning")return yR(J,z,Y);if(J.type==="function_call")return xj(J,z,Y,{name:Ej(J.name,"function_call"),input:uj(J.arguments)});if(J.type==="custom_tool_call")return xj(J,z,Y,{name:Ej(J.name,"custom_tool_call"),input:uj(J.input)});if(J.type==="tool_search_call")return xj(J,z,Y,{name:"tool_search_call",input:Wq(J,["type","call_id","status"])});if(J.type==="function_call_output"||J.type==="custom_tool_call_output")return O7(J,z,Y,uj(J.output));if(J.type==="tool_search_output")return O7(J,z,Y,Wq(J,["type","call_id"]));if(J.type==="web_search_call"||J.type==="image_generation_call"||J.type==="local_shell_call")return TR(J,z,Y);return}function yR(J,z,Y){let Z=xR(J);if(Z.length===0)return;return{role:"assistant",blocks:[{type:"thinking",text:Z}],timestamp:z,sessionId:Y}}function xj(J,z,Y,Z){let G=typeof J.call_id==="string"?J.call_id:void 0;if(!G)return;return{role:"assistant",blocks:[{type:"tool_call",callId:G,name:Z.name,input:Z.input}],timestamp:z,sessionId:Y}}function O7(J,z,Y,Z){let G=typeof J.call_id==="string"?J.call_id:void 0;if(!G)return;return{role:"user",blocks:[{type:"tool_result",callId:G,output:Z,isError:!1}],timestamp:z,sessionId:Y}}function TR(J,z,Y){let Z=typeof J.type==="string"?J.type:"tool",G=typeof J.call_id==="string"&&J.call_id.length>0?J.call_id:`${Z}:${z}`,X=Ej(J.name,Z),Q=Wq(J,["type","call_id","status"]),H=Wq(J,["type","call_id"]);return{role:"assistant",timestamp:z,sessionId:Y,blocks:[{type:"tool_call",callId:G,name:X,input:Q},{type:"tool_result",callId:G,output:H,isError:!1}]}}function xR(J){let z=A7(J.content);if(z.length>0)return z;let Y=typeof J.text==="string"?J.text:"";if(Y.length>0)return Y;return A7(J.summary)}function A7(J){if(typeof J==="string")return J;if(!Array.isArray(J))return"";let z=[];for(let Y of J){if(typeof Y==="string"){z.push(Y);continue}if(!DX(Y))continue;let Z=typeof Y.text==="string"?Y.text:"";if(Z.length>0)z.push(Z)}return z.join("")}function Wq(J,z){let Y={};for(let[Z,G]of Object.entries(J))if(!z.includes(Z))Y[Z]=G;return Y}function Ej(J,z){return typeof J==="string"&&J.length>0?J:z}function uj(J){if(typeof J!=="string")return J;try{return JSON.parse(J)}catch{return J}}function uR(J){let z,Y=null;for(let Z of J.split(`
31
+ `)){let G=Z.trim();if(!G)continue;if(!kY(G))continue;let X;try{X=JSON.parse(G)}catch{continue}if(!DX(X))continue;let Q=typeof X.timestamp==="string"?ER(X.timestamp):null;if(X.type==="response_item")continue;if(X.type!=="turn.completed")continue;let H=DX(X.usage)?X.usage:void 0;if(!H)continue;let f=D7(H);if(!f)continue;if(Q!==null&&(Y===null||Q>Y))Y=Q,z=f;else if(Y===null)z=f}return z}function ER(J){let z=new Date(J).getTime();return Number.isFinite(z)?z:null}function DX(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}var fZ,L7=5000,F7=!1,R7,M7,NR=200,CR=12;var hj=C(()=>{jX();U7();fZ={sessionsDir(){return HZ.join(AR(),".codex","sessions")},async readdir(J){try{return await MR(J)}catch{return[]}},async readFile(J){return await aZ(J)},stat:OR};R7=/([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})\.jsonl$/i;M7=new WeakMap});import{homedir as wR}from"os";import{join as PR}from"path";function hR(){return PR(wR(),".codex","hooks.json")}var S7,gh,vj;var I7=C(()=>{Sj();S7=[{event:"SessionStart",verb:"session-start"},{event:"UserPromptSubmit",verb:"turn-start"},{event:"Stop",verb:"turn-complete"}],gh=S7.map((J)=>J.event);vj=class vj extends UX{vendor="codex";eventMap=S7;globalSettingsPath(){return hR()}}});function y7(J){if(!Vq(J))return;let z=Vq(J.modelMetrics)?J.modelMetrics:void 0;if(!z)return;let Y=0,Z=0,G=0;for(let Q of Object.values(z)){if(!Vq(Q)||!Vq(Q.usage))continue;Y+=Kq(Q.usage.inputTokens,0),Z+=Kq(Q.usage.outputTokens,0),G+=Kq(Q.usage.cacheReadTokens,0)}let X=Kq(J.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 Vq(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}function Kq(J,z){return typeof J==="number"&&Number.isFinite(J)?J:z}import{readdir as vR,rm as mR,stat as cR}from"fs/promises";import{homedir as dR}from"os";import yY from"path";async function cj(J=jZ){let z=yY.join(J.copilotDir(),"session-state");return(await J.readdir(z)).map((Z)=>yY.join(z,Z))}async function T7(J,z=jZ){let Y=[];for(let Z of await cj(z)){let G=await dj(Z,z);if(G.cwd!==J)continue;Y.push({id:G.id??yY.basename(Z),updatedAt:G.updatedAt??""})}return Y.sort((Z,G)=>Z.updatedAt.localeCompare(G.updatedAt)).map((Z)=>Z.id)}async function x7(J,z=jZ){if(!J)return 0;let Y=0;for(let Z of await cj(z)){if((await dj(Z,z)).cwd!==J)continue;try{let{mtimeMs:X}=await z.stat(yY.join(Z,"events.jsonl"));if(X>Y)Y=X}catch{}}return Y}async function nR(J,z=jZ){let Y=await iR(J,z);if(!Y)return{messages:[]};let Z=await z.readFile(yY.join(Y,"events.jsonl")).catch(()=>""),G=$R(Z,J);return{messages:G.messages,...G.usageMetrics?{usageMetrics:G.usageMetrics}:{}}}async function u7(J,z=jZ){return(await nR(J,z)).messages}async function iR(J,z=jZ){for(let Y of await cj(z)){if(yY.basename(Y)===J)return Y;let Z=await dj(Y,z);if(Z.id===J||Z.name?.toLowerCase()===J.toLowerCase())return Y}return}async function dj(J,z=jZ){let Y=await z.readFile(yY.join(J,"workspace.yaml")).catch(()=>"");return lR(Y)}function lR(J){let z={};for(let Y of J.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,'"');z[G]=X}return{id:z.id,cwd:z.cwd,name:z.name,updatedAt:z.updated_at,createdAt:z.created_at}}function $R(J,z){let Y=[],Z=new Map,G=z,X,Q=null;for(let H of J.split(`
33
+ `)){let f=H.trim();if(!f)continue;if(!kY(f))continue;let j;try{j=JSON.parse(f)}catch{continue}if(!mj(j)||typeof j.type!=="string")continue;let V=typeof j.timestamp==="string"?j.timestamp:new Date().toISOString(),B=mj(j.data)?j.data:{};if(j.type==="session.start"){let K=typeof B.sessionId==="string"?B.sessionId:void 0;if(K)G=K;continue}if(j.type==="user.message"){let K=typeof B.content==="string"?B.content:"";if(!K)continue;if(!Q)Q=Buffer.from(K.slice(0,aR),"utf8").toString("utf8");Y.push({role:"user",blocks:[{type:"text",text:K}],timestamp:V,sessionId:G});continue}if(j.type==="assistant.message"){let K=[],L=typeof B.content==="string"?B.content:"";if(L)K.push({type:"text",text:L});let A=Array.isArray(B.toolRequests)?B.toolRequests:[];for(let O of A){if(!mj(O))continue;let R=typeof O.id==="string"?O.id:typeof O.toolCallId==="string"?O.toolCallId:"tool",u=typeof O.name==="string"?O.name:typeof O.toolName==="string"?O.toolName:"tool";K.push({type:"tool_call",callId:R,name:u,input:O.arguments??{}})}if(K.length>0)Y.push({role:"assistant",blocks:K,timestamp:V,sessionId:G});continue}if(j.type==="tool.execution_start"){let K=typeof B.toolCallId==="string"?B.toolCallId:void 0,L=typeof B.toolName==="string"?B.toolName:"tool";if(K)Z.set(K,L);continue}if(j.type==="tool.execution_complete"){let K=typeof B.toolCallId==="string"?B.toolCallId:void 0;if(!K)continue;let L=Z.get(K)??(typeof B.toolName==="string"?B.toolName:"tool"),A=B.result??(B.success===!1?{success:!1}:void 0);Y.push({role:"assistant",blocks:[{type:"tool_result",callId:K,output:A,isError:B.success===!1}],timestamp:V,sessionId:G});continue}if(j.type==="session.shutdown")X=y7(B)}return{messages:Y,usageMetrics:X,firstUserMessage:Q}}function mj(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}var jZ,aR=200;var E7=C(()=>{jX();jZ={copilotDir(){let J=process.env.COPILOT_HOME?.trim();if(J)return J;return yY.join(dR(),".copilot")},async readdir(J){try{return await vR(J)}catch{return[]}},async readFile(J){return await aZ(J)},stat:cR,async rm(J){await mR(J,{recursive:!0,force:!0})}}});function nj(J){return i1(J).createHookAdapter()}class Uq{vendor;constructor(J){this.vendor=J}supportsHooks(){return!1}globalSettingsPath(){return""}activityDetailFromPayload(){return}async installActivityHooks(){}async removeActivityHooks(){}supportsWorktreeSync(){return!1}async removeWorktreeSyncHook(){}async installWorktreeWatchHook(){}async removeWorktreeWatchHook(){}}var ij=C(()=>{QY()});import{readFile as w7}from"fs/promises";class Dq{supportsCompletionMarkers(){return!0}}function LX(J){return i1(J).createTurnDetector()}function oR(J,z="claude",Y=0){let Z=null,G=0;for(let X of J.split(`
34
+ `)){G++;let Q=P7(X);if(!Q)continue;let H=v7(Q.message)?Q.message:Q;if(H.role!=="assistant")continue;if(!("content"in H))continue;let f=h7(Q,Y),j={id:`claude:${z}:${f}:${G}`,timestampMs:f,source:"claude"};if(!Z||j.timestampMs>=Z.timestampMs)Z=j}return Z}function sR(J,z="codex"){let Y=null,Z=0;for(let G of J.split(`
35
+ `)){Z++;let X=P7(G);if(!X||X.type!=="turn.completed")continue;let Q=h7(X,0),H={id:`codex:${z}:${Q}:${Z}`,timestampMs:Q,source:"codex"};if(!Y||H.timestampMs>=Y.timestampMs)Y=H}return Y}function P7(J){let z=J.trim();if(!z)return null;try{let Y=JSON.parse(z);return v7(Y)?Y:null}catch{return null}}function h7(J,z){let Y=typeof J.timestamp==="string"?Date.parse(J.timestamp):Number.NaN;return Number.isFinite(Y)?Y:z}function v7(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}var pR,lj,rR,$j,Lq;var Fq=C(()=>{Fj();hj();QY();pR={listSessionFiles:(J)=>BX(J),readFile:(J)=>w7(J,"utf8")};lj=class lj extends Dq{deps;vendor="claude";cache=new Map;constructor(J=pR){super();this.deps=J}async latestCompletion(J){let z=await this.deps.listSessionFiles(J),Y=null,Z=new Map;for(let G of z.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 H=await this.deps.readFile(G.path).catch(()=>"");Q=oR(H,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}};rR={findLatestRollout:(J)=>Pj(J),readFile:(J)=>w7(J,"utf8")};$j=class $j extends Dq{deps;vendor="codex";cache=null;constructor(J=rR){super();this.deps=J}async latestCompletion(J){if(!J)return null;let z=await this.deps.findLatestRollout(J);if(!z)return null;if(this.cache&&this.cache.path===z.path&&z.mtimeMs>0&&this.cache.mtimeMs===z.mtimeMs)return this.cache.marker;let Y=await this.deps.readFile(z.path).catch(()=>"");if(!Y)return null;let Z=sR(Y,z.path);return this.cache={path:z.path,mtimeMs:z.mtimeMs,marker:Z},Z}};Lq=class Lq extends Dq{vendor;constructor(J){super();this.vendor=J}supportsCompletionMarkers(){return!1}async latestCompletion(){return null}}});function Zg(J){return{vendor:J,builtin:!1,displayName:J,defaultCommand:[J],history:tR,detectAccount:async()=>({binary:{found:!1,error:"custom engine: kobe has no account detector for it"},account:{kind:"none"}}),createHookAdapter:()=>new Uq(J),createTurnDetector:()=>new Lq(J)}}function i1(J){return jJ(J)?Yg[J]:Zg(J)}var tR,eR,Jg,zg,Yg;var QY=C(()=>{_1();XZ();Fj();V7();hj();I7();E7();ij();Fq();tR={async listSessionIdsForWorktree(){return[]},async readHistory(){return[]},async latestTranscriptMtimeForWorktree(){return 0}},eR={async listSessionIdsForWorktree(J){return[...await BX(J)].sort((Y,Z)=>Y.mtimeMs-Z.mtimeMs).map((Y)=>Y.sessionId)},readHistory:(J)=>pV(J),latestTranscriptMtimeForWorktree:(J)=>_V(J)},Jg={listSessionIdsForWorktree:(J)=>N7(J),readHistory:(J)=>k7(J),latestTranscriptMtimeForWorktree:(J)=>C7(J)},zg={listSessionIdsForWorktree:(J)=>T7(J),readHistory:(J)=>u7(J),latestTranscriptMtimeForWorktree:(J)=>x7(J)},Yg={claude:{vendor:"claude",builtin:!0,displayName:"Claude",defaultCommand:["claude"],history:eR,detectAccount:(J)=>Yq(J),createHookAdapter:()=>new Ij,createTurnDetector:()=>new lj},codex:{vendor:"codex",builtin:!0,displayName:"Codex",defaultCommand:["codex"],effortLevels:["none","low","medium","high","xhigh"],history:Jg,detectAccount:(J)=>Zq(J),createHookAdapter:()=>new vj,createTurnDetector:()=>new $j},copilot:{vendor:"copilot",builtin:!0,displayName:"Copilot",defaultCommand:["copilot"],history:zg,detectAccount:(J)=>Gq(J),createHookAdapter:()=>new Uq("copilot"),createTurnDetector:()=>new Lq("copilot")}}});async function tZ(J,z){if(!z)return 0;return i1(J).history.latestTranscriptMtimeForWorktree(z)}var Mq=C(()=>{QY()});function m7(J){return typeof J==="string"&&Gg.includes(J)}var FX=(J)=>J,o1="claude",Gg;var zz=C(()=>{Gg=["backlog","in_progress","in_review","done","canceled","error"]});function Oq(J){return Xg.includes(J)}function c7(J,z,Y){switch(z){case"session-start":case"session-end":return"idle";case"turn-start":return"running";case"turn-complete":return"turn_complete";case"turn-failed":return Y?.failure==="rate_limit"||Y?.failure==="billing"?"rate_limited":"error";case"awaiting-input":return Y?.waiting==="permission"?"permission_needed":"running"}}var Xg;var Aq=C(()=>{Xg=["session-start","turn-start","turn-complete","turn-failed","awaiting-input","session-end"]});function Qg(){let J=process.env.KOBE_ENGINE_STATE_TTL_MS;if(J===void 0)return d7;let z=Number(J);return Number.isFinite(z)&&z>0?z:d7}class aj{bus;staleMs;now;livenessAt;activity=new Map;constructor(J,z=Qg(),Y=()=>Date.now(),Z=()=>Promise.resolve(void 0)){this.bus=J;this.staleMs=z;this.now=Y;this.livenessAt=Z}report(J,z,Y){let Z=this.activity.get(J);if(Z?.lapse)clearTimeout(Z.lapse);let G=c7(Z?.state,z,Y),X=this.now(),Q={state:G,detail:Y,at:X};if(G!=="idle"&&G!=="turn_complete")Q.lapse=this.armLapse(J,X);this.activity.set(J,Q),this.bus.publish("engine-state",this.payload(J,Q))}armLapse(J,z){let Y=setTimeout(()=>{this.handleLapse(J,z)},this.staleMs);return Y.unref?.(),Y}async handleLapse(J,z){let Y=this.activity.get(J);if(!Y||Y.at!==z)return;let Z;try{Z=await this.livenessAt(J)}catch{Z=void 0}let G=this.activity.get(J);if(!G||G.at!==z)return;if(Z!==void 0&&Z>this.now()-this.staleMs){G.lapse=this.armLapse(J,z);return}this.publishIdle(J)}clearTask(J){let z=this.activity.get(J);if(z?.lapse)clearTimeout(z.lapse);if(this.activity.delete(J),z)this.bus.publish("engine-state",{taskId:J,state:"idle",at:this.now()})}snapshotByTask(){let J={};for(let[z,Y]of this.activity)J[z]=this.payload(z,Y);return J}currentNonIdle(){let J=[];for(let[z,Y]of this.activity)if(Y.state!=="idle")J.push(this.payload(z,Y));return J}close(){for(let J of this.activity.values())if(J.lapse)clearTimeout(J.lapse);this.activity.clear()}publishIdle(J){let z={state:"idle",at:this.now()};this.activity.set(J,z),this.bus.publish("engine-state",this.payload(J,z))}payload(J,z){return{taskId:J,state:z.state,...z.detail?{detail:z.detail}:{},at:z.at}}}var d7=600000;var n7=C(()=>{Aq()});function i7(J){if(typeof J!=="string")return"";let z=J.replace(/\s+/g," ").trim();if(z.length===0)return"";let Y=[...z];if(Y.length<=40)return z;return`${Y.slice(0,40).join("")}\u2026`}function Rq(J,z){let Y=J.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,32),Z=z.slice(-6).toLowerCase();return`kobe/${Y||"task"}-${Z}`}function l7(J){let z=J.find((G)=>G.role==="user");if(!z)return"";let Y=z.blocks.filter((G)=>G.type==="text").map((G)=>G.text).join(" "),Z=i7(Y);return Z.length>0?Buffer.from(Z,"utf8").toString("utf8"):Z}async function eZ(J,z=o1){if(!J)return"";let{history:Y}=i1(z),Z=await Y.listSessionIdsForWorktree(J);for(let G of Z.slice(0,qg)){let X=l7(await Y.readHistory(G));if(X)return X}return""}async function $7(J,z){if(!z)return"";try{return l7(await i1(J).history.readHistory(z))}catch{return""}}var qg=8;var gq=C(()=>{QY();zz()});function a7(J){let z=String(J),Y=z.length-1;return x1.context.id+(Y?String.fromCharCode(96+Y):"")+z}function rj(J){x1.context=J}function Hg(){return{...x1.context,id:x1.getNextContextId(),count:0}}function BZ(J,z){let Y=O1,Z=$0,G=J.length===0,X=z===void 0?Z:z,Q=G?{owned:null,cleanups:null,context:null,owner:null}:{owned:null,cleanups:null,context:X?X.context:null,owner:X},H=G?()=>J(()=>{throw Error("Dispose method must be an explicit argument to createRoot function")}):()=>J(()=>t1(()=>TY(Q)));Mz.afterCreateOwner&&Mz.afterCreateOwner(Q),$0=Q,O1=null;try{return xJ(H,!0)}finally{O1=Y,$0=Z}}function p(J,z){z=z?Object.assign({},bq,z):bq;let Y={value:J,observers:null,observerSlots:null,comparator:z.equals||void 0};{if(z.name)Y.name=z.name;if(z.internal)Y.internal=!0;else if(JK(Y),Mz.afterCreateSignal)Mz.afterCreateSignal(Y)}let Z=(G)=>{if(typeof G==="function")if(f0&&f0.running&&f0.sources.has(Y))G=G(Y.tValue);else G=G(Y.value);return sj(Y,G)};return[zK.bind(Y),Z]}function _7(J,z,Y){let Z=YG(J,z,!0,vJ,Y);if(zG&&f0&&f0.running)s1.push(Z);else VZ(Z)}function wz(J,z,Y){let Z=YG(J,z,!1,vJ,Y);if(zG&&f0&&f0.running)s1.push(Z);else VZ(Z)}function _0(J,z,Y){e7=Ag;let Z=YG(J,z,!1,vJ,Y),G=AX&&mJ(AX);if(G)Z.suspense=G;if(!Y||!Y.render)Z.user=!0;FJ?FJ.push(Z):VZ(Z)}function U0(J,z,Y){Y=Y?Object.assign({},bq,Y):bq;let Z=YG(J,z,!0,0,Y);if(Z.observers=null,Z.observerSlots=null,Z.comparator=Y.equals||void 0,zG&&f0&&f0.running)Z.tState=vJ,s1.push(Z);else VZ(Z);return zK.bind(Z)}function Kg(J){return J&&typeof J==="object"&&"then"in J}function WZ(J,z,Y){let Z,G,X;if(typeof z==="function")Z=J,G=z,X=Y||{};else Z=!0,G=J,X=z||{};let Q=null,H=_j,f=null,j=!1,V=!1,B="initialValue"in X,K=typeof Z==="function"&&U0(Z),L=new Set,[A,O]=(X.storage||p)(X.initialValue),[R,u]=p(void 0),[P,S]=p(void 0,{equals:!1}),[g,M]=p(B?"ready":"unresolved");if(x1.context){if(f=x1.getNextContextId(),X.ssrLoadFrom==="initial")H=X.initialValue;else if(x1.load&&x1.has(f))H=x1.load(f)}function T(z0,q0,o,B0){if(Q===z0){if(Q=null,B0!==void 0&&(B=!0),(z0===H||q0===H)&&X.onHydrated)queueMicrotask(()=>X.onHydrated(B0,{value:q0}));if(H=_j,f0&&z0&&j)f0.promises.delete(z0),j=!1,xJ(()=>{f0.running=!0,d(q0,o)},!1);else d(q0,o)}return q0}function d(z0,q0){xJ(()=>{if(q0===void 0)O(()=>z0);M(q0!==void 0?"errored":B?"ready":"unresolved"),u(q0);for(let o of L.keys())o.decrement();L.clear()},!1)}function i(){let z0=AX&&mJ(AX),q0=A(),o=R();if(o!==void 0&&!Q)throw o;if(O1&&!O1.user&&z0)_7(()=>{if(P(),Q){if(z0.resolved&&f0&&j)f0.promises.add(Q);else if(!L.has(z0))z0.increment(),L.add(z0)}});return q0}function J0(z0=!0){if(z0!==!1&&V)return;V=!1;let q0=K?K():Z;if(j=f0&&f0.running,q0==null||q0===!1){T(Q,t1(A));return}if(f0&&Q)f0.promises.delete(Q);let o,B0=H!==_j?H:t1(()=>{try{return G(q0,{value:A(),refetching:z0})}catch(g0){o=g0}});if(o!==void 0){T(Q,void 0,kq(o),q0);return}else if(!Kg(B0))return T(Q,B0,void 0,q0),B0;if(Q=B0,"v"in B0){if(B0.s===1)T(Q,B0.v,void 0,q0);else T(Q,void 0,kq(B0.v),q0);return B0}return V=!0,queueMicrotask(()=>V=!1),xJ(()=>{M(B?"refreshing":"pending"),S()},!1),B0.then((g0)=>T(B0,g0,void 0,q0),(g0)=>T(B0,void 0,kq(g0),q0))}Object.defineProperties(i,{state:{get:()=>g()},error:{get:()=>R()},loading:{get(){let z0=g();return z0==="pending"||z0==="refreshing"}},latest:{get(){if(!B)return i();let z0=R();if(z0&&!Q)throw z0;return A()}}});let E=$0;if(K)_7(()=>(E=$0,J0(!1)));else J0(!1);return[i,{refetch:(z0)=>Dg(E,()=>J0(z0)),mutate:O}]}function Tq(J){return xJ(J,!1)}function t1(J){if(!JG&&O1===null)return J();let z=O1;O1=null;try{if(JG)return JG.untrack(J);return J()}finally{O1=z}}function BJ(J,z,Y){let Z=Array.isArray(J),G,X=Y&&Y.defer;return(Q)=>{let H;if(Z){H=Array(J.length);for(let j=0;j<J.length;j++)H[j]=J[j]()}else H=J();if(X)return X=!1,Q;let f=t1(()=>z(H,G,Q));return G=H,f}}function QJ(J){_0(()=>t1(J))}function T1(J){if($0===null)console.warn("cleanups created outside a `createRoot` or `render` will never be run");else if($0.cleanups===null)$0.cleanups=[J];else $0.cleanups.push(J);return J}function Ug(J,z){if(MX||(MX=Symbol("error")),$0=YG(void 0,void 0,!0),$0.context={...$0.context,[MX]:[z]},f0&&f0.running)f0.sources.add($0);try{return J()}catch(Y){gX(Y)}finally{$0=$0.owner}}function xq(){return O1}function Dg(J,z){let Y=$0,Z=O1;$0=J,O1=null;try{return xJ(z,!0)}catch(G){gX(G)}finally{$0=Y,O1=Z}}function Lg(J){if(f0&&f0.running)return J(),f0.done;let z=O1,Y=$0;return Promise.resolve().then(()=>{O1=z,$0=Y;let Z;if(zG||AX)Z=f0||(f0={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 xJ(J,!1),O1=$0=null,Z?Z.done:void 0})}function r7(J,z){let Y=YG(()=>t1(()=>{return Object.assign(J,{[Wg]:!0}),J(z)}),void 0,!0,0);return Y.props=z,Y.observers=null,Y.observerSlots=null,Y.name=J.name,Y.component=J,VZ(Y),Y.tValue!==void 0?Y.tValue:Y.value}function JK(J){if($0){if($0.sourceMap)$0.sourceMap.push(J);else $0.sourceMap=[J];J.graph=$0}if(Mz.afterRegisterGraph)Mz.afterRegisterGraph(J)}function Pz(J,z){let Y=Symbol("context");return{id:Y,Provider:Rg(Y,z),defaultValue:J}}function mJ(J){let z;return $0&&$0.context&&(z=$0.context[J.id])!==void 0?z:J.defaultValue}function Fg(J){let z=U0(J),Y=U0(()=>oj(z()),void 0,{name:"children"});return Y.toArray=()=>{let Z=Y();return Array.isArray(Z)?Z:Z!=null?[Z]:[]},Y}function zK(){let J=f0&&f0.running;if(this.sources&&(J?this.tState:this.state))if((J?this.tState:this.state)===vJ)VZ(this);else{let z=s1;s1=null,xJ(()=>Sq(this),!1),s1=z}if(O1){let z=this.observers;if(!z||z[z.length-1]!==O1){let Y=z?z.length:0;if(!O1.sources)O1.sources=[this],O1.sourceSlots=[Y];else O1.sources.push(this),O1.sourceSlots.push(Y);if(!z)this.observers=[O1],this.observerSlots=[O1.sources.length-1];else z.push(O1),this.observerSlots.push(O1.sources.length-1)}}if(J&&f0.sources.has(this))return this.tValue;return this.value}function sj(J,z,Y){let Z=f0&&f0.running&&f0.sources.has(J)?J.tValue:J.value;if(!J.comparator||!J.comparator(Z,z)){if(f0){let G=f0.running;if(G||!Y&&f0.sources.has(J))f0.sources.add(J),J.tValue=z;if(!G)J.value=z}else J.value=z;if(J.observers&&J.observers.length)xJ(()=>{for(let G=0;G<J.observers.length;G+=1){let X=J.observers[G],Q=f0&&f0.running;if(Q&&f0.disposed.has(X))continue;if(Q?!X.tState:!X.state){if(X.pure)s1.push(X);else FJ.push(X);if(X.observers)ZK(X)}if(!Q)X.state=vJ;else X.tState=vJ}if(s1.length>1e6){if(s1=[],fg)throw Error("Potential Infinite Loop Detected.");throw Error()}},!1)}return z}function VZ(J){if(!J.fn)return;TY(J);let z=yq;if(o7(J,f0&&f0.running&&f0.sources.has(J)?J.tValue:J.value,z),f0&&!f0.running&&f0.sources.has(J))queueMicrotask(()=>{xJ(()=>{f0&&(f0.running=!0),O1=$0=J,o7(J,J.tValue,z),O1=$0=null},!1)})}function o7(J,z,Y){let Z,G=$0,X=O1;O1=$0=J;try{Z=J.fn(z)}catch(Q){if(J.pure)if(f0&&f0.running)J.tState=vJ,J.tOwned&&J.tOwned.forEach(TY),J.tOwned=void 0;else J.state=vJ,J.owned&&J.owned.forEach(TY),J.owned=null;return J.updatedAt=Y+1,gX(Q)}finally{O1=X,$0=G}if(!J.updatedAt||J.updatedAt<=Y){if(J.updatedAt!=null&&"observers"in J)sj(J,Z,!0);else if(f0&&f0.running&&J.pure){if(!f0.sources.has(J))J.value=Z;f0.sources.add(J),J.tValue=Z}else J.value=Z;J.updatedAt=Y}}function YG(J,z,Y,Z=vJ,G){let X={fn:J,state:Z,updatedAt:null,owned:null,sources:null,sourceSlots:null,cleanups:null,value:z,owner:$0,context:$0?$0.context:null,pure:Y};if(f0&&f0.running)X.state=0,X.tState=Z;if($0===null)console.warn("computations created outside a `createRoot` or `render` will never be disposed");else if($0!==Vg)if(f0&&f0.running&&$0.pure)if(!$0.tOwned)$0.tOwned=[X];else $0.tOwned.push(X);else if(!$0.owned)$0.owned=[X];else $0.owned.push(X);if(G&&G.name)X.name=G.name;if(JG&&X.fn){let Q=X.fn,[H,f]=p(void 0,{equals:!1}),j=JG.factory(Q,f);T1(()=>j.dispose());let V,B=()=>Lg(f).then(()=>{if(V)V.dispose(),V=void 0});X.fn=(K)=>{if(H(),f0&&f0.running){if(!V)V=JG.factory(Q,B);return V.track(K)}return j.track(K)}}return Mz.afterCreateOwner&&Mz.afterCreateOwner(X),X}function RX(J){let z=f0&&f0.running;if((z?J.tState:J.state)===0)return;if((z?J.tState:J.state)===OX)return Sq(J);if(J.suspense&&t1(J.suspense.inFallback))return J.suspense.effects.push(J);let Y=[J];while((J=J.owner)&&(!J.updatedAt||J.updatedAt<yq)){if(z&&f0.disposed.has(J))return;if(z?J.tState:J.state)Y.push(J)}for(let Z=Y.length-1;Z>=0;Z--){if(J=Y[Z],z){let G=J,X=Y[Z+1];while((G=G.owner)&&G!==X)if(f0.disposed.has(G))return}if((z?J.tState:J.state)===vJ)VZ(J);else if((z?J.tState:J.state)===OX){let G=s1;s1=null,xJ(()=>Sq(J,Y[0]),!1),s1=G}}}function xJ(J,z){if(s1)return J();let Y=!1;if(!z)s1=[];if(FJ)Y=!0;else FJ=[];yq++;try{let Z=J();return Mg(Y),Z}catch(Z){if(!Y)FJ=null;s1=null,gX(Z)}}function Mg(J){if(s1){if(zG&&f0&&f0.running)Og(s1);else YK(s1);s1=null}if(J)return;let z;if(f0){if(!f0.promises.size&&!f0.queue.size){let{sources:Z,disposed:G}=f0;FJ.push.apply(FJ,f0.effects),z=f0.resolve;for(let X of FJ)"tState"in X&&(X.state=X.tState),delete X.tState;f0=null,xJ(()=>{for(let X of G)TY(X);for(let X of Z){if(X.value=X.tValue,X.owned)for(let Q=0,H=X.owned.length;Q<H;Q++)TY(X.owned[Q]);if(X.tOwned)X.owned=X.tOwned;delete X.tValue,delete X.tOwned,X.tState=0}p7(!1)},!1)}else if(f0.running){f0.running=!1,f0.effects.push.apply(f0.effects,FJ),FJ=null,p7(!0);return}}let Y=FJ;if(FJ=null,Y.length)xJ(()=>e7(Y),!1);else Mz.afterUpdate&&Mz.afterUpdate();if(z)z()}function YK(J){for(let z=0;z<J.length;z++)RX(J[z])}function Og(J){for(let z=0;z<J.length;z++){let Y=J[z],Z=f0.queue;if(!Z.has(Y))Z.add(Y),zG(()=>{Z.delete(Y),xJ(()=>{f0.running=!0,RX(Y)},!1),f0&&(f0.running=!1)})}}function Ag(J){let z,Y=0;for(z=0;z<J.length;z++){let Z=J[z];if(!Z.user)RX(Z);else J[Y++]=Z}if(x1.context){if(x1.count){x1.effects||(x1.effects=[]),x1.effects.push(...J.slice(0,Y));return}rj()}if(x1.effects&&(x1.done||!x1.count))J=[...x1.effects,...J],Y+=x1.effects.length,delete x1.effects;for(z=0;z<Y;z++)RX(J[z])}function Sq(J,z){let Y=f0&&f0.running;if(Y)J.tState=0;else J.state=0;for(let Z=0;Z<J.sources.length;Z+=1){let G=J.sources[Z];if(G.sources){let X=Y?G.tState:G.state;if(X===vJ){if(G!==z&&(!G.updatedAt||G.updatedAt<yq))RX(G)}else if(X===OX)Sq(G,z)}}}function ZK(J){let z=f0&&f0.running;for(let Y=0;Y<J.observers.length;Y+=1){let Z=J.observers[Y];if(z?!Z.tState:!Z.state){if(z)Z.tState=OX;else Z.state=OX;if(Z.pure)s1.push(Z);else FJ.push(Z);Z.observers&&ZK(Z)}}}function TY(J){let z;if(J.sources)while(J.sources.length){let Y=J.sources.pop(),Z=J.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(J.tOwned){for(z=J.tOwned.length-1;z>=0;z--)TY(J.tOwned[z]);delete J.tOwned}if(f0&&f0.running&&J.pure)GK(J,!0);else if(J.owned){for(z=J.owned.length-1;z>=0;z--)TY(J.owned[z]);J.owned=null}if(J.cleanups){for(z=J.cleanups.length-1;z>=0;z--)J.cleanups[z]();J.cleanups=null}if(f0&&f0.running)J.tState=0;else J.state=0;delete J.sourceMap}function GK(J,z){if(!z)J.tState=0,f0.disposed.add(J);if(J.owned)for(let Y=0;Y<J.owned.length;Y++)GK(J.owned[Y])}function kq(J){if(J instanceof Error)return J;return Error(typeof J==="string"?J:"Unknown error",{cause:J})}function s7(J,z,Y){try{for(let Z of z)Z(J)}catch(Z){gX(Z,Y&&Y.owner||null)}}function gX(J,z=$0){let Y=MX&&z&&z.context&&z.context[MX],Z=kq(J);if(!Y)throw Z;if(FJ)FJ.push({fn(){s7(Z,Y,z)},state:vJ});else s7(Z,Y,z)}function oj(J){if(typeof J==="function"&&!J.length)return oj(J());if(Array.isArray(J)){let z=[];for(let Y=0;Y<J.length;Y++){let Z=oj(J[Y]);if(Array.isArray(Z))if(Z.length<32768)z.push.apply(z,Z);else for(let G=0;G<Z.length;G++)z.push(Z[G]);else z.push(Z)}return z}return J}function Rg(J,z){return function(Z){let G;return wz(()=>G=t1(()=>{return $0.context={...$0.context,[J]:Z.value},Fg(()=>Z.children)}),void 0,z),G}}function t7(J){for(let z=0;z<J.length;z++)J[z]()}function Ng(J,z,Y={}){let Z=[],G=[],X=[],Q=0,H=z.length>1?[]:null;return T1(()=>t7(X)),()=>{let f=J()||[],j=f.length,V,B;return f[Iq],t1(()=>{let L,A,O,R,u,P,S,g,M;if(j===0){if(Q!==0)t7(X),X=[],Z=[],G=[],Q=0,H&&(H=[]);if(Y.fallback)Z=[gg],G[0]=BZ((T)=>{return X[0]=T,Y.fallback()}),Q=1}else if(Q===0){G=Array(j);for(B=0;B<j;B++)Z[B]=f[B],G[B]=BZ(K);Q=j}else{O=Array(j),R=Array(j),H&&(u=Array(j));for(P=0,S=Math.min(Q,j);P<S&&Z[P]===f[P];P++);for(S=Q-1,g=j-1;S>=P&&g>=P&&Z[S]===f[g];S--,g--)O[g]=G[S],R[g]=X[S],H&&(u[g]=H[S]);L=new Map,A=Array(g+1);for(B=g;B>=P;B--)M=f[B],V=L.get(M),A[B]=V===void 0?-1:V,L.set(M,B);for(V=P;V<=S;V++)if(M=Z[V],B=L.get(M),B!==void 0&&B!==-1)O[B]=G[V],R[B]=X[V],H&&(u[B]=H[V]),B=A[B],L.set(M,B);else X[V]();for(B=P;B<j;B++)if(B in O){if(G[B]=O[B],X[B]=R[B],H)H[B]=u[B],H[B](B)}else G[B]=BZ(K);G=G.slice(0,Q=j),Z=f.slice(0)}return G});function K(L){if(X[B]=L,H){let[A,O]=p(B,{name:"index"});return H[B]=O,z(f[B],A)}return z(f[B])}}}function XK(J,z){if(Cg){if(x1.context){let Y=x1.context;rj(Hg());let Z=r7(J,z||{});return rj(Y),Z}}return r7(J,z||{})}function Nq(){return!0}function pj(J){return!(J=typeof J==="function"?J():J)?{}:J}function bg(){for(let J=0,z=this.length;J<z;++J){let Y=this[J]();if(Y!==void 0)return Y}}function uq(...J){let z=!1;for(let Q=0;Q<J.length;Q++){let H=J[Q];z=z||!!H&&Fz in H,J[Q]=typeof H==="function"?(z=!0,U0(H)):H}if(Bg&&z)return new Proxy({get(Q){for(let H=J.length-1;H>=0;H--){let f=pj(J[H])[Q];if(f!==void 0)return f}},has(Q){for(let H=J.length-1;H>=0;H--)if(Q in pj(J[H]))return!0;return!1},keys(){let Q=[];for(let H=0;H<J.length;H++)Q.push(...Object.keys(pj(J[H])));return[...new Set(Q)]}},kg);let Y={},Z=Object.create(null);for(let Q=J.length-1;Q>=0;Q--){let H=J[Q];if(!H)continue;let f=Object.getOwnPropertyNames(H);for(let j=f.length-1;j>=0;j--){let V=f[j];if(V==="__proto__"||V==="constructor")continue;let B=Object.getOwnPropertyDescriptor(H,V);if(!Z[V])Z[V]=B.get?{enumerable:!0,configurable:!0,get:bg.bind(Y[V]=[B.get.bind(H)])}:B.value!==void 0?B:void 0;else{let K=Y[V];if(K){if(B.get)K.push(B.get.bind(H));else if(B.value!==void 0)K.push(()=>B.value)}}}}let G={},X=Object.keys(Z);for(let Q=X.length-1;Q>=0;Q--){let H=X[Q],f=Z[H];if(f&&f.get)Object.defineProperty(G,H,f);else G[H]=f?f.value:void 0}return G}function Z1(J){let z="fallback"in J&&{fallback:()=>J.fallback};return U0(Ng(()=>J.each,J.children,z||void 0),void 0,{name:"value"})}function Y0(J){let z=J.keyed,Y=U0(()=>J.when,void 0,{name:"condition value"}),Z=z?Y:U0(Y,void 0,{equals:(G,X)=>!G===!X,name:"condition"});return U0(()=>{let G=Z();if(G){let X=J.children;return typeof X==="function"&&X.length>0?t1(()=>X(z?G:()=>{if(!t1(Z))throw Sg("Show");return Y()})):X}return J.fallback},void 0,{name:"value"})}function QK(J){let z;if(x1.context&&x1.load)z=x1.load(x1.getContextId());let[Y,Z]=p(z,{name:"errored"});return Cq||(Cq=new Set),Cq.add(Z),T1(()=>Cq.delete(Z)),U0(()=>{let G;if(G=Y()){let X=J.fallback;if(typeof X!=="function"||X.length==0)console.error(G);return typeof X==="function"&&X.length?t1(()=>X(G,()=>Z())):X}return Ug(()=>J.children,Z)},void 0,{name:"value"})}var x1,fg=!0,jg=(J,z)=>J===z,Fz,Bg,Iq,Wg,bq,MX=null,e7,vJ=1,OX=2,Vg,_j,$0=null,f0=null,zG=null,JG=null,O1=null,s1=null,FJ=null,yq=0,Mz,Jv,p7,AX,gg,Cg=!1,kg,Sg=(J)=>`Attempting to access a stale value from <${J}> that could possibly be undefined. This may occur because you are reading the accessor returned from the component at a time where it has already been unmounted. We recommend cleaning up any stale timers or async, or reading from the initial condition.`,Cq,qK;var W1=C(()=>{x1={context:void 0,registry:void 0,effects:void 0,done:!1,getContextId(){return a7(this.context.count)},getNextContextId(){return a7(this.context.count++)}};Fz=Symbol("solid-proxy"),Bg=typeof Proxy==="function",Iq=Symbol("solid-track"),Wg=Symbol("solid-dev-component"),bq={equals:jg},e7=YK,Vg={},_j={},Mz={afterUpdate:null,afterCreateOwner:null,afterCreateSignal:null,afterRegisterGraph:null};[Jv,p7]=p(!1);gg=Symbol("fallback");kg={get(J,z,Y){if(z===Fz)return Y;return J.get(z)},has(J,z){if(z===Fz)return!0;return J.has(z)},set:Nq,deleteProperty:Nq,getOwnPropertyDescriptor(J,z){return{configurable:!0,enumerable:!0,get(){return J.get(z)},set:Nq,deleteProperty:Nq}},ownKeys(J){return J.keys()}};qK={hooks:Mz,writeSignal:sj,registerGraph:JK};if(globalThis)if(!globalThis.Solid$$)globalThis.Solid$$=!0;else console.warn("You appear to have multiple instances of Solid. This can lead to unexpected behavior.")});import{spawn as Ig}from"child_process";function tj(J,z,Y,Z){if(Y)return J+Z.slowRetryMs;return z+Math.max(Z.minIntervalMs,(z-J)*5)}function ej(J,z){return!J.inFlight&&z>=J.nextAllowedAt}function HK(J,z,Y=Math.random){let Z=Math.max(0,Math.min(1,z)),G=(Y()*2-1)*J*Z;return Math.max(0,J+G)}function fK(J,z,Y){if(z<=0)return Math.min(J,Y);return Math.min(J*2**z,Y)}function ZG(J,z,Y,Z){let G=Date.now();if(!ej(J,G))return!1;J.inFlight=!0;let X=new AbortController,Q=setTimeout(()=>X.abort(),z.timeoutMs);return(async()=>{let H,f=!1;try{H=await Y(X.signal),f=!0}catch{}clearTimeout(Q);let j=X.signal.aborted;if(J.nextAllowedAt=tj(G,Date.now(),j,z),J.inFlight=!1,f&&!j)Z(H)})(),!0}function qY(J,z,Y){return new Promise((Z)=>{let G="",X=!1,Q=(f)=>{if(X)return;X=!0,Z({status:f,stdout:G})},H=Ig(J,z.slice(),{cwd:Y.cwd,stdio:["ignore","pipe","ignore"],env:Y.env,signal:Y.signal,killSignal:"SIGKILL"});H.stdout?.on("data",(f)=>{G+=String(f)}),H.on("error",()=>Q(null)),H.on("close",(f)=>Q(f))})}var GG=()=>{};function yg(J,z){switch((J??"").toUpperCase()){case"MERGED":return"merged";case"CLOSED":return"closed";case"OPEN":return(z??"").toUpperCase()==="APPROVED"?"ready_to_merge":"open";default:return"unknown"}}function Tg(J){let z=(J.status??"").toUpperCase(),Y=(J.conclusion??"").toUpperCase(),Z=(J.state??"").toUpperCase();if(z&&z!=="COMPLETED")return"pending";if(Y){if(Y==="SUCCESS"||Y==="NEUTRAL"||Y==="SKIPPED")return"passing";return"failing"}if(Z==="SUCCESS")return"passing";if(Z==="PENDING"||Z==="EXPECTED")return"pending";if(Z==="FAILURE"||Z==="ERROR")return"failing";return"unknown"}function xg(J){if(!J||J.length===0)return"none";let z=!1,Y=!1;for(let Z of J){let G=Tg(Z);if(G==="failing")return"failing";if(G==="pending")z=!0;else if(G==="passing")Y=!0}if(z)return"pending";if(Y)return"passing";return"unknown"}function BK(J,z){if(!J||typeof J.number!=="number")return null;return{provider:"github",lifecycle:yg(J.state,J.reviewDecision),checkState:xg(J.statusCheckRollup),number:J.number,url:J.url,title:J.title,baseRef:J.baseRefName,headRef:J.headRefName,reviewDecision:J.reviewDecision||void 0,mergeable:J.mergeable||void 0,lastCheckedAt:z}}function wq(J,z){if(J===z)return!0;if(!J||!z)return!1;return J.provider===z.provider&&J.lifecycle===z.lifecycle&&J.checkState===z.checkState&&J.number===z.number&&J.url===z.url&&J.title===z.title&&J.baseRef===z.baseRef&&J.headRef===z.headRef&&J.reviewDecision===z.reviewDecision&&J.mergeable===z.mergeable}function Eq(J,z){return z.some((Y)=>J.includes(Y))}function JB(J){if(J.parseError)return{kind:"error",error:"parse"};if(J.timedOut)return{kind:"error",error:"timeout"};if(J.spawnError)return{kind:"error",error:"missing-binary"};let z=(J.stderr??"").toLowerCase();if(Eq(z,Pg))return{kind:"empty"};if(Eq(z,ug))return{kind:"error",error:"no-remote"};if(Eq(z,Eg))return{kind:"error",error:"auth"};if(Eq(z,wg))return{kind:"error",error:"network"};return{kind:"empty"}}function NX(J,z,Y,Z,G=Math.random){let X=(H)=>Y+HK(H,Z.jitterRatio,G);if(J.kind==="pr")return{nextAllowedAt:X(J.settled?Z.settledMs:Z.tickMs),failures:0};if(J.kind==="empty")return{nextAllowedAt:X(Z.noPrMs),failures:0};if(J.error==="no-remote")return{nextAllowedAt:X(Z.noRemoteMs),failures:0};let Q=z+1;return{nextAllowedAt:X(fK(Z.failureBaseMs,Q-1,Z.failureCapMs)),failures:Q}}var jK="number,url,title,state,baseRefName,headRefName,reviewDecision,mergeable,statusCheckRollup",ug,Eg,wg,Pg;var zB=C(()=>{GG();ug=["none of the git remotes","no git remote","to use github cli in a github repository","not a github repository"],Eg=["gh auth login","authentication required","not logged in","http 401","bad credentials","requires authentication"],wg=["could not resolve host","no such host","dial tcp","connection refused","connection reset","network is unreachable","i/o timeout","timeout","tls handshake","http 5","rate limit","try again"],Pg=["no pull requests found","no open pull requests","no pull request found"]});var YB,ZB,GB,XB="DIRTY_WORKTREE",QB,qB;var HB=C(()=>{YB=class YB extends Error{from;to;taskId;constructor(J,z,Y){super(`illegal transition for task ${Y}: ${J} -> ${z}`);this.from=J;this.to=z;this.taskId=Y;this.name="IllegalTransitionError"}};ZB=class ZB extends Error{constructor(J){super(`task not found: ${J}`);this.name="TaskNotFoundError"}};GB=class GB extends Error{constructor(){super("cannot delete a main task; remove the repo from saved repos instead");this.name="CannotDeleteMainTaskError"}};QB=class QB extends Error{taskId;constructor(J){super(`${XB}: task ${J} worktree has uncommitted or untracked changes`);this.taskId=J;this.name="DirtyWorktreeError"}};qB=class qB extends Error{taskId;cause;constructor(J,z){super(`failed to remove worktree for task ${J}: ${z instanceof Error?z.message:String(z)}`);this.taskId=J;this.cause=z;this.name="WorktreeRemoveFailedError"}}});var WK;var VK=C(()=>{WK=["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 KK(J){let z=J.auth,Y=z.kind==="key"?{kind:"key",keyPath:z.keyPath}:{kind:"password",getPassword:()=>lQ(z.keychainRef)};return{host:J.host,user:J.user,port:J.port,auth:Y,controlPath:mQ(J.host,J.user,J.port)}}function XG(J){let z=JY(J);if(!z)return new iQ;return new iZ(KK(z))}function HY(J){for(let z of Object.values(Hj()))if(J===z.basePath||J.startsWith(`${z.basePath}/`))return new iZ(KK(z));return new iQ}function UK(J){return J&&r1(J)?J:void 0}function xY(J){let z=HY(J);return z.isRemote||z.existsSync(J)}function m1(J){return HY(J).isRemote?rJ():J}var Oz=C(()=>{p1();C1();ef();Yj()});import{isAbsolute as hg,join as vg,resolve as mg}from"path";function fB(J){if(typeof J!=="string")return null;let z=J.trim();if(!z)return null;let Y=rJ();if(z==="~")return Y;let Z=z.startsWith("~/")?vg(Y,z.slice(2)):z;return hg(Z)?Z:mg(Y,Z)}function DK(){let J=LJ()[Pq];return fB(typeof J==="string"?J:null)}var Pq="worktree.basePath";var jB=C(()=>{p1();sz()});import{createHash as cg}from"crypto";import FK from"fs";import MJ from"path";function lg(){return DK()??MJ.join(XJ(),MK)}function $g(){return MJ.join(XJ(),MK)}function OK(J){if(!MJ.isAbsolute(J))throw Error(`worktreeRootFor: repo must be an absolute path, got: ${J}`);return MJ.join(lg(),bK(J))}function AK(J){if(!MJ.isAbsolute(J))throw Error(`managedWorktreeRootsFor: repo must be an absolute path, got: ${J}`);let z=OK(J),Y=MJ.join($g(),bK(J));return[...z===Y?[z]:[z,Y],...ig.map((G)=>MJ.join(J,G))]}function RK(J,z){if(!z||/[/\\\0]/.test(z))throw Error(`worktreePathFor: invalid slug: ${JSON.stringify(z)}`);return MJ.join(OK(J),z)}async function gK(J){if(r1(J)){let Y=JY(J)?.basePath;if(!Y)return[];return XG(J).readdir(CK(Y))}let z=new Set;for(let Y of AK(J))try{for(let Z of FK.readdirSync(Y,{withFileTypes:!0}))if(Z.isDirectory())z.add(Z.name)}catch{}return[...z]}function BB(J,z){if(!MJ.isAbsolute(J)||!MJ.isAbsolute(z))return null;let Y=LK(z);for(let Z of AK(J)){let G=LK(Z),X=MJ.relative(G,Y);if(X!==""&&!X.startsWith("..")&&!MJ.isAbsolute(X))return Z}return null}function NK(J,z){return BB(J,z)!==null}function CK(J){return`${ag(J)}/.kobe/worktrees`}function kK(J,z){if(!z||/[/\\\0]/.test(z))throw Error(`remoteWorktreePathFor: invalid slug: ${JSON.stringify(z)}`);return`${CK(J)}/${z}`}function ag(J){return J.length>1&&J.endsWith("/")?J.replace(/\/+$/,""):J}function LK(J){try{return FK.realpathSync(J)}catch{return MJ.resolve(J)}}function bK(J){let Y=(MJ.basename(J)||"repo").replace(/[^a-zA-Z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"repo",Z=cg("sha1").update(MJ.resolve(J)).digest("hex").slice(0,12);return`${Y}-${Z}`}var MK="worktrees",dg=".kobe/worktrees",ng=".claude/worktrees",ig;var WB=C(()=>{p1();Oz();C1();jB();ig=[dg,ng]});class VB{activeSlugs;random;pool;pendingByRepo=new Map;chain=Promise.resolve();constructor(J,z={}){this.activeSlugs=J;if(this.random=z.random??Math.random,this.pool=z.pool??WK,this.pool.length===0)throw Error("SlugAllocator: animal pool cannot be empty")}async allocate(J){let z=this.chain,Y;this.chain=new Promise((Z)=>{Y=Z}),await z;try{return await this.pickLocked(J)}finally{Y()}}commit(J,z){this.deletePending(J,z)}cancel(J,z){this.deletePending(J,z)}async pickLocked(J){let z=await this.occupiedSlugs(J),Y=this.pool.filter((G)=>!z.has(G));if(Y.length>0){let G=Y[Math.floor(this.random()*Y.length)];return this.addPending(J,G),G}let Z=this.pool[Math.floor(this.random()*this.pool.length)];for(let G=2;;G++){let X=`${Z}-v${G}`;if(!z.has(X))return this.addPending(J,X),X}}async occupiedSlugs(J){let z=new Set(this.pendingByRepo.get(J)??[]);for(let Y of this.activeSlugs(J))if(Y)z.add(Y);for(let Y of await gK(J))z.add(Y);return z}addPending(J,z){let Y=this.pendingByRepo.get(J);if(!Y)Y=new Set,this.pendingByRepo.set(J,Y);Y.add(z)}deletePending(J,z){let Y=this.pendingByRepo.get(J);if(!Y)return;if(Y.delete(z),Y.size===0)this.pendingByRepo.delete(J)}}var SK=C(()=>{VK();WB()});var yK={};q1(yK,{PLACEHOLDER_TASK_TITLE:()=>hz,Orchestrator:()=>hq});import{realpathSync as _g}from"fs";import{basename as pg,resolve as rg}from"path";function IK(J){return JY(J)?.basePath??J}class hq{store;worktrees;slugs;tasksAcc;setTasks;activeTaskAcc;setActiveTaskSig;unsubscribeStore;worktreeLocks=new Map;mainTaskLocks=new Map;constructor(J){this.store=J.store,this.worktrees=J.worktrees,this.slugs=new VB((X)=>this.store.list().filter((Q)=>Q.repo===X&&Q.kind!=="main").map((Q)=>{return Q.worktreePath.match(/([^/\\]+)[/\\]*$/)?.[1]??""}).filter((Q)=>Q.length>0));let[z,Y]=p(this.store.list());this.tasksAcc=z,this.setTasks=(X)=>Y(()=>X);let[Z,G]=p(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(J){let z=J===null?null:String(J);if(this.setActiveTaskSig(z),z&&this.store.get(z))await this.store.update(z,{})}tasksSignal(){return this.tasksAcc}subscribeTasks(J){return this.store.subscribe(J)}dispose(){this.unsubscribeStore()}listTasks(){return this.store.list()}getTask(J){return this.store.get(J)}async createTask(J){if(!J.repo)throw Error("createTask: repo is required");let z=(J.title??hz).trim()||hz,Y=await this.store.create({repo:J.repo,title:z,branch:J.branch??"",worktreePath:"",status:"backlog",kind:"task",vendor:J.vendor??o1,...J.modelEffort?{modelEffort:J.modelEffort}:{}});if(J.baseRef)this.pendingBaseRefs.set(Y.id,J.baseRef);return Y}async ensureMainTask(J){let{repo:z,key:Y}=CX(J),Z=this.store.list().find((Q)=>Q.kind==="main"&&CX(Q.repo).key===Y);if(Z)return Z;let G=this.mainTaskLocks.get(Y);if(G)return G;let X=(async()=>{let Q=PJ(S1("lastSelectedVendor"),hJ());return await this.store.create({repo:z,title:og(z),branch:"",worktreePath:IK(z),status:"backlog",kind:"main",vendor:Q})})();this.mainTaskLocks.set(Y,X);try{return await X}finally{this.mainTaskLocks.delete(Y)}}async ensureWorktree(J){let z=this.requireTask(J);if(z.kind==="main")return IK(z.repo);if(z.worktreePath)return z.worktreePath;let Y=this.worktreeLocks.get(z.id);if(Y)return Y;let Z=this.createWorktree(z);this.worktreeLocks.set(z.id,Z);try{return await Z}finally{this.worktreeLocks.delete(z.id)}}async createWorktree(J){let z=await this.slugs.allocate(J.repo),Y=J.branch||Rq(J.title,J.id),Z=this.pendingBaseRefs.get(J.id),G;try{G=await this.worktrees.createForTask({repo:J.repo,slug:z,branch:Y,baseRef:Z})}catch(X){throw this.slugs.cancel(J.repo,z),X}try{await this.store.update(J.id,{worktreePath:G.path,branch:Y})}catch(X){throw await this.rollbackWorktree(G.path),this.slugs.cancel(J.repo,z),X}return this.slugs.commit(J.repo,z),this.pendingBaseRefs.delete(J.id),G.path}async rollbackWorktree(J){try{await this.worktrees.remove(J,{force:!0})}catch(z){console.error(`[kobe] ensureWorktree rollback failed for ${J}:`,z)}}async setTitle(J,z){let Y=z.trim();if(!Y)throw Error("setTitle: title is required (empty or whitespace-only rejected)");let Z=this.requireTask(J);if(Z.title===Y)return;await this.store.update(Z.id,{title:Y}),await this.followBranchToTitle(Z,Y)}async followBranchToTitle(J,z){if(J.kind==="main"||!J.worktreePath)return;if(J.branch!==Rq(hz,J.id))return;let Y=Rq(z,J.id);if(Y===J.branch)return;try{await this.setBranch(J.id,Y)}catch(Z){console.error(`[kobe] follow-branch-to-title failed for ${J.id}:`,Z)}}async setBranch(J,z){let Y=z.trim();if(!Y)throw Error("setBranch: branch is required (empty or whitespace-only rejected)");let Z=this.requireTask(J);if(Z.kind==="main")throw Error("setBranch: a main task tracks the repo's own branch; rename it with git directly");if(Z.branch===Y)return;if(Z.worktreePath)await this.worktrees.renameBranch(Z.worktreePath,Z.branch,Y);await this.store.update(Z.id,{branch:Y})}async setVendor(J,z){let Y=this.requireTask(J);if(Y.vendor===z)return;await this.store.update(Y.id,{vendor:z})}async setPinned(J,z){let Y=this.requireTask(J);if(Y.kind==="main")return;let Z=z??!Y.pinned;if((Y.pinned??!1)===Z)return;await this.store.update(Y.id,{pinned:Z})}async moveTask(J,z){let Y=this.requireTask(J);if(Y.kind==="main")return;let Z=this.store.list().filter((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,z,Z)}async setArchived(J,z){let Y=this.requireTask(J);if(Y.kind==="main")return;let Z=z??!Y.archived;if(Y.archived===Z)return;await this.store.update(Y.id,{archived:Z})}async reorderTasks(J){if(J.length===0)return;for(let z of J){if(this.requireTask(z.taskId).kind==="main")throw Error(`cannot reorder a main task: ${z.taskId}`);if(!Number.isFinite(z.position))throw Error(`position must be a finite number: ${z.taskId}`)}await this.store.reorder(J.map((z)=>({id:z.taskId,position:z.position})))}async setStatus(J,z){let Y=this.requireTask(J);if(Y.status===z)return;if(Y.status==="done"&&z==="error"||Y.status==="error"&&z==="done")throw new YB(Y.status,z,Y.id);await this.store.update(Y.id,{status:z})}async setPRStatus(J,z){let Y=this.requireTask(J);if(wq(Y.prStatus,z??void 0))return;await this.store.update(Y.id,{prStatus:z??void 0})}async deleteTask(J,z){let Y=this.store.get(J);if(!Y)return;if(Y.kind==="main")throw new GB;let Z=z?.force===!0;if(Y.worktreePath){if(!Z){let G=!1;try{G=await this.worktrees.isDirty(Y.worktreePath)}catch{}if(G)throw new QB(Y.id)}try{await this.worktrees.remove(Y.worktreePath,{force:Z})}catch(G){throw new qB(Y.id,G)}}await this.store.remove(Y.id),this.pendingBaseRefs.delete(Y.id),this.worktreeLocks.delete(Y.id)}async forgetProject(J){if(!J)throw Error("forgetProject: repo is required");let z=CX(J).key;for(let Y of SJ())if(CX(Y).key===z)Qj(Y);for(let Y of this.store.list()){if(Y.kind!=="main")continue;if(CX(Y.repo).key!==z)continue;await this.store.remove(Y.id),this.pendingBaseRefs.delete(Y.id),this.worktreeLocks.delete(Y.id)}}async discoverAdoptableWorktrees(J){if(!J)throw Error("discoverAdoptableWorktrees: repo is required");let z=await this.worktrees.listAll(J),Y=new Set(this.store.list().filter((Z)=>Z.worktreePath).map((Z)=>QG(Z.worktreePath)));return z.filter((Z)=>!Y.has(QG(Z.path)))}async adoptWorktree(J){if(!J.repo)throw Error("adoptWorktree: repo is required");if(!J.worktreePath)throw Error("adoptWorktree: worktreePath is required");let z=QG(J.worktreePath),Y=this.adoptLocks.get(z);if(Y)return Y;let Z=this.adoptWorktreeLocked(J,z);this.adoptLocks.set(z,Z);try{return await Z}finally{this.adoptLocks.delete(z)}}async adoptWorktreeLocked(J,z){let Y=this.store.list().find((H)=>H.worktreePath&&QG(H.worktreePath)===z);if(Y){if(J.ifExists==="return")return Y;throw Error(`adoptWorktree: ${J.worktreePath} is already adopted as a task`)}let G=(await this.worktrees.listAll(J.repo)).find((H)=>QG(H.path)===z);if(!G)throw Error(`adoptWorktree: ${J.worktreePath} is not an adoptable git worktree of ${J.repo} (unknown, detached, or the main checkout)`);let X=J.branch?.trim()||G.branch,Q=(J.title??pg(G.path)).trim()||hz;return this.store.create({repo:J.repo,title:Q,branch:X,worktreePath:G.path,status:"backlog",kind:"task",vendor:J.vendor??o1})}pendingBaseRefs=new Map;adoptLocks=new Map;requireTask(J){let z=this.store.get(J);if(!z)throw new ZB(String(J));return z}}function og(J){let z=J.split(/[/\\]/).filter(Boolean);return z.length>0?z[z.length-1]??J:J}function CX(J){let z=tz(J);return{repo:z,key:r1(z)?z:QG(z)}}function QG(J){try{return _g(J)}catch{return rg(J)}}var hz="(new task)";var kX=C(()=>{W1();zB();C1();zz();_1();HB();SK()});function qG(J,z,Y){if(!z)return J;let Z=XG(z);return Z.ensureReady(),Z.wrapCommand(J,{tty:!0,cwd:Y})}function l1(){let J=[];for(let z of["KOBE_HOME_DIR","KOBE_DAEMON_SOCKET_PATH","KOBE_TMUX_SOCKET"]){let Y=process.env[z];if(Y&&Y.length>0)J.push(`${z}=${Q1(Y)}`)}return J.length>0?`${J.join(" ")} `:""}var bX="@kobe_remote";var KZ=C(()=>{Oz();Lz()});function vq(){return Bz(UZ,!1)}var UZ="experimental.autoStatus";var SX=C(()=>{sz()});function KB(){return Bz(DZ,!1)}var DZ="experimental.dispatcher";var mq=C(()=>{sz()});import{randomUUID as sg}from"crypto";function Az(J){return`engineCommand.${J}`}function Rz(J){return`engineName.${J}`}function LZ(J){return S1(Rz(J))?.trim()||UB[J]||J}function IX(J){return i1(J??"claude").defaultCommand}function tg(J){let z=[],Y=/"([^"]*)"|'([^']*)'|(\S+)/g;for(let Z=Y.exec(J);Z!==null;Z=Y.exec(J))z.push(Z[1]??Z[2]??Z[3]??"");return z}function cJ(J,z){let Y=J??"claude",Z=S1(Az(Y))?.trim(),G=(()=>{if(Z){let X=tg(Z);if(X.length>0)return X}return IX(Y)})();return eg(G,Y,z)}function eg(J,z,Y){let Z=Y?.trim();if(!Z)return J;let G=z??"claude";if(!i1(G).effortLevels?.includes(Z))return J;if(G==="codex")return[...J,"-c",`model_reasoning_effort=${Z}`];return J}function HG(J,z){if((z??"claude")!=="claude")return{argv:J,sessionId:null};if(J.some((Z)=>J2.has(Z)))return{argv:J,sessionId:null};let Y=sg();return{argv:[...J,"--session-id",Y],sessionId:Y}}function FZ(){let J=(z)=>/^[A-Za-z0-9_/.:=-]+$/.test(z)?z:`'${z.replace(/'/g,"'\\''")}'`;try{return[...y1(),"api"].map(J).join(" ")}catch{return"kobe api"}}function z2(J,z=FZ()){return[`You are running inside kobe (a local multi-session task manager) as task ${J}.`,"kobe tracks a lifecycle status for this task on a board.","When you have COMPLETED the work requested in this session and verified it, report it by running:",` ${z} set-status --task-id ${J} --status in_review`,"Run it only when the work is genuinely done \u2014 never while you are asking the user a question, waiting for input, or mid-task.","Never set any other status value; everything beyond in_review is the user's decision."].join(`
36
+ `)}function Y2(J,z=FZ()){return["kobe shares hard-won discoveries between its parallel sessions as one-line field notes.","When you RESOLVE a non-obvious, repo-level gotcha (a build flag, a flaky test, an environment quirk, an API trap), file it:",` ${z} note --task-id ${J} --text "<one line: the verified conclusion>"`,"File only verified conclusions another session could act on \u2014 never progress logs, opinions, or details specific to your own task. A handful per session at most."].join(`
37
+ `)}function Z2(J,z=FZ(),Y={}){let Z=[];if((Y.status??vq)())Z.push(z2(J,z));if((Y.notes??KB)())Z.push(Y2(J,z));return Z.length>0?Z.join(`
38
+
39
+ `):null}function cq(J,z,Y,Z={}){if(!Y)return J;if((z??"claude")!=="claude")return J;if(J.includes("--append-system-prompt")||J.includes("--append-system-prompt-file"))return J;let G=Z2(Y,FZ(),Z);if(!G)return J;return[...J,"--append-system-prompt",G]}function G2(J,z=FZ()){return[`You are running inside kobe (a local multi-session task manager) as this repository's DISPATCHER (task ${J}, the repo's main session).`,"kobe runs multiple worktree task sessions on this repo in parallel. When one of them resolves a non-obvious gotcha, it files a one-line field note; kobe forwards each note to you as a user message prefixed with [KOBE FIELD NOTE].","Your job is routing that knowledge, fully autonomously \u2014 never ask the user for permission:",` - See the fleet: \`${z} collect --repo .\` (status, running, change counts per task), or \`--task-ids id1,id2\` for specific tasks.`,` - Relay a note to a task that would benefit: \`${z} dispatch --task-id <id> --prompt "[dispatcher] FYI from <author task>: <note verbatim>"\`.`," - Relay to the in-flight tasks whose work plausibly touches the same area \u2014 and to nobody else. If no task benefits, do nothing."," - Never relay a note back to its author, never relay the same note to the same task twice, and keep relays verbatim with provenance \u2014 no summarizing, no embellishment.","Use ONLY the dispatch verb to message sessions \u2014 the `send` verb pastes via tmux and would spawn a DUPLICATE engine for web-hosted sessions. If dispatch fails, report the error in your own session and stop; do not fall back.","Take no action on merge conflicts between tasks \u2014 the board's conflict radar is display-only by design, and resolution timing belongs to the humans and the tasks themselves.","Never run git commands inside other tasks' worktrees."].join(`
40
+ `)}function dq(J,z,Y,Z=KB){if(!Y||!Z())return J;if((z??"claude")!=="claude")return J;if(J.includes("--append-system-prompt")||J.includes("--append-system-prompt-file"))return J;return[...J,"--append-system-prompt",G2(Y)]}var UB,J2;var Yz=C(()=>{XY();QY();SX();mq();C1();_1();UB=Object.fromEntries(tY.map((J)=>[J,i1(J).displayName]));J2=new Set(["--session-id","--resume","-r","--continue","-c","--from-pr"])});var TK={};q1(TK,{archivedHistoryPreviewEnabled:()=>DB,ARCHIVED_HISTORY_PREVIEW_KEY:()=>yX});function DB(){return Bz(yX,!1)}var yX="experimental.archivedHistoryPreview";var nq=C(()=>{sz()});import{spawnSync as X2}from"child_process";function xK(J,z){if(J==="darwin")return"pbcopy";if(J==="linux"){for(let Y of Q2)if(z(Y.binary))return Y.command;return null}return null}function EK(J){let z=[["set-option","-g","set-clipboard","on"]];if(J)for(let Y of q2)for(let Z of H2)z.push(["bind-key","-T",Y,Z,"send-keys","-X","copy-pipe-and-cancel",J]);return z}var Q2,uK=(J)=>{try{let z=process.platform==="win32"?"where":"which";return X2(z,[J],{encoding:"utf8"}).status===0}catch{return!1}},q2,H2;var wK=C(()=>{Q2=[{binary:"wl-copy",command:"wl-copy"},{binary:"xclip",command:"xclip -selection clipboard -in"},{binary:"xsel",command:"xsel --clipboard --input"}];q2=["copy-mode","copy-mode-vi"],H2=["MouseDragEnd1Pane","y","Enter"]});import{existsSync as PK,readFileSync as f2}from"fs";function hK(){MZ=null}function j2(){let J=JV();if(PK(J))return{canonical:J,found:J};let z=J.replace(/\.yaml$/,".yml");if(PK(z))return{canonical:J,found:z};return{canonical:J,found:null}}function iq(){if(MZ)return MZ;let{canonical:J,found:z}=j2();if(!z)return MZ={path:J,exists:!1,doc:null,warnings:[]},MZ;let Y=[],Z=null;try{let G=f2(z,"utf8");Z=Bun.YAML.parse(G)}catch(G){let X=G instanceof Error?G.message:String(G);Y.push(`could not read/parse ${z}: ${X}`)}return MZ={path:J,exists:!0,doc:Z,warnings:Y},MZ}var MZ=null;var LB=C(()=>{p1()});function fG(J,z){let Y=`alternating [${J}, ${z}] pairs`;return{layout:Y,validateCount:(Z)=>Z>=2&&Z%2===0?null:`needs ${Y} (an even number of chords \u2014 got ${Z})`}}function L2(J,z){let Y=J.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:`"${J}": no key after the modifiers`};let X=new Set;for(let f of Z){let j=V2[f];if(!j)return{error:`"${J}": unknown modifier "${f}" (use ctrl / cmd / alt / shift)`};X.add(j)}if(G=K2[G]??G,X.has("shift")&&G.length===1&&!z?.allowShiftCharacter)return{error:`"${J}": shift+<character> can never match \u2014 terminals deliver shift+letter as a plain character, not a modifier event`};let Q=D2.filter((f)=>X.has(f)).join("+"),H=Q?`${Q}+${G}`:G;if(G.length>1&&!U2.has(G))return{chord:H,warning:`"${J}": unrecognized key name "${G}" \u2014 the chord may never fire`};return{chord:H}}function lq(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}function F2(J){if(J==="darwin")return["darwin","macos","mac"];if(J==="win32")return["win32","windows"];return[J]}function M2(J){if(!lq(J))return null;let z=J.bindings;if(lq(z))return z;return J}function $q(J,z,Y){let Z=[];if(J===null||J===void 0)return{entries:[],warnings:Z};if(!lq(J))return{entries:[],warnings:["config root must be a YAML mapping (e.g. a top-level `bindings:` key)"]};let G=new Map,X=[];if(J.bindings!==void 0)if(lq(J.bindings))X.push(J.bindings);else Z.push("`bindings:` must be a mapping of id \u2192 chord(s)");for(let Q of F2(z)){let H=J[Q];if(H===void 0)continue;let f=M2(H);if(f)X.push(f);else Z.push(`\`${Q}:\` must be a mapping (or contain a \`bindings:\` mapping)`)}for(let Q of X)for(let[H,f]of Object.entries(Q)){if(f===null||f===!1||Array.isArray(f)&&f.length===0){G.set(H,[]);continue}let j=typeof f==="string"?[f]:Array.isArray(f)?f:null;if(!j){Z.push(`${H}: expected a chord string, a list of chords, or null \u2014 got ${typeof f}`);continue}let V=[],B=!1;for(let K of j){if(typeof K!=="string"){Z.push(`${H}: chord entries must be strings`),B=!0;continue}let L=L2(K,Y?.chordOptsFor?.(H));if("error"in L){Z.push(`${H}: ${L.error}`),B=!0;continue}if(L.warning)Z.push(`${H}: ${L.warning}`);if(!V.includes(L.chord))V.push(L.chord)}if(V.length===0&&B){Z.push(`${H}: no valid chords \u2014 keeping the default`);continue}G.set(H,V)}return{entries:Array.from(G,([Q,H])=>({id:Q,keys:H})),warnings:Z}}function O2(J,z){return J===z||J==="global"||z==="global"}function vK(J,z){let Y=[],Z=[];for(let G of z){let X=J.find((B)=>B.id===G.id);if(!X){Y.push(`${G.id}: unknown binding id (press F1 in kobe for the full list)`);continue}let Q=FB[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 H=B2[G.id];if(H&&G.keys.length>0){let B=H.validateCount(G.keys.length);if(B){Y.push(`${G.id}: ${B} \u2014 keeping the default`);continue}}let f=G.keys.filter((B)=>{if(B.length===1&&W2.has(X.scope))return Y.push(`${G.id}: "${B}" dropped \u2014 a bare character on a ${X.scope}-scope binding would steal typed input (add a modifier)`),!1;return!0});if(f.length===0&&G.keys.length>0){Y.push(`${G.id}: no chords survived validation \u2014 keeping the default`);continue}if(H&&f.length!==G.keys.length){Y.push(`${G.id}: a dropped chord would shift the slot layout (${H.layout}) \u2014 keeping the default`);continue}let j=X.keys,V=X;if(V.keys=f,X.hint)if(f.length===0)V.hint=void 0;else X.hint.keys=f.join("/");Z.push({id:G.id,keys:f,defaultKeys:j})}for(let G of Z)for(let X of G.keys){let Q=J.find((H)=>H.id===G.id);if(!Q)continue;for(let H of J){if(H.id===G.id)continue;if(!H.keys.includes(X))continue;if(!O2(Q.scope,H.scope))continue;Y.push(`${G.id}: "${X}" also fires ${H.id} (${H.scope} scope) \u2014 last registration wins; consider a different chord`)}}return{applied:Z,warnings:Y}}var FB,B2,W2,V2,K2,U2,D2;var aq=C(()=>{FB={"focus.numeric":"pane focus is positional (h/j/k/l \u2192 pane) and mirrors the tmux-layer ctrl+hjkl bindings \u2014 rebind tmux.focus instead","sidebar.goto":"gg vs Shift+G is discriminated via evt.shift; shift+<letter> chords are inexpressible, so a rebind can't carry both halves","sidebar.pin":"fires on Shift+P via evt.shift; shift+<letter> chords are inexpressible, so a rebind can't work","sidebar.localMerge":"fires on Shift+M via evt.shift; shift+<letter> chords are inexpressible, so a rebind can't work","chat.question.nav":"the question picker has no live registration site (display-only row) \u2014 rebinding would change Help without changing behavior","chat.question.pick-number":"digits map to options positionally and the question picker has no live registration site (display-only row)"};B2={"sidebar.nav":fG("down","up"),"files.nav":fG("down","up"),"sidebar.search.nav":fG("down","up"),"files.hierarchy":fG("collapse","expand"),"sidebar.view":fG("previous view","next view"),"files.tab":fG("previous tab","next tab")},W2=new Set(["global","workspace","terminal"]),V2={ctrl:"ctrl",control:"ctrl",ctl:"ctrl",cmd:"cmd",command:"cmd",meta:"cmd",super:"cmd",win:"cmd",alt:"alt",option:"alt",opt:"alt",shift:"shift"},K2={esc:"escape",spacebar:"space",pgup:"pageup",pgdn:"pagedown",pgdown:"pagedown"},U2=new Set(["up","down","left","right","pageup","pagedown","home","end","insert","delete","backspace","tab","space","escape","enter","return",...Array.from({length:12},(J,z)=>`f${z+1}`)]),D2=["ctrl","cmd","alt","shift"]});function jG(J){return J in mK}function RZ(J,z){let Y=J.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:`"${J}": 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 f=R2[Z];if(!f)return{error:`"${J}": tmux can't bind the key "${Z}"`};X=f}let Q=/^f\d+$/.test(Z);if(G.size===0&&!Q&&!z?.allowBare)return{error:`"${J}": tmux session keys are no-prefix root bindings live in every pane \u2014 a bare key would shadow typing (add a modifier, or use an F-key)`};let H="";if(G.has("ctrl"))H+="C-";if(G.has("alt"))H+="M-";if(G.has("shift"))H+="S-";return{key:H+X}}function dK(){let J={};for(let[Y,Z]of Object.entries(AZ)){let G=RZ(Z,{allowBare:jG(Y)});if("error"in G)throw Error(`default tmux chord for ${Y} failed to translate: ${G.error}`);J[Y]={chord:Z,key:G.key}}let z=uY.map((Y)=>{let Z=RZ(Y);if("error"in Z)throw Error(`default tmux focus chord ${Y} failed to translate`);return{chord:Y,key:Z.key}});return{binds:J,focus:z,overridden:new Set,warnings:[]}}function MB(J){let z=dK(),Y=new Set;for(let Z of J){if(!Z.id.startsWith("tmux."))continue;if(Z.id===vz){if(Z.keys.length===0){z.focus=[null,null,null,null],Y.add(vz);continue}if(Z.keys.length!==uY.length){z.warnings.push(`${vz}: needs exactly 4 chords in order left/down/up/right (got ${Z.keys.length}) \u2014 keeping the default`);continue}let H=[],f=!0;for(let j of Z.keys){let V=RZ(j);if("error"in V){z.warnings.push(`${vz}: ${V.error} \u2014 keeping the default`),f=!1;break}H.push({chord:j,key:V.key})}if(!f)continue;z.focus=H,Y.add(vz);continue}if(!(Z.id in AZ)){z.warnings.push(`${Z.id}: unknown tmux binding id`);continue}let G=Z.id;if(Z.keys.length===0){z.binds[G]=null,Y.add(G);continue}if(Z.keys.length>1)z.warnings.push(`${G}: tmux bindings take ONE chord \u2014 using "${Z.keys[0]}", ignoring the rest`);let X=Z.keys[0],Q=RZ(X,{allowBare:jG(G)});if("error"in Q){z.warnings.push(`${G}: ${Q.error} \u2014 keeping the default`);continue}if(X!==AZ[G])Y.add(G);z.binds[G]={chord:X,key:Q.key}}return z.overridden=Y,z}function OB(J){return J.startsWith("tmux.")?{allowShiftCharacter:!0}:{}}function nK(){OZ=null}function _q(){if(OZ)return OZ;let J=iq();if(!J.exists||J.doc===null)return OZ=dK(),OZ;let z=$q(J.doc,process.platform,{chordOptsFor:OB}),Y=z.warnings.filter((G)=>G.startsWith("tmux.")),Z=MB(z.entries);Z.warnings=[...Y,...Z.warnings];for(let G of Z.warnings)console.warn(`[kobe/keybindings] ${G}`);return OZ=Z,OZ}var A2,mK,cK,AZ,vz="tmux.focus",uY,R2,OZ=null;var pq=C(()=>{LB();aq();A2={"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"},mK={"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"},cK=["F6","F7","F8","F9","F10","F11"],AZ={...A2,...mK};uY=["ctrl+h","ctrl+j","ctrl+k","ctrl+l"],R2={up:"Up",down:"Down",left:"Left",right:"Right",pageup:"PgUp",pagedown:"PgDn",home:"Home",end:"End",insert:"IC",delete:"DC",backspace:"BSpace",tab:"Tab",space:"Space",escape:"Escape",enter:"Enter",return:"Enter",...Object.fromEntries(Array.from({length:12},(J,z)=>[`f${z+1}`,`F${z+1}`]))}});async function TX(J,z){let Y=null;for(let G=0;G<24;G++){let X=await BG(J);if(X){if(!z)return{pane:X,ready:!0};let Q=(await WG(X)).trim();if(Q.length>0&&Q===Y)return{pane:X,ready:!0};Y=Q}await iK(250)}return{pane:await BG(J)||await AB(J),ready:!1}}async function xX(J,z){let Y=`kobe-api-${J.replace(/[^A-Za-z0-9]/g,"")}`;await d0(["set-buffer","-b",Y,"--",z]),await d0(["paste-buffer","-p","-d","-b",Y,"-t",J]),await iK(g2),await uX(J,"Enter")}async function lK(J,z){let{pane:Y}=await TX(J,!0);if(!Y)return;await xX(Y,z.text)}var iK=(J)=>new Promise((z)=>setTimeout(z,J)),g2=150;var rq=C(()=>{c1()});function $K(J,z){if(J===null)return{kind:"create",reason:"no session with this name \u2014 build fresh"};let Y=J.worktree===z.cwd,Z=!z.vendor||J.vendor===z.vendor;if(J.claudePaneAlive&&Y&&Z)return{kind:"reuse",reason:"healthy: engine pane alive, worktree + vendor match"};if(Y&&!Z&&z.hasEngineCommand)return{kind:"respawn-engine",reason:`vendor drift: session tagged ${J.vendor===""?"<untagged>":`"${J.vendor}"`}, task wants "${z.vendor}" \u2014 relaunch engine pane in place (KOB-232)`};if(Y&&Z&&J.windowCount>1)return{kind:"reuse",reason:"active window's engine pane is gone but sibling chat tabs exist \u2014 reuse rather than drop them"};if(!Y)return{kind:"rebuild",reason:J.worktree===""?"legacy session with no @kobe_worktree tag \u2014 rebuild in the right place":`worktree drift: session tagged "${J.worktree}", task wants "${z.cwd}" \u2014 rebuild`};if(!Z)return{kind:"rebuild",reason:"vendor drift but no engine command to respawn with \u2014 rebuild"};return{kind:"rebuild",reason:"single-window session whose engine pane was destroyed \u2014 rebuild"}}var VG;var oq=C(()=>{VG={$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 KG;var sq=C(()=>{KG={$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 UG;var tq=C(()=>{UG={$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 DG;var eq=C(()=>{DG={$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 LG;var JH=C(()=>{LG={$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 FG;var zH=C(()=>{FG={$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 MG;var YH=C(()=>{MG={$schema:"https://opencode.ai/theme.json",defs:{darkStep1:"#1a1b26",darkStep2:"#1e2030",darkStep3:"#222436",darkStep4:"#292e42",darkStep5:"#3b4261",darkStep6:"#545c7e",darkStep7:"#737aa2",darkStep8:"#9099b2",darkStep9:"#82aaff",darkStep10:"#89b4fa",darkStep11:"#828bb8",darkStep12:"#c8d3f5",darkRed:"#ff757f",darkOrange:"#ff966c",darkYellow:"#ffc777",darkGreen:"#c3e88d",darkCyan:"#86e1fc",darkPurple:"#c099ff",lightStep1:"#e1e2e7",lightStep2:"#d5d6db",lightStep3:"#c8c9ce",lightStep4:"#b9bac1",lightStep5:"#a8aecb",lightStep6:"#9699a8",lightStep7:"#737a8c",lightStep8:"#5a607d",lightStep9:"#2e7de9",lightStep10:"#1a6ce7",lightStep11:"#8990a3",lightStep12:"#3760bf",lightRed:"#f52a65",lightOrange:"#b15c00",lightYellow:"#8c6c3e",lightGreen:"#587539",lightCyan:"#007197",lightPurple:"#9854f1"},theme:{primary:{dark:"darkStep9",light:"lightStep9"},secondary:{dark:"darkPurple",light:"lightPurple"},accent:{dark:"darkOrange",light:"lightOrange"},error:{dark:"darkRed",light:"lightRed"},warning:{dark:"darkOrange",light:"lightOrange"},success:{dark:"darkGreen",light:"lightGreen"},info:{dark:"darkStep9",light:"lightStep9"},text:{dark:"darkStep12",light:"lightStep12"},textMuted:{dark:"darkStep11",light:"lightStep11"},background:{dark:"darkStep1",light:"lightStep1"},backgroundPanel:{dark:"darkStep2",light:"lightStep2"},backgroundElement:{dark:"darkStep3",light:"lightStep3"},border:{dark:"darkStep7",light:"lightStep7"},borderActive:{dark:"darkStep8",light:"lightStep8"},borderSubtle:{dark:"darkStep6",light:"lightStep6"},diffAdded:{dark:"#4fd6be",light:"#1e725c"},diffRemoved:{dark:"#c53b53",light:"#c53b53"},diffContext:{dark:"#828bb8",light:"#7086b5"},diffHunkHeader:{dark:"#828bb8",light:"#7086b5"},diffHighlightAdded:{dark:"#b8db87",light:"#4db380"},diffHighlightRemoved:{dark:"#e26a75",light:"#f52a65"},diffAddedBg:{dark:"#20303b",light:"#d5e5d5"},diffRemovedBg:{dark:"#37222c",light:"#f7d8db"},diffContextBg:{dark:"darkStep2",light:"lightStep2"},diffLineNumber:{dark:"#8f909a",light:"#59595b"},diffAddedLineNumberBg:{dark:"#1b2b34",light:"#c5d5c5"},diffRemovedLineNumberBg:{dark:"#2d1f26",light:"#e7c8cb"},markdownText:{dark:"darkStep12",light:"lightStep12"},markdownHeading:{dark:"darkPurple",light:"lightPurple"},markdownLink:{dark:"darkStep9",light:"lightStep9"},markdownLinkText:{dark:"darkCyan",light:"lightCyan"},markdownCode:{dark:"darkGreen",light:"lightGreen"},markdownBlockQuote:{dark:"darkYellow",light:"lightYellow"},markdownEmph:{dark:"darkYellow",light:"lightYellow"},markdownStrong:{dark:"darkOrange",light:"lightOrange"},markdownHorizontalRule:{dark:"darkStep11",light:"lightStep11"},markdownListItem:{dark:"darkStep9",light:"lightStep9"},markdownListEnumeration:{dark:"darkCyan",light:"lightCyan"},markdownImage:{dark:"darkStep9",light:"lightStep9"},markdownImageText:{dark:"darkCyan",light:"lightCyan"},markdownCodeBlock:{dark:"darkStep12",light:"lightStep12"},syntaxComment:{dark:"darkStep11",light:"lightStep11"},syntaxKeyword:{dark:"darkPurple",light:"lightPurple"},syntaxFunction:{dark:"darkStep9",light:"lightStep9"},syntaxVariable:{dark:"darkRed",light:"lightRed"},syntaxString:{dark:"darkGreen",light:"lightGreen"},syntaxNumber:{dark:"darkOrange",light:"lightOrange"},syntaxType:{dark:"darkYellow",light:"lightYellow"},syntaxOperator:{dark:"darkCyan",light:"lightCyan"},syntaxPunctuation:{dark:"darkStep12",light:"lightStep12"}}}});var aK;var _K=C(()=>{oq();sq();tq();eq();JH();zH();YH();aK={claude:VG,conductor:KG,nord:DG,opencode:LG,dracula:UG,tokyonight:MG,"osaka-jade":FG}});function T2(J){let z=/^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/.exec(J);if(!z)return null;let Y=z[1];if(Y.length===3){let[Z,G,X]=Y;return`#${Z}${Z}${G}${G}${X}${X}`.toLowerCase()}return`#${Y.slice(0,6)}`.toLowerCase()}function pK(J,z,Y="dark"){let Z=J.defs??{};function G(Q,H){if(typeof Q==="string"){if(Q==="transparent"||Q==="none")return null;if(Q.startsWith("#"))return T2(Q);if(H.includes(Q))return null;let j=Z[Q]??J.theme[Q];if(j===void 0)return null;return G(j,[...H,Q])}if(!Q||typeof Q!=="object")return null;let f=Q[Y];return typeof f==="string"?G(f,H):null}let X=J.theme[z];if(X===void 0)return null;return G(X,[z])}function ZH(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}function GH(J){if(!ZH(J))return{ok:!1,reason:"theme must be a JSON object at the top level"};let z=J;if(!("theme"in z))return{ok:!1,reason:"missing required key `theme`"};let Y=z.theme;if(!ZH(Y))return{ok:!1,reason:"`theme` must be an object map"};if("defs"in z&&z.defs!==void 0){if(!ZH(z.defs))return{ok:!1,reason:"`defs` must be an object map"};for(let[Z,G]of Object.entries(z.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(!ZH(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 z&&z.$schema!==void 0&&typeof z.$schema!=="string")return{ok:!1,reason:"`$schema` must be a string when present"};return{ok:!0,theme:z}}var RB=()=>{};import{readFileSync as x2,readdirSync as u2}from"fs";import{join as rK}from"path";function OG(){return rK(XJ(),"themes")}function EX(){let J=OG(),z;try{z=u2(J)}catch{return[]}let Y=[];for(let Z of z){if(!Z.endsWith(".json"))continue;let G=rK(J,Z),X;try{let f=x2(G,"utf8");X=JSON.parse(f)}catch(f){let j=f instanceof Error?f.message:String(f);console.warn(`[kobe] skipping user theme ${G}: invalid JSON \u2014 ${j}`);continue}let Q=GH(X);if(!Q.ok){console.warn(`[kobe] skipping user theme ${G}: ${Q.reason}`);continue}let H=Z.slice(0,-5);Y.push({name:H,theme:Q.theme})}return Y}var XH=C(()=>{p1();RB()});import{readFileSync as E2}from"fs";function P2(){try{let J=JSON.parse(E2(oJ(),"utf8")),z=typeof J.activeTheme==="string"&&J.activeTheme?J.activeTheme:"claude",Y=typeof J.focusAccent==="string"&&w2.includes(J.focusAccent)?J.focusAccent:"primary";return{themeName:z,focusAccentSlot:Y,enabled:J.tmuxChromeTheme!=="off"&&J.tmuxBorderTheme!=="off"}}catch{return{themeName:"claude",focusAccentSlot:"primary",enabled:!0}}}function h2(J){return EX().find((Y)=>Y.name===J)?.theme??aK[J]??null}function gz(J,...z){for(let Y of z){let Z=pK(J,Y);if(Z)return Z}return null}function oK(J,z){let Y=gz(J,"text"),Z=gz(J,"background"),G=gz(J,"textMuted","text"),X=gz(J,"backgroundPanel","background"),Q=gz(J,"backgroundElement","backgroundPanel","background"),H=gz(J,"backgroundMenu","backgroundElement","backgroundPanel","background"),f=gz(J,"selectedListItemText","background"),j=gz(J,z,"primary","borderActive","border","text");return{border:gz(J,"border","text"),activeBorder:j,statusBg:X,statusFg:G,statusMutedFg:G,windowFg:G,currentWindowBg:Q,currentWindowFg:j,activityFg:gz(J,"info","primary","text"),bellFg:gz(J,"warning","error","primary","text"),messageBg:H,messageFg:Y,messageCommandFg:j,modeBg:j,modeFg:f??Z}}function Zz(J){let z=[];if(J.bg)z.push(`bg=${J.bg}`);if(J.fg)z.push(`fg=${J.fg}`);if(z.length===0)return null;if(J.attrs)z.push(...J.attrs);return z.join(",")}function tK(J){let z=Zz({bg:J.statusBg,fg:J.statusFg}),Y=Zz({bg:J.statusBg,fg:J.statusMutedFg}),Z=Zz({bg:J.statusBg,fg:J.windowFg});return[{key:"border",option:"pane-border-style",showFlag:"-gwqv",setFlag:"-gw",unsetFlag:"-gwu",value:Zz({fg:J.border})},{key:"active",option:"pane-active-border-style",showFlag:"-gwqv",setFlag:"-gw",unsetFlag:"-gwu",value:Zz({fg:J.activeBorder})},{key:"status",option:"status-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:z},{key:"status-left",option:"status-left-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Y},{key:"status-right",option:"status-right-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Y},{key:"window",option:"window-status-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Z},{key:"current-window",option:"window-status-current-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Zz({bg:J.currentWindowBg,fg:J.currentWindowFg,attrs:["bold"]})},{key:"activity-window",option:"window-status-activity-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Zz({bg:J.statusBg,fg:J.activityFg})},{key:"bell-window",option:"window-status-bell-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Zz({bg:J.statusBg,fg:J.bellFg,attrs:["bold"]})},{key:"last-window",option:"window-status-last-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Zz({bg:J.statusBg,fg:J.statusFg})},{key:"message",option:"message-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Zz({bg:J.messageBg,fg:J.messageFg})},{key:"message-command",option:"message-command-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Zz({bg:J.messageBg,fg:J.messageCommandFg,attrs:["bold"]})},{key:"mode",option:"mode-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Zz({bg:J.modeBg,fg:J.modeFg})},{key:"display-panes",option:"display-panes-colour",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:J.border},{key:"display-panes-active",option:"display-panes-active-colour",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:J.activeBorder}]}function v2(J){let z=new Set(J.marker.split(",").map((X)=>X.trim()).filter(Boolean)),Y=[],Z=[];for(let X of tK(J.hexes))if(X.value){if((J.current[X.key]??"")!==X.value)Y.push(["set-option",X.setFlag,X.option,X.value]);Z.push(X.key)}else if(z.has(X.key))Y.push(["set-option",X.unsetFlag,X.option]);let G=Z.join(",");if(G!==J.marker)Y.push(G?["set-option","-g",gB,G]:["set-option","-gu",gB]);return Y}async function sK(J){let{code:z,stdout:Y}=await a0(J);return z===0?Y.trim():""}async function gZ(){try{let J=P2(),z=J.enabled?h2(J.themeName):null,Y=z?oK(z,J.focusAccentSlot):oK({theme:{}},J.focusAccentSlot),Z=tK(Y),[G,...X]=await Promise.all([sK(["show-options","-gqv",gB]),...Z.map((f)=>sK(["show-options",f.showFlag,f.option]))]),Q=Object.fromEntries(Z.map((f,j)=>[f.key,X[j]??""])),H=v2({marker:G,current:Q,hexes:Y});if(H.length>0)await $1(H)}catch{}}var gB="@kobe_border_theme",w2;var QH=C(()=>{p1();c1();_K();XH();w2=["primary","success","info"]});function eK(){return Bz(qH,!0)}function HH(){return Bz(JU,!1)}function zU(J){WV(JU,J)}var qH="zen.keepTasks",JU="zen.active";var NB=C(()=>{sz()});var fH={};q1(fH,{recordGen:()=>EY,isLatestGen:()=>QU,genAgeMs:()=>$2,coalesceLayoutWork:()=>a2,RESIZE_GUARD_MS:()=>l2,LAYOUT_COALESCE_MS:()=>GU});import{createHash as m2,randomUUID as c2}from"crypto";import{mkdirSync as d2,readFileSync as YU,renameSync as n2,writeFileSync as i2}from"fs";import{join as ZU}from"path";function XU(){return ZU(XJ(),"layout-coord")}function CB(J,z){let Y=m2("sha1").update(J).digest("hex").slice(0,16);return ZU(XU(),`${Y}.${z}`)}function EY(J,z){let Y=c2();try{d2(XU(),{recursive:!0});let Z=CB(J,z),G=`${Z}.${Y}.tmp`;i2(G,`${Date.now()}
41
+ ${Y}`),n2(G,Z)}catch{}return Y}function QU(J,z,Y){try{return YU(CB(J,z),"utf8").split(`
42
+ `)[1]?.trim()===Y}catch{return!0}}function $2(J,z,Y=Date.now()){try{let Z=Number.parseInt(YU(CB(J,z),"utf8").split(`
43
+ `)[0]??"",10);return Number.isFinite(Z)?Y-Z:Number.POSITIVE_INFINITY}catch{return Number.POSITIVE_INFINITY}}async function a2(J,z,Y,Z=GU){let G=EY(J,z);if(Z>0)await new Promise((X)=>setTimeout(X,Z));if(!QU(J,z,G))return;await Y()}var GU=120,l2=400;var AG=C(()=>{p1()});function p2(J){let z=[];for(let Y of J.split(`
44
+ `)){let Z=Y.trim();if(!Z)continue;let[G,X,Q,H,f]=Z.split("\t");if(!G||!X||!Q)continue;let j=Number.parseInt(f?.trim()??"",10);z.push({windowId:G.trim(),paneId:X.trim(),role:Q.trim(),version:H?.trim()??"",...Number.isFinite(j)?{paneWidth:j}:{}})}return z}function r2(J){let z=J.indexOf("-t");return z>=0&&z+1<J.length?J[z+1]??null:null}function o2(J,z){return J.filter((Y)=>{let Z=r2(Y);return Z===null||z.has(Z)})}function qU(J,z){let Y=new Map;for(let G of J){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((j)=>j.role==="claude")?.paneId,Q=G.find((j)=>j.role==="tasks"),H=G.find((j)=>j.role==="ops");if(Q&&(z.force||Q.version!==z.currentVersion))Z.push({role:"tasks",paneId:Q.paneId});let f=z.force?!0:X&&(z.vendorChanged||H?.version!==z.currentVersion);if(H&&f)Z.push({role:"ops",paneId:H.paneId,claudePaneId:X??null})}return Z}async function jH(J){let{code:z,stdout:Y}=await a0(["list-panes","-s","-t",`=${J}`,"-F",_2]);if(z!==0)return null;return p2(Y)}async function HU(J,z){if(z.length===0)return;let Y=await jH(J),Z=Y?o2(z,new Set(Y.map((G)=>G.paneId))):z;if(Z.length>0)await $1(Z)}function fU(J,z){let Y=y1(),Z=l1(),G=[];for(let X of J){let Q=X.role==="tasks"?IY(Y,{initialTaskId:z.taskId}):oZ({cwd:z.cwd,taskId:z.taskId,claudePaneId:X.claudePaneId,cliInvocation:Y,vendor:z.vendor});G.push(["respawn-pane","-k","-t",X.paneId,"-c",m1(z.cwd),TJ(Z+Q)],["set-option","-p","-t",X.paneId,"@kobe_role",X.role],["set-option","-p","-t",X.paneId,Nz,J1])}return G}function s2(J,z){if(J===0)return"no-engine-pane";return z===0?"switched":"respawn-failed"}async function jU(J,z,Y,Z,G){let X=await jH(J);if(!X)return"no-engine-pane";let Q=X.filter((B)=>B.role==="claude");if(Q.length===0)return"no-engine-pane";let H=m1(z),f=rZ(l1(),y1(),J),j=[];for(let B of Q){let K=HG(Y,G),L=TJ(qG(yJ(K.argv),Z,z),f);j.push(["respawn-pane","-k","-c",H,"-t",B.paneId,L]),j.push(K.sessionId?["set-window-option","-t",B.paneId,mz,K.sessionId]:["set-window-option","-u","-t",B.paneId,mz])}let V=await $1(j);return s2(Q.length,V)}async function BU(){return(await cz()).rightColumnResizeArgs}async function kB(J,z={}){let{tasksWidth:Y,rightColumnResizeArgs:Z}=await cz(),G=await jH(J);if(!G)return{rows:null,commands:[]};let X=[];for(let Q of G)if(Q.role==="tasks"&&(z.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 NZ(J,z){EY(J,"resize");let{rows:Y,commands:Z}=await kB(J);if(!Y)return;let G=[...Z];if(z)G.push(...fU(qU(Y,{currentVersion:J1,force:!1,vendorChanged:z.vendorChanged}),z));await HU(J,G)}async function WU(J){if(!await K1(J))return;await NZ(J)}async function bB(J){let{code:z,stdout:Y}=await a0(["list-panes","-t",`=${J}`,"-F",`#{@kobe_role} #{pane_width} #{pane_height} #{window_width} #{window_height} #{window_zoomed_flag} #{${Dz}} #{${IJ}}`]);if(z!==0)return;let Z=Y.split(`
45
+ `).map((j)=>j.split("\t")).filter((j)=>(j[0]?.trim()??"")!=="");if(Z.length===0)return;if(Z.some((j)=>j[5]?.trim()==="1"))return;if(Z.some((j)=>(j[6]?.trim()??"")!==""))return;if(Z.some((j)=>(j[7]?.trim()??"")!==""))return;if(!Z.some((j)=>j[0]?.trim()==="shell"))return;let G=Number.parseInt(Z[0][3]?.trim()??"",10),X=Number.parseInt(Z[0][4]?.trim()??"",10),Q=[],H=Z.find(([j])=>j?.trim()==="tasks");if(H){let j=Number.parseInt(H[1]?.trim()??"",10);if(Number.isFinite(j)&&j>0)Q.push(["set-option","-s",qq,`${Nj(j)}`])}let f=Z.find(([j])=>j?.trim()==="ops");if(f&&Number.isFinite(G)&&G>0&&Number.isFinite(X)&&X>0){let j=Number.parseInt(f[1]?.trim()??"",10),V=Number.parseInt(f[2]?.trim()??"",10),B=Number.isFinite(j)?QZ(100*j/G):null,K=Number.isFinite(V)?QZ(100*V/X):null;if(B!==null)Q.push(["set-option","-s",Hq,`${B}`]);if(K!==null)Q.push(["set-option","-s",fq,`${K}`])}if(Q.length>0)await $1(Q)}function t2(J){let z=J.split(`
46
+ `).map((Z)=>Z.split("\t")).filter((Z)=>(Z[0]?.trim()??"")!=="");if(z.length===0)return!1;if(z.some((Z)=>Z[1]?.trim()==="1"))return!1;if(z.some((Z)=>(Z[2]?.trim()??"")!==""))return!1;if(z.some((Z)=>(Z[3]?.trim()??"")!==""))return!1;let Y=new Set(z.map((Z)=>Z[0]?.trim()));return Y.has("tasks")&&Y.has("ops")&&Y.has("shell")}async function VU(J){let{code:z,stdout:Y}=await a0(["list-panes","-t",`=${J}`,"-F",`#{@kobe_role} #{window_zoomed_flag} #{${Dz}} #{${IJ}}`]);if(z!==0||!t2(Y))return;await bB(J)}async function RG(J){let z=await uJ(J,["@kobe_worktree","@kobe_task","@kobe_vendor"]),Y=z["@kobe_worktree"]||process.cwd(),Z=z["@kobe_task"]||void 0,G=z["@kobe_vendor"]||void 0,X=await jH(J);if(!X)return;let Q=fU(qU(X,{currentVersion:J1,force:!0}),{cwd:Y,taskId:Z,vendor:G});await HU(J,Q),await gZ()}var Nz="@kobe_pane_version",_2;var wX=C(()=>{XY();Yz();Oz();c1();Lz();QH();NJ();KZ();AG();_2=`#{window_id} #{pane_id} #{@kobe_role} #{${Nz}} #{pane_width}`});var hB={};q1(hB,{syncSessionZen:()=>VH,runLayoutAction:()=>CZ,resolveShellPane:()=>BH,planWorkspaceSplit:()=>UU,parseLayoutPaneRows:()=>KU,expandedTerminalHeightPercent:()=>DU,engineTabExit:()=>DN,applyZenToNewWindow:()=>PB});function KU(J){let z=[];for(let Y of J.split(`
47
+ `)){let Z=Y.trim();if(!Z)continue;let[G,X,Q,H,f,j,V]=Z.split("\t");if(!G)continue;let B=Number.parseInt(H??"",10),K=Number.parseInt(f??"",10),L=Number.parseInt(j??"",10),A=Number.parseInt(V??"",10);z.push({paneId:G.trim(),role:X?.trim()??"",active:Q?.trim()==="1",paneWidth:Number.isFinite(B)?B:0,paneHeight:Number.isFinite(K)?K:0,windowWidth:Number.isFinite(L)?L:0,windowHeight:Number.isFinite(A)?A:0})}return z}function UU(J){let z=J.find((Z)=>Z.role===qZ);if(!z)return{kind:"missing-engine"};let Y=J.filter((Z)=>Z.role===WX);if(Y.length+1>=gj)return{kind:"maxed"};if(Y.length===0)return{kind:"split",targetPane:z.paneId,direction:"-h"};if(Y.length===1)return{kind:"split",targetPane:Y[0]?.paneId??z.paneId,direction:"-v"};return{kind:"split",targetPane:z.paneId,direction:"-v"}}function BH(J){return J.find((z)=>z.role===Uz)??J.find((z)=>z.role==="")}function DU(J){return 100-(QZ(J??Number.NaN)??KX)}async function dJ(J,z){let Y=z?.trim()||`=${J}`,{code:Z,stdout:G}=await a0(["list-panes","-t",Y,"-F",e2]);return Z===0?KU(G):null}async function SB(J){let{code:z,stdout:Y}=await a0(["list-windows","-t",`=${J}`,"-F","#{window_active}\t#{window_id}"]);if(z!==0)return"";for(let Z of Y.split(`
48
+ `)){let[G,X]=Z.split("\t");if(G?.trim()==="1"&&X?.trim())return X.trim()}return""}async function fY(J,z){let{code:Y,stdout:Z}=await a0(["show-options","-wqv","-t",J,z]);return Y===0?Z.trim():""}async function yB(J,z,Y){await d0(["set-window-option","-t",J,z,Y])}async function wY(J,z){await d0(["set-window-option","-u","-t",J,z])}async function TB(J){let{code:z,stdout:Y}=await a0(["display-message","-p","-t",J,"#{pane_id}"]);return z===0&&Y.trim()===J}async function E1(J,z){await d0(["display-message","-t",J,z])}async function WH(J){let z=await uJ(J,["@kobe_worktree","@kobe_task","@kobe_vendor"]);return{cwd:z["@kobe_worktree"]||process.cwd(),taskId:z["@kobe_task"]||void 0,vendor:z["@kobe_vendor"]||void 0}}function JN(J){let z=y1(),Y=l1();return TJ(Y+oZ({cwd:J.cwd,taskId:J.taskId,claudePaneId:J.enginePaneId,cliInvocation:z,vendor:J.vendor}))}async function zN(J,z){return z?.trim()||await SB(J)}async function YN(J,z){let Y=await dJ(J,z);if(!Y)return;let Z=UU(Y);if(Z.kind==="missing-engine"){await E1(z,"kobe: no engine pane in this window");return}if(Z.kind==="maxed"){await E1(z,`kobe: workspace split limit is ${gj} panes`);return}let{cwd:G}=await WH(J),{code:X,stdout:Q}=await a0(["split-window",Z.direction,"-t",Z.targetPane,"-l","50%","-c",m1(G),"-P","-F","#{pane_id}",TJ("true")]),H=Q.trim();if(X!==0||!H)return;await $1([["set-option","-p","-t",H,"@kobe_role",WX],["select-pane","-t",H]])}async function ZN(J,z){let Y=await dJ(J,z);if(!Y)return;let Z=Y.filter((Q)=>Q.role===WX);if(Z.length===0){await E1(z,"kobe: no workspace split to close");return}let X=Z.find((Q)=>Q.active)??Z[Z.length-1];if(!X)return;await d0(["kill-pane","-t",X.paneId])}async function GN(J,z){let Y=await dJ(J,z);if(!Y)return;let Z=Y.filter((G)=>G.role===WX);if(Z.length===0){await E1(z,"kobe: no workspace splits to reset");return}await $1(Z.map((G)=>["kill-pane","-t",G.paneId]))}async function LU(){return(await cz()).tasksWidth}async function XN(J){let{cwd:z,taskId:Y}=await WH(J),Z=y1(),G=l1();return{cwd:z,command:TJ(G+IY(Z,{initialTaskId:Y}))}}async function FU(J,z){let Y=await dJ(J,z);if(!Y)return;let Z=Y.find((O)=>O.role===Kz);if(Z){await d0(["kill-pane","-t",Z.paneId]);return}let G=BH(Y),X=Y.find((O)=>O.role===qZ);if(!X){await E1(z,"kobe: cannot restore file pane in this layout");return}let{cwd:Q,taskId:H,vendor:f}=await WH(J),j=JN({cwd:Q,taskId:H,vendor:f,enginePaneId:X.paneId}),V=G?["split-window","-v","-b","-t",G.paneId,"-l",`${await QN()}%`,"-c",m1(Q),"-P","-F","#{pane_id}",j]:["split-window","-h","-t",X.paneId,"-l",`${await xB()}%`,"-c",m1(Q),"-P","-F","#{pane_id}",j],{code:B,stdout:K}=await a0(V),L=K.trim();if(B!==0||!L)return;let A=[["set-option","-p","-t",L,"@kobe_role",Kz],["set-option","-p","-t",L,Nz,J1]];if(G?.role==="")A.push(["set-option","-p","-t",G.paneId,"@kobe_role",Uz]);await $1(A)}async function QN(){return(await cz()).opsHeightPct}async function xB(){return(await cz()).rightColumnWidthPct}async function MU(){return DU((await cz()).opsHeightPct)}async function qN(J){let{code:z,stdout:Y}=await a0(["list-windows","-t",`=${J}`,"-F","#{window_index}"]);if(z!==0)return new Set;return new Set(Y.split(`
49
+ `).map((Z)=>Number.parseInt(Z.trim(),10)).filter((Z)=>Number.isFinite(Z)))}async function OU(J,z){let Y=await qN(J),Z=eV(z);while(Y.has(Z))Z++;return Z}async function AU(J){let z=VX(J);if(await K1(z))return z;return await d0(["new-session","-d","-s",z,"-n","hidden-panes","-c",m1(process.cwd()),"while :; do sleep 3600; done"]),z}async function uB(J){let z=VX(J);if(!await K1(z))return;let{code:Y,stdout:Z}=await a0(["list-panes","-s","-t",`=${z}`,"-F","#{@kobe_role}"]);if(Y!==0)return;if(!Z.split(`
50
+ `).some((X)=>{let Q=X.trim();return Q===Uz||Q===eJ}))await d0(["kill-session","-t",`=${z}`])}async function HN(J,z){await RU(J,z,Dz)}async function fN(J,z){await RU(J,z,IJ)}async function RU(J,z,Y){let Z=await fY(z,Y);if(!Z)return;if(await TB(Z))await d0(["kill-pane","-t",Z]);await wY(z,Y)}async function IB(J,z){await HN(J,z),await fN(J,z),await uB(J)}function gU(J){return J.find((z)=>z.role===qZ)??J[0]}async function EB(J,z,Y){let Z=gU(Y);if(!Z)return await E1(z,"kobe: cannot restore Tasks pane in this layout"),!1;let G=await LU(),{cwd:X,command:Q}=await XN(J),{code:H,stdout:f}=await a0(["split-window","-h","-b","-t",Z.paneId,"-l",`${G}`,"-c",m1(X),"-P","-F","#{pane_id}",Q]),j=f.trim();if(H!==0||!j)return!1;return await $1([["set-option","-p","-t",j,"@kobe_role",eJ],["set-option","-p","-t",j,Nz,J1],["select-pane","-t",j]]),await wY(z,IJ),await E1(z,"kobe: Tasks pane restored"),!0}async function NU(J,z,Y){let Z=await AU(J),G=await OU(Z,z),{code:X,stdout:Q}=await a0(["break-pane","-d","-s",Y.paneId,"-t",`${Z}:${G}`,"-P","-F","#{pane_id}"]),H=Q.trim()||Y.paneId;if(X!==0||!H){await E1(z,"kobe: could not hide Tasks pane");return}await yB(z,IJ,H),await E1(z,"kobe: Tasks pane hidden")}async function wB(J,z,Y){let Z=await dJ(J,z);if(!Z)return;if(!await TB(Y)){await wY(z,IJ);let Q=Z.find((H)=>H.role===eJ);if(Q){await d0(["select-pane","-t",Q.paneId]);return}await EB(J,z,Z);return}let G=gU(Z);if(!G){await E1(z,"kobe: cannot restore Tasks pane in this layout");return}if(await d0(["join-pane","-h","-b","-s",Y,"-t",G.paneId,"-l",`${await LU()}`])!==0){await E1(z,"kobe: could not restore Tasks pane");return}await $1([["set-option","-p","-t",Y,"@kobe_role",eJ],["set-option","-p","-t",Y,Nz,J1],["select-pane","-t",Y]]),await wY(z,IJ),await uB(J),await E1(z,"kobe: Tasks pane restored")}async function jN(J,z){let Y=await fY(z,IJ);if(Y){await wB(J,z,Y);return}let Z=await dJ(J,z);if(!Z)return;let G=Z.find((X)=>X.role===eJ);if(G){await NU(J,z,G);return}await EB(J,z,Z)}async function BN(J,z){let Y=await fY(z,IJ);if(Y){await wB(J,z,Y);return}let Z=await dJ(J,z);if(!Z)return;let G=Z.find((X)=>X.role===eJ);if(G){await d0(["select-pane","-t",G.paneId]);return}await EB(J,z,Z)}async function CU(J,z,Y){if(Y.role==="")await d0(["set-option","-p","-t",Y.paneId,"@kobe_role",Uz]);let Z=await AU(J),G=await OU(Z,z),{code:X,stdout:Q}=await a0(["break-pane","-d","-s",Y.paneId,"-t",`${Z}:${G}`,"-P","-F","#{pane_id}"]),H=Q.trim()||Y.paneId;if(X!==0||!H){await E1(z,"kobe: could not hide terminal pane");return}await yB(z,Dz,H),await E1(z,"kobe: Terminal pane hidden")}async function kU(J,z,Y){let Z=Y.find((V)=>V.role===Kz),G=Y.find((V)=>V.role===qZ);if(!Z&&!G)return await E1(z,"kobe: cannot restore terminal pane in this layout"),!1;let{cwd:X}=await WH(J),Q=Z?["split-window","-v","-t",Z.paneId,"-l",`${await MU()}%`,"-c",m1(X),"-P","-F","#{pane_id}"]:["split-window","-h","-t",G?.paneId??"","-l",`${await xB()}%`,"-c",m1(X),"-P","-F","#{pane_id}"],{code:H,stdout:f}=await a0(Q),j=f.trim();if(H!==0||!j)return!1;return await d0(["set-option","-p","-t",j,"@kobe_role",Uz]),await wY(z,Dz),await E1(z,"kobe: Terminal pane restored"),!0}async function bU(J,z,Y){let Z=await dJ(J,z);if(!Z)return;if(!await TB(Y)){await wY(z,Dz),await kU(J,z,Z);return}let G=Z.find((j)=>j.role===Kz),X=Z.find((j)=>j.role===qZ);if(!G&&!X){await E1(z,"kobe: cannot restore terminal pane in this layout");return}let Q=G?["join-pane","-v","-s",Y,"-t",G.paneId,"-l",`${await MU()}%`]:["join-pane","-h","-s",Y,"-t",X?.paneId??"","-l",`${await xB()}%`];if(await d0(Q)!==0){await E1(z,"kobe: could not restore terminal pane");return}await d0(["set-option","-p","-t",Y,"@kobe_role",Uz]),await wY(z,Dz),await uB(J),Z=await dJ(J,z);let f=Z?.find((j)=>j.paneId===Y);if(f)await d0(["select-pane","-t",f.paneId]);await E1(z,"kobe: Terminal pane restored")}async function WN(J,z){let Y=await fY(z,Dz);if(Y){await bU(J,z,Y);return}let Z=await dJ(J,z);if(!Z)return;let G=BH(Z);if(G){await CU(J,z,G);return}await kU(J,z,Z)}async function VN(J){let z=HH();if(zU(!z),z){await TU(J);return}await yU(J)}async function VH(J){if(!await K1(J))return;let z=HH(),Y=(await kZ(J,pZ)).length>0;if(z===Y)return;if(z)await yU(J);else await TU(J)}async function SU(J){let{code:z,stdout:Y}=await a0(["list-windows","-t",`=${J}`,"-F","#{window_id}"]);if(z!==0)return[];return Y.split(`
51
+ `).map((Z)=>Z.trim()).filter((Z)=>Z.length>0)}async function IU(J,z){return!!(await dJ(J,z))?.some((Z)=>Z.role===qZ)}async function yU(J){let z=await SU(J);for(let Y of z){if(!await IU(J,Y))continue;if(await fY(Y,SY))continue;await xU(J,Y)}await jY(J,pZ,"1"),await E1(`=${J}`,"kobe: Zen mode on \u2014 all tabs")}async function TU(J){let z=await SU(J);for(let Y of z){let Z=await fY(Y,SY);if(Z)await KN(J,Y,Z)}await d0(["set-option","-u","-t",J,pZ]),await E1(`=${J}`,"kobe: Zen mode off \u2014 all tabs")}async function PB(J,z){let Y=(await kZ(J,pZ)).length>0;if(!Y&&!HH())return;if(!Y)await jY(J,pZ,"1");if(await fY(z,SY))return;if(!await IU(J,z))return;await xU(J,z)}async function xU(J,z){let Y=await dJ(J,z);if(!Y)return;let Z=[],G=Y.find((Q)=>Q.role===Kz);if(G)await d0(["kill-pane","-t",G.paneId]),Z.push(Kz);let X=BH(Y);if(X)await CU(J,z,X),Z.push(Uz);if(!eK()){let Q=Y.find((H)=>H.role===eJ);if(Q)await NU(J,z,Q),Z.push(eJ)}if(Z.length===0){await E1(z,"kobe: already focused \u2014 nothing to hide");return}await yB(z,SY,Z.join(",")),await E1(z,"kobe: Zen mode on")}async function KN(J,z,Y){let Z=new Set(Y.split(",").map((G)=>G.trim()));if(Z.has(eJ)){let G=await fY(z,IJ);if(G)await wB(J,z,G)}if(Z.has(Kz)){let G=await dJ(J,z);if(G&&!G.some((X)=>X.role===Kz))await FU(J,z)}if(Z.has(Uz)){let G=await fY(z,Dz);if(G)await bU(J,z,G)}await wY(z,SY),await E1(z,"kobe: Zen mode off")}async function uU(J){let{code:z,stdout:Y}=await a0(["list-windows","-t",`=${J}`,"-F","#{window_id}"]);if(z!==0)return 0;return Y.split(`
52
+ `).filter((Z)=>Z.trim().length>0).length}async function UN(J,z){if(await uU(J)<=1){await E1(z,"Cannot close the only ChatTab");return}await IB(J,z),await d0(["kill-window","-t",z])}async function DN(J){if(!await K1(J))return;let z=await SB(J);if(!z)return;if(await uU(J)>1){await IB(J,z),await d0(["kill-window","-t",z]);return}let{newChatTab:Y}=await Promise.resolve().then(() => (KH(),EU));if(await Y(J),await SB(J)!==z)await IB(J,z),await d0(["kill-window","-t",z])}async function CZ(J,z,Y={}){if(!await K1(J))return;let Z=await zN(J,Y.windowId);if(!Z)return;switch(z){case"workspace-split":await YN(J,Z);return;case"workspace-close":await ZN(J,Z);return;case"workspace-reset":await GN(J,Z);return;case"tasks-toggle":await jN(J,Z);return;case"tasks-restore":await BN(J,Z);return;case"ops-toggle":await FU(J,Z);return;case"terminal-toggle":await WN(J,Z);return;case"zen-toggle":await VN(J);return;case"chat-tab-close":await UN(J,Z);return}}var e2="#{pane_id}\t#{@kobe_role}\t#{pane_active}\t#{pane_width}\t#{pane_height}\t#{window_width}\t#{window_height}";var PY=C(()=>{XY();Oz();NB();c1();Lz();NJ();KZ();wX()});var EU={};q1(EU,{quickCreate:()=>cB,openUpdateTab:()=>aX,openSettingsTab:()=>iX,openNewTaskTab:()=>$X,openHelpTab:()=>lX,newChatTab:()=>mB,kobeStatusRight:()=>dX,chatTabSwitchBindings:()=>hX,chatTabRenameBinding:()=>mX,chatTabCloseBinding:()=>vX,chatTabChooseEngineBindings:()=>cX,buildPanesAround:()=>DH,CHAT_TAB_STATUS_FORMAT:()=>gG,CHAT_TAB_STATUS_CURRENT_FORMAT:()=>nX,CHAT_TAB_STATE_OPTION:()=>UH,CHAT_TAB_ENGINE_PROMPT:()=>PX});function hX(J,z){return[["bind-key","-n",J,"if-shell","-F","#{?#{@kobe_surface},0,1}","previous-window"],["bind-key","-n",z,"if-shell","-F","#{?#{@kobe_surface},0,1}","next-window"]]}function vX(J,z="kill-window"){return["bind-key","-n",J,"if-shell","-F","#{>:#{session_windows},1}",z,"display-message 'Cannot close the only ChatTab'"]}function mX(J){return["bind-key","-n",J,"command-prompt","-I","#{window_name}","rename-window -- '%%'"]}function cX(J){return[["bind-key","-n",J,"command-prompt","-p",PX],["bind-key","T","command-prompt","-p",PX]]}function vB(J){return J.startsWith("C-")&&J.length===3?`^${J.slice(2)}`:J}function dX(J){return`${[J.focusLeft?`${vB(J.focusLeft)} tasks`:null,J.detach?`${vB(J.detach)} detach`:null,J.newTab?`${vB(J.newTab)} tab`:null,J.layoutSplits?`prefix ${J.layoutSplits} splits`:null,J.layoutPanes?`prefix ${J.layoutPanes} panes`:null].filter((Y)=>Y!==null).join(" ")} `}async function DH(J,z){let Y=l1(),Z=await LH(),G=TJ(z.opsCommand??Y+oZ({cwd:z.cwd,taskId:z.taskId,claudePaneId:J,cliInvocation:z.inv,vendor:z.vendor})),{stdout:X}=await _X([["set-option","-p","-t",J,"@kobe_role","claude"],["set-window-option","-t",J,UH,"idle"],["split-window","-h","-b","-t",J,"-l",`${Z}`,"-c",m1(z.cwd),"-P","-F","tasks=#{pane_id}",TJ(Y+IY(z.inv,{initialTaskId:z.taskId}))],["split-window","-h","-t",J,"-l",`${100-Cj}%`,"-c",m1(z.cwd),"-P","-F","ops=#{pane_id}",G],["split-window","-v","-l",`${100-KX}%`,"-c",m1(z.cwd),"-P","-F","shell=#{pane_id}"],["select-pane","-t",J]]),Q=Object.fromEntries(X.split(`
53
+ `).map((H)=>H.trim()).filter(Boolean).map((H)=>H.split("=",2)));if(await $1([...Q.tasks?[["set-option","-p","-t",Q.tasks,"@kobe_role",eJ]]:[],...Q.tasks?[["set-option","-p","-t",Q.tasks,Nz,J1]]:[],...Q.ops?[["set-option","-p","-t",Q.ops,"@kobe_role",Kz]]:[],...Q.ops?[["set-option","-p","-t",Q.ops,Nz,J1]]:[],...Q.shell?[["set-option","-p","-t",Q.shell,"@kobe_role",Uz]]:[]]),Q.ops){let H=await BU();if(H.length>0)await d0(["resize-pane","-t",Q.ops,...H])}}async function mB(J,z){if(!await K1(J))return;let Y=await uJ(J,["@kobe_worktree","@kobe_task","@kobe_vendor",bX]),Z=Y["@kobe_worktree"]||process.cwd(),G=Y["@kobe_task"]||void 0,X=Y[bX]||void 0,Q=z??Y["@kobe_vendor"];if(z)await LN(J,G,z);let H=cJ(Q),f=HG(H,Q),j=y1(),B=(await a0(["new-window","-t",`=${J}`,"-c",m1(Z),"-P","-F","#{pane_id}",TJ(qG(yJ(f.argv),X,Z),rZ(l1(),j,J))])).stdout.trim();if(!B)return;if(f.sessionId)await hY(B,mz,f.sessionId);await DH(B,{cwd:Z,taskId:G,inv:j,vendor:Q});let{stdout:K}=await a0(["display-message","-p","-t",B,"#{window_id}"]),L=K.trim();if(L)await PB(J,L)}async function iX(J){if(!await K1(J))return;let Y=(await uJ(J,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),Z=y1(),X=`${l1()}${Z.map(Q1).join(" ")} settings`;await Cz(J,{cwd:m1(Y),command:X,name:"settings",surface:!0})}async function lX(J){if(!await K1(J))return;let Y=(await uJ(J,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),Z=y1(),X=`${l1()}${Z.map(Q1).join(" ")} help-page`;await Cz(J,{cwd:m1(Y),command:X,name:"help",surface:!0})}async function $X(J,z){if(!await K1(J))return;let Z=(await uJ(J,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),G=y1(),X=l1(),Q=z?` --repo ${Q1(z)}`:"",H=`${X}${G.map(Q1).join(" ")} new-task${Q}`;await Cz(J,{cwd:m1(Z),command:H,name:"new task",surface:!0})}async function aX(J){if(!await K1(J))return;let Y=(await uJ(J,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),Z=y1(),X=`${l1()}${Q7({cliInvocation:Z})}`;await Cz(J,{cwd:m1(Y),command:X,name:"update",surface:!0})}async function cB(J){if(!await K1(J))return;let Y=(await uJ(J,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),Z=y1(),X=`${l1()}${Z.map(Q1).join(" ")} quick-task --session ${Q1(J)}`;await Cz(J,{cwd:m1(Y),command:X,name:"quick task",surface:!0})}async function LN(J,z,Y){if(await jY(J,"@kobe_vendor",Y),!z)return;try{let{connectOrStartDaemon:Z}=await Promise.resolve().then(() => (CJ(),FH)),G=await Z();try{await G.request("task.setVendor",{taskId:z,vendor:Y})}finally{G.close()}}catch(Z){console.error("[kobe tmux] failed to persist selected engine vendor:",Z)}}var PX,UH="@kobe_tab_state",gG="#{?#{==:#{@kobe_tab_state},running},\u25CF,#{?#{==:#{@kobe_tab_state},done},\u2713,#{?#{==:#{@kobe_tab_state},error},!,#{?#{==:#{@kobe_tab_state},unknown},?,\u25CB}}}} #I:#W",nX;var KH=C(()=>{XY();Yz();Oz();c1();Lz();_1();NJ();KZ();PY();wX();PX=`engine (${a1.join("/")}/\u2026)`;nX=gG});var EJ={};q1(EJ,{tmuxWindowSizeArgsForClient:()=>iB,tmuxSessionName:()=>I1,tmuxInitialSizeArgs:()=>PU,tmuxInitialClientSize:()=>nB,tmuxAvailable:()=>dz,switchClientBeforeKill:()=>nz,sessionExists:()=>K1,selectTasksPane:()=>NN,runLayoutAction:()=>CZ,resyncWindowToClient:()=>ON,refreshKobeWorkspacePanes:()=>RG,quickCreate:()=>cB,prepareWindowForSwitch:()=>cU,prepareWindowForAttach:()=>MH,parseTmuxClientRows:()=>hU,parseObservedSession:()=>nU,openUpdateTab:()=>aX,openSettingsTab:()=>iX,openNewTaskTab:()=>$X,openHelpTab:()=>lX,observeSessionVendor:()=>$B,newChatTab:()=>mB,kobeStatusRight:()=>dX,killSession:()=>Gz,healSessionLayout:()=>WU,focusBindCommand:()=>dU,enterWindow:()=>MN,ensureSession:()=>pX,currentSessionName:()=>wJ,clientsWithConflictingSize:()=>vU,chatTabSwitchBindings:()=>hX,chatTabRenameBinding:()=>mX,chatTabCloseBinding:()=>vX,chatTabChooseEngineBindings:()=>cX,captureGlobalLayoutOnDrag:()=>VU,captureGlobalLayout:()=>bB,attachArgv:()=>NG,PANE_VERSION_OPTION:()=>Nz,CHAT_TAB_STATUS_FORMAT:()=>gG,CHAT_TAB_STATUS_CURRENT_FORMAT:()=>nX,CHAT_TAB_STATE_OPTION:()=>UH,CHAT_TAB_ENGINE_PROMPT:()=>PX});function PU(J=process.stdout,z=process.env){let Y=nB(J,z);return Y?["-x",`${Y.columns}`,"-y",`${Y.rows}`]:[]}function nB(J=process.stdout,z=process.env){let Y=vY(J.columns)??vY(z.COLUMNS),Z=vY(J.rows)??vY(z.LINES);return Y&&Z?{columns:Y,rows:Z}:null}function vY(J){let z=typeof J==="number"?J:typeof J==="string"?Number.parseInt(J,10):Number.NaN;return Number.isInteger(z)&&z>0?z:void 0}function hU(J){let z=[];for(let Y of J.split(`
54
+ `)){let[Z,G,X,Q,H]=Y.split("\t"),f=vY(X?.trim()),j=vY(Q?.trim());if(!Z?.trim()||!G?.trim()||!f||!j)continue;z.push({name:Z.trim(),session:G.trim(),width:f,height:j,flags:H?.trim()??""})}return z}function vU(J,z,Y,Z={}){return J.filter((G)=>G.session===z).filter((G)=>G.name!==Z.currentClientName).filter((G)=>G.width!==Y.columns||G.height!==Y.rows).map((G)=>G.name)}function iB(J,z){let Y=Math.max(1,J.rows-(z.status?.trim()==="on"?1:0));return["-x",`${J.columns}`,"-y",`${Y}`]}async function lB(J,z,Y={}){if(!z)return;let{code:Z,stdout:G}=await a0(["list-clients","-t",`=${J}`,"-F",FN]);if(Z!==0)return;let X=vU(hU(G),J,z,Y),Q=[];if(Y.currentClientName)Q.push(["refresh-client","-f","!ignore-size","-t",Y.currentClientName]);for(let H of X)Q.push(["refresh-client","-f","ignore-size","-t",H]);if(Q.length>0)await $1(Q)}async function MH(J){EY(J,"resize");let z=nB();await lB(J,z);let Y=z?["-x",`${z.columns}`,"-y",`${z.rows}`]:[];if(Y.length>0)await d0(["resize-window","-t",`=${J}`,...Y]);await NZ(J)}async function mU(){let{code:J,stdout:z}=await a0(["display-message","-p","#{client_name}\t#{client_width}\t#{client_height}\t#{status}"]);if(J!==0)return{sizeArgs:[],clientSize:null,clientName:void 0};let[Y,Z,G,X]=z.trim().split("\t"),Q=vY(Z),H=vY(G),f=Q&&H?{columns:Q,rows:H}:null;return{sizeArgs:f?iB(f,{status:X}):[],clientSize:f,clientName:Y?.trim()||void 0}}async function cU(J){EY(J,"resize");let z=await mU();await lB(J,z.clientSize,{currentClientName:z.clientName});let Y=z.sizeArgs;if(Y.length>0)await d0(["resize-window","-t",`=${J}`,...Y]);await NZ(J)}async function MN(J){await cU(J),await d0(["switch-client","-t",`=${J}`])}async function ON(J,z){if(!z.size)return;EY(J,"resize"),await lB(J,z.size,{currentClientName:z.clientName});let Y=iB(z.size,{status:z.status}),{commands:Z}=await kB(J,{force:!0});await $1([["resize-window","-t",`=${J}`,...Y],...Z])}function dU(J,z,Y){let Z=`#{?window_zoomed_flag,1,#{?${AN[z]},,1}}`;if(Y)return["bind-key","-n",J,"if-shell","-F",Z,`select-pane ${z}`,Y];return["bind-key","-n",J,"if-shell","-F",Z,`select-pane ${z}`]}async function pX(J){let z=dB.get(J.name);if(z)return z;let Y=gN(J);dB.set(J.name,Y);try{return await Y}finally{dB.delete(J.name)}}function nU(J){let z="",Y="",Z=!1,G=new Set;for(let X of J.split(`
55
+ `)){let[Q,H,f,j,V]=X.split("\t");if(!Q?.trim())continue;if(G.add(Q.trim()),!z&&j?.trim())z=j.trim();if(!Y&&V?.trim())Y=V.trim();if(H?.trim()==="1"&&f?.trim()==="claude")Z=!0}return{worktree:z,vendor:Y,claudePaneAlive:Z,windowCount:G.size}}async function iU(J){if(!await K1(J))return null;let{code:z,stdout:Y}=await a0(["list-panes","-s","-t",`=${J}`,"-F",RN]);if(z!==0)return{worktree:"",vendor:"",claudePaneAlive:!1,windowCount:0};return nU(Y)}async function $B(J){let Y=(await iU(J))?.vendor.trim();return Y?Y:null}async function gN(J){let z=J.launchInit,Y=await iU(J.name),Z=$K(Y,{cwd:J.cwd,vendor:J.vendor,hasEngineCommand:J.command.length>0}),G=UK(J.repo);if(Z.kind==="reuse")return await NZ(J.name,{cwd:J.cwd,taskId:J.taskId,vendor:J.vendor}),!0;if(Z.kind==="respawn-engine"){let h=await jU(J.name,J.cwd,J.command,G,J.vendor);if(h==="switched"){if(J.vendor)await jY(J.name,"@kobe_vendor",J.vendor);return await NZ(J.name,{cwd:J.cwd,taskId:J.taskId,vendor:J.vendor,vendorChanged:!0}),!0}if(h==="respawn-failed")return await NZ(J.name,{cwd:J.cwd,taskId:J.taskId,vendor:J.vendor}),!0}if(Z.kind==="rebuild"||Z.kind==="respawn-engine")await Gz(J.name);let X=y1(),Q=J.archived===!0&&DB(),H=Q?{argv:[],sessionId:void 0}:HG(J.command,J.vendor),f=J.repo!==void 0&&J.cwd===J.repo,j=f||G?void 0:J.taskId,V=f&&!G?J.taskId:void 0,B=dq(cq(H.argv,J.vendor,j),J.vendor,V),K=[...X,"history","--worktree",J.archivedWorktree??J.cwd,...J.vendor?["--vendor",J.vendor]:[],...J.title?["--title",J.title]:[]],L=qG(yJ(Q?K:B),G,J.cwd),A=Q?Y7(L):G7(L,{initScript:G?void 0:z?.initScript,markerPath:!G&&z?.initScript?zV(J.cwd):void 0,timeoutSeconds:kj(process.env.KOBE_REPO_INIT_TIMEOUT_SECONDS)},rZ(l1(),X,J.name)),R=(await a0(["new-session","-d","-s",J.name,"-c",m1(J.cwd),...PU(),"-P","-F","#{pane_id}",A])).stdout.trim();if(!R)return console.error("[kobe tmux] new-session returned no pane id; session creation failed"),!1;if(H.sessionId)await hY(R,mz,H.sessionId);if(await $1([...J.taskId?[["set-option","-t",J.name,"@kobe_task",J.taskId]]:[],["set-option","-t",J.name,"@kobe_worktree",J.cwd],...J.vendor?[["set-option","-t",J.name,"@kobe_vendor",J.vendor]]:[],...G?[["set-option","-t",J.name,bX,G]]:[]]),process.env.TMUX){let{sizeArgs:h}=await mU();if(h.length>0)await d0(["resize-window","-t",`=${J.name}`,...h])}await DH(R,{cwd:J.cwd,taskId:J.taskId,opsCommand:J.opsCommand,inv:X,vendor:J.vendor});let u=l1(),P=X.map(Q1).join(" "),S=`${u}${P} new-chattab --session '#{session_name}'`,g=`${S} --vendor '%%'`,M=`run-shell ${Q1(g)}`,T=`${u}${P} focus-tasks --session '#{session_name}' --window '#{window_id}'`,d=`run-shell ${Q1(T)}`,i=(h)=>`${u}${P} layout --session '#{session_name}' --window '#{window_id}' --action ${h}`,J0=i("tasks-restore"),E=`run-shell ${Q1(J0)}`,z0=i("chat-tab-close"),q0=`run-shell ${Q1(z0)}`,o=`${u}${P} heal-layout --session '#{session_name}'`,B0=`run-shell -b ${Q1(o)}`,g0=`${u}${P} resync-window --session '#{session_name}' --client '#{client_name}' --cols '#{client_width}' --rows '#{client_height}' --status '#{status}'`,m=`run-shell -b ${Q1(g0)}`,r=`${u}${P} capture-layout --session '#{session_name}'`,c=`run-shell -b ${Q1(r)}`,N=q7({tmuxSocket:kz}),t=xK(process.platform,uK),x=EK(t),n=_q(),Q0=cK.map((h)=>["unbind-key","-n",h]);if(n.overridden.has(vz))for(let h of uY){let L0=RZ(h);if("key"in L0)Q0.push(["unbind-key","-n",L0.key])}for(let h of n.overridden){if(h===vz)continue;let L0=AZ[h],Z0=jG(h),D0=RZ(L0,{allowBare:Z0});if("key"in D0)Q0.push(Z0?["unbind-key",D0.key]:["unbind-key","-n",D0.key])}let H0=["-L","-D","-U","-R"],F0=n.focus.flatMap((h,L0)=>{let Z0=H0[L0],D0=Z0==="-L"?E:void 0;return h&&Z0?[dU(h.key,Z0,D0)]:[]}),M0=n.binds,o0=(h,L0)=>{let Z0=M0[h];return Z0?[["bind-key",Z0.key,"run-shell",i(L0)]]:[]},S0=(...h)=>{let L0=h.map((Z0)=>M0[Z0]?.chord).filter((Z0)=>!!Z0);return L0.length>0?L0.join("/"):null};await $1([["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",gG],["set-option","-g","window-status-current-format",nX],["set-option","-g","status-right",dX({focusLeft:n.focus[0]?.key??null,detach:M0["tmux.detach"]?.key??null,newTab:M0["tmux.tab.new"]?.key??null,layoutSplits:S0("tmux.layout.workspaceSplit","tmux.layout.workspaceClose","tmux.layout.workspaceReset"),layoutPanes:S0("tmux.layout.tasksToggle","tmux.layout.opsToggle","tmux.layout.terminalToggle","tmux.layout.zenToggle")})],["set-option","-g","mouse","on"],...x,["set-hook","-g","window-resized",B0],["set-hook","-g","client-resized",m],["set-hook","-g","pane-exited",B0],["set-hook","-g","window-layout-changed",c],...Q0,...M0["tmux.detach"]?[["bind-key","-n",M0["tmux.detach"].key,"if-shell","-F",`#{?#{${IJ}},1,#{==:#{@kobe_role},tasks}}`,"detach-client",d]]:[],...F0,...M0["tmux.tab.new"]?[["bind-key","-n",M0["tmux.tab.new"].key,"run-shell",S]]:[],...M0["tmux.tab.chooseEngine"]?cX(M0["tmux.tab.chooseEngine"].key).map((h)=>[...h,M]):[],...M0["tmux.tab.prev"]&&M0["tmux.tab.next"]?hX(M0["tmux.tab.prev"].key,M0["tmux.tab.next"].key):M0["tmux.tab.prev"]?[["bind-key","-n",M0["tmux.tab.prev"].key,"previous-window"]]:M0["tmux.tab.next"]?[["bind-key","-n",M0["tmux.tab.next"].key,"next-window"]]:[],...M0["tmux.tab.close"]?[vX(M0["tmux.tab.close"].key,q0)]:[],...M0["tmux.tab.rename"]?[mX(M0["tmux.tab.rename"].key)]:[],...o0("tmux.layout.workspaceSplit","workspace-split"),...o0("tmux.layout.workspaceClose","workspace-close"),...o0("tmux.layout.workspaceReset","workspace-reset"),...o0("tmux.layout.tasksToggle","tasks-toggle"),...o0("tmux.layout.opsToggle","ops-toggle"),...o0("tmux.layout.terminalToggle","terminal-toggle"),...o0("tmux.layout.zenToggle","zen-toggle"),["bind-key","f","run-shell",`${u}${P} quick-create --session '#{session_name}'`],["bind-key","u","display-popup","-E",N]]),await gZ(),await d0(["select-pane","-t",R]);let p0=z?.firstMessage;if(p0)lK(J.name,p0).catch((h)=>console.error("[kobe tmux] first message delivery failed:",h));return!0}async function wU(J,z,Y){let Z=Y?.trim()||`=${J}`,{code:G,stdout:X}=await a0(["list-panes","-t",Z,"-F","#{pane_id}\t#{@kobe_role}"]);if(G!==0)return"";for(let Q of X.split(`
56
+ `)){let[H,f]=Q.split("\t");if(H?.trim()&&f?.trim()===z)return H.trim()}return""}async function NN(J,z={}){if(!await K1(J))return"";let Y=await wU(J,"tasks",z.windowId);if(!Y)await CZ(J,"tasks-restore",{windowId:z.windowId}),Y=await wU(J,"tasks",z.windowId);if(!Y)return"";return await d0(["select-pane","-t",Y]),Y}var FN="#{client_name}\t#{client_session}\t#{client_width}\t#{client_height}\t#{client_flags}",AN,dB,RN="#{window_id}\t#{window_active}\t#{@kobe_role}\t#{@kobe_worktree}\t#{@kobe_vendor}";var zJ=C(()=>{XY();Yz();p1();Oz();nq();c1();wK();pq();rq();Lz();QH();KH();KZ();PY();AG();wX();c1();KH();wX();PY();AN={"-L":"pane_at_left","-D":"pane_at_bottom","-U":"pane_at_top","-R":"pane_at_right"};dB=new Map});var oX={};q1(oX,{windowIsSurface:()=>TN,windowCount:()=>bN,tmuxSessionName:()=>I1,tmuxCommandSequence:()=>_B,tmuxAvailable:()=>dz,tmuxArgs:()=>bZ,tagPaneRole:()=>aU,tagClaudePane:()=>yN,switchClientBeforeKill:()=>nz,setWindowOption:()=>hY,setSessionOption:()=>jY,sessionExists:()=>K1,sendKeys:()=>OH,sendKeyName:()=>uX,runTmuxSequenceCapturing:()=>_X,runTmuxSequence:()=>$1,runTmuxCapturing:()=>a0,runTmux:()=>d0,readLayoutGeometry:()=>cz,paneIdByRole:()=>rB,newWindow:()=>Cz,killSession:()=>Gz,globalTasksPaneWidth:()=>LH,getSessionOptions:()=>uJ,getSessionOption:()=>kZ,getServerOptions:()=>$U,getServerOption:()=>SN,ensureFallbackSession:()=>AH,currentSessionName:()=>wJ,claudePaneIdStrict:()=>BG,claudePaneId:()=>AB,capturePaneById:()=>WG,attachArgv:()=>NG,SURFACE_WINDOW_OPTION:()=>oB,PANE_ROLE_OPTION:()=>rX,KOBE_TMUX_SOCKET:()=>kz,KOBE_HOME_SESSION:()=>_U,CLAUDE_ROLE_OPTION:()=>IN,CHAT_TAB_SESSION_ID_OPTION:()=>mz});import{homedir as CN}from"os";function bZ(...J){return["tmux","-L",kz,...J]}function I1(J){return`kobe-${J.replace(/[^A-Za-z0-9_-]/g,"")}`}function NG(J){return bZ("attach-session","-t",`=${J}`)}async function aB(J){if(!J)return"";try{return await new Response(J).text()}catch{return""}}async function d0(J){try{let z=Bun.spawn(bZ(...J),{stdin:"ignore",cwd:CG,stdout:"ignore",stderr:"pipe"}),[Y,Z]=await Promise.all([aB(z.stderr),z.exited]);if(Z!==0&&Y.trim().length>0)console.error(`[kobe tmux] ${J.join(" ")} (${Z}): ${Y.trim()}`);return Z}catch{return 1}}async function kN(J){try{return await Bun.spawn(bZ(...J),{stdin:"ignore",cwd:CG,stdout:"ignore",stderr:"ignore"}).exited}catch{return 1}}function _B(J){let z=[];for(let Y of J){if(Y.length===0)continue;if(z.length>0)z.push(";");z.push(...Y)}return z}async function $1(J){let z=_B(J);return z.length===0?0:d0(z)}async function a0(J){try{let z=Bun.spawn(bZ(...J),{stdin:"ignore",cwd:CG,stdout:"pipe",stderr:"pipe"}),[Y,Z,G]=await Promise.all([aB(z.stdout),aB(z.stderr),z.exited]);if(G!==0&&Z.trim().length>0)console.error(`[kobe tmux] ${J.join(" ")} (${G}): ${Z.trim()}`);return{code:G,stdout:Y}}catch{return{code:1,stdout:""}}}async function _X(J){let z=_B(J);return z.length===0?{code:0,stdout:""}:a0(z)}async function dz(){try{return await Bun.spawn(["tmux","-V"],{stdin:"ignore",cwd:CG,stdout:"ignore",stderr:"ignore"}).exited===0}catch{return!1}}async function K1(J){return await kN(["has-session","-t",`=${J}`])===0}async function bN(J){let{code:z,stdout:Y}=await a0(["list-windows","-t",`=${J}`,"-F","#{window_id}"]);if(z!==0)return 0;return Y.split(`
57
+ `).filter((Z)=>Z.trim().length>0).length}async function jY(J,z,Y){await d0(["set-option","-t",J,z,Y])}async function kZ(J,z){let{code:Y,stdout:Z}=await a0(["show-options","-qv","-t",J,z]);return Y===0?Z.trim():""}async function uJ(J,z){let Y=Object.fromEntries(z.map((X)=>[X,void 0])),{code:Z,stdout:G}=await _X(z.map((X)=>["show-options","-q","-t",J,X]));if(Z!==0)return Y;for(let X of G.split(`
58
+ `)){let Q=X.indexOf(" ");if(Q<=0)continue;let H=X.slice(0,Q);if(H in Y)Y[H]=X.slice(Q+1).trim()}return Y}async function SN(J){let{code:z,stdout:Y}=await a0(["show-options","-sqv",J]);return z===0?Y.trim():""}async function $U(J){let z=Object.fromEntries(J.map((G)=>[G,void 0])),{code:Y,stdout:Z}=await _X(J.map((G)=>["show-options","-sq",G]));if(Y!==0)return z;for(let G of Z.split(`
59
+ `)){let X=G.indexOf(" ");if(X<=0)continue;let Q=G.slice(0,X);if(Q in z)z[Q]=G.slice(X+1).trim()}return z}async function LH(){return(await cz()).tasksWidth}async function cz(){return z7(await $U(J7))}async function aU(J,z){await d0(["set-option","-p","-t",J,rX,z])}async function hY(J,z,Y){await d0(["set-window-option","-t",J,z,Y])}async function yN(J){await aU(J,pB)}async function rB(J,z,Y=!1){let{code:Z,stdout:G}=await a0(["list-panes","-t",`=${J}`,"-F",`#{pane_id} #{${rX}}`]);if(Z!==0)return"";let X="";for(let Q of G.split(`
60
+ `)){let[H,f]=Q.split("\t");if(!H)continue;if(!X)X=H.trim();if(f?.trim()===z)return H.trim()}return Y?X:""}async function AB(J){return rB(J,pB,!0)}async function BG(J){return rB(J,pB,!1)}async function WG(J,z){if(!J)return"";let Y=["capture-pane","-t",J,"-p"];if(typeof z==="number"&&z>0)Y.push("-S",String(-z));let{code:Z,stdout:G}=await a0(Y);return Z===0?G:""}async function OH(J,z){await d0(["send-keys","-t",J,"-l","--",z])}async function uX(J,z){await d0(["send-keys","-t",J,z])}async function Cz(J,z){let Y=["new-window","-t",`=${J}`,"-c",z.cwd];if(z.name)Y.push("-n",z.name);if(z.surface){Y.push("-P","-F","#{window_id}"),Y.push(z.command);let{code:Z,stdout:G}=await a0(Y),X=G.trim();if(Z===0&&X)await hY(X,oB,"1");return}Y.push(z.command),await d0(Y)}async function TN(J){let{code:z,stdout:Y}=await a0(["display-message","-t",J,"-p",`#{${oB}}`]);return z===0&&Y.trim()==="1"}async function wJ(){let J=["display-message","-p"],z=process.env.TMUX_PANE;if(z&&z.length>0)J.push("-t",z);J.push("#{session_name}");let{code:Y,stdout:Z}=await a0(J),G=Z.trim();return Y===0&&G.length>0?G:null}async function Gz(J){if(!J.startsWith("kobe-hidden-")){let z=VX(J);if(await K1(z))await d0(["kill-session","-t",`=${z}`])}if(await K1(J))await d0(["kill-session","-t",`=${J}`])}async function AH(){let J=_U;if(await K1(J)){if(await kZ(J,lU)==="tasks")return J;await d0(["kill-session","-t",`=${J}`])}let Y=(await a0(["new-session","-d","-s",J,"-c",CG,"-x","220","-y","50","-P","-F","#{pane_id}",Z7()])).stdout.trim();if(Y){let Z=await LH(),X=(await a0(["split-window","-h","-b","-t",Y,"-l",`${Z}`,"-c",CG,"-P","-F","#{pane_id}",TJ(l1()+IY(y1()))])).stdout.trim();if(X)await $1([["set-option","-p","-t",X,rX,"tasks"],["select-pane","-t",X]])}return await jY(J,lU,"tasks"),J}async function nz(J,z){if(await wJ()!==J)return;let{enterWindow:Z}=await Promise.resolve().then(() => (zJ(),EJ));if(z&&z!==J&&await K1(z)){await Z(z);return}await Z(await AH())}var kz,CG,rX="@kobe_role",IN,pB="claude",mz="@kobe_session_id",oB="@kobe_surface",_U="kobe-home",lU="@kobe_home";var c1=C(()=>{XY();KZ();Lz();kz=process.env.KOBE_TMUX_SOCKET?.trim()||"kobe";CG=CN()||"/";IN=rX});async function xN(J,z=pU){let{code:Y,stdout:Z}=await z.capture(["list-windows","-t",`=${J}`,"-F",`#{window_index} #{automatic-rename} #{${mz}}`]);if(Y!==0)return[];let G=[];for(let X of Z.split(`
61
+ `)){let[Q,H,f]=X.split("\t"),j=Number.parseInt((Q??"").trim(),10);if(!Number.isInteger(j))continue;G.push({index:j,sessionId:f?.trim()??"",autoRename:H?.trim()??""})}return G}async function uN(J,z,Y){let{code:Z,stdout:G}=await Y.capture(["show-window-options","-t",`=${J}:${z}`,"automatic-rename"]);return Z===0&&/\boff\b/.test(G)}async function EN(J){let{code:z,stdout:Y}=await J.capture(["show-window-options","-g","automatic-rename"]);return z===0&&/\boff\b/.test(Y)}async function wN(J,z,Y,Z){return await Z.run(["rename-window","-t",`=${J}:${z}`,"--",Y])===0}async function rU(J,z=PN){let Y=0,Z=null,G=async(X,Q)=>{if(Q.autoRename==="1")return!1;if(Q.autoRename==="0"){if(Z===null)Z=await EN(z.runner);if(!Z)return!0}return uN(X,Q.index,z.runner)};for(let X of J.listTasks()){if(X.archived||X.kind==="main"||!X.worktreePath)continue;let Q=I1(X.id),H=await xN(Q,z.runner);if(H.length===0)continue;let f=H.reduce((V,B)=>Math.min(V,B.index),Number.POSITIVE_INFINITY),j=X.vendor??o1;for(let V of H)try{if(await G(Q,V))continue;let B=V.sessionId?await z.titleFromSessionId(j,V.sessionId):V.index===f?await z.titleFromWorktree(X.worktreePath,j):"";if(B&&await wN(Q,V.index,B,z.runner))Y++}catch{}}return Y}var pU,PN;var oU=C(()=>{gq();c1();zz();pU={capture:a0,run:d0};PN={runner:pU,titleFromSessionId:$7,titleFromWorktree:eZ}});function tU(J){if(J instanceof Error)return J;let z;try{z=typeof J==="string"?J:JSON.stringify(J)}catch{z=String(J)}return Error(z)}function sU(J,z,Y=new Date){let Z=tU(z);return`[${Y.toISOString()}] daemon ${J}: ${Z.stack??`${Z.name}: ${Z.message}`}
62
+ `}function hN(J,z,Y=new Date){let Z=tU(z);return`[${Y.toISOString()}] daemon error [${J}]: ${Z.stack??`${Z.name}: ${Z.message}`}
63
+ `}function u1(J,z){process.stderr.write(hN(J,z))}function vN(J,z,Y=new Date){return`[${Y.toISOString()}] daemon [${J}]: ${z}
64
+ `}function iz(J,z){process.stderr.write(vN(J,z))}function eU(J=(z)=>process.stderr.write(z)){if(sB||tB)return;sB=(z)=>J(sU("unhandledRejection",z)),tB=(z)=>J(sU("uncaughtException",z)),process.on("unhandledRejection",sB),process.on("uncaughtException",tB)}var sB,tB;async function mN(J,z=eZ){let Y=[];for(let Z of J.listTasks()){if(Z.archived||Z.title!==hz||!Z.worktreePath)continue;try{let G=await z(Z.worktreePath,Z.vendor??o1);if(!G)continue;let X=J.getTask(Z.id);if(!X||X.title!==hz)continue;await J.setTitle(Z.id,G),Y.push({id:Z.id,title:G})}catch(G){u1("auto-title-poller",G)}}return Y}function J5(J,z=eB,Y){if(z<=0)return()=>{};let Z=!1,X=setInterval(()=>{if(Y&&!Y())return;if(Z)return;Z=!0,mN(J).then(()=>rU(J)).catch((Q)=>u1("auto-title-poller",Q)).finally(()=>{Z=!1})},z);return X.unref?.(),()=>clearInterval(X)}var eB=4000;var z5=C(()=>{gq();kX();oU();zz()});class J9{socket;highWaterMark;queue=[];queuedBytes=0;paused=!1;draining=!1;droppedFrames=0;constructor(J,z={}){this.socket=J,this.highWaterMark=z.highWaterMark??8388608}get isPaused(){return this.paused}get pendingBytes(){return this.queuedBytes}get pendingCount(){return this.queue.length}get dropped(){return this.droppedFrames}write(J,z){if(!this.paused){if(this.safeWrite(J))return;this.pause();return}this.enqueue({line:J,bytes:Buffer.byteLength(J),critical:z})}enqueue(J){if(this.queue.push(J),this.queuedBytes+=J.bytes,this.queuedBytes<=this.highWaterMark)return;let z=[];for(let Y of this.queue){if(this.queuedBytes>this.highWaterMark&&!Y.critical){this.queuedBytes-=Y.bytes,this.droppedFrames++;continue}z.push(Y)}this.queue=z}pause(){if(this.draining)return;this.paused=!0,this.draining=!0,this.socket.once("drain",()=>{this.draining=!1,this.paused=!1,this.flush()})}flush(){while(this.queue.length>0){let J=this.queue[0],z=this.safeWrite(J.line);if(this.queue.shift(),this.queuedBytes-=J.bytes,!z){this.pause();return}}}safeWrite(J){try{return this.socket.write(J)}catch{return!0}}}class z9{last=new Map;sinks=new Set;publish(J,z){this.last.set(J,z);let Y={channel:J,payload:z};for(let Z of this.sinks)Z(Y)}snapshot(){return[...this.last].map(([J,z])=>({channel:J,payload:z}))}onPublish(J){return this.sinks.add(J),()=>{this.sinks.delete(J)}}}async function Y5(J,z,Y=vq){if(!Y())return"skipped";let Z=J.getTask(z);if(!Z)return"skipped";if((Z.kind??"task")==="main"||Z.archived)return"skipped";if(Z.status!=="backlog")return"skipped";return await J.setStatus(z,"in_progress"),"moved"}var Z5=C(()=>{SX()});import{createHash as cN}from"crypto";import{homedir as dN}from"os";import mY from"path";function aN(){return mY.join(process.env.KOBE_HOME_DIR??dN(),".kobe")}function _N(J){let Y=(mY.basename(J)||"repo").replace(/[^a-zA-Z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"repo",Z=cN("sha1").update(mY.resolve(J)).digest("hex").slice(0,12);return`${Y}-${Z}`}function pN(J){if(!mY.isAbsolute(J))throw Error(`worktreeRootFor: repo must be an absolute path, got: ${J}`);return mY.join(aN(),nN,_N(J))}function rN(J){if(!mY.isAbsolute(J))throw Error(`managedWorktreeRootsFor: repo must be an absolute path, got: ${J}`);return[pN(J),...$N.map((z)=>mY.join(J,z))]}function lz(J){return J.length>1&&J.endsWith("/")?J.slice(0,-1):J}function G5(J,z){return z===J||z.startsWith(`${J}/`)}function X5(J,z){let Y=lz(z),Z,G=-1;for(let X of J){if(!X.worktreePath)continue;let Q=lz(X.worktreePath);if(G5(Q,Y)&&Q.length>G)G=Q.length,Z=X.id}return Z}function Q5(J,z){let Y=lz(z);for(let Z of J)if(Z.worktreePath&&lz(Z.worktreePath)===Y)return Z.id;return}function Y9(J,z){let Y=lz(z),Z,G=-1;for(let X of J){if(!X.repo)continue;let Q=lz(X.repo);if(G5(Q,Y)&&Q.length>G)G=Q.length,Z=Q}return Z}function q5(J,z){let Y=lz(z),Z=new Set,G=new Set;for(let X of J){if(X.repo)Z.add(lz(X.repo));if(X.worktreePath)G.add(lz(X.worktreePath))}for(let X of Z)for(let Q of rN(X).map(lz)){let H=`${Q}/`;if(!Y.startsWith(H))continue;let j=Y.slice(H.length).split("/")[0];if(!j)continue;let V=`${H}${j}`;if(G.has(V))return;return{repo:X,worktreePath:V}}return}var nN="worktrees",iN=".kobe/worktrees",lN=".claude/worktrees",$N;var H5=C(()=>{$N=[iN,lN]});function X9(J){return{message:J instanceof Error?J.message:String(J),name:J instanceof Error?J.name:void 0}}async function sX(J,z,Y,Z){let G=J.get(z);if(!G)throw Error(`unknown daemon request: ${z}`);return G.handle(Q9(Y),Z)}function tX(){return new Map([{name:"hello",handle(z,Y){let Z=typeof z.protocolVersion==="number"?z.protocolVersion:sJ,G=typeof z.minProtocolVersion==="number"?z.minProtocolVersion:Z;if(!_Q({localVersion:sJ,localMin:NY,remoteVersion:Z,remoteMin:G}))throw Error(`daemon is protocol v${sJ} (min v${NY}); this client is v${Z} (min v${G}). Upgrade your kobe.`);return{protocolVersion:sJ,minProtocolVersion:NY,kobeVersion:J1,capabilities:[...jj],daemonPid:Y.daemon.pid,clientId:Y.clientId,tasks:Y.orch.listTasks().map(Vz)}}},{name:"daemon.status",handle(z,Y){return{daemonPid:Y.daemon.pid,kobeVersion:J1,uptimeMs:Date.now()-Y.daemon.startedAt.getTime(),startedAt:Y.daemon.startedAt.toISOString(),attachedClients:Y.daemon.guiCount(),taskCount:Y.orch.listTasks().length,socketPath:Y.daemon.socketPath,webPort:Y.daemon.webPort??null}}},{name:"daemon.stop",async handle(z,Y){return await Y.daemon.stopSoon(),{}}},{name:"task.list",handle(z,Y){return{tasks:Y.orch.listTasks().map(Vz)}}},{name:"task.get",handle(z,Y){let Z=g1(z,"taskId"),G=Y.orch.getTask(Z);if(!G)throw Error(`task not found: ${Z}`);return{task:Vz(G)}}},{name:"task.create",async handle(z,Y){let Z=g1(z,"repo"),G=await Y.orch.createTask({repo:Z,title:Xz(z,"title"),branch:Xz(z,"branch"),baseRef:Xz(z,"baseRef"),vendor:G9(z,"vendor"),modelEffort:Xz(z,"effort")});return{taskId:G.id,task:Vz(G)}}},{name:"task.archive",async handle(z,Y){let Z=g1(z,"taskId");return await Y.orch.setArchived(Z,Z9(z,"archived")),{}}},{name:"task.rename",async handle(z,Y){let Z=g1(z,"taskId");return await Y.orch.setTitle(Z,g1(z,"title")),{}}},{name:"task.setBranch",async handle(z,Y){let Z=g1(z,"taskId");return await Y.orch.setBranch(Z,g1(z,"branch")),{}}},{name:"task.setVendor",async handle(z,Y){let Z=g1(z,"taskId"),G=G9(z,"vendor");if(!G)throw Error("task.setVendor: vendor is required");return await Y.orch.setVendor(Z,G),{}}},{name:"task.delete",async handle(z,Y){let Z=g1(z,"taskId");return await Y.orch.deleteTask(Z,{force:Z9(z,"force")}),Y.activity.clearTask(Z),{}}},{name:"task.pin",async handle(z,Y){let Z=g1(z,"taskId");return await Y.orch.setPinned(Z,Z9(z,"pinned")),{}}},{name:"task.move",async handle(z,Y){let Z=g1(z,"taskId"),G=g1(z,"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(z,Y){let Z=g1(z,"taskId"),G=g1(z,"status");if(!m7(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 H=await Y.issues.mirrorTaskDone(X.repo,Z);if(H)Y.bus.publish("issue.snapshot",H)}catch(H){u1("issue-done-mirror",H)}return{}}},{name:"task.reorder",async handle(z,Y){let Z=z.moves;if(!Array.isArray(Z)||Z.length===0)throw Error("moves must be a non-empty array");if(Z.length>500)throw Error("too many moves in one task.reorder batch (max 500)");let G=Z.map((X)=>{if(typeof X!=="object"||X===null)throw Error("each move needs taskId and position");let Q=X,H=g1(Q,"taskId"),f=Q.position;if(typeof f!=="number"||!Number.isFinite(f))throw Error("position must be a finite number");return{taskId:H,position:f}});return await Y.orch.reorderTasks(G),{}}},{name:"task.ensureMain",async handle(z,Y){let Z=g1(z,"repo"),G=await Y.orch.ensureMainTask(Z);return{task:Vz(G)}}},{name:"project.forget",async handle(z,Y){let Z=g1(z,"repo");return await Y.orch.forgetProject(Z),{}}},{name:"task.ensureWorktree",async handle(z,Y){let Z=g1(z,"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(z,Y){let Z=g1(z,"repo");return{worktrees:await Y.orch.discoverAdoptableWorktrees(Z)}}},{name:"worktree.adopt",async handle(z,Y){let Z=await Y.orch.adoptWorktree({repo:g1(z,"repo"),worktreePath:g1(z,"worktreePath"),branch:Xz(z,"branch"),vendor:G9(z,"vendor"),title:Xz(z,"title"),ifExists:Xz(z,"ifExists")==="return"?"return":"error"});return{task:Vz(Z)}}},{name:"worktree.reconcile",async handle(z,Y){let Z=g1(z,"cwd"),G=g1(z,"worktreePath"),X=Y9(Y.orch.listTasks(),Z)??Y9(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 u1("worktree-created",Q),{adopted:!1}}}},{name:"worktree.archiveRemoved",async handle(z,Y){let Z=g1(z,"worktreePath"),G=Q5(Y.orch.listTasks(),Z);if(!G)return{archived:!1};try{return await Y.orch.setArchived(G,!0),{archived:!0,taskId:G}}catch(X){return u1("worktree-removed",X),{archived:!1}}}},{name:"task.setActive",async handle(z,Y){let Z=Xz(z,"taskId")??null;return await Y.orch.setActiveTask(Z),Y.bus.publish("active-task",{taskId:Z}),{}}},{name:"issue.list",async handle(z,Y){return Y.issues.list(g1(z,"repoRoot"))}},{name:"issue.mutate",async handle(z,Y){let Z=await Y.issues.mutate(g1(z,"repoRoot"),z.op);return Y.bus.publish("issue.snapshot",Z),Z}},{name:"session.deliver",async handle(z,Y){let Z=g1(z,"taskId"),G=g1(z,"text"),X=Xz(z,"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(z,Y){let Z=g1(z,"taskId"),G=g1(z,"text"),X=Y.orch.getTask(Z);if(!X)throw Error(`task not found: ${Z}`);let Q=Y.orch.listTasks().find((f)=>(f.kind??"task")==="main"&&f.repo===X.repo&&!f.archived);if(!Q||Q.id===X.id)return{ok:!0,routed:!1};let H=X.title||X.branch||Z;return Y.bus.publish("session.deliver",{taskId:Q.id,text:`[KOBE FIELD NOTE] from "${H}" (task ${Z}): ${G}`,at:Date.now(),source:"note"}),{ok:!0,routed:!0}}},{name:"engine.reportEvent",async handle(z,Y){let Z=g1(z,"kind");if(!Oq(Z))throw Error(`unknown engine event kind: ${Z}`);let G=Xz(z,"taskId"),X=Xz(z,"cwd");if(!G&&X&&Z==="session-start"){let f=q5(Y.orch.listTasks(),X);if(f)try{await Y.orch.adoptWorktree({repo:f.repo,worktreePath:f.worktreePath,ifExists:"return"})}catch(j){u1("worktree-autosync",j)}}let Q=G??(X?X5(Y.orch.listTasks(),X):void 0);if(!Q)return{};let H=oN(z);if(Y.activity.report(Q,Z,H),Z==="turn-start")Y5(Y.orch,Q).then((f)=>{if(f==="moved")console.log(`[status-rules] task ${Q} auto-moved backlog \u2192 in_progress`)}).catch((f)=>u1("status-rules",f));return{}}}].map((z)=>[z.name,z]))}function Q9(J){if(!J||typeof J!=="object"||Array.isArray(J))return{};return J}function g1(J,z){let Y=J[z];if(typeof Y!=="string"||Y.length===0)throw Error(`${z} is required`);return Y}function Xz(J,z){let Y=J[z];if(Y===void 0||Y===null||Y==="")return;if(typeof Y!=="string")throw Error(`${z} must be a string`);return Y}function Z9(J,z){let Y=J[z];if(Y===void 0||Y===null)return;if(typeof Y!=="boolean")throw Error(`${z} must be a boolean`);return Y}function G9(J,z){let Y=Xz(J,z);return Y&&Y.trim().length>0?Y:void 0}function oN(J){let z=J.detail;if(!z||typeof z!=="object"||Array.isArray(z))return;let Y=z,Z={};if(Y.failure==="rate_limit"||Y.failure==="billing"||Y.failure==="other")Z.failure=Y.failure;if(Y.waiting==="permission"||Y.waiting==="input")Z.waiting=Y.waiting;if(typeof Y.note==="string")Z.note=Y.note;return Object.keys(Z).length>0?Z:void 0}var RH=C(()=>{Aq();Z5();zz();NJ();H5();YZ()});import{execFile as sN}from"child_process";import{mkdir as tN,readFile as eN,realpath as f5,rename as JC,stat as zC,writeFile as YC}from"fs/promises";import{homedir as ZC}from"os";import{dirname as GC,isAbsolute as XC,join as QC,resolve as j5}from"path";import{promisify as qC}from"util";function HC(J){return(J instanceof Error?J.message:String(J)).includes("not a git repository")}function NH(J=process.env.KOBE_HOME_DIR??ZC()){return QC(J,".kobe","issues.json")}function W5(J){return typeof J==="string"&&B5.includes(J)}function fC(J){if(J===null||typeof J!=="object"||Array.isArray(J))return null;let z=J;if(typeof z.id!=="number")return null;return{id:z.id,title:typeof z.title==="string"?z.title:"(untitled)",status:W5(z.status)?z.status:"open",created:typeof z.created==="string"?z.created:"",body:typeof z.body==="string"?z.body:"",taskId:typeof z.taskId==="string"?z.taskId:void 0}}function jC(){return{version:1,repos:{}}}function BC(){let J=new Date,z=String(J.getMonth()+1).padStart(2,"0"),Y=String(J.getDate()).padStart(2,"0");return`${J.getFullYear()}-${z}-${Y}`}async function WC(J){let{stdout:z}=await W9("git",["-C",J,"rev-parse","--git-common-dir"]),Y=z.trim();return f5(XC(Y)?Y:j5(J,Y))}async function VC(J){let{stdout:z}=await W9("git",["-C",J,"rev-parse","--show-toplevel"]);return z.trim()}async function KC(J){let{stdout:z}=await W9("git",["-C",J,"worktree","list","--porcelain"]),Y=z.split(/\r?\n/).find((Z)=>Z.startsWith("worktree "))?.slice(9).trim();return Y?f5(Y):VC(J)}async function q9(J){if(typeof J!=="string"||J.length===0)throw Error("repoRoot is required");let z=j5(J);if(!(await zC(z).catch(()=>null))?.isDirectory())throw Error("repoRoot does not exist");try{let[Z,G]=await Promise.all([KC(z),WC(z)]);return{repoRoot:Z,repoKey:G}}catch(Z){if(HC(Z))throw Error("repoRoot is not a git repository");throw Z}}async function H9(J){try{let z=JSON.parse(await eN(J,"utf8")),Y={};if(z.repos&&typeof z.repos==="object")for(let[Z,G]of Object.entries(z.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(fC).filter((Q)=>Q!==null):[]}}return{version:1,repos:Y}}catch(z){if(z.code==="ENOENT")return jC();throw z}}async function f9(J,z){await tN(GC(J),{recursive:!0});let Y=`${J}.tmp`;await YC(Y,`${JSON.stringify(z,null,2)}
65
+ `,"utf8"),await JC(Y,J)}function j9(J,z){return{repoRoot:J,exists:z!==null,nextId:z?.nextId??1,issues:z?.issues??[]}}async function B9(J,z){let Z=(gH.get(J)??Promise.resolve()).then(z),G=Z.then(()=>{return},()=>{return});return gH.set(J,G),G.then(()=>{if(gH.get(J)===G)gH.delete(J)}),Z}class CH{path;constructor(J=NH()){this.path=J}async list(J){let{repoRoot:z,repoKey:Y}=await q9(J);return B9(this.path,async()=>{let Z=await H9(this.path),G=Z.repos[Y]??null;if(G&&G.repoRoot!==z)G.repoRoot=z,await f9(this.path,Z);return j9(z,G)})}async mirrorTaskDone(J,z){let{repoRoot:Y,repoKey:Z}=await q9(J);if(!z)return null;return B9(this.path,async()=>{let G=await H9(this.path),X=G.repos[Z];if(!X)return null;let Q=X.issues.find((H)=>H.taskId===z);if(!Q||Q.status==="done")return null;return Q.status="done",X.repoRoot=Y,await f9(this.path,G),j9(Y,X)})}async mutate(J,z){let{repoRoot:Y,repoKey:Z}=await q9(J);if(!z||typeof z!=="object"||Array.isArray(z)||typeof z.type!=="string")throw Error("missing op");return B9(this.path,async()=>{let G=await H9(this.path),X=G.repos[Z];if(!X)X={repoRoot:Y,nextId:1,issues:[]},G.repos[Z]=X;X.repoRoot=Y;let Q=z;if(Q.type==="create"){if(typeof Q.title!=="string"||Q.title.trim().length===0)throw Error("create requires a non-empty title");if(Q.body!==void 0&&typeof Q.body!=="string")throw Error("body must be a string");X.issues=[{id:X.nextId,title:Q.title,status:"open",created:BC(),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(!W5(Q.status))throw Error(`invalid status: must be one of ${B5.join(", ")}`);let H=X.issues.find((f)=>f.id===Q.id);if(!H)throw Error(`no issue #${Q.id}`);H.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 H=X.issues.find((f)=>f.id===Q.id);if(!H)throw Error(`no issue #${Q.id}`);if(typeof Q.title==="string")H.title=Q.title;if(typeof Q.body==="string")H.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 H=X.issues.find((f)=>f.id===Q.id);if(!H)throw Error(`no issue #${Q.id}`);H.taskId=Q.taskId}else if(Q.type==="unlink"){if(typeof Q.id!=="number")throw Error("unlink requires a numeric id");let H=X.issues.find((f)=>f.id===Q.id);if(!H)throw Error(`no issue #${Q.id}`);H.taskId=void 0}else if(Q.type==="delete"){if(typeof Q.id!=="number")throw Error("delete requires a numeric id");let H=X.issues.filter((f)=>f.id!==Q.id);if(H.length===X.issues.length)throw Error(`no issue #${Q.id}`);X.issues=H}else throw Error(`unknown op type: ${Q.type}`);return await f9(this.path,G),j9(Y,X)})}}var W9,B5,gH;var V9=C(()=>{W9=qC(sN),B5=["open","doing","hold","done"];gH=new Map});import{lstat as V5,readdir as UC,realpath as DC,stat as LC}from"fs/promises";import{join as FC,relative as MC,resolve as K5,sep as OC}from"path";import{Readable as AC}from"stream";function M5(J,z={}){let Y=z.entryType||z.type;if(Y==="both")Y=nJ.FILE_DIR_TYPE;if(Y)z.type=Y;if(!J)throw Error("readdirp: root argument is required. Usage: readdirp(root, options)");else if(typeof J!=="string")throw TypeError("readdirp: root argument must be a string. Usage: readdirp(root, options)");else if(Y&&!U5.includes(Y))throw Error(`readdirp: Invalid type passed. Use one of ${U5.join(", ")}`);return z.root=J,new U9(z)}var nJ,K9,F5="READDIRP_RECURSIVE_ERROR",RC,U5,gC,NC,CC=(J)=>RC.has(J.code),kC,D5=(J)=>!0,L5=(J)=>{if(J===void 0)return D5;if(typeof J==="function")return J;if(typeof J==="string"){let z=J.trim();return(Y)=>Y.basename===z}if(Array.isArray(J)){let z=J.map((Y)=>Y.trim());return(Y)=>z.some((Z)=>Y.basename===Z)}return D5},U9;var O5=C(()=>{nJ={FILE_TYPE:"files",DIR_TYPE:"directories",FILE_DIR_TYPE:"files_directories",EVERYTHING_TYPE:"all"},K9={root:".",fileFilter:(J)=>!0,directoryFilter:(J)=>!0,type:nJ.FILE_TYPE,lstat:!1,depth:2147483648,alwaysStat:!1,highWaterMark:4096};Object.freeze(K9);RC=new Set(["ENOENT","EPERM","EACCES","ELOOP",F5]),U5=[nJ.DIR_TYPE,nJ.EVERYTHING_TYPE,nJ.FILE_DIR_TYPE,nJ.FILE_TYPE],gC=new Set([nJ.DIR_TYPE,nJ.EVERYTHING_TYPE,nJ.FILE_DIR_TYPE]),NC=new Set([nJ.EVERYTHING_TYPE,nJ.FILE_DIR_TYPE,nJ.FILE_TYPE]),kC=process.platform==="win32";U9=class U9 extends AC{parents;reading;parent;_stat;_maxDepth;_wantsDir;_wantsFile;_wantsEverything;_root;_isDirent;_statsProp;_rdOptions;_fileFilter;_directoryFilter;constructor(J={}){super({objectMode:!0,autoDestroy:!0,highWaterMark:J.highWaterMark});let z={...K9,...J},{root:Y,type:Z}=z;this._fileFilter=L5(z.fileFilter),this._directoryFilter=L5(z.directoryFilter);let G=z.lstat?V5:LC;if(kC)this._stat=(X)=>G(X,{bigint:!0});else this._stat=G;this._maxDepth=z.depth!=null&&Number.isSafeInteger(z.depth)?z.depth:K9.depth,this._wantsDir=Z?gC.has(Z):!1,this._wantsFile=Z?NC.has(Z):!1,this._wantsEverything=Z===nJ.EVERYTHING_TYPE,this._root=K5(Y),this._isDirent=!z.alwaysStat,this._statsProp=this._isDirent?"dirent":"stats",this._rdOptions={encoding:"utf8",withFileTypes:this._isDirent},this.parents=[this._exploreDir(Y,1)],this.reading=!1,this.parent=void 0}async _read(J){if(this.reading)return;this.reading=!0;try{while(!this.destroyed&&J>0){let z=this.parent,Y=z&&z.files;if(Y&&Y.length>0){let{path:Z,depth:G}=z,X=Y.splice(0,J).map((H)=>this._formatEntry(H,Z)),Q=await Promise.all(X);for(let H of Q){if(!H)continue;if(this.destroyed)return;let f=await this._getEntryType(H);if(f==="directory"&&this._directoryFilter(H)){if(G<=this._maxDepth)this.parents.push(this._exploreDir(H.fullPath,G+1));if(this._wantsDir)this.push(H),J--}else if((f==="file"||this._includeAsFile(H))&&this._fileFilter(H)){if(this._wantsFile)this.push(H),J--}}}else{let Z=this.parents.pop();if(!Z){this.push(null);break}if(this.parent=await Z,this.destroyed)return}}}catch(z){this.destroy(z)}finally{this.reading=!1}}async _exploreDir(J,z){let Y;try{Y=await UC(J,this._rdOptions)}catch(Z){this._onError(Z)}return{files:Y,depth:z,path:J}}async _formatEntry(J,z){let Y,Z=this._isDirent?J.name:J;try{let G=K5(FC(z,Z));Y={path:MC(this._root,G),fullPath:G,basename:Z},Y[this._statsProp]=this._isDirent?J:await this._stat(G)}catch(G){this._onError(G);return}return Y}_onError(J){if(CC(J)&&!this.destroyed)this.emit("warn",J);else this.destroy(J)}async _getEntryType(J){if(!J&&this._statsProp in J)return"";let z=J[this._statsProp];if(z.isFile())return"file";if(z.isDirectory())return"directory";if(z&&z.isSymbolicLink()){let Y=J.fullPath;try{let Z=await DC(Y),G=await V5(Z);if(G.isFile())return"file";if(G.isDirectory()){let X=Z.length;if(Y.startsWith(Z)&&Y.substr(X,1)===OC){let Q=Error(`Circular symlink detected: "${Y}" points to "${Z}"`);return Q.code=F5,this._onError(Q)}return"directory"}}catch(Z){return this._onError(Z),""}}}_includeAsFile(J){let z=J&&J[this._statsProp];return z&&this._wantsEverything&&!z.isDirectory()}}});import{watch as bC,unwatchFile as A5,watchFile as SC}from"fs";import{realpath as D9,lstat as IC,open as yC,stat as g5}from"fs/promises";import{type as TC}from"os";import*as P1 from"path";function R5(J,z,Y,Z,G){let X=(Q,H)=>{if(Y(J),G(Q,H,{watchedPath:J}),H&&J!==H)SH(P1.resolve(J,H),SZ,P1.join(J,H))};try{return bC(J,{persistent:z.persistent},X)}catch(Q){Z(Q);return}}class A9{fsw;_boundHandleError;constructor(J){this.fsw=J,this._boundHandleError=(z)=>J._handleError(z)}_watchWithNodeFs(J,z){let Y=this.fsw.options,Z=P1.dirname(J),G=P1.basename(J);this.fsw._getWatchedDir(Z).add(G);let Q=P1.resolve(J),H={persistent:Y.persistent};if(!z)z=IH;let f;if(Y.usePolling){let j=Y.interval!==Y.binaryInterval;H.interval=j&&cC(G)?Y.binaryInterval:Y.interval,f=iC(J,Q,H,{listener:z,rawEmitter:this.fsw._emitRaw})}else f=nC(J,Q,H,{listener:z,errHandler:this._boundHandleError,rawEmitter:this.fsw._emitRaw});return f}_handleFile(J,z,Y){if(this.fsw.closed)return;let Z=P1.dirname(J),G=P1.basename(J),X=this.fsw._getWatchedDir(Z),Q=z;if(X.has(G))return;let H=async(j,V)=>{if(!this.fsw._throttle(PC,J,5))return;if(!V||V.mtimeMs===0)try{let B=await g5(J);if(this.fsw.closed)return;let{atimeMs:K,mtimeMs:L}=B;if(!K||K<=L||L!==Q.mtimeMs)this.fsw._emit(bz.CHANGE,J,B);if((uC||EC||wC)&&Q.ino!==B.ino){this.fsw._closeFile(j),Q=B;let A=this._watchWithNodeFs(J,H);if(A)this.fsw._addPathCloser(j,A)}else Q=B}catch(B){this.fsw._remove(Z,G)}else if(X.has(G)){let{atimeMs:B,mtimeMs:K}=V;if(!B||B<=K||K!==Q.mtimeMs)this.fsw._emit(bz.CHANGE,J,V);Q=V}},f=this._watchWithNodeFs(J,H);if(!(Y&&this.fsw.options.ignoreInitial)&&this.fsw._isntIgnored(J)){if(!this.fsw._throttle(bz.ADD,J,0))return;this.fsw._emit(bz.ADD,J,z)}return f}async _handleSymlink(J,z,Y,Z){if(this.fsw.closed)return;let G=J.fullPath,X=this.fsw._getWatchedDir(z);if(!this.fsw.options.followSymlinks){this.fsw._incrReadyCount();let Q;try{Q=await D9(Y)}catch(H){return this.fsw._emitReady(),!0}if(this.fsw.closed)return;if(X.has(Z)){if(this.fsw._symlinkPaths.get(G)!==Q)this.fsw._symlinkPaths.set(G,Q),this.fsw._emit(bz.CHANGE,Y,J.stats)}else X.add(Z),this.fsw._symlinkPaths.set(G,Q),this.fsw._emit(bz.ADD,Y,J.stats);return this.fsw._emitReady(),!0}if(this.fsw._symlinkPaths.has(G))return!0;this.fsw._symlinkPaths.set(G,!0)}_handleRead(J,z,Y,Z,G,X,Q){J=P1.join(J,"");let H=Z?`${J}:${Z}`:J;if(Q=this.fsw._throttle("readdir",H,1000),!Q)return;let f=this.fsw._getWatchedDir(Y.path),j=new Set,V=this.fsw._readdirp(J,{fileFilter:(B)=>Y.filterPath(B),directoryFilter:(B)=>Y.filterDir(B)});if(!V)return;return V.on(xC,async(B)=>{if(this.fsw.closed){V=void 0;return}let K=B.path,L=P1.join(J,K);if(j.add(K),B.stats.isSymbolicLink()&&await this._handleSymlink(B,J,L,K))return;if(this.fsw.closed){V=void 0;return}if(K===Z||!Z&&!f.has(K))this.fsw._incrReadyCount(),L=P1.join(G,P1.relative(G,L)),this._addToNodeFs(L,z,Y,X+1)}).on(bz.ERROR,this._boundHandleError),new Promise((B,K)=>{if(!V)return K();V.once(M9,()=>{if(this.fsw.closed){V=void 0;return}let L=Q?Q.clear():!1;if(B(void 0),f.getChildren().filter((A)=>{return A!==J&&!j.has(A)}).forEach((A)=>{this.fsw._remove(J,A)}),V=void 0,L)this._handleRead(J,!1,Y,Z,G,X,Q)})})}async _handleDir(J,z,Y,Z,G,X,Q){let H=this.fsw._getWatchedDir(P1.dirname(J)),f=H.has(P1.basename(J));if(!(Y&&this.fsw.options.ignoreInitial)&&!G&&!f)this.fsw._emit(bz.ADD_DIR,J,z);H.add(P1.basename(J)),this.fsw._getWatchedDir(J);let j,V,B=this.fsw.options.depth;if((B==null||Z<=B)&&!this.fsw._symlinkPaths.has(Q)){if(!G){if(await this._handleRead(J,Y,X,G,J,Z,j),this.fsw.closed)return}V=this._watchWithNodeFs(J,(K,L)=>{if(L&&L.mtimeMs===0)return;this._handleRead(K,!1,X,G,J,Z,j)})}return V}async _addToNodeFs(J,z,Y,Z,G){let X=this.fsw._emitReady;if(this.fsw._isIgnored(J)||this.fsw.closed)return X(),!1;let Q=this.fsw._getWatchHelpers(J);if(Y)Q.filterPath=(H)=>Y.filterPath(H),Q.filterDir=(H)=>Y.filterDir(H);try{let H=await hC[Q.statMethod](Q.watchPath);if(this.fsw.closed)return;if(this.fsw._isIgnored(Q.watchPath,H))return X(),!1;let f=this.fsw.options.followSymlinks,j;if(H.isDirectory()){let V=P1.resolve(J),B=f?await D9(J):J;if(this.fsw.closed)return;if(j=await this._handleDir(Q.watchPath,H,z,Z,G,Q,B),this.fsw.closed)return;if(V!==B&&B!==void 0)this.fsw._symlinkPaths.set(V,B)}else if(H.isSymbolicLink()){let V=f?await D9(J):J;if(this.fsw.closed)return;let B=P1.dirname(Q.watchPath);if(this.fsw._getWatchedDir(B).add(Q.watchPath),this.fsw._emit(bz.ADD,Q.watchPath,H),j=await this._handleDir(B,H,z,Z,J,Q,V),this.fsw.closed)return;if(V!==void 0)this.fsw._symlinkPaths.set(P1.resolve(J),V)}else j=this._handleFile(Q.watchPath,H,z);if(X(),j)this.fsw._addPathCloser(J,j);return!1}catch(H){if(this.fsw._handleError(H))return X(),J}}}var xC="data",M9="end",N5="close",IH=()=>{},yH,O9,uC,EC,wC,C5,w1,bz,PC="watch",hC,SZ="listeners",kH="errHandlers",kG="rawEmitters",vC,mC,cC=(J)=>mC.has(P1.extname(J).slice(1).toLowerCase()),F9=(J,z)=>{if(J instanceof Set)J.forEach(z);else z(J)},eX=(J,z,Y)=>{let Z=J[z];if(!(Z instanceof Set))J[z]=Z=new Set([Z]);Z.add(Y)},dC=(J)=>(z)=>{let Y=J[z];if(Y instanceof Set)Y.clear();else delete J[z]},JQ=(J,z,Y)=>{let Z=J[z];if(Z instanceof Set)Z.delete(Y);else if(Z===Y)delete J[z]},k5=(J)=>J instanceof Set?J.size===0:!J,bH,SH=(J,z,Y,Z,G)=>{let X=bH.get(J);if(!X)return;F9(X[z],(Q)=>{Q(Y,Z,G)})},nC=(J,z,Y,Z)=>{let{listener:G,errHandler:X,rawEmitter:Q}=Z,H=bH.get(z),f;if(!Y.persistent){if(f=R5(J,Y,G,X,Q),!f)return;return f.close.bind(f)}if(H)eX(H,SZ,G),eX(H,kH,X),eX(H,kG,Q);else{if(f=R5(J,Y,SH.bind(null,z,SZ),X,SH.bind(null,z,kG)),!f)return;f.on(bz.ERROR,async(j)=>{let V=SH.bind(null,z,kH);if(H)H.watcherUnusable=!0;if(O9&&j.code==="EPERM")try{await(await yC(J,"r")).close(),V(j)}catch(B){}else V(j)}),H={listeners:G,errHandlers:X,rawEmitters:Q,watcher:f},bH.set(z,H)}return()=>{if(JQ(H,SZ,G),JQ(H,kH,X),JQ(H,kG,Q),k5(H.listeners))H.watcher.close(),bH.delete(z),vC.forEach(dC(H)),H.watcher=void 0,Object.freeze(H)}},L9,iC=(J,z,Y,Z)=>{let{listener:G,rawEmitter:X}=Z,Q=L9.get(z),H=Q&&Q.options;if(H&&(H.persistent<Y.persistent||H.interval>Y.interval))A5(z),Q=void 0;if(Q)eX(Q,SZ,G),eX(Q,kG,X);else Q={listeners:G,rawEmitters:X,options:Y,watcher:SC(z,Y,(f,j)=>{F9(Q.rawEmitters,(B)=>{B(bz.CHANGE,z,{curr:f,prev:j})});let V=f.mtimeMs;if(f.size!==j.size||V>j.mtimeMs||V===0)F9(Q.listeners,(B)=>B(J,f))})},L9.set(z,Q);return()=>{if(JQ(Q,SZ,G),JQ(Q,kG,X),k5(Q.listeners))L9.delete(z),A5(z),Q.options=Q.watcher=void 0,Object.freeze(Q)}};var b5=C(()=>{yH=process.platform,O9=yH==="win32",uC=yH==="darwin",EC=yH==="linux",wC=yH==="freebsd",C5=TC()==="OS400",w1={ALL:"all",READY:"ready",ADD:"add",CHANGE:"change",ADD_DIR:"addDir",UNLINK:"unlink",UNLINK_DIR:"unlinkDir",RAW:"raw",ERROR:"error"},bz=w1,hC={lstat:IC,stat:g5},vC=[SZ,kH,kG],mC=new Set(["3dm","3ds","3g2","3gp","7z","a","aac","adp","afdesign","afphoto","afpub","ai","aif","aiff","alz","ape","apk","appimage","ar","arj","asf","au","avi","bak","baml","bh","bin","bk","bmp","btif","bz2","bzip2","cab","caf","cgm","class","cmx","cpio","cr2","cur","dat","dcm","deb","dex","djvu","dll","dmg","dng","doc","docm","docx","dot","dotm","dra","DS_Store","dsk","dts","dtshd","dvb","dwg","dxf","ecelp4800","ecelp7470","ecelp9600","egg","eol","eot","epub","exe","f4v","fbs","fh","fla","flac","flatpak","fli","flv","fpx","fst","fvt","g3","gh","gif","graffle","gz","gzip","h261","h263","h264","icns","ico","ief","img","ipa","iso","jar","jpeg","jpg","jpgv","jpm","jxr","key","ktx","lha","lib","lvp","lz","lzh","lzma","lzo","m3u","m4a","m4v","mar","mdi","mht","mid","midi","mj2","mka","mkv","mmr","mng","mobi","mov","movie","mp3","mp4","mp4a","mpeg","mpg","mpga","mxu","nef","npx","numbers","nupkg","o","odp","ods","odt","oga","ogg","ogv","otf","ott","pages","pbm","pcx","pdb","pdf","pea","pgm","pic","png","pnm","pot","potm","potx","ppa","ppam","ppm","pps","ppsm","ppsx","ppt","pptm","pptx","psd","pya","pyc","pyo","pyv","qt","rar","ras","raw","resources","rgb","rip","rlc","rmf","rmvb","rpm","rtf","rz","s3m","s7z","scpt","sgi","shar","snap","sil","sketch","slk","smv","snk","so","stl","suo","sub","swf","tar","tbz","tbz2","tga","tgz","thmx","tif","tiff","tlz","ttc","ttf","txz","udf","uvh","uvi","uvm","uvp","uvs","uvu","viv","vob","war","wav","wax","wbmp","wdp","weba","webm","webp","whl","wim","wm","wma","wmv","wmx","woff","woff2","wrm","wvx","xbm","xif","xla","xlam","xls","xlsb","xlsm","xlsx","xlt","xltm","xltx","xm","xmind","xpi","xpm","xwd","xz","z","zip","zipx"]),bH=new Map;L9=new Map});import{EventEmitter as lC}from"events";import{stat as $C,Stats as hd}from"fs";import{readdir as aC,stat as _C}from"fs/promises";import*as H1 from"path";function TH(J){return Array.isArray(J)?J:[J]}function Jk(J){if(typeof J==="function")return J;if(typeof J==="string")return(z)=>J===z;if(J instanceof RegExp)return(z)=>J.test(z);if(typeof J==="object"&&J!==null)return(z)=>{if(J.path===z)return!0;if(J.recursive){let Y=H1.relative(J.path,z);if(!Y)return!1;return!Y.startsWith("..")&&!H1.isAbsolute(Y)}return!1};return()=>!1}function zk(J){if(typeof J!=="string")throw Error("string expected");J=H1.normalize(J),J=J.replace(/\\/g,"/");let z=!1;if(J.startsWith("//"))z=!0;if(J=J.replace(u5,"/"),z)J="/"+J;return J}function S5(J,z,Y){let Z=zk(z);for(let G=0;G<J.length;G++){let X=J[G];if(X(Z,Y))return!0}return!1}function Yk(J,z){if(J==null)throw TypeError("anymatch: specify first argument");let Z=TH(J).map((G)=>Jk(G));if(z==null)return(G,X)=>{return S5(Z,G,X)};return S5(Z,z)}class w5{path;_removeWatcher;items;constructor(J,z){this.path=J,this._removeWatcher=z,this.items=new Set}add(J){let{items:z}=this;if(!z)return;if(J!==x5&&J!==rC)z.add(J)}async remove(J){let{items:z}=this;if(!z)return;if(z.delete(J),z.size>0)return;let Y=this.path;try{await aC(Y)}catch(Z){if(this._removeWatcher)this._removeWatcher(H1.dirname(Y),H1.basename(Y))}}has(J){let{items:z}=this;if(!z)return;return z.has(J)}getChildren(){let{items:J}=this;if(!J)return[];return[...J.values()]}dispose(){this.items.clear(),this.path="",this._removeWatcher=IH,this.items=Gk,Object.freeze(this)}}class P5{fsw;path;watchPath;fullWatchPath;dirParts;followSymlinks;statMethod;constructor(J,z,Y){this.fsw=Y;let Z=J;this.path=J=J.replace(eC,""),this.watchPath=Z,this.fullWatchPath=H1.resolve(Z),this.dirParts=[],this.dirParts.forEach((G)=>{if(G.length>1)G.pop()}),this.followSymlinks=z,this.statMethod=z?Xk:Qk}entryPath(J){return H1.join(this.watchPath,H1.relative(this.watchPath,J.fullPath))}filterPath(J){let{stats:z}=J;if(z&&z.isSymbolicLink())return this.filterDir(J);let Y=this.entryPath(J);return this.fsw._isntIgnored(Y,z)&&this.fsw._hasReadPermissions(z)}filterDir(J){return this.fsw._isntIgnored(this.entryPath(J),J.stats)}}function v5(J,z={}){let Y=new h5(z);return Y.add(J),Y}var R9="/",pC="//",x5=".",rC="..",oC="string",sC,u5,tC,eC,g9=(J)=>typeof J==="object"&&J!==null&&!(J instanceof RegExp),I5=(J)=>{let z=TH(J).flat();if(!z.every((Y)=>typeof Y===oC))throw TypeError(`Non-string provided as watch path: ${z}`);return z.map(E5)},y5=(J)=>{let z=J.replace(sC,R9),Y=!1;if(z.startsWith(pC))Y=!0;if(z=z.replace(u5,R9),Y)z=R9+z;return z},E5=(J)=>y5(H1.normalize(y5(J))),T5=(J="")=>(z)=>{if(typeof z==="string")return E5(H1.isAbsolute(z)?z:H1.join(J,z));else return z},Zk=(J,z)=>{if(H1.isAbsolute(J))return J;return H1.join(z,J)},Gk,Xk="stat",Qk="lstat",h5;var m5=C(()=>{O5();b5();/*! chokidar - MIT License (c) 2012 Paul Miller (paulmillr.com) */sC=/\\/g,u5=/\/\//g,tC=/\..*\.(sw[px])$|~$|\.subl.*\.tmp/,eC=/^\.[/\\]/;Gk=Object.freeze(new Set);h5=class h5 extends lC{closed;options;_closers;_ignoredPaths;_throttled;_streams;_symlinkPaths;_watched;_pendingWrites;_pendingUnlinks;_readyCount;_emitReady;_closePromise;_userIgnored;_readyEmitted;_emitRaw;_boundRemove;_nodeFsHandler;constructor(J={}){super();this.closed=!1,this._closers=new Map,this._ignoredPaths=new Set,this._throttled=new Map,this._streams=new Set,this._symlinkPaths=new Map,this._watched=new Map,this._pendingWrites=new Map,this._pendingUnlinks=new Map,this._readyCount=0,this._readyEmitted=!1;let z=J.awaitWriteFinish,Y={stabilityThreshold:2000,pollInterval:100},Z={persistent:!0,ignoreInitial:!1,ignorePermissionErrors:!1,interval:100,binaryInterval:300,followSymlinks:!0,usePolling:!1,atomic:!0,...J,ignored:J.ignored?TH(J.ignored):TH([]),awaitWriteFinish:z===!0?Y:typeof z==="object"?{...Y,...z}:!1};if(C5)Z.usePolling=!0;if(Z.atomic===void 0)Z.atomic=!Z.usePolling;let G=process.env.CHOKIDAR_USEPOLLING;if(G!==void 0){let H=G.toLowerCase();if(H==="false"||H==="0")Z.usePolling=!1;else if(H==="true"||H==="1")Z.usePolling=!0;else Z.usePolling=!!H}let X=process.env.CHOKIDAR_INTERVAL;if(X)Z.interval=Number.parseInt(X,10);let Q=0;this._emitReady=()=>{if(Q++,Q>=this._readyCount)this._emitReady=IH,this._readyEmitted=!0,process.nextTick(()=>this.emit(w1.READY))},this._emitRaw=(...H)=>this.emit(w1.RAW,...H),this._boundRemove=this._remove.bind(this),this.options=Z,this._nodeFsHandler=new A9(this),Object.freeze(Z)}_addIgnoredPath(J){if(g9(J)){for(let z of this._ignoredPaths)if(g9(z)&&z.path===J.path&&z.recursive===J.recursive)return}this._ignoredPaths.add(J)}_removeIgnoredPath(J){if(this._ignoredPaths.delete(J),typeof J==="string"){for(let z of this._ignoredPaths)if(g9(z)&&z.path===J)this._ignoredPaths.delete(z)}}add(J,z,Y){let{cwd:Z}=this.options;this.closed=!1,this._closePromise=void 0;let G=I5(J);if(Z)G=G.map((X)=>{return Zk(X,Z)});if(G.forEach((X)=>{this._removeIgnoredPath(X)}),this._userIgnored=void 0,!this._readyCount)this._readyCount=0;return this._readyCount+=G.length,Promise.all(G.map(async(X)=>{let Q=await this._nodeFsHandler._addToNodeFs(X,!Y,void 0,0,z);if(Q)this._emitReady();return Q})).then((X)=>{if(this.closed)return;X.forEach((Q)=>{if(Q)this.add(H1.dirname(Q),H1.basename(z||Q))})}),this}unwatch(J){if(this.closed)return this;let z=I5(J),{cwd:Y}=this.options;return z.forEach((Z)=>{if(!H1.isAbsolute(Z)&&!this._closers.has(Z)){if(Y)Z=H1.join(Y,Z);Z=H1.resolve(Z)}if(this._closePath(Z),this._addIgnoredPath(Z),this._watched.has(Z))this._addIgnoredPath({path:Z,recursive:!0});this._userIgnored=void 0}),this}close(){if(this._closePromise)return this._closePromise;this.closed=!0,this.removeAllListeners();let J=[];return this._closers.forEach((z)=>z.forEach((Y)=>{let Z=Y();if(Z instanceof Promise)J.push(Z)})),this._streams.forEach((z)=>z.destroy()),this._userIgnored=void 0,this._readyCount=0,this._readyEmitted=!1,this._watched.forEach((z)=>z.dispose()),this._closers.clear(),this._watched.clear(),this._streams.clear(),this._symlinkPaths.clear(),this._throttled.clear(),this._closePromise=J.length?Promise.all(J).then(()=>{return}):Promise.resolve(),this._closePromise}getWatched(){let J={};return this._watched.forEach((z,Y)=>{let G=(this.options.cwd?H1.relative(this.options.cwd,Y):Y)||x5;J[G]=z.getChildren().sort()}),J}emitWithAll(J,z){if(this.emit(J,...z),J!==w1.ERROR)this.emit(w1.ALL,J,...z)}async _emit(J,z,Y){if(this.closed)return;let Z=this.options;if(O9)z=H1.normalize(z);if(Z.cwd)z=H1.relative(Z.cwd,z);let G=[z];if(Y!=null)G.push(Y);let X=Z.awaitWriteFinish,Q;if(X&&(Q=this._pendingWrites.get(z)))return Q.lastChange=new Date,this;if(Z.atomic){if(J===w1.UNLINK)return this._pendingUnlinks.set(z,[J,...G]),setTimeout(()=>{this._pendingUnlinks.forEach((H,f)=>{this.emit(...H),this.emit(w1.ALL,...H),this._pendingUnlinks.delete(f)})},typeof Z.atomic==="number"?Z.atomic:100),this;if(J===w1.ADD&&this._pendingUnlinks.has(z))J=w1.CHANGE,this._pendingUnlinks.delete(z)}if(X&&(J===w1.ADD||J===w1.CHANGE)&&this._readyEmitted){let H=(f,j)=>{if(f)J=w1.ERROR,G[0]=f,this.emitWithAll(J,G);else if(j){if(G.length>1)G[1]=j;else G.push(j);this.emitWithAll(J,G)}};return this._awaitWriteFinish(z,X.stabilityThreshold,J,H),this}if(J===w1.CHANGE){if(!this._throttle(w1.CHANGE,z,50))return this}if(Z.alwaysStat&&Y===void 0&&(J===w1.ADD||J===w1.ADD_DIR||J===w1.CHANGE)){let H=Z.cwd?H1.join(Z.cwd,z):z,f;try{f=await _C(H)}catch(j){}if(!f||this.closed)return;G.push(f)}return this.emitWithAll(J,G),this}_handleError(J){let z=J&&J.code;if(J&&z!=="ENOENT"&&z!=="ENOTDIR"&&(!this.options.ignorePermissionErrors||z!=="EPERM"&&z!=="EACCES"))this.emit(w1.ERROR,J);return J||this.closed}_throttle(J,z,Y){if(!this._throttled.has(J))this._throttled.set(J,new Map);let Z=this._throttled.get(J);if(!Z)throw Error("invalid throttle");let G=Z.get(z);if(G)return G.count++,!1;let X,Q=()=>{let f=Z.get(z),j=f?f.count:0;if(Z.delete(z),clearTimeout(X),f)clearTimeout(f.timeoutObject);return j};X=setTimeout(Q,Y);let H={timeoutObject:X,clear:Q,count:0};return Z.set(z,H),H}_incrReadyCount(){return this._readyCount++}_awaitWriteFinish(J,z,Y,Z){let G=this.options.awaitWriteFinish;if(typeof G!=="object")return;let X=G.pollInterval,Q,H=J;if(this.options.cwd&&!H1.isAbsolute(J))H=H1.join(this.options.cwd,J);let f=new Date,j=this._pendingWrites;function V(B){$C(H,(K,L)=>{if(K||!j.has(J)){if(K&&K.code!=="ENOENT")Z(K);return}let A=Number(new Date);if(B&&L.size!==B.size)j.get(J).lastChange=A;let O=j.get(J);if(A-O.lastChange>=z)j.delete(J),Z(void 0,L);else Q=setTimeout(V,X,L)})}if(!j.has(J))j.set(J,{lastChange:f,cancelWait:()=>{return j.delete(J),clearTimeout(Q),Y}}),Q=setTimeout(V,X)}_isIgnored(J,z){if(this.options.atomic&&tC.test(J))return!0;if(!this._userIgnored){let{cwd:Y}=this.options,G=(this.options.ignored||[]).map(T5(Y)),Q=[...[...this._ignoredPaths].map(T5(Y)),...G];this._userIgnored=Yk(Q,void 0)}return this._userIgnored(J,z)}_isntIgnored(J,z){return!this._isIgnored(J,z)}_getWatchHelpers(J){return new P5(J,this.options.followSymlinks,this)}_getWatchedDir(J){let z=H1.resolve(J);if(!this._watched.has(z))this._watched.set(z,new w5(z,this._boundRemove));return this._watched.get(z)}_hasReadPermissions(J){if(this.options.ignorePermissionErrors)return!0;return Boolean(Number(J.mode)&256)}_remove(J,z,Y){let Z=H1.join(J,z),G=H1.resolve(Z);if(Y=Y!=null?Y:this._watched.has(Z)||this._watched.has(G),!this._throttle("remove",Z,100))return;if(!Y&&this._watched.size===1)this.add(J,z,!0);this._getWatchedDir(Z).getChildren().forEach((B)=>this._remove(Z,B));let H=this._getWatchedDir(J),f=H.has(z);if(H.remove(z),this._symlinkPaths.has(G))this._symlinkPaths.delete(G);let j=Z;if(this.options.cwd)j=H1.relative(this.options.cwd,Z);if(this.options.awaitWriteFinish&&this._pendingWrites.has(j)){if(this._pendingWrites.get(j).cancelWait()===w1.ADD)return}this._watched.delete(Z),this._watched.delete(G);let V=Y?w1.UNLINK_DIR:w1.UNLINK;if(f&&!this._isIgnored(Z))this._emit(V,Z);this._closePath(Z)}_closePath(J){this._closeFile(J);let z=H1.dirname(J);this._getWatchedDir(z).remove(H1.basename(J))}_closeFile(J){let z=this._closers.get(J);if(!z)return;z.forEach((Y)=>Y()),this._closers.delete(J)}_addPathCloser(J,z){if(!z)return;let Y=this._closers.get(J);if(!Y)Y=[],this._closers.set(J,Y);Y.push(z)}_readdirp(J,z){if(this.closed)return;let Y={type:w1.ALL,alwaysStat:!0,lstat:!0,...z,depth:0},Z=M5(J,Y);return this._streams.add(Z),Z.once(N5,()=>{Z=void 0}),Z.once(M9,()=>{if(Z)this._streams.delete(Z),Z=void 0}),Z}}});import{mkdirSync as qk,statSync as Hk}from"fs";import{basename as c5,dirname as fk,join as jk}from"path";function xH(J){if(J.debounceMs<=0)return()=>{};let z=fk(J.filePath),Y=new Set([c5(J.filePath),...J.matchBasenames??[]]),Z=null,G=null,X=!1,Q=()=>{try{J.onTrigger()}catch(V){J.onError(V)}},H=()=>{if(Z)clearTimeout(Z);Z=setTimeout(()=>{Z=null,Q()},J.debounceMs),Z.unref?.()},f=(V)=>{if(!Y.has(c5(V)))return;H()},j=(V)=>{try{let B=Hk(jk(z,V));return`${B.mtimeMs}:${B.size}`}catch{return null}};try{qk(z,{recursive:!0});let V=new Map;for(let B of Y)V.set(B,j(B));G=v5(z,{depth:0,ignoreInitial:!0}),G.on("add",f),G.on("change",f),G.on("unlink",f),G.on("error",J.onError),G.once("ready",()=>{for(let B of Y)if(j(B)!==V.get(B)){H();break}})}catch(V){J.onError(V)}return()=>{if(X)return;if(X=!0,Z)clearTimeout(Z),Z=null;let V=G;G=null,V?.close().catch(J.onError)}}var N9=C(()=>{m5()});import{homedir as Bk}from"os";import{basename as Wk,join as Vk}from"path";function k9(J=process.env.KOBE_HOME_DIR??Bk()){return Vk(J,".kobe","settings","keybindings.yaml")}function d5(J,z={}){let Y=z.debounceMs??C9;if(Y<=0)return()=>{};let Z=z.path??k9(),G=Wk(Z),X=G.replace(/\.yaml$/,".yml"),Q=0;return J.publish("keybindings",{rev:Q}),xH({filePath:Z,matchBasenames:[G,X],debounceMs:Y,onTrigger:()=>{try{Q+=1,J.publish("keybindings",{rev:Q})}catch(f){u1("keybindings-watcher",f)}},onError:(f)=>u1("keybindings-watcher",f)})}var C9=200;var n5=C(()=>{N9()});class b9{clients;idleGraceMs;onIdleStop;schedule;log;cancelIdle=null;stopping=!1;constructor(J){this.clients=J.clients,this.idleGraceMs=J.idleGraceMs,this.onIdleStop=J.onIdleStop,this.schedule=J.schedule??Kk,this.log=J.log??iz}guiCount(){let J=0;for(let z of this.clients())if(z.holdsLifetime)J++;return J}hasSubscribers(){for(let J of this.clients())if(J.subscribed)return!0;return!1}isStopping(){return this.stopping}markStopping(){this.stopping=!0,this.clearIdle()}guiAttached(){this.clearIdle()}clientDisconnected(J){if(J)this.maybeArm()}clearIdle(){if(this.cancelIdle)this.cancelIdle(),this.cancelIdle=null}maybeArm(){if(this.stopping||this.guiCount()>0)return;this.clearIdle(),this.log("idle",`last gui gone \u2014 arming ${this.idleGraceMs}ms idle-stop grace`),this.cancelIdle=this.schedule(()=>{if(this.cancelIdle=null,this.stopping||this.guiCount()>0)return;this.log("idle","grace elapsed with no gui \u2014 self-stopping"),this.onIdleStop()},this.idleGraceMs)}}var Kk=(J,z)=>{let Y=setTimeout(J,z);return Y.unref?.(),()=>clearTimeout(Y)};var i5=()=>{};import{spawn as Uk}from"child_process";function gk(J,z,Y){return new Promise((Z)=>{let G="",X="",Q=!1,H=(j,V)=>{if(Q)return;Q=!0,Z({status:j,stdout:G,stderr:X,spawnError:V})},f=Uk("gh",J.slice(),{cwd:z,stdio:["ignore","pipe","pipe"],signal:Y,killSignal:"SIGKILL"});f.stdout?.on("data",(j)=>{G+=String(j)}),f.stderr?.on("data",(j)=>{X+=String(j)}),f.on("error",()=>H(null,!Y.aborted)),f.on("close",(j)=>H(j,!1))})}function Ck(J){if(J.archived)return!1;if(J.kind==="main")return!1;if(!J.branch||!J.worktreePath)return!1;if(r1(J.repo)||r1(J.worktreePath))return!1;return!0}async function kk(J,z){let Y=z.tickMs??zQ,Z=z.rand,G={tickMs:Y,settledMs:Lk,noPrMs:Dk,noRemoteMs:Ok,failureBaseMs:Fk,failureCapMs:Mk,jitterRatio:Ak},X=[];for(let Q of J.listTasks()){if(!Ck(Q)){z.schedule.delete(Q.id);continue}let H=z.schedule.get(Q.id);if(H&&z.now<H.nextAllowedAt)continue;let f=H?.failures??0;try{let j=await z.run(Q.worktreePath,Q.branch);if(j.kind==="error"){iz("pr-status-poller",`gh pr view failed (${j.error}) for task ${Q.id} [${Q.branch}] \u2014 keeping last PR status, backing off`),z.schedule.set(Q.id,NX({kind:"error",error:j.error},f,z.now,G,Z));continue}if(j.kind==="empty"){z.schedule.set(Q.id,NX({kind:"empty"},f,z.now,G,Z));continue}let V=BK(j.view,z.at),B=J.getTask(Q.id);if(!B){z.schedule.delete(Q.id);continue}if(!wq(B.prStatus,V??void 0))await J.setPRStatus(Q.id,V),X.push(Q.id);let K=V?.lifecycle==="merged"||V?.lifecycle==="closed";z.schedule.set(Q.id,NX({kind:"pr",settled:K},f,z.now,G,Z))}catch(j){u1("pr-status-poller",j),z.schedule.set(Q.id,NX({kind:"error",error:"network"},f,z.now,G,Z))}}return X}function l5(J,z=zQ,Y,Z=Nk){if(z<=0)return()=>{};let G=new Map,X=!1,H=setInterval(()=>{if(Y&&!Y())return;if(X)return;X=!0,kk(J,{run:Z,now:Date.now(),at:new Date().toISOString(),schedule:G,tickMs:z}).catch((f)=>u1("pr-status-poller",f)).finally(()=>{X=!1})},z);return H.unref?.(),()=>clearInterval(H)}var zQ=30000,Dk=300000,Lk=600000,Fk,Mk=900000,Ok=1800000,Ak=0.2,Rk=1e4,Nk=async(J,z)=>{let Y=new AbortController,Z=!1,G=setTimeout(()=>{Z=!0,Y.abort()},Rk);try{let X=await gk(["pr","view",z,"--json",jK],J,Y.signal);if(X.status===0&&!Z)try{let Q=JSON.parse(X.stdout);return typeof Q.number==="number"?{kind:"pr",view:Q}:{kind:"empty"}}catch{return JB({parseError:!0})}return JB({spawnError:X.spawnError,timedOut:Z,exitCode:X.status,stderr:X.stderr})}finally{clearTimeout(G)}};var $5=C(()=>{zB();C1();Fk=zQ});function yk(J,z){return J.mtimeMs===z.mtimeMs&&J.completionId===z.completionId&&J.completionAt===z.completionAt}async function Tk(J,z,Y,Z){let G=await tZ(z,J),X=await Y.latestCompletion(J);return{mtimeMs:G,completionId:X?.id??null,completionAt:X?.timestampMs??0}}function xk(J){let z=new Map;for(let Y of J){if(Y.archived)continue;if(!Y.worktreePath)continue;if(r1(Y.repo)||r1(Y.worktreePath))continue;if(z.has(Y.worktreePath))continue;z.set(Y.worktreePath,Y.vendor??o1)}return z}class a5{orch;bus;options;entries=new Map;stopped=!1;constructor(J,z,Y={}){this.orch=J;this.bus=z;this.options=Y}tick(){if(this.stopped)return;if(this.options.hasSubscribers&&!this.options.hasSubscribers())return;try{let J=xk(this.orch.listTasks()),z=!1;for(let Y of this.entries.keys()){if(J.has(Y))continue;if(this.entries.get(Y)?.value)z=!0;this.entries.delete(Y)}if(z)this.publish();for(let[Y,Z]of J)this.maybeCollect(Y,Z)}catch(J){u1("transcript-activity",J)}}stop(){this.stopped=!0}maybeCollect(J,z){let Y=this.entries.get(J);if(!Y)Y={inFlight:!1,nextAllowedAt:0,vendor:z,detector:LX(z)},this.entries.set(J,Y);else if(Y.vendor!==z)Y.vendor=z,Y.detector=LX(z);let Z=this.options.cadence??{timeoutMs:bk,slowRetryMs:Sk,minIntervalMs:Ik},G=this.options.run??Tk,X=Y;ZG(X,Z,(Q)=>G(J,X.vendor,X.detector,Q),(Q)=>{if(this.stopped)return;if(this.entries.get(J)!==X)return;if(X.value&&yk(X.value,Q))return;X.value=Q,this.publish()})}publish(){let J={};for(let[z,Y]of this.entries)if(Y.value)J[z]=Y.value;this.bus.publish("transcript.activity",{activity:J})}}function _5(J,z,Y=S9,Z){if(Y<=0)return()=>{};let G=new a5(J,z,{hasSubscribers:Z});G.tick();let X=setInterval(()=>G.tick(),Y);return X.unref?.(),()=>{clearInterval(X),G.stop()}}var S9=1500,bk=4000,Sk=60000,Ik=1500;var p5=C(()=>{Fq();GG();Mq();C1();zz()});import{readFileSync as uk}from"fs";import{homedir as Ek}from"os";import{basename as wk,join as Pk}from"path";function y9(J=process.env.KOBE_HOME_DIR??Ek()){return Pk(J,".config","kobe","state.json")}function r5(J){let z={};try{let j=JSON.parse(uk(J,"utf8"));if(j&&typeof j==="object"&&!Array.isArray(j))z=j}catch{}let Y=typeof z.activeTheme==="string"&&z.activeTheme.length>0?z.activeTheme:"claude",Z=z.transparentBackground===!0,G=typeof z.focusAccent==="string"&&vk.includes(z.focusAccent)?z.focusAccent:null,X=z.activeSortMode==="recent"?"recent":"default",Q=z["tasksPane.keysCollapsed"]===!0,H=typeof z["tasksPane.projectFilter"]==="string"&&z["tasksPane.projectFilter"].length>0?z["tasksPane.projectFilter"]:null,f=typeof z.locale==="string"&&z.locale.length>0?z.locale:"en";return{theme:Y,transparentBackground:Z,focusAccent:G,locale:f,sortMode:X,keysCollapsed:Q,projectFilter:H}}function mk(J,z){return J.theme===z.theme&&J.transparentBackground===z.transparentBackground&&J.focusAccent===z.focusAccent&&J.locale===z.locale&&J.sortMode===z.sortMode&&J.keysCollapsed===z.keysCollapsed&&J.projectFilter===z.projectFilter}function o5(J,z={}){let Y=z.debounceMs??I9;if(Y<=0)return()=>{};let Z=z.pollMs??hk,G=z.statePath??y9(),X=wk(G),Q=r5(G);return J.publish("ui-prefs",Q),xH({filePath:G,matchBasenames:[X],debounceMs:Y,pollMs:Z,onTrigger:()=>{try{let f=r5(G);if(mk(Q,f))return;Q=f,J.publish("ui-prefs",f)}catch(f){u1("ui-prefs-watcher",f)}},onError:(f)=>u1("ui-prefs-watcher",f)})}var I9=200,hk=250,vk;var s5=C(()=>{N9();vk=["primary","success","info"]});function bG(J){return IZ.includes(J)?J:"auto"}var IZ,t5,BY="editor.kind",cY="editor.customCommand",uH="auto";var EH=C(()=>{IZ=["auto","vim","nvim","nano","emacs","custom"],t5=["nvim","vim","emacs","nano"]});function TZ(J){return J==="taskpanel"?"taskpanel":"chattab"}var WY="settings.surface",yZ="chattab";function e5(J){return J>="0"&&J<="7"}function z6(J,z){let Y=[],Z="",G=()=>{if(Z.length>0){for(let Q of ck.encode(Z))Y.push(Q);Z=""}},X=z+1;while(X<J.length){let Q=J[X];if(Q==='"'){X++;break}if(Q==="\\"){let H=J[X+1];if(H===void 0){Z+="\\",X++;continue}switch(H){case"a":G(),Y.push(7),X+=2;break;case"b":G(),Y.push(8),X+=2;break;case"t":G(),Y.push(9),X+=2;break;case"n":G(),Y.push(10),X+=2;break;case"v":G(),Y.push(11),X+=2;break;case"f":G(),Y.push(12),X+=2;break;case"r":G(),Y.push(13),X+=2;break;case'"':Z+='"',X+=2;break;case"\\":Z+="\\",X+=2;break;default:if(e5(H)){let f="",j=X+1;while(j<J.length&&f.length<3&&e5(J[j]))f+=J[j],j++;G(),Y.push(Number.parseInt(f,8)&255),X=j}else Z+=H,X+=2;break}}else Z+=Q,X++}return G(),{value:dk.decode(new Uint8Array(Y)),end:X}}function xZ(J){if(J.length===0||J[0]!=='"')return J;return z6(J,0).value}function Y6(J,z){if(J[0]==='"'){let Z=z6(J,0);if(J.startsWith(z,Z.end))return{orig:Z.value,neu:xZ(J.slice(Z.end+z.length))};return null}let Y=J.indexOf(z);if(Y<0)return null;return{orig:J.slice(0,Y),neu:xZ(J.slice(Y+z.length))}}function nk(J){let z=J.indexOf("{");if(z>=0){let Z=J.indexOf("}",z),G=J.indexOf(" => ",z);if(Z>z&&G>=0&&G<Z){let X=J.slice(0,z),Q=J.slice(z+1,G),H=J.slice(G+4,Z),f=J.slice(Z+1);return{path:X+H+f,origPath:X+Q+f}}}let Y=Y6(J," => ");if(Y)return{path:Y.neu,origPath:Y.orig};return{path:xZ(J)}}function wH(J){let z=[];for(let Y of J.split(`
66
+ `)){let Z=Y.replace(/\r$/,"");if(Z.length<4)continue;if(Z.startsWith("##"))continue;let G=Z[0],X=Z[1];if(Z[2]!==" ")continue;let Q=Z.slice(3);if(G==="R"||G==="C"||X==="R"||X==="C"){let H=Y6(Q," -> ");if(H){z.push({x:G,y:X,path:H.neu,origPath:H.orig});continue}}z.push({x:G,y:X,path:xZ(Q)})}return z}function J6(J){if(J==="-")return null;let z=Number.parseInt(J,10);return Number.isNaN(z)?null:z}function Z6(J){let z=[];for(let Y of J.split(`
67
+ `)){let Z=Y.replace(/\r$/,"");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(X+1);if(Q.length===0)continue;let H=nk(Q);if(H.path.length===0)continue;z.push({path:H.path,...H.origPath!==void 0?{origPath:H.origPath}:{},added:J6(Z.slice(0,G)),deleted:J6(Z.slice(G+1,X))})}return z}var ck,dk;var PH=C(()=>{ck=new TextEncoder,dk=new TextDecoder});function iJ(J=process.env){return{...J,...T9}}var T9;var dY=C(()=>{T9={GIT_OPTIONAL_LOCKS:"0"}});async function SG(J,z,Y={}){if(!J)return{stdout:"",stderr:"worktreePath is required",status:-1};let Z=(Y.execForPath??HY)(J),G=Y.timeoutMs&&Y.timeoutMs>0?new AbortController:null,X=!1,Q=G?setTimeout(()=>{X=!0,G.abort()},Y.timeoutMs):null,H=G&&Y.signal?AbortSignal.any([G.signal,Y.signal]):G?.signal??Y.signal,f;try{f=await Z.run(["git",...z],{cwd:J,env:T9,signal:H})}catch(j){if(Q)clearTimeout(Q);return{stdout:"",stderr:j instanceof Error?j.message:String(j),status:-1}}if(Q)clearTimeout(Q);if(X&&f.exitCode===-1&&!f.stderr)return{stdout:f.stdout,stderr:`git ${z.join(" ")} timed out after ${Y.timeoutMs}ms`,status:-1};return{stdout:f.stdout,stderr:f.stderr,status:f.exitCode}}function ik(J,z){if(!J||!z||z.startsWith("/"))return null;let Y=z.split("/");if(Y.some((Z)=>Z===".."))return null;return`${J.replace(/\/+$/,"")}/${Y.filter(Boolean).join("/")}`}async function G6(J,z,Y={}){let Z=ik(J,z);if(!Z)return null;let G=(Y.execForPath??HY)(J);try{return await G.readFile(Z)}catch{return null}}var hH=C(()=>{Oz();dY()});import{statSync as lk}from"fs";async function YQ(J,z){let Y=await SG(J,z,{timeoutMs:$k}),Z=Y.status??-1;return{ok:Z===0,stdout:Y.stdout,stderr:Y.stderr,code:Z}}function _k(J){switch(J){case"M":return"modified";case"A":return"added";case"D":return"deleted";case"R":return"renamed";case"C":return"copied";case"T":return"type changed";case"U":return"unmerged";case"?":return"untracked";default:return"changed"}}function X6(J){if(J==="/dev/null")return null;let z=J;if(z.startsWith('"'))z=xZ(z);else{let Y=z.indexOf("\t");if(Y>=0)z=z.slice(0,Y)}if(z.startsWith("a/")||z.startsWith("b/"))z=z.slice(2);return z.length>0?z:null}function Q6(J){let z=new Map;if(!J)return z;let Y=J.split(/(?=^diff --git )/m);for(let Z of Y){if(!Z.startsWith("diff --git"))continue;let G=null,X=Z.match(/^\+\+\+ (.*)$/m);if(X)G=X6(X[1]);if(G===null){let Q=Z.match(/^--- (.*)$/m);if(Q)G=X6(Q[1])}if(G===null){let Q=Z.match(/^diff --git a\/.* b\/(.*)$/m);if(Q)G=xZ(Q[1])}if(G===null)continue;z.set(G,Z.endsWith(`
68
68
  `)?Z:`${Z}
69
- `)}return z}async function Ck(J,z,Y){let Z=Array(J.length),G=Math.max(1,Math.min(z,J.length)),X=0;async function q(){while(X<J.length){let H=X++;Z[H]=await Y(J[H],H)}}return await Promise.all(Array.from({length:G},()=>q())),Z}async function kk(J,z){let Y=await Yq(J,["diff","--no-color","--no-index","--","/dev/null",z]);if(Y.stdout.trim())return Y.stdout.endsWith(`
69
+ `)}return z}async function pk(J,z,Y){let Z=Array(J.length),G=Math.max(1,Math.min(z,J.length)),X=0;async function Q(){while(X<J.length){let H=X++;Z[H]=await Y(J[H],H)}}return await Promise.all(Array.from({length:G},()=>Q())),Z}async function rk(J,z){let Y=await YQ(J,["diff","--no-color","--no-index","--","/dev/null",z]);if(Y.stdout.trim())return Y.stdout.endsWith(`
70
70
  `)?Y.stdout:`${Y.stdout}
71
- `;return""}async function d5(J,z){if(z.pathname!=="/api/diff")return null;if(J.method!=="GET")return Response.json({error:"method not allowed"},{status:405});let Y=z.searchParams.get("worktreePath");if(!Y)return Response.json({error:"missing worktreePath"},{status:400});let Z;try{Z=decodeURIComponent(Y)}catch{return Response.json({error:"invalid worktreePath encoding"},{status:400})}if(!Z.startsWith("/"))return Response.json({error:"worktreePath must be an absolute path"},{status:400});if(!xY(Z))return Response.json({error:"worktreePath does not exist"},{status:400});if(!XY(Z).isRemote)try{if(!Ak(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 Yq(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,H,f]=await Promise.all([Yq(Z,["status","--porcelain=v1","-z","--untracked-files=all"]),Yq(Z,["diff","--no-color"]),Yq(Z,["diff","--no-color","--staged"])]);if(!q.ok)return Response.json({error:`git status failed: ${q.stderr.trim()}`},{status:500});let j=c5(H.stdout),V=c5(f.stdout),B=q.stdout.split("\x00"),K=[],L=[];for(let R=0;R<B.length;R++){let x=B[R];if(!x)continue;let w=x[0]??" ",S=x[1]??" ",g=x.slice(3);if(!g)continue;if(w==="R"||w==="C"||S==="R"||S==="C")R++;let M=w==="?"&&S==="?",T=w!==" "&&w!=="?"?w:S,$=w!==" "&&w!=="?",d="";if(M)L.push({fileIndex:K.length,path:g});else if(d=V.get(g)??j.get(g)??"",V.has(g)&&j.has(g))d=`${V.get(g)}${j.get(g)}`;K.push({path:g,status:M?"untracked":Nk(T),staged:$,patch:d})}if(L.length>0){let R=await Ck(L,gk,(x)=>kk(Z,x.path));for(let x=0;x<L.length;x++)K[L[x].fileIndex].patch=R[x]}K.sort((R,x)=>R.path.localeCompare(x.path));let A=[f.stdout,H.stdout].filter(Boolean).join(`
72
- `),O={files:K,raw:A};return Response.json(O)}var Rk=15000,gk=8;var n5=C(()=>{Fz();wH();PH()});import{isAbsolute as bk}from"path";function l5(J){return typeof J==="string"&&J.length>0&&/^[A-Za-z0-9_-]+$/.test(J)}function Ik(J){return typeof J==="string"&&J.length>0&&/^[A-Za-z0-9._-]+$/.test(J)&&!J.includes("..")}async function yk(J){let z=J.searchParams.get("worktreePath"),Y=J.searchParams.get("vendor")??"claude";if(!z||!bk(z))return Response.json({error:"worktreePath must be an absolute path"},{status:400});if(!l5(Y))return Response.json({error:"invalid vendor"},{status:400});try{let Z=n1(Y).history,[G,X]=await Promise.all([Z.listSessionIdsForWorktree(z),Z.latestTranscriptMtimeForWorktree(z)]);return Response.json({sessions:G,latestMtime:X})}catch(Z){return Response.json({error:Z instanceof Error?Z.message:String(Z)},{status:500})}}async function Tk(J){let z=J.searchParams.get("vendor")??"claude",Y=J.searchParams.get("sessionId");if(!l5(z))return Response.json({error:"invalid vendor"},{status:400});if(!Ik(Y))return Response.json({error:"invalid sessionId"},{status:400});try{let Z=await n1(z).history.readHistory(Y);return Response.json({messages:Z})}catch(Z){return Response.json({error:Z instanceof Error?Z.message:String(Z)},{status:500})}}async function $5(J,z){if(z.pathname!==i5&&z.pathname!==Sk)return null;if(J.method!=="GET")return Response.json({error:"method not allowed"},{status:405});return z.pathname===i5?yk(z):Tk(z)}var i5="/api/history/sessions",Sk="/api/history/messages";var a5=C(()=>{ZY()});import{mkdir as xk,readFile as uk,writeFile as Ek}from"fs/promises";import{join as _5}from"path";function p5(){return _5(jJ(),"notes")}function r5(J){return typeof J==="string"&&J.length>0&&/^[A-Za-z0-9_-]+$/.test(J)}function o5(J){return _5(p5(),`${J}.md`)}async function Pk(J){let z=J.searchParams.get("taskId");if(!r5(z))return Response.json({error:"invalid taskId"},{status:400});try{let Y="";try{Y=await uk(o5(z),"utf8")}catch(Z){if(Z.code!=="ENOENT")throw Z}return Response.json({markdown:Y})}catch(Y){return Response.json({error:Y instanceof Error?Y.message:String(Y)},{status:500})}}async function hk(J){let z;try{z=await J.json()}catch{return Response.json({error:"invalid JSON body"},{status:400})}if(!r5(z.taskId))return Response.json({error:"invalid taskId"},{status:400});if(typeof z.markdown!=="string")return Response.json({error:"markdown must be a string"},{status:400});try{return await xk(p5(),{recursive:!0}),await Ek(o5(z.taskId),z.markdown,"utf8"),Response.json({ok:!0})}catch(Y){return Response.json({error:Y instanceof Error?Y.message:String(Y)},{status:500})}}async function s5(J,z){if(z.pathname!==wk)return null;if(J.method==="GET")return Pk(z);if(J.method==="PUT")return hk(J);return Response.json({error:"method not allowed"},{status:405})}var wk="/api/notes";var t5=C(()=>{t1()});function IB(J,z,Y=[]){if(z===void 0)return null;if(typeof z!=="string")return IB(J,z.dark,Y);if(z==="transparent"||z==="none")return null;if(z.startsWith("#"))return z;if(Y.includes(z))return null;let Z=J.defs?.[z]??J.theme[z];return IB(J,Z,[...Y,z])}function SB(J){return Math.max(0,Math.min(255,Math.round(J)))}function Zq(J,z,Y){let Z=Number.parseInt(J.slice(1),16),G=Number.parseInt(z.slice(1),16),X=(H,f)=>H>>f&255;return`#${(SB(X(Z,16)+(X(G,16)-X(Z,16))*Y)<<16|SB(X(Z,8)+(X(G,8)-X(Z,8))*Y)<<8|SB(X(Z,0)+(X(G,0)-X(Z,0))*Y)).toString(16).padStart(6,"0")}`}function mk(J){let z=(H)=>IB(J,J.theme[H]),Y=z("background"),Z=z("text");if(!Y||!Z)return null;let G=z("textMuted")??Zq(Z,Y,0.35),X=z("primary")??Z,q=z("border")??Zq(Z,Y,0.8);return{bg:Y,surface:z("backgroundPanel")??Y,inset:z("backgroundElement")??Y,menu:z("backgroundMenu")??z("backgroundElement")??Y,line:q,"line-subtle":z("borderSubtle")??q,"line-active":z("borderActive")??Zq(q,Z,0.3),fg:Z,muted:G,subtle:Zq(G,Y,0.35),primary:X,"primary-hover":Zq(X,Z,0.35),"kobe-orange":X,"kobe-green":z("success")??Z,"kobe-blue":z("info")??Z,"kobe-red":z("error")??Z,"kobe-yellow":z("warning")??Z,"kobe-violet":z("secondary")??X}}function e5(J,z){if(z.pathname!==dk)return null;if(J.method!=="GET")return Response.json({error:"method not allowed"},{status:405});return Response.json({themes:ck})}var vk,ck,dk="/api/themes";var JU=C(()=>{rQ();oQ();sQ();tQ();eQ();JH();zH();vk={claude:VG,conductor:KG,dracula:UG,nord:DG,opencode:LG,"osaka-jade":FG,tokyonight:MG};ck=Object.fromEntries(Object.entries(vk).map(([J,z])=>[J,mk(z)]).filter((J)=>J[1]!==null))});import{createHash as nk,randomUUID as ik}from"crypto";import{mkdir as lk}from"fs/promises";import{join as yB,resolve as $k}from"path";function pk(J){return nk("sha1").update(J).digest("hex").slice(0,16)}async function sk(J){let z=Number.parseInt(J.headers.get("content-length")??"",10);if(Number.isFinite(z)&&z>zU)return Response.json({error:"asset too large"},{status:413});let Y;try{Y=await J.formData()}catch{return Response.json({error:"invalid form data"},{status:400})}let Z=Y.get("repoRoot");if(typeof Z!=="string"||Z.length===0)return Response.json({error:"missing repoRoot"},{status:400});let G=Y.get("file");if(!(G instanceof File))return Response.json({error:"file must be a File"},{status:400});if(G.size>zU)return Response.json({error:"asset too large"},{status:413});let X=ak[G.type];if(!X)return Response.json({error:`unsupported content-type: ${G.type||"unknown"}`},{status:415});try{let q=pk(Z),H=yB($f(),q);await lk(H,{recursive:!0});let j=`${ik()}.${X}`;return await Bun.write(yB(H,j),G),Response.json({url:`${hH}/${q}/${j}`})}catch(q){return Response.json({error:q instanceof Error?q.message:String(q)},{status:500})}}async function tk(J){let z=J.slice(hH.length+1),Y=z.indexOf("/");if(Y<0)return Response.json({error:"not found"},{status:404});let Z=z.slice(0,Y),G=z.slice(Y+1);if(!rk.test(Z)||!ok.test(G))return Response.json({error:"invalid asset path"},{status:400});let X=$f(),q=$k(X,Z,G);if(q!==yB(X,Z,G)||!q.startsWith(`${X}/`))return Response.json({error:"invalid asset path"},{status:400});let H=G.slice(G.lastIndexOf(".")+1).toLowerCase(),f=_k[H];if(!f)return Response.json({error:"invalid asset path"},{status:400});let j=Bun.file(q);if(!await j.exists())return Response.json({error:"not found"},{status:404});return new Response(j,{headers:{"content-type":f,"cache-control":"public, max-age=31536000, immutable","x-content-type-options":"nosniff"}})}async function YU(J,z){if(z.pathname===hH){if(J.method==="POST")return sk(J);return Response.json({error:"method not allowed"},{status:405})}if(z.pathname.startsWith(`${hH}/`)){if(J.method==="GET")return tk(z.pathname);return Response.json({error:"method not allowed"},{status:405})}return null}var hH="/api/issue-assets",zU=10485760,ak,_k,rk,ok;var ZU=C(()=>{t1();ak={"image/png":"png","image/jpeg":"jpg","image/gif":"gif","image/webp":"webp"},_k={png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",webp:"image/webp"};rk=/^[a-f0-9]{16}$/,ok=/^[A-Za-z0-9_-]+\.[a-z0-9]+$/});function GU(J,z=500){return Response.json({error:J instanceof Error?J.message:String(J)},{status:z})}function XU(J){let z=J instanceof Error?J.message:String(J);if(/^no issue #\d+$/.test(z))return 404;if(z==="repoRoot is required"||z==="repoRoot does not exist"||z==="repoRoot is not a git repository"||z==="missing op"||z==="create requires a non-empty title"||z==="body must be a string"||z==="setStatus requires a numeric id"||z.startsWith("invalid status:")||z==="update requires a numeric id"||z==="title must be a non-empty string"||z==="link requires a numeric id"||z==="link requires a non-empty taskId"||z==="unlink requires a numeric id"||z==="delete requires a numeric id"||z.startsWith("unknown op type:"))return 400;return 500}async function ek(J,z){let Y=z.searchParams.get("repoRoot");if(!Y)return Response.json({error:"missing repoRoot"},{status:400});try{return Response.json(await J.request("issue.list",{repoRoot:Y}))}catch(Z){return GU(Z,XU(Z))}}async function Jb(J,z){let Y;try{Y=await z.json()}catch{return Response.json({error:"invalid JSON body"},{status:400})}if(Y===null||typeof Y!=="object"||Array.isArray(Y))return Response.json({error:"body must be a JSON object"},{status:400});let Z=Y;if(typeof Z.repoRoot!=="string"||Z.repoRoot.length===0)return Response.json({error:"missing repoRoot"},{status:400});try{return Response.json(await J.request("issue.mutate",{repoRoot:Z.repoRoot,op:Z.op}))}catch(G){return GU(G,XU(G))}}async function qU(J,z,Y){if(z.pathname!=="/api/issues")return null;if(J.method==="GET")return ek(Y,z);if(J.method==="POST")return Jb(Y,J);return Response.json({error:"method not allowed"},{status:405})}function QU(J){return zb.has(String(J??"").trim().toLowerCase())}function HU(J){try{if(!J)return null;let z=new URL(J);if(z.protocol!=="http:"&&z.protocol!=="https:")return null;return z.hostname}catch{return null}}function Yb(J){let z=HU(J);return z!==null&&QU(z)}function fU(J,z={}){if(!J)return!0;if(Yb(J))return!0;let Y=z.allowedHost?.trim();if(!Y)return!1;let Z=HU(J);return Z!==null&&Z===Y}function jU(J){let z=String(J??"").trim();return z&&!QU(z)?z:void 0}var zb;var BU=C(()=>{zb=new Set(["localhost","127.0.0.1","::1","[::1]"])});var Zb,WU;var VU=C(()=>{Zb=["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"],WU=new Set(Zb)});var mH={};q1(mH,{resolveRepoInit:()=>DU,resolveEngineLaunchInit:()=>IG});import{existsSync as UU,readFileSync as Gb}from"fs";import{join as vH}from"path";function qb(J){return UU(vH(J,KU))?`sh ${KU}`:void 0}function Qb(J){let z=vH(J,Xb);if(!UU(z))return;try{let Y=Gb(z,"utf8");return Y.trim().length>0?Y:void 0}catch{return}}function DU(J,z){let Y=J?Z8(J):{},Z=qb(z)??Y.initScript,G=Qb(z)??Y.initPrompt;return{initScript:Z&&Z.trim().length>0?Z:void 0,initPrompt:G&&G.trim().length>0?G:void 0}}function Hb(J,z){if(J.kind==="none")return;if(J.kind==="explicit")return{source:"explicit",text:J.prompt};let Y=z.initPrompt?.trim();return Y?{source:"repo-init",text:Y}:void 0}function IG(J,z,Y={kind:"repo-init"}){let Z=DU(J,z);return{initScript:Z.initScript,firstMessage:Hb(Y,Z)}}var KU,Xb;var yG=C(()=>{A1();KU=vH(".kobe","init.sh"),Xb=vH(".kobe","init-prompt.md")});async function fb(J,z){let{task:Y}=await J.request("task.get",{taskId:z});return Y}async function TB(J,z){let Y=await fb(J,z);if(Y.worktreePath)return{task:Y,worktreePath:Y.worktreePath};let{worktreePath:Z}=await J.request("task.ensureWorktree",{taskId:z});if(!Z)throw Error(`task ${z} has no worktree`);return{task:Y,worktreePath:Z}}async function LU(J,z){let{task:Y,worktreePath:Z}=await TB(J,z),G=C1(z);if(!await V1(G)){let X=IG(Y.repo??"",Z,{kind:"repo-init"});if(!await pX({name:G,cwd:Z,command:vJ(Y.vendor,Y.modelEffort),taskId:z,vendor:Y.vendor,launchInit:X}))throw Error(`failed to start tmux session for ${z}`)}return{session:G,worktreePath:Z}}function jb(J){return qQ(J,{bareSafe:!0})}async function FU(J,z){let{task:Y,worktreePath:Z}=await TB(J,z),G=Y.kind==="main"?void 0:z,X=Y.kind==="main"?z:void 0,q=[...cQ(mQ(vJ(Y.vendor,Y.modelEffort),Y.vendor,G),Y.vendor,X)],H=IG(Y.repo??"",Z,{kind:"none"}),f=jb(q),j=H.initScript?.trim()?`${H.initScript}
73
- ${f}`:f,V=process.env.SHELL?.trim()||"/bin/zsh";return{cwd:Z,command:[V,"-ilc",j]}}async function MU(J,z){let{worktreePath:Y}=await TB(J,z),Z=process.env.SHELL?.trim()||"/bin/zsh";return{cwd:Y,command:[Z,"-il"]}}async function OU(J){let z=C1(J);await cz(z).catch(()=>{}),await zz(z).catch(()=>{})}var AU=C(()=>{eJ();F8();yG();v1();zJ()});import{existsSync as Bb}from"fs";import{join as RU,normalize as CU}from"path";function Wb(J){let z=null,Y=null,Z=new TextEncoder,G=new ReadableStream({start(X){z=J((H,f)=>{try{X.enqueue(Z.encode(`event: ${H}
71
+ `;return""}async function q6(J,z){if(z.pathname!=="/api/diff")return null;if(J.method!=="GET")return Response.json({error:"method not allowed"},{status:405});let Y=z.searchParams.get("worktreePath");if(!Y)return Response.json({error:"missing worktreePath"},{status:400});let Z;try{Z=decodeURIComponent(Y)}catch{return Response.json({error:"invalid worktreePath encoding"},{status:400})}if(!Z.startsWith("/"))return Response.json({error:"worktreePath must be an absolute path"},{status:400});if(!xY(Z))return Response.json({error:"worktreePath does not exist"},{status:400});if(!HY(Z).isRemote)try{if(!lk(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 YQ(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,H,f]=await Promise.all([YQ(Z,["status","--porcelain=v1","-z","--untracked-files=all"]),YQ(Z,["diff","--no-color"]),YQ(Z,["diff","--no-color","--staged"])]);if(!Q.ok)return Response.json({error:`git status failed: ${Q.stderr.trim()}`},{status:500});let j=Q6(H.stdout),V=Q6(f.stdout),B=Q.stdout.split("\x00"),K=[],L=[];for(let R=0;R<B.length;R++){let u=B[R];if(!u)continue;let P=u[0]??" ",S=u[1]??" ",g=u.slice(3);if(!g)continue;if(P==="R"||P==="C"||S==="R"||S==="C")R++;let M=P==="?"&&S==="?",T=P!==" "&&P!=="?"?P:S,d=P!==" "&&P!=="?",i="";if(M)L.push({fileIndex:K.length,path:g});else if(i=V.get(g)??j.get(g)??"",V.has(g)&&j.has(g))i=`${V.get(g)}${j.get(g)}`;K.push({path:g,status:M?"untracked":_k(T),staged:d,patch:i})}if(L.length>0){let R=await pk(L,ak,(u)=>rk(Z,u.path));for(let u=0;u<L.length;u++)K[L[u].fileIndex].patch=R[u]}K.sort((R,u)=>R.path.localeCompare(u.path));let A=[f.stdout,H.stdout].filter(Boolean).join(`
72
+ `),O={files:K,raw:A};return Response.json(O)}var $k=15000,ak=8;var H6=C(()=>{Oz();PH();hH()});import{isAbsolute as ok}from"path";function j6(J){return typeof J==="string"&&J.length>0&&/^[A-Za-z0-9_-]+$/.test(J)}function tk(J){return typeof J==="string"&&J.length>0&&/^[A-Za-z0-9._-]+$/.test(J)&&!J.includes("..")}async function ek(J){let z=J.searchParams.get("worktreePath"),Y=J.searchParams.get("vendor")??"claude";if(!z||!ok(z))return Response.json({error:"worktreePath must be an absolute path"},{status:400});if(!j6(Y))return Response.json({error:"invalid vendor"},{status:400});try{let Z=i1(Y).history,[G,X]=await Promise.all([Z.listSessionIdsForWorktree(z),Z.latestTranscriptMtimeForWorktree(z)]);return Response.json({sessions:G,latestMtime:X})}catch(Z){return Response.json({error:Z instanceof Error?Z.message:String(Z)},{status:500})}}async function Jb(J){let z=J.searchParams.get("vendor")??"claude",Y=J.searchParams.get("sessionId");if(!j6(z))return Response.json({error:"invalid vendor"},{status:400});if(!tk(Y))return Response.json({error:"invalid sessionId"},{status:400});try{let Z=await i1(z).history.readHistory(Y);return Response.json({messages:Z})}catch(Z){return Response.json({error:Z instanceof Error?Z.message:String(Z)},{status:500})}}async function B6(J,z){if(z.pathname!==f6&&z.pathname!==sk)return null;if(J.method!=="GET")return Response.json({error:"method not allowed"},{status:405});return z.pathname===f6?ek(z):Jb(z)}var f6="/api/history/sessions",sk="/api/history/messages";var W6=C(()=>{QY()});import{mkdir as zb,readFile as Yb,writeFile as Zb}from"fs/promises";import{join as V6}from"path";function K6(){return V6(XJ(),"notes")}function U6(J){return typeof J==="string"&&J.length>0&&/^[A-Za-z0-9_-]+$/.test(J)}function D6(J){return V6(K6(),`${J}.md`)}async function Xb(J){let z=J.searchParams.get("taskId");if(!U6(z))return Response.json({error:"invalid taskId"},{status:400});try{let Y="";try{Y=await Yb(D6(z),"utf8")}catch(Z){if(Z.code!=="ENOENT")throw Z}return Response.json({markdown:Y})}catch(Y){return Response.json({error:Y instanceof Error?Y.message:String(Y)},{status:500})}}async function Qb(J){let z;try{z=await J.json()}catch{return Response.json({error:"invalid JSON body"},{status:400})}if(!U6(z.taskId))return Response.json({error:"invalid taskId"},{status:400});if(typeof z.markdown!=="string")return Response.json({error:"markdown must be a string"},{status:400});try{return await zb(K6(),{recursive:!0}),await Zb(D6(z.taskId),z.markdown,"utf8"),Response.json({ok:!0})}catch(Y){return Response.json({error:Y instanceof Error?Y.message:String(Y)},{status:500})}}async function L6(J,z){if(z.pathname!==Gb)return null;if(J.method==="GET")return Xb(z);if(J.method==="PUT")return Qb(J);return Response.json({error:"method not allowed"},{status:405})}var Gb="/api/notes";var F6=C(()=>{p1()});function u9(J,z,Y=[]){if(z===void 0)return null;if(typeof z!=="string")return u9(J,z.dark,Y);if(z==="transparent"||z==="none")return null;if(z.startsWith("#"))return z;if(Y.includes(z))return null;let Z=J.defs?.[z]??J.theme[z];return u9(J,Z,[...Y,z])}function x9(J){return Math.max(0,Math.min(255,Math.round(J)))}function ZQ(J,z,Y){let Z=Number.parseInt(J.slice(1),16),G=Number.parseInt(z.slice(1),16),X=(H,f)=>H>>f&255;return`#${(x9(X(Z,16)+(X(G,16)-X(Z,16))*Y)<<16|x9(X(Z,8)+(X(G,8)-X(Z,8))*Y)<<8|x9(X(Z,0)+(X(G,0)-X(Z,0))*Y)).toString(16).padStart(6,"0")}`}function Hb(J){let z=(H)=>u9(J,J.theme[H]),Y=z("background"),Z=z("text");if(!Y||!Z)return null;let G=z("textMuted")??ZQ(Z,Y,0.35),X=z("primary")??Z,Q=z("border")??ZQ(Z,Y,0.8);return{bg:Y,surface:z("backgroundPanel")??Y,inset:z("backgroundElement")??Y,menu:z("backgroundMenu")??z("backgroundElement")??Y,line:Q,"line-subtle":z("borderSubtle")??Q,"line-active":z("borderActive")??ZQ(Q,Z,0.3),fg:Z,muted:G,subtle:ZQ(G,Y,0.35),primary:X,"primary-hover":ZQ(X,Z,0.35),"kobe-orange":X,"kobe-green":z("success")??Z,"kobe-blue":z("info")??Z,"kobe-red":z("error")??Z,"kobe-yellow":z("warning")??Z,"kobe-violet":z("secondary")??X}}function M6(J,z){if(z.pathname!==jb)return null;if(J.method!=="GET")return Response.json({error:"method not allowed"},{status:405});return Response.json({themes:fb})}var qb,fb,jb="/api/themes";var O6=C(()=>{oq();sq();tq();eq();JH();zH();YH();qb={claude:VG,conductor:KG,dracula:UG,nord:DG,opencode:LG,"osaka-jade":FG,tokyonight:MG};fb=Object.fromEntries(Object.entries(qb).map(([J,z])=>[J,Hb(z)]).filter((J)=>J[1]!==null))});import{createHash as Bb,randomUUID as Wb}from"crypto";import{mkdir as Vb}from"fs/promises";import{join as E9,resolve as Kb}from"path";function Lb(J){return Bb("sha1").update(J).digest("hex").slice(0,16)}async function Ob(J){let z=Number.parseInt(J.headers.get("content-length")??"",10);if(Number.isFinite(z)&&z>A6)return Response.json({error:"asset too large"},{status:413});let Y;try{Y=await J.formData()}catch{return Response.json({error:"invalid form data"},{status:400})}let Z=Y.get("repoRoot");if(typeof Z!=="string"||Z.length===0)return Response.json({error:"missing repoRoot"},{status:400});let G=Y.get("file");if(!(G instanceof File))return Response.json({error:"file must be a File"},{status:400});if(G.size>A6)return Response.json({error:"asset too large"},{status:413});let X=Ub[G.type];if(!X)return Response.json({error:`unsupported content-type: ${G.type||"unknown"}`},{status:415});try{let Q=Lb(Z),H=E9(_f(),Q);await Vb(H,{recursive:!0});let j=`${Wb()}.${X}`;return await Bun.write(E9(H,j),G),Response.json({url:`${vH}/${Q}/${j}`})}catch(Q){return Response.json({error:Q instanceof Error?Q.message:String(Q)},{status:500})}}async function Ab(J){let z=J.slice(vH.length+1),Y=z.indexOf("/");if(Y<0)return Response.json({error:"not found"},{status:404});let Z=z.slice(0,Y),G=z.slice(Y+1);if(!Fb.test(Z)||!Mb.test(G))return Response.json({error:"invalid asset path"},{status:400});let X=_f(),Q=Kb(X,Z,G);if(Q!==E9(X,Z,G)||!Q.startsWith(`${X}/`))return Response.json({error:"invalid asset path"},{status:400});let H=G.slice(G.lastIndexOf(".")+1).toLowerCase(),f=Db[H];if(!f)return Response.json({error:"invalid asset path"},{status:400});let j=Bun.file(Q);if(!await j.exists())return Response.json({error:"not found"},{status:404});return new Response(j,{headers:{"content-type":f,"cache-control":"public, max-age=31536000, immutable","x-content-type-options":"nosniff"}})}async function R6(J,z){if(z.pathname===vH){if(J.method==="POST")return Ob(J);return Response.json({error:"method not allowed"},{status:405})}if(z.pathname.startsWith(`${vH}/`)){if(J.method==="GET")return Ab(z.pathname);return Response.json({error:"method not allowed"},{status:405})}return null}var vH="/api/issue-assets",A6=10485760,Ub,Db,Fb,Mb;var g6=C(()=>{p1();Ub={"image/png":"png","image/jpeg":"jpg","image/gif":"gif","image/webp":"webp"},Db={png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",webp:"image/webp"};Fb=/^[a-f0-9]{16}$/,Mb=/^[A-Za-z0-9_-]+\.[a-z0-9]+$/});function N6(J,z=500){return Response.json({error:J instanceof Error?J.message:String(J)},{status:z})}function C6(J){let z=J instanceof Error?J.message:String(J);if(/^no issue #\d+$/.test(z))return 404;if(z==="repoRoot is required"||z==="repoRoot does not exist"||z==="repoRoot is not a git repository"||z==="missing op"||z==="create requires a non-empty title"||z==="body must be a string"||z==="setStatus requires a numeric id"||z.startsWith("invalid status:")||z==="update requires a numeric id"||z==="title must be a non-empty string"||z==="link requires a numeric id"||z==="link requires a non-empty taskId"||z==="unlink requires a numeric id"||z==="delete requires a numeric id"||z.startsWith("unknown op type:"))return 400;return 500}async function Rb(J,z){let Y=z.searchParams.get("repoRoot");if(!Y)return Response.json({error:"missing repoRoot"},{status:400});try{return Response.json(await J.request("issue.list",{repoRoot:Y}))}catch(Z){return N6(Z,C6(Z))}}async function gb(J,z){let Y;try{Y=await z.json()}catch{return Response.json({error:"invalid JSON body"},{status:400})}if(Y===null||typeof Y!=="object"||Array.isArray(Y))return Response.json({error:"body must be a JSON object"},{status:400});let Z=Y;if(typeof Z.repoRoot!=="string"||Z.repoRoot.length===0)return Response.json({error:"missing repoRoot"},{status:400});try{return Response.json(await J.request("issue.mutate",{repoRoot:Z.repoRoot,op:Z.op}))}catch(G){return N6(G,C6(G))}}async function k6(J,z,Y){if(z.pathname!=="/api/issues")return null;if(J.method==="GET")return Rb(Y,z);if(J.method==="POST")return gb(Y,J);return Response.json({error:"method not allowed"},{status:405})}function b6(J){return Nb.has(String(J??"").trim().toLowerCase())}function S6(J){try{if(!J)return null;let z=new URL(J);if(z.protocol!=="http:"&&z.protocol!=="https:")return null;return z.hostname}catch{return null}}function Cb(J){let z=S6(J);return z!==null&&b6(z)}function I6(J,z={}){if(!J)return!0;if(Cb(J))return!0;let Y=z.allowedHost?.trim();if(!Y)return!1;let Z=S6(J);return Z!==null&&Z===Y}function y6(J){let z=String(J??"").trim();return z&&!b6(z)?z:void 0}var Nb;var T6=C(()=>{Nb=new Set(["localhost","127.0.0.1","::1","[::1]"])});var kb,x6;var u6=C(()=>{kb=["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"],x6=new Set(kb)});var cH={};q1(cH,{resolveRepoInit:()=>P6,resolveEngineLaunchInit:()=>IG});import{existsSync as w6,readFileSync as bb}from"fs";import{join as mH}from"path";function Ib(J){return w6(mH(J,E6))?`sh ${E6}`:void 0}function yb(J){let z=mH(J,Sb);if(!w6(z))return;try{let Y=bb(z,"utf8");return Y.trim().length>0?Y:void 0}catch{return}}function P6(J,z){let Y=J?Xj(J):{},Z=Ib(z)??Y.initScript,G=yb(z)??Y.initPrompt;return{initScript:Z&&Z.trim().length>0?Z:void 0,initPrompt:G&&G.trim().length>0?G:void 0}}function Tb(J,z){if(J.kind==="none")return;if(J.kind==="explicit")return{source:"explicit",text:J.prompt};let Y=z.initPrompt?.trim();return Y?{source:"repo-init",text:Y}:void 0}function IG(J,z,Y={kind:"repo-init"}){let Z=P6(J,z);return{initScript:Z.initScript,firstMessage:Tb(Y,Z)}}var E6,Sb;var yG=C(()=>{C1();E6=mH(".kobe","init.sh"),Sb=mH(".kobe","init-prompt.md")});async function xb(J,z){let{task:Y}=await J.request("task.get",{taskId:z});return Y}async function w9(J,z){let Y=await xb(J,z);if(Y.worktreePath)return{task:Y,worktreePath:Y.worktreePath};let{worktreePath:Z}=await J.request("task.ensureWorktree",{taskId:z});if(!Z)throw Error(`task ${z} has no worktree`);return{task:Y,worktreePath:Z}}async function h6(J,z){let{task:Y,worktreePath:Z}=await w9(J,z),G=I1(z);if(!await K1(G)){let X=IG(Y.repo??"",Z,{kind:"repo-init"});if(!await pX({name:G,cwd:Z,command:cJ(Y.vendor,Y.modelEffort),taskId:z,vendor:Y.vendor,launchInit:X}))throw Error(`failed to start tmux session for ${z}`)}return{session:G,worktreePath:Z}}function ub(J){return Qq(J,{bareSafe:!0})}async function v6(J,z){let{task:Y,worktreePath:Z}=await w9(J,z),G=Y.kind==="main"?void 0:z,X=Y.kind==="main"?z:void 0,Q=[...dq(cq(cJ(Y.vendor,Y.modelEffort),Y.vendor,G),Y.vendor,X)],H=IG(Y.repo??"",Z,{kind:"none"}),f=ub(Q),j=H.initScript?.trim()?`${H.initScript}
73
+ ${f}`:f,V=process.env.SHELL?.trim()||"/bin/zsh";return{cwd:Z,command:[V,"-ilc",j]}}async function m6(J,z){let{worktreePath:Y}=await w9(J,z),Z=process.env.SHELL?.trim()||"/bin/zsh";return{cwd:Y,command:[Z,"-il"]}}async function c6(J){let z=I1(J);await nz(z).catch(()=>{}),await Gz(z).catch(()=>{})}var d6=C(()=>{Yz();Oj();yG();c1();zJ()});import{existsSync as Eb}from"fs";import{join as n6,normalize as $6}from"path";function wb(J){let z=null,Y=null,Z=new TextEncoder,G=new ReadableStream({start(X){z=J((H,f)=>{try{X.enqueue(Z.encode(`event: ${H}
74
74
  data: ${JSON.stringify(f)}
75
75
 
76
76
  `))}catch{}}),Y=setInterval(()=>{try{X.enqueue(Z.encode(`: ping
77
77
 
78
- `))}catch{}},15000)},cancel(){if(Y)clearInterval(Y);z?.()}});return new Response(G,{headers:{"content-type":"text/event-stream","cache-control":"no-cache, no-transform",connection:"keep-alive"}})}async function Vb(J,z,Y){try{let{name:Z,payload:G}=await J.json();if(!Z)return Response.json({error:"missing rpc name"},{status:400});if(!WU.has(Z))return Response.json({error:`rpc ${Z} is not exposed to the web UI`},{status:403});let X=await z.request(Z,G),q=G?.taskId;if(typeof q==="string"){let H=Z==="task.archive"&&G.archived!==!1;if(Z==="task.delete"||H)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 Kb(){try{let z=(await zY()).map((Y)=>({id:Y,label:LZ(Y),effortLevels:n1(Y).effortLevels}));return Response.json({engines:z.length>0?z:[{id:"claude",label:"Claude"}]})}catch(J){return Response.json({error:J instanceof Error?J.message:String(J)},{status:500})}}function Ub(){return Response.json({api:FZ()})}function Db(){return Response.json({projects:CJ()})}function nY(J,z=""){return typeof J==="string"?J:z}function Lb(J,z){return typeof J==="boolean"?J:z}function yU(J){let z=J.customEngineIds;if(!Array.isArray(z))return[];return z.filter((Y)=>typeof Y==="string"&&IU.test(Y)&&!fJ(Y))}function Fb(J){return J.split(/[-_]+/).filter(Boolean).map((z)=>`${z.slice(0,1).toUpperCase()}${z.slice(1)}`).join(" ")}function Mb(J,z){return nY(J[Oz(z)]).trim()||LZ(z)}function Ob(J,z){return nY(J[Mz(z)]).trim()||IX(z).join(" ")}function TU(){let J=NJ(),z=yU(J),Y=[...tY,...z],Z=nY(J.lastSelectedVendor,"claude"),G=nY(J.focusAccent,"primary");return Response.json({activeTheme:nY(J.activeTheme,"claude"),transparentBackground:Lb(J.transparentBackground,!1),focusAccent:SU.includes(G)?G:"primary",notificationsToast:J["notifications.toast.enabled"]!==!1,notificationsSound:J["notifications.sound.enabled"]!==!1,settingsSurface:TZ(J[fY]??yZ),editorKind:bG(J[HY]??xH),editorCustomCommand:nY(J[cY]),remoteProjects:J["experimental.remoteProjects"]===!0,archivedHistoryPreview:J["experimental.archivedHistoryPreview"]===!0,autoStatus:J[UZ]===!0,dispatcher:J[DZ]===!0,defaultEngine:Z,engines:Y.map((X)=>({id:X,label:Mb(J,X),command:Ob(J,X),isBuiltin:fJ(X),isCustom:!fJ(X),isDefault:X===Z}))})}function Gq(J,z,Y){if(typeof Y==="string")J[z]=Y.trim()}function uZ(J,z,Y){if(typeof Y==="boolean")J[z]=Y}async function Ab(J){try{let z=await J.json(),Y={};if(Gq(Y,"activeTheme",z.activeTheme),uZ(Y,"transparentBackground",z.transparentBackground),SU.includes(z.focusAccent))Y.focusAccent=z.focusAccent;if(uZ(Y,"notifications.toast.enabled",z.notificationsToast),uZ(Y,"notifications.sound.enabled",z.notificationsSound),z.settingsSurface==="chattab"||z.settingsSurface==="taskpanel")Y[fY]=z.settingsSurface;if(IZ.includes(z.editorKind))Y[HY]=z.editorKind;Gq(Y,cY,z.editorCustomCommand),uZ(Y,"experimental.remoteProjects",z.remoteProjects),uZ(Y,"experimental.archivedHistoryPreview",z.archivedHistoryPreview),uZ(Y,UZ,z.autoStatus),uZ(Y,DZ,z.dispatcher),Gq(Y,"lastSelectedVendor",z.defaultEngine);let Z=NJ(),G=yU(Z),X=new Set([...tY,...G]),q=Array.isArray(z.engineUpdates)?z.engineUpdates:[];for(let H of q){if(!H||typeof H!=="object")continue;let f=H;if(typeof f.id!=="string"||!X.has(f.id))continue;Gq(Y,Mz(f.id),f.command),Gq(Y,Oz(f.id),f.label)}if(z.addEngine&&typeof z.addEngine==="object"){let H=z.addEngine,f=typeof H.id==="string"?H.id.trim().toLowerCase():"";if(!IU.test(f)||fJ(f)||X.has(f))return Response.json({error:"invalid or duplicate engine id"},{status:400});Y.customEngineIds=[...G,f],Y[Mz(f)]=nY(H.command).trim();let j=nY(H.label).trim();Y[Oz(f)]=j&&j!==f?j:Fb(f)}if(typeof z.removeEngine==="string"){let H=z.removeEngine;if(!fJ(H)){if(Y.customEngineIds=G.filter((f)=>f!==H),Y[Mz(H)]=void 0,Y[Oz(H)]=void 0,Z.lastSelectedVendor===H)Y.lastSelectedVendor="claude"}}if(Object.keys(Y).length>0)RY(Y);return TU()}catch(z){return Response.json({error:z instanceof Error?z.message:String(z)},{status:400})}}async function Rb(J,z){try{let{taskId:Y}=await J.json();if(!Y)return Response.json({error:"missing taskId"},{status:400});return Response.json(await LU(z,Y))}catch(Y){return Response.json({error:Y instanceof Error?Y.message:String(Y)},{status:500})}}async function gU(J,z,Y){try{let Z=J.searchParams.get("taskId");if(!Z)return Response.json({error:"missing taskId"},{status:400});return Response.json(await Y(z,Z))}catch(Z){return Response.json({error:Z instanceof Error?Z.message:String(Z)},{status:500})}}function xU(){return Response.json({review:N1(cH.review)??null,pr:N1(cH.pr)??null})}async function gb(J){try{let z=await J.json();if(typeof z.review==="string")e1(cH.review,z.review);if(typeof z.pr==="string")e1(cH.pr,z.pr);return xU()}catch(z){return Response.json({error:z instanceof Error?z.message:String(z)},{status:400})}}async function Nb(J,z){let Z=CU(RU(z,J==="/"?"/index.html":J));if(!Z.startsWith(z))return new Response("forbidden",{status:403});let G=Bun.file(Bb(Z)?Z:RU(z,"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 Cb(J){let{link:z,sseSends:Y,staticDir:Z}=J,G=J.tearDownSession??((X)=>void OU(X));return async function(q){let H=new URL(q.url);if(H.pathname===bU)return new Response(kU);if(!fU(q.headers.get("origin"),{allowedHost:J.allowedHost}))return new Response("forbidden: cross-origin request rejected",{status:403});if(H.pathname==="/events")return Wb((A)=>{let O=J.onSseOpen?.()??(()=>{});return A("snapshot",z.snapshot()),Y.add(A),()=>{Y.delete(A),O()}});if(H.pathname==="/api/rpc"&&q.method==="POST")return Vb(q,z,G);if(H.pathname==="/api/session"&&q.method==="POST")return Rb(q,z);if(H.pathname==="/api/engine-spec"&&q.method==="GET")return gU(H,z,FU);if(H.pathname==="/api/terminal-spec"&&q.method==="GET")return gU(H,z,MU);if(H.pathname==="/api/engines"&&q.method==="GET")return Kb();if(H.pathname==="/api/cli-invocation"&&q.method==="GET")return Ub();if(H.pathname==="/api/projects"&&q.method==="GET")return Db();if(H.pathname==="/api/settings"&&q.method==="GET")return TU();if(H.pathname==="/api/settings"&&q.method==="PATCH")return Ab(q);if(H.pathname==="/api/quick-prompts"&&q.method==="GET")return xU();if(H.pathname==="/api/quick-prompts"&&q.method==="PUT")return gb(q);let f=await s5(q,H);if(f)return f;let j=await d5(q,H);if(j)return j;let V=await $5(q,H);if(V)return V;let B=await qU(q,H,z);if(B)return B;let K=await YU(q,H);if(K)return K;let L=e5(q,H);if(L)return L;if(Z)return Nb(H.pathname,Z);return new Response("not found",{status:404})}}function EZ(J,z){let Y=J.snapshot().find((Z)=>Z.channel===z);return Y?Y.payload:null}function xB(J){return J.length>1?J.replace(/\/+$/,""):J}function kb(J,z){let Y=xB(z),Z=new Set([z]);for(let G of J){let X=xB(G.repo),q=xB(G.worktreePath);if(X===Y||q===Y){if(G.repo)Z.add(G.repo);if(G.worktreePath)Z.add(G.worktreePath)}}return[...Z]}function uU(J){let z=tX();return{async request(Y,Z){return await sX(z,Y,Z,J.ctx(0))},snapshot(){let Y=J.orch.listTasks().map(Bz),Z={},G=EZ(J.bus,"issue.snapshot");if(G)for(let H of kb(Y,G.repoRoot))Z[H]={...G,repoRoot:H};let X=EZ(J.bus,"task.jobs"),q=X?.phase==="running"?{[X.taskId]:X}:{};return{tasks:Y,activeTaskId:EZ(J.bus,"active-task")?.taskId??null,engineStates:J.activity.snapshotByTask(),update:EZ(J.bus,"update")?.info??null,jobs:q,worktreeChanges:EZ(J.bus,"worktree.changes")?.changes??{},issueSnapshots:Z,deliver:EZ(J.bus,"session.deliver"),uiPrefs:EZ(J.bus,"ui-prefs"),connected:!0}}}}async function NU(J){try{let z=Bun.spawn(["lsof","-nP",`-iTCP:${J}`,"-sTCP:LISTEN","-t"],{stdout:"pipe",stderr:"ignore"});return(await new Response(z.stdout).text()).split(`
79
- `).map((Z)=>Number.parseInt(Z.trim(),10)).filter((Z)=>Number.isFinite(Z)&&Z!==process.pid)}catch{return[]}}async function bb(J,z=bU){let Y;try{Y=(await(await fetch(`http://localhost:${J}${z}`,{signal:AbortSignal.timeout(800)})).text()).trim()}catch{return}if(Y!==kU)throw Error(`port ${J} is in use by a non-kobe service; refusing to replace it`);let Z=await NU(J);for(let X of Z)try{process.kill(X,"SIGTERM")}catch{}let G=Date.now()+2000;while(Date.now()<G){if((await NU(J)).length===0)return;await new Promise((X)=>setTimeout(X,100))}}async function EU(J){if(J.takeover!==!1)await bb(J.port);let z=new Set,Y=J.onEvent((H)=>{for(let f of z)f("channel",H)}),Z=J.hostname?.trim()||process.env.KOBE_WEB_HOST?.trim()||"127.0.0.1",G=jU(Z),X=Cb({link:J.link,sseSends:z,staticDir:J.staticDir?CU(J.staticDir):void 0,allowedHost:G,onSseOpen:J.onSseOpen}),q=Bun.serve({port:J.port,hostname:Z,idleTimeout:0,fetch:X});return{port:q.port??J.port,hostname:Z,close(){Y(),q.stop(!0)}}}var kU="kobe-web",bU="/__kobe_web",SU,IU,cH;var wU=C(()=>{XZ();eJ();ZY();SX();vQ();A1();gY();uH();a1();n5();a5();t5();JU();AH();YZ();ZU();BU();VU();AU();SU=["primary","success","info"],IU=/^[a-z][a-z0-9_-]{0,47}$/;cH={review:"boardPrompt.review",pr:"boardPrompt.pr"}});var PU={};q1(PU,{sameWorktreeChanges:()=>iz,readWorktreeChanges:()=>Ib,pickPushedChanges:()=>nH,parsePorcelain:()=>TG});import{spawnSync as Sb}from"child_process";function iz(J,z){return J.added===z.added&&J.deleted===z.deleted}function nH(J,z){if(!J)return null;return J.get(z)??dH}function Ib(J){if(!J)return dH;try{let z=Sb("git",["status","--porcelain=v1"],{cwd:J,encoding:"utf8",stdio:["ignore","pipe","pipe"],env:dJ()});if(z.status!==0||!z.stdout)return dH;return TG(z.stdout)}catch{return dH}}function TG(J){let z=0,Y=0;for(let{x:Z,y:G}of EH(J))if(Z==="D"||G==="D")Y+=1;else z+=1;return{added:z,deleted:Y}}var dH;var xG=C(()=>{dY();wH();dH={added:0,deleted:0}});async function ub(J,z){let Y=await GY("git",["status","--porcelain=v1"],{cwd:J,env:dJ(),signal:z});if(Y.status!==0)throw Error("git status failed");return TG(Y.stdout)}function Eb(J){let z=new Set;for(let Y of J){if(Y.archived)continue;if(!Y.worktreePath)continue;if(_1(Y.repo)||_1(Y.worktreePath))continue;z.add(Y.worktreePath)}return z}class hU{orch;bus;options;entries=new Map;stopped=!1;constructor(J,z,Y={}){this.orch=J;this.bus=z;this.options=Y}tick(){if(this.stopped)return;if(this.options.hasSubscribers&&!this.options.hasSubscribers())return;try{let J=Eb(this.orch.listTasks()),z=!1;for(let Y of this.entries.keys()){if(J.has(Y))continue;if(this.entries.get(Y)?.value)z=!0;this.entries.delete(Y)}if(z)this.publish();for(let Y of J)this.maybeCollect(Y)}catch(J){y1("worktree-changes",J)}}stop(){this.stopped=!0}maybeCollect(J){let z=this.entries.get(J);if(!z)z={inFlight:!1,nextAllowedAt:0},this.entries.set(J,z);let Y=this.options.cadence??{timeoutMs:yb,slowRetryMs:Tb,minIntervalMs:xb},Z=this.options.run??ub;ZG(z,Y,(G)=>Z(J,G),(G)=>{if(this.stopped)return;if(this.entries.get(J)!==z)return;if(z.value&&iz(z.value,G))return;z.value=G,this.publish()})}publish(){let J={};for(let[z,Y]of this.entries)if(Y.value)J[z]=Y.value;this.bus.publish("worktree.changes",{changes:J})}}function vU(J,z,Y=uB,Z){if(Y<=0)return()=>{};let G=new hU(J,z,{hasSubscribers:Z});G.tick();let X=setInterval(()=>G.tick(),Y);return X.unref?.(),()=>{clearInterval(X),G.stop()}}var uB=2000,yb=4000,Tb=60000,xb=1500;var mU=C(()=>{dY();GG();A1();xG()});import{mkdir as cU,readFile as wb,unlink as EB,writeFile as Pb}from"fs/promises";import{createServer as hb}from"net";import{dirname as dU}from"path";import{StringDecoder as vb}from"string_decoder";function cb(){let J=process.env.KOBE_DAEMON_IDLE_GRACE_MS;if(J===void 0)return nU;let z=Number(J);return Number.isFinite(z)&&z>=0?z:nU}async function lU(J,z={}){let Y=z.socketPath??xz(z.homeDir),Z=z.pidPath??ez(z.homeDir),G=z.startedAt??new Date,X=new Set,q=new Set,H=1,f=new gB({clients:function*(){yield*X,yield*q},idleGraceMs:cb(),onIdleStop:()=>void Q0().catch((v)=>y1("daemon-idle-shutdown",v))}),j=new sj;j.onPublish((v)=>{iU(X,{type:"event",name:v.channel,payload:v.payload})});let B=new l8(j,void 0,void 0,async(v)=>{let k=J.getTask(v);if(!k?.worktreePath)return;return tZ(k.vendor??p1,k.worktreePath)}),K=new NH(gH(z.homeDir));await cU(dU(Y),{recursive:!0}),await cU(dU(Z),{recursive:!0}),await EB(Y).catch(()=>{});let L=hb((v)=>{let k={id:H++,connectedAt:new Date,socket:v,writer:new oj(v),buffer:"",subscribed:!1,holdsLifetime:!1,channels:null};X.add(k);let t=new vb("utf8");v.on("data",(I)=>{k.buffer+=t.write(I),s(k)}),v.on("error",()=>{}),v.on("close",()=>{if(X.delete(k),k.subscribed)dz("conn",`client #${k.id} (${k.holdsLifetime?"gui":"pane"}) disconnected \u2014 ${X.size} client(s), ${f.guiCount()} gui left`);f.clientDisconnected(k.holdsLifetime)})}),A=J.subscribeTasks((v)=>{j.publish("task.snapshot",{tasks:v.map(Bz)})}),O=z.checkUpdate??XX,R=z.updatePollMs??mb,x=()=>{O().then((v)=>j.publish("update",{info:v})).catch((v)=>y1("update-poller",v))},w=null;if(R>0)x(),w=setInterval(x,R),w.unref?.();let S=z.autoTitlePollMs??rj,g=E6(J,S,()=>f.hasSubscribers()),M=y5(j,{statePath:kB(z.homeDir),debounceMs:z.uiPrefsDebounceMs??CB}),T=A5(j,{path:RB(z.homeDir),debounceMs:z.keybindingsDebounceMs??AB}),$=vU(J,j,z.worktreeChangesTickMs??uB,()=>f.hasSubscribers()),d=b5(J,j,z.transcriptActivityTickMs??NB,()=>f.hasSubscribers()),e=N5(J,z.prStatusPollMs??zq,()=>f.hasSubscribers()),u=null,z0={socketPath:Y,pidPath:Z,startedAt:G,get webPort(){return u?.port},clients:X,async close(){if(f.markStopping(),A(),u?.close(),u=null,w)clearInterval(w);g(),e(),M(),T(),$(),d(),B.close(),iU(X,{type:"event",name:"daemon.stopping",payload:{}});for(let v of Array.from(X))v.socket.destroy();await new Promise((v)=>L.close(()=>v())),await EB(Y).catch(()=>{}),await EB(Z).catch(()=>{})}};await new Promise((v,k)=>{let t=L;t.once("error",k),L.listen(Y,()=>{t.removeListener("error",k),v()})}),await Pb(Z,`${process.pid}
80
- `,"utf8");async function Q0(){if(f.isStopping())return;f.markStopping(),await z.onStop?.(),setTimeout(()=>{z0.close().catch((v)=>y1("daemon-shutdown",v))},0).unref()}let o=tX();function K0(v){return{orch:J,bus:j,activity:B,issues:K,daemon:{startedAt:G,socketPath:Y,webPort:u?.port,pid:process.pid,guiCount:()=>f.guiCount(),stopSoon:Q0},clientId:v}}if(z.webPort!==void 0){let v=uU({orch:J,bus:j,activity:B,ctx:K0});u=await EU({port:z.webPort,hostname:z.webHost,staticDir:z.webStaticDir,link:v,onEvent:(k)=>j.onPublish(k),onSseOpen:()=>{let k={subscribed:!0,holdsLifetime:!0};return q.add(k),f.guiAttached(),dz("conn",`web client subscribed \u2014 ${X.size+q.size} client(s), ${f.guiCount()} gui`),()=>{q.delete(k),dz("conn",`web client disconnected \u2014 ${X.size+q.size} client(s), ${f.guiCount()} gui left`),f.clientDisconnected(!0)}}}),dz("web",`daemon web transport listening on http://${u.hostname}:${u.port}`)}async function N0(v,k){if(v.name==="subscribe"){let t=YB(v.payload),I=k.subscribed;k.subscribed=!0;let n=t.role==="gui"?"gui":"pane";k.holdsLifetime=n==="gui",k.channels=QV(t.channels);let q0=!I;if(k.holdsLifetime)f.guiAttached();dz("conn",`client #${k.id} subscribed as ${n}${k.channels?` [${[...k.channels].join(",")}]`:""} \u2014 ${X.size} client(s), ${f.guiCount()} gui${q0?" (collectors resume)":""}`);for(let H0 of j.snapshot()){if(k.channels&&!k.channels.has(H0.channel))continue;Xq(k,{type:"event",name:H0.channel,payload:H0.payload})}if(!k.channels||k.channels.has("engine-state"))for(let H0 of B.currentNonIdle())Xq(k,{type:"event",name:"engine-state",payload:H0});return{}}return sX(o,v.name,v.payload,K0(k.id))}async function h(v,k){try{let t=await N0(v,k);Xq(k,{type:"response",id:v.id,name:v.name,payload:t})}catch(t){Xq(k,{type:"response",id:v.id,name:v.name,error:zB(t)})}}function s(v){let k=v.buffer.indexOf(`
81
- `);while(k!==-1){let t=v.buffer.slice(0,k);if(v.buffer=v.buffer.slice(k+1),t.trim().length>0)try{let I=JSON.parse(t);if(I.type!=="request")throw Error("daemon only accepts request frames from clients");h(I,v)}catch(I){Xq(v,{type:"response",id:"parse-error",error:{message:I instanceof Error?I.message:String(I)}})}k=v.buffer.indexOf(`
82
- `)}}return z0}async function uG(J){try{let z=await wb(J,"utf8"),Y=Number(z.trim());return Number.isFinite(Y)?Y:null}catch{return null}}function $U(J){if(J.type==="event")return J.name==="daemon.stopping";return!0}function Xq(J,z){J.writer.write(QX(z),$U(z))}function iU(J,z){let Y=z.type==="event"&&z.name!=="daemon.stopping"?z.name:null,Z=$U(z),G=null;for(let X of J){if(!X.subscribed&&z.type==="event")continue;if(Y&&X.channels&&!X.channels.has(Y))continue;G??=QX(z),X.writer.write(G,Z)}}var mb=21600000,nU=3000;var iH=C(()=>{MQ();tJ();AJ();C7();w6();AH();fB();R5();g5();$Z();C5();YZ();S5();T5();wU();mU();AH();fB()});import{unlink as aU}from"fs/promises";function db(J){try{return process.kill(J,0),!0}catch(z){return z.code==="EPERM"}}async function EG(J,z){let Y=await uG(z),Z=Y!==null&&Y!==process.pid?Y:null,G=Z!==null&&db(Z),X=G?"graceful":"absent",q=new rJ(J),H=q.request("daemon.stop").catch(()=>{return}),f=new Promise((j)=>setTimeout(j,2000));if(await Promise.race([H,f]),q.close(),G&&Z!==null){let j=Date.now()+5000,V=!1;while(Date.now()<j){try{process.kill(Z,0)}catch{break}if(!V&&Date.now()-(j-5000)>2000){try{process.kill(Z,"SIGTERM")}catch{}X="sigterm",V=!0}await new Promise((B)=>setTimeout(B,50))}try{process.kill(Z,0),process.kill(Z,"SIGKILL"),X="sigkill",await new Promise((B)=>setTimeout(B,100))}catch{}}return await aU(J).catch(()=>{}),await aU(z).catch(()=>{}),{pid:Y,method:X}}var lH=C(()=>{HX();iH()});var LH={};q1(LH,{testDaemonResponds:()=>$H,ensureDaemonReachable:()=>wG,connectOrStartDaemon:()=>kz,connectIfRunning:()=>Zz});import{spawn as nb}from"child_process";import{closeSync as ib,existsSync as lb,mkdirSync as $b,openSync as ab}from"fs";import{dirname as _U,resolve as wB}from"path";import{fileURLToPath as _b}from"url";function ob(J,z,Y,Z){let G="ignore",X;try{$b(_U(Z),{recursive:!0}),X=ab(Z,"a"),G=["ignore",X,X]}catch{G="ignore"}if(nb(J,[...z],{detached:!0,stdio:G,env:Y}).unref(),X!==void 0)try{ib(X)}catch{}}async function wG(){let J=xz();if(await $H(J))return J;await EG(J,ez()).catch(()=>{});let[z,...Y]=sb(pb);ob(z,Y,process.env,rq());let Z=Date.now()+5000;while(Date.now()<Z){if(await $H(J))return J;await new Promise((G)=>setTimeout(G,100))}throw Error(`kobe: daemon did not start (or stayed wedged) at ${J}`)}async function kz(){let J=await wG(),z=new rJ(J);return await z.connect(),z}async function Zz(){let J=xz();if(!await $H(J))return null;let z=new rJ(J);return await z.connect(),z}async function $H(J,z=rb){let Y=new rJ(J);try{await Y.connect()}catch{return Y.close(),!1}let Z=Y.request("hello",{protocolVersion:pJ}).then(()=>!0).catch(()=>!0),G,X=new Promise((H)=>{G=setTimeout(()=>H(!1),z)}),q=await Promise.race([Z,X]);if(G)clearTimeout(G);return Y.close(),q}function sb(J){let z=_b(import.meta.url);if(z.startsWith("/$bunfs")||z.startsWith("B:\\~BUN"))return[process.execPath,...J];let Y=_U(z),Z=[wB(Y,"../cli/index.ts"),wB(Y,"../../../kobe/src/cli/index.ts"),wB(Y,"../cli/index.js")],G=Z.find((X)=>lb(X));if(G)return[process.execPath,G,...J];throw Error(`kobe: could not locate kobe entry near ${Y}; checked ${Z.join(", ")}`)}var pb,rb=3000;var RJ=C(()=>{lH();$Z();YZ();HX();pb=["daemon","start"]});import{mkdir as tb,readFile as pU,unlink as oU,writeFile as rU}from"fs/promises";import{dirname as eb}from"path";function JS(J){if(!Number.isInteger(J)||J<=0)return!1;try{return process.kill(J,0),!0}catch(z){if(z.code==="ESRCH")return!1;return!0}}async function PB(J,z={}){await tb(eb(J),{recursive:!0});try{await rU(J,String(process.pid),{flag:"wx"});return}catch(G){if(G.code!=="EEXIST")throw G}let Y=-1;try{let G=(await pU(J,"utf8")).trim();if(Y=Number.parseInt(G,10),!Number.isFinite(Y))Y=-1}catch{return PB(J,z)}let Z=Y>0&&JS(Y);if(Z&&!z.forceTakeover)throw new qq(`task index is locked by another kobe instance (pid ${Y})`,Y);console.warn(`[kobe] removing stale lockfile at ${J} (was held by pid ${Y}${Z?", forced":", process gone"})`);try{await oU(J)}catch(G){if(G.code!=="ENOENT")throw G}try{await rU(J,String(process.pid),{flag:"wx"})}catch(G){if(G.code==="EEXIST"){let X=-1;try{X=Number.parseInt((await pU(J,"utf8")).trim(),10)}catch{X=-1}throw new qq(`task index lockfile contended during takeover (winner pid ${X})`,X)}throw G}}async function sU(J){try{await oU(J)}catch(z){if(z.code==="ENOENT")return;throw z}}var qq;var tU=C(()=>{qq=class qq extends Error{heldByPid;constructor(J,z){super(J);this.name="LockfileError",this.heldByPid=z}}});function zS(J,z){let Y="",Z=J;for(let G=z-1;G>=0;G--){let X=Z%32;Y="0123456789ABCDEFGHJKMNPQRSTVWXYZ"[X]+Y,Z=(Z-X)/32}return Y}function z4(J){let z=new Uint8Array(J);crypto.getRandomValues(z);let Y=Array(J);for(let Z=0;Z<J;Z++)Y[Z]=(z[Z]??0)&31;return Y}function YS(J){for(let z=J.length-1;z>=0;z--){let Y=J[z]??0;if(Y<31)return J[z]=Y+1,!0;J[z]=0}return!1}function ZS(J){let z="";for(let Y of J)z+="0123456789ABCDEFGHJKMNPQRSTVWXYZ"[Y]??"0";return z}function Y4(J=Date.now()){let z;if(J===eU){let Y=J4.slice();if(!YS(Y))z=z4(16);else z=Y}else z=z4(16);return eU=J,J4=z,zS(J,10)+ZS(z)}var eU=-1,J4;var Z4=C(()=>{J4=Array(16).fill(0)});var hB={};q1(hB,{TaskIndexStore:()=>PG});import{mkdir as GS,open as XS,readFile as G4,rename as qS,unlink as X4}from"fs/promises";import{homedir as QS}from"os";import{dirname as HS,join as q4}from"path";async function WS(J){let z=Date.now()+BS;for(;;)try{await PB(J);return}catch(Y){if(!(Y instanceof qq)||Date.now()>=z)throw Y;await fS(jS)}}class PG{homeDir;kobeDir;path;tmpPath;lockPath;cache={version:jY,tasks:[]};loaded=!1;listeners=new Set;saveChain=Promise.resolve();dirtyIds=new Set;removedIds=new Set;constructor(J={}){this.homeDir=J.homeDir??QS(),this.kobeDir=q4(this.homeDir,".kobe"),this.path=q4(this.kobeDir,"tasks.json"),this.tmpPath=`${this.path}.tmp`,this.lockPath=`${this.path}.lock`}subscribe(J){if(this.listeners.add(J),this.loaded)try{J(this.cache.tasks.slice())}catch(z){console.error("[kobe TaskIndexStore] listener threw on subscribe:",z)}return()=>{this.listeners.delete(J)}}get filePath(){return this.path}get stateDir(){return this.kobeDir}async load(){this.dirtyIds.clear(),this.removedIds.clear();let J;try{J=await G4(this.path,"utf8")}catch(Y){if(Y.code==="ENOENT")return this.cache={version:jY,tasks:[]},this.loaded=!0,this.notifyListeners(),this.snapshot();throw Y}let z;try{z=JSON.parse(J)}catch(Y){return console.warn(`[kobe] tasks.json at ${this.path} is corrupted (${Y.message}); recovering with empty index. The stale file is left in place.`),this.cache={version:jY,tasks:[]},this.loaded=!0,this.notifyListeners(),this.snapshot()}return this.cache=Q4(z,this.path),this.loaded=!0,this.notifyListeners(),this.snapshot()}async save(){this.assertLoaded();let J=this.saveChain.then(()=>this.doSave());return this.saveChain=J.catch(()=>{}),J}async doSave(){await GS(HS(this.path),{recursive:!0});let J=new Set(this.dirtyIds),z=new Set(this.removedIds);await WS(this.lockPath);try{let Y=await this.readDiskTasks(),Z=this.mergeWithDisk(Y,J,z),X=`${JSON.stringify({version:jY,tasks:Z},null,2)}
83
- `,q=await XS(this.tmpPath,"w",420);try{await q.writeFile(X,"utf8"),await q.sync()}finally{await q.close()}await qS(this.tmpPath,this.path);for(let f of J)this.dirtyIds.delete(f);for(let f of z)this.removedIds.delete(f);let H=new Set(this.cache.tasks.map((f)=>f.id));for(let f of Z)if(!H.has(f.id))this.cache.tasks.push(f)}finally{await sU(this.lockPath)}}async readDiskTasks(){let J;try{J=await G4(this.path,"utf8")}catch(Y){if(Y.code==="ENOENT")return[];throw Y}let z;try{z=JSON.parse(J)}catch{return[]}return Q4(z,this.path).tasks}mergeWithDisk(J,z,Y){let Z=new Map(J.map((q)=>[q.id,q])),G=[],X=new Set;for(let q of this.cache.tasks){if(z.has(q.id))G.push(q);else{let H=Z.get(q.id);if(H===void 0)continue;G.push(H)}X.add(q.id)}for(let q of J){if(X.has(q.id)||Y.has(q.id))continue;G.push(q),X.add(q.id)}return G}get(J){return this.assertLoaded(),this.cache.tasks.find((z)=>z.id===J)}list(){return this.assertLoaded(),this.cache.tasks.slice()}async create(J){this.assertLoaded();let z=new Date().toISOString(),Y={archived:!1,vendor:J.vendor??p1,...J,id:FX(Y4()),createdAt:z,updatedAt:z};return this.cache.tasks.push(Y),this.dirtyIds.add(Y.id),await this.save(),this.notifyListeners(),Y}async update(J,z){this.assertLoaded();let Y=this.cache.tasks.findIndex((f)=>f.id===J);if(Y<0)throw Error(`task not found: ${J}`);let Z=this.cache.tasks[Y];if(!Z)throw Error(`task not found: ${J}`);let{id:G,createdAt:X,...q}=z,H={...Z,...q,id:Z.id,createdAt:Z.createdAt,updatedAt:new Date().toISOString()};return this.cache.tasks[Y]=H,this.dirtyIds.add(String(J)),await this.save(),this.notifyListeners(),H}async move(J,z,Y){this.assertLoaded();let Z=this.cache.tasks.find((L)=>L.id===J);if(!Z)throw Error(`task not found: ${J}`);let G=Y?.length?Y:this.cache.tasks.map((L)=>L.id),X=G.indexOf(String(J));if(X<0)throw Error(`task not movable in current group: ${J}`);let q=G[X+z];if(!q)return Z;let H=this.cache.tasks.findIndex((L)=>L.id===J),f=this.cache.tasks.findIndex((L)=>L.id===q);if(H<0||f<0||H===f)return Z;let[j]=this.cache.tasks.splice(H,1);if(!j)return Z;let V=H<f?f-1:f,B=z>0?V+1:V,K={...j,updatedAt:new Date().toISOString()};return this.cache.tasks.splice(B,0,K),this.dirtyIds.add(String(J)),await this.save(),this.notifyListeners(),K}async reorder(J){this.assertLoaded();let z=J.map((X)=>{let q=this.cache.tasks.findIndex((f)=>f.id===X.id);if(!(q>=0?this.cache.tasks[q]:void 0))throw Error(`task not found: ${X.id}`);return{idx:q,position:X.position}}),Y=!1,Z=new Map,G=[];for(let{idx:X,position:q}of z){let H=this.cache.tasks[X];if(!H||H.position===q)continue;if(!Z.has(X))Z.set(X,H);if(this.cache.tasks[X]={...H,position:q},!this.dirtyIds.has(H.id))this.dirtyIds.add(H.id),G.push(H.id);Y=!0}if(!Y)return;try{await this.save()}catch(X){for(let[q,H]of Z)this.cache.tasks[q]=H;for(let q of G)this.dirtyIds.delete(q);throw X}this.notifyListeners()}async archive(J,z="done"){return this.update(J,{status:z})}async remove(J){this.assertLoaded();let z=this.cache.tasks.findIndex((Y)=>Y.id===J);if(z<0)return;this.cache.tasks.splice(z,1),this.dirtyIds.delete(String(J)),this.removedIds.add(String(J)),await this.save(),this.notifyListeners()}async _unlinkForTests(){try{await X4(this.path)}catch(J){if(J.code!=="ENOENT")throw J}try{await X4(this.tmpPath)}catch(J){if(J.code!=="ENOENT")throw J}this.cache={version:jY,tasks:[]},this.loaded=!1,this.dirtyIds.clear(),this.removedIds.clear()}assertLoaded(){if(!this.loaded)throw Error("TaskIndexStore: call load() before any other method")}snapshot(){return{version:jY,tasks:this.cache.tasks.slice()}}notifyListeners(){if(this.listeners.size===0)return;let J=this.cache.tasks.slice();for(let z of this.listeners)try{z(J)}catch(Y){console.error("[kobe TaskIndexStore] listener threw on notify:",Y)}}}function Q4(J,z){if(!J||typeof J!=="object"||Array.isArray(J))return console.warn(`[kobe] tasks.json at ${z} is not an object; recovering with empty index.`),{version:jY,tasks:[]};let Y=J,Z=Y.version;if(Z!==void 0&&Z!==1&&Z!==2&&Z!==3)return console.warn(`[kobe] tasks.json at ${z} has unsupported version=${String(Z)}; recovering with empty index.`),{version:jY,tasks:[]};let G=Array.isArray(Y.tasks)?Y.tasks:[],X=[];for(let q of G){let H=VS(q);if(H)X.push(H);else console.warn(`[kobe] dropping malformed task entry from ${z}: ${JSON.stringify(q)}`)}return{version:jY,tasks:X}}function VS(J){if(!J||typeof J!=="object")return null;let z=J;if(typeof z.id!=="string"||typeof z.title!=="string"||typeof z.repo!=="string"||typeof z.branch!=="string"||typeof z.worktreePath!=="string"||typeof z.status!=="string"||typeof z.createdAt!=="string"||typeof z.updatedAt!=="string")return null;if(!FS(z.status))return null;let Y=typeof z.archived==="boolean"?z.archived:!1,Z=z.kind==="main"?"main":"task",G=Z==="main"?z.status==="in_progress"||z.status==="done"?"backlog":z.status:z.status==="done"&&!Y?"in_progress":z.status;return{id:FX(z.id),title:z.title,repo:z.repo,branch:z.branch,worktreePath:z.worktreePath,status:G,archived:Y,pinned:typeof z.pinned==="boolean"?z.pinned:!1,kind:Z,vendor:AY(typeof z.vendor==="string"?z.vendor:void 0),prStatus:KS(z.prStatus),...typeof z.position==="number"&&Number.isFinite(z.position)?{position:z.position}:{},...typeof z.modelEffort==="string"&&z.modelEffort.length>0?{modelEffort:z.modelEffort}:{},createdAt:z.createdAt,updatedAt:z.updatedAt}}function KS(J){if(!J||typeof J!=="object"||Array.isArray(J))return;let z=J;if(!US(z.provider)||!DS(z.lifecycle)||!LS(z.checkState))return;return{provider:z.provider,lifecycle:z.lifecycle,checkState:z.checkState,...typeof z.number==="number"&&Number.isFinite(z.number)?{number:z.number}:{},...typeof z.url==="string"?{url:z.url}:{},...typeof z.title==="string"?{title:z.title}:{},...typeof z.baseRef==="string"?{baseRef:z.baseRef}:{},...typeof z.headRef==="string"?{headRef:z.headRef}:{},...typeof z.reviewDecision==="string"?{reviewDecision:z.reviewDecision}:{},...typeof z.mergeable==="string"?{mergeable:z.mergeable}:{},...typeof z.lastCheckedAt==="string"?{lastCheckedAt:z.lastCheckedAt}:{},...typeof z.lastError==="string"?{lastError:z.lastError}:{}}}function US(J){return J==="github"||J==="gitlab"||J==="bitbucket"||J==="unknown"}function DS(J){return J==="creating"||J==="open"||J==="ready_to_merge"||J==="merged"||J==="closed"||J==="unknown"}function LS(J){return J==="none"||J==="pending"||J==="passing"||J==="failing"||J==="unknown"}function FS(J){return J==="backlog"||J==="in_progress"||J==="in_review"||J==="done"||J==="canceled"||J==="error"}var fS=(J)=>new Promise((z)=>setTimeout(z,J)),jS=25,BS=5000,jY=3;var Qq=C(()=>{tJ();a1();tU();Z4()});var aH;var H4=C(()=>{aH=class aH extends Error{args;cwd;exitCode;stdout;stderr;constructor(J,z,Y){super(`git ${J.join(" ")} (cwd=${z}) exited with code ${Y.exitCode}: ${Y.stderr.trim()||Y.stdout.trim()}`);this.name="GitCommandError",this.args=J,this.cwd=z,this.exitCode=Y.exitCode,this.stdout=Y.stdout,this.stderr=Y.stderr}}});var B4={};q1(B4,{GitWorktreeManager:()=>_H});import j4 from"fs";import bz from"path";class _H{execDeps;constructor(J=MS){this.execDeps=J}ctxFor(J){let z=this.execDeps.remoteBasePath(J);return z?{exec:this.execDeps.execForRepo(J),dir:z,remote:!0}:{exec:this.execDeps.execForRepo(J),dir:J,remote:!1}}async runGit(J,z,Y){if(!Y.cwd)throw Error("runGit(): cwd is required; refusing to inherit from process.cwd()");let Z=await J.run(["git",...z],{cwd:Y.cwd,env:Y.env}),G={stdout:Z.stdout,stderr:Z.stderr,exitCode:Z.exitCode};if(G.exitCode!==0&&!Y.allowFail)throw new aH(z,Y.cwd,G);return G}async create(J,z,Y,Z){let G=this.ctxFor(J);if(iY("repo",G.dir),iY("path",Y),!z)throw Error("create(): branch must be a non-empty string");if(await G.exec.exists(Y)){let f=await this.tryDescribe(G,Y);if(f){if(f.branch!==z)throw Error(`worktree at ${Y} is on branch '${f.branch}', refusing to hijack to '${z}'`);return f}throw Error(`create(): ${Y} exists but is not a registered git worktree`)}await G.exec.mkdirp(bz.dirname(Y));let q=await this.branchExists(G,z)?["worktree","add",Y,z]:Z?["worktree","add","-b",z,Y,Z]:["worktree","add","-b",z,Y];await this.runGit(G.exec,q,{cwd:G.dir});let H=await this.tryDescribe(G,Y);if(!H)throw Error(`create(): git reported success but ${Y} is not a worktree`);if(H.branch!==z)throw Error(`create(): post-condition failed \u2014 expected branch '${z}' at ${Y}, got '${H.branch}'`);return H}async createForTask(J){let z=this.execDeps.remoteBasePath(J.repo),Y=z?QK(z,J.slug):ZK(J.repo,J.slug);return this.create(J.repo,J.branch,Y,J.baseRef)}async remove(J,z){iY("path",J);let Y=this.execDeps.execForPath(J),Z=z?.force===!0;if(!await Y.exists(J)){let q=await this.findRepoFor(Y,J);if(q)await this.runGit(Y,["worktree","prune"],{cwd:q,allowFail:!0});return}let G=await this.findRepoFor(Y,J);if(!G)throw Error(`remove(): ${J} is not a git worktree`);if(!Z){if(await this.isDirty(J))throw Error(`remove(): refusing to remove dirty worktree at ${J} (pass { force: true } to override)`)}let X=Z?["worktree","remove","--force",J]:["worktree","remove",J];await this.runGit(Y,X,{cwd:G}),await this.runGit(Y,["worktree","prune"],{cwd:G,allowFail:!0})}async list(J){let z=this.ctxFor(J);iY("repo",z.dir);let Y=await this.runGit(z.exec,["worktree","list","--porcelain"],{cwd:z.dir}),Z=vB(Y.stdout),G=[];for(let X of Z){if(!X.path)continue;let q=z.remote?f4(z.dir,X.path):Qj(J,X.path);if(!q)continue;if(!X.branch||X.detached)continue;let H=Hq(q),f=Hq(X.path),j=bz.relative(H,f),V=bz.join(q,j),B=await this.isDirty(X.path);G.push({path:V,branch:X.branch,head:X.head??"",dirty:B})}return G}async listAll(J){let z=this.ctxFor(J);iY("repo",z.dir);let Y=await this.runGit(z.exec,["worktree","list","--porcelain"],{cwd:z.dir}),Z=vB(Y.stdout),G=z.remote?z.dir:Hq(z.dir),X=[];for(let q of Z){if(!q.path)continue;if(q.bare)continue;if(!q.branch||q.detached)continue;if((z.remote?q.path:Hq(q.path))===G)continue;let H=await this.isDirty(q.path);X.push({path:q.path,branch:q.branch,head:q.head??"",dirty:H,kobeManaged:z.remote?f4(z.dir,q.path)!==null:XK(J,q.path),lastActivityMs:await this.lastActivityMs(z.exec,q.path)})}return X.sort((q,H)=>H.lastActivityMs-q.lastActivityMs),X}async lastActivityMs(J,z){try{let Y=await this.runGit(J,["log","-1","--format=%ct"],{cwd:z}),Z=Number.parseInt(Y.stdout.trim(),10);if(Number.isFinite(Z)&&Z>0)return Z*1000}catch{}if(!J.isRemote)try{return j4.statSync(z).mtimeMs}catch{}return 0}async isDirty(J){iY("path",J);let z=this.execDeps.execForPath(J);return(await this.runGit(z,["status","--porcelain"],{cwd:J})).stdout.length>0}async currentBranch(J){iY("path",J);let z=this.execDeps.execForPath(J),Z=(await this.runGit(z,["rev-parse","--abbrev-ref","HEAD"],{cwd:J})).stdout.trim();if(!Z||Z==="HEAD")throw Error(`currentBranch(): ${J} is in detached-HEAD state`);return Z}async renameBranch(J,z,Y){if(iY("path",J),z===Y)return;let Z=this.execDeps.execForPath(J),G=await this.findRepoFor(Z,J);if(!G)throw Error(`renameBranch(): ${J} is not a git worktree`);await this.runGit(Z,["branch","-m",z,Y],{cwd:G})}async tryDescribe(J,z){let Y=await this.runGit(J.exec,["worktree","list","--porcelain"],{cwd:J.dir}),Z=vB(Y.stdout),G=(H)=>J.remote?H:Hq(H),X=G(z),q=Z.find((H)=>H.path&&G(H.path)===X);if(!q||!q.path||!q.branch||q.detached)return null;return{path:z,branch:q.branch,head:q.head??"",dirty:await this.isDirty(q.path)}}async branchExists(J,z){let Y=`refs/heads/${z}`;return(await this.runGit(J.exec,["show-ref","--verify","--quiet",Y],{cwd:J.dir,allowFail:!0})).exitCode===0}async findRepoFor(J,z){try{let Y=await this.runGit(J,["rev-parse","--git-common-dir"],{cwd:z,allowFail:!0});if(Y.exitCode!==0)return null;let Z=Y.stdout.trim();if(!Z)return null;let G=bz.isAbsolute(Z)?Z:bz.resolve(z,Z);return bz.basename(G)===".git"?bz.dirname(G):G}catch(Y){if(Y instanceof aH)return null;throw Y}}}function vB(J){let z=[],Y=null;for(let Z of J.split(`
84
- `)){let G=Z.replace(/\r$/,"");if(G===""){if(Y)z.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)z.push(Y);return z}function f4(J,z){let Y=`${J.replace(/\/+$/,"")}/.kobe/worktrees`;return z===Y||z.startsWith(`${Y}/`)?Y:null}function iY(J,z){if(!z||!bz.isAbsolute(z))throw Error(`${J} must be an absolute path, got: ${JSON.stringify(z)}`)}function Hq(J){try{return j4.realpathSync(J)}catch{return bz.resolve(J)}}var MS;var mB=C(()=>{Fz();A1();H4();Hj();MS={execForRepo:XG,execForPath:XY,remoteBasePath(J){return sz(J)?.basePath??null}}});var pH;var W4=C(()=>{pH=["web","completions","add","remove","adopt","export","repo","api","daemon","theme","skill","feedback","update","doctor","reset","reload","kill-sessions"]});var K4={};q1(K4,{runCompletionsSubcommand:()=>gS});function OS(){return`# kobe bash completions
78
+ `))}catch{}},15000)},cancel(){if(Y)clearInterval(Y);z?.()}});return new Response(G,{headers:{"content-type":"text/event-stream","cache-control":"no-cache, no-transform",connection:"keep-alive"}})}async function Pb(J,z,Y){try{let{name:Z,payload:G}=await J.json();if(!Z)return Response.json({error:"missing rpc name"},{status:400});if(!x6.has(Z))return Response.json({error:`rpc ${Z} is not exposed to the web UI`},{status:403});let X=await z.request(Z,G),Q=G?.taskId;if(typeof Q==="string"){let H=Z==="task.archive"&&G.archived!==!1;if(Z==="task.delete"||H)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 hb(){try{let z=(await GY()).map((Y)=>({id:Y,label:LZ(Y),effortLevels:i1(Y).effortLevels}));return Response.json({engines:z.length>0?z:[{id:"claude",label:"Claude"}]})}catch(J){return Response.json({error:J instanceof Error?J.message:String(J)},{status:500})}}function vb(){return Response.json({api:FZ()})}function mb(){return Response.json({projects:SJ()})}function nY(J,z=""){return typeof J==="string"?J:z}function cb(J,z){return typeof J==="boolean"?J:z}function o6(J){let z=J.customEngineIds;if(!Array.isArray(z))return[];return z.filter((Y)=>typeof Y==="string"&&r6.test(Y)&&!jJ(Y))}function db(J){return J.split(/[-_]+/).filter(Boolean).map((z)=>`${z.slice(0,1).toUpperCase()}${z.slice(1)}`).join(" ")}function nb(J,z){return nY(J[Rz(z)]).trim()||LZ(z)}function ib(J,z){return nY(J[Az(z)]).trim()||IX(z).join(" ")}function s6(){let J=LJ(),z=o6(J),Y=[...tY,...z],Z=nY(J.lastSelectedVendor,"claude"),G=nY(J.focusAccent,"primary");return Response.json({activeTheme:nY(J.activeTheme,"claude"),transparentBackground:cb(J.transparentBackground,!1),focusAccent:p6.includes(G)?G:"primary",notificationsToast:J["notifications.toast.enabled"]!==!1,notificationsSound:J["notifications.sound.enabled"]!==!1,settingsSurface:TZ(J[WY]??yZ),editorKind:bG(J[BY]??uH),editorCustomCommand:nY(J[cY]),remoteProjects:J["experimental.remoteProjects"]===!0,archivedHistoryPreview:J["experimental.archivedHistoryPreview"]===!0,autoStatus:J[UZ]===!0,dispatcher:J[DZ]===!0,defaultEngine:Z,engines:Y.map((X)=>({id:X,label:nb(J,X),command:ib(J,X),isBuiltin:jJ(X),isCustom:!jJ(X),isDefault:X===Z}))})}function GQ(J,z,Y){if(typeof Y==="string")J[z]=Y.trim()}function uZ(J,z,Y){if(typeof Y==="boolean")J[z]=Y}async function lb(J){try{let z=await J.json(),Y={};if(GQ(Y,"activeTheme",z.activeTheme),uZ(Y,"transparentBackground",z.transparentBackground),p6.includes(z.focusAccent))Y.focusAccent=z.focusAccent;if(uZ(Y,"notifications.toast.enabled",z.notificationsToast),uZ(Y,"notifications.sound.enabled",z.notificationsSound),z.settingsSurface==="chattab"||z.settingsSurface==="taskpanel")Y[WY]=z.settingsSurface;if(IZ.includes(z.editorKind))Y[BY]=z.editorKind;GQ(Y,cY,z.editorCustomCommand),uZ(Y,"experimental.remoteProjects",z.remoteProjects),uZ(Y,"experimental.archivedHistoryPreview",z.archivedHistoryPreview),uZ(Y,UZ,z.autoStatus),uZ(Y,DZ,z.dispatcher),GQ(Y,"lastSelectedVendor",z.defaultEngine);let Z=LJ(),G=o6(Z),X=new Set([...tY,...G]),Q=Array.isArray(z.engineUpdates)?z.engineUpdates:[];for(let H of Q){if(!H||typeof H!=="object")continue;let f=H;if(typeof f.id!=="string"||!X.has(f.id))continue;GQ(Y,Az(f.id),f.command),GQ(Y,Rz(f.id),f.label)}if(z.addEngine&&typeof z.addEngine==="object"){let H=z.addEngine,f=typeof H.id==="string"?H.id.trim().toLowerCase():"";if(!r6.test(f)||jJ(f)||X.has(f))return Response.json({error:"invalid or duplicate engine id"},{status:400});Y.customEngineIds=[...G,f],Y[Az(f)]=nY(H.command).trim();let j=nY(H.label).trim();Y[Rz(f)]=j&&j!==f?j:db(f)}if(typeof z.removeEngine==="string"){let H=z.removeEngine;if(!jJ(H)){if(Y.customEngineIds=G.filter((f)=>f!==H),Y[Az(H)]=void 0,Y[Rz(H)]=void 0,Z.lastSelectedVendor===H)Y.lastSelectedVendor="claude"}}if(Object.keys(Y).length>0)gY(Y);return s6()}catch(z){return Response.json({error:z instanceof Error?z.message:String(z)},{status:400})}}async function $b(J,z){try{let{taskId:Y}=await J.json();if(!Y)return Response.json({error:"missing taskId"},{status:400});return Response.json(await h6(z,Y))}catch(Y){return Response.json({error:Y instanceof Error?Y.message:String(Y)},{status:500})}}async function i6(J,z,Y){try{let Z=J.searchParams.get("taskId");if(!Z)return Response.json({error:"missing taskId"},{status:400});return Response.json(await Y(z,Z))}catch(Z){return Response.json({error:Z instanceof Error?Z.message:String(Z)},{status:500})}}function t6(){return Response.json({review:S1(dH.review)??null,pr:S1(dH.pr)??null})}async function ab(J){try{let z=await J.json();if(typeof z.review==="string")e1(dH.review,z.review);if(typeof z.pr==="string")e1(dH.pr,z.pr);return t6()}catch(z){return Response.json({error:z instanceof Error?z.message:String(z)},{status:400})}}async function _b(J,z){let Z=$6(n6(z,J==="/"?"/index.html":J));if(!Z.startsWith(z))return new Response("forbidden",{status:403});let G=Bun.file(Eb(Z)?Z:n6(z,"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 pb(J){let{link:z,sseSends:Y,staticDir:Z}=J,G=J.tearDownSession??((X)=>void c6(X));return async function(Q){let H=new URL(Q.url);if(H.pathname===_6)return new Response(a6);if(!I6(Q.headers.get("origin"),{allowedHost:J.allowedHost}))return new Response("forbidden: cross-origin request rejected",{status:403});if(H.pathname==="/events")return wb((A)=>{let O=J.onSseOpen?.()??(()=>{});return A("snapshot",z.snapshot()),Y.add(A),()=>{Y.delete(A),O()}});if(H.pathname==="/api/rpc"&&Q.method==="POST")return Pb(Q,z,G);if(H.pathname==="/api/session"&&Q.method==="POST")return $b(Q,z);if(H.pathname==="/api/engine-spec"&&Q.method==="GET")return i6(H,z,v6);if(H.pathname==="/api/terminal-spec"&&Q.method==="GET")return i6(H,z,m6);if(H.pathname==="/api/engines"&&Q.method==="GET")return hb();if(H.pathname==="/api/cli-invocation"&&Q.method==="GET")return vb();if(H.pathname==="/api/projects"&&Q.method==="GET")return mb();if(H.pathname==="/api/settings"&&Q.method==="GET")return s6();if(H.pathname==="/api/settings"&&Q.method==="PATCH")return lb(Q);if(H.pathname==="/api/quick-prompts"&&Q.method==="GET")return t6();if(H.pathname==="/api/quick-prompts"&&Q.method==="PUT")return ab(Q);let f=await L6(Q,H);if(f)return f;let j=await q6(Q,H);if(j)return j;let V=await B6(Q,H);if(V)return V;let B=await k6(Q,H,z);if(B)return B;let K=await R6(Q,H);if(K)return K;let L=M6(Q,H);if(L)return L;if(Z)return _b(H.pathname,Z);return new Response("not found",{status:404})}}function EZ(J,z){let Y=J.snapshot().find((Z)=>Z.channel===z);return Y?Y.payload:null}function P9(J){return J.length>1?J.replace(/\/+$/,""):J}function rb(J,z){let Y=P9(z),Z=new Set([z]);for(let G of J){let X=P9(G.repo),Q=P9(G.worktreePath);if(X===Y||Q===Y){if(G.repo)Z.add(G.repo);if(G.worktreePath)Z.add(G.worktreePath)}}return[...Z]}function e6(J){let z=tX();return{async request(Y,Z){return await sX(z,Y,Z,J.ctx(0))},snapshot(){let Y=J.orch.listTasks().map(Vz),Z={},G=EZ(J.bus,"issue.snapshot");if(G)for(let H of rb(Y,G.repoRoot))Z[H]={...G,repoRoot:H};let X=EZ(J.bus,"task.jobs"),Q=X?.phase==="running"?{[X.taskId]:X}:{};return{tasks:Y,activeTaskId:EZ(J.bus,"active-task")?.taskId??null,engineStates:J.activity.snapshotByTask(),update:EZ(J.bus,"update")?.info??null,jobs:Q,worktreeChanges:EZ(J.bus,"worktree.changes")?.changes??{},issueSnapshots:Z,deliver:EZ(J.bus,"session.deliver"),uiPrefs:EZ(J.bus,"ui-prefs"),connected:!0}}}}async function l6(J){try{let z=Bun.spawn(["lsof","-nP",`-iTCP:${J}`,"-sTCP:LISTEN","-t"],{stdout:"pipe",stderr:"ignore"});return(await new Response(z.stdout).text()).split(`
79
+ `).map((Z)=>Number.parseInt(Z.trim(),10)).filter((Z)=>Number.isFinite(Z)&&Z!==process.pid)}catch{return[]}}async function ob(J,z=_6){let Y;try{Y=(await(await fetch(`http://localhost:${J}${z}`,{signal:AbortSignal.timeout(800)})).text()).trim()}catch{return}if(Y!==a6)throw Error(`port ${J} is in use by a non-kobe service; refusing to replace it`);let Z=await l6(J);for(let X of Z)try{process.kill(X,"SIGTERM")}catch{}let G=Date.now()+2000;while(Date.now()<G){if((await l6(J)).length===0)return;await new Promise((X)=>setTimeout(X,100))}}async function J4(J){if(J.takeover!==!1)await ob(J.port);let z=new Set,Y=J.onEvent((H)=>{for(let f of z)f("channel",H)}),Z=J.hostname?.trim()||process.env.KOBE_WEB_HOST?.trim()||"127.0.0.1",G=y6(Z),X=pb({link:J.link,sseSends:z,staticDir:J.staticDir?$6(J.staticDir):void 0,allowedHost:G,onSseOpen:J.onSseOpen}),Q=Bun.serve({port:J.port,hostname:Z,idleTimeout:0,fetch:X});return{port:Q.port??J.port,hostname:Z,close(){Y(),Q.stop(!0)}}}var a6="kobe-web",_6="/__kobe_web",p6,r6,dH;var z4=C(()=>{XZ();Yz();QY();SX();mq();C1();sz();EH();_1();H6();W6();F6();O6();RH();YZ();g6();T6();u6();d6();p6=["primary","success","info"],r6=/^[a-z][a-z0-9_-]{0,47}$/;dH={review:"boardPrompt.review",pr:"boardPrompt.pr"}});var Y4={};q1(Y4,{sameWorktreeChanges:()=>$z,readWorktreeChanges:()=>tb,pickPushedChanges:()=>iH,parsePorcelain:()=>TG});import{spawnSync as sb}from"child_process";function $z(J,z){return J.added===z.added&&J.deleted===z.deleted}function iH(J,z){if(!J)return null;return J.get(z)??nH}function tb(J){if(!J)return nH;try{let z=sb("git",["status","--porcelain=v1"],{cwd:J,encoding:"utf8",stdio:["ignore","pipe","pipe"],env:iJ()});if(z.status!==0||!z.stdout)return nH;return TG(z.stdout)}catch{return nH}}function TG(J){let z=0,Y=0;for(let{x:Z,y:G}of wH(J))if(Z==="D"||G==="D")Y+=1;else z+=1;return{added:z,deleted:Y}}var nH;var xG=C(()=>{dY();PH();nH={added:0,deleted:0}});async function YS(J,z){let Y=await qY("git",["status","--porcelain=v1"],{cwd:J,env:iJ(),signal:z});if(Y.status!==0)throw Error("git status failed");return TG(Y.stdout)}function ZS(J){let z=new Set;for(let Y of J){if(Y.archived)continue;if(!Y.worktreePath)continue;if(r1(Y.repo)||r1(Y.worktreePath))continue;z.add(Y.worktreePath)}return z}class Z4{orch;bus;options;entries=new Map;stopped=!1;constructor(J,z,Y={}){this.orch=J;this.bus=z;this.options=Y}tick(){if(this.stopped)return;if(this.options.hasSubscribers&&!this.options.hasSubscribers())return;try{let J=ZS(this.orch.listTasks()),z=!1;for(let Y of this.entries.keys()){if(J.has(Y))continue;if(this.entries.get(Y)?.value)z=!0;this.entries.delete(Y)}if(z)this.publish();for(let Y of J)this.maybeCollect(Y)}catch(J){u1("worktree-changes",J)}}stop(){this.stopped=!0}maybeCollect(J){let z=this.entries.get(J);if(!z)z={inFlight:!1,nextAllowedAt:0},this.entries.set(J,z);let Y=this.options.cadence??{timeoutMs:eb,slowRetryMs:JS,minIntervalMs:zS},Z=this.options.run??YS;ZG(z,Y,(G)=>Z(J,G),(G)=>{if(this.stopped)return;if(this.entries.get(J)!==z)return;if(z.value&&$z(z.value,G))return;z.value=G,this.publish()})}publish(){let J={};for(let[z,Y]of this.entries)if(Y.value)J[z]=Y.value;this.bus.publish("worktree.changes",{changes:J})}}function G4(J,z,Y=h9,Z){if(Y<=0)return()=>{};let G=new Z4(J,z,{hasSubscribers:Z});G.tick();let X=setInterval(()=>G.tick(),Y);return X.unref?.(),()=>{clearInterval(X),G.stop()}}var h9=2000,eb=4000,JS=60000,zS=1500;var X4=C(()=>{dY();GG();C1();xG()});import{mkdir as Q4,readFile as GS,unlink as v9,writeFile as XS}from"fs/promises";import{createServer as QS}from"net";import{dirname as q4}from"path";import{StringDecoder as qS}from"string_decoder";function fS(){let J=process.env.KOBE_DAEMON_IDLE_GRACE_MS;if(J===void 0)return H4;let z=Number(J);return Number.isFinite(z)&&z>=0?z:H4}async function j4(J,z={}){let Y=z.socketPath??Ez(z.homeDir),Z=z.pidPath??YY(z.homeDir),G=z.startedAt??new Date,X=new Set,Q=new Set,H=1,f=new b9({clients:function*(){yield*X,yield*Q},idleGraceMs:fS(),onIdleStop:()=>void q0().catch((c)=>u1("daemon-idle-shutdown",c))}),j=new z9;j.onPublish((c)=>{f4(X,{type:"event",name:c.channel,payload:c.payload})});let B=new aj(j,void 0,void 0,async(c)=>{let N=J.getTask(c);if(!N?.worktreePath)return;return tZ(N.vendor??o1,N.worktreePath)}),K=new CH(NH(z.homeDir));await Q4(q4(Y),{recursive:!0}),await Q4(q4(Z),{recursive:!0}),await v9(Y).catch(()=>{});let L=QS((c)=>{let N={id:H++,connectedAt:new Date,socket:c,writer:new J9(c),buffer:"",subscribed:!1,holdsLifetime:!1,channels:null};X.add(N);let t=new qS("utf8");c.on("data",(x)=>{N.buffer+=t.write(x),r(N)}),c.on("error",()=>{}),c.on("close",()=>{if(X.delete(N),N.subscribed)iz("conn",`client #${N.id} (${N.holdsLifetime?"gui":"pane"}) disconnected \u2014 ${X.size} client(s), ${f.guiCount()} gui left`);f.clientDisconnected(N.holdsLifetime)})}),A=J.subscribeTasks((c)=>{j.publish("task.snapshot",{tasks:c.map(Vz)})}),O=z.checkUpdate??XX,R=z.updatePollMs??HS,u=()=>{O().then((c)=>j.publish("update",{info:c})).catch((c)=>u1("update-poller",c))},P=null;if(R>0)u(),P=setInterval(u,R),P.unref?.();let S=z.autoTitlePollMs??eB,g=J5(J,S,()=>f.hasSubscribers()),M=o5(j,{statePath:y9(z.homeDir),debounceMs:z.uiPrefsDebounceMs??I9}),T=d5(j,{path:k9(z.homeDir),debounceMs:z.keybindingsDebounceMs??C9}),d=G4(J,j,z.worktreeChangesTickMs??h9,()=>f.hasSubscribers()),i=_5(J,j,z.transcriptActivityTickMs??S9,()=>f.hasSubscribers()),J0=l5(J,z.prStatusPollMs??zQ,()=>f.hasSubscribers()),E=null,z0={socketPath:Y,pidPath:Z,startedAt:G,get webPort(){return E?.port},clients:X,async close(){if(f.markStopping(),A(),E?.close(),E=null,P)clearInterval(P);g(),J0(),M(),T(),d(),i(),B.close(),f4(X,{type:"event",name:"daemon.stopping",payload:{}});for(let c of Array.from(X))c.socket.destroy();await new Promise((c)=>L.close(()=>c())),await v9(Y).catch(()=>{}),await v9(Z).catch(()=>{})}};await new Promise((c,N)=>{let t=L;t.once("error",N),L.listen(Y,()=>{t.removeListener("error",N),c()})}),await XS(Z,`${process.pid}
80
+ `,"utf8");async function q0(){if(f.isStopping())return;f.markStopping(),await z.onStop?.(),setTimeout(()=>{z0.close().catch((c)=>u1("daemon-shutdown",c))},0).unref()}let o=tX();function B0(c){return{orch:J,bus:j,activity:B,issues:K,daemon:{startedAt:G,socketPath:Y,webPort:E?.port,pid:process.pid,guiCount:()=>f.guiCount(),stopSoon:q0},clientId:c}}if(z.webPort!==void 0){let c=e6({orch:J,bus:j,activity:B,ctx:B0});E=await J4({port:z.webPort,hostname:z.webHost,staticDir:z.webStaticDir,link:c,onEvent:(N)=>j.onPublish(N),onSseOpen:()=>{let N={subscribed:!0,holdsLifetime:!0};return Q.add(N),f.guiAttached(),iz("conn",`web client subscribed \u2014 ${X.size+Q.size} client(s), ${f.guiCount()} gui`),()=>{Q.delete(N),iz("conn",`web client disconnected \u2014 ${X.size+Q.size} client(s), ${f.guiCount()} gui left`),f.clientDisconnected(!0)}}}),iz("web",`daemon web transport listening on http://${E.hostname}:${E.port}`)}async function g0(c,N){if(c.name==="subscribe"){let t=Q9(c.payload),x=N.subscribed;N.subscribed=!0;let n=t.role==="gui"?"gui":"pane";N.holdsLifetime=n==="gui",N.channels=gV(t.channels);let Q0=!x;if(N.holdsLifetime)f.guiAttached();iz("conn",`client #${N.id} subscribed as ${n}${N.channels?` [${[...N.channels].join(",")}]`:""} \u2014 ${X.size} client(s), ${f.guiCount()} gui${Q0?" (collectors resume)":""}`);for(let H0 of j.snapshot()){if(N.channels&&!N.channels.has(H0.channel))continue;XQ(N,{type:"event",name:H0.channel,payload:H0.payload})}if(!N.channels||N.channels.has("engine-state"))for(let H0 of B.currentNonIdle())XQ(N,{type:"event",name:"engine-state",payload:H0});return{}}return sX(o,c.name,c.payload,B0(N.id))}async function m(c,N){try{let t=await g0(c,N);XQ(N,{type:"response",id:c.id,name:c.name,payload:t})}catch(t){XQ(N,{type:"response",id:c.id,name:c.name,error:X9(t)})}}function r(c){let N=c.buffer.indexOf(`
81
+ `);while(N!==-1){let t=c.buffer.slice(0,N);if(c.buffer=c.buffer.slice(N+1),t.trim().length>0)try{let x=JSON.parse(t);if(x.type!=="request")throw Error("daemon only accepts request frames from clients");m(x,c)}catch(x){XQ(c,{type:"response",id:"parse-error",error:{message:x instanceof Error?x.message:String(x)}})}N=c.buffer.indexOf(`
82
+ `)}}return z0}async function uG(J){try{let z=await GS(J,"utf8"),Y=Number(z.trim());return Number.isFinite(Y)?Y:null}catch{return null}}function B4(J){if(J.type==="event")return J.name==="daemon.stopping";return!0}function XQ(J,z){J.writer.write(qX(z),B4(z))}function f4(J,z){let Y=z.type==="event"&&z.name!=="daemon.stopping"?z.name:null,Z=B4(z),G=null;for(let X of J){if(!X.subscribed&&z.type==="event")continue;if(Y&&X.channels&&!X.channels.has(Y))continue;G??=qX(z),X.writer.write(G,Z)}}var HS=21600000,H4=3000;var lH=C(()=>{Mq();zz();NJ();n7();z5();RH();V9();n5();i5();$Z();$5();YZ();p5();s5();z4();X4();RH();V9()});import{unlink as W4}from"fs/promises";function jS(J){try{return process.kill(J,0),!0}catch(z){return z.code==="EPERM"}}async function EG(J,z){let Y=await uG(z),Z=Y!==null&&Y!==process.pid?Y:null,G=Z!==null&&jS(Z),X=G?"graceful":"absent",Q=new tJ(J),H=Q.request("daemon.stop").catch(()=>{return}),f=new Promise((j)=>setTimeout(j,2000));if(await Promise.race([H,f]),Q.close(),G&&Z!==null){let j=Date.now()+5000,V=!1;while(Date.now()<j){try{process.kill(Z,0)}catch{break}if(!V&&Date.now()-(j-5000)>2000){try{process.kill(Z,"SIGTERM")}catch{}X="sigterm",V=!0}await new Promise((B)=>setTimeout(B,50))}try{process.kill(Z,0),process.kill(Z,"SIGKILL"),X="sigkill",await new Promise((B)=>setTimeout(B,100))}catch{}}return await W4(J).catch(()=>{}),await W4(z).catch(()=>{}),{pid:Y,method:X}}var $H=C(()=>{HX();lH()});var FH={};q1(FH,{testDaemonResponds:()=>aH,ensureDaemonReachable:()=>wG,connectOrStartDaemon:()=>Sz,connectIfRunning:()=>Qz});import{spawn as BS}from"child_process";import{closeSync as WS,existsSync as VS,mkdirSync as KS,openSync as US}from"fs";import{dirname as V4,resolve as m9}from"path";import{fileURLToPath as DS}from"url";function MS(J,z,Y,Z){let G="ignore",X;try{KS(V4(Z),{recursive:!0}),X=US(Z,"a"),G=["ignore",X,X]}catch{G="ignore"}if(BS(J,[...z],{detached:!0,stdio:G,env:Y}).unref(),X!==void 0)try{WS(X)}catch{}}async function wG(){let J=Ez();if(await aH(J))return J;await EG(J,YY()).catch(()=>{});let[z,...Y]=OS(LS);MS(z,Y,process.env,rQ());let Z=Date.now()+5000;while(Date.now()<Z){if(await aH(J))return J;await new Promise((G)=>setTimeout(G,100))}throw Error(`kobe: daemon did not start (or stayed wedged) at ${J}`)}async function Sz(){let J=await wG(),z=new tJ(J);return await z.connect(),z}async function Qz(){let J=Ez();if(!await aH(J))return null;let z=new tJ(J);return await z.connect(),z}async function aH(J,z=FS){let Y=new tJ(J);try{await Y.connect()}catch{return Y.close(),!1}let Z=Y.request("hello",{protocolVersion:sJ}).then(()=>!0).catch(()=>!0),G,X=new Promise((H)=>{G=setTimeout(()=>H(!1),z)}),Q=await Promise.race([Z,X]);if(G)clearTimeout(G);return Y.close(),Q}function OS(J){let z=DS(import.meta.url);if(z.startsWith("/$bunfs")||z.startsWith("B:\\~BUN"))return[process.execPath,...J];let Y=V4(z),Z=[m9(Y,"../cli/index.ts"),m9(Y,"../../../kobe/src/cli/index.ts"),m9(Y,"../cli/index.js")],G=Z.find((X)=>VS(X));if(G)return[process.execPath,G,...J];throw Error(`kobe: could not locate kobe entry near ${Y}; checked ${Z.join(", ")}`)}var LS,FS=3000;var CJ=C(()=>{$H();$Z();YZ();HX();LS=["daemon","start"]});import{mkdir as AS,readFile as K4,unlink as D4,writeFile as U4}from"fs/promises";import{dirname as RS}from"path";function gS(J){if(!Number.isInteger(J)||J<=0)return!1;try{return process.kill(J,0),!0}catch(z){if(z.code==="ESRCH")return!1;return!0}}async function c9(J,z={}){await AS(RS(J),{recursive:!0});try{await U4(J,String(process.pid),{flag:"wx"});return}catch(G){if(G.code!=="EEXIST")throw G}let Y=-1;try{let G=(await K4(J,"utf8")).trim();if(Y=Number.parseInt(G,10),!Number.isFinite(Y))Y=-1}catch{return c9(J,z)}let Z=Y>0&&gS(Y);if(Z&&!z.forceTakeover)throw new QQ(`task index is locked by another kobe instance (pid ${Y})`,Y);console.warn(`[kobe] removing stale lockfile at ${J} (was held by pid ${Y}${Z?", forced":", process gone"})`);try{await D4(J)}catch(G){if(G.code!=="ENOENT")throw G}try{await U4(J,String(process.pid),{flag:"wx"})}catch(G){if(G.code==="EEXIST"){let X=-1;try{X=Number.parseInt((await K4(J,"utf8")).trim(),10)}catch{X=-1}throw new QQ(`task index lockfile contended during takeover (winner pid ${X})`,X)}throw G}}async function L4(J){try{await D4(J)}catch(z){if(z.code==="ENOENT")return;throw z}}var QQ;var F4=C(()=>{QQ=class QQ extends Error{heldByPid;constructor(J,z){super(J);this.name="LockfileError",this.heldByPid=z}}});function NS(J,z){let Y="",Z=J;for(let G=z-1;G>=0;G--){let X=Z%32;Y="0123456789ABCDEFGHJKMNPQRSTVWXYZ"[X]+Y,Z=(Z-X)/32}return Y}function A4(J){let z=new Uint8Array(J);crypto.getRandomValues(z);let Y=Array(J);for(let Z=0;Z<J;Z++)Y[Z]=(z[Z]??0)&31;return Y}function CS(J){for(let z=J.length-1;z>=0;z--){let Y=J[z]??0;if(Y<31)return J[z]=Y+1,!0;J[z]=0}return!1}function kS(J){let z="";for(let Y of J)z+="0123456789ABCDEFGHJKMNPQRSTVWXYZ"[Y]??"0";return z}function R4(J=Date.now()){let z;if(J===M4){let Y=O4.slice();if(!CS(Y))z=A4(16);else z=Y}else z=A4(16);return M4=J,O4=z,NS(J,10)+kS(z)}var M4=-1,O4;var g4=C(()=>{O4=Array(16).fill(0)});var d9={};q1(d9,{TaskIndexStore:()=>PG});import{mkdir as bS,open as SS,readFile as N4,rename as IS,unlink as C4}from"fs/promises";import{homedir as yS}from"os";import{dirname as TS,join as k4}from"path";async function wS(J){let z=Date.now()+ES;for(;;)try{await c9(J);return}catch(Y){if(!(Y instanceof QQ)||Date.now()>=z)throw Y;await xS(uS)}}class PG{homeDir;kobeDir;path;tmpPath;lockPath;cache={version:VY,tasks:[]};loaded=!1;listeners=new Set;saveChain=Promise.resolve();dirtyIds=new Set;removedIds=new Set;constructor(J={}){this.homeDir=J.homeDir??yS(),this.kobeDir=k4(this.homeDir,".kobe"),this.path=k4(this.kobeDir,"tasks.json"),this.tmpPath=`${this.path}.tmp`,this.lockPath=`${this.path}.lock`}subscribe(J){if(this.listeners.add(J),this.loaded)try{J(this.cache.tasks.slice())}catch(z){console.error("[kobe TaskIndexStore] listener threw on subscribe:",z)}return()=>{this.listeners.delete(J)}}get filePath(){return this.path}get stateDir(){return this.kobeDir}async load(){this.dirtyIds.clear(),this.removedIds.clear();let J;try{J=await N4(this.path,"utf8")}catch(Y){if(Y.code==="ENOENT")return this.cache={version:VY,tasks:[]},this.loaded=!0,this.notifyListeners(),this.snapshot();throw Y}let z;try{z=JSON.parse(J)}catch(Y){return console.warn(`[kobe] tasks.json at ${this.path} is corrupted (${Y.message}); recovering with empty index. The stale file is left in place.`),this.cache={version:VY,tasks:[]},this.loaded=!0,this.notifyListeners(),this.snapshot()}return this.cache=b4(z,this.path),this.loaded=!0,this.notifyListeners(),this.snapshot()}async save(){this.assertLoaded();let J=this.saveChain.then(()=>this.doSave());return this.saveChain=J.catch(()=>{}),J}async doSave(){await bS(TS(this.path),{recursive:!0});let J=new Set(this.dirtyIds),z=new Set(this.removedIds);await wS(this.lockPath);try{let Y=await this.readDiskTasks(),Z=this.mergeWithDisk(Y,J,z),X=`${JSON.stringify({version:VY,tasks:Z},null,2)}
83
+ `,Q=await SS(this.tmpPath,"w",420);try{await Q.writeFile(X,"utf8"),await Q.sync()}finally{await Q.close()}await IS(this.tmpPath,this.path);for(let f of J)this.dirtyIds.delete(f);for(let f of z)this.removedIds.delete(f);let H=new Set(this.cache.tasks.map((f)=>f.id));for(let f of Z)if(!H.has(f.id))this.cache.tasks.push(f)}finally{await L4(this.lockPath)}}async readDiskTasks(){let J;try{J=await N4(this.path,"utf8")}catch(Y){if(Y.code==="ENOENT")return[];throw Y}let z;try{z=JSON.parse(J)}catch{return[]}return b4(z,this.path).tasks}mergeWithDisk(J,z,Y){let Z=new Map(J.map((Q)=>[Q.id,Q])),G=[],X=new Set;for(let Q of this.cache.tasks){if(z.has(Q.id))G.push(Q);else{let H=Z.get(Q.id);if(H===void 0)continue;G.push(H)}X.add(Q.id)}for(let Q of J){if(X.has(Q.id)||Y.has(Q.id))continue;G.push(Q),X.add(Q.id)}return G}get(J){return this.assertLoaded(),this.cache.tasks.find((z)=>z.id===J)}list(){return this.assertLoaded(),this.cache.tasks.slice()}async create(J){this.assertLoaded();let z=new Date().toISOString(),Y={archived:!1,vendor:J.vendor??o1,...J,id:FX(R4()),createdAt:z,updatedAt:z};return this.cache.tasks.push(Y),this.dirtyIds.add(Y.id),await this.save(),this.notifyListeners(),Y}async update(J,z){this.assertLoaded();let Y=this.cache.tasks.findIndex((f)=>f.id===J);if(Y<0)throw Error(`task not found: ${J}`);let Z=this.cache.tasks[Y];if(!Z)throw Error(`task not found: ${J}`);let{id:G,createdAt:X,...Q}=z,H={...Z,...Q,id:Z.id,createdAt:Z.createdAt,updatedAt:new Date().toISOString()};return this.cache.tasks[Y]=H,this.dirtyIds.add(String(J)),await this.save(),this.notifyListeners(),H}async move(J,z,Y){this.assertLoaded();let Z=this.cache.tasks.find((L)=>L.id===J);if(!Z)throw Error(`task not found: ${J}`);let G=Y?.length?Y:this.cache.tasks.map((L)=>L.id),X=G.indexOf(String(J));if(X<0)throw Error(`task not movable in current group: ${J}`);let Q=G[X+z];if(!Q)return Z;let H=this.cache.tasks.findIndex((L)=>L.id===J),f=this.cache.tasks.findIndex((L)=>L.id===Q);if(H<0||f<0||H===f)return Z;let[j]=this.cache.tasks.splice(H,1);if(!j)return Z;let V=H<f?f-1:f,B=z>0?V+1:V,K={...j,updatedAt:new Date().toISOString()};return this.cache.tasks.splice(B,0,K),this.dirtyIds.add(String(J)),await this.save(),this.notifyListeners(),K}async reorder(J){this.assertLoaded();let z=J.map((X)=>{let Q=this.cache.tasks.findIndex((f)=>f.id===X.id);if(!(Q>=0?this.cache.tasks[Q]:void 0))throw Error(`task not found: ${X.id}`);return{idx:Q,position:X.position}}),Y=!1,Z=new Map,G=[];for(let{idx:X,position:Q}of z){let H=this.cache.tasks[X];if(!H||H.position===Q)continue;if(!Z.has(X))Z.set(X,H);if(this.cache.tasks[X]={...H,position:Q},!this.dirtyIds.has(H.id))this.dirtyIds.add(H.id),G.push(H.id);Y=!0}if(!Y)return;try{await this.save()}catch(X){for(let[Q,H]of Z)this.cache.tasks[Q]=H;for(let Q of G)this.dirtyIds.delete(Q);throw X}this.notifyListeners()}async archive(J,z="done"){return this.update(J,{status:z})}async remove(J){this.assertLoaded();let z=this.cache.tasks.findIndex((Y)=>Y.id===J);if(z<0)return;this.cache.tasks.splice(z,1),this.dirtyIds.delete(String(J)),this.removedIds.add(String(J)),await this.save(),this.notifyListeners()}async _unlinkForTests(){try{await C4(this.path)}catch(J){if(J.code!=="ENOENT")throw J}try{await C4(this.tmpPath)}catch(J){if(J.code!=="ENOENT")throw J}this.cache={version:VY,tasks:[]},this.loaded=!1,this.dirtyIds.clear(),this.removedIds.clear()}assertLoaded(){if(!this.loaded)throw Error("TaskIndexStore: call load() before any other method")}snapshot(){return{version:VY,tasks:this.cache.tasks.slice()}}notifyListeners(){if(this.listeners.size===0)return;let J=this.cache.tasks.slice();for(let z of this.listeners)try{z(J)}catch(Y){console.error("[kobe TaskIndexStore] listener threw on notify:",Y)}}}function b4(J,z){if(!J||typeof J!=="object"||Array.isArray(J))return console.warn(`[kobe] tasks.json at ${z} is not an object; recovering with empty index.`),{version:VY,tasks:[]};let Y=J,Z=Y.version;if(Z!==void 0&&Z!==1&&Z!==2&&Z!==3)return console.warn(`[kobe] tasks.json at ${z} has unsupported version=${String(Z)}; recovering with empty index.`),{version:VY,tasks:[]};let G=Array.isArray(Y.tasks)?Y.tasks:[],X=[];for(let Q of G){let H=PS(Q);if(H)X.push(H);else console.warn(`[kobe] dropping malformed task entry from ${z}: ${JSON.stringify(Q)}`)}return{version:VY,tasks:X}}function PS(J){if(!J||typeof J!=="object")return null;let z=J;if(typeof z.id!=="string"||typeof z.title!=="string"||typeof z.repo!=="string"||typeof z.branch!=="string"||typeof z.worktreePath!=="string"||typeof z.status!=="string"||typeof z.createdAt!=="string"||typeof z.updatedAt!=="string")return null;if(!dS(z.status))return null;let Y=typeof z.archived==="boolean"?z.archived:!1,Z=z.kind==="main"?"main":"task",G=Z==="main"?z.status==="in_progress"||z.status==="done"?"backlog":z.status:z.status==="done"&&!Y?"in_progress":z.status;return{id:FX(z.id),title:z.title,repo:z.repo,branch:z.branch,worktreePath:z.worktreePath,status:G,archived:Y,pinned:typeof z.pinned==="boolean"?z.pinned:!1,kind:Z,vendor:RY(typeof z.vendor==="string"?z.vendor:void 0),prStatus:hS(z.prStatus),...typeof z.position==="number"&&Number.isFinite(z.position)?{position:z.position}:{},...typeof z.modelEffort==="string"&&z.modelEffort.length>0?{modelEffort:z.modelEffort}:{},createdAt:z.createdAt,updatedAt:z.updatedAt}}function hS(J){if(!J||typeof J!=="object"||Array.isArray(J))return;let z=J;if(!vS(z.provider)||!mS(z.lifecycle)||!cS(z.checkState))return;return{provider:z.provider,lifecycle:z.lifecycle,checkState:z.checkState,...typeof z.number==="number"&&Number.isFinite(z.number)?{number:z.number}:{},...typeof z.url==="string"?{url:z.url}:{},...typeof z.title==="string"?{title:z.title}:{},...typeof z.baseRef==="string"?{baseRef:z.baseRef}:{},...typeof z.headRef==="string"?{headRef:z.headRef}:{},...typeof z.reviewDecision==="string"?{reviewDecision:z.reviewDecision}:{},...typeof z.mergeable==="string"?{mergeable:z.mergeable}:{},...typeof z.lastCheckedAt==="string"?{lastCheckedAt:z.lastCheckedAt}:{},...typeof z.lastError==="string"?{lastError:z.lastError}:{}}}function vS(J){return J==="github"||J==="gitlab"||J==="bitbucket"||J==="unknown"}function mS(J){return J==="creating"||J==="open"||J==="ready_to_merge"||J==="merged"||J==="closed"||J==="unknown"}function cS(J){return J==="none"||J==="pending"||J==="passing"||J==="failing"||J==="unknown"}function dS(J){return J==="backlog"||J==="in_progress"||J==="in_review"||J==="done"||J==="canceled"||J==="error"}var xS=(J)=>new Promise((z)=>setTimeout(z,J)),uS=25,ES=5000,VY=3;var qQ=C(()=>{zz();_1();F4();g4()});var _H;var S4=C(()=>{_H=class _H extends Error{args;cwd;exitCode;stdout;stderr;constructor(J,z,Y){super(`git ${J.join(" ")} (cwd=${z}) exited with code ${Y.exitCode}: ${Y.stderr.trim()||Y.stdout.trim()}`);this.name="GitCommandError",this.args=J,this.cwd=z,this.exitCode=Y.exitCode,this.stdout=Y.stdout,this.stderr=Y.stderr}}});var T4={};q1(T4,{GitWorktreeManager:()=>pH});import y4 from"fs";import Iz from"path";class pH{execDeps;constructor(J=nS){this.execDeps=J}ctxFor(J){let z=this.execDeps.remoteBasePath(J);return z?{exec:this.execDeps.execForRepo(J),dir:z,remote:!0}:{exec:this.execDeps.execForRepo(J),dir:J,remote:!1}}async runGit(J,z,Y){if(!Y.cwd)throw Error("runGit(): cwd is required; refusing to inherit from process.cwd()");let Z=await J.run(["git",...z],{cwd:Y.cwd,env:Y.env}),G={stdout:Z.stdout,stderr:Z.stderr,exitCode:Z.exitCode};if(G.exitCode!==0&&!Y.allowFail)throw new _H(z,Y.cwd,G);return G}async create(J,z,Y,Z){let G=this.ctxFor(J);if(iY("repo",G.dir),iY("path",Y),!z)throw Error("create(): branch must be a non-empty string");if(await G.exec.exists(Y)){let f=await this.tryDescribe(G,Y);if(f){if(f.branch!==z)throw Error(`worktree at ${Y} is on branch '${f.branch}', refusing to hijack to '${z}'`);return f}throw Error(`create(): ${Y} exists but is not a registered git worktree`)}await G.exec.mkdirp(Iz.dirname(Y));let Q=await this.branchExists(G,z)?["worktree","add",Y,z]:Z?["worktree","add","-b",z,Y,Z]:["worktree","add","-b",z,Y];await this.runGit(G.exec,Q,{cwd:G.dir});let H=await this.tryDescribe(G,Y);if(!H)throw Error(`create(): git reported success but ${Y} is not a worktree`);if(H.branch!==z)throw Error(`create(): post-condition failed \u2014 expected branch '${z}' at ${Y}, got '${H.branch}'`);return H}async createForTask(J){let z=this.execDeps.remoteBasePath(J.repo),Y=z?kK(z,J.slug):RK(J.repo,J.slug);return this.create(J.repo,J.branch,Y,J.baseRef)}async remove(J,z){iY("path",J);let Y=this.execDeps.execForPath(J),Z=z?.force===!0;if(!await Y.exists(J)){let Q=await this.findRepoFor(Y,J);if(Q)await this.runGit(Y,["worktree","prune"],{cwd:Q,allowFail:!0});return}let G=await this.findRepoFor(Y,J);if(!G)throw Error(`remove(): ${J} is not a git worktree`);if(!Z){if(await this.isDirty(J))throw Error(`remove(): refusing to remove dirty worktree at ${J} (pass { force: true } to override)`)}let X=Z?["worktree","remove","--force",J]:["worktree","remove",J];await this.runGit(Y,X,{cwd:G}),await this.runGit(Y,["worktree","prune"],{cwd:G,allowFail:!0})}async list(J){let z=this.ctxFor(J);iY("repo",z.dir);let Y=await this.runGit(z.exec,["worktree","list","--porcelain"],{cwd:z.dir}),Z=n9(Y.stdout),G=[];for(let X of Z){if(!X.path)continue;let Q=z.remote?I4(z.dir,X.path):BB(J,X.path);if(!Q)continue;if(!X.branch||X.detached)continue;let H=HQ(Q),f=HQ(X.path),j=Iz.relative(H,f),V=Iz.join(Q,j),B=await this.isDirty(X.path);G.push({path:V,branch:X.branch,head:X.head??"",dirty:B})}return G}async listAll(J){let z=this.ctxFor(J);iY("repo",z.dir);let Y=await this.runGit(z.exec,["worktree","list","--porcelain"],{cwd:z.dir}),Z=n9(Y.stdout),G=z.remote?z.dir:HQ(z.dir),X=[];for(let Q of Z){if(!Q.path)continue;if(Q.bare)continue;if(!Q.branch||Q.detached)continue;if((z.remote?Q.path:HQ(Q.path))===G)continue;let H=await this.isDirty(Q.path);X.push({path:Q.path,branch:Q.branch,head:Q.head??"",dirty:H,kobeManaged:z.remote?I4(z.dir,Q.path)!==null:NK(J,Q.path),lastActivityMs:await this.lastActivityMs(z.exec,Q.path)})}return X.sort((Q,H)=>H.lastActivityMs-Q.lastActivityMs),X}async lastActivityMs(J,z){try{let Y=await this.runGit(J,["log","-1","--format=%ct"],{cwd:z}),Z=Number.parseInt(Y.stdout.trim(),10);if(Number.isFinite(Z)&&Z>0)return Z*1000}catch{}if(!J.isRemote)try{return y4.statSync(z).mtimeMs}catch{}return 0}async isDirty(J){iY("path",J);let z=this.execDeps.execForPath(J);return(await this.runGit(z,["status","--porcelain"],{cwd:J})).stdout.length>0}async currentBranch(J){iY("path",J);let z=this.execDeps.execForPath(J),Z=(await this.runGit(z,["rev-parse","--abbrev-ref","HEAD"],{cwd:J})).stdout.trim();if(!Z||Z==="HEAD")throw Error(`currentBranch(): ${J} is in detached-HEAD state`);return Z}async renameBranch(J,z,Y){if(iY("path",J),z===Y)return;let Z=this.execDeps.execForPath(J),G=await this.findRepoFor(Z,J);if(!G)throw Error(`renameBranch(): ${J} is not a git worktree`);await this.runGit(Z,["branch","-m",z,Y],{cwd:G})}async tryDescribe(J,z){let Y=await this.runGit(J.exec,["worktree","list","--porcelain"],{cwd:J.dir}),Z=n9(Y.stdout),G=(H)=>J.remote?H:HQ(H),X=G(z),Q=Z.find((H)=>H.path&&G(H.path)===X);if(!Q||!Q.path||!Q.branch||Q.detached)return null;return{path:z,branch:Q.branch,head:Q.head??"",dirty:await this.isDirty(Q.path)}}async branchExists(J,z){let Y=`refs/heads/${z}`;return(await this.runGit(J.exec,["show-ref","--verify","--quiet",Y],{cwd:J.dir,allowFail:!0})).exitCode===0}async findRepoFor(J,z){try{let Y=await this.runGit(J,["rev-parse","--git-common-dir"],{cwd:z,allowFail:!0});if(Y.exitCode!==0)return null;let Z=Y.stdout.trim();if(!Z)return null;let G=Iz.isAbsolute(Z)?Z:Iz.resolve(z,Z);return Iz.basename(G)===".git"?Iz.dirname(G):G}catch(Y){if(Y instanceof _H)return null;throw Y}}}function n9(J){let z=[],Y=null;for(let Z of J.split(`
84
+ `)){let G=Z.replace(/\r$/,"");if(G===""){if(Y)z.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)z.push(Y);return z}function I4(J,z){let Y=`${J.replace(/\/+$/,"")}/.kobe/worktrees`;return z===Y||z.startsWith(`${Y}/`)?Y:null}function iY(J,z){if(!z||!Iz.isAbsolute(z))throw Error(`${J} must be an absolute path, got: ${JSON.stringify(z)}`)}function HQ(J){try{return y4.realpathSync(J)}catch{return Iz.resolve(J)}}var nS;var i9=C(()=>{Oz();C1();S4();WB();nS={execForRepo:XG,execForPath:HY,remoteBasePath(J){return JY(J)?.basePath??null}}});var rH;var x4=C(()=>{rH=["web","completions","add","remove","adopt","export","repo","api","daemon","theme","skill","feedback","update","doctor","reset","reload","kill-sessions"]});var E4={};q1(E4,{runCompletionsSubcommand:()=>aS});function iS(){return`# kobe bash completions
85
85
  # Source: kobe completions bash
86
86
 
87
87
  _kobe() {
@@ -89,7 +89,7 @@ _kobe() {
89
89
  COMPREPLY=()
90
90
  cur="\${COMP_WORDS[COMP_CWORD]}"
91
91
  prev="\${COMP_WORDS[COMP_CWORD-1]}"
92
- opts="${pH.join(" ")}"
92
+ opts="${rH.join(" ")}"
93
93
 
94
94
  if [[ \${cur} == * ]] ; then
95
95
  COMPREPLY=( $(compgen -W "\${opts}" -- \${cur}) )
@@ -97,47 +97,47 @@ _kobe() {
97
97
  fi
98
98
  }
99
99
  complete -F _kobe kobe
100
- `}function AS(){return`#compdef kobe
100
+ `}function lS(){return`#compdef kobe
101
101
  # kobe zsh completions
102
102
  # Source: kobe completions zsh
103
103
 
104
104
  _kobe() {
105
105
  local -a subcommands
106
- subcommands=(${pH.map((z)=>`"${z}"`).join(" ")})
106
+ subcommands=(${rH.map((z)=>`"${z}"`).join(" ")})
107
107
 
108
108
  _arguments "1:subcommand:(\${subcommands})"
109
109
  }
110
110
 
111
111
  _kobe "$@"
112
- `}function RS(){return`# kobe fish completions
112
+ `}function $S(){return`# kobe fish completions
113
113
  # Source: kobe completions fish
114
114
 
115
- ${pH.map((z)=>`complete -c kobe -f -a ${z}`).join(`
115
+ ${rH.map((z)=>`complete -c kobe -f -a ${z}`).join(`
116
116
  `)}
117
- `}async function gS(J){let z=J[0];if(z==="--help"||z==="-h"||z==="help"){process.stdout.write(V4);return}if(!z||z!=="bash"&&z!=="zsh"&&z!=="fish")process.stderr.write(`kobe completions: unknown shell "${z}"
117
+ `}async function aS(J){let z=J[0];if(z==="--help"||z==="-h"||z==="help"){process.stdout.write(u4);return}if(!z||z!=="bash"&&z!=="zsh"&&z!=="fish")process.stderr.write(`kobe completions: unknown shell "${z}"
118
118
 
119
- ${V4}`),process.exit(2);let Y;if(z==="bash")Y=OS();else if(z==="zsh")Y=AS();else Y=RS();process.stdout.write(Y)}var V4=`Usage: kobe completions <bash|zsh|fish>
119
+ ${u4}`),process.exit(2);let Y;if(z==="bash")Y=iS();else if(z==="zsh")Y=lS();else Y=$S();process.stdout.write(Y)}var u4=`Usage: kobe completions <bash|zsh|fish>
120
120
 
121
121
  Generate a shell completion script for kobe and print it to stdout.
122
122
  Redirect the output to the appropriate file for your shell.
123
- `;var U4=C(()=>{W4()});var M4={};q1(M4,{runExportSubcommand:()=>TS,renderExport:()=>F4,displayWidth:()=>rH});function NS(J){return{id:J.id,title:J.title,status:J.status,archived:String(J.archived),vendor:J.vendor??p1,branch:J.branch,repo:J.repo,worktreePath:J.worktreePath}}function cB(J){process.stderr.write(`kobe export: ${J}
124
-
125
- ${L4}
126
- `),process.exit(2)}function CS(J){let z="json";for(let Y=0;Y<J.length;Y++){let Z=J[Y];if(Z==="--json")z="json";else if(Z==="--csv")z="csv";else if(Z==="--format"){let G=J[++Y];if(G===void 0)cB("--format requires a value (json, csv, or table)");z=D4(G)}else if(Z.startsWith("--format="))z=D4(Z.slice(9));else cB(`unexpected argument "${Z}"`)}return z}function D4(J){if(J==="json"||J==="csv"||J==="table")return J;cB(`unknown format "${J}" (expected json, csv, or table)`)}function kS(J){if(/[",\r\n]/.test(J))return`"${J.replace(/"/g,'""')}"`;return J}function bS(J){let z=[fq.join(",")];for(let Y of J)z.push(fq.map((Z)=>kS(Y[Z])).join(","));return z.join(`
127
- `)}function rH(J){let z=0;for(let Y of J)z+=SS(Y.codePointAt(0));return z}function SS(J){if(J>=768&&J<=879||J>=6832&&J<=6911||J>=7616&&J<=7679||J>=8203&&J<=8207||J>=8234&&J<=8238||J>=8288&&J<=8292||J>=8400&&J<=8447||J>=65024&&J<=65039||J===65279)return 0;if(J>=4352&&J<=4447||J===9001||J===9002||J>=11904&&J<=12350||J>=12353&&J<=13311||J>=13312&&J<=19903||J>=19968&&J<=40959||J>=40960&&J<=42191||J>=44032&&J<=55203||J>=63744&&J<=64255||J>=65040&&J<=65049||J>=65072&&J<=65135||J>=65280&&J<=65376||J>=65504&&J<=65510||J>=127744&&J<=129791||J>=131072&&J<=262141)return 2;return 1}function IS(J,z){return J+" ".repeat(Math.max(0,z-rH(J)))}function yS(J){let z={};for(let G of fq)z[G]=Math.max(rH(G),...J.map((X)=>rH(X[G])));let Y=(G)=>fq.map((X)=>IS(G[X],z[X])).join(" ").trimEnd(),Z={};for(let G of fq)Z[G]=G;return[Y(Z),...J.map(Y)].join(`
128
- `)}function F4(J,z){let Y=J.map(NS);if(z==="json")return JSON.stringify(Y,null,2);if(z==="csv")return bS(Y);return yS(Y)}async function TS(J){if(J.includes("--help")||J.includes("-h")||J.includes("help")){process.stdout.write(`${L4}
129
- `);return}let z=CS(J),{TaskIndexStore:Y}=await Promise.resolve().then(() => (Qq(),hB)),Z=new Y;await Z.load();let G=Z.list();if(G.length===0&&z==="table"){process.stdout.write(`no tasks
130
- `);return}process.stdout.write(`${F4(G,z)}
131
- `)}var L4,fq;var O4=C(()=>{tJ();L4=["Usage: kobe export [--json | --csv | --format <json|csv|table>]","","Print the task list (from ~/.kobe/tasks.json) to stdout. Read-only and","daemon-free \u2014 works with the kobe daemon down.","","Options:"," --json JSON array of tasks (default)"," --csv CSV with a header row"," --format <fmt> One of: json, csv, table"," -h, --help Print this help",""].join(`
132
- `),fq=["id","title","status","archived","vendor","branch","repo","worktreePath"]});var g4={};q1(g4,{runRepoSubcommand:()=>wS});import{readFileSync as xS}from"fs";import{resolve as oH}from"path";function lY(J){process.stderr.write(`kobe repo: ${J}
133
-
134
- ${R4}
135
- `),process.exit(2)}function A4(J){try{return xS(oH(process.cwd(),J),"utf8")}catch(z){lY(`cannot read ${J}: ${z instanceof Error?z.message:String(z)}`)}}function uS(J){let z={};for(let Y=0;Y<J.length;Y++){let Z=J[Y],G=()=>{let X=J[++Y];if(X===void 0)lY(`${Z} requires a value`);return X};if(Z==="--init-script")z.initScript=G();else if(Z==="--init-script-file")z.initScript=A4(G());else if(Z==="--init-prompt")z.initPrompt=G();else if(Z==="--init-prompt-file")z.initPrompt=A4(G());else if(Z.startsWith("-"))lY(`unknown flag "${Z}"`);else if(z.path===void 0)z.path=Z;else lY(`unexpected argument "${Z}"`)}return z}function ES(J){let z,Y=!1,Z=!1;for(let G of J)if(G==="--init-script")Y=!0;else if(G==="--init-prompt")Z=!0;else if(G.startsWith("-"))lY(`unknown flag "${G}"`);else if(z===void 0)z=G;else lY(`unexpected argument "${G}"`);if(!Y&&!Z)Y=!0,Z=!0;return{path:z,clearScript:Y,clearPrompt:Z}}async function wS(J){let[z,...Y]=J;if(z===void 0||z==="--help"||z==="-h"||z==="help"){process.stdout.write(`${R4}
136
- `);return}let{getRepoInitOverride:Z,setRepoInitOverride:G,resolveRepoRoot:X}=await Promise.resolve().then(() => (A1(),tz)),{existsSync:q}=await import("fs"),{join:H}=await import("path");if(z==="show"){let[f]=Y.filter((L)=>!L.startsWith("-")),j=X(oH(process.cwd(),f??".")),V=Z(j),B=q(H(j,".kobe","init.sh")),K=q(H(j,".kobe","init-prompt.md"));console.log(`repo: ${j}`),console.log(` .kobe/init.sh: ${B?"present (wins)":"absent"}`),console.log(` .kobe/init-prompt.md: ${K?"present (wins)":"absent"}`),console.log(` override initScript: ${V.initScript?hG(V.initScript):"(unset)"}`),console.log(` override initPrompt: ${V.initPrompt?hG(V.initPrompt):"(unset)"}`);return}if(z==="set"){let f=uS(Y);if(f.initScript===void 0&&f.initPrompt===void 0)lY("set needs at least one of --init-script(-file) / --init-prompt(-file)");let j=X(oH(process.cwd(),f.path??".")),V=G(j,{...f.initScript!==void 0?{initScript:f.initScript}:{},...f.initPrompt!==void 0?{initPrompt:f.initPrompt}:{}});console.log(`updated override for ${j}`),console.log(` initScript: ${V.initScript?hG(V.initScript):"(unset)"}`),console.log(` initPrompt: ${V.initPrompt?hG(V.initPrompt):"(unset)"}`);return}if(z==="unset"){let{path:f,clearScript:j,clearPrompt:V}=ES(Y),B=X(oH(process.cwd(),f??".")),K=G(B,{...j?{initScript:""}:{},...V?{initPrompt:""}:{}});console.log(`cleared override for ${B}`),console.log(` initScript: ${K.initScript?hG(K.initScript):"(unset)"}`),console.log(` initPrompt: ${K.initPrompt?hG(K.initPrompt):"(unset)"}`);return}lY(`unknown verb "${z}"`)}function hG(J){let z=J.replace(/\s+/g," ").trim();return z.length>60?`"${z.slice(0,57)}\u2026"`:`"${z}"`}var R4;var N4=C(()=>{R4=["Usage: kobe repo <show|set|unset> [path] [options]","","Manage a repo's per-user init override (state.json fallback for repos","that don't ship .kobe/init.sh / .kobe/init-prompt.md).","","Commands:"," show [path] Print the override + whether the repo ships .kobe/ files"," set [path] <options> Set the init script and/or first prompt"," unset [path] [--init-script] [--init-prompt] Clear one or both (default: both)","","Set options (later wins; *-file reads from disk):"," --init-script <text> Inline shell to run before the engine"," --init-script-file <path> Read the init script from a file"," --init-prompt <text> Inline first prompt for the engine"," --init-prompt-file <path> Read the first prompt from a file",""," path defaults to the current directory (resolved to its git toplevel).",""].join(`
137
- `)});import{spawnSync as PS}from"child_process";function mS(J){let[z,Y]=J.split("/");if(!z||!Y)throw Error(`invalid GitHub repository slug: ${J}`);return{owner:z,name:Y}}function C4(J,z){let Y=J.trim();if(!Y)throw Error(`${z} is required`);return Y}function k4(J,z){let Y=z?.map((Z)=>typeof Z.message==="string"?Z.message:null).filter((Z)=>!!Z);if(Y&&Y.length>0)return Y.join("; ");return J.trim()||"GitHub CLI returned an empty response"}function b4(J,z,Y){let Z=["api","graphql","-f",`query=${J}`];for(let[f,j]of Object.entries(z))Z.push("-f",`${f}=${j}`);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??""),H;try{H=JSON.parse(X)}catch{throw Error(`failed to parse gh response: ${k4(q,void 0)}`)}if((G.status??0)!==0||H.errors?.length)throw Error(k4(q,H.errors));if(!H.data)throw Error("GitHub CLI response did not include data");return H.data}function cS(J){return`${J}
123
+ `;var w4=C(()=>{x4()});var m4={};q1(m4,{runExportSubcommand:()=>JI,renderExport:()=>v4,displayWidth:()=>oH});function _S(J){return{id:J.id,title:J.title,status:J.status,archived:String(J.archived),vendor:J.vendor??o1,branch:J.branch,repo:J.repo,worktreePath:J.worktreePath}}function l9(J){process.stderr.write(`kobe export: ${J}
124
+
125
+ ${h4}
126
+ `),process.exit(2)}function pS(J){let z="json";for(let Y=0;Y<J.length;Y++){let Z=J[Y];if(Z==="--json")z="json";else if(Z==="--csv")z="csv";else if(Z==="--format"){let G=J[++Y];if(G===void 0)l9("--format requires a value (json, csv, or table)");z=P4(G)}else if(Z.startsWith("--format="))z=P4(Z.slice(9));else l9(`unexpected argument "${Z}"`)}return z}function P4(J){if(J==="json"||J==="csv"||J==="table")return J;l9(`unknown format "${J}" (expected json, csv, or table)`)}function rS(J){if(/[",\r\n]/.test(J))return`"${J.replace(/"/g,'""')}"`;return J}function oS(J){let z=[fQ.join(",")];for(let Y of J)z.push(fQ.map((Z)=>rS(Y[Z])).join(","));return z.join(`
127
+ `)}function oH(J){let z=0;for(let Y of J)z+=sS(Y.codePointAt(0));return z}function sS(J){if(J>=768&&J<=879||J>=6832&&J<=6911||J>=7616&&J<=7679||J>=8203&&J<=8207||J>=8234&&J<=8238||J>=8288&&J<=8292||J>=8400&&J<=8447||J>=65024&&J<=65039||J===65279)return 0;if(J>=4352&&J<=4447||J===9001||J===9002||J>=11904&&J<=12350||J>=12353&&J<=13311||J>=13312&&J<=19903||J>=19968&&J<=40959||J>=40960&&J<=42191||J>=44032&&J<=55203||J>=63744&&J<=64255||J>=65040&&J<=65049||J>=65072&&J<=65135||J>=65280&&J<=65376||J>=65504&&J<=65510||J>=127744&&J<=129791||J>=131072&&J<=262141)return 2;return 1}function tS(J,z){return J+" ".repeat(Math.max(0,z-oH(J)))}function eS(J){let z={};for(let G of fQ)z[G]=Math.max(oH(G),...J.map((X)=>oH(X[G])));let Y=(G)=>fQ.map((X)=>tS(G[X],z[X])).join(" ").trimEnd(),Z={};for(let G of fQ)Z[G]=G;return[Y(Z),...J.map(Y)].join(`
128
+ `)}function v4(J,z){let Y=J.map(_S);if(z==="json")return JSON.stringify(Y,null,2);if(z==="csv")return oS(Y);return eS(Y)}async function JI(J){if(J.includes("--help")||J.includes("-h")||J.includes("help")){process.stdout.write(`${h4}
129
+ `);return}let z=pS(J),{TaskIndexStore:Y}=await Promise.resolve().then(() => (qQ(),d9)),Z=new Y;await Z.load();let G=Z.list();if(G.length===0&&z==="table"){process.stdout.write(`no tasks
130
+ `);return}process.stdout.write(`${v4(G,z)}
131
+ `)}var h4,fQ;var c4=C(()=>{zz();h4=["Usage: kobe export [--json | --csv | --format <json|csv|table>]","","Print the task list (from ~/.kobe/tasks.json) to stdout. Read-only and","daemon-free \u2014 works with the kobe daemon down.","","Options:"," --json JSON array of tasks (default)"," --csv CSV with a header row"," --format <fmt> One of: json, csv, table"," -h, --help Print this help",""].join(`
132
+ `),fQ=["id","title","status","archived","vendor","branch","repo","worktreePath"]});var i4={};q1(i4,{runRepoSubcommand:()=>GI});import{readFileSync as zI}from"fs";import{resolve as sH}from"path";function lY(J){process.stderr.write(`kobe repo: ${J}
133
+
134
+ ${n4}
135
+ `),process.exit(2)}function d4(J){try{return zI(sH(process.cwd(),J),"utf8")}catch(z){lY(`cannot read ${J}: ${z instanceof Error?z.message:String(z)}`)}}function YI(J){let z={};for(let Y=0;Y<J.length;Y++){let Z=J[Y],G=()=>{let X=J[++Y];if(X===void 0)lY(`${Z} requires a value`);return X};if(Z==="--init-script")z.initScript=G();else if(Z==="--init-script-file")z.initScript=d4(G());else if(Z==="--init-prompt")z.initPrompt=G();else if(Z==="--init-prompt-file")z.initPrompt=d4(G());else if(Z.startsWith("-"))lY(`unknown flag "${Z}"`);else if(z.path===void 0)z.path=Z;else lY(`unexpected argument "${Z}"`)}return z}function ZI(J){let z,Y=!1,Z=!1;for(let G of J)if(G==="--init-script")Y=!0;else if(G==="--init-prompt")Z=!0;else if(G.startsWith("-"))lY(`unknown flag "${G}"`);else if(z===void 0)z=G;else lY(`unexpected argument "${G}"`);if(!Y&&!Z)Y=!0,Z=!0;return{path:z,clearScript:Y,clearPrompt:Z}}async function GI(J){let[z,...Y]=J;if(z===void 0||z==="--help"||z==="-h"||z==="help"){process.stdout.write(`${n4}
136
+ `);return}let{getRepoInitOverride:Z,setRepoInitOverride:G,resolveRepoRoot:X}=await Promise.resolve().then(() => (C1(),zY)),{existsSync:Q}=await import("fs"),{join:H}=await import("path");if(z==="show"){let[f]=Y.filter((L)=>!L.startsWith("-")),j=X(sH(process.cwd(),f??".")),V=Z(j),B=Q(H(j,".kobe","init.sh")),K=Q(H(j,".kobe","init-prompt.md"));console.log(`repo: ${j}`),console.log(` .kobe/init.sh: ${B?"present (wins)":"absent"}`),console.log(` .kobe/init-prompt.md: ${K?"present (wins)":"absent"}`),console.log(` override initScript: ${V.initScript?hG(V.initScript):"(unset)"}`),console.log(` override initPrompt: ${V.initPrompt?hG(V.initPrompt):"(unset)"}`);return}if(z==="set"){let f=YI(Y);if(f.initScript===void 0&&f.initPrompt===void 0)lY("set needs at least one of --init-script(-file) / --init-prompt(-file)");let j=X(sH(process.cwd(),f.path??".")),V=G(j,{...f.initScript!==void 0?{initScript:f.initScript}:{},...f.initPrompt!==void 0?{initPrompt:f.initPrompt}:{}});console.log(`updated override for ${j}`),console.log(` initScript: ${V.initScript?hG(V.initScript):"(unset)"}`),console.log(` initPrompt: ${V.initPrompt?hG(V.initPrompt):"(unset)"}`);return}if(z==="unset"){let{path:f,clearScript:j,clearPrompt:V}=ZI(Y),B=X(sH(process.cwd(),f??".")),K=G(B,{...j?{initScript:""}:{},...V?{initPrompt:""}:{}});console.log(`cleared override for ${B}`),console.log(` initScript: ${K.initScript?hG(K.initScript):"(unset)"}`),console.log(` initPrompt: ${K.initPrompt?hG(K.initPrompt):"(unset)"}`);return}lY(`unknown verb "${z}"`)}function hG(J){let z=J.replace(/\s+/g," ").trim();return z.length>60?`"${z.slice(0,57)}\u2026"`:`"${z}"`}var n4;var l4=C(()=>{n4=["Usage: kobe repo <show|set|unset> [path] [options]","","Manage a repo's per-user init override (state.json fallback for repos","that don't ship .kobe/init.sh / .kobe/init-prompt.md).","","Commands:"," show [path] Print the override + whether the repo ships .kobe/ files"," set [path] <options> Set the init script and/or first prompt"," unset [path] [--init-script] [--init-prompt] Clear one or both (default: both)","","Set options (later wins; *-file reads from disk):"," --init-script <text> Inline shell to run before the engine"," --init-script-file <path> Read the init script from a file"," --init-prompt <text> Inline first prompt for the engine"," --init-prompt-file <path> Read the first prompt from a file",""," path defaults to the current directory (resolved to its git toplevel).",""].join(`
137
+ `)});import{spawnSync as XI}from"child_process";function HI(J){let[z,Y]=J.split("/");if(!z||!Y)throw Error(`invalid GitHub repository slug: ${J}`);return{owner:z,name:Y}}function $4(J,z){let Y=J.trim();if(!Y)throw Error(`${z} is required`);return Y}function a4(J,z){let Y=z?.map((Z)=>typeof Z.message==="string"?Z.message:null).filter((Z)=>!!Z);if(Y&&Y.length>0)return Y.join("; ");return J.trim()||"GitHub CLI returned an empty response"}function _4(J,z,Y){let Z=["api","graphql","-f",`query=${J}`];for(let[f,j]of Object.entries(z))Z.push("-f",`${f}=${j}`);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??""),H;try{H=JSON.parse(X)}catch{throw Error(`failed to parse gh response: ${a4(Q,void 0)}`)}if((G.status??0)!==0||H.errors?.length)throw Error(a4(Q,H.errors));if(!H.data)throw Error("GitHub CLI response did not include data");return H.data}function fI(J){return`${J}
138
138
 
139
139
  ---
140
- Submitted from kobe ${r0}.`}function vG(J,z={}){let Y=C4(J.title,"feedback title"),Z=cS(C4(J.body,"feedback body")),G=(z.repoSlug??JZ)();if(!G)throw Error("package repository is not a GitHub repository");let{owner:X,name:q}=mS(G),H=J.categorySlug?.trim()||dB,f={spawn:z.spawn??PS},V=b4(hS,{owner:X,name:q},f).repository,B=V?.id;if(!B)throw Error(`GitHub repository not found: ${G}`);let K=V.discussionCategories?.nodes?.find((O)=>O.slug===H);if(!K)throw Error(`GitHub Discussion category not found: ${H}`);let A=b4(vS,{repositoryId:B,categoryId:K.id,title:Y,body:Z},f).createDiscussion?.discussion;if(!A?.url||typeof A.number!=="number")throw Error("GitHub did not return the created Discussion");return{number:A.number,url:A.url}}var dB="feedback",hS=`
140
+ Submitted from kobe ${J1}.`}function vG(J,z={}){let Y=$4(J.title,"feedback title"),Z=fI($4(J.body,"feedback body")),G=(z.repoSlug??JZ)();if(!G)throw Error("package repository is not a GitHub repository");let{owner:X,name:Q}=HI(G),H=J.categorySlug?.trim()||$9,f={spawn:z.spawn??XI},V=_4(QI,{owner:X,name:Q},f).repository,B=V?.id;if(!B)throw Error(`GitHub repository not found: ${G}`);let K=V.discussionCategories?.nodes?.find((O)=>O.slug===H);if(!K)throw Error(`GitHub Discussion category not found: ${H}`);let A=_4(qI,{repositoryId:B,categoryId:K.id,title:Y,body:Z},f).createDiscussion?.discussion;if(!A?.url||typeof A.number!=="number")throw Error("GitHub did not return the created Discussion");return{number:A.number,url:A.url}}var $9="feedback",QI=`
141
141
  query($owner: String!, $name: String!) {
142
142
  repository(owner: $owner, name: $name) {
143
143
  id
@@ -150,7 +150,7 @@ query($owner: String!, $name: String!) {
150
150
  }
151
151
  }
152
152
  }
153
- `,vS=`
153
+ `,qI=`
154
154
  mutation($repositoryId: ID!, $categoryId: ID!, $title: String!, $body: String!) {
155
155
  createDiscussion(input: {
156
156
  repositoryId: $repositoryId,
@@ -164,74 +164,74 @@ mutation($repositoryId: ID!, $categoryId: ID!, $title: String!, $body: String!)
164
164
  }
165
165
  }
166
166
  }
167
- `;var sH=C(()=>{AJ()});async function S4(J={}){let z=J.mode==="require-running"?await Zz():await kz();if(!z)return null;return{client:z,close:()=>z.close()}}var I4=C(()=>{RJ()});var c4={};q1(c4,{verbSchema:()=>aB,verbHelp:()=>h4,validateAgainstSpec:()=>lB,schemaIndex:()=>w4,runApiSubcommand:()=>BI,parseFlags:()=>iB,parseAgentsSpec:()=>u4,invokeVerb:()=>jI,fullSchema:()=>P4,findVerb:()=>jq,deliverPrompt:()=>v4,defaultApiRuntime:()=>_B,apiUsage:()=>tH,VerbArgs:()=>$B,VERB_GROUPS:()=>cG,VERBS:()=>dG,FANOUT_CAP:()=>mG,ApiError:()=>O1,API_VERBS:()=>iS,API_SCHEMA_VERSION:()=>nB});import{resolve as y4}from"path";function x4(J){for(let[z,Y]of Object.entries(cG))if(Y.includes(J))return z;return"other"}async function nS(J){let z=J.args.str("verb");if(z){let Z=jq(z);if(!Z)throw new O1(`unknown verb: ${z}`,"BAD_VERB");return aB(Z)}let Y=J.args.str("group");if(Y)return $S(Y);if(J.args.bool("all"))return P4();return w4()}function jq(J){let z=eH[J]??J;return dG.find((Y)=>Y.name===z)}function iB(J,z=new Set){let Y=new Map,Z=!1,G=!1;for(let X=0;X<J.length;X++){let q=J[X];if(!q.startsWith("--")&&q!=="-h")throw new O1(`unexpected positional arg: ${q}`,"BAD_FLAG");if(q==="-h"){G=!0;continue}let H=q.indexOf("=");if(H!==-1){let V=q.slice(2,H),B=q.slice(H+1);if(V==="pretty")Z=B!=="false"&&B!=="0";else if(V==="help")G=B!=="false"&&B!=="0";else Y.set(V,B);continue}let f=q.slice(2);if(f==="pretty"){Z=!0;continue}if(f==="help"){G=!0;continue}if(z.has(f)){Y.set(f,"true");continue}let j=J[X+1];if(j===void 0||j.startsWith("--"))throw new O1(`flag --${f} requires a value`,"BAD_FLAG");Y.set(f,j),X+=1}return{flags:Y,pretty:Z,help:G}}function lB(J,z){let Y=new Set(J.flags.map((Z)=>Z.name));for(let Z of z.keys())if(!Y.has(Z))throw new O1(`unknown flag --${Z} for "${J.name}". Run \`kobe api ${J.name} --help\``,"BAD_FLAG");for(let Z of J.flags){if(Z.required&&!z.get(Z.name))throw new O1(`--${Z.name} is required for "${J.name}"`,"MISSING_FLAG");if(Z.type==="enum"&&Z.values){let G=z.get(Z.name);if(G!==void 0&&!Z.values.includes(G))throw new O1(`--${Z.name} must be one of ${Z.values.join(", ")}`,"BAD_FLAG")}if(Z.type==="int"){let G=z.get(Z.name);if(G!==void 0){let X=Number.parseInt(G,10);if(!Number.isInteger(X)||X<=0)throw new O1(`--${Z.name} must be a positive integer`,"BAD_FLAG")}}}}class $B{verb;flags;constructor(J,z){this.verb=J;this.flags=z}spec(J){let z=this.verb.flags.find((Y)=>Y.name===J);if(!z)throw Error(`internal: --${J} is not declared on verb "${this.verb.name}"`);return z}str(J){this.spec(J);let z=this.flags.get(J);return z&&z.length>0?z:void 0}require(J){let z=this.str(J);if(z===void 0)throw new O1(`--${J} is required`,"MISSING_FLAG");return z}enumOf(J){let z=this.spec(J),Y=this.str(J);if(Y===void 0)return;if(z.values&&!z.values.includes(Y))throw new O1(`--${J} must be one of ${z.values.join(", ")}`,"BAD_FLAG");return Y}requireEnum(J){return this.require(J),this.enumOf(J)}vendor(){return this.enumOf("vendor")}bool(J){this.spec(J);let z=this.str(J);if(z===void 0)return;if(["true","1","yes"].includes(z))return!0;if(["false","0","no"].includes(z))return!1;throw new O1(`--${J} must be a boolean (true/false)`,"BAD_FLAG")}int(J){this.spec(J);let z=this.str(J);if(z===void 0)return;let Y=Number.parseInt(z,10);if(!Number.isInteger(Y)||Y<=0)throw new O1(`--${J} must be a positive integer`,"BAD_FLAG");return Y}path(J){let z=this.str(J);return z===void 0?void 0:y4(process.cwd(),z)}requirePath(J){return y4(process.cwd(),this.require(J))}}function u4(J){let z=[];for(let Y of J.split(",")){let Z=Y.trim();if(!Z)continue;let G=Z.indexOf(":");if(G===-1)throw new O1(`--agents entry "${Z}" must be vendor:count`,"BAD_FLAG");let X=Z.slice(0,G);if(!$1.includes(X))throw new O1(`--agents vendor "${X}" must be one of ${$1.join(", ")}`,"BAD_FLAG");let q=Number.parseInt(Z.slice(G+1),10);if(!Number.isInteger(q)||q<=0)throw new O1(`--agents count for "${X}" must be a positive integer`,"BAD_FLAG");if(z.length+q>mG)throw new O1(`--agents requests ${z.length+q} agents, exceeds the cap of ${mG}`,"BAD_FLAG");for(let H=0;H<q;H++)z.push(X)}if(z.length===0)throw new O1('--agents specified no agents (e.g. "claude:2,codex:1")',"BAD_FLAG");return z}function lS(J){return{name:J.name,type:J.type,required:J.required??!1,...J.values?{values:J.values}:{},...J.default!==void 0?{default:J.default}:{},...J.placeholder?{placeholder:J.placeholder}:{},description:J.description}}function aB(J){return{name:J.name,group:x4(J.name),summary:J.summary,offline:J.offline??!1,flags:J.flags.map(lS)}}function w4(){return{apiVersion:nB,kobeVersion:r0,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:cG,verbs:dG.map((J)=>({name:J.name,group:x4(J.name),summary:J.summary})),globalFlags:E4,aliases:eH}}function $S(J){let z=cG[J];if(!z)throw new O1(`unknown group: ${J}. Groups: ${Object.keys(cG).join(", ")}`,"BAD_FLAG");return{group:J,verbs:z.map((Y)=>{let Z=jq(Y);return{name:Y,summary:Z?.summary??""}})}}function P4(){return{apiVersion:nB,kobeVersion:r0,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:E4,aliases:eH,groups:cG,verbs:dG.map(aB)}}function aS(J){return J.flags.map((z)=>{let Y=z.type==="enum"&&z.values?z.values.join("|"):z.placeholder??(z.type==="bool"?"":"X"),Z=Y?`--${z.name} ${Y}`:`--${z.name}`;return z.required?Z:`[${Z}]`}).join(" ")}function h4(J){let z=[`kobe api ${J.name} ${aS(J)}`.trimEnd(),"",J.summary,""],Y=Object.entries(eH).find(([,Z])=>Z===J.name)?.[0];if(Y)z.push(`Alias: ${Y}`,"");if(J.flags.length>0){z.push("Flags:");for(let Z of J.flags){let G=Z.required?" (required)":"",X=Z.default!==void 0?` [default: ${Z.default}]`:"",q=Z.type==="enum"&&Z.values?` {${Z.values.join("|")}}`:"";z.push(` --${Z.name}${q}${G}${X} ${Z.description}`)}z.push("")}return z.push("Global: [--pretty] [--help]"),z.join(`
168
- `)}function tH(){return["usage: kobe api <verb> [flags] [--pretty] [--help]","","Explore the full surface (names, flags, types) with: kobe api schema","","verbs:",...dG.map((z)=>` ${z.name.padEnd(18)} ${z.summary}`),"","Output is one JSON object on stdout (exit 0); errors are JSON on stderr (exit != 0)."].join(`
169
- `)}function _S(J,z){let Y=z?JSON.stringify(J,null,2):JSON.stringify(J);process.stdout.write(`${Y}
170
- `)}function BY(J,z,Y=1){process.stderr.write(`${JSON.stringify({error:{message:J,code:z}})}
171
- `),process.exit(Y)}async function v4(J,z,Y,Z=pS){let G=z.worktreePath;if(!G)G=(await J.request("task.ensureWorktree",{taskId:z.id})).worktreePath;if(!G)throw new O1(`task ${z.id} has no worktree`,"NO_WORKTREE");let X=C1(z.id),q=await Z.sessionExists(X);if(!q){let j=await Z.resolveEngineLaunchInit(z.repo??"",G,{kind:"none"});if(!await Z.ensureSession({name:X,cwd:G,command:Z.engineCommand(z.vendor),taskId:z.id,vendor:z.vendor,repo:z.repo,launchInit:j}))throw new O1(`failed to start tmux session for ${z.id}`,"SESSION_FAILED")}let{pane:H,ready:f}=await Z.waitForEnginePane(X,!q);if(!H)throw new O1(`no engine pane in session ${X}`,"NO_ENGINE_PANE");return await Z.pasteAndSubmit(H,Y),{session:X,pane:H,started:!q,engineReady:f}}async function rS(J){let z=null,Y=J.onChannel("active-task",(Z)=>{z=Z.taskId});try{await J.subscribe()}finally{Y()}return z}function nJ(J){if(!J.client)throw new O1("daemon required","BAD_DAEMON");return J.client}async function Sz(J,z,Y){return nJ(J).request(z,Y)}async function oS(J){let z=J.args.str("title"),Y=J.args.str("body");if(z===void 0&&Y===void 0)throw new O1("issue-update requires --title and/or --body","MISSING_FLAG");return Sz(J,"issue.mutate",{repoRoot:J.args.requirePath("repo"),op:{type:"update",id:J.args.int("id"),title:z,body:Y}})}async function sS(J){let z=nJ(J),{args:Y,runtime:Z}=J,X={repo:await Z.resolveRepoRoot(Y.requirePath("repo"))},q=Y.str("title");if(q)X.title=q;let H=Y.str("branch");if(H)X.branch=H;let f=Y.str("base-branch");if(f)X.baseRef=f;let j=Y.vendor()??await Z.defaultVendor();if(j)X.vendor=j;let V=await z.request("task.create",X),B=V.taskId;await z.request("task.setActive",{taskId:B});let K=Y.enumOf("status");if(K)await z.request("task.status",{taskId:B,status:K});let L=Y.bool("pin");if(L!==void 0)await z.request("task.pin",{taskId:B,pinned:L});let A=V.task;if(K||L!==void 0)A=(await z.request("task.get",{taskId:B})).task;let O=Y.str("prompt");if(!O)return{taskId:B,task:A,started:!1};let R=await J.runtime.deliverPrompt(z,{id:B,worktreePath:A.worktreePath,vendor:A.vendor,repo:A.repo},O);return A=(await z.request("task.get",{taskId:B})).task,{taskId:B,task:A,started:R.started,engineReady:R.engineReady,session:R.session}}async function tS(J){let z=nJ(J),Y=J.args.require("prompt"),Z=J.args.str("task-id");if(!Z){let q=await rS(z);if(!q)throw new O1("no --task-id given and no active task \u2014 open a task first or pass --task-id","MISSING_TARGET");Z=q}let G=await z.request("task.get",{taskId:Z}),X=await J.runtime.deliverPrompt(z,{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 eS(J){let z=nJ(J),Y=J.args.require("task-id"),Z=J.args.require("prompt");return await z.request("session.deliver",{taskId:Y,text:Z,source:"dispatcher"}),{ok:!0,taskId:Y,routed:"session.deliver"}}async function JI(J){let z=nJ(J),Y=J.args.require("task-id"),Z=J.args.require("text");return await z.request("note.file",{taskId:Y,text:Z})}async function zI(J){let z=nJ(J),Y=J.args.require("task-id"),Z=await z.request("task.get",{taskId:Y}),G=await J.runtime.isTaskRunning(Y);return{task:Z.task,running:G}}async function YI(J){return nJ(J).request("task.list")}async function ZI(J){let z=nJ(J),Z=J.args.bool("none")?null:J.args.require("task-id");return await z.request("task.setActive",{taskId:Z}),{ok:!0,activeTaskId:Z}}async function GI(J){let z=nJ(J),Y=J.args.require("task-id"),Z=J.args.bool("archived")??!0,G=await z.request("task.archive",{taskId:Y,archived:Z});if(Z)await J.runtime.tearDownSession(Y);return G}async function XI(J){let z=nJ(J),Y=J.args.require("task-id"),Z=J.args.bool("force")??!1,G=await z.request("task.delete",{taskId:Y,force:Z});return await J.runtime.tearDownSession(Y),G}async function qI(J){let z=nJ(J),{args:Y}=J,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 z.request("worktree.adopt",Z)}async function QI(J){let z=nJ(J),{args:Y,runtime:Z}=J,G=await Z.resolveRepoRoot(Y.requirePath("repo")),X=Y.require("prompt"),q=Y.str("title"),H=Y.str("base-branch"),f=Y.str("agents"),j=await Z.defaultVendor(),V=f?u4(f):Array(Y.int("count")??1).fill(Y.vendor()??j??"claude");if(V.length>mG)throw new O1(`fan-out of ${V.length} exceeds the cap of ${mG} \u2014 spawn in batches`,"BAD_FLAG");let B=[];for(let K of V){let L={repo:G,vendor:K};if(q)L.title=q;if(H)L.baseRef=H;let A=await z.request("task.create",L),O=await J.runtime.deliverPrompt(z,{id:A.taskId,worktreePath:A.task.worktreePath,vendor:K,repo:A.task.repo},X);B.push({taskId:A.taskId,vendor:K,started:O.started,engineReady:O.engineReady,session:O.session})}return{count:B.length,tasks:B}}async function HI(J){let z=nJ(J),{args:Y,runtime:Z}=J,G=Y.str("task-ids"),X=Y.path("repo"),q;if(G)q=G.split(",").map((f)=>f.trim()).filter(Boolean);else if(X){let f=await Z.resolveRepoRoot(X),{tasks:j}=await z.request("task.list");q=[];for(let V of j){if(V.archived)continue;if(await Z.resolveRepoRoot(V.repo)===f)q.push(V.id)}}else throw new O1("collect needs --task-ids id1,id2 or --repo PATH","MISSING_TARGET");let H=[];for(let f of q){let{task:j}=await z.request("task.get",{taskId:f}),V=await Z.isTaskRunning(f),B=j.worktreePath?await Z.readWorktreeChanges(j.worktreePath):{added:0,deleted:0};H.push({taskId:j.id,title:j.title,branch:j.branch,worktreePath:j.worktreePath,vendor:j.vendor,status:j.status,running:V,changes:B})}return{tasks:H}}async function fI(J){return{ok:!0,discussion:vG({title:J.args.require("title"),body:J.args.require("body"),categorySlug:J.args.str("category")})}}function m4(J,z,Y,Z){return{args:new $B(J,z),client:Y,runtime:Z}}async function jI(J,z,Y){let Z=jq(J);if(!Z)throw new O1(`unknown verb: ${J}`,"BAD_VERB");let G=new Set(Z.flags.filter((q)=>q.type==="bool").map((q)=>q.name)),X=iB(z,G);return lB(Z,X.flags),Z.handler(m4(Z,X.flags,Y.client,Y.runtime??_B))}async function BI(J){let[z,...Y]=J;if(!z||z==="--help"||z==="-h"||z==="help"){if(!z)BY(tH(),"MISSING_VERB",2);process.stdout.write(`${tH()}
172
- `);return}let Z=jq(z);if(!Z)BY(`unknown verb: ${z}
173
- ${tH()}`,"BAD_VERB",2);let G=new Set(Z.flags.filter((H)=>H.type==="bool").map((H)=>H.name)),X;try{X=iB(Y,G)}catch(H){if(H instanceof O1)BY(H.message,H.code,2);BY(H instanceof Error?H.message:String(H),"BAD_FLAG",2)}if(X.help){process.stdout.write(`${h4(Z)}
174
- `);return}try{lB(Z,X.flags)}catch(H){if(H instanceof O1)BY(H.message,H.code,2);BY(H instanceof Error?H.message:String(H),"BAD_FLAG",2)}let q=null;if(!Z.offline)try{q=await S4()}catch(H){BY(`could not reach or start the kobe daemon: ${H instanceof Error?H.message:String(H)}`,"BAD_DAEMON",2)}try{let H=await Z.handler(m4(Z,X.flags,q?.client??null,_B));_S(H,X.pretty)}catch(H){if(H instanceof O1)BY(H.message,H.code,1);BY(H instanceof Error?H.message:String(H),"RPC_ERROR",1)}finally{q?.close()}}var nB=2,mG=10,T4,dS,O1,D1,eH,cG,dG,iS,E4,pS,_B;var d4=C(()=>{eJ();sH();v1();pQ();a1();AJ();I4();T4=["backlog","in_progress","in_review","done","canceled","error"],dS=["open","doing","hold","done"];O1=class O1 extends Error{code;constructor(J,z){super(J);this.code=z}};D1={repo:(J=!0)=>({name:"repo",type:"string",required:J,placeholder:"PATH",description:"Repo root (git toplevel). Relative paths resolve against $PWD."}),taskId:(J=!0)=>({name:"task-id",type:"string",required:J,placeholder:"ID",description:"Target task id (from `list` / `add`)."}),vendor:()=>({name:"vendor",type:"enum",values:$1,placeholder:"V",description:"Engine vendor for the task."}),title:()=>({name:"title",type:"string",placeholder:"T",description:"Human task title."}),prompt:(J,z)=>({name:"prompt",type:"string",required:J,placeholder:"TEXT",description:z})},eH={"spawn-task":"add"},cG={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"]};dG=[{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:nS},{name:"list",summary:"List all tasks (incl. archived). Returns { tasks }.",flags:[],handler:YI},{name:"get-task",summary:"Read one task's metadata. `.running` = its tmux session is live.",flags:[D1.taskId()],handler:zI},{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:[D1.repo(),D1.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."},D1.vendor(),{name:"status",type:"enum",values:T4,default:"backlog",description:"Initial lifecycle status."},{name:"pin",type:"bool",description:"Pin the task to the top of the sidebar."},D1.prompt(!1,"Optional first message \u2014 when set, materializes the worktree, starts the engine, and pastes it.")],handler:sS},{name:"fan-out",summary:`Spawn N tasks of ONE prompt in a single call (parallel attempts). Capped at ${mG}.`,flags:[D1.repo(),D1.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)."},D1.vendor(),D1.title(),{name:"base-branch",type:"string",placeholder:"B",description:"Base ref for every worktree."}],handler:QI},{name:"send",summary:"Paste a follow-up prompt into a task's running engine (one full turn). Defaults to the active task.",flags:[D1.taskId(!1),D1.prompt(!0,"Text pasted + submitted into the engine pane.")],handler:tS},{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:[D1.taskId(!0),D1.prompt(!0,"Text delivered into the task's engine session.")],handler:eS},{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:[D1.taskId(!0),{name:"text",type:"string",required:!0,placeholder:"TEXT",description:"One line: the verified conclusion another session could act on."}],handler:JI},{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:dB,placeholder:"SLUG",description:"Discussion category slug."}],offline:!0,handler:fI},{name:"issue-list",summary:"List daemon-owned issues for a repo.",flags:[D1.repo()],handler:(J)=>Sz(J,"issue.list",{repoRoot:J.args.requirePath("repo")})},{name:"issue-create",summary:"Create a daemon-owned issue for a repo.",flags:[D1.repo(),{name:"title",type:"string",required:!0,placeholder:"T",description:"Issue title."},{name:"body",type:"string",placeholder:"TEXT",description:"Issue body."}],handler:(J)=>Sz(J,"issue.mutate",{repoRoot:J.args.requirePath("repo"),op:{type:"create",title:J.args.require("title"),body:J.args.str("body")}})},{name:"issue-set-status",summary:"Set a daemon-owned issue's status.",flags:[D1.repo(),{name:"id",type:"int",required:!0,placeholder:"N",description:"Issue id."},{name:"status",type:"enum",required:!0,values:dS,description:"New issue status."}],handler:(J)=>Sz(J,"issue.mutate",{repoRoot:J.args.requirePath("repo"),op:{type:"setStatus",id:J.args.int("id"),status:J.args.requireEnum("status")}})},{name:"issue-update",summary:"Update a daemon-owned issue's title and/or body.",flags:[D1.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:oS},{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."},D1.repo(!1)],handler:HI},{name:"rename",summary:"Set a task's title.",flags:[D1.taskId(),{name:"title",type:"string",required:!0,placeholder:"T",description:"New title."}],handler:(J)=>Sz(J,"task.rename",{taskId:J.args.require("task-id"),title:J.args.require("title")})},{name:"set-branch",summary:"Rename a task's branch (git branch -m if materialized, else recorded).",flags:[D1.taskId(),{name:"branch",type:"string",required:!0,placeholder:"B",description:"New branch name."}],handler:(J)=>Sz(J,"task.setBranch",{taskId:J.args.require("task-id"),branch:J.args.require("branch")})},{name:"set-vendor",summary:"Change a task's engine vendor (takes effect on next session rebuild).",flags:[D1.taskId(),{...D1.vendor(),required:!0}],handler:(J)=>Sz(J,"task.setVendor",{taskId:J.args.require("task-id"),vendor:J.args.requireEnum("vendor")})},{name:"set-status",summary:"Set a task's lifecycle status.",flags:[D1.taskId(),{name:"status",type:"enum",required:!0,values:T4,description:"New status."}],handler:(J)=>Sz(J,"task.status",{taskId:J.args.require("task-id"),status:J.args.requireEnum("status")})},{name:"archive",summary:"Archive (or with --archived=false, unarchive) a task. Non-destructive: worktree/branch/history stay.",flags:[D1.taskId(),{name:"archived",type:"bool",default:"true",description:"true to archive, false to unarchive."}],handler:GI},{name:"pin",summary:"Pin (or with --pinned=false, unpin) a task to the top of the sidebar.",flags:[D1.taskId(),{name:"pinned",type:"bool",default:"true",description:"true to pin, false to unpin."}],handler:(J)=>Sz(J,"task.pin",{taskId:J.args.require("task-id"),pinned:J.args.bool("pinned")??!0})},{name:"set-active",summary:"Set the shared active task (the focus every Tasks pane highlights). Pass --none to clear.",flags:[D1.taskId(!1),{name:"none",type:"bool",description:"Clear the active task instead of setting one."}],handler:ZI},{name:"ensure-worktree",summary:"Materialize a task's git worktree on disk now (without starting an engine). Returns { worktreePath }.",flags:[D1.taskId()],handler:(J)=>Sz(J,"task.ensureWorktree",{taskId:J.args.require("task-id")})},{name:"delete",summary:"Permanently remove a task (and its worktree). DESTRUCTIVE \u2014 prefer `archive`. Needs --force on a dirty worktree.",flags:[D1.taskId(),{name:"force",type:"bool",description:"Delete even with uncommitted changes."}],handler:XI},{name:"discover-adoptable",summary:"List existing git worktrees in a repo not yet tracked as kobe tasks. Returns { worktrees }.",flags:[D1.repo()],handler:(J)=>Sz(J,"worktree.discoverAdoptable",{repo:J.args.requirePath("repo")})},{name:"adopt",summary:"Import an existing git worktree as a kobe task. Returns { task }.",flags:[D1.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)."},D1.vendor(),D1.title()],handler:qI}],iS=dG.map((J)=>J.name);E4=[{name:"pretty",type:"bool",description:"Pretty-print stdout JSON."},{name:"help",type:"bool",description:"Show usage for the verb and exit."}];pS={sessionExists:V1,ensureSession:async(J)=>(await Promise.resolve().then(() => (zJ(),TJ))).ensureSession(J),waitForEnginePane:TX,pasteAndSubmit:xX,resolveEngineLaunchInit:async(J,z,Y)=>(await Promise.resolve().then(() => (yG(),mH))).resolveEngineLaunchInit(J,z,Y),engineCommand:vJ};_B={isTaskRunning:(J)=>V1(C1(J)),deliverPrompt:(J,z,Y)=>v4(J,z,Y),resolveRepoRoot:async(J)=>(await Promise.resolve().then(() => (A1(),tz))).resolveMainRepoRoot(J),defaultVendor:async()=>{let{getPersistedString:J}=await Promise.resolve().then(() => (A1(),tz)),z=J("lastSelectedVendor")?.trim();return z?z:void 0},readWorktreeChanges:async(J)=>(await Promise.resolve().then(() => (xG(),PU))).readWorktreeChanges(J),tearDownSession:async(J)=>{let z=C1(J);await cz(z).catch(()=>{}),await zz(z).catch(()=>{})}}});var $4={};q1($4,{updatePlan:()=>n4,runUpdateSubcommand:()=>VI,parseUpdateArgs:()=>i4});import{spawnSync as WI}from"child_process";function n4(){return{command:"sh",args:["-c",pz],display:pz}}function i4(J){let z=!1;for(let Y=0;Y<J.length;Y+=1){let Z=J[Y];if(Z==="--help"||Z==="-h"||Z==="help")return{help:!0,dryRun:z};if(Z==="--dry-run"){z=!0;continue}process.stderr.write(`kobe update: unknown argument "${Z}"
175
-
176
- `),l4(process.stderr),process.exit(2)}return{help:!1,dryRun:z}}function l4(J){J.write(["Usage: kobe update [--dry-run]","","Runs kobe's GitHub-hosted update script.","","Default command:",` ${pz}`,"","Script URL:",` ${dq}`,"","Manual fallback:",` ${pf()}`,"","Examples:"," kobe update"," kobe update --dry-run",""].join(`
177
- `))}async function VI(J,z){let Y={spawn:z?.spawn??WI,stdout:z?.stdout??process.stdout,stderr:z?.stderr??process.stderr,exit:z?.exit??((q)=>process.exit(q))},Z=i4(J);if(Z.help){l4(Y.stdout);return}let G=n4();if(Y.stdout.write(`kobe ${r0} -> latest
167
+ `;var tH=C(()=>{NJ()});async function p4(J={}){let z=J.mode==="require-running"?await Qz():await Sz();if(!z)return null;return{client:z,close:()=>z.close()}}var r4=C(()=>{CJ()});var QD={};q1(QD,{verbSchema:()=>o9,verbHelp:()=>ZD,validateAgainstSpec:()=>p9,schemaIndex:()=>zD,runApiSubcommand:()=>EI,parseFlags:()=>_9,parseAgentsSpec:()=>e4,invokeVerb:()=>uI,fullSchema:()=>YD,findVerb:()=>jQ,deliverPrompt:()=>GD,defaultApiRuntime:()=>s9,apiUsage:()=>eH,VerbArgs:()=>r9,VERB_GROUPS:()=>cG,VERBS:()=>dG,FANOUT_CAP:()=>mG,ApiError:()=>N1,API_VERBS:()=>WI,API_SCHEMA_VERSION:()=>a9});import{resolve as o4}from"path";function t4(J){for(let[z,Y]of Object.entries(cG))if(Y.includes(J))return z;return"other"}async function BI(J){let z=J.args.str("verb");if(z){let Z=jQ(z);if(!Z)throw new N1(`unknown verb: ${z}`,"BAD_VERB");return o9(Z)}let Y=J.args.str("group");if(Y)return KI(Y);if(J.args.bool("all"))return YD();return zD()}function jQ(J){let z=Jf[J]??J;return dG.find((Y)=>Y.name===z)}function _9(J,z=new Set){let Y=new Map,Z=!1,G=!1;for(let X=0;X<J.length;X++){let Q=J[X];if(!Q.startsWith("--")&&Q!=="-h")throw new N1(`unexpected positional arg: ${Q}`,"BAD_FLAG");if(Q==="-h"){G=!0;continue}let H=Q.indexOf("=");if(H!==-1){let V=Q.slice(2,H),B=Q.slice(H+1);if(V==="pretty")Z=B!=="false"&&B!=="0";else if(V==="help")G=B!=="false"&&B!=="0";else Y.set(V,B);continue}let f=Q.slice(2);if(f==="pretty"){Z=!0;continue}if(f==="help"){G=!0;continue}if(z.has(f)){Y.set(f,"true");continue}let j=J[X+1];if(j===void 0||j.startsWith("--"))throw new N1(`flag --${f} requires a value`,"BAD_FLAG");Y.set(f,j),X+=1}return{flags:Y,pretty:Z,help:G}}function p9(J,z){let Y=new Set(J.flags.map((Z)=>Z.name));for(let Z of z.keys())if(!Y.has(Z))throw new N1(`unknown flag --${Z} for "${J.name}". Run \`kobe api ${J.name} --help\``,"BAD_FLAG");for(let Z of J.flags){if(Z.required&&!z.get(Z.name))throw new N1(`--${Z.name} is required for "${J.name}"`,"MISSING_FLAG");if(Z.type==="enum"&&Z.values){let G=z.get(Z.name);if(G!==void 0&&!Z.values.includes(G))throw new N1(`--${Z.name} must be one of ${Z.values.join(", ")}`,"BAD_FLAG")}if(Z.type==="int"){let G=z.get(Z.name);if(G!==void 0){let X=Number.parseInt(G,10);if(!Number.isInteger(X)||X<=0)throw new N1(`--${Z.name} must be a positive integer`,"BAD_FLAG")}}}}class r9{verb;flags;constructor(J,z){this.verb=J;this.flags=z}spec(J){let z=this.verb.flags.find((Y)=>Y.name===J);if(!z)throw Error(`internal: --${J} is not declared on verb "${this.verb.name}"`);return z}str(J){this.spec(J);let z=this.flags.get(J);return z&&z.length>0?z:void 0}require(J){let z=this.str(J);if(z===void 0)throw new N1(`--${J} is required`,"MISSING_FLAG");return z}enumOf(J){let z=this.spec(J),Y=this.str(J);if(Y===void 0)return;if(z.values&&!z.values.includes(Y))throw new N1(`--${J} must be one of ${z.values.join(", ")}`,"BAD_FLAG");return Y}requireEnum(J){return this.require(J),this.enumOf(J)}vendor(){return this.enumOf("vendor")}bool(J){this.spec(J);let z=this.str(J);if(z===void 0)return;if(["true","1","yes"].includes(z))return!0;if(["false","0","no"].includes(z))return!1;throw new N1(`--${J} must be a boolean (true/false)`,"BAD_FLAG")}int(J){this.spec(J);let z=this.str(J);if(z===void 0)return;let Y=Number.parseInt(z,10);if(!Number.isInteger(Y)||Y<=0)throw new N1(`--${J} must be a positive integer`,"BAD_FLAG");return Y}path(J){let z=this.str(J);return z===void 0?void 0:o4(process.cwd(),z)}requirePath(J){return o4(process.cwd(),this.require(J))}}function e4(J){let z=[];for(let Y of J.split(",")){let Z=Y.trim();if(!Z)continue;let G=Z.indexOf(":");if(G===-1)throw new N1(`--agents entry "${Z}" must be vendor:count`,"BAD_FLAG");let X=Z.slice(0,G);if(!a1.includes(X))throw new N1(`--agents vendor "${X}" must be one of ${a1.join(", ")}`,"BAD_FLAG");let Q=Number.parseInt(Z.slice(G+1),10);if(!Number.isInteger(Q)||Q<=0)throw new N1(`--agents count for "${X}" must be a positive integer`,"BAD_FLAG");if(z.length+Q>mG)throw new N1(`--agents requests ${z.length+Q} agents, exceeds the cap of ${mG}`,"BAD_FLAG");for(let H=0;H<Q;H++)z.push(X)}if(z.length===0)throw new N1('--agents specified no agents (e.g. "claude:2,codex:1")',"BAD_FLAG");return z}function VI(J){return{name:J.name,type:J.type,required:J.required??!1,...J.values?{values:J.values}:{},...J.default!==void 0?{default:J.default}:{},...J.placeholder?{placeholder:J.placeholder}:{},description:J.description}}function o9(J){return{name:J.name,group:t4(J.name),summary:J.summary,offline:J.offline??!1,flags:J.flags.map(VI)}}function zD(){return{apiVersion:a9,kobeVersion:J1,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:cG,verbs:dG.map((J)=>({name:J.name,group:t4(J.name),summary:J.summary})),globalFlags:JD,aliases:Jf}}function KI(J){let z=cG[J];if(!z)throw new N1(`unknown group: ${J}. Groups: ${Object.keys(cG).join(", ")}`,"BAD_FLAG");return{group:J,verbs:z.map((Y)=>{let Z=jQ(Y);return{name:Y,summary:Z?.summary??""}})}}function YD(){return{apiVersion:a9,kobeVersion:J1,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:JD,aliases:Jf,groups:cG,verbs:dG.map(o9)}}function UI(J){return J.flags.map((z)=>{let Y=z.type==="enum"&&z.values?z.values.join("|"):z.placeholder??(z.type==="bool"?"":"X"),Z=Y?`--${z.name} ${Y}`:`--${z.name}`;return z.required?Z:`[${Z}]`}).join(" ")}function ZD(J){let z=[`kobe api ${J.name} ${UI(J)}`.trimEnd(),"",J.summary,""],Y=Object.entries(Jf).find(([,Z])=>Z===J.name)?.[0];if(Y)z.push(`Alias: ${Y}`,"");if(J.flags.length>0){z.push("Flags:");for(let Z of J.flags){let G=Z.required?" (required)":"",X=Z.default!==void 0?` [default: ${Z.default}]`:"",Q=Z.type==="enum"&&Z.values?` {${Z.values.join("|")}}`:"";z.push(` --${Z.name}${Q}${G}${X} ${Z.description}`)}z.push("")}return z.push("Global: [--pretty] [--help]"),z.join(`
168
+ `)}function eH(){return["usage: kobe api <verb> [flags] [--pretty] [--help]","","Explore the full surface (names, flags, types) with: kobe api schema","","verbs:",...dG.map((z)=>` ${z.name.padEnd(18)} ${z.summary}`),"","Output is one JSON object on stdout (exit 0); errors are JSON on stderr (exit != 0)."].join(`
169
+ `)}function DI(J,z){let Y=z?JSON.stringify(J,null,2):JSON.stringify(J);process.stdout.write(`${Y}
170
+ `)}function KY(J,z,Y=1){process.stderr.write(`${JSON.stringify({error:{message:J,code:z}})}
171
+ `),process.exit(Y)}async function GD(J,z,Y,Z=LI){let G=z.worktreePath;if(!G)G=(await J.request("task.ensureWorktree",{taskId:z.id})).worktreePath;if(!G)throw new N1(`task ${z.id} has no worktree`,"NO_WORKTREE");let X=I1(z.id),Q=await Z.sessionExists(X);if(!Q){let j=await Z.resolveEngineLaunchInit(z.repo??"",G,{kind:"none"});if(!await Z.ensureSession({name:X,cwd:G,command:Z.engineCommand(z.vendor),taskId:z.id,vendor:z.vendor,repo:z.repo,launchInit:j}))throw new N1(`failed to start tmux session for ${z.id}`,"SESSION_FAILED")}let{pane:H,ready:f}=await Z.waitForEnginePane(X,!Q);if(!H)throw new N1(`no engine pane in session ${X}`,"NO_ENGINE_PANE");return await Z.pasteAndSubmit(H,Y),{session:X,pane:H,started:!Q,engineReady:f}}async function FI(J){let z=null,Y=J.onChannel("active-task",(Z)=>{z=Z.taskId});try{await J.subscribe()}finally{Y()}return z}function lJ(J){if(!J.client)throw new N1("daemon required","BAD_DAEMON");return J.client}async function yz(J,z,Y){return lJ(J).request(z,Y)}async function MI(J){let z=J.args.str("title"),Y=J.args.str("body");if(z===void 0&&Y===void 0)throw new N1("issue-update requires --title and/or --body","MISSING_FLAG");return yz(J,"issue.mutate",{repoRoot:J.args.requirePath("repo"),op:{type:"update",id:J.args.int("id"),title:z,body:Y}})}async function OI(J){let z=lJ(J),{args:Y,runtime:Z}=J,X={repo:await Z.resolveRepoRoot(Y.requirePath("repo"))},Q=Y.str("title");if(Q)X.title=Q;let H=Y.str("branch");if(H)X.branch=H;let f=Y.str("base-branch");if(f)X.baseRef=f;let j=Y.vendor()??await Z.defaultVendor();if(j)X.vendor=j;let V=await z.request("task.create",X),B=V.taskId;await z.request("task.setActive",{taskId:B});let K=Y.enumOf("status");if(K)await z.request("task.status",{taskId:B,status:K});let L=Y.bool("pin");if(L!==void 0)await z.request("task.pin",{taskId:B,pinned:L});let A=V.task;if(K||L!==void 0)A=(await z.request("task.get",{taskId:B})).task;let O=Y.str("prompt");if(!O)return{taskId:B,task:A,started:!1};let R=await J.runtime.deliverPrompt(z,{id:B,worktreePath:A.worktreePath,vendor:A.vendor,repo:A.repo},O);return A=(await z.request("task.get",{taskId:B})).task,{taskId:B,task:A,started:R.started,engineReady:R.engineReady,session:R.session}}async function AI(J){let z=lJ(J),Y=J.args.require("prompt"),Z=J.args.str("task-id");if(!Z){let Q=await FI(z);if(!Q)throw new N1("no --task-id given and no active task \u2014 open a task first or pass --task-id","MISSING_TARGET");Z=Q}let G=await z.request("task.get",{taskId:Z}),X=await J.runtime.deliverPrompt(z,{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 RI(J){let z=lJ(J),Y=J.args.require("task-id"),Z=J.args.require("prompt");return await z.request("session.deliver",{taskId:Y,text:Z,source:"dispatcher"}),{ok:!0,taskId:Y,routed:"session.deliver"}}async function gI(J){let z=lJ(J),Y=J.args.require("task-id"),Z=J.args.require("text");return await z.request("note.file",{taskId:Y,text:Z})}async function NI(J){let z=lJ(J),Y=J.args.require("task-id"),Z=await z.request("task.get",{taskId:Y}),G=await J.runtime.isTaskRunning(Y);return{task:Z.task,running:G}}async function CI(J){return lJ(J).request("task.list")}async function kI(J){let z=lJ(J),Z=J.args.bool("none")?null:J.args.require("task-id");return await z.request("task.setActive",{taskId:Z}),{ok:!0,activeTaskId:Z}}async function bI(J){let z=lJ(J),Y=J.args.require("task-id"),Z=J.args.bool("archived")??!0,G=await z.request("task.archive",{taskId:Y,archived:Z});if(Z)await J.runtime.tearDownSession(Y);return G}async function SI(J){let z=lJ(J),Y=J.args.require("task-id"),Z=J.args.bool("force")??!1,G=await z.request("task.delete",{taskId:Y,force:Z});return await J.runtime.tearDownSession(Y),G}async function II(J){let z=lJ(J),{args:Y}=J,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 z.request("worktree.adopt",Z)}async function yI(J){let z=lJ(J),{args:Y,runtime:Z}=J,G=await Z.resolveRepoRoot(Y.requirePath("repo")),X=Y.require("prompt"),Q=Y.str("title"),H=Y.str("base-branch"),f=Y.str("agents"),j=await Z.defaultVendor(),V=f?e4(f):Array(Y.int("count")??1).fill(Y.vendor()??j??"claude");if(V.length>mG)throw new N1(`fan-out of ${V.length} exceeds the cap of ${mG} \u2014 spawn in batches`,"BAD_FLAG");let B=[];for(let K of V){let L={repo:G,vendor:K};if(Q)L.title=Q;if(H)L.baseRef=H;let A=await z.request("task.create",L),O=await J.runtime.deliverPrompt(z,{id:A.taskId,worktreePath:A.task.worktreePath,vendor:K,repo:A.task.repo},X);B.push({taskId:A.taskId,vendor:K,started:O.started,engineReady:O.engineReady,session:O.session})}return{count:B.length,tasks:B}}async function TI(J){let z=lJ(J),{args:Y,runtime:Z}=J,G=Y.str("task-ids"),X=Y.path("repo"),Q;if(G)Q=G.split(",").map((f)=>f.trim()).filter(Boolean);else if(X){let f=await Z.resolveRepoRoot(X),{tasks:j}=await z.request("task.list");Q=[];for(let V of j){if(V.archived)continue;if(await Z.resolveRepoRoot(V.repo)===f)Q.push(V.id)}}else throw new N1("collect needs --task-ids id1,id2 or --repo PATH","MISSING_TARGET");let H=[];for(let f of Q){let{task:j}=await z.request("task.get",{taskId:f}),V=await Z.isTaskRunning(f),B=j.worktreePath?await Z.readWorktreeChanges(j.worktreePath):{added:0,deleted:0};H.push({taskId:j.id,title:j.title,branch:j.branch,worktreePath:j.worktreePath,vendor:j.vendor,status:j.status,running:V,changes:B})}return{tasks:H}}async function xI(J){return{ok:!0,discussion:vG({title:J.args.require("title"),body:J.args.require("body"),categorySlug:J.args.str("category")})}}function XD(J,z,Y,Z){return{args:new r9(J,z),client:Y,runtime:Z}}async function uI(J,z,Y){let Z=jQ(J);if(!Z)throw new N1(`unknown verb: ${J}`,"BAD_VERB");let G=new Set(Z.flags.filter((Q)=>Q.type==="bool").map((Q)=>Q.name)),X=_9(z,G);return p9(Z,X.flags),Z.handler(XD(Z,X.flags,Y.client,Y.runtime??s9))}async function EI(J){let[z,...Y]=J;if(!z||z==="--help"||z==="-h"||z==="help"){if(!z)KY(eH(),"MISSING_VERB",2);process.stdout.write(`${eH()}
172
+ `);return}let Z=jQ(z);if(!Z)KY(`unknown verb: ${z}
173
+ ${eH()}`,"BAD_VERB",2);let G=new Set(Z.flags.filter((H)=>H.type==="bool").map((H)=>H.name)),X;try{X=_9(Y,G)}catch(H){if(H instanceof N1)KY(H.message,H.code,2);KY(H instanceof Error?H.message:String(H),"BAD_FLAG",2)}if(X.help){process.stdout.write(`${ZD(Z)}
174
+ `);return}try{p9(Z,X.flags)}catch(H){if(H instanceof N1)KY(H.message,H.code,2);KY(H instanceof Error?H.message:String(H),"BAD_FLAG",2)}let Q=null;if(!Z.offline)try{Q=await p4()}catch(H){KY(`could not reach or start the kobe daemon: ${H instanceof Error?H.message:String(H)}`,"BAD_DAEMON",2)}try{let H=await Z.handler(XD(Z,X.flags,Q?.client??null,s9));DI(H,X.pretty)}catch(H){if(H instanceof N1)KY(H.message,H.code,1);KY(H instanceof Error?H.message:String(H),"RPC_ERROR",1)}finally{Q?.close()}}var a9=2,mG=10,s4,jI,N1,L1,Jf,cG,dG,WI,JD,LI,s9;var qD=C(()=>{Yz();tH();c1();rq();_1();NJ();r4();s4=["backlog","in_progress","in_review","done","canceled","error"],jI=["open","doing","hold","done"];N1=class N1 extends Error{code;constructor(J,z){super(J);this.code=z}};L1={repo:(J=!0)=>({name:"repo",type:"string",required:J,placeholder:"PATH",description:"Repo root (git toplevel). Relative paths resolve against $PWD."}),taskId:(J=!0)=>({name:"task-id",type:"string",required:J,placeholder:"ID",description:"Target task id (from `list` / `add`)."}),vendor:()=>({name:"vendor",type:"enum",values:a1,placeholder:"V",description:"Engine vendor for the task."}),title:()=>({name:"title",type:"string",placeholder:"T",description:"Human task title."}),prompt:(J,z)=>({name:"prompt",type:"string",required:J,placeholder:"TEXT",description:z})},Jf={"spawn-task":"add"},cG={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"]};dG=[{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:BI},{name:"list",summary:"List all tasks (incl. archived). Returns { tasks }.",flags:[],handler:CI},{name:"get-task",summary:"Read one task's metadata. `.running` = its tmux session is live.",flags:[L1.taskId()],handler:NI},{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:[L1.repo(),L1.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."},L1.vendor(),{name:"status",type:"enum",values:s4,default:"backlog",description:"Initial lifecycle status."},{name:"pin",type:"bool",description:"Pin the task to the top of the sidebar."},L1.prompt(!1,"Optional first message \u2014 when set, materializes the worktree, starts the engine, and pastes it.")],handler:OI},{name:"fan-out",summary:`Spawn N tasks of ONE prompt in a single call (parallel attempts). Capped at ${mG}.`,flags:[L1.repo(),L1.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)."},L1.vendor(),L1.title(),{name:"base-branch",type:"string",placeholder:"B",description:"Base ref for every worktree."}],handler:yI},{name:"send",summary:"Paste a follow-up prompt into a task's running engine (one full turn). Defaults to the active task.",flags:[L1.taskId(!1),L1.prompt(!0,"Text pasted + submitted into the engine pane.")],handler:AI},{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:[L1.taskId(!0),L1.prompt(!0,"Text delivered into the task's engine session.")],handler:RI},{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:[L1.taskId(!0),{name:"text",type:"string",required:!0,placeholder:"TEXT",description:"One line: the verified conclusion another session could act on."}],handler:gI},{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:$9,placeholder:"SLUG",description:"Discussion category slug."}],offline:!0,handler:xI},{name:"issue-list",summary:"List daemon-owned issues for a repo.",flags:[L1.repo()],handler:(J)=>yz(J,"issue.list",{repoRoot:J.args.requirePath("repo")})},{name:"issue-create",summary:"Create a daemon-owned issue for a repo.",flags:[L1.repo(),{name:"title",type:"string",required:!0,placeholder:"T",description:"Issue title."},{name:"body",type:"string",placeholder:"TEXT",description:"Issue body."}],handler:(J)=>yz(J,"issue.mutate",{repoRoot:J.args.requirePath("repo"),op:{type:"create",title:J.args.require("title"),body:J.args.str("body")}})},{name:"issue-set-status",summary:"Set a daemon-owned issue's status.",flags:[L1.repo(),{name:"id",type:"int",required:!0,placeholder:"N",description:"Issue id."},{name:"status",type:"enum",required:!0,values:jI,description:"New issue status."}],handler:(J)=>yz(J,"issue.mutate",{repoRoot:J.args.requirePath("repo"),op:{type:"setStatus",id:J.args.int("id"),status:J.args.requireEnum("status")}})},{name:"issue-update",summary:"Update a daemon-owned issue's title and/or body.",flags:[L1.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:MI},{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."},L1.repo(!1)],handler:TI},{name:"rename",summary:"Set a task's title.",flags:[L1.taskId(),{name:"title",type:"string",required:!0,placeholder:"T",description:"New title."}],handler:(J)=>yz(J,"task.rename",{taskId:J.args.require("task-id"),title:J.args.require("title")})},{name:"set-branch",summary:"Rename a task's branch (git branch -m if materialized, else recorded).",flags:[L1.taskId(),{name:"branch",type:"string",required:!0,placeholder:"B",description:"New branch name."}],handler:(J)=>yz(J,"task.setBranch",{taskId:J.args.require("task-id"),branch:J.args.require("branch")})},{name:"set-vendor",summary:"Change a task's engine vendor (takes effect on next session rebuild).",flags:[L1.taskId(),{...L1.vendor(),required:!0}],handler:(J)=>yz(J,"task.setVendor",{taskId:J.args.require("task-id"),vendor:J.args.requireEnum("vendor")})},{name:"set-status",summary:"Set a task's lifecycle status.",flags:[L1.taskId(),{name:"status",type:"enum",required:!0,values:s4,description:"New status."}],handler:(J)=>yz(J,"task.status",{taskId:J.args.require("task-id"),status:J.args.requireEnum("status")})},{name:"archive",summary:"Archive (or with --archived=false, unarchive) a task. Non-destructive: worktree/branch/history stay.",flags:[L1.taskId(),{name:"archived",type:"bool",default:"true",description:"true to archive, false to unarchive."}],handler:bI},{name:"pin",summary:"Pin (or with --pinned=false, unpin) a task to the top of the sidebar.",flags:[L1.taskId(),{name:"pinned",type:"bool",default:"true",description:"true to pin, false to unpin."}],handler:(J)=>yz(J,"task.pin",{taskId:J.args.require("task-id"),pinned:J.args.bool("pinned")??!0})},{name:"set-active",summary:"Set the shared active task (the focus every Tasks pane highlights). Pass --none to clear.",flags:[L1.taskId(!1),{name:"none",type:"bool",description:"Clear the active task instead of setting one."}],handler:kI},{name:"ensure-worktree",summary:"Materialize a task's git worktree on disk now (without starting an engine). Returns { worktreePath }.",flags:[L1.taskId()],handler:(J)=>yz(J,"task.ensureWorktree",{taskId:J.args.require("task-id")})},{name:"delete",summary:"Permanently remove a task (and its worktree). DESTRUCTIVE \u2014 prefer `archive`. Needs --force on a dirty worktree.",flags:[L1.taskId(),{name:"force",type:"bool",description:"Delete even with uncommitted changes."}],handler:SI},{name:"discover-adoptable",summary:"List existing git worktrees in a repo not yet tracked as kobe tasks. Returns { worktrees }.",flags:[L1.repo()],handler:(J)=>yz(J,"worktree.discoverAdoptable",{repo:J.args.requirePath("repo")})},{name:"adopt",summary:"Import an existing git worktree as a kobe task. Returns { task }.",flags:[L1.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)."},L1.vendor(),L1.title()],handler:II}],WI=dG.map((J)=>J.name);JD=[{name:"pretty",type:"bool",description:"Pretty-print stdout JSON."},{name:"help",type:"bool",description:"Show usage for the verb and exit."}];LI={sessionExists:K1,ensureSession:async(J)=>(await Promise.resolve().then(() => (zJ(),EJ))).ensureSession(J),waitForEnginePane:TX,pasteAndSubmit:xX,resolveEngineLaunchInit:async(J,z,Y)=>(await Promise.resolve().then(() => (yG(),cH))).resolveEngineLaunchInit(J,z,Y),engineCommand:cJ};s9={isTaskRunning:(J)=>K1(I1(J)),deliverPrompt:(J,z,Y)=>GD(J,z,Y),resolveRepoRoot:async(J)=>(await Promise.resolve().then(() => (C1(),zY))).resolveMainRepoRoot(J),defaultVendor:async()=>{let{getPersistedString:J}=await Promise.resolve().then(() => (C1(),zY)),z=J("lastSelectedVendor")?.trim();return z?z:void 0},readWorktreeChanges:async(J)=>(await Promise.resolve().then(() => (xG(),Y4))).readWorktreeChanges(J),tearDownSession:async(J)=>{let z=I1(J);await nz(z).catch(()=>{}),await Gz(z).catch(()=>{})}}});var BD={};q1(BD,{updatePlan:()=>HD,runUpdateSubcommand:()=>PI,parseUpdateArgs:()=>fD});import{spawnSync as wI}from"child_process";function HD(){return{command:"sh",args:["-c",oz],display:oz}}function fD(J){let z=!1;for(let Y=0;Y<J.length;Y+=1){let Z=J[Y];if(Z==="--help"||Z==="-h"||Z==="help")return{help:!0,dryRun:z};if(Z==="--dry-run"){z=!0;continue}process.stderr.write(`kobe update: unknown argument "${Z}"
175
+
176
+ `),jD(process.stderr),process.exit(2)}return{help:!1,dryRun:z}}function jD(J){J.write(["Usage: kobe update [--dry-run]","","Runs kobe's GitHub-hosted update script.","","Default command:",` ${oz}`,"","Script URL:",` ${dQ}`,"","Manual fallback:",` ${of()}`,"","Examples:"," kobe update"," kobe update --dry-run",""].join(`
177
+ `))}async function PI(J,z){let Y={spawn:z?.spawn??wI,stdout:z?.stdout??process.stdout,stderr:z?.stderr??process.stderr,exit:z?.exit??((Q)=>process.exit(Q))},Z=fD(J);if(Z.help){jD(Y.stdout);return}let G=HD();if(Y.stdout.write(`kobe ${J1} -> latest
178
178
  `),Y.stdout.write(`running: ${G.display}
179
179
  `),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}
180
- `),Y.exit(1);Y.exit(X.status??1)}var a4=C(()=>{AJ()});var o4={};q1(o4,{runThemeSubcommand:()=>CI});import{existsSync as p4,mkdirSync as KI,readFileSync as UI,readdirSync as DI,unlinkSync as LI,writeFileSync as FI}from"fs";import{basename as _4,join as rB,resolve as MI}from"path";function WY(J){process.stderr.write(`kobe theme: ${J}
180
+ `),Y.exit(1);Y.exit(X.status??1)}var WD=C(()=>{NJ()});var DD={};q1(DD,{runThemeSubcommand:()=>pI});import{existsSync as KD,mkdirSync as hI,readFileSync as vI,readdirSync as mI,unlinkSync as cI,writeFileSync as dI}from"fs";import{basename as VD,join as e9,resolve as nI}from"path";function UY(J){process.stderr.write(`kobe theme: ${J}
181
181
  `),process.exit(1)}function $Y(J){process.stderr.write(`kobe theme: ${J}
182
182
 
183
- `),r4(),process.exit(2)}function OI(){let J=[];J.push("bundled:");for(let Z of[...pB].sort())J.push(` ${Z} [built-in]`);let z=OG(),Y=[];try{Y=DI(z).filter((Z)=>Z.endsWith(".json")).sort()}catch{}if(J.push(""),J.push(`user (${z}):`),Y.length===0)J.push(" (none)");else for(let Z of Y){let G=Z.slice(0,-5),X=rB(z,Z),q=pB.includes(G)?" (overrides built-in)":"";J.push(` ${G}${q} ${X}`)}process.stdout.write(`${J.join(`
183
+ `),UD(),process.exit(2)}function iI(){let J=[];J.push("bundled:");for(let Z of[...t9].sort())J.push(` ${Z} [built-in]`);let z=OG(),Y=[];try{Y=mI(z).filter((Z)=>Z.endsWith(".json")).sort()}catch{}if(J.push(""),J.push(`user (${z}):`),Y.length===0)J.push(" (none)");else for(let Z of Y){let G=Z.slice(0,-5),X=e9(z,Z),Q=t9.includes(G)?" (overrides built-in)":"";J.push(` ${G}${Q} ${X}`)}process.stdout.write(`${J.join(`
184
184
  `)}
185
- `)}async function AI(J){if(/^https?:\/\//i.test(J)){let X;try{X=await fetch(J)}catch(V){WY(`failed to fetch ${J}: ${V instanceof Error?V.message:String(V)}`)}if(!X.ok)WY(`failed to fetch ${J}: HTTP ${X.status} ${X.statusText}`);let q=await X.text(),H=J.split(/[?#]/)[0]??J,f=_4(H)||"theme.json",j=f.endsWith(".json")?f.slice(0,-5):f;return{text:q,defaultName:j}}let z=MI(process.cwd(),J),Y;try{Y=UI(z,"utf8")}catch(X){WY(`failed to read ${z}: ${X instanceof Error?X.message:String(X)}`)}let Z=_4(z),G=Z.endsWith(".json")?Z.slice(0,-5):Z;return{text:Y,defaultName:G}}function RI(J){let z=null,Y,Z=!1;for(let G=0;G<J.length;G+=1){let X=J[G];if(X==="--force"||X==="-f"){Z=!0;continue}if(X==="--name"||X==="-n"){let q=J[G+1];if(q===void 0)$Y("--name requires a value");Y=q,G+=1;continue}if(X.startsWith("--name=")){Y=X.slice(7);continue}if(X.startsWith("--"))$Y(`unknown flag: ${X}`);if(z===null){z=X;continue}$Y(`unexpected positional argument: ${X}`)}if(z===null)$Y("missing <source> (URL or path to theme JSON)");return{source:z,opts:{name:Y,force:Z}}}async function gI(J){let{source:z,opts:Y}=RI(J),{text:Z,defaultName:G}=await AI(z),X;try{X=JSON.parse(Z)}catch(V){WY(`source is not valid JSON: ${V instanceof Error?V.message:String(V)}`)}let q=ZH(X);if(!q.ok)WY(`source is not a valid kobe theme: ${q.reason}`);let H=Y.name??G;if(!H||!/^[a-zA-Z0-9._-]+$/.test(H))WY(`invalid theme name "${H}" (use letters, digits, '.', '_', '-')`);let f=OG();KI(f,{recursive:!0});let j=rB(f,`${H}.json`);if(p4(j)&&!Y.force)WY(`${j} already exists (pass --force to overwrite)`);FI(j,`${JSON.stringify(q.theme,null,2)}
185
+ `)}async function lI(J){if(/^https?:\/\//i.test(J)){let X;try{X=await fetch(J)}catch(V){UY(`failed to fetch ${J}: ${V instanceof Error?V.message:String(V)}`)}if(!X.ok)UY(`failed to fetch ${J}: HTTP ${X.status} ${X.statusText}`);let Q=await X.text(),H=J.split(/[?#]/)[0]??J,f=VD(H)||"theme.json",j=f.endsWith(".json")?f.slice(0,-5):f;return{text:Q,defaultName:j}}let z=nI(process.cwd(),J),Y;try{Y=vI(z,"utf8")}catch(X){UY(`failed to read ${z}: ${X instanceof Error?X.message:String(X)}`)}let Z=VD(z),G=Z.endsWith(".json")?Z.slice(0,-5):Z;return{text:Y,defaultName:G}}function $I(J){let z=null,Y,Z=!1;for(let G=0;G<J.length;G+=1){let X=J[G];if(X==="--force"||X==="-f"){Z=!0;continue}if(X==="--name"||X==="-n"){let Q=J[G+1];if(Q===void 0)$Y("--name requires a value");Y=Q,G+=1;continue}if(X.startsWith("--name=")){Y=X.slice(7);continue}if(X.startsWith("--"))$Y(`unknown flag: ${X}`);if(z===null){z=X;continue}$Y(`unexpected positional argument: ${X}`)}if(z===null)$Y("missing <source> (URL or path to theme JSON)");return{source:z,opts:{name:Y,force:Z}}}async function aI(J){let{source:z,opts:Y}=$I(J),{text:Z,defaultName:G}=await lI(z),X;try{X=JSON.parse(Z)}catch(V){UY(`source is not valid JSON: ${V instanceof Error?V.message:String(V)}`)}let Q=GH(X);if(!Q.ok)UY(`source is not a valid kobe theme: ${Q.reason}`);let H=Y.name??G;if(!H||!/^[a-zA-Z0-9._-]+$/.test(H))UY(`invalid theme name "${H}" (use letters, digits, '.', '_', '-')`);let f=OG();hI(f,{recursive:!0});let j=e9(f,`${H}.json`);if(KD(j)&&!Y.force)UY(`${j} already exists (pass --force to overwrite)`);dI(j,`${JSON.stringify(Q.theme,null,2)}
186
186
  `,"utf8"),process.stdout.write(`installed theme "${H}" -> ${j}
187
- `)}function NI(J){let z=J[0];if(!z)$Y("missing <name>");if(J.length>1)$Y(`unexpected extra arguments after "${z}"`);if(pB.includes(z))WY(`"${z}" is a built-in theme and cannot be removed`);let Y=rB(OG(),`${z}.json`);if(!p4(Y))WY(`no user theme named "${z}" (looked for ${Y})`);LI(Y),process.stdout.write(`removed theme "${z}" (${Y})
188
- `)}function r4(){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: ${OG()}`,"Schema: https://raw.githubusercontent.com/sma1lboy/kobe/main/packages/kobe/src/tui/context/theme/theme.schema.json",""].join(`
189
- `))}async function CI(J){let[z,...Y]=J;if(!z||z==="--help"||z==="-h"||z==="help"){if(r4(),!z)process.exit(2);return}if(z==="list"||z==="ls"){if(Y.length>0)$Y(`"${z}" takes no arguments`);OI();return}if(z==="add"){await gI(Y);return}if(z==="remove"||z==="rm"){NI(Y);return}$Y(`unknown action "${z}" (try "list", "add", or "remove")`)}var pB;var s4=C(()=>{t1();GH();Fj();pB=["claude","conductor","dracula","nord","opencode","osaka-jade","tokyonight"]});var zD={};q1(zD,{runFeedbackSubcommand:()=>bI,parseFeedbackArgs:()=>JD});import{readFileSync as t4}from"fs";function aY(J){process.stderr.write(`kobe feedback: ${J}
187
+ `)}function _I(J){let z=J[0];if(!z)$Y("missing <name>");if(J.length>1)$Y(`unexpected extra arguments after "${z}"`);if(t9.includes(z))UY(`"${z}" is a built-in theme and cannot be removed`);let Y=e9(OG(),`${z}.json`);if(!KD(Y))UY(`no user theme named "${z}" (looked for ${Y})`);cI(Y),process.stdout.write(`removed theme "${z}" (${Y})
188
+ `)}function UD(){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: ${OG()}`,"Schema: https://raw.githubusercontent.com/sma1lboy/kobe/main/packages/kobe/src/tui/context/theme/theme.schema.json",""].join(`
189
+ `))}async function pI(J){let[z,...Y]=J;if(!z||z==="--help"||z==="-h"||z==="help"){if(UD(),!z)process.exit(2);return}if(z==="list"||z==="ls"){if(Y.length>0)$Y(`"${z}" takes no arguments`);iI();return}if(z==="add"){await aI(Y);return}if(z==="remove"||z==="rm"){_I(Y);return}$Y(`unknown action "${z}" (try "list", "add", or "remove")`)}var t9;var LD=C(()=>{p1();XH();RB();t9=["claude","conductor","dracula","nord","opencode","osaka-jade","tokyonight"]});var AD={};q1(AD,{runFeedbackSubcommand:()=>oI,parseFeedbackArgs:()=>OD});import{readFileSync as FD}from"fs";function aY(J){process.stderr.write(`kobe feedback: ${J}
190
190
 
191
- ${e4}
192
- `),process.exit(2)}function kI(J){if(J==="-")return t4(0,"utf8");return t4(J,"utf8")}function JD(J){let z={help:!1};for(let Y=0;Y<J.length;Y++){let Z=J[Y];if(Z==="--help"||Z==="-h"||Z==="help")return{...z,help:!0};if(Z==="--title"){if(z.title=J[++Y],z.title===void 0)aY("--title requires a value");continue}if(Z==="--body"){if(z.body=J[++Y],z.body===void 0)aY("--body requires a value");continue}if(Z==="--body-file"){if(z.bodyFile=J[++Y],z.bodyFile===void 0)aY("--body-file requires a value");continue}if(Z==="--category"){if(z.category=J[++Y],z.category===void 0)aY("--category requires a value");continue}aY(`unexpected argument "${Z}"`)}return z}async function bI(J){let z=JD(J);if(z.help){process.stdout.write(`${e4}
193
- `);return}if(!z.title)aY("--title is required");if(z.body&&z.bodyFile)aY("pass either --body or --body-file, not both");let Y=z.bodyFile?kI(z.bodyFile):z.body;if(!Y)aY("--body or --body-file is required");let Z=vG({title:z.title,body:Y,categorySlug:z.category});console.log(`created Discussion #${Z.number}: ${Z.url}`)}var e4;var YD=C(()=>{sH();e4=["Usage: kobe feedback --title <text> (--body <text> | --body-file <path>) [--category <slug>]","","Create a GitHub Discussion in the kobe repository using the GitHub CLI.","","Requires:"," gh auth login","","Options:"," --title <text> Discussion title"," --body <text> Discussion body"," --body-file <path> Read the Discussion body from a file; use - for stdin"," --category <slug> Discussion category slug (default: feedback)"," -h, --help Print this help",""].join(`
194
- `)});import{homedir as SI}from"os";async function ZD(J={}){let z=J.homeDir??process.env.KOBE_HOME_DIR??SI(),Y=new PG({homeDir:z});await Y.load();let Z=new _H,G=new PQ({store:Y,worktrees:Z});return{homeDir:z,orchestrator:G,store:Y,worktrees:Z,async close(){G.dispose()}}}var GD=C(()=>{kX();Qq();mB()});var qD={};q1(qD,{runDaemonSubcommand:()=>yI});function XD(J){J.write(["Usage: kobe daemon <command>","","Commands:"," status Print the running daemon's status JSON (default)"," start Run the daemon in the foreground (this process becomes it)"," stop Ask the running daemon to shut down"," restart Stop the daemon (graceful \u2192 SIGTERM \u2192 SIGKILL) and respawn it",""].join(`
195
- `))}function II(){let J=process.env.KOBE_DAEMON_WEB_PORT?.trim();if(J==="0"||J==="off"||J==="false")return;let z=J?Number.parseInt(J,10):5174;return Number.isFinite(z)&&z>0?z:5174}async function yI(J){let[z="status"]=J,Y=xz(),Z=ez();if(z==="--help"||z==="-h"||z==="help"){XD(process.stdout);return}if(z==="status"){let H=new rJ(Y);try{let f=await H.request("daemon.status");console.log(JSON.stringify(f,null,2))}catch{let f=await uG(Z);if(f)console.log(`kobe daemon: no daemon socket at ${Y} (stale pidfile pid=${f})`);else console.log(`kobe daemon: no daemon running at ${Y}`);process.exitCode=1}finally{H.close()}return}if(z==="stop"){let H=new rJ(Y);try{await H.request("daemon.stop"),console.log("kobe daemon: stop requested")}catch{console.log(`kobe daemon: no daemon running at ${Y}`)}finally{H.close()}return}if(z==="restart"){await EG(Y,Z),(await kz()).close(),console.log(`kobe daemon: restarted, listening on ${Y}`);return}if(z!=="start")process.stderr.write(`kobe daemon: unknown command "${z}"
191
+ ${MD}
192
+ `),process.exit(2)}function rI(J){if(J==="-")return FD(0,"utf8");return FD(J,"utf8")}function OD(J){let z={help:!1};for(let Y=0;Y<J.length;Y++){let Z=J[Y];if(Z==="--help"||Z==="-h"||Z==="help")return{...z,help:!0};if(Z==="--title"){if(z.title=J[++Y],z.title===void 0)aY("--title requires a value");continue}if(Z==="--body"){if(z.body=J[++Y],z.body===void 0)aY("--body requires a value");continue}if(Z==="--body-file"){if(z.bodyFile=J[++Y],z.bodyFile===void 0)aY("--body-file requires a value");continue}if(Z==="--category"){if(z.category=J[++Y],z.category===void 0)aY("--category requires a value");continue}aY(`unexpected argument "${Z}"`)}return z}async function oI(J){let z=OD(J);if(z.help){process.stdout.write(`${MD}
193
+ `);return}if(!z.title)aY("--title is required");if(z.body&&z.bodyFile)aY("pass either --body or --body-file, not both");let Y=z.bodyFile?rI(z.bodyFile):z.body;if(!Y)aY("--body or --body-file is required");let Z=vG({title:z.title,body:Y,categorySlug:z.category});console.log(`created Discussion #${Z.number}: ${Z.url}`)}var MD;var RD=C(()=>{tH();MD=["Usage: kobe feedback --title <text> (--body <text> | --body-file <path>) [--category <slug>]","","Create a GitHub Discussion in the kobe repository using the GitHub CLI.","","Requires:"," gh auth login","","Options:"," --title <text> Discussion title"," --body <text> Discussion body"," --body-file <path> Read the Discussion body from a file; use - for stdin"," --category <slug> Discussion category slug (default: feedback)"," -h, --help Print this help",""].join(`
194
+ `)});import{homedir as sI}from"os";async function gD(J={}){let z=J.homeDir??process.env.KOBE_HOME_DIR??sI(),Y=new PG({homeDir:z});await Y.load();let Z=new pH,G=new hq({store:Y,worktrees:Z});return{homeDir:z,orchestrator:G,store:Y,worktrees:Z,async close(){G.dispose()}}}var ND=C(()=>{kX();qQ();i9()});var kD={};q1(kD,{runDaemonSubcommand:()=>eI});function CD(J){J.write(["Usage: kobe daemon <command>","","Commands:"," status Print the running daemon's status JSON (default)"," start Run the daemon in the foreground (this process becomes it)"," stop Ask the running daemon to shut down"," restart Stop the daemon (graceful \u2192 SIGTERM \u2192 SIGKILL) and respawn it",""].join(`
195
+ `))}function tI(){let J=process.env.KOBE_DAEMON_WEB_PORT?.trim();if(J==="0"||J==="off"||J==="false")return;let z=J?Number.parseInt(J,10):5174;return Number.isFinite(z)&&z>0?z:5174}async function eI(J){let[z="status"]=J,Y=Ez(),Z=YY();if(z==="--help"||z==="-h"||z==="help"){CD(process.stdout);return}if(z==="status"){let H=new tJ(Y);try{let f=await H.request("daemon.status");console.log(JSON.stringify(f,null,2))}catch{let f=await uG(Z);if(f)console.log(`kobe daemon: no daemon socket at ${Y} (stale pidfile pid=${f})`);else console.log(`kobe daemon: no daemon running at ${Y}`);process.exitCode=1}finally{H.close()}return}if(z==="stop"){let H=new tJ(Y);try{await H.request("daemon.stop"),console.log("kobe daemon: stop requested")}catch{console.log(`kobe daemon: no daemon running at ${Y}`)}finally{H.close()}return}if(z==="restart"){await EG(Y,Z),(await Sz()).close(),console.log(`kobe daemon: restarted, listening on ${Y}`);return}if(z!=="start")process.stderr.write(`kobe daemon: unknown command "${z}"
196
196
 
197
- `),XD(process.stderr),process.exit(2);u6();let G=await ZD(),X=await lU(G.orchestrator,{socketPath:Y,pidPath:Z,homeDir:G.homeDir,webPort:II(),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 QD=C(()=>{HX();RJ();lH();$Z();iH();GD()});import{existsSync as TI,readFileSync as xI}from"fs";import{homedir as uI}from"os";import{join as HD}from"path";function tB(J={}){return["skills","add",EI,"--skill","kobe","--agent",J.agent??Jf]}function zf(J={}){return`npx ${tB(J).join(" ")}`}function eB(J={}){let z=J.home??uI(),Y=J.cwd??process.cwd();return[HD(z,fD),HD(Y,fD)]}function wI(J){let z=J.match(/kobe-skill-version:\s*(\d+)/);return z?Number.parseInt(z[1],10):null}function Wq(J){let z=eB(J).find((G)=>TI(G));if(!z)return{installed:!1,installedVersion:null,currentVersion:oB,stale:!1};let Y=null;try{Y=wI(xI(z,"utf8"))}catch{Y=null}let Z=Y===null||Y<oB;return{installed:!0,installedVersion:Y,currentVersion:oB,stale:Z}}function jD(){let J=Wq();if(!J.installed){if(N1(sB)==="1")return;e1(sB,"1"),process.stderr.write(`
197
+ `),CD(process.stderr),process.exit(2);eU();let G=await gD(),X=await j4(G.orchestrator,{socketPath:Y,pidPath:Z,homeDir:G.homeDir,webPort:tI(),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 bD=C(()=>{HX();CJ();$H();$Z();lH();ND()});import{existsSync as Jy,readFileSync as zy}from"fs";import{homedir as Yy}from"os";import{join as SD}from"path";function Y8(J={}){return["skills","add",Zy,"--skill","kobe","--agent",J.agent??zf]}function Yf(J={}){return`npx ${Y8(J).join(" ")}`}function Z8(J={}){let z=J.home??Yy(),Y=J.cwd??process.cwd();return[SD(z,ID),SD(Y,ID)]}function Gy(J){let z=J.match(/kobe-skill-version:\s*(\d+)/);return z?Number.parseInt(z[1],10):null}function WQ(J){let z=Z8(J).find((G)=>Jy(G));if(!z)return{installed:!1,installedVersion:null,currentVersion:J8,stale:!1};let Y=null;try{Y=Gy(zy(z,"utf8"))}catch{Y=null}let Z=Y===null||Y<J8;return{installed:!0,installedVersion:Y,currentVersion:J8,stale:Z}}function yD(){let J=WQ();if(!J.installed){if(S1(z8)==="1")return;e1(z8,"1"),process.stderr.write(`
198
198
  kobe: the kobe agent skill isn't installed \u2014 install it so your coding agent can drive kobe via \`kobe api\`:
199
- ${Bq}
200
- (wraps \`${zf()}\`; check anytime with \`kobe doctor\`)
199
+ ${BQ}
200
+ (wraps \`${Yf()}\`; check anytime with \`kobe doctor\`)
201
201
 
202
- `);return}if(J.stale){let z=`${sB}:v${J.currentVersion}`;if(N1(z)==="1")return;e1(z,"1");let Y=J.installedVersion===null?"an older":`v${J.installedVersion}`;process.stderr.write(`
202
+ `);return}if(J.stale){let z=`${z8}:v${J.currentVersion}`;if(S1(z)==="1")return;e1(z,"1");let Y=J.installedVersion===null?"an older":`v${J.installedVersion}`;process.stderr.write(`
203
203
  kobe: your kobe agent skill is out of date (${Y}; this kobe wants v${J.currentVersion}) \u2014 refresh it so \`kobe api\` guidance matches:
204
- ${Bq}
204
+ ${BQ}
205
205
 
206
- `)}}var oB=2,fD=".claude/skills/kobe/SKILL.md",Bq="kobe skill install",EI="Sma1lboy/kobe",Jf="claude-code",sB="skillHintSeen";var Yf=C(()=>{A1()});var Zf={};q1(Zf,{runResetSubcommand:()=>pI,runReloadSubcommand:()=>rI,runDoctorSubcommand:()=>aI});import{existsSync as PI,readFileSync as VD,statSync as hI}from"fs";import{unlink as vI}from"fs/promises";import{join as KD}from"path";import{createInterface as mI}from"readline";function cI(J){try{return process.kill(J,0),!0}catch(z){return z.code==="EPERM"}}async function dI(J){let z=new rJ(J);try{return await z.request("daemon.status")}catch{return null}finally{z.close()}}function nI(J){let z=Math.floor(J/1000);if(z<60)return`${z}s`;let Y=Math.floor(z/60);if(Y<60)return`${Y}m ${z%60}s`;return`${Math.floor(Y/60)}h ${Y%60}m`}function iI(J){if(J<1024)return`${J} B`;if(J<1048576)return`${(J/1024).toFixed(1)} KB`;return`${(J/1048576).toFixed(1)} MB`}function J9(J){try{let z=hI(J);return`present (${iI(z.size)}, modified ${z.mtime.toISOString()})`}catch{return"absent"}}function UD(J){try{let z=JSON.parse(VD(J,"utf8"));return Array.isArray(z.tasks)?z.tasks.length:null}catch{return null}}function lI(J,z){try{return VD(J,"utf8").split(`
206
+ `)}}var J8=2,ID=".claude/skills/kobe/SKILL.md",BQ="kobe skill install",Zy="Sma1lboy/kobe",zf="claude-code",z8="skillHintSeen";var Zf=C(()=>{C1()});var Gf={};q1(Gf,{runResetSubcommand:()=>Ly,runReloadSubcommand:()=>Fy,runDoctorSubcommand:()=>Uy});import{existsSync as Xy,readFileSync as uD,statSync as Qy}from"fs";import{unlink as qy}from"fs/promises";import{join as ED}from"path";import{createInterface as Hy}from"readline";function fy(J){try{return process.kill(J,0),!0}catch(z){return z.code==="EPERM"}}async function jy(J){let z=new tJ(J);try{return await z.request("daemon.status")}catch{return null}finally{z.close()}}function By(J){let z=Math.floor(J/1000);if(z<60)return`${z}s`;let Y=Math.floor(z/60);if(Y<60)return`${Y}m ${z%60}s`;return`${Math.floor(Y/60)}h ${Y%60}m`}function Wy(J){if(J<1024)return`${J} B`;if(J<1048576)return`${(J/1024).toFixed(1)} KB`;return`${(J/1048576).toFixed(1)} MB`}function G8(J){try{let z=Qy(J);return`present (${Wy(z.size)}, modified ${z.mtime.toISOString()})`}catch{return"absent"}}function wD(J){try{let z=JSON.parse(uD(J,"utf8"));return Array.isArray(z.tasks)?z.tasks.length:null}catch{return null}}function Vy(J,z){try{return uD(J,"utf8").split(`
207
207
  `).filter((Z)=>Z.trim().length>0).slice(-z).join(`
208
- `)}catch{return""}}async function z9(J){let z=Bun.spawn(bZ(...J),{stdin:"ignore",stdout:"pipe",stderr:"ignore"}),[Y,Z]=await Promise.all([new Response(z.stdout).text().catch(()=>""),z.exited]);return{code:Z,stdout:Y}}async function $I(){if(!await mz())return 0;let{code:J,stdout:z}=await z9(["list-sessions","-F","#{session_name}"]);if(J!==0)return 0;return z.split(`
209
- `).filter((Y)=>Y.trim().length>0).length}async function aI(J=[]){if(J.includes("--help")||J.includes("-h")||J.includes("help")){process.stdout.write(["Usage: kobe doctor","","Read-only diagnosis of the daemon / tmux / state. Takes no options.",""].join(`
208
+ `)}catch{return""}}async function X8(J){let z=Bun.spawn(bZ(...J),{stdin:"ignore",stdout:"pipe",stderr:"ignore"}),[Y,Z]=await Promise.all([new Response(z.stdout).text().catch(()=>""),z.exited]);return{code:Z,stdout:Y}}async function Ky(){if(!await dz())return 0;let{code:J,stdout:z}=await X8(["list-sessions","-F","#{session_name}"]);if(J!==0)return 0;return z.split(`
209
+ `).filter((Y)=>Y.trim().length>0).length}async function Uy(J=[]){if(J.includes("--help")||J.includes("-h")||J.includes("help")){process.stdout.write(["Usage: kobe doctor","","Read-only diagnosis of the daemon / tmux / state. Takes no options.",""].join(`
210
210
  `));return}let z=J.find((B)=>B.length>0);if(z!==void 0)process.stderr.write([`kobe doctor: unexpected argument "${z}"`,"","Usage: kobe doctor (read-only; takes no options)",""].join(`
211
- `)),process.exit(2);let Y=xz(),Z=ez(),G=rq(),X=KD(jJ(),"tasks.json"),q=_J(),H=["kobe doctor",` home: ${Tz()}`,` socket: ${Y}`,""],f=await dI(Y);if(f){let B=typeof f.daemonPid==="number"?f.daemonPid:"?",K=typeof f.uptimeMs==="number"?nI(f.uptimeMs):"?",L=typeof f.taskCount==="number"?f.taskCount:"?",A=typeof f.attachedClients==="number"?f.attachedClients:"?";H.push(`daemon: \u2713 running (pid ${B}, up ${K}, ${L} task(s), ${A} client(s))`);let O=typeof f.kobeVersion==="string"?f.kobeVersion:void 0;if(O&&O!==r0)H.push(` \u26A0 stale build: daemon is v${O}, you launched v${r0}`),H.push(" \u2192 run `kobe daemon restart`, then `kobe reload` in any open kobe sessions");else if(O)H.push(` build: v${O}`)}else{let B=await uG(Z);if(B&&cI(B))H.push(`daemon: \u2717 WEDGED \u2014 process alive (pid ${B}) but not accepting connections`),H.push(" \u2192 run `kobe reset` to kill it, then relaunch kobe");else if(B)H.push(`daemon: \u2717 not running (stale pidfile \u2192 pid ${B} is gone)`),H.push(" \u2192 harmless; relaunch kobe, or `kobe reset` to clear the stale pidfile");else H.push("daemon: \u2717 not running (no pidfile)");if(PI(Y))H.push(` orphan socket file present: ${Y}`);let K=lI(G,8);if(K){H.push(" last lines of daemon.log:");for(let L of K.split(`
212
- `))H.push(` \u2502 ${L}`)}}if(H.push(""),await mz())H.push(`tmux: ${await $I()} kobe session(s) on \`${Nz}\` socket`);else H.push("tmux: \u2717 not found on PATH (task sessions need tmux)");H.push("");let j=Wq();if(!j.installed)H.push("skill: \u2717 kobe agent skill not installed (optional \u2014 lets a coding agent drive `kobe api`)"),H.push(` \u2192 ${Bq}`);else if(j.stale){let B=j.installedVersion===null?"unstamped":`v${j.installedVersion}`;H.push(`skill: \u26A0 kobe agent skill out of date (${B}; this kobe wants v${j.currentVersion})`),H.push(` \u2192 ${Bq}`)}else H.push(`skill: \u2713 kobe agent skill installed (v${j.installedVersion})`);H.push("");let V=UD(X);H.push(`tasks.json: ${J9(X)}${V===null?"":` \u2014 ${V} task(s)`}`),H.push(`state.json: ${J9(q)}`),H.push(`daemon.log: ${J9(G)}`),console.log(H.join(`
213
- `))}async function _I(J){let z=mI({input:process.stdin,output:process.stdout});try{let Y=await new Promise((Z)=>z.question(J,Z));return/^y(es)?$/i.test(Y.trim())}finally{z.close()}}async function BD(J,z){try{await vI(J),console.log(` removed ${z} (${J})`)}catch(Y){if(Y.code==="ENOENT")console.log(` ${z}: already absent`);else console.error(` failed to remove ${z} (${J}): ${Y instanceof Error?Y.message:String(Y)}`)}}function WD(J){J.write(["Usage: kobe reset [--hard] [--yes]","","Recover a wedged install: stop the daemon (graceful \u2192 SIGTERM \u2192 SIGKILL),","remove its socket + pidfile, and kill all kobe tmux sessions.","Never touches your git worktrees.","","Options:"," --hard Also wipe the task index + UI state"," -y, --yes Skip the interactive confirmation"," -h, --help Print this help",""].join(`
214
- `))}async function pI(J){if(J.includes("--help")||J.includes("-h")||J.includes("help")){WD(process.stdout);return}let z=new Set(["--hard","--yes","-y"]),Y=J.find((B)=>!z.has(B));if(Y!==void 0)process.stderr.write(`kobe reset: unknown argument "${Y}"
211
+ `)),process.exit(2);let Y=Ez(),Z=YY(),G=rQ(),X=ED(XJ(),"tasks.json"),Q=oJ(),H=["kobe doctor",` home: ${rJ()}`,` socket: ${Y}`,""],f=await jy(Y);if(f){let B=typeof f.daemonPid==="number"?f.daemonPid:"?",K=typeof f.uptimeMs==="number"?By(f.uptimeMs):"?",L=typeof f.taskCount==="number"?f.taskCount:"?",A=typeof f.attachedClients==="number"?f.attachedClients:"?";H.push(`daemon: \u2713 running (pid ${B}, up ${K}, ${L} task(s), ${A} client(s))`);let O=typeof f.kobeVersion==="string"?f.kobeVersion:void 0;if(O&&O!==J1)H.push(` \u26A0 stale build: daemon is v${O}, you launched v${J1}`),H.push(" \u2192 run `kobe daemon restart`, then `kobe reload` in any open kobe sessions");else if(O)H.push(` build: v${O}`)}else{let B=await uG(Z);if(B&&fy(B))H.push(`daemon: \u2717 WEDGED \u2014 process alive (pid ${B}) but not accepting connections`),H.push(" \u2192 run `kobe reset` to kill it, then relaunch kobe");else if(B)H.push(`daemon: \u2717 not running (stale pidfile \u2192 pid ${B} is gone)`),H.push(" \u2192 harmless; relaunch kobe, or `kobe reset` to clear the stale pidfile");else H.push("daemon: \u2717 not running (no pidfile)");if(Xy(Y))H.push(` orphan socket file present: ${Y}`);let K=Vy(G,8);if(K){H.push(" last lines of daemon.log:");for(let L of K.split(`
212
+ `))H.push(` \u2502 ${L}`)}}if(H.push(""),await dz())H.push(`tmux: ${await Ky()} kobe session(s) on \`${kz}\` socket`);else H.push("tmux: \u2717 not found on PATH (task sessions need tmux)");H.push("");let j=WQ();if(!j.installed)H.push("skill: \u2717 kobe agent skill not installed (optional \u2014 lets a coding agent drive `kobe api`)"),H.push(` \u2192 ${BQ}`);else if(j.stale){let B=j.installedVersion===null?"unstamped":`v${j.installedVersion}`;H.push(`skill: \u26A0 kobe agent skill out of date (${B}; this kobe wants v${j.currentVersion})`),H.push(` \u2192 ${BQ}`)}else H.push(`skill: \u2713 kobe agent skill installed (v${j.installedVersion})`);H.push("");let V=wD(X);H.push(`tasks.json: ${G8(X)}${V===null?"":` \u2014 ${V} task(s)`}`),H.push(`state.json: ${G8(Q)}`),H.push(`daemon.log: ${G8(G)}`),console.log(H.join(`
213
+ `))}async function Dy(J){let z=Hy({input:process.stdin,output:process.stdout});try{let Y=await new Promise((Z)=>z.question(J,Z));return/^y(es)?$/i.test(Y.trim())}finally{z.close()}}async function TD(J,z){try{await qy(J),console.log(` removed ${z} (${J})`)}catch(Y){if(Y.code==="ENOENT")console.log(` ${z}: already absent`);else console.error(` failed to remove ${z} (${J}): ${Y instanceof Error?Y.message:String(Y)}`)}}function xD(J){J.write(["Usage: kobe reset [--hard] [--yes]","","Recover a wedged install: stop the daemon (graceful \u2192 SIGTERM \u2192 SIGKILL),","remove its socket + pidfile, and kill all kobe tmux sessions.","Never touches your git worktrees.","","Options:"," --hard Also wipe the task index + UI state"," -y, --yes Skip the interactive confirmation"," -h, --help Print this help",""].join(`
214
+ `))}async function Ly(J){if(J.includes("--help")||J.includes("-h")||J.includes("help")){xD(process.stdout);return}let z=new Set(["--hard","--yes","-y"]),Y=J.find((B)=>!z.has(B));if(Y!==void 0)process.stderr.write(`kobe reset: unknown argument "${Y}"
215
215
 
216
- `),WD(process.stderr),process.exit(2);let Z=J.includes("--hard"),G=J.includes("--yes")||J.includes("-y"),X=xz(),q=ez(),H=KD(jJ(),"tasks.json"),f=_J();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 \`${Nz}\` socket`),Z){let B=UD(H);console.log(` \u2022 DELETE the task index${B===null?"":` (${B} task(s))`} \u2014 ${H}`),console.log(` \u2022 DELETE the UI state \u2014 ${f}`)}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(`
217
- re-run with --yes to proceed (no interactive terminal for a y/N prompt)`);return}if(!await _I(Z?`
216
+ `),xD(process.stderr),process.exit(2);let Z=J.includes("--hard"),G=J.includes("--yes")||J.includes("-y"),X=Ez(),Q=YY(),H=ED(XJ(),"tasks.json"),f=oJ();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 \`${kz}\` socket`),Z){let B=wD(H);console.log(` \u2022 DELETE the task index${B===null?"":` (${B} task(s))`} \u2014 ${H}`),console.log(` \u2022 DELETE the UI state \u2014 ${f}`)}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(`
217
+ re-run with --yes to proceed (no interactive terminal for a y/N prompt)`);return}if(!await Dy(Z?`
218
218
  Stop daemon, kill sessions AND wipe task index? [y/N] `:`
219
- Stop daemon and kill kobe sessions? [y/N] `)){console.log("aborted \u2014 nothing changed");return}}console.log("");let{pid:j,method:V}=await EG(X,q);if(console.log(V==="absent"?" daemon: was not running (cleared any stale socket/pidfile)":` daemon: stopped via ${V}${j?` (pid ${j})`:""}`),await mz()){let{code:B}=await z9(["kill-server"]);console.log(B===0?` tmux: killed all sessions on \`${Nz}\``:` tmux: no sessions on \`${Nz}\``)}else console.log(" tmux: not installed \u2014 no sessions to kill");if(Z)await BD(H,"task index"),await BD(f,"UI state");console.log(`
220
- kobe: reset complete. Relaunch kobe to start fresh.`)}async function rI(J=[]){if(J.includes("--help")||J.includes("-h")||J.includes("help")){process.stdout.write(["Usage: kobe reload","","Restart kobe's Tasks + Ops panes in every live session, in place.","Picks up new kobe code without `kobe reset` \u2014 the engine (claude)","panes and your running turns are never touched. Takes no options.",""].join(`
219
+ Stop daemon and kill kobe sessions? [y/N] `)){console.log("aborted \u2014 nothing changed");return}}console.log("");let{pid:j,method:V}=await EG(X,Q);if(console.log(V==="absent"?" daemon: was not running (cleared any stale socket/pidfile)":` daemon: stopped via ${V}${j?` (pid ${j})`:""}`),await dz()){let{code:B}=await X8(["kill-server"]);console.log(B===0?` tmux: killed all sessions on \`${kz}\``:` tmux: no sessions on \`${kz}\``)}else console.log(" tmux: not installed \u2014 no sessions to kill");if(Z)await TD(H,"task index"),await TD(f,"UI state");console.log(`
220
+ kobe: reset complete. Relaunch kobe to start fresh.`)}async function Fy(J=[]){if(J.includes("--help")||J.includes("-h")||J.includes("help")){process.stdout.write(["Usage: kobe reload","","Restart kobe's Tasks + Ops panes in every live session, in place.","Picks up new kobe code without `kobe reset` \u2014 the engine (claude)","panes and your running turns are never touched. Takes no options.",""].join(`
221
221
  `));return}let z=J.find((H)=>H.length>0);if(z!==void 0)process.stderr.write(`kobe reload: unexpected argument "${z}"
222
222
 
223
223
  Usage: kobe reload (takes no options)
224
- `),process.exit(2);if(!await mz()){console.log("kobe reload: tmux is not installed \u2014 no panes to reload");return}let{code:Y,stdout:Z}=await z9(["list-sessions","-F","#{session_name}"]);if(Y!==0){console.log(`kobe reload: no kobe tmux sessions on the \`${Nz}\` socket`);return}let G=Z.split(`
225
- `).map((H)=>H.trim()).filter((H)=>H.length>0);if(G.length===0){console.log(`kobe reload: no kobe tmux sessions on the \`${Nz}\` socket`);return}let{refreshKobeWorkspacePanes:X}=await Promise.resolve().then(() => (zJ(),TJ)),q=0;for(let H of G)try{await X(H),q++}catch(f){console.error(` failed to reload session "${H}": ${f instanceof Error?f.message:String(f)}`)}console.log(`kobe: reloaded Tasks/Ops panes in ${q}/${G.length} session(s) \u2014 engine panes untouched`)}var Gf=C(()=>{HX();lH();$Z();iH();t1();Yf();v1();AJ()});var RD={};q1(RD,{runWebSubcommand:()=>Zy});import{existsSync as FD}from"fs";import{homedir as oI}from"os";import{resolve as Xf}from"path";import{fileURLToPath as MD}from"url";function DD(){let J=process.env.KOBE_HOME_DIR?.trim();return J?`sandbox: ${J}`:`${oI()}/.kobe (production)`}function tI(){let J=MD(import.meta.url),z=[Xf(J,"../../../../kobe-web/dist"),Xf(J,"../../web-ui")];for(let Y of z)if(FD(`${Y}/index.html`))return Y;return}function eI(){let J=MD(import.meta.url),z=[Xf(J,"../../../../kobe-web/pty-server.mjs"),Xf(J,"../../web-ui/pty-server.mjs")];for(let Y of z)if(FD(Y))return Y;return}async function LD(J){try{let z=Bun.spawn(["lsof","-nP",`-iTCP:${J}`,"-sTCP:LISTEN","-t"],{stdout:"pipe",stderr:"ignore"});return(await new Response(z.stdout).text()).split(`
226
- `).map((Z)=>Number.parseInt(Z.trim(),10)).filter((Z)=>Number.isFinite(Z)&&Z!==process.pid)}catch{return[]}}async function Jy(J){let z;try{z=(await(await fetch(`http://localhost:${J}${AD}`,{signal:AbortSignal.timeout(800)})).text()).trim()}catch{return}if(z!==OD)throw Error(`PTY port ${J} is in use by a non-kobe service; refusing to replace it`);let Y=await LD(J);for(let G of Y)try{process.kill(G,"SIGTERM")}catch{}let Z=Date.now()+2000;while(Date.now()<Z){if((await LD(J)).length===0)return;await new Promise((G)=>setTimeout(G,100))}}async function zy(J){let z=eI();if(!z)return null;let Y=J.webPort+2;if(J.takeover)await Jy(Y);return Bun.spawn(["node",z],{stdin:"ignore",stdout:"inherit",stderr:"inherit",env:{...process.env,KOBE_DAEMON_WEB_PORT:String(J.webPort),KOBE_PTY_PORT:String(Y)}})}async function Yy(J,z){if(process.env.KOBE_DAEMON_WEB_PORT=String(J),z)process.env.KOBE_DAEMON_WEB_STATIC_DIR=z;await wG();let Y;try{Y=(await(await fetch(`http://127.0.0.1:${J}${AD}`,{signal:AbortSignal.timeout(1500)})).text()).trim()}catch(Z){throw Error(`daemon web transport is not reachable on :${J}; run \`kobe daemon restart\` so the daemon picks up this build (${Z instanceof Error?Z.message:String(Z)})`)}if(Y!==OD)throw Error(`unexpected daemon web health marker on :${J}: ${Y}`);if(z){if(!(await fetch(`http://127.0.0.1:${J}/`,{signal:AbortSignal.timeout(1500)})).ok)throw Error(`daemon web transport is up on :${J} but is not serving web assets; run \`kobe daemon restart\` so it picks up ${z}`)}}async function Zy(J){if(J.includes("--help")||J.includes("-h")){process.stdout.write(sI);return}let z=5174,Y=J.indexOf("--port");if(Y!==-1){let Z=Number.parseInt(J[Y+1]??"",10);if(!Number.isFinite(Z))process.stderr.write(`kobe web: --port needs a number
227
- `),process.exit(2);z=Z}try{let Z=J.includes("--routes-only")||J.includes("--bridge-only"),G=!J.includes("--no-takeover"),X=Z?void 0:tI();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 Yy(z,X);let q=null,H=!1,f=()=>{if(H)return;H=!0,q?.kill(),q=null};if(Z)process.stdout.write(`kobe daemon web transport listening on http://localhost:${z} (routes only)
228
- `),process.stdout.write(` home: ${DD()}
229
- `);else if(q=await zy({webPort:z,takeover:G}),process.stdout.write(`kobe web \u2192 http://localhost:${z}
230
- `),process.stdout.write(` home: ${DD()}
231
- `),!q)process.stderr.write(`kobe web: PTY server not found; terminal tabs will be unavailable
232
- `);process.on("SIGINT",()=>{f(),process.exit(0)}),process.on("SIGTERM",()=>{f(),process.exit(0)}),q?.exited.then(()=>{if(!H)process.stderr.write(`kobe web: PTY server exited
224
+ `),process.exit(2);if(!await dz()){console.log("kobe reload: tmux is not installed \u2014 no panes to reload");return}let{code:Y,stdout:Z}=await X8(["list-sessions","-F","#{session_name}"]);if(Y!==0){console.log(`kobe reload: no kobe tmux sessions on the \`${kz}\` socket`);return}let G=Z.split(`
225
+ `).map((H)=>H.trim()).filter((H)=>H.length>0);if(G.length===0){console.log(`kobe reload: no kobe tmux sessions on the \`${kz}\` socket`);return}let{refreshKobeWorkspacePanes:X}=await Promise.resolve().then(() => (zJ(),EJ)),Q=0;for(let H of G)try{await X(H),Q++}catch(f){console.error(` failed to reload session "${H}": ${f instanceof Error?f.message:String(f)}`)}console.log(`kobe: reloaded Tasks/Ops panes in ${Q}/${G.length} session(s) \u2014 engine panes untouched`)}var Xf=C(()=>{HX();$H();$Z();lH();p1();Zf();c1();NJ()});var nD={};q1(nD,{runWebSubcommand:()=>ky});import{existsSync as vD}from"fs";import{homedir as My}from"os";import{resolve as Qf}from"path";import{fileURLToPath as mD}from"url";function PD(){let J=process.env.KOBE_HOME_DIR?.trim();return J?`sandbox: ${J}`:`${My()}/.kobe (production)`}function Ay(){let J=mD(import.meta.url),z=[Qf(J,"../../../../kobe-web/dist"),Qf(J,"../../web-ui")];for(let Y of z)if(vD(`${Y}/index.html`))return Y;return}function Ry(){let J=mD(import.meta.url),z=[Qf(J,"../../../../kobe-web/pty-server.mjs"),Qf(J,"../../web-ui/pty-server.mjs")];for(let Y of z)if(vD(Y))return Y;return}async function hD(J){try{let z=Bun.spawn(["lsof","-nP",`-iTCP:${J}`,"-sTCP:LISTEN","-t"],{stdout:"pipe",stderr:"ignore"});return(await new Response(z.stdout).text()).split(`
226
+ `).map((Z)=>Number.parseInt(Z.trim(),10)).filter((Z)=>Number.isFinite(Z)&&Z!==process.pid)}catch{return[]}}async function gy(J){let z;try{z=(await(await fetch(`http://localhost:${J}${dD}`,{signal:AbortSignal.timeout(800)})).text()).trim()}catch{return}if(z!==cD)throw Error(`PTY port ${J} is in use by a non-kobe service; refusing to replace it`);let Y=await hD(J);for(let G of Y)try{process.kill(G,"SIGTERM")}catch{}let Z=Date.now()+2000;while(Date.now()<Z){if((await hD(J)).length===0)return;await new Promise((G)=>setTimeout(G,100))}}async function Ny(J){let z=Ry();if(!z)return null;let Y=J.webPort+2;if(J.takeover)await gy(Y);return Bun.spawn(["node",z],{stdin:"ignore",stdout:"inherit",stderr:"inherit",env:{...process.env,KOBE_DAEMON_WEB_PORT:String(J.webPort),KOBE_PTY_PORT:String(Y)}})}async function Cy(J,z){if(process.env.KOBE_DAEMON_WEB_PORT=String(J),z)process.env.KOBE_DAEMON_WEB_STATIC_DIR=z;await wG();let Y;try{Y=(await(await fetch(`http://127.0.0.1:${J}${dD}`,{signal:AbortSignal.timeout(1500)})).text()).trim()}catch(Z){throw Error(`daemon web transport is not reachable on :${J}; run \`kobe daemon restart\` so the daemon picks up this build (${Z instanceof Error?Z.message:String(Z)})`)}if(Y!==cD)throw Error(`unexpected daemon web health marker on :${J}: ${Y}`);if(z){if(!(await fetch(`http://127.0.0.1:${J}/`,{signal:AbortSignal.timeout(1500)})).ok)throw Error(`daemon web transport is up on :${J} but is not serving web assets; run \`kobe daemon restart\` so it picks up ${z}`)}}async function ky(J){if(J.includes("--help")||J.includes("-h")){process.stdout.write(Oy);return}let z=5174,Y=J.indexOf("--port");if(Y!==-1){let Z=Number.parseInt(J[Y+1]??"",10);if(!Number.isFinite(Z))process.stderr.write(`kobe web: --port needs a number
227
+ `),process.exit(2);z=Z}try{let Z=J.includes("--routes-only")||J.includes("--bridge-only"),G=!J.includes("--no-takeover"),X=Z?void 0:Ay();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 Cy(z,X);let Q=null,H=!1,f=()=>{if(H)return;H=!0,Q?.kill(),Q=null};if(Z)process.stdout.write(`kobe daemon web transport listening on http://localhost:${z} (routes only)
228
+ `),process.stdout.write(` home: ${PD()}
229
+ `);else if(Q=await Ny({webPort:z,takeover:G}),process.stdout.write(`kobe web \u2192 http://localhost:${z}
230
+ `),process.stdout.write(` home: ${PD()}
231
+ `),!Q)process.stderr.write(`kobe web: PTY server not found; terminal tabs will be unavailable
232
+ `);process.on("SIGINT",()=>{f(),process.exit(0)}),process.on("SIGTERM",()=>{f(),process.exit(0)}),Q?.exited.then(()=>{if(!H)process.stderr.write(`kobe web: PTY server exited
233
233
  `),f(),process.exit(1)}),await new Promise(()=>{})}catch(Z){process.stderr.write(`kobe web: ${Z instanceof Error?Z.message:String(Z)}
234
- `),process.exit(1)}}var OD="kobe-web",AD="/__kobe_web",sI=`Usage: kobe web [options]
234
+ `),process.exit(1)}}var cD="kobe-web",dD="/__kobe_web",Oy=`Usage: kobe web [options]
235
235
 
236
236
  Launch the kobe web UI through daemon web transport on http://localhost:<port>.
237
237
 
@@ -240,45 +240,45 @@ Options:
240
240
  --routes-only Routes only; Vite serves the SPA separately.
241
241
  --no-takeover Reserved for compatibility; daemon owns the web port.
242
242
  -h, --help Show this help.
243
- `;var gD=C(()=>{RJ()});var CD={};q1(CD,{runSkillSubcommand:()=>Xy});function Y9(){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: ${Jf}.`].join(`
244
- `)}function ND(J){let z=Jf;for(let Y=0;Y<J.length;Y++){let Z=J[Y];if(Z==="--agent"){let G=J[Y+1];if(!G||G.startsWith("--"))process.stderr.write(`kobe skill: --agent requires a value
243
+ `;var iD=C(()=>{CJ()});var $D={};q1($D,{runSkillSubcommand:()=>Sy});function Q8(){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: ${zf}.`].join(`
244
+ `)}function lD(J){let z=zf;for(let Y=0;Y<J.length;Y++){let Z=J[Y];if(Z==="--agent"){let G=J[Y+1];if(!G||G.startsWith("--"))process.stderr.write(`kobe skill: --agent requires a value
245
245
  `),process.exit(2);z=G,Y++}else if(Z.startsWith("--agent="))z=Z.slice(8);else process.stderr.write(`kobe skill: unknown flag "${Z}"
246
246
 
247
- ${Y9()}
248
- `),process.exit(2)}return z}async function Xy(J){let[z,...Y]=J;if(!z||z==="--help"||z==="-h"||z==="help"){if(process.stdout.write(`${Y9()}
249
- `),!z)process.exitCode=2;return}if(!Gy.includes(z))process.stderr.write(`kobe skill: unknown verb "${z}"
250
-
251
- ${Y9()}
252
- `),process.exit(2);if(z==="status"){let H=Wq(),[f,j]=eB(),V=!H.installed?"\u2717 not installed":H.stale?`\u26A0 out of date (installed ${H.installedVersion===null?"unstamped":`v${H.installedVersion}`}, this kobe wants v${H.currentVersion})`:`\u2713 installed (v${H.installedVersion})`;process.stdout.write([`kobe skill: ${V}`,` looked in: ${f}`,` ${j}`,H.installed&&!H.stale?"":" \u2192 run `kobe skill install` to install / refresh",""].join(`
253
- `));return}if(z==="command"){process.stdout.write(`${zf({agent:ND(Y)})}
254
- `);return}let Z=ND(Y),G=tB({agent:Z});process.stdout.write(`kobe skill: running \`npx ${G.join(" ")}\`
255
- `);let q=await Bun.spawn(["npx",...G],{stdin:"inherit",stdout:"inherit",stderr:"inherit"}).exited;if(q!==0)process.stderr.write(`
256
- kobe skill install failed (npx exited ${q}). Is \`npx\` on PATH and are you online?
257
- You can run it yourself: ${zf({agent:Z})}
258
- `),process.exit(q||1);process.stdout.write(`kobe skill: installed.
259
- `)}var Gy;var kD=C(()=>{Yf();Gy=["install","status","command"]});var G9={};q1(G9,{runHookSubcommand:()=>Wy,readTextWithTimeout:()=>ID,parseWorktreeRemovePath:()=>uD,parseWorktreeAddPath:()=>xD,ensureGlobalKobeHooks:()=>Uy});import{homedir as qy}from"os";import{join as SD,resolve as Z9}from"path";async function ID(J,z=Qy){let Y;try{return await Promise.race([J(),new Promise((Z)=>{Y=setTimeout(()=>Z(""),z)})])}finally{if(Y!==void 0)clearTimeout(Y)}}async function yD(){try{let J=await ID(()=>Bun.stdin.text());if(!J.trim())return{};let z=JSON.parse(J);return z&&typeof z==="object"&&!Array.isArray(z)?z:{}}catch{return{}}}function Hy(J,z){for(let Y=0;Y<J.length;Y++){if(J[Y]===z)return J[Y+1];if(J[Y].startsWith(`${z}=`))return J[Y].slice(z.length+1)}return}function jy(J){return!!J&&typeof J==="object"&&!Array.isArray(J)}function TD(J){let z=[],Y=/"([^"]*)"|'([^']*)'|(\S+)/g,Z;while((Z=Y.exec(J))!==null)z.push(Z[1]??Z[2]??Z[3]??"");return z}function xD(J){let z=TD(J),Y=new Set(["-b","-B","--reason"]);for(let Z=0;Z+1<z.length;Z++){if(z[Z]!=="worktree"||z[Z+1]!=="add")continue;let G=Z+2;while(G<z.length){let X=z[G];if(X==="&&"||X==="||"||X===";"||X==="|"||X===">"||X===">>")break;if(X.startsWith("-")){G+=Y.has(X)?2:1;continue}return X}}return}function uD(J){let z=TD(J);for(let Y=0;Y+1<z.length;Y++){if(z[Y]!=="worktree"||z[Y+1]!=="remove")continue;let Z=Y+2;while(Z<z.length){let G=z[Z];if(G==="&&"||G==="||"||G===";"||G==="|"||G===">"||G===">>")break;if(G.startsWith("-")){Z+=1;continue}return G}}return}async function By(){let J=await yD(),z=jy(J.tool_input)?J.tool_input:{},Y=typeof z.command==="string"?z.command:"";if(!Y.includes("worktree"))return;let Z=typeof J.cwd==="string"&&J.cwd?J.cwd:process.cwd(),G=xD(Y),X=G?void 0:uD(Y);if(!G&&!X)return;let q=await Zz();if(!q)return;try{if(G)await q.request("worktree.reconcile",{cwd:Z,worktreePath:Z9(Z,G)});else if(X)await q.request("worktree.archiveRemoved",{worktreePath:Z9(Z,X)})}finally{q.close()}}async function Wy(J){let[z,...Y]=J;if(z==="setup"){await Dy(Y);return}if(z===fy){try{await By()}catch{}return}try{if(!z||!OQ(z))return;let Z=await yD(),G=Hy(Y,"--task-id"),X=typeof Z.cwd==="string"&&Z.cwd?Z.cwd:process.cwd(),q;for(let f of ED())if(q=f.activityDetailFromPayload(z,Z),q)break;let H=await Zz();if(!H)return;try{await H.request("engine.reportEvent",{...G?{taskId:G}:{cwd:X},kind:z,...q?{detail:q}:{}})}finally{H.close()}}catch{}}function Vy(){return $1.map((J)=>c8(J)).filter((J)=>J.supportsWorktreeSync())}function ED(){return $1.map((J)=>c8(J)).filter((J)=>J.supportsHooks())}function wD(){return SD(qy(),".claude","settings.json")}function Ky(J){if(!J||J==="off")return;if(J==="global")return wD();if(J.startsWith("repo:"))return SD(Z9(J.slice(5)),".claude","settings.json");return J}async function Uy(){try{for(let J of ED()){let z=J.globalSettingsPath();if(!z)continue;await J.installActivityHooks(z),await J.installWorktreeWatchHook(z)}await PD()}catch{}}async function PD(){let J=Vy();if(J.length===0)return;let z=N1(bD),Y=new Set([wD()]),Z=Ky(z);if(Z)Y.add(Z);for(let G of J)for(let X of Y)await G.removeWorktreeSyncHook(X);if(z!=="off")e1(bD,"off")}async function Dy(J){await PD(),process.stdout.write(["kobe hook setup is deprecated and now a no-op (cleanup only).","","The old external-worktree sync used a global WorktreeCreate hook, which is","a VCS provider hook \u2014 its presence broke `claude --worktree` / EnterWorktree","in every repo. Any hook kobe previously installed has been removed.","","Sync is now automatic: a `claude --worktree` (or any session) started in a","worktree under a repo kobe already tracks is adopted as a task on launch.","To adopt existing worktrees on demand, use the New Task dialog or `kobe adopt`.",""].join(`
260
- `))}var Qy=500,fy="worktree-created",bD="externalWorktreeSync";var X9=C(()=>{RJ();d8();AQ();A1();a1()});function vD(J){var z;if(J>=55296&&J<=57343||J>1114111)return 65533;return(z=Ly.get(J))!==null&&z!==void 0?z:J}var q9,Ly,hD;var mD=C(()=>{Ly=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]]),hD=(q9=String.fromCodePoint)!==null&&q9!==void 0?q9:(J)=>{let z="";if(J>65535)J-=65536,z+=String.fromCharCode(J>>>10&1023|55296),J=56320|J&1023;return z+=String.fromCharCode(J),z}});function cD(J){let z=typeof atob==="function"?atob(J):typeof Buffer.from==="function"?Buffer.from(J,"base64").toString("binary"):new Buffer(J,"base64").toString("binary"),Y=z.length&-2,Z=new Uint16Array(Y/2);for(let G=0,X=0;G<Y;G+=2){let q=z.charCodeAt(G),H=z.charCodeAt(G+1);Z[X++]=q|H<<8}return Z}var dD;var nD=C(()=>{dD=cD("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 LJ;var iD=C(()=>{(function(J){J[J.VALUE_LENGTH=49152]="VALUE_LENGTH",J[J.FLAG13=8192]="FLAG13",J[J.BRANCH_LENGTH=8064]="BRANCH_LENGTH",J[J.JUMP_TABLE=127]="JUMP_TABLE"})(LJ||(LJ={}))});function Q9(J){return J>=m1.ZERO&&J<=m1.NINE}function Fy(J){return J>=m1.UPPER_A&&J<=m1.UPPER_F||J>=m1.LOWER_A&&J<=m1.LOWER_F}function My(J){return J>=m1.UPPER_A&&J<=m1.UPPER_Z||J>=m1.LOWER_A&&J<=m1.LOWER_Z||Q9(J)}function Oy(J){return J===m1.EQUALS||My(J)}class H9{constructor(J,z,Y){this.decodeTree=J,this.emitCodePoint=z,this.errors=Y,this.state=XJ.EntityStart,this.consumed=1,this.result=0,this.treeIndex=0,this.excess=1,this.decodeMode=VY.Strict,this.runConsumed=0}startEntity(J){this.decodeMode=J,this.state=XJ.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1,this.runConsumed=0}write(J,z){switch(this.state){case XJ.EntityStart:{if(J.charCodeAt(z)===m1.NUM)return this.state=XJ.NumericStart,this.consumed+=1,this.stateNumericStart(J,z+1);return this.state=XJ.NamedEntity,this.stateNamedEntity(J,z)}case XJ.NumericStart:return this.stateNumericStart(J,z);case XJ.NumericDecimal:return this.stateNumericDecimal(J,z);case XJ.NumericHex:return this.stateNumericHex(J,z);case XJ.NamedEntity:return this.stateNamedEntity(J,z)}}stateNumericStart(J,z){if(z>=J.length)return-1;if((J.charCodeAt(z)|lD)===m1.LOWER_X)return this.state=XJ.NumericHex,this.consumed+=1,this.stateNumericHex(J,z+1);return this.state=XJ.NumericDecimal,this.stateNumericDecimal(J,z)}stateNumericHex(J,z){while(z<J.length){let Y=J.charCodeAt(z);if(Q9(Y)||Fy(Y)){let Z=Y<=m1.NINE?Y-m1.ZERO:(Y|lD)-m1.LOWER_A+10;this.result=this.result*16+Z,this.consumed++,z++}else return this.emitNumericEntity(Y,3)}return-1}stateNumericDecimal(J,z){while(z<J.length){let Y=J.charCodeAt(z);if(Q9(Y))this.result=this.result*10+(Y-m1.ZERO),this.consumed++,z++;else return this.emitNumericEntity(Y,2)}return-1}emitNumericEntity(J,z){var Y;if(this.consumed<=z)return(Y=this.errors)===null||Y===void 0||Y.absenceOfDigitsInNumericCharacterReference(this.consumed),0;if(J===m1.SEMI)this.consumed+=1;else if(this.decodeMode===VY.Strict)return 0;if(this.emitCodePoint(vD(this.result),this.consumed),this.errors){if(J!==m1.SEMI)this.errors.missingSemicolonAfterCharacterReference();this.errors.validateNumericCharacterReference(this.result)}return this.consumed}stateNamedEntity(J,z){let{decodeTree:Y}=this,Z=Y[this.treeIndex],G=(Z&LJ.VALUE_LENGTH)>>14;while(z<J.length){if(G===0&&(Z&LJ.FLAG13)!==0){let q=(Z&LJ.BRANCH_LENGTH)>>7;if(this.runConsumed===0){let H=Z&LJ.JUMP_TABLE;if(J.charCodeAt(z)!==H)return this.result===0?0:this.emitNotTerminatedNamedEntity();z++,this.excess++,this.runConsumed++}while(this.runConsumed<q){if(z>=J.length)return-1;let H=this.runConsumed-1,f=Y[this.treeIndex+1+(H>>1)],j=H%2===0?f&255:f>>8&255;if(J.charCodeAt(z)!==j)return this.runConsumed=0,this.result===0?0:this.emitNotTerminatedNamedEntity();z++,this.excess++,this.runConsumed++}this.runConsumed=0,this.treeIndex+=1+(q>>1),Z=Y[this.treeIndex],G=(Z&LJ.VALUE_LENGTH)>>14}if(z>=J.length)break;let X=J.charCodeAt(z);if(X===m1.SEMI&&G!==0&&(Z&LJ.FLAG13)!==0)return this.emitNamedEntityData(this.treeIndex,G,this.consumed+this.excess);if(this.treeIndex=Ry(Y,Z,this.treeIndex+Math.max(1,G),X),this.treeIndex<0)return this.result===0||this.decodeMode===VY.Attribute&&(G===0||Oy(X))?0:this.emitNotTerminatedNamedEntity();if(Z=Y[this.treeIndex],G=(Z&LJ.VALUE_LENGTH)>>14,G!==0){if(X===m1.SEMI)return this.emitNamedEntityData(this.treeIndex,G,this.consumed+this.excess);if(this.decodeMode!==VY.Strict&&(Z&LJ.FLAG13)===0)this.result=this.treeIndex,this.consumed+=this.excess,this.excess=0}z++,this.excess++}return-1}emitNotTerminatedNamedEntity(){var J;let{result:z,decodeTree:Y}=this,Z=(Y[z]&LJ.VALUE_LENGTH)>>14;return this.emitNamedEntityData(z,Z,this.consumed),(J=this.errors)===null||J===void 0||J.missingSemicolonAfterCharacterReference(),this.consumed}emitNamedEntityData(J,z,Y){let{decodeTree:Z}=this;if(this.emitCodePoint(z===1?Z[J]&~(LJ.VALUE_LENGTH|LJ.FLAG13):Z[J+1],Y),z===3)this.emitCodePoint(Z[J+2],Y);return Y}end(){var J;switch(this.state){case XJ.NamedEntity:return this.result!==0&&(this.decodeMode!==VY.Attribute||this.result===this.treeIndex)?this.emitNotTerminatedNamedEntity():0;case XJ.NumericDecimal:return this.emitNumericEntity(0,2);case XJ.NumericHex:return this.emitNumericEntity(0,3);case XJ.NumericStart:return(J=this.errors)===null||J===void 0||J.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case XJ.EntityStart:return 0}}}function Ay(J){let z="",Y=new H9(J,(Z)=>z+=hD(Z));return function(G,X){let q=0,H=0;while((H=G.indexOf("&",H))>=0){z+=G.slice(q,H),Y.startEntity(X);let j=Y.write(G,H+1);if(j<0){q=H+Y.end();break}q=H+j,H=j===0?q+1:q}let f=z+G.slice(q);return z="",f}}function Ry(J,z,Y,Z){let G=(z&LJ.BRANCH_LENGTH)>>7,X=z&LJ.JUMP_TABLE;if(G===0)return X!==0&&Z===X?Y:-1;if(X){let j=Z-X;return j<0||j>=G?-1:J[Y+j]-1}let q=G+1>>1,H=0,f=G-1;while(H<=f){let j=H+f>>>1,V=j>>1,K=J[Y+V]>>(j&1)*8&255;if(K<Z)H=j+1;else if(K>Z)f=j-1;else return J[Y+q+j]}return-1}function wZ(J,z=VY.Legacy){return gy(J,z)}var m1,lD=32,XJ,VY,gy;var $D=C(()=>{mD();nD();iD();(function(J){J[J.NUM=35]="NUM",J[J.SEMI=59]="SEMI",J[J.EQUALS=61]="EQUALS",J[J.ZERO=48]="ZERO",J[J.NINE=57]="NINE",J[J.LOWER_A=97]="LOWER_A",J[J.LOWER_F=102]="LOWER_F",J[J.LOWER_X=120]="LOWER_X",J[J.LOWER_Z=122]="LOWER_Z",J[J.UPPER_A=65]="UPPER_A",J[J.UPPER_F=70]="UPPER_F",J[J.UPPER_Z=90]="UPPER_Z"})(m1||(m1={}));(function(J){J[J.EntityStart=0]="EntityStart",J[J.NumericStart=1]="NumericStart",J[J.NumericDecimal=2]="NumericDecimal",J[J.NumericHex=3]="NumericHex",J[J.NamedEntity=4]="NamedEntity"})(XJ||(XJ={}));(function(J){J[J.Legacy=0]="Legacy",J[J.Strict=1]="Strict",J[J.Attribute=2]="Attribute"})(VY||(VY={}));gy=Ay(dD)});var aD,_D;var rD=C(()=>{$D();(function(J){J[J.XML=0]="XML",J[J.HTML=1]="HTML"})(aD||(aD={}));(function(J){J[J.UTF8=0]="UTF8",J[J.ASCII=1]="ASCII",J[J.Extensive=2]="Extensive",J[J.Attribute=3]="Attribute",J[J.Text=4]="Text"})(_D||(_D={}))});import{CliRenderer as Cy,createCliRenderer as ky,engine as by}from"@opentui/core";import{createTestRenderer as n$}from"@opentui/core/testing";import{ASCIIFontRenderable as Sy,BoxRenderable as Iy,CodeRenderable as yy,DiffRenderable as Ty,InputRenderable as xy,LineNumberRenderable as uy,MarkdownRenderable as Ey,ScrollBoxRenderable as wy,SelectRenderable as Py,TabSelectRenderable as hy,TextareaRenderable as vy,TextAttributes as f9,TextNodeRenderable as my,TextRenderable as cy}from"@opentui/core";import{engine as $$,Timeline as a$}from"@opentui/core";import{BaseRenderable as zL,createTextAttributes as ny,InputRenderable as j9,InputRenderableEvents as Vq,isTextNodeRenderable as V9,parseColor as oD,Renderable as iy,RootTextNodeRenderable as ly,ScrollBoxRenderable as $y,SelectRenderable as sD,SelectRenderableEvents as B9,TabSelectRenderable as tD,TabSelectRenderableEvents as W9,TextNodeRenderable as ay,TextRenderable as YL}from"@opentui/core";import{BaseRenderable as zT,isTextNodeRenderable as YT,TextNodeRenderable as ZT,TextRenderable as GT,Yoga as JL}from"@opentui/core";import{BoxRenderable as Ya,RootRenderable as Za}from"@opentui/core";import{TimeToFirstDrawRenderable as HT}from"@opentui/core";import{createSlotRegistry as qa}from"@opentui/core";function py({createElement:J,createTextNode:z,createSlotNode:Y,isTextNode:Z,replaceText:G,insertNode:X,removeNode:q,setProperty:H,getParentNode:f,getFirstChild:j,getNextSibling:V}){function B(S,g,M,T){if(M!==void 0&&!T)T=[];if(typeof g!=="function")return K(S,g,T,M);uz(($)=>K(S,g(),$,M),T)}function K(S,g,M,T,$){while(typeof M==="function")M=M();if(g===M)return M;let d=typeof g,e=T!==void 0;if(d==="string"||d==="number"){if(d==="number")g=g.toString();if(e){let u=M[0];if(u&&Z(u))G(u,g);else u=z(g);M=O(S,M,T,u)}else if(M!==""&&typeof M==="string")G(j(S),M=g);else O(S,M,T,z(g)),M=g}else if(g==null||d==="boolean")M=O(S,M,T);else if(d==="function")return uz(()=>{let u=g();while(typeof u==="function")u=u();M=K(S,u,M,T)}),()=>M;else if(Array.isArray(g)){let u=[];if(L(u,g,$))return uz(()=>M=K(S,u,M,T,!0)),()=>M;if(u.length===0){let z0=O(S,M,T);if(e)return M=z0}else if(Array.isArray(M))if(M.length===0)R(S,u,T);else A(S,M,u);else if(M==null||M==="")R(S,u);else A(S,e&&M||[j(S)],u);M=u}else{if(Array.isArray(M)){if(e)return M=O(S,M,T,g);O(S,M,null,g)}else if(M==null||M===""||!j(S))X(S,g);else x(S,g,j(S));M=g}return M}function L(S,g,M){let T=!1;for(let $=0,d=g.length;$<d;$++){let e=g[$],u;if(e==null||e===!0||e===!1);else if(Array.isArray(e))T=L(S,e)||T;else if((u=typeof e)==="string"||u==="number")S.push(z(e));else if(u==="function")if(M){while(typeof e==="function")e=e();T=L(S,Array.isArray(e)?e:[e])||T}else S.push(e),T=!0;else S.push(e)}return T}function A(S,g,M){let T=M.length,$=g.length,d=T,e=0,u=0,z0=V(g[$-1]),Q0=null;while(e<$||u<d){if(g[e]===M[u]){e++,u++;continue}while(g[$-1]===M[d-1])$--,d--;if($===e){let o=d<T?u?V(M[u-1]):M[d-u]:z0;while(u<d)X(S,M[u++],o)}else if(d===u)while(e<$){if(!Q0||!Q0.has(g[e]))q(S,g[e]);e++}else if(g[e]===M[d-1]&&M[u]===g[$-1]){let o=V(g[--$]);X(S,M[u++],V(g[e++])),X(S,M[--d],o),g[$]=M[d]}else{if(!Q0){Q0=new Map;let K0=u;while(K0<d)Q0.set(M[K0],K0++)}let o=Q0.get(g[e]);if(o!=null)if(u<o&&o<d){let K0=e,N0=1,h;while(++K0<$&&K0<d){if((h=Q0.get(g[K0]))==null||h!==o+N0)break;N0++}if(N0>o-u){let s=g[e];while(u<o)X(S,M[u++],s)}else x(S,M[u++],g[e++])}else e++;else q(S,g[e++])}}}function O(S,g,M,T){if(M===void 0){let d;while(d=j(S))q(S,d);return T&&X(S,T),T??""}let $=T||Y();if(g.length){let d=!1;for(let e=g.length-1;e>=0;e--){let u=g[e];if($!==u){let z0=f(u)===S;if(!d&&!e)z0?x(S,$,u):X(S,$,M);else z0&&q(S,u)}else d=!0}}else X(S,$,M);return[$]}function R(S,g,M){for(let T=0,$=g.length;T<$;T++)X(S,g[T],M)}function x(S,g,M){X(S,g,M),q(S,M)}function w(S,g,M={},T){if(g||(g={}),!T)uz(()=>M.children=K(S,g.children,M.children));return uz(()=>g.ref&&g.ref(S)),uz(()=>{for(let $ in g){if($==="children"||$==="ref")continue;let d=g[$];if(d===M[$])continue;H(S,$,d,M[$]),M[$]=d}}),M}return{render(S,g){let M;return BZ((T)=>{M=T,B(g,S())}),M},insert:B,spread(S,g,M){if(typeof g==="function")uz((T)=>w(S,g(),T,M));else w(S,g,void 0,M)},createElement:J,createTextNode:z,insertNode:X,setProp(S,g,M,T){return H(S,g,M,T),M},mergeProps:uQ,effect:uz,memo:_y,createComponent:n7,use(S,g,M){return o1(()=>S(g,M))}}}function ry(J){let z=py(J);return z.mergeProps=uQ,z}function F9(J){if(!qf.has(J))qf.set(J,0);let z=qf.get(J)+1;return qf.set(J,z),`${J}-${z}`}function oy(J,z,Y){if(qJ("Inserting node:",YJ(z),"into parent:",YJ(J),"with anchor:",YJ(Y),z instanceof nG),z instanceof Kq)z.parent=J,z=z.getSlotChild(J);if(Y&&Y instanceof Kq)Y=Y.getSlotChild(J);if(V9(z)){if(!(J instanceof YL)&&!V9(J))throw Error(`Orphan text error: "${z.toChunks().map((X)=>X.text).join("")}" must have a <text> as a parent: ${J.id} above ${z.id}`)}if(!(J instanceof zL))throw console.error("[INSERT]","Tried to mount a non base renderable"),Error("Tried to mount a non base renderable");if(!Y){J.add(z);return}let Z=K9(J),G=Z.findIndex((X)=>X.id===Y.id);if(G===-1)qJ("[INSERT]","Could not find anchor",YJ(J),YJ(Y),"[children]",...Z.map((X)=>X.id));J.add(z,G)}function sy(J,z){if(qJ("Removing node:",YJ(z),"from parent:",YJ(J)),z instanceof Kq)z.parent=null,z=z.getSlotChild(J);J.remove(z.id),process.nextTick(()=>{if(z instanceof zL&&!z.parent){z.destroyRecursively();return}})}function ty(J){qJ("Creating text node:",J);let z=F9("text-node");if(typeof J==="number")J=J.toString();return nG.fromString(wZ(J),{id:z})}function ey(){let J=F9("slot-node");return qJ("Creating slot node",J),new Kq(J)}function eD(J){qJ("Getting parent of node:",YJ(J));let z=J.parent??void 0;if(z instanceof ly)z=z.textParent??void 0;let Y=z?.parent?.parent?.parent;if(Y instanceof $y&&Y.content===z)z=Y;return z}function qT(J){Object.assign(fL,J)}function QT(){return fL}var L9,WJ=()=>{let J=PJ(L9);if(!J)throw Error("No renderer found");return J},dy=(J)=>{let z=WJ();GJ(()=>{z.on("resize",J)}),S1(()=>{z.off("resize",J)})},lz=()=>{let J=WJ(),[z,Y]=p({width:J.width,height:J.height});return dy((G,X)=>{Y({width:G,height:X})}),z},_y=(J)=>U0(()=>J()),qf,qJ=(...J)=>{if(process.env.DEBUG)console.log("[Reconciler]",...J)},nG,YJ=(J)=>{if(!J)return;return J.id},K9=(J)=>{let z;if(J instanceof YL)z=J.getTextChildren();else z=J.getChildren();return z},JT,y,S0,b,W,x0,D,U,e$,Q,ZL,Gz,M9,GL,XL,Kq,Uq,Qf,U9,D9,qL,QL,HL,XT,fL,fT=(J,z)=>{let Y,Z=!1,G=!1,X=!0,q=!1,H=J.destroy.bind(J),f=()=>{if(G)return;if(!Y){Z=!0;return}G=!0,Y()};J.once("destroy",f),J.destroy=()=>{if(X){q=!0;return}H()};try{Y=JT(()=>b(L9.Provider,{get value(){return J},get children(){return b(z,{})}}),J.root)}finally{X=!1,J.destroy=H}if(Z)f();if(q)H()},jL=async(J,z={})=>{let Y=z instanceof Cy?z:await ky({...z,onDestroy:()=>{z.onDestroy?.()}});by.attach(Y),fT(Y,J)};var E=C(()=>{W1();rD();W1();W1();W1();L9=Ez();qf=new Map;nG=class nG extends ay{static fromString(J,z={}){let Y=new nG(z);return Y.add(J),Y}};({render:JT,effect:y,memo:S0,createComponent:b,createElement:W,createTextNode:x0,insertNode:D,insert:U,spread:e$,setProp:Q,mergeProps:ZL,use:Gz}=ry({createElement(J){qJ("Creating element:",J);let z=F9(J),Y=PJ(L9);if(!Y)throw Error("No renderer found");let Z=QT();if(!Z[J])throw Error(`[Reconciler] Unknown component type: ${J}`);let G=new Z[J](Y,{id:z});return qJ("Element created with id:",z),G},createTextNode:ty,createSlotNode:ey,replaceText(J,z){if(qJ("Replacing text:",z,"in node:",YJ(J)),!(J instanceof nG))return;J.replace(wZ(z),0)},setProperty(J,z,Y,Z){if(z.startsWith("on:")){let G=z.slice(3);if(Y)J.on(G,Y);if(Z)J.off(G,Z);return}if(V9(J)){if(z==="href"){J.link={url:Y};return}if(z==="style"){J.attributes|=ny(Y),J.fg=Y.fg?oD(Y.fg):J.fg,J.bg=Y.bg?oD(Y.bg):J.bg;return}return}switch(z){case"id":qJ("Id mapped",J.id,"=",Y),J[z]=Y;break;case"focused":if(!(J instanceof iy))return;if(Y)J.focus();else J.blur();break;case"onChange":let G=void 0;if(J instanceof sD)G=B9.SELECTION_CHANGED;else if(J instanceof tD)G=W9.SELECTION_CHANGED;else if(J instanceof j9)G=Vq.CHANGE;if(!G)break;if(Y)J.on(G,Y);if(Z)J.off(G,Z);break;case"onInput":if(J instanceof j9){if(Y)J.on(Vq.INPUT,Y);if(Z)J.off(Vq.INPUT,Z)}break;case"onSubmit":if(J instanceof j9){if(Y)J.on(Vq.ENTER,Y);if(Z)J.off(Vq.ENTER,Z)}else J[z]=Y;break;case"onSelect":if(J instanceof sD){if(Y)J.on(B9.ITEM_SELECTED,Y);if(Z)J.off(B9.ITEM_SELECTED,Z)}else if(J instanceof tD){if(Y)J.on(W9.ITEM_SELECTED,Y);if(Z)J.off(W9.ITEM_SELECTED,Z)}break;case"style":for(let X in Y){let q=Y[X];if(Z!==void 0&&q===Z[X])continue;J[X]=q}break;case"text":case"content":{let X=typeof Y==="string"?Y:Array.isArray(Y)?Y.join(""):`${Y}`;J[z]=wZ(X);break}default:J[z]=Y}},isTextNode(J){return J instanceof nG},insertNode:oy,removeNode:sy,getParentNode:eD,getFirstChild(J){qJ("Getting first child of node:",YJ(J));let z=K9(J)[0];if(!z){qJ("No first child found for node:",YJ(J));return}return qJ("First child found:",YJ(z),"for node:",YJ(J)),z},getNextSibling(J){qJ("Getting next sibling of node:",YJ(J));let z=eD(J);if(!z){qJ("No parent found for node:",YJ(J));return}let Y=K9(z),Z=Y.indexOf(J);if(Z===-1||Z===Y.length-1){qJ("No next sibling found for node:",YJ(J));return}let G=Y[Z+1];if(!G){qJ("Next sibling is null for node:",YJ(J));return}return qJ("Next sibling found:",YJ(G),"for node:",YJ(J)),G}}));M9=class M9 extends zT{constructor(J){super({id:J})}add(J,z){throw Error("Can't add children on an Slot renderable")}getChildren(){return[]}remove(J){}insertBefore(J,z){throw Error("Can't add children on an Slot renderable")}getRenderable(J){return}getChildrenCount(){return 0}requestRender(){}findDescendantById(J){return}};GL=class GL extends ZT{slotParent;destroyed=!1;constructor(J,z){super({id:J});this._visible=!1,this.slotParent=z}destroy(){if(this.destroyed)return;this.destroyed=!0,this.slotParent?.destroy(),super.destroy()}};XL=class XL extends M9{yogaNode;slotParent;destroyed=!1;constructor(J,z){super(J);this._visible=!1,this.slotParent=z,this.yogaNode=JL.default.Node.create(),this.yogaNode.setDisplay(JL.Display.None)}getLayoutNode(){return this.yogaNode}updateFromLayout(){}updateLayout(){}onRemove(){}destroy(){if(this.destroyed)return;this.destroyed=!0,super.destroy(),this.slotParent?.destroy()}};Kq=class Kq extends M9{layoutNode;textNode;destroyed=!1;constructor(J){super(J);this._visible=!1}getSlotChild(J){if(YT(J)||J instanceof GT){if(!this.textNode)this.textNode=new GL(`slot-text-${this.id}`,this);return this.textNode}if(!this.layoutNode)this.layoutNode=new XL(`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()}};Uq=class Uq extends my{_ctx;constructor(J,z){super(z);this._ctx=J}};Qf=class Qf extends Uq{constructor(J,z){super(null,J);if(z==="b"||z==="strong")this.attributes=(this.attributes||0)|f9.BOLD;else if(z==="i"||z==="em")this.attributes=(this.attributes||0)|f9.ITALIC;else if(z==="u")this.attributes=(this.attributes||0)|f9.UNDERLINE}};U9=class U9 extends Qf{constructor(J){super(J,"b")}};D9=class D9 extends Qf{constructor(J){super(J,"i")}};qL=class qL extends Qf{constructor(J){super(J,"u")}};QL=class QL extends Uq{constructor(J,z){super(null,z);this.add()}add(){return super.add(`
261
- `)}};HL=class HL extends Uq{constructor(J,z){let Y={...z,link:{url:z.href}};super(null,Y)}};XT={box:Iy,text:cy,input:xy,select:Py,textarea:vy,ascii_font:Sy,tab_select:hy,scrollbox:wy,code:yy,diff:Ty,line_number:uy,markdown:Ey,span:Uq,strong:U9,b:U9,em:D9,i:D9,u:qL,br:QL,a:HL},fL={...XT};qT({time_to_first_draw:HT})});function KY(J){if(J===void 0)return"undefined";if(J===null)return"null";let z=Array.isArray(J)?"array":typeof J,Y;try{Y=typeof J==="string"?J:JSON.stringify(J)}catch{Y=String(J)}if(Y.length>120)Y=`${Y.slice(0,120)}\u2026`;return`${z}:${Y}`}function jT(J){let z=J?.changes;if(!z||typeof z!=="object"||Array.isArray(z))return null;let Y=new Map;for(let[Z,G]of Object.entries(z)){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 BT(J){let z=J;if(typeof z?.theme!=="string")return null;return{theme:z.theme,transparentBackground:z.transparentBackground===!0,focusAccent:typeof z.focusAccent==="string"?z.focusAccent:null,locale:typeof z.locale==="string"?z.locale:"",sortMode:z.sortMode==="recent"?"recent":"default",keysCollapsed:z.keysCollapsed===!0,projectFilter:typeof z.projectFilter==="string"&&z.projectFilter.length>0?z.projectFilter:null}}function WT(J,z){if(J.size!==z.size)return!1;for(let[Y,Z]of J){let G=z.get(Y);if(!G||!iz(Z,G))return!1}return!0}function VT(J){let z=J?.activity;if(!z||typeof z!=="object"||Array.isArray(z))return null;let Y=new Map;for(let[Z,G]of Object.entries(z)){let X=G;if(typeof X?.mtimeMs!=="number"||typeof X.completionAt!=="number")return null;if(X.completionId!==null&&typeof X.completionId!=="string")return null;Y.set(Z,{mtimeMs:X.mtimeMs,completionId:X.completionId,completionAt:X.completionAt})}return Y}function KT(J,z){if(J.size!==z.size)return!1;for(let[Y,Z]of J){let G=z.get(Y);if(!G||G.mtimeMs!==Z.mtimeMs||G.completionId!==Z.completionId||G.completionAt!==Z.completionAt)return!1}return!0}class FJ{client;tasksAcc;setTasks;activeTaskAcc;setActiveTaskSig;updateAcc;setUpdateSig;daemonVersionAcc;setDaemonVersionSig;engineStateAcc;setEngineStateSig;taskJobsAcc;setTaskJobsSig;worktreeChangesAcc;setWorktreeChangesSig;transcriptActivityAcc;setTranscriptActivitySig;uiPrefsAcc;setUiPrefsSig;keybindingsRevAcc;setKeybindingsRevSig;connectionStateAcc;setConnectionState;ensureReachable;role;channels;subscribesTasks;reconnecting=!1;constructor(J,z={}){this.client=J;let[Y,Z]=p([]),[G,X]=p(null),[q,H]=p(null),[f,j]=p(null),[V,B]=p(new Map),[K,L]=p(new Map),[A,O]=p(null),[R,x]=p(null),[w,S]=p(null),[g,M]=p(null),[T,$]=p("online");this.tasksAcc=Y,this.setTasks=(d)=>Z(()=>d),this.activeTaskAcc=G,this.setActiveTaskSig=(d)=>X(()=>d),this.updateAcc=q,this.setUpdateSig=(d)=>H(()=>d),this.daemonVersionAcc=f,this.setDaemonVersionSig=(d)=>j(()=>d),this.engineStateAcc=V,this.setEngineStateSig=(d)=>B(()=>d),this.taskJobsAcc=K,this.setTaskJobsSig=(d)=>L(()=>d),this.worktreeChangesAcc=A,this.setWorktreeChangesSig=(d)=>O(()=>d),this.transcriptActivityAcc=R,this.setTranscriptActivitySig=(d)=>x(()=>d),this.uiPrefsAcc=w,this.setUiPrefsSig=(d)=>S(()=>d),this.keybindingsRevAcc=g,this.setKeybindingsRevSig=(d)=>M(()=>d),this.connectionStateAcc=T,this.setConnectionState=(d)=>$(()=>d),this.ensureReachable=z.ensureReachable??wG,this.role=z.role??"pane",this.channels=z.channels,this.subscribesTasks=!z.channels||z.channels.includes("task.snapshot"),this.client.on("*",(d)=>this.handleEvent(d.name,d.payload)),this.client.onLifecycle("close",()=>{if(this.setConnectionState("disconnected"),this.role==="pane")JY("orch","daemon socket closed \u2014 starting non-spawning reconnect loop"),this.reconnectLoop()})}async reconnectLoop(){if(this.reconnecting)return;this.reconnecting=!0;let J=500,z=0;while(!this.client.isDisposed){if(await new Promise((Y)=>setTimeout(Y,J)),this.client.isDisposed)break;z++;try{await this.init(),JY("orch",`reconnected and re-subscribed after ${z} attempt(s) \u2014 task list re-synced`),this.reconnecting=!1;return}catch(Y){if(z===1||z%10===0)JJ("orch-reconnect",Y);J=Math.min(J*2,3000)}}this.reconnecting=!1}async init(){let J=await this.client.request("hello",{protocolVersion:pJ,minProtocolVersion:NY}),z=typeof J.protocolVersion==="number"?J.protocolVersion:pJ,Y=typeof J.minProtocolVersion==="number"?J.minProtocolVersion:z;if(!_q({localVersion:pJ,localMin:NY,remoteVersion:z,remoteMin:Y}))throw Error(`kobe daemon is protocol v${z} (min v${Y}); this client is v${pJ} (min v${NY}). Restart the daemon (\`kobe daemon restart\`) or upgrade kobe.`);if(this.setDaemonVersionSig(typeof J.kobeVersion==="string"?J.kobeVersion:null),J.tasks&&this.subscribesTasks)this.setTasks(J.tasks.map(Dq));if(await this.client.subscribe({role:this.role,channels:this.channels}),J.capabilities?.includes("worktree.changes")){if(this.worktreeChangesAcc()===null)this.setWorktreeChangesSig(new Map)}else this.setWorktreeChangesSig(null);if(J.capabilities?.includes("transcript.activity")){if(this.transcriptActivityAcc()===null)this.setTranscriptActivitySig(new Map)}else this.setTranscriptActivitySig(null);this.setConnectionState("online"),JY("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()=>qV(this.daemonVersionAcc()??void 0,r0)}engineStateSignal(){return this.engineStateAcc}taskJobsSignal(){return this.taskJobsAcc}worktreeChangesSignal(){return this.worktreeChangesAcc}transcriptActivitySignal(){return this.transcriptActivityAcc}uiPrefsSignal(){return this.uiPrefsAcc}keybindingsRevSignal(){return this.keybindingsRevAcc}listTasks(){return this.tasksAcc()}getTask(J){return this.tasksAcc().find((z)=>z.id===J)}subscribeTasks(J){try{J(this.listTasks())}catch(Y){console.error("[kobe RemoteOrchestrator] task listener threw on subscribe:",Y)}let z=!0;return BZ((Y)=>{return _0(()=>{let Z=this.tasksAcc();if(z){z=!1;return}try{J(Z)}catch(G){console.error("[kobe RemoteOrchestrator] task listener threw:",G)}}),Y})}async createTask(J){let{modelEffort:z,...Y}=J,Z=await this.client.request("task.create",{...Y,effort:z});return Dq(Z.task)}async ensureMainTask(J){let z=await this.client.request("task.ensureMain",{repo:J});return Dq(z.task)}async ensureWorktree(J){return(await this.client.request("task.ensureWorktree",{taskId:String(J)})).worktreePath}async forgetProject(J){await this.client.request("project.forget",{repo:J})}async setTitle(J,z){await this.client.request("task.rename",{taskId:String(J),title:z})}async setBranch(J,z){await this.client.request("task.setBranch",{taskId:String(J),branch:z})}async setVendor(J,z){await this.client.request("task.setVendor",{taskId:String(J),vendor:z})}async setPinned(J,z){await this.client.request("task.pin",{taskId:String(J),pinned:z})}async moveTask(J,z){await this.client.request("task.move",{taskId:String(J),direction:z<0?"up":"down"})}async setArchived(J,z){await this.client.request("task.archive",{taskId:String(J),archived:z})}async setStatus(J,z){await this.client.request("task.status",{taskId:String(J),status:z})}async deleteTask(J,z){await this.client.request("task.delete",{taskId:String(J),force:z?.force})}async discoverAdoptableWorktrees(J){return(await this.client.request("worktree.discoverAdoptable",{repo:J})).worktrees}async adoptWorktree(J){let z=await this.client.request("worktree.adopt",J);return Dq(z.task)}async setActiveTask(J){await this.client.request("task.setActive",{taskId:J===null?null:String(J)})}handleEvent(J,z){if(J==="task.snapshot"){let Y=z?.tasks;if(Array.isArray(Y))this.setTasks(Y.map(Dq)),this.pruneEngineState(Y),this.pruneTaskJobs(Y);else JJ("orch",`dropped task.snapshot event: tasks is not an array (got ${KY(Y)})`);return}if(J==="active-task"){let Y=z?.taskId;this.setActiveTaskSig(typeof Y==="string"?Y:null);return}if(J==="update"){let Y=z?.info;this.setUpdateSig(Y??null);return}if(J==="engine-state"){let Y=z;if(typeof Y?.taskId!=="string"||typeof Y.state!=="string"){JJ("orch",`dropped engine-state event: taskId/state must be strings (taskId=${KY(Y?.taskId)}, state=${KY(Y?.state)})`);return}let Z=new Map(this.engineStateAcc());if(Y.state==="idle")Z.delete(Y.taskId);else Z.set(Y.taskId,{state:Y.state,detail:Y.detail,at:typeof Y.at==="number"?Y.at:0});this.setEngineStateSig(Z);return}if(J==="task.jobs"){let Y=z;if(typeof Y?.taskId!=="string"||Y.kind!=="ensureWorktree"){JJ("orch",`dropped task.jobs event: expected string taskId + kind "ensureWorktree" (taskId=${KY(Y?.taskId)}, kind=${KY(Y?.kind)})`);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(J==="worktree.changes"){let Y=jT(z);if(!Y){JJ("orch",`dropped worktree.changes event: malformed changes payload (${KY(z)})`);return}let Z=this.worktreeChangesAcc();if(Z&&WT(Z,Y))return;this.setWorktreeChangesSig(Y);return}if(J==="transcript.activity"){let Y=VT(z);if(!Y){JJ("orch",`dropped transcript.activity event: malformed activity payload (${KY(z)})`);return}let Z=this.transcriptActivityAcc();if(Z&&KT(Z,Y))return;this.setTranscriptActivitySig(Y);return}if(J==="ui-prefs"){let Y=BT(z);if(!Y){let Z=z?.theme;JJ("orch",`dropped ui-prefs event: theme must be a string (got ${KY(Z)})`);return}this.setUiPrefsSig(Y);return}if(J==="keybindings"){let Y=z;if(typeof Y?.rev!=="number"){JJ("orch",`dropped keybindings event: rev must be a number (got ${KY(Y?.rev)})`);return}this.setKeybindingsRevSig(Y.rev);return}}pruneEngineState(J){let z=this.engineStateAcc();if(z.size===0)return;let Y=new Set(J.map((G)=>G.id)),Z=null;for(let G of z.keys()){if(Y.has(G))continue;if(!Z)Z=new Map(z);Z.delete(G)}if(Z)this.setEngineStateSig(Z)}pruneTaskJobs(J){let z=this.taskJobsAcc();if(z.size===0)return;let Y=new Set(J.map((G)=>G.id)),Z=null;for(let G of z.keys()){if(Y.has(G))continue;if(!Z)Z=new Map(z);Z.delete(G)}if(Z)this.setTaskJobsSig(Z)}}function Dq(J){return{id:FX(J.id),title:J.title,repo:J.repo,branch:J.branch,worktreePath:J.worktreePath,kind:J.kind,status:J.status,archived:J.archived,pinned:J.pinned,vendor:J.vendor,prStatus:J.prStatus,modelEffort:J.modelEffort,createdAt:J.createdAt,updatedAt:J.updatedAt}}var _Y=C(()=>{GZ();RJ();YZ();W1();xG();tJ();AJ()});function VL(J){let z=J[Dz];if(!z){if(Object.defineProperty(J,Dz,{value:z=new Proxy(J,LT)}),!Array.isArray(J)){let Y=Object.keys(J),Z=Object.getOwnPropertyDescriptors(J),G=Object.getPrototypeOf(J),X=G!==null&&J!==null&&typeof J==="object"&&!Array.isArray(J)&&G!==Object.prototype;if(X){let q=Object.getOwnPropertyDescriptors(G);Y.push(...Object.keys(q)),Object.assign(Z,q)}for(let q=0,H=Y.length;q<H;q++){let f=Y[q];if(X&&f==="constructor")continue;if(Z[f].get)Object.defineProperty(J,f,{configurable:!0,enumerable:Z[f].enumerable,get:Z[f].get.bind(z)})}}}return z}function Hf(J){let z;return J!=null&&typeof J==="object"&&(J[Dz]||!(z=Object.getPrototypeOf(J))||z===Object.prototype||Array.isArray(J))}function Fq(J,z=new Set){let Y,Z,G,X;if(Y=J!=null&&J[O9])return Y;if(!Hf(J)||z.has(J))return J;if(Array.isArray(J)){if(Object.isFrozen(J))J=J.slice(0);else z.add(J);for(let q=0,H=J.length;q<H;q++)if(G=J[q],(Z=Fq(G,z))!==G)J[q]=Z}else{if(Object.isFrozen(J))J=Object.assign({},J);else z.add(J);let q=Object.keys(J),H=Object.getOwnPropertyDescriptors(J);for(let f=0,j=q.length;f<j;f++){if(X=q[f],H[X].get)continue;if(G=J[X],(Z=Fq(G,z))!==G)J[X]=Z}}return J}function ff(J,z){let Y=J[z];if(!Y)Object.defineProperty(J,z,{value:Y=Object.create(null)});return Y}function Mq(J,z,Y){if(J[z])return J[z];let[Z,G]=p(Y,{equals:!1,internal:!0});return Z.$=G,J[z]=Z}function UT(J,z){let Y=Reflect.getOwnPropertyDescriptor(J,z);if(!Y||Y.get||!Y.configurable||z===Dz||z===iG)return Y;return delete Y.value,delete Y.writable,Y.get=()=>J[Dz][z],Y}function KL(J){xQ()&&Mq(ff(J,iG),WL)()}function DT(J){return KL(J),Reflect.ownKeys(J)}function jf(J,z,Y,Z=!1){if(z==="__proto__"){console.warn('Refusing to set "__proto__" on a store.');return}if(!Z&&J[z]===Y)return;let G=J[z],X=J.length;if(BL.onStoreNodeUpdate&&BL.onStoreNodeUpdate(J,z,Y,G),Y===void 0){if(delete J[z],J[UY]&&J[UY][z]&&G!==void 0)J[UY][z].$()}else if(J[z]=Y,J[UY]&&J[UY][z]&&G===void 0)J[UY][z].$();let q=ff(J,iG),H;if(H=Mq(q,z,G))H.$(()=>Y);if(Array.isArray(J)&&J.length!==X){for(let f=J.length;f<X;f++)(H=q[f])&&H.$();(H=Mq(q,"length",X))&&H.$(J.length)}(H=q[WL])&&H.$()}function UL(J,z){let Y=Object.keys(z);for(let Z=0;Z<Y.length;Z+=1){let G=Y[Z];if(DL(G))continue;jf(J,G,z[G])}}function DL(J){return J==="__proto__"||J==="constructor"||J==="prototype"}function FT(J,z){if(typeof z==="function")z=z(J);if(z=Fq(z),Array.isArray(z)){if(J===z)return;let Y=0,Z=z.length;for(;Y<Z;Y++){let G=z[Y];if(J[Y]!==G)jf(J,Y,G)}jf(J,"length",Z)}else UL(J,z)}function Lq(J,z,Y=[]){let Z,G=J;if(z.length>1){Z=z.shift();let q=typeof Z,H=Array.isArray(J);if(q==="string"&&(Z==="__proto__"||z.length>1&&DL(Z))){console.warn(`Refusing to traverse unsafe key "${Z}" on a store.`);return}if(Array.isArray(Z)){for(let f=0;f<Z.length;f++)Lq(J,[Z[f]].concat(z),Y);return}else if(H&&q==="function"){for(let f=0;f<J.length;f++)if(Z(J[f],f))Lq(J,[f].concat(z),Y);return}else if(H&&q==="object"){let{from:f=0,to:j=J.length-1,by:V=1}=Z;for(let B=f;B<=j;B+=V)Lq(J,[B].concat(z),Y);return}else if(z.length>1){Lq(J[Z],z,[Z].concat(Y));return}G=J[Z],Y=[Z].concat(Y)}let X=z[0];if(typeof X==="function"){if(X=X(G,Y),X===G)return}if(Z===void 0&&X==null)return;if(X=Fq(X),Z===void 0||Hf(G)&&Hf(X)&&!Array.isArray(X))UL(G,X);else jf(J,Z,X)}function $z(...[J,z]){let Y=Fq(J||{}),Z=Array.isArray(Y);if(typeof Y!=="object"&&typeof Y!=="function")throw Error(`Unexpected type ${typeof Y} received when initializing 'createStore'. Expected an object.`);let G=VL(Y);l7.registerGraph({value:Y,name:z&&z.name});function X(...q){TQ(()=>{Z&&q.length===1?FT(Y,q[0]):Lq(Y,q)})}return[G,X]}var O9,iG,UY,WL,BL,LT,La;var lG=C(()=>{W1();O9=Symbol("store-raw"),iG=Symbol("store-node"),UY=Symbol("store-has"),WL=Symbol("store-self"),BL={onStoreNodeUpdate:null};LT={get(J,z,Y){if(z===O9)return J;if(z===Dz)return Y;if(z===IQ)return KL(J),Y;let Z=ff(J,iG),G=Z[z],X=G?G():J[z];if(z===iG||z===UY||z==="__proto__")return X;if(!G){let q=Object.getOwnPropertyDescriptor(J,z);if(xQ()&&(typeof X!=="function"||J.hasOwnProperty(z))&&!(q&&q.get))X=Mq(Z,z,X)()}return Hf(X)?VL(X):X},has(J,z){if(z===O9||z===Dz||z===IQ||z===iG||z===UY||z==="__proto__")return!0;return xQ()&&Mq(ff(J,UY),z)(),z in J},set(){return console.warn("Cannot mutate a Store directly"),!0},deleteProperty(){return console.warn("Cannot mutate a Store directly"),!0},ownKeys:DT,getOwnPropertyDescriptor:UT};La=Symbol("store-root")});function Bf(J){let z=Ez();return{provider:(Y)=>{let Z=J.init(Y);return b(Y0,{get when(){return Z.ready===void 0||Z.ready===!0},get children(){return b(z.Provider,{value:Z,get children(){return Y.children}})}})},use(){let Y=PJ(z);if(!Y)throw Error(`${J.name} context must be used within a context provider`);return Y}}}var A9=C(()=>{E();E();W1()});import{RGBA as PZ}from"@opentui/core";function OT(){return Object.keys(VJ.themes)}function Oq(J){return Boolean(VJ.themes[J])}function g9(J,z){if(!J)return!1;if(!z||typeof z!=="object"||!z.theme)return!1;return hZ("themes",{...VJ.themes,[J]:z}),!0}function R9(J,z="dark"){let Y=J.defs??{};function Z(f,j=[]){if(typeof f==="string"){if(f==="transparent"||f==="none")return PZ.fromInts(0,0,0,0);if(f.startsWith("#"))return PZ.fromHex(f);if(j.includes(f))return PZ.fromInts(0,0,0);let V=Y[f]??J.theme[f];if(V===void 0)return PZ.fromInts(0,0,0);return Z(V,[...j,f])}return Z(f[z],j)}let G={};for(let[f,j]of Object.entries(J.theme))G[f]=Z(j);let X=G.text??PZ.fromHex("#ffffff"),q=G.background??PZ.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 MT,vZ,VJ,hZ,w0,LL;var E1=C(()=>{E();W1();lG();A9();rQ();oQ();sQ();tQ();eQ();JH();zH();MT={claude:VG,conductor:KG,nord:DG,opencode:LG,dracula:UG,tokyonight:MG,"osaka-jade":FG},vZ=["primary","success","info"],[VJ,hZ]=$z({themes:{...MT},active:"claude",mode:"dark",transparentBackground:!1,focusAccent:"primary"});({use:w0,provider:LL}=Bf({name:"Theme",init:(J)=>{if(J.mode)hZ("mode",J.mode);if(J.theme&&Oq(J.theme))hZ("active",J.theme);let z=WJ(),Y=U0(()=>{let G=VJ.themes[VJ.active];if(G)return R9(G,VJ.mode);let X=VJ.themes.claude??VJ.themes.opencode??Object.values(VJ.themes)[0];if(!X)return R9({theme:{background:"#000000",text:"#ffffff"}},VJ.mode);return R9(X,VJ.mode)}),Z=U0(()=>{let G=Y(),X=G[VJ.focusAccent]??G.primary,q={...G,focusAccent:X};if(!VJ.transparentBackground)return q;let H=PZ.fromInts(0,0,0,0);return{...q,background:H,backgroundPanel:H}});return _0(()=>{z?.setBackgroundColor(Z().background)}),{theme:new Proxy({},{get(G,X){let q=Z();return q[X]??q.text}}),get selected(){return VJ.active},get transparentBackground(){return VJ.transparentBackground},get focusAccent(){return VJ.focusAccent},mode(){return VJ.mode},set(G){if(!Oq(G))return!1;return hZ("active",G),!0},setMode(G){hZ("mode",G)},setTransparentBackground(G){hZ("transparentBackground",G)},setFocusAccent(G){hZ("focusAccent",G)},all(){return OT()},has(G){return Oq(G)}}}}))});var FL,ML;var OL=C(()=>{FL={cancel:"Cancel",confirm:"Confirm",paneCrash:{title:"This pane crashed",hint:"Reload it from the Tasks pane (the error was logged to client.log)."},rename:{defaultTitle:"Rename task",defaultFieldLabel:"title",footerHint:"enter {submitLabel} \xB7 esc cancel",defaultSubmitLabel:"rename"}},ML={cancel:"\u53D6\u6D88",confirm:"\u786E\u8BA4",paneCrash:{title:"\u6B64\u9762\u677F\u5DF2\u5D29\u6E83",hint:"\u8BF7\u4ECE\u4EFB\u52A1\u9762\u677F\u91CD\u65B0\u52A0\u8F7D\uFF08\u9519\u8BEF\u5DF2\u8BB0\u5F55\u5230 client.log\uFF09\u3002"},rename:{defaultTitle:"\u91CD\u547D\u540D\u4EFB\u52A1",defaultFieldLabel:"\u540D\u79F0",footerHint:"enter {submitLabel} \xB7 esc \u53D6\u6D88",defaultSubmitLabel:"\u91CD\u547D\u540D"}}});var AL,RL;var gL=C(()=>{AL={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"}},RL={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 NL,CL;var kL=C(()=>{NL={title:"kobe \u2014 keybindings",esc:"esc"},CL={title:"kobe \u2014 \u5FEB\u6377\u952E",esc:"esc"}});var bL,SL;var IL=C(()=>{bL={empty:"No engine history for this task.",loading:"loading\u2026",sessionLabel:"Session",archivedTag:"ARCHIVED",hint:"[ ] session \xB7 j/k scroll \xB7 \u23CE expand \xB7 q close",hintExpanded:"[ ] session \xB7 j/k scroll \xB7 \u23CE collapse \xB7 q close",role:{user:"USER",assistant:"ASSISTANT",system:"SYSTEM"},thinking:"thinking"},SL={empty:"\u6B64\u4EFB\u52A1\u6CA1\u6709\u5F15\u64CE\u5386\u53F2\u8BB0\u5F55\u3002",loading:"\u52A0\u8F7D\u4E2D\u2026",sessionLabel:"\u4F1A\u8BDD",archivedTag:"\u5DF2\u5F52\u6863",hint:"[ ] \u4F1A\u8BDD \xB7 j/k \u6EDA\u52A8 \xB7 \u23CE \u5C55\u5F00 \xB7 q \u5173\u95ED",hintExpanded:"[ ] \u4F1A\u8BDD \xB7 j/k \u6EDA\u52A8 \xB7 \u23CE \u6536\u8D77 \xB7 q \u5173\u95ED",role:{user:"\u7528\u6237",assistant:"\u52A9\u624B",system:"\u7CFB\u7EDF"},thinking:"\u601D\u8003"}});var yL,TL;var xL=C(()=>{yL={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)"}},TL={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 uL,EL;var wL=C(()=>{uL={title:"New task",tabs:{existing:"For Existing",clone:"For New Repo",adopt:"Adopt Worktree"},field:{engine:"engine",repo:"repo",fromBranch:"from branch",gitUrl:"git url",parentDir:"parent dir",folderName:"folder name",baseBranch:"base branch",adoptFilter:"filter (path glob)"},placeholder:{folderName:"auto from url",adoptFilter:"* \u2014 type e.g. feature-* to narrow"},hint:{engineCycle:"ctrl+e",remembered:"(remembered \u2014 next clone defaults to this dir)",currentDir:"(current dir)",noBranchesFound:"(no local branches found \u2014 typed text will be used as ref)",noMatchBranch:"(no match \u2014 typed text will be used as ref)",scanningWorktrees:"scanning worktrees\u2026",legend:"\u2191\u2193 pick \xB7 tab next field \xB7 \u2190\u2192 switch \xB7 enter done \xB7 esc cancel"},picker:{moreAbove:"\u2191 {count} more",moreBelow:"\u2193 {count} more"},adopt:{repoLine:"repo: {path}",repoNone:"(none)",noUnlinked:"no unlinked worktrees \u2014 every git worktree here is already a task",noMatch:"no worktrees match the filter",hintSelected:"{count} selected \xB7 enter toggles \xB7 ctrl+a all \xB7 Create imports",hintDefault:"enter toggles \xB7 ctrl+a all \xB7 Create imports the highlighted row",summaryAll:"Adopted {count} worktree(s)",summaryPartial:"Adopted {done}/{total} worktrees \u2014 the rest failed (see log)",summaryNone:"Couldn't adopt any worktree: {error}"},clone:{progressFallback:"Cloning\u2026",progressInto:"Cloning into {target}\u2026"},button:{create:"[ Create ]",createFocused:"\u25B8 [ Create ]",cloning:"[ Cloning\u2026 ]"},error:{gitUrlRequired:"git URL is required",gitUrlInvalid:"does not look like a git URL: {url}",folderRequired:"folder name is required",folderHasSeparator:"folder name cannot contain path separators",parentRequired:"parent directory is required",parentNotFound:"parent directory does not exist: {path}",parentNotDir:"not a directory: {path}",targetExists:"target already exists: {path}",cloneFailed:"git clone failed: {error}",noAdoptable:"no adoptable worktrees to import"}},EL={title:"\u65B0\u5EFA\u4EFB\u52A1",tabs:{existing:"\u5DF2\u6709\u4ED3\u5E93",clone:"\u514B\u9686\u65B0\u4ED3\u5E93",adopt:"\u63A5\u7BA1 Worktree"},field:{engine:"\u5F15\u64CE",repo:"\u4ED3\u5E93",fromBranch:"\u57FA\u51C6\u5206\u652F",gitUrl:"git \u5730\u5740",parentDir:"\u7236\u76EE\u5F55",folderName:"\u6587\u4EF6\u5939\u540D",baseBranch:"\u57FA\u51C6\u5206\u652F",adoptFilter:"\u8FC7\u6EE4\uFF08\u8DEF\u5F84 glob\uFF09"},placeholder:{folderName:"\u81EA\u52A8\u4ECE\u5730\u5740\u63A8\u5BFC",adoptFilter:"* \u2014 \u8F93\u5165\u5982 feature-* \u6765\u7F29\u5C0F\u8303\u56F4"},hint:{engineCycle:"ctrl+e",remembered:"\uFF08\u5DF2\u8BB0\u4F4F \u2014 \u4E0B\u6B21\u514B\u9686\u9ED8\u8BA4\u4F7F\u7528\u6B64\u76EE\u5F55\uFF09",currentDir:"\uFF08\u5F53\u524D\u76EE\u5F55\uFF09",noBranchesFound:"\uFF08\u672A\u627E\u5230\u672C\u5730\u5206\u652F \u2014 \u5C06\u76F4\u63A5\u4F7F\u7528\u8F93\u5165\u6587\u672C\u4F5C\u4E3A ref\uFF09",noMatchBranch:"\uFF08\u65E0\u5339\u914D \u2014 \u5C06\u76F4\u63A5\u4F7F\u7528\u8F93\u5165\u6587\u672C\u4F5C\u4E3A ref\uFF09",scanningWorktrees:"\u6B63\u5728\u626B\u63CF worktree\u2026",legend:"\u2191\u2193 \u9009\u62E9 \xB7 tab \u4E0B\u4E00\u5B57\u6BB5 \xB7 \u2190\u2192 \u5207\u6362 \xB7 enter \u786E\u8BA4 \xB7 esc \u53D6\u6D88"},picker:{moreAbove:"\u2191 \u8FD8\u6709 {count} \u9879",moreBelow:"\u2193 \u8FD8\u6709 {count} \u9879"},adopt:{repoLine:"\u4ED3\u5E93\uFF1A{path}",repoNone:"\uFF08\u65E0\uFF09",noUnlinked:"\u6CA1\u6709\u672A\u5173\u8054\u7684 worktree \u2014 \u6B64\u4ED3\u5E93\u6240\u6709 git worktree \u5747\u5DF2\u662F\u4EFB\u52A1",noMatch:"\u6CA1\u6709 worktree \u5339\u914D\u6B64\u8FC7\u6EE4\u6761\u4EF6",hintSelected:"\u5DF2\u9009 {count} \u9879 \xB7 enter \u5207\u6362\u9009\u4E2D \xB7 ctrl+a \u5168\u9009 \xB7 \u521B\u5EFA \u5BFC\u5165",hintDefault:"enter \u5207\u6362\u9009\u4E2D \xB7 ctrl+a \u5168\u9009 \xB7 \u521B\u5EFA \u5C06\u5BFC\u5165\u9AD8\u4EAE\u884C",summaryAll:"\u5DF2\u63A5\u7BA1 {count} \u4E2A worktree",summaryPartial:"\u5DF2\u63A5\u7BA1 {done}/{total} \u4E2A worktree \u2014 \u5176\u4F59\u5931\u8D25\uFF08\u8BE6\u89C1\u65E5\u5FD7\uFF09",summaryNone:"\u6CA1\u6709 worktree \u63A5\u7BA1\u6210\u529F\uFF1A{error}"},clone:{progressFallback:"\u514B\u9686\u4E2D\u2026",progressInto:"\u6B63\u5728\u514B\u9686\u5230 {target}\u2026"},button:{create:"[ \u521B\u5EFA ]",createFocused:"\u25B8 [ \u521B\u5EFA ]",cloning:"[ \u514B\u9686\u4E2D\u2026 ]"},error:{gitUrlRequired:"git \u5730\u5740\u4E0D\u80FD\u4E3A\u7A7A",gitUrlInvalid:"\u4E0D\u50CF\u662F\u6709\u6548\u7684 git \u5730\u5740\uFF1A{url}",folderRequired:"\u6587\u4EF6\u5939\u540D\u4E0D\u80FD\u4E3A\u7A7A",folderHasSeparator:"\u6587\u4EF6\u5939\u540D\u4E0D\u80FD\u5305\u542B\u8DEF\u5F84\u5206\u9694\u7B26",parentRequired:"\u7236\u76EE\u5F55\u4E0D\u80FD\u4E3A\u7A7A",parentNotFound:"\u7236\u76EE\u5F55\u4E0D\u5B58\u5728\uFF1A{path}",parentNotDir:"\u4E0D\u662F\u76EE\u5F55\uFF1A{path}",targetExists:"\u76EE\u6807\u8DEF\u5F84\u5DF2\u5B58\u5728\uFF1A{path}",cloneFailed:"git clone \u5931\u8D25\uFF1A{error}",noAdoptable:"\u6CA1\u6709\u53EF\u63A5\u7BA1\u7684 worktree"}}});var PL,hL;var vL=C(()=>{PL={badge:{newActivity:"\u25CF new"},preview:{diffVsHead:"diff vs HEAD",file:"file",closeHint:"\xB7 q to close",loading:"loading\u2026"}},hL={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 mL,cL;var dL=C(()=>{mL={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"},cL={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 nL,iL;var lL=C(()=>{nL={title:"Settings",esc:"esc",nav:{default:"j/k pick \xB7 h/l switch level \xB7 enter activate \xB7 esc close",feedback:"tab next field \xB7 enter sends on Send \xB7 esc close"},sections:{general:"General",engines:"Engines",accounts:"Accounts",keys:"Keybindings",feedback:"Feedback",dev:"Dev"},general:{theme:"Theme",themeHint:"l to enter list \xB7 j/k to highlight \xB7 enter to apply",language:"Language",languageHint:"Display language for kobe's UI. l to enter list \xB7 j/k to highlight \xB7 enter to apply.",transparent:"Transparent background",transparentHint:"Drops the renderer's bg fill so the host terminal shows through. `t` toggles.",on:"[x] on",off:"[ ] off",focusAccent:"Focus accent",focusAccentHint:"Color of focused pane title, \u258C marker, and split borders.",accentPrimary:"Primary (brand accent)",accentSuccess:"Success (legacy green)",accentInfo:"Info (cool blue)",notifications:"Notifications",notificationsHint:"Fired when a background chat tab finishes or pauses on an approval. Toast = bottom-right popup; Sound = terminal bell + chime. Tab-chip unread dot is always on.",toast:"Toast",sound:"Sound",zen:"Zen mode",zenHint:"The `zen` chip (above the file list) and `prefix`+space collapse the ChatTab to the engine pane \u2014 hiding the file and terminal panes. Keep this on to leave the Tasks rail visible so you can always get back out.",zenKeepTasks:"Keep Tasks pane in zen mode",surface:"Settings page",surfaceHint:"Where Settings and the other full dialogs (new task, rename) open. ChatTab = a dedicated full-window page alongside the engine tabs; Task panel = an overlay inside the left Tasks pane. enter to pick.",surfaceChattab:"ChatTab (separate page)",surfaceTaskpanel:"Task panel (in-pane overlay)",editor:"Editor",editorHint:"What `e` opens a file with in the file tree (enter stays the read-only preview). `auto` (default) follows $VISUAL / $EDITOR, else auto-detects nvim / vim / emacs / nano. enter on the row below cycles auto / vim / nvim / nano / emacs / custom; if the editor isn't installed it falls back to the preview.",editorRow:"editor: < {kind} > (enter to change)",editorCustom:"custom: {cmd}",editorCustomUnset:"(unset \u2014 enter to edit)"},engines:{title:"Launch command",hint:"The command each engine's task pane runs. Override a built-in when your binary isn't on PATH as `claude` / `codex` (e.g. it's `cl`) or to pass default flags, or add your own engine. \u25CF = default engine for new tasks (also set by Ctrl+Shift+T). enter edit command \xB7 r rename \xB7 x reset/remove \xB7 d set default.",defaultTag:" (default)",customTag:" (custom)",addEngine:"+ Add engine"},accounts:{title:"Accounts",hint:"Read-only view of locally-detected engine accounts. Login flows land here later.",checking:"Checking\u2026",notLoggedIn:"\u25CB Not logged in",loggedIn:"\u25CF Logged in: {email}",apiKeyConfigured:"\u25CF API key configured",chatgptLogin:"\u25CF ChatGPT login: {email}",tokenConfigured:"\u25CF Token configured ({source})",copilotDetected:"\u25CF Copilot login detected"},keybindings:{title:"Keybindings",hint:"Rebind chords by editing the YAML below, then restart kobe (or respawn the pane). Press F1 anywhere for the live keymap with every binding id.",configFile:"Config file",notCreated:" (not created yet)",example:"Example",overridesApplied:"Overrides applied",none:"none",warnings:"Warnings"},feedback:{title:"Feedback",hint:"Sends a GitHub Discussion to the kobe repo through `gh`. Requires `gh auth login`; category defaults to Feedback.",titleLabel:"title",titlePlaceholder:"Short summary",descriptionLabel:"description",descriptionPlaceholder:"What happened? (enter for a new line \xB7 tab to Send)",send:"[enter] Send to GitHub Discussions"},dev:{reset:"Reset UI state",resetHint:"Clears ~/.config/kobe/state.json and ~/.kobe/tasks.json, then quits kobe \u2014 relaunch to start fresh. Working session / Archive lists, pane sizes, theme, model picks all reset. Worktrees on disk and Claude Code session history are not touched.",resetButton:"[enter] Reset",restart:"Restart backend",restartHint:"Stops the kobe daemon and quits this kobe window so the next launch spawns a fresh daemon \u2014 picks up daemon / orchestrator / engine edits without a process kill. Other attached kobe windows will lose their connection too.",restartButton:"[enter] Restart",doctorHint:"Daemon wedged or unresponsive? From a shell, run `kobe doctor` to diagnose, or `kobe reset` to stop the daemon + kill sessions (keeps your tasks). Use `kobe reset --hard` only to also wipe the task index + UI state.",experimental:"Experimental",remoteHint:"Remote projects (SSH): register a project whose git worktrees + engine run on another host over SSH, driven from this local kobe. Unfinished \u2014 file/diff panes still degrade for remote. Enables `kobe add --remote`.",remoteOn:"[x] Remote projects (on)",remoteOff:"[ ] Remote projects (off)",autoStatusHint:"Auto status flow: a backlog task moves to in_progress when its engine starts a turn, and new claude sessions get a system-prompt note telling the agent to set in_review itself when the work is done. Never touches done/canceled.",autoStatusOn:"[x] Auto status flow (on)",autoStatusOff:"[ ] Auto status flow (off)",dispatcherHint:"Field-notes dispatcher: task sessions file one-line gotchas (`kobe api note`), the daemon forwards each to the repo's main session, and that session relays them to the in-flight tasks that benefit (`kobe api dispatch`). Web-hosted sessions receive the relays today.",dispatcherOn:"[x] Field-notes dispatcher (on)",dispatcherOff:"[ ] Field-notes dispatcher (off)",archivedHistoryHint:"Archived history preview (beta): opening an archived task shows a read-only `kobe history` pane (session selector + transcript) in the engine slot instead of relaunching the engine. Its transcript survives worktree removal because the engine store is keyed by the worktree path. Shared with the web dashboard.",archivedHistoryOn:"[x] Archived history preview (on)",archivedHistoryOff:"[ ] Archived history preview (off)"}},iL={title:"\u8BBE\u7F6E",esc:"esc",nav:{default:"j/k \u9009\u62E9 \xB7 h/l \u5207\u6362\u5C42\u7EA7 \xB7 enter \u786E\u8BA4 \xB7 esc \u5173\u95ED",feedback:"tab \u4E0B\u4E00\u9879 \xB7 enter \u5728\u53D1\u9001\u9879\u53D1\u9001 \xB7 esc \u5173\u95ED"},sections:{general:"\u901A\u7528",engines:"\u5F15\u64CE",accounts:"\u8D26\u6237",keys:"\u5FEB\u6377\u952E",feedback:"\u53CD\u9988",dev:"\u5F00\u53D1"},general:{theme:"\u4E3B\u9898",themeHint:"l \u8FDB\u5165\u5217\u8868 \xB7 j/k \u9AD8\u4EAE \xB7 enter \u5E94\u7528",language:"\u8BED\u8A00",languageHint:"kobe \u754C\u9762\u7684\u663E\u793A\u8BED\u8A00\u3002l \u8FDB\u5165\u5217\u8868 \xB7 j/k \u9AD8\u4EAE \xB7 enter \u5E94\u7528\u3002",transparent:"\u900F\u660E\u80CC\u666F",transparentHint:"\u53BB\u6389\u6E32\u67D3\u5668\u7684\u80CC\u666F\u586B\u5145\uFF0C\u8BA9\u5BBF\u4E3B\u7EC8\u7AEF\u900F\u51FA\u6765\u3002\u6309 `t` \u5207\u6362\u3002",on:"[x] \u5F00",off:"[ ] \u5173",focusAccent:"\u805A\u7126\u5F3A\u8C03\u8272",focusAccentHint:"\u805A\u7126\u9762\u677F\u6807\u9898\u3001\u258C \u6807\u8BB0\u548C\u5206\u9694\u8FB9\u6846\u7684\u989C\u8272\u3002",accentPrimary:"\u4E3B\u8272\uFF08\u54C1\u724C\u5F3A\u8C03\u8272\uFF09",accentSuccess:"\u6210\u529F\u8272\uFF08\u4F20\u7EDF\u7EFF\uFF09",accentInfo:"\u4FE1\u606F\u8272\uFF08\u51B7\u84DD\uFF09",notifications:"\u901A\u77E5",notificationsHint:"\u540E\u53F0\u804A\u5929\u9875\u5B8C\u6210\u6216\u5728\u5BA1\u6279\u5904\u6682\u505C\u65F6\u89E6\u53D1\u3002Toast = \u53F3\u4E0B\u89D2\u5F39\u7A97\uFF1BSound = \u7EC8\u7AEF\u54CD\u94C3 + \u63D0\u793A\u97F3\u3002\u6807\u7B7E\u4E0A\u7684\u672A\u8BFB\u5706\u70B9\u59CB\u7EC8\u5F00\u542F\u3002",toast:"Toast \u5F39\u7A97",sound:"\u58F0\u97F3",zen:"\u7985\u6A21\u5F0F",zenHint:"`zen` \u6807\u8BB0\uFF08\u6587\u4EF6\u5217\u8868\u4E0A\u65B9\uFF09\u548C `prefix`+\u7A7A\u683C \u4F1A\u628A ChatTab \u6536\u8D77\u5230\u5F15\u64CE\u9762\u677F\u2014\u2014\u9690\u85CF\u6587\u4EF6\u4E0E\u7EC8\u7AEF\u9762\u677F\u3002\u4FDD\u6301\u5F00\u542F\u53EF\u8BA9 Tasks \u4FA7\u680F\u59CB\u7EC8\u53EF\u89C1\uFF0C\u65B9\u4FBF\u968F\u65F6\u9000\u51FA\u3002",zenKeepTasks:"\u7985\u6A21\u5F0F\u4E0B\u4FDD\u7559 Tasks \u9762\u677F",surface:"\u8BBE\u7F6E\u9875\u9762",surfaceHint:"\u8BBE\u7F6E\u53CA\u5176\u4ED6\u5B8C\u6574\u5BF9\u8BDD\u6846\uFF08\u65B0\u5EFA\u4EFB\u52A1\u3001\u91CD\u547D\u540D\uFF09\u7684\u6253\u5F00\u4F4D\u7F6E\u3002ChatTab = \u4E0E\u5F15\u64CE\u6807\u7B7E\u5E76\u5217\u7684\u72EC\u7ACB\u6574\u7A97\u9875\u9762\uFF1BTask panel = \u5DE6\u4FA7 Tasks \u9762\u677F\u5185\u7684\u6D6E\u5C42\u3002enter \u9009\u62E9\u3002",surfaceChattab:"ChatTab\uFF08\u72EC\u7ACB\u9875\u9762\uFF09",surfaceTaskpanel:"Task panel\uFF08\u9762\u677F\u5185\u6D6E\u5C42\uFF09",editor:"\u7F16\u8F91\u5668",editorHint:"\u6587\u4EF6\u6811\u91CC\u6309 `e` \u7528\u4EC0\u4E48\u6253\u5F00\u6587\u4EF6\uFF08enter \u4ECD\u662F\u53EA\u8BFB\u9884\u89C8\uFF09\u3002`auto`\uFF08\u9ED8\u8BA4\uFF09\u8DDF\u968F $VISUAL / $EDITOR\uFF0C\u5426\u5219\u81EA\u52A8\u63A2\u6D4B nvim / vim / emacs / nano\u3002\u5728\u4E0B\u65B9\u4E00\u884C\u6309 enter \u5728 auto / vim / nvim / nano / emacs / custom \u95F4\u5FAA\u73AF\uFF1B\u7F16\u8F91\u5668\u672A\u5B89\u88C5\u65F6\u56DE\u9000\u5230\u9884\u89C8\u3002",editorRow:"\u7F16\u8F91\u5668: < {kind} > (enter \u5207\u6362)",editorCustom:"\u81EA\u5B9A\u4E49: {cmd}",editorCustomUnset:"(\u672A\u8BBE\u7F6E \u2014 enter \u7F16\u8F91)"},engines:{title:"\u542F\u52A8\u547D\u4EE4",hint:"\u6BCF\u4E2A\u5F15\u64CE\u7684\u4EFB\u52A1\u9762\u677F\u8FD0\u884C\u7684\u547D\u4EE4\u3002\u5F53\u4E8C\u8FDB\u5236\u6587\u4EF6\u4E0D\u5728 PATH \u4E0A\u7684 `claude` / `codex` \u540D\u4E0B\uFF08\u6BD4\u5982\u53EB `cl`\uFF09\u3001\u8981\u4F20\u9ED8\u8BA4\u53C2\u6570\uFF0C\u6216\u8981\u6DFB\u52A0\u81EA\u5DF1\u7684\u5F15\u64CE\u65F6\uFF0C\u53EF\u8986\u76D6\u5185\u7F6E\u9879\u3002\u25CF = \u65B0\u4EFB\u52A1\u7684\u9ED8\u8BA4\u5F15\u64CE\uFF08\u4E5F\u53EF\u7528 Ctrl+Shift+T \u8BBE\u7F6E\uFF09\u3002enter \u7F16\u8F91\u547D\u4EE4 \xB7 r \u91CD\u547D\u540D \xB7 x \u91CD\u7F6E/\u79FB\u9664 \xB7 d \u8BBE\u4E3A\u9ED8\u8BA4\u3002",defaultTag:" (\u9ED8\u8BA4)",customTag:" (\u81EA\u5B9A\u4E49)",addEngine:"+ \u6DFB\u52A0\u5F15\u64CE"},accounts:{title:"\u8D26\u6237",hint:"\u672C\u5730\u63A2\u6D4B\u5230\u7684\u5F15\u64CE\u8D26\u6237\u7684\u53EA\u8BFB\u89C6\u56FE\u3002\u767B\u5F55\u6D41\u7A0B\u7A0D\u540E\u4F1A\u63A5\u5165\u8FD9\u91CC\u3002",checking:"\u68C0\u67E5\u4E2D\u2026",notLoggedIn:"\u25CB \u672A\u767B\u5F55",loggedIn:"\u25CF \u5DF2\u767B\u5F55: {email}",apiKeyConfigured:"\u25CF \u5DF2\u914D\u7F6E API key",chatgptLogin:"\u25CF ChatGPT \u767B\u5F55: {email}",tokenConfigured:"\u25CF \u5DF2\u914D\u7F6E Token ({source})",copilotDetected:"\u25CF \u68C0\u6D4B\u5230 Copilot \u767B\u5F55"},keybindings:{title:"\u5FEB\u6377\u952E",hint:"\u7F16\u8F91\u4E0B\u9762\u7684 YAML \u6765\u91CD\u7ED1\u5B9A\u6309\u952E\uFF0C\u7136\u540E\u91CD\u542F kobe\uFF08\u6216\u91CD\u5EFA\u9762\u677F\uFF09\u3002\u4EFB\u610F\u4F4D\u7F6E\u6309 F1 \u67E5\u770B\u5E26\u6BCF\u4E2A\u7ED1\u5B9A id \u7684\u5B9E\u65F6\u952E\u4F4D\u8868\u3002",configFile:"\u914D\u7F6E\u6587\u4EF6",notCreated:" (\u5C1A\u672A\u521B\u5EFA)",example:"\u793A\u4F8B",overridesApplied:"\u5DF2\u5E94\u7528\u7684\u8986\u76D6",none:"\u65E0",warnings:"\u8B66\u544A"},feedback:{title:"\u53CD\u9988",hint:"\u901A\u8FC7 `gh` \u5411 kobe \u4ED3\u5E93\u53D1\u4E00\u6761 GitHub Discussion\u3002\u9700\u8981 `gh auth login`\uFF1B\u5206\u7C7B\u9ED8\u8BA4\u4E3A Feedback\u3002",titleLabel:"\u6807\u9898",titlePlaceholder:"\u7B80\u77ED\u6982\u62EC",descriptionLabel:"\u63CF\u8FF0",descriptionPlaceholder:"\u53D1\u751F\u4E86\u4EC0\u4E48\uFF1F(enter \u6362\u884C \xB7 tab \u8DF3\u5230\u53D1\u9001)",send:"[enter] \u53D1\u9001\u5230 GitHub Discussions"},dev:{reset:"\u91CD\u7F6E UI \u72B6\u6001",resetHint:"\u6E05\u7A7A ~/.config/kobe/state.json \u548C ~/.kobe/tasks.json\uFF0C\u7136\u540E\u9000\u51FA kobe\u2014\u2014\u91CD\u65B0\u542F\u52A8\u5373\u53EF\u4ECE\u5934\u5F00\u59CB\u3002\u5DE5\u4F5C\u4F1A\u8BDD / \u5F52\u6863\u5217\u8868\u3001\u9762\u677F\u5C3A\u5BF8\u3001\u4E3B\u9898\u3001\u6A21\u578B\u9009\u62E9\u90FD\u4F1A\u91CD\u7F6E\u3002\u78C1\u76D8\u4E0A\u7684 worktree \u548C Claude Code \u4F1A\u8BDD\u5386\u53F2\u4E0D\u53D7\u5F71\u54CD\u3002",resetButton:"[enter] \u91CD\u7F6E",restart:"\u91CD\u542F\u540E\u7AEF",restartHint:"\u505C\u6B62 kobe daemon \u5E76\u9000\u51FA\u5F53\u524D kobe \u7A97\u53E3\uFF0C\u4E0B\u6B21\u542F\u52A8\u4F1A\u62C9\u8D77\u4E00\u4E2A\u5168\u65B0\u7684 daemon\u2014\u2014\u65E0\u9700\u6740\u8FDB\u7A0B\u5373\u53EF\u5E94\u7528 daemon / orchestrator / engine \u7684\u6539\u52A8\u3002\u5176\u4ED6\u5DF2\u8FDE\u63A5\u7684 kobe \u7A97\u53E3\u4E5F\u4F1A\u65AD\u5F00\u8FDE\u63A5\u3002",restartButton:"[enter] \u91CD\u542F",doctorHint:"daemon \u5361\u4F4F\u6216\u65E0\u54CD\u5E94\uFF1F\u5728 shell \u91CC\u8FD0\u884C `kobe doctor` \u8BCA\u65AD\uFF0C\u6216 `kobe reset` \u505C\u6B62 daemon + \u6740\u6389\u4F1A\u8BDD\uFF08\u4FDD\u7559\u4F60\u7684\u4EFB\u52A1\uFF09\u3002\u53EA\u6709\u8981\u540C\u65F6\u6E05\u7A7A\u4EFB\u52A1\u7D22\u5F15 + UI \u72B6\u6001\u65F6\u624D\u7528 `kobe reset --hard`\u3002",experimental:"\u5B9E\u9A8C\u6027",remoteHint:"\u8FDC\u7A0B\u9879\u76EE\uFF08SSH\uFF09\uFF1A\u6CE8\u518C\u4E00\u4E2A git worktree + \u5F15\u64CE\u90FD\u901A\u8FC7 SSH \u8DD1\u5728\u53E6\u4E00\u53F0\u4E3B\u673A\u4E0A\u3001\u7531\u672C\u5730 kobe \u9A71\u52A8\u7684\u9879\u76EE\u3002\u5C1A\u672A\u5B8C\u6210\u2014\u2014\u6587\u4EF6/diff \u9762\u677F\u5BF9\u8FDC\u7A0B\u4ECD\u4F1A\u964D\u7EA7\u3002\u542F\u7528 `kobe add --remote`\u3002",remoteOn:"[x] \u8FDC\u7A0B\u9879\u76EE (\u5F00)",remoteOff:"[ ] \u8FDC\u7A0B\u9879\u76EE (\u5173)",autoStatusHint:"\u81EA\u52A8\u72B6\u6001\u6D41\u8F6C\uFF1Abacklog \u4EFB\u52A1\u5728\u5176\u5F15\u64CE\u5F00\u59CB\u4E00\u8F6E\u65F6\u79FB\u5230 in_progress\uFF0C\u65B0\u7684 claude \u4F1A\u8BDD\u4F1A\u62FF\u5230\u4E00\u6761\u7CFB\u7EDF\u63D0\u793A\uFF0C\u544A\u8BC9 agent \u5B8C\u6210\u540E\u81EA\u884C\u8BBE\u4E3A in_review\u3002\u7EDD\u4E0D\u89E6\u78B0 done/canceled\u3002",autoStatusOn:"[x] \u81EA\u52A8\u72B6\u6001\u6D41\u8F6C (\u5F00)",autoStatusOff:"[ ] \u81EA\u52A8\u72B6\u6001\u6D41\u8F6C (\u5173)",dispatcherHint:"\u73B0\u573A\u7B14\u8BB0\u8C03\u5EA6\u5668\uFF1A\u4EFB\u52A1\u4F1A\u8BDD\u63D0\u4EA4\u4E00\u884C\u7ECF\u9A8C\uFF08`kobe api note`\uFF09\uFF0Cdaemon \u5C06\u6BCF\u6761\u8F6C\u53D1\u7ED9\u4ED3\u5E93\u7684\u4E3B\u4F1A\u8BDD\uFF0C\u4E3B\u4F1A\u8BDD\u518D\u628A\u5B83\u4EEC\u8F6C\u8FBE\u7ED9\u80FD\u53D7\u76CA\u7684\u8FDB\u884C\u4E2D\u4EFB\u52A1\uFF08`kobe api dispatch`\uFF09\u3002\u76EE\u524D\u7531 Web \u6258\u7BA1\u7684\u4F1A\u8BDD\u4F1A\u6536\u5230\u8F6C\u8FBE\u3002",dispatcherOn:"[x] \u73B0\u573A\u7B14\u8BB0\u8C03\u5EA6\u5668 (\u5F00)",dispatcherOff:"[ ] \u73B0\u573A\u7B14\u8BB0\u8C03\u5EA6\u5668 (\u5173)",archivedHistoryHint:"\u5F52\u6863\u5386\u53F2\u9884\u89C8\uFF08beta\uFF09\uFF1A\u6253\u5F00\u5DF2\u5F52\u6863\u7684\u4EFB\u52A1\u65F6\uFF0C\u5F15\u64CE\u4F4D\u7F6E\u6539\u4E3A\u53EA\u8BFB\u7684 `kobe history` \u9762\u677F\uFF08\u4F1A\u8BDD\u9009\u62E9\u5668 + \u5BF9\u8BDD\u8BB0\u5F55\uFF09\uFF0C\u800C\u4E0D\u662F\u91CD\u65B0\u542F\u52A8\u5F15\u64CE\u3002\u5F15\u64CE\u8BB0\u5F55\u6309 worktree \u8DEF\u5F84\u5B58\u50A8\uFF0C\u6240\u4EE5 worktree \u88AB\u5220\u9664\u540E\u5386\u53F2\u4ECD\u7136\u53EF\u8BFB\u3002\u4E0E Web \u4EEA\u8868\u76D8\u5171\u7528\u540C\u4E00\u5F00\u5173\u3002",archivedHistoryOn:"[x] \u5F52\u6863\u5386\u53F2\u9884\u89C8 (\u5F00)",archivedHistoryOff:"[ ] \u5F52\u6863\u5386\u53F2\u9884\u89C8 (\u5173)"}}});var $L,aL;var _L=C(()=>{$L={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}"}},aL={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 pL,rL;var oL=C(()=>{pL={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`"}},rL={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 Aq(J){return typeof J==="string"&&mZ.some((z)=>z.id===J)}var AT,RT,mZ,$G,aG="en";var _G=C(()=>{OL();gL();kL();IL();xL();wL();vL();dL();lL();_L();oL();AT={settings:nL,tasks:$L,files:AL,newTask:uL,ops:PL,update:pL,quickTask:mL,help:NL,history:bL,common:FL,keys:yL},RT={settings:iL,tasks:aL,files:RL,newTask:EL,ops:hL,update:rL,quickTask:cL,help:CL,history:SL,common:ML,keys:TL},mZ=[{id:"en",label:"English"},{id:"zh",label:"\u4E2D\u6587"}],$G={en:AT,zh:RT}});function Rq(J){if($G[J])gT("lang",J)}function C9(){return N9.lang}function sL(J,z){let Y=J;for(let Z of z.split("."))if(Y&&typeof Y==="object"&&Z in Y)Y=Y[Z];else return;return typeof Y==="string"?Y:void 0}function NT(J,z){if(!z)return J;return J.replace(/\{(\w+)\}/g,(Y,Z)=>(Z in z)?String(z[Z]):Y)}function F(J,z){let Y=N9.lang,Z=sL($G[Y],J)??sL($G.en,J)??J;return NT(Z,z)}function k9(J,z){let Y=N9.lang,Z=(G)=>{return G.keys[J]?.[z]};return Z($G[Y])??Z($G.en)??z}var N9,gT;var ZJ=C(()=>{lG();_G();_G();[N9,gT]=$z({lang:aG})});function CT(J){let z=[],Y=J.name;if(Y)z.push(Y);if(Y==="return")z.push("enter");if(Y==="enter")z.push("return");let Z=[];if(J.ctrl)Z.push("ctrl");if(J.meta)Z.push("cmd");if(J.option)Z.push("alt");if(J.shift&&Y&&Y.length>1)Z.push("shift");if(Z.length===0)return z;let G=`${Z.join("+")}+`;return z.map((X)=>G+X)}function S9(J,z){if(z.defaultPrevented)return!1;if(b9)return!1;let Y=J.slice(),Z=CT(z);b9=!0;try{for(let G=Y.length-1;G>=0;G--){let X=Y[G];if(!X)continue;let q=X.config();if(q.enabled===!1)continue;let H=q.bindings.find((f)=>Z.includes(f.key));if(H)return H.cmd(z,H.slot),z.preventDefault(),!0}return!1}finally{b9=!1}}var b9=!1;function bT(){if(I9)return;let J=WJ();if(!J)throw Error("useBindings: no renderer in scope; call inside a component rendered by @opentui/solid.");I9=J.keyInput,tL=(z)=>{S9(Wf,z)},I9.on("keypress",tL)}function K1(J){bT();let z=kT++,Y={config:J,id:z};_0(()=>{J()}),Wf.push(Y),S1(()=>{let Z=Wf.findIndex((G)=>G.id===z);if(Z>=0)Wf.splice(Z,1)})}var kT=1,Wf,I9=null,tL=null;var gJ=C(()=>{E();W1();Wf=[]});function Vf(){let J=new Set;function z(Z,G){let X=setTimeout(()=>{J.delete(X),Z()},G);return J.add(X),X}function Y(Z){if(J.delete(Z))clearTimeout(Z)}return S1(()=>{for(let Z of J)clearTimeout(Z);J.clear()}),{set:z,clear:Y}}var y9=C(()=>{W1()});import{RGBA as eL}from"@opentui/core";function yT(J){let z=lz(),Y=w0(),{theme:Z}=Y,G=WJ(),X=!1,q=()=>{if(J.size==="xlarge")return 140;if(J.size==="large")return 110;if(J.size==="small")return 50;return 80},H=2,f=()=>Math.max(8,z().height-H*2);return(()=>{var j=W("box"),V=W("box");return D(j,V),Q(j,"onMouseDown",()=>{X=!!G?.getSelection()}),Q(j,"onMouseUp",()=>{if(X){X=!1;return}J.onClose?.()}),Q(j,"alignItems","center"),Q(j,"justifyContent","center"),Q(j,"position","absolute"),Q(j,"zIndex",3000),Q(j,"left",0),Q(j,"top",0),Q(V,"onMouseUp",(B)=>{X=!1,B.stopPropagation()}),Q(V,"flexShrink",1),Q(V,"flexGrow",0),Q(V,"paddingTop",1),U(V,()=>J.children),y((B)=>{var K=z().width,L=z().height,A=Y.transparentBackground?IT:ST,O=q(),R=z().width-2,x=f(),w=Z.backgroundDialog;return K!==B.e&&(B.e=Q(j,"width",K,B.e)),L!==B.t&&(B.t=Q(j,"height",L,B.t)),A!==B.a&&(B.a=Q(j,"backgroundColor",A,B.a)),O!==B.o&&(B.o=Q(V,"width",O,B.o)),R!==B.i&&(B.i=Q(V,"maxWidth",R,B.i)),x!==B.n&&(B.n=Q(V,"maxHeight",x,B.n)),w!==B.s&&(B.s=Q(V,"backgroundColor",w,B.s)),B},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),j})()}function TT(){let[J,z]=$z({stack:[],size:"medium"}),Y=WJ(),Z=null,G=Vf();function X(){G.set(()=>{if(!Z)return;if(Z.isDestroyed)return;function q(f){for(let j of f.getChildren()){if(j===Z)return!0;if(q(j))return!0}return!1}let H=Y?.root;if(!H)return;if(!q(H))return;Z.focus()},1)}return K1(()=>({enabled:J.stack.length>0&&!Y?.getSelection()?.getSelectedText(),bindings:[{key:"escape",cmd:()=>{if(Y?.getSelection())Y.clearSelection();J.stack.at(-1)?.onClose?.(),z("stack",J.stack.slice(0,-1)),X()}},{key:"ctrl+c",cmd:()=>{if(Y?.getSelection())Y.clearSelection();J.stack.at(-1)?.onClose?.(),z("stack",J.stack.slice(0,-1)),X()}}]})),{clear(){for(let q of J.stack)q.onClose?.();TQ(()=>{z("size","medium"),z("stack",[])}),X()},replace(q,H){if(J.stack.length===0)Z=Y?.currentFocusedRenderable??null,Z?.blur();for(let f of J.stack)f.onClose?.();z("size","medium"),z("stack",[{element:q,onClose:H}])},push(q,H){if(J.stack.length===0)Z=Y?.currentFocusedRenderable??null,Z?.blur();z("stack",[...J.stack,{element:q,onClose:H}])},pop(){if(J.stack.at(-1)?.onClose?.(),z("stack",J.stack.slice(0,-1)),J.stack.length===0)X()},get stack(){return J.stack},get size(){return J.size},setSize(q){z("size",q)}}}function zF(J){let z=TT();return b(JF.Provider,{value:z,get children(){return[S0(()=>J.children),(()=>{var Y=W("box");return Q(Y,"position","absolute"),Q(Y,"zIndex",3000),U(Y,b(Y0,{get when(){return z.stack.length},get children(){return b(yT,{onClose:()=>z.clear(),get size(){return z.size},get children(){return z.stack.at(-1).element()}})}})),Y})()]}})}function d1(){let J=PJ(JF);if(!J)throw Error("useDialog must be used within a DialogProvider");return J}var ST,IT,JF;var iJ=C(()=>{E();E();E();E();E();E();E();E();W1();lG();E1();gJ();y9();ST=eL.fromInts(0,0,0,128),IT=eL.fromInts(0,0,0,64);JF=Ez()});import{spawnSync as T9}from"child_process";import*as ZF from"fs";function YF(J){return`This folder isn't a git repository yet, and a task needs a git branch to work in. To fix it, turn ${J} into a repo: git init && git add -A && git commit -m "init" \u2014 then create the task again. (Working in non-git folders is coming soon.)`}function GF(J){let z=J.trim();if(!z)return"repo path is required";let Y;try{Y=ZF.statSync(z)}catch{return`path does not exist: ${z}`}if(!Y.isDirectory())return`not a directory: ${z}`;try{if(T9("git",["rev-parse","--git-dir"],{cwd:z,encoding:"utf-8",timeout:2000,stdio:["ignore","pipe","ignore"]}).status!==0)return YF(z)}catch{return YF(z)}return null}function gq(J){if(!J)return null;try{let z=T9("git",["rev-parse","--abbrev-ref","HEAD"],{cwd:J,encoding:"utf-8",timeout:2000,stdio:["ignore","pipe","ignore"]});if(z.status!==0)return null;let Y=z.stdout.trim();if(!Y||Y==="HEAD")return null;return Y}catch{return null}}function XF(J){if(!J)return[];try{let z=T9("git",["for-each-ref","--format=%(refname:short)","refs/heads/"],{cwd:J,encoding:"utf-8",timeout:2000});if(z.status!==0)return[];return z.stdout.split(`
262
- `).map((Y)=>Y.trim()).filter(Boolean).sort((Y,Z)=>{let G=(H)=>H==="main"?0:H==="master"?1:H==="develop"?2:3,X=G(Y),q=G(Z);if(X!==q)return X-q;return Y.localeCompare(Z)})}catch{return[]}}var Iz="main";var Kf=()=>{};import*as qF from"fs";import*as Uf from"os";function MJ(J){if(J==="~")return Uf.homedir();if(J.startsWith("~/"))return Uf.homedir()+J.slice(1);return J}function x9(J){if(!J)return{base:"",filter:""};let Y=MJ(J==="~"?"~/":J);if(Y.endsWith("/"))return{base:Y,filter:""};let Z=Y.lastIndexOf("/");if(Z===-1)return{base:"",filter:Y};return{base:Y.slice(0,Z+1),filter:Y.slice(Z+1)}}function u9(J){if(!J)return[];try{let z=qF.readdirSync(J,{withFileTypes:!0}),Y=[];for(let Z of z)if(Z.isDirectory())Y.push(Z.name);return Y.sort((Z,G)=>Z.localeCompare(G))}catch{return[]}}function E9(J,z){let Y=z.toLowerCase(),G=Y.startsWith(".")?J:J.filter((X)=>!X.startsWith("."));if(!Y)return G;return G.filter((X)=>X.toLowerCase().startsWith(Y))}function Nq(J,z,Y){let Z=z+Y;if(J.startsWith("~")){let G=Uf.homedir();if(Z===G)return"~";if(Z.startsWith(`${G}/`))return`~${Z.slice(G.length)}`}return Z}var Df=()=>{};import{spawn as xT}from"child_process";import*as cZ from"fs";import*as Cq from"path";function QF(J){let z=J.trim().replace(/\/+$/,"");if(!z)return"";let Y=z.lastIndexOf("/"),Z=z.lastIndexOf(":"),G=Math.max(Y,Z);return(G>=0?z.slice(G+1):z).replace(/\.git$/i,"")}function HF(J){let z=J.trim();if(!z)return F("newTask.error.gitUrlRequired");let Y=z.includes("://"),Z=z.includes("@")&&z.includes(":"),G=z.includes("/");if(!Y&&!Z&&!G)return F("newTask.error.gitUrlInvalid",{url:z});return null}function fF(J,z){let Y=z.trim();if(!Y)return F("newTask.error.folderRequired");if(Y.includes("/")||Y.includes("\\"))return F("newTask.error.folderHasSeparator");let Z=J.trim();if(!Z)return F("newTask.error.parentRequired");let G=MJ(Z),X;try{X=cZ.statSync(G)}catch{return F("newTask.error.parentNotFound",{path:G})}if(!X.isDirectory())return F("newTask.error.parentNotDir",{path:G});let q=Cq.join(G,Y);if(cZ.existsSync(q))return F("newTask.error.targetExists",{path:q});return null}function jF(J,z){return Cq.join(MJ(J.trim()),z.trim())}function BF(J,z){let Y=z.trim();if(!Y)return z;let Z=MJ(J.trim());if(!Z)return z;try{if(!cZ.statSync(Z).isDirectory())return z}catch{return z}if(!cZ.existsSync(Cq.join(Z,Y)))return Y;for(let G=2;G<1000;G++){let X=`${Y}-${G}`;if(!cZ.existsSync(Cq.join(Z,X)))return X}return Y}function WF(J,z,Y){return new Promise((Z)=>{let G="";try{let X=xT("git",["clone","--progress",J,z],{stdio:["ignore","ignore","pipe"]});X.stderr?.setEncoding("utf-8"),X.stderr?.on("data",(q)=>{if(G+=q,Y){let H=q.split(/[\r\n]+/).filter((j)=>j.trim().length>0),f=H[H.length-1];if(f)Y(f)}}),X.on("error",(q)=>{Z({ok:!1,error:q.message})}),X.on("close",(q)=>{if(q===0){Z({ok:!0,path:z});return}let H=G.split(/[\r\n]+/).filter((f)=>f.trim().length>0).pop()??`git clone exited with ${q}`;Z({ok:!1,error:H})})}catch(X){Z({ok:!1,error:X instanceof Error?X.message:String(X)})}})}var VF=C(()=>{ZJ();Df()});function w9(J){if(J==="existing")return"clone";if(J==="clone")return"adopt";return"existing"}function P9(J){if(J==="existing")return"adopt";if(J==="clone")return"existing";return"clone"}function KF(J,z){let Y=J.trim();if(z.includes(Y))return"saved";if(Y.startsWith("~"))return"browse";if(Y.includes("/"))return"browse";return"saved"}function OJ(J){return J.replace(/[\r\n]+/g,"")}function kq(J){return!/\S/u.test(J)}function h9(J,z="existing"){if(J==="confirm")return"tabs";if(J==="tabs")return"engine";if(J==="engine")return v9(z);if(z==="clone"){if(J==="cloneUrl")return"cloneParent";if(J==="cloneParent")return"cloneFolder";if(J==="cloneFolder")return"cloneBaseRef";if(J==="cloneBaseRef")return"confirm";return"cloneUrl"}if(z==="adopt")return J==="adoptFilter"?"confirm":"adoptFilter";if(J==="repo")return"baseRef";if(J==="baseRef")return"confirm";return"repo"}function v9(J){if(J==="clone")return"cloneUrl";if(J==="adopt")return"adoptFilter";return"repo"}function UF(J,z){let Y=z.trim();if(!Y)return J;return J.filter((Z)=>hq(Y,Z.path))}function DF(J,z){let Y=new Set,Z=[];for(let G of[J,...z]){let X=G.trim();if(!X||Y.has(X))continue;Y.add(X),Z.push(X)}return Z}function LF(J,z){let Y=z.trim().toLowerCase();if(!Y)return J;return J.filter((Z)=>Z.toLowerCase().includes(Y))}function FF(J,z){let Y=z.trim().toLowerCase();if(!Y)return J;return J.filter((Z)=>Z.toLowerCase().includes(Y))}function bq(J,z,Y=uT){let Z=J.length;if(Z<=Y)return{items:J,start:0,total:Z};let G=Math.floor(Y/2),X=Math.max(0,z-G);if(X+Y>Z)X=Z-Y;return{items:J.slice(X,X+Y),start:X,total:Z}}function az(J,z){if(z<=0)return 0;return Math.max(0,Math.min(z-1,J))}function MF(J,z,Y){let Z=z[Y];if(Z)return Z;return J.trim()||Iz}var uT=8;var m9=C(()=>{nf();Kf()});import{TextAttributes as Xz}from"@opentui/core";function OF(J){let z=d1(),{theme:Y}=w0(),[Z,G]=p("existing"),X=()=>{let l=J.availableVendors;return l&&l.length>0?l:$1},q=(()=>{let l=X(),k0=J.defaultVendor??"claude";return l.includes(k0)?k0:l[0]??"claude"})(),[H,f]=p(q),[j,V]=p("tabs"),[B,K]=p(J.defaultRepo),[L,A]=p(gq(MJ(J.defaultRepo.trim()))??Iz),[O,R]=p(!1),[x,w]=p(""),[S,g]=p(J.defaultCloneParent?.trim()?J.defaultCloneParent:"~/"),[M,T]=p(""),[$,d]=p(!1),[e,u]=p(Iz),[z0,Q0]=p(!1),[o,K0]=p(""),N0=U0(()=>DF(J.defaultRepo,J.savedRepos)),h=U0(()=>KF(B(),N0())),s=U0(()=>x9(B())),v=U0(()=>u9(s().base)),k=U0(()=>E9(v(),s().filter)),t=U0(()=>LF(N0(),B())),I=U0(()=>h()==="browse"?k():t()),[n,q0]=p(0),H0=U0(()=>bq(I(),n())),[j0,y0]=p(!1),p0=U0(()=>XF(MJ(B().trim()))),E0=U0(()=>FF(p0(),L())),[R0,m]=p(0),L0=U0(()=>bq(E0(),R0())),G0=U0(()=>x9(S())),F0=U0(()=>u9(G0().base)),a0=U0(()=>E9(F0(),G0().filter)),[t0,P0]=p(0),v0=U0(()=>bq(a0(),t0())),[U1,r]=p(!1),[D0,b0]=p(""),[i0,f1]=p(0),[u0,j1]=p(new Set),[R1]=WZ(()=>Z()==="adopt"?MJ(B().trim()):null,async(l)=>J.discoverAdoptable?await J.discoverAdoptable(l):[]),G1=U0(()=>UF(R1()??[],D0())),Z0=U0(()=>bq(G1().map((l)=>l.path),i0())),X0=U0(()=>{let l=Z0();return G1().slice(l.start,l.start+l.items.length)});_0(()=>{G1(),f1((l)=>az(l,G1().length))});function V0(l){j1((k0)=>{let J0=new Set(k0);if(J0.has(l))J0.delete(l);else J0.add(l);return J0})}function N(){let l=G1()[i0()];if(l)V0(l.path)}_0(()=>{E0(),m(0)}),_0(()=>{let l=MJ(B().trim());if(!l)return;if(O())return;let k0=gq(l);if(k0)A(k0)}),_0(()=>{I(),q0(0)}),_0(()=>{a0(),P0(0)}),_0(()=>{let l=x(),k0=S();if($())return;let J0=QF(l);T(BF(k0,J0))});let[f0,T0]=p(null);_0(()=>{B(),x(),S(),M(),D0(),T0(null)});function O0(){let l=MJ(B().trim());if(!l)return;let k0=GF(l);if(k0){T0(k0),V("repo");return}let J0=L().trim()||Iz;J.onSubmit({repo:l,baseRef:J0,vendor:H()}),z.clear()}async function g0(){if(z0())return;let l=HF(x());if(l){T0(l),V("cloneUrl");return}let k0=fF(S(),M());if(k0){T0(k0),V(M().trim()?"cloneParent":"cloneFolder");return}let J0=jF(S(),M());Q0(!0),K0(F("newTask.clone.progressInto",{target:J0}));let m0=await WF(x().trim(),J0,(QJ)=>{K0(QJ)});if(Q0(!1),!m0.ok){T0(F("newTask.error.cloneFailed",{error:m0.error})),V("cloneUrl");return}let P1=e().trim()||Iz,X1=MJ(S().trim());J.onSubmit({repo:m0.path,baseRef:P1,vendor:H(),cloned:{parentDir:X1}}),z.clear()}function M0(){let l=G1();if(l.length===0){T0(F("newTask.error.noAdoptable"));return}let k0=u0(),J0=k0.size>0?l.filter((m0)=>k0.has(m0.path)):l.slice(i0(),i0()+1);if(J0.length===0)return;J.onSubmit({mode:"adopt",repo:MJ(B().trim()),vendor:H(),adopt:J0.map((m0)=>({worktreePath:m0.path,branch:m0.branch}))}),z.clear()}function W0(){if(Z()==="clone"){g0();return}if(Z()==="adopt"){M0();return}O0()}function s0(l){if(z0())return;if(l===Z())return;G(l),V(v9(l)),T0(null)}function e0(l){if(z0())return;let k0=l===1?w9(Z()):P9(Z());if(k0===Z())return;G(k0),T0(null),V("tabs")}function Y1(l){f((k0)=>l===1?OY(X(),k0):lf(X(),k0))}function Q1(){if(!B().trim()&&h()==="saved"){let k0=I()[0];if(k0){K(k0),V("baseRef");return}}if(h()==="browse"){let J0=k()[n()],m0=s();if(J0){K(Nq(B(),m0.base,J0)),q0(0),y0(!0),V("baseRef");return}V("baseRef");return}let l=I()[n()];if(l){K(l),V("baseRef");return}V("baseRef")}function g1(l){let J0=I()[l];if(!J0)return;if(h()==="browse"){let m0=s();K(Nq(B(),m0.base,J0)),q0(l),y0(!0),V("baseRef");return}K(J0),q0(l),V("baseRef")}function I0(){let k0=a0()[t0()],J0=G0();if(k0){g(Nq(S(),J0.base,k0)),P0(0),r(!0),V("cloneFolder");return}V("cloneFolder")}function c1(l){let J0=a0()[l];if(!J0)return;let m0=G0();g(Nq(S(),m0.base,J0)),P0(l),r(!0),V("cloneFolder")}let s1=()=>{let l=G1();if(l.length===0)return;let k0=l.every((J0)=>u0().has(J0.path));j1(k0?new Set:new Set(l.map((J0)=>J0.path)))};K1(()=>({bindings:[{key:"tab",cmd:()=>V((l)=>h9(l,Z()))},{key:"ctrl+]",cmd:()=>s0(w9(Z()))},{key:"ctrl+[",cmd:()=>s0(P9(Z()))},{key:"ctrl+e",cmd:()=>f((l)=>OY(X(),l))},{key:"up",cmd:()=>{if(z0())return;if(Z()==="existing"&&j()==="repo"){let l=I();if(l.length===0)return;q0(az(n()-1,l.length));return}if(Z()==="existing"&&j()==="baseRef"){let l=E0();if(l.length===0)return;m(az(R0()-1,l.length));return}if(Z()==="clone"&&j()==="cloneParent"){let l=a0();if(l.length===0)return;P0(az(t0()-1,l.length));return}if(Z()==="adopt"){let l=G1();if(l.length===0)return;f1(az(i0()-1,l.length))}}},{key:"down",cmd:()=>{if(z0())return;if(Z()==="existing"&&j()==="repo"){let l=I();if(l.length===0)return;q0(az(n()+1,l.length));return}if(Z()==="existing"&&j()==="baseRef"){let l=E0();if(l.length===0)return;m(az(R0()+1,l.length));return}if(Z()==="clone"&&j()==="cloneParent"){let l=a0();if(l.length===0)return;P0(az(t0()+1,l.length));return}if(Z()==="adopt"){let l=G1();if(l.length===0)return;f1(az(i0()+1,l.length))}}},...j()==="tabs"||j()==="engine"?[{key:"left",cmd:()=>j()==="tabs"?e0(-1):Y1(-1)},{key:"right",cmd:()=>j()==="tabs"?e0(1):Y1(1)},{key:"return",cmd:()=>V((l)=>h9(l,Z()))}]:[],...Z()==="adopt"?[{key:"ctrl+a",cmd:s1}]:[]]})),K1(()=>({enabled:j()==="confirm"&&!z0(),bindings:[{key:"return",cmd:()=>W0()}]}));let c=(l)=>j()===l?Y.primary:Y.textMuted,A0=(l)=>j()===l?Xz.BOLD|Xz.UNDERLINE:void 0,k1=(l,k0)=>l?k0?Xz.BOLD|Xz.UNDERLINE:Xz.BOLD:void 0;return(()=>{var l=W("box"),k0=W("box"),J0=W("text"),m0=W("box"),P1=W("box"),X1=W("text"),QJ=W("box"),$J=W("box"),aJ=W("text"),HJ=W("box"),_z=W("text"),Qz=W("text");return D(l,k0),D(l,m0),D(l,HJ),Q(l,"paddingLeft",2),Q(l,"paddingRight",2),Q(l,"gap",0),D(k0,J0),Q(k0,"flexDirection","row"),U(J0,()=>F("newTask.title")),D(m0,P1),Q(m0,"gap",1),Q(m0,"paddingTop",1),Q(m0,"paddingBottom",1),U(m0,()=>{let i=()=>j()==="tabs",a=(_)=>_?Y.primary:Y.textMuted;return(()=>{var _=W("box"),P=W("text"),d0=W("text"),h0=W("text");return D(_,P),D(_,d0),D(_,h0),Q(_,"flexDirection","row"),Q(_,"gap",2),Q(P,"onMouseUp",()=>s0("existing")),U(P,(()=>{var C0=S0(()=>Z()==="existing");return()=>C0()?`\u25B8 ${F("newTask.tabs.existing")}`:` ${F("newTask.tabs.existing")}`})()),Q(d0,"onMouseUp",()=>s0("clone")),U(d0,(()=>{var C0=S0(()=>Z()==="clone");return()=>C0()?`\u25B8 ${F("newTask.tabs.clone")}`:` ${F("newTask.tabs.clone")}`})()),Q(h0,"onMouseUp",()=>s0("adopt")),U(h0,(()=>{var C0=S0(()=>Z()==="adopt");return()=>C0()?`\u25B8 ${F("newTask.tabs.adopt")}`:` ${F("newTask.tabs.adopt")}`})()),y((C0)=>{var n0=a(Z()==="existing"),B1=k1(Z()==="existing",i()),F1=a(Z()==="clone"),UJ=k1(Z()==="clone",i()),Hz=a(Z()==="adopt"),MY=k1(Z()==="adopt",i());return n0!==C0.e&&(C0.e=Q(P,"fg",n0,C0.e)),B1!==C0.t&&(C0.t=Q(P,"attributes",B1,C0.t)),F1!==C0.a&&(C0.a=Q(d0,"fg",F1,C0.a)),UJ!==C0.o&&(C0.o=Q(d0,"attributes",UJ,C0.o)),Hz!==C0.i&&(C0.i=Q(h0,"fg",Hz,C0.i)),MY!==C0.n&&(C0.n=Q(h0,"attributes",MY,C0.n)),C0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),_})()},P1),D(P1,X1),D(P1,QJ),Q(P1,"gap",0),U(X1,()=>F("newTask.field.engine")),D(QJ,$J),D(QJ,aJ),Q(QJ,"flexDirection","row"),Q(QJ,"gap",2),U(QJ,b(z1,{get each(){return X()},children:(i)=>{let a=()=>H()===i;return(()=>{var _=W("text");return Q(_,"onMouseUp",()=>f(i)),U(_,()=>a()?"\u25B8 ":" ",null),U(_,i,null),y((P)=>{var d0=a()?Y.primary:Y.textMuted,h0=a()?Xz.BOLD:void 0;return d0!==P.e&&(P.e=Q(_,"fg",d0,P.e)),h0!==P.t&&(P.t=Q(_,"attributes",h0,P.t)),P},{e:void 0,t:void 0}),_})()}}),$J),Q($J,"flexGrow",1),U(aJ,()=>F("newTask.hint.engineCycle")),U(m0,b(Y0,{get when(){return Z()==="existing"},get children(){return[(()=>{var i=W("box"),a=W("text"),_=W("input");return D(i,a),D(i,_),Q(i,"gap",0),U(a,()=>F("newTask.field.repo")),Q(_,"onInput",(P)=>{y0(!1),K(OJ(P))}),Q(_,"onSubmit",()=>{if(!B().trim())return;Q1()}),y((P)=>{var d0=c("repo"),h0=A0("repo"),C0=B(),n0=J.defaultRepo,B1=j()==="repo";return d0!==P.e&&(P.e=Q(a,"fg",d0,P.e)),h0!==P.t&&(P.t=Q(a,"attributes",h0,P.t)),C0!==P.a&&(P.a=Q(_,"value",C0,P.a)),n0!==P.o&&(P.o=Q(_,"placeholder",n0,P.o)),B1!==P.i&&(P.i=Q(_,"focused",B1,P.i)),P},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),i})(),b(Y0,{get when(){return S0(()=>j()==="repo"&&I().length>0)()&&!j0()},get children(){var i=W("box");return Q(i,"gap",0),Q(i,"paddingLeft",2),U(i,b(Y0,{get when(){return H0().start>0},get children(){var a=W("text");return Q(a,"wrapMode","none"),U(a,()=>F("newTask.picker.moreAbove",{count:H0().start})),y((_)=>Q(a,"fg",Y.textMuted,_)),a}}),null),U(i,b(z1,{get each(){return H0().items},children:(a,_)=>{let P=()=>H0().start+_(),d0=()=>P()===n(),h0=()=>h()==="saved"&&a===J.defaultRepo,C0=()=>h()==="saved"&&B().trim()===a,n0=()=>h()==="browse"?"/":"",B1=()=>h0()?` ${F("newTask.hint.currentDir")}`:"";return(()=>{var F1=W("text");return Q(F1,"wrapMode","none"),Q(F1,"onMouseUp",()=>g1(P())),U(F1,()=>d0()?"\u25B8 ":" ",null),U(F1,a,null),U(F1,n0,null),U(F1,B1,null),y((UJ)=>{var Hz=d0()?Y.primary:C0()?Y.accent:Y.textMuted,MY=d0()?Xz.BOLD:void 0;return Hz!==UJ.e&&(UJ.e=Q(F1,"fg",Hz,UJ.e)),MY!==UJ.t&&(UJ.t=Q(F1,"attributes",MY,UJ.t)),UJ},{e:void 0,t:void 0}),F1})()}}),null),U(i,b(Y0,{get when(){return H0().start+H0().items.length<H0().total},get children(){var a=W("text");return Q(a,"wrapMode","none"),U(a,()=>F("newTask.picker.moreBelow",{count:H0().total-H0().start-H0().items.length})),y((_)=>Q(a,"fg",Y.textMuted,_)),a}}),null),i}}),(()=>{var i=W("box"),a=W("text"),_=W("input");return D(i,a),D(i,_),Q(i,"gap",0),U(a,()=>F("newTask.field.fromBranch")),Q(_,"placeholder",Iz),Q(_,"onInput",(P)=>{R(!0),A(OJ(P))}),Q(_,"onSubmit",()=>{A(MF(L(),E0(),R0())),R(!0),O0()}),y((P)=>{var d0=c("baseRef"),h0=A0("baseRef"),C0=L(),n0=j()==="baseRef";return d0!==P.e&&(P.e=Q(a,"fg",d0,P.e)),h0!==P.t&&(P.t=Q(a,"attributes",h0,P.t)),C0!==P.a&&(P.a=Q(_,"value",C0,P.a)),n0!==P.o&&(P.o=Q(_,"focused",n0,P.o)),P},{e:void 0,t:void 0,a:void 0,o:void 0}),i})(),b(Y0,{get when(){return S0(()=>j()==="baseRef"&&E0().length===0)()&&f0()==null},get children(){var i=W("box"),a=W("text");return D(i,a),Q(i,"gap",0),Q(i,"paddingLeft",2),Q(i,"paddingBottom",1),Q(a,"wrapMode","none"),U(a,(()=>{var _=S0(()=>p0().length===0);return()=>_()?F("newTask.hint.noBranchesFound"):F("newTask.hint.noMatchBranch")})()),y((_)=>Q(a,"fg",Y.textMuted,_)),i}}),b(Y0,{get when(){return S0(()=>j()==="baseRef")()&&E0().length>0},get children(){var i=W("box");return Q(i,"gap",0),Q(i,"paddingLeft",2),Q(i,"paddingBottom",1),U(i,b(Y0,{get when(){return L0().start>0},get children(){var a=W("text");return Q(a,"wrapMode","none"),U(a,()=>F("newTask.picker.moreAbove",{count:L0().start})),y((_)=>Q(a,"fg",Y.textMuted,_)),a}}),null),U(i,b(z1,{get each(){return L0().items},children:(a,_)=>{let P=()=>L0().start+_(),d0=()=>P()===R0(),h0=()=>L().trim()===a;return(()=>{var C0=W("text");return Q(C0,"wrapMode","none"),Q(C0,"onMouseUp",()=>{A(a),R(!0),m(P()),V("confirm")}),U(C0,()=>d0()?"\u25B8 ":" ",null),U(C0,a,null),y((n0)=>{var B1=d0()?Y.primary:h0()?Y.accent:Y.textMuted,F1=d0()?Xz.BOLD:void 0;return B1!==n0.e&&(n0.e=Q(C0,"fg",B1,n0.e)),F1!==n0.t&&(n0.t=Q(C0,"attributes",F1,n0.t)),n0},{e:void 0,t:void 0}),C0})()}}),null),U(i,b(Y0,{get when(){return L0().start+L0().items.length<L0().total},get children(){var a=W("text");return Q(a,"wrapMode","none"),U(a,()=>F("newTask.picker.moreBelow",{count:L0().total-L0().start-L0().items.length})),y((_)=>Q(a,"fg",Y.textMuted,_)),a}}),null),i}})]}}),null),U(m0,b(Y0,{get when(){return Z()==="clone"},get children(){return[(()=>{var i=W("box"),a=W("text"),_=W("input");return D(i,a),D(i,_),Q(i,"gap",0),U(a,()=>F("newTask.field.gitUrl")),Q(_,"placeholder","https://github.com/user/repo.git"),Q(_,"onInput",(P)=>w(OJ(P))),Q(_,"onSubmit",()=>{if(!x().trim())return;V("cloneParent")}),y((P)=>{var d0=c("cloneUrl"),h0=A0("cloneUrl"),C0=x(),n0=j()==="cloneUrl";return d0!==P.e&&(P.e=Q(a,"fg",d0,P.e)),h0!==P.t&&(P.t=Q(a,"attributes",h0,P.t)),C0!==P.a&&(P.a=Q(_,"value",C0,P.a)),n0!==P.o&&(P.o=Q(_,"focused",n0,P.o)),P},{e:void 0,t:void 0,a:void 0,o:void 0}),i})(),(()=>{var i=W("box"),a=W("text"),_=W("input");return D(i,a),D(i,_),Q(i,"gap",0),U(a,()=>F("newTask.field.parentDir")),Q(_,"placeholder","~/"),Q(_,"onInput",(P)=>{r(!1),g(OJ(P))}),Q(_,"onSubmit",()=>I0()),y((P)=>{var d0=c("cloneParent"),h0=A0("cloneParent"),C0=S(),n0=j()==="cloneParent";return d0!==P.e&&(P.e=Q(a,"fg",d0,P.e)),h0!==P.t&&(P.t=Q(a,"attributes",h0,P.t)),C0!==P.a&&(P.a=Q(_,"value",C0,P.a)),n0!==P.o&&(P.o=Q(_,"focused",n0,P.o)),P},{e:void 0,t:void 0,a:void 0,o:void 0}),i})(),b(Y0,{get when(){return j()==="cloneParent"},get children(){var i=W("box"),a=W("text");return D(i,a),Q(i,"paddingLeft",2),Q(a,"wrapMode","none"),U(a,()=>F("newTask.hint.remembered")),y((_)=>Q(a,"fg",Y.textMuted,_)),i}}),b(Y0,{get when(){return S0(()=>j()==="cloneParent"&&a0().length>0)()&&!U1()},get children(){var i=W("box");return Q(i,"gap",0),Q(i,"paddingLeft",2),U(i,b(Y0,{get when(){return v0().start>0},get children(){var a=W("text");return Q(a,"wrapMode","none"),U(a,()=>F("newTask.picker.moreAbove",{count:v0().start})),y((_)=>Q(a,"fg",Y.textMuted,_)),a}}),null),U(i,b(z1,{get each(){return v0().items},children:(a,_)=>{let P=()=>v0().start+_(),d0=()=>P()===t0();return(()=>{var h0=W("text"),C0=x0("/");return D(h0,C0),Q(h0,"wrapMode","none"),Q(h0,"onMouseUp",()=>c1(P())),U(h0,()=>d0()?"\u25B8 ":" ",C0),U(h0,a,C0),y((n0)=>{var B1=d0()?Y.primary:Y.textMuted,F1=d0()?Xz.BOLD:void 0;return B1!==n0.e&&(n0.e=Q(h0,"fg",B1,n0.e)),F1!==n0.t&&(n0.t=Q(h0,"attributes",F1,n0.t)),n0},{e:void 0,t:void 0}),h0})()}}),null),U(i,b(Y0,{get when(){return v0().start+v0().items.length<v0().total},get children(){var a=W("text");return Q(a,"wrapMode","none"),U(a,()=>F("newTask.picker.moreBelow",{count:v0().total-v0().start-v0().items.length})),y((_)=>Q(a,"fg",Y.textMuted,_)),a}}),null),i}}),(()=>{var i=W("box"),a=W("text"),_=W("input");return D(i,a),D(i,_),Q(i,"gap",0),U(a,()=>F("newTask.field.folderName")),Q(_,"onInput",(P)=>{d(!0),T(OJ(P))}),Q(_,"onSubmit",()=>V("cloneBaseRef")),y((P)=>{var d0=c("cloneFolder"),h0=A0("cloneFolder"),C0=M(),n0=F("newTask.placeholder.folderName"),B1=j()==="cloneFolder";return d0!==P.e&&(P.e=Q(a,"fg",d0,P.e)),h0!==P.t&&(P.t=Q(a,"attributes",h0,P.t)),C0!==P.a&&(P.a=Q(_,"value",C0,P.a)),n0!==P.o&&(P.o=Q(_,"placeholder",n0,P.o)),B1!==P.i&&(P.i=Q(_,"focused",B1,P.i)),P},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),i})(),(()=>{var i=W("box"),a=W("text"),_=W("input");return D(i,a),D(i,_),Q(i,"gap",0),U(a,()=>F("newTask.field.baseBranch")),Q(_,"placeholder",Iz),Q(_,"onInput",(P)=>u(OJ(P))),Q(_,"onSubmit",()=>void g0()),y((P)=>{var d0=c("cloneBaseRef"),h0=A0("cloneBaseRef"),C0=e(),n0=j()==="cloneBaseRef";return d0!==P.e&&(P.e=Q(a,"fg",d0,P.e)),h0!==P.t&&(P.t=Q(a,"attributes",h0,P.t)),C0!==P.a&&(P.a=Q(_,"value",C0,P.a)),n0!==P.o&&(P.o=Q(_,"focused",n0,P.o)),P},{e:void 0,t:void 0,a:void 0,o:void 0}),i})(),b(Y0,{get when(){return z0()},get children(){var i=W("box"),a=W("text");return D(i,a),Q(i,"gap",0),Q(i,"paddingLeft",2),Q(a,"wrapMode","none"),U(a,()=>o()||F("newTask.clone.progressFallback")),y((_)=>Q(a,"fg",Y.textMuted,_)),i}})]}}),null),U(m0,b(Y0,{get when(){return Z()==="adopt"},get children(){return[(()=>{var i=W("box"),a=W("text"),_=W("input");return D(i,a),D(i,_),Q(i,"gap",0),U(a,()=>F("newTask.field.adoptFilter")),Q(_,"onInput",(P)=>b0(OJ(P))),Q(_,"onSubmit",()=>N()),y((P)=>{var d0=c("adoptFilter"),h0=A0("adoptFilter"),C0=D0(),n0=F("newTask.placeholder.adoptFilter"),B1=j()==="adoptFilter";return d0!==P.e&&(P.e=Q(a,"fg",d0,P.e)),h0!==P.t&&(P.t=Q(a,"attributes",h0,P.t)),C0!==P.a&&(P.a=Q(_,"value",C0,P.a)),n0!==P.o&&(P.o=Q(_,"placeholder",n0,P.o)),B1!==P.i&&(P.i=Q(_,"focused",B1,P.i)),P},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),i})(),(()=>{var i=W("box"),a=W("text");return D(i,a),Q(i,"paddingLeft",2),Q(a,"wrapMode","none"),U(a,()=>F("newTask.adopt.repoLine",{path:MJ(B().trim())||F("newTask.adopt.repoNone")})),y((_)=>Q(a,"fg",Y.textMuted,_)),i})(),b(Y0,{get when(){return R1.loading},get children(){var i=W("box"),a=W("text");return D(i,a),Q(i,"paddingLeft",2),Q(a,"wrapMode","none"),U(a,()=>F("newTask.hint.scanningWorktrees")),y((_)=>Q(a,"fg",Y.textMuted,_)),i}}),b(Y0,{get when(){return S0(()=>!R1.loading)()&&G1().length===0},get children(){var i=W("box"),a=W("text");return D(i,a),Q(i,"paddingLeft",2),Q(a,"wrapMode","none"),U(a,(()=>{var _=S0(()=>(R1()??[]).length===0);return()=>_()?F("newTask.adopt.noUnlinked"):F("newTask.adopt.noMatch")})()),y((_)=>Q(a,"fg",Y.textMuted,_)),i}}),b(Y0,{get when(){return G1().length>0},get children(){var i=W("box"),a=W("text");return D(i,a),Q(i,"gap",0),Q(i,"paddingLeft",2),U(i,b(Y0,{get when(){return Z0().start>0},get children(){var _=W("text");return Q(_,"wrapMode","none"),U(_,()=>F("newTask.picker.moreAbove",{count:Z0().start})),y((P)=>Q(_,"fg",Y.textMuted,P)),_}}),a),U(i,b(z1,{get each(){return X0()},children:(_,P)=>{let d0=()=>Z0().start+P(),h0=()=>d0()===i0(),C0=()=>u0().has(_.path),n0=()=>[_.dirty?"dirty":"",_.kobeManaged?"":"external"].filter(Boolean).join(",");return(()=>{var B1=W("text");return Q(B1,"wrapMode","none"),Q(B1,"onMouseUp",()=>{f1(d0()),V0(_.path)}),U(B1,()=>h0()?"\u25B8 ":" ",null),U(B1,()=>C0()?"[x] ":"[ ] ",null),U(B1,()=>_.branch,null),U(B1,(()=>{var F1=S0(()=>!!n0());return()=>F1()?` (${n0()})`:""})(),null),y((F1)=>{var UJ=h0()?Y.primary:C0()?Y.accent:Y.textMuted,Hz=h0()?Xz.BOLD:void 0;return UJ!==F1.e&&(F1.e=Q(B1,"fg",UJ,F1.e)),Hz!==F1.t&&(F1.t=Q(B1,"attributes",Hz,F1.t)),F1},{e:void 0,t:void 0}),B1})()}}),a),U(i,b(Y0,{get when(){return Z0().start+Z0().items.length<Z0().total},get children(){var _=W("text");return Q(_,"wrapMode","none"),U(_,()=>F("newTask.picker.moreBelow",{count:Z0().total-Z0().start-Z0().items.length})),y((P)=>Q(_,"fg",Y.textMuted,P)),_}}),a),Q(a,"wrapMode","none"),U(a,(()=>{var _=S0(()=>u0().size>0);return()=>_()?F("newTask.adopt.hintSelected",{count:u0().size}):F("newTask.adopt.hintDefault")})()),y((_)=>Q(a,"fg",Y.textMuted,_)),i}})]}}),null),U(m0,b(Y0,{get when(){return f0()},get children(){var i=W("text"),a=x0("\u203B ");return D(i,a),Q(i,"wrapMode","word"),U(i,f0,null),y((_)=>Q(i,"fg",Y.error,_)),i}}),null),D(HJ,_z),D(HJ,Qz),Q(HJ,"flexDirection","row"),Q(HJ,"justifyContent","space-between"),Q(HJ,"alignItems","center"),Q(HJ,"paddingTop",1),Q(HJ,"paddingBottom",1),U(_z,()=>F("newTask.hint.legend")),Q(Qz,"onMouseUp",()=>W0()),U(Qz,(()=>{var i=S0(()=>!!z0());return()=>i()?F("newTask.button.cloning"):S0(()=>j()==="confirm")()?F("newTask.button.createFocused"):F("newTask.button.create")})()),y((i)=>{var a=Xz.BOLD,_=Y.text,P=c("engine"),d0=A0("engine"),h0=Y.textMuted,C0=Y.textMuted,n0=j()==="confirm"?Y.primary:Y.text,B1=j()==="confirm"?Xz.BOLD:void 0;return a!==i.e&&(i.e=Q(J0,"attributes",a,i.e)),_!==i.t&&(i.t=Q(J0,"fg",_,i.t)),P!==i.a&&(i.a=Q(X1,"fg",P,i.a)),d0!==i.o&&(i.o=Q(X1,"attributes",d0,i.o)),h0!==i.i&&(i.i=Q(aJ,"fg",h0,i.i)),C0!==i.n&&(i.n=Q(_z,"fg",C0,i.n)),n0!==i.s&&(i.s=Q(Qz,"fg",n0,i.s)),B1!==i.h&&(i.h=Q(Qz,"attributes",B1,i.h)),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}),l})()}var AF=C(()=>{E();E();E();E();E();E();E();E();ZJ();a1();W1();E1();Kf();gJ();Df();iJ();VF();m9()});function ET(J,z,Y,Z){return new Promise((G)=>{J.replace(()=>b(OF,{defaultRepo:z,savedRepos:Y,get defaultCloneParent(){return Z?.defaultCloneParent},get defaultVendor(){return Z?.defaultVendor},get availableVendors(){return Z?.availableVendors},get discoverAdoptable(){return Z?.discoverAdoptable},onSubmit:(X)=>G(X),onCancel:()=>G(void 0)}),()=>G(void 0)),J.setSize("medium")})}var Lf;var pG=C(()=>{E();AF();m9();Lf={show:ET}});function RF(J,z){return[{key:"tab",cmd:()=>z.cycleField(1)},{key:"shift+tab",cmd:()=>z.cycleField(-1)},{key:"ctrl+e",cmd:()=>z.stepEngine(1)},...J==="engine"?[{key:"left",cmd:()=>z.stepEngine(-1)},{key:"right",cmd:()=>z.stepEngine(1)},{key:"return",cmd:()=>z.commit()}]:[]]}import{TextAttributes as gF}from"@opentui/core";function wT(J){let z=d1(),{theme:Y}=w0(),[Z,G]=p("prompt"),[X,q]=p(""),[H,f]=p(J.defaultVendor),[j,V]=p(J.defaultBaseRef);function B(O){let R=Ff.indexOf(Z());G(Ff[(R+O+Ff.length)%Ff.length]??"prompt")}function K(O){let R=J.engines;if(R.length===0)return;if(O>0){f((w)=>OY(R,w));return}let x=Math.max(0,R.indexOf(H()));f(R[(x-1+R.length)%R.length]??H())}function L(){if(kq(X())){G("prompt");return}J.onSubmit({prompt:X().trim(),vendor:H(),baseRef:j().trim()||J.defaultBaseRef}),z.clear()}K1(()=>({enabled:!0,bindings:RF(Z(),{cycleField:B,stepEngine:K,commit:L})}));let A=(O)=>Z()===O?Y.accent:Y.textMuted;return(()=>{var O=W("box"),R=W("box"),x=W("text"),w=W("text"),S=W("box"),g=W("text"),M=W("input"),T=W("box"),$=W("text"),d=W("box"),e=W("text"),u=W("input"),z0=W("box"),Q0=W("text");return D(O,R),D(O,S),D(O,T),D(O,d),D(O,z0),Q(O,"paddingLeft",2),Q(O,"paddingRight",2),Q(O,"gap",1),D(R,x),D(R,w),Q(R,"flexDirection","row"),Q(R,"justifyContent","space-between"),U(x,()=>F("quickTask.title",{repoLabel:J.repoLabel})),Q(w,"onMouseUp",()=>J.onCancel()),U(w,()=>F("quickTask.esc")),D(S,g),D(S,M),Q(S,"gap",0),U(g,()=>F("quickTask.promptLabel")),Q(M,"onInput",(o)=>q(OJ(o))),Q(M,"onSubmit",()=>L()),D(T,$),Q(T,"flexDirection","row"),Q(T,"gap",2),U($,()=>F("quickTask.engineLabel")),U(T,b(z1,{get each(){return J.engines},children:(o)=>(()=>{var K0=W("text");return Q(K0,"onMouseUp",()=>{f(o),G("engine")}),U(K0,()=>J.engineLabel(o)),y((N0)=>{var h=H()===o?Y.primary:Y.textMuted,s=H()===o?gF.BOLD:void 0;return h!==N0.e&&(N0.e=Q(K0,"fg",h,N0.e)),s!==N0.t&&(N0.t=Q(K0,"attributes",s,N0.t)),N0},{e:void 0,t:void 0}),K0})()}),null),D(d,e),D(d,u),Q(d,"gap",0),U(e,()=>F("quickTask.branchLabel")),Q(u,"onInput",(o)=>V(OJ(o))),Q(u,"onSubmit",()=>L()),D(z0,Q0),Q(z0,"paddingBottom",1),U(Q0,()=>F("quickTask.legend")),y((o)=>{var K0=gF.BOLD,N0=Y.text,h=Y.textMuted,s=A("prompt"),v=X(),k=F("quickTask.promptPlaceholder"),t=Z()==="prompt",I=A("engine"),n=A("branch"),q0=j(),H0=J.defaultBaseRef,j0=Z()==="branch",y0=Y.textMuted;return K0!==o.e&&(o.e=Q(x,"attributes",K0,o.e)),N0!==o.t&&(o.t=Q(x,"fg",N0,o.t)),h!==o.a&&(o.a=Q(w,"fg",h,o.a)),s!==o.o&&(o.o=Q(g,"fg",s,o.o)),v!==o.i&&(o.i=Q(M,"value",v,o.i)),k!==o.n&&(o.n=Q(M,"placeholder",k,o.n)),t!==o.s&&(o.s=Q(M,"focused",t,o.s)),I!==o.h&&(o.h=Q($,"fg",I,o.h)),n!==o.r&&(o.r=Q(e,"fg",n,o.r)),q0!==o.d&&(o.d=Q(u,"value",q0,o.d)),H0!==o.l&&(o.l=Q(u,"placeholder",H0,o.l)),j0!==o.u&&(o.u=Q(u,"focused",j0,o.u)),y0!==o.c&&(o.c=Q(Q0,"fg",y0,o.c)),o},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0}),O})()}function PT(J,z){return new Promise((Y)=>{J.replace(()=>b(wT,ZL(z,{onSubmit:(Z)=>Y(Z),onCancel:()=>Y(void 0)})),()=>Y(void 0)),J.setSize("medium")})}var Ff,NF;var CF=C(()=>{E();E();E();E();E();E();E();W1();a1();E1();ZJ();gJ();iJ();pG();Ff=["prompt","engine","branch"];NF={show:PT}});async function Mf(J={}){let z=J.logTag??"orch-connect",Y=J.connect??Zz,Z=null;try{let G=await Y();if(!G)return JY(z,"no daemon running \u2014 caller degrades"),null;return Z=new FJ(G,{...J.orchestratorOptions,channels:J.channels}),await Z.init(),Z}catch(G){return JJ(z,G),Z?.dispose(),null}}var c9=C(()=>{GZ();RJ();_Y()});function kF(J){let[z,Y]=p(J.initial??"sidebar"),[Z,G]=p(0),X=WJ();function q(B){if(G((L)=>L+1),z()===B)return;let K=X?.currentFocusedRenderable;if(K&&!K.isDestroyed)try{K.blur()}catch{}Y(B)}function H(B){let L=(Of.indexOf(z())+B+Of.length)%Of.length;q(Of[L])}let f=new Map;function j(B){let K=f.get(B);if(!K)K=()=>z()===B,f.set(B,K);return K}let V={focused:z,is:j,setFocused:q,cycle:H,refocusTick:Z};return b(hT.Provider,{value:V,get children(){return J.children}})}var Of,hT;var bF=C(()=>{E();E();W1();Of=["sidebar","workspace","files","terminal"],hT=Ez(null)});function SF(){for(let J of pY){let z=vT.get(J.id);if(!z)continue;let Y=J;Y.keys=[...z.keys],Y.hint=z.hint?{...z.hint}:void 0}}function IF(){mT((J)=>J+1)}function n9(J){return cT.get(J)}function dT(J){return n9(J)?.keys??[]}function rY(J){let z=[];for(let Y in J){let Z=J[Y];if(!Z)continue;let G=dT(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)=>z.push({key:X,cmd:Z,slot:q}))}return z}var pY,vT,d9,mT,cT;var rG=C(()=>{W1();pY=[{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"}}],vT=new Map(pY.map((J)=>[J.id,{keys:[...J.keys],hint:J.hint?{...J.hint}:void 0}]));[d9,mT]=p(0);cT=new Map(pY.map((J)=>[J.id,J]))});function Af(){if(oY)return oY;let J=nQ();if(!J.exists)return oY={path:J.path,exists:!1,applied:[],warnings:[]},oY;let z=[...J.warnings],Y=lQ(J.doc,process.platform,{chordOptsFor:Dj});z.push(...Y.warnings);let Z=Y.entries.filter((H)=>H.id.startsWith("tmux.")),G=Y.entries.filter((H)=>!H.id.startsWith("tmux.")),X=FK(pY,G);z.push(...X.warnings);let q=[...X.applied];if(Z.length>0){let H=Uj(Z);z.push(...H.warnings);for(let f of H.overridden){if(f===Pz){q.push({id:f,keys:H.focus.map((B)=>B?.chord??"").filter((B)=>B!==""),defaultKeys:uY});continue}let j=H.binds[f];q.push({id:f,keys:j?[j.chord]:[],defaultKeys:[AZ[f]]});let V=pY.find((B)=>B.id===f);if(V?.hint)V.hint.keys=j?`${jG(f)?"prefix ":""}${j.chord}`:"\u2014"}}for(let H of z)console.warn(`[kobe/keybindings] ${H}`);return oY={path:J.path,exists:!0,applied:q,warnings:z},oY}function yF(){return oY??Af()}function TF(){oY=null,LK(),RK(),SF();let J=Af();return IF(),J}var oY=null;var i9=C(()=>{Vj();_Q();$Q();rG()});var nT=250,oG,xF;var Sq=C(()=>{lG();gY();A9();({use:oG,provider:xF}=Bf({name:"KV",init:()=>{let[J,z]=$z(NJ()),Y=new Set,Z=null;function G(H){if(Y.size===0)return!0;try{let f={};for(let j of Y)f[j]=J[j];return RY(f),Y.clear(),!0}catch(f){return console.error(`[kobe] kv ${H} failed:`,f),!1}}function X(){if(Z)clearTimeout(Z);Z=setTimeout(()=>{Z=null,G("write")},nT)}let q={get ready(){return!0},get store(){return J},signal(H,f){if(J[H]===void 0)z(H,f);return[()=>q.get(H),(j)=>q.set(H,j)]},get(H,f){return J[H]??f},set(H,f){z(H,f),Y.add(H),X()},flush(){if(Z)clearTimeout(Z),Z=null;return G("flush")},clear(){for(let H of Object.keys(J))z(H,void 0);if(Z)clearTimeout(Z),Z=null;Y.clear();try{sW({})}catch(H){console.error("[kobe] kv clear write failed:",H)}}};return q}}))});var Rf="../pulse-n3cq1btw.wav";var uF=()=>{};import{existsSync as lT,mkdirSync as $T}from"fs";import{tmpdir as aT}from"os";import{basename as _T,isAbsolute as pT,join as l9,resolve as rT}from"path";function sT(J,z,Y){if(J==="ffplay")return[J,"-autoexit","-nodisp","-af",`volume=${Y}`,z];if(J==="mpv")return[J,"--no-video","--audio-display=no","--volume",String(Math.round(Y*100)),z];if(J==="mpg123"||J==="mpg321")return[J,"-g",String(Math.round(Y*100)),z];if(J==="mplayer")return[J,"-vo","null","-volume",String(Math.round(Y*100)),z];if(J==="afplay"||J==="omxplayer"||J==="aplay"||J==="cmdmp3")return[J,z];if(J==="play")return[J,"-v",String(Y),z];if(J==="cvlc")return[J,`--gain=${Y}`,"--play-and-exit",z];return[J,"-c",`(New-Object Media.SoundPlayer '${z.replace(/'/g,"''")}').PlaySync()`]}function tT(){if(gf!==void 0)return gf;let z=(process.env.PATH??"").split(":").filter(Boolean);return gf=oT.find((Y)=>z.some((Z)=>lT(l9(Z,Y))))??null,gf}async function eT(){return PF??=(async()=>{$T(wF,{recursive:!0});let J=l9(wF,_T(EF)),z=Bun.file(J);if(await z.exists())return J;return await Bun.write(z,Bun.file(EF)),J})(),PF}function hF(J=0.4){let z=tT();if(!z)return;eT().then((Y)=>{try{Bun.spawn(sT(z,Y,J),{stdin:"ignore",stdout:"ignore",stderr:"ignore"}).unref?.()}catch{}}).catch(()=>{return})}var EF,wF,oT,gf,PF;var vF=C(()=>{uF();EF=pT(Rf)?Rf:rT(import.meta.dir,Rf),wF=l9(aT(),"kobe-sfx"),oT=["ffplay","mpv","mpg123","mpg321","mplayer","afplay","play","omxplayer","aplay","cmdmp3","cvlc","powershell.exe"]});function mF(J,z){return`${J}:${z}`}function dF(J){let z=oG(),[Y,Z]=p([]),[G,X]=p(new Map),q=Vf(),H=0;function f(K){if(X((L)=>{let A=new Map(L),O=mF(K.taskId,K.tabId),R=L.get(O);if(R==="needs_input"||R==="error")return L;return A.set(O,K.kind),A}),z.get("notifications.sound.enabled",!0)!==!1){try{process.stdout.write("\x07")}catch{}hF()}if(z.get("notifications.toast.enabled",!0)!==!1){let L=++H,A={id:L,kind:K.kind,taskId:K.taskId,tabId:K.tabId,title:K.title};Z((O)=>[...O,A]),q.set(()=>j(L),Jx)}}function j(K){Z((L)=>L.filter((A)=>A.id!==K))}function V(K,L){X((A)=>{let O=mF(K,L);if(!A.has(O))return A;let R=new Map(A);return R.delete(O),R})}let B={toasts:Y,unread:G,notify:f,dismiss:j,markRead:V};return b(cF.Provider,{value:B,get children(){return J.children}})}function Nf(){let J=PJ(cF);if(!J)throw Error("useNotifications must be used within a NotificationsProvider");return J}var Jx=4500,cF;var Cf=C(()=>{E();W1();y9();vF();Sq();cF=Ez()});function $9(J,z){if(typeof z.theme==="string"&&z.theme.length>0&&z.theme!==J.selectedTheme()){if(!J.hasTheme(z.theme))J.reloadUserThemes();if(J.hasTheme(z.theme))J.setTheme(z.theme)}if(typeof z.transparentBackground==="boolean"&&z.transparentBackground!==J.transparentBackground())J.setTransparentBackground(z.transparentBackground);if(z.focusAccent===null||typeof z.focusAccent==="string"){let Y=Yx(z.focusAccent);if(Y&&Y!==J.focusAccent())J.setFocusAccent(Y)}}function Yx(J){if(J===null)return"primary";return zx.includes(J)?J:null}var zx;var nF=C(()=>{zx=["primary","success","info"]});import{readFileSync as Zx}from"fs";function iF(J){try{let z=JSON.parse(Zx(_J(),"utf8")),Y=typeof z.activeTheme==="string"&&Oq(z.activeTheme)?z.activeTheme:J,Z=z.transparentBackground===!0,G=typeof z.focusAccent==="string"&&vZ.includes(z.focusAccent)?z.focusAccent:null,X=Aq(z[kf])?z[kf]:aG;return{theme:Y,transparent:Z,focusAccent:G,locale:X}}catch{return{theme:J,transparent:!1,focusAccent:null,locale:aG}}}var kf="locale";var a9=C(()=>{t1();E1();_G()});function Xx(J){if(J)oq(J);UV(),Af();for(let{name:z,theme:Y}of EX())g9(z,Y)}function qx(J){let z={backgroundColor:"transparent",externalOutputMode:"passthrough",exitOnCtrlC:!1,screenMode:"alternate-screen",useKittyKeyboard:{}};return J?{...z,onDestroy:J}:z}function Qx(J){let z=()=>J.children,Y=()=>J.notifications?b(dF,{get children(){return z()}}):z(),Z=()=>b(zF,{get children(){return Y()}}),G=()=>J.focus?b(kF,{initial:"sidebar",get children(){return Z()}}):Z(),X=()=>J.kv?b(xF,{get children(){return G()}}):G();return b(LL,{mode:"dark",get theme(){return J.theme},get children(){return X()}})}function Hx(J){let{theme:z}=w0();return GJ(()=>JJ("pane-crash",J.error)),(()=>{var Y=W("box"),Z=W("text"),G=W("text");return D(Y,Z),D(Y,G),Q(Y,"flexDirection","column"),Q(Y,"flexGrow",1),Q(Y,"paddingLeft",1),Q(Y,"paddingTop",1),Q(Y,"gap",1),U(Z,()=>F("common.paneCrash.title")),U(G,()=>F("common.paneCrash.hint")),y((X)=>{var{background:q,error:H,textMuted:f}=z;return q!==X.e&&(X.e=Q(Y,"backgroundColor",q,X.e)),H!==X.t&&(X.t=Q(Z,"fg",H,X.t)),f!==X.a&&(X.a=Q(G,"fg",f,X.a)),X},{e:void 0,t:void 0,a:void 0}),Y})()}function fx(J){let z=w0(),Y={selectedTheme:()=>z.selected,hasTheme:(H)=>z.has(H),setTheme:(H)=>z.set(H),reloadUserThemes:()=>{for(let{name:H,theme:f}of EX())g9(H,f)},transparentBackground:()=>z.transparentBackground,setTransparentBackground:(H)=>z.setTransparentBackground(H),focusAccent:()=>z.focusAccent,setFocusAccent:(H)=>z.setFocusAccent(H)};$9(Y,{theme:J.boot.theme,transparentBackground:J.boot.transparent,focusAccent:J.boot.focusAccent}),Rq(J.boot.locale);let[Z,G]=p(null),X=!1;GJ(()=>{(async()=>{let H=await Mf({logTag:"ui-prefs",channels:["ui-prefs","keybindings"]});if(!H)return;if(X){H.dispose();return}G(H)})()}),_0(()=>{let H=Z()?.uiPrefsSignal()();if(!H)return;if($9(Y,H),Aq(H.locale))Rq(H.locale)});let q=null;return _0(()=>{let H=Z()?.keybindingsRevSignal()();if(H==null)return;if(q===null||H===q){q=H;return}q=H,TF()}),S1(()=>{X=!0,Z()?.dispose()}),null}async function KJ(J){Xx(J.logContext);let z=iF(Gx),Y=await J.setup(z),Z=J.providers?.kv??!0,G=J.providers?.focus??!0,X=J.providers?.notifications??!1;await jL(()=>b(Qx,{get theme(){return z.theme},kv:Z,focus:G,notifications:X,get children(){return[b(fx,{boot:z}),b(i7,{fallback:(q)=>b(Hx,{error:q}),get children(){return Y.root()}})]}}),qx(Y.onDestroy))}var Gx="claude";var DY=C(()=>{E();E();E();E();E();E();E();GZ();W1();c9();bF();i9();Sq();Cf();E1();GH();ZJ();iJ();nF();a9()});import{homedir as jx}from"os";async function _9(J,z,Y,Z,G={}){let X=C1(z.id);if(await V1(X))return!0;let{archivedHistoryPreviewEnabled:q}=await Promise.resolve().then(() => (dQ(),BK));if(z.archived&&q()){let{ensureSession:K}=await Promise.resolve().then(() => (zJ(),TJ)),L=z.worktreePath??"",A=L&&xY(L)?L:Y&&xY(Y)?Y:jx();if(!await K({name:X,cwd:A,command:vJ(Z),taskId:z.id,vendor:Z,repo:Y,archived:!0,archivedWorktree:L||A,title:z.title}))throw new sY("session",`failed to start history session for ${z.id}`);return!1}let H=z.worktreePath;if(!H||!xY(H)){if(!J)throw new sY("no-daemon",`no daemon; cannot materialise worktree for ${z.id}`);try{H=await J.ensureWorktree(z.id)}catch(K){throw new sY("worktree",`ensureWorktree failed for ${z.id}`,K)}await G.reload?.()}if(!H||!xY(H))throw new sY("worktree",`task ${z.id} has no usable worktree`);let{ensureSession:f}=await Promise.resolve().then(() => (zJ(),TJ)),{resolveEngineLaunchInit:j}=await Promise.resolve().then(() => (yG(),mH)),V=Y?j(Y,H,{kind:G.includeInitPrompt?"repo-init":"none"}):void 0;if(!await f({name:X,cwd:H,command:vJ(Z),taskId:z.id,vendor:Z,repo:Y,launchInit:V}))throw new sY("session",`failed to start tmux session for ${z.id}`);return!1}async function p9(J,z,Y,Z,G={}){let X=C1(z.id),q=await Promise.resolve().then(() => (zJ(),TJ));if(G.captureFrom){let j=await q.currentSessionName();if(j&&j!==X)await q.captureGlobalLayout(j)}if(await _9(J,z,Y,Z,{includeInitPrompt:G.includeInitPrompt,reload:G.reload})&&G.heal)try{let j=await kZ(X,"@kobe_worktree")||z.worktreePath||"";if(j&&xY(j)){let{resolveEngineLaunchInit:V}=await Promise.resolve().then(() => (yG(),mH)),B=Y?V(Y,j,{kind:G.includeInitPrompt?"repo-init":"none"}):void 0;await q.ensureSession({name:X,cwd:j,command:vJ(Z),taskId:z.id,vendor:Z,repo:Y,launchInit:B})}}catch(j){console.error("[kobe handover] heal failed (continuing to switch):",j)}let{syncSessionZen:f}=await Promise.resolve().then(() => (PY(),uj));if(await f(X),G.isCurrent&&!G.isCurrent())return;await J?.setActiveTask(z.id).catch(()=>{}),await q.enterWindow(X)}async function bf(J,z,Y,Z,G={}){await p9(J,z,Y,Z,{includeInitPrompt:G.includeInitPrompt})}var sY;var Sf=C(()=>{eJ();Fz();v1();sY=class sY extends Error{phase;cause;constructor(J,z,Y){super(z);this.name="HandoverError",this.phase=J,this.cause=Y}}});var lF={};q1(lF,{startNewTaskHost:()=>Bx,NewTaskPage:()=>If});function If(J){let{theme:z}=w0(),Y=d1();GJ(()=>{Z()});async function Z(){let G=CJ(),X=J.defaultRepo||G[0]||process.cwd(),q=uJ(N1("lastSelectedVendor"),EJ()),H=await zY(),f=J.orchestrator,j=await Lf.show(Y,X,G,{defaultVendor:q,availableVendors:H,discoverAdoptable:f?(B)=>f.discoverAdoptableWorktrees(B):void 0});if(!j)process.exit(0);if(e1("lastSelectedVendor",j.vendor),oz(j.repo),!f)console.error("[kobe new-task] no daemon; cannot create task"),process.exit(1);let V;try{if(j.mode==="adopt")for(let B of j.adopt)V=await f.adoptWorktree({repo:j.repo,worktreePath:B.worktreePath,branch:B.branch,vendor:j.vendor});else V=await f.createTask({repo:j.repo,baseRef:j.baseRef,vendor:j.vendor})}catch(B){console.error("[kobe new-task] task.create/adopt failed:",B),process.exit(1)}if(V)try{await bf(f,V,j.repo,j.vendor,{includeInitPrompt:j.mode!=="adopt"})}catch(B){console.error("[kobe new-task] auto-enter failed:",B)}process.exit(0)}return(()=>{var G=W("box");return Q(G,"flexDirection","column"),Q(G,"flexGrow",1),y((X)=>Q(G,"backgroundColor",z.background,X)),G})()}async function Bx(J){await KJ({setup:async()=>{let z=null;try{let Y=await kz(),Z=new FJ(Y);await Z.init(),z=Z}catch(Y){console.error("[kobe new-task] daemon unavailable; cannot create task:",Y)}return{root:()=>b(If,{get defaultRepo(){return J.defaultRepo},orchestrator:z}),onDestroy:()=>{z?.dispose()}}}})}var r9=C(()=>{E();E();E();E();RJ();W1();_Y();XZ();A1();a1();pG();E1();DY();Sf();iJ()});function yf(J,z,Y,Z,G={}){if(J.length===0)return z;let X=new Map;for(let f of J)X.set(Y(f),f);let q=J.length===z.length,H=Array(z.length);for(let f=0;f<z.length;f++){let j=z[f],V=X.get(Y(j));if(V&&Z(V,j)&&(!G.samePosition||J[f]===V)){if(H[f]=V,q&&J[f]!==V)q=!1}else H[f]=j,q=!1}return q?J:H}function $F(J,z){if(!J)return!0;let Y=J.toLowerCase(),Z=z.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 Wx(J,z){let Y=z==="archived";return J.filter((Z)=>Z.archived===Y)}function o9(J,z,Y,Z="default",G){let X=Wx(J,z),q=Y?.trim()??"",H=G?qz(G):null,f=q?X.filter((O)=>$F(q,`${O.title} ${yz(O.repo)}`)):X,j=[],V=[],B=[],K=new Set;for(let O of f){if(O.kind==="main"){let R=qz(O.repo);if(K.has(R))continue;K.add(R),j.push(O);continue}if(H&&qz(O.repo)!==H)continue;if(O.pinned===!0)V.push(O);else B.push(O)}if(j.sort((O,R)=>yz(O.repo).localeCompare(yz(R.repo))),Z==="recent")V.sort(aF),B.sort(aF);let L=[],A=0;for(let O of j)L.push({kind:"task",task:O,flatIndex:A}),A++;for(let O of V)L.push({kind:"task",task:O,flatIndex:A}),A++;for(let O of B)L.push({kind:"task",task:O,flatIndex:A}),A++;return L}function aF(J,z){let Y=_F(z)-_F(J);if(Y!==0)return Y;return String(z.id).localeCompare(String(J.id))}function _F(J){let z=Date.parse(J.updatedAt||J.createdAt);return Number.isFinite(z)?z:0}function yz(J){let z=J.split("/").filter(Boolean);return z[z.length-1]??J}function qz(J){return J.trim().replace(/[\\/]+$/,"")||J}function Vx(J,z){let Y=yz(J);if(!z.some((G)=>G!==J&&yz(G)===Y))return Y;return J.replace(/[\\/]+$/,"").split(/[\\/]+/).slice(-2).join("/")}function pF(J,z){let Y=z==="archived",Z=new Map;for(let X of J){let q=qz(X.repo),H=Z.get(q)??{repo:X.repo,count:0};if(X.kind==="main")H.repo=X.repo;else if(X.archived===Y)H.count+=1;Z.set(q,H)}let G=[...Z.values()].map((X)=>X.repo);return[...Z.values()].map((X)=>({repo:X.repo,label:Vx(X.repo,G),count:X.count})).sort((X,q)=>X.label.localeCompare(q.label))}function rF(J,z){if(J.length===0)return-1;if(!z)return J[0]?.flatIndex??-1;let Y=qz(z),Z=J.find((X)=>X.task.kind!=="main"&&qz(X.task.repo)===Y);if(Z)return Z.flatIndex;return J.find((X)=>X.task.kind==="main"&&qz(X.task.repo)===Y)?.flatIndex??J[0]?.flatIndex??-1}function s9(J){return J.map((z)=>z.task.id)}function oF(J,z,Y){let Z=z.length;if(J===null){if(Y===-1&&Z>0)return 0;if(Y>=Z)return Math.max(0,Z-1);if(Z===0)return-1;return Y}let G=z.indexOf(J);if(G>=0)return G;if(Z===0)return-1;if(Y<0||Y>=Z)return Z-1;return Y}function sF(J){let z=[],Y=[];for(let Z of J)if(Z.task.kind==="main")z.push(Z);else Y.push(Z);return{projectRows:z,taskRows:Y}}function Kx(J,z){return J===z||J.id===z.id&&J.kind===z.kind&&J.title===z.title&&J.repo===z.repo&&J.branch===z.branch&&J.worktreePath===z.worktreePath&&J.status===z.status&&J.archived===z.archived&&J.pinned===z.pinned&&J.vendor===z.vendor}function tF(J,z){return yf(J,z,(Y)=>Y.task.id,(Y,Z)=>Y.flatIndex===Z.flatIndex&&Kx(Y.task,Z.task),{samePosition:!0})}var Tf=()=>{};var eF={};q1(eF,{startQuickTaskHost:()=>Fx});async function Ux(J,z){let Y,Z;if(z){let B=await yJ(z,["@kobe_task","@kobe_worktree"]);Y=B["@kobe_task"]||void 0,Z=B["@kobe_worktree"]||void 0}let G=(Y?J?.getTask(Y)?.repo:void 0)??CJ()[0],X=G??Z??process.cwd();if(!G)return{ctx:null,fallbackRepo:X};let q=await zY(),H=uJ(N1("lastSelectedVendor"),EJ()),f=q.length===0||q.includes(H)?H:q[0]??H,j=gq(MJ(G))??Iz,V=q.length>0?q:[f];return{ctx:{repo:G,vendor:f,baseRef:j,engines:V},fallbackRepo:X}}async function Dx(J,z,Y,Z,G){let X=await _9(J,z,Y,Z),q=C1(z.id),{pane:H}=await TX(q,!X);if(H)await xX(H,G)}function Lx(J){let{theme:z}=w0(),Y=d1();GJ(()=>{Z()});async function Z(){let G=J.ctx,X=await NF.show(Y,{repoLabel:yz(G.repo),engines:G.engines,defaultVendor:G.vendor,defaultBaseRef:G.baseRef,engineLabel:LZ});if(X===void 0)process.exit(0);e1("lastSelectedVendor",X.vendor),oz(G.repo);let q=J.orchestrator;if(!q)console.error("[kobe quick-task] no daemon; cannot create task"),process.exit(1);try{let H=await q.createTask({repo:G.repo,baseRef:X.baseRef,vendor:X.vendor});await Dx(q,H,G.repo,X.vendor,X.prompt),await bf(q,H,G.repo,X.vendor)}catch(H){console.error("[kobe quick-task] task.create/deliver failed:",H),process.exit(1)}process.exit(0)}return(()=>{var G=W("box");return Q(G,"flexDirection","column"),Q(G,"flexGrow",1),y((X)=>Q(G,"backgroundColor",z.background,X)),G})()}async function Fx(J){await KJ({setup:async()=>{let z=null;try{let G=await kz(),X=new FJ(G);await X.init(),z=X}catch(G){console.error("[kobe quick-task] daemon unavailable; cannot create task:",G)}let{ctx:Y,fallbackRepo:Z}=await Ux(z,J.session);return{root:()=>Y?b(Lx,{ctx:Y,orchestrator:z}):b(If,{defaultRepo:Z,orchestrator:z}),onDestroy:()=>{z?.dispose()}}}})}var JM=C(()=>{E();E();E();E();RJ();W1();_Y();XZ();eJ();A1();v1();pQ();a1();CF();E1();Kf();DY();Df();Sf();r9();Tf();iJ()});function uf(J){let z=J.trim().split(/\s+/).pop()??"",Y=/^([CM])-(.+)$/.exec(z);if(!Y)return null;let Z=Y[1]==="C"?"\u2303":"\u2325",G=Y[2]??"";return`${Z}${G.length===1?G.toUpperCase():G}`}function xf(J,z){if(J.includes("/"))return J.split("/").map((G)=>xf(G,z)).join("/");let Y=J.toLowerCase();if(Y==="tab")return"tab";let Z=Ox[Y];if(Z)return Z;if(/^f\d{1,2}$/.test(Y))return Y.toUpperCase();if(!z)return J;if(/^[a-z]$/.test(Y))return J.toUpperCase();return J.replace(/[a-z]+/gi,(G)=>G.toUpperCase())}function sG(J,z="\u2303B"){let Y=J.trim();if(!Y)return Y;let Z=/^prefix\s+(.+)$/i.exec(Y);if(Z){let H=Z[1]??"";return`${z} ${H.includes("+")?sG(H,z):xf(H,!0)}`}let G=Y.split("+");if(G.length===1)return xf(G[0]??"",!1);let X=G[G.length-1]??"";return`${G.slice(0,-1).map((H)=>Mx[H.toLowerCase().trim()]??H).join("")} ${xf(X,!0)}`}var Mx,Ox;var t9=C(()=>{Mx={ctrl:"\u2303",control:"\u2303",alt:"\u2325",opt:"\u2325",option:"\u2325",shift:"\u21E7",cmd:"\u2318",command:"\u2318",meta:"\u2318",super:"\u2318"},Ox={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 zM}from"@opentui/core";function Ax(J){let z=new Map,Y=[];for(let Z of J){if(!z.has(Z.category))z.set(Z.category,[]),Y.push(Z.category);z.get(Z.category).push(Z)}return Y.map((Z)=>({category:Z,rows:z.get(Z)}))}function tG(J={}){let z=d1(),{theme:Y}=w0(),Z=()=>Ax(pY),G=()=>J.onClose?J.onClose():z.clear(),[X,q]=p("\u2303B");return GJ(()=>{$0(["show-options","-g","prefix"]).then(({code:H,stdout:f})=>{if(H!==0)return;let j=uf(f);if(j)q(j)})}),K1(()=>({bindings:[{key:"?",cmd:G}]})),(()=>{var H=W("box"),f=W("box"),j=W("text"),V=W("text"),B=W("scrollbox"),K=W("box");return D(H,f),D(H,B),Q(H,"paddingLeft",2),Q(H,"paddingRight",2),Q(H,"gap",1),Q(H,"flexShrink",1),D(f,j),D(f,V),Q(f,"flexDirection","row"),Q(f,"justifyContent","space-between"),Q(f,"flexShrink",0),U(j,()=>F("help.title")),Q(V,"onMouseUp",G),U(V,()=>F("help.esc")),D(B,K),Q(B,"flexShrink",1),Q(B,"flexGrow",1),Q(B,"stickyScroll",!1),Q(K,"paddingBottom",1),Q(K,"gap",1),Q(K,"paddingRight",1),U(K,b(z1,{get each(){return Z()},children:(L)=>(()=>{var A=W("box"),O=W("text");return D(A,O),Q(A,"gap",0),U(O,()=>k9("category",L.category)),U(A,b(z1,{get each(){return L.rows},children:(R)=>{let x=R.hint?.keys??R.keys[0]??"\u2014",w=()=>x==="\u2014"?"\u2014":sG(x,X()),S=()=>(R.hint?R.keys:R.keys.slice(1)).map((g)=>sG(g,X()));return(()=>{var g=W("box"),M=W("box"),T=W("text"),$=W("box"),d=W("text");return D(g,M),D(g,$),Q(g,"flexDirection","row"),Q(g,"gap",2),Q(g,"paddingLeft",1),D(M,T),Q(M,"width",14),U(T,w),D($,d),Q($,"flexGrow",1),U(d,()=>k9("desc",R.id)),U(g,(()=>{var e=S0(()=>S().length>0);return()=>e()?(()=>{var u=W("box"),z0=W("text");return D(u,z0),U(z0,()=>`(${S().join(", ")})`),y((Q0)=>Q(z0,"fg",Y.textMuted,Q0)),u})():null})(),null),y((e)=>{var{primary:u,text:z0}=Y;return u!==e.e&&(e.e=Q(T,"fg",u,e.e)),z0!==e.t&&(e.t=Q(d,"fg",z0,e.t)),e},{e:void 0,t:void 0}),g})()}}),null),y((R)=>{var x=Y.accent,w=zM.BOLD;return x!==R.e&&(R.e=Q(O,"fg",x,R.e)),w!==R.t&&(R.t=Q(O,"attributes",w,R.t)),R},{e:void 0,t:void 0}),A})()})),y((L)=>{var A=zM.BOLD,O=Y.text,R=Y.textMuted,x={trackOptions:{backgroundColor:Y.backgroundDialog,foregroundColor:Y.borderActive}};return A!==L.e&&(L.e=Q(j,"attributes",A,L.e)),O!==L.t&&(L.t=Q(j,"fg",O,L.t)),R!==L.a&&(L.a=Q(V,"fg",R,L.a)),x!==L.o&&(L.o=Q(B,"verticalScrollbarOptions",x,L.o)),L},{e:void 0,t:void 0,a:void 0,o:void 0}),H})()}var e9=C(()=>{E();E();E();E();E();E();E();W1();v1();rG();E1();ZJ();t9();gJ();iJ();tG.show=(J)=>{J.replace(()=>b(tG,{}))}});import{TextAttributes as Rx}from"@opentui/core";function YM(J){let z=d1(),{theme:Y}=w0(),[Z,G]=p(J.currentTitle);function X(){let q=Z().trim();if(kq(q)&&!J.allowEmpty)return;J.onSubmit(q),z.clear()}return(()=>{var q=W("box"),H=W("box"),f=W("text"),j=W("text"),V=W("box"),B=W("text"),K=W("input"),L=W("box"),A=W("text");return D(q,H),D(q,V),D(q,L),Q(q,"paddingLeft",2),Q(q,"paddingRight",2),Q(q,"gap",1),D(H,f),D(H,j),Q(H,"flexDirection","row"),Q(H,"justifyContent","space-between"),U(f,()=>J.dialogTitle??F("common.rename.defaultTitle")),D(j,x0("esc")),Q(j,"onMouseUp",()=>J.onCancel()),D(V,B),D(V,K),Q(V,"gap",0),U(B,()=>J.fieldLabel??F("common.rename.defaultFieldLabel")),Q(K,"focused",!0),Q(K,"onInput",(O)=>G(OJ(O))),Q(K,"onSubmit",()=>X()),D(L,A),Q(L,"paddingBottom",1),U(A,()=>F("common.rename.footerHint",{submitLabel:J.submitLabel??F("common.rename.defaultSubmitLabel")})),y((O)=>{var R=Rx.BOLD,x=Y.text,w=Y.textMuted,S=Y.accent,g=Z(),M=J.placeholder??J.currentTitle,T=Y.textMuted;return R!==O.e&&(O.e=Q(f,"attributes",R,O.e)),x!==O.t&&(O.t=Q(f,"fg",x,O.t)),w!==O.a&&(O.a=Q(j,"fg",w,O.a)),S!==O.o&&(O.o=Q(B,"fg",S,O.o)),g!==O.i&&(O.i=Q(K,"value",g,O.i)),M!==O.n&&(O.n=Q(K,"placeholder",M,O.n)),T!==O.s&&(O.s=Q(A,"fg",T,O.s)),O},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),q})()}var ZM=C(()=>{E();E();E();E();E();E();E();ZJ();W1();E1();iJ();pG()});function gx(J,z,Y={}){return new Promise((Z)=>{J.replace(()=>b(YM,{currentTitle:z,get dialogTitle(){return Y.dialogTitle},get fieldLabel(){return Y.fieldLabel},get submitLabel(){return Y.submitLabel},get placeholder(){return Y.placeholder},get allowEmpty(){return Y.allowEmpty},onSubmit:(G)=>Z(G),onCancel:()=>Z(void 0)}),()=>Z(void 0))})}var LY;var JW=C(()=>{E();ZM();LY={show:gx}});import{TextAttributes as Nx}from"@opentui/core";function Cx(J){if(!J)return J;return J.charAt(0).toUpperCase()+J.slice(1)}function FY(J){let z=d1(),{theme:Y}=w0(),[Z,G]=$z({active:J.initialActive??"confirm"});return K1(()=>({bindings:[{key:"return",cmd:()=>{if(Z.active==="confirm")J.onConfirm?.();if(Z.active==="cancel")J.onCancel?.();z.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"),H=W("text"),f=W("text"),j=W("text"),V=W("box");return D(X,q),D(X,j),D(X,V),Q(X,"paddingLeft",2),Q(X,"paddingRight",2),Q(X,"paddingBottom",1),Q(X,"gap",0),D(q,H),D(q,f),Q(q,"flexDirection","row"),Q(q,"justifyContent","space-between"),U(H,()=>J.title),D(f,x0("esc")),Q(f,"onMouseUp",()=>z.clear()),U(j,()=>J.message),Q(V,"flexDirection","row"),Q(V,"justifyContent","flex-end"),Q(V,"paddingTop",1),U(V,b(z1,{each:["cancel","confirm"],children:(B)=>(()=>{var K=W("box"),L=W("text");return D(K,L),Q(K,"paddingLeft",1),Q(K,"paddingRight",1),Q(K,"onMouseUp",()=>{if(B==="confirm")J.onConfirm?.();if(B==="cancel")J.onCancel?.();z.clear()}),U(L,()=>Cx(B==="cancel"?J.label??F("common.cancel"):J.confirmLabel??F("common.confirm"))),y((A)=>{var O=B===Z.active?Y.primary:void 0,R=B===Z.active?Y.selectedListItemText:Y.textMuted;return O!==A.e&&(A.e=Q(K,"backgroundColor",O,A.e)),R!==A.t&&(A.t=Q(L,"fg",R,A.t)),A},{e:void 0,t:void 0}),K})()})),y((B)=>{var K=Nx.BOLD,L=Y.text,A=Y.textMuted,O=Y.textMuted;return K!==B.e&&(B.e=Q(H,"attributes",K,B.e)),L!==B.t&&(B.t=Q(H,"fg",L,B.t)),A!==B.a&&(B.a=Q(f,"fg",A,B.a)),O!==B.o&&(B.o=Q(j,"fg",O,B.o)),B},{e:void 0,t:void 0,a:void 0,o:void 0}),X})()}var zW=C(()=>{E();E();E();E();E();E();E();ZJ();W1();lG();E1();gJ();iJ();FY.show=(J,z,Y,Z,G,X)=>{return new Promise((q)=>{J.replace(()=>b(FY,{title:z,message:Y,onConfirm:()=>q(!0),onCancel:()=>q(!1),label:Z,confirmLabel:G,get initialActive(){return X?.initialActive}}),()=>q(void 0)),J.setSize("small")})}});import{unlinkSync as kx}from"fs";import{join as bx}from"path";function GM(J){return J instanceof FJ}function XM(J,z){try{J?.destroy()}catch(Y){console.error(`kobe: renderer.destroy() failed during ${z}:`,Y)}}async function YW(J,z,Y){if(await FY.show(J,"Reset UI state?","Wipes ~/.config/kobe/state.json and ~/.kobe/tasks.json, then quits kobe \u2014 relaunch for a fresh start with empty Working session / Archive lists. Worktrees on disk and Claude Code session history are NOT touched.","cancel")!==!0)return;z.clear();try{kx(bx(Tz(),".kobe","tasks.json"))}catch(G){if(G.code!=="ENOENT")console.error("kobe: failed to delete tasks.json during reset:",G)}XM(Y,"reset"),process.stderr.write(`kobe: UI state reset. Relaunch kobe to start fresh.
263
- `),process.exit(0)}async function ZW(J,z,Y){if(!(z instanceof FJ))return;if(await FY.show(J,"Restart backend?","Quits this kobe window. Relaunch to (re)spawn the daemon. Any other attached windows keep their connection. In v0.6 the daemon's RPC surface shrank to task CRUD + subscribe, so a graceful daemon.stop RPC is no longer plumbed through the client \u2014 quit + relaunch is the path.","cancel")!==!0)return;XM(Y,"daemon restart"),process.stderr.write(`kobe: window closed. Relaunch kobe to start fresh.
264
- `),process.exit(0)}var qM=C(()=>{_Y();t1();zW()});function Sx(J){return`theme:${J}`}function GW(J){return`language:${J}`}function XW(J){return`accent:${J}`}function Ix(J){return`engine:${J}`}function Iq(J){return`surface:${J}`}function qW(J){return[...J.themeNames.map((z)=>({id:Sx(z),kind:"theme",name:z})),...mZ.map((z)=>({id:GW(z.id),kind:"language",locale:z.id})),{id:"transparent",kind:"transparent"},...J.focusAccentSlots.map((z)=>({id:XW(z),kind:"focusAccent",slot:z})),{id:"toast",kind:"toast"},{id:"sound",kind:"sound"},{id:"zen-keep-tasks",kind:"zenKeepTasks"},{id:Iq("chattab"),kind:"surface",surface:"chattab"},{id:Iq("taskpanel"),kind:"surface",surface:"taskpanel"},{id:"editor-kind",kind:"editorKind"},{id:"editor-custom",kind:"editorCustom"}]}function yx(J){return[...J.map((z)=>({id:Ix(z),kind:"engine",vendor:z})),{id:"add-engine",kind:"engineAdd"}]}function Tx(){return[{id:"feedback-title",kind:"feedbackTitle"},{id:"feedback-body",kind:"feedbackBody"},{id:"feedback-send",kind:"feedbackSend"}]}function eG(J){return[{id:"dev-reset",kind:"devReset"},...J?[{id:"dev-restart",kind:"devRestartDaemon"}]:[],{id:"remote-projects",kind:"devRemoteProjects"},{id:"auto-status",kind:"devAutoStatus"},{id:"dispatcher",kind:"devDispatcher"},{id:"archived-history",kind:"devArchivedHistory"}]}function QM(J,z){switch(J){case"general":return qW(z);case"engines":return yx(z.engineList);case"accounts":case"keys":return[];case"feedback":return Tx();case"dev":return eG(z.hasDaemon)}}function JX(J,z){return J.findIndex((Y)=>Y.id===z)}function Ef(J,z){return J[z]}var dZ;var QW=C(()=>{_G();dZ=[{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 o0}from"@opentui/core";function HM(J){let{theme:z}=w0();return(()=>{var Y=W("box");return Q(Y,"flexDirection","column"),Q(Y,"flexShrink",0),Q(Y,"width",14),Q(Y,"gap",1),U(Y,b(z1,{each:dZ,children:(Z,G)=>{let X=()=>G()===J.cursor(),q=()=>X()&&J.level()==="sidebar";return(()=>{var H=W("box"),f=W("text");return D(H,f),Q(H,"paddingLeft",1),Q(H,"paddingRight",1),Q(H,"onMouseUp",()=>J.switchSection(Z.id)),Q(f,"wrapMode","none"),U(f,()=>F(`settings.sections.${Z.id}`)),y((j)=>{var V=q()?z.primary:void 0,B=q()?z.selectedListItemText:X()?z.accent:z.textMuted,K=X()?o0.BOLD:void 0;return V!==j.e&&(j.e=Q(H,"backgroundColor",V,j.e)),B!==j.t&&(j.t=Q(f,"fg",B,j.t)),K!==j.a&&(j.a=Q(f,"attributes",K,j.a)),j},{e:void 0,t:void 0,a:void 0}),H})()}})),Y})()}function fM(J){let z=w0(),{theme:Y}=z,Z=()=>qW({themeNames:J.themeNames(),focusAccentSlots:vZ}),G=(M)=>JX(Z(),M),X=()=>G("transparent"),q=()=>G("toast"),H=()=>G("sound"),f=()=>G("zen-keep-tasks"),j=()=>G(Iq("chattab")),V=()=>G(Iq("taskpanel")),B=()=>G("editor-kind"),K=()=>G("editor-custom"),L=()=>J.bodyRow()===X(),A=()=>J.bodyRow()===q(),O=()=>J.bodyRow()===H(),R=()=>J.bodyRow()===f(),x=()=>J.bodyRow()===j(),w=()=>J.bodyRow()===V(),S=()=>J.bodyRow()===B(),g=()=>J.bodyRow()===K();return(()=>{var M=W("box"),T=W("text"),$=W("text"),d=W("box"),e=W("box"),u=W("text"),z0=W("text"),Q0=W("box"),o=W("text"),K0=W("text"),N0=W("box"),h=W("text"),s=W("box"),v=W("text"),k=W("text"),t=W("box"),I=W("text"),n=W("text"),q0=W("box"),H0=W("text"),j0=x0(" "),y0=W("box"),p0=W("text"),E0=x0(" "),R0=W("box"),m=W("text"),L0=W("text"),G0=W("box"),F0=W("text"),a0=x0(" "),t0=W("box"),P0=W("text"),v0=W("text"),U1=W("box"),r=W("text"),D0=x0(" "),b0=W("box"),i0=W("text"),f1=x0(" "),u0=W("box"),j1=W("text"),R1=W("text"),G1=W("box"),Z0=W("text"),X0=W("box"),V0=W("text");return D(M,T),D(M,$),D(M,d),D(M,e),D(M,Q0),D(M,s),D(M,t),D(M,R0),D(M,t0),D(M,u0),Q(M,"flexDirection","column"),Q(M,"gap",1),U(T,()=>F("settings.general.theme")),U($,()=>F("settings.general.themeHint")),Q(d,"flexDirection","column"),Q(d,"gap",0),U(d,b(z1,{get each(){return J.themeNames()},children:(N,f0)=>{let T0=()=>J.level()==="body"&&J.bodyRow()===f0(),O0=()=>N===z.selected;return(()=>{var g0=W("box"),M0=W("text");return D(g0,M0),Q(g0,"flexDirection","row"),Q(g0,"gap",1),Q(g0,"paddingLeft",1),Q(g0,"paddingRight",1),Q(g0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(f0()),J.setThemeCursor(f0()),J.selectTheme(N)}),Q(M0,"wrapMode","none"),U(M0,()=>O0()?"\u25CF ":" ",null),U(M0,N,null),y((W0)=>{var s0=T0()?Y.primary:void 0,e0=T0()?Y.selectedListItemText:O0()?Y.accent:Y.text,Y1=T0()||O0()?o0.BOLD:void 0;return s0!==W0.e&&(W0.e=Q(g0,"backgroundColor",s0,W0.e)),e0!==W0.t&&(W0.t=Q(M0,"fg",e0,W0.t)),Y1!==W0.a&&(W0.a=Q(M0,"attributes",Y1,W0.a)),W0},{e:void 0,t:void 0,a:void 0}),g0})()}})),D(e,u),D(e,z0),Q(e,"flexDirection","column"),Q(e,"gap",0),Q(e,"paddingTop",1),U(u,()=>F("settings.general.language")),Q(z0,"wrapMode","word"),U(z0,()=>F("settings.general.languageHint")),U(e,b(z1,{each:mZ,children:(N)=>{let f0=()=>G(GW(N.id)),T0=()=>J.level()==="body"&&J.bodyRow()===f0(),O0=()=>J.currentLocale()===N.id;return(()=>{var g0=W("box"),M0=W("text");return D(g0,M0),Q(g0,"flexDirection","row"),Q(g0,"gap",1),Q(g0,"paddingLeft",1),Q(g0,"paddingRight",1),Q(g0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(f0()),J.selectLanguage(N.id)}),Q(M0,"wrapMode","none"),U(M0,()=>O0()?"\u25CF ":" ",null),U(M0,()=>N.label,null),y((W0)=>{var s0=T0()?Y.primary:void 0,e0=T0()?Y.selectedListItemText:O0()?Y.accent:Y.text,Y1=T0()||O0()?o0.BOLD:void 0;return s0!==W0.e&&(W0.e=Q(g0,"backgroundColor",s0,W0.e)),e0!==W0.t&&(W0.t=Q(M0,"fg",e0,W0.t)),Y1!==W0.a&&(W0.a=Q(M0,"attributes",Y1,W0.a)),W0},{e:void 0,t:void 0,a:void 0}),g0})()}}),null),D(Q0,o),D(Q0,K0),D(Q0,N0),Q(Q0,"flexDirection","column"),Q(Q0,"gap",0),Q(Q0,"paddingTop",1),U(o,()=>F("settings.general.transparent")),Q(K0,"wrapMode","word"),U(K0,()=>F("settings.general.transparentHint")),D(N0,h),Q(N0,"flexDirection","row"),Q(N0,"paddingLeft",1),Q(N0,"paddingRight",1),Q(N0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(X()),J.toggleTransparent()}),Q(h,"wrapMode","none"),U(h,(()=>{var N=S0(()=>!!z.transparentBackground);return()=>N()?F("settings.general.on"):F("settings.general.off")})()),D(s,v),D(s,k),Q(s,"flexDirection","column"),Q(s,"gap",0),Q(s,"paddingTop",1),U(v,()=>F("settings.general.focusAccent")),Q(k,"wrapMode","word"),U(k,()=>F("settings.general.focusAccentHint")),U(s,b(z1,{each:vZ,children:(N)=>{let f0=()=>G(XW(N)),T0=()=>J.level()==="body"&&J.bodyRow()===f0(),O0=()=>z.focusAccent===N;return(()=>{var g0=W("box"),M0=W("text");return D(g0,M0),Q(g0,"flexDirection","row"),Q(g0,"gap",1),Q(g0,"paddingLeft",1),Q(g0,"paddingRight",1),Q(g0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(f0()),J.selectFocusAccent(N)}),Q(M0,"wrapMode","none"),U(M0,()=>O0()?"\u25CF ":" ",null),U(M0,()=>F(`settings.general.accent${N.charAt(0).toUpperCase()}${N.slice(1)}`),null),y((W0)=>{var s0=T0()?Y.primary:void 0,e0=T0()?Y.selectedListItemText:O0()?Y.focusAccent:Y.text,Y1=T0()||O0()?o0.BOLD:void 0;return s0!==W0.e&&(W0.e=Q(g0,"backgroundColor",s0,W0.e)),e0!==W0.t&&(W0.t=Q(M0,"fg",e0,W0.t)),Y1!==W0.a&&(W0.a=Q(M0,"attributes",Y1,W0.a)),W0},{e:void 0,t:void 0,a:void 0}),g0})()}}),null),D(t,I),D(t,n),D(t,q0),D(t,y0),Q(t,"flexDirection","column"),Q(t,"gap",0),Q(t,"paddingTop",1),U(I,()=>F("settings.general.notifications")),Q(n,"wrapMode","word"),U(n,()=>F("settings.general.notificationsHint")),D(q0,H0),Q(q0,"flexDirection","row"),Q(q0,"gap",1),Q(q0,"paddingLeft",1),Q(q0,"paddingRight",1),Q(q0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(q()),J.toggleToast()}),D(H0,j0),Q(H0,"wrapMode","none"),U(H0,()=>J.toastEnabled()?"[x]":"[ ]",j0),U(H0,()=>F("settings.general.toast"),null),D(y0,p0),Q(y0,"flexDirection","row"),Q(y0,"gap",1),Q(y0,"paddingLeft",1),Q(y0,"paddingRight",1),Q(y0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(H()),J.toggleSound()}),D(p0,E0),Q(p0,"wrapMode","none"),U(p0,()=>J.soundEnabled()?"[x]":"[ ]",E0),U(p0,()=>F("settings.general.sound"),null),D(R0,m),D(R0,L0),D(R0,G0),Q(R0,"flexDirection","column"),Q(R0,"gap",0),Q(R0,"paddingTop",1),U(m,()=>F("settings.general.zen")),Q(L0,"wrapMode","word"),U(L0,()=>F("settings.general.zenHint")),D(G0,F0),Q(G0,"flexDirection","row"),Q(G0,"gap",1),Q(G0,"paddingLeft",1),Q(G0,"paddingRight",1),Q(G0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(f()),J.toggleZenKeepsTasks()}),D(F0,a0),Q(F0,"wrapMode","none"),U(F0,()=>J.zenKeepsTasks()?"[x]":"[ ]",a0),U(F0,()=>F("settings.general.zenKeepTasks"),null),D(t0,P0),D(t0,v0),D(t0,U1),D(t0,b0),Q(t0,"flexDirection","column"),Q(t0,"gap",0),Q(t0,"paddingTop",1),U(P0,()=>F("settings.general.surface")),Q(v0,"wrapMode","word"),U(v0,()=>F("settings.general.surfaceHint")),D(U1,r),Q(U1,"flexDirection","row"),Q(U1,"gap",1),Q(U1,"paddingLeft",1),Q(U1,"paddingRight",1),Q(U1,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(j()),J.selectSurface("chattab")}),D(r,D0),Q(r,"wrapMode","none"),U(r,()=>J.settingsSurface()==="chattab"?"[x]":"[ ]",D0),U(r,()=>F("settings.general.surfaceChattab"),null),D(b0,i0),Q(b0,"flexDirection","row"),Q(b0,"gap",1),Q(b0,"paddingLeft",1),Q(b0,"paddingRight",1),Q(b0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(V()),J.selectSurface("taskpanel")}),D(i0,f1),Q(i0,"wrapMode","none"),U(i0,()=>J.settingsSurface()==="taskpanel"?"[x]":"[ ]",f1),U(i0,()=>F("settings.general.surfaceTaskpanel"),null),D(u0,j1),D(u0,R1),D(u0,G1),D(u0,X0),Q(u0,"flexDirection","column"),Q(u0,"gap",0),Q(u0,"paddingTop",1),U(j1,()=>F("settings.general.editor")),Q(R1,"wrapMode","word"),U(R1,()=>F("settings.general.editorHint")),D(G1,Z0),Q(G1,"flexDirection","row"),Q(G1,"gap",1),Q(G1,"paddingLeft",1),Q(G1,"paddingRight",1),Q(G1,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(B()),J.cycleEditorKind()}),Q(Z0,"wrapMode","none"),U(Z0,()=>F("settings.general.editorRow",{kind:J.editorKind()})),D(X0,V0),Q(X0,"flexDirection","row"),Q(X0,"gap",1),Q(X0,"paddingLeft",1),Q(X0,"paddingRight",1),Q(X0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(K()),J.editEditorCustom()}),Q(V0,"wrapMode","none"),U(V0,()=>F("settings.general.editorCustom",{cmd:J.editorCustomCommand().trim()||F("settings.general.editorCustomUnset")})),y((N)=>{var f0=Y.text,T0=o0.BOLD,O0=Y.textMuted,g0=Y.text,M0=o0.BOLD,W0=Y.textMuted,s0=Y.text,e0=o0.BOLD,Y1=Y.textMuted,Q1=L()?Y.primary:void 0,g1=L()?Y.selectedListItemText:z.transparentBackground?Y.accent:Y.textMuted,I0=o0.BOLD,c1=Y.text,s1=o0.BOLD,c=Y.textMuted,A0=Y.text,k1=o0.BOLD,l=Y.textMuted,k0=A()?Y.primary:void 0,J0=A()?Y.selectedListItemText:J.toastEnabled()?Y.accent:Y.textMuted,m0=o0.BOLD,P1=O()?Y.primary:void 0,X1=O()?Y.selectedListItemText:J.soundEnabled()?Y.accent:Y.textMuted,QJ=o0.BOLD,$J=Y.text,aJ=o0.BOLD,HJ=Y.textMuted,_z=R()?Y.primary:void 0,Qz=R()?Y.selectedListItemText:J.zenKeepsTasks()?Y.accent:Y.textMuted,i=o0.BOLD,a=Y.text,_=o0.BOLD,P=Y.textMuted,d0=x()?Y.primary:void 0,h0=x()?Y.selectedListItemText:J.settingsSurface()==="chattab"?Y.accent:Y.textMuted,C0=o0.BOLD,n0=w()?Y.primary:void 0,B1=w()?Y.selectedListItemText:J.settingsSurface()==="taskpanel"?Y.accent:Y.textMuted,F1=o0.BOLD,UJ=Y.text,Hz=o0.BOLD,MY=Y.textMuted,IW=S()?Y.primary:void 0,yW=S()?Y.selectedListItemText:Y.accent,TW=o0.BOLD,xW=g()?Y.primary:void 0,uW=g()?Y.selectedListItemText:J.editorKind()==="custom"?Y.text:Y.textMuted;return f0!==N.e&&(N.e=Q(T,"fg",f0,N.e)),T0!==N.t&&(N.t=Q(T,"attributes",T0,N.t)),O0!==N.a&&(N.a=Q($,"fg",O0,N.a)),g0!==N.o&&(N.o=Q(u,"fg",g0,N.o)),M0!==N.i&&(N.i=Q(u,"attributes",M0,N.i)),W0!==N.n&&(N.n=Q(z0,"fg",W0,N.n)),s0!==N.s&&(N.s=Q(o,"fg",s0,N.s)),e0!==N.h&&(N.h=Q(o,"attributes",e0,N.h)),Y1!==N.r&&(N.r=Q(K0,"fg",Y1,N.r)),Q1!==N.d&&(N.d=Q(N0,"backgroundColor",Q1,N.d)),g1!==N.l&&(N.l=Q(h,"fg",g1,N.l)),I0!==N.u&&(N.u=Q(h,"attributes",I0,N.u)),c1!==N.c&&(N.c=Q(v,"fg",c1,N.c)),s1!==N.w&&(N.w=Q(v,"attributes",s1,N.w)),c!==N.m&&(N.m=Q(k,"fg",c,N.m)),A0!==N.f&&(N.f=Q(I,"fg",A0,N.f)),k1!==N.y&&(N.y=Q(I,"attributes",k1,N.y)),l!==N.g&&(N.g=Q(n,"fg",l,N.g)),k0!==N.p&&(N.p=Q(q0,"backgroundColor",k0,N.p)),J0!==N.b&&(N.b=Q(H0,"fg",J0,N.b)),m0!==N.T&&(N.T=Q(H0,"attributes",m0,N.T)),P1!==N.A&&(N.A=Q(y0,"backgroundColor",P1,N.A)),X1!==N.O&&(N.O=Q(p0,"fg",X1,N.O)),QJ!==N.I&&(N.I=Q(p0,"attributes",QJ,N.I)),$J!==N.S&&(N.S=Q(m,"fg",$J,N.S)),aJ!==N.W&&(N.W=Q(m,"attributes",aJ,N.W)),HJ!==N.C&&(N.C=Q(L0,"fg",HJ,N.C)),_z!==N.B&&(N.B=Q(G0,"backgroundColor",_z,N.B)),Qz!==N.v&&(N.v=Q(F0,"fg",Qz,N.v)),i!==N.k&&(N.k=Q(F0,"attributes",i,N.k)),a!==N.x&&(N.x=Q(P0,"fg",a,N.x)),_!==N.j&&(N.j=Q(P0,"attributes",_,N.j)),P!==N.q&&(N.q=Q(v0,"fg",P,N.q)),d0!==N.z&&(N.z=Q(U1,"backgroundColor",d0,N.z)),h0!==N.P&&(N.P=Q(r,"fg",h0,N.P)),C0!==N.H&&(N.H=Q(r,"attributes",C0,N.H)),n0!==N.F&&(N.F=Q(b0,"backgroundColor",n0,N.F)),B1!==N.M&&(N.M=Q(i0,"fg",B1,N.M)),F1!==N.D&&(N.D=Q(i0,"attributes",F1,N.D)),UJ!==N.R&&(N.R=Q(j1,"fg",UJ,N.R)),Hz!==N.E&&(N.E=Q(j1,"attributes",Hz,N.E)),MY!==N.L&&(N.L=Q(R1,"fg",MY,N.L)),IW!==N.N&&(N.N=Q(G1,"backgroundColor",IW,N.N)),yW!==N.G&&(N.G=Q(Z0,"fg",yW,N.G)),TW!==N.U&&(N.U=Q(Z0,"attributes",TW,N.U)),xW!==N.K&&(N.K=Q(X0,"backgroundColor",xW,N.K)),uW!==N.V&&(N.V=Q(V0,"fg",uW,N.V)),N},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0,w:void 0,m:void 0,f:void 0,y:void 0,g:void 0,p:void 0,b:void 0,T:void 0,A:void 0,O:void 0,I:void 0,S:void 0,W:void 0,C:void 0,B:void 0,v:void 0,k:void 0,x:void 0,j:void 0,q:void 0,z:void 0,P:void 0,H:void 0,F:void 0,M:void 0,D:void 0,R:void 0,E:void 0,L:void 0,N:void 0,G:void 0,U:void 0,K:void 0,V:void 0}),M})()}function jM(J){let{theme:z}=w0(),Y=()=>J.vendors.length;return(()=>{var Z=W("box"),G=W("text"),X=W("text"),q=W("box"),H=W("box"),f=W("text");return D(Z,G),D(Z,X),D(Z,q),Q(Z,"flexDirection","column"),Q(Z,"gap",1),U(G,()=>F("settings.engines.title")),Q(X,"wrapMode","word"),U(X,()=>F("settings.engines.hint")),D(q,H),Q(q,"flexDirection","column"),Q(q,"gap",0),U(q,b(z1,{get each(){return J.vendors},children:(j,V)=>{let B=()=>J.level()==="body"&&J.bodyRow()===V();return(()=>{var K=W("box"),L=W("text"),A=W("text"),O=W("text");return D(K,L),D(K,A),D(K,O),Q(K,"flexDirection","row"),Q(K,"gap",1),Q(K,"paddingLeft",1),Q(K,"paddingRight",1),Q(K,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(V()),J.editEngine(j)}),Q(L,"wrapMode","none"),U(L,()=>J.isDefaultEngine(j)?"\u25CF":" "),Q(A,"wrapMode","none"),U(A,()=>J.displayName(j)),Q(O,"wrapMode","none"),U(O,()=>J.commandText(j),null),U(O,(()=>{var R=S0(()=>!!J.isDefault(j));return()=>R()?F("settings.engines.defaultTag"):S0(()=>!!J.isCustom(j))()?F("settings.engines.customTag"):""})(),null),y((R)=>{var x=B()?z.primary:void 0,w=B()?z.selectedListItemText:z.accent,S=o0.BOLD,g=B()?z.selectedListItemText:z.text,M=o0.BOLD,T=B()?z.selectedListItemText:J.isDefault(j)?z.textMuted:z.accent;return x!==R.e&&(R.e=Q(K,"backgroundColor",x,R.e)),w!==R.t&&(R.t=Q(L,"fg",w,R.t)),S!==R.a&&(R.a=Q(L,"attributes",S,R.a)),g!==R.o&&(R.o=Q(A,"fg",g,R.o)),M!==R.i&&(R.i=Q(A,"attributes",M,R.i)),T!==R.n&&(R.n=Q(O,"fg",T,R.n)),R},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),K})()}}),H),D(H,f),Q(H,"flexDirection","row"),Q(H,"paddingLeft",1),Q(H,"paddingRight",1),Q(H,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(Y()),J.onAddEngine()}),Q(f,"wrapMode","none"),U(f,()=>F("settings.engines.addEngine")),y((j)=>{var V=z.text,B=o0.BOLD,K=z.textMuted,L=J.level()==="body"&&J.bodyRow()===Y()?z.primary:void 0,A=J.level()==="body"&&J.bodyRow()===Y()?z.selectedListItemText:z.primary;return V!==j.e&&(j.e=Q(G,"fg",V,j.e)),B!==j.t&&(j.t=Q(G,"attributes",B,j.t)),K!==j.a&&(j.a=Q(X,"fg",K,j.a)),L!==j.o&&(j.o=Q(H,"backgroundColor",L,j.o)),A!==j.i&&(j.i=Q(f,"fg",A,j.i)),j},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),Z})()}function BM(J){let{theme:z}=w0(),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"),H=W("text"),f=W("box"),j=W("text"),V=W("box"),B=W("text");return D(Z,G),D(Z,X),D(Z,q),D(Z,f),D(Z,V),Q(Z,"flexDirection","column"),Q(Z,"gap",1),U(G,()=>F("settings.accounts.title")),Q(X,"wrapMode","word"),U(X,()=>F("settings.accounts.hint")),D(q,H),Q(q,"flexDirection","column"),Q(q,"gap",0),D(H,x0("claude-code")),U(q,b(Y0,{get when(){return J.claudeStatus()===null},get children(){var K=W("text");return U(K,()=>F("settings.accounts.checking")),y((L)=>Q(K,"fg",z.textMuted,L)),K}}),null),U(q,b(Y0,{get when(){return J.claudeStatus()},children:(K)=>(()=>{var L=W("box"),A=W("text");return D(L,A),Q(L,"flexDirection","column"),Q(L,"gap",0),Q(A,"wrapMode","word"),U(A,()=>Y(K())),U(L,()=>{let O=K().account;if(O.kind==="oauth"){let R=[O.organization,O.billingType].filter((x)=>!!x).join(" \xB7 ");return(()=>{var x=W("text");return Q(x,"wrapMode","word"),U(x,()=>F("settings.accounts.loggedIn",{email:O.email}),null),U(x,R?` (${R})`:"",null),y((w)=>Q(x,"fg",z.success,w)),x})()}return(()=>{var R=W("text");return U(R,()=>F("settings.accounts.notLoggedIn")),y((x)=>Q(R,"fg",z.textMuted,x)),R})()},null),U(L,b(Y0,{get when(){return K().accountError},children:(O)=>(()=>{var R=W("text");return Q(R,"wrapMode","word"),U(R,()=>`! ${O()}`),y((x)=>Q(R,"fg",z.warning,x)),R})()}),null),y((O)=>Q(A,"fg",K().binary.found?z.textMuted:z.warning,O)),L})()}),null),D(f,j),Q(f,"flexDirection","column"),Q(f,"gap",0),D(j,x0("codex")),U(f,b(Y0,{get when(){return J.codexStatus()===null},get children(){var K=W("text");return U(K,()=>F("settings.accounts.checking")),y((L)=>Q(K,"fg",z.textMuted,L)),K}}),null),U(f,b(Y0,{get when(){return J.codexStatus()},children:(K)=>(()=>{var L=W("box"),A=W("text");return D(L,A),Q(L,"flexDirection","column"),Q(L,"gap",0),Q(A,"wrapMode","word"),U(A,()=>Y(K())),U(L,()=>{let O=K().account;if(O.kind==="chatgpt")return(()=>{var R=W("text");return Q(R,"wrapMode","word"),U(R,()=>F("settings.accounts.chatgptLogin",{email:O.email}),null),U(R,(()=>{var x=S0(()=>!!O.plan);return()=>x()?` (${O.plan})`:""})(),null),y((x)=>Q(R,"fg",z.success,x)),R})();if(O.kind==="apikey")return(()=>{var R=W("text");return U(R,()=>F("settings.accounts.apiKeyConfigured")),y((x)=>Q(R,"fg",z.success,x)),R})();return(()=>{var R=W("text");return U(R,()=>F("settings.accounts.notLoggedIn")),y((x)=>Q(R,"fg",z.textMuted,x)),R})()},null),U(L,b(Y0,{get when(){return K().accountError},children:(O)=>(()=>{var R=W("text");return Q(R,"wrapMode","word"),U(R,()=>`! ${O()}`),y((x)=>Q(R,"fg",z.warning,x)),R})()}),null),y((O)=>Q(A,"fg",K().binary.found?z.textMuted:z.warning,O)),L})()}),null),D(V,B),Q(V,"flexDirection","column"),Q(V,"gap",0),D(B,x0("copilot")),U(V,b(Y0,{get when(){return J.copilotStatus()===null},get children(){var K=W("text");return U(K,()=>F("settings.accounts.checking")),y((L)=>Q(K,"fg",z.textMuted,L)),K}}),null),U(V,b(Y0,{get when(){return J.copilotStatus()},children:(K)=>(()=>{var L=W("box"),A=W("text");return D(L,A),Q(L,"flexDirection","column"),Q(L,"gap",0),Q(A,"wrapMode","word"),U(A,()=>Y(K())),U(L,()=>{let O=K().account;if(O.kind==="token")return(()=>{var R=W("text");return U(R,()=>F("settings.accounts.tokenConfigured",{source:O.source})),y((x)=>Q(R,"fg",z.success,x)),R})();if(O.kind==="oauth")return(()=>{var R=W("text");return U(R,()=>F("settings.accounts.copilotDetected")),y((x)=>Q(R,"fg",z.success,x)),R})();return(()=>{var R=W("text");return U(R,()=>F("settings.accounts.notLoggedIn")),y((x)=>Q(R,"fg",z.textMuted,x)),R})()},null),U(L,b(Y0,{get when(){return K().accountError},children:(O)=>(()=>{var R=W("text");return Q(R,"wrapMode","word"),U(R,()=>`! ${O()}`),y((x)=>Q(R,"fg",z.warning,x)),R})()}),null),y((O)=>Q(A,"fg",K().binary.found?z.textMuted:z.warning,O)),L})()}),null),y((K)=>{var L=z.text,A=o0.BOLD,O=z.textMuted,R=z.text,x=o0.BOLD,w=z.text,S=o0.BOLD,g=z.text,M=o0.BOLD;return L!==K.e&&(K.e=Q(G,"fg",L,K.e)),A!==K.t&&(K.t=Q(G,"attributes",A,K.t)),O!==K.a&&(K.a=Q(X,"fg",O,K.a)),R!==K.o&&(K.o=Q(H,"fg",R,K.o)),x!==K.i&&(K.i=Q(H,"attributes",x,K.i)),w!==K.n&&(K.n=Q(j,"fg",w,K.n)),S!==K.s&&(K.s=Q(j,"attributes",S,K.s)),g!==K.h&&(K.h=Q(B,"fg",g,K.h)),M!==K.r&&(K.r=Q(B,"attributes",M,K.r)),K},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0}),Z})()}function WM(J){let{theme:z}=w0(),Y=()=>J.level()==="body",Z=()=>Y()&&J.bodyRow()===0,G=()=>Y()&&J.bodyRow()===1,X=()=>Y()&&J.bodyRow()===2,q=(j)=>j?z.primary:z.textMuted,H=(j)=>j?o0.BOLD|o0.UNDERLINE:void 0,f;return _0(()=>{if(J.body()===""&&f&&f.plainText!=="")f.setText("")}),(()=>{var j=W("box"),V=W("text"),B=W("text"),K=W("box"),L=W("box"),A=W("text"),O=W("input"),R=W("box"),x=W("text"),w=W("textarea"),S=W("box"),g=W("text");return D(j,V),D(j,B),D(j,K),Q(j,"flexDirection","column"),Q(j,"gap",1),U(V,()=>F("settings.feedback.title")),Q(B,"wrapMode","word"),U(B,()=>F("settings.feedback.hint")),D(K,L),D(K,R),D(K,S),Q(K,"flexDirection","column"),Q(K,"gap",1),D(L,A),D(L,O),Q(L,"gap",0),U(A,()=>F("settings.feedback.titleLabel")),Q(O,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(0)}),Q(O,"onInput",(M)=>J.setTitle(OJ(M))),Q(O,"onSubmit",()=>J.onTitleSubmit()),D(R,x),D(R,w),Q(R,"gap",0),U(x,()=>F("settings.feedback.descriptionLabel")),Gz((M)=>{f=M},w),Q(w,"height",4),Q(w,"wrapMode","word"),Q(w,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(1)}),Q(w,"onContentChange",()=>J.setBody(f?.plainText??"")),D(S,g),Q(S,"flexDirection","row"),Q(S,"paddingLeft",1),Q(S,"paddingRight",1),Q(S,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(2),J.submit()}),U(g,()=>F("settings.feedback.send")),U(j,b(Y0,{get when(){return J.status()},get children(){var M=W("text");return Q(M,"wrapMode","word"),U(M,()=>J.status()),y((T)=>Q(M,"fg",J.status().startsWith("error:")?z.warning:z.success,T)),M}}),null),y((M)=>{var T=z.text,$=o0.BOLD,d=z.textMuted,e=q(Z()),u=H(Z()),z0=J.title(),Q0=F("settings.feedback.titlePlaceholder"),o=Z(),K0=q(G()),N0=H(G()),h=J.body(),s=F("settings.feedback.descriptionPlaceholder"),v=G(),k=X()?z.primary:z.backgroundElement,t=X()?z.selectedListItemText:z.accent,I=o0.BOLD;return T!==M.e&&(M.e=Q(V,"fg",T,M.e)),$!==M.t&&(M.t=Q(V,"attributes",$,M.t)),d!==M.a&&(M.a=Q(B,"fg",d,M.a)),e!==M.o&&(M.o=Q(A,"fg",e,M.o)),u!==M.i&&(M.i=Q(A,"attributes",u,M.i)),z0!==M.n&&(M.n=Q(O,"value",z0,M.n)),Q0!==M.s&&(M.s=Q(O,"placeholder",Q0,M.s)),o!==M.h&&(M.h=Q(O,"focused",o,M.h)),K0!==M.r&&(M.r=Q(x,"fg",K0,M.r)),N0!==M.d&&(M.d=Q(x,"attributes",N0,M.d)),h!==M.l&&(M.l=Q(w,"initialValue",h,M.l)),s!==M.u&&(M.u=Q(w,"placeholder",s,M.u)),v!==M.c&&(M.c=Q(w,"focused",v,M.c)),k!==M.w&&(M.w=Q(S,"backgroundColor",k,M.w)),t!==M.m&&(M.m=Q(g,"fg",t,M.m)),I!==M.f&&(M.f=Q(g,"attributes",I,M.f)),M},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0,w:void 0,m:void 0,f:void 0}),j})()}function VM(J){let{theme:z}=w0(),Y=()=>J.level()==="body"&&J.bodyRow()===0,Z=()=>J.level()==="body"&&J.bodyRow()===1,G=()=>JX(eG(J.hasDaemon),"remote-projects"),X=()=>J.level()==="body"&&J.bodyRow()===G(),q=()=>JX(eG(J.hasDaemon),"auto-status"),H=()=>J.level()==="body"&&J.bodyRow()===q(),f=()=>JX(eG(J.hasDaemon),"dispatcher"),j=()=>J.level()==="body"&&J.bodyRow()===f(),V=()=>JX(eG(J.hasDaemon),"archived-history"),B=()=>J.level()==="body"&&J.bodyRow()===V();return(()=>{var K=W("box"),L=W("text"),A=W("text"),O=W("box"),R=W("text"),x=W("text"),w=W("box"),S=W("text"),g=W("text"),M=W("box"),T=W("text"),$=W("text"),d=W("box"),e=W("text"),u=W("text"),z0=W("box"),Q0=W("text"),o=W("text"),K0=W("box"),N0=W("text");return D(K,L),D(K,A),D(K,O),D(K,x),D(K,w),Q(K,"flexDirection","column"),Q(K,"gap",1),U(L,()=>F("settings.dev.reset")),Q(A,"wrapMode","word"),U(A,()=>F("settings.dev.resetHint")),D(O,R),Q(O,"flexDirection","row"),Q(O,"paddingLeft",1),Q(O,"paddingRight",1),Q(O,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(0),J.confirmReset()}),U(R,()=>F("settings.dev.resetButton")),U(K,b(Y0,{get when(){return J.hasDaemon},get children(){var h=W("box"),s=W("text"),v=W("text"),k=W("box"),t=W("text");return D(h,s),D(h,v),D(h,k),Q(h,"flexDirection","column"),Q(h,"gap",0),Q(h,"paddingTop",1),U(s,()=>F("settings.dev.restart")),Q(v,"wrapMode","word"),U(v,()=>F("settings.dev.restartHint")),D(k,t),Q(k,"flexDirection","row"),Q(k,"paddingLeft",1),Q(k,"paddingRight",1),Q(k,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(1),J.confirmRestartDaemon()}),U(t,()=>F("settings.dev.restartButton")),y((I)=>{var n=z.text,q0=o0.BOLD,H0=z.textMuted,j0=Z()?z.primary:z.backgroundElement,y0=Z()?z.selectedListItemText:z.accent,p0=o0.BOLD;return n!==I.e&&(I.e=Q(s,"fg",n,I.e)),q0!==I.t&&(I.t=Q(s,"attributes",q0,I.t)),H0!==I.a&&(I.a=Q(v,"fg",H0,I.a)),j0!==I.o&&(I.o=Q(k,"backgroundColor",j0,I.o)),y0!==I.i&&(I.i=Q(t,"fg",y0,I.i)),p0!==I.n&&(I.n=Q(t,"attributes",p0,I.n)),I},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),h}}),x),Q(x,"wrapMode","word"),U(x,()=>F("settings.dev.doctorHint")),D(w,S),D(w,g),D(w,M),D(w,$),D(w,d),D(w,u),D(w,z0),D(w,o),D(w,K0),Q(w,"flexDirection","column"),Q(w,"gap",0),Q(w,"paddingTop",1),U(S,()=>F("settings.dev.experimental")),Q(g,"wrapMode","word"),U(g,()=>F("settings.dev.remoteHint")),D(M,T),Q(M,"flexDirection","row"),Q(M,"paddingLeft",1),Q(M,"paddingRight",1),Q(M,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(G()),J.toggleRemoteProjects()}),U(T,(()=>{var h=S0(()=>!!J.remoteProjectsEnabled());return()=>h()?F("settings.dev.remoteOn"):F("settings.dev.remoteOff")})()),Q($,"wrapMode","word"),U($,()=>F("settings.dev.autoStatusHint")),D(d,e),Q(d,"flexDirection","row"),Q(d,"paddingLeft",1),Q(d,"paddingRight",1),Q(d,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(q()),J.toggleAutoStatus()}),U(e,(()=>{var h=S0(()=>!!J.autoStatusEnabled());return()=>h()?F("settings.dev.autoStatusOn"):F("settings.dev.autoStatusOff")})()),Q(u,"wrapMode","word"),U(u,()=>F("settings.dev.dispatcherHint")),D(z0,Q0),Q(z0,"flexDirection","row"),Q(z0,"paddingLeft",1),Q(z0,"paddingRight",1),Q(z0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(f()),J.toggleDispatcher()}),U(Q0,(()=>{var h=S0(()=>!!J.dispatcherEnabled());return()=>h()?F("settings.dev.dispatcherOn"):F("settings.dev.dispatcherOff")})()),Q(o,"wrapMode","word"),U(o,()=>F("settings.dev.archivedHistoryHint")),D(K0,N0),Q(K0,"flexDirection","row"),Q(K0,"paddingLeft",1),Q(K0,"paddingRight",1),Q(K0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(V()),J.toggleArchivedHistory()}),U(N0,(()=>{var h=S0(()=>!!J.archivedHistoryEnabled());return()=>h()?F("settings.dev.archivedHistoryOn"):F("settings.dev.archivedHistoryOff")})()),y((h)=>{var s=z.text,v=o0.BOLD,k=z.textMuted,t=Y()?z.primary:z.backgroundElement,I=Y()?z.selectedListItemText:z.warning,n=o0.BOLD,q0=z.textMuted,H0=z.text,j0=o0.BOLD,y0=z.textMuted,p0=X()?z.primary:z.backgroundElement,E0=X()?z.selectedListItemText:z.text,R0=J.remoteProjectsEnabled()?o0.BOLD:void 0,m=z.textMuted,L0=H()?z.primary:z.backgroundElement,G0=H()?z.selectedListItemText:z.text,F0=J.autoStatusEnabled()?o0.BOLD:void 0,a0=z.textMuted,t0=j()?z.primary:z.backgroundElement,P0=j()?z.selectedListItemText:z.text,v0=J.dispatcherEnabled()?o0.BOLD:void 0,U1=z.textMuted,r=B()?z.primary:z.backgroundElement,D0=B()?z.selectedListItemText:z.text,b0=J.archivedHistoryEnabled()?o0.BOLD:void 0;return s!==h.e&&(h.e=Q(L,"fg",s,h.e)),v!==h.t&&(h.t=Q(L,"attributes",v,h.t)),k!==h.a&&(h.a=Q(A,"fg",k,h.a)),t!==h.o&&(h.o=Q(O,"backgroundColor",t,h.o)),I!==h.i&&(h.i=Q(R,"fg",I,h.i)),n!==h.n&&(h.n=Q(R,"attributes",n,h.n)),q0!==h.s&&(h.s=Q(x,"fg",q0,h.s)),H0!==h.h&&(h.h=Q(S,"fg",H0,h.h)),j0!==h.r&&(h.r=Q(S,"attributes",j0,h.r)),y0!==h.d&&(h.d=Q(g,"fg",y0,h.d)),p0!==h.l&&(h.l=Q(M,"backgroundColor",p0,h.l)),E0!==h.u&&(h.u=Q(T,"fg",E0,h.u)),R0!==h.c&&(h.c=Q(T,"attributes",R0,h.c)),m!==h.w&&(h.w=Q($,"fg",m,h.w)),L0!==h.m&&(h.m=Q(d,"backgroundColor",L0,h.m)),G0!==h.f&&(h.f=Q(e,"fg",G0,h.f)),F0!==h.y&&(h.y=Q(e,"attributes",F0,h.y)),a0!==h.g&&(h.g=Q(u,"fg",a0,h.g)),t0!==h.p&&(h.p=Q(z0,"backgroundColor",t0,h.p)),P0!==h.b&&(h.b=Q(Q0,"fg",P0,h.b)),v0!==h.T&&(h.T=Q(Q0,"attributes",v0,h.T)),U1!==h.A&&(h.A=Q(o,"fg",U1,h.A)),r!==h.O&&(h.O=Q(K0,"backgroundColor",r,h.O)),D0!==h.I&&(h.I=Q(N0,"fg",D0,h.I)),b0!==h.S&&(h.S=Q(N0,"attributes",b0,h.S)),h},{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}),K})()}function KM(){let{theme:J}=w0(),z=yF(),Y=Object.keys(Kj).sort();return(()=>{var Z=W("box"),G=W("text"),X=W("text"),q=W("box"),H=W("text"),f=W("text"),j=W("text"),V=W("text");return D(Z,G),D(Z,X),D(Z,q),D(Z,j),D(Z,V),Q(Z,"flexDirection","column"),Q(Z,"gap",1),U(G,()=>F("settings.keybindings.title")),Q(X,"wrapMode","word"),U(X,()=>F("settings.keybindings.hint")),D(q,H),D(q,f),Q(q,"flexDirection","column"),Q(q,"gap",0),U(H,()=>F("settings.keybindings.configFile")),Q(f,"wrapMode","word"),U(f,()=>z.path,null),U(f,(()=>{var B=S0(()=>!!z.exists);return()=>B()?"":F("settings.keybindings.notCreated")})(),null),U(Z,b(Y0,{get when(){return!z.exists},get children(){var B=W("box"),K=W("text"),L=W("text"),A=W("text"),O=W("text"),R=W("text"),x=W("text"),w=W("text"),S=W("text"),g=W("text"),M=W("text");return D(B,K),D(B,L),D(B,A),D(B,O),D(B,R),D(B,x),D(B,w),D(B,S),D(B,g),D(B,M),Q(B,"flexDirection","column"),Q(B,"gap",0),U(K,()=>F("settings.keybindings.example")),D(L,x0("bindings:")),D(A,x0(" chat.fork.new: ctrl+g # string = one chord")),D(O,x0(" sidebar.select: [enter] # list = several chords")),D(R,x0(" files.createPR: null # null = unbind")),D(x,x0(" tmux.tab.new: ctrl+y # tmux session key (see below)")),D(w,x0(" tmux.layout.workspaceSplit: g # prefix g")),D(S,x0("darwin: # platform overlay (also: linux)")),D(g,x0(" bindings:")),D(M,x0(" palette.open: [cmd+p, ctrl+p]")),y((T)=>{var $=J.text,d=o0.BOLD,e=J.textMuted,u=J.textMuted,z0=J.textMuted,Q0=J.textMuted,o=J.textMuted,K0=J.textMuted,N0=J.textMuted,h=J.textMuted,s=J.textMuted;return $!==T.e&&(T.e=Q(K,"fg",$,T.e)),d!==T.t&&(T.t=Q(K,"attributes",d,T.t)),e!==T.a&&(T.a=Q(L,"fg",e,T.a)),u!==T.o&&(T.o=Q(A,"fg",u,T.o)),z0!==T.i&&(T.i=Q(O,"fg",z0,T.i)),Q0!==T.n&&(T.n=Q(R,"fg",Q0,T.n)),o!==T.s&&(T.s=Q(x,"fg",o,T.s)),K0!==T.h&&(T.h=Q(w,"fg",K0,T.h)),N0!==T.r&&(T.r=Q(S,"fg",N0,T.r)),h!==T.d&&(T.d=Q(g,"fg",h,T.d)),s!==T.l&&(T.l=Q(M,"fg",s,T.l)),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}),B}}),j),U(Z,b(Y0,{get when(){return z.exists},get children(){var B=W("box"),K=W("text");return D(B,K),Q(B,"flexDirection","column"),Q(B,"gap",0),U(K,()=>F("settings.keybindings.overridesApplied")),U(B,b(Y0,{get when(){return z.applied.length===0},get children(){var L=W("text");return U(L,()=>F("settings.keybindings.none")),y((A)=>Q(L,"fg",J.textMuted,A)),L}}),null),U(B,b(z1,{get each(){return z.applied},children:(L)=>(()=>{var A=W("text");return Q(A,"wrapMode","word"),U(A,()=>`${L.id} \u2192 ${L.keys.length>0?L.keys.join(" / "):"(unbound)"} (default: ${L.defaultKeys.join(" / ")})`),y((O)=>Q(A,"fg",J.text,O)),A})()}),null),y((L)=>{var A=J.text,O=o0.BOLD;return A!==L.e&&(L.e=Q(K,"fg",A,L.e)),O!==L.t&&(L.t=Q(K,"attributes",O,L.t)),L},{e:void 0,t:void 0}),B}}),j),U(Z,b(Y0,{get when(){return z.warnings.length>0},get children(){var B=W("box"),K=W("text");return D(B,K),Q(B,"flexDirection","column"),Q(B,"gap",0),U(K,()=>F("settings.keybindings.warnings")),U(B,b(z1,{get each(){return z.warnings},children:(L)=>(()=>{var A=W("text");return Q(A,"wrapMode","word"),U(A,`! ${L}`),y((O)=>Q(A,"fg",J.warning,O)),A})()}),null),y((L)=>{var A=J.warning,O=o0.BOLD;return A!==L.e&&(L.e=Q(K,"fg",A,L.e)),O!==L.t&&(L.t=Q(K,"attributes",O,L.t)),L},{e:void 0,t:void 0}),B}}),j),D(j,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.")),Q(j,"wrapMode","word"),Q(V,"wrapMode","word"),U(V,()=>`Fixed (not rebindable): ${Y.join(", ")}.`),y((B)=>{var K=J.text,L=o0.BOLD,A=J.textMuted,O=J.text,R=o0.BOLD,x=J.textMuted,w=J.textMuted,S=J.textMuted;return K!==B.e&&(B.e=Q(G,"fg",K,B.e)),L!==B.t&&(B.t=Q(G,"attributes",L,B.t)),A!==B.a&&(B.a=Q(X,"fg",A,B.a)),O!==B.o&&(B.o=Q(H,"fg",O,B.o)),R!==B.i&&(B.i=Q(H,"attributes",R,B.i)),x!==B.n&&(B.n=Q(f,"fg",x,B.n)),w!==B.s&&(B.s=Q(j,"fg",w,B.s)),S!==B.h&&(B.h=Q(V,"fg",S,B.h)),B},{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 UM=C(()=>{E();E();E();E();E();E();E();E();E();W1();i9();E1();ZJ();_G();$Q();pG();QW()});import{TextAttributes as xx}from"@opentui/core";function ux(J){return J.split(/[-_]+/).filter((z)=>z.length>0).map((z)=>z.charAt(0).toUpperCase()+z.slice(1)).join(" ")}function nZ(J){let z=d1(),Y=w0(),Z=WJ(),{theme:G}=Y,[X,q]=p("sidebar"),[H,f]=p("general"),[j,V]=p(0),[B,K]=p(0),[L,A]=p(""),[O,R]=p(""),[x,w]=p(""),S=U0(()=>Y.all().slice().sort()),[,g]=p(Math.max(0,S().findIndex((c)=>c===Y.selected))),M=GM(J.orchestrator),[T,$]=p(null),[d,e]=p(null),[u,z0]=p(null),Q0=!1;_0(()=>{if(H()!=="accounts"||Q0)return;Q0=!0,YQ().then($),ZQ().then(e),GQ().then(z0)});function o(){return QM(H(),{themeNames:S(),focusAccentSlots:vZ,engineList:U1(),hasDaemon:M})}function K0(){return o().length}function N0(){return TZ(J.kv.get(fY,yZ))}function h(c){if(Y.selected===c)return;if(!Y.set(c))return;J.kv.set("activeTheme",c),J.onVisualPrefsChange?.()}function s(){return C9()}function v(c){if(C9()===c)return;Rq(c),J.kv.set(kf,c),J.onVisualPrefsChange?.()}function k(c){if(Y.transparentBackground===c)return;Y.setTransparentBackground(c),J.kv.set("transparentBackground",c),J.onVisualPrefsChange?.()}function t(){k(!Y.transparentBackground)}function I(c){if(Y.focusAccent===c)return;Y.setFocusAccent(c),J.kv.set("focusAccent",c),J.onVisualPrefsChange?.()}function n(c){J.kv.set(fY,c)}function q0(){return J.kv.get("notifications.toast.enabled",!0)!==!1}function H0(){return J.kv.get("notifications.sound.enabled",!0)!==!1}function j0(){J.kv.set("notifications.toast.enabled",!q0())}function y0(){J.kv.set("notifications.sound.enabled",!H0())}function p0(){return J.kv.get(qH,!0)!==!1}function E0(){J.kv.set(qH,!p0())}function R0(){return J.kv.get("experimental.remoteProjects",!1)===!0}function m(){J.kv.set("experimental.remoteProjects",!R0())}function L0(){return J.kv.get(UZ,!1)===!0}function G0(){J.kv.set(UZ,!L0())}function F0(){return J.kv.get(DZ,!1)===!0}function a0(){J.kv.set(DZ,!F0())}function t0(){return J.kv.get(yX,!1)===!0}function P0(){J.kv.set(yX,!t0())}function v0(){let c=J.kv.get("customEngineIds",[]);return Array.isArray(c)?c.filter((A0)=>typeof A0==="string"&&A0.trim().length>0):[]}function U1(){return[...$1,...v0()]}function r(c){let A0=J.kv.get(Mz(c),"");return typeof A0==="string"?A0.trim():""}function D0(c){return r(c)||IX(c).join(" ")}function b0(c){return fJ(c)&&r(c).length===0&&!f1(c)}function i0(c){let A0=J.kv.get(Oz(c),"");return typeof A0==="string"?A0.trim():""}function f1(c){return i0(c).length>0}function u0(c){return i0(c)||Bj[c]||c}let[j1,R1]=p(uJ(N1("lastSelectedVendor"),v0()));function G1(c){return j1()===c}function Z0(c){e1("lastSelectedVendor",c),J.kv.set("lastSelectedVendor",c),R1(c)}async function X0(c){let A0=await LY.show(z,D0(c),{dialogTitle:`${u0(c)} launch command`,fieldLabel:"command",submitLabel:"save",allowEmpty:!0});if(A0===void 0)return;J.kv.set(Mz(c),A0.trim())}async function V0(c){let A0=await LY.show(z,u0(c),{dialogTitle:`${u0(c)} display name (blank = default)`,fieldLabel:"name",submitLabel:"save",allowEmpty:!0});if(A0===void 0)return;J.kv.set(Oz(c),A0.trim())}function N(c){if(J.kv.set(Mz(c),""),J.kv.set(Oz(c),""),!fJ(c))J.kv.set("customEngineIds",v0().filter((A0)=>A0!==c)),K((A0)=>Math.max(0,Math.min(A0,U1().length)))}async function f0(){let c=await LY.show(z,"",{dialogTitle:"Add engine",fieldLabel:"id",submitLabel:"next",placeholder:"lowercase slug, e.g. aider"});if(c===void 0)return;let A0=c.trim().toLowerCase();if(!A0||fJ(A0)||v0().includes(A0))return;let k1=await LY.show(z,"",{dialogTitle:`Add engine \xB7 ${A0}`,fieldLabel:"command",submitLabel:"next",placeholder:"e.g. aider --model sonnet"});if(k1===void 0)return;let l=await LY.show(z,A0,{dialogTitle:`Add engine \xB7 ${A0}`,fieldLabel:"name",submitLabel:"add",allowEmpty:!0});if(J.kv.set("customEngineIds",[...v0(),A0]),k1.trim())J.kv.set(Mz(A0),k1.trim());let k0=l?.trim()??"";J.kv.set(Oz(A0),k0&&k0!==A0?k0:ux(A0))}function T0(){if(H()!=="engines"||X()!=="body")return null;let c=Ef(o(),B());return c?.kind==="engine"?c.vendor:null}function O0(){return bG(J.kv.get(HY,xH))}function g0(){let c=IZ.indexOf(O0()),A0=IZ[(c+1)%IZ.length];if(A0)J.kv.set(HY,A0)}function M0(){let c=J.kv.get(cY,"");return typeof c==="string"?c:""}async function W0(){let c=await LY.show(z,M0(),{dialogTitle:"Custom editor command (use {file} for the path)",fieldLabel:"command",submitLabel:"save",allowEmpty:!0});if(c===void 0)return;let A0=c.trim();if(J.kv.set(cY,A0),A0)J.kv.set(HY,"custom")}async function s0(){w("submitting...");try{let c=vG({title:L(),body:O()});w(`sent: ${c.url}`),A(""),R(""),K(0)}catch(c){w(`error: ${c instanceof Error?c.message:String(c)}`)}}let e0=()=>H()==="feedback"&&X()==="body";function Y1(c){let A0=B()+c;if(A0<0||A0>2){q("sidebar");return}K(A0)}function Q1(){if(X()!=="sidebar"||K0()===0)return;if(q("body"),K(0),H()==="general")g(0)}function g1(c){if(X()==="sidebar"){let l=(j()+c+dZ.length)%dZ.length;V(l);let k0=dZ[l];if(k0)f(k0.id),K(0);return}let A0=K0();if(A0===0)return;let k1=(B()+c+A0)%A0;if(K(k1),Ef(o(),k1)?.kind==="theme")g(k1)}function I0(c){f(c),V(dZ.findIndex((A0)=>A0.id===c)),K(0),q("sidebar")}let c1={theme:(c)=>h(c.name),language:(c)=>v(c.locale),transparent:()=>t(),focusAccent:(c)=>I(c.slot),toast:()=>j0(),sound:()=>y0(),zenKeepTasks:()=>E0(),surface:(c)=>n(c.surface),editorKind:()=>g0(),editorCustom:()=>void W0(),engine:(c)=>void X0(c.vendor),engineAdd:()=>void f0(),feedbackTitle:()=>K(0),feedbackBody:()=>K(1),feedbackSend:()=>void s0(),devReset:()=>void YW(z,J.kv,Z),devRestartDaemon:()=>void ZW(z,J.orchestrator,Z),devRemoteProjects:()=>m(),devAutoStatus:()=>G0(),devDispatcher:()=>a0(),devArchivedHistory:()=>P0()};function s1(){let c=Ef(o(),B());if(!c)return;c1[c.kind](c)}return K1(()=>({enabled:(!J.standalone||z.stack.length===0)&&!e0(),bindings:[{key:"down",cmd:()=>g1(1)},{key:"up",cmd:()=>g1(-1)},{key:"j",cmd:()=>g1(1)},{key:"k",cmd:()=>g1(-1)},{key:"tab",cmd:()=>g1(1)},{key:"right",cmd:Q1},{key:"l",cmd:Q1},{key:"left",cmd:()=>q("sidebar")},{key:"h",cmd:()=>q("sidebar")},{key:"return",cmd:()=>{if(X()==="sidebar"){Q1();return}s1()}},{key:"t",cmd:t},{key:"r",cmd:()=>{let c=T0();if(c)V0(c)}},{key:"x",cmd:()=>{let c=T0();if(c)N(c)}},{key:"d",cmd:()=>{let c=T0();if(c)Z0(c)}}]})),K1(()=>({enabled:e0(),bindings:[{key:"tab",cmd:()=>Y1(1)},{key:"shift+tab",cmd:()=>Y1(-1)}]})),K1(()=>({enabled:e0()&&B()===2,bindings:[{key:"return",cmd:()=>void s0()}]})),(()=>{var c=W("box"),A0=W("box"),k1=W("text"),l=W("text"),k0=W("box"),J0=W("box"),m0=W("box"),P1=W("text");return D(c,A0),D(c,k0),D(c,m0),Q(c,"paddingLeft",2),Q(c,"paddingRight",2),Q(c,"paddingBottom",1),Q(c,"gap",1),D(A0,k1),D(A0,l),Q(A0,"flexDirection","row"),Q(A0,"justifyContent","space-between"),U(k1,()=>F("settings.title")),Q(l,"onMouseUp",()=>J.onClose()),U(l,()=>F("settings.esc")),D(k0,J0),Q(k0,"flexDirection","row"),Q(k0,"gap",2),U(k0,b(HM,{level:X,cursor:j,switchSection:I0}),J0),Q(J0,"flexGrow",1),Q(J0,"flexShrink",1),Q(J0,"flexDirection","column"),Q(J0,"gap",1),U(J0,b(Y0,{get when(){return H()==="general"},get children(){return b(fM,{level:X,bodyRow:B,setLevel:q,setBodyRow:K,themeNames:S,setThemeCursor:g,selectTheme:h,currentLocale:s,selectLanguage:v,toggleTransparent:t,selectFocusAccent:I,toastEnabled:q0,soundEnabled:H0,toggleToast:j0,toggleSound:y0,zenKeepsTasks:p0,toggleZenKeepsTasks:E0,settingsSurface:N0,selectSurface:n,editorKind:O0,cycleEditorKind:g0,editorCustomCommand:M0,editEditorCustom:()=>void W0()})}}),null),U(J0,b(Y0,{get when(){return H()==="engines"},get children(){return b(jM,{level:X,bodyRow:B,setLevel:q,setBodyRow:K,get vendors(){return U1()},isCustom:(X1)=>!fJ(X1),displayName:u0,commandText:D0,isDefault:b0,isDefaultEngine:G1,editEngine:(X1)=>void X0(X1),renameEngine:(X1)=>void V0(X1),resetEngine:N,onAddEngine:()=>void f0()})}}),null),U(J0,b(Y0,{get when(){return H()==="accounts"},get children(){return b(BM,{claudeStatus:T,codexStatus:d,copilotStatus:u})}}),null),U(J0,b(Y0,{get when(){return H()==="keys"},get children(){return b(KM,{})}}),null),U(J0,b(Y0,{get when(){return H()==="feedback"},get children(){return b(WM,{level:X,bodyRow:B,setLevel:q,setBodyRow:K,title:L,setTitle:(X1)=>{A(X1),w("")},body:O,setBody:(X1)=>{R(X1),w("")},status:x,onTitleSubmit:()=>K(1),submit:()=>void s0()})}}),null),U(J0,b(Y0,{get when(){return H()==="dev"},get children(){return b(VM,{level:X,bodyRow:B,setLevel:q,setBodyRow:K,hasDaemon:M,confirmReset:()=>void YW(z,J.kv,Z),confirmRestartDaemon:()=>void ZW(z,J.orchestrator,Z),remoteProjectsEnabled:R0,toggleRemoteProjects:m,autoStatusEnabled:L0,toggleAutoStatus:G0,dispatcherEnabled:F0,toggleDispatcher:a0,archivedHistoryEnabled:t0,toggleArchivedHistory:P0})}}),null),D(m0,P1),Q(m0,"paddingTop",0),U(P1,(()=>{var X1=S0(()=>!!e0());return()=>X1()?F("settings.nav.feedback"):F("settings.nav.default")})()),y((X1)=>{var QJ=xx.BOLD,$J=G.text,aJ=G.textMuted,HJ=G.textMuted;return QJ!==X1.e&&(X1.e=Q(k1,"attributes",QJ,X1.e)),$J!==X1.t&&(X1.t=Q(k1,"fg",$J,X1.t)),aJ!==X1.a&&(X1.a=Q(l,"fg",aJ,X1.a)),HJ!==X1.o&&(X1.o=Q(P1,"fg",HJ,X1.o)),X1},{e:void 0,t:void 0,a:void 0,o:void 0}),c})()}var HW=C(()=>{E();E();E();E();E();E();E();E();W1();XZ();eJ();sH();dQ();SX();vQ();A1();Oj();a1();E1();ZJ();uH();gJ();a9();iJ();JW();qM();QW();UM();nZ.show=(J,z,Y)=>{let Z=!1;return new Promise((G)=>{J.replace(()=>b(nZ,{kv:z,orchestrator:Y,onVisualPrefsChange:()=>{Z=!0},onClose:()=>G({visualPrefsChanged:Z})}),()=>G({visualPrefsChanged:Z}))})}});import{TextAttributes as Ex}from"@opentui/core";function LM(){let{theme:J}=w0(),z=lz(),Y=Nf(),Z=()=>Y.toasts().slice(-DM),G=()=>Math.max(0,z().width-wx-Px),X=()=>Math.max(0,z().height-hx-DM-1);return b(Y0,{get when(){return Y.toasts().length>0},get children(){var q=W("box");return Q(q,"position","absolute"),Q(q,"zIndex",2500),Q(q,"width",40),Q(q,"flexDirection","column"),Q(q,"gap",0),U(q,b(z1,{get each(){return Z()},children:(H)=>{let f=()=>H.kind==="needs_input"?J.warning:H.kind==="error"?J.error:J.success,j=()=>J.selectedListItemText,V=()=>H.kind==="needs_input"?"?":H.kind==="error"?"\u2715":"\u2713";return(()=>{var B=W("box"),K=W("text"),L=W("text");return D(B,K),D(B,L),Q(B,"flexDirection","row"),Q(B,"gap",1),Q(B,"paddingLeft",1),Q(B,"paddingRight",1),Q(B,"onMouseUp",()=>Y.dismiss(H.id)),Q(K,"wrapMode","none"),U(K,V),Q(L,"wrapMode","none"),U(L,()=>H.title),y((A)=>{var O=f(),R=j(),x=Ex.BOLD,w=j();return O!==A.e&&(A.e=Q(B,"backgroundColor",O,A.e)),R!==A.t&&(A.t=Q(K,"fg",R,A.t)),x!==A.a&&(A.a=Q(K,"attributes",x,A.a)),w!==A.o&&(A.o=Q(L,"fg",w,A.o)),A},{e:void 0,t:void 0,a:void 0,o:void 0}),B})()}})),y((H)=>{var f=G(),j=X();return f!==H.e&&(H.e=Q(q,"left",f,H.e)),j!==H.t&&(H.t=Q(q,"top",j,H.t)),H},{e:void 0,t:void 0}),q}})}var DM=4,wx=40,Px=2,hx=2;var FM=C(()=>{E();E();E();E();E();E();E();W1();Cf();E1()});import{TextAttributes as vx}from"@opentui/core";function mx(J,z){let Y=J?`v${J}`:F("update.skew.olderBuild");return F("update.skew.hint",{daemon:Y,clientVersion:z})}function MM(J){let{theme:z}=w0(),Y=()=>Math.max(4,J.width()-2);return b(Y0,{get when(){return J.stale()},get children(){var Z=W("box"),G=W("text"),X=W("box"),q=W("text"),H=W("box"),f=W("text");return D(Z,G),D(Z,X),D(Z,H),Q(Z,"flexDirection","column"),Q(Z,"flexShrink",0),Q(Z,"paddingLeft",1),Q(Z,"paddingRight",1),Q(Z,"paddingBottom",1),Q(G,"wrapMode","none"),U(G,()=>"\u2594".repeat(Y())),D(X,q),Q(X,"flexDirection","row"),Q(X,"gap",1),Q(q,"wrapMode","none"),U(q,()=>F("update.skew.title")),D(H,f),Q(H,"flexDirection","row"),Q(H,"gap",1),Q(f,"wrapMode","word"),U(f,()=>mx(J.daemonVersion(),J.clientVersion)),y((j)=>{var{warning:V,warning:B}=z,K=vx.BOLD,L=z.text;return V!==j.e&&(j.e=Q(G,"fg",V,j.e)),B!==j.t&&(j.t=Q(q,"fg",B,j.t)),K!==j.a&&(j.a=Q(q,"attributes",K,j.a)),L!==j.o&&(j.o=Q(f,"fg",L,j.o)),j},{e:void 0,t:void 0,a:void 0,o:void 0}),Z}})}var OM=C(()=>{E();E();E();E();E();E();W1();E1();ZJ()});function AM(J,z){return J.find((Y)=>Y.id!==z&&!Y.archived)}async function cx(J){let z=J.tasks.find((X)=>X.id===J.taskId);if(!z)return null;let Y=!z.archived;try{await J.orch.setArchived(J.taskId,Y)}catch(X){return J.logger.error(`${J.logPrefix} archive failed:`,X),null}if(!Y)return{archived:Y};let Z=C1(J.taskId),G=AM(J.tasks,J.taskId);if(await cz(Z,G?C1(G.id):void 0).catch((X)=>{J.logger.error(`${J.logPrefix} switch-client failed:`,X)}),J.updateActiveTask)await J.orch.setActiveTask(G?.id??null).catch(()=>{});return await zz(Z).catch((X)=>{J.logger.error(`${J.logPrefix} kill tmux session failed:`,X)}),{archived:Y,nextTask:G}}async function dx(J){let z=AM(J.tasks,J.taskId),Y=C1(J.taskId);if(J.switchBeforeKill)await cz(Y,z?C1(z.id):void 0).catch((Z)=>{J.logger.error(`${J.logPrefix} switch-client failed:`,Z)});if(J.updateActiveTask)await J.orch?.setActiveTask(z?.id??null).catch(()=>{});return await zz(Y).catch((Z)=>{J.logger.error(`${J.logPrefix} kill tmux session failed:`,Z)}),{nextTask:z}}async function RM(J,z){if(!J.orch)return;let Y=J.tasks().find((G)=>G.id===z);if(!Y)return;if(!Y.archived){if(!await J.confirm({title:`Archive "${Y.title}"?`,body:"Moves it to Archives and stops its running session. The worktree, branch, and chat history stay \u2014 unarchive to bring it back.",cancelLabel:"cancel",confirmLabel:"archive"}))return}if(!await cx({orch:J.orch,tasks:J.tasks(),taskId:z,logger:J.logger,logPrefix:J.logPrefix,updateActiveTask:J.updateActiveTask}))return;await J.reload?.()}async function gM(J,z){if(!J.orch)return;let Y=J.tasks().find((q)=>q.id===z);if(!Y)return;if(Y.kind==="main"){if(!await J.confirm({title:`Remove project "${Y.title}"?`,body:"Forgets it from the projects list. The repo, its branches, worktrees, and any tasks under it stay on disk \u2014 re-add it with `kobe add`.",cancelLabel:"cancel",confirmLabel:"remove"}))return;try{await J.orch.forgetProject(Y.repo)}catch(H){J.logger.error(`${J.logPrefix} forget project failed:`,H),J.notifyError?.(`Couldn't remove: ${H instanceof Error?H.message:String(H)}`);return}await J.reload?.();return}if(!await J.confirm({title:`Delete "${Y.title}"?`,body:"Removes the task entry and its worktree. The tmux session (if any) is killed.",cancelLabel:"cancel",confirmLabel:"delete"}))return;let G=!1;try{await J.orch.deleteTask(z),G=!0}catch(q){if((q instanceof Error?q.message:String(q)).includes(Zj)){if(await J.confirm({title:`"${Y.title}" has uncommitted changes`,body:"Its worktree has uncommitted or untracked work that will be permanently deleted. Force delete anyway?",cancelLabel:"cancel",confirmLabel:"force delete"}))try{await J.orch.deleteTask(z,{force:!0}),G=!0}catch(j){J.logger.error(`${J.logPrefix} force delete failed:`,j),J.notifyError?.(`Couldn't delete: ${j instanceof Error?j.message:String(j)}`)}}else J.logger.error(`${J.logPrefix} delete failed:`,q),J.notifyError?.(`Couldn't delete: ${q instanceof Error?q.message:String(q)}`)}if(!G)return;let{nextTask:X}=await dx({orch:J.orch,tasks:J.tasks(),taskId:z,logger:J.logger,logPrefix:J.logPrefix,switchBeforeKill:J.switchBeforeKill,updateActiveTask:J.updateActiveTask});await J.reload?.(),J.onTaskDeleted?.(z,X)}async function NM(J,z){let Y=J.tasks().find((G)=>G.id===z);if(!Y)return;let Z=await J.promptText(Y.title);if(!Z||!J.orch)return;try{await J.orch.setTitle(z,Z)}catch(G){J.logger.error(`${J.logPrefix} task.rename failed:`,G),J.notifyError?.(`Couldn't rename task: ${G instanceof Error?G.message:String(G)}`);return}await J.reload?.()}async function CM(J,z){let Y=J.tasks().find((G)=>G.id===z);if(!Y||Y.kind==="main")return;let Z=await J.promptText(Y.branch,{dialogTitle:"Rename branch",fieldLabel:"branch"});if(!Z||!J.orch)return;try{await J.orch.setBranch(z,Z)}catch(G){J.logger.error(`${J.logPrefix} task.setBranch failed:`,G),J.notifyError?.(`Couldn't rename branch: ${G instanceof Error?G.message:String(G)}`);return}await J.reload?.()}async function kM(J,z){let Y=J.tasks().find((X)=>X.id===z);if(!Y||!J.orch)return;let Z=await zY(),G=OY(Z,Y.vendor??p1);try{await J.orch.setVendor(z,G)}catch(X){J.logger.error(`${J.logPrefix} task.setVendor failed:`,X),J.notifyError?.(`Couldn't switch engine: ${X instanceof Error?X.message:String(X)}`);return}J.notifyInfo?.(`Engine \u2192 ${LZ(G)} (applies on reopen)`),await J.reload?.()}async function bM(J){let z=CJ(),Y=J.cursorRepo()??z[0]??process.cwd();if(J.openCreateSurface&&await J.openCreateSurface(Y))return;let Z=J.lastVendor()??p1,G=await zY();if(G.length===0)J.notifyInfo?.("No engine CLI detected \u2014 install claude or codex, or add one in Settings \u2192 Engines");let X=J.orch,q=await J.promptNewTask(Y,z,{defaultVendor:Z,availableVendors:G,discoverAdoptable:X?(f)=>X.discoverAdoptableWorktrees(f):void 0});if(!q)return;if(J.rememberVendor(q.vendor),oz(q.repo),J.onRepoSaved?.(),!X){J.logger.error(`${J.logPrefix} no daemon; cannot create task`);return}J.notifyInfo?.("Creating task\u2026");let H;if(q.mode==="adopt"){let f=q.adopt.length,j=0,V;for(let B of q.adopt)try{H=(await X.adoptWorktree({repo:q.repo,worktreePath:B.worktreePath,branch:B.branch,vendor:q.vendor})).id,j++}catch(K){if(V===void 0)V=K instanceof Error?K.message:String(K);J.logger.error(`${J.logPrefix} adoptWorktree failed for ${B.worktreePath}:`,K)}if(j===0){J.notifyError?.(F("newTask.adopt.summaryNone",{error:V??""}));return}if(j<f)J.notifyInfo?.(F("newTask.adopt.summaryPartial",{done:j,total:f}));else J.notifyInfo?.(F("newTask.adopt.summaryAll",{count:j}))}else try{H=(await X.createTask({repo:q.repo,baseRef:q.baseRef,vendor:q.vendor})).id}catch(f){J.logger.error(`${J.logPrefix} task.create failed:`,f),J.notifyError?.(`Couldn't create task: ${f instanceof Error?f.message:String(f)}`);return}if(await J.reload?.(),H)J.selectTask?.(H),await J.enterTask?.(H)}var SM=C(()=>{XZ();eJ();qj();A1();ZJ();tJ();a1();zJ()});function zX(J,z){if(z<=0)return"";let Y=[...J];if(Y.length<=z)return J;return`${Y.slice(0,Math.max(0,z-1)).join("")}\u2026`}function wf(J,z){if(z<=0)return"";let Y=[...J];if(Y.length<=z)return J;return`\u2026${Y.slice(Y.length-Math.max(0,z-1)).join("")}`}import{spawn as nx}from"child_process";import{existsSync as ix}from"fs";import{basename as lx,delimiter as $x,isAbsolute as ax,join as _x}from"path";function fW(J,z,Y){if(ax(J))return Y(J);let Z=z.PATH??"";for(let G of Z.split($x)){if(!G)continue;if(Y(_x(G,J)))return!0}return!1}function ox(J){let z=lx(J);if(z==="code")return"VS Code";if(z==="cursor")return"Cursor";if(z==="windsurf")return"Windsurf";if(z==="zed")return"Zed";return z||J}function IM(J={}){let z=J.env??process.env,Y=J.platform??process.platform,Z=J.exists??ix,G=z.KOBE_OPEN_EDITOR?.trim();if(G)return{id:"env",label:ox(G),command:G,args:[]};for(let X of px)if(fW(X.command,z,Z))return{id:X.id,label:X.label,command:X.command,args:[]};if(Y==="darwin"&&fW("open",z,Z)){for(let X of rx)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"&&fW("xdg-open",z,Z))return{id:"xdg-open",label:"Open",command:"xdg-open",args:[]};return null}function sx(J,z){return[z.command,[...z.args,J]]}function yM(J,z,Y={}){if(!J)return!1;let Z=Y.spawn??nx,[G,X]=sx(J,z);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 px,rx;var TM=C(()=>{px=[{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"}],rx=[{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 Pf(J){let z=new Map;function Y(Z){let G=z.get(Z);if(!G){let[X,q]=p(J.initial,J.equals?{equals:J.equals}:void 0);G={read:X,write:(H)=>q(()=>H),inFlight:!1,nextAllowedAt:0},z.set(Z,G)}return G}return{read(Z){if(!Z)return J.initial;return Y(Z).read()},poll(Z){if(!Z)return;let G=Y(Z);ZG(G,J,(X)=>J.run(Z,X),(X)=>G.write(X))},reset(){z.clear()}}}var yq=C(()=>{W1();GG();GG()});import{stat as tx}from"fs/promises";import{join as ex}from"path";async function Zu(J){try{let z=await tx(ex(J,".git","HEAD"));return`${z.mtimeMs}:${z.size}`}catch{return null}}async function Gu(J,z,Y=GY){let Z=await Zu(J);if(Z!==null){let H=xM.get(J);if(H&&H.fingerprint===Z)return H.value}let G="",X=await Y("git",["symbolic-ref","--short","HEAD"],{cwd:J,env:dJ(),signal:z}),q=X.status===0?X.stdout.trim():"";if(q&&q!=="HEAD")G=q;else if((await Y("git",["rev-parse","--verify","HEAD"],{cwd:J,env:dJ(),signal:z})).status===0)G="(detached)";if(Z!==null)xM.set(J,{fingerprint:Z,value:G});return G}function EM(J){return uM.read(J)}function wM(J){uM.poll(J)}var Ju=2000,zu=30000,Yu=1500,xM,uM;var PM=C(()=>{dY();yq();xM=new Map;uM=Pf({initial:"",timeoutMs:Ju,slowRetryMs:zu,minIntervalMs:Yu,run:(J,z)=>Gu(J,z)})});function jW(J){let z=J.scheduleTimeout??((f,j)=>{let V=setTimeout(f,j);return()=>clearTimeout(V)}),Y=!1,Z=null,G=()=>{Y=!0,Z?.(),Z=z(()=>{Y=!1,Z=null},700)},X=()=>{Y=!1,Z?.(),Z=null},q=(f)=>{let j=J.getFlatIds();if(j.length===0)return;let V=J.getCursor(),B=V<0?0:V,K=Math.min(j.length-1,Math.max(0,B+f));J.setCursor(K)},H=(f)=>{let j=J.getFlatIds();if(j.length===0)return;J.setCursor(Math.min(j.length-1,Math.max(0,f)))};return{moveDown(){X(),q(1)},moveUp(){X(),q(-1)},selectCurrent(){X();let f=J.getFlatIds(),j=J.getCursor();if(j<0||j>=f.length)return;let V=f[j];if(V!==void 0)J.onSelect(V)},pressG(){if(Y)X(),H(0);else G()},pressShiftG(){X(),H(J.getFlatIds().length-1)},isChordArmed(){return Y},disarmChord(){X()}}}function hM(J){let z=jW({getCursor:()=>J.cursorIndex(),setCursor:(X)=>J.setCursorIndex(X),getFlatIds:()=>J.flatTaskIds(),onSelect:(X)=>J.onSelect(X)}),Y=()=>{let X=J.flatTaskIds(),q=J.cursorIndex();if(q<0||q>=X.length)return;return X[q]},Z=()=>J.searchMode?.()??!1,G=()=>J.moveMode?.()??!1;K1(()=>({enabled:J.focused()&&!Z(),bindings:rY({"sidebar.nav":(X,q)=>{let H=(q??0)%2===0;if(G()){let f=Y();if(f===void 0)return;J.onMoveRequest?.(f,H?1:-1);return}if(H)z.moveDown();else z.moveUp()},"sidebar.select":()=>{if(G()){J.onMoveModeExit?.();return}z.selectCurrent()},"sidebar.goto":(X)=>{if(G())return;if(X.shift)z.pressShiftG();else z.pressG()},"sidebar.delete":()=>{if(G())return;let X=Y();if(X!==void 0)J.onDeleteRequest?.(X)},"sidebar.archive":()=>{if(G())return;let X=Y();if(X!==void 0)J.onArchiveRequest?.(X)},"sidebar.localMerge":(X)=>{if(!X.shift)return;let q=Y();if(q!==void 0)J.onLocalMergeRequest?.(q)},"sidebar.rename":()=>{if(G())return;let X=Y();if(X!==void 0)J.onRenameRequest?.(X)},"sidebar.pin":(X)=>{if(G())return;if(!X.shift)return;let q=Y();if(q!==void 0)J.onPinRequest?.(q)},"sidebar.search.enter":()=>{if(G())return;J.onSearchEnter?.()},"sidebar.sort":()=>{if(G())return;J.onSortModeToggle?.()},"sidebar.projectFilter":()=>{if(G())return;J.onProjectFilterToggle?.()}})})),K1(()=>({enabled:J.focused()&&G(),bindings:[{key:"escape",cmd:()=>J.onMoveModeExit?.()}]})),K1(()=>({enabled:J.focused(),bindings:rY({"sidebar.view":(X,q)=>{J.onViewSwitch?.((q??0)%2===0?-1:1)}})})),K1(()=>({enabled:J.focused()&&Z(),bindings:rY({"sidebar.search.nav":(X,q)=>{if((q??0)%2===0)z.moveDown();else z.moveUp()},"sidebar.search.submit":()=>{z.selectCurrent(),J.onSearchExit?.(!0)},"sidebar.search.cancel":()=>J.onSearchExit?.(!1)})}))}var vM=C(()=>{rG();gJ()});function BW(J,z){return zX(J,z)}function WW(J,z){return` ${BW(J,Math.max(0,z))}`}var mM=()=>{};function qu(J){switch(J){case"done":return F("tasks.status.done");case"in_review":return F("tasks.status.inReview");case"in_progress":return F("tasks.status.working");case"backlog":return F("tasks.status.backlog");case"canceled":return F("tasks.status.canceled");case"error":return F("tasks.status.error")}}function Qu(J){switch(J){case"rate_limited":return{text:F("tasks.activity.rateLimited"),tone:"warning"};case"permission_needed":return{text:F("tasks.activity.permissionNeeded"),tone:"warning"};case"error":return{text:F("tasks.activity.error"),tone:"error"};default:return null}}function nM(J){switch(J.prStatus?.checkState){case"passing":return{glyph:"\u2713",tone:"success"};case"failing":return{glyph:"\u2717",tone:"error"};case"pending":return{glyph:"\u2022",tone:"warning"};default:return null}}function Hu(){return F("tasks.subtitle.noTracking")}function fu(){return F("tasks.subtitle.materializing")}function ju(J){if(J.kind==="main")return!1;return J.vendor!==void 0&&!fJ(J.vendor)}function VW(J){let{task:z}=J,Y=z.kind==="main",Z=Y?J.mainBranch??"":z.branch,G=Xu[z.status],X=J.activity?.state,q=X!==void 0,H=Bu(X),f=Qu(X),j=ju(z)&&!q,V=J.job!==void 0,B=V||!j&&(X==="running"||J.live||!q&&!Y&&z.status==="in_progress"),K=YX[J.spinnerFrame]??YX[0],L=V?"primary":j?"textMuted":f?.tone??(B?"primary":H?.tone??G.tone),A=j?Hu():qu(z.status),O=V?J.truncateBranch(fu(),J.subtitleBudget):f?J.truncateBranch(f.text,J.subtitleBudget):Z.length>0?J.truncateBranch(Z,J.subtitleBudget):J.truncateBranch(A,J.subtitleBudget),R=j?cM:H?.glyph??G.glyph,x=j?cM:H?.glyph??"\u2605";return{isMain:Y,titleText:Y?yz(z.repo):z.title,subtitleText:O,loading:B,stateGlyph:B?K:R,projectGlyph:B?K:x,tone:L}}function KW(J,z){if(!J.loading)return J;let Y=YX[z()%YX.length]??"\u280B";if(Y===J.stateGlyph&&Y===J.projectGlyph)return J;return{...J,stateGlyph:Y,projectGlyph:Y}}function Bu(J){switch(J){case"rate_limited":return{glyph:"\u25F7",tone:"warning"};case"permission_needed":return{glyph:"?",tone:"warning"};case"error":return{glyph:"\u2715",tone:"error"};case"turn_complete":return{glyph:"\u2713",tone:"primary"};default:return null}}var Xu,YX,dM=100,cM="\xB7";var iM=C(()=>{ZJ();a1();Tf();Xu={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"}};YX=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"]});function UW(J){return lM.read(J)}function DW(J){lM.poll(J)}var Wu=4000,Vu=60000,Ku=1500,Uu,lM;var $M=C(()=>{dY();yq();xG();yq();Uu={added:0,deleted:0},lM=Pf({initial:Uu,equals:iz,timeoutMs:Wu,slowRetryMs:Vu,minIntervalMs:Ku,run:async(J,z)=>{let Y=await GY("git",["status","--porcelain=v1"],{cwd:J,env:dJ(),signal:z});if(Y.status!==0)throw Error("git status failed");return TG(Y.stdout)}})});import{TextAttributes as w1}from"@opentui/core";function Du(J){switch(J){case"active":return F("tasks.view.workspace");case"archived":return F("tasks.view.archives")}}function _M(J,z=Fu){return zX(J,z)}function Mu(J){let z=0;for(let Y of J)z+=(Y.codePointAt(0)??0)>=4352?2:1;return z}function pM(J){let{theme:z}=w0(),Y=()=>J.focused?J.focused():!0,[Z,G]=p("active"),[X,q]=p(!1),[H,f]=p(""),[j,V]=p(null),B=()=>J.projectFilter?.()??j(),K=(r)=>{if(J.onProjectFilterChange)J.onProjectFilterChange(r);else V(r)};function L(){f(""),q(!0),J.onSearchActiveChange?.(!0)}function A(r){q(!1),f(""),J.onSearchActiveChange?.(!1)}_0(()=>{if(!X())return;let r=WJ();if(!r)return;let D0=(b0)=>{if(b0.defaultPrevented)return;if(!Y())return;if(b0.ctrl||b0.meta||b0.option)return;if(b0.name==="backspace"){f((u0)=>u0.slice(0,-1));return}let i0=b0.sequence;if(!i0||i0.length!==1)return;let f1=i0.charCodeAt(0);if(f1<32||f1===127)return;f((u0)=>u0+i0)};r.keyInput.on("keypress",D0),S1(()=>r.keyInput.off("keypress",D0))});let[O,R]=p(0),x=setInterval(()=>R((r)=>r+1),Lu);S1(()=>clearInterval(x));let[w,S]=p(0),g=setInterval(()=>S((r)=>(r+1)%YX.length),dM);S1(()=>clearInterval(g));let M=()=>J.sortMode?.()??"default",T=U0(()=>pF(J.tasks(),Z())),$=U0(()=>{let r=B();if(!r)return null;let D0=qz(r);return T().find((b0)=>qz(b0.repo)===D0)??null}),d=U0(()=>$()?.repo??null),e=U0(()=>$()?.label??"all"),u=U0(()=>{let r=$();return r?r.count:T().reduce((D0,b0)=>D0+b0.count,0)}),z0=U0(()=>{let r=u();return`${r} ${r===1?F("tasks.project.taskSingular"):F("tasks.project.taskPlural")}`}),Q0=U0((r)=>tF(r,o9(J.tasks(),Z(),X()?H():"",M(),d())),[]),o=U0(()=>s9(Q0())),K0=U0(()=>sF(Q0())),N0=U0(()=>K0().projectRows),h=U0(()=>K0().taskRows),s=U0(()=>{let r=new Map;for(let D0 of Q0())r.set(D0.flatIndex,D0);return r}),v=U0(()=>s9(o9(J.tasks(),Z(),"",M(),d())).length),k=U0(()=>h().length>0);_0(()=>{let r=B(),D0=T();if(r!==null&&D0.length>0&&(D0.length<=1||$()===null))K(null)});function t(){let r=T();if(r.length<=1){K(null);return}let D0=d(),b0=D0?qz(D0):null,i0=b0===null?-1:r.findIndex((u0)=>qz(u0.repo)===b0),f1=r[i0+1];K(f1?.repo??null)}let I=()=>J.width?J.width():aM,n=U0(()=>Math.max(6,I()-9)),q0=U0(()=>Math.max(6,I()-16)),H0=lz(),j0=U0(()=>{let r=Math.max(2,Math.min(10,Math.floor(H0().height*0.25))),D0=Math.max(2,N0().length*2);return Math.min(r,D0)}),[y0,p0]=p(null),[E0,R0]=p(-1),m,L0,G0,F0=new Map;_0(()=>{let r=J.width?J.width():aM,D0=G0;if(!D0)return;D0.width=r,D0.flexShrink=1,D0.minHeight=0}),_0(BJ([E0,Q0],([r])=>{let D0=s().get(r);if(!D0)return;let b0=D0.task.kind==="main"?m:L0;if(!b0)return;if(b0.viewport.height<=0)return;let i0=F0.get(r);if(!i0)return;b0.scrollChildIntoView(i0.id)})),_0(BJ(()=>[J.selectedId(),o()],([r,D0])=>{let b0=o1(E0),i0=oF(r,D0,b0);if(i0!==b0)R0(i0)})),_0(BJ(Z,()=>{let r=o();R0(r.length>0?0:-1)},{defer:!0})),_0(BJ(d,(r)=>R0(rF(Q0(),r)),{defer:!0})),_0(BJ([X,H],()=>{if(!X())return;let r=o();R0(r.length>0?0:-1)}));function a0(r){let D0=Z(),b0=Tq.findIndex((u0)=>u0.view===D0);if(b0<0)return;let i0=(b0+r+Tq.length)%Tq.length,f1=Tq[i0];if(f1)G(f1.view)}let t0=(r)=>{if(J.onActivate?.(r),!J.pinnedSelection)return;let D0=J.selectedId();if(!D0||r===D0)return;let b0=o().indexOf(D0);if(b0>=0)R0(b0)};hM({focused:Y,cursorIndex:E0,setCursorIndex:R0,flatTaskIds:o,onSelect:(r)=>{J.onSelect(r),t0(r)},onDeleteRequest:(r)=>J.onDeleteRequest?.(r),onArchiveRequest:(r)=>J.onArchiveRequest?.(r),onLocalMergeRequest:(r)=>J.onLocalMergeRequest?.(r),moveMode:J.moveMode,onMoveRequest:(r,D0)=>J.onMoveRequest?.(r,D0),onMoveModeExit:()=>J.onMoveModeExit?.(),onRenameRequest:(r)=>J.onRenameRequest?.(r),onPinRequest:(r)=>J.onPinRequest?.(r),onViewSwitch:(r)=>a0(r),onSortModeToggle:()=>J.onSortModeToggle?.(),onProjectFilterToggle:()=>t(),searchMode:X,onSearchEnter:()=>L(),onSearchExit:(r)=>A(r)});let P0=(r)=>(()=>{var D0=W("box"),b0=W("box"),i0=W("text"),f1=W("text");return D(D0,b0),Q(D0,"flexDirection","column"),Q(D0,"flexShrink",0),U(D0,b(Y0,{get when(){return r.topPad},get children(){var u0=W("box"),j1=W("text");return D(u0,j1),Q(u0,"flexShrink",0),D(j1,x0(" ")),Q(j1,"wrapMode","none"),u0}}),b0),D(b0,i0),D(b0,f1),Q(b0,"flexDirection","row"),Q(b0,"flexShrink",0),Q(b0,"gap",1),Q(b0,"paddingLeft",1),Q(b0,"paddingRight",1),Q(i0,"wrapMode","none"),U(i0,()=>r.label),Q(f1,"wrapMode","none"),U(f1,()=>"\u2500".repeat(Math.max(2,I()-10-r.label.length-(r.suffix?.length??0)))),U(b0,b(Y0,{get when(){return r.suffix},get children(){var u0=W("text");return Q(u0,"wrapMode","none"),U(u0,()=>r.suffix),y((j1)=>{var R1=z.info,G1=w1.BOLD;return R1!==j1.e&&(j1.e=Q(u0,"fg",R1,j1.e)),G1!==j1.t&&(j1.t=Q(u0,"attributes",G1,j1.t)),j1},{e:void 0,t:void 0}),u0}}),null),y((u0)=>{var j1=z.textMuted,R1=w1.BOLD,G1=z.border;return j1!==u0.e&&(u0.e=Q(i0,"fg",j1,u0.e)),R1!==u0.t&&(u0.t=Q(i0,"attributes",R1,u0.t)),G1!==u0.a&&(u0.a=Q(f1,"fg",G1,u0.a)),u0},{e:void 0,t:void 0,a:void 0}),D0})(),v0=(r)=>{switch(r){case"success":return z.success;case"warning":return z.warning;case"primary":return z.primary;case"error":return z.error;default:return z.textMuted}},U1=(r)=>{let D0=r.row.task,b0=r.row.flatIndex,i0=()=>b0===E0(),f1=()=>D0.id===J.selectedId(),u0=U0(()=>{let f0=J.chatRunState?.();if(!f0)return!1;let T0=`${D0.id}:`;for(let[O0,g0]of f0)if(g0==="running"&&O0.startsWith(T0))return!0;return!1}),j1=U0(()=>{let f0=nH(J.worktreeChanges?.(),D0.worktreePath);if(f0)return f0;if(O(),!D0.archived)DW(D0.worktreePath);return UW(D0.worktreePath)},void 0,{equals:iz}),R1=U0(()=>{return O(),wM(D0.repo),EM(D0.repo)}),G1=U0(()=>VW({task:D0,activity:J.engineState?.().get(D0.id),job:J.taskJobs?.().get(D0.id),live:u0(),spinnerFrame:0,subtitleBudget:q0(),truncateBranch:_M,mainBranch:R1()})),Z0=U0(()=>KW(G1(),w)),X0=()=>!Z0().loading?z.primary:v0(Z0().tone),V0=()=>i0()?z.focusAccent:f1()?z.primary:void 0,N=()=>i0()||f1()?"\u258C":" ";return(()=>{var f0=W("box"),T0=W("box"),O0=W("box"),g0=W("text"),M0=W("box"),W0=W("text"),s0=W("text"),e0=W("box"),Y1=W("text"),Q1=W("box"),g1=W("text");return D(f0,T0),Q(f0,"flexDirection","column"),Q(f0,"gap",0),Q(f0,"paddingBottom",0),D(T0,O0),D(T0,e0),Gz((I0)=>{F0.set(b0,I0),S1(()=>{if(F0.get(b0)===I0)F0.delete(b0)})},T0),Q(T0,"flexDirection","column"),Q(T0,"gap",0),Q(T0,"onMouseUp",()=>{if(R0(b0),J.onSelect(D0.id),J.activateOnClick)t0(D0.id)}),Q(T0,"onMouseOver",(I0)=>p0({task:D0,x:I0.x,y:I0.y})),Q(T0,"onMouseOut",()=>p0((I0)=>I0?.task.id===D0.id?null:I0)),D(O0,g0),D(O0,M0),Q(O0,"flexDirection","row"),Q(O0,"gap",0),Q(g0,"wrapMode","none"),U(g0,N),D(M0,W0),D(M0,s0),Q(M0,"flexDirection","row"),Q(M0,"flexGrow",1),Q(M0,"paddingRight",1),Q(M0,"gap",0),Q(W0,"wrapMode","none"),U(W0,()=>Z0().projectGlyph),Q(s0,"wrapMode","none"),Q(s0,"flexGrow",1),U(s0,()=>WW(Z0().titleText,n())),D(e0,Y1),D(e0,Q1),Q(e0,"flexDirection","row"),Q(e0,"gap",0),Q(Y1,"wrapMode","none"),U(Y1,N),D(Q1,g1),Q(Q1,"flexDirection","row"),Q(Q1,"flexGrow",1),Q(Q1,"paddingLeft",2),Q(Q1,"paddingRight",1),Q(Q1,"gap",1),Q(g1,"wrapMode","none"),Q(g1,"flexGrow",1),U(g1,()=>Z0().subtitleText),U(Q1,b(Y0,{get when(){return j1().added>0},get children(){var I0=W("text"),c1=x0("+");return D(I0,c1),Q(I0,"wrapMode","none"),U(I0,()=>j1().added,null),y((s1)=>Q(I0,"fg",z.success,s1)),I0}}),null),U(Q1,b(Y0,{get when(){return j1().deleted>0},get children(){var I0=W("text"),c1=x0("\u2212");return D(I0,c1),Q(I0,"wrapMode","none"),U(I0,()=>j1().deleted,null),y((s1)=>Q(I0,"fg",z.error,s1)),I0}}),null),y((I0)=>{var c1=i0()?z.backgroundElement:void 0,s1=V0(),c=X0(),A0=w1.BOLD,k1=z.text,l=w1.BOLD,k0=V0(),J0=z.textMuted,m0=w1.DIM;return c1!==I0.e&&(I0.e=Q(T0,"backgroundColor",c1,I0.e)),s1!==I0.t&&(I0.t=Q(g0,"fg",s1,I0.t)),c!==I0.a&&(I0.a=Q(W0,"fg",c,I0.a)),A0!==I0.o&&(I0.o=Q(W0,"attributes",A0,I0.o)),k1!==I0.i&&(I0.i=Q(s0,"fg",k1,I0.i)),l!==I0.n&&(I0.n=Q(s0,"attributes",l,I0.n)),k0!==I0.s&&(I0.s=Q(Y1,"fg",k0,I0.s)),J0!==I0.h&&(I0.h=Q(g1,"fg",J0,I0.h)),m0!==I0.r&&(I0.r=Q(g1,"attributes",m0,I0.r)),I0},{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}),f0})()};return(()=>{var r=W("box"),D0=W("box"),b0=W("box"),i0=W("text"),f1=W("box"),u0=W("box"),j1=W("text"),R1=W("scrollbox"),G1=W("box");return D(r,D0),D(r,f1),D(r,R1),Gz((Z0)=>{G0=Z0},r),Q(r,"flexGrow",1),Q(r,"minHeight",0),Q(r,"flexDirection","column"),Q(r,"paddingTop",1),Q(r,"paddingBottom",1),Q(r,"paddingLeft",0),Q(r,"paddingRight",0),D(D0,b0),Q(D0,"flexDirection","row"),Q(D0,"justifyContent","space-between"),Q(D0,"gap",1),Q(D0,"paddingBottom",1),Q(D0,"paddingLeft",1),Q(D0,"paddingRight",1),D(b0,i0),Q(b0,"flexDirection","row"),Q(b0,"gap",1),D(i0,x0("KOBE")),Q(i0,"wrapMode","none"),U(b0,b(Y0,{get when(){return J.headerStatus?.()},children:(Z0)=>(()=>{var X0=W("text");return Q(X0,"wrapMode","none"),Q(X0,"onMouseUp",()=>J.onHeaderStatusClick?.()),U(X0,()=>Z0().label),y((V0)=>{var N=Z0().emphasize?z.warning:z.textMuted,f0=Z0().emphasize?w1.BOLD:w1.DIM;return N!==V0.e&&(V0.e=Q(X0,"fg",N,V0.e)),f0!==V0.t&&(V0.t=Q(X0,"attributes",f0,V0.t)),V0},{e:void 0,t:void 0}),X0})()}),null),U(D0,b(Y0,{get when(){return J.onAddTask},get children(){var Z0=W("text");return D(Z0,x0("[+]")),Q(Z0,"wrapMode","none"),Q(Z0,"onMouseUp",()=>J.onAddTask?.()),y((X0)=>{var V0=z.primary,N=w1.BOLD;return V0!==X0.e&&(X0.e=Q(Z0,"fg",V0,X0.e)),N!==X0.t&&(X0.t=Q(Z0,"attributes",N,X0.t)),X0},{e:void 0,t:void 0}),Z0}}),null),U(r,b(Y0,{get when(){return X()},get children(){var Z0=W("box"),X0=W("text"),V0=W("text"),N=W("text");return D(Z0,X0),D(Z0,V0),D(Z0,N),Q(Z0,"flexDirection","row"),Q(Z0,"gap",0),Q(Z0,"paddingBottom",1),Q(Z0,"paddingLeft",1),D(X0,x0("/")),Q(X0,"wrapMode","none"),Q(V0,"wrapMode","none"),U(V0,H),D(N,x0("\u2588")),Q(N,"wrapMode","none"),U(Z0,b(Y0,{get when(){return H().length===0},get children(){var f0=W("text"),T0=x0(" ");return D(f0,T0),Q(f0,"wrapMode","none"),U(f0,()=>F("tasks.search.placeholder"),null),y((O0)=>Q(f0,"fg",z.textMuted,O0)),f0}}),null),U(Z0,b(Y0,{get when(){return H().length>0},get children(){var f0=W("text"),T0=x0(" "),O0=x0("/");return D(f0,T0),D(f0,O0),Q(f0,"wrapMode","none"),U(f0,()=>o().length,O0),U(f0,v,null),y((g0)=>Q(f0,"fg",z.textMuted,g0)),f0}}),null),y((f0)=>{var{info:T0,text:O0,info:g0}=z,M0=w1.BLINK;return T0!==f0.e&&(f0.e=Q(X0,"fg",T0,f0.e)),O0!==f0.t&&(f0.t=Q(V0,"fg",O0,f0.t)),g0!==f0.a&&(f0.a=Q(N,"fg",g0,f0.a)),M0!==f0.o&&(f0.o=Q(N,"attributes",M0,f0.o)),f0},{e:void 0,t:void 0,a:void 0,o:void 0}),Z0}}),f1),D(f1,u0),Q(f1,"flexDirection","row"),Q(f1,"justifyContent","space-between"),Q(f1,"gap",1),Q(f1,"paddingBottom",1),Q(f1,"paddingLeft",1),Q(f1,"paddingRight",1),D(u0,j1),Q(u0,"flexDirection","row"),Q(u0,"gap",2),U(u0,b(z1,{each:Tq,children:(Z0)=>{let X0=()=>Z()===Z0.view;return(()=>{var V0=W("text");return Q(V0,"wrapMode","none"),Q(V0,"onMouseUp",()=>G(Z0.view)),U(V0,()=>Du(Z0.view)),y((N)=>{var f0=X0()?z.primary:z.textMuted,T0=X0()?w1.BOLD:void 0;return f0!==N.e&&(N.e=Q(V0,"fg",f0,N.e)),T0!==N.t&&(N.t=Q(V0,"attributes",T0,N.t)),N},{e:void 0,t:void 0}),V0})()}}),j1),D(j1,x0("[/]")),Q(j1,"wrapMode","none"),U(f1,b(Y0,{get when(){return J.sortMode},get children(){var Z0=W("text");return Q(Z0,"wrapMode","none"),Q(Z0,"onMouseUp",()=>J.onSortModeToggle?.()),U(Z0,()=>F("tasks.sort")),y((X0)=>{var V0=z.textMuted,N=w1.DIM;return V0!==X0.e&&(X0.e=Q(Z0,"fg",V0,X0.e)),N!==X0.t&&(X0.t=Q(Z0,"attributes",N,X0.t)),X0},{e:void 0,t:void 0}),Z0}}),null),U(r,b(Y0,{get when(){return N0().length>0},get children(){var Z0=W("box"),X0=W("box"),V0=W("text"),N=W("text"),f0=W("scrollbox"),T0=W("box");return D(Z0,X0),D(Z0,f0),Q(Z0,"flexDirection","column"),Q(Z0,"flexShrink",0),D(X0,V0),D(X0,N),Q(X0,"flexDirection","row"),Q(X0,"flexShrink",0),Q(X0,"gap",1),Q(X0,"paddingLeft",1),Q(X0,"paddingRight",1),Q(X0,"onMouseUp",()=>t()),Q(V0,"wrapMode","none"),U(V0,()=>F("tasks.header.projects")),U(X0,b(Y0,{get when(){return T().length>1},get children(){var O0=W("text");return Q(O0,"wrapMode","none"),U(O0,e),y((g0)=>{var M0=d()?z.primary:z.textMuted,W0=d()?w1.BOLD:void 0;return M0!==g0.e&&(g0.e=Q(O0,"fg",M0,g0.e)),W0!==g0.t&&(g0.t=Q(O0,"attributes",W0,g0.t)),g0},{e:void 0,t:void 0}),O0}}),N),Q(N,"wrapMode","none"),U(N,()=>"\u2500".repeat(Math.max(2,I()-10-F("tasks.header.projects").length-(T().length>1?e().length+1:0)-(T().length>1?z0().length+1:0)))),U(X0,b(Y0,{get when(){return T().length>1},get children(){var O0=W("text");return Q(O0,"wrapMode","none"),U(O0,z0),y((g0)=>{var M0=z.textMuted,W0=w1.DIM;return M0!==g0.e&&(g0.e=Q(O0,"fg",M0,g0.e)),W0!==g0.t&&(g0.t=Q(O0,"attributes",W0,g0.t)),g0},{e:void 0,t:void 0}),O0}}),null),D(f0,T0),Gz((O0)=>{m=O0},f0),Q(f0,"flexShrink",0),Q(f0,"flexGrow",0),Q(f0,"minHeight",0),Q(f0,"stickyScroll",!1),Q(f0,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),Q(T0,"flexShrink",0),Q(T0,"gap",0),Q(T0,"paddingRight",1),U(T0,b(z1,{get each(){return N0()},children:(O0)=>b(U1,{row:O0})})),y((O0)=>{var g0=z.textMuted,M0=w1.BOLD,W0=z.border,s0=j0();return g0!==O0.e&&(O0.e=Q(V0,"fg",g0,O0.e)),M0!==O0.t&&(O0.t=Q(V0,"attributes",M0,O0.t)),W0!==O0.a&&(O0.a=Q(N,"fg",W0,O0.a)),s0!==O0.o&&(O0.o=Q(f0,"maxHeight",s0,O0.o)),O0},{e:void 0,t:void 0,a:void 0,o:void 0}),Z0}}),R1),U(r,b(P0,{get label(){return F("tasks.header.tasks")},get suffix(){return S0(()=>M()==="default")()?void 0:M()},get topPad(){return N0().length>0}}),R1),D(R1,G1),Gz((Z0)=>{L0=Z0},R1),Q(R1,"flexGrow",1),Q(R1,"minHeight",0),Q(R1,"stickyScroll",!1),Q(R1,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),Q(G1,"flexShrink",0),Q(G1,"gap",0),Q(G1,"paddingRight",1),U(G1,b(z1,{get each(){return h()},children:(Z0)=>{let{task:X0,flatIndex:V0}=Z0,N=()=>V0===E0(),f0=()=>X0.id===J.selectedId(),T0=U0(()=>{let Y1=J.chatRunState?.();if(!Y1)return!1;let Q1=`${X0.id}:`;for(let[g1,I0]of Y1)if(I0==="running"&&g1.startsWith(Q1))return!0;return!1}),O0=U0(()=>{let Y1=nH(J.worktreeChanges?.(),X0.worktreePath);if(Y1)return Y1;if(O(),!X0.archived)DW(X0.worktreePath);return UW(X0.worktreePath)},void 0,{equals:iz}),g0=U0(()=>VW({task:X0,activity:J.engineState?.().get(X0.id),job:J.taskJobs?.().get(X0.id),live:T0(),spinnerFrame:0,subtitleBudget:q0(),truncateBranch:_M,mainBranch:""})),M0=U0(()=>KW(g0(),w)),W0=()=>v0(M0().tone),s0=()=>N()?z.focusAccent:f0()?z.primary:void 0,e0=()=>N()||f0()?"\u258C":" ";return(()=>{var Y1=W("box"),Q1=W("box"),g1=W("box"),I0=W("text"),c1=W("box"),s1=W("text"),c=W("text"),A0=W("box"),k1=W("text"),l=W("box"),k0=W("text");return D(Y1,Q1),Q(Y1,"flexDirection","column"),Q(Y1,"gap",0),Q(Y1,"paddingBottom",1),D(Q1,g1),D(Q1,A0),Gz((J0)=>{F0.set(V0,J0),S1(()=>{if(F0.get(V0)===J0)F0.delete(V0)})},Q1),Q(Q1,"flexDirection","column"),Q(Q1,"gap",0),Q(Q1,"onMouseUp",()=>{if(R0(V0),J.onSelect(X0.id),J.activateOnClick)t0(X0.id)}),Q(Q1,"onMouseOver",(J0)=>p0({task:X0,x:J0.x,y:J0.y})),Q(Q1,"onMouseOut",()=>p0((J0)=>J0?.task.id===X0.id?null:J0)),D(g1,I0),D(g1,c1),Q(g1,"flexDirection","row"),Q(g1,"gap",0),Q(I0,"wrapMode","none"),U(I0,e0),D(c1,s1),D(c1,c),Q(c1,"flexDirection","row"),Q(c1,"flexGrow",1),Q(c1,"paddingRight",1),Q(c1,"gap",0),Q(s1,"wrapMode","none"),U(s1,()=>M0().stateGlyph),Q(c,"wrapMode","none"),Q(c,"flexGrow",1),U(c,()=>WW(M0().titleText,n())),U(c1,b(Y0,{get when(){return S0(()=>!!J.moveMode?.())()&&N()},get children(){var J0=W("text");return Q(J0,"wrapMode","none"),U(J0,()=>F("tasks.moveChip")),y((m0)=>Q(J0,"fg",z.warning,m0)),J0}}),null),D(A0,k1),D(A0,l),Q(A0,"flexDirection","row"),Q(A0,"gap",0),Q(k1,"wrapMode","none"),U(k1,e0),D(l,k0),Q(l,"flexDirection","row"),Q(l,"flexGrow",1),Q(l,"paddingLeft",2),Q(l,"paddingRight",1),Q(l,"gap",1),Q(k0,"wrapMode","none"),Q(k0,"flexGrow",1),U(k0,()=>M0().subtitleText),U(l,b(Y0,{get when(){return X0.pinned===!0},get children(){var J0=W("text");return D(J0,x0("\u25B4")),Q(J0,"wrapMode","none"),y((m0)=>Q(J0,"fg",z.warning,m0)),J0}}),null),U(l,b(Y0,{get when(){return nM(X0)},children:(J0)=>(()=>{var m0=W("text");return Q(m0,"wrapMode","none"),U(m0,()=>J0().glyph),y((P1)=>Q(m0,"fg",v0(J0().tone),P1)),m0})()}),null),U(l,b(Y0,{get when(){return O0().added>0},get children(){var J0=W("text"),m0=x0("+");return D(J0,m0),Q(J0,"wrapMode","none"),U(J0,()=>O0().added,null),y((P1)=>Q(J0,"fg",z.success,P1)),J0}}),null),U(l,b(Y0,{get when(){return O0().deleted>0},get children(){var J0=W("text"),m0=x0("\u2212");return D(J0,m0),Q(J0,"wrapMode","none"),U(J0,()=>O0().deleted,null),y((P1)=>Q(J0,"fg",z.error,P1)),J0}}),null),y((J0)=>{var m0=N()?z.backgroundElement:void 0,P1=s0(),X1=W0(),QJ=w1.BOLD,$J=z.text,aJ=f0()||N()?w1.BOLD:void 0,HJ=s0(),_z=z.textMuted,Qz=w1.DIM;return m0!==J0.e&&(J0.e=Q(Q1,"backgroundColor",m0,J0.e)),P1!==J0.t&&(J0.t=Q(I0,"fg",P1,J0.t)),X1!==J0.a&&(J0.a=Q(s1,"fg",X1,J0.a)),QJ!==J0.o&&(J0.o=Q(s1,"attributes",QJ,J0.o)),$J!==J0.i&&(J0.i=Q(c,"fg",$J,J0.i)),aJ!==J0.n&&(J0.n=Q(c,"attributes",aJ,J0.n)),HJ!==J0.s&&(J0.s=Q(k1,"fg",HJ,J0.s)),_z!==J0.h&&(J0.h=Q(k0,"fg",_z,J0.h)),Qz!==J0.r&&(J0.r=Q(k0,"attributes",Qz,J0.r)),J0},{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}),Y1})()}}),null),U(G1,b(Y0,{get when(){return o().length===0},get children(){var Z0=W("box"),X0=W("text");return D(Z0,X0),Q(Z0,"paddingTop",1),Q(Z0,"paddingLeft",1),U(X0,(()=>{var V0=S0(()=>!!(X()&&H().trim().length>0));return()=>V0()?F("tasks.empty.noMatchSearch"):S0(()=>!!d())()?S0(()=>Z()==="active")()?F("tasks.empty.noActiveProject"):F("tasks.empty.noArchivedProject"):S0(()=>Z()==="active")()?F("tasks.empty.noActive"):F("tasks.empty.noArchived")})()),y((V0)=>Q(X0,"fg",z.textMuted,V0)),Z0}}),null),U(G1,b(Y0,{get when(){return S0(()=>!!(d()&&o().length>0&&!k()))()&&!(X()&&H().trim().length>0)},get children(){var Z0=W("box"),X0=W("text");return D(Z0,X0),Q(Z0,"paddingTop",1),Q(Z0,"paddingLeft",1),Q(X0,"wrapMode","none"),U(X0,(()=>{var V0=S0(()=>Z()==="active");return()=>V0()?F("tasks.empty.noActiveProject"):F("tasks.empty.noArchivedProject")})()),y((V0)=>{var N=z.textMuted,f0=w1.DIM;return N!==V0.e&&(V0.e=Q(X0,"fg",N,V0.e)),f0!==V0.t&&(V0.t=Q(X0,"attributes",f0,V0.t)),V0},{e:void 0,t:void 0}),Z0}}),null),U(G1,b(Y0,{get when(){return S0(()=>Z()==="archived")()&&o().length>0},get children(){var Z0=W("box"),X0=W("text");return D(Z0,X0),Q(Z0,"paddingTop",1),Q(Z0,"paddingLeft",1),Q(X0,"wrapMode","none"),U(X0,()=>F("tasks.archiveHint")),y((V0)=>{var N=z.textMuted,f0=w1.DIM;return N!==V0.e&&(V0.e=Q(X0,"fg",N,V0.e)),f0!==V0.t&&(V0.t=Q(X0,"attributes",f0,V0.t)),V0},{e:void 0,t:void 0}),Z0}}),null),U(r,b(Y0,{get when(){return J.zenActive?.()},get children(){var Z0=W("box"),X0=W("text");return D(Z0,X0),Q(Z0,"flexShrink",0),Q(Z0,"paddingLeft",1),Q(Z0,"paddingRight",1),Q(Z0,"paddingTop",1),D(X0,x0("\u262F ZEN")),Q(X0,"wrapMode","none"),Q(X0,"onMouseUp",()=>J.onZenClick?.()),y((V0)=>{var N=z.accent,f0=w1.BOLD;return N!==V0.e&&(V0.e=Q(X0,"fg",N,V0.e)),f0!==V0.t&&(V0.t=Q(X0,"attributes",f0,V0.t)),V0},{e:void 0,t:void 0}),Z0}}),null),U(r,b(Y0,{get when(){return y0()},children:(Z0)=>{let X0=U0(()=>{let M0=Z0().task,W0=[];if(W0.push({text:M0.kind==="main"?yz(M0.repo):M0.title,bold:!0}),M0.branch.length>0)W0.push({text:`\u2387 ${M0.branch}`});if(M0.worktreePath.length>0)W0.push({text:M0.worktreePath,dim:!0});return W0}),V0=72,N=U0(()=>Math.min(68,Math.max(...X0().map((M0)=>Mu(M0.text))))),f0=U0(()=>N()+4),T0=U0(()=>X0().length+2),O0=U0(()=>Math.max(0,Math.min(Z0().x+2,H0().width-f0()-1))),g0=U0(()=>Math.max(0,Math.min(Z0().y+1,H0().height-T0()-1)));return(()=>{var M0=W("box");return Q(M0,"position","absolute"),Q(M0,"zIndex",2600),Q(M0,"flexDirection","column"),Q(M0,"border",!0),Q(M0,"paddingLeft",1),Q(M0,"paddingRight",1),U(M0,b(z1,{get each(){return X0()},children:(W0)=>(()=>{var s0=W("text");return Q(s0,"wrapMode","none"),U(s0,(()=>{var e0=S0(()=>!!W0.dim);return()=>e0()?Ou(W0.text,N()):BW(W0.text,N())})()),y((e0)=>{var Y1=W0.dim?z.textMuted:z.text,Q1=W0.bold?w1.BOLD:W0.dim?w1.DIM:void 0;return Y1!==e0.e&&(e0.e=Q(s0,"fg",Y1,e0.e)),Q1!==e0.t&&(e0.t=Q(s0,"attributes",Q1,e0.t)),e0},{e:void 0,t:void 0}),s0})()})),y((W0)=>{var s0=O0(),e0=g0(),Y1=f0(),Q1=z.focusAccent,g1=z.backgroundElement;return s0!==W0.e&&(W0.e=Q(M0,"left",s0,W0.e)),e0!==W0.t&&(W0.t=Q(M0,"top",e0,W0.t)),Y1!==W0.a&&(W0.a=Q(M0,"width",Y1,W0.a)),Q1!==W0.o&&(W0.o=Q(M0,"borderColor",Q1,W0.o)),g1!==W0.i&&(W0.i=Q(M0,"backgroundColor",g1,W0.i)),W0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),M0})()}}),null),y((Z0)=>{var X0=Y()?z.focusAccent:z.textMuted,V0=w1.BOLD,N=z.textMuted,f0=w1.DIM;return X0!==Z0.e&&(Z0.e=Q(i0,"fg",X0,Z0.e)),V0!==Z0.t&&(Z0.t=Q(i0,"attributes",V0,Z0.t)),N!==Z0.a&&(Z0.a=Q(j1,"fg",N,Z0.a)),f0!==Z0.o&&(Z0.o=Q(j1,"attributes",f0,Z0.o)),Z0},{e:void 0,t:void 0,a:void 0,o:void 0}),r})()}var aM=32,Tq,Lu=2000,Fu=16,Ou;var rM=C(()=>{E();E();E();E();E();E();E();E();E();ZJ();E();W1();E1();E1();PM();Tf();vM();mM();iM();xG();$M();Tq=[{view:"active"},{view:"archived"}];Ou=wf});var J3={};q1(J3,{startTasksPane:()=>Cu,legendRowCap:()=>eM,legendCap:()=>tM});import{existsSync as oM}from"fs";import{stat as Au}from"fs/promises";import{TextAttributes as hf}from"@opentui/core";function sM(J){let z=J instanceof Error?J.message:String(J);if(/not a git repository/i.test(z))return F("tasks.toast.worktreeErrorNotGit");return F("tasks.toast.worktreeErrorGeneric",{message:z})}function gu(J){let{theme:z}=w0(),Y=d1(),Z=oG(),G=Nf(),[X,q]=p(J.tasks().some((m)=>m.id===J.initialTaskId)?J.initialTaskId:J.tasks()[0]?.id??null),H=0;function f(m){G.notify({kind:"error",taskId:X()??"",tabId:"",title:m})}function j(m){G.notify({kind:"done",taskId:X()??"",tabId:"",title:m})}let[V,B]=p(!1),[K,L]=p(Z.get("activeSortMode")==="recent"?"recent":"default"),A=Z.get("tasksPane.projectFilter"),[O,R]=p(typeof A==="string"&&A.length>0?A:null),x=(m)=>{R(m),Z.set("tasksPane.projectFilter",m)},[w,S]=p(null),[g,M]=p(!1);{let m=process.env.TMUX_PANE;if(m){let L0=()=>{$0(["show-options","-wqv","-t",m,SY]).then(({code:F0,stdout:a0})=>{M(F0===0&&a0.trim().length>0)})};L0();let G0=setInterval(L0,1000);S1(()=>clearInterval(G0))}}let T=lz();_0(()=>{if(J.initialTaskId)return;let m=J.orch?.activeTaskSignal()();if(!m)return;q(m)}),_0(BJ(()=>J.orch?.uiPrefsSignal()(),(m)=>{if(m&&m.sortMode!==o1(K))L(m.sortMode);if(m&&m.projectFilter!==o1(O))R(m.projectFilter)})),_0(()=>{let m=J.orch?.updateSignal()();if(m)S(m)});let $={orch:J.orch,tasks:()=>J.tasks(),confirm:async(m)=>await FY.show(Y,m.title,m.body,m.cancelLabel,m.confirmLabel)===!0,promptText:(m,L0)=>LY.show(Y,m,L0),logger:console,logPrefix:"[kobe tasks]",notifyError:f,notifyInfo:j,reload:()=>J.reload(),switchBeforeKill:!0,updateActiveTask:!0,onTaskDeleted:(m,L0)=>{if(X()!==m)return;let G0=J.tasks();q(L0?.id??(G0.find((F0)=>!F0.archived)??G0[0])?.id??null)},promptNewTask:(m,L0,G0)=>Lf.show(Y,m,L0,G0),cursorRepo:()=>{let m=J.tasks();return(m.find((L0)=>L0.id===X())??m[0])?.repo},lastVendor:()=>uJ(N1("lastSelectedVendor"),EJ()),rememberVendor:(m)=>e1("lastSelectedVendor",m),openCreateSurface:async(m)=>{if(TZ(Z.get(fY,yZ))!=="chattab")return!1;let G0=await xJ();if(!G0)return!1;return await $X(G0,m),!0},selectTask:(m)=>q(m),enterTask:(m)=>j0(m)};async function d(){await bM($)}async function e(){if(TZ(Z.get(fY,yZ))==="chattab"){let G0=await xJ();if(G0){await iX(G0);return}}if(!(await nZ.show(Y,Z,J.orch??void 0)).visualPrefsChanged)return;if(!Z.flush())return;try{let G0=await xJ();if(G0)await RG(G0)}catch(G0){console.error("[kobe tasks] failed to refresh workspace panes:",G0)}}async function u(){let m=await xJ();if(m){await lX(m);return}tG.show(Y)}async function z0(){if(!w()?.hasUpdate){j(F("tasks.toast.alreadyLatest",{version:r0}));return}let L0=await xJ();if(!L0)return;await aX(L0)}async function Q0(m){await RM($,m)}async function o(m){await gM($,m)}async function K0(m){await NM($,m)}async function N0(m){await CM($,m)}async function h(m){await kM($,m)}async function s(m){let G0=J.tasks().find((a0)=>a0.id===m)?.worktreePath;if(!G0||!oM(G0)){if(!J.orch){console.error("[kobe tasks] no daemon; cannot materialise worktree"),f(F("tasks.toast.noDaemonWorktree"));return}try{G0=await J.orch.ensureWorktree(m)}catch(a0){console.error("[kobe tasks] task.ensureWorktree failed:",a0),f(sM(a0));return}await J.reload()}if(!G0||!oM(G0))return;let F0=IM();if(!F0){console.error("[kobe tasks] no editor/opener found; set KOBE_OPEN_EDITOR"),f(F("tasks.toast.noEditor"));return}if(!yM(G0,F0))console.error(`[kobe tasks] failed to open worktree with ${F0.label}`),f(F("tasks.toast.openWorktreeFailed",{label:F0.label}))}async function v(){if(!process.env.TMUX_PANE)return;let m=await xJ();if(!m)return;let L0=await BG(m);if(!L0)return;await c0(["select-pane","-t",L0])}async function k(m,L0){let G0=J.tasks().find((F0)=>F0.id===m);if(!G0||G0.kind==="main"||!J.orch)return;try{await J.orch.moveTask(m,L0)}catch(F0){console.error("[kobe tasks] task.move failed:",F0),f(F("tasks.toast.moveTaskFailed",{message:F0 instanceof Error?F0.message:String(F0)}));return}q(m),await J.reload()}let[t,I]=p(Z.get("tasksPane.keysCollapsed",!1)===!0),n=(m)=>{I(m),Z.set("tasksPane.keysCollapsed",m)};_0(BJ(()=>J.orch?.uiPrefsSignal()(),(m)=>{if(m&&m.keysCollapsed!==o1(t))I(m.keysCollapsed)}));let[q0,H0]=p(!1);K1(()=>({enabled:Y.stack.length===0&&!q0(),bindings:rY({"help.open":()=>void u(),"task.new":()=>void d(),"settings.open.sidebar":()=>void e(),"tasks.update":()=>void z0(),"tasks.openWorktree":()=>{let m=X();if(m)s(m)},"tasks.renameBranch":()=>{let m=X();if(m)N0(m)},"tasks.cycleEngine":()=>{let m=X();if(m)h(m)},"tasks.toggleKeys":()=>n(!t()),"tasks.focusEngine":()=>void v().catch((m)=>console.error("[kobe tasks] focus engine pane failed:",m))})}));async function j0(m){let L0=J.tasks().find((F0)=>F0.id===m);if(!L0)return;let G0=++H;try{await p9(J.orch,L0,L0.repo,L0.vendor,{includeInitPrompt:!0,heal:!0,captureFrom:!0,reload:()=>J.reload(),isCurrent:()=>H===G0})}catch(F0){if(F0 instanceof sY)if(F0.phase==="no-daemon")f(F("tasks.toast.noDaemonOpen"));else if(F0.phase==="worktree")f(sM(F0.cause??F0));else f(F("tasks.toast.sessionStartFailed"));else console.error("[kobe tasks] switchTo failed:",F0)}}let y0=U0(()=>{let m=w();if(m?.hasUpdate)return{label:`v${m.latest} \u2191`,emphasize:!0};return{label:`v${r0}`,emphasize:!1}}),p0=()=>J.orch?.daemonStaleSignal()()??!1,E0=()=>J.orch?.daemonVersionSignal()()??null,R0=U0(()=>J.tasks().find((m)=>m.id===X())?.kind==="main");return(()=>{var m=W("box"),L0=W("box");return D(m,L0),Q(m,"flexDirection","column"),Q(m,"flexGrow",1),U(m,b(MM,{stale:p0,daemonVersion:E0,clientVersion:r0,width:()=>T().width}),L0),Q(L0,"flexGrow",1),Q(L0,"flexShrink",1),U(L0,b(pM,{get tasks(){return J.tasks},selectedId:X,get onSelect(){return J.initialTaskId?()=>{}:q},get pinnedSelection(){return!!J.initialTaskId},onActivate:(G0)=>void j0(G0),activateOnClick:!0,headerStatus:y0,onHeaderStatusClick:()=>void z0(),onAddTask:()=>void d(),zenActive:g,onZenClick:()=>{(async()=>{let G0=await xJ();if(G0)await CZ(G0,"zen-toggle")})()},width:()=>T().width,get engineState(){return S0(()=>!!J.orch)()?J.orch.engineStateSignal():void 0},get taskJobs(){return S0(()=>!!J.orch)()?J.orch.taskJobsSignal():void 0},get worktreeChanges(){return J.orch?()=>{let G0=J.orch;if(!G0||G0.connectionStateSignal()()!=="online")return null;return G0.worktreeChangesSignal()()}:void 0},onRenameRequest:(G0)=>void K0(G0),onDeleteRequest:(G0)=>void o(G0),onArchiveRequest:(G0)=>void Q0(G0),onLocalMergeRequest:(G0)=>{let F0=J.tasks().find((a0)=>a0.id===G0);if(!F0||F0.kind==="main")return;q(G0),B((a0)=>!a0)},moveMode:V,onMoveRequest:(G0,F0)=>void k(G0,F0),onMoveModeExit:()=>B(!1),sortMode:K,projectFilter:O,onProjectFilterChange:x,onSortModeToggle:()=>{let G0=K()==="default"?"recent":"default";L(G0),Z.set("activeSortMode",G0)},focused:()=>Y.stack.length===0,onSearchActiveChange:H0})),U(m,b(Nu,{moveMode:V,selectedIsMain:R0,collapsed:t,onToggleCollapsed:()=>n(!t())}),null),y((G0)=>Q(m,"backgroundColor",z.background,G0)),m})()}function tM(J){let z=n9(J);if(!z)return null;let Y=z.hint?.keys??z.keys[0];return Y&&Y.length>0?Y:null}function eM(J){let z=J.map(tM).filter((Y)=>Y!==null);return z.length>0?z.join("/"):null}function Nu(J){let{theme:z}=w0(),[Y,Z]=p("Prefix");GJ(()=>{$0(["show-options","-g","prefix"]).then(({code:K,stdout:L})=>{if(K!==0)return;let A=uf(L);if(A)Z(A)})});let G=()=>{d9();let K=aQ(),L=K.binds,A=[],O=K.focus.filter((x)=>x!==null).map((x)=>x.chord);if(O.length===4&&O.every((x,w)=>x===uY[w]))A.push({k:"ctrl+hjkl",label:F("tasks.hints.movePanes")});else if(O.length>0)A.push({k:O[0],label:F("tasks.hints.movePanes")});let R=(x,w)=>{let S=w.map((g)=>L[g]?.chord).filter((g)=>!!g);if(S.length>0)A.push({k:`prefix ${S.join("/")}`,label:x})};if(L["tmux.detach"])A.push({k:L["tmux.detach"].chord,label:F("tasks.hints.detach")});return R(F("tasks.hints.splits"),["tmux.layout.workspaceSplit","tmux.layout.workspaceClose","tmux.layout.workspaceReset"]),R(F("tasks.hints.panes"),["tmux.layout.tasksToggle","tmux.layout.opsToggle","tmux.layout.terminalToggle"]),A},X=()=>{d9();let K=[{ids:["help.open"],label:F("tasks.hints.fullHelp")},{ids:["task.new"],label:F("tasks.hints.newTask")},{ids:["settings.open.sidebar"],label:F("tasks.hints.settings")},{ids:["sidebar.select"],label:F("tasks.hints.open")},{ids:["tasks.focusEngine"],label:F("tasks.hints.focusEngine")},{ids:["tasks.openWorktree"],label:F("tasks.hints.openWorktree")},{ids:["sidebar.delete"],label:F("tasks.hints.delete")},{ids:["sidebar.view"],label:F("tasks.hints.views")},{ids:["sidebar.projectFilter"],label:F("tasks.hints.project")}],L=[];for(let A of K){let O=eM(A.ids);if(O===null)continue;L.push({k:O,label:A.label,dimWhenMain:A.dimWhenMain})}return L.push(...G()),L},q=()=>[{k:"j/k",label:F("tasks.hints.reorder")},{k:"enter/esc",label:F("tasks.hints.done")}],H=()=>J.moveMode?.()?q():X(),f=18,j=()=>Math.min(f,Math.max(...H().map((K)=>K.label.length))),V=(K)=>zX(K,j()),B=()=>(J.collapsed?.()??!1)&&!(J.moveMode?.()??!1);return(()=>{var K=W("box"),L=W("text");return D(K,L),Q(K,"flexShrink",0),Q(K,"flexDirection","column"),Q(K,"paddingLeft",1),Q(K,"paddingRight",1),Q(K,"paddingTop",1),Q(K,"paddingBottom",1),Q(K,"gap",0),Q(L,"wrapMode","none"),Q(L,"onMouseUp",()=>J.onToggleCollapsed?.()),U(L,(()=>{var A=S0(()=>!!B());return()=>A()?F("tasks.hints.headerFolded"):F("tasks.hints.headerUnfolded")})()),U(K,b(Y0,{get when(){return!B()},get children(){return b(z1,{get each(){return H()},children:(A)=>{let O=()=>A.dimWhenMain===!0&&(J.selectedIsMain?.()??!1);return(()=>{var R=W("box"),x=W("box"),w=W("text"),S=x0("["),g=x0("]"),M=W("box"),T=W("text");return D(R,x),D(R,M),Q(R,"flexDirection","row"),Q(R,"gap",1),Q(R,"justifyContent","space-between"),D(x,w),Q(x,"width",10),Q(x,"flexShrink",0),D(w,S),D(w,g),Q(w,"wrapMode","none"),U(w,()=>sG(A.k,Y()),g),D(M,T),Q(M,"flexShrink",0),Q(T,"wrapMode","none"),U(T,()=>V(A.label)),y(($)=>{var d=O()?z.textMuted:z.accent,e=O()?hf.DIM:hf.BOLD,u=j(),z0=z.textMuted,Q0=O()?hf.DIM:void 0;return d!==$.e&&($.e=Q(w,"fg",d,$.e)),e!==$.t&&($.t=Q(w,"attributes",e,$.t)),u!==$.a&&($.a=Q(M,"width",u,$.a)),z0!==$.o&&($.o=Q(T,"fg",z0,$.o)),Q0!==$.i&&($.i=Q(T,"attributes",Q0,$.i)),$},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),R})()}})}}),null),y((A)=>{var O=z.textMuted,R=hf.DIM;return O!==A.e&&(A.e=Q(L,"fg",O,A.e)),R!==A.t&&(A.t=Q(L,"attributes",R,A.t)),A},{e:void 0,t:void 0}),K})()}async function Cu(J={}){await KJ({logContext:"tasks",providers:{notifications:!0},setup:()=>ku(J)})}async function ku(J){let z=new PG({homeDir:Tz()});await z.load();let[Y,Z]=p(z.list()),G=null;try{let j=await Zz();if(j){let V=new FJ(j);await V.init(),G=V}else JY("tasks-boot","no daemon running \u2014 polling tasks.json (a gui owns daemon lifecycle)")}catch(j){JJ("tasks-boot",j),JY("tasks-boot","daemon subscribe failed \u2014 polling tasks.json")}let X=()=>G&&G.connectionStateSignal()()==="online"?G.tasksSignal()():Y(),q=async()=>{await z.load(),Z(z.list())},H="",f=setInterval(()=>{if(G&&G.connectionStateSignal()()==="online")return;(async()=>{let j="missing";try{let V=await Au(z.filePath);j=`${V.mtimeMs}:${V.size}`}catch{}if(j===H)return;H=j,await q()})().catch(()=>{})},Ru);return{root:()=>[b(gu,{tasks:X,get initialTaskId(){return J.initialTaskId},orch:G,reload:q}),b(LM,{})],onDestroy:()=>{if(f)clearInterval(f);G?.dispose()}}}var Ru=1500;var z3=C(()=>{E();E();E();E();E();E();E();E();v1();Uz();ZJ();E();GZ();RJ();W1();_Y();t1();Qq();A1();_Q();a1();AJ();e9();pG();JW();HW();FM();OM();rG();Sq();Cf();E1();t9();DY();gJ();SM();Sf();TM();rM();PY();zJ();iJ();zW()});var Y3={};q1(Y3,{startSettingsHost:()=>Su});function bu(J){let z=oG(),Y=d1(),{theme:Z}=w0(),G=!1,X=!1;async function q(){if(X)return;X=!0;try{if(z.flush()&&G){let f=await xJ();if(f)await RG(f)}}catch(H){console.error("[kobe settings] failed to refresh workspace panes:",H)}finally{process.exit(0)}}return K1(()=>({enabled:Y.stack.length===0,bindings:[{key:"escape",cmd:q},{key:"q",cmd:q},{key:"ctrl+c",cmd:q}]})),(()=>{var H=W("scrollbox");return Q(H,"flexGrow",1),Q(H,"paddingTop",1),Q(H,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),U(H,b(nZ,{kv:z,get orchestrator(){return J.orchestrator??void 0},standalone:!0,onVisualPrefsChange:()=>{G=!0},onClose:q})),y((f)=>Q(H,"backgroundColor",Z.background,f)),H})()}async function Su(){await KJ({setup:async()=>{let J=null;try{let z=await Zz();if(z){let Y=new FJ(z);await Y.init(),J=Y}else console.error("[kobe settings] no daemon running; Restart backend disabled")}catch(z){console.error("[kobe settings] daemon unavailable; Restart backend disabled:",z)}return{root:()=>b(bu,{orchestrator:J}),onDestroy:()=>{J?.dispose()}}}})}var Z3=C(()=>{E();E();E();E();E();E();RJ();_Y();HW();Sq();E1();DY();gJ();zJ();iJ()});var G3={};q1(G3,{startHelpHost:()=>yu});function Iu(){let J=d1(),{theme:z}=w0();function Y(){process.exit(0)}return K1(()=>({enabled:J.stack.length===0,bindings:[{key:"escape",cmd:Y},{key:"q",cmd:Y},{key:"f1",cmd:Y},{key:"ctrl+c",cmd:Y}]})),(()=>{var Z=W("box");return Q(Z,"flexGrow",1),Q(Z,"paddingTop",1),U(Z,b(tG,{onClose:Y})),y((G)=>Q(Z,"backgroundColor",z.background,G)),Z})()}async function yu(){await KJ({providers:{kv:!1,focus:!1},setup:()=>({root:()=>b(Iu,{})})})}var X3=C(()=>{E();E();E();E();E();e9();E1();DY();gJ();iJ()});var q3={};q1(q3,{startUpdateHost:()=>hu});import{spawn as Tu,spawnSync as xu}from"child_process";import{TextAttributes as ZX}from"@opentui/core";function uu(J){if(!J)return!1;let z=process.platform,[Y,Z]=z==="darwin"?["open",[J]]:z==="win32"?["cmd",["/c","start","",J]]:["xdg-open",[J]];try{return Tu(Y,Z,{stdio:"ignore",detached:!0}).unref(),!0}catch{return!1}}function Eu(J){return J.replace(/\r\n/g,`
247
+ ${Q8()}
248
+ `),process.exit(2)}return z}async function Sy(J){let[z,...Y]=J;if(!z||z==="--help"||z==="-h"||z==="help"){if(process.stdout.write(`${Q8()}
249
+ `),!z)process.exitCode=2;return}if(!by.includes(z))process.stderr.write(`kobe skill: unknown verb "${z}"
250
+
251
+ ${Q8()}
252
+ `),process.exit(2);if(z==="status"){let H=WQ(),[f,j]=Z8(),V=!H.installed?"\u2717 not installed":H.stale?`\u26A0 out of date (installed ${H.installedVersion===null?"unstamped":`v${H.installedVersion}`}, this kobe wants v${H.currentVersion})`:`\u2713 installed (v${H.installedVersion})`;process.stdout.write([`kobe skill: ${V}`,` looked in: ${f}`,` ${j}`,H.installed&&!H.stale?"":" \u2192 run `kobe skill install` to install / refresh",""].join(`
253
+ `));return}if(z==="command"){process.stdout.write(`${Yf({agent:lD(Y)})}
254
+ `);return}let Z=lD(Y),G=Y8({agent:Z});process.stdout.write(`kobe skill: running \`npx ${G.join(" ")}\`
255
+ `);let Q=await Bun.spawn(["npx",...G],{stdin:"inherit",stdout:"inherit",stderr:"inherit"}).exited;if(Q!==0)process.stderr.write(`
256
+ kobe skill install failed (npx exited ${Q}). Is \`npx\` on PATH and are you online?
257
+ You can run it yourself: ${Yf({agent:Z})}
258
+ `),process.exit(Q||1);process.stdout.write(`kobe skill: installed.
259
+ `)}var by;var aD=C(()=>{Zf();by=["install","status","command"]});var H8={};q1(H8,{runHookSubcommand:()=>wy,readTextWithTimeout:()=>rD,parseWorktreeRemovePath:()=>eD,parseWorktreeAddPath:()=>tD,ensureGlobalKobeHooks:()=>vy});import{homedir as Iy}from"os";import{join as pD,resolve as q8}from"path";async function rD(J,z=yy){let Y;try{return await Promise.race([J(),new Promise((Z)=>{Y=setTimeout(()=>Z(""),z)})])}finally{if(Y!==void 0)clearTimeout(Y)}}async function oD(){try{let J=await rD(()=>Bun.stdin.text());if(!J.trim())return{};let z=JSON.parse(J);return z&&typeof z==="object"&&!Array.isArray(z)?z:{}}catch{return{}}}function Ty(J,z){for(let Y=0;Y<J.length;Y++){if(J[Y]===z)return J[Y+1];if(J[Y].startsWith(`${z}=`))return J[Y].slice(z.length+1)}return}function uy(J){return!!J&&typeof J==="object"&&!Array.isArray(J)}function sD(J){let z=[],Y=/"([^"]*)"|'([^']*)'|(\S+)/g,Z;while((Z=Y.exec(J))!==null)z.push(Z[1]??Z[2]??Z[3]??"");return z}function tD(J){let z=sD(J),Y=new Set(["-b","-B","--reason"]);for(let Z=0;Z+1<z.length;Z++){if(z[Z]!=="worktree"||z[Z+1]!=="add")continue;let G=Z+2;while(G<z.length){let X=z[G];if(X==="&&"||X==="||"||X===";"||X==="|"||X===">"||X===">>")break;if(X.startsWith("-")){G+=Y.has(X)?2:1;continue}return X}}return}function eD(J){let z=sD(J);for(let Y=0;Y+1<z.length;Y++){if(z[Y]!=="worktree"||z[Y+1]!=="remove")continue;let Z=Y+2;while(Z<z.length){let G=z[Z];if(G==="&&"||G==="||"||G===";"||G==="|"||G===">"||G===">>")break;if(G.startsWith("-")){Z+=1;continue}return G}}return}async function Ey(){let J=await oD(),z=uy(J.tool_input)?J.tool_input:{},Y=typeof z.command==="string"?z.command:"";if(!Y.includes("worktree"))return;let Z=typeof J.cwd==="string"&&J.cwd?J.cwd:process.cwd(),G=tD(Y),X=G?void 0:eD(Y);if(!G&&!X)return;let Q=await Qz();if(!Q)return;try{if(G)await Q.request("worktree.reconcile",{cwd:Z,worktreePath:q8(Z,G)});else if(X)await Q.request("worktree.archiveRemoved",{worktreePath:q8(Z,X)})}finally{Q.close()}}async function wy(J){let[z,...Y]=J;if(z==="setup"){await my(Y);return}if(z===xy){try{await Ey()}catch{}return}try{if(!z||!Oq(z))return;let Z=await oD(),G=Ty(Y,"--task-id"),X=typeof Z.cwd==="string"&&Z.cwd?Z.cwd:process.cwd(),Q;for(let f of JL())if(Q=f.activityDetailFromPayload(z,Z),Q)break;let H=await Qz();if(!H)return;try{await H.request("engine.reportEvent",{...G?{taskId:G}:{cwd:X},kind:z,...Q?{detail:Q}:{}})}finally{H.close()}}catch{}}function Py(){return a1.map((J)=>nj(J)).filter((J)=>J.supportsWorktreeSync())}function JL(){return a1.map((J)=>nj(J)).filter((J)=>J.supportsHooks())}function zL(){return pD(Iy(),".claude","settings.json")}function hy(J){if(!J||J==="off")return;if(J==="global")return zL();if(J.startsWith("repo:"))return pD(q8(J.slice(5)),".claude","settings.json");return J}async function vy(){try{for(let J of JL()){let z=J.globalSettingsPath();if(!z)continue;await J.installActivityHooks(z),await J.installWorktreeWatchHook(z)}await YL()}catch{}}async function YL(){let J=Py();if(J.length===0)return;let z=S1(_D),Y=new Set([zL()]),Z=hy(z);if(Z)Y.add(Z);for(let G of J)for(let X of Y)await G.removeWorktreeSyncHook(X);if(z!=="off")e1(_D,"off")}async function my(J){await YL(),process.stdout.write(["kobe hook setup is deprecated and now a no-op (cleanup only).","","The old external-worktree sync used a global WorktreeCreate hook, which is","a VCS provider hook \u2014 its presence broke `claude --worktree` / EnterWorktree","in every repo. Any hook kobe previously installed has been removed.","","Sync is now automatic: a `claude --worktree` (or any session) started in a","worktree under a repo kobe already tracks is adopted as a task on launch.","To adopt existing worktrees on demand, use the New Task dialog or `kobe adopt`.",""].join(`
260
+ `))}var yy=500,xy="worktree-created",_D="externalWorktreeSync";var f8=C(()=>{CJ();ij();Aq();C1();_1()});function GL(J){var z;if(J>=55296&&J<=57343||J>1114111)return 65533;return(z=cy.get(J))!==null&&z!==void 0?z:J}var j8,cy,ZL;var XL=C(()=>{cy=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]]),ZL=(j8=String.fromCodePoint)!==null&&j8!==void 0?j8:(J)=>{let z="";if(J>65535)J-=65536,z+=String.fromCharCode(J>>>10&1023|55296),J=56320|J&1023;return z+=String.fromCharCode(J),z}});function QL(J){let z=typeof atob==="function"?atob(J):typeof Buffer.from==="function"?Buffer.from(J,"base64").toString("binary"):new Buffer(J,"base64").toString("binary"),Y=z.length&-2,Z=new Uint16Array(Y/2);for(let G=0,X=0;G<Y;G+=2){let Q=z.charCodeAt(G),H=z.charCodeAt(G+1);Z[X++]=Q|H<<8}return Z}var qL;var HL=C(()=>{qL=QL("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 OJ;var fL=C(()=>{(function(J){J[J.VALUE_LENGTH=49152]="VALUE_LENGTH",J[J.FLAG13=8192]="FLAG13",J[J.BRANCH_LENGTH=8064]="BRANCH_LENGTH",J[J.JUMP_TABLE=127]="JUMP_TABLE"})(OJ||(OJ={}))});function B8(J){return J>=d1.ZERO&&J<=d1.NINE}function dy(J){return J>=d1.UPPER_A&&J<=d1.UPPER_F||J>=d1.LOWER_A&&J<=d1.LOWER_F}function ny(J){return J>=d1.UPPER_A&&J<=d1.UPPER_Z||J>=d1.LOWER_A&&J<=d1.LOWER_Z||B8(J)}function iy(J){return J===d1.EQUALS||ny(J)}class W8{constructor(J,z,Y){this.decodeTree=J,this.emitCodePoint=z,this.errors=Y,this.state=qJ.EntityStart,this.consumed=1,this.result=0,this.treeIndex=0,this.excess=1,this.decodeMode=DY.Strict,this.runConsumed=0}startEntity(J){this.decodeMode=J,this.state=qJ.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1,this.runConsumed=0}write(J,z){switch(this.state){case qJ.EntityStart:{if(J.charCodeAt(z)===d1.NUM)return this.state=qJ.NumericStart,this.consumed+=1,this.stateNumericStart(J,z+1);return this.state=qJ.NamedEntity,this.stateNamedEntity(J,z)}case qJ.NumericStart:return this.stateNumericStart(J,z);case qJ.NumericDecimal:return this.stateNumericDecimal(J,z);case qJ.NumericHex:return this.stateNumericHex(J,z);case qJ.NamedEntity:return this.stateNamedEntity(J,z)}}stateNumericStart(J,z){if(z>=J.length)return-1;if((J.charCodeAt(z)|jL)===d1.LOWER_X)return this.state=qJ.NumericHex,this.consumed+=1,this.stateNumericHex(J,z+1);return this.state=qJ.NumericDecimal,this.stateNumericDecimal(J,z)}stateNumericHex(J,z){while(z<J.length){let Y=J.charCodeAt(z);if(B8(Y)||dy(Y)){let Z=Y<=d1.NINE?Y-d1.ZERO:(Y|jL)-d1.LOWER_A+10;this.result=this.result*16+Z,this.consumed++,z++}else return this.emitNumericEntity(Y,3)}return-1}stateNumericDecimal(J,z){while(z<J.length){let Y=J.charCodeAt(z);if(B8(Y))this.result=this.result*10+(Y-d1.ZERO),this.consumed++,z++;else return this.emitNumericEntity(Y,2)}return-1}emitNumericEntity(J,z){var Y;if(this.consumed<=z)return(Y=this.errors)===null||Y===void 0||Y.absenceOfDigitsInNumericCharacterReference(this.consumed),0;if(J===d1.SEMI)this.consumed+=1;else if(this.decodeMode===DY.Strict)return 0;if(this.emitCodePoint(GL(this.result),this.consumed),this.errors){if(J!==d1.SEMI)this.errors.missingSemicolonAfterCharacterReference();this.errors.validateNumericCharacterReference(this.result)}return this.consumed}stateNamedEntity(J,z){let{decodeTree:Y}=this,Z=Y[this.treeIndex],G=(Z&OJ.VALUE_LENGTH)>>14;while(z<J.length){if(G===0&&(Z&OJ.FLAG13)!==0){let Q=(Z&OJ.BRANCH_LENGTH)>>7;if(this.runConsumed===0){let H=Z&OJ.JUMP_TABLE;if(J.charCodeAt(z)!==H)return this.result===0?0:this.emitNotTerminatedNamedEntity();z++,this.excess++,this.runConsumed++}while(this.runConsumed<Q){if(z>=J.length)return-1;let H=this.runConsumed-1,f=Y[this.treeIndex+1+(H>>1)],j=H%2===0?f&255:f>>8&255;if(J.charCodeAt(z)!==j)return this.runConsumed=0,this.result===0?0:this.emitNotTerminatedNamedEntity();z++,this.excess++,this.runConsumed++}this.runConsumed=0,this.treeIndex+=1+(Q>>1),Z=Y[this.treeIndex],G=(Z&OJ.VALUE_LENGTH)>>14}if(z>=J.length)break;let X=J.charCodeAt(z);if(X===d1.SEMI&&G!==0&&(Z&OJ.FLAG13)!==0)return this.emitNamedEntityData(this.treeIndex,G,this.consumed+this.excess);if(this.treeIndex=$y(Y,Z,this.treeIndex+Math.max(1,G),X),this.treeIndex<0)return this.result===0||this.decodeMode===DY.Attribute&&(G===0||iy(X))?0:this.emitNotTerminatedNamedEntity();if(Z=Y[this.treeIndex],G=(Z&OJ.VALUE_LENGTH)>>14,G!==0){if(X===d1.SEMI)return this.emitNamedEntityData(this.treeIndex,G,this.consumed+this.excess);if(this.decodeMode!==DY.Strict&&(Z&OJ.FLAG13)===0)this.result=this.treeIndex,this.consumed+=this.excess,this.excess=0}z++,this.excess++}return-1}emitNotTerminatedNamedEntity(){var J;let{result:z,decodeTree:Y}=this,Z=(Y[z]&OJ.VALUE_LENGTH)>>14;return this.emitNamedEntityData(z,Z,this.consumed),(J=this.errors)===null||J===void 0||J.missingSemicolonAfterCharacterReference(),this.consumed}emitNamedEntityData(J,z,Y){let{decodeTree:Z}=this;if(this.emitCodePoint(z===1?Z[J]&~(OJ.VALUE_LENGTH|OJ.FLAG13):Z[J+1],Y),z===3)this.emitCodePoint(Z[J+2],Y);return Y}end(){var J;switch(this.state){case qJ.NamedEntity:return this.result!==0&&(this.decodeMode!==DY.Attribute||this.result===this.treeIndex)?this.emitNotTerminatedNamedEntity():0;case qJ.NumericDecimal:return this.emitNumericEntity(0,2);case qJ.NumericHex:return this.emitNumericEntity(0,3);case qJ.NumericStart:return(J=this.errors)===null||J===void 0||J.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case qJ.EntityStart:return 0}}}function ly(J){let z="",Y=new W8(J,(Z)=>z+=ZL(Z));return function(G,X){let Q=0,H=0;while((H=G.indexOf("&",H))>=0){z+=G.slice(Q,H),Y.startEntity(X);let j=Y.write(G,H+1);if(j<0){Q=H+Y.end();break}Q=H+j,H=j===0?Q+1:Q}let f=z+G.slice(Q);return z="",f}}function $y(J,z,Y,Z){let G=(z&OJ.BRANCH_LENGTH)>>7,X=z&OJ.JUMP_TABLE;if(G===0)return X!==0&&Z===X?Y:-1;if(X){let j=Z-X;return j<0||j>=G?-1:J[Y+j]-1}let Q=G+1>>1,H=0,f=G-1;while(H<=f){let j=H+f>>>1,V=j>>1,K=J[Y+V]>>(j&1)*8&255;if(K<Z)H=j+1;else if(K>Z)f=j-1;else return J[Y+Q+j]}return-1}function wZ(J,z=DY.Legacy){return ay(J,z)}var d1,jL=32,qJ,DY,ay;var BL=C(()=>{XL();HL();fL();(function(J){J[J.NUM=35]="NUM",J[J.SEMI=59]="SEMI",J[J.EQUALS=61]="EQUALS",J[J.ZERO=48]="ZERO",J[J.NINE=57]="NINE",J[J.LOWER_A=97]="LOWER_A",J[J.LOWER_F=102]="LOWER_F",J[J.LOWER_X=120]="LOWER_X",J[J.LOWER_Z=122]="LOWER_Z",J[J.UPPER_A=65]="UPPER_A",J[J.UPPER_F=70]="UPPER_F",J[J.UPPER_Z=90]="UPPER_Z"})(d1||(d1={}));(function(J){J[J.EntityStart=0]="EntityStart",J[J.NumericStart=1]="NumericStart",J[J.NumericDecimal=2]="NumericDecimal",J[J.NumericHex=3]="NumericHex",J[J.NamedEntity=4]="NamedEntity"})(qJ||(qJ={}));(function(J){J[J.Legacy=0]="Legacy",J[J.Strict=1]="Strict",J[J.Attribute=2]="Attribute"})(DY||(DY={}));ay=ly(qL)});var WL,VL;var UL=C(()=>{BL();(function(J){J[J.XML=0]="XML",J[J.HTML=1]="HTML"})(WL||(WL={}));(function(J){J[J.UTF8=0]="UTF8",J[J.ASCII=1]="ASCII",J[J.Extensive=2]="Extensive",J[J.Attribute=3]="Attribute",J[J.Text=4]="Text"})(VL||(VL={}))});import{CliRenderer as py,createCliRenderer as ry,engine as oy}from"@opentui/core";import{createTestRenderer as Ma}from"@opentui/core/testing";import{ASCIIFontRenderable as sy,BoxRenderable as ty,CodeRenderable as ey,DiffRenderable as JT,InputRenderable as zT,LineNumberRenderable as YT,MarkdownRenderable as ZT,ScrollBoxRenderable as GT,SelectRenderable as XT,TabSelectRenderable as QT,TextareaRenderable as qT,TextAttributes as V8,TextNodeRenderable as HT,TextRenderable as fT}from"@opentui/core";import{engine as Ra,Timeline as ga}from"@opentui/core";import{BaseRenderable as AL,createTextAttributes as BT,InputRenderable as K8,InputRenderableEvents as VQ,isTextNodeRenderable as L8,parseColor as DL,Renderable as WT,RootTextNodeRenderable as VT,ScrollBoxRenderable as KT,SelectRenderable as LL,SelectRenderableEvents as U8,TabSelectRenderable as FL,TabSelectRenderableEvents as D8,TextNodeRenderable as UT,TextRenderable as RL}from"@opentui/core";import{BaseRenderable as NT,isTextNodeRenderable as CT,TextNodeRenderable as kT,TextRenderable as bT,Yoga as OL}from"@opentui/core";import{BoxRenderable as ua,RootRenderable as Ea}from"@opentui/core";import{TimeToFirstDrawRenderable as TT}from"@opentui/core";import{createSlotRegistry as ha}from"@opentui/core";function LT({createElement:J,createTextNode:z,createSlotNode:Y,isTextNode:Z,replaceText:G,insertNode:X,removeNode:Q,setProperty:H,getParentNode:f,getFirstChild:j,getNextSibling:V}){function B(S,g,M,T){if(M!==void 0&&!T)T=[];if(typeof g!=="function")return K(S,g,T,M);wz((d)=>K(S,g(),d,M),T)}function K(S,g,M,T,d){while(typeof M==="function")M=M();if(g===M)return M;let i=typeof g,J0=T!==void 0;if(i==="string"||i==="number"){if(i==="number")g=g.toString();if(J0){let E=M[0];if(E&&Z(E))G(E,g);else E=z(g);M=O(S,M,T,E)}else if(M!==""&&typeof M==="string")G(j(S),M=g);else O(S,M,T,z(g)),M=g}else if(g==null||i==="boolean")M=O(S,M,T);else if(i==="function")return wz(()=>{let E=g();while(typeof E==="function")E=E();M=K(S,E,M,T)}),()=>M;else if(Array.isArray(g)){let E=[];if(L(E,g,d))return wz(()=>M=K(S,E,M,T,!0)),()=>M;if(E.length===0){let z0=O(S,M,T);if(J0)return M=z0}else if(Array.isArray(M))if(M.length===0)R(S,E,T);else A(S,M,E);else if(M==null||M==="")R(S,E);else A(S,J0&&M||[j(S)],E);M=E}else{if(Array.isArray(M)){if(J0)return M=O(S,M,T,g);O(S,M,null,g)}else if(M==null||M===""||!j(S))X(S,g);else u(S,g,j(S));M=g}return M}function L(S,g,M){let T=!1;for(let d=0,i=g.length;d<i;d++){let J0=g[d],E;if(J0==null||J0===!0||J0===!1);else if(Array.isArray(J0))T=L(S,J0)||T;else if((E=typeof J0)==="string"||E==="number")S.push(z(J0));else if(E==="function")if(M){while(typeof J0==="function")J0=J0();T=L(S,Array.isArray(J0)?J0:[J0])||T}else S.push(J0),T=!0;else S.push(J0)}return T}function A(S,g,M){let T=M.length,d=g.length,i=T,J0=0,E=0,z0=V(g[d-1]),q0=null;while(J0<d||E<i){if(g[J0]===M[E]){J0++,E++;continue}while(g[d-1]===M[i-1])d--,i--;if(d===J0){let o=i<T?E?V(M[E-1]):M[i-E]:z0;while(E<i)X(S,M[E++],o)}else if(i===E)while(J0<d){if(!q0||!q0.has(g[J0]))Q(S,g[J0]);J0++}else if(g[J0]===M[i-1]&&M[E]===g[d-1]){let o=V(g[--d]);X(S,M[E++],V(g[J0++])),X(S,M[--i],o),g[d]=M[i]}else{if(!q0){q0=new Map;let B0=E;while(B0<i)q0.set(M[B0],B0++)}let o=q0.get(g[J0]);if(o!=null)if(E<o&&o<i){let B0=J0,g0=1,m;while(++B0<d&&B0<i){if((m=q0.get(g[B0]))==null||m!==o+g0)break;g0++}if(g0>o-E){let r=g[J0];while(E<o)X(S,M[E++],r)}else u(S,M[E++],g[J0++])}else J0++;else Q(S,g[J0++])}}}function O(S,g,M,T){if(M===void 0){let i;while(i=j(S))Q(S,i);return T&&X(S,T),T??""}let d=T||Y();if(g.length){let i=!1;for(let J0=g.length-1;J0>=0;J0--){let E=g[J0];if(d!==E){let z0=f(E)===S;if(!i&&!J0)z0?u(S,d,E):X(S,d,M);else z0&&Q(S,E)}else i=!0}}else X(S,d,M);return[d]}function R(S,g,M){for(let T=0,d=g.length;T<d;T++)X(S,g[T],M)}function u(S,g,M){X(S,g,M),Q(S,M)}function P(S,g,M={},T){if(g||(g={}),!T)wz(()=>M.children=K(S,g.children,M.children));return wz(()=>g.ref&&g.ref(S)),wz(()=>{for(let d in g){if(d==="children"||d==="ref")continue;let i=g[d];if(i===M[d])continue;H(S,d,i,M[d]),M[d]=i}}),M}return{render(S,g){let M;return BZ((T)=>{M=T,B(g,S())}),M},insert:B,spread(S,g,M){if(typeof g==="function")wz((T)=>P(S,g(),T,M));else P(S,g,void 0,M)},createElement:J,createTextNode:z,insertNode:X,setProp(S,g,M,T){return H(S,g,M,T),M},mergeProps:uq,effect:wz,memo:DT,createComponent:XK,use(S,g,M){return t1(()=>S(g,M))}}}function FT(J){let z=LT(J);return z.mergeProps=uq,z}function R8(J){if(!qf.has(J))qf.set(J,0);let z=qf.get(J)+1;return qf.set(J,z),`${J}-${z}`}function MT(J,z,Y){if(HJ("Inserting node:",YJ(z),"into parent:",YJ(J),"with anchor:",YJ(Y),z instanceof nG),z instanceof KQ)z.parent=J,z=z.getSlotChild(J);if(Y&&Y instanceof KQ)Y=Y.getSlotChild(J);if(L8(z)){if(!(J instanceof RL)&&!L8(J))throw Error(`Orphan text error: "${z.toChunks().map((X)=>X.text).join("")}" must have a <text> as a parent: ${J.id} above ${z.id}`)}if(!(J instanceof AL))throw console.error("[INSERT]","Tried to mount a non base renderable"),Error("Tried to mount a non base renderable");if(!Y){J.add(z);return}let Z=F8(J),G=Z.findIndex((X)=>X.id===Y.id);if(G===-1)HJ("[INSERT]","Could not find anchor",YJ(J),YJ(Y),"[children]",...Z.map((X)=>X.id));J.add(z,G)}function OT(J,z){if(HJ("Removing node:",YJ(z),"from parent:",YJ(J)),z instanceof KQ)z.parent=null,z=z.getSlotChild(J);J.remove(z.id),process.nextTick(()=>{if(z instanceof AL&&!z.parent){z.destroyRecursively();return}})}function AT(J){HJ("Creating text node:",J);let z=R8("text-node");if(typeof J==="number")J=J.toString();return nG.fromString(wZ(J),{id:z})}function RT(){let J=R8("slot-node");return HJ("Creating slot node",J),new KQ(J)}function ML(J){HJ("Getting parent of node:",YJ(J));let z=J.parent??void 0;if(z instanceof VT)z=z.textParent??void 0;let Y=z?.parent?.parent?.parent;if(Y instanceof KT&&Y.content===z)z=Y;return z}function IT(J){Object.assign(IL,J)}function yT(){return IL}var A8,WJ=()=>{let J=mJ(A8);if(!J)throw Error("No renderer found");return J},jT=(J)=>{let z=WJ();QJ(()=>{z.on("resize",J)}),T1(()=>{z.off("resize",J)})},az=()=>{let J=WJ(),[z,Y]=p({width:J.width,height:J.height});return jT((G,X)=>{Y({width:G,height:X})}),z},DT=(J)=>U0(()=>J()),qf,HJ=(...J)=>{if(process.env.DEBUG)console.log("[Reconciler]",...J)},nG,YJ=(J)=>{if(!J)return;return J.id},F8=(J)=>{let z;if(J instanceof RL)z=J.getTextChildren();else z=J.getChildren();return z},gT,y,N0,b,W,T0,D,U,ya,q,gL,qz,g8,NL,CL,KQ,UQ,Hf,M8,O8,kL,bL,SL,ST,IL,xT=(J,z)=>{let Y,Z=!1,G=!1,X=!0,Q=!1,H=J.destroy.bind(J),f=()=>{if(G)return;if(!Y){Z=!0;return}G=!0,Y()};J.once("destroy",f),J.destroy=()=>{if(X){Q=!0;return}H()};try{Y=gT(()=>b(A8.Provider,{get value(){return J},get children(){return b(z,{})}}),J.root)}finally{X=!1,J.destroy=H}if(Z)f();if(Q)H()},yL=async(J,z={})=>{let Y=z instanceof py?z:await ry({...z,onDestroy:()=>{z.onDestroy?.()}});oy.attach(Y),xT(Y,J)};var w=C(()=>{W1();UL();W1();W1();W1();A8=Pz();qf=new Map;nG=class nG extends UT{static fromString(J,z={}){let Y=new nG(z);return Y.add(J),Y}};({render:gT,effect:y,memo:N0,createComponent:b,createElement:W,createTextNode:T0,insertNode:D,insert:U,spread:ya,setProp:q,mergeProps:gL,use:qz}=FT({createElement(J){HJ("Creating element:",J);let z=R8(J),Y=mJ(A8);if(!Y)throw Error("No renderer found");let Z=yT();if(!Z[J])throw Error(`[Reconciler] Unknown component type: ${J}`);let G=new Z[J](Y,{id:z});return HJ("Element created with id:",z),G},createTextNode:AT,createSlotNode:RT,replaceText(J,z){if(HJ("Replacing text:",z,"in node:",YJ(J)),!(J instanceof nG))return;J.replace(wZ(z),0)},setProperty(J,z,Y,Z){if(z.startsWith("on:")){let G=z.slice(3);if(Y)J.on(G,Y);if(Z)J.off(G,Z);return}if(L8(J)){if(z==="href"){J.link={url:Y};return}if(z==="style"){J.attributes|=BT(Y),J.fg=Y.fg?DL(Y.fg):J.fg,J.bg=Y.bg?DL(Y.bg):J.bg;return}return}switch(z){case"id":HJ("Id mapped",J.id,"=",Y),J[z]=Y;break;case"focused":if(!(J instanceof WT))return;if(Y)J.focus();else J.blur();break;case"onChange":let G=void 0;if(J instanceof LL)G=U8.SELECTION_CHANGED;else if(J instanceof FL)G=D8.SELECTION_CHANGED;else if(J instanceof K8)G=VQ.CHANGE;if(!G)break;if(Y)J.on(G,Y);if(Z)J.off(G,Z);break;case"onInput":if(J instanceof K8){if(Y)J.on(VQ.INPUT,Y);if(Z)J.off(VQ.INPUT,Z)}break;case"onSubmit":if(J instanceof K8){if(Y)J.on(VQ.ENTER,Y);if(Z)J.off(VQ.ENTER,Z)}else J[z]=Y;break;case"onSelect":if(J instanceof LL){if(Y)J.on(U8.ITEM_SELECTED,Y);if(Z)J.off(U8.ITEM_SELECTED,Z)}else if(J instanceof FL){if(Y)J.on(D8.ITEM_SELECTED,Y);if(Z)J.off(D8.ITEM_SELECTED,Z)}break;case"style":for(let X in Y){let Q=Y[X];if(Z!==void 0&&Q===Z[X])continue;J[X]=Q}break;case"text":case"content":{let X=typeof Y==="string"?Y:Array.isArray(Y)?Y.join(""):`${Y}`;J[z]=wZ(X);break}default:J[z]=Y}},isTextNode(J){return J instanceof nG},insertNode:MT,removeNode:OT,getParentNode:ML,getFirstChild(J){HJ("Getting first child of node:",YJ(J));let z=F8(J)[0];if(!z){HJ("No first child found for node:",YJ(J));return}return HJ("First child found:",YJ(z),"for node:",YJ(J)),z},getNextSibling(J){HJ("Getting next sibling of node:",YJ(J));let z=ML(J);if(!z){HJ("No parent found for node:",YJ(J));return}let Y=F8(z),Z=Y.indexOf(J);if(Z===-1||Z===Y.length-1){HJ("No next sibling found for node:",YJ(J));return}let G=Y[Z+1];if(!G){HJ("Next sibling is null for node:",YJ(J));return}return HJ("Next sibling found:",YJ(G),"for node:",YJ(J)),G}}));g8=class g8 extends NT{constructor(J){super({id:J})}add(J,z){throw Error("Can't add children on an Slot renderable")}getChildren(){return[]}remove(J){}insertBefore(J,z){throw Error("Can't add children on an Slot renderable")}getRenderable(J){return}getChildrenCount(){return 0}requestRender(){}findDescendantById(J){return}};NL=class NL extends kT{slotParent;destroyed=!1;constructor(J,z){super({id:J});this._visible=!1,this.slotParent=z}destroy(){if(this.destroyed)return;this.destroyed=!0,this.slotParent?.destroy(),super.destroy()}};CL=class CL extends g8{yogaNode;slotParent;destroyed=!1;constructor(J,z){super(J);this._visible=!1,this.slotParent=z,this.yogaNode=OL.default.Node.create(),this.yogaNode.setDisplay(OL.Display.None)}getLayoutNode(){return this.yogaNode}updateFromLayout(){}updateLayout(){}onRemove(){}destroy(){if(this.destroyed)return;this.destroyed=!0,super.destroy(),this.slotParent?.destroy()}};KQ=class KQ extends g8{layoutNode;textNode;destroyed=!1;constructor(J){super(J);this._visible=!1}getSlotChild(J){if(CT(J)||J instanceof bT){if(!this.textNode)this.textNode=new NL(`slot-text-${this.id}`,this);return this.textNode}if(!this.layoutNode)this.layoutNode=new CL(`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()}};UQ=class UQ extends HT{_ctx;constructor(J,z){super(z);this._ctx=J}};Hf=class Hf extends UQ{constructor(J,z){super(null,J);if(z==="b"||z==="strong")this.attributes=(this.attributes||0)|V8.BOLD;else if(z==="i"||z==="em")this.attributes=(this.attributes||0)|V8.ITALIC;else if(z==="u")this.attributes=(this.attributes||0)|V8.UNDERLINE}};M8=class M8 extends Hf{constructor(J){super(J,"b")}};O8=class O8 extends Hf{constructor(J){super(J,"i")}};kL=class kL extends Hf{constructor(J){super(J,"u")}};bL=class bL extends UQ{constructor(J,z){super(null,z);this.add()}add(){return super.add(`
261
+ `)}};SL=class SL extends UQ{constructor(J,z){let Y={...z,link:{url:z.href}};super(null,Y)}};ST={box:ty,text:fT,input:zT,select:XT,textarea:qT,ascii_font:sy,tab_select:QT,scrollbox:GT,code:ey,diff:JT,line_number:YT,markdown:ZT,span:UQ,strong:M8,b:M8,em:O8,i:O8,u:kL,br:bL,a:SL},IL={...ST};IT({time_to_first_draw:TT})});function LY(J){if(J===void 0)return"undefined";if(J===null)return"null";let z=Array.isArray(J)?"array":typeof J,Y;try{Y=typeof J==="string"?J:JSON.stringify(J)}catch{Y=String(J)}if(Y.length>120)Y=`${Y.slice(0,120)}\u2026`;return`${z}:${Y}`}function uT(J){let z=J?.changes;if(!z||typeof z!=="object"||Array.isArray(z))return null;let Y=new Map;for(let[Z,G]of Object.entries(z)){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 ET(J){let z=J;if(typeof z?.theme!=="string")return null;return{theme:z.theme,transparentBackground:z.transparentBackground===!0,focusAccent:typeof z.focusAccent==="string"?z.focusAccent:null,locale:typeof z.locale==="string"?z.locale:"",sortMode:z.sortMode==="recent"?"recent":"default",keysCollapsed:z.keysCollapsed===!0,projectFilter:typeof z.projectFilter==="string"&&z.projectFilter.length>0?z.projectFilter:null}}function wT(J,z){if(J.size!==z.size)return!1;for(let[Y,Z]of J){let G=z.get(Y);if(!G||!$z(Z,G))return!1}return!0}function PT(J){let z=J?.activity;if(!z||typeof z!=="object"||Array.isArray(z))return null;let Y=new Map;for(let[Z,G]of Object.entries(z)){let X=G;if(typeof X?.mtimeMs!=="number"||typeof X.completionAt!=="number")return null;if(X.completionId!==null&&typeof X.completionId!=="string")return null;Y.set(Z,{mtimeMs:X.mtimeMs,completionId:X.completionId,completionAt:X.completionAt})}return Y}function hT(J,z){if(J.size!==z.size)return!1;for(let[Y,Z]of J){let G=z.get(Y);if(!G||G.mtimeMs!==Z.mtimeMs||G.completionId!==Z.completionId||G.completionAt!==Z.completionAt)return!1}return!0}class AJ{client;tasksAcc;setTasks;activeTaskAcc;setActiveTaskSig;updateAcc;setUpdateSig;daemonVersionAcc;setDaemonVersionSig;engineStateAcc;setEngineStateSig;taskJobsAcc;setTaskJobsSig;worktreeChangesAcc;setWorktreeChangesSig;transcriptActivityAcc;setTranscriptActivitySig;uiPrefsAcc;setUiPrefsSig;keybindingsRevAcc;setKeybindingsRevSig;connectionStateAcc;setConnectionState;ensureReachable;role;channels;subscribesTasks;reconnecting=!1;constructor(J,z={}){this.client=J;let[Y,Z]=p([]),[G,X]=p(null),[Q,H]=p(null),[f,j]=p(null),[V,B]=p(new Map),[K,L]=p(new Map),[A,O]=p(null),[R,u]=p(null),[P,S]=p(null),[g,M]=p(null),[T,d]=p("online");this.tasksAcc=Y,this.setTasks=(i)=>Z(()=>i),this.activeTaskAcc=G,this.setActiveTaskSig=(i)=>X(()=>i),this.updateAcc=Q,this.setUpdateSig=(i)=>H(()=>i),this.daemonVersionAcc=f,this.setDaemonVersionSig=(i)=>j(()=>i),this.engineStateAcc=V,this.setEngineStateSig=(i)=>B(()=>i),this.taskJobsAcc=K,this.setTaskJobsSig=(i)=>L(()=>i),this.worktreeChangesAcc=A,this.setWorktreeChangesSig=(i)=>O(()=>i),this.transcriptActivityAcc=R,this.setTranscriptActivitySig=(i)=>u(()=>i),this.uiPrefsAcc=P,this.setUiPrefsSig=(i)=>S(()=>i),this.keybindingsRevAcc=g,this.setKeybindingsRevSig=(i)=>M(()=>i),this.connectionStateAcc=T,this.setConnectionState=(i)=>d(()=>i),this.ensureReachable=z.ensureReachable??wG,this.role=z.role??"pane",this.channels=z.channels,this.subscribesTasks=!z.channels||z.channels.includes("task.snapshot"),this.client.on("*",(i)=>this.handleEvent(i.name,i.payload)),this.client.onLifecycle("close",()=>{if(this.setConnectionState("disconnected"),this.role==="pane")ZY("orch","daemon socket closed \u2014 starting non-spawning reconnect loop"),this.reconnectLoop()})}async reconnectLoop(){if(this.reconnecting)return;this.reconnecting=!0;let J=500,z=0;while(!this.client.isDisposed){if(await new Promise((Y)=>setTimeout(Y,J)),this.client.isDisposed)break;z++;try{await this.init(),ZY("orch",`reconnected and re-subscribed after ${z} attempt(s) \u2014 task list re-synced`),this.reconnecting=!1;return}catch(Y){if(z===1||z%10===0)JJ("orch-reconnect",Y);J=Math.min(J*2,3000)}}this.reconnecting=!1}async init(){let J=await this.client.request("hello",{protocolVersion:sJ,minProtocolVersion:NY}),z=typeof J.protocolVersion==="number"?J.protocolVersion:sJ,Y=typeof J.minProtocolVersion==="number"?J.minProtocolVersion:z;if(!_Q({localVersion:sJ,localMin:NY,remoteVersion:z,remoteMin:Y}))throw Error(`kobe daemon is protocol v${z} (min v${Y}); this client is v${sJ} (min v${NY}). Restart the daemon (\`kobe daemon restart\`) or upgrade kobe.`);if(this.setDaemonVersionSig(typeof J.kobeVersion==="string"?J.kobeVersion:null),J.tasks&&this.subscribesTasks)this.setTasks(J.tasks.map(DQ));if(await this.client.subscribe({role:this.role,channels:this.channels}),J.capabilities?.includes("worktree.changes")){if(this.worktreeChangesAcc()===null)this.setWorktreeChangesSig(new Map)}else this.setWorktreeChangesSig(null);if(J.capabilities?.includes("transcript.activity")){if(this.transcriptActivityAcc()===null)this.setTranscriptActivitySig(new Map)}else this.setTranscriptActivitySig(null);this.setConnectionState("online"),ZY("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()=>RV(this.daemonVersionAcc()??void 0,J1)}engineStateSignal(){return this.engineStateAcc}taskJobsSignal(){return this.taskJobsAcc}worktreeChangesSignal(){return this.worktreeChangesAcc}transcriptActivitySignal(){return this.transcriptActivityAcc}uiPrefsSignal(){return this.uiPrefsAcc}keybindingsRevSignal(){return this.keybindingsRevAcc}listTasks(){return this.tasksAcc()}getTask(J){return this.tasksAcc().find((z)=>z.id===J)}subscribeTasks(J){try{J(this.listTasks())}catch(Y){console.error("[kobe RemoteOrchestrator] task listener threw on subscribe:",Y)}let z=!0;return BZ((Y)=>{return _0(()=>{let Z=this.tasksAcc();if(z){z=!1;return}try{J(Z)}catch(G){console.error("[kobe RemoteOrchestrator] task listener threw:",G)}}),Y})}async createTask(J){let{modelEffort:z,...Y}=J,Z=await this.client.request("task.create",{...Y,effort:z});return DQ(Z.task)}async ensureMainTask(J){let z=await this.client.request("task.ensureMain",{repo:J});return DQ(z.task)}async ensureWorktree(J){return(await this.client.request("task.ensureWorktree",{taskId:String(J)})).worktreePath}async forgetProject(J){await this.client.request("project.forget",{repo:J})}async setTitle(J,z){await this.client.request("task.rename",{taskId:String(J),title:z})}async setBranch(J,z){await this.client.request("task.setBranch",{taskId:String(J),branch:z})}async setVendor(J,z){await this.client.request("task.setVendor",{taskId:String(J),vendor:z})}async setPinned(J,z){await this.client.request("task.pin",{taskId:String(J),pinned:z})}async moveTask(J,z){await this.client.request("task.move",{taskId:String(J),direction:z<0?"up":"down"})}async setArchived(J,z){await this.client.request("task.archive",{taskId:String(J),archived:z})}async setStatus(J,z){await this.client.request("task.status",{taskId:String(J),status:z})}async deleteTask(J,z){await this.client.request("task.delete",{taskId:String(J),force:z?.force})}async discoverAdoptableWorktrees(J){return(await this.client.request("worktree.discoverAdoptable",{repo:J})).worktrees}async adoptWorktree(J){let z=await this.client.request("worktree.adopt",J);return DQ(z.task)}async setActiveTask(J){await this.client.request("task.setActive",{taskId:J===null?null:String(J)})}handleEvent(J,z){if(J==="task.snapshot"){let Y=z?.tasks;if(Array.isArray(Y))this.setTasks(Y.map(DQ)),this.pruneEngineState(Y),this.pruneTaskJobs(Y);else JJ("orch",`dropped task.snapshot event: tasks is not an array (got ${LY(Y)})`);return}if(J==="active-task"){let Y=z?.taskId;this.setActiveTaskSig(typeof Y==="string"?Y:null);return}if(J==="update"){let Y=z?.info;this.setUpdateSig(Y??null);return}if(J==="engine-state"){let Y=z;if(typeof Y?.taskId!=="string"||typeof Y.state!=="string"){JJ("orch",`dropped engine-state event: taskId/state must be strings (taskId=${LY(Y?.taskId)}, state=${LY(Y?.state)})`);return}let Z=new Map(this.engineStateAcc());if(Y.state==="idle")Z.delete(Y.taskId);else Z.set(Y.taskId,{state:Y.state,detail:Y.detail,at:typeof Y.at==="number"?Y.at:0});this.setEngineStateSig(Z);return}if(J==="task.jobs"){let Y=z;if(typeof Y?.taskId!=="string"||Y.kind!=="ensureWorktree"){JJ("orch",`dropped task.jobs event: expected string taskId + kind "ensureWorktree" (taskId=${LY(Y?.taskId)}, kind=${LY(Y?.kind)})`);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(J==="worktree.changes"){let Y=uT(z);if(!Y){JJ("orch",`dropped worktree.changes event: malformed changes payload (${LY(z)})`);return}let Z=this.worktreeChangesAcc();if(Z&&wT(Z,Y))return;this.setWorktreeChangesSig(Y);return}if(J==="transcript.activity"){let Y=PT(z);if(!Y){JJ("orch",`dropped transcript.activity event: malformed activity payload (${LY(z)})`);return}let Z=this.transcriptActivityAcc();if(Z&&hT(Z,Y))return;this.setTranscriptActivitySig(Y);return}if(J==="ui-prefs"){let Y=ET(z);if(!Y){let Z=z?.theme;JJ("orch",`dropped ui-prefs event: theme must be a string (got ${LY(Z)})`);return}this.setUiPrefsSig(Y);return}if(J==="keybindings"){let Y=z;if(typeof Y?.rev!=="number"){JJ("orch",`dropped keybindings event: rev must be a number (got ${LY(Y?.rev)})`);return}this.setKeybindingsRevSig(Y.rev);return}}pruneEngineState(J){let z=this.engineStateAcc();if(z.size===0)return;let Y=new Set(J.map((G)=>G.id)),Z=null;for(let G of z.keys()){if(Y.has(G))continue;if(!Z)Z=new Map(z);Z.delete(G)}if(Z)this.setEngineStateSig(Z)}pruneTaskJobs(J){let z=this.taskJobsAcc();if(z.size===0)return;let Y=new Set(J.map((G)=>G.id)),Z=null;for(let G of z.keys()){if(Y.has(G))continue;if(!Z)Z=new Map(z);Z.delete(G)}if(Z)this.setTaskJobsSig(Z)}}function DQ(J){return{id:FX(J.id),title:J.title,repo:J.repo,branch:J.branch,worktreePath:J.worktreePath,kind:J.kind,status:J.status,archived:J.archived,pinned:J.pinned,vendor:J.vendor,prStatus:J.prStatus,modelEffort:J.modelEffort,createdAt:J.createdAt,updatedAt:J.updatedAt}}var _Y=C(()=>{GZ();CJ();YZ();W1();xG();zz();NJ()});function uL(J){let z=J[Fz];if(!z){if(Object.defineProperty(J,Fz,{value:z=new Proxy(J,cT)}),!Array.isArray(J)){let Y=Object.keys(J),Z=Object.getOwnPropertyDescriptors(J),G=Object.getPrototypeOf(J),X=G!==null&&J!==null&&typeof J==="object"&&!Array.isArray(J)&&G!==Object.prototype;if(X){let Q=Object.getOwnPropertyDescriptors(G);Y.push(...Object.keys(Q)),Object.assign(Z,Q)}for(let Q=0,H=Y.length;Q<H;Q++){let f=Y[Q];if(X&&f==="constructor")continue;if(Z[f].get)Object.defineProperty(J,f,{configurable:!0,enumerable:Z[f].enumerable,get:Z[f].get.bind(z)})}}}return z}function ff(J){let z;return J!=null&&typeof J==="object"&&(J[Fz]||!(z=Object.getPrototypeOf(J))||z===Object.prototype||Array.isArray(J))}function FQ(J,z=new Set){let Y,Z,G,X;if(Y=J!=null&&J[N8])return Y;if(!ff(J)||z.has(J))return J;if(Array.isArray(J)){if(Object.isFrozen(J))J=J.slice(0);else z.add(J);for(let Q=0,H=J.length;Q<H;Q++)if(G=J[Q],(Z=FQ(G,z))!==G)J[Q]=Z}else{if(Object.isFrozen(J))J=Object.assign({},J);else z.add(J);let Q=Object.keys(J),H=Object.getOwnPropertyDescriptors(J);for(let f=0,j=Q.length;f<j;f++){if(X=Q[f],H[X].get)continue;if(G=J[X],(Z=FQ(G,z))!==G)J[X]=Z}}return J}function jf(J,z){let Y=J[z];if(!Y)Object.defineProperty(J,z,{value:Y=Object.create(null)});return Y}function MQ(J,z,Y){if(J[z])return J[z];let[Z,G]=p(Y,{equals:!1,internal:!0});return Z.$=G,J[z]=Z}function vT(J,z){let Y=Reflect.getOwnPropertyDescriptor(J,z);if(!Y||Y.get||!Y.configurable||z===Fz||z===iG)return Y;return delete Y.value,delete Y.writable,Y.get=()=>J[Fz][z],Y}function EL(J){xq()&&MQ(jf(J,iG),xL)()}function mT(J){return EL(J),Reflect.ownKeys(J)}function Bf(J,z,Y,Z=!1){if(z==="__proto__"){console.warn('Refusing to set "__proto__" on a store.');return}if(!Z&&J[z]===Y)return;let G=J[z],X=J.length;if(TL.onStoreNodeUpdate&&TL.onStoreNodeUpdate(J,z,Y,G),Y===void 0){if(delete J[z],J[FY]&&J[FY][z]&&G!==void 0)J[FY][z].$()}else if(J[z]=Y,J[FY]&&J[FY][z]&&G===void 0)J[FY][z].$();let Q=jf(J,iG),H;if(H=MQ(Q,z,G))H.$(()=>Y);if(Array.isArray(J)&&J.length!==X){for(let f=J.length;f<X;f++)(H=Q[f])&&H.$();(H=MQ(Q,"length",X))&&H.$(J.length)}(H=Q[xL])&&H.$()}function wL(J,z){let Y=Object.keys(z);for(let Z=0;Z<Y.length;Z+=1){let G=Y[Z];if(PL(G))continue;Bf(J,G,z[G])}}function PL(J){return J==="__proto__"||J==="constructor"||J==="prototype"}function dT(J,z){if(typeof z==="function")z=z(J);if(z=FQ(z),Array.isArray(z)){if(J===z)return;let Y=0,Z=z.length;for(;Y<Z;Y++){let G=z[Y];if(J[Y]!==G)Bf(J,Y,G)}Bf(J,"length",Z)}else wL(J,z)}function LQ(J,z,Y=[]){let Z,G=J;if(z.length>1){Z=z.shift();let Q=typeof Z,H=Array.isArray(J);if(Q==="string"&&(Z==="__proto__"||z.length>1&&PL(Z))){console.warn(`Refusing to traverse unsafe key "${Z}" on a store.`);return}if(Array.isArray(Z)){for(let f=0;f<Z.length;f++)LQ(J,[Z[f]].concat(z),Y);return}else if(H&&Q==="function"){for(let f=0;f<J.length;f++)if(Z(J[f],f))LQ(J,[f].concat(z),Y);return}else if(H&&Q==="object"){let{from:f=0,to:j=J.length-1,by:V=1}=Z;for(let B=f;B<=j;B+=V)LQ(J,[B].concat(z),Y);return}else if(z.length>1){LQ(J[Z],z,[Z].concat(Y));return}G=J[Z],Y=[Z].concat(Y)}let X=z[0];if(typeof X==="function"){if(X=X(G,Y),X===G)return}if(Z===void 0&&X==null)return;if(X=FQ(X),Z===void 0||ff(G)&&ff(X)&&!Array.isArray(X))wL(G,X);else Bf(J,Z,X)}function _z(...[J,z]){let Y=FQ(J||{}),Z=Array.isArray(Y);if(typeof Y!=="object"&&typeof Y!=="function")throw Error(`Unexpected type ${typeof Y} received when initializing 'createStore'. Expected an object.`);let G=uL(Y);qK.registerGraph({value:Y,name:z&&z.name});function X(...Q){Tq(()=>{Z&&Q.length===1?dT(Y,Q[0]):LQ(Y,Q)})}return[G,X]}var N8,iG,FY,xL,TL,cT,pa;var lG=C(()=>{W1();N8=Symbol("store-raw"),iG=Symbol("store-node"),FY=Symbol("store-has"),xL=Symbol("store-self"),TL={onStoreNodeUpdate:null};cT={get(J,z,Y){if(z===N8)return J;if(z===Fz)return Y;if(z===Iq)return EL(J),Y;let Z=jf(J,iG),G=Z[z],X=G?G():J[z];if(z===iG||z===FY||z==="__proto__")return X;if(!G){let Q=Object.getOwnPropertyDescriptor(J,z);if(xq()&&(typeof X!=="function"||J.hasOwnProperty(z))&&!(Q&&Q.get))X=MQ(Z,z,X)()}return ff(X)?uL(X):X},has(J,z){if(z===N8||z===Fz||z===Iq||z===iG||z===FY||z==="__proto__")return!0;return xq()&&MQ(jf(J,FY),z)(),z in J},set(){return console.warn("Cannot mutate a Store directly"),!0},deleteProperty(){return console.warn("Cannot mutate a Store directly"),!0},ownKeys:mT,getOwnPropertyDescriptor:vT};pa=Symbol("store-root")});function Wf(J){let z=Pz();return{provider:(Y)=>{let Z=J.init(Y);return b(Y0,{get when(){return Z.ready===void 0||Z.ready===!0},get children(){return b(z.Provider,{value:Z,get children(){return Y.children}})}})},use(){let Y=mJ(z);if(!Y)throw Error(`${J.name} context must be used within a context provider`);return Y}}}var C8=C(()=>{w();w();W1()});import{RGBA as PZ}from"@opentui/core";function iT(){return Object.keys(VJ.themes)}function OQ(J){return Boolean(VJ.themes[J])}function b8(J,z){if(!J)return!1;if(!z||typeof z!=="object"||!z.theme)return!1;return hZ("themes",{...VJ.themes,[J]:z}),!0}function k8(J,z="dark"){let Y=J.defs??{};function Z(f,j=[]){if(typeof f==="string"){if(f==="transparent"||f==="none")return PZ.fromInts(0,0,0,0);if(f.startsWith("#"))return PZ.fromHex(f);if(j.includes(f))return PZ.fromInts(0,0,0);let V=Y[f]??J.theme[f];if(V===void 0)return PZ.fromInts(0,0,0);return Z(V,[...j,f])}return Z(f[z],j)}let G={};for(let[f,j]of Object.entries(J.theme))G[f]=Z(j);let X=G.text??PZ.fromHex("#ffffff"),Q=G.background??PZ.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 nT,vZ,VJ,hZ,w0,hL;var h1=C(()=>{w();W1();lG();C8();oq();sq();tq();eq();JH();zH();YH();nT={claude:VG,conductor:KG,nord:DG,opencode:LG,dracula:UG,tokyonight:MG,"osaka-jade":FG},vZ=["primary","success","info"],[VJ,hZ]=_z({themes:{...nT},active:"claude",mode:"dark",transparentBackground:!1,focusAccent:"primary"});({use:w0,provider:hL}=Wf({name:"Theme",init:(J)=>{if(J.mode)hZ("mode",J.mode);if(J.theme&&OQ(J.theme))hZ("active",J.theme);let z=WJ(),Y=U0(()=>{let G=VJ.themes[VJ.active];if(G)return k8(G,VJ.mode);let X=VJ.themes.claude??VJ.themes.opencode??Object.values(VJ.themes)[0];if(!X)return k8({theme:{background:"#000000",text:"#ffffff"}},VJ.mode);return k8(X,VJ.mode)}),Z=U0(()=>{let G=Y(),X=G[VJ.focusAccent]??G.primary,Q={...G,focusAccent:X};if(!VJ.transparentBackground)return Q;let H=PZ.fromInts(0,0,0,0);return{...Q,background:H,backgroundPanel:H}});return _0(()=>{z?.setBackgroundColor(Z().background)}),{theme:new Proxy({},{get(G,X){let Q=Z();return Q[X]??Q.text}}),get selected(){return VJ.active},get transparentBackground(){return VJ.transparentBackground},get focusAccent(){return VJ.focusAccent},mode(){return VJ.mode},set(G){if(!OQ(G))return!1;return hZ("active",G),!0},setMode(G){hZ("mode",G)},setTransparentBackground(G){hZ("transparentBackground",G)},setFocusAccent(G){hZ("focusAccent",G)},all(){return iT()},has(G){return OQ(G)}}}}))});var vL,mL;var cL=C(()=>{vL={cancel:"Cancel",confirm:"Confirm",paneCrash:{title:"This pane crashed",hint:"Reload it from the Tasks pane (the error was logged to client.log)."},rename:{defaultTitle:"Rename task",defaultFieldLabel:"title",footerHint:"enter {submitLabel} \xB7 esc cancel",defaultSubmitLabel:"rename"}},mL={cancel:"\u53D6\u6D88",confirm:"\u786E\u8BA4",paneCrash:{title:"\u6B64\u9762\u677F\u5DF2\u5D29\u6E83",hint:"\u8BF7\u4ECE\u4EFB\u52A1\u9762\u677F\u91CD\u65B0\u52A0\u8F7D\uFF08\u9519\u8BEF\u5DF2\u8BB0\u5F55\u5230 client.log\uFF09\u3002"},rename:{defaultTitle:"\u91CD\u547D\u540D\u4EFB\u52A1",defaultFieldLabel:"\u540D\u79F0",footerHint:"enter {submitLabel} \xB7 esc \u53D6\u6D88",defaultSubmitLabel:"\u91CD\u547D\u540D"}}});var dL,nL;var iL=C(()=>{dL={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"}},nL={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 lL,$L;var aL=C(()=>{lL={title:"kobe \u2014 keybindings",esc:"esc"},$L={title:"kobe \u2014 \u5FEB\u6377\u952E",esc:"esc"}});var _L,pL;var rL=C(()=>{_L={empty:"No engine history for this task.",loading:"loading\u2026",sessionLabel:"Session",archivedTag:"ARCHIVED",hint:"[ ] session \xB7 j/k scroll \xB7 \u23CE expand",hintExpanded:"[ ] session \xB7 j/k scroll \xB7 \u23CE collapse",role:{user:"USER",assistant:"ASSISTANT",system:"SYSTEM"},thinking:"thinking"},pL={empty:"\u6B64\u4EFB\u52A1\u6CA1\u6709\u5F15\u64CE\u5386\u53F2\u8BB0\u5F55\u3002",loading:"\u52A0\u8F7D\u4E2D\u2026",sessionLabel:"\u4F1A\u8BDD",archivedTag:"\u5DF2\u5F52\u6863",hint:"[ ] \u4F1A\u8BDD \xB7 j/k \u6EDA\u52A8 \xB7 \u23CE \u5C55\u5F00",hintExpanded:"[ ] \u4F1A\u8BDD \xB7 j/k \u6EDA\u52A8 \xB7 \u23CE \u6536\u8D77",role:{user:"\u7528\u6237",assistant:"\u52A9\u624B",system:"\u7CFB\u7EDF"},thinking:"\u601D\u8003"}});var oL,sL;var tL=C(()=>{oL={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)"}},sL={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 eL,JF;var zF=C(()=>{eL={title:"New task",tabs:{existing:"For Existing",clone:"For New Repo",adopt:"Adopt Worktree"},field:{engine:"engine",repo:"repo",fromBranch:"from branch",gitUrl:"git url",parentDir:"parent dir",folderName:"folder name",baseBranch:"base branch",adoptFilter:"filter (path glob)"},placeholder:{folderName:"auto from url",adoptFilter:"* \u2014 type e.g. feature-* to narrow"},hint:{engineCycle:"ctrl+e",remembered:"(remembered \u2014 next clone defaults to this dir)",currentDir:"(current dir)",noBranchesFound:"(no local branches found \u2014 typed text will be used as ref)",noMatchBranch:"(no match \u2014 typed text will be used as ref)",scanningWorktrees:"scanning worktrees\u2026",legend:"\u2191\u2193 pick \xB7 tab next field \xB7 \u2190\u2192 switch \xB7 enter done \xB7 esc cancel"},picker:{moreAbove:"\u2191 {count} more",moreBelow:"\u2193 {count} more"},adopt:{repoLine:"repo: {path}",repoNone:"(none)",noUnlinked:"no unlinked worktrees \u2014 every git worktree here is already a task",noMatch:"no worktrees match the filter",hintSelected:"{count} selected \xB7 enter toggles \xB7 ctrl+a all \xB7 Create imports",hintDefault:"enter toggles \xB7 ctrl+a all \xB7 Create imports the highlighted row",summaryAll:"Adopted {count} worktree(s)",summaryPartial:"Adopted {done}/{total} worktrees \u2014 the rest failed (see log)",summaryNone:"Couldn't adopt any worktree: {error}"},clone:{progressFallback:"Cloning\u2026",progressInto:"Cloning into {target}\u2026"},button:{create:"[ Create ]",createFocused:"\u25B8 [ Create ]",cloning:"[ Cloning\u2026 ]"},error:{gitUrlRequired:"git URL is required",gitUrlInvalid:"does not look like a git URL: {url}",folderRequired:"folder name is required",folderHasSeparator:"folder name cannot contain path separators",parentRequired:"parent directory is required",parentNotFound:"parent directory does not exist: {path}",parentNotDir:"not a directory: {path}",targetExists:"target already exists: {path}",cloneFailed:"git clone failed: {error}",noAdoptable:"no adoptable worktrees to import"}},JF={title:"\u65B0\u5EFA\u4EFB\u52A1",tabs:{existing:"\u5DF2\u6709\u4ED3\u5E93",clone:"\u514B\u9686\u65B0\u4ED3\u5E93",adopt:"\u63A5\u7BA1 Worktree"},field:{engine:"\u5F15\u64CE",repo:"\u4ED3\u5E93",fromBranch:"\u57FA\u51C6\u5206\u652F",gitUrl:"git \u5730\u5740",parentDir:"\u7236\u76EE\u5F55",folderName:"\u6587\u4EF6\u5939\u540D",baseBranch:"\u57FA\u51C6\u5206\u652F",adoptFilter:"\u8FC7\u6EE4\uFF08\u8DEF\u5F84 glob\uFF09"},placeholder:{folderName:"\u81EA\u52A8\u4ECE\u5730\u5740\u63A8\u5BFC",adoptFilter:"* \u2014 \u8F93\u5165\u5982 feature-* \u6765\u7F29\u5C0F\u8303\u56F4"},hint:{engineCycle:"ctrl+e",remembered:"\uFF08\u5DF2\u8BB0\u4F4F \u2014 \u4E0B\u6B21\u514B\u9686\u9ED8\u8BA4\u4F7F\u7528\u6B64\u76EE\u5F55\uFF09",currentDir:"\uFF08\u5F53\u524D\u76EE\u5F55\uFF09",noBranchesFound:"\uFF08\u672A\u627E\u5230\u672C\u5730\u5206\u652F \u2014 \u5C06\u76F4\u63A5\u4F7F\u7528\u8F93\u5165\u6587\u672C\u4F5C\u4E3A ref\uFF09",noMatchBranch:"\uFF08\u65E0\u5339\u914D \u2014 \u5C06\u76F4\u63A5\u4F7F\u7528\u8F93\u5165\u6587\u672C\u4F5C\u4E3A ref\uFF09",scanningWorktrees:"\u6B63\u5728\u626B\u63CF worktree\u2026",legend:"\u2191\u2193 \u9009\u62E9 \xB7 tab \u4E0B\u4E00\u5B57\u6BB5 \xB7 \u2190\u2192 \u5207\u6362 \xB7 enter \u786E\u8BA4 \xB7 esc \u53D6\u6D88"},picker:{moreAbove:"\u2191 \u8FD8\u6709 {count} \u9879",moreBelow:"\u2193 \u8FD8\u6709 {count} \u9879"},adopt:{repoLine:"\u4ED3\u5E93\uFF1A{path}",repoNone:"\uFF08\u65E0\uFF09",noUnlinked:"\u6CA1\u6709\u672A\u5173\u8054\u7684 worktree \u2014 \u6B64\u4ED3\u5E93\u6240\u6709 git worktree \u5747\u5DF2\u662F\u4EFB\u52A1",noMatch:"\u6CA1\u6709 worktree \u5339\u914D\u6B64\u8FC7\u6EE4\u6761\u4EF6",hintSelected:"\u5DF2\u9009 {count} \u9879 \xB7 enter \u5207\u6362\u9009\u4E2D \xB7 ctrl+a \u5168\u9009 \xB7 \u521B\u5EFA \u5BFC\u5165",hintDefault:"enter \u5207\u6362\u9009\u4E2D \xB7 ctrl+a \u5168\u9009 \xB7 \u521B\u5EFA \u5C06\u5BFC\u5165\u9AD8\u4EAE\u884C",summaryAll:"\u5DF2\u63A5\u7BA1 {count} \u4E2A worktree",summaryPartial:"\u5DF2\u63A5\u7BA1 {done}/{total} \u4E2A worktree \u2014 \u5176\u4F59\u5931\u8D25\uFF08\u8BE6\u89C1\u65E5\u5FD7\uFF09",summaryNone:"\u6CA1\u6709 worktree \u63A5\u7BA1\u6210\u529F\uFF1A{error}"},clone:{progressFallback:"\u514B\u9686\u4E2D\u2026",progressInto:"\u6B63\u5728\u514B\u9686\u5230 {target}\u2026"},button:{create:"[ \u521B\u5EFA ]",createFocused:"\u25B8 [ \u521B\u5EFA ]",cloning:"[ \u514B\u9686\u4E2D\u2026 ]"},error:{gitUrlRequired:"git \u5730\u5740\u4E0D\u80FD\u4E3A\u7A7A",gitUrlInvalid:"\u4E0D\u50CF\u662F\u6709\u6548\u7684 git \u5730\u5740\uFF1A{url}",folderRequired:"\u6587\u4EF6\u5939\u540D\u4E0D\u80FD\u4E3A\u7A7A",folderHasSeparator:"\u6587\u4EF6\u5939\u540D\u4E0D\u80FD\u5305\u542B\u8DEF\u5F84\u5206\u9694\u7B26",parentRequired:"\u7236\u76EE\u5F55\u4E0D\u80FD\u4E3A\u7A7A",parentNotFound:"\u7236\u76EE\u5F55\u4E0D\u5B58\u5728\uFF1A{path}",parentNotDir:"\u4E0D\u662F\u76EE\u5F55\uFF1A{path}",targetExists:"\u76EE\u6807\u8DEF\u5F84\u5DF2\u5B58\u5728\uFF1A{path}",cloneFailed:"git clone \u5931\u8D25\uFF1A{error}",noAdoptable:"\u6CA1\u6709\u53EF\u63A5\u7BA1\u7684 worktree"}}});var YF,ZF;var GF=C(()=>{YF={badge:{newActivity:"\u25CF new"},preview:{diffVsHead:"diff vs HEAD",file:"file",closeHint:"\xB7 q to close",loading:"loading\u2026"}},ZF={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 XF,QF;var qF=C(()=>{XF={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"},QF={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 HF,fF;var jF=C(()=>{HF={title:"Settings",esc:"esc",nav:{default:"j/k pick \xB7 h/l switch level \xB7 enter activate \xB7 esc close",feedback:"tab next field \xB7 enter sends on Send \xB7 esc close"},sections:{general:"General",engines:"Engines",accounts:"Accounts",keys:"Keybindings",feedback:"Feedback",dev:"Dev"},general:{theme:"Theme",themeHint:"l to enter list \xB7 j/k to highlight \xB7 enter to apply",language:"Language",languageHint:"Display language for kobe's UI. l to enter list \xB7 j/k to highlight \xB7 enter to apply.",transparent:"Transparent background",transparentHint:"Drops the renderer's bg fill so the host terminal shows through. `t` toggles.",on:"[x] on",off:"[ ] off",focusAccent:"Focus accent",focusAccentHint:"Color of focused pane title, \u258C marker, and split borders.",accentPrimary:"Primary (brand accent)",accentSuccess:"Success (legacy green)",accentInfo:"Info (cool blue)",notifications:"Notifications",notificationsHint:"Fired when a background chat tab finishes or pauses on an approval. Toast = bottom-right popup; Sound = terminal bell + chime. Tab-chip unread dot is always on.",toast:"Toast",sound:"Sound",zen:"Zen mode",zenHint:"The `zen` chip (above the file list) and `prefix`+space collapse the ChatTab to the engine pane \u2014 hiding the file and terminal panes. Keep this on to leave the Tasks rail visible so you can always get back out.",zenKeepTasks:"Keep Tasks pane in zen mode",surface:"Settings page",surfaceHint:"Where Settings and the other full dialogs (new task, rename) open. ChatTab = a dedicated full-window page alongside the engine tabs; Task panel = an overlay inside the left Tasks pane. enter to pick.",surfaceChattab:"ChatTab (separate page)",surfaceTaskpanel:"Task panel (in-pane overlay)",editor:"Editor",editorHint:"What `e` opens a file with in the file tree (enter stays the read-only preview). `auto` (default) follows $VISUAL / $EDITOR, else auto-detects nvim / vim / emacs / nano. enter on the row below cycles auto / vim / nvim / nano / emacs / custom; if the editor isn't installed it falls back to the preview.",editorRow:"editor: < {kind} > (enter to change)",editorCustom:"custom: {cmd}",editorCustomUnset:"(unset \u2014 enter to edit)",worktree:"Worktree location",worktreeHint:"Where new task worktrees are created (default `~/.kobe/worktrees`). Each repo keeps its own `<repo>-<hash>` subfolder underneath. Applies to new tasks only \u2014 existing worktrees stay where they are. Remote projects are unaffected. enter to edit; leave blank for the default.",worktreeBase:"worktree base: {path}",worktreeBaseDefault:"(default \u2014 enter to change)",worktreeBaseTitle:"Worktree location (blank = default ~/.kobe/worktrees)",worktreeBaseField:"path"},engines:{title:"Launch command",hint:"The command each engine's task pane runs. Override a built-in when your binary isn't on PATH as `claude` / `codex` (e.g. it's `cl`) or to pass default flags, or add your own engine. \u25CF = default engine for new tasks (also set by Ctrl+Shift+T). enter edit command \xB7 r rename \xB7 x reset/remove \xB7 d set default.",defaultTag:" (default)",customTag:" (custom)",addEngine:"+ Add engine"},accounts:{title:"Accounts",hint:"Read-only view of locally-detected engine accounts. Login flows land here later.",checking:"Checking\u2026",notLoggedIn:"\u25CB Not logged in",loggedIn:"\u25CF Logged in: {email}",apiKeyConfigured:"\u25CF API key configured",chatgptLogin:"\u25CF ChatGPT login: {email}",tokenConfigured:"\u25CF Token configured ({source})",copilotDetected:"\u25CF Copilot login detected"},keybindings:{title:"Keybindings",hint:"Rebind chords by editing the YAML below, then restart kobe (or respawn the pane). Press F1 anywhere for the live keymap with every binding id.",configFile:"Config file",notCreated:" (not created yet)",example:"Example",overridesApplied:"Overrides applied",none:"none",warnings:"Warnings"},feedback:{title:"Feedback",hint:"Sends a GitHub Discussion to the kobe repo through `gh`. Requires `gh auth login`; category defaults to Feedback.",titleLabel:"title",titlePlaceholder:"Short summary",descriptionLabel:"description",descriptionPlaceholder:"What happened? (enter for a new line \xB7 tab to Send)",send:"[enter] Send to GitHub Discussions"},dev:{reset:"Reset UI state",resetHint:"Clears ~/.config/kobe/state.json and ~/.kobe/tasks.json, then quits kobe \u2014 relaunch to start fresh. Working session / Archive lists, pane sizes, theme, model picks all reset. Worktrees on disk and Claude Code session history are not touched.",resetButton:"[enter] Reset",restart:"Restart backend",restartHint:"Stops the kobe daemon and quits this kobe window so the next launch spawns a fresh daemon \u2014 picks up daemon / orchestrator / engine edits without a process kill. Other attached kobe windows will lose their connection too.",restartButton:"[enter] Restart",doctorHint:"Daemon wedged or unresponsive? From a shell, run `kobe doctor` to diagnose, or `kobe reset` to stop the daemon + kill sessions (keeps your tasks). Use `kobe reset --hard` only to also wipe the task index + UI state.",experimental:"Experimental",remoteHint:"Remote projects (SSH): register a project whose git worktrees + engine run on another host over SSH, driven from this local kobe. Unfinished \u2014 file/diff panes still degrade for remote. Enables `kobe add --remote`.",remoteOn:"[x] Remote projects (on)",remoteOff:"[ ] Remote projects (off)",autoStatusHint:"Auto status flow: a backlog task moves to in_progress when its engine starts a turn, and new claude sessions get a system-prompt note telling the agent to set in_review itself when the work is done. Never touches done/canceled.",autoStatusOn:"[x] Auto status flow (on)",autoStatusOff:"[ ] Auto status flow (off)",dispatcherHint:"Field-notes dispatcher: task sessions file one-line gotchas (`kobe api note`), the daemon forwards each to the repo's main session, and that session relays them to the in-flight tasks that benefit (`kobe api dispatch`). Web-hosted sessions receive the relays today.",dispatcherOn:"[x] Field-notes dispatcher (on)",dispatcherOff:"[ ] Field-notes dispatcher (off)",archivedHistoryHint:"Archived history preview (beta): opening an archived task shows a read-only `kobe history` pane (session selector + transcript) in the engine slot instead of relaunching the engine. Its transcript survives worktree removal because the engine store is keyed by the worktree path. Shared with the web dashboard.",archivedHistoryOn:"[x] Archived history preview (on)",archivedHistoryOff:"[ ] Archived history preview (off)"}},fF={title:"\u8BBE\u7F6E",esc:"esc",nav:{default:"j/k \u9009\u62E9 \xB7 h/l \u5207\u6362\u5C42\u7EA7 \xB7 enter \u786E\u8BA4 \xB7 esc \u5173\u95ED",feedback:"tab \u4E0B\u4E00\u9879 \xB7 enter \u5728\u53D1\u9001\u9879\u53D1\u9001 \xB7 esc \u5173\u95ED"},sections:{general:"\u901A\u7528",engines:"\u5F15\u64CE",accounts:"\u8D26\u6237",keys:"\u5FEB\u6377\u952E",feedback:"\u53CD\u9988",dev:"\u5F00\u53D1"},general:{theme:"\u4E3B\u9898",themeHint:"l \u8FDB\u5165\u5217\u8868 \xB7 j/k \u9AD8\u4EAE \xB7 enter \u5E94\u7528",language:"\u8BED\u8A00",languageHint:"kobe \u754C\u9762\u7684\u663E\u793A\u8BED\u8A00\u3002l \u8FDB\u5165\u5217\u8868 \xB7 j/k \u9AD8\u4EAE \xB7 enter \u5E94\u7528\u3002",transparent:"\u900F\u660E\u80CC\u666F",transparentHint:"\u53BB\u6389\u6E32\u67D3\u5668\u7684\u80CC\u666F\u586B\u5145\uFF0C\u8BA9\u5BBF\u4E3B\u7EC8\u7AEF\u900F\u51FA\u6765\u3002\u6309 `t` \u5207\u6362\u3002",on:"[x] \u5F00",off:"[ ] \u5173",focusAccent:"\u805A\u7126\u5F3A\u8C03\u8272",focusAccentHint:"\u805A\u7126\u9762\u677F\u6807\u9898\u3001\u258C \u6807\u8BB0\u548C\u5206\u9694\u8FB9\u6846\u7684\u989C\u8272\u3002",accentPrimary:"\u4E3B\u8272\uFF08\u54C1\u724C\u5F3A\u8C03\u8272\uFF09",accentSuccess:"\u6210\u529F\u8272\uFF08\u4F20\u7EDF\u7EFF\uFF09",accentInfo:"\u4FE1\u606F\u8272\uFF08\u51B7\u84DD\uFF09",notifications:"\u901A\u77E5",notificationsHint:"\u540E\u53F0\u804A\u5929\u9875\u5B8C\u6210\u6216\u5728\u5BA1\u6279\u5904\u6682\u505C\u65F6\u89E6\u53D1\u3002Toast = \u53F3\u4E0B\u89D2\u5F39\u7A97\uFF1BSound = \u7EC8\u7AEF\u54CD\u94C3 + \u63D0\u793A\u97F3\u3002\u6807\u7B7E\u4E0A\u7684\u672A\u8BFB\u5706\u70B9\u59CB\u7EC8\u5F00\u542F\u3002",toast:"Toast \u5F39\u7A97",sound:"\u58F0\u97F3",zen:"\u7985\u6A21\u5F0F",zenHint:"`zen` \u6807\u8BB0\uFF08\u6587\u4EF6\u5217\u8868\u4E0A\u65B9\uFF09\u548C `prefix`+\u7A7A\u683C \u4F1A\u628A ChatTab \u6536\u8D77\u5230\u5F15\u64CE\u9762\u677F\u2014\u2014\u9690\u85CF\u6587\u4EF6\u4E0E\u7EC8\u7AEF\u9762\u677F\u3002\u4FDD\u6301\u5F00\u542F\u53EF\u8BA9 Tasks \u4FA7\u680F\u59CB\u7EC8\u53EF\u89C1\uFF0C\u65B9\u4FBF\u968F\u65F6\u9000\u51FA\u3002",zenKeepTasks:"\u7985\u6A21\u5F0F\u4E0B\u4FDD\u7559 Tasks \u9762\u677F",surface:"\u8BBE\u7F6E\u9875\u9762",surfaceHint:"\u8BBE\u7F6E\u53CA\u5176\u4ED6\u5B8C\u6574\u5BF9\u8BDD\u6846\uFF08\u65B0\u5EFA\u4EFB\u52A1\u3001\u91CD\u547D\u540D\uFF09\u7684\u6253\u5F00\u4F4D\u7F6E\u3002ChatTab = \u4E0E\u5F15\u64CE\u6807\u7B7E\u5E76\u5217\u7684\u72EC\u7ACB\u6574\u7A97\u9875\u9762\uFF1BTask panel = \u5DE6\u4FA7 Tasks \u9762\u677F\u5185\u7684\u6D6E\u5C42\u3002enter \u9009\u62E9\u3002",surfaceChattab:"ChatTab\uFF08\u72EC\u7ACB\u9875\u9762\uFF09",surfaceTaskpanel:"Task panel\uFF08\u9762\u677F\u5185\u6D6E\u5C42\uFF09",editor:"\u7F16\u8F91\u5668",editorHint:"\u6587\u4EF6\u6811\u91CC\u6309 `e` \u7528\u4EC0\u4E48\u6253\u5F00\u6587\u4EF6\uFF08enter \u4ECD\u662F\u53EA\u8BFB\u9884\u89C8\uFF09\u3002`auto`\uFF08\u9ED8\u8BA4\uFF09\u8DDF\u968F $VISUAL / $EDITOR\uFF0C\u5426\u5219\u81EA\u52A8\u63A2\u6D4B nvim / vim / emacs / nano\u3002\u5728\u4E0B\u65B9\u4E00\u884C\u6309 enter \u5728 auto / vim / nvim / nano / emacs / custom \u95F4\u5FAA\u73AF\uFF1B\u7F16\u8F91\u5668\u672A\u5B89\u88C5\u65F6\u56DE\u9000\u5230\u9884\u89C8\u3002",editorRow:"\u7F16\u8F91\u5668: < {kind} > (enter \u5207\u6362)",editorCustom:"\u81EA\u5B9A\u4E49: {cmd}",editorCustomUnset:"(\u672A\u8BBE\u7F6E \u2014 enter \u7F16\u8F91)",worktree:"\u5DE5\u4F5C\u6811\u4F4D\u7F6E",worktreeHint:"\u65B0\u4EFB\u52A1\u5DE5\u4F5C\u6811\u7684\u521B\u5EFA\u4F4D\u7F6E\uFF08\u9ED8\u8BA4 `~/.kobe/worktrees`\uFF09\u3002\u6BCF\u4E2A\u4ED3\u5E93\u5728\u5176\u4E0B\u4FDD\u7559\u81EA\u5DF1\u7684 `<\u4ED3\u5E93\u540D>-<\u54C8\u5E0C>` \u5B50\u76EE\u5F55\u3002\u4EC5\u5BF9\u65B0\u4EFB\u52A1\u751F\u6548\u2014\u2014\u5DF2\u6709\u5DE5\u4F5C\u6811\u4FDD\u6301\u539F\u4F4D\u3002\u8FDC\u7A0B\u9879\u76EE\u4E0D\u53D7\u5F71\u54CD\u3002enter \u7F16\u8F91\uFF1B\u7559\u7A7A\u5219\u7528\u9ED8\u8BA4\u503C\u3002",worktreeBase:"\u5DE5\u4F5C\u6811\u6839\u76EE\u5F55: {path}",worktreeBaseDefault:"(\u9ED8\u8BA4 \u2014 enter \u4FEE\u6539)",worktreeBaseTitle:"\u5DE5\u4F5C\u6811\u4F4D\u7F6E\uFF08\u7559\u7A7A = \u9ED8\u8BA4 ~/.kobe/worktrees\uFF09",worktreeBaseField:"\u8DEF\u5F84"},engines:{title:"\u542F\u52A8\u547D\u4EE4",hint:"\u6BCF\u4E2A\u5F15\u64CE\u7684\u4EFB\u52A1\u9762\u677F\u8FD0\u884C\u7684\u547D\u4EE4\u3002\u5F53\u4E8C\u8FDB\u5236\u6587\u4EF6\u4E0D\u5728 PATH \u4E0A\u7684 `claude` / `codex` \u540D\u4E0B\uFF08\u6BD4\u5982\u53EB `cl`\uFF09\u3001\u8981\u4F20\u9ED8\u8BA4\u53C2\u6570\uFF0C\u6216\u8981\u6DFB\u52A0\u81EA\u5DF1\u7684\u5F15\u64CE\u65F6\uFF0C\u53EF\u8986\u76D6\u5185\u7F6E\u9879\u3002\u25CF = \u65B0\u4EFB\u52A1\u7684\u9ED8\u8BA4\u5F15\u64CE\uFF08\u4E5F\u53EF\u7528 Ctrl+Shift+T \u8BBE\u7F6E\uFF09\u3002enter \u7F16\u8F91\u547D\u4EE4 \xB7 r \u91CD\u547D\u540D \xB7 x \u91CD\u7F6E/\u79FB\u9664 \xB7 d \u8BBE\u4E3A\u9ED8\u8BA4\u3002",defaultTag:" (\u9ED8\u8BA4)",customTag:" (\u81EA\u5B9A\u4E49)",addEngine:"+ \u6DFB\u52A0\u5F15\u64CE"},accounts:{title:"\u8D26\u6237",hint:"\u672C\u5730\u63A2\u6D4B\u5230\u7684\u5F15\u64CE\u8D26\u6237\u7684\u53EA\u8BFB\u89C6\u56FE\u3002\u767B\u5F55\u6D41\u7A0B\u7A0D\u540E\u4F1A\u63A5\u5165\u8FD9\u91CC\u3002",checking:"\u68C0\u67E5\u4E2D\u2026",notLoggedIn:"\u25CB \u672A\u767B\u5F55",loggedIn:"\u25CF \u5DF2\u767B\u5F55: {email}",apiKeyConfigured:"\u25CF \u5DF2\u914D\u7F6E API key",chatgptLogin:"\u25CF ChatGPT \u767B\u5F55: {email}",tokenConfigured:"\u25CF \u5DF2\u914D\u7F6E Token ({source})",copilotDetected:"\u25CF \u68C0\u6D4B\u5230 Copilot \u767B\u5F55"},keybindings:{title:"\u5FEB\u6377\u952E",hint:"\u7F16\u8F91\u4E0B\u9762\u7684 YAML \u6765\u91CD\u7ED1\u5B9A\u6309\u952E\uFF0C\u7136\u540E\u91CD\u542F kobe\uFF08\u6216\u91CD\u5EFA\u9762\u677F\uFF09\u3002\u4EFB\u610F\u4F4D\u7F6E\u6309 F1 \u67E5\u770B\u5E26\u6BCF\u4E2A\u7ED1\u5B9A id \u7684\u5B9E\u65F6\u952E\u4F4D\u8868\u3002",configFile:"\u914D\u7F6E\u6587\u4EF6",notCreated:" (\u5C1A\u672A\u521B\u5EFA)",example:"\u793A\u4F8B",overridesApplied:"\u5DF2\u5E94\u7528\u7684\u8986\u76D6",none:"\u65E0",warnings:"\u8B66\u544A"},feedback:{title:"\u53CD\u9988",hint:"\u901A\u8FC7 `gh` \u5411 kobe \u4ED3\u5E93\u53D1\u4E00\u6761 GitHub Discussion\u3002\u9700\u8981 `gh auth login`\uFF1B\u5206\u7C7B\u9ED8\u8BA4\u4E3A Feedback\u3002",titleLabel:"\u6807\u9898",titlePlaceholder:"\u7B80\u77ED\u6982\u62EC",descriptionLabel:"\u63CF\u8FF0",descriptionPlaceholder:"\u53D1\u751F\u4E86\u4EC0\u4E48\uFF1F(enter \u6362\u884C \xB7 tab \u8DF3\u5230\u53D1\u9001)",send:"[enter] \u53D1\u9001\u5230 GitHub Discussions"},dev:{reset:"\u91CD\u7F6E UI \u72B6\u6001",resetHint:"\u6E05\u7A7A ~/.config/kobe/state.json \u548C ~/.kobe/tasks.json\uFF0C\u7136\u540E\u9000\u51FA kobe\u2014\u2014\u91CD\u65B0\u542F\u52A8\u5373\u53EF\u4ECE\u5934\u5F00\u59CB\u3002\u5DE5\u4F5C\u4F1A\u8BDD / \u5F52\u6863\u5217\u8868\u3001\u9762\u677F\u5C3A\u5BF8\u3001\u4E3B\u9898\u3001\u6A21\u578B\u9009\u62E9\u90FD\u4F1A\u91CD\u7F6E\u3002\u78C1\u76D8\u4E0A\u7684 worktree \u548C Claude Code \u4F1A\u8BDD\u5386\u53F2\u4E0D\u53D7\u5F71\u54CD\u3002",resetButton:"[enter] \u91CD\u7F6E",restart:"\u91CD\u542F\u540E\u7AEF",restartHint:"\u505C\u6B62 kobe daemon \u5E76\u9000\u51FA\u5F53\u524D kobe \u7A97\u53E3\uFF0C\u4E0B\u6B21\u542F\u52A8\u4F1A\u62C9\u8D77\u4E00\u4E2A\u5168\u65B0\u7684 daemon\u2014\u2014\u65E0\u9700\u6740\u8FDB\u7A0B\u5373\u53EF\u5E94\u7528 daemon / orchestrator / engine \u7684\u6539\u52A8\u3002\u5176\u4ED6\u5DF2\u8FDE\u63A5\u7684 kobe \u7A97\u53E3\u4E5F\u4F1A\u65AD\u5F00\u8FDE\u63A5\u3002",restartButton:"[enter] \u91CD\u542F",doctorHint:"daemon \u5361\u4F4F\u6216\u65E0\u54CD\u5E94\uFF1F\u5728 shell \u91CC\u8FD0\u884C `kobe doctor` \u8BCA\u65AD\uFF0C\u6216 `kobe reset` \u505C\u6B62 daemon + \u6740\u6389\u4F1A\u8BDD\uFF08\u4FDD\u7559\u4F60\u7684\u4EFB\u52A1\uFF09\u3002\u53EA\u6709\u8981\u540C\u65F6\u6E05\u7A7A\u4EFB\u52A1\u7D22\u5F15 + UI \u72B6\u6001\u65F6\u624D\u7528 `kobe reset --hard`\u3002",experimental:"\u5B9E\u9A8C\u6027",remoteHint:"\u8FDC\u7A0B\u9879\u76EE\uFF08SSH\uFF09\uFF1A\u6CE8\u518C\u4E00\u4E2A git worktree + \u5F15\u64CE\u90FD\u901A\u8FC7 SSH \u8DD1\u5728\u53E6\u4E00\u53F0\u4E3B\u673A\u4E0A\u3001\u7531\u672C\u5730 kobe \u9A71\u52A8\u7684\u9879\u76EE\u3002\u5C1A\u672A\u5B8C\u6210\u2014\u2014\u6587\u4EF6/diff \u9762\u677F\u5BF9\u8FDC\u7A0B\u4ECD\u4F1A\u964D\u7EA7\u3002\u542F\u7528 `kobe add --remote`\u3002",remoteOn:"[x] \u8FDC\u7A0B\u9879\u76EE (\u5F00)",remoteOff:"[ ] \u8FDC\u7A0B\u9879\u76EE (\u5173)",autoStatusHint:"\u81EA\u52A8\u72B6\u6001\u6D41\u8F6C\uFF1Abacklog \u4EFB\u52A1\u5728\u5176\u5F15\u64CE\u5F00\u59CB\u4E00\u8F6E\u65F6\u79FB\u5230 in_progress\uFF0C\u65B0\u7684 claude \u4F1A\u8BDD\u4F1A\u62FF\u5230\u4E00\u6761\u7CFB\u7EDF\u63D0\u793A\uFF0C\u544A\u8BC9 agent \u5B8C\u6210\u540E\u81EA\u884C\u8BBE\u4E3A in_review\u3002\u7EDD\u4E0D\u89E6\u78B0 done/canceled\u3002",autoStatusOn:"[x] \u81EA\u52A8\u72B6\u6001\u6D41\u8F6C (\u5F00)",autoStatusOff:"[ ] \u81EA\u52A8\u72B6\u6001\u6D41\u8F6C (\u5173)",dispatcherHint:"\u73B0\u573A\u7B14\u8BB0\u8C03\u5EA6\u5668\uFF1A\u4EFB\u52A1\u4F1A\u8BDD\u63D0\u4EA4\u4E00\u884C\u7ECF\u9A8C\uFF08`kobe api note`\uFF09\uFF0Cdaemon \u5C06\u6BCF\u6761\u8F6C\u53D1\u7ED9\u4ED3\u5E93\u7684\u4E3B\u4F1A\u8BDD\uFF0C\u4E3B\u4F1A\u8BDD\u518D\u628A\u5B83\u4EEC\u8F6C\u8FBE\u7ED9\u80FD\u53D7\u76CA\u7684\u8FDB\u884C\u4E2D\u4EFB\u52A1\uFF08`kobe api dispatch`\uFF09\u3002\u76EE\u524D\u7531 Web \u6258\u7BA1\u7684\u4F1A\u8BDD\u4F1A\u6536\u5230\u8F6C\u8FBE\u3002",dispatcherOn:"[x] \u73B0\u573A\u7B14\u8BB0\u8C03\u5EA6\u5668 (\u5F00)",dispatcherOff:"[ ] \u73B0\u573A\u7B14\u8BB0\u8C03\u5EA6\u5668 (\u5173)",archivedHistoryHint:"\u5F52\u6863\u5386\u53F2\u9884\u89C8\uFF08beta\uFF09\uFF1A\u6253\u5F00\u5DF2\u5F52\u6863\u7684\u4EFB\u52A1\u65F6\uFF0C\u5F15\u64CE\u4F4D\u7F6E\u6539\u4E3A\u53EA\u8BFB\u7684 `kobe history` \u9762\u677F\uFF08\u4F1A\u8BDD\u9009\u62E9\u5668 + \u5BF9\u8BDD\u8BB0\u5F55\uFF09\uFF0C\u800C\u4E0D\u662F\u91CD\u65B0\u542F\u52A8\u5F15\u64CE\u3002\u5F15\u64CE\u8BB0\u5F55\u6309 worktree \u8DEF\u5F84\u5B58\u50A8\uFF0C\u6240\u4EE5 worktree \u88AB\u5220\u9664\u540E\u5386\u53F2\u4ECD\u7136\u53EF\u8BFB\u3002\u4E0E Web \u4EEA\u8868\u76D8\u5171\u7528\u540C\u4E00\u5F00\u5173\u3002",archivedHistoryOn:"[x] \u5F52\u6863\u5386\u53F2\u9884\u89C8 (\u5F00)",archivedHistoryOff:"[ ] \u5F52\u6863\u5386\u53F2\u9884\u89C8 (\u5173)"}}});var BF,WF;var VF=C(()=>{BF={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}"}},WF={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 KF,UF;var DF=C(()=>{KF={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`"}},UF={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 AQ(J){return typeof J==="string"&&mZ.some((z)=>z.id===J)}var lT,$T,mZ,$G,aG="en";var _G=C(()=>{cL();iL();aL();rL();tL();zF();GF();qF();jF();VF();DF();lT={settings:HF,tasks:BF,files:dL,newTask:eL,ops:YF,update:KF,quickTask:XF,help:lL,history:_L,common:vL,keys:oL},$T={settings:fF,tasks:WF,files:nL,newTask:JF,ops:ZF,update:UF,quickTask:QF,help:$L,history:pL,common:mL,keys:sL},mZ=[{id:"en",label:"English"},{id:"zh",label:"\u4E2D\u6587"}],$G={en:lT,zh:$T}});function RQ(J){if($G[J])aT("lang",J)}function I8(){return S8.lang}function LF(J,z){let Y=J;for(let Z of z.split("."))if(Y&&typeof Y==="object"&&Z in Y)Y=Y[Z];else return;return typeof Y==="string"?Y:void 0}function _T(J,z){if(!z)return J;return J.replace(/\{(\w+)\}/g,(Y,Z)=>(Z in z)?String(z[Z]):Y)}function F(J,z){let Y=S8.lang,Z=LF($G[Y],J)??LF($G.en,J)??J;return _T(Z,z)}function y8(J,z){let Y=S8.lang,Z=(G)=>{return G.keys[J]?.[z]};return Z($G[Y])??Z($G.en)??z}var S8,aT;var ZJ=C(()=>{lG();_G();_G();[S8,aT]=_z({lang:aG})});function pT(J){let z=[],Y=J.name;if(Y)z.push(Y);if(Y==="return")z.push("enter");if(Y==="enter")z.push("return");let Z=[];if(J.ctrl)Z.push("ctrl");if(J.meta)Z.push("cmd");if(J.option)Z.push("alt");if(J.shift&&Y&&Y.length>1)Z.push("shift");if(Z.length===0)return z;let G=`${Z.join("+")}+`;return z.map((X)=>G+X)}function x8(J,z){if(z.defaultPrevented)return!1;if(T8)return!1;let Y=J.slice(),Z=pT(z);T8=!0;try{for(let G=Y.length-1;G>=0;G--){let X=Y[G];if(!X)continue;let Q=X.config();if(Q.enabled===!1)continue;let H=Q.bindings.find((f)=>Z.includes(f.key));if(H)return H.cmd(z,H.slot),z.preventDefault(),!0}return!1}finally{T8=!1}}var T8=!1;function oT(){if(u8)return;let J=WJ();if(!J)throw Error("useBindings: no renderer in scope; call inside a component rendered by @opentui/solid.");u8=J.keyInput,FF=(z)=>{x8(Vf,z)},u8.on("keypress",FF)}function U1(J){oT();let z=rT++,Y={config:J,id:z};_0(()=>{J()}),Vf.push(Y),T1(()=>{let Z=Vf.findIndex((G)=>G.id===z);if(Z>=0)Vf.splice(Z,1)})}var rT=1,Vf,u8=null,FF=null;var kJ=C(()=>{w();W1();Vf=[]});function Kf(){let J=new Set;function z(Z,G){let X=setTimeout(()=>{J.delete(X),Z()},G);return J.add(X),X}function Y(Z){if(J.delete(Z))clearTimeout(Z)}return T1(()=>{for(let Z of J)clearTimeout(Z);J.clear()}),{set:z,clear:Y}}var E8=C(()=>{W1()});import{RGBA as MF}from"@opentui/core";function eT(J){let z=az(),Y=w0(),{theme:Z}=Y,G=WJ(),X=!1,Q=()=>{if(J.size==="xlarge")return 140;if(J.size==="large")return 110;if(J.size==="small")return 50;return 80},H=2,f=()=>Math.max(8,z().height-H*2);return(()=>{var j=W("box"),V=W("box");return D(j,V),q(j,"onMouseDown",()=>{X=!!G?.getSelection()}),q(j,"onMouseUp",()=>{if(X){X=!1;return}J.onClose?.()}),q(j,"alignItems","center"),q(j,"justifyContent","center"),q(j,"position","absolute"),q(j,"zIndex",3000),q(j,"left",0),q(j,"top",0),q(V,"onMouseUp",(B)=>{X=!1,B.stopPropagation()}),q(V,"flexShrink",1),q(V,"flexGrow",0),q(V,"paddingTop",1),U(V,()=>J.children),y((B)=>{var K=z().width,L=z().height,A=Y.transparentBackground?tT:sT,O=Q(),R=z().width-2,u=f(),P=Z.backgroundDialog;return K!==B.e&&(B.e=q(j,"width",K,B.e)),L!==B.t&&(B.t=q(j,"height",L,B.t)),A!==B.a&&(B.a=q(j,"backgroundColor",A,B.a)),O!==B.o&&(B.o=q(V,"width",O,B.o)),R!==B.i&&(B.i=q(V,"maxWidth",R,B.i)),u!==B.n&&(B.n=q(V,"maxHeight",u,B.n)),P!==B.s&&(B.s=q(V,"backgroundColor",P,B.s)),B},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),j})()}function Jx(){let[J,z]=_z({stack:[],size:"medium"}),Y=WJ(),Z=null,G=Kf();function X(){G.set(()=>{if(!Z)return;if(Z.isDestroyed)return;function Q(f){for(let j of f.getChildren()){if(j===Z)return!0;if(Q(j))return!0}return!1}let H=Y?.root;if(!H)return;if(!Q(H))return;Z.focus()},1)}return U1(()=>({enabled:J.stack.length>0&&!Y?.getSelection()?.getSelectedText(),bindings:[{key:"escape",cmd:()=>{if(Y?.getSelection())Y.clearSelection();J.stack.at(-1)?.onClose?.(),z("stack",J.stack.slice(0,-1)),X()}},{key:"ctrl+c",cmd:()=>{if(Y?.getSelection())Y.clearSelection();J.stack.at(-1)?.onClose?.(),z("stack",J.stack.slice(0,-1)),X()}}]})),{clear(){for(let Q of J.stack)Q.onClose?.();Tq(()=>{z("size","medium"),z("stack",[])}),X()},replace(Q,H){if(J.stack.length===0)Z=Y?.currentFocusedRenderable??null,Z?.blur();for(let f of J.stack)f.onClose?.();z("size","medium"),z("stack",[{element:Q,onClose:H}])},push(Q,H){if(J.stack.length===0)Z=Y?.currentFocusedRenderable??null,Z?.blur();z("stack",[...J.stack,{element:Q,onClose:H}])},pop(){if(J.stack.at(-1)?.onClose?.(),z("stack",J.stack.slice(0,-1)),J.stack.length===0)X()},get stack(){return J.stack},get size(){return J.size},setSize(Q){z("size",Q)}}}function AF(J){let z=Jx();return b(OF.Provider,{value:z,get children(){return[N0(()=>J.children),(()=>{var Y=W("box");return q(Y,"position","absolute"),q(Y,"zIndex",3000),U(Y,b(Y0,{get when(){return z.stack.length},get children(){return b(eT,{onClose:()=>z.clear(),get size(){return z.size},get children(){return z.stack.at(-1).element()}})}})),Y})()]}})}function n1(){let J=mJ(OF);if(!J)throw Error("useDialog must be used within a DialogProvider");return J}var sT,tT,OF;var $J=C(()=>{w();w();w();w();w();w();w();w();W1();lG();h1();kJ();E8();sT=MF.fromInts(0,0,0,128),tT=MF.fromInts(0,0,0,64);OF=Pz()});import{spawnSync as w8}from"child_process";import*as gF from"fs";function RF(J){return`This folder isn't a git repository yet, and a task needs a git branch to work in. To fix it, turn ${J} into a repo: git init && git add -A && git commit -m "init" \u2014 then create the task again. (Working in non-git folders is coming soon.)`}function NF(J){let z=J.trim();if(!z)return"repo path is required";let Y;try{Y=gF.statSync(z)}catch{return`path does not exist: ${z}`}if(!Y.isDirectory())return`not a directory: ${z}`;try{if(w8("git",["rev-parse","--git-dir"],{cwd:z,encoding:"utf-8",timeout:2000,stdio:["ignore","pipe","ignore"]}).status!==0)return RF(z)}catch{return RF(z)}return null}function gQ(J){if(!J)return null;try{let z=w8("git",["rev-parse","--abbrev-ref","HEAD"],{cwd:J,encoding:"utf-8",timeout:2000,stdio:["ignore","pipe","ignore"]});if(z.status!==0)return null;let Y=z.stdout.trim();if(!Y||Y==="HEAD")return null;return Y}catch{return null}}function CF(J){if(!J)return[];try{let z=w8("git",["for-each-ref","--format=%(refname:short)","refs/heads/"],{cwd:J,encoding:"utf-8",timeout:2000});if(z.status!==0)return[];return z.stdout.split(`
262
+ `).map((Y)=>Y.trim()).filter(Boolean).sort((Y,Z)=>{let G=(H)=>H==="main"?0:H==="master"?1:H==="develop"?2:3,X=G(Y),Q=G(Z);if(X!==Q)return X-Q;return Y.localeCompare(Z)})}catch{return[]}}var Tz="main";var Uf=()=>{};import*as kF from"fs";import*as Df from"os";function RJ(J){if(J==="~")return Df.homedir();if(J.startsWith("~/"))return Df.homedir()+J.slice(1);return J}function P8(J){if(!J)return{base:"",filter:""};let Y=RJ(J==="~"?"~/":J);if(Y.endsWith("/"))return{base:Y,filter:""};let Z=Y.lastIndexOf("/");if(Z===-1)return{base:"",filter:Y};return{base:Y.slice(0,Z+1),filter:Y.slice(Z+1)}}function h8(J){if(!J)return[];try{let z=kF.readdirSync(J,{withFileTypes:!0}),Y=[];for(let Z of z)if(Z.isDirectory())Y.push(Z.name);return Y.sort((Z,G)=>Z.localeCompare(G))}catch{return[]}}function v8(J,z){let Y=z.toLowerCase(),G=Y.startsWith(".")?J:J.filter((X)=>!X.startsWith("."));if(!Y)return G;return G.filter((X)=>X.toLowerCase().startsWith(Y))}function NQ(J,z,Y){let Z=z+Y;if(J.startsWith("~")){let G=Df.homedir();if(Z===G)return"~";if(Z.startsWith(`${G}/`))return`~${Z.slice(G.length)}`}return Z}var Lf=()=>{};import{spawn as zx}from"child_process";import*as cZ from"fs";import*as CQ from"path";function bF(J){let z=J.trim().replace(/\/+$/,"");if(!z)return"";let Y=z.lastIndexOf("/"),Z=z.lastIndexOf(":"),G=Math.max(Y,Z);return(G>=0?z.slice(G+1):z).replace(/\.git$/i,"")}function SF(J){let z=J.trim();if(!z)return F("newTask.error.gitUrlRequired");let Y=z.includes("://"),Z=z.includes("@")&&z.includes(":"),G=z.includes("/");if(!Y&&!Z&&!G)return F("newTask.error.gitUrlInvalid",{url:z});return null}function IF(J,z){let Y=z.trim();if(!Y)return F("newTask.error.folderRequired");if(Y.includes("/")||Y.includes("\\"))return F("newTask.error.folderHasSeparator");let Z=J.trim();if(!Z)return F("newTask.error.parentRequired");let G=RJ(Z),X;try{X=cZ.statSync(G)}catch{return F("newTask.error.parentNotFound",{path:G})}if(!X.isDirectory())return F("newTask.error.parentNotDir",{path:G});let Q=CQ.join(G,Y);if(cZ.existsSync(Q))return F("newTask.error.targetExists",{path:Q});return null}function yF(J,z){return CQ.join(RJ(J.trim()),z.trim())}function TF(J,z){let Y=z.trim();if(!Y)return z;let Z=RJ(J.trim());if(!Z)return z;try{if(!cZ.statSync(Z).isDirectory())return z}catch{return z}if(!cZ.existsSync(CQ.join(Z,Y)))return Y;for(let G=2;G<1000;G++){let X=`${Y}-${G}`;if(!cZ.existsSync(CQ.join(Z,X)))return X}return Y}function xF(J,z,Y){return new Promise((Z)=>{let G="";try{let X=zx("git",["clone","--progress",J,z],{stdio:["ignore","ignore","pipe"]});X.stderr?.setEncoding("utf-8"),X.stderr?.on("data",(Q)=>{if(G+=Q,Y){let H=Q.split(/[\r\n]+/).filter((j)=>j.trim().length>0),f=H[H.length-1];if(f)Y(f)}}),X.on("error",(Q)=>{Z({ok:!1,error:Q.message})}),X.on("close",(Q)=>{if(Q===0){Z({ok:!0,path:z});return}let H=G.split(/[\r\n]+/).filter((f)=>f.trim().length>0).pop()??`git clone exited with ${Q}`;Z({ok:!1,error:H})})}catch(X){Z({ok:!1,error:X instanceof Error?X.message:String(X)})}})}var uF=C(()=>{ZJ();Lf()});function m8(J){if(J==="existing")return"clone";if(J==="clone")return"adopt";return"existing"}function c8(J){if(J==="existing")return"adopt";if(J==="clone")return"existing";return"clone"}function EF(J,z){let Y=J.trim();if(z.includes(Y))return"saved";if(Y.startsWith("~"))return"browse";if(Y.includes("/"))return"browse";return"saved"}function gJ(J){return J.replace(/[\r\n]+/g,"")}function kQ(J){return!/\S/u.test(J)}function d8(J,z="existing"){if(J==="confirm")return"tabs";if(J==="tabs")return"engine";if(J==="engine")return n8(z);if(z==="clone"){if(J==="cloneUrl")return"cloneParent";if(J==="cloneParent")return"cloneFolder";if(J==="cloneFolder")return"cloneBaseRef";if(J==="cloneBaseRef")return"confirm";return"cloneUrl"}if(z==="adopt")return J==="adoptFilter"?"confirm":"adoptFilter";if(J==="repo")return"baseRef";if(J==="baseRef")return"confirm";return"repo"}function n8(J){if(J==="clone")return"cloneUrl";if(J==="adopt")return"adoptFilter";return"repo"}function wF(J,z){let Y=z.trim();if(!Y)return J;return J.filter((Z)=>hQ(Y,Z.path))}function PF(J,z){let Y=new Set,Z=[];for(let G of[J,...z]){let X=G.trim();if(!X||Y.has(X))continue;Y.add(X),Z.push(X)}return Z}function hF(J,z){let Y=z.trim().toLowerCase();if(!Y)return J;return J.filter((Z)=>Z.toLowerCase().includes(Y))}function vF(J,z){let Y=z.trim().toLowerCase();if(!Y)return J;return J.filter((Z)=>Z.toLowerCase().includes(Y))}function bQ(J,z,Y=Yx){let Z=J.length;if(Z<=Y)return{items:J,start:0,total:Z};let G=Math.floor(Y/2),X=Math.max(0,z-G);if(X+Y>Z)X=Z-Y;return{items:J.slice(X,X+Y),start:X,total:Z}}function pz(J,z){if(z<=0)return 0;return Math.max(0,Math.min(z-1,J))}function mF(J,z,Y){let Z=z[Y];if(Z)return Z;return J.trim()||Tz}var Yx=8;var i8=C(()=>{$f();Uf()});import{TextAttributes as Hz}from"@opentui/core";function cF(J){let z=n1(),{theme:Y}=w0(),[Z,G]=p("existing"),X=()=>{let I=J.availableVendors;return I&&I.length>0?I:a1},Q=(()=>{let I=X(),O0=J.defaultVendor??"claude";return I.includes(O0)?O0:I[0]??"claude"})(),[H,f]=p(Q),[j,V]=p("tabs"),[B,K]=p(J.defaultRepo),[L,A]=p(gQ(RJ(J.defaultRepo.trim()))??Tz),[O,R]=p(!1),[u,P]=p(""),[S,g]=p(J.defaultCloneParent?.trim()?J.defaultCloneParent:"~/"),[M,T]=p(""),[d,i]=p(!1),[J0,E]=p(Tz),[z0,q0]=p(!1),[o,B0]=p(""),g0=U0(()=>PF(J.defaultRepo,J.savedRepos)),m=U0(()=>EF(B(),g0())),r=U0(()=>P8(B())),c=U0(()=>h8(r().base)),N=U0(()=>v8(c(),r().filter)),t=U0(()=>hF(g0(),B())),x=U0(()=>m()==="browse"?N():t()),[n,Q0]=p(0),H0=U0(()=>bQ(x(),n())),[F0,M0]=p(!1),o0=U0(()=>CF(RJ(B().trim()))),S0=U0(()=>vF(o0(),L())),[p0,h]=p(0),L0=U0(()=>bQ(S0(),p0())),Z0=U0(()=>P8(S())),D0=U0(()=>h8(Z0().base)),P0=U0(()=>v8(D0(),Z0().filter)),[G1,c0]=p(0),u0=U0(()=>bQ(P0(),G1())),[k1,s]=p(!1),[j0,C0]=p(""),[t0,z1]=p(0),[E0,V1]=p(new Set),[D1]=WZ(()=>Z()==="adopt"?RJ(B().trim()):null,async(I)=>J.discoverAdoptable?await J.discoverAdoptable(I):[]),f1=U0(()=>wF(D1()??[],j0())),G0=U0(()=>bQ(f1().map((I)=>I.path),t0())),X0=U0(()=>{let I=G0();return f1().slice(I.start,I.start+I.items.length)});_0(()=>{f1(),z1((I)=>pz(I,f1().length))});function W0(I){V1((O0)=>{let e=new Set(O0);if(e.has(I))e.delete(I);else e.add(I);return e})}function R0(){let I=f1()[t0()];if(I)W0(I.path)}_0(()=>{S0(),h(0)}),_0(()=>{let I=RJ(B().trim());if(!I)return;if(O())return;let O0=gQ(I);if(O0)A(O0)}),_0(()=>{x(),Q0(0)}),_0(()=>{P0(),c0(0)}),_0(()=>{let I=u(),O0=S();if(d())return;let e=bF(I);T(TF(O0,e))});let[V0,h0]=p(null);_0(()=>{B(),u(),S(),M(),j0(),h0(null)});function k0(){let I=RJ(B().trim());if(!I)return;let O0=NF(I);if(O0){h0(O0),V("repo");return}let e=L().trim()||Tz;J.onSubmit({repo:I,baseRef:e,vendor:H()}),z.clear()}async function s0(){if(z0())return;let I=SF(u());if(I){h0(I),V("cloneUrl");return}let O0=IF(S(),M());if(O0){h0(O0),V(M().trim()?"cloneParent":"cloneFolder");return}let e=yF(S(),M());q0(!0),B0(F("newTask.clone.progressInto",{target:e}));let I0=await xF(u().trim(),e,(GJ)=>{B0(GJ)});if(q0(!1),!I0.ok){h0(F("newTask.error.cloneFailed",{error:I0.error})),V("cloneUrl");return}let M1=J0().trim()||Tz,UJ=RJ(S().trim());J.onSubmit({repo:I0.path,baseRef:M1,vendor:H(),cloned:{parentDir:UJ}}),z.clear()}function b0(){let I=f1();if(I.length===0){h0(F("newTask.error.noAdoptable"));return}let O0=E0(),e=O0.size>0?I.filter((I0)=>O0.has(I0.path)):I.slice(t0(),t0()+1);if(e.length===0)return;J.onSubmit({mode:"adopt",repo:RJ(B().trim()),vendor:H(),adopt:e.map((I0)=>({worktreePath:I0.path,branch:I0.branch}))}),z.clear()}function x0(){if(Z()==="clone"){s0();return}if(Z()==="adopt"){b0();return}k0()}function k(I){if(z0())return;if(I===Z())return;G(I),V(n8(I)),h0(null)}function X1(I){if(z0())return;let O0=I===1?m8(Z()):c8(Z());if(O0===Z())return;G(O0),h0(null),V("tabs")}function e0(I){f((O0)=>I===1?AY(X(),O0):af(X(),O0))}function n0(){if(!B().trim()&&m()==="saved"){let O0=x()[0];if(O0){K(O0),V("baseRef");return}}if(m()==="browse"){let e=N()[n()],I0=r();if(e){K(NQ(B(),I0.base,e)),Q0(0),M0(!0),V("baseRef");return}V("baseRef");return}let I=x()[n()];if(I){K(I),V("baseRef");return}V("baseRef")}function v0(I){let e=x()[I];if(!e)return;if(m()==="browse"){let I0=r();K(NQ(B(),I0.base,e)),Q0(I),M0(!0),V("baseRef");return}K(e),Q0(I),V("baseRef")}function K0(){let O0=P0()[G1()],e=Z0();if(O0){g(NQ(S(),e.base,O0)),c0(0),s(!0),V("cloneFolder");return}V("cloneFolder")}function y0(I){let e=P0()[I];if(!e)return;let I0=Z0();g(NQ(S(),I0.base,e)),c0(I),s(!0),V("cloneFolder")}let b1=()=>{let I=f1();if(I.length===0)return;let O0=I.every((e)=>E0().has(e.path));V1(O0?new Set:new Set(I.map((e)=>e.path)))};U1(()=>({bindings:[{key:"tab",cmd:()=>V((I)=>d8(I,Z()))},{key:"ctrl+]",cmd:()=>k(m8(Z()))},{key:"ctrl+[",cmd:()=>k(c8(Z()))},{key:"ctrl+e",cmd:()=>f((I)=>AY(X(),I))},{key:"up",cmd:()=>{if(z0())return;if(Z()==="existing"&&j()==="repo"){let I=x();if(I.length===0)return;Q0(pz(n()-1,I.length));return}if(Z()==="existing"&&j()==="baseRef"){let I=S0();if(I.length===0)return;h(pz(p0()-1,I.length));return}if(Z()==="clone"&&j()==="cloneParent"){let I=P0();if(I.length===0)return;c0(pz(G1()-1,I.length));return}if(Z()==="adopt"){let I=f1();if(I.length===0)return;z1(pz(t0()-1,I.length))}}},{key:"down",cmd:()=>{if(z0())return;if(Z()==="existing"&&j()==="repo"){let I=x();if(I.length===0)return;Q0(pz(n()+1,I.length));return}if(Z()==="existing"&&j()==="baseRef"){let I=S0();if(I.length===0)return;h(pz(p0()+1,I.length));return}if(Z()==="clone"&&j()==="cloneParent"){let I=P0();if(I.length===0)return;c0(pz(G1()+1,I.length));return}if(Z()==="adopt"){let I=f1();if(I.length===0)return;z1(pz(t0()+1,I.length))}}},...j()==="tabs"||j()==="engine"?[{key:"left",cmd:()=>j()==="tabs"?X1(-1):e0(-1)},{key:"right",cmd:()=>j()==="tabs"?X1(1):e0(1)},{key:"return",cmd:()=>V((I)=>d8(I,Z()))}]:[],...Z()==="adopt"?[{key:"ctrl+a",cmd:b1}]:[]]})),U1(()=>({enabled:j()==="confirm"&&!z0(),bindings:[{key:"return",cmd:()=>x0()}]}));let F1=(I)=>j()===I?Y.primary:Y.textMuted,A1=(I)=>j()===I?Hz.BOLD|Hz.UNDERLINE:void 0,l=(I,O0)=>I?O0?Hz.BOLD|Hz.UNDERLINE:Hz.BOLD:void 0;return(()=>{var I=W("box"),O0=W("box"),e=W("text"),I0=W("box"),M1=W("box"),UJ=W("text"),GJ=W("box"),j1=W("box"),_J=W("text"),fJ=W("box"),pJ=W("text"),bJ=W("text");return D(I,O0),D(I,I0),D(I,fJ),q(I,"paddingLeft",2),q(I,"paddingRight",2),q(I,"gap",0),D(O0,e),q(O0,"flexDirection","row"),U(e,()=>F("newTask.title")),D(I0,M1),q(I0,"gap",1),q(I0,"paddingTop",1),q(I0,"paddingBottom",1),U(I0,()=>{let $=()=>j()==="tabs",a=(_)=>_?Y.primary:Y.textMuted;return(()=>{var _=W("box"),v=W("text"),i0=W("text"),m0=W("text");return D(_,v),D(_,i0),D(_,m0),q(_,"flexDirection","row"),q(_,"gap",2),q(v,"onMouseUp",()=>k("existing")),U(v,(()=>{var A0=N0(()=>Z()==="existing");return()=>A0()?`\u25B8 ${F("newTask.tabs.existing")}`:` ${F("newTask.tabs.existing")}`})()),q(i0,"onMouseUp",()=>k("clone")),U(i0,(()=>{var A0=N0(()=>Z()==="clone");return()=>A0()?`\u25B8 ${F("newTask.tabs.clone")}`:` ${F("newTask.tabs.clone")}`})()),q(m0,"onMouseUp",()=>k("adopt")),U(m0,(()=>{var A0=N0(()=>Z()==="adopt");return()=>A0()?`\u25B8 ${F("newTask.tabs.adopt")}`:` ${F("newTask.tabs.adopt")}`})()),y((A0)=>{var l0=a(Z()==="existing"),B1=l(Z()==="existing",$()),R1=a(Z()==="clone"),DJ=l(Z()==="clone",$()),jz=a(Z()==="adopt"),OY=l(Z()==="adopt",$());return l0!==A0.e&&(A0.e=q(v,"fg",l0,A0.e)),B1!==A0.t&&(A0.t=q(v,"attributes",B1,A0.t)),R1!==A0.a&&(A0.a=q(i0,"fg",R1,A0.a)),DJ!==A0.o&&(A0.o=q(i0,"attributes",DJ,A0.o)),jz!==A0.i&&(A0.i=q(m0,"fg",jz,A0.i)),OY!==A0.n&&(A0.n=q(m0,"attributes",OY,A0.n)),A0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),_})()},M1),D(M1,UJ),D(M1,GJ),q(M1,"gap",0),U(UJ,()=>F("newTask.field.engine")),D(GJ,j1),D(GJ,_J),q(GJ,"flexDirection","row"),q(GJ,"gap",2),U(GJ,b(Z1,{get each(){return X()},children:($)=>{let a=()=>H()===$;return(()=>{var _=W("text");return q(_,"onMouseUp",()=>f($)),U(_,()=>a()?"\u25B8 ":" ",null),U(_,$,null),y((v)=>{var i0=a()?Y.primary:Y.textMuted,m0=a()?Hz.BOLD:void 0;return i0!==v.e&&(v.e=q(_,"fg",i0,v.e)),m0!==v.t&&(v.t=q(_,"attributes",m0,v.t)),v},{e:void 0,t:void 0}),_})()}}),j1),q(j1,"flexGrow",1),U(_J,()=>F("newTask.hint.engineCycle")),U(I0,b(Y0,{get when(){return Z()==="existing"},get children(){return[(()=>{var $=W("box"),a=W("text"),_=W("input");return D($,a),D($,_),q($,"gap",0),U(a,()=>F("newTask.field.repo")),q(_,"onInput",(v)=>{M0(!1),K(gJ(v))}),q(_,"onSubmit",()=>{if(!B().trim())return;n0()}),y((v)=>{var i0=F1("repo"),m0=A1("repo"),A0=B(),l0=J.defaultRepo,B1=j()==="repo";return i0!==v.e&&(v.e=q(a,"fg",i0,v.e)),m0!==v.t&&(v.t=q(a,"attributes",m0,v.t)),A0!==v.a&&(v.a=q(_,"value",A0,v.a)),l0!==v.o&&(v.o=q(_,"placeholder",l0,v.o)),B1!==v.i&&(v.i=q(_,"focused",B1,v.i)),v},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),$})(),b(Y0,{get when(){return N0(()=>j()==="repo"&&x().length>0)()&&!F0()},get children(){var $=W("box");return q($,"gap",0),q($,"paddingLeft",2),U($,b(Y0,{get when(){return H0().start>0},get children(){var a=W("text");return q(a,"wrapMode","none"),U(a,()=>F("newTask.picker.moreAbove",{count:H0().start})),y((_)=>q(a,"fg",Y.textMuted,_)),a}}),null),U($,b(Z1,{get each(){return H0().items},children:(a,_)=>{let v=()=>H0().start+_(),i0=()=>v()===n(),m0=()=>m()==="saved"&&a===J.defaultRepo,A0=()=>m()==="saved"&&B().trim()===a,l0=()=>m()==="browse"?"/":"",B1=()=>m0()?` ${F("newTask.hint.currentDir")}`:"";return(()=>{var R1=W("text");return q(R1,"wrapMode","none"),q(R1,"onMouseUp",()=>v0(v())),U(R1,()=>i0()?"\u25B8 ":" ",null),U(R1,a,null),U(R1,l0,null),U(R1,B1,null),y((DJ)=>{var jz=i0()?Y.primary:A0()?Y.accent:Y.textMuted,OY=i0()?Hz.BOLD:void 0;return jz!==DJ.e&&(DJ.e=q(R1,"fg",jz,DJ.e)),OY!==DJ.t&&(DJ.t=q(R1,"attributes",OY,DJ.t)),DJ},{e:void 0,t:void 0}),R1})()}}),null),U($,b(Y0,{get when(){return H0().start+H0().items.length<H0().total},get children(){var a=W("text");return q(a,"wrapMode","none"),U(a,()=>F("newTask.picker.moreBelow",{count:H0().total-H0().start-H0().items.length})),y((_)=>q(a,"fg",Y.textMuted,_)),a}}),null),$}}),(()=>{var $=W("box"),a=W("text"),_=W("input");return D($,a),D($,_),q($,"gap",0),U(a,()=>F("newTask.field.fromBranch")),q(_,"placeholder",Tz),q(_,"onInput",(v)=>{R(!0),A(gJ(v))}),q(_,"onSubmit",()=>{A(mF(L(),S0(),p0())),R(!0),k0()}),y((v)=>{var i0=F1("baseRef"),m0=A1("baseRef"),A0=L(),l0=j()==="baseRef";return i0!==v.e&&(v.e=q(a,"fg",i0,v.e)),m0!==v.t&&(v.t=q(a,"attributes",m0,v.t)),A0!==v.a&&(v.a=q(_,"value",A0,v.a)),l0!==v.o&&(v.o=q(_,"focused",l0,v.o)),v},{e:void 0,t:void 0,a:void 0,o:void 0}),$})(),b(Y0,{get when(){return N0(()=>j()==="baseRef"&&S0().length===0)()&&V0()==null},get children(){var $=W("box"),a=W("text");return D($,a),q($,"gap",0),q($,"paddingLeft",2),q($,"paddingBottom",1),q(a,"wrapMode","none"),U(a,(()=>{var _=N0(()=>o0().length===0);return()=>_()?F("newTask.hint.noBranchesFound"):F("newTask.hint.noMatchBranch")})()),y((_)=>q(a,"fg",Y.textMuted,_)),$}}),b(Y0,{get when(){return N0(()=>j()==="baseRef")()&&S0().length>0},get children(){var $=W("box");return q($,"gap",0),q($,"paddingLeft",2),q($,"paddingBottom",1),U($,b(Y0,{get when(){return L0().start>0},get children(){var a=W("text");return q(a,"wrapMode","none"),U(a,()=>F("newTask.picker.moreAbove",{count:L0().start})),y((_)=>q(a,"fg",Y.textMuted,_)),a}}),null),U($,b(Z1,{get each(){return L0().items},children:(a,_)=>{let v=()=>L0().start+_(),i0=()=>v()===p0(),m0=()=>L().trim()===a;return(()=>{var A0=W("text");return q(A0,"wrapMode","none"),q(A0,"onMouseUp",()=>{A(a),R(!0),h(v()),V("confirm")}),U(A0,()=>i0()?"\u25B8 ":" ",null),U(A0,a,null),y((l0)=>{var B1=i0()?Y.primary:m0()?Y.accent:Y.textMuted,R1=i0()?Hz.BOLD:void 0;return B1!==l0.e&&(l0.e=q(A0,"fg",B1,l0.e)),R1!==l0.t&&(l0.t=q(A0,"attributes",R1,l0.t)),l0},{e:void 0,t:void 0}),A0})()}}),null),U($,b(Y0,{get when(){return L0().start+L0().items.length<L0().total},get children(){var a=W("text");return q(a,"wrapMode","none"),U(a,()=>F("newTask.picker.moreBelow",{count:L0().total-L0().start-L0().items.length})),y((_)=>q(a,"fg",Y.textMuted,_)),a}}),null),$}})]}}),null),U(I0,b(Y0,{get when(){return Z()==="clone"},get children(){return[(()=>{var $=W("box"),a=W("text"),_=W("input");return D($,a),D($,_),q($,"gap",0),U(a,()=>F("newTask.field.gitUrl")),q(_,"placeholder","https://github.com/user/repo.git"),q(_,"onInput",(v)=>P(gJ(v))),q(_,"onSubmit",()=>{if(!u().trim())return;V("cloneParent")}),y((v)=>{var i0=F1("cloneUrl"),m0=A1("cloneUrl"),A0=u(),l0=j()==="cloneUrl";return i0!==v.e&&(v.e=q(a,"fg",i0,v.e)),m0!==v.t&&(v.t=q(a,"attributes",m0,v.t)),A0!==v.a&&(v.a=q(_,"value",A0,v.a)),l0!==v.o&&(v.o=q(_,"focused",l0,v.o)),v},{e:void 0,t:void 0,a:void 0,o:void 0}),$})(),(()=>{var $=W("box"),a=W("text"),_=W("input");return D($,a),D($,_),q($,"gap",0),U(a,()=>F("newTask.field.parentDir")),q(_,"placeholder","~/"),q(_,"onInput",(v)=>{s(!1),g(gJ(v))}),q(_,"onSubmit",()=>K0()),y((v)=>{var i0=F1("cloneParent"),m0=A1("cloneParent"),A0=S(),l0=j()==="cloneParent";return i0!==v.e&&(v.e=q(a,"fg",i0,v.e)),m0!==v.t&&(v.t=q(a,"attributes",m0,v.t)),A0!==v.a&&(v.a=q(_,"value",A0,v.a)),l0!==v.o&&(v.o=q(_,"focused",l0,v.o)),v},{e:void 0,t:void 0,a:void 0,o:void 0}),$})(),b(Y0,{get when(){return j()==="cloneParent"},get children(){var $=W("box"),a=W("text");return D($,a),q($,"paddingLeft",2),q(a,"wrapMode","none"),U(a,()=>F("newTask.hint.remembered")),y((_)=>q(a,"fg",Y.textMuted,_)),$}}),b(Y0,{get when(){return N0(()=>j()==="cloneParent"&&P0().length>0)()&&!k1()},get children(){var $=W("box");return q($,"gap",0),q($,"paddingLeft",2),U($,b(Y0,{get when(){return u0().start>0},get children(){var a=W("text");return q(a,"wrapMode","none"),U(a,()=>F("newTask.picker.moreAbove",{count:u0().start})),y((_)=>q(a,"fg",Y.textMuted,_)),a}}),null),U($,b(Z1,{get each(){return u0().items},children:(a,_)=>{let v=()=>u0().start+_(),i0=()=>v()===G1();return(()=>{var m0=W("text"),A0=T0("/");return D(m0,A0),q(m0,"wrapMode","none"),q(m0,"onMouseUp",()=>y0(v())),U(m0,()=>i0()?"\u25B8 ":" ",A0),U(m0,a,A0),y((l0)=>{var B1=i0()?Y.primary:Y.textMuted,R1=i0()?Hz.BOLD:void 0;return B1!==l0.e&&(l0.e=q(m0,"fg",B1,l0.e)),R1!==l0.t&&(l0.t=q(m0,"attributes",R1,l0.t)),l0},{e:void 0,t:void 0}),m0})()}}),null),U($,b(Y0,{get when(){return u0().start+u0().items.length<u0().total},get children(){var a=W("text");return q(a,"wrapMode","none"),U(a,()=>F("newTask.picker.moreBelow",{count:u0().total-u0().start-u0().items.length})),y((_)=>q(a,"fg",Y.textMuted,_)),a}}),null),$}}),(()=>{var $=W("box"),a=W("text"),_=W("input");return D($,a),D($,_),q($,"gap",0),U(a,()=>F("newTask.field.folderName")),q(_,"onInput",(v)=>{i(!0),T(gJ(v))}),q(_,"onSubmit",()=>V("cloneBaseRef")),y((v)=>{var i0=F1("cloneFolder"),m0=A1("cloneFolder"),A0=M(),l0=F("newTask.placeholder.folderName"),B1=j()==="cloneFolder";return i0!==v.e&&(v.e=q(a,"fg",i0,v.e)),m0!==v.t&&(v.t=q(a,"attributes",m0,v.t)),A0!==v.a&&(v.a=q(_,"value",A0,v.a)),l0!==v.o&&(v.o=q(_,"placeholder",l0,v.o)),B1!==v.i&&(v.i=q(_,"focused",B1,v.i)),v},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),$})(),(()=>{var $=W("box"),a=W("text"),_=W("input");return D($,a),D($,_),q($,"gap",0),U(a,()=>F("newTask.field.baseBranch")),q(_,"placeholder",Tz),q(_,"onInput",(v)=>E(gJ(v))),q(_,"onSubmit",()=>void s0()),y((v)=>{var i0=F1("cloneBaseRef"),m0=A1("cloneBaseRef"),A0=J0(),l0=j()==="cloneBaseRef";return i0!==v.e&&(v.e=q(a,"fg",i0,v.e)),m0!==v.t&&(v.t=q(a,"attributes",m0,v.t)),A0!==v.a&&(v.a=q(_,"value",A0,v.a)),l0!==v.o&&(v.o=q(_,"focused",l0,v.o)),v},{e:void 0,t:void 0,a:void 0,o:void 0}),$})(),b(Y0,{get when(){return z0()},get children(){var $=W("box"),a=W("text");return D($,a),q($,"gap",0),q($,"paddingLeft",2),q(a,"wrapMode","none"),U(a,()=>o()||F("newTask.clone.progressFallback")),y((_)=>q(a,"fg",Y.textMuted,_)),$}})]}}),null),U(I0,b(Y0,{get when(){return Z()==="adopt"},get children(){return[(()=>{var $=W("box"),a=W("text"),_=W("input");return D($,a),D($,_),q($,"gap",0),U(a,()=>F("newTask.field.adoptFilter")),q(_,"onInput",(v)=>C0(gJ(v))),q(_,"onSubmit",()=>R0()),y((v)=>{var i0=F1("adoptFilter"),m0=A1("adoptFilter"),A0=j0(),l0=F("newTask.placeholder.adoptFilter"),B1=j()==="adoptFilter";return i0!==v.e&&(v.e=q(a,"fg",i0,v.e)),m0!==v.t&&(v.t=q(a,"attributes",m0,v.t)),A0!==v.a&&(v.a=q(_,"value",A0,v.a)),l0!==v.o&&(v.o=q(_,"placeholder",l0,v.o)),B1!==v.i&&(v.i=q(_,"focused",B1,v.i)),v},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),$})(),(()=>{var $=W("box"),a=W("text");return D($,a),q($,"paddingLeft",2),q(a,"wrapMode","none"),U(a,()=>F("newTask.adopt.repoLine",{path:RJ(B().trim())||F("newTask.adopt.repoNone")})),y((_)=>q(a,"fg",Y.textMuted,_)),$})(),b(Y0,{get when(){return D1.loading},get children(){var $=W("box"),a=W("text");return D($,a),q($,"paddingLeft",2),q(a,"wrapMode","none"),U(a,()=>F("newTask.hint.scanningWorktrees")),y((_)=>q(a,"fg",Y.textMuted,_)),$}}),b(Y0,{get when(){return N0(()=>!D1.loading)()&&f1().length===0},get children(){var $=W("box"),a=W("text");return D($,a),q($,"paddingLeft",2),q(a,"wrapMode","none"),U(a,(()=>{var _=N0(()=>(D1()??[]).length===0);return()=>_()?F("newTask.adopt.noUnlinked"):F("newTask.adopt.noMatch")})()),y((_)=>q(a,"fg",Y.textMuted,_)),$}}),b(Y0,{get when(){return f1().length>0},get children(){var $=W("box"),a=W("text");return D($,a),q($,"gap",0),q($,"paddingLeft",2),U($,b(Y0,{get when(){return G0().start>0},get children(){var _=W("text");return q(_,"wrapMode","none"),U(_,()=>F("newTask.picker.moreAbove",{count:G0().start})),y((v)=>q(_,"fg",Y.textMuted,v)),_}}),a),U($,b(Z1,{get each(){return X0()},children:(_,v)=>{let i0=()=>G0().start+v(),m0=()=>i0()===t0(),A0=()=>E0().has(_.path),l0=()=>[_.dirty?"dirty":"",_.kobeManaged?"":"external"].filter(Boolean).join(",");return(()=>{var B1=W("text");return q(B1,"wrapMode","none"),q(B1,"onMouseUp",()=>{z1(i0()),W0(_.path)}),U(B1,()=>m0()?"\u25B8 ":" ",null),U(B1,()=>A0()?"[x] ":"[ ] ",null),U(B1,()=>_.branch,null),U(B1,(()=>{var R1=N0(()=>!!l0());return()=>R1()?` (${l0()})`:""})(),null),y((R1)=>{var DJ=m0()?Y.primary:A0()?Y.accent:Y.textMuted,jz=m0()?Hz.BOLD:void 0;return DJ!==R1.e&&(R1.e=q(B1,"fg",DJ,R1.e)),jz!==R1.t&&(R1.t=q(B1,"attributes",jz,R1.t)),R1},{e:void 0,t:void 0}),B1})()}}),a),U($,b(Y0,{get when(){return G0().start+G0().items.length<G0().total},get children(){var _=W("text");return q(_,"wrapMode","none"),U(_,()=>F("newTask.picker.moreBelow",{count:G0().total-G0().start-G0().items.length})),y((v)=>q(_,"fg",Y.textMuted,v)),_}}),a),q(a,"wrapMode","none"),U(a,(()=>{var _=N0(()=>E0().size>0);return()=>_()?F("newTask.adopt.hintSelected",{count:E0().size}):F("newTask.adopt.hintDefault")})()),y((_)=>q(a,"fg",Y.textMuted,_)),$}})]}}),null),U(I0,b(Y0,{get when(){return V0()},get children(){var $=W("text"),a=T0("\u203B ");return D($,a),q($,"wrapMode","word"),U($,V0,null),y((_)=>q($,"fg",Y.error,_)),$}}),null),D(fJ,pJ),D(fJ,bJ),q(fJ,"flexDirection","row"),q(fJ,"justifyContent","space-between"),q(fJ,"alignItems","center"),q(fJ,"paddingTop",1),q(fJ,"paddingBottom",1),U(pJ,()=>F("newTask.hint.legend")),q(bJ,"onMouseUp",()=>x0()),U(bJ,(()=>{var $=N0(()=>!!z0());return()=>$()?F("newTask.button.cloning"):N0(()=>j()==="confirm")()?F("newTask.button.createFocused"):F("newTask.button.create")})()),y(($)=>{var a=Hz.BOLD,_=Y.text,v=F1("engine"),i0=A1("engine"),m0=Y.textMuted,A0=Y.textMuted,l0=j()==="confirm"?Y.primary:Y.text,B1=j()==="confirm"?Hz.BOLD:void 0;return a!==$.e&&($.e=q(e,"attributes",a,$.e)),_!==$.t&&($.t=q(e,"fg",_,$.t)),v!==$.a&&($.a=q(UJ,"fg",v,$.a)),i0!==$.o&&($.o=q(UJ,"attributes",i0,$.o)),m0!==$.i&&($.i=q(_J,"fg",m0,$.i)),A0!==$.n&&($.n=q(pJ,"fg",A0,$.n)),l0!==$.s&&($.s=q(bJ,"fg",l0,$.s)),B1!==$.h&&($.h=q(bJ,"attributes",B1,$.h)),$},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0}),I})()}var dF=C(()=>{w();w();w();w();w();w();w();w();ZJ();_1();W1();h1();Uf();kJ();Lf();$J();uF();i8()});function Zx(J,z,Y,Z){return new Promise((G)=>{J.replace(()=>b(cF,{defaultRepo:z,savedRepos:Y,get defaultCloneParent(){return Z?.defaultCloneParent},get defaultVendor(){return Z?.defaultVendor},get availableVendors(){return Z?.availableVendors},get discoverAdoptable(){return Z?.discoverAdoptable},onSubmit:(X)=>G(X),onCancel:()=>G(void 0)}),()=>G(void 0)),J.setSize("medium")})}var Ff;var pG=C(()=>{w();dF();i8();Ff={show:Zx}});function nF(J,z){return[{key:"tab",cmd:()=>z.cycleField(1)},{key:"shift+tab",cmd:()=>z.cycleField(-1)},{key:"ctrl+e",cmd:()=>z.stepEngine(1)},...J==="engine"?[{key:"left",cmd:()=>z.stepEngine(-1)},{key:"right",cmd:()=>z.stepEngine(1)},{key:"return",cmd:()=>z.commit()}]:[]]}import{TextAttributes as iF}from"@opentui/core";function Gx(J){let z=n1(),{theme:Y}=w0(),[Z,G]=p("prompt"),[X,Q]=p(""),[H,f]=p(J.defaultVendor),[j,V]=p(J.defaultBaseRef);function B(O){let R=Mf.indexOf(Z());G(Mf[(R+O+Mf.length)%Mf.length]??"prompt")}function K(O){let R=J.engines;if(R.length===0)return;if(O>0){f((P)=>AY(R,P));return}let u=Math.max(0,R.indexOf(H()));f(R[(u-1+R.length)%R.length]??H())}function L(){if(kQ(X())){G("prompt");return}J.onSubmit({prompt:X().trim(),vendor:H(),baseRef:j().trim()||J.defaultBaseRef}),z.clear()}U1(()=>({enabled:!0,bindings:nF(Z(),{cycleField:B,stepEngine:K,commit:L})}));let A=(O)=>Z()===O?Y.accent:Y.textMuted;return(()=>{var O=W("box"),R=W("box"),u=W("text"),P=W("text"),S=W("box"),g=W("text"),M=W("input"),T=W("box"),d=W("text"),i=W("box"),J0=W("text"),E=W("input"),z0=W("box"),q0=W("text");return D(O,R),D(O,S),D(O,T),D(O,i),D(O,z0),q(O,"paddingLeft",2),q(O,"paddingRight",2),q(O,"gap",1),D(R,u),D(R,P),q(R,"flexDirection","row"),q(R,"justifyContent","space-between"),U(u,()=>F("quickTask.title",{repoLabel:J.repoLabel})),q(P,"onMouseUp",()=>J.onCancel()),U(P,()=>F("quickTask.esc")),D(S,g),D(S,M),q(S,"gap",0),U(g,()=>F("quickTask.promptLabel")),q(M,"onInput",(o)=>Q(gJ(o))),q(M,"onSubmit",()=>L()),D(T,d),q(T,"flexDirection","row"),q(T,"gap",2),U(d,()=>F("quickTask.engineLabel")),U(T,b(Z1,{get each(){return J.engines},children:(o)=>(()=>{var B0=W("text");return q(B0,"onMouseUp",()=>{f(o),G("engine")}),U(B0,()=>J.engineLabel(o)),y((g0)=>{var m=H()===o?Y.primary:Y.textMuted,r=H()===o?iF.BOLD:void 0;return m!==g0.e&&(g0.e=q(B0,"fg",m,g0.e)),r!==g0.t&&(g0.t=q(B0,"attributes",r,g0.t)),g0},{e:void 0,t:void 0}),B0})()}),null),D(i,J0),D(i,E),q(i,"gap",0),U(J0,()=>F("quickTask.branchLabel")),q(E,"onInput",(o)=>V(gJ(o))),q(E,"onSubmit",()=>L()),D(z0,q0),q(z0,"paddingBottom",1),U(q0,()=>F("quickTask.legend")),y((o)=>{var B0=iF.BOLD,g0=Y.text,m=Y.textMuted,r=A("prompt"),c=X(),N=F("quickTask.promptPlaceholder"),t=Z()==="prompt",x=A("engine"),n=A("branch"),Q0=j(),H0=J.defaultBaseRef,F0=Z()==="branch",M0=Y.textMuted;return B0!==o.e&&(o.e=q(u,"attributes",B0,o.e)),g0!==o.t&&(o.t=q(u,"fg",g0,o.t)),m!==o.a&&(o.a=q(P,"fg",m,o.a)),r!==o.o&&(o.o=q(g,"fg",r,o.o)),c!==o.i&&(o.i=q(M,"value",c,o.i)),N!==o.n&&(o.n=q(M,"placeholder",N,o.n)),t!==o.s&&(o.s=q(M,"focused",t,o.s)),x!==o.h&&(o.h=q(d,"fg",x,o.h)),n!==o.r&&(o.r=q(J0,"fg",n,o.r)),Q0!==o.d&&(o.d=q(E,"value",Q0,o.d)),H0!==o.l&&(o.l=q(E,"placeholder",H0,o.l)),F0!==o.u&&(o.u=q(E,"focused",F0,o.u)),M0!==o.c&&(o.c=q(q0,"fg",M0,o.c)),o},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0}),O})()}function Xx(J,z){return new Promise((Y)=>{J.replace(()=>b(Gx,gL(z,{onSubmit:(Z)=>Y(Z),onCancel:()=>Y(void 0)})),()=>Y(void 0)),J.setSize("medium")})}var Mf,lF;var $F=C(()=>{w();w();w();w();w();w();w();W1();_1();h1();ZJ();kJ();$J();pG();Mf=["prompt","engine","branch"];lF={show:Xx}});async function Of(J={}){let z=J.logTag??"orch-connect",Y=J.connect??Qz,Z=null;try{let G=await Y();if(!G)return ZY(z,"no daemon running \u2014 caller degrades"),null;return Z=new AJ(G,{...J.orchestratorOptions,channels:J.channels}),await Z.init(),Z}catch(G){return JJ(z,G),Z?.dispose(),null}}var l8=C(()=>{GZ();CJ();_Y()});function aF(J){let[z,Y]=p(J.initial??"sidebar"),[Z,G]=p(0),X=WJ();function Q(B){if(G((L)=>L+1),z()===B)return;let K=X?.currentFocusedRenderable;if(K&&!K.isDestroyed)try{K.blur()}catch{}Y(B)}function H(B){let L=(Af.indexOf(z())+B+Af.length)%Af.length;Q(Af[L])}let f=new Map;function j(B){let K=f.get(B);if(!K)K=()=>z()===B,f.set(B,K);return K}let V={focused:z,is:j,setFocused:Q,cycle:H,refocusTick:Z};return b(Qx.Provider,{value:V,get children(){return J.children}})}var Af,Qx;var _F=C(()=>{w();w();W1();Af=["sidebar","workspace","files","terminal"],Qx=Pz(null)});function pF(){for(let J of pY){let z=qx.get(J.id);if(!z)continue;let Y=J;Y.keys=[...z.keys],Y.hint=z.hint?{...z.hint}:void 0}}function rF(){Hx((J)=>J+1)}function a8(J){return fx.get(J)}function jx(J){return a8(J)?.keys??[]}function rY(J){let z=[];for(let Y in J){let Z=J[Y];if(!Z)continue;let G=jx(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)=>z.push({key:X,cmd:Z,slot:Q}))}return z}var pY,qx,$8,Hx,fx;var rG=C(()=>{W1();pY=[{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"}}],qx=new Map(pY.map((J)=>[J.id,{keys:[...J.keys],hint:J.hint?{...J.hint}:void 0}]));[$8,Hx]=p(0);fx=new Map(pY.map((J)=>[J.id,J]))});function Rf(){if(oY)return oY;let J=iq();if(!J.exists)return oY={path:J.path,exists:!1,applied:[],warnings:[]},oY;let z=[...J.warnings],Y=$q(J.doc,process.platform,{chordOptsFor:OB});z.push(...Y.warnings);let Z=Y.entries.filter((H)=>H.id.startsWith("tmux.")),G=Y.entries.filter((H)=>!H.id.startsWith("tmux.")),X=vK(pY,G);z.push(...X.warnings);let Q=[...X.applied];if(Z.length>0){let H=MB(Z);z.push(...H.warnings);for(let f of H.overridden){if(f===vz){Q.push({id:f,keys:H.focus.map((B)=>B?.chord??"").filter((B)=>B!==""),defaultKeys:uY});continue}let j=H.binds[f];Q.push({id:f,keys:j?[j.chord]:[],defaultKeys:[AZ[f]]});let V=pY.find((B)=>B.id===f);if(V?.hint)V.hint.keys=j?`${jG(f)?"prefix ":""}${j.chord}`:"\u2014"}}for(let H of z)console.warn(`[kobe/keybindings] ${H}`);return oY={path:J.path,exists:!0,applied:Q,warnings:z},oY}function oF(){return oY??Rf()}function sF(){oY=null,hK(),nK(),pF();let J=Rf();return rF(),J}var oY=null;var _8=C(()=>{LB();pq();aq();rG()});var Bx=250,oG,tF;var SQ=C(()=>{lG();sz();C8();({use:oG,provider:tF}=Wf({name:"KV",init:()=>{let[J,z]=_z(LJ()),Y=new Set,Z=null;function G(H){if(Y.size===0)return!0;try{let f={};for(let j of Y)f[j]=J[j];return gY(f),Y.clear(),!0}catch(f){return console.error(`[kobe] kv ${H} failed:`,f),!1}}function X(){if(Z)clearTimeout(Z);Z=setTimeout(()=>{Z=null,G("write")},Bx)}let Q={get ready(){return!0},get store(){return J},signal(H,f){if(J[H]===void 0)z(H,f);return[()=>Q.get(H),(j)=>Q.set(H,j)]},get(H,f){return J[H]??f},set(H,f){z(H,f),Y.add(H),X()},flush(){if(Z)clearTimeout(Z),Z=null;return G("flush")},clear(){for(let H of Object.keys(J))z(H,void 0);if(Z)clearTimeout(Z),Z=null;Y.clear();try{VV({})}catch(H){console.error("[kobe] kv clear write failed:",H)}}};return Q}}))});var gf="../pulse-n3cq1btw.wav";var eF=()=>{};import{existsSync as Vx,mkdirSync as Kx}from"fs";import{tmpdir as Ux}from"os";import{basename as Dx,isAbsolute as Lx,join as p8,resolve as Fx}from"path";function Ox(J,z,Y){if(J==="ffplay")return[J,"-autoexit","-nodisp","-af",`volume=${Y}`,z];if(J==="mpv")return[J,"--no-video","--audio-display=no","--volume",String(Math.round(Y*100)),z];if(J==="mpg123"||J==="mpg321")return[J,"-g",String(Math.round(Y*100)),z];if(J==="mplayer")return[J,"-vo","null","-volume",String(Math.round(Y*100)),z];if(J==="afplay"||J==="omxplayer"||J==="aplay"||J==="cmdmp3")return[J,z];if(J==="play")return[J,"-v",String(Y),z];if(J==="cvlc")return[J,`--gain=${Y}`,"--play-and-exit",z];return[J,"-c",`(New-Object Media.SoundPlayer '${z.replace(/'/g,"''")}').PlaySync()`]}function Ax(){if(Nf!==void 0)return Nf;let z=(process.env.PATH??"").split(":").filter(Boolean);return Nf=Mx.find((Y)=>z.some((Z)=>Vx(p8(Z,Y))))??null,Nf}async function Rx(){return YM??=(async()=>{Kx(zM,{recursive:!0});let J=p8(zM,Dx(JM)),z=Bun.file(J);if(await z.exists())return J;return await Bun.write(z,Bun.file(JM)),J})(),YM}function ZM(J=0.4){let z=Ax();if(!z)return;Rx().then((Y)=>{try{Bun.spawn(Ox(z,Y,J),{stdin:"ignore",stdout:"ignore",stderr:"ignore"}).unref?.()}catch{}}).catch(()=>{return})}var JM,zM,Mx,Nf,YM;var GM=C(()=>{eF();JM=Lx(gf)?gf:Fx(import.meta.dir,gf),zM=p8(Ux(),"kobe-sfx"),Mx=["ffplay","mpv","mpg123","mpg321","mplayer","afplay","play","omxplayer","aplay","cmdmp3","cvlc","powershell.exe"]});function XM(J,z){return`${J}:${z}`}function qM(J){let z=oG(),[Y,Z]=p([]),[G,X]=p(new Map),Q=Kf(),H=0;function f(K){if(X((L)=>{let A=new Map(L),O=XM(K.taskId,K.tabId),R=L.get(O);if(R==="needs_input"||R==="error")return L;return A.set(O,K.kind),A}),z.get("notifications.sound.enabled",!0)!==!1){try{process.stdout.write("\x07")}catch{}ZM()}if(z.get("notifications.toast.enabled",!0)!==!1){let L=++H,A={id:L,kind:K.kind,taskId:K.taskId,tabId:K.tabId,title:K.title};Z((O)=>[...O,A]),Q.set(()=>j(L),gx)}}function j(K){Z((L)=>L.filter((A)=>A.id!==K))}function V(K,L){X((A)=>{let O=XM(K,L);if(!A.has(O))return A;let R=new Map(A);return R.delete(O),R})}let B={toasts:Y,unread:G,notify:f,dismiss:j,markRead:V};return b(QM.Provider,{value:B,get children(){return J.children}})}function Cf(){let J=mJ(QM);if(!J)throw Error("useNotifications must be used within a NotificationsProvider");return J}var gx=4500,QM;var kf=C(()=>{w();W1();E8();GM();SQ();QM=Pz()});function r8(J,z){if(typeof z.theme==="string"&&z.theme.length>0&&z.theme!==J.selectedTheme()){if(!J.hasTheme(z.theme))J.reloadUserThemes();if(J.hasTheme(z.theme))J.setTheme(z.theme)}if(typeof z.transparentBackground==="boolean"&&z.transparentBackground!==J.transparentBackground())J.setTransparentBackground(z.transparentBackground);if(z.focusAccent===null||typeof z.focusAccent==="string"){let Y=Cx(z.focusAccent);if(Y&&Y!==J.focusAccent())J.setFocusAccent(Y)}}function Cx(J){if(J===null)return"primary";return Nx.includes(J)?J:null}var Nx;var HM=C(()=>{Nx=["primary","success","info"]});import{readFileSync as kx}from"fs";function fM(J){try{let z=JSON.parse(kx(oJ(),"utf8")),Y=typeof z.activeTheme==="string"&&OQ(z.activeTheme)?z.activeTheme:J,Z=z.transparentBackground===!0,G=typeof z.focusAccent==="string"&&vZ.includes(z.focusAccent)?z.focusAccent:null,X=AQ(z[bf])?z[bf]:aG;return{theme:Y,transparent:Z,focusAccent:G,locale:X}}catch{return{theme:J,transparent:!1,focusAccent:null,locale:aG}}}var bf="locale";var o8=C(()=>{p1();h1();_G()});function Sx(J){if(J)oQ(J);TV(),Rf();for(let{name:z,theme:Y}of EX())b8(z,Y)}function Ix(J){let z={backgroundColor:"transparent",externalOutputMode:"passthrough",exitOnCtrlC:!1,screenMode:"alternate-screen",useKittyKeyboard:{}};return J?{...z,onDestroy:J}:z}function yx(J){let z=()=>J.children,Y=()=>J.notifications?b(qM,{get children(){return z()}}):z(),Z=()=>b(AF,{get children(){return Y()}}),G=()=>J.focus?b(aF,{initial:"sidebar",get children(){return Z()}}):Z(),X=()=>J.kv?b(tF,{get children(){return G()}}):G();return b(hL,{mode:"dark",get theme(){return J.theme},get children(){return X()}})}function Tx(J){let{theme:z}=w0();return QJ(()=>JJ("pane-crash",J.error)),(()=>{var Y=W("box"),Z=W("text"),G=W("text");return D(Y,Z),D(Y,G),q(Y,"flexDirection","column"),q(Y,"flexGrow",1),q(Y,"paddingLeft",1),q(Y,"paddingTop",1),q(Y,"gap",1),U(Z,()=>F("common.paneCrash.title")),U(G,()=>F("common.paneCrash.hint")),y((X)=>{var{background:Q,error:H,textMuted:f}=z;return Q!==X.e&&(X.e=q(Y,"backgroundColor",Q,X.e)),H!==X.t&&(X.t=q(Z,"fg",H,X.t)),f!==X.a&&(X.a=q(G,"fg",f,X.a)),X},{e:void 0,t:void 0,a:void 0}),Y})()}function xx(J){let z=w0(),Y={selectedTheme:()=>z.selected,hasTheme:(H)=>z.has(H),setTheme:(H)=>z.set(H),reloadUserThemes:()=>{for(let{name:H,theme:f}of EX())b8(H,f)},transparentBackground:()=>z.transparentBackground,setTransparentBackground:(H)=>z.setTransparentBackground(H),focusAccent:()=>z.focusAccent,setFocusAccent:(H)=>z.setFocusAccent(H)};r8(Y,{theme:J.boot.theme,transparentBackground:J.boot.transparent,focusAccent:J.boot.focusAccent}),RQ(J.boot.locale);let[Z,G]=p(null),X=!1;QJ(()=>{(async()=>{let H=await Of({logTag:"ui-prefs",channels:["ui-prefs","keybindings"]});if(!H)return;if(X){H.dispose();return}G(H)})()}),_0(()=>{let H=Z()?.uiPrefsSignal()();if(!H)return;if(r8(Y,H),AQ(H.locale))RQ(H.locale)});let Q=null;return _0(()=>{let H=Z()?.keybindingsRevSignal()();if(H==null)return;if(Q===null||H===Q){Q=H;return}Q=H,sF()}),T1(()=>{X=!0,Z()?.dispose()}),null}async function KJ(J){Sx(J.logContext);let z=fM(bx),Y=await J.setup(z),Z=J.providers?.kv??!0,G=J.providers?.focus??!0,X=J.providers?.notifications??!1;await yL(()=>b(yx,{get theme(){return z.theme},kv:Z,focus:G,notifications:X,get children(){return[b(xx,{boot:z}),b(QK,{fallback:(Q)=>b(Tx,{error:Q}),get children(){return Y.root()}})]}}),Ix(Y.onDestroy))}var bx="claude";var MY=C(()=>{w();w();w();w();w();w();w();GZ();W1();l8();_F();_8();SQ();kf();h1();XH();ZJ();$J();HM();o8()});import{homedir as ux}from"os";async function s8(J,z,Y,Z,G={}){let X=I1(z.id);if(await K1(X))return!0;let{archivedHistoryPreviewEnabled:Q}=await Promise.resolve().then(() => (nq(),TK));if(z.archived&&Q()){let{ensureSession:K}=await Promise.resolve().then(() => (zJ(),EJ)),L=z.worktreePath??"",A=L&&xY(L)?L:Y&&xY(Y)?Y:ux();if(!await K({name:X,cwd:A,command:cJ(Z),taskId:z.id,vendor:Z,repo:Y,archived:!0,archivedWorktree:L||A,title:z.title}))throw new sY("session",`failed to start history session for ${z.id}`);return!1}let H=z.worktreePath;if(!H||!xY(H)){if(!J)throw new sY("no-daemon",`no daemon; cannot materialise worktree for ${z.id}`);try{H=await J.ensureWorktree(z.id)}catch(K){throw new sY("worktree",`ensureWorktree failed for ${z.id}`,K)}await G.reload?.()}if(!H||!xY(H))throw new sY("worktree",`task ${z.id} has no usable worktree`);let{ensureSession:f}=await Promise.resolve().then(() => (zJ(),EJ)),{resolveEngineLaunchInit:j}=await Promise.resolve().then(() => (yG(),cH)),V=Y?j(Y,H,{kind:G.includeInitPrompt?"repo-init":"none"}):void 0;if(!await f({name:X,cwd:H,command:cJ(Z),taskId:z.id,vendor:Z,repo:Y,launchInit:V}))throw new sY("session",`failed to start tmux session for ${z.id}`);return!1}async function t8(J,z,Y,Z,G={}){let X=I1(z.id),Q=await Promise.resolve().then(() => (zJ(),EJ));if(G.captureFrom){let j=await Q.currentSessionName();if(j&&j!==X)await Q.captureGlobalLayout(j)}if(await s8(J,z,Y,Z,{includeInitPrompt:G.includeInitPrompt,reload:G.reload})&&G.heal)try{let j=await kZ(X,"@kobe_worktree")||z.worktreePath||"";if(j&&xY(j)){let{resolveEngineLaunchInit:V}=await Promise.resolve().then(() => (yG(),cH)),B=Y?V(Y,j,{kind:G.includeInitPrompt?"repo-init":"none"}):void 0;await Q.ensureSession({name:X,cwd:j,command:cJ(Z),taskId:z.id,vendor:Z,repo:Y,launchInit:B})}}catch(j){console.error("[kobe handover] heal failed (continuing to switch):",j)}let{syncSessionZen:f}=await Promise.resolve().then(() => (PY(),hB));if(await f(X),G.isCurrent&&!G.isCurrent())return;await J?.setActiveTask(z.id).catch(()=>{}),await Q.enterWindow(X)}async function Sf(J,z,Y,Z,G={}){await t8(J,z,Y,Z,{includeInitPrompt:G.includeInitPrompt})}var sY;var If=C(()=>{Yz();Oz();c1();sY=class sY extends Error{phase;cause;constructor(J,z,Y){super(z);this.name="HandoverError",this.phase=J,this.cause=Y}}});var jM={};q1(jM,{startNewTaskHost:()=>Ex,NewTaskPage:()=>yf});function yf(J){let{theme:z}=w0(),Y=n1();QJ(()=>{Z()});async function Z(){let G=SJ(),X=J.defaultRepo||G[0]||process.cwd(),Q=PJ(S1("lastSelectedVendor"),hJ()),H=await GY(),f=J.orchestrator,j=await Ff.show(Y,X,G,{defaultVendor:Q,availableVendors:H,discoverAdoptable:f?(B)=>f.discoverAdoptableWorktrees(B):void 0});if(!j)process.exit(0);if(e1("lastSelectedVendor",j.vendor),ez(j.repo),!f)console.error("[kobe new-task] no daemon; cannot create task"),process.exit(1);let V;try{if(j.mode==="adopt")for(let B of j.adopt)V=await f.adoptWorktree({repo:j.repo,worktreePath:B.worktreePath,branch:B.branch,vendor:j.vendor});else V=await f.createTask({repo:j.repo,baseRef:j.baseRef,vendor:j.vendor})}catch(B){console.error("[kobe new-task] task.create/adopt failed:",B),process.exit(1)}if(V)try{await Sf(f,V,j.repo,j.vendor,{includeInitPrompt:j.mode!=="adopt"})}catch(B){console.error("[kobe new-task] auto-enter failed:",B)}process.exit(0)}return(()=>{var G=W("box");return q(G,"flexDirection","column"),q(G,"flexGrow",1),y((X)=>q(G,"backgroundColor",z.background,X)),G})()}async function Ex(J){await KJ({setup:async()=>{let z=null;try{let Y=await Sz(),Z=new AJ(Y);await Z.init(),z=Z}catch(Y){console.error("[kobe new-task] daemon unavailable; cannot create task:",Y)}return{root:()=>b(yf,{get defaultRepo(){return J.defaultRepo},orchestrator:z}),onDestroy:()=>{z?.dispose()}}}})}var e8=C(()=>{w();w();w();w();CJ();W1();_Y();XZ();C1();_1();pG();h1();MY();If();$J()});function Tf(J,z,Y,Z,G={}){if(J.length===0)return z;let X=new Map;for(let f of J)X.set(Y(f),f);let Q=J.length===z.length,H=Array(z.length);for(let f=0;f<z.length;f++){let j=z[f],V=X.get(Y(j));if(V&&Z(V,j)&&(!G.samePosition||J[f]===V)){if(H[f]=V,Q&&J[f]!==V)Q=!1}else H[f]=j,Q=!1}return Q?J:H}function BM(J,z){if(!J)return!0;let Y=J.toLowerCase(),Z=z.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 wx(J,z){let Y=z==="archived";return J.filter((Z)=>Z.archived===Y)}function JW(J,z,Y,Z="default",G){let X=wx(J,z),Q=Y?.trim()??"",H=G?fz(G):null,f=Q?X.filter((O)=>BM(Q,`${O.title} ${xz(O.repo)}`)):X,j=[],V=[],B=[],K=new Set;for(let O of f){if(O.kind==="main"){let R=fz(O.repo);if(K.has(R))continue;K.add(R),j.push(O);continue}if(H&&fz(O.repo)!==H)continue;if(O.pinned===!0)V.push(O);else B.push(O)}if(j.sort((O,R)=>xz(O.repo).localeCompare(xz(R.repo))),Z==="recent")V.sort(WM),B.sort(WM);let L=[],A=0;for(let O of j)L.push({kind:"task",task:O,flatIndex:A}),A++;for(let O of V)L.push({kind:"task",task:O,flatIndex:A}),A++;for(let O of B)L.push({kind:"task",task:O,flatIndex:A}),A++;return L}function WM(J,z){let Y=VM(z)-VM(J);if(Y!==0)return Y;return String(z.id).localeCompare(String(J.id))}function VM(J){let z=Date.parse(J.updatedAt||J.createdAt);return Number.isFinite(z)?z:0}function xz(J){let z=J.split("/").filter(Boolean);return z[z.length-1]??J}function fz(J){return J.trim().replace(/[\\/]+$/,"")||J}function Px(J,z){let Y=xz(J);if(!z.some((G)=>G!==J&&xz(G)===Y))return Y;return J.replace(/[\\/]+$/,"").split(/[\\/]+/).slice(-2).join("/")}function KM(J,z){let Y=z==="archived",Z=new Map;for(let X of J){let Q=fz(X.repo),H=Z.get(Q)??{repo:X.repo,count:0};if(X.kind==="main")H.repo=X.repo;else if(X.archived===Y)H.count+=1;Z.set(Q,H)}let G=[...Z.values()].map((X)=>X.repo);return[...Z.values()].map((X)=>({repo:X.repo,label:Px(X.repo,G),count:X.count})).sort((X,Q)=>X.label.localeCompare(Q.label))}function UM(J,z){if(J.length===0)return-1;if(!z)return J[0]?.flatIndex??-1;let Y=fz(z),Z=J.find((X)=>X.task.kind!=="main"&&fz(X.task.repo)===Y);if(Z)return Z.flatIndex;return J.find((X)=>X.task.kind==="main"&&fz(X.task.repo)===Y)?.flatIndex??J[0]?.flatIndex??-1}function zW(J){return J.map((z)=>z.task.id)}function DM(J,z,Y){let Z=z.length;if(J===null){if(Y===-1&&Z>0)return 0;if(Y>=Z)return Math.max(0,Z-1);if(Z===0)return-1;return Y}let G=z.indexOf(J);if(G>=0)return G;if(Z===0)return-1;if(Y<0||Y>=Z)return Z-1;return Y}function LM(J){let z=[],Y=[];for(let Z of J)if(Z.task.kind==="main")z.push(Z);else Y.push(Z);return{projectRows:z,taskRows:Y}}function hx(J,z){return J===z||J.id===z.id&&J.kind===z.kind&&J.title===z.title&&J.repo===z.repo&&J.branch===z.branch&&J.worktreePath===z.worktreePath&&J.status===z.status&&J.archived===z.archived&&J.pinned===z.pinned&&J.vendor===z.vendor}function FM(J,z){return Tf(J,z,(Y)=>Y.task.id,(Y,Z)=>Y.flatIndex===Z.flatIndex&&hx(Y.task,Z.task),{samePosition:!0})}var xf=()=>{};var MM={};q1(MM,{startQuickTaskHost:()=>dx});async function vx(J,z){let Y,Z;if(z){let B=await uJ(z,["@kobe_task","@kobe_worktree"]);Y=B["@kobe_task"]||void 0,Z=B["@kobe_worktree"]||void 0}let G=(Y?J?.getTask(Y)?.repo:void 0)??SJ()[0],X=G??Z??process.cwd();if(!G)return{ctx:null,fallbackRepo:X};let Q=await GY(),H=PJ(S1("lastSelectedVendor"),hJ()),f=Q.length===0||Q.includes(H)?H:Q[0]??H,j=gQ(RJ(G))??Tz,V=Q.length>0?Q:[f];return{ctx:{repo:G,vendor:f,baseRef:j,engines:V},fallbackRepo:X}}async function mx(J,z,Y,Z,G){let X=await s8(J,z,Y,Z),Q=I1(z.id),{pane:H}=await TX(Q,!X);if(H)await xX(H,G)}function cx(J){let{theme:z}=w0(),Y=n1();QJ(()=>{Z()});async function Z(){let G=J.ctx,X=await lF.show(Y,{repoLabel:xz(G.repo),engines:G.engines,defaultVendor:G.vendor,defaultBaseRef:G.baseRef,engineLabel:LZ});if(X===void 0)process.exit(0);e1("lastSelectedVendor",X.vendor),ez(G.repo);let Q=J.orchestrator;if(!Q)console.error("[kobe quick-task] no daemon; cannot create task"),process.exit(1);try{let H=await Q.createTask({repo:G.repo,baseRef:X.baseRef,vendor:X.vendor});await mx(Q,H,G.repo,X.vendor,X.prompt),await Sf(Q,H,G.repo,X.vendor)}catch(H){console.error("[kobe quick-task] task.create/deliver failed:",H),process.exit(1)}process.exit(0)}return(()=>{var G=W("box");return q(G,"flexDirection","column"),q(G,"flexGrow",1),y((X)=>q(G,"backgroundColor",z.background,X)),G})()}async function dx(J){await KJ({setup:async()=>{let z=null;try{let G=await Sz(),X=new AJ(G);await X.init(),z=X}catch(G){console.error("[kobe quick-task] daemon unavailable; cannot create task:",G)}let{ctx:Y,fallbackRepo:Z}=await vx(z,J.session);return{root:()=>Y?b(cx,{ctx:Y,orchestrator:z}):b(yf,{defaultRepo:Z,orchestrator:z}),onDestroy:()=>{z?.dispose()}}}})}var OM=C(()=>{w();w();w();w();CJ();W1();_Y();XZ();Yz();C1();c1();rq();_1();$F();h1();Uf();MY();Lf();If();e8();xf();$J()});function Ef(J){let z=J.trim().split(/\s+/).pop()??"",Y=/^([CM])-(.+)$/.exec(z);if(!Y)return null;let Z=Y[1]==="C"?"\u2303":"\u2325",G=Y[2]??"";return`${Z}${G.length===1?G.toUpperCase():G}`}function uf(J,z){if(J.includes("/"))return J.split("/").map((G)=>uf(G,z)).join("/");let Y=J.toLowerCase();if(Y==="tab")return"tab";let Z=ix[Y];if(Z)return Z;if(/^f\d{1,2}$/.test(Y))return Y.toUpperCase();if(!z)return J;if(/^[a-z]$/.test(Y))return J.toUpperCase();return J.replace(/[a-z]+/gi,(G)=>G.toUpperCase())}function sG(J,z="\u2303B"){let Y=J.trim();if(!Y)return Y;let Z=/^prefix\s+(.+)$/i.exec(Y);if(Z){let H=Z[1]??"";return`${z} ${H.includes("+")?sG(H,z):uf(H,!0)}`}let G=Y.split("+");if(G.length===1)return uf(G[0]??"",!1);let X=G[G.length-1]??"";return`${G.slice(0,-1).map((H)=>nx[H.toLowerCase().trim()]??H).join("")} ${uf(X,!0)}`}var nx,ix;var YW=C(()=>{nx={ctrl:"\u2303",control:"\u2303",alt:"\u2325",opt:"\u2325",option:"\u2325",shift:"\u21E7",cmd:"\u2318",command:"\u2318",meta:"\u2318",super:"\u2318"},ix={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 AM}from"@opentui/core";function lx(J){let z=new Map,Y=[];for(let Z of J){if(!z.has(Z.category))z.set(Z.category,[]),Y.push(Z.category);z.get(Z.category).push(Z)}return Y.map((Z)=>({category:Z,rows:z.get(Z)}))}function tG(J={}){let z=n1(),{theme:Y}=w0(),Z=()=>lx(pY),G=()=>J.onClose?J.onClose():z.clear(),[X,Q]=p("\u2303B");return QJ(()=>{a0(["show-options","-g","prefix"]).then(({code:H,stdout:f})=>{if(H!==0)return;let j=Ef(f);if(j)Q(j)})}),U1(()=>({bindings:[{key:"?",cmd:G}]})),(()=>{var H=W("box"),f=W("box"),j=W("text"),V=W("text"),B=W("scrollbox"),K=W("box");return D(H,f),D(H,B),q(H,"paddingLeft",2),q(H,"paddingRight",2),q(H,"gap",1),q(H,"flexShrink",1),D(f,j),D(f,V),q(f,"flexDirection","row"),q(f,"justifyContent","space-between"),q(f,"flexShrink",0),U(j,()=>F("help.title")),q(V,"onMouseUp",G),U(V,()=>F("help.esc")),D(B,K),q(B,"flexShrink",1),q(B,"flexGrow",1),q(B,"stickyScroll",!1),q(K,"paddingBottom",1),q(K,"gap",1),q(K,"paddingRight",1),U(K,b(Z1,{get each(){return Z()},children:(L)=>(()=>{var A=W("box"),O=W("text");return D(A,O),q(A,"gap",0),U(O,()=>y8("category",L.category)),U(A,b(Z1,{get each(){return L.rows},children:(R)=>{let u=R.hint?.keys??R.keys[0]??"\u2014",P=()=>u==="\u2014"?"\u2014":sG(u,X()),S=()=>(R.hint?R.keys:R.keys.slice(1)).map((g)=>sG(g,X()));return(()=>{var g=W("box"),M=W("box"),T=W("text"),d=W("box"),i=W("text");return D(g,M),D(g,d),q(g,"flexDirection","row"),q(g,"gap",2),q(g,"paddingLeft",1),D(M,T),q(M,"width",14),U(T,P),D(d,i),q(d,"flexGrow",1),U(i,()=>y8("desc",R.id)),U(g,(()=>{var J0=N0(()=>S().length>0);return()=>J0()?(()=>{var E=W("box"),z0=W("text");return D(E,z0),U(z0,()=>`(${S().join(", ")})`),y((q0)=>q(z0,"fg",Y.textMuted,q0)),E})():null})(),null),y((J0)=>{var{primary:E,text:z0}=Y;return E!==J0.e&&(J0.e=q(T,"fg",E,J0.e)),z0!==J0.t&&(J0.t=q(i,"fg",z0,J0.t)),J0},{e:void 0,t:void 0}),g})()}}),null),y((R)=>{var u=Y.accent,P=AM.BOLD;return u!==R.e&&(R.e=q(O,"fg",u,R.e)),P!==R.t&&(R.t=q(O,"attributes",P,R.t)),R},{e:void 0,t:void 0}),A})()})),y((L)=>{var A=AM.BOLD,O=Y.text,R=Y.textMuted,u={trackOptions:{backgroundColor:Y.backgroundDialog,foregroundColor:Y.borderActive}};return A!==L.e&&(L.e=q(j,"attributes",A,L.e)),O!==L.t&&(L.t=q(j,"fg",O,L.t)),R!==L.a&&(L.a=q(V,"fg",R,L.a)),u!==L.o&&(L.o=q(B,"verticalScrollbarOptions",u,L.o)),L},{e:void 0,t:void 0,a:void 0,o:void 0}),H})()}var ZW=C(()=>{w();w();w();w();w();w();w();W1();c1();rG();h1();ZJ();YW();kJ();$J();tG.show=(J)=>{J.replace(()=>b(tG,{}))}});import{TextAttributes as $x}from"@opentui/core";function RM(J){let z=n1(),{theme:Y}=w0(),[Z,G]=p(J.currentTitle);function X(){let Q=Z().trim();if(kQ(Q)&&!J.allowEmpty)return;J.onSubmit(Q),z.clear()}return(()=>{var Q=W("box"),H=W("box"),f=W("text"),j=W("text"),V=W("box"),B=W("text"),K=W("input"),L=W("box"),A=W("text");return D(Q,H),D(Q,V),D(Q,L),q(Q,"paddingLeft",2),q(Q,"paddingRight",2),q(Q,"gap",1),D(H,f),D(H,j),q(H,"flexDirection","row"),q(H,"justifyContent","space-between"),U(f,()=>J.dialogTitle??F("common.rename.defaultTitle")),D(j,T0("esc")),q(j,"onMouseUp",()=>J.onCancel()),D(V,B),D(V,K),q(V,"gap",0),U(B,()=>J.fieldLabel??F("common.rename.defaultFieldLabel")),q(K,"focused",!0),q(K,"onInput",(O)=>G(gJ(O))),q(K,"onSubmit",()=>X()),D(L,A),q(L,"paddingBottom",1),U(A,()=>F("common.rename.footerHint",{submitLabel:J.submitLabel??F("common.rename.defaultSubmitLabel")})),y((O)=>{var R=$x.BOLD,u=Y.text,P=Y.textMuted,S=Y.accent,g=Z(),M=J.placeholder??J.currentTitle,T=Y.textMuted;return R!==O.e&&(O.e=q(f,"attributes",R,O.e)),u!==O.t&&(O.t=q(f,"fg",u,O.t)),P!==O.a&&(O.a=q(j,"fg",P,O.a)),S!==O.o&&(O.o=q(B,"fg",S,O.o)),g!==O.i&&(O.i=q(K,"value",g,O.i)),M!==O.n&&(O.n=q(K,"placeholder",M,O.n)),T!==O.s&&(O.s=q(A,"fg",T,O.s)),O},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),Q})()}var gM=C(()=>{w();w();w();w();w();w();w();ZJ();W1();h1();$J();pG()});function ax(J,z,Y={}){return new Promise((Z)=>{J.replace(()=>b(RM,{currentTitle:z,get dialogTitle(){return Y.dialogTitle},get fieldLabel(){return Y.fieldLabel},get submitLabel(){return Y.submitLabel},get placeholder(){return Y.placeholder},get allowEmpty(){return Y.allowEmpty},onSubmit:(G)=>Z(G),onCancel:()=>Z(void 0)}),()=>Z(void 0))})}var rz;var GW=C(()=>{w();gM();rz={show:ax}});import{TextAttributes as _x}from"@opentui/core";function px(J){if(!J)return J;return J.charAt(0).toUpperCase()+J.slice(1)}function uz(J){let z=n1(),{theme:Y}=w0(),[Z,G]=_z({active:J.initialActive??"confirm"});return U1(()=>({bindings:[{key:"return",cmd:()=>{if(Z.active==="confirm")J.onConfirm?.();if(Z.active==="cancel")J.onCancel?.();z.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"),H=W("text"),f=W("text"),j=W("text"),V=W("box");return D(X,Q),D(X,j),D(X,V),q(X,"paddingLeft",2),q(X,"paddingRight",2),q(X,"paddingBottom",1),q(X,"gap",0),D(Q,H),D(Q,f),q(Q,"flexDirection","row"),q(Q,"justifyContent","space-between"),U(H,()=>J.title),D(f,T0("esc")),q(f,"onMouseUp",()=>z.clear()),U(j,()=>J.message),q(V,"flexDirection","row"),q(V,"justifyContent","flex-end"),q(V,"paddingTop",1),U(V,b(Z1,{each:["cancel","confirm"],children:(B)=>(()=>{var K=W("box"),L=W("text");return D(K,L),q(K,"paddingLeft",1),q(K,"paddingRight",1),q(K,"onMouseUp",()=>{if(B==="confirm")J.onConfirm?.();if(B==="cancel")J.onCancel?.();z.clear()}),U(L,()=>px(B==="cancel"?J.label??F("common.cancel"):J.confirmLabel??F("common.confirm"))),y((A)=>{var O=B===Z.active?Y.primary:void 0,R=B===Z.active?Y.selectedListItemText:Y.textMuted;return O!==A.e&&(A.e=q(K,"backgroundColor",O,A.e)),R!==A.t&&(A.t=q(L,"fg",R,A.t)),A},{e:void 0,t:void 0}),K})()})),y((B)=>{var K=_x.BOLD,L=Y.text,A=Y.textMuted,O=Y.textMuted;return K!==B.e&&(B.e=q(H,"attributes",K,B.e)),L!==B.t&&(B.t=q(H,"fg",L,B.t)),A!==B.a&&(B.a=q(f,"fg",A,B.a)),O!==B.o&&(B.o=q(j,"fg",O,B.o)),B},{e:void 0,t:void 0,a:void 0,o:void 0}),X})()}var wf=C(()=>{w();w();w();w();w();w();w();ZJ();W1();lG();h1();kJ();$J();uz.show=(J,z,Y,Z,G,X)=>{return new Promise((Q)=>{J.replace(()=>b(uz,{title:z,message:Y,onConfirm:()=>Q(!0),onCancel:()=>Q(!1),label:Z,confirmLabel:G,get initialActive(){return X?.initialActive}}),()=>Q(void 0)),J.setSize("small")})}});import{unlinkSync as rx}from"fs";import{join as ox}from"path";function NM(J){return J instanceof AJ}function CM(J,z){try{J?.destroy()}catch(Y){console.error(`kobe: renderer.destroy() failed during ${z}:`,Y)}}async function XW(J,z,Y){if(await uz.show(J,"Reset UI state?","Wipes ~/.config/kobe/state.json and ~/.kobe/tasks.json, then quits kobe \u2014 relaunch for a fresh start with empty Working session / Archive lists. Worktrees on disk and Claude Code session history are NOT touched.","cancel")!==!0)return;z.clear();try{rx(ox(rJ(),".kobe","tasks.json"))}catch(G){if(G.code!=="ENOENT")console.error("kobe: failed to delete tasks.json during reset:",G)}CM(Y,"reset"),process.stderr.write(`kobe: UI state reset. Relaunch kobe to start fresh.
263
+ `),process.exit(0)}async function QW(J,z,Y){if(!(z instanceof AJ))return;if(await uz.show(J,"Restart backend?","Quits this kobe window. Relaunch to (re)spawn the daemon. Any other attached windows keep their connection. In v0.6 the daemon's RPC surface shrank to task CRUD + subscribe, so a graceful daemon.stop RPC is no longer plumbed through the client \u2014 quit + relaunch is the path.","cancel")!==!0)return;CM(Y,"daemon restart"),process.stderr.write(`kobe: window closed. Relaunch kobe to start fresh.
264
+ `),process.exit(0)}var kM=C(()=>{_Y();p1();wf()});function sx(J){return`theme:${J}`}function qW(J){return`language:${J}`}function HW(J){return`accent:${J}`}function tx(J){return`engine:${J}`}function IQ(J){return`surface:${J}`}function fW(J){return[...J.themeNames.map((z)=>({id:sx(z),kind:"theme",name:z})),...mZ.map((z)=>({id:qW(z.id),kind:"language",locale:z.id})),{id:"transparent",kind:"transparent"},...J.focusAccentSlots.map((z)=>({id:HW(z),kind:"focusAccent",slot:z})),{id:"toast",kind:"toast"},{id:"sound",kind:"sound"},{id:"zen-keep-tasks",kind:"zenKeepTasks"},{id:IQ("chattab"),kind:"surface",surface:"chattab"},{id:IQ("taskpanel"),kind:"surface",surface:"taskpanel"},{id:"editor-kind",kind:"editorKind"},{id:"editor-custom",kind:"editorCustom"},{id:"worktree-base",kind:"worktreeBase"}]}function ex(J){return[...J.map((z)=>({id:tx(z),kind:"engine",vendor:z})),{id:"add-engine",kind:"engineAdd"}]}function Ju(){return[{id:"feedback-title",kind:"feedbackTitle"},{id:"feedback-body",kind:"feedbackBody"},{id:"feedback-send",kind:"feedbackSend"}]}function eG(J){return[{id:"dev-reset",kind:"devReset"},...J?[{id:"dev-restart",kind:"devRestartDaemon"}]:[],{id:"remote-projects",kind:"devRemoteProjects"},{id:"auto-status",kind:"devAutoStatus"},{id:"dispatcher",kind:"devDispatcher"},{id:"archived-history",kind:"devArchivedHistory"}]}function bM(J,z){switch(J){case"general":return fW(z);case"engines":return ex(z.engineList);case"accounts":case"keys":return[];case"feedback":return Ju();case"dev":return eG(z.hasDaemon)}}function JX(J,z){return J.findIndex((Y)=>Y.id===z)}function Pf(J,z){return J[z]}var dZ;var jW=C(()=>{_G();dZ=[{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 r0}from"@opentui/core";function SM(J){let{theme:z}=w0();return(()=>{var Y=W("box");return q(Y,"flexDirection","column"),q(Y,"flexShrink",0),q(Y,"width",14),q(Y,"gap",1),U(Y,b(Z1,{each:dZ,children:(Z,G)=>{let X=()=>G()===J.cursor(),Q=()=>X()&&J.level()==="sidebar";return(()=>{var H=W("box"),f=W("text");return D(H,f),q(H,"paddingLeft",1),q(H,"paddingRight",1),q(H,"onMouseUp",()=>J.switchSection(Z.id)),q(f,"wrapMode","none"),U(f,()=>F(`settings.sections.${Z.id}`)),y((j)=>{var V=Q()?z.primary:void 0,B=Q()?z.selectedListItemText:X()?z.accent:z.textMuted,K=X()?r0.BOLD:void 0;return V!==j.e&&(j.e=q(H,"backgroundColor",V,j.e)),B!==j.t&&(j.t=q(f,"fg",B,j.t)),K!==j.a&&(j.a=q(f,"attributes",K,j.a)),j},{e:void 0,t:void 0,a:void 0}),H})()}})),Y})()}function IM(J){let z=w0(),{theme:Y}=z,Z=()=>fW({themeNames:J.themeNames(),focusAccentSlots:vZ}),G=(d)=>JX(Z(),d),X=()=>G("transparent"),Q=()=>G("toast"),H=()=>G("sound"),f=()=>G("zen-keep-tasks"),j=()=>G(IQ("chattab")),V=()=>G(IQ("taskpanel")),B=()=>G("editor-kind"),K=()=>G("editor-custom"),L=()=>G("worktree-base"),A=()=>J.bodyRow()===X(),O=()=>J.bodyRow()===Q(),R=()=>J.bodyRow()===H(),u=()=>J.bodyRow()===f(),P=()=>J.bodyRow()===j(),S=()=>J.bodyRow()===V(),g=()=>J.bodyRow()===B(),M=()=>J.bodyRow()===K(),T=()=>J.bodyRow()===L();return(()=>{var d=W("box"),i=W("text"),J0=W("text"),E=W("box"),z0=W("box"),q0=W("text"),o=W("text"),B0=W("box"),g0=W("text"),m=W("text"),r=W("box"),c=W("text"),N=W("box"),t=W("text"),x=W("text"),n=W("box"),Q0=W("text"),H0=W("text"),F0=W("box"),M0=W("text"),o0=T0(" "),S0=W("box"),p0=W("text"),h=T0(" "),L0=W("box"),Z0=W("text"),D0=W("text"),P0=W("box"),G1=W("text"),c0=T0(" "),u0=W("box"),k1=W("text"),s=W("text"),j0=W("box"),C0=W("text"),t0=T0(" "),z1=W("box"),E0=W("text"),V1=T0(" "),D1=W("box"),f1=W("text"),G0=W("text"),X0=W("box"),W0=W("text"),R0=W("box"),V0=W("text"),h0=W("box"),k0=W("text"),s0=W("text"),b0=W("box"),x0=W("text");return D(d,i),D(d,J0),D(d,E),D(d,z0),D(d,B0),D(d,N),D(d,n),D(d,L0),D(d,u0),D(d,D1),D(d,h0),q(d,"flexDirection","column"),q(d,"gap",1),U(i,()=>F("settings.general.theme")),U(J0,()=>F("settings.general.themeHint")),q(E,"flexDirection","column"),q(E,"gap",0),U(E,b(Z1,{get each(){return J.themeNames()},children:(k,X1)=>{let e0=()=>J.level()==="body"&&J.bodyRow()===X1(),n0=()=>k===z.selected;return(()=>{var v0=W("box"),K0=W("text");return D(v0,K0),q(v0,"flexDirection","row"),q(v0,"gap",1),q(v0,"paddingLeft",1),q(v0,"paddingRight",1),q(v0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(X1()),J.setThemeCursor(X1()),J.selectTheme(k)}),q(K0,"wrapMode","none"),U(K0,()=>n0()?"\u25CF ":" ",null),U(K0,k,null),y((y0)=>{var b1=e0()?Y.primary:void 0,F1=e0()?Y.selectedListItemText:n0()?Y.accent:Y.text,A1=e0()||n0()?r0.BOLD:void 0;return b1!==y0.e&&(y0.e=q(v0,"backgroundColor",b1,y0.e)),F1!==y0.t&&(y0.t=q(K0,"fg",F1,y0.t)),A1!==y0.a&&(y0.a=q(K0,"attributes",A1,y0.a)),y0},{e:void 0,t:void 0,a:void 0}),v0})()}})),D(z0,q0),D(z0,o),q(z0,"flexDirection","column"),q(z0,"gap",0),q(z0,"paddingTop",1),U(q0,()=>F("settings.general.language")),q(o,"wrapMode","word"),U(o,()=>F("settings.general.languageHint")),U(z0,b(Z1,{each:mZ,children:(k)=>{let X1=()=>G(qW(k.id)),e0=()=>J.level()==="body"&&J.bodyRow()===X1(),n0=()=>J.currentLocale()===k.id;return(()=>{var v0=W("box"),K0=W("text");return D(v0,K0),q(v0,"flexDirection","row"),q(v0,"gap",1),q(v0,"paddingLeft",1),q(v0,"paddingRight",1),q(v0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(X1()),J.selectLanguage(k.id)}),q(K0,"wrapMode","none"),U(K0,()=>n0()?"\u25CF ":" ",null),U(K0,()=>k.label,null),y((y0)=>{var b1=e0()?Y.primary:void 0,F1=e0()?Y.selectedListItemText:n0()?Y.accent:Y.text,A1=e0()||n0()?r0.BOLD:void 0;return b1!==y0.e&&(y0.e=q(v0,"backgroundColor",b1,y0.e)),F1!==y0.t&&(y0.t=q(K0,"fg",F1,y0.t)),A1!==y0.a&&(y0.a=q(K0,"attributes",A1,y0.a)),y0},{e:void 0,t:void 0,a:void 0}),v0})()}}),null),D(B0,g0),D(B0,m),D(B0,r),q(B0,"flexDirection","column"),q(B0,"gap",0),q(B0,"paddingTop",1),U(g0,()=>F("settings.general.transparent")),q(m,"wrapMode","word"),U(m,()=>F("settings.general.transparentHint")),D(r,c),q(r,"flexDirection","row"),q(r,"paddingLeft",1),q(r,"paddingRight",1),q(r,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(X()),J.toggleTransparent()}),q(c,"wrapMode","none"),U(c,(()=>{var k=N0(()=>!!z.transparentBackground);return()=>k()?F("settings.general.on"):F("settings.general.off")})()),D(N,t),D(N,x),q(N,"flexDirection","column"),q(N,"gap",0),q(N,"paddingTop",1),U(t,()=>F("settings.general.focusAccent")),q(x,"wrapMode","word"),U(x,()=>F("settings.general.focusAccentHint")),U(N,b(Z1,{each:vZ,children:(k)=>{let X1=()=>G(HW(k)),e0=()=>J.level()==="body"&&J.bodyRow()===X1(),n0=()=>z.focusAccent===k;return(()=>{var v0=W("box"),K0=W("text");return D(v0,K0),q(v0,"flexDirection","row"),q(v0,"gap",1),q(v0,"paddingLeft",1),q(v0,"paddingRight",1),q(v0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(X1()),J.selectFocusAccent(k)}),q(K0,"wrapMode","none"),U(K0,()=>n0()?"\u25CF ":" ",null),U(K0,()=>F(`settings.general.accent${k.charAt(0).toUpperCase()}${k.slice(1)}`),null),y((y0)=>{var b1=e0()?Y.primary:void 0,F1=e0()?Y.selectedListItemText:n0()?Y.focusAccent:Y.text,A1=e0()||n0()?r0.BOLD:void 0;return b1!==y0.e&&(y0.e=q(v0,"backgroundColor",b1,y0.e)),F1!==y0.t&&(y0.t=q(K0,"fg",F1,y0.t)),A1!==y0.a&&(y0.a=q(K0,"attributes",A1,y0.a)),y0},{e:void 0,t:void 0,a:void 0}),v0})()}}),null),D(n,Q0),D(n,H0),D(n,F0),D(n,S0),q(n,"flexDirection","column"),q(n,"gap",0),q(n,"paddingTop",1),U(Q0,()=>F("settings.general.notifications")),q(H0,"wrapMode","word"),U(H0,()=>F("settings.general.notificationsHint")),D(F0,M0),q(F0,"flexDirection","row"),q(F0,"gap",1),q(F0,"paddingLeft",1),q(F0,"paddingRight",1),q(F0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(Q()),J.toggleToast()}),D(M0,o0),q(M0,"wrapMode","none"),U(M0,()=>J.toastEnabled()?"[x]":"[ ]",o0),U(M0,()=>F("settings.general.toast"),null),D(S0,p0),q(S0,"flexDirection","row"),q(S0,"gap",1),q(S0,"paddingLeft",1),q(S0,"paddingRight",1),q(S0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(H()),J.toggleSound()}),D(p0,h),q(p0,"wrapMode","none"),U(p0,()=>J.soundEnabled()?"[x]":"[ ]",h),U(p0,()=>F("settings.general.sound"),null),D(L0,Z0),D(L0,D0),D(L0,P0),q(L0,"flexDirection","column"),q(L0,"gap",0),q(L0,"paddingTop",1),U(Z0,()=>F("settings.general.zen")),q(D0,"wrapMode","word"),U(D0,()=>F("settings.general.zenHint")),D(P0,G1),q(P0,"flexDirection","row"),q(P0,"gap",1),q(P0,"paddingLeft",1),q(P0,"paddingRight",1),q(P0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(f()),J.toggleZenKeepsTasks()}),D(G1,c0),q(G1,"wrapMode","none"),U(G1,()=>J.zenKeepsTasks()?"[x]":"[ ]",c0),U(G1,()=>F("settings.general.zenKeepTasks"),null),D(u0,k1),D(u0,s),D(u0,j0),D(u0,z1),q(u0,"flexDirection","column"),q(u0,"gap",0),q(u0,"paddingTop",1),U(k1,()=>F("settings.general.surface")),q(s,"wrapMode","word"),U(s,()=>F("settings.general.surfaceHint")),D(j0,C0),q(j0,"flexDirection","row"),q(j0,"gap",1),q(j0,"paddingLeft",1),q(j0,"paddingRight",1),q(j0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(j()),J.selectSurface("chattab")}),D(C0,t0),q(C0,"wrapMode","none"),U(C0,()=>J.settingsSurface()==="chattab"?"[x]":"[ ]",t0),U(C0,()=>F("settings.general.surfaceChattab"),null),D(z1,E0),q(z1,"flexDirection","row"),q(z1,"gap",1),q(z1,"paddingLeft",1),q(z1,"paddingRight",1),q(z1,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(V()),J.selectSurface("taskpanel")}),D(E0,V1),q(E0,"wrapMode","none"),U(E0,()=>J.settingsSurface()==="taskpanel"?"[x]":"[ ]",V1),U(E0,()=>F("settings.general.surfaceTaskpanel"),null),D(D1,f1),D(D1,G0),D(D1,X0),D(D1,R0),q(D1,"flexDirection","column"),q(D1,"gap",0),q(D1,"paddingTop",1),U(f1,()=>F("settings.general.editor")),q(G0,"wrapMode","word"),U(G0,()=>F("settings.general.editorHint")),D(X0,W0),q(X0,"flexDirection","row"),q(X0,"gap",1),q(X0,"paddingLeft",1),q(X0,"paddingRight",1),q(X0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(B()),J.cycleEditorKind()}),q(W0,"wrapMode","none"),U(W0,()=>F("settings.general.editorRow",{kind:J.editorKind()})),D(R0,V0),q(R0,"flexDirection","row"),q(R0,"gap",1),q(R0,"paddingLeft",1),q(R0,"paddingRight",1),q(R0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(K()),J.editEditorCustom()}),q(V0,"wrapMode","none"),U(V0,()=>F("settings.general.editorCustom",{cmd:J.editorCustomCommand().trim()||F("settings.general.editorCustomUnset")})),D(h0,k0),D(h0,s0),D(h0,b0),q(h0,"flexDirection","column"),q(h0,"gap",0),q(h0,"paddingTop",1),U(k0,()=>F("settings.general.worktree")),q(s0,"wrapMode","word"),U(s0,()=>F("settings.general.worktreeHint")),D(b0,x0),q(b0,"flexDirection","row"),q(b0,"gap",1),q(b0,"paddingLeft",1),q(b0,"paddingRight",1),q(b0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(L()),J.editWorktreeBase()}),q(x0,"wrapMode","none"),U(x0,()=>F("settings.general.worktreeBase",{path:J.worktreeBasePath().trim()||F("settings.general.worktreeBaseDefault")})),y((k)=>{var X1=Y.text,e0=r0.BOLD,n0=Y.textMuted,v0=Y.text,K0=r0.BOLD,y0=Y.textMuted,b1=Y.text,F1=r0.BOLD,A1=Y.textMuted,l=A()?Y.primary:void 0,I=A()?Y.selectedListItemText:z.transparentBackground?Y.accent:Y.textMuted,O0=r0.BOLD,e=Y.text,I0=r0.BOLD,M1=Y.textMuted,UJ=Y.text,GJ=r0.BOLD,j1=Y.textMuted,_J=O()?Y.primary:void 0,fJ=O()?Y.selectedListItemText:J.toastEnabled()?Y.accent:Y.textMuted,pJ=r0.BOLD,bJ=R()?Y.primary:void 0,$=R()?Y.selectedListItemText:J.soundEnabled()?Y.accent:Y.textMuted,a=r0.BOLD,_=Y.text,v=r0.BOLD,i0=Y.textMuted,m0=u()?Y.primary:void 0,A0=u()?Y.selectedListItemText:J.zenKeepsTasks()?Y.accent:Y.textMuted,l0=r0.BOLD,B1=Y.text,R1=r0.BOLD,DJ=Y.textMuted,jz=P()?Y.primary:void 0,OY=P()?Y.selectedListItemText:J.settingsSurface()==="chattab"?Y.accent:Y.textMuted,xW=r0.BOLD,uW=S()?Y.primary:void 0,EW=S()?Y.selectedListItemText:J.settingsSurface()==="taskpanel"?Y.accent:Y.textMuted,wW=r0.BOLD,PW=Y.text,hW=r0.BOLD,vW=Y.textMuted,mW=g()?Y.primary:void 0,cW=g()?Y.selectedListItemText:Y.accent,dW=r0.BOLD,nW=M()?Y.primary:void 0,iW=M()?Y.selectedListItemText:J.editorKind()==="custom"?Y.text:Y.textMuted,lW=Y.text,$W=r0.BOLD,aW=Y.textMuted,_W=T()?Y.primary:void 0,pW=T()?Y.selectedListItemText:Y.accent,rW=r0.BOLD;return X1!==k.e&&(k.e=q(i,"fg",X1,k.e)),e0!==k.t&&(k.t=q(i,"attributes",e0,k.t)),n0!==k.a&&(k.a=q(J0,"fg",n0,k.a)),v0!==k.o&&(k.o=q(q0,"fg",v0,k.o)),K0!==k.i&&(k.i=q(q0,"attributes",K0,k.i)),y0!==k.n&&(k.n=q(o,"fg",y0,k.n)),b1!==k.s&&(k.s=q(g0,"fg",b1,k.s)),F1!==k.h&&(k.h=q(g0,"attributes",F1,k.h)),A1!==k.r&&(k.r=q(m,"fg",A1,k.r)),l!==k.d&&(k.d=q(r,"backgroundColor",l,k.d)),I!==k.l&&(k.l=q(c,"fg",I,k.l)),O0!==k.u&&(k.u=q(c,"attributes",O0,k.u)),e!==k.c&&(k.c=q(t,"fg",e,k.c)),I0!==k.w&&(k.w=q(t,"attributes",I0,k.w)),M1!==k.m&&(k.m=q(x,"fg",M1,k.m)),UJ!==k.f&&(k.f=q(Q0,"fg",UJ,k.f)),GJ!==k.y&&(k.y=q(Q0,"attributes",GJ,k.y)),j1!==k.g&&(k.g=q(H0,"fg",j1,k.g)),_J!==k.p&&(k.p=q(F0,"backgroundColor",_J,k.p)),fJ!==k.b&&(k.b=q(M0,"fg",fJ,k.b)),pJ!==k.T&&(k.T=q(M0,"attributes",pJ,k.T)),bJ!==k.A&&(k.A=q(S0,"backgroundColor",bJ,k.A)),$!==k.O&&(k.O=q(p0,"fg",$,k.O)),a!==k.I&&(k.I=q(p0,"attributes",a,k.I)),_!==k.S&&(k.S=q(Z0,"fg",_,k.S)),v!==k.W&&(k.W=q(Z0,"attributes",v,k.W)),i0!==k.C&&(k.C=q(D0,"fg",i0,k.C)),m0!==k.B&&(k.B=q(P0,"backgroundColor",m0,k.B)),A0!==k.v&&(k.v=q(G1,"fg",A0,k.v)),l0!==k.k&&(k.k=q(G1,"attributes",l0,k.k)),B1!==k.x&&(k.x=q(k1,"fg",B1,k.x)),R1!==k.j&&(k.j=q(k1,"attributes",R1,k.j)),DJ!==k.q&&(k.q=q(s,"fg",DJ,k.q)),jz!==k.z&&(k.z=q(j0,"backgroundColor",jz,k.z)),OY!==k.P&&(k.P=q(C0,"fg",OY,k.P)),xW!==k.H&&(k.H=q(C0,"attributes",xW,k.H)),uW!==k.F&&(k.F=q(z1,"backgroundColor",uW,k.F)),EW!==k.M&&(k.M=q(E0,"fg",EW,k.M)),wW!==k.D&&(k.D=q(E0,"attributes",wW,k.D)),PW!==k.R&&(k.R=q(f1,"fg",PW,k.R)),hW!==k.E&&(k.E=q(f1,"attributes",hW,k.E)),vW!==k.L&&(k.L=q(G0,"fg",vW,k.L)),mW!==k.N&&(k.N=q(X0,"backgroundColor",mW,k.N)),cW!==k.G&&(k.G=q(W0,"fg",cW,k.G)),dW!==k.U&&(k.U=q(W0,"attributes",dW,k.U)),nW!==k.K&&(k.K=q(R0,"backgroundColor",nW,k.K)),iW!==k.V&&(k.V=q(V0,"fg",iW,k.V)),lW!==k.Y&&(k.Y=q(k0,"fg",lW,k.Y)),$W!==k.J&&(k.J=q(k0,"attributes",$W,k.J)),aW!==k.Q&&(k.Q=q(s0,"fg",aW,k.Q)),_W!==k.Z&&(k.Z=q(b0,"backgroundColor",_W,k.Z)),pW!==k.X&&(k.X=q(x0,"fg",pW,k.X)),rW!==k._&&(k._=q(x0,"attributes",rW,k._)),k},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0,w:void 0,m:void 0,f:void 0,y:void 0,g:void 0,p:void 0,b:void 0,T:void 0,A:void 0,O:void 0,I:void 0,S:void 0,W:void 0,C:void 0,B:void 0,v:void 0,k:void 0,x:void 0,j:void 0,q:void 0,z:void 0,P:void 0,H:void 0,F:void 0,M:void 0,D:void 0,R:void 0,E:void 0,L:void 0,N:void 0,G:void 0,U:void 0,K:void 0,V:void 0,Y:void 0,J:void 0,Q:void 0,Z:void 0,X:void 0,_:void 0}),d})()}function yM(J){let{theme:z}=w0(),Y=()=>J.vendors.length;return(()=>{var Z=W("box"),G=W("text"),X=W("text"),Q=W("box"),H=W("box"),f=W("text");return D(Z,G),D(Z,X),D(Z,Q),q(Z,"flexDirection","column"),q(Z,"gap",1),U(G,()=>F("settings.engines.title")),q(X,"wrapMode","word"),U(X,()=>F("settings.engines.hint")),D(Q,H),q(Q,"flexDirection","column"),q(Q,"gap",0),U(Q,b(Z1,{get each(){return J.vendors},children:(j,V)=>{let B=()=>J.level()==="body"&&J.bodyRow()===V();return(()=>{var K=W("box"),L=W("text"),A=W("text"),O=W("text");return D(K,L),D(K,A),D(K,O),q(K,"flexDirection","row"),q(K,"gap",1),q(K,"paddingLeft",1),q(K,"paddingRight",1),q(K,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(V()),J.editEngine(j)}),q(L,"wrapMode","none"),U(L,()=>J.isDefaultEngine(j)?"\u25CF":" "),q(A,"wrapMode","none"),U(A,()=>J.displayName(j)),q(O,"wrapMode","none"),U(O,()=>J.commandText(j),null),U(O,(()=>{var R=N0(()=>!!J.isDefault(j));return()=>R()?F("settings.engines.defaultTag"):N0(()=>!!J.isCustom(j))()?F("settings.engines.customTag"):""})(),null),y((R)=>{var u=B()?z.primary:void 0,P=B()?z.selectedListItemText:z.accent,S=r0.BOLD,g=B()?z.selectedListItemText:z.text,M=r0.BOLD,T=B()?z.selectedListItemText:J.isDefault(j)?z.textMuted:z.accent;return u!==R.e&&(R.e=q(K,"backgroundColor",u,R.e)),P!==R.t&&(R.t=q(L,"fg",P,R.t)),S!==R.a&&(R.a=q(L,"attributes",S,R.a)),g!==R.o&&(R.o=q(A,"fg",g,R.o)),M!==R.i&&(R.i=q(A,"attributes",M,R.i)),T!==R.n&&(R.n=q(O,"fg",T,R.n)),R},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),K})()}}),H),D(H,f),q(H,"flexDirection","row"),q(H,"paddingLeft",1),q(H,"paddingRight",1),q(H,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(Y()),J.onAddEngine()}),q(f,"wrapMode","none"),U(f,()=>F("settings.engines.addEngine")),y((j)=>{var V=z.text,B=r0.BOLD,K=z.textMuted,L=J.level()==="body"&&J.bodyRow()===Y()?z.primary:void 0,A=J.level()==="body"&&J.bodyRow()===Y()?z.selectedListItemText:z.primary;return V!==j.e&&(j.e=q(G,"fg",V,j.e)),B!==j.t&&(j.t=q(G,"attributes",B,j.t)),K!==j.a&&(j.a=q(X,"fg",K,j.a)),L!==j.o&&(j.o=q(H,"backgroundColor",L,j.o)),A!==j.i&&(j.i=q(f,"fg",A,j.i)),j},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),Z})()}function TM(J){let{theme:z}=w0(),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"),H=W("text"),f=W("box"),j=W("text"),V=W("box"),B=W("text");return D(Z,G),D(Z,X),D(Z,Q),D(Z,f),D(Z,V),q(Z,"flexDirection","column"),q(Z,"gap",1),U(G,()=>F("settings.accounts.title")),q(X,"wrapMode","word"),U(X,()=>F("settings.accounts.hint")),D(Q,H),q(Q,"flexDirection","column"),q(Q,"gap",0),D(H,T0("claude-code")),U(Q,b(Y0,{get when(){return J.claudeStatus()===null},get children(){var K=W("text");return U(K,()=>F("settings.accounts.checking")),y((L)=>q(K,"fg",z.textMuted,L)),K}}),null),U(Q,b(Y0,{get when(){return J.claudeStatus()},children:(K)=>(()=>{var L=W("box"),A=W("text");return D(L,A),q(L,"flexDirection","column"),q(L,"gap",0),q(A,"wrapMode","word"),U(A,()=>Y(K())),U(L,()=>{let O=K().account;if(O.kind==="oauth"){let R=[O.organization,O.billingType].filter((u)=>!!u).join(" \xB7 ");return(()=>{var u=W("text");return q(u,"wrapMode","word"),U(u,()=>F("settings.accounts.loggedIn",{email:O.email}),null),U(u,R?` (${R})`:"",null),y((P)=>q(u,"fg",z.success,P)),u})()}return(()=>{var R=W("text");return U(R,()=>F("settings.accounts.notLoggedIn")),y((u)=>q(R,"fg",z.textMuted,u)),R})()},null),U(L,b(Y0,{get when(){return K().accountError},children:(O)=>(()=>{var R=W("text");return q(R,"wrapMode","word"),U(R,()=>`! ${O()}`),y((u)=>q(R,"fg",z.warning,u)),R})()}),null),y((O)=>q(A,"fg",K().binary.found?z.textMuted:z.warning,O)),L})()}),null),D(f,j),q(f,"flexDirection","column"),q(f,"gap",0),D(j,T0("codex")),U(f,b(Y0,{get when(){return J.codexStatus()===null},get children(){var K=W("text");return U(K,()=>F("settings.accounts.checking")),y((L)=>q(K,"fg",z.textMuted,L)),K}}),null),U(f,b(Y0,{get when(){return J.codexStatus()},children:(K)=>(()=>{var L=W("box"),A=W("text");return D(L,A),q(L,"flexDirection","column"),q(L,"gap",0),q(A,"wrapMode","word"),U(A,()=>Y(K())),U(L,()=>{let O=K().account;if(O.kind==="chatgpt")return(()=>{var R=W("text");return q(R,"wrapMode","word"),U(R,()=>F("settings.accounts.chatgptLogin",{email:O.email}),null),U(R,(()=>{var u=N0(()=>!!O.plan);return()=>u()?` (${O.plan})`:""})(),null),y((u)=>q(R,"fg",z.success,u)),R})();if(O.kind==="apikey")return(()=>{var R=W("text");return U(R,()=>F("settings.accounts.apiKeyConfigured")),y((u)=>q(R,"fg",z.success,u)),R})();return(()=>{var R=W("text");return U(R,()=>F("settings.accounts.notLoggedIn")),y((u)=>q(R,"fg",z.textMuted,u)),R})()},null),U(L,b(Y0,{get when(){return K().accountError},children:(O)=>(()=>{var R=W("text");return q(R,"wrapMode","word"),U(R,()=>`! ${O()}`),y((u)=>q(R,"fg",z.warning,u)),R})()}),null),y((O)=>q(A,"fg",K().binary.found?z.textMuted:z.warning,O)),L})()}),null),D(V,B),q(V,"flexDirection","column"),q(V,"gap",0),D(B,T0("copilot")),U(V,b(Y0,{get when(){return J.copilotStatus()===null},get children(){var K=W("text");return U(K,()=>F("settings.accounts.checking")),y((L)=>q(K,"fg",z.textMuted,L)),K}}),null),U(V,b(Y0,{get when(){return J.copilotStatus()},children:(K)=>(()=>{var L=W("box"),A=W("text");return D(L,A),q(L,"flexDirection","column"),q(L,"gap",0),q(A,"wrapMode","word"),U(A,()=>Y(K())),U(L,()=>{let O=K().account;if(O.kind==="token")return(()=>{var R=W("text");return U(R,()=>F("settings.accounts.tokenConfigured",{source:O.source})),y((u)=>q(R,"fg",z.success,u)),R})();if(O.kind==="oauth")return(()=>{var R=W("text");return U(R,()=>F("settings.accounts.copilotDetected")),y((u)=>q(R,"fg",z.success,u)),R})();return(()=>{var R=W("text");return U(R,()=>F("settings.accounts.notLoggedIn")),y((u)=>q(R,"fg",z.textMuted,u)),R})()},null),U(L,b(Y0,{get when(){return K().accountError},children:(O)=>(()=>{var R=W("text");return q(R,"wrapMode","word"),U(R,()=>`! ${O()}`),y((u)=>q(R,"fg",z.warning,u)),R})()}),null),y((O)=>q(A,"fg",K().binary.found?z.textMuted:z.warning,O)),L})()}),null),y((K)=>{var L=z.text,A=r0.BOLD,O=z.textMuted,R=z.text,u=r0.BOLD,P=z.text,S=r0.BOLD,g=z.text,M=r0.BOLD;return L!==K.e&&(K.e=q(G,"fg",L,K.e)),A!==K.t&&(K.t=q(G,"attributes",A,K.t)),O!==K.a&&(K.a=q(X,"fg",O,K.a)),R!==K.o&&(K.o=q(H,"fg",R,K.o)),u!==K.i&&(K.i=q(H,"attributes",u,K.i)),P!==K.n&&(K.n=q(j,"fg",P,K.n)),S!==K.s&&(K.s=q(j,"attributes",S,K.s)),g!==K.h&&(K.h=q(B,"fg",g,K.h)),M!==K.r&&(K.r=q(B,"attributes",M,K.r)),K},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0}),Z})()}function xM(J){let{theme:z}=w0(),Y=()=>J.level()==="body",Z=()=>Y()&&J.bodyRow()===0,G=()=>Y()&&J.bodyRow()===1,X=()=>Y()&&J.bodyRow()===2,Q=(j)=>j?z.primary:z.textMuted,H=(j)=>j?r0.BOLD|r0.UNDERLINE:void 0,f;return _0(()=>{if(J.body()===""&&f&&f.plainText!=="")f.setText("")}),(()=>{var j=W("box"),V=W("text"),B=W("text"),K=W("box"),L=W("box"),A=W("text"),O=W("input"),R=W("box"),u=W("text"),P=W("textarea"),S=W("box"),g=W("text");return D(j,V),D(j,B),D(j,K),q(j,"flexDirection","column"),q(j,"gap",1),U(V,()=>F("settings.feedback.title")),q(B,"wrapMode","word"),U(B,()=>F("settings.feedback.hint")),D(K,L),D(K,R),D(K,S),q(K,"flexDirection","column"),q(K,"gap",1),D(L,A),D(L,O),q(L,"gap",0),U(A,()=>F("settings.feedback.titleLabel")),q(O,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(0)}),q(O,"onInput",(M)=>J.setTitle(gJ(M))),q(O,"onSubmit",()=>J.onTitleSubmit()),D(R,u),D(R,P),q(R,"gap",0),U(u,()=>F("settings.feedback.descriptionLabel")),qz((M)=>{f=M},P),q(P,"height",4),q(P,"wrapMode","word"),q(P,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(1)}),q(P,"onContentChange",()=>J.setBody(f?.plainText??"")),D(S,g),q(S,"flexDirection","row"),q(S,"paddingLeft",1),q(S,"paddingRight",1),q(S,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(2),J.submit()}),U(g,()=>F("settings.feedback.send")),U(j,b(Y0,{get when(){return J.status()},get children(){var M=W("text");return q(M,"wrapMode","word"),U(M,()=>J.status()),y((T)=>q(M,"fg",J.status().startsWith("error:")?z.warning:z.success,T)),M}}),null),y((M)=>{var T=z.text,d=r0.BOLD,i=z.textMuted,J0=Q(Z()),E=H(Z()),z0=J.title(),q0=F("settings.feedback.titlePlaceholder"),o=Z(),B0=Q(G()),g0=H(G()),m=J.body(),r=F("settings.feedback.descriptionPlaceholder"),c=G(),N=X()?z.primary:z.backgroundElement,t=X()?z.selectedListItemText:z.accent,x=r0.BOLD;return T!==M.e&&(M.e=q(V,"fg",T,M.e)),d!==M.t&&(M.t=q(V,"attributes",d,M.t)),i!==M.a&&(M.a=q(B,"fg",i,M.a)),J0!==M.o&&(M.o=q(A,"fg",J0,M.o)),E!==M.i&&(M.i=q(A,"attributes",E,M.i)),z0!==M.n&&(M.n=q(O,"value",z0,M.n)),q0!==M.s&&(M.s=q(O,"placeholder",q0,M.s)),o!==M.h&&(M.h=q(O,"focused",o,M.h)),B0!==M.r&&(M.r=q(u,"fg",B0,M.r)),g0!==M.d&&(M.d=q(u,"attributes",g0,M.d)),m!==M.l&&(M.l=q(P,"initialValue",m,M.l)),r!==M.u&&(M.u=q(P,"placeholder",r,M.u)),c!==M.c&&(M.c=q(P,"focused",c,M.c)),N!==M.w&&(M.w=q(S,"backgroundColor",N,M.w)),t!==M.m&&(M.m=q(g,"fg",t,M.m)),x!==M.f&&(M.f=q(g,"attributes",x,M.f)),M},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0,w:void 0,m:void 0,f:void 0}),j})()}function uM(J){let{theme:z}=w0(),Y=()=>J.level()==="body"&&J.bodyRow()===0,Z=()=>J.level()==="body"&&J.bodyRow()===1,G=()=>JX(eG(J.hasDaemon),"remote-projects"),X=()=>J.level()==="body"&&J.bodyRow()===G(),Q=()=>JX(eG(J.hasDaemon),"auto-status"),H=()=>J.level()==="body"&&J.bodyRow()===Q(),f=()=>JX(eG(J.hasDaemon),"dispatcher"),j=()=>J.level()==="body"&&J.bodyRow()===f(),V=()=>JX(eG(J.hasDaemon),"archived-history"),B=()=>J.level()==="body"&&J.bodyRow()===V();return(()=>{var K=W("box"),L=W("text"),A=W("text"),O=W("box"),R=W("text"),u=W("text"),P=W("box"),S=W("text"),g=W("text"),M=W("box"),T=W("text"),d=W("text"),i=W("box"),J0=W("text"),E=W("text"),z0=W("box"),q0=W("text"),o=W("text"),B0=W("box"),g0=W("text");return D(K,L),D(K,A),D(K,O),D(K,u),D(K,P),q(K,"flexDirection","column"),q(K,"gap",1),U(L,()=>F("settings.dev.reset")),q(A,"wrapMode","word"),U(A,()=>F("settings.dev.resetHint")),D(O,R),q(O,"flexDirection","row"),q(O,"paddingLeft",1),q(O,"paddingRight",1),q(O,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(0),J.confirmReset()}),U(R,()=>F("settings.dev.resetButton")),U(K,b(Y0,{get when(){return J.hasDaemon},get children(){var m=W("box"),r=W("text"),c=W("text"),N=W("box"),t=W("text");return D(m,r),D(m,c),D(m,N),q(m,"flexDirection","column"),q(m,"gap",0),q(m,"paddingTop",1),U(r,()=>F("settings.dev.restart")),q(c,"wrapMode","word"),U(c,()=>F("settings.dev.restartHint")),D(N,t),q(N,"flexDirection","row"),q(N,"paddingLeft",1),q(N,"paddingRight",1),q(N,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(1),J.confirmRestartDaemon()}),U(t,()=>F("settings.dev.restartButton")),y((x)=>{var n=z.text,Q0=r0.BOLD,H0=z.textMuted,F0=Z()?z.primary:z.backgroundElement,M0=Z()?z.selectedListItemText:z.accent,o0=r0.BOLD;return n!==x.e&&(x.e=q(r,"fg",n,x.e)),Q0!==x.t&&(x.t=q(r,"attributes",Q0,x.t)),H0!==x.a&&(x.a=q(c,"fg",H0,x.a)),F0!==x.o&&(x.o=q(N,"backgroundColor",F0,x.o)),M0!==x.i&&(x.i=q(t,"fg",M0,x.i)),o0!==x.n&&(x.n=q(t,"attributes",o0,x.n)),x},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),m}}),u),q(u,"wrapMode","word"),U(u,()=>F("settings.dev.doctorHint")),D(P,S),D(P,g),D(P,M),D(P,d),D(P,i),D(P,E),D(P,z0),D(P,o),D(P,B0),q(P,"flexDirection","column"),q(P,"gap",0),q(P,"paddingTop",1),U(S,()=>F("settings.dev.experimental")),q(g,"wrapMode","word"),U(g,()=>F("settings.dev.remoteHint")),D(M,T),q(M,"flexDirection","row"),q(M,"paddingLeft",1),q(M,"paddingRight",1),q(M,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(G()),J.toggleRemoteProjects()}),U(T,(()=>{var m=N0(()=>!!J.remoteProjectsEnabled());return()=>m()?F("settings.dev.remoteOn"):F("settings.dev.remoteOff")})()),q(d,"wrapMode","word"),U(d,()=>F("settings.dev.autoStatusHint")),D(i,J0),q(i,"flexDirection","row"),q(i,"paddingLeft",1),q(i,"paddingRight",1),q(i,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(Q()),J.toggleAutoStatus()}),U(J0,(()=>{var m=N0(()=>!!J.autoStatusEnabled());return()=>m()?F("settings.dev.autoStatusOn"):F("settings.dev.autoStatusOff")})()),q(E,"wrapMode","word"),U(E,()=>F("settings.dev.dispatcherHint")),D(z0,q0),q(z0,"flexDirection","row"),q(z0,"paddingLeft",1),q(z0,"paddingRight",1),q(z0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(f()),J.toggleDispatcher()}),U(q0,(()=>{var m=N0(()=>!!J.dispatcherEnabled());return()=>m()?F("settings.dev.dispatcherOn"):F("settings.dev.dispatcherOff")})()),q(o,"wrapMode","word"),U(o,()=>F("settings.dev.archivedHistoryHint")),D(B0,g0),q(B0,"flexDirection","row"),q(B0,"paddingLeft",1),q(B0,"paddingRight",1),q(B0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(V()),J.toggleArchivedHistory()}),U(g0,(()=>{var m=N0(()=>!!J.archivedHistoryEnabled());return()=>m()?F("settings.dev.archivedHistoryOn"):F("settings.dev.archivedHistoryOff")})()),y((m)=>{var r=z.text,c=r0.BOLD,N=z.textMuted,t=Y()?z.primary:z.backgroundElement,x=Y()?z.selectedListItemText:z.warning,n=r0.BOLD,Q0=z.textMuted,H0=z.text,F0=r0.BOLD,M0=z.textMuted,o0=X()?z.primary:z.backgroundElement,S0=X()?z.selectedListItemText:z.text,p0=J.remoteProjectsEnabled()?r0.BOLD:void 0,h=z.textMuted,L0=H()?z.primary:z.backgroundElement,Z0=H()?z.selectedListItemText:z.text,D0=J.autoStatusEnabled()?r0.BOLD:void 0,P0=z.textMuted,G1=j()?z.primary:z.backgroundElement,c0=j()?z.selectedListItemText:z.text,u0=J.dispatcherEnabled()?r0.BOLD:void 0,k1=z.textMuted,s=B()?z.primary:z.backgroundElement,j0=B()?z.selectedListItemText:z.text,C0=J.archivedHistoryEnabled()?r0.BOLD:void 0;return r!==m.e&&(m.e=q(L,"fg",r,m.e)),c!==m.t&&(m.t=q(L,"attributes",c,m.t)),N!==m.a&&(m.a=q(A,"fg",N,m.a)),t!==m.o&&(m.o=q(O,"backgroundColor",t,m.o)),x!==m.i&&(m.i=q(R,"fg",x,m.i)),n!==m.n&&(m.n=q(R,"attributes",n,m.n)),Q0!==m.s&&(m.s=q(u,"fg",Q0,m.s)),H0!==m.h&&(m.h=q(S,"fg",H0,m.h)),F0!==m.r&&(m.r=q(S,"attributes",F0,m.r)),M0!==m.d&&(m.d=q(g,"fg",M0,m.d)),o0!==m.l&&(m.l=q(M,"backgroundColor",o0,m.l)),S0!==m.u&&(m.u=q(T,"fg",S0,m.u)),p0!==m.c&&(m.c=q(T,"attributes",p0,m.c)),h!==m.w&&(m.w=q(d,"fg",h,m.w)),L0!==m.m&&(m.m=q(i,"backgroundColor",L0,m.m)),Z0!==m.f&&(m.f=q(J0,"fg",Z0,m.f)),D0!==m.y&&(m.y=q(J0,"attributes",D0,m.y)),P0!==m.g&&(m.g=q(E,"fg",P0,m.g)),G1!==m.p&&(m.p=q(z0,"backgroundColor",G1,m.p)),c0!==m.b&&(m.b=q(q0,"fg",c0,m.b)),u0!==m.T&&(m.T=q(q0,"attributes",u0,m.T)),k1!==m.A&&(m.A=q(o,"fg",k1,m.A)),s!==m.O&&(m.O=q(B0,"backgroundColor",s,m.O)),j0!==m.I&&(m.I=q(g0,"fg",j0,m.I)),C0!==m.S&&(m.S=q(g0,"attributes",C0,m.S)),m},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0,w:void 0,m:void 0,f:void 0,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}),K})()}function EM(){let{theme:J}=w0(),z=oF(),Y=Object.keys(FB).sort();return(()=>{var Z=W("box"),G=W("text"),X=W("text"),Q=W("box"),H=W("text"),f=W("text"),j=W("text"),V=W("text");return D(Z,G),D(Z,X),D(Z,Q),D(Z,j),D(Z,V),q(Z,"flexDirection","column"),q(Z,"gap",1),U(G,()=>F("settings.keybindings.title")),q(X,"wrapMode","word"),U(X,()=>F("settings.keybindings.hint")),D(Q,H),D(Q,f),q(Q,"flexDirection","column"),q(Q,"gap",0),U(H,()=>F("settings.keybindings.configFile")),q(f,"wrapMode","word"),U(f,()=>z.path,null),U(f,(()=>{var B=N0(()=>!!z.exists);return()=>B()?"":F("settings.keybindings.notCreated")})(),null),U(Z,b(Y0,{get when(){return!z.exists},get children(){var B=W("box"),K=W("text"),L=W("text"),A=W("text"),O=W("text"),R=W("text"),u=W("text"),P=W("text"),S=W("text"),g=W("text"),M=W("text");return D(B,K),D(B,L),D(B,A),D(B,O),D(B,R),D(B,u),D(B,P),D(B,S),D(B,g),D(B,M),q(B,"flexDirection","column"),q(B,"gap",0),U(K,()=>F("settings.keybindings.example")),D(L,T0("bindings:")),D(A,T0(" chat.fork.new: ctrl+g # string = one chord")),D(O,T0(" sidebar.select: [enter] # list = several chords")),D(R,T0(" files.createPR: null # null = unbind")),D(u,T0(" tmux.tab.new: ctrl+y # tmux session key (see below)")),D(P,T0(" tmux.layout.workspaceSplit: g # prefix g")),D(S,T0("darwin: # platform overlay (also: linux)")),D(g,T0(" bindings:")),D(M,T0(" palette.open: [cmd+p, ctrl+p]")),y((T)=>{var d=J.text,i=r0.BOLD,J0=J.textMuted,E=J.textMuted,z0=J.textMuted,q0=J.textMuted,o=J.textMuted,B0=J.textMuted,g0=J.textMuted,m=J.textMuted,r=J.textMuted;return d!==T.e&&(T.e=q(K,"fg",d,T.e)),i!==T.t&&(T.t=q(K,"attributes",i,T.t)),J0!==T.a&&(T.a=q(L,"fg",J0,T.a)),E!==T.o&&(T.o=q(A,"fg",E,T.o)),z0!==T.i&&(T.i=q(O,"fg",z0,T.i)),q0!==T.n&&(T.n=q(R,"fg",q0,T.n)),o!==T.s&&(T.s=q(u,"fg",o,T.s)),B0!==T.h&&(T.h=q(P,"fg",B0,T.h)),g0!==T.r&&(T.r=q(S,"fg",g0,T.r)),m!==T.d&&(T.d=q(g,"fg",m,T.d)),r!==T.l&&(T.l=q(M,"fg",r,T.l)),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}),B}}),j),U(Z,b(Y0,{get when(){return z.exists},get children(){var B=W("box"),K=W("text");return D(B,K),q(B,"flexDirection","column"),q(B,"gap",0),U(K,()=>F("settings.keybindings.overridesApplied")),U(B,b(Y0,{get when(){return z.applied.length===0},get children(){var L=W("text");return U(L,()=>F("settings.keybindings.none")),y((A)=>q(L,"fg",J.textMuted,A)),L}}),null),U(B,b(Z1,{get each(){return z.applied},children:(L)=>(()=>{var A=W("text");return q(A,"wrapMode","word"),U(A,()=>`${L.id} \u2192 ${L.keys.length>0?L.keys.join(" / "):"(unbound)"} (default: ${L.defaultKeys.join(" / ")})`),y((O)=>q(A,"fg",J.text,O)),A})()}),null),y((L)=>{var A=J.text,O=r0.BOLD;return A!==L.e&&(L.e=q(K,"fg",A,L.e)),O!==L.t&&(L.t=q(K,"attributes",O,L.t)),L},{e:void 0,t:void 0}),B}}),j),U(Z,b(Y0,{get when(){return z.warnings.length>0},get children(){var B=W("box"),K=W("text");return D(B,K),q(B,"flexDirection","column"),q(B,"gap",0),U(K,()=>F("settings.keybindings.warnings")),U(B,b(Z1,{get each(){return z.warnings},children:(L)=>(()=>{var A=W("text");return q(A,"wrapMode","word"),U(A,`! ${L}`),y((O)=>q(A,"fg",J.warning,O)),A})()}),null),y((L)=>{var A=J.warning,O=r0.BOLD;return A!==L.e&&(L.e=q(K,"fg",A,L.e)),O!==L.t&&(L.t=q(K,"attributes",O,L.t)),L},{e:void 0,t:void 0}),B}}),j),D(j,T0("tmux session keys use the same file: tmux.tab.new (ctrl+t), tmux.tab.prev/next (ctrl+[/]), tmux.tab.close (ctrl+w), tmux.tab.rename (f2), tmux.tab.chooseEngine (ctrl+shift+t), tmux.detach (ctrl+q), tmux.focus (4 chords, left/down/up/right), and prefix layout keys: workspaceSplit (s), workspaceClose (x), workspaceReset (r), tasksToggle (a), opsToggle (o), terminalToggle (z). They apply when a session is (re)built.")),q(j,"wrapMode","word"),q(V,"wrapMode","word"),U(V,()=>`Fixed (not rebindable): ${Y.join(", ")}.`),y((B)=>{var K=J.text,L=r0.BOLD,A=J.textMuted,O=J.text,R=r0.BOLD,u=J.textMuted,P=J.textMuted,S=J.textMuted;return K!==B.e&&(B.e=q(G,"fg",K,B.e)),L!==B.t&&(B.t=q(G,"attributes",L,B.t)),A!==B.a&&(B.a=q(X,"fg",A,B.a)),O!==B.o&&(B.o=q(H,"fg",O,B.o)),R!==B.i&&(B.i=q(H,"attributes",R,B.i)),u!==B.n&&(B.n=q(f,"fg",u,B.n)),P!==B.s&&(B.s=q(j,"fg",P,B.s)),S!==B.h&&(B.h=q(V,"fg",S,B.h)),B},{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 wM=C(()=>{w();w();w();w();w();w();w();w();w();W1();_8();h1();ZJ();_G();aq();pG();jW()});import{accessSync as zu,constants as Yu,mkdirSync as Zu}from"fs";import{TextAttributes as Gu}from"@opentui/core";function Xu(J){return J.split(/[-_]+/).filter((z)=>z.length>0).map((z)=>z.charAt(0).toUpperCase()+z.slice(1)).join(" ")}function nZ(J){let z=n1(),Y=w0(),Z=WJ(),{theme:G}=Y,[X,Q]=p("sidebar"),[H,f]=p("general"),[j,V]=p(0),[B,K]=p(0),[L,A]=p(""),[O,R]=p(""),[u,P]=p(""),S=U0(()=>Y.all().slice().sort()),[,g]=p(Math.max(0,S().findIndex((l)=>l===Y.selected))),M=NM(J.orchestrator),[T,d]=p(null),[i,J0]=p(null),[E,z0]=p(null),q0=!1;_0(()=>{if(H()!=="accounts"||q0)return;q0=!0,Yq().then(d),Zq().then(J0),Gq().then(z0)});function o(){return bM(H(),{themeNames:S(),focusAccentSlots:vZ,engineList:k1(),hasDaemon:M})}function B0(){return o().length}function g0(){return TZ(J.kv.get(WY,yZ))}function m(l){if(Y.selected===l)return;if(!Y.set(l))return;J.kv.set("activeTheme",l),J.onVisualPrefsChange?.()}function r(){return I8()}function c(l){if(I8()===l)return;RQ(l),J.kv.set(bf,l),J.onVisualPrefsChange?.()}function N(l){if(Y.transparentBackground===l)return;Y.setTransparentBackground(l),J.kv.set("transparentBackground",l),J.onVisualPrefsChange?.()}function t(){N(!Y.transparentBackground)}function x(l){if(Y.focusAccent===l)return;Y.setFocusAccent(l),J.kv.set("focusAccent",l),J.onVisualPrefsChange?.()}function n(l){J.kv.set(WY,l)}function Q0(){return J.kv.get("notifications.toast.enabled",!0)!==!1}function H0(){return J.kv.get("notifications.sound.enabled",!0)!==!1}function F0(){J.kv.set("notifications.toast.enabled",!Q0())}function M0(){J.kv.set("notifications.sound.enabled",!H0())}function o0(){return J.kv.get(qH,!0)!==!1}function S0(){J.kv.set(qH,!o0())}function p0(){return J.kv.get("experimental.remoteProjects",!1)===!0}function h(){J.kv.set("experimental.remoteProjects",!p0())}function L0(){return J.kv.get(UZ,!1)===!0}function Z0(){J.kv.set(UZ,!L0())}function D0(){return J.kv.get(DZ,!1)===!0}function P0(){J.kv.set(DZ,!D0())}function G1(){return J.kv.get(yX,!1)===!0}function c0(){J.kv.set(yX,!G1())}function u0(){let l=J.kv.get("customEngineIds",[]);return Array.isArray(l)?l.filter((I)=>typeof I==="string"&&I.trim().length>0):[]}function k1(){return[...a1,...u0()]}function s(l){let I=J.kv.get(Az(l),"");return typeof I==="string"?I.trim():""}function j0(l){return s(l)||IX(l).join(" ")}function C0(l){return jJ(l)&&s(l).length===0&&!z1(l)}function t0(l){let I=J.kv.get(Rz(l),"");return typeof I==="string"?I.trim():""}function z1(l){return t0(l).length>0}function E0(l){return t0(l)||UB[l]||l}let[V1,D1]=p(PJ(S1("lastSelectedVendor"),u0()));function f1(l){return V1()===l}function G0(l){e1("lastSelectedVendor",l),J.kv.set("lastSelectedVendor",l),D1(l)}async function X0(l){let I=await rz.show(z,j0(l),{dialogTitle:`${E0(l)} launch command`,fieldLabel:"command",submitLabel:"save",allowEmpty:!0});if(I===void 0)return;J.kv.set(Az(l),I.trim())}async function W0(l){let I=await rz.show(z,E0(l),{dialogTitle:`${E0(l)} display name (blank = default)`,fieldLabel:"name",submitLabel:"save",allowEmpty:!0});if(I===void 0)return;J.kv.set(Rz(l),I.trim())}function R0(l){if(J.kv.set(Az(l),""),J.kv.set(Rz(l),""),!jJ(l))J.kv.set("customEngineIds",u0().filter((I)=>I!==l)),K((I)=>Math.max(0,Math.min(I,k1().length)))}async function V0(){let l=await rz.show(z,"",{dialogTitle:"Add engine",fieldLabel:"id",submitLabel:"next",placeholder:"lowercase slug, e.g. aider"});if(l===void 0)return;let I=l.trim().toLowerCase();if(!I||jJ(I)||u0().includes(I))return;let O0=await rz.show(z,"",{dialogTitle:`Add engine \xB7 ${I}`,fieldLabel:"command",submitLabel:"next",placeholder:"e.g. aider --model sonnet"});if(O0===void 0)return;let e=await rz.show(z,I,{dialogTitle:`Add engine \xB7 ${I}`,fieldLabel:"name",submitLabel:"add",allowEmpty:!0});if(J.kv.set("customEngineIds",[...u0(),I]),O0.trim())J.kv.set(Az(I),O0.trim());let I0=e?.trim()??"";J.kv.set(Rz(I),I0&&I0!==I?I0:Xu(I))}function h0(){if(H()!=="engines"||X()!=="body")return null;let l=Pf(o(),B());return l?.kind==="engine"?l.vendor:null}function k0(){return bG(J.kv.get(BY,uH))}function s0(){let l=IZ.indexOf(k0()),I=IZ[(l+1)%IZ.length];if(I)J.kv.set(BY,I)}function b0(){let l=J.kv.get(cY,"");return typeof l==="string"?l:""}async function x0(){let l=await rz.show(z,b0(),{dialogTitle:"Custom editor command (use {file} for the path)",fieldLabel:"command",submitLabel:"save",allowEmpty:!0});if(l===void 0)return;let I=l.trim();if(J.kv.set(cY,I),I)J.kv.set(BY,"custom")}function k(){let l=J.kv.get(Pq,"");return typeof l==="string"?l:""}async function X1(){let l=await rz.show(z,k(),{dialogTitle:F("settings.general.worktreeBaseTitle"),fieldLabel:F("settings.general.worktreeBaseField"),submitLabel:"save",placeholder:"~/.kobe/worktrees",allowEmpty:!0});if(l===void 0)return;let I=l.trim();if(I){let O0=fB(I)??I;try{Zu(O0,{recursive:!0}),zu(O0,Yu.W_OK)}catch(e){await uz.show(z,"Can't use that worktree location",`${O0} isn't usable (${e instanceof Error?e.message:String(e)}). Keeping the previous setting \u2014 pick a writable directory.`,"cancel");return}}J.kv.set(Pq,I)}async function e0(){P("submitting...");try{let l=vG({title:L(),body:O()});P(`sent: ${l.url}`),A(""),R(""),K(0)}catch(l){P(`error: ${l instanceof Error?l.message:String(l)}`)}}let n0=()=>H()==="feedback"&&X()==="body";function v0(l){let I=B()+l;if(I<0||I>2){Q("sidebar");return}K(I)}function K0(){if(X()!=="sidebar"||B0()===0)return;if(Q("body"),K(0),H()==="general")g(0)}function y0(l){if(X()==="sidebar"){let e=(j()+l+dZ.length)%dZ.length;V(e);let I0=dZ[e];if(I0)f(I0.id),K(0);return}let I=B0();if(I===0)return;let O0=(B()+l+I)%I;if(K(O0),Pf(o(),O0)?.kind==="theme")g(O0)}function b1(l){f(l),V(dZ.findIndex((I)=>I.id===l)),K(0),Q("sidebar")}let F1={theme:(l)=>m(l.name),language:(l)=>c(l.locale),transparent:()=>t(),focusAccent:(l)=>x(l.slot),toast:()=>F0(),sound:()=>M0(),zenKeepTasks:()=>S0(),surface:(l)=>n(l.surface),editorKind:()=>s0(),editorCustom:()=>void x0(),worktreeBase:()=>void X1(),engine:(l)=>void X0(l.vendor),engineAdd:()=>void V0(),feedbackTitle:()=>K(0),feedbackBody:()=>K(1),feedbackSend:()=>void e0(),devReset:()=>void XW(z,J.kv,Z),devRestartDaemon:()=>void QW(z,J.orchestrator,Z),devRemoteProjects:()=>h(),devAutoStatus:()=>Z0(),devDispatcher:()=>P0(),devArchivedHistory:()=>c0()};function A1(){let l=Pf(o(),B());if(!l)return;F1[l.kind](l)}return U1(()=>({enabled:(!J.standalone||z.stack.length===0)&&!n0(),bindings:[{key:"down",cmd:()=>y0(1)},{key:"up",cmd:()=>y0(-1)},{key:"j",cmd:()=>y0(1)},{key:"k",cmd:()=>y0(-1)},{key:"tab",cmd:()=>y0(1)},{key:"right",cmd:K0},{key:"l",cmd:K0},{key:"left",cmd:()=>Q("sidebar")},{key:"h",cmd:()=>Q("sidebar")},{key:"return",cmd:()=>{if(X()==="sidebar"){K0();return}A1()}},{key:"t",cmd:t},{key:"r",cmd:()=>{let l=h0();if(l)W0(l)}},{key:"x",cmd:()=>{let l=h0();if(l)R0(l)}},{key:"d",cmd:()=>{let l=h0();if(l)G0(l)}}]})),U1(()=>({enabled:n0(),bindings:[{key:"tab",cmd:()=>v0(1)},{key:"shift+tab",cmd:()=>v0(-1)}]})),U1(()=>({enabled:n0()&&B()===2,bindings:[{key:"return",cmd:()=>void e0()}]})),(()=>{var l=W("box"),I=W("box"),O0=W("text"),e=W("text"),I0=W("box"),M1=W("box"),UJ=W("box"),GJ=W("text");return D(l,I),D(l,I0),D(l,UJ),q(l,"paddingLeft",2),q(l,"paddingRight",2),q(l,"paddingBottom",1),q(l,"gap",1),D(I,O0),D(I,e),q(I,"flexDirection","row"),q(I,"justifyContent","space-between"),U(O0,()=>F("settings.title")),q(e,"onMouseUp",()=>J.onClose()),U(e,()=>F("settings.esc")),D(I0,M1),q(I0,"flexDirection","row"),q(I0,"gap",2),U(I0,b(SM,{level:X,cursor:j,switchSection:b1}),M1),q(M1,"flexGrow",1),q(M1,"flexShrink",1),q(M1,"flexDirection","column"),q(M1,"gap",1),U(M1,b(Y0,{get when(){return H()==="general"},get children(){return b(IM,{level:X,bodyRow:B,setLevel:Q,setBodyRow:K,themeNames:S,setThemeCursor:g,selectTheme:m,currentLocale:r,selectLanguage:c,toggleTransparent:t,selectFocusAccent:x,toastEnabled:Q0,soundEnabled:H0,toggleToast:F0,toggleSound:M0,zenKeepsTasks:o0,toggleZenKeepsTasks:S0,settingsSurface:g0,selectSurface:n,editorKind:k0,cycleEditorKind:s0,editorCustomCommand:b0,editEditorCustom:()=>void x0(),worktreeBasePath:k,editWorktreeBase:()=>void X1()})}}),null),U(M1,b(Y0,{get when(){return H()==="engines"},get children(){return b(yM,{level:X,bodyRow:B,setLevel:Q,setBodyRow:K,get vendors(){return k1()},isCustom:(j1)=>!jJ(j1),displayName:E0,commandText:j0,isDefault:C0,isDefaultEngine:f1,editEngine:(j1)=>void X0(j1),renameEngine:(j1)=>void W0(j1),resetEngine:R0,onAddEngine:()=>void V0()})}}),null),U(M1,b(Y0,{get when(){return H()==="accounts"},get children(){return b(TM,{claudeStatus:T,codexStatus:i,copilotStatus:E})}}),null),U(M1,b(Y0,{get when(){return H()==="keys"},get children(){return b(EM,{})}}),null),U(M1,b(Y0,{get when(){return H()==="feedback"},get children(){return b(xM,{level:X,bodyRow:B,setLevel:Q,setBodyRow:K,title:L,setTitle:(j1)=>{A(j1),P("")},body:O,setBody:(j1)=>{R(j1),P("")},status:u,onTitleSubmit:()=>K(1),submit:()=>void e0()})}}),null),U(M1,b(Y0,{get when(){return H()==="dev"},get children(){return b(uM,{level:X,bodyRow:B,setLevel:Q,setBodyRow:K,hasDaemon:M,confirmReset:()=>void XW(z,J.kv,Z),confirmRestartDaemon:()=>void QW(z,J.orchestrator,Z),remoteProjectsEnabled:p0,toggleRemoteProjects:h,autoStatusEnabled:L0,toggleAutoStatus:Z0,dispatcherEnabled:D0,toggleDispatcher:P0,archivedHistoryEnabled:G1,toggleArchivedHistory:c0})}}),null),D(UJ,GJ),q(UJ,"paddingTop",0),U(GJ,(()=>{var j1=N0(()=>!!n0());return()=>j1()?F("settings.nav.feedback"):F("settings.nav.default")})()),y((j1)=>{var _J=Gu.BOLD,fJ=G.text,pJ=G.textMuted,bJ=G.textMuted;return _J!==j1.e&&(j1.e=q(O0,"attributes",_J,j1.e)),fJ!==j1.t&&(j1.t=q(O0,"fg",fJ,j1.t)),pJ!==j1.a&&(j1.a=q(e,"fg",pJ,j1.a)),bJ!==j1.o&&(j1.o=q(GJ,"fg",bJ,j1.o)),j1},{e:void 0,t:void 0,a:void 0,o:void 0}),l})()}var BW=C(()=>{w();w();w();w();w();w();w();w();W1();XZ();Yz();tH();nq();SX();mq();C1();jB();NB();_1();h1();ZJ();EH();kJ();o8();$J();wf();GW();kM();jW();wM();nZ.show=(J,z,Y)=>{let Z=!1;return new Promise((G)=>{J.replace(()=>b(nZ,{kv:z,orchestrator:Y,onVisualPrefsChange:()=>{Z=!0},onClose:()=>G({visualPrefsChanged:Z})}),()=>G({visualPrefsChanged:Z}))})}});import{TextAttributes as Qu}from"@opentui/core";function hM(){let{theme:J}=w0(),z=az(),Y=Cf(),Z=()=>Y.toasts().slice(-PM),G=()=>Math.max(0,z().width-qu-Hu),X=()=>Math.max(0,z().height-fu-PM-1);return b(Y0,{get when(){return Y.toasts().length>0},get children(){var Q=W("box");return q(Q,"position","absolute"),q(Q,"zIndex",2500),q(Q,"width",40),q(Q,"flexDirection","column"),q(Q,"gap",0),U(Q,b(Z1,{get each(){return Z()},children:(H)=>{let f=()=>H.kind==="needs_input"?J.warning:H.kind==="error"?J.error:J.success,j=()=>J.selectedListItemText,V=()=>H.kind==="needs_input"?"?":H.kind==="error"?"\u2715":"\u2713";return(()=>{var B=W("box"),K=W("text"),L=W("text");return D(B,K),D(B,L),q(B,"flexDirection","row"),q(B,"gap",1),q(B,"paddingLeft",1),q(B,"paddingRight",1),q(B,"onMouseUp",()=>Y.dismiss(H.id)),q(K,"wrapMode","none"),U(K,V),q(L,"wrapMode","none"),U(L,()=>H.title),y((A)=>{var O=f(),R=j(),u=Qu.BOLD,P=j();return O!==A.e&&(A.e=q(B,"backgroundColor",O,A.e)),R!==A.t&&(A.t=q(K,"fg",R,A.t)),u!==A.a&&(A.a=q(K,"attributes",u,A.a)),P!==A.o&&(A.o=q(L,"fg",P,A.o)),A},{e:void 0,t:void 0,a:void 0,o:void 0}),B})()}})),y((H)=>{var f=G(),j=X();return f!==H.e&&(H.e=q(Q,"left",f,H.e)),j!==H.t&&(H.t=q(Q,"top",j,H.t)),H},{e:void 0,t:void 0}),Q}})}var PM=4,qu=40,Hu=2,fu=2;var vM=C(()=>{w();w();w();w();w();w();w();W1();kf();h1()});import{TextAttributes as ju}from"@opentui/core";function Bu(J,z){let Y=J?`v${J}`:F("update.skew.olderBuild");return F("update.skew.hint",{daemon:Y,clientVersion:z})}function mM(J){let{theme:z}=w0(),Y=()=>Math.max(4,J.width()-2);return b(Y0,{get when(){return J.stale()},get children(){var Z=W("box"),G=W("text"),X=W("box"),Q=W("text"),H=W("box"),f=W("text");return D(Z,G),D(Z,X),D(Z,H),q(Z,"flexDirection","column"),q(Z,"flexShrink",0),q(Z,"paddingLeft",1),q(Z,"paddingRight",1),q(Z,"paddingBottom",1),q(G,"wrapMode","none"),U(G,()=>"\u2594".repeat(Y())),D(X,Q),q(X,"flexDirection","row"),q(X,"gap",1),q(Q,"wrapMode","none"),U(Q,()=>F("update.skew.title")),D(H,f),q(H,"flexDirection","row"),q(H,"gap",1),q(f,"wrapMode","word"),U(f,()=>Bu(J.daemonVersion(),J.clientVersion)),y((j)=>{var{warning:V,warning:B}=z,K=ju.BOLD,L=z.text;return V!==j.e&&(j.e=q(G,"fg",V,j.e)),B!==j.t&&(j.t=q(Q,"fg",B,j.t)),K!==j.a&&(j.a=q(Q,"attributes",K,j.a)),L!==j.o&&(j.o=q(f,"fg",L,j.o)),j},{e:void 0,t:void 0,a:void 0,o:void 0}),Z}})}var cM=C(()=>{w();w();w();w();w();w();W1();h1();ZJ()});function dM(J,z){return J.find((Y)=>Y.id!==z&&!Y.archived)}async function Wu(J){let z=J.tasks.find((X)=>X.id===J.taskId);if(!z)return null;let Y=!z.archived;try{await J.orch.setArchived(J.taskId,Y)}catch(X){return J.logger.error(`${J.logPrefix} archive failed:`,X),null}if(!Y)return{archived:Y};let Z=I1(J.taskId),G=dM(J.tasks,J.taskId);if(await nz(Z,G?I1(G.id):void 0).catch((X)=>{J.logger.error(`${J.logPrefix} switch-client failed:`,X)}),J.updateActiveTask)await J.orch.setActiveTask(G?.id??null).catch(()=>{});return await Gz(Z).catch((X)=>{J.logger.error(`${J.logPrefix} kill tmux session failed:`,X)}),{archived:Y,nextTask:G}}async function Vu(J){let z=dM(J.tasks,J.taskId),Y=I1(J.taskId);if(J.switchBeforeKill)await nz(Y,z?I1(z.id):void 0).catch((Z)=>{J.logger.error(`${J.logPrefix} switch-client failed:`,Z)});if(J.updateActiveTask)await J.orch?.setActiveTask(z?.id??null).catch(()=>{});return await Gz(Y).catch((Z)=>{J.logger.error(`${J.logPrefix} kill tmux session failed:`,Z)}),{nextTask:z}}async function nM(J,z){if(!J.orch)return;let Y=J.tasks().find((G)=>G.id===z);if(!Y)return;if(!Y.archived){if(!await J.confirm({title:`Archive "${Y.title}"?`,body:"Moves it to Archives and stops its running session. The worktree, branch, and chat history stay \u2014 unarchive to bring it back.",cancelLabel:"cancel",confirmLabel:"archive"}))return}if(!await Wu({orch:J.orch,tasks:J.tasks(),taskId:z,logger:J.logger,logPrefix:J.logPrefix,updateActiveTask:J.updateActiveTask}))return;await J.reload?.()}async function iM(J,z){if(!J.orch)return;let Y=J.tasks().find((Q)=>Q.id===z);if(!Y)return;if(Y.kind==="main"){if(!await J.confirm({title:`Remove project "${Y.title}"?`,body:"Forgets it from the projects list. The repo, its branches, worktrees, and any tasks under it stay on disk \u2014 re-add it with `kobe add`.",cancelLabel:"cancel",confirmLabel:"remove"}))return;try{await J.orch.forgetProject(Y.repo)}catch(H){J.logger.error(`${J.logPrefix} forget project failed:`,H),J.notifyError?.(`Couldn't remove: ${H instanceof Error?H.message:String(H)}`);return}await J.reload?.();return}if(!await J.confirm({title:`Delete "${Y.title}"?`,body:"Removes the task entry and its worktree. The tmux session (if any) is killed.",cancelLabel:"cancel",confirmLabel:"delete"}))return;let G=!1;try{await J.orch.deleteTask(z),G=!0}catch(Q){if((Q instanceof Error?Q.message:String(Q)).includes(XB)){if(await J.confirm({title:`"${Y.title}" has uncommitted changes`,body:"Its worktree has uncommitted or untracked work that will be permanently deleted. Force delete anyway?",cancelLabel:"cancel",confirmLabel:"force delete"}))try{await J.orch.deleteTask(z,{force:!0}),G=!0}catch(j){J.logger.error(`${J.logPrefix} force delete failed:`,j),J.notifyError?.(`Couldn't delete: ${j instanceof Error?j.message:String(j)}`)}}else J.logger.error(`${J.logPrefix} delete failed:`,Q),J.notifyError?.(`Couldn't delete: ${Q instanceof Error?Q.message:String(Q)}`)}if(!G)return;let{nextTask:X}=await Vu({orch:J.orch,tasks:J.tasks(),taskId:z,logger:J.logger,logPrefix:J.logPrefix,switchBeforeKill:J.switchBeforeKill,updateActiveTask:J.updateActiveTask});await J.reload?.(),J.onTaskDeleted?.(z,X)}async function lM(J,z){let Y=J.tasks().find((G)=>G.id===z);if(!Y)return;let Z=await J.promptText(Y.title);if(!Z||!J.orch)return;try{await J.orch.setTitle(z,Z)}catch(G){J.logger.error(`${J.logPrefix} task.rename failed:`,G),J.notifyError?.(`Couldn't rename task: ${G instanceof Error?G.message:String(G)}`);return}await J.reload?.()}async function $M(J,z){let Y=J.tasks().find((G)=>G.id===z);if(!Y||Y.kind==="main")return;let Z=await J.promptText(Y.branch,{dialogTitle:"Rename branch",fieldLabel:"branch"});if(!Z||!J.orch)return;try{await J.orch.setBranch(z,Z)}catch(G){J.logger.error(`${J.logPrefix} task.setBranch failed:`,G),J.notifyError?.(`Couldn't rename branch: ${G instanceof Error?G.message:String(G)}`);return}await J.reload?.()}async function aM(J,z){let Y=J.tasks().find((X)=>X.id===z);if(!Y||!J.orch)return;let Z=await GY(),G=AY(Z,Y.vendor??o1);try{await J.orch.setVendor(z,G)}catch(X){J.logger.error(`${J.logPrefix} task.setVendor failed:`,X),J.notifyError?.(`Couldn't switch engine: ${X instanceof Error?X.message:String(X)}`);return}J.notifyInfo?.(`Engine \u2192 ${LZ(G)} (applies on reopen)`),await J.reload?.()}async function _M(J){let z=SJ(),Y=J.cursorRepo()??z[0]??process.cwd();if(J.openCreateSurface&&await J.openCreateSurface(Y))return;let Z=J.lastVendor()??o1,G=await GY();if(G.length===0)J.notifyInfo?.("No engine CLI detected \u2014 install claude or codex, or add one in Settings \u2192 Engines");let X=J.orch,Q=await J.promptNewTask(Y,z,{defaultVendor:Z,availableVendors:G,discoverAdoptable:X?(f)=>X.discoverAdoptableWorktrees(f):void 0});if(!Q)return;if(J.rememberVendor(Q.vendor),ez(Q.repo),J.onRepoSaved?.(),!X){J.logger.error(`${J.logPrefix} no daemon; cannot create task`);return}J.notifyInfo?.("Creating task\u2026");let H;if(Q.mode==="adopt"){let f=Q.adopt.length,j=0,V;for(let B of Q.adopt)try{H=(await X.adoptWorktree({repo:Q.repo,worktreePath:B.worktreePath,branch:B.branch,vendor:Q.vendor})).id,j++}catch(K){if(V===void 0)V=K instanceof Error?K.message:String(K);J.logger.error(`${J.logPrefix} adoptWorktree failed for ${B.worktreePath}:`,K)}if(j===0){J.notifyError?.(F("newTask.adopt.summaryNone",{error:V??""}));return}if(j<f)J.notifyInfo?.(F("newTask.adopt.summaryPartial",{done:j,total:f}));else J.notifyInfo?.(F("newTask.adopt.summaryAll",{count:j}))}else try{H=(await X.createTask({repo:Q.repo,baseRef:Q.baseRef,vendor:Q.vendor})).id}catch(f){J.logger.error(`${J.logPrefix} task.create failed:`,f),J.notifyError?.(`Couldn't create task: ${f instanceof Error?f.message:String(f)}`);return}if(await J.reload?.(),H)J.selectTask?.(H),await J.enterTask?.(H)}var pM=C(()=>{XZ();Yz();HB();C1();ZJ();zz();_1();zJ()});function zX(J,z){if(z<=0)return"";let Y=[...J];if(Y.length<=z)return J;return`${Y.slice(0,Math.max(0,z-1)).join("")}\u2026`}function hf(J,z){if(z<=0)return"";let Y=[...J];if(Y.length<=z)return J;return`\u2026${Y.slice(Y.length-Math.max(0,z-1)).join("")}`}import{spawn as Ku}from"child_process";import{existsSync as Uu}from"fs";import{basename as Du,delimiter as Lu,isAbsolute as Fu,join as Mu}from"path";function WW(J,z,Y){if(Fu(J))return Y(J);let Z=z.PATH??"";for(let G of Z.split(Lu)){if(!G)continue;if(Y(Mu(G,J)))return!0}return!1}function Ru(J){let z=Du(J);if(z==="code")return"VS Code";if(z==="cursor")return"Cursor";if(z==="windsurf")return"Windsurf";if(z==="zed")return"Zed";return z||J}function rM(J={}){let z=J.env??process.env,Y=J.platform??process.platform,Z=J.exists??Uu,G=z.KOBE_OPEN_EDITOR?.trim();if(G)return{id:"env",label:Ru(G),command:G,args:[]};for(let X of Ou)if(WW(X.command,z,Z))return{id:X.id,label:X.label,command:X.command,args:[]};if(Y==="darwin"&&WW("open",z,Z)){for(let X of Au)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"&&WW("xdg-open",z,Z))return{id:"xdg-open",label:"Open",command:"xdg-open",args:[]};return null}function gu(J,z){return[z.command,[...z.args,J]]}function oM(J,z,Y={}){if(!J)return!1;let Z=Y.spawn??Ku,[G,X]=gu(J,z);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 Ou,Au;var sM=C(()=>{Ou=[{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"}],Au=[{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 vf(J){let z=new Map;function Y(Z){let G=z.get(Z);if(!G){let[X,Q]=p(J.initial,J.equals?{equals:J.equals}:void 0);G={read:X,write:(H)=>Q(()=>H),inFlight:!1,nextAllowedAt:0},z.set(Z,G)}return G}return{read(Z){if(!Z)return J.initial;return Y(Z).read()},poll(Z){if(!Z)return;let G=Y(Z);ZG(G,J,(X)=>J.run(Z,X),(X)=>G.write(X))},reset(){z.clear()}}}var yQ=C(()=>{W1();GG();GG()});import{stat as Nu}from"fs/promises";import{join as Cu}from"path";async function Iu(J){try{let z=await Nu(Cu(J,".git","HEAD"));return`${z.mtimeMs}:${z.size}`}catch{return null}}async function yu(J,z,Y=qY){let Z=await Iu(J);if(Z!==null){let H=tM.get(J);if(H&&H.fingerprint===Z)return H.value}let G="",X=await Y("git",["symbolic-ref","--short","HEAD"],{cwd:J,env:iJ(),signal:z}),Q=X.status===0?X.stdout.trim():"";if(Q&&Q!=="HEAD")G=Q;else if((await Y("git",["rev-parse","--verify","HEAD"],{cwd:J,env:iJ(),signal:z})).status===0)G="(detached)";if(Z!==null)tM.set(J,{fingerprint:Z,value:G});return G}function J3(J){return eM.read(J)}function z3(J){eM.poll(J)}var ku=2000,bu=30000,Su=1500,tM,eM;var Y3=C(()=>{dY();yQ();tM=new Map;eM=vf({initial:"",timeoutMs:ku,slowRetryMs:bu,minIntervalMs:Su,run:(J,z)=>yu(J,z)})});function VW(J){let z=J.scheduleTimeout??((f,j)=>{let V=setTimeout(f,j);return()=>clearTimeout(V)}),Y=!1,Z=null,G=()=>{Y=!0,Z?.(),Z=z(()=>{Y=!1,Z=null},700)},X=()=>{Y=!1,Z?.(),Z=null},Q=(f)=>{let j=J.getFlatIds();if(j.length===0)return;let V=J.getCursor(),B=V<0?0:V,K=Math.min(j.length-1,Math.max(0,B+f));J.setCursor(K)},H=(f)=>{let j=J.getFlatIds();if(j.length===0)return;J.setCursor(Math.min(j.length-1,Math.max(0,f)))};return{moveDown(){X(),Q(1)},moveUp(){X(),Q(-1)},selectCurrent(){X();let f=J.getFlatIds(),j=J.getCursor();if(j<0||j>=f.length)return;let V=f[j];if(V!==void 0)J.onSelect(V)},pressG(){if(Y)X(),H(0);else G()},pressShiftG(){X(),H(J.getFlatIds().length-1)},isChordArmed(){return Y},disarmChord(){X()}}}function Z3(J){let z=VW({getCursor:()=>J.cursorIndex(),setCursor:(X)=>J.setCursorIndex(X),getFlatIds:()=>J.flatTaskIds(),onSelect:(X)=>J.onSelect(X)}),Y=()=>{let X=J.flatTaskIds(),Q=J.cursorIndex();if(Q<0||Q>=X.length)return;return X[Q]},Z=()=>J.searchMode?.()??!1,G=()=>J.moveMode?.()??!1;U1(()=>({enabled:J.focused()&&!Z(),bindings:rY({"sidebar.nav":(X,Q)=>{let H=(Q??0)%2===0;if(G()){let f=Y();if(f===void 0)return;J.onMoveRequest?.(f,H?1:-1);return}if(H)z.moveDown();else z.moveUp()},"sidebar.select":()=>{if(G()){J.onMoveModeExit?.();return}z.selectCurrent()},"sidebar.goto":(X)=>{if(G())return;if(X.shift)z.pressShiftG();else z.pressG()},"sidebar.delete":()=>{if(G())return;let X=Y();if(X!==void 0)J.onDeleteRequest?.(X)},"sidebar.archive":()=>{if(G())return;let X=Y();if(X!==void 0)J.onArchiveRequest?.(X)},"sidebar.localMerge":(X)=>{if(!X.shift)return;let Q=Y();if(Q!==void 0)J.onLocalMergeRequest?.(Q)},"sidebar.rename":()=>{if(G())return;let X=Y();if(X!==void 0)J.onRenameRequest?.(X)},"sidebar.pin":(X)=>{if(G())return;if(!X.shift)return;let Q=Y();if(Q!==void 0)J.onPinRequest?.(Q)},"sidebar.search.enter":()=>{if(G())return;J.onSearchEnter?.()},"sidebar.sort":()=>{if(G())return;J.onSortModeToggle?.()},"sidebar.projectFilter":()=>{if(G())return;J.onProjectFilterToggle?.()}})})),U1(()=>({enabled:J.focused()&&G(),bindings:[{key:"escape",cmd:()=>J.onMoveModeExit?.()}]})),U1(()=>({enabled:J.focused(),bindings:rY({"sidebar.view":(X,Q)=>{J.onViewSwitch?.((Q??0)%2===0?-1:1)}})})),U1(()=>({enabled:J.focused()&&Z(),bindings:rY({"sidebar.search.nav":(X,Q)=>{if((Q??0)%2===0)z.moveDown();else z.moveUp()},"sidebar.search.submit":()=>{z.selectCurrent(),J.onSearchExit?.(!0)},"sidebar.search.cancel":()=>J.onSearchExit?.(!1)})}))}var G3=C(()=>{rG();kJ()});function KW(J,z){return zX(J,z)}function UW(J,z){return` ${KW(J,Math.max(0,z))}`}var X3=()=>{};function xu(J){switch(J){case"done":return F("tasks.status.done");case"in_review":return F("tasks.status.inReview");case"in_progress":return F("tasks.status.working");case"backlog":return F("tasks.status.backlog");case"canceled":return F("tasks.status.canceled");case"error":return F("tasks.status.error")}}function uu(J){switch(J){case"rate_limited":return{text:F("tasks.activity.rateLimited"),tone:"warning"};case"permission_needed":return{text:F("tasks.activity.permissionNeeded"),tone:"warning"};case"error":return{text:F("tasks.activity.error"),tone:"error"};default:return null}}function H3(J){switch(J.prStatus?.checkState){case"passing":return{glyph:"\u2713",tone:"success"};case"failing":return{glyph:"\u2717",tone:"error"};case"pending":return{glyph:"\u2022",tone:"warning"};default:return null}}function Eu(){return F("tasks.subtitle.noTracking")}function wu(){return F("tasks.subtitle.materializing")}function Pu(J){if(J.kind==="main")return!1;return J.vendor!==void 0&&!jJ(J.vendor)}function DW(J){let{task:z}=J,Y=z.kind==="main",Z=Y?J.mainBranch??"":z.branch,G=Tu[z.status],X=J.activity?.state,Q=X!==void 0,H=hu(X),f=uu(X),j=Pu(z)&&!Q,V=J.job!==void 0,B=V||!j&&(X==="running"||J.live||!Q&&!Y&&z.status==="in_progress"),K=YX[J.spinnerFrame]??YX[0],L=V?"primary":j?"textMuted":f?.tone??(B?"primary":H?.tone??G.tone),A=j?Eu():xu(z.status),O=V?J.truncateBranch(wu(),J.subtitleBudget):f?J.truncateBranch(f.text,J.subtitleBudget):Z.length>0?J.truncateBranch(Z,J.subtitleBudget):J.truncateBranch(A,J.subtitleBudget),R=j?Q3:H?.glyph??G.glyph,u=j?Q3:H?.glyph??"\u2605";return{isMain:Y,titleText:Y?xz(z.repo):z.title,subtitleText:O,loading:B,stateGlyph:B?K:R,projectGlyph:B?K:u,tone:L}}function LW(J,z){if(!J.loading)return J;let Y=YX[z()%YX.length]??"\u280B";if(Y===J.stateGlyph&&Y===J.projectGlyph)return J;return{...J,stateGlyph:Y,projectGlyph:Y}}function hu(J){switch(J){case"rate_limited":return{glyph:"\u25F7",tone:"warning"};case"permission_needed":return{glyph:"?",tone:"warning"};case"error":return{glyph:"\u2715",tone:"error"};case"turn_complete":return{glyph:"\u2713",tone:"primary"};default:return null}}var Tu,YX,q3=100,Q3="\xB7";var f3=C(()=>{ZJ();_1();xf();Tu={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"}};YX=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"]});function FW(J){return j3.read(J)}function MW(J){j3.poll(J)}var vu=4000,mu=60000,cu=1500,du,j3;var B3=C(()=>{dY();yQ();xG();yQ();du={added:0,deleted:0},j3=vf({initial:du,equals:$z,timeoutMs:vu,slowRetryMs:mu,minIntervalMs:cu,run:async(J,z)=>{let Y=await qY("git",["status","--porcelain=v1"],{cwd:J,env:iJ(),signal:z});if(Y.status!==0)throw Error("git status failed");return TG(Y.stdout)}})});import{TextAttributes as v1}from"@opentui/core";function nu(J){switch(J){case"active":return F("tasks.view.workspace");case"archived":return F("tasks.view.archives")}}function V3(J,z=lu){return zX(J,z)}function $u(J){let z=0;for(let Y of J)z+=(Y.codePointAt(0)??0)>=4352?2:1;return z}function K3(J){let{theme:z}=w0(),Y=()=>J.focused?J.focused():!0,[Z,G]=p("active"),[X,Q]=p(!1),[H,f]=p(""),[j,V]=p(null),B=()=>J.projectFilter?.()??j(),K=(s)=>{if(J.onProjectFilterChange)J.onProjectFilterChange(s);else V(s)};function L(){f(""),Q(!0),J.onSearchActiveChange?.(!0)}function A(s){Q(!1),f(""),J.onSearchActiveChange?.(!1)}_0(()=>{if(!X())return;let s=WJ();if(!s)return;let j0=(C0)=>{if(C0.defaultPrevented)return;if(!Y())return;if(C0.ctrl||C0.meta||C0.option)return;if(C0.name==="backspace"){f((E0)=>E0.slice(0,-1));return}let t0=C0.sequence;if(!t0||t0.length!==1)return;let z1=t0.charCodeAt(0);if(z1<32||z1===127)return;f((E0)=>E0+t0)};s.keyInput.on("keypress",j0),T1(()=>s.keyInput.off("keypress",j0))});let[O,R]=p(0),u=setInterval(()=>R((s)=>s+1),iu);T1(()=>clearInterval(u));let[P,S]=p(0),g=setInterval(()=>S((s)=>(s+1)%YX.length),q3);T1(()=>clearInterval(g));let M=()=>J.sortMode?.()??"default",T=U0(()=>KM(J.tasks(),Z())),d=U0(()=>{let s=B();if(!s)return null;let j0=fz(s);return T().find((C0)=>fz(C0.repo)===j0)??null}),i=U0(()=>d()?.repo??null),J0=U0(()=>d()?.label??"all"),E=U0(()=>{let s=d();return s?s.count:T().reduce((j0,C0)=>j0+C0.count,0)}),z0=U0(()=>{let s=E();return`${s} ${s===1?F("tasks.project.taskSingular"):F("tasks.project.taskPlural")}`}),q0=U0((s)=>FM(s,JW(J.tasks(),Z(),X()?H():"",M(),i())),[]),o=U0(()=>zW(q0())),B0=U0(()=>LM(q0())),g0=U0(()=>B0().projectRows),m=U0(()=>B0().taskRows),r=U0(()=>{let s=new Map;for(let j0 of q0())s.set(j0.flatIndex,j0);return s}),c=U0(()=>zW(JW(J.tasks(),Z(),"",M(),i())).length),N=U0(()=>m().length>0);_0(()=>{let s=B(),j0=T();if(s!==null&&j0.length>0&&(j0.length<=1||d()===null))K(null)});function t(){let s=T();if(s.length<=1){K(null);return}let j0=i(),C0=j0?fz(j0):null,t0=C0===null?-1:s.findIndex((E0)=>fz(E0.repo)===C0),z1=s[t0+1];K(z1?.repo??null)}let x=()=>J.width?J.width():W3,n=U0(()=>Math.max(6,x()-9)),Q0=U0(()=>Math.max(6,x()-16)),H0=az(),F0=U0(()=>{let s=Math.max(2,Math.min(10,Math.floor(H0().height*0.25))),j0=Math.max(2,g0().length*2);return Math.min(s,j0)}),[M0,o0]=p(null),[S0,p0]=p(-1),h,L0,Z0,D0=new Map;_0(()=>{let s=J.width?J.width():W3,j0=Z0;if(!j0)return;j0.width=s,j0.flexShrink=1,j0.minHeight=0}),_0(BJ([S0,q0],([s])=>{let j0=r().get(s);if(!j0)return;let C0=j0.task.kind==="main"?h:L0;if(!C0)return;if(C0.viewport.height<=0)return;let t0=D0.get(s);if(!t0)return;C0.scrollChildIntoView(t0.id)})),_0(BJ(()=>[J.selectedId(),o()],([s,j0])=>{let C0=t1(S0),t0=DM(s,j0,C0);if(t0!==C0)p0(t0)})),_0(BJ(Z,()=>{let s=o();p0(s.length>0?0:-1)},{defer:!0})),_0(BJ(i,(s)=>p0(UM(q0(),s)),{defer:!0})),_0(BJ([X,H],()=>{if(!X())return;let s=o();p0(s.length>0?0:-1)}));function P0(s){let j0=Z(),C0=TQ.findIndex((E0)=>E0.view===j0);if(C0<0)return;let t0=(C0+s+TQ.length)%TQ.length,z1=TQ[t0];if(z1)G(z1.view)}let G1=(s)=>{if(J.onActivate?.(s),!J.pinnedSelection)return;let j0=J.selectedId();if(!j0||s===j0)return;let C0=o().indexOf(j0);if(C0>=0)p0(C0)};Z3({focused:Y,cursorIndex:S0,setCursorIndex:p0,flatTaskIds:o,onSelect:(s)=>{J.onSelect(s),G1(s)},onDeleteRequest:(s)=>J.onDeleteRequest?.(s),onArchiveRequest:(s)=>J.onArchiveRequest?.(s),onLocalMergeRequest:(s)=>J.onLocalMergeRequest?.(s),moveMode:J.moveMode,onMoveRequest:(s,j0)=>J.onMoveRequest?.(s,j0),onMoveModeExit:()=>J.onMoveModeExit?.(),onRenameRequest:(s)=>J.onRenameRequest?.(s),onPinRequest:(s)=>J.onPinRequest?.(s),onViewSwitch:(s)=>P0(s),onSortModeToggle:()=>J.onSortModeToggle?.(),onProjectFilterToggle:()=>t(),searchMode:X,onSearchEnter:()=>L(),onSearchExit:(s)=>A(s)});let c0=(s)=>(()=>{var j0=W("box"),C0=W("box"),t0=W("text"),z1=W("text");return D(j0,C0),q(j0,"flexDirection","column"),q(j0,"flexShrink",0),U(j0,b(Y0,{get when(){return s.topPad},get children(){var E0=W("box"),V1=W("text");return D(E0,V1),q(E0,"flexShrink",0),D(V1,T0(" ")),q(V1,"wrapMode","none"),E0}}),C0),D(C0,t0),D(C0,z1),q(C0,"flexDirection","row"),q(C0,"flexShrink",0),q(C0,"gap",1),q(C0,"paddingLeft",1),q(C0,"paddingRight",1),q(t0,"wrapMode","none"),U(t0,()=>s.label),q(z1,"wrapMode","none"),U(z1,()=>"\u2500".repeat(Math.max(2,x()-10-s.label.length-(s.suffix?.length??0)))),U(C0,b(Y0,{get when(){return s.suffix},get children(){var E0=W("text");return q(E0,"wrapMode","none"),U(E0,()=>s.suffix),y((V1)=>{var D1=z.info,f1=v1.BOLD;return D1!==V1.e&&(V1.e=q(E0,"fg",D1,V1.e)),f1!==V1.t&&(V1.t=q(E0,"attributes",f1,V1.t)),V1},{e:void 0,t:void 0}),E0}}),null),y((E0)=>{var V1=z.textMuted,D1=v1.BOLD,f1=z.border;return V1!==E0.e&&(E0.e=q(t0,"fg",V1,E0.e)),D1!==E0.t&&(E0.t=q(t0,"attributes",D1,E0.t)),f1!==E0.a&&(E0.a=q(z1,"fg",f1,E0.a)),E0},{e:void 0,t:void 0,a:void 0}),j0})(),u0=(s)=>{switch(s){case"success":return z.success;case"warning":return z.warning;case"primary":return z.primary;case"error":return z.error;default:return z.textMuted}},k1=(s)=>{let j0=s.row.task,C0=s.row.flatIndex,t0=()=>C0===S0(),z1=()=>j0.id===J.selectedId(),E0=U0(()=>{let V0=J.chatRunState?.();if(!V0)return!1;let h0=`${j0.id}:`;for(let[k0,s0]of V0)if(s0==="running"&&k0.startsWith(h0))return!0;return!1}),V1=U0(()=>{let V0=iH(J.worktreeChanges?.(),j0.worktreePath);if(V0)return V0;if(O(),!j0.archived)MW(j0.worktreePath);return FW(j0.worktreePath)},void 0,{equals:$z}),D1=U0(()=>{return O(),z3(j0.repo),J3(j0.repo)}),f1=U0(()=>DW({task:j0,activity:J.engineState?.().get(j0.id),job:J.taskJobs?.().get(j0.id),live:E0(),spinnerFrame:0,subtitleBudget:Q0(),truncateBranch:V3,mainBranch:D1()})),G0=U0(()=>LW(f1(),P)),X0=()=>!G0().loading?z.primary:u0(G0().tone),W0=()=>t0()?z.focusAccent:z1()?z.primary:void 0,R0=()=>t0()||z1()?"\u258C":" ";return(()=>{var V0=W("box"),h0=W("box"),k0=W("box"),s0=W("text"),b0=W("box"),x0=W("text"),k=W("text"),X1=W("box"),e0=W("text"),n0=W("box"),v0=W("text");return D(V0,h0),q(V0,"flexDirection","column"),q(V0,"gap",0),q(V0,"paddingBottom",0),D(h0,k0),D(h0,X1),qz((K0)=>{D0.set(C0,K0),T1(()=>{if(D0.get(C0)===K0)D0.delete(C0)})},h0),q(h0,"flexDirection","column"),q(h0,"gap",0),q(h0,"onMouseUp",()=>{if(p0(C0),J.onSelect(j0.id),J.activateOnClick)G1(j0.id)}),q(h0,"onMouseOver",(K0)=>o0({task:j0,x:K0.x,y:K0.y})),q(h0,"onMouseOut",()=>o0((K0)=>K0?.task.id===j0.id?null:K0)),D(k0,s0),D(k0,b0),q(k0,"flexDirection","row"),q(k0,"gap",0),q(s0,"wrapMode","none"),U(s0,R0),D(b0,x0),D(b0,k),q(b0,"flexDirection","row"),q(b0,"flexGrow",1),q(b0,"paddingRight",1),q(b0,"gap",0),q(x0,"wrapMode","none"),U(x0,()=>G0().projectGlyph),q(k,"wrapMode","none"),q(k,"flexGrow",1),U(k,()=>UW(G0().titleText,n())),D(X1,e0),D(X1,n0),q(X1,"flexDirection","row"),q(X1,"gap",0),q(e0,"wrapMode","none"),U(e0,R0),D(n0,v0),q(n0,"flexDirection","row"),q(n0,"flexGrow",1),q(n0,"paddingLeft",2),q(n0,"paddingRight",1),q(n0,"gap",1),q(v0,"wrapMode","none"),q(v0,"flexGrow",1),U(v0,()=>G0().subtitleText),U(n0,b(Y0,{get when(){return V1().added>0},get children(){var K0=W("text"),y0=T0("+");return D(K0,y0),q(K0,"wrapMode","none"),U(K0,()=>V1().added,null),y((b1)=>q(K0,"fg",z.success,b1)),K0}}),null),U(n0,b(Y0,{get when(){return V1().deleted>0},get children(){var K0=W("text"),y0=T0("\u2212");return D(K0,y0),q(K0,"wrapMode","none"),U(K0,()=>V1().deleted,null),y((b1)=>q(K0,"fg",z.error,b1)),K0}}),null),y((K0)=>{var y0=t0()?z.backgroundElement:void 0,b1=W0(),F1=X0(),A1=v1.BOLD,l=z.text,I=v1.BOLD,O0=W0(),e=z.textMuted,I0=v1.DIM;return y0!==K0.e&&(K0.e=q(h0,"backgroundColor",y0,K0.e)),b1!==K0.t&&(K0.t=q(s0,"fg",b1,K0.t)),F1!==K0.a&&(K0.a=q(x0,"fg",F1,K0.a)),A1!==K0.o&&(K0.o=q(x0,"attributes",A1,K0.o)),l!==K0.i&&(K0.i=q(k,"fg",l,K0.i)),I!==K0.n&&(K0.n=q(k,"attributes",I,K0.n)),O0!==K0.s&&(K0.s=q(e0,"fg",O0,K0.s)),e!==K0.h&&(K0.h=q(v0,"fg",e,K0.h)),I0!==K0.r&&(K0.r=q(v0,"attributes",I0,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}),V0})()};return(()=>{var s=W("box"),j0=W("box"),C0=W("box"),t0=W("text"),z1=W("box"),E0=W("box"),V1=W("text"),D1=W("scrollbox"),f1=W("box");return D(s,j0),D(s,z1),D(s,D1),qz((G0)=>{Z0=G0},s),q(s,"flexGrow",1),q(s,"minHeight",0),q(s,"flexDirection","column"),q(s,"paddingTop",1),q(s,"paddingBottom",1),q(s,"paddingLeft",0),q(s,"paddingRight",0),D(j0,C0),q(j0,"flexDirection","row"),q(j0,"justifyContent","space-between"),q(j0,"gap",1),q(j0,"paddingBottom",1),q(j0,"paddingLeft",1),q(j0,"paddingRight",1),D(C0,t0),q(C0,"flexDirection","row"),q(C0,"gap",1),D(t0,T0("KOBE")),q(t0,"wrapMode","none"),U(C0,b(Y0,{get when(){return J.headerStatus?.()},children:(G0)=>(()=>{var X0=W("text");return q(X0,"wrapMode","none"),q(X0,"onMouseUp",()=>J.onHeaderStatusClick?.()),U(X0,()=>G0().label),y((W0)=>{var R0=G0().emphasize?z.warning:z.textMuted,V0=G0().emphasize?v1.BOLD:v1.DIM;return R0!==W0.e&&(W0.e=q(X0,"fg",R0,W0.e)),V0!==W0.t&&(W0.t=q(X0,"attributes",V0,W0.t)),W0},{e:void 0,t:void 0}),X0})()}),null),U(j0,b(Y0,{get when(){return J.onAddTask},get children(){var G0=W("text");return D(G0,T0("[+]")),q(G0,"wrapMode","none"),q(G0,"onMouseUp",()=>J.onAddTask?.()),y((X0)=>{var W0=z.primary,R0=v1.BOLD;return W0!==X0.e&&(X0.e=q(G0,"fg",W0,X0.e)),R0!==X0.t&&(X0.t=q(G0,"attributes",R0,X0.t)),X0},{e:void 0,t:void 0}),G0}}),null),U(s,b(Y0,{get when(){return X()},get children(){var G0=W("box"),X0=W("text"),W0=W("text"),R0=W("text");return D(G0,X0),D(G0,W0),D(G0,R0),q(G0,"flexDirection","row"),q(G0,"gap",0),q(G0,"paddingBottom",1),q(G0,"paddingLeft",1),D(X0,T0("/")),q(X0,"wrapMode","none"),q(W0,"wrapMode","none"),U(W0,H),D(R0,T0("\u2588")),q(R0,"wrapMode","none"),U(G0,b(Y0,{get when(){return H().length===0},get children(){var V0=W("text"),h0=T0(" ");return D(V0,h0),q(V0,"wrapMode","none"),U(V0,()=>F("tasks.search.placeholder"),null),y((k0)=>q(V0,"fg",z.textMuted,k0)),V0}}),null),U(G0,b(Y0,{get when(){return H().length>0},get children(){var V0=W("text"),h0=T0(" "),k0=T0("/");return D(V0,h0),D(V0,k0),q(V0,"wrapMode","none"),U(V0,()=>o().length,k0),U(V0,c,null),y((s0)=>q(V0,"fg",z.textMuted,s0)),V0}}),null),y((V0)=>{var{info:h0,text:k0,info:s0}=z,b0=v1.BLINK;return h0!==V0.e&&(V0.e=q(X0,"fg",h0,V0.e)),k0!==V0.t&&(V0.t=q(W0,"fg",k0,V0.t)),s0!==V0.a&&(V0.a=q(R0,"fg",s0,V0.a)),b0!==V0.o&&(V0.o=q(R0,"attributes",b0,V0.o)),V0},{e:void 0,t:void 0,a:void 0,o:void 0}),G0}}),z1),D(z1,E0),q(z1,"flexDirection","row"),q(z1,"justifyContent","space-between"),q(z1,"gap",1),q(z1,"paddingBottom",1),q(z1,"paddingLeft",1),q(z1,"paddingRight",1),D(E0,V1),q(E0,"flexDirection","row"),q(E0,"gap",2),U(E0,b(Z1,{each:TQ,children:(G0)=>{let X0=()=>Z()===G0.view;return(()=>{var W0=W("text");return q(W0,"wrapMode","none"),q(W0,"onMouseUp",()=>G(G0.view)),U(W0,()=>nu(G0.view)),y((R0)=>{var V0=X0()?z.primary:z.textMuted,h0=X0()?v1.BOLD:void 0;return V0!==R0.e&&(R0.e=q(W0,"fg",V0,R0.e)),h0!==R0.t&&(R0.t=q(W0,"attributes",h0,R0.t)),R0},{e:void 0,t:void 0}),W0})()}}),V1),D(V1,T0("[/]")),q(V1,"wrapMode","none"),U(z1,b(Y0,{get when(){return J.sortMode},get children(){var G0=W("text");return q(G0,"wrapMode","none"),q(G0,"onMouseUp",()=>J.onSortModeToggle?.()),U(G0,()=>F("tasks.sort")),y((X0)=>{var W0=z.textMuted,R0=v1.DIM;return W0!==X0.e&&(X0.e=q(G0,"fg",W0,X0.e)),R0!==X0.t&&(X0.t=q(G0,"attributes",R0,X0.t)),X0},{e:void 0,t:void 0}),G0}}),null),U(s,b(Y0,{get when(){return g0().length>0},get children(){var G0=W("box"),X0=W("box"),W0=W("text"),R0=W("text"),V0=W("scrollbox"),h0=W("box");return D(G0,X0),D(G0,V0),q(G0,"flexDirection","column"),q(G0,"flexShrink",0),D(X0,W0),D(X0,R0),q(X0,"flexDirection","row"),q(X0,"flexShrink",0),q(X0,"gap",1),q(X0,"paddingLeft",1),q(X0,"paddingRight",1),q(X0,"onMouseUp",()=>t()),q(W0,"wrapMode","none"),U(W0,()=>F("tasks.header.projects")),U(X0,b(Y0,{get when(){return T().length>1},get children(){var k0=W("text");return q(k0,"wrapMode","none"),U(k0,J0),y((s0)=>{var b0=i()?z.primary:z.textMuted,x0=i()?v1.BOLD:void 0;return b0!==s0.e&&(s0.e=q(k0,"fg",b0,s0.e)),x0!==s0.t&&(s0.t=q(k0,"attributes",x0,s0.t)),s0},{e:void 0,t:void 0}),k0}}),R0),q(R0,"wrapMode","none"),U(R0,()=>"\u2500".repeat(Math.max(2,x()-10-F("tasks.header.projects").length-(T().length>1?J0().length+1:0)-(T().length>1?z0().length+1:0)))),U(X0,b(Y0,{get when(){return T().length>1},get children(){var k0=W("text");return q(k0,"wrapMode","none"),U(k0,z0),y((s0)=>{var b0=z.textMuted,x0=v1.DIM;return b0!==s0.e&&(s0.e=q(k0,"fg",b0,s0.e)),x0!==s0.t&&(s0.t=q(k0,"attributes",x0,s0.t)),s0},{e:void 0,t:void 0}),k0}}),null),D(V0,h0),qz((k0)=>{h=k0},V0),q(V0,"flexShrink",0),q(V0,"flexGrow",0),q(V0,"minHeight",0),q(V0,"stickyScroll",!1),q(V0,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),q(h0,"flexShrink",0),q(h0,"gap",0),q(h0,"paddingRight",1),U(h0,b(Z1,{get each(){return g0()},children:(k0)=>b(k1,{row:k0})})),y((k0)=>{var s0=z.textMuted,b0=v1.BOLD,x0=z.border,k=F0();return s0!==k0.e&&(k0.e=q(W0,"fg",s0,k0.e)),b0!==k0.t&&(k0.t=q(W0,"attributes",b0,k0.t)),x0!==k0.a&&(k0.a=q(R0,"fg",x0,k0.a)),k!==k0.o&&(k0.o=q(V0,"maxHeight",k,k0.o)),k0},{e:void 0,t:void 0,a:void 0,o:void 0}),G0}}),D1),U(s,b(c0,{get label(){return F("tasks.header.tasks")},get suffix(){return N0(()=>M()==="default")()?void 0:M()},get topPad(){return g0().length>0}}),D1),D(D1,f1),qz((G0)=>{L0=G0},D1),q(D1,"flexGrow",1),q(D1,"minHeight",0),q(D1,"stickyScroll",!1),q(D1,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),q(f1,"flexShrink",0),q(f1,"gap",0),q(f1,"paddingRight",1),U(f1,b(Z1,{get each(){return m()},children:(G0)=>{let{task:X0,flatIndex:W0}=G0,R0=()=>W0===S0(),V0=()=>X0.id===J.selectedId(),h0=U0(()=>{let e0=J.chatRunState?.();if(!e0)return!1;let n0=`${X0.id}:`;for(let[v0,K0]of e0)if(K0==="running"&&v0.startsWith(n0))return!0;return!1}),k0=U0(()=>{let e0=iH(J.worktreeChanges?.(),X0.worktreePath);if(e0)return e0;if(O(),!X0.archived)MW(X0.worktreePath);return FW(X0.worktreePath)},void 0,{equals:$z}),s0=U0(()=>DW({task:X0,activity:J.engineState?.().get(X0.id),job:J.taskJobs?.().get(X0.id),live:h0(),spinnerFrame:0,subtitleBudget:Q0(),truncateBranch:V3,mainBranch:""})),b0=U0(()=>LW(s0(),P)),x0=()=>u0(b0().tone),k=()=>R0()?z.focusAccent:V0()?z.primary:void 0,X1=()=>R0()||V0()?"\u258C":" ";return(()=>{var e0=W("box"),n0=W("box"),v0=W("box"),K0=W("text"),y0=W("box"),b1=W("text"),F1=W("text"),A1=W("box"),l=W("text"),I=W("box"),O0=W("text");return D(e0,n0),q(e0,"flexDirection","column"),q(e0,"gap",0),q(e0,"paddingBottom",1),D(n0,v0),D(n0,A1),qz((e)=>{D0.set(W0,e),T1(()=>{if(D0.get(W0)===e)D0.delete(W0)})},n0),q(n0,"flexDirection","column"),q(n0,"gap",0),q(n0,"onMouseUp",()=>{if(p0(W0),J.onSelect(X0.id),J.activateOnClick)G1(X0.id)}),q(n0,"onMouseOver",(e)=>o0({task:X0,x:e.x,y:e.y})),q(n0,"onMouseOut",()=>o0((e)=>e?.task.id===X0.id?null:e)),D(v0,K0),D(v0,y0),q(v0,"flexDirection","row"),q(v0,"gap",0),q(K0,"wrapMode","none"),U(K0,X1),D(y0,b1),D(y0,F1),q(y0,"flexDirection","row"),q(y0,"flexGrow",1),q(y0,"paddingRight",1),q(y0,"gap",0),q(b1,"wrapMode","none"),U(b1,()=>b0().stateGlyph),q(F1,"wrapMode","none"),q(F1,"flexGrow",1),U(F1,()=>UW(b0().titleText,n())),U(y0,b(Y0,{get when(){return N0(()=>!!J.moveMode?.())()&&R0()},get children(){var e=W("text");return q(e,"wrapMode","none"),U(e,()=>F("tasks.moveChip")),y((I0)=>q(e,"fg",z.warning,I0)),e}}),null),D(A1,l),D(A1,I),q(A1,"flexDirection","row"),q(A1,"gap",0),q(l,"wrapMode","none"),U(l,X1),D(I,O0),q(I,"flexDirection","row"),q(I,"flexGrow",1),q(I,"paddingLeft",2),q(I,"paddingRight",1),q(I,"gap",1),q(O0,"wrapMode","none"),q(O0,"flexGrow",1),U(O0,()=>b0().subtitleText),U(I,b(Y0,{get when(){return X0.pinned===!0},get children(){var e=W("text");return D(e,T0("\u25B4")),q(e,"wrapMode","none"),y((I0)=>q(e,"fg",z.warning,I0)),e}}),null),U(I,b(Y0,{get when(){return H3(X0)},children:(e)=>(()=>{var I0=W("text");return q(I0,"wrapMode","none"),U(I0,()=>e().glyph),y((M1)=>q(I0,"fg",u0(e().tone),M1)),I0})()}),null),U(I,b(Y0,{get when(){return k0().added>0},get children(){var e=W("text"),I0=T0("+");return D(e,I0),q(e,"wrapMode","none"),U(e,()=>k0().added,null),y((M1)=>q(e,"fg",z.success,M1)),e}}),null),U(I,b(Y0,{get when(){return k0().deleted>0},get children(){var e=W("text"),I0=T0("\u2212");return D(e,I0),q(e,"wrapMode","none"),U(e,()=>k0().deleted,null),y((M1)=>q(e,"fg",z.error,M1)),e}}),null),y((e)=>{var I0=R0()?z.backgroundElement:void 0,M1=k(),UJ=x0(),GJ=v1.BOLD,j1=z.text,_J=V0()||R0()?v1.BOLD:void 0,fJ=k(),pJ=z.textMuted,bJ=v1.DIM;return I0!==e.e&&(e.e=q(n0,"backgroundColor",I0,e.e)),M1!==e.t&&(e.t=q(K0,"fg",M1,e.t)),UJ!==e.a&&(e.a=q(b1,"fg",UJ,e.a)),GJ!==e.o&&(e.o=q(b1,"attributes",GJ,e.o)),j1!==e.i&&(e.i=q(F1,"fg",j1,e.i)),_J!==e.n&&(e.n=q(F1,"attributes",_J,e.n)),fJ!==e.s&&(e.s=q(l,"fg",fJ,e.s)),pJ!==e.h&&(e.h=q(O0,"fg",pJ,e.h)),bJ!==e.r&&(e.r=q(O0,"attributes",bJ,e.r)),e},{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}),e0})()}}),null),U(f1,b(Y0,{get when(){return o().length===0},get children(){var G0=W("box"),X0=W("text");return D(G0,X0),q(G0,"paddingTop",1),q(G0,"paddingLeft",1),U(X0,(()=>{var W0=N0(()=>!!(X()&&H().trim().length>0));return()=>W0()?F("tasks.empty.noMatchSearch"):N0(()=>!!i())()?N0(()=>Z()==="active")()?F("tasks.empty.noActiveProject"):F("tasks.empty.noArchivedProject"):N0(()=>Z()==="active")()?F("tasks.empty.noActive"):F("tasks.empty.noArchived")})()),y((W0)=>q(X0,"fg",z.textMuted,W0)),G0}}),null),U(f1,b(Y0,{get when(){return N0(()=>!!(i()&&o().length>0&&!N()))()&&!(X()&&H().trim().length>0)},get children(){var G0=W("box"),X0=W("text");return D(G0,X0),q(G0,"paddingTop",1),q(G0,"paddingLeft",1),q(X0,"wrapMode","none"),U(X0,(()=>{var W0=N0(()=>Z()==="active");return()=>W0()?F("tasks.empty.noActiveProject"):F("tasks.empty.noArchivedProject")})()),y((W0)=>{var R0=z.textMuted,V0=v1.DIM;return R0!==W0.e&&(W0.e=q(X0,"fg",R0,W0.e)),V0!==W0.t&&(W0.t=q(X0,"attributes",V0,W0.t)),W0},{e:void 0,t:void 0}),G0}}),null),U(f1,b(Y0,{get when(){return N0(()=>Z()==="archived")()&&o().length>0},get children(){var G0=W("box"),X0=W("text");return D(G0,X0),q(G0,"paddingTop",1),q(G0,"paddingLeft",1),q(X0,"wrapMode","none"),U(X0,()=>F("tasks.archiveHint")),y((W0)=>{var R0=z.textMuted,V0=v1.DIM;return R0!==W0.e&&(W0.e=q(X0,"fg",R0,W0.e)),V0!==W0.t&&(W0.t=q(X0,"attributes",V0,W0.t)),W0},{e:void 0,t:void 0}),G0}}),null),U(s,b(Y0,{get when(){return J.zenActive?.()},get children(){var G0=W("box"),X0=W("text");return D(G0,X0),q(G0,"flexShrink",0),q(G0,"paddingLeft",1),q(G0,"paddingRight",1),q(G0,"paddingTop",1),D(X0,T0("\u262F ZEN")),q(X0,"wrapMode","none"),q(X0,"onMouseUp",()=>J.onZenClick?.()),y((W0)=>{var R0=z.accent,V0=v1.BOLD;return R0!==W0.e&&(W0.e=q(X0,"fg",R0,W0.e)),V0!==W0.t&&(W0.t=q(X0,"attributes",V0,W0.t)),W0},{e:void 0,t:void 0}),G0}}),null),U(s,b(Y0,{get when(){return M0()},children:(G0)=>{let X0=U0(()=>{let b0=G0().task,x0=[];if(x0.push({text:b0.kind==="main"?xz(b0.repo):b0.title,bold:!0}),b0.branch.length>0)x0.push({text:`\u2387 ${b0.branch}`});if(b0.worktreePath.length>0)x0.push({text:b0.worktreePath,dim:!0});return x0}),W0=72,R0=U0(()=>Math.min(68,Math.max(...X0().map((b0)=>$u(b0.text))))),V0=U0(()=>R0()+4),h0=U0(()=>X0().length+2),k0=U0(()=>Math.max(0,Math.min(G0().x+2,H0().width-V0()-1))),s0=U0(()=>Math.max(0,Math.min(G0().y+1,H0().height-h0()-1)));return(()=>{var b0=W("box");return q(b0,"position","absolute"),q(b0,"zIndex",2600),q(b0,"flexDirection","column"),q(b0,"border",!0),q(b0,"paddingLeft",1),q(b0,"paddingRight",1),U(b0,b(Z1,{get each(){return X0()},children:(x0)=>(()=>{var k=W("text");return q(k,"wrapMode","none"),U(k,(()=>{var X1=N0(()=>!!x0.dim);return()=>X1()?au(x0.text,R0()):KW(x0.text,R0())})()),y((X1)=>{var e0=x0.dim?z.textMuted:z.text,n0=x0.bold?v1.BOLD:x0.dim?v1.DIM:void 0;return e0!==X1.e&&(X1.e=q(k,"fg",e0,X1.e)),n0!==X1.t&&(X1.t=q(k,"attributes",n0,X1.t)),X1},{e:void 0,t:void 0}),k})()})),y((x0)=>{var k=k0(),X1=s0(),e0=V0(),n0=z.focusAccent,v0=z.backgroundElement;return k!==x0.e&&(x0.e=q(b0,"left",k,x0.e)),X1!==x0.t&&(x0.t=q(b0,"top",X1,x0.t)),e0!==x0.a&&(x0.a=q(b0,"width",e0,x0.a)),n0!==x0.o&&(x0.o=q(b0,"borderColor",n0,x0.o)),v0!==x0.i&&(x0.i=q(b0,"backgroundColor",v0,x0.i)),x0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),b0})()}}),null),y((G0)=>{var X0=Y()?z.focusAccent:z.textMuted,W0=v1.BOLD,R0=z.textMuted,V0=v1.DIM;return X0!==G0.e&&(G0.e=q(t0,"fg",X0,G0.e)),W0!==G0.t&&(G0.t=q(t0,"attributes",W0,G0.t)),R0!==G0.a&&(G0.a=q(V1,"fg",R0,G0.a)),V0!==G0.o&&(G0.o=q(V1,"attributes",V0,G0.o)),G0},{e:void 0,t:void 0,a:void 0,o:void 0}),s})()}var W3=32,TQ,iu=2000,lu=16,au;var U3=C(()=>{w();w();w();w();w();w();w();w();w();ZJ();w();W1();h1();h1();Y3();xf();G3();X3();f3();xG();B3();TQ=[{view:"active"},{view:"archived"}];au=hf});var O3={};q1(O3,{startTasksPane:()=>su,legendRowCap:()=>M3,legendCap:()=>F3});import{existsSync as D3}from"fs";import{stat as _u}from"fs/promises";import{TextAttributes as mf}from"@opentui/core";function L3(J){let z=J instanceof Error?J.message:String(J);if(/not a git repository/i.test(z))return F("tasks.toast.worktreeErrorNotGit");return F("tasks.toast.worktreeErrorGeneric",{message:z})}function ru(J){let{theme:z}=w0(),Y=n1(),Z=oG(),G=Cf(),[X,Q]=p(J.tasks().some((h)=>h.id===J.initialTaskId)?J.initialTaskId:J.tasks()[0]?.id??null),H=0;function f(h){G.notify({kind:"error",taskId:X()??"",tabId:"",title:h})}function j(h){G.notify({kind:"done",taskId:X()??"",tabId:"",title:h})}let[V,B]=p(!1),[K,L]=p(Z.get("activeSortMode")==="recent"?"recent":"default"),A=Z.get("tasksPane.projectFilter"),[O,R]=p(typeof A==="string"&&A.length>0?A:null),u=(h)=>{R(h),Z.set("tasksPane.projectFilter",h)},[P,S]=p(null),[g,M]=p(!1);{let h=process.env.TMUX_PANE;if(h){let L0=()=>{a0(["show-options","-wqv","-t",h,SY]).then(({code:D0,stdout:P0})=>{M(D0===0&&P0.trim().length>0)})};L0();let Z0=setInterval(L0,1000);T1(()=>clearInterval(Z0))}}let T=az();_0(()=>{if(J.initialTaskId)return;let h=J.orch?.activeTaskSignal()();if(!h)return;Q(h)}),_0(BJ(()=>J.orch?.uiPrefsSignal()(),(h)=>{if(h&&h.sortMode!==t1(K))L(h.sortMode);if(h&&h.projectFilter!==t1(O))R(h.projectFilter)})),_0(()=>{let h=J.orch?.updateSignal()();if(h)S(h)});let d={orch:J.orch,tasks:()=>J.tasks(),confirm:async(h)=>await uz.show(Y,h.title,h.body,h.cancelLabel,h.confirmLabel)===!0,promptText:(h,L0)=>rz.show(Y,h,L0),logger:console,logPrefix:"[kobe tasks]",notifyError:f,notifyInfo:j,reload:()=>J.reload(),switchBeforeKill:!0,updateActiveTask:!0,onTaskDeleted:(h,L0)=>{if(X()!==h)return;let Z0=J.tasks();Q(L0?.id??(Z0.find((D0)=>!D0.archived)??Z0[0])?.id??null)},promptNewTask:(h,L0,Z0)=>Ff.show(Y,h,L0,Z0),cursorRepo:()=>{let h=J.tasks();return(h.find((L0)=>L0.id===X())??h[0])?.repo},lastVendor:()=>PJ(S1("lastSelectedVendor"),hJ()),rememberVendor:(h)=>e1("lastSelectedVendor",h),openCreateSurface:async(h)=>{if(TZ(Z.get(WY,yZ))!=="chattab")return!1;let Z0=await wJ();if(!Z0)return!1;return await $X(Z0,h),!0},selectTask:(h)=>Q(h),enterTask:(h)=>F0(h)};async function i(){await _M(d)}async function J0(){if(TZ(Z.get(WY,yZ))==="chattab"){let Z0=await wJ();if(Z0){await iX(Z0);return}}if(!(await nZ.show(Y,Z,J.orch??void 0)).visualPrefsChanged)return;if(!Z.flush())return;try{let Z0=await wJ();if(Z0)await RG(Z0)}catch(Z0){console.error("[kobe tasks] failed to refresh workspace panes:",Z0)}}async function E(){let h=await wJ();if(h){await lX(h);return}tG.show(Y)}async function z0(){if(!P()?.hasUpdate){j(F("tasks.toast.alreadyLatest",{version:J1}));return}let L0=await wJ();if(!L0)return;await aX(L0)}async function q0(h){await nM(d,h)}async function o(h){await iM(d,h)}async function B0(h){await lM(d,h)}async function g0(h){await $M(d,h)}async function m(h){await aM(d,h)}async function r(h){let Z0=J.tasks().find((P0)=>P0.id===h)?.worktreePath;if(!Z0||!D3(Z0)){if(!J.orch){console.error("[kobe tasks] no daemon; cannot materialise worktree"),f(F("tasks.toast.noDaemonWorktree"));return}try{Z0=await J.orch.ensureWorktree(h)}catch(P0){console.error("[kobe tasks] task.ensureWorktree failed:",P0),f(L3(P0));return}await J.reload()}if(!Z0||!D3(Z0))return;let D0=rM();if(!D0){console.error("[kobe tasks] no editor/opener found; set KOBE_OPEN_EDITOR"),f(F("tasks.toast.noEditor"));return}if(!oM(Z0,D0))console.error(`[kobe tasks] failed to open worktree with ${D0.label}`),f(F("tasks.toast.openWorktreeFailed",{label:D0.label}))}async function c(){if(!process.env.TMUX_PANE)return;let h=await wJ();if(!h)return;let L0=await BG(h);if(!L0)return;await d0(["select-pane","-t",L0])}async function N(h,L0){let Z0=J.tasks().find((D0)=>D0.id===h);if(!Z0||Z0.kind==="main"||!J.orch)return;try{await J.orch.moveTask(h,L0)}catch(D0){console.error("[kobe tasks] task.move failed:",D0),f(F("tasks.toast.moveTaskFailed",{message:D0 instanceof Error?D0.message:String(D0)}));return}Q(h),await J.reload()}let[t,x]=p(Z.get("tasksPane.keysCollapsed",!1)===!0),n=(h)=>{x(h),Z.set("tasksPane.keysCollapsed",h)};_0(BJ(()=>J.orch?.uiPrefsSignal()(),(h)=>{if(h&&h.keysCollapsed!==t1(t))x(h.keysCollapsed)}));let[Q0,H0]=p(!1);U1(()=>({enabled:Y.stack.length===0&&!Q0(),bindings:rY({"help.open":()=>void E(),"task.new":()=>void i(),"settings.open.sidebar":()=>void J0(),"tasks.update":()=>void z0(),"tasks.openWorktree":()=>{let h=X();if(h)r(h)},"tasks.renameBranch":()=>{let h=X();if(h)g0(h)},"tasks.cycleEngine":()=>{let h=X();if(h)m(h)},"tasks.toggleKeys":()=>n(!t()),"tasks.focusEngine":()=>void c().catch((h)=>console.error("[kobe tasks] focus engine pane failed:",h))})}));async function F0(h){let L0=J.tasks().find((D0)=>D0.id===h);if(!L0)return;let Z0=++H;try{await t8(J.orch,L0,L0.repo,L0.vendor,{includeInitPrompt:!0,heal:!0,captureFrom:!0,reload:()=>J.reload(),isCurrent:()=>H===Z0})}catch(D0){if(D0 instanceof sY)if(D0.phase==="no-daemon")f(F("tasks.toast.noDaemonOpen"));else if(D0.phase==="worktree")f(L3(D0.cause??D0));else f(F("tasks.toast.sessionStartFailed"));else console.error("[kobe tasks] switchTo failed:",D0)}}let M0=U0(()=>{let h=P();if(h?.hasUpdate)return{label:`v${h.latest} \u2191`,emphasize:!0};return{label:`v${J1}`,emphasize:!1}}),o0=()=>J.orch?.daemonStaleSignal()()??!1,S0=()=>J.orch?.daemonVersionSignal()()??null,p0=U0(()=>J.tasks().find((h)=>h.id===X())?.kind==="main");return(()=>{var h=W("box"),L0=W("box");return D(h,L0),q(h,"flexDirection","column"),q(h,"flexGrow",1),U(h,b(mM,{stale:o0,daemonVersion:S0,clientVersion:J1,width:()=>T().width}),L0),q(L0,"flexGrow",1),q(L0,"flexShrink",1),U(L0,b(K3,{get tasks(){return J.tasks},selectedId:X,get onSelect(){return J.initialTaskId?()=>{}:Q},get pinnedSelection(){return!!J.initialTaskId},onActivate:(Z0)=>void F0(Z0),activateOnClick:!0,headerStatus:M0,onHeaderStatusClick:()=>void z0(),onAddTask:()=>void i(),zenActive:g,onZenClick:()=>{(async()=>{let Z0=await wJ();if(Z0)await CZ(Z0,"zen-toggle")})()},width:()=>T().width,get engineState(){return N0(()=>!!J.orch)()?J.orch.engineStateSignal():void 0},get taskJobs(){return N0(()=>!!J.orch)()?J.orch.taskJobsSignal():void 0},get worktreeChanges(){return J.orch?()=>{let Z0=J.orch;if(!Z0||Z0.connectionStateSignal()()!=="online")return null;return Z0.worktreeChangesSignal()()}:void 0},onRenameRequest:(Z0)=>void B0(Z0),onDeleteRequest:(Z0)=>void o(Z0),onArchiveRequest:(Z0)=>void q0(Z0),onLocalMergeRequest:(Z0)=>{let D0=J.tasks().find((P0)=>P0.id===Z0);if(!D0||D0.kind==="main")return;Q(Z0),B((P0)=>!P0)},moveMode:V,onMoveRequest:(Z0,D0)=>void N(Z0,D0),onMoveModeExit:()=>B(!1),sortMode:K,projectFilter:O,onProjectFilterChange:u,onSortModeToggle:()=>{let Z0=K()==="default"?"recent":"default";L(Z0),Z.set("activeSortMode",Z0)},focused:()=>Y.stack.length===0,onSearchActiveChange:H0})),U(h,b(ou,{moveMode:V,selectedIsMain:p0,collapsed:t,onToggleCollapsed:()=>n(!t())}),null),y((Z0)=>q(h,"backgroundColor",z.background,Z0)),h})()}function F3(J){let z=a8(J);if(!z)return null;let Y=z.hint?.keys??z.keys[0];return Y&&Y.length>0?Y:null}function M3(J){let z=J.map(F3).filter((Y)=>Y!==null);return z.length>0?z.join("/"):null}function ou(J){let{theme:z}=w0(),[Y,Z]=p("Prefix");QJ(()=>{a0(["show-options","-g","prefix"]).then(({code:K,stdout:L})=>{if(K!==0)return;let A=Ef(L);if(A)Z(A)})});let G=()=>{$8();let K=_q(),L=K.binds,A=[],O=K.focus.filter((u)=>u!==null).map((u)=>u.chord);if(O.length===4&&O.every((u,P)=>u===uY[P]))A.push({k:"ctrl+hjkl",label:F("tasks.hints.movePanes")});else if(O.length>0)A.push({k:O[0],label:F("tasks.hints.movePanes")});let R=(u,P)=>{let S=P.map((g)=>L[g]?.chord).filter((g)=>!!g);if(S.length>0)A.push({k:`prefix ${S.join("/")}`,label:u})};if(L["tmux.detach"])A.push({k:L["tmux.detach"].chord,label:F("tasks.hints.detach")});return R(F("tasks.hints.splits"),["tmux.layout.workspaceSplit","tmux.layout.workspaceClose","tmux.layout.workspaceReset"]),R(F("tasks.hints.panes"),["tmux.layout.tasksToggle","tmux.layout.opsToggle","tmux.layout.terminalToggle"]),A},X=()=>{$8();let K=[{ids:["help.open"],label:F("tasks.hints.fullHelp")},{ids:["task.new"],label:F("tasks.hints.newTask")},{ids:["settings.open.sidebar"],label:F("tasks.hints.settings")},{ids:["sidebar.select"],label:F("tasks.hints.open")},{ids:["tasks.focusEngine"],label:F("tasks.hints.focusEngine")},{ids:["tasks.openWorktree"],label:F("tasks.hints.openWorktree")},{ids:["sidebar.delete"],label:F("tasks.hints.delete")},{ids:["sidebar.view"],label:F("tasks.hints.views")},{ids:["sidebar.projectFilter"],label:F("tasks.hints.project")}],L=[];for(let A of K){let O=M3(A.ids);if(O===null)continue;L.push({k:O,label:A.label,dimWhenMain:A.dimWhenMain})}return L.push(...G()),L},Q=()=>[{k:"j/k",label:F("tasks.hints.reorder")},{k:"enter/esc",label:F("tasks.hints.done")}],H=()=>J.moveMode?.()?Q():X(),f=18,j=()=>Math.min(f,Math.max(...H().map((K)=>K.label.length))),V=(K)=>zX(K,j()),B=()=>(J.collapsed?.()??!1)&&!(J.moveMode?.()??!1);return(()=>{var K=W("box"),L=W("text");return D(K,L),q(K,"flexShrink",0),q(K,"flexDirection","column"),q(K,"paddingLeft",1),q(K,"paddingRight",1),q(K,"paddingTop",1),q(K,"paddingBottom",1),q(K,"gap",0),q(L,"wrapMode","none"),q(L,"onMouseUp",()=>J.onToggleCollapsed?.()),U(L,(()=>{var A=N0(()=>!!B());return()=>A()?F("tasks.hints.headerFolded"):F("tasks.hints.headerUnfolded")})()),U(K,b(Y0,{get when(){return!B()},get children(){return b(Z1,{get each(){return H()},children:(A)=>{let O=()=>A.dimWhenMain===!0&&(J.selectedIsMain?.()??!1);return(()=>{var R=W("box"),u=W("box"),P=W("text"),S=T0("["),g=T0("]"),M=W("box"),T=W("text");return D(R,u),D(R,M),q(R,"flexDirection","row"),q(R,"gap",1),q(R,"justifyContent","space-between"),D(u,P),q(u,"width",10),q(u,"flexShrink",0),D(P,S),D(P,g),q(P,"wrapMode","none"),U(P,()=>sG(A.k,Y()),g),D(M,T),q(M,"flexShrink",0),q(T,"wrapMode","none"),U(T,()=>V(A.label)),y((d)=>{var i=O()?z.textMuted:z.accent,J0=O()?mf.DIM:mf.BOLD,E=j(),z0=z.textMuted,q0=O()?mf.DIM:void 0;return i!==d.e&&(d.e=q(P,"fg",i,d.e)),J0!==d.t&&(d.t=q(P,"attributes",J0,d.t)),E!==d.a&&(d.a=q(M,"width",E,d.a)),z0!==d.o&&(d.o=q(T,"fg",z0,d.o)),q0!==d.i&&(d.i=q(T,"attributes",q0,d.i)),d},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),R})()}})}}),null),y((A)=>{var O=z.textMuted,R=mf.DIM;return O!==A.e&&(A.e=q(L,"fg",O,A.e)),R!==A.t&&(A.t=q(L,"attributes",R,A.t)),A},{e:void 0,t:void 0}),K})()}async function su(J={}){await KJ({logContext:"tasks",providers:{notifications:!0},setup:()=>tu(J)})}async function tu(J){let z=new PG({homeDir:rJ()});await z.load();let[Y,Z]=p(z.list()),G=null;try{let j=await Qz();if(j){let V=new AJ(j);await V.init(),G=V}else ZY("tasks-boot","no daemon running \u2014 polling tasks.json (a gui owns daemon lifecycle)")}catch(j){JJ("tasks-boot",j),ZY("tasks-boot","daemon subscribe failed \u2014 polling tasks.json")}let X=()=>G&&G.connectionStateSignal()()==="online"?G.tasksSignal()():Y(),Q=async()=>{await z.load(),Z(z.list())},H="",f=setInterval(()=>{if(G&&G.connectionStateSignal()()==="online")return;(async()=>{let j="missing";try{let V=await _u(z.filePath);j=`${V.mtimeMs}:${V.size}`}catch{}if(j===H)return;H=j,await Q()})().catch(()=>{})},pu);return{root:()=>[b(ru,{tasks:X,get initialTaskId(){return J.initialTaskId},orch:G,reload:Q}),b(hM,{})],onDestroy:()=>{if(f)clearInterval(f);G?.dispose()}}}var pu=1500;var A3=C(()=>{w();w();w();w();w();w();w();w();c1();Lz();ZJ();w();GZ();CJ();W1();_Y();p1();qQ();C1();pq();_1();NJ();ZW();pG();GW();BW();vM();cM();rG();SQ();kf();h1();YW();MY();kJ();pM();If();sM();U3();PY();zJ();$J();wf()});var R3={};q1(R3,{startSettingsHost:()=>JE});function eu(J){let z=oG(),Y=n1(),{theme:Z}=w0(),G=!1,X=!1;async function Q(){if(X)return;X=!0;try{if(z.flush()&&G){let f=await wJ();if(f)await RG(f)}}catch(H){console.error("[kobe settings] failed to refresh workspace panes:",H)}finally{process.exit(0)}}return U1(()=>({enabled:Y.stack.length===0,bindings:[{key:"escape",cmd:Q},{key:"q",cmd:Q},{key:"ctrl+c",cmd:Q}]})),(()=>{var H=W("scrollbox");return q(H,"flexGrow",1),q(H,"paddingTop",1),q(H,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),U(H,b(nZ,{kv:z,get orchestrator(){return J.orchestrator??void 0},standalone:!0,onVisualPrefsChange:()=>{G=!0},onClose:Q})),y((f)=>q(H,"backgroundColor",Z.background,f)),H})()}async function JE(){await KJ({setup:async()=>{let J=null;try{let z=await Qz();if(z){let Y=new AJ(z);await Y.init(),J=Y}else console.error("[kobe settings] no daemon running; Restart backend disabled")}catch(z){console.error("[kobe settings] daemon unavailable; Restart backend disabled:",z)}return{root:()=>b(eu,{orchestrator:J}),onDestroy:()=>{J?.dispose()}}}})}var g3=C(()=>{w();w();w();w();w();w();CJ();_Y();BW();SQ();h1();MY();kJ();zJ();$J()});var N3={};q1(N3,{startHelpHost:()=>YE});function zE(){let J=n1(),{theme:z}=w0();function Y(){process.exit(0)}return U1(()=>({enabled:J.stack.length===0,bindings:[{key:"escape",cmd:Y},{key:"q",cmd:Y},{key:"f1",cmd:Y},{key:"ctrl+c",cmd:Y}]})),(()=>{var Z=W("box");return q(Z,"flexGrow",1),q(Z,"paddingTop",1),U(Z,b(tG,{onClose:Y})),y((G)=>q(Z,"backgroundColor",z.background,G)),Z})()}async function YE(){await KJ({providers:{kv:!1,focus:!1},setup:()=>({root:()=>b(zE,{})})})}var C3=C(()=>{w();w();w();w();w();ZW();h1();MY();kJ();$J()});var k3={};q1(k3,{startUpdateHost:()=>fE});import{spawn as ZE,spawnSync as GE}from"child_process";import{TextAttributes as ZX}from"@opentui/core";function XE(J){if(!J)return!1;let z=process.platform,[Y,Z]=z==="darwin"?["open",[J]]:z==="win32"?["cmd",["/c","start","",J]]:["xdg-open",[J]];try{return ZE(Y,Z,{stdio:"ignore",detached:!0}).unref(),!0}catch{return!1}}function QE(J){return J.replace(/\r\n/g,`
265
265
  `).split(`
266
- `).map((z)=>z.trim()).filter(Boolean)}function wu(){if(!process.stdin.isTTY)return Promise.resolve();return new Promise((J)=>{let z=process.stdin,Y=()=>{z.off("data",Y),z.setRawMode?.(!1),z.pause(),J()};z.setRawMode?.(!0),z.resume(),z.once("data",Y)})}function Pu(){let{theme:J}=w0(),z=WJ(),[Y,Z]=p(null),[G,X]=p([]),[q,H]=p(!0),[f,j]=p("update"),[V,B]=p(null),K=U0(()=>Y()?.latest??r0),L=U0(()=>G()[0]?.url??of(K())),A=U0(()=>[{id:"update",key:"U",label:F("update.actions.updateNow"),detail:pz},{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")}]);GJ(()=>{O()});async function O(){let S=await XX({force:!0});Z(S);let g=S?.latest??r0,M=await rf({current:r0,latest:g});X(M),H(!1)}function R(S){let g=A().map(($)=>$.id),T=(g.indexOf(f())+S+g.length)%g.length;j(g[T]??"update")}function x(S=f()){if(S==="close")process.exit(0);if(S==="release"){B(uu(L())?F("update.statusReleaseOpened"):F("update.statusReleaseError"));return}w()}async function w(){B(F("update.statusRunningUpdater")),await new Promise((M)=>setTimeout(M,30)),z?.destroy(),process.stdout.write(`
267
- kobe ${r0} -> latest
268
- `),process.stdout.write(`running: ${pz}
266
+ `).map((z)=>z.trim()).filter(Boolean)}function qE(){if(!process.stdin.isTTY)return Promise.resolve();return new Promise((J)=>{let z=process.stdin,Y=()=>{z.off("data",Y),z.setRawMode?.(!1),z.pause(),J()};z.setRawMode?.(!0),z.resume(),z.once("data",Y)})}function HE(){let{theme:J}=w0(),z=WJ(),[Y,Z]=p(null),[G,X]=p([]),[Q,H]=p(!0),[f,j]=p("update"),[V,B]=p(null),K=U0(()=>Y()?.latest??J1),L=U0(()=>G()[0]?.url??tf(K())),A=U0(()=>[{id:"update",key:"U",label:F("update.actions.updateNow"),detail:oz},{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")}]);QJ(()=>{O()});async function O(){let S=await XX({force:!0});Z(S);let g=S?.latest??J1,M=await sf({current:J1,latest:g});X(M),H(!1)}function R(S){let g=A().map((d)=>d.id),T=(g.indexOf(f())+S+g.length)%g.length;j(g[T]??"update")}function u(S=f()){if(S==="close")process.exit(0);if(S==="release"){B(XE(L())?F("update.statusReleaseOpened"):F("update.statusReleaseError"));return}P()}async function P(){B(F("update.statusRunningUpdater")),await new Promise((M)=>setTimeout(M,30)),z?.destroy(),process.stdout.write(`
267
+ kobe ${J1} -> latest
268
+ `),process.stdout.write(`running: ${oz}
269
269
 
270
- `);let S=xu("sh",["-c",pz],{stdio:"inherit"}),g=S.status??(S.error?1:0);if(S.error)process.stderr.write(`
270
+ `);let S=GE("sh",["-c",oz],{stdio:"inherit"}),g=S.status??(S.error?1:0);if(S.error)process.stderr.write(`
271
271
  kobe update: failed to start updater: ${S.error.message}
272
272
  `);process.stdout.write(g===0?`
273
273
  ${F("update.updateComplete")}
274
274
  `:`
275
275
  ${F("update.updateFailed",{code:String(g)})}
276
- `),process.stdout.write(F("update.pressAnyKey")),await wu(),process.exit(g)}return K1(()=>({bindings:[{key:"up",cmd:()=>R(-1)},{key:"down",cmd:()=>R(1)},{key:"k",cmd:()=>R(-1)},{key:"j",cmd:()=>R(1)},{key:"return",cmd:()=>x()},{key:"u",cmd:()=>x("update")},{key:"r",cmd:()=>x("release")},{key:"q",cmd:()=>x("close")},{key:"escape",cmd:()=>x("close")},{key:"ctrl+c",cmd:()=>x("close")}]})),(()=>{var S=W("box"),g=W("box"),M=W("text"),T=W("text"),$=W("box"),d=W("text"),e=W("text"),u=x0("v"),z0=W("text"),Q0=W("text"),o=x0("v"),K0=W("box"),N0=W("box"),h=W("text"),s=W("scrollbox"),v=W("box");return D(S,g),D(S,$),D(S,K0),D(S,N0),D(S,s),Q(S,"flexDirection","column"),Q(S,"flexGrow",1),Q(S,"paddingTop",1),Q(S,"paddingLeft",2),Q(S,"paddingRight",2),D(g,M),D(g,T),Q(g,"flexDirection","row"),Q(g,"justifyContent","space-between"),Q(g,"flexShrink",0),Q(M,"wrapMode","none"),U(M,()=>F("update.pageTitle")),D(T,x0("q / esc")),Q(T,"wrapMode","none"),Q(T,"onMouseUp",()=>x("close")),D($,d),D($,e),D($,z0),D($,Q0),Q($,"flexDirection","row"),Q($,"gap",2),Q($,"flexShrink",0),Q($,"paddingTop",1),Q(d,"wrapMode","none"),U(d,()=>F("update.current")),D(e,u),Q(e,"wrapMode","none"),U(e,r0,null),Q(z0,"wrapMode","none"),U(z0,()=>F("update.latest")),D(Q0,o),Q(Q0,"wrapMode","none"),U(Q0,K,null),Q(K0,"flexDirection","column"),Q(K0,"flexShrink",0),Q(K0,"paddingTop",1),Q(K0,"gap",0),U(K0,b(z1,{get each(){return A()},children:(k)=>(()=>{var t=W("box"),I=W("box"),n=W("text"),q0=x0("["),H0=x0("]"),j0=W("box"),y0=W("text"),p0=W("text");return D(t,I),D(t,j0),D(t,p0),Q(t,"flexDirection","row"),Q(t,"gap",1),Q(t,"paddingLeft",1),Q(t,"paddingRight",1),Q(t,"onMouseUp",()=>x(k.id)),D(I,n),Q(I,"width",4),Q(I,"flexShrink",0),D(n,q0),D(n,H0),Q(n,"wrapMode","none"),U(n,()=>k.key,H0),D(j0,y0),Q(j0,"width",14),Q(j0,"flexShrink",0),Q(y0,"wrapMode","none"),U(y0,()=>k.label),Q(p0,"wrapMode","word"),U(p0,()=>k.detail),y((E0)=>{var R0=f()===k.id?J.primary:void 0,m=f()===k.id?J.selectedListItemText:J.accent,L0=ZX.BOLD,G0=f()===k.id?J.selectedListItemText:J.text,F0=f()===k.id?J.selectedListItemText:J.textMuted;return R0!==E0.e&&(E0.e=Q(t,"backgroundColor",R0,E0.e)),m!==E0.t&&(E0.t=Q(n,"fg",m,E0.t)),L0!==E0.a&&(E0.a=Q(n,"attributes",L0,E0.a)),G0!==E0.o&&(E0.o=Q(y0,"fg",G0,E0.o)),F0!==E0.i&&(E0.i=Q(p0,"fg",F0,E0.i)),E0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),t})()})),U(S,b(Y0,{get when(){return V()},get children(){var k=W("text");return Q(k,"wrapMode","word"),U(k,V),y((t)=>Q(k,"fg",J.info,t)),k}}),N0),D(N0,h),Q(N0,"flexShrink",0),Q(N0,"paddingTop",1),Q(h,"wrapMode","none"),U(h,()=>F("update.changesSectionHeader",{from:r0,to:K()})),D(s,v),Q(s,"flexGrow",1),Q(s,"flexShrink",1),Q(s,"stickyScroll",!1),Q(v,"flexDirection","column"),Q(v,"paddingRight",1),Q(v,"paddingBottom",1),Q(v,"gap",0),U(v,b(Y0,{get when(){return q()},get children(){var k=W("text");return U(k,()=>F("update.loadingNotes")),y((t)=>Q(k,"fg",J.textMuted,t)),k}}),null),U(v,b(Y0,{get when(){return S0(()=>!q())()&&G().length===0},get children(){var k=W("text");return Q(k,"wrapMode","word"),U(k,()=>F("update.notesUnavailable")),y((t)=>Q(k,"fg",J.textMuted,t)),k}}),null),U(v,b(z1,{get each(){return G()},children:(k)=>(()=>{var t=W("box"),I=W("text"),n=x0("v");return D(t,I),Q(t,"flexDirection","column"),Q(t,"paddingBottom",1),Q(t,"gap",0),D(I,n),Q(I,"wrapMode","none"),U(I,()=>k.version,null),U(t,b(z1,{get each(){return Eu(k.body)},children:(q0)=>(()=>{var H0=W("text");return Q(H0,"wrapMode","word"),U(H0,q0),y((j0)=>Q(H0,"fg",J.textMuted,j0)),H0})()}),null),y((q0)=>{var H0=J.text,j0=ZX.BOLD;return H0!==q0.e&&(q0.e=Q(I,"fg",H0,q0.e)),j0!==q0.t&&(q0.t=Q(I,"attributes",j0,q0.t)),q0},{e:void 0,t:void 0}),t})()}),null),y((k)=>{var{background:t,text:I}=J,n=ZX.BOLD,q0=J.textMuted,H0=J.textMuted,j0=J.text,y0=ZX.BOLD,p0=J.textMuted,E0=Y()?.hasUpdate?J.warning:J.success,R0=ZX.BOLD,m=J.textMuted,L0=ZX.DIM,G0={trackOptions:{backgroundColor:J.background,foregroundColor:J.borderActive}};return t!==k.e&&(k.e=Q(S,"backgroundColor",t,k.e)),I!==k.t&&(k.t=Q(M,"fg",I,k.t)),n!==k.a&&(k.a=Q(M,"attributes",n,k.a)),q0!==k.o&&(k.o=Q(T,"fg",q0,k.o)),H0!==k.i&&(k.i=Q(d,"fg",H0,k.i)),j0!==k.n&&(k.n=Q(e,"fg",j0,k.n)),y0!==k.s&&(k.s=Q(e,"attributes",y0,k.s)),p0!==k.h&&(k.h=Q(z0,"fg",p0,k.h)),E0!==k.r&&(k.r=Q(Q0,"fg",E0,k.r)),R0!==k.d&&(k.d=Q(Q0,"attributes",R0,k.d)),m!==k.l&&(k.l=Q(h,"fg",m,k.l)),L0!==k.u&&(k.u=Q(h,"attributes",L0,k.u)),G0!==k.c&&(k.c=Q(s,"verticalScrollbarOptions",G0,k.c)),k},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0}),S})()}async function hu(){await KJ({setup:()=>({root:()=>b(Pu,{})})})}var Q3=C(()=>{E();E();E();E();E();E();E();E();E();W1();AJ();E1();ZJ();DY();gJ()});var f3={};q1(f3,{startHistoryHost:()=>_u});import{TextAttributes as GX}from"@opentui/core";function vu(J){let z=J.lastIndexOf("/");return z>=0?J.slice(z+1):J}function mu(J){let z=Date.parse(J);if(Number.isNaN(z))return"";let Y=Math.max(0,Math.floor((Date.now()-z)/1000));if(Y<60)return`${Y}s`;let Z=Math.floor(Y/60);if(Z<60)return`${Z}m`;let G=Math.floor(Z/60);if(G<24)return`${G}h`;return`${Math.floor(G/24)}d`}function cu(J){if(J&&typeof J==="object"&&!Array.isArray(J)){let z=J,Y=(G)=>typeof z[G]==="string"?z[G]:null,Z=Y("command")??Y("file_path")??Y("pattern")??Y("url")??Y("description")??Y("prompt")??Y("query");if(Z)return Z.length>mf?`${Z.slice(0,mf-1)}\u2026`:Z}try{let z=JSON.stringify(J);if(!z||z==="{}"||z==="null")return"";return z.length>mf?`${z.slice(0,mf-1)}\u2026`:z}catch{return""}}function du(J){if(typeof J==="string")return J;try{return JSON.stringify(J,null,2)}catch{return String(J)}}function nu(J){let z=new Map;for(let Y of J)for(let Z of Y.blocks)if(Z.type==="tool_result")z.set(Z.callId,Z);return z}function H3(J){let{theme:z}=w0(),Y=()=>J.text.replace(/\s+$/,"").split(`
277
- `),Z=(G)=>{if(J.error)return z.error;if(G.startsWith("+")&&!G.startsWith("+++"))return z.success;if(G.startsWith("-")&&!G.startsWith("---"))return z.error;return z.textMuted};return(()=>{var G=W("box");return Q(G,"flexDirection","column"),Q(G,"paddingLeft",2),Q(G,"marginLeft",2),U(G,b(z1,{get each(){return Y()},children:(X)=>(()=>{var q=W("text");return Q(q,"wrapMode","word"),U(q,X||" "),y((H)=>Q(q,"fg",Z(X),H)),q})()})),y((X)=>Q(G,"backgroundColor",z.backgroundElement,X)),G})()}function iu(J){let{theme:z}=w0(),Y=J.block;switch(Y.type){case"text":return(()=>{var Z=W("text");return Q(Z,"wrapMode","word"),U(Z,()=>Y.text),y((G)=>Q(Z,"fg",z.text,G)),Z})();case"thinking":return(()=>{var Z=W("box"),G=W("text");return D(Z,G),Q(Z,"flexDirection","column"),Q(G,"wrapMode","none"),U(G,()=>`\u2731 ${F("history.thinking")}${J.expanded?"":"\u2026"}`),U(Z,b(Y0,{get when(){return S0(()=>!!J.expanded)()&&Y.text.trim()},get children(){return b(H3,{get text(){return Y.text}})}}),null),y((X)=>{var q=z.textMuted,H=GX.ITALIC;return q!==X.e&&(X.e=Q(G,"fg",q,X.e)),H!==X.t&&(X.t=Q(G,"attributes",H,X.t)),X},{e:void 0,t:void 0}),Z})();case"tool_call":{let Z=!J.result?.isError,G=J.result?du(J.result.output):"",X=cu(Y.input);return(()=>{var q=W("box"),H=W("box"),f=W("text"),j=W("text");return D(q,H),Q(q,"flexDirection","column"),D(H,f),D(H,j),Q(H,"flexDirection","row"),Q(H,"gap",1),D(f,x0("\u23FA")),Q(f,"wrapMode","none"),Q(j,"wrapMode","none"),U(j,()=>Y.name),U(H,b(Y0,{when:X,get children(){var V=W("text");return Q(V,"wrapMode","none"),U(V,X),y((B)=>Q(V,"fg",z.textMuted,B)),V}}),null),U(q,b(Y0,{get when(){return S0(()=>!!J.expanded)()&&G.trim()},get children(){return b(H3,{text:G,get error(){return J.result?.isError}})}}),null),y((V)=>{var B=Z?z.success:z.error,K=z.text,L=GX.BOLD;return B!==V.e&&(V.e=Q(f,"fg",B,V.e)),K!==V.t&&(V.t=Q(j,"fg",K,V.t)),L!==V.a&&(V.a=Q(j,"attributes",L,V.a)),V},{e:void 0,t:void 0,a:void 0}),q})()}case"tool_result":return null}}function lu(J){return J==="assistant"?F("history.role.assistant"):J==="system"?F("history.role.system"):F("history.role.user")}function $u(J){let{theme:z}=w0(),Y=()=>J.msg.role==="user",Z=()=>mu(J.msg.timestamp),G=U0(()=>Y()?J.msg.blocks.filter((q)=>q.type==="text"&&q.text.trim().length>0).map((q)=>q.text).join(`
278
- `):""),X=()=>Y()?J.msg.blocks.filter((q)=>q.type!=="text"):J.msg.blocks;return(()=>{var q=W("box");return Q(q,"flexDirection","column"),Q(q,"paddingLeft",1),Q(q,"paddingRight",1),Q(q,"paddingBottom",1),Q(q,"gap",0),U(q,b(Y0,{get when(){return S0(()=>!!Y())()&&G()},get children(){var H=W("box"),f=W("text"),j=W("text");return D(H,f),D(H,j),Q(H,"flexDirection","row"),Q(H,"gap",1),Q(H,"paddingLeft",1),Q(H,"paddingRight",1),D(f,x0("\u276F")),Q(f,"wrapMode","none"),Q(j,"wrapMode","word"),Q(j,"flexGrow",1),U(j,G),U(H,b(Y0,{get when(){return Z()},get children(){var V=W("text");return Q(V,"wrapMode","none"),U(V,Z),y((B)=>Q(V,"fg",z.textMuted,B)),V}}),null),y((V)=>{var{backgroundElement:B,primary:K}=z,L=GX.BOLD,A=z.text;return B!==V.e&&(V.e=Q(H,"backgroundColor",B,V.e)),K!==V.t&&(V.t=Q(f,"fg",K,V.t)),L!==V.a&&(V.a=Q(f,"attributes",L,V.a)),A!==V.o&&(V.o=Q(j,"fg",A,V.o)),V},{e:void 0,t:void 0,a:void 0,o:void 0}),H}}),null),U(q,b(Y0,{get when(){return!Y()},get children(){var H=W("text");return Q(H,"wrapMode","none"),U(H,()=>lu(J.msg.role)),y((f)=>{var j=z.textMuted,V=GX.BOLD;return j!==f.e&&(f.e=Q(H,"fg",j,f.e)),V!==f.t&&(f.t=Q(H,"attributes",V,f.t)),f},{e:void 0,t:void 0}),H}}),null),U(q,b(z1,{get each(){return X()},children:(H)=>b(iu,{block:H,get result(){return S0(()=>H.type==="tool_call")()?J.results.get(H.callId):void 0},get expanded(){return J.expanded}})}),null),q})()}function au(J){let{theme:z}=w0(),[Y]=WZ(()=>J.worktree,async(w)=>{try{return await n1(J.vendor).history.listSessionIdsForWorktree(w)}catch{return[]}}),Z=()=>Y()??[],[G,X]=p(0);_0(BJ(Y,(w)=>{let S=(w??[]).length;X(S>0?S-1:0)}));let q=()=>Z()[G()],[H]=WZ(()=>q(),async(w)=>{if(!w)return[];try{return await n1(J.vendor).history.readHistory(w)}catch{return[]}}),f=()=>H()??[],j=U0(()=>nu(f())),V=U0(()=>f().reduce((w,S)=>w+(S.usage?.output_tokens??0),0)),[B,K]=p(!1),L,A=(w)=>{if(!L)return;L.scrollTo({x:0,y:Math.max(0,L.scrollTop+w)})};_0(BJ(q,()=>L?.scrollTo({x:0,y:0})));let O=(w)=>{let S=Z().length;if(S===0)return;X((g)=>Math.min(Math.max(g+w,0),S-1))};K1(()=>({bindings:[{key:"q",cmd:()=>process.exit(0)},{key:"escape",cmd:()=>process.exit(0)},{key:"ctrl+c",cmd:()=>process.exit(0)},{key:"j",cmd:()=>A(vf)},{key:"k",cmd:()=>A(-vf)},{key:"down",cmd:()=>A(vf)},{key:"up",cmd:()=>A(-vf)},{key:"[",cmd:()=>O(-1)},{key:"]",cmd:()=>O(1)},{key:"return",cmd:()=>K((w)=>!w)}]}));let R=()=>J.title?.trim()||vu(J.worktree),x=()=>{let w=Z().length;return w>0?`${F("history.sessionLabel")} ${G()+1}/${w}`:""};return(()=>{var w=W("box"),S=W("box"),g=W("text"),M=W("text"),T=W("box"),$=W("scrollbox"),d=W("box"),e=W("text");return D(w,S),D(w,$),D(w,d),Q(w,"flexDirection","column"),Q(w,"flexGrow",1),D(S,g),D(S,M),D(S,T),Q(S,"flexDirection","row"),Q(S,"gap",1),Q(S,"paddingLeft",1),Q(S,"paddingRight",1),Q(S,"flexShrink",0),Q(g,"wrapMode","none"),U(g,()=>F("history.archivedTag")),Q(M,"wrapMode","none"),U(M,R),U(S,b(Y0,{get when(){return x()},get children(){var u=W("text");return Q(u,"wrapMode","none"),U(u,()=>`\xB7 ${x()}`),y((z0)=>Q(u,"fg",z.textMuted,z0)),u}}),T),Q(T,"flexGrow",1),U(S,b(Y0,{get when(){return V()>0},get children(){var u=W("text");return Q(u,"wrapMode","none"),U(u,()=>`${V()} tok`),y((z0)=>Q(u,"fg",z.textMuted,z0)),u}}),null),Gz((u)=>{L=u},$),Q($,"flexGrow",1),Q($,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),U($,b(Y0,{get when(){return S0(()=>!Y.loading)()&&!H.loading},get fallback(){return(()=>{var u=W("box"),z0=W("text");return D(u,z0),Q(u,"paddingTop",1),Q(u,"paddingLeft",1),U(z0,()=>F("history.loading")),y((Q0)=>Q(z0,"fg",z.textMuted,Q0)),u})()},get children(){return b(Y0,{get when(){return f().length>0},get fallback(){return(()=>{var u=W("box"),z0=W("text");return D(u,z0),Q(u,"paddingTop",1),Q(u,"paddingLeft",1),U(z0,()=>F("history.empty")),y((Q0)=>Q(z0,"fg",z.textMuted,Q0)),u})()},get children(){return b(z1,{get each(){return f()},children:(u)=>b($u,{msg:u,get results(){return j()},get expanded(){return B()}})})}})}})),D(d,e),Q(d,"flexDirection","row"),Q(d,"paddingLeft",1),Q(d,"paddingRight",1),Q(d,"flexShrink",0),Q(e,"wrapMode","none"),U(e,(()=>{var u=S0(()=>!!B());return()=>u()?F("history.hintExpanded"):F("history.hint")})()),y((u)=>{var{background:z0,backgroundElement:Q0,warning:o}=z,K0=GX.BOLD,N0=z.accent,h=GX.BOLD,s=z.backgroundElement,v=z.textMuted;return z0!==u.e&&(u.e=Q(w,"backgroundColor",z0,u.e)),Q0!==u.t&&(u.t=Q(S,"backgroundColor",Q0,u.t)),o!==u.a&&(u.a=Q(g,"fg",o,u.a)),K0!==u.o&&(u.o=Q(g,"attributes",K0,u.o)),N0!==u.i&&(u.i=Q(M,"fg",N0,u.i)),h!==u.n&&(u.n=Q(M,"attributes",h,u.n)),s!==u.s&&(u.s=Q(d,"backgroundColor",s,u.s)),v!==u.h&&(u.h=Q(e,"fg",v,u.h)),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}),w})()}async function _u(J){await KJ({logContext:"history",providers:{kv:!1,focus:!1},setup:()=>({root:()=>b(au,J)})})}var vf=3,mf=120;var j3=C(()=>{E();E();E();E();E();E();E();E();E();ZY();W1();E1();ZJ();DY();gJ()});function pu(J){return J.trim().split(/\s+/)[0]??""}function W3(J,z,Y,Z){let G=Z1(Y);if(J==="vim")return{bin:"vim",command:`vim ${G}`};if(J==="nvim")return{bin:"nvim",command:`nvim ${G}`};if(J==="nano")return{bin:"nano",command:`nano ${G}`};if(J==="emacs")return{bin:"emacs",command:`emacs ${G}`};let X=(z.trim()||(Z??"").trim()).trim();if(!X)return null;let q=pu(X);if(!q)return null;let H=X.includes(B3)?X.split(B3).join(G):`${X} ${G}`;return{bin:q,command:H}}function ru(J,z,Y){let Z=Z1(z);return["f=$(mktemp 2>/dev/null)",`if [ -n "$f" ] && git show ${Z1(`HEAD:./${Y}`)} > "$f" 2>/dev/null; then`,` ${J} -d "$f" ${Z} -c 'setlocal nomodifiable' -c 'wincmd l'; r=$?`,"else",` ${J} ${Z}; r=$?`,"fi",'rm -f "$f" 2>/dev/null; exit $r'].join(`
279
- `)}function ou(J,z){let Y=J.endsWith("/")?J:`${J}/`;return z.startsWith(Y)?z.slice(Y.length):null}async function su(J){let z=bG(N1(HY)),Y=N1(cY)??"",Z=(process.env.VISUAL??process.env.EDITOR??"").trim();if(z!=="auto")return W3(z,Y,J,Z);if(Z)return W3("custom","",J,Z);let G=Z1(J);for(let X of x5)if(await V3(X))return{bin:X,command:`${X} ${G}`};return null}async function V3(J){try{return await Bun.spawn(["sh","-c",`command -v ${Z1(J)} >/dev/null 2>&1`],{stdin:"ignore",stdout:"ignore",stderr:"ignore"}).exited===0}catch{return!1}}async function tu(J,z){try{return await Bun.spawn(["git","diff","--quiet","HEAD","--",z],{cwd:J,stdin:"ignore",stdout:"ignore",stderr:"ignore",env:dJ()}).exited===1}catch{return!1}}async function K3(J,z,Y){let Z=await su(Y);if(!Z)return!1;if(!await V3(Z.bin))return!1;let G=await eu(Z,z,Y);return await gz(J,{cwd:z,command:G,name:JE(Y)}),!0}async function eu(J,z,Y){let{bin:Z,command:G}=J;if(Z!=="nvim"&&Z!=="vim")return G;if(G!==`${Z} ${Z1(Y)}`)return G;let X=ou(z,Y);if(!X)return G;if(!await tu(z,X))return G;return ru(Z,Y,X)}function JE(J){let z=J.slice(J.lastIndexOf("/")+1).trim();return z.length>0?z:"edit"}var B3="{file}";var U3=C(()=>{dY();A1();uH();v1();Uz()});async function cf(J,z,Y){if(!z)throw Error("git(): cwd is required");let Z=await SG(z,J,{signal:Y}),G=Z.status??-1;if(G!==0){let X=(Z.stderr??"").trim(),q=(Z.stdout??"").trim();throw Error(`git ${J.join(" ")} (cwd=${z}) exited with code ${G}: ${X||q||"(no output)"}`)}return Z.stdout??""}async function LW(J,z){let Z=(await cf(["ls-files","--cached","--others","--exclude-standard","--full-name"],J,z)).split(`
280
- `).map((X)=>X.replace(/\r$/,"")),G=new Set;for(let X of Z)if(X.length>0)G.add(X);return Array.from(G).sort()}async function FW(J,z){let Y=await cf(["status","--porcelain","--untracked-files=all"],J,z),Z=M3(Y),G=new Map;try{let X=await cf(["diff","--no-color","--numstat","HEAD"],J,z);G=new Map(D3(X).map((q)=>[q.path,{added:q.added,deleted:q.deleted}]))}catch{try{let X=await cf(["diff","--no-color","--numstat","--cached"],J,z);G=new Map(D3(X).map((q)=>[q.path,{added:q.added,deleted:q.deleted}]))}catch{G=new Map}}return Z.map((X)=>{let q=G.get(X.path);if(q)return{...X,added:q.added,deleted:q.deleted};return X})}function D3(J){return h5(J).map((z)=>({path:z.path,added:z.added,deleted:z.deleted}))}function L3(J){let z={name:"",path:"",isDir:!0,children:[]};for(let Y of J){if(!Y)continue;let Z=Y.split("/").filter((X)=>X.length>0);if(Z.length===0)continue;let G=z;for(let X=0;X<Z.length;X++){let q=Z[X],f=X!==Z.length-1,j=G.children.find((V)=>V.name===q&&V.isDir===f);if(!j)j={name:q,path:Z.slice(0,X+1).join("/"),isDir:f,children:[]},G.children.push(j);G=j}}return F3(z),z}function F3(J){J.children.sort((z,Y)=>{if(z.isDir!==Y.isDir)return z.isDir?-1:1;return z.name.localeCompare(Y.name)});for(let z of J.children)F3(z)}function M3(J){let z=[];for(let Y of EH(J)){let Z;if(Y.x==="?"&&Y.y==="?")Z="?";else{let X=Y.y!==" "?Y.y:Y.x;if(X==="M"||X==="A"||X==="D"||X==="R"||X==="C"||X==="U")Z=X;else continue}let G=Y.path;if(G.length===0)continue;if(G.endsWith("/"))continue;z.push({path:G,status:Z})}return z}var MW=C(()=>{wH();PH()});function OW(J){K1(()=>({enabled:J.focused(),bindings:rY({"files.nav":(z,Y)=>{if((Y??0)%2===0)J.moveDown();else J.moveUp()},"files.hierarchy":(z,Y)=>{if((Y??0)%2===0)J.collapseOrParent();else J.expandOrDescend()},"files.tab":(z,Y)=>{let Z=J.currentTab(),G=xq.indexOf(Z);if(G<0)return;let X=(Y??0)%2===0?-1:1,q=xq[(G+X+xq.length)%xq.length];if(q)J.setTab(q)},"files.open":()=>J.openCurrent(),"files.mention":()=>J.mentionCurrent?.(),"files.createPR":()=>J.createPR?.(),"files.openExternal":()=>J.openExternal(),"files.refresh":()=>J.refresh()})}))}var xq;var AW=C(()=>{rG();gJ();xq=["all","changes"]});import{spawn as O3}from"child_process";import{existsSync as zE}from"fs";import{platform as YE}from"os";function A3(J){if(!J)return;let z=YE();if(z==="linux"){if(zE("/proc/sys/fs/binfmt_misc/WSLInterop")||process.env.WSL_DISTRO_NAME){uq("wslview",[J],()=>{let Y=O3("wslpath",["-w",J],{stdio:["ignore","pipe","ignore"]}),Z="";Y.stdout?.on("data",(G)=>{Z+=G.toString()}),Y.on("close",(G)=>{if(G===0)uq("explorer.exe",[Z.trim()])})});return}uq("xdg-open",[J]);return}if(z==="darwin"){uq("open",[J]);return}if(z==="win32"){uq("cmd.exe",["/c","start","",J]);return}}function uq(J,z,Y){try{let Z=O3(J,z,{stdio:"ignore",detached:!0});Z.on("error",()=>Y?.()),Z.unref()}catch{Y?.()}}var R3=()=>{};function RW(J,z,Y,Z){for(let G of J.children)if(G.isDir){let X=z.has(G.path);if(Z.push({kind:"dir",path:G.path,name:G.name,depth:Y,expanded:X,hasChildren:G.children.length>0}),X)RW(G,z,Y+1,Z)}else Z.push({kind:"file",path:G.path,name:G.name,depth:Y})}function g3(J,z){return wf(J,z)}function N3(J){return J.map((z)=>({kind:"status",path:z.path,status:z.status,added:z.added,deleted:z.deleted}))}function ZE(J){return`${J.kind}\x00${J.path}`}function GE(J,z){if(J.kind!==z.kind||J.path!==z.path)return!1;switch(J.kind){case"file":{let Y=z;return J.name===Y.name&&J.depth===Y.depth}case"dir":{let Y=z;return J.name===Y.name&&J.depth===Y.depth&&J.expanded===Y.expanded&&J.hasChildren===Y.hasChildren}case"status":{let Y=z;return J.status===Y.status&&J.added===Y.added&&J.deleted===Y.deleted}}}function C3(J,z){return yf(J,z,ZE,GE)}function k3(J,z){if(J===z)return!0;if(J==null||z==null)return!1;if(J.length!==z.length)return!1;for(let Y=0;Y<J.length;Y++)if(J[Y]!==z[Y])return!1;return!0}function b3(J,z){if(J===z)return!0;if(J==null||z==null)return!1;if(J.length!==z.length)return!1;for(let Y=0;Y<J.length;Y++){let Z=J[Y],G=z[Y];if(Z.path!==G.path||Z.status!==G.status||Z.added!==G.added||Z.deleted!==G.deleted)return!1}return!0}var S3=()=>{};import{watch as XE}from"fs";import{TextAttributes as Eq}from"@opentui/core";function qE(J){switch(J){case"M":return"warning";case"A":return"success";case"D":return"error";case"?":return"textMuted";case"R":case"C":case"U":return"info"}}function HE(J){let z=J.toLowerCase();if(z.includes("not a git repository"))return F("files.error.notGitRepo");if(z.includes("does not exist")||z.includes("enoent"))return F("files.error.pathMissing");if(z.includes("permission denied")||z.includes("eacces"))return F("files.error.permissionDenied");if(z.includes("git: not found")||z.includes("command not found"))return F("files.error.gitNotInstalled");let Y=J.indexOf(": ");if(Y>=0&&J.startsWith("git "))return J.slice(Y+2).trim()||F("files.error.gitFailed");return J.trim()||F("files.error.gitFailed")}function fE(J){switch(J){case"all":return F("files.tabs.all");case"changes":return F("files.tabs.changes")}}function gW(J){let{theme:z}=w0(),Y=lz(),Z=()=>J.focused?J.focused():!0,[G,X]=p("all"),[q,H]=p(0),[f,j]=p(0),[V,B]=p(null,{equals:k3}),[K,L]=p(null,{equals:b3}),[A,O]=p(null),[R,x]=p(new Set),w=0;async function S(s,v,k){let t=++w;if(v==null){B(null),L(null),O(null);return}O(null);try{if(s==="all"){let I=await LW(v,k);if(k?.aborted||t!==w||J.worktreePath()!==v)return;B(I)}else if(s==="changes"){let I=await FW(v,k);if(k?.aborted||t!==w||J.worktreePath()!==v)return;L(I)}}catch(I){if(k?.aborted)return;let n=I instanceof Error?I.message:String(I);if(t===w&&J.worktreePath()===v)O(n)}}_0(BJ(J.worktreePath,async(s)=>{B(null),L(null),O(null),H(0),x(new Set);let v=new AbortController;S1(()=>v.abort()),await S(G(),s,v.signal)})),_0(BJ(J.worktreePath,(s)=>{if(s==null)return;if(process.env.KOBE_FILETREE_WATCH!=="1")return;let v=null,k=null;try{k=XE(s,{recursive:!0},(t,I)=>{if(I==null)return;let n=I.toString();if(n===".git"||n.startsWith(".git/")||n.startsWith(".git\\"))return;if(n.startsWith("node_modules/")||n.startsWith("node_modules\\"))return;if(v!=null)clearTimeout(v);v=setTimeout(()=>{v=null,j((q0)=>q0+1)},500)}),k.on("error",()=>{})}catch{}S1(()=>{if(v!=null)clearTimeout(v);if(k!=null)k.close()})})),_0(BJ([G,f],async([s,v])=>{let k=J.worktreePath();if(k==null)return;H(0);let t=new AbortController;S1(()=>t.abort());let n=f()>0;if(s==="all"){if(V()==null||n)await S("all",k,t.signal)}else if(s==="changes"){if(K()==null||n)await S("changes",k,t.signal)}}));let g=U0(()=>{let s=V();if(s==null)return null;return L3(s)}),M=U0((s)=>{let v=[];if(G()==="all"){let k=g();if(k!=null)RW(k,R(),0,v)}else if(G()==="changes"){let k=K();if(k!=null)v.push(...N3(k))}return C3(s??[],v)},[]),T=U0(()=>{let s=0,v=0;for(let k of M()){if(k.kind!=="status")continue;if(k.added!=null)s=Math.max(s,String(k.added).length+1);if(k.deleted!=null)v=Math.max(v,String(k.deleted).length+1)}return{added:s,deleted:v}}),$=U0(()=>{let s=T(),v=(s.added>0?s.added+1:0)+(s.deleted>0?s.deleted+1:0);return Math.max(8,Y().width-6-v)});function d(){let s=M();if(s.length===0)return;H(Math.min(q()+1,s.length-1))}function e(){if(M().length===0)return;H(Math.max(q()-1,0))}function u(){let s=M(),v=q(),k=s[v];if(!k)return;if(k.kind!=="dir")return;if(!k.expanded&&k.hasChildren)x((t)=>{let I=new Set(t);return I.add(k.path),I});else if(k.expanded){if(v+1<s.length)H(v+1)}}function z0(){if(G()!=="all")return;let s=M(),v=q(),k=s[v];if(!k)return;if(k.kind==="dir"&&k.expanded){x((I)=>{let n=new Set(I);return n.delete(k.path),n});return}if(k.kind!=="dir"&&k.kind!=="file")return;let t=k.depth-1;if(t<0)return;for(let I=v-1;I>=0;I--){let n=s[I];if(!n)continue;if(n.kind==="dir"&&n.depth===t){H(I);return}}}function Q0(){let s=M(),v=q();if(v<0||v>=s.length)return;let k=s[v];if(!k)return;if(k.kind==="dir"){x((t)=>{let I=new Set(t);if(I.has(k.path))I.delete(k.path);else I.add(k.path);return I});return}J.onOpenFile(k.path)}function o(){let s=M(),v=q();if(v<0||v>=s.length)return;let k=s[v];if(!k||k.kind==="dir")return;J.onMention?.(k.path)}function K0(){j((s)=>s+1),J.onRefresh?.()}function N0(){let s=M(),v=q();if(v<0||v>=s.length)return;let k=s[v];if(!k||k.kind==="dir")return;let t=J.worktreePath();if(!t)return;let I=`${t}/${k.path}`;A3(I)}OW({focused:Z,moveDown:d,moveUp:e,setTab:(s)=>X(s),currentTab:G,openCurrent:Q0,mentionCurrent:o,createPR:J.onCreatePR,openExternal:N0,refresh:K0,expandOrDescend:u,collapseOrParent:z0});let h;return _0(BJ([q,M],([s,v])=>{if(!h)return;if(v.length===0)return;let k=h.scrollTop,t=h.viewport.height;if(t<=0)return;if(s<k)h.scrollTo({x:0,y:s});else if(s>=k+t)h.scrollTo({x:0,y:s-t+1})})),(()=>{var s=W("box"),v=W("box"),k=W("box"),t=W("scrollbox");return D(s,v),D(s,t),Q(s,"flexDirection","column"),Q(s,"flexGrow",1),Q(s,"paddingTop",1),Q(s,"paddingBottom",1),Q(s,"paddingLeft",0),Q(s,"paddingRight",0),U(s,b(Y0,{get when(){return J.onZenToggle||J.onCreatePR},get children(){var I=W("box");return Q(I,"flexDirection","row"),Q(I,"justifyContent","flex-end"),Q(I,"gap",2),Q(I,"paddingBottom",1),Q(I,"flexShrink",0),U(I,b(Y0,{get when(){return J.onZenToggle},get children(){var n=W("box"),q0=W("text"),H0=W("text");return D(n,q0),D(n,H0),Q(n,"flexDirection","row"),Q(n,"gap",1),Q(n,"onMouseUp",()=>J.onZenToggle?.()),D(q0,x0("[~]")),Q(q0,"wrapMode","none"),Q(H0,"wrapMode","none"),U(H0,()=>F("files.actions.zen")),y((j0)=>{var y0=z.accent,p0=Eq.BOLD,E0=z.text;return y0!==j0.e&&(j0.e=Q(q0,"fg",y0,j0.e)),p0!==j0.t&&(j0.t=Q(q0,"attributes",p0,j0.t)),E0!==j0.a&&(j0.a=Q(H0,"fg",E0,j0.a)),j0},{e:void 0,t:void 0,a:void 0}),n}}),null),U(I,b(Y0,{get when(){return J.onCreatePR},get children(){var n=W("box"),q0=W("text"),H0=W("text");return D(n,q0),D(n,H0),Q(n,"flexDirection","row"),Q(n,"gap",1),Q(n,"onMouseUp",()=>J.onCreatePR?.()),D(q0,x0("[P]")),Q(q0,"wrapMode","none"),Q(H0,"wrapMode","none"),U(H0,()=>F("files.actions.createPR")),y((j0)=>{var y0=z.accent,p0=Eq.BOLD,E0=z.text;return y0!==j0.e&&(j0.e=Q(q0,"fg",y0,j0.e)),p0!==j0.t&&(j0.t=Q(q0,"attributes",p0,j0.t)),E0!==j0.a&&(j0.a=Q(H0,"fg",E0,j0.a)),j0},{e:void 0,t:void 0,a:void 0}),n}}),null),I}}),v),D(v,k),Q(v,"flexDirection","row"),Q(v,"justifyContent","space-between"),Q(v,"paddingBottom",0),Q(v,"flexShrink",0),Q(k,"flexDirection","row"),Q(k,"gap",2),U(k,b(z1,{each:QE,children:(I)=>{let n=()=>G()===I;return(()=>{var q0=W("text");return Q(q0,"wrapMode","none"),Q(q0,"onMouseUp",()=>X(I)),U(q0,()=>fE(I)),y((H0)=>{var j0=n()?z.primary:z.textMuted,y0=n()?Eq.BOLD:void 0;return j0!==H0.e&&(H0.e=Q(q0,"fg",j0,H0.e)),y0!==H0.t&&(H0.t=Q(q0,"attributes",y0,H0.t)),H0},{e:void 0,t:void 0}),q0})()}})),U(v,b(Y0,{get when(){return J.cornerBadge?.()},children:(I)=>(()=>{var n=W("text");return Q(n,"wrapMode","none"),U(n,()=>I().text),y((q0)=>{var H0=I().active?z.accent:z.textMuted,j0=I().active?Eq.BOLD:void 0;return H0!==q0.e&&(q0.e=Q(n,"fg",H0,q0.e)),j0!==q0.t&&(q0.t=Q(n,"attributes",j0,q0.t)),q0},{e:void 0,t:void 0}),n})()}),null),U(s,b(Y0,{get when(){return G()==="changes"},get children(){var I=W("box"),n=W("text");return D(I,n),Q(I,"flexDirection","column"),Q(I,"paddingBottom",1),Q(I,"flexShrink",0),Q(I,"gap",0),Q(n,"wrapMode","none"),U(n,()=>F("files.legend.changes")),y((q0)=>Q(n,"fg",z.textMuted,q0)),I}}),t),U(s,b(Y0,{get when(){return G()!=="changes"},get children(){var I=W("box");return Q(I,"flexDirection","row"),Q(I,"paddingBottom",1),Q(I,"flexShrink",0),I}}),t),Gz((I)=>{h=I},t),Q(t,"flexGrow",1),Q(t,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),U(t,b(Y0,{get when(){return J.worktreePath()==null},get children(){var I=W("box"),n=W("text");return D(I,n),Q(I,"paddingTop",1),Q(I,"paddingLeft",1),U(n,()=>F("files.empty.noTask")),y((q0)=>Q(n,"fg",z.textMuted,q0)),I}}),null),U(t,b(Y0,{get when(){return S0(()=>J.worktreePath()!=null)()&&A()!=null},get children(){var I=W("box"),n=W("text"),q0=W("text");return D(I,n),D(I,q0),Q(I,"paddingTop",1),Q(I,"paddingLeft",1),Q(I,"flexDirection","column"),Q(I,"gap",0),Q(n,"wrapMode","word"),U(n,()=>HE(A()??"")),Q(q0,"wrapMode","word"),U(q0,()=>F("files.error.retryHint")),y((H0)=>{var{error:j0,textMuted:y0}=z;return j0!==H0.e&&(H0.e=Q(n,"fg",j0,H0.e)),y0!==H0.t&&(H0.t=Q(q0,"fg",y0,H0.t)),H0},{e:void 0,t:void 0}),I}}),null),U(t,b(Y0,{get when(){return S0(()=>J.worktreePath()!=null&&A()==null&&M().length===0)()&&(G()==="all"&&V()!=null||G()==="changes"&&K()!=null)},get children(){var I=W("box"),n=W("text");return D(I,n),Q(I,"paddingTop",1),Q(I,"paddingLeft",1),U(n,(()=>{var q0=S0(()=>G()==="all");return()=>q0()?F("files.empty.noFiles"):F("files.empty.noChanges")})()),y((q0)=>Q(n,"fg",z.textMuted,q0)),I}}),null),U(t,b(Y0,{get when(){return S0(()=>J.worktreePath()!=null&&A()==null)()&&M().length>0},get children(){var I=W("box");return Q(I,"flexShrink",0),Q(I,"gap",0),Q(I,"paddingRight",1),U(I,b(z1,{get each(){return M()},children:(n,q0)=>{let H0=()=>q0()===q(),j0=(()=>{var G0=W("text");return Q(G0,"wrapMode","none"),U(G0,()=>H0()?"\u258C":" "),y((F0)=>Q(G0,"fg",H0()?z.focusAccent:void 0,F0)),G0})(),y0=()=>H0()?z.backgroundElement:void 0;if(n.kind==="dir"){let G0=" ".repeat(n.depth),F0=n.expanded?"\u25BE":"\u25B8";return(()=>{var a0=W("box"),t0=W("box"),P0=W("text");return D(a0,t0),Q(a0,"flexDirection","row"),Q(a0,"gap",0),Q(a0,"onMouseUp",()=>{H(q0()),x((v0)=>{let U1=new Set(v0);if(U1.has(n.path))U1.delete(n.path);else U1.add(n.path);return U1})}),U(a0,j0,t0),D(t0,P0),Q(t0,"flexGrow",1),Q(t0,"paddingRight",1),Q(P0,"wrapMode","none"),U(P0,()=>`${G0}${F0} ${n.name}/`),y((v0)=>{var U1=y0(),r=z.textMuted,D0=Eq.BOLD;return U1!==v0.e&&(v0.e=Q(a0,"backgroundColor",U1,v0.e)),r!==v0.t&&(v0.t=Q(P0,"fg",r,v0.t)),D0!==v0.a&&(v0.a=Q(P0,"attributes",D0,v0.a)),v0},{e:void 0,t:void 0,a:void 0}),a0})()}if(n.kind==="file"){let G0=" ".repeat(n.depth);return(()=>{var F0=W("box"),a0=W("box"),t0=W("text");return D(F0,a0),Q(F0,"flexDirection","row"),Q(F0,"gap",0),Q(F0,"onMouseUp",()=>{H(q0()),J.onOpenFile(n.path)}),U(F0,j0,a0),D(a0,t0),Q(a0,"flexGrow",1),Q(a0,"paddingRight",1),Q(t0,"wrapMode","none"),U(t0,()=>`${G0} ${n.name}`),y((P0)=>{var v0=y0(),U1=z.text;return v0!==P0.e&&(P0.e=Q(F0,"backgroundColor",v0,P0.e)),U1!==P0.t&&(P0.t=Q(t0,"fg",U1,P0.t)),P0},{e:void 0,t:void 0}),F0})()}let p0=qE(n.status),E0=()=>{switch(p0){case"success":return z.success;case"warning":return z.warning;case"error":return z.error;case"info":return z.info;default:return z.textMuted}},R0=T(),m=n.added==null?" ".repeat(R0.added):`+${n.added}`.padStart(R0.added),L0=n.deleted==null?" ".repeat(R0.deleted):`-${n.deleted}`.padStart(R0.deleted);return(()=>{var G0=W("box"),F0=W("box"),a0=W("text"),t0=W("text");return D(G0,F0),Q(G0,"flexDirection","row"),Q(G0,"gap",0),Q(G0,"onMouseUp",()=>{H(q0()),J.onOpenFile(n.path)}),U(G0,j0,F0),D(F0,a0),D(F0,t0),Q(F0,"flexDirection","row"),Q(F0,"flexGrow",1),Q(F0,"gap",1),Q(F0,"paddingRight",1),Q(a0,"wrapMode","none"),U(a0,()=>n.status),Q(t0,"wrapMode","none"),Q(t0,"flexGrow",1),U(t0,()=>g3(n.path,$())),U(F0,b(Y0,{get when(){return R0.added>0},get children(){var P0=W("text");return Q(P0,"wrapMode","none"),U(P0,m),y((v0)=>Q(P0,"fg",z.success,v0)),P0}}),null),U(F0,b(Y0,{get when(){return R0.deleted>0},get children(){var P0=W("text");return Q(P0,"wrapMode","none"),U(P0,L0),y((v0)=>Q(P0,"fg",z.error,v0)),P0}}),null),y((P0)=>{var v0=y0(),U1=E0(),r=z.text;return v0!==P0.e&&(P0.e=Q(G0,"backgroundColor",v0,P0.e)),U1!==P0.t&&(P0.t=Q(a0,"fg",U1,P0.t)),r!==P0.a&&(P0.a=Q(t0,"fg",r,P0.a)),P0},{e:void 0,t:void 0,a:void 0}),G0})()}})),I}}),null),U(s,b(Y0,{get when(){return J.worktreePath()!=null},get children(){var I=W("box"),n=W("text");return D(I,n),Q(I,"flexDirection","row"),Q(I,"paddingTop",1),Q(I,"flexShrink",0),Q(n,"wrapMode","none"),U(n,()=>F("files.footer.openHint")),y((q0)=>Q(n,"fg",z.textMuted,q0)),I}}),null),s})()}var QE;var I3=C(()=>{E();E();E();E();E();E();E();E();E();ZJ();E();W1();E1();MW();AW();R3();S3();QE=["all","changes"]});var y3=C(()=>{I3();MW();AW()});function x3(J,z){if(z<3)return 2500;return Math.min(J*2,20000)}function u3(J,z,Y){if(z)return 1500;if(Y==="running")return 1500;return Math.min(J*2,6000)}var T3=2500,wq=1500;import{promises as jE}from"fs";import BE from"path";async function df(J,z){let Y=new AbortController,Z=setTimeout(()=>Y.abort(),WE);try{let G=await GY("git",z,{cwd:J,env:dJ(),signal:Y.signal});if(Y.signal.aborted)return null;if(G.status!==0)return null;return G.stdout.trim()}finally{clearTimeout(Z)}}async function VE(J){return await df(J,["rev-parse","--abbrev-ref","HEAD"])||"HEAD"}async function KE(J){let z=await df(J,["symbolic-ref","refs/remotes/origin/HEAD","--short"]);if(!z)return"main";return z.startsWith("origin/")?z.slice(7):z}async function UE(J){let z=await df(J,["rev-parse","--abbrev-ref","@{u}"]);return z!==null&&z.length>0}async function DE(J){let z=await df(J,["status","--porcelain"]);if(!z)return 0;return z.split(`
281
- `).filter((Y)=>Y.length>0).length}async function LE(J){let[z,Y,Z,G]=await Promise.all([VE(J),KE(J),UE(J),DE(J)]);return{branch:z,targetBranch:Y,hasUpstream:Z,dirtyCount:G}}function FE(J){if(J<=0)return"There are no uncommitted changes.";if(J===1)return"There is 1 uncommitted change.";return`There are ${J} uncommitted changes.`}function ME(J){return J?"The current branch tracks an upstream.":"There is no upstream branch yet."}function OE(J,z){let Y={branch:z.branch,targetBranch:z.targetBranch,dirtyCountSentence:FE(z.dirtyCount),upstreamSentence:ME(z.hasUpstream)};return J.replace(/\{\{([a-zA-Z][a-zA-Z0-9_]*)\}\}/g,(Z,G)=>Object.hasOwn(Y,G)?Y[G]:Z)}async function AE(J){let z=BE.join(J,".kobe","pr-instructions.md");try{let Y=await jE.readFile(z,"utf8");return Y.length>0?Y:E3}catch{return E3}}async function w3(J){let[z,Y]=await Promise.all([AE(J),LE(J)]);return OE(z,Y)}var WE=5000,E3=`The user likes the current state of the code.
276
+ `),process.stdout.write(F("update.pressAnyKey")),await qE(),process.exit(g)}return U1(()=>({bindings:[{key:"up",cmd:()=>R(-1)},{key:"down",cmd:()=>R(1)},{key:"k",cmd:()=>R(-1)},{key:"j",cmd:()=>R(1)},{key:"return",cmd:()=>u()},{key:"u",cmd:()=>u("update")},{key:"r",cmd:()=>u("release")},{key:"q",cmd:()=>u("close")},{key:"escape",cmd:()=>u("close")},{key:"ctrl+c",cmd:()=>u("close")}]})),(()=>{var S=W("box"),g=W("box"),M=W("text"),T=W("text"),d=W("box"),i=W("text"),J0=W("text"),E=T0("v"),z0=W("text"),q0=W("text"),o=T0("v"),B0=W("box"),g0=W("box"),m=W("text"),r=W("scrollbox"),c=W("box");return D(S,g),D(S,d),D(S,B0),D(S,g0),D(S,r),q(S,"flexDirection","column"),q(S,"flexGrow",1),q(S,"paddingTop",1),q(S,"paddingLeft",2),q(S,"paddingRight",2),D(g,M),D(g,T),q(g,"flexDirection","row"),q(g,"justifyContent","space-between"),q(g,"flexShrink",0),q(M,"wrapMode","none"),U(M,()=>F("update.pageTitle")),D(T,T0("q / esc")),q(T,"wrapMode","none"),q(T,"onMouseUp",()=>u("close")),D(d,i),D(d,J0),D(d,z0),D(d,q0),q(d,"flexDirection","row"),q(d,"gap",2),q(d,"flexShrink",0),q(d,"paddingTop",1),q(i,"wrapMode","none"),U(i,()=>F("update.current")),D(J0,E),q(J0,"wrapMode","none"),U(J0,J1,null),q(z0,"wrapMode","none"),U(z0,()=>F("update.latest")),D(q0,o),q(q0,"wrapMode","none"),U(q0,K,null),q(B0,"flexDirection","column"),q(B0,"flexShrink",0),q(B0,"paddingTop",1),q(B0,"gap",0),U(B0,b(Z1,{get each(){return A()},children:(N)=>(()=>{var t=W("box"),x=W("box"),n=W("text"),Q0=T0("["),H0=T0("]"),F0=W("box"),M0=W("text"),o0=W("text");return D(t,x),D(t,F0),D(t,o0),q(t,"flexDirection","row"),q(t,"gap",1),q(t,"paddingLeft",1),q(t,"paddingRight",1),q(t,"onMouseUp",()=>u(N.id)),D(x,n),q(x,"width",4),q(x,"flexShrink",0),D(n,Q0),D(n,H0),q(n,"wrapMode","none"),U(n,()=>N.key,H0),D(F0,M0),q(F0,"width",14),q(F0,"flexShrink",0),q(M0,"wrapMode","none"),U(M0,()=>N.label),q(o0,"wrapMode","word"),U(o0,()=>N.detail),y((S0)=>{var p0=f()===N.id?J.primary:void 0,h=f()===N.id?J.selectedListItemText:J.accent,L0=ZX.BOLD,Z0=f()===N.id?J.selectedListItemText:J.text,D0=f()===N.id?J.selectedListItemText:J.textMuted;return p0!==S0.e&&(S0.e=q(t,"backgroundColor",p0,S0.e)),h!==S0.t&&(S0.t=q(n,"fg",h,S0.t)),L0!==S0.a&&(S0.a=q(n,"attributes",L0,S0.a)),Z0!==S0.o&&(S0.o=q(M0,"fg",Z0,S0.o)),D0!==S0.i&&(S0.i=q(o0,"fg",D0,S0.i)),S0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),t})()})),U(S,b(Y0,{get when(){return V()},get children(){var N=W("text");return q(N,"wrapMode","word"),U(N,V),y((t)=>q(N,"fg",J.info,t)),N}}),g0),D(g0,m),q(g0,"flexShrink",0),q(g0,"paddingTop",1),q(m,"wrapMode","none"),U(m,()=>F("update.changesSectionHeader",{from:J1,to:K()})),D(r,c),q(r,"flexGrow",1),q(r,"flexShrink",1),q(r,"stickyScroll",!1),q(c,"flexDirection","column"),q(c,"paddingRight",1),q(c,"paddingBottom",1),q(c,"gap",0),U(c,b(Y0,{get when(){return Q()},get children(){var N=W("text");return U(N,()=>F("update.loadingNotes")),y((t)=>q(N,"fg",J.textMuted,t)),N}}),null),U(c,b(Y0,{get when(){return N0(()=>!Q())()&&G().length===0},get children(){var N=W("text");return q(N,"wrapMode","word"),U(N,()=>F("update.notesUnavailable")),y((t)=>q(N,"fg",J.textMuted,t)),N}}),null),U(c,b(Z1,{get each(){return G()},children:(N)=>(()=>{var t=W("box"),x=W("text"),n=T0("v");return D(t,x),q(t,"flexDirection","column"),q(t,"paddingBottom",1),q(t,"gap",0),D(x,n),q(x,"wrapMode","none"),U(x,()=>N.version,null),U(t,b(Z1,{get each(){return QE(N.body)},children:(Q0)=>(()=>{var H0=W("text");return q(H0,"wrapMode","word"),U(H0,Q0),y((F0)=>q(H0,"fg",J.textMuted,F0)),H0})()}),null),y((Q0)=>{var H0=J.text,F0=ZX.BOLD;return H0!==Q0.e&&(Q0.e=q(x,"fg",H0,Q0.e)),F0!==Q0.t&&(Q0.t=q(x,"attributes",F0,Q0.t)),Q0},{e:void 0,t:void 0}),t})()}),null),y((N)=>{var{background:t,text:x}=J,n=ZX.BOLD,Q0=J.textMuted,H0=J.textMuted,F0=J.text,M0=ZX.BOLD,o0=J.textMuted,S0=Y()?.hasUpdate?J.warning:J.success,p0=ZX.BOLD,h=J.textMuted,L0=ZX.DIM,Z0={trackOptions:{backgroundColor:J.background,foregroundColor:J.borderActive}};return t!==N.e&&(N.e=q(S,"backgroundColor",t,N.e)),x!==N.t&&(N.t=q(M,"fg",x,N.t)),n!==N.a&&(N.a=q(M,"attributes",n,N.a)),Q0!==N.o&&(N.o=q(T,"fg",Q0,N.o)),H0!==N.i&&(N.i=q(i,"fg",H0,N.i)),F0!==N.n&&(N.n=q(J0,"fg",F0,N.n)),M0!==N.s&&(N.s=q(J0,"attributes",M0,N.s)),o0!==N.h&&(N.h=q(z0,"fg",o0,N.h)),S0!==N.r&&(N.r=q(q0,"fg",S0,N.r)),p0!==N.d&&(N.d=q(q0,"attributes",p0,N.d)),h!==N.l&&(N.l=q(m,"fg",h,N.l)),L0!==N.u&&(N.u=q(m,"attributes",L0,N.u)),Z0!==N.c&&(N.c=q(r,"verticalScrollbarOptions",Z0,N.c)),N},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0}),S})()}async function fE(){await KJ({setup:()=>({root:()=>b(HE,{})})})}var b3=C(()=>{w();w();w();w();w();w();w();w();w();W1();NJ();h1();ZJ();MY();kJ()});var I3={};q1(I3,{startHistoryHost:()=>ME});import{TextAttributes as GX}from"@opentui/core";function jE(J){let z=J.lastIndexOf("/");return z>=0?J.slice(z+1):J}function BE(J){let z=Date.parse(J);if(Number.isNaN(z))return"";let Y=Math.max(0,Math.floor((Date.now()-z)/1000));if(Y<60)return`${Y}s`;let Z=Math.floor(Y/60);if(Z<60)return`${Z}m`;let G=Math.floor(Z/60);if(G<24)return`${G}h`;return`${Math.floor(G/24)}d`}function WE(J){if(J&&typeof J==="object"&&!Array.isArray(J)){let z=J,Y=(G)=>typeof z[G]==="string"?z[G]:null,Z=Y("command")??Y("file_path")??Y("pattern")??Y("url")??Y("description")??Y("prompt")??Y("query");if(Z)return Z.length>df?`${Z.slice(0,df-1)}\u2026`:Z}try{let z=JSON.stringify(J);if(!z||z==="{}"||z==="null")return"";return z.length>df?`${z.slice(0,df-1)}\u2026`:z}catch{return""}}function VE(J){if(typeof J==="string")return J;try{return JSON.stringify(J,null,2)}catch{return String(J)}}function KE(J){let z=new Map;for(let Y of J)for(let Z of Y.blocks)if(Z.type==="tool_result")z.set(Z.callId,Z);return z}function S3(J){let{theme:z}=w0(),Y=()=>J.text.replace(/\s+$/,"").split(`
277
+ `),Z=(G)=>{if(J.error)return z.error;if(G.startsWith("+")&&!G.startsWith("+++"))return z.success;if(G.startsWith("-")&&!G.startsWith("---"))return z.error;return z.textMuted};return(()=>{var G=W("box");return q(G,"flexDirection","column"),q(G,"paddingLeft",2),q(G,"marginLeft",2),U(G,b(Z1,{get each(){return Y()},children:(X)=>(()=>{var Q=W("text");return q(Q,"wrapMode","word"),U(Q,X||" "),y((H)=>q(Q,"fg",Z(X),H)),Q})()})),y((X)=>q(G,"backgroundColor",z.backgroundElement,X)),G})()}function UE(J){let{theme:z}=w0(),Y=J.block;switch(Y.type){case"text":return(()=>{var Z=W("text");return q(Z,"wrapMode","word"),U(Z,()=>Y.text),y((G)=>q(Z,"fg",z.text,G)),Z})();case"thinking":return(()=>{var Z=W("box"),G=W("text");return D(Z,G),q(Z,"flexDirection","column"),q(G,"wrapMode","none"),U(G,()=>`\u2731 ${F("history.thinking")}${J.expanded?"":"\u2026"}`),U(Z,b(Y0,{get when(){return N0(()=>!!J.expanded)()&&Y.text.trim()},get children(){return b(S3,{get text(){return Y.text}})}}),null),y((X)=>{var Q=z.textMuted,H=GX.ITALIC;return Q!==X.e&&(X.e=q(G,"fg",Q,X.e)),H!==X.t&&(X.t=q(G,"attributes",H,X.t)),X},{e:void 0,t:void 0}),Z})();case"tool_call":{let Z=!J.result?.isError,G=J.result?VE(J.result.output):"",X=WE(Y.input);return(()=>{var Q=W("box"),H=W("box"),f=W("text"),j=W("text");return D(Q,H),q(Q,"flexDirection","column"),D(H,f),D(H,j),q(H,"flexDirection","row"),q(H,"gap",1),D(f,T0("\u23FA")),q(f,"wrapMode","none"),q(j,"wrapMode","none"),U(j,()=>Y.name),U(H,b(Y0,{when:X,get children(){var V=W("text");return q(V,"wrapMode","none"),U(V,X),y((B)=>q(V,"fg",z.textMuted,B)),V}}),null),U(Q,b(Y0,{get when(){return N0(()=>!!J.expanded)()&&G.trim()},get children(){return b(S3,{text:G,get error(){return J.result?.isError}})}}),null),y((V)=>{var B=Z?z.success:z.error,K=z.text,L=GX.BOLD;return B!==V.e&&(V.e=q(f,"fg",B,V.e)),K!==V.t&&(V.t=q(j,"fg",K,V.t)),L!==V.a&&(V.a=q(j,"attributes",L,V.a)),V},{e:void 0,t:void 0,a:void 0}),Q})()}case"tool_result":return null}}function DE(J){return J==="assistant"?F("history.role.assistant"):J==="system"?F("history.role.system"):F("history.role.user")}function LE(J){let{theme:z}=w0(),Y=()=>J.msg.role==="user",Z=()=>BE(J.msg.timestamp),G=U0(()=>Y()?J.msg.blocks.filter((Q)=>Q.type==="text"&&Q.text.trim().length>0).map((Q)=>Q.text).join(`
278
+ `):""),X=()=>Y()?J.msg.blocks.filter((Q)=>Q.type!=="text"):J.msg.blocks;return(()=>{var Q=W("box");return q(Q,"flexDirection","column"),q(Q,"paddingLeft",1),q(Q,"paddingRight",1),q(Q,"paddingBottom",1),q(Q,"gap",0),U(Q,b(Y0,{get when(){return N0(()=>!!Y())()&&G()},get children(){var H=W("box"),f=W("text"),j=W("text");return D(H,f),D(H,j),q(H,"flexDirection","row"),q(H,"gap",1),q(H,"paddingLeft",1),q(H,"paddingRight",1),D(f,T0("\u276F")),q(f,"wrapMode","none"),q(j,"wrapMode","word"),q(j,"flexGrow",1),U(j,G),U(H,b(Y0,{get when(){return Z()},get children(){var V=W("text");return q(V,"wrapMode","none"),U(V,Z),y((B)=>q(V,"fg",z.textMuted,B)),V}}),null),y((V)=>{var{backgroundElement:B,primary:K}=z,L=GX.BOLD,A=z.text;return B!==V.e&&(V.e=q(H,"backgroundColor",B,V.e)),K!==V.t&&(V.t=q(f,"fg",K,V.t)),L!==V.a&&(V.a=q(f,"attributes",L,V.a)),A!==V.o&&(V.o=q(j,"fg",A,V.o)),V},{e:void 0,t:void 0,a:void 0,o:void 0}),H}}),null),U(Q,b(Y0,{get when(){return!Y()},get children(){var H=W("text");return q(H,"wrapMode","none"),U(H,()=>DE(J.msg.role)),y((f)=>{var j=z.textMuted,V=GX.BOLD;return j!==f.e&&(f.e=q(H,"fg",j,f.e)),V!==f.t&&(f.t=q(H,"attributes",V,f.t)),f},{e:void 0,t:void 0}),H}}),null),U(Q,b(Z1,{get each(){return X()},children:(H)=>b(UE,{block:H,get result(){return N0(()=>H.type==="tool_call")()?J.results.get(H.callId):void 0},get expanded(){return J.expanded}})}),null),Q})()}function FE(J){let{theme:z}=w0(),[Y]=WZ(()=>J.worktree,async(P)=>{try{return await i1(J.vendor).history.listSessionIdsForWorktree(P)}catch{return[]}}),Z=()=>Y()??[],[G,X]=p(0);_0(BJ(Y,(P)=>{let S=(P??[]).length;X(S>0?S-1:0)}));let Q=()=>Z()[G()],[H]=WZ(()=>Q(),async(P)=>{if(!P)return[];try{return await i1(J.vendor).history.readHistory(P)}catch{return[]}}),f=()=>H()??[],j=U0(()=>KE(f())),V=U0(()=>f().reduce((P,S)=>P+(S.usage?.output_tokens??0),0)),[B,K]=p(!1),L,A=(P)=>{if(!L)return;L.scrollTo({x:0,y:Math.max(0,L.scrollTop+P)})};_0(BJ(Q,()=>L?.scrollTo({x:0,y:0})));let O=(P)=>{let S=Z().length;if(S===0)return;X((g)=>Math.min(Math.max(g+P,0),S-1))};U1(()=>({bindings:[{key:"j",cmd:()=>A(cf)},{key:"k",cmd:()=>A(-cf)},{key:"down",cmd:()=>A(cf)},{key:"up",cmd:()=>A(-cf)},{key:"[",cmd:()=>O(-1)},{key:"]",cmd:()=>O(1)},{key:"return",cmd:()=>K((P)=>!P)}]}));let R=()=>J.title?.trim()||jE(J.worktree),u=()=>{let P=Z().length;return P>0?`${F("history.sessionLabel")} ${G()+1}/${P}`:""};return(()=>{var P=W("box"),S=W("box"),g=W("text"),M=W("text"),T=W("box"),d=W("scrollbox"),i=W("box"),J0=W("text");return D(P,S),D(P,d),D(P,i),q(P,"flexDirection","column"),q(P,"flexGrow",1),D(S,g),D(S,M),D(S,T),q(S,"flexDirection","row"),q(S,"gap",1),q(S,"paddingLeft",1),q(S,"paddingRight",1),q(S,"flexShrink",0),q(g,"wrapMode","none"),U(g,()=>F("history.archivedTag")),q(M,"wrapMode","none"),U(M,R),U(S,b(Y0,{get when(){return u()},get children(){var E=W("text");return q(E,"wrapMode","none"),U(E,()=>`\xB7 ${u()}`),y((z0)=>q(E,"fg",z.textMuted,z0)),E}}),T),q(T,"flexGrow",1),U(S,b(Y0,{get when(){return V()>0},get children(){var E=W("text");return q(E,"wrapMode","none"),U(E,()=>`${V()} tok`),y((z0)=>q(E,"fg",z.textMuted,z0)),E}}),null),qz((E)=>{L=E},d),q(d,"flexGrow",1),q(d,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),U(d,b(Y0,{get when(){return N0(()=>!Y.loading)()&&!H.loading},get fallback(){return(()=>{var E=W("box"),z0=W("text");return D(E,z0),q(E,"paddingTop",1),q(E,"paddingLeft",1),U(z0,()=>F("history.loading")),y((q0)=>q(z0,"fg",z.textMuted,q0)),E})()},get children(){return b(Y0,{get when(){return f().length>0},get fallback(){return(()=>{var E=W("box"),z0=W("text");return D(E,z0),q(E,"paddingTop",1),q(E,"paddingLeft",1),U(z0,()=>F("history.empty")),y((q0)=>q(z0,"fg",z.textMuted,q0)),E})()},get children(){return b(Z1,{get each(){return f()},children:(E)=>b(LE,{msg:E,get results(){return j()},get expanded(){return B()}})})}})}})),D(i,J0),q(i,"flexDirection","row"),q(i,"paddingLeft",1),q(i,"paddingRight",1),q(i,"flexShrink",0),q(J0,"wrapMode","none"),U(J0,(()=>{var E=N0(()=>!!B());return()=>E()?F("history.hintExpanded"):F("history.hint")})()),y((E)=>{var{background:z0,backgroundElement:q0,warning:o}=z,B0=GX.BOLD,g0=z.accent,m=GX.BOLD,r=z.backgroundElement,c=z.textMuted;return z0!==E.e&&(E.e=q(P,"backgroundColor",z0,E.e)),q0!==E.t&&(E.t=q(S,"backgroundColor",q0,E.t)),o!==E.a&&(E.a=q(g,"fg",o,E.a)),B0!==E.o&&(E.o=q(g,"attributes",B0,E.o)),g0!==E.i&&(E.i=q(M,"fg",g0,E.i)),m!==E.n&&(E.n=q(M,"attributes",m,E.n)),r!==E.s&&(E.s=q(i,"backgroundColor",r,E.s)),c!==E.h&&(E.h=q(J0,"fg",c,E.h)),E},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0}),P})()}async function ME(J){await KJ({logContext:"history",providers:{kv:!1,focus:!1},setup:()=>({root:()=>b(FE,J)})})}var cf=3,df=120;var y3=C(()=>{w();w();w();w();w();w();w();w();w();QY();W1();h1();ZJ();MY();kJ()});function OE(J){return J.trim().split(/\s+/)[0]??""}function x3(J,z,Y,Z){let G=Q1(Y);if(J==="vim")return{bin:"vim",command:`vim ${G}`};if(J==="nvim")return{bin:"nvim",command:`nvim ${G}`};if(J==="nano")return{bin:"nano",command:`nano ${G}`};if(J==="emacs")return{bin:"emacs",command:`emacs ${G}`};let X=(z.trim()||(Z??"").trim()).trim();if(!X)return null;let Q=OE(X);if(!Q)return null;let H=X.includes(T3)?X.split(T3).join(G):`${X} ${G}`;return{bin:Q,command:H}}function AE(J,z,Y){let Z=Q1(z);return["f=$(mktemp 2>/dev/null)",`if [ -n "$f" ] && git show ${Q1(`HEAD:./${Y}`)} > "$f" 2>/dev/null; then`,` ${J} -d "$f" ${Z} -c 'setlocal nomodifiable' -c 'wincmd l'; r=$?`,"else",` ${J} ${Z}; r=$?`,"fi",'rm -f "$f" 2>/dev/null; exit $r'].join(`
279
+ `)}function RE(J,z){let Y=J.endsWith("/")?J:`${J}/`;return z.startsWith(Y)?z.slice(Y.length):null}async function gE(J){let z=bG(S1(BY)),Y=S1(cY)??"",Z=(process.env.VISUAL??process.env.EDITOR??"").trim();if(z!=="auto")return x3(z,Y,J,Z);if(Z)return x3("custom","",J,Z);let G=Q1(J);for(let X of t5)if(await u3(X))return{bin:X,command:`${X} ${G}`};return null}async function u3(J){try{return await Bun.spawn(["sh","-c",`command -v ${Q1(J)} >/dev/null 2>&1`],{stdin:"ignore",stdout:"ignore",stderr:"ignore"}).exited===0}catch{return!1}}async function NE(J,z){try{return await Bun.spawn(["git","diff","--quiet","HEAD","--",z],{cwd:J,stdin:"ignore",stdout:"ignore",stderr:"ignore",env:iJ()}).exited===1}catch{return!1}}async function E3(J,z,Y){let Z=await gE(Y);if(!Z)return!1;if(!await u3(Z.bin))return!1;let G=await CE(Z,z,Y);return await Cz(J,{cwd:z,command:G,name:kE(Y)}),!0}async function CE(J,z,Y){let{bin:Z,command:G}=J;if(Z!=="nvim"&&Z!=="vim")return G;if(G!==`${Z} ${Q1(Y)}`)return G;let X=RE(z,Y);if(!X)return G;if(!await NE(z,X))return G;return AE(Z,Y,X)}function kE(J){let z=J.slice(J.lastIndexOf("/")+1).trim();return z.length>0?z:"edit"}var T3="{file}";var w3=C(()=>{dY();C1();EH();c1();Lz()});async function nf(J,z,Y){if(!z)throw Error("git(): cwd is required");let Z=await SG(z,J,{signal:Y}),G=Z.status??-1;if(G!==0){let X=(Z.stderr??"").trim(),Q=(Z.stdout??"").trim();throw Error(`git ${J.join(" ")} (cwd=${z}) exited with code ${G}: ${X||Q||"(no output)"}`)}return Z.stdout??""}async function OW(J,z){let Z=(await nf(["ls-files","--cached","--others","--exclude-standard","--full-name"],J,z)).split(`
280
+ `).map((X)=>X.replace(/\r$/,"")),G=new Set;for(let X of Z)if(X.length>0)G.add(X);return Array.from(G).sort()}async function AW(J,z){let Y=await nf(["status","--porcelain","--untracked-files=all"],J,z),Z=m3(Y),G=new Map;try{let X=await nf(["diff","--no-color","--numstat","HEAD"],J,z);G=new Map(P3(X).map((Q)=>[Q.path,{added:Q.added,deleted:Q.deleted}]))}catch{try{let X=await nf(["diff","--no-color","--numstat","--cached"],J,z);G=new Map(P3(X).map((Q)=>[Q.path,{added:Q.added,deleted:Q.deleted}]))}catch{G=new Map}}return Z.map((X)=>{let Q=G.get(X.path);if(Q)return{...X,added:Q.added,deleted:Q.deleted};return X})}function P3(J){return Z6(J).map((z)=>({path:z.path,added:z.added,deleted:z.deleted}))}function h3(J){let z={name:"",path:"",isDir:!0,children:[]};for(let Y of J){if(!Y)continue;let Z=Y.split("/").filter((X)=>X.length>0);if(Z.length===0)continue;let G=z;for(let X=0;X<Z.length;X++){let Q=Z[X],f=X!==Z.length-1,j=G.children.find((V)=>V.name===Q&&V.isDir===f);if(!j)j={name:Q,path:Z.slice(0,X+1).join("/"),isDir:f,children:[]},G.children.push(j);G=j}}return v3(z),z}function v3(J){J.children.sort((z,Y)=>{if(z.isDir!==Y.isDir)return z.isDir?-1:1;return z.name.localeCompare(Y.name)});for(let z of J.children)v3(z)}function m3(J){let z=[];for(let Y of wH(J)){let Z;if(Y.x==="?"&&Y.y==="?")Z="?";else{let X=Y.y!==" "?Y.y:Y.x;if(X==="M"||X==="A"||X==="D"||X==="R"||X==="C"||X==="U")Z=X;else continue}let G=Y.path;if(G.length===0)continue;if(G.endsWith("/"))continue;z.push({path:G,status:Z})}return z}var RW=C(()=>{PH();hH()});function gW(J){U1(()=>({enabled:J.focused(),bindings:rY({"files.nav":(z,Y)=>{if((Y??0)%2===0)J.moveDown();else J.moveUp()},"files.hierarchy":(z,Y)=>{if((Y??0)%2===0)J.collapseOrParent();else J.expandOrDescend()},"files.tab":(z,Y)=>{let Z=J.currentTab(),G=xQ.indexOf(Z);if(G<0)return;let X=(Y??0)%2===0?-1:1,Q=xQ[(G+X+xQ.length)%xQ.length];if(Q)J.setTab(Q)},"files.open":()=>J.openCurrent(),"files.mention":()=>J.mentionCurrent?.(),"files.createPR":()=>J.createPR?.(),"files.openExternal":()=>J.openExternal(),"files.refresh":()=>J.refresh()})}))}var xQ;var NW=C(()=>{rG();kJ();xQ=["all","changes"]});import{spawn as c3}from"child_process";import{existsSync as bE}from"fs";import{platform as SE}from"os";function d3(J){if(!J)return;let z=SE();if(z==="linux"){if(bE("/proc/sys/fs/binfmt_misc/WSLInterop")||process.env.WSL_DISTRO_NAME){uQ("wslview",[J],()=>{let Y=c3("wslpath",["-w",J],{stdio:["ignore","pipe","ignore"]}),Z="";Y.stdout?.on("data",(G)=>{Z+=G.toString()}),Y.on("close",(G)=>{if(G===0)uQ("explorer.exe",[Z.trim()])})});return}uQ("xdg-open",[J]);return}if(z==="darwin"){uQ("open",[J]);return}if(z==="win32"){uQ("cmd.exe",["/c","start","",J]);return}}function uQ(J,z,Y){try{let Z=c3(J,z,{stdio:"ignore",detached:!0});Z.on("error",()=>Y?.()),Z.unref()}catch{Y?.()}}var n3=()=>{};function CW(J,z,Y,Z){for(let G of J.children)if(G.isDir){let X=z.has(G.path);if(Z.push({kind:"dir",path:G.path,name:G.name,depth:Y,expanded:X,hasChildren:G.children.length>0}),X)CW(G,z,Y+1,Z)}else Z.push({kind:"file",path:G.path,name:G.name,depth:Y})}function i3(J,z){return hf(J,z)}function l3(J){return J.map((z)=>({kind:"status",path:z.path,status:z.status,added:z.added,deleted:z.deleted}))}function IE(J){return`${J.kind}\x00${J.path}`}function yE(J,z){if(J.kind!==z.kind||J.path!==z.path)return!1;switch(J.kind){case"file":{let Y=z;return J.name===Y.name&&J.depth===Y.depth}case"dir":{let Y=z;return J.name===Y.name&&J.depth===Y.depth&&J.expanded===Y.expanded&&J.hasChildren===Y.hasChildren}case"status":{let Y=z;return J.status===Y.status&&J.added===Y.added&&J.deleted===Y.deleted}}}function $3(J,z){return Tf(J,z,IE,yE)}function a3(J,z){if(J===z)return!0;if(J==null||z==null)return!1;if(J.length!==z.length)return!1;for(let Y=0;Y<J.length;Y++)if(J[Y]!==z[Y])return!1;return!0}function _3(J,z){if(J===z)return!0;if(J==null||z==null)return!1;if(J.length!==z.length)return!1;for(let Y=0;Y<J.length;Y++){let Z=J[Y],G=z[Y];if(Z.path!==G.path||Z.status!==G.status||Z.added!==G.added||Z.deleted!==G.deleted)return!1}return!0}var p3=()=>{};import{watch as TE}from"fs";import{TextAttributes as EQ}from"@opentui/core";function xE(J){switch(J){case"M":return"warning";case"A":return"success";case"D":return"error";case"?":return"textMuted";case"R":case"C":case"U":return"info"}}function EE(J){let z=J.toLowerCase();if(z.includes("not a git repository"))return F("files.error.notGitRepo");if(z.includes("does not exist")||z.includes("enoent"))return F("files.error.pathMissing");if(z.includes("permission denied")||z.includes("eacces"))return F("files.error.permissionDenied");if(z.includes("git: not found")||z.includes("command not found"))return F("files.error.gitNotInstalled");let Y=J.indexOf(": ");if(Y>=0&&J.startsWith("git "))return J.slice(Y+2).trim()||F("files.error.gitFailed");return J.trim()||F("files.error.gitFailed")}function wE(J){switch(J){case"all":return F("files.tabs.all");case"changes":return F("files.tabs.changes")}}function kW(J){let{theme:z}=w0(),Y=az(),Z=()=>J.focused?J.focused():!0,[G,X]=p("all"),[Q,H]=p(0),[f,j]=p(0),[V,B]=p(null,{equals:a3}),[K,L]=p(null,{equals:_3}),[A,O]=p(null),[R,u]=p(new Set),P=0;async function S(r,c,N){let t=++P;if(c==null){B(null),L(null),O(null);return}O(null);try{if(r==="all"){let x=await OW(c,N);if(N?.aborted||t!==P||J.worktreePath()!==c)return;B(x)}else if(r==="changes"){let x=await AW(c,N);if(N?.aborted||t!==P||J.worktreePath()!==c)return;L(x)}}catch(x){if(N?.aborted)return;let n=x instanceof Error?x.message:String(x);if(t===P&&J.worktreePath()===c)O(n)}}_0(BJ(J.worktreePath,async(r)=>{B(null),L(null),O(null),H(0),u(new Set);let c=new AbortController;T1(()=>c.abort()),await S(G(),r,c.signal)})),_0(BJ(J.worktreePath,(r)=>{if(r==null)return;if(process.env.KOBE_FILETREE_WATCH!=="1")return;let c=null,N=null;try{N=TE(r,{recursive:!0},(t,x)=>{if(x==null)return;let n=x.toString();if(n===".git"||n.startsWith(".git/")||n.startsWith(".git\\"))return;if(n.startsWith("node_modules/")||n.startsWith("node_modules\\"))return;if(c!=null)clearTimeout(c);c=setTimeout(()=>{c=null,j((Q0)=>Q0+1)},500)}),N.on("error",()=>{})}catch{}T1(()=>{if(c!=null)clearTimeout(c);if(N!=null)N.close()})})),_0(BJ([G,f],async([r,c])=>{let N=J.worktreePath();if(N==null)return;H(0);let t=new AbortController;T1(()=>t.abort());let n=f()>0;if(r==="all"){if(V()==null||n)await S("all",N,t.signal)}else if(r==="changes"){if(K()==null||n)await S("changes",N,t.signal)}}));let g=U0(()=>{let r=V();if(r==null)return null;return h3(r)}),M=U0((r)=>{let c=[];if(G()==="all"){let N=g();if(N!=null)CW(N,R(),0,c)}else if(G()==="changes"){let N=K();if(N!=null)c.push(...l3(N))}return $3(r??[],c)},[]),T=U0(()=>{let r=0,c=0;for(let N of M()){if(N.kind!=="status")continue;if(N.added!=null)r=Math.max(r,String(N.added).length+1);if(N.deleted!=null)c=Math.max(c,String(N.deleted).length+1)}return{added:r,deleted:c}}),d=U0(()=>{let r=T(),c=(r.added>0?r.added+1:0)+(r.deleted>0?r.deleted+1:0);return Math.max(8,Y().width-6-c)});function i(){let r=M();if(r.length===0)return;H(Math.min(Q()+1,r.length-1))}function J0(){if(M().length===0)return;H(Math.max(Q()-1,0))}function E(){let r=M(),c=Q(),N=r[c];if(!N)return;if(N.kind!=="dir")return;if(!N.expanded&&N.hasChildren)u((t)=>{let x=new Set(t);return x.add(N.path),x});else if(N.expanded){if(c+1<r.length)H(c+1)}}function z0(){if(G()!=="all")return;let r=M(),c=Q(),N=r[c];if(!N)return;if(N.kind==="dir"&&N.expanded){u((x)=>{let n=new Set(x);return n.delete(N.path),n});return}if(N.kind!=="dir"&&N.kind!=="file")return;let t=N.depth-1;if(t<0)return;for(let x=c-1;x>=0;x--){let n=r[x];if(!n)continue;if(n.kind==="dir"&&n.depth===t){H(x);return}}}function q0(){let r=M(),c=Q();if(c<0||c>=r.length)return;let N=r[c];if(!N)return;if(N.kind==="dir"){u((t)=>{let x=new Set(t);if(x.has(N.path))x.delete(N.path);else x.add(N.path);return x});return}J.onOpenFile(N.path)}function o(){let r=M(),c=Q();if(c<0||c>=r.length)return;let N=r[c];if(!N||N.kind==="dir")return;J.onMention?.(N.path)}function B0(){j((r)=>r+1),J.onRefresh?.()}function g0(){let r=M(),c=Q();if(c<0||c>=r.length)return;let N=r[c];if(!N||N.kind==="dir")return;let t=J.worktreePath();if(!t)return;let x=`${t}/${N.path}`;d3(x)}gW({focused:Z,moveDown:i,moveUp:J0,setTab:(r)=>X(r),currentTab:G,openCurrent:q0,mentionCurrent:o,createPR:J.onCreatePR,openExternal:g0,refresh:B0,expandOrDescend:E,collapseOrParent:z0});let m;return _0(BJ([Q,M],([r,c])=>{if(!m)return;if(c.length===0)return;let N=m.scrollTop,t=m.viewport.height;if(t<=0)return;if(r<N)m.scrollTo({x:0,y:r});else if(r>=N+t)m.scrollTo({x:0,y:r-t+1})})),(()=>{var r=W("box"),c=W("box"),N=W("box"),t=W("scrollbox");return D(r,c),D(r,t),q(r,"flexDirection","column"),q(r,"flexGrow",1),q(r,"paddingTop",1),q(r,"paddingBottom",1),q(r,"paddingLeft",0),q(r,"paddingRight",0),U(r,b(Y0,{get when(){return J.onZenToggle||J.onCreatePR},get children(){var x=W("box");return q(x,"flexDirection","row"),q(x,"justifyContent","flex-end"),q(x,"gap",2),q(x,"paddingBottom",1),q(x,"flexShrink",0),U(x,b(Y0,{get when(){return J.onZenToggle},get children(){var n=W("box"),Q0=W("text"),H0=W("text");return D(n,Q0),D(n,H0),q(n,"flexDirection","row"),q(n,"gap",1),q(n,"onMouseUp",()=>J.onZenToggle?.()),D(Q0,T0("[~]")),q(Q0,"wrapMode","none"),q(H0,"wrapMode","none"),U(H0,()=>F("files.actions.zen")),y((F0)=>{var M0=z.accent,o0=EQ.BOLD,S0=z.text;return M0!==F0.e&&(F0.e=q(Q0,"fg",M0,F0.e)),o0!==F0.t&&(F0.t=q(Q0,"attributes",o0,F0.t)),S0!==F0.a&&(F0.a=q(H0,"fg",S0,F0.a)),F0},{e:void 0,t:void 0,a:void 0}),n}}),null),U(x,b(Y0,{get when(){return J.onCreatePR},get children(){var n=W("box"),Q0=W("text"),H0=W("text");return D(n,Q0),D(n,H0),q(n,"flexDirection","row"),q(n,"gap",1),q(n,"onMouseUp",()=>J.onCreatePR?.()),D(Q0,T0("[P]")),q(Q0,"wrapMode","none"),q(H0,"wrapMode","none"),U(H0,()=>F("files.actions.createPR")),y((F0)=>{var M0=z.accent,o0=EQ.BOLD,S0=z.text;return M0!==F0.e&&(F0.e=q(Q0,"fg",M0,F0.e)),o0!==F0.t&&(F0.t=q(Q0,"attributes",o0,F0.t)),S0!==F0.a&&(F0.a=q(H0,"fg",S0,F0.a)),F0},{e:void 0,t:void 0,a:void 0}),n}}),null),x}}),c),D(c,N),q(c,"flexDirection","row"),q(c,"justifyContent","space-between"),q(c,"paddingBottom",0),q(c,"flexShrink",0),q(N,"flexDirection","row"),q(N,"gap",2),U(N,b(Z1,{each:uE,children:(x)=>{let n=()=>G()===x;return(()=>{var Q0=W("text");return q(Q0,"wrapMode","none"),q(Q0,"onMouseUp",()=>X(x)),U(Q0,()=>wE(x)),y((H0)=>{var F0=n()?z.primary:z.textMuted,M0=n()?EQ.BOLD:void 0;return F0!==H0.e&&(H0.e=q(Q0,"fg",F0,H0.e)),M0!==H0.t&&(H0.t=q(Q0,"attributes",M0,H0.t)),H0},{e:void 0,t:void 0}),Q0})()}})),U(c,b(Y0,{get when(){return J.cornerBadge?.()},children:(x)=>(()=>{var n=W("text");return q(n,"wrapMode","none"),U(n,()=>x().text),y((Q0)=>{var H0=x().active?z.accent:z.textMuted,F0=x().active?EQ.BOLD:void 0;return H0!==Q0.e&&(Q0.e=q(n,"fg",H0,Q0.e)),F0!==Q0.t&&(Q0.t=q(n,"attributes",F0,Q0.t)),Q0},{e:void 0,t:void 0}),n})()}),null),U(r,b(Y0,{get when(){return G()==="changes"},get children(){var x=W("box"),n=W("text");return D(x,n),q(x,"flexDirection","column"),q(x,"paddingBottom",1),q(x,"flexShrink",0),q(x,"gap",0),q(n,"wrapMode","none"),U(n,()=>F("files.legend.changes")),y((Q0)=>q(n,"fg",z.textMuted,Q0)),x}}),t),U(r,b(Y0,{get when(){return G()!=="changes"},get children(){var x=W("box");return q(x,"flexDirection","row"),q(x,"paddingBottom",1),q(x,"flexShrink",0),x}}),t),qz((x)=>{m=x},t),q(t,"flexGrow",1),q(t,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),U(t,b(Y0,{get when(){return J.worktreePath()==null},get children(){var x=W("box"),n=W("text");return D(x,n),q(x,"paddingTop",1),q(x,"paddingLeft",1),U(n,()=>F("files.empty.noTask")),y((Q0)=>q(n,"fg",z.textMuted,Q0)),x}}),null),U(t,b(Y0,{get when(){return N0(()=>J.worktreePath()!=null)()&&A()!=null},get children(){var x=W("box"),n=W("text"),Q0=W("text");return D(x,n),D(x,Q0),q(x,"paddingTop",1),q(x,"paddingLeft",1),q(x,"flexDirection","column"),q(x,"gap",0),q(n,"wrapMode","word"),U(n,()=>EE(A()??"")),q(Q0,"wrapMode","word"),U(Q0,()=>F("files.error.retryHint")),y((H0)=>{var{error:F0,textMuted:M0}=z;return F0!==H0.e&&(H0.e=q(n,"fg",F0,H0.e)),M0!==H0.t&&(H0.t=q(Q0,"fg",M0,H0.t)),H0},{e:void 0,t:void 0}),x}}),null),U(t,b(Y0,{get when(){return N0(()=>J.worktreePath()!=null&&A()==null&&M().length===0)()&&(G()==="all"&&V()!=null||G()==="changes"&&K()!=null)},get children(){var x=W("box"),n=W("text");return D(x,n),q(x,"paddingTop",1),q(x,"paddingLeft",1),U(n,(()=>{var Q0=N0(()=>G()==="all");return()=>Q0()?F("files.empty.noFiles"):F("files.empty.noChanges")})()),y((Q0)=>q(n,"fg",z.textMuted,Q0)),x}}),null),U(t,b(Y0,{get when(){return N0(()=>J.worktreePath()!=null&&A()==null)()&&M().length>0},get children(){var x=W("box");return q(x,"flexShrink",0),q(x,"gap",0),q(x,"paddingRight",1),U(x,b(Z1,{get each(){return M()},children:(n,Q0)=>{let H0=()=>Q0()===Q(),F0=(()=>{var Z0=W("text");return q(Z0,"wrapMode","none"),U(Z0,()=>H0()?"\u258C":" "),y((D0)=>q(Z0,"fg",H0()?z.focusAccent:void 0,D0)),Z0})(),M0=()=>H0()?z.backgroundElement:void 0;if(n.kind==="dir"){let Z0=" ".repeat(n.depth),D0=n.expanded?"\u25BE":"\u25B8";return(()=>{var P0=W("box"),G1=W("box"),c0=W("text");return D(P0,G1),q(P0,"flexDirection","row"),q(P0,"gap",0),q(P0,"onMouseUp",()=>{H(Q0()),u((u0)=>{let k1=new Set(u0);if(k1.has(n.path))k1.delete(n.path);else k1.add(n.path);return k1})}),U(P0,F0,G1),D(G1,c0),q(G1,"flexGrow",1),q(G1,"paddingRight",1),q(c0,"wrapMode","none"),U(c0,()=>`${Z0}${D0} ${n.name}/`),y((u0)=>{var k1=M0(),s=z.textMuted,j0=EQ.BOLD;return k1!==u0.e&&(u0.e=q(P0,"backgroundColor",k1,u0.e)),s!==u0.t&&(u0.t=q(c0,"fg",s,u0.t)),j0!==u0.a&&(u0.a=q(c0,"attributes",j0,u0.a)),u0},{e:void 0,t:void 0,a:void 0}),P0})()}if(n.kind==="file"){let Z0=" ".repeat(n.depth);return(()=>{var D0=W("box"),P0=W("box"),G1=W("text");return D(D0,P0),q(D0,"flexDirection","row"),q(D0,"gap",0),q(D0,"onMouseUp",()=>{H(Q0()),J.onOpenFile(n.path)}),U(D0,F0,P0),D(P0,G1),q(P0,"flexGrow",1),q(P0,"paddingRight",1),q(G1,"wrapMode","none"),U(G1,()=>`${Z0} ${n.name}`),y((c0)=>{var u0=M0(),k1=z.text;return u0!==c0.e&&(c0.e=q(D0,"backgroundColor",u0,c0.e)),k1!==c0.t&&(c0.t=q(G1,"fg",k1,c0.t)),c0},{e:void 0,t:void 0}),D0})()}let o0=xE(n.status),S0=()=>{switch(o0){case"success":return z.success;case"warning":return z.warning;case"error":return z.error;case"info":return z.info;default:return z.textMuted}},p0=T(),h=n.added==null?" ".repeat(p0.added):`+${n.added}`.padStart(p0.added),L0=n.deleted==null?" ".repeat(p0.deleted):`-${n.deleted}`.padStart(p0.deleted);return(()=>{var Z0=W("box"),D0=W("box"),P0=W("text"),G1=W("text");return D(Z0,D0),q(Z0,"flexDirection","row"),q(Z0,"gap",0),q(Z0,"onMouseUp",()=>{H(Q0()),J.onOpenFile(n.path)}),U(Z0,F0,D0),D(D0,P0),D(D0,G1),q(D0,"flexDirection","row"),q(D0,"flexGrow",1),q(D0,"gap",1),q(D0,"paddingRight",1),q(P0,"wrapMode","none"),U(P0,()=>n.status),q(G1,"wrapMode","none"),q(G1,"flexGrow",1),U(G1,()=>i3(n.path,d())),U(D0,b(Y0,{get when(){return p0.added>0},get children(){var c0=W("text");return q(c0,"wrapMode","none"),U(c0,h),y((u0)=>q(c0,"fg",z.success,u0)),c0}}),null),U(D0,b(Y0,{get when(){return p0.deleted>0},get children(){var c0=W("text");return q(c0,"wrapMode","none"),U(c0,L0),y((u0)=>q(c0,"fg",z.error,u0)),c0}}),null),y((c0)=>{var u0=M0(),k1=S0(),s=z.text;return u0!==c0.e&&(c0.e=q(Z0,"backgroundColor",u0,c0.e)),k1!==c0.t&&(c0.t=q(P0,"fg",k1,c0.t)),s!==c0.a&&(c0.a=q(G1,"fg",s,c0.a)),c0},{e:void 0,t:void 0,a:void 0}),Z0})()}})),x}}),null),U(r,b(Y0,{get when(){return J.worktreePath()!=null},get children(){var x=W("box"),n=W("text");return D(x,n),q(x,"flexDirection","row"),q(x,"paddingTop",1),q(x,"flexShrink",0),q(n,"wrapMode","none"),U(n,()=>F("files.footer.openHint")),y((Q0)=>q(n,"fg",z.textMuted,Q0)),x}}),null),r})()}var uE;var r3=C(()=>{w();w();w();w();w();w();w();w();w();ZJ();w();W1();h1();RW();NW();n3();p3();uE=["all","changes"]});var o3=C(()=>{r3();RW();NW()});function t3(J,z){if(z<3)return 2500;return Math.min(J*2,20000)}function e3(J,z,Y){if(z)return 1500;if(Y==="running")return 1500;return Math.min(J*2,6000)}var s3=2500,wQ=1500;import{promises as PE}from"fs";import hE from"path";async function lf(J,z){let Y=new AbortController,Z=setTimeout(()=>Y.abort(),vE);try{let G=await qY("git",z,{cwd:J,env:iJ(),signal:Y.signal});if(Y.signal.aborted)return null;if(G.status!==0)return null;return G.stdout.trim()}finally{clearTimeout(Z)}}async function mE(J){return await lf(J,["rev-parse","--abbrev-ref","HEAD"])||"HEAD"}async function cE(J){let z=await lf(J,["symbolic-ref","refs/remotes/origin/HEAD","--short"]);if(!z)return"main";return z.startsWith("origin/")?z.slice(7):z}async function dE(J){let z=await lf(J,["rev-parse","--abbrev-ref","@{u}"]);return z!==null&&z.length>0}async function nE(J){let z=await lf(J,["status","--porcelain"]);if(!z)return 0;return z.split(`
281
+ `).filter((Y)=>Y.length>0).length}async function iE(J){let[z,Y,Z,G]=await Promise.all([mE(J),cE(J),dE(J),nE(J)]);return{branch:z,targetBranch:Y,hasUpstream:Z,dirtyCount:G}}function lE(J){if(J<=0)return"There are no uncommitted changes.";if(J===1)return"There is 1 uncommitted change.";return`There are ${J} uncommitted changes.`}function $E(J){return J?"The current branch tracks an upstream.":"There is no upstream branch yet."}function aE(J,z){let Y={branch:z.branch,targetBranch:z.targetBranch,dirtyCountSentence:lE(z.dirtyCount),upstreamSentence:$E(z.hasUpstream)};return J.replace(/\{\{([a-zA-Z][a-zA-Z0-9_]*)\}\}/g,(Z,G)=>Object.hasOwn(Y,G)?Y[G]:Z)}async function _E(J){let z=hE.join(J,".kobe","pr-instructions.md");try{let Y=await PE.readFile(z,"utf8");return Y.length>0?Y:JO}catch{return JO}}async function zO(J){let[z,Y]=await Promise.all([_E(J),iE(J)]);return aE(z,Y)}var vE=5000,JO=`The user likes the current state of the code.
282
282
 
283
283
  {{dirtyCountSentence}}
284
284
  The current branch is {{branch}}.
@@ -295,16 +295,16 @@ Follow these steps to create a PR:
295
295
  - Push to origin.
296
296
  - 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.
297
297
 
298
- If any of these steps fail, ask the user for help.`;var P3=C(()=>{dY();yq()});var NW={};q1(NW,{startOpsPreview:()=>EE,startOpsHost:()=>SE});import{createHash as RE}from"crypto";import{SyntaxStyle as gE}from"@opentui/core";function kE(J){let{theme:z}=w0(),[Y,Z]=p(null),G=!1;GJ(()=>{(async()=>{let g=await Mf({logTag:"ops-activity",channels:["transcript.activity"]});if(!g)return;if(G){g.dispose();return}Z(g)})()}),S1(()=>{G=!0,Y()?.dispose()});let X=()=>Y()?.transcriptActivitySignal()()??null,q=()=>X()?.get(J.worktree)??null,[H,f]=p(0),[j,V]=p(0),B=!1;_0(()=>{let g=X();if(!g)return;let M=g.get(J.worktree)?.mtimeMs??0;if(!B&&M>0)B=!0,f(M);V(M)}),_0(()=>{if(X()!==null)return;let g=!1,M,T=T3,$=0,d=0;async function e(){try{let u=await tZ(J.vendor,J.worktree);if(g)return;if(!B)B=!0,f(u),d=u;if(u>d)d=u,$=0;else $++;V(u)}catch{$++}finally{if(!g)T=x3(T,$),M=setTimeout(()=>void e(),T)}}e(),S1(()=>{if(g=!0,M)clearTimeout(M)})});let K=()=>B&&j()>H(),L=()=>K()?{text:F("ops.badge.newActivity"),active:!0}:null;function A(){f(j())}GJ(()=>{if(!J.targetPane)return;let g=LX(J.vendor),M=!1,T=null,$=!1,d="",e=!1,u=0,z0=null,Q0=wq,o=0,K0,N0=()=>X()!==null;async function h(t){if(t===z0)return;z0=t,await hY(J.targetPane,CE,t)}async function s(){if(N0())return q()?.completionId??null;return(await g.latestCompletion(J.worktree))?.id??null}async function v(){try{d=h3(await WG(J.targetPane,80)),T=await s(),$=!0,await h(g.supportsCompletionMarkers()?"idle":"unknown")}catch{}}async function k(){let t=N0();try{let I=h3(await WG(J.targetPane,80));if(M)return;if(t&&!$)T=q()?.completionId??null,$=!0;let n=t?q()?.mtimeMs??0:0,q0=n>o;if(n>o)o=n;if(I!==d)d=I,e=!0,u=0,await h(g.supportsCompletionMarkers()?"running":"unknown");else if(e)u++;if(g.supportsCompletionMarkers()&&e&&u>=NE){let H0=await s();if(!M&&H0!==null&&H0!==T)T=H0,e=!1,u=0,await h("done")}Q0=t?u3(Q0,q0,z0):wq}catch{Q0=wq}finally{if(!M)K0=setTimeout(()=>void k(),Q0)}}v(),K0=setTimeout(()=>void k(),wq),S1(()=>{if(M=!0,K0)clearTimeout(K0)})});function O(g){if(!J.taskId)return;gz(C1(J.taskId),{cwd:J.worktree,command:nV({worktree:J.worktree,relPath:g,cliInvocation:b1()}),name:bE(g)})}function R(g){if(!J.taskId){O(g);return}let M=`${J.worktree}/${g}`;K3(C1(J.taskId),J.worktree,M).then((T)=>{if(!T)O(g)})}function x(g){if(!J.targetPane)return;MH(J.targetPane,`@${g} `)}async function w(){if(!J.targetPane)return;let g=await w3(J.worktree);await MH(J.targetPane,g),await uX(J.targetPane,"Enter")}function S(){if(!J.taskId)return;let g=C1(J.taskId),M=b1(),T=`${i1()}${bJ(M)} layout --session ${Z1(g)} --action zen-toggle`;c0(["run-shell","-b",T])}return(()=>{var g=W("box");return Q(g,"flexDirection","column"),Q(g,"flexGrow",1),U(g,b(gW,{worktreePath:()=>J.worktree,focused:()=>!0,onOpenFile:R,onMention:x,onCreatePR:()=>void w(),get onZenToggle(){return J.taskId?S:void 0},cornerBadge:L,onRefresh:A})),y((M)=>Q(g,"backgroundColor",z.background,M)),g})()}function bE(J){let z=J.lastIndexOf("/");return z>=0?J.slice(z+1):J}function h3(J){return RE("sha1").update(J).digest("hex")}async function SE(J){await KJ({logContext:"ops",providers:{kv:!1,focus:!1},setup:()=>({root:()=>b(kE,J)})})}function IE(J){switch(J.slice(J.lastIndexOf(".")+1).toLowerCase()){case"ts":case"tsx":case"mts":case"cts":return"typescript";case"js":case"jsx":case"mjs":case"cjs":return"javascript";case"md":case"markdown":return"markdown";default:return}}async function yE(J,z){let Y=await SG(J,["diff","HEAD","--",z]);return Y.status===0?Y.stdout:""}async function TE(J,z){return await v5(J,z)??""}function xE(J){let z={fg:J.primary},Y={fg:J.success},Z={fg:J.info},G={fg:J.warning},X={fg:J.accent},q={fg:J.textMuted,italic:!0},H={fg:J.textMuted},f={fg:J.text};return gE.fromStyles({keyword:z,"keyword.function":z,"keyword.return":z,"keyword.import":z,"keyword.exception":z,"keyword.conditional":z,"keyword.repeat":z,"keyword.operator":z,"keyword.modifier":z,"keyword.type":z,string:Y,"string.escape":Y,"string.regexp":Y,"string.special":Y,"character.special":Y,comment:q,"comment.documentation":q,function:Z,"function.call":Z,"function.method":Z,"function.builtin":Z,constructor:Z,type:G,"type.builtin":G,constant:X,"constant.builtin":X,boolean:X,number:X,operator:H,"punctuation.bracket":H,"punctuation.delimiter":H,"punctuation.special":H,variable:f,"variable.member":f,"variable.parameter":f,"variable.builtin":X,property:f,attribute:G,label:f,module:f})}function uE(J){let{theme:z}=w0(),Y=xE(z),Z=IE(J.relPath),[G]=WZ(()=>J.relPath,async(X)=>{let q=await yE(J.worktree,X);if(q.trim().length>0)return{kind:"diff",text:q};return{kind:"code",text:await TE(J.worktree,X)}});return K1(()=>({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"),H=W("text"),f=W("text"),j=W("text"),V=W("box");return D(X,q),D(X,V),Q(X,"flexDirection","column"),Q(X,"flexGrow",1),D(q,H),D(q,f),D(q,j),Q(q,"flexDirection","row"),Q(q,"gap",1),Q(q,"paddingLeft",1),Q(q,"paddingRight",1),U(H,()=>J.relPath),U(f,(()=>{var B=S0(()=>G()?.kind==="diff");return()=>B()?F("ops.preview.diffVsHead"):F("ops.preview.file")})()),U(j,()=>F("ops.preview.closeHint")),Q(V,"flexGrow",1),U(V,b(Y0,{get when(){return G()},get fallback(){return(()=>{var B=W("text");return U(B,()=>F("ops.preview.loading")),y((K)=>Q(B,"fg",z.textMuted,K)),B})()},children:(B)=>b(Y0,{get when(){return B().kind==="diff"},get fallback(){return(()=>{var K=W("code");return Q(K,"filetype",Z),Q(K,"syntaxStyle",Y),y((L)=>Q(K,"content",B().text,L)),K})()},get children(){var K=W("diff");return Q(K,"view","unified"),Q(K,"filetype",Z),Q(K,"syntaxStyle",Y),Q(K,"showLineNumbers",!0),y((L)=>Q(K,"diff",B().text,L)),K}})})),y((B)=>{var{background:K,accent:L,textMuted:A,textMuted:O}=z;return K!==B.e&&(B.e=Q(X,"backgroundColor",K,B.e)),L!==B.t&&(B.t=Q(H,"fg",L,B.t)),A!==B.a&&(B.a=Q(f,"fg",A,B.a)),O!==B.o&&(B.o=Q(j,"fg",O,B.o)),B},{e:void 0,t:void 0,a:void 0,o:void 0}),X})()}async function EE(J){await KJ({providers:{kv:!1,focus:!1},setup:()=>({root:()=>b(uE,J)})})}var NE=2,CE="@kobe_tab_state";var CW=C(()=>{E();E();E();E();E();E();E();YY();FQ();MQ();v1();U3();Uz();PH();W1();c9();E1();ZJ();DY();gJ();y3();KZ();P3()});var d3={};q1(d3,{startDirectTmux:()=>PE,chooseInitialTask:()=>c3});import{resolve as v3}from"path";function c3(J,z={}){let Y=(q)=>q?J.find((H)=>H.id===q):void 0,Z=Y(z.activeTaskId);if(Z)return Z;let G=Y(z.persistedTaskId);if(G)return G;if(z.cwdRepo){let q=J.find((H)=>H.kind==="main"&&H.repo===z.cwdRepo);if(q)return q}let X=J.filter((q)=>!q.archived);return X.find((q)=>q.pinned)??X[0]??J[0]}async function m3(J){if(J.length===0)return null;try{return await Bun.spawn(J,{stdin:"inherit",stdout:"inherit",stderr:"inherit",env:process.env}).exited}catch{return null}}async function wE(J){Y8();let z=[...CJ()];if(z.length===0)z=[oz(v3(process.cwd())).path];for(let Y of z)try{await J.ensureMainTask(Y)}catch(Z){console.error(`[kobe] ensureMainTask failed for ${Y}:`,Z)}return z[0]??v3(process.cwd())}async function PE(){if(oq("gui"),Promise.resolve().then(() => (X9(),G9)).then((Y)=>Y.ensureGlobalKobeHooks()),!await mz()){console.error("kobe: tmux not found on PATH \u2014 install tmux to use kobe 0.6 direct mode"),process.exitCode=1;return}let J=await kz(),z=new FJ(J,{role:"gui"});try{process.env.KOBE_DAEMON_SOCKET_PATH=J.socketPath,await z.init();let Y=await wE(z),Z=c3(z.listTasks(),{activeTaskId:z.activeTaskSignal()(),persistedTaskId:N1("lastSelectedTaskId"),cwdRepo:Y});if(!Z){let B=await OH();if(await gZ(),await WH(B),await FH(B),await m3(NG(B))===null)console.error("kobe: failed to attach to the kobe-home session"),process.exitCode=1;return}let G=Z.worktreePath||await z.ensureWorktree(Z.id),X=C1(Z.id);await z.setActiveTask(Z.id).catch(()=>{}),e1("lastSelectedTaskId",Z.id);let q=Z.vendor;if(Z.kind==="main"){let K=await dj(X)??uJ(N1("lastSelectedVendor"),EJ());if(K!==Z.vendor)await z.setVendor(Z.id,K).catch(()=>{}),q=K}let H=IG(Z.repo,G,{kind:"repo-init"});if(!await pX({name:X,cwd:G,command:vJ(q),taskId:Z.id,vendor:q,repo:Z.repo,launchInit:H})){console.error(`kobe: tmux session ${X} failed to start (check the daemon log)`),process.exitCode=1;return}await gZ(),await WH(X),await FH(X);let j=await m3(NG(X));if(j===null){console.error(`kobe: failed to attach to tmux session ${X}`),process.exitCode=1;return}if(j!==0&&!await V1(X)){console.error(`kobe: tmux session ${X} ended unexpectedly (attach exited ${j})`),process.exitCode=j;return}let V=z.getTask(Z.id);if(V&&V.title===wz&&V.worktreePath)try{let B=await eZ(V.worktreePath,V.vendor);if(B)await z.setTitle(V.id,B)}catch(B){console.error("[kobe] auto-title failed:",B)}}finally{z.dispose()}}var n3=C(()=>{GZ();RJ();_Y();eJ();gQ();kX();yG();A1();v1();a1();XH();PY();zJ()});var i3={};q1(i3,{startTui:()=>hE});async function hE(){jD();let{startDirectTmux:J}=await Promise.resolve().then(() => (n3(),d3));await J()}var l3=C(()=>{Yf()});nf();a1();import{resolve as bW}from"path";AJ();function nW(){return[`kobe ${r0}`,"","Usage: kobe [command] [options]","","Run with no command to launch the TUI.","","Commands:"," web [options] Launch the browser dashboard"," completions <shell> Generate shell completion script (bash/zsh/fish)"," add [path] Save a repo path for the new-task picker"," remove [path] Forget a saved project (inverse of add; non-destructive)"," adopt [glob] Import existing git worktrees as tasks"," export [--csv|--json] Print the task list (json/csv/table; daemon-free)"," repo <verb> Per-repo init script + first prompt (show|set|unset)"," api <verb> Scriptable RPC surface for agents (see `kobe api --help`)"," daemon <verb> Manage the daemon (start|stop|status|restart)"," theme <verb> Manage user themes (list|add|remove)"," skill <verb> Install the kobe agent skill (install|status|command)"," feedback Send feedback to GitHub Discussions"," update [target] Self-update kobe"," doctor Diagnose daemon / tmux / state (read-only)"," reset [--hard] Recover a wedged install"," reload Restart Tasks/Ops panes in place (engine untouched)"," kill-sessions Tear down kobe's tmux server (dev reset)","","Options:"," -v, --version Print version"," -h, --help Print this help"].join(`
299
- `)}var $3=`Usage: kobe add [path]
298
+ If any of these steps fail, ask the user for help.`;var YO=C(()=>{dY();yQ()});var bW={};q1(bW,{startOpsPreview:()=>Qw,startOpsHost:()=>Jw});import{createHash as pE}from"crypto";import{SyntaxStyle as rE}from"@opentui/core";function tE(J){let{theme:z}=w0(),[Y,Z]=p(null),G=!1;QJ(()=>{(async()=>{let g=await Of({logTag:"ops-activity",channels:["transcript.activity"]});if(!g)return;if(G){g.dispose();return}Z(g)})()}),T1(()=>{G=!0,Y()?.dispose()});let X=()=>Y()?.transcriptActivitySignal()()??null,Q=()=>X()?.get(J.worktree)??null,[H,f]=p(0),[j,V]=p(0),B=!1;_0(()=>{let g=X();if(!g)return;let M=g.get(J.worktree)?.mtimeMs??0;if(!B&&M>0)B=!0,f(M);V(M)}),_0(()=>{if(X()!==null)return;let g=!1,M,T=s3,d=0,i=0;async function J0(){try{let E=await tZ(J.vendor,J.worktree);if(g)return;if(!B)B=!0,f(E),i=E;if(E>i)i=E,d=0;else d++;V(E)}catch{d++}finally{if(!g)T=t3(T,d),M=setTimeout(()=>void J0(),T)}}J0(),T1(()=>{if(g=!0,M)clearTimeout(M)})});let K=()=>B&&j()>H(),L=()=>K()?{text:F("ops.badge.newActivity"),active:!0}:null;function A(){f(j())}QJ(()=>{if(!J.targetPane)return;let g=LX(J.vendor),M=!1,T=null,d=!1,i="",J0=!1,E=0,z0=null,q0=wQ,o=0,B0,g0=()=>X()!==null;async function m(t){if(t===z0)return;z0=t,await hY(J.targetPane,sE,t)}async function r(){if(g0())return Q()?.completionId??null;return(await g.latestCompletion(J.worktree))?.id??null}async function c(){try{i=ZO(await WG(J.targetPane,80)),T=await r(),d=!0,await m(g.supportsCompletionMarkers()?"idle":"unknown")}catch{}}async function N(){let t=g0();try{let x=ZO(await WG(J.targetPane,80));if(M)return;if(t&&!d)T=Q()?.completionId??null,d=!0;let n=t?Q()?.mtimeMs??0:0,Q0=n>o;if(n>o)o=n;if(x!==i)i=x,J0=!0,E=0,await m(g.supportsCompletionMarkers()?"running":"unknown");else if(J0)E++;if(g.supportsCompletionMarkers()&&J0&&E>=oE){let H0=await r();if(!M&&H0!==null&&H0!==T)T=H0,J0=!1,E=0,await m("done")}q0=t?e3(q0,Q0,z0):wQ}catch{q0=wQ}finally{if(!M)B0=setTimeout(()=>void N(),q0)}}c(),B0=setTimeout(()=>void N(),wQ),T1(()=>{if(M=!0,B0)clearTimeout(B0)})});function O(g){if(!J.taskId)return;Cz(I1(J.taskId),{cwd:J.worktree,command:X7({worktree:J.worktree,relPath:g,cliInvocation:y1()}),name:eE(g)})}function R(g){if(!J.taskId){O(g);return}let M=`${J.worktree}/${g}`;E3(I1(J.taskId),J.worktree,M).then((T)=>{if(!T)O(g)})}function u(g){if(!J.targetPane)return;OH(J.targetPane,`@${g} `)}async function P(){if(!J.targetPane)return;let g=await zO(J.worktree);await OH(J.targetPane,g),await uX(J.targetPane,"Enter")}function S(){if(!J.taskId)return;let g=I1(J.taskId),M=y1(),T=`${l1()}${yJ(M)} layout --session ${Q1(g)} --action zen-toggle`;d0(["run-shell","-b",T])}return(()=>{var g=W("box");return q(g,"flexDirection","column"),q(g,"flexGrow",1),U(g,b(kW,{worktreePath:()=>J.worktree,focused:()=>!0,onOpenFile:R,onMention:u,onCreatePR:()=>void P(),get onZenToggle(){return J.taskId?S:void 0},cornerBadge:L,onRefresh:A})),y((M)=>q(g,"backgroundColor",z.background,M)),g})()}function eE(J){let z=J.lastIndexOf("/");return z>=0?J.slice(z+1):J}function ZO(J){return pE("sha1").update(J).digest("hex")}async function Jw(J){await KJ({logContext:"ops",providers:{kv:!1,focus:!1},setup:()=>({root:()=>b(tE,J)})})}function zw(J){switch(J.slice(J.lastIndexOf(".")+1).toLowerCase()){case"ts":case"tsx":case"mts":case"cts":return"typescript";case"js":case"jsx":case"mjs":case"cjs":return"javascript";case"md":case"markdown":return"markdown";default:return}}async function Yw(J,z){let Y=await SG(J,["diff","HEAD","--",z]);return Y.status===0?Y.stdout:""}async function Zw(J,z){return await G6(J,z)??""}function Gw(J){let z={fg:J.primary},Y={fg:J.success},Z={fg:J.info},G={fg:J.warning},X={fg:J.accent},Q={fg:J.textMuted,italic:!0},H={fg:J.textMuted},f={fg:J.text};return rE.fromStyles({keyword:z,"keyword.function":z,"keyword.return":z,"keyword.import":z,"keyword.exception":z,"keyword.conditional":z,"keyword.repeat":z,"keyword.operator":z,"keyword.modifier":z,"keyword.type":z,string:Y,"string.escape":Y,"string.regexp":Y,"string.special":Y,"character.special":Y,comment:Q,"comment.documentation":Q,function:Z,"function.call":Z,"function.method":Z,"function.builtin":Z,constructor:Z,type:G,"type.builtin":G,constant:X,"constant.builtin":X,boolean:X,number:X,operator:H,"punctuation.bracket":H,"punctuation.delimiter":H,"punctuation.special":H,variable:f,"variable.member":f,"variable.parameter":f,"variable.builtin":X,property:f,attribute:G,label:f,module:f})}function Xw(J){let{theme:z}=w0(),Y=Gw(z),Z=zw(J.relPath),[G]=WZ(()=>J.relPath,async(X)=>{let Q=await Yw(J.worktree,X);if(Q.trim().length>0)return{kind:"diff",text:Q};return{kind:"code",text:await Zw(J.worktree,X)}});return U1(()=>({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"),H=W("text"),f=W("text"),j=W("text"),V=W("box");return D(X,Q),D(X,V),q(X,"flexDirection","column"),q(X,"flexGrow",1),D(Q,H),D(Q,f),D(Q,j),q(Q,"flexDirection","row"),q(Q,"gap",1),q(Q,"paddingLeft",1),q(Q,"paddingRight",1),U(H,()=>J.relPath),U(f,(()=>{var B=N0(()=>G()?.kind==="diff");return()=>B()?F("ops.preview.diffVsHead"):F("ops.preview.file")})()),U(j,()=>F("ops.preview.closeHint")),q(V,"flexGrow",1),U(V,b(Y0,{get when(){return G()},get fallback(){return(()=>{var B=W("text");return U(B,()=>F("ops.preview.loading")),y((K)=>q(B,"fg",z.textMuted,K)),B})()},children:(B)=>b(Y0,{get when(){return B().kind==="diff"},get fallback(){return(()=>{var K=W("code");return q(K,"filetype",Z),q(K,"syntaxStyle",Y),y((L)=>q(K,"content",B().text,L)),K})()},get children(){var K=W("diff");return q(K,"view","unified"),q(K,"filetype",Z),q(K,"syntaxStyle",Y),q(K,"showLineNumbers",!0),y((L)=>q(K,"diff",B().text,L)),K}})})),y((B)=>{var{background:K,accent:L,textMuted:A,textMuted:O}=z;return K!==B.e&&(B.e=q(X,"backgroundColor",K,B.e)),L!==B.t&&(B.t=q(H,"fg",L,B.t)),A!==B.a&&(B.a=q(f,"fg",A,B.a)),O!==B.o&&(B.o=q(j,"fg",O,B.o)),B},{e:void 0,t:void 0,a:void 0,o:void 0}),X})()}async function Qw(J){await KJ({providers:{kv:!1,focus:!1},setup:()=>({root:()=>b(Xw,J)})})}var oE=2,sE="@kobe_tab_state";var SW=C(()=>{w();w();w();w();w();w();w();XY();Fq();Mq();c1();w3();Lz();hH();W1();l8();h1();ZJ();MY();kJ();o3();KZ();YO()});var qO={};q1(qO,{startDirectTmux:()=>Hw,chooseInitialTask:()=>QO});import{resolve as GO}from"path";function QO(J,z={}){let Y=(Q)=>Q?J.find((H)=>H.id===Q):void 0,Z=Y(z.activeTaskId);if(Z)return Z;let G=Y(z.persistedTaskId);if(G)return G;if(z.cwdRepo){let Q=J.find((H)=>H.kind==="main"&&H.repo===z.cwdRepo);if(Q)return Q}let X=J.filter((Q)=>!Q.archived);return X.find((Q)=>Q.pinned)??X[0]??J[0]}async function XO(J){if(J.length===0)return null;try{return await Bun.spawn(J,{stdin:"inherit",stdout:"inherit",stderr:"inherit",env:process.env}).exited}catch{return null}}async function qw(J){Gj();let z=[...SJ()];if(z.length===0)z=[ez(GO(process.cwd())).path];for(let Y of z)try{await J.ensureMainTask(Y)}catch(Z){console.error(`[kobe] ensureMainTask failed for ${Y}:`,Z)}return z[0]??GO(process.cwd())}async function Hw(){if(oQ("gui"),Promise.resolve().then(() => (f8(),H8)).then((Y)=>Y.ensureGlobalKobeHooks()),!await dz()){console.error("kobe: tmux not found on PATH \u2014 install tmux to use kobe 0.6 direct mode"),process.exitCode=1;return}let J=await Sz(),z=new AJ(J,{role:"gui"});try{process.env.KOBE_DAEMON_SOCKET_PATH=J.socketPath,await z.init();let Y=await qw(z),Z=QO(z.listTasks(),{activeTaskId:z.activeTaskSignal()(),persistedTaskId:S1("lastSelectedTaskId"),cwdRepo:Y});if(!Z){let B=await AH();if(await gZ(),await VH(B),await MH(B),await XO(NG(B))===null)console.error("kobe: failed to attach to the kobe-home session"),process.exitCode=1;return}let G=Z.worktreePath||await z.ensureWorktree(Z.id),X=I1(Z.id);await z.setActiveTask(Z.id).catch(()=>{}),e1("lastSelectedTaskId",Z.id);let Q=Z.vendor;if(Z.kind==="main"){let K=await $B(X)??PJ(S1("lastSelectedVendor"),hJ());if(K!==Z.vendor)await z.setVendor(Z.id,K).catch(()=>{}),Q=K}let H=IG(Z.repo,G,{kind:"repo-init"});if(!await pX({name:X,cwd:G,command:cJ(Q),taskId:Z.id,vendor:Q,repo:Z.repo,launchInit:H})){console.error(`kobe: tmux session ${X} failed to start (check the daemon log)`),process.exitCode=1;return}await gZ(),await VH(X),await MH(X);let j=await XO(NG(X));if(j===null){console.error(`kobe: failed to attach to tmux session ${X}`),process.exitCode=1;return}if(j!==0&&!await K1(X)){console.error(`kobe: tmux session ${X} ended unexpectedly (attach exited ${j})`),process.exitCode=j;return}let V=z.getTask(Z.id);if(V&&V.title===hz&&V.worktreePath)try{let B=await eZ(V.worktreePath,V.vendor);if(B)await z.setTitle(V.id,B)}catch(B){console.error("[kobe] auto-title failed:",B)}}finally{z.dispose()}}var HO=C(()=>{GZ();CJ();_Y();Yz();gq();kX();yG();C1();c1();_1();QH();PY();zJ()});var fO={};q1(fO,{startTui:()=>fw});async function fw(){yD();let{startDirectTmux:J}=await Promise.resolve().then(() => (HO(),qO));await J()}var jO=C(()=>{Zf()});$f();_1();import{resolve as yW}from"path";NJ();function GV(){return[`kobe ${J1}`,"","Usage: kobe [command] [options]","","Run with no command to launch the TUI.","","Commands:"," web [options] Launch the browser dashboard"," completions <shell> Generate shell completion script (bash/zsh/fish)"," add [path] Save a repo path for the new-task picker"," remove [path] Forget a saved project (inverse of add; non-destructive)"," adopt [glob] Import existing git worktrees as tasks"," export [--csv|--json] Print the task list (json/csv/table; daemon-free)"," repo <verb> Per-repo init script + first prompt (show|set|unset)"," api <verb> Scriptable RPC surface for agents (see `kobe api --help`)"," daemon <verb> Manage the daemon (start|stop|status|restart)"," theme <verb> Manage user themes (list|add|remove)"," skill <verb> Install the kobe agent skill (install|status|command)"," feedback Send feedback to GitHub Discussions"," update [target] Self-update kobe"," doctor Diagnose daemon / tmux / state (read-only)"," reset [--hard] Recover a wedged install"," reload Restart Tasks/Ops panes in place (engine untouched)"," kill-sessions Tear down kobe's tmux server (dev reset)","","Options:"," -v, --version Print version"," -h, --help Print this help"].join(`
299
+ `)}var BO=`Usage: kobe add [path]
300
300
  kobe add --remote --host <host> --user <user> --path <basePath> [--port N] [--key <path> | --password]
301
301
 
302
302
  Save a repo for the new-task picker. With --remote, register an SSH-backed
303
303
  project whose worktrees + engine run on <host> under <basePath>.
304
- `;async function vE(J){let z=J[0];if(z==="--help"||z==="-h"||z==="help"){process.stdout.write($3);return}if(z==="--remote"){let{runAddRemote:q}=await Promise.resolve().then(() => (XV(),GV));await q(J.slice(1));return}if(z?.startsWith("-"))process.stderr.write(`kobe add: unknown flag "${z}"
304
+ `;async function jw(J){let z=J[0];if(z==="--help"||z==="-h"||z==="help"){process.stdout.write(BO);return}if(z==="--remote"){let{runAddRemote:Q}=await Promise.resolve().then(() => (AV(),OV));await Q(J.slice(1));return}if(z?.startsWith("-"))process.stderr.write(`kobe add: unknown flag "${z}"
305
305
 
306
- ${$3}`),process.exit(2);let Y=bW(process.cwd(),z&&z.length>0?z:"."),{addSavedRepo:Z,isGitRepo:G}=await Promise.resolve().then(() => (A1(),tz));if(!G(Y))process.stderr.write(`kobe add: "${z&&z.length>0?z:"."}" is not a git repository (resolved to ${Y}).
307
- `),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 cE(X.path)}var a3=`Usage: kobe remove [path]
306
+ ${BO}`),process.exit(2);let Y=yW(process.cwd(),z&&z.length>0?z:"."),{addSavedRepo:Z,isGitRepo:G}=await Promise.resolve().then(() => (C1(),zY));if(!G(Y))process.stderr.write(`kobe add: "${z&&z.length>0?z:"."}" is not a git repository (resolved to ${Y}).
307
+ `),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 Ww(X.path)}var WO=`Usage: kobe remove [path]
308
308
 
309
309
  Forget a saved project (drop it from the new-task picker). Non-destructive:
310
310
  the repo's files, worktrees, branches and tasks all stay on disk. A remote
@@ -313,19 +313,19 @@ the repo's files, worktrees, branches and tasks all stay on disk. A remote
313
313
  path defaults to the current directory. Pass an exact saved entry (e.g. a
314
314
  remote \`ssh://user@host\` key) to remove it verbatim. Run with no match to
315
315
  print the current saved projects.
316
- `;async function mE(J){let z=J[0];if(z==="--help"||z==="-h"||z==="help"){process.stdout.write(a3);return}if(z?.startsWith("-"))process.stderr.write(`kobe remove: unknown flag "${z}"
316
+ `;async function Bw(J){let z=J[0];if(z==="--help"||z==="-h"||z==="help"){process.stdout.write(WO);return}if(z?.startsWith("-"))process.stderr.write(`kobe remove: unknown flag "${z}"
317
317
 
318
- ${a3}`),process.exit(2);let{getSavedRepos:Y,resolveRepoRoot:Z}=await Promise.resolve().then(() => (A1(),tz)),G=Y();if(G.length===0){console.log("no saved projects to remove.");return}let X=z&&z.length>0?z:".",q=G.includes(X)?X:(()=>{let V=bW(process.cwd(),X),B=Z(V);if(G.includes(B))return B;if(G.includes(V))return V;return null})();if(q===null){process.stderr.write(`kobe remove: "${X}" is not a saved project.
318
+ ${WO}`),process.exit(2);let{getSavedRepos:Y,resolveRepoRoot:Z}=await Promise.resolve().then(() => (C1(),zY)),G=Y();if(G.length===0){console.log("no saved projects to remove.");return}let X=z&&z.length>0?z:".",Q=G.includes(X)?X:(()=>{let V=yW(process.cwd(),X),B=Z(V);if(G.includes(B))return B;if(G.includes(V))return V;return null})();if(Q===null){process.stderr.write(`kobe remove: "${X}" is not a saved project.
319
319
 
320
320
  Saved projects:
321
321
  `);for(let V of G)process.stderr.write(` ${V}
322
- `);process.exit(1)}let{connectIfRunning:H}=await Promise.resolve().then(() => (RJ(),LH)),f=await H();try{if(f)await f.request("project.forget",{repo:q});else await(await SW()).forgetProject(q)}finally{f?.close()}let j=Y().length;console.log(`removed ${q} (${j} saved repo${j===1?"":"s"} left)`)}async function cE(J){let z=await SW(),Y;try{Y=await z.discoverAdoptableWorktrees(J)}catch(Z){console.error(`(skipped worktree scan: ${Z instanceof Error?Z.message:String(Z)})`);return}if(Y.length===0)return;console.log(`scanning ${J}: ${Y.length} unlinked worktree(s) \u2192 importing`),await p3(z,J,Y,AY(void 0))}async function SW(){let{TaskIndexStore:J}=await Promise.resolve().then(() => (Qq(),hB)),{GitWorktreeManager:z}=await Promise.resolve().then(() => (mB(),B4)),{Orchestrator:Y}=await Promise.resolve().then(() => (kX(),jK)),Z=new J;return await Z.load(),new Y({store:Z,worktrees:new z})}async function p3(J,z,Y,Z){let{connectIfRunning:G}=await Promise.resolve().then(() => (RJ(),LH)),X=await G();try{for(let q of Y){let H=X?(await X.request("worktree.adopt",{repo:z,worktreePath:q.path,branch:q.branch,vendor:Z})).task:await J.adoptWorktree({repo:z,worktreePath:q.path,branch:q.branch,vendor:Z});console.log(` adopted ${q.branch} \u2192 task ${H.id} (${H.title})`)}}finally{X?.close()}}var r3=["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(`
323
- `);function kW(J){process.stderr.write(`kobe adopt: ${J}
322
+ `);process.exit(1)}let{connectIfRunning:H}=await Promise.resolve().then(() => (CJ(),FH)),f=await H();try{if(f)await f.request("project.forget",{repo:Q});else await(await TW()).forgetProject(Q)}finally{f?.close()}let j=Y().length;console.log(`removed ${Q} (${j} saved repo${j===1?"":"s"} left)`)}async function Ww(J){let z=await TW(),Y;try{Y=await z.discoverAdoptableWorktrees(J)}catch(Z){console.error(`(skipped worktree scan: ${Z instanceof Error?Z.message:String(Z)})`);return}if(Y.length===0)return;console.log(`scanning ${J}: ${Y.length} unlinked worktree(s) \u2192 importing`),await KO(z,J,Y,RY(void 0))}async function TW(){let{TaskIndexStore:J}=await Promise.resolve().then(() => (qQ(),d9)),{GitWorktreeManager:z}=await Promise.resolve().then(() => (i9(),T4)),{Orchestrator:Y}=await Promise.resolve().then(() => (kX(),yK)),Z=new J;return await Z.load(),new Y({store:Z,worktrees:new z})}async function KO(J,z,Y,Z){let{connectIfRunning:G}=await Promise.resolve().then(() => (CJ(),FH)),X=await G();try{for(let Q of Y){let H=X?(await X.request("worktree.adopt",{repo:z,worktreePath:Q.path,branch:Q.branch,vendor:Z})).task:await J.adoptWorktree({repo:z,worktreePath:Q.path,branch:Q.branch,vendor:Z});console.log(` adopted ${Q.branch} \u2192 task ${H.id} (${H.title})`)}}finally{X?.close()}}var UO=["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(`
323
+ `);function IW(J){process.stderr.write(`kobe adopt: ${J}
324
324
 
325
- ${r3}
326
- `),process.exit(2)}async function dE(J){let z,Y,Z,G=!1;for(let K=0;K<J.length;K++){let L=J[K];if(L==="--help"||L==="-h"||L==="help"){process.stdout.write(`${r3}
327
- `);return}if(L==="--repo"){if(Y=J[++K],Y===void 0)kW("--repo requires a value")}else if(L==="--vendor"){if(Z=J[++K],Z===void 0)kW("--vendor requires a value")}else if(L==="--yes"||L==="-y")G=!0;else if(L&&!L.startsWith("-")&&z===void 0)z=L;else kW(`unexpected argument "${L}"`)}let{resolveRepoRoot:X}=await Promise.resolve().then(() => (A1(),tz)),q=X(bW(process.cwd(),Y&&Y.length>0?Y:".")),H=AY(Z),f=await SW(),j=await f.discoverAdoptableWorktrees(q);if(j.length===0){console.log(`no adoptable worktrees for ${q} \u2014 every git worktree here is already a task`);return}let V=(K)=>!z||hq(z,K.path);console.log(`adoptable worktrees in ${q}:`);for(let K of j){let L=z?V(K)?"*":" ":"-",A=[K.dirty?"dirty":"",K.kobeManaged?"":"external"].filter(Boolean).join(",");console.log(` ${L} ${K.branch} ${K.path}${A?` (${A})`:""}`)}if(!z){console.log(`
328
- pass a path glob to adopt, e.g. kobe adopt '${q}/*' --yes`);return}let B=j.filter(V);if(B.length===0){console.log(`
325
+ ${UO}
326
+ `),process.exit(2)}async function Vw(J){let z,Y,Z,G=!1;for(let K=0;K<J.length;K++){let L=J[K];if(L==="--help"||L==="-h"||L==="help"){process.stdout.write(`${UO}
327
+ `);return}if(L==="--repo"){if(Y=J[++K],Y===void 0)IW("--repo requires a value")}else if(L==="--vendor"){if(Z=J[++K],Z===void 0)IW("--vendor requires a value")}else if(L==="--yes"||L==="-y")G=!0;else if(L&&!L.startsWith("-")&&z===void 0)z=L;else IW(`unexpected argument "${L}"`)}let{resolveRepoRoot:X}=await Promise.resolve().then(() => (C1(),zY)),Q=X(yW(process.cwd(),Y&&Y.length>0?Y:".")),H=RY(Z),f=await TW(),j=await f.discoverAdoptableWorktrees(Q);if(j.length===0){console.log(`no adoptable worktrees for ${Q} \u2014 every git worktree here is already a task`);return}let V=(K)=>!z||hQ(z,K.path);console.log(`adoptable worktrees in ${Q}:`);for(let K of j){let L=z?V(K)?"*":" ":"-",A=[K.dirty?"dirty":"",K.kobeManaged?"":"external"].filter(Boolean).join(",");console.log(` ${L} ${K.branch} ${K.path}${A?` (${A})`:""}`)}if(!z){console.log(`
328
+ pass a path glob to adopt, e.g. kobe adopt '${Q}/*' --yes`);return}let B=j.filter(V);if(B.length===0){console.log(`
329
329
  no worktrees match glob ${JSON.stringify(z)}`);return}if(!G){console.log(`
330
- ${B.length} worktree(s) match \u2014 re-run with --yes to adopt them`);return}await p3(f,q,B,H),console.log(`done \u2014 adopted ${B.length} worktree(s)`)}function _3(J){J.write(`${nW()}
331
- `)}function lJ(J){let z={};for(let Y=0;Y<J.length;Y++){let Z=J[Y],G=J[Y+1];if(G===void 0)continue;if(Z==="--task-id")z.taskId=G,Y++;else if(Z==="--worktree")z.worktree=G,Y++;else if(Z==="--target-pane")z.targetPane=G,Y++;else if(Z==="--vendor")z.vendor=G,Y++;else if(Z==="--preview")z.preview=G,Y++;else if(Z==="--session")z.session=G,Y++;else if(Z==="--repo")z.repo=G,Y++;else if(Z==="--initial-task-id")z.initialTaskId=G,Y++;else if(Z==="--action")z.action=G,Y++;else if(Z==="--window")z.windowId=G,Y++;else if(Z==="--cols")z.cols=G,Y++;else if(Z==="--rows")z.rows=G,Y++;else if(Z==="--status")z.status=G,Y++;else if(Z==="--client")z.client=G,Y++;else if(Z==="--title")z.title=G,Y++}return z}async function nE(){let[,,...J]=process.argv,[z,...Y]=J;if(z==="--version"||z==="-v"||z==="version"){let{CURRENT_VERSION:G}=await Promise.resolve().then(() => (AJ(),dW));console.log(`kobe ${G}`);return}if(z==="--help"||z==="-h"||z==="help"){_3(process.stdout);return}if(z==="add"){await vE(Y);return}if(z==="remove"){await mE(Y);return}if(z==="completions"){let{runCompletionsSubcommand:G}=await Promise.resolve().then(() => (U4(),K4));await G(Y);return}if(z==="adopt"){await dE(Y);return}if(z==="export"){let{runExportSubcommand:G}=await Promise.resolve().then(() => (O4(),M4));await G(Y);return}if(z==="repo"){let{runRepoSubcommand:G}=await Promise.resolve().then(() => (N4(),g4));await G(Y);return}if(z==="api"){let{runApiSubcommand:G}=await Promise.resolve().then(() => (d4(),c4));await G(Y);return}if(z==="update"){let{runUpdateSubcommand:G}=await Promise.resolve().then(() => (a4(),$4));await G(Y);return}if(z==="theme"){let{runThemeSubcommand:G}=await Promise.resolve().then(() => (s4(),o4));await G(Y);return}if(z==="feedback"){let{runFeedbackSubcommand:G}=await Promise.resolve().then(() => (YD(),zD));await G(Y);return}if(z==="daemon"){let{runDaemonSubcommand:G}=await Promise.resolve().then(() => (QD(),qD));await G(Y);return}if(z==="doctor"){let{runDoctorSubcommand:G}=await Promise.resolve().then(() => (Gf(),Zf));await G(Y);return}if(z==="web"){let{runWebSubcommand:G}=await Promise.resolve().then(() => (gD(),RD));await G(Y);return}if(z==="reset"){let{runResetSubcommand:G}=await Promise.resolve().then(() => (Gf(),Zf));await G(Y);return}if(z==="reload"){let{runReloadSubcommand:G}=await Promise.resolve().then(() => (Gf(),Zf));await G(Y);return}if(z==="skill"){let{runSkillSubcommand:G}=await Promise.resolve().then(() => (kD(),CD));await G(Y);return}if(z==="hook"){let{runHookSubcommand:G}=await Promise.resolve().then(() => (X9(),G9));await G(Y);return}if(z==="new-chattab"){let G=lJ(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(() => (v1(),oX));if(await q(X))return;let H;if(G.vendor!==void 0){let j=G.vendor.trim(),{getCustomEngineIds:V}=await Promise.resolve().then(() => (A1(),tz)),{isBuiltinVendor:B}=await Promise.resolve().then(() => (a1(),EW));if(!(B(j)||V().includes(j))){let A=[...$1,...V()].join(", "),O=`kobe: unknown engine '${j}' (known: ${A})`,{runTmux:R}=await Promise.resolve().then(() => (v1(),oX));await R(["display-message","-t",X,O]),console.error(O),process.exit(2)}H=j;let{setPersistedString:L}=await Promise.resolve().then(() => (A1(),tz));L("lastSelectedVendor",H)}let{newChatTab:f}=await Promise.resolve().then(() => (zJ(),TJ));await f(X,H);return}if(z==="engine-tab-exit"){let X=lJ(Y).session;if(!X)console.error("kobe engine-tab-exit: --session <name> is required"),process.exit(2);let{engineTabExit:q}=await Promise.resolve().then(() => (PY(),uj));await q(X);return}if(z==="kill-sessions"){let{runTmux:G,KOBE_TMUX_SOCKET:X}=await Promise.resolve().then(() => (v1(),oX)),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(z==="quick-create"){let X=lJ(Y).session;if(!X)console.error("kobe quick-create: --session <name> is required"),process.exit(2);let{quickCreate:q}=await Promise.resolve().then(() => (zJ(),TJ));await q(X);return}if(z==="focus-tasks"){let G=lJ(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(() => (v1(),oX));if(G.windowId&&await q(G.windowId))return;let{selectTasksPane:H}=await Promise.resolve().then(() => (zJ(),TJ));await H(X,{windowId:G.windowId});return}if(z==="heal-layout"){let X=lJ(Y).session;if(!X)console.error("kobe heal-layout: --session <name> is required"),process.exit(2);let{healSessionLayout:q}=await Promise.resolve().then(() => (zJ(),TJ)),{coalesceLayoutWork:H}=await Promise.resolve().then(() => (AG(),HH));await H(X,"heal",()=>q(X));return}if(z==="resync-window"){let G=lJ(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),H=Number.parseInt(G.rows??"",10),f=Number.isInteger(q)&&q>0&&Number.isInteger(H)&&H>0?{columns:q,rows:H}:null,{resyncWindowToClient:j}=await Promise.resolve().then(() => (zJ(),TJ)),{coalesceLayoutWork:V}=await Promise.resolve().then(() => (AG(),HH));await V(X,"resync",()=>j(X,{size:f,status:G.status,clientName:G.client}));return}if(z==="capture-layout"){let X=lJ(Y).session;if(!X)console.error("kobe capture-layout: --session <name> is required"),process.exit(2);let{captureGlobalLayoutOnDrag:q}=await Promise.resolve().then(() => (zJ(),TJ)),{coalesceLayoutWork:H,genAgeMs:f,RESIZE_GUARD_MS:j}=await Promise.resolve().then(() => (AG(),HH));await H(X,"capture",async()=>{if(f(X,"resize")<j)return;await q(X)});return}if(z==="layout"){let G=lJ(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:f}=await Promise.resolve().then(() => (zJ(),TJ));await f(X,q,{windowId:G.windowId});return}if(z==="quick-task"){let G=lJ(Y),{startQuickTaskHost:X}=await Promise.resolve().then(() => (JM(),eF));await X({session:G.session});return}if(z==="tasks"){let G=lJ(Y),{startTasksPane:X}=await Promise.resolve().then(() => (z3(),J3));await X({initialTaskId:G.initialTaskId});return}if(z==="settings"){let{startSettingsHost:G}=await Promise.resolve().then(() => (Z3(),Y3));await G();return}if(z==="help-page"){let{startHelpHost:G}=await Promise.resolve().then(() => (X3(),G3));await G();return}if(z==="new-task"){let G=lJ(Y),{startNewTaskHost:X}=await Promise.resolve().then(() => (r9(),lF));await X({defaultRepo:G.repo});return}if(z==="update-page"){let{startUpdateHost:G}=await Promise.resolve().then(() => (Q3(),q3));await G();return}if(z==="history"){let G=lJ(Y);if(!G.worktree)console.error("kobe history: --worktree <path> is required"),process.exit(2);let{startHistoryHost:X}=await Promise.resolve().then(() => (j3(),f3));await X({worktree:G.worktree,vendor:AY(G.vendor),title:G.title});return}if(z==="ops"){let G=lJ(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(() => (CW(),NW));await q({worktree:G.worktree,relPath:G.preview});return}let{startOpsHost:X}=await Promise.resolve().then(() => (CW(),NW));await X({taskId:G.taskId??"",worktree:G.worktree,targetPane:G.targetPane??null,vendor:AY(G.vendor)});return}if(z!==void 0)console.error(`kobe: unknown command '${z}'`),_3(process.stderr),process.exit(2);let{startTui:Z}=await Promise.resolve().then(() => (l3(),i3));await Z()}nE().catch((J)=>{console.error("kobe failed to start:",J),process.exit(1)});
330
+ ${B.length} worktree(s) match \u2014 re-run with --yes to adopt them`);return}await KO(f,Q,B,H),console.log(`done \u2014 adopted ${B.length} worktree(s)`)}function VO(J){J.write(`${GV()}
331
+ `)}function aJ(J){let z={};for(let Y=0;Y<J.length;Y++){let Z=J[Y],G=J[Y+1];if(G===void 0)continue;if(Z==="--task-id")z.taskId=G,Y++;else if(Z==="--worktree")z.worktree=G,Y++;else if(Z==="--target-pane")z.targetPane=G,Y++;else if(Z==="--vendor")z.vendor=G,Y++;else if(Z==="--preview")z.preview=G,Y++;else if(Z==="--session")z.session=G,Y++;else if(Z==="--repo")z.repo=G,Y++;else if(Z==="--initial-task-id")z.initialTaskId=G,Y++;else if(Z==="--action")z.action=G,Y++;else if(Z==="--window")z.windowId=G,Y++;else if(Z==="--cols")z.cols=G,Y++;else if(Z==="--rows")z.rows=G,Y++;else if(Z==="--status")z.status=G,Y++;else if(Z==="--client")z.client=G,Y++;else if(Z==="--title")z.title=G,Y++}return z}async function Kw(){let[,,...J]=process.argv,[z,...Y]=J;if(z==="--version"||z==="-v"||z==="version"){let{CURRENT_VERSION:G}=await Promise.resolve().then(() => (NJ(),ZV));console.log(`kobe ${G}`);return}if(z==="--help"||z==="-h"||z==="help"){VO(process.stdout);return}if(z==="add"){await jw(Y);return}if(z==="remove"){await Bw(Y);return}if(z==="completions"){let{runCompletionsSubcommand:G}=await Promise.resolve().then(() => (w4(),E4));await G(Y);return}if(z==="adopt"){await Vw(Y);return}if(z==="export"){let{runExportSubcommand:G}=await Promise.resolve().then(() => (c4(),m4));await G(Y);return}if(z==="repo"){let{runRepoSubcommand:G}=await Promise.resolve().then(() => (l4(),i4));await G(Y);return}if(z==="api"){let{runApiSubcommand:G}=await Promise.resolve().then(() => (qD(),QD));await G(Y);return}if(z==="update"){let{runUpdateSubcommand:G}=await Promise.resolve().then(() => (WD(),BD));await G(Y);return}if(z==="theme"){let{runThemeSubcommand:G}=await Promise.resolve().then(() => (LD(),DD));await G(Y);return}if(z==="feedback"){let{runFeedbackSubcommand:G}=await Promise.resolve().then(() => (RD(),AD));await G(Y);return}if(z==="daemon"){let{runDaemonSubcommand:G}=await Promise.resolve().then(() => (bD(),kD));await G(Y);return}if(z==="doctor"){let{runDoctorSubcommand:G}=await Promise.resolve().then(() => (Xf(),Gf));await G(Y);return}if(z==="web"){let{runWebSubcommand:G}=await Promise.resolve().then(() => (iD(),nD));await G(Y);return}if(z==="reset"){let{runResetSubcommand:G}=await Promise.resolve().then(() => (Xf(),Gf));await G(Y);return}if(z==="reload"){let{runReloadSubcommand:G}=await Promise.resolve().then(() => (Xf(),Gf));await G(Y);return}if(z==="skill"){let{runSkillSubcommand:G}=await Promise.resolve().then(() => (aD(),$D));await G(Y);return}if(z==="hook"){let{runHookSubcommand:G}=await Promise.resolve().then(() => (f8(),H8));await G(Y);return}if(z==="new-chattab"){let G=aJ(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(() => (c1(),oX));if(await Q(X))return;let H;if(G.vendor!==void 0){let j=G.vendor.trim(),{getCustomEngineIds:V}=await Promise.resolve().then(() => (C1(),zY)),{isBuiltinVendor:B}=await Promise.resolve().then(() => (_1(),oW));if(!(B(j)||V().includes(j))){let A=[...a1,...V()].join(", "),O=`kobe: unknown engine '${j}' (known: ${A})`,{runTmux:R}=await Promise.resolve().then(() => (c1(),oX));await R(["display-message","-t",X,O]),console.error(O),process.exit(2)}H=j;let{setPersistedString:L}=await Promise.resolve().then(() => (C1(),zY));L("lastSelectedVendor",H)}let{newChatTab:f}=await Promise.resolve().then(() => (zJ(),EJ));await f(X,H);return}if(z==="engine-tab-exit"){let X=aJ(Y).session;if(!X)console.error("kobe engine-tab-exit: --session <name> is required"),process.exit(2);let{engineTabExit:Q}=await Promise.resolve().then(() => (PY(),hB));await Q(X);return}if(z==="kill-sessions"){let{runTmux:G,KOBE_TMUX_SOCKET:X}=await Promise.resolve().then(() => (c1(),oX)),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(z==="quick-create"){let X=aJ(Y).session;if(!X)console.error("kobe quick-create: --session <name> is required"),process.exit(2);let{quickCreate:Q}=await Promise.resolve().then(() => (zJ(),EJ));await Q(X);return}if(z==="focus-tasks"){let G=aJ(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(() => (c1(),oX));if(G.windowId&&await Q(G.windowId))return;let{selectTasksPane:H}=await Promise.resolve().then(() => (zJ(),EJ));await H(X,{windowId:G.windowId});return}if(z==="heal-layout"){let X=aJ(Y).session;if(!X)console.error("kobe heal-layout: --session <name> is required"),process.exit(2);let{healSessionLayout:Q}=await Promise.resolve().then(() => (zJ(),EJ)),{coalesceLayoutWork:H}=await Promise.resolve().then(() => (AG(),fH));await H(X,"heal",()=>Q(X));return}if(z==="resync-window"){let G=aJ(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),H=Number.parseInt(G.rows??"",10),f=Number.isInteger(Q)&&Q>0&&Number.isInteger(H)&&H>0?{columns:Q,rows:H}:null,{resyncWindowToClient:j}=await Promise.resolve().then(() => (zJ(),EJ)),{coalesceLayoutWork:V}=await Promise.resolve().then(() => (AG(),fH));await V(X,"resync",()=>j(X,{size:f,status:G.status,clientName:G.client}));return}if(z==="capture-layout"){let X=aJ(Y).session;if(!X)console.error("kobe capture-layout: --session <name> is required"),process.exit(2);let{captureGlobalLayoutOnDrag:Q}=await Promise.resolve().then(() => (zJ(),EJ)),{coalesceLayoutWork:H,genAgeMs:f,RESIZE_GUARD_MS:j}=await Promise.resolve().then(() => (AG(),fH));await H(X,"capture",async()=>{if(f(X,"resize")<j)return;await Q(X)});return}if(z==="layout"){let G=aJ(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:f}=await Promise.resolve().then(() => (zJ(),EJ));await f(X,Q,{windowId:G.windowId});return}if(z==="quick-task"){let G=aJ(Y),{startQuickTaskHost:X}=await Promise.resolve().then(() => (OM(),MM));await X({session:G.session});return}if(z==="tasks"){let G=aJ(Y),{startTasksPane:X}=await Promise.resolve().then(() => (A3(),O3));await X({initialTaskId:G.initialTaskId});return}if(z==="settings"){let{startSettingsHost:G}=await Promise.resolve().then(() => (g3(),R3));await G();return}if(z==="help-page"){let{startHelpHost:G}=await Promise.resolve().then(() => (C3(),N3));await G();return}if(z==="new-task"){let G=aJ(Y),{startNewTaskHost:X}=await Promise.resolve().then(() => (e8(),jM));await X({defaultRepo:G.repo});return}if(z==="update-page"){let{startUpdateHost:G}=await Promise.resolve().then(() => (b3(),k3));await G();return}if(z==="history"){let G=aJ(Y);if(!G.worktree)console.error("kobe history: --worktree <path> is required"),process.exit(2);let{startHistoryHost:X}=await Promise.resolve().then(() => (y3(),I3));await X({worktree:G.worktree,vendor:RY(G.vendor),title:G.title});return}if(z==="ops"){let G=aJ(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(() => (SW(),bW));await Q({worktree:G.worktree,relPath:G.preview});return}let{startOpsHost:X}=await Promise.resolve().then(() => (SW(),bW));await X({taskId:G.taskId??"",worktree:G.worktree,targetPane:G.targetPane??null,vendor:RY(G.vendor)});return}if(z!==void 0)console.error(`kobe: unknown command '${z}'`),VO(process.stderr),process.exit(2);let{startTui:Z}=await Promise.resolve().then(() => (jO(),fO));await Z()}Kw().catch((J)=>{console.error("kobe failed to start:",J),process.exit(1)});