@sma1lboy/kobe 0.7.54 → 0.7.56

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 (30) hide show
  1. package/dist/cli/index.js +203 -201
  2. package/dist/web-ui/assets/AppShell-DatLbUH8.js +5 -0
  3. package/dist/web-ui/assets/{Board-Cb_qgK8p.js → Board-eEGLQBF4.js} +1 -1
  4. package/dist/web-ui/assets/{BoardPeek-BhMuWjKj.js → BoardPeek-BN0d-Zie.js} +1 -1
  5. package/dist/web-ui/assets/{ChatTranscript-DdXMAQZR.js → ChatTranscript-CzQspNKE.js} +1 -1
  6. package/dist/web-ui/assets/{ConfirmDialog-NPI1j7RW.js → ConfirmDialog-BPIwmIjt.js} +1 -1
  7. package/dist/web-ui/assets/IssueIntakePanel-BF7ifkKK.js +1 -0
  8. package/dist/web-ui/assets/IssuePeek-DTInqza8.js +1 -0
  9. package/dist/web-ui/assets/{IssuesPage-zQbthJwx.js → IssuesPage-Bx7iHFBo.js} +1 -1
  10. package/dist/web-ui/assets/{SlideOver-CLaRtSQE.js → RichEditor-DvjbbcLw.js} +52 -52
  11. package/dist/web-ui/assets/{SettingsPage-BT-LGgyI.js → SettingsPage-DZ25Tk5v.js} +2 -2
  12. package/dist/web-ui/assets/SlideOver-D9BDfm6L.js +1 -0
  13. package/dist/web-ui/assets/{ViewToggle-Cok6O_mP.js → ViewToggle-DsJBr4VT.js} +1 -1
  14. package/dist/web-ui/assets/{WorkspaceTabs-DmfAn-hk.js → WorkspaceTabs-C2pSVT1A.js} +1 -1
  15. package/dist/web-ui/assets/board-rpuYw0Ze.js +1 -0
  16. package/dist/web-ui/assets/{index-CZ8GNIM9.js → index-BC9H3mAq.js} +2 -2
  17. package/dist/web-ui/assets/issues-CvEDCZIa.js +1 -0
  18. package/dist/web-ui/assets/{issues-Dq7AkivK.js → issues-YCoQHBtW.js} +1 -1
  19. package/dist/web-ui/assets/{lazy-issue-panels-CAA0flSv.js → lazy-issue-panels-C8OnZML2.js} +3 -3
  20. package/dist/web-ui/assets/routes-BvOMdZDM.js +1 -0
  21. package/dist/web-ui/assets/{task._taskId-DBT8vG_M.js → task._taskId-DweEr9w7.js} +1 -1
  22. package/dist/web-ui/index.html +1 -1
  23. package/package.json +1 -1
  24. package/dist/web-ui/assets/AppShell-CYm01lx0.js +0 -5
  25. package/dist/web-ui/assets/IssueIntakePanel-60iwjJTZ.js +0 -1
  26. package/dist/web-ui/assets/IssuePeek-BbXifAKp.js +0 -1
  27. package/dist/web-ui/assets/board-BEUe7jtL.js +0 -1
  28. package/dist/web-ui/assets/issues-DkAiF0x1.js +0 -1
  29. package/dist/web-ui/assets/routes-DBeL-4xe.js +0 -1
  30. /package/dist/web-ui/assets/{SlideOver-B4sEOPyN.css → RichEditor-B4sEOPyN.css} +0 -0
package/dist/cli/index.js CHANGED
@@ -1,87 +1,87 @@
1
1
  #!/usr/bin/env bun
2
2
  // @bun
3
- var hF=Object.defineProperty;var vF=(J)=>J;function mF(J,z){this[J]=vF.bind(null,z)}var f1=(J,z)=>{for(var Y in z)hF(J,Y,{get:z[Y],enumerable:!0,configurable:!0,set:mF.bind(z,Y)})};var b=(J,z)=>()=>(J&&(z=J(J=0)),z);var uQ=import.meta.require;import{basename as cF}from"path";function dF(J){let z="";for(let Y=0;Y<J.length;Y++){let Z=J[Y];if(Z==="*")if(J[Y+1]==="*")z+=".*",Y++;else z+="[^/]*";else if(Z==="?")z+="[^/]";else if(Z&&"\\^$.|+()[]{}".includes(Z))z+=`\\${Z}`;else z+=Z}return new RegExp(`^${z}$`)}function EQ(J,z){let Y;try{Y=dF(J)}catch{return!1}return Y.test(z)||Y.test(cF(z))}var vH=()=>{};var SW={};f1(SW,{resolvePersistedVendor:()=>xJ,prevVendorWithin:()=>mH,nextVendorWithin:()=>MY,nextVendor:()=>nF,isBuiltinVendor:()=>qJ,coerceVendorId:()=>rY,BUILTIN_VENDORS:()=>pY,ALL_VENDORS:()=>l1});function qJ(J){return J==="claude"||J==="codex"||J==="copilot"}function nF(J){let z=l1.indexOf(J);return l1[(z+1)%l1.length]??l1[0]}function MY(J,z){if(J.length===0)return z;let Y=J.indexOf(z);return J[(Y+1)%J.length]??J[0]??z}function mH(J,z){if(J.length===0)return z;let Y=J.indexOf(z);if(Y<0)return J[J.length-1]??z;return J[(Y-1+J.length)%J.length]??z}function rY(J){let z=J?.trim();return z&&z.length>0?z:"claude"}function xJ(J,z=[]){let Y=J?.trim();if(!Y)return"claude";if(qJ(Y))return Y;if(z.includes(Y))return Y;return"claude"}var pY,l1;var $1=b(()=>{pY=["claude","codex","copilot"],l1=[...pY]});var wQ;var IW=b(()=>{wQ={$schema:"https://json.schemastore.org/package.json",name:"@sma1lboy/kobe",version:"0.7.54",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 lF}from"os";import{join as oY}from"path";function yW(){return process.env.KOBE_DEV==="1"}function Sz(){return process.env.KOBE_HOME_DIR??lF()}function fJ(){return oY(Sz(),".kobe")}function lJ(){return oY(Sz(),".config","kobe","state.json")}function $F(){return oY(fJ(),"settings")}function xW(){return oY($F(),"keybindings.yaml")}function cH(){return oY(fJ(),"issue-assets")}function PQ(J,z,Y){let Z=TW("sha1").update(`${z}@${J}:${Y??22}`).digest("hex").slice(0,16);return oY(fJ(),"ssh",`${Z}.sock`)}function uW(J){let z=TW("sha1").update(J).digest("hex").slice(0,16);return oY(fJ(),"worktree-init",z)}var o1=()=>{};var wW={};f1(wW,{repoSlug:()=>sY,releasePageUrl:()=>$H,recommendedGlobalInstallCommand:()=>iH,isNewerSemver:()=>dH,fetchReleaseSummaries:()=>pF,fetchReleaseNotesRange:()=>lH,fetchReleaseNotes:()=>_F,compareSemver:()=>hQ,checkLatestVersion:()=>zG,UPDATE_SCRIPT_URL:()=>vQ,UPDATE_COMMAND:()=>_z,PACKAGE_NAME:()=>nH,CURRENT_VERSION:()=>p0});function sY(){let J=wQ.repository?.url;if(!J)return null;let z=J.match(/github\.com[:/]([^/]+)\/([^/.]+)/);if(!z||!z[1]||!z[2])return null;return`${z[1]}/${z[2]}`}function iH(){return`npm install -g ${nH}@latest`}async function aF(J){let z=new AbortController,Y=setTimeout(()=>z.abort(),mQ);try{let Z=J.replace("/","%2F"),X=await fetch(`https://registry.npmjs.org/${Z}/latest`,{signal:z.signal,headers:{accept:"application/json"}});if(!X.ok)return null;let G=await X.json();if(typeof G.version!=="string")return null;return G.version}catch{return null}finally{clearTimeout(Y)}}function dH(J,z){return hQ(J,z)>0}function hQ(J,z){let Y=(G)=>G.split("-")[0]??G,Z=Y(J).split(".").map((G)=>Number.parseInt(G,10)),X=Y(z).split(".").map((G)=>Number.parseInt(G,10));for(let G=0;G<3;G++){let Q=Z[G]??0,f=X[G]??0;if(Number.isNaN(Q)||Number.isNaN(f))return 0;if(Q>f)return 1;if(Q<f)return-1}return 0}async function zG(J={}){let z=process.env.KOBE_FAKE_UPDATE;if(z)return{current:p0,latest:z,hasUpdate:dH(z,p0)};if(yW()&&!J.force)return null;let Y=await aF(nH);if(!Y)return null;return{current:p0,latest:Y,hasUpdate:dH(Y,p0)}}function EW(J){if(typeof J!=="string")return null;return J.match(/^v(\d+\.\d+\.\d+)$/)?.[1]??null}async function _F(J){let z=sY();if(!z)return null;let Y=`v${J}`,Z=new AbortController,X=setTimeout(()=>Z.abort(),mQ);try{let G=await fetch(`https://api.github.com/repos/${z}/releases/tags/${Y}`,{signal:Z.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!G.ok)return null;let Q=await G.json();if(typeof Q.body!=="string"||typeof Q.html_url!=="string")return null;return{body:Q.body,url:Q.html_url,version:J}}catch{return null}finally{clearTimeout(X)}}async function lH(J){let z=sY();if(!z)return[];let Y=J.limit??100,Z=new AbortController,X=setTimeout(()=>Z.abort(),mQ);try{let G=await fetch(`https://api.github.com/repos/${z}/releases?per_page=${Y}`,{signal:Z.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!G.ok)return[];let Q=await G.json();if(!Array.isArray(Q))return[];return Q.map((f)=>{let H=EW(f.tag_name);if(!H||typeof f.html_url!=="string"||typeof f.body!=="string")return null;if(hQ(H,J.current)<=0)return null;if(hQ(H,J.latest)>0)return null;return{version:H,url:f.html_url,body:f.body}}).filter((f)=>f!==null)}catch{return[]}finally{clearTimeout(X)}}async function pF(J=12){let z=sY();if(!z)return[];let Y=new AbortController,Z=setTimeout(()=>Y.abort(),mQ);try{let X=await fetch(`https://api.github.com/repos/${z}/releases?per_page=${J}`,{signal:Y.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!X.ok)return[];let G=await X.json();if(!Array.isArray(G))return[];return G.map((Q)=>{let f=EW(Q.tag_name);if(!f||typeof Q.html_url!=="string")return null;return{version:f,url:Q.html_url}}).filter((Q)=>Q!==null)}catch{return[]}finally{clearTimeout(Z)}}function $H(J){let z=sY();if(!z)return null;return`https://github.com/${z}/releases/tag/v${J}`}var p0,nH,vQ="https://raw.githubusercontent.com/Sma1lboy/kobe/main/scripts/update.sh",_z,mQ=3000;var MJ=b(()=>{IW();o1();p0=wQ.version,nH=wQ.name;_z=`curl -fsSL ${vQ} | sh`});import{spawn as rF,spawnSync as oF}from"child_process";import{existsSync as hW}from"fs";import{mkdir as sF,readFile as tF,readdir as eF}from"fs/promises";function tY(J){return`'${J.replace(/'/g,"'\\''")}'`}function JO(J){return/^[A-Za-z0-9_@%+=:,./-]+$/.test(J)?J:tY(J)}function mW(J){return J.map(tY).join(" ")}function zO(J,z){let Y=mW(J);return z?`cd ${tY(z)} && ${Y}`:Y}function YO(J){if(!J)return"";let z=Object.entries(J).filter(([Y])=>/^[A-Za-z_][A-Za-z0-9_]*$/.test(Y));if(z.length===0)return"";return`${z.map(([Y,Z])=>`${Y}=${tY(Z)}`).join(" ")} `}function YG(J,z={}){let Y=["ssh"];if(z.tty)Y.push("-tt");if(z.batch)Y.push("-o","BatchMode=yes");if(Y.push("-o","ControlMaster=auto","-o",`ControlPath=${J.controlPath}`,"-o","ControlPersist=300"),Y.push("-o","StrictHostKeyChecking=accept-new"),J.port)Y.push("-p",String(J.port));if(J.auth.kind==="key"&&J.auth.keyPath)Y.push("-i",J.auth.keyPath);return Y.push(`${J.user}@${J.host}`),Y}function cW(J,z={}){return new Promise((Y)=>{let[Z,...X]=J,G="",Q="",f=!1,H=(V)=>{if(f)return;f=!0,Y({stdout:G,stderr:Q,exitCode:V})},B;try{B=rF(Z??"",X,{cwd:z.cwd,env:z.env,shell:!1,signal:z.signal})}catch{H(-1);return}B.stdout?.setEncoding("utf8"),B.stdout?.on("data",(V)=>{G+=V}),B.stderr?.setEncoding("utf8"),B.stderr?.on("data",(V)=>{Q+=V}),B.on("error",()=>H(-1)),B.on("close",(V)=>H(V??-1))})}class cQ{isRemote=!1;run(J,z={}){return cW(J,{cwd:z.cwd,env:z.env?{...process.env,...z.env}:process.env,signal:z.signal})}async exists(J){return hW(J)}existsSync(J){return hW(J)}async mkdirp(J){await sF(J,{recursive:!0})}async readFile(J){try{return await tF(J,"utf8")}catch{return null}}async readdir(J){try{return await eF(J)}catch{return[]}}wrapCommand(J){return J}ensureReady(){}}class cZ{spec;spawn;isRemote=!0;masterUp=!1;spawnAsync;constructor(J,z=vW,Y){this.spec=J;this.spawn=z;this.spawnAsync=Y??(this.spawn===vW?ZO:async(Z,X)=>this.spawn(Z,X))}ensureReady(){if(this.masterUp)return;if(this.spawn([...YG(this.spec,{batch:!0}),"-O","check"]).exitCode===0){this.masterUp=!0;return}let z=[...YG(this.spec,{batch:this.spec.auth.kind!=="password"}),"-fN"];if(this.spec.auth.kind==="password"){let Y=this.spec.auth.getPassword();if(Y!=null){this.spawn(["sshpass","-e",...z],{SSHPASS:Y}),this.masterUp=!0;return}}this.spawn(z),this.masterUp=!0}async run(J,z={}){this.ensureReady();let Y=`${YO(z.env)}${mW(J)}`,Z=z.cwd?`cd ${tY(z.cwd)} && ${Y}`:Y;return this.spawnAsync([...YG(this.spec,{batch:!0}),Z],void 0,{signal:z.signal})}async exists(J){return(await this.run(["test","-e",J])).exitCode===0}existsSync(J){return this.ensureReady(),this.spawn([...YG(this.spec,{batch:!0}),zO(["test","-e",J])]).exitCode===0}async mkdirp(J){await this.run(["mkdir","-p",J])}async readFile(J){let z=await this.run(["cat",J]);return z.exitCode===0?z.stdout:null}async readdir(J){let z=await this.run(["ls","-1A",J]);if(z.exitCode!==0)return[];return z.stdout.split(`
4
- `).filter((Y)=>Y.length>0)}wrapCommand(J,z={}){let Y=z.cwd?`cd ${tY(z.cwd)} && ${J}`:J;return`${YG(this.spec,{tty:z.tty}).map(JO).join(" ")} ${tY(Y)}`}}var vW=(J,z)=>{let[Y,...Z]=J,X=oF(Y??"",Z,{env:z?{...process.env,...z}:process.env,encoding:"utf8",shell:!1});return{stdout:X.stdout??"",stderr:X.stderr??"",exitCode:X.status??-1}},ZO=(J,z,Y)=>cW(J,{env:z?{...process.env,...z}:process.env,signal:Y?.signal});var aH=()=>{};import{spawnSync as XO}from"child_process";import{platform as GO}from"os";function dW(J,z,Y){return{service:QO,account:Y?`${z}@${J}:${Y}`:`${z}@${J}`}}function pH(J=_H){return J.platform()==="darwin"}function nW(J,z,Y=_H){if(Y.platform()!=="darwin")return!1;let{exitCode:Z}=Y.run(["security","add-generic-password","-U","-s",J.service,"-a",J.account,"-w",z]);return Z===0}function dQ(J,z=_H){if(z.platform()!=="darwin")return null;let{stdout:Y,exitCode:Z}=z.run(["security","find-generic-password","-s",J.service,"-a",J.account,"-w"]);if(Z!==0)return null;return Y.replace(/\n$/,"")}var _H,QO="kobe-remote-ssh";var rH=b(()=>{_H={run(J){let[z,...Y]=J,Z=XO(z??"",Y,{encoding:"utf8",shell:!1});return{stdout:Z.stdout??"",exitCode:Z.status??-1}},platform(){return GO()}}});import{mkdirSync as qO,readFileSync as fO,renameSync as HO,writeFileSync as BO}from"fs";import{dirname as jO}from"path";function RJ(){try{let J=fO(lJ(),"utf8"),z=JSON.parse(J);if(z&&typeof z==="object"&&!Array.isArray(z))return z}catch{}return{}}function iW(J){let z=lJ();qO(jO(z),{recursive:!0});let Y=`${z}.tmp`;BO(Y,JSON.stringify(J,null,2),"utf8"),HO(Y,z)}function dZ(J){let z=RJ();if(J(z)!==!1)iW(z);return z}function FY(J){return dZ((z)=>{for(let[Y,Z]of Object.entries(J))if(Z===void 0)delete z[Y];else z[Y]=Z;return})}function pz(J,z){let Y=RJ()[J];return typeof Y==="boolean"?Y:z}function lW(J,z){FY({[J]:z})}function $W(J){iW(J)}var eY=b(()=>{o1()});var tz={};f1(tz,{statePath:()=>KO,setRepoInitOverride:()=>UO,setPersistedString:()=>s1,resolveRepoRoot:()=>rz,resolveMainRepoRoot:()=>VO,removeSavedRepo:()=>eH,remoteRepoKey:()=>rW,normalizeSavedRepos:()=>sH,isRemoteRepoKey:()=>a1,isRemoteProjectsEnabled:()=>J8,isGitRepo:()=>WO,getSavedRepos:()=>gJ,getRepoInitOverride:()=>tH,getRemoteRepos:()=>z8,getRemoteRepoConfig:()=>sz,getPersistedString:()=>C1,getCustomEngineIds:()=>uJ,addSavedRepo:()=>oz,addRemoteRepo:()=>Y8});import{spawnSync as oH}from"child_process";import{realpathSync as aW}from"fs";function rz(J){if(a1(J))return J;let z=oH("git",["rev-parse","--show-toplevel"],{cwd:J,encoding:"utf8",shell:!1});if(z.status!==0)return J;let Y=(z.stdout??"").trim();if(!Y)return J;try{if(aW(J)===aW(Y))return J}catch{}return Y}function WO(J){if(a1(J))return!1;let z=oH("git",["rev-parse","--is-inside-work-tree"],{cwd:J,encoding:"utf8",shell:!1});return z.status===0&&(z.stdout??"").trim()==="true"}function VO(J){if(a1(J))return J;let z=oH("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 KO(){return lJ()}function nQ(J){let z=J.savedRepos;if(!Array.isArray(z))return[];return z.filter((Y)=>typeof Y==="string")}function gJ(){return nQ(RJ())}function C1(J){let z=RJ()[J];return typeof z==="string"?z:void 0}function s1(J,z){FY({[J]:z})}function uJ(){let J=RJ().customEngineIds;if(!Array.isArray(J))return[];return J.filter((z)=>typeof z==="string"&&z.trim().length>0)}function oz(J){let z=rz(J),Y={added:!1,path:z,total:0};return dZ((Z)=>{let X=nQ(Z);if(X.includes(z))return Y={added:!1,path:z,total:X.length},!1;Z.savedRepos=[...X,z],Y={added:!0,path:z,total:X.length+1};return}),Y}function sH(){let J=gJ(),z=new Set,Y=[],Z=!1;for(let X of J){let G=rz(X);if(G!==X)Z=!0;if(z.has(G)){Z=!0;continue}z.add(G),Y.push(G)}if(!Z)return;FY({savedRepos:Y})}function _W(J){let z=J.repoConfigs;if(!z||typeof z!=="object"||Array.isArray(z))return{};return z}function pW(J){if(!J||typeof J!=="object")return{};let z=J;return{initScript:typeof z.initScript==="string"&&z.initScript.length>0?z.initScript:void 0,initPrompt:typeof z.initPrompt==="string"&&z.initPrompt.length>0?z.initPrompt:void 0}}function tH(J){return pW(_W(RJ())[rz(J)])}function UO(J,z){let Y=rz(J),Z={};return dZ((X)=>{let G={..._W(X)},Q=pW(G[Y]),f=z.initScript===void 0?Q.initScript:z.initScript||void 0,H=z.initPrompt===void 0?Q.initPrompt:z.initPrompt||void 0;if(Z={...f?{initScript:f}:{},...H?{initPrompt:H}:{}},!Z.initScript&&!Z.initPrompt){let{[Y]:B,...V}=G;X.repoConfigs=V}else G[Y]=Z,X.repoConfigs=G;return}),Z}function eH(J){let z={removed:!1,path:J,total:0};return dZ((Y)=>{let Z=nQ(Y);if(!Z.includes(J))return z={removed:!1,path:J,total:Z.length},!1;if(Y.savedRepos=Z.filter((X)=>X!==J),a1(J)){let X=iQ(Y);if(J in X){let G={...X};delete G[J],Y.remoteRepos=G}}z={removed:!0,path:J,total:Z.length-1};return}),z}function a1(J){return J.startsWith("ssh://")}function J8(){return pz("experimental.remoteProjects",!1)}function rW(J,z,Y){return Y?`ssh://${z}@${J}:${Y}`:`ssh://${z}@${J}`}function iQ(J){let z=J.remoteRepos;if(!z||typeof z!=="object"||Array.isArray(z))return{};return z}function sz(J){return iQ(RJ())[J]??null}function z8(){return iQ(RJ())}function Y8(J){let z=rW(J.host,J.user,J.port),Y=!1;return dZ((Z)=>{let X={...iQ(Z)};X[z]=J,Z.remoteRepos=X;let G=nQ(Z);if(Y=!G.includes(z),Y)Z.savedRepos=[...G,z];return}),{key:z,added:Y}}var A1=b(()=>{o1();eY()});var tW={};f1(tW,{runAddRemote:()=>MO,parseRemoteFlags:()=>sW});import{createInterface as DO}from"readline";function sW(J){let z={};for(let Y=0;Y<J.length;Y++){let Z=J[Y];switch(Z){case"--host":z.host=J[++Y];break;case"--user":z.user=J[++Y];break;case"--path":z.path=J[++Y];break;case"--port":{let X=Number(J[++Y]);if(!Number.isInteger(X)||X<=0)qz(`invalid --port "${J[Y]}"`);z.port=X;break}case"--key":{let X=J[Y+1];if(X&&!X.startsWith("-"))z.key={present:!0,path:X},Y++;else z.key={present:!0};break}case"--password":z.password=!0;break;case"--help":case"-h":process.stdout.write(oW),process.exit(0);break;default:qz(`unknown flag "${Z}"`)}}return z}function qz(J){process.stderr.write(`kobe add --remote: ${J}
3
+ var s3=Object.defineProperty;var t3=(J)=>J;function e3(J,z){this[J]=t3.bind(null,z)}var Q1=(J,z)=>{for(var Y in z)s3(J,Y,{get:z[Y],enumerable:!0,configurable:!0,set:e3.bind(z,Y)})};var C=(J,z)=>()=>(J&&(z=J(J=0)),z);var PQ=import.meta.require;import{basename as JO}from"path";function zO(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=zO(J)}catch{return!1}return Y.test(z)||Y.test(JO(z))}var nf=()=>{};var EW={};Q1(EW,{resolvePersistedVendor:()=>uJ,prevVendorWithin:()=>lf,nextVendorWithin:()=>OY,nextVendor:()=>YO,isBuiltinVendor:()=>fJ,coerceVendorId:()=>AY,BUILTIN_VENDORS:()=>tY,ALL_VENDORS:()=>$1});function fJ(J){return J==="claude"||J==="codex"||J==="copilot"}function YO(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.56",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 GO}from"os";import{join as eY}from"path";function hW(){return process.env.KOBE_DEV==="1"}function Tz(){return process.env.KOBE_HOME_DIR??GO()}function jJ(){return eY(Tz(),".kobe")}function _J(){return eY(Tz(),".config","kobe","state.json")}function XO(){return eY(jJ(),"settings")}function vW(){return eY(XO(),"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:()=>HO,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 QO(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 QO(_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 HO(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 fO,spawnSync as jO}from"child_process";import{existsSync as iW}from"fs";import{mkdir as BO,readFile as WO,readdir as VO}from"fs/promises";function zZ(J){return`'${J.replace(/'/g,"'\\''")}'`}function KO(J){return/^[A-Za-z0-9_@%+=:,./-]+$/.test(J)?J:zZ(J)}function $W(J){return J.map(zZ).join(" ")}function UO(J,z){let Y=$W(J);return z?`cd ${zZ(z)} && ${Y}`:Y}function DO(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=fO(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 BO(J,{recursive:!0})}async readFile(J){try{return await WO(J,"utf8")}catch{return null}}async readdir(J){try{return await VO(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?LO: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=`${DO(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}),UO(["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(KO).join(" ")} ${zZ(Y)}`}}var lW=(J,z)=>{let[Y,...Z]=J,G=jO(Y??"",Z,{env:z?{...process.env,...z}:process.env,encoding:"utf8",shell:!1});return{stdout:G.stdout??"",stderr:G.stderr??"",exitCode:G.status??-1}},LO=(J,z,Y)=>aW(J,{env:z?{...process.env,...z}:process.env,signal:Y?.signal});var sf=()=>{};import{spawnSync as FO}from"child_process";import{platform as MO}from"os";function _W(J,z,Y){return{service:OO,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,OO="kobe-remote-ssh";var J8=C(()=>{tf={run(J){let[z,...Y]=J,Z=FO(z??"",Y,{encoding:"utf8",shell:!1});return{stdout:Z.stdout??"",exitCode:Z.status??-1}},platform(){return MO()}}});import{mkdirSync as AO,readFileSync as RO,renameSync as gO,writeFileSync as NO}from"fs";import{dirname as CO}from"path";function NJ(){try{let J=RO(_J(),"utf8"),z=JSON.parse(J);if(z&&typeof z==="object"&&!Array.isArray(z))return z}catch{}return{}}function rW(J){let z=_J();AO(CO(z),{recursive:!0});let Y=`${z}.tmp`;NO(Y,JSON.stringify(J,null,2),"utf8"),gO(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:()=>SO,setRepoInitOverride:()=>IO,setPersistedString:()=>e1,resolveRepoRoot:()=>rz,resolveMainRepoRoot:()=>bO,removeSavedRepo:()=>G8,remoteRepoKey:()=>zV,normalizeSavedRepos:()=>Y8,isRemoteRepoKey:()=>_1,isRemoteProjectsEnabled:()=>X8,isGitRepo:()=>kO,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 kO(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 bO(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 SO(){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 IO(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:()=>xO,parseRemoteFlags:()=>ZV});import{createInterface as yO}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}
5
5
 
6
- ${oW}`),process.exit(2)}async function LO(J){let z=DO({input:process.stdin,output:process.stdout,terminal:!0}),Y=process.stdout,Z=!1,X=Y._writeToOutput?.bind(Y);return Y._writeToOutput=(G)=>{if(!Z||!X)process.stdout.write(G)},process.stdout.write(J),Z=!0,new Promise((G)=>{z.question("",(Q)=>{if(Z=!1,X)Y._writeToOutput=X;process.stdout.write(`
7
- `),z.close(),G(Q)})})}async function MO(J){if(!J8())qz("remote projects are experimental and disabled \u2014 enable Settings \u2192 Dev \u2192 Experimental \u2192 Remote projects first");let z=sW(J);if(!z.host)qz("--host is required");if(!z.user)qz("--user is required");if(!z.path)qz("--path (remote base path) is required");if(z.key&&z.password)qz("choose ONE of --key or --password, not both");if(!z.key&&!z.password)qz("an auth method is required: --key [path] or --password");let Y;if(z.password){if(!pH())qz("--password needs the macOS keychain (unsupported on this platform)");let G=dW(z.host,z.user,z.port),Q=await LO(`Password for ${z.user}@${z.host}: `);if(Q.length===0)qz("empty password");if(!nW(G,Q))qz("failed to store the password in the keychain");Y={kind:"password",keychainRef:G}}else Y={kind:"key",keyPath:z.key?.path};let{key:Z,added:X}=Y8({host:z.host,user:z.user,port:z.port,basePath:z.path,auth:Y});console.log(X?`added remote project ${Z} (base ${z.path})`:`updated remote project ${Z} (base ${z.path})`),await FO(z,Y)}async function FO(J,z){if(z.kind==="password"&&!pH())return;let Y=z.kind==="key"?{kind:"key",keyPath:z.keyPath}:{kind:"password",getPassword:()=>dQ(z.keychainRef)},Z={host:J.host,user:J.user,port:J.port,auth:Y,controlPath:PQ(J.host,J.user,J.port)};process.stdout.write("checking connection\u2026 ");try{if((await new cZ(Z).run(["test","-d",J.path])).exitCode===0)console.log("ok");else console.log(`reachable, but base path "${J.path}" is not a directory (you can create it later)`)}catch(X){console.log(`could not connect (${X instanceof Error?X.message:String(X)})`),console.log("the project is saved; fix the host/credentials and it will connect on first use.")}}var oW;var eW=b(()=>{o1();aH();rH();A1();oW=`Usage: kobe add --remote --host <host> --user <user> --path <basePath>
6
+ ${YV}`),process.exit(2)}async function TO(J){let z=yO({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 xO(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 TO(`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 uO(z,Y)}async function uO(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>
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 lQ(J){return J.remoteVersion>=J.localMin&&J.localVersion>=J.remoteMin}function J7(J,z){if(!J)return!1;return J!==z}function AO(J){return typeof J==="string"&&OO.has(J)}function z7(J){if(!Array.isArray(J))return null;let z=new Set;for(let Y of J)if(AO(Y))z.add(Y);return z.size>0?z:null}function fz(J){return{id:J.id,title:J.title,repo:J.repo,branch:J.branch,worktreePath:J.worktreePath,kind:J.kind??"task",status:J.status,archived:J.archived,pinned:J.pinned??!1,vendor:J.vendor,prStatus:J.prStatus,position:J.position,modelEffort:J.modelEffort,createdAt:J.createdAt,updatedAt:J.updatedAt}}function ZG(J){return`${JSON.stringify(J)}
14
- `}var $J=3,OY=2,Z8,OO;var JZ=b(()=>{Z8=["task.snapshot","issue.snapshot","active-task","update","engine-state","ui-prefs","keybindings","task.jobs","worktree.changes","transcript.activity","session.deliver"],OO=new Set(Z8)});import{createHash as RO}from"crypto";import{homedir as $Q,tmpdir as gO}from"os";import{join as zZ}from"path";function CO(J){return RO("sha1").update(J).digest("hex").slice(0,8)}function G8(J,z,Y,Z){if(Buffer.byteLength(J,"utf8")<=X8)return J;let X=CO(z),G=Z===void 0?"":`-${Z}`,Q=zZ(gO(),`kobe-${X}-${Y}${G}.sock`);if(Buffer.byteLength(Q,"utf8")<=X8)return Q;throw Error(`kobe socket path exceeds ${X8} bytes even after fallback: ${Q}`)}function Iz(J){let z=process.env.KOBE_DAEMON_SOCKET_PATH;if(z&&z.length>0)return z;let Y=J??process.env.KOBE_HOME_DIR;if(Y&&Y.length>0)return G8(zZ(Y,".kobe","daemon.sock"),Y,"daemon");let Z=process.env.XDG_RUNTIME_DIR;if(Z&&Z.length>0)return G8(zZ(Z,"kobe.sock"),Z,"daemon");let X=$Q();return G8(zZ(X,".kobe","daemon.sock"),X,"daemon")}function ez(J=process.env.KOBE_HOME_DIR??$Q()){let z=process.env.KOBE_DAEMON_PID_PATH;if(z&&z.length>0)return z;return zZ(J,".kobe","daemon.pid")}function aQ(J=process.env.KOBE_HOME_DIR??$Q()){return zZ(J,".kobe","daemon.log")}function Y7(J=process.env.KOBE_HOME_DIR??$Q()){return zZ(J,".kobe","client.log")}var X8=100;var nZ=()=>{};import{appendFile as Z7,mkdir as NO}from"fs/promises";import{dirname as bO}from"path";function _Q(J){Q7=J}function kO(J){if(J instanceof Error)return{message:J.message,stack:J.stack};let z;try{z=typeof J==="string"?J:JSON.stringify(J)}catch{z=String(J)}return{message:z}}function q7(J,z,Y=new Date){return`[${Y.toISOString()}] client ${Q7} [${J}] pid=${process.pid}: ${z}
15
- `}function SO(){if(X7)return;X7=!0;try{process.stderr.write(`[kobe] client log write failed; continuing without it
16
- `)}catch{}}function f7(J){let z=Y7();G7=G7.then(async()=>{try{await Z7(z,J)}catch(Y){if(Y?.code==="ENOENT")await NO(bO(z),{recursive:!0}),await Z7(z,J);else throw Y}}).catch(()=>SO())}function JY(J,z){f7(q7(J,z))}function t1(J,z){let Y=kO(z);f7(q7(J,Y.stack??Y.message))}function H7(){if(Q8||q8)return;Q8=(J)=>t1("crash-net",J),q8=(J)=>t1("crash-net",J),process.on("unhandledRejection",Q8),process.on("uncaughtException",q8)}var Q7="client",X7=!1,G7,Q8,q8;var YZ=b(()=>{nZ();G7=Promise.resolve()});import{connect as IO}from"net";import{StringDecoder as TO}from"string_decoder";class aJ{socketPath;socket=null;buffer="";nextId=1;pending=new Map;handlers=new Map;lifecycleHandlers=new Map;connecting=null;disposed=!1;constructor(J){this.socketPath=J}connect(){if(this.socket)return Promise.resolve();if(this.disposed)return Promise.reject(Error("daemon client disposed"));if(this.connecting)return this.connecting;let J=this.openSocket();this.connecting=J;let z=()=>{if(this.connecting===J)this.connecting=null};return J.then(z,z),J}get isDisposed(){return this.disposed}close(){this.disposed=!0,this.socket?.end(),this.socket=null,this.failPending()}forceDisconnect(){let J=this.socket;if(!J)return;this.socket=null,J.destroy(),this.failPending()}failPending(){if(this.pending.size===0)return;let J=Error("daemon connection closed");for(let z of this.pending.values())z.reject(J);this.pending.clear()}on(J,z){let Y=this.handlers.get(J);if(!Y)Y=new Set,this.handlers.set(J,Y);return Y.add(z),()=>{if(Y?.delete(z),Y?.size===0)this.handlers.delete(J)}}onChannel(J,z){return this.on(J,(Y)=>z(Y.payload))}subscribe(J={}){let z={};if(J.channels)z.channels=J.channels;if(J.role)z.role=J.role;return this.request("subscribe",z)}onLifecycle(J,z){let Y=this.lifecycleHandlers.get(J);if(!Y)Y=new Set,this.lifecycleHandlers.set(J,Y);return Y.add(z),()=>{if(Y?.delete(z),Y?.size===0)this.lifecycleHandlers.delete(J)}}async request(J,z){await this.connect();let Y=this.socket;if(!Y)throw Error("daemon connection is not open");let Z=String(this.nextId++),X=new Promise((G,Q)=>{this.pending.set(Z,{resolve:(f)=>G(f),reject:Q})});return Y.write(ZG({type:"request",id:Z,name:J,payload:z})),X}openSocket(){return new Promise((J,z)=>{let Y=IO(this.socketPath);this.socket=Y;let Z=()=>{Y.off("error",X),J()},X=(Q)=>{if(Y.off("connect",Z),this.socket===Y)this.socket=null;z(Q)};Y.once("connect",Z),Y.once("error",X);let G=new TO("utf8");this.buffer="",Y.on("data",(Q)=>this.onData(G.write(Q))),Y.on("close",()=>this.onSocketClose(Y))})}onSocketClose(J){if(this.socket!==J)return;this.socket=null,this.failPending(),this.emitLifecycle("close")}emitLifecycle(J){for(let z of this.lifecycleHandlers.get(J)??[])try{z()}catch(Y){console.error(`[kobe] lifecycle handler for "${J}" threw:`,Y)}}onData(J){this.buffer+=J;let z=this.buffer.indexOf(`
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 wO(J){return typeof J==="string"&&EO.has(J)}function qV(J){if(!Array.isArray(J))return null;let z=new Set;for(let Y of J)if(wO(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,EO;var YZ=C(()=>{H8=["task.snapshot","issue.snapshot","active-task","update","engine-state","ui-prefs","keybindings","task.jobs","worktree.changes","transcript.activity","session.deliver"],EO=new Set(H8)});import{createHash as PO}from"crypto";import{homedir as pQ,tmpdir as hO}from"os";import{join as ZZ}from"path";function vO(J){return PO("sha1").update(J).digest("hex").slice(0,8)}function j8(J,z,Y,Z){if(Buffer.byteLength(J,"utf8")<=f8)return J;let G=vO(z),X=Z===void 0?"":`-${Z}`,Q=ZZ(hO(),`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 mO}from"fs/promises";import{dirname as cO}from"path";function oQ(J){WV=J}function dO(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 nO(){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 mO(cO(z),{recursive:!0}),await fV(z,J);else throw Y}}).catch(()=>nO())}function JY(J,z){KV(VV(J,z))}function JJ(J,z){let Y=dO(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 iO}from"net";import{StringDecoder as lO}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=iO(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 lO("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){t1("client-frame",Z);return}if(z.type==="event"){this.emit(z);return}if(z.type!=="response")return;let Y=this.pending.get(z.id);if(!Y)return;if(this.pending.delete(z.id),z.error){let Z=Error(z.error.message);if(z.error.name)Z.name=z.error.name;Y.reject(Z)}else Y.resolve(z.payload)}emit(J){for(let z of this.handlers.get(J.name)??[])z(J);for(let z of this.handlers.get("*")??[])z(J)}}var XG=b(()=>{JZ();YZ()});import{spawnSync as yO}from"child_process";import{existsSync as xO,statSync as uO}from"fs";import{homedir as EO}from"os";import GG from"path";async function B7(J=wO){let z=[],Y=(B)=>{if(!B)return;return z.push(B),J.fileExists(B)?B:void 0},Z=J.which("claude");if(Z){if(z.push(`which:${Z}`),J.fileExists(Z))return Z}let X=J.home(),G=Y(GG.join(X,".claude","local","claude"));if(G)return G;let Q=J.env("NVM_BIN");if(Q){let B=Y(GG.join(Q,"claude"));if(B)return B}let f=GG.join(X,".nvm","versions","node"),H=J.readdir(f).sort().reverse();for(let B of H){let V=Y(GG.join(f,B,"bin","claude"));if(V)return V}for(let B of["/opt/homebrew/bin/claude","/usr/local/bin/claude","/usr/bin/claude","/bin/claude"]){let V=Y(B);if(V)return V}for(let B of[".local/bin/claude",".npm-global/bin/claude",".yarn/bin/claude",".bun/bin/claude","bin/claude"]){let V=Y(GG.join(X,B));if(V)return V}throw new pQ(z)}var pQ,wO;var j7=b(()=>{pQ=class pQ extends Error{checkedPaths;constructor(J){super(`Claude Code binary not found. Checked: ${J.join(", ")}. Ensure 'claude' is on PATH, or install at ~/.claude/local/claude.`);this.name="ClaudeBinaryNotFoundError",this.checkedPaths=J}};wO={fileExists(J){try{return uO(J).isFile()}catch{return!1}},env(J){return process.env[J]},home(){return EO()},which(J){let z=process.platform==="win32"?"where":"which",Y=yO(z,[J],{encoding:"utf8"});if(Y.status!==0)return;let Z=Y.stdout.split(`
19
- `).map((X)=>X.trim()).filter(Boolean)[0];if(!Z)return;if(Z.startsWith("claude:")&&Z.includes("aliased to")){let X=Z.split("aliased to")[1]?.trim();return X&&xO(X)?X:void 0}return Z},readdir(J){try{return uQ("fs").readdirSync(J)}catch{return[]}}}});import{spawnSync as PO}from"child_process";import{existsSync as hO,statSync as vO}from"fs";import{homedir as mO}from"os";import W7 from"path";async function V7(J=cO){let z=[],Y=(Q)=>{if(!Q)return;return z.push(Q),J.fileExists(Q)?Q:void 0},Z=J.which("codex");if(Z){if(z.push(`which:${Z}`),J.fileExists(Z))return Z}let X=J.home();for(let Q of["/opt/homebrew/bin/codex","/usr/local/bin/codex","/usr/bin/codex","/bin/codex"]){let f=Y(Q);if(f)return f}let G=J.env("NVM_BIN");if(G){let Q=Y(W7.join(G,"codex"));if(Q)return Q}for(let Q of[".local/bin/codex",".bun/bin/codex","bin/codex"]){let f=Y(W7.join(X,Q));if(f)return f}throw new rQ(z)}var rQ,cO;var K7=b(()=>{rQ=class rQ extends Error{checkedPaths;constructor(J){super(`Codex CLI binary not found. Checked: ${J.join(", ")}. Ensure 'codex' is on PATH (e.g. \`brew install codex\` or the official installer).`);this.name="CodexBinaryNotFoundError",this.checkedPaths=J}};cO={fileExists(J){try{return vO(J).isFile()}catch{return!1}},env(J){return process.env[J]},home(){return mO()},which(J){let z=process.platform==="win32"?"where":"which",Y=PO(z,[J],{encoding:"utf8"});if(Y.status!==0)return;let Z=Y.stdout.split(`
20
- `).map((X)=>X.trim()).filter(Boolean)[0];if(!Z)return;if(Z.startsWith("codex:")&&Z.includes("aliased to")){let X=Z.split("aliased to")[1]?.trim();return X&&hO(X)?X:void 0}return Z},readdir(J){try{return uQ("fs").readdirSync(J)}catch{return[]}}}});import{spawnSync as dO}from"child_process";import{existsSync as nO,statSync as iO}from"fs";import{homedir as lO}from"os";import AY from"path";async function U7(J=$O){let z=[],Y=(V)=>{if(!V)return;return z.push(V),J.fileExists(V)?V:void 0},Z=J.which("copilot");if(Z){if(z.push(`which:${Z}`),J.fileExists(Z))return Z}let X=J.platform()==="win32"?["copilot.exe","copilot.cmd","copilot"]:["copilot"],G=(V)=>{if(!V)return;for(let j of X){let K=Y(AY.join(V,j));if(K)return K}return};for(let V of["/opt/homebrew/bin","/usr/local/bin","/usr/bin","/bin"]){let j=G(V);if(j)return j}let Q=J.env("NVM_BIN"),f=G(Q);if(f)return f;let H=J.home(),B=[AY.join(H,".npm-global/bin"),AY.join(H,".local/bin"),AY.join(H,".bun/bin"),AY.join(H,"bin")];if(J.platform()==="win32"){let V=J.env("APPDATA"),j=J.env("LOCALAPPDATA");if(B.unshift(AY.join(H,"AppData/Roaming/npm")),V)B.unshift(AY.join(V,"npm"));if(j)B.unshift(AY.join(j,"npm"))}for(let V of B){let j=G(V);if(j)return j}throw new oQ(z)}var oQ,$O;var D7=b(()=>{oQ=class oQ extends Error{checkedPaths;constructor(J){super(`GitHub Copilot CLI binary not found. Checked: ${J.join(", ")}. Ensure 'copilot' is on PATH (for example \`npm install -g @github/copilot\` or \`brew install copilot-cli\`).`);this.name="CopilotBinaryNotFoundError",this.checkedPaths=J}};$O={fileExists(J){try{return iO(J).isFile()}catch{return!1}},env(J){return process.env[J]},home(){return lO()},which(J){let z=process.platform==="win32"?"where":"which",Y=dO(z,[J],{encoding:"utf8"});if(Y.status!==0)return;let Z=Y.stdout.split(`
21
- `).map((X)=>X.trim()).filter(Boolean)[0];if(!Z)return;if(Z.startsWith("copilot:")&&Z.includes("aliased to")){let X=Z.split("aliased to")[1]?.trim();return X&&nO(X)?X:void 0}return Z},platform(){return process.platform}}});import{readFileSync as aO,statSync as _O}from"fs";import{readFile as pO,stat as rO}from"fs/promises";async function iZ(J,z=L7){let{size:Y}=await rO(J);if(Y>z)return"";return pO(J,"utf8")}function M7(J,z=L7){let Y;try{Y=_O(J)}catch(Z){if(Z.code==="ENOENT")return null;throw Z}if(Y.size>z)return null;return aO(J,"utf8")}function RY(J,z=oO){return J.length<=z}var L7=104857600,oO=8388608;var QG=()=>{};import{homedir as sO}from"os";import gY from"path";function tO(J,z){let Y=J("CLAUDE_CONFIG_DIR")?.trim();if(Y)return gY.join(Y,".claude.json");return gY.join(z,".claude.json")}function eO(J,z){let Z=J("CODEX_HOME")?.trim()??gY.join(z,".codex");return gY.join(Z,"auth.json")}function J2(J,z){let Z=J("COPILOT_HOME")?.trim()??gY.join(z,".copilot");return gY.join(Z,"config.json")}function z2(J){let z=J.split(".");if(z.length!==3)return null;let Y=z[1];if(!Y)return null;let Z=Y.replace(/-/g,"+").replace(/_/g,"/"),X=Z+"=".repeat((4-Z.length%4)%4);try{let G=Buffer.from(X,"base64").toString("utf8"),Q=JSON.parse(G);return typeof Q==="object"&&Q!==null?Q:null}catch{return null}}async function tQ(J){try{return{found:!0,path:await J()}}catch(z){if(z instanceof pQ||z instanceof rQ||z instanceof oQ)return{found:!1,error:"not found on PATH"};return{found:!1,error:z instanceof Error?z.message:String(z)}}}async function F7(J){return(await Promise.all([["claude",()=>J.findClaudeBinary()],["codex",()=>J.findCodexBinary()],["copilot",()=>J.findCopilotBinary()]].map(async([Z,X])=>(await tQ(X)).found?Z:null))).filter((Z)=>Z!==null)}function Y2(J=lZ){if(J!==lZ)return F7(J);if(sQ)return sQ;let z=F7(J).catch((Y)=>{throw sQ=null,Y});return sQ=z,z}async function zY(J=lZ){return[...await Y2(J),...uJ()]}async function eQ(J=lZ){let z=await tQ(()=>J.findClaudeBinary()),Y=tO(J.env,J.home()),Z;try{Z=J.readFile(Y)}catch(H){return{binary:z,account:{kind:"none"},accountError:`read ${Y}: ${H instanceof Error?H.message:String(H)}`}}if(Z===null)return{binary:z,account:{kind:"none"}};let X;try{X=JSON.parse(Z)}catch(H){return{binary:z,account:{kind:"none"},accountError:`parse ${Y}: ${H instanceof Error?H.message:String(H)}`}}let G=X?.oauthAccount;if(!G||typeof G!=="object")return{binary:z,account:{kind:"none"}};let Q=G,f=typeof Q.emailAddress==="string"?Q.emailAddress:void 0;if(!f)return{binary:z,account:{kind:"none"}};return{binary:z,account:{kind:"oauth",email:f,organization:typeof Q.organizationName==="string"?Q.organizationName:void 0,displayName:typeof Q.displayName==="string"?Q.displayName:void 0,billingType:typeof Q.billingType==="string"?Q.billingType:void 0}}}async function Jq(J=lZ){let z=await tQ(()=>J.findCodexBinary()),Y=eO(J.env,J.home()),Z;try{Z=J.readFile(Y)}catch(B){return{binary:z,account:{kind:"none"},accountError:`read ${Y}: ${B instanceof Error?B.message:String(B)}`}}if(Z===null)return{binary:z,account:{kind:"none"}};let X;try{X=JSON.parse(Z)}catch(B){return{binary:z,account:{kind:"none"},accountError:`parse ${Y}: ${B instanceof Error?B.message:String(B)}`}}let G=X??{},Q=G.tokens,f=typeof Q?.id_token==="string"?Q.id_token:void 0;if(f){let B=z2(f);if(!B)return{binary:z,account:{kind:"none"},accountError:"codex id_token: malformed JWT"};let V=typeof B.email==="string"?B.email:void 0,j=B["https://api.openai.com/auth"],K=typeof j==="object"&&j!==null&&!Array.isArray(j)?j:void 0,L=typeof K?.chatgpt_plan_type==="string"?K.chatgpt_plan_type:void 0;if(V)return{binary:z,account:{kind:"chatgpt",email:V,plan:L}};return{binary:z,account:{kind:"none"},accountError:"codex id_token: no email claim"}}let H=G.OPENAI_API_KEY;if(typeof H==="string"&&H.length>0)return{binary:z,account:{kind:"apikey"}};return{binary:z,account:{kind:"none"}}}async function zq(J=lZ){let z=await tQ(()=>J.findCopilotBinary());for(let G of["COPILOT_GITHUB_TOKEN","GH_TOKEN","GITHUB_TOKEN"])if(J.env(G)?.trim())return{binary:z,account:{kind:"token",source:G}};let Y=J2(J.env,J.home()),Z;try{Z=J.readFile(Y)}catch(G){return{binary:z,account:{kind:"none"},accountError:`read ${Y}: ${G instanceof Error?G.message:String(G)}`}}if(Z===null)return{binary:z,account:{kind:"none"}};let X;try{X=JSON.parse(Z)}catch(G){return{binary:z,account:{kind:"none"},accountError:`parse ${Y}: ${G instanceof Error?G.message:String(G)}`}}if(!f8(X))return{binary:z,account:{kind:"none"}};if(O7(X,["github_token","oauth_token","access_token","token","selectedUser","currentUser","user"]))return{binary:z,account:{kind:"oauth"}};return{binary:z,account:{kind:"none"}}}function f8(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}function O7(J,z,Y=0){if(Y>4||!f8(J))return!1;for(let[Z,X]of Object.entries(J)){if(z.includes(Z)&&typeof X==="string"&&X.length>0)return!0;if(f8(X)&&O7(X,z,Y+1))return!0}return!1}var lZ,sQ=null;var ZZ=b(()=>{A1();j7();K7();D7();QG();lZ={readFile(J){return M7(J)},env(J){return process.env[J]},home(){return sO()},findClaudeBinary(){return B7()},findCodexBinary(){return V7()},findCopilotBinary(){return U7()}}});function A7(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 R7(J){return J.isMeta===!0||J.isCompactSummary===!0}function g7(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 cw,mkdir as dw,readdir as H8,stat as Z2,unlink as nw}from"fs/promises";import{homedir as C7}from"os";import Yq from"path";function G2(J){return J.replace(/[/.]/g,"-")}async function qG(J){if(!J)return[];let z=Yq.join(C7(),".claude","projects",G2(J)),Y;try{Y=await H8(z)}catch{return[]}let Z=[];for(let X of Y){if(!X.endsWith(".jsonl"))continue;let G=Yq.join(z,X),Q=0;try{Q=(await Z2(G)).mtimeMs}catch{}Z.push({sessionId:X.slice(0,-6),path:G,mtimeMs:Q})}return Z.sort((X,G)=>G.mtimeMs-X.mtimeMs),Z}async function N7(J){return(await qG(J))[0]?.mtimeMs??0}async function b7(J,z=X2){let Y=z.projectsDir(),Z=await z.readdir(Y);for(let X of Z){let G=Yq.join(Y,X,`${J}.jsonl`),Q;try{Q=await z.readFile(G)}catch{continue}return Q2(q2(Q,J))}return[]}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 q2(J,z){let Y=[];for(let Z of J.split(`
22
- `)){let X=Z.trim();if(!X)continue;if(!RY(X))continue;let G;try{G=JSON.parse(X)}catch{continue}if(!B8(G))continue;let Q=f2(G,z);if(Q)Y.push(Q)}return Y}function f2(J,z){if(R7(J))return null;let Y=B8(J.message)?J.message:J,Z=Y.role;if(Z!=="user"&&Z!=="assistant"&&Z!=="system")return null;if(!("content"in Y))return null;let X=A7(Y.content);if(Z==="user"&&g7(X))return null;let G=typeof J.timestamp==="string"?J.timestamp:new Date().toISOString(),Q=typeof J.sessionId==="string"?J.sessionId:z,f=H2(Y.usage);return f?{role:Z,blocks:X,timestamp:G,sessionId:Q,usage:f}:{role:Z,blocks:X,timestamp:G,sessionId:Q}}function H2(J){if(!B8(J))return;let z=typeof J.input_tokens==="number"?J.input_tokens:void 0,Y=typeof J.output_tokens==="number"?J.output_tokens:void 0;if(z===void 0||Y===void 0)return;let Z=typeof J.cache_read_input_tokens==="number"?J.cache_read_input_tokens:void 0,X=typeof J.cache_creation_input_tokens==="number"?J.cache_creation_input_tokens:void 0;return{input_tokens:z,output_tokens:Y,...Z!==void 0?{cache_read_input_tokens:Z}:{},...X!==void 0?{cache_creation_input_tokens:X}:{}}}function B8(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}var X2;var j8=b(()=>{QG();X2={projectsDir(){return Yq.join(C7(),".claude","projects")},async readdir(J){try{return await H8(J)}catch{return[]}},async readFile(J){return await iZ(J)},async pathExists(J){try{return await H8(J),!0}catch{return!1}}}});import{fileURLToPath as S7}from"url";function k1(){if(import.meta.url.endsWith(".js"))return["kobe"];let z=S7(new URL("./index.ts",import.meta.url)),Y=S7(import.meta.resolve("@opentui/solid/preload"));return[process.execPath,"--preload",Y,"--conditions=browser",z]}var YY=()=>{};function W8(J,z={}){if(z.bareSafe&&B2.test(J))return J;return`'${J.replace(/'/g,"'\\''")}'`}function Zq(J,z={}){return J.map((Y)=>W8(Y,z)).join(" ")}var B2;var V8=b(()=>{B2=/^[A-Za-z0-9_/.:=-]+$/});function HG(J){return`kobe-hidden-${J.replace(/[^A-Za-z0-9_-]/g,"")||"session"}`}function y7(J){let z=Number.parseInt(J.replace(/^@/,""),10);return Number.isFinite(z)&&z>=0?1000+z:1000}function L8(J){if(!Number.isFinite(J))return T7;return Math.max(j2,Math.min(W2,Math.round(J)))}function XZ(J){if(!Number.isFinite(J))return null;return Math.max(V2,Math.min(K2,Math.round(J)))}function u7(J){let z=Number.parseInt(J[Xq]??"",10),Y=Number.isFinite(z)&&z>0?L8(z):T7,Z=XZ(Number.parseInt(J[Gq]??"",10)),X=XZ(Number.parseInt(J[Qq]??"",10)),G=[];if(Z!==null)G.push("-x",`${Z}%`);if(X!==null)G.push("-y",`${X}%`);return{tasksWidth:Y,rightColumnWidthPct:Z??100-M8,opsHeightPct:X??BG,rightColumnResizeArgs:G}}function Z1(J){return W8(J)}function NJ(J){return Zq(J)}function bJ(J,z){let X=`${z?K8:""}${J}; __rc=$?; [ "$__rc" -ne 0 ] && printf '${"\\n \u26A0 Engine exited (code %s). Check Settings \u2192 Engines and fix the launch command.\\n\\n"}' "$__rc"; `;return z?`${X}"\${SHELL:-/bin/sh}"; ${z}`:`${X}exec "\${SHELL:-/bin/sh}"`}function aZ(J,z,Y){return`${J}${z.map(Z1).join(" ")} engine-tab-exit --session ${Z1(Y)}`}function U8(J){return`'${J.replace(/'/g,"'\\''")}'`}function E7(){return`clear; printf ${U8("\\n No task selected\\n\\n Press N to create a task, or pick one on the left.\\n\\n")}; exec "\${SHELL:-/bin/sh}"`}function F8(J){let z=typeof J==="number"?J:J==null?Number.NaN:Number.parseInt(J,10);if(!Number.isFinite(z))return U2;return Math.max(D2,Math.min(L2,Math.round(z)))}function M2(J,z){let Y=String(z),Z="\\n \u26A0 Repo init (.kobe/init.sh) timed out after %ss and was killed; continuing to the engine.\\n\\n",X="\\n \u26A0 Repo init (.kobe/init.sh) failed (code %s); continuing to the engine.\\n\\n";return['__kobe_init_env="${TMPDIR:-/tmp}/kobe-init-env.$$"','__kobe_init_to="${TMPDIR:-/tmp}/kobe-init-timeout.$$"','rm -f "$__kobe_init_env" "$__kobe_init_to" 2>/dev/null',"(",J,"__kobe_init_ec=$?",'export -p > "$__kobe_init_env" 2>/dev/null',"exit $__kobe_init_ec",") </dev/null &","__kobe_init_pid=$!",`( sleep ${Y}; : > "$__kobe_init_to"; kill -TERM "$__kobe_init_pid" 2>/dev/null; sleep 2; kill -KILL "$__kobe_init_pid" 2>/dev/null ) &`,"__kobe_init_wd=$!",'wait "$__kobe_init_pid" 2>/dev/null; __kobe_init_rc=$?','kill "$__kobe_init_wd" 2>/dev/null; wait "$__kobe_init_wd" 2>/dev/null',`if [ -f "$__kobe_init_to" ]; then __kobe_init_rc=124; printf '${"\\n \u26A0 Repo init (.kobe/init.sh) timed out after %ss and was killed; continuing to the engine.\\n\\n"}' '${Y}';`,'elif [ "$__kobe_init_rc" -eq 0 ]; then [ -f "$__kobe_init_env" ] && . "$__kobe_init_env" 2>/dev/null;',`else printf '${"\\n \u26A0 Repo init (.kobe/init.sh) failed (code %s); continuing to the engine.\\n\\n"}' "$__kobe_init_rc"; fi`,'rm -f "$__kobe_init_env" "$__kobe_init_to" 2>/dev/null'].join(`
23
- `)}function w7(J,z,Y){let Z=bJ(J,Y),X=z?.initScript?.trim();if(!X)return Z;let G=F8(z?.timeoutSeconds),Q=M2(X,G);if(z?.markerPath){let f=U8(z.markerPath),H=U8(F2(z.markerPath));return K8+[`if [ ! -f ${f} ]; then`,Q,`if [ "$__kobe_init_rc" -eq 0 ]; then mkdir -p ${H} && : > ${f}; fi`,"fi",Z].join(`
24
- `)}return K8+[Q,Z].join(`
25
- `)}function F2(J){let z=J.lastIndexOf("/");return z<=0?".":J.slice(0,z)}function I7(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 P7(J){let z=Z1(J.worktree),Y=Z1(J.relPath),Z=J.cliInvocation.map(Z1).join(" "),X=`cd ${z} && if ! git diff --quiet HEAD -- ${Y} 2>/dev/null; then git diff HEAD -- ${Y} | { delta --paging=always 2>/dev/null || less -R; }; else bat --style=plain --paging=always ${Y} 2>/dev/null || \${PAGER:-less} ${Y} 2>/dev/null || cat ${Y}; fi`;return`${Z} ops --worktree ${z} --preview ${Y} || { ${X}; }`}function h7(J){return`${NJ([...J.cliInvocation,"update-page"])}`}function v7(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 NY(J,z={}){let Y=[...J,"tasks"];if(z.initialTaskId)Y.push("--initial-task-id",z.initialTaskId);return NJ(Y)}function _Z(J){if(J.taskId&&J.claudePaneId){let z=J.cliInvocation.map(Z1).join(" "),Y=J.vendor?` --vendor ${Z1(J.vendor)}`:"";return`KOBE_FILETREE_WATCH=1 ${z} ops --task-id ${Z1(J.taskId)} --worktree ${Z1(J.cwd)} --target-pane ${Z1(J.claudePaneId)}${Y} || { ${I7(J.cwd)}; }`}return I7(J.cwd)}var T7=32,_J="tasks",GZ="claude",Hz="ops",Bz="shell",fG="workspace_aux",D8=4,jz="@kobe_hidden_shell_pane",CJ="@kobe_hidden_tasks_pane",CY="@kobe_zen_panes",$Z="@kobe_zen",Xq="@kobe_tasks_width",j2=16,W2=120,M8=60,BG=50,Gq="@kobe_right_width_pct",Qq="@kobe_ops_height_pct",V2=10,K2=90,x7,K8="trap ':' INT; ",U2=120,D2=5,L2=3600;var Wz=b(()=>{V8();x7=[Xq,Gq,Qq]});function pJ(J){return!!J&&typeof J==="object"&&!Array.isArray(J)}function A2(J){return J.map((z)=>NJ(["hook",z.verb]))}function R2(J,z){if(!pJ(J)||!Array.isArray(J.hooks))return!1;return J.hooks.some((Y)=>pJ(Y)&&typeof Y.command==="string"&&z.some((Z)=>Y.command.includes(Z)))}function d7(J,z=k1()){let Y={};for(let{event:Z,matcher:X,verb:G}of J){let f={hooks:[{type:"command",command:NJ([...z,"hook",G])}]};if(X)f.matcher=X;Y[Z]=[f]}return Y}function qq(J,z,Y,Z=k1()){let X=A2(Y),{hooks:G,...Q}=J,f=pJ(G)?{...G}:{},H=z?d7(Y,Z):{};for(let{event:B}of Y){let j=(Array.isArray(f[B])?f[B]:[]).filter((K)=>!R2(K,X));if(z&&Array.isArray(H[B]))j.push(...H[B]);if(j.length>0)f[B]=j;else delete f[B]}return Object.keys(f).length>0?{...Q,hooks:f}:{...Q}}function n7(J=k1()){let z=NJ([...J,"hook",c7]);return{[m7]:[{matcher:O2,hooks:[{type:"command",command:z}]}]}}function g2(J){if(!pJ(J)||!Array.isArray(J.hooks))return!1;return J.hooks.some((z)=>pJ(z)&&typeof z.command==="string"&&z.command.includes(c7))}function fq(J,z,Y=k1()){let{hooks:Z,...X}=J,G=pJ(Z)?{...Z}:{},Q=m7,H=(Array.isArray(G[Q])?G[Q]:[]).filter((B)=>!g2(B));if(z)H.push(...n7(Y)[Q]);if(H.length>0)G[Q]=H;else delete G[Q];return Object.keys(G).length>0?{...X,hooks:G}:{...X}}var m7="PostToolUse",O2="Bash",c7="worktree-created";var O8=b(()=>{YY();Wz()});import{mkdir as C2,readFile as N2,writeFile as b2}from"fs/promises";import{dirname as k2}from"path";async function S2(J){try{let z=JSON.parse(await N2(J,"utf8"));return pJ(z)?z:{}}catch{return{}}}async function pZ(J,z){try{let Y=await S2(J),Z=z(Y);if(JSON.stringify(Z)===JSON.stringify(Y))return;await C2(k2(J),{recursive:!0}),await b2(J,`${JSON.stringify(Z,null,2)}
26
- `)}catch{}}class jG{supportsHooks(){return!0}activityDetailFromPayload(J,z){return}supportsWorktreeSync(){return!1}async removeWorktreeSyncHook(J){}async installActivityHooks(J){await pZ(J,(z)=>qq(z,!0,this.eventMap))}async removeActivityHooks(J){await pZ(J,(z)=>qq(z,!1,this.eventMap))}async installWorktreeWatchHook(J){await pZ(J,(z)=>fq(z,!0))}async removeWorktreeWatchHook(J){await pZ(J,(z)=>fq(z,!1))}}var A8=b(()=>{O8()});import{homedir as I2}from"os";import{join as T2}from"path";function y2(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 x2(){return T2(I2(),".claude","settings.json")}function E2(J){if(!pJ(J)||!Array.isArray(J.hooks))return!1;return J.hooks.some((z)=>pJ(z)&&typeof z.command==="string"&&z.command.includes(u2))}function w2(J,z){let{hooks:Y,...Z}=J,{WorktreeCreate:X,...G}=pJ(Y)?Y:{},f=(Array.isArray(X)?X:[]).filter((B)=>!E2(B));if(z!==null)f.push({hooks:[{type:"command",command:z}]});let H={...G};if(f.length>0)H.WorktreeCreate=f;return Object.keys(H).length>0?{...Z,hooks:H}:{...Z}}var i7,BP,u2="worktree-created",R8;var l7=b(()=>{A8();O8();i7=[{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"}],BP=i7.map((J)=>J.event);R8=class R8 extends jG{vendor="claude";eventMap=i7;globalSettingsPath(){return x2()}activityDetailFromPayload(J,z){if(J==="turn-failed")return{failure:y2(z.error_type)};if(J==="awaiting-input")return{waiting:"permission"};return}supportsWorktreeSync(){return!0}async removeWorktreeSyncHook(J){await pZ(J,(z)=>w2(z,null))}}});function g8(J){if(typeof J==="string")return J.length>0?[{type:"text",text:J}]:[];if(!Array.isArray(J))return[];let z=[];for(let Y of J){if(typeof Y==="string"){if(Y.length>0)z.push({type:"text",text:Y});continue}if(!P2(Y))continue;let Z=typeof Y.type==="string"?Y.type:void 0;if(Z==="input_text"||Z==="output_text"){let X=typeof Y.text==="string"?Y.text:"";if(X.length>0)z.push({type:"text",text:X});continue}if(Z)z.push({type:"text",text:`[codex: ${Z}]`})}return z}function P2(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}function $7(J){if(J.length===0)return!1;for(let z of J){if(z.type!=="text")return!1;let Y=(z.text??"").trim();if(!h2(Y)&&!v2(Y))return!1}return!0}function h2(J){return J.startsWith("<environment_context>")&&J.endsWith("</environment_context>")}function v2(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 $O}from"child_process";import{existsSync as aO,statSync as _O}from"fs";import{homedir as pO}from"os";import fX from"path";async function DV(J=rO){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,rO;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}};rO={fileExists(J){try{return _O(J).isFile()}catch{return!1}},env(J){return process.env[J]},home(){return pO()},which(J){let z=process.platform==="win32"?"where":"which",Y=$O(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&&aO(G)?G:void 0}return Z},readdir(J){try{return PQ("fs").readdirSync(J)}catch{return[]}}}});import{spawnSync as oO}from"child_process";import{existsSync as sO,statSync as tO}from"fs";import{homedir as eO}from"os";import FV from"path";async function MV(J=JA){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,JA;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}};JA={fileExists(J){try{return tO(J).isFile()}catch{return!1}},env(J){return process.env[J]},home(){return eO()},which(J){let z=process.platform==="win32"?"where":"which",Y=oO(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&&sO(G)?G:void 0}return Z},readdir(J){try{return PQ("fs").readdirSync(J)}catch{return[]}}}});import{spawnSync as zA}from"child_process";import{existsSync as YA,statSync as ZA}from"fs";import{homedir as GA}from"os";import CY from"path";async function AV(J=XA){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,XA;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}};XA={fileExists(J){try{return ZA(J).isFile()}catch{return!1}},env(J){return process.env[J]},home(){return GA()},which(J){let z=process.platform==="win32"?"where":"which",Y=zA(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&&YA(G)?G:void 0}return Z},platform(){return process.platform}}});import{readFileSync as QA,statSync as qA}from"fs";import{readFile as HA,stat as fA}from"fs/promises";async function aZ(J,z=gV){let{size:Y}=await fA(J);if(Y>z)return"";return HA(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 QA(J,"utf8")}function kY(J,z=jA){return J.length<=z}var gV=104857600,jA=8388608;var jX=()=>{};import{homedir as BA}from"os";import bY from"path";function WA(J,z){let Y=J("CLAUDE_CONFIG_DIR")?.trim();if(Y)return bY.join(Y,".claude.json");return bY.join(z,".claude.json")}function VA(J,z){let Z=J("CODEX_HOME")?.trim()??bY.join(z,".codex");return bY.join(Z,"auth.json")}function KA(J,z){let Z=J("COPILOT_HOME")?.trim()??bY.join(z,".copilot");return bY.join(Z,"config.json")}function UA(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 DA(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 DA(J),...EJ()]}async function Yq(J=_Z){let z=await zq(()=>J.findClaudeBinary()),Y=WA(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=VA(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=UA(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=KA(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 BA()},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 BP,mkdir as WP,readdir as K8,stat as LA,unlink as VP}from"fs/promises";import{homedir as yV}from"os";import Xq from"path";function MA(J){return J.replace(/[/.]/g,"-")}async function BX(J){if(!J)return[];let z=Xq.join(yV(),".claude","projects",MA(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 LA(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=FA){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 OA(AA(Q,J))}return[]}function OA(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 AA(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=RA(X,z);if(Q)Y.push(Q)}return Y}function RA(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=gA(Y.usage);return H?{role:Z,blocks:G,timestamp:X,sessionId:Q,usage:H}:{role:Z,blocks:G,timestamp:X,sessionId:Q}}function gA(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 FA;var D8=C(()=>{jX();FA={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&&NA.test(J))return J;return`'${J.replace(/'/g,"'\\''")}'`}function Qq(J,z={}){return J.map((Y)=>L8(Y,z)).join(" ")}var NA;var F8=C(()=>{NA=/^[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(CA,Math.min(kA,Math.round(J)))}function QZ(J){if(!Number.isFinite(J))return null;return Math.max(bA,Math.min(SA,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 cV(J){return`trap '' INT; while :; do ${J}; sleep 1; done`}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 dV(){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 IA;return Math.max(yA,Math.min(TA,Math.round(z)))}function xA(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 nV(J,z,Y){let Z=SJ(J,Y),G=z?.initScript?.trim();if(!G)return Z;let X=N8(z?.timeoutSeconds),Q=xA(G,X);if(z?.markerPath){let H=O8(z.markerPath),f=O8(uA(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 uA(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 iV(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 lV(J){return`${bJ([...J.cliInvocation,"update-page"])}`}function $V(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",CA=16,kA=120,g8=60,KX=50,Hq="@kobe_right_width_pct",fq="@kobe_ops_height_pct",bA=10,SA=90,vV,M8="trap ':' INT; ",IA=120,yA=5,TA=3600;var Uz=C(()=>{F8();vV=[qq,Hq,fq]});function sJ(J){return!!J&&typeof J==="object"&&!Array.isArray(J)}function wA(J){return J.map((z)=>bJ(["hook",z.verb]))}function PA(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 pV(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=wA(Y),{hooks:X,...Q}=J,H=sJ(X)?{...X}:{},f=z?pV(Y,Z):{};for(let{event:j}of Y){let B=(Array.isArray(H[j])?H[j]:[]).filter((K)=>!PA(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 rV(J=b1()){let z=bJ([...J,"hook",_V]);return{[aV]:[{matcher:EA,hooks:[{type:"command",command:z}]}]}}function hA(J){if(!sJ(J)||!Array.isArray(J.hooks))return!1;return J.hooks.some((z)=>sJ(z)&&typeof z.command==="string"&&z.command.includes(_V))}function Bq(J,z,Y=b1()){let{hooks:Z,...G}=J,X=sJ(Z)?{...Z}:{},Q=aV,f=(Array.isArray(X[Q])?X[Q]:[]).filter((j)=>!hA(j));if(z)f.push(...rV(Y)[Q]);if(f.length>0)X[Q]=f;else delete X[Q];return Object.keys(X).length>0?{...G,hooks:X}:{...G}}var aV="PostToolUse",EA="Bash",_V="worktree-created";var C8=C(()=>{YY();Uz()});import{mkdir as vA,readFile as mA,writeFile as cA}from"fs/promises";import{dirname as dA}from"path";async function nA(J){try{let z=JSON.parse(await mA(J,"utf8"));return sJ(z)?z:{}}catch{return{}}}async function sZ(J,z){try{let Y=await nA(J),Z=z(Y);if(JSON.stringify(Z)===JSON.stringify(Y))return;await vA(dA(J),{recursive:!0}),await cA(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 iA}from"os";import{join as lA}from"path";function $A(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 aA(){return lA(iA(),".claude","settings.json")}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(_A))}function rA(J,z){let{hooks:Y,...Z}=J,{WorktreeCreate:G,...X}=sJ(Y)?Y:{},H=(Array.isArray(G)?G:[]).filter((j)=>!pA(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 oV,wP,_A="worktree-created",b8;var sV=C(()=>{k8();C8();oV=[{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"}],wP=oV.map((J)=>J.event);b8=class b8 extends UX{vendor="claude";eventMap=oV;globalSettingsPath(){return aA()}activityDetailFromPayload(J,z){if(J==="turn-failed")return{failure:$A(z.error_type)};if(J==="awaiting-input")return{waiting:"permission"};return}supportsWorktreeSync(){return!0}async removeWorktreeSyncHook(J){await sZ(J,(z)=>rA(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(!oA(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 oA(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}function tV(J){if(J.length===0)return!1;for(let z of J){if(z.type!=="text")return!1;let Y=(z.text??"").trim();if(!sA(Y)&&!tA(Y))return!1}return!0}function sA(J){return J.startsWith("<environment_context>")&&J.endsWith("</environment_context>")}function tA(J){return J.startsWith("# AGENTS.md instructions for ")&&J.includes(`
27
27
  <INSTRUCTIONS>
28
- `)&&J.endsWith("</INSTRUCTIONS>")}var a7=()=>{};function _7(J,z={}){let Y=C8(J.input_tokens,0),Z=C8(J.cached_input_tokens,0),X=C8(J.output_tokens,0),G=Math.max(0,Y-Z);if(Y<=0&&X<=0&&Z<=0)return;return{input_tokens:G,output_tokens:X,...Z>0?{cache_read_input_tokens:Z}:{},...m2(z.contextWindowTokens)?{context_window_tokens:z.contextWindowTokens}:{}}}function C8(J,z){return typeof J==="number"&&Number.isFinite(J)?J:z}function m2(J){return typeof J==="number"&&Number.isFinite(J)&&J>0}import{readdir as c2,stat as d2,unlink as LP}from"fs/promises";import{homedir as n2}from"os";import QZ from"path";async function S8(J=qZ){let z=J.sessionsDir(),Y=(await J.readdir(z)).sort().reverse(),Z=[];for(let X of Y){let G=QZ.join(z,X),Q=(await J.readdir(G)).sort().reverse();for(let f of Q){let H=QZ.join(G,f),B=(await J.readdir(H)).sort().reverse();for(let V of B){let j=QZ.join(H,V),K=(await J.readdir(j)).filter((L)=>L.startsWith("rollout-")&&L.endsWith(".jsonl"));K.sort().reverse();for(let L of K)if(Z.push(QZ.join(j,L)),Z.length>=p7){if(!r7)r7=!0,console.warn(`[codex history] rollout scan truncated at ${p7} files; older sessions may be omitted`);return Z}}}}return Z}async function i2(J,z=qZ){if(!J)return;let Y=J.toLowerCase(),Z=await S8(z);for(let X of Z)if(QZ.basename(X).match(e7)?.[1]?.toLowerCase()===Y)return X;return}function l2(J){for(let z of J.split(`
29
- `)){let Y=z.trim();if(!Y)continue;if(!RY(Y))return"";try{let Z=JSON.parse(Y);if(Z.type==="session_meta")return Z.payload?.cwd??""}catch{}return""}return""}async function JV(J,z){let Y=o7.get(z);if(!Y)Y=new Map,o7.set(z,Y);let Z=Y.get(J);if(Z!==void 0)return Z;let X;try{X=await z.readFile(J)}catch{return null}let G=l2(X);if(G)Y.set(J,G);return G}async function zV(J,z=qZ){if(!J)return[];let Y=await S8(z),Z=[],X=0;for(let G of Y){if(X>=$2)break;if(X++,await JV(G,z)!==J)continue;let Q=QZ.basename(G).match(e7)?.[1];if(Q)Z.push(Q)}return Z.reverse()}async function I8(J,z=qZ){if(!J)return null;let Y=await S8(z),Z=0;for(let X of Y){if(Z>=a2)break;if(Z++,await JV(X,z)!==J)continue;try{return{path:X,mtimeMs:(await z.stat(X)).mtimeMs}}catch{}}return null}async function YV(J,z=qZ){return(await I8(J,z))?.mtimeMs??0}async function ZV(J,z=qZ){return(await _2(J,z)).messages}async function _2(J,z=qZ){let Y=await i2(J,z);if(!Y)return{messages:[]};let Z;try{Z=await z.readFile(Y)}catch{return{messages:[]}}let X=p2(r2(Z,J)),G=JA(Z);return{messages:X,...G?{usageMetrics:G}:{}}}function p2(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 r2(J,z){let Y=[];for(let Z of J.split(`
30
- `)){let X=Z.trim();if(!X)continue;if(!RY(X))continue;let G;try{G=JSON.parse(X)}catch{continue}if(!WG(G))continue;if(G.type!=="response_item")continue;let Q=WG(G.payload)?G.payload:void 0;if(!Q)continue;let f=typeof G.timestamp==="string"?G.timestamp:new Date().toISOString(),H=o2(Q,f,z);if(H)Y.push(H)}return Y}function o2(J,z,Y){if(J.type==="message"){let Z=J.role;if(Z!=="user"&&Z!=="assistant"&&Z!=="system")return;let X=g8(J.content);if(Z==="user"&&$7(X))return;return{role:Z,blocks:X,timestamp:z,sessionId:Y}}if(J.type==="reasoning")return s2(J,z,Y);if(J.type==="function_call")return N8(J,z,Y,{name:k8(J.name,"function_call"),input:b8(J.arguments)});if(J.type==="custom_tool_call")return N8(J,z,Y,{name:k8(J.name,"custom_tool_call"),input:b8(J.input)});if(J.type==="tool_search_call")return N8(J,z,Y,{name:"tool_search_call",input:Hq(J,["type","call_id","status"])});if(J.type==="function_call_output"||J.type==="custom_tool_call_output")return s7(J,z,Y,b8(J.output));if(J.type==="tool_search_output")return s7(J,z,Y,Hq(J,["type","call_id"]));if(J.type==="web_search_call"||J.type==="image_generation_call"||J.type==="local_shell_call")return t2(J,z,Y);return}function s2(J,z,Y){let Z=e2(J);if(Z.length===0)return;return{role:"assistant",blocks:[{type:"thinking",text:Z}],timestamp:z,sessionId:Y}}function N8(J,z,Y,Z){let X=typeof J.call_id==="string"?J.call_id:void 0;if(!X)return;return{role:"assistant",blocks:[{type:"tool_call",callId:X,name:Z.name,input:Z.input}],timestamp:z,sessionId:Y}}function s7(J,z,Y,Z){let X=typeof J.call_id==="string"?J.call_id:void 0;if(!X)return;return{role:"user",blocks:[{type:"tool_result",callId:X,output:Z,isError:!1}],timestamp:z,sessionId:Y}}function t2(J,z,Y){let Z=typeof J.type==="string"?J.type:"tool",X=typeof J.call_id==="string"&&J.call_id.length>0?J.call_id:`${Z}:${z}`,G=k8(J.name,Z),Q=Hq(J,["type","call_id","status"]),f=Hq(J,["type","call_id"]);return{role:"assistant",timestamp:z,sessionId:Y,blocks:[{type:"tool_call",callId:X,name:G,input:Q},{type:"tool_result",callId:X,output:f,isError:!1}]}}function e2(J){let z=t7(J.content);if(z.length>0)return z;let Y=typeof J.text==="string"?J.text:"";if(Y.length>0)return Y;return t7(J.summary)}function t7(J){if(typeof J==="string")return J;if(!Array.isArray(J))return"";let z=[];for(let Y of J){if(typeof Y==="string"){z.push(Y);continue}if(!WG(Y))continue;let Z=typeof Y.text==="string"?Y.text:"";if(Z.length>0)z.push(Z)}return z.join("")}function Hq(J,z){let Y={};for(let[Z,X]of Object.entries(J))if(!z.includes(Z))Y[Z]=X;return Y}function k8(J,z){return typeof J==="string"&&J.length>0?J:z}function b8(J){if(typeof J!=="string")return J;try{return JSON.parse(J)}catch{return J}}function JA(J){let z,Y=null;for(let Z of J.split(`
31
- `)){let X=Z.trim();if(!X)continue;if(!RY(X))continue;let G;try{G=JSON.parse(X)}catch{continue}if(!WG(G))continue;let Q=typeof G.timestamp==="string"?zA(G.timestamp):null;if(G.type==="response_item")continue;if(G.type!=="turn.completed")continue;let f=WG(G.usage)?G.usage:void 0;if(!f)continue;let H=_7(f);if(!H)continue;if(Q!==null&&(Y===null||Q>Y))Y=Q,z=H;else if(Y===null)z=H}return z}function zA(J){let z=new Date(J).getTime();return Number.isFinite(z)?z:null}function WG(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}var qZ,p7=5000,r7=!1,e7,o7,$2=200,a2=12;var T8=b(()=>{QG();a7();qZ={sessionsDir(){return QZ.join(n2(),".codex","sessions")},async readdir(J){try{return await c2(J)}catch{return[]}},async readFile(J){return await iZ(J)},stat:d2};e7=/([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})\.jsonl$/i;o7=new WeakMap});import{homedir as YA}from"os";import{join as ZA}from"path";function XA(){return ZA(YA(),".codex","hooks.json")}var GV,kP,y8;var QV=b(()=>{A8();GV=[{event:"SessionStart",verb:"session-start"},{event:"UserPromptSubmit",verb:"turn-start"},{event:"Stop",verb:"turn-complete"}],kP=GV.map((J)=>J.event);y8=class y8 extends jG{vendor="codex";eventMap=GV;globalSettingsPath(){return XA()}}});function qV(J){if(!Bq(J))return;let z=Bq(J.modelMetrics)?J.modelMetrics:void 0;if(!z)return;let Y=0,Z=0,X=0;for(let Q of Object.values(z)){if(!Bq(Q)||!Bq(Q.usage))continue;Y+=jq(Q.usage.inputTokens,0),Z+=jq(Q.usage.outputTokens,0),X+=jq(Q.usage.cacheReadTokens,0)}let G=jq(J.currentTokens,0);if(Y===0&&Z===0&&X===0&&G===0)return;return{input_tokens:Y,output_tokens:Z,...X>0?{cache_read_input_tokens:X}:{},...G>0?{context_tokens:G}:{}}}function Bq(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}function jq(J,z){return typeof J==="number"&&Number.isFinite(J)?J:z}import{readdir as GA,rm as QA,stat as qA}from"fs/promises";import{homedir as fA}from"os";import bY from"path";async function u8(J=fZ){let z=bY.join(J.copilotDir(),"session-state");return(await J.readdir(z)).map((Z)=>bY.join(z,Z))}async function fV(J,z=fZ){let Y=[];for(let Z of await u8(z)){let X=await E8(Z,z);if(X.cwd!==J)continue;Y.push({id:X.id??bY.basename(Z),updatedAt:X.updatedAt??""})}return Y.sort((Z,X)=>Z.updatedAt.localeCompare(X.updatedAt)).map((Z)=>Z.id)}async function HV(J,z=fZ){if(!J)return 0;let Y=0;for(let Z of await u8(z)){if((await E8(Z,z)).cwd!==J)continue;try{let{mtimeMs:G}=await z.stat(bY.join(Z,"events.jsonl"));if(G>Y)Y=G}catch{}}return Y}async function HA(J,z=fZ){let Y=await BA(J,z);if(!Y)return{messages:[]};let Z=await z.readFile(bY.join(Y,"events.jsonl")).catch(()=>""),X=WA(Z,J);return{messages:X.messages,...X.usageMetrics?{usageMetrics:X.usageMetrics}:{}}}async function BV(J,z=fZ){return(await HA(J,z)).messages}async function BA(J,z=fZ){for(let Y of await u8(z)){if(bY.basename(Y)===J)return Y;let Z=await E8(Y,z);if(Z.id===J||Z.name?.toLowerCase()===J.toLowerCase())return Y}return}async function E8(J,z=fZ){let Y=await z.readFile(bY.join(J,"workspace.yaml")).catch(()=>"");return jA(Y)}function jA(J){let z={};for(let Y of J.split(`
32
- `)){let Z=Y.match(/^([A-Za-z_]+):\s*(.*)$/);if(!Z)continue;let X=Z[1],G=Z[2]??"";if(G.startsWith('"')&&G.endsWith('"'))G=G.slice(1,-1).replace(/\\"/g,'"');z[X]=G}return{id:z.id,cwd:z.cwd,name:z.name,updatedAt:z.updated_at,createdAt:z.created_at}}function WA(J,z){let Y=[],Z=new Map,X=z,G,Q=null;for(let f of J.split(`
33
- `)){let H=f.trim();if(!H)continue;if(!RY(H))continue;let B;try{B=JSON.parse(H)}catch{continue}if(!x8(B)||typeof B.type!=="string")continue;let V=typeof B.timestamp==="string"?B.timestamp:new Date().toISOString(),j=x8(B.data)?B.data:{};if(B.type==="session.start"){let K=typeof j.sessionId==="string"?j.sessionId:void 0;if(K)X=K;continue}if(B.type==="user.message"){let K=typeof j.content==="string"?j.content:"";if(!K)continue;if(!Q)Q=Buffer.from(K.slice(0,VA),"utf8").toString("utf8");Y.push({role:"user",blocks:[{type:"text",text:K}],timestamp:V,sessionId:X});continue}if(B.type==="assistant.message"){let K=[],L=typeof j.content==="string"?j.content:"";if(L)K.push({type:"text",text:L});let A=Array.isArray(j.toolRequests)?j.toolRequests:[];for(let O of A){if(!x8(O))continue;let R=typeof O.id==="string"?O.id:typeof O.toolCallId==="string"?O.toolCallId:"tool",x=typeof O.name==="string"?O.name:typeof O.toolName==="string"?O.toolName:"tool";K.push({type:"tool_call",callId:R,name:x,input:O.arguments??{}})}if(K.length>0)Y.push({role:"assistant",blocks:K,timestamp:V,sessionId:X});continue}if(B.type==="tool.execution_start"){let K=typeof j.toolCallId==="string"?j.toolCallId:void 0,L=typeof j.toolName==="string"?j.toolName:"tool";if(K)Z.set(K,L);continue}if(B.type==="tool.execution_complete"){let K=typeof j.toolCallId==="string"?j.toolCallId:void 0;if(!K)continue;let L=Z.get(K)??(typeof j.toolName==="string"?j.toolName:"tool"),A=j.result??(j.success===!1?{success:!1}:void 0);Y.push({role:"assistant",blocks:[{type:"tool_result",callId:K,output:A,isError:j.success===!1}],timestamp:V,sessionId:X});continue}if(B.type==="session.shutdown")G=qV(j)}return{messages:Y,usageMetrics:G,firstUserMessage:Q}}function x8(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}var fZ,VA=200;var jV=b(()=>{QG();fZ={copilotDir(){let J=process.env.COPILOT_HOME?.trim();if(J)return J;return bY.join(fA(),".copilot")},async readdir(J){try{return await GA(J)}catch{return[]}},async readFile(J){return await iZ(J)},stat:qA,async rm(J){await QA(J,{recursive:!0,force:!0})}}});function w8(J){return JJ(J).createHookAdapter()}class Wq{vendor;constructor(J){this.vendor=J}supportsHooks(){return!1}globalSettingsPath(){return""}activityDetailFromPayload(){return}async installActivityHooks(){}async removeActivityHooks(){}supportsWorktreeSync(){return!1}async removeWorktreeSyncHook(){}async installWorktreeWatchHook(){}async removeWorktreeWatchHook(){}}var P8=b(()=>{kY()});import{readFile as WV}from"fs/promises";class Vq{supportsCompletionMarkers(){return!0}}function VG(J){return JJ(J).createTurnDetector()}function LA(J,z="claude",Y=0){let Z=null,X=0;for(let G of J.split(`
34
- `)){X++;let Q=VV(G);if(!Q)continue;let f=UV(Q.message)?Q.message:Q;if(f.role!=="assistant")continue;if(!("content"in f))continue;let H=KV(Q,Y),B={id:`claude:${z}:${H}:${X}`,timestampMs:H,source:"claude"};if(!Z||B.timestampMs>=Z.timestampMs)Z=B}return Z}function MA(J,z="codex"){let Y=null,Z=0;for(let X of J.split(`
35
- `)){Z++;let G=VV(X);if(!G||G.type!=="turn.completed")continue;let Q=KV(G,0),f={id:`codex:${z}:${Q}:${Z}`,timestampMs:Q,source:"codex"};if(!Y||f.timestampMs>=Y.timestampMs)Y=f}return Y}function VV(J){let z=J.trim();if(!z)return null;try{let Y=JSON.parse(z);return UV(Y)?Y:null}catch{return null}}function KV(J,z){let Y=typeof J.timestamp==="string"?Date.parse(J.timestamp):Number.NaN;return Number.isFinite(Y)?Y:z}function UV(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}var UA,h8,DA,v8,Kq;var Uq=b(()=>{j8();T8();kY();UA={listSessionFiles:(J)=>qG(J),readFile:(J)=>WV(J,"utf8")};h8=class h8 extends Vq{deps;vendor="claude";cache=new Map;constructor(J=UA){super();this.deps=J}async latestCompletion(J){let z=await this.deps.listSessionFiles(J),Y=null,Z=new Map;for(let X of z.slice(0,4)){let G=this.cache.get(X.path),Q;if(G&&X.mtimeMs>0&&G.mtimeMs===X.mtimeMs)Q=G.marker;else{let f=await this.deps.readFile(X.path).catch(()=>"");Q=LA(f,X.path,X.mtimeMs)}if(Z.set(X.path,{mtimeMs:X.mtimeMs,marker:Q}),Q&&(!Y||Q.timestampMs>Y.timestampMs))Y=Q}return this.cache=Z,Y}};DA={findLatestRollout:(J)=>I8(J),readFile:(J)=>WV(J,"utf8")};v8=class v8 extends Vq{deps;vendor="codex";cache=null;constructor(J=DA){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=MA(Y,z.path);return this.cache={path:z.path,mtimeMs:z.mtimeMs,marker:Z},Z}};Kq=class Kq extends Vq{vendor;constructor(J){super();this.vendor=J}supportsCompletionMarkers(){return!1}async latestCompletion(){return null}}});function CA(J){return{vendor:J,builtin:!1,displayName:J,defaultCommand:[J],history:FA,detectAccount:async()=>({binary:{found:!1,error:"custom engine: kobe has no account detector for it"},account:{kind:"none"}}),createHookAdapter:()=>new Wq(J),createTurnDetector:()=>new Kq(J)}}function JJ(J){return qJ(J)?gA[J]:CA(J)}var FA,OA,AA,RA,gA;var kY=b(()=>{$1();ZZ();j8();l7();T8();QV();jV();P8();Uq();FA={async listSessionIdsForWorktree(){return[]},async readHistory(){return[]},async latestTranscriptMtimeForWorktree(){return 0}},OA={async listSessionIdsForWorktree(J){return[...await qG(J)].sort((Y,Z)=>Y.mtimeMs-Z.mtimeMs).map((Y)=>Y.sessionId)},readHistory:(J)=>b7(J),latestTranscriptMtimeForWorktree:(J)=>N7(J)},AA={listSessionIdsForWorktree:(J)=>zV(J),readHistory:(J)=>ZV(J),latestTranscriptMtimeForWorktree:(J)=>YV(J)},RA={listSessionIdsForWorktree:(J)=>fV(J),readHistory:(J)=>BV(J),latestTranscriptMtimeForWorktree:(J)=>HV(J)},gA={claude:{vendor:"claude",builtin:!0,displayName:"Claude",defaultCommand:["claude"],history:OA,detectAccount:(J)=>eQ(J),createHookAdapter:()=>new R8,createTurnDetector:()=>new h8},codex:{vendor:"codex",builtin:!0,displayName:"Codex",defaultCommand:["codex"],effortLevels:["none","low","medium","high","xhigh"],history:AA,detectAccount:(J)=>Jq(J),createHookAdapter:()=>new y8,createTurnDetector:()=>new v8},copilot:{vendor:"copilot",builtin:!0,displayName:"Copilot",defaultCommand:["copilot"],history:RA,detectAccount:(J)=>zq(J),createHookAdapter:()=>new Wq("copilot"),createTurnDetector:()=>new Kq("copilot")}}});async function rZ(J,z){if(!z)return 0;return JJ(J).history.latestTranscriptMtimeForWorktree(z)}var Dq=b(()=>{kY()});function DV(J){return typeof J==="string"&&NA.includes(J)}var KG=(J)=>J,_1="claude",NA;var rJ=b(()=>{NA=["backlog","in_progress","in_review","done","canceled","error"]});function Lq(J){return bA.includes(J)}function LV(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 bA;var Mq=b(()=>{bA=["session-start","turn-start","turn-complete","turn-failed","awaiting-input","session-end"]});function kA(){let J=process.env.KOBE_ENGINE_STATE_TTL_MS;if(J===void 0)return MV;let z=Number(J);return Number.isFinite(z)&&z>0?z:MV}class m8{bus;staleMs;now;livenessAt;activity=new Map;constructor(J,z=kA(),Y=()=>Date.now(),Z=()=>Promise.resolve(void 0)){this.bus=J;this.staleMs=z;this.now=Y;this.livenessAt=Z}report(J,z,Y){let Z=this.activity.get(J);if(Z?.lapse)clearTimeout(Z.lapse);let X=LV(Z?.state,z,Y),G=this.now(),Q={state:X,detail:Y,at:G};if(X!=="idle"&&X!=="turn_complete")Q.lapse=this.armLapse(J,G);this.activity.set(J,Q),this.bus.publish("engine-state",this.payload(J,Q))}armLapse(J,z){let Y=setTimeout(()=>{this.handleLapse(J,z)},this.staleMs);return Y.unref?.(),Y}async handleLapse(J,z){let Y=this.activity.get(J);if(!Y||Y.at!==z)return;let Z;try{Z=await this.livenessAt(J)}catch{Z=void 0}let X=this.activity.get(J);if(!X||X.at!==z)return;if(Z!==void 0&&Z>this.now()-this.staleMs){X.lapse=this.armLapse(J,z);return}this.publishIdle(J)}clearTask(J){let z=this.activity.get(J);if(z?.lapse)clearTimeout(z.lapse);if(this.activity.delete(J),z)this.bus.publish("engine-state",{taskId:J,state:"idle",at:this.now()})}snapshotByTask(){let J={};for(let[z,Y]of this.activity)J[z]=this.payload(z,Y);return J}currentNonIdle(){let J=[];for(let[z,Y]of this.activity)if(Y.state!=="idle")J.push(this.payload(z,Y));return J}close(){for(let J of this.activity.values())if(J.lapse)clearTimeout(J.lapse);this.activity.clear()}publishIdle(J){let z={state:"idle",at:this.now()};this.activity.set(J,z),this.bus.publish("engine-state",this.payload(J,z))}payload(J,z){return{taskId:J,state:z.state,...z.detail?{detail:z.detail}:{},at:z.at}}}var MV=600000;var FV=b(()=>{Mq()});function OV(J){if(typeof J!=="string")return"";let z=J.replace(/\s+/g," ").trim();if(z.length===0)return"";let Y=[...z];if(Y.length<=40)return z;return`${Y.slice(0,40).join("")}\u2026`}function Fq(J,z){let Y=J.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,32),Z=z.slice(-6).toLowerCase();return`kobe/${Y||"task"}-${Z}`}function AV(J){let z=J.find((X)=>X.role==="user");if(!z)return"";let Y=z.blocks.filter((X)=>X.type==="text").map((X)=>X.text).join(" "),Z=OV(Y);return Z.length>0?Buffer.from(Z,"utf8").toString("utf8"):Z}async function oZ(J,z=_1){if(!J)return"";let{history:Y}=JJ(z),Z=await Y.listSessionIdsForWorktree(J);for(let X of Z.slice(0,SA)){let G=AV(await Y.readHistory(X));if(G)return G}return""}async function RV(J,z){if(!z)return"";try{return AV(await JJ(J).history.readHistory(z))}catch{return""}}var SA=8;var Oq=b(()=>{kY();rJ()});function gV(J){let z=String(J),Y=z.length-1;return I1.context.id+(Y?String.fromCharCode(96+Y):"")+z}function n8(J){I1.context=J}function IA(){return{...I1.context,id:I1.getNextContextId(),count:0}}function HZ(J,z){let Y=U1,Z=l0,X=J.length===0,G=z===void 0?Z:z,Q=X?{owned:null,cleanups:null,context:null,owner:null}:{owned:null,cleanups:null,context:G?G.context:null,owner:G},f=X?()=>J(()=>{throw Error("Dispose method must be an explicit argument to createRoot function")}):()=>J(()=>r1(()=>SY(Q)));Kz.afterCreateOwner&&Kz.afterCreateOwner(Q),l0=Q,U1=null;try{return kJ(f,!0)}finally{U1=Y,l0=Z}}function r(J,z){z=z?Object.assign({},Cq,z):Cq;let Y={value:J,observers:null,observerSlots:null,comparator:z.equals||void 0};{if(z.name)Y.name=z.name;if(z.internal)Y.internal=!0;else if(yV(Y),Kz.afterCreateSignal)Kz.afterCreateSignal(Y)}let Z=(X)=>{if(typeof X==="function")if(H0&&H0.running&&H0.sources.has(Y))X=X(Y.tValue);else X=X(Y.value);return l8(Y,X)};return[xV.bind(Y),Z]}function CV(J,z,Y){let Z=eZ(J,z,!0,EJ,Y);if(tZ&&H0&&H0.running)p1.push(Z);else BZ(Z)}function Tz(J,z,Y){let Z=eZ(J,z,!1,EJ,Y);if(tZ&&H0&&H0.running)p1.push(Z);else BZ(Z)}function r0(J,z,Y){TV=nA;let Z=eZ(J,z,!1,EJ,Y),X=LG&&wJ(LG);if(X)Z.suspense=X;if(!Y||!Y.render)Z.user=!0;WJ?WJ.push(Z):BZ(Z)}function U0(J,z,Y){Y=Y?Object.assign({},Cq,Y):Cq;let Z=eZ(J,z,!0,0,Y);if(Z.observers=null,Z.observerSlots=null,Z.comparator=Y.equals||void 0,tZ&&H0&&H0.running)Z.tState=EJ,p1.push(Z);else BZ(Z);return xV.bind(Z)}function wA(J){return J&&typeof J==="object"&&"then"in J}function Sq(J,z,Y){let Z,X,G;if(typeof z==="function")Z=J,X=z,G=Y||{};else Z=!0,X=J,G=z||{};let Q=null,f=c8,H=null,B=!1,V=!1,j="initialValue"in G,K=typeof Z==="function"&&U0(Z),L=new Set,[A,O]=(G.storage||r)(G.initialValue),[R,x]=r(void 0),[a,S]=r(void 0,{equals:!1}),[C,M]=r(j?"ready":"unresolved");if(I1.context){if(H=I1.getNextContextId(),G.ssrLoadFrom==="initial")f=G.initialValue;else if(I1.load&&I1.has(H))f=I1.load(H)}function I(T,f0,_,W0){if(Q===T){if(Q=null,W0!==void 0&&(j=!0),(T===f||f0===f)&&G.onHydrated)queueMicrotask(()=>G.onHydrated(W0,{value:f0}));if(f=c8,H0&&T&&B)H0.promises.delete(T),B=!1,kJ(()=>{H0.running=!0,$(f0,_)},!1);else $(f0,_)}return f0}function $(T,f0){kJ(()=>{if(f0===void 0)O(()=>T);M(f0!==void 0?"errored":j?"ready":"unresolved"),x(f0);for(let _ of L.keys())_.decrement();L.clear()},!1)}function i(){let T=LG&&wJ(LG),f0=A(),_=R();if(_!==void 0&&!Q)throw _;if(U1&&!U1.user&&T)CV(()=>{if(a(),Q){if(T.resolved&&H0&&B)H0.promises.add(Q);else if(!L.has(T))T.increment(),L.add(T)}});return f0}function e(T=!0){if(T!==!1&&V)return;V=!1;let f0=K?K():Z;if(B=H0&&H0.running,f0==null||f0===!1){I(Q,r1(A));return}if(H0&&Q)H0.promises.delete(Q);let _,W0=f!==c8?f:r1(()=>{try{return X(f0,{value:A(),refetching:T})}catch(R0){_=R0}});if(_!==void 0){I(Q,void 0,gq(_),f0);return}else if(!wA(W0))return I(Q,W0,void 0,f0),W0;if(Q=W0,"v"in W0){if(W0.s===1)I(Q,W0.v,void 0,f0);else I(Q,void 0,gq(W0.v),f0);return W0}return V=!0,queueMicrotask(()=>V=!1),kJ(()=>{M(j?"refreshing":"pending"),S()},!1),W0.then((R0)=>I(W0,R0,void 0,f0),(R0)=>I(W0,void 0,gq(R0),f0))}Object.defineProperties(i,{state:{get:()=>C()},error:{get:()=>R()},loading:{get(){let T=C();return T==="pending"||T==="refreshing"}},latest:{get(){if(!j)return i();let T=R();if(T&&!Q)throw T;return A()}}});let J0=l0;if(K)CV(()=>(J0=l0,e(!1)));else e(!1);return[i,{refetch:(T)=>hA(J0,()=>e(T)),mutate:O}]}function Iq(J){return kJ(J,!1)}function r1(J){if(!sZ&&U1===null)return J();let z=U1;U1=null;try{if(sZ)return sZ.untrack(J);return J()}finally{U1=z}}function SJ(J,z,Y){let Z=Array.isArray(J),X,G=Y&&Y.defer;return(Q)=>{let f;if(Z){f=Array(J.length);for(let B=0;B<J.length;B++)f[B]=J[B]()}else f=J();if(G)return G=!1,Q;let H=r1(()=>z(f,X,Q));return X=f,H}}function zJ(J){r0(()=>r1(J))}function S1(J){if(l0===null)console.warn("cleanups created outside a `createRoot` or `render` will never be run");else if(l0.cleanups===null)l0.cleanups=[J];else l0.cleanups.push(J);return J}function PA(J,z){if(UG||(UG=Symbol("error")),l0=eZ(void 0,void 0,!0),l0.context={...l0.context,[UG]:[z]},H0&&H0.running)H0.sources.add(l0);try{return J()}catch(Y){FG(Y)}finally{l0=l0.owner}}function Tq(){return U1}function hA(J,z){let Y=l0,Z=U1;l0=J,U1=null;try{return kJ(z,!0)}catch(X){FG(X)}finally{l0=Y,U1=Z}}function vA(J){if(H0&&H0.running)return J(),H0.done;let z=U1,Y=l0;return Promise.resolve().then(()=>{U1=z,l0=Y;let Z;if(tZ||LG)Z=H0||(H0={sources:new Set,effects:[],promises:new Set,disposed:new Set,queue:new Set,running:!0}),Z.done||(Z.done=new Promise((X)=>Z.resolve=X)),Z.running=!0;return kJ(J,!1),U1=l0=null,Z?Z.done:void 0})}function bV(J,z){let Y=eZ(()=>r1(()=>{return Object.assign(J,{[uA]:!0}),J(z)}),void 0,!0,0);return Y.props=z,Y.observers=null,Y.observerSlots=null,Y.name=J.name,Y.component=J,BZ(Y),Y.tValue!==void 0?Y.tValue:Y.value}function yV(J){if(l0){if(l0.sourceMap)l0.sourceMap.push(J);else l0.sourceMap=[J];J.graph=l0}if(Kz.afterRegisterGraph)Kz.afterRegisterGraph(J)}function yz(J,z){let Y=Symbol("context");return{id:Y,Provider:iA(Y,z),defaultValue:J}}function wJ(J){let z;return l0&&l0.context&&(z=l0.context[J.id])!==void 0?z:J.defaultValue}function mA(J){let z=U0(J),Y=U0(()=>i8(z()),void 0,{name:"children"});return Y.toArray=()=>{let Z=Y();return Array.isArray(Z)?Z:Z!=null?[Z]:[]},Y}function xV(){let J=H0&&H0.running;if(this.sources&&(J?this.tState:this.state))if((J?this.tState:this.state)===EJ)BZ(this);else{let z=p1;p1=null,kJ(()=>Nq(this),!1),p1=z}if(U1){let z=this.observers;if(!z||z[z.length-1]!==U1){let Y=z?z.length:0;if(!U1.sources)U1.sources=[this],U1.sourceSlots=[Y];else U1.sources.push(this),U1.sourceSlots.push(Y);if(!z)this.observers=[U1],this.observerSlots=[U1.sources.length-1];else z.push(U1),this.observerSlots.push(U1.sources.length-1)}}if(J&&H0.sources.has(this))return this.tValue;return this.value}function l8(J,z,Y){let Z=H0&&H0.running&&H0.sources.has(J)?J.tValue:J.value;if(!J.comparator||!J.comparator(Z,z)){if(H0){let X=H0.running;if(X||!Y&&H0.sources.has(J))H0.sources.add(J),J.tValue=z;if(!X)J.value=z}else J.value=z;if(J.observers&&J.observers.length)kJ(()=>{for(let X=0;X<J.observers.length;X+=1){let G=J.observers[X],Q=H0&&H0.running;if(Q&&H0.disposed.has(G))continue;if(Q?!G.tState:!G.state){if(G.pure)p1.push(G);else WJ.push(G);if(G.observers)EV(G)}if(!Q)G.state=EJ;else G.tState=EJ}if(p1.length>1e6){if(p1=[],TA)throw Error("Potential Infinite Loop Detected.");throw Error()}},!1)}return z}function BZ(J){if(!J.fn)return;SY(J);let z=kq;if(kV(J,H0&&H0.running&&H0.sources.has(J)?J.tValue:J.value,z),H0&&!H0.running&&H0.sources.has(J))queueMicrotask(()=>{kJ(()=>{H0&&(H0.running=!0),U1=l0=J,kV(J,J.tValue,z),U1=l0=null},!1)})}function kV(J,z,Y){let Z,X=l0,G=U1;U1=l0=J;try{Z=J.fn(z)}catch(Q){if(J.pure)if(H0&&H0.running)J.tState=EJ,J.tOwned&&J.tOwned.forEach(SY),J.tOwned=void 0;else J.state=EJ,J.owned&&J.owned.forEach(SY),J.owned=null;return J.updatedAt=Y+1,FG(Q)}finally{U1=G,l0=X}if(!J.updatedAt||J.updatedAt<=Y){if(J.updatedAt!=null&&"observers"in J)l8(J,Z,!0);else if(H0&&H0.running&&J.pure){if(!H0.sources.has(J))J.value=Z;H0.sources.add(J),J.tValue=Z}else J.value=Z;J.updatedAt=Y}}function eZ(J,z,Y,Z=EJ,X){let G={fn:J,state:Z,updatedAt:null,owned:null,sources:null,sourceSlots:null,cleanups:null,value:z,owner:l0,context:l0?l0.context:null,pure:Y};if(H0&&H0.running)G.state=0,G.tState=Z;if(l0===null)console.warn("computations created outside a `createRoot` or `render` will never be disposed");else if(l0!==EA)if(H0&&H0.running&&l0.pure)if(!l0.tOwned)l0.tOwned=[G];else l0.tOwned.push(G);else if(!l0.owned)l0.owned=[G];else l0.owned.push(G);if(X&&X.name)G.name=X.name;if(sZ&&G.fn){let Q=G.fn,[f,H]=r(void 0,{equals:!1}),B=sZ.factory(Q,H);S1(()=>B.dispose());let V,j=()=>vA(H).then(()=>{if(V)V.dispose(),V=void 0});G.fn=(K)=>{if(f(),H0&&H0.running){if(!V)V=sZ.factory(Q,j);return V.track(K)}return B.track(K)}}return Kz.afterCreateOwner&&Kz.afterCreateOwner(G),G}function MG(J){let z=H0&&H0.running;if((z?J.tState:J.state)===0)return;if((z?J.tState:J.state)===DG)return Nq(J);if(J.suspense&&r1(J.suspense.inFallback))return J.suspense.effects.push(J);let Y=[J];while((J=J.owner)&&(!J.updatedAt||J.updatedAt<kq)){if(z&&H0.disposed.has(J))return;if(z?J.tState:J.state)Y.push(J)}for(let Z=Y.length-1;Z>=0;Z--){if(J=Y[Z],z){let X=J,G=Y[Z+1];while((X=X.owner)&&X!==G)if(H0.disposed.has(X))return}if((z?J.tState:J.state)===EJ)BZ(J);else if((z?J.tState:J.state)===DG){let X=p1;p1=null,kJ(()=>Nq(J,Y[0]),!1),p1=X}}}function kJ(J,z){if(p1)return J();let Y=!1;if(!z)p1=[];if(WJ)Y=!0;else WJ=[];kq++;try{let Z=J();return cA(Y),Z}catch(Z){if(!Y)WJ=null;p1=null,FG(Z)}}function cA(J){if(p1){if(tZ&&H0&&H0.running)dA(p1);else uV(p1);p1=null}if(J)return;let z;if(H0){if(!H0.promises.size&&!H0.queue.size){let{sources:Z,disposed:X}=H0;WJ.push.apply(WJ,H0.effects),z=H0.resolve;for(let G of WJ)"tState"in G&&(G.state=G.tState),delete G.tState;H0=null,kJ(()=>{for(let G of X)SY(G);for(let G of Z){if(G.value=G.tValue,G.owned)for(let Q=0,f=G.owned.length;Q<f;Q++)SY(G.owned[Q]);if(G.tOwned)G.owned=G.tOwned;delete G.tValue,delete G.tOwned,G.tState=0}NV(!1)},!1)}else if(H0.running){H0.running=!1,H0.effects.push.apply(H0.effects,WJ),WJ=null,NV(!0);return}}let Y=WJ;if(WJ=null,Y.length)kJ(()=>TV(Y),!1);else Kz.afterUpdate&&Kz.afterUpdate();if(z)z()}function uV(J){for(let z=0;z<J.length;z++)MG(J[z])}function dA(J){for(let z=0;z<J.length;z++){let Y=J[z],Z=H0.queue;if(!Z.has(Y))Z.add(Y),tZ(()=>{Z.delete(Y),kJ(()=>{H0.running=!0,MG(Y)},!1),H0&&(H0.running=!1)})}}function nA(J){let z,Y=0;for(z=0;z<J.length;z++){let Z=J[z];if(!Z.user)MG(Z);else J[Y++]=Z}if(I1.context){if(I1.count){I1.effects||(I1.effects=[]),I1.effects.push(...J.slice(0,Y));return}n8()}if(I1.effects&&(I1.done||!I1.count))J=[...I1.effects,...J],Y+=I1.effects.length,delete I1.effects;for(z=0;z<Y;z++)MG(J[z])}function Nq(J,z){let Y=H0&&H0.running;if(Y)J.tState=0;else J.state=0;for(let Z=0;Z<J.sources.length;Z+=1){let X=J.sources[Z];if(X.sources){let G=Y?X.tState:X.state;if(G===EJ){if(X!==z&&(!X.updatedAt||X.updatedAt<kq))MG(X)}else if(G===DG)Nq(X,z)}}}function EV(J){let z=H0&&H0.running;for(let Y=0;Y<J.observers.length;Y+=1){let Z=J.observers[Y];if(z?!Z.tState:!Z.state){if(z)Z.tState=DG;else Z.state=DG;if(Z.pure)p1.push(Z);else WJ.push(Z);Z.observers&&EV(Z)}}}function SY(J){let z;if(J.sources)while(J.sources.length){let Y=J.sources.pop(),Z=J.sourceSlots.pop(),X=Y.observers;if(X&&X.length){let G=X.pop(),Q=Y.observerSlots.pop();if(Z<X.length)G.sourceSlots[Q]=Z,X[Z]=G,Y.observerSlots[Z]=Q}}if(J.tOwned){for(z=J.tOwned.length-1;z>=0;z--)SY(J.tOwned[z]);delete J.tOwned}if(H0&&H0.running&&J.pure)wV(J,!0);else if(J.owned){for(z=J.owned.length-1;z>=0;z--)SY(J.owned[z]);J.owned=null}if(J.cleanups){for(z=J.cleanups.length-1;z>=0;z--)J.cleanups[z]();J.cleanups=null}if(H0&&H0.running)J.tState=0;else J.state=0;delete J.sourceMap}function wV(J,z){if(!z)J.tState=0,H0.disposed.add(J);if(J.owned)for(let Y=0;Y<J.owned.length;Y++)wV(J.owned[Y])}function gq(J){if(J instanceof Error)return J;return Error(typeof J==="string"?J:"Unknown error",{cause:J})}function SV(J,z,Y){try{for(let Z of z)Z(J)}catch(Z){FG(Z,Y&&Y.owner||null)}}function FG(J,z=l0){let Y=UG&&z&&z.context&&z.context[UG],Z=gq(J);if(!Y)throw Z;if(WJ)WJ.push({fn(){SV(Z,Y,z)},state:EJ});else SV(Z,Y,z)}function i8(J){if(typeof J==="function"&&!J.length)return i8(J());if(Array.isArray(J)){let z=[];for(let Y=0;Y<J.length;Y++){let Z=i8(J[Y]);if(Array.isArray(Z))if(Z.length<32768)z.push.apply(z,Z);else for(let X=0;X<Z.length;X++)z.push(Z[X]);else z.push(Z)}return z}return J}function iA(J,z){return function(Z){let X;return Tz(()=>X=r1(()=>{return l0.context={...l0.context,[J]:Z.value},mA(()=>Z.children)}),void 0,z),X}}function IV(J){for(let z=0;z<J.length;z++)J[z]()}function $A(J,z,Y={}){let Z=[],X=[],G=[],Q=0,f=z.length>1?[]:null;return S1(()=>IV(G)),()=>{let H=J()||[],B=H.length,V,j;return H[bq],r1(()=>{let L,A,O,R,x,a,S,C,M;if(B===0){if(Q!==0)IV(G),G=[],Z=[],X=[],Q=0,f&&(f=[]);if(Y.fallback)Z=[lA],X[0]=HZ((I)=>{return G[0]=I,Y.fallback()}),Q=1}else if(Q===0){X=Array(B);for(j=0;j<B;j++)Z[j]=H[j],X[j]=HZ(K);Q=B}else{O=Array(B),R=Array(B),f&&(x=Array(B));for(a=0,S=Math.min(Q,B);a<S&&Z[a]===H[a];a++);for(S=Q-1,C=B-1;S>=a&&C>=a&&Z[S]===H[C];S--,C--)O[C]=X[S],R[C]=G[S],f&&(x[C]=f[S]);L=new Map,A=Array(C+1);for(j=C;j>=a;j--)M=H[j],V=L.get(M),A[j]=V===void 0?-1:V,L.set(M,j);for(V=a;V<=S;V++)if(M=Z[V],j=L.get(M),j!==void 0&&j!==-1)O[j]=X[V],R[j]=G[V],f&&(x[j]=f[V]),j=A[j],L.set(M,j);else G[V]();for(j=a;j<B;j++)if(j in O){if(X[j]=O[j],G[j]=R[j],f)f[j]=x[j],f[j](j)}else X[j]=HZ(K);X=X.slice(0,Q=B),Z=H.slice(0)}return X});function K(L){if(G[j]=L,f){let[A,O]=r(j,{name:"index"});return f[j]=O,z(H[j],A)}return z(H[j])}}}function PV(J,z){if(aA){if(I1.context){let Y=I1.context;n8(IA());let Z=bV(J,z||{});return n8(Y),Z}}return bV(J,z||{})}function Aq(){return!0}function d8(J){return!(J=typeof J==="function"?J():J)?{}:J}function pA(){for(let J=0,z=this.length;J<z;++J){let Y=this[J]();if(Y!==void 0)return Y}}function yq(...J){let z=!1;for(let Q=0;Q<J.length;Q++){let f=J[Q];z=z||!!f&&Vz in f,J[Q]=typeof f==="function"?(z=!0,U0(f)):f}if(xA&&z)return new Proxy({get(Q){for(let f=J.length-1;f>=0;f--){let H=d8(J[f])[Q];if(H!==void 0)return H}},has(Q){for(let f=J.length-1;f>=0;f--)if(Q in d8(J[f]))return!0;return!1},keys(){let Q=[];for(let f=0;f<J.length;f++)Q.push(...Object.keys(d8(J[f])));return[...new Set(Q)]}},_A);let Y={},Z=Object.create(null);for(let Q=J.length-1;Q>=0;Q--){let f=J[Q];if(!f)continue;let H=Object.getOwnPropertyNames(f);for(let B=H.length-1;B>=0;B--){let V=H[B];if(V==="__proto__"||V==="constructor")continue;let j=Object.getOwnPropertyDescriptor(f,V);if(!Z[V])Z[V]=j.get?{enumerable:!0,configurable:!0,get:pA.bind(Y[V]=[j.get.bind(f)])}:j.value!==void 0?j:void 0;else{let K=Y[V];if(K){if(j.get)K.push(j.get.bind(f));else if(j.value!==void 0)K.push(()=>j.value)}}}}let X={},G=Object.keys(Z);for(let Q=G.length-1;Q>=0;Q--){let f=G[Q],H=Z[f];if(H&&H.get)Object.defineProperty(X,f,H);else X[f]=H?H.value:void 0}return X}function X1(J){let z="fallback"in J&&{fallback:()=>J.fallback};return U0($A(()=>J.each,J.children,z||void 0),void 0,{name:"value"})}function G0(J){let z=J.keyed,Y=U0(()=>J.when,void 0,{name:"condition value"}),Z=z?Y:U0(Y,void 0,{equals:(X,G)=>!X===!G,name:"condition"});return U0(()=>{let X=Z();if(X){let G=J.children;return typeof G==="function"&&G.length>0?r1(()=>G(z?X:()=>{if(!r1(Z))throw rA("Show");return Y()})):G}return J.fallback},void 0,{name:"value"})}function hV(J){let z;if(I1.context&&I1.load)z=I1.load(I1.getContextId());let[Y,Z]=r(z,{name:"errored"});return Rq||(Rq=new Set),Rq.add(Z),S1(()=>Rq.delete(Z)),U0(()=>{let X;if(X=Y()){let G=J.fallback;if(typeof G!=="function"||G.length==0)console.error(X);return typeof G==="function"&&G.length?r1(()=>G(X,()=>Z())):G}return PA(()=>J.children,Z)},void 0,{name:"value"})}var I1,TA=!0,yA=(J,z)=>J===z,Vz,xA,bq,uA,Cq,UG=null,TV,EJ=1,DG=2,EA,c8,l0=null,H0=null,tZ=null,sZ=null,U1=null,p1=null,WJ=null,kq=0,Kz,Xh,NV,LG,lA,aA=!1,_A,rA=(J)=>`Attempting to access a stale value from <${J}> that could possibly be undefined. This may occur because you are reading the accessor returned from the component at a time where it has already been unmounted. We recommend cleaning up any stale timers or async, or reading from the initial condition.`,Rq,vV;var W1=b(()=>{I1={context:void 0,registry:void 0,effects:void 0,done:!1,getContextId(){return gV(this.context.count)},getNextContextId(){return gV(this.context.count++)}};Vz=Symbol("solid-proxy"),xA=typeof Proxy==="function",bq=Symbol("solid-track"),uA=Symbol("solid-dev-component"),Cq={equals:yA},TV=uV,EA={},c8={},Kz={afterUpdate:null,afterCreateOwner:null,afterCreateSignal:null,afterRegisterGraph:null};[Xh,NV]=r(!1);lA=Symbol("fallback");_A={get(J,z,Y){if(z===Vz)return Y;return J.get(z)},has(J,z){if(z===Vz)return!0;return J.has(z)},set:Aq,deleteProperty:Aq,getOwnPropertyDescriptor(J,z){return{configurable:!0,enumerable:!0,get(){return J.get(z)},set:Aq,deleteProperty:Aq}},ownKeys(J){return J.keys()}};vV={hooks:Kz,writeSignal:l8,registerGraph:yV};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 oA}from"child_process";function $8(J,z,Y,Z){if(Y)return J+Z.slowRetryMs;return z+Math.max(Z.minIntervalMs,(z-J)*5)}function a8(J,z){return!J.inFlight&&z>=J.nextAllowedAt}function mV(J,z,Y=Math.random){let Z=Math.max(0,Math.min(1,z)),X=(Y()*2-1)*J*Z;return Math.max(0,J+X)}function cV(J,z,Y){if(z<=0)return Math.min(J,Y);return Math.min(J*2**z,Y)}function JX(J,z,Y,Z){let X=Date.now();if(!a8(J,X))return!1;J.inFlight=!0;let G=new AbortController,Q=setTimeout(()=>G.abort(),z.timeoutMs);return(async()=>{let f,H=!1;try{f=await Y(G.signal),H=!0}catch{}clearTimeout(Q);let B=G.signal.aborted;if(J.nextAllowedAt=$8(X,Date.now(),B,z),J.inFlight=!1,H&&!B)Z(f)})(),!0}function ZY(J,z,Y){return new Promise((Z)=>{let X="",G=!1,Q=(H)=>{if(G)return;G=!0,Z({status:H,stdout:X})},f=oA(J,z.slice(),{cwd:Y.cwd,stdio:["ignore","pipe","ignore"],env:Y.env,signal:Y.signal,killSignal:"SIGKILL"});f.stdout?.on("data",(H)=>{X+=String(H)}),f.on("error",()=>Q(null)),f.on("close",(H)=>Q(H))})}var zX=()=>{};function sA(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 tA(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 eA(J){if(!J||J.length===0)return"none";let z=!1,Y=!1;for(let Z of J){let X=tA(Z);if(X==="failing")return"failing";if(X==="pending")z=!0;else if(X==="passing")Y=!0}if(z)return"pending";if(Y)return"passing";return"unknown"}function nV(J,z){if(!J||typeof J.number!=="number")return null;return{provider:"github",lifecycle:sA(J.state,J.reviewDecision),checkState:eA(J.statusCheckRollup),number:J.number,url:J.url,title:J.title,baseRef:J.baseRefName,headRef:J.headRefName,reviewDecision:J.reviewDecision||void 0,mergeable:J.mergeable||void 0,lastCheckedAt:z}}function uq(J,z){if(J===z)return!0;if(!J||!z)return!1;return J.provider===z.provider&&J.lifecycle===z.lifecycle&&J.checkState===z.checkState&&J.number===z.number&&J.url===z.url&&J.title===z.title&&J.baseRef===z.baseRef&&J.headRef===z.headRef&&J.reviewDecision===z.reviewDecision&&J.mergeable===z.mergeable}function xq(J,z){return z.some((Y)=>J.includes(Y))}function _8(J){if(J.parseError)return{kind:"error",error:"parse"};if(J.timedOut)return{kind:"error",error:"timeout"};if(J.spawnError)return{kind:"error",error:"missing-binary"};let z=(J.stderr??"").toLowerCase();if(xq(z,ZR))return{kind:"empty"};if(xq(z,JR))return{kind:"error",error:"no-remote"};if(xq(z,zR))return{kind:"error",error:"auth"};if(xq(z,YR))return{kind:"error",error:"network"};return{kind:"empty"}}function OG(J,z,Y,Z,X=Math.random){let G=(f)=>Y+mV(f,Z.jitterRatio,X);if(J.kind==="pr")return{nextAllowedAt:G(J.settled?Z.settledMs:Z.tickMs),failures:0};if(J.kind==="empty")return{nextAllowedAt:G(Z.noPrMs),failures:0};if(J.error==="no-remote")return{nextAllowedAt:G(Z.noRemoteMs),failures:0};let Q=z+1;return{nextAllowedAt:G(cV(Z.failureBaseMs,Q-1,Z.failureCapMs)),failures:Q}}var dV="number,url,title,state,baseRefName,headRefName,reviewDecision,mergeable,statusCheckRollup",JR,zR,YR,ZR;var p8=b(()=>{zX();JR=["none of the git remotes","no git remote","to use github cli in a github repository","not a github repository"],zR=["gh auth login","authentication required","not logged in","http 401","bad credentials","requires authentication"],YR=["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"],ZR=["no pull requests found","no open pull requests","no pull request found"]});var r8,o8,s8,t8="DIRTY_WORKTREE",e8,JB;var zB=b(()=>{r8=class r8 extends Error{from;to;taskId;constructor(J,z,Y){super(`illegal transition for task ${Y}: ${J} -> ${z}`);this.from=J;this.to=z;this.taskId=Y;this.name="IllegalTransitionError"}};o8=class o8 extends Error{constructor(J){super(`task not found: ${J}`);this.name="TaskNotFoundError"}};s8=class s8 extends Error{constructor(){super("cannot delete a main task; remove the repo from saved repos instead");this.name="CannotDeleteMainTaskError"}};e8=class e8 extends Error{taskId;constructor(J){super(`${t8}: task ${J} worktree has uncommitted or untracked changes`);this.taskId=J;this.name="DirtyWorktreeError"}};JB=class JB extends Error{taskId;cause;constructor(J,z){super(`failed to remove worktree for task ${J}: ${z instanceof Error?z.message:String(z)}`);this.taskId=J;this.cause=z;this.name="WorktreeRemoveFailedError"}}});var iV;var lV=b(()=>{iV=["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 $V(J){let z=J.auth,Y=z.kind==="key"?{kind:"key",keyPath:z.keyPath}:{kind:"password",getPassword:()=>dQ(z.keychainRef)};return{host:J.host,user:J.user,port:J.port,auth:Y,controlPath:PQ(J.host,J.user,J.port)}}function YX(J){let z=sz(J);if(!z)return new cQ;return new cZ($V(z))}function XY(J){for(let z of Object.values(z8()))if(J===z.basePath||J.startsWith(`${z.basePath}/`))return new cZ($V(z));return new cQ}function aV(J){return J&&a1(J)?J:void 0}function ZX(J){let z=XY(J);return z.isRemote||z.existsSync(J)}function P1(J){return XY(J).isRemote?Sz():J}var Uz=b(()=>{o1();A1();aH();rH()});import{createHash as XR}from"crypto";import pV from"fs";import PJ from"path";function rV(J){if(!PJ.isAbsolute(J))throw Error(`worktreeRootFor: repo must be an absolute path, got: ${J}`);return PJ.join(fJ(),GR,BR(J))}function oV(J){if(!PJ.isAbsolute(J))throw Error(`managedWorktreeRootsFor: repo must be an absolute path, got: ${J}`);return[rV(J),...fR.map((z)=>PJ.join(J,z))]}function sV(J,z){if(!z||/[/\\\0]/.test(z))throw Error(`worktreePathFor: invalid slug: ${JSON.stringify(z)}`);return PJ.join(rV(J),z)}async function tV(J){if(a1(J)){let Y=sz(J)?.basePath;if(!Y)return[];return YX(J).readdir(J5(Y))}let z=new Set;for(let Y of oV(J))try{for(let Z of pV.readdirSync(Y,{withFileTypes:!0}))if(Z.isDirectory())z.add(Z.name)}catch{}return[...z]}function YB(J,z){if(!PJ.isAbsolute(J)||!PJ.isAbsolute(z))return null;let Y=_V(z);for(let Z of oV(J)){let X=_V(Z),G=PJ.relative(X,Y);if(G!==""&&!G.startsWith("..")&&!PJ.isAbsolute(G))return Z}return null}function eV(J,z){return YB(J,z)!==null}function J5(J){return`${HR(J)}/.kobe/worktrees`}function z5(J,z){if(!z||/[/\\\0]/.test(z))throw Error(`remoteWorktreePathFor: invalid slug: ${JSON.stringify(z)}`);return`${J5(J)}/${z}`}function HR(J){return J.length>1&&J.endsWith("/")?J.replace(/\/+$/,""):J}function _V(J){try{return pV.realpathSync(J)}catch{return PJ.resolve(J)}}function BR(J){let Y=(PJ.basename(J)||"repo").replace(/[^a-zA-Z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"repo",Z=XR("sha1").update(PJ.resolve(J)).digest("hex").slice(0,12);return`${Y}-${Z}`}var GR="worktrees",QR=".kobe/worktrees",qR=".claude/worktrees",fR;var ZB=b(()=>{o1();Uz();A1();fR=[QR,qR]});class XB{activeSlugs;random;pool;pendingByRepo=new Map;chain=Promise.resolve();constructor(J,z={}){this.activeSlugs=J;if(this.random=z.random??Math.random,this.pool=z.pool??iV,this.pool.length===0)throw Error("SlugAllocator: animal pool cannot be empty")}async allocate(J){let z=this.chain,Y;this.chain=new Promise((Z)=>{Y=Z}),await z;try{return await this.pickLocked(J)}finally{Y()}}commit(J,z){this.deletePending(J,z)}cancel(J,z){this.deletePending(J,z)}async pickLocked(J){let z=await this.occupiedSlugs(J),Y=this.pool.filter((X)=>!z.has(X));if(Y.length>0){let X=Y[Math.floor(this.random()*Y.length)];return this.addPending(J,X),X}let Z=this.pool[Math.floor(this.random()*this.pool.length)];for(let X=2;;X++){let G=`${Z}-v${X}`;if(!z.has(G))return this.addPending(J,G),G}}async occupiedSlugs(J){let z=new Set(this.pendingByRepo.get(J)??[]);for(let Y of this.activeSlugs(J))if(Y)z.add(Y);for(let Y of await tV(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 Y5=b(()=>{lV();ZB()});var X5={};f1(X5,{PLACEHOLDER_TASK_TITLE:()=>xz,Orchestrator:()=>Eq});import{realpathSync as jR}from"fs";import{basename as WR,resolve as VR}from"path";function Z5(J){return sz(J)?.basePath??J}class Eq{store;worktrees;slugs;tasksAcc;setTasks;activeTaskAcc;setActiveTaskSig;unsubscribeStore;worktreeLocks=new Map;mainTaskLocks=new Map;constructor(J){this.store=J.store,this.worktrees=J.worktrees,this.slugs=new XB((G)=>this.store.list().filter((Q)=>Q.repo===G&&Q.kind!=="main").map((Q)=>{return Q.worktreePath.match(/([^/\\]+)[/\\]*$/)?.[1]??""}).filter((Q)=>Q.length>0));let[z,Y]=r(this.store.list());this.tasksAcc=z,this.setTasks=(G)=>Y(()=>G);let[Z,X]=r(null);this.activeTaskAcc=Z,this.setActiveTaskSig=(G)=>X(()=>G),this.unsubscribeStore=this.store.subscribe((G)=>{this.setTasks(G.slice())})}async init(){}activeTaskSignal(){return this.activeTaskAcc}async setActiveTask(J){let z=J===null?null:String(J);if(this.setActiveTaskSig(z),z&&this.store.get(z))await this.store.update(z,{})}tasksSignal(){return this.tasksAcc}subscribeTasks(J){return this.store.subscribe(J)}dispose(){this.unsubscribeStore()}listTasks(){return this.store.list()}getTask(J){return this.store.get(J)}async createTask(J){if(!J.repo)throw Error("createTask: repo is required");let z=(J.title??xz).trim()||xz,Y=await this.store.create({repo:J.repo,title:z,branch:J.branch??"",worktreePath:"",status:"backlog",kind:"task",vendor:J.vendor??_1,...J.modelEffort?{modelEffort:J.modelEffort}:{}});if(J.baseRef)this.pendingBaseRefs.set(Y.id,J.baseRef);return Y}async ensureMainTask(J){let{repo:z,key:Y}=AG(J),Z=this.store.list().find((Q)=>Q.kind==="main"&&AG(Q.repo).key===Y);if(Z)return Z;let X=this.mainTaskLocks.get(Y);if(X)return X;let G=(async()=>{let Q=xJ(C1("lastSelectedVendor"),uJ());return await this.store.create({repo:z,title:KR(z),branch:"",worktreePath:Z5(z),status:"backlog",kind:"main",vendor:Q})})();this.mainTaskLocks.set(Y,G);try{return await G}finally{this.mainTaskLocks.delete(Y)}}async ensureWorktree(J){let z=this.requireTask(J);if(z.kind==="main")return Z5(z.repo);if(z.worktreePath)return z.worktreePath;let Y=this.worktreeLocks.get(z.id);if(Y)return Y;let Z=this.createWorktree(z);this.worktreeLocks.set(z.id,Z);try{return await Z}finally{this.worktreeLocks.delete(z.id)}}async createWorktree(J){let z=await this.slugs.allocate(J.repo),Y=J.branch||Fq(J.title,J.id),Z=this.pendingBaseRefs.get(J.id),X;try{X=await this.worktrees.createForTask({repo:J.repo,slug:z,branch:Y,baseRef:Z})}catch(G){throw this.slugs.cancel(J.repo,z),G}try{await this.store.update(J.id,{worktreePath:X.path,branch:Y})}catch(G){throw await this.rollbackWorktree(X.path),this.slugs.cancel(J.repo,z),G}return this.slugs.commit(J.repo,z),this.pendingBaseRefs.delete(J.id),X.path}async rollbackWorktree(J){try{await this.worktrees.remove(J,{force:!0})}catch(z){console.error(`[kobe] ensureWorktree rollback failed for ${J}:`,z)}}async setTitle(J,z){let Y=z.trim();if(!Y)throw Error("setTitle: title is required (empty or whitespace-only rejected)");let Z=this.requireTask(J);if(Z.title===Y)return;await this.store.update(Z.id,{title:Y}),await this.followBranchToTitle(Z,Y)}async followBranchToTitle(J,z){if(J.kind==="main"||!J.worktreePath)return;if(J.branch!==Fq(xz,J.id))return;let Y=Fq(z,J.id);if(Y===J.branch)return;try{await this.setBranch(J.id,Y)}catch(Z){console.error(`[kobe] follow-branch-to-title failed for ${J.id}:`,Z)}}async setBranch(J,z){let Y=z.trim();if(!Y)throw Error("setBranch: branch is required (empty or whitespace-only rejected)");let Z=this.requireTask(J);if(Z.kind==="main")throw Error("setBranch: a main task tracks the repo's own branch; rename it with git directly");if(Z.branch===Y)return;if(Z.worktreePath)await this.worktrees.renameBranch(Z.worktreePath,Z.branch,Y);await this.store.update(Z.id,{branch:Y})}async setVendor(J,z){let Y=this.requireTask(J);if(Y.vendor===z)return;await this.store.update(Y.id,{vendor:z})}async setPinned(J,z){let Y=this.requireTask(J);if(Y.kind==="main")return;let Z=z??!Y.pinned;if((Y.pinned??!1)===Z)return;await this.store.update(Y.id,{pinned:Z})}async moveTask(J,z){let Y=this.requireTask(J);if(Y.kind==="main")return;let Z=this.store.list().filter((X)=>(X.kind??"task")!=="main"&&X.archived===Y.archived&&(X.pinned??!1)===(Y.pinned??!1)).map((X)=>String(X.id));await this.store.move(Y.id,z,Z)}async setArchived(J,z){let Y=this.requireTask(J);if(Y.kind==="main")return;let Z=z??!Y.archived;if(Y.archived===Z)return;await this.store.update(Y.id,{archived:Z})}async reorderTasks(J){if(J.length===0)return;for(let z of J){if(this.requireTask(z.taskId).kind==="main")throw Error(`cannot reorder a main task: ${z.taskId}`);if(!Number.isFinite(z.position))throw Error(`position must be a finite number: ${z.taskId}`)}await this.store.reorder(J.map((z)=>({id:z.taskId,position:z.position})))}async setStatus(J,z){let Y=this.requireTask(J);if(Y.status===z)return;if(Y.status==="done"&&z==="error"||Y.status==="error"&&z==="done")throw new r8(Y.status,z,Y.id);await this.store.update(Y.id,{status:z})}async setPRStatus(J,z){let Y=this.requireTask(J);if(uq(Y.prStatus,z??void 0))return;await this.store.update(Y.id,{prStatus:z??void 0})}async deleteTask(J,z){let Y=this.store.get(J);if(!Y)return;if(Y.kind==="main")throw new s8;let Z=z?.force===!0;if(Y.worktreePath){if(!Z){let X=!1;try{X=await this.worktrees.isDirty(Y.worktreePath)}catch{}if(X)throw new e8(Y.id)}try{await this.worktrees.remove(Y.worktreePath,{force:Z})}catch(X){throw new JB(Y.id,X)}}await this.store.remove(Y.id),this.pendingBaseRefs.delete(Y.id),this.worktreeLocks.delete(Y.id)}async forgetProject(J){if(!J)throw Error("forgetProject: repo is required");let z=AG(J).key;for(let Y of gJ())if(AG(Y).key===z)eH(Y);for(let Y of this.store.list()){if(Y.kind!=="main")continue;if(AG(Y.repo).key!==z)continue;await this.store.remove(Y.id),this.pendingBaseRefs.delete(Y.id),this.worktreeLocks.delete(Y.id)}}async discoverAdoptableWorktrees(J){if(!J)throw Error("discoverAdoptableWorktrees: repo is required");let z=await this.worktrees.listAll(J),Y=new Set(this.store.list().filter((Z)=>Z.worktreePath).map((Z)=>XX(Z.worktreePath)));return z.filter((Z)=>!Y.has(XX(Z.path)))}async adoptWorktree(J){if(!J.repo)throw Error("adoptWorktree: repo is required");if(!J.worktreePath)throw Error("adoptWorktree: worktreePath is required");let z=XX(J.worktreePath),Y=this.adoptLocks.get(z);if(Y)return Y;let Z=this.adoptWorktreeLocked(J,z);this.adoptLocks.set(z,Z);try{return await Z}finally{this.adoptLocks.delete(z)}}async adoptWorktreeLocked(J,z){let Y=this.store.list().find((f)=>f.worktreePath&&XX(f.worktreePath)===z);if(Y){if(J.ifExists==="return")return Y;throw Error(`adoptWorktree: ${J.worktreePath} is already adopted as a task`)}let X=(await this.worktrees.listAll(J.repo)).find((f)=>XX(f.path)===z);if(!X)throw Error(`adoptWorktree: ${J.worktreePath} is not an adoptable git worktree of ${J.repo} (unknown, detached, or the main checkout)`);let G=J.branch?.trim()||X.branch,Q=(J.title??WR(X.path)).trim()||xz;return this.store.create({repo:J.repo,title:Q,branch:G,worktreePath:X.path,status:"backlog",kind:"task",vendor:J.vendor??_1})}pendingBaseRefs=new Map;adoptLocks=new Map;requireTask(J){let z=this.store.get(J);if(!z)throw new o8(String(J));return z}}function KR(J){let z=J.split(/[/\\]/).filter(Boolean);return z.length>0?z[z.length-1]??J:J}function AG(J){let z=rz(J);return{repo:z,key:a1(z)?z:XX(z)}}function XX(J){try{return jR(J)}catch{return VR(J)}}var xz="(new task)";var RG=b(()=>{W1();p8();A1();rJ();$1();zB();Y5()});function GX(J,z,Y){if(!z)return J;let Z=YX(z);return Z.ensureReady(),Z.wrapCommand(J,{tty:!0,cwd:Y})}function n1(){let J=[];for(let z of["KOBE_HOME_DIR","KOBE_DAEMON_SOCKET_PATH","KOBE_TMUX_SOCKET"]){let Y=process.env[z];if(Y&&Y.length>0)J.push(`${z}=${Z1(Y)}`)}return J.length>0?`${J.join(" ")} `:""}var gG="@kobe_remote";var jZ=b(()=>{Uz();Wz()});function wq(){return pz(WZ,!1)}var WZ="experimental.autoStatus";var CG=b(()=>{eY()});function GB(){return pz(VZ,!1)}var VZ="experimental.dispatcher";var Pq=b(()=>{eY()});import{randomUUID as UR}from"crypto";function Dz(J){return`engineCommand.${J}`}function Lz(J){return`engineName.${J}`}function KZ(J){return C1(Lz(J))?.trim()||QB[J]||J}function NG(J){return JJ(J??"claude").defaultCommand}function DR(J){let z=[],Y=/"([^"]*)"|'([^']*)'|(\S+)/g;for(let Z=Y.exec(J);Z!==null;Z=Y.exec(J))z.push(Z[1]??Z[2]??Z[3]??"");return z}function oJ(J,z){let Y=J??"claude",Z=C1(Dz(Y))?.trim(),X=(()=>{if(Z){let G=DR(Z);if(G.length>0)return G}return NG(Y)})();return LR(X,Y,z)}function LR(J,z,Y){let Z=Y?.trim();if(!Z)return J;let X=z??"claude";if(!JJ(X).effortLevels?.includes(Z))return J;if(X==="codex")return[...J,"-c",`model_reasoning_effort=${Z}`];return J}function QX(J,z){if((z??"claude")!=="claude")return{argv:J,sessionId:null};if(J.some((Z)=>MR.has(Z)))return{argv:J,sessionId:null};let Y=UR();return{argv:[...J,"--session-id",Y],sessionId:Y}}function UZ(){let J=(z)=>/^[A-Za-z0-9_/.:=-]+$/.test(z)?z:`'${z.replace(/'/g,"'\\''")}'`;try{return[...k1(),"api"].map(J).join(" ")}catch{return"kobe api"}}function FR(J,z=UZ()){return[`You are running inside kobe (a local multi-session task manager) as task ${J}.`,"kobe tracks a lifecycle status for this task on a board.","When you have COMPLETED the work requested in this session and verified it, report it by running:",` ${z} set-status --task-id ${J} --status in_review`,"Run it only when the work is genuinely done \u2014 never while you are asking the user a question, waiting for input, or mid-task.","Never set any other status value; everything beyond in_review is the user's decision."].join(`
36
- `)}function OR(J,z=UZ()){return["kobe shares hard-won discoveries between its parallel sessions as one-line field notes.","When you RESOLVE a non-obvious, repo-level gotcha (a build flag, a flaky test, an environment quirk, an API trap), file it:",` ${z} note --task-id ${J} --text "<one line: the verified conclusion>"`,"File only verified conclusions another session could act on \u2014 never progress logs, opinions, or details specific to your own task. A handful per session at most."].join(`
37
- `)}function AR(J,z=UZ(),Y={}){let Z=[];if((Y.status??wq)())Z.push(FR(J,z));if((Y.notes??GB)())Z.push(OR(J,z));return Z.length>0?Z.join(`
38
-
39
- `):null}function hq(J,z,Y,Z={}){if(!Y)return J;if((z??"claude")!=="claude")return J;if(J.includes("--append-system-prompt")||J.includes("--append-system-prompt-file"))return J;let X=AR(Y,UZ(),Z);if(!X)return J;return[...J,"--append-system-prompt",X]}function RR(J,z=UZ()){return[`You are running inside kobe (a local multi-session task manager) as this repository's DISPATCHER (task ${J}, the repo's main session).`,"kobe runs multiple worktree task sessions on this repo in parallel. When one of them resolves a non-obvious gotcha, it files a one-line field note; kobe forwards each note to you as a user message prefixed with [KOBE FIELD NOTE].","Your job is routing that knowledge, fully autonomously \u2014 never ask the user for permission:",` - See the fleet: \`${z} collect --repo .\` (status, running, change counts per task), or \`--task-ids id1,id2\` for specific tasks.`,` - Relay a note to a task that would benefit: \`${z} dispatch --task-id <id> --prompt "[dispatcher] FYI from <author task>: <note verbatim>"\`.`," - Relay to the in-flight tasks whose work plausibly touches the same area \u2014 and to nobody else. If no task benefits, do nothing."," - Never relay a note back to its author, never relay the same note to the same task twice, and keep relays verbatim with provenance \u2014 no summarizing, no embellishment.","Use ONLY the dispatch verb to message sessions \u2014 the `send` verb pastes via tmux and would spawn a DUPLICATE engine for web-hosted sessions. If dispatch fails, report the error in your own session and stop; do not fall back.","Take no action on merge conflicts between tasks \u2014 the board's conflict radar is display-only by design, and resolution timing belongs to the humans and the tasks themselves.","Never run git commands inside other tasks' worktrees."].join(`
40
- `)}function vq(J,z,Y,Z=GB){if(!Y||!Z())return J;if((z??"claude")!=="claude")return J;if(J.includes("--append-system-prompt")||J.includes("--append-system-prompt-file"))return J;return[...J,"--append-system-prompt",RR(Y)]}var QB,MR;var sJ=b(()=>{YY();kY();CG();Pq();A1();$1();QB=Object.fromEntries(pY.map((J)=>[J,JJ(J).displayName]));MR=new Set(["--session-id","--resume","-r","--continue","-c","--from-pr"])});import{spawnSync as gR}from"child_process";function G5(J,z){if(J==="darwin")return"pbcopy";if(J==="linux"){for(let Y of CR)if(z(Y.binary))return Y.command;return null}return null}function q5(J){let z=[["set-option","-g","set-clipboard","on"]];if(J)for(let Y of NR)for(let Z of bR)z.push(["bind-key","-T",Y,Z,"send-keys","-X","copy-pipe-and-cancel",J]);return z}var CR,Q5=(J)=>{try{let z=process.platform==="win32"?"where":"which";return gR(z,[J],{encoding:"utf8"}).status===0}catch{return!1}},NR,bR;var f5=b(()=>{CR=[{binary:"wl-copy",command:"wl-copy"},{binary:"xclip",command:"xclip -selection clipboard -in"},{binary:"xsel",command:"xsel --clipboard --input"}];NR=["copy-mode","copy-mode-vi"],bR=["MouseDragEnd1Pane","y","Enter"]});import{existsSync as H5,readFileSync as kR}from"fs";function B5(){DZ=null}function SR(){let J=xW();if(H5(J))return{canonical:J,found:J};let z=J.replace(/\.yaml$/,".yml");if(H5(z))return{canonical:J,found:z};return{canonical:J,found:null}}function mq(){if(DZ)return DZ;let{canonical:J,found:z}=SR();if(!z)return DZ={path:J,exists:!1,doc:null,warnings:[]},DZ;let Y=[],Z=null;try{let X=kR(z,"utf8");Z=Bun.YAML.parse(X)}catch(X){let G=X instanceof Error?X.message:String(X);Y.push(`could not read/parse ${z}: ${G}`)}return DZ={path:J,exists:!0,doc:Z,warnings:Y},DZ}var DZ=null;var qB=b(()=>{o1()});function qX(J,z){let Y=`alternating [${J}, ${z}] pairs`;return{layout:Y,validateCount:(Z)=>Z>=2&&Z%2===0?null:`needs ${Y} (an even number of chords \u2014 got ${Z})`}}function wR(J,z){let Y=J.trim().toLowerCase();if(!Y)return{error:"empty chord"};let Z=Y.split("+"),X=Z.pop()??"";if(X===""&&Z.length>0){if(X="+",Z[Z.length-1]==="")Z.pop()}if(!X)return{error:`"${J}": no key after the modifiers`};let G=new Set;for(let H of Z){let B=yR[H];if(!B)return{error:`"${J}": unknown modifier "${H}" (use ctrl / cmd / alt / shift)`};G.add(B)}if(X=xR[X]??X,G.has("shift")&&X.length===1&&!z?.allowShiftCharacter)return{error:`"${J}": shift+<character> can never match \u2014 terminals deliver shift+letter as a plain character, not a modifier event`};let Q=ER.filter((H)=>G.has(H)).join("+"),f=Q?`${Q}+${X}`:X;if(X.length>1&&!uR.has(X))return{chord:f,warning:`"${J}": unrecognized key name "${X}" \u2014 the chord may never fire`};return{chord:f}}function cq(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}function PR(J){if(J==="darwin")return["darwin","macos","mac"];if(J==="win32")return["win32","windows"];return[J]}function hR(J){if(!cq(J))return null;let z=J.bindings;if(cq(z))return z;return J}function dq(J,z,Y){let Z=[];if(J===null||J===void 0)return{entries:[],warnings:Z};if(!cq(J))return{entries:[],warnings:["config root must be a YAML mapping (e.g. a top-level `bindings:` key)"]};let X=new Map,G=[];if(J.bindings!==void 0)if(cq(J.bindings))G.push(J.bindings);else Z.push("`bindings:` must be a mapping of id \u2192 chord(s)");for(let Q of PR(z)){let f=J[Q];if(f===void 0)continue;let H=hR(f);if(H)G.push(H);else Z.push(`\`${Q}:\` must be a mapping (or contain a \`bindings:\` mapping)`)}for(let Q of G)for(let[f,H]of Object.entries(Q)){if(H===null||H===!1||Array.isArray(H)&&H.length===0){X.set(f,[]);continue}let B=typeof H==="string"?[H]:Array.isArray(H)?H:null;if(!B){Z.push(`${f}: expected a chord string, a list of chords, or null \u2014 got ${typeof H}`);continue}let V=[],j=!1;for(let K of B){if(typeof K!=="string"){Z.push(`${f}: chord entries must be strings`),j=!0;continue}let L=wR(K,Y?.chordOptsFor?.(f));if("error"in L){Z.push(`${f}: ${L.error}`),j=!0;continue}if(L.warning)Z.push(`${f}: ${L.warning}`);if(!V.includes(L.chord))V.push(L.chord)}if(V.length===0&&j){Z.push(`${f}: no valid chords \u2014 keeping the default`);continue}X.set(f,V)}return{entries:Array.from(X,([Q,f])=>({id:Q,keys:f})),warnings:Z}}function vR(J,z){return J===z||J==="global"||z==="global"}function j5(J,z){let Y=[],Z=[];for(let X of z){let G=J.find((j)=>j.id===X.id);if(!G){Y.push(`${X.id}: unknown binding id (press F1 in kobe for the full list)`);continue}let Q=fB[X.id];if(Q){Y.push(`${X.id}: not customizable \u2014 ${Q}`);continue}if(G.keys.length===0){Y.push(`${X.id}: not customizable \u2014 the key is handled outside the keymap (doc-only row)`);continue}let f=IR[X.id];if(f&&X.keys.length>0){let j=f.validateCount(X.keys.length);if(j){Y.push(`${X.id}: ${j} \u2014 keeping the default`);continue}}let H=X.keys.filter((j)=>{if(j.length===1&&TR.has(G.scope))return Y.push(`${X.id}: "${j}" dropped \u2014 a bare character on a ${G.scope}-scope binding would steal typed input (add a modifier)`),!1;return!0});if(H.length===0&&X.keys.length>0){Y.push(`${X.id}: no chords survived validation \u2014 keeping the default`);continue}if(f&&H.length!==X.keys.length){Y.push(`${X.id}: a dropped chord would shift the slot layout (${f.layout}) \u2014 keeping the default`);continue}let B=G.keys,V=G;if(V.keys=H,G.hint)if(H.length===0)V.hint=void 0;else G.hint.keys=H.join("/");Z.push({id:X.id,keys:H,defaultKeys:B})}for(let X of Z)for(let G of X.keys){let Q=J.find((f)=>f.id===X.id);if(!Q)continue;for(let f of J){if(f.id===X.id)continue;if(!f.keys.includes(G))continue;if(!vR(Q.scope,f.scope))continue;Y.push(`${X.id}: "${G}" also fires ${f.id} (${f.scope} scope) \u2014 last registration wins; consider a different chord`)}}return{applied:Z,warnings:Y}}var fB,IR,TR,yR,xR,uR,ER;var nq=b(()=>{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)"};IR={"sidebar.nav":qX("down","up"),"files.nav":qX("down","up"),"sidebar.search.nav":qX("down","up"),"files.hierarchy":qX("collapse","expand"),"sidebar.view":qX("previous view","next view"),"files.tab":qX("previous tab","next tab")},TR=new Set(["global","workspace","terminal"]),yR={ctrl:"ctrl",control:"ctrl",ctl:"ctrl",cmd:"cmd",command:"cmd",meta:"cmd",super:"cmd",win:"cmd",alt:"alt",option:"alt",opt:"alt",shift:"shift"},xR={esc:"escape",spacebar:"space",pgup:"pageup",pgdn:"pagedown",pgdown:"pagedown"},uR=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}`)]),ER=["ctrl","cmd","alt","shift"]});function fX(J){return J in W5}function FZ(J,z){let Y=J.split("+"),Z=Y.pop()??"";if(Z===""&&Y.length>0){if(Z="+",Y[Y.length-1]==="")Y.pop()}let X=new Set(Y);if(X.has("cmd"))return{error:`"${J}": the Command key never reaches tmux \u2014 use ctrl/alt/shift`};let G;if(Z.length===1)G=X.has("shift")?Z.toUpperCase():Z;else{let H=cR[Z];if(!H)return{error:`"${J}": tmux can't bind the key "${Z}"`};G=H}let Q=/^f\d+$/.test(Z);if(X.size===0&&!Q&&!z?.allowBare)return{error:`"${J}": tmux session keys are no-prefix root bindings live in every pane \u2014 a bare key would shadow typing (add a modifier, or use an F-key)`};let f="";if(X.has("ctrl"))f+="C-";if(X.has("alt"))f+="M-";if(X.has("shift"))f+="S-";return{key:f+G}}function K5(){let J={};for(let[Y,Z]of Object.entries(MZ)){let X=FZ(Z,{allowBare:fX(Y)});if("error"in X)throw Error(`default tmux chord for ${Y} failed to translate: ${X.error}`);J[Y]={chord:Z,key:X.key}}let z=IY.map((Y)=>{let Z=FZ(Y);if("error"in Z)throw Error(`default tmux focus chord ${Y} failed to translate`);return{chord:Y,key:Z.key}});return{binds:J,focus:z,overridden:new Set,warnings:[]}}function HB(J){let z=K5(),Y=new Set;for(let Z of J){if(!Z.id.startsWith("tmux."))continue;if(Z.id===uz){if(Z.keys.length===0){z.focus=[null,null,null,null],Y.add(uz);continue}if(Z.keys.length!==IY.length){z.warnings.push(`${uz}: needs exactly 4 chords in order left/down/up/right (got ${Z.keys.length}) \u2014 keeping the default`);continue}let f=[],H=!0;for(let B of Z.keys){let V=FZ(B);if("error"in V){z.warnings.push(`${uz}: ${V.error} \u2014 keeping the default`),H=!1;break}f.push({chord:B,key:V.key})}if(!H)continue;z.focus=f,Y.add(uz);continue}if(!(Z.id in MZ)){z.warnings.push(`${Z.id}: unknown tmux binding id`);continue}let X=Z.id;if(Z.keys.length===0){z.binds[X]=null,Y.add(X);continue}if(Z.keys.length>1)z.warnings.push(`${X}: tmux bindings take ONE chord \u2014 using "${Z.keys[0]}", ignoring the rest`);let G=Z.keys[0],Q=FZ(G,{allowBare:fX(X)});if("error"in Q){z.warnings.push(`${X}: ${Q.error} \u2014 keeping the default`);continue}if(G!==MZ[X])Y.add(X);z.binds[X]={chord:G,key:Q.key}}return z.overridden=Y,z}function BB(J){return J.startsWith("tmux.")?{allowShiftCharacter:!0}:{}}function U5(){LZ=null}function iq(){if(LZ)return LZ;let J=mq();if(!J.exists||J.doc===null)return LZ=K5(),LZ;let z=dq(J.doc,process.platform,{chordOptsFor:BB}),Y=z.warnings.filter((X)=>X.startsWith("tmux.")),Z=HB(z.entries);Z.warnings=[...Y,...Z.warnings];for(let X of Z.warnings)console.warn(`[kobe/keybindings] ${X}`);return LZ=Z,LZ}var mR,W5,V5,MZ,uz="tmux.focus",IY,cR,LZ=null;var lq=b(()=>{qB();nq();mR={"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"},W5={"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"},V5=["F6","F7","F8","F9","F10","F11"],MZ={...mR,...W5};IY=["ctrl+h","ctrl+j","ctrl+k","ctrl+l"],cR={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 bG(J,z){let Y=null;for(let X=0;X<24;X++){let G=await HX(J);if(G){if(!z)return{pane:G,ready:!0};let Q=(await BX(G)).trim();if(Q.length>0&&Q===Y)return{pane:G,ready:!0};Y=Q}await D5(250)}return{pane:await HX(J)||await jB(J),ready:!1}}async function kG(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 D5(dR),await SG(J,"Enter")}async function L5(J,z){let{pane:Y}=await bG(J,!0);if(!Y)return;await kG(Y,z.text)}var D5=(J)=>new Promise((z)=>setTimeout(z,J)),dR=150;var $q=b(()=>{h1()});function M5(J,z){if(J===null)return{kind:"create",reason:"no session with this name \u2014 build fresh"};let Y=J.worktree===z.cwd,Z=!z.vendor||J.vendor===z.vendor;if(J.claudePaneAlive&&Y&&Z)return{kind:"reuse",reason:"healthy: engine pane alive, worktree + vendor match"};if(Y&&!Z&&z.hasEngineCommand)return{kind:"respawn-engine",reason:`vendor drift: session tagged ${J.vendor===""?"<untagged>":`"${J.vendor}"`}, task wants "${z.vendor}" \u2014 relaunch engine pane in place (KOB-232)`};if(Y&&Z&&J.windowCount>1)return{kind:"reuse",reason:"active window's engine pane is gone but sibling chat tabs exist \u2014 reuse rather than drop them"};if(!Y)return{kind:"rebuild",reason:J.worktree===""?"legacy session with no @kobe_worktree tag \u2014 rebuild in the right place":`worktree drift: session tagged "${J.worktree}", task wants "${z.cwd}" \u2014 rebuild`};if(!Z)return{kind:"rebuild",reason:"vendor drift but no engine command to respawn with \u2014 rebuild"};return{kind:"rebuild",reason:"single-window session whose engine pane was destroyed \u2014 rebuild"}}var jX;var aq=b(()=>{jX={$schema:"https://opencode.ai/theme.json",defs:{darkBg:"#141413",darkBgRaised:"#1A1917",darkBgInset:"#2B2A27",darkBgMenu:"#33312E",darkBorderSubtle:"#2B2A27",darkBorder:"#3A3835",darkBorderActive:"#5C5853",darkText:"#EAE7DF",darkTextMuted:"#A9A39A",darkTextSubtle:"#6B665F",darkPrimary:"#CC785C",darkSecondary:"#D4967E",darkAccent:"#CC785C",darkAccentHover:"#E0AB96",darkRed:"#D47563",darkOrange:"#D97757",darkYellow:"#E8C96B",darkGreen:"#9ACA86",darkBlue:"#61AAF2",darkViolet:"#9B87F5",darkTerracotta:"#BF4D43",lightBg:"#FAF9F5",lightBgRaised:"#F0EEE6",lightBgInset:"#EAE7DF",lightBgMenu:"#E2DED4",lightBorderSubtle:"#EAE7DF",lightBorder:"#D9D5CC",lightBorderActive:"#A9A39A",lightText:"#1A1917",lightTextMuted:"#6B665F",lightTextSubtle:"#8D877D",lightPrimary:"#C96442",lightSecondary:"#B85F3D",lightAccent:"#CC785C",lightAccentHover:"#B85F3D",lightRed:"#A84B3A",lightOrange:"#C96442",lightYellow:"#8A6220",lightGreen:"#2E7C4C",lightBlue:"#207FDE",lightViolet:"#7B5BB6",lightTerracotta:"#BF4D43"},theme:{primary:{dark:"darkPrimary",light:"lightPrimary"},secondary:{dark:"darkSecondary",light:"lightSecondary"},accent:{dark:"darkAccent",light:"lightAccent"},error:{dark:"darkRed",light:"lightRed"},warning:{dark:"darkYellow",light:"lightYellow"},success:{dark:"darkGreen",light:"lightGreen"},info:{dark:"darkBlue",light:"lightBlue"},text:{dark:"darkText",light:"lightText"},textMuted:{dark:"darkTextMuted",light:"lightTextMuted"},background:{dark:"darkBg",light:"lightBg"},backgroundPanel:{dark:"darkBgRaised",light:"lightBgRaised"},backgroundElement:{dark:"darkBgInset",light:"lightBgInset"},backgroundMenu:{dark:"darkBgMenu",light:"lightBgMenu"},backgroundDialog:{dark:"darkBgRaised",light:"lightBgRaised"},border:{dark:"darkBorder",light:"lightBorder"},borderActive:{dark:"darkBorderActive",light:"lightBorderActive"},borderSubtle:{dark:"darkBorderSubtle",light:"lightBorderSubtle"},diffAdded:{dark:"darkGreen",light:"lightGreen"},diffRemoved:{dark:"darkRed",light:"lightRed"},diffContext:{dark:"darkTextMuted",light:"lightTextSubtle"},diffHunkHeader:{dark:"darkTextMuted",light:"lightTextSubtle"},diffHighlightAdded:{dark:"#B5E0A0",light:"#1F6638"},diffHighlightRemoved:{dark:"#E89180",light:"#8A3A2C"},diffAddedBg:{dark:"#1F2A1F",light:"#E5EEDF"},diffRemovedBg:{dark:"#2A1F1C",light:"#F5DAD3"},diffContextBg:{dark:"darkBgRaised",light:"lightBgRaised"},diffLineNumber:{dark:"darkTextSubtle",light:"lightTextSubtle"},diffAddedLineNumberBg:{dark:"#1A2419",light:"#D5E2CC"},diffRemovedLineNumberBg:{dark:"#241915",light:"#EBC8BE"},markdownText:{dark:"darkText",light:"lightText"},markdownHeading:{dark:"darkPrimary",light:"lightPrimary"},markdownLink:{dark:"darkAccent",light:"lightAccent"},markdownLinkText:{dark:"darkBlue",light:"lightBlue"},markdownCode:{dark:"darkSecondary",light:"lightSecondary"},markdownBlockQuote:{dark:"darkTextMuted",light:"lightTextMuted"},markdownEmph:{dark:"darkYellow",light:"lightYellow"},markdownStrong:{dark:"darkPrimary",light:"lightPrimary"},markdownHorizontalRule:{dark:"darkTextMuted",light:"lightTextMuted"},markdownListItem:{dark:"darkAccent",light:"lightAccent"},markdownListEnumeration:{dark:"darkBlue",light:"lightBlue"},markdownImage:{dark:"darkAccent",light:"lightAccent"},markdownImageText:{dark:"darkBlue",light:"lightBlue"},markdownCodeBlock:{dark:"darkText",light:"lightText"},markdownQuote:{dark:"darkTextMuted",light:"lightTextMuted"},syntaxComment:{dark:"darkTextSubtle",light:"lightTextSubtle"},syntaxKeyword:{dark:"darkPrimary",light:"lightPrimary"},syntaxFunction:{dark:"darkBlue",light:"lightBlue"},syntaxVariable:{dark:"darkText",light:"lightText"},syntaxString:{dark:"darkGreen",light:"lightGreen"},syntaxNumber:{dark:"darkOrange",light:"lightOrange"},syntaxType:{dark:"darkViolet",light:"lightViolet"},syntaxOperator:{dark:"darkSecondary",light:"lightSecondary"},syntaxPunctuation:{dark:"darkText",light:"lightText"},selectedListItemText:{dark:"darkBg",light:"lightBg"}}}});var WX;var _q=b(()=>{WX={$schema:"https://opencode.ai/theme.json",defs:{darkStep1:"#0a0a0a",darkStep2:"#111111",darkStep3:"#181818",darkStep4:"#1f1f1f",darkStep5:"#2a2a2a",darkStep6:"#363636",darkStep7:"#444444",darkStep8:"#5a5a5a",darkStep9:"#7a7a7a",darkStep10:"#9a9a9a",darkStep11:"#909090",darkStep12:"#e8e8e8",darkAccent:"#7da5c8",darkAccentBright:"#9bc3e3",darkRed:"#e06c75",darkOrange:"#d6a668",darkGreen:"#7fd88f",darkCyan:"#7da5c8",darkYellow:"#d6a668",lightStep1:"#fafafa",lightStep2:"#f3f3f3",lightStep3:"#ececec",lightStep4:"#e2e2e2",lightStep5:"#d4d4d4",lightStep6:"#bdbdbd",lightStep7:"#9c9c9c",lightStep8:"#7c7c7c",lightStep9:"#5b5b5b",lightStep10:"#404040",lightStep11:"#6c6c6c",lightStep12:"#1a1a1a",lightAccent:"#3d6f9f",lightAccentBright:"#1a4f87",lightRed:"#c9343a",lightOrange:"#a06b1a",lightGreen:"#3d9a57",lightCyan:"#3d6f9f",lightYellow:"#a06b1a"},theme:{primary:{dark:"darkStep12",light:"lightStep12"},secondary:{dark:"darkAccentBright",light:"lightAccentBright"},accent:{dark:"darkAccent",light:"lightAccent"},error:{dark:"darkRed",light:"lightRed"},warning:{dark:"darkOrange",light:"lightOrange"},success:{dark:"darkGreen",light:"lightGreen"},info:{dark:"darkCyan",light:"lightCyan"},text:{dark:"darkStep12",light:"lightStep12"},textMuted:{dark:"darkStep11",light:"lightStep11"},background:{dark:"darkStep1",light:"lightStep1"},backgroundPanel:{dark:"darkStep2",light:"lightStep2"},backgroundElement:{dark:"darkStep3",light:"lightStep3"},backgroundMenu:{dark:"darkStep4",light:"lightStep4"},border:{dark:"darkStep6",light:"lightStep6"},borderActive:{dark:"darkStep8",light:"lightStep8"},borderSubtle:{dark:"darkStep4",light:"lightStep4"},diffAdded:{dark:"#7fd88f",light:"#3d9a57"},diffRemoved:{dark:"#e06c75",light:"#c9343a"},diffContext:{dark:"darkStep10",light:"lightStep10"},diffHunkHeader:{dark:"darkStep10",light:"lightStep10"},diffHighlightAdded:{dark:"#9be5ad",light:"#2d7a3f"},diffHighlightRemoved:{dark:"#f08490",light:"#a82530"},diffAddedBg:{dark:"#15241a",light:"#d8efdc"},diffRemovedBg:{dark:"#2a1518",light:"#f5dadc"},diffContextBg:{dark:"darkStep2",light:"lightStep2"},diffLineNumber:{dark:"darkStep9",light:"lightStep9"},diffAddedLineNumberBg:{dark:"#0f1c14",light:"#c5deca"},diffRemovedLineNumberBg:{dark:"#221012",light:"#e5c5c8"},markdownText:{dark:"darkStep12",light:"lightStep12"},markdownHeading:{dark:"darkStep12",light:"lightStep12"},markdownLink:{dark:"darkAccent",light:"lightAccent"},markdownCode:{dark:"darkAccentBright",light:"lightAccentBright"},markdownCodeBlock:{dark:"darkStep12",light:"lightStep12"},markdownQuote:{dark:"darkStep11",light:"lightStep11"},selectedListItemText:{dark:"darkStep1",light:"lightStep1"}}}});var VX;var pq=b(()=>{VX={$schema:"https://opencode.ai/theme.json",defs:{background:"#282a36",currentLine:"#44475a",selection:"#44475a",foreground:"#f8f8f2",comment:"#6272a4",cyan:"#8be9fd",green:"#50fa7b",orange:"#ffb86c",pink:"#ff79c6",purple:"#bd93f9",red:"#ff5555",yellow:"#f1fa8c"},theme:{primary:{dark:"purple",light:"purple"},secondary:{dark:"pink",light:"pink"},accent:{dark:"cyan",light:"cyan"},error:{dark:"red",light:"red"},warning:{dark:"yellow",light:"yellow"},success:{dark:"green",light:"green"},info:{dark:"orange",light:"orange"},text:{dark:"foreground",light:"#282a36"},textMuted:{dark:"comment",light:"#6272a4"},background:{dark:"#282a36",light:"#f8f8f2"},backgroundPanel:{dark:"#21222c",light:"#e8e8e2"},backgroundElement:{dark:"currentLine",light:"#d8d8d2"},border:{dark:"currentLine",light:"#c8c8c2"},borderActive:{dark:"purple",light:"purple"},borderSubtle:{dark:"#191a21",light:"#e0e0e0"},diffAdded:{dark:"green",light:"green"},diffRemoved:{dark:"red",light:"red"},diffContext:{dark:"comment",light:"#6272a4"},diffHunkHeader:{dark:"comment",light:"#6272a4"},diffHighlightAdded:{dark:"green",light:"green"},diffHighlightRemoved:{dark:"red",light:"red"},diffAddedBg:{dark:"#1a3a1a",light:"#e0ffe0"},diffRemovedBg:{dark:"#3a1a1a",light:"#ffe0e0"},diffContextBg:{dark:"#21222c",light:"#e8e8e2"},diffLineNumber:{dark:"#989aa4",light:"#686865"},diffAddedLineNumberBg:{dark:"#1a3a1a",light:"#e0ffe0"},diffRemovedLineNumberBg:{dark:"#3a1a1a",light:"#ffe0e0"},markdownText:{dark:"foreground",light:"#282a36"},markdownHeading:{dark:"purple",light:"purple"},markdownLink:{dark:"cyan",light:"cyan"},markdownLinkText:{dark:"pink",light:"pink"},markdownCode:{dark:"green",light:"green"},markdownBlockQuote:{dark:"comment",light:"#6272a4"},markdownEmph:{dark:"yellow",light:"yellow"},markdownStrong:{dark:"orange",light:"orange"},markdownHorizontalRule:{dark:"comment",light:"#6272a4"},markdownListItem:{dark:"purple",light:"purple"},markdownListEnumeration:{dark:"cyan",light:"cyan"},markdownImage:{dark:"cyan",light:"cyan"},markdownImageText:{dark:"pink",light:"pink"},markdownCodeBlock:{dark:"foreground",light:"#282a36"},syntaxComment:{dark:"comment",light:"#6272a4"},syntaxKeyword:{dark:"pink",light:"pink"},syntaxFunction:{dark:"green",light:"green"},syntaxVariable:{dark:"foreground",light:"#282a36"},syntaxString:{dark:"yellow",light:"yellow"},syntaxNumber:{dark:"purple",light:"purple"},syntaxType:{dark:"cyan",light:"cyan"},syntaxOperator:{dark:"pink",light:"pink"},syntaxPunctuation:{dark:"foreground",light:"#282a36"}}}});var KX;var rq=b(()=>{KX={$schema:"https://opencode.ai/theme.json",defs:{nord0:"#2E3440",nord1:"#3B4252",nord2:"#434C5E",nord3:"#4C566A",nord4:"#D8DEE9",nord5:"#E5E9F0",nord6:"#ECEFF4",nord7:"#8FBCBB",nord8:"#88C0D0",nord9:"#81A1C1",nord10:"#5E81AC",nord11:"#BF616A",nord12:"#D08770",nord13:"#EBCB8B",nord14:"#A3BE8C",nord15:"#B48EAD"},theme:{primary:{dark:"nord8",light:"nord10"},secondary:{dark:"nord9",light:"nord9"},accent:{dark:"nord7",light:"nord7"},error:{dark:"nord11",light:"nord11"},warning:{dark:"nord12",light:"nord12"},success:{dark:"nord14",light:"nord14"},info:{dark:"nord8",light:"nord10"},text:{dark:"nord6",light:"nord0"},textMuted:{dark:"#8B95A7",light:"nord1"},background:{dark:"nord0",light:"nord6"},backgroundPanel:{dark:"nord1",light:"nord5"},backgroundElement:{dark:"nord2",light:"nord4"},border:{dark:"nord2",light:"nord3"},borderActive:{dark:"nord3",light:"nord2"},borderSubtle:{dark:"nord2",light:"nord3"},diffAdded:{dark:"nord14",light:"nord14"},diffRemoved:{dark:"nord11",light:"nord11"},diffContext:{dark:"#8B95A7",light:"nord3"},diffHunkHeader:{dark:"#8B95A7",light:"nord3"},diffHighlightAdded:{dark:"nord14",light:"nord14"},diffHighlightRemoved:{dark:"nord11",light:"nord11"},diffAddedBg:{dark:"#3B4252",light:"#E5E9F0"},diffRemovedBg:{dark:"#3B4252",light:"#E5E9F0"},diffContextBg:{dark:"nord1",light:"nord5"},diffLineNumber:{dark:"#a9aeb6",light:"textMuted"},diffAddedLineNumberBg:{dark:"#3B4252",light:"#E5E9F0"},diffRemovedLineNumberBg:{dark:"#3B4252",light:"#E5E9F0"},markdownText:{dark:"nord4",light:"nord0"},markdownHeading:{dark:"nord8",light:"nord10"},markdownLink:{dark:"nord9",light:"nord9"},markdownLinkText:{dark:"nord7",light:"nord7"},markdownCode:{dark:"nord14",light:"nord14"},markdownBlockQuote:{dark:"#8B95A7",light:"nord3"},markdownEmph:{dark:"nord12",light:"nord12"},markdownStrong:{dark:"nord13",light:"nord13"},markdownHorizontalRule:{dark:"#8B95A7",light:"nord3"},markdownListItem:{dark:"nord8",light:"nord10"},markdownListEnumeration:{dark:"nord7",light:"nord7"},markdownImage:{dark:"nord9",light:"nord9"},markdownImageText:{dark:"nord7",light:"nord7"},markdownCodeBlock:{dark:"nord4",light:"nord0"},syntaxComment:{dark:"#8B95A7",light:"nord3"},syntaxKeyword:{dark:"nord9",light:"nord9"},syntaxFunction:{dark:"nord8",light:"nord8"},syntaxVariable:{dark:"nord7",light:"nord7"},syntaxString:{dark:"nord14",light:"nord14"},syntaxNumber:{dark:"nord15",light:"nord15"},syntaxType:{dark:"nord7",light:"nord7"},syntaxOperator:{dark:"nord9",light:"nord9"},syntaxPunctuation:{dark:"nord4",light:"nord0"}}}});var UX;var oq=b(()=>{UX={$schema:"https://opencode.ai/theme.json",defs:{darkStep1:"#161616",darkStep2:"#1f1f1f",darkStep3:"#282828",darkStep4:"#323232",darkStep5:"#3c3c3c",darkStep6:"#484848",darkStep7:"#545454",darkStep8:"#6a6a6a",darkStep9:"#fab283",darkStep10:"#ffc09f",darkStep11:"#808080",darkStep12:"#eeeeee",darkSecondary:"#5c9cf5",darkAccent:"#7da5c8",darkRed:"#e06c75",darkOrange:"#f5a742",darkGreen:"#7fd88f",darkCyan:"#56b6c2",darkYellow:"#e5c07b",lightStep1:"#ffffff",lightStep2:"#fafafa",lightStep3:"#f5f5f5",lightStep4:"#ebebeb",lightStep5:"#e1e1e1",lightStep6:"#d4d4d4",lightStep7:"#b8b8b8",lightStep8:"#a0a0a0",lightStep9:"#3b7dd8",lightStep10:"#2968c3",lightStep11:"#8a8a8a",lightStep12:"#1a1a1a",lightSecondary:"#7b5bb6",lightAccent:"#3d6f9f",lightRed:"#d1383d",lightOrange:"#d68c27",lightGreen:"#3d9a57",lightCyan:"#318795",lightYellow:"#b0851f"},theme:{primary:{dark:"darkStep9",light:"lightStep9"},secondary:{dark:"darkSecondary",light:"lightSecondary"},accent:{dark:"darkAccent",light:"lightAccent"},error:{dark:"darkRed",light:"lightRed"},warning:{dark:"darkOrange",light:"lightOrange"},success:{dark:"darkGreen",light:"lightGreen"},info:{dark:"darkCyan",light:"lightCyan"},text:{dark:"darkStep12",light:"lightStep12"},textMuted:{dark:"darkStep11",light:"lightStep11"},background:{dark:"darkStep1",light:"lightStep1"},backgroundPanel:{dark:"darkStep2",light:"lightStep2"},backgroundElement:{dark:"darkStep3",light:"lightStep3"},border:{dark:"darkStep7",light:"lightStep7"},borderActive:{dark:"darkStep8",light:"lightStep8"},borderSubtle:{dark:"darkStep6",light:"lightStep6"},diffAdded:{dark:"#4fd6be",light:"#1e725c"},diffRemoved:{dark:"#c53b53",light:"#c53b53"},diffContext:{dark:"#828bb8",light:"#7086b5"},diffHunkHeader:{dark:"#828bb8",light:"#7086b5"},diffHighlightAdded:{dark:"#b8db87",light:"#4db380"},diffHighlightRemoved:{dark:"#e26a75",light:"#f52a65"},diffAddedBg:{dark:"#20303b",light:"#d5e5d5"},diffRemovedBg:{dark:"#37222c",light:"#f7d8db"},diffContextBg:{dark:"darkStep2",light:"lightStep2"},diffLineNumber:{dark:"#8f8f8f",light:"#595959"},diffAddedLineNumberBg:{dark:"#1b2b34",light:"#c5d5c5"},diffRemovedLineNumberBg:{dark:"#2d1f26",light:"#e7c8cb"},markdownText:{dark:"darkStep12",light:"lightStep12"},markdownHeading:{dark:"darkAccent",light:"lightAccent"},markdownLink:{dark:"darkStep9",light:"lightStep9"},markdownLinkText:{dark:"darkCyan",light:"lightCyan"},markdownCode:{dark:"darkGreen",light:"lightGreen"},markdownBlockQuote:{dark:"darkYellow",light:"lightYellow"},markdownEmph:{dark:"darkYellow",light:"lightYellow"},markdownStrong:{dark:"darkOrange",light:"lightOrange"},markdownHorizontalRule:{dark:"darkStep11",light:"lightStep11"},markdownListItem:{dark:"darkStep9",light:"lightStep9"},markdownListEnumeration:{dark:"darkCyan",light:"lightCyan"},markdownImage:{dark:"darkStep9",light:"lightStep9"},markdownImageText:{dark:"darkCyan",light:"lightCyan"},markdownCodeBlock:{dark:"darkStep12",light:"lightStep12"},syntaxComment:{dark:"darkStep11",light:"lightStep11"},syntaxKeyword:{dark:"darkAccent",light:"lightAccent"},syntaxFunction:{dark:"darkStep9",light:"lightStep9"},syntaxVariable:{dark:"darkRed",light:"lightRed"},syntaxString:{dark:"darkGreen",light:"lightGreen"},syntaxNumber:{dark:"darkOrange",light:"lightOrange"},syntaxType:{dark:"darkYellow",light:"lightYellow"},syntaxOperator:{dark:"darkCyan",light:"lightCyan"},syntaxPunctuation:{dark:"darkStep12",light:"lightStep12"}}}});var DX;var sq=b(()=>{DX={$schema:"https://opencode.ai/theme.json",defs:{darkBg0:"#111c18",darkBg1:"#1a2520",darkBg2:"#23372B",darkBg3:"#3d4a44",darkFg0:"#C1C497",darkFg1:"#9aa88a",darkGray:"#53685B",darkRed:"#FF5345",darkGreen:"#549e6a",darkYellow:"#459451",darkBlue:"#509475",darkMagenta:"#D2689C",darkCyan:"#2DD5B7",darkWhite:"#F6F5DD",darkRedBright:"#db9f9c",darkGreenBright:"#63b07a",darkYellowBright:"#E5C736",darkBlueBright:"#ACD4CF",darkMagentaBright:"#75bbb3",darkCyanBright:"#8CD3CB",lightBg0:"#F6F5DD",lightBg1:"#E8E7CC",lightBg2:"#D5D4B8",lightBg3:"#A8A78C",lightFg0:"#111c18",lightFg1:"#1a2520",lightGray:"#53685B",lightRed:"#c7392d",lightGreen:"#3d7a52",lightYellow:"#b5a020",lightBlue:"#3d7560",lightMagenta:"#a8527a",lightCyan:"#1faa90"},theme:{primary:{dark:"darkCyan",light:"lightCyan"},secondary:{dark:"darkMagenta",light:"lightMagenta"},accent:{dark:"darkGreen",light:"lightGreen"},error:{dark:"darkRed",light:"lightRed"},warning:{dark:"darkYellowBright",light:"lightYellow"},success:{dark:"darkGreen",light:"lightGreen"},info:{dark:"darkCyan",light:"lightCyan"},text:{dark:"darkFg0",light:"lightFg0"},textMuted:{dark:"darkGray",light:"lightGray"},background:{dark:"darkBg0",light:"lightBg0"},backgroundPanel:{dark:"darkBg1",light:"lightBg1"},backgroundElement:{dark:"darkBg2",light:"lightBg2"},border:{dark:"darkBg3",light:"lightBg3"},borderActive:{dark:"darkCyan",light:"lightCyan"},borderSubtle:{dark:"darkBg2",light:"lightBg2"},diffAdded:{dark:"darkGreen",light:"lightGreen"},diffRemoved:{dark:"darkRed",light:"lightRed"},diffContext:{dark:"darkGray",light:"lightGray"},diffHunkHeader:{dark:"darkCyan",light:"lightCyan"},diffHighlightAdded:{dark:"darkGreenBright",light:"lightGreen"},diffHighlightRemoved:{dark:"darkRedBright",light:"lightRed"},diffAddedBg:{dark:"#15241c",light:"#e0eee5"},diffRemovedBg:{dark:"#241515",light:"#eee0e0"},diffContextBg:{dark:"darkBg1",light:"lightBg1"},diffLineNumber:{dark:"#828b87",light:"#5f5e4f"},diffAddedLineNumberBg:{dark:"#121f18",light:"#d5e5da"},diffRemovedLineNumberBg:{dark:"#1f1212",light:"#e5d5d5"},markdownText:{dark:"darkFg0",light:"lightFg0"},markdownHeading:{dark:"darkCyan",light:"lightCyan"},markdownLink:{dark:"darkCyanBright",light:"lightCyan"},markdownLinkText:{dark:"darkGreen",light:"lightGreen"},markdownCode:{dark:"darkGreenBright",light:"lightGreen"},markdownBlockQuote:{dark:"darkGray",light:"lightGray"},markdownEmph:{dark:"darkMagenta",light:"lightMagenta"},markdownStrong:{dark:"darkFg0",light:"lightFg0"},markdownHorizontalRule:{dark:"darkGray",light:"lightGray"},markdownListItem:{dark:"darkCyan",light:"lightCyan"},markdownListEnumeration:{dark:"darkCyanBright",light:"lightCyan"},markdownImage:{dark:"darkCyanBright",light:"lightCyan"},markdownImageText:{dark:"darkGreen",light:"lightGreen"},markdownCodeBlock:{dark:"darkFg0",light:"lightFg0"},syntaxComment:{dark:"darkGray",light:"lightGray"},syntaxKeyword:{dark:"darkCyan",light:"lightCyan"},syntaxFunction:{dark:"darkBlue",light:"lightBlue"},syntaxVariable:{dark:"darkFg0",light:"lightFg0"},syntaxString:{dark:"darkGreenBright",light:"lightGreen"},syntaxNumber:{dark:"darkMagenta",light:"lightMagenta"},syntaxType:{dark:"darkGreen",light:"lightGreen"},syntaxOperator:{dark:"darkYellow",light:"lightYellow"},syntaxPunctuation:{dark:"darkFg0",light:"lightFg0"}}}});var LX;var tq=b(()=>{LX={$schema:"https://opencode.ai/theme.json",defs:{darkStep1:"#1a1b26",darkStep2:"#1e2030",darkStep3:"#222436",darkStep4:"#292e42",darkStep5:"#3b4261",darkStep6:"#545c7e",darkStep7:"#737aa2",darkStep8:"#9099b2",darkStep9:"#82aaff",darkStep10:"#89b4fa",darkStep11:"#828bb8",darkStep12:"#c8d3f5",darkRed:"#ff757f",darkOrange:"#ff966c",darkYellow:"#ffc777",darkGreen:"#c3e88d",darkCyan:"#86e1fc",darkPurple:"#c099ff",lightStep1:"#e1e2e7",lightStep2:"#d5d6db",lightStep3:"#c8c9ce",lightStep4:"#b9bac1",lightStep5:"#a8aecb",lightStep6:"#9699a8",lightStep7:"#737a8c",lightStep8:"#5a607d",lightStep9:"#2e7de9",lightStep10:"#1a6ce7",lightStep11:"#8990a3",lightStep12:"#3760bf",lightRed:"#f52a65",lightOrange:"#b15c00",lightYellow:"#8c6c3e",lightGreen:"#587539",lightCyan:"#007197",lightPurple:"#9854f1"},theme:{primary:{dark:"darkStep9",light:"lightStep9"},secondary:{dark:"darkPurple",light:"lightPurple"},accent:{dark:"darkOrange",light:"lightOrange"},error:{dark:"darkRed",light:"lightRed"},warning:{dark:"darkOrange",light:"lightOrange"},success:{dark:"darkGreen",light:"lightGreen"},info:{dark:"darkStep9",light:"lightStep9"},text:{dark:"darkStep12",light:"lightStep12"},textMuted:{dark:"darkStep11",light:"lightStep11"},background:{dark:"darkStep1",light:"lightStep1"},backgroundPanel:{dark:"darkStep2",light:"lightStep2"},backgroundElement:{dark:"darkStep3",light:"lightStep3"},border:{dark:"darkStep7",light:"lightStep7"},borderActive:{dark:"darkStep8",light:"lightStep8"},borderSubtle:{dark:"darkStep6",light:"lightStep6"},diffAdded:{dark:"#4fd6be",light:"#1e725c"},diffRemoved:{dark:"#c53b53",light:"#c53b53"},diffContext:{dark:"#828bb8",light:"#7086b5"},diffHunkHeader:{dark:"#828bb8",light:"#7086b5"},diffHighlightAdded:{dark:"#b8db87",light:"#4db380"},diffHighlightRemoved:{dark:"#e26a75",light:"#f52a65"},diffAddedBg:{dark:"#20303b",light:"#d5e5d5"},diffRemovedBg:{dark:"#37222c",light:"#f7d8db"},diffContextBg:{dark:"darkStep2",light:"lightStep2"},diffLineNumber:{dark:"#8f909a",light:"#59595b"},diffAddedLineNumberBg:{dark:"#1b2b34",light:"#c5d5c5"},diffRemovedLineNumberBg:{dark:"#2d1f26",light:"#e7c8cb"},markdownText:{dark:"darkStep12",light:"lightStep12"},markdownHeading:{dark:"darkPurple",light:"lightPurple"},markdownLink:{dark:"darkStep9",light:"lightStep9"},markdownLinkText:{dark:"darkCyan",light:"lightCyan"},markdownCode:{dark:"darkGreen",light:"lightGreen"},markdownBlockQuote:{dark:"darkYellow",light:"lightYellow"},markdownEmph:{dark:"darkYellow",light:"lightYellow"},markdownStrong:{dark:"darkOrange",light:"lightOrange"},markdownHorizontalRule:{dark:"darkStep11",light:"lightStep11"},markdownListItem:{dark:"darkStep9",light:"lightStep9"},markdownListEnumeration:{dark:"darkCyan",light:"lightCyan"},markdownImage:{dark:"darkStep9",light:"lightStep9"},markdownImageText:{dark:"darkCyan",light:"lightCyan"},markdownCodeBlock:{dark:"darkStep12",light:"lightStep12"},syntaxComment:{dark:"darkStep11",light:"lightStep11"},syntaxKeyword:{dark:"darkPurple",light:"lightPurple"},syntaxFunction:{dark:"darkStep9",light:"lightStep9"},syntaxVariable:{dark:"darkRed",light:"lightRed"},syntaxString:{dark:"darkGreen",light:"lightGreen"},syntaxNumber:{dark:"darkOrange",light:"lightOrange"},syntaxType:{dark:"darkYellow",light:"lightYellow"},syntaxOperator:{dark:"darkCyan",light:"lightCyan"},syntaxPunctuation:{dark:"darkStep12",light:"lightStep12"}}}});var F5;var O5=b(()=>{aq();_q();pq();rq();oq();sq();tq();F5={claude:jX,conductor:WX,nord:KX,opencode:UX,dracula:VX,tokyonight:LX,"osaka-jade":DX}});function rR(J){let z=/^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/.exec(J);if(!z)return null;let Y=z[1];if(Y.length===3){let[Z,X,G]=Y;return`#${Z}${Z}${X}${X}${G}${G}`.toLowerCase()}return`#${Y.slice(0,6)}`.toLowerCase()}function A5(J,z,Y="dark"){let Z=J.defs??{};function X(Q,f){if(typeof Q==="string"){if(Q==="transparent"||Q==="none")return null;if(Q.startsWith("#"))return rR(Q);if(f.includes(Q))return null;let B=Z[Q]??J.theme[Q];if(B===void 0)return null;return X(B,[...f,Q])}if(!Q||typeof Q!=="object")return null;let H=Q[Y];return typeof H==="string"?X(H,f):null}let G=J.theme[z];if(G===void 0)return null;return X(G,[z])}function eq(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}function Jf(J){if(!eq(J))return{ok:!1,reason:"theme must be a JSON object at the top level"};let z=J;if(!("theme"in z))return{ok:!1,reason:"missing required key `theme`"};let Y=z.theme;if(!eq(Y))return{ok:!1,reason:"`theme` must be an object map"};if("defs"in z&&z.defs!==void 0){if(!eq(z.defs))return{ok:!1,reason:"`defs` must be an object map"};for(let[Z,X]of Object.entries(z.defs))if(typeof X!=="string")return{ok:!1,reason:`defs.${Z} must be a string (hex like "#abc" or a ref name)`}}for(let[Z,X]of Object.entries(Y)){if(typeof X==="string")continue;if(!eq(X))return{ok:!1,reason:`theme.${Z} must be a string or a { dark, light } object (got ${X===null?"null":Array.isArray(X)?"array":typeof X})`};let G=X;if(typeof G.dark!=="string")return{ok:!1,reason:`theme.${Z}.dark must be a string`};if(typeof G.light!=="string")return{ok:!1,reason:`theme.${Z}.light must be a string`}}if("$schema"in z&&z.$schema!==void 0&&typeof z.$schema!=="string")return{ok:!1,reason:"`$schema` must be a string when present"};return{ok:!0,theme:z}}var WB=()=>{};import{readFileSync as oR,readdirSync as sR}from"fs";import{join as R5}from"path";function MX(){return R5(fJ(),"themes")}function IG(){let J=MX(),z;try{z=sR(J)}catch{return[]}let Y=[];for(let Z of z){if(!Z.endsWith(".json"))continue;let X=R5(J,Z),G;try{let H=oR(X,"utf8");G=JSON.parse(H)}catch(H){let B=H instanceof Error?H.message:String(H);console.warn(`[kobe] skipping user theme ${X}: invalid JSON \u2014 ${B}`);continue}let Q=Jf(G);if(!Q.ok){console.warn(`[kobe] skipping user theme ${X}: ${Q.reason}`);continue}let f=Z.slice(0,-5);Y.push({name:f,theme:Q.theme})}return Y}var zf=b(()=>{o1();WB()});import{readFileSync as tR}from"fs";function Jg(){try{let J=JSON.parse(tR(lJ(),"utf8")),z=typeof J.activeTheme==="string"&&J.activeTheme?J.activeTheme:"claude",Y=typeof J.focusAccent==="string"&&eR.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 zg(J){return IG().find((Y)=>Y.name===J)?.theme??F5[J]??null}function Mz(J,...z){for(let Y of z){let Z=A5(J,Y);if(Z)return Z}return null}function g5(J,z){let Y=Mz(J,"text"),Z=Mz(J,"background"),X=Mz(J,"textMuted","text"),G=Mz(J,"backgroundPanel","background"),Q=Mz(J,"backgroundElement","backgroundPanel","background"),f=Mz(J,"backgroundMenu","backgroundElement","backgroundPanel","background"),H=Mz(J,"selectedListItemText","background"),B=Mz(J,z,"primary","borderActive","border","text");return{border:Mz(J,"border","text"),activeBorder:B,statusBg:G,statusFg:X,statusMutedFg:X,windowFg:X,currentWindowBg:Q,currentWindowFg:B,activityFg:Mz(J,"info","primary","text"),bellFg:Mz(J,"warning","error","primary","text"),messageBg:f,messageFg:Y,messageCommandFg:B,modeBg:B,modeFg:H??Z}}function tJ(J){let z=[];if(J.bg)z.push(`bg=${J.bg}`);if(J.fg)z.push(`fg=${J.fg}`);if(z.length===0)return null;if(J.attrs)z.push(...J.attrs);return z.join(",")}function N5(J){let z=tJ({bg:J.statusBg,fg:J.statusFg}),Y=tJ({bg:J.statusBg,fg:J.statusMutedFg}),Z=tJ({bg:J.statusBg,fg:J.windowFg});return[{key:"border",option:"pane-border-style",showFlag:"-gwqv",setFlag:"-gw",unsetFlag:"-gwu",value:tJ({fg:J.border})},{key:"active",option:"pane-active-border-style",showFlag:"-gwqv",setFlag:"-gw",unsetFlag:"-gwu",value:tJ({fg:J.activeBorder})},{key:"status",option:"status-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:z},{key:"status-left",option:"status-left-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Y},{key:"status-right",option:"status-right-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Y},{key:"window",option:"window-status-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Z},{key:"current-window",option:"window-status-current-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:tJ({bg:J.currentWindowBg,fg:J.currentWindowFg,attrs:["bold"]})},{key:"activity-window",option:"window-status-activity-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:tJ({bg:J.statusBg,fg:J.activityFg})},{key:"bell-window",option:"window-status-bell-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:tJ({bg:J.statusBg,fg:J.bellFg,attrs:["bold"]})},{key:"last-window",option:"window-status-last-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:tJ({bg:J.statusBg,fg:J.statusFg})},{key:"message",option:"message-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:tJ({bg:J.messageBg,fg:J.messageFg})},{key:"message-command",option:"message-command-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:tJ({bg:J.messageBg,fg:J.messageCommandFg,attrs:["bold"]})},{key:"mode",option:"mode-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:tJ({bg:J.modeBg,fg:J.modeFg})},{key:"display-panes",option:"display-panes-colour",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:J.border},{key:"display-panes-active",option:"display-panes-active-colour",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:J.activeBorder}]}function Yg(J){let z=new Set(J.marker.split(",").map((G)=>G.trim()).filter(Boolean)),Y=[],Z=[];for(let G of N5(J.hexes))if(G.value){if((J.current[G.key]??"")!==G.value)Y.push(["set-option",G.setFlag,G.option,G.value]);Z.push(G.key)}else if(z.has(G.key))Y.push(["set-option",G.unsetFlag,G.option]);let X=Z.join(",");if(X!==J.marker)Y.push(X?["set-option","-g",VB,X]:["set-option","-gu",VB]);return Y}async function C5(J){let{code:z,stdout:Y}=await $0(J);return z===0?Y.trim():""}async function OZ(){try{let J=Jg(),z=J.enabled?zg(J.themeName):null,Y=z?g5(z,J.focusAccentSlot):g5({theme:{}},J.focusAccentSlot),Z=N5(Y),[X,...G]=await Promise.all([C5(["show-options","-gqv",VB]),...Z.map((H)=>C5(["show-options",H.showFlag,H.option]))]),Q=Object.fromEntries(Z.map((H,B)=>[H.key,G[B]??""])),f=Yg({marker:X,current:Q,hexes:Y});if(f.length>0)await i1(f)}catch{}}var VB="@kobe_border_theme",eR;var Yf=b(()=>{o1();h1();O5();zf();eR=["primary","success","info"]});function b5(){return pz(Zf,!0)}function Xf(){return pz(k5,!1)}function S5(J){lW(k5,J)}var Zf="zen.keepTasks",k5="zen.active";var KB=b(()=>{eY()});var Gf={};f1(Gf,{recordGen:()=>TY,isLatestGen:()=>u5,genAgeMs:()=>Hg,coalesceLayoutWork:()=>Bg,RESIZE_GUARD_MS:()=>fg,LAYOUT_COALESCE_MS:()=>y5});import{createHash as Zg,randomUUID as Xg}from"crypto";import{mkdirSync as Gg,readFileSync as I5,renameSync as Qg,writeFileSync as qg}from"fs";import{join as T5}from"path";function x5(){return T5(fJ(),"layout-coord")}function UB(J,z){let Y=Zg("sha1").update(J).digest("hex").slice(0,16);return T5(x5(),`${Y}.${z}`)}function TY(J,z){let Y=Xg();try{Gg(x5(),{recursive:!0});let Z=UB(J,z),X=`${Z}.${Y}.tmp`;qg(X,`${Date.now()}
41
- ${Y}`),Qg(X,Z)}catch{}return Y}function u5(J,z,Y){try{return I5(UB(J,z),"utf8").split(`
42
- `)[1]?.trim()===Y}catch{return!0}}function Hg(J,z,Y=Date.now()){try{let Z=Number.parseInt(I5(UB(J,z),"utf8").split(`
43
- `)[0]??"",10);return Number.isFinite(Z)?Y-Z:Number.POSITIVE_INFINITY}catch{return Number.POSITIVE_INFINITY}}async function Bg(J,z,Y,Z=y5){let X=TY(J,z);if(Z>0)await new Promise((G)=>setTimeout(G,Z));if(!u5(J,z,X))return;await Y()}var y5=120,fg=400;var FX=b(()=>{o1()});function Wg(J){let z=[];for(let Y of J.split(`
44
- `)){let Z=Y.trim();if(!Z)continue;let[X,G,Q,f,H]=Z.split("\t");if(!X||!G||!Q)continue;let B=Number.parseInt(H?.trim()??"",10);z.push({windowId:X.trim(),paneId:G.trim(),role:Q.trim(),version:f?.trim()??"",...Number.isFinite(B)?{paneWidth:B}:{}})}return z}function Vg(J){let z=J.indexOf("-t");return z>=0&&z+1<J.length?J[z+1]??null:null}function Kg(J,z){return J.filter((Y)=>{let Z=Vg(Y);return Z===null||z.has(Z)})}function E5(J,z){let Y=new Map;for(let X of J){let G=Y.get(X.windowId)??[];G.push(X),Y.set(X.windowId,G)}let Z=[];for(let X of Y.values()){let G=X.find((B)=>B.role==="claude")?.paneId,Q=X.find((B)=>B.role==="tasks"),f=X.find((B)=>B.role==="ops");if(Q&&(z.force||Q.version!==z.currentVersion))Z.push({role:"tasks",paneId:Q.paneId});let H=z.force?!0:G&&(z.vendorChanged||f?.version!==z.currentVersion);if(f&&H)Z.push({role:"ops",paneId:f.paneId,claudePaneId:G??null})}return Z}async function Qf(J){let{code:z,stdout:Y}=await $0(["list-panes","-s","-t",`=${J}`,"-F",jg]);if(z!==0)return null;return Wg(Y)}async function w5(J,z){if(z.length===0)return;let Y=await Qf(J),Z=Y?Kg(z,new Set(Y.map((X)=>X.paneId))):z;if(Z.length>0)await i1(Z)}function P5(J,z){let Y=k1(),Z=n1(),X=[];for(let G of J){let Q=G.role==="tasks"?NY(Y,{initialTaskId:z.taskId}):_Z({cwd:z.cwd,taskId:z.taskId,claudePaneId:G.claudePaneId,cliInvocation:Y,vendor:z.vendor});X.push(["respawn-pane","-k","-t",G.paneId,"-c",P1(z.cwd),bJ(Z+Q)],["set-option","-p","-t",G.paneId,"@kobe_role",G.role],["set-option","-p","-t",G.paneId,Fz,p0])}return X}function Ug(J,z){if(J===0)return"no-engine-pane";return z===0?"switched":"respawn-failed"}async function h5(J,z,Y,Z,X){let G=await Qf(J);if(!G)return"no-engine-pane";let Q=G.filter((j)=>j.role==="claude");if(Q.length===0)return"no-engine-pane";let f=P1(z),H=aZ(n1(),k1(),J),B=[];for(let j of Q){let K=QX(Y,X),L=bJ(GX(NJ(K.argv),Z,z),H);B.push(["respawn-pane","-k","-c",f,"-t",j.paneId,L]),B.push(K.sessionId?["set-window-option","-t",j.paneId,Ez,K.sessionId]:["set-window-option","-u","-t",j.paneId,Ez])}let V=await i1(B);return Ug(Q.length,V)}async function v5(){return(await wz()).rightColumnResizeArgs}async function DB(J,z={}){let{tasksWidth:Y,rightColumnResizeArgs:Z}=await wz(),X=await Qf(J);if(!X)return{rows:null,commands:[]};let G=[];for(let Q of X)if(Q.role==="tasks"&&(z.force||Q.paneWidth!==Y))G.push(["resize-pane","-t",Q.paneId,"-x",`${Y}`]);if(Z.length>0){for(let Q of X)if(Q.role==="ops")G.push(["resize-pane","-t",Q.paneId,...Z])}return{rows:X,commands:G}}async function AZ(J,z){TY(J,"resize");let{rows:Y,commands:Z}=await DB(J);if(!Y)return;let X=[...Z];if(z)X.push(...P5(E5(Y,{currentVersion:p0,force:!1,vendorChanged:z.vendorChanged}),z));await w5(J,X)}async function m5(J){if(!await V1(J))return;await AZ(J)}async function LB(J){let{code:z,stdout:Y}=await $0(["list-panes","-t",`=${J}`,"-F",`#{@kobe_role} #{pane_width} #{pane_height} #{window_width} #{window_height} #{window_zoomed_flag} #{${jz}} #{${CJ}}`]);if(z!==0)return;let Z=Y.split(`
45
- `).map((B)=>B.split("\t")).filter((B)=>(B[0]?.trim()??"")!=="");if(Z.length===0)return;if(Z.some((B)=>B[5]?.trim()==="1"))return;if(Z.some((B)=>(B[6]?.trim()??"")!==""))return;if(Z.some((B)=>(B[7]?.trim()??"")!==""))return;if(!Z.some((B)=>B[0]?.trim()==="shell"))return;let X=Number.parseInt(Z[0][3]?.trim()??"",10),G=Number.parseInt(Z[0][4]?.trim()??"",10),Q=[],f=Z.find(([B])=>B?.trim()==="tasks");if(f){let B=Number.parseInt(f[1]?.trim()??"",10);if(Number.isFinite(B)&&B>0)Q.push(["set-option","-s",Xq,`${L8(B)}`])}let H=Z.find(([B])=>B?.trim()==="ops");if(H&&Number.isFinite(X)&&X>0&&Number.isFinite(G)&&G>0){let B=Number.parseInt(H[1]?.trim()??"",10),V=Number.parseInt(H[2]?.trim()??"",10),j=Number.isFinite(B)?XZ(100*B/X):null,K=Number.isFinite(V)?XZ(100*V/G):null;if(j!==null)Q.push(["set-option","-s",Gq,`${j}`]);if(K!==null)Q.push(["set-option","-s",Qq,`${K}`])}if(Q.length>0)await i1(Q)}function Dg(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 c5(J){let{code:z,stdout:Y}=await $0(["list-panes","-t",`=${J}`,"-F",`#{@kobe_role} #{window_zoomed_flag} #{${jz}} #{${CJ}}`]);if(z!==0||!Dg(Y))return;await LB(J)}async function OX(J){let z=await IJ(J,["@kobe_worktree","@kobe_task","@kobe_vendor"]),Y=z["@kobe_worktree"]||process.cwd(),Z=z["@kobe_task"]||void 0,X=z["@kobe_vendor"]||void 0,G=await Qf(J);if(!G)return;let Q=P5(E5(G,{currentVersion:p0,force:!0}),{cwd:Y,taskId:Z,vendor:X});await w5(J,Q),await OZ()}var Fz="@kobe_pane_version",jg;var TG=b(()=>{YY();sJ();Uz();h1();Wz();Yf();MJ();jZ();FX();jg=`#{window_id} #{pane_id} #{@kobe_role} #{${Fz}} #{pane_width}`});var kB={};f1(kB,{syncSessionZen:()=>Hf,runLayoutAction:()=>RZ,resolveShellPane:()=>qf,planWorkspaceSplit:()=>n5,parseLayoutPaneRows:()=>d5,expandedTerminalHeightPercent:()=>i5,engineTabExit:()=>Eg,applyZenToNewWindow:()=>bB});function d5(J){let z=[];for(let Y of J.split(`
47
- `)){let Z=Y.trim();if(!Z)continue;let[X,G,Q,f,H,B,V]=Z.split("\t");if(!X)continue;let j=Number.parseInt(f??"",10),K=Number.parseInt(H??"",10),L=Number.parseInt(B??"",10),A=Number.parseInt(V??"",10);z.push({paneId:X.trim(),role:G?.trim()??"",active:Q?.trim()==="1",paneWidth:Number.isFinite(j)?j:0,paneHeight:Number.isFinite(K)?K:0,windowWidth:Number.isFinite(L)?L:0,windowHeight:Number.isFinite(A)?A:0})}return z}function n5(J){let z=J.find((Z)=>Z.role===GZ);if(!z)return{kind:"missing-engine"};let Y=J.filter((Z)=>Z.role===fG);if(Y.length+1>=D8)return{kind:"maxed"};if(Y.length===0)return{kind:"split",targetPane:z.paneId,direction:"-h"};if(Y.length===1)return{kind:"split",targetPane:Y[0]?.paneId??z.paneId,direction:"-v"};return{kind:"split",targetPane:z.paneId,direction:"-v"}}function qf(J){return J.find((z)=>z.role===Bz)??J.find((z)=>z.role==="")}function i5(J){return 100-(XZ(J??Number.NaN)??BG)}async function hJ(J,z){let Y=z?.trim()||`=${J}`,{code:Z,stdout:X}=await $0(["list-panes","-t",Y,"-F",Lg]);return Z===0?d5(X):null}async function MB(J){let{code:z,stdout:Y}=await $0(["list-windows","-t",`=${J}`,"-F","#{window_active}\t#{window_id}"]);if(z!==0)return"";for(let Z of Y.split(`
48
- `)){let[X,G]=Z.split("\t");if(X?.trim()==="1"&&G?.trim())return G.trim()}return""}async function GY(J,z){let{code:Y,stdout:Z}=await $0(["show-options","-wqv","-t",J,z]);return Y===0?Z.trim():""}async function OB(J,z,Y){await c0(["set-window-option","-t",J,z,Y])}async function yY(J,z){await c0(["set-window-option","-u","-t",J,z])}async function AB(J){let{code:z,stdout:Y}=await $0(["display-message","-p","-t",J,"#{pane_id}"]);return z===0&&Y.trim()===J}async function y1(J,z){await c0(["display-message","-t",J,z])}async function ff(J){let z=await IJ(J,["@kobe_worktree","@kobe_task","@kobe_vendor"]);return{cwd:z["@kobe_worktree"]||process.cwd(),taskId:z["@kobe_task"]||void 0,vendor:z["@kobe_vendor"]||void 0}}function Mg(J){let z=k1(),Y=n1();return bJ(Y+_Z({cwd:J.cwd,taskId:J.taskId,claudePaneId:J.enginePaneId,cliInvocation:z,vendor:J.vendor}))}async function Fg(J,z){return z?.trim()||await MB(J)}async function Og(J,z){let Y=await hJ(J,z);if(!Y)return;let Z=n5(Y);if(Z.kind==="missing-engine"){await y1(z,"kobe: no engine pane in this window");return}if(Z.kind==="maxed"){await y1(z,`kobe: workspace split limit is ${D8} panes`);return}let{cwd:X}=await ff(J),{code:G,stdout:Q}=await $0(["split-window",Z.direction,"-t",Z.targetPane,"-l","50%","-c",P1(X),"-P","-F","#{pane_id}",bJ("true")]),f=Q.trim();if(G!==0||!f)return;await i1([["set-option","-p","-t",f,"@kobe_role",fG],["select-pane","-t",f]])}async function Ag(J,z){let Y=await hJ(J,z);if(!Y)return;let Z=Y.filter((Q)=>Q.role===fG);if(Z.length===0){await y1(z,"kobe: no workspace split to close");return}let G=Z.find((Q)=>Q.active)??Z[Z.length-1];if(!G)return;await c0(["kill-pane","-t",G.paneId])}async function Rg(J,z){let Y=await hJ(J,z);if(!Y)return;let Z=Y.filter((X)=>X.role===fG);if(Z.length===0){await y1(z,"kobe: no workspace splits to reset");return}await i1(Z.map((X)=>["kill-pane","-t",X.paneId]))}async function l5(){return(await wz()).tasksWidth}async function gg(J){let{cwd:z,taskId:Y}=await ff(J),Z=k1(),X=n1();return{cwd:z,command:bJ(X+NY(Z,{initialTaskId:Y}))}}async function $5(J,z){let Y=await hJ(J,z);if(!Y)return;let Z=Y.find((O)=>O.role===Hz);if(Z){await c0(["kill-pane","-t",Z.paneId]);return}let X=qf(Y),G=Y.find((O)=>O.role===GZ);if(!G){await y1(z,"kobe: cannot restore file pane in this layout");return}let{cwd:Q,taskId:f,vendor:H}=await ff(J),B=Mg({cwd:Q,taskId:f,vendor:H,enginePaneId:G.paneId}),V=X?["split-window","-v","-b","-t",X.paneId,"-l",`${await Cg()}%`,"-c",P1(Q),"-P","-F","#{pane_id}",B]:["split-window","-h","-t",G.paneId,"-l",`${await RB()}%`,"-c",P1(Q),"-P","-F","#{pane_id}",B],{code:j,stdout:K}=await $0(V),L=K.trim();if(j!==0||!L)return;let A=[["set-option","-p","-t",L,"@kobe_role",Hz],["set-option","-p","-t",L,Fz,p0]];if(X?.role==="")A.push(["set-option","-p","-t",X.paneId,"@kobe_role",Bz]);await i1(A)}async function Cg(){return(await wz()).opsHeightPct}async function RB(){return(await wz()).rightColumnWidthPct}async function a5(){return i5((await wz()).opsHeightPct)}async function Ng(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 _5(J,z){let Y=await Ng(J),Z=y7(z);while(Y.has(Z))Z++;return Z}async function p5(J){let z=HG(J);if(await V1(z))return z;return await c0(["new-session","-d","-s",z,"-n","hidden-panes","-c",P1(process.cwd()),"while :; do sleep 3600; done"]),z}async function gB(J){let z=HG(J);if(!await V1(z))return;let{code:Y,stdout:Z}=await $0(["list-panes","-s","-t",`=${z}`,"-F","#{@kobe_role}"]);if(Y!==0)return;if(!Z.split(`
50
- `).some((G)=>{let Q=G.trim();return Q===Bz||Q===_J}))await c0(["kill-session","-t",`=${z}`])}async function bg(J,z){await r5(J,z,jz)}async function kg(J,z){await r5(J,z,CJ)}async function r5(J,z,Y){let Z=await GY(z,Y);if(!Z)return;if(await AB(Z))await c0(["kill-pane","-t",Z]);await yY(z,Y)}async function FB(J,z){await bg(J,z),await kg(J,z),await gB(J)}function o5(J){return J.find((z)=>z.role===GZ)??J[0]}async function CB(J,z,Y){let Z=o5(Y);if(!Z)return await y1(z,"kobe: cannot restore Tasks pane in this layout"),!1;let X=await l5(),{cwd:G,command:Q}=await gg(J),{code:f,stdout:H}=await $0(["split-window","-h","-b","-t",Z.paneId,"-l",`${X}`,"-c",P1(G),"-P","-F","#{pane_id}",Q]),B=H.trim();if(f!==0||!B)return!1;return await i1([["set-option","-p","-t",B,"@kobe_role",_J],["set-option","-p","-t",B,Fz,p0],["select-pane","-t",B]]),await yY(z,CJ),await y1(z,"kobe: Tasks pane restored"),!0}async function s5(J,z,Y){let Z=await p5(J),X=await _5(Z,z),{code:G,stdout:Q}=await $0(["break-pane","-d","-s",Y.paneId,"-t",`${Z}:${X}`,"-P","-F","#{pane_id}"]),f=Q.trim()||Y.paneId;if(G!==0||!f){await y1(z,"kobe: could not hide Tasks pane");return}await OB(z,CJ,f),await y1(z,"kobe: Tasks pane hidden")}async function NB(J,z,Y){let Z=await hJ(J,z);if(!Z)return;if(!await AB(Y)){await yY(z,CJ);let Q=Z.find((f)=>f.role===_J);if(Q){await c0(["select-pane","-t",Q.paneId]);return}await CB(J,z,Z);return}let X=o5(Z);if(!X){await y1(z,"kobe: cannot restore Tasks pane in this layout");return}if(await c0(["join-pane","-h","-b","-s",Y,"-t",X.paneId,"-l",`${await l5()}`])!==0){await y1(z,"kobe: could not restore Tasks pane");return}await i1([["set-option","-p","-t",Y,"@kobe_role",_J],["set-option","-p","-t",Y,Fz,p0],["select-pane","-t",Y]]),await yY(z,CJ),await gB(J),await y1(z,"kobe: Tasks pane restored")}async function Sg(J,z){let Y=await GY(z,CJ);if(Y){await NB(J,z,Y);return}let Z=await hJ(J,z);if(!Z)return;let X=Z.find((G)=>G.role===_J);if(X){await s5(J,z,X);return}await CB(J,z,Z)}async function Ig(J,z){let Y=await GY(z,CJ);if(Y){await NB(J,z,Y);return}let Z=await hJ(J,z);if(!Z)return;let X=Z.find((G)=>G.role===_J);if(X){await c0(["select-pane","-t",X.paneId]);return}await CB(J,z,Z)}async function t5(J,z,Y){if(Y.role==="")await c0(["set-option","-p","-t",Y.paneId,"@kobe_role",Bz]);let Z=await p5(J),X=await _5(Z,z),{code:G,stdout:Q}=await $0(["break-pane","-d","-s",Y.paneId,"-t",`${Z}:${X}`,"-P","-F","#{pane_id}"]),f=Q.trim()||Y.paneId;if(G!==0||!f){await y1(z,"kobe: could not hide terminal pane");return}await OB(z,jz,f),await y1(z,"kobe: Terminal pane hidden")}async function e5(J,z,Y){let Z=Y.find((V)=>V.role===Hz),X=Y.find((V)=>V.role===GZ);if(!Z&&!X)return await y1(z,"kobe: cannot restore terminal pane in this layout"),!1;let{cwd:G}=await ff(J),Q=Z?["split-window","-v","-t",Z.paneId,"-l",`${await a5()}%`,"-c",P1(G),"-P","-F","#{pane_id}"]:["split-window","-h","-t",X?.paneId??"","-l",`${await RB()}%`,"-c",P1(G),"-P","-F","#{pane_id}"],{code:f,stdout:H}=await $0(Q),B=H.trim();if(f!==0||!B)return!1;return await c0(["set-option","-p","-t",B,"@kobe_role",Bz]),await yY(z,jz),await y1(z,"kobe: Terminal pane restored"),!0}async function JK(J,z,Y){let Z=await hJ(J,z);if(!Z)return;if(!await AB(Y)){await yY(z,jz),await e5(J,z,Z);return}let X=Z.find((B)=>B.role===Hz),G=Z.find((B)=>B.role===GZ);if(!X&&!G){await y1(z,"kobe: cannot restore terminal pane in this layout");return}let Q=X?["join-pane","-v","-s",Y,"-t",X.paneId,"-l",`${await a5()}%`]:["join-pane","-h","-s",Y,"-t",G?.paneId??"","-l",`${await RB()}%`];if(await c0(Q)!==0){await y1(z,"kobe: could not restore terminal pane");return}await c0(["set-option","-p","-t",Y,"@kobe_role",Bz]),await yY(z,jz),await gB(J),Z=await hJ(J,z);let H=Z?.find((B)=>B.paneId===Y);if(H)await c0(["select-pane","-t",H.paneId]);await y1(z,"kobe: Terminal pane restored")}async function Tg(J,z){let Y=await GY(z,jz);if(Y){await JK(J,z,Y);return}let Z=await hJ(J,z);if(!Z)return;let X=qf(Z);if(X){await t5(J,z,X);return}await e5(J,z,Z)}async function yg(J){let z=Xf();if(S5(!z),z){await XK(J);return}await ZK(J)}async function Hf(J){if(!await V1(J))return;let z=Xf(),Y=(await gZ(J,$Z)).length>0;if(z===Y)return;if(z)await ZK(J);else await XK(J)}async function zK(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 YK(J,z){return!!(await hJ(J,z))?.some((Z)=>Z.role===GZ)}async function ZK(J){let z=await zK(J);for(let Y of z){if(!await YK(J,Y))continue;if(await GY(Y,CY))continue;await GK(J,Y)}await QY(J,$Z,"1"),await y1(`=${J}`,"kobe: Zen mode on \u2014 all tabs")}async function XK(J){let z=await zK(J);for(let Y of z){let Z=await GY(Y,CY);if(Z)await xg(J,Y,Z)}await c0(["set-option","-u","-t",J,$Z]),await y1(`=${J}`,"kobe: Zen mode off \u2014 all tabs")}async function bB(J,z){let Y=(await gZ(J,$Z)).length>0;if(!Y&&!Xf())return;if(!Y)await QY(J,$Z,"1");if(await GY(z,CY))return;if(!await YK(J,z))return;await GK(J,z)}async function GK(J,z){let Y=await hJ(J,z);if(!Y)return;let Z=[],X=Y.find((Q)=>Q.role===Hz);if(X)await c0(["kill-pane","-t",X.paneId]),Z.push(Hz);let G=qf(Y);if(G)await t5(J,z,G),Z.push(Bz);if(!b5()){let Q=Y.find((f)=>f.role===_J);if(Q)await s5(J,z,Q),Z.push(_J)}if(Z.length===0){await y1(z,"kobe: already focused \u2014 nothing to hide");return}await OB(z,CY,Z.join(",")),await y1(z,"kobe: Zen mode on")}async function xg(J,z,Y){let Z=new Set(Y.split(",").map((X)=>X.trim()));if(Z.has(_J)){let X=await GY(z,CJ);if(X)await NB(J,z,X)}if(Z.has(Hz)){let X=await hJ(J,z);if(X&&!X.some((G)=>G.role===Hz))await $5(J,z)}if(Z.has(Bz)){let X=await GY(z,jz);if(X)await JK(J,z,X)}await yY(z,CY),await y1(z,"kobe: Zen mode off")}async function QK(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 ug(J,z){if(await QK(J)<=1){await y1(z,"Cannot close the only ChatTab");return}await FB(J,z),await c0(["kill-window","-t",z])}async function Eg(J){if(!await V1(J))return;let z=await MB(J);if(!z)return;if(await QK(J)>1){await FB(J,z),await c0(["kill-window","-t",z]);return}let{newChatTab:Y}=await Promise.resolve().then(() => (Bf(),qK));if(await Y(J),await MB(J)!==z)await FB(J,z),await c0(["kill-window","-t",z])}async function RZ(J,z,Y={}){if(!await V1(J))return;let Z=await Fg(J,Y.windowId);if(!Z)return;switch(z){case"workspace-split":await Og(J,Z);return;case"workspace-close":await Ag(J,Z);return;case"workspace-reset":await Rg(J,Z);return;case"tasks-toggle":await Sg(J,Z);return;case"tasks-restore":await Ig(J,Z);return;case"ops-toggle":await $5(J,Z);return;case"terminal-toggle":await Tg(J,Z);return;case"zen-toggle":await yg(J);return;case"chat-tab-close":await ug(J,Z);return}}var Lg="#{pane_id}\t#{@kobe_role}\t#{pane_active}\t#{pane_width}\t#{pane_height}\t#{window_width}\t#{window_height}";var xY=b(()=>{YY();Uz();KB();h1();Wz();MJ();jZ();TG()});var qK={};f1(qK,{quickCreate:()=>TB,openUpdateTab:()=>dG,openSettingsTab:()=>vG,openNewTaskTab:()=>cG,openHelpTab:()=>mG,newChatTab:()=>IB,kobeStatusRight:()=>PG,chatTabSwitchBindings:()=>xG,chatTabRenameBinding:()=>EG,chatTabCloseBinding:()=>uG,chatTabChooseEngineBindings:()=>wG,buildPanesAround:()=>Wf,CHAT_TAB_STATUS_FORMAT:()=>AX,CHAT_TAB_STATUS_CURRENT_FORMAT:()=>hG,CHAT_TAB_STATE_OPTION:()=>jf,CHAT_TAB_ENGINE_PROMPT:()=>yG});function xG(J,z){return[["bind-key","-n",J,"if-shell","-F","#{?#{@kobe_surface},0,1}","previous-window"],["bind-key","-n",z,"if-shell","-F","#{?#{@kobe_surface},0,1}","next-window"]]}function uG(J,z="kill-window"){return["bind-key","-n",J,"if-shell","-F","#{>:#{session_windows},1}",z,"display-message 'Cannot close the only ChatTab'"]}function EG(J){return["bind-key","-n",J,"command-prompt","-I","#{window_name}","rename-window -- '%%'"]}function wG(J){return[["bind-key","-n",J,"command-prompt","-p",yG],["bind-key","T","command-prompt","-p",yG]]}function SB(J){return J.startsWith("C-")&&J.length===3?`^${J.slice(2)}`:J}function PG(J){return`${[J.focusLeft?`${SB(J.focusLeft)} tasks`:null,J.detach?`${SB(J.detach)} detach`:null,J.newTab?`${SB(J.newTab)} tab`:null,J.layoutSplits?`prefix ${J.layoutSplits} splits`:null,J.layoutPanes?`prefix ${J.layoutPanes} panes`:null].filter((Y)=>Y!==null).join(" ")} `}async function Wf(J,z){let Y=n1(),Z=await Vf(),X=bJ(z.opsCommand??Y+_Z({cwd:z.cwd,taskId:z.taskId,claudePaneId:J,cliInvocation:z.inv,vendor:z.vendor})),{stdout:G}=await nG([["set-option","-p","-t",J,"@kobe_role","claude"],["set-window-option","-t",J,jf,"idle"],["split-window","-h","-b","-t",J,"-l",`${Z}`,"-c",P1(z.cwd),"-P","-F","tasks=#{pane_id}",bJ(Y+NY(z.inv,{initialTaskId:z.taskId}))],["split-window","-h","-t",J,"-l",`${100-M8}%`,"-c",P1(z.cwd),"-P","-F","ops=#{pane_id}",X],["split-window","-v","-l",`${100-BG}%`,"-c",P1(z.cwd),"-P","-F","shell=#{pane_id}"],["select-pane","-t",J]]),Q=Object.fromEntries(G.split(`
53
- `).map((f)=>f.trim()).filter(Boolean).map((f)=>f.split("=",2)));if(await i1([...Q.tasks?[["set-option","-p","-t",Q.tasks,"@kobe_role",_J]]:[],...Q.tasks?[["set-option","-p","-t",Q.tasks,Fz,p0]]:[],...Q.ops?[["set-option","-p","-t",Q.ops,"@kobe_role",Hz]]:[],...Q.ops?[["set-option","-p","-t",Q.ops,Fz,p0]]:[],...Q.shell?[["set-option","-p","-t",Q.shell,"@kobe_role",Bz]]:[]]),Q.ops){let f=await v5();if(f.length>0)await c0(["resize-pane","-t",Q.ops,...f])}}async function IB(J,z){if(!await V1(J))return;let Y=await IJ(J,["@kobe_worktree","@kobe_task","@kobe_vendor",gG]),Z=Y["@kobe_worktree"]||process.cwd(),X=Y["@kobe_task"]||void 0,G=Y[gG]||void 0,Q=z??Y["@kobe_vendor"];if(z)await wg(J,X,z);let f=oJ(Q),H=QX(f,Q),B=k1(),j=(await $0(["new-window","-t",`=${J}`,"-c",P1(Z),"-P","-F","#{pane_id}",bJ(GX(NJ(H.argv),G,Z),aZ(n1(),B,J))])).stdout.trim();if(!j)return;if(H.sessionId)await uY(j,Ez,H.sessionId);await Wf(j,{cwd:Z,taskId:X,inv:B,vendor:Q});let{stdout:K}=await $0(["display-message","-p","-t",j,"#{window_id}"]),L=K.trim();if(L)await bB(J,L)}async function vG(J){if(!await V1(J))return;let Y=(await IJ(J,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),Z=k1(),G=`${n1()}${Z.map(Z1).join(" ")} settings`;await Oz(J,{cwd:P1(Y),command:G,name:"settings",surface:!0})}async function mG(J){if(!await V1(J))return;let Y=(await IJ(J,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),Z=k1(),G=`${n1()}${Z.map(Z1).join(" ")} help-page`;await Oz(J,{cwd:P1(Y),command:G,name:"help",surface:!0})}async function cG(J,z){if(!await V1(J))return;let Z=(await IJ(J,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),X=k1(),G=n1(),Q=z?` --repo ${Z1(z)}`:"",f=`${G}${X.map(Z1).join(" ")} new-task${Q}`;await Oz(J,{cwd:P1(Z),command:f,name:"new task",surface:!0})}async function dG(J){if(!await V1(J))return;let Y=(await IJ(J,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),Z=k1(),G=`${n1()}${h7({cliInvocation:Z})}`;await Oz(J,{cwd:P1(Y),command:G,name:"update",surface:!0})}async function TB(J){if(!await V1(J))return;let Y=(await IJ(J,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),Z=k1(),G=`${n1()}${Z.map(Z1).join(" ")} quick-task --session ${Z1(J)}`;await Oz(J,{cwd:P1(Y),command:G,name:"quick task",surface:!0})}async function wg(J,z,Y){if(await QY(J,"@kobe_vendor",Y),!z)return;try{let{connectOrStartDaemon:Z}=await Promise.resolve().then(() => (FJ(),Kf)),X=await Z();try{await X.request("task.setVendor",{taskId:z,vendor:Y})}finally{X.close()}}catch(Z){console.error("[kobe tmux] failed to persist selected engine vendor:",Z)}}var yG,jf="@kobe_tab_state",AX="#{?#{==:#{@kobe_tab_state},running},\u25CF,#{?#{==:#{@kobe_tab_state},done},\u2713,#{?#{==:#{@kobe_tab_state},error},!,#{?#{==:#{@kobe_tab_state},unknown},?,\u25CB}}}} #I:#W",hG;var Bf=b(()=>{YY();sJ();Uz();h1();Wz();$1();MJ();jZ();xY();TG();yG=`engine (${l1.join("/")}/\u2026)`;hG=AX});var vJ={};f1(vJ,{tmuxWindowSizeArgsForClient:()=>uB,tmuxSessionName:()=>N1,tmuxInitialSizeArgs:()=>HK,tmuxInitialClientSize:()=>xB,tmuxAvailable:()=>Pz,switchClientBeforeKill:()=>hz,sessionExists:()=>V1,selectTasksPane:()=>ng,runLayoutAction:()=>RZ,resyncWindowToClient:()=>vg,refreshKobeWorkspacePanes:()=>OX,quickCreate:()=>TB,prepareWindowForSwitch:()=>VK,prepareWindowForAttach:()=>Uf,parseTmuxClientRows:()=>BK,parseObservedSession:()=>UK,openUpdateTab:()=>dG,openSettingsTab:()=>vG,openNewTaskTab:()=>cG,openHelpTab:()=>mG,observeSessionVendor:()=>wB,newChatTab:()=>IB,kobeStatusRight:()=>PG,killSession:()=>eJ,healSessionLayout:()=>m5,focusBindCommand:()=>KK,enterWindow:()=>hg,ensureSession:()=>iG,currentSessionName:()=>TJ,clientsWithConflictingSize:()=>jK,chatTabSwitchBindings:()=>xG,chatTabRenameBinding:()=>EG,chatTabCloseBinding:()=>uG,chatTabChooseEngineBindings:()=>wG,captureGlobalLayoutOnDrag:()=>c5,captureGlobalLayout:()=>LB,attachArgv:()=>RX,PANE_VERSION_OPTION:()=>Fz,CHAT_TAB_STATUS_FORMAT:()=>AX,CHAT_TAB_STATUS_CURRENT_FORMAT:()=>hG,CHAT_TAB_STATE_OPTION:()=>jf,CHAT_TAB_ENGINE_PROMPT:()=>yG});function HK(J=process.stdout,z=process.env){let Y=xB(J,z);return Y?["-x",`${Y.columns}`,"-y",`${Y.rows}`]:[]}function xB(J=process.stdout,z=process.env){let Y=EY(J.columns)??EY(z.COLUMNS),Z=EY(J.rows)??EY(z.LINES);return Y&&Z?{columns:Y,rows:Z}:null}function EY(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 BK(J){let z=[];for(let Y of J.split(`
54
- `)){let[Z,X,G,Q,f]=Y.split("\t"),H=EY(G?.trim()),B=EY(Q?.trim());if(!Z?.trim()||!X?.trim()||!H||!B)continue;z.push({name:Z.trim(),session:X.trim(),width:H,height:B,flags:f?.trim()??""})}return z}function jK(J,z,Y,Z={}){return J.filter((X)=>X.session===z).filter((X)=>X.name!==Z.currentClientName).filter((X)=>X.width!==Y.columns||X.height!==Y.rows).map((X)=>X.name)}function uB(J,z){let Y=Math.max(1,J.rows-(z.status?.trim()==="on"?1:0));return["-x",`${J.columns}`,"-y",`${Y}`]}async function EB(J,z,Y={}){if(!z)return;let{code:Z,stdout:X}=await $0(["list-clients","-t",`=${J}`,"-F",Pg]);if(Z!==0)return;let G=jK(BK(X),J,z,Y),Q=[];if(Y.currentClientName)Q.push(["refresh-client","-f","!ignore-size","-t",Y.currentClientName]);for(let f of G)Q.push(["refresh-client","-f","ignore-size","-t",f]);if(Q.length>0)await i1(Q)}async function Uf(J){TY(J,"resize");let z=xB();await EB(J,z);let Y=z?["-x",`${z.columns}`,"-y",`${z.rows}`]:[];if(Y.length>0)await c0(["resize-window","-t",`=${J}`,...Y]);await AZ(J)}async function WK(){let{code:J,stdout:z}=await $0(["display-message","-p","#{client_name}\t#{client_width}\t#{client_height}\t#{status}"]);if(J!==0)return{sizeArgs:[],clientSize:null,clientName:void 0};let[Y,Z,X,G]=z.trim().split("\t"),Q=EY(Z),f=EY(X),H=Q&&f?{columns:Q,rows:f}:null;return{sizeArgs:H?uB(H,{status:G}):[],clientSize:H,clientName:Y?.trim()||void 0}}async function VK(J){TY(J,"resize");let z=await WK();await EB(J,z.clientSize,{currentClientName:z.clientName});let Y=z.sizeArgs;if(Y.length>0)await c0(["resize-window","-t",`=${J}`,...Y]);await AZ(J)}async function hg(J){await VK(J),await c0(["switch-client","-t",`=${J}`])}async function vg(J,z){if(!z.size)return;TY(J,"resize"),await EB(J,z.size,{currentClientName:z.clientName});let Y=uB(z.size,{status:z.status}),{commands:Z}=await DB(J,{force:!0});await i1([["resize-window","-t",`=${J}`,...Y],...Z])}function KK(J,z,Y){let Z=`#{?window_zoomed_flag,1,#{?${mg[z]},,1}}`;if(Y)return["bind-key","-n",J,"if-shell","-F",Z,`select-pane ${z}`,Y];return["bind-key","-n",J,"if-shell","-F",Z,`select-pane ${z}`]}async function iG(J){let z=yB.get(J.name);if(z)return z;let Y=dg(J);yB.set(J.name,Y);try{return await Y}finally{yB.delete(J.name)}}function UK(J){let z="",Y="",Z=!1,X=new Set;for(let G of J.split(`
55
- `)){let[Q,f,H,B,V]=G.split("\t");if(!Q?.trim())continue;if(X.add(Q.trim()),!z&&B?.trim())z=B.trim();if(!Y&&V?.trim())Y=V.trim();if(f?.trim()==="1"&&H?.trim()==="claude")Z=!0}return{worktree:z,vendor:Y,claudePaneAlive:Z,windowCount:X.size}}async function DK(J){if(!await V1(J))return null;let{code:z,stdout:Y}=await $0(["list-panes","-s","-t",`=${J}`,"-F",cg]);if(z!==0)return{worktree:"",vendor:"",claudePaneAlive:!1,windowCount:0};return UK(Y)}async function wB(J){let Y=(await DK(J))?.vendor.trim();return Y?Y:null}async function dg(J){let z=J.launchInit,Y=await DK(J.name),Z=M5(Y,{cwd:J.cwd,vendor:J.vendor,hasEngineCommand:J.command.length>0}),X=aV(J.repo);if(Z.kind==="reuse")return await AZ(J.name,{cwd:J.cwd,taskId:J.taskId,vendor:J.vendor}),!0;if(Z.kind==="respawn-engine"){let N0=await h5(J.name,J.cwd,J.command,X,J.vendor);if(N0==="switched"){if(J.vendor)await QY(J.name,"@kobe_vendor",J.vendor);return await AZ(J.name,{cwd:J.cwd,taskId:J.taskId,vendor:J.vendor,vendorChanged:!0}),!0}if(N0==="respawn-failed")return await AZ(J.name,{cwd:J.cwd,taskId:J.taskId,vendor:J.vendor}),!0}if(Z.kind==="rebuild"||Z.kind==="respawn-engine")await eJ(J.name);let G=k1(),Q=QX(J.command,J.vendor),f=J.repo!==void 0&&J.cwd===J.repo,H=f||X?void 0:J.taskId,B=f&&!X?J.taskId:void 0,V=vq(hq(Q.argv,J.vendor,H),J.vendor,B),j=GX(NJ(V),X,J.cwd),L=(await $0(["new-session","-d","-s",J.name,"-c",P1(J.cwd),...HK(),"-P","-F","#{pane_id}",w7(j,{initScript:X?void 0:z?.initScript,markerPath:!X&&z?.initScript?uW(J.cwd):void 0,timeoutSeconds:F8(process.env.KOBE_REPO_INIT_TIMEOUT_SECONDS)},aZ(n1(),G,J.name))])).stdout.trim();if(!L)return console.error("[kobe tmux] new-session returned no pane id; session creation failed"),!1;if(Q.sessionId)await uY(L,Ez,Q.sessionId);if(await i1([...J.taskId?[["set-option","-t",J.name,"@kobe_task",J.taskId]]:[],["set-option","-t",J.name,"@kobe_worktree",J.cwd],...J.vendor?[["set-option","-t",J.name,"@kobe_vendor",J.vendor]]:[],...X?[["set-option","-t",J.name,gG,X]]:[]]),process.env.TMUX){let{sizeArgs:N0}=await WK();if(N0.length>0)await c0(["resize-window","-t",`=${J.name}`,...N0])}await Wf(L,{cwd:J.cwd,taskId:J.taskId,opsCommand:J.opsCommand,inv:G,vendor:J.vendor});let A=n1(),O=G.map(Z1).join(" "),R=`${A}${O} new-chattab --session '#{session_name}'`,x=`${R} --vendor '%%'`,a=`run-shell ${Z1(x)}`,S=`${A}${O} focus-tasks --session '#{session_name}' --window '#{window_id}'`,C=`run-shell ${Z1(S)}`,M=(N0)=>`${A}${O} layout --session '#{session_name}' --window '#{window_id}' --action ${N0}`,I=M("tasks-restore"),$=`run-shell ${Z1(I)}`,i=M("chat-tab-close"),e=`run-shell ${Z1(i)}`,J0=`${A}${O} heal-layout --session '#{session_name}'`,T=`run-shell -b ${Z1(J0)}`,f0=`${A}${O} resync-window --session '#{session_name}' --client '#{client_name}' --cols '#{client_width}' --rows '#{client_height}' --status '#{status}'`,_=`run-shell -b ${Z1(f0)}`,W0=`${A}${O} capture-layout --session '#{session_name}'`,R0=`run-shell -b ${Z1(W0)}`,V0=v7({tmuxSocket:Az}),t=G5(process.platform,Q5),P=q5(t),N=iq(),p=V5.map((N0)=>["unbind-key","-n",N0]);if(N.overridden.has(uz))for(let N0 of IY){let k0=FZ(N0);if("key"in k0)p.push(["unbind-key","-n",k0.key])}for(let N0 of N.overridden){if(N0===uz)continue;let k0=MZ[N0],x0=fX(N0),v=FZ(k0,{allowBare:x0});if("key"in v)p.push(x0?["unbind-key",v.key]:["unbind-key","-n",v.key])}let u=["-L","-D","-U","-R"],d=N.focus.flatMap((N0,k0)=>{let x0=u[k0],v=x0==="-L"?$:void 0;return N0&&x0?[KK(N0.key,x0,v)]:[]}),o=N.binds,Q0=(N0,k0)=>{let x0=o[N0];return x0?[["bind-key",x0.key,"run-shell",M(k0)]]:[]},g0=(...N0)=>{let k0=N0.map((x0)=>o[x0]?.chord).filter((x0)=>!!x0);return k0.length>0?k0.join("/"):null};await i1([["set-option","-g","status","on"],["set-window-option","-g","aggressive-resize","on"],["set-option","-g","monitor-activity","on"],["set-option","-g","visual-activity","off"],["set-option","-g","window-status-format",AX],["set-option","-g","window-status-current-format",hG],["set-option","-g","status-right",PG({focusLeft:N.focus[0]?.key??null,detach:o["tmux.detach"]?.key??null,newTab:o["tmux.tab.new"]?.key??null,layoutSplits:g0("tmux.layout.workspaceSplit","tmux.layout.workspaceClose","tmux.layout.workspaceReset"),layoutPanes:g0("tmux.layout.tasksToggle","tmux.layout.opsToggle","tmux.layout.terminalToggle","tmux.layout.zenToggle")})],["set-option","-g","mouse","on"],...P,["set-hook","-g","window-resized",T],["set-hook","-g","client-resized",_],["set-hook","-g","pane-exited",T],["set-hook","-g","window-layout-changed",R0],...p,...o["tmux.detach"]?[["bind-key","-n",o["tmux.detach"].key,"if-shell","-F",`#{?#{${CJ}},1,#{==:#{@kobe_role},tasks}}`,"detach-client",C]]:[],...d,...o["tmux.tab.new"]?[["bind-key","-n",o["tmux.tab.new"].key,"run-shell",R]]:[],...o["tmux.tab.chooseEngine"]?wG(o["tmux.tab.chooseEngine"].key).map((N0)=>[...N0,a]):[],...o["tmux.tab.prev"]&&o["tmux.tab.next"]?xG(o["tmux.tab.prev"].key,o["tmux.tab.next"].key):o["tmux.tab.prev"]?[["bind-key","-n",o["tmux.tab.prev"].key,"previous-window"]]:o["tmux.tab.next"]?[["bind-key","-n",o["tmux.tab.next"].key,"next-window"]]:[],...o["tmux.tab.close"]?[uG(o["tmux.tab.close"].key,e)]:[],...o["tmux.tab.rename"]?[EG(o["tmux.tab.rename"].key)]:[],...Q0("tmux.layout.workspaceSplit","workspace-split"),...Q0("tmux.layout.workspaceClose","workspace-close"),...Q0("tmux.layout.workspaceReset","workspace-reset"),...Q0("tmux.layout.tasksToggle","tasks-toggle"),...Q0("tmux.layout.opsToggle","ops-toggle"),...Q0("tmux.layout.terminalToggle","terminal-toggle"),...Q0("tmux.layout.zenToggle","zen-toggle"),["bind-key","f","run-shell",`${A}${O} quick-create --session '#{session_name}'`],["bind-key","u","display-popup","-E",V0]]),await OZ(),await c0(["select-pane","-t",L]);let P0=z?.firstMessage;if(P0)L5(J.name,P0).catch((N0)=>console.error("[kobe tmux] first message delivery failed:",N0));return!0}async function fK(J,z,Y){let Z=Y?.trim()||`=${J}`,{code:X,stdout:G}=await $0(["list-panes","-t",Z,"-F","#{pane_id}\t#{@kobe_role}"]);if(X!==0)return"";for(let Q of G.split(`
56
- `)){let[f,H]=Q.split("\t");if(f?.trim()&&H?.trim()===z)return f.trim()}return""}async function ng(J,z={}){if(!await V1(J))return"";let Y=await fK(J,"tasks",z.windowId);if(!Y)await RZ(J,"tasks-restore",{windowId:z.windowId}),Y=await fK(J,"tasks",z.windowId);if(!Y)return"";return await c0(["select-pane","-t",Y]),Y}var Pg="#{client_name}\t#{client_session}\t#{client_width}\t#{client_height}\t#{client_flags}",mg,yB,cg="#{window_id}\t#{window_active}\t#{@kobe_role}\t#{@kobe_worktree}\t#{@kobe_vendor}";var YJ=b(()=>{YY();sJ();o1();Uz();h1();f5();lq();$q();Wz();Yf();Bf();jZ();xY();FX();TG();h1();Bf();TG();xY();mg={"-L":"pane_at_left","-D":"pane_at_bottom","-U":"pane_at_top","-R":"pane_at_right"};yB=new Map});var $G={};f1($G,{windowIsSurface:()=>rg,windowCount:()=>$g,tmuxSessionName:()=>N1,tmuxCommandSequence:()=>hB,tmuxAvailable:()=>Pz,tmuxArgs:()=>CZ,tagPaneRole:()=>FK,tagClaudePane:()=>pg,switchClientBeforeKill:()=>hz,setWindowOption:()=>uY,setSessionOption:()=>QY,sessionExists:()=>V1,sendKeys:()=>Df,sendKeyName:()=>SG,runTmuxSequenceCapturing:()=>nG,runTmuxSequence:()=>i1,runTmuxCapturing:()=>$0,runTmux:()=>c0,readLayoutGeometry:()=>wz,paneIdByRole:()=>mB,newWindow:()=>Oz,killSession:()=>eJ,globalTasksPaneWidth:()=>Vf,getSessionOptions:()=>IJ,getSessionOption:()=>gZ,getServerOptions:()=>MK,getServerOption:()=>ag,ensureFallbackSession:()=>Lf,currentSessionName:()=>TJ,claudePaneIdStrict:()=>HX,claudePaneId:()=>jB,capturePaneById:()=>BX,attachArgv:()=>RX,SURFACE_WINDOW_OPTION:()=>cB,PANE_ROLE_OPTION:()=>lG,KOBE_TMUX_SOCKET:()=>Az,KOBE_HOME_SESSION:()=>OK,CLAUDE_ROLE_OPTION:()=>_g,CHAT_TAB_SESSION_ID_OPTION:()=>Ez});import{homedir as ig}from"os";function CZ(...J){return["tmux","-L",Az,...J]}function N1(J){return`kobe-${J.replace(/[^A-Za-z0-9_-]/g,"")}`}function RX(J){return CZ("attach-session","-t",`=${J}`)}async function PB(J){if(!J)return"";try{return await new Response(J).text()}catch{return""}}async function c0(J){try{let z=Bun.spawn(CZ(...J),{stdin:"ignore",cwd:gX,stdout:"ignore",stderr:"pipe"}),[Y,Z]=await Promise.all([PB(z.stderr),z.exited]);if(Z!==0&&Y.trim().length>0)console.error(`[kobe tmux] ${J.join(" ")} (${Z}): ${Y.trim()}`);return Z}catch{return 1}}async function lg(J){try{return await Bun.spawn(CZ(...J),{stdin:"ignore",cwd:gX,stdout:"ignore",stderr:"ignore"}).exited}catch{return 1}}function hB(J){let z=[];for(let Y of J){if(Y.length===0)continue;if(z.length>0)z.push(";");z.push(...Y)}return z}async function i1(J){let z=hB(J);return z.length===0?0:c0(z)}async function $0(J){try{let z=Bun.spawn(CZ(...J),{stdin:"ignore",cwd:gX,stdout:"pipe",stderr:"pipe"}),[Y,Z,X]=await Promise.all([PB(z.stdout),PB(z.stderr),z.exited]);if(X!==0&&Z.trim().length>0)console.error(`[kobe tmux] ${J.join(" ")} (${X}): ${Z.trim()}`);return{code:X,stdout:Y}}catch{return{code:1,stdout:""}}}async function nG(J){let z=hB(J);return z.length===0?{code:0,stdout:""}:$0(z)}async function Pz(){try{return await Bun.spawn(["tmux","-V"],{stdin:"ignore",cwd:gX,stdout:"ignore",stderr:"ignore"}).exited===0}catch{return!1}}async function V1(J){return await lg(["has-session","-t",`=${J}`])===0}async function $g(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 gZ(J,z){let{code:Y,stdout:Z}=await $0(["show-options","-qv","-t",J,z]);return Y===0?Z.trim():""}async function IJ(J,z){let Y=Object.fromEntries(z.map((G)=>[G,void 0])),{code:Z,stdout:X}=await nG(z.map((G)=>["show-options","-q","-t",J,G]));if(Z!==0)return Y;for(let G of X.split(`
58
- `)){let Q=G.indexOf(" ");if(Q<=0)continue;let f=G.slice(0,Q);if(f in Y)Y[f]=G.slice(Q+1).trim()}return Y}async function ag(J){let{code:z,stdout:Y}=await $0(["show-options","-sqv",J]);return z===0?Y.trim():""}async function MK(J){let z=Object.fromEntries(J.map((X)=>[X,void 0])),{code:Y,stdout:Z}=await nG(J.map((X)=>["show-options","-sq",X]));if(Y!==0)return z;for(let X of Z.split(`
59
- `)){let G=X.indexOf(" ");if(G<=0)continue;let Q=X.slice(0,G);if(Q in z)z[Q]=X.slice(G+1).trim()}return z}async function Vf(){return(await wz()).tasksWidth}async function wz(){return u7(await MK(x7))}async function FK(J,z){await c0(["set-option","-p","-t",J,lG,z])}async function uY(J,z,Y){await c0(["set-window-option","-t",J,z,Y])}async function pg(J){await FK(J,vB)}async function mB(J,z,Y=!1){let{code:Z,stdout:X}=await $0(["list-panes","-t",`=${J}`,"-F",`#{pane_id} #{${lG}}`]);if(Z!==0)return"";let G="";for(let Q of X.split(`
60
- `)){let[f,H]=Q.split("\t");if(!f)continue;if(!G)G=f.trim();if(H?.trim()===z)return f.trim()}return Y?G:""}async function jB(J){return mB(J,vB,!0)}async function HX(J){return mB(J,vB,!1)}async function BX(J,z){if(!J)return"";let Y=["capture-pane","-t",J,"-p"];if(typeof z==="number"&&z>0)Y.push("-S",String(-z));let{code:Z,stdout:X}=await $0(Y);return Z===0?X:""}async function Df(J,z){await c0(["send-keys","-t",J,"-l","--",z])}async function SG(J,z){await c0(["send-keys","-t",J,z])}async function Oz(J,z){let Y=["new-window","-t",`=${J}`,"-c",z.cwd];if(z.name)Y.push("-n",z.name);if(z.surface){Y.push("-P","-F","#{window_id}"),Y.push(z.command);let{code:Z,stdout:X}=await $0(Y),G=X.trim();if(Z===0&&G)await uY(G,cB,"1");return}Y.push(z.command),await c0(Y)}async function rg(J){let{code:z,stdout:Y}=await $0(["display-message","-t",J,"-p",`#{${cB}}`]);return z===0&&Y.trim()==="1"}async function TJ(){let J=["display-message","-p"],z=process.env.TMUX_PANE;if(z&&z.length>0)J.push("-t",z);J.push("#{session_name}");let{code:Y,stdout:Z}=await $0(J),X=Z.trim();return Y===0&&X.length>0?X:null}async function eJ(J){if(!J.startsWith("kobe-hidden-")){let z=HG(J);if(await V1(z))await c0(["kill-session","-t",`=${z}`])}if(await V1(J))await c0(["kill-session","-t",`=${J}`])}async function Lf(){let J=OK;if(await V1(J)){if(await gZ(J,LK)==="tasks")return J;await c0(["kill-session","-t",`=${J}`])}let Y=(await $0(["new-session","-d","-s",J,"-c",gX,"-x","220","-y","50","-P","-F","#{pane_id}",E7()])).stdout.trim();if(Y){let Z=await Vf(),G=(await $0(["split-window","-h","-b","-t",Y,"-l",`${Z}`,"-c",gX,"-P","-F","#{pane_id}",bJ(n1()+NY(k1()))])).stdout.trim();if(G)await i1([["set-option","-p","-t",G,lG,"tasks"],["select-pane","-t",G]])}return await QY(J,LK,"tasks"),J}async function hz(J,z){if(await TJ()!==J)return;let{enterWindow:Z}=await Promise.resolve().then(() => (YJ(),vJ));if(z&&z!==J&&await V1(z)){await Z(z);return}await Z(await Lf())}var Az,gX,lG="@kobe_role",_g,vB="claude",Ez="@kobe_session_id",cB="@kobe_surface",OK="kobe-home",LK="@kobe_home";var h1=b(()=>{YY();jZ();Wz();Az=process.env.KOBE_TMUX_SOCKET?.trim()||"kobe";gX=ig()||"/";_g=lG});async function og(J,z=AK){let{code:Y,stdout:Z}=await z.capture(["list-windows","-t",`=${J}`,"-F",`#{window_index} #{automatic-rename} #{${Ez}}`]);if(Y!==0)return[];let X=[];for(let G of Z.split(`
61
- `)){let[Q,f,H]=G.split("\t"),B=Number.parseInt((Q??"").trim(),10);if(!Number.isInteger(B))continue;X.push({index:B,sessionId:H?.trim()??"",autoRename:f?.trim()??""})}return X}async function sg(J,z,Y){let{code:Z,stdout:X}=await Y.capture(["show-window-options","-t",`=${J}:${z}`,"automatic-rename"]);return Z===0&&/\boff\b/.test(X)}async function tg(J){let{code:z,stdout:Y}=await J.capture(["show-window-options","-g","automatic-rename"]);return z===0&&/\boff\b/.test(Y)}async function eg(J,z,Y,Z){return await Z.run(["rename-window","-t",`=${J}:${z}`,"--",Y])===0}async function RK(J,z=JC){let Y=0,Z=null,X=async(G,Q)=>{if(Q.autoRename==="1")return!1;if(Q.autoRename==="0"){if(Z===null)Z=await tg(z.runner);if(!Z)return!0}return sg(G,Q.index,z.runner)};for(let G of J.listTasks()){if(G.archived||G.kind==="main"||!G.worktreePath)continue;let Q=N1(G.id),f=await og(Q,z.runner);if(f.length===0)continue;let H=f.reduce((V,j)=>Math.min(V,j.index),Number.POSITIVE_INFINITY),B=G.vendor??_1;for(let V of f)try{if(await X(Q,V))continue;let j=V.sessionId?await z.titleFromSessionId(B,V.sessionId):V.index===H?await z.titleFromWorktree(G.worktreePath,B):"";if(j&&await eg(Q,V.index,j,z.runner))Y++}catch{}}return Y}var AK,JC;var gK=b(()=>{Oq();h1();rJ();AK={capture:$0,run:c0};JC={runner:AK,titleFromSessionId:RV,titleFromWorktree:oZ}});function NK(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 CK(J,z,Y=new Date){let Z=NK(z);return`[${Y.toISOString()}] daemon ${J}: ${Z.stack??`${Z.name}: ${Z.message}`}
62
- `}function zC(J,z,Y=new Date){let Z=NK(z);return`[${Y.toISOString()}] daemon error [${J}]: ${Z.stack??`${Z.name}: ${Z.message}`}
63
- `}function T1(J,z){process.stderr.write(zC(J,z))}function YC(J,z,Y=new Date){return`[${Y.toISOString()}] daemon [${J}]: ${z}
64
- `}function vz(J,z){process.stderr.write(YC(J,z))}function bK(J=(z)=>process.stderr.write(z)){if(dB||nB)return;dB=(z)=>J(CK("unhandledRejection",z)),nB=(z)=>J(CK("uncaughtException",z)),process.on("unhandledRejection",dB),process.on("uncaughtException",nB)}var dB,nB;async function ZC(J,z=oZ){let Y=[];for(let Z of J.listTasks()){if(Z.archived||Z.title!==xz||!Z.worktreePath)continue;try{let X=await z(Z.worktreePath,Z.vendor??_1);if(!X)continue;let G=J.getTask(Z.id);if(!G||G.title!==xz)continue;await J.setTitle(Z.id,X),Y.push({id:Z.id,title:X})}catch(X){T1("auto-title-poller",X)}}return Y}function kK(J,z=iB,Y){if(z<=0)return()=>{};let Z=!1,G=setInterval(()=>{if(Y&&!Y())return;if(Z)return;Z=!0,ZC(J).then(()=>RK(J)).catch((Q)=>T1("auto-title-poller",Q)).finally(()=>{Z=!1})},z);return G.unref?.(),()=>clearInterval(G)}var iB=4000;var SK=b(()=>{Oq();RG();gK();rJ()});class lB{socket;highWaterMark;queue=[];queuedBytes=0;paused=!1;draining=!1;droppedFrames=0;constructor(J,z={}){this.socket=J,this.highWaterMark=z.highWaterMark??8388608}get isPaused(){return this.paused}get pendingBytes(){return this.queuedBytes}get pendingCount(){return this.queue.length}get dropped(){return this.droppedFrames}write(J,z){if(!this.paused){if(this.safeWrite(J))return;this.pause();return}this.enqueue({line:J,bytes:Buffer.byteLength(J),critical:z})}enqueue(J){if(this.queue.push(J),this.queuedBytes+=J.bytes,this.queuedBytes<=this.highWaterMark)return;let z=[];for(let Y of this.queue){if(this.queuedBytes>this.highWaterMark&&!Y.critical){this.queuedBytes-=Y.bytes,this.droppedFrames++;continue}z.push(Y)}this.queue=z}pause(){if(this.draining)return;this.paused=!0,this.draining=!0,this.socket.once("drain",()=>{this.draining=!1,this.paused=!1,this.flush()})}flush(){while(this.queue.length>0){let J=this.queue[0],z=this.safeWrite(J.line);if(this.queue.shift(),this.queuedBytes-=J.bytes,!z){this.pause();return}}}safeWrite(J){try{return this.socket.write(J)}catch{return!0}}}class $B{last=new Map;sinks=new Set;publish(J,z){this.last.set(J,z);let Y={channel:J,payload:z};for(let Z of this.sinks)Z(Y)}snapshot(){return[...this.last].map(([J,z])=>({channel:J,payload:z}))}onPublish(J){return this.sinks.add(J),()=>{this.sinks.delete(J)}}}async function IK(J,z,Y=wq){if(!Y())return"skipped";let Z=J.getTask(z);if(!Z)return"skipped";if((Z.kind??"task")==="main"||Z.archived)return"skipped";if(Z.status!=="backlog")return"skipped";return await J.setStatus(z,"in_progress"),"moved"}var TK=b(()=>{CG()});import{createHash as XC}from"crypto";import{homedir as GC}from"os";import wY from"path";function BC(){return wY.join(process.env.KOBE_HOME_DIR??GC(),".kobe")}function jC(J){let Y=(wY.basename(J)||"repo").replace(/[^a-zA-Z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"repo",Z=XC("sha1").update(wY.resolve(J)).digest("hex").slice(0,12);return`${Y}-${Z}`}function WC(J){if(!wY.isAbsolute(J))throw Error(`worktreeRootFor: repo must be an absolute path, got: ${J}`);return wY.join(BC(),QC,jC(J))}function VC(J){if(!wY.isAbsolute(J))throw Error(`managedWorktreeRootsFor: repo must be an absolute path, got: ${J}`);return[WC(J),...HC.map((z)=>wY.join(J,z))]}function mz(J){return J.length>1&&J.endsWith("/")?J.slice(0,-1):J}function yK(J,z){return z===J||z.startsWith(`${J}/`)}function xK(J,z){let Y=mz(z),Z,X=-1;for(let G of J){if(!G.worktreePath)continue;let Q=mz(G.worktreePath);if(yK(Q,Y)&&Q.length>X)X=Q.length,Z=G.id}return Z}function uK(J,z){let Y=mz(z);for(let Z of J)if(Z.worktreePath&&mz(Z.worktreePath)===Y)return Z.id;return}function aB(J,z){let Y=mz(z),Z,X=-1;for(let G of J){if(!G.repo)continue;let Q=mz(G.repo);if(yK(Q,Y)&&Q.length>X)X=Q.length,Z=Q}return Z}function EK(J,z){let Y=mz(z),Z=new Set,X=new Set;for(let G of J){if(G.repo)Z.add(mz(G.repo));if(G.worktreePath)X.add(mz(G.worktreePath))}for(let G of Z)for(let Q of VC(G).map(mz)){let f=`${Q}/`;if(!Y.startsWith(f))continue;let B=Y.slice(f.length).split("/")[0];if(!B)continue;let V=`${f}${B}`;if(X.has(V))return;return{repo:G,worktreePath:V}}return}var QC="worktrees",qC=".kobe/worktrees",fC=".claude/worktrees",HC;var wK=b(()=>{HC=[qC,fC]});function rB(J){return{message:J instanceof Error?J.message:String(J),name:J instanceof Error?J.name:void 0}}async function aG(J,z,Y,Z){let X=J.get(z);if(!X)throw Error(`unknown daemon request: ${z}`);return X.handle(oB(Y),Z)}function _G(){return new Map([{name:"hello",handle(z,Y){let Z=typeof z.protocolVersion==="number"?z.protocolVersion:$J,X=typeof z.minProtocolVersion==="number"?z.minProtocolVersion:Z;if(!lQ({localVersion:$J,localMin:OY,remoteVersion:Z,remoteMin:X}))throw Error(`daemon is protocol v${$J} (min v${OY}); this client is v${Z} (min v${X}). Upgrade your kobe.`);return{protocolVersion:$J,minProtocolVersion:OY,kobeVersion:p0,capabilities:[...Z8],daemonPid:Y.daemon.pid,clientId:Y.clientId,tasks:Y.orch.listTasks().map(fz)}}},{name:"daemon.status",handle(z,Y){return{daemonPid:Y.daemon.pid,kobeVersion:p0,uptimeMs:Date.now()-Y.daemon.startedAt.getTime(),startedAt:Y.daemon.startedAt.toISOString(),attachedClients:Y.daemon.guiCount(),taskCount:Y.orch.listTasks().length,socketPath:Y.daemon.socketPath,webPort:Y.daemon.webPort??null}}},{name:"daemon.stop",async handle(z,Y){return await Y.daemon.stopSoon(),{}}},{name:"task.list",handle(z,Y){return{tasks:Y.orch.listTasks().map(fz)}}},{name:"task.get",handle(z,Y){let Z=M1(z,"taskId"),X=Y.orch.getTask(Z);if(!X)throw Error(`task not found: ${Z}`);return{task:fz(X)}}},{name:"task.create",async handle(z,Y){let Z=M1(z,"repo"),X=await Y.orch.createTask({repo:Z,title:Jz(z,"title"),branch:Jz(z,"branch"),baseRef:Jz(z,"baseRef"),vendor:pB(z,"vendor"),modelEffort:Jz(z,"effort")});return{taskId:X.id,task:fz(X)}}},{name:"task.archive",async handle(z,Y){let Z=M1(z,"taskId");return await Y.orch.setArchived(Z,_B(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"),X=pB(z,"vendor");if(!X)throw Error("task.setVendor: vendor is required");return await Y.orch.setVendor(Z,X),{}}},{name:"task.delete",async handle(z,Y){let Z=M1(z,"taskId");return await Y.orch.deleteTask(Z,{force:_B(z,"force")}),Y.activity.clearTask(Z),{}}},{name:"task.pin",async handle(z,Y){let Z=M1(z,"taskId");return await Y.orch.setPinned(Z,_B(z,"pinned")),{}}},{name:"task.move",async handle(z,Y){let Z=M1(z,"taskId"),X=M1(z,"direction");if(X!=="up"&&X!=="down")throw Error("direction must be up or down");return await Y.orch.moveTask(Z,X==="up"?-1:1),{}}},{name:"task.status",async handle(z,Y){let Z=M1(z,"taskId"),X=M1(z,"status");if(!DV(X))throw Error("status must be a TaskStatus");let G=X==="done"?Y.orch.getTask(Z):void 0,Q=G?.status;if(await Y.orch.setStatus(Z,X),X==="done"&&Q!=="done"&&G)try{let f=await Y.issues.mirrorTaskDone(G.repo,Z);if(f)Y.bus.publish("issue.snapshot",f)}catch(f){T1("issue-done-mirror",f)}return{}}},{name:"task.reorder",async handle(z,Y){let Z=z.moves;if(!Array.isArray(Z)||Z.length===0)throw Error("moves must be a non-empty array");if(Z.length>500)throw Error("too many moves in one task.reorder batch (max 500)");let X=Z.map((G)=>{if(typeof G!=="object"||G===null)throw Error("each move needs taskId and position");let Q=G,f=M1(Q,"taskId"),H=Q.position;if(typeof H!=="number"||!Number.isFinite(H))throw Error("position must be a finite number");return{taskId:f,position:H}});return await Y.orch.reorderTasks(X),{}}},{name:"task.ensureMain",async handle(z,Y){let Z=M1(z,"repo"),X=await Y.orch.ensureMainTask(Z);return{task:fz(X)}}},{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 X=await Y.orch.ensureWorktree(Z);return Y.bus.publish("task.jobs",{taskId:Z,kind:"ensureWorktree",phase:"done"}),{worktreePath:X}}catch(X){throw Y.bus.publish("task.jobs",{taskId:Z,kind:"ensureWorktree",phase:"error",error:X instanceof Error?X.message:String(X)}),X}}},{name:"worktree.discoverAdoptable",async handle(z,Y){let Z=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:Jz(z,"branch"),vendor:pB(z,"vendor"),title:Jz(z,"title"),ifExists:Jz(z,"ifExists")==="return"?"return":"error"});return{task:fz(Z)}}},{name:"worktree.reconcile",async handle(z,Y){let Z=M1(z,"cwd"),X=M1(z,"worktreePath"),G=aB(Y.orch.listTasks(),Z)??aB(Y.orch.listTasks(),X);if(!G)return{adopted:!1};try{return{adopted:!0,taskId:(await Y.orch.adoptWorktree({repo:G,worktreePath:X,ifExists:"return"})).id}}catch(Q){return T1("worktree-created",Q),{adopted:!1}}}},{name:"worktree.archiveRemoved",async handle(z,Y){let Z=M1(z,"worktreePath"),X=uK(Y.orch.listTasks(),Z);if(!X)return{archived:!1};try{return await Y.orch.setArchived(X,!0),{archived:!0,taskId:X}}catch(G){return T1("worktree-removed",G),{archived:!1}}}},{name:"task.setActive",async handle(z,Y){let Z=Jz(z,"taskId")??null;return await Y.orch.setActiveTask(Z),Y.bus.publish("active-task",{taskId:Z}),{}}},{name:"issue.list",async handle(z,Y){return Y.issues.list(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"),X=M1(z,"text"),G=Jz(z,"source");if(G!==void 0&&G!=="note"&&G!=="dispatcher")throw Error('source must be "note" or "dispatcher"');if(!Y.orch.getTask(Z))throw Error(`task not found: ${Z}`);return Y.bus.publish("session.deliver",{taskId:Z,text:X,at:Date.now(),source:G??"dispatcher"}),{ok:!0}}},{name:"note.file",async handle(z,Y){let Z=M1(z,"taskId"),X=M1(z,"text"),G=Y.orch.getTask(Z);if(!G)throw Error(`task not found: ${Z}`);let Q=Y.orch.listTasks().find((H)=>(H.kind??"task")==="main"&&H.repo===G.repo&&!H.archived);if(!Q||Q.id===G.id)return{ok:!0,routed:!1};let f=G.title||G.branch||Z;return Y.bus.publish("session.deliver",{taskId:Q.id,text:`[KOBE FIELD NOTE] from "${f}" (task ${Z}): ${X}`,at:Date.now(),source:"note"}),{ok:!0,routed:!0}}},{name:"engine.reportEvent",async handle(z,Y){let Z=M1(z,"kind");if(!Lq(Z))throw Error(`unknown engine event kind: ${Z}`);let X=Jz(z,"taskId"),G=Jz(z,"cwd");if(!X&&G&&Z==="session-start"){let H=EK(Y.orch.listTasks(),G);if(H)try{await Y.orch.adoptWorktree({repo:H.repo,worktreePath:H.worktreePath,ifExists:"return"})}catch(B){T1("worktree-autosync",B)}}let Q=X??(G?xK(Y.orch.listTasks(),G):void 0);if(!Q)return{};let f=KC(z);if(Y.activity.report(Q,Z,f),Z==="turn-start")IK(Y.orch,Q).then((H)=>{if(H==="moved")console.log(`[status-rules] task ${Q} auto-moved backlog \u2192 in_progress`)}).catch((H)=>T1("status-rules",H));return{}}}].map((z)=>[z.name,z]))}function oB(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 Jz(J,z){let Y=J[z];if(Y===void 0||Y===null||Y==="")return;if(typeof Y!=="string")throw Error(`${z} must be a string`);return Y}function _B(J,z){let Y=J[z];if(Y===void 0||Y===null)return;if(typeof Y!=="boolean")throw Error(`${z} must be a boolean`);return Y}function pB(J,z){let Y=Jz(J,z);return Y&&Y.trim().length>0?Y:void 0}function KC(J){let z=J.detail;if(!z||typeof z!=="object"||Array.isArray(z))return;let Y=z,Z={};if(Y.failure==="rate_limit"||Y.failure==="billing"||Y.failure==="other")Z.failure=Y.failure;if(Y.waiting==="permission"||Y.waiting==="input")Z.waiting=Y.waiting;if(typeof Y.note==="string")Z.note=Y.note;return Object.keys(Z).length>0?Z:void 0}var Mf=b(()=>{Mq();TK();rJ();MJ();wK();JZ()});import{execFile as UC}from"child_process";import{mkdir as DC,readFile as LC,realpath as PK,rename as MC,stat as FC,writeFile as OC}from"fs/promises";import{homedir as AC}from"os";import{dirname as RC,isAbsolute as gC,join as CC,resolve as hK}from"path";import{promisify as NC}from"util";function bC(J){return(J instanceof Error?J.message:String(J)).includes("not a git repository")}function Of(J=process.env.KOBE_HOME_DIR??AC()){return CC(J,".kobe","issues.json")}function mK(J){return typeof J==="string"&&vK.includes(J)}function kC(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:mK(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 SC(){return{version:1,repos:{}}}function IC(){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 TC(J){let{stdout:z}=await Yj("git",["-C",J,"rev-parse","--git-common-dir"]),Y=z.trim();return PK(gC(Y)?Y:hK(J,Y))}async function yC(J){let{stdout:z}=await Yj("git",["-C",J,"rev-parse","--show-toplevel"]);return z.trim()}async function xC(J){let{stdout:z}=await Yj("git",["-C",J,"worktree","list","--porcelain"]),Y=z.split(/\r?\n/).find((Z)=>Z.startsWith("worktree "))?.slice(9).trim();return Y?PK(Y):yC(J)}async function sB(J){if(typeof J!=="string"||J.length===0)throw Error("repoRoot is required");let z=hK(J);if(!(await FC(z).catch(()=>null))?.isDirectory())throw Error("repoRoot does not exist");try{let[Z,X]=await Promise.all([xC(z),TC(z)]);return{repoRoot:Z,repoKey:X}}catch(Z){if(bC(Z))throw Error("repoRoot is not a git repository");throw Z}}async function tB(J){try{let z=JSON.parse(await LC(J,"utf8")),Y={};if(z.repos&&typeof z.repos==="object")for(let[Z,X]of Object.entries(z.repos)){if(!X||typeof X!=="object")continue;let G=X;Y[Z]={repoRoot:typeof G.repoRoot==="string"?G.repoRoot:"",nextId:typeof G.nextId==="number"?G.nextId:1,issues:Array.isArray(G.issues)?G.issues.map(kC).filter((Q)=>Q!==null):[]}}return{version:1,repos:Y}}catch(z){if(z.code==="ENOENT")return SC();throw z}}async function eB(J,z){await DC(RC(J),{recursive:!0});let Y=`${J}.tmp`;await OC(Y,`${JSON.stringify(z,null,2)}
65
- `,"utf8"),await MC(Y,J)}function Jj(J,z){return{repoRoot:J,exists:z!==null,nextId:z?.nextId??1,issues:z?.issues??[]}}async function zj(J,z){let Z=(Ff.get(J)??Promise.resolve()).then(z),X=Z.then(()=>{return},()=>{return});return Ff.set(J,X),X.then(()=>{if(Ff.get(J)===X)Ff.delete(J)}),Z}class Af{path;constructor(J=Of()){this.path=J}async list(J){let{repoRoot:z,repoKey:Y}=await sB(J);return zj(this.path,async()=>{let Z=await tB(this.path),X=Z.repos[Y]??null;if(X&&X.repoRoot!==z)X.repoRoot=z,await eB(this.path,Z);return Jj(z,X)})}async mirrorTaskDone(J,z){let{repoRoot:Y,repoKey:Z}=await sB(J);if(!z)return null;return zj(this.path,async()=>{let X=await tB(this.path),G=X.repos[Z];if(!G)return null;let Q=G.issues.find((f)=>f.taskId===z);if(!Q||Q.status==="done")return null;return Q.status="done",G.repoRoot=Y,await eB(this.path,X),Jj(Y,G)})}async mutate(J,z){let{repoRoot:Y,repoKey:Z}=await sB(J);if(!z||typeof z!=="object"||Array.isArray(z)||typeof z.type!=="string")throw Error("missing op");return zj(this.path,async()=>{let X=await tB(this.path),G=X.repos[Z];if(!G)G={repoRoot:Y,nextId:1,issues:[]},X.repos[Z]=G;G.repoRoot=Y;let Q=z;if(Q.type==="create"){if(typeof Q.title!=="string"||Q.title.trim().length===0)throw Error("create requires a non-empty title");if(Q.body!==void 0&&typeof Q.body!=="string")throw Error("body must be a string");G.issues=[{id:G.nextId,title:Q.title,status:"open",created:IC(),body:typeof Q.body==="string"?Q.body:""},...G.issues],G.nextId+=1}else if(Q.type==="setStatus"){if(typeof Q.id!=="number")throw Error("setStatus requires a numeric id");if(!mK(Q.status))throw Error(`invalid status: must be one of ${vK.join(", ")}`);let f=G.issues.find((H)=>H.id===Q.id);if(!f)throw Error(`no issue #${Q.id}`);f.status=Q.status}else if(Q.type==="update"){if(typeof Q.id!=="number")throw Error("update requires a numeric id");if(Q.title!==void 0&&(typeof Q.title!=="string"||Q.title.trim().length===0))throw Error("title must be a non-empty string");if(Q.body!==void 0&&typeof Q.body!=="string")throw Error("body must be a string");let f=G.issues.find((H)=>H.id===Q.id);if(!f)throw Error(`no issue #${Q.id}`);if(typeof Q.title==="string")f.title=Q.title;if(typeof Q.body==="string")f.body=Q.body}else if(Q.type==="link"){if(typeof Q.id!=="number")throw Error("link requires a numeric id");if(typeof Q.taskId!=="string"||Q.taskId.length===0)throw Error("link requires a non-empty taskId");let f=G.issues.find((H)=>H.id===Q.id);if(!f)throw Error(`no issue #${Q.id}`);f.taskId=Q.taskId}else if(Q.type==="unlink"){if(typeof Q.id!=="number")throw Error("unlink requires a numeric id");let f=G.issues.find((H)=>H.id===Q.id);if(!f)throw Error(`no issue #${Q.id}`);f.taskId=void 0}else if(Q.type==="delete"){if(typeof Q.id!=="number")throw Error("delete requires a numeric id");let f=G.issues.filter((H)=>H.id!==Q.id);if(f.length===G.issues.length)throw Error(`no issue #${Q.id}`);G.issues=f}else throw Error(`unknown op type: ${Q.type}`);return await eB(this.path,X),Jj(Y,G)})}}var Yj,vK,Ff;var Zj=b(()=>{Yj=NC(UC),vK=["open","doing","hold","done"];Ff=new Map});import{lstat as cK,readdir as uC,realpath as EC,stat as wC}from"fs/promises";import{join as PC,relative as hC,resolve as dK,sep as vC}from"path";import{Readable as mC}from"stream";function aK(J,z={}){let Y=z.entryType||z.type;if(Y==="both")Y=mJ.FILE_DIR_TYPE;if(Y)z.type=Y;if(!J)throw Error("readdirp: root argument is required. Usage: readdirp(root, options)");else if(typeof J!=="string")throw TypeError("readdirp: root argument must be a string. Usage: readdirp(root, options)");else if(Y&&!nK.includes(Y))throw Error(`readdirp: Invalid type passed. Use one of ${nK.join(", ")}`);return z.root=J,new Gj(z)}var mJ,Xj,$K="READDIRP_RECURSIVE_ERROR",cC,nK,dC,nC,iC=(J)=>cC.has(J.code),lC,iK=(J)=>!0,lK=(J)=>{if(J===void 0)return iK;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 iK},Gj;var _K=b(()=>{mJ={FILE_TYPE:"files",DIR_TYPE:"directories",FILE_DIR_TYPE:"files_directories",EVERYTHING_TYPE:"all"},Xj={root:".",fileFilter:(J)=>!0,directoryFilter:(J)=>!0,type:mJ.FILE_TYPE,lstat:!1,depth:2147483648,alwaysStat:!1,highWaterMark:4096};Object.freeze(Xj);cC=new Set(["ENOENT","EPERM","EACCES","ELOOP",$K]),nK=[mJ.DIR_TYPE,mJ.EVERYTHING_TYPE,mJ.FILE_DIR_TYPE,mJ.FILE_TYPE],dC=new Set([mJ.DIR_TYPE,mJ.EVERYTHING_TYPE,mJ.FILE_DIR_TYPE]),nC=new Set([mJ.EVERYTHING_TYPE,mJ.FILE_DIR_TYPE,mJ.FILE_TYPE]),lC=process.platform==="win32";Gj=class Gj extends mC{parents;reading;parent;_stat;_maxDepth;_wantsDir;_wantsFile;_wantsEverything;_root;_isDirent;_statsProp;_rdOptions;_fileFilter;_directoryFilter;constructor(J={}){super({objectMode:!0,autoDestroy:!0,highWaterMark:J.highWaterMark});let z={...Xj,...J},{root:Y,type:Z}=z;this._fileFilter=lK(z.fileFilter),this._directoryFilter=lK(z.directoryFilter);let X=z.lstat?cK:wC;if(lC)this._stat=(G)=>X(G,{bigint:!0});else this._stat=X;this._maxDepth=z.depth!=null&&Number.isSafeInteger(z.depth)?z.depth:Xj.depth,this._wantsDir=Z?dC.has(Z):!1,this._wantsFile=Z?nC.has(Z):!1,this._wantsEverything=Z===mJ.EVERYTHING_TYPE,this._root=dK(Y),this._isDirent=!z.alwaysStat,this._statsProp=this._isDirent?"dirent":"stats",this._rdOptions={encoding:"utf8",withFileTypes:this._isDirent},this.parents=[this._exploreDir(Y,1)],this.reading=!1,this.parent=void 0}async _read(J){if(this.reading)return;this.reading=!0;try{while(!this.destroyed&&J>0){let z=this.parent,Y=z&&z.files;if(Y&&Y.length>0){let{path:Z,depth:X}=z,G=Y.splice(0,J).map((f)=>this._formatEntry(f,Z)),Q=await Promise.all(G);for(let f of Q){if(!f)continue;if(this.destroyed)return;let H=await this._getEntryType(f);if(H==="directory"&&this._directoryFilter(f)){if(X<=this._maxDepth)this.parents.push(this._exploreDir(f.fullPath,X+1));if(this._wantsDir)this.push(f),J--}else if((H==="file"||this._includeAsFile(f))&&this._fileFilter(f)){if(this._wantsFile)this.push(f),J--}}}else{let Z=this.parents.pop();if(!Z){this.push(null);break}if(this.parent=await Z,this.destroyed)return}}}catch(z){this.destroy(z)}finally{this.reading=!1}}async _exploreDir(J,z){let Y;try{Y=await 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 X=dK(PC(z,Z));Y={path:hC(this._root,X),fullPath:X,basename:Z},Y[this._statsProp]=this._isDirent?J:await this._stat(X)}catch(X){this._onError(X);return}return Y}_onError(J){if(iC(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 EC(Y),X=await cK(Z);if(X.isFile())return"file";if(X.isDirectory()){let G=Z.length;if(Y.startsWith(Z)&&Y.substr(G,1)===vC){let Q=Error(`Circular symlink detected: "${Y}" points to "${Z}"`);return Q.code=$K,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 $C,unwatchFile as pK,watchFile as aC}from"fs";import{realpath as Qj,lstat as _C,open as pC,stat as oK}from"fs/promises";import{type as rC}from"os";import*as E1 from"path";function rK(J,z,Y,Z,X){let G=(Q,f)=>{if(Y(J),X(Q,f,{watchedPath:J}),f&&J!==f)Cf(E1.resolve(J,f),NZ,E1.join(J,f))};try{return $C(J,{persistent:z.persistent},G)}catch(Q){Z(Q);return}}class jj{fsw;_boundHandleError;constructor(J){this.fsw=J,this._boundHandleError=(z)=>J._handleError(z)}_watchWithNodeFs(J,z){let Y=this.fsw.options,Z=E1.dirname(J),X=E1.basename(J);this.fsw._getWatchedDir(Z).add(X);let Q=E1.resolve(J),f={persistent:Y.persistent};if(!z)z=Nf;let H;if(Y.usePolling){let B=Y.interval!==Y.binaryInterval;f.interval=B&&XN(X)?Y.binaryInterval:Y.interval,H=qN(J,Q,f,{listener:z,rawEmitter:this.fsw._emitRaw})}else H=QN(J,Q,f,{listener:z,errHandler:this._boundHandleError,rawEmitter:this.fsw._emitRaw});return H}_handleFile(J,z,Y){if(this.fsw.closed)return;let Z=E1.dirname(J),X=E1.basename(J),G=this.fsw._getWatchedDir(Z),Q=z;if(G.has(X))return;let f=async(B,V)=>{if(!this.fsw._throttle(JN,J,5))return;if(!V||V.mtimeMs===0)try{let j=await oK(J);if(this.fsw.closed)return;let{atimeMs:K,mtimeMs:L}=j;if(!K||K<=L||L!==Q.mtimeMs)this.fsw._emit(Rz.CHANGE,J,j);if((sC||tC||eC)&&Q.ino!==j.ino){this.fsw._closeFile(B),Q=j;let A=this._watchWithNodeFs(J,f);if(A)this.fsw._addPathCloser(B,A)}else Q=j}catch(j){this.fsw._remove(Z,X)}else if(G.has(X)){let{atimeMs:j,mtimeMs:K}=V;if(!j||j<=K||K!==Q.mtimeMs)this.fsw._emit(Rz.CHANGE,J,V);Q=V}},H=this._watchWithNodeFs(J,f);if(!(Y&&this.fsw.options.ignoreInitial)&&this.fsw._isntIgnored(J)){if(!this.fsw._throttle(Rz.ADD,J,0))return;this.fsw._emit(Rz.ADD,J,z)}return H}async _handleSymlink(J,z,Y,Z){if(this.fsw.closed)return;let X=J.fullPath,G=this.fsw._getWatchedDir(z);if(!this.fsw.options.followSymlinks){this.fsw._incrReadyCount();let Q;try{Q=await Qj(Y)}catch(f){return this.fsw._emitReady(),!0}if(this.fsw.closed)return;if(G.has(Z)){if(this.fsw._symlinkPaths.get(X)!==Q)this.fsw._symlinkPaths.set(X,Q),this.fsw._emit(Rz.CHANGE,Y,J.stats)}else G.add(Z),this.fsw._symlinkPaths.set(X,Q),this.fsw._emit(Rz.ADD,Y,J.stats);return this.fsw._emitReady(),!0}if(this.fsw._symlinkPaths.has(X))return!0;this.fsw._symlinkPaths.set(X,!0)}_handleRead(J,z,Y,Z,X,G,Q){J=E1.join(J,"");let f=Z?`${J}:${Z}`:J;if(Q=this.fsw._throttle("readdir",f,1000),!Q)return;let H=this.fsw._getWatchedDir(Y.path),B=new Set,V=this.fsw._readdirp(J,{fileFilter:(j)=>Y.filterPath(j),directoryFilter:(j)=>Y.filterDir(j)});if(!V)return;return V.on(oC,async(j)=>{if(this.fsw.closed){V=void 0;return}let K=j.path,L=E1.join(J,K);if(B.add(K),j.stats.isSymbolicLink()&&await this._handleSymlink(j,J,L,K))return;if(this.fsw.closed){V=void 0;return}if(K===Z||!Z&&!H.has(K))this.fsw._incrReadyCount(),L=E1.join(X,E1.relative(X,L)),this._addToNodeFs(L,z,Y,G+1)}).on(Rz.ERROR,this._boundHandleError),new Promise((j,K)=>{if(!V)return K();V.once(Hj,()=>{if(this.fsw.closed){V=void 0;return}let L=Q?Q.clear():!1;if(j(void 0),H.getChildren().filter((A)=>{return A!==J&&!B.has(A)}).forEach((A)=>{this.fsw._remove(J,A)}),V=void 0,L)this._handleRead(J,!1,Y,Z,X,G,Q)})})}async _handleDir(J,z,Y,Z,X,G,Q){let f=this.fsw._getWatchedDir(E1.dirname(J)),H=f.has(E1.basename(J));if(!(Y&&this.fsw.options.ignoreInitial)&&!X&&!H)this.fsw._emit(Rz.ADD_DIR,J,z);f.add(E1.basename(J)),this.fsw._getWatchedDir(J);let B,V,j=this.fsw.options.depth;if((j==null||Z<=j)&&!this.fsw._symlinkPaths.has(Q)){if(!X){if(await this._handleRead(J,Y,G,X,J,Z,B),this.fsw.closed)return}V=this._watchWithNodeFs(J,(K,L)=>{if(L&&L.mtimeMs===0)return;this._handleRead(K,!1,G,X,J,Z,B)})}return V}async _addToNodeFs(J,z,Y,Z,X){let G=this.fsw._emitReady;if(this.fsw._isIgnored(J)||this.fsw.closed)return G(),!1;let Q=this.fsw._getWatchHelpers(J);if(Y)Q.filterPath=(f)=>Y.filterPath(f),Q.filterDir=(f)=>Y.filterDir(f);try{let f=await zN[Q.statMethod](Q.watchPath);if(this.fsw.closed)return;if(this.fsw._isIgnored(Q.watchPath,f))return G(),!1;let H=this.fsw.options.followSymlinks,B;if(f.isDirectory()){let V=E1.resolve(J),j=H?await Qj(J):J;if(this.fsw.closed)return;if(B=await this._handleDir(Q.watchPath,f,z,Z,X,Q,j),this.fsw.closed)return;if(V!==j&&j!==void 0)this.fsw._symlinkPaths.set(V,j)}else if(f.isSymbolicLink()){let V=H?await Qj(J):J;if(this.fsw.closed)return;let j=E1.dirname(Q.watchPath);if(this.fsw._getWatchedDir(j).add(Q.watchPath),this.fsw._emit(Rz.ADD,Q.watchPath,f),B=await this._handleDir(j,f,z,Z,J,Q,V),this.fsw.closed)return;if(V!==void 0)this.fsw._symlinkPaths.set(E1.resolve(J),V)}else B=this._handleFile(Q.watchPath,f,z);if(G(),B)this.fsw._addPathCloser(J,B);return!1}catch(f){if(this.fsw._handleError(f))return G(),J}}}var oC="data",Hj="end",sK="close",Nf=()=>{},bf,Bj,sC,tC,eC,tK,x1,Rz,JN="watch",zN,NZ="listeners",Rf="errHandlers",CX="rawEmitters",YN,ZN,XN=(J)=>ZN.has(E1.extname(J).slice(1).toLowerCase()),fj=(J,z)=>{if(J instanceof Set)J.forEach(z);else z(J)},pG=(J,z,Y)=>{let Z=J[z];if(!(Z instanceof Set))J[z]=Z=new Set([Z]);Z.add(Y)},GN=(J)=>(z)=>{let Y=J[z];if(Y instanceof Set)Y.clear();else delete J[z]},rG=(J,z,Y)=>{let Z=J[z];if(Z instanceof Set)Z.delete(Y);else if(Z===Y)delete J[z]},eK=(J)=>J instanceof Set?J.size===0:!J,gf,Cf=(J,z,Y,Z,X)=>{let G=gf.get(J);if(!G)return;fj(G[z],(Q)=>{Q(Y,Z,X)})},QN=(J,z,Y,Z)=>{let{listener:X,errHandler:G,rawEmitter:Q}=Z,f=gf.get(z),H;if(!Y.persistent){if(H=rK(J,Y,X,G,Q),!H)return;return H.close.bind(H)}if(f)pG(f,NZ,X),pG(f,Rf,G),pG(f,CX,Q);else{if(H=rK(J,Y,Cf.bind(null,z,NZ),G,Cf.bind(null,z,CX)),!H)return;H.on(Rz.ERROR,async(B)=>{let V=Cf.bind(null,z,Rf);if(f)f.watcherUnusable=!0;if(Bj&&B.code==="EPERM")try{await(await pC(J,"r")).close(),V(B)}catch(j){}else V(B)}),f={listeners:X,errHandlers:G,rawEmitters:Q,watcher:H},gf.set(z,f)}return()=>{if(rG(f,NZ,X),rG(f,Rf,G),rG(f,CX,Q),eK(f.listeners))f.watcher.close(),gf.delete(z),YN.forEach(GN(f)),f.watcher=void 0,Object.freeze(f)}},qj,qN=(J,z,Y,Z)=>{let{listener:X,rawEmitter:G}=Z,Q=qj.get(z),f=Q&&Q.options;if(f&&(f.persistent<Y.persistent||f.interval>Y.interval))pK(z),Q=void 0;if(Q)pG(Q,NZ,X),pG(Q,CX,G);else Q={listeners:X,rawEmitters:G,options:Y,watcher:aC(z,Y,(H,B)=>{fj(Q.rawEmitters,(j)=>{j(Rz.CHANGE,z,{curr:H,prev:B})});let V=H.mtimeMs;if(H.size!==B.size||V>B.mtimeMs||V===0)fj(Q.listeners,(j)=>j(J,H))})},qj.set(z,Q);return()=>{if(rG(Q,NZ,X),rG(Q,CX,G),eK(Q.listeners))qj.delete(z),pK(z),Q.options=Q.watcher=void 0,Object.freeze(Q)}};var J6=b(()=>{bf=process.platform,Bj=bf==="win32",sC=bf==="darwin",tC=bf==="linux",eC=bf==="freebsd",tK=rC()==="OS400",x1={ALL:"all",READY:"ready",ADD:"add",CHANGE:"change",ADD_DIR:"addDir",UNLINK:"unlink",UNLINK_DIR:"unlinkDir",RAW:"raw",ERROR:"error"},Rz=x1,zN={lstat:_C,stat:oK},YN=[NZ,Rf,CX],ZN=new Set(["3dm","3ds","3g2","3gp","7z","a","aac","adp","afdesign","afphoto","afpub","ai","aif","aiff","alz","ape","apk","appimage","ar","arj","asf","au","avi","bak","baml","bh","bin","bk","bmp","btif","bz2","bzip2","cab","caf","cgm","class","cmx","cpio","cr2","cur","dat","dcm","deb","dex","djvu","dll","dmg","dng","doc","docm","docx","dot","dotm","dra","DS_Store","dsk","dts","dtshd","dvb","dwg","dxf","ecelp4800","ecelp7470","ecelp9600","egg","eol","eot","epub","exe","f4v","fbs","fh","fla","flac","flatpak","fli","flv","fpx","fst","fvt","g3","gh","gif","graffle","gz","gzip","h261","h263","h264","icns","ico","ief","img","ipa","iso","jar","jpeg","jpg","jpgv","jpm","jxr","key","ktx","lha","lib","lvp","lz","lzh","lzma","lzo","m3u","m4a","m4v","mar","mdi","mht","mid","midi","mj2","mka","mkv","mmr","mng","mobi","mov","movie","mp3","mp4","mp4a","mpeg","mpg","mpga","mxu","nef","npx","numbers","nupkg","o","odp","ods","odt","oga","ogg","ogv","otf","ott","pages","pbm","pcx","pdb","pdf","pea","pgm","pic","png","pnm","pot","potm","potx","ppa","ppam","ppm","pps","ppsm","ppsx","ppt","pptm","pptx","psd","pya","pyc","pyo","pyv","qt","rar","ras","raw","resources","rgb","rip","rlc","rmf","rmvb","rpm","rtf","rz","s3m","s7z","scpt","sgi","shar","snap","sil","sketch","slk","smv","snk","so","stl","suo","sub","swf","tar","tbz","tbz2","tga","tgz","thmx","tif","tiff","tlz","ttc","ttf","txz","udf","uvh","uvi","uvm","uvp","uvs","uvu","viv","vob","war","wav","wax","wbmp","wdp","weba","webm","webp","whl","wim","wm","wma","wmv","wmx","woff","woff2","wrm","wvx","xbm","xif","xla","xlam","xls","xlsb","xlsm","xlsx","xlt","xltm","xltx","xm","xmind","xpi","xpm","xwd","xz","z","zip","zipx"]),gf=new Map;qj=new Map});import{EventEmitter as fN}from"events";import{stat as HN,Stats as Ec}from"fs";import{readdir as BN,stat as jN}from"fs/promises";import*as G1 from"path";function kf(J){return Array.isArray(J)?J:[J]}function MN(J){if(typeof J==="function")return J;if(typeof J==="string")return(z)=>J===z;if(J instanceof RegExp)return(z)=>J.test(z);if(typeof J==="object"&&J!==null)return(z)=>{if(J.path===z)return!0;if(J.recursive){let Y=G1.relative(J.path,z);if(!Y)return!1;return!Y.startsWith("..")&&!G1.isAbsolute(Y)}return!1};return()=>!1}function FN(J){if(typeof J!=="string")throw Error("string expected");J=G1.normalize(J),J=J.replace(/\\/g,"/");let z=!1;if(J.startsWith("//"))z=!0;if(J=J.replace(Q6,"/"),z)J="/"+J;return J}function z6(J,z,Y){let Z=FN(z);for(let X=0;X<J.length;X++){let G=J[X];if(G(Z,Y))return!0}return!1}function ON(J,z){if(J==null)throw TypeError("anymatch: specify first argument");let Z=kf(J).map((X)=>MN(X));if(z==null)return(X,G)=>{return z6(Z,X,G)};return z6(Z,z)}class f6{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!==G6&&J!==VN)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 BN(Y)}catch(Z){if(this._removeWatcher)this._removeWatcher(G1.dirname(Y),G1.basename(Y))}}has(J){let{items:z}=this;if(!z)return;return z.has(J)}getChildren(){let{items:J}=this;if(!J)return[];return[...J.values()]}dispose(){this.items.clear(),this.path="",this._removeWatcher=Nf,this.items=RN,Object.freeze(this)}}class H6{fsw;path;watchPath;fullWatchPath;dirParts;followSymlinks;statMethod;constructor(J,z,Y){this.fsw=Y;let Z=J;this.path=J=J.replace(LN,""),this.watchPath=Z,this.fullWatchPath=G1.resolve(Z),this.dirParts=[],this.dirParts.forEach((X)=>{if(X.length>1)X.pop()}),this.followSymlinks=z,this.statMethod=z?gN:CN}entryPath(J){return G1.join(this.watchPath,G1.relative(this.watchPath,J.fullPath))}filterPath(J){let{stats:z}=J;if(z&&z.isSymbolicLink())return this.filterDir(J);let Y=this.entryPath(J);return this.fsw._isntIgnored(Y,z)&&this.fsw._hasReadPermissions(z)}filterDir(J){return this.fsw._isntIgnored(this.entryPath(J),J.stats)}}function j6(J,z={}){let Y=new B6(z);return Y.add(J),Y}var Wj="/",WN="//",G6=".",VN="..",KN="string",UN,Q6,DN,LN,Vj=(J)=>typeof J==="object"&&J!==null&&!(J instanceof RegExp),Y6=(J)=>{let z=kf(J).flat();if(!z.every((Y)=>typeof Y===KN))throw TypeError(`Non-string provided as watch path: ${z}`);return z.map(q6)},Z6=(J)=>{let z=J.replace(UN,Wj),Y=!1;if(z.startsWith(WN))Y=!0;if(z=z.replace(Q6,Wj),Y)z=Wj+z;return z},q6=(J)=>Z6(G1.normalize(Z6(J))),X6=(J="")=>(z)=>{if(typeof z==="string")return q6(G1.isAbsolute(z)?z:G1.join(J,z));else return z},AN=(J,z)=>{if(G1.isAbsolute(J))return J;return G1.join(z,J)},RN,gN="stat",CN="lstat",B6;var W6=b(()=>{_K();J6();/*! chokidar - MIT License (c) 2012 Paul Miller (paulmillr.com) */UN=/\\/g,Q6=/\/\//g,DN=/\..*\.(sw[px])$|~$|\.subl.*\.tmp/,LN=/^\.[/\\]/;RN=Object.freeze(new Set);B6=class B6 extends fN{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?kf(J.ignored):kf([]),awaitWriteFinish:z===!0?Y:typeof z==="object"?{...Y,...z}:!1};if(tK)Z.usePolling=!0;if(Z.atomic===void 0)Z.atomic=!Z.usePolling;let X=process.env.CHOKIDAR_USEPOLLING;if(X!==void 0){let f=X.toLowerCase();if(f==="false"||f==="0")Z.usePolling=!1;else if(f==="true"||f==="1")Z.usePolling=!0;else Z.usePolling=!!f}let G=process.env.CHOKIDAR_INTERVAL;if(G)Z.interval=Number.parseInt(G,10);let Q=0;this._emitReady=()=>{if(Q++,Q>=this._readyCount)this._emitReady=Nf,this._readyEmitted=!0,process.nextTick(()=>this.emit(x1.READY))},this._emitRaw=(...f)=>this.emit(x1.RAW,...f),this._boundRemove=this._remove.bind(this),this.options=Z,this._nodeFsHandler=new jj(this),Object.freeze(Z)}_addIgnoredPath(J){if(Vj(J)){for(let z of this._ignoredPaths)if(Vj(z)&&z.path===J.path&&z.recursive===J.recursive)return}this._ignoredPaths.add(J)}_removeIgnoredPath(J){if(this._ignoredPaths.delete(J),typeof J==="string"){for(let z of this._ignoredPaths)if(Vj(z)&&z.path===J)this._ignoredPaths.delete(z)}}add(J,z,Y){let{cwd:Z}=this.options;this.closed=!1,this._closePromise=void 0;let X=Y6(J);if(Z)X=X.map((G)=>{return AN(G,Z)});if(X.forEach((G)=>{this._removeIgnoredPath(G)}),this._userIgnored=void 0,!this._readyCount)this._readyCount=0;return this._readyCount+=X.length,Promise.all(X.map(async(G)=>{let Q=await this._nodeFsHandler._addToNodeFs(G,!Y,void 0,0,z);if(Q)this._emitReady();return Q})).then((G)=>{if(this.closed)return;G.forEach((Q)=>{if(Q)this.add(G1.dirname(Q),G1.basename(z||Q))})}),this}unwatch(J){if(this.closed)return this;let z=Y6(J),{cwd:Y}=this.options;return z.forEach((Z)=>{if(!G1.isAbsolute(Z)&&!this._closers.has(Z)){if(Y)Z=G1.join(Y,Z);Z=G1.resolve(Z)}if(this._closePath(Z),this._addIgnoredPath(Z),this._watched.has(Z))this._addIgnoredPath({path:Z,recursive:!0});this._userIgnored=void 0}),this}close(){if(this._closePromise)return this._closePromise;this.closed=!0,this.removeAllListeners();let J=[];return this._closers.forEach((z)=>z.forEach((Y)=>{let Z=Y();if(Z instanceof Promise)J.push(Z)})),this._streams.forEach((z)=>z.destroy()),this._userIgnored=void 0,this._readyCount=0,this._readyEmitted=!1,this._watched.forEach((z)=>z.dispose()),this._closers.clear(),this._watched.clear(),this._streams.clear(),this._symlinkPaths.clear(),this._throttled.clear(),this._closePromise=J.length?Promise.all(J).then(()=>{return}):Promise.resolve(),this._closePromise}getWatched(){let J={};return this._watched.forEach((z,Y)=>{let X=(this.options.cwd?G1.relative(this.options.cwd,Y):Y)||G6;J[X]=z.getChildren().sort()}),J}emitWithAll(J,z){if(this.emit(J,...z),J!==x1.ERROR)this.emit(x1.ALL,J,...z)}async _emit(J,z,Y){if(this.closed)return;let Z=this.options;if(Bj)z=G1.normalize(z);if(Z.cwd)z=G1.relative(Z.cwd,z);let X=[z];if(Y!=null)X.push(Y);let G=Z.awaitWriteFinish,Q;if(G&&(Q=this._pendingWrites.get(z)))return Q.lastChange=new Date,this;if(Z.atomic){if(J===x1.UNLINK)return this._pendingUnlinks.set(z,[J,...X]),setTimeout(()=>{this._pendingUnlinks.forEach((f,H)=>{this.emit(...f),this.emit(x1.ALL,...f),this._pendingUnlinks.delete(H)})},typeof Z.atomic==="number"?Z.atomic:100),this;if(J===x1.ADD&&this._pendingUnlinks.has(z))J=x1.CHANGE,this._pendingUnlinks.delete(z)}if(G&&(J===x1.ADD||J===x1.CHANGE)&&this._readyEmitted){let f=(H,B)=>{if(H)J=x1.ERROR,X[0]=H,this.emitWithAll(J,X);else if(B){if(X.length>1)X[1]=B;else X.push(B);this.emitWithAll(J,X)}};return this._awaitWriteFinish(z,G.stabilityThreshold,J,f),this}if(J===x1.CHANGE){if(!this._throttle(x1.CHANGE,z,50))return this}if(Z.alwaysStat&&Y===void 0&&(J===x1.ADD||J===x1.ADD_DIR||J===x1.CHANGE)){let f=Z.cwd?G1.join(Z.cwd,z):z,H;try{H=await jN(f)}catch(B){}if(!H||this.closed)return;X.push(H)}return this.emitWithAll(J,X),this}_handleError(J){let z=J&&J.code;if(J&&z!=="ENOENT"&&z!=="ENOTDIR"&&(!this.options.ignorePermissionErrors||z!=="EPERM"&&z!=="EACCES"))this.emit(x1.ERROR,J);return J||this.closed}_throttle(J,z,Y){if(!this._throttled.has(J))this._throttled.set(J,new Map);let Z=this._throttled.get(J);if(!Z)throw Error("invalid throttle");let X=Z.get(z);if(X)return X.count++,!1;let G,Q=()=>{let H=Z.get(z),B=H?H.count:0;if(Z.delete(z),clearTimeout(G),H)clearTimeout(H.timeoutObject);return B};G=setTimeout(Q,Y);let f={timeoutObject:G,clear:Q,count:0};return Z.set(z,f),f}_incrReadyCount(){return this._readyCount++}_awaitWriteFinish(J,z,Y,Z){let X=this.options.awaitWriteFinish;if(typeof X!=="object")return;let G=X.pollInterval,Q,f=J;if(this.options.cwd&&!G1.isAbsolute(J))f=G1.join(this.options.cwd,J);let H=new Date,B=this._pendingWrites;function V(j){HN(f,(K,L)=>{if(K||!B.has(J)){if(K&&K.code!=="ENOENT")Z(K);return}let A=Number(new Date);if(j&&L.size!==j.size)B.get(J).lastChange=A;let O=B.get(J);if(A-O.lastChange>=z)B.delete(J),Z(void 0,L);else Q=setTimeout(V,G,L)})}if(!B.has(J))B.set(J,{lastChange:H,cancelWait:()=>{return B.delete(J),clearTimeout(Q),Y}}),Q=setTimeout(V,G)}_isIgnored(J,z){if(this.options.atomic&&DN.test(J))return!0;if(!this._userIgnored){let{cwd:Y}=this.options,X=(this.options.ignored||[]).map(X6(Y)),Q=[...[...this._ignoredPaths].map(X6(Y)),...X];this._userIgnored=ON(Q,void 0)}return this._userIgnored(J,z)}_isntIgnored(J,z){return!this._isIgnored(J,z)}_getWatchHelpers(J){return new H6(J,this.options.followSymlinks,this)}_getWatchedDir(J){let z=G1.resolve(J);if(!this._watched.has(z))this._watched.set(z,new f6(z,this._boundRemove));return this._watched.get(z)}_hasReadPermissions(J){if(this.options.ignorePermissionErrors)return!0;return Boolean(Number(J.mode)&256)}_remove(J,z,Y){let Z=G1.join(J,z),X=G1.resolve(Z);if(Y=Y!=null?Y:this._watched.has(Z)||this._watched.has(X),!this._throttle("remove",Z,100))return;if(!Y&&this._watched.size===1)this.add(J,z,!0);this._getWatchedDir(Z).getChildren().forEach((j)=>this._remove(Z,j));let f=this._getWatchedDir(J),H=f.has(z);if(f.remove(z),this._symlinkPaths.has(X))this._symlinkPaths.delete(X);let B=Z;if(this.options.cwd)B=G1.relative(this.options.cwd,Z);if(this.options.awaitWriteFinish&&this._pendingWrites.has(B)){if(this._pendingWrites.get(B).cancelWait()===x1.ADD)return}this._watched.delete(Z),this._watched.delete(X);let V=Y?x1.UNLINK_DIR:x1.UNLINK;if(H&&!this._isIgnored(Z))this._emit(V,Z);this._closePath(Z)}_closePath(J){this._closeFile(J);let z=G1.dirname(J);this._getWatchedDir(z).remove(G1.basename(J))}_closeFile(J){let z=this._closers.get(J);if(!z)return;z.forEach((Y)=>Y()),this._closers.delete(J)}_addPathCloser(J,z){if(!z)return;let Y=this._closers.get(J);if(!Y)Y=[],this._closers.set(J,Y);Y.push(z)}_readdirp(J,z){if(this.closed)return;let Y={type:x1.ALL,alwaysStat:!0,lstat:!0,...z,depth:0},Z=aK(J,Y);return this._streams.add(Z),Z.once(sK,()=>{Z=void 0}),Z.once(Hj,()=>{if(Z)this._streams.delete(Z),Z=void 0}),Z}}});import{mkdirSync as NN,statSync as bN}from"fs";import{basename as V6,dirname as kN,join as SN}from"path";function Sf(J){if(J.debounceMs<=0)return()=>{};let z=kN(J.filePath),Y=new Set([V6(J.filePath),...J.matchBasenames??[]]),Z=null,X=null,G=!1,Q=()=>{try{J.onTrigger()}catch(V){J.onError(V)}},f=()=>{if(Z)clearTimeout(Z);Z=setTimeout(()=>{Z=null,Q()},J.debounceMs),Z.unref?.()},H=(V)=>{if(!Y.has(V6(V)))return;f()},B=(V)=>{try{let j=bN(SN(z,V));return`${j.mtimeMs}:${j.size}`}catch{return null}};try{NN(z,{recursive:!0});let V=new Map;for(let j of Y)V.set(j,B(j));X=j6(z,{depth:0,ignoreInitial:!0}),X.on("add",H),X.on("change",H),X.on("unlink",H),X.on("error",J.onError),X.once("ready",()=>{for(let j of Y)if(B(j)!==V.get(j)){f();break}})}catch(V){J.onError(V)}return()=>{if(G)return;if(G=!0,Z)clearTimeout(Z),Z=null;let V=X;X=null,V?.close().catch(J.onError)}}var Kj=b(()=>{W6()});import{homedir as IN}from"os";import{basename as TN,join as yN}from"path";function Dj(J=process.env.KOBE_HOME_DIR??IN()){return yN(J,".kobe","settings","keybindings.yaml")}function K6(J,z={}){let Y=z.debounceMs??Uj;if(Y<=0)return()=>{};let Z=z.path??Dj(),X=TN(Z),G=X.replace(/\.yaml$/,".yml"),Q=0;return J.publish("keybindings",{rev:Q}),Sf({filePath:Z,matchBasenames:[X,G],debounceMs:Y,onTrigger:()=>{try{Q+=1,J.publish("keybindings",{rev:Q})}catch(H){T1("keybindings-watcher",H)}},onError:(H)=>T1("keybindings-watcher",H)})}var Uj=200;var U6=b(()=>{Kj()});class Lj{clients;idleGraceMs;onIdleStop;schedule;log;cancelIdle=null;stopping=!1;constructor(J){this.clients=J.clients,this.idleGraceMs=J.idleGraceMs,this.onIdleStop=J.onIdleStop,this.schedule=J.schedule??xN,this.log=J.log??vz}guiCount(){let J=0;for(let z of this.clients())if(z.holdsLifetime)J++;return J}hasSubscribers(){for(let J of this.clients())if(J.subscribed)return!0;return!1}isStopping(){return this.stopping}markStopping(){this.stopping=!0,this.clearIdle()}guiAttached(){this.clearIdle()}clientDisconnected(J){if(J)this.maybeArm()}clearIdle(){if(this.cancelIdle)this.cancelIdle(),this.cancelIdle=null}maybeArm(){if(this.stopping||this.guiCount()>0)return;this.clearIdle(),this.log("idle",`last gui gone \u2014 arming ${this.idleGraceMs}ms idle-stop grace`),this.cancelIdle=this.schedule(()=>{if(this.cancelIdle=null,this.stopping||this.guiCount()>0)return;this.log("idle","grace elapsed with no gui \u2014 self-stopping"),this.onIdleStop()},this.idleGraceMs)}}var xN=(J,z)=>{let Y=setTimeout(J,z);return Y.unref?.(),()=>clearTimeout(Y)};var D6=()=>{};import{spawn as uN}from"child_process";function dN(J,z,Y){return new Promise((Z)=>{let X="",G="",Q=!1,f=(B,V)=>{if(Q)return;Q=!0,Z({status:B,stdout:X,stderr:G,spawnError:V})},H=uN("gh",J.slice(),{cwd:z,stdio:["ignore","pipe","pipe"],signal:Y,killSignal:"SIGKILL"});H.stdout?.on("data",(B)=>{X+=String(B)}),H.stderr?.on("data",(B)=>{G+=String(B)}),H.on("error",()=>f(null,!Y.aborted)),H.on("close",(B)=>f(B,!1))})}function iN(J){if(J.archived)return!1;if(J.kind==="main")return!1;if(!J.branch||!J.worktreePath)return!1;if(a1(J.repo)||a1(J.worktreePath))return!1;return!0}async function lN(J,z){let Y=z.tickMs??oG,Z=z.rand,X={tickMs:Y,settledMs:wN,noPrMs:EN,noRemoteMs:vN,failureBaseMs:PN,failureCapMs:hN,jitterRatio:mN},G=[];for(let Q of J.listTasks()){if(!iN(Q)){z.schedule.delete(Q.id);continue}let f=z.schedule.get(Q.id);if(f&&z.now<f.nextAllowedAt)continue;let H=f?.failures??0;try{let B=await z.run(Q.worktreePath,Q.branch);if(B.kind==="error"){vz("pr-status-poller",`gh pr view failed (${B.error}) for task ${Q.id} [${Q.branch}] \u2014 keeping last PR status, backing off`),z.schedule.set(Q.id,OG({kind:"error",error:B.error},H,z.now,X,Z));continue}if(B.kind==="empty"){z.schedule.set(Q.id,OG({kind:"empty"},H,z.now,X,Z));continue}let V=nV(B.view,z.at),j=J.getTask(Q.id);if(!j){z.schedule.delete(Q.id);continue}if(!uq(j.prStatus,V??void 0))await J.setPRStatus(Q.id,V),G.push(Q.id);let K=V?.lifecycle==="merged"||V?.lifecycle==="closed";z.schedule.set(Q.id,OG({kind:"pr",settled:K},H,z.now,X,Z))}catch(B){T1("pr-status-poller",B),z.schedule.set(Q.id,OG({kind:"error",error:"network"},H,z.now,X,Z))}}return G}function L6(J,z=oG,Y,Z=nN){if(z<=0)return()=>{};let X=new Map,G=!1,f=setInterval(()=>{if(Y&&!Y())return;if(G)return;G=!0,lN(J,{run:Z,now:Date.now(),at:new Date().toISOString(),schedule:X,tickMs:z}).catch((H)=>T1("pr-status-poller",H)).finally(()=>{G=!1})},z);return f.unref?.(),()=>clearInterval(f)}var oG=30000,EN=300000,wN=600000,PN,hN=900000,vN=1800000,mN=0.2,cN=1e4,nN=async(J,z)=>{let Y=new AbortController,Z=!1,X=setTimeout(()=>{Z=!0,Y.abort()},cN);try{let G=await dN(["pr","view",z,"--json",dV],J,Y.signal);if(G.status===0&&!Z)try{let Q=JSON.parse(G.stdout);return typeof Q.number==="number"?{kind:"pr",view:Q}:{kind:"empty"}}catch{return _8({parseError:!0})}return _8({spawnError:G.spawnError,timedOut:Z,exitCode:G.status,stderr:G.stderr})}finally{clearTimeout(X)}};var M6=b(()=>{p8();A1();PN=oG});function pN(J,z){return J.mtimeMs===z.mtimeMs&&J.completionId===z.completionId&&J.completionAt===z.completionAt}async function rN(J,z,Y,Z){let X=await rZ(z,J),G=await Y.latestCompletion(J);return{mtimeMs:X,completionId:G?.id??null,completionAt:G?.timestampMs??0}}function oN(J){let z=new Map;for(let Y of J){if(Y.archived)continue;if(!Y.worktreePath)continue;if(a1(Y.repo)||a1(Y.worktreePath))continue;if(z.has(Y.worktreePath))continue;z.set(Y.worktreePath,Y.vendor??_1)}return z}class F6{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=oN(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){T1("transcript-activity",J)}}stop(){this.stopped=!0}maybeCollect(J,z){let Y=this.entries.get(J);if(!Y)Y={inFlight:!1,nextAllowedAt:0,vendor:z,detector:VG(z)},this.entries.set(J,Y);else if(Y.vendor!==z)Y.vendor=z,Y.detector=VG(z);let Z=this.options.cadence??{timeoutMs:$N,slowRetryMs:aN,minIntervalMs:_N},X=this.options.run??rN,G=Y;JX(G,Z,(Q)=>X(J,G.vendor,G.detector,Q),(Q)=>{if(this.stopped)return;if(this.entries.get(J)!==G)return;if(G.value&&pN(G.value,Q))return;G.value=Q,this.publish()})}publish(){let J={};for(let[z,Y]of this.entries)if(Y.value)J[z]=Y.value;this.bus.publish("transcript.activity",{activity:J})}}function O6(J,z,Y=Mj,Z){if(Y<=0)return()=>{};let X=new F6(J,z,{hasSubscribers:Z});X.tick();let G=setInterval(()=>X.tick(),Y);return G.unref?.(),()=>{clearInterval(G),X.stop()}}var Mj=1500,$N=4000,aN=60000,_N=1500;var A6=b(()=>{Uq();zX();Dq();A1();rJ()});import{readFileSync as sN}from"fs";import{homedir as tN}from"os";import{basename as eN,join as Jb}from"path";function Oj(J=process.env.KOBE_HOME_DIR??tN()){return Jb(J,".config","kobe","state.json")}function R6(J){let z={};try{let B=JSON.parse(sN(J,"utf8"));if(B&&typeof B==="object"&&!Array.isArray(B))z=B}catch{}let Y=typeof z.activeTheme==="string"&&z.activeTheme.length>0?z.activeTheme:"claude",Z=z.transparentBackground===!0,X=typeof z.focusAccent==="string"&&Yb.includes(z.focusAccent)?z.focusAccent:null,G=z.activeSortMode==="recent"?"recent":"default",Q=z["tasksPane.keysCollapsed"]===!0,f=typeof z["tasksPane.projectFilter"]==="string"&&z["tasksPane.projectFilter"].length>0?z["tasksPane.projectFilter"]:null,H=typeof z.locale==="string"&&z.locale.length>0?z.locale:"en";return{theme:Y,transparentBackground:Z,focusAccent:X,locale:H,sortMode:G,keysCollapsed:Q,projectFilter:f}}function Zb(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 g6(J,z={}){let Y=z.debounceMs??Fj;if(Y<=0)return()=>{};let Z=z.pollMs??zb,X=z.statePath??Oj(),G=eN(X),Q=R6(X);return J.publish("ui-prefs",Q),Sf({filePath:X,matchBasenames:[G],debounceMs:Y,pollMs:Z,onTrigger:()=>{try{let H=R6(X);if(Zb(Q,H))return;Q=H,J.publish("ui-prefs",H)}catch(H){T1("ui-prefs-watcher",H)}},onError:(H)=>T1("ui-prefs-watcher",H)})}var Fj=200,zb=250,Yb;var C6=b(()=>{Kj();Yb=["primary","success","info"]});function NX(J){return bZ.includes(J)?J:"auto"}var bZ,N6,qY="editor.kind",PY="editor.customCommand",If="auto";var Tf=b(()=>{bZ=["auto","vim","nvim","nano","emacs","custom"],N6=["nvim","vim","emacs","nano"]});function SZ(J){return J==="taskpanel"?"taskpanel":"chattab"}var fY="settings.surface",kZ="chattab";function b6(J){return J>="0"&&J<="7"}function S6(J,z){let Y=[],Z="",X=()=>{if(Z.length>0){for(let Q of Xb.encode(Z))Y.push(Q);Z=""}},G=z+1;while(G<J.length){let Q=J[G];if(Q==='"'){G++;break}if(Q==="\\"){let f=J[G+1];if(f===void 0){Z+="\\",G++;continue}switch(f){case"a":X(),Y.push(7),G+=2;break;case"b":X(),Y.push(8),G+=2;break;case"t":X(),Y.push(9),G+=2;break;case"n":X(),Y.push(10),G+=2;break;case"v":X(),Y.push(11),G+=2;break;case"f":X(),Y.push(12),G+=2;break;case"r":X(),Y.push(13),G+=2;break;case'"':Z+='"',G+=2;break;case"\\":Z+="\\",G+=2;break;default:if(b6(f)){let H="",B=G+1;while(B<J.length&&H.length<3&&b6(J[B]))H+=J[B],B++;X(),Y.push(Number.parseInt(H,8)&255),G=B}else Z+=f,G+=2;break}}else Z+=Q,G++}return X(),{value:Gb.decode(new Uint8Array(Y)),end:G}}function IZ(J){if(J.length===0||J[0]!=='"')return J;return S6(J,0).value}function I6(J,z){if(J[0]==='"'){let Z=S6(J,0);if(J.startsWith(z,Z.end))return{orig:Z.value,neu:IZ(J.slice(Z.end+z.length))};return null}let Y=J.indexOf(z);if(Y<0)return null;return{orig:J.slice(0,Y),neu:IZ(J.slice(Y+z.length))}}function Qb(J){let z=J.indexOf("{");if(z>=0){let Z=J.indexOf("}",z),X=J.indexOf(" => ",z);if(Z>z&&X>=0&&X<Z){let G=J.slice(0,z),Q=J.slice(z+1,X),f=J.slice(X+4,Z),H=J.slice(Z+1);return{path:G+f+H,origPath:G+Q+H}}}let Y=I6(J," => ");if(Y)return{path:Y.neu,origPath:Y.orig};return{path:IZ(J)}}function yf(J){let z=[];for(let Y of J.split(`
66
- `)){let Z=Y.replace(/\r$/,"");if(Z.length<4)continue;if(Z.startsWith("##"))continue;let X=Z[0],G=Z[1];if(Z[2]!==" ")continue;let Q=Z.slice(3);if(X==="R"||X==="C"||G==="R"||G==="C"){let f=I6(Q," -> ");if(f){z.push({x:X,y:G,path:f.neu,origPath:f.orig});continue}}z.push({x:X,y:G,path:IZ(Q)})}return z}function k6(J){if(J==="-")return null;let z=Number.parseInt(J,10);return Number.isNaN(z)?null:z}function T6(J){let z=[];for(let Y of J.split(`
67
- `)){let Z=Y.replace(/\r$/,"");if(Z.length===0)continue;let X=Z.indexOf("\t");if(X<0)continue;let G=Z.indexOf("\t",X+1);if(G<0)continue;let Q=Z.slice(G+1);if(Q.length===0)continue;let f=Qb(Q);if(f.path.length===0)continue;z.push({path:f.path,...f.origPath!==void 0?{origPath:f.origPath}:{},added:k6(Z.slice(0,X)),deleted:k6(Z.slice(X+1,G))})}return z}var Xb,Gb;var xf=b(()=>{Xb=new TextEncoder,Gb=new TextDecoder});function cJ(J=process.env){return{...J,...Aj}}var Aj;var hY=b(()=>{Aj={GIT_OPTIONAL_LOCKS:"0"}});async function bX(J,z,Y={}){if(!J)return{stdout:"",stderr:"worktreePath is required",status:-1};let Z=(Y.execForPath??XY)(J),X=Y.timeoutMs&&Y.timeoutMs>0?new AbortController:null,G=!1,Q=X?setTimeout(()=>{G=!0,X.abort()},Y.timeoutMs):null,f=X&&Y.signal?AbortSignal.any([X.signal,Y.signal]):X?.signal??Y.signal,H;try{H=await Z.run(["git",...z],{cwd:J,env:Aj,signal:f})}catch(B){if(Q)clearTimeout(Q);return{stdout:"",stderr:B instanceof Error?B.message:String(B),status:-1}}if(Q)clearTimeout(Q);if(G&&H.exitCode===-1&&!H.stderr)return{stdout:H.stdout,stderr:`git ${z.join(" ")} timed out after ${Y.timeoutMs}ms`,status:-1};return{stdout:H.stdout,stderr:H.stderr,status:H.exitCode}}function qb(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 y6(J,z,Y={}){let Z=qb(J,z);if(!Z)return null;let X=(Y.execForPath??XY)(J);try{return await X.readFile(Z)}catch{return null}}var uf=b(()=>{Uz();hY()});import{statSync as fb}from"fs";async function sG(J,z){let Y=await bX(J,z,{timeoutMs:Hb}),Z=Y.status??-1;return{ok:Z===0,stdout:Y.stdout,stderr:Y.stderr,code:Z}}function jb(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=IZ(z);else{let Y=z.indexOf("\t");if(Y>=0)z=z.slice(0,Y)}if(z.startsWith("a/")||z.startsWith("b/"))z=z.slice(2);return z.length>0?z:null}function u6(J){let z=new Map;if(!J)return z;let Y=J.split(/(?=^diff --git )/m);for(let Z of Y){if(!Z.startsWith("diff --git"))continue;let X=null,G=Z.match(/^\+\+\+ (.*)$/m);if(G)X=x6(G[1]);if(X===null){let Q=Z.match(/^--- (.*)$/m);if(Q)X=x6(Q[1])}if(X===null){let Q=Z.match(/^diff --git a\/.* b\/(.*)$/m);if(Q)X=IZ(Q[1])}if(X===null)continue;z.set(X,Z.endsWith(`
28
+ `)&&J.endsWith("</INSTRUCTIONS>")}var eV=()=>{};function J7(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}:{},...eA(z.contextWindowTokens)?{context_window_tokens:z.contextWindowTokens}:{}}}function I8(J,z){return typeof J==="number"&&Number.isFinite(J)?J:z}function eA(J){return typeof J==="number"&&Number.isFinite(J)&&J>0}import{readdir as J2,stat as z2,unlink as nP}from"fs/promises";import{homedir as Y2}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>=z7){if(!Y7)Y7=!0,console.warn(`[codex history] rollout scan truncated at ${z7} files; older sessions may be omitted`);return Z}}}}return Z}async function Z2(J,z=fZ){if(!J)return;let Y=J.toLowerCase(),Z=await u8(z);for(let G of Z)if(HZ.basename(G).match(Q7)?.[1]?.toLowerCase()===Y)return G;return}function G2(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=Z7.get(z);if(!Y)Y=new Map,Z7.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=G2(G);if(X)Y.set(J,X);return X}async function H7(J,z=fZ){if(!J)return[];let Y=await u8(z),Z=[],G=0;for(let X of Y){if(G>=X2)break;if(G++,await q7(X,z)!==J)continue;let Q=HZ.basename(X).match(Q7)?.[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>=Q2)break;if(Z++,await q7(G,z)!==J)continue;try{return{path:G,mtimeMs:(await z.stat(G)).mtimeMs}}catch{}}return null}async function f7(J,z=fZ){return(await E8(J,z))?.mtimeMs??0}async function j7(J,z=fZ){return(await q2(J,z)).messages}async function q2(J,z=fZ){let Y=await Z2(J,z);if(!Y)return{messages:[]};let Z;try{Z=await z.readFile(Y)}catch{return{messages:[]}}let G=H2(f2(Z,J)),X=K2(Z);return{messages:G,...X?{usageMetrics:X}:{}}}function H2(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 f2(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=j2(Q,H,z);if(f)Y.push(f)}return Y}function j2(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"&&tV(G))return;return{role:Z,blocks:G,timestamp:z,sessionId:Y}}if(J.type==="reasoning")return B2(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 G7(J,z,Y,T8(J.output));if(J.type==="tool_search_output")return G7(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 W2(J,z,Y);return}function B2(J,z,Y){let Z=V2(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 G7(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 W2(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 V2(J){let z=X7(J.content);if(z.length>0)return z;let Y=typeof J.text==="string"?J.text:"";if(Y.length>0)return Y;return X7(J.summary)}function X7(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 K2(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"?U2(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=J7(H);if(!f)continue;if(Q!==null&&(Y===null||Q>Y))Y=Q,z=f;else if(Y===null)z=f}return z}function U2(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,z7=5000,Y7=!1,Q7,Z7,X2=200,Q2=12;var w8=C(()=>{jX();eV();fZ={sessionsDir(){return HZ.join(Y2(),".codex","sessions")},async readdir(J){try{return await J2(J)}catch{return[]}},async readFile(J){return await aZ(J)},stat:z2};Q7=/([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})\.jsonl$/i;Z7=new WeakMap});import{homedir as D2}from"os";import{join as L2}from"path";function F2(){return L2(D2(),".codex","hooks.json")}var W7,tP,P8;var V7=C(()=>{k8();W7=[{event:"SessionStart",verb:"session-start"},{event:"UserPromptSubmit",verb:"turn-start"},{event:"Stop",verb:"turn-complete"}],tP=W7.map((J)=>J.event);P8=class P8 extends UX{vendor="codex";eventMap=W7;globalSettingsPath(){return F2()}}});function K7(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 M2,rm as O2,stat as A2}from"fs/promises";import{homedir as R2}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 U7(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 D7(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 g2(J,z=jZ){let Y=await N2(J,z);if(!Y)return{messages:[]};let Z=await z.readFile(yY.join(Y,"events.jsonl")).catch(()=>""),G=k2(Z,J);return{messages:G.messages,...G.usageMetrics?{usageMetrics:G.usageMetrics}:{}}}async function L7(J,z=jZ){return(await g2(J,z)).messages}async function N2(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 C2(Y)}function C2(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 k2(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,b2),"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=K7(B)}return{messages:Y,usageMetrics:X,firstUserMessage:Q}}function h8(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}var jZ,b2=200;var F7=C(()=>{jX();jZ={copilotDir(){let J=process.env.COPILOT_HOME?.trim();if(J)return J;return yY.join(R2(),".copilot")},async readdir(J){try{return await M2(J)}catch{return[]}},async readFile(J){return await aZ(J)},stat:A2,async rm(J){await O2(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 M7}from"fs/promises";class Dq{supportsCompletionMarkers(){return!0}}function LX(J){return n1(J).createTurnDetector()}function T2(J,z="claude",Y=0){let Z=null,G=0;for(let X of J.split(`
34
+ `)){G++;let Q=O7(X);if(!Q)continue;let H=R7(Q.message)?Q.message:Q;if(H.role!=="assistant")continue;if(!("content"in H))continue;let f=A7(Q,Y),j={id:`claude:${z}:${f}:${G}`,timestampMs:f,source:"claude"};if(!Z||j.timestampMs>=Z.timestampMs)Z=j}return Z}function x2(J,z="codex"){let Y=null,Z=0;for(let G of J.split(`
35
+ `)){Z++;let X=O7(G);if(!X||X.type!=="turn.completed")continue;let Q=A7(X,0),H={id:`codex:${z}:${Q}:${Z}`,timestampMs:Q,source:"codex"};if(!Y||H.timestampMs>=Y.timestampMs)Y=H}return Y}function O7(J){let z=J.trim();if(!z)return null;try{let Y=JSON.parse(z);return R7(Y)?Y:null}catch{return null}}function A7(J,z){let Y=typeof J.timestamp==="string"?Date.parse(J.timestamp):Number.NaN;return Number.isFinite(Y)?Y:z}function R7(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}var I2,n8,y2,i8,Lq;var Fq=C(()=>{D8();w8();ZY();I2={listSessionFiles:(J)=>BX(J),readFile:(J)=>M7(J,"utf8")};n8=class n8 extends Dq{deps;vendor="claude";cache=new Map;constructor(J=I2){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=T2(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}};y2={findLatestRollout:(J)=>E8(J),readFile:(J)=>M7(J,"utf8")};i8=class i8 extends Dq{deps;vendor="codex";cache=null;constructor(J=y2){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=x2(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 v2(J){return{vendor:J,builtin:!1,displayName:J,defaultCommand:[J],history:u2,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)?h2[J]:v2(J)}var u2,E2,w2,P2,h2;var ZY=C(()=>{a1();XZ();D8();sV();w8();V7();F7();d8();Fq();u2={async listSessionIdsForWorktree(){return[]},async readHistory(){return[]},async latestTranscriptMtimeForWorktree(){return 0}},E2={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)},w2={listSessionIdsForWorktree:(J)=>H7(J),readHistory:(J)=>j7(J),latestTranscriptMtimeForWorktree:(J)=>f7(J)},P2={listSessionIdsForWorktree:(J)=>U7(J),readHistory:(J)=>L7(J),latestTranscriptMtimeForWorktree:(J)=>D7(J)},h2={claude:{vendor:"claude",builtin:!0,displayName:"Claude",defaultCommand:["claude"],history:E2,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:w2,detectAccount:(J)=>Zq(J),createHookAdapter:()=>new P8,createTurnDetector:()=>new i8},copilot:{vendor:"copilot",builtin:!0,displayName:"Copilot",defaultCommand:["copilot"],history:P2,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 g7(J){return typeof J==="string"&&m2.includes(J)}var FX=(J)=>J,p1="claude",m2;var tJ=C(()=>{m2=["backlog","in_progress","in_review","done","canceled","error"]});function Oq(J){return c2.includes(J)}function N7(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 c2;var Aq=C(()=>{c2=["session-start","turn-start","turn-complete","turn-failed","awaiting-input","session-end"]});function d2(){let J=process.env.KOBE_ENGINE_STATE_TTL_MS;if(J===void 0)return C7;let z=Number(J);return Number.isFinite(z)&&z>0?z:C7}class l8{bus;staleMs;now;livenessAt;activity=new Map;constructor(J,z=d2(),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=N7(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 C7=600000;var k7=C(()=>{Aq()});function b7(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 S7(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=b7(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,n2)){let X=S7(await Y.readHistory(G));if(X)return X}return""}async function I7(J,z){if(!z)return"";try{return S7(await n1(J).history.readHistory(z))}catch{return""}}var n2=8;var gq=C(()=>{ZY();tJ()});function y7(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 i2(){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(v7(Y),Lz.afterCreateSignal)Lz.afterCreateSignal(Y)}let Z=(G)=>{if(typeof G==="function")if(j0&&j0.running&&j0.sources.has(Y))G=G(Y.tValue);else G=G(Y.value);return r8(Y,G)};return[m7.bind(Y),Z]}function T7(J,z,Y){let Z=YG(J,z,!0,wJ,Y);if(zG&&j0&&j0.running)r1.push(Z);else VZ(Z)}function uz(J,z,Y){let Z=YG(J,z,!1,wJ,Y);if(zG&&j0&&j0.running)r1.push(Z);else VZ(Z)}function _0(J,z,Y){h7=YR;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&&j0&&j0.running)Z.tState=wJ,r1.push(Z);else VZ(Z);return m7.bind(Z)}function r2(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 y(Y0,q0,s,W0){if(Q===Y0){if(Q=null,W0!==void 0&&(B=!0),(Y0===H||q0===H)&&X.onHydrated)queueMicrotask(()=>X.onHydrated(W0,{value:q0}));if(H=$8,j0&&Y0&&j)j0.promises.delete(Y0),j=!1,IJ(()=>{j0.running=!0,$(q0,s)},!1);else $(q0,s)}return q0}function $(Y0,q0){IJ(()=>{if(q0===void 0)O(()=>Y0);M(q0!==void 0?"errored":B?"ready":"unresolved"),x(q0);for(let s of L.keys())s.decrement();L.clear()},!1)}function c(){let Y0=AX&&PJ(AX),q0=A(),s=R();if(s!==void 0&&!Q)throw s;if(L1&&!L1.user&&Y0)T7(()=>{if(w(),Q){if(Y0.resolved&&j0&&j)j0.promises.add(Q);else if(!L.has(Y0))Y0.increment(),L.add(Y0)}});return q0}function e(Y0=!0){if(Y0!==!1&&V)return;V=!1;let q0=K?K():Z;if(j=j0&&j0.running,q0==null||q0===!1){y(Q,o1(A));return}if(j0&&Q)j0.promises.delete(Q);let s,W0=H!==$8?H:o1(()=>{try{return G(q0,{value:A(),refetching:Y0})}catch(N0){s=N0}});if(s!==void 0){y(Q,void 0,kq(s),q0);return}else if(!r2(W0))return y(Q,W0,void 0,q0),W0;if(Q=W0,"v"in W0){if(W0.s===1)y(Q,W0.v,void 0,q0);else y(Q,void 0,kq(W0.v),q0);return W0}return V=!0,queueMicrotask(()=>V=!1),IJ(()=>{M(B?"refreshing":"pending"),S()},!1),W0.then((N0)=>y(W0,N0,void 0,q0),(N0)=>y(W0,void 0,kq(N0),q0))}Object.defineProperties(c,{state:{get:()=>g()},error:{get:()=>R()},loading:{get(){let Y0=g();return Y0==="pending"||Y0==="refreshing"}},latest:{get(){if(!B)return c();let Y0=R();if(Y0&&!Q)throw Y0;return A()}}});let u=l0;if(K)T7(()=>(u=l0,e(!1)));else e(!1);return[c,{refetch:(Y0)=>s2(u,()=>e(Y0)),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 o2(J,z){if(MX||(MX=Symbol("error")),l0=YG(void 0,void 0,!0),l0.context={...l0.context,[MX]:[z]},j0&&j0.running)j0.sources.add(l0);try{return J()}catch(Y){gX(Y)}finally{l0=l0.owner}}function xq(){return L1}function s2(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 t2(J){if(j0&&j0.running)return J(),j0.done;let z=L1,Y=l0;return Promise.resolve().then(()=>{L1=z,l0=Y;let Z;if(zG||AX)Z=j0||(j0={sources:new Set,effects:[],promises:new Set,disposed:new Set,queue:new Set,running:!0}),Z.done||(Z.done=new Promise((G)=>Z.resolve=G)),Z.running=!0;return IJ(J,!1),L1=l0=null,Z?Z.done:void 0})}function u7(J,z){let Y=YG(()=>o1(()=>{return Object.assign(J,{[_2]:!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 v7(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:ZR(Y,z),defaultValue:J}}function PJ(J){let z;return l0&&l0.context&&(z=l0.context[J.id])!==void 0?z:J.defaultValue}function e2(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 m7(){let J=j0&&j0.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&&j0.sources.has(this))return this.tValue;return this.value}function r8(J,z,Y){let Z=j0&&j0.running&&j0.sources.has(J)?J.tValue:J.value;if(!J.comparator||!J.comparator(Z,z)){if(j0){let G=j0.running;if(G||!Y&&j0.sources.has(J))j0.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=j0&&j0.running;if(Q&&j0.disposed.has(X))continue;if(Q?!X.tState:!X.state){if(X.pure)r1.push(X);else DJ.push(X);if(X.observers)d7(X)}if(!Q)X.state=wJ;else X.tState=wJ}if(r1.length>1e6){if(r1=[],l2)throw Error("Potential Infinite Loop Detected.");throw Error()}},!1)}return z}function VZ(J){if(!J.fn)return;TY(J);let z=yq;if(E7(J,j0&&j0.running&&j0.sources.has(J)?J.tValue:J.value,z),j0&&!j0.running&&j0.sources.has(J))queueMicrotask(()=>{IJ(()=>{j0&&(j0.running=!0),L1=l0=J,E7(J,J.tValue,z),L1=l0=null},!1)})}function E7(J,z,Y){let Z,G=l0,X=L1;L1=l0=J;try{Z=J.fn(z)}catch(Q){if(J.pure)if(j0&&j0.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(j0&&j0.running&&J.pure){if(!j0.sources.has(J))J.value=Z;j0.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(j0&&j0.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!==p2)if(j0&&j0.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=()=>t2(f).then(()=>{if(V)V.dispose(),V=void 0});X.fn=(K)=>{if(H(),j0&&j0.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=j0&&j0.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&&j0.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(j0.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 JR(Y),Z}catch(Z){if(!Y)DJ=null;r1=null,gX(Z)}}function JR(J){if(r1){if(zG&&j0&&j0.running)zR(r1);else c7(r1);r1=null}if(J)return;let z;if(j0){if(!j0.promises.size&&!j0.queue.size){let{sources:Z,disposed:G}=j0;DJ.push.apply(DJ,j0.effects),z=j0.resolve;for(let X of DJ)"tState"in X&&(X.state=X.tState),delete X.tState;j0=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}x7(!1)},!1)}else if(j0.running){j0.running=!1,j0.effects.push.apply(j0.effects,DJ),DJ=null,x7(!0);return}}let Y=DJ;if(DJ=null,Y.length)IJ(()=>h7(Y),!1);else Lz.afterUpdate&&Lz.afterUpdate();if(z)z()}function c7(J){for(let z=0;z<J.length;z++)RX(J[z])}function zR(J){for(let z=0;z<J.length;z++){let Y=J[z],Z=j0.queue;if(!Z.has(Y))Z.add(Y),zG(()=>{Z.delete(Y),IJ(()=>{j0.running=!0,RX(Y)},!1),j0&&(j0.running=!1)})}}function YR(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=j0&&j0.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 d7(J){let z=j0&&j0.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&&d7(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(j0&&j0.running&&J.pure)n7(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(j0&&j0.running)J.tState=0;else J.state=0;delete J.sourceMap}function n7(J,z){if(!z)J.tState=0,j0.disposed.add(J);if(J.owned)for(let Y=0;Y<J.owned.length;Y++)n7(J.owned[Y])}function kq(J){if(J instanceof Error)return J;return Error(typeof J==="string"?J:"Unknown error",{cause:J})}function w7(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(){w7(Z,Y,z)},state:wJ});else w7(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 ZR(J,z){return function(Z){let G;return uz(()=>G=o1(()=>{return l0.context={...l0.context,[J]:Z.value},e2(()=>Z.children)}),void 0,z),G}}function P7(J){for(let z=0;z<J.length;z++)J[z]()}function XR(J,z,Y={}){let Z=[],G=[],X=[],Q=0,H=z.length>1?[]:null;return S1(()=>P7(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)P7(X),X=[],Z=[],G=[],Q=0,H&&(H=[]);if(Y.fallback)Z=[GR],G[0]=BZ((y)=>{return X[0]=y,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 i7(J,z){if(QR){if(I1.context){let Y=I1.context;_8(i2());let Z=u7(J,z||{});return _8(Y),Z}}return u7(J,z||{})}function Nq(){return!0}function a8(J){return!(J=typeof J==="function"?J():J)?{}:J}function HR(){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(a2&&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:HR.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(XR(()=>J.each,J.children,z||void 0),void 0,{name:"value"})}function Z0(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 fR("Show");return Y()})):X}return J.fallback},void 0,{name:"value"})}function l7(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 o2(()=>J.children,Z)},void 0,{name:"value"})}var I1,l2=!0,$2=(J,z)=>J===z,Dz,a2,Iq,_2,bq,MX=null,h7,wJ=1,OX=2,p2,$8,l0=null,j0=null,zG=null,JG=null,L1=null,r1=null,DJ=null,yq=0,Lz,Ih,x7,AX,GR,QR=!1,qR,fR=(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,$7;var W1=C(()=>{I1={context:void 0,registry:void 0,effects:void 0,done:!1,getContextId(){return y7(this.context.count)},getNextContextId(){return y7(this.context.count++)}};Dz=Symbol("solid-proxy"),a2=typeof Proxy==="function",Iq=Symbol("solid-track"),_2=Symbol("solid-dev-component"),bq={equals:$2},h7=c7,p2={},$8={},Lz={afterUpdate:null,afterCreateOwner:null,afterCreateSignal:null,afterRegisterGraph:null};[Ih,x7]=p(!1);GR=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()}};$7={hooks:Lz,writeSignal:r8,registerGraph:v7};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 jR}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 a7(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 _7(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=jR(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 BR(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 WR(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 VR(J){if(!J||J.length===0)return"none";let z=!1,Y=!1;for(let Z of J){let G=WR(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 r7(J,z){if(!J||typeof J.number!=="number")return null;return{provider:"github",lifecycle:BR(J.state,J.reviewDecision),checkState:VR(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,LR))return{kind:"empty"};if(Eq(z,KR))return{kind:"error",error:"no-remote"};if(Eq(z,UR))return{kind:"error",error:"auth"};if(Eq(z,DR))return{kind:"error",error:"network"};return{kind:"empty"}}function NX(J,z,Y,Z,G=Math.random){let X=(H)=>Y+a7(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(_7(Z.failureBaseMs,Q-1,Z.failureCapMs)),failures:Q}}var p7="number,url,title,state,baseRefName,headRefName,reviewDecision,mergeable,statusCheckRollup",KR,UR,DR,LR;var e8=C(()=>{GG();KR=["none of the git remotes","no git remote","to use github cli in a github repository","not a github repository"],UR=["gh auth login","authentication required","not logged in","http 401","bad credentials","requires authentication"],DR=["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"],LR=["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 o7;var s7=C(()=>{o7=["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 t7(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(t7(z))}function XY(J){for(let z of Object.values(Q8()))if(J===z.basePath||J.startsWith(`${z.basePath}/`))return new iZ(t7(z));return new iQ}function e7(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 FR}from"crypto";import zK from"fs";import hJ from"path";function YK(J){if(!hJ.isAbsolute(J))throw Error(`worktreeRootFor: repo must be an absolute path, got: ${J}`);return hJ.join(jJ(),MR,NR(J))}function ZK(J){if(!hJ.isAbsolute(J))throw Error(`managedWorktreeRootsFor: repo must be an absolute path, got: ${J}`);return[YK(J),...RR.map((z)=>hJ.join(J,z))]}function GK(J,z){if(!z||/[/\\\0]/.test(z))throw Error(`worktreePathFor: invalid slug: ${JSON.stringify(z)}`);return hJ.join(YK(J),z)}async function XK(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 ZK(J))try{for(let Z of zK.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=JK(z);for(let Z of ZK(J)){let G=JK(Z),X=hJ.relative(G,Y);if(X!==""&&!X.startsWith("..")&&!hJ.isAbsolute(X))return Z}return null}function QK(J,z){return qj(J,z)!==null}function qK(J){return`${gR(J)}/.kobe/worktrees`}function HK(J,z){if(!z||/[/\\\0]/.test(z))throw Error(`remoteWorktreePathFor: invalid slug: ${JSON.stringify(z)}`);return`${qK(J)}/${z}`}function gR(J){return J.length>1&&J.endsWith("/")?J.replace(/\/+$/,""):J}function JK(J){try{return zK.realpathSync(J)}catch{return hJ.resolve(J)}}function NR(J){let Y=(hJ.basename(J)||"repo").replace(/[^a-zA-Z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"repo",Z=FR("sha1").update(hJ.resolve(J)).digest("hex").slice(0,12);return`${Y}-${Z}`}var MR="worktrees",OR=".kobe/worktrees",AR=".claude/worktrees",RR;var Hj=C(()=>{t1();Fz();A1();RR=[OR,AR]});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??o7,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 XK(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 fK=C(()=>{s7();Hj()});var BK={};Q1(BK,{PLACEHOLDER_TASK_TITLE:()=>wz,Orchestrator:()=>Pq});import{realpathSync as CR}from"fs";import{basename as kR,resolve as bR}from"path";function jK(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:SR(z),branch:"",worktreePath:jK(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 jK(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??kR(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 SR(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 CR(J)}catch{return bR(J)}}var wz="(new task)";var kX=C(()=>{W1();e8();A1();tJ();a1();Qj();fK()});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 IR}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 yR(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=yR(Z);if(X.length>0)return X}return IX(Y)})();return TR(G,Y,z)}function TR(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)=>xR.has(Z)))return{argv:J,sessionId:null};let Y=IR();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 uR(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 ER(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 wR(J,z=FZ(),Y={}){let Z=[];if((Y.status??hq)())Z.push(uR(J,z));if((Y.notes??jj)())Z.push(ER(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=wR(Y,FZ(),Z);if(!G)return J;return[...J,"--append-system-prompt",G]}function PR(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",PR(Y)]}var Bj,xR;var eJ=C(()=>{YY();ZY();SX();vq();A1();a1();Bj=Object.fromEntries(tY.map((J)=>[J,n1(J).displayName]));xR=new Set(["--session-id","--resume","-r","--continue","-c","--from-pr"])});var WK={};Q1(WK,{archivedHistoryPreviewEnabled:()=>Wj,ARCHIVED_HISTORY_PREVIEW_KEY:()=>yX});function Wj(){return fz(yX,!1)}var yX="experimental.archivedHistoryPreview";var dq=C(()=>{gY()});import{spawnSync as hR}from"child_process";function VK(J,z){if(J==="darwin")return"pbcopy";if(J==="linux"){for(let Y of vR)if(z(Y.binary))return Y.command;return null}return null}function UK(J){let z=[["set-option","-g","set-clipboard","on"]];if(J)for(let Y of mR)for(let Z of cR)z.push(["bind-key","-T",Y,Z,"send-keys","-X","copy-pipe-and-cancel",J]);return z}var vR,KK=(J)=>{try{let z=process.platform==="win32"?"where":"which";return hR(z,[J],{encoding:"utf8"}).status===0}catch{return!1}},mR,cR;var DK=C(()=>{vR=[{binary:"wl-copy",command:"wl-copy"},{binary:"xclip",command:"xclip -selection clipboard -in"},{binary:"xsel",command:"xsel --clipboard --input"}];mR=["copy-mode","copy-mode-vi"],cR=["MouseDragEnd1Pane","y","Enter"]});import{existsSync as LK,readFileSync as dR}from"fs";function FK(){MZ=null}function nR(){let J=vW();if(LK(J))return{canonical:J,found:J};let z=J.replace(/\.yaml$/,".yml");if(LK(z))return{canonical:J,found:z};return{canonical:J,found:null}}function nq(){if(MZ)return MZ;let{canonical:J,found:z}=nR();if(!z)return MZ={path:J,exists:!1,doc:null,warnings:[]},MZ;let Y=[],Z=null;try{let G=dR(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 rR(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=$R[f];if(!j)return{error:`"${J}": unknown modifier "${f}" (use ctrl / cmd / alt / shift)`};X.add(j)}if(G=aR[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=pR.filter((f)=>X.has(f)).join("+"),H=Q?`${Q}+${G}`:G;if(G.length>1&&!_R.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 oR(J){if(J==="darwin")return["darwin","macos","mac"];if(J==="win32")return["win32","windows"];return[J]}function sR(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 oR(z)){let H=J[Q];if(H===void 0)continue;let f=sR(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=rR(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 tR(J,z){return J===z||J==="global"||z==="global"}function MK(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=iR[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&&lR.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(!tR(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,iR,lR,$R,aR,_R,pR;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)"};iR={"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")},lR=new Set(["global","workspace","terminal"]),$R={ctrl:"ctrl",control:"ctrl",ctl:"ctrl",cmd:"cmd",command:"cmd",meta:"cmd",super:"cmd",win:"cmd",alt:"alt",option:"alt",opt:"alt",shift:"shift"},aR={esc:"escape",spacebar:"space",pgup:"pageup",pgdn:"pagedown",pgdown:"pagedown"},_R=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}`)]),pR=["ctrl","cmd","alt","shift"]});function jG(J){return J in OK}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=Jg[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 RK(){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=RK(),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 gK(){OZ=null}function aq(){if(OZ)return OZ;let J=nq();if(!J.exists||J.doc===null)return OZ=RK(),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 eR,OK,AK,AZ,Pz="tmux.focus",uY,Jg,OZ=null;var _q=C(()=>{Vj();$q();eR={"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"},OK={"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"},AK=["F6","F7","F8","F9","F10","F11"],AZ={...eR,...OK};uY=["ctrl+h","ctrl+j","ctrl+k","ctrl+l"],Jg={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 NK(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 m0(["set-buffer","-b",Y,"--",z]),await m0(["paste-buffer","-p","-d","-b",Y,"-t",J]),await NK(zg),await uX(J,"Enter")}async function CK(J,z){let{pane:Y}=await TX(J,!0);if(!Y)return;await xX(Y,z.text)}var NK=(J)=>new Promise((z)=>setTimeout(z,J)),zg=150;var pq=C(()=>{v1()});function kK(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 bK;var SK=C(()=>{rq();oq();sq();tq();eq();JH();zH();bK={claude:VG,conductor:KG,nord:DG,opencode:LG,dracula:UG,tokyonight:MG,"osaka-jade":FG}});function fg(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 IK(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 fg(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 jg,readdirSync as Bg}from"fs";import{join as yK}from"path";function OG(){return yK(jJ(),"themes")}function EX(){let J=OG(),z;try{z=Bg(J)}catch{return[]}let Y=[];for(let Z of z){if(!Z.endsWith(".json"))continue;let G=yK(J,Z),X;try{let f=jg(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 Wg}from"fs";function Kg(){try{let J=JSON.parse(Wg(_J(),"utf8")),z=typeof J.activeTheme==="string"&&J.activeTheme?J.activeTheme:"claude",Y=typeof J.focusAccent==="string"&&Vg.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 Ug(J){return EX().find((Y)=>Y.name===J)?.theme??bK[J]??null}function Az(J,...z){for(let Y of z){let Z=IK(J,Y);if(Z)return Z}return null}function TK(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 uK(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 Dg(J){let z=new Set(J.marker.split(",").map((X)=>X.trim()).filter(Boolean)),Y=[],Z=[];for(let X of uK(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 xK(J){let{code:z,stdout:Y}=await $0(J);return z===0?Y.trim():""}async function gZ(){try{let J=Kg(),z=J.enabled?Ug(J.themeName):null,Y=z?TK(z,J.focusAccentSlot):TK({theme:{}},J.focusAccentSlot),Z=uK(Y),[G,...X]=await Promise.all([xK(["show-options","-gqv",Mj]),...Z.map((f)=>xK(["show-options",f.showFlag,f.option]))]),Q=Object.fromEntries(Z.map((f,j)=>[f.key,X[j]??""])),H=Dg({marker:G,current:Q,hexes:Y});if(H.length>0)await l1(H)}catch{}}var Mj="@kobe_border_theme",Vg;var XH=C(()=>{t1();v1();SK();GH();Vg=["primary","success","info"]});function EK(){return fz(QH,!0)}function qH(){return fz(wK,!1)}function PK(J){oW(wK,J)}var QH="zen.keepTasks",wK="zen.active";var Oj=C(()=>{gY()});var HH={};Q1(HH,{recordGen:()=>EY,isLatestGen:()=>dK,genAgeMs:()=>gg,coalesceLayoutWork:()=>Ng,RESIZE_GUARD_MS:()=>Rg,LAYOUT_COALESCE_MS:()=>mK});import{createHash as Lg,randomUUID as Fg}from"crypto";import{mkdirSync as Mg,readFileSync as hK,renameSync as Og,writeFileSync as Ag}from"fs";import{join as vK}from"path";function cK(){return vK(jJ(),"layout-coord")}function Aj(J,z){let Y=Lg("sha1").update(J).digest("hex").slice(0,16);return vK(cK(),`${Y}.${z}`)}function EY(J,z){let Y=Fg();try{Mg(cK(),{recursive:!0});let Z=Aj(J,z),G=`${Z}.${Y}.tmp`;Ag(G,`${Date.now()}
41
+ ${Y}`),Og(G,Z)}catch{}return Y}function dK(J,z,Y){try{return hK(Aj(J,z),"utf8").split(`
42
+ `)[1]?.trim()===Y}catch{return!0}}function gg(J,z,Y=Date.now()){try{let Z=Number.parseInt(hK(Aj(J,z),"utf8").split(`
43
+ `)[0]??"",10);return Number.isFinite(Z)?Y-Z:Number.POSITIVE_INFINITY}catch{return Number.POSITIVE_INFINITY}}async function Ng(J,z,Y,Z=mK){let G=EY(J,z);if(Z>0)await new Promise((X)=>setTimeout(X,Z));if(!dK(J,z,G))return;await Y()}var mK=120,Rg=400;var AG=C(()=>{t1()});function kg(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 bg(J){let z=J.indexOf("-t");return z>=0&&z+1<J.length?J[z+1]??null:null}function Sg(J,z){return J.filter((Y)=>{let Z=bg(Y);return Z===null||z.has(Z)})}function nK(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",Cg]);if(z!==0)return null;return kg(Y)}async function iK(J,z){if(z.length===0)return;let Y=await fH(J),Z=Y?Sg(z,new Set(Y.map((G)=>G.paneId))):z;if(Z.length>0)await l1(Z)}function lK(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 Ig(J,z){if(J===0)return"no-engine-pane";return z===0?"switched":"respawn-failed"}async function $K(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 Ig(Q.length,V)}async function aK(){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(...lK(nK(Y,{currentVersion:r0,force:!1,vendorChanged:z.vendorChanged}),z));await iK(J,G)}async function _K(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 yg(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 pK(J){let{code:z,stdout:Y}=await $0(["list-panes","-t",`=${J}`,"-F",`#{@kobe_role} #{window_zoomed_flag} #{${Kz}} #{${kJ}}`]);if(z!==0||!yg(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=lK(nK(X,{currentVersion:r0,force:!0}),{cwd:Y,taskId:Z,vendor:G});await iK(J,Q),await gZ()}var Rz="@kobe_pane_version",Cg;var wX=C(()=>{YY();eJ();Fz();v1();Uz();XH();AJ();KZ();AG();Cg=`#{window_id} #{pane_id} #{@kobe_role} #{${Rz}} #{pane_width}`});var uj={};Q1(uj,{syncSessionZen:()=>WH,runLayoutAction:()=>CZ,resolveShellPane:()=>jH,planWorkspaceSplit:()=>oK,parseLayoutPaneRows:()=>rK,expandedTerminalHeightPercent:()=>sK,engineTabExit:()=>pg,applyZenToNewWindow:()=>xj});function rK(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 oK(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 sK(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",Tg]);return Z===0?rK(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 m0(["set-window-option","-t",J,z,Y])}async function wY(J,z){await m0(["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 m0(["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 xg(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 ug(J,z){return z?.trim()||await Nj(J)}async function Eg(J,z){let Y=await mJ(J,z);if(!Y)return;let Z=oK(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 wg(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 m0(["kill-pane","-t",X.paneId])}async function Pg(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 tK(){return(await vz()).tasksWidth}async function hg(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 eK(J,z){let Y=await mJ(J,z);if(!Y)return;let Z=Y.find((O)=>O.role===Wz);if(Z){await m0(["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=xg({cwd:Q,taskId:H,vendor:f,enginePaneId:X.paneId}),V=G?["split-window","-v","-b","-t",G.paneId,"-l",`${await vg()}%`,"-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 vg(){return(await vz()).opsHeightPct}async function Sj(){return(await vz()).rightColumnWidthPct}async function J6(){return sK((await vz()).opsHeightPct)}async function mg(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 z6(J,z){let Y=await mg(J),Z=hV(z);while(Y.has(Z))Z++;return Z}async function Y6(J){let z=VX(J);if(await V1(z))return z;return await m0(["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 m0(["kill-session","-t",`=${z}`])}async function cg(J,z){await Z6(J,z,Kz)}async function dg(J,z){await Z6(J,z,kJ)}async function Z6(J,z,Y){let Z=await QY(z,Y);if(!Z)return;if(await bj(Z))await m0(["kill-pane","-t",Z]);await wY(z,Y)}async function Cj(J,z){await cg(J,z),await dg(J,z),await Ij(J)}function G6(J){return J.find((z)=>z.role===qZ)??J[0]}async function yj(J,z,Y){let Z=G6(Y);if(!Z)return await T1(z,"kobe: cannot restore Tasks pane in this layout"),!1;let G=await tK(),{cwd:X,command:Q}=await hg(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 X6(J,z,Y){let Z=await Y6(J),G=await z6(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 m0(["select-pane","-t",Q.paneId]);return}await yj(J,z,Z);return}let G=G6(Z);if(!G){await T1(z,"kobe: cannot restore Tasks pane in this layout");return}if(await m0(["join-pane","-h","-b","-s",Y,"-t",G.paneId,"-l",`${await tK()}`])!==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 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 X6(J,z,G);return}await yj(J,z,Z)}async function ig(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 m0(["select-pane","-t",G.paneId]);return}await yj(J,z,Z)}async function Q6(J,z,Y){if(Y.role==="")await m0(["set-option","-p","-t",Y.paneId,"@kobe_role",Vz]);let Z=await Y6(J),G=await z6(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 J6()}%`,"-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 m0(["set-option","-p","-t",j,"@kobe_role",Vz]),await wY(z,Kz),await T1(z,"kobe: Terminal pane restored"),!0}async function H6(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 J6()}%`]:["join-pane","-h","-s",Y,"-t",X?.paneId??"","-l",`${await Sj()}%`];if(await m0(Q)!==0){await T1(z,"kobe: could not restore terminal pane");return}await m0(["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 m0(["select-pane","-t",f.paneId]);await T1(z,"kobe: Terminal pane restored")}async function lg(J,z){let Y=await QY(z,Kz);if(Y){await H6(J,z,Y);return}let Z=await mJ(J,z);if(!Z)return;let G=jH(Z);if(G){await Q6(J,z,G);return}await q6(J,z,Z)}async function $g(J){let z=qH();if(PK(!z),z){await W6(J);return}await B6(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 B6(J);else await W6(J)}async function f6(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 j6(J,z){return!!(await mJ(J,z))?.some((Z)=>Z.role===qZ)}async function B6(J){let z=await f6(J);for(let Y of z){if(!await j6(J,Y))continue;if(await QY(Y,SY))continue;await V6(J,Y)}await qY(J,pZ,"1"),await T1(`=${J}`,"kobe: Zen mode on \u2014 all tabs")}async function W6(J){let z=await f6(J);for(let Y of z){let Z=await QY(Y,SY);if(Z)await ag(J,Y,Z)}await m0(["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 j6(J,z))return;await V6(J,z)}async function V6(J,z){let Y=await mJ(J,z);if(!Y)return;let Z=[],G=Y.find((Q)=>Q.role===Wz);if(G)await m0(["kill-pane","-t",G.paneId]),Z.push(Wz);let X=jH(Y);if(X)await Q6(J,z,X),Z.push(Vz);if(!EK()){let Q=Y.find((H)=>H.role===oJ);if(Q)await X6(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 ag(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 eK(J,z)}if(Z.has(Vz)){let G=await QY(z,Kz);if(G)await H6(J,z,G)}await wY(z,SY),await T1(z,"kobe: Zen mode off")}async function K6(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 _g(J,z){if(await K6(J)<=1){await T1(z,"Cannot close the only ChatTab");return}await Cj(J,z),await m0(["kill-window","-t",z])}async function pg(J){if(!await V1(J))return;let z=await Nj(J);if(!z)return;if(await K6(J)>1){await Cj(J,z),await m0(["kill-window","-t",z]);return}let{newChatTab:Y}=await Promise.resolve().then(() => (VH(),U6));if(await Y(J),await Nj(J)!==z)await Cj(J,z),await m0(["kill-window","-t",z])}async function CZ(J,z,Y={}){if(!await V1(J))return;let Z=await ug(J,Y.windowId);if(!Z)return;switch(z){case"workspace-split":await Eg(J,Z);return;case"workspace-close":await wg(J,Z);return;case"workspace-reset":await Pg(J,Z);return;case"tasks-toggle":await ng(J,Z);return;case"tasks-restore":await ig(J,Z);return;case"ops-toggle":await eK(J,Z);return;case"terminal-toggle":await lg(J,Z);return;case"zen-toggle":await $g(J);return;case"chat-tab-close":await _g(J,Z);return}}var Tg="#{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 U6={};Q1(U6,{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 aK();if(H.length>0)await m0(["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 rg(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()}${lV({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 rg(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:()=>L6,tmuxInitialClientSize:()=>vj,tmuxAvailable:()=>mz,switchClientBeforeKill:()=>cz,sessionExists:()=>V1,selectTasksPane:()=>YN,runLayoutAction:()=>CZ,resyncWindowToClient:()=>tg,refreshKobeWorkspacePanes:()=>RG,quickCreate:()=>Pj,prepareWindowForSwitch:()=>A6,prepareWindowForAttach:()=>FH,parseTmuxClientRows:()=>F6,parseObservedSession:()=>g6,openUpdateTab:()=>aX,openSettingsTab:()=>iX,openNewTaskTab:()=>$X,openHelpTab:()=>lX,observeSessionVendor:()=>dj,newChatTab:()=>wj,kobeStatusRight:()=>dX,killSession:()=>zz,healSessionLayout:()=>_K,focusBindCommand:()=>R6,enterWindow:()=>sg,ensureSession:()=>pX,currentSessionName:()=>xJ,clientsWithConflictingSize:()=>M6,chatTabSwitchBindings:()=>hX,chatTabRenameBinding:()=>mX,chatTabCloseBinding:()=>vX,chatTabChooseEngineBindings:()=>cX,captureGlobalLayoutOnDrag:()=>pK,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 L6(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 F6(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 M6(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",og]);if(Z!==0)return;let X=M6(F6(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 m0(["resize-window","-t",`=${J}`,...Y]);await NZ(J)}async function O6(){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 A6(J){EY(J,"resize");let z=await O6();await cj(J,z.clientSize,{currentClientName:z.clientName});let Y=z.sizeArgs;if(Y.length>0)await m0(["resize-window","-t",`=${J}`,...Y]);await NZ(J)}async function sg(J){await A6(J),await m0(["switch-client","-t",`=${J}`])}async function tg(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 R6(J,z,Y){let Z=`#{?window_zoomed_flag,1,#{?${eg[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=zN(J);hj.set(J.name,Y);try{return await Y}finally{hj.delete(J.name)}}function g6(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 N6(J){if(!await V1(J))return null;let{code:z,stdout:Y}=await $0(["list-panes","-s","-t",`=${J}`,"-F",JN]);if(z!==0)return{worktree:"",vendor:"",claudePaneAlive:!1,windowCount:0};return g6(Y)}async function dj(J){let Y=(await N6(J))?.vendor.trim();return Y?Y:null}async function zN(J){let z=J.launchInit,Y=await N6(J.name),Z=kK(Y,{cwd:J.cwd,vendor:J.vendor,hasEngineCommand:J.command.length>0}),G=e7(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 P=await $K(J.name,J.cwd,J.command,G,J.vendor);if(P==="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(P==="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),A=Q?cV(L):nV(L,{initScript:G?void 0:z?.initScript,markerPath:!G&&z?.initScript?mW(J.cwd):void 0,timeoutSeconds:N8(process.env.KOBE_REPO_INIT_TIMEOUT_SECONDS)},rZ(i1(),X,J.name)),R=(await $0(["new-session","-d","-s",J.name,"-c",h1(J.cwd),...L6(),"-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,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:P}=await O6();if(P.length>0)await m0(["resize-window","-t",`=${J.name}`,...P])}await UH(R,{cwd:J.cwd,taskId:J.taskId,opsCommand:J.opsCommand,inv:X,vendor:J.vendor});let x=i1(),w=X.map(Z1).join(" "),S=`${x}${w} new-chattab --session '#{session_name}'`,g=`${S} --vendor '%%'`,M=`run-shell ${Z1(g)}`,y=`${x}${w} focus-tasks --session '#{session_name}' --window '#{window_id}'`,$=`run-shell ${Z1(y)}`,c=(P)=>`${x}${w} layout --session '#{session_name}' --window '#{window_id}' --action ${P}`,e=c("tasks-restore"),u=`run-shell ${Z1(e)}`,Y0=c("chat-tab-close"),q0=`run-shell ${Z1(Y0)}`,s=`${x}${w} heal-layout --session '#{session_name}'`,W0=`run-shell -b ${Z1(s)}`,N0=`${x}${w} resync-window --session '#{session_name}' --client '#{client_name}' --cols '#{client_width}' --rows '#{client_height}' --status '#{status}'`,v=`run-shell -b ${Z1(N0)}`,o=`${x}${w} capture-layout --session '#{session_name}'`,m=`run-shell -b ${Z1(o)}`,k=$V({tmuxSocket:Nz}),t=VK(process.platform,KK),T=UK(t),n=aq(),X0=AK.map((P)=>["unbind-key","-n",P]);if(n.overridden.has(Pz))for(let P of uY){let L0=RZ(P);if("key"in L0)X0.push(["unbind-key","-n",L0.key])}for(let P of n.overridden){if(P===Pz)continue;let L0=AZ[P],z0=jG(P),V0=RZ(L0,{allowBare:z0});if("key"in V0)X0.push(z0?["unbind-key",V0.key]:["unbind-key","-n",V0.key])}let H0=["-L","-D","-U","-R"],R0=n.focus.flatMap((P,L0)=>{let z0=H0[L0],V0=z0==="-L"?u:void 0;return P&&z0?[R6(P.key,z0,V0)]:[]}),M0=n.binds,c0=(P,L0)=>{let z0=M0[P];return z0?[["bind-key",z0.key,"run-shell",c(L0)]]:[]},u0=(...P)=>{let L0=P.map((z0)=>M0[z0]?.chord).filter((z0)=>!!z0);return L0.length>0?L0.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:n.focus[0]?.key??null,detach:M0["tmux.detach"]?.key??null,newTab:M0["tmux.tab.new"]?.key??null,layoutSplits:u0("tmux.layout.workspaceSplit","tmux.layout.workspaceClose","tmux.layout.workspaceReset"),layoutPanes:u0("tmux.layout.tasksToggle","tmux.layout.opsToggle","tmux.layout.terminalToggle","tmux.layout.zenToggle")})],["set-option","-g","mouse","on"],...T,["set-hook","-g","window-resized",W0],["set-hook","-g","client-resized",v],["set-hook","-g","pane-exited",W0],["set-hook","-g","window-layout-changed",m],...X0,...M0["tmux.detach"]?[["bind-key","-n",M0["tmux.detach"].key,"if-shell","-F",`#{?#{${kJ}},1,#{==:#{@kobe_role},tasks}}`,"detach-client",$]]:[],...R0,...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((P)=>[...P,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)]:[],...c0("tmux.layout.workspaceSplit","workspace-split"),...c0("tmux.layout.workspaceClose","workspace-close"),...c0("tmux.layout.workspaceReset","workspace-reset"),...c0("tmux.layout.tasksToggle","tasks-toggle"),...c0("tmux.layout.opsToggle","ops-toggle"),...c0("tmux.layout.terminalToggle","terminal-toggle"),...c0("tmux.layout.zenToggle","zen-toggle"),["bind-key","f","run-shell",`${x}${w} quick-create --session '#{session_name}'`],["bind-key","u","display-popup","-E",k]]),await gZ(),await m0(["select-pane","-t",R]);let p0=z?.firstMessage;if(p0)CK(J.name,p0).catch((P)=>console.error("[kobe tmux] first message delivery failed:",P));return!0}async function D6(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 YN(J,z={}){if(!await V1(J))return"";let Y=await D6(J,"tasks",z.windowId);if(!Y)await CZ(J,"tasks-restore",{windowId:z.windowId}),Y=await D6(J,"tasks",z.windowId);if(!Y)return"";return await m0(["select-pane","-t",Y]),Y}var og="#{client_name}\t#{client_session}\t#{client_width}\t#{client_height}\t#{client_flags}",eg,hj,JN="#{window_id}\t#{window_active}\t#{@kobe_role}\t#{@kobe_worktree}\t#{@kobe_vendor}";var zJ=C(()=>{YY();eJ();t1();Fz();dq();v1();DK();_q();pq();Uz();XH();VH();KZ();PY();AG();wX();v1();VH();wX();PY();eg={"-L":"pane_at_left","-D":"pane_at_bottom","-U":"pane_at_top","-R":"pane_at_right"};hj=new Map});var oX={};Q1(oX,{windowIsSurface:()=>fN,windowCount:()=>XN,tmuxSessionName:()=>C1,tmuxCommandSequence:()=>ij,tmuxAvailable:()=>mz,tmuxArgs:()=>bZ,tagPaneRole:()=>b6,tagClaudePane:()=>HN,switchClientBeforeKill:()=>cz,setWindowOption:()=>hY,setSessionOption:()=>qY,sessionExists:()=>V1,sendKeys:()=>MH,sendKeyName:()=>uX,runTmuxSequenceCapturing:()=>_X,runTmuxSequence:()=>l1,runTmuxCapturing:()=>$0,runTmux:()=>m0,readLayoutGeometry:()=>vz,paneIdByRole:()=>$j,newWindow:()=>gz,killSession:()=>zz,globalTasksPaneWidth:()=>DH,getSessionOptions:()=>yJ,getSessionOption:()=>kZ,getServerOptions:()=>k6,getServerOption:()=>QN,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:()=>S6,CLAUDE_ROLE_OPTION:()=>qN,CHAT_TAB_SESSION_ID_OPTION:()=>hz});import{homedir as ZN}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 m0(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 GN(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:m0(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 GN(["has-session","-t",`=${J}`])===0}async function XN(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 m0(["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 QN(J){let{code:z,stdout:Y}=await $0(["show-options","-sqv",J]);return z===0?Y.trim():""}async function k6(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 k6(vV))}async function b6(J,z){await m0(["set-option","-p","-t",J,rX,z])}async function hY(J,z,Y){await m0(["set-window-option","-t",J,z,Y])}async function HN(J){await b6(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 m0(["send-keys","-t",J,"-l","--",z])}async function uX(J,z){await m0(["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 m0(Y)}async function fN(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 m0(["kill-session","-t",`=${z}`])}if(await V1(J))await m0(["kill-session","-t",`=${J}`])}async function OH(){let J=S6;if(await V1(J)){if(await kZ(J,C6)==="tasks")return J;await m0(["kill-session","-t",`=${J}`])}let Y=(await $0(["new-session","-d","-s",J,"-c",CG,"-x","220","-y","50","-P","-F","#{pane_id}",dV()])).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,C6,"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",S6="kobe-home",C6="@kobe_home";var v1=C(()=>{YY();KZ();Uz();Nz=process.env.KOBE_TMUX_SOCKET?.trim()||"kobe";CG=ZN()||"/";qN=rX});async function jN(J,z=I6){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 BN(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 WN(J){let{code:z,stdout:Y}=await J.capture(["show-window-options","-g","automatic-rename"]);return z===0&&/\boff\b/.test(Y)}async function VN(J,z,Y,Z){return await Z.run(["rename-window","-t",`=${J}:${z}`,"--",Y])===0}async function y6(J,z=KN){let Y=0,Z=null,G=async(X,Q)=>{if(Q.autoRename==="1")return!1;if(Q.autoRename==="0"){if(Z===null)Z=await WN(z.runner);if(!Z)return!0}return BN(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 jN(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 VN(Q,V.index,B,z.runner))Y++}catch{}}return Y}var I6,KN;var T6=C(()=>{gq();v1();tJ();I6={capture:$0,run:m0};KN={runner:I6,titleFromSessionId:I7,titleFromWorktree:eZ}});function u6(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 x6(J,z,Y=new Date){let Z=u6(z);return`[${Y.toISOString()}] daemon ${J}: ${Z.stack??`${Z.name}: ${Z.message}`}
62
+ `}function UN(J,z,Y=new Date){let Z=u6(z);return`[${Y.toISOString()}] daemon error [${J}]: ${Z.stack??`${Z.name}: ${Z.message}`}
63
+ `}function y1(J,z){process.stderr.write(UN(J,z))}function DN(J,z,Y=new Date){return`[${Y.toISOString()}] daemon [${J}]: ${z}
64
+ `}function dz(J,z){process.stderr.write(DN(J,z))}function E6(J=(z)=>process.stderr.write(z)){if(_j||pj)return;_j=(z)=>J(x6("unhandledRejection",z)),pj=(z)=>J(x6("uncaughtException",z)),process.on("unhandledRejection",_j),process.on("uncaughtException",pj)}var _j,pj;async function LN(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 w6(J,z=rj,Y){if(z<=0)return()=>{};let Z=!1,X=setInterval(()=>{if(Y&&!Y())return;if(Z)return;Z=!0,LN(J).then(()=>y6(J)).catch((Q)=>y1("auto-title-poller",Q)).finally(()=>{Z=!1})},z);return X.unref?.(),()=>clearInterval(X)}var rj=4000;var P6=C(()=>{gq();kX();T6();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 h6(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 v6=C(()=>{SX()});import{createHash as FN}from"crypto";import{homedir as MN}from"os";import mY from"path";function NN(){return mY.join(process.env.KOBE_HOME_DIR??MN(),".kobe")}function CN(J){let Y=(mY.basename(J)||"repo").replace(/[^a-zA-Z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"repo",Z=FN("sha1").update(mY.resolve(J)).digest("hex").slice(0,12);return`${Y}-${Z}`}function kN(J){if(!mY.isAbsolute(J))throw Error(`worktreeRootFor: repo must be an absolute path, got: ${J}`);return mY.join(NN(),ON,CN(J))}function bN(J){if(!mY.isAbsolute(J))throw Error(`managedWorktreeRootsFor: repo must be an absolute path, got: ${J}`);return[kN(J),...gN.map((z)=>mY.join(J,z))]}function nz(J){return J.length>1&&J.endsWith("/")?J.slice(0,-1):J}function m6(J,z){return z===J||z.startsWith(`${J}/`)}function c6(J,z){let Y=nz(z),Z,G=-1;for(let X of J){if(!X.worktreePath)continue;let Q=nz(X.worktreePath);if(m6(Q,Y)&&Q.length>G)G=Q.length,Z=X.id}return Z}function d6(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(m6(Q,Y)&&Q.length>G)G=Q.length,Z=Q}return Z}function n6(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 bN(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 ON="worktrees",AN=".kobe/worktrees",RN=".claude/worktrees",gN;var i6=C(()=>{gN=[AN,RN]});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(!g7(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=d6(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=n6(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?c6(Y.orch.listTasks(),X):void 0);if(!Q)return{};let H=SN(z);if(Y.activity.report(Q,Z,H),Z==="turn-start")h6(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 SN(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();v6();tJ();AJ();i6();YZ()});import{execFile as IN}from"child_process";import{mkdir as yN,readFile as TN,realpath as l6,rename as xN,stat as uN,writeFile as EN}from"fs/promises";import{homedir as wN}from"os";import{dirname as PN,isAbsolute as hN,join as vN,resolve as $6}from"path";import{promisify as mN}from"util";function cN(J){return(J instanceof Error?J.message:String(J)).includes("not a git repository")}function gH(J=process.env.KOBE_HOME_DIR??wN()){return vN(J,".kobe","issues.json")}function _6(J){return typeof J==="string"&&a6.includes(J)}function dN(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:_6(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 nN(){return{version:1,repos:{}}}function iN(){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 lN(J){let{stdout:z}=await HB("git",["-C",J,"rev-parse","--git-common-dir"]),Y=z.trim();return l6(hN(Y)?Y:$6(J,Y))}async function $N(J){let{stdout:z}=await HB("git",["-C",J,"rev-parse","--show-toplevel"]);return z.trim()}async function aN(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?l6(Y):$N(J)}async function ZB(J){if(typeof J!=="string"||J.length===0)throw Error("repoRoot is required");let z=$6(J);if(!(await uN(z).catch(()=>null))?.isDirectory())throw Error("repoRoot does not exist");try{let[Z,G]=await Promise.all([aN(z),lN(z)]);return{repoRoot:Z,repoKey:G}}catch(Z){if(cN(Z))throw Error("repoRoot is not a git repository");throw Z}}async function GB(J){try{let z=JSON.parse(await TN(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(dN).filter((Q)=>Q!==null):[]}}return{version:1,repos:Y}}catch(z){if(z.code==="ENOENT")return nN();throw z}}async function XB(J,z){await yN(PN(J),{recursive:!0});let Y=`${J}.tmp`;await EN(Y,`${JSON.stringify(z,null,2)}
65
+ `,"utf8"),await xN(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:iN(),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(!_6(Q.status))throw Error(`invalid status: must be one of ${a6.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,a6,RH;var fB=C(()=>{HB=mN(IN),a6=["open","doing","hold","done"];RH=new Map});import{lstat as p6,readdir as _N,realpath as pN,stat as rN}from"fs/promises";import{join as oN,relative as sN,resolve as r6,sep as tN}from"path";import{Readable as eN}from"stream";function J5(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&&!o6.includes(Y))throw Error(`readdirp: Invalid type passed. Use one of ${o6.join(", ")}`);return z.root=J,new BB(z)}var cJ,jB,e6="READDIRP_RECURSIVE_ERROR",JC,o6,zC,YC,ZC=(J)=>JC.has(J.code),GC,s6=(J)=>!0,t6=(J)=>{if(J===void 0)return s6;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 s6},BB;var z5=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);JC=new Set(["ENOENT","EPERM","EACCES","ELOOP",e6]),o6=[cJ.DIR_TYPE,cJ.EVERYTHING_TYPE,cJ.FILE_DIR_TYPE,cJ.FILE_TYPE],zC=new Set([cJ.DIR_TYPE,cJ.EVERYTHING_TYPE,cJ.FILE_DIR_TYPE]),YC=new Set([cJ.EVERYTHING_TYPE,cJ.FILE_DIR_TYPE,cJ.FILE_TYPE]),GC=process.platform==="win32";BB=class BB extends eN{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=t6(z.fileFilter),this._directoryFilter=t6(z.directoryFilter);let G=z.lstat?p6:rN;if(GC)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?zC.has(Z):!1,this._wantsFile=Z?YC.has(Z):!1,this._wantsEverything=Z===cJ.EVERYTHING_TYPE,this._root=r6(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 _N(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=r6(oN(z,Z));Y={path:sN(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(ZC(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 pN(Y),G=await p6(Z);if(G.isFile())return"file";if(G.isDirectory()){let X=Z.length;if(Y.startsWith(Z)&&Y.substr(X,1)===tN){let Q=Error(`Circular symlink detected: "${Y}" points to "${Z}"`);return Q.code=e6,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 XC,unwatchFile as Y5,watchFile as QC}from"fs";import{realpath as WB,lstat as qC,open as HC,stat as G5}from"fs/promises";import{type as fC}from"os";import*as u1 from"path";function Z5(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 XC(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&&FC(G)?Y.binaryInterval:Y.interval,f=AC(J,Q,H,{listener:z,rawEmitter:this.fsw._emitRaw})}else f=OC(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(KC,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(Cz.CHANGE,J,B);if((BC||WC||VC)&&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(jC,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 UC[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 jC="data",UB="end",X5="close",SH=()=>{},IH,DB,BC,WC,VC,Q5,x1,Cz,KC="watch",UC,SZ="listeners",CH="errHandlers",kG="rawEmitters",DC,LC,FC=(J)=>LC.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)},MC=(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)})},OC=(J,z,Y,Z)=>{let{listener:G,errHandler:X,rawEmitter:Q}=Z,H=kH.get(z),f;if(!Y.persistent){if(f=Z5(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=Z5(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 HC(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),DC.forEach(MC(H)),H.watcher=void 0,Object.freeze(H)}},VB,AC=(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))Y5(z),Q=void 0;if(Q)eX(Q,SZ,G),eX(Q,kG,X);else Q={listeners:G,rawEmitters:X,options:Y,watcher:QC(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),Y5(z),Q.options=Q.watcher=void 0,Object.freeze(Q)}};var H5=C(()=>{IH=process.platform,DB=IH==="win32",BC=IH==="darwin",WC=IH==="linux",VC=IH==="freebsd",Q5=fC()==="OS400",x1={ALL:"all",READY:"ready",ADD:"add",CHANGE:"change",ADD_DIR:"addDir",UNLINK:"unlink",UNLINK_DIR:"unlinkDir",RAW:"raw",ERROR:"error"},Cz=x1,UC={lstat:qC,stat:G5},DC=[SZ,CH,kG],LC=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 RC}from"events";import{stat as gC,Stats as qd}from"fs";import{readdir as NC,stat as CC}from"fs/promises";import*as H1 from"path";function yH(J){return Array.isArray(J)?J:[J]}function xC(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 uC(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(K5,"/"),z)J="/"+J;return J}function f5(J,z,Y){let Z=uC(z);for(let G=0;G<J.length;G++){let X=J[G];if(X(Z,Y))return!0}return!1}function EC(J,z){if(J==null)throw TypeError("anymatch: specify first argument");let Z=yH(J).map((G)=>xC(G));if(z==null)return(G,X)=>{return f5(Z,G,X)};return f5(Z,z)}class D5{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!==V5&&J!==bC)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 NC(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=PC,Object.freeze(this)}}class L5{fsw;path;watchPath;fullWatchPath;dirParts;followSymlinks;statMethod;constructor(J,z,Y){this.fsw=Y;let Z=J;this.path=J=J.replace(TC,""),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?hC:vC}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 M5(J,z={}){let Y=new F5(z);return Y.add(J),Y}var FB="/",kC="//",V5=".",bC="..",SC="string",IC,K5,yC,TC,MB=(J)=>typeof J==="object"&&J!==null&&!(J instanceof RegExp),j5=(J)=>{let z=yH(J).flat();if(!z.every((Y)=>typeof Y===SC))throw TypeError(`Non-string provided as watch path: ${z}`);return z.map(U5)},B5=(J)=>{let z=J.replace(IC,FB),Y=!1;if(z.startsWith(kC))Y=!0;if(z=z.replace(K5,FB),Y)z=FB+z;return z},U5=(J)=>B5(H1.normalize(B5(J))),W5=(J="")=>(z)=>{if(typeof z==="string")return U5(H1.isAbsolute(z)?z:H1.join(J,z));else return z},wC=(J,z)=>{if(H1.isAbsolute(J))return J;return H1.join(z,J)},PC,hC="stat",vC="lstat",F5;var O5=C(()=>{z5();H5();/*! chokidar - MIT License (c) 2012 Paul Miller (paulmillr.com) */IC=/\\/g,K5=/\/\//g,yC=/\..*\.(sw[px])$|~$|\.subl.*\.tmp/,TC=/^\.[/\\]/;PC=Object.freeze(new Set);F5=class F5 extends RC{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(Q5)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=j5(J);if(Z)G=G.map((X)=>{return wC(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=j5(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)||V5;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 CC(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){gC(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&&yC.test(J))return!0;if(!this._userIgnored){let{cwd:Y}=this.options,G=(this.options.ignored||[]).map(W5(Y)),Q=[...[...this._ignoredPaths].map(W5(Y)),...G];this._userIgnored=EC(Q,void 0)}return this._userIgnored(J,z)}_isntIgnored(J,z){return!this._isIgnored(J,z)}_getWatchHelpers(J){return new L5(J,this.options.followSymlinks,this)}_getWatchedDir(J){let z=H1.resolve(J);if(!this._watched.has(z))this._watched.set(z,new D5(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=J5(J,Y);return this._streams.add(Z),Z.once(X5,()=>{Z=void 0}),Z.once(UB,()=>{if(Z)this._streams.delete(Z),Z=void 0}),Z}}});import{mkdirSync as mC,statSync as cC}from"fs";import{basename as A5,dirname as dC,join as nC}from"path";function TH(J){if(J.debounceMs<=0)return()=>{};let z=dC(J.filePath),Y=new Set([A5(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(A5(V)))return;H()},j=(V)=>{try{let B=cC(nC(z,V));return`${B.mtimeMs}:${B.size}`}catch{return null}};try{mC(z,{recursive:!0});let V=new Map;for(let B of Y)V.set(B,j(B));G=M5(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(()=>{O5()});import{homedir as iC}from"os";import{basename as lC,join as $C}from"path";function RB(J=process.env.KOBE_HOME_DIR??iC()){return $C(J,".kobe","settings","keybindings.yaml")}function R5(J,z={}){let Y=z.debounceMs??AB;if(Y<=0)return()=>{};let Z=z.path??RB(),G=lC(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 g5=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??aC,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 aC=(J,z)=>{let Y=setTimeout(J,z);return Y.unref?.(),()=>clearTimeout(Y)};var N5=()=>{};import{spawn as _C}from"child_process";function zk(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=_C("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 Zk(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 Gk(J,z){let Y=z.tickMs??zQ,Z=z.rand,G={tickMs:Y,settledMs:rC,noPrMs:pC,noRemoteMs:tC,failureBaseMs:oC,failureCapMs:sC,jitterRatio:eC},X=[];for(let Q of J.listTasks()){if(!Zk(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=r7(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 C5(J,z=zQ,Y,Z=Yk){if(z<=0)return()=>{};let G=new Map,X=!1,H=setInterval(()=>{if(Y&&!Y())return;if(X)return;X=!0,Gk(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,pC=300000,rC=600000,oC,sC=900000,tC=1800000,eC=0.2,Jk=1e4,Yk=async(J,z)=>{let Y=new AbortController,Z=!1,G=setTimeout(()=>{Z=!0,Y.abort()},Jk);try{let X=await zk(["pr","view",z,"--json",p7],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 k5=C(()=>{e8();A1();oC=zQ});function Hk(J,z){return J.mtimeMs===z.mtimeMs&&J.completionId===z.completionId&&J.completionAt===z.completionAt}async function fk(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 jk(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 b5{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=jk(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:Xk,slowRetryMs:Qk,minIntervalMs:qk},G=this.options.run??fk,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&&Hk(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 S5(J,z,Y=NB,Z){if(Y<=0)return()=>{};let G=new b5(J,z,{hasSubscribers:Z});G.tick();let X=setInterval(()=>G.tick(),Y);return X.unref?.(),()=>{clearInterval(X),G.stop()}}var NB=1500,Xk=4000,Qk=60000,qk=1500;var I5=C(()=>{Fq();GG();Mq();A1();tJ()});import{readFileSync as Bk}from"fs";import{homedir as Wk}from"os";import{basename as Vk,join as Kk}from"path";function kB(J=process.env.KOBE_HOME_DIR??Wk()){return Kk(J,".config","kobe","state.json")}function y5(J){let z={};try{let j=JSON.parse(Bk(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"&&Dk.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 Lk(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 T5(J,z={}){let Y=z.debounceMs??CB;if(Y<=0)return()=>{};let Z=z.pollMs??Uk,G=z.statePath??kB(),X=Vk(G),Q=y5(G);return J.publish("ui-prefs",Q),TH({filePath:G,matchBasenames:[X],debounceMs:Y,pollMs:Z,onTrigger:()=>{try{let f=y5(G);if(Lk(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,Uk=250,Dk;var x5=C(()=>{OB();Dk=["primary","success","info"]});function bG(J){return IZ.includes(J)?J:"auto"}var IZ,u5,HY="editor.kind",cY="editor.customCommand",xH="auto";var uH=C(()=>{IZ=["auto","vim","nvim","nano","emacs","custom"],u5=["nvim","vim","emacs","nano"]});function TZ(J){return J==="taskpanel"?"taskpanel":"chattab"}var fY="settings.surface",yZ="chattab";function E5(J){return J>="0"&&J<="7"}function P5(J,z){let Y=[],Z="",G=()=>{if(Z.length>0){for(let Q of Fk.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:Mk.decode(new Uint8Array(Y)),end:X}}function xZ(J){if(J.length===0||J[0]!=='"')return J;return P5(J,0).value}function h5(J,z){if(J[0]==='"'){let Z=P5(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 Ok(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=h5(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=h5(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 w5(J){if(J==="-")return null;let z=Number.parseInt(J,10);return Number.isNaN(z)?null:z}function v5(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=Ok(Q);if(H.path.length===0)continue;z.push({path:H.path,...H.origPath!==void 0?{origPath:H.origPath}:{},added:w5(Z.slice(0,G)),deleted:w5(Z.slice(G+1,X))})}return z}var Fk,Mk;var wH=C(()=>{Fk=new TextEncoder,Mk=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 Ak(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 m5(J,z,Y={}){let Z=Ak(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 Rk}from"fs";async function YQ(J,z){let Y=await SG(J,z,{timeoutMs:gk}),Z=Y.status??-1;return{ok:Z===0,stdout:Y.stdout,stderr:Y.stderr,code:Z}}function Ck(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 c5(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 d5(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=c5(X[1]);if(G===null){let Q=Z.match(/^--- (.*)$/m);if(Q)G=c5(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 Wb(J,z,Y){let Z=Array(J.length),X=Math.max(1,Math.min(z,J.length)),G=0;async function Q(){while(G<J.length){let f=G++;Z[f]=await Y(J[f],f)}}return await Promise.all(Array.from({length:X},()=>Q())),Z}async function Vb(J,z){let Y=await sG(J,["diff","--no-color","--no-index","--","/dev/null",z]);if(Y.stdout.trim())return Y.stdout.endsWith(`
69
+ `)}return z}async function kk(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 bk(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 E6(J,z){if(z.pathname!=="/api/diff")return null;if(J.method!=="GET")return Response.json({error:"method not allowed"},{status:405});let Y=z.searchParams.get("worktreePath");if(!Y)return Response.json({error:"missing worktreePath"},{status:400});let Z;try{Z=decodeURIComponent(Y)}catch{return Response.json({error:"invalid worktreePath encoding"},{status:400})}if(!Z.startsWith("/"))return Response.json({error:"worktreePath must be an absolute path"},{status:400});if(!ZX(Z))return Response.json({error:"worktreePath does not exist"},{status:400});if(!XY(Z).isRemote)try{if(!fb(Z).isDirectory())return Response.json({error:"worktreePath is not a directory"},{status:400})}catch{return Response.json({error:"worktreePath does not exist"},{status:400})}let G=await sG(Z,["rev-parse","--is-inside-work-tree"]);if(!G.ok||G.stdout.trim()!=="true")return Response.json({error:`not a git work tree: ${G.stderr.trim()||Z}`},{status:500});let[Q,f,H]=await Promise.all([sG(Z,["status","--porcelain=v1","-z","--untracked-files=all"]),sG(Z,["diff","--no-color"]),sG(Z,["diff","--no-color","--staged"])]);if(!Q.ok)return Response.json({error:`git status failed: ${Q.stderr.trim()}`},{status:500});let B=u6(f.stdout),V=u6(H.stdout),j=Q.stdout.split("\x00"),K=[],L=[];for(let R=0;R<j.length;R++){let x=j[R];if(!x)continue;let a=x[0]??" ",S=x[1]??" ",C=x.slice(3);if(!C)continue;if(a==="R"||a==="C"||S==="R"||S==="C")R++;let M=a==="?"&&S==="?",I=a!==" "&&a!=="?"?a:S,$=a!==" "&&a!=="?",i="";if(M)L.push({fileIndex:K.length,path:C});else if(i=V.get(C)??B.get(C)??"",V.has(C)&&B.has(C))i=`${V.get(C)}${B.get(C)}`;K.push({path:C,status:M?"untracked":jb(I),staged:$,patch:i})}if(L.length>0){let R=await Wb(L,Bb,(x)=>Vb(Z,x.path));for(let x=0;x<L.length;x++)K[L[x].fileIndex].patch=R[x]}K.sort((R,x)=>R.path.localeCompare(x.path));let A=[H.stdout,f.stdout].filter(Boolean).join(`
72
- `),O={files:K,raw:A};return Response.json(O)}var Hb=15000,Bb=8;var w6=b(()=>{Uz();xf();uf()});import{isAbsolute as Kb}from"path";function h6(J){return typeof J==="string"&&J.length>0&&/^[A-Za-z0-9_-]+$/.test(J)}function Db(J){return typeof J==="string"&&J.length>0&&/^[A-Za-z0-9._-]+$/.test(J)&&!J.includes("..")}async function Lb(J){let z=J.searchParams.get("worktreePath"),Y=J.searchParams.get("vendor")??"claude";if(!z||!Kb(z))return Response.json({error:"worktreePath must be an absolute path"},{status:400});if(!h6(Y))return Response.json({error:"invalid vendor"},{status:400});try{let Z=JJ(Y).history,[X,G]=await Promise.all([Z.listSessionIdsForWorktree(z),Z.latestTranscriptMtimeForWorktree(z)]);return Response.json({sessions:X,latestMtime:G})}catch(Z){return Response.json({error:Z instanceof Error?Z.message:String(Z)},{status:500})}}async function Mb(J){let z=J.searchParams.get("vendor")??"claude",Y=J.searchParams.get("sessionId");if(!h6(z))return Response.json({error:"invalid vendor"},{status:400});if(!Db(Y))return Response.json({error:"invalid sessionId"},{status:400});try{let Z=await JJ(z).history.readHistory(Y);return Response.json({messages:Z})}catch(Z){return Response.json({error:Z instanceof Error?Z.message:String(Z)},{status:500})}}async function v6(J,z){if(z.pathname!==P6&&z.pathname!==Ub)return null;if(J.method!=="GET")return Response.json({error:"method not allowed"},{status:405});return z.pathname===P6?Lb(z):Mb(z)}var P6="/api/history/sessions",Ub="/api/history/messages";var m6=b(()=>{kY()});import{mkdir as Fb,readFile as Ob,writeFile as Ab}from"fs/promises";import{join as c6}from"path";function d6(){return c6(fJ(),"notes")}function n6(J){return typeof J==="string"&&J.length>0&&/^[A-Za-z0-9_-]+$/.test(J)}function i6(J){return c6(d6(),`${J}.md`)}async function gb(J){let z=J.searchParams.get("taskId");if(!n6(z))return Response.json({error:"invalid taskId"},{status:400});try{let Y="";try{Y=await Ob(i6(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 Cb(J){let z;try{z=await J.json()}catch{return Response.json({error:"invalid JSON body"},{status:400})}if(!n6(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 Fb(d6(),{recursive:!0}),await Ab(i6(z.taskId),z.markdown,"utf8"),Response.json({ok:!0})}catch(Y){return Response.json({error:Y instanceof Error?Y.message:String(Y)},{status:500})}}async function l6(J,z){if(z.pathname!==Rb)return null;if(J.method==="GET")return gb(z);if(J.method==="PUT")return Cb(J);return Response.json({error:"method not allowed"},{status:405})}var Rb="/api/notes";var $6=b(()=>{o1()});function gj(J,z,Y=[]){if(z===void 0)return null;if(typeof z!=="string")return gj(J,z.dark,Y);if(z==="transparent"||z==="none")return null;if(z.startsWith("#"))return z;if(Y.includes(z))return null;let Z=J.defs?.[z]??J.theme[z];return gj(J,Z,[...Y,z])}function Rj(J){return Math.max(0,Math.min(255,Math.round(J)))}function tG(J,z,Y){let Z=Number.parseInt(J.slice(1),16),X=Number.parseInt(z.slice(1),16),G=(f,H)=>f>>H&255;return`#${(Rj(G(Z,16)+(G(X,16)-G(Z,16))*Y)<<16|Rj(G(Z,8)+(G(X,8)-G(Z,8))*Y)<<8|Rj(G(Z,0)+(G(X,0)-G(Z,0))*Y)).toString(16).padStart(6,"0")}`}function bb(J){let z=(f)=>gj(J,J.theme[f]),Y=z("background"),Z=z("text");if(!Y||!Z)return null;let X=z("textMuted")??tG(Z,Y,0.35),G=z("primary")??Z,Q=z("border")??tG(Z,Y,0.8);return{bg:Y,surface:z("backgroundPanel")??Y,inset:z("backgroundElement")??Y,menu:z("backgroundMenu")??z("backgroundElement")??Y,line:Q,"line-subtle":z("borderSubtle")??Q,"line-active":z("borderActive")??tG(Q,Z,0.3),fg:Z,muted:X,subtle:tG(X,Y,0.35),primary:G,"primary-hover":tG(G,Z,0.35),"kobe-orange":G,"kobe-green":z("success")??Z,"kobe-blue":z("info")??Z,"kobe-red":z("error")??Z,"kobe-yellow":z("warning")??Z,"kobe-violet":z("secondary")??G}}function a6(J,z){if(z.pathname!==Sb)return null;if(J.method!=="GET")return Response.json({error:"method not allowed"},{status:405});return Response.json({themes:kb})}var Nb,kb,Sb="/api/themes";var _6=b(()=>{aq();_q();pq();rq();oq();sq();tq();Nb={claude:jX,conductor:WX,dracula:VX,nord:KX,opencode:UX,"osaka-jade":DX,tokyonight:LX};kb=Object.fromEntries(Object.entries(Nb).map(([J,z])=>[J,bb(z)]).filter((J)=>J[1]!==null))});import{createHash as Ib,randomUUID as Tb}from"crypto";import{mkdir as yb}from"fs/promises";import{join as Cj,resolve as xb}from"path";function wb(J){return Ib("sha1").update(J).digest("hex").slice(0,16)}async function vb(J){let z=Number.parseInt(J.headers.get("content-length")??"",10);if(Number.isFinite(z)&&z>p6)return Response.json({error:"asset too large"},{status:413});let Y;try{Y=await J.formData()}catch{return Response.json({error:"invalid form data"},{status:400})}let Z=Y.get("repoRoot");if(typeof Z!=="string"||Z.length===0)return Response.json({error:"missing repoRoot"},{status:400});let X=Y.get("file");if(!(X instanceof File))return Response.json({error:"file must be a File"},{status:400});if(X.size>p6)return Response.json({error:"asset too large"},{status:413});let G=ub[X.type];if(!G)return Response.json({error:`unsupported content-type: ${X.type||"unknown"}`},{status:415});try{let Q=wb(Z),f=Cj(cH(),Q);await yb(f,{recursive:!0});let B=`${Tb()}.${G}`;return await Bun.write(Cj(f,B),X),Response.json({url:`${Ef}/${Q}/${B}`})}catch(Q){return Response.json({error:Q instanceof Error?Q.message:String(Q)},{status:500})}}async function mb(J){let z=J.slice(Ef.length+1),Y=z.indexOf("/");if(Y<0)return Response.json({error:"not found"},{status:404});let Z=z.slice(0,Y),X=z.slice(Y+1);if(!Pb.test(Z)||!hb.test(X))return Response.json({error:"invalid asset path"},{status:400});let G=cH(),Q=xb(G,Z,X);if(Q!==Cj(G,Z,X)||!Q.startsWith(`${G}/`))return Response.json({error:"invalid asset path"},{status:400});let f=X.slice(X.lastIndexOf(".")+1).toLowerCase(),H=Eb[f];if(!H)return Response.json({error:"invalid asset path"},{status:400});let B=Bun.file(Q);if(!await B.exists())return Response.json({error:"not found"},{status:404});return new Response(B,{headers:{"content-type":H,"cache-control":"public, max-age=31536000, immutable","x-content-type-options":"nosniff"}})}async function r6(J,z){if(z.pathname===Ef){if(J.method==="POST")return vb(J);return Response.json({error:"method not allowed"},{status:405})}if(z.pathname.startsWith(`${Ef}/`)){if(J.method==="GET")return mb(z.pathname);return Response.json({error:"method not allowed"},{status:405})}return null}var Ef="/api/issue-assets",p6=10485760,ub,Eb,Pb,hb;var o6=b(()=>{o1();ub={"image/png":"png","image/jpeg":"jpg","image/gif":"gif","image/webp":"webp"},Eb={png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",webp:"image/webp"};Pb=/^[a-f0-9]{16}$/,hb=/^[A-Za-z0-9_-]+\.[a-z0-9]+$/});function s6(J,z=500){return Response.json({error:J instanceof Error?J.message:String(J)},{status:z})}function t6(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 cb(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 s6(Z,t6(Z))}}async function db(J,z){let Y;try{Y=await z.json()}catch{return Response.json({error:"invalid JSON body"},{status:400})}if(Y===null||typeof Y!=="object"||Array.isArray(Y))return Response.json({error:"body must be a JSON object"},{status:400});let Z=Y;if(typeof Z.repoRoot!=="string"||Z.repoRoot.length===0)return Response.json({error:"missing repoRoot"},{status:400});try{return Response.json(await J.request("issue.mutate",{repoRoot:Z.repoRoot,op:Z.op}))}catch(X){return s6(X,t6(X))}}async function e6(J,z,Y){if(z.pathname!=="/api/issues")return null;if(J.method==="GET")return cb(Y,z);if(J.method==="POST")return db(Y,J);return Response.json({error:"method not allowed"},{status:405})}function JU(J){return nb.has(String(J??"").trim().toLowerCase())}function zU(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 ib(J){let z=zU(J);return z!==null&&JU(z)}function YU(J,z={}){if(!J)return!0;if(ib(J))return!0;let Y=z.allowedHost?.trim();if(!Y)return!1;let Z=zU(J);return Z!==null&&Z===Y}function ZU(J){let z=String(J??"").trim();return z&&!JU(z)?z:void 0}var nb;var XU=b(()=>{nb=new Set(["localhost","127.0.0.1","::1","[::1]"])});var lb,GU;var QU=b(()=>{lb=["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"],GU=new Set(lb)});var Pf={};f1(Pf,{resolveRepoInit:()=>HU,resolveEngineLaunchInit:()=>kX});import{existsSync as fU,readFileSync as $b}from"fs";import{join as wf}from"path";function _b(J){return fU(wf(J,qU))?`sh ${qU}`:void 0}function pb(J){let z=wf(J,ab);if(!fU(z))return;try{let Y=$b(z,"utf8");return Y.trim().length>0?Y:void 0}catch{return}}function HU(J,z){let Y=J?tH(J):{},Z=_b(z)??Y.initScript,X=pb(z)??Y.initPrompt;return{initScript:Z&&Z.trim().length>0?Z:void 0,initPrompt:X&&X.trim().length>0?X:void 0}}function rb(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 kX(J,z,Y={kind:"repo-init"}){let Z=HU(J,z);return{initScript:Z.initScript,firstMessage:rb(Y,Z)}}var qU,ab;var SX=b(()=>{A1();qU=wf(".kobe","init.sh"),ab=wf(".kobe","init-prompt.md")});async function ob(J,z){let{task:Y}=await J.request("task.get",{taskId:z});return Y}async function Nj(J,z){let Y=await ob(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 BU(J,z){let{task:Y,worktreePath:Z}=await Nj(J,z),X=N1(z);if(!await V1(X)){let G=kX(Y.repo??"",Z,{kind:"repo-init"});if(!await iG({name:X,cwd:Z,command:oJ(Y.vendor,Y.modelEffort),taskId:z,vendor:Y.vendor,launchInit:G}))throw Error(`failed to start tmux session for ${z}`)}return{session:X,worktreePath:Z}}function sb(J){return Zq(J,{bareSafe:!0})}async function jU(J,z){let{task:Y,worktreePath:Z}=await Nj(J,z),X=Y.kind==="main"?void 0:z,G=Y.kind==="main"?z:void 0,Q=[...vq(hq(oJ(Y.vendor,Y.modelEffort),Y.vendor,X),Y.vendor,G)],f=kX(Y.repo??"",Z,{kind:"none"}),H=sb(Q),B=f.initScript?.trim()?`${f.initScript}
73
- ${H}`:H,V=process.env.SHELL?.trim()||"/bin/zsh";return{cwd:Z,command:[V,"-ilc",B]}}async function WU(J,z){let{worktreePath:Y}=await Nj(J,z),Z=process.env.SHELL?.trim()||"/bin/zsh";return{cwd:Y,command:[Z,"-il"]}}async function VU(J){let z=N1(J);await hz(z).catch(()=>{}),await eJ(z).catch(()=>{})}var KU=b(()=>{sJ();V8();SX();h1();YJ()});import{existsSync as tb}from"fs";import{join as UU,normalize as MU}from"path";function eb(J){let z=null,Y=null,Z=new TextEncoder,X=new ReadableStream({start(G){z=J((f,H)=>{try{G.enqueue(Z.encode(`event: ${f}
74
- data: ${JSON.stringify(H)}
75
-
76
- `))}catch{}}),Y=setInterval(()=>{try{G.enqueue(Z.encode(`: ping
77
-
78
- `))}catch{}},15000)},cancel(){if(Y)clearInterval(Y);z?.()}});return new Response(X,{headers:{"content-type":"text/event-stream","cache-control":"no-cache, no-transform",connection:"keep-alive"}})}async function Jk(J,z,Y){try{let{name:Z,payload:X}=await J.json();if(!Z)return Response.json({error:"missing rpc name"},{status:400});if(!GU.has(Z))return Response.json({error:`rpc ${Z} is not exposed to the web UI`},{status:403});let G=await z.request(Z,X),Q=X?.taskId;if(typeof Q==="string"){let f=Z==="task.archive"&&X.archived!==!1;if(Z==="task.delete"||f)Y(Q)}return Response.json({result:G})}catch(Z){let X=Z instanceof Error&&Z.name!=="Error"?Z.name:void 0;return Response.json({error:Z instanceof Error?Z.message:String(Z),...X?{name:X}:{}},{status:500})}}async function zk(){try{let z=(await zY()).map((Y)=>({id:Y,label:KZ(Y),effortLevels:JJ(Y).effortLevels}));return Response.json({engines:z.length>0?z:[{id:"claude",label:"Claude"}]})}catch(J){return Response.json({error:J instanceof Error?J.message:String(J)},{status:500})}}function Yk(){return Response.json({api:UZ()})}function Zk(){return Response.json({projects:gJ()})}function vY(J,z=""){return typeof J==="string"?J:z}function Xk(J,z){return typeof J==="boolean"?J:z}function gU(J){let z=J.customEngineIds;if(!Array.isArray(z))return[];return z.filter((Y)=>typeof Y==="string"&&RU.test(Y)&&!qJ(Y))}function Gk(J){return J.split(/[-_]+/).filter(Boolean).map((z)=>`${z.slice(0,1).toUpperCase()}${z.slice(1)}`).join(" ")}function Qk(J,z){return vY(J[Lz(z)]).trim()||KZ(z)}function qk(J,z){return vY(J[Dz(z)]).trim()||NG(z).join(" ")}function CU(){let J=RJ(),z=gU(J),Y=[...pY,...z],Z=vY(J.lastSelectedVendor,"claude"),X=vY(J.focusAccent,"primary");return Response.json({activeTheme:vY(J.activeTheme,"claude"),transparentBackground:Xk(J.transparentBackground,!1),focusAccent:AU.includes(X)?X:"primary",notificationsToast:J["notifications.toast.enabled"]!==!1,notificationsSound:J["notifications.sound.enabled"]!==!1,settingsSurface:SZ(J[fY]??kZ),editorKind:NX(J[qY]??If),editorCustomCommand:vY(J[PY]),remoteProjects:J["experimental.remoteProjects"]===!0,autoStatus:J[WZ]===!0,dispatcher:J[VZ]===!0,defaultEngine:Z,engines:Y.map((G)=>({id:G,label:Qk(J,G),command:qk(J,G),isBuiltin:qJ(G),isCustom:!qJ(G),isDefault:G===Z}))})}function eG(J,z,Y){if(typeof Y==="string")J[z]=Y.trim()}function IX(J,z,Y){if(typeof Y==="boolean")J[z]=Y}async function fk(J){try{let z=await J.json(),Y={};if(eG(Y,"activeTheme",z.activeTheme),IX(Y,"transparentBackground",z.transparentBackground),AU.includes(z.focusAccent))Y.focusAccent=z.focusAccent;if(IX(Y,"notifications.toast.enabled",z.notificationsToast),IX(Y,"notifications.sound.enabled",z.notificationsSound),z.settingsSurface==="chattab"||z.settingsSurface==="taskpanel")Y[fY]=z.settingsSurface;if(bZ.includes(z.editorKind))Y[qY]=z.editorKind;eG(Y,PY,z.editorCustomCommand),IX(Y,"experimental.remoteProjects",z.remoteProjects),IX(Y,WZ,z.autoStatus),IX(Y,VZ,z.dispatcher),eG(Y,"lastSelectedVendor",z.defaultEngine);let Z=RJ(),X=gU(Z),G=new Set([...pY,...X]),Q=Array.isArray(z.engineUpdates)?z.engineUpdates:[];for(let f of Q){if(!f||typeof f!=="object")continue;let H=f;if(typeof H.id!=="string"||!G.has(H.id))continue;eG(Y,Dz(H.id),H.command),eG(Y,Lz(H.id),H.label)}if(z.addEngine&&typeof z.addEngine==="object"){let f=z.addEngine,H=typeof f.id==="string"?f.id.trim().toLowerCase():"";if(!RU.test(H)||qJ(H)||G.has(H))return Response.json({error:"invalid or duplicate engine id"},{status:400});Y.customEngineIds=[...X,H],Y[Dz(H)]=vY(f.command).trim();let B=vY(f.label).trim();Y[Lz(H)]=B&&B!==H?B:Gk(H)}if(typeof z.removeEngine==="string"){let f=z.removeEngine;if(!qJ(f)){if(Y.customEngineIds=X.filter((H)=>H!==f),Y[Dz(f)]=void 0,Y[Lz(f)]=void 0,Z.lastSelectedVendor===f)Y.lastSelectedVendor="claude"}}if(Object.keys(Y).length>0)FY(Y);return CU()}catch(z){return Response.json({error:z instanceof Error?z.message:String(z)},{status:400})}}async function Hk(J,z){try{let{taskId:Y}=await J.json();if(!Y)return Response.json({error:"missing taskId"},{status:400});return Response.json(await BU(z,Y))}catch(Y){return Response.json({error:Y instanceof Error?Y.message:String(Y)},{status:500})}}async function DU(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 NU(){return Response.json({review:C1(hf.review)??null,pr:C1(hf.pr)??null})}async function Bk(J){try{let z=await J.json();if(typeof z.review==="string")s1(hf.review,z.review);if(typeof z.pr==="string")s1(hf.pr,z.pr);return NU()}catch(z){return Response.json({error:z instanceof Error?z.message:String(z)},{status:400})}}async function jk(J,z){let Z=MU(UU(z,J==="/"?"/index.html":J));if(!Z.startsWith(z))return new Response("forbidden",{status:403});let X=Bun.file(tb(Z)?Z:UU(z,"index.html"));if(!await X.exists())return new Response("kobe web assets not built \u2014 run `bun --filter kobe-web build`",{status:503});return new Response(X)}function Wk(J){let{link:z,sseSends:Y,staticDir:Z}=J,X=J.tearDownSession??((G)=>void VU(G));return async function(Q){let f=new URL(Q.url);if(f.pathname===OU)return new Response(FU);if(!YU(Q.headers.get("origin"),{allowedHost:J.allowedHost}))return new Response("forbidden: cross-origin request rejected",{status:403});if(f.pathname==="/events")return eb((A)=>{let O=J.onSseOpen?.()??(()=>{});return A("snapshot",z.snapshot()),Y.add(A),()=>{Y.delete(A),O()}});if(f.pathname==="/api/rpc"&&Q.method==="POST")return Jk(Q,z,X);if(f.pathname==="/api/session"&&Q.method==="POST")return Hk(Q,z);if(f.pathname==="/api/engine-spec"&&Q.method==="GET")return DU(f,z,jU);if(f.pathname==="/api/terminal-spec"&&Q.method==="GET")return DU(f,z,WU);if(f.pathname==="/api/engines"&&Q.method==="GET")return zk();if(f.pathname==="/api/cli-invocation"&&Q.method==="GET")return Yk();if(f.pathname==="/api/projects"&&Q.method==="GET")return Zk();if(f.pathname==="/api/settings"&&Q.method==="GET")return CU();if(f.pathname==="/api/settings"&&Q.method==="PATCH")return fk(Q);if(f.pathname==="/api/quick-prompts"&&Q.method==="GET")return NU();if(f.pathname==="/api/quick-prompts"&&Q.method==="PUT")return Bk(Q);let H=await l6(Q,f);if(H)return H;let B=await E6(Q,f);if(B)return B;let V=await v6(Q,f);if(V)return V;let j=await e6(Q,f,z);if(j)return j;let K=await r6(Q,f);if(K)return K;let L=a6(Q,f);if(L)return L;if(Z)return jk(f.pathname,Z);return new Response("not found",{status:404})}}function TZ(J,z){let Y=J.snapshot().find((Z)=>Z.channel===z);return Y?Y.payload:null}function bj(J){return J.length>1?J.replace(/\/+$/,""):J}function Vk(J,z){let Y=bj(z),Z=new Set([z]);for(let X of J){let G=bj(X.repo),Q=bj(X.worktreePath);if(G===Y||Q===Y){if(X.repo)Z.add(X.repo);if(X.worktreePath)Z.add(X.worktreePath)}}return[...Z]}function bU(J){let z=_G();return{async request(Y,Z){return await aG(z,Y,Z,J.ctx(0))},snapshot(){let Y=J.orch.listTasks().map(fz),Z={},X=TZ(J.bus,"issue.snapshot");if(X)for(let f of Vk(Y,X.repoRoot))Z[f]={...X,repoRoot:f};let G=TZ(J.bus,"task.jobs"),Q=G?.phase==="running"?{[G.taskId]:G}:{};return{tasks:Y,activeTaskId:TZ(J.bus,"active-task")?.taskId??null,engineStates:J.activity.snapshotByTask(),update:TZ(J.bus,"update")?.info??null,jobs:Q,worktreeChanges:TZ(J.bus,"worktree.changes")?.changes??{},issueSnapshots:Z,deliver:TZ(J.bus,"session.deliver"),uiPrefs:TZ(J.bus,"ui-prefs"),connected:!0}}}}async function LU(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 Kk(J,z=OU){let Y;try{Y=(await(await fetch(`http://localhost:${J}${z}`,{signal:AbortSignal.timeout(800)})).text()).trim()}catch{return}if(Y!==FU)throw Error(`port ${J} is in use by a non-kobe service; refusing to replace it`);let Z=await LU(J);for(let G of Z)try{process.kill(G,"SIGTERM")}catch{}let X=Date.now()+2000;while(Date.now()<X){if((await LU(J)).length===0)return;await new Promise((G)=>setTimeout(G,100))}}async function kU(J){if(J.takeover!==!1)await Kk(J.port);let z=new Set,Y=J.onEvent((f)=>{for(let H of z)H("channel",f)}),Z=J.hostname?.trim()||process.env.KOBE_WEB_HOST?.trim()||"127.0.0.1",X=ZU(Z),G=Wk({link:J.link,sseSends:z,staticDir:J.staticDir?MU(J.staticDir):void 0,allowedHost:X,onSseOpen:J.onSseOpen}),Q=Bun.serve({port:J.port,hostname:Z,idleTimeout:0,fetch:G});return{port:Q.port??J.port,hostname:Z,close(){Y(),Q.stop(!0)}}}var FU="kobe-web",OU="/__kobe_web",AU,RU,hf;var SU=b(()=>{ZZ();sJ();kY();CG();Pq();A1();eY();Tf();$1();w6();m6();$6();_6();Mf();JZ();o6();XU();QU();KU();AU=["primary","success","info"],RU=/^[a-z][a-z0-9_-]{0,47}$/;hf={review:"boardPrompt.review",pr:"boardPrompt.pr"}});var IU={};f1(IU,{sameWorktreeChanges:()=>cz,readWorktreeChanges:()=>Dk,pickPushedChanges:()=>mf,parsePorcelain:()=>TX});import{spawnSync as Uk}from"child_process";function cz(J,z){return J.added===z.added&&J.deleted===z.deleted}function mf(J,z){if(!J)return null;return J.get(z)??vf}function Dk(J){if(!J)return vf;try{let z=Uk("git",["status","--porcelain=v1"],{cwd:J,encoding:"utf8",stdio:["ignore","pipe","pipe"],env:cJ()});if(z.status!==0||!z.stdout)return vf;return TX(z.stdout)}catch{return vf}}function TX(J){let z=0,Y=0;for(let{x:Z,y:X}of yf(J))if(Z==="D"||X==="D")Y+=1;else z+=1;return{added:z,deleted:Y}}var vf;var yX=b(()=>{hY();xf();vf={added:0,deleted:0}});async function Ok(J,z){let Y=await ZY("git",["status","--porcelain=v1"],{cwd:J,env:cJ(),signal:z});if(Y.status!==0)throw Error("git status failed");return TX(Y.stdout)}function Ak(J){let z=new Set;for(let Y of J){if(Y.archived)continue;if(!Y.worktreePath)continue;if(a1(Y.repo)||a1(Y.worktreePath))continue;z.add(Y.worktreePath)}return z}class TU{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=Ak(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){T1("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:Lk,slowRetryMs:Mk,minIntervalMs:Fk},Z=this.options.run??Ok;JX(z,Y,(X)=>Z(J,X),(X)=>{if(this.stopped)return;if(this.entries.get(J)!==z)return;if(z.value&&cz(z.value,X))return;z.value=X,this.publish()})}publish(){let J={};for(let[z,Y]of this.entries)if(Y.value)J[z]=Y.value;this.bus.publish("worktree.changes",{changes:J})}}function yU(J,z,Y=kj,Z){if(Y<=0)return()=>{};let X=new TU(J,z,{hasSubscribers:Z});X.tick();let G=setInterval(()=>X.tick(),Y);return G.unref?.(),()=>{clearInterval(G),X.stop()}}var kj=2000,Lk=4000,Mk=60000,Fk=1500;var xU=b(()=>{hY();zX();A1();yX()});import{mkdir as uU,readFile as Rk,unlink as Sj,writeFile as gk}from"fs/promises";import{createServer as Ck}from"net";import{dirname as EU}from"path";import{StringDecoder as Nk}from"string_decoder";function kk(){let J=process.env.KOBE_DAEMON_IDLE_GRACE_MS;if(J===void 0)return wU;let z=Number(J);return Number.isFinite(z)&&z>=0?z:wU}async function hU(J,z={}){let Y=z.socketPath??Iz(z.homeDir),Z=z.pidPath??ez(z.homeDir),X=z.startedAt??new Date,G=new Set,Q=new Set,f=1,H=new Lj({clients:function*(){yield*G,yield*Q},idleGraceMs:kk(),onIdleStop:()=>void f0().catch((P)=>T1("daemon-idle-shutdown",P))}),B=new $B;B.onPublish((P)=>{PU(G,{type:"event",name:P.channel,payload:P.payload})});let j=new m8(B,void 0,void 0,async(P)=>{let N=J.getTask(P);if(!N?.worktreePath)return;return rZ(N.vendor??_1,N.worktreePath)}),K=new Af(Of(z.homeDir));await uU(EU(Y),{recursive:!0}),await uU(EU(Z),{recursive:!0}),await Sj(Y).catch(()=>{});let L=Ck((P)=>{let N={id:f++,connectedAt:new Date,socket:P,writer:new lB(P),buffer:"",subscribed:!1,holdsLifetime:!1,channels:null};G.add(N);let p=new Nk("utf8");P.on("data",(u)=>{N.buffer+=p.write(u),t(N)}),P.on("error",()=>{}),P.on("close",()=>{if(G.delete(N),N.subscribed)vz("conn",`client #${N.id} (${N.holdsLifetime?"gui":"pane"}) disconnected \u2014 ${G.size} client(s), ${H.guiCount()} gui left`);H.clientDisconnected(N.holdsLifetime)})}),A=J.subscribeTasks((P)=>{B.publish("task.snapshot",{tasks:P.map(fz)})}),O=z.checkUpdate??zG,R=z.updatePollMs??bk,x=()=>{O().then((P)=>B.publish("update",{info:P})).catch((P)=>T1("update-poller",P))},a=null;if(R>0)x(),a=setInterval(x,R),a.unref?.();let S=z.autoTitlePollMs??iB,C=kK(J,S,()=>H.hasSubscribers()),M=g6(B,{statePath:Oj(z.homeDir),debounceMs:z.uiPrefsDebounceMs??Fj}),I=K6(B,{path:Dj(z.homeDir),debounceMs:z.keybindingsDebounceMs??Uj}),$=yU(J,B,z.worktreeChangesTickMs??kj,()=>H.hasSubscribers()),i=O6(J,B,z.transcriptActivityTickMs??Mj,()=>H.hasSubscribers()),e=L6(J,z.prStatusPollMs??oG,()=>H.hasSubscribers()),J0=null,T={socketPath:Y,pidPath:Z,startedAt:X,get webPort(){return J0?.port},clients:G,async close(){if(H.markStopping(),A(),J0?.close(),J0=null,a)clearInterval(a);C(),e(),M(),I(),$(),i(),j.close(),PU(G,{type:"event",name:"daemon.stopping",payload:{}});for(let P of Array.from(G))P.socket.destroy();await new Promise((P)=>L.close(()=>P())),await Sj(Y).catch(()=>{}),await Sj(Z).catch(()=>{})}};await new Promise((P,N)=>{let p=L;p.once("error",N),L.listen(Y,()=>{p.removeListener("error",N),P()})}),await gk(Z,`${process.pid}
80
- `,"utf8");async function f0(){if(H.isStopping())return;H.markStopping(),await z.onStop?.(),setTimeout(()=>{T.close().catch((P)=>T1("daemon-shutdown",P))},0).unref()}let _=_G();function W0(P){return{orch:J,bus:B,activity:j,issues:K,daemon:{startedAt:X,socketPath:Y,webPort:J0?.port,pid:process.pid,guiCount:()=>H.guiCount(),stopSoon:f0},clientId:P}}if(z.webPort!==void 0){let P=bU({orch:J,bus:B,activity:j,ctx:W0});J0=await kU({port:z.webPort,hostname:z.webHost,staticDir:z.webStaticDir,link:P,onEvent:(N)=>B.onPublish(N),onSseOpen:()=>{let N={subscribed:!0,holdsLifetime:!0};return Q.add(N),H.guiAttached(),vz("conn",`web client subscribed \u2014 ${G.size+Q.size} client(s), ${H.guiCount()} gui`),()=>{Q.delete(N),vz("conn",`web client disconnected \u2014 ${G.size+Q.size} client(s), ${H.guiCount()} gui left`),H.clientDisconnected(!0)}}}),vz("web",`daemon web transport listening on http://${J0.hostname}:${J0.port}`)}async function R0(P,N){if(P.name==="subscribe"){let p=oB(P.payload),u=N.subscribed;N.subscribed=!0;let d=p.role==="gui"?"gui":"pane";N.holdsLifetime=d==="gui",N.channels=z7(p.channels);let o=!u;if(N.holdsLifetime)H.guiAttached();vz("conn",`client #${N.id} subscribed as ${d}${N.channels?` [${[...N.channels].join(",")}]`:""} \u2014 ${G.size} client(s), ${H.guiCount()} gui${o?" (collectors resume)":""}`);for(let Q0 of B.snapshot()){if(N.channels&&!N.channels.has(Q0.channel))continue;JQ(N,{type:"event",name:Q0.channel,payload:Q0.payload})}if(!N.channels||N.channels.has("engine-state"))for(let Q0 of j.currentNonIdle())JQ(N,{type:"event",name:"engine-state",payload:Q0});return{}}return aG(_,P.name,P.payload,W0(N.id))}async function V0(P,N){try{let p=await R0(P,N);JQ(N,{type:"response",id:P.id,name:P.name,payload:p})}catch(p){JQ(N,{type:"response",id:P.id,name:P.name,error:rB(p)})}}function t(P){let N=P.buffer.indexOf(`
81
- `);while(N!==-1){let p=P.buffer.slice(0,N);if(P.buffer=P.buffer.slice(N+1),p.trim().length>0)try{let u=JSON.parse(p);if(u.type!=="request")throw Error("daemon only accepts request frames from clients");V0(u,P)}catch(u){JQ(P,{type:"response",id:"parse-error",error:{message:u instanceof Error?u.message:String(u)}})}N=P.buffer.indexOf(`
82
- `)}}return T}async function xX(J){try{let z=await Rk(J,"utf8"),Y=Number(z.trim());return Number.isFinite(Y)?Y:null}catch{return null}}function vU(J){if(J.type==="event")return J.name==="daemon.stopping";return!0}function JQ(J,z){J.writer.write(ZG(z),vU(z))}function PU(J,z){let Y=z.type==="event"&&z.name!=="daemon.stopping"?z.name:null,Z=vU(z),X=null;for(let G of J){if(!G.subscribed&&z.type==="event")continue;if(Y&&G.channels&&!G.channels.has(Y))continue;X??=ZG(z),G.writer.write(X,Z)}}var bk=21600000,wU=3000;var cf=b(()=>{Dq();rJ();MJ();FV();SK();Mf();Zj();U6();D6();nZ();M6();JZ();A6();C6();SU();xU();Mf();Zj()});import{unlink as mU}from"fs/promises";function Sk(J){try{return process.kill(J,0),!0}catch(z){return z.code==="EPERM"}}async function uX(J,z){let Y=await xX(z),Z=Y!==null&&Y!==process.pid?Y:null,X=Z!==null&&Sk(Z),G=X?"graceful":"absent",Q=new aJ(J),f=Q.request("daemon.stop").catch(()=>{return}),H=new Promise((B)=>setTimeout(B,2000));if(await Promise.race([f,H]),Q.close(),X&&Z!==null){let B=Date.now()+5000,V=!1;while(Date.now()<B){try{process.kill(Z,0)}catch{break}if(!V&&Date.now()-(B-5000)>2000){try{process.kill(Z,"SIGTERM")}catch{}G="sigterm",V=!0}await new Promise((j)=>setTimeout(j,50))}try{process.kill(Z,0),process.kill(Z,"SIGKILL"),G="sigkill",await new Promise((j)=>setTimeout(j,100))}catch{}}return await mU(J).catch(()=>{}),await mU(z).catch(()=>{}),{pid:Y,method:G}}var df=b(()=>{XG();cf()});var Kf={};f1(Kf,{testDaemonResponds:()=>nf,ensureDaemonReachable:()=>EX,connectOrStartDaemon:()=>gz,connectIfRunning:()=>zz});import{spawn as Ik}from"child_process";import{closeSync as Tk,existsSync as yk,mkdirSync as xk,openSync as uk}from"fs";import{dirname as cU,resolve as Ij}from"path";import{fileURLToPath as Ek}from"url";function hk(J,z,Y,Z){let X="ignore",G;try{xk(cU(Z),{recursive:!0}),G=uk(Z,"a"),X=["ignore",G,G]}catch{X="ignore"}if(Ik(J,[...z],{detached:!0,stdio:X,env:Y}).unref(),G!==void 0)try{Tk(G)}catch{}}async function EX(){let J=Iz();if(await nf(J))return J;await uX(J,ez()).catch(()=>{});let[z,...Y]=vk(wk);hk(z,Y,process.env,aQ());let Z=Date.now()+5000;while(Date.now()<Z){if(await nf(J))return J;await new Promise((X)=>setTimeout(X,100))}throw Error(`kobe: daemon did not start (or stayed wedged) at ${J}`)}async function gz(){let J=await EX(),z=new aJ(J);return await z.connect(),z}async function zz(){let J=Iz();if(!await nf(J))return null;let z=new aJ(J);return await z.connect(),z}async function nf(J,z=Pk){let Y=new aJ(J);try{await Y.connect()}catch{return Y.close(),!1}let Z=Y.request("hello",{protocolVersion:$J}).then(()=>!0).catch(()=>!0),X,G=new Promise((f)=>{X=setTimeout(()=>f(!1),z)}),Q=await Promise.race([Z,G]);if(X)clearTimeout(X);return Y.close(),Q}function vk(J){let z=Ek(import.meta.url);if(z.startsWith("/$bunfs")||z.startsWith("B:\\~BUN"))return[process.execPath,...J];let Y=cU(z),Z=[Ij(Y,"../cli/index.ts"),Ij(Y,"../../../kobe/src/cli/index.ts"),Ij(Y,"../cli/index.js")],X=Z.find((G)=>yk(G));if(X)return[process.execPath,X,...J];throw Error(`kobe: could not locate kobe entry near ${Y}; checked ${Z.join(", ")}`)}var wk,Pk=3000;var FJ=b(()=>{df();nZ();JZ();XG();wk=["daemon","start"]});import{mkdir as mk,readFile as dU,unlink as iU,writeFile as nU}from"fs/promises";import{dirname as ck}from"path";function dk(J){if(!Number.isInteger(J)||J<=0)return!1;try{return process.kill(J,0),!0}catch(z){if(z.code==="ESRCH")return!1;return!0}}async function Tj(J,z={}){await mk(ck(J),{recursive:!0});try{await nU(J,String(process.pid),{flag:"wx"});return}catch(X){if(X.code!=="EEXIST")throw X}let Y=-1;try{let X=(await dU(J,"utf8")).trim();if(Y=Number.parseInt(X,10),!Number.isFinite(Y))Y=-1}catch{return Tj(J,z)}let Z=Y>0&&dk(Y);if(Z&&!z.forceTakeover)throw new zQ(`task index is locked by another kobe instance (pid ${Y})`,Y);console.warn(`[kobe] removing stale lockfile at ${J} (was held by pid ${Y}${Z?", forced":", process gone"})`);try{await iU(J)}catch(X){if(X.code!=="ENOENT")throw X}try{await nU(J,String(process.pid),{flag:"wx"})}catch(X){if(X.code==="EEXIST"){let G=-1;try{G=Number.parseInt((await dU(J,"utf8")).trim(),10)}catch{G=-1}throw new zQ(`task index lockfile contended during takeover (winner pid ${G})`,G)}throw X}}async function lU(J){try{await iU(J)}catch(z){if(z.code==="ENOENT")return;throw z}}var zQ;var $U=b(()=>{zQ=class zQ extends Error{heldByPid;constructor(J,z){super(J);this.name="LockfileError",this.heldByPid=z}}});function nk(J,z){let Y="",Z=J;for(let X=z-1;X>=0;X--){let G=Z%32;Y="0123456789ABCDEFGHJKMNPQRSTVWXYZ"[G]+Y,Z=(Z-G)/32}return Y}function pU(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 ik(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 lk(J){let z="";for(let Y of J)z+="0123456789ABCDEFGHJKMNPQRSTVWXYZ"[Y]??"0";return z}function rU(J=Date.now()){let z;if(J===aU){let Y=_U.slice();if(!ik(Y))z=pU(16);else z=Y}else z=pU(16);return aU=J,_U=z,nk(J,10)+lk(z)}var aU=-1,_U;var oU=b(()=>{_U=Array(16).fill(0)});var yj={};f1(yj,{TaskIndexStore:()=>wX});import{mkdir as $k,open as ak,readFile as sU,rename as _k,unlink as tU}from"fs/promises";import{homedir as pk}from"os";import{dirname as rk,join as eU}from"path";async function ek(J){let z=Date.now()+tk;for(;;)try{await Tj(J);return}catch(Y){if(!(Y instanceof zQ)||Date.now()>=z)throw Y;await ok(sk)}}class wX{homeDir;kobeDir;path;tmpPath;lockPath;cache={version:HY,tasks:[]};loaded=!1;listeners=new Set;saveChain=Promise.resolve();dirtyIds=new Set;removedIds=new Set;constructor(J={}){this.homeDir=J.homeDir??pk(),this.kobeDir=eU(this.homeDir,".kobe"),this.path=eU(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 sU(this.path,"utf8")}catch(Y){if(Y.code==="ENOENT")return this.cache={version:HY,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:HY,tasks:[]},this.loaded=!0,this.notifyListeners(),this.snapshot()}return this.cache=J4(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 $k(rk(this.path),{recursive:!0});let J=new Set(this.dirtyIds),z=new Set(this.removedIds);await ek(this.lockPath);try{let Y=await this.readDiskTasks(),Z=this.mergeWithDisk(Y,J,z),G=`${JSON.stringify({version:HY,tasks:Z},null,2)}
83
- `,Q=await ak(this.tmpPath,"w",420);try{await Q.writeFile(G,"utf8"),await Q.sync()}finally{await Q.close()}await _k(this.tmpPath,this.path);for(let H of J)this.dirtyIds.delete(H);for(let H of z)this.removedIds.delete(H);let f=new Set(this.cache.tasks.map((H)=>H.id));for(let H of Z)if(!f.has(H.id))this.cache.tasks.push(H)}finally{await lU(this.lockPath)}}async readDiskTasks(){let J;try{J=await sU(this.path,"utf8")}catch(Y){if(Y.code==="ENOENT")return[];throw Y}let z;try{z=JSON.parse(J)}catch{return[]}return J4(z,this.path).tasks}mergeWithDisk(J,z,Y){let Z=new Map(J.map((Q)=>[Q.id,Q])),X=[],G=new Set;for(let Q of this.cache.tasks){if(z.has(Q.id))X.push(Q);else{let f=Z.get(Q.id);if(f===void 0)continue;X.push(f)}G.add(Q.id)}for(let Q of J){if(G.has(Q.id)||Y.has(Q.id))continue;X.push(Q),G.add(Q.id)}return X}get(J){return this.assertLoaded(),this.cache.tasks.find((z)=>z.id===J)}list(){return this.assertLoaded(),this.cache.tasks.slice()}async create(J){this.assertLoaded();let z=new Date().toISOString(),Y={archived:!1,vendor:J.vendor??_1,...J,id:KG(rU()),createdAt:z,updatedAt:z};return this.cache.tasks.push(Y),this.dirtyIds.add(Y.id),await this.save(),this.notifyListeners(),Y}async update(J,z){this.assertLoaded();let Y=this.cache.tasks.findIndex((H)=>H.id===J);if(Y<0)throw Error(`task not found: ${J}`);let Z=this.cache.tasks[Y];if(!Z)throw Error(`task not found: ${J}`);let{id:X,createdAt:G,...Q}=z,f={...Z,...Q,id:Z.id,createdAt:Z.createdAt,updatedAt:new Date().toISOString()};return this.cache.tasks[Y]=f,this.dirtyIds.add(String(J)),await this.save(),this.notifyListeners(),f}async move(J,z,Y){this.assertLoaded();let Z=this.cache.tasks.find((L)=>L.id===J);if(!Z)throw Error(`task not found: ${J}`);let X=Y?.length?Y:this.cache.tasks.map((L)=>L.id),G=X.indexOf(String(J));if(G<0)throw Error(`task not movable in current group: ${J}`);let Q=X[G+z];if(!Q)return Z;let f=this.cache.tasks.findIndex((L)=>L.id===J),H=this.cache.tasks.findIndex((L)=>L.id===Q);if(f<0||H<0||f===H)return Z;let[B]=this.cache.tasks.splice(f,1);if(!B)return Z;let V=f<H?H-1:H,j=z>0?V+1:V,K={...B,updatedAt:new Date().toISOString()};return this.cache.tasks.splice(j,0,K),this.dirtyIds.add(String(J)),await this.save(),this.notifyListeners(),K}async reorder(J){this.assertLoaded();let z=J.map((G)=>{let Q=this.cache.tasks.findIndex((H)=>H.id===G.id);if(!(Q>=0?this.cache.tasks[Q]:void 0))throw Error(`task not found: ${G.id}`);return{idx:Q,position:G.position}}),Y=!1,Z=new Map,X=[];for(let{idx:G,position:Q}of z){let f=this.cache.tasks[G];if(!f||f.position===Q)continue;if(!Z.has(G))Z.set(G,f);if(this.cache.tasks[G]={...f,position:Q},!this.dirtyIds.has(f.id))this.dirtyIds.add(f.id),X.push(f.id);Y=!0}if(!Y)return;try{await this.save()}catch(G){for(let[Q,f]of Z)this.cache.tasks[Q]=f;for(let Q of X)this.dirtyIds.delete(Q);throw G}this.notifyListeners()}async archive(J,z="done"){return this.update(J,{status:z})}async remove(J){this.assertLoaded();let z=this.cache.tasks.findIndex((Y)=>Y.id===J);if(z<0)return;this.cache.tasks.splice(z,1),this.dirtyIds.delete(String(J)),this.removedIds.add(String(J)),await this.save(),this.notifyListeners()}async _unlinkForTests(){try{await tU(this.path)}catch(J){if(J.code!=="ENOENT")throw J}try{await tU(this.tmpPath)}catch(J){if(J.code!=="ENOENT")throw J}this.cache={version:HY,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:HY,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 J4(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:HY,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:HY,tasks:[]};let X=Array.isArray(Y.tasks)?Y.tasks:[],G=[];for(let Q of X){let f=JS(Q);if(f)G.push(f);else console.warn(`[kobe] dropping malformed task entry from ${z}: ${JSON.stringify(Q)}`)}return{version:HY,tasks:G}}function JS(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(!GS(z.status))return null;let Y=typeof z.archived==="boolean"?z.archived:!1,Z=z.kind==="main"?"main":"task",X=Z==="main"?z.status==="in_progress"||z.status==="done"?"backlog":z.status:z.status==="done"&&!Y?"in_progress":z.status;return{id:KG(z.id),title:z.title,repo:z.repo,branch:z.branch,worktreePath:z.worktreePath,status:X,archived:Y,pinned:typeof z.pinned==="boolean"?z.pinned:!1,kind:Z,vendor:rY(typeof z.vendor==="string"?z.vendor:void 0),prStatus:zS(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 zS(J){if(!J||typeof J!=="object"||Array.isArray(J))return;let z=J;if(!YS(z.provider)||!ZS(z.lifecycle)||!XS(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 YS(J){return J==="github"||J==="gitlab"||J==="bitbucket"||J==="unknown"}function ZS(J){return J==="creating"||J==="open"||J==="ready_to_merge"||J==="merged"||J==="closed"||J==="unknown"}function XS(J){return J==="none"||J==="pending"||J==="passing"||J==="failing"||J==="unknown"}function GS(J){return J==="backlog"||J==="in_progress"||J==="in_review"||J==="done"||J==="canceled"||J==="error"}var ok=(J)=>new Promise((z)=>setTimeout(z,J)),sk=25,tk=5000,HY=3;var YQ=b(()=>{rJ();$1();$U();oU()});var lf;var z4=b(()=>{lf=class lf extends Error{args;cwd;exitCode;stdout;stderr;constructor(J,z,Y){super(`git ${J.join(" ")} (cwd=${z}) exited with code ${Y.exitCode}: ${Y.stderr.trim()||Y.stdout.trim()}`);this.name="GitCommandError",this.args=J,this.cwd=z,this.exitCode=Y.exitCode,this.stdout=Y.stdout,this.stderr=Y.stderr}}});var X4={};f1(X4,{GitWorktreeManager:()=>$f});import Z4 from"fs";import Cz from"path";class $f{execDeps;constructor(J=QS){this.execDeps=J}ctxFor(J){let z=this.execDeps.remoteBasePath(J);return z?{exec:this.execDeps.execForRepo(J),dir:z,remote:!0}:{exec:this.execDeps.execForRepo(J),dir:J,remote:!1}}async runGit(J,z,Y){if(!Y.cwd)throw Error("runGit(): cwd is required; refusing to inherit from process.cwd()");let Z=await J.run(["git",...z],{cwd:Y.cwd,env:Y.env}),X={stdout:Z.stdout,stderr:Z.stderr,exitCode:Z.exitCode};if(X.exitCode!==0&&!Y.allowFail)throw new lf(z,Y.cwd,X);return X}async create(J,z,Y,Z){let X=this.ctxFor(J);if(mY("repo",X.dir),mY("path",Y),!z)throw Error("create(): branch must be a non-empty string");if(await X.exec.exists(Y)){let H=await this.tryDescribe(X,Y);if(H){if(H.branch!==z)throw Error(`worktree at ${Y} is on branch '${H.branch}', refusing to hijack to '${z}'`);return H}throw Error(`create(): ${Y} exists but is not a registered git worktree`)}await X.exec.mkdirp(Cz.dirname(Y));let Q=await this.branchExists(X,z)?["worktree","add",Y,z]:Z?["worktree","add","-b",z,Y,Z]:["worktree","add","-b",z,Y];await this.runGit(X.exec,Q,{cwd:X.dir});let f=await this.tryDescribe(X,Y);if(!f)throw Error(`create(): git reported success but ${Y} is not a worktree`);if(f.branch!==z)throw Error(`create(): post-condition failed \u2014 expected branch '${z}' at ${Y}, got '${f.branch}'`);return f}async createForTask(J){let z=this.execDeps.remoteBasePath(J.repo),Y=z?z5(z,J.slug):sV(J.repo,J.slug);return this.create(J.repo,J.branch,Y,J.baseRef)}async remove(J,z){mY("path",J);let Y=this.execDeps.execForPath(J),Z=z?.force===!0;if(!await Y.exists(J)){let Q=await this.findRepoFor(Y,J);if(Q)await this.runGit(Y,["worktree","prune"],{cwd:Q,allowFail:!0});return}let X=await this.findRepoFor(Y,J);if(!X)throw Error(`remove(): ${J} is not a git worktree`);if(!Z){if(await this.isDirty(J))throw Error(`remove(): refusing to remove dirty worktree at ${J} (pass { force: true } to override)`)}let G=Z?["worktree","remove","--force",J]:["worktree","remove",J];await this.runGit(Y,G,{cwd:X}),await this.runGit(Y,["worktree","prune"],{cwd:X,allowFail:!0})}async list(J){let z=this.ctxFor(J);mY("repo",z.dir);let Y=await this.runGit(z.exec,["worktree","list","--porcelain"],{cwd:z.dir}),Z=xj(Y.stdout),X=[];for(let G of Z){if(!G.path)continue;let Q=z.remote?Y4(z.dir,G.path):YB(J,G.path);if(!Q)continue;if(!G.branch||G.detached)continue;let f=ZQ(Q),H=ZQ(G.path),B=Cz.relative(f,H),V=Cz.join(Q,B),j=await this.isDirty(G.path);X.push({path:V,branch:G.branch,head:G.head??"",dirty:j})}return X}async listAll(J){let z=this.ctxFor(J);mY("repo",z.dir);let Y=await this.runGit(z.exec,["worktree","list","--porcelain"],{cwd:z.dir}),Z=xj(Y.stdout),X=z.remote?z.dir:ZQ(z.dir),G=[];for(let Q of Z){if(!Q.path)continue;if(Q.bare)continue;if(!Q.branch||Q.detached)continue;if((z.remote?Q.path:ZQ(Q.path))===X)continue;let f=await this.isDirty(Q.path);G.push({path:Q.path,branch:Q.branch,head:Q.head??"",dirty:f,kobeManaged:z.remote?Y4(z.dir,Q.path)!==null:eV(J,Q.path),lastActivityMs:await this.lastActivityMs(z.exec,Q.path)})}return G.sort((Q,f)=>f.lastActivityMs-Q.lastActivityMs),G}async lastActivityMs(J,z){try{let Y=await this.runGit(J,["log","-1","--format=%ct"],{cwd:z}),Z=Number.parseInt(Y.stdout.trim(),10);if(Number.isFinite(Z)&&Z>0)return Z*1000}catch{}if(!J.isRemote)try{return Z4.statSync(z).mtimeMs}catch{}return 0}async isDirty(J){mY("path",J);let z=this.execDeps.execForPath(J);return(await this.runGit(z,["status","--porcelain"],{cwd:J})).stdout.length>0}async currentBranch(J){mY("path",J);let z=this.execDeps.execForPath(J),Z=(await this.runGit(z,["rev-parse","--abbrev-ref","HEAD"],{cwd:J})).stdout.trim();if(!Z||Z==="HEAD")throw Error(`currentBranch(): ${J} is in detached-HEAD state`);return Z}async renameBranch(J,z,Y){if(mY("path",J),z===Y)return;let Z=this.execDeps.execForPath(J),X=await this.findRepoFor(Z,J);if(!X)throw Error(`renameBranch(): ${J} is not a git worktree`);await this.runGit(Z,["branch","-m",z,Y],{cwd:X})}async tryDescribe(J,z){let Y=await this.runGit(J.exec,["worktree","list","--porcelain"],{cwd:J.dir}),Z=xj(Y.stdout),X=(f)=>J.remote?f:ZQ(f),G=X(z),Q=Z.find((f)=>f.path&&X(f.path)===G);if(!Q||!Q.path||!Q.branch||Q.detached)return null;return{path:z,branch:Q.branch,head:Q.head??"",dirty:await this.isDirty(Q.path)}}async branchExists(J,z){let Y=`refs/heads/${z}`;return(await this.runGit(J.exec,["show-ref","--verify","--quiet",Y],{cwd:J.dir,allowFail:!0})).exitCode===0}async findRepoFor(J,z){try{let Y=await this.runGit(J,["rev-parse","--git-common-dir"],{cwd:z,allowFail:!0});if(Y.exitCode!==0)return null;let Z=Y.stdout.trim();if(!Z)return null;let X=Cz.isAbsolute(Z)?Z:Cz.resolve(z,Z);return Cz.basename(X)===".git"?Cz.dirname(X):X}catch(Y){if(Y instanceof lf)return null;throw Y}}}function xj(J){let z=[],Y=null;for(let Z of J.split(`
84
- `)){let X=Z.replace(/\r$/,"");if(X===""){if(Y)z.push(Y);Y=null;continue}if(!Y)Y={};if(X.startsWith("worktree "))Y.path=X.slice(9);else if(X.startsWith("HEAD "))Y.head=X.slice(5);else if(X.startsWith("branch ")){let G=X.slice(7);Y.branch=G.startsWith("refs/heads/")?G.slice(11):G}else if(X==="detached")Y.detached=!0;else if(X==="bare")Y.bare=!0}if(Y)z.push(Y);return z}function Y4(J,z){let Y=`${J.replace(/\/+$/,"")}/.kobe/worktrees`;return z===Y||z.startsWith(`${Y}/`)?Y:null}function mY(J,z){if(!z||!Cz.isAbsolute(z))throw Error(`${J} must be an absolute path, got: ${JSON.stringify(z)}`)}function ZQ(J){try{return Z4.realpathSync(J)}catch{return Cz.resolve(J)}}var QS;var uj=b(()=>{Uz();A1();z4();ZB();QS={execForRepo:YX,execForPath:XY,remoteBasePath(J){return sz(J)?.basePath??null}}});var af;var G4=b(()=>{af=["web","completions","add","remove","adopt","export","repo","api","daemon","theme","skill","feedback","update","doctor","reset","reload","kill-sessions"]});var q4={};f1(q4,{runCompletionsSubcommand:()=>BS});function qS(){return`# kobe bash completions
71
+ `;return""}async function n5(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(!Rk(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=d5(H.stdout),V=d5(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==="?",y=w!==" "&&w!=="?"?w:S,$=w!==" "&&w!=="?",c="";if(M)L.push({fileIndex:K.length,path:g});else if(c=V.get(g)??j.get(g)??"",V.has(g)&&j.has(g))c=`${V.get(g)}${j.get(g)}`;K.push({path:g,status:M?"untracked":Ck(y),staged:$,patch:c})}if(L.length>0){let R=await kk(L,Nk,(x)=>bk(Z,x.path));for(let x=0;x<L.length;x++)K[L[x].fileIndex].patch=R[x]}K.sort((R,x)=>R.path.localeCompare(x.path));let A=[f.stdout,H.stdout].filter(Boolean).join(`
72
+ `),O={files:K,raw:A};return Response.json(O)}var gk=15000,Nk=8;var i5=C(()=>{Fz();wH();PH()});import{isAbsolute as Sk}from"path";function $5(J){return typeof J==="string"&&J.length>0&&/^[A-Za-z0-9_-]+$/.test(J)}function yk(J){return typeof J==="string"&&J.length>0&&/^[A-Za-z0-9._-]+$/.test(J)&&!J.includes("..")}async function Tk(J){let z=J.searchParams.get("worktreePath"),Y=J.searchParams.get("vendor")??"claude";if(!z||!Sk(z))return Response.json({error:"worktreePath must be an absolute path"},{status:400});if(!$5(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 xk(J){let z=J.searchParams.get("vendor")??"claude",Y=J.searchParams.get("sessionId");if(!$5(z))return Response.json({error:"invalid vendor"},{status:400});if(!yk(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 a5(J,z){if(z.pathname!==l5&&z.pathname!==Ik)return null;if(J.method!=="GET")return Response.json({error:"method not allowed"},{status:405});return z.pathname===l5?Tk(z):xk(z)}var l5="/api/history/sessions",Ik="/api/history/messages";var _5=C(()=>{ZY()});import{mkdir as uk,readFile as Ek,writeFile as wk}from"fs/promises";import{join as p5}from"path";function r5(){return p5(jJ(),"notes")}function o5(J){return typeof J==="string"&&J.length>0&&/^[A-Za-z0-9_-]+$/.test(J)}function s5(J){return p5(r5(),`${J}.md`)}async function hk(J){let z=J.searchParams.get("taskId");if(!o5(z))return Response.json({error:"invalid taskId"},{status:400});try{let Y="";try{Y=await Ek(s5(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 vk(J){let z;try{z=await J.json()}catch{return Response.json({error:"invalid JSON body"},{status:400})}if(!o5(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 uk(r5(),{recursive:!0}),await wk(s5(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 t5(J,z){if(z.pathname!==Pk)return null;if(J.method==="GET")return hk(z);if(J.method==="PUT")return vk(J);return Response.json({error:"method not allowed"},{status:405})}var Pk="/api/notes";var e5=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 ck(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 JU(J,z){if(z.pathname!==nk)return null;if(J.method!=="GET")return Response.json({error:"method not allowed"},{status:405});return Response.json({themes:dk})}var mk,dk,nk="/api/themes";var zU=C(()=>{rq();oq();sq();tq();eq();JH();zH();mk={claude:VG,conductor:KG,dracula:UG,nord:DG,opencode:LG,"osaka-jade":FG,tokyonight:MG};dk=Object.fromEntries(Object.entries(mk).map(([J,z])=>[J,ck(z)]).filter((J)=>J[1]!==null))});import{createHash as ik,randomUUID as lk}from"crypto";import{mkdir as $k}from"fs/promises";import{join as yB,resolve as ak}from"path";function rk(J){return ik("sha1").update(J).digest("hex").slice(0,16)}async function tk(J){let z=Number.parseInt(J.headers.get("content-length")??"",10);if(Number.isFinite(z)&&z>YU)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>YU)return Response.json({error:"asset too large"},{status:413});let X=_k[G.type];if(!X)return Response.json({error:`unsupported content-type: ${G.type||"unknown"}`},{status:415});try{let Q=rk(Z),H=yB($f(),Q);await $k(H,{recursive:!0});let j=`${lk()}.${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 ek(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(!ok.test(Z)||!sk.test(G))return Response.json({error:"invalid asset path"},{status:400});let X=$f(),Q=ak(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=pk[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 ZU(J,z){if(z.pathname===hH){if(J.method==="POST")return tk(J);return Response.json({error:"method not allowed"},{status:405})}if(z.pathname.startsWith(`${hH}/`)){if(J.method==="GET")return ek(z.pathname);return Response.json({error:"method not allowed"},{status:405})}return null}var hH="/api/issue-assets",YU=10485760,_k,pk,ok,sk;var GU=C(()=>{t1();_k={"image/png":"png","image/jpeg":"jpg","image/gif":"gif","image/webp":"webp"},pk={png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",webp:"image/webp"};ok=/^[a-f0-9]{16}$/,sk=/^[A-Za-z0-9_-]+\.[a-z0-9]+$/});function XU(J,z=500){return Response.json({error:J instanceof Error?J.message:String(J)},{status:z})}function QU(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 Jb(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 XU(Z,QU(Z))}}async function zb(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 XU(G,QU(G))}}async function qU(J,z,Y){if(z.pathname!=="/api/issues")return null;if(J.method==="GET")return Jb(Y,z);if(J.method==="POST")return zb(Y,J);return Response.json({error:"method not allowed"},{status:405})}function HU(J){return Yb.has(String(J??"").trim().toLowerCase())}function fU(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 Zb(J){let z=fU(J);return z!==null&&HU(z)}function jU(J,z={}){if(!J)return!0;if(Zb(J))return!0;let Y=z.allowedHost?.trim();if(!Y)return!1;let Z=fU(J);return Z!==null&&Z===Y}function BU(J){let z=String(J??"").trim();return z&&!HU(z)?z:void 0}var Yb;var WU=C(()=>{Yb=new Set(["localhost","127.0.0.1","::1","[::1]"])});var Gb,VU;var KU=C(()=>{Gb=["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"],VU=new Set(Gb)});var mH={};Q1(mH,{resolveRepoInit:()=>LU,resolveEngineLaunchInit:()=>IG});import{existsSync as DU,readFileSync as Xb}from"fs";import{join as vH}from"path";function qb(J){return DU(vH(J,UU))?`sh ${UU}`:void 0}function Hb(J){let z=vH(J,Qb);if(!DU(z))return;try{let Y=Xb(z,"utf8");return Y.trim().length>0?Y:void 0}catch{return}}function LU(J,z){let Y=J?Z8(J):{},Z=qb(z)??Y.initScript,G=Hb(z)??Y.initPrompt;return{initScript:Z&&Z.trim().length>0?Z:void 0,initPrompt:G&&G.trim().length>0?G:void 0}}function fb(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=LU(J,z);return{initScript:Z.initScript,firstMessage:fb(Y,Z)}}var UU,Qb;var yG=C(()=>{A1();UU=vH(".kobe","init.sh"),Qb=vH(".kobe","init-prompt.md")});async function jb(J,z){let{task:Y}=await J.request("task.get",{taskId:z});return Y}async function TB(J,z){let Y=await jb(J,z);if(Y.worktreePath)return{task:Y,worktreePath:Y.worktreePath};let{worktreePath:Z}=await J.request("task.ensureWorktree",{taskId:z});if(!Z)throw Error(`task ${z} has no worktree`);return{task:Y,worktreePath:Z}}async function FU(J,z){let{task:Y,worktreePath:Z}=await 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 Bb(J){return Qq(J,{bareSafe:!0})}async function MU(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=Bb(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 OU(J,z){let{worktreePath:Y}=await TB(J,z),Z=process.env.SHELL?.trim()||"/bin/zsh";return{cwd:Y,command:[Z,"-il"]}}async function AU(J){let z=C1(J);await cz(z).catch(()=>{}),await zz(z).catch(()=>{})}var RU=C(()=>{eJ();F8();yG();v1();zJ()});import{existsSync as Wb}from"fs";import{join as gU,normalize as kU}from"path";function Vb(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
+ data: ${JSON.stringify(f)}
75
+
76
+ `))}catch{}}),Y=setInterval(()=>{try{X.enqueue(Z.encode(`: ping
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 Kb(J,z,Y){try{let{name:Z,payload:G}=await J.json();if(!Z)return Response.json({error:"missing rpc name"},{status:400});if(!VU.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 Ub(){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 Db(){return Response.json({api:FZ()})}function Lb(){return Response.json({projects:CJ()})}function nY(J,z=""){return typeof J==="string"?J:z}function Fb(J,z){return typeof J==="boolean"?J:z}function TU(J){let z=J.customEngineIds;if(!Array.isArray(z))return[];return z.filter((Y)=>typeof Y==="string"&&yU.test(Y)&&!fJ(Y))}function Mb(J){return J.split(/[-_]+/).filter(Boolean).map((z)=>`${z.slice(0,1).toUpperCase()}${z.slice(1)}`).join(" ")}function Ob(J,z){return nY(J[Oz(z)]).trim()||LZ(z)}function Ab(J,z){return nY(J[Mz(z)]).trim()||IX(z).join(" ")}function xU(){let J=NJ(),z=TU(J),Y=[...tY,...z],Z=nY(J.lastSelectedVendor,"claude"),G=nY(J.focusAccent,"primary");return Response.json({activeTheme:nY(J.activeTheme,"claude"),transparentBackground:Fb(J.transparentBackground,!1),focusAccent:IU.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:Ob(J,X),command:Ab(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 Rb(J){try{let z=await J.json(),Y={};if(GQ(Y,"activeTheme",z.activeTheme),uZ(Y,"transparentBackground",z.transparentBackground),IU.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=TU(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(!yU.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:Mb(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 xU()}catch(z){return Response.json({error:z instanceof Error?z.message:String(z)},{status:400})}}async function gb(J,z){try{let{taskId:Y}=await J.json();if(!Y)return Response.json({error:"missing taskId"},{status:400});return Response.json(await FU(z,Y))}catch(Y){return Response.json({error:Y instanceof Error?Y.message:String(Y)},{status:500})}}async function NU(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 uU(){return Response.json({review:N1(cH.review)??null,pr:N1(cH.pr)??null})}async function Nb(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 uU()}catch(z){return Response.json({error:z instanceof Error?z.message:String(z)},{status:400})}}async function Cb(J,z){let Z=kU(gU(z,J==="/"?"/index.html":J));if(!Z.startsWith(z))return new Response("forbidden",{status:403});let G=Bun.file(Wb(Z)?Z:gU(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 kb(J){let{link:z,sseSends:Y,staticDir:Z}=J,G=J.tearDownSession??((X)=>void AU(X));return async function(Q){let H=new URL(Q.url);if(H.pathname===SU)return new Response(bU);if(!jU(Q.headers.get("origin"),{allowedHost:J.allowedHost}))return new Response("forbidden: cross-origin request rejected",{status:403});if(H.pathname==="/events")return Vb((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 Kb(Q,z,G);if(H.pathname==="/api/session"&&Q.method==="POST")return gb(Q,z);if(H.pathname==="/api/engine-spec"&&Q.method==="GET")return NU(H,z,MU);if(H.pathname==="/api/terminal-spec"&&Q.method==="GET")return NU(H,z,OU);if(H.pathname==="/api/engines"&&Q.method==="GET")return Ub();if(H.pathname==="/api/cli-invocation"&&Q.method==="GET")return Db();if(H.pathname==="/api/projects"&&Q.method==="GET")return Lb();if(H.pathname==="/api/settings"&&Q.method==="GET")return xU();if(H.pathname==="/api/settings"&&Q.method==="PATCH")return Rb(Q);if(H.pathname==="/api/quick-prompts"&&Q.method==="GET")return uU();if(H.pathname==="/api/quick-prompts"&&Q.method==="PUT")return Nb(Q);let f=await t5(Q,H);if(f)return f;let j=await n5(Q,H);if(j)return j;let V=await a5(Q,H);if(V)return V;let B=await qU(Q,H,z);if(B)return B;let K=await ZU(Q,H);if(K)return K;let L=JU(Q,H);if(L)return L;if(Z)return Cb(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 bb(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 EU(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 bb(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 CU(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 Sb(J,z=SU){let Y;try{Y=(await(await fetch(`http://localhost:${J}${z}`,{signal:AbortSignal.timeout(800)})).text()).trim()}catch{return}if(Y!==bU)throw Error(`port ${J} is in use by a non-kobe service; refusing to replace it`);let Z=await CU(J);for(let X of Z)try{process.kill(X,"SIGTERM")}catch{}let G=Date.now()+2000;while(Date.now()<G){if((await CU(J)).length===0)return;await new Promise((X)=>setTimeout(X,100))}}async function wU(J){if(J.takeover!==!1)await Sb(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=BU(Z),X=kb({link:J.link,sseSends:z,staticDir:J.staticDir?kU(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 bU="kobe-web",SU="/__kobe_web",IU,yU,cH;var PU=C(()=>{XZ();eJ();ZY();SX();vq();A1();gY();uH();a1();i5();_5();e5();zU();AH();YZ();GU();WU();KU();RU();IU=["primary","success","info"],yU=/^[a-z][a-z0-9_-]{0,47}$/;cH={review:"boardPrompt.review",pr:"boardPrompt.pr"}});var hU={};Q1(hU,{sameWorktreeChanges:()=>iz,readWorktreeChanges:()=>yb,pickPushedChanges:()=>nH,parsePorcelain:()=>TG});import{spawnSync as Ib}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 yb(J){if(!J)return dH;try{let z=Ib("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 Eb(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 wb(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 vU{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=wb(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:Tb,slowRetryMs:xb,minIntervalMs:ub},Z=this.options.run??Eb;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 mU(J,z,Y=uB,Z){if(Y<=0)return()=>{};let G=new vU(J,z,{hasSubscribers:Z});G.tick();let X=setInterval(()=>G.tick(),Y);return X.unref?.(),()=>{clearInterval(X),G.stop()}}var uB=2000,Tb=4000,xb=60000,ub=1500;var cU=C(()=>{dY();GG();A1();xG()});import{mkdir as dU,readFile as Pb,unlink as EB,writeFile as hb}from"fs/promises";import{createServer as vb}from"net";import{dirname as nU}from"path";import{StringDecoder as mb}from"string_decoder";function db(){let J=process.env.KOBE_DAEMON_IDLE_GRACE_MS;if(J===void 0)return iU;let z=Number(J);return Number.isFinite(z)&&z>=0?z:iU}async function $U(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:db(),onIdleStop:()=>void q0().catch((m)=>y1("daemon-idle-shutdown",m))}),j=new sj;j.onPublish((m)=>{lU(X,{type:"event",name:m.channel,payload:m.payload})});let B=new l8(j,void 0,void 0,async(m)=>{let k=J.getTask(m);if(!k?.worktreePath)return;return tZ(k.vendor??p1,k.worktreePath)}),K=new NH(gH(z.homeDir));await dU(nU(Y),{recursive:!0}),await dU(nU(Z),{recursive:!0}),await EB(Y).catch(()=>{});let L=vb((m)=>{let k={id:H++,connectedAt:new Date,socket:m,writer:new oj(m),buffer:"",subscribed:!1,holdsLifetime:!1,channels:null};X.add(k);let t=new mb("utf8");m.on("data",(T)=>{k.buffer+=t.write(T),o(k)}),m.on("error",()=>{}),m.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((m)=>{j.publish("task.snapshot",{tasks:m.map(Bz)})}),O=z.checkUpdate??XX,R=z.updatePollMs??cb,x=()=>{O().then((m)=>j.publish("update",{info:m})).catch((m)=>y1("update-poller",m))},w=null;if(R>0)x(),w=setInterval(x,R),w.unref?.();let S=z.autoTitlePollMs??rj,g=w6(J,S,()=>f.hasSubscribers()),M=T5(j,{statePath:kB(z.homeDir),debounceMs:z.uiPrefsDebounceMs??CB}),y=R5(j,{path:RB(z.homeDir),debounceMs:z.keybindingsDebounceMs??AB}),$=mU(J,j,z.worktreeChangesTickMs??uB,()=>f.hasSubscribers()),c=S5(J,j,z.transcriptActivityTickMs??NB,()=>f.hasSubscribers()),e=C5(J,z.prStatusPollMs??zQ,()=>f.hasSubscribers()),u=null,Y0={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(),y(),$(),c(),B.close(),lU(X,{type:"event",name:"daemon.stopping",payload:{}});for(let m of Array.from(X))m.socket.destroy();await new Promise((m)=>L.close(()=>m())),await EB(Y).catch(()=>{}),await EB(Z).catch(()=>{})}};await new Promise((m,k)=>{let t=L;t.once("error",k),L.listen(Y,()=>{t.removeListener("error",k),m()})}),await hb(Z,`${process.pid}
80
+ `,"utf8");async function q0(){if(f.isStopping())return;f.markStopping(),await z.onStop?.(),setTimeout(()=>{Y0.close().catch((m)=>y1("daemon-shutdown",m))},0).unref()}let s=tX();function W0(m){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:m}}if(z.webPort!==void 0){let m=EU({orch:J,bus:j,activity:B,ctx:W0});u=await wU({port:z.webPort,hostname:z.webHost,staticDir:z.webStaticDir,link:m,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(m,k){if(m.name==="subscribe"){let t=YB(m.payload),T=k.subscribed;k.subscribed=!0;let n=t.role==="gui"?"gui":"pane";k.holdsLifetime=n==="gui",k.channels=qV(t.channels);let X0=!T;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${X0?" (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(s,m.name,m.payload,W0(k.id))}async function v(m,k){try{let t=await N0(m,k);XQ(k,{type:"response",id:m.id,name:m.name,payload:t})}catch(t){XQ(k,{type:"response",id:m.id,name:m.name,error:zB(t)})}}function o(m){let k=m.buffer.indexOf(`
81
+ `);while(k!==-1){let t=m.buffer.slice(0,k);if(m.buffer=m.buffer.slice(k+1),t.trim().length>0)try{let T=JSON.parse(t);if(T.type!=="request")throw Error("daemon only accepts request frames from clients");v(T,m)}catch(T){XQ(m,{type:"response",id:"parse-error",error:{message:T instanceof Error?T.message:String(T)}})}k=m.buffer.indexOf(`
82
+ `)}}return Y0}async function uG(J){try{let z=await Pb(J,"utf8"),Y=Number(z.trim());return Number.isFinite(Y)?Y:null}catch{return null}}function aU(J){if(J.type==="event")return J.name==="daemon.stopping";return!0}function XQ(J,z){J.writer.write(qX(z),aU(z))}function lU(J,z){let Y=z.type==="event"&&z.name!=="daemon.stopping"?z.name:null,Z=aU(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 cb=21600000,iU=3000;var iH=C(()=>{Mq();tJ();AJ();k7();P6();AH();fB();g5();N5();$Z();k5();YZ();I5();x5();PU();cU();AH();fB()});import{unlink as _U}from"fs/promises";function nb(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&&nb(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 _U(J).catch(()=>{}),await _U(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 ib}from"child_process";import{closeSync as lb,existsSync as $b,mkdirSync as ab,openSync as _b}from"fs";import{dirname as pU,resolve as wB}from"path";import{fileURLToPath as pb}from"url";function sb(J,z,Y,Z){let G="ignore",X;try{ab(pU(Z),{recursive:!0}),X=_b(Z,"a"),G=["ignore",X,X]}catch{G="ignore"}if(ib(J,[...z],{detached:!0,stdio:G,env:Y}).unref(),X!==void 0)try{lb(X)}catch{}}async function wG(){let J=xz();if(await $H(J))return J;await EG(J,ez()).catch(()=>{});let[z,...Y]=tb(rb);sb(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=ob){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 tb(J){let z=pb(import.meta.url);if(z.startsWith("/$bunfs")||z.startsWith("B:\\~BUN"))return[process.execPath,...J];let Y=pU(z),Z=[wB(Y,"../cli/index.ts"),wB(Y,"../../../kobe/src/cli/index.ts"),wB(Y,"../cli/index.js")],G=Z.find((X)=>$b(X));if(G)return[process.execPath,G,...J];throw Error(`kobe: could not locate kobe entry near ${Y}; checked ${Z.join(", ")}`)}var rb,ob=3000;var RJ=C(()=>{lH();$Z();YZ();HX();rb=["daemon","start"]});import{mkdir as eb,readFile as rU,unlink as sU,writeFile as oU}from"fs/promises";import{dirname as JS}from"path";function zS(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 eb(JS(J),{recursive:!0});try{await oU(J,String(process.pid),{flag:"wx"});return}catch(G){if(G.code!=="EEXIST")throw G}let Y=-1;try{let G=(await rU(J,"utf8")).trim();if(Y=Number.parseInt(G,10),!Number.isFinite(Y))Y=-1}catch{return PB(J,z)}let Z=Y>0&&zS(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 sU(J)}catch(G){if(G.code!=="ENOENT")throw G}try{await oU(J,String(process.pid),{flag:"wx"})}catch(G){if(G.code==="EEXIST"){let X=-1;try{X=Number.parseInt((await rU(J,"utf8")).trim(),10)}catch{X=-1}throw new QQ(`task index lockfile contended during takeover (winner pid ${X})`,X)}throw G}}async function tU(J){try{await sU(J)}catch(z){if(z.code==="ENOENT")return;throw z}}var QQ;var eU=C(()=>{QQ=class QQ extends Error{heldByPid;constructor(J,z){super(J);this.name="LockfileError",this.heldByPid=z}}});function YS(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 Y4(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 ZS(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 GS(J){let z="";for(let Y of J)z+="0123456789ABCDEFGHJKMNPQRSTVWXYZ"[Y]??"0";return z}function Z4(J=Date.now()){let z;if(J===J4){let Y=z4.slice();if(!ZS(Y))z=Y4(16);else z=Y}else z=Y4(16);return J4=J,z4=z,YS(J,10)+GS(z)}var J4=-1,z4;var G4=C(()=>{z4=Array(16).fill(0)});var hB={};Q1(hB,{TaskIndexStore:()=>PG});import{mkdir as XS,open as QS,readFile as X4,rename as qS,unlink as Q4}from"fs/promises";import{homedir as HS}from"os";import{dirname as fS,join as q4}from"path";async function VS(J){let z=Date.now()+WS;for(;;)try{await PB(J);return}catch(Y){if(!(Y instanceof QQ)||Date.now()>=z)throw Y;await jS(BS)}}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??HS(),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 X4(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=H4(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 XS(fS(this.path),{recursive:!0});let J=new Set(this.dirtyIds),z=new Set(this.removedIds);await VS(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 QS(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 tU(this.lockPath)}}async readDiskTasks(){let J;try{J=await X4(this.path,"utf8")}catch(Y){if(Y.code==="ENOENT")return[];throw Y}let z;try{z=JSON.parse(J)}catch{return[]}return H4(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(Z4()),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 Q4(this.path)}catch(J){if(J.code!=="ENOENT")throw J}try{await Q4(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 H4(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=KS(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 KS(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(!MS(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:US(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 US(J){if(!J||typeof J!=="object"||Array.isArray(J))return;let z=J;if(!DS(z.provider)||!LS(z.lifecycle)||!FS(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 DS(J){return J==="github"||J==="gitlab"||J==="bitbucket"||J==="unknown"}function LS(J){return J==="creating"||J==="open"||J==="ready_to_merge"||J==="merged"||J==="closed"||J==="unknown"}function FS(J){return J==="none"||J==="pending"||J==="passing"||J==="failing"||J==="unknown"}function MS(J){return J==="backlog"||J==="in_progress"||J==="in_review"||J==="done"||J==="canceled"||J==="error"}var jS=(J)=>new Promise((z)=>setTimeout(z,J)),BS=25,WS=5000,jY=3;var qQ=C(()=>{tJ();a1();eU();G4()});var aH;var f4=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 W4={};Q1(W4,{GitWorktreeManager:()=>_H});import B4 from"fs";import bz from"path";class _H{execDeps;constructor(J=OS){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?HK(z,J.slug):GK(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?j4(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?j4(z.dir,Q.path)!==null:QK(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 B4.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 j4(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 B4.realpathSync(J)}catch{return bz.resolve(J)}}var OS;var mB=C(()=>{Fz();A1();f4();Hj();OS={execForRepo:XG,execForPath:XY,remoteBasePath(J){return sz(J)?.basePath??null}}});var pH;var V4=C(()=>{pH=["web","completions","add","remove","adopt","export","repo","api","daemon","theme","skill","feedback","update","doctor","reset","reload","kill-sessions"]});var U4={};Q1(U4,{runCompletionsSubcommand:()=>NS});function AS(){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="${af.join(" ")}"
92
+ opts="${pH.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 fS(){return`#compdef kobe
100
+ `}function RS(){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=(${af.map((z)=>`"${z}"`).join(" ")})
106
+ subcommands=(${pH.map((z)=>`"${z}"`).join(" ")})
107
107
 
108
108
  _arguments "1:subcommand:(\${subcommands})"
109
109
  }
110
110
 
111
111
  _kobe "$@"
112
- `}function HS(){return`# kobe fish completions
112
+ `}function gS(){return`# kobe fish completions
113
113
  # Source: kobe completions fish
114
114
 
115
- ${af.map((z)=>`complete -c kobe -f -a ${z}`).join(`
115
+ ${pH.map((z)=>`complete -c kobe -f -a ${z}`).join(`
116
116
  `)}
117
- `}async function BS(J){let z=J[0];if(z==="--help"||z==="-h"||z==="help"){process.stdout.write(Q4);return}if(!z||z!=="bash"&&z!=="zsh"&&z!=="fish")process.stderr.write(`kobe completions: unknown shell "${z}"
117
+ `}async function NS(J){let z=J[0];if(z==="--help"||z==="-h"||z==="help"){process.stdout.write(K4);return}if(!z||z!=="bash"&&z!=="zsh"&&z!=="fish")process.stderr.write(`kobe completions: unknown shell "${z}"
118
118
 
119
- ${Q4}`),process.exit(2);let Y;if(z==="bash")Y=qS();else if(z==="zsh")Y=fS();else Y=HS();process.stdout.write(Y)}var Q4=`Usage: kobe completions <bash|zsh|fish>
119
+ ${K4}`),process.exit(2);let Y;if(z==="bash")Y=AS();else if(z==="zsh")Y=RS();else Y=gS();process.stdout.write(Y)}var K4=`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 f4=b(()=>{G4()});var W4={};f1(W4,{runExportSubcommand:()=>MS,renderExport:()=>j4,displayWidth:()=>_f});function jS(J){return{id:J.id,title:J.title,status:J.status,archived:String(J.archived),vendor:J.vendor??_1,branch:J.branch,repo:J.repo,worktreePath:J.worktreePath}}function Ej(J){process.stderr.write(`kobe export: ${J}
124
-
125
- ${B4}
126
- `),process.exit(2)}function WS(J){let z="json";for(let Y=0;Y<J.length;Y++){let Z=J[Y];if(Z==="--json")z="json";else if(Z==="--csv")z="csv";else if(Z==="--format"){let X=J[++Y];if(X===void 0)Ej("--format requires a value (json, csv, or table)");z=H4(X)}else if(Z.startsWith("--format="))z=H4(Z.slice(9));else Ej(`unexpected argument "${Z}"`)}return z}function H4(J){if(J==="json"||J==="csv"||J==="table")return J;Ej(`unknown format "${J}" (expected json, csv, or table)`)}function VS(J){if(/[",\r\n]/.test(J))return`"${J.replace(/"/g,'""')}"`;return J}function KS(J){let z=[XQ.join(",")];for(let Y of J)z.push(XQ.map((Z)=>VS(Y[Z])).join(","));return z.join(`
127
- `)}function _f(J){let z=0;for(let Y of J)z+=US(Y.codePointAt(0));return z}function US(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 DS(J,z){return J+" ".repeat(Math.max(0,z-_f(J)))}function LS(J){let z={};for(let X of XQ)z[X]=Math.max(_f(X),...J.map((G)=>_f(G[X])));let Y=(X)=>XQ.map((G)=>DS(X[G],z[G])).join(" ").trimEnd(),Z={};for(let X of XQ)Z[X]=X;return[Y(Z),...J.map(Y)].join(`
128
- `)}function j4(J,z){let Y=J.map(jS);if(z==="json")return JSON.stringify(Y,null,2);if(z==="csv")return KS(Y);return LS(Y)}async function MS(J){if(J.includes("--help")||J.includes("-h")||J.includes("help")){process.stdout.write(`${B4}
129
- `);return}let z=WS(J),{TaskIndexStore:Y}=await Promise.resolve().then(() => (YQ(),yj)),Z=new Y;await Z.load();let X=Z.list();if(X.length===0&&z==="table"){process.stdout.write(`no tasks
130
- `);return}process.stdout.write(`${j4(X,z)}
131
- `)}var B4,XQ;var V4=b(()=>{rJ();B4=["Usage: kobe export [--json | --csv | --format <json|csv|table>]","","Print the task list (from ~/.kobe/tasks.json) to stdout. Read-only and","daemon-free \u2014 works with the kobe daemon down.","","Options:"," --json JSON array of tasks (default)"," --csv CSV with a header row"," --format <fmt> One of: json, csv, table"," -h, --help Print this help",""].join(`
132
- `),XQ=["id","title","status","archived","vendor","branch","repo","worktreePath"]});var D4={};f1(D4,{runRepoSubcommand:()=>RS});import{readFileSync as FS}from"fs";import{resolve as pf}from"path";function cY(J){process.stderr.write(`kobe repo: ${J}
133
-
134
- ${U4}
135
- `),process.exit(2)}function K4(J){try{return FS(pf(process.cwd(),J),"utf8")}catch(z){cY(`cannot read ${J}: ${z instanceof Error?z.message:String(z)}`)}}function OS(J){let z={};for(let Y=0;Y<J.length;Y++){let Z=J[Y],X=()=>{let G=J[++Y];if(G===void 0)cY(`${Z} requires a value`);return G};if(Z==="--init-script")z.initScript=X();else if(Z==="--init-script-file")z.initScript=K4(X());else if(Z==="--init-prompt")z.initPrompt=X();else if(Z==="--init-prompt-file")z.initPrompt=K4(X());else if(Z.startsWith("-"))cY(`unknown flag "${Z}"`);else if(z.path===void 0)z.path=Z;else cY(`unexpected argument "${Z}"`)}return z}function AS(J){let z,Y=!1,Z=!1;for(let X of J)if(X==="--init-script")Y=!0;else if(X==="--init-prompt")Z=!0;else if(X.startsWith("-"))cY(`unknown flag "${X}"`);else if(z===void 0)z=X;else cY(`unexpected argument "${X}"`);if(!Y&&!Z)Y=!0,Z=!0;return{path:z,clearScript:Y,clearPrompt:Z}}async function RS(J){let[z,...Y]=J;if(z===void 0||z==="--help"||z==="-h"||z==="help"){process.stdout.write(`${U4}
136
- `);return}let{getRepoInitOverride:Z,setRepoInitOverride:X,resolveRepoRoot:G}=await Promise.resolve().then(() => (A1(),tz)),{existsSync:Q}=await import("fs"),{join:f}=await import("path");if(z==="show"){let[H]=Y.filter((L)=>!L.startsWith("-")),B=G(pf(process.cwd(),H??".")),V=Z(B),j=Q(f(B,".kobe","init.sh")),K=Q(f(B,".kobe","init-prompt.md"));console.log(`repo: ${B}`),console.log(` .kobe/init.sh: ${j?"present (wins)":"absent"}`),console.log(` .kobe/init-prompt.md: ${K?"present (wins)":"absent"}`),console.log(` override initScript: ${V.initScript?PX(V.initScript):"(unset)"}`),console.log(` override initPrompt: ${V.initPrompt?PX(V.initPrompt):"(unset)"}`);return}if(z==="set"){let H=OS(Y);if(H.initScript===void 0&&H.initPrompt===void 0)cY("set needs at least one of --init-script(-file) / --init-prompt(-file)");let B=G(pf(process.cwd(),H.path??".")),V=X(B,{...H.initScript!==void 0?{initScript:H.initScript}:{},...H.initPrompt!==void 0?{initPrompt:H.initPrompt}:{}});console.log(`updated override for ${B}`),console.log(` initScript: ${V.initScript?PX(V.initScript):"(unset)"}`),console.log(` initPrompt: ${V.initPrompt?PX(V.initPrompt):"(unset)"}`);return}if(z==="unset"){let{path:H,clearScript:B,clearPrompt:V}=AS(Y),j=G(pf(process.cwd(),H??".")),K=X(j,{...B?{initScript:""}:{},...V?{initPrompt:""}:{}});console.log(`cleared override for ${j}`),console.log(` initScript: ${K.initScript?PX(K.initScript):"(unset)"}`),console.log(` initPrompt: ${K.initPrompt?PX(K.initPrompt):"(unset)"}`);return}cY(`unknown verb "${z}"`)}function PX(J){let z=J.replace(/\s+/g," ").trim();return z.length>60?`"${z.slice(0,57)}\u2026"`:`"${z}"`}var U4;var L4=b(()=>{U4=["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 gS}from"child_process";function bS(J){let[z,Y]=J.split("/");if(!z||!Y)throw Error(`invalid GitHub repository slug: ${J}`);return{owner:z,name:Y}}function M4(J,z){let Y=J.trim();if(!Y)throw Error(`${z} is required`);return Y}function F4(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 O4(J,z,Y){let Z=["api","graphql","-f",`query=${J}`];for(let[H,B]of Object.entries(z))Z.push("-f",`${H}=${B}`);let X=Y.spawn("gh",Z,{encoding:"utf8"});if(X.error)throw Error(`failed to run gh: ${X.error.message}`);let G=typeof X.stdout==="string"?X.stdout:String(X.stdout??""),Q=typeof X.stderr==="string"?X.stderr:String(X.stderr??""),f;try{f=JSON.parse(G)}catch{throw Error(`failed to parse gh response: ${F4(Q,void 0)}`)}if((X.status??0)!==0||f.errors?.length)throw Error(F4(Q,f.errors));if(!f.data)throw Error("GitHub CLI response did not include data");return f.data}function kS(J){return`${J}
123
+ `;var D4=C(()=>{V4()});var O4={};Q1(O4,{runExportSubcommand:()=>xS,renderExport:()=>M4,displayWidth:()=>rH});function CS(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
+ ${F4}
126
+ `),process.exit(2)}function kS(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=L4(G)}else if(Z.startsWith("--format="))z=L4(Z.slice(9));else cB(`unexpected argument "${Z}"`)}return z}function L4(J){if(J==="json"||J==="csv"||J==="table")return J;cB(`unknown format "${J}" (expected json, csv, or table)`)}function bS(J){if(/[",\r\n]/.test(J))return`"${J.replace(/"/g,'""')}"`;return J}function SS(J){let z=[fQ.join(",")];for(let Y of J)z.push(fQ.map((Z)=>bS(Y[Z])).join(","));return z.join(`
127
+ `)}function rH(J){let z=0;for(let Y of J)z+=IS(Y.codePointAt(0));return z}function IS(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 yS(J,z){return J+" ".repeat(Math.max(0,z-rH(J)))}function TS(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)=>yS(G[X],z[X])).join(" ").trimEnd(),Z={};for(let G of fQ)Z[G]=G;return[Y(Z),...J.map(Y)].join(`
128
+ `)}function M4(J,z){let Y=J.map(CS);if(z==="json")return JSON.stringify(Y,null,2);if(z==="csv")return SS(Y);return TS(Y)}async function xS(J){if(J.includes("--help")||J.includes("-h")||J.includes("help")){process.stdout.write(`${F4}
129
+ `);return}let z=kS(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(`${M4(G,z)}
131
+ `)}var F4,fQ;var A4=C(()=>{tJ();F4=["Usage: kobe export [--json | --csv | --format <json|csv|table>]","","Print the task list (from ~/.kobe/tasks.json) to stdout. Read-only and","daemon-free \u2014 works with the kobe daemon down.","","Options:"," --json JSON array of tasks (default)"," --csv CSV with a header row"," --format <fmt> One of: json, csv, table"," -h, --help Print this help",""].join(`
132
+ `),fQ=["id","title","status","archived","vendor","branch","repo","worktreePath"]});var N4={};Q1(N4,{runRepoSubcommand:()=>PS});import{readFileSync as uS}from"fs";import{resolve as oH}from"path";function lY(J){process.stderr.write(`kobe repo: ${J}
133
+
134
+ ${g4}
135
+ `),process.exit(2)}function R4(J){try{return uS(oH(process.cwd(),J),"utf8")}catch(z){lY(`cannot read ${J}: ${z instanceof Error?z.message:String(z)}`)}}function ES(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=R4(G());else if(Z==="--init-prompt")z.initPrompt=G();else if(Z==="--init-prompt-file")z.initPrompt=R4(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 wS(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 PS(J){let[z,...Y]=J;if(z===void 0||z==="--help"||z==="-h"||z==="help"){process.stdout.write(`${g4}
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=ES(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}=wS(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 g4;var C4=C(()=>{g4=["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 hS}from"child_process";function cS(J){let[z,Y]=J.split("/");if(!z||!Y)throw Error(`invalid GitHub repository slug: ${J}`);return{owner:z,name:Y}}function k4(J,z){let Y=J.trim();if(!Y)throw Error(`${z} is required`);return Y}function b4(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 S4(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: ${b4(Q,void 0)}`)}if((G.status??0)!==0||H.errors?.length)throw Error(b4(Q,H.errors));if(!H.data)throw Error("GitHub CLI response did not include data");return H.data}function dS(J){return`${J}
138
138
 
139
139
  ---
140
- Submitted from kobe ${p0}.`}function hX(J,z={}){let Y=M4(J.title,"feedback title"),Z=kS(M4(J.body,"feedback body")),X=(z.repoSlug??sY)();if(!X)throw Error("package repository is not a GitHub repository");let{owner:G,name:Q}=bS(X),f=J.categorySlug?.trim()||wj,H={spawn:z.spawn??gS},V=O4(CS,{owner:G,name:Q},H).repository,j=V?.id;if(!j)throw Error(`GitHub repository not found: ${X}`);let K=V.discussionCategories?.nodes?.find((O)=>O.slug===f);if(!K)throw Error(`GitHub Discussion category not found: ${f}`);let A=O4(NS,{repositoryId:j,categoryId:K.id,title:Y,body:Z},H).createDiscussion?.discussion;if(!A?.url||typeof A.number!=="number")throw Error("GitHub did not return the created Discussion");return{number:A.number,url:A.url}}var wj="feedback",CS=`
140
+ Submitted from kobe ${r0}.`}function vG(J,z={}){let Y=k4(J.title,"feedback title"),Z=dS(k4(J.body,"feedback body")),G=(z.repoSlug??JZ)();if(!G)throw Error("package repository is not a GitHub repository");let{owner:X,name:Q}=cS(G),H=J.categorySlug?.trim()||dB,f={spawn:z.spawn??hS},V=S4(vS,{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=S4(mS,{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",vS=`
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
- `,NS=`
153
+ `,mS=`
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 rf=b(()=>{MJ()});async function A4(J={}){let z=J.mode==="require-running"?await zz():await gz();if(!z)return null;return{client:z,close:()=>z.close()}}var R4=b(()=>{FJ()});var u4={};f1(u4,{verbSchema:()=>cj,verbHelp:()=>T4,validateAgainstSpec:()=>vj,schemaIndex:()=>S4,runApiSubcommand:()=>tS,parseFlags:()=>hj,parseAgentsSpec:()=>b4,invokeVerb:()=>sS,fullSchema:()=>I4,findVerb:()=>GQ,deliverPrompt:()=>y4,defaultApiRuntime:()=>dj,apiUsage:()=>of,VerbArgs:()=>mj,VERB_GROUPS:()=>mX,VERBS:()=>cX,FANOUT_CAP:()=>vX,ApiError:()=>F1,API_VERBS:()=>TS,API_SCHEMA_VERSION:()=>Pj});import{resolve as g4}from"path";function N4(J){for(let[z,Y]of Object.entries(mX))if(Y.includes(J))return z;return"other"}async function IS(J){let z=J.args.str("verb");if(z){let Z=GQ(z);if(!Z)throw new F1(`unknown verb: ${z}`,"BAD_VERB");return cj(Z)}let Y=J.args.str("group");if(Y)return xS(Y);if(J.args.bool("all"))return I4();return S4()}function GQ(J){let z=sf[J]??J;return cX.find((Y)=>Y.name===z)}function hj(J,z=new Set){let Y=new Map,Z=!1,X=!1;for(let G=0;G<J.length;G++){let Q=J[G];if(!Q.startsWith("--")&&Q!=="-h")throw new F1(`unexpected positional arg: ${Q}`,"BAD_FLAG");if(Q==="-h"){X=!0;continue}let f=Q.indexOf("=");if(f!==-1){let V=Q.slice(2,f),j=Q.slice(f+1);if(V==="pretty")Z=j!=="false"&&j!=="0";else if(V==="help")X=j!=="false"&&j!=="0";else Y.set(V,j);continue}let H=Q.slice(2);if(H==="pretty"){Z=!0;continue}if(H==="help"){X=!0;continue}if(z.has(H)){Y.set(H,"true");continue}let B=J[G+1];if(B===void 0||B.startsWith("--"))throw new F1(`flag --${H} requires a value`,"BAD_FLAG");Y.set(H,B),G+=1}return{flags:Y,pretty:Z,help:X}}function vj(J,z){let Y=new Set(J.flags.map((Z)=>Z.name));for(let Z of z.keys())if(!Y.has(Z))throw new F1(`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 F1(`--${Z.name} is required for "${J.name}"`,"MISSING_FLAG");if(Z.type==="enum"&&Z.values){let X=z.get(Z.name);if(X!==void 0&&!Z.values.includes(X))throw new F1(`--${Z.name} must be one of ${Z.values.join(", ")}`,"BAD_FLAG")}if(Z.type==="int"){let X=z.get(Z.name);if(X!==void 0){let G=Number.parseInt(X,10);if(!Number.isInteger(G)||G<=0)throw new F1(`--${Z.name} must be a positive integer`,"BAD_FLAG")}}}}class mj{verb;flags;constructor(J,z){this.verb=J;this.flags=z}spec(J){let z=this.verb.flags.find((Y)=>Y.name===J);if(!z)throw Error(`internal: --${J} is not declared on verb "${this.verb.name}"`);return z}str(J){this.spec(J);let z=this.flags.get(J);return z&&z.length>0?z:void 0}require(J){let z=this.str(J);if(z===void 0)throw new F1(`--${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 F1(`--${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 F1(`--${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 F1(`--${J} must be a positive integer`,"BAD_FLAG");return Y}path(J){let z=this.str(J);return z===void 0?void 0:g4(process.cwd(),z)}requirePath(J){return g4(process.cwd(),this.require(J))}}function b4(J){let z=[];for(let Y of J.split(",")){let Z=Y.trim();if(!Z)continue;let X=Z.indexOf(":");if(X===-1)throw new F1(`--agents entry "${Z}" must be vendor:count`,"BAD_FLAG");let G=Z.slice(0,X);if(!l1.includes(G))throw new F1(`--agents vendor "${G}" must be one of ${l1.join(", ")}`,"BAD_FLAG");let Q=Number.parseInt(Z.slice(X+1),10);if(!Number.isInteger(Q)||Q<=0)throw new F1(`--agents count for "${G}" must be a positive integer`,"BAD_FLAG");if(z.length+Q>vX)throw new F1(`--agents requests ${z.length+Q} agents, exceeds the cap of ${vX}`,"BAD_FLAG");for(let f=0;f<Q;f++)z.push(G)}if(z.length===0)throw new F1('--agents specified no agents (e.g. "claude:2,codex:1")',"BAD_FLAG");return z}function yS(J){return{name:J.name,type:J.type,required:J.required??!1,...J.values?{values:J.values}:{},...J.default!==void 0?{default:J.default}:{},...J.placeholder?{placeholder:J.placeholder}:{},description:J.description}}function cj(J){return{name:J.name,group:N4(J.name),summary:J.summary,offline:J.offline??!1,flags:J.flags.map(yS)}}function S4(){return{apiVersion:Pj,kobeVersion:p0,hint:"Compact index. Drill into ONE verb: `kobe api schema --verb <name>` (or `kobe api <verb> --help`). One group: `--group <g>`. Whole spec: `--all`.",groups:mX,verbs:cX.map((J)=>({name:J.name,group:N4(J.name),summary:J.summary})),globalFlags:k4,aliases:sf}}function xS(J){let z=mX[J];if(!z)throw new F1(`unknown group: ${J}. Groups: ${Object.keys(mX).join(", ")}`,"BAD_FLAG");return{group:J,verbs:z.map((Y)=>{let Z=GQ(Y);return{name:Y,summary:Z?.summary??""}})}}function I4(){return{apiVersion:Pj,kobeVersion:p0,output:{success:"one JSON object on stdout, newline-terminated, exit 0",error:'{"error":{"message","code"}} on stderr, exit != 0',pretty:"--pretty indents stdout JSON"},globalFlags:k4,aliases:sf,groups:mX,verbs:cX.map(cj)}}function uS(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 T4(J){let z=[`kobe api ${J.name} ${uS(J)}`.trimEnd(),"",J.summary,""],Y=Object.entries(sf).find(([,Z])=>Z===J.name)?.[0];if(Y)z.push(`Alias: ${Y}`,"");if(J.flags.length>0){z.push("Flags:");for(let Z of J.flags){let X=Z.required?" (required)":"",G=Z.default!==void 0?` [default: ${Z.default}]`:"",Q=Z.type==="enum"&&Z.values?` {${Z.values.join("|")}}`:"";z.push(` --${Z.name}${Q}${X}${G} ${Z.description}`)}z.push("")}return z.push("Global: [--pretty] [--help]"),z.join(`
168
- `)}function of(){return["usage: kobe api <verb> [flags] [--pretty] [--help]","","Explore the full surface (names, flags, types) with: kobe api schema","","verbs:",...cX.map((z)=>` ${z.name.padEnd(18)} ${z.summary}`),"","Output is one JSON object on stdout (exit 0); errors are JSON on stderr (exit != 0)."].join(`
169
- `)}function ES(J,z){let Y=z?JSON.stringify(J,null,2):JSON.stringify(J);process.stdout.write(`${Y}
167
+ `;var sH=C(()=>{AJ()});async function I4(J={}){let z=J.mode==="require-running"?await Zz():await kz();if(!z)return null;return{client:z,close:()=>z.close()}}var y4=C(()=>{RJ()});var d4={};Q1(d4,{verbSchema:()=>aB,verbHelp:()=>v4,validateAgainstSpec:()=>lB,schemaIndex:()=>P4,runApiSubcommand:()=>WI,parseFlags:()=>iB,parseAgentsSpec:()=>E4,invokeVerb:()=>BI,fullSchema:()=>h4,findVerb:()=>jQ,deliverPrompt:()=>m4,defaultApiRuntime:()=>_B,apiUsage:()=>tH,VerbArgs:()=>$B,VERB_GROUPS:()=>cG,VERBS:()=>dG,FANOUT_CAP:()=>mG,ApiError:()=>O1,API_VERBS:()=>lS,API_SCHEMA_VERSION:()=>nB});import{resolve as T4}from"path";function u4(J){for(let[z,Y]of Object.entries(cG))if(Y.includes(J))return z;return"other"}async function iS(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 aS(Y);if(J.args.bool("all"))return h4();return P4()}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:T4(process.cwd(),z)}requirePath(J){return T4(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 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 $S(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:u4(J.name),summary:J.summary,offline:J.offline??!1,flags:J.flags.map($S)}}function P4(){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:u4(J.name),summary:J.summary})),globalFlags:w4,aliases:eH}}function aS(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 h4(){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:w4,aliases:eH,groups:cG,verbs:dG.map(aB)}}function _S(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 v4(J){let z=[`kobe api ${J.name} ${_S(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 pS(J,z){let Y=z?JSON.stringify(J,null,2):JSON.stringify(J);process.stdout.write(`${Y}
170
170
  `)}function BY(J,z,Y=1){process.stderr.write(`${JSON.stringify({error:{message:J,code:z}})}
171
- `),process.exit(Y)}async function y4(J,z,Y,Z=wS){let X=z.worktreePath;if(!X)X=(await J.request("task.ensureWorktree",{taskId:z.id})).worktreePath;if(!X)throw new F1(`task ${z.id} has no worktree`,"NO_WORKTREE");let G=N1(z.id),Q=await Z.sessionExists(G);if(!Q){let B=await Z.resolveEngineLaunchInit(z.repo??"",X,{kind:"none"});if(!await Z.ensureSession({name:G,cwd:X,command:Z.engineCommand(z.vendor),taskId:z.id,vendor:z.vendor,repo:z.repo,launchInit:B}))throw new F1(`failed to start tmux session for ${z.id}`,"SESSION_FAILED")}let{pane:f,ready:H}=await Z.waitForEnginePane(G,!Q);if(!f)throw new F1(`no engine pane in session ${G}`,"NO_ENGINE_PANE");return await Z.pasteAndSubmit(f,Y),{session:G,pane:f,started:!Q,engineReady:H}}async function PS(J){let z=null,Y=J.onChannel("active-task",(Z)=>{z=Z.taskId});try{await J.subscribe()}finally{Y()}return z}function dJ(J){if(!J.client)throw new F1("daemon required","BAD_DAEMON");return J.client}async function Nz(J,z,Y){return dJ(J).request(z,Y)}async function hS(J){let z=J.args.str("title"),Y=J.args.str("body");if(z===void 0&&Y===void 0)throw new F1("issue-update requires --title and/or --body","MISSING_FLAG");return Nz(J,"issue.mutate",{repoRoot:J.args.requirePath("repo"),op:{type:"update",id:J.args.int("id"),title:z,body:Y}})}async function vS(J){let z=dJ(J),{args:Y,runtime:Z}=J,G={repo:await Z.resolveRepoRoot(Y.requirePath("repo"))},Q=Y.str("title");if(Q)G.title=Q;let f=Y.str("branch");if(f)G.branch=f;let H=Y.str("base-branch");if(H)G.baseRef=H;let B=Y.vendor()??await Z.defaultVendor();if(B)G.vendor=B;let V=await z.request("task.create",G),j=V.taskId;await z.request("task.setActive",{taskId:j});let K=Y.enumOf("status");if(K)await z.request("task.status",{taskId:j,status:K});let L=Y.bool("pin");if(L!==void 0)await z.request("task.pin",{taskId:j,pinned:L});let A=V.task;if(K||L!==void 0)A=(await z.request("task.get",{taskId:j})).task;let O=Y.str("prompt");if(!O)return{taskId:j,task:A,started:!1};let R=await J.runtime.deliverPrompt(z,{id:j,worktreePath:A.worktreePath,vendor:A.vendor,repo:A.repo},O);return A=(await z.request("task.get",{taskId:j})).task,{taskId:j,task:A,started:R.started,engineReady:R.engineReady,session:R.session}}async function mS(J){let z=dJ(J),Y=J.args.require("prompt"),Z=J.args.str("task-id");if(!Z){let Q=await PS(z);if(!Q)throw new F1("no --task-id given and no active task \u2014 open a task first or pass --task-id","MISSING_TARGET");Z=Q}let X=await z.request("task.get",{taskId:Z}),G=await J.runtime.deliverPrompt(z,{id:Z,worktreePath:X.task.worktreePath,vendor:X.task.vendor,repo:X.task.repo},Y);return{ok:!0,taskId:Z,session:G.session,started:G.started,engineReady:G.engineReady}}async function cS(J){let z=dJ(J),Y=J.args.require("task-id"),Z=J.args.require("prompt");return await z.request("session.deliver",{taskId:Y,text:Z,source:"dispatcher"}),{ok:!0,taskId:Y,routed:"session.deliver"}}async function dS(J){let z=dJ(J),Y=J.args.require("task-id"),Z=J.args.require("text");return await z.request("note.file",{taskId:Y,text:Z})}async function nS(J){let z=dJ(J),Y=J.args.require("task-id"),Z=await z.request("task.get",{taskId:Y}),X=await J.runtime.isTaskRunning(Y);return{task:Z.task,running:X}}async function iS(J){return dJ(J).request("task.list")}async function lS(J){let z=dJ(J),Z=J.args.bool("none")?null:J.args.require("task-id");return await z.request("task.setActive",{taskId:Z}),{ok:!0,activeTaskId:Z}}async function $S(J){let z=dJ(J),Y=J.args.require("task-id"),Z=J.args.bool("archived")??!0,X=await z.request("task.archive",{taskId:Y,archived:Z});if(Z)await J.runtime.tearDownSession(Y);return X}async function aS(J){let z=dJ(J),Y=J.args.require("task-id"),Z=J.args.bool("force")??!1,X=await z.request("task.delete",{taskId:Y,force:Z});return await J.runtime.tearDownSession(Y),X}async function _S(J){let z=dJ(J),{args:Y}=J,Z={repo:Y.requirePath("repo"),worktreePath:Y.requirePath("worktree")},X=Y.str("branch");if(X)Z.branch=X;let G=Y.vendor();if(G)Z.vendor=G;let Q=Y.str("title");if(Q)Z.title=Q;return z.request("worktree.adopt",Z)}async function pS(J){let z=dJ(J),{args:Y,runtime:Z}=J,X=await Z.resolveRepoRoot(Y.requirePath("repo")),G=Y.require("prompt"),Q=Y.str("title"),f=Y.str("base-branch"),H=Y.str("agents"),B=await Z.defaultVendor(),V=H?b4(H):Array(Y.int("count")??1).fill(Y.vendor()??B??"claude");if(V.length>vX)throw new F1(`fan-out of ${V.length} exceeds the cap of ${vX} \u2014 spawn in batches`,"BAD_FLAG");let j=[];for(let K of V){let L={repo:X,vendor:K};if(Q)L.title=Q;if(f)L.baseRef=f;let A=await z.request("task.create",L),O=await J.runtime.deliverPrompt(z,{id:A.taskId,worktreePath:A.task.worktreePath,vendor:K,repo:A.task.repo},G);j.push({taskId:A.taskId,vendor:K,started:O.started,engineReady:O.engineReady,session:O.session})}return{count:j.length,tasks:j}}async function rS(J){let z=dJ(J),{args:Y,runtime:Z}=J,X=Y.str("task-ids"),G=Y.path("repo"),Q;if(X)Q=X.split(",").map((H)=>H.trim()).filter(Boolean);else if(G){let H=await Z.resolveRepoRoot(G),{tasks:B}=await z.request("task.list");Q=[];for(let V of B){if(V.archived)continue;if(await Z.resolveRepoRoot(V.repo)===H)Q.push(V.id)}}else throw new F1("collect needs --task-ids id1,id2 or --repo PATH","MISSING_TARGET");let f=[];for(let H of Q){let{task:B}=await z.request("task.get",{taskId:H}),V=await Z.isTaskRunning(H),j=B.worktreePath?await Z.readWorktreeChanges(B.worktreePath):{added:0,deleted:0};f.push({taskId:B.id,title:B.title,branch:B.branch,worktreePath:B.worktreePath,vendor:B.vendor,status:B.status,running:V,changes:j})}return{tasks:f}}async function oS(J){return{ok:!0,discussion:hX({title:J.args.require("title"),body:J.args.require("body"),categorySlug:J.args.str("category")})}}function x4(J,z,Y,Z){return{args:new mj(J,z),client:Y,runtime:Z}}async function sS(J,z,Y){let Z=GQ(J);if(!Z)throw new F1(`unknown verb: ${J}`,"BAD_VERB");let X=new Set(Z.flags.filter((Q)=>Q.type==="bool").map((Q)=>Q.name)),G=hj(z,X);return vj(Z,G.flags),Z.handler(x4(Z,G.flags,Y.client,Y.runtime??dj))}async function tS(J){let[z,...Y]=J;if(!z||z==="--help"||z==="-h"||z==="help"){if(!z)BY(of(),"MISSING_VERB",2);process.stdout.write(`${of()}
172
- `);return}let Z=GQ(z);if(!Z)BY(`unknown verb: ${z}
173
- ${of()}`,"BAD_VERB",2);let X=new Set(Z.flags.filter((f)=>f.type==="bool").map((f)=>f.name)),G;try{G=hj(Y,X)}catch(f){if(f instanceof F1)BY(f.message,f.code,2);BY(f instanceof Error?f.message:String(f),"BAD_FLAG",2)}if(G.help){process.stdout.write(`${T4(Z)}
174
- `);return}try{vj(Z,G.flags)}catch(f){if(f instanceof F1)BY(f.message,f.code,2);BY(f instanceof Error?f.message:String(f),"BAD_FLAG",2)}let Q=null;if(!Z.offline)try{Q=await A4()}catch(f){BY(`could not reach or start the kobe daemon: ${f instanceof Error?f.message:String(f)}`,"BAD_DAEMON",2)}try{let f=await Z.handler(x4(Z,G.flags,Q?.client??null,dj));ES(f,G.pretty)}catch(f){if(f instanceof F1)BY(f.message,f.code,1);BY(f instanceof Error?f.message:String(f),"RPC_ERROR",1)}finally{Q?.close()}}var Pj=2,vX=10,C4,SS,F1,K1,sf,mX,cX,TS,k4,wS,dj;var E4=b(()=>{sJ();rf();h1();$q();$1();MJ();R4();C4=["backlog","in_progress","in_review","done","canceled","error"],SS=["open","doing","hold","done"];F1=class F1 extends Error{code;constructor(J,z){super(J);this.code=z}};K1={repo:(J=!0)=>({name:"repo",type:"string",required:J,placeholder:"PATH",description:"Repo root (git toplevel). Relative paths resolve against $PWD."}),taskId:(J=!0)=>({name:"task-id",type:"string",required:J,placeholder:"ID",description:"Target task id (from `list` / `add`)."}),vendor:()=>({name:"vendor",type:"enum",values:l1,placeholder:"V",description:"Engine vendor for the task."}),title:()=>({name:"title",type:"string",placeholder:"T",description:"Human task title."}),prompt:(J,z)=>({name:"prompt",type:"string",required:J,placeholder:"TEXT",description:z})},sf={"spawn-task":"add"},mX={discover:["schema"],read:["list","get-task","collect"],create:["add","fan-out"],drive:["send","dispatch","note","set-active"],edit:["rename","set-branch","set-vendor","set-status"],issues:["issue-list","issue-create","issue-set-status","issue-update"],lifecycle:["archive","pin","delete"],worktree:["ensure-worktree","adopt","discover-adoptable"],feedback:["feedback"]};cX=[{name:"schema",summary:"Explore the API. Default = a COMPACT index (groups + verb summaries, no flags). Drill in with --verb / --group; --all for the full spec.",flags:[{name:"verb",type:"string",placeholder:"NAME",description:"Full flag detail for ONE verb."},{name:"group",type:"string",placeholder:"G",description:"List the verbs in one group (compact)."},{name:"all",type:"bool",description:"The COMPLETE spec \u2014 every verb AND every flag (large; avoid by default)."}],offline:!0,handler:IS},{name:"list",summary:"List all tasks (incl. archived). Returns { tasks }.",flags:[],handler:iS},{name:"get-task",summary:"Read one task's metadata. `.running` = its tmux session is live.",flags:[K1.taskId()],handler:nS},{name:"add",summary:"Create a task (shows in the sidebar immediately). With --prompt it also starts the engine and delivers it. Alias: spawn-task.",flags:[K1.repo(),K1.title(),{name:"branch",type:"string",placeholder:"B",description:"Explicit branch name (else auto kobe/<slug>-<id>)."},{name:"base-branch",type:"string",placeholder:"B",description:"Base ref the worktree branches from."},K1.vendor(),{name:"status",type:"enum",values:C4,default:"backlog",description:"Initial lifecycle status."},{name:"pin",type:"bool",description:"Pin the task to the top of the sidebar."},K1.prompt(!1,"Optional first message \u2014 when set, materializes the worktree, starts the engine, and pastes it.")],handler:vS},{name:"fan-out",summary:`Spawn N tasks of ONE prompt in a single call (parallel attempts). Capped at ${vX}.`,flags:[K1.repo(),K1.prompt(!0,"Shared prompt delivered to every spawned task."),{name:"count",type:"int",placeholder:"N",description:"Number of tasks of one vendor (with --vendor)."},{name:"agents",type:"string",placeholder:"claude:2,codex:1",description:"Per-vendor counts (alternative to --count)."},K1.vendor(),K1.title(),{name:"base-branch",type:"string",placeholder:"B",description:"Base ref for every worktree."}],handler:pS},{name:"send",summary:"Paste a follow-up prompt into a task's running engine (one full turn). Defaults to the active task.",flags:[K1.taskId(!1),K1.prompt(!0,"Text pasted + submitted into the engine pane.")],handler:mS},{name:"dispatch",summary:"Route text into a task's live session via the daemon's session.deliver channel \u2014 the front-end hosting the session pastes it. The dispatcher's messenger (docs/design/dispatcher.md); unlike `send`, it never spawns or touches tmux itself.",flags:[K1.taskId(!0),K1.prompt(!0,"Text delivered into the task's engine session.")],handler:cS},{name:"note",summary:"File a one-line field note \u2014 a resolved, repo-level gotcha worth sharing. kobe forwards it to the repo's dispatcher session (the main session), which relays it to the in-flight tasks that benefit (docs/design/dispatcher.md).",flags:[K1.taskId(!0),{name:"text",type:"string",required:!0,placeholder:"TEXT",description:"One line: the verified conclusion another session could act on."}],handler:dS},{name:"feedback",summary:"Create a GitHub Discussion in the kobe repo's Feedback category through `gh`.",flags:[{name:"title",type:"string",required:!0,placeholder:"T",description:"Discussion title."},{name:"body",type:"string",required:!0,placeholder:"TEXT",description:"Discussion body."},{name:"category",type:"string",default:wj,placeholder:"SLUG",description:"Discussion category slug."}],offline:!0,handler:oS},{name:"issue-list",summary:"List daemon-owned issues for a repo.",flags:[K1.repo()],handler:(J)=>Nz(J,"issue.list",{repoRoot:J.args.requirePath("repo")})},{name:"issue-create",summary:"Create a daemon-owned issue for a repo.",flags:[K1.repo(),{name:"title",type:"string",required:!0,placeholder:"T",description:"Issue title."},{name:"body",type:"string",placeholder:"TEXT",description:"Issue body."}],handler:(J)=>Nz(J,"issue.mutate",{repoRoot:J.args.requirePath("repo"),op:{type:"create",title:J.args.require("title"),body:J.args.str("body")}})},{name:"issue-set-status",summary:"Set a daemon-owned issue's status.",flags:[K1.repo(),{name:"id",type:"int",required:!0,placeholder:"N",description:"Issue id."},{name:"status",type:"enum",required:!0,values:SS,description:"New issue status."}],handler:(J)=>Nz(J,"issue.mutate",{repoRoot:J.args.requirePath("repo"),op:{type:"setStatus",id:J.args.int("id"),status:J.args.requireEnum("status")}})},{name:"issue-update",summary:"Update a daemon-owned issue's title and/or body.",flags:[K1.repo(),{name:"id",type:"int",required:!0,placeholder:"N",description:"Issue id."},{name:"title",type:"string",placeholder:"T",description:"New title."},{name:"body",type:"string",placeholder:"TEXT",description:"New body."}],handler:hS},{name:"collect",summary:"Read-only comparison snapshot of several tasks (identity, branch, .running, uncommitted .changes).",flags:[{name:"task-ids",type:"csv",placeholder:"a,b,c",description:"Comma-separated task ids."},K1.repo(!1)],handler:rS},{name:"rename",summary:"Set a task's title.",flags:[K1.taskId(),{name:"title",type:"string",required:!0,placeholder:"T",description:"New title."}],handler:(J)=>Nz(J,"task.rename",{taskId:J.args.require("task-id"),title:J.args.require("title")})},{name:"set-branch",summary:"Rename a task's branch (git branch -m if materialized, else recorded).",flags:[K1.taskId(),{name:"branch",type:"string",required:!0,placeholder:"B",description:"New branch name."}],handler:(J)=>Nz(J,"task.setBranch",{taskId:J.args.require("task-id"),branch:J.args.require("branch")})},{name:"set-vendor",summary:"Change a task's engine vendor (takes effect on next session rebuild).",flags:[K1.taskId(),{...K1.vendor(),required:!0}],handler:(J)=>Nz(J,"task.setVendor",{taskId:J.args.require("task-id"),vendor:J.args.requireEnum("vendor")})},{name:"set-status",summary:"Set a task's lifecycle status.",flags:[K1.taskId(),{name:"status",type:"enum",required:!0,values:C4,description:"New status."}],handler:(J)=>Nz(J,"task.status",{taskId:J.args.require("task-id"),status:J.args.requireEnum("status")})},{name:"archive",summary:"Archive (or with --archived=false, unarchive) a task. Non-destructive: worktree/branch/history stay.",flags:[K1.taskId(),{name:"archived",type:"bool",default:"true",description:"true to archive, false to unarchive."}],handler:$S},{name:"pin",summary:"Pin (or with --pinned=false, unpin) a task to the top of the sidebar.",flags:[K1.taskId(),{name:"pinned",type:"bool",default:"true",description:"true to pin, false to unpin."}],handler:(J)=>Nz(J,"task.pin",{taskId:J.args.require("task-id"),pinned:J.args.bool("pinned")??!0})},{name:"set-active",summary:"Set the shared active task (the focus every Tasks pane highlights). Pass --none to clear.",flags:[K1.taskId(!1),{name:"none",type:"bool",description:"Clear the active task instead of setting one."}],handler:lS},{name:"ensure-worktree",summary:"Materialize a task's git worktree on disk now (without starting an engine). Returns { worktreePath }.",flags:[K1.taskId()],handler:(J)=>Nz(J,"task.ensureWorktree",{taskId:J.args.require("task-id")})},{name:"delete",summary:"Permanently remove a task (and its worktree). DESTRUCTIVE \u2014 prefer `archive`. Needs --force on a dirty worktree.",flags:[K1.taskId(),{name:"force",type:"bool",description:"Delete even with uncommitted changes."}],handler:aS},{name:"discover-adoptable",summary:"List existing git worktrees in a repo not yet tracked as kobe tasks. Returns { worktrees }.",flags:[K1.repo()],handler:(J)=>Nz(J,"worktree.discoverAdoptable",{repo:J.args.requirePath("repo")})},{name:"adopt",summary:"Import an existing git worktree as a kobe task. Returns { task }.",flags:[K1.repo(),{name:"worktree",type:"string",required:!0,placeholder:"PATH",description:"Path of the worktree to adopt."},{name:"branch",type:"string",placeholder:"B",description:"Branch override (else the worktree's own)."},K1.vendor(),K1.title()],handler:_S}],TS=cX.map((J)=>J.name);k4=[{name:"pretty",type:"bool",description:"Pretty-print stdout JSON."},{name:"help",type:"bool",description:"Show usage for the verb and exit."}];wS={sessionExists:V1,ensureSession:async(J)=>(await Promise.resolve().then(() => (YJ(),vJ))).ensureSession(J),waitForEnginePane:bG,pasteAndSubmit:kG,resolveEngineLaunchInit:async(J,z,Y)=>(await Promise.resolve().then(() => (SX(),Pf))).resolveEngineLaunchInit(J,z,Y),engineCommand:oJ};dj={isTaskRunning:(J)=>V1(N1(J)),deliverPrompt:(J,z,Y)=>y4(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(() => (yX(),IU))).readWorktreeChanges(J),tearDownSession:async(J)=>{let z=N1(J);await hz(z).catch(()=>{}),await eJ(z).catch(()=>{})}}});var v4={};f1(v4,{updatePlan:()=>w4,runUpdateSubcommand:()=>JI,parseUpdateArgs:()=>P4});import{spawnSync as eS}from"child_process";function w4(){return{command:"sh",args:["-c",_z],display:_z}}function P4(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
- `),h4(process.stderr),process.exit(2)}return{help:!1,dryRun:z}}function h4(J){J.write(["Usage: kobe update [--dry-run]","","Runs kobe's GitHub-hosted update script.","","Default command:",` ${_z}`,"","Script URL:",` ${vQ}`,"","Manual fallback:",` ${iH()}`,"","Examples:"," kobe update"," kobe update --dry-run",""].join(`
177
- `))}async function JI(J,z){let Y={spawn:z?.spawn??eS,stdout:z?.stdout??process.stdout,stderr:z?.stderr??process.stderr,exit:z?.exit??((Q)=>process.exit(Q))},Z=P4(J);if(Z.help){h4(Y.stdout);return}let X=w4();if(Y.stdout.write(`kobe ${p0} -> latest
178
- `),Y.stdout.write(`running: ${X.display}
179
- `),Z.dryRun)return;let G=Y.spawn(X.command,X.args,{stdio:"inherit"});if(G.error)Y.stderr.write(`kobe update: failed to run ${X.command}: ${G.error.message}
180
- `),Y.exit(1);Y.exit(G.status??1)}var m4=b(()=>{MJ()});var i4={};f1(i4,{runThemeSubcommand:()=>WI});import{existsSync as d4,mkdirSync as zI,readFileSync as YI,readdirSync as ZI,unlinkSync as XI,writeFileSync as GI}from"fs";import{basename as c4,join as ij,resolve as QI}from"path";function jY(J){process.stderr.write(`kobe theme: ${J}
181
- `),process.exit(1)}function dY(J){process.stderr.write(`kobe theme: ${J}
182
-
183
- `),n4(),process.exit(2)}function qI(){let J=[];J.push("bundled:");for(let Z of[...nj].sort())J.push(` ${Z} [built-in]`);let z=MX(),Y=[];try{Y=ZI(z).filter((Z)=>Z.endsWith(".json")).sort()}catch{}if(J.push(""),J.push(`user (${z}):`),Y.length===0)J.push(" (none)");else for(let Z of Y){let X=Z.slice(0,-5),G=ij(z,Z),Q=nj.includes(X)?" (overrides built-in)":"";J.push(` ${X}${Q} ${G}`)}process.stdout.write(`${J.join(`
171
+ `),process.exit(Y)}async function m4(J,z,Y,Z=rS){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 oS(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 sS(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 tS(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 eS(J){let z=nJ(J),Y=J.args.require("prompt"),Z=J.args.str("task-id");if(!Z){let Q=await oS(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 JI(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 zI(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 YI(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 ZI(J){return nJ(J).request("task.list")}async function GI(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 XI(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 QI(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 HI(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?E4(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 fI(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 jI(J){return{ok:!0,discussion:vG({title:J.args.require("title"),body:J.args.require("body"),categorySlug:J.args.str("category")})}}function c4(J,z,Y,Z){return{args:new $B(J,z),client:Y,runtime:Z}}async function BI(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(c4(Z,X.flags,Y.client,Y.runtime??_B))}async function WI(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(`${v4(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 I4()}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(c4(Z,X.flags,Q?.client??null,_B));pS(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,x4,nS,O1,D1,eH,cG,dG,lS,w4,rS,_B;var n4=C(()=>{eJ();sH();v1();pq();a1();AJ();y4();x4=["backlog","in_progress","in_review","done","canceled","error"],nS=["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:iS},{name:"list",summary:"List all tasks (incl. archived). Returns { tasks }.",flags:[],handler:ZI},{name:"get-task",summary:"Read one task's metadata. `.running` = its tmux session is live.",flags:[D1.taskId()],handler:YI},{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:x4,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:tS},{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:HI},{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:eS},{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:JI},{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:zI},{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:jI},{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:nS,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:sS},{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:fI},{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:x4,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:XI},{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:GI},{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:QI},{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}],lS=dG.map((J)=>J.name);w4=[{name:"pretty",type:"bool",description:"Pretty-print stdout JSON."},{name:"help",type:"bool",description:"Show usage for the verb and exit."}];rS={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)=>m4(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(),hU))).readWorktreeChanges(J),tearDownSession:async(J)=>{let z=C1(J);await cz(z).catch(()=>{}),await zz(z).catch(()=>{})}}});var a4={};Q1(a4,{updatePlan:()=>i4,runUpdateSubcommand:()=>KI,parseUpdateArgs:()=>l4});import{spawnSync as VI}from"child_process";function i4(){return{command:"sh",args:["-c",pz],display:pz}}function l4(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
+ `),$4(process.stderr),process.exit(2)}return{help:!1,dryRun:z}}function $4(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 KI(J,z){let Y={spawn:z?.spawn??VI,stdout:z?.stdout??process.stdout,stderr:z?.stderr??process.stderr,exit:z?.exit??((Q)=>process.exit(Q))},Z=l4(J);if(Z.help){$4(Y.stdout);return}let G=i4();if(Y.stdout.write(`kobe ${r0} -> latest
178
+ `),Y.stdout.write(`running: ${G.display}
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 _4=C(()=>{AJ()});var s4={};Q1(s4,{runThemeSubcommand:()=>kI});import{existsSync as r4,mkdirSync as UI,readFileSync as DI,readdirSync as LI,unlinkSync as FI,writeFileSync as MI}from"fs";import{basename as p4,join as rB,resolve as OI}from"path";function WY(J){process.stderr.write(`kobe theme: ${J}
181
+ `),process.exit(1)}function $Y(J){process.stderr.write(`kobe theme: ${J}
182
+
183
+ `),o4(),process.exit(2)}function AI(){let J=[];J.push("bundled:");for(let Z of[...pB].sort())J.push(` ${Z} [built-in]`);let z=OG(),Y=[];try{Y=LI(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(`
184
184
  `)}
185
- `)}async function fI(J){if(/^https?:\/\//i.test(J)){let G;try{G=await fetch(J)}catch(V){jY(`failed to fetch ${J}: ${V instanceof Error?V.message:String(V)}`)}if(!G.ok)jY(`failed to fetch ${J}: HTTP ${G.status} ${G.statusText}`);let Q=await G.text(),f=J.split(/[?#]/)[0]??J,H=c4(f)||"theme.json",B=H.endsWith(".json")?H.slice(0,-5):H;return{text:Q,defaultName:B}}let z=QI(process.cwd(),J),Y;try{Y=YI(z,"utf8")}catch(G){jY(`failed to read ${z}: ${G instanceof Error?G.message:String(G)}`)}let Z=c4(z),X=Z.endsWith(".json")?Z.slice(0,-5):Z;return{text:Y,defaultName:X}}function HI(J){let z=null,Y,Z=!1;for(let X=0;X<J.length;X+=1){let G=J[X];if(G==="--force"||G==="-f"){Z=!0;continue}if(G==="--name"||G==="-n"){let Q=J[X+1];if(Q===void 0)dY("--name requires a value");Y=Q,X+=1;continue}if(G.startsWith("--name=")){Y=G.slice(7);continue}if(G.startsWith("--"))dY(`unknown flag: ${G}`);if(z===null){z=G;continue}dY(`unexpected positional argument: ${G}`)}if(z===null)dY("missing <source> (URL or path to theme JSON)");return{source:z,opts:{name:Y,force:Z}}}async function BI(J){let{source:z,opts:Y}=HI(J),{text:Z,defaultName:X}=await fI(z),G;try{G=JSON.parse(Z)}catch(V){jY(`source is not valid JSON: ${V instanceof Error?V.message:String(V)}`)}let Q=Jf(G);if(!Q.ok)jY(`source is not a valid kobe theme: ${Q.reason}`);let f=Y.name??X;if(!f||!/^[a-zA-Z0-9._-]+$/.test(f))jY(`invalid theme name "${f}" (use letters, digits, '.', '_', '-')`);let H=MX();zI(H,{recursive:!0});let B=ij(H,`${f}.json`);if(d4(B)&&!Y.force)jY(`${B} already exists (pass --force to overwrite)`);GI(B,`${JSON.stringify(Q.theme,null,2)}
186
- `,"utf8"),process.stdout.write(`installed theme "${f}" -> ${B}
187
- `)}function jI(J){let z=J[0];if(!z)dY("missing <name>");if(J.length>1)dY(`unexpected extra arguments after "${z}"`);if(nj.includes(z))jY(`"${z}" is a built-in theme and cannot be removed`);let Y=ij(MX(),`${z}.json`);if(!d4(Y))jY(`no user theme named "${z}" (looked for ${Y})`);XI(Y),process.stdout.write(`removed theme "${z}" (${Y})
188
- `)}function n4(){process.stderr.write(["Usage: kobe theme <command> [args]","","Commands:"," list List bundled and user-installed themes"," add <source> [--name <name>] Install a theme from a URL or local path"," Pass --force to overwrite an existing user theme"," remove <name> Remove a user-installed theme","",`User themes live under: ${MX()}`,"Schema: https://raw.githubusercontent.com/sma1lboy/kobe/main/packages/kobe/src/tui/context/theme/theme.schema.json",""].join(`
189
- `))}async function WI(J){let[z,...Y]=J;if(!z||z==="--help"||z==="-h"||z==="help"){if(n4(),!z)process.exit(2);return}if(z==="list"||z==="ls"){if(Y.length>0)dY(`"${z}" takes no arguments`);qI();return}if(z==="add"){await BI(Y);return}if(z==="remove"||z==="rm"){jI(Y);return}dY(`unknown action "${z}" (try "list", "add", or "remove")`)}var nj;var l4=b(()=>{o1();zf();WB();nj=["claude","conductor","dracula","nord","opencode","osaka-jade","tokyonight"]});var p4={};f1(p4,{runFeedbackSubcommand:()=>KI,parseFeedbackArgs:()=>_4});import{readFileSync as $4}from"fs";function nY(J){process.stderr.write(`kobe feedback: ${J}
190
-
191
- ${a4}
192
- `),process.exit(2)}function VI(J){if(J==="-")return $4(0,"utf8");return $4(J,"utf8")}function _4(J){let z={help:!1};for(let Y=0;Y<J.length;Y++){let Z=J[Y];if(Z==="--help"||Z==="-h"||Z==="help")return{...z,help:!0};if(Z==="--title"){if(z.title=J[++Y],z.title===void 0)nY("--title requires a value");continue}if(Z==="--body"){if(z.body=J[++Y],z.body===void 0)nY("--body requires a value");continue}if(Z==="--body-file"){if(z.bodyFile=J[++Y],z.bodyFile===void 0)nY("--body-file requires a value");continue}if(Z==="--category"){if(z.category=J[++Y],z.category===void 0)nY("--category requires a value");continue}nY(`unexpected argument "${Z}"`)}return z}async function KI(J){let z=_4(J);if(z.help){process.stdout.write(`${a4}
193
- `);return}if(!z.title)nY("--title is required");if(z.body&&z.bodyFile)nY("pass either --body or --body-file, not both");let Y=z.bodyFile?VI(z.bodyFile):z.body;if(!Y)nY("--body or --body-file is required");let Z=hX({title:z.title,body:Y,categorySlug:z.category});console.log(`created Discussion #${Z.number}: ${Z.url}`)}var a4;var r4=b(()=>{rf();a4=["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 UI}from"os";async function o4(J={}){let z=J.homeDir??process.env.KOBE_HOME_DIR??UI(),Y=new wX({homeDir:z});await Y.load();let Z=new $f,X=new Eq({store:Y,worktrees:Z});return{homeDir:z,orchestrator:X,store:Y,worktrees:Z,async close(){X.dispose()}}}var s4=b(()=>{RG();YQ();uj()});var e4={};f1(e4,{runDaemonSubcommand:()=>LI});function t4(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 DI(){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 LI(J){let[z="status"]=J,Y=Iz(),Z=ez();if(z==="--help"||z==="-h"||z==="help"){t4(process.stdout);return}if(z==="status"){let f=new aJ(Y);try{let H=await f.request("daemon.status");console.log(JSON.stringify(H,null,2))}catch{let H=await xX(Z);if(H)console.log(`kobe daemon: no daemon socket at ${Y} (stale pidfile pid=${H})`);else console.log(`kobe daemon: no daemon running at ${Y}`);process.exitCode=1}finally{f.close()}return}if(z==="stop"){let f=new aJ(Y);try{await f.request("daemon.stop"),console.log("kobe daemon: stop requested")}catch{console.log(`kobe daemon: no daemon running at ${Y}`)}finally{f.close()}return}if(z==="restart"){await uX(Y,Z),(await gz()).close(),console.log(`kobe daemon: restarted, listening on ${Y}`);return}if(z!=="start")process.stderr.write(`kobe daemon: unknown command "${z}"
196
-
197
- `),t4(process.stderr),process.exit(2);bK();let X=await o4(),G=await hU(X.orchestrator,{socketPath:Y,pidPath:Z,homeDir:X.homeDir,webPort:DI(),webHost:process.env.KOBE_WEB_HOST,webStaticDir:process.env.KOBE_DAEMON_WEB_STATIC_DIR,onStop:async()=>{await X.close()}});if(console.log(`kobe daemon: listening on ${G.socketPath}`),G.webPort)console.log(`kobe daemon: web transport listening on http://127.0.0.1:${G.webPort}`);let Q=async()=>{await G.close(),await X.close(),process.exit(0)};process.once("SIGINT",()=>void Q()),process.once("SIGTERM",()=>void Q())}var JD=b(()=>{XG();FJ();df();nZ();cf();s4()});import{existsSync as MI,readFileSync as FI}from"fs";import{homedir as OI}from"os";import{join as zD}from"path";function aj(J={}){return["skills","add",AI,"--skill","kobe","--agent",J.agent??tf]}function ef(J={}){return`npx ${aj(J).join(" ")}`}function _j(J={}){let z=J.home??OI(),Y=J.cwd??process.cwd();return[zD(z,YD),zD(Y,YD)]}function RI(J){let z=J.match(/kobe-skill-version:\s*(\d+)/);return z?Number.parseInt(z[1],10):null}function qQ(J){let z=_j(J).find((X)=>MI(X));if(!z)return{installed:!1,installedVersion:null,currentVersion:lj,stale:!1};let Y=null;try{Y=RI(FI(z,"utf8"))}catch{Y=null}let Z=Y===null||Y<lj;return{installed:!0,installedVersion:Y,currentVersion:lj,stale:Z}}function ZD(){let J=qQ();if(!J.installed){if(C1($j)==="1")return;s1($j,"1"),process.stderr.write(`
185
+ `)}async function RI(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=p4(H)||"theme.json",j=f.endsWith(".json")?f.slice(0,-5):f;return{text:Q,defaultName:j}}let z=OI(process.cwd(),J),Y;try{Y=DI(z,"utf8")}catch(X){WY(`failed to read ${z}: ${X instanceof Error?X.message:String(X)}`)}let Z=p4(z),G=Z.endsWith(".json")?Z.slice(0,-5):Z;return{text:Y,defaultName:G}}function gI(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 NI(J){let{source:z,opts:Y}=gI(J),{text:Z,defaultName:G}=await RI(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();UI(f,{recursive:!0});let j=rB(f,`${H}.json`);if(r4(j)&&!Y.force)WY(`${j} already exists (pass --force to overwrite)`);MI(j,`${JSON.stringify(Q.theme,null,2)}
186
+ `,"utf8"),process.stdout.write(`installed theme "${H}" -> ${j}
187
+ `)}function CI(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(!r4(Y))WY(`no user theme named "${z}" (looked for ${Y})`);FI(Y),process.stdout.write(`removed theme "${z}" (${Y})
188
+ `)}function o4(){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 kI(J){let[z,...Y]=J;if(!z||z==="--help"||z==="-h"||z==="help"){if(o4(),!z)process.exit(2);return}if(z==="list"||z==="ls"){if(Y.length>0)$Y(`"${z}" takes no arguments`);AI();return}if(z==="add"){await NI(Y);return}if(z==="remove"||z==="rm"){CI(Y);return}$Y(`unknown action "${z}" (try "list", "add", or "remove")`)}var pB;var t4=C(()=>{t1();GH();Fj();pB=["claude","conductor","dracula","nord","opencode","osaka-jade","tokyonight"]});var YD={};Q1(YD,{runFeedbackSubcommand:()=>SI,parseFeedbackArgs:()=>zD});import{readFileSync as e4}from"fs";function aY(J){process.stderr.write(`kobe feedback: ${J}
190
+
191
+ ${JD}
192
+ `),process.exit(2)}function bI(J){if(J==="-")return e4(0,"utf8");return e4(J,"utf8")}function zD(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 SI(J){let z=zD(J);if(z.help){process.stdout.write(`${JD}
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?bI(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 JD;var ZD=C(()=>{sH();JD=["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 II}from"os";async function GD(J={}){let z=J.homeDir??process.env.KOBE_HOME_DIR??II(),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 XD=C(()=>{kX();qQ();mB()});var qD={};Q1(qD,{runDaemonSubcommand:()=>TI});function QD(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 yI(){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 TI(J){let[z="status"]=J,Y=xz(),Z=ez();if(z==="--help"||z==="-h"||z==="help"){QD(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}"
196
+
197
+ `),QD(process.stderr),process.exit(2);E6();let G=await GD(),X=await $U(G.orchestrator,{socketPath:Y,pidPath:Z,homeDir:G.homeDir,webPort:yI(),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 HD=C(()=>{HX();RJ();lH();$Z();iH();XD()});import{existsSync as xI,readFileSync as uI}from"fs";import{homedir as EI}from"os";import{join as fD}from"path";function tB(J={}){return["skills","add",wI,"--skill","kobe","--agent",J.agent??Jf]}function zf(J={}){return`npx ${tB(J).join(" ")}`}function eB(J={}){let z=J.home??EI(),Y=J.cwd??process.cwd();return[fD(z,jD),fD(Y,jD)]}function PI(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)=>xI(G));if(!z)return{installed:!1,installedVersion:null,currentVersion:oB,stale:!1};let Y=null;try{Y=PI(uI(z,"utf8"))}catch{Y=null}let Z=Y===null||Y<oB;return{installed:!0,installedVersion:Y,currentVersion:oB,stale:Z}}function BD(){let J=WQ();if(!J.installed){if(N1(sB)==="1")return;e1(sB,"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
- ${QQ}
200
- (wraps \`${ef()}\`; check anytime with \`kobe doctor\`)
199
+ ${BQ}
200
+ (wraps \`${zf()}\`; check anytime with \`kobe doctor\`)
201
201
 
202
- `);return}if(J.stale){let z=`${$j}:v${J.currentVersion}`;if(C1(z)==="1")return;s1(z,"1");let Y=J.installedVersion===null?"an older":`v${J.installedVersion}`;process.stderr.write(`
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(`
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
- ${QQ}
204
+ ${BQ}
205
205
 
206
- `)}}var lj=2,YD=".claude/skills/kobe/SKILL.md",QQ="kobe skill install",AI="Sma1lboy/kobe",tf="claude-code",$j="skillHintSeen";var JH=b(()=>{A1()});var zH={};f1(zH,{runResetSubcommand:()=>wI,runReloadSubcommand:()=>PI,runDoctorSubcommand:()=>uI});import{existsSync as gI,readFileSync as QD,statSync as CI}from"fs";import{unlink as NI}from"fs/promises";import{join as qD}from"path";import{createInterface as bI}from"readline";function kI(J){try{return process.kill(J,0),!0}catch(z){return z.code==="EPERM"}}async function SI(J){let z=new aJ(J);try{return await z.request("daemon.status")}catch{return null}finally{z.close()}}function II(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 TI(J){if(J<1024)return`${J} B`;if(J<1048576)return`${(J/1024).toFixed(1)} KB`;return`${(J/1048576).toFixed(1)} MB`}function pj(J){try{let z=CI(J);return`present (${TI(z.size)}, modified ${z.mtime.toISOString()})`}catch{return"absent"}}function fD(J){try{let z=JSON.parse(QD(J,"utf8"));return Array.isArray(z.tasks)?z.tasks.length:null}catch{return null}}function yI(J,z){try{return QD(J,"utf8").split(`
206
+ `)}}var oB=2,jD=".claude/skills/kobe/SKILL.md",BQ="kobe skill install",wI="Sma1lboy/kobe",Jf="claude-code",sB="skillHintSeen";var Yf=C(()=>{A1()});var Zf={};Q1(Zf,{runResetSubcommand:()=>rI,runReloadSubcommand:()=>oI,runDoctorSubcommand:()=>_I});import{existsSync as hI,readFileSync as KD,statSync as vI}from"fs";import{unlink as mI}from"fs/promises";import{join as UD}from"path";import{createInterface as cI}from"readline";function dI(J){try{return process.kill(J,0),!0}catch(z){return z.code==="EPERM"}}async function nI(J){let z=new rJ(J);try{return await z.request("daemon.status")}catch{return null}finally{z.close()}}function iI(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 lI(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=vI(J);return`present (${lI(z.size)}, modified ${z.mtime.toISOString()})`}catch{return"absent"}}function DD(J){try{let z=JSON.parse(KD(J,"utf8"));return Array.isArray(z.tasks)?z.tasks.length:null}catch{return null}}function $I(J,z){try{return KD(J,"utf8").split(`
207
207
  `).filter((Z)=>Z.trim().length>0).slice(-z).join(`
208
- `)}catch{return""}}async function rj(J){let z=Bun.spawn(CZ(...J),{stdin:"ignore",stdout:"pipe",stderr:"ignore"}),[Y,Z]=await Promise.all([new Response(z.stdout).text().catch(()=>""),z.exited]);return{code:Z,stdout:Y}}async function xI(){if(!await Pz())return 0;let{code:J,stdout:z}=await rj(["list-sessions","-F","#{session_name}"]);if(J!==0)return 0;return z.split(`
209
- `).filter((Y)=>Y.trim().length>0).length}async function uI(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
- `));return}let z=J.find((j)=>j.length>0);if(z!==void 0)process.stderr.write([`kobe doctor: unexpected argument "${z}"`,"","Usage: kobe doctor (read-only; takes no options)",""].join(`
211
- `)),process.exit(2);let Y=Iz(),Z=ez(),X=aQ(),G=qD(fJ(),"tasks.json"),Q=lJ(),f=["kobe doctor",` home: ${Sz()}`,` socket: ${Y}`,""],H=await SI(Y);if(H){let j=typeof H.daemonPid==="number"?H.daemonPid:"?",K=typeof H.uptimeMs==="number"?II(H.uptimeMs):"?",L=typeof H.taskCount==="number"?H.taskCount:"?",A=typeof H.attachedClients==="number"?H.attachedClients:"?";f.push(`daemon: \u2713 running (pid ${j}, up ${K}, ${L} task(s), ${A} client(s))`);let O=typeof H.kobeVersion==="string"?H.kobeVersion:void 0;if(O&&O!==p0)f.push(` \u26A0 stale build: daemon is v${O}, you launched v${p0}`),f.push(" \u2192 run `kobe daemon restart`, then `kobe reload` in any open kobe sessions");else if(O)f.push(` build: v${O}`)}else{let j=await xX(Z);if(j&&kI(j))f.push(`daemon: \u2717 WEDGED \u2014 process alive (pid ${j}) but not accepting connections`),f.push(" \u2192 run `kobe reset` to kill it, then relaunch kobe");else if(j)f.push(`daemon: \u2717 not running (stale pidfile \u2192 pid ${j} is gone)`),f.push(" \u2192 harmless; relaunch kobe, or `kobe reset` to clear the stale pidfile");else f.push("daemon: \u2717 not running (no pidfile)");if(gI(Y))f.push(` orphan socket file present: ${Y}`);let K=yI(X,8);if(K){f.push(" last lines of daemon.log:");for(let L of K.split(`
212
- `))f.push(` \u2502 ${L}`)}}if(f.push(""),await Pz())f.push(`tmux: ${await xI()} kobe session(s) on \`${Az}\` socket`);else f.push("tmux: \u2717 not found on PATH (task sessions need tmux)");f.push("");let B=qQ();if(!B.installed)f.push("skill: \u2717 kobe agent skill not installed (optional \u2014 lets a coding agent drive `kobe api`)"),f.push(` \u2192 ${QQ}`);else if(B.stale){let j=B.installedVersion===null?"unstamped":`v${B.installedVersion}`;f.push(`skill: \u26A0 kobe agent skill out of date (${j}; this kobe wants v${B.currentVersion})`),f.push(` \u2192 ${QQ}`)}else f.push(`skill: \u2713 kobe agent skill installed (v${B.installedVersion})`);f.push("");let V=fD(G);f.push(`tasks.json: ${pj(G)}${V===null?"":` \u2014 ${V} task(s)`}`),f.push(`state.json: ${pj(Q)}`),f.push(`daemon.log: ${pj(X)}`),console.log(f.join(`
213
- `))}async function EI(J){let z=bI({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 XD(J,z){try{await NI(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 GD(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 wI(J){if(J.includes("--help")||J.includes("-h")||J.includes("help")){GD(process.stdout);return}let z=new Set(["--hard","--yes","-y"]),Y=J.find((j)=>!z.has(j));if(Y!==void 0)process.stderr.write(`kobe reset: unknown argument "${Y}"
215
-
216
- `),GD(process.stderr),process.exit(2);let Z=J.includes("--hard"),X=J.includes("--yes")||J.includes("-y"),G=Iz(),Q=ez(),f=qD(fJ(),"tasks.json"),H=lJ();if(console.log("kobe reset will:"),console.log(" \u2022 stop the kobe daemon (graceful \u2192 SIGTERM \u2192 SIGKILL)"),console.log(` \u2022 remove its socket + pidfile (${G})`),console.log(` \u2022 kill all kobe tmux sessions on the \`${Az}\` socket`),Z){let j=fD(f);console.log(` \u2022 DELETE the task index${j===null?"":` (${j} task(s))`} \u2014 ${f}`),console.log(` \u2022 DELETE the UI state \u2014 ${H}`)}if(console.log(" \u2022 NOT touch your git worktrees under ~/.kobe/worktrees/ or legacy repo-local roots"),!Z)console.log(" (your task list & worktrees are kept \u2014 add --hard to also wipe the task index + UI state)");if(!X){if(!process.stdin.isTTY){console.log(`
217
- re-run with --yes to proceed (no interactive terminal for a y/N prompt)`);return}if(!await EI(Z?`
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 aI(){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 _I(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
+ `));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=UD(jJ(),"tasks.json"),Q=_J(),H=["kobe doctor",` home: ${Tz()}`,` socket: ${Y}`,""],f=await nI(Y);if(f){let B=typeof f.daemonPid==="number"?f.daemonPid:"?",K=typeof f.uptimeMs==="number"?iI(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&&dI(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(hI(Y))H.push(` orphan socket file present: ${Y}`);let K=$I(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 aI()} 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=DD(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 pI(J){let z=cI({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 WD(J,z){try{await mI(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 VD(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 rI(J){if(J.includes("--help")||J.includes("-h")||J.includes("help")){VD(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
+
216
+ `),VD(process.stderr),process.exit(2);let Z=J.includes("--hard"),G=J.includes("--yes")||J.includes("-y"),X=xz(),Q=ez(),H=UD(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=DD(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 pI(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:B,method:V}=await uX(G,Q);if(console.log(V==="absent"?" daemon: was not running (cleared any stale socket/pidfile)":` daemon: stopped via ${V}${B?` (pid ${B})`:""}`),await Pz()){let{code:j}=await rj(["kill-server"]);console.log(j===0?` tmux: killed all sessions on \`${Az}\``:` tmux: no sessions on \`${Az}\``)}else console.log(" tmux: not installed \u2014 no sessions to kill");if(Z)await XD(f,"task index"),await XD(H,"UI state");console.log(`
220
- kobe: reset complete. Relaunch kobe to start fresh.`)}async function PI(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
- `));return}let z=J.find((f)=>f.length>0);if(z!==void 0)process.stderr.write(`kobe reload: unexpected argument "${z}"
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 WD(H,"task index"),await WD(f,"UI state");console.log(`
220
+ kobe: reset complete. Relaunch kobe to start fresh.`)}async function oI(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
+ `));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 Pz()){console.log("kobe reload: tmux is not installed \u2014 no panes to reload");return}let{code:Y,stdout:Z}=await rj(["list-sessions","-F","#{session_name}"]);if(Y!==0){console.log(`kobe reload: no kobe tmux sessions on the \`${Az}\` socket`);return}let X=Z.split(`
225
- `).map((f)=>f.trim()).filter((f)=>f.length>0);if(X.length===0){console.log(`kobe reload: no kobe tmux sessions on the \`${Az}\` socket`);return}let{refreshKobeWorkspacePanes:G}=await Promise.resolve().then(() => (YJ(),vJ)),Q=0;for(let f of X)try{await G(f),Q++}catch(H){console.error(` failed to reload session "${f}": ${H instanceof Error?H.message:String(H)}`)}console.log(`kobe: reloaded Tasks/Ops panes in ${Q}/${X.length} session(s) \u2014 engine panes untouched`)}var YH=b(()=>{XG();df();nZ();cf();o1();JH();h1();MJ()});var UD={};f1(UD,{runWebSubcommand:()=>lI});import{existsSync as jD}from"fs";import{homedir as hI}from"os";import{resolve as ZH}from"path";import{fileURLToPath as WD}from"url";function HD(){let J=process.env.KOBE_HOME_DIR?.trim();return J?`sandbox: ${J}`:`${hI()}/.kobe (production)`}function mI(){let J=WD(import.meta.url),z=[ZH(J,"../../../../kobe-web/dist"),ZH(J,"../../web-ui")];for(let Y of z)if(jD(`${Y}/index.html`))return Y;return}function cI(){let J=WD(import.meta.url),z=[ZH(J,"../../../../kobe-web/pty-server.mjs"),ZH(J,"../../web-ui/pty-server.mjs")];for(let Y of z)if(jD(Y))return Y;return}async function BD(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 dI(J){let z;try{z=(await(await fetch(`http://localhost:${J}${KD}`,{signal:AbortSignal.timeout(800)})).text()).trim()}catch{return}if(z!==VD)throw Error(`PTY port ${J} is in use by a non-kobe service; refusing to replace it`);let Y=await BD(J);for(let X of Y)try{process.kill(X,"SIGTERM")}catch{}let Z=Date.now()+2000;while(Date.now()<Z){if((await BD(J)).length===0)return;await new Promise((X)=>setTimeout(X,100))}}async function nI(J){let z=cI();if(!z)return null;let Y=J.webPort+2;if(J.takeover)await dI(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 iI(J,z){if(process.env.KOBE_DAEMON_WEB_PORT=String(J),z)process.env.KOBE_DAEMON_WEB_STATIC_DIR=z;await EX();let Y;try{Y=(await(await fetch(`http://127.0.0.1:${J}${KD}`,{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!==VD)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 lI(J){if(J.includes("--help")||J.includes("-h")){process.stdout.write(vI);return}let z=5174,Y=J.indexOf("--port");if(Y!==-1){let Z=Number.parseInt(J[Y+1]??"",10);if(!Number.isFinite(Z))process.stderr.write(`kobe web: --port needs a number
227
- `),process.exit(2);z=Z}try{let Z=J.includes("--routes-only")||J.includes("--bridge-only"),X=!J.includes("--no-takeover"),G=Z?void 0:mI();if(!Z&&!G)throw Error("web assets are missing from this kobe build; run `bun run build` in packages/kobe, or `bun run dev` in packages/kobe-web from a source checkout");await iI(z,G);let Q=null,f=!1,H=()=>{if(f)return;f=!0,Q?.kill(),Q=null};if(Z)process.stdout.write(`kobe daemon web transport listening on http://localhost:${z} (routes only)
228
- `),process.stdout.write(` home: ${HD()}
229
- `);else if(Q=await nI({webPort:z,takeover:X}),process.stdout.write(`kobe web \u2192 http://localhost:${z}
230
- `),process.stdout.write(` home: ${HD()}
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 gD={};Q1(gD,{runWebSubcommand:()=>Gy});import{existsSync as MD}from"fs";import{homedir as sI}from"os";import{resolve as Xf}from"path";import{fileURLToPath as OD}from"url";function LD(){let J=process.env.KOBE_HOME_DIR?.trim();return J?`sandbox: ${J}`:`${sI()}/.kobe (production)`}function eI(){let J=OD(import.meta.url),z=[Xf(J,"../../../../kobe-web/dist"),Xf(J,"../../web-ui")];for(let Y of z)if(MD(`${Y}/index.html`))return Y;return}function Jy(){let J=OD(import.meta.url),z=[Xf(J,"../../../../kobe-web/pty-server.mjs"),Xf(J,"../../web-ui/pty-server.mjs")];for(let Y of z)if(MD(Y))return Y;return}async function FD(J){try{let z=Bun.spawn(["lsof","-nP",`-iTCP:${J}`,"-sTCP:LISTEN","-t"],{stdout:"pipe",stderr:"ignore"});return(await new Response(z.stdout).text()).split(`
226
+ `).map((Z)=>Number.parseInt(Z.trim(),10)).filter((Z)=>Number.isFinite(Z)&&Z!==process.pid)}catch{return[]}}async function zy(J){let z;try{z=(await(await fetch(`http://localhost:${J}${RD}`,{signal:AbortSignal.timeout(800)})).text()).trim()}catch{return}if(z!==AD)throw Error(`PTY port ${J} is in use by a non-kobe service; refusing to replace it`);let Y=await FD(J);for(let G of Y)try{process.kill(G,"SIGTERM")}catch{}let Z=Date.now()+2000;while(Date.now()<Z){if((await FD(J)).length===0)return;await new Promise((G)=>setTimeout(G,100))}}async function Yy(J){let z=Jy();if(!z)return null;let Y=J.webPort+2;if(J.takeover)await zy(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 Zy(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}${RD}`,{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!==AD)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 Gy(J){if(J.includes("--help")||J.includes("-h")){process.stdout.write(tI);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:eI();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 Zy(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: ${LD()}
229
+ `);else if(Q=await Yy({webPort:z,takeover:G}),process.stdout.write(`kobe web \u2192 http://localhost:${z}
230
+ `),process.stdout.write(` home: ${LD()}
231
231
  `),!Q)process.stderr.write(`kobe web: PTY server not found; terminal tabs will be unavailable
232
- `);process.on("SIGINT",()=>{H(),process.exit(0)}),process.on("SIGTERM",()=>{H(),process.exit(0)}),Q?.exited.then(()=>{if(!f)process.stderr.write(`kobe web: PTY server exited
233
- `),H(),process.exit(1)}),await new Promise(()=>{})}catch(Z){process.stderr.write(`kobe web: ${Z instanceof Error?Z.message:String(Z)}
234
- `),process.exit(1)}}var VD="kobe-web",KD="/__kobe_web",vI=`Usage: kobe web [options]
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
+ `),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 AD="kobe-web",RD="/__kobe_web",tI=`Usage: kobe web [options]
235
235
 
236
236
  Launch the kobe web UI through daemon web transport on http://localhost:<port>.
237
237
 
@@ -240,43 +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 DD=b(()=>{FJ()});var MD={};f1(MD,{runSkillSubcommand:()=>aI});function oj(){return["usage: kobe skill <verb>","","verbs:"," install [--agent NAME] Install the kobe agent skill (wraps `npx skills add`)"," status Show whether the skill is installed"," command [--agent NAME] Print the underlying npx command without running it","",`The skill teaches a coding agent how to drive \`kobe api\`. Default agent: ${tf}.`].join(`
244
- `)}function LD(J){let z=tf;for(let Y=0;Y<J.length;Y++){let Z=J[Y];if(Z==="--agent"){let X=J[Y+1];if(!X||X.startsWith("--"))process.stderr.write(`kobe skill: --agent requires a value
245
- `),process.exit(2);z=X,Y++}else if(Z.startsWith("--agent="))z=Z.slice(8);else process.stderr.write(`kobe skill: unknown flag "${Z}"
246
-
247
- ${oj()}
248
- `),process.exit(2)}return z}async function aI(J){let[z,...Y]=J;if(!z||z==="--help"||z==="-h"||z==="help"){if(process.stdout.write(`${oj()}
249
- `),!z)process.exitCode=2;return}if(!$I.includes(z))process.stderr.write(`kobe skill: unknown verb "${z}"
250
-
251
- ${oj()}
252
- `),process.exit(2);if(z==="status"){let f=qQ(),[H,B]=_j(),V=!f.installed?"\u2717 not installed":f.stale?`\u26A0 out of date (installed ${f.installedVersion===null?"unstamped":`v${f.installedVersion}`}, this kobe wants v${f.currentVersion})`:`\u2713 installed (v${f.installedVersion})`;process.stdout.write([`kobe skill: ${V}`,` looked in: ${H}`,` ${B}`,f.installed&&!f.stale?"":" \u2192 run `kobe skill install` to install / refresh",""].join(`
253
- `));return}if(z==="command"){process.stdout.write(`${ef({agent:LD(Y)})}
254
- `);return}let Z=LD(Y),X=aj({agent:Z});process.stdout.write(`kobe skill: running \`npx ${X.join(" ")}\`
255
- `);let Q=await Bun.spawn(["npx",...X],{stdin:"inherit",stdout:"inherit",stderr:"inherit"}).exited;if(Q!==0)process.stderr.write(`
243
+ `;var ND=C(()=>{RJ()});var kD={};Q1(kD,{runSkillSubcommand:()=>Qy});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 CD(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
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
+
247
+ ${Y9()}
248
+ `),process.exit(2)}return z}async function Qy(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(!Xy.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:CD(Y)})}
254
+ `);return}let Z=CD(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
256
  kobe skill install failed (npx exited ${Q}). Is \`npx\` on PATH and are you online?
257
- You can run it yourself: ${ef({agent:Z})}
257
+ You can run it yourself: ${zf({agent:Z})}
258
258
  `),process.exit(Q||1);process.stdout.write(`kobe skill: installed.
259
- `)}var $I;var FD=b(()=>{JH();$I=["install","status","command"]});var tj={};f1(tj,{runHookSubcommand:()=>eI,readTextWithTimeout:()=>RD,parseWorktreeRemovePath:()=>bD,parseWorktreeAddPath:()=>ND,ensureGlobalKobeHooks:()=>YT});import{homedir as _I}from"os";import{join as AD,resolve as sj}from"path";async function RD(J,z=pI){let Y;try{return await Promise.race([J(),new Promise((Z)=>{Y=setTimeout(()=>Z(""),z)})])}finally{if(Y!==void 0)clearTimeout(Y)}}async function gD(){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 rI(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 sI(J){return!!J&&typeof J==="object"&&!Array.isArray(J)}function CD(J){let z=[],Y=/"([^"]*)"|'([^']*)'|(\S+)/g,Z;while((Z=Y.exec(J))!==null)z.push(Z[1]??Z[2]??Z[3]??"");return z}function ND(J){let z=CD(J),Y=new Set(["-b","-B","--reason"]);for(let Z=0;Z+1<z.length;Z++){if(z[Z]!=="worktree"||z[Z+1]!=="add")continue;let X=Z+2;while(X<z.length){let G=z[X];if(G==="&&"||G==="||"||G===";"||G==="|"||G===">"||G===">>")break;if(G.startsWith("-")){X+=Y.has(G)?2:1;continue}return G}}return}function bD(J){let z=CD(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 X=z[Z];if(X==="&&"||X==="||"||X===";"||X==="|"||X===">"||X===">>")break;if(X.startsWith("-")){Z+=1;continue}return X}}return}async function tI(){let J=await gD(),z=sI(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(),X=ND(Y),G=X?void 0:bD(Y);if(!X&&!G)return;let Q=await zz();if(!Q)return;try{if(X)await Q.request("worktree.reconcile",{cwd:Z,worktreePath:sj(Z,X)});else if(G)await Q.request("worktree.archiveRemoved",{worktreePath:sj(Z,G)})}finally{Q.close()}}async function eI(J){let[z,...Y]=J;if(z==="setup"){await ZT(Y);return}if(z===oI){try{await tI()}catch{}return}try{if(!z||!Lq(z))return;let Z=await gD(),X=rI(Y,"--task-id"),G=typeof Z.cwd==="string"&&Z.cwd?Z.cwd:process.cwd(),Q;for(let H of kD())if(Q=H.activityDetailFromPayload(z,Z),Q)break;let f=await zz();if(!f)return;try{await f.request("engine.reportEvent",{...X?{taskId:X}:{cwd:G},kind:z,...Q?{detail:Q}:{}})}finally{f.close()}}catch{}}function JT(){return l1.map((J)=>w8(J)).filter((J)=>J.supportsWorktreeSync())}function kD(){return l1.map((J)=>w8(J)).filter((J)=>J.supportsHooks())}function SD(){return AD(_I(),".claude","settings.json")}function zT(J){if(!J||J==="off")return;if(J==="global")return SD();if(J.startsWith("repo:"))return AD(sj(J.slice(5)),".claude","settings.json");return J}async function YT(){try{for(let J of kD()){let z=J.globalSettingsPath();if(!z)continue;await J.installActivityHooks(z),await J.installWorktreeWatchHook(z)}await ID()}catch{}}async function ID(){let J=JT();if(J.length===0)return;let z=C1(OD),Y=new Set([SD()]),Z=zT(z);if(Z)Y.add(Z);for(let X of J)for(let G of Y)await X.removeWorktreeSyncHook(G);if(z!=="off")s1(OD,"off")}async function ZT(J){await ID(),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 pI=500,oI="worktree-created",OD="externalWorktreeSync";var ej=b(()=>{FJ();P8();Mq();A1();$1()});function yD(J){var z;if(J>=55296&&J<=57343||J>1114111)return 65533;return(z=XT.get(J))!==null&&z!==void 0?z:J}var J9,XT,TD;var xD=b(()=>{XT=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]]),TD=(J9=String.fromCodePoint)!==null&&J9!==void 0?J9:(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 uD(J){let z=typeof atob==="function"?atob(J):typeof Buffer.from==="function"?Buffer.from(J,"base64").toString("binary"):new Buffer(J,"base64").toString("binary"),Y=z.length&-2,Z=new Uint16Array(Y/2);for(let X=0,G=0;X<Y;X+=2){let Q=z.charCodeAt(X),f=z.charCodeAt(X+1);Z[G++]=Q|f<<8}return Z}var ED;var wD=b(()=>{ED=uD("QR08ALkAAgH6AYsDNQR2BO0EPgXZBQEGLAbdBxMISQrvCmQLfQurDKQNLw4fD4YPpA+6D/IPAAAAAAAAAAAAAAAAKhBMEY8TmxUWF2EYLBkxGuAa3RsJHDscWR8YIC8jSCSIJcMl6ie3Ku8rEC0CLjoupS7kLgAIRU1hYmNmZ2xtbm9wcnN0dVQAWgBeAGUAaQBzAHcAfgCBAIQAhwCSAJoAoACsALMAbABpAGcAO4DGAMZAUAA7gCYAJkBjAHUAdABlADuAwQDBQHIiZXZlAAJhAAFpeW0AcgByAGMAO4DCAMJAEGRyAADgNdgE3XIAYQB2AGUAO4DAAMBA8CFoYZFj4SFjcgBhZAAAoFMqAAFncIsAjgBvAG4ABGFmAADgNdg43fAlbHlGdW5jdGlvbgCgYSBpAG4AZwA7gMUAxUAAAWNzpACoAHIAAOA12Jzc6SFnbgCgVCJpAGwAZABlADuAwwDDQG0AbAA7gMQAxEAABGFjZWZvcnN1xQDYANoA7QDxAPYA+QD8AAABY3LJAM8AayNzbGFzaAAAoBYidgHTANUAAKDnKmUAZAAAoAYjeQARZIABY3J0AOAA5QDrAGEidXNlAACgNSLuI291bGxpcwCgLCFhAJJjcgAA4DXYBd1wAGYAAOA12Dnd5SF2ZdhiYwDyAOoAbSJwZXEAAKBOIgAHSE9hY2RlZmhpbG9yc3UXARoBHwE6AVIBVQFiAWQBZgGCAakB6QHtAfIBYwB5ACdkUABZADuAqQCpQIABY3B5ACUBKAE1AfUhdGUGYWmg0iJ0KGFsRGlmZmVyZW50aWFsRAAAoEUhbCJleXMAAKAtIQACYWVpb0EBRAFKAU0B8iFvbgxhZABpAGwAO4DHAMdAcgBjAAhhbiJpbnQAAKAwIm8AdAAKYQABZG5ZAV0BaSJsbGEAuGB0I2VyRG90ALdg8gA5AWkAp2NyImNsZQAAAkRNUFRwAXQBeQF9AW8AdAAAoJkiaSJudXMAAKCWIuwhdXMAoJUiaSJtZXMAAKCXIm8AAAFjc4cBlAFrKndpc2VDb250b3VySW50ZWdyYWwAAKAyImUjQ3VybHkAAAFEUZwBpAFvJXVibGVRdW90ZQAAoB0gdSJvdGUAAKAZIAACbG5wdbABtgHNAdgBbwBuAGWgNyIAoHQqgAFnaXQAvAHBAcUB8iJ1ZW50AKBhIm4AdAAAoC8i7yV1ckludGVncmFsAKAuIgABZnLRAdMBAKACIe8iZHVjdACgECJuLnRlckNsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbAAAoDMi7yFzcwCgLypjAHIAAOA12J7ccABDoNMiYQBwAACgTSKABURKU1phY2VmaW9zAAsCEgIVAhgCGwIsAjQCOQI9AnMCfwNvoEUh9CJyYWhkAKARKWMAeQACZGMAeQAFZGMAeQAPZIABZ3JzACECJQIoAuchZXIAoCEgcgAAoKEhaAB2AACg5CoAAWF5MAIzAvIhb24OYRRkbAB0oAciYQCUY3IAAOA12AfdAAFhZkECawIAAWNtRQJnAvIjaXRpY2FsAAJBREdUUAJUAl8CYwJjInV0ZQC0YG8AdAFZAloC2WJiJGxlQWN1dGUA3WJyImF2ZQBgYGkibGRlANxi7yFuZACgxCJmJWVyZW50aWFsRAAAoEYhcAR9AgAAAAAAAIECjgIAABoDZgAA4DXYO91EoagAhQKJAm8AdAAAoNwgcSJ1YWwAAKBQIuIhbGUAA0NETFJVVpkCqAK1Au8C/wIRA28AbgB0AG8AdQByAEkAbgB0AGUAZwByAGEA7ADEAW8AdAKvAgAAAACwAqhgbiNBcnJvdwAAoNMhAAFlb7kC0AJmAHQAgAFBUlQAwQLGAs0CciJyb3cAAKDQIekkZ2h0QXJyb3cAoNQhZQDlACsCbgBnAAABTFLWAugC5SFmdAABQVLcAuECciJyb3cAAKD4J+kkZ2h0QXJyb3cAoPon6SRnaHRBcnJvdwCg+SdpImdodAAAAUFU9gL7AnIicm93AACg0iFlAGUAAKCoInAAQQIGAwAAAAALA3Iicm93AACg0SFvJHduQXJyb3cAAKDVIWUlcnRpY2FsQmFyAACgJSJuAAADQUJMUlRhJAM2AzoDWgNxA3oDciJyb3cAAKGTIUJVLAMwA2EAcgAAoBMpcCNBcnJvdwAAoPUhciJldmUAEWPlIWZ00gJDAwAASwMAAFIDaSVnaHRWZWN0b3IAAKBQKWUkZVZlY3RvcgAAoF4p5SJjdG9yQqC9IWEAcgAAoFYpaSJnaHQA1AFiAwAAaQNlJGVWZWN0b3IAAKBfKeUiY3RvckKgwSFhAHIAAKBXKWUAZQBBoKQiciJyb3cAAKCnIXIAcgBvAPcAtAIAAWN0gwOHA3IAAOA12J/c8iFvaxBhAAhOVGFjZGZnbG1vcHFzdHV4owOlA6kDsAO/A8IDxgPNA9ID8gP9AwEEFAQeBCAEJQRHAEphSAA7gNAA0EBjAHUAdABlADuAyQDJQIABYWl5ALYDuQO+A/Ihb24aYXIAYwA7gMoAykAtZG8AdAAWYXIAAOA12AjdcgBhAHYAZQA7gMgAyEDlIm1lbnQAoAgiAAFhcNYD2QNjAHIAEmF0AHkAUwLhAwAAAADpA20lYWxsU3F1YXJlAACg+yVlJ3J5U21hbGxTcXVhcmUAAKCrJQABZ3D2A/kDbwBuABhhZgAA4DXYPN3zImlsb26VY3UAAAFhaQYEDgRsAFSgdSppImxkZQAAoEIi7CNpYnJpdW0AoMwhAAFjaRgEGwRyAACgMCFtAACgcyphAJdjbQBsADuAywDLQAABaXApBC0E8yF0cwCgAyLvJG5lbnRpYWxFAKBHIYACY2Zpb3MAPQQ/BEMEXQRyBHkAJGRyAADgNdgJ3WwibGVkAFMCTAQAAAAAVARtJWFsbFNxdWFyZQAAoPwlZSdyeVNtYWxsU3F1YXJlAACgqiVwA2UEAABpBAAAAABtBGYAAOA12D3dwSFsbACgACLyI2llcnRyZgCgMSFjAPIAcQQABkpUYWJjZGZnb3JzdIgEiwSOBJMElwSkBKcEqwStBLIE5QTqBGMAeQADZDuAPgA+QO0hbWFkoJMD3GNyImV2ZQAeYYABZWl5AJ0EoASjBOQhaWwiYXIAYwAcYRNkbwB0ACBhcgAA4DXYCt0AoNkicABmAADgNdg+3eUiYXRlcgADRUZHTFNUvwTIBM8E1QTZBOAEcSJ1YWwATKBlIuUhc3MAoNsidSRsbEVxdWFsAACgZyJyI2VhdGVyAACgoirlIXNzAKB3IuwkYW50RXF1YWwAoH4qaSJsZGUAAKBzImMAcgAA4DXYotwAoGsiAARBYWNmaW9zdfkE/QQFBQgFCwUTBSIFKwVSIkRjeQAqZAABY3QBBQQFZQBrAMdiXmDpIXJjJGFyAACgDCFsJWJlcnRTcGFjZQAAoAsh8AEYBQAAGwVmAACgDSHpJXpvbnRhbExpbmUAoAAlAAFjdCYFKAXyABIF8iFvayZhbQBwAEQBMQU5BW8AdwBuAEgAdQBtAPAAAAFxInVhbAAAoE8iAAdFSk9hY2RmZ21ub3N0dVMFVgVZBVwFYwVtBXAFcwV6BZAFtgXFBckFzQVjAHkAFWTsIWlnMmFjAHkAAWRjAHUAdABlADuAzQDNQAABaXlnBWwFcgBjADuAzgDOQBhkbwB0ADBhcgAAoBEhcgBhAHYAZQA7gMwAzEAAoREhYXB/BYsFAAFjZ4MFhQVyACphaSNuYXJ5SQAAoEghbABpAGUA8wD6AvQBlQUAAKUFZaAsIgABZ3KaBZ4F8iFhbACgKyLzI2VjdGlvbgCgwiJpI3NpYmxlAAABQ1SsBbEFbyJtbWEAAKBjIGkibWVzAACgYiCAAWdwdAC8Bb8FwwVvAG4ALmFmAADgNdhA3WEAmWNjAHIAAKAQIWkibGRlAChh6wHSBQAA1QVjAHkABmRsADuAzwDPQIACY2Zvc3UA4QXpBe0F8gX9BQABaXnlBegFcgBjADRhGWRyAADgNdgN3XAAZgAA4DXYQd3jAfcFAAD7BXIAAOA12KXc8iFjeQhk6yFjeQRkgANISmFjZm9zAAwGDwYSBhUGHQYhBiYGYwB5ACVkYwB5AAxk8CFwYZpjAAFleRkGHAbkIWlsNmEaZHIAAOA12A7dcABmAADgNdhC3WMAcgAA4DXYptyABUpUYWNlZmxtb3N0AD0GQAZDBl4GawZkB2gHcAd0B80H2gdjAHkACWQ7gDwAPECAAmNtbnByAEwGTwZSBlUGWwb1IXRlOWHiIWRhm2NnAACg6ifsI2FjZXRyZgCgEiFyAACgniGAAWFleQBkBmcGagbyIW9uPWHkIWlsO2EbZAABZnNvBjQHdAAABUFDREZSVFVWYXKABp4GpAbGBssG3AYDByEHwQIqBwABbnKEBowGZyVsZUJyYWNrZXQAAKDoJ/Ihb3cAoZAhQlKTBpcGYQByAACg5CHpJGdodEFycm93AKDGIWUjaWxpbmcAAKAII28A9QGqBgAAsgZiJWxlQnJhY2tldAAAoOYnbgDUAbcGAAC+BmUkZVZlY3RvcgAAoGEp5SJjdG9yQqDDIWEAcgAAoFkpbCJvb3IAAKAKI2kiZ2h0AAABQVbSBtcGciJyb3cAAKCUIeUiY3RvcgCgTikAAWVy4AbwBmUAAKGjIkFW5gbrBnIicm93AACgpCHlImN0b3IAoFopaSNhbmdsZQBCorIi+wYAAAAA/wZhAHIAAKDPKXEidWFsAACgtCJwAIABRFRWAAoHEQcYB+8kd25WZWN0b3IAoFEpZSRlVmVjdG9yAACgYCnlImN0b3JCoL8hYQByAACgWCnlImN0b3JCoLwhYQByAACgUilpAGcAaAB0AGEAcgByAG8A9wDMAnMAAANFRkdMU1Q/B0cHTgdUB1gHXwfxJXVhbEdyZWF0ZXIAoNoidSRsbEVxdWFsAACgZiJyI2VhdGVyAACgdiLlIXNzAKChKuwkYW50RXF1YWwAoH0qaSJsZGUAAKByInIAAOA12A/dZaDYIuYjdGFycm93AKDaIWkiZG90AD9hgAFucHcAege1B7kHZwAAAkxSbHKCB5QHmwerB+UhZnQAAUFSiAeNB3Iicm93AACg9SfpJGdodEFycm93AKD3J+kkZ2h0QXJyb3cAoPYn5SFmdAABYXLcAqEHaQBnAGgAdABhAHIAcgBvAPcA5wJpAGcAaAB0AGEAcgByAG8A9wDuAmYAAOA12EPdZQByAAABTFK/B8YHZSRmdEFycm93AACgmSHpJGdodEFycm93AKCYIYABY2h0ANMH1QfXB/IAWgYAoLAh8iFva0FhAKBqIgAEYWNlZmlvc3XpB+wH7gf/BwMICQgOCBEIcAAAoAUpeQAcZAABZGzyB/kHaSR1bVNwYWNlAACgXyBsI2ludHJmAACgMyFyAADgNdgQ3e4jdXNQbHVzAKATInAAZgAA4DXYRN1jAPIA/gecY4AESmFjZWZvc3R1ACEIJAgoCDUIgQiFCDsKQApHCmMAeQAKZGMidXRlAENhgAFhZXkALggxCDQI8iFvbkdh5CFpbEVhHWSAAWdzdwA7CGEIfQjhInRpdmWAAU1UVgBECEwIWQhlJWRpdW1TcGFjZQAAoAsgaABpAAABY25SCFMIawBTAHAAYQBjAOUASwhlAHIAeQBUAGgAaQDuAFQI9CFlZAABR0xnCHUIcgBlAGEAdABlAHIARwByAGUAYQB0AGUA8gDrBGUAcwBzAEwAZQBzAPMA2wdMImluZQAKYHIAAOA12BHdAAJCbnB0jAiRCJkInAhyImVhawAAoGAgwiZyZWFraW5nU3BhY2WgYGYAAKAVIUOq7CqzCMIIzQgAAOcIGwkAAAAAAAAtCQAAbwkAAIcJAACdCcAJGQoAADQKAAFvdbYIvAjuI2dydWVudACgYiJwIkNhcAAAoG0ibyh1YmxlVmVydGljYWxCYXIAAKAmIoABbHF4ANII1wjhCOUibWVudACgCSL1IWFsVKBgImkibGRlAADgQiI4A2kic3RzAACgBCJyI2VhdGVyAACjbyJFRkdMU1T1CPoIAgkJCQ0JFQlxInVhbAAAoHEidSRsbEVxdWFsAADgZyI4A3IjZWF0ZXIAAOBrIjgD5SFzcwCgeSLsJGFudEVxdWFsAOB+KjgDaSJsZGUAAKB1IvUhbXBEASAJJwnvI3duSHVtcADgTiI4A3EidWFsAADgTyI4A2UAAAFmczEJRgn0JFRyaWFuZ2xlQqLqIj0JAAAAAEIJYQByAADgzyk4A3EidWFsAACg7CJzAICibiJFR0xTVABRCVYJXAlhCWkJcSJ1YWwAAKBwInIjZWF0ZXIAAKB4IuUhc3MA4GoiOAPsJGFudEVxdWFsAOB9KjgDaSJsZGUAAKB0IuUic3RlZAABR0x1CX8J8iZlYXRlckdyZWF0ZXIA4KIqOAPlI3NzTGVzcwDgoSo4A/IjZWNlZGVzAKGAIkVTjwmVCXEidWFsAADgryo4A+wkYW50RXF1YWwAoOAiAAFlaaAJqQl2JmVyc2VFbGVtZW50AACgDCLnJWh0VHJpYW5nbGVCousitgkAAAAAuwlhAHIAAODQKTgDcSJ1YWwAAKDtIgABcXXDCeAJdSNhcmVTdQAAAWJwywnVCfMhZXRF4I8iOANxInVhbAAAoOIi5SJyc2V0ReCQIjgDcSJ1YWwAAKDjIoABYmNwAOYJ8AkNCvMhZXRF4IIi0iBxInVhbAAAoIgi4yJlZWRzgKGBIkVTVAD6CQAKBwpxInVhbAAA4LAqOAPsJGFudEVxdWFsAKDhImkibGRlAADgfyI4A+UicnNldEXggyLSIHEidWFsAACgiSJpImxkZQCAoUEiRUZUACIKJwouCnEidWFsAACgRCJ1JGxsRXF1YWwAAKBHImkibGRlAACgSSJlJXJ0aWNhbEJhcgAAoCQiYwByAADgNdip3GkAbABkAGUAO4DRANFAnWMAB0VhY2RmZ21vcHJzdHV2XgphCmgKcgp2CnoKgQqRCpYKqwqtCrsKyArNCuwhaWdSYWMAdQB0AGUAO4DTANNAAAFpeWwKcQpyAGMAO4DUANRAHmRiImxhYwBQYXIAAOA12BLdcgBhAHYAZQA7gNIA0kCAAWFlaQCHCooKjQpjAHIATGFnAGEAqWNjInJvbgCfY3AAZgAA4DXYRt3lI25DdXJseQABRFGeCqYKbyV1YmxlUXVvdGUAAKAcIHUib3RlAACgGCAAoFQqAAFjbLEKtQpyAADgNdiq3GEAcwBoADuA2ADYQGkAbAHACsUKZABlADuA1QDVQGUAcwAAoDcqbQBsADuA1gDWQGUAcgAAAUJQ0wrmCgABYXLXCtoKcgAAoD4gYQBjAAABZWvgCuIKAKDeI2UAdAAAoLQjYSVyZW50aGVzaXMAAKDcI4AEYWNmaGlsb3JzAP0KAwsFCwkLCwsMCxELIwtaC3IjdGlhbEQAAKACInkAH2RyAADgNdgT3WkApmOgY/Ujc01pbnVzsWAAAWlwFQsgC24AYwBhAHIAZQBwAGwAYQBuAOUACgVmAACgGSGAobsqZWlvACoLRQtJC+MiZWRlc4CheiJFU1QANAs5C0ALcSJ1YWwAAKCvKuwkYW50RXF1YWwAoHwiaSJsZGUAAKB+Im0AZQAAoDMgAAFkcE0LUQv1IWN0AKAPIm8jcnRpb24AYaA3ImwAAKAdIgABY2leC2ILcgAA4DXYq9yoYwACVWZvc2oLbwtzC3cLTwBUADuAIgAiQHIAAOA12BTdcABmAACgGiFjAHIAAOA12KzcAAZCRWFjZWZoaW9yc3WPC5MLlwupC7YL2AvbC90LhQyTDJoMowzhIXJyAKAQKUcAO4CuAK5AgAFjbnIAnQugC6ML9SF0ZVRhZwAAoOsncgB0oKAhbAAAoBYpgAFhZXkArwuyC7UL8iFvblhh5CFpbFZhIGR2oBwhZSJyc2UAAAFFVb8LzwsAAWxxwwvIC+UibWVudACgCyL1JGlsaWJyaXVtAKDLIXAmRXF1aWxpYnJpdW0AAKBvKXIAAKAcIW8AoWPnIWh0AARBQ0RGVFVWYewLCgwQDDIMNwxeDHwM9gIAAW5y8Av4C2clbGVCcmFja2V0AACg6SfyIW93AKGSIUJM/wsDDGEAcgAAoOUhZSRmdEFycm93AACgxCFlI2lsaW5nAACgCSNvAPUBFgwAAB4MYiVsZUJyYWNrZXQAAKDnJ24A1AEjDAAAKgxlJGVWZWN0b3IAAKBdKeUiY3RvckKgwiFhAHIAAKBVKWwib29yAACgCyMAAWVyOwxLDGUAAKGiIkFWQQxGDHIicm93AACgpiHlImN0b3IAoFspaSNhbmdsZQBCorMiVgwAAAAAWgxhAHIAAKDQKXEidWFsAACgtSJwAIABRFRWAGUMbAxzDO8kd25WZWN0b3IAoE8pZSRlVmVjdG9yAACgXCnlImN0b3JCoL4hYQByAACgVCnlImN0b3JCoMAhYQByAACgUykAAXB1iQyMDGYAAKAdIe4kZEltcGxpZXMAoHAp6SRnaHRhcnJvdwCg2yEAAWNongyhDHIAAKAbIQCgsSHsJGVEZWxheWVkAKD0KYAGSE9hY2ZoaW1vcXN0dQC/DMgMzAzQDOIM5gwKDQ0NFA0ZDU8NVA1YDQABQ2PDDMYMyCFjeSlkeQAoZEYiVGN5ACxkYyJ1dGUAWmEAorwqYWVpedgM2wzeDOEM8iFvbmBh5CFpbF5hcgBjAFxhIWRyAADgNdgW3e8hcnQAAkRMUlXvDPYM/QwEDW8kd25BcnJvdwAAoJMhZSRmdEFycm93AACgkCHpJGdodEFycm93AKCSIXAjQXJyb3cAAKCRIechbWGjY+EkbGxDaXJjbGUAoBgicABmAADgNdhK3XICHw0AAAAAIg10AACgGiLhIXJlgKGhJUlTVQAqDTINSg3uJXRlcnNlY3Rpb24AoJMidQAAAWJwNw1ADfMhZXRFoI8icSJ1YWwAAKCRIuUicnNldEWgkCJxInVhbAAAoJIibiJpb24AAKCUImMAcgAA4DXYrtxhAHIAAKDGIgACYmNtcF8Nag2ODZANc6DQImUAdABFoNAicSJ1YWwAAKCGIgABY2huDYkNZSJlZHMAgKF7IkVTVAB4DX0NhA1xInVhbAAAoLAq7CRhbnRFcXVhbACgfSJpImxkZQAAoH8iVABoAGEA9ADHCwCgESIAodEiZXOVDZ8NciJzZXQARaCDInEidWFsAACghyJlAHQAAKDRIoAFSFJTYWNmaGlvcnMAtQ27Db8NyA3ODdsN3w3+DRgOHQ4jDk8AUgBOADuA3gDeQMEhREUAoCIhAAFIY8MNxg1jAHkAC2R5ACZkAAFidcwNzQ0JYKRjgAFhZXkA1A3XDdoN8iFvbmRh5CFpbGJhImRyAADgNdgX3QABZWnjDe4N8gHoDQAA7Q3lImZvcmUAoDQiYQCYYwABY27yDfkNayNTcGFjZQAA4F8gCiDTInBhY2UAoAkg7CFkZYChPCJFRlQABw4MDhMOcSJ1YWwAAKBDInUkbGxFcXVhbAAAoEUiaSJsZGUAAKBIInAAZgAA4DXYS93pI3BsZURvdACg2yAAAWN0Jw4rDnIAAOA12K/c8iFva2Zh4QpFDlYOYA5qDgAAbg5yDgAAAAAAAAAAAAB5DnwOqA6zDgAADg8RDxYPGg8AAWNySA5ODnUAdABlADuA2gDaQHIAb6CfIeMhaXIAoEkpcgDjAVsOAABdDnkADmR2AGUAbGEAAWl5Yw5oDnIAYwA7gNsA20AjZGIibGFjAHBhcgAA4DXYGN1yAGEAdgBlADuA2QDZQOEhY3JqYQABZGl/Dp8OZQByAAABQlCFDpcOAAFhcokOiw5yAF9gYQBjAAABZWuRDpMOAKDfI2UAdAAAoLUjYSVyZW50aGVzaXMAAKDdI28AbgBQoMMi7CF1cwCgjiIAAWdwqw6uDm8AbgByYWYAAOA12EzdAARBREVUYWRwc78O0g7ZDuEOBQPqDvMOBw9yInJvdwDCoZEhyA4AAMwOYQByAACgEilvJHduQXJyb3cAAKDFIW8kd25BcnJvdwAAoJUhcSV1aWxpYnJpdW0AAKBuKWUAZQBBoKUiciJyb3cAAKClIW8AdwBuAGEAcgByAG8A9wAQA2UAcgAAAUxS+Q4AD2UkZnRBcnJvdwAAoJYh6SRnaHRBcnJvdwCglyFpAGyg0gNvAG4ApWPpIW5nbmFjAHIAAOA12LDcaSJsZGUAaGFtAGwAO4DcANxAgAREYmNkZWZvc3YALQ8xDzUPNw89D3IPdg97D4AP4SFzaACgqyJhAHIAAKDrKnkAEmThIXNobKCpIgCg5ioAAWVyQQ9DDwCgwSKAAWJ0eQBJD00Paw9hAHIAAKAWIGmgFiDjIWFsAAJCTFNUWA9cD18PZg9hAHIAAKAjIukhbmV8YGUkcGFyYXRvcgAAoFgnaSJsZGUAAKBAItQkaGluU3BhY2UAoAogcgAA4DXYGd1wAGYAAOA12E3dYwByAADgNdix3GQiYXNoAACgqiKAAmNlZm9zAI4PkQ+VD5kPng/pIXJjdGHkIWdlAKDAInIAAOA12BrdcABmAADgNdhO3WMAcgAA4DXYstwAAmZpb3OqD64Prw+0D3IAAOA12BvdnmNwAGYAAOA12E/dYwByAADgNdiz3IAEQUlVYWNmb3N1AMgPyw/OD9EP2A/gD+QP6Q/uD2MAeQAvZGMAeQAHZGMAeQAuZGMAdQB0AGUAO4DdAN1AAAFpedwP3w9yAGMAdmErZHIAAOA12BzdcABmAADgNdhQ3WMAcgAA4DXYtNxtAGwAeGEABEhhY2RlZm9z/g8BEAUQDRAQEB0QIBAkEGMAeQAWZGMidXRlAHlhAAFheQkQDBDyIW9ufWEXZG8AdAB7YfIBFRAAABwQbwBXAGkAZAB0AOgAVAhhAJZjcgAAoCghcABmAACgJCFjAHIAAOA12LXc4QtCEEkQTRAAAGcQbRByEAAAAAAAAAAAeRCKEJcQ8hD9EAAAGxEhETIROREAAD4RYwB1AHQAZQA7gOEA4UByImV2ZQADYYCiPiJFZGl1eQBWEFkQWxBgEGUQAOA+IjMDAKA/InIAYwA7gOIA4kB0AGUAO4C0ALRAMGRsAGkAZwA7gOYA5kByoGEgAOA12B7dcgBhAHYAZQA7gOAA4EAAAWVwfBCGEAABZnCAEIQQ8yF5bQCgNSHoAIMQaABhALFjAAFhcI0QWwAAAWNskRCTEHIAAWFnAACgPypkApwQAAAAALEQAKInImFkc3ajEKcQqRCuEG4AZAAAoFUqAKBcKmwib3BlAACgWCoAoFoqAKMgImVsbXJzersQvRDAEN0Q5RDtEACgpCllAACgICJzAGQAYaAhImEEzhDQENIQ1BDWENgQ2hDcEACgqCkAoKkpAKCqKQCgqykAoKwpAKCtKQCgrikAoK8pdAB2oB8iYgBkoL4iAKCdKQABcHTpEOwQaAAAoCIixWDhIXJyAKB8IwABZ3D1EPgQbwBuAAVhZgAA4DXYUt0Ao0giRWFlaW9wBxEJEQ0RDxESERQRAKBwKuMhaXIAoG8qAKBKImQAAKBLInMAJ2DyIW94ZaBIIvEADhFpAG4AZwA7gOUA5UCAAWN0eQAmESoRKxFyAADgNdi23CpgbQBwAGWgSCLxAPgBaQBsAGQAZQA7gOMA40BtAGwAO4DkAORAAAFjaUERRxFvAG4AaQBuAPQA6AFuAHQAAKARKgAITmFiY2RlZmlrbG5vcHJzdWQRaBGXEZ8RpxGrEdIR1hErEjASexKKEn0RThNbE3oTbwB0AACg7SoAAWNybBGJEWsAAAJjZXBzdBF4EX0RghHvIW5nAKBMInAjc2lsb24A9mNyImltZQAAoDUgaQBtAGWgPSJxAACgzSJ2AY0RkRFlAGUAAKC9ImUAZABnoAUjZQAAoAUjcgBrAHSgtSPiIXJrAKC2IwABb3mjEaYRbgDnAHcRMWTxIXVvAKAeIIACY21wcnQAtBG5Eb4RwRHFEeEhdXPloDUi5ABwInR5dgAAoLApcwDpAH0RbgBvAPUA6gCAAWFodwDLEcwRzhGyYwCgNiHlIWVuAKBsInIAAOA12B/dZwCAA2Nvc3R1dncA4xHyEQUSEhIhEiYSKRKAAWFpdQDpEesR7xHwAKMFcgBjAACg7yVwAACgwyKAAWRwdAD4EfwRABJvAHQAAKAAKuwhdXMAoAEqaSJtZXMAAKACKnECCxIAAAAADxLjIXVwAKAGKmEAcgAAoAUm8iNpYW5nbGUAAWR1GhIeEu8hd24AoL0lcAAAoLMlcCJsdXMAAKAEKmUA5QBCD+UAkg9hInJvdwAAoA0pgAFha28ANhJoEncSAAFjbjoSZRJrAIABbHN0AEESRxJNEm8jemVuZ2UAAKDrKXEAdQBhAHIA5QBcBPIjaWFuZ2xlgKG0JWRscgBYElwSYBLvIXduAKC+JeUhZnQAoMIlaSJnaHQAAKC4JWsAAKAjJLEBbRIAAHUSsgFxEgAAcxIAoJIlAKCRJTQAAKCTJWMAawAAoIglAAFlb38ShxJx4D0A5SD1IWl2AOBhIuUgdAAAoBAjAAJwdHd4kRKVEpsSnxJmAADgNdhT3XSgpSJvAG0AAKClIvQhaWUAoMgiAAZESFVWYmRobXB0dXayEsES0RLgEvcS+xIKExoTHxMjEygTNxMAAkxSbHK5ErsSvRK/EgCgVyUAoFQlAKBWJQCgUyUAolAlRFVkdckSyxLNEs8SAKBmJQCgaSUAoGQlAKBnJQACTFJsctgS2hLcEt4SAKBdJQCgWiUAoFwlAKBZJQCjUSVITFJobHLrEu0S7xLxEvMS9RIAoGwlAKBjJQCgYCUAoGslAKBiJQCgXyVvAHgAAKDJKQACTFJscgITBBMGEwgTAKBVJQCgUiUAoBAlAKAMJQCiACVEVWR1EhMUExYTGBMAoGUlAKBoJQCgLCUAoDQlaSJudXMAAKCfIuwhdXMAoJ4iaSJtZXMAAKCgIgACTFJsci8TMRMzEzUTAKBbJQCgWCUAoBglAKAUJQCjAiVITFJobHJCE0QTRhNIE0oTTBMAoGolAKBhJQCgXiUAoDwlAKAkJQCgHCUAAWV2UhNVE3YA5QD5AGIAYQByADuApgCmQAACY2Vpb2ITZhNqE24TcgAA4DXYt9xtAGkAAKBPIG0A5aA9IogRbAAAoVwAYmh0E3YTAKDFKfMhdWIAoMgnbAF+E4QTbABloCIgdAAAoCIgcAAAoU4iRWWJE4sTAKCuKvGgTyI8BeEMqRMAAN8TABQDFB8UAAAjFDQUAAAAAIUUAAAAAI0UAAAAANcU4xT3FPsUAACIFQAAlhWAAWNwcgCuE7ET1RP1IXRlB2GAoikiYWJjZHMAuxO/E8QTzhPSE24AZAAAoEQqciJjdXAAAKBJKgABYXXIE8sTcAAAoEsqcAAAoEcqbwB0AACgQCoA4CkiAP4AAWVv2RPcE3QAAKBBIO4ABAUAAmFlaXXlE+8T9RP4E/AB6hMAAO0TcwAAoE0qbwBuAA1hZABpAGwAO4DnAOdAcgBjAAlhcABzAHOgTCptAACgUCpvAHQAC2GAAWRtbgAIFA0UEhRpAGwAO4C4ALhAcCJ0eXYAAKCyKXQAAIGiADtlGBQZFKJAcgBkAG8A9ABiAXIAAOA12CDdgAFjZWkAKBQqFDIUeQBHZGMAawBtoBMn4SFyawCgEyfHY3IAAKPLJUVjZWZtcz8UQRRHFHcUfBSAFACgwykAocYCZWxGFEkUcQAAoFciZQBhAlAUAAAAAGAUciJyb3cAAAFsclYUWhTlIWZ0AKC6IWkiZ2h0AACguyGAAlJTYWNkAGgUaRRrFG8UcxSuYACgyCRzAHQAAKCbIukhcmMAoJoi4SFzaACgnSJuImludAAAoBAqaQBkAACg7yrjIWlyAKDCKfUhYnN1oGMmaQB0AACgYybsApMUmhS2FAAAwxRvAG4AZaA6APGgVCKrAG0CnxQAAAAAoxRhAHSgLABAYAChASJmbKcUqRTuABMNZQAAAW14rhSyFOUhbnQAoAEiZQDzANIB5wG6FAAAwBRkoEUibwB0AACgbSpuAPQAzAGAAWZyeQDIFMsUzhQA4DXYVN1vAOQA1wEAgakAO3MeAdMUcgAAoBchAAFhb9oU3hRyAHIAAKC1IXMAcwAAoBcnAAFjdeYU6hRyAADgNdi43AABYnDuFPIUZaDPKgCg0SploNAqAKDSKuQhb3QAoO8igANkZWxwcnZ3AAYVEBUbFSEVRBVlFYQV4SFycgABbHIMFQ4VAKA4KQCgNSlwAhYVAAAAABkVcgAAoN4iYwAAoN8i4SFycnCgtiEAoD0pgKIqImJjZG9zACsVMBU6FT4VQRVyImNhcAAAoEgqAAFhdTQVNxVwAACgRipwAACgSipvAHQAAKCNInIAAKBFKgDgKiIA/gACYWxydksVURVuFXMVcgByAG2gtyEAoDwpeQCAAWV2dwBYFWUVaRVxAHACXxUAAAAAYxVyAGUA4wAXFXUA4wAZFWUAZQAAoM4iZSJkZ2UAAKDPImUAbgA7gKQApEBlI2Fycm93AAABbHJ7FX8V5SFmdACgtiFpImdodAAAoLchZQDkAG0VAAFjaYsVkRVvAG4AaQBuAPQAkwFuAHQAAKAxImwiY3R5AACgLSOACUFIYWJjZGVmaGlqbG9yc3R1d3oAuBW7Fb8V1RXgFegV+RUKFhUWHxZUFlcWZRbFFtsW7xb7FgUXChdyAPIAtAJhAHIAAKBlKQACZ2xyc8YVyhXOFdAV5yFlcgCgICDlIXRoAKA4IfIA9QxoAHagECAAoKMiawHZFd4VYSJyb3cAAKAPKWEA4wBfAgABYXnkFecV8iFvbg9hNGQAoUYhYW/tFfQVAAFnciEC8RVyAACgyiF0InNlcQAAoHcqgAFnbG0A/xUCFgUWO4CwALBAdABhALRjcCJ0eXYAAKCxKQABaXIOFhIW8yFodACgfykA4DXYId1hAHIAAAFschsWHRYAoMMhAKDCIYACYWVnc3YAKBauAjYWOhY+Fm0AAKHEIm9zLhY0Fm4AZABzoMQi9SFpdACgZiZhIm1tYQDdY2kAbgAAoPIiAKH3AGlvQxZRFmQAZQAAgfcAO29KFksW90BuI3RpbWVzAACgxyJuAPgAUBZjAHkAUmRjAG8CXhYAAAAAYhZyAG4AAKAeI28AcAAAoA0jgAJscHR1dwBuFnEWdRaSFp4W7CFhciRgZgAA4DXYVd0AotkCZW1wc30WhBaJFo0WcQBkoFAibwB0AACgUSJpIm51cwAAoDgi7CF1cwCgFCLxInVhcmUAoKEiYgBsAGUAYgBhAHIAdwBlAGQAZwDlANcAbgCAAWFkaAClFqoWtBZyAHIAbwD3APUMbwB3AG4AYQByAHIAbwB3APMA8xVhI3Jwb29uAAABbHK8FsAWZQBmAPQAHBZpAGcAaAD0AB4WYgHJFs8WawBhAHIAbwD3AJILbwLUFgAAAADYFnIAbgAAoB8jbwBwAACgDCOAAWNvdADhFukW7BYAAXJ55RboFgDgNdi53FVkbAAAoPYp8iFvaxFhAAFkcvMW9xZvAHQAAKDxImkA5qC/JVsSAAFhaP8WAhdyAPIANQNhAPIA1wvhIm5nbGUAoKYpAAFjaQ4XEBd5AF9k5yJyYXJyAKD/JwAJRGFjZGVmZ2xtbm9wcXJzdHV4MRc4F0YXWxcyBF4XaRd5F40XrBe0F78X2RcVGCEYLRg1GEAYAAFEbzUXgRZvAPQA+BUAAWNzPBdCF3UAdABlADuA6QDpQPQhZXIAoG4qAAJhaW95TRdQF1YXWhfyIW9uG2FyAGOgViI7gOoA6kDsIW9uAKBVIk1kbwB0ABdhAAFEcmIXZhdvAHQAAKBSIgDgNdgi3XKhmipuF3QXYQB2AGUAO4DoAOhAZKCWKm8AdAAAoJgqgKGZKmlscwCAF4UXhxfuInRlcnMAoOcjAKATIWSglSpvAHQAAKCXKoABYXBzAJMXlheiF2MAcgATYXQAeQBzogUinxcAAAAAoRdlAHQAAKAFInAAMaADIDMBqRerFwCgBCAAoAUgAAFnc7AXsRdLYXAAAKACIAABZ3C4F7sXbwBuABlhZgAA4DXYVt2AAWFscwDFF8sXzxdyAHOg1SJsAACg4yl1AHMAAKBxKmkAAKG1A2x21RfYF28AbgC1Y/VjAAJjc3V24BfoF/0XEBgAAWlv5BdWF3IAYwAAoFYiaQLuFwAAAADwF+0ADQThIW50AAFnbPUX+Rd0AHIAAKCWKuUhc3MAoJUqgAFhZWkAAxgGGAoYbABzAD1gcwB0AACgXyJ2AESgYSJEAACgeCrwImFyc2wAoOUpAAFEYRkYHRhvAHQAAKBTInIAcgAAoHEpgAFjZGkAJxgqGO0XcgAAoC8hbwD0AIwCAAFhaDEYMhi3YzuA8ADwQAABbXI5GD0YbAA7gOsA60BvAACgrCCAAWNpcABGGEgYSxhsACFgcwD0ACwEAAFlb08YVxhjAHQAYQB0AGkAbwDuABoEbgBlAG4AdABpAGEAbADlADME4Ql1GAAAgRgAAIMYiBgAAAAAoRilGAAAqhgAALsYvhjRGAAA1xgnGWwAbABpAG4AZwBkAG8AdABzAGUA8QBlF3kARGRtImFsZQAAoEAmgAFpbHIAjRiRGJ0Y7CFpZwCgA/tpApcYAAAAAJoYZwAAoAD7aQBnAACgBPsA4DXYI93sIWlnAKAB++whaWcA4GYAagCAAWFsdACvGLIYthh0AACgbSZpAGcAAKAC+24AcwAAoLElbwBmAJJh8AHCGAAAxhhmAADgNdhX3QABYWvJGMwYbADsAGsEdqDUIgCg2SphI3J0aW50AACgDSoAAWFv2hgiGQABY3PeGB8ZsQPnGP0YBRkSGRUZAAAdGbID7xjyGPQY9xj5GAAA+xg7gL0AvUAAoFMhO4C8ALxAAKBVIQCgWSEAoFshswEBGQAAAxkAoFQhAKBWIbQCCxkOGQAAAAAQGTuAvgC+QACgVyEAoFwhNQAAoFghtgEZGQAAGxkAoFohAKBdITgAAKBeIWwAAKBEIHcAbgAAoCIjYwByAADgNdi73IAIRWFiY2RlZmdpamxub3JzdHYARhlKGVoZXhlmGWkZkhmWGZkZnRmgGa0ZxhnLGc8Z4BkjGmygZyIAoIwqgAFjbXAAUBlTGVgZ9SF0ZfVhbQBhAOSgswM6FgCghipyImV2ZQAfYQABaXliGWUZcgBjAB1hM2RvAHQAIWGAoWUibHFzAMYEcBl6GfGhZSLOBAAAdhlsAGEAbgD0AN8EgKF+KmNkbACBGYQZjBljAACgqSpvAHQAb6CAKmyggioAoIQqZeDbIgD+cwAAoJQqcgAA4DXYJN3noGsirATtIWVsAKA3IWMAeQBTZIChdyJFYWoApxmpGasZAKCSKgCgpSoAoKQqAAJFYWVztBm2Gb0ZwhkAoGkicABwoIoq8iFveACgiipxoIgq8aCIKrUZaQBtAACg5yJwAGYAAOA12FjdYQB2AOUAYwIAAWNp0xnWGXIAAKAKIW0AAKFzImVs3BneGQCgjioAoJAqAIM+ADtjZGxxco0E6xn0GfgZ/BkBGgABY2nvGfEZAKCnKnIAAKB6Km8AdAAAoNci0CFhcgCglSl1ImVzdAAAoHwqgAJhZGVscwAKGvQZFhrVBCAa8AEPGgAAFBpwAHIAbwD4AFkZcgAAoHgpcQAAAWxxxAQbGmwAZQBzAPMASRlpAO0A5AQAAWVuJxouGnIjdG5lcXEAAOBpIgD+xQAsGgAFQWFiY2Vma29zeUAaQxpmGmoabRqDGocalhrCGtMacgDyAMwCAAJpbG1yShpOGlAaVBpyAHMA8ABxD2YAvWBpAGwA9AASBQABZHJYGlsaYwB5AEpkAKGUIWN3YBpkGmkAcgAAoEgpAKCtIWEAcgAAoA8h6SFyYyVhgAFhbHIAcxp7Gn8a8iF0c3WgZSZpAHQAAKBlJuwhaXAAoCYg4yFvbgCguSJyAADgNdgl3XMAAAFld4wakRphInJvdwAAoCUpYSJyb3cAAKAmKYACYW1vcHIAnxqjGqcauhq+GnIAcgAAoP8h9CFodACgOyJrAAABbHKsGrMaZSRmdGFycm93AACgqSHpJGdodGFycm93AKCqIWYAAOA12Fnd4iFhcgCgFSCAAWNsdADIGswa0BpyAADgNdi93GEAcwDoAGka8iFvaydhAAFicNca2xr1IWxsAKBDIOghZW4AoBAg4Qr2GgAA/RoAAAgbExsaGwAAIRs7GwAAAAA+G2IbmRuVG6sbAACyG80b0htjAHUAdABlADuA7QDtQAChYyBpeQEbBhtyAGMAO4DuAO5AOGQAAWN4CxsNG3kANWRjAGwAO4ChAKFAAAFmcssCFhsA4DXYJt1yAGEAdgBlADuA7ADsQIChSCFpbm8AJxsyGzYbAAFpbisbLxtuAHQAAKAMKnQAAKAtIuYhaW4AoNwpdABhAACgKSHsIWlnM2GAAWFvcABDG1sbXhuAAWNndABJG0sbWRtyACthgAFlbHAAcQVRG1UbaQBuAOUAyAVhAHIA9AByBWgAMWFmAACgtyJlAGQAtWEAoggiY2ZvdGkbbRt1G3kb4SFyZQCgBSFpAG4AdKAeImkAZQAAoN0pZABvAPQAWxsAoisiY2VscIEbhRuPG5QbYQBsAACguiIAAWdyiRuNG2UAcgDzACMQ4wCCG2EicmhrAACgFyryIW9kAKA8KgACY2dwdJ8boRukG6gbeQBRZG8AbgAvYWYAAOA12FrdYQC5Y3UAZQBzAHQAO4C/AL9AAAFjabUbuRtyAADgNdi+3G4AAKIIIkVkc3bCG8QbyBvQAwCg+SJvAHQAAKD1Inag9CIAoPMiaaBiIOwhZGUpYesB1hsAANkbYwB5AFZkbAA7gO8A70AAA2NmbW9zdeYb7hvyG/Ub+hsFHAABaXnqG+0bcgBjADVhOWRyAADgNdgn3eEhdGg3YnAAZgAA4DXYW93jAf8bAAADHHIAAOA12L/c8iFjeVhk6yFjeVRkAARhY2ZnaGpvcxUcGhwiHCYcKhwtHDAcNRzwIXBhdqC6A/BjAAFleR4cIRzkIWlsN2E6ZHIAAOA12CjdciJlZW4AOGFjAHkARWRjAHkAXGRwAGYAAOA12FzdYwByAADgNdjA3IALQUJFSGFiY2RlZmdoamxtbm9wcnN0dXYAXhxtHHEcdRx5HN8cBx0dHTwd3B3tHfEdAR4EHh0eLB5FHrwewx7hHgkfPR9LH4ABYXJ0AGQcZxxpHHIA8gBvB/IAxQLhIWlsAKAbKeEhcnIAoA4pZ6BmIgCgiyphAHIAAKBiKWMJjRwAAJAcAACVHAAAAAAAAAAAAACZHJwcAACmHKgcrRwAANIc9SF0ZTph7SJwdHl2AKC0KXIAYQDuAFoG4iFkYbtjZwAAoegnZGyhHKMcAKCRKeUAiwYAoIUqdQBvADuAqwCrQHIAgKOQIWJmaGxwc3QAuhy/HMIcxBzHHMoczhxmoOQhcwAAoB8pcwAAoB0p6wCyGnAAAKCrIWwAAKA5KWkAbQAAoHMpbAAAoKIhAKGrKmFl1hzaHGkAbAAAoBkpc6CtKgDgrSoA/oABYWJyAOUc6RztHHIAcgAAoAwpcgBrAACgcicAAWFr8Rz4HGMAAAFla/Yc9xx7YFtgAAFlc/wc/hwAoIspbAAAAWR1Ax0FHQCgjykAoI0pAAJhZXV5Dh0RHRodHB3yIW9uPmEAAWRpFR0YHWkAbAA8YewAowbiAPccO2QAAmNxcnMkHScdLB05HWEAAKA2KXUAbwDyoBwgqhEAAWR1MB00HeghYXIAoGcpcyJoYXIAAKBLKWgAAKCyIQCiZCJmZ3FzRB1FB5Qdnh10AIACYWhscnQATh1WHWUdbB2NHXIicm93AHSgkCFhAOkAzxxhI3Jwb29uAAABZHVeHWId7yF3bgCgvSFwAACgvCHlJGZ0YXJyb3dzAKDHIWkiZ2h0AIABYWhzAHUdex2DHXIicm93APOglCGdBmEAcgBwAG8AbwBuAPMAzgtxAHUAaQBnAGEAcgByAG8A9wBlGugkcmVldGltZXMAoMsi8aFkIk0HAACaHWwAYQBuAPQAXgcAon0qY2Rnc6YdqR2xHbcdYwAAoKgqbwB0AG+gfypyoIEqAKCDKmXg2iIA/nMAAKCTKoACYWRlZ3MAwB3GHcod1h3ZHXAAcAByAG8A+ACmHG8AdAAAoNYicQAAAWdxzx3SHXQA8gBGB2cAdADyAHQcdADyAFMHaQDtAGMHgAFpbHIA4h3mHeod8yFodACgfClvAG8A8gDKBgDgNdgp3UWgdiIAoJEqYQH1Hf4dcgAAAWR1YB35HWygvCEAoGopbABrAACghCVjAHkAWWQAomoiYWNodAweDx4VHhkecgDyAGsdbwByAG4AZQDyAGAW4SFyZACgaylyAGkAAKD6JQABaW8hHiQe5CFvdEBh9SFzdGGgsCPjIWhlAKCwIwACRWFlczMeNR48HkEeAKBoInAAcKCJKvIhb3gAoIkqcaCHKvGghyo0HmkAbQAAoOYiAARhYm5vcHR3elIeXB5fHoUelh6mHqsetB4AAW5yVh5ZHmcAAKDsJ3IAAKD9IXIA6wCwBmcAgAFsbXIAZh52Hnse5SFmdAABYXKIB2weaQBnAGgAdABhAHIAcgBvAPcAkwfhInBzdG8AoPwnaQBnAGgAdABhAHIAcgBvAPcAmgdwI2Fycm93AAABbHKNHpEeZQBmAPQAxhxpImdodAAAoKwhgAFhZmwAnB6fHqIecgAAoIUpAOA12F3ddQBzAACgLSppIm1lcwAAoDQqYQGvHrMecwB0AACgFyLhAIoOZaHKJbkeRhLuIWdlAKDKJWEAcgBsoCgAdAAAoJMpgAJhY2htdADMHs8e1R7bHt0ecgDyAJ0GbwByAG4AZQDyANYWYQByAGSgyyEAoG0pAKAOIHIAaQAAoL8iAANhY2hpcXTrHu8e1QfzHv0eBh/xIXVvAKA5IHIAAOA12MHcbQDloXIi+h4AAPweAKCNKgCgjyoAAWJ19xwBH28AcqAYIACgGiDyIW9rQmEAhDwAO2NkaGlscXJCBhcfxh0gHyQfKB8sHzEfAAFjaRsfHR8AoKYqcgAAoHkqcgBlAOUAkx3tIWVzAKDJIuEhcnIAoHYpdSJlc3QAAKB7KgABUGk1HzkfYQByAACglillocMlAgdfEnIAAAFkdUIfRx9zImhhcgAAoEop6CFhcgCgZikAAWVuTx9WH3IjdG5lcXEAAOBoIgD+xQBUHwAHRGFjZGVmaGlsbm9wc3VuH3Ifoh+rH68ftx+7H74f5h/uH/MfBwj/HwsgxCFvdACgOiIAAmNscHJ5H30fiR+eH3IAO4CvAK9AAAFldIEfgx8AoEImZaAgJ3MAZQAAoCAnc6CmIXQAbwCAoaYhZGx1AJQfmB+cH28AdwDuAHkDZQBmAPQA6gbwAOkO6yFlcgCgriUAAW95ph+qH+0hbWEAoCkqPGThIXNoAKAUIOElc3VyZWRhbmdsZQCgISJyAADgNdgq3W8AAKAnIYABY2RuAMQfyR/bH3IAbwA7gLUAtUBhoiMi0B8AANMf1x9zAPQAKxFpAHIAAKDwKm8AdAA7gLcAt0B1AHMA4qESIh4TAADjH3WgOCIAoCoqYwHqH+0fcAAAoNsq8gB+GnAAbAB1APMACAgAAWRw9x/7H+UhbHMAoKciZgAA4DXYXt0AAWN0AyAHIHIAAOA12MLc8CFvcwCgPiJsobwDECAVIPQiaW1hcACguCJhAPAAEyAADEdMUlZhYmNkZWZnaGlqbG1vcHJzdHV2dzwgRyBmIG0geSCqILgg2iDeIBEhFSEyIUMhTSFQIZwhnyHSIQAiIyKLIrEivyIUIwABZ3RAIEMgAODZIjgD9uBrItIgBwmAAWVsdABNIF8gYiBmAHQAAAFhclMgWCByInJvdwAAoM0h6SRnaHRhcnJvdwCgziEA4NgiOAP24Goi0iBfCekkZ2h0YXJyb3cAoM8hAAFEZHEgdSDhIXNoAKCvIuEhc2gAoK4igAJiY25wdACCIIYgiSCNIKIgbABhAACgByL1IXRlRGFnAADgICLSIACiSSJFaW9wlSCYIJwgniAA4HAqOANkAADgSyI4A3MASWFyAG8A+AAyCnUAcgBhoG4mbADzoG4mmwjzAa8gAACzIHAAO4CgAKBAbQBwAOXgTiI4AyoJgAJhZW91eQDBIMogzSDWINkg8AHGIAAAyCAAoEMqbwBuAEhh5CFpbEZhbgBnAGSgRyJvAHQAAOBtKjgDcAAAoEIqPWThIXNoAKATIACjYCJBYWRxc3jpIO0g+SD+IAIhDCFyAHIAAKDXIXIAAAFocvIg9SBrAACgJClvoJch9wAGD28AdAAA4FAiOAN1AGkA9gC7CAABZWkGIQohYQByAACgKCntAN8I6SFzdPOgBCLlCHIAAOA12CvdAAJFZXN0/wgcISshLiHxoXEiIiEAABMJ8aFxIgAJAAAnIWwAYQBuAPQAEwlpAO0AGQlyoG8iAKBvIoABQWFwADghOyE/IXIA8gBeIHIAcgAAoK4hYQByAACg8ipzogsiSiEAAAAAxwtkoPwiAKD6ImMAeQBaZIADQUVhZGVzdABcIV8hYiFmIWkhkyGWIXIA8gBXIADgZiI4A3IAcgAAoJohcgAAoCUggKFwImZxcwBwIYQhjiF0AAABYXJ1IXohcgByAG8A9wBlIWkAZwBoAHQAYQByAHIAbwD3AD4h8aFwImAhAACKIWwAYQBuAPQAZwlz4H0qOAMAoG4iaQDtAG0JcqBuImkA5aDqIkUJaQDkADoKAAFwdKMhpyFmAADgNdhf3YCBrAA7aW4AriGvIcchrEBuAIChCSJFZHYAtyG6Ib8hAOD5IjgDbwB0AADg9SI4A+EB1gjEIcYhAKD3IgCg9iJpAHagDCLhAagJzyHRIQCg/iIAoP0igAFhb3IA2CHsIfEhcgCAoSYiYXN0AOAh5SHpIWwAbABlAOwAywhsAADg/SrlIADgAiI4A2wiaW50AACgFCrjoYAi9yEAAPohdQDlAJsJY+CvKjgDZaCAIvEAkwkAAkFhaXQHIgoiFyIeInIA8gBsIHIAcgAAoZshY3cRIhQiAOAzKTgDAOCdITgDZyRodGFycm93AACgmyFyAGkA5aDrIr4JgANjaGltcHF1AC8iPCJHIpwhTSJQIloigKGBImNlcgA2Iv0JOSJ1AOUABgoA4DXYw9zvIXJ0bQKdIQAAAABEImEAcgDhAOEhbQBloEEi8aBEIiYKYQDyAMsIcwB1AAABYnBWIlgi5QDUCeUA3wmAAWJjcABgInMieCKAoYQiRWVzAGci7glqIgDgxSo4A2UAdABl4IIi0iBxAPGgiCJoImMAZaCBIvEA/gmAoYUiRWVzAH8iFgqCIgDgxio4A2UAdABl4IMi0iBxAPGgiSKAIgACZ2lscpIilCKaIpwi7AAMCWwAZABlADuA8QDxQOcAWwlpI2FuZ2xlAAABbHKkIqoi5SFmdGWg6iLxAEUJaSJnaHQAZaDrIvEAvgltoL0DAKEjAGVzuCK8InIAbwAAoBYhcAAAoAcggARESGFkZ2lscnMAziLSItYi2iLeIugi7SICIw8j4SFzaACgrSLhIXJyAKAEKXAAAOBNItIg4SFzaACgrCIAAWV04iLlIgDgZSLSIADgPgDSIG4iZmluAACg3imAAUFldADzIvci+iJyAHIAAKACKQDgZCLSIHLgPADSIGkAZQAA4LQi0iAAAUF0BiMKI3IAcgAAoAMp8iFpZQDgtSLSIGkAbQAA4Dwi0iCAAUFhbgAaIx4jKiNyAHIAAKDWIXIAAAFociMjJiNrAACgIylvoJYh9wD/DuUhYXIAoCcpUxJqFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVCMAAF4jaSN/I4IjjSOeI8AUAAAAAKYjwCMAANoj3yMAAO8jHiQvJD8kRCQAAWNzVyNsFHUAdABlADuA8wDzQAABaXlhI2cjcgBjoJoiO4D0APRAPmSAAmFiaW9zAHEjdCN3I3EBeiNzAOgAdhTsIWFjUWF2AACgOCrvIWxkAKC8KewhaWdTYQABY3KFI4kjaQByAACgvykA4DXYLN1vA5QjAAAAAJYjAACcI24A22JhAHYAZQA7gPIA8kAAoMEpAAFibaEjjAphAHIAAKC1KQACYWNpdKwjryO6I70jcgDyAFkUAAFpcrMjtiNyAACgvinvIXNzAKC7KW4A5QDZCgCgwCmAAWFlaQDFI8gjyyNjAHIATWFnAGEAyWOAAWNkbgDRI9Qj1iPyIW9uv2MAoLYpdQDzAHgBcABmAADgNdhg3YABYWVsAOQj5yPrI3IAAKC3KXIAcAAAoLkpdQDzAHwBAKMoImFkaW9zdvkj/CMPJBMkFiQbJHIA8gBeFIChXSplZm0AAyQJJAwkcgBvoDQhZgAAoDQhO4CqAKpAO4C6ALpA5yFvZgCgtiJyAACgVipsIm9wZQAAoFcqAKBbKoABY2xvACMkJSQrJPIACCRhAHMAaAA7gPgA+EBsAACgmCJpAGwBMyQ4JGQAZQA7gPUA9UBlAHMAYaCXInMAAKA2Km0AbAA7gPYA9kDiIWFyAKA9I+EKXiQAAHokAAB8JJQkAACYJKkkAAAAALUkEQsAAPAkAAAAAAQleiUAAIMlcgCAoSUiYXN0AGUkbyQBCwCBtgA7bGokayS2QGwAZQDsABgDaQJ1JAAAAAB4JG0AAKDzKgCg/Sp5AD9kcgCAAmNpbXB0AIUkiCSLJJkSjyRuAHQAJWBvAGQALmBpAGwAAKAwIOUhbmsAoDEgcgAA4DXYLd2AAWltbwCdJKAkpCR2oMYD1WNtAGEA9AD+B24AZQAAoA4m9KHAA64kAAC0JGMjaGZvcmsAAKDUItZjAAFhdbgkxCRuAAABY2u9JMIkawBooA8hAKAOIfYAaRpzAACkKwBhYmNkZW1zdNMkIRPXJNsk4STjJOck6yTjIWlyAKAjKmkAcgAAoCIqAAFvdYsW3yQAoCUqAKByKm4AO4CxALFAaQBtAACgJip3AG8AAKAnKoABaXB1APUk+iT+JO4idGludACgFSpmAADgNdhh3W4AZAA7gKMAo0CApHoiRWFjZWlub3N1ABMlFSUYJRslTCVRJVklSSV1JQCgsypwAACgtyp1AOUAPwtjoK8qgKJ6ImFjZW5zACclLSU0JTYlSSVwAHAAcgBvAPgAFyV1AHIAbAB5AGUA8QA/C/EAOAuAAWFlcwA8JUElRSXwInByb3gAoLkqcQBxAACgtSppAG0AAKDoImkA7QBEC20AZQDzoDIgIguAAUVhcwBDJVclRSXwAEAlgAFkZnAATwtfJXElgAFhbHMAZSVpJW0l7CFhcgCgLiPpIW5lAKASI/UhcmYAoBMjdKAdIu8AWQvyIWVsAKCwIgABY2l9JYElcgAA4DXYxdzIY24iY3NwAACgCCAAA2Zpb3BzdZElKxuVJZolnyWkJXIAAOA12C7dcABmAADgNdhi3XIiaW1lAACgVyBjAHIAAOA12MbcgAFhZW8AqiW6JcAldAAAAWVpryW2JXIAbgBpAG8AbgDzABkFbgB0AACgFipzAHQAZaA/APEACRj0AG0LgApBQkhhYmNkZWZoaWxtbm9wcnN0dXgA4yXyJfYl+iVpJpAmpia9JtUm5ib4JlonaCdxJ3UnnietJ7EnyCfiJ+cngAFhcnQA6SXsJe4lcgDyAJkM8gD6AuEhaWwAoBwpYQByAPIA3BVhAHIAAKBkKYADY2RlbnFydAAGJhAmEyYYJiYmKyZaJgABZXUKJg0mAOA9IjEDdABlAFVhaQDjACAN7SJwdHl2AKCzKWcAgKHpJ2RlbAAgJiImJCYAoJIpAKClKeUA9wt1AG8AO4C7ALtAcgAApZIhYWJjZmhscHN0dz0mQCZFJkcmSiZMJk4mUSZVJlgmcAAAoHUpZqDlIXMAAKAgKQCgMylzAACgHinrALka8ACVHmwAAKBFKWkAbQAAoHQpbAAAoKMhAKCdIQABYWleJmImaQBsAACgGilvAG6gNiJhAGwA8wB2C4ABYWJyAG8mciZ2JnIA8gAvEnIAawAAoHMnAAFha3omgSZjAAABZWt/JoAmfWBdYAABZXOFJocmAKCMKWwAAAFkdYwmjiYAoI4pAKCQKQACYWV1eZcmmiajJqUm8iFvbllhAAFkaZ4moSZpAGwAV2HsAA8M4gCAJkBkAAJjbHFzrSawJrUmuiZhAACgNylkImhhcgAAoGkpdQBvAPKgHSCjAWgAAKCzIYABYWNnAMMm0iaUC2wAgKEcIWlwcwDLJs4migxuAOUAoAxhAHIA9ADaC3QAAKCtJYABaWxyANsm3ybjJvMhaHQAoH0pbwBvAPIANgwA4DXYL90AAWFv6ib1JnIAAAFkde8m8SYAoMEhbKDAIQCgbCl2oMED8WOAAWducwD+Jk4nUCdoAHQAAANhaGxyc3QKJxInISc1Jz0nRydyInJvdwB0oJIhYQDpAFYmYSNycG9vbgAAAWR1GiceJ28AdwDuAPAmcAAAoMAh5SFmdAABYWgnJy0ncgByAG8AdwDzAAkMYQByAHAAbwBvAG4A8wATBGklZ2h0YXJyb3dzAACgySFxAHUAaQBnAGEAcgByAG8A9wBZJugkcmVldGltZXMAoMwiZwDaYmkAbgBnAGQAbwB0AHMAZQDxABwYgAFhaG0AYCdjJ2YncgDyAAkMYQDyABMEAKAPIG8idXN0AGGgsSPjIWhlAKCxI+0haWQAoO4qAAJhYnB0fCeGJ4knmScAAW5ygCeDJ2cAAKDtJ3IAAKD+IXIA6wAcDIABYWZsAI8nkieVJ3IAAKCGKQDgNdhj3XUAcwAAoC4qaSJtZXMAAKA1KgABYXCiJ6gncgBnoCkAdAAAoJQp7yJsaW50AKASKmEAcgDyADwnAAJhY2hxuCe8J6EMwCfxIXVvAKA6IHIAAOA12MfcAAFidYAmxCdvAPKgGSCoAYABaGlyAM4n0ifWJ3IAZQDlAE0n7SFlcwCgyiJpAIChuSVlZmwAXAxjEt4n9CFyaQCgzinsInVoYXIAoGgpAKAeIWENBSgJKA0oSyhVKIYoAACLKLAoAAAAAOMo5ygAABApJCkxKW0pcSmHKaYpAACYKgAAAACxKmMidXRlAFthcQB1AO8ABR+ApHsiRWFjZWlucHN5ABwoHignKCooLygyKEEoRihJKACgtCrwASMoAAAlKACguCpvAG4AYWF1AOUAgw1koLAqaQBsAF9hcgBjAF1hgAFFYXMAOCg6KD0oAKC2KnAAAKC6KmkAbQAAoOki7yJsaW50AKATKmkA7QCIDUFkbwB0AGKixSKRFgAAAABTKACgZiqAA0FhY21zdHgAYChkKG8ocyh1KHkogihyAHIAAKDYIXIAAAFocmkoayjrAJAab6CYIfcAzAd0ADuApwCnQGkAO2D3IWFyAKApKW0AAAFpbn4ozQBuAHUA8wDOAHQAAKA2J3IA7+A12DDdIxkAAmFjb3mRKJUonSisKHIAcAAAoG8mAAFoeZkonChjAHkASWRIZHIAdABtAqUoAAAAAKgoaQDkAFsPYQByAGEA7ABsJDuArQCtQAABZ22zKLsobQBhAAChwwNmdroouijCY4CjPCJkZWdsbnByAMgozCjPKNMo1yjaKN4obwB0AACgairxoEMiCw5FoJ4qAKCgKkWgnSoAoJ8qZQAAoEYi7CF1cwCgJCrhIXJyAKByKWEAcgDyAPwMAAJhZWl07Sj8KAEpCCkAAWxz8Sj4KGwAcwBlAHQAbQDpAH8oaABwAACgMyrwImFyc2wAoOQpAAFkbFoPBSllAACgIyNloKoqc6CsKgDgrCoA/oABZmxwABUpGCkfKfQhY3lMZGKgLwBhoMQpcgAAoD8jZgAA4DXYZN1hAAABZHIoKRcDZQBzAHWgYCZpAHQAAKBgJoABY3N1ADYpRilhKQABYXU6KUApcABzoJMiAOCTIgD+cABzoJQiAOCUIgD+dQAAAWJwSylWKQChjyJlcz4NUCllAHQAZaCPIvEAPw0AoZAiZXNIDVspZQB0AGWgkCLxAEkNAKGhJWFmZilbBHIAZQFrKVwEAKChJWEAcgDyAAMNAAJjZW10dyl7KX8pgilyAADgNdjI3HQAbQDuAM4AaQDsAAYpYQByAOYAVw0AAWFyiimOKXIA5qAGJhESAAFhbpIpoylpImdodAAAAWVwmSmgKXAAcwBpAGwAbwDuANkXaADpAKAkcwCvYIACYmNtbnAArin8KY4NJSooKgCkgiJFZGVtbnByc7wpvinCKcgpzCnUKdgp3CkAoMUqbwB0AACgvSpkoIYibwB0AACgwyr1IWx0AKDBKgABRWXQKdIpAKDLKgCgiiLsIXVzAKC/KuEhcnIAoHkpgAFlaXUA4inxKfQpdAAAoYIiZW7oKewpcQDxoIYivSllAHEA8aCKItEpbQAAoMcqAAFicPgp+ikAoNUqAKDTKmMAgKJ7ImFjZW5zAAcqDSoUKhYqRihwAHAAcgBvAPgAIyh1AHIAbAB5AGUA8QCDDfEAfA2AAWFlcwAcKiIqPShwAHAAcgBvAPgAPChxAPEAOShnAACgaiYApoMiMTIzRWRlaGxtbnBzPCo/KkIqRSpHKlIqWCpjKmcqaypzKncqO4C5ALlAO4CyALJAO4CzALNAAKDGKgABb3NLKk4qdAAAoL4qdQBiAACg2CpkoIcibwB0AACgxCpzAAABb3VdKmAqbAAAoMknYgAAoNcq4SFycgCgeyn1IWx0AKDCKgABRWVvKnEqAKDMKgCgiyLsIXVzAKDAKoABZWl1AH0qjCqPKnQAAKGDImVugyqHKnEA8aCHIkYqZQBxAPGgiyJwKm0AAKDIKgABYnCTKpUqAKDUKgCg1iqAAUFhbgCdKqEqrCpyAHIAAKDZIXIAAAFocqYqqCrrAJUab6CZIfcAxQf3IWFyAKAqKWwAaQBnADuA3wDfQOELzyrZKtwq6SrsKvEqAAD1KjQrAAAAAAAAAAAAAEwrbCsAAHErvSsAAAAAAADRK3IC1CoAAAAA2CrnIWV0AKAWI8RjcgDrAOUKgAFhZXkA4SrkKucq8iFvbmVh5CFpbGNhQmRvAPQAIg5sInJlYwAAoBUjcgAA4DXYMd0AAmVpa2/7KhIrKCsuK/IBACsAAAkrZQAAATRm6g0EK28AcgDlAOsNYQBzorgDECsAAAAAEit5AG0A0WMAAWNuFislK2sAAAFhcxsrIStwAHAAcgBvAPgAFw5pAG0AAKA8InMA8AD9DQABYXMsKyEr8AAXDnIAbgA7gP4A/kDsATgrOyswG2QA5QBnAmUAcwCAgdcAO2JkAEMrRCtJK9dAYaCgInIAAKAxKgCgMCqAAWVwcwBRK1MraSvhAAkh4qKkIlsrXysAAAAAYytvAHQAAKA2I2kAcgAAoPEqb+A12GXdcgBrAACg2irhAHgociJpbWUAAKA0IIABYWlwAHYreSu3K2QA5QC+DYADYWRlbXBzdACFK6MrmiunK6wrsCuzK24iZ2xlAACitSVkbHFykCuUK5ornCvvIXduAKC/JeUhZnRloMMl8QACBwCgXCJpImdodABloLkl8QBdDG8AdAAAoOwlaSJudXMAAKA6KuwhdXMAoDkqYgAAoM0p6SFtZQCgOyrlInppdW0AoOIjgAFjaHQAwivKK80rAAFyecYrySsA4DXYydxGZGMAeQBbZPIhb2tnYQABaW/UK9creAD0ANERaCJlYWQAAAFsct4r5ytlAGYAdABhAHIAcgBvAPcAXQbpJGdodGFycm93AKCgIQAJQUhhYmNkZmdobG1vcHJzdHV3CiwNLBEsHSwnLDEsQCxLLFIsYix6LIQsjyzLLOgs7Sz/LAotcgDyAAkDYQByAACgYykAAWNyFSwbLHUAdABlADuA+gD6QPIACQ1yAOMBIywAACUseQBeZHYAZQBtYQABaXkrLDAscgBjADuA+wD7QENkgAFhYmgANyw6LD0scgDyANEO7CFhY3FhYQDyAOAOAAFpckQsSCzzIWh0AKB+KQDgNdgy3XIAYQB2AGUAO4D5APlAYQFWLF8scgAAAWxyWixcLACgvyEAoL4hbABrAACggCUAAWN0Zix2LG8CbCwAAAAAcyxyAG4AZaAcI3IAAKAcI28AcAAAoA8jcgBpAACg+CUAAWFsfiyBLGMAcgBrYTuAqACoQAABZ3CILIssbwBuAHNhZgAA4DXYZt0AA2FkaGxzdZksniynLLgsuyzFLHIAcgBvAPcACQ1vAHcAbgBhAHIAcgBvAPcA2A5hI3Jwb29uAAABbHKvLLMsZQBmAPQAWyxpAGcAaAD0AF0sdQDzAKYOaQAAocUDaGzBLMIs0mNvAG4AxWPwI2Fycm93cwCgyCGAAWNpdADRLOEs5CxvAtcsAAAAAN4scgBuAGWgHSNyAACgHSNvAHAAAKAOI24AZwBvYXIAaQAAoPklYwByAADgNdjK3IABZGlyAPMs9yz6LG8AdAAAoPAi7CFkZWlhaQBmoLUlAKC0JQABYW0DLQYtcgDyAMosbAA7gPwA/EDhIm5nbGUAoKcpgAdBQkRhY2RlZmxub3Byc3oAJy0qLTAtNC2bLZ0toS2/LcMtxy3TLdgt3C3gLfwtcgDyABADYQByAHag6CoAoOkqYQBzAOgA/gIAAW5yOC08LechcnQAoJwpgANla25wcnN0AJkpSC1NLVQtXi1iLYItYQBwAHAA4QAaHG8AdABoAGkAbgDnAKEXgAFoaXIAoSmzJFotbwBwAPQAdCVooJUh7wD4JgABaXVmLWotZwBtAOEAuygAAWJwbi14LXMjZXRuZXEAceCKIgD+AODLKgD+cyNldG5lcQBx4IsiAP4A4MwqAP4AAWhyhi2KLWUAdADhABIraSNhbmdsZQAAAWxyki2WLeUhZnQAoLIiaSJnaHQAAKCzInkAMmThIXNoAKCiIoABZWxyAKcttC24LWKiKCKuLQAAAACyLWEAcgAAoLsicQAAoFoi7CFpcACg7iIAAWJ0vC1eD2EA8gBfD3IAAOA12DPddAByAOkAlS1zAHUAAAFicM0t0C0A4IIi0iAA4IMi0iBwAGYAAOA12GfdcgBvAPAAWQt0AHIA6QCaLQABY3XkLegtcgAA4DXYy9wAAWJw7C30LW4AAAFFZXUt8S0A4IoiAP5uAAABRWV/LfktAOCLIgD+6SJnemFnAKCaKYADY2Vmb3BycwANLhAuJS4pLiMuLi40LukhcmN1YQABZGkULiEuAAFiZxguHC5hAHIAAKBfKmUAcaAnIgCgWSLlIXJwAKAYIXIAAOA12DTdcABmAADgNdho3WWgQCJhAHQA6ABqD2MAcgAA4DXYzNzjCuQRUC4AAFQuAABYLmIuAAAAAGMubS5wLnQuAAAAAIguki4AAJouJxIqEnQAcgDpAB0ScgAA4DXYNd0AAUFhWy5eLnIA8gDnAnIA8gCTB75jAAFBYWYuaS5yAPIA4AJyAPIAjAdhAPAAeh5pAHMAAKD7IoABZHB0APgReS6DLgABZmx9LoAuAOA12GnddQDzAP8RaQBtAOUABBIAAUFhiy6OLnIA8gDuAnIA8gCaBwABY3GVLgoScgAA4DXYzdwAAXB0nS6hLmwAdQDzACUScgDpACASAARhY2VmaW9zdbEuvC7ELsguzC7PLtQu2S5jAAABdXm2LrsudABlADuA/QD9QE9kAAFpecAuwy5yAGMAd2FLZG4AO4ClAKVAcgAA4DXYNt1jAHkAV2RwAGYAAOA12GrdYwByAADgNdjO3AABY23dLt8ueQBOZGwAO4D/AP9AAAVhY2RlZmhpb3N38y73Lv8uAi8MLxAvEy8YLx0vIi9jInV0ZQB6YQABYXn7Lv4u8iFvbn5hN2RvAHQAfGEAAWV0Bi8KL3QAcgDmAB8QYQC2Y3IAAOA12DfdYwB5ADZk5yJyYXJyAKDdIXAAZgAA4DXYa91jAHIAAOA12M/cAAFqbiYvKC8AoA0gagAAoAwg")});var VJ;var PD=b(()=>{(function(J){J[J.VALUE_LENGTH=49152]="VALUE_LENGTH",J[J.FLAG13=8192]="FLAG13",J[J.BRANCH_LENGTH=8064]="BRANCH_LENGTH",J[J.JUMP_TABLE=127]="JUMP_TABLE"})(VJ||(VJ={}))});function z9(J){return J>=v1.ZERO&&J<=v1.NINE}function GT(J){return J>=v1.UPPER_A&&J<=v1.UPPER_F||J>=v1.LOWER_A&&J<=v1.LOWER_F}function QT(J){return J>=v1.UPPER_A&&J<=v1.UPPER_Z||J>=v1.LOWER_A&&J<=v1.LOWER_Z||z9(J)}function qT(J){return J===v1.EQUALS||QT(J)}class Y9{constructor(J,z,Y){this.decodeTree=J,this.emitCodePoint=z,this.errors=Y,this.state=ZJ.EntityStart,this.consumed=1,this.result=0,this.treeIndex=0,this.excess=1,this.decodeMode=WY.Strict,this.runConsumed=0}startEntity(J){this.decodeMode=J,this.state=ZJ.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1,this.runConsumed=0}write(J,z){switch(this.state){case ZJ.EntityStart:{if(J.charCodeAt(z)===v1.NUM)return this.state=ZJ.NumericStart,this.consumed+=1,this.stateNumericStart(J,z+1);return this.state=ZJ.NamedEntity,this.stateNamedEntity(J,z)}case ZJ.NumericStart:return this.stateNumericStart(J,z);case ZJ.NumericDecimal:return this.stateNumericDecimal(J,z);case ZJ.NumericHex:return this.stateNumericHex(J,z);case ZJ.NamedEntity:return this.stateNamedEntity(J,z)}}stateNumericStart(J,z){if(z>=J.length)return-1;if((J.charCodeAt(z)|hD)===v1.LOWER_X)return this.state=ZJ.NumericHex,this.consumed+=1,this.stateNumericHex(J,z+1);return this.state=ZJ.NumericDecimal,this.stateNumericDecimal(J,z)}stateNumericHex(J,z){while(z<J.length){let Y=J.charCodeAt(z);if(z9(Y)||GT(Y)){let Z=Y<=v1.NINE?Y-v1.ZERO:(Y|hD)-v1.LOWER_A+10;this.result=this.result*16+Z,this.consumed++,z++}else return this.emitNumericEntity(Y,3)}return-1}stateNumericDecimal(J,z){while(z<J.length){let Y=J.charCodeAt(z);if(z9(Y))this.result=this.result*10+(Y-v1.ZERO),this.consumed++,z++;else return this.emitNumericEntity(Y,2)}return-1}emitNumericEntity(J,z){var Y;if(this.consumed<=z)return(Y=this.errors)===null||Y===void 0||Y.absenceOfDigitsInNumericCharacterReference(this.consumed),0;if(J===v1.SEMI)this.consumed+=1;else if(this.decodeMode===WY.Strict)return 0;if(this.emitCodePoint(yD(this.result),this.consumed),this.errors){if(J!==v1.SEMI)this.errors.missingSemicolonAfterCharacterReference();this.errors.validateNumericCharacterReference(this.result)}return this.consumed}stateNamedEntity(J,z){let{decodeTree:Y}=this,Z=Y[this.treeIndex],X=(Z&VJ.VALUE_LENGTH)>>14;while(z<J.length){if(X===0&&(Z&VJ.FLAG13)!==0){let Q=(Z&VJ.BRANCH_LENGTH)>>7;if(this.runConsumed===0){let f=Z&VJ.JUMP_TABLE;if(J.charCodeAt(z)!==f)return this.result===0?0:this.emitNotTerminatedNamedEntity();z++,this.excess++,this.runConsumed++}while(this.runConsumed<Q){if(z>=J.length)return-1;let f=this.runConsumed-1,H=Y[this.treeIndex+1+(f>>1)],B=f%2===0?H&255:H>>8&255;if(J.charCodeAt(z)!==B)return this.runConsumed=0,this.result===0?0:this.emitNotTerminatedNamedEntity();z++,this.excess++,this.runConsumed++}this.runConsumed=0,this.treeIndex+=1+(Q>>1),Z=Y[this.treeIndex],X=(Z&VJ.VALUE_LENGTH)>>14}if(z>=J.length)break;let G=J.charCodeAt(z);if(G===v1.SEMI&&X!==0&&(Z&VJ.FLAG13)!==0)return this.emitNamedEntityData(this.treeIndex,X,this.consumed+this.excess);if(this.treeIndex=HT(Y,Z,this.treeIndex+Math.max(1,X),G),this.treeIndex<0)return this.result===0||this.decodeMode===WY.Attribute&&(X===0||qT(G))?0:this.emitNotTerminatedNamedEntity();if(Z=Y[this.treeIndex],X=(Z&VJ.VALUE_LENGTH)>>14,X!==0){if(G===v1.SEMI)return this.emitNamedEntityData(this.treeIndex,X,this.consumed+this.excess);if(this.decodeMode!==WY.Strict&&(Z&VJ.FLAG13)===0)this.result=this.treeIndex,this.consumed+=this.excess,this.excess=0}z++,this.excess++}return-1}emitNotTerminatedNamedEntity(){var J;let{result:z,decodeTree:Y}=this,Z=(Y[z]&VJ.VALUE_LENGTH)>>14;return this.emitNamedEntityData(z,Z,this.consumed),(J=this.errors)===null||J===void 0||J.missingSemicolonAfterCharacterReference(),this.consumed}emitNamedEntityData(J,z,Y){let{decodeTree:Z}=this;if(this.emitCodePoint(z===1?Z[J]&~(VJ.VALUE_LENGTH|VJ.FLAG13):Z[J+1],Y),z===3)this.emitCodePoint(Z[J+2],Y);return Y}end(){var J;switch(this.state){case ZJ.NamedEntity:return this.result!==0&&(this.decodeMode!==WY.Attribute||this.result===this.treeIndex)?this.emitNotTerminatedNamedEntity():0;case ZJ.NumericDecimal:return this.emitNumericEntity(0,2);case ZJ.NumericHex:return this.emitNumericEntity(0,3);case ZJ.NumericStart:return(J=this.errors)===null||J===void 0||J.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case ZJ.EntityStart:return 0}}}function fT(J){let z="",Y=new Y9(J,(Z)=>z+=TD(Z));return function(X,G){let Q=0,f=0;while((f=X.indexOf("&",f))>=0){z+=X.slice(Q,f),Y.startEntity(G);let B=Y.write(X,f+1);if(B<0){Q=f+Y.end();break}Q=f+B,f=B===0?Q+1:Q}let H=z+X.slice(Q);return z="",H}}function HT(J,z,Y,Z){let X=(z&VJ.BRANCH_LENGTH)>>7,G=z&VJ.JUMP_TABLE;if(X===0)return G!==0&&Z===G?Y:-1;if(G){let B=Z-G;return B<0||B>=X?-1:J[Y+B]-1}let Q=X+1>>1,f=0,H=X-1;while(f<=H){let B=f+H>>>1,V=B>>1,K=J[Y+V]>>(B&1)*8&255;if(K<Z)f=B+1;else if(K>Z)H=B-1;else return J[Y+Q+B]}return-1}function yZ(J,z=WY.Legacy){return BT(J,z)}var v1,hD=32,ZJ,WY,BT;var vD=b(()=>{xD();wD();PD();(function(J){J[J.NUM=35]="NUM",J[J.SEMI=59]="SEMI",J[J.EQUALS=61]="EQUALS",J[J.ZERO=48]="ZERO",J[J.NINE=57]="NINE",J[J.LOWER_A=97]="LOWER_A",J[J.LOWER_F=102]="LOWER_F",J[J.LOWER_X=120]="LOWER_X",J[J.LOWER_Z=122]="LOWER_Z",J[J.UPPER_A=65]="UPPER_A",J[J.UPPER_F=70]="UPPER_F",J[J.UPPER_Z=90]="UPPER_Z"})(v1||(v1={}));(function(J){J[J.EntityStart=0]="EntityStart",J[J.NumericStart=1]="NumericStart",J[J.NumericDecimal=2]="NumericDecimal",J[J.NumericHex=3]="NumericHex",J[J.NamedEntity=4]="NamedEntity"})(ZJ||(ZJ={}));(function(J){J[J.Legacy=0]="Legacy",J[J.Strict=1]="Strict",J[J.Attribute=2]="Attribute"})(WY||(WY={}));BT=fT(ED)});var mD,cD;var nD=b(()=>{vD();(function(J){J[J.XML=0]="XML",J[J.HTML=1]="HTML"})(mD||(mD={}));(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"})(cD||(cD={}))});import{CliRenderer as WT,createCliRenderer as VT,engine as KT}from"@opentui/core";import{createTestRenderer as D$}from"@opentui/core/testing";import{ASCIIFontRenderable as UT,BoxRenderable as DT,CodeRenderable as LT,DiffRenderable as MT,InputRenderable as FT,LineNumberRenderable as OT,MarkdownRenderable as AT,ScrollBoxRenderable as RT,SelectRenderable as gT,TabSelectRenderable as CT,TextareaRenderable as NT,TextAttributes as Z9,TextNodeRenderable as bT,TextRenderable as kT}from"@opentui/core";import{engine as F$,Timeline as O$}from"@opentui/core";import{BaseRenderable as pD,createTextAttributes as IT,InputRenderable as X9,InputRenderableEvents as fQ,isTextNodeRenderable as q9,parseColor as iD,Renderable as TT,RootTextNodeRenderable as yT,ScrollBoxRenderable as xT,SelectRenderable as lD,SelectRenderableEvents as G9,TabSelectRenderable as $D,TabSelectRenderableEvents as Q9,TextNodeRenderable as uT,TextRenderable as rD}from"@opentui/core";import{BaseRenderable as nT,isTextNodeRenderable as iT,TextNodeRenderable as lT,TextRenderable as $T,Yoga as _D}from"@opentui/core";import{BoxRenderable as T$,RootRenderable as y$}from"@opentui/core";import{TimeToFirstDrawRenderable as rT}from"@opentui/core";import{createSlotRegistry as E$}from"@opentui/core";function wT({createElement:J,createTextNode:z,createSlotNode:Y,isTextNode:Z,replaceText:X,insertNode:G,removeNode:Q,setProperty:f,getParentNode:H,getFirstChild:B,getNextSibling:V}){function j(S,C,M,I){if(M!==void 0&&!I)I=[];if(typeof C!=="function")return K(S,C,I,M);Tz(($)=>K(S,C(),$,M),I)}function K(S,C,M,I,$){while(typeof M==="function")M=M();if(C===M)return M;let i=typeof C,e=I!==void 0;if(i==="string"||i==="number"){if(i==="number")C=C.toString();if(e){let J0=M[0];if(J0&&Z(J0))X(J0,C);else J0=z(C);M=O(S,M,I,J0)}else if(M!==""&&typeof M==="string")X(B(S),M=C);else O(S,M,I,z(C)),M=C}else if(C==null||i==="boolean")M=O(S,M,I);else if(i==="function")return Tz(()=>{let J0=C();while(typeof J0==="function")J0=J0();M=K(S,J0,M,I)}),()=>M;else if(Array.isArray(C)){let J0=[];if(L(J0,C,$))return Tz(()=>M=K(S,J0,M,I,!0)),()=>M;if(J0.length===0){let T=O(S,M,I);if(e)return M=T}else if(Array.isArray(M))if(M.length===0)R(S,J0,I);else A(S,M,J0);else if(M==null||M==="")R(S,J0);else A(S,e&&M||[B(S)],J0);M=J0}else{if(Array.isArray(M)){if(e)return M=O(S,M,I,C);O(S,M,null,C)}else if(M==null||M===""||!B(S))G(S,C);else x(S,C,B(S));M=C}return M}function L(S,C,M){let I=!1;for(let $=0,i=C.length;$<i;$++){let e=C[$],J0;if(e==null||e===!0||e===!1);else if(Array.isArray(e))I=L(S,e)||I;else if((J0=typeof e)==="string"||J0==="number")S.push(z(e));else if(J0==="function")if(M){while(typeof e==="function")e=e();I=L(S,Array.isArray(e)?e:[e])||I}else S.push(e),I=!0;else S.push(e)}return I}function A(S,C,M){let I=M.length,$=C.length,i=I,e=0,J0=0,T=V(C[$-1]),f0=null;while(e<$||J0<i){if(C[e]===M[J0]){e++,J0++;continue}while(C[$-1]===M[i-1])$--,i--;if($===e){let _=i<I?J0?V(M[J0-1]):M[i-J0]:T;while(J0<i)G(S,M[J0++],_)}else if(i===J0)while(e<$){if(!f0||!f0.has(C[e]))Q(S,C[e]);e++}else if(C[e]===M[i-1]&&M[J0]===C[$-1]){let _=V(C[--$]);G(S,M[J0++],V(C[e++])),G(S,M[--i],_),C[$]=M[i]}else{if(!f0){f0=new Map;let W0=J0;while(W0<i)f0.set(M[W0],W0++)}let _=f0.get(C[e]);if(_!=null)if(J0<_&&_<i){let W0=e,R0=1,V0;while(++W0<$&&W0<i){if((V0=f0.get(C[W0]))==null||V0!==_+R0)break;R0++}if(R0>_-J0){let t=C[e];while(J0<_)G(S,M[J0++],t)}else x(S,M[J0++],C[e++])}else e++;else Q(S,C[e++])}}}function O(S,C,M,I){if(M===void 0){let i;while(i=B(S))Q(S,i);return I&&G(S,I),I??""}let $=I||Y();if(C.length){let i=!1;for(let e=C.length-1;e>=0;e--){let J0=C[e];if($!==J0){let T=H(J0)===S;if(!i&&!e)T?x(S,$,J0):G(S,$,M);else T&&Q(S,J0)}else i=!0}}else G(S,$,M);return[$]}function R(S,C,M){for(let I=0,$=C.length;I<$;I++)G(S,C[I],M)}function x(S,C,M){G(S,C,M),Q(S,M)}function a(S,C,M={},I){if(C||(C={}),!I)Tz(()=>M.children=K(S,C.children,M.children));return Tz(()=>C.ref&&C.ref(S)),Tz(()=>{for(let $ in C){if($==="children"||$==="ref")continue;let i=C[$];if(i===M[$])continue;f(S,$,i,M[$]),M[$]=i}}),M}return{render(S,C){let M;return HZ((I)=>{M=I,j(C,S())}),M},insert:j,spread(S,C,M){if(typeof C==="function")Tz((I)=>a(S,C(),I,M));else a(S,C,void 0,M)},createElement:J,createTextNode:z,insertNode:G,setProp(S,C,M,I){return f(S,C,M,I),M},mergeProps:yq,effect:Tz,memo:ET,createComponent:PV,use(S,C,M){return r1(()=>S(C,M))}}}function PT(J){let z=wT(J);return z.mergeProps=yq,z}function W9(J){if(!XH.has(J))XH.set(J,0);let z=XH.get(J)+1;return XH.set(J,z),`${J}-${z}`}function hT(J,z,Y){if(XJ("Inserting node:",e1(z),"into parent:",e1(J),"with anchor:",e1(Y),z instanceof dX),z instanceof HQ)z.parent=J,z=z.getSlotChild(J);if(Y&&Y instanceof HQ)Y=Y.getSlotChild(J);if(q9(z)){if(!(J instanceof rD)&&!q9(J))throw Error(`Orphan text error: "${z.toChunks().map((G)=>G.text).join("")}" must have a <text> as a parent: ${J.id} above ${z.id}`)}if(!(J instanceof pD))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=f9(J),X=Z.findIndex((G)=>G.id===Y.id);if(X===-1)XJ("[INSERT]","Could not find anchor",e1(J),e1(Y),"[children]",...Z.map((G)=>G.id));J.add(z,X)}function vT(J,z){if(XJ("Removing node:",e1(z),"from parent:",e1(J)),z instanceof HQ)z.parent=null,z=z.getSlotChild(J);J.remove(z.id),process.nextTick(()=>{if(z instanceof pD&&!z.parent){z.destroyRecursively();return}})}function mT(J){XJ("Creating text node:",J);let z=W9("text-node");if(typeof J==="number")J=J.toString();return dX.fromString(yZ(J),{id:z})}function cT(){let J=W9("slot-node");return XJ("Creating slot node",J),new HQ(J)}function aD(J){XJ("Getting parent of node:",e1(J));let z=J.parent??void 0;if(z instanceof yT)z=z.textParent??void 0;let Y=z?.parent?.parent?.parent;if(Y instanceof xT&&Y.content===z)z=Y;return z}function _T(J){Object.assign(YL,J)}function pT(){return YL}var j9,HJ=()=>{let J=wJ(j9);if(!J)throw Error("No renderer found");return J},ST=(J)=>{let z=HJ();zJ(()=>{z.on("resize",J)}),S1(()=>{z.off("resize",J)})},dz=()=>{let J=HJ(),[z,Y]=r({width:J.width,height:J.height});return ST((X,G)=>{Y({width:X,height:G})}),z},ET=(J)=>U0(()=>J()),XH,XJ=(...J)=>{if(process.env.DEBUG)console.log("[Reconciler]",...J)},dX,e1=(J)=>{if(!J)return;return J.id},f9=(J)=>{let z;if(J instanceof rD)z=J.getTextChildren();else z=J.getChildren();return z},dT,y,u0,k,W,E0,D,U,k$,q,oD,nz,V9,sD,tD,HQ,BQ,GH,H9,B9,eD,JL,zL,aT,YL,oT=(J,z)=>{let Y,Z=!1,X=!1,G=!0,Q=!1,f=J.destroy.bind(J),H=()=>{if(X)return;if(!Y){Z=!0;return}X=!0,Y()};J.once("destroy",H),J.destroy=()=>{if(G){Q=!0;return}f()};try{Y=dT(()=>k(j9.Provider,{get value(){return J},get children(){return k(z,{})}}),J.root)}finally{G=!1,J.destroy=f}if(Z)H();if(Q)f()},ZL=async(J,z={})=>{let Y=z instanceof WT?z:await VT({...z,onDestroy:()=>{z.onDestroy?.()}});KT.attach(Y),oT(Y,J)};var w=b(()=>{W1();nD();W1();W1();W1();j9=yz();XH=new Map;dX=class dX extends uT{static fromString(J,z={}){let Y=new dX(z);return Y.add(J),Y}};({render:dT,effect:y,memo:u0,createComponent:k,createElement:W,createTextNode:E0,insertNode:D,insert:U,spread:k$,setProp:q,mergeProps:oD,use:nz}=PT({createElement(J){XJ("Creating element:",J);let z=W9(J),Y=wJ(j9);if(!Y)throw Error("No renderer found");let Z=pT();if(!Z[J])throw Error(`[Reconciler] Unknown component type: ${J}`);let X=new Z[J](Y,{id:z});return XJ("Element created with id:",z),X},createTextNode:mT,createSlotNode:cT,replaceText(J,z){if(XJ("Replacing text:",z,"in node:",e1(J)),!(J instanceof dX))return;J.replace(yZ(z),0)},setProperty(J,z,Y,Z){if(z.startsWith("on:")){let X=z.slice(3);if(Y)J.on(X,Y);if(Z)J.off(X,Z);return}if(q9(J)){if(z==="href"){J.link={url:Y};return}if(z==="style"){J.attributes|=IT(Y),J.fg=Y.fg?iD(Y.fg):J.fg,J.bg=Y.bg?iD(Y.bg):J.bg;return}return}switch(z){case"id":XJ("Id mapped",J.id,"=",Y),J[z]=Y;break;case"focused":if(!(J instanceof TT))return;if(Y)J.focus();else J.blur();break;case"onChange":let X=void 0;if(J instanceof lD)X=G9.SELECTION_CHANGED;else if(J instanceof $D)X=Q9.SELECTION_CHANGED;else if(J instanceof X9)X=fQ.CHANGE;if(!X)break;if(Y)J.on(X,Y);if(Z)J.off(X,Z);break;case"onInput":if(J instanceof X9){if(Y)J.on(fQ.INPUT,Y);if(Z)J.off(fQ.INPUT,Z)}break;case"onSubmit":if(J instanceof X9){if(Y)J.on(fQ.ENTER,Y);if(Z)J.off(fQ.ENTER,Z)}else J[z]=Y;break;case"onSelect":if(J instanceof lD){if(Y)J.on(G9.ITEM_SELECTED,Y);if(Z)J.off(G9.ITEM_SELECTED,Z)}else if(J instanceof $D){if(Y)J.on(Q9.ITEM_SELECTED,Y);if(Z)J.off(Q9.ITEM_SELECTED,Z)}break;case"style":for(let G in Y){let Q=Y[G];if(Z!==void 0&&Q===Z[G])continue;J[G]=Q}break;case"text":case"content":{let G=typeof Y==="string"?Y:Array.isArray(Y)?Y.join(""):`${Y}`;J[z]=yZ(G);break}default:J[z]=Y}},isTextNode(J){return J instanceof dX},insertNode:hT,removeNode:vT,getParentNode:aD,getFirstChild(J){XJ("Getting first child of node:",e1(J));let z=f9(J)[0];if(!z){XJ("No first child found for node:",e1(J));return}return XJ("First child found:",e1(z),"for node:",e1(J)),z},getNextSibling(J){XJ("Getting next sibling of node:",e1(J));let z=aD(J);if(!z){XJ("No parent found for node:",e1(J));return}let Y=f9(z),Z=Y.indexOf(J);if(Z===-1||Z===Y.length-1){XJ("No next sibling found for node:",e1(J));return}let X=Y[Z+1];if(!X){XJ("Next sibling is null for node:",e1(J));return}return XJ("Next sibling found:",e1(X),"for node:",e1(J)),X}}));V9=class V9 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}};sD=class sD extends lT{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()}};tD=class tD extends V9{yogaNode;slotParent;destroyed=!1;constructor(J,z){super(J);this._visible=!1,this.slotParent=z,this.yogaNode=_D.default.Node.create(),this.yogaNode.setDisplay(_D.Display.None)}getLayoutNode(){return this.yogaNode}updateFromLayout(){}updateLayout(){}onRemove(){}destroy(){if(this.destroyed)return;this.destroyed=!0,super.destroy(),this.slotParent?.destroy()}};HQ=class HQ extends V9{layoutNode;textNode;destroyed=!1;constructor(J){super(J);this._visible=!1}getSlotChild(J){if(iT(J)||J instanceof $T){if(!this.textNode)this.textNode=new sD(`slot-text-${this.id}`,this);return this.textNode}if(!this.layoutNode)this.layoutNode=new tD(`slot-layout-${this.id}`,this);return this.layoutNode}destroy(){if(this.destroyed)return;if(this.destroyed=!0,this.layoutNode)this.layoutNode.destroy();if(this.textNode)this.textNode.destroy()}};BQ=class BQ extends bT{_ctx;constructor(J,z){super(z);this._ctx=J}};GH=class GH extends BQ{constructor(J,z){super(null,J);if(z==="b"||z==="strong")this.attributes=(this.attributes||0)|Z9.BOLD;else if(z==="i"||z==="em")this.attributes=(this.attributes||0)|Z9.ITALIC;else if(z==="u")this.attributes=(this.attributes||0)|Z9.UNDERLINE}};H9=class H9 extends GH{constructor(J){super(J,"b")}};B9=class B9 extends GH{constructor(J){super(J,"i")}};eD=class eD extends GH{constructor(J){super(J,"u")}};JL=class JL extends BQ{constructor(J,z){super(null,z);this.add()}add(){return super.add(`
261
- `)}};zL=class zL extends BQ{constructor(J,z){let Y={...z,link:{url:z.href}};super(null,Y)}};aT={box:DT,text:kT,input:FT,select:gT,textarea:NT,ascii_font:UT,tab_select:CT,scrollbox:RT,code:LT,diff:MT,line_number:OT,markdown:AT,span:BQ,strong:H9,b:H9,em:B9,i:B9,u:eD,br:JL,a:zL},YL={...aT};_T({time_to_first_draw:rT})});function VY(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 sT(J){let z=J?.changes;if(!z||typeof z!=="object"||Array.isArray(z))return null;let Y=new Map;for(let[Z,X]of Object.entries(z)){let G=X;if(typeof G?.added!=="number"||typeof G.deleted!=="number")return null;Y.set(Z,{added:G.added,deleted:G.deleted})}return Y}function tT(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 eT(J,z){if(J.size!==z.size)return!1;for(let[Y,Z]of J){let X=z.get(Y);if(!X||!cz(Z,X))return!1}return!0}function Jy(J){let z=J?.activity;if(!z||typeof z!=="object"||Array.isArray(z))return null;let Y=new Map;for(let[Z,X]of Object.entries(z)){let G=X;if(typeof G?.mtimeMs!=="number"||typeof G.completionAt!=="number")return null;if(G.completionId!==null&&typeof G.completionId!=="string")return null;Y.set(Z,{mtimeMs:G.mtimeMs,completionId:G.completionId,completionAt:G.completionAt})}return Y}function zy(J,z){if(J.size!==z.size)return!1;for(let[Y,Z]of J){let X=z.get(Y);if(!X||X.mtimeMs!==Z.mtimeMs||X.completionId!==Z.completionId||X.completionAt!==Z.completionAt)return!1}return!0}class KJ{client;tasksAcc;setTasks;activeTaskAcc;setActiveTaskSig;updateAcc;setUpdateSig;daemonVersionAcc;setDaemonVersionSig;engineStateAcc;setEngineStateSig;taskJobsAcc;setTaskJobsSig;worktreeChangesAcc;setWorktreeChangesSig;transcriptActivityAcc;setTranscriptActivitySig;uiPrefsAcc;setUiPrefsSig;keybindingsRevAcc;setKeybindingsRevSig;connectionStateAcc;setConnectionState;ensureReachable;role;channels;subscribesTasks;reconnecting=!1;constructor(J,z={}){this.client=J;let[Y,Z]=r([]),[X,G]=r(null),[Q,f]=r(null),[H,B]=r(null),[V,j]=r(new Map),[K,L]=r(new Map),[A,O]=r(null),[R,x]=r(null),[a,S]=r(null),[C,M]=r(null),[I,$]=r("online");this.tasksAcc=Y,this.setTasks=(i)=>Z(()=>i),this.activeTaskAcc=X,this.setActiveTaskSig=(i)=>G(()=>i),this.updateAcc=Q,this.setUpdateSig=(i)=>f(()=>i),this.daemonVersionAcc=H,this.setDaemonVersionSig=(i)=>B(()=>i),this.engineStateAcc=V,this.setEngineStateSig=(i)=>j(()=>i),this.taskJobsAcc=K,this.setTaskJobsSig=(i)=>L(()=>i),this.worktreeChangesAcc=A,this.setWorktreeChangesSig=(i)=>O(()=>i),this.transcriptActivityAcc=R,this.setTranscriptActivitySig=(i)=>x(()=>i),this.uiPrefsAcc=a,this.setUiPrefsSig=(i)=>S(()=>i),this.keybindingsRevAcc=C,this.setKeybindingsRevSig=(i)=>M(()=>i),this.connectionStateAcc=I,this.setConnectionState=(i)=>$(()=>i),this.ensureReachable=z.ensureReachable??EX,this.role=z.role??"pane",this.channels=z.channels,this.subscribesTasks=!z.channels||z.channels.includes("task.snapshot"),this.client.on("*",(i)=>this.handleEvent(i.name,i.payload)),this.client.onLifecycle("close",()=>{if(this.setConnectionState("disconnected"),this.role==="pane")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)t1("orch-reconnect",Y);J=Math.min(J*2,3000)}}this.reconnecting=!1}async init(){let J=await this.client.request("hello",{protocolVersion:$J,minProtocolVersion:OY}),z=typeof J.protocolVersion==="number"?J.protocolVersion:$J,Y=typeof J.minProtocolVersion==="number"?J.minProtocolVersion:z;if(!lQ({localVersion:$J,localMin:OY,remoteVersion:z,remoteMin:Y}))throw Error(`kobe daemon is protocol v${z} (min v${Y}); this client is v${$J} (min v${OY}). Restart the daemon (\`kobe daemon restart\`) or upgrade kobe.`);if(this.setDaemonVersionSig(typeof J.kobeVersion==="string"?J.kobeVersion:null),J.tasks&&this.subscribesTasks)this.setTasks(J.tasks.map(jQ));if(await this.client.subscribe({role:this.role,channels:this.channels}),J.capabilities?.includes("worktree.changes")){if(this.worktreeChangesAcc()===null)this.setWorktreeChangesSig(new Map)}else this.setWorktreeChangesSig(null);if(J.capabilities?.includes("transcript.activity")){if(this.transcriptActivityAcc()===null)this.setTranscriptActivitySig(new Map)}else this.setTranscriptActivitySig(null);this.setConnectionState("online"),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()=>J7(this.daemonVersionAcc()??void 0,p0)}engineStateSignal(){return this.engineStateAcc}taskJobsSignal(){return this.taskJobsAcc}worktreeChangesSignal(){return this.worktreeChangesAcc}transcriptActivitySignal(){return this.transcriptActivityAcc}uiPrefsSignal(){return this.uiPrefsAcc}keybindingsRevSignal(){return this.keybindingsRevAcc}listTasks(){return this.tasksAcc()}getTask(J){return this.tasksAcc().find((z)=>z.id===J)}subscribeTasks(J){try{J(this.listTasks())}catch(Y){console.error("[kobe RemoteOrchestrator] task listener threw on subscribe:",Y)}let z=!0;return HZ((Y)=>{return r0(()=>{let Z=this.tasksAcc();if(z){z=!1;return}try{J(Z)}catch(X){console.error("[kobe RemoteOrchestrator] task listener threw:",X)}}),Y})}async createTask(J){let{modelEffort:z,...Y}=J,Z=await this.client.request("task.create",{...Y,effort:z});return jQ(Z.task)}async ensureMainTask(J){let z=await this.client.request("task.ensureMain",{repo:J});return jQ(z.task)}async ensureWorktree(J){return(await this.client.request("task.ensureWorktree",{taskId:String(J)})).worktreePath}async forgetProject(J){await this.client.request("project.forget",{repo:J})}async setTitle(J,z){await this.client.request("task.rename",{taskId:String(J),title:z})}async setBranch(J,z){await this.client.request("task.setBranch",{taskId:String(J),branch:z})}async setVendor(J,z){await this.client.request("task.setVendor",{taskId:String(J),vendor:z})}async setPinned(J,z){await this.client.request("task.pin",{taskId:String(J),pinned:z})}async moveTask(J,z){await this.client.request("task.move",{taskId:String(J),direction:z<0?"up":"down"})}async setArchived(J,z){await this.client.request("task.archive",{taskId:String(J),archived:z})}async setStatus(J,z){await this.client.request("task.status",{taskId:String(J),status:z})}async deleteTask(J,z){await this.client.request("task.delete",{taskId:String(J),force:z?.force})}async discoverAdoptableWorktrees(J){return(await this.client.request("worktree.discoverAdoptable",{repo:J})).worktrees}async adoptWorktree(J){let z=await this.client.request("worktree.adopt",J);return jQ(z.task)}async setActiveTask(J){await this.client.request("task.setActive",{taskId:J===null?null:String(J)})}handleEvent(J,z){if(J==="task.snapshot"){let Y=z?.tasks;if(Array.isArray(Y))this.setTasks(Y.map(jQ)),this.pruneEngineState(Y),this.pruneTaskJobs(Y);else t1("orch",`dropped task.snapshot event: tasks is not an array (got ${VY(Y)})`);return}if(J==="active-task"){let Y=z?.taskId;this.setActiveTaskSig(typeof Y==="string"?Y:null);return}if(J==="update"){let Y=z?.info;this.setUpdateSig(Y??null);return}if(J==="engine-state"){let Y=z;if(typeof Y?.taskId!=="string"||typeof Y.state!=="string"){t1("orch",`dropped engine-state event: taskId/state must be strings (taskId=${VY(Y?.taskId)}, state=${VY(Y?.state)})`);return}let Z=new Map(this.engineStateAcc());if(Y.state==="idle")Z.delete(Y.taskId);else Z.set(Y.taskId,{state:Y.state,detail:Y.detail,at:typeof Y.at==="number"?Y.at:0});this.setEngineStateSig(Z);return}if(J==="task.jobs"){let Y=z;if(typeof Y?.taskId!=="string"||Y.kind!=="ensureWorktree"){t1("orch",`dropped task.jobs event: expected string taskId + kind "ensureWorktree" (taskId=${VY(Y?.taskId)}, kind=${VY(Y?.kind)})`);return}let Z=this.taskJobsAcc();if(Y.phase==="running"){let X=new Map(Z);X.set(Y.taskId,{kind:Y.kind}),this.setTaskJobsSig(X);return}if((Y.phase==="done"||Y.phase==="error")&&Z.has(Y.taskId)){let X=new Map(Z);X.delete(Y.taskId),this.setTaskJobsSig(X)}return}if(J==="worktree.changes"){let Y=sT(z);if(!Y){t1("orch",`dropped worktree.changes event: malformed changes payload (${VY(z)})`);return}let Z=this.worktreeChangesAcc();if(Z&&eT(Z,Y))return;this.setWorktreeChangesSig(Y);return}if(J==="transcript.activity"){let Y=Jy(z);if(!Y){t1("orch",`dropped transcript.activity event: malformed activity payload (${VY(z)})`);return}let Z=this.transcriptActivityAcc();if(Z&&zy(Z,Y))return;this.setTranscriptActivitySig(Y);return}if(J==="ui-prefs"){let Y=tT(z);if(!Y){let Z=z?.theme;t1("orch",`dropped ui-prefs event: theme must be a string (got ${VY(Z)})`);return}this.setUiPrefsSig(Y);return}if(J==="keybindings"){let Y=z;if(typeof Y?.rev!=="number"){t1("orch",`dropped keybindings event: rev must be a number (got ${VY(Y?.rev)})`);return}this.setKeybindingsRevSig(Y.rev);return}}pruneEngineState(J){let z=this.engineStateAcc();if(z.size===0)return;let Y=new Set(J.map((X)=>X.id)),Z=null;for(let X of z.keys()){if(Y.has(X))continue;if(!Z)Z=new Map(z);Z.delete(X)}if(Z)this.setEngineStateSig(Z)}pruneTaskJobs(J){let z=this.taskJobsAcc();if(z.size===0)return;let Y=new Set(J.map((X)=>X.id)),Z=null;for(let X of z.keys()){if(Y.has(X))continue;if(!Z)Z=new Map(z);Z.delete(X)}if(Z)this.setTaskJobsSig(Z)}}function jQ(J){return{id:KG(J.id),title:J.title,repo:J.repo,branch:J.branch,worktreePath:J.worktreePath,kind:J.kind,status:J.status,archived:J.archived,pinned:J.pinned,vendor:J.vendor,prStatus:J.prStatus,modelEffort:J.modelEffort,createdAt:J.createdAt,updatedAt:J.updatedAt}}var iY=b(()=>{YZ();FJ();JZ();W1();yX();rJ();MJ()});function QL(J){let z=J[Vz];if(!z){if(Object.defineProperty(J,Vz,{value:z=new Proxy(J,Xy)}),!Array.isArray(J)){let Y=Object.keys(J),Z=Object.getOwnPropertyDescriptors(J),X=Object.getPrototypeOf(J),G=X!==null&&J!==null&&typeof J==="object"&&!Array.isArray(J)&&X!==Object.prototype;if(G){let Q=Object.getOwnPropertyDescriptors(X);Y.push(...Object.keys(Q)),Object.assign(Z,Q)}for(let Q=0,f=Y.length;Q<f;Q++){let H=Y[Q];if(G&&H==="constructor")continue;if(Z[H].get)Object.defineProperty(J,H,{configurable:!0,enumerable:Z[H].enumerable,get:Z[H].get.bind(z)})}}}return z}function QH(J){let z;return J!=null&&typeof J==="object"&&(J[Vz]||!(z=Object.getPrototypeOf(J))||z===Object.prototype||Array.isArray(J))}function VQ(J,z=new Set){let Y,Z,X,G;if(Y=J!=null&&J[K9])return Y;if(!QH(J)||z.has(J))return J;if(Array.isArray(J)){if(Object.isFrozen(J))J=J.slice(0);else z.add(J);for(let Q=0,f=J.length;Q<f;Q++)if(X=J[Q],(Z=VQ(X,z))!==X)J[Q]=Z}else{if(Object.isFrozen(J))J=Object.assign({},J);else z.add(J);let Q=Object.keys(J),f=Object.getOwnPropertyDescriptors(J);for(let H=0,B=Q.length;H<B;H++){if(G=Q[H],f[G].get)continue;if(X=J[G],(Z=VQ(X,z))!==X)J[G]=Z}}return J}function qH(J,z){let Y=J[z];if(!Y)Object.defineProperty(J,z,{value:Y=Object.create(null)});return Y}function KQ(J,z,Y){if(J[z])return J[z];let[Z,X]=r(Y,{equals:!1,internal:!0});return Z.$=X,J[z]=Z}function Yy(J,z){let Y=Reflect.getOwnPropertyDescriptor(J,z);if(!Y||Y.get||!Y.configurable||z===Vz||z===nX)return Y;return delete Y.value,delete Y.writable,Y.get=()=>J[Vz][z],Y}function qL(J){Tq()&&KQ(qH(J,nX),GL)()}function Zy(J){return qL(J),Reflect.ownKeys(J)}function fH(J,z,Y,Z=!1){if(z==="__proto__"){console.warn('Refusing to set "__proto__" on a store.');return}if(!Z&&J[z]===Y)return;let X=J[z],G=J.length;if(XL.onStoreNodeUpdate&&XL.onStoreNodeUpdate(J,z,Y,X),Y===void 0){if(delete J[z],J[KY]&&J[KY][z]&&X!==void 0)J[KY][z].$()}else if(J[z]=Y,J[KY]&&J[KY][z]&&X===void 0)J[KY][z].$();let Q=qH(J,nX),f;if(f=KQ(Q,z,X))f.$(()=>Y);if(Array.isArray(J)&&J.length!==G){for(let H=J.length;H<G;H++)(f=Q[H])&&f.$();(f=KQ(Q,"length",G))&&f.$(J.length)}(f=Q[GL])&&f.$()}function fL(J,z){let Y=Object.keys(z);for(let Z=0;Z<Y.length;Z+=1){let X=Y[Z];if(HL(X))continue;fH(J,X,z[X])}}function HL(J){return J==="__proto__"||J==="constructor"||J==="prototype"}function Gy(J,z){if(typeof z==="function")z=z(J);if(z=VQ(z),Array.isArray(z)){if(J===z)return;let Y=0,Z=z.length;for(;Y<Z;Y++){let X=z[Y];if(J[Y]!==X)fH(J,Y,X)}fH(J,"length",Z)}else fL(J,z)}function WQ(J,z,Y=[]){let Z,X=J;if(z.length>1){Z=z.shift();let Q=typeof Z,f=Array.isArray(J);if(Q==="string"&&(Z==="__proto__"||z.length>1&&HL(Z))){console.warn(`Refusing to traverse unsafe key "${Z}" on a store.`);return}if(Array.isArray(Z)){for(let H=0;H<Z.length;H++)WQ(J,[Z[H]].concat(z),Y);return}else if(f&&Q==="function"){for(let H=0;H<J.length;H++)if(Z(J[H],H))WQ(J,[H].concat(z),Y);return}else if(f&&Q==="object"){let{from:H=0,to:B=J.length-1,by:V=1}=Z;for(let j=H;j<=B;j+=V)WQ(J,[j].concat(z),Y);return}else if(z.length>1){WQ(J[Z],z,[Z].concat(Y));return}X=J[Z],Y=[Z].concat(Y)}let G=z[0];if(typeof G==="function"){if(G=G(X,Y),G===X)return}if(Z===void 0&&G==null)return;if(G=VQ(G),Z===void 0||QH(X)&&QH(G)&&!Array.isArray(G))fL(X,G);else fH(J,Z,G)}function iz(...[J,z]){let Y=VQ(J||{}),Z=Array.isArray(Y);if(typeof Y!=="object"&&typeof Y!=="function")throw Error(`Unexpected type ${typeof Y} received when initializing 'createStore'. Expected an object.`);let X=QL(Y);vV.registerGraph({value:Y,name:z&&z.name});function G(...Q){Iq(()=>{Z&&Q.length===1?Gy(Y,Q[0]):WQ(Y,Q)})}return[X,G]}var K9,nX,KY,GL,XL,Xy,$$;var iX=b(()=>{W1();K9=Symbol("store-raw"),nX=Symbol("store-node"),KY=Symbol("store-has"),GL=Symbol("store-self"),XL={onStoreNodeUpdate:null};Xy={get(J,z,Y){if(z===K9)return J;if(z===Vz)return Y;if(z===bq)return qL(J),Y;let Z=qH(J,nX),X=Z[z],G=X?X():J[z];if(z===nX||z===KY||z==="__proto__")return G;if(!X){let Q=Object.getOwnPropertyDescriptor(J,z);if(Tq()&&(typeof G!=="function"||J.hasOwnProperty(z))&&!(Q&&Q.get))G=KQ(Z,z,G)()}return QH(G)?QL(G):G},has(J,z){if(z===K9||z===Vz||z===bq||z===nX||z===KY||z==="__proto__")return!0;return Tq()&&KQ(qH(J,KY),z)(),z in J},set(){return console.warn("Cannot mutate a Store directly"),!0},deleteProperty(){return console.warn("Cannot mutate a Store directly"),!0},ownKeys:Zy,getOwnPropertyDescriptor:Yy};$$=Symbol("store-root")});function HH(J){let z=yz();return{provider:(Y)=>{let Z=J.init(Y);return k(G0,{get when(){return Z.ready===void 0||Z.ready===!0},get children(){return k(z.Provider,{value:Z,get children(){return Y.children}})}})},use(){let Y=wJ(z);if(!Y)throw Error(`${J.name} context must be used within a context provider`);return Y}}}var U9=b(()=>{w();w();W1()});import{RGBA as xZ}from"@opentui/core";function qy(){return Object.keys(BJ.themes)}function UQ(J){return Boolean(BJ.themes[J])}function L9(J,z){if(!J)return!1;if(!z||typeof z!=="object"||!z.theme)return!1;return uZ("themes",{...BJ.themes,[J]:z}),!0}function D9(J,z="dark"){let Y=J.defs??{};function Z(H,B=[]){if(typeof H==="string"){if(H==="transparent"||H==="none")return xZ.fromInts(0,0,0,0);if(H.startsWith("#"))return xZ.fromHex(H);if(B.includes(H))return xZ.fromInts(0,0,0);let V=Y[H]??J.theme[H];if(V===void 0)return xZ.fromInts(0,0,0);return Z(V,[...B,H])}return Z(H[z],B)}let X={};for(let[H,B]of Object.entries(J.theme))X[H]=Z(B);let G=X.text??xZ.fromHex("#ffffff"),Q=X.background??xZ.fromHex("#000000");return{...{primary:X.primary??G,secondary:X.secondary??G,accent:X.accent??X.primary??G,error:X.error??G,warning:X.warning??G,success:X.success??G,info:X.info??G,text:G,textMuted:X.textMuted??G,background:Q,backgroundPanel:X.backgroundPanel??Q,backgroundElement:X.backgroundElement??Q,backgroundMenu:X.backgroundMenu??X.backgroundElement??Q,backgroundDialog:X.backgroundDialog??X.backgroundPanel??Q,border:X.border??G,borderActive:X.borderActive??X.border??G,borderSubtle:X.borderSubtle??X.border??G,diffAdded:X.diffAdded??X.success??G,diffRemoved:X.diffRemoved??X.error??G,diffContext:X.diffContext??X.textMuted??G,diffHunkHeader:X.diffHunkHeader??X.textMuted??G,diffAddedBg:X.diffAddedBg??Q,diffRemovedBg:X.diffRemovedBg??Q,selectedListItemText:X.selectedListItemText??Q},...X}}var Qy,EZ,BJ,uZ,i0,BL;var m1=b(()=>{w();W1();iX();U9();aq();_q();pq();rq();oq();sq();tq();Qy={claude:jX,conductor:WX,nord:KX,opencode:UX,dracula:VX,tokyonight:LX,"osaka-jade":DX},EZ=["primary","success","info"],[BJ,uZ]=iz({themes:{...Qy},active:"claude",mode:"dark",transparentBackground:!1,focusAccent:"primary"});({use:i0,provider:BL}=HH({name:"Theme",init:(J)=>{if(J.mode)uZ("mode",J.mode);if(J.theme&&UQ(J.theme))uZ("active",J.theme);let z=HJ(),Y=U0(()=>{let X=BJ.themes[BJ.active];if(X)return D9(X,BJ.mode);let G=BJ.themes.claude??BJ.themes.opencode??Object.values(BJ.themes)[0];if(!G)return D9({theme:{background:"#000000",text:"#ffffff"}},BJ.mode);return D9(G,BJ.mode)}),Z=U0(()=>{let X=Y(),G=X[BJ.focusAccent]??X.primary,Q={...X,focusAccent:G};if(!BJ.transparentBackground)return Q;let f=xZ.fromInts(0,0,0,0);return{...Q,background:f,backgroundPanel:f}});return r0(()=>{z?.setBackgroundColor(Z().background)}),{theme:new Proxy({},{get(X,G){let Q=Z();return Q[G]??Q.text}}),get selected(){return BJ.active},get transparentBackground(){return BJ.transparentBackground},get focusAccent(){return BJ.focusAccent},mode(){return BJ.mode},set(X){if(!UQ(X))return!1;return uZ("active",X),!0},setMode(X){uZ("mode",X)},setTransparentBackground(X){uZ("transparentBackground",X)},setFocusAccent(X){uZ("focusAccent",X)},all(){return qy()},has(X){return UQ(X)}}}}))});var jL,WL;var VL=b(()=>{jL={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"}},WL={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 KL,UL;var DL=b(()=>{KL={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"}},UL={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,ML;var FL=b(()=>{LL={title:"kobe \u2014 keybindings",esc:"esc"},ML={title:"kobe \u2014 \u5FEB\u6377\u952E",esc:"esc"}});var OL,AL;var RL=b(()=>{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)"}},AL={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 gL,CL;var NL=b(()=>{gL={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"}},CL={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 bL,kL;var SL=b(()=>{bL={badge:{newActivity:"\u25CF new"},preview:{diffVsHead:"diff vs HEAD",file:"file",closeHint:"\xB7 q to close",loading:"loading\u2026"}},kL={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 IL,TL;var yL=b(()=>{IL={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"},TL={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 xL,uL;var EL=b(()=>{xL={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)"}},uL={title:"\u8BBE\u7F6E",esc:"esc",nav:{default:"j/k \u9009\u62E9 \xB7 h/l \u5207\u6362\u5C42\u7EA7 \xB7 enter \u786E\u8BA4 \xB7 esc \u5173\u95ED",feedback:"tab \u4E0B\u4E00\u9879 \xB7 enter \u5728\u53D1\u9001\u9879\u53D1\u9001 \xB7 esc \u5173\u95ED"},sections:{general:"\u901A\u7528",engines:"\u5F15\u64CE",accounts:"\u8D26\u6237",keys:"\u5FEB\u6377\u952E",feedback:"\u53CD\u9988",dev:"\u5F00\u53D1"},general:{theme:"\u4E3B\u9898",themeHint:"l \u8FDB\u5165\u5217\u8868 \xB7 j/k \u9AD8\u4EAE \xB7 enter \u5E94\u7528",language:"\u8BED\u8A00",languageHint:"kobe \u754C\u9762\u7684\u663E\u793A\u8BED\u8A00\u3002l \u8FDB\u5165\u5217\u8868 \xB7 j/k \u9AD8\u4EAE \xB7 enter \u5E94\u7528\u3002",transparent:"\u900F\u660E\u80CC\u666F",transparentHint:"\u53BB\u6389\u6E32\u67D3\u5668\u7684\u80CC\u666F\u586B\u5145\uFF0C\u8BA9\u5BBF\u4E3B\u7EC8\u7AEF\u900F\u51FA\u6765\u3002\u6309 `t` \u5207\u6362\u3002",on:"[x] \u5F00",off:"[ ] \u5173",focusAccent:"\u805A\u7126\u5F3A\u8C03\u8272",focusAccentHint:"\u805A\u7126\u9762\u677F\u6807\u9898\u3001\u258C \u6807\u8BB0\u548C\u5206\u9694\u8FB9\u6846\u7684\u989C\u8272\u3002",accentPrimary:"\u4E3B\u8272\uFF08\u54C1\u724C\u5F3A\u8C03\u8272\uFF09",accentSuccess:"\u6210\u529F\u8272\uFF08\u4F20\u7EDF\u7EFF\uFF09",accentInfo:"\u4FE1\u606F\u8272\uFF08\u51B7\u84DD\uFF09",notifications:"\u901A\u77E5",notificationsHint:"\u540E\u53F0\u804A\u5929\u9875\u5B8C\u6210\u6216\u5728\u5BA1\u6279\u5904\u6682\u505C\u65F6\u89E6\u53D1\u3002Toast = \u53F3\u4E0B\u89D2\u5F39\u7A97\uFF1BSound = \u7EC8\u7AEF\u54CD\u94C3 + \u63D0\u793A\u97F3\u3002\u6807\u7B7E\u4E0A\u7684\u672A\u8BFB\u5706\u70B9\u59CB\u7EC8\u5F00\u542F\u3002",toast:"Toast \u5F39\u7A97",sound:"\u58F0\u97F3",zen:"\u7985\u6A21\u5F0F",zenHint:"`zen` \u6807\u8BB0\uFF08\u6587\u4EF6\u5217\u8868\u4E0A\u65B9\uFF09\u548C `prefix`+\u7A7A\u683C \u4F1A\u628A ChatTab \u6536\u8D77\u5230\u5F15\u64CE\u9762\u677F\u2014\u2014\u9690\u85CF\u6587\u4EF6\u4E0E\u7EC8\u7AEF\u9762\u677F\u3002\u4FDD\u6301\u5F00\u542F\u53EF\u8BA9 Tasks \u4FA7\u680F\u59CB\u7EC8\u53EF\u89C1\uFF0C\u65B9\u4FBF\u968F\u65F6\u9000\u51FA\u3002",zenKeepTasks:"\u7985\u6A21\u5F0F\u4E0B\u4FDD\u7559 Tasks \u9762\u677F",surface:"\u8BBE\u7F6E\u9875\u9762",surfaceHint:"\u8BBE\u7F6E\u53CA\u5176\u4ED6\u5B8C\u6574\u5BF9\u8BDD\u6846\uFF08\u65B0\u5EFA\u4EFB\u52A1\u3001\u91CD\u547D\u540D\uFF09\u7684\u6253\u5F00\u4F4D\u7F6E\u3002ChatTab = \u4E0E\u5F15\u64CE\u6807\u7B7E\u5E76\u5217\u7684\u72EC\u7ACB\u6574\u7A97\u9875\u9762\uFF1BTask panel = \u5DE6\u4FA7 Tasks \u9762\u677F\u5185\u7684\u6D6E\u5C42\u3002enter \u9009\u62E9\u3002",surfaceChattab:"ChatTab\uFF08\u72EC\u7ACB\u9875\u9762\uFF09",surfaceTaskpanel:"Task panel\uFF08\u9762\u677F\u5185\u6D6E\u5C42\uFF09",editor:"\u7F16\u8F91\u5668",editorHint:"\u6587\u4EF6\u6811\u91CC\u6309 `e` \u7528\u4EC0\u4E48\u6253\u5F00\u6587\u4EF6\uFF08enter \u4ECD\u662F\u53EA\u8BFB\u9884\u89C8\uFF09\u3002`auto`\uFF08\u9ED8\u8BA4\uFF09\u8DDF\u968F $VISUAL / $EDITOR\uFF0C\u5426\u5219\u81EA\u52A8\u63A2\u6D4B nvim / vim / emacs / nano\u3002\u5728\u4E0B\u65B9\u4E00\u884C\u6309 enter \u5728 auto / vim / nvim / nano / emacs / custom \u95F4\u5FAA\u73AF\uFF1B\u7F16\u8F91\u5668\u672A\u5B89\u88C5\u65F6\u56DE\u9000\u5230\u9884\u89C8\u3002",editorRow:"\u7F16\u8F91\u5668: < {kind} > (enter \u5207\u6362)",editorCustom:"\u81EA\u5B9A\u4E49: {cmd}",editorCustomUnset:"(\u672A\u8BBE\u7F6E \u2014 enter \u7F16\u8F91)"},engines:{title:"\u542F\u52A8\u547D\u4EE4",hint:"\u6BCF\u4E2A\u5F15\u64CE\u7684\u4EFB\u52A1\u9762\u677F\u8FD0\u884C\u7684\u547D\u4EE4\u3002\u5F53\u4E8C\u8FDB\u5236\u6587\u4EF6\u4E0D\u5728 PATH \u4E0A\u7684 `claude` / `codex` \u540D\u4E0B\uFF08\u6BD4\u5982\u53EB `cl`\uFF09\u3001\u8981\u4F20\u9ED8\u8BA4\u53C2\u6570\uFF0C\u6216\u8981\u6DFB\u52A0\u81EA\u5DF1\u7684\u5F15\u64CE\u65F6\uFF0C\u53EF\u8986\u76D6\u5185\u7F6E\u9879\u3002\u25CF = \u65B0\u4EFB\u52A1\u7684\u9ED8\u8BA4\u5F15\u64CE\uFF08\u4E5F\u53EF\u7528 Ctrl+Shift+T \u8BBE\u7F6E\uFF09\u3002enter \u7F16\u8F91\u547D\u4EE4 \xB7 r \u91CD\u547D\u540D \xB7 x \u91CD\u7F6E/\u79FB\u9664 \xB7 d \u8BBE\u4E3A\u9ED8\u8BA4\u3002",defaultTag:" (\u9ED8\u8BA4)",customTag:" (\u81EA\u5B9A\u4E49)",addEngine:"+ \u6DFB\u52A0\u5F15\u64CE"},accounts:{title:"\u8D26\u6237",hint:"\u672C\u5730\u63A2\u6D4B\u5230\u7684\u5F15\u64CE\u8D26\u6237\u7684\u53EA\u8BFB\u89C6\u56FE\u3002\u767B\u5F55\u6D41\u7A0B\u7A0D\u540E\u4F1A\u63A5\u5165\u8FD9\u91CC\u3002",checking:"\u68C0\u67E5\u4E2D\u2026",notLoggedIn:"\u25CB \u672A\u767B\u5F55",loggedIn:"\u25CF \u5DF2\u767B\u5F55: {email}",apiKeyConfigured:"\u25CF \u5DF2\u914D\u7F6E API key",chatgptLogin:"\u25CF ChatGPT \u767B\u5F55: {email}",tokenConfigured:"\u25CF \u5DF2\u914D\u7F6E Token ({source})",copilotDetected:"\u25CF \u68C0\u6D4B\u5230 Copilot \u767B\u5F55"},keybindings:{title:"\u5FEB\u6377\u952E",hint:"\u7F16\u8F91\u4E0B\u9762\u7684 YAML \u6765\u91CD\u7ED1\u5B9A\u6309\u952E\uFF0C\u7136\u540E\u91CD\u542F kobe\uFF08\u6216\u91CD\u5EFA\u9762\u677F\uFF09\u3002\u4EFB\u610F\u4F4D\u7F6E\u6309 F1 \u67E5\u770B\u5E26\u6BCF\u4E2A\u7ED1\u5B9A id \u7684\u5B9E\u65F6\u952E\u4F4D\u8868\u3002",configFile:"\u914D\u7F6E\u6587\u4EF6",notCreated:" (\u5C1A\u672A\u521B\u5EFA)",example:"\u793A\u4F8B",overridesApplied:"\u5DF2\u5E94\u7528\u7684\u8986\u76D6",none:"\u65E0",warnings:"\u8B66\u544A"},feedback:{title:"\u53CD\u9988",hint:"\u901A\u8FC7 `gh` \u5411 kobe \u4ED3\u5E93\u53D1\u4E00\u6761 GitHub Discussion\u3002\u9700\u8981 `gh auth login`\uFF1B\u5206\u7C7B\u9ED8\u8BA4\u4E3A Feedback\u3002",titleLabel:"\u6807\u9898",titlePlaceholder:"\u7B80\u77ED\u6982\u62EC",descriptionLabel:"\u63CF\u8FF0",descriptionPlaceholder:"\u53D1\u751F\u4E86\u4EC0\u4E48\uFF1F(enter \u6362\u884C \xB7 tab \u8DF3\u5230\u53D1\u9001)",send:"[enter] \u53D1\u9001\u5230 GitHub Discussions"},dev:{reset:"\u91CD\u7F6E UI \u72B6\u6001",resetHint:"\u6E05\u7A7A ~/.config/kobe/state.json \u548C ~/.kobe/tasks.json\uFF0C\u7136\u540E\u9000\u51FA kobe\u2014\u2014\u91CD\u65B0\u542F\u52A8\u5373\u53EF\u4ECE\u5934\u5F00\u59CB\u3002\u5DE5\u4F5C\u4F1A\u8BDD / \u5F52\u6863\u5217\u8868\u3001\u9762\u677F\u5C3A\u5BF8\u3001\u4E3B\u9898\u3001\u6A21\u578B\u9009\u62E9\u90FD\u4F1A\u91CD\u7F6E\u3002\u78C1\u76D8\u4E0A\u7684 worktree \u548C Claude Code \u4F1A\u8BDD\u5386\u53F2\u4E0D\u53D7\u5F71\u54CD\u3002",resetButton:"[enter] \u91CD\u7F6E",restart:"\u91CD\u542F\u540E\u7AEF",restartHint:"\u505C\u6B62 kobe daemon \u5E76\u9000\u51FA\u5F53\u524D kobe \u7A97\u53E3\uFF0C\u4E0B\u6B21\u542F\u52A8\u4F1A\u62C9\u8D77\u4E00\u4E2A\u5168\u65B0\u7684 daemon\u2014\u2014\u65E0\u9700\u6740\u8FDB\u7A0B\u5373\u53EF\u5E94\u7528 daemon / orchestrator / engine \u7684\u6539\u52A8\u3002\u5176\u4ED6\u5DF2\u8FDE\u63A5\u7684 kobe \u7A97\u53E3\u4E5F\u4F1A\u65AD\u5F00\u8FDE\u63A5\u3002",restartButton:"[enter] \u91CD\u542F",doctorHint:"daemon \u5361\u4F4F\u6216\u65E0\u54CD\u5E94\uFF1F\u5728 shell \u91CC\u8FD0\u884C `kobe doctor` \u8BCA\u65AD\uFF0C\u6216 `kobe reset` \u505C\u6B62 daemon + \u6740\u6389\u4F1A\u8BDD\uFF08\u4FDD\u7559\u4F60\u7684\u4EFB\u52A1\uFF09\u3002\u53EA\u6709\u8981\u540C\u65F6\u6E05\u7A7A\u4EFB\u52A1\u7D22\u5F15 + UI \u72B6\u6001\u65F6\u624D\u7528 `kobe reset --hard`\u3002",experimental:"\u5B9E\u9A8C\u6027",remoteHint:"\u8FDC\u7A0B\u9879\u76EE\uFF08SSH\uFF09\uFF1A\u6CE8\u518C\u4E00\u4E2A git worktree + \u5F15\u64CE\u90FD\u901A\u8FC7 SSH \u8DD1\u5728\u53E6\u4E00\u53F0\u4E3B\u673A\u4E0A\u3001\u7531\u672C\u5730 kobe \u9A71\u52A8\u7684\u9879\u76EE\u3002\u5C1A\u672A\u5B8C\u6210\u2014\u2014\u6587\u4EF6/diff \u9762\u677F\u5BF9\u8FDC\u7A0B\u4ECD\u4F1A\u964D\u7EA7\u3002\u542F\u7528 `kobe add --remote`\u3002",remoteOn:"[x] \u8FDC\u7A0B\u9879\u76EE (\u5F00)",remoteOff:"[ ] \u8FDC\u7A0B\u9879\u76EE (\u5173)",autoStatusHint:"\u81EA\u52A8\u72B6\u6001\u6D41\u8F6C\uFF1Abacklog \u4EFB\u52A1\u5728\u5176\u5F15\u64CE\u5F00\u59CB\u4E00\u8F6E\u65F6\u79FB\u5230 in_progress\uFF0C\u65B0\u7684 claude \u4F1A\u8BDD\u4F1A\u62FF\u5230\u4E00\u6761\u7CFB\u7EDF\u63D0\u793A\uFF0C\u544A\u8BC9 agent \u5B8C\u6210\u540E\u81EA\u884C\u8BBE\u4E3A in_review\u3002\u7EDD\u4E0D\u89E6\u78B0 done/canceled\u3002",autoStatusOn:"[x] \u81EA\u52A8\u72B6\u6001\u6D41\u8F6C (\u5F00)",autoStatusOff:"[ ] \u81EA\u52A8\u72B6\u6001\u6D41\u8F6C (\u5173)",dispatcherHint:"\u73B0\u573A\u7B14\u8BB0\u8C03\u5EA6\u5668\uFF1A\u4EFB\u52A1\u4F1A\u8BDD\u63D0\u4EA4\u4E00\u884C\u7ECF\u9A8C\uFF08`kobe api note`\uFF09\uFF0Cdaemon \u5C06\u6BCF\u6761\u8F6C\u53D1\u7ED9\u4ED3\u5E93\u7684\u4E3B\u4F1A\u8BDD\uFF0C\u4E3B\u4F1A\u8BDD\u518D\u628A\u5B83\u4EEC\u8F6C\u8FBE\u7ED9\u80FD\u53D7\u76CA\u7684\u8FDB\u884C\u4E2D\u4EFB\u52A1\uFF08`kobe api dispatch`\uFF09\u3002\u76EE\u524D\u7531 Web \u6258\u7BA1\u7684\u4F1A\u8BDD\u4F1A\u6536\u5230\u8F6C\u8FBE\u3002",dispatcherOn:"[x] \u73B0\u573A\u7B14\u8BB0\u8C03\u5EA6\u5668 (\u5F00)",dispatcherOff:"[ ] \u73B0\u573A\u7B14\u8BB0\u8C03\u5EA6\u5668 (\u5173)"}}});var wL,PL;var hL=b(()=>{wL={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}"}},PL={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 vL,mL;var cL=b(()=>{vL={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`"}},mL={pageTitle:"KOBE \u66F4\u65B0",current:"\u5F53\u524D",latest:"\u6700\u65B0",releaseUrlUnavailable:"\u53D1\u5E03\u94FE\u63A5\u4E0D\u53EF\u7528",statusReleaseOpened:"\u5DF2\u5728\u6D4F\u89C8\u5668\u4E2D\u6253\u5F00\u53D1\u5E03\u8BF4\u660E\u9875\u9762\u3002",statusReleaseError:"\u65E0\u6CD5\u6253\u5F00\u53D1\u5E03\u94FE\u63A5\u3002",statusRunningUpdater:"\u6B63\u5728\u79BB\u5F00 TUI \u9875\u9762\uFF0C\u5E76\u5728\u6B64 tmux \u7A97\u53E3\u4E2D\u8FD0\u884C\u66F4\u65B0\u7A0B\u5E8F\u2026\u2026",loadingNotes:"\u6B63\u5728\u52A0\u8F7D\u53D1\u5E03\u8BF4\u660E\u2026\u2026",notesUnavailable:"\u53D1\u5E03\u8BF4\u660E\u4E0D\u53EF\u7528\u3002\u8BF7\u4F7F\u7528\u300C\u6253\u5F00\u53D1\u5E03\u9875\u300D\u67E5\u770B GitHub \u53D1\u5E03\u9875\u9762\u3002",changesSectionHeader:"\u2500\u2500 v{from} \u81F3 v{to} \u7684\u53D8\u66F4 \u2500\u2500",updateComplete:"kobe \u66F4\u65B0\u5B8C\u6210\u3002\u8BF7\u91CD\u65B0\u542F\u52A8 kobe \u4EE5\u4F7F\u7528\u65B0\u7248\u672C\u3002",updateFailed:"kobe \u66F4\u65B0\u5931\u8D25\uFF0C\u9000\u51FA\u7801\u4E3A {code}\u3002",pressAnyKey:"\u6309\u4EFB\u610F\u952E\u5173\u95ED\u6B64\u66F4\u65B0\u7A97\u53E3\u3002",actions:{updateNow:"\u7ACB\u5373\u66F4\u65B0",openRelease:"\u6253\u5F00\u53D1\u5E03\u9875",close:"\u5173\u95ED",closeDetail:"\u8FD4\u56DE\u4E0A\u4E00\u4E2A tmux \u7A97\u53E3"},skew:{title:"\u26A0 DAEMON \u7248\u672C\u4E0D\u4E00\u81F4",olderBuild:"\u65E7\u7248\u672C\u6784\u5EFA",hint:"daemon \u8FD0\u884C\u7684\u662F {daemon}\uFF0C\u800C\u4F60\u542F\u52A8\u7684\u662F v{clientVersion}\u3002\u8BF7\u8FD0\u884C `kobe daemon restart` \u518D\u8FD0\u884C `kobe reload`"}}});function DQ(J){return typeof J==="string"&&wZ.some((z)=>z.id===J)}var fy,Hy,wZ,lX,$X="en";var aX=b(()=>{VL();DL();FL();RL();NL();SL();yL();EL();hL();cL();fy={settings:xL,tasks:wL,files:KL,newTask:gL,ops:bL,update:vL,quickTask:IL,help:LL,common:jL,keys:OL},Hy={settings:uL,tasks:PL,files:UL,newTask:CL,ops:kL,update:mL,quickTask:TL,help:ML,common:WL,keys:AL},wZ=[{id:"en",label:"English"},{id:"zh",label:"\u4E2D\u6587"}],lX={en:fy,zh:Hy}});function LQ(J){if(lX[J])By("lang",J)}function F9(){return M9.lang}function dL(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 jy(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=M9.lang,Z=dL(lX[Y],J)??dL(lX.en,J)??J;return jy(Z,z)}function O9(J,z){let Y=M9.lang,Z=(X)=>{return X.keys[J]?.[z]};return Z(lX[Y])??Z(lX.en)??z}var M9,By;var GJ=b(()=>{iX();aX();aX();[M9,By]=iz({lang:$X})});function Wy(J){let z=[],Y=J.name;if(Y)z.push(Y);if(Y==="return")z.push("enter");if(Y==="enter")z.push("return");let Z=[];if(J.ctrl)Z.push("ctrl");if(J.meta)Z.push("cmd");if(J.option)Z.push("alt");if(J.shift&&Y&&Y.length>1)Z.push("shift");if(Z.length===0)return z;let X=`${Z.join("+")}+`;return z.map((G)=>X+G)}function R9(J,z){if(z.defaultPrevented)return!1;if(A9)return!1;let Y=J.slice(),Z=Wy(z);A9=!0;try{for(let X=Y.length-1;X>=0;X--){let G=Y[X];if(!G)continue;let Q=G.config();if(Q.enabled===!1)continue;let f=Q.bindings.find((H)=>Z.includes(H.key));if(f)return f.cmd(z,f.slot),z.preventDefault(),!0}return!1}finally{A9=!1}}var A9=!1;function Ky(){if(g9)return;let J=HJ();if(!J)throw Error("useBindings: no renderer in scope; call inside a component rendered by @opentui/solid.");g9=J.keyInput,nL=(z)=>{R9(BH,z)},g9.on("keypress",nL)}function D1(J){Ky();let z=Vy++,Y={config:J,id:z};r0(()=>{J()}),BH.push(Y),S1(()=>{let Z=BH.findIndex((X)=>X.id===z);if(Z>=0)BH.splice(Z,1)})}var Vy=1,BH,g9=null,nL=null;var yJ=b(()=>{w();W1();BH=[]});function jH(){let J=new Set;function z(Z,X){let G=setTimeout(()=>{J.delete(G),Z()},X);return J.add(G),G}function Y(Z){if(J.delete(Z))clearTimeout(Z)}return S1(()=>{for(let Z of J)clearTimeout(Z);J.clear()}),{set:z,clear:Y}}var C9=b(()=>{W1()});import{RGBA as iL}from"@opentui/core";function Ly(J){let z=dz(),Y=i0(),{theme:Z}=Y,X=HJ(),G=!1,Q=()=>{if(J.size==="xlarge")return 140;if(J.size==="large")return 110;if(J.size==="small")return 50;return 80},f=2,H=()=>Math.max(8,z().height-f*2);return(()=>{var B=W("box"),V=W("box");return D(B,V),q(B,"onMouseDown",()=>{G=!!X?.getSelection()}),q(B,"onMouseUp",()=>{if(G){G=!1;return}J.onClose?.()}),q(B,"alignItems","center"),q(B,"justifyContent","center"),q(B,"position","absolute"),q(B,"zIndex",3000),q(B,"left",0),q(B,"top",0),q(V,"onMouseUp",(j)=>{G=!1,j.stopPropagation()}),q(V,"flexShrink",1),q(V,"flexGrow",0),q(V,"paddingTop",1),U(V,()=>J.children),y((j)=>{var K=z().width,L=z().height,A=Y.transparentBackground?Dy:Uy,O=Q(),R=z().width-2,x=H(),a=Z.backgroundDialog;return K!==j.e&&(j.e=q(B,"width",K,j.e)),L!==j.t&&(j.t=q(B,"height",L,j.t)),A!==j.a&&(j.a=q(B,"backgroundColor",A,j.a)),O!==j.o&&(j.o=q(V,"width",O,j.o)),R!==j.i&&(j.i=q(V,"maxWidth",R,j.i)),x!==j.n&&(j.n=q(V,"maxHeight",x,j.n)),a!==j.s&&(j.s=q(V,"backgroundColor",a,j.s)),j},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),B})()}function My(){let[J,z]=iz({stack:[],size:"medium"}),Y=HJ(),Z=null,X=jH();function G(){X.set(()=>{if(!Z)return;if(Z.isDestroyed)return;function Q(H){for(let B of H.getChildren()){if(B===Z)return!0;if(Q(B))return!0}return!1}let f=Y?.root;if(!f)return;if(!Q(f))return;Z.focus()},1)}return D1(()=>({enabled:J.stack.length>0&&!Y?.getSelection()?.getSelectedText(),bindings:[{key:"escape",cmd:()=>{if(Y?.getSelection())Y.clearSelection();J.stack.at(-1)?.onClose?.(),z("stack",J.stack.slice(0,-1)),G()}},{key:"ctrl+c",cmd:()=>{if(Y?.getSelection())Y.clearSelection();J.stack.at(-1)?.onClose?.(),z("stack",J.stack.slice(0,-1)),G()}}]})),{clear(){for(let Q of J.stack)Q.onClose?.();Iq(()=>{z("size","medium"),z("stack",[])}),G()},replace(Q,f){if(J.stack.length===0)Z=Y?.currentFocusedRenderable??null,Z?.blur();for(let H of J.stack)H.onClose?.();z("size","medium"),z("stack",[{element:Q,onClose:f}])},push(Q,f){if(J.stack.length===0)Z=Y?.currentFocusedRenderable??null,Z?.blur();z("stack",[...J.stack,{element:Q,onClose:f}])},pop(){if(J.stack.at(-1)?.onClose?.(),z("stack",J.stack.slice(0,-1)),J.stack.length===0)G()},get stack(){return J.stack},get size(){return J.size},setSize(Q){z("size",Q)}}}function $L(J){let z=My();return k(lL.Provider,{value:z,get children(){return[u0(()=>J.children),(()=>{var Y=W("box");return q(Y,"position","absolute"),q(Y,"zIndex",3000),U(Y,k(G0,{get when(){return z.stack.length},get children(){return k(Ly,{onClose:()=>z.clear(),get size(){return z.size},get children(){return z.stack.at(-1).element()}})}})),Y})()]}})}function d1(){let J=wJ(lL);if(!J)throw Error("useDialog must be used within a DialogProvider");return J}var Uy,Dy,lL;var nJ=b(()=>{w();w();w();w();w();w();w();w();W1();iX();m1();yJ();C9();Uy=iL.fromInts(0,0,0,128),Dy=iL.fromInts(0,0,0,64);lL=yz()});import{spawnSync as N9}from"child_process";import*as _L from"fs";function aL(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 pL(J){let z=J.trim();if(!z)return"repo path is required";let Y;try{Y=_L.statSync(z)}catch{return`path does not exist: ${z}`}if(!Y.isDirectory())return`not a directory: ${z}`;try{if(N9("git",["rev-parse","--git-dir"],{cwd:z,encoding:"utf-8",timeout:2000,stdio:["ignore","pipe","ignore"]}).status!==0)return aL(z)}catch{return aL(z)}return null}function MQ(J){if(!J)return null;try{let z=N9("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 rL(J){if(!J)return[];try{let z=N9("git",["for-each-ref","--format=%(refname:short)","refs/heads/"],{cwd:J,encoding:"utf-8",timeout:2000});if(z.status!==0)return[];return z.stdout.split(`
262
- `).map((Y)=>Y.trim()).filter(Boolean).sort((Y,Z)=>{let X=(f)=>f==="main"?0:f==="master"?1:f==="develop"?2:3,G=X(Y),Q=X(Z);if(G!==Q)return G-Q;return Y.localeCompare(Z)})}catch{return[]}}var bz="main";var WH=()=>{};import*as oL from"fs";import*as VH from"os";function UJ(J){if(J==="~")return VH.homedir();if(J.startsWith("~/"))return VH.homedir()+J.slice(1);return J}function b9(J){if(!J)return{base:"",filter:""};let Y=UJ(J==="~"?"~/":J);if(Y.endsWith("/"))return{base:Y,filter:""};let Z=Y.lastIndexOf("/");if(Z===-1)return{base:"",filter:Y};return{base:Y.slice(0,Z+1),filter:Y.slice(Z+1)}}function k9(J){if(!J)return[];try{let z=oL.readdirSync(J,{withFileTypes:!0}),Y=[];for(let Z of z)if(Z.isDirectory())Y.push(Z.name);return Y.sort((Z,X)=>Z.localeCompare(X))}catch{return[]}}function S9(J,z){let Y=z.toLowerCase(),X=Y.startsWith(".")?J:J.filter((G)=>!G.startsWith("."));if(!Y)return X;return X.filter((G)=>G.toLowerCase().startsWith(Y))}function FQ(J,z,Y){let Z=z+Y;if(J.startsWith("~")){let X=VH.homedir();if(Z===X)return"~";if(Z.startsWith(`${X}/`))return`~${Z.slice(X.length)}`}return Z}var KH=()=>{};import{spawn as Fy}from"child_process";import*as PZ from"fs";import*as OQ from"path";function sL(J){let z=J.trim().replace(/\/+$/,"");if(!z)return"";let Y=z.lastIndexOf("/"),Z=z.lastIndexOf(":"),X=Math.max(Y,Z);return(X>=0?z.slice(X+1):z).replace(/\.git$/i,"")}function tL(J){let z=J.trim();if(!z)return F("newTask.error.gitUrlRequired");let Y=z.includes("://"),Z=z.includes("@")&&z.includes(":"),X=z.includes("/");if(!Y&&!Z&&!X)return F("newTask.error.gitUrlInvalid",{url:z});return null}function eL(J,z){let Y=z.trim();if(!Y)return F("newTask.error.folderRequired");if(Y.includes("/")||Y.includes("\\"))return F("newTask.error.folderHasSeparator");let Z=J.trim();if(!Z)return F("newTask.error.parentRequired");let X=UJ(Z),G;try{G=PZ.statSync(X)}catch{return F("newTask.error.parentNotFound",{path:X})}if(!G.isDirectory())return F("newTask.error.parentNotDir",{path:X});let Q=OQ.join(X,Y);if(PZ.existsSync(Q))return F("newTask.error.targetExists",{path:Q});return null}function J3(J,z){return OQ.join(UJ(J.trim()),z.trim())}function z3(J,z){let Y=z.trim();if(!Y)return z;let Z=UJ(J.trim());if(!Z)return z;try{if(!PZ.statSync(Z).isDirectory())return z}catch{return z}if(!PZ.existsSync(OQ.join(Z,Y)))return Y;for(let X=2;X<1000;X++){let G=`${Y}-${X}`;if(!PZ.existsSync(OQ.join(Z,G)))return G}return Y}function Y3(J,z,Y){return new Promise((Z)=>{let X="";try{let G=Fy("git",["clone","--progress",J,z],{stdio:["ignore","ignore","pipe"]});G.stderr?.setEncoding("utf-8"),G.stderr?.on("data",(Q)=>{if(X+=Q,Y){let f=Q.split(/[\r\n]+/).filter((B)=>B.trim().length>0),H=f[f.length-1];if(H)Y(H)}}),G.on("error",(Q)=>{Z({ok:!1,error:Q.message})}),G.on("close",(Q)=>{if(Q===0){Z({ok:!0,path:z});return}let f=X.split(/[\r\n]+/).filter((H)=>H.trim().length>0).pop()??`git clone exited with ${Q}`;Z({ok:!1,error:f})})}catch(G){Z({ok:!1,error:G instanceof Error?G.message:String(G)})}})}var Z3=b(()=>{GJ();KH()});function I9(J){if(J==="existing")return"clone";if(J==="clone")return"adopt";return"existing"}function T9(J){if(J==="existing")return"adopt";if(J==="clone")return"existing";return"clone"}function X3(J,z){let Y=J.trim();if(z.includes(Y))return"saved";if(Y.startsWith("~"))return"browse";if(Y.includes("/"))return"browse";return"saved"}function DJ(J){return J.replace(/[\r\n]+/g,"")}function AQ(J){return!/\S/u.test(J)}function y9(J,z="existing"){if(J==="confirm")return"tabs";if(J==="tabs")return"engine";if(J==="engine")return x9(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 x9(J){if(J==="clone")return"cloneUrl";if(J==="adopt")return"adoptFilter";return"repo"}function G3(J,z){let Y=z.trim();if(!Y)return J;return J.filter((Z)=>EQ(Y,Z.path))}function Q3(J,z){let Y=new Set,Z=[];for(let X of[J,...z]){let G=X.trim();if(!G||Y.has(G))continue;Y.add(G),Z.push(G)}return Z}function q3(J,z){let Y=z.trim().toLowerCase();if(!Y)return J;return J.filter((Z)=>Z.toLowerCase().includes(Y))}function f3(J,z){let Y=z.trim().toLowerCase();if(!Y)return J;return J.filter((Z)=>Z.toLowerCase().includes(Y))}function RQ(J,z,Y=Oy){let Z=J.length;if(Z<=Y)return{items:J,start:0,total:Z};let X=Math.floor(Y/2),G=Math.max(0,z-X);if(G+Y>Z)G=Z-Y;return{items:J.slice(G,G+Y),start:G,total:Z}}function lz(J,z){if(z<=0)return 0;return Math.max(0,Math.min(z-1,J))}function H3(J,z,Y){let Z=z[Y];if(Z)return Z;return J.trim()||bz}var Oy=8;var u9=b(()=>{vH();WH()});import{TextAttributes as Yz}from"@opentui/core";function B3(J){let z=d1(),{theme:Y}=i0(),[Z,X]=r("existing"),G=()=>{let m=J.availableVendors;return m&&m.length>0?m:l1},Q=(()=>{let m=G(),y0=J.defaultVendor??"claude";return m.includes(y0)?y0:m[0]??"claude"})(),[f,H]=r(Q),[B,V]=r("tabs"),[j,K]=r(J.defaultRepo),[L,A]=r(MQ(UJ(J.defaultRepo.trim()))??bz),[O,R]=r(!1),[x,a]=r(""),[S,C]=r(J.defaultCloneParent?.trim()?J.defaultCloneParent:"~/"),[M,I]=r(""),[$,i]=r(!1),[e,J0]=r(bz),[T,f0]=r(!1),[_,W0]=r(""),R0=U0(()=>Q3(J.defaultRepo,J.savedRepos)),V0=U0(()=>X3(j(),R0())),t=U0(()=>b9(j())),P=U0(()=>k9(t().base)),N=U0(()=>S9(P(),t().filter)),p=U0(()=>q3(R0(),j())),u=U0(()=>V0()==="browse"?N():p()),[d,o]=r(0),Q0=U0(()=>RQ(u(),d())),[g0,P0]=r(!1),N0=U0(()=>rL(UJ(j().trim()))),k0=U0(()=>f3(N0(),L())),[x0,v]=r(0),b0=U0(()=>RQ(k0(),x0())),X0=U0(()=>b9(S())),L0=U0(()=>k9(X0().base)),a0=U0(()=>S9(L0(),X0().filter)),[e0,v0]=r(0),_0=U0(()=>RQ(a0(),e0())),[R1,s]=r(!1),[K0,I0]=r(""),[m0,Q1]=r(0),[w0,q1]=r(new Set),[g1]=Sq(()=>Z()==="adopt"?UJ(j().trim()):null,async(m)=>J.discoverAdoptable?await J.discoverAdoptable(m):[]),z1=U0(()=>G3(g1()??[],K0())),z0=U0(()=>RQ(z1().map((m)=>m.path),m0())),Z0=U0(()=>{let m=z0();return z1().slice(m.start,m.start+m.items.length)});r0(()=>{z1(),Q1((m)=>lz(m,z1().length))});function j0(m){q1((y0)=>{let Y0=new Set(y0);if(Y0.has(m))Y0.delete(m);else Y0.add(m);return Y0})}function g(){let m=z1()[m0()];if(m)j0(m.path)}r0(()=>{k0(),v(0)}),r0(()=>{let m=UJ(j().trim());if(!m)return;if(O())return;let y0=MQ(m);if(y0)A(y0)}),r0(()=>{u(),o(0)}),r0(()=>{a0(),v0(0)}),r0(()=>{let m=x(),y0=S();if($())return;let Y0=sL(m);I(z3(y0,Y0))});let[q0,T0]=r(null);r0(()=>{j(),x(),S(),M(),K0(),T0(null)});function M0(){let m=UJ(j().trim());if(!m)return;let y0=pL(m);if(y0){T0(y0),V("repo");return}let Y0=L().trim()||bz;J.onSubmit({repo:m,baseRef:Y0,vendor:f()}),z.clear()}async function O0(){if(T())return;let m=tL(x());if(m){T0(m),V("cloneUrl");return}let y0=eL(S(),M());if(y0){T0(y0),V(M().trim()?"cloneParent":"cloneFolder");return}let Y0=J3(S(),M());f0(!0),W0(F("newTask.clone.progressInto",{target:Y0}));let F0=await Y3(x().trim(),Y0,(QJ)=>{W0(QJ)});if(f0(!1),!F0.ok){T0(F("newTask.error.cloneFailed",{error:F0.error})),V("cloneUrl");return}let c1=e().trim()||bz,LJ=UJ(S().trim());J.onSubmit({repo:F0.path,baseRef:c1,vendor:f(),cloned:{parentDir:LJ}}),z.clear()}function D0(){let m=z1();if(m.length===0){T0(F("newTask.error.noAdoptable"));return}let y0=w0(),Y0=y0.size>0?m.filter((F0)=>y0.has(F0.path)):m.slice(m0(),m0()+1);if(Y0.length===0)return;J.onSubmit({mode:"adopt",repo:UJ(j().trim()),vendor:f(),adopt:Y0.map((F0)=>({worktreePath:F0.path,branch:F0.branch}))}),z.clear()}function B0(){if(Z()==="clone"){O0();return}if(Z()==="adopt"){D0();return}M0()}function t0(m){if(T())return;if(m===Z())return;X(m),V(x9(m)),T0(null)}function Y1(m){if(T())return;let y0=m===1?I9(Z()):T9(Z());if(y0===Z())return;X(y0),T0(null),V("tabs")}function o0(m){H((y0)=>m===1?MY(G(),y0):mH(G(),y0))}function H1(){if(!j().trim()&&V0()==="saved"){let y0=u()[0];if(y0){K(y0),V("baseRef");return}}if(V0()==="browse"){let Y0=N()[d()],F0=t();if(Y0){K(FQ(j(),F0.base,Y0)),o(0),P0(!0),V("baseRef");return}V("baseRef");return}let m=u()[d()];if(m){K(m),V("baseRef");return}V("baseRef")}function u1(m){let Y0=u()[m];if(!Y0)return;if(V0()==="browse"){let F0=t();K(FQ(j(),F0.base,Y0)),o(m),P0(!0),V("baseRef");return}K(Y0),o(m),V("baseRef")}function S0(){let y0=a0()[e0()],Y0=X0();if(y0){C(FQ(S(),Y0.base,y0)),v0(0),s(!0),V("cloneFolder");return}V("cloneFolder")}function h(m){let Y0=a0()[m];if(!Y0)return;let F0=X0();C(FQ(S(),F0.base,Y0)),v0(m),s(!0),V("cloneFolder")}let A0=()=>{let m=z1();if(m.length===0)return;let y0=m.every((Y0)=>w0().has(Y0.path));q1(y0?new Set:new Set(m.map((Y0)=>Y0.path)))};D1(()=>({bindings:[{key:"tab",cmd:()=>V((m)=>y9(m,Z()))},{key:"ctrl+]",cmd:()=>t0(I9(Z()))},{key:"ctrl+[",cmd:()=>t0(T9(Z()))},{key:"ctrl+e",cmd:()=>H((m)=>MY(G(),m))},{key:"up",cmd:()=>{if(T())return;if(Z()==="existing"&&B()==="repo"){let m=u();if(m.length===0)return;o(lz(d()-1,m.length));return}if(Z()==="existing"&&B()==="baseRef"){let m=k0();if(m.length===0)return;v(lz(x0()-1,m.length));return}if(Z()==="clone"&&B()==="cloneParent"){let m=a0();if(m.length===0)return;v0(lz(e0()-1,m.length));return}if(Z()==="adopt"){let m=z1();if(m.length===0)return;Q1(lz(m0()-1,m.length))}}},{key:"down",cmd:()=>{if(T())return;if(Z()==="existing"&&B()==="repo"){let m=u();if(m.length===0)return;o(lz(d()+1,m.length));return}if(Z()==="existing"&&B()==="baseRef"){let m=k0();if(m.length===0)return;v(lz(x0()+1,m.length));return}if(Z()==="clone"&&B()==="cloneParent"){let m=a0();if(m.length===0)return;v0(lz(e0()+1,m.length));return}if(Z()==="adopt"){let m=z1();if(m.length===0)return;Q1(lz(m0()+1,m.length))}}},...B()==="tabs"||B()==="engine"?[{key:"left",cmd:()=>B()==="tabs"?Y1(-1):o0(-1)},{key:"right",cmd:()=>B()==="tabs"?Y1(1):o0(1)},{key:"return",cmd:()=>V((m)=>y9(m,Z()))}]:[],...Z()==="adopt"?[{key:"ctrl+a",cmd:A0}]:[]]})),D1(()=>({enabled:B()==="confirm"&&!T(),bindings:[{key:"return",cmd:()=>B0()}]}));let j1=(m)=>B()===m?Y.primary:Y.textMuted,O1=(m)=>B()===m?Yz.BOLD|Yz.UNDERLINE:void 0,b1=(m,y0)=>m?y0?Yz.BOLD|Yz.UNDERLINE:Yz.BOLD:void 0;return(()=>{var m=W("box"),y0=W("box"),Y0=W("text"),F0=W("box"),c1=W("box"),LJ=W("text"),QJ=W("box"),iJ=W("box"),$z=W("text"),AJ=W("box"),az=W("text"),Gz=W("text");return D(m,y0),D(m,F0),D(m,AJ),q(m,"paddingLeft",2),q(m,"paddingRight",2),q(m,"gap",0),D(y0,Y0),q(y0,"flexDirection","row"),U(Y0,()=>F("newTask.title")),D(F0,c1),q(F0,"gap",1),q(F0,"paddingTop",1),q(F0,"paddingBottom",1),U(F0,()=>{let c=()=>B()==="tabs",n=(l)=>l?Y.primary:Y.textMuted;return(()=>{var l=W("box"),E=W("text"),d0=W("text"),h0=W("text");return D(l,E),D(l,d0),D(l,h0),q(l,"flexDirection","row"),q(l,"gap",2),q(E,"onMouseUp",()=>t0("existing")),U(E,(()=>{var C0=u0(()=>Z()==="existing");return()=>C0()?`\u25B8 ${F("newTask.tabs.existing")}`:` ${F("newTask.tabs.existing")}`})()),q(d0,"onMouseUp",()=>t0("clone")),U(d0,(()=>{var C0=u0(()=>Z()==="clone");return()=>C0()?`\u25B8 ${F("newTask.tabs.clone")}`:` ${F("newTask.tabs.clone")}`})()),q(h0,"onMouseUp",()=>t0("adopt")),U(h0,(()=>{var C0=u0(()=>Z()==="adopt");return()=>C0()?`\u25B8 ${F("newTask.tabs.adopt")}`:` ${F("newTask.tabs.adopt")}`})()),y((C0)=>{var n0=n(Z()==="existing"),B1=b1(Z()==="existing",c()),L1=n(Z()==="clone"),jJ=b1(Z()==="clone",c()),Qz=n(Z()==="adopt"),LY=b1(Z()==="adopt",c());return n0!==C0.e&&(C0.e=q(E,"fg",n0,C0.e)),B1!==C0.t&&(C0.t=q(E,"attributes",B1,C0.t)),L1!==C0.a&&(C0.a=q(d0,"fg",L1,C0.a)),jJ!==C0.o&&(C0.o=q(d0,"attributes",jJ,C0.o)),Qz!==C0.i&&(C0.i=q(h0,"fg",Qz,C0.i)),LY!==C0.n&&(C0.n=q(h0,"attributes",LY,C0.n)),C0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),l})()},c1),D(c1,LJ),D(c1,QJ),q(c1,"gap",0),U(LJ,()=>F("newTask.field.engine")),D(QJ,iJ),D(QJ,$z),q(QJ,"flexDirection","row"),q(QJ,"gap",2),U(QJ,k(X1,{get each(){return G()},children:(c)=>{let n=()=>f()===c;return(()=>{var l=W("text");return q(l,"onMouseUp",()=>H(c)),U(l,()=>n()?"\u25B8 ":" ",null),U(l,c,null),y((E)=>{var d0=n()?Y.primary:Y.textMuted,h0=n()?Yz.BOLD:void 0;return d0!==E.e&&(E.e=q(l,"fg",d0,E.e)),h0!==E.t&&(E.t=q(l,"attributes",h0,E.t)),E},{e:void 0,t:void 0}),l})()}}),iJ),q(iJ,"flexGrow",1),U($z,()=>F("newTask.hint.engineCycle")),U(F0,k(G0,{get when(){return Z()==="existing"},get children(){return[(()=>{var c=W("box"),n=W("text"),l=W("input");return D(c,n),D(c,l),q(c,"gap",0),U(n,()=>F("newTask.field.repo")),q(l,"onInput",(E)=>{P0(!1),K(DJ(E))}),q(l,"onSubmit",()=>{if(!j().trim())return;H1()}),y((E)=>{var d0=j1("repo"),h0=O1("repo"),C0=j(),n0=J.defaultRepo,B1=B()==="repo";return d0!==E.e&&(E.e=q(n,"fg",d0,E.e)),h0!==E.t&&(E.t=q(n,"attributes",h0,E.t)),C0!==E.a&&(E.a=q(l,"value",C0,E.a)),n0!==E.o&&(E.o=q(l,"placeholder",n0,E.o)),B1!==E.i&&(E.i=q(l,"focused",B1,E.i)),E},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),c})(),k(G0,{get when(){return u0(()=>B()==="repo"&&u().length>0)()&&!g0()},get children(){var c=W("box");return q(c,"gap",0),q(c,"paddingLeft",2),U(c,k(G0,{get when(){return Q0().start>0},get children(){var n=W("text");return q(n,"wrapMode","none"),U(n,()=>F("newTask.picker.moreAbove",{count:Q0().start})),y((l)=>q(n,"fg",Y.textMuted,l)),n}}),null),U(c,k(X1,{get each(){return Q0().items},children:(n,l)=>{let E=()=>Q0().start+l(),d0=()=>E()===d(),h0=()=>V0()==="saved"&&n===J.defaultRepo,C0=()=>V0()==="saved"&&j().trim()===n,n0=()=>V0()==="browse"?"/":"",B1=()=>h0()?` ${F("newTask.hint.currentDir")}`:"";return(()=>{var L1=W("text");return q(L1,"wrapMode","none"),q(L1,"onMouseUp",()=>u1(E())),U(L1,()=>d0()?"\u25B8 ":" ",null),U(L1,n,null),U(L1,n0,null),U(L1,B1,null),y((jJ)=>{var Qz=d0()?Y.primary:C0()?Y.accent:Y.textMuted,LY=d0()?Yz.BOLD:void 0;return Qz!==jJ.e&&(jJ.e=q(L1,"fg",Qz,jJ.e)),LY!==jJ.t&&(jJ.t=q(L1,"attributes",LY,jJ.t)),jJ},{e:void 0,t:void 0}),L1})()}}),null),U(c,k(G0,{get when(){return Q0().start+Q0().items.length<Q0().total},get children(){var n=W("text");return q(n,"wrapMode","none"),U(n,()=>F("newTask.picker.moreBelow",{count:Q0().total-Q0().start-Q0().items.length})),y((l)=>q(n,"fg",Y.textMuted,l)),n}}),null),c}}),(()=>{var c=W("box"),n=W("text"),l=W("input");return D(c,n),D(c,l),q(c,"gap",0),U(n,()=>F("newTask.field.fromBranch")),q(l,"placeholder",bz),q(l,"onInput",(E)=>{R(!0),A(DJ(E))}),q(l,"onSubmit",()=>{A(H3(L(),k0(),x0())),R(!0),M0()}),y((E)=>{var d0=j1("baseRef"),h0=O1("baseRef"),C0=L(),n0=B()==="baseRef";return d0!==E.e&&(E.e=q(n,"fg",d0,E.e)),h0!==E.t&&(E.t=q(n,"attributes",h0,E.t)),C0!==E.a&&(E.a=q(l,"value",C0,E.a)),n0!==E.o&&(E.o=q(l,"focused",n0,E.o)),E},{e:void 0,t:void 0,a:void 0,o:void 0}),c})(),k(G0,{get when(){return u0(()=>B()==="baseRef"&&k0().length===0)()&&q0()==null},get children(){var c=W("box"),n=W("text");return D(c,n),q(c,"gap",0),q(c,"paddingLeft",2),q(c,"paddingBottom",1),q(n,"wrapMode","none"),U(n,(()=>{var l=u0(()=>N0().length===0);return()=>l()?F("newTask.hint.noBranchesFound"):F("newTask.hint.noMatchBranch")})()),y((l)=>q(n,"fg",Y.textMuted,l)),c}}),k(G0,{get when(){return u0(()=>B()==="baseRef")()&&k0().length>0},get children(){var c=W("box");return q(c,"gap",0),q(c,"paddingLeft",2),q(c,"paddingBottom",1),U(c,k(G0,{get when(){return b0().start>0},get children(){var n=W("text");return q(n,"wrapMode","none"),U(n,()=>F("newTask.picker.moreAbove",{count:b0().start})),y((l)=>q(n,"fg",Y.textMuted,l)),n}}),null),U(c,k(X1,{get each(){return b0().items},children:(n,l)=>{let E=()=>b0().start+l(),d0=()=>E()===x0(),h0=()=>L().trim()===n;return(()=>{var C0=W("text");return q(C0,"wrapMode","none"),q(C0,"onMouseUp",()=>{A(n),R(!0),v(E()),V("confirm")}),U(C0,()=>d0()?"\u25B8 ":" ",null),U(C0,n,null),y((n0)=>{var B1=d0()?Y.primary:h0()?Y.accent:Y.textMuted,L1=d0()?Yz.BOLD:void 0;return B1!==n0.e&&(n0.e=q(C0,"fg",B1,n0.e)),L1!==n0.t&&(n0.t=q(C0,"attributes",L1,n0.t)),n0},{e:void 0,t:void 0}),C0})()}}),null),U(c,k(G0,{get when(){return b0().start+b0().items.length<b0().total},get children(){var n=W("text");return q(n,"wrapMode","none"),U(n,()=>F("newTask.picker.moreBelow",{count:b0().total-b0().start-b0().items.length})),y((l)=>q(n,"fg",Y.textMuted,l)),n}}),null),c}})]}}),null),U(F0,k(G0,{get when(){return Z()==="clone"},get children(){return[(()=>{var c=W("box"),n=W("text"),l=W("input");return D(c,n),D(c,l),q(c,"gap",0),U(n,()=>F("newTask.field.gitUrl")),q(l,"placeholder","https://github.com/user/repo.git"),q(l,"onInput",(E)=>a(DJ(E))),q(l,"onSubmit",()=>{if(!x().trim())return;V("cloneParent")}),y((E)=>{var d0=j1("cloneUrl"),h0=O1("cloneUrl"),C0=x(),n0=B()==="cloneUrl";return d0!==E.e&&(E.e=q(n,"fg",d0,E.e)),h0!==E.t&&(E.t=q(n,"attributes",h0,E.t)),C0!==E.a&&(E.a=q(l,"value",C0,E.a)),n0!==E.o&&(E.o=q(l,"focused",n0,E.o)),E},{e:void 0,t:void 0,a:void 0,o:void 0}),c})(),(()=>{var c=W("box"),n=W("text"),l=W("input");return D(c,n),D(c,l),q(c,"gap",0),U(n,()=>F("newTask.field.parentDir")),q(l,"placeholder","~/"),q(l,"onInput",(E)=>{s(!1),C(DJ(E))}),q(l,"onSubmit",()=>S0()),y((E)=>{var d0=j1("cloneParent"),h0=O1("cloneParent"),C0=S(),n0=B()==="cloneParent";return d0!==E.e&&(E.e=q(n,"fg",d0,E.e)),h0!==E.t&&(E.t=q(n,"attributes",h0,E.t)),C0!==E.a&&(E.a=q(l,"value",C0,E.a)),n0!==E.o&&(E.o=q(l,"focused",n0,E.o)),E},{e:void 0,t:void 0,a:void 0,o:void 0}),c})(),k(G0,{get when(){return B()==="cloneParent"},get children(){var c=W("box"),n=W("text");return D(c,n),q(c,"paddingLeft",2),q(n,"wrapMode","none"),U(n,()=>F("newTask.hint.remembered")),y((l)=>q(n,"fg",Y.textMuted,l)),c}}),k(G0,{get when(){return u0(()=>B()==="cloneParent"&&a0().length>0)()&&!R1()},get children(){var c=W("box");return q(c,"gap",0),q(c,"paddingLeft",2),U(c,k(G0,{get when(){return _0().start>0},get children(){var n=W("text");return q(n,"wrapMode","none"),U(n,()=>F("newTask.picker.moreAbove",{count:_0().start})),y((l)=>q(n,"fg",Y.textMuted,l)),n}}),null),U(c,k(X1,{get each(){return _0().items},children:(n,l)=>{let E=()=>_0().start+l(),d0=()=>E()===e0();return(()=>{var h0=W("text"),C0=E0("/");return D(h0,C0),q(h0,"wrapMode","none"),q(h0,"onMouseUp",()=>h(E())),U(h0,()=>d0()?"\u25B8 ":" ",C0),U(h0,n,C0),y((n0)=>{var B1=d0()?Y.primary:Y.textMuted,L1=d0()?Yz.BOLD:void 0;return B1!==n0.e&&(n0.e=q(h0,"fg",B1,n0.e)),L1!==n0.t&&(n0.t=q(h0,"attributes",L1,n0.t)),n0},{e:void 0,t:void 0}),h0})()}}),null),U(c,k(G0,{get when(){return _0().start+_0().items.length<_0().total},get children(){var n=W("text");return q(n,"wrapMode","none"),U(n,()=>F("newTask.picker.moreBelow",{count:_0().total-_0().start-_0().items.length})),y((l)=>q(n,"fg",Y.textMuted,l)),n}}),null),c}}),(()=>{var c=W("box"),n=W("text"),l=W("input");return D(c,n),D(c,l),q(c,"gap",0),U(n,()=>F("newTask.field.folderName")),q(l,"onInput",(E)=>{i(!0),I(DJ(E))}),q(l,"onSubmit",()=>V("cloneBaseRef")),y((E)=>{var d0=j1("cloneFolder"),h0=O1("cloneFolder"),C0=M(),n0=F("newTask.placeholder.folderName"),B1=B()==="cloneFolder";return d0!==E.e&&(E.e=q(n,"fg",d0,E.e)),h0!==E.t&&(E.t=q(n,"attributes",h0,E.t)),C0!==E.a&&(E.a=q(l,"value",C0,E.a)),n0!==E.o&&(E.o=q(l,"placeholder",n0,E.o)),B1!==E.i&&(E.i=q(l,"focused",B1,E.i)),E},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),c})(),(()=>{var c=W("box"),n=W("text"),l=W("input");return D(c,n),D(c,l),q(c,"gap",0),U(n,()=>F("newTask.field.baseBranch")),q(l,"placeholder",bz),q(l,"onInput",(E)=>J0(DJ(E))),q(l,"onSubmit",()=>void O0()),y((E)=>{var d0=j1("cloneBaseRef"),h0=O1("cloneBaseRef"),C0=e(),n0=B()==="cloneBaseRef";return d0!==E.e&&(E.e=q(n,"fg",d0,E.e)),h0!==E.t&&(E.t=q(n,"attributes",h0,E.t)),C0!==E.a&&(E.a=q(l,"value",C0,E.a)),n0!==E.o&&(E.o=q(l,"focused",n0,E.o)),E},{e:void 0,t:void 0,a:void 0,o:void 0}),c})(),k(G0,{get when(){return T()},get children(){var c=W("box"),n=W("text");return D(c,n),q(c,"gap",0),q(c,"paddingLeft",2),q(n,"wrapMode","none"),U(n,()=>_()||F("newTask.clone.progressFallback")),y((l)=>q(n,"fg",Y.textMuted,l)),c}})]}}),null),U(F0,k(G0,{get when(){return Z()==="adopt"},get children(){return[(()=>{var c=W("box"),n=W("text"),l=W("input");return D(c,n),D(c,l),q(c,"gap",0),U(n,()=>F("newTask.field.adoptFilter")),q(l,"onInput",(E)=>I0(DJ(E))),q(l,"onSubmit",()=>g()),y((E)=>{var d0=j1("adoptFilter"),h0=O1("adoptFilter"),C0=K0(),n0=F("newTask.placeholder.adoptFilter"),B1=B()==="adoptFilter";return d0!==E.e&&(E.e=q(n,"fg",d0,E.e)),h0!==E.t&&(E.t=q(n,"attributes",h0,E.t)),C0!==E.a&&(E.a=q(l,"value",C0,E.a)),n0!==E.o&&(E.o=q(l,"placeholder",n0,E.o)),B1!==E.i&&(E.i=q(l,"focused",B1,E.i)),E},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),c})(),(()=>{var c=W("box"),n=W("text");return D(c,n),q(c,"paddingLeft",2),q(n,"wrapMode","none"),U(n,()=>F("newTask.adopt.repoLine",{path:UJ(j().trim())||F("newTask.adopt.repoNone")})),y((l)=>q(n,"fg",Y.textMuted,l)),c})(),k(G0,{get when(){return g1.loading},get children(){var c=W("box"),n=W("text");return D(c,n),q(c,"paddingLeft",2),q(n,"wrapMode","none"),U(n,()=>F("newTask.hint.scanningWorktrees")),y((l)=>q(n,"fg",Y.textMuted,l)),c}}),k(G0,{get when(){return u0(()=>!g1.loading)()&&z1().length===0},get children(){var c=W("box"),n=W("text");return D(c,n),q(c,"paddingLeft",2),q(n,"wrapMode","none"),U(n,(()=>{var l=u0(()=>(g1()??[]).length===0);return()=>l()?F("newTask.adopt.noUnlinked"):F("newTask.adopt.noMatch")})()),y((l)=>q(n,"fg",Y.textMuted,l)),c}}),k(G0,{get when(){return z1().length>0},get children(){var c=W("box"),n=W("text");return D(c,n),q(c,"gap",0),q(c,"paddingLeft",2),U(c,k(G0,{get when(){return z0().start>0},get children(){var l=W("text");return q(l,"wrapMode","none"),U(l,()=>F("newTask.picker.moreAbove",{count:z0().start})),y((E)=>q(l,"fg",Y.textMuted,E)),l}}),n),U(c,k(X1,{get each(){return Z0()},children:(l,E)=>{let d0=()=>z0().start+E(),h0=()=>d0()===m0(),C0=()=>w0().has(l.path),n0=()=>[l.dirty?"dirty":"",l.kobeManaged?"":"external"].filter(Boolean).join(",");return(()=>{var B1=W("text");return q(B1,"wrapMode","none"),q(B1,"onMouseUp",()=>{Q1(d0()),j0(l.path)}),U(B1,()=>h0()?"\u25B8 ":" ",null),U(B1,()=>C0()?"[x] ":"[ ] ",null),U(B1,()=>l.branch,null),U(B1,(()=>{var L1=u0(()=>!!n0());return()=>L1()?` (${n0()})`:""})(),null),y((L1)=>{var jJ=h0()?Y.primary:C0()?Y.accent:Y.textMuted,Qz=h0()?Yz.BOLD:void 0;return jJ!==L1.e&&(L1.e=q(B1,"fg",jJ,L1.e)),Qz!==L1.t&&(L1.t=q(B1,"attributes",Qz,L1.t)),L1},{e:void 0,t:void 0}),B1})()}}),n),U(c,k(G0,{get when(){return z0().start+z0().items.length<z0().total},get children(){var l=W("text");return q(l,"wrapMode","none"),U(l,()=>F("newTask.picker.moreBelow",{count:z0().total-z0().start-z0().items.length})),y((E)=>q(l,"fg",Y.textMuted,E)),l}}),n),q(n,"wrapMode","none"),U(n,(()=>{var l=u0(()=>w0().size>0);return()=>l()?F("newTask.adopt.hintSelected",{count:w0().size}):F("newTask.adopt.hintDefault")})()),y((l)=>q(n,"fg",Y.textMuted,l)),c}})]}}),null),U(F0,k(G0,{get when(){return q0()},get children(){var c=W("text"),n=E0("\u203B ");return D(c,n),q(c,"wrapMode","word"),U(c,q0,null),y((l)=>q(c,"fg",Y.error,l)),c}}),null),D(AJ,az),D(AJ,Gz),q(AJ,"flexDirection","row"),q(AJ,"justifyContent","space-between"),q(AJ,"alignItems","center"),q(AJ,"paddingTop",1),q(AJ,"paddingBottom",1),U(az,()=>F("newTask.hint.legend")),q(Gz,"onMouseUp",()=>B0()),U(Gz,(()=>{var c=u0(()=>!!T());return()=>c()?F("newTask.button.cloning"):u0(()=>B()==="confirm")()?F("newTask.button.createFocused"):F("newTask.button.create")})()),y((c)=>{var n=Yz.BOLD,l=Y.text,E=j1("engine"),d0=O1("engine"),h0=Y.textMuted,C0=Y.textMuted,n0=B()==="confirm"?Y.primary:Y.text,B1=B()==="confirm"?Yz.BOLD:void 0;return n!==c.e&&(c.e=q(Y0,"attributes",n,c.e)),l!==c.t&&(c.t=q(Y0,"fg",l,c.t)),E!==c.a&&(c.a=q(LJ,"fg",E,c.a)),d0!==c.o&&(c.o=q(LJ,"attributes",d0,c.o)),h0!==c.i&&(c.i=q($z,"fg",h0,c.i)),C0!==c.n&&(c.n=q(az,"fg",C0,c.n)),n0!==c.s&&(c.s=q(Gz,"fg",n0,c.s)),B1!==c.h&&(c.h=q(Gz,"attributes",B1,c.h)),c},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0}),m})()}var j3=b(()=>{w();w();w();w();w();w();w();w();GJ();$1();W1();m1();WH();yJ();KH();nJ();Z3();u9()});function Ay(J,z,Y,Z){return new Promise((X)=>{J.replace(()=>k(B3,{defaultRepo:z,savedRepos:Y,get defaultCloneParent(){return Z?.defaultCloneParent},get defaultVendor(){return Z?.defaultVendor},get availableVendors(){return Z?.availableVendors},get discoverAdoptable(){return Z?.discoverAdoptable},onSubmit:(G)=>X(G),onCancel:()=>X(void 0)}),()=>X(void 0)),J.setSize("medium")})}var UH;var _X=b(()=>{w();j3();u9();UH={show:Ay}});function W3(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 V3}from"@opentui/core";function Ry(J){let z=d1(),{theme:Y}=i0(),[Z,X]=r("prompt"),[G,Q]=r(""),[f,H]=r(J.defaultVendor),[B,V]=r(J.defaultBaseRef);function j(O){let R=DH.indexOf(Z());X(DH[(R+O+DH.length)%DH.length]??"prompt")}function K(O){let R=J.engines;if(R.length===0)return;if(O>0){H((a)=>MY(R,a));return}let x=Math.max(0,R.indexOf(f()));H(R[(x-1+R.length)%R.length]??f())}function L(){if(AQ(G())){X("prompt");return}J.onSubmit({prompt:G().trim(),vendor:f(),baseRef:B().trim()||J.defaultBaseRef}),z.clear()}D1(()=>({enabled:!0,bindings:W3(Z(),{cycleField:j,stepEngine:K,commit:L})}));let A=(O)=>Z()===O?Y.accent:Y.textMuted;return(()=>{var O=W("box"),R=W("box"),x=W("text"),a=W("text"),S=W("box"),C=W("text"),M=W("input"),I=W("box"),$=W("text"),i=W("box"),e=W("text"),J0=W("input"),T=W("box"),f0=W("text");return D(O,R),D(O,S),D(O,I),D(O,i),D(O,T),q(O,"paddingLeft",2),q(O,"paddingRight",2),q(O,"gap",1),D(R,x),D(R,a),q(R,"flexDirection","row"),q(R,"justifyContent","space-between"),U(x,()=>F("quickTask.title",{repoLabel:J.repoLabel})),q(a,"onMouseUp",()=>J.onCancel()),U(a,()=>F("quickTask.esc")),D(S,C),D(S,M),q(S,"gap",0),U(C,()=>F("quickTask.promptLabel")),q(M,"onInput",(_)=>Q(DJ(_))),q(M,"onSubmit",()=>L()),D(I,$),q(I,"flexDirection","row"),q(I,"gap",2),U($,()=>F("quickTask.engineLabel")),U(I,k(X1,{get each(){return J.engines},children:(_)=>(()=>{var W0=W("text");return q(W0,"onMouseUp",()=>{H(_),X("engine")}),U(W0,()=>J.engineLabel(_)),y((R0)=>{var V0=f()===_?Y.primary:Y.textMuted,t=f()===_?V3.BOLD:void 0;return V0!==R0.e&&(R0.e=q(W0,"fg",V0,R0.e)),t!==R0.t&&(R0.t=q(W0,"attributes",t,R0.t)),R0},{e:void 0,t:void 0}),W0})()}),null),D(i,e),D(i,J0),q(i,"gap",0),U(e,()=>F("quickTask.branchLabel")),q(J0,"onInput",(_)=>V(DJ(_))),q(J0,"onSubmit",()=>L()),D(T,f0),q(T,"paddingBottom",1),U(f0,()=>F("quickTask.legend")),y((_)=>{var W0=V3.BOLD,R0=Y.text,V0=Y.textMuted,t=A("prompt"),P=G(),N=F("quickTask.promptPlaceholder"),p=Z()==="prompt",u=A("engine"),d=A("branch"),o=B(),Q0=J.defaultBaseRef,g0=Z()==="branch",P0=Y.textMuted;return W0!==_.e&&(_.e=q(x,"attributes",W0,_.e)),R0!==_.t&&(_.t=q(x,"fg",R0,_.t)),V0!==_.a&&(_.a=q(a,"fg",V0,_.a)),t!==_.o&&(_.o=q(C,"fg",t,_.o)),P!==_.i&&(_.i=q(M,"value",P,_.i)),N!==_.n&&(_.n=q(M,"placeholder",N,_.n)),p!==_.s&&(_.s=q(M,"focused",p,_.s)),u!==_.h&&(_.h=q($,"fg",u,_.h)),d!==_.r&&(_.r=q(e,"fg",d,_.r)),o!==_.d&&(_.d=q(J0,"value",o,_.d)),Q0!==_.l&&(_.l=q(J0,"placeholder",Q0,_.l)),g0!==_.u&&(_.u=q(J0,"focused",g0,_.u)),P0!==_.c&&(_.c=q(f0,"fg",P0,_.c)),_},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0}),O})()}function gy(J,z){return new Promise((Y)=>{J.replace(()=>k(Ry,oD(z,{onSubmit:(Z)=>Y(Z),onCancel:()=>Y(void 0)})),()=>Y(void 0)),J.setSize("medium")})}var DH,K3;var U3=b(()=>{w();w();w();w();w();w();w();W1();$1();m1();GJ();yJ();nJ();_X();DH=["prompt","engine","branch"];K3={show:gy}});async function LH(J={}){let z=J.logTag??"orch-connect",Y=J.connect??zz,Z=null;try{let X=await Y();if(!X)return JY(z,"no daemon running \u2014 caller degrades"),null;return Z=new KJ(X,{...J.orchestratorOptions,channels:J.channels}),await Z.init(),Z}catch(X){return t1(z,X),Z?.dispose(),null}}var E9=b(()=>{YZ();FJ();iY()});function D3(J){let[z,Y]=r(J.initial??"sidebar"),[Z,X]=r(0),G=HJ();function Q(j){if(X((L)=>L+1),z()===j)return;let K=G?.currentFocusedRenderable;if(K&&!K.isDestroyed)try{K.blur()}catch{}Y(j)}function f(j){let L=(MH.indexOf(z())+j+MH.length)%MH.length;Q(MH[L])}let H=new Map;function B(j){let K=H.get(j);if(!K)K=()=>z()===j,H.set(j,K);return K}let V={focused:z,is:B,setFocused:Q,cycle:f,refocusTick:Z};return k(Cy.Provider,{value:V,get children(){return J.children}})}var MH,Cy;var L3=b(()=>{w();w();W1();MH=["sidebar","workspace","files","terminal"],Cy=yz(null)});function M3(){for(let J of lY){let z=Ny.get(J.id);if(!z)continue;let Y=J;Y.keys=[...z.keys],Y.hint=z.hint?{...z.hint}:void 0}}function F3(){by((J)=>J+1)}function P9(J){return ky.get(J)}function Sy(J){return P9(J)?.keys??[]}function $Y(J){let z=[];for(let Y in J){let Z=J[Y];if(!Z)continue;let X=Sy(Y);if(X.length===0){console.warn(`[kobe/keybindings] bindByIds: id="${Y}" has no chords (or doesn't exist in KobeKeymap)`);continue}X.forEach((G,Q)=>z.push({key:G,cmd:Z,slot:Q}))}return z}var lY,Ny,w9,by,ky;var pX=b(()=>{W1();lY=[{id:"help.open",scope:"global",keys:["f1"],category:"Global",description:"Show keybindings help",hint:{keys:"F1",label:"help",pin:"right"}},{id:"task.new",scope:"sidebar",keys:["n"],category:"Sidebar",description:"New task",hint:{keys:"n",label:"new"}},{id:"task.openEditor",scope:"global",keys:["ctrl+o"],category:"Global",description:"Open active task worktree in editor"},{id:"settings.open",scope:"global",keys:["ctrl+,"],category:"Global",description:"Open settings"},{id:"settings.open.sidebar",scope:"sidebar",keys:["s"],category:"Sidebar",description:"Open settings",hint:{keys:"s",label:"settings",status:!1}},{id:"app.quit",scope:"sidebar",keys:["q"],category:"Sidebar",description:"Quit (with confirm)",hint:{keys:"q",label:"quit",status:!1}},{id:"focus.sidebar",scope:"workspace",keys:["ctrl+q"],category:"Workspace",description:"Back to sidebar (tasks)",hint:{keys:"ctrl+q",label:"tasks"}},{id:"focus.numeric",scope:"global",keys:["ctrl+h","ctrl+j","ctrl+k","ctrl+l"],category:"Navigation",description:"Jump to pane (h=sidebar, j=workspace, k=files, l=terminal)",hint:{keys:"ctrl+hjkl",label:"focus",pin:"right",status:!1}},{id:"chat.interrupt",scope:"workspace",keys:[],category:"Workspace",description:"Interrupt current turn (esc while streaming)"},{id:"sidebar.nav",scope:"sidebar",keys:["j","k","down","up"],category:"Sidebar",description:"Move cursor up/down",hint:{keys:"j/k",label:"nav"}},{id:"sidebar.select",scope:"sidebar",keys:["return"],category:"Sidebar",description:"Open the selected task",hint:{keys:"enter",label:"select"}},{id:"sidebar.goto",scope:"sidebar",keys:["g"],category:"Sidebar",description:"Top / bottom of list (gg or shift-G)"},{id:"sidebar.rename",scope:"sidebar",keys:["r"],category:"Sidebar",description:"Rename task",hint:{keys:"r",label:"rename",status:!1}},{id:"sidebar.archive",scope:"sidebar",keys:["a"],category:"Sidebar",description:"Toggle archive",hint:{keys:"a",label:"archive",status:!1}},{id:"sidebar.localMerge",scope:"sidebar",keys:["m"],category:"Sidebar",description:"Local merge task into parent repo (Shift+M)",hint:{keys:"M",label:"merge",status:!1}},{id:"sidebar.pin",scope:"sidebar",keys:["p"],category:"Sidebar",description:"Pin / unpin task at top (Shift+P)",hint:{keys:"P",label:"pin",status:!1}},{id:"sidebar.view",scope:"sidebar",keys:["[","]"],category:"Sidebar",description:"Switch view (Working session \u2194 Archives)",hint:{keys:"[/]",label:"view",status:!1}},{id:"sidebar.sort",scope:"sidebar",keys:["t"],category:"Sidebar",description:"Switch task sort (default \u2194 recent)",hint:{keys:"t",label:"sort",status:!1}},{id:"sidebar.projectFilter",scope:"sidebar",keys:["ctrl+p"],category:"Sidebar",description:"Cycle task project filter",hint:{keys:"ctrl+p",label:"project",status:!1}},{id:"sidebar.delete",scope:"sidebar",keys:["d"],category:"Sidebar",description:"Delete task (with confirm)",hint:{keys:"d",label:"delete",status:!1}},{id:"sidebar.search.enter",scope:"sidebar",keys:["/"],category:"Sidebar",description:"Search tasks (fuzzy filter)",hint:{keys:"/",label:"search"}},{id:"sidebar.search.nav",scope:"sidebar",keys:["down","up"],category:"Sidebar",description:"Move highlight in search results"},{id:"sidebar.search.submit",scope:"sidebar",keys:["return"],category:"Sidebar",description:"Select search match and exit search"},{id:"sidebar.search.cancel",scope:"sidebar",keys:["escape"],category:"Sidebar",description:"Cancel search (restore prior selection)"},{id:"tasks.openWorktree",scope:"sidebar",keys:["o"],category:"Tasks pane",description:"Open selected task's worktree in your editor",hint:{keys:"o",label:"open wt",status:!1}},{id:"tasks.renameBranch",scope:"sidebar",keys:["b"],category:"Tasks pane",description:"Rename the selected task's git branch",hint:{keys:"b",label:"branch",status:!1}},{id:"tasks.cycleEngine",scope:"sidebar",keys:["v"],category:"Tasks pane",description:"Cycle engine vendor (claude \u2194 codex \u2194 \u2026) \u2014 applies on reopen",hint:{keys:"v",label:"engine",status:!1}},{id:"tasks.update",scope:"sidebar",keys:["u"],category:"Tasks pane",description:"Open the update page (when a new version is available)",hint:{keys:"u",label:"update",status:!1}},{id:"tasks.focusEngine",scope:"sidebar",keys:["right"],category:"Tasks pane",description:"Focus the engine pane of the current window",hint:{keys:"\u2192",label:"engine",status:!1}},{id:"tasks.toggleKeys",scope:"sidebar",keys:["?"],category:"Tasks pane",description:"Collapse / expand the keys legend",hint:{keys:"?",label:"fold keys",status:!1}},{id:"tmux.quickTask",scope:"global",keys:[],category:"Workspace (tmux)",description:"Quick new task (tmux prefix, then f)",hint:{keys:"prefix f",label:"new task",status:!1}},{id:"tmux.engineTab",scope:"global",keys:[],category:"Workspace (tmux)",description:"Open the engine in a new tab (tmux prefix, then t)",hint:{keys:"prefix t",label:"engine tab",status:!1}},{id:"tmux.layout.workspaceSplit",scope:"global",keys:[],category:"Workspace (tmux)",description:"Add a temporary workspace split (tmux prefix, then s)",hint:{keys:"prefix s",label:"split",status:!1}},{id:"tmux.layout.workspaceClose",scope:"global",keys:[],category:"Workspace (tmux)",description:"Close the focused temporary workspace split (tmux prefix, then x)",hint:{keys:"prefix x",label:"close split",status:!1}},{id:"tmux.layout.workspaceReset",scope:"global",keys:[],category:"Workspace (tmux)",description:"Close all temporary workspace splits (tmux prefix, then r)",hint:{keys:"prefix r",label:"reset splits",status:!1}},{id:"tmux.layout.tasksToggle",scope:"global",keys:[],category:"Workspace (tmux)",description:"Hide / restore the Tasks pane (tmux prefix, then a)",hint:{keys:"prefix a",label:"tasks pane",status:!1}},{id:"tmux.layout.opsToggle",scope:"global",keys:[],category:"Workspace (tmux)",description:"Toggle the file/Ops pane (tmux prefix, then o)",hint:{keys:"prefix o",label:"file pane",status:!1}},{id:"tmux.layout.terminalToggle",scope:"global",keys:[],category:"Workspace (tmux)",description:"Hide / restore the terminal pane (tmux prefix, then z)",hint:{keys:"prefix z",label:"terminal",status:!1}},{id:"tmux.layout.zenToggle",scope:"global",keys:[],category:"Workspace (tmux)",description:"Zen mode \u2014 collapse to the engine pane (tmux prefix, then space)",hint:{keys:"prefix space",label:"zen",status:!1}},{id:"chat.send",scope:"workspace",keys:[],category:"Workspace",description:"Send message (composer)",hint:{keys:"enter",label:"send"}},{id:"chat.newline",scope:"workspace",keys:[],category:"Workspace",description:"Newline in composer",hint:{keys:"shift+enter",label:"newline"}},{id:"chat.cycle-mode",scope:"workspace",keys:[],category:"Workspace",description:"Cycle permission mode (composer)",hint:{keys:"shift+tab",label:"mode"}},{id:"chat.steer",scope:"workspace",keys:[],category:"Workspace",description:"Steer (interrupt + send) \u2014 mid-stream only",hint:{keys:"ctrl+enter",label:"steer",status:!1}},{id:"chat.tab.new",scope:"workspace",keys:["ctrl+t"],category:"Workspace",description:"New chat tab",hint:{keys:"ctrl+t",label:"new tab"}},{id:"chat.fork.new",scope:"workspace",keys:["ctrl+f"],category:"Workspace",description:"Quick-fork: create child task seeded with current repo/branch/model",hint:{keys:"ctrl+f",label:"fork"}},{id:"chat.session.resume",scope:"workspace",keys:["ctrl+y"],category:"Workspace",description:"Resume a prior session in this task's worktree",hint:{keys:"ctrl+y",label:"resume",status:!1}},{id:"chat.tab.close",scope:"workspace",keys:["ctrl+w"],category:"Workspace",description:"Close chat tab",hint:{keys:"ctrl+w",label:"close tab",status:!1}},{id:"chat.tab.rename",scope:"workspace",keys:["f2"],category:"Workspace",description:"Rename active chat tab",hint:{keys:"f2",label:"rename tab",status:!1}},{id:"chat.tab.cycle-next",scope:"workspace",keys:["ctrl+]"],category:"Workspace",description:"Next chat tab",hint:{keys:"ctrl+]",label:"next tab",status:!1}},{id:"chat.tab.cycle-prev",scope:"workspace",keys:["ctrl+["],category:"Workspace",description:"Previous chat tab",hint:{keys:"ctrl+[",label:"prev tab",status:!1}},{id:"chat.question.nav",scope:"workspace",keys:["j","k","down","up"],category:"Workspace",description:"Move highlight in question picker",hint:{keys:"j/k",label:"pick",status:!1}},{id:"chat.question.toggle",scope:"workspace",keys:["space"],category:"Workspace",description:"Toggle highlighted option in question picker",hint:{keys:"space",label:"toggle",status:!1}},{id:"chat.question.submit",scope:"workspace",keys:["return"],category:"Workspace",description:"Advance / submit question picker",hint:{keys:"enter",label:"submit",status:!1}},{id:"chat.question.pick-number",scope:"workspace",keys:["1","2","3","4","5","6","7","8","9"],category:"Workspace",description:"Pick option by number in question picker",hint:{keys:"1-9",label:"pick",status:!1}},{id:"files.nav",scope:"files",keys:["j","k","down","up"],category:"Files",description:"Move cursor up/down",hint:{keys:"j/k",label:"nav"}},{id:"files.hierarchy",scope:"files",keys:["h","l","left","right"],category:"Files",description:"Collapse / expand tree level",hint:{keys:"h/l",label:"level"}},{id:"files.open",scope:"files",keys:["return"],category:"Files",description:"Open file in nvim (diff vs HEAD when changed)",hint:{keys:"enter",label:"open"}},{id:"files.tab",scope:"files",keys:["[","]"],category:"Files",description:"Switch tab (cycle All / Changes)",hint:{keys:"[/]",label:"tab",status:!1}},{id:"files.refresh",scope:"files",keys:["r"],category:"Files",description:"Refresh",hint:{keys:"r",label:"refresh",status:!1}},{id:"files.openExternal",scope:"files",keys:["o"],category:"Files",description:"Open file in system default app (audio / video / pdf preview)",hint:{keys:"o",label:"open external",status:!1}},{id:"files.mention",scope:"files",keys:["a"],category:"Files",description:"Inject @<path> mention into the engine pane",hint:{keys:"a",label:"@mention"}},{id:"files.createPR",scope:"files",keys:["p"],category:"Files",description:"Create PR from the current task",hint:{keys:"p",label:"create PR"}},{id:"terminal.scroll-up",scope:"terminal",keys:["ctrl+pageup"],category:"Terminal",description:"Scroll scrollback up",hint:{keys:"ctrl+pgup",label:"scroll",status:!1}},{id:"terminal.scroll-down",scope:"terminal",keys:["ctrl+pagedown"],category:"Terminal",description:"Scroll scrollback down"},{id:"terminal.reset",scope:"terminal",keys:["f5"],category:"Terminal",description:"Reset terminal \u2014 kill the current shell and respawn",hint:{keys:"f5",label:"reset"}},{id:"dialog.cancel",scope:"global",keys:[],category:"Dialog",description:"Close the top dialog (esc)"},{id:"dialog.newtask.tab.cycle",scope:"global",keys:[],category:"Dialog",description:"Switch New Task tab (Existing / New Repo)",hint:{keys:"ctrl+[/]",label:"tab"}}],Ny=new Map(lY.map((J)=>[J.id,{keys:[...J.keys],hint:J.hint?{...J.hint}:void 0}]));[w9,by]=r(0);ky=new Map(lY.map((J)=>[J.id,J]))});function FH(){if(aY)return aY;let J=mq();if(!J.exists)return aY={path:J.path,exists:!1,applied:[],warnings:[]},aY;let z=[...J.warnings],Y=dq(J.doc,process.platform,{chordOptsFor:BB});z.push(...Y.warnings);let Z=Y.entries.filter((f)=>f.id.startsWith("tmux.")),X=Y.entries.filter((f)=>!f.id.startsWith("tmux.")),G=j5(lY,X);z.push(...G.warnings);let Q=[...G.applied];if(Z.length>0){let f=HB(Z);z.push(...f.warnings);for(let H of f.overridden){if(H===uz){Q.push({id:H,keys:f.focus.map((j)=>j?.chord??"").filter((j)=>j!==""),defaultKeys:IY});continue}let B=f.binds[H];Q.push({id:H,keys:B?[B.chord]:[],defaultKeys:[MZ[H]]});let V=lY.find((j)=>j.id===H);if(V?.hint)V.hint.keys=B?`${fX(H)?"prefix ":""}${B.chord}`:"\u2014"}}for(let f of z)console.warn(`[kobe/keybindings] ${f}`);return aY={path:J.path,exists:!0,applied:Q,warnings:z},aY}function O3(){return aY??FH()}function A3(){aY=null,B5(),U5(),M3();let J=FH();return F3(),J}var aY=null;var h9=b(()=>{qB();lq();nq();pX()});var Iy=250,rX,R3;var gQ=b(()=>{iX();eY();U9();({use:rX,provider:R3}=HH({name:"KV",init:()=>{let[J,z]=iz(RJ()),Y=new Set,Z=null;function X(f){if(Y.size===0)return!0;try{let H={};for(let B of Y)H[B]=J[B];return FY(H),Y.clear(),!0}catch(H){return console.error(`[kobe] kv ${f} failed:`,H),!1}}function G(){if(Z)clearTimeout(Z);Z=setTimeout(()=>{Z=null,X("write")},Iy)}let Q={get ready(){return!0},get store(){return J},signal(f,H){if(J[f]===void 0)z(f,H);return[()=>Q.get(f),(B)=>Q.set(f,B)]},get(f,H){return J[f]??H},set(f,H){z(f,H),Y.add(f),G()},flush(){if(Z)clearTimeout(Z),Z=null;return X("flush")},clear(){for(let f of Object.keys(J))z(f,void 0);if(Z)clearTimeout(Z),Z=null;Y.clear();try{$W({})}catch(f){console.error("[kobe] kv clear write failed:",f)}}};return Q}}))});var OH="../pulse-n3cq1btw.wav";var g3=()=>{};import{existsSync as yy,mkdirSync as xy}from"fs";import{tmpdir as uy}from"os";import{basename as Ey,isAbsolute as wy,join as v9,resolve as Py}from"path";function vy(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 my(){if(AH!==void 0)return AH;let z=(process.env.PATH??"").split(":").filter(Boolean);return AH=hy.find((Y)=>z.some((Z)=>yy(v9(Z,Y))))??null,AH}async function cy(){return b3??=(async()=>{xy(N3,{recursive:!0});let J=v9(N3,Ey(C3)),z=Bun.file(J);if(await z.exists())return J;return await Bun.write(z,Bun.file(C3)),J})(),b3}function k3(J=0.4){let z=my();if(!z)return;cy().then((Y)=>{try{Bun.spawn(vy(z,Y,J),{stdin:"ignore",stdout:"ignore",stderr:"ignore"}).unref?.()}catch{}}).catch(()=>{return})}var C3,N3,hy,AH,b3;var S3=b(()=>{g3();C3=wy(OH)?OH:Py(import.meta.dir,OH),N3=v9(uy(),"kobe-sfx"),hy=["ffplay","mpv","mpg123","mpg321","mplayer","afplay","play","omxplayer","aplay","cmdmp3","cvlc","powershell.exe"]});function I3(J,z){return`${J}:${z}`}function y3(J){let z=rX(),[Y,Z]=r([]),[X,G]=r(new Map),Q=jH(),f=0;function H(K){if(G((L)=>{let A=new Map(L),O=I3(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{}k3()}if(z.get("notifications.toast.enabled",!0)!==!1){let L=++f,A={id:L,kind:K.kind,taskId:K.taskId,tabId:K.tabId,title:K.title};Z((O)=>[...O,A]),Q.set(()=>B(L),dy)}}function B(K){Z((L)=>L.filter((A)=>A.id!==K))}function V(K,L){G((A)=>{let O=I3(K,L);if(!A.has(O))return A;let R=new Map(A);return R.delete(O),R})}let j={toasts:Y,unread:X,notify:H,dismiss:B,markRead:V};return k(T3.Provider,{value:j,get children(){return J.children}})}function RH(){let J=wJ(T3);if(!J)throw Error("useNotifications must be used within a NotificationsProvider");return J}var dy=4500,T3;var gH=b(()=>{w();W1();C9();S3();gQ();T3=yz()});function m9(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=iy(z.focusAccent);if(Y&&Y!==J.focusAccent())J.setFocusAccent(Y)}}function iy(J){if(J===null)return"primary";return ny.includes(J)?J:null}var ny;var x3=b(()=>{ny=["primary","success","info"]});import{readFileSync as ly}from"fs";function u3(J){try{let z=JSON.parse(ly(lJ(),"utf8")),Y=typeof z.activeTheme==="string"&&UQ(z.activeTheme)?z.activeTheme:J,Z=z.transparentBackground===!0,X=typeof z.focusAccent==="string"&&EZ.includes(z.focusAccent)?z.focusAccent:null,G=DQ(z[CH])?z[CH]:$X;return{theme:Y,transparent:Z,focusAccent:X,locale:G}}catch{return{theme:J,transparent:!1,focusAccent:null,locale:$X}}}var CH="locale";var c9=b(()=>{o1();m1();aX()});function ay(J){if(J)_Q(J);H7(),FH();for(let{name:z,theme:Y}of IG())L9(z,Y)}function _y(J){let z={backgroundColor:"transparent",externalOutputMode:"passthrough",exitOnCtrlC:!1,screenMode:"alternate-screen",useKittyKeyboard:{}};return J?{...z,onDestroy:J}:z}function py(J){let z=()=>J.children,Y=()=>J.notifications?k(y3,{get children(){return z()}}):z(),Z=()=>k($L,{get children(){return Y()}}),X=()=>J.focus?k(D3,{initial:"sidebar",get children(){return Z()}}):Z(),G=()=>J.kv?k(R3,{get children(){return X()}}):X();return k(BL,{mode:"dark",get theme(){return J.theme},get children(){return G()}})}function ry(J){let{theme:z}=i0();return zJ(()=>t1("pane-crash",J.error)),(()=>{var Y=W("box"),Z=W("text"),X=W("text");return D(Y,Z),D(Y,X),q(Y,"flexDirection","column"),q(Y,"flexGrow",1),q(Y,"paddingLeft",1),q(Y,"paddingTop",1),q(Y,"gap",1),U(Z,()=>F("common.paneCrash.title")),U(X,()=>F("common.paneCrash.hint")),y((G)=>{var{background:Q,error:f,textMuted:H}=z;return Q!==G.e&&(G.e=q(Y,"backgroundColor",Q,G.e)),f!==G.t&&(G.t=q(Z,"fg",f,G.t)),H!==G.a&&(G.a=q(X,"fg",H,G.a)),G},{e:void 0,t:void 0,a:void 0}),Y})()}function oy(J){let z=i0(),Y={selectedTheme:()=>z.selected,hasTheme:(f)=>z.has(f),setTheme:(f)=>z.set(f),reloadUserThemes:()=>{for(let{name:f,theme:H}of IG())L9(f,H)},transparentBackground:()=>z.transparentBackground,setTransparentBackground:(f)=>z.setTransparentBackground(f),focusAccent:()=>z.focusAccent,setFocusAccent:(f)=>z.setFocusAccent(f)};m9(Y,{theme:J.boot.theme,transparentBackground:J.boot.transparent,focusAccent:J.boot.focusAccent}),LQ(J.boot.locale);let[Z,X]=r(null),G=!1;zJ(()=>{(async()=>{let f=await LH({logTag:"ui-prefs",channels:["ui-prefs","keybindings"]});if(!f)return;if(G){f.dispose();return}X(f)})()}),r0(()=>{let f=Z()?.uiPrefsSignal()();if(!f)return;if(m9(Y,f),DQ(f.locale))LQ(f.locale)});let Q=null;return r0(()=>{let f=Z()?.keybindingsRevSignal()();if(f==null)return;if(Q===null||f===Q){Q=f;return}Q=f,A3()}),S1(()=>{G=!0,Z()?.dispose()}),null}async function OJ(J){ay(J.logContext);let z=u3($y),Y=await J.setup(z),Z=J.providers?.kv??!0,X=J.providers?.focus??!0,G=J.providers?.notifications??!1;await ZL(()=>k(py,{get theme(){return z.theme},kv:Z,focus:X,notifications:G,get children(){return[k(oy,{boot:z}),k(hV,{fallback:(Q)=>k(ry,{error:Q}),get children(){return Y.root()}})]}}),_y(Y.onDestroy))}var $y="claude";var _Y=b(()=>{w();w();w();w();w();w();w();YZ();W1();E9();L3();h9();gQ();gH();m1();zf();GJ();nJ();x3();c9()});async function d9(J,z,Y,Z,X={}){let G=N1(z.id);if(await V1(G))return!0;let Q=z.worktreePath;if(!Q||!ZX(Q)){if(!J)throw new hZ("no-daemon",`no daemon; cannot materialise worktree for ${z.id}`);try{Q=await J.ensureWorktree(z.id)}catch(j){throw new hZ("worktree",`ensureWorktree failed for ${z.id}`,j)}await X.reload?.()}if(!Q||!ZX(Q))throw new hZ("worktree",`task ${z.id} has no usable worktree`);let{ensureSession:f}=await Promise.resolve().then(() => (YJ(),vJ)),{resolveEngineLaunchInit:H}=await Promise.resolve().then(() => (SX(),Pf)),B=Y?H(Y,Q,{kind:X.includeInitPrompt?"repo-init":"none"}):void 0;if(!await f({name:G,cwd:Q,command:oJ(Z),taskId:z.id,vendor:Z,repo:Y,launchInit:B}))throw new hZ("session",`failed to start tmux session for ${z.id}`);return!1}async function n9(J,z,Y,Z,X={}){let G=N1(z.id),Q=await Promise.resolve().then(() => (YJ(),vJ));if(X.captureFrom){let B=await Q.currentSessionName();if(B&&B!==G)await Q.captureGlobalLayout(B)}if(await d9(J,z,Y,Z,{includeInitPrompt:X.includeInitPrompt,reload:X.reload})&&X.heal)try{let B=await gZ(G,"@kobe_worktree")||z.worktreePath||"";if(B&&ZX(B)){let{resolveEngineLaunchInit:V}=await Promise.resolve().then(() => (SX(),Pf)),j=Y?V(Y,B,{kind:X.includeInitPrompt?"repo-init":"none"}):void 0;await Q.ensureSession({name:G,cwd:B,command:oJ(Z),taskId:z.id,vendor:Z,repo:Y,launchInit:j})}}catch(B){console.error("[kobe handover] heal failed (continuing to switch):",B)}let{syncSessionZen:H}=await Promise.resolve().then(() => (xY(),kB));if(await H(G),X.isCurrent&&!X.isCurrent())return;await J?.setActiveTask(z.id).catch(()=>{}),await Q.enterWindow(G)}async function NH(J,z,Y,Z,X={}){await n9(J,z,Y,Z,{includeInitPrompt:X.includeInitPrompt})}var hZ;var bH=b(()=>{sJ();Uz();h1();hZ=class hZ extends Error{phase;cause;constructor(J,z,Y){super(z);this.name="HandoverError",this.phase=J,this.cause=Y}}});var E3={};f1(E3,{startNewTaskHost:()=>sy,NewTaskPage:()=>kH});function kH(J){let{theme:z}=i0(),Y=d1();zJ(()=>{Z()});async function Z(){let X=gJ(),G=J.defaultRepo||X[0]||process.cwd(),Q=xJ(C1("lastSelectedVendor"),uJ()),f=await zY(),H=J.orchestrator,B=await UH.show(Y,G,X,{defaultVendor:Q,availableVendors:f,discoverAdoptable:H?(j)=>H.discoverAdoptableWorktrees(j):void 0});if(!B)process.exit(0);if(s1("lastSelectedVendor",B.vendor),oz(B.repo),!H)console.error("[kobe new-task] no daemon; cannot create task"),process.exit(1);let V;try{if(B.mode==="adopt")for(let j of B.adopt)V=await H.adoptWorktree({repo:B.repo,worktreePath:j.worktreePath,branch:j.branch,vendor:B.vendor});else V=await H.createTask({repo:B.repo,baseRef:B.baseRef,vendor:B.vendor})}catch(j){console.error("[kobe new-task] task.create/adopt failed:",j),process.exit(1)}if(V)try{await NH(H,V,B.repo,B.vendor,{includeInitPrompt:B.mode!=="adopt"})}catch(j){console.error("[kobe new-task] auto-enter failed:",j)}process.exit(0)}return(()=>{var X=W("box");return q(X,"flexDirection","column"),q(X,"flexGrow",1),y((G)=>q(X,"backgroundColor",z.background,G)),X})()}async function sy(J){await OJ({setup:async()=>{let z=null;try{let Y=await gz(),Z=new KJ(Y);await Z.init(),z=Z}catch(Y){console.error("[kobe new-task] daemon unavailable; cannot create task:",Y)}return{root:()=>k(kH,{get defaultRepo(){return J.defaultRepo},orchestrator:z}),onDestroy:()=>{z?.dispose()}}}})}var i9=b(()=>{w();w();w();w();FJ();W1();iY();ZZ();A1();$1();_X();m1();_Y();bH();nJ()});function SH(J,z,Y,Z,X={}){if(J.length===0)return z;let G=new Map;for(let H of J)G.set(Y(H),H);let Q=J.length===z.length,f=Array(z.length);for(let H=0;H<z.length;H++){let B=z[H],V=G.get(Y(B));if(V&&Z(V,B)&&(!X.samePosition||J[H]===V)){if(f[H]=V,Q&&J[H]!==V)Q=!1}else f[H]=B,Q=!1}return Q?J:f}function w3(J,z){if(!J)return!0;let Y=J.toLowerCase(),Z=z.toLowerCase(),X=0;for(let G=0;G<Z.length&&X<Y.length;G++)if(Z.charCodeAt(G)===Y.charCodeAt(X))X++;return X===Y.length}function ty(J,z){let Y=z==="archived";return J.filter((Z)=>Z.archived===Y)}function l9(J,z,Y,Z="default",X){let G=ty(J,z),Q=Y?.trim()??"",f=X?Zz(X):null,H=Q?G.filter((O)=>w3(Q,`${O.title} ${kz(O.repo)}`)):G,B=[],V=[],j=[],K=new Set;for(let O of H){if(O.kind==="main"){let R=Zz(O.repo);if(K.has(R))continue;K.add(R),B.push(O);continue}if(f&&Zz(O.repo)!==f)continue;if(O.pinned===!0)V.push(O);else j.push(O)}if(B.sort((O,R)=>kz(O.repo).localeCompare(kz(R.repo))),Z==="recent")V.sort(P3),j.sort(P3);let L=[],A=0;for(let O of B)L.push({kind:"task",task:O,flatIndex:A}),A++;for(let O of V)L.push({kind:"task",task:O,flatIndex:A}),A++;for(let O of j)L.push({kind:"task",task:O,flatIndex:A}),A++;return L}function P3(J,z){let Y=h3(z)-h3(J);if(Y!==0)return Y;return String(z.id).localeCompare(String(J.id))}function h3(J){let z=Date.parse(J.updatedAt||J.createdAt);return Number.isFinite(z)?z:0}function kz(J){let z=J.split("/").filter(Boolean);return z[z.length-1]??J}function Zz(J){return J.trim().replace(/[\\/]+$/,"")||J}function ey(J,z){let Y=kz(J);if(!z.some((X)=>X!==J&&kz(X)===Y))return Y;return J.replace(/[\\/]+$/,"").split(/[\\/]+/).slice(-2).join("/")}function v3(J,z){let Y=z==="archived",Z=new Map;for(let G of J){let Q=Zz(G.repo),f=Z.get(Q)??{repo:G.repo,count:0};if(G.kind==="main")f.repo=G.repo;else if(G.archived===Y)f.count+=1;Z.set(Q,f)}let X=[...Z.values()].map((G)=>G.repo);return[...Z.values()].map((G)=>({repo:G.repo,label:ey(G.repo,X),count:G.count})).sort((G,Q)=>G.label.localeCompare(Q.label))}function m3(J,z){if(J.length===0)return-1;if(!z)return J[0]?.flatIndex??-1;let Y=Zz(z),Z=J.find((G)=>G.task.kind!=="main"&&Zz(G.task.repo)===Y);if(Z)return Z.flatIndex;return J.find((G)=>G.task.kind==="main"&&Zz(G.task.repo)===Y)?.flatIndex??J[0]?.flatIndex??-1}function $9(J){return J.map((z)=>z.task.id)}function c3(J,z,Y){let Z=z.length;if(J===null){if(Y===-1&&Z>0)return 0;if(Y>=Z)return Math.max(0,Z-1);if(Z===0)return-1;return Y}let X=z.indexOf(J);if(X>=0)return X;if(Z===0)return-1;if(Y<0||Y>=Z)return Z-1;return Y}function d3(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 Jx(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 n3(J,z){return SH(J,z,(Y)=>Y.task.id,(Y,Z)=>Y.flatIndex===Z.flatIndex&&Jx(Y.task,Z.task),{samePosition:!0})}var IH=()=>{};var i3={};f1(i3,{startQuickTaskHost:()=>Xx});async function zx(J,z){let Y,Z;if(z){let j=await IJ(z,["@kobe_task","@kobe_worktree"]);Y=j["@kobe_task"]||void 0,Z=j["@kobe_worktree"]||void 0}let X=(Y?J?.getTask(Y)?.repo:void 0)??gJ()[0],G=X??Z??process.cwd();if(!X)return{ctx:null,fallbackRepo:G};let Q=await zY(),f=xJ(C1("lastSelectedVendor"),uJ()),H=Q.length===0||Q.includes(f)?f:Q[0]??f,B=MQ(UJ(X))??bz,V=Q.length>0?Q:[H];return{ctx:{repo:X,vendor:H,baseRef:B,engines:V},fallbackRepo:G}}async function Yx(J,z,Y,Z,X){let G=await d9(J,z,Y,Z),Q=N1(z.id),{pane:f}=await bG(Q,!G);if(f)await kG(f,X)}function Zx(J){let{theme:z}=i0(),Y=d1();zJ(()=>{Z()});async function Z(){let X=J.ctx,G=await K3.show(Y,{repoLabel:kz(X.repo),engines:X.engines,defaultVendor:X.vendor,defaultBaseRef:X.baseRef,engineLabel:KZ});if(G===void 0)process.exit(0);s1("lastSelectedVendor",G.vendor),oz(X.repo);let Q=J.orchestrator;if(!Q)console.error("[kobe quick-task] no daemon; cannot create task"),process.exit(1);try{let f=await Q.createTask({repo:X.repo,baseRef:G.baseRef,vendor:G.vendor});await Yx(Q,f,X.repo,G.vendor,G.prompt),await NH(Q,f,X.repo,G.vendor)}catch(f){console.error("[kobe quick-task] task.create/deliver failed:",f),process.exit(1)}process.exit(0)}return(()=>{var X=W("box");return q(X,"flexDirection","column"),q(X,"flexGrow",1),y((G)=>q(X,"backgroundColor",z.background,G)),X})()}async function Xx(J){await OJ({setup:async()=>{let z=null;try{let X=await gz(),G=new KJ(X);await G.init(),z=G}catch(X){console.error("[kobe quick-task] daemon unavailable; cannot create task:",X)}let{ctx:Y,fallbackRepo:Z}=await zx(z,J.session);return{root:()=>Y?k(Zx,{ctx:Y,orchestrator:z}):k(kH,{defaultRepo:Z,orchestrator:z}),onDestroy:()=>{z?.dispose()}}}})}var l3=b(()=>{w();w();w();w();FJ();W1();iY();ZZ();sJ();A1();h1();$q();$1();U3();m1();WH();_Y();KH();bH();i9();IH();nJ()});function yH(J){let z=J.trim().split(/\s+/).pop()??"",Y=/^([CM])-(.+)$/.exec(z);if(!Y)return null;let Z=Y[1]==="C"?"\u2303":"\u2325",X=Y[2]??"";return`${Z}${X.length===1?X.toUpperCase():X}`}function TH(J,z){if(J.includes("/"))return J.split("/").map((X)=>TH(X,z)).join("/");let Y=J.toLowerCase();if(Y==="tab")return"tab";let Z=Qx[Y];if(Z)return Z;if(/^f\d{1,2}$/.test(Y))return Y.toUpperCase();if(!z)return J;if(/^[a-z]$/.test(Y))return J.toUpperCase();return J.replace(/[a-z]+/gi,(X)=>X.toUpperCase())}function oX(J,z="\u2303B"){let Y=J.trim();if(!Y)return Y;let Z=/^prefix\s+(.+)$/i.exec(Y);if(Z){let f=Z[1]??"";return`${z} ${f.includes("+")?oX(f,z):TH(f,!0)}`}let X=Y.split("+");if(X.length===1)return TH(X[0]??"",!1);let G=X[X.length-1]??"";return`${X.slice(0,-1).map((f)=>Gx[f.toLowerCase().trim()]??f).join("")} ${TH(G,!0)}`}var Gx,Qx;var a9=b(()=>{Gx={ctrl:"\u2303",control:"\u2303",alt:"\u2325",opt:"\u2325",option:"\u2325",shift:"\u21E7",cmd:"\u2318",command:"\u2318",meta:"\u2318",super:"\u2318"},Qx={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 $3}from"@opentui/core";function qx(J){let z=new Map,Y=[];for(let Z of J){if(!z.has(Z.category))z.set(Z.category,[]),Y.push(Z.category);z.get(Z.category).push(Z)}return Y.map((Z)=>({category:Z,rows:z.get(Z)}))}function sX(J={}){let z=d1(),{theme:Y}=i0(),Z=()=>qx(lY),X=()=>J.onClose?J.onClose():z.clear(),[G,Q]=r("\u2303B");return zJ(()=>{$0(["show-options","-g","prefix"]).then(({code:f,stdout:H})=>{if(f!==0)return;let B=yH(H);if(B)Q(B)})}),D1(()=>({bindings:[{key:"?",cmd:X}]})),(()=>{var f=W("box"),H=W("box"),B=W("text"),V=W("text"),j=W("scrollbox"),K=W("box");return D(f,H),D(f,j),q(f,"paddingLeft",2),q(f,"paddingRight",2),q(f,"gap",1),q(f,"flexShrink",1),D(H,B),D(H,V),q(H,"flexDirection","row"),q(H,"justifyContent","space-between"),q(H,"flexShrink",0),U(B,()=>F("help.title")),q(V,"onMouseUp",X),U(V,()=>F("help.esc")),D(j,K),q(j,"flexShrink",1),q(j,"flexGrow",1),q(j,"stickyScroll",!1),q(K,"paddingBottom",1),q(K,"gap",1),q(K,"paddingRight",1),U(K,k(X1,{get each(){return Z()},children:(L)=>(()=>{var A=W("box"),O=W("text");return D(A,O),q(A,"gap",0),U(O,()=>O9("category",L.category)),U(A,k(X1,{get each(){return L.rows},children:(R)=>{let x=R.hint?.keys??R.keys[0]??"\u2014",a=()=>x==="\u2014"?"\u2014":oX(x,G()),S=()=>(R.hint?R.keys:R.keys.slice(1)).map((C)=>oX(C,G()));return(()=>{var C=W("box"),M=W("box"),I=W("text"),$=W("box"),i=W("text");return D(C,M),D(C,$),q(C,"flexDirection","row"),q(C,"gap",2),q(C,"paddingLeft",1),D(M,I),q(M,"width",14),U(I,a),D($,i),q($,"flexGrow",1),U(i,()=>O9("desc",R.id)),U(C,(()=>{var e=u0(()=>S().length>0);return()=>e()?(()=>{var J0=W("box"),T=W("text");return D(J0,T),U(T,()=>`(${S().join(", ")})`),y((f0)=>q(T,"fg",Y.textMuted,f0)),J0})():null})(),null),y((e)=>{var{primary:J0,text:T}=Y;return J0!==e.e&&(e.e=q(I,"fg",J0,e.e)),T!==e.t&&(e.t=q(i,"fg",T,e.t)),e},{e:void 0,t:void 0}),C})()}}),null),y((R)=>{var x=Y.accent,a=$3.BOLD;return x!==R.e&&(R.e=q(O,"fg",x,R.e)),a!==R.t&&(R.t=q(O,"attributes",a,R.t)),R},{e:void 0,t:void 0}),A})()})),y((L)=>{var A=$3.BOLD,O=Y.text,R=Y.textMuted,x={trackOptions:{backgroundColor:Y.backgroundDialog,foregroundColor:Y.borderActive}};return A!==L.e&&(L.e=q(B,"attributes",A,L.e)),O!==L.t&&(L.t=q(B,"fg",O,L.t)),R!==L.a&&(L.a=q(V,"fg",R,L.a)),x!==L.o&&(L.o=q(j,"verticalScrollbarOptions",x,L.o)),L},{e:void 0,t:void 0,a:void 0,o:void 0}),f})()}var _9=b(()=>{w();w();w();w();w();w();w();W1();h1();pX();m1();GJ();a9();yJ();nJ();sX.show=(J)=>{J.replace(()=>k(sX,{}))}});import{TextAttributes as fx}from"@opentui/core";function a3(J){let z=d1(),{theme:Y}=i0(),[Z,X]=r(J.currentTitle);function G(){let Q=Z().trim();if(AQ(Q)&&!J.allowEmpty)return;J.onSubmit(Q),z.clear()}return(()=>{var Q=W("box"),f=W("box"),H=W("text"),B=W("text"),V=W("box"),j=W("text"),K=W("input"),L=W("box"),A=W("text");return D(Q,f),D(Q,V),D(Q,L),q(Q,"paddingLeft",2),q(Q,"paddingRight",2),q(Q,"gap",1),D(f,H),D(f,B),q(f,"flexDirection","row"),q(f,"justifyContent","space-between"),U(H,()=>J.dialogTitle??F("common.rename.defaultTitle")),D(B,E0("esc")),q(B,"onMouseUp",()=>J.onCancel()),D(V,j),D(V,K),q(V,"gap",0),U(j,()=>J.fieldLabel??F("common.rename.defaultFieldLabel")),q(K,"focused",!0),q(K,"onInput",(O)=>X(DJ(O))),q(K,"onSubmit",()=>G()),D(L,A),q(L,"paddingBottom",1),U(A,()=>F("common.rename.footerHint",{submitLabel:J.submitLabel??F("common.rename.defaultSubmitLabel")})),y((O)=>{var R=fx.BOLD,x=Y.text,a=Y.textMuted,S=Y.accent,C=Z(),M=J.placeholder??J.currentTitle,I=Y.textMuted;return R!==O.e&&(O.e=q(H,"attributes",R,O.e)),x!==O.t&&(O.t=q(H,"fg",x,O.t)),a!==O.a&&(O.a=q(B,"fg",a,O.a)),S!==O.o&&(O.o=q(j,"fg",S,O.o)),C!==O.i&&(O.i=q(K,"value",C,O.i)),M!==O.n&&(O.n=q(K,"placeholder",M,O.n)),I!==O.s&&(O.s=q(A,"fg",I,O.s)),O},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),Q})()}var _3=b(()=>{w();w();w();w();w();w();w();GJ();W1();m1();nJ();_X()});function Hx(J,z,Y={}){return new Promise((Z)=>{J.replace(()=>k(a3,{currentTitle:z,get dialogTitle(){return Y.dialogTitle},get fieldLabel(){return Y.fieldLabel},get submitLabel(){return Y.submitLabel},get placeholder(){return Y.placeholder},get allowEmpty(){return Y.allowEmpty},onSubmit:(X)=>Z(X),onCancel:()=>Z(void 0)}),()=>Z(void 0))})}var UY;var p9=b(()=>{w();_3();UY={show:Hx}});import{TextAttributes as Bx}from"@opentui/core";function jx(J){if(!J)return J;return J.charAt(0).toUpperCase()+J.slice(1)}function DY(J){let z=d1(),{theme:Y}=i0(),[Z,X]=iz({active:J.initialActive??"confirm"});return D1(()=>({bindings:[{key:"return",cmd:()=>{if(Z.active==="confirm")J.onConfirm?.();if(Z.active==="cancel")J.onCancel?.();z.clear()}},{key:"left",cmd:()=>X("active",Z.active==="confirm"?"cancel":"confirm")},{key:"right",cmd:()=>X("active",Z.active==="confirm"?"cancel":"confirm")}]})),(()=>{var G=W("box"),Q=W("box"),f=W("text"),H=W("text"),B=W("text"),V=W("box");return D(G,Q),D(G,B),D(G,V),q(G,"paddingLeft",2),q(G,"paddingRight",2),q(G,"paddingBottom",1),q(G,"gap",0),D(Q,f),D(Q,H),q(Q,"flexDirection","row"),q(Q,"justifyContent","space-between"),U(f,()=>J.title),D(H,E0("esc")),q(H,"onMouseUp",()=>z.clear()),U(B,()=>J.message),q(V,"flexDirection","row"),q(V,"justifyContent","flex-end"),q(V,"paddingTop",1),U(V,k(X1,{each:["cancel","confirm"],children:(j)=>(()=>{var K=W("box"),L=W("text");return D(K,L),q(K,"paddingLeft",1),q(K,"paddingRight",1),q(K,"onMouseUp",()=>{if(j==="confirm")J.onConfirm?.();if(j==="cancel")J.onCancel?.();z.clear()}),U(L,()=>jx(j==="cancel"?J.label??F("common.cancel"):J.confirmLabel??F("common.confirm"))),y((A)=>{var O=j===Z.active?Y.primary:void 0,R=j===Z.active?Y.selectedListItemText:Y.textMuted;return O!==A.e&&(A.e=q(K,"backgroundColor",O,A.e)),R!==A.t&&(A.t=q(L,"fg",R,A.t)),A},{e:void 0,t:void 0}),K})()})),y((j)=>{var K=Bx.BOLD,L=Y.text,A=Y.textMuted,O=Y.textMuted;return K!==j.e&&(j.e=q(f,"attributes",K,j.e)),L!==j.t&&(j.t=q(f,"fg",L,j.t)),A!==j.a&&(j.a=q(H,"fg",A,j.a)),O!==j.o&&(j.o=q(B,"fg",O,j.o)),j},{e:void 0,t:void 0,a:void 0,o:void 0}),G})()}var r9=b(()=>{w();w();w();w();w();w();w();GJ();W1();iX();m1();yJ();nJ();DY.show=(J,z,Y,Z,X,G)=>{return new Promise((Q)=>{J.replace(()=>k(DY,{title:z,message:Y,onConfirm:()=>Q(!0),onCancel:()=>Q(!1),label:Z,confirmLabel:X,get initialActive(){return G?.initialActive}}),()=>Q(void 0)),J.setSize("small")})}});import{unlinkSync as Wx}from"fs";import{join as Vx}from"path";function p3(J){return J instanceof KJ}function r3(J,z){try{J?.destroy()}catch(Y){console.error(`kobe: renderer.destroy() failed during ${z}:`,Y)}}async function o9(J,z,Y){if(await DY.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{Wx(Vx(Sz(),".kobe","tasks.json"))}catch(X){if(X.code!=="ENOENT")console.error("kobe: failed to delete tasks.json during reset:",X)}r3(Y,"reset"),process.stderr.write(`kobe: UI state reset. Relaunch kobe to start fresh.
263
- `),process.exit(0)}async function s9(J,z,Y){if(!(z instanceof KJ))return;if(await DY.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;r3(Y,"daemon restart"),process.stderr.write(`kobe: window closed. Relaunch kobe to start fresh.
264
- `),process.exit(0)}var o3=b(()=>{iY();o1();r9()});function Kx(J){return`theme:${J}`}function t9(J){return`language:${J}`}function e9(J){return`accent:${J}`}function Ux(J){return`engine:${J}`}function CQ(J){return`surface:${J}`}function JW(J){return[...J.themeNames.map((z)=>({id:Kx(z),kind:"theme",name:z})),...wZ.map((z)=>({id:t9(z.id),kind:"language",locale:z.id})),{id:"transparent",kind:"transparent"},...J.focusAccentSlots.map((z)=>({id:e9(z),kind:"focusAccent",slot:z})),{id:"toast",kind:"toast"},{id:"sound",kind:"sound"},{id:"zen-keep-tasks",kind:"zenKeepTasks"},{id:CQ("chattab"),kind:"surface",surface:"chattab"},{id:CQ("taskpanel"),kind:"surface",surface:"taskpanel"},{id:"editor-kind",kind:"editorKind"},{id:"editor-custom",kind:"editorCustom"}]}function Dx(J){return[...J.map((z)=>({id:Ux(z),kind:"engine",vendor:z})),{id:"add-engine",kind:"engineAdd"}]}function Lx(){return[{id:"feedback-title",kind:"feedbackTitle"},{id:"feedback-body",kind:"feedbackBody"},{id:"feedback-send",kind:"feedbackSend"}]}function NQ(J){return[{id:"dev-reset",kind:"devReset"},...J?[{id:"dev-restart",kind:"devRestartDaemon"}]:[],{id:"remote-projects",kind:"devRemoteProjects"},{id:"auto-status",kind:"devAutoStatus"},{id:"dispatcher",kind:"devDispatcher"}]}function s3(J,z){switch(J){case"general":return JW(z);case"engines":return Dx(z.engineList);case"accounts":case"keys":return[];case"feedback":return Lx();case"dev":return NQ(z.hasDaemon)}}function bQ(J,z){return J.findIndex((Y)=>Y.id===z)}function xH(J,z){return J[z]}var vZ;var zW=b(()=>{aX();vZ=[{id:"general",label:"General"},{id:"engines",label:"Engines"},{id:"accounts",label:"Accounts"},{id:"keys",label:"Keybindings"},{id:"feedback",label:"Feedback"},{id:"dev",label:"Dev"}]});import{TextAttributes as s0}from"@opentui/core";function t3(J){let{theme:z}=i0();return(()=>{var Y=W("box");return q(Y,"flexDirection","column"),q(Y,"flexShrink",0),q(Y,"width",14),q(Y,"gap",1),U(Y,k(X1,{each:vZ,children:(Z,X)=>{let G=()=>X()===J.cursor(),Q=()=>G()&&J.level()==="sidebar";return(()=>{var f=W("box"),H=W("text");return D(f,H),q(f,"paddingLeft",1),q(f,"paddingRight",1),q(f,"onMouseUp",()=>J.switchSection(Z.id)),q(H,"wrapMode","none"),U(H,()=>F(`settings.sections.${Z.id}`)),y((B)=>{var V=Q()?z.primary:void 0,j=Q()?z.selectedListItemText:G()?z.accent:z.textMuted,K=G()?s0.BOLD:void 0;return V!==B.e&&(B.e=q(f,"backgroundColor",V,B.e)),j!==B.t&&(B.t=q(H,"fg",j,B.t)),K!==B.a&&(B.a=q(H,"attributes",K,B.a)),B},{e:void 0,t:void 0,a:void 0}),f})()}})),Y})()}function e3(J){let z=i0(),{theme:Y}=z,Z=()=>JW({themeNames:J.themeNames(),focusAccentSlots:EZ}),X=(M)=>bQ(Z(),M),G=()=>X("transparent"),Q=()=>X("toast"),f=()=>X("sound"),H=()=>X("zen-keep-tasks"),B=()=>X(CQ("chattab")),V=()=>X(CQ("taskpanel")),j=()=>X("editor-kind"),K=()=>X("editor-custom"),L=()=>J.bodyRow()===G(),A=()=>J.bodyRow()===Q(),O=()=>J.bodyRow()===f(),R=()=>J.bodyRow()===H(),x=()=>J.bodyRow()===B(),a=()=>J.bodyRow()===V(),S=()=>J.bodyRow()===j(),C=()=>J.bodyRow()===K();return(()=>{var M=W("box"),I=W("text"),$=W("text"),i=W("box"),e=W("box"),J0=W("text"),T=W("text"),f0=W("box"),_=W("text"),W0=W("text"),R0=W("box"),V0=W("text"),t=W("box"),P=W("text"),N=W("text"),p=W("box"),u=W("text"),d=W("text"),o=W("box"),Q0=W("text"),g0=E0(" "),P0=W("box"),N0=W("text"),k0=E0(" "),x0=W("box"),v=W("text"),b0=W("text"),X0=W("box"),L0=W("text"),a0=E0(" "),e0=W("box"),v0=W("text"),_0=W("text"),R1=W("box"),s=W("text"),K0=E0(" "),I0=W("box"),m0=W("text"),Q1=E0(" "),w0=W("box"),q1=W("text"),g1=W("text"),z1=W("box"),z0=W("text"),Z0=W("box"),j0=W("text");return D(M,I),D(M,$),D(M,i),D(M,e),D(M,f0),D(M,t),D(M,p),D(M,x0),D(M,e0),D(M,w0),q(M,"flexDirection","column"),q(M,"gap",1),U(I,()=>F("settings.general.theme")),U($,()=>F("settings.general.themeHint")),q(i,"flexDirection","column"),q(i,"gap",0),U(i,k(X1,{get each(){return J.themeNames()},children:(g,q0)=>{let T0=()=>J.level()==="body"&&J.bodyRow()===q0(),M0=()=>g===z.selected;return(()=>{var O0=W("box"),D0=W("text");return D(O0,D0),q(O0,"flexDirection","row"),q(O0,"gap",1),q(O0,"paddingLeft",1),q(O0,"paddingRight",1),q(O0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(q0()),J.setThemeCursor(q0()),J.selectTheme(g)}),q(D0,"wrapMode","none"),U(D0,()=>M0()?"\u25CF ":" ",null),U(D0,g,null),y((B0)=>{var t0=T0()?Y.primary:void 0,Y1=T0()?Y.selectedListItemText:M0()?Y.accent:Y.text,o0=T0()||M0()?s0.BOLD:void 0;return t0!==B0.e&&(B0.e=q(O0,"backgroundColor",t0,B0.e)),Y1!==B0.t&&(B0.t=q(D0,"fg",Y1,B0.t)),o0!==B0.a&&(B0.a=q(D0,"attributes",o0,B0.a)),B0},{e:void 0,t:void 0,a:void 0}),O0})()}})),D(e,J0),D(e,T),q(e,"flexDirection","column"),q(e,"gap",0),q(e,"paddingTop",1),U(J0,()=>F("settings.general.language")),q(T,"wrapMode","word"),U(T,()=>F("settings.general.languageHint")),U(e,k(X1,{each:wZ,children:(g)=>{let q0=()=>X(t9(g.id)),T0=()=>J.level()==="body"&&J.bodyRow()===q0(),M0=()=>J.currentLocale()===g.id;return(()=>{var O0=W("box"),D0=W("text");return D(O0,D0),q(O0,"flexDirection","row"),q(O0,"gap",1),q(O0,"paddingLeft",1),q(O0,"paddingRight",1),q(O0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(q0()),J.selectLanguage(g.id)}),q(D0,"wrapMode","none"),U(D0,()=>M0()?"\u25CF ":" ",null),U(D0,()=>g.label,null),y((B0)=>{var t0=T0()?Y.primary:void 0,Y1=T0()?Y.selectedListItemText:M0()?Y.accent:Y.text,o0=T0()||M0()?s0.BOLD:void 0;return t0!==B0.e&&(B0.e=q(O0,"backgroundColor",t0,B0.e)),Y1!==B0.t&&(B0.t=q(D0,"fg",Y1,B0.t)),o0!==B0.a&&(B0.a=q(D0,"attributes",o0,B0.a)),B0},{e:void 0,t:void 0,a:void 0}),O0})()}}),null),D(f0,_),D(f0,W0),D(f0,R0),q(f0,"flexDirection","column"),q(f0,"gap",0),q(f0,"paddingTop",1),U(_,()=>F("settings.general.transparent")),q(W0,"wrapMode","word"),U(W0,()=>F("settings.general.transparentHint")),D(R0,V0),q(R0,"flexDirection","row"),q(R0,"paddingLeft",1),q(R0,"paddingRight",1),q(R0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(G()),J.toggleTransparent()}),q(V0,"wrapMode","none"),U(V0,(()=>{var g=u0(()=>!!z.transparentBackground);return()=>g()?F("settings.general.on"):F("settings.general.off")})()),D(t,P),D(t,N),q(t,"flexDirection","column"),q(t,"gap",0),q(t,"paddingTop",1),U(P,()=>F("settings.general.focusAccent")),q(N,"wrapMode","word"),U(N,()=>F("settings.general.focusAccentHint")),U(t,k(X1,{each:EZ,children:(g)=>{let q0=()=>X(e9(g)),T0=()=>J.level()==="body"&&J.bodyRow()===q0(),M0=()=>z.focusAccent===g;return(()=>{var O0=W("box"),D0=W("text");return D(O0,D0),q(O0,"flexDirection","row"),q(O0,"gap",1),q(O0,"paddingLeft",1),q(O0,"paddingRight",1),q(O0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(q0()),J.selectFocusAccent(g)}),q(D0,"wrapMode","none"),U(D0,()=>M0()?"\u25CF ":" ",null),U(D0,()=>F(`settings.general.accent${g.charAt(0).toUpperCase()}${g.slice(1)}`),null),y((B0)=>{var t0=T0()?Y.primary:void 0,Y1=T0()?Y.selectedListItemText:M0()?Y.focusAccent:Y.text,o0=T0()||M0()?s0.BOLD:void 0;return t0!==B0.e&&(B0.e=q(O0,"backgroundColor",t0,B0.e)),Y1!==B0.t&&(B0.t=q(D0,"fg",Y1,B0.t)),o0!==B0.a&&(B0.a=q(D0,"attributes",o0,B0.a)),B0},{e:void 0,t:void 0,a:void 0}),O0})()}}),null),D(p,u),D(p,d),D(p,o),D(p,P0),q(p,"flexDirection","column"),q(p,"gap",0),q(p,"paddingTop",1),U(u,()=>F("settings.general.notifications")),q(d,"wrapMode","word"),U(d,()=>F("settings.general.notificationsHint")),D(o,Q0),q(o,"flexDirection","row"),q(o,"gap",1),q(o,"paddingLeft",1),q(o,"paddingRight",1),q(o,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(Q()),J.toggleToast()}),D(Q0,g0),q(Q0,"wrapMode","none"),U(Q0,()=>J.toastEnabled()?"[x]":"[ ]",g0),U(Q0,()=>F("settings.general.toast"),null),D(P0,N0),q(P0,"flexDirection","row"),q(P0,"gap",1),q(P0,"paddingLeft",1),q(P0,"paddingRight",1),q(P0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(f()),J.toggleSound()}),D(N0,k0),q(N0,"wrapMode","none"),U(N0,()=>J.soundEnabled()?"[x]":"[ ]",k0),U(N0,()=>F("settings.general.sound"),null),D(x0,v),D(x0,b0),D(x0,X0),q(x0,"flexDirection","column"),q(x0,"gap",0),q(x0,"paddingTop",1),U(v,()=>F("settings.general.zen")),q(b0,"wrapMode","word"),U(b0,()=>F("settings.general.zenHint")),D(X0,L0),q(X0,"flexDirection","row"),q(X0,"gap",1),q(X0,"paddingLeft",1),q(X0,"paddingRight",1),q(X0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(H()),J.toggleZenKeepsTasks()}),D(L0,a0),q(L0,"wrapMode","none"),U(L0,()=>J.zenKeepsTasks()?"[x]":"[ ]",a0),U(L0,()=>F("settings.general.zenKeepTasks"),null),D(e0,v0),D(e0,_0),D(e0,R1),D(e0,I0),q(e0,"flexDirection","column"),q(e0,"gap",0),q(e0,"paddingTop",1),U(v0,()=>F("settings.general.surface")),q(_0,"wrapMode","word"),U(_0,()=>F("settings.general.surfaceHint")),D(R1,s),q(R1,"flexDirection","row"),q(R1,"gap",1),q(R1,"paddingLeft",1),q(R1,"paddingRight",1),q(R1,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(B()),J.selectSurface("chattab")}),D(s,K0),q(s,"wrapMode","none"),U(s,()=>J.settingsSurface()==="chattab"?"[x]":"[ ]",K0),U(s,()=>F("settings.general.surfaceChattab"),null),D(I0,m0),q(I0,"flexDirection","row"),q(I0,"gap",1),q(I0,"paddingLeft",1),q(I0,"paddingRight",1),q(I0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(V()),J.selectSurface("taskpanel")}),D(m0,Q1),q(m0,"wrapMode","none"),U(m0,()=>J.settingsSurface()==="taskpanel"?"[x]":"[ ]",Q1),U(m0,()=>F("settings.general.surfaceTaskpanel"),null),D(w0,q1),D(w0,g1),D(w0,z1),D(w0,Z0),q(w0,"flexDirection","column"),q(w0,"gap",0),q(w0,"paddingTop",1),U(q1,()=>F("settings.general.editor")),q(g1,"wrapMode","word"),U(g1,()=>F("settings.general.editorHint")),D(z1,z0),q(z1,"flexDirection","row"),q(z1,"gap",1),q(z1,"paddingLeft",1),q(z1,"paddingRight",1),q(z1,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(j()),J.cycleEditorKind()}),q(z0,"wrapMode","none"),U(z0,()=>F("settings.general.editorRow",{kind:J.editorKind()})),D(Z0,j0),q(Z0,"flexDirection","row"),q(Z0,"gap",1),q(Z0,"paddingLeft",1),q(Z0,"paddingRight",1),q(Z0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(K()),J.editEditorCustom()}),q(j0,"wrapMode","none"),U(j0,()=>F("settings.general.editorCustom",{cmd:J.editorCustomCommand().trim()||F("settings.general.editorCustomUnset")})),y((g)=>{var q0=Y.text,T0=s0.BOLD,M0=Y.textMuted,O0=Y.text,D0=s0.BOLD,B0=Y.textMuted,t0=Y.text,Y1=s0.BOLD,o0=Y.textMuted,H1=L()?Y.primary:void 0,u1=L()?Y.selectedListItemText:z.transparentBackground?Y.accent:Y.textMuted,S0=s0.BOLD,h=Y.text,A0=s0.BOLD,j1=Y.textMuted,O1=Y.text,b1=s0.BOLD,m=Y.textMuted,y0=A()?Y.primary:void 0,Y0=A()?Y.selectedListItemText:J.toastEnabled()?Y.accent:Y.textMuted,F0=s0.BOLD,c1=O()?Y.primary:void 0,LJ=O()?Y.selectedListItemText:J.soundEnabled()?Y.accent:Y.textMuted,QJ=s0.BOLD,iJ=Y.text,$z=s0.BOLD,AJ=Y.textMuted,az=R()?Y.primary:void 0,Gz=R()?Y.selectedListItemText:J.zenKeepsTasks()?Y.accent:Y.textMuted,c=s0.BOLD,n=Y.text,l=s0.BOLD,E=Y.textMuted,d0=x()?Y.primary:void 0,h0=x()?Y.selectedListItemText:J.settingsSurface()==="chattab"?Y.accent:Y.textMuted,C0=s0.BOLD,n0=a()?Y.primary:void 0,B1=a()?Y.selectedListItemText:J.settingsSurface()==="taskpanel"?Y.accent:Y.textMuted,L1=s0.BOLD,jJ=Y.text,Qz=s0.BOLD,LY=Y.textMuted,gW=S()?Y.primary:void 0,CW=S()?Y.selectedListItemText:Y.accent,NW=s0.BOLD,bW=C()?Y.primary:void 0,kW=C()?Y.selectedListItemText:J.editorKind()==="custom"?Y.text:Y.textMuted;return q0!==g.e&&(g.e=q(I,"fg",q0,g.e)),T0!==g.t&&(g.t=q(I,"attributes",T0,g.t)),M0!==g.a&&(g.a=q($,"fg",M0,g.a)),O0!==g.o&&(g.o=q(J0,"fg",O0,g.o)),D0!==g.i&&(g.i=q(J0,"attributes",D0,g.i)),B0!==g.n&&(g.n=q(T,"fg",B0,g.n)),t0!==g.s&&(g.s=q(_,"fg",t0,g.s)),Y1!==g.h&&(g.h=q(_,"attributes",Y1,g.h)),o0!==g.r&&(g.r=q(W0,"fg",o0,g.r)),H1!==g.d&&(g.d=q(R0,"backgroundColor",H1,g.d)),u1!==g.l&&(g.l=q(V0,"fg",u1,g.l)),S0!==g.u&&(g.u=q(V0,"attributes",S0,g.u)),h!==g.c&&(g.c=q(P,"fg",h,g.c)),A0!==g.w&&(g.w=q(P,"attributes",A0,g.w)),j1!==g.m&&(g.m=q(N,"fg",j1,g.m)),O1!==g.f&&(g.f=q(u,"fg",O1,g.f)),b1!==g.y&&(g.y=q(u,"attributes",b1,g.y)),m!==g.g&&(g.g=q(d,"fg",m,g.g)),y0!==g.p&&(g.p=q(o,"backgroundColor",y0,g.p)),Y0!==g.b&&(g.b=q(Q0,"fg",Y0,g.b)),F0!==g.T&&(g.T=q(Q0,"attributes",F0,g.T)),c1!==g.A&&(g.A=q(P0,"backgroundColor",c1,g.A)),LJ!==g.O&&(g.O=q(N0,"fg",LJ,g.O)),QJ!==g.I&&(g.I=q(N0,"attributes",QJ,g.I)),iJ!==g.S&&(g.S=q(v,"fg",iJ,g.S)),$z!==g.W&&(g.W=q(v,"attributes",$z,g.W)),AJ!==g.C&&(g.C=q(b0,"fg",AJ,g.C)),az!==g.B&&(g.B=q(X0,"backgroundColor",az,g.B)),Gz!==g.v&&(g.v=q(L0,"fg",Gz,g.v)),c!==g.k&&(g.k=q(L0,"attributes",c,g.k)),n!==g.x&&(g.x=q(v0,"fg",n,g.x)),l!==g.j&&(g.j=q(v0,"attributes",l,g.j)),E!==g.q&&(g.q=q(_0,"fg",E,g.q)),d0!==g.z&&(g.z=q(R1,"backgroundColor",d0,g.z)),h0!==g.P&&(g.P=q(s,"fg",h0,g.P)),C0!==g.H&&(g.H=q(s,"attributes",C0,g.H)),n0!==g.F&&(g.F=q(I0,"backgroundColor",n0,g.F)),B1!==g.M&&(g.M=q(m0,"fg",B1,g.M)),L1!==g.D&&(g.D=q(m0,"attributes",L1,g.D)),jJ!==g.R&&(g.R=q(q1,"fg",jJ,g.R)),Qz!==g.E&&(g.E=q(q1,"attributes",Qz,g.E)),LY!==g.L&&(g.L=q(g1,"fg",LY,g.L)),gW!==g.N&&(g.N=q(z1,"backgroundColor",gW,g.N)),CW!==g.G&&(g.G=q(z0,"fg",CW,g.G)),NW!==g.U&&(g.U=q(z0,"attributes",NW,g.U)),bW!==g.K&&(g.K=q(Z0,"backgroundColor",bW,g.K)),kW!==g.V&&(g.V=q(j0,"fg",kW,g.V)),g},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0,w:void 0,m:void 0,f:void 0,y:void 0,g:void 0,p:void 0,b:void 0,T:void 0,A:void 0,O:void 0,I:void 0,S:void 0,W:void 0,C:void 0,B:void 0,v:void 0,k:void 0,x:void 0,j:void 0,q:void 0,z:void 0,P:void 0,H:void 0,F:void 0,M:void 0,D:void 0,R:void 0,E:void 0,L:void 0,N:void 0,G:void 0,U:void 0,K:void 0,V:void 0}),M})()}function JM(J){let{theme:z}=i0(),Y=()=>J.vendors.length;return(()=>{var Z=W("box"),X=W("text"),G=W("text"),Q=W("box"),f=W("box"),H=W("text");return D(Z,X),D(Z,G),D(Z,Q),q(Z,"flexDirection","column"),q(Z,"gap",1),U(X,()=>F("settings.engines.title")),q(G,"wrapMode","word"),U(G,()=>F("settings.engines.hint")),D(Q,f),q(Q,"flexDirection","column"),q(Q,"gap",0),U(Q,k(X1,{get each(){return J.vendors},children:(B,V)=>{let j=()=>J.level()==="body"&&J.bodyRow()===V();return(()=>{var K=W("box"),L=W("text"),A=W("text"),O=W("text");return D(K,L),D(K,A),D(K,O),q(K,"flexDirection","row"),q(K,"gap",1),q(K,"paddingLeft",1),q(K,"paddingRight",1),q(K,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(V()),J.editEngine(B)}),q(L,"wrapMode","none"),U(L,()=>J.isDefaultEngine(B)?"\u25CF":" "),q(A,"wrapMode","none"),U(A,()=>J.displayName(B)),q(O,"wrapMode","none"),U(O,()=>J.commandText(B),null),U(O,(()=>{var R=u0(()=>!!J.isDefault(B));return()=>R()?F("settings.engines.defaultTag"):u0(()=>!!J.isCustom(B))()?F("settings.engines.customTag"):""})(),null),y((R)=>{var x=j()?z.primary:void 0,a=j()?z.selectedListItemText:z.accent,S=s0.BOLD,C=j()?z.selectedListItemText:z.text,M=s0.BOLD,I=j()?z.selectedListItemText:J.isDefault(B)?z.textMuted:z.accent;return x!==R.e&&(R.e=q(K,"backgroundColor",x,R.e)),a!==R.t&&(R.t=q(L,"fg",a,R.t)),S!==R.a&&(R.a=q(L,"attributes",S,R.a)),C!==R.o&&(R.o=q(A,"fg",C,R.o)),M!==R.i&&(R.i=q(A,"attributes",M,R.i)),I!==R.n&&(R.n=q(O,"fg",I,R.n)),R},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),K})()}}),f),D(f,H),q(f,"flexDirection","row"),q(f,"paddingLeft",1),q(f,"paddingRight",1),q(f,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(Y()),J.onAddEngine()}),q(H,"wrapMode","none"),U(H,()=>F("settings.engines.addEngine")),y((B)=>{var V=z.text,j=s0.BOLD,K=z.textMuted,L=J.level()==="body"&&J.bodyRow()===Y()?z.primary:void 0,A=J.level()==="body"&&J.bodyRow()===Y()?z.selectedListItemText:z.primary;return V!==B.e&&(B.e=q(X,"fg",V,B.e)),j!==B.t&&(B.t=q(X,"attributes",j,B.t)),K!==B.a&&(B.a=q(G,"fg",K,B.a)),L!==B.o&&(B.o=q(f,"backgroundColor",L,B.o)),A!==B.i&&(B.i=q(H,"fg",A,B.i)),B},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),Z})()}function zM(J){let{theme:z}=i0(),Y=(Z)=>Z.binary.found?`Binary: ${Z.binary.path}`:`Binary: ${Z.binary.error}`;return(()=>{var Z=W("box"),X=W("text"),G=W("text"),Q=W("box"),f=W("text"),H=W("box"),B=W("text"),V=W("box"),j=W("text");return D(Z,X),D(Z,G),D(Z,Q),D(Z,H),D(Z,V),q(Z,"flexDirection","column"),q(Z,"gap",1),U(X,()=>F("settings.accounts.title")),q(G,"wrapMode","word"),U(G,()=>F("settings.accounts.hint")),D(Q,f),q(Q,"flexDirection","column"),q(Q,"gap",0),D(f,E0("claude-code")),U(Q,k(G0,{get when(){return J.claudeStatus()===null},get children(){var K=W("text");return U(K,()=>F("settings.accounts.checking")),y((L)=>q(K,"fg",z.textMuted,L)),K}}),null),U(Q,k(G0,{get when(){return J.claudeStatus()},children:(K)=>(()=>{var L=W("box"),A=W("text");return D(L,A),q(L,"flexDirection","column"),q(L,"gap",0),q(A,"wrapMode","word"),U(A,()=>Y(K())),U(L,()=>{let O=K().account;if(O.kind==="oauth"){let R=[O.organization,O.billingType].filter((x)=>!!x).join(" \xB7 ");return(()=>{var x=W("text");return q(x,"wrapMode","word"),U(x,()=>F("settings.accounts.loggedIn",{email:O.email}),null),U(x,R?` (${R})`:"",null),y((a)=>q(x,"fg",z.success,a)),x})()}return(()=>{var R=W("text");return U(R,()=>F("settings.accounts.notLoggedIn")),y((x)=>q(R,"fg",z.textMuted,x)),R})()},null),U(L,k(G0,{get when(){return K().accountError},children:(O)=>(()=>{var R=W("text");return q(R,"wrapMode","word"),U(R,()=>`! ${O()}`),y((x)=>q(R,"fg",z.warning,x)),R})()}),null),y((O)=>q(A,"fg",K().binary.found?z.textMuted:z.warning,O)),L})()}),null),D(H,B),q(H,"flexDirection","column"),q(H,"gap",0),D(B,E0("codex")),U(H,k(G0,{get when(){return J.codexStatus()===null},get children(){var K=W("text");return U(K,()=>F("settings.accounts.checking")),y((L)=>q(K,"fg",z.textMuted,L)),K}}),null),U(H,k(G0,{get when(){return J.codexStatus()},children:(K)=>(()=>{var L=W("box"),A=W("text");return D(L,A),q(L,"flexDirection","column"),q(L,"gap",0),q(A,"wrapMode","word"),U(A,()=>Y(K())),U(L,()=>{let O=K().account;if(O.kind==="chatgpt")return(()=>{var R=W("text");return q(R,"wrapMode","word"),U(R,()=>F("settings.accounts.chatgptLogin",{email:O.email}),null),U(R,(()=>{var x=u0(()=>!!O.plan);return()=>x()?` (${O.plan})`:""})(),null),y((x)=>q(R,"fg",z.success,x)),R})();if(O.kind==="apikey")return(()=>{var R=W("text");return U(R,()=>F("settings.accounts.apiKeyConfigured")),y((x)=>q(R,"fg",z.success,x)),R})();return(()=>{var R=W("text");return U(R,()=>F("settings.accounts.notLoggedIn")),y((x)=>q(R,"fg",z.textMuted,x)),R})()},null),U(L,k(G0,{get when(){return K().accountError},children:(O)=>(()=>{var R=W("text");return q(R,"wrapMode","word"),U(R,()=>`! ${O()}`),y((x)=>q(R,"fg",z.warning,x)),R})()}),null),y((O)=>q(A,"fg",K().binary.found?z.textMuted:z.warning,O)),L})()}),null),D(V,j),q(V,"flexDirection","column"),q(V,"gap",0),D(j,E0("copilot")),U(V,k(G0,{get when(){return J.copilotStatus()===null},get children(){var K=W("text");return U(K,()=>F("settings.accounts.checking")),y((L)=>q(K,"fg",z.textMuted,L)),K}}),null),U(V,k(G0,{get when(){return J.copilotStatus()},children:(K)=>(()=>{var L=W("box"),A=W("text");return D(L,A),q(L,"flexDirection","column"),q(L,"gap",0),q(A,"wrapMode","word"),U(A,()=>Y(K())),U(L,()=>{let O=K().account;if(O.kind==="token")return(()=>{var R=W("text");return U(R,()=>F("settings.accounts.tokenConfigured",{source:O.source})),y((x)=>q(R,"fg",z.success,x)),R})();if(O.kind==="oauth")return(()=>{var R=W("text");return U(R,()=>F("settings.accounts.copilotDetected")),y((x)=>q(R,"fg",z.success,x)),R})();return(()=>{var R=W("text");return U(R,()=>F("settings.accounts.notLoggedIn")),y((x)=>q(R,"fg",z.textMuted,x)),R})()},null),U(L,k(G0,{get when(){return K().accountError},children:(O)=>(()=>{var R=W("text");return q(R,"wrapMode","word"),U(R,()=>`! ${O()}`),y((x)=>q(R,"fg",z.warning,x)),R})()}),null),y((O)=>q(A,"fg",K().binary.found?z.textMuted:z.warning,O)),L})()}),null),y((K)=>{var L=z.text,A=s0.BOLD,O=z.textMuted,R=z.text,x=s0.BOLD,a=z.text,S=s0.BOLD,C=z.text,M=s0.BOLD;return L!==K.e&&(K.e=q(X,"fg",L,K.e)),A!==K.t&&(K.t=q(X,"attributes",A,K.t)),O!==K.a&&(K.a=q(G,"fg",O,K.a)),R!==K.o&&(K.o=q(f,"fg",R,K.o)),x!==K.i&&(K.i=q(f,"attributes",x,K.i)),a!==K.n&&(K.n=q(B,"fg",a,K.n)),S!==K.s&&(K.s=q(B,"attributes",S,K.s)),C!==K.h&&(K.h=q(j,"fg",C,K.h)),M!==K.r&&(K.r=q(j,"attributes",M,K.r)),K},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0}),Z})()}function YM(J){let{theme:z}=i0(),Y=()=>J.level()==="body",Z=()=>Y()&&J.bodyRow()===0,X=()=>Y()&&J.bodyRow()===1,G=()=>Y()&&J.bodyRow()===2,Q=(B)=>B?z.primary:z.textMuted,f=(B)=>B?s0.BOLD|s0.UNDERLINE:void 0,H;return r0(()=>{if(J.body()===""&&H&&H.plainText!=="")H.setText("")}),(()=>{var B=W("box"),V=W("text"),j=W("text"),K=W("box"),L=W("box"),A=W("text"),O=W("input"),R=W("box"),x=W("text"),a=W("textarea"),S=W("box"),C=W("text");return D(B,V),D(B,j),D(B,K),q(B,"flexDirection","column"),q(B,"gap",1),U(V,()=>F("settings.feedback.title")),q(j,"wrapMode","word"),U(j,()=>F("settings.feedback.hint")),D(K,L),D(K,R),D(K,S),q(K,"flexDirection","column"),q(K,"gap",1),D(L,A),D(L,O),q(L,"gap",0),U(A,()=>F("settings.feedback.titleLabel")),q(O,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(0)}),q(O,"onInput",(M)=>J.setTitle(DJ(M))),q(O,"onSubmit",()=>J.onTitleSubmit()),D(R,x),D(R,a),q(R,"gap",0),U(x,()=>F("settings.feedback.descriptionLabel")),nz((M)=>{H=M},a),q(a,"height",4),q(a,"wrapMode","word"),q(a,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(1)}),q(a,"onContentChange",()=>J.setBody(H?.plainText??"")),D(S,C),q(S,"flexDirection","row"),q(S,"paddingLeft",1),q(S,"paddingRight",1),q(S,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(2),J.submit()}),U(C,()=>F("settings.feedback.send")),U(B,k(G0,{get when(){return J.status()},get children(){var M=W("text");return q(M,"wrapMode","word"),U(M,()=>J.status()),y((I)=>q(M,"fg",J.status().startsWith("error:")?z.warning:z.success,I)),M}}),null),y((M)=>{var I=z.text,$=s0.BOLD,i=z.textMuted,e=Q(Z()),J0=f(Z()),T=J.title(),f0=F("settings.feedback.titlePlaceholder"),_=Z(),W0=Q(X()),R0=f(X()),V0=J.body(),t=F("settings.feedback.descriptionPlaceholder"),P=X(),N=G()?z.primary:z.backgroundElement,p=G()?z.selectedListItemText:z.accent,u=s0.BOLD;return I!==M.e&&(M.e=q(V,"fg",I,M.e)),$!==M.t&&(M.t=q(V,"attributes",$,M.t)),i!==M.a&&(M.a=q(j,"fg",i,M.a)),e!==M.o&&(M.o=q(A,"fg",e,M.o)),J0!==M.i&&(M.i=q(A,"attributes",J0,M.i)),T!==M.n&&(M.n=q(O,"value",T,M.n)),f0!==M.s&&(M.s=q(O,"placeholder",f0,M.s)),_!==M.h&&(M.h=q(O,"focused",_,M.h)),W0!==M.r&&(M.r=q(x,"fg",W0,M.r)),R0!==M.d&&(M.d=q(x,"attributes",R0,M.d)),V0!==M.l&&(M.l=q(a,"initialValue",V0,M.l)),t!==M.u&&(M.u=q(a,"placeholder",t,M.u)),P!==M.c&&(M.c=q(a,"focused",P,M.c)),N!==M.w&&(M.w=q(S,"backgroundColor",N,M.w)),p!==M.m&&(M.m=q(C,"fg",p,M.m)),u!==M.f&&(M.f=q(C,"attributes",u,M.f)),M},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0,w:void 0,m:void 0,f:void 0}),B})()}function ZM(J){let{theme:z}=i0(),Y=()=>J.level()==="body"&&J.bodyRow()===0,Z=()=>J.level()==="body"&&J.bodyRow()===1,X=()=>bQ(NQ(J.hasDaemon),"remote-projects"),G=()=>J.level()==="body"&&J.bodyRow()===X(),Q=()=>bQ(NQ(J.hasDaemon),"auto-status"),f=()=>J.level()==="body"&&J.bodyRow()===Q(),H=()=>bQ(NQ(J.hasDaemon),"dispatcher"),B=()=>J.level()==="body"&&J.bodyRow()===H();return(()=>{var V=W("box"),j=W("text"),K=W("text"),L=W("box"),A=W("text"),O=W("text"),R=W("box"),x=W("text"),a=W("text"),S=W("box"),C=W("text"),M=W("text"),I=W("box"),$=W("text"),i=W("text"),e=W("box"),J0=W("text");return D(V,j),D(V,K),D(V,L),D(V,O),D(V,R),q(V,"flexDirection","column"),q(V,"gap",1),U(j,()=>F("settings.dev.reset")),q(K,"wrapMode","word"),U(K,()=>F("settings.dev.resetHint")),D(L,A),q(L,"flexDirection","row"),q(L,"paddingLeft",1),q(L,"paddingRight",1),q(L,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(0),J.confirmReset()}),U(A,()=>F("settings.dev.resetButton")),U(V,k(G0,{get when(){return J.hasDaemon},get children(){var T=W("box"),f0=W("text"),_=W("text"),W0=W("box"),R0=W("text");return D(T,f0),D(T,_),D(T,W0),q(T,"flexDirection","column"),q(T,"gap",0),q(T,"paddingTop",1),U(f0,()=>F("settings.dev.restart")),q(_,"wrapMode","word"),U(_,()=>F("settings.dev.restartHint")),D(W0,R0),q(W0,"flexDirection","row"),q(W0,"paddingLeft",1),q(W0,"paddingRight",1),q(W0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(1),J.confirmRestartDaemon()}),U(R0,()=>F("settings.dev.restartButton")),y((V0)=>{var t=z.text,P=s0.BOLD,N=z.textMuted,p=Z()?z.primary:z.backgroundElement,u=Z()?z.selectedListItemText:z.accent,d=s0.BOLD;return t!==V0.e&&(V0.e=q(f0,"fg",t,V0.e)),P!==V0.t&&(V0.t=q(f0,"attributes",P,V0.t)),N!==V0.a&&(V0.a=q(_,"fg",N,V0.a)),p!==V0.o&&(V0.o=q(W0,"backgroundColor",p,V0.o)),u!==V0.i&&(V0.i=q(R0,"fg",u,V0.i)),d!==V0.n&&(V0.n=q(R0,"attributes",d,V0.n)),V0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),T}}),O),q(O,"wrapMode","word"),U(O,()=>F("settings.dev.doctorHint")),D(R,x),D(R,a),D(R,S),D(R,M),D(R,I),D(R,i),D(R,e),q(R,"flexDirection","column"),q(R,"gap",0),q(R,"paddingTop",1),U(x,()=>F("settings.dev.experimental")),q(a,"wrapMode","word"),U(a,()=>F("settings.dev.remoteHint")),D(S,C),q(S,"flexDirection","row"),q(S,"paddingLeft",1),q(S,"paddingRight",1),q(S,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(X()),J.toggleRemoteProjects()}),U(C,(()=>{var T=u0(()=>!!J.remoteProjectsEnabled());return()=>T()?F("settings.dev.remoteOn"):F("settings.dev.remoteOff")})()),q(M,"wrapMode","word"),U(M,()=>F("settings.dev.autoStatusHint")),D(I,$),q(I,"flexDirection","row"),q(I,"paddingLeft",1),q(I,"paddingRight",1),q(I,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(Q()),J.toggleAutoStatus()}),U($,(()=>{var T=u0(()=>!!J.autoStatusEnabled());return()=>T()?F("settings.dev.autoStatusOn"):F("settings.dev.autoStatusOff")})()),q(i,"wrapMode","word"),U(i,()=>F("settings.dev.dispatcherHint")),D(e,J0),q(e,"flexDirection","row"),q(e,"paddingLeft",1),q(e,"paddingRight",1),q(e,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(H()),J.toggleDispatcher()}),U(J0,(()=>{var T=u0(()=>!!J.dispatcherEnabled());return()=>T()?F("settings.dev.dispatcherOn"):F("settings.dev.dispatcherOff")})()),y((T)=>{var f0=z.text,_=s0.BOLD,W0=z.textMuted,R0=Y()?z.primary:z.backgroundElement,V0=Y()?z.selectedListItemText:z.warning,t=s0.BOLD,P=z.textMuted,N=z.text,p=s0.BOLD,u=z.textMuted,d=G()?z.primary:z.backgroundElement,o=G()?z.selectedListItemText:z.text,Q0=J.remoteProjectsEnabled()?s0.BOLD:void 0,g0=z.textMuted,P0=f()?z.primary:z.backgroundElement,N0=f()?z.selectedListItemText:z.text,k0=J.autoStatusEnabled()?s0.BOLD:void 0,x0=z.textMuted,v=B()?z.primary:z.backgroundElement,b0=B()?z.selectedListItemText:z.text,X0=J.dispatcherEnabled()?s0.BOLD:void 0;return f0!==T.e&&(T.e=q(j,"fg",f0,T.e)),_!==T.t&&(T.t=q(j,"attributes",_,T.t)),W0!==T.a&&(T.a=q(K,"fg",W0,T.a)),R0!==T.o&&(T.o=q(L,"backgroundColor",R0,T.o)),V0!==T.i&&(T.i=q(A,"fg",V0,T.i)),t!==T.n&&(T.n=q(A,"attributes",t,T.n)),P!==T.s&&(T.s=q(O,"fg",P,T.s)),N!==T.h&&(T.h=q(x,"fg",N,T.h)),p!==T.r&&(T.r=q(x,"attributes",p,T.r)),u!==T.d&&(T.d=q(a,"fg",u,T.d)),d!==T.l&&(T.l=q(S,"backgroundColor",d,T.l)),o!==T.u&&(T.u=q(C,"fg",o,T.u)),Q0!==T.c&&(T.c=q(C,"attributes",Q0,T.c)),g0!==T.w&&(T.w=q(M,"fg",g0,T.w)),P0!==T.m&&(T.m=q(I,"backgroundColor",P0,T.m)),N0!==T.f&&(T.f=q($,"fg",N0,T.f)),k0!==T.y&&(T.y=q($,"attributes",k0,T.y)),x0!==T.g&&(T.g=q(i,"fg",x0,T.g)),v!==T.p&&(T.p=q(e,"backgroundColor",v,T.p)),b0!==T.b&&(T.b=q(J0,"fg",b0,T.b)),X0!==T.T&&(T.T=q(J0,"attributes",X0,T.T)),T},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0,w:void 0,m:void 0,f:void 0,y:void 0,g:void 0,p:void 0,b:void 0,T:void 0}),V})()}function XM(){let{theme:J}=i0(),z=O3(),Y=Object.keys(fB).sort();return(()=>{var Z=W("box"),X=W("text"),G=W("text"),Q=W("box"),f=W("text"),H=W("text"),B=W("text"),V=W("text");return D(Z,X),D(Z,G),D(Z,Q),D(Z,B),D(Z,V),q(Z,"flexDirection","column"),q(Z,"gap",1),U(X,()=>F("settings.keybindings.title")),q(G,"wrapMode","word"),U(G,()=>F("settings.keybindings.hint")),D(Q,f),D(Q,H),q(Q,"flexDirection","column"),q(Q,"gap",0),U(f,()=>F("settings.keybindings.configFile")),q(H,"wrapMode","word"),U(H,()=>z.path,null),U(H,(()=>{var j=u0(()=>!!z.exists);return()=>j()?"":F("settings.keybindings.notCreated")})(),null),U(Z,k(G0,{get when(){return!z.exists},get children(){var j=W("box"),K=W("text"),L=W("text"),A=W("text"),O=W("text"),R=W("text"),x=W("text"),a=W("text"),S=W("text"),C=W("text"),M=W("text");return D(j,K),D(j,L),D(j,A),D(j,O),D(j,R),D(j,x),D(j,a),D(j,S),D(j,C),D(j,M),q(j,"flexDirection","column"),q(j,"gap",0),U(K,()=>F("settings.keybindings.example")),D(L,E0("bindings:")),D(A,E0(" chat.fork.new: ctrl+g # string = one chord")),D(O,E0(" sidebar.select: [enter] # list = several chords")),D(R,E0(" files.createPR: null # null = unbind")),D(x,E0(" tmux.tab.new: ctrl+y # tmux session key (see below)")),D(a,E0(" tmux.layout.workspaceSplit: g # prefix g")),D(S,E0("darwin: # platform overlay (also: linux)")),D(C,E0(" bindings:")),D(M,E0(" palette.open: [cmd+p, ctrl+p]")),y((I)=>{var $=J.text,i=s0.BOLD,e=J.textMuted,J0=J.textMuted,T=J.textMuted,f0=J.textMuted,_=J.textMuted,W0=J.textMuted,R0=J.textMuted,V0=J.textMuted,t=J.textMuted;return $!==I.e&&(I.e=q(K,"fg",$,I.e)),i!==I.t&&(I.t=q(K,"attributes",i,I.t)),e!==I.a&&(I.a=q(L,"fg",e,I.a)),J0!==I.o&&(I.o=q(A,"fg",J0,I.o)),T!==I.i&&(I.i=q(O,"fg",T,I.i)),f0!==I.n&&(I.n=q(R,"fg",f0,I.n)),_!==I.s&&(I.s=q(x,"fg",_,I.s)),W0!==I.h&&(I.h=q(a,"fg",W0,I.h)),R0!==I.r&&(I.r=q(S,"fg",R0,I.r)),V0!==I.d&&(I.d=q(C,"fg",V0,I.d)),t!==I.l&&(I.l=q(M,"fg",t,I.l)),I},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0}),j}}),B),U(Z,k(G0,{get when(){return z.exists},get children(){var j=W("box"),K=W("text");return D(j,K),q(j,"flexDirection","column"),q(j,"gap",0),U(K,()=>F("settings.keybindings.overridesApplied")),U(j,k(G0,{get when(){return z.applied.length===0},get children(){var L=W("text");return U(L,()=>F("settings.keybindings.none")),y((A)=>q(L,"fg",J.textMuted,A)),L}}),null),U(j,k(X1,{get each(){return z.applied},children:(L)=>(()=>{var A=W("text");return q(A,"wrapMode","word"),U(A,()=>`${L.id} \u2192 ${L.keys.length>0?L.keys.join(" / "):"(unbound)"} (default: ${L.defaultKeys.join(" / ")})`),y((O)=>q(A,"fg",J.text,O)),A})()}),null),y((L)=>{var A=J.text,O=s0.BOLD;return A!==L.e&&(L.e=q(K,"fg",A,L.e)),O!==L.t&&(L.t=q(K,"attributes",O,L.t)),L},{e:void 0,t:void 0}),j}}),B),U(Z,k(G0,{get when(){return z.warnings.length>0},get children(){var j=W("box"),K=W("text");return D(j,K),q(j,"flexDirection","column"),q(j,"gap",0),U(K,()=>F("settings.keybindings.warnings")),U(j,k(X1,{get each(){return z.warnings},children:(L)=>(()=>{var A=W("text");return q(A,"wrapMode","word"),U(A,`! ${L}`),y((O)=>q(A,"fg",J.warning,O)),A})()}),null),y((L)=>{var A=J.warning,O=s0.BOLD;return A!==L.e&&(L.e=q(K,"fg",A,L.e)),O!==L.t&&(L.t=q(K,"attributes",O,L.t)),L},{e:void 0,t:void 0}),j}}),B),D(B,E0("tmux session keys use the same file: tmux.tab.new (ctrl+t), tmux.tab.prev/next (ctrl+[/]), tmux.tab.close (ctrl+w), tmux.tab.rename (f2), tmux.tab.chooseEngine (ctrl+shift+t), tmux.detach (ctrl+q), tmux.focus (4 chords, left/down/up/right), and prefix layout keys: workspaceSplit (s), workspaceClose (x), workspaceReset (r), tasksToggle (a), opsToggle (o), terminalToggle (z). They apply when a session is (re)built.")),q(B,"wrapMode","word"),q(V,"wrapMode","word"),U(V,()=>`Fixed (not rebindable): ${Y.join(", ")}.`),y((j)=>{var K=J.text,L=s0.BOLD,A=J.textMuted,O=J.text,R=s0.BOLD,x=J.textMuted,a=J.textMuted,S=J.textMuted;return K!==j.e&&(j.e=q(X,"fg",K,j.e)),L!==j.t&&(j.t=q(X,"attributes",L,j.t)),A!==j.a&&(j.a=q(G,"fg",A,j.a)),O!==j.o&&(j.o=q(f,"fg",O,j.o)),R!==j.i&&(j.i=q(f,"attributes",R,j.i)),x!==j.n&&(j.n=q(H,"fg",x,j.n)),a!==j.s&&(j.s=q(B,"fg",a,j.s)),S!==j.h&&(j.h=q(V,"fg",S,j.h)),j},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0}),Z})()}var GM=b(()=>{w();w();w();w();w();w();w();w();w();W1();h9();m1();GJ();aX();nq();_X();zW()});import{TextAttributes as Mx}from"@opentui/core";function Fx(J){return J.split(/[-_]+/).filter((z)=>z.length>0).map((z)=>z.charAt(0).toUpperCase()+z.slice(1)).join(" ")}function mZ(J){let z=d1(),Y=i0(),Z=HJ(),{theme:X}=Y,[G,Q]=r("sidebar"),[f,H]=r("general"),[B,V]=r(0),[j,K]=r(0),[L,A]=r(""),[O,R]=r(""),[x,a]=r(""),S=U0(()=>Y.all().slice().sort()),[,C]=r(Math.max(0,S().findIndex((h)=>h===Y.selected))),M=p3(J.orchestrator),[I,$]=r(null),[i,e]=r(null),[J0,T]=r(null),f0=!1;r0(()=>{if(f()!=="accounts"||f0)return;f0=!0,eQ().then($),Jq().then(e),zq().then(T)});function _(){return s3(f(),{themeNames:S(),focusAccentSlots:EZ,engineList:v0(),hasDaemon:M})}function W0(){return _().length}function R0(){return SZ(J.kv.get(fY,kZ))}function V0(h){if(Y.selected===h)return;if(!Y.set(h))return;J.kv.set("activeTheme",h),J.onVisualPrefsChange?.()}function t(){return F9()}function P(h){if(F9()===h)return;LQ(h),J.kv.set(CH,h),J.onVisualPrefsChange?.()}function N(h){if(Y.transparentBackground===h)return;Y.setTransparentBackground(h),J.kv.set("transparentBackground",h),J.onVisualPrefsChange?.()}function p(){N(!Y.transparentBackground)}function u(h){if(Y.focusAccent===h)return;Y.setFocusAccent(h),J.kv.set("focusAccent",h),J.onVisualPrefsChange?.()}function d(h){J.kv.set(fY,h)}function o(){return J.kv.get("notifications.toast.enabled",!0)!==!1}function Q0(){return J.kv.get("notifications.sound.enabled",!0)!==!1}function g0(){J.kv.set("notifications.toast.enabled",!o())}function P0(){J.kv.set("notifications.sound.enabled",!Q0())}function N0(){return J.kv.get(Zf,!0)!==!1}function k0(){J.kv.set(Zf,!N0())}function x0(){return J.kv.get("experimental.remoteProjects",!1)===!0}function v(){J.kv.set("experimental.remoteProjects",!x0())}function b0(){return J.kv.get(WZ,!1)===!0}function X0(){J.kv.set(WZ,!b0())}function L0(){return J.kv.get(VZ,!1)===!0}function a0(){J.kv.set(VZ,!L0())}function e0(){let h=J.kv.get("customEngineIds",[]);return Array.isArray(h)?h.filter((A0)=>typeof A0==="string"&&A0.trim().length>0):[]}function v0(){return[...l1,...e0()]}function _0(h){let A0=J.kv.get(Dz(h),"");return typeof A0==="string"?A0.trim():""}function R1(h){return _0(h)||NG(h).join(" ")}function s(h){return qJ(h)&&_0(h).length===0&&!I0(h)}function K0(h){let A0=J.kv.get(Lz(h),"");return typeof A0==="string"?A0.trim():""}function I0(h){return K0(h).length>0}function m0(h){return K0(h)||QB[h]||h}let[Q1,w0]=r(xJ(C1("lastSelectedVendor"),e0()));function q1(h){return Q1()===h}function g1(h){s1("lastSelectedVendor",h),J.kv.set("lastSelectedVendor",h),w0(h)}async function z1(h){let A0=await UY.show(z,R1(h),{dialogTitle:`${m0(h)} launch command`,fieldLabel:"command",submitLabel:"save",allowEmpty:!0});if(A0===void 0)return;J.kv.set(Dz(h),A0.trim())}async function z0(h){let A0=await UY.show(z,m0(h),{dialogTitle:`${m0(h)} display name (blank = default)`,fieldLabel:"name",submitLabel:"save",allowEmpty:!0});if(A0===void 0)return;J.kv.set(Lz(h),A0.trim())}function Z0(h){if(J.kv.set(Dz(h),""),J.kv.set(Lz(h),""),!qJ(h))J.kv.set("customEngineIds",e0().filter((A0)=>A0!==h)),K((A0)=>Math.max(0,Math.min(A0,v0().length)))}async function j0(){let h=await UY.show(z,"",{dialogTitle:"Add engine",fieldLabel:"id",submitLabel:"next",placeholder:"lowercase slug, e.g. aider"});if(h===void 0)return;let A0=h.trim().toLowerCase();if(!A0||qJ(A0)||e0().includes(A0))return;let j1=await UY.show(z,"",{dialogTitle:`Add engine \xB7 ${A0}`,fieldLabel:"command",submitLabel:"next",placeholder:"e.g. aider --model sonnet"});if(j1===void 0)return;let O1=await UY.show(z,A0,{dialogTitle:`Add engine \xB7 ${A0}`,fieldLabel:"name",submitLabel:"add",allowEmpty:!0});if(J.kv.set("customEngineIds",[...e0(),A0]),j1.trim())J.kv.set(Dz(A0),j1.trim());let b1=O1?.trim()??"";J.kv.set(Lz(A0),b1&&b1!==A0?b1:Fx(A0))}function g(){if(f()!=="engines"||G()!=="body")return null;let h=xH(_(),j());return h?.kind==="engine"?h.vendor:null}function q0(){return NX(J.kv.get(qY,If))}function T0(){let h=bZ.indexOf(q0()),A0=bZ[(h+1)%bZ.length];if(A0)J.kv.set(qY,A0)}function M0(){let h=J.kv.get(PY,"");return typeof h==="string"?h:""}async function O0(){let h=await UY.show(z,M0(),{dialogTitle:"Custom editor command (use {file} for the path)",fieldLabel:"command",submitLabel:"save",allowEmpty:!0});if(h===void 0)return;let A0=h.trim();if(J.kv.set(PY,A0),A0)J.kv.set(qY,"custom")}async function D0(){a("submitting...");try{let h=hX({title:L(),body:O()});a(`sent: ${h.url}`),A(""),R(""),K(0)}catch(h){a(`error: ${h instanceof Error?h.message:String(h)}`)}}let B0=()=>f()==="feedback"&&G()==="body";function t0(h){let A0=j()+h;if(A0<0||A0>2){Q("sidebar");return}K(A0)}function Y1(){if(G()!=="sidebar"||W0()===0)return;if(Q("body"),K(0),f()==="general")C(0)}function o0(h){if(G()==="sidebar"){let O1=(B()+h+vZ.length)%vZ.length;V(O1);let b1=vZ[O1];if(b1)H(b1.id),K(0);return}let A0=W0();if(A0===0)return;let j1=(j()+h+A0)%A0;if(K(j1),xH(_(),j1)?.kind==="theme")C(j1)}function H1(h){H(h),V(vZ.findIndex((A0)=>A0.id===h)),K(0),Q("sidebar")}let u1={theme:(h)=>V0(h.name),language:(h)=>P(h.locale),transparent:()=>p(),focusAccent:(h)=>u(h.slot),toast:()=>g0(),sound:()=>P0(),zenKeepTasks:()=>k0(),surface:(h)=>d(h.surface),editorKind:()=>T0(),editorCustom:()=>void O0(),engine:(h)=>void z1(h.vendor),engineAdd:()=>void j0(),feedbackTitle:()=>K(0),feedbackBody:()=>K(1),feedbackSend:()=>void D0(),devReset:()=>void o9(z,J.kv,Z),devRestartDaemon:()=>void s9(z,J.orchestrator,Z),devRemoteProjects:()=>v(),devAutoStatus:()=>X0(),devDispatcher:()=>a0()};function S0(){let h=xH(_(),j());if(!h)return;u1[h.kind](h)}return D1(()=>({enabled:(!J.standalone||z.stack.length===0)&&!B0(),bindings:[{key:"down",cmd:()=>o0(1)},{key:"up",cmd:()=>o0(-1)},{key:"j",cmd:()=>o0(1)},{key:"k",cmd:()=>o0(-1)},{key:"tab",cmd:()=>o0(1)},{key:"right",cmd:Y1},{key:"l",cmd:Y1},{key:"left",cmd:()=>Q("sidebar")},{key:"h",cmd:()=>Q("sidebar")},{key:"return",cmd:()=>{if(G()==="sidebar"){Y1();return}S0()}},{key:"t",cmd:p},{key:"r",cmd:()=>{let h=g();if(h)z0(h)}},{key:"x",cmd:()=>{let h=g();if(h)Z0(h)}},{key:"d",cmd:()=>{let h=g();if(h)g1(h)}}]})),D1(()=>({enabled:B0(),bindings:[{key:"tab",cmd:()=>t0(1)},{key:"shift+tab",cmd:()=>t0(-1)}]})),D1(()=>({enabled:B0()&&j()===2,bindings:[{key:"return",cmd:()=>void D0()}]})),(()=>{var h=W("box"),A0=W("box"),j1=W("text"),O1=W("text"),b1=W("box"),m=W("box"),y0=W("box"),Y0=W("text");return D(h,A0),D(h,b1),D(h,y0),q(h,"paddingLeft",2),q(h,"paddingRight",2),q(h,"paddingBottom",1),q(h,"gap",1),D(A0,j1),D(A0,O1),q(A0,"flexDirection","row"),q(A0,"justifyContent","space-between"),U(j1,()=>F("settings.title")),q(O1,"onMouseUp",()=>J.onClose()),U(O1,()=>F("settings.esc")),D(b1,m),q(b1,"flexDirection","row"),q(b1,"gap",2),U(b1,k(t3,{level:G,cursor:B,switchSection:H1}),m),q(m,"flexGrow",1),q(m,"flexShrink",1),q(m,"flexDirection","column"),q(m,"gap",1),U(m,k(G0,{get when(){return f()==="general"},get children(){return k(e3,{level:G,bodyRow:j,setLevel:Q,setBodyRow:K,themeNames:S,setThemeCursor:C,selectTheme:V0,currentLocale:t,selectLanguage:P,toggleTransparent:p,selectFocusAccent:u,toastEnabled:o,soundEnabled:Q0,toggleToast:g0,toggleSound:P0,zenKeepsTasks:N0,toggleZenKeepsTasks:k0,settingsSurface:R0,selectSurface:d,editorKind:q0,cycleEditorKind:T0,editorCustomCommand:M0,editEditorCustom:()=>void O0()})}}),null),U(m,k(G0,{get when(){return f()==="engines"},get children(){return k(JM,{level:G,bodyRow:j,setLevel:Q,setBodyRow:K,get vendors(){return v0()},isCustom:(F0)=>!qJ(F0),displayName:m0,commandText:R1,isDefault:s,isDefaultEngine:q1,editEngine:(F0)=>void z1(F0),renameEngine:(F0)=>void z0(F0),resetEngine:Z0,onAddEngine:()=>void j0()})}}),null),U(m,k(G0,{get when(){return f()==="accounts"},get children(){return k(zM,{claudeStatus:I,codexStatus:i,copilotStatus:J0})}}),null),U(m,k(G0,{get when(){return f()==="keys"},get children(){return k(XM,{})}}),null),U(m,k(G0,{get when(){return f()==="feedback"},get children(){return k(YM,{level:G,bodyRow:j,setLevel:Q,setBodyRow:K,title:L,setTitle:(F0)=>{A(F0),a("")},body:O,setBody:(F0)=>{R(F0),a("")},status:x,onTitleSubmit:()=>K(1),submit:()=>void D0()})}}),null),U(m,k(G0,{get when(){return f()==="dev"},get children(){return k(ZM,{level:G,bodyRow:j,setLevel:Q,setBodyRow:K,hasDaemon:M,confirmReset:()=>void o9(z,J.kv,Z),confirmRestartDaemon:()=>void s9(z,J.orchestrator,Z),remoteProjectsEnabled:x0,toggleRemoteProjects:v,autoStatusEnabled:b0,toggleAutoStatus:X0,dispatcherEnabled:L0,toggleDispatcher:a0})}}),null),D(y0,Y0),q(y0,"paddingTop",0),U(Y0,(()=>{var F0=u0(()=>!!B0());return()=>F0()?F("settings.nav.feedback"):F("settings.nav.default")})()),y((F0)=>{var c1=Mx.BOLD,LJ=X.text,QJ=X.textMuted,iJ=X.textMuted;return c1!==F0.e&&(F0.e=q(j1,"attributes",c1,F0.e)),LJ!==F0.t&&(F0.t=q(j1,"fg",LJ,F0.t)),QJ!==F0.a&&(F0.a=q(O1,"fg",QJ,F0.a)),iJ!==F0.o&&(F0.o=q(Y0,"fg",iJ,F0.o)),F0},{e:void 0,t:void 0,a:void 0,o:void 0}),h})()}var YW=b(()=>{w();w();w();w();w();w();w();w();W1();ZZ();sJ();rf();CG();Pq();A1();KB();$1();m1();GJ();Tf();yJ();c9();nJ();p9();o3();zW();GM();mZ.show=(J,z,Y)=>{let Z=!1;return new Promise((X)=>{J.replace(()=>k(mZ,{kv:z,orchestrator:Y,onVisualPrefsChange:()=>{Z=!0},onClose:()=>X({visualPrefsChanged:Z})}),()=>X({visualPrefsChanged:Z}))})}});import{TextAttributes as Ox}from"@opentui/core";function qM(){let{theme:J}=i0(),z=dz(),Y=RH(),Z=()=>Y.toasts().slice(-QM),X=()=>Math.max(0,z().width-Ax-Rx),G=()=>Math.max(0,z().height-gx-QM-1);return k(G0,{get when(){return Y.toasts().length>0},get children(){var Q=W("box");return q(Q,"position","absolute"),q(Q,"zIndex",2500),q(Q,"width",40),q(Q,"flexDirection","column"),q(Q,"gap",0),U(Q,k(X1,{get each(){return Z()},children:(f)=>{let H=()=>f.kind==="needs_input"?J.warning:f.kind==="error"?J.error:J.success,B=()=>J.selectedListItemText,V=()=>f.kind==="needs_input"?"?":f.kind==="error"?"\u2715":"\u2713";return(()=>{var j=W("box"),K=W("text"),L=W("text");return D(j,K),D(j,L),q(j,"flexDirection","row"),q(j,"gap",1),q(j,"paddingLeft",1),q(j,"paddingRight",1),q(j,"onMouseUp",()=>Y.dismiss(f.id)),q(K,"wrapMode","none"),U(K,V),q(L,"wrapMode","none"),U(L,()=>f.title),y((A)=>{var O=H(),R=B(),x=Ox.BOLD,a=B();return O!==A.e&&(A.e=q(j,"backgroundColor",O,A.e)),R!==A.t&&(A.t=q(K,"fg",R,A.t)),x!==A.a&&(A.a=q(K,"attributes",x,A.a)),a!==A.o&&(A.o=q(L,"fg",a,A.o)),A},{e:void 0,t:void 0,a:void 0,o:void 0}),j})()}})),y((f)=>{var H=X(),B=G();return H!==f.e&&(f.e=q(Q,"left",H,f.e)),B!==f.t&&(f.t=q(Q,"top",B,f.t)),f},{e:void 0,t:void 0}),Q}})}var QM=4,Ax=40,Rx=2,gx=2;var fM=b(()=>{w();w();w();w();w();w();w();W1();gH();m1()});import{TextAttributes as Cx}from"@opentui/core";function Nx(J,z){let Y=J?`v${J}`:F("update.skew.olderBuild");return F("update.skew.hint",{daemon:Y,clientVersion:z})}function HM(J){let{theme:z}=i0(),Y=()=>Math.max(4,J.width()-2);return k(G0,{get when(){return J.stale()},get children(){var Z=W("box"),X=W("text"),G=W("box"),Q=W("text"),f=W("box"),H=W("text");return D(Z,X),D(Z,G),D(Z,f),q(Z,"flexDirection","column"),q(Z,"flexShrink",0),q(Z,"paddingLeft",1),q(Z,"paddingRight",1),q(Z,"paddingBottom",1),q(X,"wrapMode","none"),U(X,()=>"\u2594".repeat(Y())),D(G,Q),q(G,"flexDirection","row"),q(G,"gap",1),q(Q,"wrapMode","none"),U(Q,()=>F("update.skew.title")),D(f,H),q(f,"flexDirection","row"),q(f,"gap",1),q(H,"wrapMode","word"),U(H,()=>Nx(J.daemonVersion(),J.clientVersion)),y((B)=>{var{warning:V,warning:j}=z,K=Cx.BOLD,L=z.text;return V!==B.e&&(B.e=q(X,"fg",V,B.e)),j!==B.t&&(B.t=q(Q,"fg",j,B.t)),K!==B.a&&(B.a=q(Q,"attributes",K,B.a)),L!==B.o&&(B.o=q(H,"fg",L,B.o)),B},{e:void 0,t:void 0,a:void 0,o:void 0}),Z}})}var BM=b(()=>{w();w();w();w();w();w();W1();m1();GJ()});function jM(J,z){return J.find((Y)=>Y.id!==z&&!Y.archived)}async function bx(J){let z=J.tasks.find((G)=>G.id===J.taskId);if(!z)return null;let Y=!z.archived;try{await J.orch.setArchived(J.taskId,Y)}catch(G){return J.logger.error(`${J.logPrefix} archive failed:`,G),null}if(!Y)return{archived:Y};let Z=N1(J.taskId),X=jM(J.tasks,J.taskId);if(await hz(Z,X?N1(X.id):void 0).catch((G)=>{J.logger.error(`${J.logPrefix} switch-client failed:`,G)}),J.updateActiveTask)await J.orch.setActiveTask(X?.id??null).catch(()=>{});return await eJ(Z).catch((G)=>{J.logger.error(`${J.logPrefix} kill tmux session failed:`,G)}),{archived:Y,nextTask:X}}async function kx(J){let z=jM(J.tasks,J.taskId),Y=N1(J.taskId);if(J.switchBeforeKill)await hz(Y,z?N1(z.id):void 0).catch((Z)=>{J.logger.error(`${J.logPrefix} switch-client failed:`,Z)});if(J.updateActiveTask)await J.orch?.setActiveTask(z?.id??null).catch(()=>{});return await eJ(Y).catch((Z)=>{J.logger.error(`${J.logPrefix} kill tmux session failed:`,Z)}),{nextTask:z}}async function WM(J,z){if(!J.orch)return;let Y=J.tasks().find((X)=>X.id===z);if(!Y)return;if(!Y.archived){if(!await J.confirm({title:`Archive "${Y.title}"?`,body:"Moves it to Archives and stops its running session. The worktree, branch, and chat history stay \u2014 unarchive to bring it back.",cancelLabel:"cancel",confirmLabel:"archive"}))return}if(!await bx({orch:J.orch,tasks:J.tasks(),taskId:z,logger:J.logger,logPrefix:J.logPrefix,updateActiveTask:J.updateActiveTask}))return;await J.reload?.()}async function VM(J,z){if(!J.orch)return;let Y=J.tasks().find((Q)=>Q.id===z);if(!Y)return;if(Y.kind==="main"){if(!await J.confirm({title:`Remove project "${Y.title}"?`,body:"Forgets it from the projects list. The repo, its branches, worktrees, and any tasks under it stay on disk \u2014 re-add it with `kobe add`.",cancelLabel:"cancel",confirmLabel:"remove"}))return;try{await J.orch.forgetProject(Y.repo)}catch(f){J.logger.error(`${J.logPrefix} forget project failed:`,f),J.notifyError?.(`Couldn't remove: ${f instanceof Error?f.message:String(f)}`);return}await J.reload?.();return}if(!await J.confirm({title:`Delete "${Y.title}"?`,body:"Removes the task entry and its worktree. The tmux session (if any) is killed.",cancelLabel:"cancel",confirmLabel:"delete"}))return;let X=!1;try{await J.orch.deleteTask(z),X=!0}catch(Q){if((Q instanceof Error?Q.message:String(Q)).includes(t8)){if(await J.confirm({title:`"${Y.title}" has uncommitted changes`,body:"Its worktree has uncommitted or untracked work that will be permanently deleted. Force delete anyway?",cancelLabel:"cancel",confirmLabel:"force delete"}))try{await J.orch.deleteTask(z,{force:!0}),X=!0}catch(B){J.logger.error(`${J.logPrefix} force delete failed:`,B),J.notifyError?.(`Couldn't delete: ${B instanceof Error?B.message:String(B)}`)}}else J.logger.error(`${J.logPrefix} delete failed:`,Q),J.notifyError?.(`Couldn't delete: ${Q instanceof Error?Q.message:String(Q)}`)}if(!X)return;let{nextTask:G}=await kx({orch:J.orch,tasks:J.tasks(),taskId:z,logger:J.logger,logPrefix:J.logPrefix,switchBeforeKill:J.switchBeforeKill,updateActiveTask:J.updateActiveTask});await J.reload?.(),J.onTaskDeleted?.(z,G)}async function KM(J,z){let Y=J.tasks().find((X)=>X.id===z);if(!Y)return;let Z=await J.promptText(Y.title);if(!Z||!J.orch)return;try{await J.orch.setTitle(z,Z)}catch(X){J.logger.error(`${J.logPrefix} task.rename failed:`,X),J.notifyError?.(`Couldn't rename task: ${X instanceof Error?X.message:String(X)}`);return}await J.reload?.()}async function UM(J,z){let Y=J.tasks().find((X)=>X.id===z);if(!Y||Y.kind==="main")return;let Z=await J.promptText(Y.branch,{dialogTitle:"Rename branch",fieldLabel:"branch"});if(!Z||!J.orch)return;try{await J.orch.setBranch(z,Z)}catch(X){J.logger.error(`${J.logPrefix} task.setBranch failed:`,X),J.notifyError?.(`Couldn't rename branch: ${X instanceof Error?X.message:String(X)}`);return}await J.reload?.()}async function DM(J,z){let Y=J.tasks().find((G)=>G.id===z);if(!Y||!J.orch)return;let Z=await zY(),X=MY(Z,Y.vendor??_1);try{await J.orch.setVendor(z,X)}catch(G){J.logger.error(`${J.logPrefix} task.setVendor failed:`,G),J.notifyError?.(`Couldn't switch engine: ${G instanceof Error?G.message:String(G)}`);return}J.notifyInfo?.(`Engine \u2192 ${KZ(X)} (applies on reopen)`),await J.reload?.()}async function LM(J){let z=gJ(),Y=J.cursorRepo()??z[0]??process.cwd();if(J.openCreateSurface&&await J.openCreateSurface(Y))return;let Z=J.lastVendor()??_1,X=await zY();if(X.length===0)J.notifyInfo?.("No engine CLI detected \u2014 install claude or codex, or add one in Settings \u2192 Engines");let G=J.orch,Q=await J.promptNewTask(Y,z,{defaultVendor:Z,availableVendors:X,discoverAdoptable:G?(H)=>G.discoverAdoptableWorktrees(H):void 0});if(!Q)return;if(J.rememberVendor(Q.vendor),oz(Q.repo),J.onRepoSaved?.(),!G){J.logger.error(`${J.logPrefix} no daemon; cannot create task`);return}J.notifyInfo?.("Creating task\u2026");let f;if(Q.mode==="adopt"){let H=Q.adopt.length,B=0,V;for(let j of Q.adopt)try{f=(await G.adoptWorktree({repo:Q.repo,worktreePath:j.worktreePath,branch:j.branch,vendor:Q.vendor})).id,B++}catch(K){if(V===void 0)V=K instanceof Error?K.message:String(K);J.logger.error(`${J.logPrefix} adoptWorktree failed for ${j.worktreePath}:`,K)}if(B===0){J.notifyError?.(F("newTask.adopt.summaryNone",{error:V??""}));return}if(B<H)J.notifyInfo?.(F("newTask.adopt.summaryPartial",{done:B,total:H}));else J.notifyInfo?.(F("newTask.adopt.summaryAll",{count:B}))}else try{f=(await G.createTask({repo:Q.repo,baseRef:Q.baseRef,vendor:Q.vendor})).id}catch(H){J.logger.error(`${J.logPrefix} task.create failed:`,H),J.notifyError?.(`Couldn't create task: ${H instanceof Error?H.message:String(H)}`);return}if(await J.reload?.(),f)J.selectTask?.(f),await J.enterTask?.(f)}var MM=b(()=>{ZZ();sJ();zB();A1();GJ();rJ();$1();YJ()});function tX(J,z){if(z<=0)return"";let Y=[...J];if(Y.length<=z)return J;return`${Y.slice(0,Math.max(0,z-1)).join("")}\u2026`}function uH(J,z){if(z<=0)return"";let Y=[...J];if(Y.length<=z)return J;return`\u2026${Y.slice(Y.length-Math.max(0,z-1)).join("")}`}import{spawn as Sx}from"child_process";import{existsSync as Ix}from"fs";import{basename as Tx,delimiter as yx,isAbsolute as xx,join as ux}from"path";function ZW(J,z,Y){if(xx(J))return Y(J);let Z=z.PATH??"";for(let X of Z.split(yx)){if(!X)continue;if(Y(ux(X,J)))return!0}return!1}function Px(J){let z=Tx(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 FM(J={}){let z=J.env??process.env,Y=J.platform??process.platform,Z=J.exists??Ix,X=z.KOBE_OPEN_EDITOR?.trim();if(X)return{id:"env",label:Px(X),command:X,args:[]};for(let G of Ex)if(ZW(G.command,z,Z))return{id:G.id,label:G.label,command:G.command,args:[]};if(Y==="darwin"&&ZW("open",z,Z)){for(let G of wx)if(G.paths.some((Q)=>Z(Q)))return{id:G.id,label:G.label,command:"open",args:["-a",G.appName]};return{id:"mac-open",label:"Finder",command:"open",args:[]}}if(Y==="linux"&&ZW("xdg-open",z,Z))return{id:"xdg-open",label:"Open",command:"xdg-open",args:[]};return null}function hx(J,z){return[z.command,[...z.args,J]]}function OM(J,z,Y={}){if(!J)return!1;let Z=Y.spawn??Sx,[X,G]=hx(J,z);try{let Q=Z(X,G,{detached:!0,stdio:"ignore"});if(Q.pid===void 0)return!1;return Q.unref(),!0}catch{return!1}}var Ex,wx;var AM=b(()=>{Ex=[{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"}],wx=[{id:"vscode.app",label:"VS Code",appName:"Visual Studio Code",paths:["/Applications/Visual Studio Code.app"]},{id:"cursor.app",label:"Cursor",appName:"Cursor",paths:["/Applications/Cursor.app","/System/Applications/Cursor.app"]},{id:"windsurf.app",label:"Windsurf",appName:"Windsurf",paths:["/Applications/Windsurf.app"]},{id:"zed.app",label:"Zed",appName:"Zed",paths:["/Applications/Zed.app"]}]});function EH(J){let z=new Map;function Y(Z){let X=z.get(Z);if(!X){let[G,Q]=r(J.initial,J.equals?{equals:J.equals}:void 0);X={read:G,write:(f)=>Q(()=>f),inFlight:!1,nextAllowedAt:0},z.set(Z,X)}return X}return{read(Z){if(!Z)return J.initial;return Y(Z).read()},poll(Z){if(!Z)return;let X=Y(Z);JX(X,J,(G)=>J.run(Z,G),(G)=>X.write(G))},reset(){z.clear()}}}var kQ=b(()=>{W1();zX();zX()});import{stat as vx}from"fs/promises";import{join as mx}from"path";async function ix(J){try{let z=await vx(mx(J,".git","HEAD"));return`${z.mtimeMs}:${z.size}`}catch{return null}}async function lx(J,z,Y=ZY){let Z=await ix(J);if(Z!==null){let f=RM.get(J);if(f&&f.fingerprint===Z)return f.value}let X="",G=await Y("git",["symbolic-ref","--short","HEAD"],{cwd:J,env:cJ(),signal:z}),Q=G.status===0?G.stdout.trim():"";if(Q&&Q!=="HEAD")X=Q;else if((await Y("git",["rev-parse","--verify","HEAD"],{cwd:J,env:cJ(),signal:z})).status===0)X="(detached)";if(Z!==null)RM.set(J,{fingerprint:Z,value:X});return X}function CM(J){return gM.read(J)}function NM(J){gM.poll(J)}var cx=2000,dx=30000,nx=1500,RM,gM;var bM=b(()=>{hY();kQ();RM=new Map;gM=EH({initial:"",timeoutMs:cx,slowRetryMs:dx,minIntervalMs:nx,run:(J,z)=>lx(J,z)})});function XW(J){let z=J.scheduleTimeout??((H,B)=>{let V=setTimeout(H,B);return()=>clearTimeout(V)}),Y=!1,Z=null,X=()=>{Y=!0,Z?.(),Z=z(()=>{Y=!1,Z=null},700)},G=()=>{Y=!1,Z?.(),Z=null},Q=(H)=>{let B=J.getFlatIds();if(B.length===0)return;let V=J.getCursor(),j=V<0?0:V,K=Math.min(B.length-1,Math.max(0,j+H));J.setCursor(K)},f=(H)=>{let B=J.getFlatIds();if(B.length===0)return;J.setCursor(Math.min(B.length-1,Math.max(0,H)))};return{moveDown(){G(),Q(1)},moveUp(){G(),Q(-1)},selectCurrent(){G();let H=J.getFlatIds(),B=J.getCursor();if(B<0||B>=H.length)return;let V=H[B];if(V!==void 0)J.onSelect(V)},pressG(){if(Y)G(),f(0);else X()},pressShiftG(){G(),f(J.getFlatIds().length-1)},isChordArmed(){return Y},disarmChord(){G()}}}function kM(J){let z=XW({getCursor:()=>J.cursorIndex(),setCursor:(G)=>J.setCursorIndex(G),getFlatIds:()=>J.flatTaskIds(),onSelect:(G)=>J.onSelect(G)}),Y=()=>{let G=J.flatTaskIds(),Q=J.cursorIndex();if(Q<0||Q>=G.length)return;return G[Q]},Z=()=>J.searchMode?.()??!1,X=()=>J.moveMode?.()??!1;D1(()=>({enabled:J.focused()&&!Z(),bindings:$Y({"sidebar.nav":(G,Q)=>{let f=(Q??0)%2===0;if(X()){let H=Y();if(H===void 0)return;J.onMoveRequest?.(H,f?1:-1);return}if(f)z.moveDown();else z.moveUp()},"sidebar.select":()=>{if(X()){J.onMoveModeExit?.();return}z.selectCurrent()},"sidebar.goto":(G)=>{if(X())return;if(G.shift)z.pressShiftG();else z.pressG()},"sidebar.delete":()=>{if(X())return;let G=Y();if(G!==void 0)J.onDeleteRequest?.(G)},"sidebar.archive":()=>{if(X())return;let G=Y();if(G!==void 0)J.onArchiveRequest?.(G)},"sidebar.localMerge":(G)=>{if(!G.shift)return;let Q=Y();if(Q!==void 0)J.onLocalMergeRequest?.(Q)},"sidebar.rename":()=>{if(X())return;let G=Y();if(G!==void 0)J.onRenameRequest?.(G)},"sidebar.pin":(G)=>{if(X())return;if(!G.shift)return;let Q=Y();if(Q!==void 0)J.onPinRequest?.(Q)},"sidebar.search.enter":()=>{if(X())return;J.onSearchEnter?.()},"sidebar.sort":()=>{if(X())return;J.onSortModeToggle?.()},"sidebar.projectFilter":()=>{if(X())return;J.onProjectFilterToggle?.()}})})),D1(()=>({enabled:J.focused()&&X(),bindings:[{key:"escape",cmd:()=>J.onMoveModeExit?.()}]})),D1(()=>({enabled:J.focused(),bindings:$Y({"sidebar.view":(G,Q)=>{J.onViewSwitch?.((Q??0)%2===0?-1:1)}})})),D1(()=>({enabled:J.focused()&&Z(),bindings:$Y({"sidebar.search.nav":(G,Q)=>{if((Q??0)%2===0)z.moveDown();else z.moveUp()},"sidebar.search.submit":()=>{z.selectCurrent(),J.onSearchExit?.(!0)},"sidebar.search.cancel":()=>J.onSearchExit?.(!1)})}))}var SM=b(()=>{pX();yJ()});function GW(J,z){return tX(J,z)}function QW(J,z){return` ${GW(J,Math.max(0,z))}`}var IM=()=>{};function ax(J){switch(J){case"done":return F("tasks.status.done");case"in_review":return F("tasks.status.inReview");case"in_progress":return F("tasks.status.working");case"backlog":return F("tasks.status.backlog");case"canceled":return F("tasks.status.canceled");case"error":return F("tasks.status.error")}}function _x(J){switch(J){case"rate_limited":return{text:F("tasks.activity.rateLimited"),tone:"warning"};case"permission_needed":return{text:F("tasks.activity.permissionNeeded"),tone:"warning"};case"error":return{text:F("tasks.activity.error"),tone:"error"};default:return null}}function xM(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 px(){return F("tasks.subtitle.noTracking")}function rx(){return F("tasks.subtitle.materializing")}function ox(J){if(J.kind==="main")return!1;return J.vendor!==void 0&&!qJ(J.vendor)}function qW(J){let{task:z}=J,Y=z.kind==="main",Z=Y?J.mainBranch??"":z.branch,X=$x[z.status],G=J.activity?.state,Q=G!==void 0,f=sx(G),H=_x(G),B=ox(z)&&!Q,V=J.job!==void 0,j=V||!B&&(G==="running"||J.live||!Q&&!Y&&z.status==="in_progress"),K=eX[J.spinnerFrame]??eX[0],L=V?"primary":B?"textMuted":H?.tone??(j?"primary":f?.tone??X.tone),A=B?px():ax(z.status),O=V?J.truncateBranch(rx(),J.subtitleBudget):H?J.truncateBranch(H.text,J.subtitleBudget):Z.length>0?J.truncateBranch(Z,J.subtitleBudget):J.truncateBranch(A,J.subtitleBudget),R=B?TM:f?.glyph??X.glyph,x=B?TM:f?.glyph??"\u2605";return{isMain:Y,titleText:Y?kz(z.repo):z.title,subtitleText:O,loading:j,stateGlyph:j?K:R,projectGlyph:j?K:x,tone:L}}function fW(J,z){if(!J.loading)return J;let Y=eX[z()%eX.length]??"\u280B";if(Y===J.stateGlyph&&Y===J.projectGlyph)return J;return{...J,stateGlyph:Y,projectGlyph:Y}}function sx(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 $x,eX,yM=100,TM="\xB7";var uM=b(()=>{GJ();$1();IH();$x={done:{glyph:"\u2713",tone:"success"},in_review:{glyph:"\u25D0",tone:"warning"},in_progress:{glyph:"",tone:"primary"},backlog:{glyph:"\u25CB",tone:"textMuted"},canceled:{glyph:"\u2298",tone:"textMuted"},error:{glyph:"\u2715",tone:"error"}};eX=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"]});function HW(J){return EM.read(J)}function BW(J){EM.poll(J)}var tx=4000,ex=60000,Ju=1500,zu,EM;var wM=b(()=>{hY();kQ();yX();kQ();zu={added:0,deleted:0},EM=EH({initial:zu,equals:cz,timeoutMs:tx,slowRetryMs:ex,minIntervalMs:Ju,run:async(J,z)=>{let Y=await ZY("git",["status","--porcelain=v1"],{cwd:J,env:cJ(),signal:z});if(Y.status!==0)throw Error("git status failed");return TX(Y.stdout)}})});import{TextAttributes as w1}from"@opentui/core";function Yu(J){switch(J){case"active":return F("tasks.view.workspace");case"archived":return F("tasks.view.archives")}}function hM(J,z=Xu){return tX(J,z)}function Gu(J){let z=0;for(let Y of J)z+=(Y.codePointAt(0)??0)>=4352?2:1;return z}function vM(J){let{theme:z}=i0(),Y=()=>J.focused?J.focused():!0,[Z,X]=r("active"),[G,Q]=r(!1),[f,H]=r(""),[B,V]=r(null),j=()=>J.projectFilter?.()??B(),K=(s)=>{if(J.onProjectFilterChange)J.onProjectFilterChange(s);else V(s)};function L(){H(""),Q(!0),J.onSearchActiveChange?.(!0)}function A(s){Q(!1),H(""),J.onSearchActiveChange?.(!1)}r0(()=>{if(!G())return;let s=HJ();if(!s)return;let K0=(I0)=>{if(I0.defaultPrevented)return;if(!Y())return;if(I0.ctrl||I0.meta||I0.option)return;if(I0.name==="backspace"){H((w0)=>w0.slice(0,-1));return}let m0=I0.sequence;if(!m0||m0.length!==1)return;let Q1=m0.charCodeAt(0);if(Q1<32||Q1===127)return;H((w0)=>w0+m0)};s.keyInput.on("keypress",K0),S1(()=>s.keyInput.off("keypress",K0))});let[O,R]=r(0),x=setInterval(()=>R((s)=>s+1),Zu);S1(()=>clearInterval(x));let[a,S]=r(0),C=setInterval(()=>S((s)=>(s+1)%eX.length),yM);S1(()=>clearInterval(C));let M=()=>J.sortMode?.()??"default",I=U0(()=>v3(J.tasks(),Z())),$=U0(()=>{let s=j();if(!s)return null;let K0=Zz(s);return I().find((I0)=>Zz(I0.repo)===K0)??null}),i=U0(()=>$()?.repo??null),e=U0(()=>$()?.label??"all"),J0=U0(()=>{let s=$();return s?s.count:I().reduce((K0,I0)=>K0+I0.count,0)}),T=U0(()=>{let s=J0();return`${s} ${s===1?F("tasks.project.taskSingular"):F("tasks.project.taskPlural")}`}),f0=U0((s)=>n3(s,l9(J.tasks(),Z(),G()?f():"",M(),i())),[]),_=U0(()=>$9(f0())),W0=U0(()=>d3(f0())),R0=U0(()=>W0().projectRows),V0=U0(()=>W0().taskRows),t=U0(()=>{let s=new Map;for(let K0 of f0())s.set(K0.flatIndex,K0);return s}),P=U0(()=>$9(l9(J.tasks(),Z(),"",M(),i())).length),N=U0(()=>V0().length>0);r0(()=>{let s=j(),K0=I();if(s!==null&&K0.length>0&&(K0.length<=1||$()===null))K(null)});function p(){let s=I();if(s.length<=1){K(null);return}let K0=i(),I0=K0?Zz(K0):null,m0=I0===null?-1:s.findIndex((w0)=>Zz(w0.repo)===I0),Q1=s[m0+1];K(Q1?.repo??null)}let u=()=>J.width?J.width():PM,d=U0(()=>Math.max(6,u()-9)),o=U0(()=>Math.max(6,u()-16)),Q0=dz(),g0=U0(()=>{let s=Math.max(2,Math.min(10,Math.floor(Q0().height*0.25))),K0=Math.max(2,R0().length*2);return Math.min(s,K0)}),[P0,N0]=r(null),[k0,x0]=r(-1),v,b0,X0,L0=new Map;r0(()=>{let s=J.width?J.width():PM,K0=X0;if(!K0)return;K0.width=s,K0.flexShrink=1,K0.minHeight=0}),r0(SJ([k0,f0],([s])=>{let K0=t().get(s);if(!K0)return;let I0=K0.task.kind==="main"?v:b0;if(!I0)return;if(I0.viewport.height<=0)return;let m0=L0.get(s);if(!m0)return;I0.scrollChildIntoView(m0.id)})),r0(SJ(()=>[J.selectedId(),_()],([s,K0])=>{let I0=r1(k0),m0=c3(s,K0,I0);if(m0!==I0)x0(m0)})),r0(SJ(Z,()=>{let s=_();x0(s.length>0?0:-1)},{defer:!0})),r0(SJ(i,(s)=>x0(m3(f0(),s)),{defer:!0})),r0(SJ([G,f],()=>{if(!G())return;let s=_();x0(s.length>0?0:-1)}));function a0(s){let K0=Z(),I0=SQ.findIndex((w0)=>w0.view===K0);if(I0<0)return;let m0=(I0+s+SQ.length)%SQ.length,Q1=SQ[m0];if(Q1)X(Q1.view)}let e0=(s)=>{if(J.onActivate?.(s),!J.pinnedSelection)return;let K0=J.selectedId();if(!K0||s===K0)return;let I0=_().indexOf(K0);if(I0>=0)x0(I0)};kM({focused:Y,cursorIndex:k0,setCursorIndex:x0,flatTaskIds:_,onSelect:(s)=>{J.onSelect(s),e0(s)},onDeleteRequest:(s)=>J.onDeleteRequest?.(s),onArchiveRequest:(s)=>J.onArchiveRequest?.(s),onLocalMergeRequest:(s)=>J.onLocalMergeRequest?.(s),moveMode:J.moveMode,onMoveRequest:(s,K0)=>J.onMoveRequest?.(s,K0),onMoveModeExit:()=>J.onMoveModeExit?.(),onRenameRequest:(s)=>J.onRenameRequest?.(s),onPinRequest:(s)=>J.onPinRequest?.(s),onViewSwitch:(s)=>a0(s),onSortModeToggle:()=>J.onSortModeToggle?.(),onProjectFilterToggle:()=>p(),searchMode:G,onSearchEnter:()=>L(),onSearchExit:(s)=>A(s)});let v0=(s)=>(()=>{var K0=W("box"),I0=W("box"),m0=W("text"),Q1=W("text");return D(K0,I0),q(K0,"flexDirection","column"),q(K0,"flexShrink",0),U(K0,k(G0,{get when(){return s.topPad},get children(){var w0=W("box"),q1=W("text");return D(w0,q1),q(w0,"flexShrink",0),D(q1,E0(" ")),q(q1,"wrapMode","none"),w0}}),I0),D(I0,m0),D(I0,Q1),q(I0,"flexDirection","row"),q(I0,"flexShrink",0),q(I0,"gap",1),q(I0,"paddingLeft",1),q(I0,"paddingRight",1),q(m0,"wrapMode","none"),U(m0,()=>s.label),q(Q1,"wrapMode","none"),U(Q1,()=>"\u2500".repeat(Math.max(2,u()-10-s.label.length-(s.suffix?.length??0)))),U(I0,k(G0,{get when(){return s.suffix},get children(){var w0=W("text");return q(w0,"wrapMode","none"),U(w0,()=>s.suffix),y((q1)=>{var g1=z.info,z1=w1.BOLD;return g1!==q1.e&&(q1.e=q(w0,"fg",g1,q1.e)),z1!==q1.t&&(q1.t=q(w0,"attributes",z1,q1.t)),q1},{e:void 0,t:void 0}),w0}}),null),y((w0)=>{var q1=z.textMuted,g1=w1.BOLD,z1=z.border;return q1!==w0.e&&(w0.e=q(m0,"fg",q1,w0.e)),g1!==w0.t&&(w0.t=q(m0,"attributes",g1,w0.t)),z1!==w0.a&&(w0.a=q(Q1,"fg",z1,w0.a)),w0},{e:void 0,t:void 0,a:void 0}),K0})(),_0=(s)=>{switch(s){case"success":return z.success;case"warning":return z.warning;case"primary":return z.primary;case"error":return z.error;default:return z.textMuted}},R1=(s)=>{let K0=s.row.task,I0=s.row.flatIndex,m0=()=>I0===k0(),Q1=()=>K0.id===J.selectedId(),w0=U0(()=>{let q0=J.chatRunState?.();if(!q0)return!1;let T0=`${K0.id}:`;for(let[M0,O0]of q0)if(O0==="running"&&M0.startsWith(T0))return!0;return!1}),q1=U0(()=>{let q0=mf(J.worktreeChanges?.(),K0.worktreePath);if(q0)return q0;if(O(),!K0.archived)BW(K0.worktreePath);return HW(K0.worktreePath)},void 0,{equals:cz}),g1=U0(()=>{return O(),NM(K0.repo),CM(K0.repo)}),z1=U0(()=>qW({task:K0,activity:J.engineState?.().get(K0.id),job:J.taskJobs?.().get(K0.id),live:w0(),spinnerFrame:0,subtitleBudget:o(),truncateBranch:hM,mainBranch:g1()})),z0=U0(()=>fW(z1(),a)),Z0=()=>!z0().loading?z.primary:_0(z0().tone),j0=()=>m0()?z.focusAccent:Q1()?z.primary:void 0,g=()=>m0()||Q1()?"\u258C":" ";return(()=>{var q0=W("box"),T0=W("box"),M0=W("box"),O0=W("text"),D0=W("box"),B0=W("text"),t0=W("text"),Y1=W("box"),o0=W("text"),H1=W("box"),u1=W("text");return D(q0,T0),q(q0,"flexDirection","column"),q(q0,"gap",0),q(q0,"paddingBottom",0),D(T0,M0),D(T0,Y1),nz((S0)=>{L0.set(I0,S0),S1(()=>{if(L0.get(I0)===S0)L0.delete(I0)})},T0),q(T0,"flexDirection","column"),q(T0,"gap",0),q(T0,"onMouseUp",()=>{if(x0(I0),J.onSelect(K0.id),J.activateOnClick)e0(K0.id)}),q(T0,"onMouseOver",(S0)=>N0({task:K0,x:S0.x,y:S0.y})),q(T0,"onMouseOut",()=>N0((S0)=>S0?.task.id===K0.id?null:S0)),D(M0,O0),D(M0,D0),q(M0,"flexDirection","row"),q(M0,"gap",0),q(O0,"wrapMode","none"),U(O0,g),D(D0,B0),D(D0,t0),q(D0,"flexDirection","row"),q(D0,"flexGrow",1),q(D0,"paddingRight",1),q(D0,"gap",0),q(B0,"wrapMode","none"),U(B0,()=>z0().projectGlyph),q(t0,"wrapMode","none"),q(t0,"flexGrow",1),U(t0,()=>QW(z0().titleText,d())),D(Y1,o0),D(Y1,H1),q(Y1,"flexDirection","row"),q(Y1,"gap",0),q(o0,"wrapMode","none"),U(o0,g),D(H1,u1),q(H1,"flexDirection","row"),q(H1,"flexGrow",1),q(H1,"paddingLeft",2),q(H1,"paddingRight",1),q(H1,"gap",1),q(u1,"wrapMode","none"),q(u1,"flexGrow",1),U(u1,()=>z0().subtitleText),U(H1,k(G0,{get when(){return q1().added>0},get children(){var S0=W("text"),h=E0("+");return D(S0,h),q(S0,"wrapMode","none"),U(S0,()=>q1().added,null),y((A0)=>q(S0,"fg",z.success,A0)),S0}}),null),U(H1,k(G0,{get when(){return q1().deleted>0},get children(){var S0=W("text"),h=E0("\u2212");return D(S0,h),q(S0,"wrapMode","none"),U(S0,()=>q1().deleted,null),y((A0)=>q(S0,"fg",z.error,A0)),S0}}),null),y((S0)=>{var h=m0()?z.backgroundElement:void 0,A0=j0(),j1=Z0(),O1=w1.BOLD,b1=z.text,m=w1.BOLD,y0=j0(),Y0=z.textMuted,F0=w1.DIM;return h!==S0.e&&(S0.e=q(T0,"backgroundColor",h,S0.e)),A0!==S0.t&&(S0.t=q(O0,"fg",A0,S0.t)),j1!==S0.a&&(S0.a=q(B0,"fg",j1,S0.a)),O1!==S0.o&&(S0.o=q(B0,"attributes",O1,S0.o)),b1!==S0.i&&(S0.i=q(t0,"fg",b1,S0.i)),m!==S0.n&&(S0.n=q(t0,"attributes",m,S0.n)),y0!==S0.s&&(S0.s=q(o0,"fg",y0,S0.s)),Y0!==S0.h&&(S0.h=q(u1,"fg",Y0,S0.h)),F0!==S0.r&&(S0.r=q(u1,"attributes",F0,S0.r)),S0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0}),q0})()};return(()=>{var s=W("box"),K0=W("box"),I0=W("box"),m0=W("text"),Q1=W("box"),w0=W("box"),q1=W("text"),g1=W("scrollbox"),z1=W("box");return D(s,K0),D(s,Q1),D(s,g1),nz((z0)=>{X0=z0},s),q(s,"flexGrow",1),q(s,"minHeight",0),q(s,"flexDirection","column"),q(s,"paddingTop",1),q(s,"paddingBottom",1),q(s,"paddingLeft",0),q(s,"paddingRight",0),D(K0,I0),q(K0,"flexDirection","row"),q(K0,"justifyContent","space-between"),q(K0,"gap",1),q(K0,"paddingBottom",1),q(K0,"paddingLeft",1),q(K0,"paddingRight",1),D(I0,m0),q(I0,"flexDirection","row"),q(I0,"gap",1),D(m0,E0("KOBE")),q(m0,"wrapMode","none"),U(I0,k(G0,{get when(){return J.headerStatus?.()},children:(z0)=>(()=>{var Z0=W("text");return q(Z0,"wrapMode","none"),q(Z0,"onMouseUp",()=>J.onHeaderStatusClick?.()),U(Z0,()=>z0().label),y((j0)=>{var g=z0().emphasize?z.warning:z.textMuted,q0=z0().emphasize?w1.BOLD:w1.DIM;return g!==j0.e&&(j0.e=q(Z0,"fg",g,j0.e)),q0!==j0.t&&(j0.t=q(Z0,"attributes",q0,j0.t)),j0},{e:void 0,t:void 0}),Z0})()}),null),U(K0,k(G0,{get when(){return J.onAddTask},get children(){var z0=W("text");return D(z0,E0("[+]")),q(z0,"wrapMode","none"),q(z0,"onMouseUp",()=>J.onAddTask?.()),y((Z0)=>{var j0=z.primary,g=w1.BOLD;return j0!==Z0.e&&(Z0.e=q(z0,"fg",j0,Z0.e)),g!==Z0.t&&(Z0.t=q(z0,"attributes",g,Z0.t)),Z0},{e:void 0,t:void 0}),z0}}),null),U(s,k(G0,{get when(){return G()},get children(){var z0=W("box"),Z0=W("text"),j0=W("text"),g=W("text");return D(z0,Z0),D(z0,j0),D(z0,g),q(z0,"flexDirection","row"),q(z0,"gap",0),q(z0,"paddingBottom",1),q(z0,"paddingLeft",1),D(Z0,E0("/")),q(Z0,"wrapMode","none"),q(j0,"wrapMode","none"),U(j0,f),D(g,E0("\u2588")),q(g,"wrapMode","none"),U(z0,k(G0,{get when(){return f().length===0},get children(){var q0=W("text"),T0=E0(" ");return D(q0,T0),q(q0,"wrapMode","none"),U(q0,()=>F("tasks.search.placeholder"),null),y((M0)=>q(q0,"fg",z.textMuted,M0)),q0}}),null),U(z0,k(G0,{get when(){return f().length>0},get children(){var q0=W("text"),T0=E0(" "),M0=E0("/");return D(q0,T0),D(q0,M0),q(q0,"wrapMode","none"),U(q0,()=>_().length,M0),U(q0,P,null),y((O0)=>q(q0,"fg",z.textMuted,O0)),q0}}),null),y((q0)=>{var{info:T0,text:M0,info:O0}=z,D0=w1.BLINK;return T0!==q0.e&&(q0.e=q(Z0,"fg",T0,q0.e)),M0!==q0.t&&(q0.t=q(j0,"fg",M0,q0.t)),O0!==q0.a&&(q0.a=q(g,"fg",O0,q0.a)),D0!==q0.o&&(q0.o=q(g,"attributes",D0,q0.o)),q0},{e:void 0,t:void 0,a:void 0,o:void 0}),z0}}),Q1),D(Q1,w0),q(Q1,"flexDirection","row"),q(Q1,"justifyContent","space-between"),q(Q1,"gap",1),q(Q1,"paddingBottom",1),q(Q1,"paddingLeft",1),q(Q1,"paddingRight",1),D(w0,q1),q(w0,"flexDirection","row"),q(w0,"gap",2),U(w0,k(X1,{each:SQ,children:(z0)=>{let Z0=()=>Z()===z0.view;return(()=>{var j0=W("text");return q(j0,"wrapMode","none"),q(j0,"onMouseUp",()=>X(z0.view)),U(j0,()=>Yu(z0.view)),y((g)=>{var q0=Z0()?z.primary:z.textMuted,T0=Z0()?w1.BOLD:void 0;return q0!==g.e&&(g.e=q(j0,"fg",q0,g.e)),T0!==g.t&&(g.t=q(j0,"attributes",T0,g.t)),g},{e:void 0,t:void 0}),j0})()}}),q1),D(q1,E0("[/]")),q(q1,"wrapMode","none"),U(Q1,k(G0,{get when(){return J.sortMode},get children(){var z0=W("text");return q(z0,"wrapMode","none"),q(z0,"onMouseUp",()=>J.onSortModeToggle?.()),U(z0,()=>F("tasks.sort")),y((Z0)=>{var j0=z.textMuted,g=w1.DIM;return j0!==Z0.e&&(Z0.e=q(z0,"fg",j0,Z0.e)),g!==Z0.t&&(Z0.t=q(z0,"attributes",g,Z0.t)),Z0},{e:void 0,t:void 0}),z0}}),null),U(s,k(G0,{get when(){return R0().length>0},get children(){var z0=W("box"),Z0=W("box"),j0=W("text"),g=W("text"),q0=W("scrollbox"),T0=W("box");return D(z0,Z0),D(z0,q0),q(z0,"flexDirection","column"),q(z0,"flexShrink",0),D(Z0,j0),D(Z0,g),q(Z0,"flexDirection","row"),q(Z0,"flexShrink",0),q(Z0,"gap",1),q(Z0,"paddingLeft",1),q(Z0,"paddingRight",1),q(Z0,"onMouseUp",()=>p()),q(j0,"wrapMode","none"),U(j0,()=>F("tasks.header.projects")),U(Z0,k(G0,{get when(){return I().length>1},get children(){var M0=W("text");return q(M0,"wrapMode","none"),U(M0,e),y((O0)=>{var D0=i()?z.primary:z.textMuted,B0=i()?w1.BOLD:void 0;return D0!==O0.e&&(O0.e=q(M0,"fg",D0,O0.e)),B0!==O0.t&&(O0.t=q(M0,"attributes",B0,O0.t)),O0},{e:void 0,t:void 0}),M0}}),g),q(g,"wrapMode","none"),U(g,()=>"\u2500".repeat(Math.max(2,u()-10-F("tasks.header.projects").length-(I().length>1?e().length+1:0)-(I().length>1?T().length+1:0)))),U(Z0,k(G0,{get when(){return I().length>1},get children(){var M0=W("text");return q(M0,"wrapMode","none"),U(M0,T),y((O0)=>{var D0=z.textMuted,B0=w1.DIM;return D0!==O0.e&&(O0.e=q(M0,"fg",D0,O0.e)),B0!==O0.t&&(O0.t=q(M0,"attributes",B0,O0.t)),O0},{e:void 0,t:void 0}),M0}}),null),D(q0,T0),nz((M0)=>{v=M0},q0),q(q0,"flexShrink",0),q(q0,"flexGrow",0),q(q0,"minHeight",0),q(q0,"stickyScroll",!1),q(q0,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),q(T0,"flexShrink",0),q(T0,"gap",0),q(T0,"paddingRight",1),U(T0,k(X1,{get each(){return R0()},children:(M0)=>k(R1,{row:M0})})),y((M0)=>{var O0=z.textMuted,D0=w1.BOLD,B0=z.border,t0=g0();return O0!==M0.e&&(M0.e=q(j0,"fg",O0,M0.e)),D0!==M0.t&&(M0.t=q(j0,"attributes",D0,M0.t)),B0!==M0.a&&(M0.a=q(g,"fg",B0,M0.a)),t0!==M0.o&&(M0.o=q(q0,"maxHeight",t0,M0.o)),M0},{e:void 0,t:void 0,a:void 0,o:void 0}),z0}}),g1),U(s,k(v0,{get label(){return F("tasks.header.tasks")},get suffix(){return u0(()=>M()==="default")()?void 0:M()},get topPad(){return R0().length>0}}),g1),D(g1,z1),nz((z0)=>{b0=z0},g1),q(g1,"flexGrow",1),q(g1,"minHeight",0),q(g1,"stickyScroll",!1),q(g1,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),q(z1,"flexShrink",0),q(z1,"gap",0),q(z1,"paddingRight",1),U(z1,k(X1,{get each(){return V0()},children:(z0)=>{let{task:Z0,flatIndex:j0}=z0,g=()=>j0===k0(),q0=()=>Z0.id===J.selectedId(),T0=U0(()=>{let o0=J.chatRunState?.();if(!o0)return!1;let H1=`${Z0.id}:`;for(let[u1,S0]of o0)if(S0==="running"&&u1.startsWith(H1))return!0;return!1}),M0=U0(()=>{let o0=mf(J.worktreeChanges?.(),Z0.worktreePath);if(o0)return o0;if(O(),!Z0.archived)BW(Z0.worktreePath);return HW(Z0.worktreePath)},void 0,{equals:cz}),O0=U0(()=>qW({task:Z0,activity:J.engineState?.().get(Z0.id),job:J.taskJobs?.().get(Z0.id),live:T0(),spinnerFrame:0,subtitleBudget:o(),truncateBranch:hM,mainBranch:""})),D0=U0(()=>fW(O0(),a)),B0=()=>_0(D0().tone),t0=()=>g()?z.focusAccent:q0()?z.primary:void 0,Y1=()=>g()||q0()?"\u258C":" ";return(()=>{var o0=W("box"),H1=W("box"),u1=W("box"),S0=W("text"),h=W("box"),A0=W("text"),j1=W("text"),O1=W("box"),b1=W("text"),m=W("box"),y0=W("text");return D(o0,H1),q(o0,"flexDirection","column"),q(o0,"gap",0),q(o0,"paddingBottom",1),D(H1,u1),D(H1,O1),nz((Y0)=>{L0.set(j0,Y0),S1(()=>{if(L0.get(j0)===Y0)L0.delete(j0)})},H1),q(H1,"flexDirection","column"),q(H1,"gap",0),q(H1,"onMouseUp",()=>{if(x0(j0),J.onSelect(Z0.id),J.activateOnClick)e0(Z0.id)}),q(H1,"onMouseOver",(Y0)=>N0({task:Z0,x:Y0.x,y:Y0.y})),q(H1,"onMouseOut",()=>N0((Y0)=>Y0?.task.id===Z0.id?null:Y0)),D(u1,S0),D(u1,h),q(u1,"flexDirection","row"),q(u1,"gap",0),q(S0,"wrapMode","none"),U(S0,Y1),D(h,A0),D(h,j1),q(h,"flexDirection","row"),q(h,"flexGrow",1),q(h,"paddingRight",1),q(h,"gap",0),q(A0,"wrapMode","none"),U(A0,()=>D0().stateGlyph),q(j1,"wrapMode","none"),q(j1,"flexGrow",1),U(j1,()=>QW(D0().titleText,d())),U(h,k(G0,{get when(){return u0(()=>!!J.moveMode?.())()&&g()},get children(){var Y0=W("text");return q(Y0,"wrapMode","none"),U(Y0,()=>F("tasks.moveChip")),y((F0)=>q(Y0,"fg",z.warning,F0)),Y0}}),null),D(O1,b1),D(O1,m),q(O1,"flexDirection","row"),q(O1,"gap",0),q(b1,"wrapMode","none"),U(b1,Y1),D(m,y0),q(m,"flexDirection","row"),q(m,"flexGrow",1),q(m,"paddingLeft",2),q(m,"paddingRight",1),q(m,"gap",1),q(y0,"wrapMode","none"),q(y0,"flexGrow",1),U(y0,()=>D0().subtitleText),U(m,k(G0,{get when(){return Z0.pinned===!0},get children(){var Y0=W("text");return D(Y0,E0("\u25B4")),q(Y0,"wrapMode","none"),y((F0)=>q(Y0,"fg",z.warning,F0)),Y0}}),null),U(m,k(G0,{get when(){return xM(Z0)},children:(Y0)=>(()=>{var F0=W("text");return q(F0,"wrapMode","none"),U(F0,()=>Y0().glyph),y((c1)=>q(F0,"fg",_0(Y0().tone),c1)),F0})()}),null),U(m,k(G0,{get when(){return M0().added>0},get children(){var Y0=W("text"),F0=E0("+");return D(Y0,F0),q(Y0,"wrapMode","none"),U(Y0,()=>M0().added,null),y((c1)=>q(Y0,"fg",z.success,c1)),Y0}}),null),U(m,k(G0,{get when(){return M0().deleted>0},get children(){var Y0=W("text"),F0=E0("\u2212");return D(Y0,F0),q(Y0,"wrapMode","none"),U(Y0,()=>M0().deleted,null),y((c1)=>q(Y0,"fg",z.error,c1)),Y0}}),null),y((Y0)=>{var F0=g()?z.backgroundElement:void 0,c1=t0(),LJ=B0(),QJ=w1.BOLD,iJ=z.text,$z=q0()||g()?w1.BOLD:void 0,AJ=t0(),az=z.textMuted,Gz=w1.DIM;return F0!==Y0.e&&(Y0.e=q(H1,"backgroundColor",F0,Y0.e)),c1!==Y0.t&&(Y0.t=q(S0,"fg",c1,Y0.t)),LJ!==Y0.a&&(Y0.a=q(A0,"fg",LJ,Y0.a)),QJ!==Y0.o&&(Y0.o=q(A0,"attributes",QJ,Y0.o)),iJ!==Y0.i&&(Y0.i=q(j1,"fg",iJ,Y0.i)),$z!==Y0.n&&(Y0.n=q(j1,"attributes",$z,Y0.n)),AJ!==Y0.s&&(Y0.s=q(b1,"fg",AJ,Y0.s)),az!==Y0.h&&(Y0.h=q(y0,"fg",az,Y0.h)),Gz!==Y0.r&&(Y0.r=q(y0,"attributes",Gz,Y0.r)),Y0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0}),o0})()}}),null),U(z1,k(G0,{get when(){return _().length===0},get children(){var z0=W("box"),Z0=W("text");return D(z0,Z0),q(z0,"paddingTop",1),q(z0,"paddingLeft",1),U(Z0,(()=>{var j0=u0(()=>!!(G()&&f().trim().length>0));return()=>j0()?F("tasks.empty.noMatchSearch"):u0(()=>!!i())()?u0(()=>Z()==="active")()?F("tasks.empty.noActiveProject"):F("tasks.empty.noArchivedProject"):u0(()=>Z()==="active")()?F("tasks.empty.noActive"):F("tasks.empty.noArchived")})()),y((j0)=>q(Z0,"fg",z.textMuted,j0)),z0}}),null),U(z1,k(G0,{get when(){return u0(()=>!!(i()&&_().length>0&&!N()))()&&!(G()&&f().trim().length>0)},get children(){var z0=W("box"),Z0=W("text");return D(z0,Z0),q(z0,"paddingTop",1),q(z0,"paddingLeft",1),q(Z0,"wrapMode","none"),U(Z0,(()=>{var j0=u0(()=>Z()==="active");return()=>j0()?F("tasks.empty.noActiveProject"):F("tasks.empty.noArchivedProject")})()),y((j0)=>{var g=z.textMuted,q0=w1.DIM;return g!==j0.e&&(j0.e=q(Z0,"fg",g,j0.e)),q0!==j0.t&&(j0.t=q(Z0,"attributes",q0,j0.t)),j0},{e:void 0,t:void 0}),z0}}),null),U(z1,k(G0,{get when(){return u0(()=>Z()==="archived")()&&_().length>0},get children(){var z0=W("box"),Z0=W("text");return D(z0,Z0),q(z0,"paddingTop",1),q(z0,"paddingLeft",1),q(Z0,"wrapMode","none"),U(Z0,()=>F("tasks.archiveHint")),y((j0)=>{var g=z.textMuted,q0=w1.DIM;return g!==j0.e&&(j0.e=q(Z0,"fg",g,j0.e)),q0!==j0.t&&(j0.t=q(Z0,"attributes",q0,j0.t)),j0},{e:void 0,t:void 0}),z0}}),null),U(s,k(G0,{get when(){return J.zenActive?.()},get children(){var z0=W("box"),Z0=W("text");return D(z0,Z0),q(z0,"flexShrink",0),q(z0,"paddingLeft",1),q(z0,"paddingRight",1),q(z0,"paddingTop",1),D(Z0,E0("\u262F ZEN")),q(Z0,"wrapMode","none"),q(Z0,"onMouseUp",()=>J.onZenClick?.()),y((j0)=>{var g=z.accent,q0=w1.BOLD;return g!==j0.e&&(j0.e=q(Z0,"fg",g,j0.e)),q0!==j0.t&&(j0.t=q(Z0,"attributes",q0,j0.t)),j0},{e:void 0,t:void 0}),z0}}),null),U(s,k(G0,{get when(){return P0()},children:(z0)=>{let Z0=U0(()=>{let D0=z0().task,B0=[];if(B0.push({text:D0.kind==="main"?kz(D0.repo):D0.title,bold:!0}),D0.branch.length>0)B0.push({text:`\u2387 ${D0.branch}`});if(D0.worktreePath.length>0)B0.push({text:D0.worktreePath,dim:!0});return B0}),j0=72,g=U0(()=>Math.min(68,Math.max(...Z0().map((D0)=>Gu(D0.text))))),q0=U0(()=>g()+4),T0=U0(()=>Z0().length+2),M0=U0(()=>Math.max(0,Math.min(z0().x+2,Q0().width-q0()-1))),O0=U0(()=>Math.max(0,Math.min(z0().y+1,Q0().height-T0()-1)));return(()=>{var D0=W("box");return q(D0,"position","absolute"),q(D0,"zIndex",2600),q(D0,"flexDirection","column"),q(D0,"border",!0),q(D0,"paddingLeft",1),q(D0,"paddingRight",1),U(D0,k(X1,{get each(){return Z0()},children:(B0)=>(()=>{var t0=W("text");return q(t0,"wrapMode","none"),U(t0,(()=>{var Y1=u0(()=>!!B0.dim);return()=>Y1()?Qu(B0.text,g()):GW(B0.text,g())})()),y((Y1)=>{var o0=B0.dim?z.textMuted:z.text,H1=B0.bold?w1.BOLD:B0.dim?w1.DIM:void 0;return o0!==Y1.e&&(Y1.e=q(t0,"fg",o0,Y1.e)),H1!==Y1.t&&(Y1.t=q(t0,"attributes",H1,Y1.t)),Y1},{e:void 0,t:void 0}),t0})()})),y((B0)=>{var t0=M0(),Y1=O0(),o0=q0(),H1=z.focusAccent,u1=z.backgroundElement;return t0!==B0.e&&(B0.e=q(D0,"left",t0,B0.e)),Y1!==B0.t&&(B0.t=q(D0,"top",Y1,B0.t)),o0!==B0.a&&(B0.a=q(D0,"width",o0,B0.a)),H1!==B0.o&&(B0.o=q(D0,"borderColor",H1,B0.o)),u1!==B0.i&&(B0.i=q(D0,"backgroundColor",u1,B0.i)),B0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),D0})()}}),null),y((z0)=>{var Z0=Y()?z.focusAccent:z.textMuted,j0=w1.BOLD,g=z.textMuted,q0=w1.DIM;return Z0!==z0.e&&(z0.e=q(m0,"fg",Z0,z0.e)),j0!==z0.t&&(z0.t=q(m0,"attributes",j0,z0.t)),g!==z0.a&&(z0.a=q(q1,"fg",g,z0.a)),q0!==z0.o&&(z0.o=q(q1,"attributes",q0,z0.o)),z0},{e:void 0,t:void 0,a:void 0,o:void 0}),s})()}var PM=32,SQ,Zu=2000,Xu=16,Qu;var mM=b(()=>{w();w();w();w();w();w();w();w();w();GJ();w();W1();m1();m1();bM();IH();SM();IM();uM();yX();wM();SQ=[{view:"active"},{view:"archived"}];Qu=uH});var lM={};f1(lM,{startTasksPane:()=>ju,legendRowCap:()=>iM,legendCap:()=>nM});import{existsSync as cM}from"fs";import{stat as qu}from"fs/promises";import{TextAttributes as wH}from"@opentui/core";function dM(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 Hu(J){let{theme:z}=i0(),Y=d1(),Z=rX(),X=RH(),[G,Q]=r(J.tasks().some((v)=>v.id===J.initialTaskId)?J.initialTaskId:J.tasks()[0]?.id??null),f=0;function H(v){X.notify({kind:"error",taskId:G()??"",tabId:"",title:v})}function B(v){X.notify({kind:"done",taskId:G()??"",tabId:"",title:v})}let[V,j]=r(!1),[K,L]=r(Z.get("activeSortMode")==="recent"?"recent":"default"),A=Z.get("tasksPane.projectFilter"),[O,R]=r(typeof A==="string"&&A.length>0?A:null),x=(v)=>{R(v),Z.set("tasksPane.projectFilter",v)},[a,S]=r(null),[C,M]=r(!1);{let v=process.env.TMUX_PANE;if(v){let b0=()=>{$0(["show-options","-wqv","-t",v,CY]).then(({code:L0,stdout:a0})=>{M(L0===0&&a0.trim().length>0)})};b0();let X0=setInterval(b0,1000);S1(()=>clearInterval(X0))}}let I=dz();r0(()=>{if(J.initialTaskId)return;let v=J.orch?.activeTaskSignal()();if(!v)return;Q(v)}),r0(SJ(()=>J.orch?.uiPrefsSignal()(),(v)=>{if(v&&v.sortMode!==r1(K))L(v.sortMode);if(v&&v.projectFilter!==r1(O))R(v.projectFilter)})),r0(()=>{let v=J.orch?.updateSignal()();if(v)S(v)});let $={orch:J.orch,tasks:()=>J.tasks(),confirm:async(v)=>await DY.show(Y,v.title,v.body,v.cancelLabel,v.confirmLabel)===!0,promptText:(v,b0)=>UY.show(Y,v,b0),logger:console,logPrefix:"[kobe tasks]",notifyError:H,notifyInfo:B,reload:()=>J.reload(),switchBeforeKill:!0,updateActiveTask:!0,onTaskDeleted:(v,b0)=>{if(G()!==v)return;let X0=J.tasks();Q(b0?.id??(X0.find((L0)=>!L0.archived)??X0[0])?.id??null)},promptNewTask:(v,b0,X0)=>UH.show(Y,v,b0,X0),cursorRepo:()=>{let v=J.tasks();return(v.find((b0)=>b0.id===G())??v[0])?.repo},lastVendor:()=>xJ(C1("lastSelectedVendor"),uJ()),rememberVendor:(v)=>s1("lastSelectedVendor",v),openCreateSurface:async(v)=>{if(SZ(Z.get(fY,kZ))!=="chattab")return!1;let X0=await TJ();if(!X0)return!1;return await cG(X0,v),!0},selectTask:(v)=>Q(v),enterTask:(v)=>g0(v)};async function i(){await LM($)}async function e(){if(SZ(Z.get(fY,kZ))==="chattab"){let X0=await TJ();if(X0){await vG(X0);return}}if(!(await mZ.show(Y,Z,J.orch??void 0)).visualPrefsChanged)return;if(!Z.flush())return;try{let X0=await TJ();if(X0)await OX(X0)}catch(X0){console.error("[kobe tasks] failed to refresh workspace panes:",X0)}}async function J0(){let v=await TJ();if(v){await mG(v);return}sX.show(Y)}async function T(){if(!a()?.hasUpdate){B(F("tasks.toast.alreadyLatest",{version:p0}));return}let b0=await TJ();if(!b0)return;await dG(b0)}async function f0(v){await WM($,v)}async function _(v){await VM($,v)}async function W0(v){await KM($,v)}async function R0(v){await UM($,v)}async function V0(v){await DM($,v)}async function t(v){let X0=J.tasks().find((a0)=>a0.id===v)?.worktreePath;if(!X0||!cM(X0)){if(!J.orch){console.error("[kobe tasks] no daemon; cannot materialise worktree"),H(F("tasks.toast.noDaemonWorktree"));return}try{X0=await J.orch.ensureWorktree(v)}catch(a0){console.error("[kobe tasks] task.ensureWorktree failed:",a0),H(dM(a0));return}await J.reload()}if(!X0||!cM(X0))return;let L0=FM();if(!L0){console.error("[kobe tasks] no editor/opener found; set KOBE_OPEN_EDITOR"),H(F("tasks.toast.noEditor"));return}if(!OM(X0,L0))console.error(`[kobe tasks] failed to open worktree with ${L0.label}`),H(F("tasks.toast.openWorktreeFailed",{label:L0.label}))}async function P(){if(!process.env.TMUX_PANE)return;let v=await TJ();if(!v)return;let b0=await HX(v);if(!b0)return;await c0(["select-pane","-t",b0])}async function N(v,b0){let X0=J.tasks().find((L0)=>L0.id===v);if(!X0||X0.kind==="main"||!J.orch)return;try{await J.orch.moveTask(v,b0)}catch(L0){console.error("[kobe tasks] task.move failed:",L0),H(F("tasks.toast.moveTaskFailed",{message:L0 instanceof Error?L0.message:String(L0)}));return}Q(v),await J.reload()}let[p,u]=r(Z.get("tasksPane.keysCollapsed",!1)===!0),d=(v)=>{u(v),Z.set("tasksPane.keysCollapsed",v)};r0(SJ(()=>J.orch?.uiPrefsSignal()(),(v)=>{if(v&&v.keysCollapsed!==r1(p))u(v.keysCollapsed)}));let[o,Q0]=r(!1);D1(()=>({enabled:Y.stack.length===0&&!o(),bindings:$Y({"help.open":()=>void J0(),"task.new":()=>void i(),"settings.open.sidebar":()=>void e(),"tasks.update":()=>void T(),"tasks.openWorktree":()=>{let v=G();if(v)t(v)},"tasks.renameBranch":()=>{let v=G();if(v)R0(v)},"tasks.cycleEngine":()=>{let v=G();if(v)V0(v)},"tasks.toggleKeys":()=>d(!p()),"tasks.focusEngine":()=>void P().catch((v)=>console.error("[kobe tasks] focus engine pane failed:",v))})}));async function g0(v){let b0=J.tasks().find((L0)=>L0.id===v);if(!b0)return;let X0=++f;try{await n9(J.orch,b0,b0.repo,b0.vendor,{includeInitPrompt:!0,heal:!0,captureFrom:!0,reload:()=>J.reload(),isCurrent:()=>f===X0})}catch(L0){if(L0 instanceof hZ)if(L0.phase==="no-daemon")H(F("tasks.toast.noDaemonOpen"));else if(L0.phase==="worktree")H(dM(L0.cause??L0));else H(F("tasks.toast.sessionStartFailed"));else console.error("[kobe tasks] switchTo failed:",L0)}}let P0=U0(()=>{let v=a();if(v?.hasUpdate)return{label:`v${v.latest} \u2191`,emphasize:!0};return{label:`v${p0}`,emphasize:!1}}),N0=()=>J.orch?.daemonStaleSignal()()??!1,k0=()=>J.orch?.daemonVersionSignal()()??null,x0=U0(()=>J.tasks().find((v)=>v.id===G())?.kind==="main");return(()=>{var v=W("box"),b0=W("box");return D(v,b0),q(v,"flexDirection","column"),q(v,"flexGrow",1),U(v,k(HM,{stale:N0,daemonVersion:k0,clientVersion:p0,width:()=>I().width}),b0),q(b0,"flexGrow",1),q(b0,"flexShrink",1),U(b0,k(vM,{get tasks(){return J.tasks},selectedId:G,get onSelect(){return J.initialTaskId?()=>{}:Q},get pinnedSelection(){return!!J.initialTaskId},onActivate:(X0)=>void g0(X0),activateOnClick:!0,headerStatus:P0,onHeaderStatusClick:()=>void T(),onAddTask:()=>void i(),zenActive:C,onZenClick:()=>{(async()=>{let X0=await TJ();if(X0)await RZ(X0,"zen-toggle")})()},width:()=>I().width,get engineState(){return u0(()=>!!J.orch)()?J.orch.engineStateSignal():void 0},get taskJobs(){return u0(()=>!!J.orch)()?J.orch.taskJobsSignal():void 0},get worktreeChanges(){return J.orch?()=>{let X0=J.orch;if(!X0||X0.connectionStateSignal()()!=="online")return null;return X0.worktreeChangesSignal()()}:void 0},onRenameRequest:(X0)=>void W0(X0),onDeleteRequest:(X0)=>void _(X0),onArchiveRequest:(X0)=>void f0(X0),onLocalMergeRequest:(X0)=>{let L0=J.tasks().find((a0)=>a0.id===X0);if(!L0||L0.kind==="main")return;Q(X0),j((a0)=>!a0)},moveMode:V,onMoveRequest:(X0,L0)=>void N(X0,L0),onMoveModeExit:()=>j(!1),sortMode:K,projectFilter:O,onProjectFilterChange:x,onSortModeToggle:()=>{let X0=K()==="default"?"recent":"default";L(X0),Z.set("activeSortMode",X0)},focused:()=>Y.stack.length===0,onSearchActiveChange:Q0})),U(v,k(Bu,{moveMode:V,selectedIsMain:x0,collapsed:p,onToggleCollapsed:()=>d(!p())}),null),y((X0)=>q(v,"backgroundColor",z.background,X0)),v})()}function nM(J){let z=P9(J);if(!z)return null;let Y=z.hint?.keys??z.keys[0];return Y&&Y.length>0?Y:null}function iM(J){let z=J.map(nM).filter((Y)=>Y!==null);return z.length>0?z.join("/"):null}function Bu(J){let{theme:z}=i0(),[Y,Z]=r("Prefix");zJ(()=>{$0(["show-options","-g","prefix"]).then(({code:K,stdout:L})=>{if(K!==0)return;let A=yH(L);if(A)Z(A)})});let X=()=>{w9();let K=iq(),L=K.binds,A=[],O=K.focus.filter((x)=>x!==null).map((x)=>x.chord);if(O.length===4&&O.every((x,a)=>x===IY[a]))A.push({k:"ctrl+hjkl",label:F("tasks.hints.movePanes")});else if(O.length>0)A.push({k:O[0],label:F("tasks.hints.movePanes")});let R=(x,a)=>{let S=a.map((C)=>L[C]?.chord).filter((C)=>!!C);if(S.length>0)A.push({k:`prefix ${S.join("/")}`,label:x})};if(L["tmux.detach"])A.push({k:L["tmux.detach"].chord,label:F("tasks.hints.detach")});return R(F("tasks.hints.splits"),["tmux.layout.workspaceSplit","tmux.layout.workspaceClose","tmux.layout.workspaceReset"]),R(F("tasks.hints.panes"),["tmux.layout.tasksToggle","tmux.layout.opsToggle","tmux.layout.terminalToggle"]),A},G=()=>{w9();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=iM(A.ids);if(O===null)continue;L.push({k:O,label:A.label,dimWhenMain:A.dimWhenMain})}return L.push(...X()),L},Q=()=>[{k:"j/k",label:F("tasks.hints.reorder")},{k:"enter/esc",label:F("tasks.hints.done")}],f=()=>J.moveMode?.()?Q():G(),H=18,B=()=>Math.min(H,Math.max(...f().map((K)=>K.label.length))),V=(K)=>tX(K,B()),j=()=>(J.collapsed?.()??!1)&&!(J.moveMode?.()??!1);return(()=>{var K=W("box"),L=W("text");return D(K,L),q(K,"flexShrink",0),q(K,"flexDirection","column"),q(K,"paddingLeft",1),q(K,"paddingRight",1),q(K,"paddingTop",1),q(K,"paddingBottom",1),q(K,"gap",0),q(L,"wrapMode","none"),q(L,"onMouseUp",()=>J.onToggleCollapsed?.()),U(L,(()=>{var A=u0(()=>!!j());return()=>A()?F("tasks.hints.headerFolded"):F("tasks.hints.headerUnfolded")})()),U(K,k(G0,{get when(){return!j()},get children(){return k(X1,{get each(){return f()},children:(A)=>{let O=()=>A.dimWhenMain===!0&&(J.selectedIsMain?.()??!1);return(()=>{var R=W("box"),x=W("box"),a=W("text"),S=E0("["),C=E0("]"),M=W("box"),I=W("text");return D(R,x),D(R,M),q(R,"flexDirection","row"),q(R,"gap",1),q(R,"justifyContent","space-between"),D(x,a),q(x,"width",10),q(x,"flexShrink",0),D(a,S),D(a,C),q(a,"wrapMode","none"),U(a,()=>oX(A.k,Y()),C),D(M,I),q(M,"flexShrink",0),q(I,"wrapMode","none"),U(I,()=>V(A.label)),y(($)=>{var i=O()?z.textMuted:z.accent,e=O()?wH.DIM:wH.BOLD,J0=B(),T=z.textMuted,f0=O()?wH.DIM:void 0;return i!==$.e&&($.e=q(a,"fg",i,$.e)),e!==$.t&&($.t=q(a,"attributes",e,$.t)),J0!==$.a&&($.a=q(M,"width",J0,$.a)),T!==$.o&&($.o=q(I,"fg",T,$.o)),f0!==$.i&&($.i=q(I,"attributes",f0,$.i)),$},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),R})()}})}}),null),y((A)=>{var O=z.textMuted,R=wH.DIM;return O!==A.e&&(A.e=q(L,"fg",O,A.e)),R!==A.t&&(A.t=q(L,"attributes",R,A.t)),A},{e:void 0,t:void 0}),K})()}async function ju(J={}){await OJ({logContext:"tasks",providers:{notifications:!0},setup:()=>Wu(J)})}async function Wu(J){let z=new wX({homeDir:Sz()});await z.load();let[Y,Z]=r(z.list()),X=null;try{let B=await zz();if(B){let V=new KJ(B);await V.init(),X=V}else JY("tasks-boot","no daemon running \u2014 polling tasks.json (a gui owns daemon lifecycle)")}catch(B){t1("tasks-boot",B),JY("tasks-boot","daemon subscribe failed \u2014 polling tasks.json")}let G=()=>X&&X.connectionStateSignal()()==="online"?X.tasksSignal()():Y(),Q=async()=>{await z.load(),Z(z.list())},f="",H=setInterval(()=>{if(X&&X.connectionStateSignal()()==="online")return;(async()=>{let B="missing";try{let V=await qu(z.filePath);B=`${V.mtimeMs}:${V.size}`}catch{}if(B===f)return;f=B,await Q()})().catch(()=>{})},fu);return{root:()=>[k(Hu,{tasks:G,get initialTaskId(){return J.initialTaskId},orch:X,reload:Q}),k(qM,{})],onDestroy:()=>{if(H)clearInterval(H);X?.dispose()}}}var fu=1500;var $M=b(()=>{w();w();w();w();w();w();w();w();h1();Wz();GJ();w();YZ();FJ();W1();iY();o1();YQ();A1();lq();$1();MJ();_9();_X();p9();YW();fM();BM();pX();gQ();gH();m1();a9();_Y();yJ();MM();bH();AM();mM();xY();YJ();nJ();r9()});var aM={};f1(aM,{startSettingsHost:()=>Ku});function Vu(J){let z=rX(),Y=d1(),{theme:Z}=i0(),X=!1,G=!1;async function Q(){if(G)return;G=!0;try{if(z.flush()&&X){let H=await TJ();if(H)await OX(H)}}catch(f){console.error("[kobe settings] failed to refresh workspace panes:",f)}finally{process.exit(0)}}return D1(()=>({enabled:Y.stack.length===0,bindings:[{key:"escape",cmd:Q},{key:"q",cmd:Q},{key:"ctrl+c",cmd:Q}]})),(()=>{var f=W("scrollbox");return q(f,"flexGrow",1),q(f,"paddingTop",1),q(f,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),U(f,k(mZ,{kv:z,get orchestrator(){return J.orchestrator??void 0},standalone:!0,onVisualPrefsChange:()=>{X=!0},onClose:Q})),y((H)=>q(f,"backgroundColor",Z.background,H)),f})()}async function Ku(){await OJ({setup:async()=>{let J=null;try{let z=await zz();if(z){let Y=new KJ(z);await Y.init(),J=Y}else console.error("[kobe settings] no daemon running; Restart backend disabled")}catch(z){console.error("[kobe settings] daemon unavailable; Restart backend disabled:",z)}return{root:()=>k(Vu,{orchestrator:J}),onDestroy:()=>{J?.dispose()}}}})}var _M=b(()=>{w();w();w();w();w();w();FJ();iY();YW();gQ();m1();_Y();yJ();YJ();nJ()});var pM={};f1(pM,{startHelpHost:()=>Du});function Uu(){let J=d1(),{theme:z}=i0();function Y(){process.exit(0)}return D1(()=>({enabled:J.stack.length===0,bindings:[{key:"escape",cmd:Y},{key:"q",cmd:Y},{key:"f1",cmd:Y},{key:"ctrl+c",cmd:Y}]})),(()=>{var Z=W("box");return q(Z,"flexGrow",1),q(Z,"paddingTop",1),U(Z,k(sX,{onClose:Y})),y((X)=>q(Z,"backgroundColor",z.background,X)),Z})()}async function Du(){await OJ({providers:{kv:!1,focus:!1},setup:()=>({root:()=>k(Uu,{})})})}var rM=b(()=>{w();w();w();w();w();_9();m1();_Y();yJ();nJ()});var oM={};f1(oM,{startUpdateHost:()=>gu});import{spawn as Lu,spawnSync as Mu}from"child_process";import{TextAttributes as JG}from"@opentui/core";function Fu(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 Lu(Y,Z,{stdio:"ignore",detached:!0}).unref(),!0}catch{return!1}}function Ou(J){return J.replace(/\r\n/g,`
259
+ `)}var Xy;var bD=C(()=>{Yf();Xy=["install","status","command"]});var G9={};Q1(G9,{runHookSubcommand:()=>Vy,readTextWithTimeout:()=>yD,parseWorktreeRemovePath:()=>ED,parseWorktreeAddPath:()=>uD,ensureGlobalKobeHooks:()=>Dy});import{homedir as qy}from"os";import{join as ID,resolve as Z9}from"path";async function yD(J,z=Hy){let Y;try{return await Promise.race([J(),new Promise((Z)=>{Y=setTimeout(()=>Z(""),z)})])}finally{if(Y!==void 0)clearTimeout(Y)}}async function TD(){try{let J=await yD(()=>Bun.stdin.text());if(!J.trim())return{};let z=JSON.parse(J);return z&&typeof z==="object"&&!Array.isArray(z)?z:{}}catch{return{}}}function fy(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 By(J){return!!J&&typeof J==="object"&&!Array.isArray(J)}function xD(J){let z=[],Y=/"([^"]*)"|'([^']*)'|(\S+)/g,Z;while((Z=Y.exec(J))!==null)z.push(Z[1]??Z[2]??Z[3]??"");return z}function uD(J){let z=xD(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=xD(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 Wy(){let J=await TD(),z=By(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=uD(Y),X=G?void 0:ED(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 Vy(J){let[z,...Y]=J;if(z==="setup"){await Ly(Y);return}if(z===jy){try{await Wy()}catch{}return}try{if(!z||!Oq(z))return;let Z=await TD(),G=fy(Y,"--task-id"),X=typeof Z.cwd==="string"&&Z.cwd?Z.cwd:process.cwd(),Q;for(let f of wD())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 Ky(){return $1.map((J)=>c8(J)).filter((J)=>J.supportsWorktreeSync())}function wD(){return $1.map((J)=>c8(J)).filter((J)=>J.supportsHooks())}function PD(){return ID(qy(),".claude","settings.json")}function Uy(J){if(!J||J==="off")return;if(J==="global")return PD();if(J.startsWith("repo:"))return ID(Z9(J.slice(5)),".claude","settings.json");return J}async function Dy(){try{for(let J of wD()){let z=J.globalSettingsPath();if(!z)continue;await J.installActivityHooks(z),await J.installWorktreeWatchHook(z)}await hD()}catch{}}async function hD(){let J=Ky();if(J.length===0)return;let z=N1(SD),Y=new Set([PD()]),Z=Uy(z);if(Z)Y.add(Z);for(let G of J)for(let X of Y)await G.removeWorktreeSyncHook(X);if(z!=="off")e1(SD,"off")}async function Ly(J){await hD(),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 Hy=500,jy="worktree-created",SD="externalWorktreeSync";var X9=C(()=>{RJ();d8();Aq();A1();a1()});function mD(J){var z;if(J>=55296&&J<=57343||J>1114111)return 65533;return(z=Fy.get(J))!==null&&z!==void 0?z:J}var Q9,Fy,vD;var cD=C(()=>{Fy=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]]),vD=(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 dD(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 nD;var iD=C(()=>{nD=dD("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 lD=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 My(J){return J>=m1.UPPER_A&&J<=m1.UPPER_F||J>=m1.LOWER_A&&J<=m1.LOWER_F}function Oy(J){return J>=m1.UPPER_A&&J<=m1.UPPER_Z||J>=m1.LOWER_A&&J<=m1.LOWER_Z||q9(J)}function Ay(J){return J===m1.EQUALS||Oy(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)|$D)===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)||My(Y)){let Z=Y<=m1.NINE?Y-m1.ZERO:(Y|$D)-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(mD(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=gy(Y,Z,this.treeIndex+Math.max(1,G),X),this.treeIndex<0)return this.result===0||this.decodeMode===VY.Attribute&&(G===0||Ay(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 Ry(J){let z="",Y=new H9(J,(Z)=>z+=vD(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 gy(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 Ny(J,z)}var m1,$D=32,XJ,VY,Ny;var aD=C(()=>{cD();iD();lD();(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={}));Ny=Ry(nD)});var _D,pD;var oD=C(()=>{aD();(function(J){J[J.XML=0]="XML",J[J.HTML=1]="HTML"})(_D||(_D={}));(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"})(pD||(pD={}))});import{CliRenderer as ky,createCliRenderer as by,engine as Sy}from"@opentui/core";import{createTestRenderer as i$}from"@opentui/core/testing";import{ASCIIFontRenderable as Iy,BoxRenderable as yy,CodeRenderable as Ty,DiffRenderable as xy,InputRenderable as uy,LineNumberRenderable as Ey,MarkdownRenderable as wy,ScrollBoxRenderable as Py,SelectRenderable as hy,TabSelectRenderable as vy,TextareaRenderable as my,TextAttributes as f9,TextNodeRenderable as cy,TextRenderable as dy}from"@opentui/core";import{engine as a$,Timeline as _$}from"@opentui/core";import{BaseRenderable as YL,createTextAttributes as iy,InputRenderable as j9,InputRenderableEvents as VQ,isTextNodeRenderable as V9,parseColor as sD,Renderable as ly,RootTextNodeRenderable as $y,ScrollBoxRenderable as ay,SelectRenderable as tD,SelectRenderableEvents as B9,TabSelectRenderable as eD,TabSelectRenderableEvents as W9,TextNodeRenderable as _y,TextRenderable as ZL}from"@opentui/core";import{BaseRenderable as YT,isTextNodeRenderable as ZT,TextNodeRenderable as GT,TextRenderable as XT,Yoga as zL}from"@opentui/core";import{BoxRenderable as Za,RootRenderable as Ga}from"@opentui/core";import{TimeToFirstDrawRenderable as fT}from"@opentui/core";import{createSlotRegistry as qa}from"@opentui/core";function ry({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,y){if(M!==void 0&&!y)y=[];if(typeof g!=="function")return K(S,g,y,M);uz(($)=>K(S,g(),$,M),y)}function K(S,g,M,y,$){while(typeof M==="function")M=M();if(g===M)return M;let c=typeof g,e=y!==void 0;if(c==="string"||c==="number"){if(c==="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,y,u)}else if(M!==""&&typeof M==="string")G(j(S),M=g);else O(S,M,y,z(g)),M=g}else if(g==null||c==="boolean")M=O(S,M,y);else if(c==="function")return uz(()=>{let u=g();while(typeof u==="function")u=u();M=K(S,u,M,y)}),()=>M;else if(Array.isArray(g)){let u=[];if(L(u,g,$))return uz(()=>M=K(S,u,M,y,!0)),()=>M;if(u.length===0){let Y0=O(S,M,y);if(e)return M=Y0}else if(Array.isArray(M))if(M.length===0)R(S,u,y);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,y,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 y=!1;for(let $=0,c=g.length;$<c;$++){let e=g[$],u;if(e==null||e===!0||e===!1);else if(Array.isArray(e))y=L(S,e)||y;else if((u=typeof e)==="string"||u==="number")S.push(z(e));else if(u==="function")if(M){while(typeof e==="function")e=e();y=L(S,Array.isArray(e)?e:[e])||y}else S.push(e),y=!0;else S.push(e)}return y}function A(S,g,M){let y=M.length,$=g.length,c=y,e=0,u=0,Y0=V(g[$-1]),q0=null;while(e<$||u<c){if(g[e]===M[u]){e++,u++;continue}while(g[$-1]===M[c-1])$--,c--;if($===e){let s=c<y?u?V(M[u-1]):M[c-u]:Y0;while(u<c)X(S,M[u++],s)}else if(c===u)while(e<$){if(!q0||!q0.has(g[e]))Q(S,g[e]);e++}else if(g[e]===M[c-1]&&M[u]===g[$-1]){let s=V(g[--$]);X(S,M[u++],V(g[e++])),X(S,M[--c],s),g[$]=M[c]}else{if(!q0){q0=new Map;let W0=u;while(W0<c)q0.set(M[W0],W0++)}let s=q0.get(g[e]);if(s!=null)if(u<s&&s<c){let W0=e,N0=1,v;while(++W0<$&&W0<c){if((v=q0.get(g[W0]))==null||v!==s+N0)break;N0++}if(N0>s-u){let o=g[e];while(u<s)X(S,M[u++],o)}else x(S,M[u++],g[e++])}else e++;else Q(S,g[e++])}}}function O(S,g,M,y){if(M===void 0){let c;while(c=j(S))Q(S,c);return y&&X(S,y),y??""}let $=y||Y();if(g.length){let c=!1;for(let e=g.length-1;e>=0;e--){let u=g[e];if($!==u){let Y0=f(u)===S;if(!c&&!e)Y0?x(S,$,u):X(S,$,M);else Y0&&Q(S,u)}else c=!0}}else X(S,$,M);return[$]}function R(S,g,M){for(let y=0,$=g.length;y<$;y++)X(S,g[y],M)}function x(S,g,M){X(S,g,M),Q(S,M)}function w(S,g,M={},y){if(g||(g={}),!y)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 c=g[$];if(c===M[$])continue;H(S,$,c,M[$]),M[$]=c}}),M}return{render(S,g){let M;return BZ((y)=>{M=y,B(g,S())}),M},insert:B,spread(S,g,M){if(typeof g==="function")uz((y)=>w(S,g(),y,M));else w(S,g,void 0,M)},createElement:J,createTextNode:z,insertNode:X,setProp(S,g,M,y){return H(S,g,M,y),M},mergeProps:uq,effect:uz,memo:py,createComponent:i7,use(S,g,M){return o1(()=>S(g,M))}}}function oy(J){let z=ry(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 sy(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 ZL)&&!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 YL))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 ty(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 YL&&!z.parent){z.destroyRecursively();return}})}function ey(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 JT(){let J=F9("slot-node");return QJ("Creating slot node",J),new KQ(J)}function JL(J){QJ("Getting parent of node:",YJ(J));let z=J.parent??void 0;if(z instanceof $y)z=z.textParent??void 0;let Y=z?.parent?.parent?.parent;if(Y instanceof ay&&Y.content===z)z=Y;return z}function qT(J){Object.assign(jL,J)}function HT(){return jL}var L9,WJ=()=>{let J=PJ(L9);if(!J)throw Error("No renderer found");return J},ny=(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 ny((G,X)=>{Y({width:G,height:X})}),z},py=(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 ZL)z=J.getTextChildren();else z=J.getChildren();return z},zT,I,S0,b,W,T0,D,U,Ja,q,GL,Gz,M9,XL,QL,KQ,UQ,qf,U9,D9,qL,HL,fL,QT,jL,jT=(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=zT(()=>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()},BL=async(J,z={})=>{let Y=z instanceof ky?z:await by({...z,onDestroy:()=>{z.onDestroy?.()}});Sy.attach(Y),jT(Y,J)};var E=C(()=>{W1();oD();W1();W1();W1();L9=Ez();Qf=new Map;nG=class nG extends _y{static fromString(J,z={}){let Y=new nG(z);return Y.add(J),Y}};({render:zT,effect:I,memo:S0,createComponent:b,createElement:W,createTextNode:T0,insertNode:D,insert:U,spread:Ja,setProp:q,mergeProps:GL,use:Gz}=oy({createElement(J){QJ("Creating element:",J);let z=F9(J),Y=PJ(L9);if(!Y)throw Error("No renderer found");let Z=HT();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:ey,createSlotNode:JT,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|=iy(Y),J.fg=Y.fg?sD(Y.fg):J.fg,J.bg=Y.bg?sD(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 ly))return;if(Y)J.focus();else J.blur();break;case"onChange":let G=void 0;if(J instanceof tD)G=B9.SELECTION_CHANGED;else if(J instanceof eD)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 tD){if(Y)J.on(B9.ITEM_SELECTED,Y);if(Z)J.off(B9.ITEM_SELECTED,Z)}else if(J instanceof eD){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:sy,removeNode:ty,getParentNode:JL,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=JL(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 YT{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}};XL=class XL extends GT{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()}};QL=class QL extends M9{yogaNode;slotParent;destroyed=!1;constructor(J,z){super(J);this._visible=!1,this.slotParent=z,this.yogaNode=zL.default.Node.create(),this.yogaNode.setDisplay(zL.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(ZT(J)||J instanceof XT){if(!this.textNode)this.textNode=new XL(`slot-text-${this.id}`,this);return this.textNode}if(!this.layoutNode)this.layoutNode=new QL(`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 cy{_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")}};HL=class HL extends UQ{constructor(J,z){super(null,z);this.add()}add(){return super.add(`
261
+ `)}};fL=class fL extends UQ{constructor(J,z){let Y={...z,link:{url:z.href}};super(null,Y)}};QT={box:yy,text:dy,input:uy,select:hy,textarea:my,ascii_font:Iy,tab_select:vy,scrollbox:Py,code:Ty,diff:xy,line_number:Ey,markdown:wy,span:UQ,strong:U9,b:U9,em:D9,i:D9,u:qL,br:HL,a:fL},jL={...QT};qT({time_to_first_draw:fT})});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 BT(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 WT(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 VT(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 KT(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 UT(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),[y,$]=p("online");this.tasksAcc=Y,this.setTasks=(c)=>Z(()=>c),this.activeTaskAcc=G,this.setActiveTaskSig=(c)=>X(()=>c),this.updateAcc=Q,this.setUpdateSig=(c)=>H(()=>c),this.daemonVersionAcc=f,this.setDaemonVersionSig=(c)=>j(()=>c),this.engineStateAcc=V,this.setEngineStateSig=(c)=>B(()=>c),this.taskJobsAcc=K,this.setTaskJobsSig=(c)=>L(()=>c),this.worktreeChangesAcc=A,this.setWorktreeChangesSig=(c)=>O(()=>c),this.transcriptActivityAcc=R,this.setTranscriptActivitySig=(c)=>x(()=>c),this.uiPrefsAcc=w,this.setUiPrefsSig=(c)=>S(()=>c),this.keybindingsRevAcc=g,this.setKeybindingsRevSig=(c)=>M(()=>c),this.connectionStateAcc=y,this.setConnectionState=(c)=>$(()=>c),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("*",(c)=>this.handleEvent(c.name,c.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=BT(z);if(!Y){JJ("orch",`dropped worktree.changes event: malformed changes payload (${KY(z)})`);return}let Z=this.worktreeChangesAcc();if(Z&&VT(Z,Y))return;this.setWorktreeChangesSig(Y);return}if(J==="transcript.activity"){let Y=KT(z);if(!Y){JJ("orch",`dropped transcript.activity event: malformed activity payload (${KY(z)})`);return}let Z=this.transcriptActivityAcc();if(Z&&UT(Z,Y))return;this.setTranscriptActivitySig(Y);return}if(J==="ui-prefs"){let Y=WT(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 KL(J){let z=J[Dz];if(!z){if(Object.defineProperty(J,Dz,{value:z=new Proxy(J,FT)}),!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 DT(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 UL(J){xq()&&MQ(ff(J,iG),VL)()}function LT(J){return UL(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(WL.onStoreNodeUpdate&&WL.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[VL])&&H.$()}function DL(J,z){let Y=Object.keys(z);for(let Z=0;Z<Y.length;Z+=1){let G=Y[Z];if(LL(G))continue;jf(J,G,z[G])}}function LL(J){return J==="__proto__"||J==="constructor"||J==="prototype"}function MT(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 DL(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&&LL(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))DL(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=KL(Y);$7.registerGraph({value:Y,name:z&&z.name});function X(...Q){Tq(()=>{Z&&Q.length===1?MT(Y,Q[0]):LQ(Y,Q)})}return[G,X]}var O9,iG,UY,VL,WL,FT,Fa;var lG=C(()=>{W1();O9=Symbol("store-raw"),iG=Symbol("store-node"),UY=Symbol("store-has"),VL=Symbol("store-self"),WL={onStoreNodeUpdate:null};FT={get(J,z,Y){if(z===O9)return J;if(z===Dz)return Y;if(z===Iq)return UL(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)?KL(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:LT,getOwnPropertyDescriptor:DT};Fa=Symbol("store-root")});function Bf(J){let z=Ez();return{provider:(Y)=>{let Z=J.init(Y);return b(Z0,{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 AT(){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 OT,vZ,VJ,hZ,E0,FL;var E1=C(()=>{E();W1();lG();A9();rq();oq();sq();tq();eq();JH();zH();OT={claude:VG,conductor:KG,nord:DG,opencode:LG,dracula:UG,tokyonight:MG,"osaka-jade":FG},vZ=["primary","success","info"],[VJ,hZ]=$z({themes:{...OT},active:"claude",mode:"dark",transparentBackground:!1,focusAccent:"primary"});({use:E0,provider:FL}=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 AT()},has(G){return OQ(G)}}}}))});var ML,OL;var AL=C(()=>{ML={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"}},OL={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 RL,gL;var NL=C(()=>{RL={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"}},gL={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 CL,kL;var bL=C(()=>{CL={title:"kobe \u2014 keybindings",esc:"esc"},kL={title:"kobe \u2014 \u5FEB\u6377\u952E",esc:"esc"}});var SL,IL;var yL=C(()=>{SL={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"},IL={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 TL,xL;var uL=C(()=>{TL={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)"}},xL={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,wL;var PL=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"}},wL={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 hL,vL;var mL=C(()=>{hL={badge:{newActivity:"\u25CF new"},preview:{diffVsHead:"diff vs HEAD",file:"file",closeHint:"\xB7 q to close",loading:"loading\u2026"}},vL={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 cL,dL;var nL=C(()=>{cL={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"},dL={title:"\u5FEB\u901F\u4EFB\u52A1 \xB7 {repoLabel}",esc:"esc",promptLabel:"\u63D0\u793A\u8BCD",promptPlaceholder:"\u8FD9\u4E2A\u4EFB\u52A1\u8981\u505A\u4EC0\u4E48\uFF1F",engineLabel:"\u5F15\u64CE",branchLabel:"\u5206\u652F",legend:"enter \u521B\u5EFA \xB7 tab \u5207\u6362\u5B57\u6BB5 \xB7 ctrl+e \u5207\u6362\u5F15\u64CE \xB7 esc \u53D6\u6D88"}});var iL,lL;var $L=C(()=>{iL={title:"Settings",esc:"esc",nav:{default:"j/k pick \xB7 h/l switch level \xB7 enter activate \xB7 esc close",feedback:"tab next field \xB7 enter sends on Send \xB7 esc close"},sections:{general:"General",engines:"Engines",accounts:"Accounts",keys:"Keybindings",feedback:"Feedback",dev:"Dev"},general:{theme:"Theme",themeHint:"l to enter list \xB7 j/k to highlight \xB7 enter to apply",language:"Language",languageHint:"Display language for kobe's UI. l to enter list \xB7 j/k to highlight \xB7 enter to apply.",transparent:"Transparent background",transparentHint:"Drops the renderer's bg fill so the host terminal shows through. `t` toggles.",on:"[x] on",off:"[ ] off",focusAccent:"Focus accent",focusAccentHint:"Color of focused pane title, \u258C marker, and split borders.",accentPrimary:"Primary (brand accent)",accentSuccess:"Success (legacy green)",accentInfo:"Info (cool blue)",notifications:"Notifications",notificationsHint:"Fired when a background chat tab finishes or pauses on an approval. Toast = bottom-right popup; Sound = terminal bell + chime. Tab-chip unread dot is always on.",toast:"Toast",sound:"Sound",zen:"Zen mode",zenHint:"The `zen` chip (above the file list) and `prefix`+space collapse the ChatTab to the engine pane \u2014 hiding the file and terminal panes. Keep this on to leave the Tasks rail visible so you can always get back out.",zenKeepTasks:"Keep Tasks pane in zen mode",surface:"Settings page",surfaceHint:"Where Settings and the other full dialogs (new task, rename) open. ChatTab = a dedicated full-window page alongside the engine tabs; Task panel = an overlay inside the left Tasks pane. enter to pick.",surfaceChattab:"ChatTab (separate page)",surfaceTaskpanel:"Task panel (in-pane overlay)",editor:"Editor",editorHint:"What `e` opens a file with in the file tree (enter stays the read-only preview). `auto` (default) follows $VISUAL / $EDITOR, else auto-detects nvim / vim / emacs / nano. enter on the row below cycles auto / vim / nvim / nano / emacs / custom; if the editor isn't installed it falls back to the preview.",editorRow:"editor: < {kind} > (enter to change)",editorCustom:"custom: {cmd}",editorCustomUnset:"(unset \u2014 enter to edit)"},engines:{title:"Launch command",hint:"The command each engine's task pane runs. Override a built-in when your binary isn't on PATH as `claude` / `codex` (e.g. it's `cl`) or to pass default flags, or add your own engine. \u25CF = default engine for new tasks (also set by Ctrl+Shift+T). enter edit command \xB7 r rename \xB7 x reset/remove \xB7 d set default.",defaultTag:" (default)",customTag:" (custom)",addEngine:"+ Add engine"},accounts:{title:"Accounts",hint:"Read-only view of locally-detected engine accounts. Login flows land here later.",checking:"Checking\u2026",notLoggedIn:"\u25CB Not logged in",loggedIn:"\u25CF Logged in: {email}",apiKeyConfigured:"\u25CF API key configured",chatgptLogin:"\u25CF ChatGPT login: {email}",tokenConfigured:"\u25CF Token configured ({source})",copilotDetected:"\u25CF Copilot login detected"},keybindings:{title:"Keybindings",hint:"Rebind chords by editing the YAML below, then restart kobe (or respawn the pane). Press F1 anywhere for the live keymap with every binding id.",configFile:"Config file",notCreated:" (not created yet)",example:"Example",overridesApplied:"Overrides applied",none:"none",warnings:"Warnings"},feedback:{title:"Feedback",hint:"Sends a GitHub Discussion to the kobe repo through `gh`. Requires `gh auth login`; category defaults to Feedback.",titleLabel:"title",titlePlaceholder:"Short summary",descriptionLabel:"description",descriptionPlaceholder:"What happened? (enter for a new line \xB7 tab to Send)",send:"[enter] Send to GitHub Discussions"},dev:{reset:"Reset UI state",resetHint:"Clears ~/.config/kobe/state.json and ~/.kobe/tasks.json, then quits kobe \u2014 relaunch to start fresh. Working session / Archive lists, pane sizes, theme, model picks all reset. Worktrees on disk and Claude Code session history are not touched.",resetButton:"[enter] Reset",restart:"Restart backend",restartHint:"Stops the kobe daemon and quits this kobe window so the next launch spawns a fresh daemon \u2014 picks up daemon / orchestrator / engine edits without a process kill. Other attached kobe windows will lose their connection too.",restartButton:"[enter] Restart",doctorHint:"Daemon wedged or unresponsive? From a shell, run `kobe doctor` to diagnose, or `kobe reset` to stop the daemon + kill sessions (keeps your tasks). Use `kobe reset --hard` only to also wipe the task index + UI state.",experimental:"Experimental",remoteHint:"Remote projects (SSH): register a project whose git worktrees + engine run on another host over SSH, driven from this local kobe. Unfinished \u2014 file/diff panes still degrade for remote. Enables `kobe add --remote`.",remoteOn:"[x] Remote projects (on)",remoteOff:"[ ] Remote projects (off)",autoStatusHint:"Auto status flow: a backlog task moves to in_progress when its engine starts a turn, and new claude sessions get a system-prompt note telling the agent to set in_review itself when the work is done. Never touches done/canceled.",autoStatusOn:"[x] Auto status flow (on)",autoStatusOff:"[ ] Auto status flow (off)",dispatcherHint:"Field-notes dispatcher: task sessions file one-line gotchas (`kobe api note`), the daemon forwards each to the repo's main session, and that session relays them to the in-flight tasks that benefit (`kobe api dispatch`). Web-hosted sessions receive the relays today.",dispatcherOn:"[x] Field-notes dispatcher (on)",dispatcherOff:"[ ] Field-notes dispatcher (off)",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)"}},lL={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 aL,_L;var pL=C(()=>{aL={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}"}},_L={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 rL,oL;var sL=C(()=>{rL={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`"}},oL={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 RT,gT,mZ,$G,aG="en";var _G=C(()=>{AL();NL();bL();yL();uL();PL();mL();nL();$L();pL();sL();RT={settings:iL,tasks:aL,files:RL,newTask:EL,ops:hL,update:rL,quickTask:cL,help:CL,history:SL,common:ML,keys:TL},gT={settings:lL,tasks:_L,files:gL,newTask:wL,ops:vL,update:oL,quickTask:dL,help:kL,history:IL,common:OL,keys:xL},mZ=[{id:"en",label:"English"},{id:"zh",label:"\u4E2D\u6587"}],$G={en:RT,zh:gT}});function RQ(J){if($G[J])NT("lang",J)}function C9(){return N9.lang}function tL(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 CT(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=tL($G[Y],J)??tL($G.en,J)??J;return CT(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,NT;var ZJ=C(()=>{lG();_G();_G();[N9,NT]=$z({lang:aG})});function kT(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=kT(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 ST(){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,eL=(z)=>{S9(Wf,z)},I9.on("keypress",eL)}function K1(J){ST();let z=bT++,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 bT=1,Wf,I9=null,eL=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 JF}from"@opentui/core";function TT(J){let z=lz(),Y=E0(),{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),I((B)=>{var K=z().width,L=z().height,A=Y.transparentBackground?yT:IT,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 xT(){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 YF(J){let z=xT();return b(zF.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(Z0,{get when(){return z.stack.length},get children(){return b(TT,{onClose:()=>z.clear(),get size(){return z.size},get children(){return z.stack.at(-1).element()}})}})),Y})()]}})}function d1(){let J=PJ(zF);if(!J)throw Error("useDialog must be used within a DialogProvider");return J}var IT,yT,zF;var iJ=C(()=>{E();E();E();E();E();E();E();E();W1();lG();E1();gJ();y9();IT=JF.fromInts(0,0,0,128),yT=JF.fromInts(0,0,0,64);zF=Ez()});import{spawnSync as T9}from"child_process";import*as GF from"fs";function ZF(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 XF(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(T9("git",["rev-parse","--git-dir"],{cwd:z,encoding:"utf-8",timeout:2000,stdio:["ignore","pipe","ignore"]}).status!==0)return ZF(z)}catch{return ZF(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 QF(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 uT}from"child_process";import*as cZ from"fs";import*as CQ from"path";function HF(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 fF(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 jF(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 BF(J,z){return CQ.join(MJ(J.trim()),z.trim())}function WF(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 VF(J,z,Y){return new Promise((Z)=>{let G="";try{let X=uT("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 KF=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 UF(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 DF(J,z){let Y=z.trim();if(!Y)return J;return J.filter((Z)=>hQ(Y,Z.path))}function LF(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 FF(J,z){let Y=z.trim().toLowerCase();if(!Y)return J;return J.filter((Z)=>Z.toLowerCase().includes(Y))}function MF(J,z){let Y=z.trim().toLowerCase();if(!Y)return J;return J.filter((Z)=>Z.toLowerCase().includes(Y))}function bQ(J,z,Y=ET){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 OF(J,z,Y){let Z=z[Y];if(Z)return Z;return J.trim()||Iz}var ET=8;var m9=C(()=>{nf();Kf()});import{TextAttributes as Xz}from"@opentui/core";function AF(J){let z=d1(),{theme:Y}=E0(),[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,y]=p(""),[$,c]=p(!1),[e,u]=p(Iz),[Y0,q0]=p(!1),[s,W0]=p(""),N0=U0(()=>LF(J.defaultRepo,J.savedRepos)),v=U0(()=>UF(B(),N0())),o=U0(()=>x9(B())),m=U0(()=>u9(o().base)),k=U0(()=>E9(m(),o().filter)),t=U0(()=>FF(N0(),B())),T=U0(()=>v()==="browse"?k():t()),[n,X0]=p(0),H0=U0(()=>bQ(T(),n())),[R0,M0]=p(!1),c0=U0(()=>QF(MJ(B().trim()))),u0=U0(()=>MF(c0(),L())),[p0,P]=p(0),L0=U0(()=>bQ(u0(),p0())),z0=U0(()=>x9(S())),V0=U0(()=>u9(z0().base)),a0=U0(()=>E9(V0(),z0().filter)),[t0,w0]=p(0),h0=U0(()=>bQ(a0(),t0())),[U1,r]=p(!1),[D0,b0]=p(""),[i0,f1]=p(0),[x0,j1]=p(new Set),[R1]=WZ(()=>Z()==="adopt"?MJ(B().trim()):null,async(l)=>J.discoverAdoptable?await J.discoverAdoptable(l):[]),G1=U0(()=>DF(R1()??[],D0())),G0=U0(()=>bQ(G1().map((l)=>l.path),i0())),Q0=U0(()=>{let l=G0();return G1().slice(l.start,l.start+l.items.length)});_0(()=>{G1(),f1((l)=>az(l,G1().length))});function K0(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)K0(l.path)}_0(()=>{u0(),P(0)}),_0(()=>{let l=MJ(B().trim());if(!l)return;if(O())return;let k0=gQ(l);if(k0)A(k0)}),_0(()=>{T(),X0(0)}),_0(()=>{a0(),w0(0)}),_0(()=>{let l=x(),k0=S();if($())return;let J0=HF(l);y(WF(k0,J0))});let[f0,y0]=p(null);_0(()=>{B(),x(),S(),M(),D0(),y0(null)});function O0(){let l=MJ(B().trim());if(!l)return;let k0=XF(l);if(k0){y0(k0),V("repo");return}let J0=L().trim()||Iz;J.onSubmit({repo:l,baseRef:J0,vendor:H()}),z.clear()}async function g0(){if(Y0())return;let l=fF(x());if(l){y0(l),V("cloneUrl");return}let k0=jF(S(),M());if(k0){y0(k0),V(M().trim()?"cloneParent":"cloneFolder");return}let J0=BF(S(),M());q0(!0),W0(F("newTask.clone.progressInto",{target:J0}));let v0=await VF(x().trim(),J0,(qJ)=>{W0(qJ)});if(q0(!1),!v0.ok){y0(F("newTask.error.cloneFailed",{error:v0.error})),V("cloneUrl");return}let P1=e().trim()||Iz,X1=MJ(S().trim());J.onSubmit({repo:v0.path,baseRef:P1,vendor:H(),cloned:{parentDir:X1}}),z.clear()}function F0(){let l=G1();if(l.length===0){y0(F("newTask.error.noAdoptable"));return}let k0=x0(),J0=k0.size>0?l.filter((v0)=>k0.has(v0.path)):l.slice(i0(),i0()+1);if(J0.length===0)return;J.onSubmit({mode:"adopt",repo:MJ(B().trim()),vendor:H(),adopt:J0.map((v0)=>({worktreePath:v0.path,branch:v0.branch}))}),z.clear()}function B0(){if(Z()==="clone"){g0();return}if(Z()==="adopt"){F0();return}O0()}function s0(l){if(Y0())return;if(l===Z())return;G(l),V(v9(l)),y0(null)}function e0(l){if(Y0())return;let k0=l===1?w9(Z()):P9(Z());if(k0===Z())return;G(k0),y0(null),V("tabs")}function Y1(l){f((k0)=>l===1?OY(X(),k0):lf(X(),k0))}function q1(){if(!B().trim()&&v()==="saved"){let k0=T()[0];if(k0){K(k0),V("baseRef");return}}if(v()==="browse"){let J0=k()[n()],v0=o();if(J0){K(NQ(B(),v0.base,J0)),X0(0),M0(!0),V("baseRef");return}V("baseRef");return}let l=T()[n()];if(l){K(l),V("baseRef");return}V("baseRef")}function g1(l){let J0=T()[l];if(!J0)return;if(v()==="browse"){let v0=o();K(NQ(B(),v0.base,J0)),X0(l),M0(!0),V("baseRef");return}K(J0),X0(l),V("baseRef")}function I0(){let k0=a0()[t0()],J0=z0();if(k0){g(NQ(S(),J0.base,k0)),w0(0),r(!0),V("cloneFolder");return}V("cloneFolder")}function c1(l){let J0=a0()[l];if(!J0)return;let v0=z0();g(NQ(S(),v0.base,J0)),w0(l),r(!0),V("cloneFolder")}let s1=()=>{let l=G1();if(l.length===0)return;let k0=l.every((J0)=>x0().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(Y0())return;if(Z()==="existing"&&j()==="repo"){let l=T();if(l.length===0)return;X0(az(n()-1,l.length));return}if(Z()==="existing"&&j()==="baseRef"){let l=u0();if(l.length===0)return;P(az(p0()-1,l.length));return}if(Z()==="clone"&&j()==="cloneParent"){let l=a0();if(l.length===0)return;w0(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(Y0())return;if(Z()==="existing"&&j()==="repo"){let l=T();if(l.length===0)return;X0(az(n()+1,l.length));return}if(Z()==="existing"&&j()==="baseRef"){let l=u0();if(l.length===0)return;P(az(p0()+1,l.length));return}if(Z()==="clone"&&j()==="cloneParent"){let l=a0();if(l.length===0)return;w0(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"&&!Y0(),bindings:[{key:"return",cmd:()=>B0()}]}));let d=(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"),v0=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,v0),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(v0,P1),q(v0,"gap",1),q(v0,"paddingTop",1),q(v0,"paddingBottom",1),U(v0,()=>{let i=()=>j()==="tabs",a=(_)=>_?Y.primary:Y.textMuted;return(()=>{var _=W("box"),h=W("text"),d0=W("text"),P0=W("text");return D(_,h),D(_,d0),D(_,P0),q(_,"flexDirection","row"),q(_,"gap",2),q(h,"onMouseUp",()=>s0("existing")),U(h,(()=>{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(P0,"onMouseUp",()=>s0("adopt")),U(P0,(()=>{var C0=S0(()=>Z()==="adopt");return()=>C0()?`\u25B8 ${F("newTask.tabs.adopt")}`:` ${F("newTask.tabs.adopt")}`})()),I((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(h,"fg",n0,C0.e)),B1!==C0.t&&(C0.t=q(h,"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(P0,"fg",Hz,C0.i)),MY!==C0.n&&(C0.n=q(P0,"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),I((h)=>{var d0=a()?Y.primary:Y.textMuted,P0=a()?Xz.BOLD:void 0;return d0!==h.e&&(h.e=q(_,"fg",d0,h.e)),P0!==h.t&&(h.t=q(_,"attributes",P0,h.t)),h},{e:void 0,t:void 0}),_})()}}),$J),q($J,"flexGrow",1),U(aJ,()=>F("newTask.hint.engineCycle")),U(v0,b(Z0,{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",(h)=>{M0(!1),K(OJ(h))}),q(_,"onSubmit",()=>{if(!B().trim())return;q1()}),I((h)=>{var d0=d("repo"),P0=A0("repo"),C0=B(),n0=J.defaultRepo,B1=j()==="repo";return d0!==h.e&&(h.e=q(a,"fg",d0,h.e)),P0!==h.t&&(h.t=q(a,"attributes",P0,h.t)),C0!==h.a&&(h.a=q(_,"value",C0,h.a)),n0!==h.o&&(h.o=q(_,"placeholder",n0,h.o)),B1!==h.i&&(h.i=q(_,"focused",B1,h.i)),h},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),i})(),b(Z0,{get when(){return S0(()=>j()==="repo"&&T().length>0)()&&!R0()},get children(){var i=W("box");return q(i,"gap",0),q(i,"paddingLeft",2),U(i,b(Z0,{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})),I((_)=>q(a,"fg",Y.textMuted,_)),a}}),null),U(i,b(z1,{get each(){return H0().items},children:(a,_)=>{let h=()=>H0().start+_(),d0=()=>h()===n(),P0=()=>v()==="saved"&&a===J.defaultRepo,C0=()=>v()==="saved"&&B().trim()===a,n0=()=>v()==="browse"?"/":"",B1=()=>P0()?` ${F("newTask.hint.currentDir")}`:"";return(()=>{var F1=W("text");return q(F1,"wrapMode","none"),q(F1,"onMouseUp",()=>g1(h())),U(F1,()=>d0()?"\u25B8 ":" ",null),U(F1,a,null),U(F1,n0,null),U(F1,B1,null),I((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(Z0,{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})),I((_)=>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",(h)=>{R(!0),A(OJ(h))}),q(_,"onSubmit",()=>{A(OF(L(),u0(),p0())),R(!0),O0()}),I((h)=>{var d0=d("baseRef"),P0=A0("baseRef"),C0=L(),n0=j()==="baseRef";return d0!==h.e&&(h.e=q(a,"fg",d0,h.e)),P0!==h.t&&(h.t=q(a,"attributes",P0,h.t)),C0!==h.a&&(h.a=q(_,"value",C0,h.a)),n0!==h.o&&(h.o=q(_,"focused",n0,h.o)),h},{e:void 0,t:void 0,a:void 0,o:void 0}),i})(),b(Z0,{get when(){return S0(()=>j()==="baseRef"&&u0().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(()=>c0().length===0);return()=>_()?F("newTask.hint.noBranchesFound"):F("newTask.hint.noMatchBranch")})()),I((_)=>q(a,"fg",Y.textMuted,_)),i}}),b(Z0,{get when(){return S0(()=>j()==="baseRef")()&&u0().length>0},get children(){var i=W("box");return q(i,"gap",0),q(i,"paddingLeft",2),q(i,"paddingBottom",1),U(i,b(Z0,{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})),I((_)=>q(a,"fg",Y.textMuted,_)),a}}),null),U(i,b(z1,{get each(){return L0().items},children:(a,_)=>{let h=()=>L0().start+_(),d0=()=>h()===p0(),P0=()=>L().trim()===a;return(()=>{var C0=W("text");return q(C0,"wrapMode","none"),q(C0,"onMouseUp",()=>{A(a),R(!0),P(h()),V("confirm")}),U(C0,()=>d0()?"\u25B8 ":" ",null),U(C0,a,null),I((n0)=>{var B1=d0()?Y.primary:P0()?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(Z0,{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})),I((_)=>q(a,"fg",Y.textMuted,_)),a}}),null),i}})]}}),null),U(v0,b(Z0,{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",(h)=>w(OJ(h))),q(_,"onSubmit",()=>{if(!x().trim())return;V("cloneParent")}),I((h)=>{var d0=d("cloneUrl"),P0=A0("cloneUrl"),C0=x(),n0=j()==="cloneUrl";return d0!==h.e&&(h.e=q(a,"fg",d0,h.e)),P0!==h.t&&(h.t=q(a,"attributes",P0,h.t)),C0!==h.a&&(h.a=q(_,"value",C0,h.a)),n0!==h.o&&(h.o=q(_,"focused",n0,h.o)),h},{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",(h)=>{r(!1),g(OJ(h))}),q(_,"onSubmit",()=>I0()),I((h)=>{var d0=d("cloneParent"),P0=A0("cloneParent"),C0=S(),n0=j()==="cloneParent";return d0!==h.e&&(h.e=q(a,"fg",d0,h.e)),P0!==h.t&&(h.t=q(a,"attributes",P0,h.t)),C0!==h.a&&(h.a=q(_,"value",C0,h.a)),n0!==h.o&&(h.o=q(_,"focused",n0,h.o)),h},{e:void 0,t:void 0,a:void 0,o:void 0}),i})(),b(Z0,{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")),I((_)=>q(a,"fg",Y.textMuted,_)),i}}),b(Z0,{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(Z0,{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})),I((_)=>q(a,"fg",Y.textMuted,_)),a}}),null),U(i,b(z1,{get each(){return h0().items},children:(a,_)=>{let h=()=>h0().start+_(),d0=()=>h()===t0();return(()=>{var P0=W("text"),C0=T0("/");return D(P0,C0),q(P0,"wrapMode","none"),q(P0,"onMouseUp",()=>c1(h())),U(P0,()=>d0()?"\u25B8 ":" ",C0),U(P0,a,C0),I((n0)=>{var B1=d0()?Y.primary:Y.textMuted,F1=d0()?Xz.BOLD:void 0;return B1!==n0.e&&(n0.e=q(P0,"fg",B1,n0.e)),F1!==n0.t&&(n0.t=q(P0,"attributes",F1,n0.t)),n0},{e:void 0,t:void 0}),P0})()}}),null),U(i,b(Z0,{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})),I((_)=>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",(h)=>{c(!0),y(OJ(h))}),q(_,"onSubmit",()=>V("cloneBaseRef")),I((h)=>{var d0=d("cloneFolder"),P0=A0("cloneFolder"),C0=M(),n0=F("newTask.placeholder.folderName"),B1=j()==="cloneFolder";return d0!==h.e&&(h.e=q(a,"fg",d0,h.e)),P0!==h.t&&(h.t=q(a,"attributes",P0,h.t)),C0!==h.a&&(h.a=q(_,"value",C0,h.a)),n0!==h.o&&(h.o=q(_,"placeholder",n0,h.o)),B1!==h.i&&(h.i=q(_,"focused",B1,h.i)),h},{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",(h)=>u(OJ(h))),q(_,"onSubmit",()=>void g0()),I((h)=>{var d0=d("cloneBaseRef"),P0=A0("cloneBaseRef"),C0=e(),n0=j()==="cloneBaseRef";return d0!==h.e&&(h.e=q(a,"fg",d0,h.e)),P0!==h.t&&(h.t=q(a,"attributes",P0,h.t)),C0!==h.a&&(h.a=q(_,"value",C0,h.a)),n0!==h.o&&(h.o=q(_,"focused",n0,h.o)),h},{e:void 0,t:void 0,a:void 0,o:void 0}),i})(),b(Z0,{get when(){return Y0()},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,()=>s()||F("newTask.clone.progressFallback")),I((_)=>q(a,"fg",Y.textMuted,_)),i}})]}}),null),U(v0,b(Z0,{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",(h)=>b0(OJ(h))),q(_,"onSubmit",()=>N()),I((h)=>{var d0=d("adoptFilter"),P0=A0("adoptFilter"),C0=D0(),n0=F("newTask.placeholder.adoptFilter"),B1=j()==="adoptFilter";return d0!==h.e&&(h.e=q(a,"fg",d0,h.e)),P0!==h.t&&(h.t=q(a,"attributes",P0,h.t)),C0!==h.a&&(h.a=q(_,"value",C0,h.a)),n0!==h.o&&(h.o=q(_,"placeholder",n0,h.o)),B1!==h.i&&(h.i=q(_,"focused",B1,h.i)),h},{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")})),I((_)=>q(a,"fg",Y.textMuted,_)),i})(),b(Z0,{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")),I((_)=>q(a,"fg",Y.textMuted,_)),i}}),b(Z0,{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")})()),I((_)=>q(a,"fg",Y.textMuted,_)),i}}),b(Z0,{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(Z0,{get when(){return G0().start>0},get children(){var _=W("text");return q(_,"wrapMode","none"),U(_,()=>F("newTask.picker.moreAbove",{count:G0().start})),I((h)=>q(_,"fg",Y.textMuted,h)),_}}),a),U(i,b(z1,{get each(){return Q0()},children:(_,h)=>{let d0=()=>G0().start+h(),P0=()=>d0()===i0(),C0=()=>x0().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()),K0(_.path)}),U(B1,()=>P0()?"\u25B8 ":" ",null),U(B1,()=>C0()?"[x] ":"[ ] ",null),U(B1,()=>_.branch,null),U(B1,(()=>{var F1=S0(()=>!!n0());return()=>F1()?` (${n0()})`:""})(),null),I((F1)=>{var UJ=P0()?Y.primary:C0()?Y.accent:Y.textMuted,Hz=P0()?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(Z0,{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})),I((h)=>q(_,"fg",Y.textMuted,h)),_}}),a),q(a,"wrapMode","none"),U(a,(()=>{var _=S0(()=>x0().size>0);return()=>_()?F("newTask.adopt.hintSelected",{count:x0().size}):F("newTask.adopt.hintDefault")})()),I((_)=>q(a,"fg",Y.textMuted,_)),i}})]}}),null),U(v0,b(Z0,{get when(){return f0()},get children(){var i=W("text"),a=T0("\u203B ");return D(i,a),q(i,"wrapMode","word"),U(i,f0,null),I((_)=>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",()=>B0()),U(qz,(()=>{var i=S0(()=>!!Y0());return()=>i()?F("newTask.button.cloning"):S0(()=>j()==="confirm")()?F("newTask.button.createFocused"):F("newTask.button.create")})()),I((i)=>{var a=Xz.BOLD,_=Y.text,h=d("engine"),d0=A0("engine"),P0=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)),h!==i.a&&(i.a=q(X1,"fg",h,i.a)),d0!==i.o&&(i.o=q(X1,"attributes",d0,i.o)),P0!==i.i&&(i.i=q(aJ,"fg",P0,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 RF=C(()=>{E();E();E();E();E();E();E();E();ZJ();a1();W1();E1();Kf();gJ();Df();iJ();KF();m9()});function wT(J,z,Y,Z){return new Promise((G)=>{J.replace(()=>b(AF,{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();RF();m9();Lf={show:wT}});function gF(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 NF}from"@opentui/core";function PT(J){let z=d1(),{theme:Y}=E0(),[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:gF(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"),y=W("box"),$=W("text"),c=W("box"),e=W("text"),u=W("input"),Y0=W("box"),q0=W("text");return D(O,R),D(O,S),D(O,y),D(O,c),D(O,Y0),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",(s)=>Q(OJ(s))),q(M,"onSubmit",()=>L()),D(y,$),q(y,"flexDirection","row"),q(y,"gap",2),U($,()=>F("quickTask.engineLabel")),U(y,b(z1,{get each(){return J.engines},children:(s)=>(()=>{var W0=W("text");return q(W0,"onMouseUp",()=>{f(s),G("engine")}),U(W0,()=>J.engineLabel(s)),I((N0)=>{var v=H()===s?Y.primary:Y.textMuted,o=H()===s?NF.BOLD:void 0;return v!==N0.e&&(N0.e=q(W0,"fg",v,N0.e)),o!==N0.t&&(N0.t=q(W0,"attributes",o,N0.t)),N0},{e:void 0,t:void 0}),W0})()}),null),D(c,e),D(c,u),q(c,"gap",0),U(e,()=>F("quickTask.branchLabel")),q(u,"onInput",(s)=>V(OJ(s))),q(u,"onSubmit",()=>L()),D(Y0,q0),q(Y0,"paddingBottom",1),U(q0,()=>F("quickTask.legend")),I((s)=>{var W0=NF.BOLD,N0=Y.text,v=Y.textMuted,o=A("prompt"),m=X(),k=F("quickTask.promptPlaceholder"),t=Z()==="prompt",T=A("engine"),n=A("branch"),X0=j(),H0=J.defaultBaseRef,R0=Z()==="branch",M0=Y.textMuted;return W0!==s.e&&(s.e=q(x,"attributes",W0,s.e)),N0!==s.t&&(s.t=q(x,"fg",N0,s.t)),v!==s.a&&(s.a=q(w,"fg",v,s.a)),o!==s.o&&(s.o=q(g,"fg",o,s.o)),m!==s.i&&(s.i=q(M,"value",m,s.i)),k!==s.n&&(s.n=q(M,"placeholder",k,s.n)),t!==s.s&&(s.s=q(M,"focused",t,s.s)),T!==s.h&&(s.h=q($,"fg",T,s.h)),n!==s.r&&(s.r=q(e,"fg",n,s.r)),X0!==s.d&&(s.d=q(u,"value",X0,s.d)),H0!==s.l&&(s.l=q(u,"placeholder",H0,s.l)),R0!==s.u&&(s.u=q(u,"focused",R0,s.u)),M0!==s.c&&(s.c=q(q0,"fg",M0,s.c)),s},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0}),O})()}function hT(J,z){return new Promise((Y)=>{J.replace(()=>b(PT,GL(z,{onSubmit:(Z)=>Y(Z),onCancel:()=>Y(void 0)})),()=>Y(void 0)),J.setSize("medium")})}var Ff,CF;var kF=C(()=>{E();E();E();E();E();E();E();W1();a1();E1();ZJ();gJ();iJ();pG();Ff=["prompt","engine","branch"];CF={show:hT}});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 bF(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(vT.Provider,{value:V,get children(){return J.children}})}var Of,vT;var SF=C(()=>{E();E();W1();Of=["sidebar","workspace","files","terminal"],vT=Ez(null)});function IF(){for(let J of pY){let z=mT.get(J.id);if(!z)continue;let Y=J;Y.keys=[...z.keys],Y.hint=z.hint?{...z.hint}:void 0}}function yF(){cT((J)=>J+1)}function n9(J){return dT.get(J)}function nT(J){return n9(J)?.keys??[]}function rY(J){let z=[];for(let Y in J){let Z=J[Y];if(!Z)continue;let G=nT(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,mT,d9,cT,dT;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"}}],mT=new Map(pY.map((J)=>[J.id,{keys:[...J.keys],hint:J.hint?{...J.hint}:void 0}]));[d9,cT]=p(0);dT=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=MK(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 TF(){return oY??Af()}function xF(){oY=null,FK(),gK(),IF();let J=Af();return yF(),J}var oY=null;var i9=C(()=>{Vj();_q();$q();rG()});var iT=250,oG,uF;var SQ=C(()=>{lG();gY();A9();({use:oG,provider:uF}=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")},iT)}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 EF=()=>{};import{existsSync as $T,mkdirSync as aT}from"fs";import{tmpdir as _T}from"os";import{basename as pT,isAbsolute as rT,join as l9,resolve as oT}from"path";function tT(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 eT(){if(gf!==void 0)return gf;let z=(process.env.PATH??"").split(":").filter(Boolean);return gf=sT.find((Y)=>z.some((Z)=>$T(l9(Z,Y))))??null,gf}async function Jx(){return hF??=(async()=>{aT(PF,{recursive:!0});let J=l9(PF,pT(wF)),z=Bun.file(J);if(await z.exists())return J;return await Bun.write(z,Bun.file(wF)),J})(),hF}function vF(J=0.4){let z=eT();if(!z)return;Jx().then((Y)=>{try{Bun.spawn(tT(z,Y,J),{stdin:"ignore",stdout:"ignore",stderr:"ignore"}).unref?.()}catch{}}).catch(()=>{return})}var wF,PF,sT,gf,hF;var mF=C(()=>{EF();wF=rT(Rf)?Rf:oT(import.meta.dir,Rf),PF=l9(_T(),"kobe-sfx"),sT=["ffplay","mpv","mpg123","mpg321","mplayer","afplay","play","omxplayer","aplay","cmdmp3","cvlc","powershell.exe"]});function cF(J,z){return`${J}:${z}`}function nF(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=cF(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{}vF()}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),zx)}}function j(K){Z((L)=>L.filter((A)=>A.id!==K))}function V(K,L){X((A)=>{let O=cF(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(dF.Provider,{value:B,get children(){return J.children}})}function Nf(){let J=PJ(dF);if(!J)throw Error("useNotifications must be used within a NotificationsProvider");return J}var zx=4500,dF;var Cf=C(()=>{E();W1();y9();mF();SQ();dF=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=Zx(z.focusAccent);if(Y&&Y!==J.focusAccent())J.setFocusAccent(Y)}}function Zx(J){if(J===null)return"primary";return Yx.includes(J)?J:null}var Yx;var iF=C(()=>{Yx=["primary","success","info"]});import{readFileSync as Gx}from"fs";function lF(J){try{let z=JSON.parse(Gx(_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 Qx(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 Hx(J){let z=()=>J.children,Y=()=>J.notifications?b(nF,{get children(){return z()}}):z(),Z=()=>b(YF,{get children(){return Y()}}),G=()=>J.focus?b(bF,{initial:"sidebar",get children(){return Z()}}):Z(),X=()=>J.kv?b(uF,{get children(){return G()}}):G();return b(FL,{mode:"dark",get theme(){return J.theme},get children(){return X()}})}function fx(J){let{theme:z}=E0();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")),I((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 jx(J){let z=E0(),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,xF()}),S1(()=>{X=!0,Z()?.dispose()}),null}async function KJ(J){Qx(J.logContext);let z=lF(Xx),Y=await J.setup(z),Z=J.providers?.kv??!0,G=J.providers?.focus??!0,X=J.providers?.notifications??!1;await BL(()=>b(Hx,{get theme(){return z.theme},kv:Z,focus:G,notifications:X,get children(){return[b(jx,{boot:z}),b(l7,{fallback:(Q)=>b(fx,{error:Q}),get children(){return Y.root()}})]}}),qx(Y.onDestroy))}var Xx="claude";var DY=C(()=>{E();E();E();E();E();E();E();GZ();W1();c9();SF();i9();SQ();Cf();E1();GH();ZJ();iJ();iF();a9()});import{homedir as Bx}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(),WK));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:Bx();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 $F={};Q1($F,{startNewTaskHost:()=>Wx,NewTaskPage:()=>If});function If(J){let{theme:z}=E0(),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),I((X)=>q(G,"backgroundColor",z.background,X)),G})()}async function Wx(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 aF(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 Vx(J,z){let Y=z==="archived";return J.filter((Z)=>Z.archived===Y)}function o9(J,z,Y,Z="default",G){let X=Vx(J,z),Q=Y?.trim()??"",H=G?Qz(G):null,f=Q?X.filter((O)=>aF(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(_F),B.sort(_F);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 _F(J,z){let Y=pF(z)-pF(J);if(Y!==0)return Y;return String(z.id).localeCompare(String(J.id))}function pF(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 Kx(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 rF(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:Kx(X.repo,G),count:X.count})).sort((X,Q)=>X.label.localeCompare(Q.label))}function oF(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 sF(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 tF(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 Ux(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 eF(J,z){return yf(J,z,(Y)=>Y.task.id,(Y,Z)=>Y.flatIndex===Z.flatIndex&&Ux(Y.task,Z.task),{samePosition:!0})}var Tf=()=>{};var JM={};Q1(JM,{startQuickTaskHost:()=>Mx});async function Dx(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 Lx(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 Fx(J){let{theme:z}=E0(),Y=d1();GJ(()=>{Z()});async function Z(){let G=J.ctx,X=await CF.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 Lx(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),I((X)=>q(G,"backgroundColor",z.background,X)),G})()}async function Mx(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 Dx(z,J.session);return{root:()=>Y?b(Fx,{ctx:Y,orchestrator:z}):b(If,{defaultRepo:Z,orchestrator:z}),onDestroy:()=>{z?.dispose()}}}})}var zM=C(()=>{E();E();E();E();RJ();W1();_Y();XZ();eJ();A1();v1();pq();a1();kF();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=Ax[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)=>Ox[H.toLowerCase().trim()]??H).join("")} ${xf(X,!0)}`}var Ox,Ax;var t9=C(()=>{Ox={ctrl:"\u2303",control:"\u2303",alt:"\u2325",opt:"\u2325",option:"\u2325",shift:"\u21E7",cmd:"\u2318",command:"\u2318",meta:"\u2318",super:"\u2318"},Ax={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 YM}from"@opentui/core";function Rx(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}=E0(),Z=()=>Rx(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"),y=W("text"),$=W("box"),c=W("text");return D(g,M),D(g,$),q(g,"flexDirection","row"),q(g,"gap",2),q(g,"paddingLeft",1),D(M,y),q(M,"width",14),U(y,w),D($,c),q($,"flexGrow",1),U(c,()=>k9("desc",R.id)),U(g,(()=>{var e=S0(()=>S().length>0);return()=>e()?(()=>{var u=W("box"),Y0=W("text");return D(u,Y0),U(Y0,()=>`(${S().join(", ")})`),I((q0)=>q(Y0,"fg",Y.textMuted,q0)),u})():null})(),null),I((e)=>{var{primary:u,text:Y0}=Y;return u!==e.e&&(e.e=q(y,"fg",u,e.e)),Y0!==e.t&&(e.t=q(c,"fg",Y0,e.t)),e},{e:void 0,t:void 0}),g})()}}),null),I((R)=>{var x=Y.accent,w=YM.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})()})),I((L)=>{var A=YM.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 gx}from"@opentui/core";function ZM(J){let z=d1(),{theme:Y}=E0(),[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(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")})),I((O)=>{var R=gx.BOLD,x=Y.text,w=Y.textMuted,S=Y.accent,g=Z(),M=J.placeholder??J.currentTitle,y=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)),y!==O.s&&(O.s=q(A,"fg",y,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(()=>{E();E();E();E();E();E();E();ZJ();W1();E1();iJ();pG()});function Nx(J,z,Y={}){return new Promise((Z)=>{J.replace(()=>b(ZM,{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();GM();LY={show:Nx}});import{TextAttributes as Cx}from"@opentui/core";function kx(J){if(!J)return J;return J.charAt(0).toUpperCase()+J.slice(1)}function FY(J){let z=d1(),{theme:Y}=E0(),[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,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,()=>kx(B==="cancel"?J.label??F("common.cancel"):J.confirmLabel??F("common.confirm"))),I((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})()})),I((B)=>{var K=Cx.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 bx}from"fs";import{join as Sx}from"path";function XM(J){return J instanceof FJ}function QM(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{bx(Sx(Tz(),".kobe","tasks.json"))}catch(G){if(G.code!=="ENOENT")console.error("kobe: failed to delete tasks.json during reset:",G)}QM(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;QM(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 Ix(J){return`theme:${J}`}function GW(J){return`language:${J}`}function XW(J){return`accent:${J}`}function yx(J){return`engine:${J}`}function IQ(J){return`surface:${J}`}function QW(J){return[...J.themeNames.map((z)=>({id:Ix(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 Tx(J){return[...J.map((z)=>({id:yx(z),kind:"engine",vendor:z})),{id:"add-engine",kind:"engineAdd"}]}function xx(){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 HM(J,z){switch(J){case"general":return QW(z);case"engines":return Tx(z.engineList);case"accounts":case"keys":return[];case"feedback":return xx();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 fM(J){let{theme:z}=E0();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}`)),I((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 jM(J){let z=E0(),{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"),y=W("text"),$=W("text"),c=W("box"),e=W("box"),u=W("text"),Y0=W("text"),q0=W("box"),s=W("text"),W0=W("text"),N0=W("box"),v=W("text"),o=W("box"),m=W("text"),k=W("text"),t=W("box"),T=W("text"),n=W("text"),X0=W("box"),H0=W("text"),R0=T0(" "),M0=W("box"),c0=W("text"),u0=T0(" "),p0=W("box"),P=W("text"),L0=W("text"),z0=W("box"),V0=W("text"),a0=T0(" "),t0=W("box"),w0=W("text"),h0=W("text"),U1=W("box"),r=W("text"),D0=T0(" "),b0=W("box"),i0=W("text"),f1=T0(" "),x0=W("box"),j1=W("text"),R1=W("text"),G1=W("box"),G0=W("text"),Q0=W("box"),K0=W("text");return D(M,y),D(M,$),D(M,c),D(M,e),D(M,q0),D(M,o),D(M,t),D(M,p0),D(M,t0),D(M,x0),q(M,"flexDirection","column"),q(M,"gap",1),U(y,()=>F("settings.general.theme")),U($,()=>F("settings.general.themeHint")),q(c,"flexDirection","column"),q(c,"gap",0),U(c,b(z1,{get each(){return J.themeNames()},children:(N,f0)=>{let y0=()=>J.level()==="body"&&J.bodyRow()===f0(),O0=()=>N===z.selected;return(()=>{var g0=W("box"),F0=W("text");return 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(f0()),J.setThemeCursor(f0()),J.selectTheme(N)}),q(F0,"wrapMode","none"),U(F0,()=>O0()?"\u25CF ":" ",null),U(F0,N,null),I((B0)=>{var s0=y0()?Y.primary:void 0,e0=y0()?Y.selectedListItemText:O0()?Y.accent:Y.text,Y1=y0()||O0()?o0.BOLD:void 0;return s0!==B0.e&&(B0.e=q(g0,"backgroundColor",s0,B0.e)),e0!==B0.t&&(B0.t=q(F0,"fg",e0,B0.t)),Y1!==B0.a&&(B0.a=q(F0,"attributes",Y1,B0.a)),B0},{e:void 0,t:void 0,a:void 0}),g0})()}})),D(e,u),D(e,Y0),q(e,"flexDirection","column"),q(e,"gap",0),q(e,"paddingTop",1),U(u,()=>F("settings.general.language")),q(Y0,"wrapMode","word"),U(Y0,()=>F("settings.general.languageHint")),U(e,b(z1,{each:mZ,children:(N)=>{let f0=()=>G(GW(N.id)),y0=()=>J.level()==="body"&&J.bodyRow()===f0(),O0=()=>J.currentLocale()===N.id;return(()=>{var g0=W("box"),F0=W("text");return 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(f0()),J.selectLanguage(N.id)}),q(F0,"wrapMode","none"),U(F0,()=>O0()?"\u25CF ":" ",null),U(F0,()=>N.label,null),I((B0)=>{var s0=y0()?Y.primary:void 0,e0=y0()?Y.selectedListItemText:O0()?Y.accent:Y.text,Y1=y0()||O0()?o0.BOLD:void 0;return s0!==B0.e&&(B0.e=q(g0,"backgroundColor",s0,B0.e)),e0!==B0.t&&(B0.t=q(F0,"fg",e0,B0.t)),Y1!==B0.a&&(B0.a=q(F0,"attributes",Y1,B0.a)),B0},{e:void 0,t:void 0,a:void 0}),g0})()}}),null),D(q0,s),D(q0,W0),D(q0,N0),q(q0,"flexDirection","column"),q(q0,"gap",0),q(q0,"paddingTop",1),U(s,()=>F("settings.general.transparent")),q(W0,"wrapMode","word"),U(W0,()=>F("settings.general.transparentHint")),D(N0,v),q(N0,"flexDirection","row"),q(N0,"paddingLeft",1),q(N0,"paddingRight",1),q(N0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(X()),J.toggleTransparent()}),q(v,"wrapMode","none"),U(v,(()=>{var N=S0(()=>!!z.transparentBackground);return()=>N()?F("settings.general.on"):F("settings.general.off")})()),D(o,m),D(o,k),q(o,"flexDirection","column"),q(o,"gap",0),q(o,"paddingTop",1),U(m,()=>F("settings.general.focusAccent")),q(k,"wrapMode","word"),U(k,()=>F("settings.general.focusAccentHint")),U(o,b(z1,{each:vZ,children:(N)=>{let f0=()=>G(XW(N)),y0=()=>J.level()==="body"&&J.bodyRow()===f0(),O0=()=>z.focusAccent===N;return(()=>{var g0=W("box"),F0=W("text");return 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(f0()),J.selectFocusAccent(N)}),q(F0,"wrapMode","none"),U(F0,()=>O0()?"\u25CF ":" ",null),U(F0,()=>F(`settings.general.accent${N.charAt(0).toUpperCase()}${N.slice(1)}`),null),I((B0)=>{var s0=y0()?Y.primary:void 0,e0=y0()?Y.selectedListItemText:O0()?Y.focusAccent:Y.text,Y1=y0()||O0()?o0.BOLD:void 0;return s0!==B0.e&&(B0.e=q(g0,"backgroundColor",s0,B0.e)),e0!==B0.t&&(B0.t=q(F0,"fg",e0,B0.t)),Y1!==B0.a&&(B0.a=q(F0,"attributes",Y1,B0.a)),B0},{e:void 0,t:void 0,a:void 0}),g0})()}}),null),D(t,T),D(t,n),D(t,X0),D(t,M0),q(t,"flexDirection","column"),q(t,"gap",0),q(t,"paddingTop",1),U(T,()=>F("settings.general.notifications")),q(n,"wrapMode","word"),U(n,()=>F("settings.general.notificationsHint")),D(X0,H0),q(X0,"flexDirection","row"),q(X0,"gap",1),q(X0,"paddingLeft",1),q(X0,"paddingRight",1),q(X0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(Q()),J.toggleToast()}),D(H0,R0),q(H0,"wrapMode","none"),U(H0,()=>J.toastEnabled()?"[x]":"[ ]",R0),U(H0,()=>F("settings.general.toast"),null),D(M0,c0),q(M0,"flexDirection","row"),q(M0,"gap",1),q(M0,"paddingLeft",1),q(M0,"paddingRight",1),q(M0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(H()),J.toggleSound()}),D(c0,u0),q(c0,"wrapMode","none"),U(c0,()=>J.soundEnabled()?"[x]":"[ ]",u0),U(c0,()=>F("settings.general.sound"),null),D(p0,P),D(p0,L0),D(p0,z0),q(p0,"flexDirection","column"),q(p0,"gap",0),q(p0,"paddingTop",1),U(P,()=>F("settings.general.zen")),q(L0,"wrapMode","word"),U(L0,()=>F("settings.general.zenHint")),D(z0,V0),q(z0,"flexDirection","row"),q(z0,"gap",1),q(z0,"paddingLeft",1),q(z0,"paddingRight",1),q(z0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(f()),J.toggleZenKeepsTasks()}),D(V0,a0),q(V0,"wrapMode","none"),U(V0,()=>J.zenKeepsTasks()?"[x]":"[ ]",a0),U(V0,()=>F("settings.general.zenKeepTasks"),null),D(t0,w0),D(t0,h0),D(t0,U1),D(t0,b0),q(t0,"flexDirection","column"),q(t0,"gap",0),q(t0,"paddingTop",1),U(w0,()=>F("settings.general.surface")),q(h0,"wrapMode","word"),U(h0,()=>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(x0,j1),D(x0,R1),D(x0,G1),D(x0,Q0),q(x0,"flexDirection","column"),q(x0,"gap",0),q(x0,"paddingTop",1),U(j1,()=>F("settings.general.editor")),q(R1,"wrapMode","word"),U(R1,()=>F("settings.general.editorHint")),D(G1,G0),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(G0,"wrapMode","none"),U(G0,()=>F("settings.general.editorRow",{kind:J.editorKind()})),D(Q0,K0),q(Q0,"flexDirection","row"),q(Q0,"gap",1),q(Q0,"paddingLeft",1),q(Q0,"paddingRight",1),q(Q0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(K()),J.editEditorCustom()}),q(K0,"wrapMode","none"),U(K0,()=>F("settings.general.editorCustom",{cmd:J.editorCustomCommand().trim()||F("settings.general.editorCustomUnset")})),I((N)=>{var f0=Y.text,y0=o0.BOLD,O0=Y.textMuted,g0=Y.text,F0=o0.BOLD,B0=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,d=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,v0=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,h=Y.textMuted,d0=x()?Y.primary:void 0,P0=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(y,"fg",f0,N.e)),y0!==N.t&&(N.t=q(y,"attributes",y0,N.t)),O0!==N.a&&(N.a=q($,"fg",O0,N.a)),g0!==N.o&&(N.o=q(u,"fg",g0,N.o)),F0!==N.i&&(N.i=q(u,"attributes",F0,N.i)),B0!==N.n&&(N.n=q(Y0,"fg",B0,N.n)),s0!==N.s&&(N.s=q(s,"fg",s0,N.s)),e0!==N.h&&(N.h=q(s,"attributes",e0,N.h)),Y1!==N.r&&(N.r=q(W0,"fg",Y1,N.r)),q1!==N.d&&(N.d=q(N0,"backgroundColor",q1,N.d)),g1!==N.l&&(N.l=q(v,"fg",g1,N.l)),I0!==N.u&&(N.u=q(v,"attributes",I0,N.u)),c1!==N.c&&(N.c=q(m,"fg",c1,N.c)),s1!==N.w&&(N.w=q(m,"attributes",s1,N.w)),d!==N.m&&(N.m=q(k,"fg",d,N.m)),A0!==N.f&&(N.f=q(T,"fg",A0,N.f)),k1!==N.y&&(N.y=q(T,"attributes",k1,N.y)),l!==N.g&&(N.g=q(n,"fg",l,N.g)),k0!==N.p&&(N.p=q(X0,"backgroundColor",k0,N.p)),J0!==N.b&&(N.b=q(H0,"fg",J0,N.b)),v0!==N.T&&(N.T=q(H0,"attributes",v0,N.T)),P1!==N.A&&(N.A=q(M0,"backgroundColor",P1,N.A)),X1!==N.O&&(N.O=q(c0,"fg",X1,N.O)),qJ!==N.I&&(N.I=q(c0,"attributes",qJ,N.I)),$J!==N.S&&(N.S=q(P,"fg",$J,N.S)),aJ!==N.W&&(N.W=q(P,"attributes",aJ,N.W)),HJ!==N.C&&(N.C=q(L0,"fg",HJ,N.C)),_z!==N.B&&(N.B=q(z0,"backgroundColor",_z,N.B)),qz!==N.v&&(N.v=q(V0,"fg",qz,N.v)),i!==N.k&&(N.k=q(V0,"attributes",i,N.k)),a!==N.x&&(N.x=q(w0,"fg",a,N.x)),_!==N.j&&(N.j=q(w0,"attributes",_,N.j)),h!==N.q&&(N.q=q(h0,"fg",h,N.q)),d0!==N.z&&(N.z=q(U1,"backgroundColor",d0,N.z)),P0!==N.P&&(N.P=q(r,"fg",P0,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(G0,"fg",yW,N.G)),TW!==N.U&&(N.U=q(G0,"attributes",TW,N.U)),xW!==N.K&&(N.K=q(Q0,"backgroundColor",xW,N.K)),uW!==N.V&&(N.V=q(K0,"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 BM(J){let{theme:z}=E0(),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),I((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,y=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)),y!==R.n&&(R.n=q(O,"fg",y,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")),I((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 WM(J){let{theme:z}=E0(),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(Z0,{get when(){return J.claudeStatus()===null},get children(){var K=W("text");return U(K,()=>F("settings.accounts.checking")),I((L)=>q(K,"fg",z.textMuted,L)),K}}),null),U(Q,b(Z0,{get when(){return J.claudeStatus()},children:(K)=>(()=>{var L=W("box"),A=W("text");return D(L,A),q(L,"flexDirection","column"),q(L,"gap",0),q(A,"wrapMode","word"),U(A,()=>Y(K())),U(L,()=>{let O=K().account;if(O.kind==="oauth"){let 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),I((w)=>q(x,"fg",z.success,w)),x})()}return(()=>{var R=W("text");return U(R,()=>F("settings.accounts.notLoggedIn")),I((x)=>q(R,"fg",z.textMuted,x)),R})()},null),U(L,b(Z0,{get when(){return K().accountError},children:(O)=>(()=>{var R=W("text");return q(R,"wrapMode","word"),U(R,()=>`! ${O()}`),I((x)=>q(R,"fg",z.warning,x)),R})()}),null),I((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(Z0,{get when(){return J.codexStatus()===null},get children(){var K=W("text");return U(K,()=>F("settings.accounts.checking")),I((L)=>q(K,"fg",z.textMuted,L)),K}}),null),U(f,b(Z0,{get when(){return J.codexStatus()},children:(K)=>(()=>{var L=W("box"),A=W("text");return D(L,A),q(L,"flexDirection","column"),q(L,"gap",0),q(A,"wrapMode","word"),U(A,()=>Y(K())),U(L,()=>{let O=K().account;if(O.kind==="chatgpt")return(()=>{var 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),I((x)=>q(R,"fg",z.success,x)),R})();if(O.kind==="apikey")return(()=>{var R=W("text");return U(R,()=>F("settings.accounts.apiKeyConfigured")),I((x)=>q(R,"fg",z.success,x)),R})();return(()=>{var R=W("text");return U(R,()=>F("settings.accounts.notLoggedIn")),I((x)=>q(R,"fg",z.textMuted,x)),R})()},null),U(L,b(Z0,{get when(){return K().accountError},children:(O)=>(()=>{var R=W("text");return q(R,"wrapMode","word"),U(R,()=>`! ${O()}`),I((x)=>q(R,"fg",z.warning,x)),R})()}),null),I((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(Z0,{get when(){return J.copilotStatus()===null},get children(){var K=W("text");return U(K,()=>F("settings.accounts.checking")),I((L)=>q(K,"fg",z.textMuted,L)),K}}),null),U(V,b(Z0,{get when(){return J.copilotStatus()},children:(K)=>(()=>{var L=W("box"),A=W("text");return D(L,A),q(L,"flexDirection","column"),q(L,"gap",0),q(A,"wrapMode","word"),U(A,()=>Y(K())),U(L,()=>{let O=K().account;if(O.kind==="token")return(()=>{var R=W("text");return U(R,()=>F("settings.accounts.tokenConfigured",{source:O.source})),I((x)=>q(R,"fg",z.success,x)),R})();if(O.kind==="oauth")return(()=>{var R=W("text");return U(R,()=>F("settings.accounts.copilotDetected")),I((x)=>q(R,"fg",z.success,x)),R})();return(()=>{var R=W("text");return U(R,()=>F("settings.accounts.notLoggedIn")),I((x)=>q(R,"fg",z.textMuted,x)),R})()},null),U(L,b(Z0,{get when(){return K().accountError},children:(O)=>(()=>{var R=W("text");return q(R,"wrapMode","word"),U(R,()=>`! ${O()}`),I((x)=>q(R,"fg",z.warning,x)),R})()}),null),I((O)=>q(A,"fg",K().binary.found?z.textMuted:z.warning,O)),L})()}),null),I((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 VM(J){let{theme:z}=E0(),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(Z0,{get when(){return J.status()},get children(){var M=W("text");return q(M,"wrapMode","word"),U(M,()=>J.status()),I((y)=>q(M,"fg",J.status().startsWith("error:")?z.warning:z.success,y)),M}}),null),I((M)=>{var y=z.text,$=o0.BOLD,c=z.textMuted,e=Q(Z()),u=H(Z()),Y0=J.title(),q0=F("settings.feedback.titlePlaceholder"),s=Z(),W0=Q(G()),N0=H(G()),v=J.body(),o=F("settings.feedback.descriptionPlaceholder"),m=G(),k=X()?z.primary:z.backgroundElement,t=X()?z.selectedListItemText:z.accent,T=o0.BOLD;return y!==M.e&&(M.e=q(V,"fg",y,M.e)),$!==M.t&&(M.t=q(V,"attributes",$,M.t)),c!==M.a&&(M.a=q(B,"fg",c,M.a)),e!==M.o&&(M.o=q(A,"fg",e,M.o)),u!==M.i&&(M.i=q(A,"attributes",u,M.i)),Y0!==M.n&&(M.n=q(O,"value",Y0,M.n)),q0!==M.s&&(M.s=q(O,"placeholder",q0,M.s)),s!==M.h&&(M.h=q(O,"focused",s,M.h)),W0!==M.r&&(M.r=q(x,"fg",W0,M.r)),N0!==M.d&&(M.d=q(x,"attributes",N0,M.d)),v!==M.l&&(M.l=q(w,"initialValue",v,M.l)),o!==M.u&&(M.u=q(w,"placeholder",o,M.u)),m!==M.c&&(M.c=q(w,"focused",m,M.c)),k!==M.w&&(M.w=q(S,"backgroundColor",k,M.w)),t!==M.m&&(M.m=q(g,"fg",t,M.m)),T!==M.f&&(M.f=q(g,"attributes",T,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 KM(J){let{theme:z}=E0(),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"),y=W("text"),$=W("text"),c=W("box"),e=W("text"),u=W("text"),Y0=W("box"),q0=W("text"),s=W("text"),W0=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(Z0,{get when(){return J.hasDaemon},get children(){var v=W("box"),o=W("text"),m=W("text"),k=W("box"),t=W("text");return D(v,o),D(v,m),D(v,k),q(v,"flexDirection","column"),q(v,"gap",0),q(v,"paddingTop",1),U(o,()=>F("settings.dev.restart")),q(m,"wrapMode","word"),U(m,()=>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")),I((T)=>{var n=z.text,X0=o0.BOLD,H0=z.textMuted,R0=Z()?z.primary:z.backgroundElement,M0=Z()?z.selectedListItemText:z.accent,c0=o0.BOLD;return n!==T.e&&(T.e=q(o,"fg",n,T.e)),X0!==T.t&&(T.t=q(o,"attributes",X0,T.t)),H0!==T.a&&(T.a=q(m,"fg",H0,T.a)),R0!==T.o&&(T.o=q(k,"backgroundColor",R0,T.o)),M0!==T.i&&(T.i=q(t,"fg",M0,T.i)),c0!==T.n&&(T.n=q(t,"attributes",c0,T.n)),T},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),v}}),x),q(x,"wrapMode","word"),U(x,()=>F("settings.dev.doctorHint")),D(w,S),D(w,g),D(w,M),D(w,$),D(w,c),D(w,u),D(w,Y0),D(w,s),D(w,W0),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,y),q(M,"flexDirection","row"),q(M,"paddingLeft",1),q(M,"paddingRight",1),q(M,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(G()),J.toggleRemoteProjects()}),U(y,(()=>{var v=S0(()=>!!J.remoteProjectsEnabled());return()=>v()?F("settings.dev.remoteOn"):F("settings.dev.remoteOff")})()),q($,"wrapMode","word"),U($,()=>F("settings.dev.autoStatusHint")),D(c,e),q(c,"flexDirection","row"),q(c,"paddingLeft",1),q(c,"paddingRight",1),q(c,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(Q()),J.toggleAutoStatus()}),U(e,(()=>{var v=S0(()=>!!J.autoStatusEnabled());return()=>v()?F("settings.dev.autoStatusOn"):F("settings.dev.autoStatusOff")})()),q(u,"wrapMode","word"),U(u,()=>F("settings.dev.dispatcherHint")),D(Y0,q0),q(Y0,"flexDirection","row"),q(Y0,"paddingLeft",1),q(Y0,"paddingRight",1),q(Y0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(f()),J.toggleDispatcher()}),U(q0,(()=>{var v=S0(()=>!!J.dispatcherEnabled());return()=>v()?F("settings.dev.dispatcherOn"):F("settings.dev.dispatcherOff")})()),q(s,"wrapMode","word"),U(s,()=>F("settings.dev.archivedHistoryHint")),D(W0,N0),q(W0,"flexDirection","row"),q(W0,"paddingLeft",1),q(W0,"paddingRight",1),q(W0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(V()),J.toggleArchivedHistory()}),U(N0,(()=>{var v=S0(()=>!!J.archivedHistoryEnabled());return()=>v()?F("settings.dev.archivedHistoryOn"):F("settings.dev.archivedHistoryOff")})()),I((v)=>{var o=z.text,m=o0.BOLD,k=z.textMuted,t=Y()?z.primary:z.backgroundElement,T=Y()?z.selectedListItemText:z.warning,n=o0.BOLD,X0=z.textMuted,H0=z.text,R0=o0.BOLD,M0=z.textMuted,c0=X()?z.primary:z.backgroundElement,u0=X()?z.selectedListItemText:z.text,p0=J.remoteProjectsEnabled()?o0.BOLD:void 0,P=z.textMuted,L0=H()?z.primary:z.backgroundElement,z0=H()?z.selectedListItemText:z.text,V0=J.autoStatusEnabled()?o0.BOLD:void 0,a0=z.textMuted,t0=j()?z.primary:z.backgroundElement,w0=j()?z.selectedListItemText:z.text,h0=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 o!==v.e&&(v.e=q(L,"fg",o,v.e)),m!==v.t&&(v.t=q(L,"attributes",m,v.t)),k!==v.a&&(v.a=q(A,"fg",k,v.a)),t!==v.o&&(v.o=q(O,"backgroundColor",t,v.o)),T!==v.i&&(v.i=q(R,"fg",T,v.i)),n!==v.n&&(v.n=q(R,"attributes",n,v.n)),X0!==v.s&&(v.s=q(x,"fg",X0,v.s)),H0!==v.h&&(v.h=q(S,"fg",H0,v.h)),R0!==v.r&&(v.r=q(S,"attributes",R0,v.r)),M0!==v.d&&(v.d=q(g,"fg",M0,v.d)),c0!==v.l&&(v.l=q(M,"backgroundColor",c0,v.l)),u0!==v.u&&(v.u=q(y,"fg",u0,v.u)),p0!==v.c&&(v.c=q(y,"attributes",p0,v.c)),P!==v.w&&(v.w=q($,"fg",P,v.w)),L0!==v.m&&(v.m=q(c,"backgroundColor",L0,v.m)),z0!==v.f&&(v.f=q(e,"fg",z0,v.f)),V0!==v.y&&(v.y=q(e,"attributes",V0,v.y)),a0!==v.g&&(v.g=q(u,"fg",a0,v.g)),t0!==v.p&&(v.p=q(Y0,"backgroundColor",t0,v.p)),w0!==v.b&&(v.b=q(q0,"fg",w0,v.b)),h0!==v.T&&(v.T=q(q0,"attributes",h0,v.T)),U1!==v.A&&(v.A=q(s,"fg",U1,v.A)),r!==v.O&&(v.O=q(W0,"backgroundColor",r,v.O)),D0!==v.I&&(v.I=q(N0,"fg",D0,v.I)),b0!==v.S&&(v.S=q(N0,"attributes",b0,v.S)),v},{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 UM(){let{theme:J}=E0(),z=TF(),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(Z0,{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,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(x,T0(" tmux.tab.new: ctrl+y # tmux session key (see below)")),D(w,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]")),I((y)=>{var $=J.text,c=o0.BOLD,e=J.textMuted,u=J.textMuted,Y0=J.textMuted,q0=J.textMuted,s=J.textMuted,W0=J.textMuted,N0=J.textMuted,v=J.textMuted,o=J.textMuted;return $!==y.e&&(y.e=q(K,"fg",$,y.e)),c!==y.t&&(y.t=q(K,"attributes",c,y.t)),e!==y.a&&(y.a=q(L,"fg",e,y.a)),u!==y.o&&(y.o=q(A,"fg",u,y.o)),Y0!==y.i&&(y.i=q(O,"fg",Y0,y.i)),q0!==y.n&&(y.n=q(R,"fg",q0,y.n)),s!==y.s&&(y.s=q(x,"fg",s,y.s)),W0!==y.h&&(y.h=q(w,"fg",W0,y.h)),N0!==y.r&&(y.r=q(S,"fg",N0,y.r)),v!==y.d&&(y.d=q(g,"fg",v,y.d)),o!==y.l&&(y.l=q(M,"fg",o,y.l)),y},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0}),B}}),j),U(Z,b(Z0,{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(Z0,{get when(){return z.applied.length===0},get children(){var L=W("text");return U(L,()=>F("settings.keybindings.none")),I((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(" / ")})`),I((O)=>q(A,"fg",J.text,O)),A})()}),null),I((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(Z0,{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}`),I((O)=>q(A,"fg",J.warning,O)),A})()}),null),I((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,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(", ")}.`),I((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 DM=C(()=>{E();E();E();E();E();E();E();E();E();W1();i9();E1();ZJ();_G();$q();pG();qW()});import{TextAttributes as ux}from"@opentui/core";function Ex(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=E0(),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((d)=>d===Y.selected))),M=XM(J.orchestrator),[y,$]=p(null),[c,e]=p(null),[u,Y0]=p(null),q0=!1;_0(()=>{if(H()!=="accounts"||q0)return;q0=!0,Yq().then($),Zq().then(e),Gq().then(Y0)});function s(){return HM(H(),{themeNames:S(),focusAccentSlots:vZ,engineList:U1(),hasDaemon:M})}function W0(){return s().length}function N0(){return TZ(J.kv.get(fY,yZ))}function v(d){if(Y.selected===d)return;if(!Y.set(d))return;J.kv.set("activeTheme",d),J.onVisualPrefsChange?.()}function o(){return C9()}function m(d){if(C9()===d)return;RQ(d),J.kv.set(kf,d),J.onVisualPrefsChange?.()}function k(d){if(Y.transparentBackground===d)return;Y.setTransparentBackground(d),J.kv.set("transparentBackground",d),J.onVisualPrefsChange?.()}function t(){k(!Y.transparentBackground)}function T(d){if(Y.focusAccent===d)return;Y.setFocusAccent(d),J.kv.set("focusAccent",d),J.onVisualPrefsChange?.()}function n(d){J.kv.set(fY,d)}function X0(){return J.kv.get("notifications.toast.enabled",!0)!==!1}function H0(){return J.kv.get("notifications.sound.enabled",!0)!==!1}function R0(){J.kv.set("notifications.toast.enabled",!X0())}function M0(){J.kv.set("notifications.sound.enabled",!H0())}function c0(){return J.kv.get(QH,!0)!==!1}function u0(){J.kv.set(QH,!c0())}function p0(){return J.kv.get("experimental.remoteProjects",!1)===!0}function P(){J.kv.set("experimental.remoteProjects",!p0())}function L0(){return J.kv.get(UZ,!1)===!0}function z0(){J.kv.set(UZ,!L0())}function V0(){return J.kv.get(DZ,!1)===!0}function a0(){J.kv.set(DZ,!V0())}function t0(){return J.kv.get(yX,!1)===!0}function w0(){J.kv.set(yX,!t0())}function h0(){let d=J.kv.get("customEngineIds",[]);return Array.isArray(d)?d.filter((A0)=>typeof A0==="string"&&A0.trim().length>0):[]}function U1(){return[...$1,...h0()]}function r(d){let A0=J.kv.get(Mz(d),"");return typeof A0==="string"?A0.trim():""}function D0(d){return r(d)||IX(d).join(" ")}function b0(d){return fJ(d)&&r(d).length===0&&!f1(d)}function i0(d){let A0=J.kv.get(Oz(d),"");return typeof A0==="string"?A0.trim():""}function f1(d){return i0(d).length>0}function x0(d){return i0(d)||Bj[d]||d}let[j1,R1]=p(uJ(N1("lastSelectedVendor"),h0()));function G1(d){return j1()===d}function G0(d){e1("lastSelectedVendor",d),J.kv.set("lastSelectedVendor",d),R1(d)}async function Q0(d){let A0=await LY.show(z,D0(d),{dialogTitle:`${x0(d)} launch command`,fieldLabel:"command",submitLabel:"save",allowEmpty:!0});if(A0===void 0)return;J.kv.set(Mz(d),A0.trim())}async function K0(d){let A0=await LY.show(z,x0(d),{dialogTitle:`${x0(d)} display name (blank = default)`,fieldLabel:"name",submitLabel:"save",allowEmpty:!0});if(A0===void 0)return;J.kv.set(Oz(d),A0.trim())}function N(d){if(J.kv.set(Mz(d),""),J.kv.set(Oz(d),""),!fJ(d))J.kv.set("customEngineIds",h0().filter((A0)=>A0!==d)),K((A0)=>Math.max(0,Math.min(A0,U1().length)))}async function f0(){let d=await LY.show(z,"",{dialogTitle:"Add engine",fieldLabel:"id",submitLabel:"next",placeholder:"lowercase slug, e.g. aider"});if(d===void 0)return;let A0=d.trim().toLowerCase();if(!A0||fJ(A0)||h0().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",[...h0(),A0]),k1.trim())J.kv.set(Mz(A0),k1.trim());let k0=l?.trim()??"";J.kv.set(Oz(A0),k0&&k0!==A0?k0:Ex(A0))}function y0(){if(H()!=="engines"||X()!=="body")return null;let d=Ef(s(),B());return d?.kind==="engine"?d.vendor:null}function O0(){return bG(J.kv.get(HY,xH))}function g0(){let d=IZ.indexOf(O0()),A0=IZ[(d+1)%IZ.length];if(A0)J.kv.set(HY,A0)}function F0(){let d=J.kv.get(cY,"");return typeof d==="string"?d:""}async function B0(){let d=await LY.show(z,F0(),{dialogTitle:"Custom editor command (use {file} for the path)",fieldLabel:"command",submitLabel:"save",allowEmpty:!0});if(d===void 0)return;let A0=d.trim();if(J.kv.set(cY,A0),A0)J.kv.set(HY,"custom")}async function s0(){w("submitting...");try{let d=vG({title:L(),body:O()});w(`sent: ${d.url}`),A(""),R(""),K(0)}catch(d){w(`error: ${d instanceof Error?d.message:String(d)}`)}}let e0=()=>H()==="feedback"&&X()==="body";function Y1(d){let A0=B()+d;if(A0<0||A0>2){Q("sidebar");return}K(A0)}function q1(){if(X()!=="sidebar"||W0()===0)return;if(Q("body"),K(0),H()==="general")g(0)}function g1(d){if(X()==="sidebar"){let l=(j()+d+dZ.length)%dZ.length;V(l);let k0=dZ[l];if(k0)f(k0.id),K(0);return}let A0=W0();if(A0===0)return;let k1=(B()+d+A0)%A0;if(K(k1),Ef(s(),k1)?.kind==="theme")g(k1)}function I0(d){f(d),V(dZ.findIndex((A0)=>A0.id===d)),K(0),Q("sidebar")}let c1={theme:(d)=>v(d.name),language:(d)=>m(d.locale),transparent:()=>t(),focusAccent:(d)=>T(d.slot),toast:()=>R0(),sound:()=>M0(),zenKeepTasks:()=>u0(),surface:(d)=>n(d.surface),editorKind:()=>g0(),editorCustom:()=>void B0(),engine:(d)=>void Q0(d.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:()=>P(),devAutoStatus:()=>z0(),devDispatcher:()=>a0(),devArchivedHistory:()=>w0()};function s1(){let d=Ef(s(),B());if(!d)return;c1[d.kind](d)}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 d=y0();if(d)K0(d)}},{key:"x",cmd:()=>{let d=y0();if(d)N(d)}},{key:"d",cmd:()=>{let d=y0();if(d)G0(d)}}]})),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 d=W("box"),A0=W("box"),k1=W("text"),l=W("text"),k0=W("box"),J0=W("box"),v0=W("box"),P1=W("text");return D(d,A0),D(d,k0),D(d,v0),q(d,"paddingLeft",2),q(d,"paddingRight",2),q(d,"paddingBottom",1),q(d,"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(fM,{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(Z0,{get when(){return H()==="general"},get children(){return b(jM,{level:X,bodyRow:B,setLevel:Q,setBodyRow:K,themeNames:S,setThemeCursor:g,selectTheme:v,currentLocale:o,selectLanguage:m,toggleTransparent:t,selectFocusAccent:T,toastEnabled:X0,soundEnabled:H0,toggleToast:R0,toggleSound:M0,zenKeepsTasks:c0,toggleZenKeepsTasks:u0,settingsSurface:N0,selectSurface:n,editorKind:O0,cycleEditorKind:g0,editorCustomCommand:F0,editEditorCustom:()=>void B0()})}}),null),U(J0,b(Z0,{get when(){return H()==="engines"},get children(){return b(BM,{level:X,bodyRow:B,setLevel:Q,setBodyRow:K,get vendors(){return U1()},isCustom:(X1)=>!fJ(X1),displayName:x0,commandText:D0,isDefault:b0,isDefaultEngine:G1,editEngine:(X1)=>void Q0(X1),renameEngine:(X1)=>void K0(X1),resetEngine:N,onAddEngine:()=>void f0()})}}),null),U(J0,b(Z0,{get when(){return H()==="accounts"},get children(){return b(WM,{claudeStatus:y,codexStatus:c,copilotStatus:u})}}),null),U(J0,b(Z0,{get when(){return H()==="keys"},get children(){return b(UM,{})}}),null),U(J0,b(Z0,{get when(){return H()==="feedback"},get children(){return b(VM,{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(Z0,{get when(){return H()==="dev"},get children(){return b(KM,{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:p0,toggleRemoteProjects:P,autoStatusEnabled:L0,toggleAutoStatus:z0,dispatcherEnabled:V0,toggleDispatcher:a0,archivedHistoryEnabled:t0,toggleArchivedHistory:w0})}}),null),D(v0,P1),q(v0,"paddingTop",0),U(P1,(()=>{var X1=S0(()=>!!e0());return()=>X1()?F("settings.nav.feedback"):F("settings.nav.default")})()),I((X1)=>{var qJ=ux.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}),d})()}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();DM();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 wx}from"@opentui/core";function FM(){let{theme:J}=E0(),z=lz(),Y=Nf(),Z=()=>Y.toasts().slice(-LM),G=()=>Math.max(0,z().width-Px-hx),X=()=>Math.max(0,z().height-vx-LM-1);return b(Z0,{get when(){return Y.toasts().length>0},get children(){var Q=W("box");return q(Q,"position","absolute"),q(Q,"zIndex",2500),q(Q,"width",40),q(Q,"flexDirection","column"),q(Q,"gap",0),U(Q,b(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),I((A)=>{var O=f(),R=j(),x=wx.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})()}})),I((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 LM=4,Px=40,hx=2,vx=2;var MM=C(()=>{E();E();E();E();E();E();E();W1();Cf();E1()});import{TextAttributes as mx}from"@opentui/core";function cx(J,z){let Y=J?`v${J}`:F("update.skew.olderBuild");return F("update.skew.hint",{daemon:Y,clientVersion:z})}function OM(J){let{theme:z}=E0(),Y=()=>Math.max(4,J.width()-2);return b(Z0,{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,()=>cx(J.daemonVersion(),J.clientVersion)),I((j)=>{var{warning:V,warning:B}=z,K=mx.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 AM=C(()=>{E();E();E();E();E();E();W1();E1();ZJ()});function RM(J,z){return J.find((Y)=>Y.id!==z&&!Y.archived)}async function dx(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=RM(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 nx(J){let z=RM(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 gM(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 dx({orch:J.orch,tasks:J.tasks(),taskId:z,logger:J.logger,logPrefix:J.logPrefix,updateActiveTask:J.updateActiveTask}))return;await J.reload?.()}async function NM(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 nx({orch:J.orch,tasks:J.tasks(),taskId:z,logger:J.logger,logPrefix:J.logPrefix,switchBeforeKill:J.switchBeforeKill,updateActiveTask:J.updateActiveTask});await J.reload?.(),J.onTaskDeleted?.(z,X)}async function CM(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 kM(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 bM(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 SM(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 IM=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 ix}from"child_process";import{existsSync as lx}from"fs";import{basename as $x,delimiter as ax,isAbsolute as _x,join as px}from"path";function fW(J,z,Y){if(_x(J))return Y(J);let Z=z.PATH??"";for(let G of Z.split(ax)){if(!G)continue;if(Y(px(G,J)))return!0}return!1}function sx(J){let z=$x(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 yM(J={}){let z=J.env??process.env,Y=J.platform??process.platform,Z=J.exists??lx,G=z.KOBE_OPEN_EDITOR?.trim();if(G)return{id:"env",label:sx(G),command:G,args:[]};for(let X of rx)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 ox)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 tx(J,z){return[z.command,[...z.args,J]]}function TM(J,z,Y={}){if(!J)return!1;let Z=Y.spawn??ix,[G,X]=tx(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 rx,ox;var xM=C(()=>{rx=[{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"}],ox=[{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 ex}from"fs/promises";import{join as Ju}from"path";async function Gu(J){try{let z=await ex(Ju(J,".git","HEAD"));return`${z.mtimeMs}:${z.size}`}catch{return null}}async function Xu(J,z,Y=GY){let Z=await Gu(J);if(Z!==null){let H=uM.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)uM.set(J,{fingerprint:Z,value:G});return G}function wM(J){return EM.read(J)}function PM(J){EM.poll(J)}var zu=2000,Yu=30000,Zu=1500,uM,EM;var hM=C(()=>{dY();yQ();uM=new Map;EM=Pf({initial:"",timeoutMs:zu,slowRetryMs:Yu,minIntervalMs:Zu,run:(J,z)=>Xu(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 vM(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 mM=C(()=>{rG();gJ()});function BW(J,z){return zX(J,z)}function WW(J,z){return` ${BW(J,Math.max(0,z))}`}var cM=()=>{};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 Hu(J){switch(J){case"rate_limited":return{text:F("tasks.activity.rateLimited"),tone:"warning"};case"permission_needed":return{text:F("tasks.activity.permissionNeeded"),tone:"warning"};case"error":return{text:F("tasks.activity.error"),tone:"error"};default:return null}}function iM(J){switch(J.prStatus?.checkState){case"passing":return{glyph:"\u2713",tone:"success"};case"failing":return{glyph:"\u2717",tone:"error"};case"pending":return{glyph:"\u2022",tone:"warning"};default:return null}}function fu(){return F("tasks.subtitle.noTracking")}function ju(){return F("tasks.subtitle.materializing")}function Bu(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=Qu[z.status],X=J.activity?.state,Q=X!==void 0,H=Wu(X),f=Hu(X),j=Bu(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?fu():qu(z.status),O=V?J.truncateBranch(ju(),J.subtitleBudget):f?J.truncateBranch(f.text,J.subtitleBudget):Z.length>0?J.truncateBranch(Z,J.subtitleBudget):J.truncateBranch(A,J.subtitleBudget),R=j?dM:H?.glyph??G.glyph,x=j?dM: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 Wu(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 Qu,YX,nM=100,dM="\xB7";var lM=C(()=>{ZJ();a1();Tf();Qu={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 $M.read(J)}function DW(J){$M.poll(J)}var Vu=4000,Ku=60000,Uu=1500,Du,$M;var aM=C(()=>{dY();yQ();xG();yQ();Du={added:0,deleted:0},$M=Pf({initial:Du,equals:iz,timeoutMs:Vu,slowRetryMs:Ku,minIntervalMs:Uu,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 Lu(J){switch(J){case"active":return F("tasks.view.workspace");case"archived":return F("tasks.view.archives")}}function pM(J,z=Mu){return zX(J,z)}function Ou(J){let z=0;for(let Y of J)z+=(Y.codePointAt(0)??0)>=4352?2:1;return z}function rM(J){let{theme:z}=E0(),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((x0)=>x0.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((x0)=>x0+i0)};r.keyInput.on("keypress",D0),S1(()=>r.keyInput.off("keypress",D0))});let[O,R]=p(0),x=setInterval(()=>R((r)=>r+1),Fu);S1(()=>clearInterval(x));let[w,S]=p(0),g=setInterval(()=>S((r)=>(r+1)%YX.length),nM);S1(()=>clearInterval(g));let M=()=>J.sortMode?.()??"default",y=U0(()=>rF(J.tasks(),Z())),$=U0(()=>{let r=B();if(!r)return null;let D0=Qz(r);return y().find((b0)=>Qz(b0.repo)===D0)??null}),c=U0(()=>$()?.repo??null),e=U0(()=>$()?.label??"all"),u=U0(()=>{let r=$();return r?r.count:y().reduce((D0,b0)=>D0+b0.count,0)}),Y0=U0(()=>{let r=u();return`${r} ${r===1?F("tasks.project.taskSingular"):F("tasks.project.taskPlural")}`}),q0=U0((r)=>eF(r,o9(J.tasks(),Z(),X()?H():"",M(),c())),[]),s=U0(()=>s9(q0())),W0=U0(()=>tF(q0())),N0=U0(()=>W0().projectRows),v=U0(()=>W0().taskRows),o=U0(()=>{let r=new Map;for(let D0 of q0())r.set(D0.flatIndex,D0);return r}),m=U0(()=>s9(o9(J.tasks(),Z(),"",M(),c())).length),k=U0(()=>v().length>0);_0(()=>{let r=B(),D0=y();if(r!==null&&D0.length>0&&(D0.length<=1||$()===null))K(null)});function t(){let r=y();if(r.length<=1){K(null);return}let D0=c(),b0=D0?Qz(D0):null,i0=b0===null?-1:r.findIndex((x0)=>Qz(x0.repo)===b0),f1=r[i0+1];K(f1?.repo??null)}let T=()=>J.width?J.width():_M,n=U0(()=>Math.max(6,T()-9)),X0=U0(()=>Math.max(6,T()-16)),H0=lz(),R0=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)}),[M0,c0]=p(null),[u0,p0]=p(-1),P,L0,z0,V0=new Map;_0(()=>{let r=J.width?J.width():_M,D0=z0;if(!D0)return;D0.width=r,D0.flexShrink=1,D0.minHeight=0}),_0(BJ([u0,q0],([r])=>{let D0=o().get(r);if(!D0)return;let b0=D0.task.kind==="main"?P:L0;if(!b0)return;if(b0.viewport.height<=0)return;let i0=V0.get(r);if(!i0)return;b0.scrollChildIntoView(i0.id)})),_0(BJ(()=>[J.selectedId(),s()],([r,D0])=>{let b0=o1(u0),i0=sF(r,D0,b0);if(i0!==b0)p0(i0)})),_0(BJ(Z,()=>{let r=s();p0(r.length>0?0:-1)},{defer:!0})),_0(BJ(c,(r)=>p0(oF(q0(),r)),{defer:!0})),_0(BJ([X,H],()=>{if(!X())return;let r=s();p0(r.length>0?0:-1)}));function a0(r){let D0=Z(),b0=TQ.findIndex((x0)=>x0.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=s().indexOf(D0);if(b0>=0)p0(b0)};vM({focused:Y,cursorIndex:u0,setCursorIndex:p0,flatTaskIds:s,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 w0=(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(Z0,{get when(){return r.topPad},get children(){var x0=W("box"),j1=W("text");return D(x0,j1),q(x0,"flexShrink",0),D(j1,T0(" ")),q(j1,"wrapMode","none"),x0}}),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,T()-10-r.label.length-(r.suffix?.length??0)))),U(b0,b(Z0,{get when(){return r.suffix},get children(){var x0=W("text");return q(x0,"wrapMode","none"),U(x0,()=>r.suffix),I((j1)=>{var R1=z.info,G1=w1.BOLD;return R1!==j1.e&&(j1.e=q(x0,"fg",R1,j1.e)),G1!==j1.t&&(j1.t=q(x0,"attributes",G1,j1.t)),j1},{e:void 0,t:void 0}),x0}}),null),I((x0)=>{var j1=z.textMuted,R1=w1.BOLD,G1=z.border;return j1!==x0.e&&(x0.e=q(i0,"fg",j1,x0.e)),R1!==x0.t&&(x0.t=q(i0,"attributes",R1,x0.t)),G1!==x0.a&&(x0.a=q(f1,"fg",G1,x0.a)),x0},{e:void 0,t:void 0,a:void 0}),D0})(),h0=(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===u0(),f1=()=>D0.id===J.selectedId(),x0=U0(()=>{let f0=J.chatRunState?.();if(!f0)return!1;let y0=`${D0.id}:`;for(let[O0,g0]of f0)if(g0==="running"&&O0.startsWith(y0))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(),PM(D0.repo),wM(D0.repo)}),G1=U0(()=>VW({task:D0,activity:J.engineState?.().get(D0.id),job:J.taskJobs?.().get(D0.id),live:x0(),spinnerFrame:0,subtitleBudget:X0(),truncateBranch:pM,mainBranch:R1()})),G0=U0(()=>KW(G1(),w)),Q0=()=>!G0().loading?z.primary:h0(G0().tone),K0=()=>i0()?z.focusAccent:f1()?z.primary:void 0,N=()=>i0()||f1()?"\u258C":" ";return(()=>{var f0=W("box"),y0=W("box"),O0=W("box"),g0=W("text"),F0=W("box"),B0=W("text"),s0=W("text"),e0=W("box"),Y1=W("text"),q1=W("box"),g1=W("text");return D(f0,y0),q(f0,"flexDirection","column"),q(f0,"gap",0),q(f0,"paddingBottom",0),D(y0,O0),D(y0,e0),Gz((I0)=>{V0.set(b0,I0),S1(()=>{if(V0.get(b0)===I0)V0.delete(b0)})},y0),q(y0,"flexDirection","column"),q(y0,"gap",0),q(y0,"onMouseUp",()=>{if(p0(b0),J.onSelect(D0.id),J.activateOnClick)t0(D0.id)}),q(y0,"onMouseOver",(I0)=>c0({task:D0,x:I0.x,y:I0.y})),q(y0,"onMouseOut",()=>c0((I0)=>I0?.task.id===D0.id?null:I0)),D(O0,g0),D(O0,F0),q(O0,"flexDirection","row"),q(O0,"gap",0),q(g0,"wrapMode","none"),U(g0,N),D(F0,B0),D(F0,s0),q(F0,"flexDirection","row"),q(F0,"flexGrow",1),q(F0,"paddingRight",1),q(F0,"gap",0),q(B0,"wrapMode","none"),U(B0,()=>G0().projectGlyph),q(s0,"wrapMode","none"),q(s0,"flexGrow",1),U(s0,()=>WW(G0().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,()=>G0().subtitleText),U(q1,b(Z0,{get when(){return j1().added>0},get children(){var I0=W("text"),c1=T0("+");return D(I0,c1),q(I0,"wrapMode","none"),U(I0,()=>j1().added,null),I((s1)=>q(I0,"fg",z.success,s1)),I0}}),null),U(q1,b(Z0,{get when(){return j1().deleted>0},get children(){var I0=W("text"),c1=T0("\u2212");return D(I0,c1),q(I0,"wrapMode","none"),U(I0,()=>j1().deleted,null),I((s1)=>q(I0,"fg",z.error,s1)),I0}}),null),I((I0)=>{var c1=i0()?z.backgroundElement:void 0,s1=K0(),d=Q0(),A0=w1.BOLD,k1=z.text,l=w1.BOLD,k0=K0(),J0=z.textMuted,v0=w1.DIM;return c1!==I0.e&&(I0.e=q(y0,"backgroundColor",c1,I0.e)),s1!==I0.t&&(I0.t=q(g0,"fg",s1,I0.t)),d!==I0.a&&(I0.a=q(B0,"fg",d,I0.a)),A0!==I0.o&&(I0.o=q(B0,"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)),v0!==I0.r&&(I0.r=q(g1,"attributes",v0,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"),x0=W("box"),j1=W("text"),R1=W("scrollbox"),G1=W("box");return D(r,D0),D(r,f1),D(r,R1),Gz((G0)=>{z0=G0},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,T0("KOBE")),q(i0,"wrapMode","none"),U(b0,b(Z0,{get when(){return J.headerStatus?.()},children:(G0)=>(()=>{var Q0=W("text");return q(Q0,"wrapMode","none"),q(Q0,"onMouseUp",()=>J.onHeaderStatusClick?.()),U(Q0,()=>G0().label),I((K0)=>{var N=G0().emphasize?z.warning:z.textMuted,f0=G0().emphasize?w1.BOLD:w1.DIM;return N!==K0.e&&(K0.e=q(Q0,"fg",N,K0.e)),f0!==K0.t&&(K0.t=q(Q0,"attributes",f0,K0.t)),K0},{e:void 0,t:void 0}),Q0})()}),null),U(D0,b(Z0,{get when(){return J.onAddTask},get children(){var G0=W("text");return D(G0,T0("[+]")),q(G0,"wrapMode","none"),q(G0,"onMouseUp",()=>J.onAddTask?.()),I((Q0)=>{var K0=z.primary,N=w1.BOLD;return K0!==Q0.e&&(Q0.e=q(G0,"fg",K0,Q0.e)),N!==Q0.t&&(Q0.t=q(G0,"attributes",N,Q0.t)),Q0},{e:void 0,t:void 0}),G0}}),null),U(r,b(Z0,{get when(){return X()},get children(){var G0=W("box"),Q0=W("text"),K0=W("text"),N=W("text");return D(G0,Q0),D(G0,K0),D(G0,N),q(G0,"flexDirection","row"),q(G0,"gap",0),q(G0,"paddingBottom",1),q(G0,"paddingLeft",1),D(Q0,T0("/")),q(Q0,"wrapMode","none"),q(K0,"wrapMode","none"),U(K0,H),D(N,T0("\u2588")),q(N,"wrapMode","none"),U(G0,b(Z0,{get when(){return H().length===0},get children(){var f0=W("text"),y0=T0(" ");return D(f0,y0),q(f0,"wrapMode","none"),U(f0,()=>F("tasks.search.placeholder"),null),I((O0)=>q(f0,"fg",z.textMuted,O0)),f0}}),null),U(G0,b(Z0,{get when(){return H().length>0},get children(){var f0=W("text"),y0=T0(" "),O0=T0("/");return D(f0,y0),D(f0,O0),q(f0,"wrapMode","none"),U(f0,()=>s().length,O0),U(f0,m,null),I((g0)=>q(f0,"fg",z.textMuted,g0)),f0}}),null),I((f0)=>{var{info:y0,text:O0,info:g0}=z,F0=w1.BLINK;return y0!==f0.e&&(f0.e=q(Q0,"fg",y0,f0.e)),O0!==f0.t&&(f0.t=q(K0,"fg",O0,f0.t)),g0!==f0.a&&(f0.a=q(N,"fg",g0,f0.a)),F0!==f0.o&&(f0.o=q(N,"attributes",F0,f0.o)),f0},{e:void 0,t:void 0,a:void 0,o:void 0}),G0}}),f1),D(f1,x0),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(x0,j1),q(x0,"flexDirection","row"),q(x0,"gap",2),U(x0,b(z1,{each:TQ,children:(G0)=>{let Q0=()=>Z()===G0.view;return(()=>{var K0=W("text");return q(K0,"wrapMode","none"),q(K0,"onMouseUp",()=>G(G0.view)),U(K0,()=>Lu(G0.view)),I((N)=>{var f0=Q0()?z.primary:z.textMuted,y0=Q0()?w1.BOLD:void 0;return f0!==N.e&&(N.e=q(K0,"fg",f0,N.e)),y0!==N.t&&(N.t=q(K0,"attributes",y0,N.t)),N},{e:void 0,t:void 0}),K0})()}}),j1),D(j1,T0("[/]")),q(j1,"wrapMode","none"),U(f1,b(Z0,{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")),I((Q0)=>{var K0=z.textMuted,N=w1.DIM;return K0!==Q0.e&&(Q0.e=q(G0,"fg",K0,Q0.e)),N!==Q0.t&&(Q0.t=q(G0,"attributes",N,Q0.t)),Q0},{e:void 0,t:void 0}),G0}}),null),U(r,b(Z0,{get when(){return N0().length>0},get children(){var G0=W("box"),Q0=W("box"),K0=W("text"),N=W("text"),f0=W("scrollbox"),y0=W("box");return D(G0,Q0),D(G0,f0),q(G0,"flexDirection","column"),q(G0,"flexShrink",0),D(Q0,K0),D(Q0,N),q(Q0,"flexDirection","row"),q(Q0,"flexShrink",0),q(Q0,"gap",1),q(Q0,"paddingLeft",1),q(Q0,"paddingRight",1),q(Q0,"onMouseUp",()=>t()),q(K0,"wrapMode","none"),U(K0,()=>F("tasks.header.projects")),U(Q0,b(Z0,{get when(){return y().length>1},get children(){var O0=W("text");return q(O0,"wrapMode","none"),U(O0,e),I((g0)=>{var F0=c()?z.primary:z.textMuted,B0=c()?w1.BOLD:void 0;return F0!==g0.e&&(g0.e=q(O0,"fg",F0,g0.e)),B0!==g0.t&&(g0.t=q(O0,"attributes",B0,g0.t)),g0},{e:void 0,t:void 0}),O0}}),N),q(N,"wrapMode","none"),U(N,()=>"\u2500".repeat(Math.max(2,T()-10-F("tasks.header.projects").length-(y().length>1?e().length+1:0)-(y().length>1?Y0().length+1:0)))),U(Q0,b(Z0,{get when(){return y().length>1},get children(){var O0=W("text");return q(O0,"wrapMode","none"),U(O0,Y0),I((g0)=>{var F0=z.textMuted,B0=w1.DIM;return F0!==g0.e&&(g0.e=q(O0,"fg",F0,g0.e)),B0!==g0.t&&(g0.t=q(O0,"attributes",B0,g0.t)),g0},{e:void 0,t:void 0}),O0}}),null),D(f0,y0),Gz((O0)=>{P=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(y0,"flexShrink",0),q(y0,"gap",0),q(y0,"paddingRight",1),U(y0,b(z1,{get each(){return N0()},children:(O0)=>b(U1,{row:O0})})),I((O0)=>{var g0=z.textMuted,F0=w1.BOLD,B0=z.border,s0=R0();return g0!==O0.e&&(O0.e=q(K0,"fg",g0,O0.e)),F0!==O0.t&&(O0.t=q(K0,"attributes",F0,O0.t)),B0!==O0.a&&(O0.a=q(N,"fg",B0,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}),G0}}),R1),U(r,b(w0,{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((G0)=>{L0=G0},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 v()},children:(G0)=>{let{task:Q0,flatIndex:K0}=G0,N=()=>K0===u0(),f0=()=>Q0.id===J.selectedId(),y0=U0(()=>{let Y1=J.chatRunState?.();if(!Y1)return!1;let q1=`${Q0.id}:`;for(let[g1,I0]of Y1)if(I0==="running"&&g1.startsWith(q1))return!0;return!1}),O0=U0(()=>{let Y1=nH(J.worktreeChanges?.(),Q0.worktreePath);if(Y1)return Y1;if(O(),!Q0.archived)DW(Q0.worktreePath);return UW(Q0.worktreePath)},void 0,{equals:iz}),g0=U0(()=>VW({task:Q0,activity:J.engineState?.().get(Q0.id),job:J.taskJobs?.().get(Q0.id),live:y0(),spinnerFrame:0,subtitleBudget:X0(),truncateBranch:pM,mainBranch:""})),F0=U0(()=>KW(g0(),w)),B0=()=>h0(F0().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"),d=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)=>{V0.set(K0,J0),S1(()=>{if(V0.get(K0)===J0)V0.delete(K0)})},q1),q(q1,"flexDirection","column"),q(q1,"gap",0),q(q1,"onMouseUp",()=>{if(p0(K0),J.onSelect(Q0.id),J.activateOnClick)t0(Q0.id)}),q(q1,"onMouseOver",(J0)=>c0({task:Q0,x:J0.x,y:J0.y})),q(q1,"onMouseOut",()=>c0((J0)=>J0?.task.id===Q0.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,d),q(c1,"flexDirection","row"),q(c1,"flexGrow",1),q(c1,"paddingRight",1),q(c1,"gap",0),q(s1,"wrapMode","none"),U(s1,()=>F0().stateGlyph),q(d,"wrapMode","none"),q(d,"flexGrow",1),U(d,()=>WW(F0().titleText,n())),U(c1,b(Z0,{get when(){return S0(()=>!!J.moveMode?.())()&&N()},get children(){var J0=W("text");return q(J0,"wrapMode","none"),U(J0,()=>F("tasks.moveChip")),I((v0)=>q(J0,"fg",z.warning,v0)),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,()=>F0().subtitleText),U(l,b(Z0,{get when(){return Q0.pinned===!0},get children(){var J0=W("text");return D(J0,T0("\u25B4")),q(J0,"wrapMode","none"),I((v0)=>q(J0,"fg",z.warning,v0)),J0}}),null),U(l,b(Z0,{get when(){return iM(Q0)},children:(J0)=>(()=>{var v0=W("text");return q(v0,"wrapMode","none"),U(v0,()=>J0().glyph),I((P1)=>q(v0,"fg",h0(J0().tone),P1)),v0})()}),null),U(l,b(Z0,{get when(){return O0().added>0},get children(){var J0=W("text"),v0=T0("+");return D(J0,v0),q(J0,"wrapMode","none"),U(J0,()=>O0().added,null),I((P1)=>q(J0,"fg",z.success,P1)),J0}}),null),U(l,b(Z0,{get when(){return O0().deleted>0},get children(){var J0=W("text"),v0=T0("\u2212");return D(J0,v0),q(J0,"wrapMode","none"),U(J0,()=>O0().deleted,null),I((P1)=>q(J0,"fg",z.error,P1)),J0}}),null),I((J0)=>{var v0=N()?z.backgroundElement:void 0,P1=s0(),X1=B0(),qJ=w1.BOLD,$J=z.text,aJ=f0()||N()?w1.BOLD:void 0,HJ=s0(),_z=z.textMuted,qz=w1.DIM;return v0!==J0.e&&(J0.e=q(q1,"backgroundColor",v0,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(d,"fg",$J,J0.i)),aJ!==J0.n&&(J0.n=q(d,"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(Z0,{get when(){return s().length===0},get children(){var G0=W("box"),Q0=W("text");return D(G0,Q0),q(G0,"paddingTop",1),q(G0,"paddingLeft",1),U(Q0,(()=>{var K0=S0(()=>!!(X()&&H().trim().length>0));return()=>K0()?F("tasks.empty.noMatchSearch"):S0(()=>!!c())()?S0(()=>Z()==="active")()?F("tasks.empty.noActiveProject"):F("tasks.empty.noArchivedProject"):S0(()=>Z()==="active")()?F("tasks.empty.noActive"):F("tasks.empty.noArchived")})()),I((K0)=>q(Q0,"fg",z.textMuted,K0)),G0}}),null),U(G1,b(Z0,{get when(){return S0(()=>!!(c()&&s().length>0&&!k()))()&&!(X()&&H().trim().length>0)},get children(){var G0=W("box"),Q0=W("text");return D(G0,Q0),q(G0,"paddingTop",1),q(G0,"paddingLeft",1),q(Q0,"wrapMode","none"),U(Q0,(()=>{var K0=S0(()=>Z()==="active");return()=>K0()?F("tasks.empty.noActiveProject"):F("tasks.empty.noArchivedProject")})()),I((K0)=>{var N=z.textMuted,f0=w1.DIM;return N!==K0.e&&(K0.e=q(Q0,"fg",N,K0.e)),f0!==K0.t&&(K0.t=q(Q0,"attributes",f0,K0.t)),K0},{e:void 0,t:void 0}),G0}}),null),U(G1,b(Z0,{get when(){return S0(()=>Z()==="archived")()&&s().length>0},get children(){var G0=W("box"),Q0=W("text");return D(G0,Q0),q(G0,"paddingTop",1),q(G0,"paddingLeft",1),q(Q0,"wrapMode","none"),U(Q0,()=>F("tasks.archiveHint")),I((K0)=>{var N=z.textMuted,f0=w1.DIM;return N!==K0.e&&(K0.e=q(Q0,"fg",N,K0.e)),f0!==K0.t&&(K0.t=q(Q0,"attributes",f0,K0.t)),K0},{e:void 0,t:void 0}),G0}}),null),U(r,b(Z0,{get when(){return J.zenActive?.()},get children(){var G0=W("box"),Q0=W("text");return D(G0,Q0),q(G0,"flexShrink",0),q(G0,"paddingLeft",1),q(G0,"paddingRight",1),q(G0,"paddingTop",1),D(Q0,T0("\u262F ZEN")),q(Q0,"wrapMode","none"),q(Q0,"onMouseUp",()=>J.onZenClick?.()),I((K0)=>{var N=z.accent,f0=w1.BOLD;return N!==K0.e&&(K0.e=q(Q0,"fg",N,K0.e)),f0!==K0.t&&(K0.t=q(Q0,"attributes",f0,K0.t)),K0},{e:void 0,t:void 0}),G0}}),null),U(r,b(Z0,{get when(){return M0()},children:(G0)=>{let Q0=U0(()=>{let F0=G0().task,B0=[];if(B0.push({text:F0.kind==="main"?yz(F0.repo):F0.title,bold:!0}),F0.branch.length>0)B0.push({text:`\u2387 ${F0.branch}`});if(F0.worktreePath.length>0)B0.push({text:F0.worktreePath,dim:!0});return B0}),K0=72,N=U0(()=>Math.min(68,Math.max(...Q0().map((F0)=>Ou(F0.text))))),f0=U0(()=>N()+4),y0=U0(()=>Q0().length+2),O0=U0(()=>Math.max(0,Math.min(G0().x+2,H0().width-f0()-1))),g0=U0(()=>Math.max(0,Math.min(G0().y+1,H0().height-y0()-1)));return(()=>{var F0=W("box");return q(F0,"position","absolute"),q(F0,"zIndex",2600),q(F0,"flexDirection","column"),q(F0,"border",!0),q(F0,"paddingLeft",1),q(F0,"paddingRight",1),U(F0,b(z1,{get each(){return Q0()},children:(B0)=>(()=>{var s0=W("text");return q(s0,"wrapMode","none"),U(s0,(()=>{var e0=S0(()=>!!B0.dim);return()=>e0()?Au(B0.text,N()):BW(B0.text,N())})()),I((e0)=>{var Y1=B0.dim?z.textMuted:z.text,q1=B0.bold?w1.BOLD:B0.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})()})),I((B0)=>{var s0=O0(),e0=g0(),Y1=f0(),q1=z.focusAccent,g1=z.backgroundElement;return s0!==B0.e&&(B0.e=q(F0,"left",s0,B0.e)),e0!==B0.t&&(B0.t=q(F0,"top",e0,B0.t)),Y1!==B0.a&&(B0.a=q(F0,"width",Y1,B0.a)),q1!==B0.o&&(B0.o=q(F0,"borderColor",q1,B0.o)),g1!==B0.i&&(B0.i=q(F0,"backgroundColor",g1,B0.i)),B0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),F0})()}}),null),I((G0)=>{var Q0=Y()?z.focusAccent:z.textMuted,K0=w1.BOLD,N=z.textMuted,f0=w1.DIM;return Q0!==G0.e&&(G0.e=q(i0,"fg",Q0,G0.e)),K0!==G0.t&&(G0.t=q(i0,"attributes",K0,G0.t)),N!==G0.a&&(G0.a=q(j1,"fg",N,G0.a)),f0!==G0.o&&(G0.o=q(j1,"attributes",f0,G0.o)),G0},{e:void 0,t:void 0,a:void 0,o:void 0}),r})()}var _M=32,TQ,Fu=2000,Mu=16,Au;var oM=C(()=>{E();E();E();E();E();E();E();E();E();ZJ();E();W1();E1();E1();hM();Tf();mM();cM();lM();xG();aM();TQ=[{view:"active"},{view:"archived"}];Au=wf});var z3={};Q1(z3,{startTasksPane:()=>ku,legendRowCap:()=>J3,legendCap:()=>eM});import{existsSync as sM}from"fs";import{stat as Ru}from"fs/promises";import{TextAttributes as hf}from"@opentui/core";function tM(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 Nu(J){let{theme:z}=E0(),Y=d1(),Z=oG(),G=Nf(),[X,Q]=p(J.tasks().some((P)=>P.id===J.initialTaskId)?J.initialTaskId:J.tasks()[0]?.id??null),H=0;function f(P){G.notify({kind:"error",taskId:X()??"",tabId:"",title:P})}function j(P){G.notify({kind:"done",taskId:X()??"",tabId:"",title:P})}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=(P)=>{R(P),Z.set("tasksPane.projectFilter",P)},[w,S]=p(null),[g,M]=p(!1);{let P=process.env.TMUX_PANE;if(P){let L0=()=>{$0(["show-options","-wqv","-t",P,SY]).then(({code:V0,stdout:a0})=>{M(V0===0&&a0.trim().length>0)})};L0();let z0=setInterval(L0,1000);S1(()=>clearInterval(z0))}}let y=lz();_0(()=>{if(J.initialTaskId)return;let P=J.orch?.activeTaskSignal()();if(!P)return;Q(P)}),_0(BJ(()=>J.orch?.uiPrefsSignal()(),(P)=>{if(P&&P.sortMode!==o1(K))L(P.sortMode);if(P&&P.projectFilter!==o1(O))R(P.projectFilter)})),_0(()=>{let P=J.orch?.updateSignal()();if(P)S(P)});let $={orch:J.orch,tasks:()=>J.tasks(),confirm:async(P)=>await FY.show(Y,P.title,P.body,P.cancelLabel,P.confirmLabel)===!0,promptText:(P,L0)=>LY.show(Y,P,L0),logger:console,logPrefix:"[kobe tasks]",notifyError:f,notifyInfo:j,reload:()=>J.reload(),switchBeforeKill:!0,updateActiveTask:!0,onTaskDeleted:(P,L0)=>{if(X()!==P)return;let z0=J.tasks();Q(L0?.id??(z0.find((V0)=>!V0.archived)??z0[0])?.id??null)},promptNewTask:(P,L0,z0)=>Lf.show(Y,P,L0,z0),cursorRepo:()=>{let P=J.tasks();return(P.find((L0)=>L0.id===X())??P[0])?.repo},lastVendor:()=>uJ(N1("lastSelectedVendor"),EJ()),rememberVendor:(P)=>e1("lastSelectedVendor",P),openCreateSurface:async(P)=>{if(TZ(Z.get(fY,yZ))!=="chattab")return!1;let z0=await xJ();if(!z0)return!1;return await $X(z0,P),!0},selectTask:(P)=>Q(P),enterTask:(P)=>R0(P)};async function c(){await SM($)}async function e(){if(TZ(Z.get(fY,yZ))==="chattab"){let z0=await xJ();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 xJ();if(z0)await RG(z0)}catch(z0){console.error("[kobe tasks] failed to refresh workspace panes:",z0)}}async function u(){let P=await xJ();if(P){await lX(P);return}tG.show(Y)}async function Y0(){if(!w()?.hasUpdate){j(F("tasks.toast.alreadyLatest",{version:r0}));return}let L0=await xJ();if(!L0)return;await aX(L0)}async function q0(P){await gM($,P)}async function s(P){await NM($,P)}async function W0(P){await CM($,P)}async function N0(P){await kM($,P)}async function v(P){await bM($,P)}async function o(P){let z0=J.tasks().find((a0)=>a0.id===P)?.worktreePath;if(!z0||!sM(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(P)}catch(a0){console.error("[kobe tasks] task.ensureWorktree failed:",a0),f(tM(a0));return}await J.reload()}if(!z0||!sM(z0))return;let V0=yM();if(!V0){console.error("[kobe tasks] no editor/opener found; set KOBE_OPEN_EDITOR"),f(F("tasks.toast.noEditor"));return}if(!TM(z0,V0))console.error(`[kobe tasks] failed to open worktree with ${V0.label}`),f(F("tasks.toast.openWorktreeFailed",{label:V0.label}))}async function m(){if(!process.env.TMUX_PANE)return;let P=await xJ();if(!P)return;let L0=await BG(P);if(!L0)return;await m0(["select-pane","-t",L0])}async function k(P,L0){let z0=J.tasks().find((V0)=>V0.id===P);if(!z0||z0.kind==="main"||!J.orch)return;try{await J.orch.moveTask(P,L0)}catch(V0){console.error("[kobe tasks] task.move failed:",V0),f(F("tasks.toast.moveTaskFailed",{message:V0 instanceof Error?V0.message:String(V0)}));return}Q(P),await J.reload()}let[t,T]=p(Z.get("tasksPane.keysCollapsed",!1)===!0),n=(P)=>{T(P),Z.set("tasksPane.keysCollapsed",P)};_0(BJ(()=>J.orch?.uiPrefsSignal()(),(P)=>{if(P&&P.keysCollapsed!==o1(t))T(P.keysCollapsed)}));let[X0,H0]=p(!1);K1(()=>({enabled:Y.stack.length===0&&!X0(),bindings:rY({"help.open":()=>void u(),"task.new":()=>void c(),"settings.open.sidebar":()=>void e(),"tasks.update":()=>void Y0(),"tasks.openWorktree":()=>{let P=X();if(P)o(P)},"tasks.renameBranch":()=>{let P=X();if(P)N0(P)},"tasks.cycleEngine":()=>{let P=X();if(P)v(P)},"tasks.toggleKeys":()=>n(!t()),"tasks.focusEngine":()=>void m().catch((P)=>console.error("[kobe tasks] focus engine pane failed:",P))})}));async function R0(P){let L0=J.tasks().find((V0)=>V0.id===P);if(!L0)return;let z0=++H;try{await p9(J.orch,L0,L0.repo,L0.vendor,{includeInitPrompt:!0,heal:!0,captureFrom:!0,reload:()=>J.reload(),isCurrent:()=>H===z0})}catch(V0){if(V0 instanceof sY)if(V0.phase==="no-daemon")f(F("tasks.toast.noDaemonOpen"));else if(V0.phase==="worktree")f(tM(V0.cause??V0));else f(F("tasks.toast.sessionStartFailed"));else console.error("[kobe tasks] switchTo failed:",V0)}}let M0=U0(()=>{let P=w();if(P?.hasUpdate)return{label:`v${P.latest} \u2191`,emphasize:!0};return{label:`v${r0}`,emphasize:!1}}),c0=()=>J.orch?.daemonStaleSignal()()??!1,u0=()=>J.orch?.daemonVersionSignal()()??null,p0=U0(()=>J.tasks().find((P)=>P.id===X())?.kind==="main");return(()=>{var P=W("box"),L0=W("box");return D(P,L0),q(P,"flexDirection","column"),q(P,"flexGrow",1),U(P,b(OM,{stale:c0,daemonVersion:u0,clientVersion:r0,width:()=>y().width}),L0),q(L0,"flexGrow",1),q(L0,"flexShrink",1),U(L0,b(rM,{get tasks(){return J.tasks},selectedId:X,get onSelect(){return J.initialTaskId?()=>{}:Q},get pinnedSelection(){return!!J.initialTaskId},onActivate:(z0)=>void R0(z0),activateOnClick:!0,headerStatus:M0,onHeaderStatusClick:()=>void Y0(),onAddTask:()=>void c(),zenActive:g,onZenClick:()=>{(async()=>{let z0=await xJ();if(z0)await CZ(z0,"zen-toggle")})()},width:()=>y().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 z0=J.orch;if(!z0||z0.connectionStateSignal()()!=="online")return null;return z0.worktreeChangesSignal()()}:void 0},onRenameRequest:(z0)=>void W0(z0),onDeleteRequest:(z0)=>void s(z0),onArchiveRequest:(z0)=>void q0(z0),onLocalMergeRequest:(z0)=>{let V0=J.tasks().find((a0)=>a0.id===z0);if(!V0||V0.kind==="main")return;Q(z0),B((a0)=>!a0)},moveMode:V,onMoveRequest:(z0,V0)=>void k(z0,V0),onMoveModeExit:()=>B(!1),sortMode:K,projectFilter:O,onProjectFilterChange:x,onSortModeToggle:()=>{let z0=K()==="default"?"recent":"default";L(z0),Z.set("activeSortMode",z0)},focused:()=>Y.stack.length===0,onSearchActiveChange:H0})),U(P,b(Cu,{moveMode:V,selectedIsMain:p0,collapsed:t,onToggleCollapsed:()=>n(!t())}),null),I((z0)=>q(P,"backgroundColor",z.background,z0)),P})()}function eM(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 J3(J){let z=J.map(eM).filter((Y)=>Y!==null);return z.length>0?z.join("/"):null}function Cu(J){let{theme:z}=E0(),[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=J3(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(Z0,{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=T0("["),g=T0("]"),M=W("box"),y=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,y),q(M,"flexShrink",0),q(y,"wrapMode","none"),U(y,()=>V(A.label)),I(($)=>{var c=O()?z.textMuted:z.accent,e=O()?hf.DIM:hf.BOLD,u=j(),Y0=z.textMuted,q0=O()?hf.DIM:void 0;return c!==$.e&&($.e=q(w,"fg",c,$.e)),e!==$.t&&($.t=q(w,"attributes",e,$.t)),u!==$.a&&($.a=q(M,"width",u,$.a)),Y0!==$.o&&($.o=q(y,"fg",Y0,$.o)),q0!==$.i&&($.i=q(y,"attributes",q0,$.i)),$},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),R})()}})}}),null),I((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 ku(J={}){await KJ({logContext:"tasks",providers:{notifications:!0},setup:()=>bu(J)})}async function bu(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 Ru(z.filePath);j=`${V.mtimeMs}:${V.size}`}catch{}if(j===H)return;H=j,await Q()})().catch(()=>{})},gu);return{root:()=>[b(Nu,{tasks:X,get initialTaskId(){return J.initialTaskId},orch:G,reload:Q}),b(FM,{})],onDestroy:()=>{if(f)clearInterval(f);G?.dispose()}}}var gu=1500;var Y3=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();MM();AM();rG();SQ();Cf();E1();t9();DY();gJ();IM();Sf();xM();oM();PY();zJ();iJ();zW()});var Z3={};Q1(Z3,{startSettingsHost:()=>Iu});function Su(J){let z=oG(),Y=d1(),{theme:Z}=E0(),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})),I((f)=>q(H,"backgroundColor",Z.background,f)),H})()}async function Iu(){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(Su,{orchestrator:J}),onDestroy:()=>{J?.dispose()}}}})}var G3=C(()=>{E();E();E();E();E();E();RJ();_Y();HW();SQ();E1();DY();gJ();zJ();iJ()});var X3={};Q1(X3,{startHelpHost:()=>Tu});function yu(){let J=d1(),{theme:z}=E0();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})),I((G)=>q(Z,"backgroundColor",z.background,G)),Z})()}async function Tu(){await KJ({providers:{kv:!1,focus:!1},setup:()=>({root:()=>b(yu,{})})})}var Q3=C(()=>{E();E();E();E();E();e9();E1();DY();gJ();iJ()});var q3={};Q1(q3,{startUpdateHost:()=>vu});import{spawn as xu,spawnSync as uu}from"child_process";import{TextAttributes as ZX}from"@opentui/core";function Eu(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 xu(Y,Z,{stdio:"ignore",detached:!0}).unref(),!0}catch{return!1}}function wu(J){return J.replace(/\r\n/g,`
265
265
  `).split(`
266
- `).map((z)=>z.trim()).filter(Boolean)}function Au(){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 Ru(){let{theme:J}=i0(),z=HJ(),[Y,Z]=r(null),[X,G]=r([]),[Q,f]=r(!0),[H,B]=r("update"),[V,j]=r(null),K=U0(()=>Y()?.latest??p0),L=U0(()=>X()[0]?.url??$H(K())),A=U0(()=>[{id:"update",key:"U",label:F("update.actions.updateNow"),detail:_z},{id:"release",key:"R",label:F("update.actions.openRelease"),detail:L()??F("update.releaseUrlUnavailable")},{id:"close",key:"Q",label:F("update.actions.close"),detail:F("update.actions.closeDetail")}]);zJ(()=>{O()});async function O(){let S=await zG({force:!0});Z(S);let C=S?.latest??p0,M=await lH({current:p0,latest:C});G(M),f(!1)}function R(S){let C=A().map(($)=>$.id),I=(C.indexOf(H())+S+C.length)%C.length;B(C[I]??"update")}function x(S=H()){if(S==="close")process.exit(0);if(S==="release"){j(Fu(L())?F("update.statusReleaseOpened"):F("update.statusReleaseError"));return}a()}async function a(){j(F("update.statusRunningUpdater")),await new Promise((M)=>setTimeout(M,30)),z?.destroy(),process.stdout.write(`
267
- kobe ${p0} -> latest
268
- `),process.stdout.write(`running: ${_z}
266
+ `).map((z)=>z.trim()).filter(Boolean)}function Pu(){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 hu(){let{theme:J}=E0(),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),y=(g.indexOf(f())+S+g.length)%g.length;j(g[y]??"update")}function x(S=f()){if(S==="close")process.exit(0);if(S==="release"){B(Eu(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}
269
269
 
270
- `);let S=Mu("sh",["-c",_z],{stdio:"inherit"}),C=S.status??(S.error?1:0);if(S.error)process.stderr.write(`
270
+ `);let S=uu("sh",["-c",pz],{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
- `);process.stdout.write(C===0?`
272
+ `);process.stdout.write(g===0?`
273
273
  ${F("update.updateComplete")}
274
274
  `:`
275
- ${F("update.updateFailed",{code:String(C)})}
276
- `),process.stdout.write(F("update.pressAnyKey")),await Au(),process.exit(C)}return D1(()=>({bindings:[{key:"up",cmd:()=>R(-1)},{key:"down",cmd:()=>R(1)},{key:"k",cmd:()=>R(-1)},{key:"j",cmd:()=>R(1)},{key:"return",cmd:()=>x()},{key:"u",cmd:()=>x("update")},{key:"r",cmd:()=>x("release")},{key:"q",cmd:()=>x("close")},{key:"escape",cmd:()=>x("close")},{key:"ctrl+c",cmd:()=>x("close")}]})),(()=>{var S=W("box"),C=W("box"),M=W("text"),I=W("text"),$=W("box"),i=W("text"),e=W("text"),J0=E0("v"),T=W("text"),f0=W("text"),_=E0("v"),W0=W("box"),R0=W("box"),V0=W("text"),t=W("scrollbox"),P=W("box");return D(S,C),D(S,$),D(S,W0),D(S,R0),D(S,t),q(S,"flexDirection","column"),q(S,"flexGrow",1),q(S,"paddingTop",1),q(S,"paddingLeft",2),q(S,"paddingRight",2),D(C,M),D(C,I),q(C,"flexDirection","row"),q(C,"justifyContent","space-between"),q(C,"flexShrink",0),q(M,"wrapMode","none"),U(M,()=>F("update.pageTitle")),D(I,E0("q / esc")),q(I,"wrapMode","none"),q(I,"onMouseUp",()=>x("close")),D($,i),D($,e),D($,T),D($,f0),q($,"flexDirection","row"),q($,"gap",2),q($,"flexShrink",0),q($,"paddingTop",1),q(i,"wrapMode","none"),U(i,()=>F("update.current")),D(e,J0),q(e,"wrapMode","none"),U(e,p0,null),q(T,"wrapMode","none"),U(T,()=>F("update.latest")),D(f0,_),q(f0,"wrapMode","none"),U(f0,K,null),q(W0,"flexDirection","column"),q(W0,"flexShrink",0),q(W0,"paddingTop",1),q(W0,"gap",0),U(W0,k(X1,{get each(){return A()},children:(N)=>(()=>{var p=W("box"),u=W("box"),d=W("text"),o=E0("["),Q0=E0("]"),g0=W("box"),P0=W("text"),N0=W("text");return D(p,u),D(p,g0),D(p,N0),q(p,"flexDirection","row"),q(p,"gap",1),q(p,"paddingLeft",1),q(p,"paddingRight",1),q(p,"onMouseUp",()=>x(N.id)),D(u,d),q(u,"width",4),q(u,"flexShrink",0),D(d,o),D(d,Q0),q(d,"wrapMode","none"),U(d,()=>N.key,Q0),D(g0,P0),q(g0,"width",14),q(g0,"flexShrink",0),q(P0,"wrapMode","none"),U(P0,()=>N.label),q(N0,"wrapMode","word"),U(N0,()=>N.detail),y((k0)=>{var x0=H()===N.id?J.primary:void 0,v=H()===N.id?J.selectedListItemText:J.accent,b0=JG.BOLD,X0=H()===N.id?J.selectedListItemText:J.text,L0=H()===N.id?J.selectedListItemText:J.textMuted;return x0!==k0.e&&(k0.e=q(p,"backgroundColor",x0,k0.e)),v!==k0.t&&(k0.t=q(d,"fg",v,k0.t)),b0!==k0.a&&(k0.a=q(d,"attributes",b0,k0.a)),X0!==k0.o&&(k0.o=q(P0,"fg",X0,k0.o)),L0!==k0.i&&(k0.i=q(N0,"fg",L0,k0.i)),k0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),p})()})),U(S,k(G0,{get when(){return V()},get children(){var N=W("text");return q(N,"wrapMode","word"),U(N,V),y((p)=>q(N,"fg",J.info,p)),N}}),R0),D(R0,V0),q(R0,"flexShrink",0),q(R0,"paddingTop",1),q(V0,"wrapMode","none"),U(V0,()=>F("update.changesSectionHeader",{from:p0,to:K()})),D(t,P),q(t,"flexGrow",1),q(t,"flexShrink",1),q(t,"stickyScroll",!1),q(P,"flexDirection","column"),q(P,"paddingRight",1),q(P,"paddingBottom",1),q(P,"gap",0),U(P,k(G0,{get when(){return Q()},get children(){var N=W("text");return U(N,()=>F("update.loadingNotes")),y((p)=>q(N,"fg",J.textMuted,p)),N}}),null),U(P,k(G0,{get when(){return u0(()=>!Q())()&&X().length===0},get children(){var N=W("text");return q(N,"wrapMode","word"),U(N,()=>F("update.notesUnavailable")),y((p)=>q(N,"fg",J.textMuted,p)),N}}),null),U(P,k(X1,{get each(){return X()},children:(N)=>(()=>{var p=W("box"),u=W("text"),d=E0("v");return D(p,u),q(p,"flexDirection","column"),q(p,"paddingBottom",1),q(p,"gap",0),D(u,d),q(u,"wrapMode","none"),U(u,()=>N.version,null),U(p,k(X1,{get each(){return Ou(N.body)},children:(o)=>(()=>{var Q0=W("text");return q(Q0,"wrapMode","word"),U(Q0,o),y((g0)=>q(Q0,"fg",J.textMuted,g0)),Q0})()}),null),y((o)=>{var Q0=J.text,g0=JG.BOLD;return Q0!==o.e&&(o.e=q(u,"fg",Q0,o.e)),g0!==o.t&&(o.t=q(u,"attributes",g0,o.t)),o},{e:void 0,t:void 0}),p})()}),null),y((N)=>{var{background:p,text:u}=J,d=JG.BOLD,o=J.textMuted,Q0=J.textMuted,g0=J.text,P0=JG.BOLD,N0=J.textMuted,k0=Y()?.hasUpdate?J.warning:J.success,x0=JG.BOLD,v=J.textMuted,b0=JG.DIM,X0={trackOptions:{backgroundColor:J.background,foregroundColor:J.borderActive}};return p!==N.e&&(N.e=q(S,"backgroundColor",p,N.e)),u!==N.t&&(N.t=q(M,"fg",u,N.t)),d!==N.a&&(N.a=q(M,"attributes",d,N.a)),o!==N.o&&(N.o=q(I,"fg",o,N.o)),Q0!==N.i&&(N.i=q(i,"fg",Q0,N.i)),g0!==N.n&&(N.n=q(e,"fg",g0,N.n)),P0!==N.s&&(N.s=q(e,"attributes",P0,N.s)),N0!==N.h&&(N.h=q(T,"fg",N0,N.h)),k0!==N.r&&(N.r=q(f0,"fg",k0,N.r)),x0!==N.d&&(N.d=q(f0,"attributes",x0,N.d)),v!==N.l&&(N.l=q(V0,"fg",v,N.l)),b0!==N.u&&(N.u=q(V0,"attributes",b0,N.u)),X0!==N.c&&(N.c=q(t,"verticalScrollbarOptions",X0,N.c)),N},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0}),S})()}async function gu(){await OJ({setup:()=>({root:()=>k(Ru,{})})})}var sM=b(()=>{w();w();w();w();w();w();w();w();w();W1();MJ();m1();GJ();_Y();yJ()});function Cu(J){return J.trim().split(/\s+/)[0]??""}function eM(J,z,Y,Z){let X=Z1(Y);if(J==="vim")return{bin:"vim",command:`vim ${X}`};if(J==="nvim")return{bin:"nvim",command:`nvim ${X}`};if(J==="nano")return{bin:"nano",command:`nano ${X}`};if(J==="emacs")return{bin:"emacs",command:`emacs ${X}`};let G=(z.trim()||(Z??"").trim()).trim();if(!G)return null;let Q=Cu(G);if(!Q)return null;let f=G.includes(tM)?G.split(tM).join(X):`${G} ${X}`;return{bin:Q,command:f}}function Nu(J,z,Y){let Z=Z1(z);return["f=$(mktemp 2>/dev/null)",`if [ -n "$f" ] && git show ${Z1(`HEAD:./${Y}`)} > "$f" 2>/dev/null; then`,` ${J} -d "$f" ${Z} -c 'setlocal nomodifiable' -c 'wincmd l'; r=$?`,"else",` ${J} ${Z}; r=$?`,"fi",'rm -f "$f" 2>/dev/null; exit $r'].join(`
277
- `)}function bu(J,z){let Y=J.endsWith("/")?J:`${J}/`;return z.startsWith(Y)?z.slice(Y.length):null}async function ku(J){let z=NX(C1(qY)),Y=C1(PY)??"",Z=(process.env.VISUAL??process.env.EDITOR??"").trim();if(z!=="auto")return eM(z,Y,J,Z);if(Z)return eM("custom","",J,Z);let X=Z1(J);for(let G of N6)if(await JF(G))return{bin:G,command:`${G} ${X}`};return null}async function JF(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 Su(J,z){try{return await Bun.spawn(["git","diff","--quiet","HEAD","--",z],{cwd:J,stdin:"ignore",stdout:"ignore",stderr:"ignore",env:cJ()}).exited===1}catch{return!1}}async function zF(J,z,Y){let Z=await ku(Y);if(!Z)return!1;if(!await JF(Z.bin))return!1;let X=await Iu(Z,z,Y);return await Oz(J,{cwd:z,command:X,name:Tu(Y)}),!0}async function Iu(J,z,Y){let{bin:Z,command:X}=J;if(Z!=="nvim"&&Z!=="vim")return X;if(X!==`${Z} ${Z1(Y)}`)return X;let G=bu(z,Y);if(!G)return X;if(!await Su(z,G))return X;return Nu(Z,Y,G)}function Tu(J){let z=J.slice(J.lastIndexOf("/")+1).trim();return z.length>0?z:"edit"}var tM="{file}";var YF=b(()=>{hY();A1();Tf();h1();Wz()});async function PH(J,z,Y){if(!z)throw Error("git(): cwd is required");let Z=await bX(z,J,{signal:Y}),X=Z.status??-1;if(X!==0){let G=(Z.stderr??"").trim(),Q=(Z.stdout??"").trim();throw Error(`git ${J.join(" ")} (cwd=${z}) exited with code ${X}: ${G||Q||"(no output)"}`)}return Z.stdout??""}async function jW(J,z){let Z=(await PH(["ls-files","--cached","--others","--exclude-standard","--full-name"],J,z)).split(`
278
- `).map((G)=>G.replace(/\r$/,"")),X=new Set;for(let G of Z)if(G.length>0)X.add(G);return Array.from(X).sort()}async function WW(J,z){let Y=await PH(["status","--porcelain","--untracked-files=all"],J,z),Z=QF(Y),X=new Map;try{let G=await PH(["diff","--no-color","--numstat","HEAD"],J,z);X=new Map(ZF(G).map((Q)=>[Q.path,{added:Q.added,deleted:Q.deleted}]))}catch{try{let G=await PH(["diff","--no-color","--numstat","--cached"],J,z);X=new Map(ZF(G).map((Q)=>[Q.path,{added:Q.added,deleted:Q.deleted}]))}catch{X=new Map}}return Z.map((G)=>{let Q=X.get(G.path);if(Q)return{...G,added:Q.added,deleted:Q.deleted};return G})}function ZF(J){return T6(J).map((z)=>({path:z.path,added:z.added,deleted:z.deleted}))}function XF(J){let z={name:"",path:"",isDir:!0,children:[]};for(let Y of J){if(!Y)continue;let Z=Y.split("/").filter((G)=>G.length>0);if(Z.length===0)continue;let X=z;for(let G=0;G<Z.length;G++){let Q=Z[G],H=G!==Z.length-1,B=X.children.find((V)=>V.name===Q&&V.isDir===H);if(!B)B={name:Q,path:Z.slice(0,G+1).join("/"),isDir:H,children:[]},X.children.push(B);X=B}}return GF(z),z}function GF(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)GF(z)}function QF(J){let z=[];for(let Y of yf(J)){let Z;if(Y.x==="?"&&Y.y==="?")Z="?";else{let G=Y.y!==" "?Y.y:Y.x;if(G==="M"||G==="A"||G==="D"||G==="R"||G==="C"||G==="U")Z=G;else continue}let X=Y.path;if(X.length===0)continue;if(X.endsWith("/"))continue;z.push({path:X,status:Z})}return z}var VW=b(()=>{xf();uf()});function KW(J){D1(()=>({enabled:J.focused(),bindings:$Y({"files.nav":(z,Y)=>{if((Y??0)%2===0)J.moveDown();else J.moveUp()},"files.hierarchy":(z,Y)=>{if((Y??0)%2===0)J.collapseOrParent();else J.expandOrDescend()},"files.tab":(z,Y)=>{let Z=J.currentTab(),X=IQ.indexOf(Z);if(X<0)return;let G=(Y??0)%2===0?-1:1,Q=IQ[(X+G+IQ.length)%IQ.length];if(Q)J.setTab(Q)},"files.open":()=>J.openCurrent(),"files.mention":()=>J.mentionCurrent?.(),"files.createPR":()=>J.createPR?.(),"files.openExternal":()=>J.openExternal(),"files.refresh":()=>J.refresh()})}))}var IQ;var UW=b(()=>{pX();yJ();IQ=["all","changes"]});import{spawn as qF}from"child_process";import{existsSync as yu}from"fs";import{platform as xu}from"os";function fF(J){if(!J)return;let z=xu();if(z==="linux"){if(yu("/proc/sys/fs/binfmt_misc/WSLInterop")||process.env.WSL_DISTRO_NAME){TQ("wslview",[J],()=>{let Y=qF("wslpath",["-w",J],{stdio:["ignore","pipe","ignore"]}),Z="";Y.stdout?.on("data",(X)=>{Z+=X.toString()}),Y.on("close",(X)=>{if(X===0)TQ("explorer.exe",[Z.trim()])})});return}TQ("xdg-open",[J]);return}if(z==="darwin"){TQ("open",[J]);return}if(z==="win32"){TQ("cmd.exe",["/c","start","",J]);return}}function TQ(J,z,Y){try{let Z=qF(J,z,{stdio:"ignore",detached:!0});Z.on("error",()=>Y?.()),Z.unref()}catch{Y?.()}}var HF=()=>{};function DW(J,z,Y,Z){for(let X of J.children)if(X.isDir){let G=z.has(X.path);if(Z.push({kind:"dir",path:X.path,name:X.name,depth:Y,expanded:G,hasChildren:X.children.length>0}),G)DW(X,z,Y+1,Z)}else Z.push({kind:"file",path:X.path,name:X.name,depth:Y})}function BF(J,z){return uH(J,z)}function jF(J){return J.map((z)=>({kind:"status",path:z.path,status:z.status,added:z.added,deleted:z.deleted}))}function uu(J){return`${J.kind}\x00${J.path}`}function Eu(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 WF(J,z){return SH(J,z,uu,Eu)}function VF(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 KF(J,z){if(J===z)return!0;if(J==null||z==null)return!1;if(J.length!==z.length)return!1;for(let Y=0;Y<J.length;Y++){let Z=J[Y],X=z[Y];if(Z.path!==X.path||Z.status!==X.status||Z.added!==X.added||Z.deleted!==X.deleted)return!1}return!0}var UF=()=>{};import{watch as wu}from"fs";import{TextAttributes as yQ}from"@opentui/core";function Pu(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 vu(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 mu(J){switch(J){case"all":return F("files.tabs.all");case"changes":return F("files.tabs.changes")}}function LW(J){let{theme:z}=i0(),Y=dz(),Z=()=>J.focused?J.focused():!0,[X,G]=r("all"),[Q,f]=r(0),[H,B]=r(0),[V,j]=r(null,{equals:VF}),[K,L]=r(null,{equals:KF}),[A,O]=r(null),[R,x]=r(new Set),a=0;async function S(t,P,N){let p=++a;if(P==null){j(null),L(null),O(null);return}O(null);try{if(t==="all"){let u=await jW(P,N);if(N?.aborted||p!==a||J.worktreePath()!==P)return;j(u)}else if(t==="changes"){let u=await WW(P,N);if(N?.aborted||p!==a||J.worktreePath()!==P)return;L(u)}}catch(u){if(N?.aborted)return;let d=u instanceof Error?u.message:String(u);if(p===a&&J.worktreePath()===P)O(d)}}r0(SJ(J.worktreePath,async(t)=>{j(null),L(null),O(null),f(0),x(new Set);let P=new AbortController;S1(()=>P.abort()),await S(X(),t,P.signal)})),r0(SJ(J.worktreePath,(t)=>{if(t==null)return;if(process.env.KOBE_FILETREE_WATCH!=="1")return;let P=null,N=null;try{N=wu(t,{recursive:!0},(p,u)=>{if(u==null)return;let d=u.toString();if(d===".git"||d.startsWith(".git/")||d.startsWith(".git\\"))return;if(d.startsWith("node_modules/")||d.startsWith("node_modules\\"))return;if(P!=null)clearTimeout(P);P=setTimeout(()=>{P=null,B((o)=>o+1)},500)}),N.on("error",()=>{})}catch{}S1(()=>{if(P!=null)clearTimeout(P);if(N!=null)N.close()})})),r0(SJ([X,H],async([t,P])=>{let N=J.worktreePath();if(N==null)return;f(0);let p=new AbortController;S1(()=>p.abort());let d=H()>0;if(t==="all"){if(V()==null||d)await S("all",N,p.signal)}else if(t==="changes"){if(K()==null||d)await S("changes",N,p.signal)}}));let C=U0(()=>{let t=V();if(t==null)return null;return XF(t)}),M=U0((t)=>{let P=[];if(X()==="all"){let N=C();if(N!=null)DW(N,R(),0,P)}else if(X()==="changes"){let N=K();if(N!=null)P.push(...jF(N))}return WF(t??[],P)},[]),I=U0(()=>{let t=0,P=0;for(let N of M()){if(N.kind!=="status")continue;if(N.added!=null)t=Math.max(t,String(N.added).length+1);if(N.deleted!=null)P=Math.max(P,String(N.deleted).length+1)}return{added:t,deleted:P}}),$=U0(()=>{let t=I(),P=(t.added>0?t.added+1:0)+(t.deleted>0?t.deleted+1:0);return Math.max(8,Y().width-6-P)});function i(){let t=M();if(t.length===0)return;f(Math.min(Q()+1,t.length-1))}function e(){if(M().length===0)return;f(Math.max(Q()-1,0))}function J0(){let t=M(),P=Q(),N=t[P];if(!N)return;if(N.kind!=="dir")return;if(!N.expanded&&N.hasChildren)x((p)=>{let u=new Set(p);return u.add(N.path),u});else if(N.expanded){if(P+1<t.length)f(P+1)}}function T(){if(X()!=="all")return;let t=M(),P=Q(),N=t[P];if(!N)return;if(N.kind==="dir"&&N.expanded){x((u)=>{let d=new Set(u);return d.delete(N.path),d});return}if(N.kind!=="dir"&&N.kind!=="file")return;let p=N.depth-1;if(p<0)return;for(let u=P-1;u>=0;u--){let d=t[u];if(!d)continue;if(d.kind==="dir"&&d.depth===p){f(u);return}}}function f0(){let t=M(),P=Q();if(P<0||P>=t.length)return;let N=t[P];if(!N)return;if(N.kind==="dir"){x((p)=>{let u=new Set(p);if(u.has(N.path))u.delete(N.path);else u.add(N.path);return u});return}J.onOpenFile(N.path)}function _(){let t=M(),P=Q();if(P<0||P>=t.length)return;let N=t[P];if(!N||N.kind==="dir")return;J.onMention?.(N.path)}function W0(){B((t)=>t+1),J.onRefresh?.()}function R0(){let t=M(),P=Q();if(P<0||P>=t.length)return;let N=t[P];if(!N||N.kind==="dir")return;let p=J.worktreePath();if(!p)return;let u=`${p}/${N.path}`;fF(u)}KW({focused:Z,moveDown:i,moveUp:e,setTab:(t)=>G(t),currentTab:X,openCurrent:f0,mentionCurrent:_,createPR:J.onCreatePR,openExternal:R0,refresh:W0,expandOrDescend:J0,collapseOrParent:T});let V0;return r0(SJ([Q,M],([t,P])=>{if(!V0)return;if(P.length===0)return;let N=V0.scrollTop,p=V0.viewport.height;if(p<=0)return;if(t<N)V0.scrollTo({x:0,y:t});else if(t>=N+p)V0.scrollTo({x:0,y:t-p+1})})),(()=>{var t=W("box"),P=W("box"),N=W("box"),p=W("scrollbox");return D(t,P),D(t,p),q(t,"flexDirection","column"),q(t,"flexGrow",1),q(t,"paddingTop",1),q(t,"paddingBottom",1),q(t,"paddingLeft",0),q(t,"paddingRight",0),U(t,k(G0,{get when(){return J.onZenToggle||J.onCreatePR},get children(){var u=W("box");return q(u,"flexDirection","row"),q(u,"justifyContent","flex-end"),q(u,"gap",2),q(u,"paddingBottom",1),q(u,"flexShrink",0),U(u,k(G0,{get when(){return J.onZenToggle},get children(){var d=W("box"),o=W("text"),Q0=W("text");return D(d,o),D(d,Q0),q(d,"flexDirection","row"),q(d,"gap",1),q(d,"onMouseUp",()=>J.onZenToggle?.()),D(o,E0("[~]")),q(o,"wrapMode","none"),q(Q0,"wrapMode","none"),U(Q0,()=>F("files.actions.zen")),y((g0)=>{var P0=z.accent,N0=yQ.BOLD,k0=z.text;return P0!==g0.e&&(g0.e=q(o,"fg",P0,g0.e)),N0!==g0.t&&(g0.t=q(o,"attributes",N0,g0.t)),k0!==g0.a&&(g0.a=q(Q0,"fg",k0,g0.a)),g0},{e:void 0,t:void 0,a:void 0}),d}}),null),U(u,k(G0,{get when(){return J.onCreatePR},get children(){var d=W("box"),o=W("text"),Q0=W("text");return D(d,o),D(d,Q0),q(d,"flexDirection","row"),q(d,"gap",1),q(d,"onMouseUp",()=>J.onCreatePR?.()),D(o,E0("[P]")),q(o,"wrapMode","none"),q(Q0,"wrapMode","none"),U(Q0,()=>F("files.actions.createPR")),y((g0)=>{var P0=z.accent,N0=yQ.BOLD,k0=z.text;return P0!==g0.e&&(g0.e=q(o,"fg",P0,g0.e)),N0!==g0.t&&(g0.t=q(o,"attributes",N0,g0.t)),k0!==g0.a&&(g0.a=q(Q0,"fg",k0,g0.a)),g0},{e:void 0,t:void 0,a:void 0}),d}}),null),u}}),P),D(P,N),q(P,"flexDirection","row"),q(P,"justifyContent","space-between"),q(P,"paddingBottom",0),q(P,"flexShrink",0),q(N,"flexDirection","row"),q(N,"gap",2),U(N,k(X1,{each:hu,children:(u)=>{let d=()=>X()===u;return(()=>{var o=W("text");return q(o,"wrapMode","none"),q(o,"onMouseUp",()=>G(u)),U(o,()=>mu(u)),y((Q0)=>{var g0=d()?z.primary:z.textMuted,P0=d()?yQ.BOLD:void 0;return g0!==Q0.e&&(Q0.e=q(o,"fg",g0,Q0.e)),P0!==Q0.t&&(Q0.t=q(o,"attributes",P0,Q0.t)),Q0},{e:void 0,t:void 0}),o})()}})),U(P,k(G0,{get when(){return J.cornerBadge?.()},children:(u)=>(()=>{var d=W("text");return q(d,"wrapMode","none"),U(d,()=>u().text),y((o)=>{var Q0=u().active?z.accent:z.textMuted,g0=u().active?yQ.BOLD:void 0;return Q0!==o.e&&(o.e=q(d,"fg",Q0,o.e)),g0!==o.t&&(o.t=q(d,"attributes",g0,o.t)),o},{e:void 0,t:void 0}),d})()}),null),U(t,k(G0,{get when(){return X()==="changes"},get children(){var u=W("box"),d=W("text");return D(u,d),q(u,"flexDirection","column"),q(u,"paddingBottom",1),q(u,"flexShrink",0),q(u,"gap",0),q(d,"wrapMode","none"),U(d,()=>F("files.legend.changes")),y((o)=>q(d,"fg",z.textMuted,o)),u}}),p),U(t,k(G0,{get when(){return X()!=="changes"},get children(){var u=W("box");return q(u,"flexDirection","row"),q(u,"paddingBottom",1),q(u,"flexShrink",0),u}}),p),nz((u)=>{V0=u},p),q(p,"flexGrow",1),q(p,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),U(p,k(G0,{get when(){return J.worktreePath()==null},get children(){var u=W("box"),d=W("text");return D(u,d),q(u,"paddingTop",1),q(u,"paddingLeft",1),U(d,()=>F("files.empty.noTask")),y((o)=>q(d,"fg",z.textMuted,o)),u}}),null),U(p,k(G0,{get when(){return u0(()=>J.worktreePath()!=null)()&&A()!=null},get children(){var u=W("box"),d=W("text"),o=W("text");return D(u,d),D(u,o),q(u,"paddingTop",1),q(u,"paddingLeft",1),q(u,"flexDirection","column"),q(u,"gap",0),q(d,"wrapMode","word"),U(d,()=>vu(A()??"")),q(o,"wrapMode","word"),U(o,()=>F("files.error.retryHint")),y((Q0)=>{var{error:g0,textMuted:P0}=z;return g0!==Q0.e&&(Q0.e=q(d,"fg",g0,Q0.e)),P0!==Q0.t&&(Q0.t=q(o,"fg",P0,Q0.t)),Q0},{e:void 0,t:void 0}),u}}),null),U(p,k(G0,{get when(){return u0(()=>J.worktreePath()!=null&&A()==null&&M().length===0)()&&(X()==="all"&&V()!=null||X()==="changes"&&K()!=null)},get children(){var u=W("box"),d=W("text");return D(u,d),q(u,"paddingTop",1),q(u,"paddingLeft",1),U(d,(()=>{var o=u0(()=>X()==="all");return()=>o()?F("files.empty.noFiles"):F("files.empty.noChanges")})()),y((o)=>q(d,"fg",z.textMuted,o)),u}}),null),U(p,k(G0,{get when(){return u0(()=>J.worktreePath()!=null&&A()==null)()&&M().length>0},get children(){var u=W("box");return q(u,"flexShrink",0),q(u,"gap",0),q(u,"paddingRight",1),U(u,k(X1,{get each(){return M()},children:(d,o)=>{let Q0=()=>o()===Q(),g0=(()=>{var X0=W("text");return q(X0,"wrapMode","none"),U(X0,()=>Q0()?"\u258C":" "),y((L0)=>q(X0,"fg",Q0()?z.focusAccent:void 0,L0)),X0})(),P0=()=>Q0()?z.backgroundElement:void 0;if(d.kind==="dir"){let X0=" ".repeat(d.depth),L0=d.expanded?"\u25BE":"\u25B8";return(()=>{var a0=W("box"),e0=W("box"),v0=W("text");return D(a0,e0),q(a0,"flexDirection","row"),q(a0,"gap",0),q(a0,"onMouseUp",()=>{f(o()),x((_0)=>{let R1=new Set(_0);if(R1.has(d.path))R1.delete(d.path);else R1.add(d.path);return R1})}),U(a0,g0,e0),D(e0,v0),q(e0,"flexGrow",1),q(e0,"paddingRight",1),q(v0,"wrapMode","none"),U(v0,()=>`${X0}${L0} ${d.name}/`),y((_0)=>{var R1=P0(),s=z.textMuted,K0=yQ.BOLD;return R1!==_0.e&&(_0.e=q(a0,"backgroundColor",R1,_0.e)),s!==_0.t&&(_0.t=q(v0,"fg",s,_0.t)),K0!==_0.a&&(_0.a=q(v0,"attributes",K0,_0.a)),_0},{e:void 0,t:void 0,a:void 0}),a0})()}if(d.kind==="file"){let X0=" ".repeat(d.depth);return(()=>{var L0=W("box"),a0=W("box"),e0=W("text");return D(L0,a0),q(L0,"flexDirection","row"),q(L0,"gap",0),q(L0,"onMouseUp",()=>{f(o()),J.onOpenFile(d.path)}),U(L0,g0,a0),D(a0,e0),q(a0,"flexGrow",1),q(a0,"paddingRight",1),q(e0,"wrapMode","none"),U(e0,()=>`${X0} ${d.name}`),y((v0)=>{var _0=P0(),R1=z.text;return _0!==v0.e&&(v0.e=q(L0,"backgroundColor",_0,v0.e)),R1!==v0.t&&(v0.t=q(e0,"fg",R1,v0.t)),v0},{e:void 0,t:void 0}),L0})()}let N0=Pu(d.status),k0=()=>{switch(N0){case"success":return z.success;case"warning":return z.warning;case"error":return z.error;case"info":return z.info;default:return z.textMuted}},x0=I(),v=d.added==null?" ".repeat(x0.added):`+${d.added}`.padStart(x0.added),b0=d.deleted==null?" ".repeat(x0.deleted):`-${d.deleted}`.padStart(x0.deleted);return(()=>{var X0=W("box"),L0=W("box"),a0=W("text"),e0=W("text");return D(X0,L0),q(X0,"flexDirection","row"),q(X0,"gap",0),q(X0,"onMouseUp",()=>{f(o()),J.onOpenFile(d.path)}),U(X0,g0,L0),D(L0,a0),D(L0,e0),q(L0,"flexDirection","row"),q(L0,"flexGrow",1),q(L0,"gap",1),q(L0,"paddingRight",1),q(a0,"wrapMode","none"),U(a0,()=>d.status),q(e0,"wrapMode","none"),q(e0,"flexGrow",1),U(e0,()=>BF(d.path,$())),U(L0,k(G0,{get when(){return x0.added>0},get children(){var v0=W("text");return q(v0,"wrapMode","none"),U(v0,v),y((_0)=>q(v0,"fg",z.success,_0)),v0}}),null),U(L0,k(G0,{get when(){return x0.deleted>0},get children(){var v0=W("text");return q(v0,"wrapMode","none"),U(v0,b0),y((_0)=>q(v0,"fg",z.error,_0)),v0}}),null),y((v0)=>{var _0=P0(),R1=k0(),s=z.text;return _0!==v0.e&&(v0.e=q(X0,"backgroundColor",_0,v0.e)),R1!==v0.t&&(v0.t=q(a0,"fg",R1,v0.t)),s!==v0.a&&(v0.a=q(e0,"fg",s,v0.a)),v0},{e:void 0,t:void 0,a:void 0}),X0})()}})),u}}),null),U(t,k(G0,{get when(){return J.worktreePath()!=null},get children(){var u=W("box"),d=W("text");return D(u,d),q(u,"flexDirection","row"),q(u,"paddingTop",1),q(u,"flexShrink",0),q(d,"wrapMode","none"),U(d,()=>F("files.footer.openHint")),y((o)=>q(d,"fg",z.textMuted,o)),u}}),null),t})()}var hu;var DF=b(()=>{w();w();w();w();w();w();w();w();w();GJ();w();W1();m1();VW();UW();HF();UF();hu=["all","changes"]});var LF=b(()=>{DF();VW();UW()});function FF(J,z){if(z<3)return 2500;return Math.min(J*2,20000)}function OF(J,z,Y){if(z)return 1500;if(Y==="running")return 1500;return Math.min(J*2,6000)}var MF=2500,xQ=1500;import{promises as cu}from"fs";import du from"path";async function hH(J,z){let Y=new AbortController,Z=setTimeout(()=>Y.abort(),nu);try{let X=await ZY("git",z,{cwd:J,env:cJ(),signal:Y.signal});if(Y.signal.aborted)return null;if(X.status!==0)return null;return X.stdout.trim()}finally{clearTimeout(Z)}}async function iu(J){return await hH(J,["rev-parse","--abbrev-ref","HEAD"])||"HEAD"}async function lu(J){let z=await hH(J,["symbolic-ref","refs/remotes/origin/HEAD","--short"]);if(!z)return"main";return z.startsWith("origin/")?z.slice(7):z}async function $u(J){let z=await hH(J,["rev-parse","--abbrev-ref","@{u}"]);return z!==null&&z.length>0}async function au(J){let z=await hH(J,["status","--porcelain"]);if(!z)return 0;return z.split(`
279
- `).filter((Y)=>Y.length>0).length}async function _u(J){let[z,Y,Z,X]=await Promise.all([iu(J),lu(J),$u(J),au(J)]);return{branch:z,targetBranch:Y,hasUpstream:Z,dirtyCount:X}}function pu(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 ru(J){return J?"The current branch tracks an upstream.":"There is no upstream branch yet."}function ou(J,z){let Y={branch:z.branch,targetBranch:z.targetBranch,dirtyCountSentence:pu(z.dirtyCount),upstreamSentence:ru(z.hasUpstream)};return J.replace(/\{\{([a-zA-Z][a-zA-Z0-9_]*)\}\}/g,(Z,X)=>Object.hasOwn(Y,X)?Y[X]:Z)}async function su(J){let z=du.join(J,".kobe","pr-instructions.md");try{let Y=await cu.readFile(z,"utf8");return Y.length>0?Y:AF}catch{return AF}}async function RF(J){let[z,Y]=await Promise.all([su(J),_u(J)]);return ou(z,Y)}var nu=5000,AF=`The user likes the current state of the code.
275
+ ${F("update.updateFailed",{code:String(g)})}
276
+ `),process.stdout.write(F("update.pressAnyKey")),await Pu(),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"),y=W("text"),$=W("box"),c=W("text"),e=W("text"),u=T0("v"),Y0=W("text"),q0=W("text"),s=T0("v"),W0=W("box"),N0=W("box"),v=W("text"),o=W("scrollbox"),m=W("box");return D(S,g),D(S,$),D(S,W0),D(S,N0),D(S,o),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,y),q(g,"flexDirection","row"),q(g,"justifyContent","space-between"),q(g,"flexShrink",0),q(M,"wrapMode","none"),U(M,()=>F("update.pageTitle")),D(y,T0("q / esc")),q(y,"wrapMode","none"),q(y,"onMouseUp",()=>x("close")),D($,c),D($,e),D($,Y0),D($,q0),q($,"flexDirection","row"),q($,"gap",2),q($,"flexShrink",0),q($,"paddingTop",1),q(c,"wrapMode","none"),U(c,()=>F("update.current")),D(e,u),q(e,"wrapMode","none"),U(e,r0,null),q(Y0,"wrapMode","none"),U(Y0,()=>F("update.latest")),D(q0,s),q(q0,"wrapMode","none"),U(q0,K,null),q(W0,"flexDirection","column"),q(W0,"flexShrink",0),q(W0,"paddingTop",1),q(W0,"gap",0),U(W0,b(z1,{get each(){return A()},children:(k)=>(()=>{var t=W("box"),T=W("box"),n=W("text"),X0=T0("["),H0=T0("]"),R0=W("box"),M0=W("text"),c0=W("text");return D(t,T),D(t,R0),D(t,c0),q(t,"flexDirection","row"),q(t,"gap",1),q(t,"paddingLeft",1),q(t,"paddingRight",1),q(t,"onMouseUp",()=>x(k.id)),D(T,n),q(T,"width",4),q(T,"flexShrink",0),D(n,X0),D(n,H0),q(n,"wrapMode","none"),U(n,()=>k.key,H0),D(R0,M0),q(R0,"width",14),q(R0,"flexShrink",0),q(M0,"wrapMode","none"),U(M0,()=>k.label),q(c0,"wrapMode","word"),U(c0,()=>k.detail),I((u0)=>{var p0=f()===k.id?J.primary:void 0,P=f()===k.id?J.selectedListItemText:J.accent,L0=ZX.BOLD,z0=f()===k.id?J.selectedListItemText:J.text,V0=f()===k.id?J.selectedListItemText:J.textMuted;return p0!==u0.e&&(u0.e=q(t,"backgroundColor",p0,u0.e)),P!==u0.t&&(u0.t=q(n,"fg",P,u0.t)),L0!==u0.a&&(u0.a=q(n,"attributes",L0,u0.a)),z0!==u0.o&&(u0.o=q(M0,"fg",z0,u0.o)),V0!==u0.i&&(u0.i=q(c0,"fg",V0,u0.i)),u0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),t})()})),U(S,b(Z0,{get when(){return V()},get children(){var k=W("text");return q(k,"wrapMode","word"),U(k,V),I((t)=>q(k,"fg",J.info,t)),k}}),N0),D(N0,v),q(N0,"flexShrink",0),q(N0,"paddingTop",1),q(v,"wrapMode","none"),U(v,()=>F("update.changesSectionHeader",{from:r0,to:K()})),D(o,m),q(o,"flexGrow",1),q(o,"flexShrink",1),q(o,"stickyScroll",!1),q(m,"flexDirection","column"),q(m,"paddingRight",1),q(m,"paddingBottom",1),q(m,"gap",0),U(m,b(Z0,{get when(){return Q()},get children(){var k=W("text");return U(k,()=>F("update.loadingNotes")),I((t)=>q(k,"fg",J.textMuted,t)),k}}),null),U(m,b(Z0,{get when(){return S0(()=>!Q())()&&G().length===0},get children(){var k=W("text");return q(k,"wrapMode","word"),U(k,()=>F("update.notesUnavailable")),I((t)=>q(k,"fg",J.textMuted,t)),k}}),null),U(m,b(z1,{get each(){return G()},children:(k)=>(()=>{var t=W("box"),T=W("text"),n=T0("v");return D(t,T),q(t,"flexDirection","column"),q(t,"paddingBottom",1),q(t,"gap",0),D(T,n),q(T,"wrapMode","none"),U(T,()=>k.version,null),U(t,b(z1,{get each(){return wu(k.body)},children:(X0)=>(()=>{var H0=W("text");return q(H0,"wrapMode","word"),U(H0,X0),I((R0)=>q(H0,"fg",J.textMuted,R0)),H0})()}),null),I((X0)=>{var H0=J.text,R0=ZX.BOLD;return H0!==X0.e&&(X0.e=q(T,"fg",H0,X0.e)),R0!==X0.t&&(X0.t=q(T,"attributes",R0,X0.t)),X0},{e:void 0,t:void 0}),t})()}),null),I((k)=>{var{background:t,text:T}=J,n=ZX.BOLD,X0=J.textMuted,H0=J.textMuted,R0=J.text,M0=ZX.BOLD,c0=J.textMuted,u0=Y()?.hasUpdate?J.warning:J.success,p0=ZX.BOLD,P=J.textMuted,L0=ZX.DIM,z0={trackOptions:{backgroundColor:J.background,foregroundColor:J.borderActive}};return t!==k.e&&(k.e=q(S,"backgroundColor",t,k.e)),T!==k.t&&(k.t=q(M,"fg",T,k.t)),n!==k.a&&(k.a=q(M,"attributes",n,k.a)),X0!==k.o&&(k.o=q(y,"fg",X0,k.o)),H0!==k.i&&(k.i=q(c,"fg",H0,k.i)),R0!==k.n&&(k.n=q(e,"fg",R0,k.n)),M0!==k.s&&(k.s=q(e,"attributes",M0,k.s)),c0!==k.h&&(k.h=q(Y0,"fg",c0,k.h)),u0!==k.r&&(k.r=q(q0,"fg",u0,k.r)),p0!==k.d&&(k.d=q(q0,"attributes",p0,k.d)),P!==k.l&&(k.l=q(v,"fg",P,k.l)),L0!==k.u&&(k.u=q(v,"attributes",L0,k.u)),z0!==k.c&&(k.c=q(o,"verticalScrollbarOptions",z0,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 vu(){await KJ({setup:()=>({root:()=>b(hu,{})})})}var H3=C(()=>{E();E();E();E();E();E();E();E();E();W1();AJ();E1();ZJ();DY();gJ()});var j3={};Q1(j3,{startHistoryHost:()=>pu});import{TextAttributes as GX}from"@opentui/core";function mu(J){let z=J.lastIndexOf("/");return z>=0?J.slice(z+1):J}function cu(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 du(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 nu(J){if(typeof J==="string")return J;try{return JSON.stringify(J,null,2)}catch{return String(J)}}function iu(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 f3(J){let{theme:z}=E0(),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||" "),I((H)=>q(Q,"fg",Z(X),H)),Q})()})),I((X)=>q(G,"backgroundColor",z.backgroundElement,X)),G})()}function lu(J){let{theme:z}=E0(),Y=J.block;switch(Y.type){case"text":return(()=>{var Z=W("text");return q(Z,"wrapMode","word"),U(Z,()=>Y.text),I((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(Z0,{get when(){return S0(()=>!!J.expanded)()&&Y.text.trim()},get children(){return b(f3,{get text(){return Y.text}})}}),null),I((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?nu(J.result.output):"",X=du(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(Z0,{when:X,get children(){var V=W("text");return q(V,"wrapMode","none"),U(V,X),I((B)=>q(V,"fg",z.textMuted,B)),V}}),null),U(Q,b(Z0,{get when(){return S0(()=>!!J.expanded)()&&G.trim()},get children(){return b(f3,{text:G,get error(){return J.result?.isError}})}}),null),I((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 $u(J){return J==="assistant"?F("history.role.assistant"):J==="system"?F("history.role.system"):F("history.role.user")}function au(J){let{theme:z}=E0(),Y=()=>J.msg.role==="user",Z=()=>cu(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(Z0,{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,T0("\u276F")),q(f,"wrapMode","none"),q(j,"wrapMode","word"),q(j,"flexGrow",1),U(j,G),U(H,b(Z0,{get when(){return Z()},get children(){var V=W("text");return q(V,"wrapMode","none"),U(V,Z),I((B)=>q(V,"fg",z.textMuted,B)),V}}),null),I((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(Z0,{get when(){return!Y()},get children(){var H=W("text");return q(H,"wrapMode","none"),U(H,()=>$u(J.msg.role)),I((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(lu,{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 _u(J){let{theme:z}=E0(),[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(()=>iu(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:"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()||mu(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"),y=W("box"),$=W("scrollbox"),c=W("box"),e=W("text");return D(w,S),D(w,$),D(w,c),q(w,"flexDirection","column"),q(w,"flexGrow",1),D(S,g),D(S,M),D(S,y),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(Z0,{get when(){return x()},get children(){var u=W("text");return q(u,"wrapMode","none"),U(u,()=>`\xB7 ${x()}`),I((Y0)=>q(u,"fg",z.textMuted,Y0)),u}}),y),q(y,"flexGrow",1),U(S,b(Z0,{get when(){return V()>0},get children(){var u=W("text");return q(u,"wrapMode","none"),U(u,()=>`${V()} tok`),I((Y0)=>q(u,"fg",z.textMuted,Y0)),u}}),null),Gz((u)=>{L=u},$),q($,"flexGrow",1),q($,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),U($,b(Z0,{get when(){return S0(()=>!Y.loading)()&&!H.loading},get fallback(){return(()=>{var u=W("box"),Y0=W("text");return D(u,Y0),q(u,"paddingTop",1),q(u,"paddingLeft",1),U(Y0,()=>F("history.loading")),I((q0)=>q(Y0,"fg",z.textMuted,q0)),u})()},get children(){return b(Z0,{get when(){return f().length>0},get fallback(){return(()=>{var u=W("box"),Y0=W("text");return D(u,Y0),q(u,"paddingTop",1),q(u,"paddingLeft",1),U(Y0,()=>F("history.empty")),I((q0)=>q(Y0,"fg",z.textMuted,q0)),u})()},get children(){return b(z1,{get each(){return f()},children:(u)=>b(au,{msg:u,get results(){return j()},get expanded(){return B()}})})}})}})),D(c,e),q(c,"flexDirection","row"),q(c,"paddingLeft",1),q(c,"paddingRight",1),q(c,"flexShrink",0),q(e,"wrapMode","none"),U(e,(()=>{var u=S0(()=>!!B());return()=>u()?F("history.hintExpanded"):F("history.hint")})()),I((u)=>{var{background:Y0,backgroundElement:q0,warning:s}=z,W0=GX.BOLD,N0=z.accent,v=GX.BOLD,o=z.backgroundElement,m=z.textMuted;return Y0!==u.e&&(u.e=q(w,"backgroundColor",Y0,u.e)),q0!==u.t&&(u.t=q(S,"backgroundColor",q0,u.t)),s!==u.a&&(u.a=q(g,"fg",s,u.a)),W0!==u.o&&(u.o=q(g,"attributes",W0,u.o)),N0!==u.i&&(u.i=q(M,"fg",N0,u.i)),v!==u.n&&(u.n=q(M,"attributes",v,u.n)),o!==u.s&&(u.s=q(c,"backgroundColor",o,u.s)),m!==u.h&&(u.h=q(e,"fg",m,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 pu(J){await KJ({logContext:"history",providers:{kv:!1,focus:!1},setup:()=>({root:()=>b(_u,J)})})}var vf=3,mf=120;var B3=C(()=>{E();E();E();E();E();E();E();E();E();ZY();W1();E1();ZJ();DY();gJ()});function ru(J){return J.trim().split(/\s+/)[0]??""}function V3(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=ru(X);if(!Q)return null;let H=X.includes(W3)?X.split(W3).join(G):`${X} ${G}`;return{bin:Q,command:H}}function ou(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 su(J,z){let Y=J.endsWith("/")?J:`${J}/`;return z.startsWith(Y)?z.slice(Y.length):null}async function tu(J){let z=bG(N1(HY)),Y=N1(cY)??"",Z=(process.env.VISUAL??process.env.EDITOR??"").trim();if(z!=="auto")return V3(z,Y,J,Z);if(Z)return V3("custom","",J,Z);let G=Z1(J);for(let X of u5)if(await K3(X))return{bin:X,command:`${X} ${G}`};return null}async function K3(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 eu(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 U3(J,z,Y){let Z=await tu(Y);if(!Z)return!1;if(!await K3(Z.bin))return!1;let G=await JE(Z,z,Y);return await gz(J,{cwd:z,command:G,name:zE(Y)}),!0}async function JE(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=su(z,Y);if(!X)return G;if(!await eu(z,X))return G;return ou(Z,Y,X)}function zE(J){let z=J.slice(J.lastIndexOf("/")+1).trim();return z.length>0?z:"edit"}var W3="{file}";var D3=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=O3(Y),G=new Map;try{let X=await cf(["diff","--no-color","--numstat","HEAD"],J,z);G=new Map(L3(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(L3(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 L3(J){return v5(J).map((z)=>({path:z.path,added:z.added,deleted:z.deleted}))}function F3(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 M3(z),z}function M3(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)M3(z)}function O3(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 A3}from"child_process";import{existsSync as YE}from"fs";import{platform as ZE}from"os";function R3(J){if(!J)return;let z=ZE();if(z==="linux"){if(YE("/proc/sys/fs/binfmt_misc/WSLInterop")||process.env.WSL_DISTRO_NAME){uQ("wslview",[J],()=>{let Y=A3("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=A3(J,z,{stdio:"ignore",detached:!0});Z.on("error",()=>Y?.()),Z.unref()}catch{Y?.()}}var g3=()=>{};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 N3(J,z){return wf(J,z)}function C3(J){return J.map((z)=>({kind:"status",path:z.path,status:z.status,added:z.added,deleted:z.deleted}))}function GE(J){return`${J.kind}\x00${J.path}`}function XE(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 k3(J,z){return yf(J,z,GE,XE)}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++)if(J[Y]!==z[Y])return!1;return!0}function S3(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 I3=()=>{};import{watch as QE}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 fE(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 jE(J){switch(J){case"all":return F("files.tabs.all");case"changes":return F("files.tabs.changes")}}function gW(J){let{theme:z}=E0(),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:b3}),[K,L]=p(null,{equals:S3}),[A,O]=p(null),[R,x]=p(new Set),w=0;async function S(o,m,k){let t=++w;if(m==null){B(null),L(null),O(null);return}O(null);try{if(o==="all"){let T=await LW(m,k);if(k?.aborted||t!==w||J.worktreePath()!==m)return;B(T)}else if(o==="changes"){let T=await FW(m,k);if(k?.aborted||t!==w||J.worktreePath()!==m)return;L(T)}}catch(T){if(k?.aborted)return;let n=T instanceof Error?T.message:String(T);if(t===w&&J.worktreePath()===m)O(n)}}_0(BJ(J.worktreePath,async(o)=>{B(null),L(null),O(null),H(0),x(new Set);let m=new AbortController;S1(()=>m.abort()),await S(G(),o,m.signal)})),_0(BJ(J.worktreePath,(o)=>{if(o==null)return;if(process.env.KOBE_FILETREE_WATCH!=="1")return;let m=null,k=null;try{k=QE(o,{recursive:!0},(t,T)=>{if(T==null)return;let n=T.toString();if(n===".git"||n.startsWith(".git/")||n.startsWith(".git\\"))return;if(n.startsWith("node_modules/")||n.startsWith("node_modules\\"))return;if(m!=null)clearTimeout(m);m=setTimeout(()=>{m=null,j((X0)=>X0+1)},500)}),k.on("error",()=>{})}catch{}S1(()=>{if(m!=null)clearTimeout(m);if(k!=null)k.close()})})),_0(BJ([G,f],async([o,m])=>{let k=J.worktreePath();if(k==null)return;H(0);let t=new AbortController;S1(()=>t.abort());let n=f()>0;if(o==="all"){if(V()==null||n)await S("all",k,t.signal)}else if(o==="changes"){if(K()==null||n)await S("changes",k,t.signal)}}));let g=U0(()=>{let o=V();if(o==null)return null;return F3(o)}),M=U0((o)=>{let m=[];if(G()==="all"){let k=g();if(k!=null)RW(k,R(),0,m)}else if(G()==="changes"){let k=K();if(k!=null)m.push(...C3(k))}return k3(o??[],m)},[]),y=U0(()=>{let o=0,m=0;for(let k of M()){if(k.kind!=="status")continue;if(k.added!=null)o=Math.max(o,String(k.added).length+1);if(k.deleted!=null)m=Math.max(m,String(k.deleted).length+1)}return{added:o,deleted:m}}),$=U0(()=>{let o=y(),m=(o.added>0?o.added+1:0)+(o.deleted>0?o.deleted+1:0);return Math.max(8,Y().width-6-m)});function c(){let o=M();if(o.length===0)return;H(Math.min(Q()+1,o.length-1))}function e(){if(M().length===0)return;H(Math.max(Q()-1,0))}function u(){let o=M(),m=Q(),k=o[m];if(!k)return;if(k.kind!=="dir")return;if(!k.expanded&&k.hasChildren)x((t)=>{let T=new Set(t);return T.add(k.path),T});else if(k.expanded){if(m+1<o.length)H(m+1)}}function Y0(){if(G()!=="all")return;let o=M(),m=Q(),k=o[m];if(!k)return;if(k.kind==="dir"&&k.expanded){x((T)=>{let n=new Set(T);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 T=m-1;T>=0;T--){let n=o[T];if(!n)continue;if(n.kind==="dir"&&n.depth===t){H(T);return}}}function q0(){let o=M(),m=Q();if(m<0||m>=o.length)return;let k=o[m];if(!k)return;if(k.kind==="dir"){x((t)=>{let T=new Set(t);if(T.has(k.path))T.delete(k.path);else T.add(k.path);return T});return}J.onOpenFile(k.path)}function s(){let o=M(),m=Q();if(m<0||m>=o.length)return;let k=o[m];if(!k||k.kind==="dir")return;J.onMention?.(k.path)}function W0(){j((o)=>o+1),J.onRefresh?.()}function N0(){let o=M(),m=Q();if(m<0||m>=o.length)return;let k=o[m];if(!k||k.kind==="dir")return;let t=J.worktreePath();if(!t)return;let T=`${t}/${k.path}`;R3(T)}OW({focused:Z,moveDown:c,moveUp:e,setTab:(o)=>X(o),currentTab:G,openCurrent:q0,mentionCurrent:s,createPR:J.onCreatePR,openExternal:N0,refresh:W0,expandOrDescend:u,collapseOrParent:Y0});let v;return _0(BJ([Q,M],([o,m])=>{if(!v)return;if(m.length===0)return;let k=v.scrollTop,t=v.viewport.height;if(t<=0)return;if(o<k)v.scrollTo({x:0,y:o});else if(o>=k+t)v.scrollTo({x:0,y:o-t+1})})),(()=>{var o=W("box"),m=W("box"),k=W("box"),t=W("scrollbox");return D(o,m),D(o,t),q(o,"flexDirection","column"),q(o,"flexGrow",1),q(o,"paddingTop",1),q(o,"paddingBottom",1),q(o,"paddingLeft",0),q(o,"paddingRight",0),U(o,b(Z0,{get when(){return J.onZenToggle||J.onCreatePR},get children(){var T=W("box");return q(T,"flexDirection","row"),q(T,"justifyContent","flex-end"),q(T,"gap",2),q(T,"paddingBottom",1),q(T,"flexShrink",0),U(T,b(Z0,{get when(){return J.onZenToggle},get children(){var n=W("box"),X0=W("text"),H0=W("text");return D(n,X0),D(n,H0),q(n,"flexDirection","row"),q(n,"gap",1),q(n,"onMouseUp",()=>J.onZenToggle?.()),D(X0,T0("[~]")),q(X0,"wrapMode","none"),q(H0,"wrapMode","none"),U(H0,()=>F("files.actions.zen")),I((R0)=>{var M0=z.accent,c0=EQ.BOLD,u0=z.text;return M0!==R0.e&&(R0.e=q(X0,"fg",M0,R0.e)),c0!==R0.t&&(R0.t=q(X0,"attributes",c0,R0.t)),u0!==R0.a&&(R0.a=q(H0,"fg",u0,R0.a)),R0},{e:void 0,t:void 0,a:void 0}),n}}),null),U(T,b(Z0,{get when(){return J.onCreatePR},get children(){var n=W("box"),X0=W("text"),H0=W("text");return D(n,X0),D(n,H0),q(n,"flexDirection","row"),q(n,"gap",1),q(n,"onMouseUp",()=>J.onCreatePR?.()),D(X0,T0("[P]")),q(X0,"wrapMode","none"),q(H0,"wrapMode","none"),U(H0,()=>F("files.actions.createPR")),I((R0)=>{var M0=z.accent,c0=EQ.BOLD,u0=z.text;return M0!==R0.e&&(R0.e=q(X0,"fg",M0,R0.e)),c0!==R0.t&&(R0.t=q(X0,"attributes",c0,R0.t)),u0!==R0.a&&(R0.a=q(H0,"fg",u0,R0.a)),R0},{e:void 0,t:void 0,a:void 0}),n}}),null),T}}),m),D(m,k),q(m,"flexDirection","row"),q(m,"justifyContent","space-between"),q(m,"paddingBottom",0),q(m,"flexShrink",0),q(k,"flexDirection","row"),q(k,"gap",2),U(k,b(z1,{each:HE,children:(T)=>{let n=()=>G()===T;return(()=>{var X0=W("text");return q(X0,"wrapMode","none"),q(X0,"onMouseUp",()=>X(T)),U(X0,()=>jE(T)),I((H0)=>{var R0=n()?z.primary:z.textMuted,M0=n()?EQ.BOLD:void 0;return R0!==H0.e&&(H0.e=q(X0,"fg",R0,H0.e)),M0!==H0.t&&(H0.t=q(X0,"attributes",M0,H0.t)),H0},{e:void 0,t:void 0}),X0})()}})),U(m,b(Z0,{get when(){return J.cornerBadge?.()},children:(T)=>(()=>{var n=W("text");return q(n,"wrapMode","none"),U(n,()=>T().text),I((X0)=>{var H0=T().active?z.accent:z.textMuted,R0=T().active?EQ.BOLD:void 0;return H0!==X0.e&&(X0.e=q(n,"fg",H0,X0.e)),R0!==X0.t&&(X0.t=q(n,"attributes",R0,X0.t)),X0},{e:void 0,t:void 0}),n})()}),null),U(o,b(Z0,{get when(){return G()==="changes"},get children(){var T=W("box"),n=W("text");return D(T,n),q(T,"flexDirection","column"),q(T,"paddingBottom",1),q(T,"flexShrink",0),q(T,"gap",0),q(n,"wrapMode","none"),U(n,()=>F("files.legend.changes")),I((X0)=>q(n,"fg",z.textMuted,X0)),T}}),t),U(o,b(Z0,{get when(){return G()!=="changes"},get children(){var T=W("box");return q(T,"flexDirection","row"),q(T,"paddingBottom",1),q(T,"flexShrink",0),T}}),t),Gz((T)=>{v=T},t),q(t,"flexGrow",1),q(t,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),U(t,b(Z0,{get when(){return J.worktreePath()==null},get children(){var T=W("box"),n=W("text");return D(T,n),q(T,"paddingTop",1),q(T,"paddingLeft",1),U(n,()=>F("files.empty.noTask")),I((X0)=>q(n,"fg",z.textMuted,X0)),T}}),null),U(t,b(Z0,{get when(){return S0(()=>J.worktreePath()!=null)()&&A()!=null},get children(){var T=W("box"),n=W("text"),X0=W("text");return D(T,n),D(T,X0),q(T,"paddingTop",1),q(T,"paddingLeft",1),q(T,"flexDirection","column"),q(T,"gap",0),q(n,"wrapMode","word"),U(n,()=>fE(A()??"")),q(X0,"wrapMode","word"),U(X0,()=>F("files.error.retryHint")),I((H0)=>{var{error:R0,textMuted:M0}=z;return R0!==H0.e&&(H0.e=q(n,"fg",R0,H0.e)),M0!==H0.t&&(H0.t=q(X0,"fg",M0,H0.t)),H0},{e:void 0,t:void 0}),T}}),null),U(t,b(Z0,{get when(){return S0(()=>J.worktreePath()!=null&&A()==null&&M().length===0)()&&(G()==="all"&&V()!=null||G()==="changes"&&K()!=null)},get children(){var T=W("box"),n=W("text");return D(T,n),q(T,"paddingTop",1),q(T,"paddingLeft",1),U(n,(()=>{var X0=S0(()=>G()==="all");return()=>X0()?F("files.empty.noFiles"):F("files.empty.noChanges")})()),I((X0)=>q(n,"fg",z.textMuted,X0)),T}}),null),U(t,b(Z0,{get when(){return S0(()=>J.worktreePath()!=null&&A()==null)()&&M().length>0},get children(){var T=W("box");return q(T,"flexShrink",0),q(T,"gap",0),q(T,"paddingRight",1),U(T,b(z1,{get each(){return M()},children:(n,X0)=>{let H0=()=>X0()===Q(),R0=(()=>{var z0=W("text");return q(z0,"wrapMode","none"),U(z0,()=>H0()?"\u258C":" "),I((V0)=>q(z0,"fg",H0()?z.focusAccent:void 0,V0)),z0})(),M0=()=>H0()?z.backgroundElement:void 0;if(n.kind==="dir"){let z0=" ".repeat(n.depth),V0=n.expanded?"\u25BE":"\u25B8";return(()=>{var a0=W("box"),t0=W("box"),w0=W("text");return D(a0,t0),q(a0,"flexDirection","row"),q(a0,"gap",0),q(a0,"onMouseUp",()=>{H(X0()),x((h0)=>{let U1=new Set(h0);if(U1.has(n.path))U1.delete(n.path);else U1.add(n.path);return U1})}),U(a0,R0,t0),D(t0,w0),q(t0,"flexGrow",1),q(t0,"paddingRight",1),q(w0,"wrapMode","none"),U(w0,()=>`${z0}${V0} ${n.name}/`),I((h0)=>{var U1=M0(),r=z.textMuted,D0=EQ.BOLD;return U1!==h0.e&&(h0.e=q(a0,"backgroundColor",U1,h0.e)),r!==h0.t&&(h0.t=q(w0,"fg",r,h0.t)),D0!==h0.a&&(h0.a=q(w0,"attributes",D0,h0.a)),h0},{e:void 0,t:void 0,a:void 0}),a0})()}if(n.kind==="file"){let z0=" ".repeat(n.depth);return(()=>{var V0=W("box"),a0=W("box"),t0=W("text");return D(V0,a0),q(V0,"flexDirection","row"),q(V0,"gap",0),q(V0,"onMouseUp",()=>{H(X0()),J.onOpenFile(n.path)}),U(V0,R0,a0),D(a0,t0),q(a0,"flexGrow",1),q(a0,"paddingRight",1),q(t0,"wrapMode","none"),U(t0,()=>`${z0} ${n.name}`),I((w0)=>{var h0=M0(),U1=z.text;return h0!==w0.e&&(w0.e=q(V0,"backgroundColor",h0,w0.e)),U1!==w0.t&&(w0.t=q(t0,"fg",U1,w0.t)),w0},{e:void 0,t:void 0}),V0})()}let c0=qE(n.status),u0=()=>{switch(c0){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=y(),P=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"),V0=W("box"),a0=W("text"),t0=W("text");return D(z0,V0),q(z0,"flexDirection","row"),q(z0,"gap",0),q(z0,"onMouseUp",()=>{H(X0()),J.onOpenFile(n.path)}),U(z0,R0,V0),D(V0,a0),D(V0,t0),q(V0,"flexDirection","row"),q(V0,"flexGrow",1),q(V0,"gap",1),q(V0,"paddingRight",1),q(a0,"wrapMode","none"),U(a0,()=>n.status),q(t0,"wrapMode","none"),q(t0,"flexGrow",1),U(t0,()=>N3(n.path,$())),U(V0,b(Z0,{get when(){return p0.added>0},get children(){var w0=W("text");return q(w0,"wrapMode","none"),U(w0,P),I((h0)=>q(w0,"fg",z.success,h0)),w0}}),null),U(V0,b(Z0,{get when(){return p0.deleted>0},get children(){var w0=W("text");return q(w0,"wrapMode","none"),U(w0,L0),I((h0)=>q(w0,"fg",z.error,h0)),w0}}),null),I((w0)=>{var h0=M0(),U1=u0(),r=z.text;return h0!==w0.e&&(w0.e=q(z0,"backgroundColor",h0,w0.e)),U1!==w0.t&&(w0.t=q(a0,"fg",U1,w0.t)),r!==w0.a&&(w0.a=q(t0,"fg",r,w0.a)),w0},{e:void 0,t:void 0,a:void 0}),z0})()}})),T}}),null),U(o,b(Z0,{get when(){return J.worktreePath()!=null},get children(){var T=W("box"),n=W("text");return D(T,n),q(T,"flexDirection","row"),q(T,"paddingTop",1),q(T,"flexShrink",0),q(n,"wrapMode","none"),U(n,()=>F("files.footer.openHint")),I((X0)=>q(n,"fg",z.textMuted,X0)),T}}),null),o})()}var HE;var y3=C(()=>{E();E();E();E();E();E();E();E();E();ZJ();E();W1();E1();MW();AW();g3();I3();HE=["all","changes"]});var T3=C(()=>{y3();MW();AW()});function u3(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 x3=2500,wQ=1500;import{promises as BE}from"fs";import WE from"path";async function df(J,z){let Y=new AbortController,Z=setTimeout(()=>Y.abort(),VE);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 KE(J){return await df(J,["rev-parse","--abbrev-ref","HEAD"])||"HEAD"}async function UE(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 DE(J){let z=await df(J,["rev-parse","--abbrev-ref","@{u}"]);return z!==null&&z.length>0}async function LE(J){let z=await df(J,["status","--porcelain"]);if(!z)return 0;return z.split(`
281
+ `).filter((Y)=>Y.length>0).length}async function FE(J){let[z,Y,Z,G]=await Promise.all([KE(J),UE(J),DE(J),LE(J)]);return{branch:z,targetBranch:Y,hasUpstream:Z,dirtyCount:G}}function ME(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 OE(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:ME(z.dirtyCount),upstreamSentence:OE(z.hasUpstream)};return J.replace(/\{\{([a-zA-Z][a-zA-Z0-9_]*)\}\}/g,(Z,G)=>Object.hasOwn(Y,G)?Y[G]:Z)}async function RE(J){let z=WE.join(J,".kobe","pr-instructions.md");try{let Y=await BE.readFile(z,"utf8");return Y.length>0?Y:w3}catch{return w3}}async function P3(J){let[z,Y]=await Promise.all([RE(J),FE(J)]);return AE(z,Y)}var VE=5000,w3=`The user likes the current state of the code.
280
282
 
281
283
  {{dirtyCountSentence}}
282
284
  The current branch is {{branch}}.
@@ -293,16 +295,16 @@ Follow these steps to create a PR:
293
295
  - Push to origin.
294
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.
295
297
 
296
- If any of these steps fail, ask the user for help.`;var gF=b(()=>{hY();kQ()});var MW={};f1(MW,{startOpsPreview:()=>BE,startOpsHost:()=>XE});import{createHash as tu}from"crypto";import{SyntaxStyle as eu}from"@opentui/core";function YE(J){let{theme:z}=i0(),[Y,Z]=r(null),X=!1;zJ(()=>{(async()=>{let C=await LH({logTag:"ops-activity",channels:["transcript.activity"]});if(!C)return;if(X){C.dispose();return}Z(C)})()}),S1(()=>{X=!0,Y()?.dispose()});let G=()=>Y()?.transcriptActivitySignal()()??null,Q=()=>G()?.get(J.worktree)??null,[f,H]=r(0),[B,V]=r(0),j=!1;r0(()=>{let C=G();if(!C)return;let M=C.get(J.worktree)?.mtimeMs??0;if(!j&&M>0)j=!0,H(M);V(M)}),r0(()=>{if(G()!==null)return;let C=!1,M,I=MF,$=0,i=0;async function e(){try{let J0=await rZ(J.vendor,J.worktree);if(C)return;if(!j)j=!0,H(J0),i=J0;if(J0>i)i=J0,$=0;else $++;V(J0)}catch{$++}finally{if(!C)I=FF(I,$),M=setTimeout(()=>void e(),I)}}e(),S1(()=>{if(C=!0,M)clearTimeout(M)})});let K=()=>j&&B()>f(),L=()=>K()?{text:F("ops.badge.newActivity"),active:!0}:null;function A(){H(B())}zJ(()=>{if(!J.targetPane)return;let C=VG(J.vendor),M=!1,I=null,$=!1,i="",e=!1,J0=0,T=null,f0=xQ,_=0,W0,R0=()=>G()!==null;async function V0(p){if(p===T)return;T=p,await uY(J.targetPane,zE,p)}async function t(){if(R0())return Q()?.completionId??null;return(await C.latestCompletion(J.worktree))?.id??null}async function P(){try{i=CF(await BX(J.targetPane,80)),I=await t(),$=!0,await V0(C.supportsCompletionMarkers()?"idle":"unknown")}catch{}}async function N(){let p=R0();try{let u=CF(await BX(J.targetPane,80));if(M)return;if(p&&!$)I=Q()?.completionId??null,$=!0;let d=p?Q()?.mtimeMs??0:0,o=d>_;if(d>_)_=d;if(u!==i)i=u,e=!0,J0=0,await V0(C.supportsCompletionMarkers()?"running":"unknown");else if(e)J0++;if(C.supportsCompletionMarkers()&&e&&J0>=JE){let Q0=await t();if(!M&&Q0!==null&&Q0!==I)I=Q0,e=!1,J0=0,await V0("done")}f0=p?OF(f0,o,T):xQ}catch{f0=xQ}finally{if(!M)W0=setTimeout(()=>void N(),f0)}}P(),W0=setTimeout(()=>void N(),xQ),S1(()=>{if(M=!0,W0)clearTimeout(W0)})});function O(C){if(!J.taskId)return;Oz(N1(J.taskId),{cwd:J.worktree,command:P7({worktree:J.worktree,relPath:C,cliInvocation:k1()}),name:ZE(C)})}function R(C){if(!J.taskId){O(C);return}let M=`${J.worktree}/${C}`;zF(N1(J.taskId),J.worktree,M).then((I)=>{if(!I)O(C)})}function x(C){if(!J.targetPane)return;Df(J.targetPane,`@${C} `)}async function a(){if(!J.targetPane)return;let C=await RF(J.worktree);await Df(J.targetPane,C),await SG(J.targetPane,"Enter")}function S(){if(!J.taskId)return;let C=N1(J.taskId),M=k1(),I=`${n1()}${NJ(M)} layout --session ${Z1(C)} --action zen-toggle`;c0(["run-shell","-b",I])}return(()=>{var C=W("box");return q(C,"flexDirection","column"),q(C,"flexGrow",1),U(C,k(LW,{worktreePath:()=>J.worktree,focused:()=>!0,onOpenFile:R,onMention:x,onCreatePR:()=>void a(),get onZenToggle(){return J.taskId?S:void 0},cornerBadge:L,onRefresh:A})),y((M)=>q(C,"backgroundColor",z.background,M)),C})()}function ZE(J){let z=J.lastIndexOf("/");return z>=0?J.slice(z+1):J}function CF(J){return tu("sha1").update(J).digest("hex")}async function XE(J){await OJ({logContext:"ops",providers:{kv:!1,focus:!1},setup:()=>({root:()=>k(YE,J)})})}function GE(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 QE(J,z){let Y=await bX(J,["diff","HEAD","--",z]);return Y.status===0?Y.stdout:""}async function qE(J,z){return await y6(J,z)??""}function fE(J){let z={fg:J.primary},Y={fg:J.success},Z={fg:J.info},X={fg:J.warning},G={fg:J.accent},Q={fg:J.textMuted,italic:!0},f={fg:J.textMuted},H={fg:J.text};return eu.fromStyles({keyword:z,"keyword.function":z,"keyword.return":z,"keyword.import":z,"keyword.exception":z,"keyword.conditional":z,"keyword.repeat":z,"keyword.operator":z,"keyword.modifier":z,"keyword.type":z,string:Y,"string.escape":Y,"string.regexp":Y,"string.special":Y,"character.special":Y,comment:Q,"comment.documentation":Q,function:Z,"function.call":Z,"function.method":Z,"function.builtin":Z,constructor:Z,type:X,"type.builtin":X,constant:G,"constant.builtin":G,boolean:G,number:G,operator:f,"punctuation.bracket":f,"punctuation.delimiter":f,"punctuation.special":f,variable:H,"variable.member":H,"variable.parameter":H,"variable.builtin":G,property:H,attribute:X,label:H,module:H})}function HE(J){let{theme:z}=i0(),Y=fE(z),Z=GE(J.relPath),[X]=Sq(()=>J.relPath,async(G)=>{let Q=await QE(J.worktree,G);if(Q.trim().length>0)return{kind:"diff",text:Q};return{kind:"code",text:await qE(J.worktree,G)}});return D1(()=>({bindings:[{key:"q",cmd:()=>process.exit(0)},{key:"escape",cmd:()=>process.exit(0)},{key:"ctrl+c",cmd:()=>process.exit(0)}]})),(()=>{var G=W("box"),Q=W("box"),f=W("text"),H=W("text"),B=W("text"),V=W("box");return D(G,Q),D(G,V),q(G,"flexDirection","column"),q(G,"flexGrow",1),D(Q,f),D(Q,H),D(Q,B),q(Q,"flexDirection","row"),q(Q,"gap",1),q(Q,"paddingLeft",1),q(Q,"paddingRight",1),U(f,()=>J.relPath),U(H,(()=>{var j=u0(()=>X()?.kind==="diff");return()=>j()?F("ops.preview.diffVsHead"):F("ops.preview.file")})()),U(B,()=>F("ops.preview.closeHint")),q(V,"flexGrow",1),U(V,k(G0,{get when(){return X()},get fallback(){return(()=>{var j=W("text");return U(j,()=>F("ops.preview.loading")),y((K)=>q(j,"fg",z.textMuted,K)),j})()},children:(j)=>k(G0,{get when(){return j().kind==="diff"},get fallback(){return(()=>{var K=W("code");return q(K,"filetype",Z),q(K,"syntaxStyle",Y),y((L)=>q(K,"content",j().text,L)),K})()},get children(){var K=W("diff");return q(K,"view","unified"),q(K,"filetype",Z),q(K,"syntaxStyle",Y),q(K,"showLineNumbers",!0),y((L)=>q(K,"diff",j().text,L)),K}})})),y((j)=>{var{background:K,accent:L,textMuted:A,textMuted:O}=z;return K!==j.e&&(j.e=q(G,"backgroundColor",K,j.e)),L!==j.t&&(j.t=q(f,"fg",L,j.t)),A!==j.a&&(j.a=q(H,"fg",A,j.a)),O!==j.o&&(j.o=q(B,"fg",O,j.o)),j},{e:void 0,t:void 0,a:void 0,o:void 0}),G})()}async function BE(J){await OJ({providers:{kv:!1,focus:!1},setup:()=>({root:()=>k(HE,J)})})}var JE=2,zE="@kobe_tab_state";var FW=b(()=>{w();w();w();w();w();w();w();YY();Uq();Dq();h1();YF();Wz();uf();W1();E9();m1();GJ();_Y();yJ();LF();jZ();gF()});var SF={};f1(SF,{startDirectTmux:()=>WE,chooseInitialTask:()=>kF});import{resolve as NF}from"path";function kF(J,z={}){let Y=(Q)=>Q?J.find((f)=>f.id===Q):void 0,Z=Y(z.activeTaskId);if(Z)return Z;let X=Y(z.persistedTaskId);if(X)return X;if(z.cwdRepo){let Q=J.find((f)=>f.kind==="main"&&f.repo===z.cwdRepo);if(Q)return Q}let G=J.filter((Q)=>!Q.archived);return G.find((Q)=>Q.pinned)??G[0]??J[0]}async function bF(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 jE(J){sH();let z=[...gJ()];if(z.length===0)z=[oz(NF(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]??NF(process.cwd())}async function WE(){if(_Q("gui"),Promise.resolve().then(() => (ej(),tj)).then((Y)=>Y.ensureGlobalKobeHooks()),!await Pz()){console.error("kobe: tmux not found on PATH \u2014 install tmux to use kobe 0.6 direct mode"),process.exitCode=1;return}let J=await gz(),z=new KJ(J,{role:"gui"});try{process.env.KOBE_DAEMON_SOCKET_PATH=J.socketPath,await z.init();let Y=await jE(z),Z=kF(z.listTasks(),{activeTaskId:z.activeTaskSignal()(),persistedTaskId:C1("lastSelectedTaskId"),cwdRepo:Y});if(!Z){let j=await Lf();if(await OZ(),await Hf(j),await Uf(j),await bF(RX(j))===null)console.error("kobe: failed to attach to the kobe-home session"),process.exitCode=1;return}let X=Z.worktreePath||await z.ensureWorktree(Z.id),G=N1(Z.id);await z.setActiveTask(Z.id).catch(()=>{}),s1("lastSelectedTaskId",Z.id);let Q=Z.vendor;if(Z.kind==="main"){let K=await wB(G)??xJ(C1("lastSelectedVendor"),uJ());if(K!==Z.vendor)await z.setVendor(Z.id,K).catch(()=>{}),Q=K}let f=kX(Z.repo,X,{kind:"repo-init"});if(!await iG({name:G,cwd:X,command:oJ(Q),taskId:Z.id,vendor:Q,repo:Z.repo,launchInit:f})){console.error(`kobe: tmux session ${G} failed to start (check the daemon log)`),process.exitCode=1;return}await OZ(),await Hf(G),await Uf(G);let B=await bF(RX(G));if(B===null){console.error(`kobe: failed to attach to tmux session ${G}`),process.exitCode=1;return}if(B!==0&&!await V1(G)){console.error(`kobe: tmux session ${G} ended unexpectedly (attach exited ${B})`),process.exitCode=B;return}let V=z.getTask(Z.id);if(V&&V.title===xz&&V.worktreePath)try{let j=await oZ(V.worktreePath,V.vendor);if(j)await z.setTitle(V.id,j)}catch(j){console.error("[kobe] auto-title failed:",j)}}finally{z.dispose()}}var IF=b(()=>{YZ();FJ();iY();sJ();Oq();RG();SX();A1();h1();$1();Yf();xY();YJ()});var TF={};f1(TF,{startTui:()=>VE});async function VE(){ZD();let{startDirectTmux:J}=await Promise.resolve().then(() => (IF(),SF));await J()}var yF=b(()=>{JH()});vH();$1();import{resolve as AW}from"path";MJ();function PW(){return[`kobe ${p0}`,"","Usage: kobe [command] [options]","","Run with no command to launch the TUI.","","Commands:"," web [options] Launch the browser dashboard"," completions <shell> Generate shell completion script (bash/zsh/fish)"," add [path] Save a repo path for the new-task picker"," remove [path] Forget a saved project (inverse of add; non-destructive)"," adopt [glob] Import existing git worktrees as tasks"," export [--csv|--json] Print the task list (json/csv/table; daemon-free)"," repo <verb> Per-repo init script + first prompt (show|set|unset)"," api <verb> Scriptable RPC surface for agents (see `kobe api --help`)"," daemon <verb> Manage the daemon (start|stop|status|restart)"," theme <verb> Manage user themes (list|add|remove)"," skill <verb> Install the kobe agent skill (install|status|command)"," feedback Send feedback to GitHub Discussions"," update [target] Self-update kobe"," doctor Diagnose daemon / tmux / state (read-only)"," reset [--hard] Recover a wedged install"," reload Restart Tasks/Ops panes in place (engine untouched)"," kill-sessions Tear down kobe's tmux server (dev reset)","","Options:"," -v, --version Print version"," -h, --help Print this help"].join(`
297
- `)}var xF=`Usage: kobe add [path]
298
+ If any of these steps fail, ask the user for help.`;var h3=C(()=>{dY();yQ()});var NW={};Q1(NW,{startOpsPreview:()=>wE,startOpsHost:()=>IE});import{createHash as gE}from"crypto";import{SyntaxStyle as NE}from"@opentui/core";function bE(J){let{theme:z}=E0(),[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,y=x3,$=0,c=0;async function e(){try{let u=await tZ(J.vendor,J.worktree);if(g)return;if(!B)B=!0,f(u),c=u;if(u>c)c=u,$=0;else $++;V(u)}catch{$++}finally{if(!g)y=u3(y,$),M=setTimeout(()=>void e(),y)}}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,y=null,$=!1,c="",e=!1,u=0,Y0=null,q0=wQ,s=0,W0,N0=()=>X()!==null;async function v(t){if(t===Y0)return;Y0=t,await hY(J.targetPane,kE,t)}async function o(){if(N0())return Q()?.completionId??null;return(await g.latestCompletion(J.worktree))?.id??null}async function m(){try{c=v3(await WG(J.targetPane,80)),y=await o(),$=!0,await v(g.supportsCompletionMarkers()?"idle":"unknown")}catch{}}async function k(){let t=N0();try{let T=v3(await WG(J.targetPane,80));if(M)return;if(t&&!$)y=Q()?.completionId??null,$=!0;let n=t?Q()?.mtimeMs??0:0,X0=n>s;if(n>s)s=n;if(T!==c)c=T,e=!0,u=0,await v(g.supportsCompletionMarkers()?"running":"unknown");else if(e)u++;if(g.supportsCompletionMarkers()&&e&&u>=CE){let H0=await o();if(!M&&H0!==null&&H0!==y)y=H0,e=!1,u=0,await v("done")}q0=t?E3(q0,X0,Y0):wQ}catch{q0=wQ}finally{if(!M)W0=setTimeout(()=>void k(),q0)}}m(),W0=setTimeout(()=>void k(),wQ),S1(()=>{if(M=!0,W0)clearTimeout(W0)})});function O(g){if(!J.taskId)return;gz(C1(J.taskId),{cwd:J.worktree,command:iV({worktree:J.worktree,relPath:g,cliInvocation:b1()}),name:SE(g)})}function R(g){if(!J.taskId){O(g);return}let M=`${J.worktree}/${g}`;U3(C1(J.taskId),J.worktree,M).then((y)=>{if(!y)O(g)})}function x(g){if(!J.targetPane)return;MH(J.targetPane,`@${g} `)}async function w(){if(!J.targetPane)return;let g=await P3(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(),y=`${i1()}${bJ(M)} layout --session ${Z1(g)} --action zen-toggle`;m0(["run-shell","-b",y])}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})),I((M)=>q(g,"backgroundColor",z.background,M)),g})()}function SE(J){let z=J.lastIndexOf("/");return z>=0?J.slice(z+1):J}function v3(J){return gE("sha1").update(J).digest("hex")}async function IE(J){await KJ({logContext:"ops",providers:{kv:!1,focus:!1},setup:()=>({root:()=>b(bE,J)})})}function yE(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 TE(J,z){let Y=await SG(J,["diff","HEAD","--",z]);return Y.status===0?Y.stdout:""}async function xE(J,z){return await m5(J,z)??""}function uE(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 NE.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 EE(J){let{theme:z}=E0(),Y=uE(z),Z=yE(J.relPath),[G]=WZ(()=>J.relPath,async(X)=>{let Q=await TE(J.worktree,X);if(Q.trim().length>0)return{kind:"diff",text:Q};return{kind:"code",text:await xE(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(Z0,{get when(){return G()},get fallback(){return(()=>{var B=W("text");return U(B,()=>F("ops.preview.loading")),I((K)=>q(B,"fg",z.textMuted,K)),B})()},children:(B)=>b(Z0,{get when(){return B().kind==="diff"},get fallback(){return(()=>{var K=W("code");return q(K,"filetype",Z),q(K,"syntaxStyle",Y),I((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),I((L)=>q(K,"diff",B().text,L)),K}})})),I((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 wE(J){await KJ({providers:{kv:!1,focus:!1},setup:()=>({root:()=>b(EE,J)})})}var CE=2,kE="@kobe_tab_state";var CW=C(()=>{E();E();E();E();E();E();E();YY();Fq();Mq();v1();D3();Uz();PH();W1();c9();E1();ZJ();DY();gJ();T3();KZ();h3()});var n3={};Q1(n3,{startDirectTmux:()=>hE,chooseInitialTask:()=>d3});import{resolve as m3}from"path";function d3(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 c3(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 PE(J){Y8();let z=[...CJ()];if(z.length===0)z=[oz(m3(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]??m3(process.cwd())}async function hE(){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 PE(z),Z=d3(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 c3(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 c3(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 i3=C(()=>{GZ();RJ();_Y();eJ();gq();kX();yG();A1();v1();a1();XH();PY();zJ()});var l3={};Q1(l3,{startTui:()=>vE});async function vE(){BD();let{startDirectTmux:J}=await Promise.resolve().then(() => (i3(),n3));await J()}var $3=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 a3=`Usage: kobe add [path]
298
300
  kobe add --remote --host <host> --user <user> --path <basePath> [--port N] [--key <path> | --password]
299
301
 
300
302
  Save a repo for the new-task picker. With --remote, register an SSH-backed
301
303
  project whose worktrees + engine run on <host> under <basePath>.
302
- `;async function KE(J){let z=J[0];if(z==="--help"||z==="-h"||z==="help"){process.stdout.write(xF);return}if(z==="--remote"){let{runAddRemote:Q}=await Promise.resolve().then(() => (eW(),tW));await Q(J.slice(1));return}if(z?.startsWith("-"))process.stderr.write(`kobe add: unknown flag "${z}"
304
+ `;async function mE(J){let z=J[0];if(z==="--help"||z==="-h"||z==="help"){process.stdout.write(a3);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}"
303
305
 
304
- ${xF}`),process.exit(2);let Y=AW(process.cwd(),z&&z.length>0?z:"."),{addSavedRepo:Z,isGitRepo:X}=await Promise.resolve().then(() => (A1(),tz));if(!X(Y))process.stderr.write(`kobe add: "${z&&z.length>0?z:"."}" is not a git repository (resolved to ${Y}).
305
- `),process.exit(1);let G=Z(Y);if(G.added)console.log(`added ${G.path} (${G.total} saved repo${G.total===1?"":"s"} total)`);else console.log(`already saved: ${G.path}`);await DE(G.path)}var uF=`Usage: kobe remove [path]
306
+ ${a3}`),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 dE(X.path)}var _3=`Usage: kobe remove [path]
306
308
 
307
309
  Forget a saved project (drop it from the new-task picker). Non-destructive:
308
310
  the repo's files, worktrees, branches and tasks all stay on disk. A remote
@@ -311,19 +313,19 @@ the repo's files, worktrees, branches and tasks all stay on disk. A remote
311
313
  path defaults to the current directory. Pass an exact saved entry (e.g. a
312
314
  remote \`ssh://user@host\` key) to remove it verbatim. Run with no match to
313
315
  print the current saved projects.
314
- `;async function UE(J){let z=J[0];if(z==="--help"||z==="-h"||z==="help"){process.stdout.write(uF);return}if(z?.startsWith("-"))process.stderr.write(`kobe remove: unknown flag "${z}"
316
+ `;async function cE(J){let z=J[0];if(z==="--help"||z==="-h"||z==="help"){process.stdout.write(_3);return}if(z?.startsWith("-"))process.stderr.write(`kobe remove: unknown flag "${z}"
315
317
 
316
- ${uF}`),process.exit(2);let{getSavedRepos:Y,resolveRepoRoot:Z}=await Promise.resolve().then(() => (A1(),tz)),X=Y();if(X.length===0){console.log("no saved projects to remove.");return}let G=z&&z.length>0?z:".",Q=X.includes(G)?G:(()=>{let V=AW(process.cwd(),G),j=Z(V);if(X.includes(j))return j;if(X.includes(V))return V;return null})();if(Q===null){process.stderr.write(`kobe remove: "${G}" is not a saved project.
318
+ ${_3}`),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.
317
319
 
318
320
  Saved projects:
319
- `);for(let V of X)process.stderr.write(` ${V}
320
- `);process.exit(1)}let{connectIfRunning:f}=await Promise.resolve().then(() => (FJ(),Kf)),H=await f();try{if(H)await H.request("project.forget",{repo:Q});else await(await RW()).forgetProject(Q)}finally{H?.close()}let B=Y().length;console.log(`removed ${Q} (${B} saved repo${B===1?"":"s"} left)`)}async function DE(J){let z=await RW(),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 wF(z,J,Y,rY(void 0))}async function RW(){let{TaskIndexStore:J}=await Promise.resolve().then(() => (YQ(),yj)),{GitWorktreeManager:z}=await Promise.resolve().then(() => (uj(),X4)),{Orchestrator:Y}=await Promise.resolve().then(() => (RG(),X5)),Z=new J;return await Z.load(),new Y({store:Z,worktrees:new z})}async function wF(J,z,Y,Z){let{connectIfRunning:X}=await Promise.resolve().then(() => (FJ(),Kf)),G=await X();try{for(let Q of Y){let f=G?(await G.request("worktree.adopt",{repo:z,worktreePath:Q.path,branch:Q.branch,vendor:Z})).task:await J.adoptWorktree({repo:z,worktreePath:Q.path,branch:Q.branch,vendor:Z});console.log(` adopted ${Q.branch} \u2192 task ${f.id} (${f.title})`)}}finally{G?.close()}}var PF=["Usage: kobe adopt [glob] [--repo <path>] [--vendor <v>] [--yes]","","Import existing git worktrees in a repo as kobe tasks.","No glob \u2192 dry-run listing. With a glob \u2192 list matches; --yes adopts them.","","Options:"," --repo <path> Repo to scan (default: current directory)"," --vendor <v> Engine vendor for adopted tasks"," -y, --yes Actually adopt the matched worktrees"," -h, --help Print this help",""].join(`
321
- `);function OW(J){process.stderr.write(`kobe adopt: ${J}
322
-
323
- ${PF}
324
- `),process.exit(2)}async function LE(J){let z,Y,Z,X=!1;for(let K=0;K<J.length;K++){let L=J[K];if(L==="--help"||L==="-h"||L==="help"){process.stdout.write(`${PF}
325
- `);return}if(L==="--repo"){if(Y=J[++K],Y===void 0)OW("--repo requires a value")}else if(L==="--vendor"){if(Z=J[++K],Z===void 0)OW("--vendor requires a value")}else if(L==="--yes"||L==="-y")X=!0;else if(L&&!L.startsWith("-")&&z===void 0)z=L;else OW(`unexpected argument "${L}"`)}let{resolveRepoRoot:G}=await Promise.resolve().then(() => (A1(),tz)),Q=G(AW(process.cwd(),Y&&Y.length>0?Y:".")),f=rY(Z),H=await RW(),B=await H.discoverAdoptableWorktrees(Q);if(B.length===0){console.log(`no adoptable worktrees for ${Q} \u2014 every git worktree here is already a task`);return}let V=(K)=>!z||EQ(z,K.path);console.log(`adoptable worktrees in ${Q}:`);for(let K of B){let L=z?V(K)?"*":" ":"-",A=[K.dirty?"dirty":"",K.kobeManaged?"":"external"].filter(Boolean).join(",");console.log(` ${L} ${K.branch} ${K.path}${A?` (${A})`:""}`)}if(!z){console.log(`
326
- pass a path glob to adopt, e.g. kobe adopt '${Q}/*' --yes`);return}let j=B.filter(V);if(j.length===0){console.log(`
327
- no worktrees match glob ${JSON.stringify(z)}`);return}if(!X){console.log(`
328
- ${j.length} worktree(s) match \u2014 re-run with --yes to adopt them`);return}await wF(H,Q,j,f),console.log(`done \u2014 adopted ${j.length} worktree(s)`)}function EF(J){J.write(`${PW()}
329
- `)}function Xz(J){let z={};for(let Y=0;Y<J.length;Y++){let Z=J[Y],X=J[Y+1];if(X===void 0)continue;if(Z==="--task-id")z.taskId=X,Y++;else if(Z==="--worktree")z.worktree=X,Y++;else if(Z==="--target-pane")z.targetPane=X,Y++;else if(Z==="--vendor")z.vendor=X,Y++;else if(Z==="--preview")z.preview=X,Y++;else if(Z==="--session")z.session=X,Y++;else if(Z==="--repo")z.repo=X,Y++;else if(Z==="--initial-task-id")z.initialTaskId=X,Y++;else if(Z==="--action")z.action=X,Y++;else if(Z==="--window")z.windowId=X,Y++;else if(Z==="--cols")z.cols=X,Y++;else if(Z==="--rows")z.rows=X,Y++;else if(Z==="--status")z.status=X,Y++;else if(Z==="--client")z.client=X,Y++}return z}async function ME(){let[,,...J]=process.argv,[z,...Y]=J;if(z==="--version"||z==="-v"||z==="version"){let{CURRENT_VERSION:X}=await Promise.resolve().then(() => (MJ(),wW));console.log(`kobe ${X}`);return}if(z==="--help"||z==="-h"||z==="help"){EF(process.stdout);return}if(z==="add"){await KE(Y);return}if(z==="remove"){await UE(Y);return}if(z==="completions"){let{runCompletionsSubcommand:X}=await Promise.resolve().then(() => (f4(),q4));await X(Y);return}if(z==="adopt"){await LE(Y);return}if(z==="export"){let{runExportSubcommand:X}=await Promise.resolve().then(() => (V4(),W4));await X(Y);return}if(z==="repo"){let{runRepoSubcommand:X}=await Promise.resolve().then(() => (L4(),D4));await X(Y);return}if(z==="api"){let{runApiSubcommand:X}=await Promise.resolve().then(() => (E4(),u4));await X(Y);return}if(z==="update"){let{runUpdateSubcommand:X}=await Promise.resolve().then(() => (m4(),v4));await X(Y);return}if(z==="theme"){let{runThemeSubcommand:X}=await Promise.resolve().then(() => (l4(),i4));await X(Y);return}if(z==="feedback"){let{runFeedbackSubcommand:X}=await Promise.resolve().then(() => (r4(),p4));await X(Y);return}if(z==="daemon"){let{runDaemonSubcommand:X}=await Promise.resolve().then(() => (JD(),e4));await X(Y);return}if(z==="doctor"){let{runDoctorSubcommand:X}=await Promise.resolve().then(() => (YH(),zH));await X(Y);return}if(z==="web"){let{runWebSubcommand:X}=await Promise.resolve().then(() => (DD(),UD));await X(Y);return}if(z==="reset"){let{runResetSubcommand:X}=await Promise.resolve().then(() => (YH(),zH));await X(Y);return}if(z==="reload"){let{runReloadSubcommand:X}=await Promise.resolve().then(() => (YH(),zH));await X(Y);return}if(z==="skill"){let{runSkillSubcommand:X}=await Promise.resolve().then(() => (FD(),MD));await X(Y);return}if(z==="hook"){let{runHookSubcommand:X}=await Promise.resolve().then(() => (ej(),tj));await X(Y);return}if(z==="new-chattab"){let X=Xz(Y),G=X.session;if(!G)console.error("kobe new-chattab: --session <name> is required"),process.exit(2);let{windowIsSurface:Q}=await Promise.resolve().then(() => (h1(),$G));if(await Q(G))return;let f;if(X.vendor!==void 0){let B=X.vendor.trim(),{getCustomEngineIds:V}=await Promise.resolve().then(() => (A1(),tz)),{isBuiltinVendor:j}=await Promise.resolve().then(() => ($1(),SW));if(!(j(B)||V().includes(B))){let A=[...l1,...V()].join(", "),O=`kobe: unknown engine '${B}' (known: ${A})`,{runTmux:R}=await Promise.resolve().then(() => (h1(),$G));await R(["display-message","-t",G,O]),console.error(O),process.exit(2)}f=B;let{setPersistedString:L}=await Promise.resolve().then(() => (A1(),tz));L("lastSelectedVendor",f)}let{newChatTab:H}=await Promise.resolve().then(() => (YJ(),vJ));await H(G,f);return}if(z==="engine-tab-exit"){let G=Xz(Y).session;if(!G)console.error("kobe engine-tab-exit: --session <name> is required"),process.exit(2);let{engineTabExit:Q}=await Promise.resolve().then(() => (xY(),kB));await Q(G);return}if(z==="kill-sessions"){let{runTmux:X,KOBE_TMUX_SOCKET:G}=await Promise.resolve().then(() => (h1(),$G)),Q=await X(["kill-server"]);console.log(Q===0?`kobe: killed all tmux sessions on the \`${G}\` socket`:`kobe: no tmux sessions to kill on the \`${G}\` socket`);return}if(z==="quick-create"){let G=Xz(Y).session;if(!G)console.error("kobe quick-create: --session <name> is required"),process.exit(2);let{quickCreate:Q}=await Promise.resolve().then(() => (YJ(),vJ));await Q(G);return}if(z==="focus-tasks"){let X=Xz(Y),G=X.session;if(!G)console.error("kobe focus-tasks: --session <name> is required"),process.exit(2);let{windowIsSurface:Q}=await Promise.resolve().then(() => (h1(),$G));if(X.windowId&&await Q(X.windowId))return;let{selectTasksPane:f}=await Promise.resolve().then(() => (YJ(),vJ));await f(G,{windowId:X.windowId});return}if(z==="heal-layout"){let G=Xz(Y).session;if(!G)console.error("kobe heal-layout: --session <name> is required"),process.exit(2);let{healSessionLayout:Q}=await Promise.resolve().then(() => (YJ(),vJ)),{coalesceLayoutWork:f}=await Promise.resolve().then(() => (FX(),Gf));await f(G,"heal",()=>Q(G));return}if(z==="resync-window"){let X=Xz(Y),G=X.session;if(!G)console.error("kobe resync-window: --session <name> is required"),process.exit(2);let Q=Number.parseInt(X.cols??"",10),f=Number.parseInt(X.rows??"",10),H=Number.isInteger(Q)&&Q>0&&Number.isInteger(f)&&f>0?{columns:Q,rows:f}:null,{resyncWindowToClient:B}=await Promise.resolve().then(() => (YJ(),vJ)),{coalesceLayoutWork:V}=await Promise.resolve().then(() => (FX(),Gf));await V(G,"resync",()=>B(G,{size:H,status:X.status,clientName:X.client}));return}if(z==="capture-layout"){let G=Xz(Y).session;if(!G)console.error("kobe capture-layout: --session <name> is required"),process.exit(2);let{captureGlobalLayoutOnDrag:Q}=await Promise.resolve().then(() => (YJ(),vJ)),{coalesceLayoutWork:f,genAgeMs:H,RESIZE_GUARD_MS:B}=await Promise.resolve().then(() => (FX(),Gf));await f(G,"capture",async()=>{if(H(G,"resize")<B)return;await Q(G)});return}if(z==="layout"){let X=Xz(Y),G=X.session;if(!G)console.error("kobe layout: --session <name> is required"),process.exit(2);let Q=X.action;if(!Q||!new Set(["workspace-split","workspace-close","workspace-reset","tasks-toggle","tasks-restore","ops-toggle","terminal-toggle","zen-toggle","chat-tab-close"]).has(Q))console.error("kobe layout: --action must be one of workspace-split, workspace-close, workspace-reset, tasks-toggle, tasks-restore, ops-toggle, terminal-toggle, zen-toggle, chat-tab-close"),process.exit(2);let{runLayoutAction:H}=await Promise.resolve().then(() => (YJ(),vJ));await H(G,Q,{windowId:X.windowId});return}if(z==="quick-task"){let X=Xz(Y),{startQuickTaskHost:G}=await Promise.resolve().then(() => (l3(),i3));await G({session:X.session});return}if(z==="tasks"){let X=Xz(Y),{startTasksPane:G}=await Promise.resolve().then(() => ($M(),lM));await G({initialTaskId:X.initialTaskId});return}if(z==="settings"){let{startSettingsHost:X}=await Promise.resolve().then(() => (_M(),aM));await X();return}if(z==="help-page"){let{startHelpHost:X}=await Promise.resolve().then(() => (rM(),pM));await X();return}if(z==="new-task"){let X=Xz(Y),{startNewTaskHost:G}=await Promise.resolve().then(() => (i9(),E3));await G({defaultRepo:X.repo});return}if(z==="update-page"){let{startUpdateHost:X}=await Promise.resolve().then(() => (sM(),oM));await X();return}if(z==="ops"){let X=Xz(Y);if(!X.worktree)console.error("kobe ops: --worktree <path> is required"),process.exit(2);if(X.preview){let{startOpsPreview:Q}=await Promise.resolve().then(() => (FW(),MW));await Q({worktree:X.worktree,relPath:X.preview});return}let{startOpsHost:G}=await Promise.resolve().then(() => (FW(),MW));await G({taskId:X.taskId??"",worktree:X.worktree,targetPane:X.targetPane??null,vendor:rY(X.vendor)});return}if(z!==void 0)console.error(`kobe: unknown command '${z}'`),EF(process.stderr),process.exit(2);let{startTui:Z}=await Promise.resolve().then(() => (yF(),TF));await Z()}ME().catch((J)=>{console.error("kobe failed to start:",J),process.exit(1)});
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 dE(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 r3(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(),W4)),{Orchestrator:Y}=await Promise.resolve().then(() => (kX(),BK)),Z=new J;return await Z.load(),new Y({store:Z,worktrees:new z})}async function r3(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 o3=["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}
324
+
325
+ ${o3}
326
+ `),process.exit(2)}async function nE(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(`${o3}
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(`
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 r3(f,Q,B,H),console.log(`done \u2014 adopted ${B.length} worktree(s)`)}function p3(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 iE(){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"){p3(process.stdout);return}if(z==="add"){await mE(Y);return}if(z==="remove"){await cE(Y);return}if(z==="completions"){let{runCompletionsSubcommand:G}=await Promise.resolve().then(() => (D4(),U4));await G(Y);return}if(z==="adopt"){await nE(Y);return}if(z==="export"){let{runExportSubcommand:G}=await Promise.resolve().then(() => (A4(),O4));await G(Y);return}if(z==="repo"){let{runRepoSubcommand:G}=await Promise.resolve().then(() => (C4(),N4));await G(Y);return}if(z==="api"){let{runApiSubcommand:G}=await Promise.resolve().then(() => (n4(),d4));await G(Y);return}if(z==="update"){let{runUpdateSubcommand:G}=await Promise.resolve().then(() => (_4(),a4));await G(Y);return}if(z==="theme"){let{runThemeSubcommand:G}=await Promise.resolve().then(() => (t4(),s4));await G(Y);return}if(z==="feedback"){let{runFeedbackSubcommand:G}=await Promise.resolve().then(() => (ZD(),YD));await G(Y);return}if(z==="daemon"){let{runDaemonSubcommand:G}=await Promise.resolve().then(() => (HD(),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(() => (ND(),gD));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(() => (bD(),kD));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(() => (zM(),JM));await X({session:G.session});return}if(z==="tasks"){let G=lJ(Y),{startTasksPane:X}=await Promise.resolve().then(() => (Y3(),z3));await X({initialTaskId:G.initialTaskId});return}if(z==="settings"){let{startSettingsHost:G}=await Promise.resolve().then(() => (G3(),Z3));await G();return}if(z==="help-page"){let{startHelpHost:G}=await Promise.resolve().then(() => (Q3(),X3));await G();return}if(z==="new-task"){let G=lJ(Y),{startNewTaskHost:X}=await Promise.resolve().then(() => (r9(),$F));await X({defaultRepo:G.repo});return}if(z==="update-page"){let{startUpdateHost:G}=await Promise.resolve().then(() => (H3(),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(() => (B3(),j3));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}'`),p3(process.stderr),process.exit(2);let{startTui:Z}=await Promise.resolve().then(() => ($3(),l3));await Z()}iE().catch((J)=>{console.error("kobe failed to start:",J),process.exit(1)});