@sma1lboy/kobe 0.7.57 → 0.7.59

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 (43) hide show
  1. package/dist/cli/index.js +223 -216
  2. package/dist/web-ui/assets/{AppShell-DatLbUH8.js → AppShell-DndsbGJA.js} +1 -1
  3. package/dist/web-ui/assets/{Board-eEGLQBF4.js → Board-BkldAXiI.js} +1 -1
  4. package/dist/web-ui/assets/{BoardPeek-BN0d-Zie.js → BoardPeek-BVASBGzn.js} +2 -2
  5. package/dist/web-ui/assets/{ChatTerminal-DtqC7Mxi.js → ChatTerminal-EpSnfEJZ.js} +1 -1
  6. package/dist/web-ui/assets/{ChatTranscript-CzQspNKE.js → ChatTranscript-JH30pnFy.js} +1 -1
  7. package/dist/web-ui/assets/{ConfirmDialog-BPIwmIjt.js → ConfirmDialog-DELlvuWi.js} +1 -1
  8. package/dist/web-ui/assets/{IssueIntakePanel-BF7ifkKK.js → IssueIntakePanel-DBUEg3tF.js} +1 -1
  9. package/dist/web-ui/assets/{IssuePeek-DTInqza8.js → IssuePeek-LBdq3maL.js} +1 -1
  10. package/dist/web-ui/assets/{IssuesPage-Bx7iHFBo.js → IssuesPage-_Ov-3CBH.js} +1 -1
  11. package/dist/web-ui/assets/{RichEditor-DvjbbcLw.js → RichEditor-DGpLNBUT.js} +1 -1
  12. package/dist/web-ui/assets/{SettingsPage-DZ25Tk5v.js → SettingsPage-BdA2cY4d.js} +1 -1
  13. package/dist/web-ui/assets/{SlideOver-D9BDfm6L.js → SlideOver-DpkL00Bv.js} +1 -1
  14. package/dist/web-ui/assets/{ViewToggle-DsJBr4VT.js → ViewToggle-BUVZKRCa.js} +1 -1
  15. package/dist/web-ui/assets/{WorkspaceTabs-C2pSVT1A.js → WorkspaceTabs-CCl6hl8g.js} +3 -3
  16. package/dist/web-ui/assets/board-DxmFo6ws.js +1 -0
  17. package/dist/web-ui/assets/createLucideIcon-Bil0PUgZ.js +1 -0
  18. package/dist/web-ui/assets/{external-link-C51-09OW.js → external-link-DcgSntwH.js} +1 -1
  19. package/dist/web-ui/assets/harness-BmJjUgLp.js +1 -0
  20. package/dist/web-ui/assets/index-BJpZUkR8.js +10 -0
  21. package/dist/web-ui/assets/issues-3eskwBZY.js +1 -0
  22. package/dist/web-ui/assets/{issues-YCoQHBtW.js → issues-Cy_qfrNn.js} +1 -1
  23. package/dist/web-ui/assets/{lazy-issue-panels-C8OnZML2.js → lazy-issue-panels-Bd-kqBwK.js} +3 -3
  24. package/dist/web-ui/assets/{rotate-cw-pZvvI6Ao.js → rotate-cw-C_GlCKHM.js} +1 -1
  25. package/dist/web-ui/assets/routes-CeuOo-QO.js +1 -0
  26. package/dist/web-ui/assets/{settings-B_VT_pPR.js → settings-DnpDLygw.js} +1 -1
  27. package/dist/web-ui/assets/{store-BXWXnGds.js → store-Dr4_yLwW.js} +2 -2
  28. package/dist/web-ui/assets/{tabs-Db1r1FTh.js → tabs-CRxsaB4E.js} +1 -1
  29. package/dist/web-ui/assets/task._taskId-C1IbFs2j.js +1 -0
  30. package/dist/web-ui/assets/terminal-Cqsy8MII.js +1 -0
  31. package/dist/web-ui/assets/terminal-DLTENDa9.js +1 -0
  32. package/dist/web-ui/assets/{toast-CfAxitbT.js → toast-CHhAlb5K.js} +1 -1
  33. package/dist/web-ui/index.html +7 -7
  34. package/dist/web-ui/pty-server.mjs +9 -0
  35. package/package.json +2 -1
  36. package/dist/web-ui/assets/board-rpuYw0Ze.js +0 -1
  37. package/dist/web-ui/assets/createLucideIcon-BoVlWivB.js +0 -1
  38. package/dist/web-ui/assets/index-BC9H3mAq.js +0 -10
  39. package/dist/web-ui/assets/issues-CvEDCZIa.js +0 -1
  40. package/dist/web-ui/assets/routes-BvOMdZDM.js +0 -1
  41. package/dist/web-ui/assets/task._taskId-DweEr9w7.js +0 -1
  42. package/dist/web-ui/assets/terminal-Ckm9XXat.js +0 -1
  43. package/dist/web-ui/assets/terminal-DV9S9xMa.js +0 -1
package/dist/cli/index.js CHANGED
@@ -1,87 +1,88 @@
1
1
  #!/usr/bin/env bun
2
2
  // @bun
3
- var DO=Object.defineProperty;var LO=(J)=>J;function FO(J,z){this[J]=LO.bind(null,z)}var q1=(J,z)=>{for(var Y in z)DO(J,Y,{get:z[Y],enumerable:!0,configurable:!0,set:FO.bind(z,Y)})};var C=(J,z)=>()=>(J&&(z=J(J=0)),z);var PQ=import.meta.require;import{basename as MO}from"path";function OO(J){let z="";for(let Y=0;Y<J.length;Y++){let Z=J[Y];if(Z==="*")if(J[Y+1]==="*")z+=".*",Y++;else z+="[^/]*";else if(Z==="?")z+="[^/]";else if(Z&&"\\^$.|+()[]{}".includes(Z))z+=`\\${Z}`;else z+=Z}return new RegExp(`^${z}$`)}function hQ(J,z){let Y;try{Y=OO(J)}catch{return!1}return Y.test(z)||Y.test(MO(z))}var $f=()=>{};var oW={};q1(oW,{resolvePersistedVendor:()=>PJ,prevVendorWithin:()=>af,nextVendorWithin:()=>AY,nextVendor:()=>AO,isBuiltinVendor:()=>jJ,coerceVendorId:()=>RY,BUILTIN_VENDORS:()=>tY,ALL_VENDORS:()=>a1});function jJ(J){return J==="claude"||J==="codex"||J==="copilot"}function AO(J){let z=a1.indexOf(J);return a1[(z+1)%a1.length]??a1[0]}function AY(J,z){if(J.length===0)return z;let Y=J.indexOf(z);return J[(Y+1)%J.length]??J[0]??z}function af(J,z){if(J.length===0)return z;let Y=J.indexOf(z);if(Y<0)return J[J.length-1]??z;return J[(Y-1+J.length)%J.length]??z}function RY(J){let z=J?.trim();return z&&z.length>0?z:"claude"}function PJ(J,z=[]){let Y=J?.trim();if(!Y)return"claude";if(jJ(Y))return Y;if(z.includes(Y))return Y;return"claude"}var tY,a1;var _1=C(()=>{tY=["claude","codex","copilot"],a1=[...tY]});var vQ;var sW=C(()=>{vQ={$schema:"https://json.schemastore.org/package.json",name:"@sma1lboy/kobe",version:"0.7.57",description:"TUI orchestrator for Claude Code (codename)",type:"module",packageManager:"bun@1.3.13",bin:{kobe:"dist/cli/index.js"},files:["dist/cli","dist/web-ui","dist/*.wav","README.md","LICENSE"],publishConfig:{access:"public"},repository:{type:"git",url:"git+https://github.com/Sma1lboy/kobe.git"},homepage:"https://github.com/Sma1lboy/kobe#readme",bugs:{url:"https://github.com/Sma1lboy/kobe/issues"},engines:{bun:">=1.3.11"},scripts:{dev:"env KOBE_DEV=1 bun --preload @opentui/solid/preload --conditions=browser ./src/cli/index.ts","dev:sandbox":"mkdir -p .dev-sandbox/home && env KOBE_DEV=1 KOBE_HOME_DIR=$PWD/.dev-sandbox/home KOBE_TMUX_SOCKET=kobe-sandbox bun --preload @opentui/solid/preload --conditions=browser ./src/cli/index.ts","dev:sandbox:reset":"env KOBE_TMUX_SOCKET=kobe-sandbox bun ./src/cli/index.ts kill-sessions","dev:version":"bash ../../scripts/dev-version.sh",build:"bun run scripts/build.ts","build:with-web":"bun run build",compile:"bun run scripts/compile.ts",typecheck:"tsc --noEmit","check-i18n":"bun run scripts/check-i18n.ts",test:"bun run test:fast && bun run test:socket","test:fast":"vitest run --passWithNoTests","test:socket":"KOBE_INCLUDE_SOCKET=1 vitest run test/daemon --pool forks --minWorkers=1 --maxWorkers=1 --passWithNoTests","test:behavior":"KOBE_INCLUDE_BEHAVIOR=1 vitest run test/behavior --passWithNoTests",bench:"vitest bench --run",lint:"biome check .",knip:"knip-bun",postinstall:"bun run scripts/check-preview-deps.ts || true",prepublishOnly:"bun run typecheck && bun run build"},"//":"biome.json + bunfig.toml live at the monorepo root since they apply repo-wide; bun.lock also lives at root (workspace-shared).",dependencies:{"@ansi-tools/parser":"^1.0.15","@opentui/core":"0.2.4","@opentui/solid":"0.2.4",ws:"^8.18.0","solid-js":"1.9.13","node-pty":"^1.1.0"},devDependencies:{"@biomejs/biome":"1.9.4","@sma1lboy/kobe-daemon":"0.7.11","@tsconfig/bun":"1.0.10","@types/bun":"1.3.14","@types/node":"25.6.2",knip:"^6.14.2","kobe-web":"workspace:*",typescript:"5.8.2",vitest:"2.1.9"},trustedDependencies:[]}});import{createHash as tW}from"crypto";import{homedir as gO}from"os";import{join as eY}from"path";function eW(){return process.env.KOBE_DEV==="1"}function rJ(){return process.env.KOBE_HOME_DIR??gO()}function XJ(){return eY(rJ(),".kobe")}function oJ(){return eY(rJ(),".config","kobe","state.json")}function NO(){return eY(XJ(),"settings")}function JV(){return eY(NO(),"keybindings.yaml")}function _f(){return eY(XJ(),"issue-assets")}function mQ(J,z,Y){let Z=tW("sha1").update(`${z}@${J}:${Y??22}`).digest("hex").slice(0,16);return eY(XJ(),"ssh",`${Z}.sock`)}function zV(J){let z=tW("sha1").update(J).digest("hex").slice(0,16);return eY(XJ(),"worktree-init",z)}var p1=()=>{};var ZV={};q1(ZV,{repoSlug:()=>JZ,releasePageUrl:()=>tf,recommendedGlobalInstallCommand:()=>of,isNewerSemver:()=>pf,fetchReleaseSummaries:()=>bO,fetchReleaseNotesRange:()=>sf,fetchReleaseNotes:()=>kO,compareSemver:()=>cQ,checkLatestVersion:()=>XX,UPDATE_SCRIPT_URL:()=>dQ,UPDATE_COMMAND:()=>oz,PACKAGE_NAME:()=>rf,CURRENT_VERSION:()=>J1});function JZ(){let J=vQ.repository?.url;if(!J)return null;let z=J.match(/github\.com[:/]([^/]+)\/([^/.]+)/);if(!z||!z[1]||!z[2])return null;return`${z[1]}/${z[2]}`}function of(){return`npm install -g ${rf}@latest`}async function CO(J){let z=new AbortController,Y=setTimeout(()=>z.abort(),nQ);try{let Z=J.replace("/","%2F"),G=await fetch(`https://registry.npmjs.org/${Z}/latest`,{signal:z.signal,headers:{accept:"application/json"}});if(!G.ok)return null;let X=await G.json();if(typeof X.version!=="string")return null;return X.version}catch{return null}finally{clearTimeout(Y)}}function pf(J,z){return cQ(J,z)>0}function cQ(J,z){let Y=(X)=>X.split("-")[0]??X,Z=Y(J).split(".").map((X)=>Number.parseInt(X,10)),G=Y(z).split(".").map((X)=>Number.parseInt(X,10));for(let X=0;X<3;X++){let Q=Z[X]??0,H=G[X]??0;if(Number.isNaN(Q)||Number.isNaN(H))return 0;if(Q>H)return 1;if(Q<H)return-1}return 0}async function XX(J={}){let z=process.env.KOBE_FAKE_UPDATE;if(z)return{current:J1,latest:z,hasUpdate:pf(z,J1)};if(eW()&&!J.force)return null;let Y=await CO(rf);if(!Y)return null;return{current:J1,latest:Y,hasUpdate:pf(Y,J1)}}function YV(J){if(typeof J!=="string")return null;return J.match(/^v(\d+\.\d+\.\d+)$/)?.[1]??null}async function kO(J){let z=JZ();if(!z)return null;let Y=`v${J}`,Z=new AbortController,G=setTimeout(()=>Z.abort(),nQ);try{let X=await fetch(`https://api.github.com/repos/${z}/releases/tags/${Y}`,{signal:Z.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!X.ok)return null;let Q=await X.json();if(typeof Q.body!=="string"||typeof Q.html_url!=="string")return null;return{body:Q.body,url:Q.html_url,version:J}}catch{return null}finally{clearTimeout(G)}}async function sf(J){let z=JZ();if(!z)return[];let Y=J.limit??100,Z=new AbortController,G=setTimeout(()=>Z.abort(),nQ);try{let X=await fetch(`https://api.github.com/repos/${z}/releases?per_page=${Y}`,{signal:Z.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!X.ok)return[];let Q=await X.json();if(!Array.isArray(Q))return[];return Q.map((H)=>{let f=YV(H.tag_name);if(!f||typeof H.html_url!=="string"||typeof H.body!=="string")return null;if(cQ(f,J.current)<=0)return null;if(cQ(f,J.latest)>0)return null;return{version:f,url:H.html_url,body:H.body}}).filter((H)=>H!==null)}catch{return[]}finally{clearTimeout(G)}}async function bO(J=12){let z=JZ();if(!z)return[];let Y=new AbortController,Z=setTimeout(()=>Y.abort(),nQ);try{let G=await fetch(`https://api.github.com/repos/${z}/releases?per_page=${J}`,{signal:Y.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!G.ok)return[];let X=await G.json();if(!Array.isArray(X))return[];return X.map((Q)=>{let H=YV(Q.tag_name);if(!H||typeof Q.html_url!=="string")return null;return{version:H,url:Q.html_url}}).filter((Q)=>Q!==null)}catch{return[]}finally{clearTimeout(Z)}}function tf(J){let z=JZ();if(!z)return null;return`https://github.com/${z}/releases/tag/v${J}`}var J1,rf,dQ="https://raw.githubusercontent.com/Sma1lboy/kobe/main/scripts/update.sh",oz,nQ=3000;var NJ=C(()=>{sW();p1();J1=vQ.version,rf=vQ.name;oz=`curl -fsSL ${dQ} | sh`});import{spawn as SO,spawnSync as IO}from"child_process";import{existsSync as XV}from"fs";import{mkdir as yO,readFile as TO,readdir as xO}from"fs/promises";function zZ(J){return`'${J.replace(/'/g,"'\\''")}'`}function uO(J){return/^[A-Za-z0-9_@%+=:,./-]+$/.test(J)?J:zZ(J)}function qV(J){return J.map(zZ).join(" ")}function EO(J,z){let Y=qV(J);return z?`cd ${zZ(z)} && ${Y}`:Y}function wO(J){if(!J)return"";let z=Object.entries(J).filter(([Y])=>/^[A-Za-z_][A-Za-z0-9_]*$/.test(Y));if(z.length===0)return"";return`${z.map(([Y,Z])=>`${Y}=${zZ(Z)}`).join(" ")} `}function QX(J,z={}){let Y=["ssh"];if(z.tty)Y.push("-tt");if(z.batch)Y.push("-o","BatchMode=yes");if(Y.push("-o","ControlMaster=auto","-o",`ControlPath=${J.controlPath}`,"-o","ControlPersist=300"),Y.push("-o","StrictHostKeyChecking=accept-new"),J.port)Y.push("-p",String(J.port));if(J.auth.kind==="key"&&J.auth.keyPath)Y.push("-i",J.auth.keyPath);return Y.push(`${J.user}@${J.host}`),Y}function HV(J,z={}){return new Promise((Y)=>{let[Z,...G]=J,X="",Q="",H=!1,f=(V)=>{if(H)return;H=!0,Y({stdout:X,stderr:Q,exitCode:V})},j;try{j=SO(Z??"",G,{cwd:z.cwd,env:z.env,shell:!1,signal:z.signal})}catch{f(-1);return}j.stdout?.setEncoding("utf8"),j.stdout?.on("data",(V)=>{X+=V}),j.stderr?.setEncoding("utf8"),j.stderr?.on("data",(V)=>{Q+=V}),j.on("error",()=>f(-1)),j.on("close",(V)=>f(V??-1))})}class iQ{isRemote=!1;run(J,z={}){return HV(J,{cwd:z.cwd,env:z.env?{...process.env,...z.env}:process.env,signal:z.signal})}async exists(J){return XV(J)}existsSync(J){return XV(J)}async mkdirp(J){await yO(J,{recursive:!0})}async readFile(J){try{return await TO(J,"utf8")}catch{return null}}async readdir(J){try{return await xO(J)}catch{return[]}}wrapCommand(J){return J}ensureReady(){}}class iZ{spec;spawn;isRemote=!0;masterUp=!1;spawnAsync;constructor(J,z=QV,Y){this.spec=J;this.spawn=z;this.spawnAsync=Y??(this.spawn===QV?PO:async(Z,G)=>this.spawn(Z,G))}ensureReady(){if(this.masterUp)return;if(this.spawn([...QX(this.spec,{batch:!0}),"-O","check"]).exitCode===0){this.masterUp=!0;return}let z=[...QX(this.spec,{batch:this.spec.auth.kind!=="password"}),"-fN"];if(this.spec.auth.kind==="password"){let Y=this.spec.auth.getPassword();if(Y!=null){this.spawn(["sshpass","-e",...z],{SSHPASS:Y}),this.masterUp=!0;return}}this.spawn(z),this.masterUp=!0}async run(J,z={}){this.ensureReady();let Y=`${wO(z.env)}${qV(J)}`,Z=z.cwd?`cd ${zZ(z.cwd)} && ${Y}`:Y;return this.spawnAsync([...QX(this.spec,{batch:!0}),Z],void 0,{signal:z.signal})}async exists(J){return(await this.run(["test","-e",J])).exitCode===0}existsSync(J){return this.ensureReady(),this.spawn([...QX(this.spec,{batch:!0}),EO(["test","-e",J])]).exitCode===0}async mkdirp(J){await this.run(["mkdir","-p",J])}async readFile(J){let z=await this.run(["cat",J]);return z.exitCode===0?z.stdout:null}async readdir(J){let z=await this.run(["ls","-1A",J]);if(z.exitCode!==0)return[];return z.stdout.split(`
4
- `).filter((Y)=>Y.length>0)}wrapCommand(J,z={}){let Y=z.cwd?`cd ${zZ(z.cwd)} && ${J}`:J;return`${QX(this.spec,{tty:z.tty}).map(uO).join(" ")} ${zZ(Y)}`}}var QV=(J,z)=>{let[Y,...Z]=J,G=IO(Y??"",Z,{env:z?{...process.env,...z}:process.env,encoding:"utf8",shell:!1});return{stdout:G.stdout??"",stderr:G.stderr??"",exitCode:G.status??-1}},PO=(J,z,Y)=>HV(J,{env:z?{...process.env,...z}:process.env,signal:Y?.signal});var ef=()=>{};import{spawnSync as hO}from"child_process";import{platform as vO}from"os";function fV(J,z,Y){return{service:mO,account:Y?`${z}@${J}:${Y}`:`${z}@${J}`}}function zj(J=Jj){return J.platform()==="darwin"}function jV(J,z,Y=Jj){if(Y.platform()!=="darwin")return!1;let{exitCode:Z}=Y.run(["security","add-generic-password","-U","-s",J.service,"-a",J.account,"-w",z]);return Z===0}function lQ(J,z=Jj){if(z.platform()!=="darwin")return null;let{stdout:Y,exitCode:Z}=z.run(["security","find-generic-password","-s",J.service,"-a",J.account,"-w"]);if(Z!==0)return null;return Y.replace(/\n$/,"")}var Jj,mO="kobe-remote-ssh";var Yj=C(()=>{Jj={run(J){let[z,...Y]=J,Z=hO(z??"",Y,{encoding:"utf8",shell:!1});return{stdout:Z.stdout??"",exitCode:Z.status??-1}},platform(){return vO()}}});import{mkdirSync as cO,readFileSync as dO,renameSync as nO,writeFileSync as iO}from"fs";import{dirname as lO}from"path";function LJ(){try{let J=dO(oJ(),"utf8"),z=JSON.parse(J);if(z&&typeof z==="object"&&!Array.isArray(z))return z}catch{}return{}}function BV(J){let z=oJ();cO(lO(z),{recursive:!0});let Y=`${z}.tmp`;iO(Y,JSON.stringify(J,null,2),"utf8"),nO(Y,z)}function lZ(J){let z=LJ();if(J(z)!==!1)BV(z);return z}function gY(J){return lZ((z)=>{for(let[Y,Z]of Object.entries(J))if(Z===void 0)delete z[Y];else z[Y]=Z;return})}function Bz(J,z){let Y=LJ()[J];return typeof Y==="boolean"?Y:z}function WV(J,z){gY({[J]:z})}function VV(J){BV(J)}var sz=C(()=>{p1()});var zY={};q1(zY,{statePath:()=>_O,setRepoInitOverride:()=>pO,setPersistedString:()=>e1,resolveRepoRoot:()=>tz,resolveMainRepoRoot:()=>aO,removeSavedRepo:()=>Qj,remoteRepoKey:()=>LV,normalizeSavedRepos:()=>Gj,isRemoteRepoKey:()=>r1,isRemoteProjectsEnabled:()=>qj,isGitRepo:()=>$O,getSavedRepos:()=>SJ,getRepoInitOverride:()=>Xj,getRemoteRepos:()=>Hj,getRemoteRepoConfig:()=>JY,getPersistedString:()=>S1,getCustomEngineIds:()=>hJ,addSavedRepo:()=>ez,addRemoteRepo:()=>fj});import{spawnSync as Zj}from"child_process";import{realpathSync as KV}from"fs";function tz(J){if(r1(J))return J;let z=Zj("git",["rev-parse","--show-toplevel"],{cwd:J,encoding:"utf8",shell:!1});if(z.status!==0)return J;let Y=(z.stdout??"").trim();if(!Y)return J;try{if(KV(J)===KV(Y))return J}catch{}return Y}function $O(J){if(r1(J))return!1;let z=Zj("git",["rev-parse","--is-inside-work-tree"],{cwd:J,encoding:"utf8",shell:!1});return z.status===0&&(z.stdout??"").trim()==="true"}function aO(J){if(r1(J))return J;let z=Zj("git",["worktree","list","--porcelain"],{cwd:J,encoding:"utf8",shell:!1});if(z.status!==0)return tz(J);return(z.stdout??"").split(/\r?\n/).find((Z)=>Z.startsWith("worktree "))?.slice(9).trim()||tz(J)}function _O(){return oJ()}function $Q(J){let z=J.savedRepos;if(!Array.isArray(z))return[];return z.filter((Y)=>typeof Y==="string")}function SJ(){return $Q(LJ())}function S1(J){let z=LJ()[J];return typeof z==="string"?z:void 0}function e1(J,z){gY({[J]:z})}function hJ(){let J=LJ().customEngineIds;if(!Array.isArray(J))return[];return J.filter((z)=>typeof z==="string"&&z.trim().length>0)}function ez(J){let z=tz(J),Y={added:!1,path:z,total:0};return lZ((Z)=>{let G=$Q(Z);if(G.includes(z))return Y={added:!1,path:z,total:G.length},!1;Z.savedRepos=[...G,z],Y={added:!0,path:z,total:G.length+1};return}),Y}function Gj(){let J=SJ(),z=new Set,Y=[],Z=!1;for(let G of J){let X=tz(G);if(X!==G)Z=!0;if(z.has(X)){Z=!0;continue}z.add(X),Y.push(X)}if(!Z)return;gY({savedRepos:Y})}function UV(J){let z=J.repoConfigs;if(!z||typeof z!=="object"||Array.isArray(z))return{};return z}function DV(J){if(!J||typeof J!=="object")return{};let z=J;return{initScript:typeof z.initScript==="string"&&z.initScript.length>0?z.initScript:void 0,initPrompt:typeof z.initPrompt==="string"&&z.initPrompt.length>0?z.initPrompt:void 0}}function Xj(J){return DV(UV(LJ())[tz(J)])}function pO(J,z){let Y=tz(J),Z={};return lZ((G)=>{let X={...UV(G)},Q=DV(X[Y]),H=z.initScript===void 0?Q.initScript:z.initScript||void 0,f=z.initPrompt===void 0?Q.initPrompt:z.initPrompt||void 0;if(Z={...H?{initScript:H}:{},...f?{initPrompt:f}:{}},!Z.initScript&&!Z.initPrompt){let{[Y]:j,...V}=X;G.repoConfigs=V}else X[Y]=Z,G.repoConfigs=X;return}),Z}function Qj(J){let z={removed:!1,path:J,total:0};return lZ((Y)=>{let Z=$Q(Y);if(!Z.includes(J))return z={removed:!1,path:J,total:Z.length},!1;if(Y.savedRepos=Z.filter((G)=>G!==J),r1(J)){let G=aQ(Y);if(J in G){let X={...G};delete X[J],Y.remoteRepos=X}}z={removed:!0,path:J,total:Z.length-1};return}),z}function r1(J){return J.startsWith("ssh://")}function qj(){return Bz("experimental.remoteProjects",!1)}function LV(J,z,Y){return Y?`ssh://${z}@${J}:${Y}`:`ssh://${z}@${J}`}function aQ(J){let z=J.remoteRepos;if(!z||typeof z!=="object"||Array.isArray(z))return{};return z}function JY(J){return aQ(LJ())[J]??null}function Hj(){return aQ(LJ())}function fj(J){let z=LV(J.host,J.user,J.port),Y=!1;return lZ((Z)=>{let G={...aQ(Z)};G[z]=J,Z.remoteRepos=G;let X=$Q(Z);if(Y=!X.includes(z),Y)Z.savedRepos=[...X,z];return}),{key:z,added:Y}}var C1=C(()=>{p1();sz()});var OV={};q1(OV,{runAddRemote:()=>sO,parseRemoteFlags:()=>MV});import{createInterface as rO}from"readline";function MV(J){let z={};for(let Y=0;Y<J.length;Y++){let Z=J[Y];switch(Z){case"--host":z.host=J[++Y];break;case"--user":z.user=J[++Y];break;case"--path":z.path=J[++Y];break;case"--port":{let G=Number(J[++Y]);if(!Number.isInteger(G)||G<=0)Wz(`invalid --port "${J[Y]}"`);z.port=G;break}case"--key":{let G=J[Y+1];if(G&&!G.startsWith("-"))z.key={present:!0,path:G},Y++;else z.key={present:!0};break}case"--password":z.password=!0;break;case"--help":case"-h":process.stdout.write(FV),process.exit(0);break;default:Wz(`unknown flag "${Z}"`)}}return z}function Wz(J){process.stderr.write(`kobe add --remote: ${J}
3
+ var lO=Object.defineProperty;var $O=(J)=>J;function aO(J,z){this[J]=$O.bind(null,z)}var H1=(J,z)=>{for(var Z in z)lO(J,Z,{get:z[Z],enumerable:!0,configurable:!0,set:aO.bind(z,Z)})};var C=(J,z)=>()=>(J&&(z=J(J=0)),z);var PQ=import.meta.require;import{basename as _O}from"path";function pO(J){let z="";for(let Z=0;Z<J.length;Z++){let Y=J[Z];if(Y==="*")if(J[Z+1]==="*")z+=".*",Z++;else z+="[^/]*";else if(Y==="?")z+="[^/]";else if(Y&&"\\^$.|+()[]{}".includes(Y))z+=`\\${Y}`;else z+=Y}return new RegExp(`^${z}$`)}function hQ(J,z){let Z;try{Z=pO(J)}catch{return!1}return Z.test(z)||Z.test(_O(z))}var ej=()=>{};var fV={};H1(fV,{resolvePersistedVendor:()=>cJ,prevVendorWithin:()=>J9,nextVendorWithin:()=>gZ,nextVendor:()=>rO,isBuiltinVendor:()=>UJ,coerceVendorId:()=>NZ,BUILTIN_VENDORS:()=>zY,ALL_VENDORS:()=>o1});function UJ(J){return J==="claude"||J==="codex"||J==="copilot"}function rO(J){let z=o1.indexOf(J);return o1[(z+1)%o1.length]??o1[0]}function gZ(J,z){if(J.length===0)return z;let Z=J.indexOf(z);return J[(Z+1)%J.length]??J[0]??z}function J9(J,z){if(J.length===0)return z;let Z=J.indexOf(z);if(Z<0)return J[J.length-1]??z;return J[(Z-1+J.length)%J.length]??z}function NZ(J){let z=J?.trim();return z&&z.length>0?z:"claude"}function cJ(J,z=[]){let Z=J?.trim();if(!Z)return"claude";if(UJ(Z))return Z;if(z.includes(Z))return Z;return"claude"}var zY,o1;var s1=C(()=>{zY=["claude","codex","copilot"],o1=[...zY]});var vQ;var WV=C(()=>{vQ={$schema:"https://json.schemastore.org/package.json",name:"@sma1lboy/kobe",version:"0.7.59",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:mock":"env KOBE_DEV=1 bun --preload @opentui/solid/preload --conditions=browser ./src/tui/mock/host.tsx","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 VV}from"crypto";import{homedir as sO}from"os";import{join as CZ}from"path";function UV(){return process.env.KOBE_DEV==="1"}function sJ(){return process.env.KOBE_HOME_DIR??sO()}function KJ(){return CZ(sJ(),".kobe")}function tJ(){return CZ(sJ(),".config","kobe","state.json")}function tO(){return CZ(KJ(),"settings")}function KV(){return CZ(tO(),"keybindings.yaml")}function z9(){return CZ(KJ(),"issue-assets")}function DV(){return CZ(KJ(),"attachments")}function mQ(J,z,Z){let Y=VV("sha1").update(`${z}@${J}:${Z??22}`).digest("hex").slice(0,16);return CZ(KJ(),"ssh",`${Y}.sock`)}function LV(J){let z=VV("sha1").update(J).digest("hex").slice(0,16);return CZ(KJ(),"worktree-init",z)}var t1=()=>{};var FV={};H1(FV,{repoSlug:()=>ZY,releasePageUrl:()=>Q9,recommendedGlobalInstallCommand:()=>X9,isNewerSemver:()=>Z9,fetchReleaseSummaries:()=>zA,fetchReleaseNotesRange:()=>G9,fetchReleaseNotes:()=>JA,compareSemver:()=>cQ,checkLatestVersion:()=>HG,UPDATE_SCRIPT_URL:()=>dQ,UPDATE_COMMAND:()=>sz,PACKAGE_NAME:()=>Y9,CURRENT_VERSION:()=>J1});function ZY(){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 X9(){return`npm install -g ${Y9}@latest`}async function eO(J){let z=new AbortController,Z=setTimeout(()=>z.abort(),nQ);try{let Y=J.replace("/","%2F"),X=await fetch(`https://registry.npmjs.org/${Y}/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(Z)}}function Z9(J,z){return cQ(J,z)>0}function cQ(J,z){let Z=(G)=>G.split("-")[0]??G,Y=Z(J).split(".").map((G)=>Number.parseInt(G,10)),X=Z(z).split(".").map((G)=>Number.parseInt(G,10));for(let G=0;G<3;G++){let q=Y[G]??0,H=X[G]??0;if(Number.isNaN(q)||Number.isNaN(H))return 0;if(q>H)return 1;if(q<H)return-1}return 0}async function HG(J={}){let z=process.env.KOBE_FAKE_UPDATE;if(z)return{current:J1,latest:z,hasUpdate:Z9(z,J1)};if(UV()&&!J.force)return null;let Z=await eO(Y9);if(!Z)return null;return{current:J1,latest:Z,hasUpdate:Z9(Z,J1)}}function MV(J){if(typeof J!=="string")return null;return J.match(/^v(\d+\.\d+\.\d+)$/)?.[1]??null}async function JA(J){let z=ZY();if(!z)return null;let Z=`v${J}`,Y=new AbortController,X=setTimeout(()=>Y.abort(),nQ);try{let G=await fetch(`https://api.github.com/repos/${z}/releases/tags/${Z}`,{signal:Y.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 G9(J){let z=ZY();if(!z)return[];let Z=J.limit??100,Y=new AbortController,X=setTimeout(()=>Y.abort(),nQ);try{let G=await fetch(`https://api.github.com/repos/${z}/releases?per_page=${Z}`,{signal:Y.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((H)=>{let j=MV(H.tag_name);if(!j||typeof H.html_url!=="string"||typeof H.body!=="string")return null;if(cQ(j,J.current)<=0)return null;if(cQ(j,J.latest)>0)return null;return{version:j,url:H.html_url,body:H.body}}).filter((H)=>H!==null)}catch{return[]}finally{clearTimeout(X)}}async function zA(J=12){let z=ZY();if(!z)return[];let Z=new AbortController,Y=setTimeout(()=>Z.abort(),nQ);try{let X=await fetch(`https://api.github.com/repos/${z}/releases?per_page=${J}`,{signal:Z.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 H=MV(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(Y)}}function Q9(J){let z=ZY();if(!z)return null;return`https://github.com/${z}/releases/tag/v${J}`}var J1,Y9,dQ="https://raw.githubusercontent.com/Sma1lboy/kobe/main/scripts/update.sh",sz,nQ=3000;var bJ=C(()=>{WV();t1();J1=vQ.version,Y9=vQ.name;sz=`curl -fsSL ${dQ} | sh`});function iY(J,z={}){if(z.bareSafe&&ZA.test(J))return J;return`'${J.replace(/'/g,"'\\''")}'`}function lY(J,z={}){return J.map((Z)=>iY(Z,z)).join(" ")}var ZA;var iQ=C(()=>{ZA=/^[A-Za-z0-9_/.:=-]+$/});import{spawn as YA,spawnSync as XA}from"child_process";import{existsSync as GA}from"fs";import{mkdir as QA,readFile as qA,readdir as HA}from"fs/promises";function BA(J){return/^[A-Za-z0-9_@%+=:,./-]+$/.test(J)?J:iY(J)}function fA(J){if(!J)return"";let z=Object.entries(J).filter(([Z])=>/^[A-Za-z_][A-Za-z0-9_]*$/.test(Z));if(z.length===0)return"";return`${z.map(([Z,Y])=>`${Z}=${$Q(Y)}`).join(" ")} `}function lQ(J,z={}){let Z=["ssh"];if(z.tty)Z.push("-tt");if(z.batch)Z.push("-o","BatchMode=yes");if(Z.push("-o","ControlMaster=auto","-o",`ControlPath=${J.controlPath}`,"-o","ControlPersist=300"),Z.push("-o","StrictHostKeyChecking=accept-new"),J.port)Z.push("-p",String(J.port));if(J.auth.kind==="key"&&J.auth.keyPath)Z.push("-i",J.auth.keyPath);return Z.push(`${J.user}@${J.host}`),Z}function RV(J,z={}){return new Promise((Z)=>{let[Y,...X]=J,G="",q="",H=!1,j=(V)=>{if(H)return;H=!0,Z({stdout:G,stderr:q,exitCode:V})},B;try{B=YA(Y??"",X,{cwd:z.cwd,env:z.env,shell:!1,signal:z.signal})}catch{j(-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",()=>j(-1)),B.on("close",(V)=>j(V??-1))})}class aQ{isRemote=!1;run(J,z={}){return RV(J,{cwd:z.cwd,env:z.env?{...process.env,...z.env}:process.env,signal:z.signal})}async exists(J){return GA(J)}async mkdirp(J){await QA(J,{recursive:!0})}async readFile(J){try{return await qA(J,"utf8")}catch{return null}}async readdir(J){try{return await HA(J)}catch{return[]}}wrapCommand(J){return J}ensureReady(){}}class $Y{spec;spawn;isRemote=!0;masterUp=!1;spawnAsync;constructor(J,z=AV,Z){this.spec=J;this.spawn=z;this.spawnAsync=Z??(this.spawn===AV?WA:async(Y,X)=>this.spawn(Y,X))}ensureReady(){if(this.masterUp)return;if(this.spawn([...lQ(this.spec,{batch:!0}),"-O","check"]).exitCode===0){this.masterUp=!0;return}let z=[...lQ(this.spec,{batch:this.spec.auth.kind!=="password"}),"-fN"];if(this.spec.auth.kind==="password"){let Z=this.spec.auth.getPassword();if(Z!=null){this.spawn(["sshpass","-e",...z],{SSHPASS:Z}),this.masterUp=!0;return}}this.spawn(z),this.masterUp=!0}async run(J,z={}){this.ensureReady();let Z=`${fA(z.env)}${jA(J)}`,Y=z.cwd?`cd ${$Q(z.cwd)} && ${Z}`:Z;return this.spawnAsync([...lQ(this.spec,{batch:!0}),Y],void 0,{signal:z.signal})}async exists(J){return(await this.run(["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((Z)=>Z.length>0)}wrapCommand(J,z={}){let Z=z.cwd?`cd ${$Q(z.cwd)} && ${J}`:J;return`${lQ(this.spec,{tty:z.tty}).map(BA).join(" ")} ${$Q(Z)}`}}var $Q,jA,AV=(J,z)=>{let[Z,...Y]=J,X=XA(Z??"",Y,{env:z?{...process.env,...z}:process.env,encoding:"utf8",shell:!1});return{stdout:X.stdout??"",stderr:X.stderr??"",exitCode:X.status??-1}},WA=(J,z,Z)=>RV(J,{env:z?{...process.env,...z}:process.env,signal:Z?.signal});var q9=C(()=>{iQ();$Q=iY,jA=lY});import{spawnSync as VA}from"child_process";import{platform as UA}from"os";function gV(J,z,Z){return{service:KA,account:Z?`${z}@${J}:${Z}`:`${z}@${J}`}}function j9(J=H9){return J.platform()==="darwin"}function NV(J,z,Z=H9){if(Z.platform()!=="darwin")return!1;let{exitCode:Y}=Z.run(["security","add-generic-password","-U","-s",J.service,"-a",J.account,"-w",z]);return Y===0}function _Q(J,z=H9){if(z.platform()!=="darwin")return null;let{stdout:Z,exitCode:Y}=z.run(["security","find-generic-password","-s",J.service,"-a",J.account,"-w"]);if(Y!==0)return null;return Z.replace(/\n$/,"")}var H9,KA="kobe-remote-ssh";var B9=C(()=>{H9={run(J){let[z,...Z]=J,Y=VA(z??"",Z,{encoding:"utf8",shell:!1});return{stdout:Y.stdout??"",exitCode:Y.status??-1}},platform(){return UA()}}});import{mkdirSync as DA,readFileSync as LA,renameSync as MA,writeFileSync as FA}from"fs";import{dirname as OA}from"path";function OJ(){try{let J=LA(tJ(),"utf8"),z=JSON.parse(J);if(z&&typeof z==="object"&&!Array.isArray(z))return z}catch{}return{}}function CV(J){let z=tJ();DA(OA(z),{recursive:!0});let Z=`${z}.tmp`;FA(Z,JSON.stringify(J,null,2),"utf8"),MA(Z,z)}function aY(J){let z=OJ();if(J(z)!==!1)CV(z);return z}function bZ(J){return aY((z)=>{for(let[Z,Y]of Object.entries(J))if(Y===void 0)delete z[Z];else z[Z]=Y;return})}function dJ(J,z){let Z=OJ()[J];return typeof Z==="boolean"?Z:z}function pQ(J,z){bZ({[J]:z})}function bV(J){CV(J)}var Ez=C(()=>{t1()});var zZ={};H1(zZ,{statePath:()=>gA,setRepoInitOverride:()=>NA,setPersistedString:()=>GJ,resolveRepoRoot:()=>tz,resolveMainRepoRoot:()=>RA,removeSavedRepo:()=>U9,remoteRepoKey:()=>yV,normalizeSavedRepos:()=>W9,isRemoteRepoKey:()=>e1,isRemoteProjectsEnabled:()=>K9,isGitRepo:()=>AA,getSavedRepos:()=>SJ,getRepoInitOverride:()=>V9,getRemoteRepos:()=>D9,getRemoteRepoConfig:()=>JZ,getPersistedString:()=>x1,getCustomEngineIds:()=>nJ,addSavedRepo:()=>ez,addRemoteRepo:()=>L9});import{spawnSync as f9}from"child_process";import{realpathSync as kV}from"fs";function tz(J){if(e1(J))return J;let z=f9("git",["rev-parse","--show-toplevel"],{cwd:J,encoding:"utf8",shell:!1});if(z.status!==0)return J;let Z=(z.stdout??"").trim();if(!Z)return J;try{if(kV(J)===kV(Z))return J}catch{}return Z}function AA(J){if(e1(J))return!1;let z=f9("git",["rev-parse","--is-inside-work-tree"],{cwd:J,encoding:"utf8",shell:!1});return z.status===0&&(z.stdout??"").trim()==="true"}function RA(J){if(e1(J))return J;let z=f9("git",["worktree","list","--porcelain"],{cwd:J,encoding:"utf8",shell:!1});if(z.status!==0)return tz(J);return(z.stdout??"").split(/\r?\n/).find((Y)=>Y.startsWith("worktree "))?.slice(9).trim()||tz(J)}function gA(){return tJ()}function rQ(J){let z=J.savedRepos;if(!Array.isArray(z))return[];return z.filter((Z)=>typeof Z==="string")}function SJ(){return rQ(OJ())}function x1(J){let z=OJ()[J];return typeof z==="string"?z:void 0}function GJ(J,z){bZ({[J]:z})}function nJ(){let J=OJ().customEngineIds;if(!Array.isArray(J))return[];return J.filter((z)=>typeof z==="string"&&z.trim().length>0)}function ez(J){let z=tz(J),Z={added:!1,path:z,total:0};return aY((Y)=>{let X=rQ(Y);if(X.includes(z))return Z={added:!1,path:z,total:X.length},!1;Y.savedRepos=[...X,z],Z={added:!0,path:z,total:X.length+1};return}),Z}function W9(){let J=SJ(),z=new Set,Z=[],Y=!1;for(let X of J){let G=tz(X);if(G!==X)Y=!0;if(z.has(G)){Y=!0;continue}z.add(G),Z.push(G)}if(!Y)return;bZ({savedRepos:Z})}function IV(J){let z=J.repoConfigs;if(!z||typeof z!=="object"||Array.isArray(z))return{};return z}function SV(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 V9(J){return SV(IV(OJ())[tz(J)])}function NA(J,z){let Z=tz(J),Y={};return aY((X)=>{let G={...IV(X)},q=SV(G[Z]),H=z.initScript===void 0?q.initScript:z.initScript||void 0,j=z.initPrompt===void 0?q.initPrompt:z.initPrompt||void 0;if(Y={...H?{initScript:H}:{},...j?{initPrompt:j}:{}},!Y.initScript&&!Y.initPrompt){let{[Z]:B,...V}=G;X.repoConfigs=V}else G[Z]=Y,X.repoConfigs=G;return}),Y}function U9(J){let z={removed:!1,path:J,total:0};return aY((Z)=>{let Y=rQ(Z);if(!Y.includes(J))return z={removed:!1,path:J,total:Y.length},!1;if(Z.savedRepos=Y.filter((X)=>X!==J),e1(J)){let X=oQ(Z);if(J in X){let G={...X};delete G[J],Z.remoteRepos=G}}z={removed:!0,path:J,total:Y.length-1};return}),z}function e1(J){return J.startsWith("ssh://")}function K9(){return dJ("experimental.remoteProjects",!1)}function yV(J,z,Z){return Z?`ssh://${z}@${J}:${Z}`:`ssh://${z}@${J}`}function oQ(J){let z=J.remoteRepos;if(!z||typeof z!=="object"||Array.isArray(z))return{};return z}function JZ(J){return oQ(OJ())[J]??null}function D9(){return oQ(OJ())}function L9(J){let z=yV(J.host,J.user,J.port),Z=!1;return aY((Y)=>{let X={...oQ(Y)};X[z]=J,Y.remoteRepos=X;let G=rQ(Y);if(Z=!G.includes(z),Z)Y.savedRepos=[...G,z];return}),{key:z,added:Z}}var S1=C(()=>{t1();Ez()});var uV={};H1(uV,{runAddRemote:()=>kA,parseRemoteFlags:()=>xV});import{createInterface as CA}from"readline";function xV(J){let z={};for(let Z=0;Z<J.length;Z++){let Y=J[Z];switch(Y){case"--host":z.host=J[++Z];break;case"--user":z.user=J[++Z];break;case"--path":z.path=J[++Z];break;case"--port":{let X=Number(J[++Z]);if(!Number.isInteger(X)||X<=0)Vz(`invalid --port "${J[Z]}"`);z.port=X;break}case"--key":{let X=J[Z+1];if(X&&!X.startsWith("-"))z.key={present:!0,path:X},Z++;else z.key={present:!0};break}case"--password":z.password=!0;break;case"--help":case"-h":process.stdout.write(TV),process.exit(0);break;default:Vz(`unknown flag "${Y}"`)}}return z}function Vz(J){process.stderr.write(`kobe add --remote: ${J}
5
5
 
6
- ${FV}`),process.exit(2)}async function oO(J){let z=rO({input:process.stdin,output:process.stdout,terminal:!0}),Y=process.stdout,Z=!1,G=Y._writeToOutput?.bind(Y);return Y._writeToOutput=(X)=>{if(!Z||!G)process.stdout.write(X)},process.stdout.write(J),Z=!0,new Promise((X)=>{z.question("",(Q)=>{if(Z=!1,G)Y._writeToOutput=G;process.stdout.write(`
7
- `),z.close(),X(Q)})})}async function sO(J){if(!qj())Wz("remote projects are experimental and disabled \u2014 enable Settings \u2192 Dev \u2192 Experimental \u2192 Remote projects first");let z=MV(J);if(!z.host)Wz("--host is required");if(!z.user)Wz("--user is required");if(!z.path)Wz("--path (remote base path) is required");if(z.key&&z.password)Wz("choose ONE of --key or --password, not both");if(!z.key&&!z.password)Wz("an auth method is required: --key [path] or --password");let Y;if(z.password){if(!zj())Wz("--password needs the macOS keychain (unsupported on this platform)");let X=fV(z.host,z.user,z.port),Q=await oO(`Password for ${z.user}@${z.host}: `);if(Q.length===0)Wz("empty password");if(!jV(X,Q))Wz("failed to store the password in the keychain");Y={kind:"password",keychainRef:X}}else Y={kind:"key",keyPath:z.key?.path};let{key:Z,added:G}=fj({host:z.host,user:z.user,port:z.port,basePath:z.path,auth:Y});console.log(G?`added remote project ${Z} (base ${z.path})`:`updated remote project ${Z} (base ${z.path})`),await tO(z,Y)}async function tO(J,z){if(z.kind==="password"&&!zj())return;let Y=z.kind==="key"?{kind:"key",keyPath:z.keyPath}:{kind:"password",getPassword:()=>lQ(z.keychainRef)},Z={host:J.host,user:J.user,port:J.port,auth:Y,controlPath:mQ(J.host,J.user,J.port)};process.stdout.write("checking connection\u2026 ");try{if((await new iZ(Z).run(["test","-d",J.path])).exitCode===0)console.log("ok");else console.log(`reachable, but base path "${J.path}" is not a directory (you can create it later)`)}catch(G){console.log(`could not connect (${G instanceof Error?G.message:String(G)})`),console.log("the project is saved; fix the host/credentials and it will connect on first use.")}}var FV;var AV=C(()=>{p1();ef();Yj();C1();FV=`Usage: kobe add --remote --host <host> --user <user> --path <basePath>
6
+ ${TV}`),process.exit(2)}async function bA(J){let z=CA({input:process.stdin,output:process.stdout,terminal:!0}),Z=process.stdout,Y=!1,X=Z._writeToOutput?.bind(Z);return Z._writeToOutput=(G)=>{if(!Y||!X)process.stdout.write(G)},process.stdout.write(J),Y=!0,new Promise((G)=>{z.question("",(q)=>{if(Y=!1,X)Z._writeToOutput=X;process.stdout.write(`
7
+ `),z.close(),G(q)})})}async function kA(J){if(!K9())Vz("remote projects are experimental and disabled \u2014 enable Settings \u2192 Dev \u2192 Experimental \u2192 Remote projects first");let z=xV(J);if(!z.host)Vz("--host is required");if(!z.user)Vz("--user is required");if(!z.path)Vz("--path (remote base path) is required");if(z.key&&z.password)Vz("choose ONE of --key or --password, not both");if(!z.key&&!z.password)Vz("an auth method is required: --key [path] or --password");let Z;if(z.password){if(!j9())Vz("--password needs the macOS keychain (unsupported on this platform)");let G=gV(z.host,z.user,z.port),q=await bA(`Password for ${z.user}@${z.host}: `);if(q.length===0)Vz("empty password");if(!NV(G,q))Vz("failed to store the password in the keychain");Z={kind:"password",keychainRef:G}}else Z={kind:"key",keyPath:z.key?.path};let{key:Y,added:X}=L9({host:z.host,user:z.user,port:z.port,basePath:z.path,auth:Z});console.log(X?`added remote project ${Y} (base ${z.path})`:`updated remote project ${Y} (base ${z.path})`),await IA(z,Z)}async function IA(J,z){if(z.kind==="password"&&!j9())return;let Z=z.kind==="key"?{kind:"key",keyPath:z.keyPath}:{kind:"password",getPassword:()=>_Q(z.keychainRef)},Y={host:J.host,user:J.user,port:J.port,auth:Z,controlPath:mQ(J.host,J.user,J.port)};process.stdout.write("checking connection\u2026 ");try{if((await new $Y(Y).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 TV;var EV=C(()=>{t1();q9();B9();S1();TV=`Usage: kobe add --remote --host <host> --user <user> --path <basePath>
8
8
  [--port N] [--key [path] | --password]
9
9
 
10
10
  Register an SSH-backed project. Worktrees + the engine run on <host> under
11
11
  <basePath>. Choose ONE auth: --key [path] (ssh-agent when path omitted) or
12
12
  `+`--password (prompted, stored in the OS keychain \u2014 never in state.json).
13
- `});function _Q(J){return J.remoteVersion>=J.localMin&&J.localVersion>=J.remoteMin}function RV(J,z){if(!J)return!1;return J!==z}function JA(J){return typeof J==="string"&&eO.has(J)}function gV(J){if(!Array.isArray(J))return null;let z=new Set;for(let Y of J)if(JA(Y))z.add(Y);return z.size>0?z:null}function Vz(J){return{id:J.id,title:J.title,repo:J.repo,branch:J.branch,worktreePath:J.worktreePath,kind:J.kind??"task",status:J.status,archived:J.archived,pinned:J.pinned??!1,vendor:J.vendor,prStatus:J.prStatus,position:J.position,modelEffort:J.modelEffort,createdAt:J.createdAt,updatedAt:J.updatedAt}}function qX(J){return`${JSON.stringify(J)}
14
- `}var sJ=3,NY=2,jj,eO;var YZ=C(()=>{jj=["task.snapshot","issue.snapshot","active-task","update","engine-state","ui-prefs","keybindings","task.jobs","worktree.changes","transcript.activity","session.deliver"],eO=new Set(jj)});import{createHash as zA}from"crypto";import{homedir as pQ,tmpdir as YA}from"os";import{join as ZZ}from"path";function ZA(J){return zA("sha1").update(J).digest("hex").slice(0,8)}function Wj(J,z,Y,Z){if(Buffer.byteLength(J,"utf8")<=Bj)return J;let G=ZA(z),X=Z===void 0?"":`-${Z}`,Q=ZZ(YA(),`kobe-${G}-${Y}${X}.sock`);if(Buffer.byteLength(Q,"utf8")<=Bj)return Q;throw Error(`kobe socket path exceeds ${Bj} bytes even after fallback: ${Q}`)}function Ez(J){let z=process.env.KOBE_DAEMON_SOCKET_PATH;if(z&&z.length>0)return z;let Y=J??process.env.KOBE_HOME_DIR;if(Y&&Y.length>0)return Wj(ZZ(Y,".kobe","daemon.sock"),Y,"daemon");let Z=process.env.XDG_RUNTIME_DIR;if(Z&&Z.length>0)return Wj(ZZ(Z,"kobe.sock"),Z,"daemon");let G=pQ();return Wj(ZZ(G,".kobe","daemon.sock"),G,"daemon")}function YY(J=process.env.KOBE_HOME_DIR??pQ()){let z=process.env.KOBE_DAEMON_PID_PATH;if(z&&z.length>0)return z;return ZZ(J,".kobe","daemon.pid")}function rQ(J=process.env.KOBE_HOME_DIR??pQ()){return ZZ(J,".kobe","daemon.log")}function NV(J=process.env.KOBE_HOME_DIR??pQ()){return ZZ(J,".kobe","client.log")}var Bj=100;var $Z=()=>{};import{appendFile as CV,mkdir as GA}from"fs/promises";import{dirname as XA}from"path";function oQ(J){SV=J}function QA(J){if(J instanceof Error)return{message:J.message,stack:J.stack};let z;try{z=typeof J==="string"?J:JSON.stringify(J)}catch{z=String(J)}return{message:z}}function IV(J,z,Y=new Date){return`[${Y.toISOString()}] client ${SV} [${J}] pid=${process.pid}: ${z}
15
- `}function qA(){if(kV)return;kV=!0;try{process.stderr.write(`[kobe] client log write failed; continuing without it
16
- `)}catch{}}function yV(J){let z=NV();bV=bV.then(async()=>{try{await CV(z,J)}catch(Y){if(Y?.code==="ENOENT")await GA(XA(z),{recursive:!0}),await CV(z,J);else throw Y}}).catch(()=>qA())}function ZY(J,z){yV(IV(J,z))}function JJ(J,z){let Y=QA(z);yV(IV(J,Y.stack??Y.message))}function TV(){if(Vj||Kj)return;Vj=(J)=>JJ("crash-net",J),Kj=(J)=>JJ("crash-net",J),process.on("unhandledRejection",Vj),process.on("uncaughtException",Kj)}var SV="client",kV=!1,bV,Vj,Kj;var GZ=C(()=>{$Z();bV=Promise.resolve()});import{connect as HA}from"net";import{StringDecoder as fA}from"string_decoder";class tJ{socketPath;socket=null;buffer="";nextId=1;pending=new Map;handlers=new Map;lifecycleHandlers=new Map;connecting=null;disposed=!1;constructor(J){this.socketPath=J}connect(){if(this.socket)return Promise.resolve();if(this.disposed)return Promise.reject(Error("daemon client disposed"));if(this.connecting)return this.connecting;let J=this.openSocket();this.connecting=J;let z=()=>{if(this.connecting===J)this.connecting=null};return J.then(z,z),J}get isDisposed(){return this.disposed}close(){this.disposed=!0,this.socket?.end(),this.socket=null,this.failPending()}forceDisconnect(){let J=this.socket;if(!J)return;this.socket=null,J.destroy(),this.failPending()}failPending(){if(this.pending.size===0)return;let J=Error("daemon connection closed");for(let z of this.pending.values())z.reject(J);this.pending.clear()}on(J,z){let Y=this.handlers.get(J);if(!Y)Y=new Set,this.handlers.set(J,Y);return Y.add(z),()=>{if(Y?.delete(z),Y?.size===0)this.handlers.delete(J)}}onChannel(J,z){return this.on(J,(Y)=>z(Y.payload))}subscribe(J={}){let z={};if(J.channels)z.channels=J.channels;if(J.role)z.role=J.role;return this.request("subscribe",z)}onLifecycle(J,z){let Y=this.lifecycleHandlers.get(J);if(!Y)Y=new Set,this.lifecycleHandlers.set(J,Y);return Y.add(z),()=>{if(Y?.delete(z),Y?.size===0)this.lifecycleHandlers.delete(J)}}async request(J,z){await this.connect();let Y=this.socket;if(!Y)throw Error("daemon connection is not open");let Z=String(this.nextId++),G=new Promise((X,Q)=>{this.pending.set(Z,{resolve:(H)=>X(H),reject:Q})});return Y.write(qX({type:"request",id:Z,name:J,payload:z})),G}openSocket(){return new Promise((J,z)=>{let Y=HA(this.socketPath);this.socket=Y;let Z=()=>{Y.off("error",G),J()},G=(Q)=>{if(Y.off("connect",Z),this.socket===Y)this.socket=null;z(Q)};Y.once("connect",Z),Y.once("error",G);let X=new fA("utf8");this.buffer="",Y.on("data",(Q)=>this.onData(X.write(Q))),Y.on("close",()=>this.onSocketClose(Y))})}onSocketClose(J){if(this.socket!==J)return;this.socket=null,this.failPending(),this.emitLifecycle("close")}emitLifecycle(J){for(let z of this.lifecycleHandlers.get(J)??[])try{z()}catch(Y){console.error(`[kobe] lifecycle handler for "${J}" threw:`,Y)}}onData(J){this.buffer+=J;let z=this.buffer.indexOf(`
17
- `);while(z!==-1){let Y=this.buffer.slice(0,z);if(this.buffer=this.buffer.slice(z+1),Y.trim().length>0)this.onLine(Y);z=this.buffer.indexOf(`
18
- `)}}onLine(J){let z;try{z=JSON.parse(J)}catch(Z){JJ("client-frame",Z);return}if(z.type==="event"){this.emit(z);return}if(z.type!=="response")return;let Y=this.pending.get(z.id);if(!Y)return;if(this.pending.delete(z.id),z.error){let Z=Error(z.error.message);if(z.error.name)Z.name=z.error.name;Y.reject(Z)}else Y.resolve(z.payload)}emit(J){for(let z of this.handlers.get(J.name)??[])z(J);for(let z of this.handlers.get("*")??[])z(J)}}var HX=C(()=>{YZ();GZ()});import{spawnSync as jA}from"child_process";import{existsSync as BA,statSync as WA}from"fs";import{homedir as VA}from"os";import fX from"path";async function xV(J=KA){let z=[],Y=(j)=>{if(!j)return;return z.push(j),J.fileExists(j)?j:void 0},Z=J.which("claude");if(Z){if(z.push(`which:${Z}`),J.fileExists(Z))return Z}let G=J.home(),X=Y(fX.join(G,".claude","local","claude"));if(X)return X;let Q=J.env("NVM_BIN");if(Q){let j=Y(fX.join(Q,"claude"));if(j)return j}let H=fX.join(G,".nvm","versions","node"),f=J.readdir(H).sort().reverse();for(let j of f){let V=Y(fX.join(H,j,"bin","claude"));if(V)return V}for(let j of["/opt/homebrew/bin/claude","/usr/local/bin/claude","/usr/bin/claude","/bin/claude"]){let V=Y(j);if(V)return V}for(let j of[".local/bin/claude",".npm-global/bin/claude",".yarn/bin/claude",".bun/bin/claude","bin/claude"]){let V=Y(fX.join(G,j));if(V)return V}throw new sQ(z)}var sQ,KA;var uV=C(()=>{sQ=class sQ extends Error{checkedPaths;constructor(J){super(`Claude Code binary not found. Checked: ${J.join(", ")}. Ensure 'claude' is on PATH, or install at ~/.claude/local/claude.`);this.name="ClaudeBinaryNotFoundError",this.checkedPaths=J}};KA={fileExists(J){try{return WA(J).isFile()}catch{return!1}},env(J){return process.env[J]},home(){return VA()},which(J){let z=process.platform==="win32"?"where":"which",Y=jA(z,[J],{encoding:"utf8"});if(Y.status!==0)return;let Z=Y.stdout.split(`
19
- `).map((G)=>G.trim()).filter(Boolean)[0];if(!Z)return;if(Z.startsWith("claude:")&&Z.includes("aliased to")){let G=Z.split("aliased to")[1]?.trim();return G&&BA(G)?G:void 0}return Z},readdir(J){try{return PQ("fs").readdirSync(J)}catch{return[]}}}});import{spawnSync as UA}from"child_process";import{existsSync as DA,statSync as LA}from"fs";import{homedir as FA}from"os";import EV from"path";async function wV(J=MA){let z=[],Y=(Q)=>{if(!Q)return;return z.push(Q),J.fileExists(Q)?Q:void 0},Z=J.which("codex");if(Z){if(z.push(`which:${Z}`),J.fileExists(Z))return Z}let G=J.home();for(let Q of["/opt/homebrew/bin/codex","/usr/local/bin/codex","/usr/bin/codex","/bin/codex"]){let H=Y(Q);if(H)return H}let X=J.env("NVM_BIN");if(X){let Q=Y(EV.join(X,"codex"));if(Q)return Q}for(let Q of[".local/bin/codex",".bun/bin/codex","bin/codex"]){let H=Y(EV.join(G,Q));if(H)return H}throw new tQ(z)}var tQ,MA;var PV=C(()=>{tQ=class tQ extends Error{checkedPaths;constructor(J){super(`Codex CLI binary not found. Checked: ${J.join(", ")}. Ensure 'codex' is on PATH (e.g. \`brew install codex\` or the official installer).`);this.name="CodexBinaryNotFoundError",this.checkedPaths=J}};MA={fileExists(J){try{return LA(J).isFile()}catch{return!1}},env(J){return process.env[J]},home(){return FA()},which(J){let z=process.platform==="win32"?"where":"which",Y=UA(z,[J],{encoding:"utf8"});if(Y.status!==0)return;let Z=Y.stdout.split(`
20
- `).map((G)=>G.trim()).filter(Boolean)[0];if(!Z)return;if(Z.startsWith("codex:")&&Z.includes("aliased to")){let G=Z.split("aliased to")[1]?.trim();return G&&DA(G)?G:void 0}return Z},readdir(J){try{return PQ("fs").readdirSync(J)}catch{return[]}}}});import{spawnSync as OA}from"child_process";import{existsSync as AA,statSync as RA}from"fs";import{homedir as gA}from"os";import CY from"path";async function hV(J=NA){let z=[],Y=(V)=>{if(!V)return;return z.push(V),J.fileExists(V)?V:void 0},Z=J.which("copilot");if(Z){if(z.push(`which:${Z}`),J.fileExists(Z))return Z}let G=J.platform()==="win32"?["copilot.exe","copilot.cmd","copilot"]:["copilot"],X=(V)=>{if(!V)return;for(let B of G){let K=Y(CY.join(V,B));if(K)return K}return};for(let V of["/opt/homebrew/bin","/usr/local/bin","/usr/bin","/bin"]){let B=X(V);if(B)return B}let Q=J.env("NVM_BIN"),H=X(Q);if(H)return H;let f=J.home(),j=[CY.join(f,".npm-global/bin"),CY.join(f,".local/bin"),CY.join(f,".bun/bin"),CY.join(f,"bin")];if(J.platform()==="win32"){let V=J.env("APPDATA"),B=J.env("LOCALAPPDATA");if(j.unshift(CY.join(f,"AppData/Roaming/npm")),V)j.unshift(CY.join(V,"npm"));if(B)j.unshift(CY.join(B,"npm"))}for(let V of j){let B=X(V);if(B)return B}throw new eQ(z)}var eQ,NA;var vV=C(()=>{eQ=class eQ extends Error{checkedPaths;constructor(J){super(`GitHub Copilot CLI binary not found. Checked: ${J.join(", ")}. Ensure 'copilot' is on PATH (for example \`npm install -g @github/copilot\` or \`brew install copilot-cli\`).`);this.name="CopilotBinaryNotFoundError",this.checkedPaths=J}};NA={fileExists(J){try{return RA(J).isFile()}catch{return!1}},env(J){return process.env[J]},home(){return gA()},which(J){let z=process.platform==="win32"?"where":"which",Y=OA(z,[J],{encoding:"utf8"});if(Y.status!==0)return;let Z=Y.stdout.split(`
21
- `).map((G)=>G.trim()).filter(Boolean)[0];if(!Z)return;if(Z.startsWith("copilot:")&&Z.includes("aliased to")){let G=Z.split("aliased to")[1]?.trim();return G&&AA(G)?G:void 0}return Z},platform(){return process.platform}}});import{readFileSync as CA,statSync as kA}from"fs";import{readFile as bA,stat as SA}from"fs/promises";async function aZ(J,z=mV){let{size:Y}=await SA(J);if(Y>z)return"";return bA(J,"utf8")}function cV(J,z=mV){let Y;try{Y=kA(J)}catch(Z){if(Z.code==="ENOENT")return null;throw Z}if(Y.size>z)return null;return CA(J,"utf8")}function kY(J,z=IA){return J.length<=z}var mV=104857600,IA=8388608;var jX=()=>{};import{homedir as yA}from"os";import bY from"path";function TA(J,z){let Y=J("CLAUDE_CONFIG_DIR")?.trim();if(Y)return bY.join(Y,".claude.json");return bY.join(z,".claude.json")}function xA(J,z){let Z=J("CODEX_HOME")?.trim()??bY.join(z,".codex");return bY.join(Z,"auth.json")}function uA(J,z){let Z=J("COPILOT_HOME")?.trim()??bY.join(z,".copilot");return bY.join(Z,"config.json")}function EA(J){let z=J.split(".");if(z.length!==3)return null;let Y=z[1];if(!Y)return null;let Z=Y.replace(/-/g,"+").replace(/_/g,"/"),G=Z+"=".repeat((4-Z.length%4)%4);try{let X=Buffer.from(G,"base64").toString("utf8"),Q=JSON.parse(X);return typeof Q==="object"&&Q!==null?Q:null}catch{return null}}async function zq(J){try{return{found:!0,path:await J()}}catch(z){if(z instanceof sQ||z instanceof tQ||z instanceof eQ)return{found:!1,error:"not found on PATH"};return{found:!1,error:z instanceof Error?z.message:String(z)}}}async function dV(J){return(await Promise.all([["claude",()=>J.findClaudeBinary()],["codex",()=>J.findCodexBinary()],["copilot",()=>J.findCopilotBinary()]].map(async([Z,G])=>(await zq(G)).found?Z:null))).filter((Z)=>Z!==null)}function wA(J=_Z){if(J!==_Z)return dV(J);if(Jq)return Jq;let z=dV(J).catch((Y)=>{throw Jq=null,Y});return Jq=z,z}async function GY(J=_Z){return[...await wA(J),...hJ()]}async function Yq(J=_Z){let z=await zq(()=>J.findClaudeBinary()),Y=TA(J.env,J.home()),Z;try{Z=J.readFile(Y)}catch(f){return{binary:z,account:{kind:"none"},accountError:`read ${Y}: ${f instanceof Error?f.message:String(f)}`}}if(Z===null)return{binary:z,account:{kind:"none"}};let G;try{G=JSON.parse(Z)}catch(f){return{binary:z,account:{kind:"none"},accountError:`parse ${Y}: ${f instanceof Error?f.message:String(f)}`}}let X=G?.oauthAccount;if(!X||typeof X!=="object")return{binary:z,account:{kind:"none"}};let Q=X,H=typeof Q.emailAddress==="string"?Q.emailAddress:void 0;if(!H)return{binary:z,account:{kind:"none"}};return{binary:z,account:{kind:"oauth",email:H,organization:typeof Q.organizationName==="string"?Q.organizationName:void 0,displayName:typeof Q.displayName==="string"?Q.displayName:void 0,billingType:typeof Q.billingType==="string"?Q.billingType:void 0}}}async function Zq(J=_Z){let z=await zq(()=>J.findCodexBinary()),Y=xA(J.env,J.home()),Z;try{Z=J.readFile(Y)}catch(j){return{binary:z,account:{kind:"none"},accountError:`read ${Y}: ${j instanceof Error?j.message:String(j)}`}}if(Z===null)return{binary:z,account:{kind:"none"}};let G;try{G=JSON.parse(Z)}catch(j){return{binary:z,account:{kind:"none"},accountError:`parse ${Y}: ${j instanceof Error?j.message:String(j)}`}}let X=G??{},Q=X.tokens,H=typeof Q?.id_token==="string"?Q.id_token:void 0;if(H){let j=EA(H);if(!j)return{binary:z,account:{kind:"none"},accountError:"codex id_token: malformed JWT"};let V=typeof j.email==="string"?j.email:void 0,B=j["https://api.openai.com/auth"],K=typeof B==="object"&&B!==null&&!Array.isArray(B)?B:void 0,L=typeof K?.chatgpt_plan_type==="string"?K.chatgpt_plan_type:void 0;if(V)return{binary:z,account:{kind:"chatgpt",email:V,plan:L}};return{binary:z,account:{kind:"none"},accountError:"codex id_token: no email claim"}}let f=X.OPENAI_API_KEY;if(typeof f==="string"&&f.length>0)return{binary:z,account:{kind:"apikey"}};return{binary:z,account:{kind:"none"}}}async function Gq(J=_Z){let z=await zq(()=>J.findCopilotBinary());for(let X of["COPILOT_GITHUB_TOKEN","GH_TOKEN","GITHUB_TOKEN"])if(J.env(X)?.trim())return{binary:z,account:{kind:"token",source:X}};let Y=uA(J.env,J.home()),Z;try{Z=J.readFile(Y)}catch(X){return{binary:z,account:{kind:"none"},accountError:`read ${Y}: ${X instanceof Error?X.message:String(X)}`}}if(Z===null)return{binary:z,account:{kind:"none"}};let G;try{G=JSON.parse(Z)}catch(X){return{binary:z,account:{kind:"none"},accountError:`parse ${Y}: ${X instanceof Error?X.message:String(X)}`}}if(!Uj(G))return{binary:z,account:{kind:"none"}};if(nV(G,["github_token","oauth_token","access_token","token","selectedUser","currentUser","user"]))return{binary:z,account:{kind:"oauth"}};return{binary:z,account:{kind:"none"}}}function Uj(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}function nV(J,z,Y=0){if(Y>4||!Uj(J))return!1;for(let[Z,G]of Object.entries(J)){if(z.includes(Z)&&typeof G==="string"&&G.length>0)return!0;if(Uj(G)&&nV(G,z,Y+1))return!0}return!1}var _Z,Jq=null;var XZ=C(()=>{C1();uV();PV();vV();jX();_Z={readFile(J){return cV(J)},env(J){return process.env[J]},home(){return yA()},findClaudeBinary(){return xV()},findCodexBinary(){return wV()},findCopilotBinary(){return hV()}}});function iV(J){if(typeof J==="string")return J.length>0?[{type:"text",text:J}]:[];if(!Array.isArray(J))return[];let z=[];for(let Y of J){if(typeof Y==="string"){if(Y.length>0)z.push({type:"text",text:Y});continue}if(!Y||typeof Y!=="object")continue;let Z=Y;if(Z.type==="text"&&typeof Z.text==="string"){z.push({type:"text",text:Z.text});continue}if(Z.type==="tool_use"){z.push({type:"tool_call",callId:typeof Z.id==="string"?Z.id:"",name:typeof Z.name==="string"?Z.name:"",input:Z.input});continue}if(Z.type==="tool_result"){z.push({type:"tool_result",callId:typeof Z.tool_use_id==="string"?Z.tool_use_id:"",output:Z.content,isError:Z.is_error===!0});continue}if(Z.type==="thinking"&&typeof Z.thinking==="string")z.push({type:"thinking",text:Z.thinking})}return z}function lV(J){return J.isMeta===!0||J.isCompactSummary===!0}function $V(J){if(J.length===0)return!1;for(let z of J){if(z.type!=="text")return!1;let Y=z.text.trim();if(!Y.startsWith("<command-name>")&&!Y.startsWith("<command-message>")&&!Y.startsWith("<local-command"))return!1}return!0}import{appendFile as PP,mkdir as hP,readdir as Dj,stat as PA,unlink as vP}from"fs/promises";import{homedir as aV}from"os";import Xq from"path";function vA(J){return J.replace(/[/.]/g,"-")}async function BX(J){if(!J)return[];let z=Xq.join(aV(),".claude","projects",vA(J)),Y;try{Y=await Dj(z)}catch{return[]}let Z=[];for(let G of Y){if(!G.endsWith(".jsonl"))continue;let X=Xq.join(z,G),Q=0;try{Q=(await PA(X)).mtimeMs}catch{}Z.push({sessionId:G.slice(0,-6),path:X,mtimeMs:Q})}return Z.sort((G,X)=>X.mtimeMs-G.mtimeMs),Z}async function _V(J){return(await BX(J))[0]?.mtimeMs??0}async function pV(J,z=hA){let Y=z.projectsDir(),Z=await z.readdir(Y);for(let G of Z){let X=Xq.join(Y,G,`${J}.jsonl`),Q;try{Q=await z.readFile(X)}catch{continue}return mA(cA(Q,J))}return[]}function mA(J){return J.map((z,Y)=>({msg:z,idx:Y})).sort((z,Y)=>{if(z.msg.timestamp<Y.msg.timestamp)return-1;if(z.msg.timestamp>Y.msg.timestamp)return 1;return z.idx-Y.idx}).map((z)=>z.msg)}function cA(J,z){let Y=[];for(let Z of J.split(`
22
- `)){let G=Z.trim();if(!G)continue;if(!kY(G))continue;let X;try{X=JSON.parse(G)}catch{continue}if(!Lj(X))continue;let Q=dA(X,z);if(Q)Y.push(Q)}return Y}function dA(J,z){if(lV(J))return null;let Y=Lj(J.message)?J.message:J,Z=Y.role;if(Z!=="user"&&Z!=="assistant"&&Z!=="system")return null;if(!("content"in Y))return null;let G=iV(Y.content);if(Z==="user"&&$V(G))return null;let X=typeof J.timestamp==="string"?J.timestamp:new Date().toISOString(),Q=typeof J.sessionId==="string"?J.sessionId:z,H=nA(Y.usage);return H?{role:Z,blocks:G,timestamp:X,sessionId:Q,usage:H}:{role:Z,blocks:G,timestamp:X,sessionId:Q}}function nA(J){if(!Lj(J))return;let z=typeof J.input_tokens==="number"?J.input_tokens:void 0,Y=typeof J.output_tokens==="number"?J.output_tokens:void 0;if(z===void 0||Y===void 0)return;let Z=typeof J.cache_read_input_tokens==="number"?J.cache_read_input_tokens:void 0,G=typeof J.cache_creation_input_tokens==="number"?J.cache_creation_input_tokens:void 0;return{input_tokens:z,output_tokens:Y,...Z!==void 0?{cache_read_input_tokens:Z}:{},...G!==void 0?{cache_creation_input_tokens:G}:{}}}function Lj(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}var hA;var Fj=C(()=>{jX();hA={projectsDir(){return Xq.join(aV(),".claude","projects")},async readdir(J){try{return await Dj(J)}catch{return[]}},async readFile(J){return await aZ(J)},async pathExists(J){try{return await Dj(J),!0}catch{return!1}}}});import{fileURLToPath as oV}from"url";function y1(){if(import.meta.url.endsWith(".js"))return["kobe"];let z=oV(new URL("./index.ts",import.meta.url)),Y=oV(import.meta.resolve("@opentui/solid/preload"));return[process.execPath,"--preload",Y,"--conditions=browser",z]}var XY=()=>{};function Mj(J,z={}){if(z.bareSafe&&iA.test(J))return J;return`'${J.replace(/'/g,"'\\''")}'`}function Qq(J,z={}){return J.map((Y)=>Mj(Y,z)).join(" ")}var iA;var Oj=C(()=>{iA=/^[A-Za-z0-9_/.:=-]+$/});function VX(J){return`kobe-hidden-${J.replace(/[^A-Za-z0-9_-]/g,"")||"session"}`}function eV(J){let z=Number.parseInt(J.replace(/^@/,""),10);return Number.isFinite(z)&&z>=0?1000+z:1000}function Nj(J){if(!Number.isFinite(J))return tV;return Math.max(lA,Math.min($A,Math.round(J)))}function QZ(J){if(!Number.isFinite(J))return null;return Math.max(aA,Math.min(_A,Math.round(J)))}function z7(J){let z=Number.parseInt(J[qq]??"",10),Y=Number.isFinite(z)&&z>0?Nj(z):tV,Z=QZ(Number.parseInt(J[Hq]??"",10)),G=QZ(Number.parseInt(J[fq]??"",10)),X=[];if(Z!==null)X.push("-x",`${Z}%`);if(G!==null)X.push("-y",`${G}%`);return{tasksWidth:Y,rightColumnWidthPct:Z??100-Cj,opsHeightPct:G??KX,rightColumnResizeArgs:X}}function Q1(J){return Mj(J)}function yJ(J){return Qq(J)}function TJ(J,z){let G=`${z?Aj:""}${J}; __rc=$?; [ "$__rc" -ne 0 ] && printf '${"\\n \u26A0 Engine exited (code %s). Check Settings \u2192 Engines and fix the launch command.\\n\\n"}' "$__rc"; `;return z?`${G}"\${SHELL:-/bin/sh}"; ${z}`:`${G}exec "\${SHELL:-/bin/sh}"`}function Y7(J){return`trap '' INT; while :; do ${J}; sleep 1; done`}function rZ(J,z,Y){return`${J}${z.map(Q1).join(" ")} engine-tab-exit --session ${Q1(Y)}`}function Rj(J){return`'${J.replace(/'/g,"'\\''")}'`}function Z7(){return`clear; printf ${Rj("\\n No task selected\\n\\n Press N to create a task, or pick one on the left.\\n\\n")}; exec "\${SHELL:-/bin/sh}"`}function kj(J){let z=typeof J==="number"?J:J==null?Number.NaN:Number.parseInt(J,10);if(!Number.isFinite(z))return pA;return Math.max(rA,Math.min(oA,Math.round(z)))}function sA(J,z){let Y=String(z),Z="\\n \u26A0 Repo init (.kobe/init.sh) timed out after %ss and was killed; continuing to the engine.\\n\\n",G="\\n \u26A0 Repo init (.kobe/init.sh) failed (code %s); continuing to the engine.\\n\\n";return['__kobe_init_env="${TMPDIR:-/tmp}/kobe-init-env.$$"','__kobe_init_to="${TMPDIR:-/tmp}/kobe-init-timeout.$$"','rm -f "$__kobe_init_env" "$__kobe_init_to" 2>/dev/null',"(",J,"__kobe_init_ec=$?",'export -p > "$__kobe_init_env" 2>/dev/null',"exit $__kobe_init_ec",") </dev/null &","__kobe_init_pid=$!",`( sleep ${Y}; : > "$__kobe_init_to"; kill -TERM "$__kobe_init_pid" 2>/dev/null; sleep 2; kill -KILL "$__kobe_init_pid" 2>/dev/null ) &`,"__kobe_init_wd=$!",'wait "$__kobe_init_pid" 2>/dev/null; __kobe_init_rc=$?','kill "$__kobe_init_wd" 2>/dev/null; wait "$__kobe_init_wd" 2>/dev/null',`if [ -f "$__kobe_init_to" ]; then __kobe_init_rc=124; printf '${"\\n \u26A0 Repo init (.kobe/init.sh) timed out after %ss and was killed; continuing to the engine.\\n\\n"}' '${Y}';`,'elif [ "$__kobe_init_rc" -eq 0 ]; then [ -f "$__kobe_init_env" ] && . "$__kobe_init_env" 2>/dev/null;',`else printf '${"\\n \u26A0 Repo init (.kobe/init.sh) failed (code %s); continuing to the engine.\\n\\n"}' "$__kobe_init_rc"; fi`,'rm -f "$__kobe_init_env" "$__kobe_init_to" 2>/dev/null'].join(`
23
- `)}function G7(J,z,Y){let Z=TJ(J,Y),G=z?.initScript?.trim();if(!G)return Z;let X=kj(z?.timeoutSeconds),Q=sA(G,X);if(z?.markerPath){let H=Rj(z.markerPath),f=Rj(tA(z.markerPath));return Aj+[`if [ ! -f ${H} ]; then`,Q,`if [ "$__kobe_init_rc" -eq 0 ]; then mkdir -p ${f} && : > ${H}; fi`,"fi",Z].join(`
24
- `)}return Aj+[Q,Z].join(`
25
- `)}function tA(J){let z=J.lastIndexOf("/");return z<=0?".":J.slice(0,z)}function sV(J){return`cd ${Q1(J)} && while :; do clear; printf "\\033[1m# %s\\033[0m\\n\\n" ${Q1(J)}; git status --short --branch 2>/dev/null | sed 's/^/ /' || true; printf "\\n"; if command -v lsd >/dev/null 2>&1; then lsd --tree --git -I node_modules -I .git --depth 2 .; elif command -v eza >/dev/null 2>&1; then eza --tree --git -L 2 -I 'node_modules|.git' .; elif command -v tree >/dev/null 2>&1; then tree -L 2 -I 'node_modules|.git'; else ls -la; fi; sleep 2; done`}function X7(J){let z=Q1(J.worktree),Y=Q1(J.relPath),Z=J.cliInvocation.map(Q1).join(" "),G=`cd ${z} && if ! git diff --quiet HEAD -- ${Y} 2>/dev/null; then git diff HEAD -- ${Y} | { delta --paging=always 2>/dev/null || less -R; }; else bat --style=plain --paging=always ${Y} 2>/dev/null || \${PAGER:-less} ${Y} 2>/dev/null || cat ${Y}; fi`;return`${Z} ops --worktree ${z} --preview ${Y} || { ${G}; }`}function Q7(J){return`${yJ([...J.cliInvocation,"update-page"])}`}function q7(J){let z=J.opener??"open";return[`tmux -L ${Q1(J.tmuxSocket)} capture-pane -Jp -t '#{pane_id}' -S -500`,`grep -oiE 'https?://[^ "'\\''()<>]+'`,"awk '!seen[$0]++'","{ command -v fzf >/dev/null && fzf --reverse || tail -1; }",`xargs -I{} ${z} {}`].join(" | ")}function IY(J,z={}){let Y=[...J,"tasks"];if(z.initialTaskId)Y.push("--initial-task-id",z.initialTaskId);return yJ(Y)}function oZ(J){if(J.taskId&&J.claudePaneId){let z=J.cliInvocation.map(Q1).join(" "),Y=J.vendor?` --vendor ${Q1(J.vendor)}`:"";return`KOBE_FILETREE_WATCH=1 ${z} ops --task-id ${Q1(J.taskId)} --worktree ${Q1(J.cwd)} --target-pane ${Q1(J.claudePaneId)}${Y} || { ${sV(J.cwd)}; }`}return sV(J.cwd)}var tV=32,eJ="tasks",qZ="claude",Kz="ops",Uz="shell",WX="workspace_aux",gj=4,Dz="@kobe_hidden_shell_pane",IJ="@kobe_hidden_tasks_pane",SY="@kobe_zen_panes",pZ="@kobe_zen",qq="@kobe_tasks_width",lA=16,$A=120,Cj=60,KX=50,Hq="@kobe_right_width_pct",fq="@kobe_ops_height_pct",aA=10,_A=90,J7,Aj="trap ':' INT; ",pA=120,rA=5,oA=3600;var Lz=C(()=>{Oj();J7=[qq,Hq,fq]});function Jz(J){return!!J&&typeof J==="object"&&!Array.isArray(J)}function JR(J){return J.map((z)=>yJ(["hook",z.verb]))}function zR(J,z){if(!Jz(J)||!Array.isArray(J.hooks))return!1;return J.hooks.some((Y)=>Jz(Y)&&typeof Y.command==="string"&&z.some((Z)=>Y.command.includes(Z)))}function j7(J,z=y1()){let Y={};for(let{event:Z,matcher:G,verb:X}of J){let H={hooks:[{type:"command",command:yJ([...z,"hook",X])}]};if(G)H.matcher=G;Y[Z]=[H]}return Y}function jq(J,z,Y,Z=y1()){let G=JR(Y),{hooks:X,...Q}=J,H=Jz(X)?{...X}:{},f=z?j7(Y,Z):{};for(let{event:j}of Y){let B=(Array.isArray(H[j])?H[j]:[]).filter((K)=>!zR(K,G));if(z&&Array.isArray(f[j]))B.push(...f[j]);if(B.length>0)H[j]=B;else delete H[j]}return Object.keys(H).length>0?{...Q,hooks:H}:{...Q}}function B7(J=y1()){let z=yJ([...J,"hook",f7]);return{[H7]:[{matcher:eA,hooks:[{type:"command",command:z}]}]}}function YR(J){if(!Jz(J)||!Array.isArray(J.hooks))return!1;return J.hooks.some((z)=>Jz(z)&&typeof z.command==="string"&&z.command.includes(f7))}function Bq(J,z,Y=y1()){let{hooks:Z,...G}=J,X=Jz(Z)?{...Z}:{},Q=H7,f=(Array.isArray(X[Q])?X[Q]:[]).filter((j)=>!YR(j));if(z)f.push(...B7(Y)[Q]);if(f.length>0)X[Q]=f;else delete X[Q];return Object.keys(X).length>0?{...G,hooks:X}:{...G}}var H7="PostToolUse",eA="Bash",f7="worktree-created";var bj=C(()=>{XY();Lz()});import{mkdir as ZR,readFile as GR,writeFile as XR}from"fs/promises";import{dirname as QR}from"path";async function qR(J){try{let z=JSON.parse(await GR(J,"utf8"));return Jz(z)?z:{}}catch{return{}}}async function sZ(J,z){try{let Y=await qR(J),Z=z(Y);if(JSON.stringify(Z)===JSON.stringify(Y))return;await ZR(QR(J),{recursive:!0}),await XR(J,`${JSON.stringify(Z,null,2)}
26
- `)}catch{}}class UX{supportsHooks(){return!0}activityDetailFromPayload(J,z){return}supportsWorktreeSync(){return!1}async removeWorktreeSyncHook(J){}async installActivityHooks(J){await sZ(J,(z)=>jq(z,!0,this.eventMap))}async removeActivityHooks(J){await sZ(J,(z)=>jq(z,!1,this.eventMap))}async installWorktreeWatchHook(J){await sZ(J,(z)=>Bq(z,!0))}async removeWorktreeWatchHook(J){await sZ(J,(z)=>Bq(z,!1))}}var Sj=C(()=>{bj()});import{homedir as HR}from"os";import{join as fR}from"path";function jR(J){if(typeof J!=="string")return"other";if(J==="rate_limit"||J==="overloaded")return"rate_limit";if(J==="billing_error")return"billing";return"other"}function BR(){return fR(HR(),".claude","settings.json")}function VR(J){if(!Jz(J)||!Array.isArray(J.hooks))return!1;return J.hooks.some((z)=>Jz(z)&&typeof z.command==="string"&&z.command.includes(WR))}function KR(J,z){let{hooks:Y,...Z}=J,{WorktreeCreate:G,...X}=Jz(Y)?Y:{},H=(Array.isArray(G)?G:[]).filter((j)=>!VR(j));if(z!==null)H.push({hooks:[{type:"command",command:z}]});let f={...X};if(H.length>0)f.WorktreeCreate=H;return Object.keys(f).length>0?{...Z,hooks:f}:{...Z}}var W7,Qh,WR="worktree-created",Ij;var V7=C(()=>{Sj();bj();W7=[{event:"SessionStart",verb:"session-start"},{event:"UserPromptSubmit",verb:"turn-start"},{event:"Stop",verb:"turn-complete"},{event:"StopFailure",verb:"turn-failed"},{event:"Notification",matcher:"permission_prompt",verb:"awaiting-input"},{event:"SessionEnd",verb:"session-end"}],Qh=W7.map((J)=>J.event);Ij=class Ij extends UX{vendor="claude";eventMap=W7;globalSettingsPath(){return BR()}activityDetailFromPayload(J,z){if(J==="turn-failed")return{failure:jR(z.error_type)};if(J==="awaiting-input")return{waiting:"permission"};return}supportsWorktreeSync(){return!0}async removeWorktreeSyncHook(J){await sZ(J,(z)=>KR(z,null))}}});function yj(J){if(typeof J==="string")return J.length>0?[{type:"text",text:J}]:[];if(!Array.isArray(J))return[];let z=[];for(let Y of J){if(typeof Y==="string"){if(Y.length>0)z.push({type:"text",text:Y});continue}if(!UR(Y))continue;let Z=typeof Y.type==="string"?Y.type:void 0;if(Z==="input_text"||Z==="output_text"){let G=typeof Y.text==="string"?Y.text:"";if(G.length>0)z.push({type:"text",text:G});continue}if(Z)z.push({type:"text",text:`[codex: ${Z}]`})}return z}function UR(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}function K7(J){if(J.length===0)return!1;for(let z of J){if(z.type!=="text")return!1;let Y=(z.text??"").trim();if(!DR(Y)&&!LR(Y))return!1}return!0}function DR(J){return J.startsWith("<environment_context>")&&J.endsWith("</environment_context>")}function LR(J){return J.startsWith("# AGENTS.md instructions for ")&&J.includes(`
13
+ `});function sQ(J){return J.remoteVersion>=J.localMin&&J.localVersion>=J.remoteMin}function wV(J,z){if(!J)return!1;return J!==z}function yA(J){return typeof J==="string"&&SA.has(J)}function PV(J){if(!Array.isArray(J))return null;let z=new Set;for(let Z of J)if(yA(Z))z.add(Z);return z.size>0?z:null}function Uz(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 jG(J){return`${JSON.stringify(J)}
14
+ `}var eJ=3,kZ=2,M9,SA;var YY=C(()=>{M9=["task.snapshot","issue.snapshot","active-task","update","engine-state","ui-prefs","keybindings","task.jobs","worktree.changes","transcript.activity","session.deliver"],SA=new Set(M9)});import{createHash as TA}from"crypto";import{homedir as tQ,tmpdir as xA}from"os";import{join as XY}from"path";function uA(J){return TA("sha1").update(J).digest("hex").slice(0,8)}function O9(J,z,Z,Y){if(Buffer.byteLength(J,"utf8")<=F9)return J;let X=uA(z),G=Y===void 0?"":`-${Y}`,q=XY(xA(),`kobe-${X}-${Z}${G}.sock`);if(Buffer.byteLength(q,"utf8")<=F9)return q;throw Error(`kobe socket path exceeds ${F9} bytes even after fallback: ${q}`)}function wz(J){let z=process.env.KOBE_DAEMON_SOCKET_PATH;if(z&&z.length>0)return z;let Z=J??process.env.KOBE_HOME_DIR;if(Z&&Z.length>0)return O9(XY(Z,".kobe","daemon.sock"),Z,"daemon");let Y=process.env.XDG_RUNTIME_DIR;if(Y&&Y.length>0)return O9(XY(Y,"kobe.sock"),Y,"daemon");let X=tQ();return O9(XY(X,".kobe","daemon.sock"),X,"daemon")}function ZZ(J=process.env.KOBE_HOME_DIR??tQ()){let z=process.env.KOBE_DAEMON_PID_PATH;if(z&&z.length>0)return z;return XY(J,".kobe","daemon.pid")}function eQ(J=process.env.KOBE_HOME_DIR??tQ()){return XY(J,".kobe","daemon.log")}function hV(J=process.env.KOBE_HOME_DIR??tQ()){return XY(J,".kobe","client.log")}var F9=100;var _Y=()=>{};import{appendFile as vV,mkdir as EA}from"fs/promises";import{dirname as wA}from"path";function Jq(J){dV=J}function PA(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 nV(J,z,Z=new Date){return`[${Z.toISOString()}] client ${dV} [${J}] pid=${process.pid}: ${z}
15
+ `}function hA(){if(mV)return;mV=!0;try{process.stderr.write(`[kobe] client log write failed; continuing without it
16
+ `)}catch{}}function iV(J){let z=hV();cV=cV.then(async()=>{try{await vV(z,J)}catch(Z){if(Z?.code==="ENOENT")await EA(wA(z),{recursive:!0}),await vV(z,J);else throw Z}}).catch(()=>hA())}function YZ(J,z){iV(nV(J,z))}function QJ(J,z){let Z=PA(z);iV(nV(J,Z.stack??Z.message))}function lV(){if(A9||R9)return;A9=(J)=>QJ("crash-net",J),R9=(J)=>QJ("crash-net",J),process.on("unhandledRejection",A9),process.on("uncaughtException",R9)}var dV="client",mV=!1,cV,A9,R9;var GY=C(()=>{_Y();cV=Promise.resolve()});import{connect as vA}from"net";import{StringDecoder as mA}from"string_decoder";class Jz{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 Z=this.handlers.get(J);if(!Z)Z=new Set,this.handlers.set(J,Z);return Z.add(z),()=>{if(Z?.delete(z),Z?.size===0)this.handlers.delete(J)}}onChannel(J,z){return this.on(J,(Z)=>z(Z.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 Z=this.lifecycleHandlers.get(J);if(!Z)Z=new Set,this.lifecycleHandlers.set(J,Z);return Z.add(z),()=>{if(Z?.delete(z),Z?.size===0)this.lifecycleHandlers.delete(J)}}async request(J,z){await this.connect();let Z=this.socket;if(!Z)throw Error("daemon connection is not open");let Y=String(this.nextId++),X=new Promise((G,q)=>{this.pending.set(Y,{resolve:(H)=>G(H),reject:q})});return Z.write(jG({type:"request",id:Y,name:J,payload:z})),X}openSocket(){return new Promise((J,z)=>{let Z=vA(this.socketPath);this.socket=Z;let Y=()=>{Z.off("error",X),J()},X=(q)=>{if(Z.off("connect",Y),this.socket===Z)this.socket=null;z(q)};Z.once("connect",Y),Z.once("error",X);let G=new mA("utf8");this.buffer="",Z.on("data",(q)=>this.onData(G.write(q))),Z.on("close",()=>this.onSocketClose(Z))})}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(Z){console.error(`[kobe] lifecycle handler for "${J}" threw:`,Z)}}onData(J){this.buffer+=J;let z=this.buffer.indexOf(`
17
+ `);while(z!==-1){let Z=this.buffer.slice(0,z);if(this.buffer=this.buffer.slice(z+1),Z.trim().length>0)this.onLine(Z);z=this.buffer.indexOf(`
18
+ `)}}onLine(J){let z;try{z=JSON.parse(J)}catch(Y){QJ("client-frame",Y);return}if(z.type==="event"){this.emit(z);return}if(z.type!=="response")return;let Z=this.pending.get(z.id);if(!Z)return;if(this.pending.delete(z.id),z.error){let Y=Error(z.error.message);if(z.error.name)Y.name=z.error.name;Z.reject(Y)}else Z.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 BG=C(()=>{YY();GY()});import{spawnSync as cA}from"child_process";import{existsSync as dA,statSync as nA}from"fs";import{homedir as iA}from"os";import fG from"path";async function $V(J=lA){let z=[],Z=(B)=>{if(!B)return;return z.push(B),J.fileExists(B)?B:void 0},Y=J.which("claude");if(Y){if(z.push(`which:${Y}`),J.fileExists(Y))return Y}let X=J.home(),G=Z(fG.join(X,".claude","local","claude"));if(G)return G;let q=J.env("NVM_BIN");if(q){let B=Z(fG.join(q,"claude"));if(B)return B}let H=fG.join(X,".nvm","versions","node"),j=J.readdir(H).sort().reverse();for(let B of j){let V=Z(fG.join(H,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=Z(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=Z(fG.join(X,B));if(V)return V}throw new zq(z)}var zq,lA;var aV=C(()=>{zq=class zq 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}};lA={fileExists(J){try{return nA(J).isFile()}catch{return!1}},env(J){return process.env[J]},home(){return iA()},which(J){let z=process.platform==="win32"?"where":"which",Z=cA(z,[J],{encoding:"utf8"});if(Z.status!==0)return;let Y=Z.stdout.split(`
19
+ `).map((X)=>X.trim()).filter(Boolean)[0];if(!Y)return;if(Y.startsWith("claude:")&&Y.includes("aliased to")){let X=Y.split("aliased to")[1]?.trim();return X&&dA(X)?X:void 0}return Y},readdir(J){try{return PQ("fs").readdirSync(J)}catch{return[]}}}});import{spawnSync as $A}from"child_process";import{existsSync as aA,statSync as _A}from"fs";import{homedir as pA}from"os";import _V from"path";async function pV(J=rA){let z=[],Z=(q)=>{if(!q)return;return z.push(q),J.fileExists(q)?q:void 0},Y=J.which("codex");if(Y){if(z.push(`which:${Y}`),J.fileExists(Y))return Y}let X=J.home();for(let q of["/opt/homebrew/bin/codex","/usr/local/bin/codex","/usr/bin/codex","/bin/codex"]){let H=Z(q);if(H)return H}let G=J.env("NVM_BIN");if(G){let q=Z(_V.join(G,"codex"));if(q)return q}for(let q of[".local/bin/codex",".bun/bin/codex","bin/codex"]){let H=Z(_V.join(X,q));if(H)return H}throw new Zq(z)}var Zq,rA;var rV=C(()=>{Zq=class Zq 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}};rA={fileExists(J){try{return _A(J).isFile()}catch{return!1}},env(J){return process.env[J]},home(){return pA()},which(J){let z=process.platform==="win32"?"where":"which",Z=$A(z,[J],{encoding:"utf8"});if(Z.status!==0)return;let Y=Z.stdout.split(`
20
+ `).map((X)=>X.trim()).filter(Boolean)[0];if(!Y)return;if(Y.startsWith("codex:")&&Y.includes("aliased to")){let X=Y.split("aliased to")[1]?.trim();return X&&aA(X)?X:void 0}return Y},readdir(J){try{return PQ("fs").readdirSync(J)}catch{return[]}}}});import{spawnSync as oA}from"child_process";import{existsSync as sA,statSync as tA}from"fs";import{homedir as eA}from"os";import IZ from"path";async function oV(J=JR){let z=[],Z=(V)=>{if(!V)return;return z.push(V),J.fileExists(V)?V:void 0},Y=J.which("copilot");if(Y){if(z.push(`which:${Y}`),J.fileExists(Y))return Y}let X=J.platform()==="win32"?["copilot.exe","copilot.cmd","copilot"]:["copilot"],G=(V)=>{if(!V)return;for(let f of X){let U=Z(IZ.join(V,f));if(U)return U}return};for(let V of["/opt/homebrew/bin","/usr/local/bin","/usr/bin","/bin"]){let f=G(V);if(f)return f}let q=J.env("NVM_BIN"),H=G(q);if(H)return H;let j=J.home(),B=[IZ.join(j,".npm-global/bin"),IZ.join(j,".local/bin"),IZ.join(j,".bun/bin"),IZ.join(j,"bin")];if(J.platform()==="win32"){let V=J.env("APPDATA"),f=J.env("LOCALAPPDATA");if(B.unshift(IZ.join(j,"AppData/Roaming/npm")),V)B.unshift(IZ.join(V,"npm"));if(f)B.unshift(IZ.join(f,"npm"))}for(let V of B){let f=G(V);if(f)return f}throw new Yq(z)}var Yq,JR;var sV=C(()=>{Yq=class Yq 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}};JR={fileExists(J){try{return tA(J).isFile()}catch{return!1}},env(J){return process.env[J]},home(){return eA()},which(J){let z=process.platform==="win32"?"where":"which",Z=oA(z,[J],{encoding:"utf8"});if(Z.status!==0)return;let Y=Z.stdout.split(`
21
+ `).map((X)=>X.trim()).filter(Boolean)[0];if(!Y)return;if(Y.startsWith("copilot:")&&Y.includes("aliased to")){let X=Y.split("aliased to")[1]?.trim();return X&&sA(X)?X:void 0}return Y},platform(){return process.platform}}});import{readFileSync as zR,statSync as ZR}from"fs";import{readFile as YR,stat as XR}from"fs/promises";async function pY(J,z=tV){let{size:Z}=await XR(J);if(Z>z)return"";return YR(J,"utf8")}function eV(J,z=tV){let Z;try{Z=ZR(J)}catch(Y){if(Y.code==="ENOENT")return null;throw Y}if(Z.size>z)return null;return zR(J,"utf8")}function SZ(J,z=GR){return J.length<=z}var tV=104857600,GR=8388608;var WG=()=>{};import{homedir as QR}from"os";import yZ from"path";function qR(J,z){let Z=J("CLAUDE_CONFIG_DIR")?.trim();if(Z)return yZ.join(Z,".claude.json");return yZ.join(z,".claude.json")}function HR(J,z){let Y=J("CODEX_HOME")?.trim()??yZ.join(z,".codex");return yZ.join(Y,"auth.json")}function jR(J,z){let Y=J("COPILOT_HOME")?.trim()??yZ.join(z,".copilot");return yZ.join(Y,"config.json")}function BR(J){let z=J.split(".");if(z.length!==3)return null;let Z=z[1];if(!Z)return null;let Y=Z.replace(/-/g,"+").replace(/_/g,"/"),X=Y+"=".repeat((4-Y.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 Gq(J){try{return{found:!0,path:await J()}}catch(z){if(z instanceof zq||z instanceof Zq||z instanceof Yq)return{found:!1,error:"not found on PATH"};return{found:!1,error:z instanceof Error?z.message:String(z)}}}async function J7(J){return(await Promise.all([["claude",()=>J.findClaudeBinary()],["codex",()=>J.findCodexBinary()],["copilot",()=>J.findCopilotBinary()]].map(async([Y,X])=>(await Gq(X)).found?Y:null))).filter((Y)=>Y!==null)}function fR(J=rY){if(J!==rY)return J7(J);if(Xq)return Xq;let z=J7(J).catch((Z)=>{throw Xq=null,Z});return Xq=z,z}async function XZ(J=rY){return[...await fR(J),...nJ()]}async function Qq(J=rY){let z=await Gq(()=>J.findClaudeBinary()),Z=qR(J.env,J.home()),Y;try{Y=J.readFile(Z)}catch(j){return{binary:z,account:{kind:"none"},accountError:`read ${Z}: ${j instanceof Error?j.message:String(j)}`}}if(Y===null)return{binary:z,account:{kind:"none"}};let X;try{X=JSON.parse(Y)}catch(j){return{binary:z,account:{kind:"none"},accountError:`parse ${Z}: ${j instanceof Error?j.message:String(j)}`}}let G=X?.oauthAccount;if(!G||typeof G!=="object")return{binary:z,account:{kind:"none"}};let q=G,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 qq(J=rY){let z=await Gq(()=>J.findCodexBinary()),Z=HR(J.env,J.home()),Y;try{Y=J.readFile(Z)}catch(B){return{binary:z,account:{kind:"none"},accountError:`read ${Z}: ${B instanceof Error?B.message:String(B)}`}}if(Y===null)return{binary:z,account:{kind:"none"}};let X;try{X=JSON.parse(Y)}catch(B){return{binary:z,account:{kind:"none"},accountError:`parse ${Z}: ${B instanceof Error?B.message:String(B)}`}}let G=X??{},q=G.tokens,H=typeof q?.id_token==="string"?q.id_token:void 0;if(H){let B=BR(H);if(!B)return{binary:z,account:{kind:"none"},accountError:"codex id_token: malformed JWT"};let V=typeof B.email==="string"?B.email:void 0,f=B["https://api.openai.com/auth"],U=typeof f==="object"&&f!==null&&!Array.isArray(f)?f:void 0,L=typeof U?.chatgpt_plan_type==="string"?U.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 j=G.OPENAI_API_KEY;if(typeof j==="string"&&j.length>0)return{binary:z,account:{kind:"apikey"}};return{binary:z,account:{kind:"none"}}}async function Hq(J=rY){let z=await Gq(()=>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 Z=jR(J.env,J.home()),Y;try{Y=J.readFile(Z)}catch(G){return{binary:z,account:{kind:"none"},accountError:`read ${Z}: ${G instanceof Error?G.message:String(G)}`}}if(Y===null)return{binary:z,account:{kind:"none"}};let X;try{X=JSON.parse(Y)}catch(G){return{binary:z,account:{kind:"none"},accountError:`parse ${Z}: ${G instanceof Error?G.message:String(G)}`}}if(!g9(X))return{binary:z,account:{kind:"none"}};if(z7(X,["github_token","oauth_token","access_token","token","selectedUser","currentUser","user"]))return{binary:z,account:{kind:"oauth"}};return{binary:z,account:{kind:"none"}}}function g9(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}function z7(J,z,Z=0){if(Z>4||!g9(J))return!1;for(let[Y,X]of Object.entries(J)){if(z.includes(Y)&&typeof X==="string"&&X.length>0)return!0;if(g9(X)&&z7(X,z,Z+1))return!0}return!1}var rY,Xq=null;var QY=C(()=>{S1();aV();rV();sV();WG();rY={readFile(J){return eV(J)},env(J){return process.env[J]},home(){return QR()},findClaudeBinary(){return $V()},findCodexBinary(){return pV()},findCopilotBinary(){return oV()}}});function Z7(J){if(typeof J==="string")return J.length>0?[{type:"text",text:J}]:[];if(!Array.isArray(J))return[];let z=[];for(let Z of J){if(typeof Z==="string"){if(Z.length>0)z.push({type:"text",text:Z});continue}if(!Z||typeof Z!=="object")continue;let Y=Z;if(Y.type==="text"&&typeof Y.text==="string"){z.push({type:"text",text:Y.text});continue}if(Y.type==="tool_use"){z.push({type:"tool_call",callId:typeof Y.id==="string"?Y.id:"",name:typeof Y.name==="string"?Y.name:"",input:Y.input});continue}if(Y.type==="tool_result"){z.push({type:"tool_result",callId:typeof Y.tool_use_id==="string"?Y.tool_use_id:"",output:Y.content,isError:Y.is_error===!0});continue}if(Y.type==="thinking"&&typeof Y.thinking==="string")z.push({type:"thinking",text:Y.thinking})}return z}function Y7(J){return J.isMeta===!0||J.isCompactSummary===!0}function X7(J){if(J.length===0)return!1;for(let z of J){if(z.type!=="text")return!1;let Z=z.text.trim();if(!Z.startsWith("<command-name>")&&!Z.startsWith("<command-message>")&&!Z.startsWith("<local-command"))return!1}return!0}import{appendFile as gh,mkdir as Nh,readdir as N9,stat as WR,unlink as Ch}from"fs/promises";import{homedir as G7}from"os";import jq from"path";function UR(J){return J.replace(/[/.]/g,"-")}async function VG(J){if(!J)return[];let z=jq.join(G7(),".claude","projects",UR(J)),Z;try{Z=await N9(z)}catch{return[]}let Y=[];for(let X of Z){if(!X.endsWith(".jsonl"))continue;let G=jq.join(z,X),q=0;try{q=(await WR(G)).mtimeMs}catch{}Y.push({sessionId:X.slice(0,-6),path:G,mtimeMs:q})}return Y.sort((X,G)=>G.mtimeMs-X.mtimeMs),Y}async function Q7(J){return(await VG(J))[0]?.mtimeMs??0}async function q7(J,z=VR){let Z=z.projectsDir(),Y=await z.readdir(Z);for(let X of Y){let G=jq.join(Z,X,`${J}.jsonl`),q;try{q=await z.readFile(G)}catch{continue}return KR(DR(q,J))}return[]}function KR(J){return J.map((z,Z)=>({msg:z,idx:Z})).sort((z,Z)=>{if(z.msg.timestamp<Z.msg.timestamp)return-1;if(z.msg.timestamp>Z.msg.timestamp)return 1;return z.idx-Z.idx}).map((z)=>z.msg)}function DR(J,z){let Z=[];for(let Y of J.split(`
22
+ `)){let X=Y.trim();if(!X)continue;if(!SZ(X))continue;let G;try{G=JSON.parse(X)}catch{continue}if(!C9(G))continue;let q=LR(G,z);if(q)Z.push(q)}return Z}function LR(J,z){if(Y7(J))return null;let Z=C9(J.message)?J.message:J,Y=Z.role;if(Y!=="user"&&Y!=="assistant"&&Y!=="system")return null;if(!("content"in Z))return null;let X=Z7(Z.content);if(Y==="user"&&X7(X))return null;let G=typeof J.timestamp==="string"?J.timestamp:new Date().toISOString(),q=typeof J.sessionId==="string"?J.sessionId:z,H=MR(Z.usage);return H?{role:Y,blocks:X,timestamp:G,sessionId:q,usage:H}:{role:Y,blocks:X,timestamp:G,sessionId:q}}function MR(J){if(!C9(J))return;let z=typeof J.input_tokens==="number"?J.input_tokens:void 0,Z=typeof J.output_tokens==="number"?J.output_tokens:void 0;if(z===void 0||Z===void 0)return;let Y=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:Z,...Y!==void 0?{cache_read_input_tokens:Y}:{},...X!==void 0?{cache_creation_input_tokens:X}:{}}}function C9(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}var VR;var b9=C(()=>{WG();VR={projectsDir(){return jq.join(G7(),".claude","projects")},async readdir(J){try{return await N9(J)}catch{return[]}},async readFile(J){return await pY(J)},async pathExists(J){try{return await N9(J),!0}catch{return!1}}}});import{fileURLToPath as j7}from"url";function u1(){if(import.meta.url.endsWith(".js"))return["kobe"];let z=j7(new URL("./index.ts",import.meta.url)),Z=j7(import.meta.resolve("@opentui/solid/preload"));return[process.execPath,"--preload",Z,"--conditions=browser",z]}var GZ=()=>{};function KG(J){return`kobe-hidden-${J.replace(/[^A-Za-z0-9_-]/g,"")||"session"}`}function W7(J){let z=Number.parseInt(J.replace(/^@/,""),10);return Number.isFinite(z)&&z>=0?1000+z:1000}function S9(J){if(!Number.isFinite(J))return f7;return Math.max(FR,Math.min(OR,Math.round(J)))}function qY(J){if(!Number.isFinite(J))return null;return Math.max(AR,Math.min(RR,Math.round(J)))}function U7(J){let z=Number.parseInt(J[Bq]??"",10),Z=Number.isFinite(z)&&z>0?S9(z):f7,Y=qY(Number.parseInt(J[fq]??"",10)),X=qY(Number.parseInt(J[Wq]??"",10)),G=[];if(Y!==null)G.push("-x",`${Y}%`);if(X!==null)G.push("-y",`${X}%`);return{tasksWidth:Z,rightColumnWidthPct:Y??100-y9,opsHeightPct:X??DG,rightColumnResizeArgs:G}}function z1(J){return iY(J)}function TJ(J){return lY(J)}function xJ(J,z){let X=`${z?k9:""}${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 K7(J){return`trap '' INT; while :; do ${J}; sleep 1; done`}function sY(J,z,Z){return`${J}${z.map(z1).join(" ")} engine-tab-exit --session ${z1(Z)}`}function D7(){return`clear; printf ${z1("\\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 T9(J){let z=typeof J==="number"?J:J==null?Number.NaN:Number.parseInt(J,10);if(!Number.isFinite(z))return gR;return Math.max(NR,Math.min(CR,Math.round(z)))}function bR(J,z){let Z=String(z),Y="\\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 ${Z}; : > "$__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"}' '${Z}';`,'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 L7(J,z,Z){let Y=xJ(J,Z),X=z?.initScript?.trim();if(!X)return Y;let G=T9(z?.timeoutSeconds),q=bR(X,G);if(z?.markerPath){let H=z1(z.markerPath),j=z1(kR(z.markerPath));return k9+[`if [ ! -f ${H} ]; then`,q,`if [ "$__kobe_init_rc" -eq 0 ]; then mkdir -p ${j} && : > ${H}; fi`,"fi",Y].join(`
24
+ `)}return k9+[q,Y].join(`
25
+ `)}function kR(J){let z=J.lastIndexOf("/");return z<=0?".":J.slice(0,z)}function B7(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 M7(J){let z=z1(J.worktree),Z=z1(J.relPath),Y=J.cliInvocation.map(z1).join(" "),X=`cd ${z} && if ! git diff --quiet HEAD -- ${Z} 2>/dev/null; then git diff HEAD -- ${Z} | { delta --paging=always 2>/dev/null || less -R; }; else bat --style=plain --paging=always ${Z} 2>/dev/null || \${PAGER:-less} ${Z} 2>/dev/null || cat ${Z}; fi`;return`${Y} ops --worktree ${z} --preview ${Z} || { ${X}; }`}function F7(J){return`${TJ([...J.cliInvocation,"update-page"])}`}function O7(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 xZ(J,z={}){let Z=[...J,"tasks"];if(z.initialTaskId)Z.push("--initial-task-id",z.initialTaskId);return TJ(Z)}function tY(J){if(J.taskId&&J.claudePaneId){let z=J.cliInvocation.map(z1).join(" "),Z=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)}${Z} || { ${B7(J.cwd)}; }`}return B7(J.cwd)}var f7=32,zz="tasks",HY="claude",Kz="ops",Dz="shell",UG="workspace_aux",I9=4,Lz="@kobe_hidden_shell_pane",yJ="@kobe_hidden_tasks_pane",TZ="@kobe_zen_panes",oY="@kobe_zen",Bq="@kobe_tasks_width",FR=16,OR=120,y9=60,DG=50,fq="@kobe_right_width_pct",Wq="@kobe_ops_height_pct",AR=10,RR=90,V7,k9="trap ':' INT; ",gR=120,NR=5,CR=3600;var Mz=C(()=>{iQ();V7=[Bq,fq,Wq]});function Zz(J){return!!J&&typeof J==="object"&&!Array.isArray(J)}function SR(J){return J.map((z)=>TJ(["hook",z.verb]))}function yR(J,z){if(!Zz(J)||!Array.isArray(J.hooks))return!1;return J.hooks.some((Z)=>Zz(Z)&&typeof Z.command==="string"&&z.some((Y)=>Z.command.includes(Y)))}function g7(J,z=u1()){let Z={};for(let{event:Y,matcher:X,verb:G}of J){let H={hooks:[{type:"command",command:TJ([...z,"hook",G])}]};if(X)H.matcher=X;Z[Y]=[H]}return Z}function Vq(J,z,Z,Y=u1()){let X=SR(Z),{hooks:G,...q}=J,H=Zz(G)?{...G}:{},j=z?g7(Z,Y):{};for(let{event:B}of Z){let f=(Array.isArray(H[B])?H[B]:[]).filter((U)=>!yR(U,X));if(z&&Array.isArray(j[B]))f.push(...j[B]);if(f.length>0)H[B]=f;else delete H[B]}return Object.keys(H).length>0?{...q,hooks:H}:{...q}}function N7(J=u1()){let z=TJ([...J,"hook",R7]);return{[A7]:[{matcher:IR,hooks:[{type:"command",command:z}]}]}}function TR(J){if(!Zz(J)||!Array.isArray(J.hooks))return!1;return J.hooks.some((z)=>Zz(z)&&typeof z.command==="string"&&z.command.includes(R7))}function Uq(J,z,Z=u1()){let{hooks:Y,...X}=J,G=Zz(Y)?{...Y}:{},q=A7,j=(Array.isArray(G[q])?G[q]:[]).filter((B)=>!TR(B));if(z)j.push(...N7(Z)[q]);if(j.length>0)G[q]=j;else delete G[q];return Object.keys(G).length>0?{...X,hooks:G}:{...X}}var A7="PostToolUse",IR="Bash",R7="worktree-created";var x9=C(()=>{GZ();Mz()});import{mkdir as xR,readFile as uR,writeFile as ER}from"fs/promises";import{dirname as wR}from"path";async function PR(J){try{let z=JSON.parse(await uR(J,"utf8"));return Zz(z)?z:{}}catch{return{}}}async function eY(J,z){try{let Z=await PR(J),Y=z(Z);if(JSON.stringify(Y)===JSON.stringify(Z))return;await xR(wR(J),{recursive:!0}),await ER(J,`${JSON.stringify(Y,null,2)}
26
+ `)}catch{}}class LG{supportsHooks(){return!0}activityDetailFromPayload(J,z){return}supportsWorktreeSync(){return!1}async removeWorktreeSyncHook(J){}async installActivityHooks(J){await eY(J,(z)=>Vq(z,!0,this.eventMap))}async removeActivityHooks(J){await eY(J,(z)=>Vq(z,!1,this.eventMap))}async installWorktreeWatchHook(J){await eY(J,(z)=>Uq(z,!0))}async removeWorktreeWatchHook(J){await eY(J,(z)=>Uq(z,!1))}}var u9=C(()=>{x9()});import{homedir as hR}from"os";import{join as vR}from"path";function mR(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 cR(){return vR(hR(),".claude","settings.json")}function nR(J){if(!Zz(J)||!Array.isArray(J.hooks))return!1;return J.hooks.some((z)=>Zz(z)&&typeof z.command==="string"&&z.command.includes(dR))}function iR(J,z){let{hooks:Z,...Y}=J,{WorktreeCreate:X,...G}=Zz(Z)?Z:{},H=(Array.isArray(X)?X:[]).filter((B)=>!nR(B));if(z!==null)H.push({hooks:[{type:"command",command:z}]});let j={...G};if(H.length>0)j.WorktreeCreate=H;return Object.keys(j).length>0?{...Y,hooks:j}:{...Y}}var C7,ah,dR="worktree-created",E9;var b7=C(()=>{u9();x9();C7=[{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"}],ah=C7.map((J)=>J.event);E9=class E9 extends LG{vendor="claude";eventMap=C7;globalSettingsPath(){return cR()}activityDetailFromPayload(J,z){if(J==="turn-failed")return{failure:mR(z.error_type)};if(J==="awaiting-input")return{waiting:"permission"};return}supportsWorktreeSync(){return!0}async removeWorktreeSyncHook(J){await eY(J,(z)=>iR(z,null))}}});function w9(J){if(typeof J==="string")return J.length>0?[{type:"text",text:J}]:[];if(!Array.isArray(J))return[];let z=[];for(let Z of J){if(typeof Z==="string"){if(Z.length>0)z.push({type:"text",text:Z});continue}if(!lR(Z))continue;let Y=typeof Z.type==="string"?Z.type:void 0;if(Y==="input_text"||Y==="output_text"){let X=typeof Z.text==="string"?Z.text:"";if(X.length>0)z.push({type:"text",text:X});continue}if(Y)z.push({type:"text",text:`[codex: ${Y}]`})}return z}function lR(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}function k7(J){if(J.length===0)return!1;for(let z of J){if(z.type!=="text")return!1;let Z=(z.text??"").trim();if(!$R(Z)&&!aR(Z))return!1}return!0}function $R(J){return J.startsWith("<environment_context>")&&J.endsWith("</environment_context>")}function aR(J){return J.startsWith("# AGENTS.md instructions for ")&&J.includes(`
27
27
  <INSTRUCTIONS>
28
- `)&&J.endsWith("</INSTRUCTIONS>")}var U7=()=>{};function D7(J,z={}){let Y=Tj(J.input_tokens,0),Z=Tj(J.cached_input_tokens,0),G=Tj(J.output_tokens,0),X=Math.max(0,Y-Z);if(Y<=0&&G<=0&&Z<=0)return;return{input_tokens:X,output_tokens:G,...Z>0?{cache_read_input_tokens:Z}:{},...FR(z.contextWindowTokens)?{context_window_tokens:z.contextWindowTokens}:{}}}function Tj(J,z){return typeof J==="number"&&Number.isFinite(J)?J:z}function FR(J){return typeof J==="number"&&Number.isFinite(J)&&J>0}import{readdir as MR,stat as OR,unlink as Vh}from"fs/promises";import{homedir as AR}from"os";import HZ from"path";async function wj(J=fZ){let z=J.sessionsDir(),Y=(await J.readdir(z)).sort().reverse(),Z=[];for(let G of Y){let X=HZ.join(z,G),Q=(await J.readdir(X)).sort().reverse();for(let H of Q){let f=HZ.join(X,H),j=(await J.readdir(f)).sort().reverse();for(let V of j){let B=HZ.join(f,V),K=(await J.readdir(B)).filter((L)=>L.startsWith("rollout-")&&L.endsWith(".jsonl"));K.sort().reverse();for(let L of K)if(Z.push(HZ.join(B,L)),Z.length>=L7){if(!F7)F7=!0,console.warn(`[codex history] rollout scan truncated at ${L7} files; older sessions may be omitted`);return Z}}}}return Z}async function RR(J,z=fZ){if(!J)return;let Y=J.toLowerCase(),Z=await wj(z);for(let G of Z)if(HZ.basename(G).match(R7)?.[1]?.toLowerCase()===Y)return G;return}function gR(J){for(let z of J.split(`
29
- `)){let Y=z.trim();if(!Y)continue;if(!kY(Y))return"";try{let Z=JSON.parse(Y);if(Z.type==="session_meta")return Z.payload?.cwd??""}catch{}return""}return""}async function g7(J,z){let Y=M7.get(z);if(!Y)Y=new Map,M7.set(z,Y);let Z=Y.get(J);if(Z!==void 0)return Z;let G;try{G=await z.readFile(J)}catch{return null}let X=gR(G);if(X)Y.set(J,X);return X}async function N7(J,z=fZ){if(!J)return[];let Y=await wj(z),Z=[],G=0;for(let X of Y){if(G>=NR)break;if(G++,await g7(X,z)!==J)continue;let Q=HZ.basename(X).match(R7)?.[1];if(Q)Z.push(Q)}return Z.reverse()}async function Pj(J,z=fZ){if(!J)return null;let Y=await wj(z),Z=0;for(let G of Y){if(Z>=CR)break;if(Z++,await g7(G,z)!==J)continue;try{return{path:G,mtimeMs:(await z.stat(G)).mtimeMs}}catch{}}return null}async function C7(J,z=fZ){return(await Pj(J,z))?.mtimeMs??0}async function k7(J,z=fZ){return(await kR(J,z)).messages}async function kR(J,z=fZ){let Y=await RR(J,z);if(!Y)return{messages:[]};let Z;try{Z=await z.readFile(Y)}catch{return{messages:[]}}let G=bR(SR(Z,J)),X=uR(Z);return{messages:G,...X?{usageMetrics:X}:{}}}function bR(J){return J.map((z,Y)=>({msg:z,idx:Y})).sort((z,Y)=>{if(z.msg.timestamp<Y.msg.timestamp)return-1;if(z.msg.timestamp>Y.msg.timestamp)return 1;return z.idx-Y.idx}).map((z)=>z.msg)}function SR(J,z){let Y=[];for(let Z of J.split(`
30
- `)){let G=Z.trim();if(!G)continue;if(!kY(G))continue;let X;try{X=JSON.parse(G)}catch{continue}if(!DX(X))continue;if(X.type!=="response_item")continue;let Q=DX(X.payload)?X.payload:void 0;if(!Q)continue;let H=typeof X.timestamp==="string"?X.timestamp:new Date().toISOString(),f=IR(Q,H,z);if(f)Y.push(f)}return Y}function IR(J,z,Y){if(J.type==="message"){let Z=J.role;if(Z!=="user"&&Z!=="assistant"&&Z!=="system")return;let G=yj(J.content);if(Z==="user"&&K7(G))return;return{role:Z,blocks:G,timestamp:z,sessionId:Y}}if(J.type==="reasoning")return yR(J,z,Y);if(J.type==="function_call")return xj(J,z,Y,{name:Ej(J.name,"function_call"),input:uj(J.arguments)});if(J.type==="custom_tool_call")return xj(J,z,Y,{name:Ej(J.name,"custom_tool_call"),input:uj(J.input)});if(J.type==="tool_search_call")return xj(J,z,Y,{name:"tool_search_call",input:Wq(J,["type","call_id","status"])});if(J.type==="function_call_output"||J.type==="custom_tool_call_output")return O7(J,z,Y,uj(J.output));if(J.type==="tool_search_output")return O7(J,z,Y,Wq(J,["type","call_id"]));if(J.type==="web_search_call"||J.type==="image_generation_call"||J.type==="local_shell_call")return TR(J,z,Y);return}function yR(J,z,Y){let Z=xR(J);if(Z.length===0)return;return{role:"assistant",blocks:[{type:"thinking",text:Z}],timestamp:z,sessionId:Y}}function xj(J,z,Y,Z){let G=typeof J.call_id==="string"?J.call_id:void 0;if(!G)return;return{role:"assistant",blocks:[{type:"tool_call",callId:G,name:Z.name,input:Z.input}],timestamp:z,sessionId:Y}}function O7(J,z,Y,Z){let G=typeof J.call_id==="string"?J.call_id:void 0;if(!G)return;return{role:"user",blocks:[{type:"tool_result",callId:G,output:Z,isError:!1}],timestamp:z,sessionId:Y}}function TR(J,z,Y){let Z=typeof J.type==="string"?J.type:"tool",G=typeof J.call_id==="string"&&J.call_id.length>0?J.call_id:`${Z}:${z}`,X=Ej(J.name,Z),Q=Wq(J,["type","call_id","status"]),H=Wq(J,["type","call_id"]);return{role:"assistant",timestamp:z,sessionId:Y,blocks:[{type:"tool_call",callId:G,name:X,input:Q},{type:"tool_result",callId:G,output:H,isError:!1}]}}function xR(J){let z=A7(J.content);if(z.length>0)return z;let Y=typeof J.text==="string"?J.text:"";if(Y.length>0)return Y;return A7(J.summary)}function A7(J){if(typeof J==="string")return J;if(!Array.isArray(J))return"";let z=[];for(let Y of J){if(typeof Y==="string"){z.push(Y);continue}if(!DX(Y))continue;let Z=typeof Y.text==="string"?Y.text:"";if(Z.length>0)z.push(Z)}return z.join("")}function Wq(J,z){let Y={};for(let[Z,G]of Object.entries(J))if(!z.includes(Z))Y[Z]=G;return Y}function Ej(J,z){return typeof J==="string"&&J.length>0?J:z}function uj(J){if(typeof J!=="string")return J;try{return JSON.parse(J)}catch{return J}}function uR(J){let z,Y=null;for(let Z of J.split(`
31
- `)){let G=Z.trim();if(!G)continue;if(!kY(G))continue;let X;try{X=JSON.parse(G)}catch{continue}if(!DX(X))continue;let Q=typeof X.timestamp==="string"?ER(X.timestamp):null;if(X.type==="response_item")continue;if(X.type!=="turn.completed")continue;let H=DX(X.usage)?X.usage:void 0;if(!H)continue;let f=D7(H);if(!f)continue;if(Q!==null&&(Y===null||Q>Y))Y=Q,z=f;else if(Y===null)z=f}return z}function ER(J){let z=new Date(J).getTime();return Number.isFinite(z)?z:null}function DX(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}var fZ,L7=5000,F7=!1,R7,M7,NR=200,CR=12;var hj=C(()=>{jX();U7();fZ={sessionsDir(){return HZ.join(AR(),".codex","sessions")},async readdir(J){try{return await MR(J)}catch{return[]}},async readFile(J){return await aZ(J)},stat:OR};R7=/([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})\.jsonl$/i;M7=new WeakMap});import{homedir as wR}from"os";import{join as PR}from"path";function hR(){return PR(wR(),".codex","hooks.json")}var S7,gh,vj;var I7=C(()=>{Sj();S7=[{event:"SessionStart",verb:"session-start"},{event:"UserPromptSubmit",verb:"turn-start"},{event:"Stop",verb:"turn-complete"}],gh=S7.map((J)=>J.event);vj=class vj extends UX{vendor="codex";eventMap=S7;globalSettingsPath(){return hR()}}});function y7(J){if(!Vq(J))return;let z=Vq(J.modelMetrics)?J.modelMetrics:void 0;if(!z)return;let Y=0,Z=0,G=0;for(let Q of Object.values(z)){if(!Vq(Q)||!Vq(Q.usage))continue;Y+=Kq(Q.usage.inputTokens,0),Z+=Kq(Q.usage.outputTokens,0),G+=Kq(Q.usage.cacheReadTokens,0)}let X=Kq(J.currentTokens,0);if(Y===0&&Z===0&&G===0&&X===0)return;return{input_tokens:Y,output_tokens:Z,...G>0?{cache_read_input_tokens:G}:{},...X>0?{context_tokens:X}:{}}}function Vq(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}function Kq(J,z){return typeof J==="number"&&Number.isFinite(J)?J:z}import{readdir as vR,rm as mR,stat as cR}from"fs/promises";import{homedir as dR}from"os";import yY from"path";async function cj(J=jZ){let z=yY.join(J.copilotDir(),"session-state");return(await J.readdir(z)).map((Z)=>yY.join(z,Z))}async function T7(J,z=jZ){let Y=[];for(let Z of await cj(z)){let G=await dj(Z,z);if(G.cwd!==J)continue;Y.push({id:G.id??yY.basename(Z),updatedAt:G.updatedAt??""})}return Y.sort((Z,G)=>Z.updatedAt.localeCompare(G.updatedAt)).map((Z)=>Z.id)}async function x7(J,z=jZ){if(!J)return 0;let Y=0;for(let Z of await cj(z)){if((await dj(Z,z)).cwd!==J)continue;try{let{mtimeMs:X}=await z.stat(yY.join(Z,"events.jsonl"));if(X>Y)Y=X}catch{}}return Y}async function nR(J,z=jZ){let Y=await iR(J,z);if(!Y)return{messages:[]};let Z=await z.readFile(yY.join(Y,"events.jsonl")).catch(()=>""),G=$R(Z,J);return{messages:G.messages,...G.usageMetrics?{usageMetrics:G.usageMetrics}:{}}}async function u7(J,z=jZ){return(await nR(J,z)).messages}async function iR(J,z=jZ){for(let Y of await cj(z)){if(yY.basename(Y)===J)return Y;let Z=await dj(Y,z);if(Z.id===J||Z.name?.toLowerCase()===J.toLowerCase())return Y}return}async function dj(J,z=jZ){let Y=await z.readFile(yY.join(J,"workspace.yaml")).catch(()=>"");return lR(Y)}function lR(J){let z={};for(let Y of J.split(`
32
- `)){let Z=Y.match(/^([A-Za-z_]+):\s*(.*)$/);if(!Z)continue;let G=Z[1],X=Z[2]??"";if(X.startsWith('"')&&X.endsWith('"'))X=X.slice(1,-1).replace(/\\"/g,'"');z[G]=X}return{id:z.id,cwd:z.cwd,name:z.name,updatedAt:z.updated_at,createdAt:z.created_at}}function $R(J,z){let Y=[],Z=new Map,G=z,X,Q=null;for(let H of J.split(`
33
- `)){let f=H.trim();if(!f)continue;if(!kY(f))continue;let j;try{j=JSON.parse(f)}catch{continue}if(!mj(j)||typeof j.type!=="string")continue;let V=typeof j.timestamp==="string"?j.timestamp:new Date().toISOString(),B=mj(j.data)?j.data:{};if(j.type==="session.start"){let K=typeof B.sessionId==="string"?B.sessionId:void 0;if(K)G=K;continue}if(j.type==="user.message"){let K=typeof B.content==="string"?B.content:"";if(!K)continue;if(!Q)Q=Buffer.from(K.slice(0,aR),"utf8").toString("utf8");Y.push({role:"user",blocks:[{type:"text",text:K}],timestamp:V,sessionId:G});continue}if(j.type==="assistant.message"){let K=[],L=typeof B.content==="string"?B.content:"";if(L)K.push({type:"text",text:L});let A=Array.isArray(B.toolRequests)?B.toolRequests:[];for(let O of A){if(!mj(O))continue;let R=typeof O.id==="string"?O.id:typeof O.toolCallId==="string"?O.toolCallId:"tool",u=typeof O.name==="string"?O.name:typeof O.toolName==="string"?O.toolName:"tool";K.push({type:"tool_call",callId:R,name:u,input:O.arguments??{}})}if(K.length>0)Y.push({role:"assistant",blocks:K,timestamp:V,sessionId:G});continue}if(j.type==="tool.execution_start"){let K=typeof B.toolCallId==="string"?B.toolCallId:void 0,L=typeof B.toolName==="string"?B.toolName:"tool";if(K)Z.set(K,L);continue}if(j.type==="tool.execution_complete"){let K=typeof B.toolCallId==="string"?B.toolCallId:void 0;if(!K)continue;let L=Z.get(K)??(typeof B.toolName==="string"?B.toolName:"tool"),A=B.result??(B.success===!1?{success:!1}:void 0);Y.push({role:"assistant",blocks:[{type:"tool_result",callId:K,output:A,isError:B.success===!1}],timestamp:V,sessionId:G});continue}if(j.type==="session.shutdown")X=y7(B)}return{messages:Y,usageMetrics:X,firstUserMessage:Q}}function mj(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}var jZ,aR=200;var E7=C(()=>{jX();jZ={copilotDir(){let J=process.env.COPILOT_HOME?.trim();if(J)return J;return yY.join(dR(),".copilot")},async readdir(J){try{return await vR(J)}catch{return[]}},async readFile(J){return await aZ(J)},stat:cR,async rm(J){await mR(J,{recursive:!0,force:!0})}}});function nj(J){return i1(J).createHookAdapter()}class Uq{vendor;constructor(J){this.vendor=J}supportsHooks(){return!1}globalSettingsPath(){return""}activityDetailFromPayload(){return}async installActivityHooks(){}async removeActivityHooks(){}supportsWorktreeSync(){return!1}async removeWorktreeSyncHook(){}async installWorktreeWatchHook(){}async removeWorktreeWatchHook(){}}var ij=C(()=>{QY()});import{readFile as w7}from"fs/promises";class Dq{supportsCompletionMarkers(){return!0}}function LX(J){return i1(J).createTurnDetector()}function oR(J,z="claude",Y=0){let Z=null,G=0;for(let X of J.split(`
34
- `)){G++;let Q=P7(X);if(!Q)continue;let H=v7(Q.message)?Q.message:Q;if(H.role!=="assistant")continue;if(!("content"in H))continue;let f=h7(Q,Y),j={id:`claude:${z}:${f}:${G}`,timestampMs:f,source:"claude"};if(!Z||j.timestampMs>=Z.timestampMs)Z=j}return Z}function sR(J,z="codex"){let Y=null,Z=0;for(let G of J.split(`
35
- `)){Z++;let X=P7(G);if(!X||X.type!=="turn.completed")continue;let Q=h7(X,0),H={id:`codex:${z}:${Q}:${Z}`,timestampMs:Q,source:"codex"};if(!Y||H.timestampMs>=Y.timestampMs)Y=H}return Y}function P7(J){let z=J.trim();if(!z)return null;try{let Y=JSON.parse(z);return v7(Y)?Y:null}catch{return null}}function h7(J,z){let Y=typeof J.timestamp==="string"?Date.parse(J.timestamp):Number.NaN;return Number.isFinite(Y)?Y:z}function v7(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}var pR,lj,rR,$j,Lq;var Fq=C(()=>{Fj();hj();QY();pR={listSessionFiles:(J)=>BX(J),readFile:(J)=>w7(J,"utf8")};lj=class lj extends Dq{deps;vendor="claude";cache=new Map;constructor(J=pR){super();this.deps=J}async latestCompletion(J){let z=await this.deps.listSessionFiles(J),Y=null,Z=new Map;for(let G of z.slice(0,4)){let X=this.cache.get(G.path),Q;if(X&&G.mtimeMs>0&&X.mtimeMs===G.mtimeMs)Q=X.marker;else{let H=await this.deps.readFile(G.path).catch(()=>"");Q=oR(H,G.path,G.mtimeMs)}if(Z.set(G.path,{mtimeMs:G.mtimeMs,marker:Q}),Q&&(!Y||Q.timestampMs>Y.timestampMs))Y=Q}return this.cache=Z,Y}};rR={findLatestRollout:(J)=>Pj(J),readFile:(J)=>w7(J,"utf8")};$j=class $j extends Dq{deps;vendor="codex";cache=null;constructor(J=rR){super();this.deps=J}async latestCompletion(J){if(!J)return null;let z=await this.deps.findLatestRollout(J);if(!z)return null;if(this.cache&&this.cache.path===z.path&&z.mtimeMs>0&&this.cache.mtimeMs===z.mtimeMs)return this.cache.marker;let Y=await this.deps.readFile(z.path).catch(()=>"");if(!Y)return null;let Z=sR(Y,z.path);return this.cache={path:z.path,mtimeMs:z.mtimeMs,marker:Z},Z}};Lq=class Lq extends Dq{vendor;constructor(J){super();this.vendor=J}supportsCompletionMarkers(){return!1}async latestCompletion(){return null}}});function Zg(J){return{vendor:J,builtin:!1,displayName:J,defaultCommand:[J],history:tR,detectAccount:async()=>({binary:{found:!1,error:"custom engine: kobe has no account detector for it"},account:{kind:"none"}}),createHookAdapter:()=>new Uq(J),createTurnDetector:()=>new Lq(J)}}function i1(J){return jJ(J)?Yg[J]:Zg(J)}var tR,eR,Jg,zg,Yg;var QY=C(()=>{_1();XZ();Fj();V7();hj();I7();E7();ij();Fq();tR={async listSessionIdsForWorktree(){return[]},async readHistory(){return[]},async latestTranscriptMtimeForWorktree(){return 0}},eR={async listSessionIdsForWorktree(J){return[...await BX(J)].sort((Y,Z)=>Y.mtimeMs-Z.mtimeMs).map((Y)=>Y.sessionId)},readHistory:(J)=>pV(J),latestTranscriptMtimeForWorktree:(J)=>_V(J)},Jg={listSessionIdsForWorktree:(J)=>N7(J),readHistory:(J)=>k7(J),latestTranscriptMtimeForWorktree:(J)=>C7(J)},zg={listSessionIdsForWorktree:(J)=>T7(J),readHistory:(J)=>u7(J),latestTranscriptMtimeForWorktree:(J)=>x7(J)},Yg={claude:{vendor:"claude",builtin:!0,displayName:"Claude",defaultCommand:["claude"],history:eR,detectAccount:(J)=>Yq(J),createHookAdapter:()=>new Ij,createTurnDetector:()=>new lj},codex:{vendor:"codex",builtin:!0,displayName:"Codex",defaultCommand:["codex"],effortLevels:["none","low","medium","high","xhigh"],history:Jg,detectAccount:(J)=>Zq(J),createHookAdapter:()=>new vj,createTurnDetector:()=>new $j},copilot:{vendor:"copilot",builtin:!0,displayName:"Copilot",defaultCommand:["copilot"],history:zg,detectAccount:(J)=>Gq(J),createHookAdapter:()=>new Uq("copilot"),createTurnDetector:()=>new Lq("copilot")}}});async function tZ(J,z){if(!z)return 0;return i1(J).history.latestTranscriptMtimeForWorktree(z)}var Mq=C(()=>{QY()});function m7(J){return typeof J==="string"&&Gg.includes(J)}var FX=(J)=>J,o1="claude",Gg;var zz=C(()=>{Gg=["backlog","in_progress","in_review","done","canceled","error"]});function Oq(J){return Xg.includes(J)}function c7(J,z,Y){switch(z){case"session-start":case"session-end":return"idle";case"turn-start":return"running";case"turn-complete":return"turn_complete";case"turn-failed":return Y?.failure==="rate_limit"||Y?.failure==="billing"?"rate_limited":"error";case"awaiting-input":return Y?.waiting==="permission"?"permission_needed":"running"}}var Xg;var Aq=C(()=>{Xg=["session-start","turn-start","turn-complete","turn-failed","awaiting-input","session-end"]});function Qg(){let J=process.env.KOBE_ENGINE_STATE_TTL_MS;if(J===void 0)return d7;let z=Number(J);return Number.isFinite(z)&&z>0?z:d7}class aj{bus;staleMs;now;livenessAt;activity=new Map;constructor(J,z=Qg(),Y=()=>Date.now(),Z=()=>Promise.resolve(void 0)){this.bus=J;this.staleMs=z;this.now=Y;this.livenessAt=Z}report(J,z,Y){let Z=this.activity.get(J);if(Z?.lapse)clearTimeout(Z.lapse);let G=c7(Z?.state,z,Y),X=this.now(),Q={state:G,detail:Y,at:X};if(G!=="idle"&&G!=="turn_complete")Q.lapse=this.armLapse(J,X);this.activity.set(J,Q),this.bus.publish("engine-state",this.payload(J,Q))}armLapse(J,z){let Y=setTimeout(()=>{this.handleLapse(J,z)},this.staleMs);return Y.unref?.(),Y}async handleLapse(J,z){let Y=this.activity.get(J);if(!Y||Y.at!==z)return;let Z;try{Z=await this.livenessAt(J)}catch{Z=void 0}let G=this.activity.get(J);if(!G||G.at!==z)return;if(Z!==void 0&&Z>this.now()-this.staleMs){G.lapse=this.armLapse(J,z);return}this.publishIdle(J)}clearTask(J){let z=this.activity.get(J);if(z?.lapse)clearTimeout(z.lapse);if(this.activity.delete(J),z)this.bus.publish("engine-state",{taskId:J,state:"idle",at:this.now()})}snapshotByTask(){let J={};for(let[z,Y]of this.activity)J[z]=this.payload(z,Y);return J}currentNonIdle(){let J=[];for(let[z,Y]of this.activity)if(Y.state!=="idle")J.push(this.payload(z,Y));return J}close(){for(let J of this.activity.values())if(J.lapse)clearTimeout(J.lapse);this.activity.clear()}publishIdle(J){let z={state:"idle",at:this.now()};this.activity.set(J,z),this.bus.publish("engine-state",this.payload(J,z))}payload(J,z){return{taskId:J,state:z.state,...z.detail?{detail:z.detail}:{},at:z.at}}}var d7=600000;var n7=C(()=>{Aq()});function i7(J){if(typeof J!=="string")return"";let z=J.replace(/\s+/g," ").trim();if(z.length===0)return"";let Y=[...z];if(Y.length<=40)return z;return`${Y.slice(0,40).join("")}\u2026`}function Rq(J,z){let Y=J.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,32),Z=z.slice(-6).toLowerCase();return`kobe/${Y||"task"}-${Z}`}function l7(J){let z=J.find((G)=>G.role==="user");if(!z)return"";let Y=z.blocks.filter((G)=>G.type==="text").map((G)=>G.text).join(" "),Z=i7(Y);return Z.length>0?Buffer.from(Z,"utf8").toString("utf8"):Z}async function eZ(J,z=o1){if(!J)return"";let{history:Y}=i1(z),Z=await Y.listSessionIdsForWorktree(J);for(let G of Z.slice(0,qg)){let X=l7(await Y.readHistory(G));if(X)return X}return""}async function $7(J,z){if(!z)return"";try{return l7(await i1(J).history.readHistory(z))}catch{return""}}var qg=8;var gq=C(()=>{QY();zz()});function a7(J){let z=String(J),Y=z.length-1;return x1.context.id+(Y?String.fromCharCode(96+Y):"")+z}function rj(J){x1.context=J}function Hg(){return{...x1.context,id:x1.getNextContextId(),count:0}}function BZ(J,z){let Y=O1,Z=$0,G=J.length===0,X=z===void 0?Z:z,Q=G?{owned:null,cleanups:null,context:null,owner:null}:{owned:null,cleanups:null,context:X?X.context:null,owner:X},H=G?()=>J(()=>{throw Error("Dispose method must be an explicit argument to createRoot function")}):()=>J(()=>t1(()=>TY(Q)));Mz.afterCreateOwner&&Mz.afterCreateOwner(Q),$0=Q,O1=null;try{return xJ(H,!0)}finally{O1=Y,$0=Z}}function p(J,z){z=z?Object.assign({},bq,z):bq;let Y={value:J,observers:null,observerSlots:null,comparator:z.equals||void 0};{if(z.name)Y.name=z.name;if(z.internal)Y.internal=!0;else if(JK(Y),Mz.afterCreateSignal)Mz.afterCreateSignal(Y)}let Z=(G)=>{if(typeof G==="function")if(f0&&f0.running&&f0.sources.has(Y))G=G(Y.tValue);else G=G(Y.value);return sj(Y,G)};return[zK.bind(Y),Z]}function _7(J,z,Y){let Z=YG(J,z,!0,vJ,Y);if(zG&&f0&&f0.running)s1.push(Z);else VZ(Z)}function wz(J,z,Y){let Z=YG(J,z,!1,vJ,Y);if(zG&&f0&&f0.running)s1.push(Z);else VZ(Z)}function _0(J,z,Y){e7=Ag;let Z=YG(J,z,!1,vJ,Y),G=AX&&mJ(AX);if(G)Z.suspense=G;if(!Y||!Y.render)Z.user=!0;FJ?FJ.push(Z):VZ(Z)}function U0(J,z,Y){Y=Y?Object.assign({},bq,Y):bq;let Z=YG(J,z,!0,0,Y);if(Z.observers=null,Z.observerSlots=null,Z.comparator=Y.equals||void 0,zG&&f0&&f0.running)Z.tState=vJ,s1.push(Z);else VZ(Z);return zK.bind(Z)}function Kg(J){return J&&typeof J==="object"&&"then"in J}function WZ(J,z,Y){let Z,G,X;if(typeof z==="function")Z=J,G=z,X=Y||{};else Z=!0,G=J,X=z||{};let Q=null,H=_j,f=null,j=!1,V=!1,B="initialValue"in X,K=typeof Z==="function"&&U0(Z),L=new Set,[A,O]=(X.storage||p)(X.initialValue),[R,u]=p(void 0),[P,S]=p(void 0,{equals:!1}),[g,M]=p(B?"ready":"unresolved");if(x1.context){if(f=x1.getNextContextId(),X.ssrLoadFrom==="initial")H=X.initialValue;else if(x1.load&&x1.has(f))H=x1.load(f)}function T(z0,q0,o,B0){if(Q===z0){if(Q=null,B0!==void 0&&(B=!0),(z0===H||q0===H)&&X.onHydrated)queueMicrotask(()=>X.onHydrated(B0,{value:q0}));if(H=_j,f0&&z0&&j)f0.promises.delete(z0),j=!1,xJ(()=>{f0.running=!0,d(q0,o)},!1);else d(q0,o)}return q0}function d(z0,q0){xJ(()=>{if(q0===void 0)O(()=>z0);M(q0!==void 0?"errored":B?"ready":"unresolved"),u(q0);for(let o of L.keys())o.decrement();L.clear()},!1)}function i(){let z0=AX&&mJ(AX),q0=A(),o=R();if(o!==void 0&&!Q)throw o;if(O1&&!O1.user&&z0)_7(()=>{if(P(),Q){if(z0.resolved&&f0&&j)f0.promises.add(Q);else if(!L.has(z0))z0.increment(),L.add(z0)}});return q0}function J0(z0=!0){if(z0!==!1&&V)return;V=!1;let q0=K?K():Z;if(j=f0&&f0.running,q0==null||q0===!1){T(Q,t1(A));return}if(f0&&Q)f0.promises.delete(Q);let o,B0=H!==_j?H:t1(()=>{try{return G(q0,{value:A(),refetching:z0})}catch(g0){o=g0}});if(o!==void 0){T(Q,void 0,kq(o),q0);return}else if(!Kg(B0))return T(Q,B0,void 0,q0),B0;if(Q=B0,"v"in B0){if(B0.s===1)T(Q,B0.v,void 0,q0);else T(Q,void 0,kq(B0.v),q0);return B0}return V=!0,queueMicrotask(()=>V=!1),xJ(()=>{M(B?"refreshing":"pending"),S()},!1),B0.then((g0)=>T(B0,g0,void 0,q0),(g0)=>T(B0,void 0,kq(g0),q0))}Object.defineProperties(i,{state:{get:()=>g()},error:{get:()=>R()},loading:{get(){let z0=g();return z0==="pending"||z0==="refreshing"}},latest:{get(){if(!B)return i();let z0=R();if(z0&&!Q)throw z0;return A()}}});let E=$0;if(K)_7(()=>(E=$0,J0(!1)));else J0(!1);return[i,{refetch:(z0)=>Dg(E,()=>J0(z0)),mutate:O}]}function Tq(J){return xJ(J,!1)}function t1(J){if(!JG&&O1===null)return J();let z=O1;O1=null;try{if(JG)return JG.untrack(J);return J()}finally{O1=z}}function BJ(J,z,Y){let Z=Array.isArray(J),G,X=Y&&Y.defer;return(Q)=>{let H;if(Z){H=Array(J.length);for(let j=0;j<J.length;j++)H[j]=J[j]()}else H=J();if(X)return X=!1,Q;let f=t1(()=>z(H,G,Q));return G=H,f}}function QJ(J){_0(()=>t1(J))}function T1(J){if($0===null)console.warn("cleanups created outside a `createRoot` or `render` will never be run");else if($0.cleanups===null)$0.cleanups=[J];else $0.cleanups.push(J);return J}function Ug(J,z){if(MX||(MX=Symbol("error")),$0=YG(void 0,void 0,!0),$0.context={...$0.context,[MX]:[z]},f0&&f0.running)f0.sources.add($0);try{return J()}catch(Y){gX(Y)}finally{$0=$0.owner}}function xq(){return O1}function Dg(J,z){let Y=$0,Z=O1;$0=J,O1=null;try{return xJ(z,!0)}catch(G){gX(G)}finally{$0=Y,O1=Z}}function Lg(J){if(f0&&f0.running)return J(),f0.done;let z=O1,Y=$0;return Promise.resolve().then(()=>{O1=z,$0=Y;let Z;if(zG||AX)Z=f0||(f0={sources:new Set,effects:[],promises:new Set,disposed:new Set,queue:new Set,running:!0}),Z.done||(Z.done=new Promise((G)=>Z.resolve=G)),Z.running=!0;return xJ(J,!1),O1=$0=null,Z?Z.done:void 0})}function r7(J,z){let Y=YG(()=>t1(()=>{return Object.assign(J,{[Wg]:!0}),J(z)}),void 0,!0,0);return Y.props=z,Y.observers=null,Y.observerSlots=null,Y.name=J.name,Y.component=J,VZ(Y),Y.tValue!==void 0?Y.tValue:Y.value}function JK(J){if($0){if($0.sourceMap)$0.sourceMap.push(J);else $0.sourceMap=[J];J.graph=$0}if(Mz.afterRegisterGraph)Mz.afterRegisterGraph(J)}function Pz(J,z){let Y=Symbol("context");return{id:Y,Provider:Rg(Y,z),defaultValue:J}}function mJ(J){let z;return $0&&$0.context&&(z=$0.context[J.id])!==void 0?z:J.defaultValue}function Fg(J){let z=U0(J),Y=U0(()=>oj(z()),void 0,{name:"children"});return Y.toArray=()=>{let Z=Y();return Array.isArray(Z)?Z:Z!=null?[Z]:[]},Y}function zK(){let J=f0&&f0.running;if(this.sources&&(J?this.tState:this.state))if((J?this.tState:this.state)===vJ)VZ(this);else{let z=s1;s1=null,xJ(()=>Sq(this),!1),s1=z}if(O1){let z=this.observers;if(!z||z[z.length-1]!==O1){let Y=z?z.length:0;if(!O1.sources)O1.sources=[this],O1.sourceSlots=[Y];else O1.sources.push(this),O1.sourceSlots.push(Y);if(!z)this.observers=[O1],this.observerSlots=[O1.sources.length-1];else z.push(O1),this.observerSlots.push(O1.sources.length-1)}}if(J&&f0.sources.has(this))return this.tValue;return this.value}function sj(J,z,Y){let Z=f0&&f0.running&&f0.sources.has(J)?J.tValue:J.value;if(!J.comparator||!J.comparator(Z,z)){if(f0){let G=f0.running;if(G||!Y&&f0.sources.has(J))f0.sources.add(J),J.tValue=z;if(!G)J.value=z}else J.value=z;if(J.observers&&J.observers.length)xJ(()=>{for(let G=0;G<J.observers.length;G+=1){let X=J.observers[G],Q=f0&&f0.running;if(Q&&f0.disposed.has(X))continue;if(Q?!X.tState:!X.state){if(X.pure)s1.push(X);else FJ.push(X);if(X.observers)ZK(X)}if(!Q)X.state=vJ;else X.tState=vJ}if(s1.length>1e6){if(s1=[],fg)throw Error("Potential Infinite Loop Detected.");throw Error()}},!1)}return z}function VZ(J){if(!J.fn)return;TY(J);let z=yq;if(o7(J,f0&&f0.running&&f0.sources.has(J)?J.tValue:J.value,z),f0&&!f0.running&&f0.sources.has(J))queueMicrotask(()=>{xJ(()=>{f0&&(f0.running=!0),O1=$0=J,o7(J,J.tValue,z),O1=$0=null},!1)})}function o7(J,z,Y){let Z,G=$0,X=O1;O1=$0=J;try{Z=J.fn(z)}catch(Q){if(J.pure)if(f0&&f0.running)J.tState=vJ,J.tOwned&&J.tOwned.forEach(TY),J.tOwned=void 0;else J.state=vJ,J.owned&&J.owned.forEach(TY),J.owned=null;return J.updatedAt=Y+1,gX(Q)}finally{O1=X,$0=G}if(!J.updatedAt||J.updatedAt<=Y){if(J.updatedAt!=null&&"observers"in J)sj(J,Z,!0);else if(f0&&f0.running&&J.pure){if(!f0.sources.has(J))J.value=Z;f0.sources.add(J),J.tValue=Z}else J.value=Z;J.updatedAt=Y}}function YG(J,z,Y,Z=vJ,G){let X={fn:J,state:Z,updatedAt:null,owned:null,sources:null,sourceSlots:null,cleanups:null,value:z,owner:$0,context:$0?$0.context:null,pure:Y};if(f0&&f0.running)X.state=0,X.tState=Z;if($0===null)console.warn("computations created outside a `createRoot` or `render` will never be disposed");else if($0!==Vg)if(f0&&f0.running&&$0.pure)if(!$0.tOwned)$0.tOwned=[X];else $0.tOwned.push(X);else if(!$0.owned)$0.owned=[X];else $0.owned.push(X);if(G&&G.name)X.name=G.name;if(JG&&X.fn){let Q=X.fn,[H,f]=p(void 0,{equals:!1}),j=JG.factory(Q,f);T1(()=>j.dispose());let V,B=()=>Lg(f).then(()=>{if(V)V.dispose(),V=void 0});X.fn=(K)=>{if(H(),f0&&f0.running){if(!V)V=JG.factory(Q,B);return V.track(K)}return j.track(K)}}return Mz.afterCreateOwner&&Mz.afterCreateOwner(X),X}function RX(J){let z=f0&&f0.running;if((z?J.tState:J.state)===0)return;if((z?J.tState:J.state)===OX)return Sq(J);if(J.suspense&&t1(J.suspense.inFallback))return J.suspense.effects.push(J);let Y=[J];while((J=J.owner)&&(!J.updatedAt||J.updatedAt<yq)){if(z&&f0.disposed.has(J))return;if(z?J.tState:J.state)Y.push(J)}for(let Z=Y.length-1;Z>=0;Z--){if(J=Y[Z],z){let G=J,X=Y[Z+1];while((G=G.owner)&&G!==X)if(f0.disposed.has(G))return}if((z?J.tState:J.state)===vJ)VZ(J);else if((z?J.tState:J.state)===OX){let G=s1;s1=null,xJ(()=>Sq(J,Y[0]),!1),s1=G}}}function xJ(J,z){if(s1)return J();let Y=!1;if(!z)s1=[];if(FJ)Y=!0;else FJ=[];yq++;try{let Z=J();return Mg(Y),Z}catch(Z){if(!Y)FJ=null;s1=null,gX(Z)}}function Mg(J){if(s1){if(zG&&f0&&f0.running)Og(s1);else YK(s1);s1=null}if(J)return;let z;if(f0){if(!f0.promises.size&&!f0.queue.size){let{sources:Z,disposed:G}=f0;FJ.push.apply(FJ,f0.effects),z=f0.resolve;for(let X of FJ)"tState"in X&&(X.state=X.tState),delete X.tState;f0=null,xJ(()=>{for(let X of G)TY(X);for(let X of Z){if(X.value=X.tValue,X.owned)for(let Q=0,H=X.owned.length;Q<H;Q++)TY(X.owned[Q]);if(X.tOwned)X.owned=X.tOwned;delete X.tValue,delete X.tOwned,X.tState=0}p7(!1)},!1)}else if(f0.running){f0.running=!1,f0.effects.push.apply(f0.effects,FJ),FJ=null,p7(!0);return}}let Y=FJ;if(FJ=null,Y.length)xJ(()=>e7(Y),!1);else Mz.afterUpdate&&Mz.afterUpdate();if(z)z()}function YK(J){for(let z=0;z<J.length;z++)RX(J[z])}function Og(J){for(let z=0;z<J.length;z++){let Y=J[z],Z=f0.queue;if(!Z.has(Y))Z.add(Y),zG(()=>{Z.delete(Y),xJ(()=>{f0.running=!0,RX(Y)},!1),f0&&(f0.running=!1)})}}function Ag(J){let z,Y=0;for(z=0;z<J.length;z++){let Z=J[z];if(!Z.user)RX(Z);else J[Y++]=Z}if(x1.context){if(x1.count){x1.effects||(x1.effects=[]),x1.effects.push(...J.slice(0,Y));return}rj()}if(x1.effects&&(x1.done||!x1.count))J=[...x1.effects,...J],Y+=x1.effects.length,delete x1.effects;for(z=0;z<Y;z++)RX(J[z])}function Sq(J,z){let Y=f0&&f0.running;if(Y)J.tState=0;else J.state=0;for(let Z=0;Z<J.sources.length;Z+=1){let G=J.sources[Z];if(G.sources){let X=Y?G.tState:G.state;if(X===vJ){if(G!==z&&(!G.updatedAt||G.updatedAt<yq))RX(G)}else if(X===OX)Sq(G,z)}}}function ZK(J){let z=f0&&f0.running;for(let Y=0;Y<J.observers.length;Y+=1){let Z=J.observers[Y];if(z?!Z.tState:!Z.state){if(z)Z.tState=OX;else Z.state=OX;if(Z.pure)s1.push(Z);else FJ.push(Z);Z.observers&&ZK(Z)}}}function TY(J){let z;if(J.sources)while(J.sources.length){let Y=J.sources.pop(),Z=J.sourceSlots.pop(),G=Y.observers;if(G&&G.length){let X=G.pop(),Q=Y.observerSlots.pop();if(Z<G.length)X.sourceSlots[Q]=Z,G[Z]=X,Y.observerSlots[Z]=Q}}if(J.tOwned){for(z=J.tOwned.length-1;z>=0;z--)TY(J.tOwned[z]);delete J.tOwned}if(f0&&f0.running&&J.pure)GK(J,!0);else if(J.owned){for(z=J.owned.length-1;z>=0;z--)TY(J.owned[z]);J.owned=null}if(J.cleanups){for(z=J.cleanups.length-1;z>=0;z--)J.cleanups[z]();J.cleanups=null}if(f0&&f0.running)J.tState=0;else J.state=0;delete J.sourceMap}function GK(J,z){if(!z)J.tState=0,f0.disposed.add(J);if(J.owned)for(let Y=0;Y<J.owned.length;Y++)GK(J.owned[Y])}function kq(J){if(J instanceof Error)return J;return Error(typeof J==="string"?J:"Unknown error",{cause:J})}function s7(J,z,Y){try{for(let Z of z)Z(J)}catch(Z){gX(Z,Y&&Y.owner||null)}}function gX(J,z=$0){let Y=MX&&z&&z.context&&z.context[MX],Z=kq(J);if(!Y)throw Z;if(FJ)FJ.push({fn(){s7(Z,Y,z)},state:vJ});else s7(Z,Y,z)}function oj(J){if(typeof J==="function"&&!J.length)return oj(J());if(Array.isArray(J)){let z=[];for(let Y=0;Y<J.length;Y++){let Z=oj(J[Y]);if(Array.isArray(Z))if(Z.length<32768)z.push.apply(z,Z);else for(let G=0;G<Z.length;G++)z.push(Z[G]);else z.push(Z)}return z}return J}function Rg(J,z){return function(Z){let G;return wz(()=>G=t1(()=>{return $0.context={...$0.context,[J]:Z.value},Fg(()=>Z.children)}),void 0,z),G}}function t7(J){for(let z=0;z<J.length;z++)J[z]()}function Ng(J,z,Y={}){let Z=[],G=[],X=[],Q=0,H=z.length>1?[]:null;return T1(()=>t7(X)),()=>{let f=J()||[],j=f.length,V,B;return f[Iq],t1(()=>{let L,A,O,R,u,P,S,g,M;if(j===0){if(Q!==0)t7(X),X=[],Z=[],G=[],Q=0,H&&(H=[]);if(Y.fallback)Z=[gg],G[0]=BZ((T)=>{return X[0]=T,Y.fallback()}),Q=1}else if(Q===0){G=Array(j);for(B=0;B<j;B++)Z[B]=f[B],G[B]=BZ(K);Q=j}else{O=Array(j),R=Array(j),H&&(u=Array(j));for(P=0,S=Math.min(Q,j);P<S&&Z[P]===f[P];P++);for(S=Q-1,g=j-1;S>=P&&g>=P&&Z[S]===f[g];S--,g--)O[g]=G[S],R[g]=X[S],H&&(u[g]=H[S]);L=new Map,A=Array(g+1);for(B=g;B>=P;B--)M=f[B],V=L.get(M),A[B]=V===void 0?-1:V,L.set(M,B);for(V=P;V<=S;V++)if(M=Z[V],B=L.get(M),B!==void 0&&B!==-1)O[B]=G[V],R[B]=X[V],H&&(u[B]=H[V]),B=A[B],L.set(M,B);else X[V]();for(B=P;B<j;B++)if(B in O){if(G[B]=O[B],X[B]=R[B],H)H[B]=u[B],H[B](B)}else G[B]=BZ(K);G=G.slice(0,Q=j),Z=f.slice(0)}return G});function K(L){if(X[B]=L,H){let[A,O]=p(B,{name:"index"});return H[B]=O,z(f[B],A)}return z(f[B])}}}function XK(J,z){if(Cg){if(x1.context){let Y=x1.context;rj(Hg());let Z=r7(J,z||{});return rj(Y),Z}}return r7(J,z||{})}function Nq(){return!0}function pj(J){return!(J=typeof J==="function"?J():J)?{}:J}function bg(){for(let J=0,z=this.length;J<z;++J){let Y=this[J]();if(Y!==void 0)return Y}}function uq(...J){let z=!1;for(let Q=0;Q<J.length;Q++){let H=J[Q];z=z||!!H&&Fz in H,J[Q]=typeof H==="function"?(z=!0,U0(H)):H}if(Bg&&z)return new Proxy({get(Q){for(let H=J.length-1;H>=0;H--){let f=pj(J[H])[Q];if(f!==void 0)return f}},has(Q){for(let H=J.length-1;H>=0;H--)if(Q in pj(J[H]))return!0;return!1},keys(){let Q=[];for(let H=0;H<J.length;H++)Q.push(...Object.keys(pj(J[H])));return[...new Set(Q)]}},kg);let Y={},Z=Object.create(null);for(let Q=J.length-1;Q>=0;Q--){let H=J[Q];if(!H)continue;let f=Object.getOwnPropertyNames(H);for(let j=f.length-1;j>=0;j--){let V=f[j];if(V==="__proto__"||V==="constructor")continue;let B=Object.getOwnPropertyDescriptor(H,V);if(!Z[V])Z[V]=B.get?{enumerable:!0,configurable:!0,get:bg.bind(Y[V]=[B.get.bind(H)])}:B.value!==void 0?B:void 0;else{let K=Y[V];if(K){if(B.get)K.push(B.get.bind(H));else if(B.value!==void 0)K.push(()=>B.value)}}}}let G={},X=Object.keys(Z);for(let Q=X.length-1;Q>=0;Q--){let H=X[Q],f=Z[H];if(f&&f.get)Object.defineProperty(G,H,f);else G[H]=f?f.value:void 0}return G}function Z1(J){let z="fallback"in J&&{fallback:()=>J.fallback};return U0(Ng(()=>J.each,J.children,z||void 0),void 0,{name:"value"})}function Y0(J){let z=J.keyed,Y=U0(()=>J.when,void 0,{name:"condition value"}),Z=z?Y:U0(Y,void 0,{equals:(G,X)=>!G===!X,name:"condition"});return U0(()=>{let G=Z();if(G){let X=J.children;return typeof X==="function"&&X.length>0?t1(()=>X(z?G:()=>{if(!t1(Z))throw Sg("Show");return Y()})):X}return J.fallback},void 0,{name:"value"})}function QK(J){let z;if(x1.context&&x1.load)z=x1.load(x1.getContextId());let[Y,Z]=p(z,{name:"errored"});return Cq||(Cq=new Set),Cq.add(Z),T1(()=>Cq.delete(Z)),U0(()=>{let G;if(G=Y()){let X=J.fallback;if(typeof X!=="function"||X.length==0)console.error(G);return typeof X==="function"&&X.length?t1(()=>X(G,()=>Z())):X}return Ug(()=>J.children,Z)},void 0,{name:"value"})}var x1,fg=!0,jg=(J,z)=>J===z,Fz,Bg,Iq,Wg,bq,MX=null,e7,vJ=1,OX=2,Vg,_j,$0=null,f0=null,zG=null,JG=null,O1=null,s1=null,FJ=null,yq=0,Mz,Jv,p7,AX,gg,Cg=!1,kg,Sg=(J)=>`Attempting to access a stale value from <${J}> that could possibly be undefined. This may occur because you are reading the accessor returned from the component at a time where it has already been unmounted. We recommend cleaning up any stale timers or async, or reading from the initial condition.`,Cq,qK;var W1=C(()=>{x1={context:void 0,registry:void 0,effects:void 0,done:!1,getContextId(){return a7(this.context.count)},getNextContextId(){return a7(this.context.count++)}};Fz=Symbol("solid-proxy"),Bg=typeof Proxy==="function",Iq=Symbol("solid-track"),Wg=Symbol("solid-dev-component"),bq={equals:jg},e7=YK,Vg={},_j={},Mz={afterUpdate:null,afterCreateOwner:null,afterCreateSignal:null,afterRegisterGraph:null};[Jv,p7]=p(!1);gg=Symbol("fallback");kg={get(J,z,Y){if(z===Fz)return Y;return J.get(z)},has(J,z){if(z===Fz)return!0;return J.has(z)},set:Nq,deleteProperty:Nq,getOwnPropertyDescriptor(J,z){return{configurable:!0,enumerable:!0,get(){return J.get(z)},set:Nq,deleteProperty:Nq}},ownKeys(J){return J.keys()}};qK={hooks:Mz,writeSignal:sj,registerGraph:JK};if(globalThis)if(!globalThis.Solid$$)globalThis.Solid$$=!0;else console.warn("You appear to have multiple instances of Solid. This can lead to unexpected behavior.")});import{spawn as Ig}from"child_process";function tj(J,z,Y,Z){if(Y)return J+Z.slowRetryMs;return z+Math.max(Z.minIntervalMs,(z-J)*5)}function ej(J,z){return!J.inFlight&&z>=J.nextAllowedAt}function HK(J,z,Y=Math.random){let Z=Math.max(0,Math.min(1,z)),G=(Y()*2-1)*J*Z;return Math.max(0,J+G)}function fK(J,z,Y){if(z<=0)return Math.min(J,Y);return Math.min(J*2**z,Y)}function ZG(J,z,Y,Z){let G=Date.now();if(!ej(J,G))return!1;J.inFlight=!0;let X=new AbortController,Q=setTimeout(()=>X.abort(),z.timeoutMs);return(async()=>{let H,f=!1;try{H=await Y(X.signal),f=!0}catch{}clearTimeout(Q);let j=X.signal.aborted;if(J.nextAllowedAt=tj(G,Date.now(),j,z),J.inFlight=!1,f&&!j)Z(H)})(),!0}function qY(J,z,Y){return new Promise((Z)=>{let G="",X=!1,Q=(f)=>{if(X)return;X=!0,Z({status:f,stdout:G})},H=Ig(J,z.slice(),{cwd:Y.cwd,stdio:["ignore","pipe","ignore"],env:Y.env,signal:Y.signal,killSignal:"SIGKILL"});H.stdout?.on("data",(f)=>{G+=String(f)}),H.on("error",()=>Q(null)),H.on("close",(f)=>Q(f))})}var GG=()=>{};function yg(J,z){switch((J??"").toUpperCase()){case"MERGED":return"merged";case"CLOSED":return"closed";case"OPEN":return(z??"").toUpperCase()==="APPROVED"?"ready_to_merge":"open";default:return"unknown"}}function Tg(J){let z=(J.status??"").toUpperCase(),Y=(J.conclusion??"").toUpperCase(),Z=(J.state??"").toUpperCase();if(z&&z!=="COMPLETED")return"pending";if(Y){if(Y==="SUCCESS"||Y==="NEUTRAL"||Y==="SKIPPED")return"passing";return"failing"}if(Z==="SUCCESS")return"passing";if(Z==="PENDING"||Z==="EXPECTED")return"pending";if(Z==="FAILURE"||Z==="ERROR")return"failing";return"unknown"}function xg(J){if(!J||J.length===0)return"none";let z=!1,Y=!1;for(let Z of J){let G=Tg(Z);if(G==="failing")return"failing";if(G==="pending")z=!0;else if(G==="passing")Y=!0}if(z)return"pending";if(Y)return"passing";return"unknown"}function BK(J,z){if(!J||typeof J.number!=="number")return null;return{provider:"github",lifecycle:yg(J.state,J.reviewDecision),checkState:xg(J.statusCheckRollup),number:J.number,url:J.url,title:J.title,baseRef:J.baseRefName,headRef:J.headRefName,reviewDecision:J.reviewDecision||void 0,mergeable:J.mergeable||void 0,lastCheckedAt:z}}function wq(J,z){if(J===z)return!0;if(!J||!z)return!1;return J.provider===z.provider&&J.lifecycle===z.lifecycle&&J.checkState===z.checkState&&J.number===z.number&&J.url===z.url&&J.title===z.title&&J.baseRef===z.baseRef&&J.headRef===z.headRef&&J.reviewDecision===z.reviewDecision&&J.mergeable===z.mergeable}function Eq(J,z){return z.some((Y)=>J.includes(Y))}function JB(J){if(J.parseError)return{kind:"error",error:"parse"};if(J.timedOut)return{kind:"error",error:"timeout"};if(J.spawnError)return{kind:"error",error:"missing-binary"};let z=(J.stderr??"").toLowerCase();if(Eq(z,Pg))return{kind:"empty"};if(Eq(z,ug))return{kind:"error",error:"no-remote"};if(Eq(z,Eg))return{kind:"error",error:"auth"};if(Eq(z,wg))return{kind:"error",error:"network"};return{kind:"empty"}}function NX(J,z,Y,Z,G=Math.random){let X=(H)=>Y+HK(H,Z.jitterRatio,G);if(J.kind==="pr")return{nextAllowedAt:X(J.settled?Z.settledMs:Z.tickMs),failures:0};if(J.kind==="empty")return{nextAllowedAt:X(Z.noPrMs),failures:0};if(J.error==="no-remote")return{nextAllowedAt:X(Z.noRemoteMs),failures:0};let Q=z+1;return{nextAllowedAt:X(fK(Z.failureBaseMs,Q-1,Z.failureCapMs)),failures:Q}}var jK="number,url,title,state,baseRefName,headRefName,reviewDecision,mergeable,statusCheckRollup",ug,Eg,wg,Pg;var zB=C(()=>{GG();ug=["none of the git remotes","no git remote","to use github cli in a github repository","not a github repository"],Eg=["gh auth login","authentication required","not logged in","http 401","bad credentials","requires authentication"],wg=["could not resolve host","no such host","dial tcp","connection refused","connection reset","network is unreachable","i/o timeout","timeout","tls handshake","http 5","rate limit","try again"],Pg=["no pull requests found","no open pull requests","no pull request found"]});var YB,ZB,GB,XB="DIRTY_WORKTREE",QB,qB;var HB=C(()=>{YB=class YB extends Error{from;to;taskId;constructor(J,z,Y){super(`illegal transition for task ${Y}: ${J} -> ${z}`);this.from=J;this.to=z;this.taskId=Y;this.name="IllegalTransitionError"}};ZB=class ZB extends Error{constructor(J){super(`task not found: ${J}`);this.name="TaskNotFoundError"}};GB=class GB extends Error{constructor(){super("cannot delete a main task; remove the repo from saved repos instead");this.name="CannotDeleteMainTaskError"}};QB=class QB extends Error{taskId;constructor(J){super(`${XB}: task ${J} worktree has uncommitted or untracked changes`);this.taskId=J;this.name="DirtyWorktreeError"}};qB=class qB extends Error{taskId;cause;constructor(J,z){super(`failed to remove worktree for task ${J}: ${z instanceof Error?z.message:String(z)}`);this.taskId=J;this.cause=z;this.name="WorktreeRemoveFailedError"}}});var WK;var VK=C(()=>{WK=["aardvark","addax","adder","agouti","albatross","alpaca","anaconda","anchovy","anglerfish","anole","anteater","antelope","ape","argali","armadillo","avocet","axolotl","baboon","badger","banteng","barracuda","basilisk","bass","bat","beagle","bear","beaver","bee","beetle","beluga","betta","bison","blackbird","blenny","bluebird","bluegill","boar","bobcat","bonito","bovid","buffalo","bullfrog","bunting","bushbuck","butterfly","buzzard","caiman","camel","canary","capybara","caracal","cardinal","caribou","carp","cassowary","caterpillar","catfish","chameleon","chamois","char","cheetah","chickadee","chimp","chinchilla","chipmunk","chough","cicada","civet","clam","clownfish","cobra","cockatoo","condor","coot","copperhead","coral","cormorant","cougar","coyote","crab","crane","crawfish","crayfish","cricket","crocodile","crow","cuckoo","curlew","cuttlefish","deer","dikdik","dingo","dolphin","donkey","dormouse","dotterel","dove","dragonfly","dromedary","duck","dugong","dunlin","eagle","echidna","eel","egret","eider","eland","elephant","elk","emu","ermine","falcon","fawn","ferret","finch","firefly","flamingo","flounder","fox","frog","gadwall","gannet","gaur","gazelle","gecko","gemsbok","gerbil","gharial","gibbon","gnu","goat","goby","godwit","goldfish","goose","gopher","goral","gorilla","goshawk","grackle","grasshopper","grayling","grebe","grouse","guanaco","guillemot","guineafowl","guppy","halibut","hammerhead","hamster","hare","harrier","hartebeest","hawk","hedgehog","heron","herring","hippo","hornbill","hornet","horse","hummingbird","hyena","ibex","ibis","iguana","impala","indri","jacana","jackal","jaguar","jay","jellyfish","jerboa","junco","kakapo","kangaroo","kestrel","killdeer","kingfisher","kinglet","kite","kiwi","koala","kookaburra","krait","krill","kudu","ladybug","lamprey","langur","lapwing","lark","lemming","lemur","leopard","limpet","lion","lionfish","lizard","llama","lobster","locust","loon","lorikeet","loris","lynx","macaque","macaw","mackerel","magpie","mallard","mamba","mammoth","manatee","mandrill","manta","mantis","marlin","marmoset","marmot","marten","meerkat","merganser","mink","minnow","mole","mongoose","monitor","monkey","moose","moth","mouflon","mouse","mudpuppy","mule","muntjac","musk","muskox","muskrat","mussel","mustang","narwhal","newt","nightingale","numbat","nuthatch","nyala","ocelot","octopus","okapi","opossum","orangutan","orca","oriole","oryx","osprey","ostrich","otter","owl","oyster","oystercatcher","paca","panda","pangolin","panther","parakeet","parrot","parrotfish","partridge","peafowl","pelican","penguin","perch","petrel","pheasant","pigeon","pika","pike","pintail","pipefish","platypus","plover","pollock","pony","porcupine","porpoise","possum","ptarmigan","puffin","puma","pupfish","python","quail","quetzal","quokka","quoll","rabbit","raccoon","rail","rat","rattler","raven","ray","redpoll","reindeer","remora","rhino","roadrunner","robin","rook","sable","sailfish","salamander","salmon","sandpiper","sardine","scallop","scaup","scorpion","seahorse","seal","serval","shark","shearwater","shrew","shrike","shrimp","siskin","sitatunga","skate","skink","skua","skunk","sloth","smelt","snail","snipe","solenodon","sparrow","spider","springbok","squid","squirrel","starfish","starling","stilt","stingray","stoat","stork","sunbird","sunfish","swallow","swan","swift","swordfish","tahr","takin","tamarin","tanager","tapir","tarantula","tarpon","tarsier","teal","tenrec","terrapin","tern","tetra","thrasher","thrush","tiger","toad","tortoise","toucan","treecreeper","treefrog","trout","tuatara","tuna","turkey","turtle","urchin","urial","vicuna","viper","vole","vulture","wagtail","wallaby","walleye","walrus","warbler","warthog","waterbuck","weasel","wildebeest","wolf","wolverine","wombat","woodcock","woodpecker","wrasse","wren","yak","zebra","zebu","zorilla"]});function KK(J){let z=J.auth,Y=z.kind==="key"?{kind:"key",keyPath:z.keyPath}:{kind:"password",getPassword:()=>lQ(z.keychainRef)};return{host:J.host,user:J.user,port:J.port,auth:Y,controlPath:mQ(J.host,J.user,J.port)}}function XG(J){let z=JY(J);if(!z)return new iQ;return new iZ(KK(z))}function HY(J){for(let z of Object.values(Hj()))if(J===z.basePath||J.startsWith(`${z.basePath}/`))return new iZ(KK(z));return new iQ}function UK(J){return J&&r1(J)?J:void 0}function xY(J){let z=HY(J);return z.isRemote||z.existsSync(J)}function m1(J){return HY(J).isRemote?rJ():J}var Oz=C(()=>{p1();C1();ef();Yj()});import{isAbsolute as hg,join as vg,resolve as mg}from"path";function fB(J){if(typeof J!=="string")return null;let z=J.trim();if(!z)return null;let Y=rJ();if(z==="~")return Y;let Z=z.startsWith("~/")?vg(Y,z.slice(2)):z;return hg(Z)?Z:mg(Y,Z)}function DK(){let J=LJ()[Pq];return fB(typeof J==="string"?J:null)}var Pq="worktree.basePath";var jB=C(()=>{p1();sz()});import{createHash as cg}from"crypto";import FK from"fs";import MJ from"path";function lg(){return DK()??MJ.join(XJ(),MK)}function $g(){return MJ.join(XJ(),MK)}function OK(J){if(!MJ.isAbsolute(J))throw Error(`worktreeRootFor: repo must be an absolute path, got: ${J}`);return MJ.join(lg(),bK(J))}function AK(J){if(!MJ.isAbsolute(J))throw Error(`managedWorktreeRootsFor: repo must be an absolute path, got: ${J}`);let z=OK(J),Y=MJ.join($g(),bK(J));return[...z===Y?[z]:[z,Y],...ig.map((G)=>MJ.join(J,G))]}function RK(J,z){if(!z||/[/\\\0]/.test(z))throw Error(`worktreePathFor: invalid slug: ${JSON.stringify(z)}`);return MJ.join(OK(J),z)}async function gK(J){if(r1(J)){let Y=JY(J)?.basePath;if(!Y)return[];return XG(J).readdir(CK(Y))}let z=new Set;for(let Y of AK(J))try{for(let Z of FK.readdirSync(Y,{withFileTypes:!0}))if(Z.isDirectory())z.add(Z.name)}catch{}return[...z]}function BB(J,z){if(!MJ.isAbsolute(J)||!MJ.isAbsolute(z))return null;let Y=LK(z);for(let Z of AK(J)){let G=LK(Z),X=MJ.relative(G,Y);if(X!==""&&!X.startsWith("..")&&!MJ.isAbsolute(X))return Z}return null}function NK(J,z){return BB(J,z)!==null}function CK(J){return`${ag(J)}/.kobe/worktrees`}function kK(J,z){if(!z||/[/\\\0]/.test(z))throw Error(`remoteWorktreePathFor: invalid slug: ${JSON.stringify(z)}`);return`${CK(J)}/${z}`}function ag(J){return J.length>1&&J.endsWith("/")?J.replace(/\/+$/,""):J}function LK(J){try{return FK.realpathSync(J)}catch{return MJ.resolve(J)}}function bK(J){let Y=(MJ.basename(J)||"repo").replace(/[^a-zA-Z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"repo",Z=cg("sha1").update(MJ.resolve(J)).digest("hex").slice(0,12);return`${Y}-${Z}`}var MK="worktrees",dg=".kobe/worktrees",ng=".claude/worktrees",ig;var WB=C(()=>{p1();Oz();C1();jB();ig=[dg,ng]});class VB{activeSlugs;random;pool;pendingByRepo=new Map;chain=Promise.resolve();constructor(J,z={}){this.activeSlugs=J;if(this.random=z.random??Math.random,this.pool=z.pool??WK,this.pool.length===0)throw Error("SlugAllocator: animal pool cannot be empty")}async allocate(J){let z=this.chain,Y;this.chain=new Promise((Z)=>{Y=Z}),await z;try{return await this.pickLocked(J)}finally{Y()}}commit(J,z){this.deletePending(J,z)}cancel(J,z){this.deletePending(J,z)}async pickLocked(J){let z=await this.occupiedSlugs(J),Y=this.pool.filter((G)=>!z.has(G));if(Y.length>0){let G=Y[Math.floor(this.random()*Y.length)];return this.addPending(J,G),G}let Z=this.pool[Math.floor(this.random()*this.pool.length)];for(let G=2;;G++){let X=`${Z}-v${G}`;if(!z.has(X))return this.addPending(J,X),X}}async occupiedSlugs(J){let z=new Set(this.pendingByRepo.get(J)??[]);for(let Y of this.activeSlugs(J))if(Y)z.add(Y);for(let Y of await gK(J))z.add(Y);return z}addPending(J,z){let Y=this.pendingByRepo.get(J);if(!Y)Y=new Set,this.pendingByRepo.set(J,Y);Y.add(z)}deletePending(J,z){let Y=this.pendingByRepo.get(J);if(!Y)return;if(Y.delete(z),Y.size===0)this.pendingByRepo.delete(J)}}var SK=C(()=>{VK();WB()});var yK={};q1(yK,{PLACEHOLDER_TASK_TITLE:()=>hz,Orchestrator:()=>hq});import{realpathSync as _g}from"fs";import{basename as pg,resolve as rg}from"path";function IK(J){return JY(J)?.basePath??J}class hq{store;worktrees;slugs;tasksAcc;setTasks;activeTaskAcc;setActiveTaskSig;unsubscribeStore;worktreeLocks=new Map;mainTaskLocks=new Map;constructor(J){this.store=J.store,this.worktrees=J.worktrees,this.slugs=new VB((X)=>this.store.list().filter((Q)=>Q.repo===X&&Q.kind!=="main").map((Q)=>{return Q.worktreePath.match(/([^/\\]+)[/\\]*$/)?.[1]??""}).filter((Q)=>Q.length>0));let[z,Y]=p(this.store.list());this.tasksAcc=z,this.setTasks=(X)=>Y(()=>X);let[Z,G]=p(null);this.activeTaskAcc=Z,this.setActiveTaskSig=(X)=>G(()=>X),this.unsubscribeStore=this.store.subscribe((X)=>{this.setTasks(X.slice())})}async init(){}activeTaskSignal(){return this.activeTaskAcc}async setActiveTask(J){let z=J===null?null:String(J);if(this.setActiveTaskSig(z),z&&this.store.get(z))await this.store.update(z,{})}tasksSignal(){return this.tasksAcc}subscribeTasks(J){return this.store.subscribe(J)}dispose(){this.unsubscribeStore()}listTasks(){return this.store.list()}getTask(J){return this.store.get(J)}async createTask(J){if(!J.repo)throw Error("createTask: repo is required");let z=(J.title??hz).trim()||hz,Y=await this.store.create({repo:J.repo,title:z,branch:J.branch??"",worktreePath:"",status:"backlog",kind:"task",vendor:J.vendor??o1,...J.modelEffort?{modelEffort:J.modelEffort}:{}});if(J.baseRef)this.pendingBaseRefs.set(Y.id,J.baseRef);return Y}async ensureMainTask(J){let{repo:z,key:Y}=CX(J),Z=this.store.list().find((Q)=>Q.kind==="main"&&CX(Q.repo).key===Y);if(Z)return Z;let G=this.mainTaskLocks.get(Y);if(G)return G;let X=(async()=>{let Q=PJ(S1("lastSelectedVendor"),hJ());return await this.store.create({repo:z,title:og(z),branch:"",worktreePath:IK(z),status:"backlog",kind:"main",vendor:Q})})();this.mainTaskLocks.set(Y,X);try{return await X}finally{this.mainTaskLocks.delete(Y)}}async ensureWorktree(J){let z=this.requireTask(J);if(z.kind==="main")return IK(z.repo);if(z.worktreePath)return z.worktreePath;let Y=this.worktreeLocks.get(z.id);if(Y)return Y;let Z=this.createWorktree(z);this.worktreeLocks.set(z.id,Z);try{return await Z}finally{this.worktreeLocks.delete(z.id)}}async createWorktree(J){let z=await this.slugs.allocate(J.repo),Y=J.branch||Rq(J.title,J.id),Z=this.pendingBaseRefs.get(J.id),G;try{G=await this.worktrees.createForTask({repo:J.repo,slug:z,branch:Y,baseRef:Z})}catch(X){throw this.slugs.cancel(J.repo,z),X}try{await this.store.update(J.id,{worktreePath:G.path,branch:Y})}catch(X){throw await this.rollbackWorktree(G.path),this.slugs.cancel(J.repo,z),X}return this.slugs.commit(J.repo,z),this.pendingBaseRefs.delete(J.id),G.path}async rollbackWorktree(J){try{await this.worktrees.remove(J,{force:!0})}catch(z){console.error(`[kobe] ensureWorktree rollback failed for ${J}:`,z)}}async setTitle(J,z){let Y=z.trim();if(!Y)throw Error("setTitle: title is required (empty or whitespace-only rejected)");let Z=this.requireTask(J);if(Z.title===Y)return;await this.store.update(Z.id,{title:Y}),await this.followBranchToTitle(Z,Y)}async followBranchToTitle(J,z){if(J.kind==="main"||!J.worktreePath)return;if(J.branch!==Rq(hz,J.id))return;let Y=Rq(z,J.id);if(Y===J.branch)return;try{await this.setBranch(J.id,Y)}catch(Z){console.error(`[kobe] follow-branch-to-title failed for ${J.id}:`,Z)}}async setBranch(J,z){let Y=z.trim();if(!Y)throw Error("setBranch: branch is required (empty or whitespace-only rejected)");let Z=this.requireTask(J);if(Z.kind==="main")throw Error("setBranch: a main task tracks the repo's own branch; rename it with git directly");if(Z.branch===Y)return;if(Z.worktreePath)await this.worktrees.renameBranch(Z.worktreePath,Z.branch,Y);await this.store.update(Z.id,{branch:Y})}async setVendor(J,z){let Y=this.requireTask(J);if(Y.vendor===z)return;await this.store.update(Y.id,{vendor:z})}async setPinned(J,z){let Y=this.requireTask(J);if(Y.kind==="main")return;let Z=z??!Y.pinned;if((Y.pinned??!1)===Z)return;await this.store.update(Y.id,{pinned:Z})}async moveTask(J,z){let Y=this.requireTask(J);if(Y.kind==="main")return;let Z=this.store.list().filter((G)=>(G.kind??"task")!=="main"&&G.archived===Y.archived&&(G.pinned??!1)===(Y.pinned??!1)).map((G)=>String(G.id));await this.store.move(Y.id,z,Z)}async setArchived(J,z){let Y=this.requireTask(J);if(Y.kind==="main")return;let Z=z??!Y.archived;if(Y.archived===Z)return;await this.store.update(Y.id,{archived:Z})}async reorderTasks(J){if(J.length===0)return;for(let z of J){if(this.requireTask(z.taskId).kind==="main")throw Error(`cannot reorder a main task: ${z.taskId}`);if(!Number.isFinite(z.position))throw Error(`position must be a finite number: ${z.taskId}`)}await this.store.reorder(J.map((z)=>({id:z.taskId,position:z.position})))}async setStatus(J,z){let Y=this.requireTask(J);if(Y.status===z)return;if(Y.status==="done"&&z==="error"||Y.status==="error"&&z==="done")throw new YB(Y.status,z,Y.id);await this.store.update(Y.id,{status:z})}async setPRStatus(J,z){let Y=this.requireTask(J);if(wq(Y.prStatus,z??void 0))return;await this.store.update(Y.id,{prStatus:z??void 0})}async deleteTask(J,z){let Y=this.store.get(J);if(!Y)return;if(Y.kind==="main")throw new GB;let Z=z?.force===!0;if(Y.worktreePath){if(!Z){let G=!1;try{G=await this.worktrees.isDirty(Y.worktreePath)}catch{}if(G)throw new QB(Y.id)}try{await this.worktrees.remove(Y.worktreePath,{force:Z})}catch(G){throw new qB(Y.id,G)}}await this.store.remove(Y.id),this.pendingBaseRefs.delete(Y.id),this.worktreeLocks.delete(Y.id)}async forgetProject(J){if(!J)throw Error("forgetProject: repo is required");let z=CX(J).key;for(let Y of SJ())if(CX(Y).key===z)Qj(Y);for(let Y of this.store.list()){if(Y.kind!=="main")continue;if(CX(Y.repo).key!==z)continue;await this.store.remove(Y.id),this.pendingBaseRefs.delete(Y.id),this.worktreeLocks.delete(Y.id)}}async discoverAdoptableWorktrees(J){if(!J)throw Error("discoverAdoptableWorktrees: repo is required");let z=await this.worktrees.listAll(J),Y=new Set(this.store.list().filter((Z)=>Z.worktreePath).map((Z)=>QG(Z.worktreePath)));return z.filter((Z)=>!Y.has(QG(Z.path)))}async adoptWorktree(J){if(!J.repo)throw Error("adoptWorktree: repo is required");if(!J.worktreePath)throw Error("adoptWorktree: worktreePath is required");let z=QG(J.worktreePath),Y=this.adoptLocks.get(z);if(Y)return Y;let Z=this.adoptWorktreeLocked(J,z);this.adoptLocks.set(z,Z);try{return await Z}finally{this.adoptLocks.delete(z)}}async adoptWorktreeLocked(J,z){let Y=this.store.list().find((H)=>H.worktreePath&&QG(H.worktreePath)===z);if(Y){if(J.ifExists==="return")return Y;throw Error(`adoptWorktree: ${J.worktreePath} is already adopted as a task`)}let G=(await this.worktrees.listAll(J.repo)).find((H)=>QG(H.path)===z);if(!G)throw Error(`adoptWorktree: ${J.worktreePath} is not an adoptable git worktree of ${J.repo} (unknown, detached, or the main checkout)`);let X=J.branch?.trim()||G.branch,Q=(J.title??pg(G.path)).trim()||hz;return this.store.create({repo:J.repo,title:Q,branch:X,worktreePath:G.path,status:"backlog",kind:"task",vendor:J.vendor??o1})}pendingBaseRefs=new Map;adoptLocks=new Map;requireTask(J){let z=this.store.get(J);if(!z)throw new ZB(String(J));return z}}function og(J){let z=J.split(/[/\\]/).filter(Boolean);return z.length>0?z[z.length-1]??J:J}function CX(J){let z=tz(J);return{repo:z,key:r1(z)?z:QG(z)}}function QG(J){try{return _g(J)}catch{return rg(J)}}var hz="(new task)";var kX=C(()=>{W1();zB();C1();zz();_1();HB();SK()});function qG(J,z,Y){if(!z)return J;let Z=XG(z);return Z.ensureReady(),Z.wrapCommand(J,{tty:!0,cwd:Y})}function l1(){let J=[];for(let z of["KOBE_HOME_DIR","KOBE_DAEMON_SOCKET_PATH","KOBE_TMUX_SOCKET"]){let Y=process.env[z];if(Y&&Y.length>0)J.push(`${z}=${Q1(Y)}`)}return J.length>0?`${J.join(" ")} `:""}var bX="@kobe_remote";var KZ=C(()=>{Oz();Lz()});function vq(){return Bz(UZ,!1)}var UZ="experimental.autoStatus";var SX=C(()=>{sz()});function KB(){return Bz(DZ,!1)}var DZ="experimental.dispatcher";var mq=C(()=>{sz()});import{randomUUID as sg}from"crypto";function Az(J){return`engineCommand.${J}`}function Rz(J){return`engineName.${J}`}function LZ(J){return S1(Rz(J))?.trim()||UB[J]||J}function IX(J){return i1(J??"claude").defaultCommand}function tg(J){let z=[],Y=/"([^"]*)"|'([^']*)'|(\S+)/g;for(let Z=Y.exec(J);Z!==null;Z=Y.exec(J))z.push(Z[1]??Z[2]??Z[3]??"");return z}function cJ(J,z){let Y=J??"claude",Z=S1(Az(Y))?.trim(),G=(()=>{if(Z){let X=tg(Z);if(X.length>0)return X}return IX(Y)})();return eg(G,Y,z)}function eg(J,z,Y){let Z=Y?.trim();if(!Z)return J;let G=z??"claude";if(!i1(G).effortLevels?.includes(Z))return J;if(G==="codex")return[...J,"-c",`model_reasoning_effort=${Z}`];return J}function HG(J,z){if((z??"claude")!=="claude")return{argv:J,sessionId:null};if(J.some((Z)=>J2.has(Z)))return{argv:J,sessionId:null};let Y=sg();return{argv:[...J,"--session-id",Y],sessionId:Y}}function FZ(){let J=(z)=>/^[A-Za-z0-9_/.:=-]+$/.test(z)?z:`'${z.replace(/'/g,"'\\''")}'`;try{return[...y1(),"api"].map(J).join(" ")}catch{return"kobe api"}}function z2(J,z=FZ()){return[`You are running inside kobe (a local multi-session task manager) as task ${J}.`,"kobe tracks a lifecycle status for this task on a board.","When you have COMPLETED the work requested in this session and verified it, report it by running:",` ${z} set-status --task-id ${J} --status in_review`,"Run it only when the work is genuinely done \u2014 never while you are asking the user a question, waiting for input, or mid-task.","Never set any other status value; everything beyond in_review is the user's decision."].join(`
36
- `)}function Y2(J,z=FZ()){return["kobe shares hard-won discoveries between its parallel sessions as one-line field notes.","When you RESOLVE a non-obvious, repo-level gotcha (a build flag, a flaky test, an environment quirk, an API trap), file it:",` ${z} note --task-id ${J} --text "<one line: the verified conclusion>"`,"File only verified conclusions another session could act on \u2014 never progress logs, opinions, or details specific to your own task. A handful per session at most."].join(`
37
- `)}function Z2(J,z=FZ(),Y={}){let Z=[];if((Y.status??vq)())Z.push(z2(J,z));if((Y.notes??KB)())Z.push(Y2(J,z));return Z.length>0?Z.join(`
38
-
39
- `):null}function cq(J,z,Y,Z={}){if(!Y)return J;if((z??"claude")!=="claude")return J;if(J.includes("--append-system-prompt")||J.includes("--append-system-prompt-file"))return J;let G=Z2(Y,FZ(),Z);if(!G)return J;return[...J,"--append-system-prompt",G]}function G2(J,z=FZ()){return[`You are running inside kobe (a local multi-session task manager) as this repository's DISPATCHER (task ${J}, the repo's main session).`,"kobe runs multiple worktree task sessions on this repo in parallel. When one of them resolves a non-obvious gotcha, it files a one-line field note; kobe forwards each note to you as a user message prefixed with [KOBE FIELD NOTE].","Your job is routing that knowledge, fully autonomously \u2014 never ask the user for permission:",` - See the fleet: \`${z} collect --repo .\` (status, running, change counts per task), or \`--task-ids id1,id2\` for specific tasks.`,` - Relay a note to a task that would benefit: \`${z} dispatch --task-id <id> --prompt "[dispatcher] FYI from <author task>: <note verbatim>"\`.`," - Relay to the in-flight tasks whose work plausibly touches the same area \u2014 and to nobody else. If no task benefits, do nothing."," - Never relay a note back to its author, never relay the same note to the same task twice, and keep relays verbatim with provenance \u2014 no summarizing, no embellishment.","Use ONLY the dispatch verb to message sessions \u2014 the `send` verb pastes via tmux and would spawn a DUPLICATE engine for web-hosted sessions. If dispatch fails, report the error in your own session and stop; do not fall back.","Take no action on merge conflicts between tasks \u2014 the board's conflict radar is display-only by design, and resolution timing belongs to the humans and the tasks themselves.","Never run git commands inside other tasks' worktrees."].join(`
40
- `)}function dq(J,z,Y,Z=KB){if(!Y||!Z())return J;if((z??"claude")!=="claude")return J;if(J.includes("--append-system-prompt")||J.includes("--append-system-prompt-file"))return J;return[...J,"--append-system-prompt",G2(Y)]}var UB,J2;var Yz=C(()=>{XY();QY();SX();mq();C1();_1();UB=Object.fromEntries(tY.map((J)=>[J,i1(J).displayName]));J2=new Set(["--session-id","--resume","-r","--continue","-c","--from-pr"])});var TK={};q1(TK,{archivedHistoryPreviewEnabled:()=>DB,ARCHIVED_HISTORY_PREVIEW_KEY:()=>yX});function DB(){return Bz(yX,!1)}var yX="experimental.archivedHistoryPreview";var nq=C(()=>{sz()});import{spawnSync as X2}from"child_process";function xK(J,z){if(J==="darwin")return"pbcopy";if(J==="linux"){for(let Y of Q2)if(z(Y.binary))return Y.command;return null}return null}function EK(J){let z=[["set-option","-g","set-clipboard","on"]];if(J)for(let Y of q2)for(let Z of H2)z.push(["bind-key","-T",Y,Z,"send-keys","-X","copy-pipe-and-cancel",J]);return z}var Q2,uK=(J)=>{try{let z=process.platform==="win32"?"where":"which";return X2(z,[J],{encoding:"utf8"}).status===0}catch{return!1}},q2,H2;var wK=C(()=>{Q2=[{binary:"wl-copy",command:"wl-copy"},{binary:"xclip",command:"xclip -selection clipboard -in"},{binary:"xsel",command:"xsel --clipboard --input"}];q2=["copy-mode","copy-mode-vi"],H2=["MouseDragEnd1Pane","y","Enter"]});import{existsSync as PK,readFileSync as f2}from"fs";function hK(){MZ=null}function j2(){let J=JV();if(PK(J))return{canonical:J,found:J};let z=J.replace(/\.yaml$/,".yml");if(PK(z))return{canonical:J,found:z};return{canonical:J,found:null}}function iq(){if(MZ)return MZ;let{canonical:J,found:z}=j2();if(!z)return MZ={path:J,exists:!1,doc:null,warnings:[]},MZ;let Y=[],Z=null;try{let G=f2(z,"utf8");Z=Bun.YAML.parse(G)}catch(G){let X=G instanceof Error?G.message:String(G);Y.push(`could not read/parse ${z}: ${X}`)}return MZ={path:J,exists:!0,doc:Z,warnings:Y},MZ}var MZ=null;var LB=C(()=>{p1()});function fG(J,z){let Y=`alternating [${J}, ${z}] pairs`;return{layout:Y,validateCount:(Z)=>Z>=2&&Z%2===0?null:`needs ${Y} (an even number of chords \u2014 got ${Z})`}}function L2(J,z){let Y=J.trim().toLowerCase();if(!Y)return{error:"empty chord"};let Z=Y.split("+"),G=Z.pop()??"";if(G===""&&Z.length>0){if(G="+",Z[Z.length-1]==="")Z.pop()}if(!G)return{error:`"${J}": no key after the modifiers`};let X=new Set;for(let f of Z){let j=V2[f];if(!j)return{error:`"${J}": unknown modifier "${f}" (use ctrl / cmd / alt / shift)`};X.add(j)}if(G=K2[G]??G,X.has("shift")&&G.length===1&&!z?.allowShiftCharacter)return{error:`"${J}": shift+<character> can never match \u2014 terminals deliver shift+letter as a plain character, not a modifier event`};let Q=D2.filter((f)=>X.has(f)).join("+"),H=Q?`${Q}+${G}`:G;if(G.length>1&&!U2.has(G))return{chord:H,warning:`"${J}": unrecognized key name "${G}" \u2014 the chord may never fire`};return{chord:H}}function lq(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}function F2(J){if(J==="darwin")return["darwin","macos","mac"];if(J==="win32")return["win32","windows"];return[J]}function M2(J){if(!lq(J))return null;let z=J.bindings;if(lq(z))return z;return J}function $q(J,z,Y){let Z=[];if(J===null||J===void 0)return{entries:[],warnings:Z};if(!lq(J))return{entries:[],warnings:["config root must be a YAML mapping (e.g. a top-level `bindings:` key)"]};let G=new Map,X=[];if(J.bindings!==void 0)if(lq(J.bindings))X.push(J.bindings);else Z.push("`bindings:` must be a mapping of id \u2192 chord(s)");for(let Q of F2(z)){let H=J[Q];if(H===void 0)continue;let f=M2(H);if(f)X.push(f);else Z.push(`\`${Q}:\` must be a mapping (or contain a \`bindings:\` mapping)`)}for(let Q of X)for(let[H,f]of Object.entries(Q)){if(f===null||f===!1||Array.isArray(f)&&f.length===0){G.set(H,[]);continue}let j=typeof f==="string"?[f]:Array.isArray(f)?f:null;if(!j){Z.push(`${H}: expected a chord string, a list of chords, or null \u2014 got ${typeof f}`);continue}let V=[],B=!1;for(let K of j){if(typeof K!=="string"){Z.push(`${H}: chord entries must be strings`),B=!0;continue}let L=L2(K,Y?.chordOptsFor?.(H));if("error"in L){Z.push(`${H}: ${L.error}`),B=!0;continue}if(L.warning)Z.push(`${H}: ${L.warning}`);if(!V.includes(L.chord))V.push(L.chord)}if(V.length===0&&B){Z.push(`${H}: no valid chords \u2014 keeping the default`);continue}G.set(H,V)}return{entries:Array.from(G,([Q,H])=>({id:Q,keys:H})),warnings:Z}}function O2(J,z){return J===z||J==="global"||z==="global"}function vK(J,z){let Y=[],Z=[];for(let G of z){let X=J.find((B)=>B.id===G.id);if(!X){Y.push(`${G.id}: unknown binding id (press F1 in kobe for the full list)`);continue}let Q=FB[G.id];if(Q){Y.push(`${G.id}: not customizable \u2014 ${Q}`);continue}if(X.keys.length===0){Y.push(`${G.id}: not customizable \u2014 the key is handled outside the keymap (doc-only row)`);continue}let H=B2[G.id];if(H&&G.keys.length>0){let B=H.validateCount(G.keys.length);if(B){Y.push(`${G.id}: ${B} \u2014 keeping the default`);continue}}let f=G.keys.filter((B)=>{if(B.length===1&&W2.has(X.scope))return Y.push(`${G.id}: "${B}" dropped \u2014 a bare character on a ${X.scope}-scope binding would steal typed input (add a modifier)`),!1;return!0});if(f.length===0&&G.keys.length>0){Y.push(`${G.id}: no chords survived validation \u2014 keeping the default`);continue}if(H&&f.length!==G.keys.length){Y.push(`${G.id}: a dropped chord would shift the slot layout (${H.layout}) \u2014 keeping the default`);continue}let j=X.keys,V=X;if(V.keys=f,X.hint)if(f.length===0)V.hint=void 0;else X.hint.keys=f.join("/");Z.push({id:G.id,keys:f,defaultKeys:j})}for(let G of Z)for(let X of G.keys){let Q=J.find((H)=>H.id===G.id);if(!Q)continue;for(let H of J){if(H.id===G.id)continue;if(!H.keys.includes(X))continue;if(!O2(Q.scope,H.scope))continue;Y.push(`${G.id}: "${X}" also fires ${H.id} (${H.scope} scope) \u2014 last registration wins; consider a different chord`)}}return{applied:Z,warnings:Y}}var FB,B2,W2,V2,K2,U2,D2;var aq=C(()=>{FB={"focus.numeric":"pane focus is positional (h/j/k/l \u2192 pane) and mirrors the tmux-layer ctrl+hjkl bindings \u2014 rebind tmux.focus instead","sidebar.goto":"gg vs Shift+G is discriminated via evt.shift; shift+<letter> chords are inexpressible, so a rebind can't carry both halves","sidebar.pin":"fires on Shift+P via evt.shift; shift+<letter> chords are inexpressible, so a rebind can't work","sidebar.localMerge":"fires on Shift+M via evt.shift; shift+<letter> chords are inexpressible, so a rebind can't work","chat.question.nav":"the question picker has no live registration site (display-only row) \u2014 rebinding would change Help without changing behavior","chat.question.pick-number":"digits map to options positionally and the question picker has no live registration site (display-only row)"};B2={"sidebar.nav":fG("down","up"),"files.nav":fG("down","up"),"sidebar.search.nav":fG("down","up"),"files.hierarchy":fG("collapse","expand"),"sidebar.view":fG("previous view","next view"),"files.tab":fG("previous tab","next tab")},W2=new Set(["global","workspace","terminal"]),V2={ctrl:"ctrl",control:"ctrl",ctl:"ctrl",cmd:"cmd",command:"cmd",meta:"cmd",super:"cmd",win:"cmd",alt:"alt",option:"alt",opt:"alt",shift:"shift"},K2={esc:"escape",spacebar:"space",pgup:"pageup",pgdn:"pagedown",pgdown:"pagedown"},U2=new Set(["up","down","left","right","pageup","pagedown","home","end","insert","delete","backspace","tab","space","escape","enter","return",...Array.from({length:12},(J,z)=>`f${z+1}`)]),D2=["ctrl","cmd","alt","shift"]});function jG(J){return J in mK}function RZ(J,z){let Y=J.split("+"),Z=Y.pop()??"";if(Z===""&&Y.length>0){if(Z="+",Y[Y.length-1]==="")Y.pop()}let G=new Set(Y);if(G.has("cmd"))return{error:`"${J}": the Command key never reaches tmux \u2014 use ctrl/alt/shift`};let X;if(Z.length===1)X=G.has("shift")?Z.toUpperCase():Z;else{let f=R2[Z];if(!f)return{error:`"${J}": tmux can't bind the key "${Z}"`};X=f}let Q=/^f\d+$/.test(Z);if(G.size===0&&!Q&&!z?.allowBare)return{error:`"${J}": tmux session keys are no-prefix root bindings live in every pane \u2014 a bare key would shadow typing (add a modifier, or use an F-key)`};let H="";if(G.has("ctrl"))H+="C-";if(G.has("alt"))H+="M-";if(G.has("shift"))H+="S-";return{key:H+X}}function dK(){let J={};for(let[Y,Z]of Object.entries(AZ)){let G=RZ(Z,{allowBare:jG(Y)});if("error"in G)throw Error(`default tmux chord for ${Y} failed to translate: ${G.error}`);J[Y]={chord:Z,key:G.key}}let z=uY.map((Y)=>{let Z=RZ(Y);if("error"in Z)throw Error(`default tmux focus chord ${Y} failed to translate`);return{chord:Y,key:Z.key}});return{binds:J,focus:z,overridden:new Set,warnings:[]}}function MB(J){let z=dK(),Y=new Set;for(let Z of J){if(!Z.id.startsWith("tmux."))continue;if(Z.id===vz){if(Z.keys.length===0){z.focus=[null,null,null,null],Y.add(vz);continue}if(Z.keys.length!==uY.length){z.warnings.push(`${vz}: needs exactly 4 chords in order left/down/up/right (got ${Z.keys.length}) \u2014 keeping the default`);continue}let H=[],f=!0;for(let j of Z.keys){let V=RZ(j);if("error"in V){z.warnings.push(`${vz}: ${V.error} \u2014 keeping the default`),f=!1;break}H.push({chord:j,key:V.key})}if(!f)continue;z.focus=H,Y.add(vz);continue}if(!(Z.id in AZ)){z.warnings.push(`${Z.id}: unknown tmux binding id`);continue}let G=Z.id;if(Z.keys.length===0){z.binds[G]=null,Y.add(G);continue}if(Z.keys.length>1)z.warnings.push(`${G}: tmux bindings take ONE chord \u2014 using "${Z.keys[0]}", ignoring the rest`);let X=Z.keys[0],Q=RZ(X,{allowBare:jG(G)});if("error"in Q){z.warnings.push(`${G}: ${Q.error} \u2014 keeping the default`);continue}if(X!==AZ[G])Y.add(G);z.binds[G]={chord:X,key:Q.key}}return z.overridden=Y,z}function OB(J){return J.startsWith("tmux.")?{allowShiftCharacter:!0}:{}}function nK(){OZ=null}function _q(){if(OZ)return OZ;let J=iq();if(!J.exists||J.doc===null)return OZ=dK(),OZ;let z=$q(J.doc,process.platform,{chordOptsFor:OB}),Y=z.warnings.filter((G)=>G.startsWith("tmux.")),Z=MB(z.entries);Z.warnings=[...Y,...Z.warnings];for(let G of Z.warnings)console.warn(`[kobe/keybindings] ${G}`);return OZ=Z,OZ}var A2,mK,cK,AZ,vz="tmux.focus",uY,R2,OZ=null;var pq=C(()=>{LB();aq();A2={"tmux.detach":"ctrl+q","tmux.tab.new":"ctrl+t","tmux.tab.chooseEngine":"ctrl+shift+t","tmux.tab.prev":"ctrl+[","tmux.tab.next":"ctrl+]","tmux.tab.close":"ctrl+w","tmux.tab.rename":"f2"},mK={"tmux.layout.workspaceSplit":"s","tmux.layout.workspaceClose":"x","tmux.layout.workspaceReset":"r","tmux.layout.tasksToggle":"a","tmux.layout.opsToggle":"o","tmux.layout.terminalToggle":"z","tmux.layout.zenToggle":"space"},cK=["F6","F7","F8","F9","F10","F11"],AZ={...A2,...mK};uY=["ctrl+h","ctrl+j","ctrl+k","ctrl+l"],R2={up:"Up",down:"Down",left:"Left",right:"Right",pageup:"PgUp",pagedown:"PgDn",home:"Home",end:"End",insert:"IC",delete:"DC",backspace:"BSpace",tab:"Tab",space:"Space",escape:"Escape",enter:"Enter",return:"Enter",...Object.fromEntries(Array.from({length:12},(J,z)=>[`f${z+1}`,`F${z+1}`]))}});async function TX(J,z){let Y=null;for(let G=0;G<24;G++){let X=await BG(J);if(X){if(!z)return{pane:X,ready:!0};let Q=(await WG(X)).trim();if(Q.length>0&&Q===Y)return{pane:X,ready:!0};Y=Q}await iK(250)}return{pane:await BG(J)||await AB(J),ready:!1}}async function xX(J,z){let Y=`kobe-api-${J.replace(/[^A-Za-z0-9]/g,"")}`;await d0(["set-buffer","-b",Y,"--",z]),await d0(["paste-buffer","-p","-d","-b",Y,"-t",J]),await iK(g2),await uX(J,"Enter")}async function lK(J,z){let{pane:Y}=await TX(J,!0);if(!Y)return;await xX(Y,z.text)}var iK=(J)=>new Promise((z)=>setTimeout(z,J)),g2=150;var rq=C(()=>{c1()});function $K(J,z){if(J===null)return{kind:"create",reason:"no session with this name \u2014 build fresh"};let Y=J.worktree===z.cwd,Z=!z.vendor||J.vendor===z.vendor;if(J.claudePaneAlive&&Y&&Z)return{kind:"reuse",reason:"healthy: engine pane alive, worktree + vendor match"};if(Y&&!Z&&z.hasEngineCommand)return{kind:"respawn-engine",reason:`vendor drift: session tagged ${J.vendor===""?"<untagged>":`"${J.vendor}"`}, task wants "${z.vendor}" \u2014 relaunch engine pane in place (KOB-232)`};if(Y&&Z&&J.windowCount>1)return{kind:"reuse",reason:"active window's engine pane is gone but sibling chat tabs exist \u2014 reuse rather than drop them"};if(!Y)return{kind:"rebuild",reason:J.worktree===""?"legacy session with no @kobe_worktree tag \u2014 rebuild in the right place":`worktree drift: session tagged "${J.worktree}", task wants "${z.cwd}" \u2014 rebuild`};if(!Z)return{kind:"rebuild",reason:"vendor drift but no engine command to respawn with \u2014 rebuild"};return{kind:"rebuild",reason:"single-window session whose engine pane was destroyed \u2014 rebuild"}}var VG;var oq=C(()=>{VG={$schema:"https://opencode.ai/theme.json",defs:{darkBg:"#141413",darkBgRaised:"#1A1917",darkBgInset:"#2B2A27",darkBgMenu:"#33312E",darkBorderSubtle:"#2B2A27",darkBorder:"#3A3835",darkBorderActive:"#5C5853",darkText:"#EAE7DF",darkTextMuted:"#A9A39A",darkTextSubtle:"#6B665F",darkPrimary:"#CC785C",darkSecondary:"#D4967E",darkAccent:"#CC785C",darkAccentHover:"#E0AB96",darkRed:"#D47563",darkOrange:"#D97757",darkYellow:"#E8C96B",darkGreen:"#9ACA86",darkBlue:"#61AAF2",darkViolet:"#9B87F5",darkTerracotta:"#BF4D43",lightBg:"#FAF9F5",lightBgRaised:"#F0EEE6",lightBgInset:"#EAE7DF",lightBgMenu:"#E2DED4",lightBorderSubtle:"#EAE7DF",lightBorder:"#D9D5CC",lightBorderActive:"#A9A39A",lightText:"#1A1917",lightTextMuted:"#6B665F",lightTextSubtle:"#8D877D",lightPrimary:"#C96442",lightSecondary:"#B85F3D",lightAccent:"#CC785C",lightAccentHover:"#B85F3D",lightRed:"#A84B3A",lightOrange:"#C96442",lightYellow:"#8A6220",lightGreen:"#2E7C4C",lightBlue:"#207FDE",lightViolet:"#7B5BB6",lightTerracotta:"#BF4D43"},theme:{primary:{dark:"darkPrimary",light:"lightPrimary"},secondary:{dark:"darkSecondary",light:"lightSecondary"},accent:{dark:"darkAccent",light:"lightAccent"},error:{dark:"darkRed",light:"lightRed"},warning:{dark:"darkYellow",light:"lightYellow"},success:{dark:"darkGreen",light:"lightGreen"},info:{dark:"darkBlue",light:"lightBlue"},text:{dark:"darkText",light:"lightText"},textMuted:{dark:"darkTextMuted",light:"lightTextMuted"},background:{dark:"darkBg",light:"lightBg"},backgroundPanel:{dark:"darkBgRaised",light:"lightBgRaised"},backgroundElement:{dark:"darkBgInset",light:"lightBgInset"},backgroundMenu:{dark:"darkBgMenu",light:"lightBgMenu"},backgroundDialog:{dark:"darkBgRaised",light:"lightBgRaised"},border:{dark:"darkBorder",light:"lightBorder"},borderActive:{dark:"darkBorderActive",light:"lightBorderActive"},borderSubtle:{dark:"darkBorderSubtle",light:"lightBorderSubtle"},diffAdded:{dark:"darkGreen",light:"lightGreen"},diffRemoved:{dark:"darkRed",light:"lightRed"},diffContext:{dark:"darkTextMuted",light:"lightTextSubtle"},diffHunkHeader:{dark:"darkTextMuted",light:"lightTextSubtle"},diffHighlightAdded:{dark:"#B5E0A0",light:"#1F6638"},diffHighlightRemoved:{dark:"#E89180",light:"#8A3A2C"},diffAddedBg:{dark:"#1F2A1F",light:"#E5EEDF"},diffRemovedBg:{dark:"#2A1F1C",light:"#F5DAD3"},diffContextBg:{dark:"darkBgRaised",light:"lightBgRaised"},diffLineNumber:{dark:"darkTextSubtle",light:"lightTextSubtle"},diffAddedLineNumberBg:{dark:"#1A2419",light:"#D5E2CC"},diffRemovedLineNumberBg:{dark:"#241915",light:"#EBC8BE"},markdownText:{dark:"darkText",light:"lightText"},markdownHeading:{dark:"darkPrimary",light:"lightPrimary"},markdownLink:{dark:"darkAccent",light:"lightAccent"},markdownLinkText:{dark:"darkBlue",light:"lightBlue"},markdownCode:{dark:"darkSecondary",light:"lightSecondary"},markdownBlockQuote:{dark:"darkTextMuted",light:"lightTextMuted"},markdownEmph:{dark:"darkYellow",light:"lightYellow"},markdownStrong:{dark:"darkPrimary",light:"lightPrimary"},markdownHorizontalRule:{dark:"darkTextMuted",light:"lightTextMuted"},markdownListItem:{dark:"darkAccent",light:"lightAccent"},markdownListEnumeration:{dark:"darkBlue",light:"lightBlue"},markdownImage:{dark:"darkAccent",light:"lightAccent"},markdownImageText:{dark:"darkBlue",light:"lightBlue"},markdownCodeBlock:{dark:"darkText",light:"lightText"},markdownQuote:{dark:"darkTextMuted",light:"lightTextMuted"},syntaxComment:{dark:"darkTextSubtle",light:"lightTextSubtle"},syntaxKeyword:{dark:"darkPrimary",light:"lightPrimary"},syntaxFunction:{dark:"darkBlue",light:"lightBlue"},syntaxVariable:{dark:"darkText",light:"lightText"},syntaxString:{dark:"darkGreen",light:"lightGreen"},syntaxNumber:{dark:"darkOrange",light:"lightOrange"},syntaxType:{dark:"darkViolet",light:"lightViolet"},syntaxOperator:{dark:"darkSecondary",light:"lightSecondary"},syntaxPunctuation:{dark:"darkText",light:"lightText"},selectedListItemText:{dark:"darkBg",light:"lightBg"}}}});var KG;var sq=C(()=>{KG={$schema:"https://opencode.ai/theme.json",defs:{darkStep1:"#0a0a0a",darkStep2:"#111111",darkStep3:"#181818",darkStep4:"#1f1f1f",darkStep5:"#2a2a2a",darkStep6:"#363636",darkStep7:"#444444",darkStep8:"#5a5a5a",darkStep9:"#7a7a7a",darkStep10:"#9a9a9a",darkStep11:"#909090",darkStep12:"#e8e8e8",darkAccent:"#7da5c8",darkAccentBright:"#9bc3e3",darkRed:"#e06c75",darkOrange:"#d6a668",darkGreen:"#7fd88f",darkCyan:"#7da5c8",darkYellow:"#d6a668",lightStep1:"#fafafa",lightStep2:"#f3f3f3",lightStep3:"#ececec",lightStep4:"#e2e2e2",lightStep5:"#d4d4d4",lightStep6:"#bdbdbd",lightStep7:"#9c9c9c",lightStep8:"#7c7c7c",lightStep9:"#5b5b5b",lightStep10:"#404040",lightStep11:"#6c6c6c",lightStep12:"#1a1a1a",lightAccent:"#3d6f9f",lightAccentBright:"#1a4f87",lightRed:"#c9343a",lightOrange:"#a06b1a",lightGreen:"#3d9a57",lightCyan:"#3d6f9f",lightYellow:"#a06b1a"},theme:{primary:{dark:"darkStep12",light:"lightStep12"},secondary:{dark:"darkAccentBright",light:"lightAccentBright"},accent:{dark:"darkAccent",light:"lightAccent"},error:{dark:"darkRed",light:"lightRed"},warning:{dark:"darkOrange",light:"lightOrange"},success:{dark:"darkGreen",light:"lightGreen"},info:{dark:"darkCyan",light:"lightCyan"},text:{dark:"darkStep12",light:"lightStep12"},textMuted:{dark:"darkStep11",light:"lightStep11"},background:{dark:"darkStep1",light:"lightStep1"},backgroundPanel:{dark:"darkStep2",light:"lightStep2"},backgroundElement:{dark:"darkStep3",light:"lightStep3"},backgroundMenu:{dark:"darkStep4",light:"lightStep4"},border:{dark:"darkStep6",light:"lightStep6"},borderActive:{dark:"darkStep8",light:"lightStep8"},borderSubtle:{dark:"darkStep4",light:"lightStep4"},diffAdded:{dark:"#7fd88f",light:"#3d9a57"},diffRemoved:{dark:"#e06c75",light:"#c9343a"},diffContext:{dark:"darkStep10",light:"lightStep10"},diffHunkHeader:{dark:"darkStep10",light:"lightStep10"},diffHighlightAdded:{dark:"#9be5ad",light:"#2d7a3f"},diffHighlightRemoved:{dark:"#f08490",light:"#a82530"},diffAddedBg:{dark:"#15241a",light:"#d8efdc"},diffRemovedBg:{dark:"#2a1518",light:"#f5dadc"},diffContextBg:{dark:"darkStep2",light:"lightStep2"},diffLineNumber:{dark:"darkStep9",light:"lightStep9"},diffAddedLineNumberBg:{dark:"#0f1c14",light:"#c5deca"},diffRemovedLineNumberBg:{dark:"#221012",light:"#e5c5c8"},markdownText:{dark:"darkStep12",light:"lightStep12"},markdownHeading:{dark:"darkStep12",light:"lightStep12"},markdownLink:{dark:"darkAccent",light:"lightAccent"},markdownCode:{dark:"darkAccentBright",light:"lightAccentBright"},markdownCodeBlock:{dark:"darkStep12",light:"lightStep12"},markdownQuote:{dark:"darkStep11",light:"lightStep11"},selectedListItemText:{dark:"darkStep1",light:"lightStep1"}}}});var UG;var tq=C(()=>{UG={$schema:"https://opencode.ai/theme.json",defs:{background:"#282a36",currentLine:"#44475a",selection:"#44475a",foreground:"#f8f8f2",comment:"#6272a4",cyan:"#8be9fd",green:"#50fa7b",orange:"#ffb86c",pink:"#ff79c6",purple:"#bd93f9",red:"#ff5555",yellow:"#f1fa8c"},theme:{primary:{dark:"purple",light:"purple"},secondary:{dark:"pink",light:"pink"},accent:{dark:"cyan",light:"cyan"},error:{dark:"red",light:"red"},warning:{dark:"yellow",light:"yellow"},success:{dark:"green",light:"green"},info:{dark:"orange",light:"orange"},text:{dark:"foreground",light:"#282a36"},textMuted:{dark:"comment",light:"#6272a4"},background:{dark:"#282a36",light:"#f8f8f2"},backgroundPanel:{dark:"#21222c",light:"#e8e8e2"},backgroundElement:{dark:"currentLine",light:"#d8d8d2"},border:{dark:"currentLine",light:"#c8c8c2"},borderActive:{dark:"purple",light:"purple"},borderSubtle:{dark:"#191a21",light:"#e0e0e0"},diffAdded:{dark:"green",light:"green"},diffRemoved:{dark:"red",light:"red"},diffContext:{dark:"comment",light:"#6272a4"},diffHunkHeader:{dark:"comment",light:"#6272a4"},diffHighlightAdded:{dark:"green",light:"green"},diffHighlightRemoved:{dark:"red",light:"red"},diffAddedBg:{dark:"#1a3a1a",light:"#e0ffe0"},diffRemovedBg:{dark:"#3a1a1a",light:"#ffe0e0"},diffContextBg:{dark:"#21222c",light:"#e8e8e2"},diffLineNumber:{dark:"#989aa4",light:"#686865"},diffAddedLineNumberBg:{dark:"#1a3a1a",light:"#e0ffe0"},diffRemovedLineNumberBg:{dark:"#3a1a1a",light:"#ffe0e0"},markdownText:{dark:"foreground",light:"#282a36"},markdownHeading:{dark:"purple",light:"purple"},markdownLink:{dark:"cyan",light:"cyan"},markdownLinkText:{dark:"pink",light:"pink"},markdownCode:{dark:"green",light:"green"},markdownBlockQuote:{dark:"comment",light:"#6272a4"},markdownEmph:{dark:"yellow",light:"yellow"},markdownStrong:{dark:"orange",light:"orange"},markdownHorizontalRule:{dark:"comment",light:"#6272a4"},markdownListItem:{dark:"purple",light:"purple"},markdownListEnumeration:{dark:"cyan",light:"cyan"},markdownImage:{dark:"cyan",light:"cyan"},markdownImageText:{dark:"pink",light:"pink"},markdownCodeBlock:{dark:"foreground",light:"#282a36"},syntaxComment:{dark:"comment",light:"#6272a4"},syntaxKeyword:{dark:"pink",light:"pink"},syntaxFunction:{dark:"green",light:"green"},syntaxVariable:{dark:"foreground",light:"#282a36"},syntaxString:{dark:"yellow",light:"yellow"},syntaxNumber:{dark:"purple",light:"purple"},syntaxType:{dark:"cyan",light:"cyan"},syntaxOperator:{dark:"pink",light:"pink"},syntaxPunctuation:{dark:"foreground",light:"#282a36"}}}});var DG;var eq=C(()=>{DG={$schema:"https://opencode.ai/theme.json",defs:{nord0:"#2E3440",nord1:"#3B4252",nord2:"#434C5E",nord3:"#4C566A",nord4:"#D8DEE9",nord5:"#E5E9F0",nord6:"#ECEFF4",nord7:"#8FBCBB",nord8:"#88C0D0",nord9:"#81A1C1",nord10:"#5E81AC",nord11:"#BF616A",nord12:"#D08770",nord13:"#EBCB8B",nord14:"#A3BE8C",nord15:"#B48EAD"},theme:{primary:{dark:"nord8",light:"nord10"},secondary:{dark:"nord9",light:"nord9"},accent:{dark:"nord7",light:"nord7"},error:{dark:"nord11",light:"nord11"},warning:{dark:"nord12",light:"nord12"},success:{dark:"nord14",light:"nord14"},info:{dark:"nord8",light:"nord10"},text:{dark:"nord6",light:"nord0"},textMuted:{dark:"#8B95A7",light:"nord1"},background:{dark:"nord0",light:"nord6"},backgroundPanel:{dark:"nord1",light:"nord5"},backgroundElement:{dark:"nord2",light:"nord4"},border:{dark:"nord2",light:"nord3"},borderActive:{dark:"nord3",light:"nord2"},borderSubtle:{dark:"nord2",light:"nord3"},diffAdded:{dark:"nord14",light:"nord14"},diffRemoved:{dark:"nord11",light:"nord11"},diffContext:{dark:"#8B95A7",light:"nord3"},diffHunkHeader:{dark:"#8B95A7",light:"nord3"},diffHighlightAdded:{dark:"nord14",light:"nord14"},diffHighlightRemoved:{dark:"nord11",light:"nord11"},diffAddedBg:{dark:"#3B4252",light:"#E5E9F0"},diffRemovedBg:{dark:"#3B4252",light:"#E5E9F0"},diffContextBg:{dark:"nord1",light:"nord5"},diffLineNumber:{dark:"#a9aeb6",light:"textMuted"},diffAddedLineNumberBg:{dark:"#3B4252",light:"#E5E9F0"},diffRemovedLineNumberBg:{dark:"#3B4252",light:"#E5E9F0"},markdownText:{dark:"nord4",light:"nord0"},markdownHeading:{dark:"nord8",light:"nord10"},markdownLink:{dark:"nord9",light:"nord9"},markdownLinkText:{dark:"nord7",light:"nord7"},markdownCode:{dark:"nord14",light:"nord14"},markdownBlockQuote:{dark:"#8B95A7",light:"nord3"},markdownEmph:{dark:"nord12",light:"nord12"},markdownStrong:{dark:"nord13",light:"nord13"},markdownHorizontalRule:{dark:"#8B95A7",light:"nord3"},markdownListItem:{dark:"nord8",light:"nord10"},markdownListEnumeration:{dark:"nord7",light:"nord7"},markdownImage:{dark:"nord9",light:"nord9"},markdownImageText:{dark:"nord7",light:"nord7"},markdownCodeBlock:{dark:"nord4",light:"nord0"},syntaxComment:{dark:"#8B95A7",light:"nord3"},syntaxKeyword:{dark:"nord9",light:"nord9"},syntaxFunction:{dark:"nord8",light:"nord8"},syntaxVariable:{dark:"nord7",light:"nord7"},syntaxString:{dark:"nord14",light:"nord14"},syntaxNumber:{dark:"nord15",light:"nord15"},syntaxType:{dark:"nord7",light:"nord7"},syntaxOperator:{dark:"nord9",light:"nord9"},syntaxPunctuation:{dark:"nord4",light:"nord0"}}}});var LG;var JH=C(()=>{LG={$schema:"https://opencode.ai/theme.json",defs:{darkStep1:"#161616",darkStep2:"#1f1f1f",darkStep3:"#282828",darkStep4:"#323232",darkStep5:"#3c3c3c",darkStep6:"#484848",darkStep7:"#545454",darkStep8:"#6a6a6a",darkStep9:"#fab283",darkStep10:"#ffc09f",darkStep11:"#808080",darkStep12:"#eeeeee",darkSecondary:"#5c9cf5",darkAccent:"#7da5c8",darkRed:"#e06c75",darkOrange:"#f5a742",darkGreen:"#7fd88f",darkCyan:"#56b6c2",darkYellow:"#e5c07b",lightStep1:"#ffffff",lightStep2:"#fafafa",lightStep3:"#f5f5f5",lightStep4:"#ebebeb",lightStep5:"#e1e1e1",lightStep6:"#d4d4d4",lightStep7:"#b8b8b8",lightStep8:"#a0a0a0",lightStep9:"#3b7dd8",lightStep10:"#2968c3",lightStep11:"#8a8a8a",lightStep12:"#1a1a1a",lightSecondary:"#7b5bb6",lightAccent:"#3d6f9f",lightRed:"#d1383d",lightOrange:"#d68c27",lightGreen:"#3d9a57",lightCyan:"#318795",lightYellow:"#b0851f"},theme:{primary:{dark:"darkStep9",light:"lightStep9"},secondary:{dark:"darkSecondary",light:"lightSecondary"},accent:{dark:"darkAccent",light:"lightAccent"},error:{dark:"darkRed",light:"lightRed"},warning:{dark:"darkOrange",light:"lightOrange"},success:{dark:"darkGreen",light:"lightGreen"},info:{dark:"darkCyan",light:"lightCyan"},text:{dark:"darkStep12",light:"lightStep12"},textMuted:{dark:"darkStep11",light:"lightStep11"},background:{dark:"darkStep1",light:"lightStep1"},backgroundPanel:{dark:"darkStep2",light:"lightStep2"},backgroundElement:{dark:"darkStep3",light:"lightStep3"},border:{dark:"darkStep7",light:"lightStep7"},borderActive:{dark:"darkStep8",light:"lightStep8"},borderSubtle:{dark:"darkStep6",light:"lightStep6"},diffAdded:{dark:"#4fd6be",light:"#1e725c"},diffRemoved:{dark:"#c53b53",light:"#c53b53"},diffContext:{dark:"#828bb8",light:"#7086b5"},diffHunkHeader:{dark:"#828bb8",light:"#7086b5"},diffHighlightAdded:{dark:"#b8db87",light:"#4db380"},diffHighlightRemoved:{dark:"#e26a75",light:"#f52a65"},diffAddedBg:{dark:"#20303b",light:"#d5e5d5"},diffRemovedBg:{dark:"#37222c",light:"#f7d8db"},diffContextBg:{dark:"darkStep2",light:"lightStep2"},diffLineNumber:{dark:"#8f8f8f",light:"#595959"},diffAddedLineNumberBg:{dark:"#1b2b34",light:"#c5d5c5"},diffRemovedLineNumberBg:{dark:"#2d1f26",light:"#e7c8cb"},markdownText:{dark:"darkStep12",light:"lightStep12"},markdownHeading:{dark:"darkAccent",light:"lightAccent"},markdownLink:{dark:"darkStep9",light:"lightStep9"},markdownLinkText:{dark:"darkCyan",light:"lightCyan"},markdownCode:{dark:"darkGreen",light:"lightGreen"},markdownBlockQuote:{dark:"darkYellow",light:"lightYellow"},markdownEmph:{dark:"darkYellow",light:"lightYellow"},markdownStrong:{dark:"darkOrange",light:"lightOrange"},markdownHorizontalRule:{dark:"darkStep11",light:"lightStep11"},markdownListItem:{dark:"darkStep9",light:"lightStep9"},markdownListEnumeration:{dark:"darkCyan",light:"lightCyan"},markdownImage:{dark:"darkStep9",light:"lightStep9"},markdownImageText:{dark:"darkCyan",light:"lightCyan"},markdownCodeBlock:{dark:"darkStep12",light:"lightStep12"},syntaxComment:{dark:"darkStep11",light:"lightStep11"},syntaxKeyword:{dark:"darkAccent",light:"lightAccent"},syntaxFunction:{dark:"darkStep9",light:"lightStep9"},syntaxVariable:{dark:"darkRed",light:"lightRed"},syntaxString:{dark:"darkGreen",light:"lightGreen"},syntaxNumber:{dark:"darkOrange",light:"lightOrange"},syntaxType:{dark:"darkYellow",light:"lightYellow"},syntaxOperator:{dark:"darkCyan",light:"lightCyan"},syntaxPunctuation:{dark:"darkStep12",light:"lightStep12"}}}});var FG;var zH=C(()=>{FG={$schema:"https://opencode.ai/theme.json",defs:{darkBg0:"#111c18",darkBg1:"#1a2520",darkBg2:"#23372B",darkBg3:"#3d4a44",darkFg0:"#C1C497",darkFg1:"#9aa88a",darkGray:"#53685B",darkRed:"#FF5345",darkGreen:"#549e6a",darkYellow:"#459451",darkBlue:"#509475",darkMagenta:"#D2689C",darkCyan:"#2DD5B7",darkWhite:"#F6F5DD",darkRedBright:"#db9f9c",darkGreenBright:"#63b07a",darkYellowBright:"#E5C736",darkBlueBright:"#ACD4CF",darkMagentaBright:"#75bbb3",darkCyanBright:"#8CD3CB",lightBg0:"#F6F5DD",lightBg1:"#E8E7CC",lightBg2:"#D5D4B8",lightBg3:"#A8A78C",lightFg0:"#111c18",lightFg1:"#1a2520",lightGray:"#53685B",lightRed:"#c7392d",lightGreen:"#3d7a52",lightYellow:"#b5a020",lightBlue:"#3d7560",lightMagenta:"#a8527a",lightCyan:"#1faa90"},theme:{primary:{dark:"darkCyan",light:"lightCyan"},secondary:{dark:"darkMagenta",light:"lightMagenta"},accent:{dark:"darkGreen",light:"lightGreen"},error:{dark:"darkRed",light:"lightRed"},warning:{dark:"darkYellowBright",light:"lightYellow"},success:{dark:"darkGreen",light:"lightGreen"},info:{dark:"darkCyan",light:"lightCyan"},text:{dark:"darkFg0",light:"lightFg0"},textMuted:{dark:"darkGray",light:"lightGray"},background:{dark:"darkBg0",light:"lightBg0"},backgroundPanel:{dark:"darkBg1",light:"lightBg1"},backgroundElement:{dark:"darkBg2",light:"lightBg2"},border:{dark:"darkBg3",light:"lightBg3"},borderActive:{dark:"darkCyan",light:"lightCyan"},borderSubtle:{dark:"darkBg2",light:"lightBg2"},diffAdded:{dark:"darkGreen",light:"lightGreen"},diffRemoved:{dark:"darkRed",light:"lightRed"},diffContext:{dark:"darkGray",light:"lightGray"},diffHunkHeader:{dark:"darkCyan",light:"lightCyan"},diffHighlightAdded:{dark:"darkGreenBright",light:"lightGreen"},diffHighlightRemoved:{dark:"darkRedBright",light:"lightRed"},diffAddedBg:{dark:"#15241c",light:"#e0eee5"},diffRemovedBg:{dark:"#241515",light:"#eee0e0"},diffContextBg:{dark:"darkBg1",light:"lightBg1"},diffLineNumber:{dark:"#828b87",light:"#5f5e4f"},diffAddedLineNumberBg:{dark:"#121f18",light:"#d5e5da"},diffRemovedLineNumberBg:{dark:"#1f1212",light:"#e5d5d5"},markdownText:{dark:"darkFg0",light:"lightFg0"},markdownHeading:{dark:"darkCyan",light:"lightCyan"},markdownLink:{dark:"darkCyanBright",light:"lightCyan"},markdownLinkText:{dark:"darkGreen",light:"lightGreen"},markdownCode:{dark:"darkGreenBright",light:"lightGreen"},markdownBlockQuote:{dark:"darkGray",light:"lightGray"},markdownEmph:{dark:"darkMagenta",light:"lightMagenta"},markdownStrong:{dark:"darkFg0",light:"lightFg0"},markdownHorizontalRule:{dark:"darkGray",light:"lightGray"},markdownListItem:{dark:"darkCyan",light:"lightCyan"},markdownListEnumeration:{dark:"darkCyanBright",light:"lightCyan"},markdownImage:{dark:"darkCyanBright",light:"lightCyan"},markdownImageText:{dark:"darkGreen",light:"lightGreen"},markdownCodeBlock:{dark:"darkFg0",light:"lightFg0"},syntaxComment:{dark:"darkGray",light:"lightGray"},syntaxKeyword:{dark:"darkCyan",light:"lightCyan"},syntaxFunction:{dark:"darkBlue",light:"lightBlue"},syntaxVariable:{dark:"darkFg0",light:"lightFg0"},syntaxString:{dark:"darkGreenBright",light:"lightGreen"},syntaxNumber:{dark:"darkMagenta",light:"lightMagenta"},syntaxType:{dark:"darkGreen",light:"lightGreen"},syntaxOperator:{dark:"darkYellow",light:"lightYellow"},syntaxPunctuation:{dark:"darkFg0",light:"lightFg0"}}}});var MG;var YH=C(()=>{MG={$schema:"https://opencode.ai/theme.json",defs:{darkStep1:"#1a1b26",darkStep2:"#1e2030",darkStep3:"#222436",darkStep4:"#292e42",darkStep5:"#3b4261",darkStep6:"#545c7e",darkStep7:"#737aa2",darkStep8:"#9099b2",darkStep9:"#82aaff",darkStep10:"#89b4fa",darkStep11:"#828bb8",darkStep12:"#c8d3f5",darkRed:"#ff757f",darkOrange:"#ff966c",darkYellow:"#ffc777",darkGreen:"#c3e88d",darkCyan:"#86e1fc",darkPurple:"#c099ff",lightStep1:"#e1e2e7",lightStep2:"#d5d6db",lightStep3:"#c8c9ce",lightStep4:"#b9bac1",lightStep5:"#a8aecb",lightStep6:"#9699a8",lightStep7:"#737a8c",lightStep8:"#5a607d",lightStep9:"#2e7de9",lightStep10:"#1a6ce7",lightStep11:"#8990a3",lightStep12:"#3760bf",lightRed:"#f52a65",lightOrange:"#b15c00",lightYellow:"#8c6c3e",lightGreen:"#587539",lightCyan:"#007197",lightPurple:"#9854f1"},theme:{primary:{dark:"darkStep9",light:"lightStep9"},secondary:{dark:"darkPurple",light:"lightPurple"},accent:{dark:"darkOrange",light:"lightOrange"},error:{dark:"darkRed",light:"lightRed"},warning:{dark:"darkOrange",light:"lightOrange"},success:{dark:"darkGreen",light:"lightGreen"},info:{dark:"darkStep9",light:"lightStep9"},text:{dark:"darkStep12",light:"lightStep12"},textMuted:{dark:"darkStep11",light:"lightStep11"},background:{dark:"darkStep1",light:"lightStep1"},backgroundPanel:{dark:"darkStep2",light:"lightStep2"},backgroundElement:{dark:"darkStep3",light:"lightStep3"},border:{dark:"darkStep7",light:"lightStep7"},borderActive:{dark:"darkStep8",light:"lightStep8"},borderSubtle:{dark:"darkStep6",light:"lightStep6"},diffAdded:{dark:"#4fd6be",light:"#1e725c"},diffRemoved:{dark:"#c53b53",light:"#c53b53"},diffContext:{dark:"#828bb8",light:"#7086b5"},diffHunkHeader:{dark:"#828bb8",light:"#7086b5"},diffHighlightAdded:{dark:"#b8db87",light:"#4db380"},diffHighlightRemoved:{dark:"#e26a75",light:"#f52a65"},diffAddedBg:{dark:"#20303b",light:"#d5e5d5"},diffRemovedBg:{dark:"#37222c",light:"#f7d8db"},diffContextBg:{dark:"darkStep2",light:"lightStep2"},diffLineNumber:{dark:"#8f909a",light:"#59595b"},diffAddedLineNumberBg:{dark:"#1b2b34",light:"#c5d5c5"},diffRemovedLineNumberBg:{dark:"#2d1f26",light:"#e7c8cb"},markdownText:{dark:"darkStep12",light:"lightStep12"},markdownHeading:{dark:"darkPurple",light:"lightPurple"},markdownLink:{dark:"darkStep9",light:"lightStep9"},markdownLinkText:{dark:"darkCyan",light:"lightCyan"},markdownCode:{dark:"darkGreen",light:"lightGreen"},markdownBlockQuote:{dark:"darkYellow",light:"lightYellow"},markdownEmph:{dark:"darkYellow",light:"lightYellow"},markdownStrong:{dark:"darkOrange",light:"lightOrange"},markdownHorizontalRule:{dark:"darkStep11",light:"lightStep11"},markdownListItem:{dark:"darkStep9",light:"lightStep9"},markdownListEnumeration:{dark:"darkCyan",light:"lightCyan"},markdownImage:{dark:"darkStep9",light:"lightStep9"},markdownImageText:{dark:"darkCyan",light:"lightCyan"},markdownCodeBlock:{dark:"darkStep12",light:"lightStep12"},syntaxComment:{dark:"darkStep11",light:"lightStep11"},syntaxKeyword:{dark:"darkPurple",light:"lightPurple"},syntaxFunction:{dark:"darkStep9",light:"lightStep9"},syntaxVariable:{dark:"darkRed",light:"lightRed"},syntaxString:{dark:"darkGreen",light:"lightGreen"},syntaxNumber:{dark:"darkOrange",light:"lightOrange"},syntaxType:{dark:"darkYellow",light:"lightYellow"},syntaxOperator:{dark:"darkCyan",light:"lightCyan"},syntaxPunctuation:{dark:"darkStep12",light:"lightStep12"}}}});var aK;var _K=C(()=>{oq();sq();tq();eq();JH();zH();YH();aK={claude:VG,conductor:KG,nord:DG,opencode:LG,dracula:UG,tokyonight:MG,"osaka-jade":FG}});function T2(J){let z=/^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/.exec(J);if(!z)return null;let Y=z[1];if(Y.length===3){let[Z,G,X]=Y;return`#${Z}${Z}${G}${G}${X}${X}`.toLowerCase()}return`#${Y.slice(0,6)}`.toLowerCase()}function pK(J,z,Y="dark"){let Z=J.defs??{};function G(Q,H){if(typeof Q==="string"){if(Q==="transparent"||Q==="none")return null;if(Q.startsWith("#"))return T2(Q);if(H.includes(Q))return null;let j=Z[Q]??J.theme[Q];if(j===void 0)return null;return G(j,[...H,Q])}if(!Q||typeof Q!=="object")return null;let f=Q[Y];return typeof f==="string"?G(f,H):null}let X=J.theme[z];if(X===void 0)return null;return G(X,[z])}function ZH(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}function GH(J){if(!ZH(J))return{ok:!1,reason:"theme must be a JSON object at the top level"};let z=J;if(!("theme"in z))return{ok:!1,reason:"missing required key `theme`"};let Y=z.theme;if(!ZH(Y))return{ok:!1,reason:"`theme` must be an object map"};if("defs"in z&&z.defs!==void 0){if(!ZH(z.defs))return{ok:!1,reason:"`defs` must be an object map"};for(let[Z,G]of Object.entries(z.defs))if(typeof G!=="string")return{ok:!1,reason:`defs.${Z} must be a string (hex like "#abc" or a ref name)`}}for(let[Z,G]of Object.entries(Y)){if(typeof G==="string")continue;if(!ZH(G))return{ok:!1,reason:`theme.${Z} must be a string or a { dark, light } object (got ${G===null?"null":Array.isArray(G)?"array":typeof G})`};let X=G;if(typeof X.dark!=="string")return{ok:!1,reason:`theme.${Z}.dark must be a string`};if(typeof X.light!=="string")return{ok:!1,reason:`theme.${Z}.light must be a string`}}if("$schema"in z&&z.$schema!==void 0&&typeof z.$schema!=="string")return{ok:!1,reason:"`$schema` must be a string when present"};return{ok:!0,theme:z}}var RB=()=>{};import{readFileSync as x2,readdirSync as u2}from"fs";import{join as rK}from"path";function OG(){return rK(XJ(),"themes")}function EX(){let J=OG(),z;try{z=u2(J)}catch{return[]}let Y=[];for(let Z of z){if(!Z.endsWith(".json"))continue;let G=rK(J,Z),X;try{let f=x2(G,"utf8");X=JSON.parse(f)}catch(f){let j=f instanceof Error?f.message:String(f);console.warn(`[kobe] skipping user theme ${G}: invalid JSON \u2014 ${j}`);continue}let Q=GH(X);if(!Q.ok){console.warn(`[kobe] skipping user theme ${G}: ${Q.reason}`);continue}let H=Z.slice(0,-5);Y.push({name:H,theme:Q.theme})}return Y}var XH=C(()=>{p1();RB()});import{readFileSync as E2}from"fs";function P2(){try{let J=JSON.parse(E2(oJ(),"utf8")),z=typeof J.activeTheme==="string"&&J.activeTheme?J.activeTheme:"claude",Y=typeof J.focusAccent==="string"&&w2.includes(J.focusAccent)?J.focusAccent:"primary";return{themeName:z,focusAccentSlot:Y,enabled:J.tmuxChromeTheme!=="off"&&J.tmuxBorderTheme!=="off"}}catch{return{themeName:"claude",focusAccentSlot:"primary",enabled:!0}}}function h2(J){return EX().find((Y)=>Y.name===J)?.theme??aK[J]??null}function gz(J,...z){for(let Y of z){let Z=pK(J,Y);if(Z)return Z}return null}function oK(J,z){let Y=gz(J,"text"),Z=gz(J,"background"),G=gz(J,"textMuted","text"),X=gz(J,"backgroundPanel","background"),Q=gz(J,"backgroundElement","backgroundPanel","background"),H=gz(J,"backgroundMenu","backgroundElement","backgroundPanel","background"),f=gz(J,"selectedListItemText","background"),j=gz(J,z,"primary","borderActive","border","text");return{border:gz(J,"border","text"),activeBorder:j,statusBg:X,statusFg:G,statusMutedFg:G,windowFg:G,currentWindowBg:Q,currentWindowFg:j,activityFg:gz(J,"info","primary","text"),bellFg:gz(J,"warning","error","primary","text"),messageBg:H,messageFg:Y,messageCommandFg:j,modeBg:j,modeFg:f??Z}}function Zz(J){let z=[];if(J.bg)z.push(`bg=${J.bg}`);if(J.fg)z.push(`fg=${J.fg}`);if(z.length===0)return null;if(J.attrs)z.push(...J.attrs);return z.join(",")}function tK(J){let z=Zz({bg:J.statusBg,fg:J.statusFg}),Y=Zz({bg:J.statusBg,fg:J.statusMutedFg}),Z=Zz({bg:J.statusBg,fg:J.windowFg});return[{key:"border",option:"pane-border-style",showFlag:"-gwqv",setFlag:"-gw",unsetFlag:"-gwu",value:Zz({fg:J.border})},{key:"active",option:"pane-active-border-style",showFlag:"-gwqv",setFlag:"-gw",unsetFlag:"-gwu",value:Zz({fg:J.activeBorder})},{key:"status",option:"status-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:z},{key:"status-left",option:"status-left-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Y},{key:"status-right",option:"status-right-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Y},{key:"window",option:"window-status-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Z},{key:"current-window",option:"window-status-current-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Zz({bg:J.currentWindowBg,fg:J.currentWindowFg,attrs:["bold"]})},{key:"activity-window",option:"window-status-activity-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Zz({bg:J.statusBg,fg:J.activityFg})},{key:"bell-window",option:"window-status-bell-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Zz({bg:J.statusBg,fg:J.bellFg,attrs:["bold"]})},{key:"last-window",option:"window-status-last-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Zz({bg:J.statusBg,fg:J.statusFg})},{key:"message",option:"message-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Zz({bg:J.messageBg,fg:J.messageFg})},{key:"message-command",option:"message-command-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Zz({bg:J.messageBg,fg:J.messageCommandFg,attrs:["bold"]})},{key:"mode",option:"mode-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Zz({bg:J.modeBg,fg:J.modeFg})},{key:"display-panes",option:"display-panes-colour",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:J.border},{key:"display-panes-active",option:"display-panes-active-colour",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:J.activeBorder}]}function v2(J){let z=new Set(J.marker.split(",").map((X)=>X.trim()).filter(Boolean)),Y=[],Z=[];for(let X of tK(J.hexes))if(X.value){if((J.current[X.key]??"")!==X.value)Y.push(["set-option",X.setFlag,X.option,X.value]);Z.push(X.key)}else if(z.has(X.key))Y.push(["set-option",X.unsetFlag,X.option]);let G=Z.join(",");if(G!==J.marker)Y.push(G?["set-option","-g",gB,G]:["set-option","-gu",gB]);return Y}async function sK(J){let{code:z,stdout:Y}=await a0(J);return z===0?Y.trim():""}async function gZ(){try{let J=P2(),z=J.enabled?h2(J.themeName):null,Y=z?oK(z,J.focusAccentSlot):oK({theme:{}},J.focusAccentSlot),Z=tK(Y),[G,...X]=await Promise.all([sK(["show-options","-gqv",gB]),...Z.map((f)=>sK(["show-options",f.showFlag,f.option]))]),Q=Object.fromEntries(Z.map((f,j)=>[f.key,X[j]??""])),H=v2({marker:G,current:Q,hexes:Y});if(H.length>0)await $1(H)}catch{}}var gB="@kobe_border_theme",w2;var QH=C(()=>{p1();c1();_K();XH();w2=["primary","success","info"]});function eK(){return Bz(qH,!0)}function HH(){return Bz(JU,!1)}function zU(J){WV(JU,J)}var qH="zen.keepTasks",JU="zen.active";var NB=C(()=>{sz()});var fH={};q1(fH,{recordGen:()=>EY,isLatestGen:()=>QU,genAgeMs:()=>$2,coalesceLayoutWork:()=>a2,RESIZE_GUARD_MS:()=>l2,LAYOUT_COALESCE_MS:()=>GU});import{createHash as m2,randomUUID as c2}from"crypto";import{mkdirSync as d2,readFileSync as YU,renameSync as n2,writeFileSync as i2}from"fs";import{join as ZU}from"path";function XU(){return ZU(XJ(),"layout-coord")}function CB(J,z){let Y=m2("sha1").update(J).digest("hex").slice(0,16);return ZU(XU(),`${Y}.${z}`)}function EY(J,z){let Y=c2();try{d2(XU(),{recursive:!0});let Z=CB(J,z),G=`${Z}.${Y}.tmp`;i2(G,`${Date.now()}
41
- ${Y}`),n2(G,Z)}catch{}return Y}function QU(J,z,Y){try{return YU(CB(J,z),"utf8").split(`
42
- `)[1]?.trim()===Y}catch{return!0}}function $2(J,z,Y=Date.now()){try{let Z=Number.parseInt(YU(CB(J,z),"utf8").split(`
43
- `)[0]??"",10);return Number.isFinite(Z)?Y-Z:Number.POSITIVE_INFINITY}catch{return Number.POSITIVE_INFINITY}}async function a2(J,z,Y,Z=GU){let G=EY(J,z);if(Z>0)await new Promise((X)=>setTimeout(X,Z));if(!QU(J,z,G))return;await Y()}var GU=120,l2=400;var AG=C(()=>{p1()});function p2(J){let z=[];for(let Y of J.split(`
44
- `)){let Z=Y.trim();if(!Z)continue;let[G,X,Q,H,f]=Z.split("\t");if(!G||!X||!Q)continue;let j=Number.parseInt(f?.trim()??"",10);z.push({windowId:G.trim(),paneId:X.trim(),role:Q.trim(),version:H?.trim()??"",...Number.isFinite(j)?{paneWidth:j}:{}})}return z}function r2(J){let z=J.indexOf("-t");return z>=0&&z+1<J.length?J[z+1]??null:null}function o2(J,z){return J.filter((Y)=>{let Z=r2(Y);return Z===null||z.has(Z)})}function qU(J,z){let Y=new Map;for(let G of J){let X=Y.get(G.windowId)??[];X.push(G),Y.set(G.windowId,X)}let Z=[];for(let G of Y.values()){let X=G.find((j)=>j.role==="claude")?.paneId,Q=G.find((j)=>j.role==="tasks"),H=G.find((j)=>j.role==="ops");if(Q&&(z.force||Q.version!==z.currentVersion))Z.push({role:"tasks",paneId:Q.paneId});let f=z.force?!0:X&&(z.vendorChanged||H?.version!==z.currentVersion);if(H&&f)Z.push({role:"ops",paneId:H.paneId,claudePaneId:X??null})}return Z}async function jH(J){let{code:z,stdout:Y}=await a0(["list-panes","-s","-t",`=${J}`,"-F",_2]);if(z!==0)return null;return p2(Y)}async function HU(J,z){if(z.length===0)return;let Y=await jH(J),Z=Y?o2(z,new Set(Y.map((G)=>G.paneId))):z;if(Z.length>0)await $1(Z)}function fU(J,z){let Y=y1(),Z=l1(),G=[];for(let X of J){let Q=X.role==="tasks"?IY(Y,{initialTaskId:z.taskId}):oZ({cwd:z.cwd,taskId:z.taskId,claudePaneId:X.claudePaneId,cliInvocation:Y,vendor:z.vendor});G.push(["respawn-pane","-k","-t",X.paneId,"-c",m1(z.cwd),TJ(Z+Q)],["set-option","-p","-t",X.paneId,"@kobe_role",X.role],["set-option","-p","-t",X.paneId,Nz,J1])}return G}function s2(J,z){if(J===0)return"no-engine-pane";return z===0?"switched":"respawn-failed"}async function jU(J,z,Y,Z,G){let X=await jH(J);if(!X)return"no-engine-pane";let Q=X.filter((B)=>B.role==="claude");if(Q.length===0)return"no-engine-pane";let H=m1(z),f=rZ(l1(),y1(),J),j=[];for(let B of Q){let K=HG(Y,G),L=TJ(qG(yJ(K.argv),Z,z),f);j.push(["respawn-pane","-k","-c",H,"-t",B.paneId,L]),j.push(K.sessionId?["set-window-option","-t",B.paneId,mz,K.sessionId]:["set-window-option","-u","-t",B.paneId,mz])}let V=await $1(j);return s2(Q.length,V)}async function BU(){return(await cz()).rightColumnResizeArgs}async function kB(J,z={}){let{tasksWidth:Y,rightColumnResizeArgs:Z}=await cz(),G=await jH(J);if(!G)return{rows:null,commands:[]};let X=[];for(let Q of G)if(Q.role==="tasks"&&(z.force||Q.paneWidth!==Y))X.push(["resize-pane","-t",Q.paneId,"-x",`${Y}`]);if(Z.length>0){for(let Q of G)if(Q.role==="ops")X.push(["resize-pane","-t",Q.paneId,...Z])}return{rows:G,commands:X}}async function NZ(J,z){EY(J,"resize");let{rows:Y,commands:Z}=await kB(J);if(!Y)return;let G=[...Z];if(z)G.push(...fU(qU(Y,{currentVersion:J1,force:!1,vendorChanged:z.vendorChanged}),z));await HU(J,G)}async function WU(J){if(!await K1(J))return;await NZ(J)}async function bB(J){let{code:z,stdout:Y}=await a0(["list-panes","-t",`=${J}`,"-F",`#{@kobe_role} #{pane_width} #{pane_height} #{window_width} #{window_height} #{window_zoomed_flag} #{${Dz}} #{${IJ}}`]);if(z!==0)return;let Z=Y.split(`
45
- `).map((j)=>j.split("\t")).filter((j)=>(j[0]?.trim()??"")!=="");if(Z.length===0)return;if(Z.some((j)=>j[5]?.trim()==="1"))return;if(Z.some((j)=>(j[6]?.trim()??"")!==""))return;if(Z.some((j)=>(j[7]?.trim()??"")!==""))return;if(!Z.some((j)=>j[0]?.trim()==="shell"))return;let G=Number.parseInt(Z[0][3]?.trim()??"",10),X=Number.parseInt(Z[0][4]?.trim()??"",10),Q=[],H=Z.find(([j])=>j?.trim()==="tasks");if(H){let j=Number.parseInt(H[1]?.trim()??"",10);if(Number.isFinite(j)&&j>0)Q.push(["set-option","-s",qq,`${Nj(j)}`])}let f=Z.find(([j])=>j?.trim()==="ops");if(f&&Number.isFinite(G)&&G>0&&Number.isFinite(X)&&X>0){let j=Number.parseInt(f[1]?.trim()??"",10),V=Number.parseInt(f[2]?.trim()??"",10),B=Number.isFinite(j)?QZ(100*j/G):null,K=Number.isFinite(V)?QZ(100*V/X):null;if(B!==null)Q.push(["set-option","-s",Hq,`${B}`]);if(K!==null)Q.push(["set-option","-s",fq,`${K}`])}if(Q.length>0)await $1(Q)}function t2(J){let z=J.split(`
46
- `).map((Z)=>Z.split("\t")).filter((Z)=>(Z[0]?.trim()??"")!=="");if(z.length===0)return!1;if(z.some((Z)=>Z[1]?.trim()==="1"))return!1;if(z.some((Z)=>(Z[2]?.trim()??"")!==""))return!1;if(z.some((Z)=>(Z[3]?.trim()??"")!==""))return!1;let Y=new Set(z.map((Z)=>Z[0]?.trim()));return Y.has("tasks")&&Y.has("ops")&&Y.has("shell")}async function VU(J){let{code:z,stdout:Y}=await a0(["list-panes","-t",`=${J}`,"-F",`#{@kobe_role} #{window_zoomed_flag} #{${Dz}} #{${IJ}}`]);if(z!==0||!t2(Y))return;await bB(J)}async function RG(J){let z=await uJ(J,["@kobe_worktree","@kobe_task","@kobe_vendor"]),Y=z["@kobe_worktree"]||process.cwd(),Z=z["@kobe_task"]||void 0,G=z["@kobe_vendor"]||void 0,X=await jH(J);if(!X)return;let Q=fU(qU(X,{currentVersion:J1,force:!0}),{cwd:Y,taskId:Z,vendor:G});await HU(J,Q),await gZ()}var Nz="@kobe_pane_version",_2;var wX=C(()=>{XY();Yz();Oz();c1();Lz();QH();NJ();KZ();AG();_2=`#{window_id} #{pane_id} #{@kobe_role} #{${Nz}} #{pane_width}`});var hB={};q1(hB,{syncSessionZen:()=>VH,runLayoutAction:()=>CZ,resolveShellPane:()=>BH,planWorkspaceSplit:()=>UU,parseLayoutPaneRows:()=>KU,expandedTerminalHeightPercent:()=>DU,engineTabExit:()=>DN,applyZenToNewWindow:()=>PB});function KU(J){let z=[];for(let Y of J.split(`
47
- `)){let Z=Y.trim();if(!Z)continue;let[G,X,Q,H,f,j,V]=Z.split("\t");if(!G)continue;let B=Number.parseInt(H??"",10),K=Number.parseInt(f??"",10),L=Number.parseInt(j??"",10),A=Number.parseInt(V??"",10);z.push({paneId:G.trim(),role:X?.trim()??"",active:Q?.trim()==="1",paneWidth:Number.isFinite(B)?B:0,paneHeight:Number.isFinite(K)?K:0,windowWidth:Number.isFinite(L)?L:0,windowHeight:Number.isFinite(A)?A:0})}return z}function UU(J){let z=J.find((Z)=>Z.role===qZ);if(!z)return{kind:"missing-engine"};let Y=J.filter((Z)=>Z.role===WX);if(Y.length+1>=gj)return{kind:"maxed"};if(Y.length===0)return{kind:"split",targetPane:z.paneId,direction:"-h"};if(Y.length===1)return{kind:"split",targetPane:Y[0]?.paneId??z.paneId,direction:"-v"};return{kind:"split",targetPane:z.paneId,direction:"-v"}}function BH(J){return J.find((z)=>z.role===Uz)??J.find((z)=>z.role==="")}function DU(J){return 100-(QZ(J??Number.NaN)??KX)}async function dJ(J,z){let Y=z?.trim()||`=${J}`,{code:Z,stdout:G}=await a0(["list-panes","-t",Y,"-F",e2]);return Z===0?KU(G):null}async function SB(J){let{code:z,stdout:Y}=await a0(["list-windows","-t",`=${J}`,"-F","#{window_active}\t#{window_id}"]);if(z!==0)return"";for(let Z of Y.split(`
48
- `)){let[G,X]=Z.split("\t");if(G?.trim()==="1"&&X?.trim())return X.trim()}return""}async function fY(J,z){let{code:Y,stdout:Z}=await a0(["show-options","-wqv","-t",J,z]);return Y===0?Z.trim():""}async function yB(J,z,Y){await d0(["set-window-option","-t",J,z,Y])}async function wY(J,z){await d0(["set-window-option","-u","-t",J,z])}async function TB(J){let{code:z,stdout:Y}=await a0(["display-message","-p","-t",J,"#{pane_id}"]);return z===0&&Y.trim()===J}async function E1(J,z){await d0(["display-message","-t",J,z])}async function WH(J){let z=await uJ(J,["@kobe_worktree","@kobe_task","@kobe_vendor"]);return{cwd:z["@kobe_worktree"]||process.cwd(),taskId:z["@kobe_task"]||void 0,vendor:z["@kobe_vendor"]||void 0}}function JN(J){let z=y1(),Y=l1();return TJ(Y+oZ({cwd:J.cwd,taskId:J.taskId,claudePaneId:J.enginePaneId,cliInvocation:z,vendor:J.vendor}))}async function zN(J,z){return z?.trim()||await SB(J)}async function YN(J,z){let Y=await dJ(J,z);if(!Y)return;let Z=UU(Y);if(Z.kind==="missing-engine"){await E1(z,"kobe: no engine pane in this window");return}if(Z.kind==="maxed"){await E1(z,`kobe: workspace split limit is ${gj} panes`);return}let{cwd:G}=await WH(J),{code:X,stdout:Q}=await a0(["split-window",Z.direction,"-t",Z.targetPane,"-l","50%","-c",m1(G),"-P","-F","#{pane_id}",TJ("true")]),H=Q.trim();if(X!==0||!H)return;await $1([["set-option","-p","-t",H,"@kobe_role",WX],["select-pane","-t",H]])}async function ZN(J,z){let Y=await dJ(J,z);if(!Y)return;let Z=Y.filter((Q)=>Q.role===WX);if(Z.length===0){await E1(z,"kobe: no workspace split to close");return}let X=Z.find((Q)=>Q.active)??Z[Z.length-1];if(!X)return;await d0(["kill-pane","-t",X.paneId])}async function GN(J,z){let Y=await dJ(J,z);if(!Y)return;let Z=Y.filter((G)=>G.role===WX);if(Z.length===0){await E1(z,"kobe: no workspace splits to reset");return}await $1(Z.map((G)=>["kill-pane","-t",G.paneId]))}async function LU(){return(await cz()).tasksWidth}async function XN(J){let{cwd:z,taskId:Y}=await WH(J),Z=y1(),G=l1();return{cwd:z,command:TJ(G+IY(Z,{initialTaskId:Y}))}}async function FU(J,z){let Y=await dJ(J,z);if(!Y)return;let Z=Y.find((O)=>O.role===Kz);if(Z){await d0(["kill-pane","-t",Z.paneId]);return}let G=BH(Y),X=Y.find((O)=>O.role===qZ);if(!X){await E1(z,"kobe: cannot restore file pane in this layout");return}let{cwd:Q,taskId:H,vendor:f}=await WH(J),j=JN({cwd:Q,taskId:H,vendor:f,enginePaneId:X.paneId}),V=G?["split-window","-v","-b","-t",G.paneId,"-l",`${await QN()}%`,"-c",m1(Q),"-P","-F","#{pane_id}",j]:["split-window","-h","-t",X.paneId,"-l",`${await xB()}%`,"-c",m1(Q),"-P","-F","#{pane_id}",j],{code:B,stdout:K}=await a0(V),L=K.trim();if(B!==0||!L)return;let A=[["set-option","-p","-t",L,"@kobe_role",Kz],["set-option","-p","-t",L,Nz,J1]];if(G?.role==="")A.push(["set-option","-p","-t",G.paneId,"@kobe_role",Uz]);await $1(A)}async function QN(){return(await cz()).opsHeightPct}async function xB(){return(await cz()).rightColumnWidthPct}async function MU(){return DU((await cz()).opsHeightPct)}async function qN(J){let{code:z,stdout:Y}=await a0(["list-windows","-t",`=${J}`,"-F","#{window_index}"]);if(z!==0)return new Set;return new Set(Y.split(`
49
- `).map((Z)=>Number.parseInt(Z.trim(),10)).filter((Z)=>Number.isFinite(Z)))}async function OU(J,z){let Y=await qN(J),Z=eV(z);while(Y.has(Z))Z++;return Z}async function AU(J){let z=VX(J);if(await K1(z))return z;return await d0(["new-session","-d","-s",z,"-n","hidden-panes","-c",m1(process.cwd()),"while :; do sleep 3600; done"]),z}async function uB(J){let z=VX(J);if(!await K1(z))return;let{code:Y,stdout:Z}=await a0(["list-panes","-s","-t",`=${z}`,"-F","#{@kobe_role}"]);if(Y!==0)return;if(!Z.split(`
50
- `).some((X)=>{let Q=X.trim();return Q===Uz||Q===eJ}))await d0(["kill-session","-t",`=${z}`])}async function HN(J,z){await RU(J,z,Dz)}async function fN(J,z){await RU(J,z,IJ)}async function RU(J,z,Y){let Z=await fY(z,Y);if(!Z)return;if(await TB(Z))await d0(["kill-pane","-t",Z]);await wY(z,Y)}async function IB(J,z){await HN(J,z),await fN(J,z),await uB(J)}function gU(J){return J.find((z)=>z.role===qZ)??J[0]}async function EB(J,z,Y){let Z=gU(Y);if(!Z)return await E1(z,"kobe: cannot restore Tasks pane in this layout"),!1;let G=await LU(),{cwd:X,command:Q}=await XN(J),{code:H,stdout:f}=await a0(["split-window","-h","-b","-t",Z.paneId,"-l",`${G}`,"-c",m1(X),"-P","-F","#{pane_id}",Q]),j=f.trim();if(H!==0||!j)return!1;return await $1([["set-option","-p","-t",j,"@kobe_role",eJ],["set-option","-p","-t",j,Nz,J1],["select-pane","-t",j]]),await wY(z,IJ),await E1(z,"kobe: Tasks pane restored"),!0}async function NU(J,z,Y){let Z=await AU(J),G=await OU(Z,z),{code:X,stdout:Q}=await a0(["break-pane","-d","-s",Y.paneId,"-t",`${Z}:${G}`,"-P","-F","#{pane_id}"]),H=Q.trim()||Y.paneId;if(X!==0||!H){await E1(z,"kobe: could not hide Tasks pane");return}await yB(z,IJ,H),await E1(z,"kobe: Tasks pane hidden")}async function wB(J,z,Y){let Z=await dJ(J,z);if(!Z)return;if(!await TB(Y)){await wY(z,IJ);let Q=Z.find((H)=>H.role===eJ);if(Q){await d0(["select-pane","-t",Q.paneId]);return}await EB(J,z,Z);return}let G=gU(Z);if(!G){await E1(z,"kobe: cannot restore Tasks pane in this layout");return}if(await d0(["join-pane","-h","-b","-s",Y,"-t",G.paneId,"-l",`${await LU()}`])!==0){await E1(z,"kobe: could not restore Tasks pane");return}await $1([["set-option","-p","-t",Y,"@kobe_role",eJ],["set-option","-p","-t",Y,Nz,J1],["select-pane","-t",Y]]),await wY(z,IJ),await uB(J),await E1(z,"kobe: Tasks pane restored")}async function jN(J,z){let Y=await fY(z,IJ);if(Y){await wB(J,z,Y);return}let Z=await dJ(J,z);if(!Z)return;let G=Z.find((X)=>X.role===eJ);if(G){await NU(J,z,G);return}await EB(J,z,Z)}async function BN(J,z){let Y=await fY(z,IJ);if(Y){await wB(J,z,Y);return}let Z=await dJ(J,z);if(!Z)return;let G=Z.find((X)=>X.role===eJ);if(G){await d0(["select-pane","-t",G.paneId]);return}await EB(J,z,Z)}async function CU(J,z,Y){if(Y.role==="")await d0(["set-option","-p","-t",Y.paneId,"@kobe_role",Uz]);let Z=await AU(J),G=await OU(Z,z),{code:X,stdout:Q}=await a0(["break-pane","-d","-s",Y.paneId,"-t",`${Z}:${G}`,"-P","-F","#{pane_id}"]),H=Q.trim()||Y.paneId;if(X!==0||!H){await E1(z,"kobe: could not hide terminal pane");return}await yB(z,Dz,H),await E1(z,"kobe: Terminal pane hidden")}async function kU(J,z,Y){let Z=Y.find((V)=>V.role===Kz),G=Y.find((V)=>V.role===qZ);if(!Z&&!G)return await E1(z,"kobe: cannot restore terminal pane in this layout"),!1;let{cwd:X}=await WH(J),Q=Z?["split-window","-v","-t",Z.paneId,"-l",`${await MU()}%`,"-c",m1(X),"-P","-F","#{pane_id}"]:["split-window","-h","-t",G?.paneId??"","-l",`${await xB()}%`,"-c",m1(X),"-P","-F","#{pane_id}"],{code:H,stdout:f}=await a0(Q),j=f.trim();if(H!==0||!j)return!1;return await d0(["set-option","-p","-t",j,"@kobe_role",Uz]),await wY(z,Dz),await E1(z,"kobe: Terminal pane restored"),!0}async function bU(J,z,Y){let Z=await dJ(J,z);if(!Z)return;if(!await TB(Y)){await wY(z,Dz),await kU(J,z,Z);return}let G=Z.find((j)=>j.role===Kz),X=Z.find((j)=>j.role===qZ);if(!G&&!X){await E1(z,"kobe: cannot restore terminal pane in this layout");return}let Q=G?["join-pane","-v","-s",Y,"-t",G.paneId,"-l",`${await MU()}%`]:["join-pane","-h","-s",Y,"-t",X?.paneId??"","-l",`${await xB()}%`];if(await d0(Q)!==0){await E1(z,"kobe: could not restore terminal pane");return}await d0(["set-option","-p","-t",Y,"@kobe_role",Uz]),await wY(z,Dz),await uB(J),Z=await dJ(J,z);let f=Z?.find((j)=>j.paneId===Y);if(f)await d0(["select-pane","-t",f.paneId]);await E1(z,"kobe: Terminal pane restored")}async function WN(J,z){let Y=await fY(z,Dz);if(Y){await bU(J,z,Y);return}let Z=await dJ(J,z);if(!Z)return;let G=BH(Z);if(G){await CU(J,z,G);return}await kU(J,z,Z)}async function VN(J){let z=HH();if(zU(!z),z){await TU(J);return}await yU(J)}async function VH(J){if(!await K1(J))return;let z=HH(),Y=(await kZ(J,pZ)).length>0;if(z===Y)return;if(z)await yU(J);else await TU(J)}async function SU(J){let{code:z,stdout:Y}=await a0(["list-windows","-t",`=${J}`,"-F","#{window_id}"]);if(z!==0)return[];return Y.split(`
51
- `).map((Z)=>Z.trim()).filter((Z)=>Z.length>0)}async function IU(J,z){return!!(await dJ(J,z))?.some((Z)=>Z.role===qZ)}async function yU(J){let z=await SU(J);for(let Y of z){if(!await IU(J,Y))continue;if(await fY(Y,SY))continue;await xU(J,Y)}await jY(J,pZ,"1"),await E1(`=${J}`,"kobe: Zen mode on \u2014 all tabs")}async function TU(J){let z=await SU(J);for(let Y of z){let Z=await fY(Y,SY);if(Z)await KN(J,Y,Z)}await d0(["set-option","-u","-t",J,pZ]),await E1(`=${J}`,"kobe: Zen mode off \u2014 all tabs")}async function PB(J,z){let Y=(await kZ(J,pZ)).length>0;if(!Y&&!HH())return;if(!Y)await jY(J,pZ,"1");if(await fY(z,SY))return;if(!await IU(J,z))return;await xU(J,z)}async function xU(J,z){let Y=await dJ(J,z);if(!Y)return;let Z=[],G=Y.find((Q)=>Q.role===Kz);if(G)await d0(["kill-pane","-t",G.paneId]),Z.push(Kz);let X=BH(Y);if(X)await CU(J,z,X),Z.push(Uz);if(!eK()){let Q=Y.find((H)=>H.role===eJ);if(Q)await NU(J,z,Q),Z.push(eJ)}if(Z.length===0){await E1(z,"kobe: already focused \u2014 nothing to hide");return}await yB(z,SY,Z.join(",")),await E1(z,"kobe: Zen mode on")}async function KN(J,z,Y){let Z=new Set(Y.split(",").map((G)=>G.trim()));if(Z.has(eJ)){let G=await fY(z,IJ);if(G)await wB(J,z,G)}if(Z.has(Kz)){let G=await dJ(J,z);if(G&&!G.some((X)=>X.role===Kz))await FU(J,z)}if(Z.has(Uz)){let G=await fY(z,Dz);if(G)await bU(J,z,G)}await wY(z,SY),await E1(z,"kobe: Zen mode off")}async function uU(J){let{code:z,stdout:Y}=await a0(["list-windows","-t",`=${J}`,"-F","#{window_id}"]);if(z!==0)return 0;return Y.split(`
52
- `).filter((Z)=>Z.trim().length>0).length}async function UN(J,z){if(await uU(J)<=1){await E1(z,"Cannot close the only ChatTab");return}await IB(J,z),await d0(["kill-window","-t",z])}async function DN(J){if(!await K1(J))return;let z=await SB(J);if(!z)return;if(await uU(J)>1){await IB(J,z),await d0(["kill-window","-t",z]);return}let{newChatTab:Y}=await Promise.resolve().then(() => (KH(),EU));if(await Y(J),await SB(J)!==z)await IB(J,z),await d0(["kill-window","-t",z])}async function CZ(J,z,Y={}){if(!await K1(J))return;let Z=await zN(J,Y.windowId);if(!Z)return;switch(z){case"workspace-split":await YN(J,Z);return;case"workspace-close":await ZN(J,Z);return;case"workspace-reset":await GN(J,Z);return;case"tasks-toggle":await jN(J,Z);return;case"tasks-restore":await BN(J,Z);return;case"ops-toggle":await FU(J,Z);return;case"terminal-toggle":await WN(J,Z);return;case"zen-toggle":await VN(J);return;case"chat-tab-close":await UN(J,Z);return}}var e2="#{pane_id}\t#{@kobe_role}\t#{pane_active}\t#{pane_width}\t#{pane_height}\t#{window_width}\t#{window_height}";var PY=C(()=>{XY();Oz();NB();c1();Lz();NJ();KZ();wX()});var EU={};q1(EU,{quickCreate:()=>cB,openUpdateTab:()=>aX,openSettingsTab:()=>iX,openNewTaskTab:()=>$X,openHelpTab:()=>lX,newChatTab:()=>mB,kobeStatusRight:()=>dX,chatTabSwitchBindings:()=>hX,chatTabRenameBinding:()=>mX,chatTabCloseBinding:()=>vX,chatTabChooseEngineBindings:()=>cX,buildPanesAround:()=>DH,CHAT_TAB_STATUS_FORMAT:()=>gG,CHAT_TAB_STATUS_CURRENT_FORMAT:()=>nX,CHAT_TAB_STATE_OPTION:()=>UH,CHAT_TAB_ENGINE_PROMPT:()=>PX});function hX(J,z){return[["bind-key","-n",J,"if-shell","-F","#{?#{@kobe_surface},0,1}","previous-window"],["bind-key","-n",z,"if-shell","-F","#{?#{@kobe_surface},0,1}","next-window"]]}function vX(J,z="kill-window"){return["bind-key","-n",J,"if-shell","-F","#{>:#{session_windows},1}",z,"display-message 'Cannot close the only ChatTab'"]}function mX(J){return["bind-key","-n",J,"command-prompt","-I","#{window_name}","rename-window -- '%%'"]}function cX(J){return[["bind-key","-n",J,"command-prompt","-p",PX],["bind-key","T","command-prompt","-p",PX]]}function vB(J){return J.startsWith("C-")&&J.length===3?`^${J.slice(2)}`:J}function dX(J){return`${[J.focusLeft?`${vB(J.focusLeft)} tasks`:null,J.detach?`${vB(J.detach)} detach`:null,J.newTab?`${vB(J.newTab)} tab`:null,J.layoutSplits?`prefix ${J.layoutSplits} splits`:null,J.layoutPanes?`prefix ${J.layoutPanes} panes`:null].filter((Y)=>Y!==null).join(" ")} `}async function DH(J,z){let Y=l1(),Z=await LH(),G=TJ(z.opsCommand??Y+oZ({cwd:z.cwd,taskId:z.taskId,claudePaneId:J,cliInvocation:z.inv,vendor:z.vendor})),{stdout:X}=await _X([["set-option","-p","-t",J,"@kobe_role","claude"],["set-window-option","-t",J,UH,"idle"],["split-window","-h","-b","-t",J,"-l",`${Z}`,"-c",m1(z.cwd),"-P","-F","tasks=#{pane_id}",TJ(Y+IY(z.inv,{initialTaskId:z.taskId}))],["split-window","-h","-t",J,"-l",`${100-Cj}%`,"-c",m1(z.cwd),"-P","-F","ops=#{pane_id}",G],["split-window","-v","-l",`${100-KX}%`,"-c",m1(z.cwd),"-P","-F","shell=#{pane_id}"],["select-pane","-t",J]]),Q=Object.fromEntries(X.split(`
53
- `).map((H)=>H.trim()).filter(Boolean).map((H)=>H.split("=",2)));if(await $1([...Q.tasks?[["set-option","-p","-t",Q.tasks,"@kobe_role",eJ]]:[],...Q.tasks?[["set-option","-p","-t",Q.tasks,Nz,J1]]:[],...Q.ops?[["set-option","-p","-t",Q.ops,"@kobe_role",Kz]]:[],...Q.ops?[["set-option","-p","-t",Q.ops,Nz,J1]]:[],...Q.shell?[["set-option","-p","-t",Q.shell,"@kobe_role",Uz]]:[]]),Q.ops){let H=await BU();if(H.length>0)await d0(["resize-pane","-t",Q.ops,...H])}}async function mB(J,z){if(!await K1(J))return;let Y=await uJ(J,["@kobe_worktree","@kobe_task","@kobe_vendor",bX]),Z=Y["@kobe_worktree"]||process.cwd(),G=Y["@kobe_task"]||void 0,X=Y[bX]||void 0,Q=z??Y["@kobe_vendor"];if(z)await LN(J,G,z);let H=cJ(Q),f=HG(H,Q),j=y1(),B=(await a0(["new-window","-t",`=${J}`,"-c",m1(Z),"-P","-F","#{pane_id}",TJ(qG(yJ(f.argv),X,Z),rZ(l1(),j,J))])).stdout.trim();if(!B)return;if(f.sessionId)await hY(B,mz,f.sessionId);await DH(B,{cwd:Z,taskId:G,inv:j,vendor:Q});let{stdout:K}=await a0(["display-message","-p","-t",B,"#{window_id}"]),L=K.trim();if(L)await PB(J,L)}async function iX(J){if(!await K1(J))return;let Y=(await uJ(J,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),Z=y1(),X=`${l1()}${Z.map(Q1).join(" ")} settings`;await Cz(J,{cwd:m1(Y),command:X,name:"settings",surface:!0})}async function lX(J){if(!await K1(J))return;let Y=(await uJ(J,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),Z=y1(),X=`${l1()}${Z.map(Q1).join(" ")} help-page`;await Cz(J,{cwd:m1(Y),command:X,name:"help",surface:!0})}async function $X(J,z){if(!await K1(J))return;let Z=(await uJ(J,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),G=y1(),X=l1(),Q=z?` --repo ${Q1(z)}`:"",H=`${X}${G.map(Q1).join(" ")} new-task${Q}`;await Cz(J,{cwd:m1(Z),command:H,name:"new task",surface:!0})}async function aX(J){if(!await K1(J))return;let Y=(await uJ(J,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),Z=y1(),X=`${l1()}${Q7({cliInvocation:Z})}`;await Cz(J,{cwd:m1(Y),command:X,name:"update",surface:!0})}async function cB(J){if(!await K1(J))return;let Y=(await uJ(J,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),Z=y1(),X=`${l1()}${Z.map(Q1).join(" ")} quick-task --session ${Q1(J)}`;await Cz(J,{cwd:m1(Y),command:X,name:"quick task",surface:!0})}async function LN(J,z,Y){if(await jY(J,"@kobe_vendor",Y),!z)return;try{let{connectOrStartDaemon:Z}=await Promise.resolve().then(() => (CJ(),FH)),G=await Z();try{await G.request("task.setVendor",{taskId:z,vendor:Y})}finally{G.close()}}catch(Z){console.error("[kobe tmux] failed to persist selected engine vendor:",Z)}}var PX,UH="@kobe_tab_state",gG="#{?#{==:#{@kobe_tab_state},running},\u25CF,#{?#{==:#{@kobe_tab_state},done},\u2713,#{?#{==:#{@kobe_tab_state},error},!,#{?#{==:#{@kobe_tab_state},unknown},?,\u25CB}}}} #I:#W",nX;var KH=C(()=>{XY();Yz();Oz();c1();Lz();_1();NJ();KZ();PY();wX();PX=`engine (${a1.join("/")}/\u2026)`;nX=gG});var EJ={};q1(EJ,{tmuxWindowSizeArgsForClient:()=>iB,tmuxSessionName:()=>I1,tmuxInitialSizeArgs:()=>PU,tmuxInitialClientSize:()=>nB,tmuxAvailable:()=>dz,switchClientBeforeKill:()=>nz,sessionExists:()=>K1,selectTasksPane:()=>NN,runLayoutAction:()=>CZ,resyncWindowToClient:()=>ON,refreshKobeWorkspacePanes:()=>RG,quickCreate:()=>cB,prepareWindowForSwitch:()=>cU,prepareWindowForAttach:()=>MH,parseTmuxClientRows:()=>hU,parseObservedSession:()=>nU,openUpdateTab:()=>aX,openSettingsTab:()=>iX,openNewTaskTab:()=>$X,openHelpTab:()=>lX,observeSessionVendor:()=>$B,newChatTab:()=>mB,kobeStatusRight:()=>dX,killSession:()=>Gz,healSessionLayout:()=>WU,focusBindCommand:()=>dU,enterWindow:()=>MN,ensureSession:()=>pX,currentSessionName:()=>wJ,clientsWithConflictingSize:()=>vU,chatTabSwitchBindings:()=>hX,chatTabRenameBinding:()=>mX,chatTabCloseBinding:()=>vX,chatTabChooseEngineBindings:()=>cX,captureGlobalLayoutOnDrag:()=>VU,captureGlobalLayout:()=>bB,attachArgv:()=>NG,PANE_VERSION_OPTION:()=>Nz,CHAT_TAB_STATUS_FORMAT:()=>gG,CHAT_TAB_STATUS_CURRENT_FORMAT:()=>nX,CHAT_TAB_STATE_OPTION:()=>UH,CHAT_TAB_ENGINE_PROMPT:()=>PX});function PU(J=process.stdout,z=process.env){let Y=nB(J,z);return Y?["-x",`${Y.columns}`,"-y",`${Y.rows}`]:[]}function nB(J=process.stdout,z=process.env){let Y=vY(J.columns)??vY(z.COLUMNS),Z=vY(J.rows)??vY(z.LINES);return Y&&Z?{columns:Y,rows:Z}:null}function vY(J){let z=typeof J==="number"?J:typeof J==="string"?Number.parseInt(J,10):Number.NaN;return Number.isInteger(z)&&z>0?z:void 0}function hU(J){let z=[];for(let Y of J.split(`
54
- `)){let[Z,G,X,Q,H]=Y.split("\t"),f=vY(X?.trim()),j=vY(Q?.trim());if(!Z?.trim()||!G?.trim()||!f||!j)continue;z.push({name:Z.trim(),session:G.trim(),width:f,height:j,flags:H?.trim()??""})}return z}function vU(J,z,Y,Z={}){return J.filter((G)=>G.session===z).filter((G)=>G.name!==Z.currentClientName).filter((G)=>G.width!==Y.columns||G.height!==Y.rows).map((G)=>G.name)}function iB(J,z){let Y=Math.max(1,J.rows-(z.status?.trim()==="on"?1:0));return["-x",`${J.columns}`,"-y",`${Y}`]}async function lB(J,z,Y={}){if(!z)return;let{code:Z,stdout:G}=await a0(["list-clients","-t",`=${J}`,"-F",FN]);if(Z!==0)return;let X=vU(hU(G),J,z,Y),Q=[];if(Y.currentClientName)Q.push(["refresh-client","-f","!ignore-size","-t",Y.currentClientName]);for(let H of X)Q.push(["refresh-client","-f","ignore-size","-t",H]);if(Q.length>0)await $1(Q)}async function MH(J){EY(J,"resize");let z=nB();await lB(J,z);let Y=z?["-x",`${z.columns}`,"-y",`${z.rows}`]:[];if(Y.length>0)await d0(["resize-window","-t",`=${J}`,...Y]);await NZ(J)}async function mU(){let{code:J,stdout:z}=await a0(["display-message","-p","#{client_name}\t#{client_width}\t#{client_height}\t#{status}"]);if(J!==0)return{sizeArgs:[],clientSize:null,clientName:void 0};let[Y,Z,G,X]=z.trim().split("\t"),Q=vY(Z),H=vY(G),f=Q&&H?{columns:Q,rows:H}:null;return{sizeArgs:f?iB(f,{status:X}):[],clientSize:f,clientName:Y?.trim()||void 0}}async function cU(J){EY(J,"resize");let z=await mU();await lB(J,z.clientSize,{currentClientName:z.clientName});let Y=z.sizeArgs;if(Y.length>0)await d0(["resize-window","-t",`=${J}`,...Y]);await NZ(J)}async function MN(J){await cU(J),await d0(["switch-client","-t",`=${J}`])}async function ON(J,z){if(!z.size)return;EY(J,"resize"),await lB(J,z.size,{currentClientName:z.clientName});let Y=iB(z.size,{status:z.status}),{commands:Z}=await kB(J,{force:!0});await $1([["resize-window","-t",`=${J}`,...Y],...Z])}function dU(J,z,Y){let Z=`#{?window_zoomed_flag,1,#{?${AN[z]},,1}}`;if(Y)return["bind-key","-n",J,"if-shell","-F",Z,`select-pane ${z}`,Y];return["bind-key","-n",J,"if-shell","-F",Z,`select-pane ${z}`]}async function pX(J){let z=dB.get(J.name);if(z)return z;let Y=gN(J);dB.set(J.name,Y);try{return await Y}finally{dB.delete(J.name)}}function nU(J){let z="",Y="",Z=!1,G=new Set;for(let X of J.split(`
55
- `)){let[Q,H,f,j,V]=X.split("\t");if(!Q?.trim())continue;if(G.add(Q.trim()),!z&&j?.trim())z=j.trim();if(!Y&&V?.trim())Y=V.trim();if(H?.trim()==="1"&&f?.trim()==="claude")Z=!0}return{worktree:z,vendor:Y,claudePaneAlive:Z,windowCount:G.size}}async function iU(J){if(!await K1(J))return null;let{code:z,stdout:Y}=await a0(["list-panes","-s","-t",`=${J}`,"-F",RN]);if(z!==0)return{worktree:"",vendor:"",claudePaneAlive:!1,windowCount:0};return nU(Y)}async function $B(J){let Y=(await iU(J))?.vendor.trim();return Y?Y:null}async function gN(J){let z=J.launchInit,Y=await iU(J.name),Z=$K(Y,{cwd:J.cwd,vendor:J.vendor,hasEngineCommand:J.command.length>0}),G=UK(J.repo);if(Z.kind==="reuse")return await NZ(J.name,{cwd:J.cwd,taskId:J.taskId,vendor:J.vendor}),!0;if(Z.kind==="respawn-engine"){let h=await jU(J.name,J.cwd,J.command,G,J.vendor);if(h==="switched"){if(J.vendor)await jY(J.name,"@kobe_vendor",J.vendor);return await NZ(J.name,{cwd:J.cwd,taskId:J.taskId,vendor:J.vendor,vendorChanged:!0}),!0}if(h==="respawn-failed")return await NZ(J.name,{cwd:J.cwd,taskId:J.taskId,vendor:J.vendor}),!0}if(Z.kind==="rebuild"||Z.kind==="respawn-engine")await Gz(J.name);let X=y1(),Q=J.archived===!0&&DB(),H=Q?{argv:[],sessionId:void 0}:HG(J.command,J.vendor),f=J.repo!==void 0&&J.cwd===J.repo,j=f||G?void 0:J.taskId,V=f&&!G?J.taskId:void 0,B=dq(cq(H.argv,J.vendor,j),J.vendor,V),K=[...X,"history","--worktree",J.archivedWorktree??J.cwd,...J.vendor?["--vendor",J.vendor]:[],...J.title?["--title",J.title]:[]],L=qG(yJ(Q?K:B),G,J.cwd),A=Q?Y7(L):G7(L,{initScript:G?void 0:z?.initScript,markerPath:!G&&z?.initScript?zV(J.cwd):void 0,timeoutSeconds:kj(process.env.KOBE_REPO_INIT_TIMEOUT_SECONDS)},rZ(l1(),X,J.name)),R=(await a0(["new-session","-d","-s",J.name,"-c",m1(J.cwd),...PU(),"-P","-F","#{pane_id}",A])).stdout.trim();if(!R)return console.error("[kobe tmux] new-session returned no pane id; session creation failed"),!1;if(H.sessionId)await hY(R,mz,H.sessionId);if(await $1([...J.taskId?[["set-option","-t",J.name,"@kobe_task",J.taskId]]:[],["set-option","-t",J.name,"@kobe_worktree",J.cwd],...J.vendor?[["set-option","-t",J.name,"@kobe_vendor",J.vendor]]:[],...G?[["set-option","-t",J.name,bX,G]]:[]]),process.env.TMUX){let{sizeArgs:h}=await mU();if(h.length>0)await d0(["resize-window","-t",`=${J.name}`,...h])}await DH(R,{cwd:J.cwd,taskId:J.taskId,opsCommand:J.opsCommand,inv:X,vendor:J.vendor});let u=l1(),P=X.map(Q1).join(" "),S=`${u}${P} new-chattab --session '#{session_name}'`,g=`${S} --vendor '%%'`,M=`run-shell ${Q1(g)}`,T=`${u}${P} focus-tasks --session '#{session_name}' --window '#{window_id}'`,d=`run-shell ${Q1(T)}`,i=(h)=>`${u}${P} layout --session '#{session_name}' --window '#{window_id}' --action ${h}`,J0=i("tasks-restore"),E=`run-shell ${Q1(J0)}`,z0=i("chat-tab-close"),q0=`run-shell ${Q1(z0)}`,o=`${u}${P} heal-layout --session '#{session_name}'`,B0=`run-shell -b ${Q1(o)}`,g0=`${u}${P} resync-window --session '#{session_name}' --client '#{client_name}' --cols '#{client_width}' --rows '#{client_height}' --status '#{status}'`,m=`run-shell -b ${Q1(g0)}`,r=`${u}${P} capture-layout --session '#{session_name}'`,c=`run-shell -b ${Q1(r)}`,N=q7({tmuxSocket:kz}),t=xK(process.platform,uK),x=EK(t),n=_q(),Q0=cK.map((h)=>["unbind-key","-n",h]);if(n.overridden.has(vz))for(let h of uY){let L0=RZ(h);if("key"in L0)Q0.push(["unbind-key","-n",L0.key])}for(let h of n.overridden){if(h===vz)continue;let L0=AZ[h],Z0=jG(h),D0=RZ(L0,{allowBare:Z0});if("key"in D0)Q0.push(Z0?["unbind-key",D0.key]:["unbind-key","-n",D0.key])}let H0=["-L","-D","-U","-R"],F0=n.focus.flatMap((h,L0)=>{let Z0=H0[L0],D0=Z0==="-L"?E:void 0;return h&&Z0?[dU(h.key,Z0,D0)]:[]}),M0=n.binds,o0=(h,L0)=>{let Z0=M0[h];return Z0?[["bind-key",Z0.key,"run-shell",i(L0)]]:[]},S0=(...h)=>{let L0=h.map((Z0)=>M0[Z0]?.chord).filter((Z0)=>!!Z0);return L0.length>0?L0.join("/"):null};await $1([["set-option","-g","status","on"],["set-window-option","-g","aggressive-resize","on"],["set-option","-g","monitor-activity","on"],["set-option","-g","visual-activity","off"],["set-option","-g","window-status-format",gG],["set-option","-g","window-status-current-format",nX],["set-option","-g","status-right",dX({focusLeft:n.focus[0]?.key??null,detach:M0["tmux.detach"]?.key??null,newTab:M0["tmux.tab.new"]?.key??null,layoutSplits:S0("tmux.layout.workspaceSplit","tmux.layout.workspaceClose","tmux.layout.workspaceReset"),layoutPanes:S0("tmux.layout.tasksToggle","tmux.layout.opsToggle","tmux.layout.terminalToggle","tmux.layout.zenToggle")})],["set-option","-g","mouse","on"],...x,["set-hook","-g","window-resized",B0],["set-hook","-g","client-resized",m],["set-hook","-g","pane-exited",B0],["set-hook","-g","window-layout-changed",c],...Q0,...M0["tmux.detach"]?[["bind-key","-n",M0["tmux.detach"].key,"if-shell","-F",`#{?#{${IJ}},1,#{==:#{@kobe_role},tasks}}`,"detach-client",d]]:[],...F0,...M0["tmux.tab.new"]?[["bind-key","-n",M0["tmux.tab.new"].key,"run-shell",S]]:[],...M0["tmux.tab.chooseEngine"]?cX(M0["tmux.tab.chooseEngine"].key).map((h)=>[...h,M]):[],...M0["tmux.tab.prev"]&&M0["tmux.tab.next"]?hX(M0["tmux.tab.prev"].key,M0["tmux.tab.next"].key):M0["tmux.tab.prev"]?[["bind-key","-n",M0["tmux.tab.prev"].key,"previous-window"]]:M0["tmux.tab.next"]?[["bind-key","-n",M0["tmux.tab.next"].key,"next-window"]]:[],...M0["tmux.tab.close"]?[vX(M0["tmux.tab.close"].key,q0)]:[],...M0["tmux.tab.rename"]?[mX(M0["tmux.tab.rename"].key)]:[],...o0("tmux.layout.workspaceSplit","workspace-split"),...o0("tmux.layout.workspaceClose","workspace-close"),...o0("tmux.layout.workspaceReset","workspace-reset"),...o0("tmux.layout.tasksToggle","tasks-toggle"),...o0("tmux.layout.opsToggle","ops-toggle"),...o0("tmux.layout.terminalToggle","terminal-toggle"),...o0("tmux.layout.zenToggle","zen-toggle"),["bind-key","f","run-shell",`${u}${P} quick-create --session '#{session_name}'`],["bind-key","u","display-popup","-E",N]]),await gZ(),await d0(["select-pane","-t",R]);let p0=z?.firstMessage;if(p0)lK(J.name,p0).catch((h)=>console.error("[kobe tmux] first message delivery failed:",h));return!0}async function wU(J,z,Y){let Z=Y?.trim()||`=${J}`,{code:G,stdout:X}=await a0(["list-panes","-t",Z,"-F","#{pane_id}\t#{@kobe_role}"]);if(G!==0)return"";for(let Q of X.split(`
56
- `)){let[H,f]=Q.split("\t");if(H?.trim()&&f?.trim()===z)return H.trim()}return""}async function NN(J,z={}){if(!await K1(J))return"";let Y=await wU(J,"tasks",z.windowId);if(!Y)await CZ(J,"tasks-restore",{windowId:z.windowId}),Y=await wU(J,"tasks",z.windowId);if(!Y)return"";return await d0(["select-pane","-t",Y]),Y}var FN="#{client_name}\t#{client_session}\t#{client_width}\t#{client_height}\t#{client_flags}",AN,dB,RN="#{window_id}\t#{window_active}\t#{@kobe_role}\t#{@kobe_worktree}\t#{@kobe_vendor}";var zJ=C(()=>{XY();Yz();p1();Oz();nq();c1();wK();pq();rq();Lz();QH();KH();KZ();PY();AG();wX();c1();KH();wX();PY();AN={"-L":"pane_at_left","-D":"pane_at_bottom","-U":"pane_at_top","-R":"pane_at_right"};dB=new Map});var oX={};q1(oX,{windowIsSurface:()=>TN,windowCount:()=>bN,tmuxSessionName:()=>I1,tmuxCommandSequence:()=>_B,tmuxAvailable:()=>dz,tmuxArgs:()=>bZ,tagPaneRole:()=>aU,tagClaudePane:()=>yN,switchClientBeforeKill:()=>nz,setWindowOption:()=>hY,setSessionOption:()=>jY,sessionExists:()=>K1,sendKeys:()=>OH,sendKeyName:()=>uX,runTmuxSequenceCapturing:()=>_X,runTmuxSequence:()=>$1,runTmuxCapturing:()=>a0,runTmux:()=>d0,readLayoutGeometry:()=>cz,paneIdByRole:()=>rB,newWindow:()=>Cz,killSession:()=>Gz,globalTasksPaneWidth:()=>LH,getSessionOptions:()=>uJ,getSessionOption:()=>kZ,getServerOptions:()=>$U,getServerOption:()=>SN,ensureFallbackSession:()=>AH,currentSessionName:()=>wJ,claudePaneIdStrict:()=>BG,claudePaneId:()=>AB,capturePaneById:()=>WG,attachArgv:()=>NG,SURFACE_WINDOW_OPTION:()=>oB,PANE_ROLE_OPTION:()=>rX,KOBE_TMUX_SOCKET:()=>kz,KOBE_HOME_SESSION:()=>_U,CLAUDE_ROLE_OPTION:()=>IN,CHAT_TAB_SESSION_ID_OPTION:()=>mz});import{homedir as CN}from"os";function bZ(...J){return["tmux","-L",kz,...J]}function I1(J){return`kobe-${J.replace(/[^A-Za-z0-9_-]/g,"")}`}function NG(J){return bZ("attach-session","-t",`=${J}`)}async function aB(J){if(!J)return"";try{return await new Response(J).text()}catch{return""}}async function d0(J){try{let z=Bun.spawn(bZ(...J),{stdin:"ignore",cwd:CG,stdout:"ignore",stderr:"pipe"}),[Y,Z]=await Promise.all([aB(z.stderr),z.exited]);if(Z!==0&&Y.trim().length>0)console.error(`[kobe tmux] ${J.join(" ")} (${Z}): ${Y.trim()}`);return Z}catch{return 1}}async function kN(J){try{return await Bun.spawn(bZ(...J),{stdin:"ignore",cwd:CG,stdout:"ignore",stderr:"ignore"}).exited}catch{return 1}}function _B(J){let z=[];for(let Y of J){if(Y.length===0)continue;if(z.length>0)z.push(";");z.push(...Y)}return z}async function $1(J){let z=_B(J);return z.length===0?0:d0(z)}async function a0(J){try{let z=Bun.spawn(bZ(...J),{stdin:"ignore",cwd:CG,stdout:"pipe",stderr:"pipe"}),[Y,Z,G]=await Promise.all([aB(z.stdout),aB(z.stderr),z.exited]);if(G!==0&&Z.trim().length>0)console.error(`[kobe tmux] ${J.join(" ")} (${G}): ${Z.trim()}`);return{code:G,stdout:Y}}catch{return{code:1,stdout:""}}}async function _X(J){let z=_B(J);return z.length===0?{code:0,stdout:""}:a0(z)}async function dz(){try{return await Bun.spawn(["tmux","-V"],{stdin:"ignore",cwd:CG,stdout:"ignore",stderr:"ignore"}).exited===0}catch{return!1}}async function K1(J){return await kN(["has-session","-t",`=${J}`])===0}async function bN(J){let{code:z,stdout:Y}=await a0(["list-windows","-t",`=${J}`,"-F","#{window_id}"]);if(z!==0)return 0;return Y.split(`
57
- `).filter((Z)=>Z.trim().length>0).length}async function jY(J,z,Y){await d0(["set-option","-t",J,z,Y])}async function kZ(J,z){let{code:Y,stdout:Z}=await a0(["show-options","-qv","-t",J,z]);return Y===0?Z.trim():""}async function uJ(J,z){let Y=Object.fromEntries(z.map((X)=>[X,void 0])),{code:Z,stdout:G}=await _X(z.map((X)=>["show-options","-q","-t",J,X]));if(Z!==0)return Y;for(let X of G.split(`
58
- `)){let Q=X.indexOf(" ");if(Q<=0)continue;let H=X.slice(0,Q);if(H in Y)Y[H]=X.slice(Q+1).trim()}return Y}async function SN(J){let{code:z,stdout:Y}=await a0(["show-options","-sqv",J]);return z===0?Y.trim():""}async function $U(J){let z=Object.fromEntries(J.map((G)=>[G,void 0])),{code:Y,stdout:Z}=await _X(J.map((G)=>["show-options","-sq",G]));if(Y!==0)return z;for(let G of Z.split(`
59
- `)){let X=G.indexOf(" ");if(X<=0)continue;let Q=G.slice(0,X);if(Q in z)z[Q]=G.slice(X+1).trim()}return z}async function LH(){return(await cz()).tasksWidth}async function cz(){return z7(await $U(J7))}async function aU(J,z){await d0(["set-option","-p","-t",J,rX,z])}async function hY(J,z,Y){await d0(["set-window-option","-t",J,z,Y])}async function yN(J){await aU(J,pB)}async function rB(J,z,Y=!1){let{code:Z,stdout:G}=await a0(["list-panes","-t",`=${J}`,"-F",`#{pane_id} #{${rX}}`]);if(Z!==0)return"";let X="";for(let Q of G.split(`
60
- `)){let[H,f]=Q.split("\t");if(!H)continue;if(!X)X=H.trim();if(f?.trim()===z)return H.trim()}return Y?X:""}async function AB(J){return rB(J,pB,!0)}async function BG(J){return rB(J,pB,!1)}async function WG(J,z){if(!J)return"";let Y=["capture-pane","-t",J,"-p"];if(typeof z==="number"&&z>0)Y.push("-S",String(-z));let{code:Z,stdout:G}=await a0(Y);return Z===0?G:""}async function OH(J,z){await d0(["send-keys","-t",J,"-l","--",z])}async function uX(J,z){await d0(["send-keys","-t",J,z])}async function Cz(J,z){let Y=["new-window","-t",`=${J}`,"-c",z.cwd];if(z.name)Y.push("-n",z.name);if(z.surface){Y.push("-P","-F","#{window_id}"),Y.push(z.command);let{code:Z,stdout:G}=await a0(Y),X=G.trim();if(Z===0&&X)await hY(X,oB,"1");return}Y.push(z.command),await d0(Y)}async function TN(J){let{code:z,stdout:Y}=await a0(["display-message","-t",J,"-p",`#{${oB}}`]);return z===0&&Y.trim()==="1"}async function wJ(){let J=["display-message","-p"],z=process.env.TMUX_PANE;if(z&&z.length>0)J.push("-t",z);J.push("#{session_name}");let{code:Y,stdout:Z}=await a0(J),G=Z.trim();return Y===0&&G.length>0?G:null}async function Gz(J){if(!J.startsWith("kobe-hidden-")){let z=VX(J);if(await K1(z))await d0(["kill-session","-t",`=${z}`])}if(await K1(J))await d0(["kill-session","-t",`=${J}`])}async function AH(){let J=_U;if(await K1(J)){if(await kZ(J,lU)==="tasks")return J;await d0(["kill-session","-t",`=${J}`])}let Y=(await a0(["new-session","-d","-s",J,"-c",CG,"-x","220","-y","50","-P","-F","#{pane_id}",Z7()])).stdout.trim();if(Y){let Z=await LH(),X=(await a0(["split-window","-h","-b","-t",Y,"-l",`${Z}`,"-c",CG,"-P","-F","#{pane_id}",TJ(l1()+IY(y1()))])).stdout.trim();if(X)await $1([["set-option","-p","-t",X,rX,"tasks"],["select-pane","-t",X]])}return await jY(J,lU,"tasks"),J}async function nz(J,z){if(await wJ()!==J)return;let{enterWindow:Z}=await Promise.resolve().then(() => (zJ(),EJ));if(z&&z!==J&&await K1(z)){await Z(z);return}await Z(await AH())}var kz,CG,rX="@kobe_role",IN,pB="claude",mz="@kobe_session_id",oB="@kobe_surface",_U="kobe-home",lU="@kobe_home";var c1=C(()=>{XY();KZ();Lz();kz=process.env.KOBE_TMUX_SOCKET?.trim()||"kobe";CG=CN()||"/";IN=rX});async function xN(J,z=pU){let{code:Y,stdout:Z}=await z.capture(["list-windows","-t",`=${J}`,"-F",`#{window_index} #{automatic-rename} #{${mz}}`]);if(Y!==0)return[];let G=[];for(let X of Z.split(`
61
- `)){let[Q,H,f]=X.split("\t"),j=Number.parseInt((Q??"").trim(),10);if(!Number.isInteger(j))continue;G.push({index:j,sessionId:f?.trim()??"",autoRename:H?.trim()??""})}return G}async function uN(J,z,Y){let{code:Z,stdout:G}=await Y.capture(["show-window-options","-t",`=${J}:${z}`,"automatic-rename"]);return Z===0&&/\boff\b/.test(G)}async function EN(J){let{code:z,stdout:Y}=await J.capture(["show-window-options","-g","automatic-rename"]);return z===0&&/\boff\b/.test(Y)}async function wN(J,z,Y,Z){return await Z.run(["rename-window","-t",`=${J}:${z}`,"--",Y])===0}async function rU(J,z=PN){let Y=0,Z=null,G=async(X,Q)=>{if(Q.autoRename==="1")return!1;if(Q.autoRename==="0"){if(Z===null)Z=await EN(z.runner);if(!Z)return!0}return uN(X,Q.index,z.runner)};for(let X of J.listTasks()){if(X.archived||X.kind==="main"||!X.worktreePath)continue;let Q=I1(X.id),H=await xN(Q,z.runner);if(H.length===0)continue;let f=H.reduce((V,B)=>Math.min(V,B.index),Number.POSITIVE_INFINITY),j=X.vendor??o1;for(let V of H)try{if(await G(Q,V))continue;let B=V.sessionId?await z.titleFromSessionId(j,V.sessionId):V.index===f?await z.titleFromWorktree(X.worktreePath,j):"";if(B&&await wN(Q,V.index,B,z.runner))Y++}catch{}}return Y}var pU,PN;var oU=C(()=>{gq();c1();zz();pU={capture:a0,run:d0};PN={runner:pU,titleFromSessionId:$7,titleFromWorktree:eZ}});function tU(J){if(J instanceof Error)return J;let z;try{z=typeof J==="string"?J:JSON.stringify(J)}catch{z=String(J)}return Error(z)}function sU(J,z,Y=new Date){let Z=tU(z);return`[${Y.toISOString()}] daemon ${J}: ${Z.stack??`${Z.name}: ${Z.message}`}
62
- `}function hN(J,z,Y=new Date){let Z=tU(z);return`[${Y.toISOString()}] daemon error [${J}]: ${Z.stack??`${Z.name}: ${Z.message}`}
63
- `}function u1(J,z){process.stderr.write(hN(J,z))}function vN(J,z,Y=new Date){return`[${Y.toISOString()}] daemon [${J}]: ${z}
64
- `}function iz(J,z){process.stderr.write(vN(J,z))}function eU(J=(z)=>process.stderr.write(z)){if(sB||tB)return;sB=(z)=>J(sU("unhandledRejection",z)),tB=(z)=>J(sU("uncaughtException",z)),process.on("unhandledRejection",sB),process.on("uncaughtException",tB)}var sB,tB;async function mN(J,z=eZ){let Y=[];for(let Z of J.listTasks()){if(Z.archived||Z.title!==hz||!Z.worktreePath)continue;try{let G=await z(Z.worktreePath,Z.vendor??o1);if(!G)continue;let X=J.getTask(Z.id);if(!X||X.title!==hz)continue;await J.setTitle(Z.id,G),Y.push({id:Z.id,title:G})}catch(G){u1("auto-title-poller",G)}}return Y}function J5(J,z=eB,Y){if(z<=0)return()=>{};let Z=!1,X=setInterval(()=>{if(Y&&!Y())return;if(Z)return;Z=!0,mN(J).then(()=>rU(J)).catch((Q)=>u1("auto-title-poller",Q)).finally(()=>{Z=!1})},z);return X.unref?.(),()=>clearInterval(X)}var eB=4000;var z5=C(()=>{gq();kX();oU();zz()});class J9{socket;highWaterMark;queue=[];queuedBytes=0;paused=!1;draining=!1;droppedFrames=0;constructor(J,z={}){this.socket=J,this.highWaterMark=z.highWaterMark??8388608}get isPaused(){return this.paused}get pendingBytes(){return this.queuedBytes}get pendingCount(){return this.queue.length}get dropped(){return this.droppedFrames}write(J,z){if(!this.paused){if(this.safeWrite(J))return;this.pause();return}this.enqueue({line:J,bytes:Buffer.byteLength(J),critical:z})}enqueue(J){if(this.queue.push(J),this.queuedBytes+=J.bytes,this.queuedBytes<=this.highWaterMark)return;let z=[];for(let Y of this.queue){if(this.queuedBytes>this.highWaterMark&&!Y.critical){this.queuedBytes-=Y.bytes,this.droppedFrames++;continue}z.push(Y)}this.queue=z}pause(){if(this.draining)return;this.paused=!0,this.draining=!0,this.socket.once("drain",()=>{this.draining=!1,this.paused=!1,this.flush()})}flush(){while(this.queue.length>0){let J=this.queue[0],z=this.safeWrite(J.line);if(this.queue.shift(),this.queuedBytes-=J.bytes,!z){this.pause();return}}}safeWrite(J){try{return this.socket.write(J)}catch{return!0}}}class z9{last=new Map;sinks=new Set;publish(J,z){this.last.set(J,z);let Y={channel:J,payload:z};for(let Z of this.sinks)Z(Y)}snapshot(){return[...this.last].map(([J,z])=>({channel:J,payload:z}))}onPublish(J){return this.sinks.add(J),()=>{this.sinks.delete(J)}}}async function Y5(J,z,Y=vq){if(!Y())return"skipped";let Z=J.getTask(z);if(!Z)return"skipped";if((Z.kind??"task")==="main"||Z.archived)return"skipped";if(Z.status!=="backlog")return"skipped";return await J.setStatus(z,"in_progress"),"moved"}var Z5=C(()=>{SX()});import{createHash as cN}from"crypto";import{homedir as dN}from"os";import mY from"path";function aN(){return mY.join(process.env.KOBE_HOME_DIR??dN(),".kobe")}function _N(J){let Y=(mY.basename(J)||"repo").replace(/[^a-zA-Z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"repo",Z=cN("sha1").update(mY.resolve(J)).digest("hex").slice(0,12);return`${Y}-${Z}`}function pN(J){if(!mY.isAbsolute(J))throw Error(`worktreeRootFor: repo must be an absolute path, got: ${J}`);return mY.join(aN(),nN,_N(J))}function rN(J){if(!mY.isAbsolute(J))throw Error(`managedWorktreeRootsFor: repo must be an absolute path, got: ${J}`);return[pN(J),...$N.map((z)=>mY.join(J,z))]}function lz(J){return J.length>1&&J.endsWith("/")?J.slice(0,-1):J}function G5(J,z){return z===J||z.startsWith(`${J}/`)}function X5(J,z){let Y=lz(z),Z,G=-1;for(let X of J){if(!X.worktreePath)continue;let Q=lz(X.worktreePath);if(G5(Q,Y)&&Q.length>G)G=Q.length,Z=X.id}return Z}function Q5(J,z){let Y=lz(z);for(let Z of J)if(Z.worktreePath&&lz(Z.worktreePath)===Y)return Z.id;return}function Y9(J,z){let Y=lz(z),Z,G=-1;for(let X of J){if(!X.repo)continue;let Q=lz(X.repo);if(G5(Q,Y)&&Q.length>G)G=Q.length,Z=Q}return Z}function q5(J,z){let Y=lz(z),Z=new Set,G=new Set;for(let X of J){if(X.repo)Z.add(lz(X.repo));if(X.worktreePath)G.add(lz(X.worktreePath))}for(let X of Z)for(let Q of rN(X).map(lz)){let H=`${Q}/`;if(!Y.startsWith(H))continue;let j=Y.slice(H.length).split("/")[0];if(!j)continue;let V=`${H}${j}`;if(G.has(V))return;return{repo:X,worktreePath:V}}return}var nN="worktrees",iN=".kobe/worktrees",lN=".claude/worktrees",$N;var H5=C(()=>{$N=[iN,lN]});function X9(J){return{message:J instanceof Error?J.message:String(J),name:J instanceof Error?J.name:void 0}}async function sX(J,z,Y,Z){let G=J.get(z);if(!G)throw Error(`unknown daemon request: ${z}`);return G.handle(Q9(Y),Z)}function tX(){return new Map([{name:"hello",handle(z,Y){let Z=typeof z.protocolVersion==="number"?z.protocolVersion:sJ,G=typeof z.minProtocolVersion==="number"?z.minProtocolVersion:Z;if(!_Q({localVersion:sJ,localMin:NY,remoteVersion:Z,remoteMin:G}))throw Error(`daemon is protocol v${sJ} (min v${NY}); this client is v${Z} (min v${G}). Upgrade your kobe.`);return{protocolVersion:sJ,minProtocolVersion:NY,kobeVersion:J1,capabilities:[...jj],daemonPid:Y.daemon.pid,clientId:Y.clientId,tasks:Y.orch.listTasks().map(Vz)}}},{name:"daemon.status",handle(z,Y){return{daemonPid:Y.daemon.pid,kobeVersion:J1,uptimeMs:Date.now()-Y.daemon.startedAt.getTime(),startedAt:Y.daemon.startedAt.toISOString(),attachedClients:Y.daemon.guiCount(),taskCount:Y.orch.listTasks().length,socketPath:Y.daemon.socketPath,webPort:Y.daemon.webPort??null}}},{name:"daemon.stop",async handle(z,Y){return await Y.daemon.stopSoon(),{}}},{name:"task.list",handle(z,Y){return{tasks:Y.orch.listTasks().map(Vz)}}},{name:"task.get",handle(z,Y){let Z=g1(z,"taskId"),G=Y.orch.getTask(Z);if(!G)throw Error(`task not found: ${Z}`);return{task:Vz(G)}}},{name:"task.create",async handle(z,Y){let Z=g1(z,"repo"),G=await Y.orch.createTask({repo:Z,title:Xz(z,"title"),branch:Xz(z,"branch"),baseRef:Xz(z,"baseRef"),vendor:G9(z,"vendor"),modelEffort:Xz(z,"effort")});return{taskId:G.id,task:Vz(G)}}},{name:"task.archive",async handle(z,Y){let Z=g1(z,"taskId");return await Y.orch.setArchived(Z,Z9(z,"archived")),{}}},{name:"task.rename",async handle(z,Y){let Z=g1(z,"taskId");return await Y.orch.setTitle(Z,g1(z,"title")),{}}},{name:"task.setBranch",async handle(z,Y){let Z=g1(z,"taskId");return await Y.orch.setBranch(Z,g1(z,"branch")),{}}},{name:"task.setVendor",async handle(z,Y){let Z=g1(z,"taskId"),G=G9(z,"vendor");if(!G)throw Error("task.setVendor: vendor is required");return await Y.orch.setVendor(Z,G),{}}},{name:"task.delete",async handle(z,Y){let Z=g1(z,"taskId");return await Y.orch.deleteTask(Z,{force:Z9(z,"force")}),Y.activity.clearTask(Z),{}}},{name:"task.pin",async handle(z,Y){let Z=g1(z,"taskId");return await Y.orch.setPinned(Z,Z9(z,"pinned")),{}}},{name:"task.move",async handle(z,Y){let Z=g1(z,"taskId"),G=g1(z,"direction");if(G!=="up"&&G!=="down")throw Error("direction must be up or down");return await Y.orch.moveTask(Z,G==="up"?-1:1),{}}},{name:"task.status",async handle(z,Y){let Z=g1(z,"taskId"),G=g1(z,"status");if(!m7(G))throw Error("status must be a TaskStatus");let X=G==="done"?Y.orch.getTask(Z):void 0,Q=X?.status;if(await Y.orch.setStatus(Z,G),G==="done"&&Q!=="done"&&X)try{let H=await Y.issues.mirrorTaskDone(X.repo,Z);if(H)Y.bus.publish("issue.snapshot",H)}catch(H){u1("issue-done-mirror",H)}return{}}},{name:"task.reorder",async handle(z,Y){let Z=z.moves;if(!Array.isArray(Z)||Z.length===0)throw Error("moves must be a non-empty array");if(Z.length>500)throw Error("too many moves in one task.reorder batch (max 500)");let G=Z.map((X)=>{if(typeof X!=="object"||X===null)throw Error("each move needs taskId and position");let Q=X,H=g1(Q,"taskId"),f=Q.position;if(typeof f!=="number"||!Number.isFinite(f))throw Error("position must be a finite number");return{taskId:H,position:f}});return await Y.orch.reorderTasks(G),{}}},{name:"task.ensureMain",async handle(z,Y){let Z=g1(z,"repo"),G=await Y.orch.ensureMainTask(Z);return{task:Vz(G)}}},{name:"project.forget",async handle(z,Y){let Z=g1(z,"repo");return await Y.orch.forgetProject(Z),{}}},{name:"task.ensureWorktree",async handle(z,Y){let Z=g1(z,"taskId");Y.bus.publish("task.jobs",{taskId:Z,kind:"ensureWorktree",phase:"running"});try{let G=await Y.orch.ensureWorktree(Z);return Y.bus.publish("task.jobs",{taskId:Z,kind:"ensureWorktree",phase:"done"}),{worktreePath:G}}catch(G){throw Y.bus.publish("task.jobs",{taskId:Z,kind:"ensureWorktree",phase:"error",error:G instanceof Error?G.message:String(G)}),G}}},{name:"worktree.discoverAdoptable",async handle(z,Y){let Z=g1(z,"repo");return{worktrees:await Y.orch.discoverAdoptableWorktrees(Z)}}},{name:"worktree.adopt",async handle(z,Y){let Z=await Y.orch.adoptWorktree({repo:g1(z,"repo"),worktreePath:g1(z,"worktreePath"),branch:Xz(z,"branch"),vendor:G9(z,"vendor"),title:Xz(z,"title"),ifExists:Xz(z,"ifExists")==="return"?"return":"error"});return{task:Vz(Z)}}},{name:"worktree.reconcile",async handle(z,Y){let Z=g1(z,"cwd"),G=g1(z,"worktreePath"),X=Y9(Y.orch.listTasks(),Z)??Y9(Y.orch.listTasks(),G);if(!X)return{adopted:!1};try{return{adopted:!0,taskId:(await Y.orch.adoptWorktree({repo:X,worktreePath:G,ifExists:"return"})).id}}catch(Q){return u1("worktree-created",Q),{adopted:!1}}}},{name:"worktree.archiveRemoved",async handle(z,Y){let Z=g1(z,"worktreePath"),G=Q5(Y.orch.listTasks(),Z);if(!G)return{archived:!1};try{return await Y.orch.setArchived(G,!0),{archived:!0,taskId:G}}catch(X){return u1("worktree-removed",X),{archived:!1}}}},{name:"task.setActive",async handle(z,Y){let Z=Xz(z,"taskId")??null;return await Y.orch.setActiveTask(Z),Y.bus.publish("active-task",{taskId:Z}),{}}},{name:"issue.list",async handle(z,Y){return Y.issues.list(g1(z,"repoRoot"))}},{name:"issue.mutate",async handle(z,Y){let Z=await Y.issues.mutate(g1(z,"repoRoot"),z.op);return Y.bus.publish("issue.snapshot",Z),Z}},{name:"session.deliver",async handle(z,Y){let Z=g1(z,"taskId"),G=g1(z,"text"),X=Xz(z,"source");if(X!==void 0&&X!=="note"&&X!=="dispatcher")throw Error('source must be "note" or "dispatcher"');if(!Y.orch.getTask(Z))throw Error(`task not found: ${Z}`);return Y.bus.publish("session.deliver",{taskId:Z,text:G,at:Date.now(),source:X??"dispatcher"}),{ok:!0}}},{name:"note.file",async handle(z,Y){let Z=g1(z,"taskId"),G=g1(z,"text"),X=Y.orch.getTask(Z);if(!X)throw Error(`task not found: ${Z}`);let Q=Y.orch.listTasks().find((f)=>(f.kind??"task")==="main"&&f.repo===X.repo&&!f.archived);if(!Q||Q.id===X.id)return{ok:!0,routed:!1};let H=X.title||X.branch||Z;return Y.bus.publish("session.deliver",{taskId:Q.id,text:`[KOBE FIELD NOTE] from "${H}" (task ${Z}): ${G}`,at:Date.now(),source:"note"}),{ok:!0,routed:!0}}},{name:"engine.reportEvent",async handle(z,Y){let Z=g1(z,"kind");if(!Oq(Z))throw Error(`unknown engine event kind: ${Z}`);let G=Xz(z,"taskId"),X=Xz(z,"cwd");if(!G&&X&&Z==="session-start"){let f=q5(Y.orch.listTasks(),X);if(f)try{await Y.orch.adoptWorktree({repo:f.repo,worktreePath:f.worktreePath,ifExists:"return"})}catch(j){u1("worktree-autosync",j)}}let Q=G??(X?X5(Y.orch.listTasks(),X):void 0);if(!Q)return{};let H=oN(z);if(Y.activity.report(Q,Z,H),Z==="turn-start")Y5(Y.orch,Q).then((f)=>{if(f==="moved")console.log(`[status-rules] task ${Q} auto-moved backlog \u2192 in_progress`)}).catch((f)=>u1("status-rules",f));return{}}}].map((z)=>[z.name,z]))}function Q9(J){if(!J||typeof J!=="object"||Array.isArray(J))return{};return J}function g1(J,z){let Y=J[z];if(typeof Y!=="string"||Y.length===0)throw Error(`${z} is required`);return Y}function Xz(J,z){let Y=J[z];if(Y===void 0||Y===null||Y==="")return;if(typeof Y!=="string")throw Error(`${z} must be a string`);return Y}function Z9(J,z){let Y=J[z];if(Y===void 0||Y===null)return;if(typeof Y!=="boolean")throw Error(`${z} must be a boolean`);return Y}function G9(J,z){let Y=Xz(J,z);return Y&&Y.trim().length>0?Y:void 0}function oN(J){let z=J.detail;if(!z||typeof z!=="object"||Array.isArray(z))return;let Y=z,Z={};if(Y.failure==="rate_limit"||Y.failure==="billing"||Y.failure==="other")Z.failure=Y.failure;if(Y.waiting==="permission"||Y.waiting==="input")Z.waiting=Y.waiting;if(typeof Y.note==="string")Z.note=Y.note;return Object.keys(Z).length>0?Z:void 0}var RH=C(()=>{Aq();Z5();zz();NJ();H5();YZ()});import{execFile as sN}from"child_process";import{mkdir as tN,readFile as eN,realpath as f5,rename as JC,stat as zC,writeFile as YC}from"fs/promises";import{homedir as ZC}from"os";import{dirname as GC,isAbsolute as XC,join as QC,resolve as j5}from"path";import{promisify as qC}from"util";function HC(J){return(J instanceof Error?J.message:String(J)).includes("not a git repository")}function NH(J=process.env.KOBE_HOME_DIR??ZC()){return QC(J,".kobe","issues.json")}function W5(J){return typeof J==="string"&&B5.includes(J)}function fC(J){if(J===null||typeof J!=="object"||Array.isArray(J))return null;let z=J;if(typeof z.id!=="number")return null;return{id:z.id,title:typeof z.title==="string"?z.title:"(untitled)",status:W5(z.status)?z.status:"open",created:typeof z.created==="string"?z.created:"",body:typeof z.body==="string"?z.body:"",taskId:typeof z.taskId==="string"?z.taskId:void 0}}function jC(){return{version:1,repos:{}}}function BC(){let J=new Date,z=String(J.getMonth()+1).padStart(2,"0"),Y=String(J.getDate()).padStart(2,"0");return`${J.getFullYear()}-${z}-${Y}`}async function WC(J){let{stdout:z}=await W9("git",["-C",J,"rev-parse","--git-common-dir"]),Y=z.trim();return f5(XC(Y)?Y:j5(J,Y))}async function VC(J){let{stdout:z}=await W9("git",["-C",J,"rev-parse","--show-toplevel"]);return z.trim()}async function KC(J){let{stdout:z}=await W9("git",["-C",J,"worktree","list","--porcelain"]),Y=z.split(/\r?\n/).find((Z)=>Z.startsWith("worktree "))?.slice(9).trim();return Y?f5(Y):VC(J)}async function q9(J){if(typeof J!=="string"||J.length===0)throw Error("repoRoot is required");let z=j5(J);if(!(await zC(z).catch(()=>null))?.isDirectory())throw Error("repoRoot does not exist");try{let[Z,G]=await Promise.all([KC(z),WC(z)]);return{repoRoot:Z,repoKey:G}}catch(Z){if(HC(Z))throw Error("repoRoot is not a git repository");throw Z}}async function H9(J){try{let z=JSON.parse(await eN(J,"utf8")),Y={};if(z.repos&&typeof z.repos==="object")for(let[Z,G]of Object.entries(z.repos)){if(!G||typeof G!=="object")continue;let X=G;Y[Z]={repoRoot:typeof X.repoRoot==="string"?X.repoRoot:"",nextId:typeof X.nextId==="number"?X.nextId:1,issues:Array.isArray(X.issues)?X.issues.map(fC).filter((Q)=>Q!==null):[]}}return{version:1,repos:Y}}catch(z){if(z.code==="ENOENT")return jC();throw z}}async function f9(J,z){await tN(GC(J),{recursive:!0});let Y=`${J}.tmp`;await YC(Y,`${JSON.stringify(z,null,2)}
65
- `,"utf8"),await JC(Y,J)}function j9(J,z){return{repoRoot:J,exists:z!==null,nextId:z?.nextId??1,issues:z?.issues??[]}}async function B9(J,z){let Z=(gH.get(J)??Promise.resolve()).then(z),G=Z.then(()=>{return},()=>{return});return gH.set(J,G),G.then(()=>{if(gH.get(J)===G)gH.delete(J)}),Z}class CH{path;constructor(J=NH()){this.path=J}async list(J){let{repoRoot:z,repoKey:Y}=await q9(J);return B9(this.path,async()=>{let Z=await H9(this.path),G=Z.repos[Y]??null;if(G&&G.repoRoot!==z)G.repoRoot=z,await f9(this.path,Z);return j9(z,G)})}async mirrorTaskDone(J,z){let{repoRoot:Y,repoKey:Z}=await q9(J);if(!z)return null;return B9(this.path,async()=>{let G=await H9(this.path),X=G.repos[Z];if(!X)return null;let Q=X.issues.find((H)=>H.taskId===z);if(!Q||Q.status==="done")return null;return Q.status="done",X.repoRoot=Y,await f9(this.path,G),j9(Y,X)})}async mutate(J,z){let{repoRoot:Y,repoKey:Z}=await q9(J);if(!z||typeof z!=="object"||Array.isArray(z)||typeof z.type!=="string")throw Error("missing op");return B9(this.path,async()=>{let G=await H9(this.path),X=G.repos[Z];if(!X)X={repoRoot:Y,nextId:1,issues:[]},G.repos[Z]=X;X.repoRoot=Y;let Q=z;if(Q.type==="create"){if(typeof Q.title!=="string"||Q.title.trim().length===0)throw Error("create requires a non-empty title");if(Q.body!==void 0&&typeof Q.body!=="string")throw Error("body must be a string");X.issues=[{id:X.nextId,title:Q.title,status:"open",created:BC(),body:typeof Q.body==="string"?Q.body:""},...X.issues],X.nextId+=1}else if(Q.type==="setStatus"){if(typeof Q.id!=="number")throw Error("setStatus requires a numeric id");if(!W5(Q.status))throw Error(`invalid status: must be one of ${B5.join(", ")}`);let H=X.issues.find((f)=>f.id===Q.id);if(!H)throw Error(`no issue #${Q.id}`);H.status=Q.status}else if(Q.type==="update"){if(typeof Q.id!=="number")throw Error("update requires a numeric id");if(Q.title!==void 0&&(typeof Q.title!=="string"||Q.title.trim().length===0))throw Error("title must be a non-empty string");if(Q.body!==void 0&&typeof Q.body!=="string")throw Error("body must be a string");let H=X.issues.find((f)=>f.id===Q.id);if(!H)throw Error(`no issue #${Q.id}`);if(typeof Q.title==="string")H.title=Q.title;if(typeof Q.body==="string")H.body=Q.body}else if(Q.type==="link"){if(typeof Q.id!=="number")throw Error("link requires a numeric id");if(typeof Q.taskId!=="string"||Q.taskId.length===0)throw Error("link requires a non-empty taskId");let H=X.issues.find((f)=>f.id===Q.id);if(!H)throw Error(`no issue #${Q.id}`);H.taskId=Q.taskId}else if(Q.type==="unlink"){if(typeof Q.id!=="number")throw Error("unlink requires a numeric id");let H=X.issues.find((f)=>f.id===Q.id);if(!H)throw Error(`no issue #${Q.id}`);H.taskId=void 0}else if(Q.type==="delete"){if(typeof Q.id!=="number")throw Error("delete requires a numeric id");let H=X.issues.filter((f)=>f.id!==Q.id);if(H.length===X.issues.length)throw Error(`no issue #${Q.id}`);X.issues=H}else throw Error(`unknown op type: ${Q.type}`);return await f9(this.path,G),j9(Y,X)})}}var W9,B5,gH;var V9=C(()=>{W9=qC(sN),B5=["open","doing","hold","done"];gH=new Map});import{lstat as V5,readdir as UC,realpath as DC,stat as LC}from"fs/promises";import{join as FC,relative as MC,resolve as K5,sep as OC}from"path";import{Readable as AC}from"stream";function M5(J,z={}){let Y=z.entryType||z.type;if(Y==="both")Y=nJ.FILE_DIR_TYPE;if(Y)z.type=Y;if(!J)throw Error("readdirp: root argument is required. Usage: readdirp(root, options)");else if(typeof J!=="string")throw TypeError("readdirp: root argument must be a string. Usage: readdirp(root, options)");else if(Y&&!U5.includes(Y))throw Error(`readdirp: Invalid type passed. Use one of ${U5.join(", ")}`);return z.root=J,new U9(z)}var nJ,K9,F5="READDIRP_RECURSIVE_ERROR",RC,U5,gC,NC,CC=(J)=>RC.has(J.code),kC,D5=(J)=>!0,L5=(J)=>{if(J===void 0)return D5;if(typeof J==="function")return J;if(typeof J==="string"){let z=J.trim();return(Y)=>Y.basename===z}if(Array.isArray(J)){let z=J.map((Y)=>Y.trim());return(Y)=>z.some((Z)=>Y.basename===Z)}return D5},U9;var O5=C(()=>{nJ={FILE_TYPE:"files",DIR_TYPE:"directories",FILE_DIR_TYPE:"files_directories",EVERYTHING_TYPE:"all"},K9={root:".",fileFilter:(J)=>!0,directoryFilter:(J)=>!0,type:nJ.FILE_TYPE,lstat:!1,depth:2147483648,alwaysStat:!1,highWaterMark:4096};Object.freeze(K9);RC=new Set(["ENOENT","EPERM","EACCES","ELOOP",F5]),U5=[nJ.DIR_TYPE,nJ.EVERYTHING_TYPE,nJ.FILE_DIR_TYPE,nJ.FILE_TYPE],gC=new Set([nJ.DIR_TYPE,nJ.EVERYTHING_TYPE,nJ.FILE_DIR_TYPE]),NC=new Set([nJ.EVERYTHING_TYPE,nJ.FILE_DIR_TYPE,nJ.FILE_TYPE]),kC=process.platform==="win32";U9=class U9 extends AC{parents;reading;parent;_stat;_maxDepth;_wantsDir;_wantsFile;_wantsEverything;_root;_isDirent;_statsProp;_rdOptions;_fileFilter;_directoryFilter;constructor(J={}){super({objectMode:!0,autoDestroy:!0,highWaterMark:J.highWaterMark});let z={...K9,...J},{root:Y,type:Z}=z;this._fileFilter=L5(z.fileFilter),this._directoryFilter=L5(z.directoryFilter);let G=z.lstat?V5:LC;if(kC)this._stat=(X)=>G(X,{bigint:!0});else this._stat=G;this._maxDepth=z.depth!=null&&Number.isSafeInteger(z.depth)?z.depth:K9.depth,this._wantsDir=Z?gC.has(Z):!1,this._wantsFile=Z?NC.has(Z):!1,this._wantsEverything=Z===nJ.EVERYTHING_TYPE,this._root=K5(Y),this._isDirent=!z.alwaysStat,this._statsProp=this._isDirent?"dirent":"stats",this._rdOptions={encoding:"utf8",withFileTypes:this._isDirent},this.parents=[this._exploreDir(Y,1)],this.reading=!1,this.parent=void 0}async _read(J){if(this.reading)return;this.reading=!0;try{while(!this.destroyed&&J>0){let z=this.parent,Y=z&&z.files;if(Y&&Y.length>0){let{path:Z,depth:G}=z,X=Y.splice(0,J).map((H)=>this._formatEntry(H,Z)),Q=await Promise.all(X);for(let H of Q){if(!H)continue;if(this.destroyed)return;let f=await this._getEntryType(H);if(f==="directory"&&this._directoryFilter(H)){if(G<=this._maxDepth)this.parents.push(this._exploreDir(H.fullPath,G+1));if(this._wantsDir)this.push(H),J--}else if((f==="file"||this._includeAsFile(H))&&this._fileFilter(H)){if(this._wantsFile)this.push(H),J--}}}else{let Z=this.parents.pop();if(!Z){this.push(null);break}if(this.parent=await Z,this.destroyed)return}}}catch(z){this.destroy(z)}finally{this.reading=!1}}async _exploreDir(J,z){let Y;try{Y=await UC(J,this._rdOptions)}catch(Z){this._onError(Z)}return{files:Y,depth:z,path:J}}async _formatEntry(J,z){let Y,Z=this._isDirent?J.name:J;try{let G=K5(FC(z,Z));Y={path:MC(this._root,G),fullPath:G,basename:Z},Y[this._statsProp]=this._isDirent?J:await this._stat(G)}catch(G){this._onError(G);return}return Y}_onError(J){if(CC(J)&&!this.destroyed)this.emit("warn",J);else this.destroy(J)}async _getEntryType(J){if(!J&&this._statsProp in J)return"";let z=J[this._statsProp];if(z.isFile())return"file";if(z.isDirectory())return"directory";if(z&&z.isSymbolicLink()){let Y=J.fullPath;try{let Z=await DC(Y),G=await V5(Z);if(G.isFile())return"file";if(G.isDirectory()){let X=Z.length;if(Y.startsWith(Z)&&Y.substr(X,1)===OC){let Q=Error(`Circular symlink detected: "${Y}" points to "${Z}"`);return Q.code=F5,this._onError(Q)}return"directory"}}catch(Z){return this._onError(Z),""}}}_includeAsFile(J){let z=J&&J[this._statsProp];return z&&this._wantsEverything&&!z.isDirectory()}}});import{watch as bC,unwatchFile as A5,watchFile as SC}from"fs";import{realpath as D9,lstat as IC,open as yC,stat as g5}from"fs/promises";import{type as TC}from"os";import*as P1 from"path";function R5(J,z,Y,Z,G){let X=(Q,H)=>{if(Y(J),G(Q,H,{watchedPath:J}),H&&J!==H)SH(P1.resolve(J,H),SZ,P1.join(J,H))};try{return bC(J,{persistent:z.persistent},X)}catch(Q){Z(Q);return}}class A9{fsw;_boundHandleError;constructor(J){this.fsw=J,this._boundHandleError=(z)=>J._handleError(z)}_watchWithNodeFs(J,z){let Y=this.fsw.options,Z=P1.dirname(J),G=P1.basename(J);this.fsw._getWatchedDir(Z).add(G);let Q=P1.resolve(J),H={persistent:Y.persistent};if(!z)z=IH;let f;if(Y.usePolling){let j=Y.interval!==Y.binaryInterval;H.interval=j&&cC(G)?Y.binaryInterval:Y.interval,f=iC(J,Q,H,{listener:z,rawEmitter:this.fsw._emitRaw})}else f=nC(J,Q,H,{listener:z,errHandler:this._boundHandleError,rawEmitter:this.fsw._emitRaw});return f}_handleFile(J,z,Y){if(this.fsw.closed)return;let Z=P1.dirname(J),G=P1.basename(J),X=this.fsw._getWatchedDir(Z),Q=z;if(X.has(G))return;let H=async(j,V)=>{if(!this.fsw._throttle(PC,J,5))return;if(!V||V.mtimeMs===0)try{let B=await g5(J);if(this.fsw.closed)return;let{atimeMs:K,mtimeMs:L}=B;if(!K||K<=L||L!==Q.mtimeMs)this.fsw._emit(bz.CHANGE,J,B);if((uC||EC||wC)&&Q.ino!==B.ino){this.fsw._closeFile(j),Q=B;let A=this._watchWithNodeFs(J,H);if(A)this.fsw._addPathCloser(j,A)}else Q=B}catch(B){this.fsw._remove(Z,G)}else if(X.has(G)){let{atimeMs:B,mtimeMs:K}=V;if(!B||B<=K||K!==Q.mtimeMs)this.fsw._emit(bz.CHANGE,J,V);Q=V}},f=this._watchWithNodeFs(J,H);if(!(Y&&this.fsw.options.ignoreInitial)&&this.fsw._isntIgnored(J)){if(!this.fsw._throttle(bz.ADD,J,0))return;this.fsw._emit(bz.ADD,J,z)}return f}async _handleSymlink(J,z,Y,Z){if(this.fsw.closed)return;let G=J.fullPath,X=this.fsw._getWatchedDir(z);if(!this.fsw.options.followSymlinks){this.fsw._incrReadyCount();let Q;try{Q=await D9(Y)}catch(H){return this.fsw._emitReady(),!0}if(this.fsw.closed)return;if(X.has(Z)){if(this.fsw._symlinkPaths.get(G)!==Q)this.fsw._symlinkPaths.set(G,Q),this.fsw._emit(bz.CHANGE,Y,J.stats)}else X.add(Z),this.fsw._symlinkPaths.set(G,Q),this.fsw._emit(bz.ADD,Y,J.stats);return this.fsw._emitReady(),!0}if(this.fsw._symlinkPaths.has(G))return!0;this.fsw._symlinkPaths.set(G,!0)}_handleRead(J,z,Y,Z,G,X,Q){J=P1.join(J,"");let H=Z?`${J}:${Z}`:J;if(Q=this.fsw._throttle("readdir",H,1000),!Q)return;let f=this.fsw._getWatchedDir(Y.path),j=new Set,V=this.fsw._readdirp(J,{fileFilter:(B)=>Y.filterPath(B),directoryFilter:(B)=>Y.filterDir(B)});if(!V)return;return V.on(xC,async(B)=>{if(this.fsw.closed){V=void 0;return}let K=B.path,L=P1.join(J,K);if(j.add(K),B.stats.isSymbolicLink()&&await this._handleSymlink(B,J,L,K))return;if(this.fsw.closed){V=void 0;return}if(K===Z||!Z&&!f.has(K))this.fsw._incrReadyCount(),L=P1.join(G,P1.relative(G,L)),this._addToNodeFs(L,z,Y,X+1)}).on(bz.ERROR,this._boundHandleError),new Promise((B,K)=>{if(!V)return K();V.once(M9,()=>{if(this.fsw.closed){V=void 0;return}let L=Q?Q.clear():!1;if(B(void 0),f.getChildren().filter((A)=>{return A!==J&&!j.has(A)}).forEach((A)=>{this.fsw._remove(J,A)}),V=void 0,L)this._handleRead(J,!1,Y,Z,G,X,Q)})})}async _handleDir(J,z,Y,Z,G,X,Q){let H=this.fsw._getWatchedDir(P1.dirname(J)),f=H.has(P1.basename(J));if(!(Y&&this.fsw.options.ignoreInitial)&&!G&&!f)this.fsw._emit(bz.ADD_DIR,J,z);H.add(P1.basename(J)),this.fsw._getWatchedDir(J);let j,V,B=this.fsw.options.depth;if((B==null||Z<=B)&&!this.fsw._symlinkPaths.has(Q)){if(!G){if(await this._handleRead(J,Y,X,G,J,Z,j),this.fsw.closed)return}V=this._watchWithNodeFs(J,(K,L)=>{if(L&&L.mtimeMs===0)return;this._handleRead(K,!1,X,G,J,Z,j)})}return V}async _addToNodeFs(J,z,Y,Z,G){let X=this.fsw._emitReady;if(this.fsw._isIgnored(J)||this.fsw.closed)return X(),!1;let Q=this.fsw._getWatchHelpers(J);if(Y)Q.filterPath=(H)=>Y.filterPath(H),Q.filterDir=(H)=>Y.filterDir(H);try{let H=await hC[Q.statMethod](Q.watchPath);if(this.fsw.closed)return;if(this.fsw._isIgnored(Q.watchPath,H))return X(),!1;let f=this.fsw.options.followSymlinks,j;if(H.isDirectory()){let V=P1.resolve(J),B=f?await D9(J):J;if(this.fsw.closed)return;if(j=await this._handleDir(Q.watchPath,H,z,Z,G,Q,B),this.fsw.closed)return;if(V!==B&&B!==void 0)this.fsw._symlinkPaths.set(V,B)}else if(H.isSymbolicLink()){let V=f?await D9(J):J;if(this.fsw.closed)return;let B=P1.dirname(Q.watchPath);if(this.fsw._getWatchedDir(B).add(Q.watchPath),this.fsw._emit(bz.ADD,Q.watchPath,H),j=await this._handleDir(B,H,z,Z,J,Q,V),this.fsw.closed)return;if(V!==void 0)this.fsw._symlinkPaths.set(P1.resolve(J),V)}else j=this._handleFile(Q.watchPath,H,z);if(X(),j)this.fsw._addPathCloser(J,j);return!1}catch(H){if(this.fsw._handleError(H))return X(),J}}}var xC="data",M9="end",N5="close",IH=()=>{},yH,O9,uC,EC,wC,C5,w1,bz,PC="watch",hC,SZ="listeners",kH="errHandlers",kG="rawEmitters",vC,mC,cC=(J)=>mC.has(P1.extname(J).slice(1).toLowerCase()),F9=(J,z)=>{if(J instanceof Set)J.forEach(z);else z(J)},eX=(J,z,Y)=>{let Z=J[z];if(!(Z instanceof Set))J[z]=Z=new Set([Z]);Z.add(Y)},dC=(J)=>(z)=>{let Y=J[z];if(Y instanceof Set)Y.clear();else delete J[z]},JQ=(J,z,Y)=>{let Z=J[z];if(Z instanceof Set)Z.delete(Y);else if(Z===Y)delete J[z]},k5=(J)=>J instanceof Set?J.size===0:!J,bH,SH=(J,z,Y,Z,G)=>{let X=bH.get(J);if(!X)return;F9(X[z],(Q)=>{Q(Y,Z,G)})},nC=(J,z,Y,Z)=>{let{listener:G,errHandler:X,rawEmitter:Q}=Z,H=bH.get(z),f;if(!Y.persistent){if(f=R5(J,Y,G,X,Q),!f)return;return f.close.bind(f)}if(H)eX(H,SZ,G),eX(H,kH,X),eX(H,kG,Q);else{if(f=R5(J,Y,SH.bind(null,z,SZ),X,SH.bind(null,z,kG)),!f)return;f.on(bz.ERROR,async(j)=>{let V=SH.bind(null,z,kH);if(H)H.watcherUnusable=!0;if(O9&&j.code==="EPERM")try{await(await yC(J,"r")).close(),V(j)}catch(B){}else V(j)}),H={listeners:G,errHandlers:X,rawEmitters:Q,watcher:f},bH.set(z,H)}return()=>{if(JQ(H,SZ,G),JQ(H,kH,X),JQ(H,kG,Q),k5(H.listeners))H.watcher.close(),bH.delete(z),vC.forEach(dC(H)),H.watcher=void 0,Object.freeze(H)}},L9,iC=(J,z,Y,Z)=>{let{listener:G,rawEmitter:X}=Z,Q=L9.get(z),H=Q&&Q.options;if(H&&(H.persistent<Y.persistent||H.interval>Y.interval))A5(z),Q=void 0;if(Q)eX(Q,SZ,G),eX(Q,kG,X);else Q={listeners:G,rawEmitters:X,options:Y,watcher:SC(z,Y,(f,j)=>{F9(Q.rawEmitters,(B)=>{B(bz.CHANGE,z,{curr:f,prev:j})});let V=f.mtimeMs;if(f.size!==j.size||V>j.mtimeMs||V===0)F9(Q.listeners,(B)=>B(J,f))})},L9.set(z,Q);return()=>{if(JQ(Q,SZ,G),JQ(Q,kG,X),k5(Q.listeners))L9.delete(z),A5(z),Q.options=Q.watcher=void 0,Object.freeze(Q)}};var b5=C(()=>{yH=process.platform,O9=yH==="win32",uC=yH==="darwin",EC=yH==="linux",wC=yH==="freebsd",C5=TC()==="OS400",w1={ALL:"all",READY:"ready",ADD:"add",CHANGE:"change",ADD_DIR:"addDir",UNLINK:"unlink",UNLINK_DIR:"unlinkDir",RAW:"raw",ERROR:"error"},bz=w1,hC={lstat:IC,stat:g5},vC=[SZ,kH,kG],mC=new Set(["3dm","3ds","3g2","3gp","7z","a","aac","adp","afdesign","afphoto","afpub","ai","aif","aiff","alz","ape","apk","appimage","ar","arj","asf","au","avi","bak","baml","bh","bin","bk","bmp","btif","bz2","bzip2","cab","caf","cgm","class","cmx","cpio","cr2","cur","dat","dcm","deb","dex","djvu","dll","dmg","dng","doc","docm","docx","dot","dotm","dra","DS_Store","dsk","dts","dtshd","dvb","dwg","dxf","ecelp4800","ecelp7470","ecelp9600","egg","eol","eot","epub","exe","f4v","fbs","fh","fla","flac","flatpak","fli","flv","fpx","fst","fvt","g3","gh","gif","graffle","gz","gzip","h261","h263","h264","icns","ico","ief","img","ipa","iso","jar","jpeg","jpg","jpgv","jpm","jxr","key","ktx","lha","lib","lvp","lz","lzh","lzma","lzo","m3u","m4a","m4v","mar","mdi","mht","mid","midi","mj2","mka","mkv","mmr","mng","mobi","mov","movie","mp3","mp4","mp4a","mpeg","mpg","mpga","mxu","nef","npx","numbers","nupkg","o","odp","ods","odt","oga","ogg","ogv","otf","ott","pages","pbm","pcx","pdb","pdf","pea","pgm","pic","png","pnm","pot","potm","potx","ppa","ppam","ppm","pps","ppsm","ppsx","ppt","pptm","pptx","psd","pya","pyc","pyo","pyv","qt","rar","ras","raw","resources","rgb","rip","rlc","rmf","rmvb","rpm","rtf","rz","s3m","s7z","scpt","sgi","shar","snap","sil","sketch","slk","smv","snk","so","stl","suo","sub","swf","tar","tbz","tbz2","tga","tgz","thmx","tif","tiff","tlz","ttc","ttf","txz","udf","uvh","uvi","uvm","uvp","uvs","uvu","viv","vob","war","wav","wax","wbmp","wdp","weba","webm","webp","whl","wim","wm","wma","wmv","wmx","woff","woff2","wrm","wvx","xbm","xif","xla","xlam","xls","xlsb","xlsm","xlsx","xlt","xltm","xltx","xm","xmind","xpi","xpm","xwd","xz","z","zip","zipx"]),bH=new Map;L9=new Map});import{EventEmitter as lC}from"events";import{stat as $C,Stats as hd}from"fs";import{readdir as aC,stat as _C}from"fs/promises";import*as H1 from"path";function TH(J){return Array.isArray(J)?J:[J]}function Jk(J){if(typeof J==="function")return J;if(typeof J==="string")return(z)=>J===z;if(J instanceof RegExp)return(z)=>J.test(z);if(typeof J==="object"&&J!==null)return(z)=>{if(J.path===z)return!0;if(J.recursive){let Y=H1.relative(J.path,z);if(!Y)return!1;return!Y.startsWith("..")&&!H1.isAbsolute(Y)}return!1};return()=>!1}function zk(J){if(typeof J!=="string")throw Error("string expected");J=H1.normalize(J),J=J.replace(/\\/g,"/");let z=!1;if(J.startsWith("//"))z=!0;if(J=J.replace(u5,"/"),z)J="/"+J;return J}function S5(J,z,Y){let Z=zk(z);for(let G=0;G<J.length;G++){let X=J[G];if(X(Z,Y))return!0}return!1}function Yk(J,z){if(J==null)throw TypeError("anymatch: specify first argument");let Z=TH(J).map((G)=>Jk(G));if(z==null)return(G,X)=>{return S5(Z,G,X)};return S5(Z,z)}class w5{path;_removeWatcher;items;constructor(J,z){this.path=J,this._removeWatcher=z,this.items=new Set}add(J){let{items:z}=this;if(!z)return;if(J!==x5&&J!==rC)z.add(J)}async remove(J){let{items:z}=this;if(!z)return;if(z.delete(J),z.size>0)return;let Y=this.path;try{await aC(Y)}catch(Z){if(this._removeWatcher)this._removeWatcher(H1.dirname(Y),H1.basename(Y))}}has(J){let{items:z}=this;if(!z)return;return z.has(J)}getChildren(){let{items:J}=this;if(!J)return[];return[...J.values()]}dispose(){this.items.clear(),this.path="",this._removeWatcher=IH,this.items=Gk,Object.freeze(this)}}class P5{fsw;path;watchPath;fullWatchPath;dirParts;followSymlinks;statMethod;constructor(J,z,Y){this.fsw=Y;let Z=J;this.path=J=J.replace(eC,""),this.watchPath=Z,this.fullWatchPath=H1.resolve(Z),this.dirParts=[],this.dirParts.forEach((G)=>{if(G.length>1)G.pop()}),this.followSymlinks=z,this.statMethod=z?Xk:Qk}entryPath(J){return H1.join(this.watchPath,H1.relative(this.watchPath,J.fullPath))}filterPath(J){let{stats:z}=J;if(z&&z.isSymbolicLink())return this.filterDir(J);let Y=this.entryPath(J);return this.fsw._isntIgnored(Y,z)&&this.fsw._hasReadPermissions(z)}filterDir(J){return this.fsw._isntIgnored(this.entryPath(J),J.stats)}}function v5(J,z={}){let Y=new h5(z);return Y.add(J),Y}var R9="/",pC="//",x5=".",rC="..",oC="string",sC,u5,tC,eC,g9=(J)=>typeof J==="object"&&J!==null&&!(J instanceof RegExp),I5=(J)=>{let z=TH(J).flat();if(!z.every((Y)=>typeof Y===oC))throw TypeError(`Non-string provided as watch path: ${z}`);return z.map(E5)},y5=(J)=>{let z=J.replace(sC,R9),Y=!1;if(z.startsWith(pC))Y=!0;if(z=z.replace(u5,R9),Y)z=R9+z;return z},E5=(J)=>y5(H1.normalize(y5(J))),T5=(J="")=>(z)=>{if(typeof z==="string")return E5(H1.isAbsolute(z)?z:H1.join(J,z));else return z},Zk=(J,z)=>{if(H1.isAbsolute(J))return J;return H1.join(z,J)},Gk,Xk="stat",Qk="lstat",h5;var m5=C(()=>{O5();b5();/*! chokidar - MIT License (c) 2012 Paul Miller (paulmillr.com) */sC=/\\/g,u5=/\/\//g,tC=/\..*\.(sw[px])$|~$|\.subl.*\.tmp/,eC=/^\.[/\\]/;Gk=Object.freeze(new Set);h5=class h5 extends lC{closed;options;_closers;_ignoredPaths;_throttled;_streams;_symlinkPaths;_watched;_pendingWrites;_pendingUnlinks;_readyCount;_emitReady;_closePromise;_userIgnored;_readyEmitted;_emitRaw;_boundRemove;_nodeFsHandler;constructor(J={}){super();this.closed=!1,this._closers=new Map,this._ignoredPaths=new Set,this._throttled=new Map,this._streams=new Set,this._symlinkPaths=new Map,this._watched=new Map,this._pendingWrites=new Map,this._pendingUnlinks=new Map,this._readyCount=0,this._readyEmitted=!1;let z=J.awaitWriteFinish,Y={stabilityThreshold:2000,pollInterval:100},Z={persistent:!0,ignoreInitial:!1,ignorePermissionErrors:!1,interval:100,binaryInterval:300,followSymlinks:!0,usePolling:!1,atomic:!0,...J,ignored:J.ignored?TH(J.ignored):TH([]),awaitWriteFinish:z===!0?Y:typeof z==="object"?{...Y,...z}:!1};if(C5)Z.usePolling=!0;if(Z.atomic===void 0)Z.atomic=!Z.usePolling;let G=process.env.CHOKIDAR_USEPOLLING;if(G!==void 0){let H=G.toLowerCase();if(H==="false"||H==="0")Z.usePolling=!1;else if(H==="true"||H==="1")Z.usePolling=!0;else Z.usePolling=!!H}let X=process.env.CHOKIDAR_INTERVAL;if(X)Z.interval=Number.parseInt(X,10);let Q=0;this._emitReady=()=>{if(Q++,Q>=this._readyCount)this._emitReady=IH,this._readyEmitted=!0,process.nextTick(()=>this.emit(w1.READY))},this._emitRaw=(...H)=>this.emit(w1.RAW,...H),this._boundRemove=this._remove.bind(this),this.options=Z,this._nodeFsHandler=new A9(this),Object.freeze(Z)}_addIgnoredPath(J){if(g9(J)){for(let z of this._ignoredPaths)if(g9(z)&&z.path===J.path&&z.recursive===J.recursive)return}this._ignoredPaths.add(J)}_removeIgnoredPath(J){if(this._ignoredPaths.delete(J),typeof J==="string"){for(let z of this._ignoredPaths)if(g9(z)&&z.path===J)this._ignoredPaths.delete(z)}}add(J,z,Y){let{cwd:Z}=this.options;this.closed=!1,this._closePromise=void 0;let G=I5(J);if(Z)G=G.map((X)=>{return Zk(X,Z)});if(G.forEach((X)=>{this._removeIgnoredPath(X)}),this._userIgnored=void 0,!this._readyCount)this._readyCount=0;return this._readyCount+=G.length,Promise.all(G.map(async(X)=>{let Q=await this._nodeFsHandler._addToNodeFs(X,!Y,void 0,0,z);if(Q)this._emitReady();return Q})).then((X)=>{if(this.closed)return;X.forEach((Q)=>{if(Q)this.add(H1.dirname(Q),H1.basename(z||Q))})}),this}unwatch(J){if(this.closed)return this;let z=I5(J),{cwd:Y}=this.options;return z.forEach((Z)=>{if(!H1.isAbsolute(Z)&&!this._closers.has(Z)){if(Y)Z=H1.join(Y,Z);Z=H1.resolve(Z)}if(this._closePath(Z),this._addIgnoredPath(Z),this._watched.has(Z))this._addIgnoredPath({path:Z,recursive:!0});this._userIgnored=void 0}),this}close(){if(this._closePromise)return this._closePromise;this.closed=!0,this.removeAllListeners();let J=[];return this._closers.forEach((z)=>z.forEach((Y)=>{let Z=Y();if(Z instanceof Promise)J.push(Z)})),this._streams.forEach((z)=>z.destroy()),this._userIgnored=void 0,this._readyCount=0,this._readyEmitted=!1,this._watched.forEach((z)=>z.dispose()),this._closers.clear(),this._watched.clear(),this._streams.clear(),this._symlinkPaths.clear(),this._throttled.clear(),this._closePromise=J.length?Promise.all(J).then(()=>{return}):Promise.resolve(),this._closePromise}getWatched(){let J={};return this._watched.forEach((z,Y)=>{let G=(this.options.cwd?H1.relative(this.options.cwd,Y):Y)||x5;J[G]=z.getChildren().sort()}),J}emitWithAll(J,z){if(this.emit(J,...z),J!==w1.ERROR)this.emit(w1.ALL,J,...z)}async _emit(J,z,Y){if(this.closed)return;let Z=this.options;if(O9)z=H1.normalize(z);if(Z.cwd)z=H1.relative(Z.cwd,z);let G=[z];if(Y!=null)G.push(Y);let X=Z.awaitWriteFinish,Q;if(X&&(Q=this._pendingWrites.get(z)))return Q.lastChange=new Date,this;if(Z.atomic){if(J===w1.UNLINK)return this._pendingUnlinks.set(z,[J,...G]),setTimeout(()=>{this._pendingUnlinks.forEach((H,f)=>{this.emit(...H),this.emit(w1.ALL,...H),this._pendingUnlinks.delete(f)})},typeof Z.atomic==="number"?Z.atomic:100),this;if(J===w1.ADD&&this._pendingUnlinks.has(z))J=w1.CHANGE,this._pendingUnlinks.delete(z)}if(X&&(J===w1.ADD||J===w1.CHANGE)&&this._readyEmitted){let H=(f,j)=>{if(f)J=w1.ERROR,G[0]=f,this.emitWithAll(J,G);else if(j){if(G.length>1)G[1]=j;else G.push(j);this.emitWithAll(J,G)}};return this._awaitWriteFinish(z,X.stabilityThreshold,J,H),this}if(J===w1.CHANGE){if(!this._throttle(w1.CHANGE,z,50))return this}if(Z.alwaysStat&&Y===void 0&&(J===w1.ADD||J===w1.ADD_DIR||J===w1.CHANGE)){let H=Z.cwd?H1.join(Z.cwd,z):z,f;try{f=await _C(H)}catch(j){}if(!f||this.closed)return;G.push(f)}return this.emitWithAll(J,G),this}_handleError(J){let z=J&&J.code;if(J&&z!=="ENOENT"&&z!=="ENOTDIR"&&(!this.options.ignorePermissionErrors||z!=="EPERM"&&z!=="EACCES"))this.emit(w1.ERROR,J);return J||this.closed}_throttle(J,z,Y){if(!this._throttled.has(J))this._throttled.set(J,new Map);let Z=this._throttled.get(J);if(!Z)throw Error("invalid throttle");let G=Z.get(z);if(G)return G.count++,!1;let X,Q=()=>{let f=Z.get(z),j=f?f.count:0;if(Z.delete(z),clearTimeout(X),f)clearTimeout(f.timeoutObject);return j};X=setTimeout(Q,Y);let H={timeoutObject:X,clear:Q,count:0};return Z.set(z,H),H}_incrReadyCount(){return this._readyCount++}_awaitWriteFinish(J,z,Y,Z){let G=this.options.awaitWriteFinish;if(typeof G!=="object")return;let X=G.pollInterval,Q,H=J;if(this.options.cwd&&!H1.isAbsolute(J))H=H1.join(this.options.cwd,J);let f=new Date,j=this._pendingWrites;function V(B){$C(H,(K,L)=>{if(K||!j.has(J)){if(K&&K.code!=="ENOENT")Z(K);return}let A=Number(new Date);if(B&&L.size!==B.size)j.get(J).lastChange=A;let O=j.get(J);if(A-O.lastChange>=z)j.delete(J),Z(void 0,L);else Q=setTimeout(V,X,L)})}if(!j.has(J))j.set(J,{lastChange:f,cancelWait:()=>{return j.delete(J),clearTimeout(Q),Y}}),Q=setTimeout(V,X)}_isIgnored(J,z){if(this.options.atomic&&tC.test(J))return!0;if(!this._userIgnored){let{cwd:Y}=this.options,G=(this.options.ignored||[]).map(T5(Y)),Q=[...[...this._ignoredPaths].map(T5(Y)),...G];this._userIgnored=Yk(Q,void 0)}return this._userIgnored(J,z)}_isntIgnored(J,z){return!this._isIgnored(J,z)}_getWatchHelpers(J){return new P5(J,this.options.followSymlinks,this)}_getWatchedDir(J){let z=H1.resolve(J);if(!this._watched.has(z))this._watched.set(z,new w5(z,this._boundRemove));return this._watched.get(z)}_hasReadPermissions(J){if(this.options.ignorePermissionErrors)return!0;return Boolean(Number(J.mode)&256)}_remove(J,z,Y){let Z=H1.join(J,z),G=H1.resolve(Z);if(Y=Y!=null?Y:this._watched.has(Z)||this._watched.has(G),!this._throttle("remove",Z,100))return;if(!Y&&this._watched.size===1)this.add(J,z,!0);this._getWatchedDir(Z).getChildren().forEach((B)=>this._remove(Z,B));let H=this._getWatchedDir(J),f=H.has(z);if(H.remove(z),this._symlinkPaths.has(G))this._symlinkPaths.delete(G);let j=Z;if(this.options.cwd)j=H1.relative(this.options.cwd,Z);if(this.options.awaitWriteFinish&&this._pendingWrites.has(j)){if(this._pendingWrites.get(j).cancelWait()===w1.ADD)return}this._watched.delete(Z),this._watched.delete(G);let V=Y?w1.UNLINK_DIR:w1.UNLINK;if(f&&!this._isIgnored(Z))this._emit(V,Z);this._closePath(Z)}_closePath(J){this._closeFile(J);let z=H1.dirname(J);this._getWatchedDir(z).remove(H1.basename(J))}_closeFile(J){let z=this._closers.get(J);if(!z)return;z.forEach((Y)=>Y()),this._closers.delete(J)}_addPathCloser(J,z){if(!z)return;let Y=this._closers.get(J);if(!Y)Y=[],this._closers.set(J,Y);Y.push(z)}_readdirp(J,z){if(this.closed)return;let Y={type:w1.ALL,alwaysStat:!0,lstat:!0,...z,depth:0},Z=M5(J,Y);return this._streams.add(Z),Z.once(N5,()=>{Z=void 0}),Z.once(M9,()=>{if(Z)this._streams.delete(Z),Z=void 0}),Z}}});import{mkdirSync as qk,statSync as Hk}from"fs";import{basename as c5,dirname as fk,join as jk}from"path";function xH(J){if(J.debounceMs<=0)return()=>{};let z=fk(J.filePath),Y=new Set([c5(J.filePath),...J.matchBasenames??[]]),Z=null,G=null,X=!1,Q=()=>{try{J.onTrigger()}catch(V){J.onError(V)}},H=()=>{if(Z)clearTimeout(Z);Z=setTimeout(()=>{Z=null,Q()},J.debounceMs),Z.unref?.()},f=(V)=>{if(!Y.has(c5(V)))return;H()},j=(V)=>{try{let B=Hk(jk(z,V));return`${B.mtimeMs}:${B.size}`}catch{return null}};try{qk(z,{recursive:!0});let V=new Map;for(let B of Y)V.set(B,j(B));G=v5(z,{depth:0,ignoreInitial:!0}),G.on("add",f),G.on("change",f),G.on("unlink",f),G.on("error",J.onError),G.once("ready",()=>{for(let B of Y)if(j(B)!==V.get(B)){H();break}})}catch(V){J.onError(V)}return()=>{if(X)return;if(X=!0,Z)clearTimeout(Z),Z=null;let V=G;G=null,V?.close().catch(J.onError)}}var N9=C(()=>{m5()});import{homedir as Bk}from"os";import{basename as Wk,join as Vk}from"path";function k9(J=process.env.KOBE_HOME_DIR??Bk()){return Vk(J,".kobe","settings","keybindings.yaml")}function d5(J,z={}){let Y=z.debounceMs??C9;if(Y<=0)return()=>{};let Z=z.path??k9(),G=Wk(Z),X=G.replace(/\.yaml$/,".yml"),Q=0;return J.publish("keybindings",{rev:Q}),xH({filePath:Z,matchBasenames:[G,X],debounceMs:Y,onTrigger:()=>{try{Q+=1,J.publish("keybindings",{rev:Q})}catch(f){u1("keybindings-watcher",f)}},onError:(f)=>u1("keybindings-watcher",f)})}var C9=200;var n5=C(()=>{N9()});class b9{clients;idleGraceMs;onIdleStop;schedule;log;cancelIdle=null;stopping=!1;constructor(J){this.clients=J.clients,this.idleGraceMs=J.idleGraceMs,this.onIdleStop=J.onIdleStop,this.schedule=J.schedule??Kk,this.log=J.log??iz}guiCount(){let J=0;for(let z of this.clients())if(z.holdsLifetime)J++;return J}hasSubscribers(){for(let J of this.clients())if(J.subscribed)return!0;return!1}isStopping(){return this.stopping}markStopping(){this.stopping=!0,this.clearIdle()}guiAttached(){this.clearIdle()}clientDisconnected(J){if(J)this.maybeArm()}clearIdle(){if(this.cancelIdle)this.cancelIdle(),this.cancelIdle=null}maybeArm(){if(this.stopping||this.guiCount()>0)return;this.clearIdle(),this.log("idle",`last gui gone \u2014 arming ${this.idleGraceMs}ms idle-stop grace`),this.cancelIdle=this.schedule(()=>{if(this.cancelIdle=null,this.stopping||this.guiCount()>0)return;this.log("idle","grace elapsed with no gui \u2014 self-stopping"),this.onIdleStop()},this.idleGraceMs)}}var Kk=(J,z)=>{let Y=setTimeout(J,z);return Y.unref?.(),()=>clearTimeout(Y)};var i5=()=>{};import{spawn as Uk}from"child_process";function gk(J,z,Y){return new Promise((Z)=>{let G="",X="",Q=!1,H=(j,V)=>{if(Q)return;Q=!0,Z({status:j,stdout:G,stderr:X,spawnError:V})},f=Uk("gh",J.slice(),{cwd:z,stdio:["ignore","pipe","pipe"],signal:Y,killSignal:"SIGKILL"});f.stdout?.on("data",(j)=>{G+=String(j)}),f.stderr?.on("data",(j)=>{X+=String(j)}),f.on("error",()=>H(null,!Y.aborted)),f.on("close",(j)=>H(j,!1))})}function Ck(J){if(J.archived)return!1;if(J.kind==="main")return!1;if(!J.branch||!J.worktreePath)return!1;if(r1(J.repo)||r1(J.worktreePath))return!1;return!0}async function kk(J,z){let Y=z.tickMs??zQ,Z=z.rand,G={tickMs:Y,settledMs:Lk,noPrMs:Dk,noRemoteMs:Ok,failureBaseMs:Fk,failureCapMs:Mk,jitterRatio:Ak},X=[];for(let Q of J.listTasks()){if(!Ck(Q)){z.schedule.delete(Q.id);continue}let H=z.schedule.get(Q.id);if(H&&z.now<H.nextAllowedAt)continue;let f=H?.failures??0;try{let j=await z.run(Q.worktreePath,Q.branch);if(j.kind==="error"){iz("pr-status-poller",`gh pr view failed (${j.error}) for task ${Q.id} [${Q.branch}] \u2014 keeping last PR status, backing off`),z.schedule.set(Q.id,NX({kind:"error",error:j.error},f,z.now,G,Z));continue}if(j.kind==="empty"){z.schedule.set(Q.id,NX({kind:"empty"},f,z.now,G,Z));continue}let V=BK(j.view,z.at),B=J.getTask(Q.id);if(!B){z.schedule.delete(Q.id);continue}if(!wq(B.prStatus,V??void 0))await J.setPRStatus(Q.id,V),X.push(Q.id);let K=V?.lifecycle==="merged"||V?.lifecycle==="closed";z.schedule.set(Q.id,NX({kind:"pr",settled:K},f,z.now,G,Z))}catch(j){u1("pr-status-poller",j),z.schedule.set(Q.id,NX({kind:"error",error:"network"},f,z.now,G,Z))}}return X}function l5(J,z=zQ,Y,Z=Nk){if(z<=0)return()=>{};let G=new Map,X=!1,H=setInterval(()=>{if(Y&&!Y())return;if(X)return;X=!0,kk(J,{run:Z,now:Date.now(),at:new Date().toISOString(),schedule:G,tickMs:z}).catch((f)=>u1("pr-status-poller",f)).finally(()=>{X=!1})},z);return H.unref?.(),()=>clearInterval(H)}var zQ=30000,Dk=300000,Lk=600000,Fk,Mk=900000,Ok=1800000,Ak=0.2,Rk=1e4,Nk=async(J,z)=>{let Y=new AbortController,Z=!1,G=setTimeout(()=>{Z=!0,Y.abort()},Rk);try{let X=await gk(["pr","view",z,"--json",jK],J,Y.signal);if(X.status===0&&!Z)try{let Q=JSON.parse(X.stdout);return typeof Q.number==="number"?{kind:"pr",view:Q}:{kind:"empty"}}catch{return JB({parseError:!0})}return JB({spawnError:X.spawnError,timedOut:Z,exitCode:X.status,stderr:X.stderr})}finally{clearTimeout(G)}};var $5=C(()=>{zB();C1();Fk=zQ});function yk(J,z){return J.mtimeMs===z.mtimeMs&&J.completionId===z.completionId&&J.completionAt===z.completionAt}async function Tk(J,z,Y,Z){let G=await tZ(z,J),X=await Y.latestCompletion(J);return{mtimeMs:G,completionId:X?.id??null,completionAt:X?.timestampMs??0}}function xk(J){let z=new Map;for(let Y of J){if(Y.archived)continue;if(!Y.worktreePath)continue;if(r1(Y.repo)||r1(Y.worktreePath))continue;if(z.has(Y.worktreePath))continue;z.set(Y.worktreePath,Y.vendor??o1)}return z}class a5{orch;bus;options;entries=new Map;stopped=!1;constructor(J,z,Y={}){this.orch=J;this.bus=z;this.options=Y}tick(){if(this.stopped)return;if(this.options.hasSubscribers&&!this.options.hasSubscribers())return;try{let J=xk(this.orch.listTasks()),z=!1;for(let Y of this.entries.keys()){if(J.has(Y))continue;if(this.entries.get(Y)?.value)z=!0;this.entries.delete(Y)}if(z)this.publish();for(let[Y,Z]of J)this.maybeCollect(Y,Z)}catch(J){u1("transcript-activity",J)}}stop(){this.stopped=!0}maybeCollect(J,z){let Y=this.entries.get(J);if(!Y)Y={inFlight:!1,nextAllowedAt:0,vendor:z,detector:LX(z)},this.entries.set(J,Y);else if(Y.vendor!==z)Y.vendor=z,Y.detector=LX(z);let Z=this.options.cadence??{timeoutMs:bk,slowRetryMs:Sk,minIntervalMs:Ik},G=this.options.run??Tk,X=Y;ZG(X,Z,(Q)=>G(J,X.vendor,X.detector,Q),(Q)=>{if(this.stopped)return;if(this.entries.get(J)!==X)return;if(X.value&&yk(X.value,Q))return;X.value=Q,this.publish()})}publish(){let J={};for(let[z,Y]of this.entries)if(Y.value)J[z]=Y.value;this.bus.publish("transcript.activity",{activity:J})}}function _5(J,z,Y=S9,Z){if(Y<=0)return()=>{};let G=new a5(J,z,{hasSubscribers:Z});G.tick();let X=setInterval(()=>G.tick(),Y);return X.unref?.(),()=>{clearInterval(X),G.stop()}}var S9=1500,bk=4000,Sk=60000,Ik=1500;var p5=C(()=>{Fq();GG();Mq();C1();zz()});import{readFileSync as uk}from"fs";import{homedir as Ek}from"os";import{basename as wk,join as Pk}from"path";function y9(J=process.env.KOBE_HOME_DIR??Ek()){return Pk(J,".config","kobe","state.json")}function r5(J){let z={};try{let j=JSON.parse(uk(J,"utf8"));if(j&&typeof j==="object"&&!Array.isArray(j))z=j}catch{}let Y=typeof z.activeTheme==="string"&&z.activeTheme.length>0?z.activeTheme:"claude",Z=z.transparentBackground===!0,G=typeof z.focusAccent==="string"&&vk.includes(z.focusAccent)?z.focusAccent:null,X=z.activeSortMode==="recent"?"recent":"default",Q=z["tasksPane.keysCollapsed"]===!0,H=typeof z["tasksPane.projectFilter"]==="string"&&z["tasksPane.projectFilter"].length>0?z["tasksPane.projectFilter"]:null,f=typeof z.locale==="string"&&z.locale.length>0?z.locale:"en";return{theme:Y,transparentBackground:Z,focusAccent:G,locale:f,sortMode:X,keysCollapsed:Q,projectFilter:H}}function mk(J,z){return J.theme===z.theme&&J.transparentBackground===z.transparentBackground&&J.focusAccent===z.focusAccent&&J.locale===z.locale&&J.sortMode===z.sortMode&&J.keysCollapsed===z.keysCollapsed&&J.projectFilter===z.projectFilter}function o5(J,z={}){let Y=z.debounceMs??I9;if(Y<=0)return()=>{};let Z=z.pollMs??hk,G=z.statePath??y9(),X=wk(G),Q=r5(G);return J.publish("ui-prefs",Q),xH({filePath:G,matchBasenames:[X],debounceMs:Y,pollMs:Z,onTrigger:()=>{try{let f=r5(G);if(mk(Q,f))return;Q=f,J.publish("ui-prefs",f)}catch(f){u1("ui-prefs-watcher",f)}},onError:(f)=>u1("ui-prefs-watcher",f)})}var I9=200,hk=250,vk;var s5=C(()=>{N9();vk=["primary","success","info"]});function bG(J){return IZ.includes(J)?J:"auto"}var IZ,t5,BY="editor.kind",cY="editor.customCommand",uH="auto";var EH=C(()=>{IZ=["auto","vim","nvim","nano","emacs","custom"],t5=["nvim","vim","emacs","nano"]});function TZ(J){return J==="taskpanel"?"taskpanel":"chattab"}var WY="settings.surface",yZ="chattab";function e5(J){return J>="0"&&J<="7"}function z6(J,z){let Y=[],Z="",G=()=>{if(Z.length>0){for(let Q of ck.encode(Z))Y.push(Q);Z=""}},X=z+1;while(X<J.length){let Q=J[X];if(Q==='"'){X++;break}if(Q==="\\"){let H=J[X+1];if(H===void 0){Z+="\\",X++;continue}switch(H){case"a":G(),Y.push(7),X+=2;break;case"b":G(),Y.push(8),X+=2;break;case"t":G(),Y.push(9),X+=2;break;case"n":G(),Y.push(10),X+=2;break;case"v":G(),Y.push(11),X+=2;break;case"f":G(),Y.push(12),X+=2;break;case"r":G(),Y.push(13),X+=2;break;case'"':Z+='"',X+=2;break;case"\\":Z+="\\",X+=2;break;default:if(e5(H)){let f="",j=X+1;while(j<J.length&&f.length<3&&e5(J[j]))f+=J[j],j++;G(),Y.push(Number.parseInt(f,8)&255),X=j}else Z+=H,X+=2;break}}else Z+=Q,X++}return G(),{value:dk.decode(new Uint8Array(Y)),end:X}}function xZ(J){if(J.length===0||J[0]!=='"')return J;return z6(J,0).value}function Y6(J,z){if(J[0]==='"'){let Z=z6(J,0);if(J.startsWith(z,Z.end))return{orig:Z.value,neu:xZ(J.slice(Z.end+z.length))};return null}let Y=J.indexOf(z);if(Y<0)return null;return{orig:J.slice(0,Y),neu:xZ(J.slice(Y+z.length))}}function nk(J){let z=J.indexOf("{");if(z>=0){let Z=J.indexOf("}",z),G=J.indexOf(" => ",z);if(Z>z&&G>=0&&G<Z){let X=J.slice(0,z),Q=J.slice(z+1,G),H=J.slice(G+4,Z),f=J.slice(Z+1);return{path:X+H+f,origPath:X+Q+f}}}let Y=Y6(J," => ");if(Y)return{path:Y.neu,origPath:Y.orig};return{path:xZ(J)}}function wH(J){let z=[];for(let Y of J.split(`
66
- `)){let Z=Y.replace(/\r$/,"");if(Z.length<4)continue;if(Z.startsWith("##"))continue;let G=Z[0],X=Z[1];if(Z[2]!==" ")continue;let Q=Z.slice(3);if(G==="R"||G==="C"||X==="R"||X==="C"){let H=Y6(Q," -> ");if(H){z.push({x:G,y:X,path:H.neu,origPath:H.orig});continue}}z.push({x:G,y:X,path:xZ(Q)})}return z}function J6(J){if(J==="-")return null;let z=Number.parseInt(J,10);return Number.isNaN(z)?null:z}function Z6(J){let z=[];for(let Y of J.split(`
67
- `)){let Z=Y.replace(/\r$/,"");if(Z.length===0)continue;let G=Z.indexOf("\t");if(G<0)continue;let X=Z.indexOf("\t",G+1);if(X<0)continue;let Q=Z.slice(X+1);if(Q.length===0)continue;let H=nk(Q);if(H.path.length===0)continue;z.push({path:H.path,...H.origPath!==void 0?{origPath:H.origPath}:{},added:J6(Z.slice(0,G)),deleted:J6(Z.slice(G+1,X))})}return z}var ck,dk;var PH=C(()=>{ck=new TextEncoder,dk=new TextDecoder});function iJ(J=process.env){return{...J,...T9}}var T9;var dY=C(()=>{T9={GIT_OPTIONAL_LOCKS:"0"}});async function SG(J,z,Y={}){if(!J)return{stdout:"",stderr:"worktreePath is required",status:-1};let Z=(Y.execForPath??HY)(J),G=Y.timeoutMs&&Y.timeoutMs>0?new AbortController:null,X=!1,Q=G?setTimeout(()=>{X=!0,G.abort()},Y.timeoutMs):null,H=G&&Y.signal?AbortSignal.any([G.signal,Y.signal]):G?.signal??Y.signal,f;try{f=await Z.run(["git",...z],{cwd:J,env:T9,signal:H})}catch(j){if(Q)clearTimeout(Q);return{stdout:"",stderr:j instanceof Error?j.message:String(j),status:-1}}if(Q)clearTimeout(Q);if(X&&f.exitCode===-1&&!f.stderr)return{stdout:f.stdout,stderr:`git ${z.join(" ")} timed out after ${Y.timeoutMs}ms`,status:-1};return{stdout:f.stdout,stderr:f.stderr,status:f.exitCode}}function ik(J,z){if(!J||!z||z.startsWith("/"))return null;let Y=z.split("/");if(Y.some((Z)=>Z===".."))return null;return`${J.replace(/\/+$/,"")}/${Y.filter(Boolean).join("/")}`}async function G6(J,z,Y={}){let Z=ik(J,z);if(!Z)return null;let G=(Y.execForPath??HY)(J);try{return await G.readFile(Z)}catch{return null}}var hH=C(()=>{Oz();dY()});import{statSync as lk}from"fs";async function YQ(J,z){let Y=await SG(J,z,{timeoutMs:$k}),Z=Y.status??-1;return{ok:Z===0,stdout:Y.stdout,stderr:Y.stderr,code:Z}}function _k(J){switch(J){case"M":return"modified";case"A":return"added";case"D":return"deleted";case"R":return"renamed";case"C":return"copied";case"T":return"type changed";case"U":return"unmerged";case"?":return"untracked";default:return"changed"}}function X6(J){if(J==="/dev/null")return null;let z=J;if(z.startsWith('"'))z=xZ(z);else{let Y=z.indexOf("\t");if(Y>=0)z=z.slice(0,Y)}if(z.startsWith("a/")||z.startsWith("b/"))z=z.slice(2);return z.length>0?z:null}function Q6(J){let z=new Map;if(!J)return z;let Y=J.split(/(?=^diff --git )/m);for(let Z of Y){if(!Z.startsWith("diff --git"))continue;let G=null,X=Z.match(/^\+\+\+ (.*)$/m);if(X)G=X6(X[1]);if(G===null){let Q=Z.match(/^--- (.*)$/m);if(Q)G=X6(Q[1])}if(G===null){let Q=Z.match(/^diff --git a\/.* b\/(.*)$/m);if(Q)G=xZ(Q[1])}if(G===null)continue;z.set(G,Z.endsWith(`
68
- `)?Z:`${Z}
69
- `)}return z}async function pk(J,z,Y){let Z=Array(J.length),G=Math.max(1,Math.min(z,J.length)),X=0;async function Q(){while(X<J.length){let H=X++;Z[H]=await Y(J[H],H)}}return await Promise.all(Array.from({length:G},()=>Q())),Z}async function rk(J,z){let Y=await YQ(J,["diff","--no-color","--no-index","--","/dev/null",z]);if(Y.stdout.trim())return Y.stdout.endsWith(`
70
- `)?Y.stdout:`${Y.stdout}
71
- `;return""}async function q6(J,z){if(z.pathname!=="/api/diff")return null;if(J.method!=="GET")return Response.json({error:"method not allowed"},{status:405});let Y=z.searchParams.get("worktreePath");if(!Y)return Response.json({error:"missing worktreePath"},{status:400});let Z;try{Z=decodeURIComponent(Y)}catch{return Response.json({error:"invalid worktreePath encoding"},{status:400})}if(!Z.startsWith("/"))return Response.json({error:"worktreePath must be an absolute path"},{status:400});if(!xY(Z))return Response.json({error:"worktreePath does not exist"},{status:400});if(!HY(Z).isRemote)try{if(!lk(Z).isDirectory())return Response.json({error:"worktreePath is not a directory"},{status:400})}catch{return Response.json({error:"worktreePath does not exist"},{status:400})}let X=await YQ(Z,["rev-parse","--is-inside-work-tree"]);if(!X.ok||X.stdout.trim()!=="true")return Response.json({error:`not a git work tree: ${X.stderr.trim()||Z}`},{status:500});let[Q,H,f]=await Promise.all([YQ(Z,["status","--porcelain=v1","-z","--untracked-files=all"]),YQ(Z,["diff","--no-color"]),YQ(Z,["diff","--no-color","--staged"])]);if(!Q.ok)return Response.json({error:`git status failed: ${Q.stderr.trim()}`},{status:500});let j=Q6(H.stdout),V=Q6(f.stdout),B=Q.stdout.split("\x00"),K=[],L=[];for(let R=0;R<B.length;R++){let u=B[R];if(!u)continue;let P=u[0]??" ",S=u[1]??" ",g=u.slice(3);if(!g)continue;if(P==="R"||P==="C"||S==="R"||S==="C")R++;let M=P==="?"&&S==="?",T=P!==" "&&P!=="?"?P:S,d=P!==" "&&P!=="?",i="";if(M)L.push({fileIndex:K.length,path:g});else if(i=V.get(g)??j.get(g)??"",V.has(g)&&j.has(g))i=`${V.get(g)}${j.get(g)}`;K.push({path:g,status:M?"untracked":_k(T),staged:d,patch:i})}if(L.length>0){let R=await pk(L,ak,(u)=>rk(Z,u.path));for(let u=0;u<L.length;u++)K[L[u].fileIndex].patch=R[u]}K.sort((R,u)=>R.path.localeCompare(u.path));let A=[f.stdout,H.stdout].filter(Boolean).join(`
72
- `),O={files:K,raw:A};return Response.json(O)}var $k=15000,ak=8;var H6=C(()=>{Oz();PH();hH()});import{isAbsolute as ok}from"path";function j6(J){return typeof J==="string"&&J.length>0&&/^[A-Za-z0-9_-]+$/.test(J)}function tk(J){return typeof J==="string"&&J.length>0&&/^[A-Za-z0-9._-]+$/.test(J)&&!J.includes("..")}async function ek(J){let z=J.searchParams.get("worktreePath"),Y=J.searchParams.get("vendor")??"claude";if(!z||!ok(z))return Response.json({error:"worktreePath must be an absolute path"},{status:400});if(!j6(Y))return Response.json({error:"invalid vendor"},{status:400});try{let Z=i1(Y).history,[G,X]=await Promise.all([Z.listSessionIdsForWorktree(z),Z.latestTranscriptMtimeForWorktree(z)]);return Response.json({sessions:G,latestMtime:X})}catch(Z){return Response.json({error:Z instanceof Error?Z.message:String(Z)},{status:500})}}async function Jb(J){let z=J.searchParams.get("vendor")??"claude",Y=J.searchParams.get("sessionId");if(!j6(z))return Response.json({error:"invalid vendor"},{status:400});if(!tk(Y))return Response.json({error:"invalid sessionId"},{status:400});try{let Z=await i1(z).history.readHistory(Y);return Response.json({messages:Z})}catch(Z){return Response.json({error:Z instanceof Error?Z.message:String(Z)},{status:500})}}async function B6(J,z){if(z.pathname!==f6&&z.pathname!==sk)return null;if(J.method!=="GET")return Response.json({error:"method not allowed"},{status:405});return z.pathname===f6?ek(z):Jb(z)}var f6="/api/history/sessions",sk="/api/history/messages";var W6=C(()=>{QY()});import{mkdir as zb,readFile as Yb,writeFile as Zb}from"fs/promises";import{join as V6}from"path";function K6(){return V6(XJ(),"notes")}function U6(J){return typeof J==="string"&&J.length>0&&/^[A-Za-z0-9_-]+$/.test(J)}function D6(J){return V6(K6(),`${J}.md`)}async function Xb(J){let z=J.searchParams.get("taskId");if(!U6(z))return Response.json({error:"invalid taskId"},{status:400});try{let Y="";try{Y=await Yb(D6(z),"utf8")}catch(Z){if(Z.code!=="ENOENT")throw Z}return Response.json({markdown:Y})}catch(Y){return Response.json({error:Y instanceof Error?Y.message:String(Y)},{status:500})}}async function Qb(J){let z;try{z=await J.json()}catch{return Response.json({error:"invalid JSON body"},{status:400})}if(!U6(z.taskId))return Response.json({error:"invalid taskId"},{status:400});if(typeof z.markdown!=="string")return Response.json({error:"markdown must be a string"},{status:400});try{return await zb(K6(),{recursive:!0}),await Zb(D6(z.taskId),z.markdown,"utf8"),Response.json({ok:!0})}catch(Y){return Response.json({error:Y instanceof Error?Y.message:String(Y)},{status:500})}}async function L6(J,z){if(z.pathname!==Gb)return null;if(J.method==="GET")return Xb(z);if(J.method==="PUT")return Qb(J);return Response.json({error:"method not allowed"},{status:405})}var Gb="/api/notes";var F6=C(()=>{p1()});function u9(J,z,Y=[]){if(z===void 0)return null;if(typeof z!=="string")return u9(J,z.dark,Y);if(z==="transparent"||z==="none")return null;if(z.startsWith("#"))return z;if(Y.includes(z))return null;let Z=J.defs?.[z]??J.theme[z];return u9(J,Z,[...Y,z])}function x9(J){return Math.max(0,Math.min(255,Math.round(J)))}function ZQ(J,z,Y){let Z=Number.parseInt(J.slice(1),16),G=Number.parseInt(z.slice(1),16),X=(H,f)=>H>>f&255;return`#${(x9(X(Z,16)+(X(G,16)-X(Z,16))*Y)<<16|x9(X(Z,8)+(X(G,8)-X(Z,8))*Y)<<8|x9(X(Z,0)+(X(G,0)-X(Z,0))*Y)).toString(16).padStart(6,"0")}`}function Hb(J){let z=(H)=>u9(J,J.theme[H]),Y=z("background"),Z=z("text");if(!Y||!Z)return null;let G=z("textMuted")??ZQ(Z,Y,0.35),X=z("primary")??Z,Q=z("border")??ZQ(Z,Y,0.8);return{bg:Y,surface:z("backgroundPanel")??Y,inset:z("backgroundElement")??Y,menu:z("backgroundMenu")??z("backgroundElement")??Y,line:Q,"line-subtle":z("borderSubtle")??Q,"line-active":z("borderActive")??ZQ(Q,Z,0.3),fg:Z,muted:G,subtle:ZQ(G,Y,0.35),primary:X,"primary-hover":ZQ(X,Z,0.35),"kobe-orange":X,"kobe-green":z("success")??Z,"kobe-blue":z("info")??Z,"kobe-red":z("error")??Z,"kobe-yellow":z("warning")??Z,"kobe-violet":z("secondary")??X}}function M6(J,z){if(z.pathname!==jb)return null;if(J.method!=="GET")return Response.json({error:"method not allowed"},{status:405});return Response.json({themes:fb})}var qb,fb,jb="/api/themes";var O6=C(()=>{oq();sq();tq();eq();JH();zH();YH();qb={claude:VG,conductor:KG,dracula:UG,nord:DG,opencode:LG,"osaka-jade":FG,tokyonight:MG};fb=Object.fromEntries(Object.entries(qb).map(([J,z])=>[J,Hb(z)]).filter((J)=>J[1]!==null))});import{createHash as Bb,randomUUID as Wb}from"crypto";import{mkdir as Vb}from"fs/promises";import{join as E9,resolve as Kb}from"path";function Lb(J){return Bb("sha1").update(J).digest("hex").slice(0,16)}async function Ob(J){let z=Number.parseInt(J.headers.get("content-length")??"",10);if(Number.isFinite(z)&&z>A6)return Response.json({error:"asset too large"},{status:413});let Y;try{Y=await J.formData()}catch{return Response.json({error:"invalid form data"},{status:400})}let Z=Y.get("repoRoot");if(typeof Z!=="string"||Z.length===0)return Response.json({error:"missing repoRoot"},{status:400});let G=Y.get("file");if(!(G instanceof File))return Response.json({error:"file must be a File"},{status:400});if(G.size>A6)return Response.json({error:"asset too large"},{status:413});let X=Ub[G.type];if(!X)return Response.json({error:`unsupported content-type: ${G.type||"unknown"}`},{status:415});try{let Q=Lb(Z),H=E9(_f(),Q);await Vb(H,{recursive:!0});let j=`${Wb()}.${X}`;return await Bun.write(E9(H,j),G),Response.json({url:`${vH}/${Q}/${j}`})}catch(Q){return Response.json({error:Q instanceof Error?Q.message:String(Q)},{status:500})}}async function Ab(J){let z=J.slice(vH.length+1),Y=z.indexOf("/");if(Y<0)return Response.json({error:"not found"},{status:404});let Z=z.slice(0,Y),G=z.slice(Y+1);if(!Fb.test(Z)||!Mb.test(G))return Response.json({error:"invalid asset path"},{status:400});let X=_f(),Q=Kb(X,Z,G);if(Q!==E9(X,Z,G)||!Q.startsWith(`${X}/`))return Response.json({error:"invalid asset path"},{status:400});let H=G.slice(G.lastIndexOf(".")+1).toLowerCase(),f=Db[H];if(!f)return Response.json({error:"invalid asset path"},{status:400});let j=Bun.file(Q);if(!await j.exists())return Response.json({error:"not found"},{status:404});return new Response(j,{headers:{"content-type":f,"cache-control":"public, max-age=31536000, immutable","x-content-type-options":"nosniff"}})}async function R6(J,z){if(z.pathname===vH){if(J.method==="POST")return Ob(J);return Response.json({error:"method not allowed"},{status:405})}if(z.pathname.startsWith(`${vH}/`)){if(J.method==="GET")return Ab(z.pathname);return Response.json({error:"method not allowed"},{status:405})}return null}var vH="/api/issue-assets",A6=10485760,Ub,Db,Fb,Mb;var g6=C(()=>{p1();Ub={"image/png":"png","image/jpeg":"jpg","image/gif":"gif","image/webp":"webp"},Db={png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",webp:"image/webp"};Fb=/^[a-f0-9]{16}$/,Mb=/^[A-Za-z0-9_-]+\.[a-z0-9]+$/});function N6(J,z=500){return Response.json({error:J instanceof Error?J.message:String(J)},{status:z})}function C6(J){let z=J instanceof Error?J.message:String(J);if(/^no issue #\d+$/.test(z))return 404;if(z==="repoRoot is required"||z==="repoRoot does not exist"||z==="repoRoot is not a git repository"||z==="missing op"||z==="create requires a non-empty title"||z==="body must be a string"||z==="setStatus requires a numeric id"||z.startsWith("invalid status:")||z==="update requires a numeric id"||z==="title must be a non-empty string"||z==="link requires a numeric id"||z==="link requires a non-empty taskId"||z==="unlink requires a numeric id"||z==="delete requires a numeric id"||z.startsWith("unknown op type:"))return 400;return 500}async function Rb(J,z){let Y=z.searchParams.get("repoRoot");if(!Y)return Response.json({error:"missing repoRoot"},{status:400});try{return Response.json(await J.request("issue.list",{repoRoot:Y}))}catch(Z){return N6(Z,C6(Z))}}async function gb(J,z){let Y;try{Y=await z.json()}catch{return Response.json({error:"invalid JSON body"},{status:400})}if(Y===null||typeof Y!=="object"||Array.isArray(Y))return Response.json({error:"body must be a JSON object"},{status:400});let Z=Y;if(typeof Z.repoRoot!=="string"||Z.repoRoot.length===0)return Response.json({error:"missing repoRoot"},{status:400});try{return Response.json(await J.request("issue.mutate",{repoRoot:Z.repoRoot,op:Z.op}))}catch(G){return N6(G,C6(G))}}async function k6(J,z,Y){if(z.pathname!=="/api/issues")return null;if(J.method==="GET")return Rb(Y,z);if(J.method==="POST")return gb(Y,J);return Response.json({error:"method not allowed"},{status:405})}function b6(J){return Nb.has(String(J??"").trim().toLowerCase())}function S6(J){try{if(!J)return null;let z=new URL(J);if(z.protocol!=="http:"&&z.protocol!=="https:")return null;return z.hostname}catch{return null}}function Cb(J){let z=S6(J);return z!==null&&b6(z)}function I6(J,z={}){if(!J)return!0;if(Cb(J))return!0;let Y=z.allowedHost?.trim();if(!Y)return!1;let Z=S6(J);return Z!==null&&Z===Y}function y6(J){let z=String(J??"").trim();return z&&!b6(z)?z:void 0}var Nb;var T6=C(()=>{Nb=new Set(["localhost","127.0.0.1","::1","[::1]"])});var kb,x6;var u6=C(()=>{kb=["daemon.status","task.list","task.get","task.create","task.archive","task.rename","task.setBranch","task.setVendor","task.delete","task.pin","task.move","task.status","task.reorder","task.ensureMain","task.ensureWorktree","task.setActive","worktree.discoverAdoptable","worktree.adopt"],x6=new Set(kb)});var cH={};q1(cH,{resolveRepoInit:()=>P6,resolveEngineLaunchInit:()=>IG});import{existsSync as w6,readFileSync as bb}from"fs";import{join as mH}from"path";function Ib(J){return w6(mH(J,E6))?`sh ${E6}`:void 0}function yb(J){let z=mH(J,Sb);if(!w6(z))return;try{let Y=bb(z,"utf8");return Y.trim().length>0?Y:void 0}catch{return}}function P6(J,z){let Y=J?Xj(J):{},Z=Ib(z)??Y.initScript,G=yb(z)??Y.initPrompt;return{initScript:Z&&Z.trim().length>0?Z:void 0,initPrompt:G&&G.trim().length>0?G:void 0}}function Tb(J,z){if(J.kind==="none")return;if(J.kind==="explicit")return{source:"explicit",text:J.prompt};let Y=z.initPrompt?.trim();return Y?{source:"repo-init",text:Y}:void 0}function IG(J,z,Y={kind:"repo-init"}){let Z=P6(J,z);return{initScript:Z.initScript,firstMessage:Tb(Y,Z)}}var E6,Sb;var yG=C(()=>{C1();E6=mH(".kobe","init.sh"),Sb=mH(".kobe","init-prompt.md")});async function xb(J,z){let{task:Y}=await J.request("task.get",{taskId:z});return Y}async function w9(J,z){let Y=await xb(J,z);if(Y.worktreePath)return{task:Y,worktreePath:Y.worktreePath};let{worktreePath:Z}=await J.request("task.ensureWorktree",{taskId:z});if(!Z)throw Error(`task ${z} has no worktree`);return{task:Y,worktreePath:Z}}async function h6(J,z){let{task:Y,worktreePath:Z}=await w9(J,z),G=I1(z);if(!await K1(G)){let X=IG(Y.repo??"",Z,{kind:"repo-init"});if(!await pX({name:G,cwd:Z,command:cJ(Y.vendor,Y.modelEffort),taskId:z,vendor:Y.vendor,launchInit:X}))throw Error(`failed to start tmux session for ${z}`)}return{session:G,worktreePath:Z}}function ub(J){return Qq(J,{bareSafe:!0})}async function v6(J,z){let{task:Y,worktreePath:Z}=await w9(J,z),G=Y.kind==="main"?void 0:z,X=Y.kind==="main"?z:void 0,Q=[...dq(cq(cJ(Y.vendor,Y.modelEffort),Y.vendor,G),Y.vendor,X)],H=IG(Y.repo??"",Z,{kind:"none"}),f=ub(Q),j=H.initScript?.trim()?`${H.initScript}
73
- ${f}`:f,V=process.env.SHELL?.trim()||"/bin/zsh";return{cwd:Z,command:[V,"-ilc",j]}}async function m6(J,z){let{worktreePath:Y}=await w9(J,z),Z=process.env.SHELL?.trim()||"/bin/zsh";return{cwd:Y,command:[Z,"-il"]}}async function c6(J){let z=I1(J);await nz(z).catch(()=>{}),await Gz(z).catch(()=>{})}var d6=C(()=>{Yz();Oj();yG();c1();zJ()});import{existsSync as Eb}from"fs";import{join as n6,normalize as $6}from"path";function wb(J){let z=null,Y=null,Z=new TextEncoder,G=new ReadableStream({start(X){z=J((H,f)=>{try{X.enqueue(Z.encode(`event: ${H}
74
- 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 Pb(J,z,Y){try{let{name:Z,payload:G}=await J.json();if(!Z)return Response.json({error:"missing rpc name"},{status:400});if(!x6.has(Z))return Response.json({error:`rpc ${Z} is not exposed to the web UI`},{status:403});let X=await z.request(Z,G),Q=G?.taskId;if(typeof Q==="string"){let H=Z==="task.archive"&&G.archived!==!1;if(Z==="task.delete"||H)Y(Q)}return Response.json({result:X})}catch(Z){let G=Z instanceof Error&&Z.name!=="Error"?Z.name:void 0;return Response.json({error:Z instanceof Error?Z.message:String(Z),...G?{name:G}:{}},{status:500})}}async function hb(){try{let z=(await GY()).map((Y)=>({id:Y,label:LZ(Y),effortLevels:i1(Y).effortLevels}));return Response.json({engines:z.length>0?z:[{id:"claude",label:"Claude"}]})}catch(J){return Response.json({error:J instanceof Error?J.message:String(J)},{status:500})}}function vb(){return Response.json({api:FZ()})}function mb(){return Response.json({projects:SJ()})}function nY(J,z=""){return typeof J==="string"?J:z}function cb(J,z){return typeof J==="boolean"?J:z}function o6(J){let z=J.customEngineIds;if(!Array.isArray(z))return[];return z.filter((Y)=>typeof Y==="string"&&r6.test(Y)&&!jJ(Y))}function db(J){return J.split(/[-_]+/).filter(Boolean).map((z)=>`${z.slice(0,1).toUpperCase()}${z.slice(1)}`).join(" ")}function nb(J,z){return nY(J[Rz(z)]).trim()||LZ(z)}function ib(J,z){return nY(J[Az(z)]).trim()||IX(z).join(" ")}function s6(){let J=LJ(),z=o6(J),Y=[...tY,...z],Z=nY(J.lastSelectedVendor,"claude"),G=nY(J.focusAccent,"primary");return Response.json({activeTheme:nY(J.activeTheme,"claude"),transparentBackground:cb(J.transparentBackground,!1),focusAccent:p6.includes(G)?G:"primary",notificationsToast:J["notifications.toast.enabled"]!==!1,notificationsSound:J["notifications.sound.enabled"]!==!1,settingsSurface:TZ(J[WY]??yZ),editorKind:bG(J[BY]??uH),editorCustomCommand:nY(J[cY]),remoteProjects:J["experimental.remoteProjects"]===!0,archivedHistoryPreview:J["experimental.archivedHistoryPreview"]===!0,autoStatus:J[UZ]===!0,dispatcher:J[DZ]===!0,defaultEngine:Z,engines:Y.map((X)=>({id:X,label:nb(J,X),command:ib(J,X),isBuiltin:jJ(X),isCustom:!jJ(X),isDefault:X===Z}))})}function GQ(J,z,Y){if(typeof Y==="string")J[z]=Y.trim()}function uZ(J,z,Y){if(typeof Y==="boolean")J[z]=Y}async function lb(J){try{let z=await J.json(),Y={};if(GQ(Y,"activeTheme",z.activeTheme),uZ(Y,"transparentBackground",z.transparentBackground),p6.includes(z.focusAccent))Y.focusAccent=z.focusAccent;if(uZ(Y,"notifications.toast.enabled",z.notificationsToast),uZ(Y,"notifications.sound.enabled",z.notificationsSound),z.settingsSurface==="chattab"||z.settingsSurface==="taskpanel")Y[WY]=z.settingsSurface;if(IZ.includes(z.editorKind))Y[BY]=z.editorKind;GQ(Y,cY,z.editorCustomCommand),uZ(Y,"experimental.remoteProjects",z.remoteProjects),uZ(Y,"experimental.archivedHistoryPreview",z.archivedHistoryPreview),uZ(Y,UZ,z.autoStatus),uZ(Y,DZ,z.dispatcher),GQ(Y,"lastSelectedVendor",z.defaultEngine);let Z=LJ(),G=o6(Z),X=new Set([...tY,...G]),Q=Array.isArray(z.engineUpdates)?z.engineUpdates:[];for(let H of Q){if(!H||typeof H!=="object")continue;let f=H;if(typeof f.id!=="string"||!X.has(f.id))continue;GQ(Y,Az(f.id),f.command),GQ(Y,Rz(f.id),f.label)}if(z.addEngine&&typeof z.addEngine==="object"){let H=z.addEngine,f=typeof H.id==="string"?H.id.trim().toLowerCase():"";if(!r6.test(f)||jJ(f)||X.has(f))return Response.json({error:"invalid or duplicate engine id"},{status:400});Y.customEngineIds=[...G,f],Y[Az(f)]=nY(H.command).trim();let j=nY(H.label).trim();Y[Rz(f)]=j&&j!==f?j:db(f)}if(typeof z.removeEngine==="string"){let H=z.removeEngine;if(!jJ(H)){if(Y.customEngineIds=G.filter((f)=>f!==H),Y[Az(H)]=void 0,Y[Rz(H)]=void 0,Z.lastSelectedVendor===H)Y.lastSelectedVendor="claude"}}if(Object.keys(Y).length>0)gY(Y);return s6()}catch(z){return Response.json({error:z instanceof Error?z.message:String(z)},{status:400})}}async function $b(J,z){try{let{taskId:Y}=await J.json();if(!Y)return Response.json({error:"missing taskId"},{status:400});return Response.json(await h6(z,Y))}catch(Y){return Response.json({error:Y instanceof Error?Y.message:String(Y)},{status:500})}}async function i6(J,z,Y){try{let Z=J.searchParams.get("taskId");if(!Z)return Response.json({error:"missing taskId"},{status:400});return Response.json(await Y(z,Z))}catch(Z){return Response.json({error:Z instanceof Error?Z.message:String(Z)},{status:500})}}function t6(){return Response.json({review:S1(dH.review)??null,pr:S1(dH.pr)??null})}async function ab(J){try{let z=await J.json();if(typeof z.review==="string")e1(dH.review,z.review);if(typeof z.pr==="string")e1(dH.pr,z.pr);return t6()}catch(z){return Response.json({error:z instanceof Error?z.message:String(z)},{status:400})}}async function _b(J,z){let Z=$6(n6(z,J==="/"?"/index.html":J));if(!Z.startsWith(z))return new Response("forbidden",{status:403});let G=Bun.file(Eb(Z)?Z:n6(z,"index.html"));if(!await G.exists())return new Response("kobe web assets not built \u2014 run `bun --filter kobe-web build`",{status:503});return new Response(G)}function pb(J){let{link:z,sseSends:Y,staticDir:Z}=J,G=J.tearDownSession??((X)=>void c6(X));return async function(Q){let H=new URL(Q.url);if(H.pathname===_6)return new Response(a6);if(!I6(Q.headers.get("origin"),{allowedHost:J.allowedHost}))return new Response("forbidden: cross-origin request rejected",{status:403});if(H.pathname==="/events")return wb((A)=>{let O=J.onSseOpen?.()??(()=>{});return A("snapshot",z.snapshot()),Y.add(A),()=>{Y.delete(A),O()}});if(H.pathname==="/api/rpc"&&Q.method==="POST")return Pb(Q,z,G);if(H.pathname==="/api/session"&&Q.method==="POST")return $b(Q,z);if(H.pathname==="/api/engine-spec"&&Q.method==="GET")return i6(H,z,v6);if(H.pathname==="/api/terminal-spec"&&Q.method==="GET")return i6(H,z,m6);if(H.pathname==="/api/engines"&&Q.method==="GET")return hb();if(H.pathname==="/api/cli-invocation"&&Q.method==="GET")return vb();if(H.pathname==="/api/projects"&&Q.method==="GET")return mb();if(H.pathname==="/api/settings"&&Q.method==="GET")return s6();if(H.pathname==="/api/settings"&&Q.method==="PATCH")return lb(Q);if(H.pathname==="/api/quick-prompts"&&Q.method==="GET")return t6();if(H.pathname==="/api/quick-prompts"&&Q.method==="PUT")return ab(Q);let f=await L6(Q,H);if(f)return f;let j=await q6(Q,H);if(j)return j;let V=await B6(Q,H);if(V)return V;let B=await k6(Q,H,z);if(B)return B;let K=await R6(Q,H);if(K)return K;let L=M6(Q,H);if(L)return L;if(Z)return _b(H.pathname,Z);return new Response("not found",{status:404})}}function EZ(J,z){let Y=J.snapshot().find((Z)=>Z.channel===z);return Y?Y.payload:null}function P9(J){return J.length>1?J.replace(/\/+$/,""):J}function rb(J,z){let Y=P9(z),Z=new Set([z]);for(let G of J){let X=P9(G.repo),Q=P9(G.worktreePath);if(X===Y||Q===Y){if(G.repo)Z.add(G.repo);if(G.worktreePath)Z.add(G.worktreePath)}}return[...Z]}function e6(J){let z=tX();return{async request(Y,Z){return await sX(z,Y,Z,J.ctx(0))},snapshot(){let Y=J.orch.listTasks().map(Vz),Z={},G=EZ(J.bus,"issue.snapshot");if(G)for(let H of rb(Y,G.repoRoot))Z[H]={...G,repoRoot:H};let X=EZ(J.bus,"task.jobs"),Q=X?.phase==="running"?{[X.taskId]:X}:{};return{tasks:Y,activeTaskId:EZ(J.bus,"active-task")?.taskId??null,engineStates:J.activity.snapshotByTask(),update:EZ(J.bus,"update")?.info??null,jobs:Q,worktreeChanges:EZ(J.bus,"worktree.changes")?.changes??{},issueSnapshots:Z,deliver:EZ(J.bus,"session.deliver"),uiPrefs:EZ(J.bus,"ui-prefs"),connected:!0}}}}async function l6(J){try{let z=Bun.spawn(["lsof","-nP",`-iTCP:${J}`,"-sTCP:LISTEN","-t"],{stdout:"pipe",stderr:"ignore"});return(await new Response(z.stdout).text()).split(`
79
- `).map((Z)=>Number.parseInt(Z.trim(),10)).filter((Z)=>Number.isFinite(Z)&&Z!==process.pid)}catch{return[]}}async function ob(J,z=_6){let Y;try{Y=(await(await fetch(`http://localhost:${J}${z}`,{signal:AbortSignal.timeout(800)})).text()).trim()}catch{return}if(Y!==a6)throw Error(`port ${J} is in use by a non-kobe service; refusing to replace it`);let Z=await l6(J);for(let X of Z)try{process.kill(X,"SIGTERM")}catch{}let G=Date.now()+2000;while(Date.now()<G){if((await l6(J)).length===0)return;await new Promise((X)=>setTimeout(X,100))}}async function J4(J){if(J.takeover!==!1)await ob(J.port);let z=new Set,Y=J.onEvent((H)=>{for(let f of z)f("channel",H)}),Z=J.hostname?.trim()||process.env.KOBE_WEB_HOST?.trim()||"127.0.0.1",G=y6(Z),X=pb({link:J.link,sseSends:z,staticDir:J.staticDir?$6(J.staticDir):void 0,allowedHost:G,onSseOpen:J.onSseOpen}),Q=Bun.serve({port:J.port,hostname:Z,idleTimeout:0,fetch:X});return{port:Q.port??J.port,hostname:Z,close(){Y(),Q.stop(!0)}}}var a6="kobe-web",_6="/__kobe_web",p6,r6,dH;var z4=C(()=>{XZ();Yz();QY();SX();mq();C1();sz();EH();_1();H6();W6();F6();O6();RH();YZ();g6();T6();u6();d6();p6=["primary","success","info"],r6=/^[a-z][a-z0-9_-]{0,47}$/;dH={review:"boardPrompt.review",pr:"boardPrompt.pr"}});var Y4={};q1(Y4,{sameWorktreeChanges:()=>$z,readWorktreeChanges:()=>tb,pickPushedChanges:()=>iH,parsePorcelain:()=>TG});import{spawnSync as sb}from"child_process";function $z(J,z){return J.added===z.added&&J.deleted===z.deleted}function iH(J,z){if(!J)return null;return J.get(z)??nH}function tb(J){if(!J)return nH;try{let z=sb("git",["status","--porcelain=v1"],{cwd:J,encoding:"utf8",stdio:["ignore","pipe","pipe"],env:iJ()});if(z.status!==0||!z.stdout)return nH;return TG(z.stdout)}catch{return nH}}function TG(J){let z=0,Y=0;for(let{x:Z,y:G}of wH(J))if(Z==="D"||G==="D")Y+=1;else z+=1;return{added:z,deleted:Y}}var nH;var xG=C(()=>{dY();PH();nH={added:0,deleted:0}});async function YS(J,z){let Y=await qY("git",["status","--porcelain=v1"],{cwd:J,env:iJ(),signal:z});if(Y.status!==0)throw Error("git status failed");return TG(Y.stdout)}function ZS(J){let z=new Set;for(let Y of J){if(Y.archived)continue;if(!Y.worktreePath)continue;if(r1(Y.repo)||r1(Y.worktreePath))continue;z.add(Y.worktreePath)}return z}class Z4{orch;bus;options;entries=new Map;stopped=!1;constructor(J,z,Y={}){this.orch=J;this.bus=z;this.options=Y}tick(){if(this.stopped)return;if(this.options.hasSubscribers&&!this.options.hasSubscribers())return;try{let J=ZS(this.orch.listTasks()),z=!1;for(let Y of this.entries.keys()){if(J.has(Y))continue;if(this.entries.get(Y)?.value)z=!0;this.entries.delete(Y)}if(z)this.publish();for(let Y of J)this.maybeCollect(Y)}catch(J){u1("worktree-changes",J)}}stop(){this.stopped=!0}maybeCollect(J){let z=this.entries.get(J);if(!z)z={inFlight:!1,nextAllowedAt:0},this.entries.set(J,z);let Y=this.options.cadence??{timeoutMs:eb,slowRetryMs:JS,minIntervalMs:zS},Z=this.options.run??YS;ZG(z,Y,(G)=>Z(J,G),(G)=>{if(this.stopped)return;if(this.entries.get(J)!==z)return;if(z.value&&$z(z.value,G))return;z.value=G,this.publish()})}publish(){let J={};for(let[z,Y]of this.entries)if(Y.value)J[z]=Y.value;this.bus.publish("worktree.changes",{changes:J})}}function G4(J,z,Y=h9,Z){if(Y<=0)return()=>{};let G=new Z4(J,z,{hasSubscribers:Z});G.tick();let X=setInterval(()=>G.tick(),Y);return X.unref?.(),()=>{clearInterval(X),G.stop()}}var h9=2000,eb=4000,JS=60000,zS=1500;var X4=C(()=>{dY();GG();C1();xG()});import{mkdir as Q4,readFile as GS,unlink as v9,writeFile as XS}from"fs/promises";import{createServer as QS}from"net";import{dirname as q4}from"path";import{StringDecoder as qS}from"string_decoder";function fS(){let J=process.env.KOBE_DAEMON_IDLE_GRACE_MS;if(J===void 0)return H4;let z=Number(J);return Number.isFinite(z)&&z>=0?z:H4}async function j4(J,z={}){let Y=z.socketPath??Ez(z.homeDir),Z=z.pidPath??YY(z.homeDir),G=z.startedAt??new Date,X=new Set,Q=new Set,H=1,f=new b9({clients:function*(){yield*X,yield*Q},idleGraceMs:fS(),onIdleStop:()=>void q0().catch((c)=>u1("daemon-idle-shutdown",c))}),j=new z9;j.onPublish((c)=>{f4(X,{type:"event",name:c.channel,payload:c.payload})});let B=new aj(j,void 0,void 0,async(c)=>{let N=J.getTask(c);if(!N?.worktreePath)return;return tZ(N.vendor??o1,N.worktreePath)}),K=new CH(NH(z.homeDir));await Q4(q4(Y),{recursive:!0}),await Q4(q4(Z),{recursive:!0}),await v9(Y).catch(()=>{});let L=QS((c)=>{let N={id:H++,connectedAt:new Date,socket:c,writer:new J9(c),buffer:"",subscribed:!1,holdsLifetime:!1,channels:null};X.add(N);let t=new qS("utf8");c.on("data",(x)=>{N.buffer+=t.write(x),r(N)}),c.on("error",()=>{}),c.on("close",()=>{if(X.delete(N),N.subscribed)iz("conn",`client #${N.id} (${N.holdsLifetime?"gui":"pane"}) disconnected \u2014 ${X.size} client(s), ${f.guiCount()} gui left`);f.clientDisconnected(N.holdsLifetime)})}),A=J.subscribeTasks((c)=>{j.publish("task.snapshot",{tasks:c.map(Vz)})}),O=z.checkUpdate??XX,R=z.updatePollMs??HS,u=()=>{O().then((c)=>j.publish("update",{info:c})).catch((c)=>u1("update-poller",c))},P=null;if(R>0)u(),P=setInterval(u,R),P.unref?.();let S=z.autoTitlePollMs??eB,g=J5(J,S,()=>f.hasSubscribers()),M=o5(j,{statePath:y9(z.homeDir),debounceMs:z.uiPrefsDebounceMs??I9}),T=d5(j,{path:k9(z.homeDir),debounceMs:z.keybindingsDebounceMs??C9}),d=G4(J,j,z.worktreeChangesTickMs??h9,()=>f.hasSubscribers()),i=_5(J,j,z.transcriptActivityTickMs??S9,()=>f.hasSubscribers()),J0=l5(J,z.prStatusPollMs??zQ,()=>f.hasSubscribers()),E=null,z0={socketPath:Y,pidPath:Z,startedAt:G,get webPort(){return E?.port},clients:X,async close(){if(f.markStopping(),A(),E?.close(),E=null,P)clearInterval(P);g(),J0(),M(),T(),d(),i(),B.close(),f4(X,{type:"event",name:"daemon.stopping",payload:{}});for(let c of Array.from(X))c.socket.destroy();await new Promise((c)=>L.close(()=>c())),await v9(Y).catch(()=>{}),await v9(Z).catch(()=>{})}};await new Promise((c,N)=>{let t=L;t.once("error",N),L.listen(Y,()=>{t.removeListener("error",N),c()})}),await XS(Z,`${process.pid}
80
- `,"utf8");async function q0(){if(f.isStopping())return;f.markStopping(),await z.onStop?.(),setTimeout(()=>{z0.close().catch((c)=>u1("daemon-shutdown",c))},0).unref()}let o=tX();function B0(c){return{orch:J,bus:j,activity:B,issues:K,daemon:{startedAt:G,socketPath:Y,webPort:E?.port,pid:process.pid,guiCount:()=>f.guiCount(),stopSoon:q0},clientId:c}}if(z.webPort!==void 0){let c=e6({orch:J,bus:j,activity:B,ctx:B0});E=await J4({port:z.webPort,hostname:z.webHost,staticDir:z.webStaticDir,link:c,onEvent:(N)=>j.onPublish(N),onSseOpen:()=>{let N={subscribed:!0,holdsLifetime:!0};return Q.add(N),f.guiAttached(),iz("conn",`web client subscribed \u2014 ${X.size+Q.size} client(s), ${f.guiCount()} gui`),()=>{Q.delete(N),iz("conn",`web client disconnected \u2014 ${X.size+Q.size} client(s), ${f.guiCount()} gui left`),f.clientDisconnected(!0)}}}),iz("web",`daemon web transport listening on http://${E.hostname}:${E.port}`)}async function g0(c,N){if(c.name==="subscribe"){let t=Q9(c.payload),x=N.subscribed;N.subscribed=!0;let n=t.role==="gui"?"gui":"pane";N.holdsLifetime=n==="gui",N.channels=gV(t.channels);let Q0=!x;if(N.holdsLifetime)f.guiAttached();iz("conn",`client #${N.id} subscribed as ${n}${N.channels?` [${[...N.channels].join(",")}]`:""} \u2014 ${X.size} client(s), ${f.guiCount()} gui${Q0?" (collectors resume)":""}`);for(let H0 of j.snapshot()){if(N.channels&&!N.channels.has(H0.channel))continue;XQ(N,{type:"event",name:H0.channel,payload:H0.payload})}if(!N.channels||N.channels.has("engine-state"))for(let H0 of B.currentNonIdle())XQ(N,{type:"event",name:"engine-state",payload:H0});return{}}return sX(o,c.name,c.payload,B0(N.id))}async function m(c,N){try{let t=await g0(c,N);XQ(N,{type:"response",id:c.id,name:c.name,payload:t})}catch(t){XQ(N,{type:"response",id:c.id,name:c.name,error:X9(t)})}}function r(c){let N=c.buffer.indexOf(`
81
- `);while(N!==-1){let t=c.buffer.slice(0,N);if(c.buffer=c.buffer.slice(N+1),t.trim().length>0)try{let x=JSON.parse(t);if(x.type!=="request")throw Error("daemon only accepts request frames from clients");m(x,c)}catch(x){XQ(c,{type:"response",id:"parse-error",error:{message:x instanceof Error?x.message:String(x)}})}N=c.buffer.indexOf(`
82
- `)}}return z0}async function uG(J){try{let z=await GS(J,"utf8"),Y=Number(z.trim());return Number.isFinite(Y)?Y:null}catch{return null}}function B4(J){if(J.type==="event")return J.name==="daemon.stopping";return!0}function XQ(J,z){J.writer.write(qX(z),B4(z))}function f4(J,z){let Y=z.type==="event"&&z.name!=="daemon.stopping"?z.name:null,Z=B4(z),G=null;for(let X of J){if(!X.subscribed&&z.type==="event")continue;if(Y&&X.channels&&!X.channels.has(Y))continue;G??=qX(z),X.writer.write(G,Z)}}var HS=21600000,H4=3000;var lH=C(()=>{Mq();zz();NJ();n7();z5();RH();V9();n5();i5();$Z();$5();YZ();p5();s5();z4();X4();RH();V9()});import{unlink as W4}from"fs/promises";function jS(J){try{return process.kill(J,0),!0}catch(z){return z.code==="EPERM"}}async function EG(J,z){let Y=await uG(z),Z=Y!==null&&Y!==process.pid?Y:null,G=Z!==null&&jS(Z),X=G?"graceful":"absent",Q=new tJ(J),H=Q.request("daemon.stop").catch(()=>{return}),f=new Promise((j)=>setTimeout(j,2000));if(await Promise.race([H,f]),Q.close(),G&&Z!==null){let j=Date.now()+5000,V=!1;while(Date.now()<j){try{process.kill(Z,0)}catch{break}if(!V&&Date.now()-(j-5000)>2000){try{process.kill(Z,"SIGTERM")}catch{}X="sigterm",V=!0}await new Promise((B)=>setTimeout(B,50))}try{process.kill(Z,0),process.kill(Z,"SIGKILL"),X="sigkill",await new Promise((B)=>setTimeout(B,100))}catch{}}return await W4(J).catch(()=>{}),await W4(z).catch(()=>{}),{pid:Y,method:X}}var $H=C(()=>{HX();lH()});var FH={};q1(FH,{testDaemonResponds:()=>aH,ensureDaemonReachable:()=>wG,connectOrStartDaemon:()=>Sz,connectIfRunning:()=>Qz});import{spawn as BS}from"child_process";import{closeSync as WS,existsSync as VS,mkdirSync as KS,openSync as US}from"fs";import{dirname as V4,resolve as m9}from"path";import{fileURLToPath as DS}from"url";function MS(J,z,Y,Z){let G="ignore",X;try{KS(V4(Z),{recursive:!0}),X=US(Z,"a"),G=["ignore",X,X]}catch{G="ignore"}if(BS(J,[...z],{detached:!0,stdio:G,env:Y}).unref(),X!==void 0)try{WS(X)}catch{}}async function wG(){let J=Ez();if(await aH(J))return J;await EG(J,YY()).catch(()=>{});let[z,...Y]=OS(LS);MS(z,Y,process.env,rQ());let Z=Date.now()+5000;while(Date.now()<Z){if(await aH(J))return J;await new Promise((G)=>setTimeout(G,100))}throw Error(`kobe: daemon did not start (or stayed wedged) at ${J}`)}async function Sz(){let J=await wG(),z=new tJ(J);return await z.connect(),z}async function Qz(){let J=Ez();if(!await aH(J))return null;let z=new tJ(J);return await z.connect(),z}async function aH(J,z=FS){let Y=new tJ(J);try{await Y.connect()}catch{return Y.close(),!1}let Z=Y.request("hello",{protocolVersion:sJ}).then(()=>!0).catch(()=>!0),G,X=new Promise((H)=>{G=setTimeout(()=>H(!1),z)}),Q=await Promise.race([Z,X]);if(G)clearTimeout(G);return Y.close(),Q}function OS(J){let z=DS(import.meta.url);if(z.startsWith("/$bunfs")||z.startsWith("B:\\~BUN"))return[process.execPath,...J];let Y=V4(z),Z=[m9(Y,"../cli/index.ts"),m9(Y,"../../../kobe/src/cli/index.ts"),m9(Y,"../cli/index.js")],G=Z.find((X)=>VS(X));if(G)return[process.execPath,G,...J];throw Error(`kobe: could not locate kobe entry near ${Y}; checked ${Z.join(", ")}`)}var LS,FS=3000;var CJ=C(()=>{$H();$Z();YZ();HX();LS=["daemon","start"]});import{mkdir as AS,readFile as K4,unlink as D4,writeFile as U4}from"fs/promises";import{dirname as RS}from"path";function gS(J){if(!Number.isInteger(J)||J<=0)return!1;try{return process.kill(J,0),!0}catch(z){if(z.code==="ESRCH")return!1;return!0}}async function c9(J,z={}){await AS(RS(J),{recursive:!0});try{await U4(J,String(process.pid),{flag:"wx"});return}catch(G){if(G.code!=="EEXIST")throw G}let Y=-1;try{let G=(await K4(J,"utf8")).trim();if(Y=Number.parseInt(G,10),!Number.isFinite(Y))Y=-1}catch{return c9(J,z)}let Z=Y>0&&gS(Y);if(Z&&!z.forceTakeover)throw new QQ(`task index is locked by another kobe instance (pid ${Y})`,Y);console.warn(`[kobe] removing stale lockfile at ${J} (was held by pid ${Y}${Z?", forced":", process gone"})`);try{await D4(J)}catch(G){if(G.code!=="ENOENT")throw G}try{await U4(J,String(process.pid),{flag:"wx"})}catch(G){if(G.code==="EEXIST"){let X=-1;try{X=Number.parseInt((await K4(J,"utf8")).trim(),10)}catch{X=-1}throw new QQ(`task index lockfile contended during takeover (winner pid ${X})`,X)}throw G}}async function L4(J){try{await D4(J)}catch(z){if(z.code==="ENOENT")return;throw z}}var QQ;var F4=C(()=>{QQ=class QQ extends Error{heldByPid;constructor(J,z){super(J);this.name="LockfileError",this.heldByPid=z}}});function NS(J,z){let Y="",Z=J;for(let G=z-1;G>=0;G--){let X=Z%32;Y="0123456789ABCDEFGHJKMNPQRSTVWXYZ"[X]+Y,Z=(Z-X)/32}return Y}function A4(J){let z=new Uint8Array(J);crypto.getRandomValues(z);let Y=Array(J);for(let Z=0;Z<J;Z++)Y[Z]=(z[Z]??0)&31;return Y}function CS(J){for(let z=J.length-1;z>=0;z--){let Y=J[z]??0;if(Y<31)return J[z]=Y+1,!0;J[z]=0}return!1}function kS(J){let z="";for(let Y of J)z+="0123456789ABCDEFGHJKMNPQRSTVWXYZ"[Y]??"0";return z}function R4(J=Date.now()){let z;if(J===M4){let Y=O4.slice();if(!CS(Y))z=A4(16);else z=Y}else z=A4(16);return M4=J,O4=z,NS(J,10)+kS(z)}var M4=-1,O4;var g4=C(()=>{O4=Array(16).fill(0)});var d9={};q1(d9,{TaskIndexStore:()=>PG});import{mkdir as bS,open as SS,readFile as N4,rename as IS,unlink as C4}from"fs/promises";import{homedir as yS}from"os";import{dirname as TS,join as k4}from"path";async function wS(J){let z=Date.now()+ES;for(;;)try{await c9(J);return}catch(Y){if(!(Y instanceof QQ)||Date.now()>=z)throw Y;await xS(uS)}}class PG{homeDir;kobeDir;path;tmpPath;lockPath;cache={version:VY,tasks:[]};loaded=!1;listeners=new Set;saveChain=Promise.resolve();dirtyIds=new Set;removedIds=new Set;constructor(J={}){this.homeDir=J.homeDir??yS(),this.kobeDir=k4(this.homeDir,".kobe"),this.path=k4(this.kobeDir,"tasks.json"),this.tmpPath=`${this.path}.tmp`,this.lockPath=`${this.path}.lock`}subscribe(J){if(this.listeners.add(J),this.loaded)try{J(this.cache.tasks.slice())}catch(z){console.error("[kobe TaskIndexStore] listener threw on subscribe:",z)}return()=>{this.listeners.delete(J)}}get filePath(){return this.path}get stateDir(){return this.kobeDir}async load(){this.dirtyIds.clear(),this.removedIds.clear();let J;try{J=await N4(this.path,"utf8")}catch(Y){if(Y.code==="ENOENT")return this.cache={version:VY,tasks:[]},this.loaded=!0,this.notifyListeners(),this.snapshot();throw Y}let z;try{z=JSON.parse(J)}catch(Y){return console.warn(`[kobe] tasks.json at ${this.path} is corrupted (${Y.message}); recovering with empty index. The stale file is left in place.`),this.cache={version:VY,tasks:[]},this.loaded=!0,this.notifyListeners(),this.snapshot()}return this.cache=b4(z,this.path),this.loaded=!0,this.notifyListeners(),this.snapshot()}async save(){this.assertLoaded();let J=this.saveChain.then(()=>this.doSave());return this.saveChain=J.catch(()=>{}),J}async doSave(){await bS(TS(this.path),{recursive:!0});let J=new Set(this.dirtyIds),z=new Set(this.removedIds);await wS(this.lockPath);try{let Y=await this.readDiskTasks(),Z=this.mergeWithDisk(Y,J,z),X=`${JSON.stringify({version:VY,tasks:Z},null,2)}
83
- `,Q=await SS(this.tmpPath,"w",420);try{await Q.writeFile(X,"utf8"),await Q.sync()}finally{await Q.close()}await IS(this.tmpPath,this.path);for(let f of J)this.dirtyIds.delete(f);for(let f of z)this.removedIds.delete(f);let H=new Set(this.cache.tasks.map((f)=>f.id));for(let f of Z)if(!H.has(f.id))this.cache.tasks.push(f)}finally{await L4(this.lockPath)}}async readDiskTasks(){let J;try{J=await N4(this.path,"utf8")}catch(Y){if(Y.code==="ENOENT")return[];throw Y}let z;try{z=JSON.parse(J)}catch{return[]}return b4(z,this.path).tasks}mergeWithDisk(J,z,Y){let Z=new Map(J.map((Q)=>[Q.id,Q])),G=[],X=new Set;for(let Q of this.cache.tasks){if(z.has(Q.id))G.push(Q);else{let H=Z.get(Q.id);if(H===void 0)continue;G.push(H)}X.add(Q.id)}for(let Q of J){if(X.has(Q.id)||Y.has(Q.id))continue;G.push(Q),X.add(Q.id)}return G}get(J){return this.assertLoaded(),this.cache.tasks.find((z)=>z.id===J)}list(){return this.assertLoaded(),this.cache.tasks.slice()}async create(J){this.assertLoaded();let z=new Date().toISOString(),Y={archived:!1,vendor:J.vendor??o1,...J,id:FX(R4()),createdAt:z,updatedAt:z};return this.cache.tasks.push(Y),this.dirtyIds.add(Y.id),await this.save(),this.notifyListeners(),Y}async update(J,z){this.assertLoaded();let Y=this.cache.tasks.findIndex((f)=>f.id===J);if(Y<0)throw Error(`task not found: ${J}`);let Z=this.cache.tasks[Y];if(!Z)throw Error(`task not found: ${J}`);let{id:G,createdAt:X,...Q}=z,H={...Z,...Q,id:Z.id,createdAt:Z.createdAt,updatedAt:new Date().toISOString()};return this.cache.tasks[Y]=H,this.dirtyIds.add(String(J)),await this.save(),this.notifyListeners(),H}async move(J,z,Y){this.assertLoaded();let Z=this.cache.tasks.find((L)=>L.id===J);if(!Z)throw Error(`task not found: ${J}`);let G=Y?.length?Y:this.cache.tasks.map((L)=>L.id),X=G.indexOf(String(J));if(X<0)throw Error(`task not movable in current group: ${J}`);let Q=G[X+z];if(!Q)return Z;let H=this.cache.tasks.findIndex((L)=>L.id===J),f=this.cache.tasks.findIndex((L)=>L.id===Q);if(H<0||f<0||H===f)return Z;let[j]=this.cache.tasks.splice(H,1);if(!j)return Z;let V=H<f?f-1:f,B=z>0?V+1:V,K={...j,updatedAt:new Date().toISOString()};return this.cache.tasks.splice(B,0,K),this.dirtyIds.add(String(J)),await this.save(),this.notifyListeners(),K}async reorder(J){this.assertLoaded();let z=J.map((X)=>{let Q=this.cache.tasks.findIndex((f)=>f.id===X.id);if(!(Q>=0?this.cache.tasks[Q]:void 0))throw Error(`task not found: ${X.id}`);return{idx:Q,position:X.position}}),Y=!1,Z=new Map,G=[];for(let{idx:X,position:Q}of z){let H=this.cache.tasks[X];if(!H||H.position===Q)continue;if(!Z.has(X))Z.set(X,H);if(this.cache.tasks[X]={...H,position:Q},!this.dirtyIds.has(H.id))this.dirtyIds.add(H.id),G.push(H.id);Y=!0}if(!Y)return;try{await this.save()}catch(X){for(let[Q,H]of Z)this.cache.tasks[Q]=H;for(let Q of G)this.dirtyIds.delete(Q);throw X}this.notifyListeners()}async archive(J,z="done"){return this.update(J,{status:z})}async remove(J){this.assertLoaded();let z=this.cache.tasks.findIndex((Y)=>Y.id===J);if(z<0)return;this.cache.tasks.splice(z,1),this.dirtyIds.delete(String(J)),this.removedIds.add(String(J)),await this.save(),this.notifyListeners()}async _unlinkForTests(){try{await C4(this.path)}catch(J){if(J.code!=="ENOENT")throw J}try{await C4(this.tmpPath)}catch(J){if(J.code!=="ENOENT")throw J}this.cache={version:VY,tasks:[]},this.loaded=!1,this.dirtyIds.clear(),this.removedIds.clear()}assertLoaded(){if(!this.loaded)throw Error("TaskIndexStore: call load() before any other method")}snapshot(){return{version:VY,tasks:this.cache.tasks.slice()}}notifyListeners(){if(this.listeners.size===0)return;let J=this.cache.tasks.slice();for(let z of this.listeners)try{z(J)}catch(Y){console.error("[kobe TaskIndexStore] listener threw on notify:",Y)}}}function b4(J,z){if(!J||typeof J!=="object"||Array.isArray(J))return console.warn(`[kobe] tasks.json at ${z} is not an object; recovering with empty index.`),{version:VY,tasks:[]};let Y=J,Z=Y.version;if(Z!==void 0&&Z!==1&&Z!==2&&Z!==3)return console.warn(`[kobe] tasks.json at ${z} has unsupported version=${String(Z)}; recovering with empty index.`),{version:VY,tasks:[]};let G=Array.isArray(Y.tasks)?Y.tasks:[],X=[];for(let Q of G){let H=PS(Q);if(H)X.push(H);else console.warn(`[kobe] dropping malformed task entry from ${z}: ${JSON.stringify(Q)}`)}return{version:VY,tasks:X}}function PS(J){if(!J||typeof J!=="object")return null;let z=J;if(typeof z.id!=="string"||typeof z.title!=="string"||typeof z.repo!=="string"||typeof z.branch!=="string"||typeof z.worktreePath!=="string"||typeof z.status!=="string"||typeof z.createdAt!=="string"||typeof z.updatedAt!=="string")return null;if(!dS(z.status))return null;let Y=typeof z.archived==="boolean"?z.archived:!1,Z=z.kind==="main"?"main":"task",G=Z==="main"?z.status==="in_progress"||z.status==="done"?"backlog":z.status:z.status==="done"&&!Y?"in_progress":z.status;return{id:FX(z.id),title:z.title,repo:z.repo,branch:z.branch,worktreePath:z.worktreePath,status:G,archived:Y,pinned:typeof z.pinned==="boolean"?z.pinned:!1,kind:Z,vendor:RY(typeof z.vendor==="string"?z.vendor:void 0),prStatus:hS(z.prStatus),...typeof z.position==="number"&&Number.isFinite(z.position)?{position:z.position}:{},...typeof z.modelEffort==="string"&&z.modelEffort.length>0?{modelEffort:z.modelEffort}:{},createdAt:z.createdAt,updatedAt:z.updatedAt}}function hS(J){if(!J||typeof J!=="object"||Array.isArray(J))return;let z=J;if(!vS(z.provider)||!mS(z.lifecycle)||!cS(z.checkState))return;return{provider:z.provider,lifecycle:z.lifecycle,checkState:z.checkState,...typeof z.number==="number"&&Number.isFinite(z.number)?{number:z.number}:{},...typeof z.url==="string"?{url:z.url}:{},...typeof z.title==="string"?{title:z.title}:{},...typeof z.baseRef==="string"?{baseRef:z.baseRef}:{},...typeof z.headRef==="string"?{headRef:z.headRef}:{},...typeof z.reviewDecision==="string"?{reviewDecision:z.reviewDecision}:{},...typeof z.mergeable==="string"?{mergeable:z.mergeable}:{},...typeof z.lastCheckedAt==="string"?{lastCheckedAt:z.lastCheckedAt}:{},...typeof z.lastError==="string"?{lastError:z.lastError}:{}}}function vS(J){return J==="github"||J==="gitlab"||J==="bitbucket"||J==="unknown"}function mS(J){return J==="creating"||J==="open"||J==="ready_to_merge"||J==="merged"||J==="closed"||J==="unknown"}function cS(J){return J==="none"||J==="pending"||J==="passing"||J==="failing"||J==="unknown"}function dS(J){return J==="backlog"||J==="in_progress"||J==="in_review"||J==="done"||J==="canceled"||J==="error"}var xS=(J)=>new Promise((z)=>setTimeout(z,J)),uS=25,ES=5000,VY=3;var qQ=C(()=>{zz();_1();F4();g4()});var _H;var S4=C(()=>{_H=class _H extends Error{args;cwd;exitCode;stdout;stderr;constructor(J,z,Y){super(`git ${J.join(" ")} (cwd=${z}) exited with code ${Y.exitCode}: ${Y.stderr.trim()||Y.stdout.trim()}`);this.name="GitCommandError",this.args=J,this.cwd=z,this.exitCode=Y.exitCode,this.stdout=Y.stdout,this.stderr=Y.stderr}}});var T4={};q1(T4,{GitWorktreeManager:()=>pH});import y4 from"fs";import Iz from"path";class pH{execDeps;constructor(J=nS){this.execDeps=J}ctxFor(J){let z=this.execDeps.remoteBasePath(J);return z?{exec:this.execDeps.execForRepo(J),dir:z,remote:!0}:{exec:this.execDeps.execForRepo(J),dir:J,remote:!1}}async runGit(J,z,Y){if(!Y.cwd)throw Error("runGit(): cwd is required; refusing to inherit from process.cwd()");let Z=await J.run(["git",...z],{cwd:Y.cwd,env:Y.env}),G={stdout:Z.stdout,stderr:Z.stderr,exitCode:Z.exitCode};if(G.exitCode!==0&&!Y.allowFail)throw new _H(z,Y.cwd,G);return G}async create(J,z,Y,Z){let G=this.ctxFor(J);if(iY("repo",G.dir),iY("path",Y),!z)throw Error("create(): branch must be a non-empty string");if(await G.exec.exists(Y)){let f=await this.tryDescribe(G,Y);if(f){if(f.branch!==z)throw Error(`worktree at ${Y} is on branch '${f.branch}', refusing to hijack to '${z}'`);return f}throw Error(`create(): ${Y} exists but is not a registered git worktree`)}await G.exec.mkdirp(Iz.dirname(Y));let Q=await this.branchExists(G,z)?["worktree","add",Y,z]:Z?["worktree","add","-b",z,Y,Z]:["worktree","add","-b",z,Y];await this.runGit(G.exec,Q,{cwd:G.dir});let H=await this.tryDescribe(G,Y);if(!H)throw Error(`create(): git reported success but ${Y} is not a worktree`);if(H.branch!==z)throw Error(`create(): post-condition failed \u2014 expected branch '${z}' at ${Y}, got '${H.branch}'`);return H}async createForTask(J){let z=this.execDeps.remoteBasePath(J.repo),Y=z?kK(z,J.slug):RK(J.repo,J.slug);return this.create(J.repo,J.branch,Y,J.baseRef)}async remove(J,z){iY("path",J);let Y=this.execDeps.execForPath(J),Z=z?.force===!0;if(!await Y.exists(J)){let Q=await this.findRepoFor(Y,J);if(Q)await this.runGit(Y,["worktree","prune"],{cwd:Q,allowFail:!0});return}let G=await this.findRepoFor(Y,J);if(!G)throw Error(`remove(): ${J} is not a git worktree`);if(!Z){if(await this.isDirty(J))throw Error(`remove(): refusing to remove dirty worktree at ${J} (pass { force: true } to override)`)}let X=Z?["worktree","remove","--force",J]:["worktree","remove",J];await this.runGit(Y,X,{cwd:G}),await this.runGit(Y,["worktree","prune"],{cwd:G,allowFail:!0})}async list(J){let z=this.ctxFor(J);iY("repo",z.dir);let Y=await this.runGit(z.exec,["worktree","list","--porcelain"],{cwd:z.dir}),Z=n9(Y.stdout),G=[];for(let X of Z){if(!X.path)continue;let Q=z.remote?I4(z.dir,X.path):BB(J,X.path);if(!Q)continue;if(!X.branch||X.detached)continue;let H=HQ(Q),f=HQ(X.path),j=Iz.relative(H,f),V=Iz.join(Q,j),B=await this.isDirty(X.path);G.push({path:V,branch:X.branch,head:X.head??"",dirty:B})}return G}async listAll(J){let z=this.ctxFor(J);iY("repo",z.dir);let Y=await this.runGit(z.exec,["worktree","list","--porcelain"],{cwd:z.dir}),Z=n9(Y.stdout),G=z.remote?z.dir:HQ(z.dir),X=[];for(let Q of Z){if(!Q.path)continue;if(Q.bare)continue;if(!Q.branch||Q.detached)continue;if((z.remote?Q.path:HQ(Q.path))===G)continue;let H=await this.isDirty(Q.path);X.push({path:Q.path,branch:Q.branch,head:Q.head??"",dirty:H,kobeManaged:z.remote?I4(z.dir,Q.path)!==null:NK(J,Q.path),lastActivityMs:await this.lastActivityMs(z.exec,Q.path)})}return X.sort((Q,H)=>H.lastActivityMs-Q.lastActivityMs),X}async lastActivityMs(J,z){try{let Y=await this.runGit(J,["log","-1","--format=%ct"],{cwd:z}),Z=Number.parseInt(Y.stdout.trim(),10);if(Number.isFinite(Z)&&Z>0)return Z*1000}catch{}if(!J.isRemote)try{return y4.statSync(z).mtimeMs}catch{}return 0}async isDirty(J){iY("path",J);let z=this.execDeps.execForPath(J);return(await this.runGit(z,["status","--porcelain"],{cwd:J})).stdout.length>0}async currentBranch(J){iY("path",J);let z=this.execDeps.execForPath(J),Z=(await this.runGit(z,["rev-parse","--abbrev-ref","HEAD"],{cwd:J})).stdout.trim();if(!Z||Z==="HEAD")throw Error(`currentBranch(): ${J} is in detached-HEAD state`);return Z}async renameBranch(J,z,Y){if(iY("path",J),z===Y)return;let Z=this.execDeps.execForPath(J),G=await this.findRepoFor(Z,J);if(!G)throw Error(`renameBranch(): ${J} is not a git worktree`);await this.runGit(Z,["branch","-m",z,Y],{cwd:G})}async tryDescribe(J,z){let Y=await this.runGit(J.exec,["worktree","list","--porcelain"],{cwd:J.dir}),Z=n9(Y.stdout),G=(H)=>J.remote?H:HQ(H),X=G(z),Q=Z.find((H)=>H.path&&G(H.path)===X);if(!Q||!Q.path||!Q.branch||Q.detached)return null;return{path:z,branch:Q.branch,head:Q.head??"",dirty:await this.isDirty(Q.path)}}async branchExists(J,z){let Y=`refs/heads/${z}`;return(await this.runGit(J.exec,["show-ref","--verify","--quiet",Y],{cwd:J.dir,allowFail:!0})).exitCode===0}async findRepoFor(J,z){try{let Y=await this.runGit(J,["rev-parse","--git-common-dir"],{cwd:z,allowFail:!0});if(Y.exitCode!==0)return null;let Z=Y.stdout.trim();if(!Z)return null;let G=Iz.isAbsolute(Z)?Z:Iz.resolve(z,Z);return Iz.basename(G)===".git"?Iz.dirname(G):G}catch(Y){if(Y instanceof _H)return null;throw Y}}}function n9(J){let z=[],Y=null;for(let Z of J.split(`
84
- `)){let G=Z.replace(/\r$/,"");if(G===""){if(Y)z.push(Y);Y=null;continue}if(!Y)Y={};if(G.startsWith("worktree "))Y.path=G.slice(9);else if(G.startsWith("HEAD "))Y.head=G.slice(5);else if(G.startsWith("branch ")){let X=G.slice(7);Y.branch=X.startsWith("refs/heads/")?X.slice(11):X}else if(G==="detached")Y.detached=!0;else if(G==="bare")Y.bare=!0}if(Y)z.push(Y);return z}function I4(J,z){let Y=`${J.replace(/\/+$/,"")}/.kobe/worktrees`;return z===Y||z.startsWith(`${Y}/`)?Y:null}function iY(J,z){if(!z||!Iz.isAbsolute(z))throw Error(`${J} must be an absolute path, got: ${JSON.stringify(z)}`)}function HQ(J){try{return y4.realpathSync(J)}catch{return Iz.resolve(J)}}var nS;var i9=C(()=>{Oz();C1();S4();WB();nS={execForRepo:XG,execForPath:HY,remoteBasePath(J){return JY(J)?.basePath??null}}});var rH;var x4=C(()=>{rH=["web","completions","add","remove","adopt","export","repo","api","daemon","theme","skill","feedback","update","doctor","reset","reload","kill-sessions"]});var E4={};q1(E4,{runCompletionsSubcommand:()=>aS});function iS(){return`# kobe bash completions
28
+ `)&&J.endsWith("</INSTRUCTIONS>")}var I7=()=>{};function S7(J,z={}){let Z=P9(J.input_tokens,0),Y=P9(J.cached_input_tokens,0),X=P9(J.output_tokens,0),G=Math.max(0,Z-Y);if(Z<=0&&X<=0&&Y<=0)return;return{input_tokens:G,output_tokens:X,...Y>0?{cache_read_input_tokens:Y}:{},..._R(z.contextWindowTokens)?{context_window_tokens:z.contextWindowTokens}:{}}}function P9(J,z){return typeof J==="number"&&Number.isFinite(J)?J:z}function _R(J){return typeof J==="number"&&Number.isFinite(J)&&J>0}import{readdir as pR,stat as rR,unlink as eh}from"fs/promises";import{homedir as oR}from"os";import jY from"path";async function c9(J=BY){let z=J.sessionsDir(),Z=(await J.readdir(z)).sort().reverse(),Y=[];for(let X of Z){let G=jY.join(z,X),q=(await J.readdir(G)).sort().reverse();for(let H of q){let j=jY.join(G,H),B=(await J.readdir(j)).sort().reverse();for(let V of B){let f=jY.join(j,V),U=(await J.readdir(f)).filter((L)=>L.startsWith("rollout-")&&L.endsWith(".jsonl"));U.sort().reverse();for(let L of U)if(Y.push(jY.join(f,L)),Y.length>=y7){if(!T7)T7=!0,console.warn(`[codex history] rollout scan truncated at ${y7} files; older sessions may be omitted`);return Y}}}}return Y}async function sR(J,z=BY){if(!J)return;let Z=J.toLowerCase(),Y=await c9(z);for(let X of Y)if(jY.basename(X).match(w7)?.[1]?.toLowerCase()===Z)return X;return}function tR(J){for(let z of J.split(`
29
+ `)){let Z=z.trim();if(!Z)continue;if(!SZ(Z))return"";try{let Y=JSON.parse(Z);if(Y.type==="session_meta")return Y.payload?.cwd??""}catch{}return""}return""}async function P7(J,z){let Z=x7.get(z);if(!Z)Z=new Map,x7.set(z,Z);let Y=Z.get(J);if(Y!==void 0)return Y;let X;try{X=await z.readFile(J)}catch{return null}let G=tR(X);if(G)Z.set(J,G);return G}async function h7(J,z=BY){if(!J)return[];let Z=await c9(z),Y=[],X=0;for(let G of Z){if(X>=eR)break;if(X++,await P7(G,z)!==J)continue;let q=jY.basename(G).match(w7)?.[1];if(q)Y.push(q)}return Y.reverse()}async function d9(J,z=BY){if(!J)return null;let Z=await c9(z),Y=0;for(let X of Z){if(Y>=Jg)break;if(Y++,await P7(X,z)!==J)continue;try{return{path:X,mtimeMs:(await z.stat(X)).mtimeMs}}catch{}}return null}async function v7(J,z=BY){return(await d9(J,z))?.mtimeMs??0}async function m7(J,z=BY){return(await zg(J,z)).messages}async function zg(J,z=BY){let Z=await sR(J,z);if(!Z)return{messages:[]};let Y;try{Y=await z.readFile(Z)}catch{return{messages:[]}}let X=Zg(Yg(Y,J)),G=Hg(Y);return{messages:X,...G?{usageMetrics:G}:{}}}function Zg(J){return J.map((z,Z)=>({msg:z,idx:Z})).sort((z,Z)=>{if(z.msg.timestamp<Z.msg.timestamp)return-1;if(z.msg.timestamp>Z.msg.timestamp)return 1;return z.idx-Z.idx}).map((z)=>z.msg)}function Yg(J,z){let Z=[];for(let Y of J.split(`
30
+ `)){let X=Y.trim();if(!X)continue;if(!SZ(X))continue;let G;try{G=JSON.parse(X)}catch{continue}if(!MG(G))continue;if(G.type!=="response_item")continue;let q=MG(G.payload)?G.payload:void 0;if(!q)continue;let H=typeof G.timestamp==="string"?G.timestamp:new Date().toISOString(),j=Xg(q,H,z);if(j)Z.push(j)}return Z}function Xg(J,z,Z){if(J.type==="message"){let Y=J.role;if(Y!=="user"&&Y!=="assistant"&&Y!=="system")return;let X=w9(J.content);if(Y==="user"&&k7(X))return;return{role:Y,blocks:X,timestamp:z,sessionId:Z}}if(J.type==="reasoning")return Gg(J,z,Z);if(J.type==="function_call")return h9(J,z,Z,{name:m9(J.name,"function_call"),input:v9(J.arguments)});if(J.type==="custom_tool_call")return h9(J,z,Z,{name:m9(J.name,"custom_tool_call"),input:v9(J.input)});if(J.type==="tool_search_call")return h9(J,z,Z,{name:"tool_search_call",input:Kq(J,["type","call_id","status"])});if(J.type==="function_call_output"||J.type==="custom_tool_call_output")return u7(J,z,Z,v9(J.output));if(J.type==="tool_search_output")return u7(J,z,Z,Kq(J,["type","call_id"]));if(J.type==="web_search_call"||J.type==="image_generation_call"||J.type==="local_shell_call")return Qg(J,z,Z);return}function Gg(J,z,Z){let Y=qg(J);if(Y.length===0)return;return{role:"assistant",blocks:[{type:"thinking",text:Y}],timestamp:z,sessionId:Z}}function h9(J,z,Z,Y){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:Y.name,input:Y.input}],timestamp:z,sessionId:Z}}function u7(J,z,Z,Y){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:Y,isError:!1}],timestamp:z,sessionId:Z}}function Qg(J,z,Z){let Y=typeof J.type==="string"?J.type:"tool",X=typeof J.call_id==="string"&&J.call_id.length>0?J.call_id:`${Y}:${z}`,G=m9(J.name,Y),q=Kq(J,["type","call_id","status"]),H=Kq(J,["type","call_id"]);return{role:"assistant",timestamp:z,sessionId:Z,blocks:[{type:"tool_call",callId:X,name:G,input:q},{type:"tool_result",callId:X,output:H,isError:!1}]}}function qg(J){let z=E7(J.content);if(z.length>0)return z;let Z=typeof J.text==="string"?J.text:"";if(Z.length>0)return Z;return E7(J.summary)}function E7(J){if(typeof J==="string")return J;if(!Array.isArray(J))return"";let z=[];for(let Z of J){if(typeof Z==="string"){z.push(Z);continue}if(!MG(Z))continue;let Y=typeof Z.text==="string"?Z.text:"";if(Y.length>0)z.push(Y)}return z.join("")}function Kq(J,z){let Z={};for(let[Y,X]of Object.entries(J))if(!z.includes(Y))Z[Y]=X;return Z}function m9(J,z){return typeof J==="string"&&J.length>0?J:z}function v9(J){if(typeof J!=="string")return J;try{return JSON.parse(J)}catch{return J}}function Hg(J){let z,Z=null;for(let Y of J.split(`
31
+ `)){let X=Y.trim();if(!X)continue;if(!SZ(X))continue;let G;try{G=JSON.parse(X)}catch{continue}if(!MG(G))continue;let q=typeof G.timestamp==="string"?jg(G.timestamp):null;if(G.type==="response_item")continue;if(G.type!=="turn.completed")continue;let H=MG(G.usage)?G.usage:void 0;if(!H)continue;let j=S7(H);if(!j)continue;if(q!==null&&(Z===null||q>Z))Z=q,z=j;else if(Z===null)z=j}return z}function jg(J){let z=new Date(J).getTime();return Number.isFinite(z)?z:null}function MG(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}var BY,y7=5000,T7=!1,w7,x7,eR=200,Jg=12;var n9=C(()=>{WG();I7();BY={sessionsDir(){return jY.join(oR(),".codex","sessions")},async readdir(J){try{return await pR(J)}catch{return[]}},async readFile(J){return await pY(J)},stat:rR};w7=/([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})\.jsonl$/i;x7=new WeakMap});import{homedir as Bg}from"os";import{join as fg}from"path";function Wg(){return fg(Bg(),".codex","hooks.json")}var d7,jv,i9;var n7=C(()=>{u9();d7=[{event:"SessionStart",verb:"session-start"},{event:"UserPromptSubmit",verb:"turn-start"},{event:"Stop",verb:"turn-complete"}],jv=d7.map((J)=>J.event);i9=class i9 extends LG{vendor="codex";eventMap=d7;globalSettingsPath(){return Wg()}}});function i7(J){if(!Dq(J))return;let z=Dq(J.modelMetrics)?J.modelMetrics:void 0;if(!z)return;let Z=0,Y=0,X=0;for(let q of Object.values(z)){if(!Dq(q)||!Dq(q.usage))continue;Z+=Lq(q.usage.inputTokens,0),Y+=Lq(q.usage.outputTokens,0),X+=Lq(q.usage.cacheReadTokens,0)}let G=Lq(J.currentTokens,0);if(Z===0&&Y===0&&X===0&&G===0)return;return{input_tokens:Z,output_tokens:Y,...X>0?{cache_read_input_tokens:X}:{},...G>0?{context_tokens:G}:{}}}function Dq(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}function Lq(J,z){return typeof J==="number"&&Number.isFinite(J)?J:z}import{readdir as Vg,rm as Ug,stat as Kg}from"fs/promises";import{homedir as Dg}from"os";import uZ from"path";async function $9(J=fY){let z=uZ.join(J.copilotDir(),"session-state");return(await J.readdir(z)).map((Y)=>uZ.join(z,Y))}async function l7(J,z=fY){let Z=[];for(let Y of await $9(z)){let X=await a9(Y,z);if(X.cwd!==J)continue;Z.push({id:X.id??uZ.basename(Y),updatedAt:X.updatedAt??""})}return Z.sort((Y,X)=>Y.updatedAt.localeCompare(X.updatedAt)).map((Y)=>Y.id)}async function $7(J,z=fY){if(!J)return 0;let Z=0;for(let Y of await $9(z)){if((await a9(Y,z)).cwd!==J)continue;try{let{mtimeMs:G}=await z.stat(uZ.join(Y,"events.jsonl"));if(G>Z)Z=G}catch{}}return Z}async function Lg(J,z=fY){let Z=await Mg(J,z);if(!Z)return{messages:[]};let Y=await z.readFile(uZ.join(Z,"events.jsonl")).catch(()=>""),X=Og(Y,J);return{messages:X.messages,...X.usageMetrics?{usageMetrics:X.usageMetrics}:{}}}async function a7(J,z=fY){return(await Lg(J,z)).messages}async function Mg(J,z=fY){for(let Z of await $9(z)){if(uZ.basename(Z)===J)return Z;let Y=await a9(Z,z);if(Y.id===J||Y.name?.toLowerCase()===J.toLowerCase())return Z}return}async function a9(J,z=fY){let Z=await z.readFile(uZ.join(J,"workspace.yaml")).catch(()=>"");return Fg(Z)}function Fg(J){let z={};for(let Z of J.split(`
32
+ `)){let Y=Z.match(/^([A-Za-z_]+):\s*(.*)$/);if(!Y)continue;let X=Y[1],G=Y[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 Og(J,z){let Z=[],Y=new Map,X=z,G,q=null;for(let H of J.split(`
33
+ `)){let j=H.trim();if(!j)continue;if(!SZ(j))continue;let B;try{B=JSON.parse(j)}catch{continue}if(!l9(B)||typeof B.type!=="string")continue;let V=typeof B.timestamp==="string"?B.timestamp:new Date().toISOString(),f=l9(B.data)?B.data:{};if(B.type==="session.start"){let U=typeof f.sessionId==="string"?f.sessionId:void 0;if(U)X=U;continue}if(B.type==="user.message"){let U=typeof f.content==="string"?f.content:"";if(!U)continue;if(!q)q=Buffer.from(U.slice(0,Ag),"utf8").toString("utf8");Z.push({role:"user",blocks:[{type:"text",text:U}],timestamp:V,sessionId:X});continue}if(B.type==="assistant.message"){let U=[],L=typeof f.content==="string"?f.content:"";if(L)U.push({type:"text",text:L});let O=Array.isArray(f.toolRequests)?f.toolRequests:[];for(let A of O){if(!l9(A))continue;let g=typeof A.id==="string"?A.id:typeof A.toolCallId==="string"?A.toolCallId:"tool",E=typeof A.name==="string"?A.name:typeof A.toolName==="string"?A.toolName:"tool";U.push({type:"tool_call",callId:g,name:E,input:A.arguments??{}})}if(U.length>0)Z.push({role:"assistant",blocks:U,timestamp:V,sessionId:X});continue}if(B.type==="tool.execution_start"){let U=typeof f.toolCallId==="string"?f.toolCallId:void 0,L=typeof f.toolName==="string"?f.toolName:"tool";if(U)Y.set(U,L);continue}if(B.type==="tool.execution_complete"){let U=typeof f.toolCallId==="string"?f.toolCallId:void 0;if(!U)continue;let L=Y.get(U)??(typeof f.toolName==="string"?f.toolName:"tool"),O=f.result??(f.success===!1?{success:!1}:void 0);Z.push({role:"assistant",blocks:[{type:"tool_result",callId:U,output:O,isError:f.success===!1}],timestamp:V,sessionId:X});continue}if(B.type==="session.shutdown")G=i7(f)}return{messages:Z,usageMetrics:G,firstUserMessage:q}}function l9(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}var fY,Ag=200;var _7=C(()=>{WG();fY={copilotDir(){let J=process.env.COPILOT_HOME?.trim();if(J)return J;return uZ.join(Dg(),".copilot")},async readdir(J){try{return await Vg(J)}catch{return[]}},async readFile(J){return await pY(J)},stat:Kg,async rm(J){await Ug(J,{recursive:!0,force:!0})}}});function _9(J){return JJ(J).createHookAdapter()}class Mq{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 p9=C(()=>{QZ()});import{readFile as p7}from"fs/promises";class Fq{supportsCompletionMarkers(){return!0}}function FG(J){return JJ(J).createTurnDetector()}function Cg(J,z="claude",Z=0){let Y=null,X=0;for(let G of J.split(`
34
+ `)){X++;let q=r7(G);if(!q)continue;let H=s7(q.message)?q.message:q;if(H.role!=="assistant")continue;if(!("content"in H))continue;let j=o7(q,Z),B={id:`claude:${z}:${j}:${X}`,timestampMs:j,source:"claude"};if(!Y||B.timestampMs>=Y.timestampMs)Y=B}return Y}function bg(J,z="codex"){let Z=null,Y=0;for(let X of J.split(`
35
+ `)){Y++;let G=r7(X);if(!G||G.type!=="turn.completed")continue;let q=o7(G,0),H={id:`codex:${z}:${q}:${Y}`,timestampMs:q,source:"codex"};if(!Z||H.timestampMs>=Z.timestampMs)Z=H}return Z}function r7(J){let z=J.trim();if(!z)return null;try{let Z=JSON.parse(z);return s7(Z)?Z:null}catch{return null}}function o7(J,z){let Z=typeof J.timestamp==="string"?Date.parse(J.timestamp):Number.NaN;return Number.isFinite(Z)?Z:z}function s7(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}var gg,r9,Ng,o9,Oq;var Aq=C(()=>{b9();n9();QZ();gg={listSessionFiles:(J)=>VG(J),readFile:(J)=>p7(J,"utf8")};r9=class r9 extends Fq{deps;vendor="claude";cache=new Map;constructor(J=gg){super();this.deps=J}async latestCompletion(J){let z=await this.deps.listSessionFiles(J),Z=null,Y=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 H=await this.deps.readFile(X.path).catch(()=>"");q=Cg(H,X.path,X.mtimeMs)}if(Y.set(X.path,{mtimeMs:X.mtimeMs,marker:q}),q&&(!Z||q.timestampMs>Z.timestampMs))Z=q}return this.cache=Y,Z}};Ng={findLatestRollout:(J)=>d9(J),readFile:(J)=>p7(J,"utf8")};o9=class o9 extends Fq{deps;vendor="codex";cache=null;constructor(J=Ng){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 Z=await this.deps.readFile(z.path).catch(()=>"");if(!Z)return null;let Y=bg(Z,z.path);return this.cache={path:z.path,mtimeMs:z.mtimeMs,marker:Y},Y}};Oq=class Oq extends Fq{vendor;constructor(J){super();this.vendor=J}supportsCompletionMarkers(){return!1}async latestCompletion(){return null}}});function xg(J){return{vendor:J,builtin:!1,displayName:J,defaultCommand:[J],history:kg,detectAccount:async()=>({binary:{found:!1,error:"custom engine: kobe has no account detector for it"},account:{kind:"none"}}),createHookAdapter:()=>new Mq(J),createTurnDetector:()=>new Oq(J)}}function JJ(J){return UJ(J)?Tg[J]:xg(J)}var kg,Ig,Sg,yg,Tg;var QZ=C(()=>{s1();QY();b9();b7();n9();n7();_7();p9();Aq();kg={async listSessionIdsForWorktree(){return[]},async readHistory(){return[]},async latestTranscriptMtimeForWorktree(){return 0}},Ig={async listSessionIdsForWorktree(J){return[...await VG(J)].sort((Z,Y)=>Z.mtimeMs-Y.mtimeMs).map((Z)=>Z.sessionId)},readHistory:(J)=>q7(J),latestTranscriptMtimeForWorktree:(J)=>Q7(J)},Sg={listSessionIdsForWorktree:(J)=>h7(J),readHistory:(J)=>m7(J),latestTranscriptMtimeForWorktree:(J)=>v7(J)},yg={listSessionIdsForWorktree:(J)=>l7(J),readHistory:(J)=>a7(J),latestTranscriptMtimeForWorktree:(J)=>$7(J)},Tg={claude:{vendor:"claude",builtin:!0,displayName:"Claude",defaultCommand:["claude"],history:Ig,detectAccount:(J)=>Qq(J),createHookAdapter:()=>new E9,createTurnDetector:()=>new r9},codex:{vendor:"codex",builtin:!0,displayName:"Codex",defaultCommand:["codex"],effortLevels:["none","low","medium","high","xhigh"],history:Sg,detectAccount:(J)=>qq(J),createHookAdapter:()=>new i9,createTurnDetector:()=>new o9},copilot:{vendor:"copilot",builtin:!0,displayName:"Copilot",defaultCommand:["copilot"],history:yg,detectAccount:(J)=>Hq(J),createHookAdapter:()=>new Mq("copilot"),createTurnDetector:()=>new Oq("copilot")}}});async function JX(J,z){if(!z)return 0;return JJ(J).history.latestTranscriptMtimeForWorktree(z)}var Rq=C(()=>{QZ()});function t7(J){return typeof J==="string"&&ug.includes(J)}var OG=(J)=>J,zJ="claude",ug;var Yz=C(()=>{ug=["backlog","in_progress","in_review","done","canceled","error"]});function gq(J){return Eg.includes(J)}function e7(J,z,Z){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 Z?.failure==="rate_limit"||Z?.failure==="billing"?"rate_limited":"error";case"awaiting-input":return Z?.waiting==="permission"?"permission_needed":"running"}}var Eg;var Nq=C(()=>{Eg=["session-start","turn-start","turn-complete","turn-failed","awaiting-input","session-end"]});function wg(){let J=process.env.KOBE_ENGINE_STATE_TTL_MS;if(J===void 0)return JU;let z=Number(J);return Number.isFinite(z)&&z>0?z:JU}class s9{bus;staleMs;now;livenessAt;activity=new Map;constructor(J,z=wg(),Z=()=>Date.now(),Y=()=>Promise.resolve(void 0)){this.bus=J;this.staleMs=z;this.now=Z;this.livenessAt=Y}report(J,z,Z){let Y=this.activity.get(J);if(Y?.lapse)clearTimeout(Y.lapse);let X=e7(Y?.state,z,Z),G=this.now(),q={state:X,detail:Z,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 Z=setTimeout(()=>{this.handleLapse(J,z)},this.staleMs);return Z.unref?.(),Z}async handleLapse(J,z){let Z=this.activity.get(J);if(!Z||Z.at!==z)return;let Y;try{Y=await this.livenessAt(J)}catch{Y=void 0}let X=this.activity.get(J);if(!X||X.at!==z)return;if(Y!==void 0&&Y>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,Z]of this.activity)J[z]=this.payload(z,Z);return J}currentNonIdle(){let J=[];for(let[z,Z]of this.activity)if(Z.state!=="idle")J.push(this.payload(z,Z));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 JU=600000;var zU=C(()=>{Nq()});function ZU(J){if(typeof J!=="string")return"";let z=J.replace(/\s+/g," ").trim();if(z.length===0)return"";let Z=[...z];if(Z.length<=40)return z;return`${Z.slice(0,40).join("")}\u2026`}function Cq(J,z){let Z=J.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,32),Y=z.slice(-6).toLowerCase();return`kobe/${Z||"task"}-${Y}`}function YU(J){let z=J.find((X)=>X.role==="user");if(!z)return"";let Z=z.blocks.filter((X)=>X.type==="text").map((X)=>X.text).join(" "),Y=ZU(Z);return Y.length>0?Buffer.from(Y,"utf8").toString("utf8"):Y}async function zX(J,z=zJ){if(!J)return"";let{history:Z}=JJ(z),Y=await Z.listSessionIdsForWorktree(J);for(let X of Y.slice(0,Pg)){let G=YU(await Z.readHistory(X));if(G)return G}return""}async function XU(J,z){if(!z)return"";try{return YU(await JJ(J).history.readHistory(z))}catch{return""}}var Pg=8;var bq=C(()=>{QZ();Yz()});function GU(J){let z=String(J),Z=z.length-1;return E1.context.id+(Z?String.fromCharCode(96+Z):"")+z}function JB(J){E1.context=J}function hg(){return{...E1.context,id:E1.getNextContextId(),count:0}}function WY(J,z){let Z=N1,Y=r0,X=J.length===0,G=z===void 0?Y:z,q=X?{owned:null,cleanups:null,context:null,owner:null}:{owned:null,cleanups:null,context:G?G.context:null,owner:G},H=X?()=>J(()=>{throw Error("Dispose method must be an explicit argument to createRoot function")}):()=>J(()=>YJ(()=>EZ(q)));Oz.afterCreateOwner&&Oz.afterCreateOwner(q),r0=q,N1=null;try{return uJ(H,!0)}finally{N1=Z,r0=Y}}function s(J,z){z=z?Object.assign({},yq,z):yq;let Z={value:J,observers:null,observerSlots:null,comparator:z.equals||void 0};{if(z.name)Z.name=z.name;if(z.internal)Z.internal=!0;else if(VU(Z),Oz.afterCreateSignal)Oz.afterCreateSignal(Z)}let Y=(X)=>{if(typeof X==="function")if(B0&&B0.running&&B0.sources.has(Z))X=X(Z.tValue);else X=X(Z.value);return ZB(Z,X)};return[UU.bind(Z),Y]}function QU(J,z,Z){let Y=XX(J,z,!0,iJ,Z);if(YX&&B0&&B0.running)ZJ.push(Y);else UY(Y)}function Pz(J,z,Z){let Y=XX(J,z,!1,iJ,Z);if(YX&&B0&&B0.running)ZJ.push(Y);else UY(Y)}function d0(J,z,Z){WU=og;let Y=XX(J,z,!1,iJ,Z),X=gG&&lJ(gG);if(X)Y.suspense=X;if(!Z||!Z.render)Y.user=!0;AJ?AJ.push(Y):UY(Y)}function K0(J,z,Z){Z=Z?Object.assign({},yq,Z):yq;let Y=XX(J,z,!0,0,Z);if(Y.observers=null,Y.observerSlots=null,Y.comparator=Z.equals||void 0,YX&&B0&&B0.running)Y.tState=iJ,ZJ.push(Y);else UY(Y);return UU.bind(Y)}function ig(J){return J&&typeof J==="object"&&"then"in J}function VY(J,z,Z){let Y,X,G;if(typeof z==="function")Y=J,X=z,G=Z||{};else Y=!0,X=J,G=z||{};let q=null,H=t9,j=null,B=!1,V=!1,f="initialValue"in G,U=typeof Y==="function"&&K0(Y),L=new Set,[O,A]=(G.storage||s)(G.initialValue),[g,E]=s(void 0),[h,I]=s(void 0,{equals:!1}),[N,F]=s(f?"ready":"unresolved");if(E1.context){if(j=E1.getNextContextId(),G.ssrLoadFrom==="initial")H=G.initialValue;else if(E1.load&&E1.has(j))H=E1.load(j)}function y(X0,q0,f0,_){if(q===X0){if(q=null,_!==void 0&&(f=!0),(X0===H||q0===H)&&G.onHydrated)queueMicrotask(()=>G.onHydrated(_,{value:q0}));if(H=t9,B0&&X0&&B)B0.promises.delete(X0),B=!1,uJ(()=>{B0.running=!0,c(q0,f0)},!1);else c(q0,f0)}return q0}function c(X0,q0){uJ(()=>{if(q0===void 0)A(()=>X0);F(q0!==void 0?"errored":f?"ready":"unresolved"),E(q0);for(let f0 of L.keys())f0.decrement();L.clear()},!1)}function d(){let X0=gG&&lJ(gG),q0=O(),f0=g();if(f0!==void 0&&!q)throw f0;if(N1&&!N1.user&&X0)QU(()=>{if(h(),q){if(X0.resolved&&B0&&B)B0.promises.add(q);else if(!L.has(X0))X0.increment(),L.add(X0)}});return q0}function l(X0=!0){if(X0!==!1&&V)return;V=!1;let q0=U?U():Y;if(B=B0&&B0.running,q0==null||q0===!1){y(q,YJ(O));return}if(B0&&q)B0.promises.delete(q);let f0,_=H!==t9?H:YJ(()=>{try{return X(q0,{value:O(),refetching:X0})}catch(O0){f0=O0}});if(f0!==void 0){y(q,void 0,Sq(f0),q0);return}else if(!ig(_))return y(q,_,void 0,q0),_;if(q=_,"v"in _){if(_.s===1)y(q,_.v,void 0,q0);else y(q,void 0,Sq(_.v),q0);return _}return V=!0,queueMicrotask(()=>V=!1),uJ(()=>{F(f?"refreshing":"pending"),I()},!1),_.then((O0)=>y(_,O0,void 0,q0),(O0)=>y(_,void 0,Sq(O0),q0))}Object.defineProperties(d,{state:{get:()=>N()},error:{get:()=>g()},loading:{get(){let X0=N();return X0==="pending"||X0==="refreshing"}},latest:{get(){if(!f)return d();let X0=g();if(X0&&!q)throw X0;return O()}}});let t=r0;if(U)QU(()=>(t=r0,l(!1)));else l(!1);return[d,{refetch:(X0)=>$g(t,()=>l(X0)),mutate:A}]}function Eq(J){return uJ(J,!1)}function YJ(J){if(!ZX&&N1===null)return J();let z=N1;N1=null;try{if(ZX)return ZX.untrack(J);return J()}finally{N1=z}}function XJ(J,z,Z){let Y=Array.isArray(J),X,G=Z&&Z.defer;return(q)=>{let H;if(Y){H=Array(J.length);for(let B=0;B<J.length;B++)H[B]=J[B]()}else H=J();if(G)return G=!1,q;let j=YJ(()=>z(H,X,q));return X=H,j}}function _1(J){d0(()=>YJ(J))}function b1(J){if(r0===null)console.warn("cleanups created outside a `createRoot` or `render` will never be run");else if(r0.cleanups===null)r0.cleanups=[J];else r0.cleanups.push(J);return J}function lg(J,z){if(AG||(AG=Symbol("error")),r0=XX(void 0,void 0,!0),r0.context={...r0.context,[AG]:[z]},B0&&B0.running)B0.sources.add(r0);try{return J()}catch(Z){CG(Z)}finally{r0=r0.owner}}function wq(){return N1}function $g(J,z){let Z=r0,Y=N1;r0=J,N1=null;try{return uJ(z,!0)}catch(X){CG(X)}finally{r0=Z,N1=Y}}function ag(J){if(B0&&B0.running)return J(),B0.done;let z=N1,Z=r0;return Promise.resolve().then(()=>{N1=z,r0=Z;let Y;if(YX||gG)Y=B0||(B0={sources:new Set,effects:[],promises:new Set,disposed:new Set,queue:new Set,running:!0}),Y.done||(Y.done=new Promise((X)=>Y.resolve=X)),Y.running=!0;return uJ(J,!1),N1=r0=null,Y?Y.done:void 0})}function HU(J,z){let Z=XX(()=>YJ(()=>{return Object.assign(J,{[dg]:!0}),J(z)}),void 0,!0,0);return Z.props=z,Z.observers=null,Z.observerSlots=null,Z.name=J.name,Z.component=J,UY(Z),Z.tValue!==void 0?Z.tValue:Z.value}function VU(J){if(r0){if(r0.sourceMap)r0.sourceMap.push(J);else r0.sourceMap=[J];J.graph=r0}if(Oz.afterRegisterGraph)Oz.afterRegisterGraph(J)}function hz(J,z){let Z=Symbol("context");return{id:Z,Provider:sg(Z,z),defaultValue:J}}function lJ(J){let z;return r0&&r0.context&&(z=r0.context[J.id])!==void 0?z:J.defaultValue}function _g(J){let z=K0(J),Z=K0(()=>zB(z()),void 0,{name:"children"});return Z.toArray=()=>{let Y=Z();return Array.isArray(Y)?Y:Y!=null?[Y]:[]},Z}function UU(){let J=B0&&B0.running;if(this.sources&&(J?this.tState:this.state))if((J?this.tState:this.state)===iJ)UY(this);else{let z=ZJ;ZJ=null,uJ(()=>Tq(this),!1),ZJ=z}if(N1){let z=this.observers;if(!z||z[z.length-1]!==N1){let Z=z?z.length:0;if(!N1.sources)N1.sources=[this],N1.sourceSlots=[Z];else N1.sources.push(this),N1.sourceSlots.push(Z);if(!z)this.observers=[N1],this.observerSlots=[N1.sources.length-1];else z.push(N1),this.observerSlots.push(N1.sources.length-1)}}if(J&&B0.sources.has(this))return this.tValue;return this.value}function ZB(J,z,Z){let Y=B0&&B0.running&&B0.sources.has(J)?J.tValue:J.value;if(!J.comparator||!J.comparator(Y,z)){if(B0){let X=B0.running;if(X||!Z&&B0.sources.has(J))B0.sources.add(J),J.tValue=z;if(!X)J.value=z}else J.value=z;if(J.observers&&J.observers.length)uJ(()=>{for(let X=0;X<J.observers.length;X+=1){let G=J.observers[X],q=B0&&B0.running;if(q&&B0.disposed.has(G))continue;if(q?!G.tState:!G.state){if(G.pure)ZJ.push(G);else AJ.push(G);if(G.observers)DU(G)}if(!q)G.state=iJ;else G.tState=iJ}if(ZJ.length>1e6){if(ZJ=[],vg)throw Error("Potential Infinite Loop Detected.");throw Error()}},!1)}return z}function UY(J){if(!J.fn)return;EZ(J);let z=uq;if(jU(J,B0&&B0.running&&B0.sources.has(J)?J.tValue:J.value,z),B0&&!B0.running&&B0.sources.has(J))queueMicrotask(()=>{uJ(()=>{B0&&(B0.running=!0),N1=r0=J,jU(J,J.tValue,z),N1=r0=null},!1)})}function jU(J,z,Z){let Y,X=r0,G=N1;N1=r0=J;try{Y=J.fn(z)}catch(q){if(J.pure)if(B0&&B0.running)J.tState=iJ,J.tOwned&&J.tOwned.forEach(EZ),J.tOwned=void 0;else J.state=iJ,J.owned&&J.owned.forEach(EZ),J.owned=null;return J.updatedAt=Z+1,CG(q)}finally{N1=G,r0=X}if(!J.updatedAt||J.updatedAt<=Z){if(J.updatedAt!=null&&"observers"in J)ZB(J,Y,!0);else if(B0&&B0.running&&J.pure){if(!B0.sources.has(J))J.value=Y;B0.sources.add(J),J.tValue=Y}else J.value=Y;J.updatedAt=Z}}function XX(J,z,Z,Y=iJ,X){let G={fn:J,state:Y,updatedAt:null,owned:null,sources:null,sourceSlots:null,cleanups:null,value:z,owner:r0,context:r0?r0.context:null,pure:Z};if(B0&&B0.running)G.state=0,G.tState=Y;if(r0===null)console.warn("computations created outside a `createRoot` or `render` will never be disposed");else if(r0!==ng)if(B0&&B0.running&&r0.pure)if(!r0.tOwned)r0.tOwned=[G];else r0.tOwned.push(G);else if(!r0.owned)r0.owned=[G];else r0.owned.push(G);if(X&&X.name)G.name=X.name;if(ZX&&G.fn){let q=G.fn,[H,j]=s(void 0,{equals:!1}),B=ZX.factory(q,j);b1(()=>B.dispose());let V,f=()=>ag(j).then(()=>{if(V)V.dispose(),V=void 0});G.fn=(U)=>{if(H(),B0&&B0.running){if(!V)V=ZX.factory(q,f);return V.track(U)}return B.track(U)}}return Oz.afterCreateOwner&&Oz.afterCreateOwner(G),G}function NG(J){let z=B0&&B0.running;if((z?J.tState:J.state)===0)return;if((z?J.tState:J.state)===RG)return Tq(J);if(J.suspense&&YJ(J.suspense.inFallback))return J.suspense.effects.push(J);let Z=[J];while((J=J.owner)&&(!J.updatedAt||J.updatedAt<uq)){if(z&&B0.disposed.has(J))return;if(z?J.tState:J.state)Z.push(J)}for(let Y=Z.length-1;Y>=0;Y--){if(J=Z[Y],z){let X=J,G=Z[Y+1];while((X=X.owner)&&X!==G)if(B0.disposed.has(X))return}if((z?J.tState:J.state)===iJ)UY(J);else if((z?J.tState:J.state)===RG){let X=ZJ;ZJ=null,uJ(()=>Tq(J,Z[0]),!1),ZJ=X}}}function uJ(J,z){if(ZJ)return J();let Z=!1;if(!z)ZJ=[];if(AJ)Z=!0;else AJ=[];uq++;try{let Y=J();return pg(Z),Y}catch(Y){if(!Z)AJ=null;ZJ=null,CG(Y)}}function pg(J){if(ZJ){if(YX&&B0&&B0.running)rg(ZJ);else KU(ZJ);ZJ=null}if(J)return;let z;if(B0){if(!B0.promises.size&&!B0.queue.size){let{sources:Y,disposed:X}=B0;AJ.push.apply(AJ,B0.effects),z=B0.resolve;for(let G of AJ)"tState"in G&&(G.state=G.tState),delete G.tState;B0=null,uJ(()=>{for(let G of X)EZ(G);for(let G of Y){if(G.value=G.tValue,G.owned)for(let q=0,H=G.owned.length;q<H;q++)EZ(G.owned[q]);if(G.tOwned)G.owned=G.tOwned;delete G.tValue,delete G.tOwned,G.tState=0}qU(!1)},!1)}else if(B0.running){B0.running=!1,B0.effects.push.apply(B0.effects,AJ),AJ=null,qU(!0);return}}let Z=AJ;if(AJ=null,Z.length)uJ(()=>WU(Z),!1);else Oz.afterUpdate&&Oz.afterUpdate();if(z)z()}function KU(J){for(let z=0;z<J.length;z++)NG(J[z])}function rg(J){for(let z=0;z<J.length;z++){let Z=J[z],Y=B0.queue;if(!Y.has(Z))Y.add(Z),YX(()=>{Y.delete(Z),uJ(()=>{B0.running=!0,NG(Z)},!1),B0&&(B0.running=!1)})}}function og(J){let z,Z=0;for(z=0;z<J.length;z++){let Y=J[z];if(!Y.user)NG(Y);else J[Z++]=Y}if(E1.context){if(E1.count){E1.effects||(E1.effects=[]),E1.effects.push(...J.slice(0,Z));return}JB()}if(E1.effects&&(E1.done||!E1.count))J=[...E1.effects,...J],Z+=E1.effects.length,delete E1.effects;for(z=0;z<Z;z++)NG(J[z])}function Tq(J,z){let Z=B0&&B0.running;if(Z)J.tState=0;else J.state=0;for(let Y=0;Y<J.sources.length;Y+=1){let X=J.sources[Y];if(X.sources){let G=Z?X.tState:X.state;if(G===iJ){if(X!==z&&(!X.updatedAt||X.updatedAt<uq))NG(X)}else if(G===RG)Tq(X,z)}}}function DU(J){let z=B0&&B0.running;for(let Z=0;Z<J.observers.length;Z+=1){let Y=J.observers[Z];if(z?!Y.tState:!Y.state){if(z)Y.tState=RG;else Y.state=RG;if(Y.pure)ZJ.push(Y);else AJ.push(Y);Y.observers&&DU(Y)}}}function EZ(J){let z;if(J.sources)while(J.sources.length){let Z=J.sources.pop(),Y=J.sourceSlots.pop(),X=Z.observers;if(X&&X.length){let G=X.pop(),q=Z.observerSlots.pop();if(Y<X.length)G.sourceSlots[q]=Y,X[Y]=G,Z.observerSlots[Y]=q}}if(J.tOwned){for(z=J.tOwned.length-1;z>=0;z--)EZ(J.tOwned[z]);delete J.tOwned}if(B0&&B0.running&&J.pure)LU(J,!0);else if(J.owned){for(z=J.owned.length-1;z>=0;z--)EZ(J.owned[z]);J.owned=null}if(J.cleanups){for(z=J.cleanups.length-1;z>=0;z--)J.cleanups[z]();J.cleanups=null}if(B0&&B0.running)J.tState=0;else J.state=0;delete J.sourceMap}function LU(J,z){if(!z)J.tState=0,B0.disposed.add(J);if(J.owned)for(let Z=0;Z<J.owned.length;Z++)LU(J.owned[Z])}function Sq(J){if(J instanceof Error)return J;return Error(typeof J==="string"?J:"Unknown error",{cause:J})}function BU(J,z,Z){try{for(let Y of z)Y(J)}catch(Y){CG(Y,Z&&Z.owner||null)}}function CG(J,z=r0){let Z=AG&&z&&z.context&&z.context[AG],Y=Sq(J);if(!Z)throw Y;if(AJ)AJ.push({fn(){BU(Y,Z,z)},state:iJ});else BU(Y,Z,z)}function zB(J){if(typeof J==="function"&&!J.length)return zB(J());if(Array.isArray(J)){let z=[];for(let Z=0;Z<J.length;Z++){let Y=zB(J[Z]);if(Array.isArray(Y))if(Y.length<32768)z.push.apply(z,Y);else for(let X=0;X<Y.length;X++)z.push(Y[X]);else z.push(Y)}return z}return J}function sg(J,z){return function(Y){let X;return Pz(()=>X=YJ(()=>{return r0.context={...r0.context,[J]:Y.value},_g(()=>Y.children)}),void 0,z),X}}function fU(J){for(let z=0;z<J.length;z++)J[z]()}function eg(J,z,Z={}){let Y=[],X=[],G=[],q=0,H=z.length>1?[]:null;return b1(()=>fU(G)),()=>{let j=J()||[],B=j.length,V,f;return j[xq],YJ(()=>{let L,O,A,g,E,h,I,N,F;if(B===0){if(q!==0)fU(G),G=[],Y=[],X=[],q=0,H&&(H=[]);if(Z.fallback)Y=[tg],X[0]=WY((y)=>{return G[0]=y,Z.fallback()}),q=1}else if(q===0){X=Array(B);for(f=0;f<B;f++)Y[f]=j[f],X[f]=WY(U);q=B}else{A=Array(B),g=Array(B),H&&(E=Array(B));for(h=0,I=Math.min(q,B);h<I&&Y[h]===j[h];h++);for(I=q-1,N=B-1;I>=h&&N>=h&&Y[I]===j[N];I--,N--)A[N]=X[I],g[N]=G[I],H&&(E[N]=H[I]);L=new Map,O=Array(N+1);for(f=N;f>=h;f--)F=j[f],V=L.get(F),O[f]=V===void 0?-1:V,L.set(F,f);for(V=h;V<=I;V++)if(F=Y[V],f=L.get(F),f!==void 0&&f!==-1)A[f]=X[V],g[f]=G[V],H&&(E[f]=H[V]),f=O[f],L.set(F,f);else G[V]();for(f=h;f<B;f++)if(f in A){if(X[f]=A[f],G[f]=g[f],H)H[f]=E[f],H[f](f)}else X[f]=WY(U);X=X.slice(0,q=B),Y=j.slice(0)}return X});function U(L){if(G[f]=L,H){let[O,A]=s(f,{name:"index"});return H[f]=A,z(j[f],O)}return z(j[f])}}}function MU(J,z){if(J2){if(E1.context){let Z=E1.context;JB(hg());let Y=HU(J,z||{});return JB(Z),Y}}return HU(J,z||{})}function kq(){return!0}function e9(J){return!(J=typeof J==="function"?J():J)?{}:J}function Z2(){for(let J=0,z=this.length;J<z;++J){let Z=this[J]();if(Z!==void 0)return Z}}function Pq(...J){let z=!1;for(let q=0;q<J.length;q++){let H=J[q];z=z||!!H&&Fz in H,J[q]=typeof H==="function"?(z=!0,K0(H)):H}if(cg&&z)return new Proxy({get(q){for(let H=J.length-1;H>=0;H--){let j=e9(J[H])[q];if(j!==void 0)return j}},has(q){for(let H=J.length-1;H>=0;H--)if(q in e9(J[H]))return!0;return!1},keys(){let q=[];for(let H=0;H<J.length;H++)q.push(...Object.keys(e9(J[H])));return[...new Set(q)]}},z2);let Z={},Y=Object.create(null);for(let q=J.length-1;q>=0;q--){let H=J[q];if(!H)continue;let j=Object.getOwnPropertyNames(H);for(let B=j.length-1;B>=0;B--){let V=j[B];if(V==="__proto__"||V==="constructor")continue;let f=Object.getOwnPropertyDescriptor(H,V);if(!Y[V])Y[V]=f.get?{enumerable:!0,configurable:!0,get:Z2.bind(Z[V]=[f.get.bind(H)])}:f.value!==void 0?f:void 0;else{let U=Z[V];if(U){if(f.get)U.push(f.get.bind(H));else if(f.value!==void 0)U.push(()=>f.value)}}}}let X={},G=Object.keys(Y);for(let q=G.length-1;q>=0;q--){let H=G[q],j=Y[H];if(j&&j.get)Object.defineProperty(X,H,j);else X[H]=j?j.value:void 0}return X}function Y1(J){let z="fallback"in J&&{fallback:()=>J.fallback};return K0(eg(()=>J.each,J.children,z||void 0),void 0,{name:"value"})}function Y0(J){let z=J.keyed,Z=K0(()=>J.when,void 0,{name:"condition value"}),Y=z?Z:K0(Z,void 0,{equals:(X,G)=>!X===!G,name:"condition"});return K0(()=>{let X=Y();if(X){let G=J.children;return typeof G==="function"&&G.length>0?YJ(()=>G(z?X:()=>{if(!YJ(Y))throw Y2("Show");return Z()})):G}return J.fallback},void 0,{name:"value"})}function FU(J){let z;if(E1.context&&E1.load)z=E1.load(E1.getContextId());let[Z,Y]=s(z,{name:"errored"});return Iq||(Iq=new Set),Iq.add(Y),b1(()=>Iq.delete(Y)),K0(()=>{let X;if(X=Z()){let G=J.fallback;if(typeof G!=="function"||G.length==0)console.error(X);return typeof G==="function"&&G.length?YJ(()=>G(X,()=>Y())):G}return lg(()=>J.children,Y)},void 0,{name:"value"})}var E1,vg=!0,mg=(J,z)=>J===z,Fz,cg,xq,dg,yq,AG=null,WU,iJ=1,RG=2,ng,t9,r0=null,B0=null,YX=null,ZX=null,N1=null,ZJ=null,AJ=null,uq=0,Oz,cv,qU,gG,tg,J2=!1,z2,Y2=(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.`,Iq,OU;var D1=C(()=>{E1={context:void 0,registry:void 0,effects:void 0,done:!1,getContextId(){return GU(this.context.count)},getNextContextId(){return GU(this.context.count++)}};Fz=Symbol("solid-proxy"),cg=typeof Proxy==="function",xq=Symbol("solid-track"),dg=Symbol("solid-dev-component"),yq={equals:mg},WU=KU,ng={},t9={},Oz={afterUpdate:null,afterCreateOwner:null,afterCreateSignal:null,afterRegisterGraph:null};[cv,qU]=s(!1);tg=Symbol("fallback");z2={get(J,z,Z){if(z===Fz)return Z;return J.get(z)},has(J,z){if(z===Fz)return!0;return J.has(z)},set:kq,deleteProperty:kq,getOwnPropertyDescriptor(J,z){return{configurable:!0,enumerable:!0,get(){return J.get(z)},set:kq,deleteProperty:kq}},ownKeys(J){return J.keys()}};OU={hooks:Oz,writeSignal:ZB,registerGraph:VU};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 X2}from"child_process";function YB(J,z,Z,Y){if(Z)return J+Y.slowRetryMs;return z+Math.max(Y.minIntervalMs,(z-J)*5)}function XB(J,z){return!J.inFlight&&z>=J.nextAllowedAt}function AU(J,z,Z=Math.random){let Y=Math.max(0,Math.min(1,z)),X=(Z()*2-1)*J*Y;return Math.max(0,J+X)}function RU(J,z,Z){if(z<=0)return Math.min(J,Z);return Math.min(J*2**z,Z)}function GX(J,z,Z,Y){let X=Date.now();if(!XB(J,X))return!1;J.inFlight=!0;let G=new AbortController,q=setTimeout(()=>G.abort(),z.timeoutMs);return(async()=>{let H,j=!1;try{H=await Z(G.signal),j=!0}catch{}clearTimeout(q);let B=G.signal.aborted;if(J.nextAllowedAt=YB(X,Date.now(),B,z),J.inFlight=!1,j&&!B)Y(H)})(),!0}function qZ(J,z,Z){return new Promise((Y)=>{let X="",G=!1,q=(j)=>{if(G)return;G=!0,Y({status:j,stdout:X})},H=X2(J,z.slice(),{cwd:Z.cwd,stdio:["ignore","pipe","ignore"],env:Z.env,signal:Z.signal,killSignal:"SIGKILL"});H.stdout?.on("data",(j)=>{X+=String(j)}),H.on("error",()=>q(null)),H.on("close",(j)=>q(j))})}var QX=()=>{};function G2(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 Q2(J){let z=(J.status??"").toUpperCase(),Z=(J.conclusion??"").toUpperCase(),Y=(J.state??"").toUpperCase();if(z&&z!=="COMPLETED")return"pending";if(Z){if(Z==="SUCCESS"||Z==="NEUTRAL"||Z==="SKIPPED")return"passing";return"failing"}if(Y==="SUCCESS")return"passing";if(Y==="PENDING"||Y==="EXPECTED")return"pending";if(Y==="FAILURE"||Y==="ERROR")return"failing";return"unknown"}function q2(J){if(!J||J.length===0)return"none";let z=!1,Z=!1;for(let Y of J){let X=Q2(Y);if(X==="failing")return"failing";if(X==="pending")z=!0;else if(X==="passing")Z=!0}if(z)return"pending";if(Z)return"passing";return"unknown"}function NU(J,z){if(!J||typeof J.number!=="number")return null;return{provider:"github",lifecycle:G2(J.state,J.reviewDecision),checkState:q2(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 vq(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 hq(J,z){return z.some((Z)=>J.includes(Z))}function GB(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(hq(z,f2))return{kind:"empty"};if(hq(z,H2))return{kind:"error",error:"no-remote"};if(hq(z,j2))return{kind:"error",error:"auth"};if(hq(z,B2))return{kind:"error",error:"network"};return{kind:"empty"}}function bG(J,z,Z,Y,X=Math.random){let G=(H)=>Z+AU(H,Y.jitterRatio,X);if(J.kind==="pr")return{nextAllowedAt:G(J.settled?Y.settledMs:Y.tickMs),failures:0};if(J.kind==="empty")return{nextAllowedAt:G(Y.noPrMs),failures:0};if(J.error==="no-remote")return{nextAllowedAt:G(Y.noRemoteMs),failures:0};let q=z+1;return{nextAllowedAt:G(RU(Y.failureBaseMs,q-1,Y.failureCapMs)),failures:q}}var gU="number,url,title,state,baseRefName,headRefName,reviewDecision,mergeable,statusCheckRollup",H2,j2,B2,f2;var QB=C(()=>{QX();H2=["none of the git remotes","no git remote","to use github cli in a github repository","not a github repository"],j2=["gh auth login","authentication required","not logged in","http 401","bad credentials","requires authentication"],B2=["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"],f2=["no pull requests found","no open pull requests","no pull request found"]});var qB,HB,jB,BB="DIRTY_WORKTREE",fB,WB;var VB=C(()=>{qB=class qB extends Error{from;to;taskId;constructor(J,z,Z){super(`illegal transition for task ${Z}: ${J} -> ${z}`);this.from=J;this.to=z;this.taskId=Z;this.name="IllegalTransitionError"}};HB=class HB extends Error{constructor(J){super(`task not found: ${J}`);this.name="TaskNotFoundError"}};jB=class jB extends Error{constructor(){super("cannot delete a main task; remove the repo from saved repos instead");this.name="CannotDeleteMainTaskError"}};fB=class fB extends Error{taskId;constructor(J){super(`${BB}: task ${J} worktree has uncommitted or untracked changes`);this.taskId=J;this.name="DirtyWorktreeError"}};WB=class WB 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 CU;var bU=C(()=>{CU=["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"]});import{existsSync as W2}from"fs";function kU(J){let z=J.auth,Z=z.kind==="key"?{kind:"key",keyPath:z.keyPath}:{kind:"password",getPassword:()=>_Q(z.keychainRef)};return{host:J.host,user:J.user,port:J.port,auth:Z,controlPath:mQ(J.host,J.user,J.port)}}function qX(J){let z=JZ(J);if(!z)return new aQ;return new $Y(kU(z))}function HZ(J){for(let z of Object.values(D9()))if(J===z.basePath||J.startsWith(`${z.basePath}/`))return new $Y(kU(z));return new aQ}function IU(J){return J&&e1(J)?J:void 0}function wZ(J){return HZ(J).isRemote||W2(J)}function l1(J){return HZ(J).isRemote?sJ():J}var Az=C(()=>{t1();S1();q9();B9()});import{isAbsolute as V2,join as U2,resolve as SU}from"path";function yU(J){let z=J.trim();if(!z)return"default";if(z.replace(/\/+$/,"")===UB)return"nextToProject";return"custom"}function KB(J){let z=J.trim();return z===jZ||z.startsWith(`${jZ}/`)}function DB(J,z){if(typeof J!=="string")return null;let Z=J.trim();if(!Z)return null;if(KB(Z)){if(!z)return null;let G=Z.slice(jZ.length).replace(/^\/+/,"");return SU(z,G)}let Y=sJ();if(Z==="~")return Y;let X=Z.startsWith("~/")?U2(Y,Z.slice(2)):Z;return V2(X)?X:SU(Y,X)}function TU(J){let z=OJ()[PZ];return DB(typeof z==="string"?z:null,J)}var PZ="worktree.basePath",mq="worktree.basePath.custom",jZ="$project_dir",UB;var LB=C(()=>{t1();Ez();UB=`${jZ}/..`});import{createHash as K2}from"crypto";import uU from"fs";import RJ from"path";function F2(J){return TU(J)??RJ.join(KJ(),EU)}function O2(){return RJ.join(KJ(),EU)}function wU(J){if(!RJ.isAbsolute(J))throw Error(`worktreeRootFor: repo must be an absolute path, got: ${J}`);return RJ.join(F2(J),nU(J))}function PU(J){if(!RJ.isAbsolute(J))throw Error(`managedWorktreeRootsFor: repo must be an absolute path, got: ${J}`);let z=wU(J),Z=RJ.join(O2(),nU(J));return[...z===Z?[z]:[z,Z],...M2.map((X)=>RJ.join(J,X))]}function hU(J,z){if(!z||/[/\\\0]/.test(z))throw Error(`worktreePathFor: invalid slug: ${JSON.stringify(z)}`);return RJ.join(wU(J),z)}async function vU(J){if(e1(J)){let Z=JZ(J)?.basePath;if(!Z)return[];return qX(J).readdir(cU(Z))}let z=new Set;for(let Z of PU(J))try{for(let Y of uU.readdirSync(Z,{withFileTypes:!0}))if(Y.isDirectory())z.add(Y.name)}catch{}return[...z]}function MB(J,z){if(!RJ.isAbsolute(J)||!RJ.isAbsolute(z))return null;let Z=xU(z);for(let Y of PU(J)){let X=xU(Y),G=RJ.relative(X,Z);if(G!==""&&!G.startsWith("..")&&!RJ.isAbsolute(G))return Y}return null}function mU(J,z){return MB(J,z)!==null}function cU(J){return`${A2(J)}/.kobe/worktrees`}function dU(J,z){if(!z||/[/\\\0]/.test(z))throw Error(`remoteWorktreePathFor: invalid slug: ${JSON.stringify(z)}`);return`${cU(J)}/${z}`}function A2(J){return J.length>1&&J.endsWith("/")?J.replace(/\/+$/,""):J}function xU(J){try{return uU.realpathSync(J)}catch{return RJ.resolve(J)}}function nU(J){let Z=(RJ.basename(J)||"repo").replace(/[^a-zA-Z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"repo",Y=K2("sha1").update(RJ.resolve(J)).digest("hex").slice(0,12);return`${Z}-${Y}`}var EU="worktrees",D2=".kobe/worktrees",L2=".claude/worktrees",M2;var FB=C(()=>{t1();Az();S1();LB();M2=[D2,L2]});class OB{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??CU,this.pool.length===0)throw Error("SlugAllocator: animal pool cannot be empty")}async allocate(J){let z=this.chain,Z;this.chain=new Promise((Y)=>{Z=Y}),await z;try{return await this.pickLocked(J)}finally{Z()}}commit(J,z){this.deletePending(J,z)}cancel(J,z){this.deletePending(J,z)}async pickLocked(J){let z=await this.occupiedSlugs(J),Z=this.pool.filter((X)=>!z.has(X));if(Z.length>0){let X=Z[Math.floor(this.random()*Z.length)];return this.addPending(J,X),X}let Y=this.pool[Math.floor(this.random()*this.pool.length)];for(let X=2;;X++){let G=`${Y}-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 Z of this.activeSlugs(J))if(Z)z.add(Z);for(let Z of await vU(J))z.add(Z);return z}addPending(J,z){let Z=this.pendingByRepo.get(J);if(!Z)Z=new Set,this.pendingByRepo.set(J,Z);Z.add(z)}deletePending(J,z){let Z=this.pendingByRepo.get(J);if(!Z)return;if(Z.delete(z),Z.size===0)this.pendingByRepo.delete(J)}}var iU=C(()=>{bU();FB()});var $U={};H1($U,{PLACEHOLDER_TASK_TITLE:()=>vz,Orchestrator:()=>cq});import{realpathSync as R2}from"fs";import{basename as g2,resolve as N2}from"path";function lU(J){return JZ(J)?.basePath??J}class cq{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 OB((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,Z]=s(this.store.list());this.tasksAcc=z,this.setTasks=(G)=>Z(()=>G);let[Y,X]=s(null);this.activeTaskAcc=Y,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??vz).trim()||vz,Z=await this.store.create({repo:J.repo,title:z,branch:J.branch??"",worktreePath:"",status:"backlog",kind:"task",vendor:J.vendor??zJ,...J.modelEffort?{modelEffort:J.modelEffort}:{}});if(J.baseRef)this.pendingBaseRefs.set(Z.id,J.baseRef);return Z}async ensureMainTask(J){let{repo:z,key:Z}=kG(J),Y=this.store.list().find((q)=>q.kind==="main"&&kG(q.repo).key===Z);if(Y)return Y;let X=this.mainTaskLocks.get(Z);if(X)return X;let G=(async()=>{let q=cJ(x1("lastSelectedVendor"),nJ());return await this.store.create({repo:z,title:C2(z),branch:"",worktreePath:lU(z),status:"backlog",kind:"main",vendor:q})})();this.mainTaskLocks.set(Z,G);try{return await G}finally{this.mainTaskLocks.delete(Z)}}async ensureWorktree(J){let z=this.requireTask(J);if(z.kind==="main")return lU(z.repo);if(z.worktreePath)return z.worktreePath;let Z=this.worktreeLocks.get(z.id);if(Z)return Z;let Y=this.createWorktree(z);this.worktreeLocks.set(z.id,Y);try{return await Y}finally{this.worktreeLocks.delete(z.id)}}async createWorktree(J){let z=await this.slugs.allocate(J.repo),Z=J.branch||Cq(J.title,J.id),Y=this.pendingBaseRefs.get(J.id),X;try{X=await this.worktrees.createForTask({repo:J.repo,slug:z,branch:Z,baseRef:Y})}catch(G){throw this.slugs.cancel(J.repo,z),G}try{await this.store.update(J.id,{worktreePath:X.path,branch:Z})}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 Z=z.trim();if(!Z)throw Error("setTitle: title is required (empty or whitespace-only rejected)");let Y=this.requireTask(J);if(Y.title===Z)return;await this.store.update(Y.id,{title:Z}),await this.followBranchToTitle(Y,Z)}async followBranchToTitle(J,z){if(J.kind==="main"||!J.worktreePath)return;if(J.branch!==Cq(vz,J.id))return;let Z=Cq(z,J.id);if(Z===J.branch)return;try{await this.setBranch(J.id,Z)}catch(Y){console.error(`[kobe] follow-branch-to-title failed for ${J.id}:`,Y)}}async setBranch(J,z){let Z=z.trim();if(!Z)throw Error("setBranch: branch is required (empty or whitespace-only rejected)");let Y=this.requireTask(J);if(Y.kind==="main")throw Error("setBranch: a main task tracks the repo's own branch; rename it with git directly");if(Y.branch===Z)return;if(Y.worktreePath)await this.worktrees.renameBranch(Y.worktreePath,Y.branch,Z);await this.store.update(Y.id,{branch:Z})}async setVendor(J,z){let Z=this.requireTask(J);if(Z.vendor===z)return;await this.store.update(Z.id,{vendor:z})}async setPinned(J,z){let Z=this.requireTask(J);if(Z.kind==="main")return;let Y=z??!Z.pinned;if((Z.pinned??!1)===Y)return;await this.store.update(Z.id,{pinned:Y})}async moveTask(J,z){let Z=this.requireTask(J);if(Z.kind==="main")return;let Y=this.store.list().filter((X)=>(X.kind??"task")!=="main"&&X.archived===Z.archived&&(X.pinned??!1)===(Z.pinned??!1)).map((X)=>String(X.id));await this.store.move(Z.id,z,Y)}async setArchived(J,z){let Z=this.requireTask(J);if(Z.kind==="main")return;let Y=z??!Z.archived;if(Z.archived===Y)return;await this.store.update(Z.id,{archived:Y})}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 Z=this.requireTask(J);if(Z.status===z)return;if(Z.status==="done"&&z==="error"||Z.status==="error"&&z==="done")throw new qB(Z.status,z,Z.id);await this.store.update(Z.id,{status:z})}async setPRStatus(J,z){let Z=this.requireTask(J);if(vq(Z.prStatus,z??void 0))return;await this.store.update(Z.id,{prStatus:z??void 0})}async deleteTask(J,z){let Z=this.store.get(J);if(!Z)return;if(Z.kind==="main")throw new jB;let Y=z?.force===!0;if(Z.worktreePath){if(!Y){let X=!1;try{X=await this.worktrees.isDirty(Z.worktreePath)}catch{}if(X)throw new fB(Z.id)}try{await this.worktrees.remove(Z.worktreePath,{force:Y})}catch(X){throw new WB(Z.id,X)}}await this.store.remove(Z.id),this.pendingBaseRefs.delete(Z.id),this.worktreeLocks.delete(Z.id)}async forgetProject(J){if(!J)throw Error("forgetProject: repo is required");let z=kG(J).key;for(let Z of SJ())if(kG(Z).key===z)U9(Z);for(let Z of this.store.list()){if(Z.kind!=="main")continue;if(kG(Z.repo).key!==z)continue;await this.store.remove(Z.id),this.pendingBaseRefs.delete(Z.id),this.worktreeLocks.delete(Z.id)}}async discoverAdoptableWorktrees(J){if(!J)throw Error("discoverAdoptableWorktrees: repo is required");let z=await this.worktrees.listAll(J),Z=new Set(this.store.list().filter((Y)=>Y.worktreePath).map((Y)=>HX(Y.worktreePath)));return z.filter((Y)=>!Z.has(HX(Y.path)))}async adoptWorktree(J){if(!J.repo)throw Error("adoptWorktree: repo is required");if(!J.worktreePath)throw Error("adoptWorktree: worktreePath is required");let z=HX(J.worktreePath),Z=this.adoptLocks.get(z);if(Z)return Z;let Y=this.adoptWorktreeLocked(J,z);this.adoptLocks.set(z,Y);try{return await Y}finally{this.adoptLocks.delete(z)}}async adoptWorktreeLocked(J,z){let Z=this.store.list().find((H)=>H.worktreePath&&HX(H.worktreePath)===z);if(Z){if(J.ifExists==="return")return Z;throw Error(`adoptWorktree: ${J.worktreePath} is already adopted as a task`)}let X=(await this.worktrees.listAll(J.repo)).find((H)=>HX(H.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??g2(X.path)).trim()||vz;return this.store.create({repo:J.repo,title:q,branch:G,worktreePath:X.path,status:"backlog",kind:"task",vendor:J.vendor??zJ})}pendingBaseRefs=new Map;adoptLocks=new Map;requireTask(J){let z=this.store.get(J);if(!z)throw new HB(String(J));return z}}function C2(J){let z=J.split(/[/\\]/).filter(Boolean);return z.length>0?z[z.length-1]??J:J}function kG(J){let z=tz(J);return{repo:z,key:e1(z)?z:HX(z)}}function HX(J){try{return R2(J)}catch{return N2(J)}}var vz="(new task)";var IG=C(()=>{D1();QB();S1();Yz();s1();VB();iU()});function jX(J,z,Z){if(!z)return J;let Y=qX(z);return Y.ensureReady(),Y.wrapCommand(J,{tty:!0,cwd:Z})}function p1(){let J=[];for(let z of["KOBE_HOME_DIR","KOBE_DAEMON_SOCKET_PATH","KOBE_TMUX_SOCKET"]){let Z=process.env[z];if(Z&&Z.length>0)J.push(`${z}=${z1(Z)}`)}return J.length>0?`${J.join(" ")} `:""}var SG="@kobe_remote";var KY=C(()=>{Az();Mz()});function dq(){return dJ(DY,!1)}var DY="experimental.autoStatus";var yG=C(()=>{Ez()});function AB(){return dJ(LY,!1)}var LY="experimental.dispatcher";var nq=C(()=>{Ez()});import{randomUUID as b2}from"crypto";function Rz(J){return`engineCommand.${J}`}function gz(J){return`engineName.${J}`}function MY(J){return x1(gz(J))?.trim()||RB[J]||J}function TG(J){return JJ(J??"claude").defaultCommand}function k2(J){let z=[],Z=/"([^"]*)"|'([^']*)'|(\S+)/g;for(let Y=Z.exec(J);Y!==null;Y=Z.exec(J))z.push(Y[1]??Y[2]??Y[3]??"");return z}function EJ(J,z){let Z=J??"claude",Y=x1(Rz(Z))?.trim(),X=(()=>{if(Y){let G=k2(Y);if(G.length>0)return G}return TG(Z)})();return I2(X,Z,z)}function I2(J,z,Z){let Y=Z?.trim();if(!Y)return J;let X=z??"claude";if(!JJ(X).effortLevels?.includes(Y))return J;if(X==="codex")return[...J,"-c",`model_reasoning_effort=${Y}`];return J}function BX(J,z){if((z??"claude")!=="claude")return{argv:J,sessionId:null};if(J.some((Y)=>S2.has(Y)))return{argv:J,sessionId:null};let Z=b2();return{argv:[...J,"--session-id",Z],sessionId:Z}}function FY(){let J=(z)=>/^[A-Za-z0-9_/.:=-]+$/.test(z)?z:`'${z.replace(/'/g,"'\\''")}'`;try{return[...u1(),"api"].map(J).join(" ")}catch{return"kobe api"}}function y2(J,z=FY()){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 T2(J,z=FY()){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 x2(J,z=FY(),Z={}){let Y=[];if((Z.status??dq)())Y.push(y2(J,z));if((Z.notes??AB)())Y.push(T2(J,z));return Y.length>0?Y.join(`
38
+
39
+ `):null}function iq(J,z,Z,Y={}){if(!Z)return J;if((z??"claude")!=="claude")return J;if(J.includes("--append-system-prompt")||J.includes("--append-system-prompt-file"))return J;let X=x2(Z,FY(),Y);if(!X)return J;return[...J,"--append-system-prompt",X]}function u2(J,z=FY()){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 lq(J,z,Z,Y=AB){if(!Z||!Y())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",u2(Z)]}var RB,S2;var Xz=C(()=>{GZ();QZ();yG();nq();S1();s1();RB=Object.fromEntries(zY.map((J)=>[J,JJ(J).displayName]));S2=new Set(["--session-id","--resume","-r","--continue","-c","--from-pr"])});var aU={};H1(aU,{archivedHistoryPreviewEnabled:()=>gB,ARCHIVED_HISTORY_PREVIEW_KEY:()=>xG});function gB(){return dJ(xG,!1)}var xG="experimental.archivedHistoryPreview";var $q=C(()=>{Ez()});import{spawnSync as E2}from"child_process";function _U(J,z){if(J==="darwin")return"pbcopy";if(J==="linux"){for(let Z of w2)if(z(Z.binary))return Z.command;return null}return null}function rU(J){let z=[["set-option","-g","set-clipboard","on"]];if(J)for(let Z of P2)for(let Y of h2)z.push(["bind-key","-T",Z,Y,"send-keys","-X","copy-pipe-and-cancel",J]);return z}var w2,pU=(J)=>{try{let z=process.platform==="win32"?"where":"which";return E2(z,[J],{encoding:"utf8"}).status===0}catch{return!1}},P2,h2;var oU=C(()=>{w2=[{binary:"wl-copy",command:"wl-copy"},{binary:"xclip",command:"xclip -selection clipboard -in"},{binary:"xsel",command:"xsel --clipboard --input"}];P2=["copy-mode","copy-mode-vi"],h2=["MouseDragEnd1Pane","y","Enter"]});import{existsSync as sU,readFileSync as v2}from"fs";function tU(){OY=null}function m2(){let J=KV();if(sU(J))return{canonical:J,found:J};let z=J.replace(/\.yaml$/,".yml");if(sU(z))return{canonical:J,found:z};return{canonical:J,found:null}}function aq(){if(OY)return OY;let{canonical:J,found:z}=m2();if(!z)return OY={path:J,exists:!1,doc:null,warnings:[]},OY;let Z=[],Y=null;try{let X=v2(z,"utf8");Y=Bun.YAML.parse(X)}catch(X){let G=X instanceof Error?X.message:String(X);Z.push(`could not read/parse ${z}: ${G}`)}return OY={path:J,exists:!0,doc:Y,warnings:Z},OY}var OY=null;var NB=C(()=>{t1()});function fX(J,z){let Z=`alternating [${J}, ${z}] pairs`;return{layout:Z,validateCount:(Y)=>Y>=2&&Y%2===0?null:`needs ${Z} (an even number of chords \u2014 got ${Y})`}}function a2(J,z){let Z=J.trim().toLowerCase();if(!Z)return{error:"empty chord"};let Y=Z.split("+"),X=Y.pop()??"";if(X===""&&Y.length>0){if(X="+",Y[Y.length-1]==="")Y.pop()}if(!X)return{error:`"${J}": no key after the modifiers`};let G=new Set;for(let j of Y){let B=n2[j];if(!B)return{error:`"${J}": unknown modifier "${j}" (use ctrl / cmd / alt / shift)`};G.add(B)}if(X=i2[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=$2.filter((j)=>G.has(j)).join("+"),H=q?`${q}+${X}`:X;if(X.length>1&&!l2.has(X))return{chord:H,warning:`"${J}": unrecognized key name "${X}" \u2014 the chord may never fire`};return{chord:H}}function _q(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}function _2(J){if(J==="darwin")return["darwin","macos","mac"];if(J==="win32")return["win32","windows"];return[J]}function p2(J){if(!_q(J))return null;let z=J.bindings;if(_q(z))return z;return J}function pq(J,z,Z){let Y=[];if(J===null||J===void 0)return{entries:[],warnings:Y};if(!_q(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(_q(J.bindings))G.push(J.bindings);else Y.push("`bindings:` must be a mapping of id \u2192 chord(s)");for(let q of _2(z)){let H=J[q];if(H===void 0)continue;let j=p2(H);if(j)G.push(j);else Y.push(`\`${q}:\` must be a mapping (or contain a \`bindings:\` mapping)`)}for(let q of G)for(let[H,j]of Object.entries(q)){if(j===null||j===!1||Array.isArray(j)&&j.length===0){X.set(H,[]);continue}let B=typeof j==="string"?[j]:Array.isArray(j)?j:null;if(!B){Y.push(`${H}: expected a chord string, a list of chords, or null \u2014 got ${typeof j}`);continue}let V=[],f=!1;for(let U of B){if(typeof U!=="string"){Y.push(`${H}: chord entries must be strings`),f=!0;continue}let L=a2(U,Z?.chordOptsFor?.(H));if("error"in L){Y.push(`${H}: ${L.error}`),f=!0;continue}if(L.warning)Y.push(`${H}: ${L.warning}`);if(!V.includes(L.chord))V.push(L.chord)}if(V.length===0&&f){Y.push(`${H}: no valid chords \u2014 keeping the default`);continue}X.set(H,V)}return{entries:Array.from(X,([q,H])=>({id:q,keys:H})),warnings:Y}}function r2(J,z){return J===z||J==="global"||z==="global"}function eU(J,z){let Z=[],Y=[];for(let X of z){let G=J.find((f)=>f.id===X.id);if(!G){Z.push(`${X.id}: unknown binding id (press F1 in kobe for the full list)`);continue}let q=CB[X.id];if(q){Z.push(`${X.id}: not customizable \u2014 ${q}`);continue}if(G.keys.length===0){Z.push(`${X.id}: not customizable \u2014 the key is handled outside the keymap (doc-only row)`);continue}let H=c2[X.id];if(H&&X.keys.length>0){let f=H.validateCount(X.keys.length);if(f){Z.push(`${X.id}: ${f} \u2014 keeping the default`);continue}}let j=X.keys.filter((f)=>{if(f.length===1&&d2.has(G.scope))return Z.push(`${X.id}: "${f}" dropped \u2014 a bare character on a ${G.scope}-scope binding would steal typed input (add a modifier)`),!1;return!0});if(j.length===0&&X.keys.length>0){Z.push(`${X.id}: no chords survived validation \u2014 keeping the default`);continue}if(H&&j.length!==X.keys.length){Z.push(`${X.id}: a dropped chord would shift the slot layout (${H.layout}) \u2014 keeping the default`);continue}let B=G.keys,V=G;if(V.keys=j,G.hint)if(j.length===0)V.hint=void 0;else G.hint.keys=j.join("/");Y.push({id:X.id,keys:j,defaultKeys:B})}for(let X of Y)for(let G of X.keys){let q=J.find((H)=>H.id===X.id);if(!q)continue;for(let H of J){if(H.id===X.id)continue;if(!H.keys.includes(G))continue;if(!r2(q.scope,H.scope))continue;Z.push(`${X.id}: "${G}" also fires ${H.id} (${H.scope} scope) \u2014 last registration wins; consider a different chord`)}}return{applied:Y,warnings:Z}}var CB,c2,d2,n2,i2,l2,$2;var rq=C(()=>{CB={"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)"};c2={"sidebar.nav":fX("down","up"),"files.nav":fX("down","up"),"sidebar.search.nav":fX("down","up"),"files.hierarchy":fX("collapse","expand"),"sidebar.view":fX("previous view","next view"),"files.tab":fX("previous tab","next tab")},d2=new Set(["global","workspace","terminal"]),n2={ctrl:"ctrl",control:"ctrl",ctl:"ctrl",cmd:"cmd",command:"cmd",meta:"cmd",super:"cmd",win:"cmd",alt:"alt",option:"alt",opt:"alt",shift:"shift"},i2={esc:"escape",spacebar:"space",pgup:"pageup",pgdn:"pagedown",pgdown:"pagedown"},l2=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}`)]),$2=["ctrl","cmd","alt","shift"]});function WX(J){return J in JK}function gY(J,z){let Z=J.split("+"),Y=Z.pop()??"";if(Y===""&&Z.length>0){if(Y="+",Z[Z.length-1]==="")Z.pop()}let X=new Set(Z);if(X.has("cmd"))return{error:`"${J}": the Command key never reaches tmux \u2014 use ctrl/alt/shift`};let G;if(Y.length===1)G=X.has("shift")?Y.toUpperCase():Y;else{let j=s2[Y];if(!j)return{error:`"${J}": tmux can't bind the key "${Y}"`};G=j}let q=/^f\d+$/.test(Y);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 H="";if(X.has("ctrl"))H+="C-";if(X.has("alt"))H+="M-";if(X.has("shift"))H+="S-";return{key:H+G}}function ZK(){let J={};for(let[Z,Y]of Object.entries(RY)){let X=gY(Y,{allowBare:WX(Z)});if("error"in X)throw Error(`default tmux chord for ${Z} failed to translate: ${X.error}`);J[Z]={chord:Y,key:X.key}}let z=hZ.map((Z)=>{let Y=gY(Z);if("error"in Y)throw Error(`default tmux focus chord ${Z} failed to translate`);return{chord:Z,key:Y.key}});return{binds:J,focus:z,overridden:new Set,warnings:[]}}function bB(J){let z=ZK(),Z=new Set;for(let Y of J){if(!Y.id.startsWith("tmux."))continue;if(Y.id===mz){if(Y.keys.length===0){z.focus=[null,null,null,null],Z.add(mz);continue}if(Y.keys.length!==hZ.length){z.warnings.push(`${mz}: needs exactly 4 chords in order left/down/up/right (got ${Y.keys.length}) \u2014 keeping the default`);continue}let H=[],j=!0;for(let B of Y.keys){let V=gY(B);if("error"in V){z.warnings.push(`${mz}: ${V.error} \u2014 keeping the default`),j=!1;break}H.push({chord:B,key:V.key})}if(!j)continue;z.focus=H,Z.add(mz);continue}if(!(Y.id in RY)){z.warnings.push(`${Y.id}: unknown tmux binding id`);continue}let X=Y.id;if(Y.keys.length===0){z.binds[X]=null,Z.add(X);continue}if(Y.keys.length>1)z.warnings.push(`${X}: tmux bindings take ONE chord \u2014 using "${Y.keys[0]}", ignoring the rest`);let G=Y.keys[0],q=gY(G,{allowBare:WX(X)});if("error"in q){z.warnings.push(`${X}: ${q.error} \u2014 keeping the default`);continue}if(G!==RY[X])Z.add(X);z.binds[X]={chord:G,key:q.key}}return z.overridden=Z,z}function kB(J){return J.startsWith("tmux.")?{allowShiftCharacter:!0}:{}}function YK(){AY=null}function oq(){if(AY)return AY;let J=aq();if(!J.exists||J.doc===null)return AY=ZK(),AY;let z=pq(J.doc,process.platform,{chordOptsFor:kB}),Z=z.warnings.filter((X)=>X.startsWith("tmux.")),Y=bB(z.entries);Y.warnings=[...Z,...Y.warnings];for(let X of Y.warnings)console.warn(`[kobe/keybindings] ${X}`);return AY=Y,AY}var o2,JK,zK,RY,mz="tmux.focus",hZ,s2,AY=null;var sq=C(()=>{NB();rq();o2={"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"},JK={"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"},zK=["F6","F7","F8","F9","F10","F11"],RY={...o2,...JK};hZ=["ctrl+h","ctrl+j","ctrl+k","ctrl+l"],s2={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 uG(J,z){let Z=null;for(let X=0;X<24;X++){let G=await VX(J);if(G){if(!z)return{pane:G,ready:!0};let q=(await UX(G)).trim();if(q.length>0&&q===Z)return{pane:G,ready:!0};Z=q}await XK(250)}return{pane:await VX(J)||await IB(J),ready:!1}}async function EG(J,z){let Z=`kobe-api-${J.replace(/[^A-Za-z0-9]/g,"")}`;await n0(["set-buffer","-b",Z,"--",z]),await n0(["paste-buffer","-p","-d","-b",Z,"-t",J]),await XK(t2),await wG(J,"Enter")}async function GK(J,z){let{pane:Z}=await uG(J,!0);if(!Z)return;await EG(Z,z.text)}var XK=(J)=>new Promise((z)=>setTimeout(z,J)),t2=150;var tq=C(()=>{m1()});function QK(J,z){if(J===null)return{kind:"create",reason:"no session with this name \u2014 build fresh"};let Z=J.worktree===z.cwd,Y=!z.vendor||J.vendor===z.vendor;if(J.claudePaneAlive&&Z&&Y)return{kind:"reuse",reason:"healthy: engine pane alive, worktree + vendor match"};if(Z&&!Y&&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(Z&&Y&&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(!Z)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(!Y)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 KX;var eq=C(()=>{KX={$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 DX;var JH=C(()=>{DX={$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 LX;var zH=C(()=>{LX={$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 MX;var ZH=C(()=>{MX={$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 FX;var YH=C(()=>{FX={$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 OX;var XH=C(()=>{OX={$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 AX;var GH=C(()=>{AX={$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 qK;var HK=C(()=>{eq();JH();zH();ZH();YH();XH();GH();qK={claude:KX,conductor:DX,nord:MX,opencode:FX,dracula:LX,tokyonight:AX,"osaka-jade":OX}});function QN(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 Z=z[1];if(Z.length===3){let[Y,X,G]=Z;return`#${Y}${Y}${X}${X}${G}${G}`.toLowerCase()}return`#${Z.slice(0,6)}`.toLowerCase()}function jK(J,z,Z="dark"){let Y=J.defs??{};function X(q,H){if(typeof q==="string"){if(q==="transparent"||q==="none")return null;if(q.startsWith("#"))return QN(q);if(H.includes(q))return null;let B=Y[q]??J.theme[q];if(B===void 0)return null;return X(B,[...H,q])}if(!q||typeof q!=="object")return null;let j=q[Z];return typeof j==="string"?X(j,H):null}let G=J.theme[z];if(G===void 0)return null;return X(G,[z])}function QH(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}function qH(J){if(!QH(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 Z=z.theme;if(!QH(Z))return{ok:!1,reason:"`theme` must be an object map"};if("defs"in z&&z.defs!==void 0){if(!QH(z.defs))return{ok:!1,reason:"`defs` must be an object map"};for(let[Y,X]of Object.entries(z.defs))if(typeof X!=="string")return{ok:!1,reason:`defs.${Y} must be a string (hex like "#abc" or a ref name)`}}for(let[Y,X]of Object.entries(Z)){if(typeof X==="string")continue;if(!QH(X))return{ok:!1,reason:`theme.${Y} 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.${Y}.dark must be a string`};if(typeof G.light!=="string")return{ok:!1,reason:`theme.${Y}.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 SB=()=>{};import{readFileSync as qN,readdirSync as HN}from"fs";import{join as BK}from"path";function RX(){return BK(KJ(),"themes")}function PG(){let J=RX(),z;try{z=HN(J)}catch{return[]}let Z=[];for(let Y of z){if(!Y.endsWith(".json"))continue;let X=BK(J,Y),G;try{let j=qN(X,"utf8");G=JSON.parse(j)}catch(j){let B=j instanceof Error?j.message:String(j);console.warn(`[kobe] skipping user theme ${X}: invalid JSON \u2014 ${B}`);continue}let q=qH(G);if(!q.ok){console.warn(`[kobe] skipping user theme ${X}: ${q.reason}`);continue}let H=Y.slice(0,-5);Z.push({name:H,theme:q.theme})}return Z}var HH=C(()=>{t1();SB()});import{readFileSync as jN}from"fs";function fN(){try{let J=JSON.parse(jN(tJ(),"utf8")),z=typeof J.activeTheme==="string"&&J.activeTheme?J.activeTheme:"claude",Z=typeof J.focusAccent==="string"&&BN.includes(J.focusAccent)?J.focusAccent:"primary";return{themeName:z,focusAccentSlot:Z,enabled:J.tmuxChromeTheme!=="off"&&J.tmuxBorderTheme!=="off"}}catch{return{themeName:"claude",focusAccentSlot:"primary",enabled:!0}}}function WN(J){return PG().find((Z)=>Z.name===J)?.theme??qK[J]??null}function Nz(J,...z){for(let Z of z){let Y=jK(J,Z);if(Y)return Y}return null}function fK(J,z){let Z=Nz(J,"text"),Y=Nz(J,"background"),X=Nz(J,"textMuted","text"),G=Nz(J,"backgroundPanel","background"),q=Nz(J,"backgroundElement","backgroundPanel","background"),H=Nz(J,"backgroundMenu","backgroundElement","backgroundPanel","background"),j=Nz(J,"selectedListItemText","background"),B=Nz(J,z,"primary","borderActive","border","text");return{border:Nz(J,"border","text"),activeBorder:B,statusBg:G,statusFg:X,statusMutedFg:X,windowFg:X,currentWindowBg:q,currentWindowFg:B,activityFg:Nz(J,"info","primary","text"),bellFg:Nz(J,"warning","error","primary","text"),messageBg:H,messageFg:Z,messageCommandFg:B,modeBg:B,modeFg:j??Y}}function Gz(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 VK(J){let z=Gz({bg:J.statusBg,fg:J.statusFg}),Z=Gz({bg:J.statusBg,fg:J.statusMutedFg}),Y=Gz({bg:J.statusBg,fg:J.windowFg});return[{key:"border",option:"pane-border-style",showFlag:"-gwqv",setFlag:"-gw",unsetFlag:"-gwu",value:Gz({fg:J.border})},{key:"active",option:"pane-active-border-style",showFlag:"-gwqv",setFlag:"-gw",unsetFlag:"-gwu",value:Gz({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:Z},{key:"status-right",option:"status-right-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Z},{key:"window",option:"window-status-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Y},{key:"current-window",option:"window-status-current-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Gz({bg:J.currentWindowBg,fg:J.currentWindowFg,attrs:["bold"]})},{key:"activity-window",option:"window-status-activity-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Gz({bg:J.statusBg,fg:J.activityFg})},{key:"bell-window",option:"window-status-bell-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Gz({bg:J.statusBg,fg:J.bellFg,attrs:["bold"]})},{key:"last-window",option:"window-status-last-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Gz({bg:J.statusBg,fg:J.statusFg})},{key:"message",option:"message-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Gz({bg:J.messageBg,fg:J.messageFg})},{key:"message-command",option:"message-command-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Gz({bg:J.messageBg,fg:J.messageCommandFg,attrs:["bold"]})},{key:"mode",option:"mode-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Gz({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 VN(J){let z=new Set(J.marker.split(",").map((G)=>G.trim()).filter(Boolean)),Z=[],Y=[];for(let G of VK(J.hexes))if(G.value){if((J.current[G.key]??"")!==G.value)Z.push(["set-option",G.setFlag,G.option,G.value]);Y.push(G.key)}else if(z.has(G.key))Z.push(["set-option",G.unsetFlag,G.option]);let X=Y.join(",");if(X!==J.marker)Z.push(X?["set-option","-g",yB,X]:["set-option","-gu",yB]);return Z}async function WK(J){let{code:z,stdout:Z}=await _0(J);return z===0?Z.trim():""}async function NY(){try{let J=fN(),z=J.enabled?WN(J.themeName):null,Z=z?fK(z,J.focusAccentSlot):fK({theme:{}},J.focusAccentSlot),Y=VK(Z),[X,...G]=await Promise.all([WK(["show-options","-gqv",yB]),...Y.map((j)=>WK(["show-options",j.showFlag,j.option]))]),q=Object.fromEntries(Y.map((j,B)=>[j.key,G[B]??""])),H=VN({marker:X,current:q,hexes:Z});if(H.length>0)await r1(H)}catch{}}var yB="@kobe_border_theme",BN;var jH=C(()=>{t1();m1();HK();HH();BN=["primary","success","info"]});function UK(){return dJ(BH,!0)}function fH(){return dJ(KK,!1)}function DK(J){pQ(KK,J)}var BH="zen.keepTasks",KK="zen.active";var TB=C(()=>{Ez()});var WH={};H1(WH,{recordGen:()=>vZ,isLatestGen:()=>AK,genAgeMs:()=>ON,coalesceLayoutWork:()=>AN,RESIZE_GUARD_MS:()=>FN,LAYOUT_COALESCE_MS:()=>FK});import{createHash as UN,randomUUID as KN}from"crypto";import{mkdirSync as DN,readFileSync as LK,renameSync as LN,writeFileSync as MN}from"fs";import{join as MK}from"path";function OK(){return MK(KJ(),"layout-coord")}function xB(J,z){let Z=UN("sha1").update(J).digest("hex").slice(0,16);return MK(OK(),`${Z}.${z}`)}function vZ(J,z){let Z=KN();try{DN(OK(),{recursive:!0});let Y=xB(J,z),X=`${Y}.${Z}.tmp`;MN(X,`${Date.now()}
41
+ ${Z}`),LN(X,Y)}catch{}return Z}function AK(J,z,Z){try{return LK(xB(J,z),"utf8").split(`
42
+ `)[1]?.trim()===Z}catch{return!0}}function ON(J,z,Z=Date.now()){try{let Y=Number.parseInt(LK(xB(J,z),"utf8").split(`
43
+ `)[0]??"",10);return Number.isFinite(Y)?Z-Y:Number.POSITIVE_INFINITY}catch{return Number.POSITIVE_INFINITY}}async function AN(J,z,Z,Y=FK){let X=vZ(J,z);if(Y>0)await new Promise((G)=>setTimeout(G,Y));if(!AK(J,z,X))return;await Z()}var FK=120,FN=400;var gX=C(()=>{t1()});function gN(J){let z=[];for(let Z of J.split(`
44
+ `)){let Y=Z.trim();if(!Y)continue;let[X,G,q,H,j]=Y.split("\t");if(!X||!G||!q)continue;let B=Number.parseInt(j?.trim()??"",10);z.push({windowId:X.trim(),paneId:G.trim(),role:q.trim(),version:H?.trim()??"",...Number.isFinite(B)?{paneWidth:B}:{}})}return z}function NN(J){let z=J.indexOf("-t");return z>=0&&z+1<J.length?J[z+1]??null:null}function CN(J,z){return J.filter((Z)=>{let Y=NN(Z);return Y===null||z.has(Y)})}function RK(J,z){let Z=new Map;for(let X of J){let G=Z.get(X.windowId)??[];G.push(X),Z.set(X.windowId,G)}let Y=[];for(let X of Z.values()){let G=X.find((B)=>B.role==="claude")?.paneId,q=X.find((B)=>B.role==="tasks"),H=X.find((B)=>B.role==="ops");if(q&&(z.force||q.version!==z.currentVersion))Y.push({role:"tasks",paneId:q.paneId});let j=z.force?!0:G&&(z.vendorChanged||H?.version!==z.currentVersion);if(H&&j)Y.push({role:"ops",paneId:H.paneId,claudePaneId:G??null})}return Y}async function VH(J){let{code:z,stdout:Z}=await _0(["list-panes","-s","-t",`=${J}`,"-F",RN]);if(z!==0)return null;return gN(Z)}async function gK(J,z){if(z.length===0)return;let Z=await VH(J),Y=Z?CN(z,new Set(Z.map((X)=>X.paneId))):z;if(Y.length>0)await r1(Y)}function NK(J,z){let Z=u1(),Y=p1(),X=[];for(let G of J){let q=G.role==="tasks"?xZ(Z,{initialTaskId:z.taskId}):tY({cwd:z.cwd,taskId:z.taskId,claudePaneId:G.claudePaneId,cliInvocation:Z,vendor:z.vendor});X.push(["respawn-pane","-k","-t",G.paneId,"-c",l1(z.cwd),xJ(Y+q)],["set-option","-p","-t",G.paneId,"@kobe_role",G.role],["set-option","-p","-t",G.paneId,Cz,J1])}return X}function bN(J,z){if(J===0)return"no-engine-pane";return z===0?"switched":"respawn-failed"}async function CK(J,z,Z,Y,X){let G=await VH(J);if(!G)return"no-engine-pane";let q=G.filter((f)=>f.role==="claude");if(q.length===0)return"no-engine-pane";let H=l1(z),j=sY(p1(),u1(),J),B=[];for(let f of q){let U=BX(Z,X),L=xJ(jX(TJ(U.argv),Y,z),j);B.push(["respawn-pane","-k","-c",H,"-t",f.paneId,L]),B.push(U.sessionId?["set-window-option","-t",f.paneId,cz,U.sessionId]:["set-window-option","-u","-t",f.paneId,cz])}let V=await r1(B);return bN(q.length,V)}async function bK(){return(await dz()).rightColumnResizeArgs}async function uB(J,z={}){let{tasksWidth:Z,rightColumnResizeArgs:Y}=await dz(),X=await VH(J);if(!X)return{rows:null,commands:[]};let G=[];for(let q of X)if(q.role==="tasks"&&(z.force||q.paneWidth!==Z))G.push(["resize-pane","-t",q.paneId,"-x",`${Z}`]);if(Y.length>0){for(let q of X)if(q.role==="ops")G.push(["resize-pane","-t",q.paneId,...Y])}return{rows:X,commands:G}}async function CY(J,z){vZ(J,"resize");let{rows:Z,commands:Y}=await uB(J);if(!Z)return;let X=[...Y];if(z)X.push(...NK(RK(Z,{currentVersion:J1,force:!1,vendorChanged:z.vendorChanged}),z));await gK(J,X)}async function kK(J){if(!await M1(J))return;await CY(J)}async function EB(J){let{code:z,stdout:Z}=await _0(["list-panes","-t",`=${J}`,"-F",`#{@kobe_role} #{pane_width} #{pane_height} #{window_width} #{window_height} #{window_zoomed_flag} #{${Lz}} #{${yJ}}`]);if(z!==0)return;let Y=Z.split(`
45
+ `).map((B)=>B.split("\t")).filter((B)=>(B[0]?.trim()??"")!=="");if(Y.length===0)return;if(Y.some((B)=>B[5]?.trim()==="1"))return;if(Y.some((B)=>(B[6]?.trim()??"")!==""))return;if(Y.some((B)=>(B[7]?.trim()??"")!==""))return;if(!Y.some((B)=>B[0]?.trim()==="shell"))return;let X=Number.parseInt(Y[0][3]?.trim()??"",10),G=Number.parseInt(Y[0][4]?.trim()??"",10),q=[],H=Y.find(([B])=>B?.trim()==="tasks");if(H){let B=Number.parseInt(H[1]?.trim()??"",10);if(Number.isFinite(B)&&B>0)q.push(["set-option","-s",Bq,`${S9(B)}`])}let j=Y.find(([B])=>B?.trim()==="ops");if(j&&Number.isFinite(X)&&X>0&&Number.isFinite(G)&&G>0){let B=Number.parseInt(j[1]?.trim()??"",10),V=Number.parseInt(j[2]?.trim()??"",10),f=Number.isFinite(B)?qY(100*B/X):null,U=Number.isFinite(V)?qY(100*V/G):null;if(f!==null)q.push(["set-option","-s",fq,`${f}`]);if(U!==null)q.push(["set-option","-s",Wq,`${U}`])}if(q.length>0)await r1(q)}function kN(J){let z=J.split(`
46
+ `).map((Y)=>Y.split("\t")).filter((Y)=>(Y[0]?.trim()??"")!=="");if(z.length===0)return!1;if(z.some((Y)=>Y[1]?.trim()==="1"))return!1;if(z.some((Y)=>(Y[2]?.trim()??"")!==""))return!1;if(z.some((Y)=>(Y[3]?.trim()??"")!==""))return!1;let Z=new Set(z.map((Y)=>Y[0]?.trim()));return Z.has("tasks")&&Z.has("ops")&&Z.has("shell")}async function IK(J){let{code:z,stdout:Z}=await _0(["list-panes","-t",`=${J}`,"-F",`#{@kobe_role} #{window_zoomed_flag} #{${Lz}} #{${yJ}}`]);if(z!==0||!kN(Z))return;await EB(J)}async function NX(J){let z=await wJ(J,["@kobe_worktree","@kobe_task","@kobe_vendor"]),Z=z["@kobe_worktree"]||process.cwd(),Y=z["@kobe_task"]||void 0,X=z["@kobe_vendor"]||void 0,G=await VH(J);if(!G)return;let q=NK(RK(G,{currentVersion:J1,force:!0}),{cwd:Z,taskId:Y,vendor:X});await gK(J,q),await NY()}var Cz="@kobe_pane_version",RN;var hG=C(()=>{GZ();Xz();Az();m1();Mz();jH();bJ();KY();gX();RN=`#{window_id} #{pane_id} #{@kobe_role} #{${Cz}} #{pane_width}`});var lB={};H1(lB,{syncSessionZen:()=>DH,runLayoutAction:()=>bY,resolveShellPane:()=>UH,planWorkspaceSplit:()=>yK,parseLayoutPaneRows:()=>SK,expandedTerminalHeightPercent:()=>TK,engineTabExit:()=>$N,applyZenToNewWindow:()=>iB});function SK(J){let z=[];for(let Z of J.split(`
47
+ `)){let Y=Z.trim();if(!Y)continue;let[X,G,q,H,j,B,V]=Y.split("\t");if(!X)continue;let f=Number.parseInt(H??"",10),U=Number.parseInt(j??"",10),L=Number.parseInt(B??"",10),O=Number.parseInt(V??"",10);z.push({paneId:X.trim(),role:G?.trim()??"",active:q?.trim()==="1",paneWidth:Number.isFinite(f)?f:0,paneHeight:Number.isFinite(U)?U:0,windowWidth:Number.isFinite(L)?L:0,windowHeight:Number.isFinite(O)?O:0})}return z}function yK(J){let z=J.find((Y)=>Y.role===HY);if(!z)return{kind:"missing-engine"};let Z=J.filter((Y)=>Y.role===UG);if(Z.length+1>=I9)return{kind:"maxed"};if(Z.length===0)return{kind:"split",targetPane:z.paneId,direction:"-h"};if(Z.length===1)return{kind:"split",targetPane:Z[0]?.paneId??z.paneId,direction:"-v"};return{kind:"split",targetPane:z.paneId,direction:"-v"}}function UH(J){return J.find((z)=>z.role===Dz)??J.find((z)=>z.role==="")}function TK(J){return 100-(qY(J??Number.NaN)??DG)}async function $J(J,z){let Z=z?.trim()||`=${J}`,{code:Y,stdout:X}=await _0(["list-panes","-t",Z,"-F",IN]);return Y===0?SK(X):null}async function wB(J){let{code:z,stdout:Z}=await _0(["list-windows","-t",`=${J}`,"-F","#{window_active}\t#{window_id}"]);if(z!==0)return"";for(let Y of Z.split(`
48
+ `)){let[X,G]=Y.split("\t");if(X?.trim()==="1"&&G?.trim())return G.trim()}return""}async function BZ(J,z){let{code:Z,stdout:Y}=await _0(["show-options","-wqv","-t",J,z]);return Z===0?Y.trim():""}async function hB(J,z,Z){await n0(["set-window-option","-t",J,z,Z])}async function mZ(J,z){await n0(["set-window-option","-u","-t",J,z])}async function vB(J){let{code:z,stdout:Z}=await _0(["display-message","-p","-t",J,"#{pane_id}"]);return z===0&&Z.trim()===J}async function P1(J,z){await n0(["display-message","-t",J,z])}async function KH(J){let z=await wJ(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 SN(J){let z=u1(),Z=p1();return xJ(Z+tY({cwd:J.cwd,taskId:J.taskId,claudePaneId:J.enginePaneId,cliInvocation:z,vendor:J.vendor}))}async function yN(J,z){return z?.trim()||await wB(J)}async function TN(J,z){let Z=await $J(J,z);if(!Z)return;let Y=yK(Z);if(Y.kind==="missing-engine"){await P1(z,"kobe: no engine pane in this window");return}if(Y.kind==="maxed"){await P1(z,`kobe: workspace split limit is ${I9} panes`);return}let{cwd:X}=await KH(J),{code:G,stdout:q}=await _0(["split-window",Y.direction,"-t",Y.targetPane,"-l","50%","-c",l1(X),"-P","-F","#{pane_id}",xJ("true")]),H=q.trim();if(G!==0||!H)return;await r1([["set-option","-p","-t",H,"@kobe_role",UG],["select-pane","-t",H]])}async function xN(J,z){let Z=await $J(J,z);if(!Z)return;let Y=Z.filter((q)=>q.role===UG);if(Y.length===0){await P1(z,"kobe: no workspace split to close");return}let G=Y.find((q)=>q.active)??Y[Y.length-1];if(!G)return;await n0(["kill-pane","-t",G.paneId])}async function uN(J,z){let Z=await $J(J,z);if(!Z)return;let Y=Z.filter((X)=>X.role===UG);if(Y.length===0){await P1(z,"kobe: no workspace splits to reset");return}await r1(Y.map((X)=>["kill-pane","-t",X.paneId]))}async function xK(){return(await dz()).tasksWidth}async function EN(J){let{cwd:z,taskId:Z}=await KH(J),Y=u1(),X=p1();return{cwd:z,command:xJ(X+xZ(Y,{initialTaskId:Z}))}}async function uK(J,z){let Z=await $J(J,z);if(!Z)return;let Y=Z.find((A)=>A.role===Kz);if(Y){await n0(["kill-pane","-t",Y.paneId]);return}let X=UH(Z),G=Z.find((A)=>A.role===HY);if(!G){await P1(z,"kobe: cannot restore file pane in this layout");return}let{cwd:q,taskId:H,vendor:j}=await KH(J),B=SN({cwd:q,taskId:H,vendor:j,enginePaneId:G.paneId}),V=X?["split-window","-v","-b","-t",X.paneId,"-l",`${await wN()}%`,"-c",l1(q),"-P","-F","#{pane_id}",B]:["split-window","-h","-t",G.paneId,"-l",`${await mB()}%`,"-c",l1(q),"-P","-F","#{pane_id}",B],{code:f,stdout:U}=await _0(V),L=U.trim();if(f!==0||!L)return;let O=[["set-option","-p","-t",L,"@kobe_role",Kz],["set-option","-p","-t",L,Cz,J1]];if(X?.role==="")O.push(["set-option","-p","-t",X.paneId,"@kobe_role",Dz]);await r1(O)}async function wN(){return(await dz()).opsHeightPct}async function mB(){return(await dz()).rightColumnWidthPct}async function EK(){return TK((await dz()).opsHeightPct)}async function PN(J){let{code:z,stdout:Z}=await _0(["list-windows","-t",`=${J}`,"-F","#{window_index}"]);if(z!==0)return new Set;return new Set(Z.split(`
49
+ `).map((Y)=>Number.parseInt(Y.trim(),10)).filter((Y)=>Number.isFinite(Y)))}async function wK(J,z){let Z=await PN(J),Y=W7(z);while(Z.has(Y))Y++;return Y}async function PK(J){let z=KG(J);if(await M1(z))return z;return await n0(["new-session","-d","-s",z,"-n","hidden-panes","-c",l1(process.cwd()),"while :; do sleep 3600; done"]),z}async function cB(J){let z=KG(J);if(!await M1(z))return;let{code:Z,stdout:Y}=await _0(["list-panes","-s","-t",`=${z}`,"-F","#{@kobe_role}"]);if(Z!==0)return;if(!Y.split(`
50
+ `).some((G)=>{let q=G.trim();return q===Dz||q===zz}))await n0(["kill-session","-t",`=${z}`])}async function hN(J,z){await hK(J,z,Lz)}async function vN(J,z){await hK(J,z,yJ)}async function hK(J,z,Z){let Y=await BZ(z,Z);if(!Y)return;if(await vB(Y))await n0(["kill-pane","-t",Y]);await mZ(z,Z)}async function PB(J,z){await hN(J,z),await vN(J,z),await cB(J)}function vK(J){return J.find((z)=>z.role===HY)??J[0]}async function dB(J,z,Z){let Y=vK(Z);if(!Y)return await P1(z,"kobe: cannot restore Tasks pane in this layout"),!1;let X=await xK(),{cwd:G,command:q}=await EN(J),{code:H,stdout:j}=await _0(["split-window","-h","-b","-t",Y.paneId,"-l",`${X}`,"-c",l1(G),"-P","-F","#{pane_id}",q]),B=j.trim();if(H!==0||!B)return!1;return await r1([["set-option","-p","-t",B,"@kobe_role",zz],["set-option","-p","-t",B,Cz,J1],["select-pane","-t",B]]),await mZ(z,yJ),await P1(z,"kobe: Tasks pane restored"),!0}async function mK(J,z,Z){let Y=await PK(J),X=await wK(Y,z),{code:G,stdout:q}=await _0(["break-pane","-d","-s",Z.paneId,"-t",`${Y}:${X}`,"-P","-F","#{pane_id}"]),H=q.trim()||Z.paneId;if(G!==0||!H){await P1(z,"kobe: could not hide Tasks pane");return}await hB(z,yJ,H),await P1(z,"kobe: Tasks pane hidden")}async function nB(J,z,Z){let Y=await $J(J,z);if(!Y)return;if(!await vB(Z)){await mZ(z,yJ);let q=Y.find((H)=>H.role===zz);if(q){await n0(["select-pane","-t",q.paneId]);return}await dB(J,z,Y);return}let X=vK(Y);if(!X){await P1(z,"kobe: cannot restore Tasks pane in this layout");return}if(await n0(["join-pane","-h","-b","-s",Z,"-t",X.paneId,"-l",`${await xK()}`])!==0){await P1(z,"kobe: could not restore Tasks pane");return}await r1([["set-option","-p","-t",Z,"@kobe_role",zz],["set-option","-p","-t",Z,Cz,J1],["select-pane","-t",Z]]),await mZ(z,yJ),await cB(J),await P1(z,"kobe: Tasks pane restored")}async function mN(J,z){let Z=await BZ(z,yJ);if(Z){await nB(J,z,Z);return}let Y=await $J(J,z);if(!Y)return;let X=Y.find((G)=>G.role===zz);if(X){await mK(J,z,X);return}await dB(J,z,Y)}async function cN(J,z){let Z=await BZ(z,yJ);if(Z){await nB(J,z,Z);return}let Y=await $J(J,z);if(!Y)return;let X=Y.find((G)=>G.role===zz);if(X){await n0(["select-pane","-t",X.paneId]);return}await dB(J,z,Y)}async function cK(J,z,Z){if(Z.role==="")await n0(["set-option","-p","-t",Z.paneId,"@kobe_role",Dz]);let Y=await PK(J),X=await wK(Y,z),{code:G,stdout:q}=await _0(["break-pane","-d","-s",Z.paneId,"-t",`${Y}:${X}`,"-P","-F","#{pane_id}"]),H=q.trim()||Z.paneId;if(G!==0||!H){await P1(z,"kobe: could not hide terminal pane");return}await hB(z,Lz,H),await P1(z,"kobe: Terminal pane hidden")}async function dK(J,z,Z){let Y=Z.find((V)=>V.role===Kz),X=Z.find((V)=>V.role===HY);if(!Y&&!X)return await P1(z,"kobe: cannot restore terminal pane in this layout"),!1;let{cwd:G}=await KH(J),q=Y?["split-window","-v","-t",Y.paneId,"-l",`${await EK()}%`,"-c",l1(G),"-P","-F","#{pane_id}"]:["split-window","-h","-t",X?.paneId??"","-l",`${await mB()}%`,"-c",l1(G),"-P","-F","#{pane_id}"],{code:H,stdout:j}=await _0(q),B=j.trim();if(H!==0||!B)return!1;return await n0(["set-option","-p","-t",B,"@kobe_role",Dz]),await mZ(z,Lz),await P1(z,"kobe: Terminal pane restored"),!0}async function nK(J,z,Z){let Y=await $J(J,z);if(!Y)return;if(!await vB(Z)){await mZ(z,Lz),await dK(J,z,Y);return}let X=Y.find((B)=>B.role===Kz),G=Y.find((B)=>B.role===HY);if(!X&&!G){await P1(z,"kobe: cannot restore terminal pane in this layout");return}let q=X?["join-pane","-v","-s",Z,"-t",X.paneId,"-l",`${await EK()}%`]:["join-pane","-h","-s",Z,"-t",G?.paneId??"","-l",`${await mB()}%`];if(await n0(q)!==0){await P1(z,"kobe: could not restore terminal pane");return}await n0(["set-option","-p","-t",Z,"@kobe_role",Dz]),await mZ(z,Lz),await cB(J),Y=await $J(J,z);let j=Y?.find((B)=>B.paneId===Z);if(j)await n0(["select-pane","-t",j.paneId]);await P1(z,"kobe: Terminal pane restored")}async function dN(J,z){let Z=await BZ(z,Lz);if(Z){await nK(J,z,Z);return}let Y=await $J(J,z);if(!Y)return;let X=UH(Y);if(X){await cK(J,z,X);return}await dK(J,z,Y)}async function nN(J){let z=fH();if(DK(!z),z){await aK(J);return}await $K(J)}async function DH(J){if(!await M1(J))return;let z=fH(),Z=(await kY(J,oY)).length>0;if(z===Z)return;if(z)await $K(J);else await aK(J)}async function iK(J){let{code:z,stdout:Z}=await _0(["list-windows","-t",`=${J}`,"-F","#{window_id}"]);if(z!==0)return[];return Z.split(`
51
+ `).map((Y)=>Y.trim()).filter((Y)=>Y.length>0)}async function lK(J,z){return!!(await $J(J,z))?.some((Y)=>Y.role===HY)}async function $K(J){let z=await iK(J);for(let Z of z){if(!await lK(J,Z))continue;if(await BZ(Z,TZ))continue;await _K(J,Z)}await fZ(J,oY,"1"),await P1(`=${J}`,"kobe: Zen mode on \u2014 all tabs")}async function aK(J){let z=await iK(J);for(let Z of z){let Y=await BZ(Z,TZ);if(Y)await iN(J,Z,Y)}await n0(["set-option","-u","-t",J,oY]),await P1(`=${J}`,"kobe: Zen mode off \u2014 all tabs")}async function iB(J,z){let Z=(await kY(J,oY)).length>0;if(!Z&&!fH())return;if(!Z)await fZ(J,oY,"1");if(await BZ(z,TZ))return;if(!await lK(J,z))return;await _K(J,z)}async function _K(J,z){let Z=await $J(J,z);if(!Z)return;let Y=[],X=Z.find((q)=>q.role===Kz);if(X)await n0(["kill-pane","-t",X.paneId]),Y.push(Kz);let G=UH(Z);if(G)await cK(J,z,G),Y.push(Dz);if(!UK()){let q=Z.find((H)=>H.role===zz);if(q)await mK(J,z,q),Y.push(zz)}if(Y.length===0){await P1(z,"kobe: already focused \u2014 nothing to hide");return}await hB(z,TZ,Y.join(",")),await P1(z,"kobe: Zen mode on")}async function iN(J,z,Z){let Y=new Set(Z.split(",").map((X)=>X.trim()));if(Y.has(zz)){let X=await BZ(z,yJ);if(X)await nB(J,z,X)}if(Y.has(Kz)){let X=await $J(J,z);if(X&&!X.some((G)=>G.role===Kz))await uK(J,z)}if(Y.has(Dz)){let X=await BZ(z,Lz);if(X)await nK(J,z,X)}await mZ(z,TZ),await P1(z,"kobe: Zen mode off")}async function pK(J){let{code:z,stdout:Z}=await _0(["list-windows","-t",`=${J}`,"-F","#{window_id}"]);if(z!==0)return 0;return Z.split(`
52
+ `).filter((Y)=>Y.trim().length>0).length}async function lN(J,z){if(await pK(J)<=1){await P1(z,"Cannot close the only ChatTab");return}await PB(J,z),await n0(["kill-window","-t",z])}async function $N(J){if(!await M1(J))return;let z=await wB(J);if(!z)return;if(await pK(J)>1){await PB(J,z),await n0(["kill-window","-t",z]);return}let{newChatTab:Z}=await Promise.resolve().then(() => (LH(),rK));if(await Z(J),await wB(J)!==z)await PB(J,z),await n0(["kill-window","-t",z])}async function bY(J,z,Z={}){if(!await M1(J))return;let Y=await yN(J,Z.windowId);if(!Y)return;switch(z){case"workspace-split":await TN(J,Y);return;case"workspace-close":await xN(J,Y);return;case"workspace-reset":await uN(J,Y);return;case"tasks-toggle":await mN(J,Y);return;case"tasks-restore":await cN(J,Y);return;case"ops-toggle":await uK(J,Y);return;case"terminal-toggle":await dN(J,Y);return;case"zen-toggle":await nN(J);return;case"chat-tab-close":await lN(J,Y);return}}var IN="#{pane_id}\t#{@kobe_role}\t#{pane_active}\t#{pane_width}\t#{pane_height}\t#{window_width}\t#{window_height}";var cZ=C(()=>{GZ();Az();TB();m1();Mz();bJ();KY();hG()});var rK={};H1(rK,{quickCreate:()=>_B,openUpdateTab:()=>pG,openSettingsTab:()=>$G,openNewTaskTab:()=>_G,openHelpTab:()=>aG,newChatTab:()=>aB,kobeStatusRight:()=>iG,chatTabSwitchBindings:()=>mG,chatTabRenameBinding:()=>dG,chatTabCloseBinding:()=>cG,chatTabChooseEngineBindings:()=>nG,buildPanesAround:()=>FH,CHAT_TAB_STATUS_FORMAT:()=>CX,CHAT_TAB_STATUS_CURRENT_FORMAT:()=>lG,CHAT_TAB_STATE_OPTION:()=>MH,CHAT_TAB_ENGINE_PROMPT:()=>vG});function mG(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 cG(J,z="kill-window"){return["bind-key","-n",J,"if-shell","-F","#{>:#{session_windows},1}",z,"display-message 'Cannot close the only ChatTab'"]}function dG(J){return["bind-key","-n",J,"command-prompt","-I","#{window_name}","rename-window -- '%%'"]}function nG(J){return[["bind-key","-n",J,"command-prompt","-p",vG],["bind-key","T","command-prompt","-p",vG]]}function $B(J){return J.startsWith("C-")&&J.length===3?`^${J.slice(2)}`:J}function iG(J){return`${[J.focusLeft?`${$B(J.focusLeft)} tasks`:null,J.detach?`${$B(J.detach)} detach`:null,J.newTab?`${$B(J.newTab)} tab`:null,J.layoutSplits?`prefix ${J.layoutSplits} splits`:null,J.layoutPanes?`prefix ${J.layoutPanes} panes`:null].filter((Z)=>Z!==null).join(" ")} `}async function FH(J,z){let Z=p1(),Y=await OH(),X=xJ(z.opsCommand??Z+tY({cwd:z.cwd,taskId:z.taskId,claudePaneId:J,cliInvocation:z.inv,vendor:z.vendor})),{stdout:G}=await rG([["set-option","-p","-t",J,"@kobe_role","claude"],["set-window-option","-t",J,MH,"idle"],["split-window","-h","-b","-t",J,"-l",`${Y}`,"-c",l1(z.cwd),"-P","-F","tasks=#{pane_id}",xJ(Z+xZ(z.inv,{initialTaskId:z.taskId}))],["split-window","-h","-t",J,"-l",`${100-y9}%`,"-c",l1(z.cwd),"-P","-F","ops=#{pane_id}",X],["split-window","-v","-l",`${100-DG}%`,"-c",l1(z.cwd),"-P","-F","shell=#{pane_id}"],["select-pane","-t",J]]),q=Object.fromEntries(G.split(`
53
+ `).map((H)=>H.trim()).filter(Boolean).map((H)=>H.split("=",2)));if(await r1([...q.tasks?[["set-option","-p","-t",q.tasks,"@kobe_role",zz]]:[],...q.tasks?[["set-option","-p","-t",q.tasks,Cz,J1]]:[],...q.ops?[["set-option","-p","-t",q.ops,"@kobe_role",Kz]]:[],...q.ops?[["set-option","-p","-t",q.ops,Cz,J1]]:[],...q.shell?[["set-option","-p","-t",q.shell,"@kobe_role",Dz]]:[]]),q.ops){let H=await bK();if(H.length>0)await n0(["resize-pane","-t",q.ops,...H])}}async function aB(J,z){if(!await M1(J))return;let Z=await wJ(J,["@kobe_worktree","@kobe_task","@kobe_vendor",SG]),Y=Z["@kobe_worktree"]||process.cwd(),X=Z["@kobe_task"]||void 0,G=Z[SG]||void 0,q=z??Z["@kobe_vendor"];if(z)await aN(J,X,z);let H=EJ(q),j=BX(H,q),B=u1(),f=(await _0(["new-window","-t",`=${J}`,"-c",l1(Y),"-P","-F","#{pane_id}",xJ(jX(TJ(j.argv),G,Y),sY(p1(),B,J))])).stdout.trim();if(!f)return;if(j.sessionId)await dZ(f,cz,j.sessionId);await FH(f,{cwd:Y,taskId:X,inv:B,vendor:q});let{stdout:U}=await _0(["display-message","-p","-t",f,"#{window_id}"]),L=U.trim();if(L)await iB(J,L)}async function $G(J){if(!await M1(J))return;let Z=(await wJ(J,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),Y=u1(),G=`${p1()}${Y.map(z1).join(" ")} settings`;await bz(J,{cwd:l1(Z),command:G,name:"settings",surface:!0})}async function aG(J){if(!await M1(J))return;let Z=(await wJ(J,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),Y=u1(),G=`${p1()}${Y.map(z1).join(" ")} help-page`;await bz(J,{cwd:l1(Z),command:G,name:"help",surface:!0})}async function _G(J,z){if(!await M1(J))return;let Y=(await wJ(J,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),X=u1(),G=p1(),q=z?` --repo ${z1(z)}`:"",H=`${G}${X.map(z1).join(" ")} new-task${q}`;await bz(J,{cwd:l1(Y),command:H,name:"new task",surface:!0})}async function pG(J){if(!await M1(J))return;let Z=(await wJ(J,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),Y=u1(),G=`${p1()}${F7({cliInvocation:Y})}`;await bz(J,{cwd:l1(Z),command:G,name:"update",surface:!0})}async function _B(J){if(!await M1(J))return;let Z=(await wJ(J,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),Y=u1(),G=`${p1()}${Y.map(z1).join(" ")} quick-task --session ${z1(J)}`;await bz(J,{cwd:l1(Z),command:G,name:"quick task",surface:!0})}async function aN(J,z,Z){if(await fZ(J,"@kobe_vendor",Z),!z)return;try{let{connectOrStartDaemon:Y}=await Promise.resolve().then(() => (kJ(),AH)),X=await Y();try{await X.request("task.setVendor",{taskId:z,vendor:Z})}finally{X.close()}}catch(Y){console.error("[kobe tmux] failed to persist selected engine vendor:",Y)}}var vG,MH="@kobe_tab_state",CX="#{?#{==:#{@kobe_tab_state},running},\u25CF,#{?#{==:#{@kobe_tab_state},done},\u2713,#{?#{==:#{@kobe_tab_state},error},!,#{?#{==:#{@kobe_tab_state},unknown},?,\u25CB}}}} #I:#W",lG;var LH=C(()=>{GZ();Xz();Az();m1();Mz();s1();bJ();KY();cZ();hG();vG=`engine (${o1.join("/")}/\u2026)`;lG=CX});var PJ={};H1(PJ,{tmuxWindowSizeArgsForClient:()=>oB,tmuxSessionName:()=>y1,tmuxInitialSizeArgs:()=>sK,tmuxInitialClientSize:()=>rB,tmuxAvailable:()=>nz,switchClientBeforeKill:()=>iz,sessionExists:()=>M1,selectTasksPane:()=>eN,runLayoutAction:()=>bY,resyncWindowToClient:()=>rN,refreshKobeWorkspacePanes:()=>NX,quickCreate:()=>_B,prepareWindowForSwitch:()=>z5,prepareWindowForAttach:()=>RH,parseTmuxClientRows:()=>tK,parseObservedSession:()=>Y5,openUpdateTab:()=>pG,openSettingsTab:()=>$G,openNewTaskTab:()=>_G,openHelpTab:()=>aG,observeSessionVendor:()=>tB,newChatTab:()=>aB,kobeStatusRight:()=>iG,killSession:()=>vJ,healSessionLayout:()=>kK,focusBindCommand:()=>Z5,enterWindow:()=>pN,ensureSession:()=>oG,currentSessionName:()=>hJ,clientsWithConflictingSize:()=>eK,chatTabSwitchBindings:()=>mG,chatTabRenameBinding:()=>dG,chatTabCloseBinding:()=>cG,chatTabChooseEngineBindings:()=>nG,captureGlobalLayoutOnDrag:()=>IK,captureGlobalLayout:()=>EB,attachArgv:()=>bX,PANE_VERSION_OPTION:()=>Cz,CHAT_TAB_STATUS_FORMAT:()=>CX,CHAT_TAB_STATUS_CURRENT_FORMAT:()=>lG,CHAT_TAB_STATE_OPTION:()=>MH,CHAT_TAB_ENGINE_PROMPT:()=>vG});function sK(J=process.stdout,z=process.env){let Z=rB(J,z);return Z?["-x",`${Z.columns}`,"-y",`${Z.rows}`]:[]}function rB(J=process.stdout,z=process.env){let Z=nZ(J.columns)??nZ(z.COLUMNS),Y=nZ(J.rows)??nZ(z.LINES);return Z&&Y?{columns:Z,rows:Y}:null}function nZ(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 tK(J){let z=[];for(let Z of J.split(`
54
+ `)){let[Y,X,G,q,H]=Z.split("\t"),j=nZ(G?.trim()),B=nZ(q?.trim());if(!Y?.trim()||!X?.trim()||!j||!B)continue;z.push({name:Y.trim(),session:X.trim(),width:j,height:B,flags:H?.trim()??""})}return z}function eK(J,z,Z,Y={}){return J.filter((X)=>X.session===z).filter((X)=>X.name!==Y.currentClientName).filter((X)=>X.width!==Z.columns||X.height!==Z.rows).map((X)=>X.name)}function oB(J,z){let Z=Math.max(1,J.rows-(z.status?.trim()==="on"?1:0));return["-x",`${J.columns}`,"-y",`${Z}`]}async function sB(J,z,Z={}){if(!z)return;let{code:Y,stdout:X}=await _0(["list-clients","-t",`=${J}`,"-F",_N]);if(Y!==0)return;let G=eK(tK(X),J,z,Z),q=[];if(Z.currentClientName)q.push(["refresh-client","-f","!ignore-size","-t",Z.currentClientName]);for(let H of G)q.push(["refresh-client","-f","ignore-size","-t",H]);if(q.length>0)await r1(q)}async function RH(J){vZ(J,"resize");let z=rB();await sB(J,z);let Z=z?["-x",`${z.columns}`,"-y",`${z.rows}`]:[];if(Z.length>0)await n0(["resize-window","-t",`=${J}`,...Z]);await CY(J)}async function J5(){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[Z,Y,X,G]=z.trim().split("\t"),q=nZ(Y),H=nZ(X),j=q&&H?{columns:q,rows:H}:null;return{sizeArgs:j?oB(j,{status:G}):[],clientSize:j,clientName:Z?.trim()||void 0}}async function z5(J){vZ(J,"resize");let z=await J5();await sB(J,z.clientSize,{currentClientName:z.clientName});let Z=z.sizeArgs;if(Z.length>0)await n0(["resize-window","-t",`=${J}`,...Z]);await CY(J)}async function pN(J){await z5(J),await n0(["switch-client","-t",`=${J}`])}async function rN(J,z){if(!z.size)return;vZ(J,"resize"),await sB(J,z.size,{currentClientName:z.clientName});let Z=oB(z.size,{status:z.status}),{commands:Y}=await uB(J,{force:!0});await r1([["resize-window","-t",`=${J}`,...Z],...Y])}function Z5(J,z,Z){let Y=`#{?window_zoomed_flag,1,#{?${oN[z]},,1}}`;if(Z)return["bind-key","-n",J,"if-shell","-F",Y,`select-pane ${z}`,Z];return["bind-key","-n",J,"if-shell","-F",Y,`select-pane ${z}`]}async function oG(J){let z=pB.get(J.name);if(z)return z;let Z=tN(J);pB.set(J.name,Z);try{return await Z}finally{pB.delete(J.name)}}function Y5(J){let z="",Z="",Y=!1,X=new Set;for(let G of J.split(`
55
+ `)){let[q,H,j,B,V]=G.split("\t");if(!q?.trim())continue;if(X.add(q.trim()),!z&&B?.trim())z=B.trim();if(!Z&&V?.trim())Z=V.trim();if(H?.trim()==="1"&&j?.trim()==="claude")Y=!0}return{worktree:z,vendor:Z,claudePaneAlive:Y,windowCount:X.size}}async function X5(J){if(!await M1(J))return null;let{code:z,stdout:Z}=await _0(["list-panes","-s","-t",`=${J}`,"-F",sN]);if(z!==0)return{worktree:"",vendor:"",claudePaneAlive:!1,windowCount:0};return Y5(Z)}async function tB(J){let Z=(await X5(J))?.vendor.trim();return Z?Z:null}async function tN(J){let z=J.launchInit,Z=await X5(J.name),Y=QK(Z,{cwd:J.cwd,vendor:J.vendor,hasEngineCommand:J.command.length>0}),X=IU(J.repo);if(Y.kind==="reuse")return await CY(J.name,{cwd:J.cwd,taskId:J.taskId,vendor:J.vendor}),!0;if(Y.kind==="respawn-engine"){let k0=await CK(J.name,J.cwd,J.command,X,J.vendor);if(k0==="switched"){if(J.vendor)await fZ(J.name,"@kobe_vendor",J.vendor);return await CY(J.name,{cwd:J.cwd,taskId:J.taskId,vendor:J.vendor,vendorChanged:!0}),!0}if(k0==="respawn-failed")return await CY(J.name,{cwd:J.cwd,taskId:J.taskId,vendor:J.vendor}),!0}if(Y.kind==="rebuild"||Y.kind==="respawn-engine")await vJ(J.name);let G=u1(),q=(J.archived===!0||J.preview===!0)&&gB(),H=q?{argv:[],sessionId:void 0}:BX(J.command,J.vendor),j=J.repo!==void 0&&J.cwd===J.repo,B=j||X?void 0:J.taskId,V=j&&!X?J.taskId:void 0,f=lq(iq(H.argv,J.vendor,B),J.vendor,V),U=[...G,"history","--worktree",J.archivedWorktree??J.cwd,...J.vendor?["--vendor",J.vendor]:[],...J.title?["--title",J.title]:[],...J.preview&&!J.archived?["--live"]:[]],L=jX(TJ(q?U:f),X,J.cwd),O=q?K7(L):L7(L,{initScript:X?void 0:z?.initScript,markerPath:!X&&z?.initScript?LV(J.cwd):void 0,timeoutSeconds:T9(process.env.KOBE_REPO_INIT_TIMEOUT_SECONDS)},sY(p1(),G,J.name)),g=(await _0(["new-session","-d","-s",J.name,"-c",l1(J.cwd),...sK(),"-P","-F","#{pane_id}",O])).stdout.trim();if(!g)return console.error("[kobe tmux] new-session returned no pane id; session creation failed"),!1;if(H.sessionId)await dZ(g,cz,H.sessionId);if(await r1([...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,SG,X]]:[]]),process.env.TMUX){let{sizeArgs:k0}=await J5();if(k0.length>0)await n0(["resize-window","-t",`=${J.name}`,...k0])}await FH(g,{cwd:J.cwd,taskId:J.taskId,opsCommand:J.opsCommand,inv:G,vendor:J.vendor});let E=p1(),h=G.map(z1).join(" "),I=`${E}${h} new-chattab --session '#{session_name}'`,N=`${I} --vendor '%%'`,F=`run-shell ${z1(N)}`,y=`${E}${h} focus-tasks --session '#{session_name}' --window '#{window_id}'`,c=`run-shell ${z1(y)}`,d=(k0)=>`${E}${h} layout --session '#{session_name}' --window '#{window_id}' --action ${k0}`,l=d("tasks-restore"),t=`run-shell ${z1(l)}`,X0=d("chat-tab-close"),q0=`run-shell ${z1(X0)}`,f0=`${E}${h} heal-layout --session '#{session_name}'`,_=`run-shell -b ${z1(f0)}`,O0=`${E}${h} resync-window --session '#{session_name}' --client '#{client_name}' --cols '#{client_width}' --rows '#{client_height}' --status '#{status}'`,b=`run-shell -b ${z1(O0)}`,p=`${E}${h} capture-layout --session '#{session_name}'`,w=`run-shell -b ${z1(p)}`,R=O7({tmuxSocket:kz}),e=_U(process.platform,pU),x=rU(e),$=oq(),G0=zK.map((k0)=>["unbind-key","-n",k0]);if($.overridden.has(mz))for(let k0 of hZ){let h0=gY(k0);if("key"in h0)G0.push(["unbind-key","-n",h0.key])}for(let k0 of $.overridden){if(k0===mz)continue;let h0=RY[k0],N0=WX(k0),o0=gY(h0,{allowBare:N0});if("key"in o0)G0.push(N0?["unbind-key",o0.key]:["unbind-key","-n",o0.key])}let H0=["-L","-D","-U","-R"],L0=$.focus.flatMap((k0,h0)=>{let N0=H0[h0],o0=N0==="-L"?t:void 0;return k0&&N0?[Z5(k0.key,N0,o0)]:[]}),F0=$.binds,E0=(k0,h0)=>{let N0=F0[k0];return N0?[["bind-key",N0.key,"run-shell",d(h0)]]:[]},b0=(...k0)=>{let h0=k0.map((N0)=>F0[N0]?.chord).filter((N0)=>!!N0);return h0.length>0?h0.join("/"):null},e0="#{?#{@kobe_surface},0,1}";await r1([["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",CX],["set-option","-g","window-status-current-format",lG],["set-option","-g","status-right",iG({focusLeft:$.focus[0]?.key??null,detach:F0["tmux.detach"]?.key??null,newTab:F0["tmux.tab.new"]?.key??null,layoutSplits:b0("tmux.layout.workspaceSplit","tmux.layout.workspaceClose","tmux.layout.workspaceReset"),layoutPanes:b0("tmux.layout.tasksToggle","tmux.layout.opsToggle","tmux.layout.terminalToggle","tmux.layout.zenToggle")})],["set-option","-g","mouse","on"],...x,["set-hook","-g","window-resized",_],["set-hook","-g","client-resized",b],["set-hook","-g","pane-exited",_],["set-hook","-g","window-layout-changed",w],...G0,...F0["tmux.detach"]?[["bind-key","-n",F0["tmux.detach"].key,"if-shell","-F",`#{?#{${yJ}},1,#{==:#{@kobe_role},tasks}}`,"detach-client",c]]:[],...L0,...F0["tmux.tab.new"]?[["bind-key","-n",F0["tmux.tab.new"].key,"run-shell",I]]:[],...F0["tmux.tab.chooseEngine"]?nG(F0["tmux.tab.chooseEngine"].key).map((k0)=>[...k0,F]):[],...F0["tmux.tab.prev"]&&F0["tmux.tab.next"]?mG(F0["tmux.tab.prev"].key,F0["tmux.tab.next"].key):F0["tmux.tab.prev"]?[["bind-key","-n",F0["tmux.tab.prev"].key,"if-shell","-F",e0,"previous-window"]]:F0["tmux.tab.next"]?[["bind-key","-n",F0["tmux.tab.next"].key,"if-shell","-F",e0,"next-window"]]:[],...F0["tmux.tab.close"]?[cG(F0["tmux.tab.close"].key,q0)]:[],...F0["tmux.tab.rename"]?[dG(F0["tmux.tab.rename"].key)]:[],...E0("tmux.layout.workspaceSplit","workspace-split"),...E0("tmux.layout.workspaceClose","workspace-close"),...E0("tmux.layout.workspaceReset","workspace-reset"),...E0("tmux.layout.tasksToggle","tasks-toggle"),...E0("tmux.layout.opsToggle","ops-toggle"),...E0("tmux.layout.terminalToggle","terminal-toggle"),...E0("tmux.layout.zenToggle","zen-toggle"),["bind-key","f","run-shell",`${E}${h} quick-create --session '#{session_name}'`],["bind-key","u","display-popup","-E",R]]),await NY(),await n0(["select-pane","-t",g]);let j1=z?.firstMessage;if(j1)GK(J.name,j1).catch((k0)=>console.error("[kobe tmux] first message delivery failed:",k0));return!0}async function oK(J,z,Z){let Y=Z?.trim()||`=${J}`,{code:X,stdout:G}=await _0(["list-panes","-t",Y,"-F","#{pane_id}\t#{@kobe_role}"]);if(X!==0)return"";for(let q of G.split(`
56
+ `)){let[H,j]=q.split("\t");if(H?.trim()&&j?.trim()===z)return H.trim()}return""}async function eN(J,z={}){if(!await M1(J))return"";let Z=await oK(J,"tasks",z.windowId);if(!Z)await bY(J,"tasks-restore",{windowId:z.windowId}),Z=await oK(J,"tasks",z.windowId);if(!Z)return"";return await n0(["select-pane","-t",Z]),Z}var _N="#{client_name}\t#{client_session}\t#{client_width}\t#{client_height}\t#{client_flags}",oN,pB,sN="#{window_id}\t#{window_active}\t#{@kobe_role}\t#{@kobe_worktree}\t#{@kobe_vendor}";var qJ=C(()=>{GZ();Xz();t1();Az();$q();m1();oU();sq();tq();Mz();jH();LH();KY();cZ();gX();hG();m1();LH();hG();cZ();oN={"-L":"pane_at_left","-D":"pane_at_bottom","-U":"pane_at_top","-R":"pane_at_right"};pB=new Map});var IX={};H1(IX,{windowIsSurface:()=>QC,windowCount:()=>ZC,tmuxSessionName:()=>y1,tmuxCommandSequence:()=>Jf,tmuxAvailable:()=>nz,tmuxArgs:()=>IY,termAllPaneGroups:()=>Xf,tagPaneRole:()=>H5,tagClaudePane:()=>GC,switchClientBeforeKill:()=>iz,setWindowOption:()=>dZ,setSessionOption:()=>fZ,sessionExists:()=>M1,sendKeys:()=>gH,sendKeyName:()=>wG,runTmuxSequenceCapturing:()=>rG,runTmuxSequence:()=>r1,runTmuxCapturing:()=>_0,runTmux:()=>n0,readLayoutGeometry:()=>dz,paneIdByRole:()=>Zf,newWindow:()=>bz,killSession:()=>vJ,globalTasksPaneWidth:()=>OH,getSessionOptions:()=>wJ,getSessionOption:()=>kY,getServerOptions:()=>q5,getServerOption:()=>YC,ensureFallbackSession:()=>NH,currentSessionName:()=>hJ,claudePaneIdStrict:()=>VX,claudePaneId:()=>IB,capturePaneById:()=>UX,attachArgv:()=>bX,SURFACE_WINDOW_OPTION:()=>Yf,PANE_ROLE_OPTION:()=>sG,KOBE_TMUX_SOCKET:()=>kz,KOBE_HOME_SESSION:()=>B5,CLAUDE_ROLE_OPTION:()=>XC,CHAT_TAB_SESSION_ID_OPTION:()=>cz});import{homedir as JC}from"os";function IY(...J){return["tmux","-L",kz,...J]}function y1(J){return`kobe-${J.replace(/[^A-Za-z0-9_-]/g,"")}`}function bX(J){return IY("attach-session","-t",`=${J}`)}async function eB(J){if(!J)return"";try{return await new Response(J).text()}catch{return""}}async function n0(J){try{let z=Bun.spawn(IY(...J),{stdin:"ignore",cwd:kX,stdout:"ignore",stderr:"pipe"}),[Z,Y]=await Promise.all([eB(z.stderr),z.exited]);if(Y!==0&&Z.trim().length>0)console.error(`[kobe tmux] ${J.join(" ")} (${Y}): ${Z.trim()}`);return Y}catch{return 1}}async function zC(J){try{return await Bun.spawn(IY(...J),{stdin:"ignore",cwd:kX,stdout:"ignore",stderr:"ignore"}).exited}catch{return 1}}function Jf(J){let z=[];for(let Z of J){if(Z.length===0)continue;if(z.length>0)z.push(";");z.push(...Z)}return z}async function r1(J){let z=Jf(J);return z.length===0?0:n0(z)}async function _0(J){try{let z=Bun.spawn(IY(...J),{stdin:"ignore",cwd:kX,stdout:"pipe",stderr:"pipe"}),[Z,Y,X]=await Promise.all([eB(z.stdout),eB(z.stderr),z.exited]);if(X!==0&&Y.trim().length>0)console.error(`[kobe tmux] ${J.join(" ")} (${X}): ${Y.trim()}`);return{code:X,stdout:Z}}catch{return{code:1,stdout:""}}}async function rG(J){let z=Jf(J);return z.length===0?{code:0,stdout:""}:_0(z)}async function nz(){try{return await Bun.spawn(["tmux","-V"],{stdin:"ignore",cwd:kX,stdout:"ignore",stderr:"ignore"}).exited===0}catch{return!1}}async function M1(J){return await zC(["has-session","-t",`=${J}`])===0}async function ZC(J){let{code:z,stdout:Z}=await _0(["list-windows","-t",`=${J}`,"-F","#{window_id}"]);if(z!==0)return 0;return Z.split(`
57
+ `).filter((Y)=>Y.trim().length>0).length}async function fZ(J,z,Z){await n0(["set-option","-t",J,z,Z])}async function kY(J,z){let{code:Z,stdout:Y}=await _0(["show-options","-qv","-t",J,z]);return Z===0?Y.trim():""}async function wJ(J,z){let Z=Object.fromEntries(z.map((G)=>[G,void 0])),{code:Y,stdout:X}=await rG(z.map((G)=>["show-options","-q","-t",J,G]));if(Y!==0)return Z;for(let G of X.split(`
58
+ `)){let q=G.indexOf(" ");if(q<=0)continue;let H=G.slice(0,q);if(H in Z)Z[H]=G.slice(q+1).trim()}return Z}async function YC(J){let{code:z,stdout:Z}=await _0(["show-options","-sqv",J]);return z===0?Z.trim():""}async function q5(J){let z=Object.fromEntries(J.map((X)=>[X,void 0])),{code:Z,stdout:Y}=await rG(J.map((X)=>["show-options","-sq",X]));if(Z!==0)return z;for(let X of Y.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 OH(){return(await dz()).tasksWidth}async function dz(){return U7(await q5(V7))}async function H5(J,z){await n0(["set-option","-p","-t",J,sG,z])}async function dZ(J,z,Z){await n0(["set-window-option","-t",J,z,Z])}async function GC(J){await H5(J,zf)}async function Zf(J,z,Z=!1){let{code:Y,stdout:X}=await _0(["list-panes","-t",`=${J}`,"-F",`#{pane_id} #{${sG}}`]);if(Y!==0)return"";let G="";for(let q of X.split(`
60
+ `)){let[H,j]=q.split("\t");if(!H)continue;if(!G)G=H.trim();if(j?.trim()===z)return H.trim()}return Z?G:""}async function IB(J){return Zf(J,zf,!0)}async function VX(J){return Zf(J,zf,!1)}async function UX(J,z){if(!J)return"";let Z=["capture-pane","-t",J,"-p"];if(typeof z==="number"&&z>0)Z.push("-S",String(-z));let{code:Y,stdout:X}=await _0(Z);return Y===0?X:""}async function gH(J,z){await n0(["send-keys","-t",J,"-l","--",z])}async function wG(J,z){await n0(["send-keys","-t",J,z])}async function bz(J,z){let Z=["new-window","-t",`=${J}`,"-c",z.cwd];if(z.name)Z.push("-n",z.name);if(z.surface){Z.push("-P","-F","#{window_id}"),Z.push(z.command);let{code:Y,stdout:X}=await _0(Z),G=X.trim();if(Y===0&&G)await dZ(G,Yf,"1");return}Z.push(z.command),await n0(Z)}async function QC(J){let{code:z,stdout:Z}=await _0(["display-message","-t",J,"-p",`#{${Yf}}`]);return z===0&&Z.trim()==="1"}async function hJ(){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:Z,stdout:Y}=await _0(J),X=Y.trim();return Z===0&&X.length>0?X:null}async function j5(J){let{code:z,stdout:Z}=await _0(["list-panes",...J,"-F","#{pane_pid}"]);if(z!==0)return;for(let Y of Z.split(`
61
+ `)){let X=Number.parseInt(Y.trim(),10);if(!Number.isFinite(X)||X<=1)continue;try{process.kill(-X,"SIGTERM")}catch{}}}async function G5(J){await j5(["-s","-t",`=${J}`])}async function Xf(){await j5(["-a"])}async function vJ(J){if(!J.startsWith("kobe-hidden-")){let z=KG(J);if(await M1(z))await G5(z),await n0(["kill-session","-t",`=${z}`])}if(await M1(J))await G5(J),await n0(["kill-session","-t",`=${J}`])}async function NH(){let J=B5;if(await M1(J)){if(await kY(J,Q5)==="tasks")return J;await n0(["kill-session","-t",`=${J}`])}let Z=(await _0(["new-session","-d","-s",J,"-c",kX,"-x","220","-y","50","-P","-F","#{pane_id}",D7()])).stdout.trim();if(Z){let Y=await OH(),G=(await _0(["split-window","-h","-b","-t",Z,"-l",`${Y}`,"-c",kX,"-P","-F","#{pane_id}",xJ(p1()+xZ(u1()))])).stdout.trim();if(G)await r1([["set-option","-p","-t",G,sG,"tasks"],["select-pane","-t",G]])}return await fZ(J,Q5,"tasks"),J}async function iz(J,z){if(await hJ()!==J)return;let{enterWindow:Y}=await Promise.resolve().then(() => (qJ(),PJ));if(z&&z!==J&&await M1(z)){await Y(z);return}await Y(await NH())}var kz,kX,sG="@kobe_role",XC,zf="claude",cz="@kobe_session_id",Yf="@kobe_surface",B5="kobe-home",Q5="@kobe_home";var m1=C(()=>{GZ();KY();Mz();kz=process.env.KOBE_TMUX_SOCKET?.trim()||"kobe";kX=JC()||"/";XC=sG});async function qC(J,z=f5){let{code:Z,stdout:Y}=await z.capture(["list-windows","-t",`=${J}`,"-F",`#{window_index} #{automatic-rename} #{${cz}}`]);if(Z!==0)return[];let X=[];for(let G of Y.split(`
62
+ `)){let[q,H,j]=G.split("\t"),B=Number.parseInt((q??"").trim(),10);if(!Number.isInteger(B))continue;X.push({index:B,sessionId:j?.trim()??"",autoRename:H?.trim()??""})}return X}async function HC(J,z,Z){let{code:Y,stdout:X}=await Z.capture(["show-window-options","-t",`=${J}:${z}`,"automatic-rename"]);return Y===0&&/\boff\b/.test(X)}async function jC(J){let{code:z,stdout:Z}=await J.capture(["show-window-options","-g","automatic-rename"]);return z===0&&/\boff\b/.test(Z)}async function BC(J,z,Z,Y){return await Y.run(["rename-window","-t",`=${J}:${z}`,"--",Z])===0}async function W5(J,z=fC){let Z=0,Y=null,X=async(G,q)=>{if(q.autoRename==="1")return!1;if(q.autoRename==="0"){if(Y===null)Y=await jC(z.runner);if(!Y)return!0}return HC(G,q.index,z.runner)};for(let G of J.listTasks()){if(G.archived||G.kind==="main"||!G.worktreePath)continue;let q=y1(G.id),H=await qC(q,z.runner);if(H.length===0)continue;let j=H.reduce((V,f)=>Math.min(V,f.index),Number.POSITIVE_INFINITY),B=G.vendor??zJ;for(let V of H)try{if(await X(q,V))continue;let f=V.sessionId?await z.titleFromSessionId(B,V.sessionId):V.index===j?await z.titleFromWorktree(G.worktreePath,B):"";if(f&&await BC(q,V.index,f,z.runner))Z++}catch{}}return Z}var f5,fC;var V5=C(()=>{bq();m1();Yz();f5={capture:_0,run:n0};fC={runner:f5,titleFromSessionId:XU,titleFromWorktree:zX}});function K5(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 U5(J,z,Z=new Date){let Y=K5(z);return`[${Z.toISOString()}] daemon ${J}: ${Y.stack??`${Y.name}: ${Y.message}`}
63
+ `}function WC(J,z,Z=new Date){let Y=K5(z);return`[${Z.toISOString()}] daemon error [${J}]: ${Y.stack??`${Y.name}: ${Y.message}`}
64
+ `}function w1(J,z){process.stderr.write(WC(J,z))}function VC(J,z,Z=new Date){return`[${Z.toISOString()}] daemon [${J}]: ${z}
65
+ `}function lz(J,z){process.stderr.write(VC(J,z))}function D5(J=(z)=>process.stderr.write(z)){if(Gf||Qf)return;Gf=(z)=>J(U5("unhandledRejection",z)),Qf=(z)=>J(U5("uncaughtException",z)),process.on("unhandledRejection",Gf),process.on("uncaughtException",Qf)}var Gf,Qf;async function UC(J,z=zX){let Z=[];for(let Y of J.listTasks()){if(Y.archived||Y.title!==vz||!Y.worktreePath)continue;try{let X=await z(Y.worktreePath,Y.vendor??zJ);if(!X)continue;let G=J.getTask(Y.id);if(!G||G.title!==vz)continue;await J.setTitle(Y.id,X),Z.push({id:Y.id,title:X})}catch(X){w1("auto-title-poller",X)}}return Z}function L5(J,z=qf,Z){if(z<=0)return()=>{};let Y=!1,G=setInterval(()=>{if(Z&&!Z())return;if(Y)return;Y=!0,UC(J).then(()=>W5(J)).catch((q)=>w1("auto-title-poller",q)).finally(()=>{Y=!1})},z);return G.unref?.(),()=>clearInterval(G)}var qf=4000;var M5=C(()=>{bq();IG();V5();Yz()});class Hf{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 Z of this.queue){if(this.queuedBytes>this.highWaterMark&&!Z.critical){this.queuedBytes-=Z.bytes,this.droppedFrames++;continue}z.push(Z)}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 jf{last=new Map;sinks=new Set;publish(J,z){this.last.set(J,z);let Z={channel:J,payload:z};for(let Y of this.sinks)Y(Z)}snapshot(){return[...this.last].map(([J,z])=>({channel:J,payload:z}))}onPublish(J){return this.sinks.add(J),()=>{this.sinks.delete(J)}}}async function F5(J,z,Z=dq){if(!Z())return"skipped";let Y=J.getTask(z);if(!Y)return"skipped";if((Y.kind??"task")==="main"||Y.archived)return"skipped";if(Y.status!=="backlog")return"skipped";return await J.setStatus(z,"in_progress"),"moved"}var O5=C(()=>{yG()});import{createHash as KC}from"crypto";import{homedir as DC}from"os";import iZ from"path";function AC(){return iZ.join(process.env.KOBE_HOME_DIR??DC(),".kobe")}function RC(J){let Z=(iZ.basename(J)||"repo").replace(/[^a-zA-Z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"repo",Y=KC("sha1").update(iZ.resolve(J)).digest("hex").slice(0,12);return`${Z}-${Y}`}function gC(J){if(!iZ.isAbsolute(J))throw Error(`worktreeRootFor: repo must be an absolute path, got: ${J}`);return iZ.join(AC(),LC,RC(J))}function NC(J){if(!iZ.isAbsolute(J))throw Error(`managedWorktreeRootsFor: repo must be an absolute path, got: ${J}`);return[gC(J),...OC.map((z)=>iZ.join(J,z))]}function $z(J){return J.length>1&&J.endsWith("/")?J.slice(0,-1):J}function A5(J,z){return z===J||z.startsWith(`${J}/`)}function R5(J,z){let Z=$z(z),Y,X=-1;for(let G of J){if(!G.worktreePath)continue;let q=$z(G.worktreePath);if(A5(q,Z)&&q.length>X)X=q.length,Y=G.id}return Y}function g5(J,z){let Z=$z(z);for(let Y of J)if(Y.worktreePath&&$z(Y.worktreePath)===Z)return Y.id;return}function Bf(J,z){let Z=$z(z),Y,X=-1;for(let G of J){if(!G.repo)continue;let q=$z(G.repo);if(A5(q,Z)&&q.length>X)X=q.length,Y=q}return Y}function N5(J,z){let Z=$z(z),Y=new Set,X=new Set;for(let G of J){if(G.repo)Y.add($z(G.repo));if(G.worktreePath)X.add($z(G.worktreePath))}for(let G of Y)for(let q of NC(G).map($z)){let H=`${q}/`;if(!Z.startsWith(H))continue;let B=Z.slice(H.length).split("/")[0];if(!B)continue;let V=`${H}${B}`;if(X.has(V))return;return{repo:G,worktreePath:V}}return}var LC="worktrees",MC=".kobe/worktrees",FC=".claude/worktrees",OC;var C5=C(()=>{OC=[MC,FC]});function Vf(J){return{message:J instanceof Error?J.message:String(J),name:J instanceof Error?J.name:void 0}}async function tG(J,z,Z,Y){let X=J.get(z);if(!X)throw Error(`unknown daemon request: ${z}`);return X.handle(Uf(Z),Y)}function eG(){return new Map([{name:"hello",handle(z,Z){let Y=typeof z.protocolVersion==="number"?z.protocolVersion:eJ,X=typeof z.minProtocolVersion==="number"?z.minProtocolVersion:Y;if(!sQ({localVersion:eJ,localMin:kZ,remoteVersion:Y,remoteMin:X}))throw Error(`daemon is protocol v${eJ} (min v${kZ}); this client is v${Y} (min v${X}). Upgrade your kobe.`);return{protocolVersion:eJ,minProtocolVersion:kZ,kobeVersion:J1,capabilities:[...M9],daemonPid:Z.daemon.pid,clientId:Z.clientId,tasks:Z.orch.listTasks().map(Uz)}}},{name:"daemon.status",handle(z,Z){return{daemonPid:Z.daemon.pid,kobeVersion:J1,uptimeMs:Date.now()-Z.daemon.startedAt.getTime(),startedAt:Z.daemon.startedAt.toISOString(),attachedClients:Z.daemon.guiCount(),taskCount:Z.orch.listTasks().length,socketPath:Z.daemon.socketPath,webPort:Z.daemon.webPort??null}}},{name:"daemon.stop",async handle(z,Z){return await Z.daemon.stopSoon(),{}}},{name:"task.list",handle(z,Z){return{tasks:Z.orch.listTasks().map(Uz)}}},{name:"task.get",handle(z,Z){let Y=k1(z,"taskId"),X=Z.orch.getTask(Y);if(!X)throw Error(`task not found: ${Y}`);return{task:Uz(X)}}},{name:"task.create",async handle(z,Z){let Y=k1(z,"repo"),X=await Z.orch.createTask({repo:Y,title:Qz(z,"title"),branch:Qz(z,"branch"),baseRef:Qz(z,"baseRef"),vendor:Wf(z,"vendor"),modelEffort:Qz(z,"effort")});return{taskId:X.id,task:Uz(X)}}},{name:"task.archive",async handle(z,Z){let Y=k1(z,"taskId");return await Z.orch.setArchived(Y,ff(z,"archived")),{}}},{name:"task.rename",async handle(z,Z){let Y=k1(z,"taskId");return await Z.orch.setTitle(Y,k1(z,"title")),{}}},{name:"task.setBranch",async handle(z,Z){let Y=k1(z,"taskId");return await Z.orch.setBranch(Y,k1(z,"branch")),{}}},{name:"task.setVendor",async handle(z,Z){let Y=k1(z,"taskId"),X=Wf(z,"vendor");if(!X)throw Error("task.setVendor: vendor is required");return await Z.orch.setVendor(Y,X),{}}},{name:"task.delete",async handle(z,Z){let Y=k1(z,"taskId");return await Z.orch.deleteTask(Y,{force:ff(z,"force")}),Z.activity.clearTask(Y),{}}},{name:"task.pin",async handle(z,Z){let Y=k1(z,"taskId");return await Z.orch.setPinned(Y,ff(z,"pinned")),{}}},{name:"task.move",async handle(z,Z){let Y=k1(z,"taskId"),X=k1(z,"direction");if(X!=="up"&&X!=="down")throw Error("direction must be up or down");return await Z.orch.moveTask(Y,X==="up"?-1:1),{}}},{name:"task.status",async handle(z,Z){let Y=k1(z,"taskId"),X=k1(z,"status");if(!t7(X))throw Error("status must be a TaskStatus");let G=X==="done"?Z.orch.getTask(Y):void 0,q=G?.status;if(await Z.orch.setStatus(Y,X),X==="done"&&q!=="done"&&G)try{let H=await Z.issues.mirrorTaskDone(G.repo,Y);if(H)Z.bus.publish("issue.snapshot",H)}catch(H){w1("issue-done-mirror",H)}return{}}},{name:"task.reorder",async handle(z,Z){let Y=z.moves;if(!Array.isArray(Y)||Y.length===0)throw Error("moves must be a non-empty array");if(Y.length>500)throw Error("too many moves in one task.reorder batch (max 500)");let X=Y.map((G)=>{if(typeof G!=="object"||G===null)throw Error("each move needs taskId and position");let q=G,H=k1(q,"taskId"),j=q.position;if(typeof j!=="number"||!Number.isFinite(j))throw Error("position must be a finite number");return{taskId:H,position:j}});return await Z.orch.reorderTasks(X),{}}},{name:"task.ensureMain",async handle(z,Z){let Y=k1(z,"repo"),X=await Z.orch.ensureMainTask(Y);return{task:Uz(X)}}},{name:"project.forget",async handle(z,Z){let Y=k1(z,"repo");return await Z.orch.forgetProject(Y),{}}},{name:"task.ensureWorktree",async handle(z,Z){let Y=k1(z,"taskId");Z.bus.publish("task.jobs",{taskId:Y,kind:"ensureWorktree",phase:"running"});try{let X=await Z.orch.ensureWorktree(Y);return Z.bus.publish("task.jobs",{taskId:Y,kind:"ensureWorktree",phase:"done"}),{worktreePath:X}}catch(X){throw Z.bus.publish("task.jobs",{taskId:Y,kind:"ensureWorktree",phase:"error",error:X instanceof Error?X.message:String(X)}),X}}},{name:"worktree.discoverAdoptable",async handle(z,Z){let Y=k1(z,"repo");return{worktrees:await Z.orch.discoverAdoptableWorktrees(Y)}}},{name:"worktree.adopt",async handle(z,Z){let Y=await Z.orch.adoptWorktree({repo:k1(z,"repo"),worktreePath:k1(z,"worktreePath"),branch:Qz(z,"branch"),vendor:Wf(z,"vendor"),title:Qz(z,"title"),ifExists:Qz(z,"ifExists")==="return"?"return":"error"});return{task:Uz(Y)}}},{name:"worktree.reconcile",async handle(z,Z){let Y=k1(z,"cwd"),X=k1(z,"worktreePath"),G=Bf(Z.orch.listTasks(),Y)??Bf(Z.orch.listTasks(),X);if(!G)return{adopted:!1};try{return{adopted:!0,taskId:(await Z.orch.adoptWorktree({repo:G,worktreePath:X,ifExists:"return"})).id}}catch(q){return w1("worktree-created",q),{adopted:!1}}}},{name:"worktree.archiveRemoved",async handle(z,Z){let Y=k1(z,"worktreePath"),X=g5(Z.orch.listTasks(),Y);if(!X)return{archived:!1};try{return await Z.orch.setArchived(X,!0),{archived:!0,taskId:X}}catch(G){return w1("worktree-removed",G),{archived:!1}}}},{name:"task.setActive",async handle(z,Z){let Y=Qz(z,"taskId")??null;return await Z.orch.setActiveTask(Y),Z.bus.publish("active-task",{taskId:Y}),{}}},{name:"issue.list",async handle(z,Z){return Z.issues.list(k1(z,"repoRoot"))}},{name:"issue.mutate",async handle(z,Z){let Y=await Z.issues.mutate(k1(z,"repoRoot"),z.op);return Z.bus.publish("issue.snapshot",Y),Y}},{name:"session.deliver",async handle(z,Z){let Y=k1(z,"taskId"),X=k1(z,"text"),G=Qz(z,"source");if(G!==void 0&&G!=="note"&&G!=="dispatcher")throw Error('source must be "note" or "dispatcher"');if(!Z.orch.getTask(Y))throw Error(`task not found: ${Y}`);return Z.bus.publish("session.deliver",{taskId:Y,text:X,at:Date.now(),source:G??"dispatcher"}),{ok:!0}}},{name:"note.file",async handle(z,Z){let Y=k1(z,"taskId"),X=k1(z,"text"),G=Z.orch.getTask(Y);if(!G)throw Error(`task not found: ${Y}`);let q=Z.orch.listTasks().find((j)=>(j.kind??"task")==="main"&&j.repo===G.repo&&!j.archived);if(!q||q.id===G.id)return{ok:!0,routed:!1};let H=G.title||G.branch||Y;return Z.bus.publish("session.deliver",{taskId:q.id,text:`[KOBE FIELD NOTE] from "${H}" (task ${Y}): ${X}`,at:Date.now(),source:"note"}),{ok:!0,routed:!0}}},{name:"engine.reportEvent",async handle(z,Z){let Y=k1(z,"kind");if(!gq(Y))throw Error(`unknown engine event kind: ${Y}`);let X=Qz(z,"taskId"),G=Qz(z,"cwd");if(!X&&G&&Y==="session-start"){let j=N5(Z.orch.listTasks(),G);if(j)try{await Z.orch.adoptWorktree({repo:j.repo,worktreePath:j.worktreePath,ifExists:"return"})}catch(B){w1("worktree-autosync",B)}}let q=X??(G?R5(Z.orch.listTasks(),G):void 0);if(!q)return{};let H=CC(z);if(Z.activity.report(q,Y,H),Y==="turn-start")F5(Z.orch,q).then((j)=>{if(j==="moved")console.log(`[status-rules] task ${q} auto-moved backlog \u2192 in_progress`)}).catch((j)=>w1("status-rules",j));return{}}}].map((z)=>[z.name,z]))}function Uf(J){if(!J||typeof J!=="object"||Array.isArray(J))return{};return J}function k1(J,z){let Z=J[z];if(typeof Z!=="string"||Z.length===0)throw Error(`${z} is required`);return Z}function Qz(J,z){let Z=J[z];if(Z===void 0||Z===null||Z==="")return;if(typeof Z!=="string")throw Error(`${z} must be a string`);return Z}function ff(J,z){let Z=J[z];if(Z===void 0||Z===null)return;if(typeof Z!=="boolean")throw Error(`${z} must be a boolean`);return Z}function Wf(J,z){let Z=Qz(J,z);return Z&&Z.trim().length>0?Z:void 0}function CC(J){let z=J.detail;if(!z||typeof z!=="object"||Array.isArray(z))return;let Z=z,Y={};if(Z.failure==="rate_limit"||Z.failure==="billing"||Z.failure==="other")Y.failure=Z.failure;if(Z.waiting==="permission"||Z.waiting==="input")Y.waiting=Z.waiting;if(typeof Z.note==="string")Y.note=Z.note;return Object.keys(Y).length>0?Y:void 0}var CH=C(()=>{Nq();O5();Yz();bJ();C5();YY()});import{execFile as bC}from"child_process";import{mkdir as kC,readFile as IC,realpath as b5,rename as SC,stat as yC,writeFile as TC}from"fs/promises";import{homedir as xC}from"os";import{dirname as uC,isAbsolute as EC,join as wC,resolve as k5}from"path";import{promisify as PC}from"util";function hC(J){return(J instanceof Error?J.message:String(J)).includes("not a git repository")}function kH(J=process.env.KOBE_HOME_DIR??xC()){return wC(J,".kobe","issues.json")}function S5(J){return typeof J==="string"&&I5.includes(J)}function vC(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:S5(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 mC(){return{version:1,repos:{}}}function cC(){let J=new Date,z=String(J.getMonth()+1).padStart(2,"0"),Z=String(J.getDate()).padStart(2,"0");return`${J.getFullYear()}-${z}-${Z}`}async function dC(J){let{stdout:z}=await Of("git",["-C",J,"rev-parse","--git-common-dir"]),Z=z.trim();return b5(EC(Z)?Z:k5(J,Z))}async function nC(J){let{stdout:z}=await Of("git",["-C",J,"rev-parse","--show-toplevel"]);return z.trim()}async function iC(J){let{stdout:z}=await Of("git",["-C",J,"worktree","list","--porcelain"]),Z=z.split(/\r?\n/).find((Y)=>Y.startsWith("worktree "))?.slice(9).trim();return Z?b5(Z):nC(J)}async function Kf(J){if(typeof J!=="string"||J.length===0)throw Error("repoRoot is required");let z=k5(J);if(!(await yC(z).catch(()=>null))?.isDirectory())throw Error("repoRoot does not exist");try{let[Y,X]=await Promise.all([iC(z),dC(z)]);return{repoRoot:Y,repoKey:X}}catch(Y){if(hC(Y))throw Error("repoRoot is not a git repository");throw Y}}async function Df(J){try{let z=JSON.parse(await IC(J,"utf8")),Z={};if(z.repos&&typeof z.repos==="object")for(let[Y,X]of Object.entries(z.repos)){if(!X||typeof X!=="object")continue;let G=X;Z[Y]={repoRoot:typeof G.repoRoot==="string"?G.repoRoot:"",nextId:typeof G.nextId==="number"?G.nextId:1,issues:Array.isArray(G.issues)?G.issues.map(vC).filter((q)=>q!==null):[]}}return{version:1,repos:Z}}catch(z){if(z.code==="ENOENT")return mC();throw z}}async function Lf(J,z){await kC(uC(J),{recursive:!0});let Z=`${J}.tmp`;await TC(Z,`${JSON.stringify(z,null,2)}
66
+ `,"utf8"),await SC(Z,J)}function Mf(J,z){return{repoRoot:J,exists:z!==null,nextId:z?.nextId??1,issues:z?.issues??[]}}async function Ff(J,z){let Y=(bH.get(J)??Promise.resolve()).then(z),X=Y.then(()=>{return},()=>{return});return bH.set(J,X),X.then(()=>{if(bH.get(J)===X)bH.delete(J)}),Y}class IH{path;constructor(J=kH()){this.path=J}async list(J){let{repoRoot:z,repoKey:Z}=await Kf(J);return Ff(this.path,async()=>{let Y=await Df(this.path),X=Y.repos[Z]??null;if(X&&X.repoRoot!==z)X.repoRoot=z,await Lf(this.path,Y);return Mf(z,X)})}async mirrorTaskDone(J,z){let{repoRoot:Z,repoKey:Y}=await Kf(J);if(!z)return null;return Ff(this.path,async()=>{let X=await Df(this.path),G=X.repos[Y];if(!G)return null;let q=G.issues.find((H)=>H.taskId===z);if(!q||q.status==="done")return null;return q.status="done",G.repoRoot=Z,await Lf(this.path,X),Mf(Z,G)})}async mutate(J,z){let{repoRoot:Z,repoKey:Y}=await Kf(J);if(!z||typeof z!=="object"||Array.isArray(z)||typeof z.type!=="string")throw Error("missing op");return Ff(this.path,async()=>{let X=await Df(this.path),G=X.repos[Y];if(!G)G={repoRoot:Z,nextId:1,issues:[]},X.repos[Y]=G;G.repoRoot=Z;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:cC(),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(!S5(q.status))throw Error(`invalid status: must be one of ${I5.join(", ")}`);let H=G.issues.find((j)=>j.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=G.issues.find((j)=>j.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=G.issues.find((j)=>j.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=G.issues.find((j)=>j.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=G.issues.filter((j)=>j.id!==q.id);if(H.length===G.issues.length)throw Error(`no issue #${q.id}`);G.issues=H}else throw Error(`unknown op type: ${q.type}`);return await Lf(this.path,X),Mf(Z,G)})}}var Of,I5,bH;var Af=C(()=>{Of=PC(bC),I5=["open","doing","hold","done"];bH=new Map});import{lstat as y5,readdir as lC,realpath as $C,stat as aC}from"fs/promises";import{join as _C,relative as pC,resolve as T5,sep as rC}from"path";import{Readable as oC}from"stream";function P5(J,z={}){let Z=z.entryType||z.type;if(Z==="both")Z=aJ.FILE_DIR_TYPE;if(Z)z.type=Z;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(Z&&!x5.includes(Z))throw Error(`readdirp: Invalid type passed. Use one of ${x5.join(", ")}`);return z.root=J,new gf(z)}var aJ,Rf,w5="READDIRP_RECURSIVE_ERROR",sC,x5,tC,eC,Jb=(J)=>sC.has(J.code),zb,u5=(J)=>!0,E5=(J)=>{if(J===void 0)return u5;if(typeof J==="function")return J;if(typeof J==="string"){let z=J.trim();return(Z)=>Z.basename===z}if(Array.isArray(J)){let z=J.map((Z)=>Z.trim());return(Z)=>z.some((Y)=>Z.basename===Y)}return u5},gf;var h5=C(()=>{aJ={FILE_TYPE:"files",DIR_TYPE:"directories",FILE_DIR_TYPE:"files_directories",EVERYTHING_TYPE:"all"},Rf={root:".",fileFilter:(J)=>!0,directoryFilter:(J)=>!0,type:aJ.FILE_TYPE,lstat:!1,depth:2147483648,alwaysStat:!1,highWaterMark:4096};Object.freeze(Rf);sC=new Set(["ENOENT","EPERM","EACCES","ELOOP",w5]),x5=[aJ.DIR_TYPE,aJ.EVERYTHING_TYPE,aJ.FILE_DIR_TYPE,aJ.FILE_TYPE],tC=new Set([aJ.DIR_TYPE,aJ.EVERYTHING_TYPE,aJ.FILE_DIR_TYPE]),eC=new Set([aJ.EVERYTHING_TYPE,aJ.FILE_DIR_TYPE,aJ.FILE_TYPE]),zb=process.platform==="win32";gf=class gf extends oC{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={...Rf,...J},{root:Z,type:Y}=z;this._fileFilter=E5(z.fileFilter),this._directoryFilter=E5(z.directoryFilter);let X=z.lstat?y5:aC;if(zb)this._stat=(G)=>X(G,{bigint:!0});else this._stat=X;this._maxDepth=z.depth!=null&&Number.isSafeInteger(z.depth)?z.depth:Rf.depth,this._wantsDir=Y?tC.has(Y):!1,this._wantsFile=Y?eC.has(Y):!1,this._wantsEverything=Y===aJ.EVERYTHING_TYPE,this._root=T5(Z),this._isDirent=!z.alwaysStat,this._statsProp=this._isDirent?"dirent":"stats",this._rdOptions={encoding:"utf8",withFileTypes:this._isDirent},this.parents=[this._exploreDir(Z,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,Z=z&&z.files;if(Z&&Z.length>0){let{path:Y,depth:X}=z,G=Z.splice(0,J).map((H)=>this._formatEntry(H,Y)),q=await Promise.all(G);for(let H of q){if(!H)continue;if(this.destroyed)return;let j=await this._getEntryType(H);if(j==="directory"&&this._directoryFilter(H)){if(X<=this._maxDepth)this.parents.push(this._exploreDir(H.fullPath,X+1));if(this._wantsDir)this.push(H),J--}else if((j==="file"||this._includeAsFile(H))&&this._fileFilter(H)){if(this._wantsFile)this.push(H),J--}}}else{let Y=this.parents.pop();if(!Y){this.push(null);break}if(this.parent=await Y,this.destroyed)return}}}catch(z){this.destroy(z)}finally{this.reading=!1}}async _exploreDir(J,z){let Z;try{Z=await lC(J,this._rdOptions)}catch(Y){this._onError(Y)}return{files:Z,depth:z,path:J}}async _formatEntry(J,z){let Z,Y=this._isDirent?J.name:J;try{let X=T5(_C(z,Y));Z={path:pC(this._root,X),fullPath:X,basename:Y},Z[this._statsProp]=this._isDirent?J:await this._stat(X)}catch(X){this._onError(X);return}return Z}_onError(J){if(Jb(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 Z=J.fullPath;try{let Y=await $C(Z),X=await y5(Y);if(X.isFile())return"file";if(X.isDirectory()){let G=Y.length;if(Z.startsWith(Y)&&Z.substr(G,1)===rC){let q=Error(`Circular symlink detected: "${Z}" points to "${Y}"`);return q.code=w5,this._onError(q)}return"directory"}}catch(Y){return this._onError(Y),""}}}_includeAsFile(J){let z=J&&J[this._statsProp];return z&&this._wantsEverything&&!z.isDirectory()}}});import{watch as Zb,unwatchFile as v5,watchFile as Yb}from"fs";import{realpath as Nf,lstat as Xb,open as Gb,stat as c5}from"fs/promises";import{type as Qb}from"os";import*as c1 from"path";function m5(J,z,Z,Y,X){let G=(q,H)=>{if(Z(J),X(q,H,{watchedPath:J}),H&&J!==H)TH(c1.resolve(J,H),SY,c1.join(J,H))};try{return Zb(J,{persistent:z.persistent},G)}catch(q){Y(q);return}}class Sf{fsw;_boundHandleError;constructor(J){this.fsw=J,this._boundHandleError=(z)=>J._handleError(z)}_watchWithNodeFs(J,z){let Z=this.fsw.options,Y=c1.dirname(J),X=c1.basename(J);this.fsw._getWatchedDir(Y).add(X);let q=c1.resolve(J),H={persistent:Z.persistent};if(!z)z=xH;let j;if(Z.usePolling){let B=Z.interval!==Z.binaryInterval;H.interval=B&&Kb(X)?Z.binaryInterval:Z.interval,j=Mb(J,q,H,{listener:z,rawEmitter:this.fsw._emitRaw})}else j=Lb(J,q,H,{listener:z,errHandler:this._boundHandleError,rawEmitter:this.fsw._emitRaw});return j}_handleFile(J,z,Z){if(this.fsw.closed)return;let Y=c1.dirname(J),X=c1.basename(J),G=this.fsw._getWatchedDir(Y),q=z;if(G.has(X))return;let H=async(B,V)=>{if(!this.fsw._throttle(fb,J,5))return;if(!V||V.mtimeMs===0)try{let f=await c5(J);if(this.fsw.closed)return;let{atimeMs:U,mtimeMs:L}=f;if(!U||U<=L||L!==q.mtimeMs)this.fsw._emit(Iz.CHANGE,J,f);if((Hb||jb||Bb)&&q.ino!==f.ino){this.fsw._closeFile(B),q=f;let O=this._watchWithNodeFs(J,H);if(O)this.fsw._addPathCloser(B,O)}else q=f}catch(f){this.fsw._remove(Y,X)}else if(G.has(X)){let{atimeMs:f,mtimeMs:U}=V;if(!f||f<=U||U!==q.mtimeMs)this.fsw._emit(Iz.CHANGE,J,V);q=V}},j=this._watchWithNodeFs(J,H);if(!(Z&&this.fsw.options.ignoreInitial)&&this.fsw._isntIgnored(J)){if(!this.fsw._throttle(Iz.ADD,J,0))return;this.fsw._emit(Iz.ADD,J,z)}return j}async _handleSymlink(J,z,Z,Y){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 Nf(Z)}catch(H){return this.fsw._emitReady(),!0}if(this.fsw.closed)return;if(G.has(Y)){if(this.fsw._symlinkPaths.get(X)!==q)this.fsw._symlinkPaths.set(X,q),this.fsw._emit(Iz.CHANGE,Z,J.stats)}else G.add(Y),this.fsw._symlinkPaths.set(X,q),this.fsw._emit(Iz.ADD,Z,J.stats);return this.fsw._emitReady(),!0}if(this.fsw._symlinkPaths.has(X))return!0;this.fsw._symlinkPaths.set(X,!0)}_handleRead(J,z,Z,Y,X,G,q){J=c1.join(J,"");let H=Y?`${J}:${Y}`:J;if(q=this.fsw._throttle("readdir",H,1000),!q)return;let j=this.fsw._getWatchedDir(Z.path),B=new Set,V=this.fsw._readdirp(J,{fileFilter:(f)=>Z.filterPath(f),directoryFilter:(f)=>Z.filterDir(f)});if(!V)return;return V.on(qb,async(f)=>{if(this.fsw.closed){V=void 0;return}let U=f.path,L=c1.join(J,U);if(B.add(U),f.stats.isSymbolicLink()&&await this._handleSymlink(f,J,L,U))return;if(this.fsw.closed){V=void 0;return}if(U===Y||!Y&&!j.has(U))this.fsw._incrReadyCount(),L=c1.join(X,c1.relative(X,L)),this._addToNodeFs(L,z,Z,G+1)}).on(Iz.ERROR,this._boundHandleError),new Promise((f,U)=>{if(!V)return U();V.once(kf,()=>{if(this.fsw.closed){V=void 0;return}let L=q?q.clear():!1;if(f(void 0),j.getChildren().filter((O)=>{return O!==J&&!B.has(O)}).forEach((O)=>{this.fsw._remove(J,O)}),V=void 0,L)this._handleRead(J,!1,Z,Y,X,G,q)})})}async _handleDir(J,z,Z,Y,X,G,q){let H=this.fsw._getWatchedDir(c1.dirname(J)),j=H.has(c1.basename(J));if(!(Z&&this.fsw.options.ignoreInitial)&&!X&&!j)this.fsw._emit(Iz.ADD_DIR,J,z);H.add(c1.basename(J)),this.fsw._getWatchedDir(J);let B,V,f=this.fsw.options.depth;if((f==null||Y<=f)&&!this.fsw._symlinkPaths.has(q)){if(!X){if(await this._handleRead(J,Z,G,X,J,Y,B),this.fsw.closed)return}V=this._watchWithNodeFs(J,(U,L)=>{if(L&&L.mtimeMs===0)return;this._handleRead(U,!1,G,X,J,Y,B)})}return V}async _addToNodeFs(J,z,Z,Y,X){let G=this.fsw._emitReady;if(this.fsw._isIgnored(J)||this.fsw.closed)return G(),!1;let q=this.fsw._getWatchHelpers(J);if(Z)q.filterPath=(H)=>Z.filterPath(H),q.filterDir=(H)=>Z.filterDir(H);try{let H=await Wb[q.statMethod](q.watchPath);if(this.fsw.closed)return;if(this.fsw._isIgnored(q.watchPath,H))return G(),!1;let j=this.fsw.options.followSymlinks,B;if(H.isDirectory()){let V=c1.resolve(J),f=j?await Nf(J):J;if(this.fsw.closed)return;if(B=await this._handleDir(q.watchPath,H,z,Y,X,q,f),this.fsw.closed)return;if(V!==f&&f!==void 0)this.fsw._symlinkPaths.set(V,f)}else if(H.isSymbolicLink()){let V=j?await Nf(J):J;if(this.fsw.closed)return;let f=c1.dirname(q.watchPath);if(this.fsw._getWatchedDir(f).add(q.watchPath),this.fsw._emit(Iz.ADD,q.watchPath,H),B=await this._handleDir(f,H,z,Y,J,q,V),this.fsw.closed)return;if(V!==void 0)this.fsw._symlinkPaths.set(c1.resolve(J),V)}else B=this._handleFile(q.watchPath,H,z);if(G(),B)this.fsw._addPathCloser(J,B);return!1}catch(H){if(this.fsw._handleError(H))return G(),J}}}var qb="data",kf="end",d5="close",xH=()=>{},uH,If,Hb,jb,Bb,n5,h1,Iz,fb="watch",Wb,SY="listeners",SH="errHandlers",SX="rawEmitters",Vb,Ub,Kb=(J)=>Ub.has(c1.extname(J).slice(1).toLowerCase()),bf=(J,z)=>{if(J instanceof Set)J.forEach(z);else z(J)},JQ=(J,z,Z)=>{let Y=J[z];if(!(Y instanceof Set))J[z]=Y=new Set([Y]);Y.add(Z)},Db=(J)=>(z)=>{let Z=J[z];if(Z instanceof Set)Z.clear();else delete J[z]},zQ=(J,z,Z)=>{let Y=J[z];if(Y instanceof Set)Y.delete(Z);else if(Y===Z)delete J[z]},i5=(J)=>J instanceof Set?J.size===0:!J,yH,TH=(J,z,Z,Y,X)=>{let G=yH.get(J);if(!G)return;bf(G[z],(q)=>{q(Z,Y,X)})},Lb=(J,z,Z,Y)=>{let{listener:X,errHandler:G,rawEmitter:q}=Y,H=yH.get(z),j;if(!Z.persistent){if(j=m5(J,Z,X,G,q),!j)return;return j.close.bind(j)}if(H)JQ(H,SY,X),JQ(H,SH,G),JQ(H,SX,q);else{if(j=m5(J,Z,TH.bind(null,z,SY),G,TH.bind(null,z,SX)),!j)return;j.on(Iz.ERROR,async(B)=>{let V=TH.bind(null,z,SH);if(H)H.watcherUnusable=!0;if(If&&B.code==="EPERM")try{await(await Gb(J,"r")).close(),V(B)}catch(f){}else V(B)}),H={listeners:X,errHandlers:G,rawEmitters:q,watcher:j},yH.set(z,H)}return()=>{if(zQ(H,SY,X),zQ(H,SH,G),zQ(H,SX,q),i5(H.listeners))H.watcher.close(),yH.delete(z),Vb.forEach(Db(H)),H.watcher=void 0,Object.freeze(H)}},Cf,Mb=(J,z,Z,Y)=>{let{listener:X,rawEmitter:G}=Y,q=Cf.get(z),H=q&&q.options;if(H&&(H.persistent<Z.persistent||H.interval>Z.interval))v5(z),q=void 0;if(q)JQ(q,SY,X),JQ(q,SX,G);else q={listeners:X,rawEmitters:G,options:Z,watcher:Yb(z,Z,(j,B)=>{bf(q.rawEmitters,(f)=>{f(Iz.CHANGE,z,{curr:j,prev:B})});let V=j.mtimeMs;if(j.size!==B.size||V>B.mtimeMs||V===0)bf(q.listeners,(f)=>f(J,j))})},Cf.set(z,q);return()=>{if(zQ(q,SY,X),zQ(q,SX,G),i5(q.listeners))Cf.delete(z),v5(z),q.options=q.watcher=void 0,Object.freeze(q)}};var l5=C(()=>{uH=process.platform,If=uH==="win32",Hb=uH==="darwin",jb=uH==="linux",Bb=uH==="freebsd",n5=Qb()==="OS400",h1={ALL:"all",READY:"ready",ADD:"add",CHANGE:"change",ADD_DIR:"addDir",UNLINK:"unlink",UNLINK_DIR:"unlinkDir",RAW:"raw",ERROR:"error"},Iz=h1,Wb={lstat:Xb,stat:c5},Vb=[SY,SH,SX],Ub=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"]),yH=new Map;Cf=new Map});import{EventEmitter as Fb}from"events";import{stat as Ob,Stats as Nn}from"fs";import{readdir as Ab,stat as Rb}from"fs/promises";import*as f1 from"path";function EH(J){return Array.isArray(J)?J:[J]}function Sb(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 Z=f1.relative(J.path,z);if(!Z)return!1;return!Z.startsWith("..")&&!f1.isAbsolute(Z)}return!1};return()=>!1}function yb(J){if(typeof J!=="string")throw Error("string expected");J=f1.normalize(J),J=J.replace(/\\/g,"/");let z=!1;if(J.startsWith("//"))z=!0;if(J=J.replace(o5,"/"),z)J="/"+J;return J}function $5(J,z,Z){let Y=yb(z);for(let X=0;X<J.length;X++){let G=J[X];if(G(Y,Z))return!0}return!1}function Tb(J,z){if(J==null)throw TypeError("anymatch: specify first argument");let Y=EH(J).map((X)=>Sb(X));if(z==null)return(X,G)=>{return $5(Y,X,G)};return $5(Y,z)}class t5{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!==r5&&J!==Nb)z.add(J)}async remove(J){let{items:z}=this;if(!z)return;if(z.delete(J),z.size>0)return;let Z=this.path;try{await Ab(Z)}catch(Y){if(this._removeWatcher)this._removeWatcher(f1.dirname(Z),f1.basename(Z))}}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=xH,this.items=ub,Object.freeze(this)}}class e5{fsw;path;watchPath;fullWatchPath;dirParts;followSymlinks;statMethod;constructor(J,z,Z){this.fsw=Z;let Y=J;this.path=J=J.replace(Ib,""),this.watchPath=Y,this.fullWatchPath=f1.resolve(Y),this.dirParts=[],this.dirParts.forEach((X)=>{if(X.length>1)X.pop()}),this.followSymlinks=z,this.statMethod=z?Eb:wb}entryPath(J){return f1.join(this.watchPath,f1.relative(this.watchPath,J.fullPath))}filterPath(J){let{stats:z}=J;if(z&&z.isSymbolicLink())return this.filterDir(J);let Z=this.entryPath(J);return this.fsw._isntIgnored(Z,z)&&this.fsw._hasReadPermissions(z)}filterDir(J){return this.fsw._isntIgnored(this.entryPath(J),J.stats)}}function z6(J,z={}){let Z=new J6(z);return Z.add(J),Z}var yf="/",gb="//",r5=".",Nb="..",Cb="string",bb,o5,kb,Ib,Tf=(J)=>typeof J==="object"&&J!==null&&!(J instanceof RegExp),a5=(J)=>{let z=EH(J).flat();if(!z.every((Z)=>typeof Z===Cb))throw TypeError(`Non-string provided as watch path: ${z}`);return z.map(s5)},_5=(J)=>{let z=J.replace(bb,yf),Z=!1;if(z.startsWith(gb))Z=!0;if(z=z.replace(o5,yf),Z)z=yf+z;return z},s5=(J)=>_5(f1.normalize(_5(J))),p5=(J="")=>(z)=>{if(typeof z==="string")return s5(f1.isAbsolute(z)?z:f1.join(J,z));else return z},xb=(J,z)=>{if(f1.isAbsolute(J))return J;return f1.join(z,J)},ub,Eb="stat",wb="lstat",J6;var Z6=C(()=>{h5();l5();/*! chokidar - MIT License (c) 2012 Paul Miller (paulmillr.com) */bb=/\\/g,o5=/\/\//g,kb=/\..*\.(sw[px])$|~$|\.subl.*\.tmp/,Ib=/^\.[/\\]/;ub=Object.freeze(new Set);J6=class J6 extends Fb{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,Z={stabilityThreshold:2000,pollInterval:100},Y={persistent:!0,ignoreInitial:!1,ignorePermissionErrors:!1,interval:100,binaryInterval:300,followSymlinks:!0,usePolling:!1,atomic:!0,...J,ignored:J.ignored?EH(J.ignored):EH([]),awaitWriteFinish:z===!0?Z:typeof z==="object"?{...Z,...z}:!1};if(n5)Y.usePolling=!0;if(Y.atomic===void 0)Y.atomic=!Y.usePolling;let X=process.env.CHOKIDAR_USEPOLLING;if(X!==void 0){let H=X.toLowerCase();if(H==="false"||H==="0")Y.usePolling=!1;else if(H==="true"||H==="1")Y.usePolling=!0;else Y.usePolling=!!H}let G=process.env.CHOKIDAR_INTERVAL;if(G)Y.interval=Number.parseInt(G,10);let q=0;this._emitReady=()=>{if(q++,q>=this._readyCount)this._emitReady=xH,this._readyEmitted=!0,process.nextTick(()=>this.emit(h1.READY))},this._emitRaw=(...H)=>this.emit(h1.RAW,...H),this._boundRemove=this._remove.bind(this),this.options=Y,this._nodeFsHandler=new Sf(this),Object.freeze(Y)}_addIgnoredPath(J){if(Tf(J)){for(let z of this._ignoredPaths)if(Tf(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(Tf(z)&&z.path===J)this._ignoredPaths.delete(z)}}add(J,z,Z){let{cwd:Y}=this.options;this.closed=!1,this._closePromise=void 0;let X=a5(J);if(Y)X=X.map((G)=>{return xb(G,Y)});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,!Z,void 0,0,z);if(q)this._emitReady();return q})).then((G)=>{if(this.closed)return;G.forEach((q)=>{if(q)this.add(f1.dirname(q),f1.basename(z||q))})}),this}unwatch(J){if(this.closed)return this;let z=a5(J),{cwd:Z}=this.options;return z.forEach((Y)=>{if(!f1.isAbsolute(Y)&&!this._closers.has(Y)){if(Z)Y=f1.join(Z,Y);Y=f1.resolve(Y)}if(this._closePath(Y),this._addIgnoredPath(Y),this._watched.has(Y))this._addIgnoredPath({path:Y,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((Z)=>{let Y=Z();if(Y instanceof Promise)J.push(Y)})),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,Z)=>{let X=(this.options.cwd?f1.relative(this.options.cwd,Z):Z)||r5;J[X]=z.getChildren().sort()}),J}emitWithAll(J,z){if(this.emit(J,...z),J!==h1.ERROR)this.emit(h1.ALL,J,...z)}async _emit(J,z,Z){if(this.closed)return;let Y=this.options;if(If)z=f1.normalize(z);if(Y.cwd)z=f1.relative(Y.cwd,z);let X=[z];if(Z!=null)X.push(Z);let G=Y.awaitWriteFinish,q;if(G&&(q=this._pendingWrites.get(z)))return q.lastChange=new Date,this;if(Y.atomic){if(J===h1.UNLINK)return this._pendingUnlinks.set(z,[J,...X]),setTimeout(()=>{this._pendingUnlinks.forEach((H,j)=>{this.emit(...H),this.emit(h1.ALL,...H),this._pendingUnlinks.delete(j)})},typeof Y.atomic==="number"?Y.atomic:100),this;if(J===h1.ADD&&this._pendingUnlinks.has(z))J=h1.CHANGE,this._pendingUnlinks.delete(z)}if(G&&(J===h1.ADD||J===h1.CHANGE)&&this._readyEmitted){let H=(j,B)=>{if(j)J=h1.ERROR,X[0]=j,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,H),this}if(J===h1.CHANGE){if(!this._throttle(h1.CHANGE,z,50))return this}if(Y.alwaysStat&&Z===void 0&&(J===h1.ADD||J===h1.ADD_DIR||J===h1.CHANGE)){let H=Y.cwd?f1.join(Y.cwd,z):z,j;try{j=await Rb(H)}catch(B){}if(!j||this.closed)return;X.push(j)}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(h1.ERROR,J);return J||this.closed}_throttle(J,z,Z){if(!this._throttled.has(J))this._throttled.set(J,new Map);let Y=this._throttled.get(J);if(!Y)throw Error("invalid throttle");let X=Y.get(z);if(X)return X.count++,!1;let G,q=()=>{let j=Y.get(z),B=j?j.count:0;if(Y.delete(z),clearTimeout(G),j)clearTimeout(j.timeoutObject);return B};G=setTimeout(q,Z);let H={timeoutObject:G,clear:q,count:0};return Y.set(z,H),H}_incrReadyCount(){return this._readyCount++}_awaitWriteFinish(J,z,Z,Y){let X=this.options.awaitWriteFinish;if(typeof X!=="object")return;let G=X.pollInterval,q,H=J;if(this.options.cwd&&!f1.isAbsolute(J))H=f1.join(this.options.cwd,J);let j=new Date,B=this._pendingWrites;function V(f){Ob(H,(U,L)=>{if(U||!B.has(J)){if(U&&U.code!=="ENOENT")Y(U);return}let O=Number(new Date);if(f&&L.size!==f.size)B.get(J).lastChange=O;let A=B.get(J);if(O-A.lastChange>=z)B.delete(J),Y(void 0,L);else q=setTimeout(V,G,L)})}if(!B.has(J))B.set(J,{lastChange:j,cancelWait:()=>{return B.delete(J),clearTimeout(q),Z}}),q=setTimeout(V,G)}_isIgnored(J,z){if(this.options.atomic&&kb.test(J))return!0;if(!this._userIgnored){let{cwd:Z}=this.options,X=(this.options.ignored||[]).map(p5(Z)),q=[...[...this._ignoredPaths].map(p5(Z)),...X];this._userIgnored=Tb(q,void 0)}return this._userIgnored(J,z)}_isntIgnored(J,z){return!this._isIgnored(J,z)}_getWatchHelpers(J){return new e5(J,this.options.followSymlinks,this)}_getWatchedDir(J){let z=f1.resolve(J);if(!this._watched.has(z))this._watched.set(z,new t5(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,Z){let Y=f1.join(J,z),X=f1.resolve(Y);if(Z=Z!=null?Z:this._watched.has(Y)||this._watched.has(X),!this._throttle("remove",Y,100))return;if(!Z&&this._watched.size===1)this.add(J,z,!0);this._getWatchedDir(Y).getChildren().forEach((f)=>this._remove(Y,f));let H=this._getWatchedDir(J),j=H.has(z);if(H.remove(z),this._symlinkPaths.has(X))this._symlinkPaths.delete(X);let B=Y;if(this.options.cwd)B=f1.relative(this.options.cwd,Y);if(this.options.awaitWriteFinish&&this._pendingWrites.has(B)){if(this._pendingWrites.get(B).cancelWait()===h1.ADD)return}this._watched.delete(Y),this._watched.delete(X);let V=Z?h1.UNLINK_DIR:h1.UNLINK;if(j&&!this._isIgnored(Y))this._emit(V,Y);this._closePath(Y)}_closePath(J){this._closeFile(J);let z=f1.dirname(J);this._getWatchedDir(z).remove(f1.basename(J))}_closeFile(J){let z=this._closers.get(J);if(!z)return;z.forEach((Z)=>Z()),this._closers.delete(J)}_addPathCloser(J,z){if(!z)return;let Z=this._closers.get(J);if(!Z)Z=[],this._closers.set(J,Z);Z.push(z)}_readdirp(J,z){if(this.closed)return;let Z={type:h1.ALL,alwaysStat:!0,lstat:!0,...z,depth:0},Y=P5(J,Z);return this._streams.add(Y),Y.once(d5,()=>{Y=void 0}),Y.once(kf,()=>{if(Y)this._streams.delete(Y),Y=void 0}),Y}}});import{mkdirSync as Pb,statSync as hb}from"fs";import{basename as Y6,dirname as vb,join as mb}from"path";function wH(J){if(J.debounceMs<=0)return()=>{};let z=vb(J.filePath),Z=new Set([Y6(J.filePath),...J.matchBasenames??[]]),Y=null,X=null,G=!1,q=()=>{try{J.onTrigger()}catch(V){J.onError(V)}},H=()=>{if(Y)clearTimeout(Y);Y=setTimeout(()=>{Y=null,q()},J.debounceMs),Y.unref?.()},j=(V)=>{if(!Z.has(Y6(V)))return;H()},B=(V)=>{try{let f=hb(mb(z,V));return`${f.mtimeMs}:${f.size}`}catch{return null}};try{Pb(z,{recursive:!0});let V=new Map;for(let f of Z)V.set(f,B(f));X=z6(z,{depth:0,ignoreInitial:!0}),X.on("add",j),X.on("change",j),X.on("unlink",j),X.on("error",J.onError),X.once("ready",()=>{for(let f of Z)if(B(f)!==V.get(f)){H();break}})}catch(V){J.onError(V)}return()=>{if(G)return;if(G=!0,Y)clearTimeout(Y),Y=null;let V=X;X=null,V?.close().catch(J.onError)}}var xf=C(()=>{Z6()});import{homedir as cb}from"os";import{basename as db,join as nb}from"path";function Ef(J=process.env.KOBE_HOME_DIR??cb()){return nb(J,".kobe","settings","keybindings.yaml")}function X6(J,z={}){let Z=z.debounceMs??uf;if(Z<=0)return()=>{};let Y=z.path??Ef(),X=db(Y),G=X.replace(/\.yaml$/,".yml"),q=0;return J.publish("keybindings",{rev:q}),wH({filePath:Y,matchBasenames:[X,G],debounceMs:Z,onTrigger:()=>{try{q+=1,J.publish("keybindings",{rev:q})}catch(j){w1("keybindings-watcher",j)}},onError:(j)=>w1("keybindings-watcher",j)})}var uf=200;var G6=C(()=>{xf()});class wf{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??ib,this.log=J.log??lz}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 ib=(J,z)=>{let Z=setTimeout(J,z);return Z.unref?.(),()=>clearTimeout(Z)};var Q6=()=>{};import{spawn as lb}from"child_process";function tb(J,z,Z){return new Promise((Y)=>{let X="",G="",q=!1,H=(B,V)=>{if(q)return;q=!0,Y({status:B,stdout:X,stderr:G,spawnError:V})},j=lb("gh",J.slice(),{cwd:z,stdio:["ignore","pipe","pipe"],signal:Z,killSignal:"SIGKILL"});j.stdout?.on("data",(B)=>{X+=String(B)}),j.stderr?.on("data",(B)=>{G+=String(B)}),j.on("error",()=>H(null,!Z.aborted)),j.on("close",(B)=>H(B,!1))})}function Jk(J){if(J.archived)return!1;if(J.kind==="main")return!1;if(!J.branch||!J.worktreePath)return!1;if(e1(J.repo)||e1(J.worktreePath))return!1;return!0}async function zk(J,z){let Z=z.tickMs??ZQ,Y=z.rand,X={tickMs:Z,settledMs:ab,noPrMs:$b,noRemoteMs:rb,failureBaseMs:_b,failureCapMs:pb,jitterRatio:ob},G=[];for(let q of J.listTasks()){if(!Jk(q)){z.schedule.delete(q.id);continue}let H=z.schedule.get(q.id);if(H&&z.now<H.nextAllowedAt)continue;let j=H?.failures??0;try{let B=await z.run(q.worktreePath,q.branch);if(B.kind==="error"){lz("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,bG({kind:"error",error:B.error},j,z.now,X,Y));continue}if(B.kind==="empty"){z.schedule.set(q.id,bG({kind:"empty"},j,z.now,X,Y));continue}let V=NU(B.view,z.at),f=J.getTask(q.id);if(!f){z.schedule.delete(q.id);continue}if(!vq(f.prStatus,V??void 0))await J.setPRStatus(q.id,V),G.push(q.id);let U=V?.lifecycle==="merged"||V?.lifecycle==="closed";z.schedule.set(q.id,bG({kind:"pr",settled:U},j,z.now,X,Y))}catch(B){w1("pr-status-poller",B),z.schedule.set(q.id,bG({kind:"error",error:"network"},j,z.now,X,Y))}}return G}function q6(J,z=ZQ,Z,Y=eb){if(z<=0)return()=>{};let X=new Map,G=!1,H=setInterval(()=>{if(Z&&!Z())return;if(G)return;G=!0,zk(J,{run:Y,now:Date.now(),at:new Date().toISOString(),schedule:X,tickMs:z}).catch((j)=>w1("pr-status-poller",j)).finally(()=>{G=!1})},z);return H.unref?.(),()=>clearInterval(H)}var ZQ=30000,$b=300000,ab=600000,_b,pb=900000,rb=1800000,ob=0.2,sb=1e4,eb=async(J,z)=>{let Z=new AbortController,Y=!1,X=setTimeout(()=>{Y=!0,Z.abort()},sb);try{let G=await tb(["pr","view",z,"--json",gU],J,Z.signal);if(G.status===0&&!Y)try{let q=JSON.parse(G.stdout);return typeof q.number==="number"?{kind:"pr",view:q}:{kind:"empty"}}catch{return GB({parseError:!0})}return GB({spawnError:G.spawnError,timedOut:Y,exitCode:G.status,stderr:G.stderr})}finally{clearTimeout(X)}};var H6=C(()=>{QB();S1();_b=ZQ});function Gk(J,z){return J.mtimeMs===z.mtimeMs&&J.completionId===z.completionId&&J.completionAt===z.completionAt}async function Qk(J,z,Z,Y){let X=await JX(z,J),G=await Z.latestCompletion(J);return{mtimeMs:X,completionId:G?.id??null,completionAt:G?.timestampMs??0}}function qk(J){let z=new Map;for(let Z of J){if(Z.archived)continue;if(!Z.worktreePath)continue;if(e1(Z.repo)||e1(Z.worktreePath))continue;if(z.has(Z.worktreePath))continue;z.set(Z.worktreePath,Z.vendor??zJ)}return z}class j6{orch;bus;options;entries=new Map;stopped=!1;constructor(J,z,Z={}){this.orch=J;this.bus=z;this.options=Z}tick(){if(this.stopped)return;if(this.options.hasSubscribers&&!this.options.hasSubscribers())return;try{let J=qk(this.orch.listTasks()),z=!1;for(let Z of this.entries.keys()){if(J.has(Z))continue;if(this.entries.get(Z)?.value)z=!0;this.entries.delete(Z)}if(z)this.publish();for(let[Z,Y]of J)this.maybeCollect(Z,Y)}catch(J){w1("transcript-activity",J)}}stop(){this.stopped=!0}maybeCollect(J,z){let Z=this.entries.get(J);if(!Z)Z={inFlight:!1,nextAllowedAt:0,vendor:z,detector:FG(z)},this.entries.set(J,Z);else if(Z.vendor!==z)Z.vendor=z,Z.detector=FG(z);let Y=this.options.cadence??{timeoutMs:Zk,slowRetryMs:Yk,minIntervalMs:Xk},X=this.options.run??Qk,G=Z;GX(G,Y,(q)=>X(J,G.vendor,G.detector,q),(q)=>{if(this.stopped)return;if(this.entries.get(J)!==G)return;if(G.value&&Gk(G.value,q))return;G.value=q,this.publish()})}publish(){let J={};for(let[z,Z]of this.entries)if(Z.value)J[z]=Z.value;this.bus.publish("transcript.activity",{activity:J})}}function B6(J,z,Z=Pf,Y){if(Z<=0)return()=>{};let X=new j6(J,z,{hasSubscribers:Y});X.tick();let G=setInterval(()=>X.tick(),Z);return G.unref?.(),()=>{clearInterval(G),X.stop()}}var Pf=1500,Zk=4000,Yk=60000,Xk=1500;var f6=C(()=>{Aq();QX();Rq();S1();Yz()});import{readFileSync as Hk}from"fs";import{homedir as jk}from"os";import{basename as Bk,join as fk}from"path";function vf(J=process.env.KOBE_HOME_DIR??jk()){return fk(J,".config","kobe","state.json")}function W6(J){let z={};try{let B=JSON.parse(Hk(J,"utf8"));if(B&&typeof B==="object"&&!Array.isArray(B))z=B}catch{}let Z=typeof z.activeTheme==="string"&&z.activeTheme.length>0?z.activeTheme:"claude",Y=z.transparentBackground===!0,X=typeof z.focusAccent==="string"&&Vk.includes(z.focusAccent)?z.focusAccent:null,G=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,j=typeof z.locale==="string"&&z.locale.length>0?z.locale:"en";return{theme:Z,transparentBackground:Y,focusAccent:X,locale:j,sortMode:G,keysCollapsed:q,projectFilter:H}}function Uk(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 V6(J,z={}){let Z=z.debounceMs??hf;if(Z<=0)return()=>{};let Y=z.pollMs??Wk,X=z.statePath??vf(),G=Bk(X),q=W6(X);return J.publish("ui-prefs",q),wH({filePath:X,matchBasenames:[G],debounceMs:Z,pollMs:Y,onTrigger:()=>{try{let j=W6(X);if(Uk(q,j))return;q=j,J.publish("ui-prefs",j)}catch(j){w1("ui-prefs-watcher",j)}},onError:(j)=>w1("ui-prefs-watcher",j)})}var hf=200,Wk=250,Vk;var U6=C(()=>{xf();Vk=["primary","success","info"]});function yX(J){return yY.includes(J)?J:"auto"}var yY,K6,WZ="editor.kind",lZ="editor.customCommand",PH="auto";var hH=C(()=>{yY=["auto","vim","nvim","nano","emacs","custom"],K6=["nvim","vim","emacs","nano"]});function xY(J){return J==="taskpanel"?"taskpanel":"chattab"}var VZ="settings.surface",TY="chattab";function D6(J){return J>="0"&&J<="7"}function M6(J,z){let Z=[],Y="",X=()=>{if(Y.length>0){for(let q of Kk.encode(Y))Z.push(q);Y=""}},G=z+1;while(G<J.length){let q=J[G];if(q==='"'){G++;break}if(q==="\\"){let H=J[G+1];if(H===void 0){Y+="\\",G++;continue}switch(H){case"a":X(),Z.push(7),G+=2;break;case"b":X(),Z.push(8),G+=2;break;case"t":X(),Z.push(9),G+=2;break;case"n":X(),Z.push(10),G+=2;break;case"v":X(),Z.push(11),G+=2;break;case"f":X(),Z.push(12),G+=2;break;case"r":X(),Z.push(13),G+=2;break;case'"':Y+='"',G+=2;break;case"\\":Y+="\\",G+=2;break;default:if(D6(H)){let j="",B=G+1;while(B<J.length&&j.length<3&&D6(J[B]))j+=J[B],B++;X(),Z.push(Number.parseInt(j,8)&255),G=B}else Y+=H,G+=2;break}}else Y+=q,G++}return X(),{value:Dk.decode(new Uint8Array(Z)),end:G}}function uY(J){if(J.length===0||J[0]!=='"')return J;return M6(J,0).value}function F6(J,z){if(J[0]==='"'){let Y=M6(J,0);if(J.startsWith(z,Y.end))return{orig:Y.value,neu:uY(J.slice(Y.end+z.length))};return null}let Z=J.indexOf(z);if(Z<0)return null;return{orig:J.slice(0,Z),neu:uY(J.slice(Z+z.length))}}function Lk(J){let z=J.indexOf("{");if(z>=0){let Y=J.indexOf("}",z),X=J.indexOf(" => ",z);if(Y>z&&X>=0&&X<Y){let G=J.slice(0,z),q=J.slice(z+1,X),H=J.slice(X+4,Y),j=J.slice(Y+1);return{path:G+H+j,origPath:G+q+j}}}let Z=F6(J," => ");if(Z)return{path:Z.neu,origPath:Z.orig};return{path:uY(J)}}function vH(J){let z=[];for(let Z of J.split(`
67
+ `)){let Y=Z.replace(/\r$/,"");if(Y.length<4)continue;if(Y.startsWith("##"))continue;let X=Y[0],G=Y[1];if(Y[2]!==" ")continue;let q=Y.slice(3);if(X==="R"||X==="C"||G==="R"||G==="C"){let H=F6(q," -> ");if(H){z.push({x:X,y:G,path:H.neu,origPath:H.orig});continue}}z.push({x:X,y:G,path:uY(q)})}return z}function L6(J){if(J==="-")return null;let z=Number.parseInt(J,10);return Number.isNaN(z)?null:z}function O6(J){let z=[];for(let Z of J.split(`
68
+ `)){let Y=Z.replace(/\r$/,"");if(Y.length===0)continue;let X=Y.indexOf("\t");if(X<0)continue;let G=Y.indexOf("\t",X+1);if(G<0)continue;let q=Y.slice(G+1);if(q.length===0)continue;let H=Lk(q);if(H.path.length===0)continue;z.push({path:H.path,...H.origPath!==void 0?{origPath:H.origPath}:{},added:L6(Y.slice(0,X)),deleted:L6(Y.slice(X+1,G))})}return z}var Kk,Dk;var mH=C(()=>{Kk=new TextEncoder,Dk=new TextDecoder});function _J(J=process.env){return{...J,...mf}}var mf;var $Z=C(()=>{mf={GIT_OPTIONAL_LOCKS:"0"}});async function TX(J,z,Z={}){if(!J)return{stdout:"",stderr:"worktreePath is required",status:-1};let Y=(Z.execForPath??HZ)(J),X=Z.timeoutMs&&Z.timeoutMs>0?new AbortController:null,G=!1,q=X?setTimeout(()=>{G=!0,X.abort()},Z.timeoutMs):null,H=X&&Z.signal?AbortSignal.any([X.signal,Z.signal]):X?.signal??Z.signal,j;try{j=await Y.run(["git",...z],{cwd:J,env:mf,signal:H})}catch(B){if(q)clearTimeout(q);return{stdout:"",stderr:B instanceof Error?B.message:String(B),status:-1}}if(q)clearTimeout(q);if(G&&j.exitCode===-1&&!j.stderr)return{stdout:j.stdout,stderr:`git ${z.join(" ")} timed out after ${Z.timeoutMs}ms`,status:-1};return{stdout:j.stdout,stderr:j.stderr,status:j.exitCode}}function Mk(J,z){if(!J||!z||z.startsWith("/"))return null;let Z=z.split("/");if(Z.some((Y)=>Y===".."))return null;return`${J.replace(/\/+$/,"")}/${Z.filter(Boolean).join("/")}`}async function cH(J,z,Z={}){let Y=Mk(J,z);if(!Y)return null;let X=(Z.execForPath??HZ)(J);try{return await X.readFile(Y)}catch{return null}}var dH=C(()=>{Az();$Z()});import{statSync as Fk}from"fs";async function YQ(J,z){let Z=await TX(J,z,{timeoutMs:Ok}),Y=Z.status??-1;return{ok:Y===0,stdout:Z.stdout,stderr:Z.stderr,code:Y}}function Rk(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 A6(J){if(J==="/dev/null")return null;let z=J;if(z.startsWith('"'))z=uY(z);else{let Z=z.indexOf("\t");if(Z>=0)z=z.slice(0,Z)}if(z.startsWith("a/")||z.startsWith("b/"))z=z.slice(2);return z.length>0?z:null}function R6(J){let z=new Map;if(!J)return z;let Z=J.split(/(?=^diff --git )/m);for(let Y of Z){if(!Y.startsWith("diff --git"))continue;let X=null,G=Y.match(/^\+\+\+ (.*)$/m);if(G)X=A6(G[1]);if(X===null){let q=Y.match(/^--- (.*)$/m);if(q)X=A6(q[1])}if(X===null){let q=Y.match(/^diff --git a\/.* b\/(.*)$/m);if(q)X=uY(q[1])}if(X===null)continue;z.set(X,Y.endsWith(`
69
+ `)?Y:`${Y}
70
+ `)}return z}async function gk(J,z,Z){let Y=Array(J.length),X=Math.max(1,Math.min(z,J.length)),G=0;async function q(){while(G<J.length){let H=G++;Y[H]=await Z(J[H],H)}}return await Promise.all(Array.from({length:X},()=>q())),Y}async function Nk(J,z){let Z=await YQ(J,["diff","--no-color","--no-index","--","/dev/null",z]);if(Z.stdout.trim())return Z.stdout.endsWith(`
71
+ `)?Z.stdout:`${Z.stdout}
72
+ `;return""}async function g6(J,z){if(z.pathname!=="/api/diff")return null;if(J.method!=="GET")return Response.json({error:"method not allowed"},{status:405});let Z=z.searchParams.get("worktreePath");if(!Z)return Response.json({error:"missing worktreePath"},{status:400});let Y;try{Y=decodeURIComponent(Z)}catch{return Response.json({error:"invalid worktreePath encoding"},{status:400})}if(!Y.startsWith("/"))return Response.json({error:"worktreePath must be an absolute path"},{status:400});if(!wZ(Y))return Response.json({error:"worktreePath does not exist"},{status:400});if(!HZ(Y).isRemote)try{if(!Fk(Y).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 YQ(Y,["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()||Y}`},{status:500});let[q,H,j]=await Promise.all([YQ(Y,["status","--porcelain=v1","-z","--untracked-files=all"]),YQ(Y,["diff","--no-color"]),YQ(Y,["diff","--no-color","--staged"])]);if(!q.ok)return Response.json({error:`git status failed: ${q.stderr.trim()}`},{status:500});let B=R6(H.stdout),V=R6(j.stdout),f=q.stdout.split("\x00"),U=[],L=[];for(let g=0;g<f.length;g++){let E=f[g];if(!E)continue;let h=E[0]??" ",I=E[1]??" ",N=E.slice(3);if(!N)continue;if(h==="R"||h==="C"||I==="R"||I==="C")g++;let F=h==="?"&&I==="?",y=h!==" "&&h!=="?"?h:I,c=h!==" "&&h!=="?",d="";if(F)L.push({fileIndex:U.length,path:N});else if(d=V.get(N)??B.get(N)??"",V.has(N)&&B.has(N))d=`${V.get(N)}${B.get(N)}`;U.push({path:N,status:F?"untracked":Rk(y),staged:c,patch:d})}if(L.length>0){let g=await gk(L,Ak,(E)=>Nk(Y,E.path));for(let E=0;E<L.length;E++)U[L[E].fileIndex].patch=g[E]}U.sort((g,E)=>g.path.localeCompare(E.path));let O=[j.stdout,H.stdout].filter(Boolean).join(`
73
+ `),A={files:U,raw:O};return Response.json(A)}var Ok=15000,Ak=8;var N6=C(()=>{Az();mH();dH()});import{isAbsolute as Ck}from"path";function b6(J){return typeof J==="string"&&J.length>0&&/^[A-Za-z0-9_-]+$/.test(J)}function kk(J){return typeof J==="string"&&J.length>0&&/^[A-Za-z0-9._-]+$/.test(J)&&!J.includes("..")}async function Ik(J){let z=J.searchParams.get("worktreePath"),Z=J.searchParams.get("vendor")??"claude";if(!z||!Ck(z))return Response.json({error:"worktreePath must be an absolute path"},{status:400});if(!b6(Z))return Response.json({error:"invalid vendor"},{status:400});try{let Y=JJ(Z).history,[X,G]=await Promise.all([Y.listSessionIdsForWorktree(z),Y.latestTranscriptMtimeForWorktree(z)]);return Response.json({sessions:X,latestMtime:G})}catch(Y){return Response.json({error:Y instanceof Error?Y.message:String(Y)},{status:500})}}async function Sk(J){let z=J.searchParams.get("vendor")??"claude",Z=J.searchParams.get("sessionId");if(!b6(z))return Response.json({error:"invalid vendor"},{status:400});if(!kk(Z))return Response.json({error:"invalid sessionId"},{status:400});try{let Y=await JJ(z).history.readHistory(Z);return Response.json({messages:Y})}catch(Y){return Response.json({error:Y instanceof Error?Y.message:String(Y)},{status:500})}}async function k6(J,z){if(z.pathname!==C6&&z.pathname!==bk)return null;if(J.method!=="GET")return Response.json({error:"method not allowed"},{status:405});return z.pathname===C6?Ik(z):Sk(z)}var C6="/api/history/sessions",bk="/api/history/messages";var I6=C(()=>{QZ()});import{mkdir as yk,readFile as Tk,writeFile as xk}from"fs/promises";import{join as S6}from"path";function y6(){return S6(KJ(),"notes")}function T6(J){return typeof J==="string"&&J.length>0&&/^[A-Za-z0-9_-]+$/.test(J)}function x6(J){return S6(y6(),`${J}.md`)}async function Ek(J){let z=J.searchParams.get("taskId");if(!T6(z))return Response.json({error:"invalid taskId"},{status:400});try{let Z="";try{Z=await Tk(x6(z),"utf8")}catch(Y){if(Y.code!=="ENOENT")throw Y}return Response.json({markdown:Z})}catch(Z){return Response.json({error:Z instanceof Error?Z.message:String(Z)},{status:500})}}async function wk(J){let z;try{z=await J.json()}catch{return Response.json({error:"invalid JSON body"},{status:400})}if(!T6(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 yk(y6(),{recursive:!0}),await xk(x6(z.taskId),z.markdown,"utf8"),Response.json({ok:!0})}catch(Z){return Response.json({error:Z instanceof Error?Z.message:String(Z)},{status:500})}}async function u6(J,z){if(z.pathname!==uk)return null;if(J.method==="GET")return Ek(z);if(J.method==="PUT")return wk(J);return Response.json({error:"method not allowed"},{status:405})}var uk="/api/notes";var E6=C(()=>{t1()});function df(J,z,Z=[]){if(z===void 0)return null;if(typeof z!=="string")return df(J,z.dark,Z);if(z==="transparent"||z==="none")return null;if(z.startsWith("#"))return z;if(Z.includes(z))return null;let Y=J.defs?.[z]??J.theme[z];return df(J,Y,[...Z,z])}function cf(J){return Math.max(0,Math.min(255,Math.round(J)))}function XQ(J,z,Z){let Y=Number.parseInt(J.slice(1),16),X=Number.parseInt(z.slice(1),16),G=(H,j)=>H>>j&255;return`#${(cf(G(Y,16)+(G(X,16)-G(Y,16))*Z)<<16|cf(G(Y,8)+(G(X,8)-G(Y,8))*Z)<<8|cf(G(Y,0)+(G(X,0)-G(Y,0))*Z)).toString(16).padStart(6,"0")}`}function hk(J){let z=(H)=>df(J,J.theme[H]),Z=z("background"),Y=z("text");if(!Z||!Y)return null;let X=z("textMuted")??XQ(Y,Z,0.35),G=z("primary")??Y,q=z("border")??XQ(Y,Z,0.8);return{bg:Z,surface:z("backgroundPanel")??Z,inset:z("backgroundElement")??Z,menu:z("backgroundMenu")??z("backgroundElement")??Z,line:q,"line-subtle":z("borderSubtle")??q,"line-active":z("borderActive")??XQ(q,Y,0.3),fg:Y,muted:X,subtle:XQ(X,Z,0.35),primary:G,"primary-hover":XQ(G,Y,0.35),"kobe-orange":G,"kobe-green":z("success")??Y,"kobe-blue":z("info")??Y,"kobe-red":z("error")??Y,"kobe-yellow":z("warning")??Y,"kobe-violet":z("secondary")??G}}function w6(J,z){if(z.pathname!==mk)return null;if(J.method!=="GET")return Response.json({error:"method not allowed"},{status:405});return Response.json({themes:vk})}var Pk,vk,mk="/api/themes";var P6=C(()=>{eq();JH();zH();ZH();YH();XH();GH();Pk={claude:KX,conductor:DX,dracula:LX,nord:MX,opencode:FX,"osaka-jade":OX,tokyonight:AX};vk=Object.fromEntries(Object.entries(Pk).map(([J,z])=>[J,hk(z)]).filter((J)=>J[1]!==null))});import{createHash as ck,randomUUID as dk}from"crypto";import{mkdir as nk}from"fs/promises";import{join as nf,resolve as ik}from"path";function ak(J){return ck("sha1").update(J).digest("hex").slice(0,16)}async function rk(J){let z=Number.parseInt(J.headers.get("content-length")??"",10);if(Number.isFinite(z)&&z>h6)return Response.json({error:"asset too large"},{status:413});let Z;try{Z=await J.formData()}catch{return Response.json({error:"invalid form data"},{status:400})}let Y=Z.get("repoRoot");if(typeof Y!=="string"||Y.length===0)return Response.json({error:"missing repoRoot"},{status:400});let X=Z.get("file");if(!(X instanceof File))return Response.json({error:"file must be a File"},{status:400});if(X.size>h6)return Response.json({error:"asset too large"},{status:413});let G=lk[X.type];if(!G)return Response.json({error:`unsupported content-type: ${X.type||"unknown"}`},{status:415});try{let q=ak(Y),H=nf(z9(),q);await nk(H,{recursive:!0});let B=`${dk()}.${G}`;return await Bun.write(nf(H,B),X),Response.json({url:`${nH}/${q}/${B}`})}catch(q){return Response.json({error:q instanceof Error?q.message:String(q)},{status:500})}}async function ok(J){let z=J.slice(nH.length+1),Z=z.indexOf("/");if(Z<0)return Response.json({error:"not found"},{status:404});let Y=z.slice(0,Z),X=z.slice(Z+1);if(!_k.test(Y)||!pk.test(X))return Response.json({error:"invalid asset path"},{status:400});let G=z9(),q=ik(G,Y,X);if(q!==nf(G,Y,X)||!q.startsWith(`${G}/`))return Response.json({error:"invalid asset path"},{status:400});let H=X.slice(X.lastIndexOf(".")+1).toLowerCase(),j=$k[H];if(!j)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":j,"cache-control":"public, max-age=31536000, immutable","x-content-type-options":"nosniff"}})}async function v6(J,z){if(z.pathname===nH){if(J.method==="POST")return rk(J);return Response.json({error:"method not allowed"},{status:405})}if(z.pathname.startsWith(`${nH}/`)){if(J.method==="GET")return ok(z.pathname);return Response.json({error:"method not allowed"},{status:405})}return null}var nH="/api/issue-assets",h6=10485760,lk,$k,_k,pk;var m6=C(()=>{t1();lk={"image/png":"png","image/jpeg":"jpg","image/gif":"gif","image/webp":"webp"},$k={png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",webp:"image/webp"};_k=/^[a-f0-9]{16}$/,pk=/^[A-Za-z0-9_-]+\.[a-z0-9]+$/});function c6(J,z=500){return Response.json({error:J instanceof Error?J.message:String(J)},{status:z})}function d6(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 sk(J,z){let Z=z.searchParams.get("repoRoot");if(!Z)return Response.json({error:"missing repoRoot"},{status:400});try{return Response.json(await J.request("issue.list",{repoRoot:Z}))}catch(Y){return c6(Y,d6(Y))}}async function tk(J,z){let Z;try{Z=await z.json()}catch{return Response.json({error:"invalid JSON body"},{status:400})}if(Z===null||typeof Z!=="object"||Array.isArray(Z))return Response.json({error:"body must be a JSON object"},{status:400});let Y=Z;if(typeof Y.repoRoot!=="string"||Y.repoRoot.length===0)return Response.json({error:"missing repoRoot"},{status:400});try{return Response.json(await J.request("issue.mutate",{repoRoot:Y.repoRoot,op:Y.op}))}catch(X){return c6(X,d6(X))}}async function n6(J,z,Z){if(z.pathname!=="/api/issues")return null;if(J.method==="GET")return sk(Z,z);if(J.method==="POST")return tk(Z,J);return Response.json({error:"method not allowed"},{status:405})}function i6(J){return ek.has(String(J??"").trim().toLowerCase())}function l6(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 JI(J){let z=l6(J);return z!==null&&i6(z)}function $6(J,z={}){if(!J)return!0;if(JI(J))return!0;let Z=z.allowedHost?.trim();if(!Z)return!1;let Y=l6(J);return Y!==null&&Y===Z}function a6(J){let z=String(J??"").trim();return z&&!i6(z)?z:void 0}var ek;var _6=C(()=>{ek=new Set(["localhost","127.0.0.1","::1","[::1]"])});var zI,p6;var r6=C(()=>{zI=["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"],p6=new Set(zI)});var lH={};H1(lH,{resolveRepoInit:()=>t6,resolveEngineLaunchInit:()=>xX});import{existsSync as s6,readFileSync as ZI}from"fs";import{join as iH}from"path";function XI(J){return s6(iH(J,o6))?`sh ${o6}`:void 0}function GI(J){let z=iH(J,YI);if(!s6(z))return;try{let Z=ZI(z,"utf8");return Z.trim().length>0?Z:void 0}catch{return}}function t6(J,z){let Z=J?V9(J):{},Y=XI(z)??Z.initScript,X=GI(z)??Z.initPrompt;return{initScript:Y&&Y.trim().length>0?Y:void 0,initPrompt:X&&X.trim().length>0?X:void 0}}function QI(J,z){if(J.kind==="none")return;if(J.kind==="explicit")return{source:"explicit",text:J.prompt};let Z=z.initPrompt?.trim();return Z?{source:"repo-init",text:Z}:void 0}function xX(J,z,Z={kind:"repo-init"}){let Y=t6(J,z);return{initScript:Y.initScript,firstMessage:QI(Z,Y)}}var o6,YI;var uX=C(()=>{S1();o6=iH(".kobe","init.sh"),YI=iH(".kobe","init-prompt.md")});async function qI(J,z){let{task:Z}=await J.request("task.get",{taskId:z});return Z}async function lf(J,z){let Z=await qI(J,z);if(Z.worktreePath)return{task:Z,worktreePath:Z.worktreePath};let{worktreePath:Y}=await J.request("task.ensureWorktree",{taskId:z});if(!Y)throw Error(`task ${z} has no worktree`);return{task:Z,worktreePath:Y}}async function e6(J,z){let{task:Z,worktreePath:Y}=await lf(J,z),X=y1(z);if(!await M1(X)){let G=xX(Z.repo??"",Y,{kind:"repo-init"});if(!await oG({name:X,cwd:Y,command:EJ(Z.vendor,Z.modelEffort),taskId:z,vendor:Z.vendor,launchInit:G}))throw Error(`failed to start tmux session for ${z}`)}return{session:X,worktreePath:Y}}function HI(J){return lY(J,{bareSafe:!0})}async function J4(J,z){let{task:Z,worktreePath:Y}=await lf(J,z),X=Z.kind==="main"?void 0:z,G=Z.kind==="main"?z:void 0,q=[...lq(iq(EJ(Z.vendor,Z.modelEffort),Z.vendor,X),Z.vendor,G)],H=xX(Z.repo??"",Y,{kind:"none"}),j=HI(q),B=H.initScript?.trim()?`${H.initScript}
74
+ ${j}`:j,V=process.env.SHELL?.trim()||"/bin/zsh";return{cwd:Y,command:[V,"-ilc",B]}}async function z4(J,z){let{worktreePath:Z}=await lf(J,z),Y=process.env.SHELL?.trim()||"/bin/zsh";return{cwd:Z,command:[Y,"-il"]}}async function Z4(J){let z=y1(J);await iz(z).catch(()=>{}),await vJ(z).catch(()=>{})}var Y4=C(()=>{Xz();iQ();uX();m1();qJ()});import{existsSync as jI}from"fs";import{join as X4,normalize as q4}from"path";function BI(J){let z=null,Z=null,Y=new TextEncoder,X=new ReadableStream({start(G){z=J((H,j)=>{try{G.enqueue(Y.encode(`event: ${H}
75
+ data: ${JSON.stringify(j)}
76
+
77
+ `))}catch{}}),Z=setInterval(()=>{try{G.enqueue(Y.encode(`: ping
78
+
79
+ `))}catch{}},15000)},cancel(){if(Z)clearInterval(Z);z?.()}});return new Response(X,{headers:{"content-type":"text/event-stream","cache-control":"no-cache, no-transform",connection:"keep-alive"}})}async function fI(J,z,Z){try{let{name:Y,payload:X}=await J.json();if(!Y)return Response.json({error:"missing rpc name"},{status:400});if(!p6.has(Y))return Response.json({error:`rpc ${Y} is not exposed to the web UI`},{status:403});let G=await z.request(Y,X),q=X?.taskId;if(typeof q==="string"){let H=Y==="task.archive"&&X.archived!==!1;if(Y==="task.delete"||H)Z(q)}return Response.json({result:G})}catch(Y){let X=Y instanceof Error&&Y.name!=="Error"?Y.name:void 0;return Response.json({error:Y instanceof Error?Y.message:String(Y),...X?{name:X}:{}},{status:500})}}async function WI(){try{let z=(await XZ()).map((Z)=>({id:Z,label:MY(Z),effortLevels:JJ(Z).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 VI(){return Response.json({api:FY()})}function UI(){return Response.json({projects:SJ()})}function aZ(J,z=""){return typeof J==="string"?J:z}function KI(J,z){return typeof J==="boolean"?J:z}function W4(J){let z=J.customEngineIds;if(!Array.isArray(z))return[];return z.filter((Z)=>typeof Z==="string"&&f4.test(Z)&&!UJ(Z))}function DI(J){return J.split(/[-_]+/).filter(Boolean).map((z)=>`${z.slice(0,1).toUpperCase()}${z.slice(1)}`).join(" ")}function LI(J,z){return aZ(J[gz(z)]).trim()||MY(z)}function MI(J,z){return aZ(J[Rz(z)]).trim()||TG(z).join(" ")}function V4(){let J=OJ(),z=W4(J),Z=[...zY,...z],Y=aZ(J.lastSelectedVendor,"claude"),X=aZ(J.focusAccent,"primary");return Response.json({activeTheme:aZ(J.activeTheme,"claude"),transparentBackground:KI(J.transparentBackground,!1),focusAccent:B4.includes(X)?X:"primary",notificationsToast:J["notifications.toast.enabled"]!==!1,notificationsSound:J["notifications.sound.enabled"]!==!1,settingsSurface:xY(J[VZ]??TY),editorKind:yX(J[WZ]??PH),editorCustomCommand:aZ(J[lZ]),remoteProjects:J["experimental.remoteProjects"]===!0,archivedHistoryPreview:J["experimental.archivedHistoryPreview"]===!0,autoStatus:J[DY]===!0,dispatcher:J[LY]===!0,defaultEngine:Y,engines:Z.map((G)=>({id:G,label:LI(J,G),command:MI(J,G),isBuiltin:UJ(G),isCustom:!UJ(G),isDefault:G===Y}))})}function GQ(J,z,Z){if(typeof Z==="string")J[z]=Z.trim()}function EY(J,z,Z){if(typeof Z==="boolean")J[z]=Z}async function FI(J){try{let z=await J.json(),Z={};if(GQ(Z,"activeTheme",z.activeTheme),EY(Z,"transparentBackground",z.transparentBackground),B4.includes(z.focusAccent))Z.focusAccent=z.focusAccent;if(EY(Z,"notifications.toast.enabled",z.notificationsToast),EY(Z,"notifications.sound.enabled",z.notificationsSound),z.settingsSurface==="chattab"||z.settingsSurface==="taskpanel")Z[VZ]=z.settingsSurface;if(yY.includes(z.editorKind))Z[WZ]=z.editorKind;GQ(Z,lZ,z.editorCustomCommand),EY(Z,"experimental.remoteProjects",z.remoteProjects),EY(Z,"experimental.archivedHistoryPreview",z.archivedHistoryPreview),EY(Z,DY,z.autoStatus),EY(Z,LY,z.dispatcher),GQ(Z,"lastSelectedVendor",z.defaultEngine);let Y=OJ(),X=W4(Y),G=new Set([...zY,...X]),q=Array.isArray(z.engineUpdates)?z.engineUpdates:[];for(let H of q){if(!H||typeof H!=="object")continue;let j=H;if(typeof j.id!=="string"||!G.has(j.id))continue;GQ(Z,Rz(j.id),j.command),GQ(Z,gz(j.id),j.label)}if(z.addEngine&&typeof z.addEngine==="object"){let H=z.addEngine,j=typeof H.id==="string"?H.id.trim().toLowerCase():"";if(!f4.test(j)||UJ(j)||G.has(j))return Response.json({error:"invalid or duplicate engine id"},{status:400});Z.customEngineIds=[...X,j],Z[Rz(j)]=aZ(H.command).trim();let B=aZ(H.label).trim();Z[gz(j)]=B&&B!==j?B:DI(j)}if(typeof z.removeEngine==="string"){let H=z.removeEngine;if(!UJ(H)){if(Z.customEngineIds=X.filter((j)=>j!==H),Z[Rz(H)]=void 0,Z[gz(H)]=void 0,Y.lastSelectedVendor===H)Z.lastSelectedVendor="claude"}}if(Object.keys(Z).length>0)bZ(Z);return V4()}catch(z){return Response.json({error:z instanceof Error?z.message:String(z)},{status:400})}}async function OI(J,z){try{let{taskId:Z}=await J.json();if(!Z)return Response.json({error:"missing taskId"},{status:400});return Response.json(await e6(z,Z))}catch(Z){return Response.json({error:Z instanceof Error?Z.message:String(Z)},{status:500})}}async function G4(J,z,Z){try{let Y=J.searchParams.get("taskId");if(!Y)return Response.json({error:"missing taskId"},{status:400});return Response.json(await Z(z,Y))}catch(Y){return Response.json({error:Y instanceof Error?Y.message:String(Y)},{status:500})}}function U4(){return Response.json({review:x1($H.review)??null,pr:x1($H.pr)??null})}async function AI(J){try{let z=await J.json();if(typeof z.review==="string")GJ($H.review,z.review);if(typeof z.pr==="string")GJ($H.pr,z.pr);return U4()}catch(z){return Response.json({error:z instanceof Error?z.message:String(z)},{status:400})}}async function RI(J,z){let Y=q4(X4(z,J==="/"?"/index.html":J));if(!Y.startsWith(z))return new Response("forbidden",{status:403});let X=Bun.file(jI(Y)?Y:X4(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 gI(J){let{link:z,sseSends:Z,staticDir:Y}=J,X=J.tearDownSession??((G)=>void Z4(G));return async function(q){let H=new URL(q.url);if(H.pathname===j4)return new Response(H4);if(!$6(q.headers.get("origin"),{allowedHost:J.allowedHost}))return new Response("forbidden: cross-origin request rejected",{status:403});if(H.pathname==="/events")return BI((O)=>{let A=J.onSseOpen?.()??(()=>{});return O("snapshot",z.snapshot()),Z.add(O),()=>{Z.delete(O),A()}});if(H.pathname==="/api/rpc"&&q.method==="POST")return fI(q,z,X);if(H.pathname==="/api/session"&&q.method==="POST")return OI(q,z);if(H.pathname==="/api/engine-spec"&&q.method==="GET")return G4(H,z,J4);if(H.pathname==="/api/terminal-spec"&&q.method==="GET")return G4(H,z,z4);if(H.pathname==="/api/engines"&&q.method==="GET")return WI();if(H.pathname==="/api/cli-invocation"&&q.method==="GET")return VI();if(H.pathname==="/api/projects"&&q.method==="GET")return UI();if(H.pathname==="/api/settings"&&q.method==="GET")return V4();if(H.pathname==="/api/settings"&&q.method==="PATCH")return FI(q);if(H.pathname==="/api/quick-prompts"&&q.method==="GET")return U4();if(H.pathname==="/api/quick-prompts"&&q.method==="PUT")return AI(q);let j=await u6(q,H);if(j)return j;let B=await g6(q,H);if(B)return B;let V=await k6(q,H);if(V)return V;let f=await n6(q,H,z);if(f)return f;let U=await v6(q,H);if(U)return U;let L=w6(q,H);if(L)return L;if(Y)return RI(H.pathname,Y);return new Response("not found",{status:404})}}function wY(J,z){let Z=J.snapshot().find((Y)=>Y.channel===z);return Z?Z.payload:null}function $f(J){return J.length>1?J.replace(/\/+$/,""):J}function NI(J,z){let Z=$f(z),Y=new Set([z]);for(let X of J){let G=$f(X.repo),q=$f(X.worktreePath);if(G===Z||q===Z){if(X.repo)Y.add(X.repo);if(X.worktreePath)Y.add(X.worktreePath)}}return[...Y]}function K4(J){let z=eG();return{async request(Z,Y){return await tG(z,Z,Y,J.ctx(0))},snapshot(){let Z=J.orch.listTasks().map(Uz),Y={},X=wY(J.bus,"issue.snapshot");if(X)for(let H of NI(Z,X.repoRoot))Y[H]={...X,repoRoot:H};let G=wY(J.bus,"task.jobs"),q=G?.phase==="running"?{[G.taskId]:G}:{};return{tasks:Z,activeTaskId:wY(J.bus,"active-task")?.taskId??null,engineStates:J.activity.snapshotByTask(),update:wY(J.bus,"update")?.info??null,jobs:q,worktreeChanges:wY(J.bus,"worktree.changes")?.changes??{},issueSnapshots:Y,deliver:wY(J.bus,"session.deliver"),uiPrefs:wY(J.bus,"ui-prefs"),connected:!0}}}}async function Q4(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(`
80
+ `).map((Y)=>Number.parseInt(Y.trim(),10)).filter((Y)=>Number.isFinite(Y)&&Y!==process.pid)}catch{return[]}}async function CI(J,z=j4){let Z;try{Z=(await(await fetch(`http://localhost:${J}${z}`,{signal:AbortSignal.timeout(800)})).text()).trim()}catch{return}if(Z!==H4)throw Error(`port ${J} is in use by a non-kobe service; refusing to replace it`);let Y=await Q4(J);for(let G of Y)try{process.kill(G,"SIGTERM")}catch{}let X=Date.now()+2000;while(Date.now()<X){if((await Q4(J)).length===0)return;await new Promise((G)=>setTimeout(G,100))}}async function D4(J){if(J.takeover!==!1)await CI(J.port);let z=new Set,Z=J.onEvent((H)=>{for(let j of z)j("channel",H)}),Y=J.hostname?.trim()||process.env.KOBE_WEB_HOST?.trim()||"127.0.0.1",X=a6(Y),G=gI({link:J.link,sseSends:z,staticDir:J.staticDir?q4(J.staticDir):void 0,allowedHost:X,onSseOpen:J.onSseOpen}),q=Bun.serve({port:J.port,hostname:Y,idleTimeout:0,fetch:G});return{port:q.port??J.port,hostname:Y,close(){Z(),q.stop(!0)}}}var H4="kobe-web",j4="/__kobe_web",B4,f4,$H;var L4=C(()=>{QY();Xz();QZ();yG();nq();S1();Ez();hH();s1();N6();I6();E6();P6();CH();YY();m6();_6();r6();Y4();B4=["primary","success","info"],f4=/^[a-z][a-z0-9_-]{0,47}$/;$H={review:"boardPrompt.review",pr:"boardPrompt.pr"}});var M4={};H1(M4,{sameWorktreeChanges:()=>az,readWorktreeChanges:()=>kI,pickPushedChanges:()=>_H,parsePorcelain:()=>EX});import{spawnSync as bI}from"child_process";function az(J,z){return J.added===z.added&&J.deleted===z.deleted}function _H(J,z){if(!J)return null;return J.get(z)??aH}function kI(J){if(!J)return aH;try{let z=bI("git",["status","--porcelain=v1"],{cwd:J,encoding:"utf8",stdio:["ignore","pipe","pipe"],env:_J()});if(z.status!==0||!z.stdout)return aH;return EX(z.stdout)}catch{return aH}}function EX(J){let z=0,Z=0;for(let{x:Y,y:X}of vH(J))if(Y==="D"||X==="D")Z+=1;else z+=1;return{added:z,deleted:Z}}var aH;var wX=C(()=>{$Z();mH();aH={added:0,deleted:0}});async function TI(J,z){let Z=await qZ("git",["status","--porcelain=v1"],{cwd:J,env:_J(),signal:z});if(Z.status!==0)throw Error("git status failed");return EX(Z.stdout)}function xI(J){let z=new Set;for(let Z of J){if(Z.archived)continue;if(!Z.worktreePath)continue;if(e1(Z.repo)||e1(Z.worktreePath))continue;z.add(Z.worktreePath)}return z}class F4{orch;bus;options;entries=new Map;stopped=!1;constructor(J,z,Z={}){this.orch=J;this.bus=z;this.options=Z}tick(){if(this.stopped)return;if(this.options.hasSubscribers&&!this.options.hasSubscribers())return;try{let J=xI(this.orch.listTasks()),z=!1;for(let Z of this.entries.keys()){if(J.has(Z))continue;if(this.entries.get(Z)?.value)z=!0;this.entries.delete(Z)}if(z)this.publish();for(let Z of J)this.maybeCollect(Z)}catch(J){w1("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 Z=this.options.cadence??{timeoutMs:II,slowRetryMs:SI,minIntervalMs:yI},Y=this.options.run??TI;GX(z,Z,(X)=>Y(J,X),(X)=>{if(this.stopped)return;if(this.entries.get(J)!==z)return;if(z.value&&az(z.value,X))return;z.value=X,this.publish()})}publish(){let J={};for(let[z,Z]of this.entries)if(Z.value)J[z]=Z.value;this.bus.publish("worktree.changes",{changes:J})}}function O4(J,z,Z=af,Y){if(Z<=0)return()=>{};let X=new F4(J,z,{hasSubscribers:Y});X.tick();let G=setInterval(()=>X.tick(),Z);return G.unref?.(),()=>{clearInterval(G),X.stop()}}var af=2000,II=4000,SI=60000,yI=1500;var A4=C(()=>{$Z();QX();S1();wX()});import{mkdir as R4,readFile as uI,unlink as _f,writeFile as EI}from"fs/promises";import{createServer as wI}from"net";import{dirname as g4}from"path";import{StringDecoder as PI}from"string_decoder";function vI(){let J=process.env.KOBE_DAEMON_IDLE_GRACE_MS;if(J===void 0)return N4;let z=Number(J);return Number.isFinite(z)&&z>=0?z:N4}async function b4(J,z={}){let Z=z.socketPath??wz(z.homeDir),Y=z.pidPath??ZZ(z.homeDir),X=z.startedAt??new Date,G=new Set,q=new Set,H=1,j=new wf({clients:function*(){yield*G,yield*q},idleGraceMs:vI(),onIdleStop:()=>void q0().catch((w)=>w1("daemon-idle-shutdown",w))}),B=new jf;B.onPublish((w)=>{C4(G,{type:"event",name:w.channel,payload:w.payload})});let f=new s9(B,void 0,void 0,async(w)=>{let R=J.getTask(w);if(!R?.worktreePath)return;return JX(R.vendor??zJ,R.worktreePath)}),U=new IH(kH(z.homeDir));await R4(g4(Z),{recursive:!0}),await R4(g4(Y),{recursive:!0}),await _f(Z).catch(()=>{});let L=wI((w)=>{let R={id:H++,connectedAt:new Date,socket:w,writer:new Hf(w),buffer:"",subscribed:!1,holdsLifetime:!1,channels:null};G.add(R);let e=new PI("utf8");w.on("data",(x)=>{R.buffer+=e.write(x),p(R)}),w.on("error",()=>{}),w.on("close",()=>{if(G.delete(R),R.subscribed)lz("conn",`client #${R.id} (${R.holdsLifetime?"gui":"pane"}) disconnected \u2014 ${G.size} client(s), ${j.guiCount()} gui left`);j.clientDisconnected(R.holdsLifetime)})}),O=J.subscribeTasks((w)=>{B.publish("task.snapshot",{tasks:w.map(Uz)})}),A=z.checkUpdate??HG,g=z.updatePollMs??hI,E=()=>{A().then((w)=>B.publish("update",{info:w})).catch((w)=>w1("update-poller",w))},h=null;if(g>0)E(),h=setInterval(E,g),h.unref?.();let I=z.autoTitlePollMs??qf,N=L5(J,I,()=>j.hasSubscribers()),F=V6(B,{statePath:vf(z.homeDir),debounceMs:z.uiPrefsDebounceMs??hf}),y=X6(B,{path:Ef(z.homeDir),debounceMs:z.keybindingsDebounceMs??uf}),c=O4(J,B,z.worktreeChangesTickMs??af,()=>j.hasSubscribers()),d=B6(J,B,z.transcriptActivityTickMs??Pf,()=>j.hasSubscribers()),l=q6(J,z.prStatusPollMs??ZQ,()=>j.hasSubscribers()),t=null,X0={socketPath:Z,pidPath:Y,startedAt:X,get webPort(){return t?.port},clients:G,async close(){if(j.markStopping(),O(),t?.close(),t=null,h)clearInterval(h);N(),l(),F(),y(),c(),d(),f.close(),C4(G,{type:"event",name:"daemon.stopping",payload:{}});for(let w of Array.from(G))w.socket.destroy();await new Promise((w)=>L.close(()=>w())),await _f(Z).catch(()=>{}),await _f(Y).catch(()=>{})}};await new Promise((w,R)=>{let e=L;e.once("error",R),L.listen(Z,()=>{e.removeListener("error",R),w()})}),await EI(Y,`${process.pid}
81
+ `,"utf8");async function q0(){if(j.isStopping())return;j.markStopping(),await z.onStop?.(),setTimeout(()=>{X0.close().catch((w)=>w1("daemon-shutdown",w))},0).unref()}let f0=eG();function _(w){return{orch:J,bus:B,activity:f,issues:U,daemon:{startedAt:X,socketPath:Z,webPort:t?.port,pid:process.pid,guiCount:()=>j.guiCount(),stopSoon:q0},clientId:w}}if(z.webPort!==void 0){let w=K4({orch:J,bus:B,activity:f,ctx:_});t=await D4({port:z.webPort,hostname:z.webHost,staticDir:z.webStaticDir,link:w,onEvent:(R)=>B.onPublish(R),onSseOpen:()=>{let R={subscribed:!0,holdsLifetime:!0};return q.add(R),j.guiAttached(),lz("conn",`web client subscribed \u2014 ${G.size+q.size} client(s), ${j.guiCount()} gui`),()=>{q.delete(R),lz("conn",`web client disconnected \u2014 ${G.size+q.size} client(s), ${j.guiCount()} gui left`),j.clientDisconnected(!0)}}}),lz("web",`daemon web transport listening on http://${t.hostname}:${t.port}`)}async function O0(w,R){if(w.name==="subscribe"){let e=Uf(w.payload),x=R.subscribed;R.subscribed=!0;let $=e.role==="gui"?"gui":"pane";R.holdsLifetime=$==="gui",R.channels=PV(e.channels);let G0=!x;if(R.holdsLifetime)j.guiAttached();lz("conn",`client #${R.id} subscribed as ${$}${R.channels?` [${[...R.channels].join(",")}]`:""} \u2014 ${G.size} client(s), ${j.guiCount()} gui${G0?" (collectors resume)":""}`);for(let H0 of B.snapshot()){if(R.channels&&!R.channels.has(H0.channel))continue;QQ(R,{type:"event",name:H0.channel,payload:H0.payload})}if(!R.channels||R.channels.has("engine-state"))for(let H0 of f.currentNonIdle())QQ(R,{type:"event",name:"engine-state",payload:H0});return{}}return tG(f0,w.name,w.payload,_(R.id))}async function b(w,R){try{let e=await O0(w,R);QQ(R,{type:"response",id:w.id,name:w.name,payload:e})}catch(e){QQ(R,{type:"response",id:w.id,name:w.name,error:Vf(e)})}}function p(w){let R=w.buffer.indexOf(`
82
+ `);while(R!==-1){let e=w.buffer.slice(0,R);if(w.buffer=w.buffer.slice(R+1),e.trim().length>0)try{let x=JSON.parse(e);if(x.type!=="request")throw Error("daemon only accepts request frames from clients");b(x,w)}catch(x){QQ(w,{type:"response",id:"parse-error",error:{message:x instanceof Error?x.message:String(x)}})}R=w.buffer.indexOf(`
83
+ `)}}return X0}async function PX(J){try{let z=await uI(J,"utf8"),Z=Number(z.trim());return Number.isFinite(Z)?Z:null}catch{return null}}function k4(J){if(J.type==="event")return J.name==="daemon.stopping";return!0}function QQ(J,z){J.writer.write(jG(z),k4(z))}function C4(J,z){let Z=z.type==="event"&&z.name!=="daemon.stopping"?z.name:null,Y=k4(z),X=null;for(let G of J){if(!G.subscribed&&z.type==="event")continue;if(Z&&G.channels&&!G.channels.has(Z))continue;X??=jG(z),G.writer.write(X,Y)}}var hI=21600000,N4=3000;var pH=C(()=>{Rq();Yz();bJ();zU();M5();CH();Af();G6();Q6();_Y();H6();YY();f6();U6();L4();A4();CH();Af()});import{unlink as I4}from"fs/promises";function mI(J){try{return process.kill(J,0),!0}catch(z){return z.code==="EPERM"}}async function hX(J,z){let Z=await PX(z),Y=Z!==null&&Z!==process.pid?Z:null,X=Y!==null&&mI(Y),G=X?"graceful":"absent",q=new Jz(J),H=q.request("daemon.stop").catch(()=>{return}),j=new Promise((B)=>setTimeout(B,2000));if(await Promise.race([H,j]),q.close(),X&&Y!==null){let B=Date.now()+5000,V=!1;while(Date.now()<B){try{process.kill(Y,0)}catch{break}if(!V&&Date.now()-(B-5000)>2000){try{process.kill(Y,"SIGTERM")}catch{}G="sigterm",V=!0}await new Promise((f)=>setTimeout(f,50))}try{process.kill(Y,0),process.kill(Y,"SIGKILL"),G="sigkill",await new Promise((f)=>setTimeout(f,100))}catch{}}return await I4(J).catch(()=>{}),await I4(z).catch(()=>{}),{pid:Z,method:G}}var rH=C(()=>{BG();pH()});var AH={};H1(AH,{testDaemonResponds:()=>oH,ensureDaemonReachable:()=>vX,connectOrStartDaemon:()=>Sz,connectIfRunning:()=>qz});import{spawn as cI}from"child_process";import{closeSync as dI,existsSync as nI,mkdirSync as iI,openSync as lI}from"fs";import{dirname as S4,resolve as pf}from"path";import{fileURLToPath as $I}from"url";function pI(J,z,Z,Y){let X="ignore",G;try{iI(S4(Y),{recursive:!0}),G=lI(Y,"a"),X=["ignore",G,G]}catch{X="ignore"}if(cI(J,[...z],{detached:!0,stdio:X,env:Z}).unref(),G!==void 0)try{dI(G)}catch{}}async function vX(){let J=wz();if(await oH(J))return J;await hX(J,ZZ()).catch(()=>{});let[z,...Z]=rI(aI);pI(z,Z,process.env,eQ());let Y=Date.now()+5000;while(Date.now()<Y){if(await oH(J))return J;await new Promise((X)=>setTimeout(X,100))}throw Error(`kobe: daemon did not start (or stayed wedged) at ${J}`)}async function Sz(){let J=await vX(),z=new Jz(J);return await z.connect(),z}async function qz(){let J=wz();if(!await oH(J))return null;let z=new Jz(J);return await z.connect(),z}async function oH(J,z=_I){let Z=new Jz(J);try{await Z.connect()}catch{return Z.close(),!1}let Y=Z.request("hello",{protocolVersion:eJ}).then(()=>!0).catch(()=>!0),X,G=new Promise((H)=>{X=setTimeout(()=>H(!1),z)}),q=await Promise.race([Y,G]);if(X)clearTimeout(X);return Z.close(),q}function rI(J){let z=$I(import.meta.url);if(z.startsWith("/$bunfs")||z.startsWith("B:\\~BUN"))return[process.execPath,...J];let Z=S4(z),Y=[pf(Z,"../cli/index.ts"),pf(Z,"../../../kobe/src/cli/index.ts"),pf(Z,"../cli/index.js")],X=Y.find((G)=>nI(G));if(X)return[process.execPath,X,...J];throw Error(`kobe: could not locate kobe entry near ${Z}; checked ${Y.join(", ")}`)}var aI,_I=3000;var kJ=C(()=>{rH();_Y();YY();BG();aI=["daemon","start"]});import{mkdir as oI,readFile as y4,unlink as x4,writeFile as T4}from"fs/promises";import{dirname as sI}from"path";function tI(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 rf(J,z={}){await oI(sI(J),{recursive:!0});try{await T4(J,String(process.pid),{flag:"wx"});return}catch(X){if(X.code!=="EEXIST")throw X}let Z=-1;try{let X=(await y4(J,"utf8")).trim();if(Z=Number.parseInt(X,10),!Number.isFinite(Z))Z=-1}catch{return rf(J,z)}let Y=Z>0&&tI(Z);if(Y&&!z.forceTakeover)throw new qQ(`task index is locked by another kobe instance (pid ${Z})`,Z);console.warn(`[kobe] removing stale lockfile at ${J} (was held by pid ${Z}${Y?", forced":", process gone"})`);try{await x4(J)}catch(X){if(X.code!=="ENOENT")throw X}try{await T4(J,String(process.pid),{flag:"wx"})}catch(X){if(X.code==="EEXIST"){let G=-1;try{G=Number.parseInt((await y4(J,"utf8")).trim(),10)}catch{G=-1}throw new qQ(`task index lockfile contended during takeover (winner pid ${G})`,G)}throw X}}async function u4(J){try{await x4(J)}catch(z){if(z.code==="ENOENT")return;throw z}}var qQ;var E4=C(()=>{qQ=class qQ extends Error{heldByPid;constructor(J,z){super(J);this.name="LockfileError",this.heldByPid=z}}});function eI(J,z){let Z="",Y=J;for(let X=z-1;X>=0;X--){let G=Y%32;Z="0123456789ABCDEFGHJKMNPQRSTVWXYZ"[G]+Z,Y=(Y-G)/32}return Z}function h4(J){let z=new Uint8Array(J);crypto.getRandomValues(z);let Z=Array(J);for(let Y=0;Y<J;Y++)Z[Y]=(z[Y]??0)&31;return Z}function JS(J){for(let z=J.length-1;z>=0;z--){let Z=J[z]??0;if(Z<31)return J[z]=Z+1,!0;J[z]=0}return!1}function zS(J){let z="";for(let Z of J)z+="0123456789ABCDEFGHJKMNPQRSTVWXYZ"[Z]??"0";return z}function v4(J=Date.now()){let z;if(J===w4){let Z=P4.slice();if(!JS(Z))z=h4(16);else z=Z}else z=h4(16);return w4=J,P4=z,eI(J,10)+zS(z)}var w4=-1,P4;var m4=C(()=>{P4=Array(16).fill(0)});var of={};H1(of,{TaskIndexStore:()=>mX});import{mkdir as ZS,open as YS,readFile as c4,rename as XS,unlink as d4}from"fs/promises";import{homedir as GS}from"os";import{dirname as QS,join as n4}from"path";async function BS(J){let z=Date.now()+jS;for(;;)try{await rf(J);return}catch(Z){if(!(Z instanceof qQ)||Date.now()>=z)throw Z;await qS(HS)}}class mX{homeDir;kobeDir;path;tmpPath;lockPath;cache={version:UZ,tasks:[]};loaded=!1;listeners=new Set;saveChain=Promise.resolve();dirtyIds=new Set;removedIds=new Set;constructor(J={}){this.homeDir=J.homeDir??GS(),this.kobeDir=n4(this.homeDir,".kobe"),this.path=n4(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 c4(this.path,"utf8")}catch(Z){if(Z.code==="ENOENT")return this.cache={version:UZ,tasks:[]},this.loaded=!0,this.notifyListeners(),this.snapshot();throw Z}let z;try{z=JSON.parse(J)}catch(Z){return console.warn(`[kobe] tasks.json at ${this.path} is corrupted (${Z.message}); recovering with empty index. The stale file is left in place.`),this.cache={version:UZ,tasks:[]},this.loaded=!0,this.notifyListeners(),this.snapshot()}return this.cache=i4(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 ZS(QS(this.path),{recursive:!0});let J=new Set(this.dirtyIds),z=new Set(this.removedIds);await BS(this.lockPath);try{let Z=await this.readDiskTasks(),Y=this.mergeWithDisk(Z,J,z),G=`${JSON.stringify({version:UZ,tasks:Y},null,2)}
84
+ `,q=await YS(this.tmpPath,"w",420);try{await q.writeFile(G,"utf8"),await q.sync()}finally{await q.close()}await XS(this.tmpPath,this.path);for(let j of J)this.dirtyIds.delete(j);for(let j of z)this.removedIds.delete(j);let H=new Set(this.cache.tasks.map((j)=>j.id));for(let j of Y)if(!H.has(j.id))this.cache.tasks.push(j)}finally{await u4(this.lockPath)}}async readDiskTasks(){let J;try{J=await c4(this.path,"utf8")}catch(Z){if(Z.code==="ENOENT")return[];throw Z}let z;try{z=JSON.parse(J)}catch{return[]}return i4(z,this.path).tasks}mergeWithDisk(J,z,Z){let Y=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 H=Y.get(q.id);if(H===void 0)continue;X.push(H)}G.add(q.id)}for(let q of J){if(G.has(q.id)||Z.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(),Z={archived:!1,vendor:J.vendor??zJ,...J,id:OG(v4()),createdAt:z,updatedAt:z};return this.cache.tasks.push(Z),this.dirtyIds.add(Z.id),await this.save(),this.notifyListeners(),Z}async update(J,z){this.assertLoaded();let Z=this.cache.tasks.findIndex((j)=>j.id===J);if(Z<0)throw Error(`task not found: ${J}`);let Y=this.cache.tasks[Z];if(!Y)throw Error(`task not found: ${J}`);let{id:X,createdAt:G,...q}=z,H={...Y,...q,id:Y.id,createdAt:Y.createdAt,updatedAt:new Date().toISOString()};return this.cache.tasks[Z]=H,this.dirtyIds.add(String(J)),await this.save(),this.notifyListeners(),H}async move(J,z,Z){this.assertLoaded();let Y=this.cache.tasks.find((L)=>L.id===J);if(!Y)throw Error(`task not found: ${J}`);let X=Z?.length?Z: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 Y;let H=this.cache.tasks.findIndex((L)=>L.id===J),j=this.cache.tasks.findIndex((L)=>L.id===q);if(H<0||j<0||H===j)return Y;let[B]=this.cache.tasks.splice(H,1);if(!B)return Y;let V=H<j?j-1:j,f=z>0?V+1:V,U={...B,updatedAt:new Date().toISOString()};return this.cache.tasks.splice(f,0,U),this.dirtyIds.add(String(J)),await this.save(),this.notifyListeners(),U}async reorder(J){this.assertLoaded();let z=J.map((G)=>{let q=this.cache.tasks.findIndex((j)=>j.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}}),Z=!1,Y=new Map,X=[];for(let{idx:G,position:q}of z){let H=this.cache.tasks[G];if(!H||H.position===q)continue;if(!Y.has(G))Y.set(G,H);if(this.cache.tasks[G]={...H,position:q},!this.dirtyIds.has(H.id))this.dirtyIds.add(H.id),X.push(H.id);Z=!0}if(!Z)return;try{await this.save()}catch(G){for(let[q,H]of Y)this.cache.tasks[q]=H;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((Z)=>Z.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 d4(this.path)}catch(J){if(J.code!=="ENOENT")throw J}try{await d4(this.tmpPath)}catch(J){if(J.code!=="ENOENT")throw J}this.cache={version:UZ,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:UZ,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(Z){console.error("[kobe TaskIndexStore] listener threw on notify:",Z)}}}function i4(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:UZ,tasks:[]};let Z=J,Y=Z.version;if(Y!==void 0&&Y!==1&&Y!==2&&Y!==3)return console.warn(`[kobe] tasks.json at ${z} has unsupported version=${String(Y)}; recovering with empty index.`),{version:UZ,tasks:[]};let X=Array.isArray(Z.tasks)?Z.tasks:[],G=[];for(let q of X){let H=fS(q);if(H)G.push(H);else console.warn(`[kobe] dropping malformed task entry from ${z}: ${JSON.stringify(q)}`)}return{version:UZ,tasks:G}}function fS(J){if(!J||typeof J!=="object")return null;let z=J;if(typeof z.id!=="string"||typeof z.title!=="string"||typeof z.repo!=="string"||typeof z.branch!=="string"||typeof z.worktreePath!=="string"||typeof z.status!=="string"||typeof z.createdAt!=="string"||typeof z.updatedAt!=="string")return null;if(!DS(z.status))return null;let Z=typeof z.archived==="boolean"?z.archived:!1,Y=z.kind==="main"?"main":"task",X=Y==="main"?z.status==="in_progress"||z.status==="done"?"backlog":z.status:z.status==="done"&&!Z?"in_progress":z.status;return{id:OG(z.id),title:z.title,repo:z.repo,branch:z.branch,worktreePath:z.worktreePath,status:X,archived:Z,pinned:typeof z.pinned==="boolean"?z.pinned:!1,kind:Y,vendor:NZ(typeof z.vendor==="string"?z.vendor:void 0),prStatus:WS(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 WS(J){if(!J||typeof J!=="object"||Array.isArray(J))return;let z=J;if(!VS(z.provider)||!US(z.lifecycle)||!KS(z.checkState))return;return{provider:z.provider,lifecycle:z.lifecycle,checkState:z.checkState,...typeof z.number==="number"&&Number.isFinite(z.number)?{number:z.number}:{},...typeof z.url==="string"?{url:z.url}:{},...typeof z.title==="string"?{title:z.title}:{},...typeof z.baseRef==="string"?{baseRef:z.baseRef}:{},...typeof z.headRef==="string"?{headRef:z.headRef}:{},...typeof z.reviewDecision==="string"?{reviewDecision:z.reviewDecision}:{},...typeof z.mergeable==="string"?{mergeable:z.mergeable}:{},...typeof z.lastCheckedAt==="string"?{lastCheckedAt:z.lastCheckedAt}:{},...typeof z.lastError==="string"?{lastError:z.lastError}:{}}}function VS(J){return J==="github"||J==="gitlab"||J==="bitbucket"||J==="unknown"}function US(J){return J==="creating"||J==="open"||J==="ready_to_merge"||J==="merged"||J==="closed"||J==="unknown"}function KS(J){return J==="none"||J==="pending"||J==="passing"||J==="failing"||J==="unknown"}function DS(J){return J==="backlog"||J==="in_progress"||J==="in_review"||J==="done"||J==="canceled"||J==="error"}var qS=(J)=>new Promise((z)=>setTimeout(z,J)),HS=25,jS=5000,UZ=3;var HQ=C(()=>{Yz();s1();E4();m4()});var sH;var l4=C(()=>{sH=class sH extends Error{args;cwd;exitCode;stdout;stderr;constructor(J,z,Z){super(`git ${J.join(" ")} (cwd=${z}) exited with code ${Z.exitCode}: ${Z.stderr.trim()||Z.stdout.trim()}`);this.name="GitCommandError",this.args=J,this.cwd=z,this.exitCode=Z.exitCode,this.stdout=Z.stdout,this.stderr=Z.stderr}}});var _4={};H1(_4,{GitWorktreeManager:()=>tH});import a4 from"fs";import yz from"path";class tH{execDeps;constructor(J=LS){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,Z){if(!Z.cwd)throw Error("runGit(): cwd is required; refusing to inherit from process.cwd()");let Y=await J.run(["git",...z],{cwd:Z.cwd,env:Z.env}),X={stdout:Y.stdout,stderr:Y.stderr,exitCode:Y.exitCode};if(X.exitCode!==0&&!Z.allowFail)throw new sH(z,Z.cwd,X);return X}async create(J,z,Z,Y){let X=this.ctxFor(J);if(_Z("repo",X.dir),_Z("path",Z),!z)throw Error("create(): branch must be a non-empty string");if(await X.exec.exists(Z)){let j=await this.tryDescribe(X,Z);if(j){if(j.branch!==z)throw Error(`worktree at ${Z} is on branch '${j.branch}', refusing to hijack to '${z}'`);return j}throw Error(`create(): ${Z} exists but is not a registered git worktree`)}await X.exec.mkdirp(yz.dirname(Z));let q=await this.branchExists(X,z)?["worktree","add",Z,z]:Y?["worktree","add","-b",z,Z,Y]:["worktree","add","-b",z,Z];await this.runGit(X.exec,q,{cwd:X.dir});let H=await this.tryDescribe(X,Z);if(!H)throw Error(`create(): git reported success but ${Z} is not a worktree`);if(H.branch!==z)throw Error(`create(): post-condition failed \u2014 expected branch '${z}' at ${Z}, got '${H.branch}'`);return H}async createForTask(J){let z=this.execDeps.remoteBasePath(J.repo),Z=z?dU(z,J.slug):hU(J.repo,J.slug);return this.create(J.repo,J.branch,Z,J.baseRef)}async remove(J,z){_Z("path",J);let Z=this.execDeps.execForPath(J),Y=z?.force===!0;if(!await Z.exists(J)){let q=await this.findRepoFor(Z,J);if(q)await this.runGit(Z,["worktree","prune"],{cwd:q,allowFail:!0});return}let X=await this.findRepoFor(Z,J);if(!X)throw Error(`remove(): ${J} is not a git worktree`);if(!Y){if(await this.isDirty(J))throw Error(`remove(): refusing to remove dirty worktree at ${J} (pass { force: true } to override)`)}let G=Y?["worktree","remove","--force",J]:["worktree","remove",J];await this.runGit(Z,G,{cwd:X}),await this.runGit(Z,["worktree","prune"],{cwd:X,allowFail:!0})}async list(J){let z=this.ctxFor(J);_Z("repo",z.dir);let Z=await this.runGit(z.exec,["worktree","list","--porcelain"],{cwd:z.dir}),Y=sf(Z.stdout),X=[];for(let G of Y){if(!G.path)continue;let q=z.remote?$4(z.dir,G.path):MB(J,G.path);if(!q)continue;if(!G.branch||G.detached)continue;let H=jQ(q),j=jQ(G.path),B=yz.relative(H,j),V=yz.join(q,B),f=await this.isDirty(G.path);X.push({path:V,branch:G.branch,head:G.head??"",dirty:f})}return X}async listAll(J){let z=this.ctxFor(J);_Z("repo",z.dir);let Z=await this.runGit(z.exec,["worktree","list","--porcelain"],{cwd:z.dir}),Y=sf(Z.stdout),X=z.remote?z.dir:jQ(z.dir),G=[];for(let q of Y){if(!q.path)continue;if(q.bare)continue;if(!q.branch||q.detached)continue;if((z.remote?q.path:jQ(q.path))===X)continue;let H=await this.isDirty(q.path);G.push({path:q.path,branch:q.branch,head:q.head??"",dirty:H,kobeManaged:z.remote?$4(z.dir,q.path)!==null:mU(J,q.path),lastActivityMs:await this.lastActivityMs(z.exec,q.path)})}return G.sort((q,H)=>H.lastActivityMs-q.lastActivityMs),G}async lastActivityMs(J,z){try{let Z=await this.runGit(J,["log","-1","--format=%ct"],{cwd:z}),Y=Number.parseInt(Z.stdout.trim(),10);if(Number.isFinite(Y)&&Y>0)return Y*1000}catch{}if(!J.isRemote)try{return a4.statSync(z).mtimeMs}catch{}return 0}async isDirty(J){_Z("path",J);let z=this.execDeps.execForPath(J);return(await this.runGit(z,["status","--porcelain"],{cwd:J})).stdout.length>0}async currentBranch(J){_Z("path",J);let z=this.execDeps.execForPath(J),Y=(await this.runGit(z,["rev-parse","--abbrev-ref","HEAD"],{cwd:J})).stdout.trim();if(!Y||Y==="HEAD")throw Error(`currentBranch(): ${J} is in detached-HEAD state`);return Y}async renameBranch(J,z,Z){if(_Z("path",J),z===Z)return;let Y=this.execDeps.execForPath(J),X=await this.findRepoFor(Y,J);if(!X)throw Error(`renameBranch(): ${J} is not a git worktree`);await this.runGit(Y,["branch","-m",z,Z],{cwd:X})}async tryDescribe(J,z){let Z=await this.runGit(J.exec,["worktree","list","--porcelain"],{cwd:J.dir}),Y=sf(Z.stdout),X=(H)=>J.remote?H:jQ(H),G=X(z),q=Y.find((H)=>H.path&&X(H.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 Z=`refs/heads/${z}`;return(await this.runGit(J.exec,["show-ref","--verify","--quiet",Z],{cwd:J.dir,allowFail:!0})).exitCode===0}async findRepoFor(J,z){try{let Z=await this.runGit(J,["rev-parse","--git-common-dir"],{cwd:z,allowFail:!0});if(Z.exitCode!==0)return null;let Y=Z.stdout.trim();if(!Y)return null;let X=yz.isAbsolute(Y)?Y:yz.resolve(z,Y);return yz.basename(X)===".git"?yz.dirname(X):X}catch(Z){if(Z instanceof sH)return null;throw Z}}}function sf(J){let z=[],Z=null;for(let Y of J.split(`
85
+ `)){let X=Y.replace(/\r$/,"");if(X===""){if(Z)z.push(Z);Z=null;continue}if(!Z)Z={};if(X.startsWith("worktree "))Z.path=X.slice(9);else if(X.startsWith("HEAD "))Z.head=X.slice(5);else if(X.startsWith("branch ")){let G=X.slice(7);Z.branch=G.startsWith("refs/heads/")?G.slice(11):G}else if(X==="detached")Z.detached=!0;else if(X==="bare")Z.bare=!0}if(Z)z.push(Z);return z}function $4(J,z){let Z=`${J.replace(/\/+$/,"")}/.kobe/worktrees`;return z===Z||z.startsWith(`${Z}/`)?Z:null}function _Z(J,z){if(!z||!yz.isAbsolute(z))throw Error(`${J} must be an absolute path, got: ${JSON.stringify(z)}`)}function jQ(J){try{return a4.realpathSync(J)}catch{return yz.resolve(J)}}var LS;var tf=C(()=>{Az();S1();l4();FB();LS={execForRepo:qX,execForPath:HZ,remoteBasePath(J){return JZ(J)?.basePath??null}}});var eH;var p4=C(()=>{eH=["web","completions","add","remove","adopt","export","repo","api","daemon","theme","skill","feedback","update","doctor","reset","reload","kill-sessions"]});var o4={};H1(o4,{runCompletionsSubcommand:()=>AS});function MS(){return`# kobe bash completions
85
86
  # Source: kobe completions bash
86
87
 
87
88
  _kobe() {
@@ -89,7 +90,7 @@ _kobe() {
89
90
  COMPREPLY=()
90
91
  cur="\${COMP_WORDS[COMP_CWORD]}"
91
92
  prev="\${COMP_WORDS[COMP_CWORD-1]}"
92
- opts="${rH.join(" ")}"
93
+ opts="${eH.join(" ")}"
93
94
 
94
95
  if [[ \${cur} == * ]] ; then
95
96
  COMPREPLY=( $(compgen -W "\${opts}" -- \${cur}) )
@@ -97,47 +98,47 @@ _kobe() {
97
98
  fi
98
99
  }
99
100
  complete -F _kobe kobe
100
- `}function lS(){return`#compdef kobe
101
+ `}function FS(){return`#compdef kobe
101
102
  # kobe zsh completions
102
103
  # Source: kobe completions zsh
103
104
 
104
105
  _kobe() {
105
106
  local -a subcommands
106
- subcommands=(${rH.map((z)=>`"${z}"`).join(" ")})
107
+ subcommands=(${eH.map((z)=>`"${z}"`).join(" ")})
107
108
 
108
109
  _arguments "1:subcommand:(\${subcommands})"
109
110
  }
110
111
 
111
112
  _kobe "$@"
112
- `}function $S(){return`# kobe fish completions
113
+ `}function OS(){return`# kobe fish completions
113
114
  # Source: kobe completions fish
114
115
 
115
- ${rH.map((z)=>`complete -c kobe -f -a ${z}`).join(`
116
+ ${eH.map((z)=>`complete -c kobe -f -a ${z}`).join(`
116
117
  `)}
117
- `}async function aS(J){let z=J[0];if(z==="--help"||z==="-h"||z==="help"){process.stdout.write(u4);return}if(!z||z!=="bash"&&z!=="zsh"&&z!=="fish")process.stderr.write(`kobe completions: unknown shell "${z}"
118
+ `}async function AS(J){let z=J[0];if(z==="--help"||z==="-h"||z==="help"){process.stdout.write(r4);return}if(!z||z!=="bash"&&z!=="zsh"&&z!=="fish")process.stderr.write(`kobe completions: unknown shell "${z}"
118
119
 
119
- ${u4}`),process.exit(2);let Y;if(z==="bash")Y=iS();else if(z==="zsh")Y=lS();else Y=$S();process.stdout.write(Y)}var u4=`Usage: kobe completions <bash|zsh|fish>
120
+ ${r4}`),process.exit(2);let Z;if(z==="bash")Z=MS();else if(z==="zsh")Z=FS();else Z=OS();process.stdout.write(Z)}var r4=`Usage: kobe completions <bash|zsh|fish>
120
121
 
121
122
  Generate a shell completion script for kobe and print it to stdout.
122
123
  Redirect the output to the appropriate file for your shell.
123
- `;var w4=C(()=>{x4()});var m4={};q1(m4,{runExportSubcommand:()=>JI,renderExport:()=>v4,displayWidth:()=>oH});function _S(J){return{id:J.id,title:J.title,status:J.status,archived:String(J.archived),vendor:J.vendor??o1,branch:J.branch,repo:J.repo,worktreePath:J.worktreePath}}function l9(J){process.stderr.write(`kobe export: ${J}
124
-
125
- ${h4}
126
- `),process.exit(2)}function pS(J){let z="json";for(let Y=0;Y<J.length;Y++){let Z=J[Y];if(Z==="--json")z="json";else if(Z==="--csv")z="csv";else if(Z==="--format"){let G=J[++Y];if(G===void 0)l9("--format requires a value (json, csv, or table)");z=P4(G)}else if(Z.startsWith("--format="))z=P4(Z.slice(9));else l9(`unexpected argument "${Z}"`)}return z}function P4(J){if(J==="json"||J==="csv"||J==="table")return J;l9(`unknown format "${J}" (expected json, csv, or table)`)}function rS(J){if(/[",\r\n]/.test(J))return`"${J.replace(/"/g,'""')}"`;return J}function oS(J){let z=[fQ.join(",")];for(let Y of J)z.push(fQ.map((Z)=>rS(Y[Z])).join(","));return z.join(`
127
- `)}function oH(J){let z=0;for(let Y of J)z+=sS(Y.codePointAt(0));return z}function sS(J){if(J>=768&&J<=879||J>=6832&&J<=6911||J>=7616&&J<=7679||J>=8203&&J<=8207||J>=8234&&J<=8238||J>=8288&&J<=8292||J>=8400&&J<=8447||J>=65024&&J<=65039||J===65279)return 0;if(J>=4352&&J<=4447||J===9001||J===9002||J>=11904&&J<=12350||J>=12353&&J<=13311||J>=13312&&J<=19903||J>=19968&&J<=40959||J>=40960&&J<=42191||J>=44032&&J<=55203||J>=63744&&J<=64255||J>=65040&&J<=65049||J>=65072&&J<=65135||J>=65280&&J<=65376||J>=65504&&J<=65510||J>=127744&&J<=129791||J>=131072&&J<=262141)return 2;return 1}function tS(J,z){return J+" ".repeat(Math.max(0,z-oH(J)))}function eS(J){let z={};for(let G of fQ)z[G]=Math.max(oH(G),...J.map((X)=>oH(X[G])));let Y=(G)=>fQ.map((X)=>tS(G[X],z[X])).join(" ").trimEnd(),Z={};for(let G of fQ)Z[G]=G;return[Y(Z),...J.map(Y)].join(`
128
- `)}function v4(J,z){let Y=J.map(_S);if(z==="json")return JSON.stringify(Y,null,2);if(z==="csv")return oS(Y);return eS(Y)}async function JI(J){if(J.includes("--help")||J.includes("-h")||J.includes("help")){process.stdout.write(`${h4}
129
- `);return}let z=pS(J),{TaskIndexStore:Y}=await Promise.resolve().then(() => (qQ(),d9)),Z=new Y;await Z.load();let G=Z.list();if(G.length===0&&z==="table"){process.stdout.write(`no tasks
130
- `);return}process.stdout.write(`${v4(G,z)}
131
- `)}var h4,fQ;var c4=C(()=>{zz();h4=["Usage: kobe export [--json | --csv | --format <json|csv|table>]","","Print the task list (from ~/.kobe/tasks.json) to stdout. Read-only and","daemon-free \u2014 works with the kobe daemon down.","","Options:"," --json JSON array of tasks (default)"," --csv CSV with a header row"," --format <fmt> One of: json, csv, table"," -h, --help Print this help",""].join(`
132
- `),fQ=["id","title","status","archived","vendor","branch","repo","worktreePath"]});var i4={};q1(i4,{runRepoSubcommand:()=>GI});import{readFileSync as zI}from"fs";import{resolve as sH}from"path";function lY(J){process.stderr.write(`kobe repo: ${J}
133
-
134
- ${n4}
135
- `),process.exit(2)}function d4(J){try{return zI(sH(process.cwd(),J),"utf8")}catch(z){lY(`cannot read ${J}: ${z instanceof Error?z.message:String(z)}`)}}function YI(J){let z={};for(let Y=0;Y<J.length;Y++){let Z=J[Y],G=()=>{let X=J[++Y];if(X===void 0)lY(`${Z} requires a value`);return X};if(Z==="--init-script")z.initScript=G();else if(Z==="--init-script-file")z.initScript=d4(G());else if(Z==="--init-prompt")z.initPrompt=G();else if(Z==="--init-prompt-file")z.initPrompt=d4(G());else if(Z.startsWith("-"))lY(`unknown flag "${Z}"`);else if(z.path===void 0)z.path=Z;else lY(`unexpected argument "${Z}"`)}return z}function ZI(J){let z,Y=!1,Z=!1;for(let G of J)if(G==="--init-script")Y=!0;else if(G==="--init-prompt")Z=!0;else if(G.startsWith("-"))lY(`unknown flag "${G}"`);else if(z===void 0)z=G;else lY(`unexpected argument "${G}"`);if(!Y&&!Z)Y=!0,Z=!0;return{path:z,clearScript:Y,clearPrompt:Z}}async function GI(J){let[z,...Y]=J;if(z===void 0||z==="--help"||z==="-h"||z==="help"){process.stdout.write(`${n4}
136
- `);return}let{getRepoInitOverride:Z,setRepoInitOverride:G,resolveRepoRoot:X}=await Promise.resolve().then(() => (C1(),zY)),{existsSync:Q}=await import("fs"),{join:H}=await import("path");if(z==="show"){let[f]=Y.filter((L)=>!L.startsWith("-")),j=X(sH(process.cwd(),f??".")),V=Z(j),B=Q(H(j,".kobe","init.sh")),K=Q(H(j,".kobe","init-prompt.md"));console.log(`repo: ${j}`),console.log(` .kobe/init.sh: ${B?"present (wins)":"absent"}`),console.log(` .kobe/init-prompt.md: ${K?"present (wins)":"absent"}`),console.log(` override initScript: ${V.initScript?hG(V.initScript):"(unset)"}`),console.log(` override initPrompt: ${V.initPrompt?hG(V.initPrompt):"(unset)"}`);return}if(z==="set"){let f=YI(Y);if(f.initScript===void 0&&f.initPrompt===void 0)lY("set needs at least one of --init-script(-file) / --init-prompt(-file)");let j=X(sH(process.cwd(),f.path??".")),V=G(j,{...f.initScript!==void 0?{initScript:f.initScript}:{},...f.initPrompt!==void 0?{initPrompt:f.initPrompt}:{}});console.log(`updated override for ${j}`),console.log(` initScript: ${V.initScript?hG(V.initScript):"(unset)"}`),console.log(` initPrompt: ${V.initPrompt?hG(V.initPrompt):"(unset)"}`);return}if(z==="unset"){let{path:f,clearScript:j,clearPrompt:V}=ZI(Y),B=X(sH(process.cwd(),f??".")),K=G(B,{...j?{initScript:""}:{},...V?{initPrompt:""}:{}});console.log(`cleared override for ${B}`),console.log(` initScript: ${K.initScript?hG(K.initScript):"(unset)"}`),console.log(` initPrompt: ${K.initPrompt?hG(K.initPrompt):"(unset)"}`);return}lY(`unknown verb "${z}"`)}function hG(J){let z=J.replace(/\s+/g," ").trim();return z.length>60?`"${z.slice(0,57)}\u2026"`:`"${z}"`}var n4;var l4=C(()=>{n4=["Usage: kobe repo <show|set|unset> [path] [options]","","Manage a repo's per-user init override (state.json fallback for repos","that don't ship .kobe/init.sh / .kobe/init-prompt.md).","","Commands:"," show [path] Print the override + whether the repo ships .kobe/ files"," set [path] <options> Set the init script and/or first prompt"," unset [path] [--init-script] [--init-prompt] Clear one or both (default: both)","","Set options (later wins; *-file reads from disk):"," --init-script <text> Inline shell to run before the engine"," --init-script-file <path> Read the init script from a file"," --init-prompt <text> Inline first prompt for the engine"," --init-prompt-file <path> Read the first prompt from a file",""," path defaults to the current directory (resolved to its git toplevel).",""].join(`
137
- `)});import{spawnSync as XI}from"child_process";function HI(J){let[z,Y]=J.split("/");if(!z||!Y)throw Error(`invalid GitHub repository slug: ${J}`);return{owner:z,name:Y}}function $4(J,z){let Y=J.trim();if(!Y)throw Error(`${z} is required`);return Y}function a4(J,z){let Y=z?.map((Z)=>typeof Z.message==="string"?Z.message:null).filter((Z)=>!!Z);if(Y&&Y.length>0)return Y.join("; ");return J.trim()||"GitHub CLI returned an empty response"}function _4(J,z,Y){let Z=["api","graphql","-f",`query=${J}`];for(let[f,j]of Object.entries(z))Z.push("-f",`${f}=${j}`);let G=Y.spawn("gh",Z,{encoding:"utf8"});if(G.error)throw Error(`failed to run gh: ${G.error.message}`);let X=typeof G.stdout==="string"?G.stdout:String(G.stdout??""),Q=typeof G.stderr==="string"?G.stderr:String(G.stderr??""),H;try{H=JSON.parse(X)}catch{throw Error(`failed to parse gh response: ${a4(Q,void 0)}`)}if((G.status??0)!==0||H.errors?.length)throw Error(a4(Q,H.errors));if(!H.data)throw Error("GitHub CLI response did not include data");return H.data}function fI(J){return`${J}
124
+ `;var s4=C(()=>{p4()});var zD={};H1(zD,{runExportSubcommand:()=>SS,renderExport:()=>JD,displayWidth:()=>Jj});function RS(J){return{id:J.id,title:J.title,status:J.status,archived:String(J.archived),vendor:J.vendor??zJ,branch:J.branch,repo:J.repo,worktreePath:J.worktreePath}}function ef(J){process.stderr.write(`kobe export: ${J}
125
+
126
+ ${e4}
127
+ `),process.exit(2)}function gS(J){let z="json";for(let Z=0;Z<J.length;Z++){let Y=J[Z];if(Y==="--json")z="json";else if(Y==="--csv")z="csv";else if(Y==="--format"){let X=J[++Z];if(X===void 0)ef("--format requires a value (json, csv, or table)");z=t4(X)}else if(Y.startsWith("--format="))z=t4(Y.slice(9));else ef(`unexpected argument "${Y}"`)}return z}function t4(J){if(J==="json"||J==="csv"||J==="table")return J;ef(`unknown format "${J}" (expected json, csv, or table)`)}function NS(J){if(/[",\r\n]/.test(J))return`"${J.replace(/"/g,'""')}"`;return J}function CS(J){let z=[BQ.join(",")];for(let Z of J)z.push(BQ.map((Y)=>NS(Z[Y])).join(","));return z.join(`
128
+ `)}function Jj(J){let z=0;for(let Z of J)z+=bS(Z.codePointAt(0));return z}function bS(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 kS(J,z){return J+" ".repeat(Math.max(0,z-Jj(J)))}function IS(J){let z={};for(let X of BQ)z[X]=Math.max(Jj(X),...J.map((G)=>Jj(G[X])));let Z=(X)=>BQ.map((G)=>kS(X[G],z[G])).join(" ").trimEnd(),Y={};for(let X of BQ)Y[X]=X;return[Z(Y),...J.map(Z)].join(`
129
+ `)}function JD(J,z){let Z=J.map(RS);if(z==="json")return JSON.stringify(Z,null,2);if(z==="csv")return CS(Z);return IS(Z)}async function SS(J){if(J.includes("--help")||J.includes("-h")||J.includes("help")){process.stdout.write(`${e4}
130
+ `);return}let z=gS(J),{TaskIndexStore:Z}=await Promise.resolve().then(() => (HQ(),of)),Y=new Z;await Y.load();let X=Y.list();if(X.length===0&&z==="table"){process.stdout.write(`no tasks
131
+ `);return}process.stdout.write(`${JD(X,z)}
132
+ `)}var e4,BQ;var ZD=C(()=>{Yz();e4=["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(`
133
+ `),BQ=["id","title","status","archived","vendor","branch","repo","worktreePath"]});var GD={};H1(GD,{runRepoSubcommand:()=>uS});import{readFileSync as yS}from"fs";import{resolve as zj}from"path";function pZ(J){process.stderr.write(`kobe repo: ${J}
134
+
135
+ ${XD}
136
+ `),process.exit(2)}function YD(J){try{return yS(zj(process.cwd(),J),"utf8")}catch(z){pZ(`cannot read ${J}: ${z instanceof Error?z.message:String(z)}`)}}function TS(J){let z={};for(let Z=0;Z<J.length;Z++){let Y=J[Z],X=()=>{let G=J[++Z];if(G===void 0)pZ(`${Y} requires a value`);return G};if(Y==="--init-script")z.initScript=X();else if(Y==="--init-script-file")z.initScript=YD(X());else if(Y==="--init-prompt")z.initPrompt=X();else if(Y==="--init-prompt-file")z.initPrompt=YD(X());else if(Y.startsWith("-"))pZ(`unknown flag "${Y}"`);else if(z.path===void 0)z.path=Y;else pZ(`unexpected argument "${Y}"`)}return z}function xS(J){let z,Z=!1,Y=!1;for(let X of J)if(X==="--init-script")Z=!0;else if(X==="--init-prompt")Y=!0;else if(X.startsWith("-"))pZ(`unknown flag "${X}"`);else if(z===void 0)z=X;else pZ(`unexpected argument "${X}"`);if(!Z&&!Y)Z=!0,Y=!0;return{path:z,clearScript:Z,clearPrompt:Y}}async function uS(J){let[z,...Z]=J;if(z===void 0||z==="--help"||z==="-h"||z==="help"){process.stdout.write(`${XD}
137
+ `);return}let{getRepoInitOverride:Y,setRepoInitOverride:X,resolveRepoRoot:G}=await Promise.resolve().then(() => (S1(),zZ)),{existsSync:q}=await import("fs"),{join:H}=await import("path");if(z==="show"){let[j]=Z.filter((L)=>!L.startsWith("-")),B=G(zj(process.cwd(),j??".")),V=Y(B),f=q(H(B,".kobe","init.sh")),U=q(H(B,".kobe","init-prompt.md"));console.log(`repo: ${B}`),console.log(` .kobe/init.sh: ${f?"present (wins)":"absent"}`),console.log(` .kobe/init-prompt.md: ${U?"present (wins)":"absent"}`),console.log(` override initScript: ${V.initScript?cX(V.initScript):"(unset)"}`),console.log(` override initPrompt: ${V.initPrompt?cX(V.initPrompt):"(unset)"}`);return}if(z==="set"){let j=TS(Z);if(j.initScript===void 0&&j.initPrompt===void 0)pZ("set needs at least one of --init-script(-file) / --init-prompt(-file)");let B=G(zj(process.cwd(),j.path??".")),V=X(B,{...j.initScript!==void 0?{initScript:j.initScript}:{},...j.initPrompt!==void 0?{initPrompt:j.initPrompt}:{}});console.log(`updated override for ${B}`),console.log(` initScript: ${V.initScript?cX(V.initScript):"(unset)"}`),console.log(` initPrompt: ${V.initPrompt?cX(V.initPrompt):"(unset)"}`);return}if(z==="unset"){let{path:j,clearScript:B,clearPrompt:V}=xS(Z),f=G(zj(process.cwd(),j??".")),U=X(f,{...B?{initScript:""}:{},...V?{initPrompt:""}:{}});console.log(`cleared override for ${f}`),console.log(` initScript: ${U.initScript?cX(U.initScript):"(unset)"}`),console.log(` initPrompt: ${U.initPrompt?cX(U.initPrompt):"(unset)"}`);return}pZ(`unknown verb "${z}"`)}function cX(J){let z=J.replace(/\s+/g," ").trim();return z.length>60?`"${z.slice(0,57)}\u2026"`:`"${z}"`}var XD;var QD=C(()=>{XD=["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(`
138
+ `)});import{spawnSync as ES}from"child_process";function hS(J){let[z,Z]=J.split("/");if(!z||!Z)throw Error(`invalid GitHub repository slug: ${J}`);return{owner:z,name:Z}}function qD(J,z){let Z=J.trim();if(!Z)throw Error(`${z} is required`);return Z}function HD(J,z){let Z=z?.map((Y)=>typeof Y.message==="string"?Y.message:null).filter((Y)=>!!Y);if(Z&&Z.length>0)return Z.join("; ");return J.trim()||"GitHub CLI returned an empty response"}function jD(J,z,Z){let Y=["api","graphql","-f",`query=${J}`];for(let[j,B]of Object.entries(z))Y.push("-f",`${j}=${B}`);let X=Z.spawn("gh",Y,{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??""),H;try{H=JSON.parse(G)}catch{throw Error(`failed to parse gh response: ${HD(q,void 0)}`)}if((X.status??0)!==0||H.errors?.length)throw Error(HD(q,H.errors));if(!H.data)throw Error("GitHub CLI response did not include data");return H.data}function vS(J){return`${J}
138
139
 
139
140
  ---
140
- Submitted from kobe ${J1}.`}function vG(J,z={}){let Y=$4(J.title,"feedback title"),Z=fI($4(J.body,"feedback body")),G=(z.repoSlug??JZ)();if(!G)throw Error("package repository is not a GitHub repository");let{owner:X,name:Q}=HI(G),H=J.categorySlug?.trim()||$9,f={spawn:z.spawn??XI},V=_4(QI,{owner:X,name:Q},f).repository,B=V?.id;if(!B)throw Error(`GitHub repository not found: ${G}`);let K=V.discussionCategories?.nodes?.find((O)=>O.slug===H);if(!K)throw Error(`GitHub Discussion category not found: ${H}`);let A=_4(qI,{repositoryId:B,categoryId:K.id,title:Y,body:Z},f).createDiscussion?.discussion;if(!A?.url||typeof A.number!=="number")throw Error("GitHub did not return the created Discussion");return{number:A.number,url:A.url}}var $9="feedback",QI=`
141
+ Submitted from kobe ${J1}.`}function dX(J,z={}){let Z=qD(J.title,"feedback title"),Y=vS(qD(J.body,"feedback body")),X=(z.repoSlug??ZY)();if(!X)throw Error("package repository is not a GitHub repository");let{owner:G,name:q}=hS(X),H=J.categorySlug?.trim()||J8,j={spawn:z.spawn??ES},V=jD(wS,{owner:G,name:q},j).repository,f=V?.id;if(!f)throw Error(`GitHub repository not found: ${X}`);let U=V.discussionCategories?.nodes?.find((A)=>A.slug===H);if(!U)throw Error(`GitHub Discussion category not found: ${H}`);let O=jD(PS,{repositoryId:f,categoryId:U.id,title:Z,body:Y},j).createDiscussion?.discussion;if(!O?.url||typeof O.number!=="number")throw Error("GitHub did not return the created Discussion");return{number:O.number,url:O.url}}var J8="feedback",wS=`
141
142
  query($owner: String!, $name: String!) {
142
143
  repository(owner: $owner, name: $name) {
143
144
  id
@@ -150,7 +151,7 @@ query($owner: String!, $name: String!) {
150
151
  }
151
152
  }
152
153
  }
153
- `,qI=`
154
+ `,PS=`
154
155
  mutation($repositoryId: ID!, $categoryId: ID!, $title: String!, $body: String!) {
155
156
  createDiscussion(input: {
156
157
  repositoryId: $repositoryId,
@@ -164,74 +165,74 @@ mutation($repositoryId: ID!, $categoryId: ID!, $title: String!, $body: String!)
164
165
  }
165
166
  }
166
167
  }
167
- `;var tH=C(()=>{NJ()});async function p4(J={}){let z=J.mode==="require-running"?await Qz():await Sz();if(!z)return null;return{client:z,close:()=>z.close()}}var r4=C(()=>{CJ()});var QD={};q1(QD,{verbSchema:()=>o9,verbHelp:()=>ZD,validateAgainstSpec:()=>p9,schemaIndex:()=>zD,runApiSubcommand:()=>EI,parseFlags:()=>_9,parseAgentsSpec:()=>e4,invokeVerb:()=>uI,fullSchema:()=>YD,findVerb:()=>jQ,deliverPrompt:()=>GD,defaultApiRuntime:()=>s9,apiUsage:()=>eH,VerbArgs:()=>r9,VERB_GROUPS:()=>cG,VERBS:()=>dG,FANOUT_CAP:()=>mG,ApiError:()=>N1,API_VERBS:()=>WI,API_SCHEMA_VERSION:()=>a9});import{resolve as o4}from"path";function t4(J){for(let[z,Y]of Object.entries(cG))if(Y.includes(J))return z;return"other"}async function BI(J){let z=J.args.str("verb");if(z){let Z=jQ(z);if(!Z)throw new N1(`unknown verb: ${z}`,"BAD_VERB");return o9(Z)}let Y=J.args.str("group");if(Y)return KI(Y);if(J.args.bool("all"))return YD();return zD()}function jQ(J){let z=Jf[J]??J;return dG.find((Y)=>Y.name===z)}function _9(J,z=new Set){let Y=new Map,Z=!1,G=!1;for(let X=0;X<J.length;X++){let Q=J[X];if(!Q.startsWith("--")&&Q!=="-h")throw new N1(`unexpected positional arg: ${Q}`,"BAD_FLAG");if(Q==="-h"){G=!0;continue}let H=Q.indexOf("=");if(H!==-1){let V=Q.slice(2,H),B=Q.slice(H+1);if(V==="pretty")Z=B!=="false"&&B!=="0";else if(V==="help")G=B!=="false"&&B!=="0";else Y.set(V,B);continue}let f=Q.slice(2);if(f==="pretty"){Z=!0;continue}if(f==="help"){G=!0;continue}if(z.has(f)){Y.set(f,"true");continue}let j=J[X+1];if(j===void 0||j.startsWith("--"))throw new N1(`flag --${f} requires a value`,"BAD_FLAG");Y.set(f,j),X+=1}return{flags:Y,pretty:Z,help:G}}function p9(J,z){let Y=new Set(J.flags.map((Z)=>Z.name));for(let Z of z.keys())if(!Y.has(Z))throw new N1(`unknown flag --${Z} for "${J.name}". Run \`kobe api ${J.name} --help\``,"BAD_FLAG");for(let Z of J.flags){if(Z.required&&!z.get(Z.name))throw new N1(`--${Z.name} is required for "${J.name}"`,"MISSING_FLAG");if(Z.type==="enum"&&Z.values){let G=z.get(Z.name);if(G!==void 0&&!Z.values.includes(G))throw new N1(`--${Z.name} must be one of ${Z.values.join(", ")}`,"BAD_FLAG")}if(Z.type==="int"){let G=z.get(Z.name);if(G!==void 0){let X=Number.parseInt(G,10);if(!Number.isInteger(X)||X<=0)throw new N1(`--${Z.name} must be a positive integer`,"BAD_FLAG")}}}}class r9{verb;flags;constructor(J,z){this.verb=J;this.flags=z}spec(J){let z=this.verb.flags.find((Y)=>Y.name===J);if(!z)throw Error(`internal: --${J} is not declared on verb "${this.verb.name}"`);return z}str(J){this.spec(J);let z=this.flags.get(J);return z&&z.length>0?z:void 0}require(J){let z=this.str(J);if(z===void 0)throw new N1(`--${J} is required`,"MISSING_FLAG");return z}enumOf(J){let z=this.spec(J),Y=this.str(J);if(Y===void 0)return;if(z.values&&!z.values.includes(Y))throw new N1(`--${J} must be one of ${z.values.join(", ")}`,"BAD_FLAG");return Y}requireEnum(J){return this.require(J),this.enumOf(J)}vendor(){return this.enumOf("vendor")}bool(J){this.spec(J);let z=this.str(J);if(z===void 0)return;if(["true","1","yes"].includes(z))return!0;if(["false","0","no"].includes(z))return!1;throw new N1(`--${J} must be a boolean (true/false)`,"BAD_FLAG")}int(J){this.spec(J);let z=this.str(J);if(z===void 0)return;let Y=Number.parseInt(z,10);if(!Number.isInteger(Y)||Y<=0)throw new N1(`--${J} must be a positive integer`,"BAD_FLAG");return Y}path(J){let z=this.str(J);return z===void 0?void 0:o4(process.cwd(),z)}requirePath(J){return o4(process.cwd(),this.require(J))}}function e4(J){let z=[];for(let Y of J.split(",")){let Z=Y.trim();if(!Z)continue;let G=Z.indexOf(":");if(G===-1)throw new N1(`--agents entry "${Z}" must be vendor:count`,"BAD_FLAG");let X=Z.slice(0,G);if(!a1.includes(X))throw new N1(`--agents vendor "${X}" must be one of ${a1.join(", ")}`,"BAD_FLAG");let Q=Number.parseInt(Z.slice(G+1),10);if(!Number.isInteger(Q)||Q<=0)throw new N1(`--agents count for "${X}" must be a positive integer`,"BAD_FLAG");if(z.length+Q>mG)throw new N1(`--agents requests ${z.length+Q} agents, exceeds the cap of ${mG}`,"BAD_FLAG");for(let H=0;H<Q;H++)z.push(X)}if(z.length===0)throw new N1('--agents specified no agents (e.g. "claude:2,codex:1")',"BAD_FLAG");return z}function VI(J){return{name:J.name,type:J.type,required:J.required??!1,...J.values?{values:J.values}:{},...J.default!==void 0?{default:J.default}:{},...J.placeholder?{placeholder:J.placeholder}:{},description:J.description}}function o9(J){return{name:J.name,group:t4(J.name),summary:J.summary,offline:J.offline??!1,flags:J.flags.map(VI)}}function zD(){return{apiVersion:a9,kobeVersion:J1,hint:"Compact index. Drill into ONE verb: `kobe api schema --verb <name>` (or `kobe api <verb> --help`). One group: `--group <g>`. Whole spec: `--all`.",groups:cG,verbs:dG.map((J)=>({name:J.name,group:t4(J.name),summary:J.summary})),globalFlags:JD,aliases:Jf}}function KI(J){let z=cG[J];if(!z)throw new N1(`unknown group: ${J}. Groups: ${Object.keys(cG).join(", ")}`,"BAD_FLAG");return{group:J,verbs:z.map((Y)=>{let Z=jQ(Y);return{name:Y,summary:Z?.summary??""}})}}function YD(){return{apiVersion:a9,kobeVersion:J1,output:{success:"one JSON object on stdout, newline-terminated, exit 0",error:'{"error":{"message","code"}} on stderr, exit != 0',pretty:"--pretty indents stdout JSON"},globalFlags:JD,aliases:Jf,groups:cG,verbs:dG.map(o9)}}function UI(J){return J.flags.map((z)=>{let Y=z.type==="enum"&&z.values?z.values.join("|"):z.placeholder??(z.type==="bool"?"":"X"),Z=Y?`--${z.name} ${Y}`:`--${z.name}`;return z.required?Z:`[${Z}]`}).join(" ")}function ZD(J){let z=[`kobe api ${J.name} ${UI(J)}`.trimEnd(),"",J.summary,""],Y=Object.entries(Jf).find(([,Z])=>Z===J.name)?.[0];if(Y)z.push(`Alias: ${Y}`,"");if(J.flags.length>0){z.push("Flags:");for(let Z of J.flags){let G=Z.required?" (required)":"",X=Z.default!==void 0?` [default: ${Z.default}]`:"",Q=Z.type==="enum"&&Z.values?` {${Z.values.join("|")}}`:"";z.push(` --${Z.name}${Q}${G}${X} ${Z.description}`)}z.push("")}return z.push("Global: [--pretty] [--help]"),z.join(`
168
- `)}function eH(){return["usage: kobe api <verb> [flags] [--pretty] [--help]","","Explore the full surface (names, flags, types) with: kobe api schema","","verbs:",...dG.map((z)=>` ${z.name.padEnd(18)} ${z.summary}`),"","Output is one JSON object on stdout (exit 0); errors are JSON on stderr (exit != 0)."].join(`
169
- `)}function DI(J,z){let Y=z?JSON.stringify(J,null,2):JSON.stringify(J);process.stdout.write(`${Y}
170
- `)}function KY(J,z,Y=1){process.stderr.write(`${JSON.stringify({error:{message:J,code:z}})}
171
- `),process.exit(Y)}async function GD(J,z,Y,Z=LI){let G=z.worktreePath;if(!G)G=(await J.request("task.ensureWorktree",{taskId:z.id})).worktreePath;if(!G)throw new N1(`task ${z.id} has no worktree`,"NO_WORKTREE");let X=I1(z.id),Q=await Z.sessionExists(X);if(!Q){let j=await Z.resolveEngineLaunchInit(z.repo??"",G,{kind:"none"});if(!await Z.ensureSession({name:X,cwd:G,command:Z.engineCommand(z.vendor),taskId:z.id,vendor:z.vendor,repo:z.repo,launchInit:j}))throw new N1(`failed to start tmux session for ${z.id}`,"SESSION_FAILED")}let{pane:H,ready:f}=await Z.waitForEnginePane(X,!Q);if(!H)throw new N1(`no engine pane in session ${X}`,"NO_ENGINE_PANE");return await Z.pasteAndSubmit(H,Y),{session:X,pane:H,started:!Q,engineReady:f}}async function FI(J){let z=null,Y=J.onChannel("active-task",(Z)=>{z=Z.taskId});try{await J.subscribe()}finally{Y()}return z}function lJ(J){if(!J.client)throw new N1("daemon required","BAD_DAEMON");return J.client}async function yz(J,z,Y){return lJ(J).request(z,Y)}async function MI(J){let z=J.args.str("title"),Y=J.args.str("body");if(z===void 0&&Y===void 0)throw new N1("issue-update requires --title and/or --body","MISSING_FLAG");return yz(J,"issue.mutate",{repoRoot:J.args.requirePath("repo"),op:{type:"update",id:J.args.int("id"),title:z,body:Y}})}async function OI(J){let z=lJ(J),{args:Y,runtime:Z}=J,X={repo:await Z.resolveRepoRoot(Y.requirePath("repo"))},Q=Y.str("title");if(Q)X.title=Q;let H=Y.str("branch");if(H)X.branch=H;let f=Y.str("base-branch");if(f)X.baseRef=f;let j=Y.vendor()??await Z.defaultVendor();if(j)X.vendor=j;let V=await z.request("task.create",X),B=V.taskId;await z.request("task.setActive",{taskId:B});let K=Y.enumOf("status");if(K)await z.request("task.status",{taskId:B,status:K});let L=Y.bool("pin");if(L!==void 0)await z.request("task.pin",{taskId:B,pinned:L});let A=V.task;if(K||L!==void 0)A=(await z.request("task.get",{taskId:B})).task;let O=Y.str("prompt");if(!O)return{taskId:B,task:A,started:!1};let R=await J.runtime.deliverPrompt(z,{id:B,worktreePath:A.worktreePath,vendor:A.vendor,repo:A.repo},O);return A=(await z.request("task.get",{taskId:B})).task,{taskId:B,task:A,started:R.started,engineReady:R.engineReady,session:R.session}}async function AI(J){let z=lJ(J),Y=J.args.require("prompt"),Z=J.args.str("task-id");if(!Z){let Q=await FI(z);if(!Q)throw new N1("no --task-id given and no active task \u2014 open a task first or pass --task-id","MISSING_TARGET");Z=Q}let G=await z.request("task.get",{taskId:Z}),X=await J.runtime.deliverPrompt(z,{id:Z,worktreePath:G.task.worktreePath,vendor:G.task.vendor,repo:G.task.repo},Y);return{ok:!0,taskId:Z,session:X.session,started:X.started,engineReady:X.engineReady}}async function RI(J){let z=lJ(J),Y=J.args.require("task-id"),Z=J.args.require("prompt");return await z.request("session.deliver",{taskId:Y,text:Z,source:"dispatcher"}),{ok:!0,taskId:Y,routed:"session.deliver"}}async function gI(J){let z=lJ(J),Y=J.args.require("task-id"),Z=J.args.require("text");return await z.request("note.file",{taskId:Y,text:Z})}async function NI(J){let z=lJ(J),Y=J.args.require("task-id"),Z=await z.request("task.get",{taskId:Y}),G=await J.runtime.isTaskRunning(Y);return{task:Z.task,running:G}}async function CI(J){return lJ(J).request("task.list")}async function kI(J){let z=lJ(J),Z=J.args.bool("none")?null:J.args.require("task-id");return await z.request("task.setActive",{taskId:Z}),{ok:!0,activeTaskId:Z}}async function bI(J){let z=lJ(J),Y=J.args.require("task-id"),Z=J.args.bool("archived")??!0,G=await z.request("task.archive",{taskId:Y,archived:Z});if(Z)await J.runtime.tearDownSession(Y);return G}async function SI(J){let z=lJ(J),Y=J.args.require("task-id"),Z=J.args.bool("force")??!1,G=await z.request("task.delete",{taskId:Y,force:Z});return await J.runtime.tearDownSession(Y),G}async function II(J){let z=lJ(J),{args:Y}=J,Z={repo:Y.requirePath("repo"),worktreePath:Y.requirePath("worktree")},G=Y.str("branch");if(G)Z.branch=G;let X=Y.vendor();if(X)Z.vendor=X;let Q=Y.str("title");if(Q)Z.title=Q;return z.request("worktree.adopt",Z)}async function yI(J){let z=lJ(J),{args:Y,runtime:Z}=J,G=await Z.resolveRepoRoot(Y.requirePath("repo")),X=Y.require("prompt"),Q=Y.str("title"),H=Y.str("base-branch"),f=Y.str("agents"),j=await Z.defaultVendor(),V=f?e4(f):Array(Y.int("count")??1).fill(Y.vendor()??j??"claude");if(V.length>mG)throw new N1(`fan-out of ${V.length} exceeds the cap of ${mG} \u2014 spawn in batches`,"BAD_FLAG");let B=[];for(let K of V){let L={repo:G,vendor:K};if(Q)L.title=Q;if(H)L.baseRef=H;let A=await z.request("task.create",L),O=await J.runtime.deliverPrompt(z,{id:A.taskId,worktreePath:A.task.worktreePath,vendor:K,repo:A.task.repo},X);B.push({taskId:A.taskId,vendor:K,started:O.started,engineReady:O.engineReady,session:O.session})}return{count:B.length,tasks:B}}async function TI(J){let z=lJ(J),{args:Y,runtime:Z}=J,G=Y.str("task-ids"),X=Y.path("repo"),Q;if(G)Q=G.split(",").map((f)=>f.trim()).filter(Boolean);else if(X){let f=await Z.resolveRepoRoot(X),{tasks:j}=await z.request("task.list");Q=[];for(let V of j){if(V.archived)continue;if(await Z.resolveRepoRoot(V.repo)===f)Q.push(V.id)}}else throw new N1("collect needs --task-ids id1,id2 or --repo PATH","MISSING_TARGET");let H=[];for(let f of Q){let{task:j}=await z.request("task.get",{taskId:f}),V=await Z.isTaskRunning(f),B=j.worktreePath?await Z.readWorktreeChanges(j.worktreePath):{added:0,deleted:0};H.push({taskId:j.id,title:j.title,branch:j.branch,worktreePath:j.worktreePath,vendor:j.vendor,status:j.status,running:V,changes:B})}return{tasks:H}}async function xI(J){return{ok:!0,discussion:vG({title:J.args.require("title"),body:J.args.require("body"),categorySlug:J.args.str("category")})}}function XD(J,z,Y,Z){return{args:new r9(J,z),client:Y,runtime:Z}}async function uI(J,z,Y){let Z=jQ(J);if(!Z)throw new N1(`unknown verb: ${J}`,"BAD_VERB");let G=new Set(Z.flags.filter((Q)=>Q.type==="bool").map((Q)=>Q.name)),X=_9(z,G);return p9(Z,X.flags),Z.handler(XD(Z,X.flags,Y.client,Y.runtime??s9))}async function EI(J){let[z,...Y]=J;if(!z||z==="--help"||z==="-h"||z==="help"){if(!z)KY(eH(),"MISSING_VERB",2);process.stdout.write(`${eH()}
172
- `);return}let Z=jQ(z);if(!Z)KY(`unknown verb: ${z}
173
- ${eH()}`,"BAD_VERB",2);let G=new Set(Z.flags.filter((H)=>H.type==="bool").map((H)=>H.name)),X;try{X=_9(Y,G)}catch(H){if(H instanceof N1)KY(H.message,H.code,2);KY(H instanceof Error?H.message:String(H),"BAD_FLAG",2)}if(X.help){process.stdout.write(`${ZD(Z)}
174
- `);return}try{p9(Z,X.flags)}catch(H){if(H instanceof N1)KY(H.message,H.code,2);KY(H instanceof Error?H.message:String(H),"BAD_FLAG",2)}let Q=null;if(!Z.offline)try{Q=await p4()}catch(H){KY(`could not reach or start the kobe daemon: ${H instanceof Error?H.message:String(H)}`,"BAD_DAEMON",2)}try{let H=await Z.handler(XD(Z,X.flags,Q?.client??null,s9));DI(H,X.pretty)}catch(H){if(H instanceof N1)KY(H.message,H.code,1);KY(H instanceof Error?H.message:String(H),"RPC_ERROR",1)}finally{Q?.close()}}var a9=2,mG=10,s4,jI,N1,L1,Jf,cG,dG,WI,JD,LI,s9;var qD=C(()=>{Yz();tH();c1();rq();_1();NJ();r4();s4=["backlog","in_progress","in_review","done","canceled","error"],jI=["open","doing","hold","done"];N1=class N1 extends Error{code;constructor(J,z){super(J);this.code=z}};L1={repo:(J=!0)=>({name:"repo",type:"string",required:J,placeholder:"PATH",description:"Repo root (git toplevel). Relative paths resolve against $PWD."}),taskId:(J=!0)=>({name:"task-id",type:"string",required:J,placeholder:"ID",description:"Target task id (from `list` / `add`)."}),vendor:()=>({name:"vendor",type:"enum",values:a1,placeholder:"V",description:"Engine vendor for the task."}),title:()=>({name:"title",type:"string",placeholder:"T",description:"Human task title."}),prompt:(J,z)=>({name:"prompt",type:"string",required:J,placeholder:"TEXT",description:z})},Jf={"spawn-task":"add"},cG={discover:["schema"],read:["list","get-task","collect"],create:["add","fan-out"],drive:["send","dispatch","note","set-active"],edit:["rename","set-branch","set-vendor","set-status"],issues:["issue-list","issue-create","issue-set-status","issue-update"],lifecycle:["archive","pin","delete"],worktree:["ensure-worktree","adopt","discover-adoptable"],feedback:["feedback"]};dG=[{name:"schema",summary:"Explore the API. Default = a COMPACT index (groups + verb summaries, no flags). Drill in with --verb / --group; --all for the full spec.",flags:[{name:"verb",type:"string",placeholder:"NAME",description:"Full flag detail for ONE verb."},{name:"group",type:"string",placeholder:"G",description:"List the verbs in one group (compact)."},{name:"all",type:"bool",description:"The COMPLETE spec \u2014 every verb AND every flag (large; avoid by default)."}],offline:!0,handler:BI},{name:"list",summary:"List all tasks (incl. archived). Returns { tasks }.",flags:[],handler:CI},{name:"get-task",summary:"Read one task's metadata. `.running` = its tmux session is live.",flags:[L1.taskId()],handler:NI},{name:"add",summary:"Create a task (shows in the sidebar immediately). With --prompt it also starts the engine and delivers it. Alias: spawn-task.",flags:[L1.repo(),L1.title(),{name:"branch",type:"string",placeholder:"B",description:"Explicit branch name (else auto kobe/<slug>-<id>)."},{name:"base-branch",type:"string",placeholder:"B",description:"Base ref the worktree branches from."},L1.vendor(),{name:"status",type:"enum",values:s4,default:"backlog",description:"Initial lifecycle status."},{name:"pin",type:"bool",description:"Pin the task to the top of the sidebar."},L1.prompt(!1,"Optional first message \u2014 when set, materializes the worktree, starts the engine, and pastes it.")],handler:OI},{name:"fan-out",summary:`Spawn N tasks of ONE prompt in a single call (parallel attempts). Capped at ${mG}.`,flags:[L1.repo(),L1.prompt(!0,"Shared prompt delivered to every spawned task."),{name:"count",type:"int",placeholder:"N",description:"Number of tasks of one vendor (with --vendor)."},{name:"agents",type:"string",placeholder:"claude:2,codex:1",description:"Per-vendor counts (alternative to --count)."},L1.vendor(),L1.title(),{name:"base-branch",type:"string",placeholder:"B",description:"Base ref for every worktree."}],handler:yI},{name:"send",summary:"Paste a follow-up prompt into a task's running engine (one full turn). Defaults to the active task.",flags:[L1.taskId(!1),L1.prompt(!0,"Text pasted + submitted into the engine pane.")],handler:AI},{name:"dispatch",summary:"Route text into a task's live session via the daemon's session.deliver channel \u2014 the front-end hosting the session pastes it. The dispatcher's messenger (docs/design/dispatcher.md); unlike `send`, it never spawns or touches tmux itself.",flags:[L1.taskId(!0),L1.prompt(!0,"Text delivered into the task's engine session.")],handler:RI},{name:"note",summary:"File a one-line field note \u2014 a resolved, repo-level gotcha worth sharing. kobe forwards it to the repo's dispatcher session (the main session), which relays it to the in-flight tasks that benefit (docs/design/dispatcher.md).",flags:[L1.taskId(!0),{name:"text",type:"string",required:!0,placeholder:"TEXT",description:"One line: the verified conclusion another session could act on."}],handler:gI},{name:"feedback",summary:"Create a GitHub Discussion in the kobe repo's Feedback category through `gh`.",flags:[{name:"title",type:"string",required:!0,placeholder:"T",description:"Discussion title."},{name:"body",type:"string",required:!0,placeholder:"TEXT",description:"Discussion body."},{name:"category",type:"string",default:$9,placeholder:"SLUG",description:"Discussion category slug."}],offline:!0,handler:xI},{name:"issue-list",summary:"List daemon-owned issues for a repo.",flags:[L1.repo()],handler:(J)=>yz(J,"issue.list",{repoRoot:J.args.requirePath("repo")})},{name:"issue-create",summary:"Create a daemon-owned issue for a repo.",flags:[L1.repo(),{name:"title",type:"string",required:!0,placeholder:"T",description:"Issue title."},{name:"body",type:"string",placeholder:"TEXT",description:"Issue body."}],handler:(J)=>yz(J,"issue.mutate",{repoRoot:J.args.requirePath("repo"),op:{type:"create",title:J.args.require("title"),body:J.args.str("body")}})},{name:"issue-set-status",summary:"Set a daemon-owned issue's status.",flags:[L1.repo(),{name:"id",type:"int",required:!0,placeholder:"N",description:"Issue id."},{name:"status",type:"enum",required:!0,values:jI,description:"New issue status."}],handler:(J)=>yz(J,"issue.mutate",{repoRoot:J.args.requirePath("repo"),op:{type:"setStatus",id:J.args.int("id"),status:J.args.requireEnum("status")}})},{name:"issue-update",summary:"Update a daemon-owned issue's title and/or body.",flags:[L1.repo(),{name:"id",type:"int",required:!0,placeholder:"N",description:"Issue id."},{name:"title",type:"string",placeholder:"T",description:"New title."},{name:"body",type:"string",placeholder:"TEXT",description:"New body."}],handler:MI},{name:"collect",summary:"Read-only comparison snapshot of several tasks (identity, branch, .running, uncommitted .changes).",flags:[{name:"task-ids",type:"csv",placeholder:"a,b,c",description:"Comma-separated task ids."},L1.repo(!1)],handler:TI},{name:"rename",summary:"Set a task's title.",flags:[L1.taskId(),{name:"title",type:"string",required:!0,placeholder:"T",description:"New title."}],handler:(J)=>yz(J,"task.rename",{taskId:J.args.require("task-id"),title:J.args.require("title")})},{name:"set-branch",summary:"Rename a task's branch (git branch -m if materialized, else recorded).",flags:[L1.taskId(),{name:"branch",type:"string",required:!0,placeholder:"B",description:"New branch name."}],handler:(J)=>yz(J,"task.setBranch",{taskId:J.args.require("task-id"),branch:J.args.require("branch")})},{name:"set-vendor",summary:"Change a task's engine vendor (takes effect on next session rebuild).",flags:[L1.taskId(),{...L1.vendor(),required:!0}],handler:(J)=>yz(J,"task.setVendor",{taskId:J.args.require("task-id"),vendor:J.args.requireEnum("vendor")})},{name:"set-status",summary:"Set a task's lifecycle status.",flags:[L1.taskId(),{name:"status",type:"enum",required:!0,values:s4,description:"New status."}],handler:(J)=>yz(J,"task.status",{taskId:J.args.require("task-id"),status:J.args.requireEnum("status")})},{name:"archive",summary:"Archive (or with --archived=false, unarchive) a task. Non-destructive: worktree/branch/history stay.",flags:[L1.taskId(),{name:"archived",type:"bool",default:"true",description:"true to archive, false to unarchive."}],handler:bI},{name:"pin",summary:"Pin (or with --pinned=false, unpin) a task to the top of the sidebar.",flags:[L1.taskId(),{name:"pinned",type:"bool",default:"true",description:"true to pin, false to unpin."}],handler:(J)=>yz(J,"task.pin",{taskId:J.args.require("task-id"),pinned:J.args.bool("pinned")??!0})},{name:"set-active",summary:"Set the shared active task (the focus every Tasks pane highlights). Pass --none to clear.",flags:[L1.taskId(!1),{name:"none",type:"bool",description:"Clear the active task instead of setting one."}],handler:kI},{name:"ensure-worktree",summary:"Materialize a task's git worktree on disk now (without starting an engine). Returns { worktreePath }.",flags:[L1.taskId()],handler:(J)=>yz(J,"task.ensureWorktree",{taskId:J.args.require("task-id")})},{name:"delete",summary:"Permanently remove a task (and its worktree). DESTRUCTIVE \u2014 prefer `archive`. Needs --force on a dirty worktree.",flags:[L1.taskId(),{name:"force",type:"bool",description:"Delete even with uncommitted changes."}],handler:SI},{name:"discover-adoptable",summary:"List existing git worktrees in a repo not yet tracked as kobe tasks. Returns { worktrees }.",flags:[L1.repo()],handler:(J)=>yz(J,"worktree.discoverAdoptable",{repo:J.args.requirePath("repo")})},{name:"adopt",summary:"Import an existing git worktree as a kobe task. Returns { task }.",flags:[L1.repo(),{name:"worktree",type:"string",required:!0,placeholder:"PATH",description:"Path of the worktree to adopt."},{name:"branch",type:"string",placeholder:"B",description:"Branch override (else the worktree's own)."},L1.vendor(),L1.title()],handler:II}],WI=dG.map((J)=>J.name);JD=[{name:"pretty",type:"bool",description:"Pretty-print stdout JSON."},{name:"help",type:"bool",description:"Show usage for the verb and exit."}];LI={sessionExists:K1,ensureSession:async(J)=>(await Promise.resolve().then(() => (zJ(),EJ))).ensureSession(J),waitForEnginePane:TX,pasteAndSubmit:xX,resolveEngineLaunchInit:async(J,z,Y)=>(await Promise.resolve().then(() => (yG(),cH))).resolveEngineLaunchInit(J,z,Y),engineCommand:cJ};s9={isTaskRunning:(J)=>K1(I1(J)),deliverPrompt:(J,z,Y)=>GD(J,z,Y),resolveRepoRoot:async(J)=>(await Promise.resolve().then(() => (C1(),zY))).resolveMainRepoRoot(J),defaultVendor:async()=>{let{getPersistedString:J}=await Promise.resolve().then(() => (C1(),zY)),z=J("lastSelectedVendor")?.trim();return z?z:void 0},readWorktreeChanges:async(J)=>(await Promise.resolve().then(() => (xG(),Y4))).readWorktreeChanges(J),tearDownSession:async(J)=>{let z=I1(J);await nz(z).catch(()=>{}),await Gz(z).catch(()=>{})}}});var BD={};q1(BD,{updatePlan:()=>HD,runUpdateSubcommand:()=>PI,parseUpdateArgs:()=>fD});import{spawnSync as wI}from"child_process";function HD(){return{command:"sh",args:["-c",oz],display:oz}}function fD(J){let z=!1;for(let Y=0;Y<J.length;Y+=1){let Z=J[Y];if(Z==="--help"||Z==="-h"||Z==="help")return{help:!0,dryRun:z};if(Z==="--dry-run"){z=!0;continue}process.stderr.write(`kobe update: unknown argument "${Z}"
175
-
176
- `),jD(process.stderr),process.exit(2)}return{help:!1,dryRun:z}}function jD(J){J.write(["Usage: kobe update [--dry-run]","","Runs kobe's GitHub-hosted update script.","","Default command:",` ${oz}`,"","Script URL:",` ${dQ}`,"","Manual fallback:",` ${of()}`,"","Examples:"," kobe update"," kobe update --dry-run",""].join(`
177
- `))}async function PI(J,z){let Y={spawn:z?.spawn??wI,stdout:z?.stdout??process.stdout,stderr:z?.stderr??process.stderr,exit:z?.exit??((Q)=>process.exit(Q))},Z=fD(J);if(Z.help){jD(Y.stdout);return}let G=HD();if(Y.stdout.write(`kobe ${J1} -> latest
178
- `),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 WD=C(()=>{NJ()});var DD={};q1(DD,{runThemeSubcommand:()=>pI});import{existsSync as KD,mkdirSync as hI,readFileSync as vI,readdirSync as mI,unlinkSync as cI,writeFileSync as dI}from"fs";import{basename as VD,join as e9,resolve as nI}from"path";function UY(J){process.stderr.write(`kobe theme: ${J}
181
- `),process.exit(1)}function $Y(J){process.stderr.write(`kobe theme: ${J}
182
-
183
- `),UD(),process.exit(2)}function iI(){let J=[];J.push("bundled:");for(let Z of[...t9].sort())J.push(` ${Z} [built-in]`);let z=OG(),Y=[];try{Y=mI(z).filter((Z)=>Z.endsWith(".json")).sort()}catch{}if(J.push(""),J.push(`user (${z}):`),Y.length===0)J.push(" (none)");else for(let Z of Y){let G=Z.slice(0,-5),X=e9(z,Z),Q=t9.includes(G)?" (overrides built-in)":"";J.push(` ${G}${Q} ${X}`)}process.stdout.write(`${J.join(`
168
+ `;var Zj=C(()=>{bJ()});async function BD(J={}){let z=J.mode==="require-running"?await qz():await Sz();if(!z)return null;return{client:z,close:()=>z.close()}}var fD=C(()=>{kJ()});var RD={};H1(RD,{verbSchema:()=>G8,verbHelp:()=>FD,validateAgainstSpec:()=>Y8,schemaIndex:()=>LD,runApiSubcommand:()=>jy,parseFlags:()=>Z8,parseAgentsSpec:()=>KD,invokeVerb:()=>Hy,fullSchema:()=>MD,findVerb:()=>fQ,deliverPrompt:()=>OD,defaultApiRuntime:()=>Q8,apiUsage:()=>Yj,VerbArgs:()=>X8,VERB_GROUPS:()=>iX,VERBS:()=>lX,FANOUT_CAP:()=>nX,ApiError:()=>I1,API_VERBS:()=>dS,API_SCHEMA_VERSION:()=>z8});import{resolve as WD}from"path";function UD(J){for(let[z,Z]of Object.entries(iX))if(Z.includes(J))return z;return"other"}async function cS(J){let z=J.args.str("verb");if(z){let Y=fQ(z);if(!Y)throw new I1(`unknown verb: ${z}`,"BAD_VERB");return G8(Y)}let Z=J.args.str("group");if(Z)return iS(Z);if(J.args.bool("all"))return MD();return LD()}function fQ(J){let z=Xj[J]??J;return lX.find((Z)=>Z.name===z)}function Z8(J,z=new Set){let Z=new Map,Y=!1,X=!1;for(let G=0;G<J.length;G++){let q=J[G];if(!q.startsWith("--")&&q!=="-h")throw new I1(`unexpected positional arg: ${q}`,"BAD_FLAG");if(q==="-h"){X=!0;continue}let H=q.indexOf("=");if(H!==-1){let V=q.slice(2,H),f=q.slice(H+1);if(V==="pretty")Y=f!=="false"&&f!=="0";else if(V==="help")X=f!=="false"&&f!=="0";else Z.set(V,f);continue}let j=q.slice(2);if(j==="pretty"){Y=!0;continue}if(j==="help"){X=!0;continue}if(z.has(j)){Z.set(j,"true");continue}let B=J[G+1];if(B===void 0||B.startsWith("--"))throw new I1(`flag --${j} requires a value`,"BAD_FLAG");Z.set(j,B),G+=1}return{flags:Z,pretty:Y,help:X}}function Y8(J,z){let Z=new Set(J.flags.map((Y)=>Y.name));for(let Y of z.keys())if(!Z.has(Y))throw new I1(`unknown flag --${Y} for "${J.name}". Run \`kobe api ${J.name} --help\``,"BAD_FLAG");for(let Y of J.flags){if(Y.required&&!z.get(Y.name))throw new I1(`--${Y.name} is required for "${J.name}"`,"MISSING_FLAG");if(Y.type==="enum"&&Y.values){let X=z.get(Y.name);if(X!==void 0&&!Y.values.includes(X))throw new I1(`--${Y.name} must be one of ${Y.values.join(", ")}`,"BAD_FLAG")}if(Y.type==="int"){let X=z.get(Y.name);if(X!==void 0){let G=Number.parseInt(X,10);if(!Number.isInteger(G)||G<=0)throw new I1(`--${Y.name} must be a positive integer`,"BAD_FLAG")}}}}class X8{verb;flags;constructor(J,z){this.verb=J;this.flags=z}spec(J){let z=this.verb.flags.find((Z)=>Z.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 I1(`--${J} is required`,"MISSING_FLAG");return z}enumOf(J){let z=this.spec(J),Z=this.str(J);if(Z===void 0)return;if(z.values&&!z.values.includes(Z))throw new I1(`--${J} must be one of ${z.values.join(", ")}`,"BAD_FLAG");return Z}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 I1(`--${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 Z=Number.parseInt(z,10);if(!Number.isInteger(Z)||Z<=0)throw new I1(`--${J} must be a positive integer`,"BAD_FLAG");return Z}path(J){let z=this.str(J);return z===void 0?void 0:WD(process.cwd(),z)}requirePath(J){return WD(process.cwd(),this.require(J))}}function KD(J){let z=[];for(let Z of J.split(",")){let Y=Z.trim();if(!Y)continue;let X=Y.indexOf(":");if(X===-1)throw new I1(`--agents entry "${Y}" must be vendor:count`,"BAD_FLAG");let G=Y.slice(0,X);if(!o1.includes(G))throw new I1(`--agents vendor "${G}" must be one of ${o1.join(", ")}`,"BAD_FLAG");let q=Number.parseInt(Y.slice(X+1),10);if(!Number.isInteger(q)||q<=0)throw new I1(`--agents count for "${G}" must be a positive integer`,"BAD_FLAG");if(z.length+q>nX)throw new I1(`--agents requests ${z.length+q} agents, exceeds the cap of ${nX}`,"BAD_FLAG");for(let H=0;H<q;H++)z.push(G)}if(z.length===0)throw new I1('--agents specified no agents (e.g. "claude:2,codex:1")',"BAD_FLAG");return z}function nS(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 G8(J){return{name:J.name,group:UD(J.name),summary:J.summary,offline:J.offline??!1,flags:J.flags.map(nS)}}function LD(){return{apiVersion:z8,kobeVersion:J1,hint:"Compact index. Drill into ONE verb: `kobe api schema --verb <name>` (or `kobe api <verb> --help`). One group: `--group <g>`. Whole spec: `--all`.",groups:iX,verbs:lX.map((J)=>({name:J.name,group:UD(J.name),summary:J.summary})),globalFlags:DD,aliases:Xj}}function iS(J){let z=iX[J];if(!z)throw new I1(`unknown group: ${J}. Groups: ${Object.keys(iX).join(", ")}`,"BAD_FLAG");return{group:J,verbs:z.map((Z)=>{let Y=fQ(Z);return{name:Z,summary:Y?.summary??""}})}}function MD(){return{apiVersion:z8,kobeVersion:J1,output:{success:"one JSON object on stdout, newline-terminated, exit 0",error:'{"error":{"message","code"}} on stderr, exit != 0',pretty:"--pretty indents stdout JSON"},globalFlags:DD,aliases:Xj,groups:iX,verbs:lX.map(G8)}}function lS(J){return J.flags.map((z)=>{let Z=z.type==="enum"&&z.values?z.values.join("|"):z.placeholder??(z.type==="bool"?"":"X"),Y=Z?`--${z.name} ${Z}`:`--${z.name}`;return z.required?Y:`[${Y}]`}).join(" ")}function FD(J){let z=[`kobe api ${J.name} ${lS(J)}`.trimEnd(),"",J.summary,""],Z=Object.entries(Xj).find(([,Y])=>Y===J.name)?.[0];if(Z)z.push(`Alias: ${Z}`,"");if(J.flags.length>0){z.push("Flags:");for(let Y of J.flags){let X=Y.required?" (required)":"",G=Y.default!==void 0?` [default: ${Y.default}]`:"",q=Y.type==="enum"&&Y.values?` {${Y.values.join("|")}}`:"";z.push(` --${Y.name}${q}${X}${G} ${Y.description}`)}z.push("")}return z.push("Global: [--pretty] [--help]"),z.join(`
169
+ `)}function Yj(){return["usage: kobe api <verb> [flags] [--pretty] [--help]","","Explore the full surface (names, flags, types) with: kobe api schema","","verbs:",...lX.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(`
170
+ `)}function $S(J,z){let Z=z?JSON.stringify(J,null,2):JSON.stringify(J);process.stdout.write(`${Z}
171
+ `)}function KZ(J,z,Z=1){process.stderr.write(`${JSON.stringify({error:{message:J,code:z}})}
172
+ `),process.exit(Z)}async function OD(J,z,Z,Y=aS){let X=z.worktreePath;if(!X)X=(await J.request("task.ensureWorktree",{taskId:z.id})).worktreePath;if(!X)throw new I1(`task ${z.id} has no worktree`,"NO_WORKTREE");let G=y1(z.id),q=await Y.sessionExists(G);if(!q){let B=await Y.resolveEngineLaunchInit(z.repo??"",X,{kind:"none"});if(!await Y.ensureSession({name:G,cwd:X,command:Y.engineCommand(z.vendor),taskId:z.id,vendor:z.vendor,repo:z.repo,launchInit:B}))throw new I1(`failed to start tmux session for ${z.id}`,"SESSION_FAILED")}let{pane:H,ready:j}=await Y.waitForEnginePane(G,!q);if(!H)throw new I1(`no engine pane in session ${G}`,"NO_ENGINE_PANE");return await Y.pasteAndSubmit(H,Z),{session:G,pane:H,started:!q,engineReady:j}}async function _S(J){let z=null,Z=J.onChannel("active-task",(Y)=>{z=Y.taskId});try{await J.subscribe()}finally{Z()}return z}function pJ(J){if(!J.client)throw new I1("daemon required","BAD_DAEMON");return J.client}async function Tz(J,z,Z){return pJ(J).request(z,Z)}async function pS(J){let z=J.args.str("title"),Z=J.args.str("body");if(z===void 0&&Z===void 0)throw new I1("issue-update requires --title and/or --body","MISSING_FLAG");return Tz(J,"issue.mutate",{repoRoot:J.args.requirePath("repo"),op:{type:"update",id:J.args.int("id"),title:z,body:Z}})}async function rS(J){let z=pJ(J),{args:Z,runtime:Y}=J,G={repo:await Y.resolveRepoRoot(Z.requirePath("repo"))},q=Z.str("title");if(q)G.title=q;let H=Z.str("branch");if(H)G.branch=H;let j=Z.str("base-branch");if(j)G.baseRef=j;let B=Z.vendor()??await Y.defaultVendor();if(B)G.vendor=B;let V=await z.request("task.create",G),f=V.taskId;await z.request("task.setActive",{taskId:f});let U=Z.enumOf("status");if(U)await z.request("task.status",{taskId:f,status:U});let L=Z.bool("pin");if(L!==void 0)await z.request("task.pin",{taskId:f,pinned:L});let O=V.task;if(U||L!==void 0)O=(await z.request("task.get",{taskId:f})).task;let A=Z.str("prompt");if(!A)return{taskId:f,task:O,started:!1};let g=await J.runtime.deliverPrompt(z,{id:f,worktreePath:O.worktreePath,vendor:O.vendor,repo:O.repo},A);return O=(await z.request("task.get",{taskId:f})).task,{taskId:f,task:O,started:g.started,engineReady:g.engineReady,session:g.session}}async function oS(J){let z=pJ(J),Z=J.args.require("prompt"),Y=J.args.str("task-id");if(!Y){let q=await _S(z);if(!q)throw new I1("no --task-id given and no active task \u2014 open a task first or pass --task-id","MISSING_TARGET");Y=q}let X=await z.request("task.get",{taskId:Y}),G=await J.runtime.deliverPrompt(z,{id:Y,worktreePath:X.task.worktreePath,vendor:X.task.vendor,repo:X.task.repo},Z);return{ok:!0,taskId:Y,session:G.session,started:G.started,engineReady:G.engineReady}}async function sS(J){let z=pJ(J),Z=J.args.require("task-id"),Y=J.args.require("prompt");return await z.request("session.deliver",{taskId:Z,text:Y,source:"dispatcher"}),{ok:!0,taskId:Z,routed:"session.deliver"}}async function tS(J){let z=pJ(J),Z=J.args.require("task-id"),Y=J.args.require("text");return await z.request("note.file",{taskId:Z,text:Y})}async function eS(J){let z=pJ(J),Z=J.args.require("task-id"),Y=await z.request("task.get",{taskId:Z}),X=await J.runtime.isTaskRunning(Z);return{task:Y.task,running:X}}async function Jy(J){return pJ(J).request("task.list")}async function zy(J){let z=pJ(J),Y=J.args.bool("none")?null:J.args.require("task-id");return await z.request("task.setActive",{taskId:Y}),{ok:!0,activeTaskId:Y}}async function Zy(J){let z=pJ(J),Z=J.args.require("task-id"),Y=J.args.bool("archived")??!0,X=await z.request("task.archive",{taskId:Z,archived:Y});if(Y)await J.runtime.tearDownSession(Z);return X}async function Yy(J){let z=pJ(J),Z=J.args.require("task-id"),Y=J.args.bool("force")??!1,X=await z.request("task.delete",{taskId:Z,force:Y});return await J.runtime.tearDownSession(Z),X}async function Xy(J){let z=pJ(J),{args:Z}=J,Y={repo:Z.requirePath("repo"),worktreePath:Z.requirePath("worktree")},X=Z.str("branch");if(X)Y.branch=X;let G=Z.vendor();if(G)Y.vendor=G;let q=Z.str("title");if(q)Y.title=q;return z.request("worktree.adopt",Y)}async function Gy(J){let z=pJ(J),{args:Z,runtime:Y}=J,X=await Y.resolveRepoRoot(Z.requirePath("repo")),G=Z.require("prompt"),q=Z.str("title"),H=Z.str("base-branch"),j=Z.str("agents"),B=await Y.defaultVendor(),V=j?KD(j):Array(Z.int("count")??1).fill(Z.vendor()??B??"claude");if(V.length>nX)throw new I1(`fan-out of ${V.length} exceeds the cap of ${nX} \u2014 spawn in batches`,"BAD_FLAG");let f=[];for(let U of V){let L={repo:X,vendor:U};if(q)L.title=q;if(H)L.baseRef=H;let O=await z.request("task.create",L),A=await J.runtime.deliverPrompt(z,{id:O.taskId,worktreePath:O.task.worktreePath,vendor:U,repo:O.task.repo},G);f.push({taskId:O.taskId,vendor:U,started:A.started,engineReady:A.engineReady,session:A.session})}return{count:f.length,tasks:f}}async function Qy(J){let z=pJ(J),{args:Z,runtime:Y}=J,X=Z.str("task-ids"),G=Z.path("repo"),q;if(X)q=X.split(",").map((j)=>j.trim()).filter(Boolean);else if(G){let j=await Y.resolveRepoRoot(G),{tasks:B}=await z.request("task.list");q=[];for(let V of B){if(V.archived)continue;if(await Y.resolveRepoRoot(V.repo)===j)q.push(V.id)}}else throw new I1("collect needs --task-ids id1,id2 or --repo PATH","MISSING_TARGET");let H=[];for(let j of q){let{task:B}=await z.request("task.get",{taskId:j}),V=await Y.isTaskRunning(j),f=B.worktreePath?await Y.readWorktreeChanges(B.worktreePath):{added:0,deleted:0};H.push({taskId:B.id,title:B.title,branch:B.branch,worktreePath:B.worktreePath,vendor:B.vendor,status:B.status,running:V,changes:f})}return{tasks:H}}async function qy(J){return{ok:!0,discussion:dX({title:J.args.require("title"),body:J.args.require("body"),categorySlug:J.args.str("category")})}}function AD(J,z,Z,Y){return{args:new X8(J,z),client:Z,runtime:Y}}async function Hy(J,z,Z){let Y=fQ(J);if(!Y)throw new I1(`unknown verb: ${J}`,"BAD_VERB");let X=new Set(Y.flags.filter((q)=>q.type==="bool").map((q)=>q.name)),G=Z8(z,X);return Y8(Y,G.flags),Y.handler(AD(Y,G.flags,Z.client,Z.runtime??Q8))}async function jy(J){let[z,...Z]=J;if(!z||z==="--help"||z==="-h"||z==="help"){if(!z)KZ(Yj(),"MISSING_VERB",2);process.stdout.write(`${Yj()}
173
+ `);return}let Y=fQ(z);if(!Y)KZ(`unknown verb: ${z}
174
+ ${Yj()}`,"BAD_VERB",2);let X=new Set(Y.flags.filter((H)=>H.type==="bool").map((H)=>H.name)),G;try{G=Z8(Z,X)}catch(H){if(H instanceof I1)KZ(H.message,H.code,2);KZ(H instanceof Error?H.message:String(H),"BAD_FLAG",2)}if(G.help){process.stdout.write(`${FD(Y)}
175
+ `);return}try{Y8(Y,G.flags)}catch(H){if(H instanceof I1)KZ(H.message,H.code,2);KZ(H instanceof Error?H.message:String(H),"BAD_FLAG",2)}let q=null;if(!Y.offline)try{q=await BD()}catch(H){KZ(`could not reach or start the kobe daemon: ${H instanceof Error?H.message:String(H)}`,"BAD_DAEMON",2)}try{let H=await Y.handler(AD(Y,G.flags,q?.client??null,Q8));$S(H,G.pretty)}catch(H){if(H instanceof I1)KZ(H.message,H.code,1);KZ(H instanceof Error?H.message:String(H),"RPC_ERROR",1)}finally{q?.close()}}var z8=2,nX=10,VD,mS,I1,A1,Xj,iX,lX,dS,DD,aS,Q8;var gD=C(()=>{Xz();Zj();m1();tq();s1();bJ();fD();VD=["backlog","in_progress","in_review","done","canceled","error"],mS=["open","doing","hold","done"];I1=class I1 extends Error{code;constructor(J,z){super(J);this.code=z}};A1={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:o1,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})},Xj={"spawn-task":"add"},iX={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"]};lX=[{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:cS},{name:"list",summary:"List all tasks (incl. archived). Returns { tasks }.",flags:[],handler:Jy},{name:"get-task",summary:"Read one task's metadata. `.running` = its tmux session is live.",flags:[A1.taskId()],handler:eS},{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:[A1.repo(),A1.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."},A1.vendor(),{name:"status",type:"enum",values:VD,default:"backlog",description:"Initial lifecycle status."},{name:"pin",type:"bool",description:"Pin the task to the top of the sidebar."},A1.prompt(!1,"Optional first message \u2014 when set, materializes the worktree, starts the engine, and pastes it.")],handler:rS},{name:"fan-out",summary:`Spawn N tasks of ONE prompt in a single call (parallel attempts). Capped at ${nX}.`,flags:[A1.repo(),A1.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)."},A1.vendor(),A1.title(),{name:"base-branch",type:"string",placeholder:"B",description:"Base ref for every worktree."}],handler:Gy},{name:"send",summary:"Paste a follow-up prompt into a task's running engine (one full turn). Defaults to the active task.",flags:[A1.taskId(!1),A1.prompt(!0,"Text pasted + submitted into the engine pane.")],handler:oS},{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:[A1.taskId(!0),A1.prompt(!0,"Text delivered into the task's engine session.")],handler:sS},{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:[A1.taskId(!0),{name:"text",type:"string",required:!0,placeholder:"TEXT",description:"One line: the verified conclusion another session could act on."}],handler:tS},{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:J8,placeholder:"SLUG",description:"Discussion category slug."}],offline:!0,handler:qy},{name:"issue-list",summary:"List daemon-owned issues for a repo.",flags:[A1.repo()],handler:(J)=>Tz(J,"issue.list",{repoRoot:J.args.requirePath("repo")})},{name:"issue-create",summary:"Create a daemon-owned issue for a repo.",flags:[A1.repo(),{name:"title",type:"string",required:!0,placeholder:"T",description:"Issue title."},{name:"body",type:"string",placeholder:"TEXT",description:"Issue body."}],handler:(J)=>Tz(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:[A1.repo(),{name:"id",type:"int",required:!0,placeholder:"N",description:"Issue id."},{name:"status",type:"enum",required:!0,values:mS,description:"New issue status."}],handler:(J)=>Tz(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:[A1.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:pS},{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."},A1.repo(!1)],handler:Qy},{name:"rename",summary:"Set a task's title.",flags:[A1.taskId(),{name:"title",type:"string",required:!0,placeholder:"T",description:"New title."}],handler:(J)=>Tz(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:[A1.taskId(),{name:"branch",type:"string",required:!0,placeholder:"B",description:"New branch name."}],handler:(J)=>Tz(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:[A1.taskId(),{...A1.vendor(),required:!0}],handler:(J)=>Tz(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:[A1.taskId(),{name:"status",type:"enum",required:!0,values:VD,description:"New status."}],handler:(J)=>Tz(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:[A1.taskId(),{name:"archived",type:"bool",default:"true",description:"true to archive, false to unarchive."}],handler:Zy},{name:"pin",summary:"Pin (or with --pinned=false, unpin) a task to the top of the sidebar.",flags:[A1.taskId(),{name:"pinned",type:"bool",default:"true",description:"true to pin, false to unpin."}],handler:(J)=>Tz(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:[A1.taskId(!1),{name:"none",type:"bool",description:"Clear the active task instead of setting one."}],handler:zy},{name:"ensure-worktree",summary:"Materialize a task's git worktree on disk now (without starting an engine). Returns { worktreePath }.",flags:[A1.taskId()],handler:(J)=>Tz(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:[A1.taskId(),{name:"force",type:"bool",description:"Delete even with uncommitted changes."}],handler:Yy},{name:"discover-adoptable",summary:"List existing git worktrees in a repo not yet tracked as kobe tasks. Returns { worktrees }.",flags:[A1.repo()],handler:(J)=>Tz(J,"worktree.discoverAdoptable",{repo:J.args.requirePath("repo")})},{name:"adopt",summary:"Import an existing git worktree as a kobe task. Returns { task }.",flags:[A1.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)."},A1.vendor(),A1.title()],handler:Xy}],dS=lX.map((J)=>J.name);DD=[{name:"pretty",type:"bool",description:"Pretty-print stdout JSON."},{name:"help",type:"bool",description:"Show usage for the verb and exit."}];aS={sessionExists:M1,ensureSession:async(J)=>(await Promise.resolve().then(() => (qJ(),PJ))).ensureSession(J),waitForEnginePane:uG,pasteAndSubmit:EG,resolveEngineLaunchInit:async(J,z,Z)=>(await Promise.resolve().then(() => (uX(),lH))).resolveEngineLaunchInit(J,z,Z),engineCommand:EJ};Q8={isTaskRunning:(J)=>M1(y1(J)),deliverPrompt:(J,z,Z)=>OD(J,z,Z),resolveRepoRoot:async(J)=>(await Promise.resolve().then(() => (S1(),zZ))).resolveMainRepoRoot(J),defaultVendor:async()=>{let{getPersistedString:J}=await Promise.resolve().then(() => (S1(),zZ)),z=J("lastSelectedVendor")?.trim();return z?z:void 0},readWorktreeChanges:async(J)=>(await Promise.resolve().then(() => (wX(),M4))).readWorktreeChanges(J),tearDownSession:async(J)=>{let z=y1(J);await iz(z).catch(()=>{}),await vJ(z).catch(()=>{})}}});var kD={};H1(kD,{updatePlan:()=>ND,runUpdateSubcommand:()=>fy,parseUpdateArgs:()=>CD});import{spawnSync as By}from"child_process";function ND(){return{command:"sh",args:["-c",sz],display:sz}}function CD(J){let z=!1;for(let Z=0;Z<J.length;Z+=1){let Y=J[Z];if(Y==="--help"||Y==="-h"||Y==="help")return{help:!0,dryRun:z};if(Y==="--dry-run"){z=!0;continue}process.stderr.write(`kobe update: unknown argument "${Y}"
176
+
177
+ `),bD(process.stderr),process.exit(2)}return{help:!1,dryRun:z}}function bD(J){J.write(["Usage: kobe update [--dry-run]","","Runs kobe's GitHub-hosted update script.","","Default command:",` ${sz}`,"","Script URL:",` ${dQ}`,"","Manual fallback:",` ${X9()}`,"","Examples:"," kobe update"," kobe update --dry-run",""].join(`
178
+ `))}async function fy(J,z){let Z={spawn:z?.spawn??By,stdout:z?.stdout??process.stdout,stderr:z?.stderr??process.stderr,exit:z?.exit??((q)=>process.exit(q))},Y=CD(J);if(Y.help){bD(Z.stdout);return}let X=ND();if(Z.stdout.write(`kobe ${J1} -> latest
179
+ `),Z.stdout.write(`running: ${X.display}
180
+ `),Y.dryRun)return;let G=Z.spawn(X.command,X.args,{stdio:"inherit"});if(G.error)Z.stderr.write(`kobe update: failed to run ${X.command}: ${G.error.message}
181
+ `),Z.exit(1);Z.exit(G.status??1)}var ID=C(()=>{bJ()});var xD={};H1(xD,{runThemeSubcommand:()=>gy});import{existsSync as yD,mkdirSync as Wy,readFileSync as Vy,readdirSync as Uy,unlinkSync as Ky,writeFileSync as Dy}from"fs";import{basename as SD,join as H8,resolve as Ly}from"path";function DZ(J){process.stderr.write(`kobe theme: ${J}
182
+ `),process.exit(1)}function rZ(J){process.stderr.write(`kobe theme: ${J}
183
+
184
+ `),TD(),process.exit(2)}function My(){let J=[];J.push("bundled:");for(let Y of[...q8].sort())J.push(` ${Y} [built-in]`);let z=RX(),Z=[];try{Z=Uy(z).filter((Y)=>Y.endsWith(".json")).sort()}catch{}if(J.push(""),J.push(`user (${z}):`),Z.length===0)J.push(" (none)");else for(let Y of Z){let X=Y.slice(0,-5),G=H8(z,Y),q=q8.includes(X)?" (overrides built-in)":"";J.push(` ${X}${q} ${G}`)}process.stdout.write(`${J.join(`
184
185
  `)}
185
- `)}async function lI(J){if(/^https?:\/\//i.test(J)){let X;try{X=await fetch(J)}catch(V){UY(`failed to fetch ${J}: ${V instanceof Error?V.message:String(V)}`)}if(!X.ok)UY(`failed to fetch ${J}: HTTP ${X.status} ${X.statusText}`);let Q=await X.text(),H=J.split(/[?#]/)[0]??J,f=VD(H)||"theme.json",j=f.endsWith(".json")?f.slice(0,-5):f;return{text:Q,defaultName:j}}let z=nI(process.cwd(),J),Y;try{Y=vI(z,"utf8")}catch(X){UY(`failed to read ${z}: ${X instanceof Error?X.message:String(X)}`)}let Z=VD(z),G=Z.endsWith(".json")?Z.slice(0,-5):Z;return{text:Y,defaultName:G}}function $I(J){let z=null,Y,Z=!1;for(let G=0;G<J.length;G+=1){let X=J[G];if(X==="--force"||X==="-f"){Z=!0;continue}if(X==="--name"||X==="-n"){let Q=J[G+1];if(Q===void 0)$Y("--name requires a value");Y=Q,G+=1;continue}if(X.startsWith("--name=")){Y=X.slice(7);continue}if(X.startsWith("--"))$Y(`unknown flag: ${X}`);if(z===null){z=X;continue}$Y(`unexpected positional argument: ${X}`)}if(z===null)$Y("missing <source> (URL or path to theme JSON)");return{source:z,opts:{name:Y,force:Z}}}async function aI(J){let{source:z,opts:Y}=$I(J),{text:Z,defaultName:G}=await lI(z),X;try{X=JSON.parse(Z)}catch(V){UY(`source is not valid JSON: ${V instanceof Error?V.message:String(V)}`)}let Q=GH(X);if(!Q.ok)UY(`source is not a valid kobe theme: ${Q.reason}`);let H=Y.name??G;if(!H||!/^[a-zA-Z0-9._-]+$/.test(H))UY(`invalid theme name "${H}" (use letters, digits, '.', '_', '-')`);let f=OG();hI(f,{recursive:!0});let j=e9(f,`${H}.json`);if(KD(j)&&!Y.force)UY(`${j} already exists (pass --force to overwrite)`);dI(j,`${JSON.stringify(Q.theme,null,2)}
186
- `,"utf8"),process.stdout.write(`installed theme "${H}" -> ${j}
187
- `)}function _I(J){let z=J[0];if(!z)$Y("missing <name>");if(J.length>1)$Y(`unexpected extra arguments after "${z}"`);if(t9.includes(z))UY(`"${z}" is a built-in theme and cannot be removed`);let Y=e9(OG(),`${z}.json`);if(!KD(Y))UY(`no user theme named "${z}" (looked for ${Y})`);cI(Y),process.stdout.write(`removed theme "${z}" (${Y})
188
- `)}function UD(){process.stderr.write(["Usage: kobe theme <command> [args]","","Commands:"," list List bundled and user-installed themes"," add <source> [--name <name>] Install a theme from a URL or local path"," Pass --force to overwrite an existing user theme"," remove <name> Remove a user-installed theme","",`User themes live under: ${OG()}`,"Schema: https://raw.githubusercontent.com/sma1lboy/kobe/main/packages/kobe/src/tui/context/theme/theme.schema.json",""].join(`
189
- `))}async function pI(J){let[z,...Y]=J;if(!z||z==="--help"||z==="-h"||z==="help"){if(UD(),!z)process.exit(2);return}if(z==="list"||z==="ls"){if(Y.length>0)$Y(`"${z}" takes no arguments`);iI();return}if(z==="add"){await aI(Y);return}if(z==="remove"||z==="rm"){_I(Y);return}$Y(`unknown action "${z}" (try "list", "add", or "remove")`)}var t9;var LD=C(()=>{p1();XH();RB();t9=["claude","conductor","dracula","nord","opencode","osaka-jade","tokyonight"]});var AD={};q1(AD,{runFeedbackSubcommand:()=>oI,parseFeedbackArgs:()=>OD});import{readFileSync as FD}from"fs";function aY(J){process.stderr.write(`kobe feedback: ${J}
190
-
191
- ${MD}
192
- `),process.exit(2)}function rI(J){if(J==="-")return FD(0,"utf8");return FD(J,"utf8")}function OD(J){let z={help:!1};for(let Y=0;Y<J.length;Y++){let Z=J[Y];if(Z==="--help"||Z==="-h"||Z==="help")return{...z,help:!0};if(Z==="--title"){if(z.title=J[++Y],z.title===void 0)aY("--title requires a value");continue}if(Z==="--body"){if(z.body=J[++Y],z.body===void 0)aY("--body requires a value");continue}if(Z==="--body-file"){if(z.bodyFile=J[++Y],z.bodyFile===void 0)aY("--body-file requires a value");continue}if(Z==="--category"){if(z.category=J[++Y],z.category===void 0)aY("--category requires a value");continue}aY(`unexpected argument "${Z}"`)}return z}async function oI(J){let z=OD(J);if(z.help){process.stdout.write(`${MD}
193
- `);return}if(!z.title)aY("--title is required");if(z.body&&z.bodyFile)aY("pass either --body or --body-file, not both");let Y=z.bodyFile?rI(z.bodyFile):z.body;if(!Y)aY("--body or --body-file is required");let Z=vG({title:z.title,body:Y,categorySlug:z.category});console.log(`created Discussion #${Z.number}: ${Z.url}`)}var MD;var RD=C(()=>{tH();MD=["Usage: kobe feedback --title <text> (--body <text> | --body-file <path>) [--category <slug>]","","Create a GitHub Discussion in the kobe repository using the GitHub CLI.","","Requires:"," gh auth login","","Options:"," --title <text> Discussion title"," --body <text> Discussion body"," --body-file <path> Read the Discussion body from a file; use - for stdin"," --category <slug> Discussion category slug (default: feedback)"," -h, --help Print this help",""].join(`
194
- `)});import{homedir as sI}from"os";async function gD(J={}){let z=J.homeDir??process.env.KOBE_HOME_DIR??sI(),Y=new PG({homeDir:z});await Y.load();let Z=new pH,G=new hq({store:Y,worktrees:Z});return{homeDir:z,orchestrator:G,store:Y,worktrees:Z,async close(){G.dispose()}}}var ND=C(()=>{kX();qQ();i9()});var kD={};q1(kD,{runDaemonSubcommand:()=>eI});function CD(J){J.write(["Usage: kobe daemon <command>","","Commands:"," status Print the running daemon's status JSON (default)"," start Run the daemon in the foreground (this process becomes it)"," stop Ask the running daemon to shut down"," restart Stop the daemon (graceful \u2192 SIGTERM \u2192 SIGKILL) and respawn it",""].join(`
195
- `))}function tI(){let J=process.env.KOBE_DAEMON_WEB_PORT?.trim();if(J==="0"||J==="off"||J==="false")return;let z=J?Number.parseInt(J,10):5174;return Number.isFinite(z)&&z>0?z:5174}async function eI(J){let[z="status"]=J,Y=Ez(),Z=YY();if(z==="--help"||z==="-h"||z==="help"){CD(process.stdout);return}if(z==="status"){let H=new tJ(Y);try{let f=await H.request("daemon.status");console.log(JSON.stringify(f,null,2))}catch{let f=await uG(Z);if(f)console.log(`kobe daemon: no daemon socket at ${Y} (stale pidfile pid=${f})`);else console.log(`kobe daemon: no daemon running at ${Y}`);process.exitCode=1}finally{H.close()}return}if(z==="stop"){let H=new tJ(Y);try{await H.request("daemon.stop"),console.log("kobe daemon: stop requested")}catch{console.log(`kobe daemon: no daemon running at ${Y}`)}finally{H.close()}return}if(z==="restart"){await EG(Y,Z),(await Sz()).close(),console.log(`kobe daemon: restarted, listening on ${Y}`);return}if(z!=="start")process.stderr.write(`kobe daemon: unknown command "${z}"
196
-
197
- `),CD(process.stderr),process.exit(2);eU();let G=await gD(),X=await j4(G.orchestrator,{socketPath:Y,pidPath:Z,homeDir:G.homeDir,webPort:tI(),webHost:process.env.KOBE_WEB_HOST,webStaticDir:process.env.KOBE_DAEMON_WEB_STATIC_DIR,onStop:async()=>{await G.close()}});if(console.log(`kobe daemon: listening on ${X.socketPath}`),X.webPort)console.log(`kobe daemon: web transport listening on http://127.0.0.1:${X.webPort}`);let Q=async()=>{await X.close(),await G.close(),process.exit(0)};process.once("SIGINT",()=>void Q()),process.once("SIGTERM",()=>void Q())}var bD=C(()=>{HX();CJ();$H();$Z();lH();ND()});import{existsSync as Jy,readFileSync as zy}from"fs";import{homedir as Yy}from"os";import{join as SD}from"path";function Y8(J={}){return["skills","add",Zy,"--skill","kobe","--agent",J.agent??zf]}function Yf(J={}){return`npx ${Y8(J).join(" ")}`}function Z8(J={}){let z=J.home??Yy(),Y=J.cwd??process.cwd();return[SD(z,ID),SD(Y,ID)]}function Gy(J){let z=J.match(/kobe-skill-version:\s*(\d+)/);return z?Number.parseInt(z[1],10):null}function WQ(J){let z=Z8(J).find((G)=>Jy(G));if(!z)return{installed:!1,installedVersion:null,currentVersion:J8,stale:!1};let Y=null;try{Y=Gy(zy(z,"utf8"))}catch{Y=null}let Z=Y===null||Y<J8;return{installed:!0,installedVersion:Y,currentVersion:J8,stale:Z}}function yD(){let J=WQ();if(!J.installed){if(S1(z8)==="1")return;e1(z8,"1"),process.stderr.write(`
186
+ `)}async function Fy(J){if(/^https?:\/\//i.test(J)){let G;try{G=await fetch(J)}catch(V){DZ(`failed to fetch ${J}: ${V instanceof Error?V.message:String(V)}`)}if(!G.ok)DZ(`failed to fetch ${J}: HTTP ${G.status} ${G.statusText}`);let q=await G.text(),H=J.split(/[?#]/)[0]??J,j=SD(H)||"theme.json",B=j.endsWith(".json")?j.slice(0,-5):j;return{text:q,defaultName:B}}let z=Ly(process.cwd(),J),Z;try{Z=Vy(z,"utf8")}catch(G){DZ(`failed to read ${z}: ${G instanceof Error?G.message:String(G)}`)}let Y=SD(z),X=Y.endsWith(".json")?Y.slice(0,-5):Y;return{text:Z,defaultName:X}}function Oy(J){let z=null,Z,Y=!1;for(let X=0;X<J.length;X+=1){let G=J[X];if(G==="--force"||G==="-f"){Y=!0;continue}if(G==="--name"||G==="-n"){let q=J[X+1];if(q===void 0)rZ("--name requires a value");Z=q,X+=1;continue}if(G.startsWith("--name=")){Z=G.slice(7);continue}if(G.startsWith("--"))rZ(`unknown flag: ${G}`);if(z===null){z=G;continue}rZ(`unexpected positional argument: ${G}`)}if(z===null)rZ("missing <source> (URL or path to theme JSON)");return{source:z,opts:{name:Z,force:Y}}}async function Ay(J){let{source:z,opts:Z}=Oy(J),{text:Y,defaultName:X}=await Fy(z),G;try{G=JSON.parse(Y)}catch(V){DZ(`source is not valid JSON: ${V instanceof Error?V.message:String(V)}`)}let q=qH(G);if(!q.ok)DZ(`source is not a valid kobe theme: ${q.reason}`);let H=Z.name??X;if(!H||!/^[a-zA-Z0-9._-]+$/.test(H))DZ(`invalid theme name "${H}" (use letters, digits, '.', '_', '-')`);let j=RX();Wy(j,{recursive:!0});let B=H8(j,`${H}.json`);if(yD(B)&&!Z.force)DZ(`${B} already exists (pass --force to overwrite)`);Dy(B,`${JSON.stringify(q.theme,null,2)}
187
+ `,"utf8"),process.stdout.write(`installed theme "${H}" -> ${B}
188
+ `)}function Ry(J){let z=J[0];if(!z)rZ("missing <name>");if(J.length>1)rZ(`unexpected extra arguments after "${z}"`);if(q8.includes(z))DZ(`"${z}" is a built-in theme and cannot be removed`);let Z=H8(RX(),`${z}.json`);if(!yD(Z))DZ(`no user theme named "${z}" (looked for ${Z})`);Ky(Z),process.stdout.write(`removed theme "${z}" (${Z})
189
+ `)}function TD(){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: ${RX()}`,"Schema: https://raw.githubusercontent.com/sma1lboy/kobe/main/packages/kobe/src/tui/context/theme/theme.schema.json",""].join(`
190
+ `))}async function gy(J){let[z,...Z]=J;if(!z||z==="--help"||z==="-h"||z==="help"){if(TD(),!z)process.exit(2);return}if(z==="list"||z==="ls"){if(Z.length>0)rZ(`"${z}" takes no arguments`);My();return}if(z==="add"){await Ay(Z);return}if(z==="remove"||z==="rm"){Ry(Z);return}rZ(`unknown action "${z}" (try "list", "add", or "remove")`)}var q8;var uD=C(()=>{HH();SB();q8=["claude","conductor","dracula","nord","opencode","osaka-jade","tokyonight"]});var hD={};H1(hD,{runFeedbackSubcommand:()=>Cy,parseFeedbackArgs:()=>PD});import{readFileSync as ED}from"fs";function oZ(J){process.stderr.write(`kobe feedback: ${J}
191
+
192
+ ${wD}
193
+ `),process.exit(2)}function Ny(J){if(J==="-")return ED(0,"utf8");return ED(J,"utf8")}function PD(J){let z={help:!1};for(let Z=0;Z<J.length;Z++){let Y=J[Z];if(Y==="--help"||Y==="-h"||Y==="help")return{...z,help:!0};if(Y==="--title"){if(z.title=J[++Z],z.title===void 0)oZ("--title requires a value");continue}if(Y==="--body"){if(z.body=J[++Z],z.body===void 0)oZ("--body requires a value");continue}if(Y==="--body-file"){if(z.bodyFile=J[++Z],z.bodyFile===void 0)oZ("--body-file requires a value");continue}if(Y==="--category"){if(z.category=J[++Z],z.category===void 0)oZ("--category requires a value");continue}oZ(`unexpected argument "${Y}"`)}return z}async function Cy(J){let z=PD(J);if(z.help){process.stdout.write(`${wD}
194
+ `);return}if(!z.title)oZ("--title is required");if(z.body&&z.bodyFile)oZ("pass either --body or --body-file, not both");let Z=z.bodyFile?Ny(z.bodyFile):z.body;if(!Z)oZ("--body or --body-file is required");let Y=dX({title:z.title,body:Z,categorySlug:z.category});console.log(`created Discussion #${Y.number}: ${Y.url}`)}var wD;var vD=C(()=>{Zj();wD=["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(`
195
+ `)});import{homedir as by}from"os";async function mD(J={}){let z=J.homeDir??process.env.KOBE_HOME_DIR??by(),Z=new mX({homeDir:z});await Z.load();let Y=new tH,X=new cq({store:Z,worktrees:Y});return{homeDir:z,orchestrator:X,store:Z,worktrees:Y,async close(){X.dispose()}}}var cD=C(()=>{IG();HQ();tf()});var nD={};H1(nD,{runDaemonSubcommand:()=>Iy});function dD(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(`
196
+ `))}function ky(){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 Iy(J){let[z="status"]=J,Z=wz(),Y=ZZ();if(z==="--help"||z==="-h"||z==="help"){dD(process.stdout);return}if(z==="status"){let H=new Jz(Z);try{let j=await H.request("daemon.status");console.log(JSON.stringify(j,null,2))}catch{let j=await PX(Y);if(j)console.log(`kobe daemon: no daemon socket at ${Z} (stale pidfile pid=${j})`);else console.log(`kobe daemon: no daemon running at ${Z}`);process.exitCode=1}finally{H.close()}return}if(z==="stop"){let H=new Jz(Z);try{await H.request("daemon.stop"),console.log("kobe daemon: stop requested")}catch{console.log(`kobe daemon: no daemon running at ${Z}`)}finally{H.close()}return}if(z==="restart"){await hX(Z,Y),(await Sz()).close(),console.log(`kobe daemon: restarted, listening on ${Z}`);return}if(z!=="start")process.stderr.write(`kobe daemon: unknown command "${z}"
197
+
198
+ `),dD(process.stderr),process.exit(2);D5();let X=await mD(),G=await b4(X.orchestrator,{socketPath:Z,pidPath:Y,homeDir:X.homeDir,webPort:ky(),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 iD=C(()=>{BG();kJ();rH();_Y();pH();cD()});import{existsSync as Sy,readFileSync as yy}from"fs";import{homedir as Ty}from"os";import{join as lD}from"path";function f8(J={}){return["skills","add",xy,"--skill","kobe","--agent",J.agent??Gj]}function Qj(J={}){return`npx ${f8(J).join(" ")}`}function W8(J={}){let z=J.home??Ty(),Z=J.cwd??process.cwd();return[lD(z,$D),lD(Z,$D)]}function uy(J){let z=J.match(/kobe-skill-version:\s*(\d+)/);return z?Number.parseInt(z[1],10):null}function VQ(J){let z=W8(J).find((X)=>Sy(X));if(!z)return{installed:!1,installedVersion:null,currentVersion:j8,stale:!1};let Z=null;try{Z=uy(yy(z,"utf8"))}catch{Z=null}let Y=Z===null||Z<j8;return{installed:!0,installedVersion:Z,currentVersion:j8,stale:Y}}function aD(){let J=VQ();if(!J.installed){if(x1(B8)==="1")return;GJ(B8,"1"),process.stderr.write(`
198
199
  kobe: the kobe agent skill isn't installed \u2014 install it so your coding agent can drive kobe via \`kobe api\`:
199
- ${BQ}
200
- (wraps \`${Yf()}\`; check anytime with \`kobe doctor\`)
201
-
202
- `);return}if(J.stale){let z=`${z8}:v${J.currentVersion}`;if(S1(z)==="1")return;e1(z,"1");let Y=J.installedVersion===null?"an older":`v${J.installedVersion}`;process.stderr.write(`
203
- kobe: your kobe agent skill is out of date (${Y}; this kobe wants v${J.currentVersion}) \u2014 refresh it so \`kobe api\` guidance matches:
204
- ${BQ}
205
-
206
- `)}}var J8=2,ID=".claude/skills/kobe/SKILL.md",BQ="kobe skill install",Zy="Sma1lboy/kobe",zf="claude-code",z8="skillHintSeen";var Zf=C(()=>{C1()});var Gf={};q1(Gf,{runResetSubcommand:()=>Ly,runReloadSubcommand:()=>Fy,runDoctorSubcommand:()=>Uy});import{existsSync as Xy,readFileSync as uD,statSync as Qy}from"fs";import{unlink as qy}from"fs/promises";import{join as ED}from"path";import{createInterface as Hy}from"readline";function fy(J){try{return process.kill(J,0),!0}catch(z){return z.code==="EPERM"}}async function jy(J){let z=new tJ(J);try{return await z.request("daemon.status")}catch{return null}finally{z.close()}}function By(J){let z=Math.floor(J/1000);if(z<60)return`${z}s`;let Y=Math.floor(z/60);if(Y<60)return`${Y}m ${z%60}s`;return`${Math.floor(Y/60)}h ${Y%60}m`}function Wy(J){if(J<1024)return`${J} B`;if(J<1048576)return`${(J/1024).toFixed(1)} KB`;return`${(J/1048576).toFixed(1)} MB`}function G8(J){try{let z=Qy(J);return`present (${Wy(z.size)}, modified ${z.mtime.toISOString()})`}catch{return"absent"}}function wD(J){try{let z=JSON.parse(uD(J,"utf8"));return Array.isArray(z.tasks)?z.tasks.length:null}catch{return null}}function Vy(J,z){try{return uD(J,"utf8").split(`
207
- `).filter((Z)=>Z.trim().length>0).slice(-z).join(`
208
- `)}catch{return""}}async function X8(J){let z=Bun.spawn(bZ(...J),{stdin:"ignore",stdout:"pipe",stderr:"ignore"}),[Y,Z]=await Promise.all([new Response(z.stdout).text().catch(()=>""),z.exited]);return{code:Z,stdout:Y}}async function Ky(){if(!await dz())return 0;let{code:J,stdout:z}=await X8(["list-sessions","-F","#{session_name}"]);if(J!==0)return 0;return z.split(`
209
- `).filter((Y)=>Y.trim().length>0).length}async function Uy(J=[]){if(J.includes("--help")||J.includes("-h")||J.includes("help")){process.stdout.write(["Usage: kobe doctor","","Read-only diagnosis of the daemon / tmux / state. Takes no options.",""].join(`
210
- `));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=Ez(),Z=YY(),G=rQ(),X=ED(XJ(),"tasks.json"),Q=oJ(),H=["kobe doctor",` home: ${rJ()}`,` socket: ${Y}`,""],f=await jy(Y);if(f){let B=typeof f.daemonPid==="number"?f.daemonPid:"?",K=typeof f.uptimeMs==="number"?By(f.uptimeMs):"?",L=typeof f.taskCount==="number"?f.taskCount:"?",A=typeof f.attachedClients==="number"?f.attachedClients:"?";H.push(`daemon: \u2713 running (pid ${B}, up ${K}, ${L} task(s), ${A} client(s))`);let O=typeof f.kobeVersion==="string"?f.kobeVersion:void 0;if(O&&O!==J1)H.push(` \u26A0 stale build: daemon is v${O}, you launched v${J1}`),H.push(" \u2192 run `kobe daemon restart`, then `kobe reload` in any open kobe sessions");else if(O)H.push(` build: v${O}`)}else{let B=await uG(Z);if(B&&fy(B))H.push(`daemon: \u2717 WEDGED \u2014 process alive (pid ${B}) but not accepting connections`),H.push(" \u2192 run `kobe reset` to kill it, then relaunch kobe");else if(B)H.push(`daemon: \u2717 not running (stale pidfile \u2192 pid ${B} is gone)`),H.push(" \u2192 harmless; relaunch kobe, or `kobe reset` to clear the stale pidfile");else H.push("daemon: \u2717 not running (no pidfile)");if(Xy(Y))H.push(` orphan socket file present: ${Y}`);let K=Vy(G,8);if(K){H.push(" last lines of daemon.log:");for(let L of K.split(`
212
- `))H.push(` \u2502 ${L}`)}}if(H.push(""),await dz())H.push(`tmux: ${await Ky()} kobe session(s) on \`${kz}\` socket`);else H.push("tmux: \u2717 not found on PATH (task sessions need tmux)");H.push("");let j=WQ();if(!j.installed)H.push("skill: \u2717 kobe agent skill not installed (optional \u2014 lets a coding agent drive `kobe api`)"),H.push(` \u2192 ${BQ}`);else if(j.stale){let B=j.installedVersion===null?"unstamped":`v${j.installedVersion}`;H.push(`skill: \u26A0 kobe agent skill out of date (${B}; this kobe wants v${j.currentVersion})`),H.push(` \u2192 ${BQ}`)}else H.push(`skill: \u2713 kobe agent skill installed (v${j.installedVersion})`);H.push("");let V=wD(X);H.push(`tasks.json: ${G8(X)}${V===null?"":` \u2014 ${V} task(s)`}`),H.push(`state.json: ${G8(Q)}`),H.push(`daemon.log: ${G8(G)}`),console.log(H.join(`
213
- `))}async function Dy(J){let z=Hy({input:process.stdin,output:process.stdout});try{let Y=await new Promise((Z)=>z.question(J,Z));return/^y(es)?$/i.test(Y.trim())}finally{z.close()}}async function TD(J,z){try{await qy(J),console.log(` removed ${z} (${J})`)}catch(Y){if(Y.code==="ENOENT")console.log(` ${z}: already absent`);else console.error(` failed to remove ${z} (${J}): ${Y instanceof Error?Y.message:String(Y)}`)}}function xD(J){J.write(["Usage: kobe reset [--hard] [--yes]","","Recover a wedged install: stop the daemon (graceful \u2192 SIGTERM \u2192 SIGKILL),","remove its socket + pidfile, and kill all kobe tmux sessions.","Never touches your git worktrees.","","Options:"," --hard Also wipe the task index + UI state"," -y, --yes Skip the interactive confirmation"," -h, --help Print this help",""].join(`
214
- `))}async function Ly(J){if(J.includes("--help")||J.includes("-h")||J.includes("help")){xD(process.stdout);return}let z=new Set(["--hard","--yes","-y"]),Y=J.find((B)=>!z.has(B));if(Y!==void 0)process.stderr.write(`kobe reset: unknown argument "${Y}"
215
-
216
- `),xD(process.stderr),process.exit(2);let Z=J.includes("--hard"),G=J.includes("--yes")||J.includes("-y"),X=Ez(),Q=YY(),H=ED(XJ(),"tasks.json"),f=oJ();if(console.log("kobe reset will:"),console.log(" \u2022 stop the kobe daemon (graceful \u2192 SIGTERM \u2192 SIGKILL)"),console.log(` \u2022 remove its socket + pidfile (${X})`),console.log(` \u2022 kill all kobe tmux sessions on the \`${kz}\` socket`),Z){let B=wD(H);console.log(` \u2022 DELETE the task index${B===null?"":` (${B} task(s))`} \u2014 ${H}`),console.log(` \u2022 DELETE the UI state \u2014 ${f}`)}if(console.log(" \u2022 NOT touch your git worktrees under ~/.kobe/worktrees/ or legacy repo-local roots"),!Z)console.log(" (your task list & worktrees are kept \u2014 add --hard to also wipe the task index + UI state)");if(!G){if(!process.stdin.isTTY){console.log(`
217
- re-run with --yes to proceed (no interactive terminal for a y/N prompt)`);return}if(!await Dy(Z?`
200
+ ${WQ}
201
+ (wraps \`${Qj()}\`; check anytime with \`kobe doctor\`)
202
+
203
+ `);return}if(J.stale){let z=`${B8}:v${J.currentVersion}`;if(x1(z)==="1")return;GJ(z,"1");let Z=J.installedVersion===null?"an older":`v${J.installedVersion}`;process.stderr.write(`
204
+ kobe: your kobe agent skill is out of date (${Z}; this kobe wants v${J.currentVersion}) \u2014 refresh it so \`kobe api\` guidance matches:
205
+ ${WQ}
206
+
207
+ `)}}var j8=2,$D=".claude/skills/kobe/SKILL.md",WQ="kobe skill install",xy="Sma1lboy/kobe",Gj="claude-code",B8="skillHintSeen";var qj=C(()=>{S1()});var Hj={};H1(Hj,{runResetSubcommand:()=>ay,runReloadSubcommand:()=>_y,runDoctorSubcommand:()=>ly});import{existsSync as Ey,readFileSync as rD,statSync as wy}from"fs";import{unlink as Py}from"fs/promises";import{join as oD}from"path";import{createInterface as hy}from"readline";function vy(J){try{return process.kill(J,0),!0}catch(z){return z.code==="EPERM"}}async function my(J){let z=new Jz(J);try{return await z.request("daemon.status")}catch{return null}finally{z.close()}}function cy(J){let z=Math.floor(J/1000);if(z<60)return`${z}s`;let Z=Math.floor(z/60);if(Z<60)return`${Z}m ${z%60}s`;return`${Math.floor(Z/60)}h ${Z%60}m`}function dy(J){if(J<1024)return`${J} B`;if(J<1048576)return`${(J/1024).toFixed(1)} KB`;return`${(J/1048576).toFixed(1)} MB`}function V8(J){try{let z=wy(J);return`present (${dy(z.size)}, modified ${z.mtime.toISOString()})`}catch{return"absent"}}function sD(J){try{let z=JSON.parse(rD(J,"utf8"));return Array.isArray(z.tasks)?z.tasks.length:null}catch{return null}}function ny(J,z){try{return rD(J,"utf8").split(`
208
+ `).filter((Y)=>Y.trim().length>0).slice(-z).join(`
209
+ `)}catch{return""}}async function U8(J){let z=Bun.spawn(IY(...J),{stdin:"ignore",stdout:"pipe",stderr:"ignore"}),[Z,Y]=await Promise.all([new Response(z.stdout).text().catch(()=>""),z.exited]);return{code:Y,stdout:Z}}async function iy(){if(!await nz())return 0;let{code:J,stdout:z}=await U8(["list-sessions","-F","#{session_name}"]);if(J!==0)return 0;return z.split(`
210
+ `).filter((Z)=>Z.trim().length>0).length}async function ly(J=[]){if(J.includes("--help")||J.includes("-h")||J.includes("help")){process.stdout.write(["Usage: kobe doctor","","Read-only diagnosis of the daemon / tmux / state. Takes no options.",""].join(`
211
+ `));return}let z=J.find((f)=>f.length>0);if(z!==void 0)process.stderr.write([`kobe doctor: unexpected argument "${z}"`,"","Usage: kobe doctor (read-only; takes no options)",""].join(`
212
+ `)),process.exit(2);let Z=wz(),Y=ZZ(),X=eQ(),G=oD(KJ(),"tasks.json"),q=tJ(),H=["kobe doctor",` home: ${sJ()}`,` socket: ${Z}`,""],j=await my(Z);if(j){let f=typeof j.daemonPid==="number"?j.daemonPid:"?",U=typeof j.uptimeMs==="number"?cy(j.uptimeMs):"?",L=typeof j.taskCount==="number"?j.taskCount:"?",O=typeof j.attachedClients==="number"?j.attachedClients:"?";H.push(`daemon: \u2713 running (pid ${f}, up ${U}, ${L} task(s), ${O} client(s))`);let A=typeof j.kobeVersion==="string"?j.kobeVersion:void 0;if(A&&A!==J1)H.push(` \u26A0 stale build: daemon is v${A}, you launched v${J1}`),H.push(" \u2192 run `kobe daemon restart`, then `kobe reload` in any open kobe sessions");else if(A)H.push(` build: v${A}`)}else{let f=await PX(Y);if(f&&vy(f))H.push(`daemon: \u2717 WEDGED \u2014 process alive (pid ${f}) but not accepting connections`),H.push(" \u2192 run `kobe reset` to kill it, then relaunch kobe");else if(f)H.push(`daemon: \u2717 not running (stale pidfile \u2192 pid ${f} 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(Ey(Z))H.push(` orphan socket file present: ${Z}`);let U=ny(X,8);if(U){H.push(" last lines of daemon.log:");for(let L of U.split(`
213
+ `))H.push(` \u2502 ${L}`)}}if(H.push(""),await nz())H.push(`tmux: ${await iy()} kobe session(s) on \`${kz}\` socket`);else H.push("tmux: \u2717 not found on PATH (task sessions need tmux)");H.push("");let B=VQ();if(!B.installed)H.push("skill: \u2717 kobe agent skill not installed (optional \u2014 lets a coding agent drive `kobe api`)"),H.push(` \u2192 ${WQ}`);else if(B.stale){let f=B.installedVersion===null?"unstamped":`v${B.installedVersion}`;H.push(`skill: \u26A0 kobe agent skill out of date (${f}; this kobe wants v${B.currentVersion})`),H.push(` \u2192 ${WQ}`)}else H.push(`skill: \u2713 kobe agent skill installed (v${B.installedVersion})`);H.push("");let V=sD(G);H.push(`tasks.json: ${V8(G)}${V===null?"":` \u2014 ${V} task(s)`}`),H.push(`state.json: ${V8(q)}`),H.push(`daemon.log: ${V8(X)}`),console.log(H.join(`
214
+ `))}async function $y(J){let z=hy({input:process.stdin,output:process.stdout});try{let Z=await new Promise((Y)=>z.question(J,Y));return/^y(es)?$/i.test(Z.trim())}finally{z.close()}}async function _D(J,z){try{await Py(J),console.log(` removed ${z} (${J})`)}catch(Z){if(Z.code==="ENOENT")console.log(` ${z}: already absent`);else console.error(` failed to remove ${z} (${J}): ${Z instanceof Error?Z.message:String(Z)}`)}}function pD(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(`
215
+ `))}async function ay(J){if(J.includes("--help")||J.includes("-h")||J.includes("help")){pD(process.stdout);return}let z=new Set(["--hard","--yes","-y"]),Z=J.find((f)=>!z.has(f));if(Z!==void 0)process.stderr.write(`kobe reset: unknown argument "${Z}"
216
+
217
+ `),pD(process.stderr),process.exit(2);let Y=J.includes("--hard"),X=J.includes("--yes")||J.includes("-y"),G=wz(),q=ZZ(),H=oD(KJ(),"tasks.json"),j=tJ();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 \`${kz}\` socket`),Y){let f=sD(H);console.log(` \u2022 DELETE the task index${f===null?"":` (${f} task(s))`} \u2014 ${H}`),console.log(` \u2022 DELETE the UI state \u2014 ${j}`)}if(console.log(" \u2022 NOT touch your git worktrees under ~/.kobe/worktrees/ or legacy repo-local roots"),!Y)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(`
218
+ re-run with --yes to proceed (no interactive terminal for a y/N prompt)`);return}if(!await $y(Y?`
218
219
  Stop daemon, kill sessions AND wipe task index? [y/N] `:`
219
- Stop daemon and kill kobe sessions? [y/N] `)){console.log("aborted \u2014 nothing changed");return}}console.log("");let{pid:j,method:V}=await EG(X,Q);if(console.log(V==="absent"?" daemon: was not running (cleared any stale socket/pidfile)":` daemon: stopped via ${V}${j?` (pid ${j})`:""}`),await dz()){let{code:B}=await X8(["kill-server"]);console.log(B===0?` tmux: killed all sessions on \`${kz}\``:` tmux: no sessions on \`${kz}\``)}else console.log(" tmux: not installed \u2014 no sessions to kill");if(Z)await TD(H,"task index"),await TD(f,"UI state");console.log(`
220
- kobe: reset complete. Relaunch kobe to start fresh.`)}async function Fy(J=[]){if(J.includes("--help")||J.includes("-h")||J.includes("help")){process.stdout.write(["Usage: kobe reload","","Restart kobe's Tasks + Ops panes in every live session, in place.","Picks up new kobe code without `kobe reset` \u2014 the engine (claude)","panes and your running turns are never touched. Takes no options.",""].join(`
220
+ Stop daemon and kill kobe sessions? [y/N] `)){console.log("aborted \u2014 nothing changed");return}}console.log("");let{pid:B,method:V}=await hX(G,q);if(console.log(V==="absent"?" daemon: was not running (cleared any stale socket/pidfile)":` daemon: stopped via ${V}${B?` (pid ${B})`:""}`),await nz()){await Xf();let{code:f}=await U8(["kill-server"]);console.log(f===0?` tmux: killed all sessions on \`${kz}\``:` tmux: no sessions on \`${kz}\``)}else console.log(" tmux: not installed \u2014 no sessions to kill");if(Y)await _D(H,"task index"),await _D(j,"UI state");console.log(`
221
+ kobe: reset complete. Relaunch kobe to start fresh.`)}async function _y(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
222
  `));return}let z=J.find((H)=>H.length>0);if(z!==void 0)process.stderr.write(`kobe reload: unexpected argument "${z}"
222
223
 
223
224
  Usage: kobe reload (takes no options)
224
- `),process.exit(2);if(!await dz()){console.log("kobe reload: tmux is not installed \u2014 no panes to reload");return}let{code:Y,stdout:Z}=await X8(["list-sessions","-F","#{session_name}"]);if(Y!==0){console.log(`kobe reload: no kobe tmux sessions on the \`${kz}\` socket`);return}let G=Z.split(`
225
- `).map((H)=>H.trim()).filter((H)=>H.length>0);if(G.length===0){console.log(`kobe reload: no kobe tmux sessions on the \`${kz}\` socket`);return}let{refreshKobeWorkspacePanes:X}=await Promise.resolve().then(() => (zJ(),EJ)),Q=0;for(let H of G)try{await X(H),Q++}catch(f){console.error(` failed to reload session "${H}": ${f instanceof Error?f.message:String(f)}`)}console.log(`kobe: reloaded Tasks/Ops panes in ${Q}/${G.length} session(s) \u2014 engine panes untouched`)}var Xf=C(()=>{HX();$H();$Z();lH();p1();Zf();c1();NJ()});var nD={};q1(nD,{runWebSubcommand:()=>ky});import{existsSync as vD}from"fs";import{homedir as My}from"os";import{resolve as Qf}from"path";import{fileURLToPath as mD}from"url";function PD(){let J=process.env.KOBE_HOME_DIR?.trim();return J?`sandbox: ${J}`:`${My()}/.kobe (production)`}function Ay(){let J=mD(import.meta.url),z=[Qf(J,"../../../../kobe-web/dist"),Qf(J,"../../web-ui")];for(let Y of z)if(vD(`${Y}/index.html`))return Y;return}function Ry(){let J=mD(import.meta.url),z=[Qf(J,"../../../../kobe-web/pty-server.mjs"),Qf(J,"../../web-ui/pty-server.mjs")];for(let Y of z)if(vD(Y))return Y;return}async function hD(J){try{let z=Bun.spawn(["lsof","-nP",`-iTCP:${J}`,"-sTCP:LISTEN","-t"],{stdout:"pipe",stderr:"ignore"});return(await new Response(z.stdout).text()).split(`
226
- `).map((Z)=>Number.parseInt(Z.trim(),10)).filter((Z)=>Number.isFinite(Z)&&Z!==process.pid)}catch{return[]}}async function gy(J){let z;try{z=(await(await fetch(`http://localhost:${J}${dD}`,{signal:AbortSignal.timeout(800)})).text()).trim()}catch{return}if(z!==cD)throw Error(`PTY port ${J} is in use by a non-kobe service; refusing to replace it`);let Y=await hD(J);for(let G of Y)try{process.kill(G,"SIGTERM")}catch{}let Z=Date.now()+2000;while(Date.now()<Z){if((await hD(J)).length===0)return;await new Promise((G)=>setTimeout(G,100))}}async function Ny(J){let z=Ry();if(!z)return null;let Y=J.webPort+2;if(J.takeover)await gy(Y);return Bun.spawn(["node",z],{stdin:"ignore",stdout:"inherit",stderr:"inherit",env:{...process.env,KOBE_DAEMON_WEB_PORT:String(J.webPort),KOBE_PTY_PORT:String(Y)}})}async function Cy(J,z){if(process.env.KOBE_DAEMON_WEB_PORT=String(J),z)process.env.KOBE_DAEMON_WEB_STATIC_DIR=z;await wG();let Y;try{Y=(await(await fetch(`http://127.0.0.1:${J}${dD}`,{signal:AbortSignal.timeout(1500)})).text()).trim()}catch(Z){throw Error(`daemon web transport is not reachable on :${J}; run \`kobe daemon restart\` so the daemon picks up this build (${Z instanceof Error?Z.message:String(Z)})`)}if(Y!==cD)throw Error(`unexpected daemon web health marker on :${J}: ${Y}`);if(z){if(!(await fetch(`http://127.0.0.1:${J}/`,{signal:AbortSignal.timeout(1500)})).ok)throw Error(`daemon web transport is up on :${J} but is not serving web assets; run \`kobe daemon restart\` so it picks up ${z}`)}}async function ky(J){if(J.includes("--help")||J.includes("-h")){process.stdout.write(Oy);return}let z=5174,Y=J.indexOf("--port");if(Y!==-1){let Z=Number.parseInt(J[Y+1]??"",10);if(!Number.isFinite(Z))process.stderr.write(`kobe web: --port needs a number
227
- `),process.exit(2);z=Z}try{let Z=J.includes("--routes-only")||J.includes("--bridge-only"),G=!J.includes("--no-takeover"),X=Z?void 0:Ay();if(!Z&&!X)throw Error("web assets are missing from this kobe build; run `bun run build` in packages/kobe, or `bun run dev` in packages/kobe-web from a source checkout");await Cy(z,X);let Q=null,H=!1,f=()=>{if(H)return;H=!0,Q?.kill(),Q=null};if(Z)process.stdout.write(`kobe daemon web transport listening on http://localhost:${z} (routes only)
228
- `),process.stdout.write(` home: ${PD()}
229
- `);else if(Q=await Ny({webPort:z,takeover:G}),process.stdout.write(`kobe web \u2192 http://localhost:${z}
230
- `),process.stdout.write(` home: ${PD()}
231
- `),!Q)process.stderr.write(`kobe web: PTY server not found; terminal tabs will be unavailable
232
- `);process.on("SIGINT",()=>{f(),process.exit(0)}),process.on("SIGTERM",()=>{f(),process.exit(0)}),Q?.exited.then(()=>{if(!H)process.stderr.write(`kobe web: PTY server exited
233
- `),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 cD="kobe-web",dD="/__kobe_web",Oy=`Usage: kobe web [options]
225
+ `),process.exit(2);if(!await nz()){console.log("kobe reload: tmux is not installed \u2014 no panes to reload");return}let{code:Z,stdout:Y}=await U8(["list-sessions","-F","#{session_name}"]);if(Z!==0){console.log(`kobe reload: no kobe tmux sessions on the \`${kz}\` socket`);return}let X=Y.split(`
226
+ `).map((H)=>H.trim()).filter((H)=>H.length>0);if(X.length===0){console.log(`kobe reload: no kobe tmux sessions on the \`${kz}\` socket`);return}let{refreshKobeWorkspacePanes:G}=await Promise.resolve().then(() => (qJ(),PJ)),q=0;for(let H of X)try{await G(H),q++}catch(j){console.error(` failed to reload session "${H}": ${j instanceof Error?j.message:String(j)}`)}console.log(`kobe: reloaded Tasks/Ops panes in ${q}/${X.length} session(s) \u2014 engine panes untouched`)}var jj=C(()=>{BG();rH();_Y();pH();t1();qj();m1();bJ()});var XL={};H1(XL,{runWebSubcommand:()=>zT});import{existsSync as JL}from"fs";import{homedir as py}from"os";import{resolve as Bj}from"path";import{fileURLToPath as zL}from"url";function tD(){let J=process.env.KOBE_HOME_DIR?.trim();return J?`sandbox: ${J}`:`${py()}/.kobe (production)`}function oy(){let J=zL(import.meta.url),z=[Bj(J,"../../../../kobe-web/dist"),Bj(J,"../../web-ui")];for(let Z of z)if(JL(`${Z}/index.html`))return Z;return}function sy(){let J=zL(import.meta.url),z=[Bj(J,"../../../../kobe-web/pty-server.mjs"),Bj(J,"../../web-ui/pty-server.mjs")];for(let Z of z)if(JL(Z))return Z;return}async function eD(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(`
227
+ `).map((Y)=>Number.parseInt(Y.trim(),10)).filter((Y)=>Number.isFinite(Y)&&Y!==process.pid)}catch{return[]}}async function ty(J){let z;try{z=(await(await fetch(`http://localhost:${J}${YL}`,{signal:AbortSignal.timeout(800)})).text()).trim()}catch{return}if(z!==ZL)throw Error(`PTY port ${J} is in use by a non-kobe service; refusing to replace it`);let Z=await eD(J);for(let X of Z)try{process.kill(X,"SIGTERM")}catch{}let Y=Date.now()+2000;while(Date.now()<Y){if((await eD(J)).length===0)return;await new Promise((X)=>setTimeout(X,100))}}async function ey(J){let z=sy();if(!z)return null;let Z=J.webPort+2;if(J.takeover)await ty(Z);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(Z)}})}async function JT(J,z){if(process.env.KOBE_DAEMON_WEB_PORT=String(J),z)process.env.KOBE_DAEMON_WEB_STATIC_DIR=z;await vX();let Z;try{Z=(await(await fetch(`http://127.0.0.1:${J}${YL}`,{signal:AbortSignal.timeout(1500)})).text()).trim()}catch(Y){throw Error(`daemon web transport is not reachable on :${J}; run \`kobe daemon restart\` so the daemon picks up this build (${Y instanceof Error?Y.message:String(Y)})`)}if(Z!==ZL)throw Error(`unexpected daemon web health marker on :${J}: ${Z}`);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 zT(J){if(J.includes("--help")||J.includes("-h")){process.stdout.write(ry);return}let z=5174,Z=J.indexOf("--port");if(Z!==-1){let Y=Number.parseInt(J[Z+1]??"",10);if(!Number.isFinite(Y))process.stderr.write(`kobe web: --port needs a number
228
+ `),process.exit(2);z=Y}try{let Y=J.includes("--routes-only")||J.includes("--bridge-only"),X=!J.includes("--no-takeover"),G=Y?void 0:oy();if(!Y&&!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 JT(z,G);let q=null,H=!1,j=()=>{if(H)return;H=!0,q?.kill(),q=null};if(Y)process.stdout.write(`kobe daemon web transport listening on http://localhost:${z} (routes only)
229
+ `),process.stdout.write(` home: ${tD()}
230
+ `);else if(q=await ey({webPort:z,takeover:X}),process.stdout.write(`kobe web \u2192 http://localhost:${z}
231
+ `),process.stdout.write(` home: ${tD()}
232
+ `),!q)process.stderr.write(`kobe web: PTY server not found; terminal tabs will be unavailable
233
+ `);process.on("SIGINT",()=>{j(),process.exit(0)}),process.on("SIGTERM",()=>{j(),process.exit(0)}),q?.exited.then(()=>{if(!H)process.stderr.write(`kobe web: PTY server exited
234
+ `),j(),process.exit(1)}),await new Promise(()=>{})}catch(Y){process.stderr.write(`kobe web: ${Y instanceof Error?Y.message:String(Y)}
235
+ `),process.exit(1)}}var ZL="kobe-web",YL="/__kobe_web",ry=`Usage: kobe web [options]
235
236
 
236
237
  Launch the kobe web UI through daemon web transport on http://localhost:<port>.
237
238
 
@@ -240,45 +241,51 @@ Options:
240
241
  --routes-only Routes only; Vite serves the SPA separately.
241
242
  --no-takeover Reserved for compatibility; daemon owns the web port.
242
243
  -h, --help Show this help.
243
- `;var iD=C(()=>{CJ()});var $D={};q1($D,{runSkillSubcommand:()=>Sy});function Q8(){return["usage: kobe skill <verb>","","verbs:"," install [--agent NAME] Install the kobe agent skill (wraps `npx skills add`)"," status Show whether the skill is installed"," command [--agent NAME] Print the underlying npx command without running it","",`The skill teaches a coding agent how to drive \`kobe api\`. Default agent: ${zf}.`].join(`
244
- `)}function lD(J){let z=zf;for(let Y=0;Y<J.length;Y++){let Z=J[Y];if(Z==="--agent"){let G=J[Y+1];if(!G||G.startsWith("--"))process.stderr.write(`kobe skill: --agent requires a value
245
- `),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
- ${Q8()}
248
- `),process.exit(2)}return z}async function Sy(J){let[z,...Y]=J;if(!z||z==="--help"||z==="-h"||z==="help"){if(process.stdout.write(`${Q8()}
249
- `),!z)process.exitCode=2;return}if(!by.includes(z))process.stderr.write(`kobe skill: unknown verb "${z}"
250
-
251
- ${Q8()}
252
- `),process.exit(2);if(z==="status"){let H=WQ(),[f,j]=Z8(),V=!H.installed?"\u2717 not installed":H.stale?`\u26A0 out of date (installed ${H.installedVersion===null?"unstamped":`v${H.installedVersion}`}, this kobe wants v${H.currentVersion})`:`\u2713 installed (v${H.installedVersion})`;process.stdout.write([`kobe skill: ${V}`,` looked in: ${f}`,` ${j}`,H.installed&&!H.stale?"":" \u2192 run `kobe skill install` to install / refresh",""].join(`
253
- `));return}if(z==="command"){process.stdout.write(`${Yf({agent:lD(Y)})}
254
- `);return}let Z=lD(Y),G=Y8({agent:Z});process.stdout.write(`kobe skill: running \`npx ${G.join(" ")}\`
255
- `);let Q=await Bun.spawn(["npx",...G],{stdin:"inherit",stdout:"inherit",stderr:"inherit"}).exited;if(Q!==0)process.stderr.write(`
256
- kobe skill install failed (npx exited ${Q}). Is \`npx\` on PATH and are you online?
257
- You can run it yourself: ${Yf({agent:Z})}
258
- `),process.exit(Q||1);process.stdout.write(`kobe skill: installed.
259
- `)}var by;var aD=C(()=>{Zf();by=["install","status","command"]});var H8={};q1(H8,{runHookSubcommand:()=>wy,readTextWithTimeout:()=>rD,parseWorktreeRemovePath:()=>eD,parseWorktreeAddPath:()=>tD,ensureGlobalKobeHooks:()=>vy});import{homedir as Iy}from"os";import{join as pD,resolve as q8}from"path";async function rD(J,z=yy){let Y;try{return await Promise.race([J(),new Promise((Z)=>{Y=setTimeout(()=>Z(""),z)})])}finally{if(Y!==void 0)clearTimeout(Y)}}async function oD(){try{let J=await rD(()=>Bun.stdin.text());if(!J.trim())return{};let z=JSON.parse(J);return z&&typeof z==="object"&&!Array.isArray(z)?z:{}}catch{return{}}}function Ty(J,z){for(let Y=0;Y<J.length;Y++){if(J[Y]===z)return J[Y+1];if(J[Y].startsWith(`${z}=`))return J[Y].slice(z.length+1)}return}function uy(J){return!!J&&typeof J==="object"&&!Array.isArray(J)}function sD(J){let z=[],Y=/"([^"]*)"|'([^']*)'|(\S+)/g,Z;while((Z=Y.exec(J))!==null)z.push(Z[1]??Z[2]??Z[3]??"");return z}function tD(J){let z=sD(J),Y=new Set(["-b","-B","--reason"]);for(let Z=0;Z+1<z.length;Z++){if(z[Z]!=="worktree"||z[Z+1]!=="add")continue;let G=Z+2;while(G<z.length){let X=z[G];if(X==="&&"||X==="||"||X===";"||X==="|"||X===">"||X===">>")break;if(X.startsWith("-")){G+=Y.has(X)?2:1;continue}return X}}return}function eD(J){let z=sD(J);for(let Y=0;Y+1<z.length;Y++){if(z[Y]!=="worktree"||z[Y+1]!=="remove")continue;let Z=Y+2;while(Z<z.length){let G=z[Z];if(G==="&&"||G==="||"||G===";"||G==="|"||G===">"||G===">>")break;if(G.startsWith("-")){Z+=1;continue}return G}}return}async function Ey(){let J=await oD(),z=uy(J.tool_input)?J.tool_input:{},Y=typeof z.command==="string"?z.command:"";if(!Y.includes("worktree"))return;let Z=typeof J.cwd==="string"&&J.cwd?J.cwd:process.cwd(),G=tD(Y),X=G?void 0:eD(Y);if(!G&&!X)return;let Q=await Qz();if(!Q)return;try{if(G)await Q.request("worktree.reconcile",{cwd:Z,worktreePath:q8(Z,G)});else if(X)await Q.request("worktree.archiveRemoved",{worktreePath:q8(Z,X)})}finally{Q.close()}}async function wy(J){let[z,...Y]=J;if(z==="setup"){await my(Y);return}if(z===xy){try{await Ey()}catch{}return}try{if(!z||!Oq(z))return;let Z=await oD(),G=Ty(Y,"--task-id"),X=typeof Z.cwd==="string"&&Z.cwd?Z.cwd:process.cwd(),Q;for(let f of JL())if(Q=f.activityDetailFromPayload(z,Z),Q)break;let H=await Qz();if(!H)return;try{await H.request("engine.reportEvent",{...G?{taskId:G}:{cwd:X},kind:z,...Q?{detail:Q}:{}})}finally{H.close()}}catch{}}function Py(){return a1.map((J)=>nj(J)).filter((J)=>J.supportsWorktreeSync())}function JL(){return a1.map((J)=>nj(J)).filter((J)=>J.supportsHooks())}function zL(){return pD(Iy(),".claude","settings.json")}function hy(J){if(!J||J==="off")return;if(J==="global")return zL();if(J.startsWith("repo:"))return pD(q8(J.slice(5)),".claude","settings.json");return J}async function vy(){try{for(let J of JL()){let z=J.globalSettingsPath();if(!z)continue;await J.installActivityHooks(z),await J.installWorktreeWatchHook(z)}await YL()}catch{}}async function YL(){let J=Py();if(J.length===0)return;let z=S1(_D),Y=new Set([zL()]),Z=hy(z);if(Z)Y.add(Z);for(let G of J)for(let X of Y)await G.removeWorktreeSyncHook(X);if(z!=="off")e1(_D,"off")}async function my(J){await YL(),process.stdout.write(["kobe hook setup is deprecated and now a no-op (cleanup only).","","The old external-worktree sync used a global WorktreeCreate hook, which is","a VCS provider hook \u2014 its presence broke `claude --worktree` / EnterWorktree","in every repo. Any hook kobe previously installed has been removed.","","Sync is now automatic: a `claude --worktree` (or any session) started in a","worktree under a repo kobe already tracks is adopted as a task on launch.","To adopt existing worktrees on demand, use the New Task dialog or `kobe adopt`.",""].join(`
260
- `))}var yy=500,xy="worktree-created",_D="externalWorktreeSync";var f8=C(()=>{CJ();ij();Aq();C1();_1()});function GL(J){var z;if(J>=55296&&J<=57343||J>1114111)return 65533;return(z=cy.get(J))!==null&&z!==void 0?z:J}var j8,cy,ZL;var XL=C(()=>{cy=new Map([[0,65533],[128,8364],[130,8218],[131,402],[132,8222],[133,8230],[134,8224],[135,8225],[136,710],[137,8240],[138,352],[139,8249],[140,338],[142,381],[145,8216],[146,8217],[147,8220],[148,8221],[149,8226],[150,8211],[151,8212],[152,732],[153,8482],[154,353],[155,8250],[156,339],[158,382],[159,376]]),ZL=(j8=String.fromCodePoint)!==null&&j8!==void 0?j8:(J)=>{let z="";if(J>65535)J-=65536,z+=String.fromCharCode(J>>>10&1023|55296),J=56320|J&1023;return z+=String.fromCharCode(J),z}});function QL(J){let z=typeof atob==="function"?atob(J):typeof Buffer.from==="function"?Buffer.from(J,"base64").toString("binary"):new Buffer(J,"base64").toString("binary"),Y=z.length&-2,Z=new Uint16Array(Y/2);for(let G=0,X=0;G<Y;G+=2){let Q=z.charCodeAt(G),H=z.charCodeAt(G+1);Z[X++]=Q|H<<8}return Z}var qL;var HL=C(()=>{qL=QL("QR08ALkAAgH6AYsDNQR2BO0EPgXZBQEGLAbdBxMISQrvCmQLfQurDKQNLw4fD4YPpA+6D/IPAAAAAAAAAAAAAAAAKhBMEY8TmxUWF2EYLBkxGuAa3RsJHDscWR8YIC8jSCSIJcMl6ie3Ku8rEC0CLjoupS7kLgAIRU1hYmNmZ2xtbm9wcnN0dVQAWgBeAGUAaQBzAHcAfgCBAIQAhwCSAJoAoACsALMAbABpAGcAO4DGAMZAUAA7gCYAJkBjAHUAdABlADuAwQDBQHIiZXZlAAJhAAFpeW0AcgByAGMAO4DCAMJAEGRyAADgNdgE3XIAYQB2AGUAO4DAAMBA8CFoYZFj4SFjcgBhZAAAoFMqAAFncIsAjgBvAG4ABGFmAADgNdg43fAlbHlGdW5jdGlvbgCgYSBpAG4AZwA7gMUAxUAAAWNzpACoAHIAAOA12Jzc6SFnbgCgVCJpAGwAZABlADuAwwDDQG0AbAA7gMQAxEAABGFjZWZvcnN1xQDYANoA7QDxAPYA+QD8AAABY3LJAM8AayNzbGFzaAAAoBYidgHTANUAAKDnKmUAZAAAoAYjeQARZIABY3J0AOAA5QDrAGEidXNlAACgNSLuI291bGxpcwCgLCFhAJJjcgAA4DXYBd1wAGYAAOA12Dnd5SF2ZdhiYwDyAOoAbSJwZXEAAKBOIgAHSE9hY2RlZmhpbG9yc3UXARoBHwE6AVIBVQFiAWQBZgGCAakB6QHtAfIBYwB5ACdkUABZADuAqQCpQIABY3B5ACUBKAE1AfUhdGUGYWmg0iJ0KGFsRGlmZmVyZW50aWFsRAAAoEUhbCJleXMAAKAtIQACYWVpb0EBRAFKAU0B8iFvbgxhZABpAGwAO4DHAMdAcgBjAAhhbiJpbnQAAKAwIm8AdAAKYQABZG5ZAV0BaSJsbGEAuGB0I2VyRG90ALdg8gA5AWkAp2NyImNsZQAAAkRNUFRwAXQBeQF9AW8AdAAAoJkiaSJudXMAAKCWIuwhdXMAoJUiaSJtZXMAAKCXIm8AAAFjc4cBlAFrKndpc2VDb250b3VySW50ZWdyYWwAAKAyImUjQ3VybHkAAAFEUZwBpAFvJXVibGVRdW90ZQAAoB0gdSJvdGUAAKAZIAACbG5wdbABtgHNAdgBbwBuAGWgNyIAoHQqgAFnaXQAvAHBAcUB8iJ1ZW50AKBhIm4AdAAAoC8i7yV1ckludGVncmFsAKAuIgABZnLRAdMBAKACIe8iZHVjdACgECJuLnRlckNsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbAAAoDMi7yFzcwCgLypjAHIAAOA12J7ccABDoNMiYQBwAACgTSKABURKU1phY2VmaW9zAAsCEgIVAhgCGwIsAjQCOQI9AnMCfwNvoEUh9CJyYWhkAKARKWMAeQACZGMAeQAFZGMAeQAPZIABZ3JzACECJQIoAuchZXIAoCEgcgAAoKEhaAB2AACg5CoAAWF5MAIzAvIhb24OYRRkbAB0oAciYQCUY3IAAOA12AfdAAFhZkECawIAAWNtRQJnAvIjaXRpY2FsAAJBREdUUAJUAl8CYwJjInV0ZQC0YG8AdAFZAloC2WJiJGxlQWN1dGUA3WJyImF2ZQBgYGkibGRlANxi7yFuZACgxCJmJWVyZW50aWFsRAAAoEYhcAR9AgAAAAAAAIECjgIAABoDZgAA4DXYO91EoagAhQKJAm8AdAAAoNwgcSJ1YWwAAKBQIuIhbGUAA0NETFJVVpkCqAK1Au8C/wIRA28AbgB0AG8AdQByAEkAbgB0AGUAZwByAGEA7ADEAW8AdAKvAgAAAACwAqhgbiNBcnJvdwAAoNMhAAFlb7kC0AJmAHQAgAFBUlQAwQLGAs0CciJyb3cAAKDQIekkZ2h0QXJyb3cAoNQhZQDlACsCbgBnAAABTFLWAugC5SFmdAABQVLcAuECciJyb3cAAKD4J+kkZ2h0QXJyb3cAoPon6SRnaHRBcnJvdwCg+SdpImdodAAAAUFU9gL7AnIicm93AACg0iFlAGUAAKCoInAAQQIGAwAAAAALA3Iicm93AACg0SFvJHduQXJyb3cAAKDVIWUlcnRpY2FsQmFyAACgJSJuAAADQUJMUlRhJAM2AzoDWgNxA3oDciJyb3cAAKGTIUJVLAMwA2EAcgAAoBMpcCNBcnJvdwAAoPUhciJldmUAEWPlIWZ00gJDAwAASwMAAFIDaSVnaHRWZWN0b3IAAKBQKWUkZVZlY3RvcgAAoF4p5SJjdG9yQqC9IWEAcgAAoFYpaSJnaHQA1AFiAwAAaQNlJGVWZWN0b3IAAKBfKeUiY3RvckKgwSFhAHIAAKBXKWUAZQBBoKQiciJyb3cAAKCnIXIAcgBvAPcAtAIAAWN0gwOHA3IAAOA12J/c8iFvaxBhAAhOVGFjZGZnbG1vcHFzdHV4owOlA6kDsAO/A8IDxgPNA9ID8gP9AwEEFAQeBCAEJQRHAEphSAA7gNAA0EBjAHUAdABlADuAyQDJQIABYWl5ALYDuQO+A/Ihb24aYXIAYwA7gMoAykAtZG8AdAAWYXIAAOA12AjdcgBhAHYAZQA7gMgAyEDlIm1lbnQAoAgiAAFhcNYD2QNjAHIAEmF0AHkAUwLhAwAAAADpA20lYWxsU3F1YXJlAACg+yVlJ3J5U21hbGxTcXVhcmUAAKCrJQABZ3D2A/kDbwBuABhhZgAA4DXYPN3zImlsb26VY3UAAAFhaQYEDgRsAFSgdSppImxkZQAAoEIi7CNpYnJpdW0AoMwhAAFjaRgEGwRyAACgMCFtAACgcyphAJdjbQBsADuAywDLQAABaXApBC0E8yF0cwCgAyLvJG5lbnRpYWxFAKBHIYACY2Zpb3MAPQQ/BEMEXQRyBHkAJGRyAADgNdgJ3WwibGVkAFMCTAQAAAAAVARtJWFsbFNxdWFyZQAAoPwlZSdyeVNtYWxsU3F1YXJlAACgqiVwA2UEAABpBAAAAABtBGYAAOA12D3dwSFsbACgACLyI2llcnRyZgCgMSFjAPIAcQQABkpUYWJjZGZnb3JzdIgEiwSOBJMElwSkBKcEqwStBLIE5QTqBGMAeQADZDuAPgA+QO0hbWFkoJMD3GNyImV2ZQAeYYABZWl5AJ0EoASjBOQhaWwiYXIAYwAcYRNkbwB0ACBhcgAA4DXYCt0AoNkicABmAADgNdg+3eUiYXRlcgADRUZHTFNUvwTIBM8E1QTZBOAEcSJ1YWwATKBlIuUhc3MAoNsidSRsbEVxdWFsAACgZyJyI2VhdGVyAACgoirlIXNzAKB3IuwkYW50RXF1YWwAoH4qaSJsZGUAAKBzImMAcgAA4DXYotwAoGsiAARBYWNmaW9zdfkE/QQFBQgFCwUTBSIFKwVSIkRjeQAqZAABY3QBBQQFZQBrAMdiXmDpIXJjJGFyAACgDCFsJWJlcnRTcGFjZQAAoAsh8AEYBQAAGwVmAACgDSHpJXpvbnRhbExpbmUAoAAlAAFjdCYFKAXyABIF8iFvayZhbQBwAEQBMQU5BW8AdwBuAEgAdQBtAPAAAAFxInVhbAAAoE8iAAdFSk9hY2RmZ21ub3N0dVMFVgVZBVwFYwVtBXAFcwV6BZAFtgXFBckFzQVjAHkAFWTsIWlnMmFjAHkAAWRjAHUAdABlADuAzQDNQAABaXlnBWwFcgBjADuAzgDOQBhkbwB0ADBhcgAAoBEhcgBhAHYAZQA7gMwAzEAAoREhYXB/BYsFAAFjZ4MFhQVyACphaSNuYXJ5SQAAoEghbABpAGUA8wD6AvQBlQUAAKUFZaAsIgABZ3KaBZ4F8iFhbACgKyLzI2VjdGlvbgCgwiJpI3NpYmxlAAABQ1SsBbEFbyJtbWEAAKBjIGkibWVzAACgYiCAAWdwdAC8Bb8FwwVvAG4ALmFmAADgNdhA3WEAmWNjAHIAAKAQIWkibGRlAChh6wHSBQAA1QVjAHkABmRsADuAzwDPQIACY2Zvc3UA4QXpBe0F8gX9BQABaXnlBegFcgBjADRhGWRyAADgNdgN3XAAZgAA4DXYQd3jAfcFAAD7BXIAAOA12KXc8iFjeQhk6yFjeQRkgANISmFjZm9zAAwGDwYSBhUGHQYhBiYGYwB5ACVkYwB5AAxk8CFwYZpjAAFleRkGHAbkIWlsNmEaZHIAAOA12A7dcABmAADgNdhC3WMAcgAA4DXYptyABUpUYWNlZmxtb3N0AD0GQAZDBl4GawZkB2gHcAd0B80H2gdjAHkACWQ7gDwAPECAAmNtbnByAEwGTwZSBlUGWwb1IXRlOWHiIWRhm2NnAACg6ifsI2FjZXRyZgCgEiFyAACgniGAAWFleQBkBmcGagbyIW9uPWHkIWlsO2EbZAABZnNvBjQHdAAABUFDREZSVFVWYXKABp4GpAbGBssG3AYDByEHwQIqBwABbnKEBowGZyVsZUJyYWNrZXQAAKDoJ/Ihb3cAoZAhQlKTBpcGYQByAACg5CHpJGdodEFycm93AKDGIWUjaWxpbmcAAKAII28A9QGqBgAAsgZiJWxlQnJhY2tldAAAoOYnbgDUAbcGAAC+BmUkZVZlY3RvcgAAoGEp5SJjdG9yQqDDIWEAcgAAoFkpbCJvb3IAAKAKI2kiZ2h0AAABQVbSBtcGciJyb3cAAKCUIeUiY3RvcgCgTikAAWVy4AbwBmUAAKGjIkFW5gbrBnIicm93AACgpCHlImN0b3IAoFopaSNhbmdsZQBCorIi+wYAAAAA/wZhAHIAAKDPKXEidWFsAACgtCJwAIABRFRWAAoHEQcYB+8kd25WZWN0b3IAoFEpZSRlVmVjdG9yAACgYCnlImN0b3JCoL8hYQByAACgWCnlImN0b3JCoLwhYQByAACgUilpAGcAaAB0AGEAcgByAG8A9wDMAnMAAANFRkdMU1Q/B0cHTgdUB1gHXwfxJXVhbEdyZWF0ZXIAoNoidSRsbEVxdWFsAACgZiJyI2VhdGVyAACgdiLlIXNzAKChKuwkYW50RXF1YWwAoH0qaSJsZGUAAKByInIAAOA12A/dZaDYIuYjdGFycm93AKDaIWkiZG90AD9hgAFucHcAege1B7kHZwAAAkxSbHKCB5QHmwerB+UhZnQAAUFSiAeNB3Iicm93AACg9SfpJGdodEFycm93AKD3J+kkZ2h0QXJyb3cAoPYn5SFmdAABYXLcAqEHaQBnAGgAdABhAHIAcgBvAPcA5wJpAGcAaAB0AGEAcgByAG8A9wDuAmYAAOA12EPdZQByAAABTFK/B8YHZSRmdEFycm93AACgmSHpJGdodEFycm93AKCYIYABY2h0ANMH1QfXB/IAWgYAoLAh8iFva0FhAKBqIgAEYWNlZmlvc3XpB+wH7gf/BwMICQgOCBEIcAAAoAUpeQAcZAABZGzyB/kHaSR1bVNwYWNlAACgXyBsI2ludHJmAACgMyFyAADgNdgQ3e4jdXNQbHVzAKATInAAZgAA4DXYRN1jAPIA/gecY4AESmFjZWZvc3R1ACEIJAgoCDUIgQiFCDsKQApHCmMAeQAKZGMidXRlAENhgAFhZXkALggxCDQI8iFvbkdh5CFpbEVhHWSAAWdzdwA7CGEIfQjhInRpdmWAAU1UVgBECEwIWQhlJWRpdW1TcGFjZQAAoAsgaABpAAABY25SCFMIawBTAHAAYQBjAOUASwhlAHIAeQBUAGgAaQDuAFQI9CFlZAABR0xnCHUIcgBlAGEAdABlAHIARwByAGUAYQB0AGUA8gDrBGUAcwBzAEwAZQBzAPMA2wdMImluZQAKYHIAAOA12BHdAAJCbnB0jAiRCJkInAhyImVhawAAoGAgwiZyZWFraW5nU3BhY2WgYGYAAKAVIUOq7CqzCMIIzQgAAOcIGwkAAAAAAAAtCQAAbwkAAIcJAACdCcAJGQoAADQKAAFvdbYIvAjuI2dydWVudACgYiJwIkNhcAAAoG0ibyh1YmxlVmVydGljYWxCYXIAAKAmIoABbHF4ANII1wjhCOUibWVudACgCSL1IWFsVKBgImkibGRlAADgQiI4A2kic3RzAACgBCJyI2VhdGVyAACjbyJFRkdMU1T1CPoIAgkJCQ0JFQlxInVhbAAAoHEidSRsbEVxdWFsAADgZyI4A3IjZWF0ZXIAAOBrIjgD5SFzcwCgeSLsJGFudEVxdWFsAOB+KjgDaSJsZGUAAKB1IvUhbXBEASAJJwnvI3duSHVtcADgTiI4A3EidWFsAADgTyI4A2UAAAFmczEJRgn0JFRyaWFuZ2xlQqLqIj0JAAAAAEIJYQByAADgzyk4A3EidWFsAACg7CJzAICibiJFR0xTVABRCVYJXAlhCWkJcSJ1YWwAAKBwInIjZWF0ZXIAAKB4IuUhc3MA4GoiOAPsJGFudEVxdWFsAOB9KjgDaSJsZGUAAKB0IuUic3RlZAABR0x1CX8J8iZlYXRlckdyZWF0ZXIA4KIqOAPlI3NzTGVzcwDgoSo4A/IjZWNlZGVzAKGAIkVTjwmVCXEidWFsAADgryo4A+wkYW50RXF1YWwAoOAiAAFlaaAJqQl2JmVyc2VFbGVtZW50AACgDCLnJWh0VHJpYW5nbGVCousitgkAAAAAuwlhAHIAAODQKTgDcSJ1YWwAAKDtIgABcXXDCeAJdSNhcmVTdQAAAWJwywnVCfMhZXRF4I8iOANxInVhbAAAoOIi5SJyc2V0ReCQIjgDcSJ1YWwAAKDjIoABYmNwAOYJ8AkNCvMhZXRF4IIi0iBxInVhbAAAoIgi4yJlZWRzgKGBIkVTVAD6CQAKBwpxInVhbAAA4LAqOAPsJGFudEVxdWFsAKDhImkibGRlAADgfyI4A+UicnNldEXggyLSIHEidWFsAACgiSJpImxkZQCAoUEiRUZUACIKJwouCnEidWFsAACgRCJ1JGxsRXF1YWwAAKBHImkibGRlAACgSSJlJXJ0aWNhbEJhcgAAoCQiYwByAADgNdip3GkAbABkAGUAO4DRANFAnWMAB0VhY2RmZ21vcHJzdHV2XgphCmgKcgp2CnoKgQqRCpYKqwqtCrsKyArNCuwhaWdSYWMAdQB0AGUAO4DTANNAAAFpeWwKcQpyAGMAO4DUANRAHmRiImxhYwBQYXIAAOA12BLdcgBhAHYAZQA7gNIA0kCAAWFlaQCHCooKjQpjAHIATGFnAGEAqWNjInJvbgCfY3AAZgAA4DXYRt3lI25DdXJseQABRFGeCqYKbyV1YmxlUXVvdGUAAKAcIHUib3RlAACgGCAAoFQqAAFjbLEKtQpyAADgNdiq3GEAcwBoADuA2ADYQGkAbAHACsUKZABlADuA1QDVQGUAcwAAoDcqbQBsADuA1gDWQGUAcgAAAUJQ0wrmCgABYXLXCtoKcgAAoD4gYQBjAAABZWvgCuIKAKDeI2UAdAAAoLQjYSVyZW50aGVzaXMAAKDcI4AEYWNmaGlsb3JzAP0KAwsFCwkLCwsMCxELIwtaC3IjdGlhbEQAAKACInkAH2RyAADgNdgT3WkApmOgY/Ujc01pbnVzsWAAAWlwFQsgC24AYwBhAHIAZQBwAGwAYQBuAOUACgVmAACgGSGAobsqZWlvACoLRQtJC+MiZWRlc4CheiJFU1QANAs5C0ALcSJ1YWwAAKCvKuwkYW50RXF1YWwAoHwiaSJsZGUAAKB+Im0AZQAAoDMgAAFkcE0LUQv1IWN0AKAPIm8jcnRpb24AYaA3ImwAAKAdIgABY2leC2ILcgAA4DXYq9yoYwACVWZvc2oLbwtzC3cLTwBUADuAIgAiQHIAAOA12BTdcABmAACgGiFjAHIAAOA12KzcAAZCRWFjZWZoaW9yc3WPC5MLlwupC7YL2AvbC90LhQyTDJoMowzhIXJyAKAQKUcAO4CuAK5AgAFjbnIAnQugC6ML9SF0ZVRhZwAAoOsncgB0oKAhbAAAoBYpgAFhZXkArwuyC7UL8iFvblhh5CFpbFZhIGR2oBwhZSJyc2UAAAFFVb8LzwsAAWxxwwvIC+UibWVudACgCyL1JGlsaWJyaXVtAKDLIXAmRXF1aWxpYnJpdW0AAKBvKXIAAKAcIW8AoWPnIWh0AARBQ0RGVFVWYewLCgwQDDIMNwxeDHwM9gIAAW5y8Av4C2clbGVCcmFja2V0AACg6SfyIW93AKGSIUJM/wsDDGEAcgAAoOUhZSRmdEFycm93AACgxCFlI2lsaW5nAACgCSNvAPUBFgwAAB4MYiVsZUJyYWNrZXQAAKDnJ24A1AEjDAAAKgxlJGVWZWN0b3IAAKBdKeUiY3RvckKgwiFhAHIAAKBVKWwib29yAACgCyMAAWVyOwxLDGUAAKGiIkFWQQxGDHIicm93AACgpiHlImN0b3IAoFspaSNhbmdsZQBCorMiVgwAAAAAWgxhAHIAAKDQKXEidWFsAACgtSJwAIABRFRWAGUMbAxzDO8kd25WZWN0b3IAoE8pZSRlVmVjdG9yAACgXCnlImN0b3JCoL4hYQByAACgVCnlImN0b3JCoMAhYQByAACgUykAAXB1iQyMDGYAAKAdIe4kZEltcGxpZXMAoHAp6SRnaHRhcnJvdwCg2yEAAWNongyhDHIAAKAbIQCgsSHsJGVEZWxheWVkAKD0KYAGSE9hY2ZoaW1vcXN0dQC/DMgMzAzQDOIM5gwKDQ0NFA0ZDU8NVA1YDQABQ2PDDMYMyCFjeSlkeQAoZEYiVGN5ACxkYyJ1dGUAWmEAorwqYWVpedgM2wzeDOEM8iFvbmBh5CFpbF5hcgBjAFxhIWRyAADgNdgW3e8hcnQAAkRMUlXvDPYM/QwEDW8kd25BcnJvdwAAoJMhZSRmdEFycm93AACgkCHpJGdodEFycm93AKCSIXAjQXJyb3cAAKCRIechbWGjY+EkbGxDaXJjbGUAoBgicABmAADgNdhK3XICHw0AAAAAIg10AACgGiLhIXJlgKGhJUlTVQAqDTINSg3uJXRlcnNlY3Rpb24AoJMidQAAAWJwNw1ADfMhZXRFoI8icSJ1YWwAAKCRIuUicnNldEWgkCJxInVhbAAAoJIibiJpb24AAKCUImMAcgAA4DXYrtxhAHIAAKDGIgACYmNtcF8Nag2ODZANc6DQImUAdABFoNAicSJ1YWwAAKCGIgABY2huDYkNZSJlZHMAgKF7IkVTVAB4DX0NhA1xInVhbAAAoLAq7CRhbnRFcXVhbACgfSJpImxkZQAAoH8iVABoAGEA9ADHCwCgESIAodEiZXOVDZ8NciJzZXQARaCDInEidWFsAACghyJlAHQAAKDRIoAFSFJTYWNmaGlvcnMAtQ27Db8NyA3ODdsN3w3+DRgOHQ4jDk8AUgBOADuA3gDeQMEhREUAoCIhAAFIY8MNxg1jAHkAC2R5ACZkAAFidcwNzQ0JYKRjgAFhZXkA1A3XDdoN8iFvbmRh5CFpbGJhImRyAADgNdgX3QABZWnjDe4N8gHoDQAA7Q3lImZvcmUAoDQiYQCYYwABY27yDfkNayNTcGFjZQAA4F8gCiDTInBhY2UAoAkg7CFkZYChPCJFRlQABw4MDhMOcSJ1YWwAAKBDInUkbGxFcXVhbAAAoEUiaSJsZGUAAKBIInAAZgAA4DXYS93pI3BsZURvdACg2yAAAWN0Jw4rDnIAAOA12K/c8iFva2Zh4QpFDlYOYA5qDgAAbg5yDgAAAAAAAAAAAAB5DnwOqA6zDgAADg8RDxYPGg8AAWNySA5ODnUAdABlADuA2gDaQHIAb6CfIeMhaXIAoEkpcgDjAVsOAABdDnkADmR2AGUAbGEAAWl5Yw5oDnIAYwA7gNsA20AjZGIibGFjAHBhcgAA4DXYGN1yAGEAdgBlADuA2QDZQOEhY3JqYQABZGl/Dp8OZQByAAABQlCFDpcOAAFhcokOiw5yAF9gYQBjAAABZWuRDpMOAKDfI2UAdAAAoLUjYSVyZW50aGVzaXMAAKDdI28AbgBQoMMi7CF1cwCgjiIAAWdwqw6uDm8AbgByYWYAAOA12EzdAARBREVUYWRwc78O0g7ZDuEOBQPqDvMOBw9yInJvdwDCoZEhyA4AAMwOYQByAACgEilvJHduQXJyb3cAAKDFIW8kd25BcnJvdwAAoJUhcSV1aWxpYnJpdW0AAKBuKWUAZQBBoKUiciJyb3cAAKClIW8AdwBuAGEAcgByAG8A9wAQA2UAcgAAAUxS+Q4AD2UkZnRBcnJvdwAAoJYh6SRnaHRBcnJvdwCglyFpAGyg0gNvAG4ApWPpIW5nbmFjAHIAAOA12LDcaSJsZGUAaGFtAGwAO4DcANxAgAREYmNkZWZvc3YALQ8xDzUPNw89D3IPdg97D4AP4SFzaACgqyJhAHIAAKDrKnkAEmThIXNobKCpIgCg5ioAAWVyQQ9DDwCgwSKAAWJ0eQBJD00Paw9hAHIAAKAWIGmgFiDjIWFsAAJCTFNUWA9cD18PZg9hAHIAAKAjIukhbmV8YGUkcGFyYXRvcgAAoFgnaSJsZGUAAKBAItQkaGluU3BhY2UAoAogcgAA4DXYGd1wAGYAAOA12E3dYwByAADgNdix3GQiYXNoAACgqiKAAmNlZm9zAI4PkQ+VD5kPng/pIXJjdGHkIWdlAKDAInIAAOA12BrdcABmAADgNdhO3WMAcgAA4DXYstwAAmZpb3OqD64Prw+0D3IAAOA12BvdnmNwAGYAAOA12E/dYwByAADgNdiz3IAEQUlVYWNmb3N1AMgPyw/OD9EP2A/gD+QP6Q/uD2MAeQAvZGMAeQAHZGMAeQAuZGMAdQB0AGUAO4DdAN1AAAFpedwP3w9yAGMAdmErZHIAAOA12BzdcABmAADgNdhQ3WMAcgAA4DXYtNxtAGwAeGEABEhhY2RlZm9z/g8BEAUQDRAQEB0QIBAkEGMAeQAWZGMidXRlAHlhAAFheQkQDBDyIW9ufWEXZG8AdAB7YfIBFRAAABwQbwBXAGkAZAB0AOgAVAhhAJZjcgAAoCghcABmAACgJCFjAHIAAOA12LXc4QtCEEkQTRAAAGcQbRByEAAAAAAAAAAAeRCKEJcQ8hD9EAAAGxEhETIROREAAD4RYwB1AHQAZQA7gOEA4UByImV2ZQADYYCiPiJFZGl1eQBWEFkQWxBgEGUQAOA+IjMDAKA/InIAYwA7gOIA4kB0AGUAO4C0ALRAMGRsAGkAZwA7gOYA5kByoGEgAOA12B7dcgBhAHYAZQA7gOAA4EAAAWVwfBCGEAABZnCAEIQQ8yF5bQCgNSHoAIMQaABhALFjAAFhcI0QWwAAAWNskRCTEHIAAWFnAACgPypkApwQAAAAALEQAKInImFkc3ajEKcQqRCuEG4AZAAAoFUqAKBcKmwib3BlAACgWCoAoFoqAKMgImVsbXJzersQvRDAEN0Q5RDtEACgpCllAACgICJzAGQAYaAhImEEzhDQENIQ1BDWENgQ2hDcEACgqCkAoKkpAKCqKQCgqykAoKwpAKCtKQCgrikAoK8pdAB2oB8iYgBkoL4iAKCdKQABcHTpEOwQaAAAoCIixWDhIXJyAKB8IwABZ3D1EPgQbwBuAAVhZgAA4DXYUt0Ao0giRWFlaW9wBxEJEQ0RDxESERQRAKBwKuMhaXIAoG8qAKBKImQAAKBLInMAJ2DyIW94ZaBIIvEADhFpAG4AZwA7gOUA5UCAAWN0eQAmESoRKxFyAADgNdi23CpgbQBwAGWgSCLxAPgBaQBsAGQAZQA7gOMA40BtAGwAO4DkAORAAAFjaUERRxFvAG4AaQBuAPQA6AFuAHQAAKARKgAITmFiY2RlZmlrbG5vcHJzdWQRaBGXEZ8RpxGrEdIR1hErEjASexKKEn0RThNbE3oTbwB0AACg7SoAAWNybBGJEWsAAAJjZXBzdBF4EX0RghHvIW5nAKBMInAjc2lsb24A9mNyImltZQAAoDUgaQBtAGWgPSJxAACgzSJ2AY0RkRFlAGUAAKC9ImUAZABnoAUjZQAAoAUjcgBrAHSgtSPiIXJrAKC2IwABb3mjEaYRbgDnAHcRMWTxIXVvAKAeIIACY21wcnQAtBG5Eb4RwRHFEeEhdXPloDUi5ABwInR5dgAAoLApcwDpAH0RbgBvAPUA6gCAAWFodwDLEcwRzhGyYwCgNiHlIWVuAKBsInIAAOA12B/dZwCAA2Nvc3R1dncA4xHyEQUSEhIhEiYSKRKAAWFpdQDpEesR7xHwAKMFcgBjAACg7yVwAACgwyKAAWRwdAD4EfwRABJvAHQAAKAAKuwhdXMAoAEqaSJtZXMAAKACKnECCxIAAAAADxLjIXVwAKAGKmEAcgAAoAUm8iNpYW5nbGUAAWR1GhIeEu8hd24AoL0lcAAAoLMlcCJsdXMAAKAEKmUA5QBCD+UAkg9hInJvdwAAoA0pgAFha28ANhJoEncSAAFjbjoSZRJrAIABbHN0AEESRxJNEm8jemVuZ2UAAKDrKXEAdQBhAHIA5QBcBPIjaWFuZ2xlgKG0JWRscgBYElwSYBLvIXduAKC+JeUhZnQAoMIlaSJnaHQAAKC4JWsAAKAjJLEBbRIAAHUSsgFxEgAAcxIAoJIlAKCRJTQAAKCTJWMAawAAoIglAAFlb38ShxJx4D0A5SD1IWl2AOBhIuUgdAAAoBAjAAJwdHd4kRKVEpsSnxJmAADgNdhT3XSgpSJvAG0AAKClIvQhaWUAoMgiAAZESFVWYmRobXB0dXayEsES0RLgEvcS+xIKExoTHxMjEygTNxMAAkxSbHK5ErsSvRK/EgCgVyUAoFQlAKBWJQCgUyUAolAlRFVkdckSyxLNEs8SAKBmJQCgaSUAoGQlAKBnJQACTFJsctgS2hLcEt4SAKBdJQCgWiUAoFwlAKBZJQCjUSVITFJobHLrEu0S7xLxEvMS9RIAoGwlAKBjJQCgYCUAoGslAKBiJQCgXyVvAHgAAKDJKQACTFJscgITBBMGEwgTAKBVJQCgUiUAoBAlAKAMJQCiACVEVWR1EhMUExYTGBMAoGUlAKBoJQCgLCUAoDQlaSJudXMAAKCfIuwhdXMAoJ4iaSJtZXMAAKCgIgACTFJsci8TMRMzEzUTAKBbJQCgWCUAoBglAKAUJQCjAiVITFJobHJCE0QTRhNIE0oTTBMAoGolAKBhJQCgXiUAoDwlAKAkJQCgHCUAAWV2UhNVE3YA5QD5AGIAYQByADuApgCmQAACY2Vpb2ITZhNqE24TcgAA4DXYt9xtAGkAAKBPIG0A5aA9IogRbAAAoVwAYmh0E3YTAKDFKfMhdWIAoMgnbAF+E4QTbABloCIgdAAAoCIgcAAAoU4iRWWJE4sTAKCuKvGgTyI8BeEMqRMAAN8TABQDFB8UAAAjFDQUAAAAAIUUAAAAAI0UAAAAANcU4xT3FPsUAACIFQAAlhWAAWNwcgCuE7ET1RP1IXRlB2GAoikiYWJjZHMAuxO/E8QTzhPSE24AZAAAoEQqciJjdXAAAKBJKgABYXXIE8sTcAAAoEsqcAAAoEcqbwB0AACgQCoA4CkiAP4AAWVv2RPcE3QAAKBBIO4ABAUAAmFlaXXlE+8T9RP4E/AB6hMAAO0TcwAAoE0qbwBuAA1hZABpAGwAO4DnAOdAcgBjAAlhcABzAHOgTCptAACgUCpvAHQAC2GAAWRtbgAIFA0UEhRpAGwAO4C4ALhAcCJ0eXYAAKCyKXQAAIGiADtlGBQZFKJAcgBkAG8A9ABiAXIAAOA12CDdgAFjZWkAKBQqFDIUeQBHZGMAawBtoBMn4SFyawCgEyfHY3IAAKPLJUVjZWZtcz8UQRRHFHcUfBSAFACgwykAocYCZWxGFEkUcQAAoFciZQBhAlAUAAAAAGAUciJyb3cAAAFsclYUWhTlIWZ0AKC6IWkiZ2h0AACguyGAAlJTYWNkAGgUaRRrFG8UcxSuYACgyCRzAHQAAKCbIukhcmMAoJoi4SFzaACgnSJuImludAAAoBAqaQBkAACg7yrjIWlyAKDCKfUhYnN1oGMmaQB0AACgYybsApMUmhS2FAAAwxRvAG4AZaA6APGgVCKrAG0CnxQAAAAAoxRhAHSgLABAYAChASJmbKcUqRTuABMNZQAAAW14rhSyFOUhbnQAoAEiZQDzANIB5wG6FAAAwBRkoEUibwB0AACgbSpuAPQAzAGAAWZyeQDIFMsUzhQA4DXYVN1vAOQA1wEAgakAO3MeAdMUcgAAoBchAAFhb9oU3hRyAHIAAKC1IXMAcwAAoBcnAAFjdeYU6hRyAADgNdi43AABYnDuFPIUZaDPKgCg0SploNAqAKDSKuQhb3QAoO8igANkZWxwcnZ3AAYVEBUbFSEVRBVlFYQV4SFycgABbHIMFQ4VAKA4KQCgNSlwAhYVAAAAABkVcgAAoN4iYwAAoN8i4SFycnCgtiEAoD0pgKIqImJjZG9zACsVMBU6FT4VQRVyImNhcAAAoEgqAAFhdTQVNxVwAACgRipwAACgSipvAHQAAKCNInIAAKBFKgDgKiIA/gACYWxydksVURVuFXMVcgByAG2gtyEAoDwpeQCAAWV2dwBYFWUVaRVxAHACXxUAAAAAYxVyAGUA4wAXFXUA4wAZFWUAZQAAoM4iZSJkZ2UAAKDPImUAbgA7gKQApEBlI2Fycm93AAABbHJ7FX8V5SFmdACgtiFpImdodAAAoLchZQDkAG0VAAFjaYsVkRVvAG4AaQBuAPQAkwFuAHQAAKAxImwiY3R5AACgLSOACUFIYWJjZGVmaGlqbG9yc3R1d3oAuBW7Fb8V1RXgFegV+RUKFhUWHxZUFlcWZRbFFtsW7xb7FgUXChdyAPIAtAJhAHIAAKBlKQACZ2xyc8YVyhXOFdAV5yFlcgCgICDlIXRoAKA4IfIA9QxoAHagECAAoKMiawHZFd4VYSJyb3cAAKAPKWEA4wBfAgABYXnkFecV8iFvbg9hNGQAoUYhYW/tFfQVAAFnciEC8RVyAACgyiF0InNlcQAAoHcqgAFnbG0A/xUCFgUWO4CwALBAdABhALRjcCJ0eXYAAKCxKQABaXIOFhIW8yFodACgfykA4DXYId1hAHIAAAFschsWHRYAoMMhAKDCIYACYWVnc3YAKBauAjYWOhY+Fm0AAKHEIm9zLhY0Fm4AZABzoMQi9SFpdACgZiZhIm1tYQDdY2kAbgAAoPIiAKH3AGlvQxZRFmQAZQAAgfcAO29KFksW90BuI3RpbWVzAACgxyJuAPgAUBZjAHkAUmRjAG8CXhYAAAAAYhZyAG4AAKAeI28AcAAAoA0jgAJscHR1dwBuFnEWdRaSFp4W7CFhciRgZgAA4DXYVd0AotkCZW1wc30WhBaJFo0WcQBkoFAibwB0AACgUSJpIm51cwAAoDgi7CF1cwCgFCLxInVhcmUAoKEiYgBsAGUAYgBhAHIAdwBlAGQAZwDlANcAbgCAAWFkaAClFqoWtBZyAHIAbwD3APUMbwB3AG4AYQByAHIAbwB3APMA8xVhI3Jwb29uAAABbHK8FsAWZQBmAPQAHBZpAGcAaAD0AB4WYgHJFs8WawBhAHIAbwD3AJILbwLUFgAAAADYFnIAbgAAoB8jbwBwAACgDCOAAWNvdADhFukW7BYAAXJ55RboFgDgNdi53FVkbAAAoPYp8iFvaxFhAAFkcvMW9xZvAHQAAKDxImkA5qC/JVsSAAFhaP8WAhdyAPIANQNhAPIA1wvhIm5nbGUAoKYpAAFjaQ4XEBd5AF9k5yJyYXJyAKD/JwAJRGFjZGVmZ2xtbm9wcXJzdHV4MRc4F0YXWxcyBF4XaRd5F40XrBe0F78X2RcVGCEYLRg1GEAYAAFEbzUXgRZvAPQA+BUAAWNzPBdCF3UAdABlADuA6QDpQPQhZXIAoG4qAAJhaW95TRdQF1YXWhfyIW9uG2FyAGOgViI7gOoA6kDsIW9uAKBVIk1kbwB0ABdhAAFEcmIXZhdvAHQAAKBSIgDgNdgi3XKhmipuF3QXYQB2AGUAO4DoAOhAZKCWKm8AdAAAoJgqgKGZKmlscwCAF4UXhxfuInRlcnMAoOcjAKATIWSglSpvAHQAAKCXKoABYXBzAJMXlheiF2MAcgATYXQAeQBzogUinxcAAAAAoRdlAHQAAKAFInAAMaADIDMBqRerFwCgBCAAoAUgAAFnc7AXsRdLYXAAAKACIAABZ3C4F7sXbwBuABlhZgAA4DXYVt2AAWFscwDFF8sXzxdyAHOg1SJsAACg4yl1AHMAAKBxKmkAAKG1A2x21RfYF28AbgC1Y/VjAAJjc3V24BfoF/0XEBgAAWlv5BdWF3IAYwAAoFYiaQLuFwAAAADwF+0ADQThIW50AAFnbPUX+Rd0AHIAAKCWKuUhc3MAoJUqgAFhZWkAAxgGGAoYbABzAD1gcwB0AACgXyJ2AESgYSJEAACgeCrwImFyc2wAoOUpAAFEYRkYHRhvAHQAAKBTInIAcgAAoHEpgAFjZGkAJxgqGO0XcgAAoC8hbwD0AIwCAAFhaDEYMhi3YzuA8ADwQAABbXI5GD0YbAA7gOsA60BvAACgrCCAAWNpcABGGEgYSxhsACFgcwD0ACwEAAFlb08YVxhjAHQAYQB0AGkAbwDuABoEbgBlAG4AdABpAGEAbADlADME4Ql1GAAAgRgAAIMYiBgAAAAAoRilGAAAqhgAALsYvhjRGAAA1xgnGWwAbABpAG4AZwBkAG8AdABzAGUA8QBlF3kARGRtImFsZQAAoEAmgAFpbHIAjRiRGJ0Y7CFpZwCgA/tpApcYAAAAAJoYZwAAoAD7aQBnAACgBPsA4DXYI93sIWlnAKAB++whaWcA4GYAagCAAWFsdACvGLIYthh0AACgbSZpAGcAAKAC+24AcwAAoLElbwBmAJJh8AHCGAAAxhhmAADgNdhX3QABYWvJGMwYbADsAGsEdqDUIgCg2SphI3J0aW50AACgDSoAAWFv2hgiGQABY3PeGB8ZsQPnGP0YBRkSGRUZAAAdGbID7xjyGPQY9xj5GAAA+xg7gL0AvUAAoFMhO4C8ALxAAKBVIQCgWSEAoFshswEBGQAAAxkAoFQhAKBWIbQCCxkOGQAAAAAQGTuAvgC+QACgVyEAoFwhNQAAoFghtgEZGQAAGxkAoFohAKBdITgAAKBeIWwAAKBEIHcAbgAAoCIjYwByAADgNdi73IAIRWFiY2RlZmdpamxub3JzdHYARhlKGVoZXhlmGWkZkhmWGZkZnRmgGa0ZxhnLGc8Z4BkjGmygZyIAoIwqgAFjbXAAUBlTGVgZ9SF0ZfVhbQBhAOSgswM6FgCghipyImV2ZQAfYQABaXliGWUZcgBjAB1hM2RvAHQAIWGAoWUibHFzAMYEcBl6GfGhZSLOBAAAdhlsAGEAbgD0AN8EgKF+KmNkbACBGYQZjBljAACgqSpvAHQAb6CAKmyggioAoIQqZeDbIgD+cwAAoJQqcgAA4DXYJN3noGsirATtIWVsAKA3IWMAeQBTZIChdyJFYWoApxmpGasZAKCSKgCgpSoAoKQqAAJFYWVztBm2Gb0ZwhkAoGkicABwoIoq8iFveACgiipxoIgq8aCIKrUZaQBtAACg5yJwAGYAAOA12FjdYQB2AOUAYwIAAWNp0xnWGXIAAKAKIW0AAKFzImVs3BneGQCgjioAoJAqAIM+ADtjZGxxco0E6xn0GfgZ/BkBGgABY2nvGfEZAKCnKnIAAKB6Km8AdAAAoNci0CFhcgCglSl1ImVzdAAAoHwqgAJhZGVscwAKGvQZFhrVBCAa8AEPGgAAFBpwAHIAbwD4AFkZcgAAoHgpcQAAAWxxxAQbGmwAZQBzAPMASRlpAO0A5AQAAWVuJxouGnIjdG5lcXEAAOBpIgD+xQAsGgAFQWFiY2Vma29zeUAaQxpmGmoabRqDGocalhrCGtMacgDyAMwCAAJpbG1yShpOGlAaVBpyAHMA8ABxD2YAvWBpAGwA9AASBQABZHJYGlsaYwB5AEpkAKGUIWN3YBpkGmkAcgAAoEgpAKCtIWEAcgAAoA8h6SFyYyVhgAFhbHIAcxp7Gn8a8iF0c3WgZSZpAHQAAKBlJuwhaXAAoCYg4yFvbgCguSJyAADgNdgl3XMAAAFld4wakRphInJvdwAAoCUpYSJyb3cAAKAmKYACYW1vcHIAnxqjGqcauhq+GnIAcgAAoP8h9CFodACgOyJrAAABbHKsGrMaZSRmdGFycm93AACgqSHpJGdodGFycm93AKCqIWYAAOA12Fnd4iFhcgCgFSCAAWNsdADIGswa0BpyAADgNdi93GEAcwDoAGka8iFvaydhAAFicNca2xr1IWxsAKBDIOghZW4AoBAg4Qr2GgAA/RoAAAgbExsaGwAAIRs7GwAAAAA+G2IbmRuVG6sbAACyG80b0htjAHUAdABlADuA7QDtQAChYyBpeQEbBhtyAGMAO4DuAO5AOGQAAWN4CxsNG3kANWRjAGwAO4ChAKFAAAFmcssCFhsA4DXYJt1yAGEAdgBlADuA7ADsQIChSCFpbm8AJxsyGzYbAAFpbisbLxtuAHQAAKAMKnQAAKAtIuYhaW4AoNwpdABhAACgKSHsIWlnM2GAAWFvcABDG1sbXhuAAWNndABJG0sbWRtyACthgAFlbHAAcQVRG1UbaQBuAOUAyAVhAHIA9AByBWgAMWFmAACgtyJlAGQAtWEAoggiY2ZvdGkbbRt1G3kb4SFyZQCgBSFpAG4AdKAeImkAZQAAoN0pZABvAPQAWxsAoisiY2VscIEbhRuPG5QbYQBsAACguiIAAWdyiRuNG2UAcgDzACMQ4wCCG2EicmhrAACgFyryIW9kAKA8KgACY2dwdJ8boRukG6gbeQBRZG8AbgAvYWYAAOA12FrdYQC5Y3UAZQBzAHQAO4C/AL9AAAFjabUbuRtyAADgNdi+3G4AAKIIIkVkc3bCG8QbyBvQAwCg+SJvAHQAAKD1Inag9CIAoPMiaaBiIOwhZGUpYesB1hsAANkbYwB5AFZkbAA7gO8A70AAA2NmbW9zdeYb7hvyG/Ub+hsFHAABaXnqG+0bcgBjADVhOWRyAADgNdgn3eEhdGg3YnAAZgAA4DXYW93jAf8bAAADHHIAAOA12L/c8iFjeVhk6yFjeVRkAARhY2ZnaGpvcxUcGhwiHCYcKhwtHDAcNRzwIXBhdqC6A/BjAAFleR4cIRzkIWlsN2E6ZHIAAOA12CjdciJlZW4AOGFjAHkARWRjAHkAXGRwAGYAAOA12FzdYwByAADgNdjA3IALQUJFSGFiY2RlZmdoamxtbm9wcnN0dXYAXhxtHHEcdRx5HN8cBx0dHTwd3B3tHfEdAR4EHh0eLB5FHrwewx7hHgkfPR9LH4ABYXJ0AGQcZxxpHHIA8gBvB/IAxQLhIWlsAKAbKeEhcnIAoA4pZ6BmIgCgiyphAHIAAKBiKWMJjRwAAJAcAACVHAAAAAAAAAAAAACZHJwcAACmHKgcrRwAANIc9SF0ZTph7SJwdHl2AKC0KXIAYQDuAFoG4iFkYbtjZwAAoegnZGyhHKMcAKCRKeUAiwYAoIUqdQBvADuAqwCrQHIAgKOQIWJmaGxwc3QAuhy/HMIcxBzHHMoczhxmoOQhcwAAoB8pcwAAoB0p6wCyGnAAAKCrIWwAAKA5KWkAbQAAoHMpbAAAoKIhAKGrKmFl1hzaHGkAbAAAoBkpc6CtKgDgrSoA/oABYWJyAOUc6RztHHIAcgAAoAwpcgBrAACgcicAAWFr8Rz4HGMAAAFla/Yc9xx7YFtgAAFlc/wc/hwAoIspbAAAAWR1Ax0FHQCgjykAoI0pAAJhZXV5Dh0RHRodHB3yIW9uPmEAAWRpFR0YHWkAbAA8YewAowbiAPccO2QAAmNxcnMkHScdLB05HWEAAKA2KXUAbwDyoBwgqhEAAWR1MB00HeghYXIAoGcpcyJoYXIAAKBLKWgAAKCyIQCiZCJmZ3FzRB1FB5Qdnh10AIACYWhscnQATh1WHWUdbB2NHXIicm93AHSgkCFhAOkAzxxhI3Jwb29uAAABZHVeHWId7yF3bgCgvSFwAACgvCHlJGZ0YXJyb3dzAKDHIWkiZ2h0AIABYWhzAHUdex2DHXIicm93APOglCGdBmEAcgBwAG8AbwBuAPMAzgtxAHUAaQBnAGEAcgByAG8A9wBlGugkcmVldGltZXMAoMsi8aFkIk0HAACaHWwAYQBuAPQAXgcAon0qY2Rnc6YdqR2xHbcdYwAAoKgqbwB0AG+gfypyoIEqAKCDKmXg2iIA/nMAAKCTKoACYWRlZ3MAwB3GHcod1h3ZHXAAcAByAG8A+ACmHG8AdAAAoNYicQAAAWdxzx3SHXQA8gBGB2cAdADyAHQcdADyAFMHaQDtAGMHgAFpbHIA4h3mHeod8yFodACgfClvAG8A8gDKBgDgNdgp3UWgdiIAoJEqYQH1Hf4dcgAAAWR1YB35HWygvCEAoGopbABrAACghCVjAHkAWWQAomoiYWNodAweDx4VHhkecgDyAGsdbwByAG4AZQDyAGAW4SFyZACgaylyAGkAAKD6JQABaW8hHiQe5CFvdEBh9SFzdGGgsCPjIWhlAKCwIwACRWFlczMeNR48HkEeAKBoInAAcKCJKvIhb3gAoIkqcaCHKvGghyo0HmkAbQAAoOYiAARhYm5vcHR3elIeXB5fHoUelh6mHqsetB4AAW5yVh5ZHmcAAKDsJ3IAAKD9IXIA6wCwBmcAgAFsbXIAZh52Hnse5SFmdAABYXKIB2weaQBnAGgAdABhAHIAcgBvAPcAkwfhInBzdG8AoPwnaQBnAGgAdABhAHIAcgBvAPcAmgdwI2Fycm93AAABbHKNHpEeZQBmAPQAxhxpImdodAAAoKwhgAFhZmwAnB6fHqIecgAAoIUpAOA12F3ddQBzAACgLSppIm1lcwAAoDQqYQGvHrMecwB0AACgFyLhAIoOZaHKJbkeRhLuIWdlAKDKJWEAcgBsoCgAdAAAoJMpgAJhY2htdADMHs8e1R7bHt0ecgDyAJ0GbwByAG4AZQDyANYWYQByAGSgyyEAoG0pAKAOIHIAaQAAoL8iAANhY2hpcXTrHu8e1QfzHv0eBh/xIXVvAKA5IHIAAOA12MHcbQDloXIi+h4AAPweAKCNKgCgjyoAAWJ19xwBH28AcqAYIACgGiDyIW9rQmEAhDwAO2NkaGlscXJCBhcfxh0gHyQfKB8sHzEfAAFjaRsfHR8AoKYqcgAAoHkqcgBlAOUAkx3tIWVzAKDJIuEhcnIAoHYpdSJlc3QAAKB7KgABUGk1HzkfYQByAACglillocMlAgdfEnIAAAFkdUIfRx9zImhhcgAAoEop6CFhcgCgZikAAWVuTx9WH3IjdG5lcXEAAOBoIgD+xQBUHwAHRGFjZGVmaGlsbm9wc3VuH3Ifoh+rH68ftx+7H74f5h/uH/MfBwj/HwsgxCFvdACgOiIAAmNscHJ5H30fiR+eH3IAO4CvAK9AAAFldIEfgx8AoEImZaAgJ3MAZQAAoCAnc6CmIXQAbwCAoaYhZGx1AJQfmB+cH28AdwDuAHkDZQBmAPQA6gbwAOkO6yFlcgCgriUAAW95ph+qH+0hbWEAoCkqPGThIXNoAKAUIOElc3VyZWRhbmdsZQCgISJyAADgNdgq3W8AAKAnIYABY2RuAMQfyR/bH3IAbwA7gLUAtUBhoiMi0B8AANMf1x9zAPQAKxFpAHIAAKDwKm8AdAA7gLcAt0B1AHMA4qESIh4TAADjH3WgOCIAoCoqYwHqH+0fcAAAoNsq8gB+GnAAbAB1APMACAgAAWRw9x/7H+UhbHMAoKciZgAA4DXYXt0AAWN0AyAHIHIAAOA12MLc8CFvcwCgPiJsobwDECAVIPQiaW1hcACguCJhAPAAEyAADEdMUlZhYmNkZWZnaGlqbG1vcHJzdHV2dzwgRyBmIG0geSCqILgg2iDeIBEhFSEyIUMhTSFQIZwhnyHSIQAiIyKLIrEivyIUIwABZ3RAIEMgAODZIjgD9uBrItIgBwmAAWVsdABNIF8gYiBmAHQAAAFhclMgWCByInJvdwAAoM0h6SRnaHRhcnJvdwCgziEA4NgiOAP24Goi0iBfCekkZ2h0YXJyb3cAoM8hAAFEZHEgdSDhIXNoAKCvIuEhc2gAoK4igAJiY25wdACCIIYgiSCNIKIgbABhAACgByL1IXRlRGFnAADgICLSIACiSSJFaW9wlSCYIJwgniAA4HAqOANkAADgSyI4A3MASWFyAG8A+AAyCnUAcgBhoG4mbADzoG4mmwjzAa8gAACzIHAAO4CgAKBAbQBwAOXgTiI4AyoJgAJhZW91eQDBIMogzSDWINkg8AHGIAAAyCAAoEMqbwBuAEhh5CFpbEZhbgBnAGSgRyJvAHQAAOBtKjgDcAAAoEIqPWThIXNoAKATIACjYCJBYWRxc3jpIO0g+SD+IAIhDCFyAHIAAKDXIXIAAAFocvIg9SBrAACgJClvoJch9wAGD28AdAAA4FAiOAN1AGkA9gC7CAABZWkGIQohYQByAACgKCntAN8I6SFzdPOgBCLlCHIAAOA12CvdAAJFZXN0/wgcISshLiHxoXEiIiEAABMJ8aFxIgAJAAAnIWwAYQBuAPQAEwlpAO0AGQlyoG8iAKBvIoABQWFwADghOyE/IXIA8gBeIHIAcgAAoK4hYQByAACg8ipzogsiSiEAAAAAxwtkoPwiAKD6ImMAeQBaZIADQUVhZGVzdABcIV8hYiFmIWkhkyGWIXIA8gBXIADgZiI4A3IAcgAAoJohcgAAoCUggKFwImZxcwBwIYQhjiF0AAABYXJ1IXohcgByAG8A9wBlIWkAZwBoAHQAYQByAHIAbwD3AD4h8aFwImAhAACKIWwAYQBuAPQAZwlz4H0qOAMAoG4iaQDtAG0JcqBuImkA5aDqIkUJaQDkADoKAAFwdKMhpyFmAADgNdhf3YCBrAA7aW4AriGvIcchrEBuAIChCSJFZHYAtyG6Ib8hAOD5IjgDbwB0AADg9SI4A+EB1gjEIcYhAKD3IgCg9iJpAHagDCLhAagJzyHRIQCg/iIAoP0igAFhb3IA2CHsIfEhcgCAoSYiYXN0AOAh5SHpIWwAbABlAOwAywhsAADg/SrlIADgAiI4A2wiaW50AACgFCrjoYAi9yEAAPohdQDlAJsJY+CvKjgDZaCAIvEAkwkAAkFhaXQHIgoiFyIeInIA8gBsIHIAcgAAoZshY3cRIhQiAOAzKTgDAOCdITgDZyRodGFycm93AACgmyFyAGkA5aDrIr4JgANjaGltcHF1AC8iPCJHIpwhTSJQIloigKGBImNlcgA2Iv0JOSJ1AOUABgoA4DXYw9zvIXJ0bQKdIQAAAABEImEAcgDhAOEhbQBloEEi8aBEIiYKYQDyAMsIcwB1AAABYnBWIlgi5QDUCeUA3wmAAWJjcABgInMieCKAoYQiRWVzAGci7glqIgDgxSo4A2UAdABl4IIi0iBxAPGgiCJoImMAZaCBIvEA/gmAoYUiRWVzAH8iFgqCIgDgxio4A2UAdABl4IMi0iBxAPGgiSKAIgACZ2lscpIilCKaIpwi7AAMCWwAZABlADuA8QDxQOcAWwlpI2FuZ2xlAAABbHKkIqoi5SFmdGWg6iLxAEUJaSJnaHQAZaDrIvEAvgltoL0DAKEjAGVzuCK8InIAbwAAoBYhcAAAoAcggARESGFkZ2lscnMAziLSItYi2iLeIugi7SICIw8j4SFzaACgrSLhIXJyAKAEKXAAAOBNItIg4SFzaACgrCIAAWV04iLlIgDgZSLSIADgPgDSIG4iZmluAACg3imAAUFldADzIvci+iJyAHIAAKACKQDgZCLSIHLgPADSIGkAZQAA4LQi0iAAAUF0BiMKI3IAcgAAoAMp8iFpZQDgtSLSIGkAbQAA4Dwi0iCAAUFhbgAaIx4jKiNyAHIAAKDWIXIAAAFociMjJiNrAACgIylvoJYh9wD/DuUhYXIAoCcpUxJqFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVCMAAF4jaSN/I4IjjSOeI8AUAAAAAKYjwCMAANoj3yMAAO8jHiQvJD8kRCQAAWNzVyNsFHUAdABlADuA8wDzQAABaXlhI2cjcgBjoJoiO4D0APRAPmSAAmFiaW9zAHEjdCN3I3EBeiNzAOgAdhTsIWFjUWF2AACgOCrvIWxkAKC8KewhaWdTYQABY3KFI4kjaQByAACgvykA4DXYLN1vA5QjAAAAAJYjAACcI24A22JhAHYAZQA7gPIA8kAAoMEpAAFibaEjjAphAHIAAKC1KQACYWNpdKwjryO6I70jcgDyAFkUAAFpcrMjtiNyAACgvinvIXNzAKC7KW4A5QDZCgCgwCmAAWFlaQDFI8gjyyNjAHIATWFnAGEAyWOAAWNkbgDRI9Qj1iPyIW9uv2MAoLYpdQDzAHgBcABmAADgNdhg3YABYWVsAOQj5yPrI3IAAKC3KXIAcAAAoLkpdQDzAHwBAKMoImFkaW9zdvkj/CMPJBMkFiQbJHIA8gBeFIChXSplZm0AAyQJJAwkcgBvoDQhZgAAoDQhO4CqAKpAO4C6ALpA5yFvZgCgtiJyAACgVipsIm9wZQAAoFcqAKBbKoABY2xvACMkJSQrJPIACCRhAHMAaAA7gPgA+EBsAACgmCJpAGwBMyQ4JGQAZQA7gPUA9UBlAHMAYaCXInMAAKA2Km0AbAA7gPYA9kDiIWFyAKA9I+EKXiQAAHokAAB8JJQkAACYJKkkAAAAALUkEQsAAPAkAAAAAAQleiUAAIMlcgCAoSUiYXN0AGUkbyQBCwCBtgA7bGokayS2QGwAZQDsABgDaQJ1JAAAAAB4JG0AAKDzKgCg/Sp5AD9kcgCAAmNpbXB0AIUkiCSLJJkSjyRuAHQAJWBvAGQALmBpAGwAAKAwIOUhbmsAoDEgcgAA4DXYLd2AAWltbwCdJKAkpCR2oMYD1WNtAGEA9AD+B24AZQAAoA4m9KHAA64kAAC0JGMjaGZvcmsAAKDUItZjAAFhdbgkxCRuAAABY2u9JMIkawBooA8hAKAOIfYAaRpzAACkKwBhYmNkZW1zdNMkIRPXJNsk4STjJOck6yTjIWlyAKAjKmkAcgAAoCIqAAFvdYsW3yQAoCUqAKByKm4AO4CxALFAaQBtAACgJip3AG8AAKAnKoABaXB1APUk+iT+JO4idGludACgFSpmAADgNdhh3W4AZAA7gKMAo0CApHoiRWFjZWlub3N1ABMlFSUYJRslTCVRJVklSSV1JQCgsypwAACgtyp1AOUAPwtjoK8qgKJ6ImFjZW5zACclLSU0JTYlSSVwAHAAcgBvAPgAFyV1AHIAbAB5AGUA8QA/C/EAOAuAAWFlcwA8JUElRSXwInByb3gAoLkqcQBxAACgtSppAG0AAKDoImkA7QBEC20AZQDzoDIgIguAAUVhcwBDJVclRSXwAEAlgAFkZnAATwtfJXElgAFhbHMAZSVpJW0l7CFhcgCgLiPpIW5lAKASI/UhcmYAoBMjdKAdIu8AWQvyIWVsAKCwIgABY2l9JYElcgAA4DXYxdzIY24iY3NwAACgCCAAA2Zpb3BzdZElKxuVJZolnyWkJXIAAOA12C7dcABmAADgNdhi3XIiaW1lAACgVyBjAHIAAOA12MbcgAFhZW8AqiW6JcAldAAAAWVpryW2JXIAbgBpAG8AbgDzABkFbgB0AACgFipzAHQAZaA/APEACRj0AG0LgApBQkhhYmNkZWZoaWxtbm9wcnN0dXgA4yXyJfYl+iVpJpAmpia9JtUm5ib4JlonaCdxJ3UnnietJ7EnyCfiJ+cngAFhcnQA6SXsJe4lcgDyAJkM8gD6AuEhaWwAoBwpYQByAPIA3BVhAHIAAKBkKYADY2RlbnFydAAGJhAmEyYYJiYmKyZaJgABZXUKJg0mAOA9IjEDdABlAFVhaQDjACAN7SJwdHl2AKCzKWcAgKHpJ2RlbAAgJiImJCYAoJIpAKClKeUA9wt1AG8AO4C7ALtAcgAApZIhYWJjZmhscHN0dz0mQCZFJkcmSiZMJk4mUSZVJlgmcAAAoHUpZqDlIXMAAKAgKQCgMylzAACgHinrALka8ACVHmwAAKBFKWkAbQAAoHQpbAAAoKMhAKCdIQABYWleJmImaQBsAACgGilvAG6gNiJhAGwA8wB2C4ABYWJyAG8mciZ2JnIA8gAvEnIAawAAoHMnAAFha3omgSZjAAABZWt/JoAmfWBdYAABZXOFJocmAKCMKWwAAAFkdYwmjiYAoI4pAKCQKQACYWV1eZcmmiajJqUm8iFvbllhAAFkaZ4moSZpAGwAV2HsAA8M4gCAJkBkAAJjbHFzrSawJrUmuiZhAACgNylkImhhcgAAoGkpdQBvAPKgHSCjAWgAAKCzIYABYWNnAMMm0iaUC2wAgKEcIWlwcwDLJs4migxuAOUAoAxhAHIA9ADaC3QAAKCtJYABaWxyANsm3ybjJvMhaHQAoH0pbwBvAPIANgwA4DXYL90AAWFv6ib1JnIAAAFkde8m8SYAoMEhbKDAIQCgbCl2oMED8WOAAWducwD+Jk4nUCdoAHQAAANhaGxyc3QKJxInISc1Jz0nRydyInJvdwB0oJIhYQDpAFYmYSNycG9vbgAAAWR1GiceJ28AdwDuAPAmcAAAoMAh5SFmdAABYWgnJy0ncgByAG8AdwDzAAkMYQByAHAAbwBvAG4A8wATBGklZ2h0YXJyb3dzAACgySFxAHUAaQBnAGEAcgByAG8A9wBZJugkcmVldGltZXMAoMwiZwDaYmkAbgBnAGQAbwB0AHMAZQDxABwYgAFhaG0AYCdjJ2YncgDyAAkMYQDyABMEAKAPIG8idXN0AGGgsSPjIWhlAKCxI+0haWQAoO4qAAJhYnB0fCeGJ4knmScAAW5ygCeDJ2cAAKDtJ3IAAKD+IXIA6wAcDIABYWZsAI8nkieVJ3IAAKCGKQDgNdhj3XUAcwAAoC4qaSJtZXMAAKA1KgABYXCiJ6gncgBnoCkAdAAAoJQp7yJsaW50AKASKmEAcgDyADwnAAJhY2hxuCe8J6EMwCfxIXVvAKA6IHIAAOA12MfcAAFidYAmxCdvAPKgGSCoAYABaGlyAM4n0ifWJ3IAZQDlAE0n7SFlcwCgyiJpAIChuSVlZmwAXAxjEt4n9CFyaQCgzinsInVoYXIAoGgpAKAeIWENBSgJKA0oSyhVKIYoAACLKLAoAAAAAOMo5ygAABApJCkxKW0pcSmHKaYpAACYKgAAAACxKmMidXRlAFthcQB1AO8ABR+ApHsiRWFjZWlucHN5ABwoHignKCooLygyKEEoRihJKACgtCrwASMoAAAlKACguCpvAG4AYWF1AOUAgw1koLAqaQBsAF9hcgBjAF1hgAFFYXMAOCg6KD0oAKC2KnAAAKC6KmkAbQAAoOki7yJsaW50AKATKmkA7QCIDUFkbwB0AGKixSKRFgAAAABTKACgZiqAA0FhY21zdHgAYChkKG8ocyh1KHkogihyAHIAAKDYIXIAAAFocmkoayjrAJAab6CYIfcAzAd0ADuApwCnQGkAO2D3IWFyAKApKW0AAAFpbn4ozQBuAHUA8wDOAHQAAKA2J3IA7+A12DDdIxkAAmFjb3mRKJUonSisKHIAcAAAoG8mAAFoeZkonChjAHkASWRIZHIAdABtAqUoAAAAAKgoaQDkAFsPYQByAGEA7ABsJDuArQCtQAABZ22zKLsobQBhAAChwwNmdroouijCY4CjPCJkZWdsbnByAMgozCjPKNMo1yjaKN4obwB0AACgairxoEMiCw5FoJ4qAKCgKkWgnSoAoJ8qZQAAoEYi7CF1cwCgJCrhIXJyAKByKWEAcgDyAPwMAAJhZWl07Sj8KAEpCCkAAWxz8Sj4KGwAcwBlAHQAbQDpAH8oaABwAACgMyrwImFyc2wAoOQpAAFkbFoPBSllAACgIyNloKoqc6CsKgDgrCoA/oABZmxwABUpGCkfKfQhY3lMZGKgLwBhoMQpcgAAoD8jZgAA4DXYZN1hAAABZHIoKRcDZQBzAHWgYCZpAHQAAKBgJoABY3N1ADYpRilhKQABYXU6KUApcABzoJMiAOCTIgD+cABzoJQiAOCUIgD+dQAAAWJwSylWKQChjyJlcz4NUCllAHQAZaCPIvEAPw0AoZAiZXNIDVspZQB0AGWgkCLxAEkNAKGhJWFmZilbBHIAZQFrKVwEAKChJWEAcgDyAAMNAAJjZW10dyl7KX8pgilyAADgNdjI3HQAbQDuAM4AaQDsAAYpYQByAOYAVw0AAWFyiimOKXIA5qAGJhESAAFhbpIpoylpImdodAAAAWVwmSmgKXAAcwBpAGwAbwDuANkXaADpAKAkcwCvYIACYmNtbnAArin8KY4NJSooKgCkgiJFZGVtbnByc7wpvinCKcgpzCnUKdgp3CkAoMUqbwB0AACgvSpkoIYibwB0AACgwyr1IWx0AKDBKgABRWXQKdIpAKDLKgCgiiLsIXVzAKC/KuEhcnIAoHkpgAFlaXUA4inxKfQpdAAAoYIiZW7oKewpcQDxoIYivSllAHEA8aCKItEpbQAAoMcqAAFicPgp+ikAoNUqAKDTKmMAgKJ7ImFjZW5zAAcqDSoUKhYqRihwAHAAcgBvAPgAIyh1AHIAbAB5AGUA8QCDDfEAfA2AAWFlcwAcKiIqPShwAHAAcgBvAPgAPChxAPEAOShnAACgaiYApoMiMTIzRWRlaGxtbnBzPCo/KkIqRSpHKlIqWCpjKmcqaypzKncqO4C5ALlAO4CyALJAO4CzALNAAKDGKgABb3NLKk4qdAAAoL4qdQBiAACg2CpkoIcibwB0AACgxCpzAAABb3VdKmAqbAAAoMknYgAAoNcq4SFycgCgeyn1IWx0AKDCKgABRWVvKnEqAKDMKgCgiyLsIXVzAKDAKoABZWl1AH0qjCqPKnQAAKGDImVugyqHKnEA8aCHIkYqZQBxAPGgiyJwKm0AAKDIKgABYnCTKpUqAKDUKgCg1iqAAUFhbgCdKqEqrCpyAHIAAKDZIXIAAAFocqYqqCrrAJUab6CZIfcAxQf3IWFyAKAqKWwAaQBnADuA3wDfQOELzyrZKtwq6SrsKvEqAAD1KjQrAAAAAAAAAAAAAEwrbCsAAHErvSsAAAAAAADRK3IC1CoAAAAA2CrnIWV0AKAWI8RjcgDrAOUKgAFhZXkA4SrkKucq8iFvbmVh5CFpbGNhQmRvAPQAIg5sInJlYwAAoBUjcgAA4DXYMd0AAmVpa2/7KhIrKCsuK/IBACsAAAkrZQAAATRm6g0EK28AcgDlAOsNYQBzorgDECsAAAAAEit5AG0A0WMAAWNuFislK2sAAAFhcxsrIStwAHAAcgBvAPgAFw5pAG0AAKA8InMA8AD9DQABYXMsKyEr8AAXDnIAbgA7gP4A/kDsATgrOyswG2QA5QBnAmUAcwCAgdcAO2JkAEMrRCtJK9dAYaCgInIAAKAxKgCgMCqAAWVwcwBRK1MraSvhAAkh4qKkIlsrXysAAAAAYytvAHQAAKA2I2kAcgAAoPEqb+A12GXdcgBrAACg2irhAHgociJpbWUAAKA0IIABYWlwAHYreSu3K2QA5QC+DYADYWRlbXBzdACFK6MrmiunK6wrsCuzK24iZ2xlAACitSVkbHFykCuUK5ornCvvIXduAKC/JeUhZnRloMMl8QACBwCgXCJpImdodABloLkl8QBdDG8AdAAAoOwlaSJudXMAAKA6KuwhdXMAoDkqYgAAoM0p6SFtZQCgOyrlInppdW0AoOIjgAFjaHQAwivKK80rAAFyecYrySsA4DXYydxGZGMAeQBbZPIhb2tnYQABaW/UK9creAD0ANERaCJlYWQAAAFsct4r5ytlAGYAdABhAHIAcgBvAPcAXQbpJGdodGFycm93AKCgIQAJQUhhYmNkZmdobG1vcHJzdHV3CiwNLBEsHSwnLDEsQCxLLFIsYix6LIQsjyzLLOgs7Sz/LAotcgDyAAkDYQByAACgYykAAWNyFSwbLHUAdABlADuA+gD6QPIACQ1yAOMBIywAACUseQBeZHYAZQBtYQABaXkrLDAscgBjADuA+wD7QENkgAFhYmgANyw6LD0scgDyANEO7CFhY3FhYQDyAOAOAAFpckQsSCzzIWh0AKB+KQDgNdgy3XIAYQB2AGUAO4D5APlAYQFWLF8scgAAAWxyWixcLACgvyEAoL4hbABrAACggCUAAWN0Zix2LG8CbCwAAAAAcyxyAG4AZaAcI3IAAKAcI28AcAAAoA8jcgBpAACg+CUAAWFsfiyBLGMAcgBrYTuAqACoQAABZ3CILIssbwBuAHNhZgAA4DXYZt0AA2FkaGxzdZksniynLLgsuyzFLHIAcgBvAPcACQ1vAHcAbgBhAHIAcgBvAPcA2A5hI3Jwb29uAAABbHKvLLMsZQBmAPQAWyxpAGcAaAD0AF0sdQDzAKYOaQAAocUDaGzBLMIs0mNvAG4AxWPwI2Fycm93cwCgyCGAAWNpdADRLOEs5CxvAtcsAAAAAN4scgBuAGWgHSNyAACgHSNvAHAAAKAOI24AZwBvYXIAaQAAoPklYwByAADgNdjK3IABZGlyAPMs9yz6LG8AdAAAoPAi7CFkZWlhaQBmoLUlAKC0JQABYW0DLQYtcgDyAMosbAA7gPwA/EDhIm5nbGUAoKcpgAdBQkRhY2RlZmxub3Byc3oAJy0qLTAtNC2bLZ0toS2/LcMtxy3TLdgt3C3gLfwtcgDyABADYQByAHag6CoAoOkqYQBzAOgA/gIAAW5yOC08LechcnQAoJwpgANla25wcnN0AJkpSC1NLVQtXi1iLYItYQBwAHAA4QAaHG8AdABoAGkAbgDnAKEXgAFoaXIAoSmzJFotbwBwAPQAdCVooJUh7wD4JgABaXVmLWotZwBtAOEAuygAAWJwbi14LXMjZXRuZXEAceCKIgD+AODLKgD+cyNldG5lcQBx4IsiAP4A4MwqAP4AAWhyhi2KLWUAdADhABIraSNhbmdsZQAAAWxyki2WLeUhZnQAoLIiaSJnaHQAAKCzInkAMmThIXNoAKCiIoABZWxyAKcttC24LWKiKCKuLQAAAACyLWEAcgAAoLsicQAAoFoi7CFpcACg7iIAAWJ0vC1eD2EA8gBfD3IAAOA12DPddAByAOkAlS1zAHUAAAFicM0t0C0A4IIi0iAA4IMi0iBwAGYAAOA12GfdcgBvAPAAWQt0AHIA6QCaLQABY3XkLegtcgAA4DXYy9wAAWJw7C30LW4AAAFFZXUt8S0A4IoiAP5uAAABRWV/LfktAOCLIgD+6SJnemFnAKCaKYADY2Vmb3BycwANLhAuJS4pLiMuLi40LukhcmN1YQABZGkULiEuAAFiZxguHC5hAHIAAKBfKmUAcaAnIgCgWSLlIXJwAKAYIXIAAOA12DTdcABmAADgNdho3WWgQCJhAHQA6ABqD2MAcgAA4DXYzNzjCuQRUC4AAFQuAABYLmIuAAAAAGMubS5wLnQuAAAAAIguki4AAJouJxIqEnQAcgDpAB0ScgAA4DXYNd0AAUFhWy5eLnIA8gDnAnIA8gCTB75jAAFBYWYuaS5yAPIA4AJyAPIAjAdhAPAAeh5pAHMAAKD7IoABZHB0APgReS6DLgABZmx9LoAuAOA12GnddQDzAP8RaQBtAOUABBIAAUFhiy6OLnIA8gDuAnIA8gCaBwABY3GVLgoScgAA4DXYzdwAAXB0nS6hLmwAdQDzACUScgDpACASAARhY2VmaW9zdbEuvC7ELsguzC7PLtQu2S5jAAABdXm2LrsudABlADuA/QD9QE9kAAFpecAuwy5yAGMAd2FLZG4AO4ClAKVAcgAA4DXYNt1jAHkAV2RwAGYAAOA12GrdYwByAADgNdjO3AABY23dLt8ueQBOZGwAO4D/AP9AAAVhY2RlZmhpb3N38y73Lv8uAi8MLxAvEy8YLx0vIi9jInV0ZQB6YQABYXn7Lv4u8iFvbn5hN2RvAHQAfGEAAWV0Bi8KL3QAcgDmAB8QYQC2Y3IAAOA12DfdYwB5ADZk5yJyYXJyAKDdIXAAZgAA4DXYa91jAHIAAOA12M/cAAFqbiYvKC8AoA0gagAAoAwg")});var OJ;var fL=C(()=>{(function(J){J[J.VALUE_LENGTH=49152]="VALUE_LENGTH",J[J.FLAG13=8192]="FLAG13",J[J.BRANCH_LENGTH=8064]="BRANCH_LENGTH",J[J.JUMP_TABLE=127]="JUMP_TABLE"})(OJ||(OJ={}))});function B8(J){return J>=d1.ZERO&&J<=d1.NINE}function dy(J){return J>=d1.UPPER_A&&J<=d1.UPPER_F||J>=d1.LOWER_A&&J<=d1.LOWER_F}function ny(J){return J>=d1.UPPER_A&&J<=d1.UPPER_Z||J>=d1.LOWER_A&&J<=d1.LOWER_Z||B8(J)}function iy(J){return J===d1.EQUALS||ny(J)}class W8{constructor(J,z,Y){this.decodeTree=J,this.emitCodePoint=z,this.errors=Y,this.state=qJ.EntityStart,this.consumed=1,this.result=0,this.treeIndex=0,this.excess=1,this.decodeMode=DY.Strict,this.runConsumed=0}startEntity(J){this.decodeMode=J,this.state=qJ.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1,this.runConsumed=0}write(J,z){switch(this.state){case qJ.EntityStart:{if(J.charCodeAt(z)===d1.NUM)return this.state=qJ.NumericStart,this.consumed+=1,this.stateNumericStart(J,z+1);return this.state=qJ.NamedEntity,this.stateNamedEntity(J,z)}case qJ.NumericStart:return this.stateNumericStart(J,z);case qJ.NumericDecimal:return this.stateNumericDecimal(J,z);case qJ.NumericHex:return this.stateNumericHex(J,z);case qJ.NamedEntity:return this.stateNamedEntity(J,z)}}stateNumericStart(J,z){if(z>=J.length)return-1;if((J.charCodeAt(z)|jL)===d1.LOWER_X)return this.state=qJ.NumericHex,this.consumed+=1,this.stateNumericHex(J,z+1);return this.state=qJ.NumericDecimal,this.stateNumericDecimal(J,z)}stateNumericHex(J,z){while(z<J.length){let Y=J.charCodeAt(z);if(B8(Y)||dy(Y)){let Z=Y<=d1.NINE?Y-d1.ZERO:(Y|jL)-d1.LOWER_A+10;this.result=this.result*16+Z,this.consumed++,z++}else return this.emitNumericEntity(Y,3)}return-1}stateNumericDecimal(J,z){while(z<J.length){let Y=J.charCodeAt(z);if(B8(Y))this.result=this.result*10+(Y-d1.ZERO),this.consumed++,z++;else return this.emitNumericEntity(Y,2)}return-1}emitNumericEntity(J,z){var Y;if(this.consumed<=z)return(Y=this.errors)===null||Y===void 0||Y.absenceOfDigitsInNumericCharacterReference(this.consumed),0;if(J===d1.SEMI)this.consumed+=1;else if(this.decodeMode===DY.Strict)return 0;if(this.emitCodePoint(GL(this.result),this.consumed),this.errors){if(J!==d1.SEMI)this.errors.missingSemicolonAfterCharacterReference();this.errors.validateNumericCharacterReference(this.result)}return this.consumed}stateNamedEntity(J,z){let{decodeTree:Y}=this,Z=Y[this.treeIndex],G=(Z&OJ.VALUE_LENGTH)>>14;while(z<J.length){if(G===0&&(Z&OJ.FLAG13)!==0){let Q=(Z&OJ.BRANCH_LENGTH)>>7;if(this.runConsumed===0){let H=Z&OJ.JUMP_TABLE;if(J.charCodeAt(z)!==H)return this.result===0?0:this.emitNotTerminatedNamedEntity();z++,this.excess++,this.runConsumed++}while(this.runConsumed<Q){if(z>=J.length)return-1;let H=this.runConsumed-1,f=Y[this.treeIndex+1+(H>>1)],j=H%2===0?f&255:f>>8&255;if(J.charCodeAt(z)!==j)return this.runConsumed=0,this.result===0?0:this.emitNotTerminatedNamedEntity();z++,this.excess++,this.runConsumed++}this.runConsumed=0,this.treeIndex+=1+(Q>>1),Z=Y[this.treeIndex],G=(Z&OJ.VALUE_LENGTH)>>14}if(z>=J.length)break;let X=J.charCodeAt(z);if(X===d1.SEMI&&G!==0&&(Z&OJ.FLAG13)!==0)return this.emitNamedEntityData(this.treeIndex,G,this.consumed+this.excess);if(this.treeIndex=$y(Y,Z,this.treeIndex+Math.max(1,G),X),this.treeIndex<0)return this.result===0||this.decodeMode===DY.Attribute&&(G===0||iy(X))?0:this.emitNotTerminatedNamedEntity();if(Z=Y[this.treeIndex],G=(Z&OJ.VALUE_LENGTH)>>14,G!==0){if(X===d1.SEMI)return this.emitNamedEntityData(this.treeIndex,G,this.consumed+this.excess);if(this.decodeMode!==DY.Strict&&(Z&OJ.FLAG13)===0)this.result=this.treeIndex,this.consumed+=this.excess,this.excess=0}z++,this.excess++}return-1}emitNotTerminatedNamedEntity(){var J;let{result:z,decodeTree:Y}=this,Z=(Y[z]&OJ.VALUE_LENGTH)>>14;return this.emitNamedEntityData(z,Z,this.consumed),(J=this.errors)===null||J===void 0||J.missingSemicolonAfterCharacterReference(),this.consumed}emitNamedEntityData(J,z,Y){let{decodeTree:Z}=this;if(this.emitCodePoint(z===1?Z[J]&~(OJ.VALUE_LENGTH|OJ.FLAG13):Z[J+1],Y),z===3)this.emitCodePoint(Z[J+2],Y);return Y}end(){var J;switch(this.state){case qJ.NamedEntity:return this.result!==0&&(this.decodeMode!==DY.Attribute||this.result===this.treeIndex)?this.emitNotTerminatedNamedEntity():0;case qJ.NumericDecimal:return this.emitNumericEntity(0,2);case qJ.NumericHex:return this.emitNumericEntity(0,3);case qJ.NumericStart:return(J=this.errors)===null||J===void 0||J.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case qJ.EntityStart:return 0}}}function ly(J){let z="",Y=new W8(J,(Z)=>z+=ZL(Z));return function(G,X){let Q=0,H=0;while((H=G.indexOf("&",H))>=0){z+=G.slice(Q,H),Y.startEntity(X);let j=Y.write(G,H+1);if(j<0){Q=H+Y.end();break}Q=H+j,H=j===0?Q+1:Q}let f=z+G.slice(Q);return z="",f}}function $y(J,z,Y,Z){let G=(z&OJ.BRANCH_LENGTH)>>7,X=z&OJ.JUMP_TABLE;if(G===0)return X!==0&&Z===X?Y:-1;if(X){let j=Z-X;return j<0||j>=G?-1:J[Y+j]-1}let Q=G+1>>1,H=0,f=G-1;while(H<=f){let j=H+f>>>1,V=j>>1,K=J[Y+V]>>(j&1)*8&255;if(K<Z)H=j+1;else if(K>Z)f=j-1;else return J[Y+Q+j]}return-1}function wZ(J,z=DY.Legacy){return ay(J,z)}var d1,jL=32,qJ,DY,ay;var BL=C(()=>{XL();HL();fL();(function(J){J[J.NUM=35]="NUM",J[J.SEMI=59]="SEMI",J[J.EQUALS=61]="EQUALS",J[J.ZERO=48]="ZERO",J[J.NINE=57]="NINE",J[J.LOWER_A=97]="LOWER_A",J[J.LOWER_F=102]="LOWER_F",J[J.LOWER_X=120]="LOWER_X",J[J.LOWER_Z=122]="LOWER_Z",J[J.UPPER_A=65]="UPPER_A",J[J.UPPER_F=70]="UPPER_F",J[J.UPPER_Z=90]="UPPER_Z"})(d1||(d1={}));(function(J){J[J.EntityStart=0]="EntityStart",J[J.NumericStart=1]="NumericStart",J[J.NumericDecimal=2]="NumericDecimal",J[J.NumericHex=3]="NumericHex",J[J.NamedEntity=4]="NamedEntity"})(qJ||(qJ={}));(function(J){J[J.Legacy=0]="Legacy",J[J.Strict=1]="Strict",J[J.Attribute=2]="Attribute"})(DY||(DY={}));ay=ly(qL)});var WL,VL;var UL=C(()=>{BL();(function(J){J[J.XML=0]="XML",J[J.HTML=1]="HTML"})(WL||(WL={}));(function(J){J[J.UTF8=0]="UTF8",J[J.ASCII=1]="ASCII",J[J.Extensive=2]="Extensive",J[J.Attribute=3]="Attribute",J[J.Text=4]="Text"})(VL||(VL={}))});import{CliRenderer as py,createCliRenderer as ry,engine as oy}from"@opentui/core";import{createTestRenderer as Ma}from"@opentui/core/testing";import{ASCIIFontRenderable as sy,BoxRenderable as ty,CodeRenderable as ey,DiffRenderable as JT,InputRenderable as zT,LineNumberRenderable as YT,MarkdownRenderable as ZT,ScrollBoxRenderable as GT,SelectRenderable as XT,TabSelectRenderable as QT,TextareaRenderable as qT,TextAttributes as V8,TextNodeRenderable as HT,TextRenderable as fT}from"@opentui/core";import{engine as Ra,Timeline as ga}from"@opentui/core";import{BaseRenderable as AL,createTextAttributes as BT,InputRenderable as K8,InputRenderableEvents as VQ,isTextNodeRenderable as L8,parseColor as DL,Renderable as WT,RootTextNodeRenderable as VT,ScrollBoxRenderable as KT,SelectRenderable as LL,SelectRenderableEvents as U8,TabSelectRenderable as FL,TabSelectRenderableEvents as D8,TextNodeRenderable as UT,TextRenderable as RL}from"@opentui/core";import{BaseRenderable as NT,isTextNodeRenderable as CT,TextNodeRenderable as kT,TextRenderable as bT,Yoga as OL}from"@opentui/core";import{BoxRenderable as ua,RootRenderable as Ea}from"@opentui/core";import{TimeToFirstDrawRenderable as TT}from"@opentui/core";import{createSlotRegistry as ha}from"@opentui/core";function LT({createElement:J,createTextNode:z,createSlotNode:Y,isTextNode:Z,replaceText:G,insertNode:X,removeNode:Q,setProperty:H,getParentNode:f,getFirstChild:j,getNextSibling:V}){function B(S,g,M,T){if(M!==void 0&&!T)T=[];if(typeof g!=="function")return K(S,g,T,M);wz((d)=>K(S,g(),d,M),T)}function K(S,g,M,T,d){while(typeof M==="function")M=M();if(g===M)return M;let i=typeof g,J0=T!==void 0;if(i==="string"||i==="number"){if(i==="number")g=g.toString();if(J0){let E=M[0];if(E&&Z(E))G(E,g);else E=z(g);M=O(S,M,T,E)}else if(M!==""&&typeof M==="string")G(j(S),M=g);else O(S,M,T,z(g)),M=g}else if(g==null||i==="boolean")M=O(S,M,T);else if(i==="function")return wz(()=>{let E=g();while(typeof E==="function")E=E();M=K(S,E,M,T)}),()=>M;else if(Array.isArray(g)){let E=[];if(L(E,g,d))return wz(()=>M=K(S,E,M,T,!0)),()=>M;if(E.length===0){let z0=O(S,M,T);if(J0)return M=z0}else if(Array.isArray(M))if(M.length===0)R(S,E,T);else A(S,M,E);else if(M==null||M==="")R(S,E);else A(S,J0&&M||[j(S)],E);M=E}else{if(Array.isArray(M)){if(J0)return M=O(S,M,T,g);O(S,M,null,g)}else if(M==null||M===""||!j(S))X(S,g);else u(S,g,j(S));M=g}return M}function L(S,g,M){let T=!1;for(let d=0,i=g.length;d<i;d++){let J0=g[d],E;if(J0==null||J0===!0||J0===!1);else if(Array.isArray(J0))T=L(S,J0)||T;else if((E=typeof J0)==="string"||E==="number")S.push(z(J0));else if(E==="function")if(M){while(typeof J0==="function")J0=J0();T=L(S,Array.isArray(J0)?J0:[J0])||T}else S.push(J0),T=!0;else S.push(J0)}return T}function A(S,g,M){let T=M.length,d=g.length,i=T,J0=0,E=0,z0=V(g[d-1]),q0=null;while(J0<d||E<i){if(g[J0]===M[E]){J0++,E++;continue}while(g[d-1]===M[i-1])d--,i--;if(d===J0){let o=i<T?E?V(M[E-1]):M[i-E]:z0;while(E<i)X(S,M[E++],o)}else if(i===E)while(J0<d){if(!q0||!q0.has(g[J0]))Q(S,g[J0]);J0++}else if(g[J0]===M[i-1]&&M[E]===g[d-1]){let o=V(g[--d]);X(S,M[E++],V(g[J0++])),X(S,M[--i],o),g[d]=M[i]}else{if(!q0){q0=new Map;let B0=E;while(B0<i)q0.set(M[B0],B0++)}let o=q0.get(g[J0]);if(o!=null)if(E<o&&o<i){let B0=J0,g0=1,m;while(++B0<d&&B0<i){if((m=q0.get(g[B0]))==null||m!==o+g0)break;g0++}if(g0>o-E){let r=g[J0];while(E<o)X(S,M[E++],r)}else u(S,M[E++],g[J0++])}else J0++;else Q(S,g[J0++])}}}function O(S,g,M,T){if(M===void 0){let i;while(i=j(S))Q(S,i);return T&&X(S,T),T??""}let d=T||Y();if(g.length){let i=!1;for(let J0=g.length-1;J0>=0;J0--){let E=g[J0];if(d!==E){let z0=f(E)===S;if(!i&&!J0)z0?u(S,d,E):X(S,d,M);else z0&&Q(S,E)}else i=!0}}else X(S,d,M);return[d]}function R(S,g,M){for(let T=0,d=g.length;T<d;T++)X(S,g[T],M)}function u(S,g,M){X(S,g,M),Q(S,M)}function P(S,g,M={},T){if(g||(g={}),!T)wz(()=>M.children=K(S,g.children,M.children));return wz(()=>g.ref&&g.ref(S)),wz(()=>{for(let d in g){if(d==="children"||d==="ref")continue;let i=g[d];if(i===M[d])continue;H(S,d,i,M[d]),M[d]=i}}),M}return{render(S,g){let M;return BZ((T)=>{M=T,B(g,S())}),M},insert:B,spread(S,g,M){if(typeof g==="function")wz((T)=>P(S,g(),T,M));else P(S,g,void 0,M)},createElement:J,createTextNode:z,insertNode:X,setProp(S,g,M,T){return H(S,g,M,T),M},mergeProps:uq,effect:wz,memo:DT,createComponent:XK,use(S,g,M){return t1(()=>S(g,M))}}}function FT(J){let z=LT(J);return z.mergeProps=uq,z}function R8(J){if(!qf.has(J))qf.set(J,0);let z=qf.get(J)+1;return qf.set(J,z),`${J}-${z}`}function MT(J,z,Y){if(HJ("Inserting node:",YJ(z),"into parent:",YJ(J),"with anchor:",YJ(Y),z instanceof nG),z instanceof KQ)z.parent=J,z=z.getSlotChild(J);if(Y&&Y instanceof KQ)Y=Y.getSlotChild(J);if(L8(z)){if(!(J instanceof RL)&&!L8(J))throw Error(`Orphan text error: "${z.toChunks().map((X)=>X.text).join("")}" must have a <text> as a parent: ${J.id} above ${z.id}`)}if(!(J instanceof AL))throw console.error("[INSERT]","Tried to mount a non base renderable"),Error("Tried to mount a non base renderable");if(!Y){J.add(z);return}let Z=F8(J),G=Z.findIndex((X)=>X.id===Y.id);if(G===-1)HJ("[INSERT]","Could not find anchor",YJ(J),YJ(Y),"[children]",...Z.map((X)=>X.id));J.add(z,G)}function OT(J,z){if(HJ("Removing node:",YJ(z),"from parent:",YJ(J)),z instanceof KQ)z.parent=null,z=z.getSlotChild(J);J.remove(z.id),process.nextTick(()=>{if(z instanceof AL&&!z.parent){z.destroyRecursively();return}})}function AT(J){HJ("Creating text node:",J);let z=R8("text-node");if(typeof J==="number")J=J.toString();return nG.fromString(wZ(J),{id:z})}function RT(){let J=R8("slot-node");return HJ("Creating slot node",J),new KQ(J)}function ML(J){HJ("Getting parent of node:",YJ(J));let z=J.parent??void 0;if(z instanceof VT)z=z.textParent??void 0;let Y=z?.parent?.parent?.parent;if(Y instanceof KT&&Y.content===z)z=Y;return z}function IT(J){Object.assign(IL,J)}function yT(){return IL}var A8,WJ=()=>{let J=mJ(A8);if(!J)throw Error("No renderer found");return J},jT=(J)=>{let z=WJ();QJ(()=>{z.on("resize",J)}),T1(()=>{z.off("resize",J)})},az=()=>{let J=WJ(),[z,Y]=p({width:J.width,height:J.height});return jT((G,X)=>{Y({width:G,height:X})}),z},DT=(J)=>U0(()=>J()),qf,HJ=(...J)=>{if(process.env.DEBUG)console.log("[Reconciler]",...J)},nG,YJ=(J)=>{if(!J)return;return J.id},F8=(J)=>{let z;if(J instanceof RL)z=J.getTextChildren();else z=J.getChildren();return z},gT,y,N0,b,W,T0,D,U,ya,q,gL,qz,g8,NL,CL,KQ,UQ,Hf,M8,O8,kL,bL,SL,ST,IL,xT=(J,z)=>{let Y,Z=!1,G=!1,X=!0,Q=!1,H=J.destroy.bind(J),f=()=>{if(G)return;if(!Y){Z=!0;return}G=!0,Y()};J.once("destroy",f),J.destroy=()=>{if(X){Q=!0;return}H()};try{Y=gT(()=>b(A8.Provider,{get value(){return J},get children(){return b(z,{})}}),J.root)}finally{X=!1,J.destroy=H}if(Z)f();if(Q)H()},yL=async(J,z={})=>{let Y=z instanceof py?z:await ry({...z,onDestroy:()=>{z.onDestroy?.()}});oy.attach(Y),xT(Y,J)};var w=C(()=>{W1();UL();W1();W1();W1();A8=Pz();qf=new Map;nG=class nG extends UT{static fromString(J,z={}){let Y=new nG(z);return Y.add(J),Y}};({render:gT,effect:y,memo:N0,createComponent:b,createElement:W,createTextNode:T0,insertNode:D,insert:U,spread:ya,setProp:q,mergeProps:gL,use:qz}=FT({createElement(J){HJ("Creating element:",J);let z=R8(J),Y=mJ(A8);if(!Y)throw Error("No renderer found");let Z=yT();if(!Z[J])throw Error(`[Reconciler] Unknown component type: ${J}`);let G=new Z[J](Y,{id:z});return HJ("Element created with id:",z),G},createTextNode:AT,createSlotNode:RT,replaceText(J,z){if(HJ("Replacing text:",z,"in node:",YJ(J)),!(J instanceof nG))return;J.replace(wZ(z),0)},setProperty(J,z,Y,Z){if(z.startsWith("on:")){let G=z.slice(3);if(Y)J.on(G,Y);if(Z)J.off(G,Z);return}if(L8(J)){if(z==="href"){J.link={url:Y};return}if(z==="style"){J.attributes|=BT(Y),J.fg=Y.fg?DL(Y.fg):J.fg,J.bg=Y.bg?DL(Y.bg):J.bg;return}return}switch(z){case"id":HJ("Id mapped",J.id,"=",Y),J[z]=Y;break;case"focused":if(!(J instanceof WT))return;if(Y)J.focus();else J.blur();break;case"onChange":let G=void 0;if(J instanceof LL)G=U8.SELECTION_CHANGED;else if(J instanceof FL)G=D8.SELECTION_CHANGED;else if(J instanceof K8)G=VQ.CHANGE;if(!G)break;if(Y)J.on(G,Y);if(Z)J.off(G,Z);break;case"onInput":if(J instanceof K8){if(Y)J.on(VQ.INPUT,Y);if(Z)J.off(VQ.INPUT,Z)}break;case"onSubmit":if(J instanceof K8){if(Y)J.on(VQ.ENTER,Y);if(Z)J.off(VQ.ENTER,Z)}else J[z]=Y;break;case"onSelect":if(J instanceof LL){if(Y)J.on(U8.ITEM_SELECTED,Y);if(Z)J.off(U8.ITEM_SELECTED,Z)}else if(J instanceof FL){if(Y)J.on(D8.ITEM_SELECTED,Y);if(Z)J.off(D8.ITEM_SELECTED,Z)}break;case"style":for(let X in Y){let Q=Y[X];if(Z!==void 0&&Q===Z[X])continue;J[X]=Q}break;case"text":case"content":{let X=typeof Y==="string"?Y:Array.isArray(Y)?Y.join(""):`${Y}`;J[z]=wZ(X);break}default:J[z]=Y}},isTextNode(J){return J instanceof nG},insertNode:MT,removeNode:OT,getParentNode:ML,getFirstChild(J){HJ("Getting first child of node:",YJ(J));let z=F8(J)[0];if(!z){HJ("No first child found for node:",YJ(J));return}return HJ("First child found:",YJ(z),"for node:",YJ(J)),z},getNextSibling(J){HJ("Getting next sibling of node:",YJ(J));let z=ML(J);if(!z){HJ("No parent found for node:",YJ(J));return}let Y=F8(z),Z=Y.indexOf(J);if(Z===-1||Z===Y.length-1){HJ("No next sibling found for node:",YJ(J));return}let G=Y[Z+1];if(!G){HJ("Next sibling is null for node:",YJ(J));return}return HJ("Next sibling found:",YJ(G),"for node:",YJ(J)),G}}));g8=class g8 extends NT{constructor(J){super({id:J})}add(J,z){throw Error("Can't add children on an Slot renderable")}getChildren(){return[]}remove(J){}insertBefore(J,z){throw Error("Can't add children on an Slot renderable")}getRenderable(J){return}getChildrenCount(){return 0}requestRender(){}findDescendantById(J){return}};NL=class NL extends kT{slotParent;destroyed=!1;constructor(J,z){super({id:J});this._visible=!1,this.slotParent=z}destroy(){if(this.destroyed)return;this.destroyed=!0,this.slotParent?.destroy(),super.destroy()}};CL=class CL extends g8{yogaNode;slotParent;destroyed=!1;constructor(J,z){super(J);this._visible=!1,this.slotParent=z,this.yogaNode=OL.default.Node.create(),this.yogaNode.setDisplay(OL.Display.None)}getLayoutNode(){return this.yogaNode}updateFromLayout(){}updateLayout(){}onRemove(){}destroy(){if(this.destroyed)return;this.destroyed=!0,super.destroy(),this.slotParent?.destroy()}};KQ=class KQ extends g8{layoutNode;textNode;destroyed=!1;constructor(J){super(J);this._visible=!1}getSlotChild(J){if(CT(J)||J instanceof bT){if(!this.textNode)this.textNode=new NL(`slot-text-${this.id}`,this);return this.textNode}if(!this.layoutNode)this.layoutNode=new CL(`slot-layout-${this.id}`,this);return this.layoutNode}destroy(){if(this.destroyed)return;if(this.destroyed=!0,this.layoutNode)this.layoutNode.destroy();if(this.textNode)this.textNode.destroy()}};UQ=class UQ extends HT{_ctx;constructor(J,z){super(z);this._ctx=J}};Hf=class Hf extends UQ{constructor(J,z){super(null,J);if(z==="b"||z==="strong")this.attributes=(this.attributes||0)|V8.BOLD;else if(z==="i"||z==="em")this.attributes=(this.attributes||0)|V8.ITALIC;else if(z==="u")this.attributes=(this.attributes||0)|V8.UNDERLINE}};M8=class M8 extends Hf{constructor(J){super(J,"b")}};O8=class O8 extends Hf{constructor(J){super(J,"i")}};kL=class kL extends Hf{constructor(J){super(J,"u")}};bL=class bL extends UQ{constructor(J,z){super(null,z);this.add()}add(){return super.add(`
261
- `)}};SL=class SL extends UQ{constructor(J,z){let Y={...z,link:{url:z.href}};super(null,Y)}};ST={box:ty,text:fT,input:zT,select:XT,textarea:qT,ascii_font:sy,tab_select:QT,scrollbox:GT,code:ey,diff:JT,line_number:YT,markdown:ZT,span:UQ,strong:M8,b:M8,em:O8,i:O8,u:kL,br:bL,a:SL},IL={...ST};IT({time_to_first_draw:TT})});function LY(J){if(J===void 0)return"undefined";if(J===null)return"null";let z=Array.isArray(J)?"array":typeof J,Y;try{Y=typeof J==="string"?J:JSON.stringify(J)}catch{Y=String(J)}if(Y.length>120)Y=`${Y.slice(0,120)}\u2026`;return`${z}:${Y}`}function uT(J){let z=J?.changes;if(!z||typeof z!=="object"||Array.isArray(z))return null;let Y=new Map;for(let[Z,G]of Object.entries(z)){let X=G;if(typeof X?.added!=="number"||typeof X.deleted!=="number")return null;Y.set(Z,{added:X.added,deleted:X.deleted})}return Y}function ET(J){let z=J;if(typeof z?.theme!=="string")return null;return{theme:z.theme,transparentBackground:z.transparentBackground===!0,focusAccent:typeof z.focusAccent==="string"?z.focusAccent:null,locale:typeof z.locale==="string"?z.locale:"",sortMode:z.sortMode==="recent"?"recent":"default",keysCollapsed:z.keysCollapsed===!0,projectFilter:typeof z.projectFilter==="string"&&z.projectFilter.length>0?z.projectFilter:null}}function wT(J,z){if(J.size!==z.size)return!1;for(let[Y,Z]of J){let G=z.get(Y);if(!G||!$z(Z,G))return!1}return!0}function PT(J){let z=J?.activity;if(!z||typeof z!=="object"||Array.isArray(z))return null;let Y=new Map;for(let[Z,G]of Object.entries(z)){let X=G;if(typeof X?.mtimeMs!=="number"||typeof X.completionAt!=="number")return null;if(X.completionId!==null&&typeof X.completionId!=="string")return null;Y.set(Z,{mtimeMs:X.mtimeMs,completionId:X.completionId,completionAt:X.completionAt})}return Y}function hT(J,z){if(J.size!==z.size)return!1;for(let[Y,Z]of J){let G=z.get(Y);if(!G||G.mtimeMs!==Z.mtimeMs||G.completionId!==Z.completionId||G.completionAt!==Z.completionAt)return!1}return!0}class AJ{client;tasksAcc;setTasks;activeTaskAcc;setActiveTaskSig;updateAcc;setUpdateSig;daemonVersionAcc;setDaemonVersionSig;engineStateAcc;setEngineStateSig;taskJobsAcc;setTaskJobsSig;worktreeChangesAcc;setWorktreeChangesSig;transcriptActivityAcc;setTranscriptActivitySig;uiPrefsAcc;setUiPrefsSig;keybindingsRevAcc;setKeybindingsRevSig;connectionStateAcc;setConnectionState;ensureReachable;role;channels;subscribesTasks;reconnecting=!1;constructor(J,z={}){this.client=J;let[Y,Z]=p([]),[G,X]=p(null),[Q,H]=p(null),[f,j]=p(null),[V,B]=p(new Map),[K,L]=p(new Map),[A,O]=p(null),[R,u]=p(null),[P,S]=p(null),[g,M]=p(null),[T,d]=p("online");this.tasksAcc=Y,this.setTasks=(i)=>Z(()=>i),this.activeTaskAcc=G,this.setActiveTaskSig=(i)=>X(()=>i),this.updateAcc=Q,this.setUpdateSig=(i)=>H(()=>i),this.daemonVersionAcc=f,this.setDaemonVersionSig=(i)=>j(()=>i),this.engineStateAcc=V,this.setEngineStateSig=(i)=>B(()=>i),this.taskJobsAcc=K,this.setTaskJobsSig=(i)=>L(()=>i),this.worktreeChangesAcc=A,this.setWorktreeChangesSig=(i)=>O(()=>i),this.transcriptActivityAcc=R,this.setTranscriptActivitySig=(i)=>u(()=>i),this.uiPrefsAcc=P,this.setUiPrefsSig=(i)=>S(()=>i),this.keybindingsRevAcc=g,this.setKeybindingsRevSig=(i)=>M(()=>i),this.connectionStateAcc=T,this.setConnectionState=(i)=>d(()=>i),this.ensureReachable=z.ensureReachable??wG,this.role=z.role??"pane",this.channels=z.channels,this.subscribesTasks=!z.channels||z.channels.includes("task.snapshot"),this.client.on("*",(i)=>this.handleEvent(i.name,i.payload)),this.client.onLifecycle("close",()=>{if(this.setConnectionState("disconnected"),this.role==="pane")ZY("orch","daemon socket closed \u2014 starting non-spawning reconnect loop"),this.reconnectLoop()})}async reconnectLoop(){if(this.reconnecting)return;this.reconnecting=!0;let J=500,z=0;while(!this.client.isDisposed){if(await new Promise((Y)=>setTimeout(Y,J)),this.client.isDisposed)break;z++;try{await this.init(),ZY("orch",`reconnected and re-subscribed after ${z} attempt(s) \u2014 task list re-synced`),this.reconnecting=!1;return}catch(Y){if(z===1||z%10===0)JJ("orch-reconnect",Y);J=Math.min(J*2,3000)}}this.reconnecting=!1}async init(){let J=await this.client.request("hello",{protocolVersion:sJ,minProtocolVersion:NY}),z=typeof J.protocolVersion==="number"?J.protocolVersion:sJ,Y=typeof J.minProtocolVersion==="number"?J.minProtocolVersion:z;if(!_Q({localVersion:sJ,localMin:NY,remoteVersion:z,remoteMin:Y}))throw Error(`kobe daemon is protocol v${z} (min v${Y}); this client is v${sJ} (min v${NY}). Restart the daemon (\`kobe daemon restart\`) or upgrade kobe.`);if(this.setDaemonVersionSig(typeof J.kobeVersion==="string"?J.kobeVersion:null),J.tasks&&this.subscribesTasks)this.setTasks(J.tasks.map(DQ));if(await this.client.subscribe({role:this.role,channels:this.channels}),J.capabilities?.includes("worktree.changes")){if(this.worktreeChangesAcc()===null)this.setWorktreeChangesSig(new Map)}else this.setWorktreeChangesSig(null);if(J.capabilities?.includes("transcript.activity")){if(this.transcriptActivityAcc()===null)this.setTranscriptActivitySig(new Map)}else this.setTranscriptActivitySig(null);this.setConnectionState("online"),ZY("orch",`subscribed as ${this.role} (${this.tasksAcc().length} tasks)`)}connectionStateSignal(){return this.connectionStateAcc}async manualReconnect(){this.client.forceDisconnect(),await this.ensureReachable(),await this.init()}dispose(){this.client.close()}tasksSignal(){return this.tasksAcc}activeTaskSignal(){return this.activeTaskAcc}updateSignal(){return this.updateAcc}daemonVersionSignal(){return this.daemonVersionAcc}daemonStaleSignal(){return()=>RV(this.daemonVersionAcc()??void 0,J1)}engineStateSignal(){return this.engineStateAcc}taskJobsSignal(){return this.taskJobsAcc}worktreeChangesSignal(){return this.worktreeChangesAcc}transcriptActivitySignal(){return this.transcriptActivityAcc}uiPrefsSignal(){return this.uiPrefsAcc}keybindingsRevSignal(){return this.keybindingsRevAcc}listTasks(){return this.tasksAcc()}getTask(J){return this.tasksAcc().find((z)=>z.id===J)}subscribeTasks(J){try{J(this.listTasks())}catch(Y){console.error("[kobe RemoteOrchestrator] task listener threw on subscribe:",Y)}let z=!0;return BZ((Y)=>{return _0(()=>{let Z=this.tasksAcc();if(z){z=!1;return}try{J(Z)}catch(G){console.error("[kobe RemoteOrchestrator] task listener threw:",G)}}),Y})}async createTask(J){let{modelEffort:z,...Y}=J,Z=await this.client.request("task.create",{...Y,effort:z});return DQ(Z.task)}async ensureMainTask(J){let z=await this.client.request("task.ensureMain",{repo:J});return DQ(z.task)}async ensureWorktree(J){return(await this.client.request("task.ensureWorktree",{taskId:String(J)})).worktreePath}async forgetProject(J){await this.client.request("project.forget",{repo:J})}async setTitle(J,z){await this.client.request("task.rename",{taskId:String(J),title:z})}async setBranch(J,z){await this.client.request("task.setBranch",{taskId:String(J),branch:z})}async setVendor(J,z){await this.client.request("task.setVendor",{taskId:String(J),vendor:z})}async setPinned(J,z){await this.client.request("task.pin",{taskId:String(J),pinned:z})}async moveTask(J,z){await this.client.request("task.move",{taskId:String(J),direction:z<0?"up":"down"})}async setArchived(J,z){await this.client.request("task.archive",{taskId:String(J),archived:z})}async setStatus(J,z){await this.client.request("task.status",{taskId:String(J),status:z})}async deleteTask(J,z){await this.client.request("task.delete",{taskId:String(J),force:z?.force})}async discoverAdoptableWorktrees(J){return(await this.client.request("worktree.discoverAdoptable",{repo:J})).worktrees}async adoptWorktree(J){let z=await this.client.request("worktree.adopt",J);return DQ(z.task)}async setActiveTask(J){await this.client.request("task.setActive",{taskId:J===null?null:String(J)})}handleEvent(J,z){if(J==="task.snapshot"){let Y=z?.tasks;if(Array.isArray(Y))this.setTasks(Y.map(DQ)),this.pruneEngineState(Y),this.pruneTaskJobs(Y);else JJ("orch",`dropped task.snapshot event: tasks is not an array (got ${LY(Y)})`);return}if(J==="active-task"){let Y=z?.taskId;this.setActiveTaskSig(typeof Y==="string"?Y:null);return}if(J==="update"){let Y=z?.info;this.setUpdateSig(Y??null);return}if(J==="engine-state"){let Y=z;if(typeof Y?.taskId!=="string"||typeof Y.state!=="string"){JJ("orch",`dropped engine-state event: taskId/state must be strings (taskId=${LY(Y?.taskId)}, state=${LY(Y?.state)})`);return}let Z=new Map(this.engineStateAcc());if(Y.state==="idle")Z.delete(Y.taskId);else Z.set(Y.taskId,{state:Y.state,detail:Y.detail,at:typeof Y.at==="number"?Y.at:0});this.setEngineStateSig(Z);return}if(J==="task.jobs"){let Y=z;if(typeof Y?.taskId!=="string"||Y.kind!=="ensureWorktree"){JJ("orch",`dropped task.jobs event: expected string taskId + kind "ensureWorktree" (taskId=${LY(Y?.taskId)}, kind=${LY(Y?.kind)})`);return}let Z=this.taskJobsAcc();if(Y.phase==="running"){let G=new Map(Z);G.set(Y.taskId,{kind:Y.kind}),this.setTaskJobsSig(G);return}if((Y.phase==="done"||Y.phase==="error")&&Z.has(Y.taskId)){let G=new Map(Z);G.delete(Y.taskId),this.setTaskJobsSig(G)}return}if(J==="worktree.changes"){let Y=uT(z);if(!Y){JJ("orch",`dropped worktree.changes event: malformed changes payload (${LY(z)})`);return}let Z=this.worktreeChangesAcc();if(Z&&wT(Z,Y))return;this.setWorktreeChangesSig(Y);return}if(J==="transcript.activity"){let Y=PT(z);if(!Y){JJ("orch",`dropped transcript.activity event: malformed activity payload (${LY(z)})`);return}let Z=this.transcriptActivityAcc();if(Z&&hT(Z,Y))return;this.setTranscriptActivitySig(Y);return}if(J==="ui-prefs"){let Y=ET(z);if(!Y){let Z=z?.theme;JJ("orch",`dropped ui-prefs event: theme must be a string (got ${LY(Z)})`);return}this.setUiPrefsSig(Y);return}if(J==="keybindings"){let Y=z;if(typeof Y?.rev!=="number"){JJ("orch",`dropped keybindings event: rev must be a number (got ${LY(Y?.rev)})`);return}this.setKeybindingsRevSig(Y.rev);return}}pruneEngineState(J){let z=this.engineStateAcc();if(z.size===0)return;let Y=new Set(J.map((G)=>G.id)),Z=null;for(let G of z.keys()){if(Y.has(G))continue;if(!Z)Z=new Map(z);Z.delete(G)}if(Z)this.setEngineStateSig(Z)}pruneTaskJobs(J){let z=this.taskJobsAcc();if(z.size===0)return;let Y=new Set(J.map((G)=>G.id)),Z=null;for(let G of z.keys()){if(Y.has(G))continue;if(!Z)Z=new Map(z);Z.delete(G)}if(Z)this.setTaskJobsSig(Z)}}function DQ(J){return{id:FX(J.id),title:J.title,repo:J.repo,branch:J.branch,worktreePath:J.worktreePath,kind:J.kind,status:J.status,archived:J.archived,pinned:J.pinned,vendor:J.vendor,prStatus:J.prStatus,modelEffort:J.modelEffort,createdAt:J.createdAt,updatedAt:J.updatedAt}}var _Y=C(()=>{GZ();CJ();YZ();W1();xG();zz();NJ()});function uL(J){let z=J[Fz];if(!z){if(Object.defineProperty(J,Fz,{value:z=new Proxy(J,cT)}),!Array.isArray(J)){let Y=Object.keys(J),Z=Object.getOwnPropertyDescriptors(J),G=Object.getPrototypeOf(J),X=G!==null&&J!==null&&typeof J==="object"&&!Array.isArray(J)&&G!==Object.prototype;if(X){let Q=Object.getOwnPropertyDescriptors(G);Y.push(...Object.keys(Q)),Object.assign(Z,Q)}for(let Q=0,H=Y.length;Q<H;Q++){let f=Y[Q];if(X&&f==="constructor")continue;if(Z[f].get)Object.defineProperty(J,f,{configurable:!0,enumerable:Z[f].enumerable,get:Z[f].get.bind(z)})}}}return z}function ff(J){let z;return J!=null&&typeof J==="object"&&(J[Fz]||!(z=Object.getPrototypeOf(J))||z===Object.prototype||Array.isArray(J))}function FQ(J,z=new Set){let Y,Z,G,X;if(Y=J!=null&&J[N8])return Y;if(!ff(J)||z.has(J))return J;if(Array.isArray(J)){if(Object.isFrozen(J))J=J.slice(0);else z.add(J);for(let Q=0,H=J.length;Q<H;Q++)if(G=J[Q],(Z=FQ(G,z))!==G)J[Q]=Z}else{if(Object.isFrozen(J))J=Object.assign({},J);else z.add(J);let Q=Object.keys(J),H=Object.getOwnPropertyDescriptors(J);for(let f=0,j=Q.length;f<j;f++){if(X=Q[f],H[X].get)continue;if(G=J[X],(Z=FQ(G,z))!==G)J[X]=Z}}return J}function jf(J,z){let Y=J[z];if(!Y)Object.defineProperty(J,z,{value:Y=Object.create(null)});return Y}function MQ(J,z,Y){if(J[z])return J[z];let[Z,G]=p(Y,{equals:!1,internal:!0});return Z.$=G,J[z]=Z}function vT(J,z){let Y=Reflect.getOwnPropertyDescriptor(J,z);if(!Y||Y.get||!Y.configurable||z===Fz||z===iG)return Y;return delete Y.value,delete Y.writable,Y.get=()=>J[Fz][z],Y}function EL(J){xq()&&MQ(jf(J,iG),xL)()}function mT(J){return EL(J),Reflect.ownKeys(J)}function Bf(J,z,Y,Z=!1){if(z==="__proto__"){console.warn('Refusing to set "__proto__" on a store.');return}if(!Z&&J[z]===Y)return;let G=J[z],X=J.length;if(TL.onStoreNodeUpdate&&TL.onStoreNodeUpdate(J,z,Y,G),Y===void 0){if(delete J[z],J[FY]&&J[FY][z]&&G!==void 0)J[FY][z].$()}else if(J[z]=Y,J[FY]&&J[FY][z]&&G===void 0)J[FY][z].$();let Q=jf(J,iG),H;if(H=MQ(Q,z,G))H.$(()=>Y);if(Array.isArray(J)&&J.length!==X){for(let f=J.length;f<X;f++)(H=Q[f])&&H.$();(H=MQ(Q,"length",X))&&H.$(J.length)}(H=Q[xL])&&H.$()}function wL(J,z){let Y=Object.keys(z);for(let Z=0;Z<Y.length;Z+=1){let G=Y[Z];if(PL(G))continue;Bf(J,G,z[G])}}function PL(J){return J==="__proto__"||J==="constructor"||J==="prototype"}function dT(J,z){if(typeof z==="function")z=z(J);if(z=FQ(z),Array.isArray(z)){if(J===z)return;let Y=0,Z=z.length;for(;Y<Z;Y++){let G=z[Y];if(J[Y]!==G)Bf(J,Y,G)}Bf(J,"length",Z)}else wL(J,z)}function LQ(J,z,Y=[]){let Z,G=J;if(z.length>1){Z=z.shift();let Q=typeof Z,H=Array.isArray(J);if(Q==="string"&&(Z==="__proto__"||z.length>1&&PL(Z))){console.warn(`Refusing to traverse unsafe key "${Z}" on a store.`);return}if(Array.isArray(Z)){for(let f=0;f<Z.length;f++)LQ(J,[Z[f]].concat(z),Y);return}else if(H&&Q==="function"){for(let f=0;f<J.length;f++)if(Z(J[f],f))LQ(J,[f].concat(z),Y);return}else if(H&&Q==="object"){let{from:f=0,to:j=J.length-1,by:V=1}=Z;for(let B=f;B<=j;B+=V)LQ(J,[B].concat(z),Y);return}else if(z.length>1){LQ(J[Z],z,[Z].concat(Y));return}G=J[Z],Y=[Z].concat(Y)}let X=z[0];if(typeof X==="function"){if(X=X(G,Y),X===G)return}if(Z===void 0&&X==null)return;if(X=FQ(X),Z===void 0||ff(G)&&ff(X)&&!Array.isArray(X))wL(G,X);else Bf(J,Z,X)}function _z(...[J,z]){let Y=FQ(J||{}),Z=Array.isArray(Y);if(typeof Y!=="object"&&typeof Y!=="function")throw Error(`Unexpected type ${typeof Y} received when initializing 'createStore'. Expected an object.`);let G=uL(Y);qK.registerGraph({value:Y,name:z&&z.name});function X(...Q){Tq(()=>{Z&&Q.length===1?dT(Y,Q[0]):LQ(Y,Q)})}return[G,X]}var N8,iG,FY,xL,TL,cT,pa;var lG=C(()=>{W1();N8=Symbol("store-raw"),iG=Symbol("store-node"),FY=Symbol("store-has"),xL=Symbol("store-self"),TL={onStoreNodeUpdate:null};cT={get(J,z,Y){if(z===N8)return J;if(z===Fz)return Y;if(z===Iq)return EL(J),Y;let Z=jf(J,iG),G=Z[z],X=G?G():J[z];if(z===iG||z===FY||z==="__proto__")return X;if(!G){let Q=Object.getOwnPropertyDescriptor(J,z);if(xq()&&(typeof X!=="function"||J.hasOwnProperty(z))&&!(Q&&Q.get))X=MQ(Z,z,X)()}return ff(X)?uL(X):X},has(J,z){if(z===N8||z===Fz||z===Iq||z===iG||z===FY||z==="__proto__")return!0;return xq()&&MQ(jf(J,FY),z)(),z in J},set(){return console.warn("Cannot mutate a Store directly"),!0},deleteProperty(){return console.warn("Cannot mutate a Store directly"),!0},ownKeys:mT,getOwnPropertyDescriptor:vT};pa=Symbol("store-root")});function Wf(J){let z=Pz();return{provider:(Y)=>{let Z=J.init(Y);return b(Y0,{get when(){return Z.ready===void 0||Z.ready===!0},get children(){return b(z.Provider,{value:Z,get children(){return Y.children}})}})},use(){let Y=mJ(z);if(!Y)throw Error(`${J.name} context must be used within a context provider`);return Y}}}var C8=C(()=>{w();w();W1()});import{RGBA as PZ}from"@opentui/core";function iT(){return Object.keys(VJ.themes)}function OQ(J){return Boolean(VJ.themes[J])}function b8(J,z){if(!J)return!1;if(!z||typeof z!=="object"||!z.theme)return!1;return hZ("themes",{...VJ.themes,[J]:z}),!0}function k8(J,z="dark"){let Y=J.defs??{};function Z(f,j=[]){if(typeof f==="string"){if(f==="transparent"||f==="none")return PZ.fromInts(0,0,0,0);if(f.startsWith("#"))return PZ.fromHex(f);if(j.includes(f))return PZ.fromInts(0,0,0);let V=Y[f]??J.theme[f];if(V===void 0)return PZ.fromInts(0,0,0);return Z(V,[...j,f])}return Z(f[z],j)}let G={};for(let[f,j]of Object.entries(J.theme))G[f]=Z(j);let X=G.text??PZ.fromHex("#ffffff"),Q=G.background??PZ.fromHex("#000000");return{...{primary:G.primary??X,secondary:G.secondary??X,accent:G.accent??G.primary??X,error:G.error??X,warning:G.warning??X,success:G.success??X,info:G.info??X,text:X,textMuted:G.textMuted??X,background:Q,backgroundPanel:G.backgroundPanel??Q,backgroundElement:G.backgroundElement??Q,backgroundMenu:G.backgroundMenu??G.backgroundElement??Q,backgroundDialog:G.backgroundDialog??G.backgroundPanel??Q,border:G.border??X,borderActive:G.borderActive??G.border??X,borderSubtle:G.borderSubtle??G.border??X,diffAdded:G.diffAdded??G.success??X,diffRemoved:G.diffRemoved??G.error??X,diffContext:G.diffContext??G.textMuted??X,diffHunkHeader:G.diffHunkHeader??G.textMuted??X,diffAddedBg:G.diffAddedBg??Q,diffRemovedBg:G.diffRemovedBg??Q,selectedListItemText:G.selectedListItemText??Q},...G}}var nT,vZ,VJ,hZ,w0,hL;var h1=C(()=>{w();W1();lG();C8();oq();sq();tq();eq();JH();zH();YH();nT={claude:VG,conductor:KG,nord:DG,opencode:LG,dracula:UG,tokyonight:MG,"osaka-jade":FG},vZ=["primary","success","info"],[VJ,hZ]=_z({themes:{...nT},active:"claude",mode:"dark",transparentBackground:!1,focusAccent:"primary"});({use:w0,provider:hL}=Wf({name:"Theme",init:(J)=>{if(J.mode)hZ("mode",J.mode);if(J.theme&&OQ(J.theme))hZ("active",J.theme);let z=WJ(),Y=U0(()=>{let G=VJ.themes[VJ.active];if(G)return k8(G,VJ.mode);let X=VJ.themes.claude??VJ.themes.opencode??Object.values(VJ.themes)[0];if(!X)return k8({theme:{background:"#000000",text:"#ffffff"}},VJ.mode);return k8(X,VJ.mode)}),Z=U0(()=>{let G=Y(),X=G[VJ.focusAccent]??G.primary,Q={...G,focusAccent:X};if(!VJ.transparentBackground)return Q;let H=PZ.fromInts(0,0,0,0);return{...Q,background:H,backgroundPanel:H}});return _0(()=>{z?.setBackgroundColor(Z().background)}),{theme:new Proxy({},{get(G,X){let Q=Z();return Q[X]??Q.text}}),get selected(){return VJ.active},get transparentBackground(){return VJ.transparentBackground},get focusAccent(){return VJ.focusAccent},mode(){return VJ.mode},set(G){if(!OQ(G))return!1;return hZ("active",G),!0},setMode(G){hZ("mode",G)},setTransparentBackground(G){hZ("transparentBackground",G)},setFocusAccent(G){hZ("focusAccent",G)},all(){return iT()},has(G){return OQ(G)}}}}))});var vL,mL;var cL=C(()=>{vL={cancel:"Cancel",confirm:"Confirm",paneCrash:{title:"This pane crashed",hint:"Reload it from the Tasks pane (the error was logged to client.log)."},rename:{defaultTitle:"Rename task",defaultFieldLabel:"title",footerHint:"enter {submitLabel} \xB7 esc cancel",defaultSubmitLabel:"rename"}},mL={cancel:"\u53D6\u6D88",confirm:"\u786E\u8BA4",paneCrash:{title:"\u6B64\u9762\u677F\u5DF2\u5D29\u6E83",hint:"\u8BF7\u4ECE\u4EFB\u52A1\u9762\u677F\u91CD\u65B0\u52A0\u8F7D\uFF08\u9519\u8BEF\u5DF2\u8BB0\u5F55\u5230 client.log\uFF09\u3002"},rename:{defaultTitle:"\u91CD\u547D\u540D\u4EFB\u52A1",defaultFieldLabel:"\u540D\u79F0",footerHint:"enter {submitLabel} \xB7 esc \u53D6\u6D88",defaultSubmitLabel:"\u91CD\u547D\u540D"}}});var dL,nL;var iL=C(()=>{dL={tabs:{all:"All",changes:"Changes"},actions:{zen:"Zen",createPR:"Create PR"},legend:{changes:"M modified \xB7 A added \xB7 D deleted \xB7 ? untracked"},empty:{noTask:"(no task \u2014 press n to create)",noFiles:"(empty worktree)",noChanges:"(no changes \u2014 clean worktree)"},error:{retryHint:"press r to retry",notGitRepo:"not a git repository",pathMissing:"worktree path is missing",permissionDenied:"permission denied",gitNotInstalled:"git is not installed",gitFailed:"git command failed"},footer:{openHint:"\u21B5 open"}},nL={tabs:{all:"\u5168\u90E8",changes:"\u6539\u52A8"},actions:{zen:"\u4E13\u6CE8\u6A21\u5F0F",createPR:"\u521B\u5EFA PR"},legend:{changes:"M \u5DF2\u4FEE\u6539 \xB7 A \u5DF2\u6DFB\u52A0 \xB7 D \u5DF2\u5220\u9664 \xB7 ? \u672A\u8DDF\u8E2A"},empty:{noTask:"\uFF08\u6682\u65E0\u4EFB\u52A1 \u2014 \u6309 n \u521B\u5EFA\uFF09",noFiles:"\uFF08worktree \u4E3A\u7A7A\uFF09",noChanges:"\uFF08\u65E0\u6539\u52A8 \u2014 worktree \u5E72\u51C0\uFF09"},error:{retryHint:"\u6309 r \u91CD\u8BD5",notGitRepo:"\u4E0D\u662F git \u4ED3\u5E93",pathMissing:"worktree \u8DEF\u5F84\u4E0D\u5B58\u5728",permissionDenied:"\u6743\u9650\u4E0D\u8DB3",gitNotInstalled:"\u672A\u5B89\u88C5 git",gitFailed:"git \u547D\u4EE4\u5931\u8D25"},footer:{openHint:"\u21B5 \u6253\u5F00"}}});var lL,$L;var aL=C(()=>{lL={title:"kobe \u2014 keybindings",esc:"esc"},$L={title:"kobe \u2014 \u5FEB\u6377\u952E",esc:"esc"}});var _L,pL;var rL=C(()=>{_L={empty:"No engine history for this task.",loading:"loading\u2026",sessionLabel:"Session",archivedTag:"ARCHIVED",hint:"[ ] session \xB7 j/k scroll \xB7 \u23CE expand",hintExpanded:"[ ] session \xB7 j/k scroll \xB7 \u23CE collapse",role:{user:"USER",assistant:"ASSISTANT",system:"SYSTEM"},thinking:"thinking"},pL={empty:"\u6B64\u4EFB\u52A1\u6CA1\u6709\u5F15\u64CE\u5386\u53F2\u8BB0\u5F55\u3002",loading:"\u52A0\u8F7D\u4E2D\u2026",sessionLabel:"\u4F1A\u8BDD",archivedTag:"\u5DF2\u5F52\u6863",hint:"[ ] \u4F1A\u8BDD \xB7 j/k \u6EDA\u52A8 \xB7 \u23CE \u5C55\u5F00",hintExpanded:"[ ] \u4F1A\u8BDD \xB7 j/k \u6EDA\u52A8 \xB7 \u23CE \u6536\u8D77",role:{user:"\u7528\u6237",assistant:"\u52A9\u624B",system:"\u7CFB\u7EDF"},thinking:"\u601D\u8003"}});var oL,sL;var tL=C(()=>{oL={category:{Global:"Global",Sidebar:"Sidebar",Workspace:"Workspace",Navigation:"Navigation","Tasks pane":"Tasks pane","Workspace (tmux)":"Workspace (tmux)",Files:"Files",Terminal:"Terminal",Dialog:"Dialog"},desc:{"help.open":"Show keybindings help","task.new":"New task","task.openEditor":"Open active task worktree in editor","settings.open":"Open settings","settings.open.sidebar":"Open settings","app.quit":"Quit (with confirm)","focus.sidebar":"Back to sidebar (tasks)","focus.numeric":"Jump to pane (h=sidebar, j=workspace, k=files, l=terminal)","chat.interrupt":"Interrupt current turn (esc while streaming)","sidebar.nav":"Move cursor up/down","sidebar.select":"Open the selected task","sidebar.goto":"Top / bottom of list (gg or shift-G)","sidebar.rename":"Rename task","sidebar.archive":"Toggle archive","sidebar.localMerge":"Local merge task into parent repo (Shift+M)","sidebar.pin":"Pin / unpin task at top (Shift+P)","sidebar.view":"Switch view (Working session \u2194 Archives)","sidebar.sort":"Switch task sort (default \u2194 recent)","sidebar.projectFilter":"Cycle task project filter","sidebar.delete":"Delete task (with confirm)","sidebar.search.enter":"Search tasks (fuzzy filter)","sidebar.search.nav":"Move highlight in search results","sidebar.search.submit":"Select search match and exit search","sidebar.search.cancel":"Cancel search (restore prior selection)","tasks.openWorktree":"Open selected task's worktree in your editor","tasks.renameBranch":"Rename the selected task's git branch","tasks.cycleEngine":"Cycle engine vendor (claude \u2194 codex \u2194 \u2026) \u2014 applies on reopen","tasks.update":"Open the update page (when a new version is available)","tasks.focusEngine":"Focus the engine pane of the current window","tasks.toggleKeys":"Collapse / expand the keys legend","tmux.quickTask":"Quick new task (tmux prefix, then f)","tmux.engineTab":"Open the engine in a new tab (tmux prefix, then t)","tmux.layout.workspaceSplit":"Add a temporary workspace split (tmux prefix, then s)","tmux.layout.workspaceClose":"Close the focused temporary workspace split (tmux prefix, then x)","tmux.layout.workspaceReset":"Close all temporary workspace splits (tmux prefix, then r)","tmux.layout.tasksToggle":"Hide / restore the Tasks pane (tmux prefix, then a)","tmux.layout.opsToggle":"Toggle the file/Ops pane (tmux prefix, then o)","tmux.layout.terminalToggle":"Hide / restore the terminal pane (tmux prefix, then z)","tmux.layout.zenToggle":"Zen mode \u2014 collapse to the engine pane (tmux prefix, then space)","chat.send":"Send message (composer)","chat.newline":"Newline in composer","chat.cycle-mode":"Cycle permission mode (composer)","chat.steer":"Steer (interrupt + send) \u2014 mid-stream only","chat.tab.new":"New chat tab","chat.fork.new":"Quick-fork: create child task seeded with current repo/branch/model","chat.session.resume":"Resume a prior session in this task's worktree","chat.tab.close":"Close chat tab","chat.tab.rename":"Rename active chat tab","chat.tab.cycle-next":"Next chat tab","chat.tab.cycle-prev":"Previous chat tab","chat.question.nav":"Move highlight in question picker","chat.question.toggle":"Toggle highlighted option in question picker","chat.question.submit":"Advance / submit question picker","chat.question.pick-number":"Pick option by number in question picker","files.nav":"Move cursor up/down","files.hierarchy":"Collapse / expand tree level","files.open":"Open file in nvim (diff vs HEAD when changed)","files.tab":"Switch tab (cycle All / Changes)","files.refresh":"Refresh","files.openExternal":"Open file in system default app (audio / video / pdf preview)","files.mention":"Inject @<path> mention into the engine pane","files.createPR":"Create PR from the current task","terminal.scroll-up":"Scroll scrollback up","terminal.scroll-down":"Scroll scrollback down","terminal.reset":"Reset terminal \u2014 kill the current shell and respawn","dialog.cancel":"Close the top dialog (esc)","dialog.newtask.tab.cycle":"Switch New Task tab (Existing / New Repo)"}},sL={category:{Global:"\u5168\u5C40",Sidebar:"\u4FA7\u8FB9\u680F",Workspace:"\u5DE5\u4F5C\u533A",Navigation:"\u5BFC\u822A","Tasks pane":"\u4EFB\u52A1\u9762\u677F","Workspace (tmux)":"\u5DE5\u4F5C\u533A\uFF08tmux\uFF09",Files:"\u6587\u4EF6",Terminal:"\u7EC8\u7AEF",Dialog:"\u5BF9\u8BDD\u6846"},desc:{"help.open":"\u663E\u793A\u5FEB\u6377\u952E\u5E2E\u52A9","task.new":"\u65B0\u5EFA\u4EFB\u52A1","task.openEditor":"\u5728\u7F16\u8F91\u5668\u4E2D\u6253\u5F00\u5F53\u524D\u4EFB\u52A1\u7684 worktree","settings.open":"\u6253\u5F00\u8BBE\u7F6E","settings.open.sidebar":"\u6253\u5F00\u8BBE\u7F6E","app.quit":"\u9000\u51FA\uFF08\u9700\u786E\u8BA4\uFF09","focus.sidebar":"\u8FD4\u56DE\u4FA7\u8FB9\u680F\uFF08\u4EFB\u52A1\u5217\u8868\uFF09","focus.numeric":"\u8DF3\u8F6C\u5230\u9762\u677F\uFF08h=\u4FA7\u8FB9\u680F\uFF0Cj=\u5DE5\u4F5C\u533A\uFF0Ck=\u6587\u4EF6\uFF0Cl=\u7EC8\u7AEF\uFF09","chat.interrupt":"\u4E2D\u65AD\u5F53\u524D\u8F6E\u6B21\uFF08\u6D41\u5F0F\u8F93\u51FA\u4E2D\u6309 esc\uFF09","sidebar.nav":"\u4E0A\u4E0B\u79FB\u52A8\u5149\u6807","sidebar.select":"\u6253\u5F00\u9009\u4E2D\u7684\u4EFB\u52A1","sidebar.goto":"\u8DF3\u5230\u5217\u8868\u9876\u90E8 / \u5E95\u90E8\uFF08gg \u6216 shift-G\uFF09","sidebar.rename":"\u91CD\u547D\u540D\u4EFB\u52A1","sidebar.archive":"\u5207\u6362\u5F52\u6863\u72B6\u6001","sidebar.localMerge":"\u5C06\u4EFB\u52A1\u672C\u5730\u5408\u5E76\u5230\u7236\u4ED3\u5E93\uFF08Shift+M\uFF09","sidebar.pin":"\u7F6E\u9876 / \u53D6\u6D88\u7F6E\u9876\u4EFB\u52A1\uFF08Shift+P\uFF09","sidebar.view":"\u5207\u6362\u89C6\u56FE\uFF08\u5DE5\u4F5C\u4F1A\u8BDD \u2194 \u5F52\u6863\uFF09","sidebar.sort":"\u5207\u6362\u4EFB\u52A1\u6392\u5E8F\u65B9\u5F0F\uFF08\u9ED8\u8BA4 \u2194 \u6700\u8FD1\uFF09","sidebar.projectFilter":"\u5FAA\u73AF\u5207\u6362\u4EFB\u52A1\u9879\u76EE\u7B5B\u9009","sidebar.delete":"\u5220\u9664\u4EFB\u52A1\uFF08\u9700\u786E\u8BA4\uFF09","sidebar.search.enter":"\u641C\u7D22\u4EFB\u52A1\uFF08\u6A21\u7CCA\u8FC7\u6EE4\uFF09","sidebar.search.nav":"\u5728\u641C\u7D22\u7ED3\u679C\u4E2D\u79FB\u52A8\u9AD8\u4EAE","sidebar.search.submit":"\u9009\u4E2D\u641C\u7D22\u5339\u914D\u9879\u5E76\u9000\u51FA\u641C\u7D22","sidebar.search.cancel":"\u53D6\u6D88\u641C\u7D22\uFF08\u6062\u590D\u4E4B\u524D\u7684\u9009\u4E2D\u9879\uFF09","tasks.openWorktree":"\u5728\u7F16\u8F91\u5668\u4E2D\u6253\u5F00\u9009\u4E2D\u4EFB\u52A1\u7684 worktree","tasks.renameBranch":"\u91CD\u547D\u540D\u9009\u4E2D\u4EFB\u52A1\u7684 git \u5206\u652F","tasks.cycleEngine":"\u5FAA\u73AF\u5207\u6362\u5F15\u64CE\u5382\u5546\uFF08claude \u2194 codex \u2194 \u2026\uFF09\u2014\u2014\u91CD\u65B0\u6253\u5F00\u540E\u751F\u6548","tasks.update":"\u6253\u5F00\u66F4\u65B0\u9875\u9762\uFF08\u6709\u65B0\u7248\u672C\u65F6\uFF09","tasks.focusEngine":"\u805A\u7126\u5F53\u524D\u7A97\u53E3\u7684\u5F15\u64CE\u9762\u677F","tasks.toggleKeys":"\u6298\u53E0 / \u5C55\u5F00\u5FEB\u6377\u952E\u8BF4\u660E","tmux.quickTask":"\u5FEB\u901F\u65B0\u5EFA\u4EFB\u52A1\uFF08tmux \u524D\u7F00\uFF0C\u7136\u540E\u6309 f\uFF09","tmux.engineTab":"\u5728\u65B0\u6807\u7B7E\u9875\u4E2D\u6253\u5F00\u5F15\u64CE\uFF08tmux \u524D\u7F00\uFF0C\u7136\u540E\u6309 t\uFF09","tmux.layout.workspaceSplit":"\u6DFB\u52A0\u4E34\u65F6\u5DE5\u4F5C\u533A\u5206\u5C4F\uFF08tmux \u524D\u7F00\uFF0C\u7136\u540E\u6309 s\uFF09","tmux.layout.workspaceClose":"\u5173\u95ED\u5F53\u524D\u805A\u7126\u7684\u4E34\u65F6\u5DE5\u4F5C\u533A\u5206\u5C4F\uFF08tmux \u524D\u7F00\uFF0C\u7136\u540E\u6309 x\uFF09","tmux.layout.workspaceReset":"\u5173\u95ED\u6240\u6709\u4E34\u65F6\u5DE5\u4F5C\u533A\u5206\u5C4F\uFF08tmux \u524D\u7F00\uFF0C\u7136\u540E\u6309 r\uFF09","tmux.layout.tasksToggle":"\u9690\u85CF / \u6062\u590D\u4EFB\u52A1\u9762\u677F\uFF08tmux \u524D\u7F00\uFF0C\u7136\u540E\u6309 a\uFF09","tmux.layout.opsToggle":"\u5207\u6362\u6587\u4EF6/Ops \u9762\u677F\uFF08tmux \u524D\u7F00\uFF0C\u7136\u540E\u6309 o\uFF09","tmux.layout.terminalToggle":"\u9690\u85CF / \u6062\u590D\u7EC8\u7AEF\u9762\u677F\uFF08tmux \u524D\u7F00\uFF0C\u7136\u540E\u6309 z\uFF09","tmux.layout.zenToggle":"\u4E13\u6CE8\u6A21\u5F0F\u2014\u2014\u6298\u53E0\u5230\u5F15\u64CE\u9762\u677F\uFF08tmux \u524D\u7F00\uFF0C\u7136\u540E\u6309 space\uFF09","chat.send":"\u53D1\u9001\u6D88\u606F\uFF08\u8F93\u5165\u6846\uFF09","chat.newline":"\u5728\u8F93\u5165\u6846\u4E2D\u6362\u884C","chat.cycle-mode":"\u5FAA\u73AF\u5207\u6362\u6743\u9650\u6A21\u5F0F\uFF08\u8F93\u5165\u6846\uFF09","chat.steer":"\u5F15\u5BFC\uFF08\u4E2D\u65AD\u5E76\u53D1\u9001\uFF09\u2014\u2014\u4EC5\u9650\u6D41\u5F0F\u8F93\u51FA\u4E2D","chat.tab.new":"\u65B0\u5EFA\u804A\u5929\u6807\u7B7E\u9875","chat.fork.new":"\u5FEB\u901F\u6D3E\u751F\uFF1A\u4EE5\u5F53\u524D\u4ED3\u5E93/\u5206\u652F/\u6A21\u578B\u521B\u5EFA\u5B50\u4EFB\u52A1","chat.session.resume":"\u5728\u6B64\u4EFB\u52A1\u7684 worktree \u4E2D\u6062\u590D\u4E4B\u524D\u7684\u4F1A\u8BDD","chat.tab.close":"\u5173\u95ED\u804A\u5929\u6807\u7B7E\u9875","chat.tab.rename":"\u91CD\u547D\u540D\u5F53\u524D\u804A\u5929\u6807\u7B7E\u9875","chat.tab.cycle-next":"\u4E0B\u4E00\u4E2A\u804A\u5929\u6807\u7B7E\u9875","chat.tab.cycle-prev":"\u4E0A\u4E00\u4E2A\u804A\u5929\u6807\u7B7E\u9875","chat.question.nav":"\u5728\u63D0\u95EE\u9009\u62E9\u5668\u4E2D\u79FB\u52A8\u9AD8\u4EAE","chat.question.toggle":"\u5728\u63D0\u95EE\u9009\u62E9\u5668\u4E2D\u5207\u6362\u9AD8\u4EAE\u9009\u9879","chat.question.submit":"\u63A8\u8FDB / \u63D0\u4EA4\u63D0\u95EE\u9009\u62E9\u5668","chat.question.pick-number":"\u5728\u63D0\u95EE\u9009\u62E9\u5668\u4E2D\u6309\u6570\u5B57\u9009\u62E9\u9009\u9879","files.nav":"\u4E0A\u4E0B\u79FB\u52A8\u5149\u6807","files.hierarchy":"\u6298\u53E0 / \u5C55\u5F00\u6811\u5C42\u7EA7","files.open":"\u5728 nvim \u4E2D\u6253\u5F00\u6587\u4EF6\uFF08\u6709\u53D8\u66F4\u65F6\u663E\u793A\u4E0E HEAD \u7684\u5DEE\u5F02\uFF09","files.tab":"\u5207\u6362\u6807\u7B7E\u9875\uFF08\u5FAA\u73AF \u5168\u90E8 / \u53D8\u66F4\uFF09","files.refresh":"\u5237\u65B0","files.openExternal":"\u5728\u7CFB\u7EDF\u9ED8\u8BA4\u5E94\u7528\u4E2D\u6253\u5F00\u6587\u4EF6\uFF08\u97F3\u9891 / \u89C6\u9891 / pdf \u9884\u89C8\uFF09","files.mention":"\u5C06 @<path> \u63D0\u53CA\u6CE8\u5165\u5F15\u64CE\u9762\u677F","files.createPR":"\u4ECE\u5F53\u524D\u4EFB\u52A1\u521B\u5EFA PR","terminal.scroll-up":"\u5411\u4E0A\u6EDA\u52A8\u56DE\u6EDA","terminal.scroll-down":"\u5411\u4E0B\u6EDA\u52A8\u56DE\u6EDA","terminal.reset":"\u91CD\u7F6E\u7EC8\u7AEF\u2014\u2014\u5173\u95ED\u5F53\u524D shell \u5E76\u91CD\u65B0\u542F\u52A8","dialog.cancel":"\u5173\u95ED\u9876\u5C42\u5BF9\u8BDD\u6846\uFF08esc\uFF09","dialog.newtask.tab.cycle":"\u5207\u6362\u65B0\u5EFA\u4EFB\u52A1\u6807\u7B7E\u9875\uFF08\u73B0\u6709\u4ED3\u5E93 / \u65B0\u4ED3\u5E93\uFF09"}}});var eL,JF;var zF=C(()=>{eL={title:"New task",tabs:{existing:"For Existing",clone:"For New Repo",adopt:"Adopt Worktree"},field:{engine:"engine",repo:"repo",fromBranch:"from branch",gitUrl:"git url",parentDir:"parent dir",folderName:"folder name",baseBranch:"base branch",adoptFilter:"filter (path glob)"},placeholder:{folderName:"auto from url",adoptFilter:"* \u2014 type e.g. feature-* to narrow"},hint:{engineCycle:"ctrl+e",remembered:"(remembered \u2014 next clone defaults to this dir)",currentDir:"(current dir)",noBranchesFound:"(no local branches found \u2014 typed text will be used as ref)",noMatchBranch:"(no match \u2014 typed text will be used as ref)",scanningWorktrees:"scanning worktrees\u2026",legend:"\u2191\u2193 pick \xB7 tab next field \xB7 \u2190\u2192 switch \xB7 enter done \xB7 esc cancel"},picker:{moreAbove:"\u2191 {count} more",moreBelow:"\u2193 {count} more"},adopt:{repoLine:"repo: {path}",repoNone:"(none)",noUnlinked:"no unlinked worktrees \u2014 every git worktree here is already a task",noMatch:"no worktrees match the filter",hintSelected:"{count} selected \xB7 enter toggles \xB7 ctrl+a all \xB7 Create imports",hintDefault:"enter toggles \xB7 ctrl+a all \xB7 Create imports the highlighted row",summaryAll:"Adopted {count} worktree(s)",summaryPartial:"Adopted {done}/{total} worktrees \u2014 the rest failed (see log)",summaryNone:"Couldn't adopt any worktree: {error}"},clone:{progressFallback:"Cloning\u2026",progressInto:"Cloning into {target}\u2026"},button:{create:"[ Create ]",createFocused:"\u25B8 [ Create ]",cloning:"[ Cloning\u2026 ]"},error:{gitUrlRequired:"git URL is required",gitUrlInvalid:"does not look like a git URL: {url}",folderRequired:"folder name is required",folderHasSeparator:"folder name cannot contain path separators",parentRequired:"parent directory is required",parentNotFound:"parent directory does not exist: {path}",parentNotDir:"not a directory: {path}",targetExists:"target already exists: {path}",cloneFailed:"git clone failed: {error}",noAdoptable:"no adoptable worktrees to import"}},JF={title:"\u65B0\u5EFA\u4EFB\u52A1",tabs:{existing:"\u5DF2\u6709\u4ED3\u5E93",clone:"\u514B\u9686\u65B0\u4ED3\u5E93",adopt:"\u63A5\u7BA1 Worktree"},field:{engine:"\u5F15\u64CE",repo:"\u4ED3\u5E93",fromBranch:"\u57FA\u51C6\u5206\u652F",gitUrl:"git \u5730\u5740",parentDir:"\u7236\u76EE\u5F55",folderName:"\u6587\u4EF6\u5939\u540D",baseBranch:"\u57FA\u51C6\u5206\u652F",adoptFilter:"\u8FC7\u6EE4\uFF08\u8DEF\u5F84 glob\uFF09"},placeholder:{folderName:"\u81EA\u52A8\u4ECE\u5730\u5740\u63A8\u5BFC",adoptFilter:"* \u2014 \u8F93\u5165\u5982 feature-* \u6765\u7F29\u5C0F\u8303\u56F4"},hint:{engineCycle:"ctrl+e",remembered:"\uFF08\u5DF2\u8BB0\u4F4F \u2014 \u4E0B\u6B21\u514B\u9686\u9ED8\u8BA4\u4F7F\u7528\u6B64\u76EE\u5F55\uFF09",currentDir:"\uFF08\u5F53\u524D\u76EE\u5F55\uFF09",noBranchesFound:"\uFF08\u672A\u627E\u5230\u672C\u5730\u5206\u652F \u2014 \u5C06\u76F4\u63A5\u4F7F\u7528\u8F93\u5165\u6587\u672C\u4F5C\u4E3A ref\uFF09",noMatchBranch:"\uFF08\u65E0\u5339\u914D \u2014 \u5C06\u76F4\u63A5\u4F7F\u7528\u8F93\u5165\u6587\u672C\u4F5C\u4E3A ref\uFF09",scanningWorktrees:"\u6B63\u5728\u626B\u63CF worktree\u2026",legend:"\u2191\u2193 \u9009\u62E9 \xB7 tab \u4E0B\u4E00\u5B57\u6BB5 \xB7 \u2190\u2192 \u5207\u6362 \xB7 enter \u786E\u8BA4 \xB7 esc \u53D6\u6D88"},picker:{moreAbove:"\u2191 \u8FD8\u6709 {count} \u9879",moreBelow:"\u2193 \u8FD8\u6709 {count} \u9879"},adopt:{repoLine:"\u4ED3\u5E93\uFF1A{path}",repoNone:"\uFF08\u65E0\uFF09",noUnlinked:"\u6CA1\u6709\u672A\u5173\u8054\u7684 worktree \u2014 \u6B64\u4ED3\u5E93\u6240\u6709 git worktree \u5747\u5DF2\u662F\u4EFB\u52A1",noMatch:"\u6CA1\u6709 worktree \u5339\u914D\u6B64\u8FC7\u6EE4\u6761\u4EF6",hintSelected:"\u5DF2\u9009 {count} \u9879 \xB7 enter \u5207\u6362\u9009\u4E2D \xB7 ctrl+a \u5168\u9009 \xB7 \u521B\u5EFA \u5BFC\u5165",hintDefault:"enter \u5207\u6362\u9009\u4E2D \xB7 ctrl+a \u5168\u9009 \xB7 \u521B\u5EFA \u5C06\u5BFC\u5165\u9AD8\u4EAE\u884C",summaryAll:"\u5DF2\u63A5\u7BA1 {count} \u4E2A worktree",summaryPartial:"\u5DF2\u63A5\u7BA1 {done}/{total} \u4E2A worktree \u2014 \u5176\u4F59\u5931\u8D25\uFF08\u8BE6\u89C1\u65E5\u5FD7\uFF09",summaryNone:"\u6CA1\u6709 worktree \u63A5\u7BA1\u6210\u529F\uFF1A{error}"},clone:{progressFallback:"\u514B\u9686\u4E2D\u2026",progressInto:"\u6B63\u5728\u514B\u9686\u5230 {target}\u2026"},button:{create:"[ \u521B\u5EFA ]",createFocused:"\u25B8 [ \u521B\u5EFA ]",cloning:"[ \u514B\u9686\u4E2D\u2026 ]"},error:{gitUrlRequired:"git \u5730\u5740\u4E0D\u80FD\u4E3A\u7A7A",gitUrlInvalid:"\u4E0D\u50CF\u662F\u6709\u6548\u7684 git \u5730\u5740\uFF1A{url}",folderRequired:"\u6587\u4EF6\u5939\u540D\u4E0D\u80FD\u4E3A\u7A7A",folderHasSeparator:"\u6587\u4EF6\u5939\u540D\u4E0D\u80FD\u5305\u542B\u8DEF\u5F84\u5206\u9694\u7B26",parentRequired:"\u7236\u76EE\u5F55\u4E0D\u80FD\u4E3A\u7A7A",parentNotFound:"\u7236\u76EE\u5F55\u4E0D\u5B58\u5728\uFF1A{path}",parentNotDir:"\u4E0D\u662F\u76EE\u5F55\uFF1A{path}",targetExists:"\u76EE\u6807\u8DEF\u5F84\u5DF2\u5B58\u5728\uFF1A{path}",cloneFailed:"git clone \u5931\u8D25\uFF1A{error}",noAdoptable:"\u6CA1\u6709\u53EF\u63A5\u7BA1\u7684 worktree"}}});var YF,ZF;var GF=C(()=>{YF={badge:{newActivity:"\u25CF new"},preview:{diffVsHead:"diff vs HEAD",file:"file",closeHint:"\xB7 q to close",loading:"loading\u2026"}},ZF={badge:{newActivity:"\u25CF \u65B0\u52A8\u6001"},preview:{diffVsHead:"\u4E0E HEAD \u5BF9\u6BD4",file:"\u6587\u4EF6",closeHint:"\xB7 q \u5173\u95ED",loading:"\u52A0\u8F7D\u4E2D\u2026"}}});var XF,QF;var qF=C(()=>{XF={title:"Quick task \xB7 {repoLabel}",esc:"esc",promptLabel:"prompt",promptPlaceholder:"what should this task do?",engineLabel:"engine",branchLabel:"branch",legend:"enter create \xB7 tab field \xB7 ctrl+e engine \xB7 esc cancel"},QF={title:"\u5FEB\u901F\u4EFB\u52A1 \xB7 {repoLabel}",esc:"esc",promptLabel:"\u63D0\u793A\u8BCD",promptPlaceholder:"\u8FD9\u4E2A\u4EFB\u52A1\u8981\u505A\u4EC0\u4E48\uFF1F",engineLabel:"\u5F15\u64CE",branchLabel:"\u5206\u652F",legend:"enter \u521B\u5EFA \xB7 tab \u5207\u6362\u5B57\u6BB5 \xB7 ctrl+e \u5207\u6362\u5F15\u64CE \xB7 esc \u53D6\u6D88"}});var HF,fF;var jF=C(()=>{HF={title:"Settings",esc:"esc",nav:{default:"j/k pick \xB7 h/l switch level \xB7 enter activate \xB7 esc close",feedback:"tab next field \xB7 enter sends on Send \xB7 esc close"},sections:{general:"General",engines:"Engines",accounts:"Accounts",keys:"Keybindings",feedback:"Feedback",dev:"Dev"},general:{theme:"Theme",themeHint:"l to enter list \xB7 j/k to highlight \xB7 enter to apply",language:"Language",languageHint:"Display language for kobe's UI. l to enter list \xB7 j/k to highlight \xB7 enter to apply.",transparent:"Transparent background",transparentHint:"Drops the renderer's bg fill so the host terminal shows through. `t` toggles.",on:"[x] on",off:"[ ] off",focusAccent:"Focus accent",focusAccentHint:"Color of focused pane title, \u258C marker, and split borders.",accentPrimary:"Primary (brand accent)",accentSuccess:"Success (legacy green)",accentInfo:"Info (cool blue)",notifications:"Notifications",notificationsHint:"Fired when a background chat tab finishes or pauses on an approval. Toast = bottom-right popup; Sound = terminal bell + chime. Tab-chip unread dot is always on.",toast:"Toast",sound:"Sound",zen:"Zen mode",zenHint:"The `zen` chip (above the file list) and `prefix`+space collapse the ChatTab to the engine pane \u2014 hiding the file and terminal panes. Keep this on to leave the Tasks rail visible so you can always get back out.",zenKeepTasks:"Keep Tasks pane in zen mode",surface:"Settings page",surfaceHint:"Where Settings and the other full dialogs (new task, rename) open. ChatTab = a dedicated full-window page alongside the engine tabs; Task panel = an overlay inside the left Tasks pane. enter to pick.",surfaceChattab:"ChatTab (separate page)",surfaceTaskpanel:"Task panel (in-pane overlay)",editor:"Editor",editorHint:"What `e` opens a file with in the file tree (enter stays the read-only preview). `auto` (default) follows $VISUAL / $EDITOR, else auto-detects nvim / vim / emacs / nano. enter on the row below cycles auto / vim / nvim / nano / emacs / custom; if the editor isn't installed it falls back to the preview.",editorRow:"editor: < {kind} > (enter to change)",editorCustom:"custom: {cmd}",editorCustomUnset:"(unset \u2014 enter to edit)",worktree:"Worktree location",worktreeHint:"Where new task worktrees are created (default `~/.kobe/worktrees`). Each repo keeps its own `<repo>-<hash>` subfolder underneath. Applies to new tasks only \u2014 existing worktrees stay where they are. Remote projects are unaffected. enter to edit; leave blank for the default.",worktreeBase:"worktree base: {path}",worktreeBaseDefault:"(default \u2014 enter to change)",worktreeBaseTitle:"Worktree location (blank = default ~/.kobe/worktrees)",worktreeBaseField:"path"},engines:{title:"Launch command",hint:"The command each engine's task pane runs. Override a built-in when your binary isn't on PATH as `claude` / `codex` (e.g. it's `cl`) or to pass default flags, or add your own engine. \u25CF = default engine for new tasks (also set by Ctrl+Shift+T). enter edit command \xB7 r rename \xB7 x reset/remove \xB7 d set default.",defaultTag:" (default)",customTag:" (custom)",addEngine:"+ Add engine"},accounts:{title:"Accounts",hint:"Read-only view of locally-detected engine accounts. Login flows land here later.",checking:"Checking\u2026",notLoggedIn:"\u25CB Not logged in",loggedIn:"\u25CF Logged in: {email}",apiKeyConfigured:"\u25CF API key configured",chatgptLogin:"\u25CF ChatGPT login: {email}",tokenConfigured:"\u25CF Token configured ({source})",copilotDetected:"\u25CF Copilot login detected"},keybindings:{title:"Keybindings",hint:"Rebind chords by editing the YAML below, then restart kobe (or respawn the pane). Press F1 anywhere for the live keymap with every binding id.",configFile:"Config file",notCreated:" (not created yet)",example:"Example",overridesApplied:"Overrides applied",none:"none",warnings:"Warnings"},feedback:{title:"Feedback",hint:"Sends a GitHub Discussion to the kobe repo through `gh`. Requires `gh auth login`; category defaults to Feedback.",titleLabel:"title",titlePlaceholder:"Short summary",descriptionLabel:"description",descriptionPlaceholder:"What happened? (enter for a new line \xB7 tab to Send)",send:"[enter] Send to GitHub Discussions"},dev:{reset:"Reset UI state",resetHint:"Clears ~/.config/kobe/state.json and ~/.kobe/tasks.json, then quits kobe \u2014 relaunch to start fresh. Working session / Archive lists, pane sizes, theme, model picks all reset. Worktrees on disk and Claude Code session history are not touched.",resetButton:"[enter] Reset",restart:"Restart backend",restartHint:"Stops the kobe daemon and quits this kobe window so the next launch spawns a fresh daemon \u2014 picks up daemon / orchestrator / engine edits without a process kill. Other attached kobe windows will lose their connection too.",restartButton:"[enter] Restart",doctorHint:"Daemon wedged or unresponsive? From a shell, run `kobe doctor` to diagnose, or `kobe reset` to stop the daemon + kill sessions (keeps your tasks). Use `kobe reset --hard` only to also wipe the task index + UI state.",experimental:"Experimental",remoteHint:"Remote projects (SSH): register a project whose git worktrees + engine run on another host over SSH, driven from this local kobe. Unfinished \u2014 file/diff panes still degrade for remote. Enables `kobe add --remote`.",remoteOn:"[x] Remote projects (on)",remoteOff:"[ ] Remote projects (off)",autoStatusHint:"Auto status flow: a backlog task moves to in_progress when its engine starts a turn, and new claude sessions get a system-prompt note telling the agent to set in_review itself when the work is done. Never touches done/canceled.",autoStatusOn:"[x] Auto status flow (on)",autoStatusOff:"[ ] Auto status flow (off)",dispatcherHint:"Field-notes dispatcher: task sessions file one-line gotchas (`kobe api note`), the daemon forwards each to the repo's main session, and that session relays them to the in-flight tasks that benefit (`kobe api dispatch`). Web-hosted sessions receive the relays today.",dispatcherOn:"[x] Field-notes dispatcher (on)",dispatcherOff:"[ ] Field-notes dispatcher (off)",archivedHistoryHint:"Archived history preview (beta): opening an archived task shows a read-only `kobe history` pane (session selector + transcript) in the engine slot instead of relaunching the engine. Its transcript survives worktree removal because the engine store is keyed by the worktree path. Shared with the web dashboard.",archivedHistoryOn:"[x] Archived history preview (on)",archivedHistoryOff:"[ ] Archived history preview (off)"}},fF={title:"\u8BBE\u7F6E",esc:"esc",nav:{default:"j/k \u9009\u62E9 \xB7 h/l \u5207\u6362\u5C42\u7EA7 \xB7 enter \u786E\u8BA4 \xB7 esc \u5173\u95ED",feedback:"tab \u4E0B\u4E00\u9879 \xB7 enter \u5728\u53D1\u9001\u9879\u53D1\u9001 \xB7 esc \u5173\u95ED"},sections:{general:"\u901A\u7528",engines:"\u5F15\u64CE",accounts:"\u8D26\u6237",keys:"\u5FEB\u6377\u952E",feedback:"\u53CD\u9988",dev:"\u5F00\u53D1"},general:{theme:"\u4E3B\u9898",themeHint:"l \u8FDB\u5165\u5217\u8868 \xB7 j/k \u9AD8\u4EAE \xB7 enter \u5E94\u7528",language:"\u8BED\u8A00",languageHint:"kobe \u754C\u9762\u7684\u663E\u793A\u8BED\u8A00\u3002l \u8FDB\u5165\u5217\u8868 \xB7 j/k \u9AD8\u4EAE \xB7 enter \u5E94\u7528\u3002",transparent:"\u900F\u660E\u80CC\u666F",transparentHint:"\u53BB\u6389\u6E32\u67D3\u5668\u7684\u80CC\u666F\u586B\u5145\uFF0C\u8BA9\u5BBF\u4E3B\u7EC8\u7AEF\u900F\u51FA\u6765\u3002\u6309 `t` \u5207\u6362\u3002",on:"[x] \u5F00",off:"[ ] \u5173",focusAccent:"\u805A\u7126\u5F3A\u8C03\u8272",focusAccentHint:"\u805A\u7126\u9762\u677F\u6807\u9898\u3001\u258C \u6807\u8BB0\u548C\u5206\u9694\u8FB9\u6846\u7684\u989C\u8272\u3002",accentPrimary:"\u4E3B\u8272\uFF08\u54C1\u724C\u5F3A\u8C03\u8272\uFF09",accentSuccess:"\u6210\u529F\u8272\uFF08\u4F20\u7EDF\u7EFF\uFF09",accentInfo:"\u4FE1\u606F\u8272\uFF08\u51B7\u84DD\uFF09",notifications:"\u901A\u77E5",notificationsHint:"\u540E\u53F0\u804A\u5929\u9875\u5B8C\u6210\u6216\u5728\u5BA1\u6279\u5904\u6682\u505C\u65F6\u89E6\u53D1\u3002Toast = \u53F3\u4E0B\u89D2\u5F39\u7A97\uFF1BSound = \u7EC8\u7AEF\u54CD\u94C3 + \u63D0\u793A\u97F3\u3002\u6807\u7B7E\u4E0A\u7684\u672A\u8BFB\u5706\u70B9\u59CB\u7EC8\u5F00\u542F\u3002",toast:"Toast \u5F39\u7A97",sound:"\u58F0\u97F3",zen:"\u7985\u6A21\u5F0F",zenHint:"`zen` \u6807\u8BB0\uFF08\u6587\u4EF6\u5217\u8868\u4E0A\u65B9\uFF09\u548C `prefix`+\u7A7A\u683C \u4F1A\u628A ChatTab \u6536\u8D77\u5230\u5F15\u64CE\u9762\u677F\u2014\u2014\u9690\u85CF\u6587\u4EF6\u4E0E\u7EC8\u7AEF\u9762\u677F\u3002\u4FDD\u6301\u5F00\u542F\u53EF\u8BA9 Tasks \u4FA7\u680F\u59CB\u7EC8\u53EF\u89C1\uFF0C\u65B9\u4FBF\u968F\u65F6\u9000\u51FA\u3002",zenKeepTasks:"\u7985\u6A21\u5F0F\u4E0B\u4FDD\u7559 Tasks \u9762\u677F",surface:"\u8BBE\u7F6E\u9875\u9762",surfaceHint:"\u8BBE\u7F6E\u53CA\u5176\u4ED6\u5B8C\u6574\u5BF9\u8BDD\u6846\uFF08\u65B0\u5EFA\u4EFB\u52A1\u3001\u91CD\u547D\u540D\uFF09\u7684\u6253\u5F00\u4F4D\u7F6E\u3002ChatTab = \u4E0E\u5F15\u64CE\u6807\u7B7E\u5E76\u5217\u7684\u72EC\u7ACB\u6574\u7A97\u9875\u9762\uFF1BTask panel = \u5DE6\u4FA7 Tasks \u9762\u677F\u5185\u7684\u6D6E\u5C42\u3002enter \u9009\u62E9\u3002",surfaceChattab:"ChatTab\uFF08\u72EC\u7ACB\u9875\u9762\uFF09",surfaceTaskpanel:"Task panel\uFF08\u9762\u677F\u5185\u6D6E\u5C42\uFF09",editor:"\u7F16\u8F91\u5668",editorHint:"\u6587\u4EF6\u6811\u91CC\u6309 `e` \u7528\u4EC0\u4E48\u6253\u5F00\u6587\u4EF6\uFF08enter \u4ECD\u662F\u53EA\u8BFB\u9884\u89C8\uFF09\u3002`auto`\uFF08\u9ED8\u8BA4\uFF09\u8DDF\u968F $VISUAL / $EDITOR\uFF0C\u5426\u5219\u81EA\u52A8\u63A2\u6D4B nvim / vim / emacs / nano\u3002\u5728\u4E0B\u65B9\u4E00\u884C\u6309 enter \u5728 auto / vim / nvim / nano / emacs / custom \u95F4\u5FAA\u73AF\uFF1B\u7F16\u8F91\u5668\u672A\u5B89\u88C5\u65F6\u56DE\u9000\u5230\u9884\u89C8\u3002",editorRow:"\u7F16\u8F91\u5668: < {kind} > (enter \u5207\u6362)",editorCustom:"\u81EA\u5B9A\u4E49: {cmd}",editorCustomUnset:"(\u672A\u8BBE\u7F6E \u2014 enter \u7F16\u8F91)",worktree:"\u5DE5\u4F5C\u6811\u4F4D\u7F6E",worktreeHint:"\u65B0\u4EFB\u52A1\u5DE5\u4F5C\u6811\u7684\u521B\u5EFA\u4F4D\u7F6E\uFF08\u9ED8\u8BA4 `~/.kobe/worktrees`\uFF09\u3002\u6BCF\u4E2A\u4ED3\u5E93\u5728\u5176\u4E0B\u4FDD\u7559\u81EA\u5DF1\u7684 `<\u4ED3\u5E93\u540D>-<\u54C8\u5E0C>` \u5B50\u76EE\u5F55\u3002\u4EC5\u5BF9\u65B0\u4EFB\u52A1\u751F\u6548\u2014\u2014\u5DF2\u6709\u5DE5\u4F5C\u6811\u4FDD\u6301\u539F\u4F4D\u3002\u8FDC\u7A0B\u9879\u76EE\u4E0D\u53D7\u5F71\u54CD\u3002enter \u7F16\u8F91\uFF1B\u7559\u7A7A\u5219\u7528\u9ED8\u8BA4\u503C\u3002",worktreeBase:"\u5DE5\u4F5C\u6811\u6839\u76EE\u5F55: {path}",worktreeBaseDefault:"(\u9ED8\u8BA4 \u2014 enter \u4FEE\u6539)",worktreeBaseTitle:"\u5DE5\u4F5C\u6811\u4F4D\u7F6E\uFF08\u7559\u7A7A = \u9ED8\u8BA4 ~/.kobe/worktrees\uFF09",worktreeBaseField:"\u8DEF\u5F84"},engines:{title:"\u542F\u52A8\u547D\u4EE4",hint:"\u6BCF\u4E2A\u5F15\u64CE\u7684\u4EFB\u52A1\u9762\u677F\u8FD0\u884C\u7684\u547D\u4EE4\u3002\u5F53\u4E8C\u8FDB\u5236\u6587\u4EF6\u4E0D\u5728 PATH \u4E0A\u7684 `claude` / `codex` \u540D\u4E0B\uFF08\u6BD4\u5982\u53EB `cl`\uFF09\u3001\u8981\u4F20\u9ED8\u8BA4\u53C2\u6570\uFF0C\u6216\u8981\u6DFB\u52A0\u81EA\u5DF1\u7684\u5F15\u64CE\u65F6\uFF0C\u53EF\u8986\u76D6\u5185\u7F6E\u9879\u3002\u25CF = \u65B0\u4EFB\u52A1\u7684\u9ED8\u8BA4\u5F15\u64CE\uFF08\u4E5F\u53EF\u7528 Ctrl+Shift+T \u8BBE\u7F6E\uFF09\u3002enter \u7F16\u8F91\u547D\u4EE4 \xB7 r \u91CD\u547D\u540D \xB7 x \u91CD\u7F6E/\u79FB\u9664 \xB7 d \u8BBE\u4E3A\u9ED8\u8BA4\u3002",defaultTag:" (\u9ED8\u8BA4)",customTag:" (\u81EA\u5B9A\u4E49)",addEngine:"+ \u6DFB\u52A0\u5F15\u64CE"},accounts:{title:"\u8D26\u6237",hint:"\u672C\u5730\u63A2\u6D4B\u5230\u7684\u5F15\u64CE\u8D26\u6237\u7684\u53EA\u8BFB\u89C6\u56FE\u3002\u767B\u5F55\u6D41\u7A0B\u7A0D\u540E\u4F1A\u63A5\u5165\u8FD9\u91CC\u3002",checking:"\u68C0\u67E5\u4E2D\u2026",notLoggedIn:"\u25CB \u672A\u767B\u5F55",loggedIn:"\u25CF \u5DF2\u767B\u5F55: {email}",apiKeyConfigured:"\u25CF \u5DF2\u914D\u7F6E API key",chatgptLogin:"\u25CF ChatGPT \u767B\u5F55: {email}",tokenConfigured:"\u25CF \u5DF2\u914D\u7F6E Token ({source})",copilotDetected:"\u25CF \u68C0\u6D4B\u5230 Copilot \u767B\u5F55"},keybindings:{title:"\u5FEB\u6377\u952E",hint:"\u7F16\u8F91\u4E0B\u9762\u7684 YAML \u6765\u91CD\u7ED1\u5B9A\u6309\u952E\uFF0C\u7136\u540E\u91CD\u542F kobe\uFF08\u6216\u91CD\u5EFA\u9762\u677F\uFF09\u3002\u4EFB\u610F\u4F4D\u7F6E\u6309 F1 \u67E5\u770B\u5E26\u6BCF\u4E2A\u7ED1\u5B9A id \u7684\u5B9E\u65F6\u952E\u4F4D\u8868\u3002",configFile:"\u914D\u7F6E\u6587\u4EF6",notCreated:" (\u5C1A\u672A\u521B\u5EFA)",example:"\u793A\u4F8B",overridesApplied:"\u5DF2\u5E94\u7528\u7684\u8986\u76D6",none:"\u65E0",warnings:"\u8B66\u544A"},feedback:{title:"\u53CD\u9988",hint:"\u901A\u8FC7 `gh` \u5411 kobe \u4ED3\u5E93\u53D1\u4E00\u6761 GitHub Discussion\u3002\u9700\u8981 `gh auth login`\uFF1B\u5206\u7C7B\u9ED8\u8BA4\u4E3A Feedback\u3002",titleLabel:"\u6807\u9898",titlePlaceholder:"\u7B80\u77ED\u6982\u62EC",descriptionLabel:"\u63CF\u8FF0",descriptionPlaceholder:"\u53D1\u751F\u4E86\u4EC0\u4E48\uFF1F(enter \u6362\u884C \xB7 tab \u8DF3\u5230\u53D1\u9001)",send:"[enter] \u53D1\u9001\u5230 GitHub Discussions"},dev:{reset:"\u91CD\u7F6E UI \u72B6\u6001",resetHint:"\u6E05\u7A7A ~/.config/kobe/state.json \u548C ~/.kobe/tasks.json\uFF0C\u7136\u540E\u9000\u51FA kobe\u2014\u2014\u91CD\u65B0\u542F\u52A8\u5373\u53EF\u4ECE\u5934\u5F00\u59CB\u3002\u5DE5\u4F5C\u4F1A\u8BDD / \u5F52\u6863\u5217\u8868\u3001\u9762\u677F\u5C3A\u5BF8\u3001\u4E3B\u9898\u3001\u6A21\u578B\u9009\u62E9\u90FD\u4F1A\u91CD\u7F6E\u3002\u78C1\u76D8\u4E0A\u7684 worktree \u548C Claude Code \u4F1A\u8BDD\u5386\u53F2\u4E0D\u53D7\u5F71\u54CD\u3002",resetButton:"[enter] \u91CD\u7F6E",restart:"\u91CD\u542F\u540E\u7AEF",restartHint:"\u505C\u6B62 kobe daemon \u5E76\u9000\u51FA\u5F53\u524D kobe \u7A97\u53E3\uFF0C\u4E0B\u6B21\u542F\u52A8\u4F1A\u62C9\u8D77\u4E00\u4E2A\u5168\u65B0\u7684 daemon\u2014\u2014\u65E0\u9700\u6740\u8FDB\u7A0B\u5373\u53EF\u5E94\u7528 daemon / orchestrator / engine \u7684\u6539\u52A8\u3002\u5176\u4ED6\u5DF2\u8FDE\u63A5\u7684 kobe \u7A97\u53E3\u4E5F\u4F1A\u65AD\u5F00\u8FDE\u63A5\u3002",restartButton:"[enter] \u91CD\u542F",doctorHint:"daemon \u5361\u4F4F\u6216\u65E0\u54CD\u5E94\uFF1F\u5728 shell \u91CC\u8FD0\u884C `kobe doctor` \u8BCA\u65AD\uFF0C\u6216 `kobe reset` \u505C\u6B62 daemon + \u6740\u6389\u4F1A\u8BDD\uFF08\u4FDD\u7559\u4F60\u7684\u4EFB\u52A1\uFF09\u3002\u53EA\u6709\u8981\u540C\u65F6\u6E05\u7A7A\u4EFB\u52A1\u7D22\u5F15 + UI \u72B6\u6001\u65F6\u624D\u7528 `kobe reset --hard`\u3002",experimental:"\u5B9E\u9A8C\u6027",remoteHint:"\u8FDC\u7A0B\u9879\u76EE\uFF08SSH\uFF09\uFF1A\u6CE8\u518C\u4E00\u4E2A git worktree + \u5F15\u64CE\u90FD\u901A\u8FC7 SSH \u8DD1\u5728\u53E6\u4E00\u53F0\u4E3B\u673A\u4E0A\u3001\u7531\u672C\u5730 kobe \u9A71\u52A8\u7684\u9879\u76EE\u3002\u5C1A\u672A\u5B8C\u6210\u2014\u2014\u6587\u4EF6/diff \u9762\u677F\u5BF9\u8FDC\u7A0B\u4ECD\u4F1A\u964D\u7EA7\u3002\u542F\u7528 `kobe add --remote`\u3002",remoteOn:"[x] \u8FDC\u7A0B\u9879\u76EE (\u5F00)",remoteOff:"[ ] \u8FDC\u7A0B\u9879\u76EE (\u5173)",autoStatusHint:"\u81EA\u52A8\u72B6\u6001\u6D41\u8F6C\uFF1Abacklog \u4EFB\u52A1\u5728\u5176\u5F15\u64CE\u5F00\u59CB\u4E00\u8F6E\u65F6\u79FB\u5230 in_progress\uFF0C\u65B0\u7684 claude \u4F1A\u8BDD\u4F1A\u62FF\u5230\u4E00\u6761\u7CFB\u7EDF\u63D0\u793A\uFF0C\u544A\u8BC9 agent \u5B8C\u6210\u540E\u81EA\u884C\u8BBE\u4E3A in_review\u3002\u7EDD\u4E0D\u89E6\u78B0 done/canceled\u3002",autoStatusOn:"[x] \u81EA\u52A8\u72B6\u6001\u6D41\u8F6C (\u5F00)",autoStatusOff:"[ ] \u81EA\u52A8\u72B6\u6001\u6D41\u8F6C (\u5173)",dispatcherHint:"\u73B0\u573A\u7B14\u8BB0\u8C03\u5EA6\u5668\uFF1A\u4EFB\u52A1\u4F1A\u8BDD\u63D0\u4EA4\u4E00\u884C\u7ECF\u9A8C\uFF08`kobe api note`\uFF09\uFF0Cdaemon \u5C06\u6BCF\u6761\u8F6C\u53D1\u7ED9\u4ED3\u5E93\u7684\u4E3B\u4F1A\u8BDD\uFF0C\u4E3B\u4F1A\u8BDD\u518D\u628A\u5B83\u4EEC\u8F6C\u8FBE\u7ED9\u80FD\u53D7\u76CA\u7684\u8FDB\u884C\u4E2D\u4EFB\u52A1\uFF08`kobe api dispatch`\uFF09\u3002\u76EE\u524D\u7531 Web \u6258\u7BA1\u7684\u4F1A\u8BDD\u4F1A\u6536\u5230\u8F6C\u8FBE\u3002",dispatcherOn:"[x] \u73B0\u573A\u7B14\u8BB0\u8C03\u5EA6\u5668 (\u5F00)",dispatcherOff:"[ ] \u73B0\u573A\u7B14\u8BB0\u8C03\u5EA6\u5668 (\u5173)",archivedHistoryHint:"\u5F52\u6863\u5386\u53F2\u9884\u89C8\uFF08beta\uFF09\uFF1A\u6253\u5F00\u5DF2\u5F52\u6863\u7684\u4EFB\u52A1\u65F6\uFF0C\u5F15\u64CE\u4F4D\u7F6E\u6539\u4E3A\u53EA\u8BFB\u7684 `kobe history` \u9762\u677F\uFF08\u4F1A\u8BDD\u9009\u62E9\u5668 + \u5BF9\u8BDD\u8BB0\u5F55\uFF09\uFF0C\u800C\u4E0D\u662F\u91CD\u65B0\u542F\u52A8\u5F15\u64CE\u3002\u5F15\u64CE\u8BB0\u5F55\u6309 worktree \u8DEF\u5F84\u5B58\u50A8\uFF0C\u6240\u4EE5 worktree \u88AB\u5220\u9664\u540E\u5386\u53F2\u4ECD\u7136\u53EF\u8BFB\u3002\u4E0E Web \u4EEA\u8868\u76D8\u5171\u7528\u540C\u4E00\u5F00\u5173\u3002",archivedHistoryOn:"[x] \u5F52\u6863\u5386\u53F2\u9884\u89C8 (\u5F00)",archivedHistoryOff:"[ ] \u5F52\u6863\u5386\u53F2\u9884\u89C8 (\u5173)"}}});var BF,WF;var VF=C(()=>{BF={view:{workspace:"Workspace",archives:"Archives"},header:{projects:"PROJECTS",tasks:"TASKS"},search:{placeholder:"fuzzy filter"},sort:"sort",project:{taskSingular:"task",taskPlural:"tasks"},moveChip:" move",empty:{noMatchSearch:"No matching tasks \u2014 esc to clear.",noActiveProject:"No active tasks for this project.",noArchivedProject:"No archived tasks for this project.",noActive:"No active tasks \u2014 press n or [+] to create one.",noArchived:"No archived tasks."},archiveHint:"a to unarchive",status:{done:"done",inReview:"in review",working:"working",backlog:"\u2014",canceled:"canceled",error:"error"},activity:{rateLimited:"rate limited",permissionNeeded:"needs permission",error:"error"},subtitle:{noTracking:"no activity tracking",materializing:"materializing"},hints:{headerFolded:"\u2500\u2500 keys ?\u25B8 \u2500\u2500",headerUnfolded:"\u2500\u2500 keys ?\u25BE \u2500\u2500",fullHelp:"full help",newTask:"new task",settings:"settings",open:"open",focusEngine:"focus engine",openWorktree:"open wt",delete:"delete",views:"views",project:"project",movePanes:"move panes",detach:"tasks\u2192detach",splits:"splits",panes:"panes",reorder:"reorder",done:"done"},toast:{noDaemonWorktree:"No daemon running \u2014 can't create the worktree",noDaemonOpen:"No daemon running \u2014 can't open this task",noEditor:"No editor found \u2014 set KOBE_OPEN_EDITOR (e.g. 'code', 'cursor', 'nvim')",openWorktreeFailed:"Couldn't open worktree with {label}",sessionStartFailed:"Couldn't start this task's session",moveTaskFailed:"Couldn't move task: {message}",alreadyLatest:"Already on the latest version (v{version})",worktreeErrorNotGit:"This project isn't a git repo yet \u2014 a task needs a git branch. Run `git init` (+ a first commit) in the project, then open the task. Non-git support is coming.",worktreeErrorGeneric:"Couldn't create the worktree: {message}"}},WF={view:{workspace:"\u5DE5\u4F5C\u533A",archives:"\u5F52\u6863"},header:{projects:"\u9879\u76EE",tasks:"\u4EFB\u52A1"},search:{placeholder:"\u6A21\u7CCA\u641C\u7D22"},sort:"\u6392\u5E8F",project:{taskSingular:"\u4E2A\u4EFB\u52A1",taskPlural:"\u4E2A\u4EFB\u52A1"},moveChip:" \u79FB\u52A8",empty:{noMatchSearch:"\u65E0\u5339\u914D\u4EFB\u52A1\u2014\u2014\u6309 esc \u6E05\u9664\u3002",noActiveProject:"\u8BE5\u9879\u76EE\u6682\u65E0\u6D3B\u8DC3\u4EFB\u52A1\u3002",noArchivedProject:"\u8BE5\u9879\u76EE\u6682\u65E0\u5F52\u6863\u4EFB\u52A1\u3002",noActive:"\u6682\u65E0\u6D3B\u8DC3\u4EFB\u52A1\u2014\u2014\u6309 n \u6216 [+] \u65B0\u5EFA\u3002",noArchived:"\u6682\u65E0\u5F52\u6863\u4EFB\u52A1\u3002"},archiveHint:"a \u53D6\u6D88\u5F52\u6863",status:{done:"\u5DF2\u5B8C\u6210",inReview:"\u5BA1\u6838\u4E2D",working:"\u8FDB\u884C\u4E2D",backlog:"\u2014",canceled:"\u5DF2\u53D6\u6D88",error:"\u9519\u8BEF"},activity:{rateLimited:"\u8BF7\u6C42\u53D7\u9650",permissionNeeded:"\u7B49\u5F85\u6388\u6743",error:"\u9519\u8BEF"},subtitle:{noTracking:"\u4E0D\u8DDF\u8E2A\u6D3B\u52A8",materializing:"\u6B63\u5728\u521B\u5EFA worktree"},hints:{headerFolded:"\u2500\u2500 \u5FEB\u6377\u952E ?\u25B8 \u2500\u2500",headerUnfolded:"\u2500\u2500 \u5FEB\u6377\u952E ?\u25BE \u2500\u2500",fullHelp:"\u5B8C\u6574\u5E2E\u52A9",newTask:"\u65B0\u5EFA\u4EFB\u52A1",settings:"\u8BBE\u7F6E",open:"\u6253\u5F00",focusEngine:"\u805A\u7126\u5F15\u64CE",openWorktree:"\u6253\u5F00 worktree",delete:"\u5220\u9664",views:"\u89C6\u56FE",project:"\u9879\u76EE",movePanes:"\u79FB\u52A8\u9762\u677F",detach:"\u4EFB\u52A1\u2192\u5206\u79BB",splits:"\u5206\u5272",panes:"\u9762\u677F",reorder:"\u91CD\u65B0\u6392\u5E8F",done:"\u5B8C\u6210"},toast:{noDaemonWorktree:"\u5B88\u62A4\u8FDB\u7A0B\u672A\u8FD0\u884C\u2014\u2014\u65E0\u6CD5\u521B\u5EFA worktree",noDaemonOpen:"\u5B88\u62A4\u8FDB\u7A0B\u672A\u8FD0\u884C\u2014\u2014\u65E0\u6CD5\u6253\u5F00\u6B64\u4EFB\u52A1",noEditor:"\u672A\u627E\u5230\u7F16\u8F91\u5668\u2014\u2014\u8BF7\u8BBE\u7F6E KOBE_OPEN_EDITOR\uFF08\u5982 'code'\u3001'cursor'\u3001'nvim'\uFF09",openWorktreeFailed:"\u65E0\u6CD5\u7528 {label} \u6253\u5F00 worktree",sessionStartFailed:"\u65E0\u6CD5\u542F\u52A8\u6B64\u4EFB\u52A1\u7684\u4F1A\u8BDD",moveTaskFailed:"\u65E0\u6CD5\u79FB\u52A8\u4EFB\u52A1\uFF1A{message}",alreadyLatest:"\u5DF2\u662F\u6700\u65B0\u7248\u672C\uFF08v{version}\uFF09",worktreeErrorNotGit:"\u8BE5\u9879\u76EE\u5C1A\u975E git \u4ED3\u5E93\u2014\u2014\u4EFB\u52A1\u9700\u8981 git \u5206\u652F\u3002\u8BF7\u5728\u9879\u76EE\u4E2D\u6267\u884C `git init`\uFF08+ \u9996\u6B21\u63D0\u4EA4\uFF09\u540E\u518D\u6253\u5F00\u4EFB\u52A1\u3002\u975E git \u9879\u76EE\u7684\u652F\u6301\u5373\u5C06\u63A8\u51FA\u3002",worktreeErrorGeneric:"\u65E0\u6CD5\u521B\u5EFA worktree\uFF1A{message}"}}});var KF,UF;var DF=C(()=>{KF={pageTitle:"KOBE UPDATE",current:"current",latest:"latest",releaseUrlUnavailable:"release URL unavailable",statusReleaseOpened:"Opened release page in your browser.",statusReleaseError:"Could not open release URL.",statusRunningUpdater:"Leaving the TUI page and running the updater in this tmux window...",loadingNotes:"Loading release notes...",notesUnavailable:"Release notes are unavailable. Use Open release to view the GitHub release page.",changesSectionHeader:"\u2500\u2500 changes from v{from} to v{to} \u2500\u2500",updateComplete:"kobe update complete. Relaunch kobe to use the new version.",updateFailed:"kobe update failed with exit code {code}.",pressAnyKey:"Press any key to close this update window.",actions:{updateNow:"Update now",openRelease:"Open release",close:"Close",closeDetail:"return to the previous tmux window"},skew:{title:"\u26A0 DAEMON OUT OF DATE",olderBuild:"an older build",hint:"daemon is {daemon} \u2014 you launched v{clientVersion}. Run `kobe daemon restart` then `kobe reload`"}},UF={pageTitle:"KOBE \u66F4\u65B0",current:"\u5F53\u524D",latest:"\u6700\u65B0",releaseUrlUnavailable:"\u53D1\u5E03\u94FE\u63A5\u4E0D\u53EF\u7528",statusReleaseOpened:"\u5DF2\u5728\u6D4F\u89C8\u5668\u4E2D\u6253\u5F00\u53D1\u5E03\u8BF4\u660E\u9875\u9762\u3002",statusReleaseError:"\u65E0\u6CD5\u6253\u5F00\u53D1\u5E03\u94FE\u63A5\u3002",statusRunningUpdater:"\u6B63\u5728\u79BB\u5F00 TUI \u9875\u9762\uFF0C\u5E76\u5728\u6B64 tmux \u7A97\u53E3\u4E2D\u8FD0\u884C\u66F4\u65B0\u7A0B\u5E8F\u2026\u2026",loadingNotes:"\u6B63\u5728\u52A0\u8F7D\u53D1\u5E03\u8BF4\u660E\u2026\u2026",notesUnavailable:"\u53D1\u5E03\u8BF4\u660E\u4E0D\u53EF\u7528\u3002\u8BF7\u4F7F\u7528\u300C\u6253\u5F00\u53D1\u5E03\u9875\u300D\u67E5\u770B GitHub \u53D1\u5E03\u9875\u9762\u3002",changesSectionHeader:"\u2500\u2500 v{from} \u81F3 v{to} \u7684\u53D8\u66F4 \u2500\u2500",updateComplete:"kobe \u66F4\u65B0\u5B8C\u6210\u3002\u8BF7\u91CD\u65B0\u542F\u52A8 kobe \u4EE5\u4F7F\u7528\u65B0\u7248\u672C\u3002",updateFailed:"kobe \u66F4\u65B0\u5931\u8D25\uFF0C\u9000\u51FA\u7801\u4E3A {code}\u3002",pressAnyKey:"\u6309\u4EFB\u610F\u952E\u5173\u95ED\u6B64\u66F4\u65B0\u7A97\u53E3\u3002",actions:{updateNow:"\u7ACB\u5373\u66F4\u65B0",openRelease:"\u6253\u5F00\u53D1\u5E03\u9875",close:"\u5173\u95ED",closeDetail:"\u8FD4\u56DE\u4E0A\u4E00\u4E2A tmux \u7A97\u53E3"},skew:{title:"\u26A0 DAEMON \u7248\u672C\u4E0D\u4E00\u81F4",olderBuild:"\u65E7\u7248\u672C\u6784\u5EFA",hint:"daemon \u8FD0\u884C\u7684\u662F {daemon}\uFF0C\u800C\u4F60\u542F\u52A8\u7684\u662F v{clientVersion}\u3002\u8BF7\u8FD0\u884C `kobe daemon restart` \u518D\u8FD0\u884C `kobe reload`"}}});function AQ(J){return typeof J==="string"&&mZ.some((z)=>z.id===J)}var lT,$T,mZ,$G,aG="en";var _G=C(()=>{cL();iL();aL();rL();tL();zF();GF();qF();jF();VF();DF();lT={settings:HF,tasks:BF,files:dL,newTask:eL,ops:YF,update:KF,quickTask:XF,help:lL,history:_L,common:vL,keys:oL},$T={settings:fF,tasks:WF,files:nL,newTask:JF,ops:ZF,update:UF,quickTask:QF,help:$L,history:pL,common:mL,keys:sL},mZ=[{id:"en",label:"English"},{id:"zh",label:"\u4E2D\u6587"}],$G={en:lT,zh:$T}});function RQ(J){if($G[J])aT("lang",J)}function I8(){return S8.lang}function LF(J,z){let Y=J;for(let Z of z.split("."))if(Y&&typeof Y==="object"&&Z in Y)Y=Y[Z];else return;return typeof Y==="string"?Y:void 0}function _T(J,z){if(!z)return J;return J.replace(/\{(\w+)\}/g,(Y,Z)=>(Z in z)?String(z[Z]):Y)}function F(J,z){let Y=S8.lang,Z=LF($G[Y],J)??LF($G.en,J)??J;return _T(Z,z)}function y8(J,z){let Y=S8.lang,Z=(G)=>{return G.keys[J]?.[z]};return Z($G[Y])??Z($G.en)??z}var S8,aT;var ZJ=C(()=>{lG();_G();_G();[S8,aT]=_z({lang:aG})});function pT(J){let z=[],Y=J.name;if(Y)z.push(Y);if(Y==="return")z.push("enter");if(Y==="enter")z.push("return");let Z=[];if(J.ctrl)Z.push("ctrl");if(J.meta)Z.push("cmd");if(J.option)Z.push("alt");if(J.shift&&Y&&Y.length>1)Z.push("shift");if(Z.length===0)return z;let G=`${Z.join("+")}+`;return z.map((X)=>G+X)}function x8(J,z){if(z.defaultPrevented)return!1;if(T8)return!1;let Y=J.slice(),Z=pT(z);T8=!0;try{for(let G=Y.length-1;G>=0;G--){let X=Y[G];if(!X)continue;let Q=X.config();if(Q.enabled===!1)continue;let H=Q.bindings.find((f)=>Z.includes(f.key));if(H)return H.cmd(z,H.slot),z.preventDefault(),!0}return!1}finally{T8=!1}}var T8=!1;function oT(){if(u8)return;let J=WJ();if(!J)throw Error("useBindings: no renderer in scope; call inside a component rendered by @opentui/solid.");u8=J.keyInput,FF=(z)=>{x8(Vf,z)},u8.on("keypress",FF)}function U1(J){oT();let z=rT++,Y={config:J,id:z};_0(()=>{J()}),Vf.push(Y),T1(()=>{let Z=Vf.findIndex((G)=>G.id===z);if(Z>=0)Vf.splice(Z,1)})}var rT=1,Vf,u8=null,FF=null;var kJ=C(()=>{w();W1();Vf=[]});function Kf(){let J=new Set;function z(Z,G){let X=setTimeout(()=>{J.delete(X),Z()},G);return J.add(X),X}function Y(Z){if(J.delete(Z))clearTimeout(Z)}return T1(()=>{for(let Z of J)clearTimeout(Z);J.clear()}),{set:z,clear:Y}}var E8=C(()=>{W1()});import{RGBA as MF}from"@opentui/core";function eT(J){let z=az(),Y=w0(),{theme:Z}=Y,G=WJ(),X=!1,Q=()=>{if(J.size==="xlarge")return 140;if(J.size==="large")return 110;if(J.size==="small")return 50;return 80},H=2,f=()=>Math.max(8,z().height-H*2);return(()=>{var j=W("box"),V=W("box");return D(j,V),q(j,"onMouseDown",()=>{X=!!G?.getSelection()}),q(j,"onMouseUp",()=>{if(X){X=!1;return}J.onClose?.()}),q(j,"alignItems","center"),q(j,"justifyContent","center"),q(j,"position","absolute"),q(j,"zIndex",3000),q(j,"left",0),q(j,"top",0),q(V,"onMouseUp",(B)=>{X=!1,B.stopPropagation()}),q(V,"flexShrink",1),q(V,"flexGrow",0),q(V,"paddingTop",1),U(V,()=>J.children),y((B)=>{var K=z().width,L=z().height,A=Y.transparentBackground?tT:sT,O=Q(),R=z().width-2,u=f(),P=Z.backgroundDialog;return K!==B.e&&(B.e=q(j,"width",K,B.e)),L!==B.t&&(B.t=q(j,"height",L,B.t)),A!==B.a&&(B.a=q(j,"backgroundColor",A,B.a)),O!==B.o&&(B.o=q(V,"width",O,B.o)),R!==B.i&&(B.i=q(V,"maxWidth",R,B.i)),u!==B.n&&(B.n=q(V,"maxHeight",u,B.n)),P!==B.s&&(B.s=q(V,"backgroundColor",P,B.s)),B},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),j})()}function Jx(){let[J,z]=_z({stack:[],size:"medium"}),Y=WJ(),Z=null,G=Kf();function X(){G.set(()=>{if(!Z)return;if(Z.isDestroyed)return;function Q(f){for(let j of f.getChildren()){if(j===Z)return!0;if(Q(j))return!0}return!1}let H=Y?.root;if(!H)return;if(!Q(H))return;Z.focus()},1)}return U1(()=>({enabled:J.stack.length>0&&!Y?.getSelection()?.getSelectedText(),bindings:[{key:"escape",cmd:()=>{if(Y?.getSelection())Y.clearSelection();J.stack.at(-1)?.onClose?.(),z("stack",J.stack.slice(0,-1)),X()}},{key:"ctrl+c",cmd:()=>{if(Y?.getSelection())Y.clearSelection();J.stack.at(-1)?.onClose?.(),z("stack",J.stack.slice(0,-1)),X()}}]})),{clear(){for(let Q of J.stack)Q.onClose?.();Tq(()=>{z("size","medium"),z("stack",[])}),X()},replace(Q,H){if(J.stack.length===0)Z=Y?.currentFocusedRenderable??null,Z?.blur();for(let f of J.stack)f.onClose?.();z("size","medium"),z("stack",[{element:Q,onClose:H}])},push(Q,H){if(J.stack.length===0)Z=Y?.currentFocusedRenderable??null,Z?.blur();z("stack",[...J.stack,{element:Q,onClose:H}])},pop(){if(J.stack.at(-1)?.onClose?.(),z("stack",J.stack.slice(0,-1)),J.stack.length===0)X()},get stack(){return J.stack},get size(){return J.size},setSize(Q){z("size",Q)}}}function AF(J){let z=Jx();return b(OF.Provider,{value:z,get children(){return[N0(()=>J.children),(()=>{var Y=W("box");return q(Y,"position","absolute"),q(Y,"zIndex",3000),U(Y,b(Y0,{get when(){return z.stack.length},get children(){return b(eT,{onClose:()=>z.clear(),get size(){return z.size},get children(){return z.stack.at(-1).element()}})}})),Y})()]}})}function n1(){let J=mJ(OF);if(!J)throw Error("useDialog must be used within a DialogProvider");return J}var sT,tT,OF;var $J=C(()=>{w();w();w();w();w();w();w();w();W1();lG();h1();kJ();E8();sT=MF.fromInts(0,0,0,128),tT=MF.fromInts(0,0,0,64);OF=Pz()});import{spawnSync as w8}from"child_process";import*as gF from"fs";function RF(J){return`This folder isn't a git repository yet, and a task needs a git branch to work in. To fix it, turn ${J} into a repo: git init && git add -A && git commit -m "init" \u2014 then create the task again. (Working in non-git folders is coming soon.)`}function NF(J){let z=J.trim();if(!z)return"repo path is required";let Y;try{Y=gF.statSync(z)}catch{return`path does not exist: ${z}`}if(!Y.isDirectory())return`not a directory: ${z}`;try{if(w8("git",["rev-parse","--git-dir"],{cwd:z,encoding:"utf-8",timeout:2000,stdio:["ignore","pipe","ignore"]}).status!==0)return RF(z)}catch{return RF(z)}return null}function gQ(J){if(!J)return null;try{let z=w8("git",["rev-parse","--abbrev-ref","HEAD"],{cwd:J,encoding:"utf-8",timeout:2000,stdio:["ignore","pipe","ignore"]});if(z.status!==0)return null;let Y=z.stdout.trim();if(!Y||Y==="HEAD")return null;return Y}catch{return null}}function CF(J){if(!J)return[];try{let z=w8("git",["for-each-ref","--format=%(refname:short)","refs/heads/"],{cwd:J,encoding:"utf-8",timeout:2000});if(z.status!==0)return[];return z.stdout.split(`
262
- `).map((Y)=>Y.trim()).filter(Boolean).sort((Y,Z)=>{let G=(H)=>H==="main"?0:H==="master"?1:H==="develop"?2:3,X=G(Y),Q=G(Z);if(X!==Q)return X-Q;return Y.localeCompare(Z)})}catch{return[]}}var Tz="main";var Uf=()=>{};import*as kF from"fs";import*as Df from"os";function RJ(J){if(J==="~")return Df.homedir();if(J.startsWith("~/"))return Df.homedir()+J.slice(1);return J}function P8(J){if(!J)return{base:"",filter:""};let Y=RJ(J==="~"?"~/":J);if(Y.endsWith("/"))return{base:Y,filter:""};let Z=Y.lastIndexOf("/");if(Z===-1)return{base:"",filter:Y};return{base:Y.slice(0,Z+1),filter:Y.slice(Z+1)}}function h8(J){if(!J)return[];try{let z=kF.readdirSync(J,{withFileTypes:!0}),Y=[];for(let Z of z)if(Z.isDirectory())Y.push(Z.name);return Y.sort((Z,G)=>Z.localeCompare(G))}catch{return[]}}function v8(J,z){let Y=z.toLowerCase(),G=Y.startsWith(".")?J:J.filter((X)=>!X.startsWith("."));if(!Y)return G;return G.filter((X)=>X.toLowerCase().startsWith(Y))}function NQ(J,z,Y){let Z=z+Y;if(J.startsWith("~")){let G=Df.homedir();if(Z===G)return"~";if(Z.startsWith(`${G}/`))return`~${Z.slice(G.length)}`}return Z}var Lf=()=>{};import{spawn as zx}from"child_process";import*as cZ from"fs";import*as CQ from"path";function bF(J){let z=J.trim().replace(/\/+$/,"");if(!z)return"";let Y=z.lastIndexOf("/"),Z=z.lastIndexOf(":"),G=Math.max(Y,Z);return(G>=0?z.slice(G+1):z).replace(/\.git$/i,"")}function SF(J){let z=J.trim();if(!z)return F("newTask.error.gitUrlRequired");let Y=z.includes("://"),Z=z.includes("@")&&z.includes(":"),G=z.includes("/");if(!Y&&!Z&&!G)return F("newTask.error.gitUrlInvalid",{url:z});return null}function IF(J,z){let Y=z.trim();if(!Y)return F("newTask.error.folderRequired");if(Y.includes("/")||Y.includes("\\"))return F("newTask.error.folderHasSeparator");let Z=J.trim();if(!Z)return F("newTask.error.parentRequired");let G=RJ(Z),X;try{X=cZ.statSync(G)}catch{return F("newTask.error.parentNotFound",{path:G})}if(!X.isDirectory())return F("newTask.error.parentNotDir",{path:G});let Q=CQ.join(G,Y);if(cZ.existsSync(Q))return F("newTask.error.targetExists",{path:Q});return null}function yF(J,z){return CQ.join(RJ(J.trim()),z.trim())}function TF(J,z){let Y=z.trim();if(!Y)return z;let Z=RJ(J.trim());if(!Z)return z;try{if(!cZ.statSync(Z).isDirectory())return z}catch{return z}if(!cZ.existsSync(CQ.join(Z,Y)))return Y;for(let G=2;G<1000;G++){let X=`${Y}-${G}`;if(!cZ.existsSync(CQ.join(Z,X)))return X}return Y}function xF(J,z,Y){return new Promise((Z)=>{let G="";try{let X=zx("git",["clone","--progress",J,z],{stdio:["ignore","ignore","pipe"]});X.stderr?.setEncoding("utf-8"),X.stderr?.on("data",(Q)=>{if(G+=Q,Y){let H=Q.split(/[\r\n]+/).filter((j)=>j.trim().length>0),f=H[H.length-1];if(f)Y(f)}}),X.on("error",(Q)=>{Z({ok:!1,error:Q.message})}),X.on("close",(Q)=>{if(Q===0){Z({ok:!0,path:z});return}let H=G.split(/[\r\n]+/).filter((f)=>f.trim().length>0).pop()??`git clone exited with ${Q}`;Z({ok:!1,error:H})})}catch(X){Z({ok:!1,error:X instanceof Error?X.message:String(X)})}})}var uF=C(()=>{ZJ();Lf()});function m8(J){if(J==="existing")return"clone";if(J==="clone")return"adopt";return"existing"}function c8(J){if(J==="existing")return"adopt";if(J==="clone")return"existing";return"clone"}function EF(J,z){let Y=J.trim();if(z.includes(Y))return"saved";if(Y.startsWith("~"))return"browse";if(Y.includes("/"))return"browse";return"saved"}function gJ(J){return J.replace(/[\r\n]+/g,"")}function kQ(J){return!/\S/u.test(J)}function d8(J,z="existing"){if(J==="confirm")return"tabs";if(J==="tabs")return"engine";if(J==="engine")return n8(z);if(z==="clone"){if(J==="cloneUrl")return"cloneParent";if(J==="cloneParent")return"cloneFolder";if(J==="cloneFolder")return"cloneBaseRef";if(J==="cloneBaseRef")return"confirm";return"cloneUrl"}if(z==="adopt")return J==="adoptFilter"?"confirm":"adoptFilter";if(J==="repo")return"baseRef";if(J==="baseRef")return"confirm";return"repo"}function n8(J){if(J==="clone")return"cloneUrl";if(J==="adopt")return"adoptFilter";return"repo"}function wF(J,z){let Y=z.trim();if(!Y)return J;return J.filter((Z)=>hQ(Y,Z.path))}function PF(J,z){let Y=new Set,Z=[];for(let G of[J,...z]){let X=G.trim();if(!X||Y.has(X))continue;Y.add(X),Z.push(X)}return Z}function hF(J,z){let Y=z.trim().toLowerCase();if(!Y)return J;return J.filter((Z)=>Z.toLowerCase().includes(Y))}function vF(J,z){let Y=z.trim().toLowerCase();if(!Y)return J;return J.filter((Z)=>Z.toLowerCase().includes(Y))}function bQ(J,z,Y=Yx){let Z=J.length;if(Z<=Y)return{items:J,start:0,total:Z};let G=Math.floor(Y/2),X=Math.max(0,z-G);if(X+Y>Z)X=Z-Y;return{items:J.slice(X,X+Y),start:X,total:Z}}function pz(J,z){if(z<=0)return 0;return Math.max(0,Math.min(z-1,J))}function mF(J,z,Y){let Z=z[Y];if(Z)return Z;return J.trim()||Tz}var Yx=8;var i8=C(()=>{$f();Uf()});import{TextAttributes as Hz}from"@opentui/core";function cF(J){let z=n1(),{theme:Y}=w0(),[Z,G]=p("existing"),X=()=>{let I=J.availableVendors;return I&&I.length>0?I:a1},Q=(()=>{let I=X(),O0=J.defaultVendor??"claude";return I.includes(O0)?O0:I[0]??"claude"})(),[H,f]=p(Q),[j,V]=p("tabs"),[B,K]=p(J.defaultRepo),[L,A]=p(gQ(RJ(J.defaultRepo.trim()))??Tz),[O,R]=p(!1),[u,P]=p(""),[S,g]=p(J.defaultCloneParent?.trim()?J.defaultCloneParent:"~/"),[M,T]=p(""),[d,i]=p(!1),[J0,E]=p(Tz),[z0,q0]=p(!1),[o,B0]=p(""),g0=U0(()=>PF(J.defaultRepo,J.savedRepos)),m=U0(()=>EF(B(),g0())),r=U0(()=>P8(B())),c=U0(()=>h8(r().base)),N=U0(()=>v8(c(),r().filter)),t=U0(()=>hF(g0(),B())),x=U0(()=>m()==="browse"?N():t()),[n,Q0]=p(0),H0=U0(()=>bQ(x(),n())),[F0,M0]=p(!1),o0=U0(()=>CF(RJ(B().trim()))),S0=U0(()=>vF(o0(),L())),[p0,h]=p(0),L0=U0(()=>bQ(S0(),p0())),Z0=U0(()=>P8(S())),D0=U0(()=>h8(Z0().base)),P0=U0(()=>v8(D0(),Z0().filter)),[G1,c0]=p(0),u0=U0(()=>bQ(P0(),G1())),[k1,s]=p(!1),[j0,C0]=p(""),[t0,z1]=p(0),[E0,V1]=p(new Set),[D1]=WZ(()=>Z()==="adopt"?RJ(B().trim()):null,async(I)=>J.discoverAdoptable?await J.discoverAdoptable(I):[]),f1=U0(()=>wF(D1()??[],j0())),G0=U0(()=>bQ(f1().map((I)=>I.path),t0())),X0=U0(()=>{let I=G0();return f1().slice(I.start,I.start+I.items.length)});_0(()=>{f1(),z1((I)=>pz(I,f1().length))});function W0(I){V1((O0)=>{let e=new Set(O0);if(e.has(I))e.delete(I);else e.add(I);return e})}function R0(){let I=f1()[t0()];if(I)W0(I.path)}_0(()=>{S0(),h(0)}),_0(()=>{let I=RJ(B().trim());if(!I)return;if(O())return;let O0=gQ(I);if(O0)A(O0)}),_0(()=>{x(),Q0(0)}),_0(()=>{P0(),c0(0)}),_0(()=>{let I=u(),O0=S();if(d())return;let e=bF(I);T(TF(O0,e))});let[V0,h0]=p(null);_0(()=>{B(),u(),S(),M(),j0(),h0(null)});function k0(){let I=RJ(B().trim());if(!I)return;let O0=NF(I);if(O0){h0(O0),V("repo");return}let e=L().trim()||Tz;J.onSubmit({repo:I,baseRef:e,vendor:H()}),z.clear()}async function s0(){if(z0())return;let I=SF(u());if(I){h0(I),V("cloneUrl");return}let O0=IF(S(),M());if(O0){h0(O0),V(M().trim()?"cloneParent":"cloneFolder");return}let e=yF(S(),M());q0(!0),B0(F("newTask.clone.progressInto",{target:e}));let I0=await xF(u().trim(),e,(GJ)=>{B0(GJ)});if(q0(!1),!I0.ok){h0(F("newTask.error.cloneFailed",{error:I0.error})),V("cloneUrl");return}let M1=J0().trim()||Tz,UJ=RJ(S().trim());J.onSubmit({repo:I0.path,baseRef:M1,vendor:H(),cloned:{parentDir:UJ}}),z.clear()}function b0(){let I=f1();if(I.length===0){h0(F("newTask.error.noAdoptable"));return}let O0=E0(),e=O0.size>0?I.filter((I0)=>O0.has(I0.path)):I.slice(t0(),t0()+1);if(e.length===0)return;J.onSubmit({mode:"adopt",repo:RJ(B().trim()),vendor:H(),adopt:e.map((I0)=>({worktreePath:I0.path,branch:I0.branch}))}),z.clear()}function x0(){if(Z()==="clone"){s0();return}if(Z()==="adopt"){b0();return}k0()}function k(I){if(z0())return;if(I===Z())return;G(I),V(n8(I)),h0(null)}function X1(I){if(z0())return;let O0=I===1?m8(Z()):c8(Z());if(O0===Z())return;G(O0),h0(null),V("tabs")}function e0(I){f((O0)=>I===1?AY(X(),O0):af(X(),O0))}function n0(){if(!B().trim()&&m()==="saved"){let O0=x()[0];if(O0){K(O0),V("baseRef");return}}if(m()==="browse"){let e=N()[n()],I0=r();if(e){K(NQ(B(),I0.base,e)),Q0(0),M0(!0),V("baseRef");return}V("baseRef");return}let I=x()[n()];if(I){K(I),V("baseRef");return}V("baseRef")}function v0(I){let e=x()[I];if(!e)return;if(m()==="browse"){let I0=r();K(NQ(B(),I0.base,e)),Q0(I),M0(!0),V("baseRef");return}K(e),Q0(I),V("baseRef")}function K0(){let O0=P0()[G1()],e=Z0();if(O0){g(NQ(S(),e.base,O0)),c0(0),s(!0),V("cloneFolder");return}V("cloneFolder")}function y0(I){let e=P0()[I];if(!e)return;let I0=Z0();g(NQ(S(),I0.base,e)),c0(I),s(!0),V("cloneFolder")}let b1=()=>{let I=f1();if(I.length===0)return;let O0=I.every((e)=>E0().has(e.path));V1(O0?new Set:new Set(I.map((e)=>e.path)))};U1(()=>({bindings:[{key:"tab",cmd:()=>V((I)=>d8(I,Z()))},{key:"ctrl+]",cmd:()=>k(m8(Z()))},{key:"ctrl+[",cmd:()=>k(c8(Z()))},{key:"ctrl+e",cmd:()=>f((I)=>AY(X(),I))},{key:"up",cmd:()=>{if(z0())return;if(Z()==="existing"&&j()==="repo"){let I=x();if(I.length===0)return;Q0(pz(n()-1,I.length));return}if(Z()==="existing"&&j()==="baseRef"){let I=S0();if(I.length===0)return;h(pz(p0()-1,I.length));return}if(Z()==="clone"&&j()==="cloneParent"){let I=P0();if(I.length===0)return;c0(pz(G1()-1,I.length));return}if(Z()==="adopt"){let I=f1();if(I.length===0)return;z1(pz(t0()-1,I.length))}}},{key:"down",cmd:()=>{if(z0())return;if(Z()==="existing"&&j()==="repo"){let I=x();if(I.length===0)return;Q0(pz(n()+1,I.length));return}if(Z()==="existing"&&j()==="baseRef"){let I=S0();if(I.length===0)return;h(pz(p0()+1,I.length));return}if(Z()==="clone"&&j()==="cloneParent"){let I=P0();if(I.length===0)return;c0(pz(G1()+1,I.length));return}if(Z()==="adopt"){let I=f1();if(I.length===0)return;z1(pz(t0()+1,I.length))}}},...j()==="tabs"||j()==="engine"?[{key:"left",cmd:()=>j()==="tabs"?X1(-1):e0(-1)},{key:"right",cmd:()=>j()==="tabs"?X1(1):e0(1)},{key:"return",cmd:()=>V((I)=>d8(I,Z()))}]:[],...Z()==="adopt"?[{key:"ctrl+a",cmd:b1}]:[]]})),U1(()=>({enabled:j()==="confirm"&&!z0(),bindings:[{key:"return",cmd:()=>x0()}]}));let F1=(I)=>j()===I?Y.primary:Y.textMuted,A1=(I)=>j()===I?Hz.BOLD|Hz.UNDERLINE:void 0,l=(I,O0)=>I?O0?Hz.BOLD|Hz.UNDERLINE:Hz.BOLD:void 0;return(()=>{var I=W("box"),O0=W("box"),e=W("text"),I0=W("box"),M1=W("box"),UJ=W("text"),GJ=W("box"),j1=W("box"),_J=W("text"),fJ=W("box"),pJ=W("text"),bJ=W("text");return D(I,O0),D(I,I0),D(I,fJ),q(I,"paddingLeft",2),q(I,"paddingRight",2),q(I,"gap",0),D(O0,e),q(O0,"flexDirection","row"),U(e,()=>F("newTask.title")),D(I0,M1),q(I0,"gap",1),q(I0,"paddingTop",1),q(I0,"paddingBottom",1),U(I0,()=>{let $=()=>j()==="tabs",a=(_)=>_?Y.primary:Y.textMuted;return(()=>{var _=W("box"),v=W("text"),i0=W("text"),m0=W("text");return D(_,v),D(_,i0),D(_,m0),q(_,"flexDirection","row"),q(_,"gap",2),q(v,"onMouseUp",()=>k("existing")),U(v,(()=>{var A0=N0(()=>Z()==="existing");return()=>A0()?`\u25B8 ${F("newTask.tabs.existing")}`:` ${F("newTask.tabs.existing")}`})()),q(i0,"onMouseUp",()=>k("clone")),U(i0,(()=>{var A0=N0(()=>Z()==="clone");return()=>A0()?`\u25B8 ${F("newTask.tabs.clone")}`:` ${F("newTask.tabs.clone")}`})()),q(m0,"onMouseUp",()=>k("adopt")),U(m0,(()=>{var A0=N0(()=>Z()==="adopt");return()=>A0()?`\u25B8 ${F("newTask.tabs.adopt")}`:` ${F("newTask.tabs.adopt")}`})()),y((A0)=>{var l0=a(Z()==="existing"),B1=l(Z()==="existing",$()),R1=a(Z()==="clone"),DJ=l(Z()==="clone",$()),jz=a(Z()==="adopt"),OY=l(Z()==="adopt",$());return l0!==A0.e&&(A0.e=q(v,"fg",l0,A0.e)),B1!==A0.t&&(A0.t=q(v,"attributes",B1,A0.t)),R1!==A0.a&&(A0.a=q(i0,"fg",R1,A0.a)),DJ!==A0.o&&(A0.o=q(i0,"attributes",DJ,A0.o)),jz!==A0.i&&(A0.i=q(m0,"fg",jz,A0.i)),OY!==A0.n&&(A0.n=q(m0,"attributes",OY,A0.n)),A0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),_})()},M1),D(M1,UJ),D(M1,GJ),q(M1,"gap",0),U(UJ,()=>F("newTask.field.engine")),D(GJ,j1),D(GJ,_J),q(GJ,"flexDirection","row"),q(GJ,"gap",2),U(GJ,b(Z1,{get each(){return X()},children:($)=>{let a=()=>H()===$;return(()=>{var _=W("text");return q(_,"onMouseUp",()=>f($)),U(_,()=>a()?"\u25B8 ":" ",null),U(_,$,null),y((v)=>{var i0=a()?Y.primary:Y.textMuted,m0=a()?Hz.BOLD:void 0;return i0!==v.e&&(v.e=q(_,"fg",i0,v.e)),m0!==v.t&&(v.t=q(_,"attributes",m0,v.t)),v},{e:void 0,t:void 0}),_})()}}),j1),q(j1,"flexGrow",1),U(_J,()=>F("newTask.hint.engineCycle")),U(I0,b(Y0,{get when(){return Z()==="existing"},get children(){return[(()=>{var $=W("box"),a=W("text"),_=W("input");return D($,a),D($,_),q($,"gap",0),U(a,()=>F("newTask.field.repo")),q(_,"onInput",(v)=>{M0(!1),K(gJ(v))}),q(_,"onSubmit",()=>{if(!B().trim())return;n0()}),y((v)=>{var i0=F1("repo"),m0=A1("repo"),A0=B(),l0=J.defaultRepo,B1=j()==="repo";return i0!==v.e&&(v.e=q(a,"fg",i0,v.e)),m0!==v.t&&(v.t=q(a,"attributes",m0,v.t)),A0!==v.a&&(v.a=q(_,"value",A0,v.a)),l0!==v.o&&(v.o=q(_,"placeholder",l0,v.o)),B1!==v.i&&(v.i=q(_,"focused",B1,v.i)),v},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),$})(),b(Y0,{get when(){return N0(()=>j()==="repo"&&x().length>0)()&&!F0()},get children(){var $=W("box");return q($,"gap",0),q($,"paddingLeft",2),U($,b(Y0,{get when(){return H0().start>0},get children(){var a=W("text");return q(a,"wrapMode","none"),U(a,()=>F("newTask.picker.moreAbove",{count:H0().start})),y((_)=>q(a,"fg",Y.textMuted,_)),a}}),null),U($,b(Z1,{get each(){return H0().items},children:(a,_)=>{let v=()=>H0().start+_(),i0=()=>v()===n(),m0=()=>m()==="saved"&&a===J.defaultRepo,A0=()=>m()==="saved"&&B().trim()===a,l0=()=>m()==="browse"?"/":"",B1=()=>m0()?` ${F("newTask.hint.currentDir")}`:"";return(()=>{var R1=W("text");return q(R1,"wrapMode","none"),q(R1,"onMouseUp",()=>v0(v())),U(R1,()=>i0()?"\u25B8 ":" ",null),U(R1,a,null),U(R1,l0,null),U(R1,B1,null),y((DJ)=>{var jz=i0()?Y.primary:A0()?Y.accent:Y.textMuted,OY=i0()?Hz.BOLD:void 0;return jz!==DJ.e&&(DJ.e=q(R1,"fg",jz,DJ.e)),OY!==DJ.t&&(DJ.t=q(R1,"attributes",OY,DJ.t)),DJ},{e:void 0,t:void 0}),R1})()}}),null),U($,b(Y0,{get when(){return H0().start+H0().items.length<H0().total},get children(){var a=W("text");return q(a,"wrapMode","none"),U(a,()=>F("newTask.picker.moreBelow",{count:H0().total-H0().start-H0().items.length})),y((_)=>q(a,"fg",Y.textMuted,_)),a}}),null),$}}),(()=>{var $=W("box"),a=W("text"),_=W("input");return D($,a),D($,_),q($,"gap",0),U(a,()=>F("newTask.field.fromBranch")),q(_,"placeholder",Tz),q(_,"onInput",(v)=>{R(!0),A(gJ(v))}),q(_,"onSubmit",()=>{A(mF(L(),S0(),p0())),R(!0),k0()}),y((v)=>{var i0=F1("baseRef"),m0=A1("baseRef"),A0=L(),l0=j()==="baseRef";return i0!==v.e&&(v.e=q(a,"fg",i0,v.e)),m0!==v.t&&(v.t=q(a,"attributes",m0,v.t)),A0!==v.a&&(v.a=q(_,"value",A0,v.a)),l0!==v.o&&(v.o=q(_,"focused",l0,v.o)),v},{e:void 0,t:void 0,a:void 0,o:void 0}),$})(),b(Y0,{get when(){return N0(()=>j()==="baseRef"&&S0().length===0)()&&V0()==null},get children(){var $=W("box"),a=W("text");return D($,a),q($,"gap",0),q($,"paddingLeft",2),q($,"paddingBottom",1),q(a,"wrapMode","none"),U(a,(()=>{var _=N0(()=>o0().length===0);return()=>_()?F("newTask.hint.noBranchesFound"):F("newTask.hint.noMatchBranch")})()),y((_)=>q(a,"fg",Y.textMuted,_)),$}}),b(Y0,{get when(){return N0(()=>j()==="baseRef")()&&S0().length>0},get children(){var $=W("box");return q($,"gap",0),q($,"paddingLeft",2),q($,"paddingBottom",1),U($,b(Y0,{get when(){return L0().start>0},get children(){var a=W("text");return q(a,"wrapMode","none"),U(a,()=>F("newTask.picker.moreAbove",{count:L0().start})),y((_)=>q(a,"fg",Y.textMuted,_)),a}}),null),U($,b(Z1,{get each(){return L0().items},children:(a,_)=>{let v=()=>L0().start+_(),i0=()=>v()===p0(),m0=()=>L().trim()===a;return(()=>{var A0=W("text");return q(A0,"wrapMode","none"),q(A0,"onMouseUp",()=>{A(a),R(!0),h(v()),V("confirm")}),U(A0,()=>i0()?"\u25B8 ":" ",null),U(A0,a,null),y((l0)=>{var B1=i0()?Y.primary:m0()?Y.accent:Y.textMuted,R1=i0()?Hz.BOLD:void 0;return B1!==l0.e&&(l0.e=q(A0,"fg",B1,l0.e)),R1!==l0.t&&(l0.t=q(A0,"attributes",R1,l0.t)),l0},{e:void 0,t:void 0}),A0})()}}),null),U($,b(Y0,{get when(){return L0().start+L0().items.length<L0().total},get children(){var a=W("text");return q(a,"wrapMode","none"),U(a,()=>F("newTask.picker.moreBelow",{count:L0().total-L0().start-L0().items.length})),y((_)=>q(a,"fg",Y.textMuted,_)),a}}),null),$}})]}}),null),U(I0,b(Y0,{get when(){return Z()==="clone"},get children(){return[(()=>{var $=W("box"),a=W("text"),_=W("input");return D($,a),D($,_),q($,"gap",0),U(a,()=>F("newTask.field.gitUrl")),q(_,"placeholder","https://github.com/user/repo.git"),q(_,"onInput",(v)=>P(gJ(v))),q(_,"onSubmit",()=>{if(!u().trim())return;V("cloneParent")}),y((v)=>{var i0=F1("cloneUrl"),m0=A1("cloneUrl"),A0=u(),l0=j()==="cloneUrl";return i0!==v.e&&(v.e=q(a,"fg",i0,v.e)),m0!==v.t&&(v.t=q(a,"attributes",m0,v.t)),A0!==v.a&&(v.a=q(_,"value",A0,v.a)),l0!==v.o&&(v.o=q(_,"focused",l0,v.o)),v},{e:void 0,t:void 0,a:void 0,o:void 0}),$})(),(()=>{var $=W("box"),a=W("text"),_=W("input");return D($,a),D($,_),q($,"gap",0),U(a,()=>F("newTask.field.parentDir")),q(_,"placeholder","~/"),q(_,"onInput",(v)=>{s(!1),g(gJ(v))}),q(_,"onSubmit",()=>K0()),y((v)=>{var i0=F1("cloneParent"),m0=A1("cloneParent"),A0=S(),l0=j()==="cloneParent";return i0!==v.e&&(v.e=q(a,"fg",i0,v.e)),m0!==v.t&&(v.t=q(a,"attributes",m0,v.t)),A0!==v.a&&(v.a=q(_,"value",A0,v.a)),l0!==v.o&&(v.o=q(_,"focused",l0,v.o)),v},{e:void 0,t:void 0,a:void 0,o:void 0}),$})(),b(Y0,{get when(){return j()==="cloneParent"},get children(){var $=W("box"),a=W("text");return D($,a),q($,"paddingLeft",2),q(a,"wrapMode","none"),U(a,()=>F("newTask.hint.remembered")),y((_)=>q(a,"fg",Y.textMuted,_)),$}}),b(Y0,{get when(){return N0(()=>j()==="cloneParent"&&P0().length>0)()&&!k1()},get children(){var $=W("box");return q($,"gap",0),q($,"paddingLeft",2),U($,b(Y0,{get when(){return u0().start>0},get children(){var a=W("text");return q(a,"wrapMode","none"),U(a,()=>F("newTask.picker.moreAbove",{count:u0().start})),y((_)=>q(a,"fg",Y.textMuted,_)),a}}),null),U($,b(Z1,{get each(){return u0().items},children:(a,_)=>{let v=()=>u0().start+_(),i0=()=>v()===G1();return(()=>{var m0=W("text"),A0=T0("/");return D(m0,A0),q(m0,"wrapMode","none"),q(m0,"onMouseUp",()=>y0(v())),U(m0,()=>i0()?"\u25B8 ":" ",A0),U(m0,a,A0),y((l0)=>{var B1=i0()?Y.primary:Y.textMuted,R1=i0()?Hz.BOLD:void 0;return B1!==l0.e&&(l0.e=q(m0,"fg",B1,l0.e)),R1!==l0.t&&(l0.t=q(m0,"attributes",R1,l0.t)),l0},{e:void 0,t:void 0}),m0})()}}),null),U($,b(Y0,{get when(){return u0().start+u0().items.length<u0().total},get children(){var a=W("text");return q(a,"wrapMode","none"),U(a,()=>F("newTask.picker.moreBelow",{count:u0().total-u0().start-u0().items.length})),y((_)=>q(a,"fg",Y.textMuted,_)),a}}),null),$}}),(()=>{var $=W("box"),a=W("text"),_=W("input");return D($,a),D($,_),q($,"gap",0),U(a,()=>F("newTask.field.folderName")),q(_,"onInput",(v)=>{i(!0),T(gJ(v))}),q(_,"onSubmit",()=>V("cloneBaseRef")),y((v)=>{var i0=F1("cloneFolder"),m0=A1("cloneFolder"),A0=M(),l0=F("newTask.placeholder.folderName"),B1=j()==="cloneFolder";return i0!==v.e&&(v.e=q(a,"fg",i0,v.e)),m0!==v.t&&(v.t=q(a,"attributes",m0,v.t)),A0!==v.a&&(v.a=q(_,"value",A0,v.a)),l0!==v.o&&(v.o=q(_,"placeholder",l0,v.o)),B1!==v.i&&(v.i=q(_,"focused",B1,v.i)),v},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),$})(),(()=>{var $=W("box"),a=W("text"),_=W("input");return D($,a),D($,_),q($,"gap",0),U(a,()=>F("newTask.field.baseBranch")),q(_,"placeholder",Tz),q(_,"onInput",(v)=>E(gJ(v))),q(_,"onSubmit",()=>void s0()),y((v)=>{var i0=F1("cloneBaseRef"),m0=A1("cloneBaseRef"),A0=J0(),l0=j()==="cloneBaseRef";return i0!==v.e&&(v.e=q(a,"fg",i0,v.e)),m0!==v.t&&(v.t=q(a,"attributes",m0,v.t)),A0!==v.a&&(v.a=q(_,"value",A0,v.a)),l0!==v.o&&(v.o=q(_,"focused",l0,v.o)),v},{e:void 0,t:void 0,a:void 0,o:void 0}),$})(),b(Y0,{get when(){return z0()},get children(){var $=W("box"),a=W("text");return D($,a),q($,"gap",0),q($,"paddingLeft",2),q(a,"wrapMode","none"),U(a,()=>o()||F("newTask.clone.progressFallback")),y((_)=>q(a,"fg",Y.textMuted,_)),$}})]}}),null),U(I0,b(Y0,{get when(){return Z()==="adopt"},get children(){return[(()=>{var $=W("box"),a=W("text"),_=W("input");return D($,a),D($,_),q($,"gap",0),U(a,()=>F("newTask.field.adoptFilter")),q(_,"onInput",(v)=>C0(gJ(v))),q(_,"onSubmit",()=>R0()),y((v)=>{var i0=F1("adoptFilter"),m0=A1("adoptFilter"),A0=j0(),l0=F("newTask.placeholder.adoptFilter"),B1=j()==="adoptFilter";return i0!==v.e&&(v.e=q(a,"fg",i0,v.e)),m0!==v.t&&(v.t=q(a,"attributes",m0,v.t)),A0!==v.a&&(v.a=q(_,"value",A0,v.a)),l0!==v.o&&(v.o=q(_,"placeholder",l0,v.o)),B1!==v.i&&(v.i=q(_,"focused",B1,v.i)),v},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),$})(),(()=>{var $=W("box"),a=W("text");return D($,a),q($,"paddingLeft",2),q(a,"wrapMode","none"),U(a,()=>F("newTask.adopt.repoLine",{path:RJ(B().trim())||F("newTask.adopt.repoNone")})),y((_)=>q(a,"fg",Y.textMuted,_)),$})(),b(Y0,{get when(){return D1.loading},get children(){var $=W("box"),a=W("text");return D($,a),q($,"paddingLeft",2),q(a,"wrapMode","none"),U(a,()=>F("newTask.hint.scanningWorktrees")),y((_)=>q(a,"fg",Y.textMuted,_)),$}}),b(Y0,{get when(){return N0(()=>!D1.loading)()&&f1().length===0},get children(){var $=W("box"),a=W("text");return D($,a),q($,"paddingLeft",2),q(a,"wrapMode","none"),U(a,(()=>{var _=N0(()=>(D1()??[]).length===0);return()=>_()?F("newTask.adopt.noUnlinked"):F("newTask.adopt.noMatch")})()),y((_)=>q(a,"fg",Y.textMuted,_)),$}}),b(Y0,{get when(){return f1().length>0},get children(){var $=W("box"),a=W("text");return D($,a),q($,"gap",0),q($,"paddingLeft",2),U($,b(Y0,{get when(){return G0().start>0},get children(){var _=W("text");return q(_,"wrapMode","none"),U(_,()=>F("newTask.picker.moreAbove",{count:G0().start})),y((v)=>q(_,"fg",Y.textMuted,v)),_}}),a),U($,b(Z1,{get each(){return X0()},children:(_,v)=>{let i0=()=>G0().start+v(),m0=()=>i0()===t0(),A0=()=>E0().has(_.path),l0=()=>[_.dirty?"dirty":"",_.kobeManaged?"":"external"].filter(Boolean).join(",");return(()=>{var B1=W("text");return q(B1,"wrapMode","none"),q(B1,"onMouseUp",()=>{z1(i0()),W0(_.path)}),U(B1,()=>m0()?"\u25B8 ":" ",null),U(B1,()=>A0()?"[x] ":"[ ] ",null),U(B1,()=>_.branch,null),U(B1,(()=>{var R1=N0(()=>!!l0());return()=>R1()?` (${l0()})`:""})(),null),y((R1)=>{var DJ=m0()?Y.primary:A0()?Y.accent:Y.textMuted,jz=m0()?Hz.BOLD:void 0;return DJ!==R1.e&&(R1.e=q(B1,"fg",DJ,R1.e)),jz!==R1.t&&(R1.t=q(B1,"attributes",jz,R1.t)),R1},{e:void 0,t:void 0}),B1})()}}),a),U($,b(Y0,{get when(){return G0().start+G0().items.length<G0().total},get children(){var _=W("text");return q(_,"wrapMode","none"),U(_,()=>F("newTask.picker.moreBelow",{count:G0().total-G0().start-G0().items.length})),y((v)=>q(_,"fg",Y.textMuted,v)),_}}),a),q(a,"wrapMode","none"),U(a,(()=>{var _=N0(()=>E0().size>0);return()=>_()?F("newTask.adopt.hintSelected",{count:E0().size}):F("newTask.adopt.hintDefault")})()),y((_)=>q(a,"fg",Y.textMuted,_)),$}})]}}),null),U(I0,b(Y0,{get when(){return V0()},get children(){var $=W("text"),a=T0("\u203B ");return D($,a),q($,"wrapMode","word"),U($,V0,null),y((_)=>q($,"fg",Y.error,_)),$}}),null),D(fJ,pJ),D(fJ,bJ),q(fJ,"flexDirection","row"),q(fJ,"justifyContent","space-between"),q(fJ,"alignItems","center"),q(fJ,"paddingTop",1),q(fJ,"paddingBottom",1),U(pJ,()=>F("newTask.hint.legend")),q(bJ,"onMouseUp",()=>x0()),U(bJ,(()=>{var $=N0(()=>!!z0());return()=>$()?F("newTask.button.cloning"):N0(()=>j()==="confirm")()?F("newTask.button.createFocused"):F("newTask.button.create")})()),y(($)=>{var a=Hz.BOLD,_=Y.text,v=F1("engine"),i0=A1("engine"),m0=Y.textMuted,A0=Y.textMuted,l0=j()==="confirm"?Y.primary:Y.text,B1=j()==="confirm"?Hz.BOLD:void 0;return a!==$.e&&($.e=q(e,"attributes",a,$.e)),_!==$.t&&($.t=q(e,"fg",_,$.t)),v!==$.a&&($.a=q(UJ,"fg",v,$.a)),i0!==$.o&&($.o=q(UJ,"attributes",i0,$.o)),m0!==$.i&&($.i=q(_J,"fg",m0,$.i)),A0!==$.n&&($.n=q(pJ,"fg",A0,$.n)),l0!==$.s&&($.s=q(bJ,"fg",l0,$.s)),B1!==$.h&&($.h=q(bJ,"attributes",B1,$.h)),$},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0}),I})()}var dF=C(()=>{w();w();w();w();w();w();w();w();ZJ();_1();W1();h1();Uf();kJ();Lf();$J();uF();i8()});function Zx(J,z,Y,Z){return new Promise((G)=>{J.replace(()=>b(cF,{defaultRepo:z,savedRepos:Y,get defaultCloneParent(){return Z?.defaultCloneParent},get defaultVendor(){return Z?.defaultVendor},get availableVendors(){return Z?.availableVendors},get discoverAdoptable(){return Z?.discoverAdoptable},onSubmit:(X)=>G(X),onCancel:()=>G(void 0)}),()=>G(void 0)),J.setSize("medium")})}var Ff;var pG=C(()=>{w();dF();i8();Ff={show:Zx}});function nF(J,z){return[{key:"tab",cmd:()=>z.cycleField(1)},{key:"shift+tab",cmd:()=>z.cycleField(-1)},{key:"ctrl+e",cmd:()=>z.stepEngine(1)},...J==="engine"?[{key:"left",cmd:()=>z.stepEngine(-1)},{key:"right",cmd:()=>z.stepEngine(1)},{key:"return",cmd:()=>z.commit()}]:[]]}import{TextAttributes as iF}from"@opentui/core";function Gx(J){let z=n1(),{theme:Y}=w0(),[Z,G]=p("prompt"),[X,Q]=p(""),[H,f]=p(J.defaultVendor),[j,V]=p(J.defaultBaseRef);function B(O){let R=Mf.indexOf(Z());G(Mf[(R+O+Mf.length)%Mf.length]??"prompt")}function K(O){let R=J.engines;if(R.length===0)return;if(O>0){f((P)=>AY(R,P));return}let u=Math.max(0,R.indexOf(H()));f(R[(u-1+R.length)%R.length]??H())}function L(){if(kQ(X())){G("prompt");return}J.onSubmit({prompt:X().trim(),vendor:H(),baseRef:j().trim()||J.defaultBaseRef}),z.clear()}U1(()=>({enabled:!0,bindings:nF(Z(),{cycleField:B,stepEngine:K,commit:L})}));let A=(O)=>Z()===O?Y.accent:Y.textMuted;return(()=>{var O=W("box"),R=W("box"),u=W("text"),P=W("text"),S=W("box"),g=W("text"),M=W("input"),T=W("box"),d=W("text"),i=W("box"),J0=W("text"),E=W("input"),z0=W("box"),q0=W("text");return D(O,R),D(O,S),D(O,T),D(O,i),D(O,z0),q(O,"paddingLeft",2),q(O,"paddingRight",2),q(O,"gap",1),D(R,u),D(R,P),q(R,"flexDirection","row"),q(R,"justifyContent","space-between"),U(u,()=>F("quickTask.title",{repoLabel:J.repoLabel})),q(P,"onMouseUp",()=>J.onCancel()),U(P,()=>F("quickTask.esc")),D(S,g),D(S,M),q(S,"gap",0),U(g,()=>F("quickTask.promptLabel")),q(M,"onInput",(o)=>Q(gJ(o))),q(M,"onSubmit",()=>L()),D(T,d),q(T,"flexDirection","row"),q(T,"gap",2),U(d,()=>F("quickTask.engineLabel")),U(T,b(Z1,{get each(){return J.engines},children:(o)=>(()=>{var B0=W("text");return q(B0,"onMouseUp",()=>{f(o),G("engine")}),U(B0,()=>J.engineLabel(o)),y((g0)=>{var m=H()===o?Y.primary:Y.textMuted,r=H()===o?iF.BOLD:void 0;return m!==g0.e&&(g0.e=q(B0,"fg",m,g0.e)),r!==g0.t&&(g0.t=q(B0,"attributes",r,g0.t)),g0},{e:void 0,t:void 0}),B0})()}),null),D(i,J0),D(i,E),q(i,"gap",0),U(J0,()=>F("quickTask.branchLabel")),q(E,"onInput",(o)=>V(gJ(o))),q(E,"onSubmit",()=>L()),D(z0,q0),q(z0,"paddingBottom",1),U(q0,()=>F("quickTask.legend")),y((o)=>{var B0=iF.BOLD,g0=Y.text,m=Y.textMuted,r=A("prompt"),c=X(),N=F("quickTask.promptPlaceholder"),t=Z()==="prompt",x=A("engine"),n=A("branch"),Q0=j(),H0=J.defaultBaseRef,F0=Z()==="branch",M0=Y.textMuted;return B0!==o.e&&(o.e=q(u,"attributes",B0,o.e)),g0!==o.t&&(o.t=q(u,"fg",g0,o.t)),m!==o.a&&(o.a=q(P,"fg",m,o.a)),r!==o.o&&(o.o=q(g,"fg",r,o.o)),c!==o.i&&(o.i=q(M,"value",c,o.i)),N!==o.n&&(o.n=q(M,"placeholder",N,o.n)),t!==o.s&&(o.s=q(M,"focused",t,o.s)),x!==o.h&&(o.h=q(d,"fg",x,o.h)),n!==o.r&&(o.r=q(J0,"fg",n,o.r)),Q0!==o.d&&(o.d=q(E,"value",Q0,o.d)),H0!==o.l&&(o.l=q(E,"placeholder",H0,o.l)),F0!==o.u&&(o.u=q(E,"focused",F0,o.u)),M0!==o.c&&(o.c=q(q0,"fg",M0,o.c)),o},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0}),O})()}function Xx(J,z){return new Promise((Y)=>{J.replace(()=>b(Gx,gL(z,{onSubmit:(Z)=>Y(Z),onCancel:()=>Y(void 0)})),()=>Y(void 0)),J.setSize("medium")})}var Mf,lF;var $F=C(()=>{w();w();w();w();w();w();w();W1();_1();h1();ZJ();kJ();$J();pG();Mf=["prompt","engine","branch"];lF={show:Xx}});async function Of(J={}){let z=J.logTag??"orch-connect",Y=J.connect??Qz,Z=null;try{let G=await Y();if(!G)return ZY(z,"no daemon running \u2014 caller degrades"),null;return Z=new AJ(G,{...J.orchestratorOptions,channels:J.channels}),await Z.init(),Z}catch(G){return JJ(z,G),Z?.dispose(),null}}var l8=C(()=>{GZ();CJ();_Y()});function aF(J){let[z,Y]=p(J.initial??"sidebar"),[Z,G]=p(0),X=WJ();function Q(B){if(G((L)=>L+1),z()===B)return;let K=X?.currentFocusedRenderable;if(K&&!K.isDestroyed)try{K.blur()}catch{}Y(B)}function H(B){let L=(Af.indexOf(z())+B+Af.length)%Af.length;Q(Af[L])}let f=new Map;function j(B){let K=f.get(B);if(!K)K=()=>z()===B,f.set(B,K);return K}let V={focused:z,is:j,setFocused:Q,cycle:H,refocusTick:Z};return b(Qx.Provider,{value:V,get children(){return J.children}})}var Af,Qx;var _F=C(()=>{w();w();W1();Af=["sidebar","workspace","files","terminal"],Qx=Pz(null)});function pF(){for(let J of pY){let z=qx.get(J.id);if(!z)continue;let Y=J;Y.keys=[...z.keys],Y.hint=z.hint?{...z.hint}:void 0}}function rF(){Hx((J)=>J+1)}function a8(J){return fx.get(J)}function jx(J){return a8(J)?.keys??[]}function rY(J){let z=[];for(let Y in J){let Z=J[Y];if(!Z)continue;let G=jx(Y);if(G.length===0){console.warn(`[kobe/keybindings] bindByIds: id="${Y}" has no chords (or doesn't exist in KobeKeymap)`);continue}G.forEach((X,Q)=>z.push({key:X,cmd:Z,slot:Q}))}return z}var pY,qx,$8,Hx,fx;var rG=C(()=>{W1();pY=[{id:"help.open",scope:"global",keys:["f1"],category:"Global",description:"Show keybindings help",hint:{keys:"F1",label:"help",pin:"right"}},{id:"task.new",scope:"sidebar",keys:["n"],category:"Sidebar",description:"New task",hint:{keys:"n",label:"new"}},{id:"task.openEditor",scope:"global",keys:["ctrl+o"],category:"Global",description:"Open active task worktree in editor"},{id:"settings.open",scope:"global",keys:["ctrl+,"],category:"Global",description:"Open settings"},{id:"settings.open.sidebar",scope:"sidebar",keys:["s"],category:"Sidebar",description:"Open settings",hint:{keys:"s",label:"settings",status:!1}},{id:"app.quit",scope:"sidebar",keys:["q"],category:"Sidebar",description:"Quit (with confirm)",hint:{keys:"q",label:"quit",status:!1}},{id:"focus.sidebar",scope:"workspace",keys:["ctrl+q"],category:"Workspace",description:"Back to sidebar (tasks)",hint:{keys:"ctrl+q",label:"tasks"}},{id:"focus.numeric",scope:"global",keys:["ctrl+h","ctrl+j","ctrl+k","ctrl+l"],category:"Navigation",description:"Jump to pane (h=sidebar, j=workspace, k=files, l=terminal)",hint:{keys:"ctrl+hjkl",label:"focus",pin:"right",status:!1}},{id:"chat.interrupt",scope:"workspace",keys:[],category:"Workspace",description:"Interrupt current turn (esc while streaming)"},{id:"sidebar.nav",scope:"sidebar",keys:["j","k","down","up"],category:"Sidebar",description:"Move cursor up/down",hint:{keys:"j/k",label:"nav"}},{id:"sidebar.select",scope:"sidebar",keys:["return"],category:"Sidebar",description:"Open the selected task",hint:{keys:"enter",label:"select"}},{id:"sidebar.goto",scope:"sidebar",keys:["g"],category:"Sidebar",description:"Top / bottom of list (gg or shift-G)"},{id:"sidebar.rename",scope:"sidebar",keys:["r"],category:"Sidebar",description:"Rename task",hint:{keys:"r",label:"rename",status:!1}},{id:"sidebar.archive",scope:"sidebar",keys:["a"],category:"Sidebar",description:"Toggle archive",hint:{keys:"a",label:"archive",status:!1}},{id:"sidebar.localMerge",scope:"sidebar",keys:["m"],category:"Sidebar",description:"Local merge task into parent repo (Shift+M)",hint:{keys:"M",label:"merge",status:!1}},{id:"sidebar.pin",scope:"sidebar",keys:["p"],category:"Sidebar",description:"Pin / unpin task at top (Shift+P)",hint:{keys:"P",label:"pin",status:!1}},{id:"sidebar.view",scope:"sidebar",keys:["[","]"],category:"Sidebar",description:"Switch view (Working session \u2194 Archives)",hint:{keys:"[/]",label:"view",status:!1}},{id:"sidebar.sort",scope:"sidebar",keys:["t"],category:"Sidebar",description:"Switch task sort (default \u2194 recent)",hint:{keys:"t",label:"sort",status:!1}},{id:"sidebar.projectFilter",scope:"sidebar",keys:["ctrl+p"],category:"Sidebar",description:"Cycle task project filter",hint:{keys:"ctrl+p",label:"project",status:!1}},{id:"sidebar.delete",scope:"sidebar",keys:["d"],category:"Sidebar",description:"Delete task (with confirm)",hint:{keys:"d",label:"delete",status:!1}},{id:"sidebar.search.enter",scope:"sidebar",keys:["/"],category:"Sidebar",description:"Search tasks (fuzzy filter)",hint:{keys:"/",label:"search"}},{id:"sidebar.search.nav",scope:"sidebar",keys:["down","up"],category:"Sidebar",description:"Move highlight in search results"},{id:"sidebar.search.submit",scope:"sidebar",keys:["return"],category:"Sidebar",description:"Select search match and exit search"},{id:"sidebar.search.cancel",scope:"sidebar",keys:["escape"],category:"Sidebar",description:"Cancel search (restore prior selection)"},{id:"tasks.openWorktree",scope:"sidebar",keys:["o"],category:"Tasks pane",description:"Open selected task's worktree in your editor",hint:{keys:"o",label:"open wt",status:!1}},{id:"tasks.renameBranch",scope:"sidebar",keys:["b"],category:"Tasks pane",description:"Rename the selected task's git branch",hint:{keys:"b",label:"branch",status:!1}},{id:"tasks.cycleEngine",scope:"sidebar",keys:["v"],category:"Tasks pane",description:"Cycle engine vendor (claude \u2194 codex \u2194 \u2026) \u2014 applies on reopen",hint:{keys:"v",label:"engine",status:!1}},{id:"tasks.update",scope:"sidebar",keys:["u"],category:"Tasks pane",description:"Open the update page (when a new version is available)",hint:{keys:"u",label:"update",status:!1}},{id:"tasks.focusEngine",scope:"sidebar",keys:["right"],category:"Tasks pane",description:"Focus the engine pane of the current window",hint:{keys:"\u2192",label:"engine",status:!1}},{id:"tasks.toggleKeys",scope:"sidebar",keys:["?"],category:"Tasks pane",description:"Collapse / expand the keys legend",hint:{keys:"?",label:"fold keys",status:!1}},{id:"tmux.quickTask",scope:"global",keys:[],category:"Workspace (tmux)",description:"Quick new task (tmux prefix, then f)",hint:{keys:"prefix f",label:"new task",status:!1}},{id:"tmux.engineTab",scope:"global",keys:[],category:"Workspace (tmux)",description:"Open the engine in a new tab (tmux prefix, then t)",hint:{keys:"prefix t",label:"engine tab",status:!1}},{id:"tmux.layout.workspaceSplit",scope:"global",keys:[],category:"Workspace (tmux)",description:"Add a temporary workspace split (tmux prefix, then s)",hint:{keys:"prefix s",label:"split",status:!1}},{id:"tmux.layout.workspaceClose",scope:"global",keys:[],category:"Workspace (tmux)",description:"Close the focused temporary workspace split (tmux prefix, then x)",hint:{keys:"prefix x",label:"close split",status:!1}},{id:"tmux.layout.workspaceReset",scope:"global",keys:[],category:"Workspace (tmux)",description:"Close all temporary workspace splits (tmux prefix, then r)",hint:{keys:"prefix r",label:"reset splits",status:!1}},{id:"tmux.layout.tasksToggle",scope:"global",keys:[],category:"Workspace (tmux)",description:"Hide / restore the Tasks pane (tmux prefix, then a)",hint:{keys:"prefix a",label:"tasks pane",status:!1}},{id:"tmux.layout.opsToggle",scope:"global",keys:[],category:"Workspace (tmux)",description:"Toggle the file/Ops pane (tmux prefix, then o)",hint:{keys:"prefix o",label:"file pane",status:!1}},{id:"tmux.layout.terminalToggle",scope:"global",keys:[],category:"Workspace (tmux)",description:"Hide / restore the terminal pane (tmux prefix, then z)",hint:{keys:"prefix z",label:"terminal",status:!1}},{id:"tmux.layout.zenToggle",scope:"global",keys:[],category:"Workspace (tmux)",description:"Zen mode \u2014 collapse to the engine pane (tmux prefix, then space)",hint:{keys:"prefix space",label:"zen",status:!1}},{id:"chat.send",scope:"workspace",keys:[],category:"Workspace",description:"Send message (composer)",hint:{keys:"enter",label:"send"}},{id:"chat.newline",scope:"workspace",keys:[],category:"Workspace",description:"Newline in composer",hint:{keys:"shift+enter",label:"newline"}},{id:"chat.cycle-mode",scope:"workspace",keys:[],category:"Workspace",description:"Cycle permission mode (composer)",hint:{keys:"shift+tab",label:"mode"}},{id:"chat.steer",scope:"workspace",keys:[],category:"Workspace",description:"Steer (interrupt + send) \u2014 mid-stream only",hint:{keys:"ctrl+enter",label:"steer",status:!1}},{id:"chat.tab.new",scope:"workspace",keys:["ctrl+t"],category:"Workspace",description:"New chat tab",hint:{keys:"ctrl+t",label:"new tab"}},{id:"chat.fork.new",scope:"workspace",keys:["ctrl+f"],category:"Workspace",description:"Quick-fork: create child task seeded with current repo/branch/model",hint:{keys:"ctrl+f",label:"fork"}},{id:"chat.session.resume",scope:"workspace",keys:["ctrl+y"],category:"Workspace",description:"Resume a prior session in this task's worktree",hint:{keys:"ctrl+y",label:"resume",status:!1}},{id:"chat.tab.close",scope:"workspace",keys:["ctrl+w"],category:"Workspace",description:"Close chat tab",hint:{keys:"ctrl+w",label:"close tab",status:!1}},{id:"chat.tab.rename",scope:"workspace",keys:["f2"],category:"Workspace",description:"Rename active chat tab",hint:{keys:"f2",label:"rename tab",status:!1}},{id:"chat.tab.cycle-next",scope:"workspace",keys:["ctrl+]"],category:"Workspace",description:"Next chat tab",hint:{keys:"ctrl+]",label:"next tab",status:!1}},{id:"chat.tab.cycle-prev",scope:"workspace",keys:["ctrl+["],category:"Workspace",description:"Previous chat tab",hint:{keys:"ctrl+[",label:"prev tab",status:!1}},{id:"chat.question.nav",scope:"workspace",keys:["j","k","down","up"],category:"Workspace",description:"Move highlight in question picker",hint:{keys:"j/k",label:"pick",status:!1}},{id:"chat.question.toggle",scope:"workspace",keys:["space"],category:"Workspace",description:"Toggle highlighted option in question picker",hint:{keys:"space",label:"toggle",status:!1}},{id:"chat.question.submit",scope:"workspace",keys:["return"],category:"Workspace",description:"Advance / submit question picker",hint:{keys:"enter",label:"submit",status:!1}},{id:"chat.question.pick-number",scope:"workspace",keys:["1","2","3","4","5","6","7","8","9"],category:"Workspace",description:"Pick option by number in question picker",hint:{keys:"1-9",label:"pick",status:!1}},{id:"files.nav",scope:"files",keys:["j","k","down","up"],category:"Files",description:"Move cursor up/down",hint:{keys:"j/k",label:"nav"}},{id:"files.hierarchy",scope:"files",keys:["h","l","left","right"],category:"Files",description:"Collapse / expand tree level",hint:{keys:"h/l",label:"level"}},{id:"files.open",scope:"files",keys:["return"],category:"Files",description:"Open file in nvim (diff vs HEAD when changed)",hint:{keys:"enter",label:"open"}},{id:"files.tab",scope:"files",keys:["[","]"],category:"Files",description:"Switch tab (cycle All / Changes)",hint:{keys:"[/]",label:"tab",status:!1}},{id:"files.refresh",scope:"files",keys:["r"],category:"Files",description:"Refresh",hint:{keys:"r",label:"refresh",status:!1}},{id:"files.openExternal",scope:"files",keys:["o"],category:"Files",description:"Open file in system default app (audio / video / pdf preview)",hint:{keys:"o",label:"open external",status:!1}},{id:"files.mention",scope:"files",keys:["a"],category:"Files",description:"Inject @<path> mention into the engine pane",hint:{keys:"a",label:"@mention"}},{id:"files.createPR",scope:"files",keys:["p"],category:"Files",description:"Create PR from the current task",hint:{keys:"p",label:"create PR"}},{id:"terminal.scroll-up",scope:"terminal",keys:["ctrl+pageup"],category:"Terminal",description:"Scroll scrollback up",hint:{keys:"ctrl+pgup",label:"scroll",status:!1}},{id:"terminal.scroll-down",scope:"terminal",keys:["ctrl+pagedown"],category:"Terminal",description:"Scroll scrollback down"},{id:"terminal.reset",scope:"terminal",keys:["f5"],category:"Terminal",description:"Reset terminal \u2014 kill the current shell and respawn",hint:{keys:"f5",label:"reset"}},{id:"dialog.cancel",scope:"global",keys:[],category:"Dialog",description:"Close the top dialog (esc)"},{id:"dialog.newtask.tab.cycle",scope:"global",keys:[],category:"Dialog",description:"Switch New Task tab (Existing / New Repo)",hint:{keys:"ctrl+[/]",label:"tab"}}],qx=new Map(pY.map((J)=>[J.id,{keys:[...J.keys],hint:J.hint?{...J.hint}:void 0}]));[$8,Hx]=p(0);fx=new Map(pY.map((J)=>[J.id,J]))});function Rf(){if(oY)return oY;let J=iq();if(!J.exists)return oY={path:J.path,exists:!1,applied:[],warnings:[]},oY;let z=[...J.warnings],Y=$q(J.doc,process.platform,{chordOptsFor:OB});z.push(...Y.warnings);let Z=Y.entries.filter((H)=>H.id.startsWith("tmux.")),G=Y.entries.filter((H)=>!H.id.startsWith("tmux.")),X=vK(pY,G);z.push(...X.warnings);let Q=[...X.applied];if(Z.length>0){let H=MB(Z);z.push(...H.warnings);for(let f of H.overridden){if(f===vz){Q.push({id:f,keys:H.focus.map((B)=>B?.chord??"").filter((B)=>B!==""),defaultKeys:uY});continue}let j=H.binds[f];Q.push({id:f,keys:j?[j.chord]:[],defaultKeys:[AZ[f]]});let V=pY.find((B)=>B.id===f);if(V?.hint)V.hint.keys=j?`${jG(f)?"prefix ":""}${j.chord}`:"\u2014"}}for(let H of z)console.warn(`[kobe/keybindings] ${H}`);return oY={path:J.path,exists:!0,applied:Q,warnings:z},oY}function oF(){return oY??Rf()}function sF(){oY=null,hK(),nK(),pF();let J=Rf();return rF(),J}var oY=null;var _8=C(()=>{LB();pq();aq();rG()});var Bx=250,oG,tF;var SQ=C(()=>{lG();sz();C8();({use:oG,provider:tF}=Wf({name:"KV",init:()=>{let[J,z]=_z(LJ()),Y=new Set,Z=null;function G(H){if(Y.size===0)return!0;try{let f={};for(let j of Y)f[j]=J[j];return gY(f),Y.clear(),!0}catch(f){return console.error(`[kobe] kv ${H} failed:`,f),!1}}function X(){if(Z)clearTimeout(Z);Z=setTimeout(()=>{Z=null,G("write")},Bx)}let Q={get ready(){return!0},get store(){return J},signal(H,f){if(J[H]===void 0)z(H,f);return[()=>Q.get(H),(j)=>Q.set(H,j)]},get(H,f){return J[H]??f},set(H,f){z(H,f),Y.add(H),X()},flush(){if(Z)clearTimeout(Z),Z=null;return G("flush")},clear(){for(let H of Object.keys(J))z(H,void 0);if(Z)clearTimeout(Z),Z=null;Y.clear();try{VV({})}catch(H){console.error("[kobe] kv clear write failed:",H)}}};return Q}}))});var gf="../pulse-n3cq1btw.wav";var eF=()=>{};import{existsSync as Vx,mkdirSync as Kx}from"fs";import{tmpdir as Ux}from"os";import{basename as Dx,isAbsolute as Lx,join as p8,resolve as Fx}from"path";function Ox(J,z,Y){if(J==="ffplay")return[J,"-autoexit","-nodisp","-af",`volume=${Y}`,z];if(J==="mpv")return[J,"--no-video","--audio-display=no","--volume",String(Math.round(Y*100)),z];if(J==="mpg123"||J==="mpg321")return[J,"-g",String(Math.round(Y*100)),z];if(J==="mplayer")return[J,"-vo","null","-volume",String(Math.round(Y*100)),z];if(J==="afplay"||J==="omxplayer"||J==="aplay"||J==="cmdmp3")return[J,z];if(J==="play")return[J,"-v",String(Y),z];if(J==="cvlc")return[J,`--gain=${Y}`,"--play-and-exit",z];return[J,"-c",`(New-Object Media.SoundPlayer '${z.replace(/'/g,"''")}').PlaySync()`]}function Ax(){if(Nf!==void 0)return Nf;let z=(process.env.PATH??"").split(":").filter(Boolean);return Nf=Mx.find((Y)=>z.some((Z)=>Vx(p8(Z,Y))))??null,Nf}async function Rx(){return YM??=(async()=>{Kx(zM,{recursive:!0});let J=p8(zM,Dx(JM)),z=Bun.file(J);if(await z.exists())return J;return await Bun.write(z,Bun.file(JM)),J})(),YM}function ZM(J=0.4){let z=Ax();if(!z)return;Rx().then((Y)=>{try{Bun.spawn(Ox(z,Y,J),{stdin:"ignore",stdout:"ignore",stderr:"ignore"}).unref?.()}catch{}}).catch(()=>{return})}var JM,zM,Mx,Nf,YM;var GM=C(()=>{eF();JM=Lx(gf)?gf:Fx(import.meta.dir,gf),zM=p8(Ux(),"kobe-sfx"),Mx=["ffplay","mpv","mpg123","mpg321","mplayer","afplay","play","omxplayer","aplay","cmdmp3","cvlc","powershell.exe"]});function XM(J,z){return`${J}:${z}`}function qM(J){let z=oG(),[Y,Z]=p([]),[G,X]=p(new Map),Q=Kf(),H=0;function f(K){if(X((L)=>{let A=new Map(L),O=XM(K.taskId,K.tabId),R=L.get(O);if(R==="needs_input"||R==="error")return L;return A.set(O,K.kind),A}),z.get("notifications.sound.enabled",!0)!==!1){try{process.stdout.write("\x07")}catch{}ZM()}if(z.get("notifications.toast.enabled",!0)!==!1){let L=++H,A={id:L,kind:K.kind,taskId:K.taskId,tabId:K.tabId,title:K.title};Z((O)=>[...O,A]),Q.set(()=>j(L),gx)}}function j(K){Z((L)=>L.filter((A)=>A.id!==K))}function V(K,L){X((A)=>{let O=XM(K,L);if(!A.has(O))return A;let R=new Map(A);return R.delete(O),R})}let B={toasts:Y,unread:G,notify:f,dismiss:j,markRead:V};return b(QM.Provider,{value:B,get children(){return J.children}})}function Cf(){let J=mJ(QM);if(!J)throw Error("useNotifications must be used within a NotificationsProvider");return J}var gx=4500,QM;var kf=C(()=>{w();W1();E8();GM();SQ();QM=Pz()});function r8(J,z){if(typeof z.theme==="string"&&z.theme.length>0&&z.theme!==J.selectedTheme()){if(!J.hasTheme(z.theme))J.reloadUserThemes();if(J.hasTheme(z.theme))J.setTheme(z.theme)}if(typeof z.transparentBackground==="boolean"&&z.transparentBackground!==J.transparentBackground())J.setTransparentBackground(z.transparentBackground);if(z.focusAccent===null||typeof z.focusAccent==="string"){let Y=Cx(z.focusAccent);if(Y&&Y!==J.focusAccent())J.setFocusAccent(Y)}}function Cx(J){if(J===null)return"primary";return Nx.includes(J)?J:null}var Nx;var HM=C(()=>{Nx=["primary","success","info"]});import{readFileSync as kx}from"fs";function fM(J){try{let z=JSON.parse(kx(oJ(),"utf8")),Y=typeof z.activeTheme==="string"&&OQ(z.activeTheme)?z.activeTheme:J,Z=z.transparentBackground===!0,G=typeof z.focusAccent==="string"&&vZ.includes(z.focusAccent)?z.focusAccent:null,X=AQ(z[bf])?z[bf]:aG;return{theme:Y,transparent:Z,focusAccent:G,locale:X}}catch{return{theme:J,transparent:!1,focusAccent:null,locale:aG}}}var bf="locale";var o8=C(()=>{p1();h1();_G()});function Sx(J){if(J)oQ(J);TV(),Rf();for(let{name:z,theme:Y}of EX())b8(z,Y)}function Ix(J){let z={backgroundColor:"transparent",externalOutputMode:"passthrough",exitOnCtrlC:!1,screenMode:"alternate-screen",useKittyKeyboard:{}};return J?{...z,onDestroy:J}:z}function yx(J){let z=()=>J.children,Y=()=>J.notifications?b(qM,{get children(){return z()}}):z(),Z=()=>b(AF,{get children(){return Y()}}),G=()=>J.focus?b(aF,{initial:"sidebar",get children(){return Z()}}):Z(),X=()=>J.kv?b(tF,{get children(){return G()}}):G();return b(hL,{mode:"dark",get theme(){return J.theme},get children(){return X()}})}function Tx(J){let{theme:z}=w0();return QJ(()=>JJ("pane-crash",J.error)),(()=>{var Y=W("box"),Z=W("text"),G=W("text");return D(Y,Z),D(Y,G),q(Y,"flexDirection","column"),q(Y,"flexGrow",1),q(Y,"paddingLeft",1),q(Y,"paddingTop",1),q(Y,"gap",1),U(Z,()=>F("common.paneCrash.title")),U(G,()=>F("common.paneCrash.hint")),y((X)=>{var{background:Q,error:H,textMuted:f}=z;return Q!==X.e&&(X.e=q(Y,"backgroundColor",Q,X.e)),H!==X.t&&(X.t=q(Z,"fg",H,X.t)),f!==X.a&&(X.a=q(G,"fg",f,X.a)),X},{e:void 0,t:void 0,a:void 0}),Y})()}function xx(J){let z=w0(),Y={selectedTheme:()=>z.selected,hasTheme:(H)=>z.has(H),setTheme:(H)=>z.set(H),reloadUserThemes:()=>{for(let{name:H,theme:f}of EX())b8(H,f)},transparentBackground:()=>z.transparentBackground,setTransparentBackground:(H)=>z.setTransparentBackground(H),focusAccent:()=>z.focusAccent,setFocusAccent:(H)=>z.setFocusAccent(H)};r8(Y,{theme:J.boot.theme,transparentBackground:J.boot.transparent,focusAccent:J.boot.focusAccent}),RQ(J.boot.locale);let[Z,G]=p(null),X=!1;QJ(()=>{(async()=>{let H=await Of({logTag:"ui-prefs",channels:["ui-prefs","keybindings"]});if(!H)return;if(X){H.dispose();return}G(H)})()}),_0(()=>{let H=Z()?.uiPrefsSignal()();if(!H)return;if(r8(Y,H),AQ(H.locale))RQ(H.locale)});let Q=null;return _0(()=>{let H=Z()?.keybindingsRevSignal()();if(H==null)return;if(Q===null||H===Q){Q=H;return}Q=H,sF()}),T1(()=>{X=!0,Z()?.dispose()}),null}async function KJ(J){Sx(J.logContext);let z=fM(bx),Y=await J.setup(z),Z=J.providers?.kv??!0,G=J.providers?.focus??!0,X=J.providers?.notifications??!1;await yL(()=>b(yx,{get theme(){return z.theme},kv:Z,focus:G,notifications:X,get children(){return[b(xx,{boot:z}),b(QK,{fallback:(Q)=>b(Tx,{error:Q}),get children(){return Y.root()}})]}}),Ix(Y.onDestroy))}var bx="claude";var MY=C(()=>{w();w();w();w();w();w();w();GZ();W1();l8();_F();_8();SQ();kf();h1();XH();ZJ();$J();HM();o8()});import{homedir as ux}from"os";async function s8(J,z,Y,Z,G={}){let X=I1(z.id);if(await K1(X))return!0;let{archivedHistoryPreviewEnabled:Q}=await Promise.resolve().then(() => (nq(),TK));if(z.archived&&Q()){let{ensureSession:K}=await Promise.resolve().then(() => (zJ(),EJ)),L=z.worktreePath??"",A=L&&xY(L)?L:Y&&xY(Y)?Y:ux();if(!await K({name:X,cwd:A,command:cJ(Z),taskId:z.id,vendor:Z,repo:Y,archived:!0,archivedWorktree:L||A,title:z.title}))throw new sY("session",`failed to start history session for ${z.id}`);return!1}let H=z.worktreePath;if(!H||!xY(H)){if(!J)throw new sY("no-daemon",`no daemon; cannot materialise worktree for ${z.id}`);try{H=await J.ensureWorktree(z.id)}catch(K){throw new sY("worktree",`ensureWorktree failed for ${z.id}`,K)}await G.reload?.()}if(!H||!xY(H))throw new sY("worktree",`task ${z.id} has no usable worktree`);let{ensureSession:f}=await Promise.resolve().then(() => (zJ(),EJ)),{resolveEngineLaunchInit:j}=await Promise.resolve().then(() => (yG(),cH)),V=Y?j(Y,H,{kind:G.includeInitPrompt?"repo-init":"none"}):void 0;if(!await f({name:X,cwd:H,command:cJ(Z),taskId:z.id,vendor:Z,repo:Y,launchInit:V}))throw new sY("session",`failed to start tmux session for ${z.id}`);return!1}async function t8(J,z,Y,Z,G={}){let X=I1(z.id),Q=await Promise.resolve().then(() => (zJ(),EJ));if(G.captureFrom){let j=await Q.currentSessionName();if(j&&j!==X)await Q.captureGlobalLayout(j)}if(await s8(J,z,Y,Z,{includeInitPrompt:G.includeInitPrompt,reload:G.reload})&&G.heal)try{let j=await kZ(X,"@kobe_worktree")||z.worktreePath||"";if(j&&xY(j)){let{resolveEngineLaunchInit:V}=await Promise.resolve().then(() => (yG(),cH)),B=Y?V(Y,j,{kind:G.includeInitPrompt?"repo-init":"none"}):void 0;await Q.ensureSession({name:X,cwd:j,command:cJ(Z),taskId:z.id,vendor:Z,repo:Y,launchInit:B})}}catch(j){console.error("[kobe handover] heal failed (continuing to switch):",j)}let{syncSessionZen:f}=await Promise.resolve().then(() => (PY(),hB));if(await f(X),G.isCurrent&&!G.isCurrent())return;await J?.setActiveTask(z.id).catch(()=>{}),await Q.enterWindow(X)}async function Sf(J,z,Y,Z,G={}){await t8(J,z,Y,Z,{includeInitPrompt:G.includeInitPrompt})}var sY;var If=C(()=>{Yz();Oz();c1();sY=class sY extends Error{phase;cause;constructor(J,z,Y){super(z);this.name="HandoverError",this.phase=J,this.cause=Y}}});var jM={};q1(jM,{startNewTaskHost:()=>Ex,NewTaskPage:()=>yf});function yf(J){let{theme:z}=w0(),Y=n1();QJ(()=>{Z()});async function Z(){let G=SJ(),X=J.defaultRepo||G[0]||process.cwd(),Q=PJ(S1("lastSelectedVendor"),hJ()),H=await GY(),f=J.orchestrator,j=await Ff.show(Y,X,G,{defaultVendor:Q,availableVendors:H,discoverAdoptable:f?(B)=>f.discoverAdoptableWorktrees(B):void 0});if(!j)process.exit(0);if(e1("lastSelectedVendor",j.vendor),ez(j.repo),!f)console.error("[kobe new-task] no daemon; cannot create task"),process.exit(1);let V;try{if(j.mode==="adopt")for(let B of j.adopt)V=await f.adoptWorktree({repo:j.repo,worktreePath:B.worktreePath,branch:B.branch,vendor:j.vendor});else V=await f.createTask({repo:j.repo,baseRef:j.baseRef,vendor:j.vendor})}catch(B){console.error("[kobe new-task] task.create/adopt failed:",B),process.exit(1)}if(V)try{await Sf(f,V,j.repo,j.vendor,{includeInitPrompt:j.mode!=="adopt"})}catch(B){console.error("[kobe new-task] auto-enter failed:",B)}process.exit(0)}return(()=>{var G=W("box");return q(G,"flexDirection","column"),q(G,"flexGrow",1),y((X)=>q(G,"backgroundColor",z.background,X)),G})()}async function Ex(J){await KJ({setup:async()=>{let z=null;try{let Y=await Sz(),Z=new AJ(Y);await Z.init(),z=Z}catch(Y){console.error("[kobe new-task] daemon unavailable; cannot create task:",Y)}return{root:()=>b(yf,{get defaultRepo(){return J.defaultRepo},orchestrator:z}),onDestroy:()=>{z?.dispose()}}}})}var e8=C(()=>{w();w();w();w();CJ();W1();_Y();XZ();C1();_1();pG();h1();MY();If();$J()});function Tf(J,z,Y,Z,G={}){if(J.length===0)return z;let X=new Map;for(let f of J)X.set(Y(f),f);let Q=J.length===z.length,H=Array(z.length);for(let f=0;f<z.length;f++){let j=z[f],V=X.get(Y(j));if(V&&Z(V,j)&&(!G.samePosition||J[f]===V)){if(H[f]=V,Q&&J[f]!==V)Q=!1}else H[f]=j,Q=!1}return Q?J:H}function BM(J,z){if(!J)return!0;let Y=J.toLowerCase(),Z=z.toLowerCase(),G=0;for(let X=0;X<Z.length&&G<Y.length;X++)if(Z.charCodeAt(X)===Y.charCodeAt(G))G++;return G===Y.length}function wx(J,z){let Y=z==="archived";return J.filter((Z)=>Z.archived===Y)}function JW(J,z,Y,Z="default",G){let X=wx(J,z),Q=Y?.trim()??"",H=G?fz(G):null,f=Q?X.filter((O)=>BM(Q,`${O.title} ${xz(O.repo)}`)):X,j=[],V=[],B=[],K=new Set;for(let O of f){if(O.kind==="main"){let R=fz(O.repo);if(K.has(R))continue;K.add(R),j.push(O);continue}if(H&&fz(O.repo)!==H)continue;if(O.pinned===!0)V.push(O);else B.push(O)}if(j.sort((O,R)=>xz(O.repo).localeCompare(xz(R.repo))),Z==="recent")V.sort(WM),B.sort(WM);let L=[],A=0;for(let O of j)L.push({kind:"task",task:O,flatIndex:A}),A++;for(let O of V)L.push({kind:"task",task:O,flatIndex:A}),A++;for(let O of B)L.push({kind:"task",task:O,flatIndex:A}),A++;return L}function WM(J,z){let Y=VM(z)-VM(J);if(Y!==0)return Y;return String(z.id).localeCompare(String(J.id))}function VM(J){let z=Date.parse(J.updatedAt||J.createdAt);return Number.isFinite(z)?z:0}function xz(J){let z=J.split("/").filter(Boolean);return z[z.length-1]??J}function fz(J){return J.trim().replace(/[\\/]+$/,"")||J}function Px(J,z){let Y=xz(J);if(!z.some((G)=>G!==J&&xz(G)===Y))return Y;return J.replace(/[\\/]+$/,"").split(/[\\/]+/).slice(-2).join("/")}function KM(J,z){let Y=z==="archived",Z=new Map;for(let X of J){let Q=fz(X.repo),H=Z.get(Q)??{repo:X.repo,count:0};if(X.kind==="main")H.repo=X.repo;else if(X.archived===Y)H.count+=1;Z.set(Q,H)}let G=[...Z.values()].map((X)=>X.repo);return[...Z.values()].map((X)=>({repo:X.repo,label:Px(X.repo,G),count:X.count})).sort((X,Q)=>X.label.localeCompare(Q.label))}function UM(J,z){if(J.length===0)return-1;if(!z)return J[0]?.flatIndex??-1;let Y=fz(z),Z=J.find((X)=>X.task.kind!=="main"&&fz(X.task.repo)===Y);if(Z)return Z.flatIndex;return J.find((X)=>X.task.kind==="main"&&fz(X.task.repo)===Y)?.flatIndex??J[0]?.flatIndex??-1}function zW(J){return J.map((z)=>z.task.id)}function DM(J,z,Y){let Z=z.length;if(J===null){if(Y===-1&&Z>0)return 0;if(Y>=Z)return Math.max(0,Z-1);if(Z===0)return-1;return Y}let G=z.indexOf(J);if(G>=0)return G;if(Z===0)return-1;if(Y<0||Y>=Z)return Z-1;return Y}function LM(J){let z=[],Y=[];for(let Z of J)if(Z.task.kind==="main")z.push(Z);else Y.push(Z);return{projectRows:z,taskRows:Y}}function hx(J,z){return J===z||J.id===z.id&&J.kind===z.kind&&J.title===z.title&&J.repo===z.repo&&J.branch===z.branch&&J.worktreePath===z.worktreePath&&J.status===z.status&&J.archived===z.archived&&J.pinned===z.pinned&&J.vendor===z.vendor}function FM(J,z){return Tf(J,z,(Y)=>Y.task.id,(Y,Z)=>Y.flatIndex===Z.flatIndex&&hx(Y.task,Z.task),{samePosition:!0})}var xf=()=>{};var MM={};q1(MM,{startQuickTaskHost:()=>dx});async function vx(J,z){let Y,Z;if(z){let B=await uJ(z,["@kobe_task","@kobe_worktree"]);Y=B["@kobe_task"]||void 0,Z=B["@kobe_worktree"]||void 0}let G=(Y?J?.getTask(Y)?.repo:void 0)??SJ()[0],X=G??Z??process.cwd();if(!G)return{ctx:null,fallbackRepo:X};let Q=await GY(),H=PJ(S1("lastSelectedVendor"),hJ()),f=Q.length===0||Q.includes(H)?H:Q[0]??H,j=gQ(RJ(G))??Tz,V=Q.length>0?Q:[f];return{ctx:{repo:G,vendor:f,baseRef:j,engines:V},fallbackRepo:X}}async function mx(J,z,Y,Z,G){let X=await s8(J,z,Y,Z),Q=I1(z.id),{pane:H}=await TX(Q,!X);if(H)await xX(H,G)}function cx(J){let{theme:z}=w0(),Y=n1();QJ(()=>{Z()});async function Z(){let G=J.ctx,X=await lF.show(Y,{repoLabel:xz(G.repo),engines:G.engines,defaultVendor:G.vendor,defaultBaseRef:G.baseRef,engineLabel:LZ});if(X===void 0)process.exit(0);e1("lastSelectedVendor",X.vendor),ez(G.repo);let Q=J.orchestrator;if(!Q)console.error("[kobe quick-task] no daemon; cannot create task"),process.exit(1);try{let H=await Q.createTask({repo:G.repo,baseRef:X.baseRef,vendor:X.vendor});await mx(Q,H,G.repo,X.vendor,X.prompt),await Sf(Q,H,G.repo,X.vendor)}catch(H){console.error("[kobe quick-task] task.create/deliver failed:",H),process.exit(1)}process.exit(0)}return(()=>{var G=W("box");return q(G,"flexDirection","column"),q(G,"flexGrow",1),y((X)=>q(G,"backgroundColor",z.background,X)),G})()}async function dx(J){await KJ({setup:async()=>{let z=null;try{let G=await Sz(),X=new AJ(G);await X.init(),z=X}catch(G){console.error("[kobe quick-task] daemon unavailable; cannot create task:",G)}let{ctx:Y,fallbackRepo:Z}=await vx(z,J.session);return{root:()=>Y?b(cx,{ctx:Y,orchestrator:z}):b(yf,{defaultRepo:Z,orchestrator:z}),onDestroy:()=>{z?.dispose()}}}})}var OM=C(()=>{w();w();w();w();CJ();W1();_Y();XZ();Yz();C1();c1();rq();_1();$F();h1();Uf();MY();Lf();If();e8();xf();$J()});function Ef(J){let z=J.trim().split(/\s+/).pop()??"",Y=/^([CM])-(.+)$/.exec(z);if(!Y)return null;let Z=Y[1]==="C"?"\u2303":"\u2325",G=Y[2]??"";return`${Z}${G.length===1?G.toUpperCase():G}`}function uf(J,z){if(J.includes("/"))return J.split("/").map((G)=>uf(G,z)).join("/");let Y=J.toLowerCase();if(Y==="tab")return"tab";let Z=ix[Y];if(Z)return Z;if(/^f\d{1,2}$/.test(Y))return Y.toUpperCase();if(!z)return J;if(/^[a-z]$/.test(Y))return J.toUpperCase();return J.replace(/[a-z]+/gi,(G)=>G.toUpperCase())}function sG(J,z="\u2303B"){let Y=J.trim();if(!Y)return Y;let Z=/^prefix\s+(.+)$/i.exec(Y);if(Z){let H=Z[1]??"";return`${z} ${H.includes("+")?sG(H,z):uf(H,!0)}`}let G=Y.split("+");if(G.length===1)return uf(G[0]??"",!1);let X=G[G.length-1]??"";return`${G.slice(0,-1).map((H)=>nx[H.toLowerCase().trim()]??H).join("")} ${uf(X,!0)}`}var nx,ix;var YW=C(()=>{nx={ctrl:"\u2303",control:"\u2303",alt:"\u2325",opt:"\u2325",option:"\u2325",shift:"\u21E7",cmd:"\u2318",command:"\u2318",meta:"\u2318",super:"\u2318"},ix={enter:"\u23CE",return:"\u23CE",esc:"\u238B",escape:"\u238B",space:"\u2423",up:"\u2191",down:"\u2193",left:"\u2190",right:"\u2192",backspace:"\u232B",delete:"\u2326",del:"\u2326",pgup:"\u21DE",pageup:"\u21DE",pgdn:"\u21DF",pagedown:"\u21DF",home:"\u2196",end:"\u2198"}});import{TextAttributes as AM}from"@opentui/core";function lx(J){let z=new Map,Y=[];for(let Z of J){if(!z.has(Z.category))z.set(Z.category,[]),Y.push(Z.category);z.get(Z.category).push(Z)}return Y.map((Z)=>({category:Z,rows:z.get(Z)}))}function tG(J={}){let z=n1(),{theme:Y}=w0(),Z=()=>lx(pY),G=()=>J.onClose?J.onClose():z.clear(),[X,Q]=p("\u2303B");return QJ(()=>{a0(["show-options","-g","prefix"]).then(({code:H,stdout:f})=>{if(H!==0)return;let j=Ef(f);if(j)Q(j)})}),U1(()=>({bindings:[{key:"?",cmd:G}]})),(()=>{var H=W("box"),f=W("box"),j=W("text"),V=W("text"),B=W("scrollbox"),K=W("box");return D(H,f),D(H,B),q(H,"paddingLeft",2),q(H,"paddingRight",2),q(H,"gap",1),q(H,"flexShrink",1),D(f,j),D(f,V),q(f,"flexDirection","row"),q(f,"justifyContent","space-between"),q(f,"flexShrink",0),U(j,()=>F("help.title")),q(V,"onMouseUp",G),U(V,()=>F("help.esc")),D(B,K),q(B,"flexShrink",1),q(B,"flexGrow",1),q(B,"stickyScroll",!1),q(K,"paddingBottom",1),q(K,"gap",1),q(K,"paddingRight",1),U(K,b(Z1,{get each(){return Z()},children:(L)=>(()=>{var A=W("box"),O=W("text");return D(A,O),q(A,"gap",0),U(O,()=>y8("category",L.category)),U(A,b(Z1,{get each(){return L.rows},children:(R)=>{let u=R.hint?.keys??R.keys[0]??"\u2014",P=()=>u==="\u2014"?"\u2014":sG(u,X()),S=()=>(R.hint?R.keys:R.keys.slice(1)).map((g)=>sG(g,X()));return(()=>{var g=W("box"),M=W("box"),T=W("text"),d=W("box"),i=W("text");return D(g,M),D(g,d),q(g,"flexDirection","row"),q(g,"gap",2),q(g,"paddingLeft",1),D(M,T),q(M,"width",14),U(T,P),D(d,i),q(d,"flexGrow",1),U(i,()=>y8("desc",R.id)),U(g,(()=>{var J0=N0(()=>S().length>0);return()=>J0()?(()=>{var E=W("box"),z0=W("text");return D(E,z0),U(z0,()=>`(${S().join(", ")})`),y((q0)=>q(z0,"fg",Y.textMuted,q0)),E})():null})(),null),y((J0)=>{var{primary:E,text:z0}=Y;return E!==J0.e&&(J0.e=q(T,"fg",E,J0.e)),z0!==J0.t&&(J0.t=q(i,"fg",z0,J0.t)),J0},{e:void 0,t:void 0}),g})()}}),null),y((R)=>{var u=Y.accent,P=AM.BOLD;return u!==R.e&&(R.e=q(O,"fg",u,R.e)),P!==R.t&&(R.t=q(O,"attributes",P,R.t)),R},{e:void 0,t:void 0}),A})()})),y((L)=>{var A=AM.BOLD,O=Y.text,R=Y.textMuted,u={trackOptions:{backgroundColor:Y.backgroundDialog,foregroundColor:Y.borderActive}};return A!==L.e&&(L.e=q(j,"attributes",A,L.e)),O!==L.t&&(L.t=q(j,"fg",O,L.t)),R!==L.a&&(L.a=q(V,"fg",R,L.a)),u!==L.o&&(L.o=q(B,"verticalScrollbarOptions",u,L.o)),L},{e:void 0,t:void 0,a:void 0,o:void 0}),H})()}var ZW=C(()=>{w();w();w();w();w();w();w();W1();c1();rG();h1();ZJ();YW();kJ();$J();tG.show=(J)=>{J.replace(()=>b(tG,{}))}});import{TextAttributes as $x}from"@opentui/core";function RM(J){let z=n1(),{theme:Y}=w0(),[Z,G]=p(J.currentTitle);function X(){let Q=Z().trim();if(kQ(Q)&&!J.allowEmpty)return;J.onSubmit(Q),z.clear()}return(()=>{var Q=W("box"),H=W("box"),f=W("text"),j=W("text"),V=W("box"),B=W("text"),K=W("input"),L=W("box"),A=W("text");return D(Q,H),D(Q,V),D(Q,L),q(Q,"paddingLeft",2),q(Q,"paddingRight",2),q(Q,"gap",1),D(H,f),D(H,j),q(H,"flexDirection","row"),q(H,"justifyContent","space-between"),U(f,()=>J.dialogTitle??F("common.rename.defaultTitle")),D(j,T0("esc")),q(j,"onMouseUp",()=>J.onCancel()),D(V,B),D(V,K),q(V,"gap",0),U(B,()=>J.fieldLabel??F("common.rename.defaultFieldLabel")),q(K,"focused",!0),q(K,"onInput",(O)=>G(gJ(O))),q(K,"onSubmit",()=>X()),D(L,A),q(L,"paddingBottom",1),U(A,()=>F("common.rename.footerHint",{submitLabel:J.submitLabel??F("common.rename.defaultSubmitLabel")})),y((O)=>{var R=$x.BOLD,u=Y.text,P=Y.textMuted,S=Y.accent,g=Z(),M=J.placeholder??J.currentTitle,T=Y.textMuted;return R!==O.e&&(O.e=q(f,"attributes",R,O.e)),u!==O.t&&(O.t=q(f,"fg",u,O.t)),P!==O.a&&(O.a=q(j,"fg",P,O.a)),S!==O.o&&(O.o=q(B,"fg",S,O.o)),g!==O.i&&(O.i=q(K,"value",g,O.i)),M!==O.n&&(O.n=q(K,"placeholder",M,O.n)),T!==O.s&&(O.s=q(A,"fg",T,O.s)),O},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),Q})()}var gM=C(()=>{w();w();w();w();w();w();w();ZJ();W1();h1();$J();pG()});function ax(J,z,Y={}){return new Promise((Z)=>{J.replace(()=>b(RM,{currentTitle:z,get dialogTitle(){return Y.dialogTitle},get fieldLabel(){return Y.fieldLabel},get submitLabel(){return Y.submitLabel},get placeholder(){return Y.placeholder},get allowEmpty(){return Y.allowEmpty},onSubmit:(G)=>Z(G),onCancel:()=>Z(void 0)}),()=>Z(void 0))})}var rz;var GW=C(()=>{w();gM();rz={show:ax}});import{TextAttributes as _x}from"@opentui/core";function px(J){if(!J)return J;return J.charAt(0).toUpperCase()+J.slice(1)}function uz(J){let z=n1(),{theme:Y}=w0(),[Z,G]=_z({active:J.initialActive??"confirm"});return U1(()=>({bindings:[{key:"return",cmd:()=>{if(Z.active==="confirm")J.onConfirm?.();if(Z.active==="cancel")J.onCancel?.();z.clear()}},{key:"left",cmd:()=>G("active",Z.active==="confirm"?"cancel":"confirm")},{key:"right",cmd:()=>G("active",Z.active==="confirm"?"cancel":"confirm")}]})),(()=>{var X=W("box"),Q=W("box"),H=W("text"),f=W("text"),j=W("text"),V=W("box");return D(X,Q),D(X,j),D(X,V),q(X,"paddingLeft",2),q(X,"paddingRight",2),q(X,"paddingBottom",1),q(X,"gap",0),D(Q,H),D(Q,f),q(Q,"flexDirection","row"),q(Q,"justifyContent","space-between"),U(H,()=>J.title),D(f,T0("esc")),q(f,"onMouseUp",()=>z.clear()),U(j,()=>J.message),q(V,"flexDirection","row"),q(V,"justifyContent","flex-end"),q(V,"paddingTop",1),U(V,b(Z1,{each:["cancel","confirm"],children:(B)=>(()=>{var K=W("box"),L=W("text");return D(K,L),q(K,"paddingLeft",1),q(K,"paddingRight",1),q(K,"onMouseUp",()=>{if(B==="confirm")J.onConfirm?.();if(B==="cancel")J.onCancel?.();z.clear()}),U(L,()=>px(B==="cancel"?J.label??F("common.cancel"):J.confirmLabel??F("common.confirm"))),y((A)=>{var O=B===Z.active?Y.primary:void 0,R=B===Z.active?Y.selectedListItemText:Y.textMuted;return O!==A.e&&(A.e=q(K,"backgroundColor",O,A.e)),R!==A.t&&(A.t=q(L,"fg",R,A.t)),A},{e:void 0,t:void 0}),K})()})),y((B)=>{var K=_x.BOLD,L=Y.text,A=Y.textMuted,O=Y.textMuted;return K!==B.e&&(B.e=q(H,"attributes",K,B.e)),L!==B.t&&(B.t=q(H,"fg",L,B.t)),A!==B.a&&(B.a=q(f,"fg",A,B.a)),O!==B.o&&(B.o=q(j,"fg",O,B.o)),B},{e:void 0,t:void 0,a:void 0,o:void 0}),X})()}var wf=C(()=>{w();w();w();w();w();w();w();ZJ();W1();lG();h1();kJ();$J();uz.show=(J,z,Y,Z,G,X)=>{return new Promise((Q)=>{J.replace(()=>b(uz,{title:z,message:Y,onConfirm:()=>Q(!0),onCancel:()=>Q(!1),label:Z,confirmLabel:G,get initialActive(){return X?.initialActive}}),()=>Q(void 0)),J.setSize("small")})}});import{unlinkSync as rx}from"fs";import{join as ox}from"path";function NM(J){return J instanceof AJ}function CM(J,z){try{J?.destroy()}catch(Y){console.error(`kobe: renderer.destroy() failed during ${z}:`,Y)}}async function XW(J,z,Y){if(await uz.show(J,"Reset UI state?","Wipes ~/.config/kobe/state.json and ~/.kobe/tasks.json, then quits kobe \u2014 relaunch for a fresh start with empty Working session / Archive lists. Worktrees on disk and Claude Code session history are NOT touched.","cancel")!==!0)return;z.clear();try{rx(ox(rJ(),".kobe","tasks.json"))}catch(G){if(G.code!=="ENOENT")console.error("kobe: failed to delete tasks.json during reset:",G)}CM(Y,"reset"),process.stderr.write(`kobe: UI state reset. Relaunch kobe to start fresh.
263
- `),process.exit(0)}async function QW(J,z,Y){if(!(z instanceof AJ))return;if(await uz.show(J,"Restart backend?","Quits this kobe window. Relaunch to (re)spawn the daemon. Any other attached windows keep their connection. In v0.6 the daemon's RPC surface shrank to task CRUD + subscribe, so a graceful daemon.stop RPC is no longer plumbed through the client \u2014 quit + relaunch is the path.","cancel")!==!0)return;CM(Y,"daemon restart"),process.stderr.write(`kobe: window closed. Relaunch kobe to start fresh.
264
- `),process.exit(0)}var kM=C(()=>{_Y();p1();wf()});function sx(J){return`theme:${J}`}function qW(J){return`language:${J}`}function HW(J){return`accent:${J}`}function tx(J){return`engine:${J}`}function IQ(J){return`surface:${J}`}function fW(J){return[...J.themeNames.map((z)=>({id:sx(z),kind:"theme",name:z})),...mZ.map((z)=>({id:qW(z.id),kind:"language",locale:z.id})),{id:"transparent",kind:"transparent"},...J.focusAccentSlots.map((z)=>({id:HW(z),kind:"focusAccent",slot:z})),{id:"toast",kind:"toast"},{id:"sound",kind:"sound"},{id:"zen-keep-tasks",kind:"zenKeepTasks"},{id:IQ("chattab"),kind:"surface",surface:"chattab"},{id:IQ("taskpanel"),kind:"surface",surface:"taskpanel"},{id:"editor-kind",kind:"editorKind"},{id:"editor-custom",kind:"editorCustom"},{id:"worktree-base",kind:"worktreeBase"}]}function ex(J){return[...J.map((z)=>({id:tx(z),kind:"engine",vendor:z})),{id:"add-engine",kind:"engineAdd"}]}function Ju(){return[{id:"feedback-title",kind:"feedbackTitle"},{id:"feedback-body",kind:"feedbackBody"},{id:"feedback-send",kind:"feedbackSend"}]}function eG(J){return[{id:"dev-reset",kind:"devReset"},...J?[{id:"dev-restart",kind:"devRestartDaemon"}]:[],{id:"remote-projects",kind:"devRemoteProjects"},{id:"auto-status",kind:"devAutoStatus"},{id:"dispatcher",kind:"devDispatcher"},{id:"archived-history",kind:"devArchivedHistory"}]}function bM(J,z){switch(J){case"general":return fW(z);case"engines":return ex(z.engineList);case"accounts":case"keys":return[];case"feedback":return Ju();case"dev":return eG(z.hasDaemon)}}function JX(J,z){return J.findIndex((Y)=>Y.id===z)}function Pf(J,z){return J[z]}var dZ;var jW=C(()=>{_G();dZ=[{id:"general",label:"General"},{id:"engines",label:"Engines"},{id:"accounts",label:"Accounts"},{id:"keys",label:"Keybindings"},{id:"feedback",label:"Feedback"},{id:"dev",label:"Dev"}]});import{TextAttributes as r0}from"@opentui/core";function SM(J){let{theme:z}=w0();return(()=>{var Y=W("box");return q(Y,"flexDirection","column"),q(Y,"flexShrink",0),q(Y,"width",14),q(Y,"gap",1),U(Y,b(Z1,{each:dZ,children:(Z,G)=>{let X=()=>G()===J.cursor(),Q=()=>X()&&J.level()==="sidebar";return(()=>{var H=W("box"),f=W("text");return D(H,f),q(H,"paddingLeft",1),q(H,"paddingRight",1),q(H,"onMouseUp",()=>J.switchSection(Z.id)),q(f,"wrapMode","none"),U(f,()=>F(`settings.sections.${Z.id}`)),y((j)=>{var V=Q()?z.primary:void 0,B=Q()?z.selectedListItemText:X()?z.accent:z.textMuted,K=X()?r0.BOLD:void 0;return V!==j.e&&(j.e=q(H,"backgroundColor",V,j.e)),B!==j.t&&(j.t=q(f,"fg",B,j.t)),K!==j.a&&(j.a=q(f,"attributes",K,j.a)),j},{e:void 0,t:void 0,a:void 0}),H})()}})),Y})()}function IM(J){let z=w0(),{theme:Y}=z,Z=()=>fW({themeNames:J.themeNames(),focusAccentSlots:vZ}),G=(d)=>JX(Z(),d),X=()=>G("transparent"),Q=()=>G("toast"),H=()=>G("sound"),f=()=>G("zen-keep-tasks"),j=()=>G(IQ("chattab")),V=()=>G(IQ("taskpanel")),B=()=>G("editor-kind"),K=()=>G("editor-custom"),L=()=>G("worktree-base"),A=()=>J.bodyRow()===X(),O=()=>J.bodyRow()===Q(),R=()=>J.bodyRow()===H(),u=()=>J.bodyRow()===f(),P=()=>J.bodyRow()===j(),S=()=>J.bodyRow()===V(),g=()=>J.bodyRow()===B(),M=()=>J.bodyRow()===K(),T=()=>J.bodyRow()===L();return(()=>{var d=W("box"),i=W("text"),J0=W("text"),E=W("box"),z0=W("box"),q0=W("text"),o=W("text"),B0=W("box"),g0=W("text"),m=W("text"),r=W("box"),c=W("text"),N=W("box"),t=W("text"),x=W("text"),n=W("box"),Q0=W("text"),H0=W("text"),F0=W("box"),M0=W("text"),o0=T0(" "),S0=W("box"),p0=W("text"),h=T0(" "),L0=W("box"),Z0=W("text"),D0=W("text"),P0=W("box"),G1=W("text"),c0=T0(" "),u0=W("box"),k1=W("text"),s=W("text"),j0=W("box"),C0=W("text"),t0=T0(" "),z1=W("box"),E0=W("text"),V1=T0(" "),D1=W("box"),f1=W("text"),G0=W("text"),X0=W("box"),W0=W("text"),R0=W("box"),V0=W("text"),h0=W("box"),k0=W("text"),s0=W("text"),b0=W("box"),x0=W("text");return D(d,i),D(d,J0),D(d,E),D(d,z0),D(d,B0),D(d,N),D(d,n),D(d,L0),D(d,u0),D(d,D1),D(d,h0),q(d,"flexDirection","column"),q(d,"gap",1),U(i,()=>F("settings.general.theme")),U(J0,()=>F("settings.general.themeHint")),q(E,"flexDirection","column"),q(E,"gap",0),U(E,b(Z1,{get each(){return J.themeNames()},children:(k,X1)=>{let e0=()=>J.level()==="body"&&J.bodyRow()===X1(),n0=()=>k===z.selected;return(()=>{var v0=W("box"),K0=W("text");return D(v0,K0),q(v0,"flexDirection","row"),q(v0,"gap",1),q(v0,"paddingLeft",1),q(v0,"paddingRight",1),q(v0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(X1()),J.setThemeCursor(X1()),J.selectTheme(k)}),q(K0,"wrapMode","none"),U(K0,()=>n0()?"\u25CF ":" ",null),U(K0,k,null),y((y0)=>{var b1=e0()?Y.primary:void 0,F1=e0()?Y.selectedListItemText:n0()?Y.accent:Y.text,A1=e0()||n0()?r0.BOLD:void 0;return b1!==y0.e&&(y0.e=q(v0,"backgroundColor",b1,y0.e)),F1!==y0.t&&(y0.t=q(K0,"fg",F1,y0.t)),A1!==y0.a&&(y0.a=q(K0,"attributes",A1,y0.a)),y0},{e:void 0,t:void 0,a:void 0}),v0})()}})),D(z0,q0),D(z0,o),q(z0,"flexDirection","column"),q(z0,"gap",0),q(z0,"paddingTop",1),U(q0,()=>F("settings.general.language")),q(o,"wrapMode","word"),U(o,()=>F("settings.general.languageHint")),U(z0,b(Z1,{each:mZ,children:(k)=>{let X1=()=>G(qW(k.id)),e0=()=>J.level()==="body"&&J.bodyRow()===X1(),n0=()=>J.currentLocale()===k.id;return(()=>{var v0=W("box"),K0=W("text");return D(v0,K0),q(v0,"flexDirection","row"),q(v0,"gap",1),q(v0,"paddingLeft",1),q(v0,"paddingRight",1),q(v0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(X1()),J.selectLanguage(k.id)}),q(K0,"wrapMode","none"),U(K0,()=>n0()?"\u25CF ":" ",null),U(K0,()=>k.label,null),y((y0)=>{var b1=e0()?Y.primary:void 0,F1=e0()?Y.selectedListItemText:n0()?Y.accent:Y.text,A1=e0()||n0()?r0.BOLD:void 0;return b1!==y0.e&&(y0.e=q(v0,"backgroundColor",b1,y0.e)),F1!==y0.t&&(y0.t=q(K0,"fg",F1,y0.t)),A1!==y0.a&&(y0.a=q(K0,"attributes",A1,y0.a)),y0},{e:void 0,t:void 0,a:void 0}),v0})()}}),null),D(B0,g0),D(B0,m),D(B0,r),q(B0,"flexDirection","column"),q(B0,"gap",0),q(B0,"paddingTop",1),U(g0,()=>F("settings.general.transparent")),q(m,"wrapMode","word"),U(m,()=>F("settings.general.transparentHint")),D(r,c),q(r,"flexDirection","row"),q(r,"paddingLeft",1),q(r,"paddingRight",1),q(r,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(X()),J.toggleTransparent()}),q(c,"wrapMode","none"),U(c,(()=>{var k=N0(()=>!!z.transparentBackground);return()=>k()?F("settings.general.on"):F("settings.general.off")})()),D(N,t),D(N,x),q(N,"flexDirection","column"),q(N,"gap",0),q(N,"paddingTop",1),U(t,()=>F("settings.general.focusAccent")),q(x,"wrapMode","word"),U(x,()=>F("settings.general.focusAccentHint")),U(N,b(Z1,{each:vZ,children:(k)=>{let X1=()=>G(HW(k)),e0=()=>J.level()==="body"&&J.bodyRow()===X1(),n0=()=>z.focusAccent===k;return(()=>{var v0=W("box"),K0=W("text");return D(v0,K0),q(v0,"flexDirection","row"),q(v0,"gap",1),q(v0,"paddingLeft",1),q(v0,"paddingRight",1),q(v0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(X1()),J.selectFocusAccent(k)}),q(K0,"wrapMode","none"),U(K0,()=>n0()?"\u25CF ":" ",null),U(K0,()=>F(`settings.general.accent${k.charAt(0).toUpperCase()}${k.slice(1)}`),null),y((y0)=>{var b1=e0()?Y.primary:void 0,F1=e0()?Y.selectedListItemText:n0()?Y.focusAccent:Y.text,A1=e0()||n0()?r0.BOLD:void 0;return b1!==y0.e&&(y0.e=q(v0,"backgroundColor",b1,y0.e)),F1!==y0.t&&(y0.t=q(K0,"fg",F1,y0.t)),A1!==y0.a&&(y0.a=q(K0,"attributes",A1,y0.a)),y0},{e:void 0,t:void 0,a:void 0}),v0})()}}),null),D(n,Q0),D(n,H0),D(n,F0),D(n,S0),q(n,"flexDirection","column"),q(n,"gap",0),q(n,"paddingTop",1),U(Q0,()=>F("settings.general.notifications")),q(H0,"wrapMode","word"),U(H0,()=>F("settings.general.notificationsHint")),D(F0,M0),q(F0,"flexDirection","row"),q(F0,"gap",1),q(F0,"paddingLeft",1),q(F0,"paddingRight",1),q(F0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(Q()),J.toggleToast()}),D(M0,o0),q(M0,"wrapMode","none"),U(M0,()=>J.toastEnabled()?"[x]":"[ ]",o0),U(M0,()=>F("settings.general.toast"),null),D(S0,p0),q(S0,"flexDirection","row"),q(S0,"gap",1),q(S0,"paddingLeft",1),q(S0,"paddingRight",1),q(S0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(H()),J.toggleSound()}),D(p0,h),q(p0,"wrapMode","none"),U(p0,()=>J.soundEnabled()?"[x]":"[ ]",h),U(p0,()=>F("settings.general.sound"),null),D(L0,Z0),D(L0,D0),D(L0,P0),q(L0,"flexDirection","column"),q(L0,"gap",0),q(L0,"paddingTop",1),U(Z0,()=>F("settings.general.zen")),q(D0,"wrapMode","word"),U(D0,()=>F("settings.general.zenHint")),D(P0,G1),q(P0,"flexDirection","row"),q(P0,"gap",1),q(P0,"paddingLeft",1),q(P0,"paddingRight",1),q(P0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(f()),J.toggleZenKeepsTasks()}),D(G1,c0),q(G1,"wrapMode","none"),U(G1,()=>J.zenKeepsTasks()?"[x]":"[ ]",c0),U(G1,()=>F("settings.general.zenKeepTasks"),null),D(u0,k1),D(u0,s),D(u0,j0),D(u0,z1),q(u0,"flexDirection","column"),q(u0,"gap",0),q(u0,"paddingTop",1),U(k1,()=>F("settings.general.surface")),q(s,"wrapMode","word"),U(s,()=>F("settings.general.surfaceHint")),D(j0,C0),q(j0,"flexDirection","row"),q(j0,"gap",1),q(j0,"paddingLeft",1),q(j0,"paddingRight",1),q(j0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(j()),J.selectSurface("chattab")}),D(C0,t0),q(C0,"wrapMode","none"),U(C0,()=>J.settingsSurface()==="chattab"?"[x]":"[ ]",t0),U(C0,()=>F("settings.general.surfaceChattab"),null),D(z1,E0),q(z1,"flexDirection","row"),q(z1,"gap",1),q(z1,"paddingLeft",1),q(z1,"paddingRight",1),q(z1,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(V()),J.selectSurface("taskpanel")}),D(E0,V1),q(E0,"wrapMode","none"),U(E0,()=>J.settingsSurface()==="taskpanel"?"[x]":"[ ]",V1),U(E0,()=>F("settings.general.surfaceTaskpanel"),null),D(D1,f1),D(D1,G0),D(D1,X0),D(D1,R0),q(D1,"flexDirection","column"),q(D1,"gap",0),q(D1,"paddingTop",1),U(f1,()=>F("settings.general.editor")),q(G0,"wrapMode","word"),U(G0,()=>F("settings.general.editorHint")),D(X0,W0),q(X0,"flexDirection","row"),q(X0,"gap",1),q(X0,"paddingLeft",1),q(X0,"paddingRight",1),q(X0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(B()),J.cycleEditorKind()}),q(W0,"wrapMode","none"),U(W0,()=>F("settings.general.editorRow",{kind:J.editorKind()})),D(R0,V0),q(R0,"flexDirection","row"),q(R0,"gap",1),q(R0,"paddingLeft",1),q(R0,"paddingRight",1),q(R0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(K()),J.editEditorCustom()}),q(V0,"wrapMode","none"),U(V0,()=>F("settings.general.editorCustom",{cmd:J.editorCustomCommand().trim()||F("settings.general.editorCustomUnset")})),D(h0,k0),D(h0,s0),D(h0,b0),q(h0,"flexDirection","column"),q(h0,"gap",0),q(h0,"paddingTop",1),U(k0,()=>F("settings.general.worktree")),q(s0,"wrapMode","word"),U(s0,()=>F("settings.general.worktreeHint")),D(b0,x0),q(b0,"flexDirection","row"),q(b0,"gap",1),q(b0,"paddingLeft",1),q(b0,"paddingRight",1),q(b0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(L()),J.editWorktreeBase()}),q(x0,"wrapMode","none"),U(x0,()=>F("settings.general.worktreeBase",{path:J.worktreeBasePath().trim()||F("settings.general.worktreeBaseDefault")})),y((k)=>{var X1=Y.text,e0=r0.BOLD,n0=Y.textMuted,v0=Y.text,K0=r0.BOLD,y0=Y.textMuted,b1=Y.text,F1=r0.BOLD,A1=Y.textMuted,l=A()?Y.primary:void 0,I=A()?Y.selectedListItemText:z.transparentBackground?Y.accent:Y.textMuted,O0=r0.BOLD,e=Y.text,I0=r0.BOLD,M1=Y.textMuted,UJ=Y.text,GJ=r0.BOLD,j1=Y.textMuted,_J=O()?Y.primary:void 0,fJ=O()?Y.selectedListItemText:J.toastEnabled()?Y.accent:Y.textMuted,pJ=r0.BOLD,bJ=R()?Y.primary:void 0,$=R()?Y.selectedListItemText:J.soundEnabled()?Y.accent:Y.textMuted,a=r0.BOLD,_=Y.text,v=r0.BOLD,i0=Y.textMuted,m0=u()?Y.primary:void 0,A0=u()?Y.selectedListItemText:J.zenKeepsTasks()?Y.accent:Y.textMuted,l0=r0.BOLD,B1=Y.text,R1=r0.BOLD,DJ=Y.textMuted,jz=P()?Y.primary:void 0,OY=P()?Y.selectedListItemText:J.settingsSurface()==="chattab"?Y.accent:Y.textMuted,xW=r0.BOLD,uW=S()?Y.primary:void 0,EW=S()?Y.selectedListItemText:J.settingsSurface()==="taskpanel"?Y.accent:Y.textMuted,wW=r0.BOLD,PW=Y.text,hW=r0.BOLD,vW=Y.textMuted,mW=g()?Y.primary:void 0,cW=g()?Y.selectedListItemText:Y.accent,dW=r0.BOLD,nW=M()?Y.primary:void 0,iW=M()?Y.selectedListItemText:J.editorKind()==="custom"?Y.text:Y.textMuted,lW=Y.text,$W=r0.BOLD,aW=Y.textMuted,_W=T()?Y.primary:void 0,pW=T()?Y.selectedListItemText:Y.accent,rW=r0.BOLD;return X1!==k.e&&(k.e=q(i,"fg",X1,k.e)),e0!==k.t&&(k.t=q(i,"attributes",e0,k.t)),n0!==k.a&&(k.a=q(J0,"fg",n0,k.a)),v0!==k.o&&(k.o=q(q0,"fg",v0,k.o)),K0!==k.i&&(k.i=q(q0,"attributes",K0,k.i)),y0!==k.n&&(k.n=q(o,"fg",y0,k.n)),b1!==k.s&&(k.s=q(g0,"fg",b1,k.s)),F1!==k.h&&(k.h=q(g0,"attributes",F1,k.h)),A1!==k.r&&(k.r=q(m,"fg",A1,k.r)),l!==k.d&&(k.d=q(r,"backgroundColor",l,k.d)),I!==k.l&&(k.l=q(c,"fg",I,k.l)),O0!==k.u&&(k.u=q(c,"attributes",O0,k.u)),e!==k.c&&(k.c=q(t,"fg",e,k.c)),I0!==k.w&&(k.w=q(t,"attributes",I0,k.w)),M1!==k.m&&(k.m=q(x,"fg",M1,k.m)),UJ!==k.f&&(k.f=q(Q0,"fg",UJ,k.f)),GJ!==k.y&&(k.y=q(Q0,"attributes",GJ,k.y)),j1!==k.g&&(k.g=q(H0,"fg",j1,k.g)),_J!==k.p&&(k.p=q(F0,"backgroundColor",_J,k.p)),fJ!==k.b&&(k.b=q(M0,"fg",fJ,k.b)),pJ!==k.T&&(k.T=q(M0,"attributes",pJ,k.T)),bJ!==k.A&&(k.A=q(S0,"backgroundColor",bJ,k.A)),$!==k.O&&(k.O=q(p0,"fg",$,k.O)),a!==k.I&&(k.I=q(p0,"attributes",a,k.I)),_!==k.S&&(k.S=q(Z0,"fg",_,k.S)),v!==k.W&&(k.W=q(Z0,"attributes",v,k.W)),i0!==k.C&&(k.C=q(D0,"fg",i0,k.C)),m0!==k.B&&(k.B=q(P0,"backgroundColor",m0,k.B)),A0!==k.v&&(k.v=q(G1,"fg",A0,k.v)),l0!==k.k&&(k.k=q(G1,"attributes",l0,k.k)),B1!==k.x&&(k.x=q(k1,"fg",B1,k.x)),R1!==k.j&&(k.j=q(k1,"attributes",R1,k.j)),DJ!==k.q&&(k.q=q(s,"fg",DJ,k.q)),jz!==k.z&&(k.z=q(j0,"backgroundColor",jz,k.z)),OY!==k.P&&(k.P=q(C0,"fg",OY,k.P)),xW!==k.H&&(k.H=q(C0,"attributes",xW,k.H)),uW!==k.F&&(k.F=q(z1,"backgroundColor",uW,k.F)),EW!==k.M&&(k.M=q(E0,"fg",EW,k.M)),wW!==k.D&&(k.D=q(E0,"attributes",wW,k.D)),PW!==k.R&&(k.R=q(f1,"fg",PW,k.R)),hW!==k.E&&(k.E=q(f1,"attributes",hW,k.E)),vW!==k.L&&(k.L=q(G0,"fg",vW,k.L)),mW!==k.N&&(k.N=q(X0,"backgroundColor",mW,k.N)),cW!==k.G&&(k.G=q(W0,"fg",cW,k.G)),dW!==k.U&&(k.U=q(W0,"attributes",dW,k.U)),nW!==k.K&&(k.K=q(R0,"backgroundColor",nW,k.K)),iW!==k.V&&(k.V=q(V0,"fg",iW,k.V)),lW!==k.Y&&(k.Y=q(k0,"fg",lW,k.Y)),$W!==k.J&&(k.J=q(k0,"attributes",$W,k.J)),aW!==k.Q&&(k.Q=q(s0,"fg",aW,k.Q)),_W!==k.Z&&(k.Z=q(b0,"backgroundColor",_W,k.Z)),pW!==k.X&&(k.X=q(x0,"fg",pW,k.X)),rW!==k._&&(k._=q(x0,"attributes",rW,k._)),k},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0,w:void 0,m:void 0,f:void 0,y:void 0,g:void 0,p:void 0,b:void 0,T:void 0,A:void 0,O:void 0,I:void 0,S:void 0,W:void 0,C:void 0,B:void 0,v:void 0,k:void 0,x:void 0,j:void 0,q:void 0,z:void 0,P:void 0,H:void 0,F:void 0,M:void 0,D:void 0,R:void 0,E:void 0,L:void 0,N:void 0,G:void 0,U:void 0,K:void 0,V:void 0,Y:void 0,J:void 0,Q:void 0,Z:void 0,X:void 0,_:void 0}),d})()}function yM(J){let{theme:z}=w0(),Y=()=>J.vendors.length;return(()=>{var Z=W("box"),G=W("text"),X=W("text"),Q=W("box"),H=W("box"),f=W("text");return D(Z,G),D(Z,X),D(Z,Q),q(Z,"flexDirection","column"),q(Z,"gap",1),U(G,()=>F("settings.engines.title")),q(X,"wrapMode","word"),U(X,()=>F("settings.engines.hint")),D(Q,H),q(Q,"flexDirection","column"),q(Q,"gap",0),U(Q,b(Z1,{get each(){return J.vendors},children:(j,V)=>{let B=()=>J.level()==="body"&&J.bodyRow()===V();return(()=>{var K=W("box"),L=W("text"),A=W("text"),O=W("text");return D(K,L),D(K,A),D(K,O),q(K,"flexDirection","row"),q(K,"gap",1),q(K,"paddingLeft",1),q(K,"paddingRight",1),q(K,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(V()),J.editEngine(j)}),q(L,"wrapMode","none"),U(L,()=>J.isDefaultEngine(j)?"\u25CF":" "),q(A,"wrapMode","none"),U(A,()=>J.displayName(j)),q(O,"wrapMode","none"),U(O,()=>J.commandText(j),null),U(O,(()=>{var R=N0(()=>!!J.isDefault(j));return()=>R()?F("settings.engines.defaultTag"):N0(()=>!!J.isCustom(j))()?F("settings.engines.customTag"):""})(),null),y((R)=>{var u=B()?z.primary:void 0,P=B()?z.selectedListItemText:z.accent,S=r0.BOLD,g=B()?z.selectedListItemText:z.text,M=r0.BOLD,T=B()?z.selectedListItemText:J.isDefault(j)?z.textMuted:z.accent;return u!==R.e&&(R.e=q(K,"backgroundColor",u,R.e)),P!==R.t&&(R.t=q(L,"fg",P,R.t)),S!==R.a&&(R.a=q(L,"attributes",S,R.a)),g!==R.o&&(R.o=q(A,"fg",g,R.o)),M!==R.i&&(R.i=q(A,"attributes",M,R.i)),T!==R.n&&(R.n=q(O,"fg",T,R.n)),R},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),K})()}}),H),D(H,f),q(H,"flexDirection","row"),q(H,"paddingLeft",1),q(H,"paddingRight",1),q(H,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(Y()),J.onAddEngine()}),q(f,"wrapMode","none"),U(f,()=>F("settings.engines.addEngine")),y((j)=>{var V=z.text,B=r0.BOLD,K=z.textMuted,L=J.level()==="body"&&J.bodyRow()===Y()?z.primary:void 0,A=J.level()==="body"&&J.bodyRow()===Y()?z.selectedListItemText:z.primary;return V!==j.e&&(j.e=q(G,"fg",V,j.e)),B!==j.t&&(j.t=q(G,"attributes",B,j.t)),K!==j.a&&(j.a=q(X,"fg",K,j.a)),L!==j.o&&(j.o=q(H,"backgroundColor",L,j.o)),A!==j.i&&(j.i=q(f,"fg",A,j.i)),j},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),Z})()}function TM(J){let{theme:z}=w0(),Y=(Z)=>Z.binary.found?`Binary: ${Z.binary.path}`:`Binary: ${Z.binary.error}`;return(()=>{var Z=W("box"),G=W("text"),X=W("text"),Q=W("box"),H=W("text"),f=W("box"),j=W("text"),V=W("box"),B=W("text");return D(Z,G),D(Z,X),D(Z,Q),D(Z,f),D(Z,V),q(Z,"flexDirection","column"),q(Z,"gap",1),U(G,()=>F("settings.accounts.title")),q(X,"wrapMode","word"),U(X,()=>F("settings.accounts.hint")),D(Q,H),q(Q,"flexDirection","column"),q(Q,"gap",0),D(H,T0("claude-code")),U(Q,b(Y0,{get when(){return J.claudeStatus()===null},get children(){var K=W("text");return U(K,()=>F("settings.accounts.checking")),y((L)=>q(K,"fg",z.textMuted,L)),K}}),null),U(Q,b(Y0,{get when(){return J.claudeStatus()},children:(K)=>(()=>{var L=W("box"),A=W("text");return D(L,A),q(L,"flexDirection","column"),q(L,"gap",0),q(A,"wrapMode","word"),U(A,()=>Y(K())),U(L,()=>{let O=K().account;if(O.kind==="oauth"){let R=[O.organization,O.billingType].filter((u)=>!!u).join(" \xB7 ");return(()=>{var u=W("text");return q(u,"wrapMode","word"),U(u,()=>F("settings.accounts.loggedIn",{email:O.email}),null),U(u,R?` (${R})`:"",null),y((P)=>q(u,"fg",z.success,P)),u})()}return(()=>{var R=W("text");return U(R,()=>F("settings.accounts.notLoggedIn")),y((u)=>q(R,"fg",z.textMuted,u)),R})()},null),U(L,b(Y0,{get when(){return K().accountError},children:(O)=>(()=>{var R=W("text");return q(R,"wrapMode","word"),U(R,()=>`! ${O()}`),y((u)=>q(R,"fg",z.warning,u)),R})()}),null),y((O)=>q(A,"fg",K().binary.found?z.textMuted:z.warning,O)),L})()}),null),D(f,j),q(f,"flexDirection","column"),q(f,"gap",0),D(j,T0("codex")),U(f,b(Y0,{get when(){return J.codexStatus()===null},get children(){var K=W("text");return U(K,()=>F("settings.accounts.checking")),y((L)=>q(K,"fg",z.textMuted,L)),K}}),null),U(f,b(Y0,{get when(){return J.codexStatus()},children:(K)=>(()=>{var L=W("box"),A=W("text");return D(L,A),q(L,"flexDirection","column"),q(L,"gap",0),q(A,"wrapMode","word"),U(A,()=>Y(K())),U(L,()=>{let O=K().account;if(O.kind==="chatgpt")return(()=>{var R=W("text");return q(R,"wrapMode","word"),U(R,()=>F("settings.accounts.chatgptLogin",{email:O.email}),null),U(R,(()=>{var u=N0(()=>!!O.plan);return()=>u()?` (${O.plan})`:""})(),null),y((u)=>q(R,"fg",z.success,u)),R})();if(O.kind==="apikey")return(()=>{var R=W("text");return U(R,()=>F("settings.accounts.apiKeyConfigured")),y((u)=>q(R,"fg",z.success,u)),R})();return(()=>{var R=W("text");return U(R,()=>F("settings.accounts.notLoggedIn")),y((u)=>q(R,"fg",z.textMuted,u)),R})()},null),U(L,b(Y0,{get when(){return K().accountError},children:(O)=>(()=>{var R=W("text");return q(R,"wrapMode","word"),U(R,()=>`! ${O()}`),y((u)=>q(R,"fg",z.warning,u)),R})()}),null),y((O)=>q(A,"fg",K().binary.found?z.textMuted:z.warning,O)),L})()}),null),D(V,B),q(V,"flexDirection","column"),q(V,"gap",0),D(B,T0("copilot")),U(V,b(Y0,{get when(){return J.copilotStatus()===null},get children(){var K=W("text");return U(K,()=>F("settings.accounts.checking")),y((L)=>q(K,"fg",z.textMuted,L)),K}}),null),U(V,b(Y0,{get when(){return J.copilotStatus()},children:(K)=>(()=>{var L=W("box"),A=W("text");return D(L,A),q(L,"flexDirection","column"),q(L,"gap",0),q(A,"wrapMode","word"),U(A,()=>Y(K())),U(L,()=>{let O=K().account;if(O.kind==="token")return(()=>{var R=W("text");return U(R,()=>F("settings.accounts.tokenConfigured",{source:O.source})),y((u)=>q(R,"fg",z.success,u)),R})();if(O.kind==="oauth")return(()=>{var R=W("text");return U(R,()=>F("settings.accounts.copilotDetected")),y((u)=>q(R,"fg",z.success,u)),R})();return(()=>{var R=W("text");return U(R,()=>F("settings.accounts.notLoggedIn")),y((u)=>q(R,"fg",z.textMuted,u)),R})()},null),U(L,b(Y0,{get when(){return K().accountError},children:(O)=>(()=>{var R=W("text");return q(R,"wrapMode","word"),U(R,()=>`! ${O()}`),y((u)=>q(R,"fg",z.warning,u)),R})()}),null),y((O)=>q(A,"fg",K().binary.found?z.textMuted:z.warning,O)),L})()}),null),y((K)=>{var L=z.text,A=r0.BOLD,O=z.textMuted,R=z.text,u=r0.BOLD,P=z.text,S=r0.BOLD,g=z.text,M=r0.BOLD;return L!==K.e&&(K.e=q(G,"fg",L,K.e)),A!==K.t&&(K.t=q(G,"attributes",A,K.t)),O!==K.a&&(K.a=q(X,"fg",O,K.a)),R!==K.o&&(K.o=q(H,"fg",R,K.o)),u!==K.i&&(K.i=q(H,"attributes",u,K.i)),P!==K.n&&(K.n=q(j,"fg",P,K.n)),S!==K.s&&(K.s=q(j,"attributes",S,K.s)),g!==K.h&&(K.h=q(B,"fg",g,K.h)),M!==K.r&&(K.r=q(B,"attributes",M,K.r)),K},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0}),Z})()}function xM(J){let{theme:z}=w0(),Y=()=>J.level()==="body",Z=()=>Y()&&J.bodyRow()===0,G=()=>Y()&&J.bodyRow()===1,X=()=>Y()&&J.bodyRow()===2,Q=(j)=>j?z.primary:z.textMuted,H=(j)=>j?r0.BOLD|r0.UNDERLINE:void 0,f;return _0(()=>{if(J.body()===""&&f&&f.plainText!=="")f.setText("")}),(()=>{var j=W("box"),V=W("text"),B=W("text"),K=W("box"),L=W("box"),A=W("text"),O=W("input"),R=W("box"),u=W("text"),P=W("textarea"),S=W("box"),g=W("text");return D(j,V),D(j,B),D(j,K),q(j,"flexDirection","column"),q(j,"gap",1),U(V,()=>F("settings.feedback.title")),q(B,"wrapMode","word"),U(B,()=>F("settings.feedback.hint")),D(K,L),D(K,R),D(K,S),q(K,"flexDirection","column"),q(K,"gap",1),D(L,A),D(L,O),q(L,"gap",0),U(A,()=>F("settings.feedback.titleLabel")),q(O,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(0)}),q(O,"onInput",(M)=>J.setTitle(gJ(M))),q(O,"onSubmit",()=>J.onTitleSubmit()),D(R,u),D(R,P),q(R,"gap",0),U(u,()=>F("settings.feedback.descriptionLabel")),qz((M)=>{f=M},P),q(P,"height",4),q(P,"wrapMode","word"),q(P,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(1)}),q(P,"onContentChange",()=>J.setBody(f?.plainText??"")),D(S,g),q(S,"flexDirection","row"),q(S,"paddingLeft",1),q(S,"paddingRight",1),q(S,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(2),J.submit()}),U(g,()=>F("settings.feedback.send")),U(j,b(Y0,{get when(){return J.status()},get children(){var M=W("text");return q(M,"wrapMode","word"),U(M,()=>J.status()),y((T)=>q(M,"fg",J.status().startsWith("error:")?z.warning:z.success,T)),M}}),null),y((M)=>{var T=z.text,d=r0.BOLD,i=z.textMuted,J0=Q(Z()),E=H(Z()),z0=J.title(),q0=F("settings.feedback.titlePlaceholder"),o=Z(),B0=Q(G()),g0=H(G()),m=J.body(),r=F("settings.feedback.descriptionPlaceholder"),c=G(),N=X()?z.primary:z.backgroundElement,t=X()?z.selectedListItemText:z.accent,x=r0.BOLD;return T!==M.e&&(M.e=q(V,"fg",T,M.e)),d!==M.t&&(M.t=q(V,"attributes",d,M.t)),i!==M.a&&(M.a=q(B,"fg",i,M.a)),J0!==M.o&&(M.o=q(A,"fg",J0,M.o)),E!==M.i&&(M.i=q(A,"attributes",E,M.i)),z0!==M.n&&(M.n=q(O,"value",z0,M.n)),q0!==M.s&&(M.s=q(O,"placeholder",q0,M.s)),o!==M.h&&(M.h=q(O,"focused",o,M.h)),B0!==M.r&&(M.r=q(u,"fg",B0,M.r)),g0!==M.d&&(M.d=q(u,"attributes",g0,M.d)),m!==M.l&&(M.l=q(P,"initialValue",m,M.l)),r!==M.u&&(M.u=q(P,"placeholder",r,M.u)),c!==M.c&&(M.c=q(P,"focused",c,M.c)),N!==M.w&&(M.w=q(S,"backgroundColor",N,M.w)),t!==M.m&&(M.m=q(g,"fg",t,M.m)),x!==M.f&&(M.f=q(g,"attributes",x,M.f)),M},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0,w:void 0,m:void 0,f:void 0}),j})()}function uM(J){let{theme:z}=w0(),Y=()=>J.level()==="body"&&J.bodyRow()===0,Z=()=>J.level()==="body"&&J.bodyRow()===1,G=()=>JX(eG(J.hasDaemon),"remote-projects"),X=()=>J.level()==="body"&&J.bodyRow()===G(),Q=()=>JX(eG(J.hasDaemon),"auto-status"),H=()=>J.level()==="body"&&J.bodyRow()===Q(),f=()=>JX(eG(J.hasDaemon),"dispatcher"),j=()=>J.level()==="body"&&J.bodyRow()===f(),V=()=>JX(eG(J.hasDaemon),"archived-history"),B=()=>J.level()==="body"&&J.bodyRow()===V();return(()=>{var K=W("box"),L=W("text"),A=W("text"),O=W("box"),R=W("text"),u=W("text"),P=W("box"),S=W("text"),g=W("text"),M=W("box"),T=W("text"),d=W("text"),i=W("box"),J0=W("text"),E=W("text"),z0=W("box"),q0=W("text"),o=W("text"),B0=W("box"),g0=W("text");return D(K,L),D(K,A),D(K,O),D(K,u),D(K,P),q(K,"flexDirection","column"),q(K,"gap",1),U(L,()=>F("settings.dev.reset")),q(A,"wrapMode","word"),U(A,()=>F("settings.dev.resetHint")),D(O,R),q(O,"flexDirection","row"),q(O,"paddingLeft",1),q(O,"paddingRight",1),q(O,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(0),J.confirmReset()}),U(R,()=>F("settings.dev.resetButton")),U(K,b(Y0,{get when(){return J.hasDaemon},get children(){var m=W("box"),r=W("text"),c=W("text"),N=W("box"),t=W("text");return D(m,r),D(m,c),D(m,N),q(m,"flexDirection","column"),q(m,"gap",0),q(m,"paddingTop",1),U(r,()=>F("settings.dev.restart")),q(c,"wrapMode","word"),U(c,()=>F("settings.dev.restartHint")),D(N,t),q(N,"flexDirection","row"),q(N,"paddingLeft",1),q(N,"paddingRight",1),q(N,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(1),J.confirmRestartDaemon()}),U(t,()=>F("settings.dev.restartButton")),y((x)=>{var n=z.text,Q0=r0.BOLD,H0=z.textMuted,F0=Z()?z.primary:z.backgroundElement,M0=Z()?z.selectedListItemText:z.accent,o0=r0.BOLD;return n!==x.e&&(x.e=q(r,"fg",n,x.e)),Q0!==x.t&&(x.t=q(r,"attributes",Q0,x.t)),H0!==x.a&&(x.a=q(c,"fg",H0,x.a)),F0!==x.o&&(x.o=q(N,"backgroundColor",F0,x.o)),M0!==x.i&&(x.i=q(t,"fg",M0,x.i)),o0!==x.n&&(x.n=q(t,"attributes",o0,x.n)),x},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),m}}),u),q(u,"wrapMode","word"),U(u,()=>F("settings.dev.doctorHint")),D(P,S),D(P,g),D(P,M),D(P,d),D(P,i),D(P,E),D(P,z0),D(P,o),D(P,B0),q(P,"flexDirection","column"),q(P,"gap",0),q(P,"paddingTop",1),U(S,()=>F("settings.dev.experimental")),q(g,"wrapMode","word"),U(g,()=>F("settings.dev.remoteHint")),D(M,T),q(M,"flexDirection","row"),q(M,"paddingLeft",1),q(M,"paddingRight",1),q(M,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(G()),J.toggleRemoteProjects()}),U(T,(()=>{var m=N0(()=>!!J.remoteProjectsEnabled());return()=>m()?F("settings.dev.remoteOn"):F("settings.dev.remoteOff")})()),q(d,"wrapMode","word"),U(d,()=>F("settings.dev.autoStatusHint")),D(i,J0),q(i,"flexDirection","row"),q(i,"paddingLeft",1),q(i,"paddingRight",1),q(i,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(Q()),J.toggleAutoStatus()}),U(J0,(()=>{var m=N0(()=>!!J.autoStatusEnabled());return()=>m()?F("settings.dev.autoStatusOn"):F("settings.dev.autoStatusOff")})()),q(E,"wrapMode","word"),U(E,()=>F("settings.dev.dispatcherHint")),D(z0,q0),q(z0,"flexDirection","row"),q(z0,"paddingLeft",1),q(z0,"paddingRight",1),q(z0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(f()),J.toggleDispatcher()}),U(q0,(()=>{var m=N0(()=>!!J.dispatcherEnabled());return()=>m()?F("settings.dev.dispatcherOn"):F("settings.dev.dispatcherOff")})()),q(o,"wrapMode","word"),U(o,()=>F("settings.dev.archivedHistoryHint")),D(B0,g0),q(B0,"flexDirection","row"),q(B0,"paddingLeft",1),q(B0,"paddingRight",1),q(B0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(V()),J.toggleArchivedHistory()}),U(g0,(()=>{var m=N0(()=>!!J.archivedHistoryEnabled());return()=>m()?F("settings.dev.archivedHistoryOn"):F("settings.dev.archivedHistoryOff")})()),y((m)=>{var r=z.text,c=r0.BOLD,N=z.textMuted,t=Y()?z.primary:z.backgroundElement,x=Y()?z.selectedListItemText:z.warning,n=r0.BOLD,Q0=z.textMuted,H0=z.text,F0=r0.BOLD,M0=z.textMuted,o0=X()?z.primary:z.backgroundElement,S0=X()?z.selectedListItemText:z.text,p0=J.remoteProjectsEnabled()?r0.BOLD:void 0,h=z.textMuted,L0=H()?z.primary:z.backgroundElement,Z0=H()?z.selectedListItemText:z.text,D0=J.autoStatusEnabled()?r0.BOLD:void 0,P0=z.textMuted,G1=j()?z.primary:z.backgroundElement,c0=j()?z.selectedListItemText:z.text,u0=J.dispatcherEnabled()?r0.BOLD:void 0,k1=z.textMuted,s=B()?z.primary:z.backgroundElement,j0=B()?z.selectedListItemText:z.text,C0=J.archivedHistoryEnabled()?r0.BOLD:void 0;return r!==m.e&&(m.e=q(L,"fg",r,m.e)),c!==m.t&&(m.t=q(L,"attributes",c,m.t)),N!==m.a&&(m.a=q(A,"fg",N,m.a)),t!==m.o&&(m.o=q(O,"backgroundColor",t,m.o)),x!==m.i&&(m.i=q(R,"fg",x,m.i)),n!==m.n&&(m.n=q(R,"attributes",n,m.n)),Q0!==m.s&&(m.s=q(u,"fg",Q0,m.s)),H0!==m.h&&(m.h=q(S,"fg",H0,m.h)),F0!==m.r&&(m.r=q(S,"attributes",F0,m.r)),M0!==m.d&&(m.d=q(g,"fg",M0,m.d)),o0!==m.l&&(m.l=q(M,"backgroundColor",o0,m.l)),S0!==m.u&&(m.u=q(T,"fg",S0,m.u)),p0!==m.c&&(m.c=q(T,"attributes",p0,m.c)),h!==m.w&&(m.w=q(d,"fg",h,m.w)),L0!==m.m&&(m.m=q(i,"backgroundColor",L0,m.m)),Z0!==m.f&&(m.f=q(J0,"fg",Z0,m.f)),D0!==m.y&&(m.y=q(J0,"attributes",D0,m.y)),P0!==m.g&&(m.g=q(E,"fg",P0,m.g)),G1!==m.p&&(m.p=q(z0,"backgroundColor",G1,m.p)),c0!==m.b&&(m.b=q(q0,"fg",c0,m.b)),u0!==m.T&&(m.T=q(q0,"attributes",u0,m.T)),k1!==m.A&&(m.A=q(o,"fg",k1,m.A)),s!==m.O&&(m.O=q(B0,"backgroundColor",s,m.O)),j0!==m.I&&(m.I=q(g0,"fg",j0,m.I)),C0!==m.S&&(m.S=q(g0,"attributes",C0,m.S)),m},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0,w:void 0,m:void 0,f:void 0,y:void 0,g:void 0,p:void 0,b:void 0,T:void 0,A:void 0,O:void 0,I:void 0,S:void 0}),K})()}function EM(){let{theme:J}=w0(),z=oF(),Y=Object.keys(FB).sort();return(()=>{var Z=W("box"),G=W("text"),X=W("text"),Q=W("box"),H=W("text"),f=W("text"),j=W("text"),V=W("text");return D(Z,G),D(Z,X),D(Z,Q),D(Z,j),D(Z,V),q(Z,"flexDirection","column"),q(Z,"gap",1),U(G,()=>F("settings.keybindings.title")),q(X,"wrapMode","word"),U(X,()=>F("settings.keybindings.hint")),D(Q,H),D(Q,f),q(Q,"flexDirection","column"),q(Q,"gap",0),U(H,()=>F("settings.keybindings.configFile")),q(f,"wrapMode","word"),U(f,()=>z.path,null),U(f,(()=>{var B=N0(()=>!!z.exists);return()=>B()?"":F("settings.keybindings.notCreated")})(),null),U(Z,b(Y0,{get when(){return!z.exists},get children(){var B=W("box"),K=W("text"),L=W("text"),A=W("text"),O=W("text"),R=W("text"),u=W("text"),P=W("text"),S=W("text"),g=W("text"),M=W("text");return D(B,K),D(B,L),D(B,A),D(B,O),D(B,R),D(B,u),D(B,P),D(B,S),D(B,g),D(B,M),q(B,"flexDirection","column"),q(B,"gap",0),U(K,()=>F("settings.keybindings.example")),D(L,T0("bindings:")),D(A,T0(" chat.fork.new: ctrl+g # string = one chord")),D(O,T0(" sidebar.select: [enter] # list = several chords")),D(R,T0(" files.createPR: null # null = unbind")),D(u,T0(" tmux.tab.new: ctrl+y # tmux session key (see below)")),D(P,T0(" tmux.layout.workspaceSplit: g # prefix g")),D(S,T0("darwin: # platform overlay (also: linux)")),D(g,T0(" bindings:")),D(M,T0(" palette.open: [cmd+p, ctrl+p]")),y((T)=>{var d=J.text,i=r0.BOLD,J0=J.textMuted,E=J.textMuted,z0=J.textMuted,q0=J.textMuted,o=J.textMuted,B0=J.textMuted,g0=J.textMuted,m=J.textMuted,r=J.textMuted;return d!==T.e&&(T.e=q(K,"fg",d,T.e)),i!==T.t&&(T.t=q(K,"attributes",i,T.t)),J0!==T.a&&(T.a=q(L,"fg",J0,T.a)),E!==T.o&&(T.o=q(A,"fg",E,T.o)),z0!==T.i&&(T.i=q(O,"fg",z0,T.i)),q0!==T.n&&(T.n=q(R,"fg",q0,T.n)),o!==T.s&&(T.s=q(u,"fg",o,T.s)),B0!==T.h&&(T.h=q(P,"fg",B0,T.h)),g0!==T.r&&(T.r=q(S,"fg",g0,T.r)),m!==T.d&&(T.d=q(g,"fg",m,T.d)),r!==T.l&&(T.l=q(M,"fg",r,T.l)),T},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0}),B}}),j),U(Z,b(Y0,{get when(){return z.exists},get children(){var B=W("box"),K=W("text");return D(B,K),q(B,"flexDirection","column"),q(B,"gap",0),U(K,()=>F("settings.keybindings.overridesApplied")),U(B,b(Y0,{get when(){return z.applied.length===0},get children(){var L=W("text");return U(L,()=>F("settings.keybindings.none")),y((A)=>q(L,"fg",J.textMuted,A)),L}}),null),U(B,b(Z1,{get each(){return z.applied},children:(L)=>(()=>{var A=W("text");return q(A,"wrapMode","word"),U(A,()=>`${L.id} \u2192 ${L.keys.length>0?L.keys.join(" / "):"(unbound)"} (default: ${L.defaultKeys.join(" / ")})`),y((O)=>q(A,"fg",J.text,O)),A})()}),null),y((L)=>{var A=J.text,O=r0.BOLD;return A!==L.e&&(L.e=q(K,"fg",A,L.e)),O!==L.t&&(L.t=q(K,"attributes",O,L.t)),L},{e:void 0,t:void 0}),B}}),j),U(Z,b(Y0,{get when(){return z.warnings.length>0},get children(){var B=W("box"),K=W("text");return D(B,K),q(B,"flexDirection","column"),q(B,"gap",0),U(K,()=>F("settings.keybindings.warnings")),U(B,b(Z1,{get each(){return z.warnings},children:(L)=>(()=>{var A=W("text");return q(A,"wrapMode","word"),U(A,`! ${L}`),y((O)=>q(A,"fg",J.warning,O)),A})()}),null),y((L)=>{var A=J.warning,O=r0.BOLD;return A!==L.e&&(L.e=q(K,"fg",A,L.e)),O!==L.t&&(L.t=q(K,"attributes",O,L.t)),L},{e:void 0,t:void 0}),B}}),j),D(j,T0("tmux session keys use the same file: tmux.tab.new (ctrl+t), tmux.tab.prev/next (ctrl+[/]), tmux.tab.close (ctrl+w), tmux.tab.rename (f2), tmux.tab.chooseEngine (ctrl+shift+t), tmux.detach (ctrl+q), tmux.focus (4 chords, left/down/up/right), and prefix layout keys: workspaceSplit (s), workspaceClose (x), workspaceReset (r), tasksToggle (a), opsToggle (o), terminalToggle (z). They apply when a session is (re)built.")),q(j,"wrapMode","word"),q(V,"wrapMode","word"),U(V,()=>`Fixed (not rebindable): ${Y.join(", ")}.`),y((B)=>{var K=J.text,L=r0.BOLD,A=J.textMuted,O=J.text,R=r0.BOLD,u=J.textMuted,P=J.textMuted,S=J.textMuted;return K!==B.e&&(B.e=q(G,"fg",K,B.e)),L!==B.t&&(B.t=q(G,"attributes",L,B.t)),A!==B.a&&(B.a=q(X,"fg",A,B.a)),O!==B.o&&(B.o=q(H,"fg",O,B.o)),R!==B.i&&(B.i=q(H,"attributes",R,B.i)),u!==B.n&&(B.n=q(f,"fg",u,B.n)),P!==B.s&&(B.s=q(j,"fg",P,B.s)),S!==B.h&&(B.h=q(V,"fg",S,B.h)),B},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0}),Z})()}var wM=C(()=>{w();w();w();w();w();w();w();w();w();W1();_8();h1();ZJ();_G();aq();pG();jW()});import{accessSync as zu,constants as Yu,mkdirSync as Zu}from"fs";import{TextAttributes as Gu}from"@opentui/core";function Xu(J){return J.split(/[-_]+/).filter((z)=>z.length>0).map((z)=>z.charAt(0).toUpperCase()+z.slice(1)).join(" ")}function nZ(J){let z=n1(),Y=w0(),Z=WJ(),{theme:G}=Y,[X,Q]=p("sidebar"),[H,f]=p("general"),[j,V]=p(0),[B,K]=p(0),[L,A]=p(""),[O,R]=p(""),[u,P]=p(""),S=U0(()=>Y.all().slice().sort()),[,g]=p(Math.max(0,S().findIndex((l)=>l===Y.selected))),M=NM(J.orchestrator),[T,d]=p(null),[i,J0]=p(null),[E,z0]=p(null),q0=!1;_0(()=>{if(H()!=="accounts"||q0)return;q0=!0,Yq().then(d),Zq().then(J0),Gq().then(z0)});function o(){return bM(H(),{themeNames:S(),focusAccentSlots:vZ,engineList:k1(),hasDaemon:M})}function B0(){return o().length}function g0(){return TZ(J.kv.get(WY,yZ))}function m(l){if(Y.selected===l)return;if(!Y.set(l))return;J.kv.set("activeTheme",l),J.onVisualPrefsChange?.()}function r(){return I8()}function c(l){if(I8()===l)return;RQ(l),J.kv.set(bf,l),J.onVisualPrefsChange?.()}function N(l){if(Y.transparentBackground===l)return;Y.setTransparentBackground(l),J.kv.set("transparentBackground",l),J.onVisualPrefsChange?.()}function t(){N(!Y.transparentBackground)}function x(l){if(Y.focusAccent===l)return;Y.setFocusAccent(l),J.kv.set("focusAccent",l),J.onVisualPrefsChange?.()}function n(l){J.kv.set(WY,l)}function Q0(){return J.kv.get("notifications.toast.enabled",!0)!==!1}function H0(){return J.kv.get("notifications.sound.enabled",!0)!==!1}function F0(){J.kv.set("notifications.toast.enabled",!Q0())}function M0(){J.kv.set("notifications.sound.enabled",!H0())}function o0(){return J.kv.get(qH,!0)!==!1}function S0(){J.kv.set(qH,!o0())}function p0(){return J.kv.get("experimental.remoteProjects",!1)===!0}function h(){J.kv.set("experimental.remoteProjects",!p0())}function L0(){return J.kv.get(UZ,!1)===!0}function Z0(){J.kv.set(UZ,!L0())}function D0(){return J.kv.get(DZ,!1)===!0}function P0(){J.kv.set(DZ,!D0())}function G1(){return J.kv.get(yX,!1)===!0}function c0(){J.kv.set(yX,!G1())}function u0(){let l=J.kv.get("customEngineIds",[]);return Array.isArray(l)?l.filter((I)=>typeof I==="string"&&I.trim().length>0):[]}function k1(){return[...a1,...u0()]}function s(l){let I=J.kv.get(Az(l),"");return typeof I==="string"?I.trim():""}function j0(l){return s(l)||IX(l).join(" ")}function C0(l){return jJ(l)&&s(l).length===0&&!z1(l)}function t0(l){let I=J.kv.get(Rz(l),"");return typeof I==="string"?I.trim():""}function z1(l){return t0(l).length>0}function E0(l){return t0(l)||UB[l]||l}let[V1,D1]=p(PJ(S1("lastSelectedVendor"),u0()));function f1(l){return V1()===l}function G0(l){e1("lastSelectedVendor",l),J.kv.set("lastSelectedVendor",l),D1(l)}async function X0(l){let I=await rz.show(z,j0(l),{dialogTitle:`${E0(l)} launch command`,fieldLabel:"command",submitLabel:"save",allowEmpty:!0});if(I===void 0)return;J.kv.set(Az(l),I.trim())}async function W0(l){let I=await rz.show(z,E0(l),{dialogTitle:`${E0(l)} display name (blank = default)`,fieldLabel:"name",submitLabel:"save",allowEmpty:!0});if(I===void 0)return;J.kv.set(Rz(l),I.trim())}function R0(l){if(J.kv.set(Az(l),""),J.kv.set(Rz(l),""),!jJ(l))J.kv.set("customEngineIds",u0().filter((I)=>I!==l)),K((I)=>Math.max(0,Math.min(I,k1().length)))}async function V0(){let l=await rz.show(z,"",{dialogTitle:"Add engine",fieldLabel:"id",submitLabel:"next",placeholder:"lowercase slug, e.g. aider"});if(l===void 0)return;let I=l.trim().toLowerCase();if(!I||jJ(I)||u0().includes(I))return;let O0=await rz.show(z,"",{dialogTitle:`Add engine \xB7 ${I}`,fieldLabel:"command",submitLabel:"next",placeholder:"e.g. aider --model sonnet"});if(O0===void 0)return;let e=await rz.show(z,I,{dialogTitle:`Add engine \xB7 ${I}`,fieldLabel:"name",submitLabel:"add",allowEmpty:!0});if(J.kv.set("customEngineIds",[...u0(),I]),O0.trim())J.kv.set(Az(I),O0.trim());let I0=e?.trim()??"";J.kv.set(Rz(I),I0&&I0!==I?I0:Xu(I))}function h0(){if(H()!=="engines"||X()!=="body")return null;let l=Pf(o(),B());return l?.kind==="engine"?l.vendor:null}function k0(){return bG(J.kv.get(BY,uH))}function s0(){let l=IZ.indexOf(k0()),I=IZ[(l+1)%IZ.length];if(I)J.kv.set(BY,I)}function b0(){let l=J.kv.get(cY,"");return typeof l==="string"?l:""}async function x0(){let l=await rz.show(z,b0(),{dialogTitle:"Custom editor command (use {file} for the path)",fieldLabel:"command",submitLabel:"save",allowEmpty:!0});if(l===void 0)return;let I=l.trim();if(J.kv.set(cY,I),I)J.kv.set(BY,"custom")}function k(){let l=J.kv.get(Pq,"");return typeof l==="string"?l:""}async function X1(){let l=await rz.show(z,k(),{dialogTitle:F("settings.general.worktreeBaseTitle"),fieldLabel:F("settings.general.worktreeBaseField"),submitLabel:"save",placeholder:"~/.kobe/worktrees",allowEmpty:!0});if(l===void 0)return;let I=l.trim();if(I){let O0=fB(I)??I;try{Zu(O0,{recursive:!0}),zu(O0,Yu.W_OK)}catch(e){await uz.show(z,"Can't use that worktree location",`${O0} isn't usable (${e instanceof Error?e.message:String(e)}). Keeping the previous setting \u2014 pick a writable directory.`,"cancel");return}}J.kv.set(Pq,I)}async function e0(){P("submitting...");try{let l=vG({title:L(),body:O()});P(`sent: ${l.url}`),A(""),R(""),K(0)}catch(l){P(`error: ${l instanceof Error?l.message:String(l)}`)}}let n0=()=>H()==="feedback"&&X()==="body";function v0(l){let I=B()+l;if(I<0||I>2){Q("sidebar");return}K(I)}function K0(){if(X()!=="sidebar"||B0()===0)return;if(Q("body"),K(0),H()==="general")g(0)}function y0(l){if(X()==="sidebar"){let e=(j()+l+dZ.length)%dZ.length;V(e);let I0=dZ[e];if(I0)f(I0.id),K(0);return}let I=B0();if(I===0)return;let O0=(B()+l+I)%I;if(K(O0),Pf(o(),O0)?.kind==="theme")g(O0)}function b1(l){f(l),V(dZ.findIndex((I)=>I.id===l)),K(0),Q("sidebar")}let F1={theme:(l)=>m(l.name),language:(l)=>c(l.locale),transparent:()=>t(),focusAccent:(l)=>x(l.slot),toast:()=>F0(),sound:()=>M0(),zenKeepTasks:()=>S0(),surface:(l)=>n(l.surface),editorKind:()=>s0(),editorCustom:()=>void x0(),worktreeBase:()=>void X1(),engine:(l)=>void X0(l.vendor),engineAdd:()=>void V0(),feedbackTitle:()=>K(0),feedbackBody:()=>K(1),feedbackSend:()=>void e0(),devReset:()=>void XW(z,J.kv,Z),devRestartDaemon:()=>void QW(z,J.orchestrator,Z),devRemoteProjects:()=>h(),devAutoStatus:()=>Z0(),devDispatcher:()=>P0(),devArchivedHistory:()=>c0()};function A1(){let l=Pf(o(),B());if(!l)return;F1[l.kind](l)}return U1(()=>({enabled:(!J.standalone||z.stack.length===0)&&!n0(),bindings:[{key:"down",cmd:()=>y0(1)},{key:"up",cmd:()=>y0(-1)},{key:"j",cmd:()=>y0(1)},{key:"k",cmd:()=>y0(-1)},{key:"tab",cmd:()=>y0(1)},{key:"right",cmd:K0},{key:"l",cmd:K0},{key:"left",cmd:()=>Q("sidebar")},{key:"h",cmd:()=>Q("sidebar")},{key:"return",cmd:()=>{if(X()==="sidebar"){K0();return}A1()}},{key:"t",cmd:t},{key:"r",cmd:()=>{let l=h0();if(l)W0(l)}},{key:"x",cmd:()=>{let l=h0();if(l)R0(l)}},{key:"d",cmd:()=>{let l=h0();if(l)G0(l)}}]})),U1(()=>({enabled:n0(),bindings:[{key:"tab",cmd:()=>v0(1)},{key:"shift+tab",cmd:()=>v0(-1)}]})),U1(()=>({enabled:n0()&&B()===2,bindings:[{key:"return",cmd:()=>void e0()}]})),(()=>{var l=W("box"),I=W("box"),O0=W("text"),e=W("text"),I0=W("box"),M1=W("box"),UJ=W("box"),GJ=W("text");return D(l,I),D(l,I0),D(l,UJ),q(l,"paddingLeft",2),q(l,"paddingRight",2),q(l,"paddingBottom",1),q(l,"gap",1),D(I,O0),D(I,e),q(I,"flexDirection","row"),q(I,"justifyContent","space-between"),U(O0,()=>F("settings.title")),q(e,"onMouseUp",()=>J.onClose()),U(e,()=>F("settings.esc")),D(I0,M1),q(I0,"flexDirection","row"),q(I0,"gap",2),U(I0,b(SM,{level:X,cursor:j,switchSection:b1}),M1),q(M1,"flexGrow",1),q(M1,"flexShrink",1),q(M1,"flexDirection","column"),q(M1,"gap",1),U(M1,b(Y0,{get when(){return H()==="general"},get children(){return b(IM,{level:X,bodyRow:B,setLevel:Q,setBodyRow:K,themeNames:S,setThemeCursor:g,selectTheme:m,currentLocale:r,selectLanguage:c,toggleTransparent:t,selectFocusAccent:x,toastEnabled:Q0,soundEnabled:H0,toggleToast:F0,toggleSound:M0,zenKeepsTasks:o0,toggleZenKeepsTasks:S0,settingsSurface:g0,selectSurface:n,editorKind:k0,cycleEditorKind:s0,editorCustomCommand:b0,editEditorCustom:()=>void x0(),worktreeBasePath:k,editWorktreeBase:()=>void X1()})}}),null),U(M1,b(Y0,{get when(){return H()==="engines"},get children(){return b(yM,{level:X,bodyRow:B,setLevel:Q,setBodyRow:K,get vendors(){return k1()},isCustom:(j1)=>!jJ(j1),displayName:E0,commandText:j0,isDefault:C0,isDefaultEngine:f1,editEngine:(j1)=>void X0(j1),renameEngine:(j1)=>void W0(j1),resetEngine:R0,onAddEngine:()=>void V0()})}}),null),U(M1,b(Y0,{get when(){return H()==="accounts"},get children(){return b(TM,{claudeStatus:T,codexStatus:i,copilotStatus:E})}}),null),U(M1,b(Y0,{get when(){return H()==="keys"},get children(){return b(EM,{})}}),null),U(M1,b(Y0,{get when(){return H()==="feedback"},get children(){return b(xM,{level:X,bodyRow:B,setLevel:Q,setBodyRow:K,title:L,setTitle:(j1)=>{A(j1),P("")},body:O,setBody:(j1)=>{R(j1),P("")},status:u,onTitleSubmit:()=>K(1),submit:()=>void e0()})}}),null),U(M1,b(Y0,{get when(){return H()==="dev"},get children(){return b(uM,{level:X,bodyRow:B,setLevel:Q,setBodyRow:K,hasDaemon:M,confirmReset:()=>void XW(z,J.kv,Z),confirmRestartDaemon:()=>void QW(z,J.orchestrator,Z),remoteProjectsEnabled:p0,toggleRemoteProjects:h,autoStatusEnabled:L0,toggleAutoStatus:Z0,dispatcherEnabled:D0,toggleDispatcher:P0,archivedHistoryEnabled:G1,toggleArchivedHistory:c0})}}),null),D(UJ,GJ),q(UJ,"paddingTop",0),U(GJ,(()=>{var j1=N0(()=>!!n0());return()=>j1()?F("settings.nav.feedback"):F("settings.nav.default")})()),y((j1)=>{var _J=Gu.BOLD,fJ=G.text,pJ=G.textMuted,bJ=G.textMuted;return _J!==j1.e&&(j1.e=q(O0,"attributes",_J,j1.e)),fJ!==j1.t&&(j1.t=q(O0,"fg",fJ,j1.t)),pJ!==j1.a&&(j1.a=q(e,"fg",pJ,j1.a)),bJ!==j1.o&&(j1.o=q(GJ,"fg",bJ,j1.o)),j1},{e:void 0,t:void 0,a:void 0,o:void 0}),l})()}var BW=C(()=>{w();w();w();w();w();w();w();w();W1();XZ();Yz();tH();nq();SX();mq();C1();jB();NB();_1();h1();ZJ();EH();kJ();o8();$J();wf();GW();kM();jW();wM();nZ.show=(J,z,Y)=>{let Z=!1;return new Promise((G)=>{J.replace(()=>b(nZ,{kv:z,orchestrator:Y,onVisualPrefsChange:()=>{Z=!0},onClose:()=>G({visualPrefsChanged:Z})}),()=>G({visualPrefsChanged:Z}))})}});import{TextAttributes as Qu}from"@opentui/core";function hM(){let{theme:J}=w0(),z=az(),Y=Cf(),Z=()=>Y.toasts().slice(-PM),G=()=>Math.max(0,z().width-qu-Hu),X=()=>Math.max(0,z().height-fu-PM-1);return b(Y0,{get when(){return Y.toasts().length>0},get children(){var Q=W("box");return q(Q,"position","absolute"),q(Q,"zIndex",2500),q(Q,"width",40),q(Q,"flexDirection","column"),q(Q,"gap",0),U(Q,b(Z1,{get each(){return Z()},children:(H)=>{let f=()=>H.kind==="needs_input"?J.warning:H.kind==="error"?J.error:J.success,j=()=>J.selectedListItemText,V=()=>H.kind==="needs_input"?"?":H.kind==="error"?"\u2715":"\u2713";return(()=>{var B=W("box"),K=W("text"),L=W("text");return D(B,K),D(B,L),q(B,"flexDirection","row"),q(B,"gap",1),q(B,"paddingLeft",1),q(B,"paddingRight",1),q(B,"onMouseUp",()=>Y.dismiss(H.id)),q(K,"wrapMode","none"),U(K,V),q(L,"wrapMode","none"),U(L,()=>H.title),y((A)=>{var O=f(),R=j(),u=Qu.BOLD,P=j();return O!==A.e&&(A.e=q(B,"backgroundColor",O,A.e)),R!==A.t&&(A.t=q(K,"fg",R,A.t)),u!==A.a&&(A.a=q(K,"attributes",u,A.a)),P!==A.o&&(A.o=q(L,"fg",P,A.o)),A},{e:void 0,t:void 0,a:void 0,o:void 0}),B})()}})),y((H)=>{var f=G(),j=X();return f!==H.e&&(H.e=q(Q,"left",f,H.e)),j!==H.t&&(H.t=q(Q,"top",j,H.t)),H},{e:void 0,t:void 0}),Q}})}var PM=4,qu=40,Hu=2,fu=2;var vM=C(()=>{w();w();w();w();w();w();w();W1();kf();h1()});import{TextAttributes as ju}from"@opentui/core";function Bu(J,z){let Y=J?`v${J}`:F("update.skew.olderBuild");return F("update.skew.hint",{daemon:Y,clientVersion:z})}function mM(J){let{theme:z}=w0(),Y=()=>Math.max(4,J.width()-2);return b(Y0,{get when(){return J.stale()},get children(){var Z=W("box"),G=W("text"),X=W("box"),Q=W("text"),H=W("box"),f=W("text");return D(Z,G),D(Z,X),D(Z,H),q(Z,"flexDirection","column"),q(Z,"flexShrink",0),q(Z,"paddingLeft",1),q(Z,"paddingRight",1),q(Z,"paddingBottom",1),q(G,"wrapMode","none"),U(G,()=>"\u2594".repeat(Y())),D(X,Q),q(X,"flexDirection","row"),q(X,"gap",1),q(Q,"wrapMode","none"),U(Q,()=>F("update.skew.title")),D(H,f),q(H,"flexDirection","row"),q(H,"gap",1),q(f,"wrapMode","word"),U(f,()=>Bu(J.daemonVersion(),J.clientVersion)),y((j)=>{var{warning:V,warning:B}=z,K=ju.BOLD,L=z.text;return V!==j.e&&(j.e=q(G,"fg",V,j.e)),B!==j.t&&(j.t=q(Q,"fg",B,j.t)),K!==j.a&&(j.a=q(Q,"attributes",K,j.a)),L!==j.o&&(j.o=q(f,"fg",L,j.o)),j},{e:void 0,t:void 0,a:void 0,o:void 0}),Z}})}var cM=C(()=>{w();w();w();w();w();w();W1();h1();ZJ()});function dM(J,z){return J.find((Y)=>Y.id!==z&&!Y.archived)}async function Wu(J){let z=J.tasks.find((X)=>X.id===J.taskId);if(!z)return null;let Y=!z.archived;try{await J.orch.setArchived(J.taskId,Y)}catch(X){return J.logger.error(`${J.logPrefix} archive failed:`,X),null}if(!Y)return{archived:Y};let Z=I1(J.taskId),G=dM(J.tasks,J.taskId);if(await nz(Z,G?I1(G.id):void 0).catch((X)=>{J.logger.error(`${J.logPrefix} switch-client failed:`,X)}),J.updateActiveTask)await J.orch.setActiveTask(G?.id??null).catch(()=>{});return await Gz(Z).catch((X)=>{J.logger.error(`${J.logPrefix} kill tmux session failed:`,X)}),{archived:Y,nextTask:G}}async function Vu(J){let z=dM(J.tasks,J.taskId),Y=I1(J.taskId);if(J.switchBeforeKill)await nz(Y,z?I1(z.id):void 0).catch((Z)=>{J.logger.error(`${J.logPrefix} switch-client failed:`,Z)});if(J.updateActiveTask)await J.orch?.setActiveTask(z?.id??null).catch(()=>{});return await Gz(Y).catch((Z)=>{J.logger.error(`${J.logPrefix} kill tmux session failed:`,Z)}),{nextTask:z}}async function nM(J,z){if(!J.orch)return;let Y=J.tasks().find((G)=>G.id===z);if(!Y)return;if(!Y.archived){if(!await J.confirm({title:`Archive "${Y.title}"?`,body:"Moves it to Archives and stops its running session. The worktree, branch, and chat history stay \u2014 unarchive to bring it back.",cancelLabel:"cancel",confirmLabel:"archive"}))return}if(!await Wu({orch:J.orch,tasks:J.tasks(),taskId:z,logger:J.logger,logPrefix:J.logPrefix,updateActiveTask:J.updateActiveTask}))return;await J.reload?.()}async function iM(J,z){if(!J.orch)return;let Y=J.tasks().find((Q)=>Q.id===z);if(!Y)return;if(Y.kind==="main"){if(!await J.confirm({title:`Remove project "${Y.title}"?`,body:"Forgets it from the projects list. The repo, its branches, worktrees, and any tasks under it stay on disk \u2014 re-add it with `kobe add`.",cancelLabel:"cancel",confirmLabel:"remove"}))return;try{await J.orch.forgetProject(Y.repo)}catch(H){J.logger.error(`${J.logPrefix} forget project failed:`,H),J.notifyError?.(`Couldn't remove: ${H instanceof Error?H.message:String(H)}`);return}await J.reload?.();return}if(!await J.confirm({title:`Delete "${Y.title}"?`,body:"Removes the task entry and its worktree. The tmux session (if any) is killed.",cancelLabel:"cancel",confirmLabel:"delete"}))return;let G=!1;try{await J.orch.deleteTask(z),G=!0}catch(Q){if((Q instanceof Error?Q.message:String(Q)).includes(XB)){if(await J.confirm({title:`"${Y.title}" has uncommitted changes`,body:"Its worktree has uncommitted or untracked work that will be permanently deleted. Force delete anyway?",cancelLabel:"cancel",confirmLabel:"force delete"}))try{await J.orch.deleteTask(z,{force:!0}),G=!0}catch(j){J.logger.error(`${J.logPrefix} force delete failed:`,j),J.notifyError?.(`Couldn't delete: ${j instanceof Error?j.message:String(j)}`)}}else J.logger.error(`${J.logPrefix} delete failed:`,Q),J.notifyError?.(`Couldn't delete: ${Q instanceof Error?Q.message:String(Q)}`)}if(!G)return;let{nextTask:X}=await Vu({orch:J.orch,tasks:J.tasks(),taskId:z,logger:J.logger,logPrefix:J.logPrefix,switchBeforeKill:J.switchBeforeKill,updateActiveTask:J.updateActiveTask});await J.reload?.(),J.onTaskDeleted?.(z,X)}async function lM(J,z){let Y=J.tasks().find((G)=>G.id===z);if(!Y)return;let Z=await J.promptText(Y.title);if(!Z||!J.orch)return;try{await J.orch.setTitle(z,Z)}catch(G){J.logger.error(`${J.logPrefix} task.rename failed:`,G),J.notifyError?.(`Couldn't rename task: ${G instanceof Error?G.message:String(G)}`);return}await J.reload?.()}async function $M(J,z){let Y=J.tasks().find((G)=>G.id===z);if(!Y||Y.kind==="main")return;let Z=await J.promptText(Y.branch,{dialogTitle:"Rename branch",fieldLabel:"branch"});if(!Z||!J.orch)return;try{await J.orch.setBranch(z,Z)}catch(G){J.logger.error(`${J.logPrefix} task.setBranch failed:`,G),J.notifyError?.(`Couldn't rename branch: ${G instanceof Error?G.message:String(G)}`);return}await J.reload?.()}async function aM(J,z){let Y=J.tasks().find((X)=>X.id===z);if(!Y||!J.orch)return;let Z=await GY(),G=AY(Z,Y.vendor??o1);try{await J.orch.setVendor(z,G)}catch(X){J.logger.error(`${J.logPrefix} task.setVendor failed:`,X),J.notifyError?.(`Couldn't switch engine: ${X instanceof Error?X.message:String(X)}`);return}J.notifyInfo?.(`Engine \u2192 ${LZ(G)} (applies on reopen)`),await J.reload?.()}async function _M(J){let z=SJ(),Y=J.cursorRepo()??z[0]??process.cwd();if(J.openCreateSurface&&await J.openCreateSurface(Y))return;let Z=J.lastVendor()??o1,G=await GY();if(G.length===0)J.notifyInfo?.("No engine CLI detected \u2014 install claude or codex, or add one in Settings \u2192 Engines");let X=J.orch,Q=await J.promptNewTask(Y,z,{defaultVendor:Z,availableVendors:G,discoverAdoptable:X?(f)=>X.discoverAdoptableWorktrees(f):void 0});if(!Q)return;if(J.rememberVendor(Q.vendor),ez(Q.repo),J.onRepoSaved?.(),!X){J.logger.error(`${J.logPrefix} no daemon; cannot create task`);return}J.notifyInfo?.("Creating task\u2026");let H;if(Q.mode==="adopt"){let f=Q.adopt.length,j=0,V;for(let B of Q.adopt)try{H=(await X.adoptWorktree({repo:Q.repo,worktreePath:B.worktreePath,branch:B.branch,vendor:Q.vendor})).id,j++}catch(K){if(V===void 0)V=K instanceof Error?K.message:String(K);J.logger.error(`${J.logPrefix} adoptWorktree failed for ${B.worktreePath}:`,K)}if(j===0){J.notifyError?.(F("newTask.adopt.summaryNone",{error:V??""}));return}if(j<f)J.notifyInfo?.(F("newTask.adopt.summaryPartial",{done:j,total:f}));else J.notifyInfo?.(F("newTask.adopt.summaryAll",{count:j}))}else try{H=(await X.createTask({repo:Q.repo,baseRef:Q.baseRef,vendor:Q.vendor})).id}catch(f){J.logger.error(`${J.logPrefix} task.create failed:`,f),J.notifyError?.(`Couldn't create task: ${f instanceof Error?f.message:String(f)}`);return}if(await J.reload?.(),H)J.selectTask?.(H),await J.enterTask?.(H)}var pM=C(()=>{XZ();Yz();HB();C1();ZJ();zz();_1();zJ()});function zX(J,z){if(z<=0)return"";let Y=[...J];if(Y.length<=z)return J;return`${Y.slice(0,Math.max(0,z-1)).join("")}\u2026`}function hf(J,z){if(z<=0)return"";let Y=[...J];if(Y.length<=z)return J;return`\u2026${Y.slice(Y.length-Math.max(0,z-1)).join("")}`}import{spawn as Ku}from"child_process";import{existsSync as Uu}from"fs";import{basename as Du,delimiter as Lu,isAbsolute as Fu,join as Mu}from"path";function WW(J,z,Y){if(Fu(J))return Y(J);let Z=z.PATH??"";for(let G of Z.split(Lu)){if(!G)continue;if(Y(Mu(G,J)))return!0}return!1}function Ru(J){let z=Du(J);if(z==="code")return"VS Code";if(z==="cursor")return"Cursor";if(z==="windsurf")return"Windsurf";if(z==="zed")return"Zed";return z||J}function rM(J={}){let z=J.env??process.env,Y=J.platform??process.platform,Z=J.exists??Uu,G=z.KOBE_OPEN_EDITOR?.trim();if(G)return{id:"env",label:Ru(G),command:G,args:[]};for(let X of Ou)if(WW(X.command,z,Z))return{id:X.id,label:X.label,command:X.command,args:[]};if(Y==="darwin"&&WW("open",z,Z)){for(let X of Au)if(X.paths.some((Q)=>Z(Q)))return{id:X.id,label:X.label,command:"open",args:["-a",X.appName]};return{id:"mac-open",label:"Finder",command:"open",args:[]}}if(Y==="linux"&&WW("xdg-open",z,Z))return{id:"xdg-open",label:"Open",command:"xdg-open",args:[]};return null}function gu(J,z){return[z.command,[...z.args,J]]}function oM(J,z,Y={}){if(!J)return!1;let Z=Y.spawn??Ku,[G,X]=gu(J,z);try{let Q=Z(G,X,{detached:!0,stdio:"ignore"});if(Q.pid===void 0)return!1;return Q.unref(),!0}catch{return!1}}var Ou,Au;var sM=C(()=>{Ou=[{id:"code",label:"VS Code",command:"code"},{id:"cursor",label:"Cursor",command:"cursor"},{id:"windsurf",label:"Windsurf",command:"windsurf"},{id:"zed",label:"Zed",command:"zed"}],Au=[{id:"vscode.app",label:"VS Code",appName:"Visual Studio Code",paths:["/Applications/Visual Studio Code.app"]},{id:"cursor.app",label:"Cursor",appName:"Cursor",paths:["/Applications/Cursor.app","/System/Applications/Cursor.app"]},{id:"windsurf.app",label:"Windsurf",appName:"Windsurf",paths:["/Applications/Windsurf.app"]},{id:"zed.app",label:"Zed",appName:"Zed",paths:["/Applications/Zed.app"]}]});function vf(J){let z=new Map;function Y(Z){let G=z.get(Z);if(!G){let[X,Q]=p(J.initial,J.equals?{equals:J.equals}:void 0);G={read:X,write:(H)=>Q(()=>H),inFlight:!1,nextAllowedAt:0},z.set(Z,G)}return G}return{read(Z){if(!Z)return J.initial;return Y(Z).read()},poll(Z){if(!Z)return;let G=Y(Z);ZG(G,J,(X)=>J.run(Z,X),(X)=>G.write(X))},reset(){z.clear()}}}var yQ=C(()=>{W1();GG();GG()});import{stat as Nu}from"fs/promises";import{join as Cu}from"path";async function Iu(J){try{let z=await Nu(Cu(J,".git","HEAD"));return`${z.mtimeMs}:${z.size}`}catch{return null}}async function yu(J,z,Y=qY){let Z=await Iu(J);if(Z!==null){let H=tM.get(J);if(H&&H.fingerprint===Z)return H.value}let G="",X=await Y("git",["symbolic-ref","--short","HEAD"],{cwd:J,env:iJ(),signal:z}),Q=X.status===0?X.stdout.trim():"";if(Q&&Q!=="HEAD")G=Q;else if((await Y("git",["rev-parse","--verify","HEAD"],{cwd:J,env:iJ(),signal:z})).status===0)G="(detached)";if(Z!==null)tM.set(J,{fingerprint:Z,value:G});return G}function J3(J){return eM.read(J)}function z3(J){eM.poll(J)}var ku=2000,bu=30000,Su=1500,tM,eM;var Y3=C(()=>{dY();yQ();tM=new Map;eM=vf({initial:"",timeoutMs:ku,slowRetryMs:bu,minIntervalMs:Su,run:(J,z)=>yu(J,z)})});function VW(J){let z=J.scheduleTimeout??((f,j)=>{let V=setTimeout(f,j);return()=>clearTimeout(V)}),Y=!1,Z=null,G=()=>{Y=!0,Z?.(),Z=z(()=>{Y=!1,Z=null},700)},X=()=>{Y=!1,Z?.(),Z=null},Q=(f)=>{let j=J.getFlatIds();if(j.length===0)return;let V=J.getCursor(),B=V<0?0:V,K=Math.min(j.length-1,Math.max(0,B+f));J.setCursor(K)},H=(f)=>{let j=J.getFlatIds();if(j.length===0)return;J.setCursor(Math.min(j.length-1,Math.max(0,f)))};return{moveDown(){X(),Q(1)},moveUp(){X(),Q(-1)},selectCurrent(){X();let f=J.getFlatIds(),j=J.getCursor();if(j<0||j>=f.length)return;let V=f[j];if(V!==void 0)J.onSelect(V)},pressG(){if(Y)X(),H(0);else G()},pressShiftG(){X(),H(J.getFlatIds().length-1)},isChordArmed(){return Y},disarmChord(){X()}}}function Z3(J){let z=VW({getCursor:()=>J.cursorIndex(),setCursor:(X)=>J.setCursorIndex(X),getFlatIds:()=>J.flatTaskIds(),onSelect:(X)=>J.onSelect(X)}),Y=()=>{let X=J.flatTaskIds(),Q=J.cursorIndex();if(Q<0||Q>=X.length)return;return X[Q]},Z=()=>J.searchMode?.()??!1,G=()=>J.moveMode?.()??!1;U1(()=>({enabled:J.focused()&&!Z(),bindings:rY({"sidebar.nav":(X,Q)=>{let H=(Q??0)%2===0;if(G()){let f=Y();if(f===void 0)return;J.onMoveRequest?.(f,H?1:-1);return}if(H)z.moveDown();else z.moveUp()},"sidebar.select":()=>{if(G()){J.onMoveModeExit?.();return}z.selectCurrent()},"sidebar.goto":(X)=>{if(G())return;if(X.shift)z.pressShiftG();else z.pressG()},"sidebar.delete":()=>{if(G())return;let X=Y();if(X!==void 0)J.onDeleteRequest?.(X)},"sidebar.archive":()=>{if(G())return;let X=Y();if(X!==void 0)J.onArchiveRequest?.(X)},"sidebar.localMerge":(X)=>{if(!X.shift)return;let Q=Y();if(Q!==void 0)J.onLocalMergeRequest?.(Q)},"sidebar.rename":()=>{if(G())return;let X=Y();if(X!==void 0)J.onRenameRequest?.(X)},"sidebar.pin":(X)=>{if(G())return;if(!X.shift)return;let Q=Y();if(Q!==void 0)J.onPinRequest?.(Q)},"sidebar.search.enter":()=>{if(G())return;J.onSearchEnter?.()},"sidebar.sort":()=>{if(G())return;J.onSortModeToggle?.()},"sidebar.projectFilter":()=>{if(G())return;J.onProjectFilterToggle?.()}})})),U1(()=>({enabled:J.focused()&&G(),bindings:[{key:"escape",cmd:()=>J.onMoveModeExit?.()}]})),U1(()=>({enabled:J.focused(),bindings:rY({"sidebar.view":(X,Q)=>{J.onViewSwitch?.((Q??0)%2===0?-1:1)}})})),U1(()=>({enabled:J.focused()&&Z(),bindings:rY({"sidebar.search.nav":(X,Q)=>{if((Q??0)%2===0)z.moveDown();else z.moveUp()},"sidebar.search.submit":()=>{z.selectCurrent(),J.onSearchExit?.(!0)},"sidebar.search.cancel":()=>J.onSearchExit?.(!1)})}))}var G3=C(()=>{rG();kJ()});function KW(J,z){return zX(J,z)}function UW(J,z){return` ${KW(J,Math.max(0,z))}`}var X3=()=>{};function xu(J){switch(J){case"done":return F("tasks.status.done");case"in_review":return F("tasks.status.inReview");case"in_progress":return F("tasks.status.working");case"backlog":return F("tasks.status.backlog");case"canceled":return F("tasks.status.canceled");case"error":return F("tasks.status.error")}}function uu(J){switch(J){case"rate_limited":return{text:F("tasks.activity.rateLimited"),tone:"warning"};case"permission_needed":return{text:F("tasks.activity.permissionNeeded"),tone:"warning"};case"error":return{text:F("tasks.activity.error"),tone:"error"};default:return null}}function H3(J){switch(J.prStatus?.checkState){case"passing":return{glyph:"\u2713",tone:"success"};case"failing":return{glyph:"\u2717",tone:"error"};case"pending":return{glyph:"\u2022",tone:"warning"};default:return null}}function Eu(){return F("tasks.subtitle.noTracking")}function wu(){return F("tasks.subtitle.materializing")}function Pu(J){if(J.kind==="main")return!1;return J.vendor!==void 0&&!jJ(J.vendor)}function DW(J){let{task:z}=J,Y=z.kind==="main",Z=Y?J.mainBranch??"":z.branch,G=Tu[z.status],X=J.activity?.state,Q=X!==void 0,H=hu(X),f=uu(X),j=Pu(z)&&!Q,V=J.job!==void 0,B=V||!j&&(X==="running"||J.live||!Q&&!Y&&z.status==="in_progress"),K=YX[J.spinnerFrame]??YX[0],L=V?"primary":j?"textMuted":f?.tone??(B?"primary":H?.tone??G.tone),A=j?Eu():xu(z.status),O=V?J.truncateBranch(wu(),J.subtitleBudget):f?J.truncateBranch(f.text,J.subtitleBudget):Z.length>0?J.truncateBranch(Z,J.subtitleBudget):J.truncateBranch(A,J.subtitleBudget),R=j?Q3:H?.glyph??G.glyph,u=j?Q3:H?.glyph??"\u2605";return{isMain:Y,titleText:Y?xz(z.repo):z.title,subtitleText:O,loading:B,stateGlyph:B?K:R,projectGlyph:B?K:u,tone:L}}function LW(J,z){if(!J.loading)return J;let Y=YX[z()%YX.length]??"\u280B";if(Y===J.stateGlyph&&Y===J.projectGlyph)return J;return{...J,stateGlyph:Y,projectGlyph:Y}}function hu(J){switch(J){case"rate_limited":return{glyph:"\u25F7",tone:"warning"};case"permission_needed":return{glyph:"?",tone:"warning"};case"error":return{glyph:"\u2715",tone:"error"};case"turn_complete":return{glyph:"\u2713",tone:"primary"};default:return null}}var Tu,YX,q3=100,Q3="\xB7";var f3=C(()=>{ZJ();_1();xf();Tu={done:{glyph:"\u2713",tone:"success"},in_review:{glyph:"\u25D0",tone:"warning"},in_progress:{glyph:"",tone:"primary"},backlog:{glyph:"\u25CB",tone:"textMuted"},canceled:{glyph:"\u2298",tone:"textMuted"},error:{glyph:"\u2715",tone:"error"}};YX=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"]});function FW(J){return j3.read(J)}function MW(J){j3.poll(J)}var vu=4000,mu=60000,cu=1500,du,j3;var B3=C(()=>{dY();yQ();xG();yQ();du={added:0,deleted:0},j3=vf({initial:du,equals:$z,timeoutMs:vu,slowRetryMs:mu,minIntervalMs:cu,run:async(J,z)=>{let Y=await qY("git",["status","--porcelain=v1"],{cwd:J,env:iJ(),signal:z});if(Y.status!==0)throw Error("git status failed");return TG(Y.stdout)}})});import{TextAttributes as v1}from"@opentui/core";function nu(J){switch(J){case"active":return F("tasks.view.workspace");case"archived":return F("tasks.view.archives")}}function V3(J,z=lu){return zX(J,z)}function $u(J){let z=0;for(let Y of J)z+=(Y.codePointAt(0)??0)>=4352?2:1;return z}function K3(J){let{theme:z}=w0(),Y=()=>J.focused?J.focused():!0,[Z,G]=p("active"),[X,Q]=p(!1),[H,f]=p(""),[j,V]=p(null),B=()=>J.projectFilter?.()??j(),K=(s)=>{if(J.onProjectFilterChange)J.onProjectFilterChange(s);else V(s)};function L(){f(""),Q(!0),J.onSearchActiveChange?.(!0)}function A(s){Q(!1),f(""),J.onSearchActiveChange?.(!1)}_0(()=>{if(!X())return;let s=WJ();if(!s)return;let j0=(C0)=>{if(C0.defaultPrevented)return;if(!Y())return;if(C0.ctrl||C0.meta||C0.option)return;if(C0.name==="backspace"){f((E0)=>E0.slice(0,-1));return}let t0=C0.sequence;if(!t0||t0.length!==1)return;let z1=t0.charCodeAt(0);if(z1<32||z1===127)return;f((E0)=>E0+t0)};s.keyInput.on("keypress",j0),T1(()=>s.keyInput.off("keypress",j0))});let[O,R]=p(0),u=setInterval(()=>R((s)=>s+1),iu);T1(()=>clearInterval(u));let[P,S]=p(0),g=setInterval(()=>S((s)=>(s+1)%YX.length),q3);T1(()=>clearInterval(g));let M=()=>J.sortMode?.()??"default",T=U0(()=>KM(J.tasks(),Z())),d=U0(()=>{let s=B();if(!s)return null;let j0=fz(s);return T().find((C0)=>fz(C0.repo)===j0)??null}),i=U0(()=>d()?.repo??null),J0=U0(()=>d()?.label??"all"),E=U0(()=>{let s=d();return s?s.count:T().reduce((j0,C0)=>j0+C0.count,0)}),z0=U0(()=>{let s=E();return`${s} ${s===1?F("tasks.project.taskSingular"):F("tasks.project.taskPlural")}`}),q0=U0((s)=>FM(s,JW(J.tasks(),Z(),X()?H():"",M(),i())),[]),o=U0(()=>zW(q0())),B0=U0(()=>LM(q0())),g0=U0(()=>B0().projectRows),m=U0(()=>B0().taskRows),r=U0(()=>{let s=new Map;for(let j0 of q0())s.set(j0.flatIndex,j0);return s}),c=U0(()=>zW(JW(J.tasks(),Z(),"",M(),i())).length),N=U0(()=>m().length>0);_0(()=>{let s=B(),j0=T();if(s!==null&&j0.length>0&&(j0.length<=1||d()===null))K(null)});function t(){let s=T();if(s.length<=1){K(null);return}let j0=i(),C0=j0?fz(j0):null,t0=C0===null?-1:s.findIndex((E0)=>fz(E0.repo)===C0),z1=s[t0+1];K(z1?.repo??null)}let x=()=>J.width?J.width():W3,n=U0(()=>Math.max(6,x()-9)),Q0=U0(()=>Math.max(6,x()-16)),H0=az(),F0=U0(()=>{let s=Math.max(2,Math.min(10,Math.floor(H0().height*0.25))),j0=Math.max(2,g0().length*2);return Math.min(s,j0)}),[M0,o0]=p(null),[S0,p0]=p(-1),h,L0,Z0,D0=new Map;_0(()=>{let s=J.width?J.width():W3,j0=Z0;if(!j0)return;j0.width=s,j0.flexShrink=1,j0.minHeight=0}),_0(BJ([S0,q0],([s])=>{let j0=r().get(s);if(!j0)return;let C0=j0.task.kind==="main"?h:L0;if(!C0)return;if(C0.viewport.height<=0)return;let t0=D0.get(s);if(!t0)return;C0.scrollChildIntoView(t0.id)})),_0(BJ(()=>[J.selectedId(),o()],([s,j0])=>{let C0=t1(S0),t0=DM(s,j0,C0);if(t0!==C0)p0(t0)})),_0(BJ(Z,()=>{let s=o();p0(s.length>0?0:-1)},{defer:!0})),_0(BJ(i,(s)=>p0(UM(q0(),s)),{defer:!0})),_0(BJ([X,H],()=>{if(!X())return;let s=o();p0(s.length>0?0:-1)}));function P0(s){let j0=Z(),C0=TQ.findIndex((E0)=>E0.view===j0);if(C0<0)return;let t0=(C0+s+TQ.length)%TQ.length,z1=TQ[t0];if(z1)G(z1.view)}let G1=(s)=>{if(J.onActivate?.(s),!J.pinnedSelection)return;let j0=J.selectedId();if(!j0||s===j0)return;let C0=o().indexOf(j0);if(C0>=0)p0(C0)};Z3({focused:Y,cursorIndex:S0,setCursorIndex:p0,flatTaskIds:o,onSelect:(s)=>{J.onSelect(s),G1(s)},onDeleteRequest:(s)=>J.onDeleteRequest?.(s),onArchiveRequest:(s)=>J.onArchiveRequest?.(s),onLocalMergeRequest:(s)=>J.onLocalMergeRequest?.(s),moveMode:J.moveMode,onMoveRequest:(s,j0)=>J.onMoveRequest?.(s,j0),onMoveModeExit:()=>J.onMoveModeExit?.(),onRenameRequest:(s)=>J.onRenameRequest?.(s),onPinRequest:(s)=>J.onPinRequest?.(s),onViewSwitch:(s)=>P0(s),onSortModeToggle:()=>J.onSortModeToggle?.(),onProjectFilterToggle:()=>t(),searchMode:X,onSearchEnter:()=>L(),onSearchExit:(s)=>A(s)});let c0=(s)=>(()=>{var j0=W("box"),C0=W("box"),t0=W("text"),z1=W("text");return D(j0,C0),q(j0,"flexDirection","column"),q(j0,"flexShrink",0),U(j0,b(Y0,{get when(){return s.topPad},get children(){var E0=W("box"),V1=W("text");return D(E0,V1),q(E0,"flexShrink",0),D(V1,T0(" ")),q(V1,"wrapMode","none"),E0}}),C0),D(C0,t0),D(C0,z1),q(C0,"flexDirection","row"),q(C0,"flexShrink",0),q(C0,"gap",1),q(C0,"paddingLeft",1),q(C0,"paddingRight",1),q(t0,"wrapMode","none"),U(t0,()=>s.label),q(z1,"wrapMode","none"),U(z1,()=>"\u2500".repeat(Math.max(2,x()-10-s.label.length-(s.suffix?.length??0)))),U(C0,b(Y0,{get when(){return s.suffix},get children(){var E0=W("text");return q(E0,"wrapMode","none"),U(E0,()=>s.suffix),y((V1)=>{var D1=z.info,f1=v1.BOLD;return D1!==V1.e&&(V1.e=q(E0,"fg",D1,V1.e)),f1!==V1.t&&(V1.t=q(E0,"attributes",f1,V1.t)),V1},{e:void 0,t:void 0}),E0}}),null),y((E0)=>{var V1=z.textMuted,D1=v1.BOLD,f1=z.border;return V1!==E0.e&&(E0.e=q(t0,"fg",V1,E0.e)),D1!==E0.t&&(E0.t=q(t0,"attributes",D1,E0.t)),f1!==E0.a&&(E0.a=q(z1,"fg",f1,E0.a)),E0},{e:void 0,t:void 0,a:void 0}),j0})(),u0=(s)=>{switch(s){case"success":return z.success;case"warning":return z.warning;case"primary":return z.primary;case"error":return z.error;default:return z.textMuted}},k1=(s)=>{let j0=s.row.task,C0=s.row.flatIndex,t0=()=>C0===S0(),z1=()=>j0.id===J.selectedId(),E0=U0(()=>{let V0=J.chatRunState?.();if(!V0)return!1;let h0=`${j0.id}:`;for(let[k0,s0]of V0)if(s0==="running"&&k0.startsWith(h0))return!0;return!1}),V1=U0(()=>{let V0=iH(J.worktreeChanges?.(),j0.worktreePath);if(V0)return V0;if(O(),!j0.archived)MW(j0.worktreePath);return FW(j0.worktreePath)},void 0,{equals:$z}),D1=U0(()=>{return O(),z3(j0.repo),J3(j0.repo)}),f1=U0(()=>DW({task:j0,activity:J.engineState?.().get(j0.id),job:J.taskJobs?.().get(j0.id),live:E0(),spinnerFrame:0,subtitleBudget:Q0(),truncateBranch:V3,mainBranch:D1()})),G0=U0(()=>LW(f1(),P)),X0=()=>!G0().loading?z.primary:u0(G0().tone),W0=()=>t0()?z.focusAccent:z1()?z.primary:void 0,R0=()=>t0()||z1()?"\u258C":" ";return(()=>{var V0=W("box"),h0=W("box"),k0=W("box"),s0=W("text"),b0=W("box"),x0=W("text"),k=W("text"),X1=W("box"),e0=W("text"),n0=W("box"),v0=W("text");return D(V0,h0),q(V0,"flexDirection","column"),q(V0,"gap",0),q(V0,"paddingBottom",0),D(h0,k0),D(h0,X1),qz((K0)=>{D0.set(C0,K0),T1(()=>{if(D0.get(C0)===K0)D0.delete(C0)})},h0),q(h0,"flexDirection","column"),q(h0,"gap",0),q(h0,"onMouseUp",()=>{if(p0(C0),J.onSelect(j0.id),J.activateOnClick)G1(j0.id)}),q(h0,"onMouseOver",(K0)=>o0({task:j0,x:K0.x,y:K0.y})),q(h0,"onMouseOut",()=>o0((K0)=>K0?.task.id===j0.id?null:K0)),D(k0,s0),D(k0,b0),q(k0,"flexDirection","row"),q(k0,"gap",0),q(s0,"wrapMode","none"),U(s0,R0),D(b0,x0),D(b0,k),q(b0,"flexDirection","row"),q(b0,"flexGrow",1),q(b0,"paddingRight",1),q(b0,"gap",0),q(x0,"wrapMode","none"),U(x0,()=>G0().projectGlyph),q(k,"wrapMode","none"),q(k,"flexGrow",1),U(k,()=>UW(G0().titleText,n())),D(X1,e0),D(X1,n0),q(X1,"flexDirection","row"),q(X1,"gap",0),q(e0,"wrapMode","none"),U(e0,R0),D(n0,v0),q(n0,"flexDirection","row"),q(n0,"flexGrow",1),q(n0,"paddingLeft",2),q(n0,"paddingRight",1),q(n0,"gap",1),q(v0,"wrapMode","none"),q(v0,"flexGrow",1),U(v0,()=>G0().subtitleText),U(n0,b(Y0,{get when(){return V1().added>0},get children(){var K0=W("text"),y0=T0("+");return D(K0,y0),q(K0,"wrapMode","none"),U(K0,()=>V1().added,null),y((b1)=>q(K0,"fg",z.success,b1)),K0}}),null),U(n0,b(Y0,{get when(){return V1().deleted>0},get children(){var K0=W("text"),y0=T0("\u2212");return D(K0,y0),q(K0,"wrapMode","none"),U(K0,()=>V1().deleted,null),y((b1)=>q(K0,"fg",z.error,b1)),K0}}),null),y((K0)=>{var y0=t0()?z.backgroundElement:void 0,b1=W0(),F1=X0(),A1=v1.BOLD,l=z.text,I=v1.BOLD,O0=W0(),e=z.textMuted,I0=v1.DIM;return y0!==K0.e&&(K0.e=q(h0,"backgroundColor",y0,K0.e)),b1!==K0.t&&(K0.t=q(s0,"fg",b1,K0.t)),F1!==K0.a&&(K0.a=q(x0,"fg",F1,K0.a)),A1!==K0.o&&(K0.o=q(x0,"attributes",A1,K0.o)),l!==K0.i&&(K0.i=q(k,"fg",l,K0.i)),I!==K0.n&&(K0.n=q(k,"attributes",I,K0.n)),O0!==K0.s&&(K0.s=q(e0,"fg",O0,K0.s)),e!==K0.h&&(K0.h=q(v0,"fg",e,K0.h)),I0!==K0.r&&(K0.r=q(v0,"attributes",I0,K0.r)),K0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0}),V0})()};return(()=>{var s=W("box"),j0=W("box"),C0=W("box"),t0=W("text"),z1=W("box"),E0=W("box"),V1=W("text"),D1=W("scrollbox"),f1=W("box");return D(s,j0),D(s,z1),D(s,D1),qz((G0)=>{Z0=G0},s),q(s,"flexGrow",1),q(s,"minHeight",0),q(s,"flexDirection","column"),q(s,"paddingTop",1),q(s,"paddingBottom",1),q(s,"paddingLeft",0),q(s,"paddingRight",0),D(j0,C0),q(j0,"flexDirection","row"),q(j0,"justifyContent","space-between"),q(j0,"gap",1),q(j0,"paddingBottom",1),q(j0,"paddingLeft",1),q(j0,"paddingRight",1),D(C0,t0),q(C0,"flexDirection","row"),q(C0,"gap",1),D(t0,T0("KOBE")),q(t0,"wrapMode","none"),U(C0,b(Y0,{get when(){return J.headerStatus?.()},children:(G0)=>(()=>{var X0=W("text");return q(X0,"wrapMode","none"),q(X0,"onMouseUp",()=>J.onHeaderStatusClick?.()),U(X0,()=>G0().label),y((W0)=>{var R0=G0().emphasize?z.warning:z.textMuted,V0=G0().emphasize?v1.BOLD:v1.DIM;return R0!==W0.e&&(W0.e=q(X0,"fg",R0,W0.e)),V0!==W0.t&&(W0.t=q(X0,"attributes",V0,W0.t)),W0},{e:void 0,t:void 0}),X0})()}),null),U(j0,b(Y0,{get when(){return J.onAddTask},get children(){var G0=W("text");return D(G0,T0("[+]")),q(G0,"wrapMode","none"),q(G0,"onMouseUp",()=>J.onAddTask?.()),y((X0)=>{var W0=z.primary,R0=v1.BOLD;return W0!==X0.e&&(X0.e=q(G0,"fg",W0,X0.e)),R0!==X0.t&&(X0.t=q(G0,"attributes",R0,X0.t)),X0},{e:void 0,t:void 0}),G0}}),null),U(s,b(Y0,{get when(){return X()},get children(){var G0=W("box"),X0=W("text"),W0=W("text"),R0=W("text");return D(G0,X0),D(G0,W0),D(G0,R0),q(G0,"flexDirection","row"),q(G0,"gap",0),q(G0,"paddingBottom",1),q(G0,"paddingLeft",1),D(X0,T0("/")),q(X0,"wrapMode","none"),q(W0,"wrapMode","none"),U(W0,H),D(R0,T0("\u2588")),q(R0,"wrapMode","none"),U(G0,b(Y0,{get when(){return H().length===0},get children(){var V0=W("text"),h0=T0(" ");return D(V0,h0),q(V0,"wrapMode","none"),U(V0,()=>F("tasks.search.placeholder"),null),y((k0)=>q(V0,"fg",z.textMuted,k0)),V0}}),null),U(G0,b(Y0,{get when(){return H().length>0},get children(){var V0=W("text"),h0=T0(" "),k0=T0("/");return D(V0,h0),D(V0,k0),q(V0,"wrapMode","none"),U(V0,()=>o().length,k0),U(V0,c,null),y((s0)=>q(V0,"fg",z.textMuted,s0)),V0}}),null),y((V0)=>{var{info:h0,text:k0,info:s0}=z,b0=v1.BLINK;return h0!==V0.e&&(V0.e=q(X0,"fg",h0,V0.e)),k0!==V0.t&&(V0.t=q(W0,"fg",k0,V0.t)),s0!==V0.a&&(V0.a=q(R0,"fg",s0,V0.a)),b0!==V0.o&&(V0.o=q(R0,"attributes",b0,V0.o)),V0},{e:void 0,t:void 0,a:void 0,o:void 0}),G0}}),z1),D(z1,E0),q(z1,"flexDirection","row"),q(z1,"justifyContent","space-between"),q(z1,"gap",1),q(z1,"paddingBottom",1),q(z1,"paddingLeft",1),q(z1,"paddingRight",1),D(E0,V1),q(E0,"flexDirection","row"),q(E0,"gap",2),U(E0,b(Z1,{each:TQ,children:(G0)=>{let X0=()=>Z()===G0.view;return(()=>{var W0=W("text");return q(W0,"wrapMode","none"),q(W0,"onMouseUp",()=>G(G0.view)),U(W0,()=>nu(G0.view)),y((R0)=>{var V0=X0()?z.primary:z.textMuted,h0=X0()?v1.BOLD:void 0;return V0!==R0.e&&(R0.e=q(W0,"fg",V0,R0.e)),h0!==R0.t&&(R0.t=q(W0,"attributes",h0,R0.t)),R0},{e:void 0,t:void 0}),W0})()}}),V1),D(V1,T0("[/]")),q(V1,"wrapMode","none"),U(z1,b(Y0,{get when(){return J.sortMode},get children(){var G0=W("text");return q(G0,"wrapMode","none"),q(G0,"onMouseUp",()=>J.onSortModeToggle?.()),U(G0,()=>F("tasks.sort")),y((X0)=>{var W0=z.textMuted,R0=v1.DIM;return W0!==X0.e&&(X0.e=q(G0,"fg",W0,X0.e)),R0!==X0.t&&(X0.t=q(G0,"attributes",R0,X0.t)),X0},{e:void 0,t:void 0}),G0}}),null),U(s,b(Y0,{get when(){return g0().length>0},get children(){var G0=W("box"),X0=W("box"),W0=W("text"),R0=W("text"),V0=W("scrollbox"),h0=W("box");return D(G0,X0),D(G0,V0),q(G0,"flexDirection","column"),q(G0,"flexShrink",0),D(X0,W0),D(X0,R0),q(X0,"flexDirection","row"),q(X0,"flexShrink",0),q(X0,"gap",1),q(X0,"paddingLeft",1),q(X0,"paddingRight",1),q(X0,"onMouseUp",()=>t()),q(W0,"wrapMode","none"),U(W0,()=>F("tasks.header.projects")),U(X0,b(Y0,{get when(){return T().length>1},get children(){var k0=W("text");return q(k0,"wrapMode","none"),U(k0,J0),y((s0)=>{var b0=i()?z.primary:z.textMuted,x0=i()?v1.BOLD:void 0;return b0!==s0.e&&(s0.e=q(k0,"fg",b0,s0.e)),x0!==s0.t&&(s0.t=q(k0,"attributes",x0,s0.t)),s0},{e:void 0,t:void 0}),k0}}),R0),q(R0,"wrapMode","none"),U(R0,()=>"\u2500".repeat(Math.max(2,x()-10-F("tasks.header.projects").length-(T().length>1?J0().length+1:0)-(T().length>1?z0().length+1:0)))),U(X0,b(Y0,{get when(){return T().length>1},get children(){var k0=W("text");return q(k0,"wrapMode","none"),U(k0,z0),y((s0)=>{var b0=z.textMuted,x0=v1.DIM;return b0!==s0.e&&(s0.e=q(k0,"fg",b0,s0.e)),x0!==s0.t&&(s0.t=q(k0,"attributes",x0,s0.t)),s0},{e:void 0,t:void 0}),k0}}),null),D(V0,h0),qz((k0)=>{h=k0},V0),q(V0,"flexShrink",0),q(V0,"flexGrow",0),q(V0,"minHeight",0),q(V0,"stickyScroll",!1),q(V0,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),q(h0,"flexShrink",0),q(h0,"gap",0),q(h0,"paddingRight",1),U(h0,b(Z1,{get each(){return g0()},children:(k0)=>b(k1,{row:k0})})),y((k0)=>{var s0=z.textMuted,b0=v1.BOLD,x0=z.border,k=F0();return s0!==k0.e&&(k0.e=q(W0,"fg",s0,k0.e)),b0!==k0.t&&(k0.t=q(W0,"attributes",b0,k0.t)),x0!==k0.a&&(k0.a=q(R0,"fg",x0,k0.a)),k!==k0.o&&(k0.o=q(V0,"maxHeight",k,k0.o)),k0},{e:void 0,t:void 0,a:void 0,o:void 0}),G0}}),D1),U(s,b(c0,{get label(){return F("tasks.header.tasks")},get suffix(){return N0(()=>M()==="default")()?void 0:M()},get topPad(){return g0().length>0}}),D1),D(D1,f1),qz((G0)=>{L0=G0},D1),q(D1,"flexGrow",1),q(D1,"minHeight",0),q(D1,"stickyScroll",!1),q(D1,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),q(f1,"flexShrink",0),q(f1,"gap",0),q(f1,"paddingRight",1),U(f1,b(Z1,{get each(){return m()},children:(G0)=>{let{task:X0,flatIndex:W0}=G0,R0=()=>W0===S0(),V0=()=>X0.id===J.selectedId(),h0=U0(()=>{let e0=J.chatRunState?.();if(!e0)return!1;let n0=`${X0.id}:`;for(let[v0,K0]of e0)if(K0==="running"&&v0.startsWith(n0))return!0;return!1}),k0=U0(()=>{let e0=iH(J.worktreeChanges?.(),X0.worktreePath);if(e0)return e0;if(O(),!X0.archived)MW(X0.worktreePath);return FW(X0.worktreePath)},void 0,{equals:$z}),s0=U0(()=>DW({task:X0,activity:J.engineState?.().get(X0.id),job:J.taskJobs?.().get(X0.id),live:h0(),spinnerFrame:0,subtitleBudget:Q0(),truncateBranch:V3,mainBranch:""})),b0=U0(()=>LW(s0(),P)),x0=()=>u0(b0().tone),k=()=>R0()?z.focusAccent:V0()?z.primary:void 0,X1=()=>R0()||V0()?"\u258C":" ";return(()=>{var e0=W("box"),n0=W("box"),v0=W("box"),K0=W("text"),y0=W("box"),b1=W("text"),F1=W("text"),A1=W("box"),l=W("text"),I=W("box"),O0=W("text");return D(e0,n0),q(e0,"flexDirection","column"),q(e0,"gap",0),q(e0,"paddingBottom",1),D(n0,v0),D(n0,A1),qz((e)=>{D0.set(W0,e),T1(()=>{if(D0.get(W0)===e)D0.delete(W0)})},n0),q(n0,"flexDirection","column"),q(n0,"gap",0),q(n0,"onMouseUp",()=>{if(p0(W0),J.onSelect(X0.id),J.activateOnClick)G1(X0.id)}),q(n0,"onMouseOver",(e)=>o0({task:X0,x:e.x,y:e.y})),q(n0,"onMouseOut",()=>o0((e)=>e?.task.id===X0.id?null:e)),D(v0,K0),D(v0,y0),q(v0,"flexDirection","row"),q(v0,"gap",0),q(K0,"wrapMode","none"),U(K0,X1),D(y0,b1),D(y0,F1),q(y0,"flexDirection","row"),q(y0,"flexGrow",1),q(y0,"paddingRight",1),q(y0,"gap",0),q(b1,"wrapMode","none"),U(b1,()=>b0().stateGlyph),q(F1,"wrapMode","none"),q(F1,"flexGrow",1),U(F1,()=>UW(b0().titleText,n())),U(y0,b(Y0,{get when(){return N0(()=>!!J.moveMode?.())()&&R0()},get children(){var e=W("text");return q(e,"wrapMode","none"),U(e,()=>F("tasks.moveChip")),y((I0)=>q(e,"fg",z.warning,I0)),e}}),null),D(A1,l),D(A1,I),q(A1,"flexDirection","row"),q(A1,"gap",0),q(l,"wrapMode","none"),U(l,X1),D(I,O0),q(I,"flexDirection","row"),q(I,"flexGrow",1),q(I,"paddingLeft",2),q(I,"paddingRight",1),q(I,"gap",1),q(O0,"wrapMode","none"),q(O0,"flexGrow",1),U(O0,()=>b0().subtitleText),U(I,b(Y0,{get when(){return X0.pinned===!0},get children(){var e=W("text");return D(e,T0("\u25B4")),q(e,"wrapMode","none"),y((I0)=>q(e,"fg",z.warning,I0)),e}}),null),U(I,b(Y0,{get when(){return H3(X0)},children:(e)=>(()=>{var I0=W("text");return q(I0,"wrapMode","none"),U(I0,()=>e().glyph),y((M1)=>q(I0,"fg",u0(e().tone),M1)),I0})()}),null),U(I,b(Y0,{get when(){return k0().added>0},get children(){var e=W("text"),I0=T0("+");return D(e,I0),q(e,"wrapMode","none"),U(e,()=>k0().added,null),y((M1)=>q(e,"fg",z.success,M1)),e}}),null),U(I,b(Y0,{get when(){return k0().deleted>0},get children(){var e=W("text"),I0=T0("\u2212");return D(e,I0),q(e,"wrapMode","none"),U(e,()=>k0().deleted,null),y((M1)=>q(e,"fg",z.error,M1)),e}}),null),y((e)=>{var I0=R0()?z.backgroundElement:void 0,M1=k(),UJ=x0(),GJ=v1.BOLD,j1=z.text,_J=V0()||R0()?v1.BOLD:void 0,fJ=k(),pJ=z.textMuted,bJ=v1.DIM;return I0!==e.e&&(e.e=q(n0,"backgroundColor",I0,e.e)),M1!==e.t&&(e.t=q(K0,"fg",M1,e.t)),UJ!==e.a&&(e.a=q(b1,"fg",UJ,e.a)),GJ!==e.o&&(e.o=q(b1,"attributes",GJ,e.o)),j1!==e.i&&(e.i=q(F1,"fg",j1,e.i)),_J!==e.n&&(e.n=q(F1,"attributes",_J,e.n)),fJ!==e.s&&(e.s=q(l,"fg",fJ,e.s)),pJ!==e.h&&(e.h=q(O0,"fg",pJ,e.h)),bJ!==e.r&&(e.r=q(O0,"attributes",bJ,e.r)),e},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0}),e0})()}}),null),U(f1,b(Y0,{get when(){return o().length===0},get children(){var G0=W("box"),X0=W("text");return D(G0,X0),q(G0,"paddingTop",1),q(G0,"paddingLeft",1),U(X0,(()=>{var W0=N0(()=>!!(X()&&H().trim().length>0));return()=>W0()?F("tasks.empty.noMatchSearch"):N0(()=>!!i())()?N0(()=>Z()==="active")()?F("tasks.empty.noActiveProject"):F("tasks.empty.noArchivedProject"):N0(()=>Z()==="active")()?F("tasks.empty.noActive"):F("tasks.empty.noArchived")})()),y((W0)=>q(X0,"fg",z.textMuted,W0)),G0}}),null),U(f1,b(Y0,{get when(){return N0(()=>!!(i()&&o().length>0&&!N()))()&&!(X()&&H().trim().length>0)},get children(){var G0=W("box"),X0=W("text");return D(G0,X0),q(G0,"paddingTop",1),q(G0,"paddingLeft",1),q(X0,"wrapMode","none"),U(X0,(()=>{var W0=N0(()=>Z()==="active");return()=>W0()?F("tasks.empty.noActiveProject"):F("tasks.empty.noArchivedProject")})()),y((W0)=>{var R0=z.textMuted,V0=v1.DIM;return R0!==W0.e&&(W0.e=q(X0,"fg",R0,W0.e)),V0!==W0.t&&(W0.t=q(X0,"attributes",V0,W0.t)),W0},{e:void 0,t:void 0}),G0}}),null),U(f1,b(Y0,{get when(){return N0(()=>Z()==="archived")()&&o().length>0},get children(){var G0=W("box"),X0=W("text");return D(G0,X0),q(G0,"paddingTop",1),q(G0,"paddingLeft",1),q(X0,"wrapMode","none"),U(X0,()=>F("tasks.archiveHint")),y((W0)=>{var R0=z.textMuted,V0=v1.DIM;return R0!==W0.e&&(W0.e=q(X0,"fg",R0,W0.e)),V0!==W0.t&&(W0.t=q(X0,"attributes",V0,W0.t)),W0},{e:void 0,t:void 0}),G0}}),null),U(s,b(Y0,{get when(){return J.zenActive?.()},get children(){var G0=W("box"),X0=W("text");return D(G0,X0),q(G0,"flexShrink",0),q(G0,"paddingLeft",1),q(G0,"paddingRight",1),q(G0,"paddingTop",1),D(X0,T0("\u262F ZEN")),q(X0,"wrapMode","none"),q(X0,"onMouseUp",()=>J.onZenClick?.()),y((W0)=>{var R0=z.accent,V0=v1.BOLD;return R0!==W0.e&&(W0.e=q(X0,"fg",R0,W0.e)),V0!==W0.t&&(W0.t=q(X0,"attributes",V0,W0.t)),W0},{e:void 0,t:void 0}),G0}}),null),U(s,b(Y0,{get when(){return M0()},children:(G0)=>{let X0=U0(()=>{let b0=G0().task,x0=[];if(x0.push({text:b0.kind==="main"?xz(b0.repo):b0.title,bold:!0}),b0.branch.length>0)x0.push({text:`\u2387 ${b0.branch}`});if(b0.worktreePath.length>0)x0.push({text:b0.worktreePath,dim:!0});return x0}),W0=72,R0=U0(()=>Math.min(68,Math.max(...X0().map((b0)=>$u(b0.text))))),V0=U0(()=>R0()+4),h0=U0(()=>X0().length+2),k0=U0(()=>Math.max(0,Math.min(G0().x+2,H0().width-V0()-1))),s0=U0(()=>Math.max(0,Math.min(G0().y+1,H0().height-h0()-1)));return(()=>{var b0=W("box");return q(b0,"position","absolute"),q(b0,"zIndex",2600),q(b0,"flexDirection","column"),q(b0,"border",!0),q(b0,"paddingLeft",1),q(b0,"paddingRight",1),U(b0,b(Z1,{get each(){return X0()},children:(x0)=>(()=>{var k=W("text");return q(k,"wrapMode","none"),U(k,(()=>{var X1=N0(()=>!!x0.dim);return()=>X1()?au(x0.text,R0()):KW(x0.text,R0())})()),y((X1)=>{var e0=x0.dim?z.textMuted:z.text,n0=x0.bold?v1.BOLD:x0.dim?v1.DIM:void 0;return e0!==X1.e&&(X1.e=q(k,"fg",e0,X1.e)),n0!==X1.t&&(X1.t=q(k,"attributes",n0,X1.t)),X1},{e:void 0,t:void 0}),k})()})),y((x0)=>{var k=k0(),X1=s0(),e0=V0(),n0=z.focusAccent,v0=z.backgroundElement;return k!==x0.e&&(x0.e=q(b0,"left",k,x0.e)),X1!==x0.t&&(x0.t=q(b0,"top",X1,x0.t)),e0!==x0.a&&(x0.a=q(b0,"width",e0,x0.a)),n0!==x0.o&&(x0.o=q(b0,"borderColor",n0,x0.o)),v0!==x0.i&&(x0.i=q(b0,"backgroundColor",v0,x0.i)),x0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),b0})()}}),null),y((G0)=>{var X0=Y()?z.focusAccent:z.textMuted,W0=v1.BOLD,R0=z.textMuted,V0=v1.DIM;return X0!==G0.e&&(G0.e=q(t0,"fg",X0,G0.e)),W0!==G0.t&&(G0.t=q(t0,"attributes",W0,G0.t)),R0!==G0.a&&(G0.a=q(V1,"fg",R0,G0.a)),V0!==G0.o&&(G0.o=q(V1,"attributes",V0,G0.o)),G0},{e:void 0,t:void 0,a:void 0,o:void 0}),s})()}var W3=32,TQ,iu=2000,lu=16,au;var U3=C(()=>{w();w();w();w();w();w();w();w();w();ZJ();w();W1();h1();h1();Y3();xf();G3();X3();f3();xG();B3();TQ=[{view:"active"},{view:"archived"}];au=hf});var O3={};q1(O3,{startTasksPane:()=>su,legendRowCap:()=>M3,legendCap:()=>F3});import{existsSync as D3}from"fs";import{stat as _u}from"fs/promises";import{TextAttributes as mf}from"@opentui/core";function L3(J){let z=J instanceof Error?J.message:String(J);if(/not a git repository/i.test(z))return F("tasks.toast.worktreeErrorNotGit");return F("tasks.toast.worktreeErrorGeneric",{message:z})}function ru(J){let{theme:z}=w0(),Y=n1(),Z=oG(),G=Cf(),[X,Q]=p(J.tasks().some((h)=>h.id===J.initialTaskId)?J.initialTaskId:J.tasks()[0]?.id??null),H=0;function f(h){G.notify({kind:"error",taskId:X()??"",tabId:"",title:h})}function j(h){G.notify({kind:"done",taskId:X()??"",tabId:"",title:h})}let[V,B]=p(!1),[K,L]=p(Z.get("activeSortMode")==="recent"?"recent":"default"),A=Z.get("tasksPane.projectFilter"),[O,R]=p(typeof A==="string"&&A.length>0?A:null),u=(h)=>{R(h),Z.set("tasksPane.projectFilter",h)},[P,S]=p(null),[g,M]=p(!1);{let h=process.env.TMUX_PANE;if(h){let L0=()=>{a0(["show-options","-wqv","-t",h,SY]).then(({code:D0,stdout:P0})=>{M(D0===0&&P0.trim().length>0)})};L0();let Z0=setInterval(L0,1000);T1(()=>clearInterval(Z0))}}let T=az();_0(()=>{if(J.initialTaskId)return;let h=J.orch?.activeTaskSignal()();if(!h)return;Q(h)}),_0(BJ(()=>J.orch?.uiPrefsSignal()(),(h)=>{if(h&&h.sortMode!==t1(K))L(h.sortMode);if(h&&h.projectFilter!==t1(O))R(h.projectFilter)})),_0(()=>{let h=J.orch?.updateSignal()();if(h)S(h)});let d={orch:J.orch,tasks:()=>J.tasks(),confirm:async(h)=>await uz.show(Y,h.title,h.body,h.cancelLabel,h.confirmLabel)===!0,promptText:(h,L0)=>rz.show(Y,h,L0),logger:console,logPrefix:"[kobe tasks]",notifyError:f,notifyInfo:j,reload:()=>J.reload(),switchBeforeKill:!0,updateActiveTask:!0,onTaskDeleted:(h,L0)=>{if(X()!==h)return;let Z0=J.tasks();Q(L0?.id??(Z0.find((D0)=>!D0.archived)??Z0[0])?.id??null)},promptNewTask:(h,L0,Z0)=>Ff.show(Y,h,L0,Z0),cursorRepo:()=>{let h=J.tasks();return(h.find((L0)=>L0.id===X())??h[0])?.repo},lastVendor:()=>PJ(S1("lastSelectedVendor"),hJ()),rememberVendor:(h)=>e1("lastSelectedVendor",h),openCreateSurface:async(h)=>{if(TZ(Z.get(WY,yZ))!=="chattab")return!1;let Z0=await wJ();if(!Z0)return!1;return await $X(Z0,h),!0},selectTask:(h)=>Q(h),enterTask:(h)=>F0(h)};async function i(){await _M(d)}async function J0(){if(TZ(Z.get(WY,yZ))==="chattab"){let Z0=await wJ();if(Z0){await iX(Z0);return}}if(!(await nZ.show(Y,Z,J.orch??void 0)).visualPrefsChanged)return;if(!Z.flush())return;try{let Z0=await wJ();if(Z0)await RG(Z0)}catch(Z0){console.error("[kobe tasks] failed to refresh workspace panes:",Z0)}}async function E(){let h=await wJ();if(h){await lX(h);return}tG.show(Y)}async function z0(){if(!P()?.hasUpdate){j(F("tasks.toast.alreadyLatest",{version:J1}));return}let L0=await wJ();if(!L0)return;await aX(L0)}async function q0(h){await nM(d,h)}async function o(h){await iM(d,h)}async function B0(h){await lM(d,h)}async function g0(h){await $M(d,h)}async function m(h){await aM(d,h)}async function r(h){let Z0=J.tasks().find((P0)=>P0.id===h)?.worktreePath;if(!Z0||!D3(Z0)){if(!J.orch){console.error("[kobe tasks] no daemon; cannot materialise worktree"),f(F("tasks.toast.noDaemonWorktree"));return}try{Z0=await J.orch.ensureWorktree(h)}catch(P0){console.error("[kobe tasks] task.ensureWorktree failed:",P0),f(L3(P0));return}await J.reload()}if(!Z0||!D3(Z0))return;let D0=rM();if(!D0){console.error("[kobe tasks] no editor/opener found; set KOBE_OPEN_EDITOR"),f(F("tasks.toast.noEditor"));return}if(!oM(Z0,D0))console.error(`[kobe tasks] failed to open worktree with ${D0.label}`),f(F("tasks.toast.openWorktreeFailed",{label:D0.label}))}async function c(){if(!process.env.TMUX_PANE)return;let h=await wJ();if(!h)return;let L0=await BG(h);if(!L0)return;await d0(["select-pane","-t",L0])}async function N(h,L0){let Z0=J.tasks().find((D0)=>D0.id===h);if(!Z0||Z0.kind==="main"||!J.orch)return;try{await J.orch.moveTask(h,L0)}catch(D0){console.error("[kobe tasks] task.move failed:",D0),f(F("tasks.toast.moveTaskFailed",{message:D0 instanceof Error?D0.message:String(D0)}));return}Q(h),await J.reload()}let[t,x]=p(Z.get("tasksPane.keysCollapsed",!1)===!0),n=(h)=>{x(h),Z.set("tasksPane.keysCollapsed",h)};_0(BJ(()=>J.orch?.uiPrefsSignal()(),(h)=>{if(h&&h.keysCollapsed!==t1(t))x(h.keysCollapsed)}));let[Q0,H0]=p(!1);U1(()=>({enabled:Y.stack.length===0&&!Q0(),bindings:rY({"help.open":()=>void E(),"task.new":()=>void i(),"settings.open.sidebar":()=>void J0(),"tasks.update":()=>void z0(),"tasks.openWorktree":()=>{let h=X();if(h)r(h)},"tasks.renameBranch":()=>{let h=X();if(h)g0(h)},"tasks.cycleEngine":()=>{let h=X();if(h)m(h)},"tasks.toggleKeys":()=>n(!t()),"tasks.focusEngine":()=>void c().catch((h)=>console.error("[kobe tasks] focus engine pane failed:",h))})}));async function F0(h){let L0=J.tasks().find((D0)=>D0.id===h);if(!L0)return;let Z0=++H;try{await t8(J.orch,L0,L0.repo,L0.vendor,{includeInitPrompt:!0,heal:!0,captureFrom:!0,reload:()=>J.reload(),isCurrent:()=>H===Z0})}catch(D0){if(D0 instanceof sY)if(D0.phase==="no-daemon")f(F("tasks.toast.noDaemonOpen"));else if(D0.phase==="worktree")f(L3(D0.cause??D0));else f(F("tasks.toast.sessionStartFailed"));else console.error("[kobe tasks] switchTo failed:",D0)}}let M0=U0(()=>{let h=P();if(h?.hasUpdate)return{label:`v${h.latest} \u2191`,emphasize:!0};return{label:`v${J1}`,emphasize:!1}}),o0=()=>J.orch?.daemonStaleSignal()()??!1,S0=()=>J.orch?.daemonVersionSignal()()??null,p0=U0(()=>J.tasks().find((h)=>h.id===X())?.kind==="main");return(()=>{var h=W("box"),L0=W("box");return D(h,L0),q(h,"flexDirection","column"),q(h,"flexGrow",1),U(h,b(mM,{stale:o0,daemonVersion:S0,clientVersion:J1,width:()=>T().width}),L0),q(L0,"flexGrow",1),q(L0,"flexShrink",1),U(L0,b(K3,{get tasks(){return J.tasks},selectedId:X,get onSelect(){return J.initialTaskId?()=>{}:Q},get pinnedSelection(){return!!J.initialTaskId},onActivate:(Z0)=>void F0(Z0),activateOnClick:!0,headerStatus:M0,onHeaderStatusClick:()=>void z0(),onAddTask:()=>void i(),zenActive:g,onZenClick:()=>{(async()=>{let Z0=await wJ();if(Z0)await CZ(Z0,"zen-toggle")})()},width:()=>T().width,get engineState(){return N0(()=>!!J.orch)()?J.orch.engineStateSignal():void 0},get taskJobs(){return N0(()=>!!J.orch)()?J.orch.taskJobsSignal():void 0},get worktreeChanges(){return J.orch?()=>{let Z0=J.orch;if(!Z0||Z0.connectionStateSignal()()!=="online")return null;return Z0.worktreeChangesSignal()()}:void 0},onRenameRequest:(Z0)=>void B0(Z0),onDeleteRequest:(Z0)=>void o(Z0),onArchiveRequest:(Z0)=>void q0(Z0),onLocalMergeRequest:(Z0)=>{let D0=J.tasks().find((P0)=>P0.id===Z0);if(!D0||D0.kind==="main")return;Q(Z0),B((P0)=>!P0)},moveMode:V,onMoveRequest:(Z0,D0)=>void N(Z0,D0),onMoveModeExit:()=>B(!1),sortMode:K,projectFilter:O,onProjectFilterChange:u,onSortModeToggle:()=>{let Z0=K()==="default"?"recent":"default";L(Z0),Z.set("activeSortMode",Z0)},focused:()=>Y.stack.length===0,onSearchActiveChange:H0})),U(h,b(ou,{moveMode:V,selectedIsMain:p0,collapsed:t,onToggleCollapsed:()=>n(!t())}),null),y((Z0)=>q(h,"backgroundColor",z.background,Z0)),h})()}function F3(J){let z=a8(J);if(!z)return null;let Y=z.hint?.keys??z.keys[0];return Y&&Y.length>0?Y:null}function M3(J){let z=J.map(F3).filter((Y)=>Y!==null);return z.length>0?z.join("/"):null}function ou(J){let{theme:z}=w0(),[Y,Z]=p("Prefix");QJ(()=>{a0(["show-options","-g","prefix"]).then(({code:K,stdout:L})=>{if(K!==0)return;let A=Ef(L);if(A)Z(A)})});let G=()=>{$8();let K=_q(),L=K.binds,A=[],O=K.focus.filter((u)=>u!==null).map((u)=>u.chord);if(O.length===4&&O.every((u,P)=>u===uY[P]))A.push({k:"ctrl+hjkl",label:F("tasks.hints.movePanes")});else if(O.length>0)A.push({k:O[0],label:F("tasks.hints.movePanes")});let R=(u,P)=>{let S=P.map((g)=>L[g]?.chord).filter((g)=>!!g);if(S.length>0)A.push({k:`prefix ${S.join("/")}`,label:u})};if(L["tmux.detach"])A.push({k:L["tmux.detach"].chord,label:F("tasks.hints.detach")});return R(F("tasks.hints.splits"),["tmux.layout.workspaceSplit","tmux.layout.workspaceClose","tmux.layout.workspaceReset"]),R(F("tasks.hints.panes"),["tmux.layout.tasksToggle","tmux.layout.opsToggle","tmux.layout.terminalToggle"]),A},X=()=>{$8();let K=[{ids:["help.open"],label:F("tasks.hints.fullHelp")},{ids:["task.new"],label:F("tasks.hints.newTask")},{ids:["settings.open.sidebar"],label:F("tasks.hints.settings")},{ids:["sidebar.select"],label:F("tasks.hints.open")},{ids:["tasks.focusEngine"],label:F("tasks.hints.focusEngine")},{ids:["tasks.openWorktree"],label:F("tasks.hints.openWorktree")},{ids:["sidebar.delete"],label:F("tasks.hints.delete")},{ids:["sidebar.view"],label:F("tasks.hints.views")},{ids:["sidebar.projectFilter"],label:F("tasks.hints.project")}],L=[];for(let A of K){let O=M3(A.ids);if(O===null)continue;L.push({k:O,label:A.label,dimWhenMain:A.dimWhenMain})}return L.push(...G()),L},Q=()=>[{k:"j/k",label:F("tasks.hints.reorder")},{k:"enter/esc",label:F("tasks.hints.done")}],H=()=>J.moveMode?.()?Q():X(),f=18,j=()=>Math.min(f,Math.max(...H().map((K)=>K.label.length))),V=(K)=>zX(K,j()),B=()=>(J.collapsed?.()??!1)&&!(J.moveMode?.()??!1);return(()=>{var K=W("box"),L=W("text");return D(K,L),q(K,"flexShrink",0),q(K,"flexDirection","column"),q(K,"paddingLeft",1),q(K,"paddingRight",1),q(K,"paddingTop",1),q(K,"paddingBottom",1),q(K,"gap",0),q(L,"wrapMode","none"),q(L,"onMouseUp",()=>J.onToggleCollapsed?.()),U(L,(()=>{var A=N0(()=>!!B());return()=>A()?F("tasks.hints.headerFolded"):F("tasks.hints.headerUnfolded")})()),U(K,b(Y0,{get when(){return!B()},get children(){return b(Z1,{get each(){return H()},children:(A)=>{let O=()=>A.dimWhenMain===!0&&(J.selectedIsMain?.()??!1);return(()=>{var R=W("box"),u=W("box"),P=W("text"),S=T0("["),g=T0("]"),M=W("box"),T=W("text");return D(R,u),D(R,M),q(R,"flexDirection","row"),q(R,"gap",1),q(R,"justifyContent","space-between"),D(u,P),q(u,"width",10),q(u,"flexShrink",0),D(P,S),D(P,g),q(P,"wrapMode","none"),U(P,()=>sG(A.k,Y()),g),D(M,T),q(M,"flexShrink",0),q(T,"wrapMode","none"),U(T,()=>V(A.label)),y((d)=>{var i=O()?z.textMuted:z.accent,J0=O()?mf.DIM:mf.BOLD,E=j(),z0=z.textMuted,q0=O()?mf.DIM:void 0;return i!==d.e&&(d.e=q(P,"fg",i,d.e)),J0!==d.t&&(d.t=q(P,"attributes",J0,d.t)),E!==d.a&&(d.a=q(M,"width",E,d.a)),z0!==d.o&&(d.o=q(T,"fg",z0,d.o)),q0!==d.i&&(d.i=q(T,"attributes",q0,d.i)),d},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),R})()}})}}),null),y((A)=>{var O=z.textMuted,R=mf.DIM;return O!==A.e&&(A.e=q(L,"fg",O,A.e)),R!==A.t&&(A.t=q(L,"attributes",R,A.t)),A},{e:void 0,t:void 0}),K})()}async function su(J={}){await KJ({logContext:"tasks",providers:{notifications:!0},setup:()=>tu(J)})}async function tu(J){let z=new PG({homeDir:rJ()});await z.load();let[Y,Z]=p(z.list()),G=null;try{let j=await Qz();if(j){let V=new AJ(j);await V.init(),G=V}else ZY("tasks-boot","no daemon running \u2014 polling tasks.json (a gui owns daemon lifecycle)")}catch(j){JJ("tasks-boot",j),ZY("tasks-boot","daemon subscribe failed \u2014 polling tasks.json")}let X=()=>G&&G.connectionStateSignal()()==="online"?G.tasksSignal()():Y(),Q=async()=>{await z.load(),Z(z.list())},H="",f=setInterval(()=>{if(G&&G.connectionStateSignal()()==="online")return;(async()=>{let j="missing";try{let V=await _u(z.filePath);j=`${V.mtimeMs}:${V.size}`}catch{}if(j===H)return;H=j,await Q()})().catch(()=>{})},pu);return{root:()=>[b(ru,{tasks:X,get initialTaskId(){return J.initialTaskId},orch:G,reload:Q}),b(hM,{})],onDestroy:()=>{if(f)clearInterval(f);G?.dispose()}}}var pu=1500;var A3=C(()=>{w();w();w();w();w();w();w();w();c1();Lz();ZJ();w();GZ();CJ();W1();_Y();p1();qQ();C1();pq();_1();NJ();ZW();pG();GW();BW();vM();cM();rG();SQ();kf();h1();YW();MY();kJ();pM();If();sM();U3();PY();zJ();$J();wf()});var R3={};q1(R3,{startSettingsHost:()=>JE});function eu(J){let z=oG(),Y=n1(),{theme:Z}=w0(),G=!1,X=!1;async function Q(){if(X)return;X=!0;try{if(z.flush()&&G){let f=await wJ();if(f)await RG(f)}}catch(H){console.error("[kobe settings] failed to refresh workspace panes:",H)}finally{process.exit(0)}}return U1(()=>({enabled:Y.stack.length===0,bindings:[{key:"escape",cmd:Q},{key:"q",cmd:Q},{key:"ctrl+c",cmd:Q}]})),(()=>{var H=W("scrollbox");return q(H,"flexGrow",1),q(H,"paddingTop",1),q(H,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),U(H,b(nZ,{kv:z,get orchestrator(){return J.orchestrator??void 0},standalone:!0,onVisualPrefsChange:()=>{G=!0},onClose:Q})),y((f)=>q(H,"backgroundColor",Z.background,f)),H})()}async function JE(){await KJ({setup:async()=>{let J=null;try{let z=await Qz();if(z){let Y=new AJ(z);await Y.init(),J=Y}else console.error("[kobe settings] no daemon running; Restart backend disabled")}catch(z){console.error("[kobe settings] daemon unavailable; Restart backend disabled:",z)}return{root:()=>b(eu,{orchestrator:J}),onDestroy:()=>{J?.dispose()}}}})}var g3=C(()=>{w();w();w();w();w();w();CJ();_Y();BW();SQ();h1();MY();kJ();zJ();$J()});var N3={};q1(N3,{startHelpHost:()=>YE});function zE(){let J=n1(),{theme:z}=w0();function Y(){process.exit(0)}return U1(()=>({enabled:J.stack.length===0,bindings:[{key:"escape",cmd:Y},{key:"q",cmd:Y},{key:"f1",cmd:Y},{key:"ctrl+c",cmd:Y}]})),(()=>{var Z=W("box");return q(Z,"flexGrow",1),q(Z,"paddingTop",1),U(Z,b(tG,{onClose:Y})),y((G)=>q(Z,"backgroundColor",z.background,G)),Z})()}async function YE(){await KJ({providers:{kv:!1,focus:!1},setup:()=>({root:()=>b(zE,{})})})}var C3=C(()=>{w();w();w();w();w();ZW();h1();MY();kJ();$J()});var k3={};q1(k3,{startUpdateHost:()=>fE});import{spawn as ZE,spawnSync as GE}from"child_process";import{TextAttributes as ZX}from"@opentui/core";function XE(J){if(!J)return!1;let z=process.platform,[Y,Z]=z==="darwin"?["open",[J]]:z==="win32"?["cmd",["/c","start","",J]]:["xdg-open",[J]];try{return ZE(Y,Z,{stdio:"ignore",detached:!0}).unref(),!0}catch{return!1}}function QE(J){return J.replace(/\r\n/g,`
244
+ `;var GL=C(()=>{kJ()});var qL={};H1(qL,{runSkillSubcommand:()=>YT});function K8(){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: ${Gj}.`].join(`
245
+ `)}function QL(J){let z=Gj;for(let Z=0;Z<J.length;Z++){let Y=J[Z];if(Y==="--agent"){let X=J[Z+1];if(!X||X.startsWith("--"))process.stderr.write(`kobe skill: --agent requires a value
246
+ `),process.exit(2);z=X,Z++}else if(Y.startsWith("--agent="))z=Y.slice(8);else process.stderr.write(`kobe skill: unknown flag "${Y}"
247
+
248
+ ${K8()}
249
+ `),process.exit(2)}return z}async function YT(J){let[z,...Z]=J;if(!z||z==="--help"||z==="-h"||z==="help"){if(process.stdout.write(`${K8()}
250
+ `),!z)process.exitCode=2;return}if(!ZT.includes(z))process.stderr.write(`kobe skill: unknown verb "${z}"
251
+
252
+ ${K8()}
253
+ `),process.exit(2);if(z==="status"){let H=VQ(),[j,B]=W8(),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: ${j}`,` ${B}`,H.installed&&!H.stale?"":" \u2192 run `kobe skill install` to install / refresh",""].join(`
254
+ `));return}if(z==="command"){process.stdout.write(`${Qj({agent:QL(Z)})}
255
+ `);return}let Y=QL(Z),X=f8({agent:Y});process.stdout.write(`kobe skill: running \`npx ${X.join(" ")}\`
256
+ `);let q=await Bun.spawn(["npx",...X],{stdin:"inherit",stdout:"inherit",stderr:"inherit"}).exited;if(q!==0)process.stderr.write(`
257
+ kobe skill install failed (npx exited ${q}). Is \`npx\` on PATH and are you online?
258
+ You can run it yourself: ${Qj({agent:Y})}
259
+ `),process.exit(q||1);process.stdout.write(`kobe skill: installed.
260
+ `)}var ZT;var HL=C(()=>{qj();ZT=["install","status","command"]});var L8={};H1(L8,{runHookSubcommand:()=>BT,readTextWithTimeout:()=>fL,parseWorktreeRemovePath:()=>KL,parseWorktreeAddPath:()=>UL,ensureGlobalKobeHooks:()=>VT});import{homedir as XT}from"os";import{join as BL,resolve as D8}from"path";async function fL(J,z=GT){let Z;try{return await Promise.race([J(),new Promise((Y)=>{Z=setTimeout(()=>Y(""),z)})])}finally{if(Z!==void 0)clearTimeout(Z)}}async function WL(){try{let J=await fL(()=>Bun.stdin.text());if(!J.trim())return{};let z=JSON.parse(J);return z&&typeof z==="object"&&!Array.isArray(z)?z:{}}catch{return{}}}function QT(J,z){for(let Z=0;Z<J.length;Z++){if(J[Z]===z)return J[Z+1];if(J[Z].startsWith(`${z}=`))return J[Z].slice(z.length+1)}return}function HT(J){return!!J&&typeof J==="object"&&!Array.isArray(J)}function VL(J){let z=[],Z=/"([^"]*)"|'([^']*)'|(\S+)/g,Y;while((Y=Z.exec(J))!==null)z.push(Y[1]??Y[2]??Y[3]??"");return z}function UL(J){let z=VL(J),Z=new Set(["-b","-B","--reason"]);for(let Y=0;Y+1<z.length;Y++){if(z[Y]!=="worktree"||z[Y+1]!=="add")continue;let X=Y+2;while(X<z.length){let G=z[X];if(G==="&&"||G==="||"||G===";"||G==="|"||G===">"||G===">>")break;if(G.startsWith("-")){X+=Z.has(G)?2:1;continue}return G}}return}function KL(J){let z=VL(J);for(let Z=0;Z+1<z.length;Z++){if(z[Z]!=="worktree"||z[Z+1]!=="remove")continue;let Y=Z+2;while(Y<z.length){let X=z[Y];if(X==="&&"||X==="||"||X===";"||X==="|"||X===">"||X===">>")break;if(X.startsWith("-")){Y+=1;continue}return X}}return}async function jT(){let J=await WL(),z=HT(J.tool_input)?J.tool_input:{},Z=typeof z.command==="string"?z.command:"";if(!Z.includes("worktree"))return;let Y=typeof J.cwd==="string"&&J.cwd?J.cwd:process.cwd(),X=UL(Z),G=X?void 0:KL(Z);if(!X&&!G)return;let q=await qz();if(!q)return;try{if(X)await q.request("worktree.reconcile",{cwd:Y,worktreePath:D8(Y,X)});else if(G)await q.request("worktree.archiveRemoved",{worktreePath:D8(Y,G)})}finally{q.close()}}async function BT(J){let[z,...Z]=J;if(z==="setup"){await UT(Z);return}if(z===qT){try{await jT()}catch{}return}try{if(!z||!gq(z))return;let Y=await WL(),X=QT(Z,"--task-id"),G=typeof Y.cwd==="string"&&Y.cwd?Y.cwd:process.cwd(),q;for(let j of DL())if(q=j.activityDetailFromPayload(z,Y),q)break;let H=await qz();if(!H)return;try{await H.request("engine.reportEvent",{...X?{taskId:X}:{cwd:G},kind:z,...q?{detail:q}:{}})}finally{H.close()}}catch{}}function fT(){return o1.map((J)=>_9(J)).filter((J)=>J.supportsWorktreeSync())}function DL(){return o1.map((J)=>_9(J)).filter((J)=>J.supportsHooks())}function LL(){return BL(XT(),".claude","settings.json")}function WT(J){if(!J||J==="off")return;if(J==="global")return LL();if(J.startsWith("repo:"))return BL(D8(J.slice(5)),".claude","settings.json");return J}async function VT(){try{for(let J of DL()){let z=J.globalSettingsPath();if(!z)continue;await J.installActivityHooks(z),await J.installWorktreeWatchHook(z)}await ML()}catch{}}async function ML(){let J=fT();if(J.length===0)return;let z=x1(jL),Z=new Set([LL()]),Y=WT(z);if(Y)Z.add(Y);for(let X of J)for(let G of Z)await X.removeWorktreeSyncHook(G);if(z!=="off")GJ(jL,"off")}async function UT(J){await ML(),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(`
261
+ `))}var GT=500,qT="worktree-created",jL="externalWorktreeSync";var M8=C(()=>{kJ();p9();Nq();S1();s1()});function OL(J){var z;if(J>=55296&&J<=57343||J>1114111)return 65533;return(z=KT.get(J))!==null&&z!==void 0?z:J}var F8,KT,FL;var AL=C(()=>{KT=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]]),FL=(F8=String.fromCodePoint)!==null&&F8!==void 0?F8:(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 RL(J){let z=typeof atob==="function"?atob(J):typeof Buffer.from==="function"?Buffer.from(J,"base64").toString("binary"):new Buffer(J,"base64").toString("binary"),Z=z.length&-2,Y=new Uint16Array(Z/2);for(let X=0,G=0;X<Z;X+=2){let q=z.charCodeAt(X),H=z.charCodeAt(X+1);Y[G++]=q|H<<8}return Y}var gL;var NL=C(()=>{gL=RL("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 gJ;var CL=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"})(gJ||(gJ={}))});function O8(J){return J>=$1.ZERO&&J<=$1.NINE}function DT(J){return J>=$1.UPPER_A&&J<=$1.UPPER_F||J>=$1.LOWER_A&&J<=$1.LOWER_F}function LT(J){return J>=$1.UPPER_A&&J<=$1.UPPER_Z||J>=$1.LOWER_A&&J<=$1.LOWER_Z||O8(J)}function MT(J){return J===$1.EQUALS||LT(J)}class A8{constructor(J,z,Z){this.decodeTree=J,this.emitCodePoint=z,this.errors=Z,this.state=fJ.EntityStart,this.consumed=1,this.result=0,this.treeIndex=0,this.excess=1,this.decodeMode=LZ.Strict,this.runConsumed=0}startEntity(J){this.decodeMode=J,this.state=fJ.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1,this.runConsumed=0}write(J,z){switch(this.state){case fJ.EntityStart:{if(J.charCodeAt(z)===$1.NUM)return this.state=fJ.NumericStart,this.consumed+=1,this.stateNumericStart(J,z+1);return this.state=fJ.NamedEntity,this.stateNamedEntity(J,z)}case fJ.NumericStart:return this.stateNumericStart(J,z);case fJ.NumericDecimal:return this.stateNumericDecimal(J,z);case fJ.NumericHex:return this.stateNumericHex(J,z);case fJ.NamedEntity:return this.stateNamedEntity(J,z)}}stateNumericStart(J,z){if(z>=J.length)return-1;if((J.charCodeAt(z)|bL)===$1.LOWER_X)return this.state=fJ.NumericHex,this.consumed+=1,this.stateNumericHex(J,z+1);return this.state=fJ.NumericDecimal,this.stateNumericDecimal(J,z)}stateNumericHex(J,z){while(z<J.length){let Z=J.charCodeAt(z);if(O8(Z)||DT(Z)){let Y=Z<=$1.NINE?Z-$1.ZERO:(Z|bL)-$1.LOWER_A+10;this.result=this.result*16+Y,this.consumed++,z++}else return this.emitNumericEntity(Z,3)}return-1}stateNumericDecimal(J,z){while(z<J.length){let Z=J.charCodeAt(z);if(O8(Z))this.result=this.result*10+(Z-$1.ZERO),this.consumed++,z++;else return this.emitNumericEntity(Z,2)}return-1}emitNumericEntity(J,z){var Z;if(this.consumed<=z)return(Z=this.errors)===null||Z===void 0||Z.absenceOfDigitsInNumericCharacterReference(this.consumed),0;if(J===$1.SEMI)this.consumed+=1;else if(this.decodeMode===LZ.Strict)return 0;if(this.emitCodePoint(OL(this.result),this.consumed),this.errors){if(J!==$1.SEMI)this.errors.missingSemicolonAfterCharacterReference();this.errors.validateNumericCharacterReference(this.result)}return this.consumed}stateNamedEntity(J,z){let{decodeTree:Z}=this,Y=Z[this.treeIndex],X=(Y&gJ.VALUE_LENGTH)>>14;while(z<J.length){if(X===0&&(Y&gJ.FLAG13)!==0){let q=(Y&gJ.BRANCH_LENGTH)>>7;if(this.runConsumed===0){let H=Y&gJ.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,j=Z[this.treeIndex+1+(H>>1)],B=H%2===0?j&255:j>>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),Y=Z[this.treeIndex],X=(Y&gJ.VALUE_LENGTH)>>14}if(z>=J.length)break;let G=J.charCodeAt(z);if(G===$1.SEMI&&X!==0&&(Y&gJ.FLAG13)!==0)return this.emitNamedEntityData(this.treeIndex,X,this.consumed+this.excess);if(this.treeIndex=OT(Z,Y,this.treeIndex+Math.max(1,X),G),this.treeIndex<0)return this.result===0||this.decodeMode===LZ.Attribute&&(X===0||MT(G))?0:this.emitNotTerminatedNamedEntity();if(Y=Z[this.treeIndex],X=(Y&gJ.VALUE_LENGTH)>>14,X!==0){if(G===$1.SEMI)return this.emitNamedEntityData(this.treeIndex,X,this.consumed+this.excess);if(this.decodeMode!==LZ.Strict&&(Y&gJ.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:Z}=this,Y=(Z[z]&gJ.VALUE_LENGTH)>>14;return this.emitNamedEntityData(z,Y,this.consumed),(J=this.errors)===null||J===void 0||J.missingSemicolonAfterCharacterReference(),this.consumed}emitNamedEntityData(J,z,Z){let{decodeTree:Y}=this;if(this.emitCodePoint(z===1?Y[J]&~(gJ.VALUE_LENGTH|gJ.FLAG13):Y[J+1],Z),z===3)this.emitCodePoint(Y[J+2],Z);return Z}end(){var J;switch(this.state){case fJ.NamedEntity:return this.result!==0&&(this.decodeMode!==LZ.Attribute||this.result===this.treeIndex)?this.emitNotTerminatedNamedEntity():0;case fJ.NumericDecimal:return this.emitNumericEntity(0,2);case fJ.NumericHex:return this.emitNumericEntity(0,3);case fJ.NumericStart:return(J=this.errors)===null||J===void 0||J.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case fJ.EntityStart:return 0}}}function FT(J){let z="",Z=new A8(J,(Y)=>z+=FL(Y));return function(X,G){let q=0,H=0;while((H=X.indexOf("&",H))>=0){z+=X.slice(q,H),Z.startEntity(G);let B=Z.write(X,H+1);if(B<0){q=H+Z.end();break}q=H+B,H=B===0?q+1:q}let j=z+X.slice(q);return z="",j}}function OT(J,z,Z,Y){let X=(z&gJ.BRANCH_LENGTH)>>7,G=z&gJ.JUMP_TABLE;if(X===0)return G!==0&&Y===G?Z:-1;if(G){let B=Y-G;return B<0||B>=X?-1:J[Z+B]-1}let q=X+1>>1,H=0,j=X-1;while(H<=j){let B=H+j>>>1,V=B>>1,U=J[Z+V]>>(B&1)*8&255;if(U<Y)H=B+1;else if(U>Y)j=B-1;else return J[Z+q+B]}return-1}function PY(J,z=LZ.Legacy){return AT(J,z)}var $1,bL=32,fJ,LZ,AT;var kL=C(()=>{AL();NL();CL();(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"})($1||($1={}));(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"})(fJ||(fJ={}));(function(J){J[J.Legacy=0]="Legacy",J[J.Strict=1]="Strict",J[J.Attribute=2]="Attribute"})(LZ||(LZ={}));AT=FT(gL)});var IL,SL;var TL=C(()=>{kL();(function(J){J[J.XML=0]="XML",J[J.HTML=1]="HTML"})(IL||(IL={}));(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"})(SL||(SL={}))});import{CliRenderer as gT,createCliRenderer as NT,engine as CT}from"@opentui/core";import{createTestRenderer as G_}from"@opentui/core/testing";import{ASCIIFontRenderable as bT,BoxRenderable as kT,CodeRenderable as IT,DiffRenderable as ST,InputRenderable as yT,LineNumberRenderable as TT,MarkdownRenderable as xT,ScrollBoxRenderable as uT,SelectRenderable as ET,TabSelectRenderable as wT,TextareaRenderable as PT,TextAttributes as R8,TextNodeRenderable as hT,TextRenderable as vT}from"@opentui/core";import{engine as H_,Timeline as j_}from"@opentui/core";import{BaseRenderable as vL,createTextAttributes as cT,InputRenderable as g8,InputRenderableEvents as UQ,isTextNodeRenderable as b8,parseColor as xL,Renderable as dT,RootTextNodeRenderable as nT,ScrollBoxRenderable as iT,SelectRenderable as uL,SelectRenderableEvents as N8,TabSelectRenderable as EL,TabSelectRenderableEvents as C8,TextNodeRenderable as lT,TextRenderable as mL}from"@opentui/core";import{BaseRenderable as eT,isTextNodeRenderable as Jx,TextNodeRenderable as zx,TextRenderable as Zx,Yoga as PL}from"@opentui/core";import{BoxRenderable as F_,RootRenderable as O_}from"@opentui/core";import{TimeToFirstDrawRenderable as Qx}from"@opentui/core";import{createSlotRegistry as g_}from"@opentui/core";function aT({createElement:J,createTextNode:z,createSlotNode:Z,isTextNode:Y,replaceText:X,insertNode:G,removeNode:q,setProperty:H,getParentNode:j,getFirstChild:B,getNextSibling:V}){function f(I,N,F,y){if(F!==void 0&&!y)y=[];if(typeof N!=="function")return U(I,N,y,F);Pz((c)=>U(I,N(),c,F),y)}function U(I,N,F,y,c){while(typeof F==="function")F=F();if(N===F)return F;let d=typeof N,l=y!==void 0;if(d==="string"||d==="number"){if(d==="number")N=N.toString();if(l){let t=F[0];if(t&&Y(t))X(t,N);else t=z(N);F=A(I,F,y,t)}else if(F!==""&&typeof F==="string")X(B(I),F=N);else A(I,F,y,z(N)),F=N}else if(N==null||d==="boolean")F=A(I,F,y);else if(d==="function")return Pz(()=>{let t=N();while(typeof t==="function")t=t();F=U(I,t,F,y)}),()=>F;else if(Array.isArray(N)){let t=[];if(L(t,N,c))return Pz(()=>F=U(I,t,F,y,!0)),()=>F;if(t.length===0){let X0=A(I,F,y);if(l)return F=X0}else if(Array.isArray(F))if(F.length===0)g(I,t,y);else O(I,F,t);else if(F==null||F==="")g(I,t);else O(I,l&&F||[B(I)],t);F=t}else{if(Array.isArray(F)){if(l)return F=A(I,F,y,N);A(I,F,null,N)}else if(F==null||F===""||!B(I))G(I,N);else E(I,N,B(I));F=N}return F}function L(I,N,F){let y=!1;for(let c=0,d=N.length;c<d;c++){let l=N[c],t;if(l==null||l===!0||l===!1);else if(Array.isArray(l))y=L(I,l)||y;else if((t=typeof l)==="string"||t==="number")I.push(z(l));else if(t==="function")if(F){while(typeof l==="function")l=l();y=L(I,Array.isArray(l)?l:[l])||y}else I.push(l),y=!0;else I.push(l)}return y}function O(I,N,F){let y=F.length,c=N.length,d=y,l=0,t=0,X0=V(N[c-1]),q0=null;while(l<c||t<d){if(N[l]===F[t]){l++,t++;continue}while(N[c-1]===F[d-1])c--,d--;if(c===l){let f0=d<y?t?V(F[t-1]):F[d-t]:X0;while(t<d)G(I,F[t++],f0)}else if(d===t)while(l<c){if(!q0||!q0.has(N[l]))q(I,N[l]);l++}else if(N[l]===F[d-1]&&F[t]===N[c-1]){let f0=V(N[--c]);G(I,F[t++],V(N[l++])),G(I,F[--d],f0),N[c]=F[d]}else{if(!q0){q0=new Map;let _=t;while(_<d)q0.set(F[_],_++)}let f0=q0.get(N[l]);if(f0!=null)if(t<f0&&f0<d){let _=l,O0=1,b;while(++_<c&&_<d){if((b=q0.get(N[_]))==null||b!==f0+O0)break;O0++}if(O0>f0-t){let p=N[l];while(t<f0)G(I,F[t++],p)}else E(I,F[t++],N[l++])}else l++;else q(I,N[l++])}}}function A(I,N,F,y){if(F===void 0){let d;while(d=B(I))q(I,d);return y&&G(I,y),y??""}let c=y||Z();if(N.length){let d=!1;for(let l=N.length-1;l>=0;l--){let t=N[l];if(c!==t){let X0=j(t)===I;if(!d&&!l)X0?E(I,c,t):G(I,c,F);else X0&&q(I,t)}else d=!0}}else G(I,c,F);return[c]}function g(I,N,F){for(let y=0,c=N.length;y<c;y++)G(I,N[y],F)}function E(I,N,F){G(I,N,F),q(I,F)}function h(I,N,F={},y){if(N||(N={}),!y)Pz(()=>F.children=U(I,N.children,F.children));return Pz(()=>N.ref&&N.ref(I)),Pz(()=>{for(let c in N){if(c==="children"||c==="ref")continue;let d=N[c];if(d===F[c])continue;H(I,c,d,F[c]),F[c]=d}}),F}return{render(I,N){let F;return WY((y)=>{F=y,f(N,I())}),F},insert:f,spread(I,N,F){if(typeof N==="function")Pz((y)=>h(I,N(),y,F));else h(I,N,void 0,F)},createElement:J,createTextNode:z,insertNode:G,setProp(I,N,F,y){return H(I,N,F,y),F},mergeProps:Pq,effect:Pz,memo:$T,createComponent:MU,use(I,N,F){return YJ(()=>I(N,F))}}}function _T(J){let z=aT(J);return z.mergeProps=Pq,z}function T8(J){if(!fj.has(J))fj.set(J,0);let z=fj.get(J)+1;return fj.set(J,z),`${J}-${z}`}function pT(J,z,Z){if(WJ("Inserting node:",HJ(z),"into parent:",HJ(J),"with anchor:",HJ(Z),z instanceof $X),z instanceof KQ)z.parent=J,z=z.getSlotChild(J);if(Z&&Z instanceof KQ)Z=Z.getSlotChild(J);if(b8(z)){if(!(J instanceof mL)&&!b8(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 vL))throw console.error("[INSERT]","Tried to mount a non base renderable"),Error("Tried to mount a non base renderable");if(!Z){J.add(z);return}let Y=k8(J),X=Y.findIndex((G)=>G.id===Z.id);if(X===-1)WJ("[INSERT]","Could not find anchor",HJ(J),HJ(Z),"[children]",...Y.map((G)=>G.id));J.add(z,X)}function rT(J,z){if(WJ("Removing node:",HJ(z),"from parent:",HJ(J)),z instanceof KQ)z.parent=null,z=z.getSlotChild(J);J.remove(z.id),process.nextTick(()=>{if(z instanceof vL&&!z.parent){z.destroyRecursively();return}})}function oT(J){WJ("Creating text node:",J);let z=T8("text-node");if(typeof J==="number")J=J.toString();return $X.fromString(PY(J),{id:z})}function sT(){let J=T8("slot-node");return WJ("Creating slot node",J),new KQ(J)}function wL(J){WJ("Getting parent of node:",HJ(J));let z=J.parent??void 0;if(z instanceof nT)z=z.textParent??void 0;let Z=z?.parent?.parent?.parent;if(Z instanceof iT&&Z.content===z)z=Z;return z}function Xx(J){Object.assign(aL,J)}function Gx(){return aL}var y8,VJ=()=>{let J=lJ(y8);if(!J)throw Error("No renderer found");return J},mT=(J)=>{let z=VJ();_1(()=>{z.on("resize",J)}),b1(()=>{z.off("resize",J)})},_z=()=>{let J=VJ(),[z,Z]=s({width:J.width,height:J.height});return mT((X,G)=>{Z({width:X,height:G})}),z},hL=(J)=>{let Z=VJ().keyInput;_1(()=>{Z.on("paste",J)}),b1(()=>{Z.off("paste",J)})},$T=(J)=>K0(()=>J()),fj,WJ=(...J)=>{if(process.env.DEBUG)console.log("[Reconciler]",...J)},$X,HJ=(J)=>{if(!J)return;return J.id},k8=(J)=>{let z;if(J instanceof mL)z=J.getTextChildren();else z=J.getChildren();return z},tT,u,C0,k,W,T0,D,K,D_,Q,cL,Hz,x8,dL,nL,KQ,DQ,Wj,I8,S8,iL,lL,$L,Yx,aL,qx=(J,z)=>{let Z,Y=!1,X=!1,G=!0,q=!1,H=J.destroy.bind(J),j=()=>{if(X)return;if(!Z){Y=!0;return}X=!0,Z()};J.once("destroy",j),J.destroy=()=>{if(G){q=!0;return}H()};try{Z=tT(()=>k(y8.Provider,{get value(){return J},get children(){return k(z,{})}}),J.root)}finally{G=!1,J.destroy=H}if(Y)j();if(q)H()},_L=async(J,z={})=>{let Z=z instanceof gT?z:await NT({...z,onDestroy:()=>{z.onDestroy?.()}});CT.attach(Z),qx(Z,J)};var P=C(()=>{D1();TL();D1();D1();D1();y8=hz();fj=new Map;$X=class $X extends lT{static fromString(J,z={}){let Z=new $X(z);return Z.add(J),Z}};({render:tT,effect:u,memo:C0,createComponent:k,createElement:W,createTextNode:T0,insertNode:D,insert:K,spread:D_,setProp:Q,mergeProps:cL,use:Hz}=_T({createElement(J){WJ("Creating element:",J);let z=T8(J),Z=lJ(y8);if(!Z)throw Error("No renderer found");let Y=Gx();if(!Y[J])throw Error(`[Reconciler] Unknown component type: ${J}`);let X=new Y[J](Z,{id:z});return WJ("Element created with id:",z),X},createTextNode:oT,createSlotNode:sT,replaceText(J,z){if(WJ("Replacing text:",z,"in node:",HJ(J)),!(J instanceof $X))return;J.replace(PY(z),0)},setProperty(J,z,Z,Y){if(z.startsWith("on:")){let X=z.slice(3);if(Z)J.on(X,Z);if(Y)J.off(X,Y);return}if(b8(J)){if(z==="href"){J.link={url:Z};return}if(z==="style"){J.attributes|=cT(Z),J.fg=Z.fg?xL(Z.fg):J.fg,J.bg=Z.bg?xL(Z.bg):J.bg;return}return}switch(z){case"id":WJ("Id mapped",J.id,"=",Z),J[z]=Z;break;case"focused":if(!(J instanceof dT))return;if(Z)J.focus();else J.blur();break;case"onChange":let X=void 0;if(J instanceof uL)X=N8.SELECTION_CHANGED;else if(J instanceof EL)X=C8.SELECTION_CHANGED;else if(J instanceof g8)X=UQ.CHANGE;if(!X)break;if(Z)J.on(X,Z);if(Y)J.off(X,Y);break;case"onInput":if(J instanceof g8){if(Z)J.on(UQ.INPUT,Z);if(Y)J.off(UQ.INPUT,Y)}break;case"onSubmit":if(J instanceof g8){if(Z)J.on(UQ.ENTER,Z);if(Y)J.off(UQ.ENTER,Y)}else J[z]=Z;break;case"onSelect":if(J instanceof uL){if(Z)J.on(N8.ITEM_SELECTED,Z);if(Y)J.off(N8.ITEM_SELECTED,Y)}else if(J instanceof EL){if(Z)J.on(C8.ITEM_SELECTED,Z);if(Y)J.off(C8.ITEM_SELECTED,Y)}break;case"style":for(let G in Z){let q=Z[G];if(Y!==void 0&&q===Y[G])continue;J[G]=q}break;case"text":case"content":{let G=typeof Z==="string"?Z:Array.isArray(Z)?Z.join(""):`${Z}`;J[z]=PY(G);break}default:J[z]=Z}},isTextNode(J){return J instanceof $X},insertNode:pT,removeNode:rT,getParentNode:wL,getFirstChild(J){WJ("Getting first child of node:",HJ(J));let z=k8(J)[0];if(!z){WJ("No first child found for node:",HJ(J));return}return WJ("First child found:",HJ(z),"for node:",HJ(J)),z},getNextSibling(J){WJ("Getting next sibling of node:",HJ(J));let z=wL(J);if(!z){WJ("No parent found for node:",HJ(J));return}let Z=k8(z),Y=Z.indexOf(J);if(Y===-1||Y===Z.length-1){WJ("No next sibling found for node:",HJ(J));return}let X=Z[Y+1];if(!X){WJ("Next sibling is null for node:",HJ(J));return}return WJ("Next sibling found:",HJ(X),"for node:",HJ(J)),X}}));x8=class x8 extends eT{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}};dL=class dL extends zx{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()}};nL=class nL extends x8{yogaNode;slotParent;destroyed=!1;constructor(J,z){super(J);this._visible=!1,this.slotParent=z,this.yogaNode=PL.default.Node.create(),this.yogaNode.setDisplay(PL.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 x8{layoutNode;textNode;destroyed=!1;constructor(J){super(J);this._visible=!1}getSlotChild(J){if(Jx(J)||J instanceof Zx){if(!this.textNode)this.textNode=new dL(`slot-text-${this.id}`,this);return this.textNode}if(!this.layoutNode)this.layoutNode=new nL(`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()}};DQ=class DQ extends hT{_ctx;constructor(J,z){super(z);this._ctx=J}};Wj=class Wj extends DQ{constructor(J,z){super(null,J);if(z==="b"||z==="strong")this.attributes=(this.attributes||0)|R8.BOLD;else if(z==="i"||z==="em")this.attributes=(this.attributes||0)|R8.ITALIC;else if(z==="u")this.attributes=(this.attributes||0)|R8.UNDERLINE}};I8=class I8 extends Wj{constructor(J){super(J,"b")}};S8=class S8 extends Wj{constructor(J){super(J,"i")}};iL=class iL extends Wj{constructor(J){super(J,"u")}};lL=class lL extends DQ{constructor(J,z){super(null,z);this.add()}add(){return super.add(`
262
+ `)}};$L=class $L extends DQ{constructor(J,z){let Z={...z,link:{url:z.href}};super(null,Z)}};Yx={box:kT,text:vT,input:yT,select:ET,textarea:PT,ascii_font:bT,tab_select:wT,scrollbox:uT,code:IT,diff:ST,line_number:TT,markdown:xT,span:DQ,strong:I8,b:I8,em:S8,i:S8,u:iL,br:lL,a:$L},aL={...Yx};Xx({time_to_first_draw:Qx})});function MZ(J){if(J===void 0)return"undefined";if(J===null)return"null";let z=Array.isArray(J)?"array":typeof J,Z;try{Z=typeof J==="string"?J:JSON.stringify(J)}catch{Z=String(J)}if(Z.length>120)Z=`${Z.slice(0,120)}\u2026`;return`${z}:${Z}`}function Hx(J){let z=J?.changes;if(!z||typeof z!=="object"||Array.isArray(z))return null;let Z=new Map;for(let[Y,X]of Object.entries(z)){let G=X;if(typeof G?.added!=="number"||typeof G.deleted!=="number")return null;Z.set(Y,{added:G.added,deleted:G.deleted})}return Z}function jx(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 Bx(J,z){if(J.size!==z.size)return!1;for(let[Z,Y]of J){let X=z.get(Z);if(!X||!az(Y,X))return!1}return!0}function fx(J){let z=J?.activity;if(!z||typeof z!=="object"||Array.isArray(z))return null;let Z=new Map;for(let[Y,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;Z.set(Y,{mtimeMs:G.mtimeMs,completionId:G.completionId,completionAt:G.completionAt})}return Z}function Wx(J,z){if(J.size!==z.size)return!1;for(let[Z,Y]of J){let X=z.get(Z);if(!X||X.mtimeMs!==Y.mtimeMs||X.completionId!==Y.completionId||X.completionAt!==Y.completionAt)return!1}return!0}class NJ{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[Z,Y]=s([]),[X,G]=s(null),[q,H]=s(null),[j,B]=s(null),[V,f]=s(new Map),[U,L]=s(new Map),[O,A]=s(null),[g,E]=s(null),[h,I]=s(null),[N,F]=s(null),[y,c]=s("online");this.tasksAcc=Z,this.setTasks=(d)=>Y(()=>d),this.activeTaskAcc=X,this.setActiveTaskSig=(d)=>G(()=>d),this.updateAcc=q,this.setUpdateSig=(d)=>H(()=>d),this.daemonVersionAcc=j,this.setDaemonVersionSig=(d)=>B(()=>d),this.engineStateAcc=V,this.setEngineStateSig=(d)=>f(()=>d),this.taskJobsAcc=U,this.setTaskJobsSig=(d)=>L(()=>d),this.worktreeChangesAcc=O,this.setWorktreeChangesSig=(d)=>A(()=>d),this.transcriptActivityAcc=g,this.setTranscriptActivitySig=(d)=>E(()=>d),this.uiPrefsAcc=h,this.setUiPrefsSig=(d)=>I(()=>d),this.keybindingsRevAcc=N,this.setKeybindingsRevSig=(d)=>F(()=>d),this.connectionStateAcc=y,this.setConnectionState=(d)=>c(()=>d),this.ensureReachable=z.ensureReachable??vX,this.role=z.role??"pane",this.channels=z.channels,this.subscribesTasks=!z.channels||z.channels.includes("task.snapshot"),this.client.on("*",(d)=>this.handleEvent(d.name,d.payload)),this.client.onLifecycle("close",()=>{if(this.setConnectionState("disconnected"),this.role==="pane")YZ("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((Z)=>setTimeout(Z,J)),this.client.isDisposed)break;z++;try{await this.init(),YZ("orch",`reconnected and re-subscribed after ${z} attempt(s) \u2014 task list re-synced`),this.reconnecting=!1;return}catch(Z){if(z===1||z%10===0)QJ("orch-reconnect",Z);J=Math.min(J*2,3000)}}this.reconnecting=!1}async init(){let J=await this.client.request("hello",{protocolVersion:eJ,minProtocolVersion:kZ}),z=typeof J.protocolVersion==="number"?J.protocolVersion:eJ,Z=typeof J.minProtocolVersion==="number"?J.minProtocolVersion:z;if(!sQ({localVersion:eJ,localMin:kZ,remoteVersion:z,remoteMin:Z}))throw Error(`kobe daemon is protocol v${z} (min v${Z}); this client is v${eJ} (min v${kZ}). 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(LQ));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"),YZ("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()=>wV(this.daemonVersionAcc()??void 0,J1)}engineStateSignal(){return this.engineStateAcc}taskJobsSignal(){return this.taskJobsAcc}worktreeChangesSignal(){return this.worktreeChangesAcc}transcriptActivitySignal(){return this.transcriptActivityAcc}uiPrefsSignal(){return this.uiPrefsAcc}keybindingsRevSignal(){return this.keybindingsRevAcc}listTasks(){return this.tasksAcc()}getTask(J){return this.tasksAcc().find((z)=>z.id===J)}subscribeTasks(J){try{J(this.listTasks())}catch(Z){console.error("[kobe RemoteOrchestrator] task listener threw on subscribe:",Z)}let z=!0;return WY((Z)=>{return d0(()=>{let Y=this.tasksAcc();if(z){z=!1;return}try{J(Y)}catch(X){console.error("[kobe RemoteOrchestrator] task listener threw:",X)}}),Z})}async createTask(J){let{modelEffort:z,...Z}=J,Y=await this.client.request("task.create",{...Z,effort:z});return LQ(Y.task)}async ensureMainTask(J){let z=await this.client.request("task.ensureMain",{repo:J});return LQ(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 LQ(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 Z=z?.tasks;if(Array.isArray(Z))this.setTasks(Z.map(LQ)),this.pruneEngineState(Z),this.pruneTaskJobs(Z);else QJ("orch",`dropped task.snapshot event: tasks is not an array (got ${MZ(Z)})`);return}if(J==="active-task"){let Z=z?.taskId;this.setActiveTaskSig(typeof Z==="string"?Z:null);return}if(J==="update"){let Z=z?.info;this.setUpdateSig(Z??null);return}if(J==="engine-state"){let Z=z;if(typeof Z?.taskId!=="string"||typeof Z.state!=="string"){QJ("orch",`dropped engine-state event: taskId/state must be strings (taskId=${MZ(Z?.taskId)}, state=${MZ(Z?.state)})`);return}let Y=new Map(this.engineStateAcc());if(Z.state==="idle")Y.delete(Z.taskId);else Y.set(Z.taskId,{state:Z.state,detail:Z.detail,at:typeof Z.at==="number"?Z.at:0});this.setEngineStateSig(Y);return}if(J==="task.jobs"){let Z=z;if(typeof Z?.taskId!=="string"||Z.kind!=="ensureWorktree"){QJ("orch",`dropped task.jobs event: expected string taskId + kind "ensureWorktree" (taskId=${MZ(Z?.taskId)}, kind=${MZ(Z?.kind)})`);return}let Y=this.taskJobsAcc();if(Z.phase==="running"){let X=new Map(Y);X.set(Z.taskId,{kind:Z.kind}),this.setTaskJobsSig(X);return}if((Z.phase==="done"||Z.phase==="error")&&Y.has(Z.taskId)){let X=new Map(Y);X.delete(Z.taskId),this.setTaskJobsSig(X)}return}if(J==="worktree.changes"){let Z=Hx(z);if(!Z){QJ("orch",`dropped worktree.changes event: malformed changes payload (${MZ(z)})`);return}let Y=this.worktreeChangesAcc();if(Y&&Bx(Y,Z))return;this.setWorktreeChangesSig(Z);return}if(J==="transcript.activity"){let Z=fx(z);if(!Z){QJ("orch",`dropped transcript.activity event: malformed activity payload (${MZ(z)})`);return}let Y=this.transcriptActivityAcc();if(Y&&Wx(Y,Z))return;this.setTranscriptActivitySig(Z);return}if(J==="ui-prefs"){let Z=jx(z);if(!Z){let Y=z?.theme;QJ("orch",`dropped ui-prefs event: theme must be a string (got ${MZ(Y)})`);return}this.setUiPrefsSig(Z);return}if(J==="keybindings"){let Z=z;if(typeof Z?.rev!=="number"){QJ("orch",`dropped keybindings event: rev must be a number (got ${MZ(Z?.rev)})`);return}this.setKeybindingsRevSig(Z.rev);return}}pruneEngineState(J){let z=this.engineStateAcc();if(z.size===0)return;let Z=new Set(J.map((X)=>X.id)),Y=null;for(let X of z.keys()){if(Z.has(X))continue;if(!Y)Y=new Map(z);Y.delete(X)}if(Y)this.setEngineStateSig(Y)}pruneTaskJobs(J){let z=this.taskJobsAcc();if(z.size===0)return;let Z=new Set(J.map((X)=>X.id)),Y=null;for(let X of z.keys()){if(Z.has(X))continue;if(!Y)Y=new Map(z);Y.delete(X)}if(Y)this.setTaskJobsSig(Y)}}function LQ(J){return{id:OG(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 sZ=C(()=>{GY();kJ();YY();D1();wX();Yz();bJ()});function oL(J){let z=J[Fz];if(!z){if(Object.defineProperty(J,Fz,{value:z=new Proxy(J,Kx)}),!Array.isArray(J)){let Z=Object.keys(J),Y=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);Z.push(...Object.keys(q)),Object.assign(Y,q)}for(let q=0,H=Z.length;q<H;q++){let j=Z[q];if(G&&j==="constructor")continue;if(Y[j].get)Object.defineProperty(J,j,{configurable:!0,enumerable:Y[j].enumerable,get:Y[j].get.bind(z)})}}}return z}function Vj(J){let z;return J!=null&&typeof J==="object"&&(J[Fz]||!(z=Object.getPrototypeOf(J))||z===Object.prototype||Array.isArray(J))}function FQ(J,z=new Set){let Z,Y,X,G;if(Z=J!=null&&J[u8])return Z;if(!Vj(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(X=J[q],(Y=FQ(X,z))!==X)J[q]=Y}else{if(Object.isFrozen(J))J=Object.assign({},J);else z.add(J);let q=Object.keys(J),H=Object.getOwnPropertyDescriptors(J);for(let j=0,B=q.length;j<B;j++){if(G=q[j],H[G].get)continue;if(X=J[G],(Y=FQ(X,z))!==X)J[G]=Y}}return J}function Uj(J,z){let Z=J[z];if(!Z)Object.defineProperty(J,z,{value:Z=Object.create(null)});return Z}function OQ(J,z,Z){if(J[z])return J[z];let[Y,X]=s(Z,{equals:!1,internal:!0});return Y.$=X,J[z]=Y}function Vx(J,z){let Z=Reflect.getOwnPropertyDescriptor(J,z);if(!Z||Z.get||!Z.configurable||z===Fz||z===aX)return Z;return delete Z.value,delete Z.writable,Z.get=()=>J[Fz][z],Z}function sL(J){wq()&&OQ(Uj(J,aX),rL)()}function Ux(J){return sL(J),Reflect.ownKeys(J)}function Kj(J,z,Z,Y=!1){if(z==="__proto__"){console.warn('Refusing to set "__proto__" on a store.');return}if(!Y&&J[z]===Z)return;let X=J[z],G=J.length;if(pL.onStoreNodeUpdate&&pL.onStoreNodeUpdate(J,z,Z,X),Z===void 0){if(delete J[z],J[FZ]&&J[FZ][z]&&X!==void 0)J[FZ][z].$()}else if(J[z]=Z,J[FZ]&&J[FZ][z]&&X===void 0)J[FZ][z].$();let q=Uj(J,aX),H;if(H=OQ(q,z,X))H.$(()=>Z);if(Array.isArray(J)&&J.length!==G){for(let j=J.length;j<G;j++)(H=q[j])&&H.$();(H=OQ(q,"length",G))&&H.$(J.length)}(H=q[rL])&&H.$()}function tL(J,z){let Z=Object.keys(z);for(let Y=0;Y<Z.length;Y+=1){let X=Z[Y];if(eL(X))continue;Kj(J,X,z[X])}}function eL(J){return J==="__proto__"||J==="constructor"||J==="prototype"}function Dx(J,z){if(typeof z==="function")z=z(J);if(z=FQ(z),Array.isArray(z)){if(J===z)return;let Z=0,Y=z.length;for(;Z<Y;Z++){let X=z[Z];if(J[Z]!==X)Kj(J,Z,X)}Kj(J,"length",Y)}else tL(J,z)}function MQ(J,z,Z=[]){let Y,X=J;if(z.length>1){Y=z.shift();let q=typeof Y,H=Array.isArray(J);if(q==="string"&&(Y==="__proto__"||z.length>1&&eL(Y))){console.warn(`Refusing to traverse unsafe key "${Y}" on a store.`);return}if(Array.isArray(Y)){for(let j=0;j<Y.length;j++)MQ(J,[Y[j]].concat(z),Z);return}else if(H&&q==="function"){for(let j=0;j<J.length;j++)if(Y(J[j],j))MQ(J,[j].concat(z),Z);return}else if(H&&q==="object"){let{from:j=0,to:B=J.length-1,by:V=1}=Y;for(let f=j;f<=B;f+=V)MQ(J,[f].concat(z),Z);return}else if(z.length>1){MQ(J[Y],z,[Y].concat(Z));return}X=J[Y],Z=[Y].concat(Z)}let G=z[0];if(typeof G==="function"){if(G=G(X,Z),G===X)return}if(Y===void 0&&G==null)return;if(G=FQ(G),Y===void 0||Vj(X)&&Vj(G)&&!Array.isArray(G))tL(X,G);else Kj(J,Y,G)}function pz(...[J,z]){let Z=FQ(J||{}),Y=Array.isArray(Z);if(typeof Z!=="object"&&typeof Z!=="function")throw Error(`Unexpected type ${typeof Z} received when initializing 'createStore'. Expected an object.`);let X=oL(Z);OU.registerGraph({value:Z,name:z&&z.name});function G(...q){Eq(()=>{Y&&q.length===1?Dx(Z,q[0]):MQ(Z,q)})}return[X,G]}var u8,aX,FZ,rL,pL,Kx,E_;var _X=C(()=>{D1();u8=Symbol("store-raw"),aX=Symbol("store-node"),FZ=Symbol("store-has"),rL=Symbol("store-self"),pL={onStoreNodeUpdate:null};Kx={get(J,z,Z){if(z===u8)return J;if(z===Fz)return Z;if(z===xq)return sL(J),Z;let Y=Uj(J,aX),X=Y[z],G=X?X():J[z];if(z===aX||z===FZ||z==="__proto__")return G;if(!X){let q=Object.getOwnPropertyDescriptor(J,z);if(wq()&&(typeof G!=="function"||J.hasOwnProperty(z))&&!(q&&q.get))G=OQ(Y,z,G)()}return Vj(G)?oL(G):G},has(J,z){if(z===u8||z===Fz||z===xq||z===aX||z===FZ||z==="__proto__")return!0;return wq()&&OQ(Uj(J,FZ),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:Ux,getOwnPropertyDescriptor:Vx};E_=Symbol("store-root")});function Dj(J){let z=hz();return{provider:(Z)=>{let Y=J.init(Z);return k(Y0,{get when(){return Y.ready===void 0||Y.ready===!0},get children(){return k(z.Provider,{value:Y,get children(){return Z.children}})}})},use(){let Z=lJ(z);if(!Z)throw Error(`${J.name} context must be used within a context provider`);return Z}}}var E8=C(()=>{P();P();D1()});import{RGBA as hY}from"@opentui/core";function Mx(){return Object.keys(DJ.themes)}function AQ(J){return Boolean(DJ.themes[J])}function P8(J,z){if(!J)return!1;if(!z||typeof z!=="object"||!z.theme)return!1;return vY("themes",{...DJ.themes,[J]:z}),!0}function w8(J,z="dark"){let Z=J.defs??{};function Y(j,B=[]){if(typeof j==="string"){if(j==="transparent"||j==="none")return hY.fromInts(0,0,0,0);if(j.startsWith("#"))return hY.fromHex(j);if(B.includes(j))return hY.fromInts(0,0,0);let V=Z[j]??J.theme[j];if(V===void 0)return hY.fromInts(0,0,0);return Y(V,[...B,j])}return Y(j[z],B)}let X={};for(let[j,B]of Object.entries(J.theme))X[j]=Y(B);let G=X.text??hY.fromHex("#ffffff"),q=X.background??hY.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 Lx,mY,DJ,vY,w0,JM;var d1=C(()=>{P();D1();_X();E8();eq();JH();zH();ZH();YH();XH();GH();Lx={claude:KX,conductor:DX,nord:MX,opencode:FX,dracula:LX,tokyonight:AX,"osaka-jade":OX},mY=["primary","success","info"],[DJ,vY]=pz({themes:{...Lx},active:"claude",mode:"dark",transparentBackground:!1,focusAccent:"primary"});({use:w0,provider:JM}=Dj({name:"Theme",init:(J)=>{if(J.mode)vY("mode",J.mode);if(J.theme&&AQ(J.theme))vY("active",J.theme);let z=VJ(),Z=K0(()=>{let X=DJ.themes[DJ.active];if(X)return w8(X,DJ.mode);let G=DJ.themes.claude??DJ.themes.opencode??Object.values(DJ.themes)[0];if(!G)return w8({theme:{background:"#000000",text:"#ffffff"}},DJ.mode);return w8(G,DJ.mode)}),Y=K0(()=>{let X=Z(),G=X[DJ.focusAccent]??X.primary,q={...X,focusAccent:G};if(!DJ.transparentBackground)return q;let H=hY.fromInts(0,0,0,0);return{...q,background:H,backgroundPanel:H}});return d0(()=>{z?.setBackgroundColor(Y().background)}),{theme:new Proxy({},{get(X,G){let q=Y();return q[G]??q.text}}),get selected(){return DJ.active},get transparentBackground(){return DJ.transparentBackground},get focusAccent(){return DJ.focusAccent},mode(){return DJ.mode},set(X){if(!AQ(X))return!1;return vY("active",X),!0},setMode(X){vY("mode",X)},setTransparentBackground(X){vY("transparentBackground",X)},setFocusAccent(X){vY("focusAccent",X)},all(){return Mx()},has(X){return AQ(X)}}}}))});var zM,ZM;var YM=C(()=>{zM={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"}},ZM={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 XM,GM;var QM=C(()=>{XM={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"}},GM={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 qM,HM;var jM=C(()=>{qM={title:"kobe \u2014 keybindings",esc:"esc"},HM={title:"kobe \u2014 \u5FEB\u6377\u952E",esc:"esc"}});var BM,fM;var WM=C(()=>{BM={empty:"No engine history for this task.",loading:"loading\u2026",sessionLabel:"Session",archivedTag:"ARCHIVED",liveTag:"\u25CF LIVE",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"},fM={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",liveTag:"\u25CF \u5B9E\u65F6",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 VM,UM;var KM=C(()=>{VM={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":"Reorder task (Shift+M, then j/k)","sidebar.pin":"Pin / unpin task at top (Shift+P)","sidebar.previewToggle":"Toggle live preview (watch task)","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)"}},UM={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":"\u91CD\u65B0\u6392\u5E8F\u4EFB\u52A1\uFF08Shift+M\uFF0C\u7136\u540E\u6309 j/k\uFF09","sidebar.pin":"\u7F6E\u9876 / \u53D6\u6D88\u7F6E\u9876\u4EFB\u52A1\uFF08Shift+P\uFF09","sidebar.previewToggle":"\u5207\u6362\u5B9E\u65F6\u9884\u89C8\uFF08\u89C2\u770B\u4EFB\u52A1\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 DM,LM;var MM=C(()=>{DM={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"}},LM={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 FM,OM;var AM=C(()=>{FM={badge:{newActivity:"\u25CF new"},preview:{diffVsHead:"diff vs HEAD",file:"file",closeHint:"\xB7 q to close",loading:"loading\u2026"}},OM={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 RM,gM;var NM=C(()=>{RM={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 ctrl+v attach \xB7 ctrl+x unattach \xB7 esc cancel"},gM={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 ctrl+v \u9644\u52A0\u526A\u8D34\u677F \xB7 ctrl+x \u79FB\u9664\u9644\u4EF6 \xB7 esc \u53D6\u6D88"}});var CM,bM;var kM=C(()=>{CM={title:"Settings",esc:"esc",nav:{default:"j/k pick \xB7 h/l switch level \xB7 enter activate \xB7 esc close",feedback:"tab next field \xB7 enter sends on Send \xB7 esc close"},sections:{general:"General",engines:"Engines",accounts:"Accounts",keys:"Keybindings",feedback:"Feedback",dev:"Dev"},general:{theme:"Theme",themeHint:"l to enter list \xB7 j/k to highlight \xB7 enter to apply",language:"Language",languageHint:"Display language for kobe's UI. l to enter list \xB7 j/k to highlight \xB7 enter to apply.",transparent:"Transparent background",transparentHint:"Drops the renderer's bg fill so the host terminal shows through. `t` toggles.",on:"[x] on",off:"[ ] off",focusAccent:"Focus accent",focusAccentHint:"Color of focused pane title, \u258C marker, and split borders.",accentPrimary:"Primary (brand accent)",accentSuccess:"Success (legacy green)",accentInfo:"Info (cool blue)",notifications:"Notifications",notificationsHint:"Fired when a background chat tab finishes or pauses on an approval. Toast = bottom-right popup; Sound = terminal bell + chime. Tab-chip unread dot is always on.",toast:"Toast",sound:"Sound",zen:"Zen mode",zenHint:"The `zen` chip (above the file list) and `prefix`+space collapse the ChatTab to the engine pane \u2014 hiding the file and terminal panes. Keep this on to leave the Tasks rail visible so you can always get back out.",zenKeepTasks:"Keep Tasks pane in zen mode",surface:"Settings page",surfaceHint:"Where Settings and the other full dialogs (new task, rename) open. ChatTab = a dedicated full-window page alongside the engine tabs; Task panel = an overlay inside the left Tasks pane. enter to pick.",surfaceChattab:"ChatTab (separate page)",surfaceTaskpanel:"Task panel (in-pane overlay)",editor:"Editor",editorHint:"What `e` opens a file with in the file tree (enter stays the read-only preview). `auto` (default) follows $VISUAL / $EDITOR, else auto-detects nvim / vim / emacs / nano. enter on the row below cycles auto / vim / nvim / nano / emacs / custom; if the editor isn't installed it falls back to the preview.",editorRow:"editor: < {kind} > (enter to change)",editorCustom:"custom: {cmd}",editorCustomUnset:"(unset \u2014 enter to edit)",worktree:"Worktree location",worktreeHint:"Where new task worktrees are created. `next to project` keeps them beside each repo; custom takes any path (`~`, relative, or a leading `$project_dir`). New tasks only.",worktreeBase:"location: < {kind} > (enter switches)",worktreeKindDefault:"default ~/.kobe/worktrees",worktreeKindNext:"next to project",worktreeKindCustom:"custom",worktreeCustom:"custom: {path}",worktreeCustomUnset:"(unset \u2014 enter to edit)",worktreeBaseTitle:"Custom worktree location (blank = default; $project_dir = project root)",worktreeBaseField:"path"},engines:{title:"Launch command",hint:"The command each engine's task pane runs. Override a built-in when your binary isn't on PATH as `claude` / `codex` (e.g. it's `cl`) or to pass default flags, or add your own engine. \u25CF = default engine for new tasks (also set by Ctrl+Shift+T). enter edit command \xB7 r rename \xB7 x reset/remove \xB7 d set default.",defaultTag:" (default)",customTag:" (custom)",addEngine:"+ Add engine"},accounts:{title:"Accounts",hint:"Read-only view of locally-detected engine accounts. Login flows land here later.",checking:"Checking\u2026",notLoggedIn:"\u25CB Not logged in",loggedIn:"\u25CF Logged in: {email}",apiKeyConfigured:"\u25CF API key configured",chatgptLogin:"\u25CF ChatGPT login: {email}",tokenConfigured:"\u25CF Token configured ({source})",copilotDetected:"\u25CF Copilot login detected"},keybindings:{title:"Keybindings",hint:"Rebind chords by editing the YAML below, then restart kobe (or respawn the pane). Press F1 anywhere for the live keymap with every binding id.",configFile:"Config file",notCreated:" (not created yet)",example:"Example",overridesApplied:"Overrides applied",none:"none",warnings:"Warnings"},feedback:{title:"Feedback",hint:"Sends a GitHub Discussion to the kobe repo through `gh`. Requires `gh auth login`; category defaults to Feedback.",titleLabel:"title",titlePlaceholder:"Short summary",descriptionLabel:"description",descriptionPlaceholder:"What happened? (enter for a new line \xB7 tab to Send)",send:"[enter] Send to GitHub Discussions"},dev:{reset:"Reset UI state",resetHint:"Clears ~/.config/kobe/state.json and ~/.kobe/tasks.json, then quits kobe \u2014 relaunch to start fresh. Working session / Archive lists, pane sizes, theme, model picks all reset. Worktrees on disk and Claude Code session history are not touched.",resetButton:"[enter] Reset",restart:"Restart backend",restartHint:"Stops the kobe daemon and quits this kobe window so the next launch spawns a fresh daemon \u2014 picks up daemon / orchestrator / engine edits without a process kill. Other attached kobe windows will lose their connection too.",restartButton:"[enter] Restart",doctorHint:"Daemon wedged or unresponsive? From a shell, run `kobe doctor` to diagnose, or `kobe reset` to stop the daemon + kill sessions (keeps your tasks). Use `kobe reset --hard` only to also wipe the task index + UI state.",experimental:"Experimental",remoteHint:"Remote projects (SSH): register a project whose git worktrees + engine run on another host over SSH, driven from this local kobe. Unfinished \u2014 file/diff panes still degrade for remote. Enables `kobe add --remote`.",remoteOn:"[x] Remote projects (on)",remoteOff:"[ ] Remote projects (off)",autoStatusHint:"Auto status flow: a backlog task moves to in_progress when its engine starts a turn, and new claude sessions get a system-prompt note telling the agent to set in_review itself when the work is done. Never touches done/canceled.",autoStatusOn:"[x] Auto status flow (on)",autoStatusOff:"[ ] Auto status flow (off)",dispatcherHint:"Field-notes dispatcher: task sessions file one-line gotchas (`kobe api note`), the daemon forwards each to the repo's main session, and that session relays them to the in-flight tasks that benefit (`kobe api dispatch`). Web-hosted sessions receive the relays today.",dispatcherOn:"[x] Field-notes dispatcher (on)",dispatcherOff:"[ ] Field-notes dispatcher (off)",archivedHistoryHint:"Archived history preview (beta): opening an archived task shows a read-only `kobe history` pane (session selector + transcript) in the engine slot instead of relaunching the engine. Its transcript survives worktree removal because the engine store is keyed by the worktree path. Shared with the web dashboard.",archivedHistoryOn:"[x] Archived history preview (on)",archivedHistoryOff:"[ ] Archived history preview (off)"}},bM={title:"\u8BBE\u7F6E",esc:"esc",nav:{default:"j/k \u9009\u62E9 \xB7 h/l \u5207\u6362\u5C42\u7EA7 \xB7 enter \u786E\u8BA4 \xB7 esc \u5173\u95ED",feedback:"tab \u4E0B\u4E00\u9879 \xB7 enter \u5728\u53D1\u9001\u9879\u53D1\u9001 \xB7 esc \u5173\u95ED"},sections:{general:"\u901A\u7528",engines:"\u5F15\u64CE",accounts:"\u8D26\u6237",keys:"\u5FEB\u6377\u952E",feedback:"\u53CD\u9988",dev:"\u5F00\u53D1"},general:{theme:"\u4E3B\u9898",themeHint:"l \u8FDB\u5165\u5217\u8868 \xB7 j/k \u9AD8\u4EAE \xB7 enter \u5E94\u7528",language:"\u8BED\u8A00",languageHint:"kobe \u754C\u9762\u7684\u663E\u793A\u8BED\u8A00\u3002l \u8FDB\u5165\u5217\u8868 \xB7 j/k \u9AD8\u4EAE \xB7 enter \u5E94\u7528\u3002",transparent:"\u900F\u660E\u80CC\u666F",transparentHint:"\u53BB\u6389\u6E32\u67D3\u5668\u7684\u80CC\u666F\u586B\u5145\uFF0C\u8BA9\u5BBF\u4E3B\u7EC8\u7AEF\u900F\u51FA\u6765\u3002\u6309 `t` \u5207\u6362\u3002",on:"[x] \u5F00",off:"[ ] \u5173",focusAccent:"\u805A\u7126\u5F3A\u8C03\u8272",focusAccentHint:"\u805A\u7126\u9762\u677F\u6807\u9898\u3001\u258C \u6807\u8BB0\u548C\u5206\u9694\u8FB9\u6846\u7684\u989C\u8272\u3002",accentPrimary:"\u4E3B\u8272\uFF08\u54C1\u724C\u5F3A\u8C03\u8272\uFF09",accentSuccess:"\u6210\u529F\u8272\uFF08\u4F20\u7EDF\u7EFF\uFF09",accentInfo:"\u4FE1\u606F\u8272\uFF08\u51B7\u84DD\uFF09",notifications:"\u901A\u77E5",notificationsHint:"\u540E\u53F0\u804A\u5929\u9875\u5B8C\u6210\u6216\u5728\u5BA1\u6279\u5904\u6682\u505C\u65F6\u89E6\u53D1\u3002Toast = \u53F3\u4E0B\u89D2\u5F39\u7A97\uFF1BSound = \u7EC8\u7AEF\u54CD\u94C3 + \u63D0\u793A\u97F3\u3002\u6807\u7B7E\u4E0A\u7684\u672A\u8BFB\u5706\u70B9\u59CB\u7EC8\u5F00\u542F\u3002",toast:"Toast \u5F39\u7A97",sound:"\u58F0\u97F3",zen:"\u7985\u6A21\u5F0F",zenHint:"`zen` \u6807\u8BB0\uFF08\u6587\u4EF6\u5217\u8868\u4E0A\u65B9\uFF09\u548C `prefix`+\u7A7A\u683C \u4F1A\u628A ChatTab \u6536\u8D77\u5230\u5F15\u64CE\u9762\u677F\u2014\u2014\u9690\u85CF\u6587\u4EF6\u4E0E\u7EC8\u7AEF\u9762\u677F\u3002\u4FDD\u6301\u5F00\u542F\u53EF\u8BA9 Tasks \u4FA7\u680F\u59CB\u7EC8\u53EF\u89C1\uFF0C\u65B9\u4FBF\u968F\u65F6\u9000\u51FA\u3002",zenKeepTasks:"\u7985\u6A21\u5F0F\u4E0B\u4FDD\u7559 Tasks \u9762\u677F",surface:"\u8BBE\u7F6E\u9875\u9762",surfaceHint:"\u8BBE\u7F6E\u53CA\u5176\u4ED6\u5B8C\u6574\u5BF9\u8BDD\u6846\uFF08\u65B0\u5EFA\u4EFB\u52A1\u3001\u91CD\u547D\u540D\uFF09\u7684\u6253\u5F00\u4F4D\u7F6E\u3002ChatTab = \u4E0E\u5F15\u64CE\u6807\u7B7E\u5E76\u5217\u7684\u72EC\u7ACB\u6574\u7A97\u9875\u9762\uFF1BTask panel = \u5DE6\u4FA7 Tasks \u9762\u677F\u5185\u7684\u6D6E\u5C42\u3002enter \u9009\u62E9\u3002",surfaceChattab:"ChatTab\uFF08\u72EC\u7ACB\u9875\u9762\uFF09",surfaceTaskpanel:"Task panel\uFF08\u9762\u677F\u5185\u6D6E\u5C42\uFF09",editor:"\u7F16\u8F91\u5668",editorHint:"\u6587\u4EF6\u6811\u91CC\u6309 `e` \u7528\u4EC0\u4E48\u6253\u5F00\u6587\u4EF6\uFF08enter \u4ECD\u662F\u53EA\u8BFB\u9884\u89C8\uFF09\u3002`auto`\uFF08\u9ED8\u8BA4\uFF09\u8DDF\u968F $VISUAL / $EDITOR\uFF0C\u5426\u5219\u81EA\u52A8\u63A2\u6D4B nvim / vim / emacs / nano\u3002\u5728\u4E0B\u65B9\u4E00\u884C\u6309 enter \u5728 auto / vim / nvim / nano / emacs / custom \u95F4\u5FAA\u73AF\uFF1B\u7F16\u8F91\u5668\u672A\u5B89\u88C5\u65F6\u56DE\u9000\u5230\u9884\u89C8\u3002",editorRow:"\u7F16\u8F91\u5668: < {kind} > (enter \u5207\u6362)",editorCustom:"\u81EA\u5B9A\u4E49: {cmd}",editorCustomUnset:"(\u672A\u8BBE\u7F6E \u2014 enter \u7F16\u8F91)",worktree:"\u5DE5\u4F5C\u6811\u4F4D\u7F6E",worktreeHint:"\u65B0\u4EFB\u52A1\u5DE5\u4F5C\u6811\u7684\u521B\u5EFA\u4F4D\u7F6E\u3002\u300C\u9879\u76EE\u65C1\u8FB9\u300D= \u7D27\u6328\u5404\u81EA\u4ED3\u5E93\u5B58\u653E\uFF1B\u81EA\u5B9A\u4E49\u53EF\u586B\u4EFB\u610F\u8DEF\u5F84\uFF08`~`\u3001\u76F8\u5BF9\u8DEF\u5F84\u6216\u4EE5 `$project_dir` \u5F00\u5934\uFF09\u3002\u4EC5\u5BF9\u65B0\u4EFB\u52A1\u751F\u6548\u3002",worktreeBase:"\u4F4D\u7F6E: < {kind} > (enter \u5207\u6362)",worktreeKindDefault:"\u9ED8\u8BA4 ~/.kobe/worktrees",worktreeKindNext:"\u9879\u76EE\u65C1\u8FB9",worktreeKindCustom:"\u81EA\u5B9A\u4E49",worktreeCustom:"\u81EA\u5B9A\u4E49: {path}",worktreeCustomUnset:"(\u672A\u8BBE\u7F6E \u2014 enter \u7F16\u8F91)",worktreeBaseTitle:"\u81EA\u5B9A\u4E49\u5DE5\u4F5C\u6811\u4F4D\u7F6E\uFF08\u7559\u7A7A = \u9ED8\u8BA4\uFF1B$project_dir = \u9879\u76EE\u6839\u76EE\u5F55\uFF09",worktreeBaseField:"\u8DEF\u5F84"},engines:{title:"\u542F\u52A8\u547D\u4EE4",hint:"\u6BCF\u4E2A\u5F15\u64CE\u7684\u4EFB\u52A1\u9762\u677F\u8FD0\u884C\u7684\u547D\u4EE4\u3002\u5F53\u4E8C\u8FDB\u5236\u6587\u4EF6\u4E0D\u5728 PATH \u4E0A\u7684 `claude` / `codex` \u540D\u4E0B\uFF08\u6BD4\u5982\u53EB `cl`\uFF09\u3001\u8981\u4F20\u9ED8\u8BA4\u53C2\u6570\uFF0C\u6216\u8981\u6DFB\u52A0\u81EA\u5DF1\u7684\u5F15\u64CE\u65F6\uFF0C\u53EF\u8986\u76D6\u5185\u7F6E\u9879\u3002\u25CF = \u65B0\u4EFB\u52A1\u7684\u9ED8\u8BA4\u5F15\u64CE\uFF08\u4E5F\u53EF\u7528 Ctrl+Shift+T \u8BBE\u7F6E\uFF09\u3002enter \u7F16\u8F91\u547D\u4EE4 \xB7 r \u91CD\u547D\u540D \xB7 x \u91CD\u7F6E/\u79FB\u9664 \xB7 d \u8BBE\u4E3A\u9ED8\u8BA4\u3002",defaultTag:" (\u9ED8\u8BA4)",customTag:" (\u81EA\u5B9A\u4E49)",addEngine:"+ \u6DFB\u52A0\u5F15\u64CE"},accounts:{title:"\u8D26\u6237",hint:"\u672C\u5730\u63A2\u6D4B\u5230\u7684\u5F15\u64CE\u8D26\u6237\u7684\u53EA\u8BFB\u89C6\u56FE\u3002\u767B\u5F55\u6D41\u7A0B\u7A0D\u540E\u4F1A\u63A5\u5165\u8FD9\u91CC\u3002",checking:"\u68C0\u67E5\u4E2D\u2026",notLoggedIn:"\u25CB \u672A\u767B\u5F55",loggedIn:"\u25CF \u5DF2\u767B\u5F55: {email}",apiKeyConfigured:"\u25CF \u5DF2\u914D\u7F6E API key",chatgptLogin:"\u25CF ChatGPT \u767B\u5F55: {email}",tokenConfigured:"\u25CF \u5DF2\u914D\u7F6E Token ({source})",copilotDetected:"\u25CF \u68C0\u6D4B\u5230 Copilot \u767B\u5F55"},keybindings:{title:"\u5FEB\u6377\u952E",hint:"\u7F16\u8F91\u4E0B\u9762\u7684 YAML \u6765\u91CD\u7ED1\u5B9A\u6309\u952E\uFF0C\u7136\u540E\u91CD\u542F kobe\uFF08\u6216\u91CD\u5EFA\u9762\u677F\uFF09\u3002\u4EFB\u610F\u4F4D\u7F6E\u6309 F1 \u67E5\u770B\u5E26\u6BCF\u4E2A\u7ED1\u5B9A id \u7684\u5B9E\u65F6\u952E\u4F4D\u8868\u3002",configFile:"\u914D\u7F6E\u6587\u4EF6",notCreated:" (\u5C1A\u672A\u521B\u5EFA)",example:"\u793A\u4F8B",overridesApplied:"\u5DF2\u5E94\u7528\u7684\u8986\u76D6",none:"\u65E0",warnings:"\u8B66\u544A"},feedback:{title:"\u53CD\u9988",hint:"\u901A\u8FC7 `gh` \u5411 kobe \u4ED3\u5E93\u53D1\u4E00\u6761 GitHub Discussion\u3002\u9700\u8981 `gh auth login`\uFF1B\u5206\u7C7B\u9ED8\u8BA4\u4E3A Feedback\u3002",titleLabel:"\u6807\u9898",titlePlaceholder:"\u7B80\u77ED\u6982\u62EC",descriptionLabel:"\u63CF\u8FF0",descriptionPlaceholder:"\u53D1\u751F\u4E86\u4EC0\u4E48\uFF1F(enter \u6362\u884C \xB7 tab \u8DF3\u5230\u53D1\u9001)",send:"[enter] \u53D1\u9001\u5230 GitHub Discussions"},dev:{reset:"\u91CD\u7F6E UI \u72B6\u6001",resetHint:"\u6E05\u7A7A ~/.config/kobe/state.json \u548C ~/.kobe/tasks.json\uFF0C\u7136\u540E\u9000\u51FA kobe\u2014\u2014\u91CD\u65B0\u542F\u52A8\u5373\u53EF\u4ECE\u5934\u5F00\u59CB\u3002\u5DE5\u4F5C\u4F1A\u8BDD / \u5F52\u6863\u5217\u8868\u3001\u9762\u677F\u5C3A\u5BF8\u3001\u4E3B\u9898\u3001\u6A21\u578B\u9009\u62E9\u90FD\u4F1A\u91CD\u7F6E\u3002\u78C1\u76D8\u4E0A\u7684 worktree \u548C Claude Code \u4F1A\u8BDD\u5386\u53F2\u4E0D\u53D7\u5F71\u54CD\u3002",resetButton:"[enter] \u91CD\u7F6E",restart:"\u91CD\u542F\u540E\u7AEF",restartHint:"\u505C\u6B62 kobe daemon \u5E76\u9000\u51FA\u5F53\u524D kobe \u7A97\u53E3\uFF0C\u4E0B\u6B21\u542F\u52A8\u4F1A\u62C9\u8D77\u4E00\u4E2A\u5168\u65B0\u7684 daemon\u2014\u2014\u65E0\u9700\u6740\u8FDB\u7A0B\u5373\u53EF\u5E94\u7528 daemon / orchestrator / engine \u7684\u6539\u52A8\u3002\u5176\u4ED6\u5DF2\u8FDE\u63A5\u7684 kobe \u7A97\u53E3\u4E5F\u4F1A\u65AD\u5F00\u8FDE\u63A5\u3002",restartButton:"[enter] \u91CD\u542F",doctorHint:"daemon \u5361\u4F4F\u6216\u65E0\u54CD\u5E94\uFF1F\u5728 shell \u91CC\u8FD0\u884C `kobe doctor` \u8BCA\u65AD\uFF0C\u6216 `kobe reset` \u505C\u6B62 daemon + \u6740\u6389\u4F1A\u8BDD\uFF08\u4FDD\u7559\u4F60\u7684\u4EFB\u52A1\uFF09\u3002\u53EA\u6709\u8981\u540C\u65F6\u6E05\u7A7A\u4EFB\u52A1\u7D22\u5F15 + UI \u72B6\u6001\u65F6\u624D\u7528 `kobe reset --hard`\u3002",experimental:"\u5B9E\u9A8C\u6027",remoteHint:"\u8FDC\u7A0B\u9879\u76EE\uFF08SSH\uFF09\uFF1A\u6CE8\u518C\u4E00\u4E2A git worktree + \u5F15\u64CE\u90FD\u901A\u8FC7 SSH \u8DD1\u5728\u53E6\u4E00\u53F0\u4E3B\u673A\u4E0A\u3001\u7531\u672C\u5730 kobe \u9A71\u52A8\u7684\u9879\u76EE\u3002\u5C1A\u672A\u5B8C\u6210\u2014\u2014\u6587\u4EF6/diff \u9762\u677F\u5BF9\u8FDC\u7A0B\u4ECD\u4F1A\u964D\u7EA7\u3002\u542F\u7528 `kobe add --remote`\u3002",remoteOn:"[x] \u8FDC\u7A0B\u9879\u76EE (\u5F00)",remoteOff:"[ ] \u8FDC\u7A0B\u9879\u76EE (\u5173)",autoStatusHint:"\u81EA\u52A8\u72B6\u6001\u6D41\u8F6C\uFF1Abacklog \u4EFB\u52A1\u5728\u5176\u5F15\u64CE\u5F00\u59CB\u4E00\u8F6E\u65F6\u79FB\u5230 in_progress\uFF0C\u65B0\u7684 claude \u4F1A\u8BDD\u4F1A\u62FF\u5230\u4E00\u6761\u7CFB\u7EDF\u63D0\u793A\uFF0C\u544A\u8BC9 agent \u5B8C\u6210\u540E\u81EA\u884C\u8BBE\u4E3A in_review\u3002\u7EDD\u4E0D\u89E6\u78B0 done/canceled\u3002",autoStatusOn:"[x] \u81EA\u52A8\u72B6\u6001\u6D41\u8F6C (\u5F00)",autoStatusOff:"[ ] \u81EA\u52A8\u72B6\u6001\u6D41\u8F6C (\u5173)",dispatcherHint:"\u73B0\u573A\u7B14\u8BB0\u8C03\u5EA6\u5668\uFF1A\u4EFB\u52A1\u4F1A\u8BDD\u63D0\u4EA4\u4E00\u884C\u7ECF\u9A8C\uFF08`kobe api note`\uFF09\uFF0Cdaemon \u5C06\u6BCF\u6761\u8F6C\u53D1\u7ED9\u4ED3\u5E93\u7684\u4E3B\u4F1A\u8BDD\uFF0C\u4E3B\u4F1A\u8BDD\u518D\u628A\u5B83\u4EEC\u8F6C\u8FBE\u7ED9\u80FD\u53D7\u76CA\u7684\u8FDB\u884C\u4E2D\u4EFB\u52A1\uFF08`kobe api dispatch`\uFF09\u3002\u76EE\u524D\u7531 Web \u6258\u7BA1\u7684\u4F1A\u8BDD\u4F1A\u6536\u5230\u8F6C\u8FBE\u3002",dispatcherOn:"[x] \u73B0\u573A\u7B14\u8BB0\u8C03\u5EA6\u5668 (\u5F00)",dispatcherOff:"[ ] \u73B0\u573A\u7B14\u8BB0\u8C03\u5EA6\u5668 (\u5173)",archivedHistoryHint:"\u5F52\u6863\u5386\u53F2\u9884\u89C8\uFF08beta\uFF09\uFF1A\u6253\u5F00\u5DF2\u5F52\u6863\u7684\u4EFB\u52A1\u65F6\uFF0C\u5F15\u64CE\u4F4D\u7F6E\u6539\u4E3A\u53EA\u8BFB\u7684 `kobe history` \u9762\u677F\uFF08\u4F1A\u8BDD\u9009\u62E9\u5668 + \u5BF9\u8BDD\u8BB0\u5F55\uFF09\uFF0C\u800C\u4E0D\u662F\u91CD\u65B0\u542F\u52A8\u5F15\u64CE\u3002\u5F15\u64CE\u8BB0\u5F55\u6309 worktree \u8DEF\u5F84\u5B58\u50A8\uFF0C\u6240\u4EE5 worktree \u88AB\u5220\u9664\u540E\u5386\u53F2\u4ECD\u7136\u53EF\u8BFB\u3002\u4E0E Web \u4EEA\u8868\u76D8\u5171\u7528\u540C\u4E00\u5F00\u5173\u3002",archivedHistoryOn:"[x] \u5F52\u6863\u5386\u53F2\u9884\u89C8 (\u5F00)",archivedHistoryOff:"[ ] \u5F52\u6863\u5386\u53F2\u9884\u89C8 (\u5173)"}}});var IM,SM;var yM=C(()=>{IM={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}"}},SM={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 TM,xM;var uM=C(()=>{TM={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`"}},xM={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 RQ(J){return typeof J==="string"&&pX.some((z)=>z.id===J)}var Fx,Ox,pX,rX,oX="en";var sX=C(()=>{YM();QM();jM();WM();KM();MM();AM();NM();kM();yM();uM();Fx={settings:CM,tasks:IM,files:XM,newTask:DM,ops:FM,update:TM,quickTask:RM,help:qM,history:BM,common:zM,keys:VM},Ox={settings:bM,tasks:SM,files:GM,newTask:LM,ops:OM,update:xM,quickTask:gM,help:HM,history:fM,common:ZM,keys:UM},pX=[{id:"en",label:"English"},{id:"zh",label:"\u4E2D\u6587"}],rX={en:Fx,zh:Ox}});function gQ(J){if(rX[J])Ax("lang",J)}function v8(){return h8.lang}function EM(J,z){let Z=J;for(let Y of z.split("."))if(Z&&typeof Z==="object"&&Y in Z)Z=Z[Y];else return;return typeof Z==="string"?Z:void 0}function Rx(J,z){if(!z)return J;return J.replace(/\{(\w+)\}/g,(Z,Y)=>(Y in z)?String(z[Y]):Z)}function M(J,z){let Z=h8.lang,Y=EM(rX[Z],J)??EM(rX.en,J)??J;return Rx(Y,z)}function m8(J,z){let Z=h8.lang,Y=(X)=>{return X.keys[J]?.[z]};return Y(rX[Z])??Y(rX.en)??z}var h8,Ax;var jJ=C(()=>{_X();sX();sX();[h8,Ax]=pz({lang:oX})});import{randomBytes as hM}from"crypto";import{existsSync as c8,mkdirSync as gx,writeFileSync as Nx}from"fs";import{isAbsolute as Cx,join as bx}from"path";function Sx(J){if(J.startsWith('"')&&J.endsWith('"')||J.startsWith("'")&&J.endsWith("'"))return J.slice(1,-1);return J}function yx(J){let Z=`__DOUBLE_BACKSLASH_${hM(8).toString("hex")}__`;return J.replace(/\\\\/g,Z).replace(/\\(.)/g,"$1").replaceAll(Z,"\\")}function vM(J,z=c8){let Z=yx(Sx(J.trim()));if(!kx.test(Z))return null;if(!Cx(Z))return null;return z(Z)?Z:null}function mM(J,z=c8){let Z=J.split(`
263
+ `).map((X)=>X.trim()).filter((X)=>X.length>0);if(Z.length===0)return null;let Y=[];for(let X of Z){let G=vM(X,z);if(!G)return null;Y.push(G)}return Y}function d8(J,z){return Ix.test(J)?`pdf[${z}]`:`images[${z}]`}function cM(J,z){if(z.length===0)return J;let Z=z.map((Y,X)=>`${d8(Y,X)}: ${Y}`).join(`
264
+ `);return`${J}
265
+
266
+ ${Z}`}async function wM(J){try{let z=Bun.spawn(J,{stdin:"ignore",stdout:"pipe",stderr:"ignore"}),Z=await new Response(z.stdout).text();return await z.exited===0?Z:null}catch{return null}}async function dM(){if(process.platform==="darwin"){let J=await wM(["osascript","-e","get POSIX path of (the clipboard as \xABclass furl\xBB)"]),z=J?vM(J):null;if(z)return z;let Z=PM();return await wM(["osascript","-e","set png_data to (the clipboard as \xABclass PNGf\xBB)","-e",`set fp to open for access POSIX file "${Z}" with write permission`,"-e","write png_data to fp","-e","close access fp"])!==null&&c8(Z)?Z:null}if(process.platform==="linux"){for(let J of[["wl-paste","--type","image/png"],["xclip","-selection","clipboard","-t","image/png","-o"]])try{let z=Bun.spawn(J,{stdin:"ignore",stdout:"pipe",stderr:"ignore"}),Z=new Uint8Array(await new Response(z.stdout).arrayBuffer());if(await z.exited===0&&Z.length>0){let Y=PM();return Nx(Y,Z),Y}}catch{}return null}return null}function PM(){let J=DV();gx(J,{recursive:!0});let z=new Date().toISOString().slice(0,10).replaceAll("-","");return bx(J,`paste-${z}-${hM(4).toString("hex")}.png`)}var kx,Ix;var n8=C(()=>{t1();kx=/\.(png|jpe?g|gif|webp|pdf)$/i,Ix=/\.pdf$/i});function Tx(J){let z=[],Z=J.name;if(Z)z.push(Z);if(Z==="return")z.push("enter");if(Z==="enter")z.push("return");let Y=[];if(J.ctrl)Y.push("ctrl");if(J.meta)Y.push("cmd");if(J.option)Y.push("alt");if(J.shift&&Z&&Z.length>1)Y.push("shift");if(Y.length===0)return z;let X=`${Y.join("+")}+`;return z.map((G)=>X+G)}function l8(J,z){if(z.defaultPrevented)return!1;if(i8)return!1;let Z=J.slice(),Y=Tx(z);i8=!0;try{for(let X=Z.length-1;X>=0;X--){let G=Z[X];if(!G)continue;let q=G.config();if(q.enabled===!1)continue;let H=q.bindings.find((j)=>Y.includes(j.key));if(H)return H.cmd(z,H.slot),z.preventDefault(),!0}return!1}finally{i8=!1}}var i8=!1;function ux(){if($8)return;let J=VJ();if(!J)throw Error("useBindings: no renderer in scope; call inside a component rendered by @opentui/solid.");$8=J.keyInput,nM=(z)=>{l8(Lj,z)},$8.on("keypress",nM)}function F1(J){ux();let z=xx++,Z={config:J,id:z};d0(()=>{J()}),Lj.push(Z),b1(()=>{let Y=Lj.findIndex((X)=>X.id===z);if(Y>=0)Lj.splice(Y,1)})}var xx=1,Lj,$8=null,nM=null;var IJ=C(()=>{P();D1();Lj=[]});function Mj(){let J=new Set;function z(Y,X){let G=setTimeout(()=>{J.delete(G),Y()},X);return J.add(G),G}function Z(Y){if(J.delete(Y))clearTimeout(Y)}return b1(()=>{for(let Y of J)clearTimeout(Y);J.clear()}),{set:z,clear:Z}}var a8=C(()=>{D1()});import{RGBA as iM}from"@opentui/core";function Px(J){let z=_z(),Z=w0(),{theme:Y}=Z,X=VJ(),G=!1,q=()=>{if(J.size==="xlarge")return 140;if(J.size==="large")return 110;if(J.size==="small")return 50;return 80},H=2,j=()=>Math.max(8,z().height-H*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",(f)=>{G=!1,f.stopPropagation()}),Q(V,"flexShrink",1),Q(V,"flexGrow",0),Q(V,"paddingTop",1),K(V,()=>J.children),u((f)=>{var U=z().width,L=z().height,O=Z.transparentBackground?wx:Ex,A=q(),g=z().width-2,E=j(),h=Y.backgroundDialog;return U!==f.e&&(f.e=Q(B,"width",U,f.e)),L!==f.t&&(f.t=Q(B,"height",L,f.t)),O!==f.a&&(f.a=Q(B,"backgroundColor",O,f.a)),A!==f.o&&(f.o=Q(V,"width",A,f.o)),g!==f.i&&(f.i=Q(V,"maxWidth",g,f.i)),E!==f.n&&(f.n=Q(V,"maxHeight",E,f.n)),h!==f.s&&(f.s=Q(V,"backgroundColor",h,f.s)),f},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),B})()}function hx(){let[J,z]=pz({stack:[],size:"medium"}),Z=VJ(),Y=null,X=Mj();function G(){X.set(()=>{if(!Y)return;if(Y.isDestroyed)return;function H(B){for(let V of B.getChildren()){if(V===Y)return!0;if(H(V))return!0}return!1}let j=Z?.root;if(!j)return;if(!H(j))return;Y.focus()},1)}let q=()=>{if(Z?.getSelection())Z.clearSelection();J.stack.at(-1)?.onClose?.(),z("stack",J.stack.slice(0,-1)),G()};return F1(()=>({enabled:J.stack.length>0&&!Z?.getSelection()?.getSelectedText(),bindings:[{key:"escape",cmd:q},{key:"ctrl+c",cmd:q}]})),{clear(){for(let H of J.stack)H.onClose?.();Eq(()=>{z("size","medium"),z("stack",[])}),G()},replace(H,j){if(J.stack.length===0)Y=Z?.currentFocusedRenderable??null,Y?.blur();for(let B of J.stack)B.onClose?.();z("size","medium"),z("stack",[{element:H,onClose:j}])},push(H,j){if(J.stack.length===0)Y=Z?.currentFocusedRenderable??null,Y?.blur();z("stack",[...J.stack,{element:H,onClose:j}])},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(H){z("size",H)}}}function $M(J){let z=hx();return k(lM.Provider,{value:z,get children(){return[C0(()=>J.children),(()=>{var Z=W("box");return Q(Z,"position","absolute"),Q(Z,"zIndex",3000),K(Z,k(Y0,{get when(){return z.stack.length},get children(){return k(Px,{onClose:()=>z.clear(),get size(){return z.size},get children(){return z.stack.at(-1).element()}})}})),Z})()]}})}function a1(){let J=lJ(lM);if(!J)throw Error("useDialog must be used within a DialogProvider");return J}var Ex,wx,lM;var rJ=C(()=>{P();P();P();P();P();P();P();P();D1();_X();d1();IJ();a8();Ex=iM.fromInts(0,0,0,128),wx=iM.fromInts(0,0,0,64);lM=hz()});import{spawnSync as _8}from"child_process";import*as _M from"fs";function aM(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 pM(J){let z=J.trim();if(!z)return"repo path is required";let Z;try{Z=_M.statSync(z)}catch{return`path does not exist: ${z}`}if(!Z.isDirectory())return`not a directory: ${z}`;try{if(_8("git",["rev-parse","--git-dir"],{cwd:z,encoding:"utf-8",timeout:2000,stdio:["ignore","pipe","ignore"]}).status!==0)return aM(z)}catch{return aM(z)}return null}function NQ(J){if(!J)return null;try{let z=_8("git",["rev-parse","--abbrev-ref","HEAD"],{cwd:J,encoding:"utf-8",timeout:2000,stdio:["ignore","pipe","ignore"]});if(z.status!==0)return null;let Z=z.stdout.trim();if(!Z||Z==="HEAD")return null;return Z}catch{return null}}function rM(J){if(!J)return[];try{let z=_8("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(`
267
+ `).map((Z)=>Z.trim()).filter(Boolean).sort((Z,Y)=>{let X=(H)=>H==="main"?0:H==="master"?1:H==="develop"?2:3,G=X(Z),q=X(Y);if(G!==q)return G-q;return Z.localeCompare(Y)})}catch{return[]}}var xz="main";var Fj=()=>{};import*as oM from"fs";import*as Oj from"os";function LJ(J){if(J==="~")return Oj.homedir();if(J.startsWith("~/"))return Oj.homedir()+J.slice(1);return J}function p8(J){if(!J)return{base:"",filter:""};let Z=LJ(J==="~"?"~/":J);if(Z.endsWith("/"))return{base:Z,filter:""};let Y=Z.lastIndexOf("/");if(Y===-1)return{base:"",filter:Z};return{base:Z.slice(0,Y+1),filter:Z.slice(Y+1)}}function r8(J){if(!J)return[];try{let z=oM.readdirSync(J,{withFileTypes:!0}),Z=[];for(let Y of z)if(Y.isDirectory())Z.push(Y.name);return Z.sort((Y,X)=>Y.localeCompare(X))}catch{return[]}}function o8(J,z){let Z=z.toLowerCase(),X=Z.startsWith(".")?J:J.filter((G)=>!G.startsWith("."));if(!Z)return X;return X.filter((G)=>G.toLowerCase().startsWith(Z))}function CQ(J,z,Z){let Y=z+Z;if(J.startsWith("~")){let X=Oj.homedir();if(Y===X)return"~";if(Y.startsWith(`${X}/`))return`~${Y.slice(X.length)}`}return Y}var Aj=()=>{};import{spawn as vx}from"child_process";import*as cY from"fs";import*as bQ from"path";function sM(J){let z=J.trim().replace(/\/+$/,"");if(!z)return"";let Z=z.lastIndexOf("/"),Y=z.lastIndexOf(":"),X=Math.max(Z,Y);return(X>=0?z.slice(X+1):z).replace(/\.git$/i,"")}function tM(J){let z=J.trim();if(!z)return M("newTask.error.gitUrlRequired");let Z=z.includes("://"),Y=z.includes("@")&&z.includes(":"),X=z.includes("/");if(!Z&&!Y&&!X)return M("newTask.error.gitUrlInvalid",{url:z});return null}function s8(J,z){let Z=z.trim();if(!Z)return M("newTask.error.folderRequired");if(Z.includes("/")||Z.includes("\\"))return M("newTask.error.folderHasSeparator");let Y=J.trim();if(!Y)return M("newTask.error.parentRequired");let X=LJ(Y),G;try{G=cY.statSync(X)}catch{return M("newTask.error.parentNotFound",{path:X})}if(!G.isDirectory())return M("newTask.error.parentNotDir",{path:X});let q=bQ.join(X,Z);if(cY.existsSync(q))return M("newTask.error.targetExists",{path:q});return null}function eM(J,z){return bQ.join(LJ(J.trim()),z.trim())}function JF(J,z){let Z=z.trim();if(!Z)return z;let Y=LJ(J.trim());if(!Y)return z;try{if(!cY.statSync(Y).isDirectory())return z}catch{return z}if(!cY.existsSync(bQ.join(Y,Z)))return Z;for(let X=2;X<1000;X++){let G=`${Z}-${X}`;if(!cY.existsSync(bQ.join(Y,G)))return G}return Z}function zF(J,z,Z){return new Promise((Y)=>{let X="";try{let G=vx("git",["clone","--progress",J,z],{stdio:["ignore","ignore","pipe"],env:{...process.env,GIT_TERMINAL_PROMPT:"0",GIT_ASKPASS:""}});G.stderr?.setEncoding("utf-8"),G.stderr?.on("data",(q)=>{if(X+=q,Z){let H=q.split(/[\r\n]+/).filter((B)=>B.trim().length>0),j=H[H.length-1];if(j)Z(j)}}),G.on("error",(q)=>{Y({ok:!1,error:q.message})}),G.on("close",(q)=>{if(q===0){Y({ok:!0,path:z});return}let H=X.split(/[\r\n]+/).filter((j)=>j.trim().length>0).pop()??`git clone exited with ${q}`;Y({ok:!1,error:H})})}catch(G){Y({ok:!1,error:G instanceof Error?G.message:String(G)})}})}var ZF=C(()=>{jJ();Aj()});function t8(J){if(J==="existing")return"clone";if(J==="clone")return"adopt";return"existing"}function e8(J){if(J==="existing")return"adopt";if(J==="clone")return"existing";return"clone"}function YF(J,z){let Z=J.trim();if(z.includes(Z))return"saved";if(Z.startsWith("~"))return"browse";if(Z.includes("/"))return"browse";return"saved"}function CJ(J){return J.replace(/[\r\n]+/g,"")}function kQ(J){return!/\S/u.test(J)}function JW(J,z="existing"){if(J==="confirm")return"tabs";if(J==="tabs")return"engine";if(J==="engine")return zW(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 zW(J){if(J==="clone")return"cloneUrl";if(J==="adopt")return"adoptFilter";return"repo"}function XF(J,z){let Z=z.trim();if(!Z)return J;return J.filter((Y)=>hQ(Z,Y.path))}function GF(J,z){let Z=new Set,Y=[];for(let X of[J,...z]){let G=X.trim();if(!G||Z.has(G))continue;Z.add(G),Y.push(G)}return Y}function QF(J,z){let Z=z.trim().toLowerCase();if(!Z)return J;return J.filter((Y)=>Y.toLowerCase().includes(Z))}function qF(J,z){let Z=z.trim().toLowerCase();if(!Z)return J;return J.filter((Y)=>Y.toLowerCase().includes(Z))}function IQ(J,z,Z=mx){let Y=J.length;if(Y<=Z)return{items:J,start:0,total:Y};let X=Math.floor(Z/2),G=Math.max(0,z-X);if(G+Z>Y)G=Y-Z;return{items:J.slice(G,G+Z),start:G,total:Y}}function rz(J,z){if(z<=0)return 0;return Math.max(0,Math.min(z-1,J))}function HF(J,z,Z){let Y=J.trim(),X=Y.toLowerCase(),G=Y?z.find((H)=>H.toLowerCase()===X):void 0;if(G)return G;let q=z[Z];if(q)return q;return Y||xz}var mx=8;var ZW=C(()=>{ej();Fj()});import{TextAttributes as jz}from"@opentui/core";function jF(J){let z=a1(),{theme:Z}=w0(),[Y,X]=s("existing"),G=()=>{let a=J.availableVendors;return a&&a.length>0?a:o1},q=(()=>{let a=G(),R0=J.defaultVendor??"claude";return a.includes(R0)?R0:a[0]??"claude"})(),[H,j]=s(q),[B,V]=s("tabs"),[f,U]=s(J.defaultRepo),[L,O]=s(NQ(LJ(J.defaultRepo.trim()))??xz),[A,g]=s(!1),[E,h]=s(""),[I,N]=s(J.defaultCloneParent?.trim()?J.defaultCloneParent:"~/"),[F,y]=s(""),[c,d]=s(!1),[l,t]=s(xz),[X0,q0]=s(!1),[f0,_]=s(""),O0=K0(()=>GF(J.defaultRepo,J.savedRepos)),b=K0(()=>YF(f(),O0())),p=K0(()=>p8(f())),w=K0(()=>r8(p().base)),R=K0(()=>o8(w(),p().filter)),e=K0(()=>QF(O0(),f())),x=K0(()=>b()==="browse"?R():e()),[$,G0]=s(0),H0=K0(()=>IQ(x(),$())),[L0,F0]=s(!1),E0=K0(()=>rM(LJ(f().trim()))),b0=K0(()=>qF(E0(),L())),[e0,j1]=s(0),k0=K0(()=>IQ(b0(),e0())),h0=K0(()=>p8(I())),N0=K0(()=>r8(h0().base)),o0=K0(()=>o8(N0(),h0().filter)),[m,j0]=s(0),z0=K0(()=>IQ(o0(),m())),[x0,n]=s(!1),[W0,S0]=s(""),[i0,Z1]=s(0),[l0,X1]=s(new Set),[R1]=VY(()=>Y()==="adopt"?LJ(f().trim()):null,async(a)=>J.discoverAdoptable?await J.discoverAdoptable(a):[]),O1=K0(()=>XF(R1()??[],W0())),Z0=K0(()=>IQ(O1().map((a)=>a.path),i0())),Q0=K0(()=>{let a=Z0();return O1().slice(a.start,a.start+a.items.length)});d0(()=>{O1(),Z1((a)=>rz(a,O1().length))}),d0((a)=>{let R0=LJ(f().trim());if(a!==void 0&&R0!==a)X1(new Set),Z1(0);return R0});function U0(a){X1((R0)=>{let J0=new Set(R0);if(J0.has(a))J0.delete(a);else J0.add(a);return J0})}function g0(){let a=O1()[i0()];if(a)U0(a.path)}d0(()=>{b0(),j1(0)}),d0(()=>{let a=LJ(f().trim());if(!a)return;if(A())return;let R0=NQ(a);if(R0)O(R0)}),d0(()=>{x(),G0(0)}),d0(()=>{o0(),j0(0)}),d0(()=>{let a=E(),R0=I();if(c())return;let J0=sM(a);y(JF(R0,J0))});let[V0,P0]=s(null);d0(()=>{f(),E(),I(),F(),W0(),P0(null)});function I0(){let a=LJ(f().trim());if(!a)return;let R0=pM(a);if(R0){P0(R0),V("repo");return}let J0=L().trim()||xz;J.onSubmit({repo:a,baseRef:J0,vendor:H()}),z.clear()}async function p0(){if(X0())return;let a=tM(E());if(a){P0(a),V("cloneUrl");return}let R0=s8(I(),F());if(R0){P0(R0);let g1=F().trim(),v1=!(!g1||g1.includes("/")||g1.includes("\\"))&&s8(I(),"__kobe_probe__")!=null;V(v1?"cloneParent":"cloneFolder");return}let J0=eM(I(),F());q0(!0),_(M("newTask.clone.progressInto",{target:J0}));let T=await zF(E().trim(),J0,(g1)=>{_(g1)});if(q0(!1),!T.ok){P0(M("newTask.error.cloneFailed",{error:T.error})),V("cloneUrl");return}let D0=l().trim()||xz,T1=LJ(I().trim());J.onSubmit({repo:T.path,baseRef:D0,vendor:H(),cloned:{parentDir:T1}}),z.clear()}function y0(){let a=O1();if(a.length===0){P0(M("newTask.error.noAdoptable"));return}let R0=l0(),J0=R0.size>0?a.filter((T)=>R0.has(T.path)):a.slice(i0(),i0()+1);if(J0.length===0)return;J.onSubmit({mode:"adopt",repo:LJ(f().trim()),vendor:H(),adopt:J0.map((T)=>({worktreePath:T.path,branch:T.branch}))}),z.clear()}function u0(){if(Y()==="clone"){p0();return}if(Y()==="adopt"){y0();return}I0()}function Q1(a){if(X0())return;if(a===Y())return;X(a),V(zW(a)),P0(null)}function W1(a){if(X0())return;let R0=a===1?t8(Y()):e8(Y());if(R0===Y())return;X(R0),P0(null),V("tabs")}function V1(a){j((R0)=>a===1?gZ(G(),R0):J9(G(),R0))}function q1(){if(!f().trim()&&b()==="saved"){let R0=x()[0];if(R0){U(R0),V("baseRef");return}}if(b()==="browse"){let J0=R()[$()],T=p();if(J0){U(CQ(f(),T.base,J0)),G0(0),F0(!0),V("baseRef");return}V("baseRef");return}let a=x()[$()];if(a){U(a),V("baseRef");return}V("baseRef")}function S(a){let J0=x()[a];if(!J0)return;if(b()==="browse"){let T=p();U(CQ(f(),T.base,J0)),G0(a),F0(!0),V("baseRef");return}U(J0),G0(a),V("baseRef")}function M0(){let R0=o0()[m()],J0=h0();if(R0){N(CQ(I(),J0.base,R0)),j0(0),n(!0),V("cloneFolder");return}V("cloneFolder")}function U1(a){let J0=o0()[a];if(!J0)return;let T=h0();N(CQ(I(),T.base,J0)),j0(a),n(!0),V("cloneFolder")}let L1=()=>{let a=O1();if(a.length===0)return;let R0=a.every((J0)=>l0().has(J0.path));X1(R0?new Set:new Set(a.map((J0)=>J0.path)))};F1(()=>({bindings:[{key:"tab",cmd:()=>V((a)=>JW(a,Y()))},{key:"ctrl+]",cmd:()=>Q1(t8(Y()))},{key:"ctrl+[",cmd:()=>Q1(e8(Y()))},{key:"ctrl+e",cmd:()=>j((a)=>gZ(G(),a))},{key:"up",cmd:()=>{if(X0())return;if(Y()==="existing"&&B()==="repo"){let a=x();if(a.length===0)return;G0(rz($()-1,a.length));return}if(Y()==="existing"&&B()==="baseRef"){let a=b0();if(a.length===0)return;j1(rz(e0()-1,a.length));return}if(Y()==="clone"&&B()==="cloneParent"){let a=o0();if(a.length===0)return;j0(rz(m()-1,a.length));return}if(Y()==="adopt"){let a=O1();if(a.length===0)return;Z1(rz(i0()-1,a.length))}}},{key:"down",cmd:()=>{if(X0())return;if(Y()==="existing"&&B()==="repo"){let a=x();if(a.length===0)return;G0(rz($()+1,a.length));return}if(Y()==="existing"&&B()==="baseRef"){let a=b0();if(a.length===0)return;j1(rz(e0()+1,a.length));return}if(Y()==="clone"&&B()==="cloneParent"){let a=o0();if(a.length===0)return;j0(rz(m()+1,a.length));return}if(Y()==="adopt"){let a=O1();if(a.length===0)return;Z1(rz(i0()+1,a.length))}}},...B()==="tabs"||B()==="engine"?[{key:"left",cmd:()=>B()==="tabs"?W1(-1):V1(-1)},{key:"right",cmd:()=>B()==="tabs"?W1(1):V1(1)},{key:"return",cmd:()=>V((a)=>JW(a,Y()))}]:[],...Y()==="adopt"?[{key:"ctrl+a",cmd:L1}]:[]]})),F1(()=>({enabled:B()==="confirm"&&!X0(),bindings:[{key:"return",cmd:()=>u0()}]}));let c0=(a)=>B()===a?Z.primary:Z.textMuted,t0=(a)=>B()===a?jz.BOLD|jz.UNDERLINE:void 0,v0=(a,R0)=>a?R0?jz.BOLD|jz.UNDERLINE:jz.BOLD:void 0;return(()=>{var a=W("box"),R0=W("box"),J0=W("text"),T=W("box"),D0=W("box"),T1=W("text"),g1=W("box"),i1=W("box"),v1=W("text"),BJ=W("box"),mJ=W("text"),B1=W("text");return D(a,R0),D(a,T),D(a,BJ),Q(a,"paddingLeft",2),Q(a,"paddingRight",2),Q(a,"gap",0),D(R0,J0),Q(R0,"flexDirection","row"),K(J0,()=>M("newTask.title")),D(T,D0),Q(T,"gap",1),Q(T,"paddingTop",1),Q(T,"paddingBottom",1),K(T,()=>{let i=()=>B()==="tabs",r=(o)=>o?Z.primary:Z.textMuted;return(()=>{var o=W("box"),v=W("text"),$0=W("text"),m0=W("text");return D(o,v),D(o,$0),D(o,m0),Q(o,"flexDirection","row"),Q(o,"gap",2),Q(v,"onMouseUp",()=>Q1("existing")),K(v,(()=>{var A0=C0(()=>Y()==="existing");return()=>A0()?`\u25B8 ${M("newTask.tabs.existing")}`:` ${M("newTask.tabs.existing")}`})()),Q($0,"onMouseUp",()=>Q1("clone")),K($0,(()=>{var A0=C0(()=>Y()==="clone");return()=>A0()?`\u25B8 ${M("newTask.tabs.clone")}`:` ${M("newTask.tabs.clone")}`})()),Q(m0,"onMouseUp",()=>Q1("adopt")),K(m0,(()=>{var A0=C0(()=>Y()==="adopt");return()=>A0()?`\u25B8 ${M("newTask.tabs.adopt")}`:` ${M("newTask.tabs.adopt")}`})()),u((A0)=>{var a0=r(Y()==="existing"),K1=v0(Y()==="existing",i()),C1=r(Y()==="clone"),FJ=v0(Y()==="clone",i()),Wz=r(Y()==="adopt"),RZ=v0(Y()==="adopt",i());return a0!==A0.e&&(A0.e=Q(v,"fg",a0,A0.e)),K1!==A0.t&&(A0.t=Q(v,"attributes",K1,A0.t)),C1!==A0.a&&(A0.a=Q($0,"fg",C1,A0.a)),FJ!==A0.o&&(A0.o=Q($0,"attributes",FJ,A0.o)),Wz!==A0.i&&(A0.i=Q(m0,"fg",Wz,A0.i)),RZ!==A0.n&&(A0.n=Q(m0,"attributes",RZ,A0.n)),A0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),o})()},D0),D(D0,T1),D(D0,g1),Q(D0,"gap",0),K(T1,()=>M("newTask.field.engine")),D(g1,i1),D(g1,v1),Q(g1,"flexDirection","row"),Q(g1,"gap",2),K(g1,k(Y1,{get each(){return G()},children:(i)=>{let r=()=>H()===i;return(()=>{var o=W("text");return Q(o,"onMouseUp",()=>j(i)),K(o,()=>r()?"\u25B8 ":" ",null),K(o,i,null),u((v)=>{var $0=r()?Z.primary:Z.textMuted,m0=r()?jz.BOLD:void 0;return $0!==v.e&&(v.e=Q(o,"fg",$0,v.e)),m0!==v.t&&(v.t=Q(o,"attributes",m0,v.t)),v},{e:void 0,t:void 0}),o})()}}),i1),Q(i1,"flexGrow",1),K(v1,()=>M("newTask.hint.engineCycle")),K(T,k(Y0,{get when(){return Y()==="existing"},get children(){return[(()=>{var i=W("box"),r=W("text"),o=W("input");return D(i,r),D(i,o),Q(i,"gap",0),K(r,()=>M("newTask.field.repo")),Q(o,"onInput",(v)=>{F0(!1),U(CJ(v))}),Q(o,"onSubmit",()=>q1()),u((v)=>{var $0=c0("repo"),m0=t0("repo"),A0=f(),a0=J.defaultRepo,K1=B()==="repo";return $0!==v.e&&(v.e=Q(r,"fg",$0,v.e)),m0!==v.t&&(v.t=Q(r,"attributes",m0,v.t)),A0!==v.a&&(v.a=Q(o,"value",A0,v.a)),a0!==v.o&&(v.o=Q(o,"placeholder",a0,v.o)),K1!==v.i&&(v.i=Q(o,"focused",K1,v.i)),v},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),i})(),k(Y0,{get when(){return C0(()=>B()==="repo"&&x().length>0)()&&!L0()},get children(){var i=W("box");return Q(i,"gap",0),Q(i,"paddingLeft",2),K(i,k(Y0,{get when(){return H0().start>0},get children(){var r=W("text");return Q(r,"wrapMode","none"),K(r,()=>M("newTask.picker.moreAbove",{count:H0().start})),u((o)=>Q(r,"fg",Z.textMuted,o)),r}}),null),K(i,k(Y1,{get each(){return H0().items},children:(r,o)=>{let v=()=>H0().start+o(),$0=()=>v()===$(),m0=()=>b()==="saved"&&r===J.defaultRepo,A0=()=>b()==="saved"&&f().trim()===r,a0=()=>b()==="browse"?"/":"",K1=()=>m0()?` ${M("newTask.hint.currentDir")}`:"";return(()=>{var C1=W("text");return Q(C1,"wrapMode","none"),Q(C1,"onMouseUp",()=>S(v())),K(C1,()=>$0()?"\u25B8 ":" ",null),K(C1,r,null),K(C1,a0,null),K(C1,K1,null),u((FJ)=>{var Wz=$0()?Z.primary:A0()?Z.accent:Z.textMuted,RZ=$0()?jz.BOLD:void 0;return Wz!==FJ.e&&(FJ.e=Q(C1,"fg",Wz,FJ.e)),RZ!==FJ.t&&(FJ.t=Q(C1,"attributes",RZ,FJ.t)),FJ},{e:void 0,t:void 0}),C1})()}}),null),K(i,k(Y0,{get when(){return H0().start+H0().items.length<H0().total},get children(){var r=W("text");return Q(r,"wrapMode","none"),K(r,()=>M("newTask.picker.moreBelow",{count:H0().total-H0().start-H0().items.length})),u((o)=>Q(r,"fg",Z.textMuted,o)),r}}),null),i}}),(()=>{var i=W("box"),r=W("text"),o=W("input");return D(i,r),D(i,o),Q(i,"gap",0),K(r,()=>M("newTask.field.fromBranch")),Q(o,"placeholder",xz),Q(o,"onInput",(v)=>{g(!0),O(CJ(v))}),Q(o,"onSubmit",()=>{O(HF(L(),b0(),e0())),g(!0),I0()}),u((v)=>{var $0=c0("baseRef"),m0=t0("baseRef"),A0=L(),a0=B()==="baseRef";return $0!==v.e&&(v.e=Q(r,"fg",$0,v.e)),m0!==v.t&&(v.t=Q(r,"attributes",m0,v.t)),A0!==v.a&&(v.a=Q(o,"value",A0,v.a)),a0!==v.o&&(v.o=Q(o,"focused",a0,v.o)),v},{e:void 0,t:void 0,a:void 0,o:void 0}),i})(),k(Y0,{get when(){return C0(()=>B()==="baseRef"&&b0().length===0)()&&V0()==null},get children(){var i=W("box"),r=W("text");return D(i,r),Q(i,"gap",0),Q(i,"paddingLeft",2),Q(i,"paddingBottom",1),Q(r,"wrapMode","none"),K(r,(()=>{var o=C0(()=>E0().length===0);return()=>o()?M("newTask.hint.noBranchesFound"):M("newTask.hint.noMatchBranch")})()),u((o)=>Q(r,"fg",Z.textMuted,o)),i}}),k(Y0,{get when(){return C0(()=>B()==="baseRef")()&&b0().length>0},get children(){var i=W("box");return Q(i,"gap",0),Q(i,"paddingLeft",2),Q(i,"paddingBottom",1),K(i,k(Y0,{get when(){return k0().start>0},get children(){var r=W("text");return Q(r,"wrapMode","none"),K(r,()=>M("newTask.picker.moreAbove",{count:k0().start})),u((o)=>Q(r,"fg",Z.textMuted,o)),r}}),null),K(i,k(Y1,{get each(){return k0().items},children:(r,o)=>{let v=()=>k0().start+o(),$0=()=>v()===e0(),m0=()=>L().trim()===r;return(()=>{var A0=W("text");return Q(A0,"wrapMode","none"),Q(A0,"onMouseUp",()=>{O(r),g(!0),j1(v()),V("confirm")}),K(A0,()=>$0()?"\u25B8 ":" ",null),K(A0,r,null),u((a0)=>{var K1=$0()?Z.primary:m0()?Z.accent:Z.textMuted,C1=$0()?jz.BOLD:void 0;return K1!==a0.e&&(a0.e=Q(A0,"fg",K1,a0.e)),C1!==a0.t&&(a0.t=Q(A0,"attributes",C1,a0.t)),a0},{e:void 0,t:void 0}),A0})()}}),null),K(i,k(Y0,{get when(){return k0().start+k0().items.length<k0().total},get children(){var r=W("text");return Q(r,"wrapMode","none"),K(r,()=>M("newTask.picker.moreBelow",{count:k0().total-k0().start-k0().items.length})),u((o)=>Q(r,"fg",Z.textMuted,o)),r}}),null),i}})]}}),null),K(T,k(Y0,{get when(){return Y()==="clone"},get children(){return[(()=>{var i=W("box"),r=W("text"),o=W("input");return D(i,r),D(i,o),Q(i,"gap",0),K(r,()=>M("newTask.field.gitUrl")),Q(o,"placeholder","https://github.com/user/repo.git"),Q(o,"onInput",(v)=>h(CJ(v))),Q(o,"onSubmit",()=>{if(!E().trim())return;V("cloneParent")}),u((v)=>{var $0=c0("cloneUrl"),m0=t0("cloneUrl"),A0=E(),a0=B()==="cloneUrl";return $0!==v.e&&(v.e=Q(r,"fg",$0,v.e)),m0!==v.t&&(v.t=Q(r,"attributes",m0,v.t)),A0!==v.a&&(v.a=Q(o,"value",A0,v.a)),a0!==v.o&&(v.o=Q(o,"focused",a0,v.o)),v},{e:void 0,t:void 0,a:void 0,o:void 0}),i})(),(()=>{var i=W("box"),r=W("text"),o=W("input");return D(i,r),D(i,o),Q(i,"gap",0),K(r,()=>M("newTask.field.parentDir")),Q(o,"placeholder","~/"),Q(o,"onInput",(v)=>{n(!1),N(CJ(v))}),Q(o,"onSubmit",()=>M0()),u((v)=>{var $0=c0("cloneParent"),m0=t0("cloneParent"),A0=I(),a0=B()==="cloneParent";return $0!==v.e&&(v.e=Q(r,"fg",$0,v.e)),m0!==v.t&&(v.t=Q(r,"attributes",m0,v.t)),A0!==v.a&&(v.a=Q(o,"value",A0,v.a)),a0!==v.o&&(v.o=Q(o,"focused",a0,v.o)),v},{e:void 0,t:void 0,a:void 0,o:void 0}),i})(),k(Y0,{get when(){return B()==="cloneParent"},get children(){var i=W("box"),r=W("text");return D(i,r),Q(i,"paddingLeft",2),Q(r,"wrapMode","none"),K(r,()=>M("newTask.hint.remembered")),u((o)=>Q(r,"fg",Z.textMuted,o)),i}}),k(Y0,{get when(){return C0(()=>B()==="cloneParent"&&o0().length>0)()&&!x0()},get children(){var i=W("box");return Q(i,"gap",0),Q(i,"paddingLeft",2),K(i,k(Y0,{get when(){return z0().start>0},get children(){var r=W("text");return Q(r,"wrapMode","none"),K(r,()=>M("newTask.picker.moreAbove",{count:z0().start})),u((o)=>Q(r,"fg",Z.textMuted,o)),r}}),null),K(i,k(Y1,{get each(){return z0().items},children:(r,o)=>{let v=()=>z0().start+o(),$0=()=>v()===m();return(()=>{var m0=W("text"),A0=T0("/");return D(m0,A0),Q(m0,"wrapMode","none"),Q(m0,"onMouseUp",()=>U1(v())),K(m0,()=>$0()?"\u25B8 ":" ",A0),K(m0,r,A0),u((a0)=>{var K1=$0()?Z.primary:Z.textMuted,C1=$0()?jz.BOLD:void 0;return K1!==a0.e&&(a0.e=Q(m0,"fg",K1,a0.e)),C1!==a0.t&&(a0.t=Q(m0,"attributes",C1,a0.t)),a0},{e:void 0,t:void 0}),m0})()}}),null),K(i,k(Y0,{get when(){return z0().start+z0().items.length<z0().total},get children(){var r=W("text");return Q(r,"wrapMode","none"),K(r,()=>M("newTask.picker.moreBelow",{count:z0().total-z0().start-z0().items.length})),u((o)=>Q(r,"fg",Z.textMuted,o)),r}}),null),i}}),(()=>{var i=W("box"),r=W("text"),o=W("input");return D(i,r),D(i,o),Q(i,"gap",0),K(r,()=>M("newTask.field.folderName")),Q(o,"onInput",(v)=>{d(!0),y(CJ(v))}),Q(o,"onSubmit",()=>V("cloneBaseRef")),u((v)=>{var $0=c0("cloneFolder"),m0=t0("cloneFolder"),A0=F(),a0=M("newTask.placeholder.folderName"),K1=B()==="cloneFolder";return $0!==v.e&&(v.e=Q(r,"fg",$0,v.e)),m0!==v.t&&(v.t=Q(r,"attributes",m0,v.t)),A0!==v.a&&(v.a=Q(o,"value",A0,v.a)),a0!==v.o&&(v.o=Q(o,"placeholder",a0,v.o)),K1!==v.i&&(v.i=Q(o,"focused",K1,v.i)),v},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),i})(),(()=>{var i=W("box"),r=W("text"),o=W("input");return D(i,r),D(i,o),Q(i,"gap",0),K(r,()=>M("newTask.field.baseBranch")),Q(o,"placeholder",xz),Q(o,"onInput",(v)=>t(CJ(v))),Q(o,"onSubmit",()=>void p0()),u((v)=>{var $0=c0("cloneBaseRef"),m0=t0("cloneBaseRef"),A0=l(),a0=B()==="cloneBaseRef";return $0!==v.e&&(v.e=Q(r,"fg",$0,v.e)),m0!==v.t&&(v.t=Q(r,"attributes",m0,v.t)),A0!==v.a&&(v.a=Q(o,"value",A0,v.a)),a0!==v.o&&(v.o=Q(o,"focused",a0,v.o)),v},{e:void 0,t:void 0,a:void 0,o:void 0}),i})(),k(Y0,{get when(){return X0()},get children(){var i=W("box"),r=W("text");return D(i,r),Q(i,"gap",0),Q(i,"paddingLeft",2),Q(r,"wrapMode","none"),K(r,()=>f0()||M("newTask.clone.progressFallback")),u((o)=>Q(r,"fg",Z.textMuted,o)),i}})]}}),null),K(T,k(Y0,{get when(){return Y()==="adopt"},get children(){return[(()=>{var i=W("box"),r=W("text"),o=W("input");return D(i,r),D(i,o),Q(i,"gap",0),K(r,()=>M("newTask.field.adoptFilter")),Q(o,"onInput",(v)=>S0(CJ(v))),Q(o,"onSubmit",()=>g0()),u((v)=>{var $0=c0("adoptFilter"),m0=t0("adoptFilter"),A0=W0(),a0=M("newTask.placeholder.adoptFilter"),K1=B()==="adoptFilter";return $0!==v.e&&(v.e=Q(r,"fg",$0,v.e)),m0!==v.t&&(v.t=Q(r,"attributes",m0,v.t)),A0!==v.a&&(v.a=Q(o,"value",A0,v.a)),a0!==v.o&&(v.o=Q(o,"placeholder",a0,v.o)),K1!==v.i&&(v.i=Q(o,"focused",K1,v.i)),v},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),i})(),(()=>{var i=W("box"),r=W("text");return D(i,r),Q(i,"paddingLeft",2),Q(r,"wrapMode","none"),K(r,()=>M("newTask.adopt.repoLine",{path:LJ(f().trim())||M("newTask.adopt.repoNone")})),u((o)=>Q(r,"fg",Z.textMuted,o)),i})(),k(Y0,{get when(){return R1.loading},get children(){var i=W("box"),r=W("text");return D(i,r),Q(i,"paddingLeft",2),Q(r,"wrapMode","none"),K(r,()=>M("newTask.hint.scanningWorktrees")),u((o)=>Q(r,"fg",Z.textMuted,o)),i}}),k(Y0,{get when(){return C0(()=>!R1.loading)()&&O1().length===0},get children(){var i=W("box"),r=W("text");return D(i,r),Q(i,"paddingLeft",2),Q(r,"wrapMode","none"),K(r,(()=>{var o=C0(()=>(R1()??[]).length===0);return()=>o()?M("newTask.adopt.noUnlinked"):M("newTask.adopt.noMatch")})()),u((o)=>Q(r,"fg",Z.textMuted,o)),i}}),k(Y0,{get when(){return O1().length>0},get children(){var i=W("box"),r=W("text");return D(i,r),Q(i,"gap",0),Q(i,"paddingLeft",2),K(i,k(Y0,{get when(){return Z0().start>0},get children(){var o=W("text");return Q(o,"wrapMode","none"),K(o,()=>M("newTask.picker.moreAbove",{count:Z0().start})),u((v)=>Q(o,"fg",Z.textMuted,v)),o}}),r),K(i,k(Y1,{get each(){return Q0()},children:(o,v)=>{let $0=()=>Z0().start+v(),m0=()=>$0()===i0(),A0=()=>l0().has(o.path),a0=()=>[o.dirty?"dirty":"",o.kobeManaged?"":"external"].filter(Boolean).join(",");return(()=>{var K1=W("text");return Q(K1,"wrapMode","none"),Q(K1,"onMouseUp",()=>{Z1($0()),U0(o.path)}),K(K1,()=>m0()?"\u25B8 ":" ",null),K(K1,()=>A0()?"[x] ":"[ ] ",null),K(K1,()=>o.branch,null),K(K1,(()=>{var C1=C0(()=>!!a0());return()=>C1()?` (${a0()})`:""})(),null),u((C1)=>{var FJ=m0()?Z.primary:A0()?Z.accent:Z.textMuted,Wz=m0()?jz.BOLD:void 0;return FJ!==C1.e&&(C1.e=Q(K1,"fg",FJ,C1.e)),Wz!==C1.t&&(C1.t=Q(K1,"attributes",Wz,C1.t)),C1},{e:void 0,t:void 0}),K1})()}}),r),K(i,k(Y0,{get when(){return Z0().start+Z0().items.length<Z0().total},get children(){var o=W("text");return Q(o,"wrapMode","none"),K(o,()=>M("newTask.picker.moreBelow",{count:Z0().total-Z0().start-Z0().items.length})),u((v)=>Q(o,"fg",Z.textMuted,v)),o}}),r),Q(r,"wrapMode","none"),K(r,(()=>{var o=C0(()=>l0().size>0);return()=>o()?M("newTask.adopt.hintSelected",{count:l0().size}):M("newTask.adopt.hintDefault")})()),u((o)=>Q(r,"fg",Z.textMuted,o)),i}})]}}),null),K(T,k(Y0,{get when(){return V0()},get children(){var i=W("text"),r=T0("\u203B ");return D(i,r),Q(i,"wrapMode","word"),K(i,V0,null),u((o)=>Q(i,"fg",Z.error,o)),i}}),null),D(BJ,mJ),D(BJ,B1),Q(BJ,"flexDirection","row"),Q(BJ,"justifyContent","space-between"),Q(BJ,"alignItems","center"),Q(BJ,"paddingTop",1),Q(BJ,"paddingBottom",1),K(mJ,()=>M("newTask.hint.legend")),Q(B1,"onMouseUp",()=>u0()),K(B1,(()=>{var i=C0(()=>!!X0());return()=>i()?M("newTask.button.cloning"):C0(()=>B()==="confirm")()?M("newTask.button.createFocused"):M("newTask.button.create")})()),u((i)=>{var r=jz.BOLD,o=Z.text,v=c0("engine"),$0=t0("engine"),m0=Z.textMuted,A0=Z.textMuted,a0=B()==="confirm"?Z.primary:Z.text,K1=B()==="confirm"?jz.BOLD:void 0;return r!==i.e&&(i.e=Q(J0,"attributes",r,i.e)),o!==i.t&&(i.t=Q(J0,"fg",o,i.t)),v!==i.a&&(i.a=Q(T1,"fg",v,i.a)),$0!==i.o&&(i.o=Q(T1,"attributes",$0,i.o)),m0!==i.i&&(i.i=Q(v1,"fg",m0,i.i)),A0!==i.n&&(i.n=Q(mJ,"fg",A0,i.n)),a0!==i.s&&(i.s=Q(B1,"fg",a0,i.s)),K1!==i.h&&(i.h=Q(B1,"attributes",K1,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}),a})()}var BF=C(()=>{P();P();P();P();P();P();P();P();jJ();s1();D1();d1();Fj();IJ();Aj();rJ();ZF();ZW()});function cx(J,z,Z,Y){return new Promise((X)=>{J.replace(()=>k(jF,{defaultRepo:z,savedRepos:Z,get defaultCloneParent(){return Y?.defaultCloneParent},get defaultVendor(){return Y?.defaultVendor},get availableVendors(){return Y?.availableVendors},get discoverAdoptable(){return Y?.discoverAdoptable},onSubmit:(G)=>X(G),onCancel:()=>X(void 0)}),()=>X(void 0)),J.setSize("medium")})}var Rj;var tX=C(()=>{P();BF();ZW();Rj={show:cx}});function fF(J,z){return[{key:"tab",cmd:()=>z.cycleField(1)},{key:"shift+tab",cmd:()=>z.cycleField(-1)},{key:"ctrl+e",cmd:()=>z.stepEngine(1)},{key:"ctrl+v",cmd:()=>z.pasteAttachment()},{key:"ctrl+x",cmd:()=>z.removeLastAttachment()},...J==="engine"?[{key:"left",cmd:()=>z.stepEngine(-1)},{key:"right",cmd:()=>z.stepEngine(1)},{key:"return",cmd:()=>z.commit()}]:[]]}import{TextAttributes as WF}from"@opentui/core";function dx(J){let z=a1(),{theme:Z}=w0(),[Y,X]=s("prompt"),[G,q]=s(""),[H,j]=s(J.defaultVendor),[B,V]=s(J.defaultBaseRef),[f,U]=s([]);hL((h)=>{let I=mM(new TextDecoder().decode(h.bytes));if(!I)return;h.preventDefault(),U((N)=>[...N,...I.filter((F)=>!N.includes(F))])});function L(){dM().then((h)=>{if(h)U((I)=>I.includes(h)?I:[...I,h])})}function O(h){let I=gj.indexOf(Y());X(gj[(I+h+gj.length)%gj.length]??"prompt")}function A(h){let I=J.engines;if(I.length===0)return;if(h>0){j((F)=>gZ(I,F));return}let N=Math.max(0,I.indexOf(H()));j(I[(N-1+I.length)%I.length]??H())}function g(){if(kQ(G())){X("prompt");return}J.onSubmit({prompt:G().trim(),vendor:H(),baseRef:B().trim()||J.defaultBaseRef,attachments:f()}),z.clear()}F1(()=>({enabled:!0,bindings:fF(Y(),{cycleField:O,stepEngine:A,commit:g,pasteAttachment:L,removeLastAttachment:()=>U((h)=>h.slice(0,-1))})}));let E=(h)=>Y()===h?Z.accent:Z.textMuted;return(()=>{var h=W("box"),I=W("box"),N=W("text"),F=W("text"),y=W("box"),c=W("text"),d=W("input"),l=W("box"),t=W("text"),X0=W("box"),q0=W("text"),f0=W("input"),_=W("box"),O0=W("text");return D(h,I),D(h,y),D(h,l),D(h,X0),D(h,_),Q(h,"paddingLeft",2),Q(h,"paddingRight",2),Q(h,"gap",1),D(I,N),D(I,F),Q(I,"flexDirection","row"),Q(I,"justifyContent","space-between"),K(N,()=>M("quickTask.title",{repoLabel:J.repoLabel})),Q(F,"onMouseUp",()=>J.onCancel()),K(F,()=>M("quickTask.esc")),D(y,c),D(y,d),Q(y,"gap",0),K(c,()=>M("quickTask.promptLabel")),Q(d,"onInput",(b)=>q(CJ(b))),Q(d,"onSubmit",()=>g()),K(h,k(Y0,{get when(){return f().length>0},get children(){var b=W("box");return Q(b,"flexDirection","row"),Q(b,"gap",2),Q(b,"flexWrap","wrap"),K(b,k(Y1,{get each(){return f()},children:(p,w)=>(()=>{var R=W("text");return Q(R,"onMouseUp",()=>U((e)=>e.filter((x)=>x!==p))),K(R,()=>d8(p,w())),u((e)=>Q(R,"fg",Z.primary,e)),R})()})),b}}),l),D(l,t),Q(l,"flexDirection","row"),Q(l,"gap",2),K(t,()=>M("quickTask.engineLabel")),K(l,k(Y1,{get each(){return J.engines},children:(b)=>(()=>{var p=W("text");return Q(p,"onMouseUp",()=>{j(b),X("engine")}),K(p,()=>J.engineLabel(b)),u((w)=>{var R=H()===b?Z.primary:Z.textMuted,e=H()===b?WF.BOLD:void 0;return R!==w.e&&(w.e=Q(p,"fg",R,w.e)),e!==w.t&&(w.t=Q(p,"attributes",e,w.t)),w},{e:void 0,t:void 0}),p})()}),null),D(X0,q0),D(X0,f0),Q(X0,"gap",0),K(q0,()=>M("quickTask.branchLabel")),Q(f0,"onInput",(b)=>V(CJ(b))),Q(f0,"onSubmit",()=>g()),D(_,O0),Q(_,"paddingBottom",1),K(O0,()=>M("quickTask.legend")),u((b)=>{var p=WF.BOLD,w=Z.text,R=Z.textMuted,e=E("prompt"),x=G(),$=M("quickTask.promptPlaceholder"),G0=Y()==="prompt",H0=E("engine"),L0=E("branch"),F0=B(),E0=J.defaultBaseRef,b0=Y()==="branch",e0=Z.textMuted;return p!==b.e&&(b.e=Q(N,"attributes",p,b.e)),w!==b.t&&(b.t=Q(N,"fg",w,b.t)),R!==b.a&&(b.a=Q(F,"fg",R,b.a)),e!==b.o&&(b.o=Q(c,"fg",e,b.o)),x!==b.i&&(b.i=Q(d,"value",x,b.i)),$!==b.n&&(b.n=Q(d,"placeholder",$,b.n)),G0!==b.s&&(b.s=Q(d,"focused",G0,b.s)),H0!==b.h&&(b.h=Q(t,"fg",H0,b.h)),L0!==b.r&&(b.r=Q(q0,"fg",L0,b.r)),F0!==b.d&&(b.d=Q(f0,"value",F0,b.d)),E0!==b.l&&(b.l=Q(f0,"placeholder",E0,b.l)),b0!==b.u&&(b.u=Q(f0,"focused",b0,b.u)),e0!==b.c&&(b.c=Q(O0,"fg",e0,b.c)),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,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0}),h})()}function nx(J,z){return new Promise((Z)=>{J.replace(()=>k(dx,cL(z,{onSubmit:(Y)=>Z(Y),onCancel:()=>Z(void 0)})),()=>Z(void 0)),J.setSize("medium")})}var gj,VF;var UF=C(()=>{P();P();P();P();P();P();P();P();D1();s1();d1();jJ();n8();IJ();rJ();tX();gj=["prompt","engine","branch"];VF={show:nx}});async function Nj(J={}){let z=J.logTag??"orch-connect",Z=J.connect??qz,Y=null;try{let X=await Z();if(!X)return YZ(z,"no daemon running \u2014 caller degrades"),null;return Y=new NJ(X,{...J.orchestratorOptions,channels:J.channels}),await Y.init(),Y}catch(X){return QJ(z,X),Y?.dispose(),null}}var YW=C(()=>{GY();kJ();sZ()});function KF(J){let[z,Z]=s(J.initial??"sidebar"),[Y,X]=s(0),G=VJ();function q(f){if(X((L)=>L+1),z()===f)return;let U=G?.currentFocusedRenderable;if(U&&!U.isDestroyed)try{U.blur()}catch{}Z(f)}function H(f){let L=(Cj.indexOf(z())+f+Cj.length)%Cj.length;q(Cj[L])}let j=new Map;function B(f){let U=j.get(f);if(!U)U=()=>z()===f,j.set(f,U);return U}let V={focused:z,is:B,setFocused:q,cycle:H,refocusTick:Y};return k(ix.Provider,{value:V,get children(){return J.children}})}var Cj,ix;var DF=C(()=>{P();P();D1();Cj=["sidebar","workspace","files","terminal"],ix=hz(null)});function LF(){for(let J of tZ){let z=lx.get(J.id);if(!z)continue;let Z=J;Z.keys=[...z.keys],Z.hint=z.hint?{...z.hint}:void 0}}function MF(){$x((J)=>J+1)}function GW(J){return ax.get(J)}function _x(J){return GW(J)?.keys??[]}function eZ(J){let z=[];for(let Z in J){let Y=J[Z];if(!Y)continue;let X=_x(Z);if(X.length===0){console.warn(`[kobe/keybindings] bindByIds: id="${Z}" has no chords (or doesn't exist in KobeKeymap)`);continue}X.forEach((G,q)=>z.push({key:G,cmd:Y,slot:q}))}return z}var tZ,lx,XW,$x,ax;var eX=C(()=>{D1();tZ=[{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:"Reorder task (Shift+M, then j/k)",hint:{keys:"M",label:"reorder",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.previewToggle",scope:"sidebar",keys:["i"],category:"Sidebar",description:"Toggle live preview for task (i)",hint:{keys:"i",label:"preview",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"}}],lx=new Map(tZ.map((J)=>[J.id,{keys:[...J.keys],hint:J.hint?{...J.hint}:void 0}]));[XW,$x]=s(0);ax=new Map(tZ.map((J)=>[J.id,J]))});function bj(){if(JY)return JY;let J=aq();if(!J.exists)return JY={path:J.path,exists:!1,applied:[],warnings:[]},JY;let z=[...J.warnings],Z=pq(J.doc,process.platform,{chordOptsFor:kB});z.push(...Z.warnings);let Y=Z.entries.filter((H)=>H.id.startsWith("tmux.")),X=Z.entries.filter((H)=>!H.id.startsWith("tmux.")),G=eU(tZ,X);z.push(...G.warnings);let q=[...G.applied];if(Y.length>0){let H=bB(Y);z.push(...H.warnings);for(let j of H.overridden){if(j===mz){q.push({id:j,keys:H.focus.map((f)=>f?.chord??"").filter((f)=>f!==""),defaultKeys:hZ});continue}let B=H.binds[j];q.push({id:j,keys:B?[B.chord]:[],defaultKeys:[RY[j]]});let V=tZ.find((f)=>f.id===j);if(V?.hint)V.hint.keys=B?`${WX(j)?"prefix ":""}${B.chord}`:"\u2014"}}for(let H of z)console.warn(`[kobe/keybindings] ${H}`);return JY={path:J.path,exists:!0,applied:q,warnings:z},JY}function FF(){return JY??bj()}function OF(){JY=null,tU(),YK(),LF();let J=bj();return MF(),J}var JY=null;var QW=C(()=>{NB();sq();rq();eX()});var px=250,JG,AF;var SQ=C(()=>{_X();Ez();E8();({use:JG,provider:AF}=Dj({name:"KV",init:()=>{let[J,z]=pz(OJ()),Z=new Set,Y=null;function X(H){if(Z.size===0)return!0;try{let j={};for(let B of Z)j[B]=J[B];return bZ(j),Z.clear(),!0}catch(j){return console.error(`[kobe] kv ${H} failed:`,j),!1}}function G(){if(Y)clearTimeout(Y);Y=setTimeout(()=>{Y=null,X("write")},px)}let q={get ready(){return!0},get store(){return J},signal(H,j){if(J[H]===void 0)z(H,j);return[()=>q.get(H),(B)=>q.set(H,B)]},get(H,j){return J[H]??j},set(H,j){z(H,j),Z.add(H),G()},flush(){if(Y)clearTimeout(Y),Y=null;return X("flush")},clear(){for(let H of Object.keys(J))z(H,void 0);if(Y)clearTimeout(Y),Y=null;Z.clear();try{bV({})}catch(H){console.error("[kobe] kv clear write failed:",H)}}};return q}}))});var kj="../pulse-n3cq1btw.wav";var RF=()=>{};import{existsSync as ox,mkdirSync as sx}from"fs";import{tmpdir as tx}from"os";import{basename as ex,isAbsolute as Ju,join as qW,resolve as zu}from"path";function Yu(J,z,Z){if(J==="ffplay")return[J,"-autoexit","-nodisp","-af",`volume=${Z}`,z];if(J==="mpv")return[J,"--no-video","--audio-display=no","--volume",String(Math.round(Z*100)),z];if(J==="mpg123"||J==="mpg321")return[J,"-g",String(Math.round(Z*100)),z];if(J==="mplayer")return[J,"-vo","null","-volume",String(Math.round(Z*100)),z];if(J==="afplay"||J==="omxplayer"||J==="aplay"||J==="cmdmp3")return[J,z];if(J==="play")return[J,"-v",String(Z),z];if(J==="cvlc")return[J,`--gain=${Z}`,"--play-and-exit",z];return[J,"-c",`(New-Object Media.SoundPlayer '${z.replace(/'/g,"''")}').PlaySync()`]}function Xu(){if(Ij!==void 0)return Ij;let z=(process.env.PATH??"").split(":").filter(Boolean);return Ij=Zu.find((Z)=>z.some((Y)=>ox(qW(Y,Z))))??null,Ij}async function Gu(){return CF??=(async()=>{sx(NF,{recursive:!0});let J=qW(NF,ex(gF)),z=Bun.file(J);if(await z.exists())return J;return await Bun.write(z,Bun.file(gF)),J})(),CF}function bF(J=0.4){let z=Xu();if(!z)return;Gu().then((Z)=>{try{Bun.spawn(Yu(z,Z,J),{stdin:"ignore",stdout:"ignore",stderr:"ignore"}).unref?.()}catch{}}).catch(()=>{return})}var gF,NF,Zu,Ij,CF;var kF=C(()=>{RF();gF=Ju(kj)?kj:zu(import.meta.dir,kj),NF=qW(tx(),"kobe-sfx"),Zu=["ffplay","mpv","mpg123","mpg321","mplayer","afplay","play","omxplayer","aplay","cmdmp3","cvlc","powershell.exe"]});function IF(J,z){return`${J}:${z}`}function yF(J){let z=JG(),[Z,Y]=s([]),[X,G]=s(new Map),q=Mj(),H=0;function j(U){if(G((O)=>{let A=new Map(O),g=IF(U.taskId,U.tabId),E=O.get(g);if(E==="needs_input"||E==="error")return O;return A.set(g,U.kind),A}),z.get("notifications.sound.enabled",!0)!==!1){try{process.stdout.write("\x07")}catch{}bF()}let L=z.get("notifications.toast.enabled",!0)!==!1;if(U.kind==="error"||L){let O=++H,A={id:O,kind:U.kind,taskId:U.taskId,tabId:U.tabId,title:U.title};Y((g)=>[...g,A]),q.set(()=>B(O),Qu)}}function B(U){Y((L)=>L.filter((O)=>O.id!==U))}function V(U,L){G((O)=>{let A=IF(U,L);if(!O.has(A))return O;let g=new Map(O);return g.delete(A),g})}let f={toasts:Z,unread:X,notify:j,dismiss:B,markRead:V};return k(SF.Provider,{value:f,get children(){return J.children}})}function Sj(){let J=lJ(SF);if(!J)throw Error("useNotifications must be used within a NotificationsProvider");return J}var Qu=4500,SF;var yj=C(()=>{P();D1();a8();kF();SQ();SF=hz()});function HW(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 Z=Hu(z.focusAccent);if(Z&&Z!==J.focusAccent())J.setFocusAccent(Z)}}function Hu(J){if(J===null)return"primary";return qu.includes(J)?J:null}var qu;var TF=C(()=>{qu=["primary","success","info"]});import{readFileSync as ju}from"fs";function xF(J){try{let z=JSON.parse(ju(tJ(),"utf8")),Z=typeof z.activeTheme==="string"&&AQ(z.activeTheme)?z.activeTheme:J,Y=z.transparentBackground===!0,X=typeof z.focusAccent==="string"&&mY.includes(z.focusAccent)?z.focusAccent:null,G=RQ(z[Tj])?z[Tj]:oX;return{theme:Z,transparent:Y,focusAccent:X,locale:G}}catch{return{theme:J,transparent:!1,focusAccent:null,locale:oX}}}var Tj="locale";var jW=C(()=>{t1();d1();sX()});function fu(J){if(J)Jq(J);lV(),bj();for(let{name:z,theme:Z}of PG())P8(z,Z)}function Wu(J){let z={backgroundColor:"transparent",externalOutputMode:"passthrough",exitOnCtrlC:!1,screenMode:"alternate-screen",useKittyKeyboard:{}};return J?{...z,onDestroy:J}:z}function Vu(J){let z=()=>J.children,Z=()=>J.notifications?k(yF,{get children(){return z()}}):z(),Y=()=>k($M,{get children(){return Z()}}),X=()=>J.focus?k(KF,{initial:"sidebar",get children(){return Y()}}):Y(),G=()=>J.kv?k(AF,{get children(){return X()}}):X();return k(JM,{mode:"dark",get theme(){return J.theme},get children(){return G()}})}function Uu(J){let{theme:z}=w0();return _1(()=>QJ("pane-crash",J.error)),(()=>{var Z=W("box"),Y=W("text"),X=W("text");return D(Z,Y),D(Z,X),Q(Z,"flexDirection","column"),Q(Z,"flexGrow",1),Q(Z,"paddingLeft",1),Q(Z,"paddingTop",1),Q(Z,"gap",1),K(Y,()=>M("common.paneCrash.title")),K(X,()=>M("common.paneCrash.hint")),u((G)=>{var{background:q,error:H,textMuted:j}=z;return q!==G.e&&(G.e=Q(Z,"backgroundColor",q,G.e)),H!==G.t&&(G.t=Q(Y,"fg",H,G.t)),j!==G.a&&(G.a=Q(X,"fg",j,G.a)),G},{e:void 0,t:void 0,a:void 0}),Z})()}function Ku(J){let z=w0(),Z={selectedTheme:()=>z.selected,hasTheme:(H)=>z.has(H),setTheme:(H)=>z.set(H),reloadUserThemes:()=>{for(let{name:H,theme:j}of PG())P8(H,j)},transparentBackground:()=>z.transparentBackground,setTransparentBackground:(H)=>z.setTransparentBackground(H),focusAccent:()=>z.focusAccent,setFocusAccent:(H)=>z.setFocusAccent(H)};HW(Z,{theme:J.boot.theme,transparentBackground:J.boot.transparent,focusAccent:J.boot.focusAccent}),gQ(J.boot.locale);let[Y,X]=s(null),G=!1;_1(()=>{(async()=>{let H=await Nj({logTag:"ui-prefs",channels:["ui-prefs","keybindings"]});if(!H)return;if(G){H.dispose();return}X(H)})()}),d0(()=>{let H=Y()?.uiPrefsSignal()();if(!H)return;if(HW(Z,H),RQ(H.locale))gQ(H.locale)});let q=null;return d0(()=>{let H=Y()?.keybindingsRevSignal()();if(H==null)return;if(q===null||H===q){q=H;return}q=H,OF()}),b1(()=>{G=!0,Y()?.dispose()}),null}async function MJ(J){fu(J.logContext);let z=xF(Bu),Z=await J.setup(z),Y=J.providers?.kv??!0,X=J.providers?.focus??!0,G=J.providers?.notifications??!1;await _L(()=>k(Vu,{get theme(){return z.theme},kv:Y,focus:X,notifications:G,get children(){return[k(Ku,{boot:z}),k(FU,{fallback:(j)=>k(Uu,{error:j}),get children(){return Z.root()}})]}}),Wu(Z.onDestroy));let q=!1,H=()=>{if(q)return;q=!0,setTimeout(()=>process.exit(0),5000)};for(let j of["SIGHUP","SIGTERM","SIGINT"])process.on(j,H)}var Bu="claude";var OZ=C(()=>{P();P();P();P();P();P();P();GY();D1();YW();DF();QW();SQ();yj();d1();HH();jJ();rJ();TF();jW()});var BW={};H1(BW,{togglePreviewMode:()=>Du,previewModeEnabled:()=>EF});function EF(J){return dJ(uF(J),!1)}function Du(J){let z=!EF(J);return pQ(uF(J),z),z}var uF=(J)=>`preview.${J}`;var fW=C(()=>{Ez()});import{homedir as Lu}from"os";async function WW(J,z,Z,Y,X={}){let G=y1(z.id);if(await M1(G))return!0;let{archivedHistoryPreviewEnabled:q}=await Promise.resolve().then(() => ($q(),aU));if(z.archived&&q()){let{ensureSession:L}=await Promise.resolve().then(() => (qJ(),PJ)),O=z.worktreePath??"",A=O&&wZ(O)?O:Z&&wZ(Z)?Z:Lu();if(!await L({name:G,cwd:A,command:EJ(Y),taskId:z.id,vendor:Y,repo:Z,archived:!0,archivedWorktree:O||A,title:z.title}))throw new AZ("session",`failed to start history session for ${z.id}`);return!1}let H=z.worktreePath;if(!H||!wZ(H)){if(!J)throw new AZ("no-daemon",`no daemon; cannot materialise worktree for ${z.id}`);try{H=await J.ensureWorktree(z.id)}catch(L){throw new AZ("worktree",`ensureWorktree failed for ${z.id}`,L)}await X.reload?.()}if(!H||!wZ(H))throw new AZ("worktree",`task ${z.id} has no usable worktree`);let{ensureSession:j}=await Promise.resolve().then(() => (qJ(),PJ)),{previewModeEnabled:B}=await Promise.resolve().then(() => (fW(),BW));if(B(z.id)&&q()){if(!await j({name:G,cwd:H,command:EJ(Y),taskId:z.id,vendor:Y,repo:Z,preview:!0,archivedWorktree:H,title:z.title}))throw new AZ("session",`failed to start preview session for ${z.id}`);return!1}let{resolveEngineLaunchInit:V}=await Promise.resolve().then(() => (uX(),lH)),f=Z?V(Z,H,{kind:X.includeInitPrompt?"repo-init":"none"}):void 0;if(!await j({name:G,cwd:H,command:EJ(Y),taskId:z.id,vendor:Y,repo:Z,launchInit:f}))throw new AZ("session",`failed to start tmux session for ${z.id}`);return!1}async function VW(J,z,Z,Y,X={}){let G=y1(z.id),q=await Promise.resolve().then(() => (qJ(),PJ));if(X.captureFrom){let B=await q.currentSessionName();if(B&&B!==G)await q.captureGlobalLayout(B)}if(await WW(J,z,Z,Y,{includeInitPrompt:X.includeInitPrompt,reload:X.reload})&&X.heal)try{let B=await kY(G,"@kobe_worktree")||z.worktreePath||"";if(B&&wZ(B)){let{resolveEngineLaunchInit:V}=await Promise.resolve().then(() => (uX(),lH)),f=Z?V(Z,B,{kind:X.includeInitPrompt?"repo-init":"none"}):void 0;await q.ensureSession({name:G,cwd:B,command:EJ(Y),taskId:z.id,vendor:Y,repo:Z,launchInit:f})}}catch(B){console.error("[kobe handover] heal failed (continuing to switch):",B)}let{syncSessionZen:j}=await Promise.resolve().then(() => (cZ(),lB));if(await j(G),X.isCurrent&&!X.isCurrent())return;await J?.setActiveTask(z.id).catch(()=>{}),await q.enterWindow(G)}async function xj(J,z,Z,Y,X={}){await VW(J,z,Z,Y,{includeInitPrompt:X.includeInitPrompt})}var AZ;var uj=C(()=>{Xz();Az();m1();AZ=class AZ extends Error{phase;cause;constructor(J,z,Z){super(z);this.name="HandoverError",this.phase=J,this.cause=Z}}});var wF={};H1(wF,{startNewTaskHost:()=>Mu,NewTaskPage:()=>Ej});function Ej(J){let{theme:z}=w0(),Z=a1();_1(()=>{Y()});async function Y(){let X=SJ(),G=J.defaultRepo||X[0]||process.cwd(),q=cJ(x1("lastSelectedVendor"),nJ()),H=await XZ(),j=J.orchestrator,B=await Rj.show(Z,G,X,{defaultVendor:q,availableVendors:H,discoverAdoptable:j?(f)=>j.discoverAdoptableWorktrees(f):void 0});if(!B)process.exit(0);if(GJ("lastSelectedVendor",B.vendor),ez(B.repo),!j)console.error("[kobe new-task] no daemon; cannot create task"),process.exit(1);let V;try{if(B.mode==="adopt")for(let f of B.adopt)V=await j.adoptWorktree({repo:B.repo,worktreePath:f.worktreePath,branch:f.branch,vendor:B.vendor});else V=await j.createTask({repo:B.repo,baseRef:B.baseRef,vendor:B.vendor})}catch(f){console.error("[kobe new-task] task.create/adopt failed:",f),process.exit(1)}if(V)try{await xj(j,V,B.repo,B.vendor,{includeInitPrompt:B.mode!=="adopt"})}catch(f){console.error("[kobe new-task] auto-enter failed:",f)}process.exit(0)}return(()=>{var X=W("box");return Q(X,"flexDirection","column"),Q(X,"flexGrow",1),u((G)=>Q(X,"backgroundColor",z.background,G)),X})()}async function Mu(J){await MJ({setup:async()=>{let z=null;try{let Z=await Sz(),Y=new NJ(Z);await Y.init(),z=Y}catch(Z){console.error("[kobe new-task] daemon unavailable; cannot create task:",Z)}return{root:()=>k(Ej,{get defaultRepo(){return J.defaultRepo},orchestrator:z}),onDestroy:()=>{z?.dispose()}}}})}var UW=C(()=>{P();P();P();P();kJ();D1();sZ();QY();S1();s1();tX();d1();OZ();uj();rJ()});function wj(J,z,Z,Y,X={}){if(J.length===0)return z;let G=new Map;for(let j of J)G.set(Z(j),j);let q=J.length===z.length,H=Array(z.length);for(let j=0;j<z.length;j++){let B=z[j],V=G.get(Z(B));if(V&&Y(V,B)&&(!X.samePosition||J[j]===V)){if(H[j]=V,q&&J[j]!==V)q=!1}else H[j]=B,q=!1}return q?J:H}function PF(J,z){if(!J)return!0;let Z=J.toLowerCase(),Y=z.toLowerCase(),X=0;for(let G=0;G<Y.length&&X<Z.length;G++)if(Y.charCodeAt(G)===Z.charCodeAt(X))X++;return X===Z.length}function Fu(J,z){let Z=z==="archived";return J.filter((Y)=>Y.archived===Z)}function KW(J,z,Z,Y="default",X){let G=Fu(J,z),q=Z?.trim()??"",H=X?Bz(X):null,j=q?G.filter((A)=>PF(q,`${A.title} ${uz(A.repo)}`)):G,B=[],V=[],f=[],U=new Set;for(let A of j){if(A.kind==="main"){let g=Bz(A.repo);if(U.has(g))continue;U.add(g),B.push(A);continue}if(H&&Bz(A.repo)!==H)continue;if(A.pinned===!0)V.push(A);else f.push(A)}if(B.sort((A,g)=>uz(A.repo).localeCompare(uz(g.repo))),Y==="recent")V.sort(hF),f.sort(hF);let L=[],O=0;for(let A of B)L.push({kind:"task",task:A,flatIndex:O}),O++;for(let A of V)L.push({kind:"task",task:A,flatIndex:O}),O++;for(let A of f)L.push({kind:"task",task:A,flatIndex:O}),O++;return L}function hF(J,z){let Z=vF(z)-vF(J);if(Z!==0)return Z;return String(z.id).localeCompare(String(J.id))}function vF(J){let z=Date.parse(J.updatedAt||J.createdAt);return Number.isFinite(z)?z:0}function uz(J){let z=J.split("/").filter(Boolean);return z[z.length-1]??J}function Bz(J){return J.trim().replace(/[\\/]+$/,"")||J}function Ou(J,z){let Z=uz(J);if(!z.some((X)=>X!==J&&uz(X)===Z))return Z;return J.replace(/[\\/]+$/,"").split(/[\\/]+/).slice(-2).join("/")}function mF(J,z){let Z=z==="archived",Y=new Map;for(let G of J){let q=Bz(G.repo),H=Y.get(q)??{repo:G.repo,count:0};if(G.kind==="main")H.repo=G.repo;else if(G.archived===Z)H.count+=1;Y.set(q,H)}let X=[...Y.values()].map((G)=>G.repo);return[...Y.values()].map((G)=>({repo:G.repo,label:Ou(G.repo,X),count:G.count})).sort((G,q)=>G.label.localeCompare(q.label))}function cF(J,z){if(J.length===0)return-1;if(!z)return J[0]?.flatIndex??-1;let Z=Bz(z),Y=J.find((G)=>G.task.kind!=="main"&&Bz(G.task.repo)===Z);if(Y)return Y.flatIndex;return J.find((G)=>G.task.kind==="main"&&Bz(G.task.repo)===Z)?.flatIndex??J[0]?.flatIndex??-1}function DW(J){return J.map((z)=>z.task.id)}function dF(J,z,Z){let Y=z.length;if(J===null){if(Z===-1&&Y>0)return 0;if(Z>=Y)return Math.max(0,Y-1);if(Y===0)return-1;return Z}let X=z.indexOf(J);if(X>=0)return X;if(Y===0)return-1;if(Z<0||Z>=Y)return Y-1;return Z}function nF(J){let z=[],Z=[];for(let Y of J)if(Y.task.kind==="main")z.push(Y);else Z.push(Y);return{projectRows:z,taskRows:Z}}function Au(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 iF(J,z){return wj(J,z,(Z)=>Z.task.id,(Z,Y)=>Z.flatIndex===Y.flatIndex&&Au(Z.task,Y.task),{samePosition:!0})}var Pj=()=>{};var lF={};H1(lF,{startQuickTaskHost:()=>Cu});async function Ru(J,z){let Z,Y;if(z){let f=await wJ(z,["@kobe_task","@kobe_worktree"]);Z=f["@kobe_task"]||void 0,Y=f["@kobe_worktree"]||void 0}let X=(Z?J?.getTask(Z)?.repo:void 0)??SJ()[0],G=X??Y??process.cwd();if(!X)return{ctx:null,fallbackRepo:G};let q=await XZ(),H=cJ(x1("lastSelectedVendor"),nJ()),j=q.length===0||q.includes(H)?H:q[0]??H,B=NQ(LJ(X))??xz,V=q.length>0?q:[j];return{ctx:{repo:X,vendor:j,baseRef:B,engines:V},fallbackRepo:G}}async function gu(J,z,Z,Y,X){let G=await WW(J,z,Z,Y),q=y1(z.id),{pane:H}=await uG(q,!G);if(H)await EG(H,X)}function Nu(J){let{theme:z}=w0(),Z=a1();_1(()=>{Y()});async function Y(){let X=J.ctx,G=await VF.show(Z,{repoLabel:uz(X.repo),engines:X.engines,defaultVendor:X.vendor,defaultBaseRef:X.baseRef,engineLabel:MY});if(G===void 0)process.exit(0);GJ("lastSelectedVendor",G.vendor),ez(X.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:X.repo,baseRef:G.baseRef,vendor:G.vendor});await gu(q,H,X.repo,G.vendor,cM(G.prompt,G.attachments)),await xj(q,H,X.repo,G.vendor)}catch(H){console.error("[kobe quick-task] task.create/deliver failed:",H),process.exit(1)}process.exit(0)}return(()=>{var X=W("box");return Q(X,"flexDirection","column"),Q(X,"flexGrow",1),u((G)=>Q(X,"backgroundColor",z.background,G)),X})()}async function Cu(J){await MJ({setup:async()=>{let z=null;try{let X=await Sz(),G=new NJ(X);await G.init(),z=G}catch(X){console.error("[kobe quick-task] daemon unavailable; cannot create task:",X)}let{ctx:Z,fallbackRepo:Y}=await Ru(z,J.session);return{root:()=>Z?k(Nu,{ctx:Z,orchestrator:z}):k(Ej,{defaultRepo:Y,orchestrator:z}),onDestroy:()=>{z?.dispose()}}}})}var $F=C(()=>{P();P();P();P();kJ();D1();sZ();QY();Xz();S1();m1();tq();s1();UF();d1();n8();Fj();OZ();Aj();uj();UW();Pj();rJ()});function vj(J){let z=J.trim().split(/\s+/).pop()??"",Z=/^([CM])-(.+)$/.exec(z);if(!Z)return null;let Y=Z[1]==="C"?"\u2303":"\u2325",X=Z[2]??"";return`${Y}${X.length===1?X.toUpperCase():X}`}function hj(J,z){if(J.includes("/"))return J.split("/").map((X)=>hj(X,z)).join("/");let Z=J.toLowerCase();if(Z==="tab")return"tab";let Y=ku[Z];if(Y)return Y;if(/^f\d{1,2}$/.test(Z))return Z.toUpperCase();if(!z)return J;if(/^[a-z]$/.test(Z))return J.toUpperCase();return J.replace(/[a-z]+/gi,(X)=>X.toUpperCase())}function zG(J,z="\u2303B"){let Z=J.trim();if(!Z)return Z;let Y=/^prefix\s+(.+)$/i.exec(Z);if(Y){let H=Y[1]??"";return`${z} ${H.includes("+")?zG(H,z):hj(H,!0)}`}let X=Z.split("+");if(X.length===1)return hj(X[0]??"",!1);let G=X[X.length-1]??"";return`${X.slice(0,-1).map((H)=>bu[H.toLowerCase().trim()]??H).join("")} ${hj(G,!0)}`}var bu,ku;var LW=C(()=>{bu={ctrl:"\u2303",control:"\u2303",alt:"\u2325",opt:"\u2325",option:"\u2325",shift:"\u21E7",cmd:"\u2318",command:"\u2318",meta:"\u2318",super:"\u2318"},ku={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 aF}from"@opentui/core";function Iu(J){let z=new Map,Z=[];for(let Y of J){if(!z.has(Y.category))z.set(Y.category,[]),Z.push(Y.category);z.get(Y.category).push(Y)}return Z.map((Y)=>({category:Y,rows:z.get(Y)}))}function ZG(J={}){let z=a1(),{theme:Z}=w0(),Y=()=>Iu(tZ),X=()=>J.onClose?J.onClose():z.clear(),[G,q]=s("\u2303B");return _1(()=>{_0(["show-options","-g","prefix"]).then(({code:H,stdout:j})=>{if(H!==0)return;let B=vj(j);if(B)q(B)})}),F1(()=>({bindings:[{key:"?",cmd:X}]})),(()=>{var H=W("box"),j=W("box"),B=W("text"),V=W("text"),f=W("scrollbox"),U=W("box");return D(H,j),D(H,f),Q(H,"paddingLeft",2),Q(H,"paddingRight",2),Q(H,"gap",1),Q(H,"flexShrink",1),D(j,B),D(j,V),Q(j,"flexDirection","row"),Q(j,"justifyContent","space-between"),Q(j,"flexShrink",0),K(B,()=>M("help.title")),Q(V,"onMouseUp",X),K(V,()=>M("help.esc")),D(f,U),Q(f,"flexShrink",1),Q(f,"flexGrow",1),Q(f,"stickyScroll",!1),Q(U,"paddingBottom",1),Q(U,"gap",1),Q(U,"paddingRight",1),K(U,k(Y1,{get each(){return Y()},children:(L)=>(()=>{var O=W("box"),A=W("text");return D(O,A),Q(O,"gap",0),K(A,()=>m8("category",L.category)),K(O,k(Y1,{get each(){return L.rows},children:(g)=>{let E=g.hint?.keys??g.keys[0]??"\u2014",h=()=>E==="\u2014"?"\u2014":zG(E,G()),I=()=>(g.hint?g.keys:g.keys.slice(1)).map((N)=>zG(N,G()));return(()=>{var N=W("box"),F=W("box"),y=W("text"),c=W("box"),d=W("text");return D(N,F),D(N,c),Q(N,"flexDirection","row"),Q(N,"gap",2),Q(N,"paddingLeft",1),D(F,y),Q(F,"width",14),K(y,h),D(c,d),Q(c,"flexGrow",1),K(d,()=>m8("desc",g.id)),K(N,(()=>{var l=C0(()=>I().length>0);return()=>l()?(()=>{var t=W("box"),X0=W("text");return D(t,X0),K(X0,()=>`(${I().join(", ")})`),u((q0)=>Q(X0,"fg",Z.textMuted,q0)),t})():null})(),null),u((l)=>{var{primary:t,text:X0}=Z;return t!==l.e&&(l.e=Q(y,"fg",t,l.e)),X0!==l.t&&(l.t=Q(d,"fg",X0,l.t)),l},{e:void 0,t:void 0}),N})()}}),null),u((g)=>{var E=Z.accent,h=aF.BOLD;return E!==g.e&&(g.e=Q(A,"fg",E,g.e)),h!==g.t&&(g.t=Q(A,"attributes",h,g.t)),g},{e:void 0,t:void 0}),O})()})),u((L)=>{var O=aF.BOLD,A=Z.text,g=Z.textMuted,E={trackOptions:{backgroundColor:Z.backgroundDialog,foregroundColor:Z.borderActive}};return O!==L.e&&(L.e=Q(B,"attributes",O,L.e)),A!==L.t&&(L.t=Q(B,"fg",A,L.t)),g!==L.a&&(L.a=Q(V,"fg",g,L.a)),E!==L.o&&(L.o=Q(f,"verticalScrollbarOptions",E,L.o)),L},{e:void 0,t:void 0,a:void 0,o:void 0}),H})()}var MW=C(()=>{P();P();P();P();P();P();P();D1();m1();eX();d1();jJ();LW();IJ();rJ();ZG.show=(J)=>{J.replace(()=>k(ZG,{}))}});import{TextAttributes as Su}from"@opentui/core";function _F(J){let z=a1(),{theme:Z}=w0(),[Y,X]=s(J.currentTitle);function G(){let q=Y().trim();if(kQ(q)&&!J.allowEmpty)return;J.onSubmit(q),z.clear()}return(()=>{var q=W("box"),H=W("box"),j=W("text"),B=W("text"),V=W("box"),f=W("text"),U=W("input"),L=W("box"),O=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,j),D(H,B),Q(H,"flexDirection","row"),Q(H,"justifyContent","space-between"),K(j,()=>J.dialogTitle??M("common.rename.defaultTitle")),D(B,T0("esc")),Q(B,"onMouseUp",()=>J.onCancel()),D(V,f),D(V,U),Q(V,"gap",0),K(f,()=>J.fieldLabel??M("common.rename.defaultFieldLabel")),Q(U,"focused",!0),Q(U,"onInput",(A)=>X(CJ(A))),Q(U,"onSubmit",()=>G()),D(L,O),Q(L,"paddingBottom",1),K(O,()=>M("common.rename.footerHint",{submitLabel:J.submitLabel??M("common.rename.defaultSubmitLabel")})),u((A)=>{var g=Su.BOLD,E=Z.text,h=Z.textMuted,I=Z.accent,N=Y(),F=J.placeholder??J.currentTitle,y=Z.textMuted;return g!==A.e&&(A.e=Q(j,"attributes",g,A.e)),E!==A.t&&(A.t=Q(j,"fg",E,A.t)),h!==A.a&&(A.a=Q(B,"fg",h,A.a)),I!==A.o&&(A.o=Q(f,"fg",I,A.o)),N!==A.i&&(A.i=Q(U,"value",N,A.i)),F!==A.n&&(A.n=Q(U,"placeholder",F,A.n)),y!==A.s&&(A.s=Q(O,"fg",y,A.s)),A},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),q})()}var pF=C(()=>{P();P();P();P();P();P();P();jJ();D1();d1();rJ();tX()});function yu(J,z,Z={}){return new Promise((Y)=>{J.replace(()=>k(_F,{currentTitle:z,get dialogTitle(){return Z.dialogTitle},get fieldLabel(){return Z.fieldLabel},get submitLabel(){return Z.submitLabel},get placeholder(){return Z.placeholder},get allowEmpty(){return Z.allowEmpty},onSubmit:(X)=>Y(X),onCancel:()=>Y(void 0)}),()=>Y(void 0))})}var oz;var FW=C(()=>{P();pF();oz={show:yu}});import{TextAttributes as Tu}from"@opentui/core";function xu(J){if(!J)return J;return J.charAt(0).toUpperCase()+J.slice(1)}function fz(J){let z=a1(),{theme:Z}=w0(),[Y,X]=pz({active:J.initialActive??"confirm"});return F1(()=>({bindings:[{key:"return",cmd:()=>{if(Y.active==="confirm")J.onConfirm?.();if(Y.active==="cancel")J.onCancel?.();z.clear()}},{key:"left",cmd:()=>X("active",Y.active==="confirm"?"cancel":"confirm")},{key:"right",cmd:()=>X("active",Y.active==="confirm"?"cancel":"confirm")}]})),(()=>{var G=W("box"),q=W("box"),H=W("text"),j=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,H),D(q,j),Q(q,"flexDirection","row"),Q(q,"justifyContent","space-between"),K(H,()=>J.title),D(j,T0("esc")),Q(j,"onMouseUp",()=>z.clear()),K(B,()=>J.message),Q(V,"flexDirection","row"),Q(V,"justifyContent","flex-end"),Q(V,"paddingTop",1),K(V,k(Y1,{each:["cancel","confirm"],children:(f)=>(()=>{var U=W("box"),L=W("text");return D(U,L),Q(U,"paddingLeft",1),Q(U,"paddingRight",1),Q(U,"onMouseUp",()=>{if(f==="confirm")J.onConfirm?.();if(f==="cancel")J.onCancel?.();z.clear()}),K(L,()=>xu(f==="cancel"?J.label??M("common.cancel"):J.confirmLabel??M("common.confirm"))),u((O)=>{var A=f===Y.active?Z.primary:void 0,g=f===Y.active?Z.selectedListItemText:Z.textMuted;return A!==O.e&&(O.e=Q(U,"backgroundColor",A,O.e)),g!==O.t&&(O.t=Q(L,"fg",g,O.t)),O},{e:void 0,t:void 0}),U})()})),u((f)=>{var U=Tu.BOLD,L=Z.text,O=Z.textMuted,A=Z.textMuted;return U!==f.e&&(f.e=Q(H,"attributes",U,f.e)),L!==f.t&&(f.t=Q(H,"fg",L,f.t)),O!==f.a&&(f.a=Q(j,"fg",O,f.a)),A!==f.o&&(f.o=Q(B,"fg",A,f.o)),f},{e:void 0,t:void 0,a:void 0,o:void 0}),G})()}var mj=C(()=>{P();P();P();P();P();P();P();jJ();D1();_X();d1();IJ();rJ();fz.show=(J,z,Z,Y,X,G)=>{return new Promise((q)=>{J.replace(()=>k(fz,{title:z,message:Z,onConfirm:()=>q(!0),onCancel:()=>q(!1),label:Y,confirmLabel:X,get initialActive(){return G?.initialActive}}),()=>q(void 0)),J.setSize("small")})}});import{unlinkSync as uu}from"fs";import{join as Eu}from"path";function rF(J){return J instanceof NJ}function oF(J,z){try{J?.destroy()}catch(Z){console.error(`kobe: renderer.destroy() failed during ${z}:`,Z)}}async function OW(J,z,Z){if(await fz.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{uu(Eu(sJ(),".kobe","tasks.json"))}catch(X){if(X.code!=="ENOENT")console.error("kobe: failed to delete tasks.json during reset:",X)}oF(Z,"reset"),process.stderr.write(`kobe: UI state reset. Relaunch kobe to start fresh.
268
+ `),process.exit(0)}async function AW(J,z,Z){if(!(z instanceof NJ))return;if(await fz.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;oF(Z,"daemon restart"),process.stderr.write(`kobe: window closed. Relaunch kobe to start fresh.
269
+ `),process.exit(0)}var sF=C(()=>{sZ();t1();mj()});function wu(J){return`theme:${J}`}function RW(J){return`language:${J}`}function gW(J){return`accent:${J}`}function Pu(J){return`engine:${J}`}function yQ(J){return`surface:${J}`}function NW(J){return[...J.themeNames.map((z)=>({id:wu(z),kind:"theme",name:z})),...pX.map((z)=>({id:RW(z.id),kind:"language",locale:z.id})),{id:"transparent",kind:"transparent"},...J.focusAccentSlots.map((z)=>({id:gW(z),kind:"focusAccent",slot:z})),{id:"toast",kind:"toast"},{id:"sound",kind:"sound"},{id:"zen-keep-tasks",kind:"zenKeepTasks"},{id:yQ("chattab"),kind:"surface",surface:"chattab"},{id:yQ("taskpanel"),kind:"surface",surface:"taskpanel"},{id:"editor-kind",kind:"editorKind"},{id:"editor-custom",kind:"editorCustom"},{id:"worktree-base",kind:"worktreeBase"},{id:"worktree-custom",kind:"worktreeCustom"}]}function hu(J){return[...J.map((z)=>({id:Pu(z),kind:"engine",vendor:z})),{id:"add-engine",kind:"engineAdd"}]}function vu(){return[{id:"feedback-title",kind:"feedbackTitle"},{id:"feedback-body",kind:"feedbackBody"},{id:"feedback-send",kind:"feedbackSend"}]}function YG(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 tF(J,z){switch(J){case"general":return NW(z);case"engines":return hu(z.engineList);case"accounts":case"keys":return[];case"feedback":return vu();case"dev":return YG(z.hasDaemon)}}function XG(J,z){return J.findIndex((Z)=>Z.id===z)}function cj(J,z){return J[z]}var dY;var CW=C(()=>{sX();dY=[{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 eF(J){let{theme:z}=w0();return(()=>{var Z=W("box");return Q(Z,"flexDirection","column"),Q(Z,"flexShrink",0),Q(Z,"width",14),Q(Z,"gap",1),K(Z,k(Y1,{each:dY,children:(Y,X)=>{let G=()=>X()===J.cursor(),q=()=>G()&&J.level()==="sidebar";return(()=>{var H=W("box"),j=W("text");return D(H,j),Q(H,"paddingLeft",1),Q(H,"paddingRight",1),Q(H,"onMouseUp",()=>J.switchSection(Y.id)),Q(j,"wrapMode","none"),K(j,()=>M(`settings.sections.${Y.id}`)),u((B)=>{var V=q()?z.primary:void 0,f=q()?z.selectedListItemText:G()?z.accent:z.textMuted,U=G()?s0.BOLD:void 0;return V!==B.e&&(B.e=Q(H,"backgroundColor",V,B.e)),f!==B.t&&(B.t=Q(j,"fg",f,B.t)),U!==B.a&&(B.a=Q(j,"attributes",U,B.a)),B},{e:void 0,t:void 0,a:void 0}),H})()}})),Z})()}function J3(J){let z=w0(),{theme:Z}=z,Y=()=>NW({themeNames:J.themeNames(),focusAccentSlots:mY}),X=(l)=>XG(Y(),l),G=()=>X("transparent"),q=()=>X("toast"),H=()=>X("sound"),j=()=>X("zen-keep-tasks"),B=()=>X(yQ("chattab")),V=()=>X(yQ("taskpanel")),f=()=>X("editor-kind"),U=()=>X("editor-custom"),L=()=>X("worktree-base"),O=()=>X("worktree-custom"),A=()=>J.bodyRow()===G(),g=()=>J.bodyRow()===q(),E=()=>J.bodyRow()===H(),h=()=>J.bodyRow()===j(),I=()=>J.bodyRow()===B(),N=()=>J.bodyRow()===V(),F=()=>J.bodyRow()===f(),y=()=>J.bodyRow()===U(),c=()=>J.bodyRow()===L(),d=()=>J.bodyRow()===O();return(()=>{var l=W("box"),t=W("text"),X0=W("text"),q0=W("box"),f0=W("box"),_=W("text"),O0=W("text"),b=W("box"),p=W("text"),w=W("text"),R=W("box"),e=W("text"),x=W("box"),$=W("text"),G0=W("text"),H0=W("box"),L0=W("text"),F0=W("text"),E0=W("box"),b0=W("text"),e0=T0(" "),j1=W("box"),k0=W("text"),h0=T0(" "),N0=W("box"),o0=W("text"),m=W("text"),j0=W("box"),z0=W("text"),x0=T0(" "),n=W("box"),W0=W("text"),S0=W("text"),i0=W("box"),Z1=W("text"),l0=T0(" "),X1=W("box"),R1=W("text"),O1=T0(" "),Z0=W("box"),Q0=W("text"),U0=W("text"),g0=W("box"),V0=W("text"),P0=W("box"),I0=W("text"),p0=W("box"),y0=W("text"),u0=W("text"),Q1=W("box"),W1=W("text"),V1=W("box"),q1=W("text");return D(l,t),D(l,X0),D(l,q0),D(l,f0),D(l,b),D(l,x),D(l,H0),D(l,N0),D(l,n),D(l,Z0),D(l,p0),Q(l,"flexDirection","column"),Q(l,"gap",1),K(t,()=>M("settings.general.theme")),K(X0,()=>M("settings.general.themeHint")),Q(q0,"flexDirection","column"),Q(q0,"gap",0),K(q0,k(Y1,{get each(){return J.themeNames()},children:(S,M0)=>{let U1=()=>J.level()==="body"&&J.bodyRow()===M0(),L1=()=>S===z.selected;return(()=>{var c0=W("box"),t0=W("text");return D(c0,t0),Q(c0,"flexDirection","row"),Q(c0,"gap",1),Q(c0,"paddingLeft",1),Q(c0,"paddingRight",1),Q(c0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(M0()),J.setThemeCursor(M0()),J.selectTheme(S)}),Q(t0,"wrapMode","none"),K(t0,()=>L1()?"\u25CF ":" ",null),K(t0,S,null),u((v0)=>{var a=U1()?Z.primary:void 0,R0=U1()?Z.selectedListItemText:L1()?Z.accent:Z.text,J0=U1()||L1()?s0.BOLD:void 0;return a!==v0.e&&(v0.e=Q(c0,"backgroundColor",a,v0.e)),R0!==v0.t&&(v0.t=Q(t0,"fg",R0,v0.t)),J0!==v0.a&&(v0.a=Q(t0,"attributes",J0,v0.a)),v0},{e:void 0,t:void 0,a:void 0}),c0})()}})),D(f0,_),D(f0,O0),Q(f0,"flexDirection","column"),Q(f0,"gap",0),Q(f0,"paddingTop",1),K(_,()=>M("settings.general.language")),Q(O0,"wrapMode","word"),K(O0,()=>M("settings.general.languageHint")),K(f0,k(Y1,{each:pX,children:(S)=>{let M0=()=>X(RW(S.id)),U1=()=>J.level()==="body"&&J.bodyRow()===M0(),L1=()=>J.currentLocale()===S.id;return(()=>{var c0=W("box"),t0=W("text");return D(c0,t0),Q(c0,"flexDirection","row"),Q(c0,"gap",1),Q(c0,"paddingLeft",1),Q(c0,"paddingRight",1),Q(c0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(M0()),J.selectLanguage(S.id)}),Q(t0,"wrapMode","none"),K(t0,()=>L1()?"\u25CF ":" ",null),K(t0,()=>S.label,null),u((v0)=>{var a=U1()?Z.primary:void 0,R0=U1()?Z.selectedListItemText:L1()?Z.accent:Z.text,J0=U1()||L1()?s0.BOLD:void 0;return a!==v0.e&&(v0.e=Q(c0,"backgroundColor",a,v0.e)),R0!==v0.t&&(v0.t=Q(t0,"fg",R0,v0.t)),J0!==v0.a&&(v0.a=Q(t0,"attributes",J0,v0.a)),v0},{e:void 0,t:void 0,a:void 0}),c0})()}}),null),D(b,p),D(b,w),D(b,R),Q(b,"flexDirection","column"),Q(b,"gap",0),Q(b,"paddingTop",1),K(p,()=>M("settings.general.transparent")),Q(w,"wrapMode","word"),K(w,()=>M("settings.general.transparentHint")),D(R,e),Q(R,"flexDirection","row"),Q(R,"paddingLeft",1),Q(R,"paddingRight",1),Q(R,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(G()),J.toggleTransparent()}),Q(e,"wrapMode","none"),K(e,(()=>{var S=C0(()=>!!z.transparentBackground);return()=>S()?M("settings.general.on"):M("settings.general.off")})()),D(x,$),D(x,G0),Q(x,"flexDirection","column"),Q(x,"gap",0),Q(x,"paddingTop",1),K($,()=>M("settings.general.focusAccent")),Q(G0,"wrapMode","word"),K(G0,()=>M("settings.general.focusAccentHint")),K(x,k(Y1,{each:mY,children:(S)=>{let M0=()=>X(gW(S)),U1=()=>J.level()==="body"&&J.bodyRow()===M0(),L1=()=>z.focusAccent===S;return(()=>{var c0=W("box"),t0=W("text");return D(c0,t0),Q(c0,"flexDirection","row"),Q(c0,"gap",1),Q(c0,"paddingLeft",1),Q(c0,"paddingRight",1),Q(c0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(M0()),J.selectFocusAccent(S)}),Q(t0,"wrapMode","none"),K(t0,()=>L1()?"\u25CF ":" ",null),K(t0,()=>M(`settings.general.accent${S.charAt(0).toUpperCase()}${S.slice(1)}`),null),u((v0)=>{var a=U1()?Z.primary:void 0,R0=U1()?Z.selectedListItemText:L1()?Z.focusAccent:Z.text,J0=U1()||L1()?s0.BOLD:void 0;return a!==v0.e&&(v0.e=Q(c0,"backgroundColor",a,v0.e)),R0!==v0.t&&(v0.t=Q(t0,"fg",R0,v0.t)),J0!==v0.a&&(v0.a=Q(t0,"attributes",J0,v0.a)),v0},{e:void 0,t:void 0,a:void 0}),c0})()}}),null),D(H0,L0),D(H0,F0),D(H0,E0),D(H0,j1),Q(H0,"flexDirection","column"),Q(H0,"gap",0),Q(H0,"paddingTop",1),K(L0,()=>M("settings.general.notifications")),Q(F0,"wrapMode","word"),K(F0,()=>M("settings.general.notificationsHint")),D(E0,b0),Q(E0,"flexDirection","row"),Q(E0,"gap",1),Q(E0,"paddingLeft",1),Q(E0,"paddingRight",1),Q(E0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(q()),J.toggleToast()}),D(b0,e0),Q(b0,"wrapMode","none"),K(b0,()=>J.toastEnabled()?"[x]":"[ ]",e0),K(b0,()=>M("settings.general.toast"),null),D(j1,k0),Q(j1,"flexDirection","row"),Q(j1,"gap",1),Q(j1,"paddingLeft",1),Q(j1,"paddingRight",1),Q(j1,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(H()),J.toggleSound()}),D(k0,h0),Q(k0,"wrapMode","none"),K(k0,()=>J.soundEnabled()?"[x]":"[ ]",h0),K(k0,()=>M("settings.general.sound"),null),D(N0,o0),D(N0,m),D(N0,j0),Q(N0,"flexDirection","column"),Q(N0,"gap",0),Q(N0,"paddingTop",1),K(o0,()=>M("settings.general.zen")),Q(m,"wrapMode","word"),K(m,()=>M("settings.general.zenHint")),D(j0,z0),Q(j0,"flexDirection","row"),Q(j0,"gap",1),Q(j0,"paddingLeft",1),Q(j0,"paddingRight",1),Q(j0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(j()),J.toggleZenKeepsTasks()}),D(z0,x0),Q(z0,"wrapMode","none"),K(z0,()=>J.zenKeepsTasks()?"[x]":"[ ]",x0),K(z0,()=>M("settings.general.zenKeepTasks"),null),D(n,W0),D(n,S0),D(n,i0),D(n,X1),Q(n,"flexDirection","column"),Q(n,"gap",0),Q(n,"paddingTop",1),K(W0,()=>M("settings.general.surface")),Q(S0,"wrapMode","word"),K(S0,()=>M("settings.general.surfaceHint")),D(i0,Z1),Q(i0,"flexDirection","row"),Q(i0,"gap",1),Q(i0,"paddingLeft",1),Q(i0,"paddingRight",1),Q(i0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(B()),J.selectSurface("chattab")}),D(Z1,l0),Q(Z1,"wrapMode","none"),K(Z1,()=>J.settingsSurface()==="chattab"?"[x]":"[ ]",l0),K(Z1,()=>M("settings.general.surfaceChattab"),null),D(X1,R1),Q(X1,"flexDirection","row"),Q(X1,"gap",1),Q(X1,"paddingLeft",1),Q(X1,"paddingRight",1),Q(X1,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(V()),J.selectSurface("taskpanel")}),D(R1,O1),Q(R1,"wrapMode","none"),K(R1,()=>J.settingsSurface()==="taskpanel"?"[x]":"[ ]",O1),K(R1,()=>M("settings.general.surfaceTaskpanel"),null),D(Z0,Q0),D(Z0,U0),D(Z0,g0),D(Z0,P0),Q(Z0,"flexDirection","column"),Q(Z0,"gap",0),Q(Z0,"paddingTop",1),K(Q0,()=>M("settings.general.editor")),Q(U0,"wrapMode","word"),K(U0,()=>M("settings.general.editorHint")),D(g0,V0),Q(g0,"flexDirection","row"),Q(g0,"gap",1),Q(g0,"paddingLeft",1),Q(g0,"paddingRight",1),Q(g0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(f()),J.cycleEditorKind()}),Q(V0,"wrapMode","none"),K(V0,()=>M("settings.general.editorRow",{kind:J.editorKind()})),D(P0,I0),Q(P0,"flexDirection","row"),Q(P0,"gap",1),Q(P0,"paddingLeft",1),Q(P0,"paddingRight",1),Q(P0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(U()),J.editEditorCustom()}),Q(I0,"wrapMode","none"),K(I0,()=>M("settings.general.editorCustom",{cmd:J.editorCustomCommand().trim()||M("settings.general.editorCustomUnset")})),D(p0,y0),D(p0,u0),D(p0,Q1),D(p0,V1),Q(p0,"flexDirection","column"),Q(p0,"gap",0),Q(p0,"paddingTop",1),K(y0,()=>M("settings.general.worktree")),Q(u0,"wrapMode","word"),K(u0,()=>M("settings.general.worktreeHint")),D(Q1,W1),Q(Q1,"flexDirection","row"),Q(Q1,"gap",1),Q(Q1,"paddingLeft",1),Q(Q1,"paddingRight",1),Q(Q1,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(L()),J.cycleWorktreeBase()}),Q(W1,"wrapMode","none"),K(W1,()=>M("settings.general.worktreeBase",{kind:J.worktreeKindLabel()})),D(V1,q1),Q(V1,"flexDirection","row"),Q(V1,"gap",1),Q(V1,"paddingLeft",1),Q(V1,"paddingRight",1),Q(V1,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(O()),J.editWorktreeCustom()}),Q(q1,"wrapMode","none"),K(q1,()=>M("settings.general.worktreeCustom",{path:J.worktreeCustomPath()||M("settings.general.worktreeCustomUnset")})),u((S)=>{var M0=Z.text,U1=s0.BOLD,L1=Z.textMuted,c0=Z.text,t0=s0.BOLD,v0=Z.textMuted,a=Z.text,R0=s0.BOLD,J0=Z.textMuted,T=A()?Z.primary:void 0,D0=A()?Z.selectedListItemText:z.transparentBackground?Z.accent:Z.textMuted,T1=s0.BOLD,g1=Z.text,i1=s0.BOLD,v1=Z.textMuted,BJ=Z.text,mJ=s0.BOLD,B1=Z.textMuted,i=g()?Z.primary:void 0,r=g()?Z.selectedListItemText:J.toastEnabled()?Z.accent:Z.textMuted,o=s0.BOLD,v=E()?Z.primary:void 0,$0=E()?Z.selectedListItemText:J.soundEnabled()?Z.accent:Z.textMuted,m0=s0.BOLD,A0=Z.text,a0=s0.BOLD,K1=Z.textMuted,C1=h()?Z.primary:void 0,FJ=h()?Z.selectedListItemText:J.zenKeepsTasks()?Z.accent:Z.textMuted,Wz=s0.BOLD,RZ=Z.text,dW=s0.BOLD,nW=Z.textMuted,iW=I()?Z.primary:void 0,lW=I()?Z.selectedListItemText:J.settingsSurface()==="chattab"?Z.accent:Z.textMuted,$W=s0.BOLD,aW=N()?Z.primary:void 0,_W=N()?Z.selectedListItemText:J.settingsSurface()==="taskpanel"?Z.accent:Z.textMuted,pW=s0.BOLD,rW=Z.text,oW=s0.BOLD,sW=Z.textMuted,tW=F()?Z.primary:void 0,eW=F()?Z.selectedListItemText:Z.accent,JV=s0.BOLD,zV=y()?Z.primary:void 0,ZV=y()?Z.selectedListItemText:J.editorKind()==="custom"?Z.text:Z.textMuted,YV=Z.text,XV=s0.BOLD,GV=Z.textMuted,QV=c()?Z.primary:void 0,qV=c()?Z.selectedListItemText:Z.accent,HV=s0.BOLD,jV=d()?Z.primary:void 0,BV=d()?Z.selectedListItemText:J.worktreeKind()==="custom"?Z.text:Z.textMuted;return M0!==S.e&&(S.e=Q(t,"fg",M0,S.e)),U1!==S.t&&(S.t=Q(t,"attributes",U1,S.t)),L1!==S.a&&(S.a=Q(X0,"fg",L1,S.a)),c0!==S.o&&(S.o=Q(_,"fg",c0,S.o)),t0!==S.i&&(S.i=Q(_,"attributes",t0,S.i)),v0!==S.n&&(S.n=Q(O0,"fg",v0,S.n)),a!==S.s&&(S.s=Q(p,"fg",a,S.s)),R0!==S.h&&(S.h=Q(p,"attributes",R0,S.h)),J0!==S.r&&(S.r=Q(w,"fg",J0,S.r)),T!==S.d&&(S.d=Q(R,"backgroundColor",T,S.d)),D0!==S.l&&(S.l=Q(e,"fg",D0,S.l)),T1!==S.u&&(S.u=Q(e,"attributes",T1,S.u)),g1!==S.c&&(S.c=Q($,"fg",g1,S.c)),i1!==S.w&&(S.w=Q($,"attributes",i1,S.w)),v1!==S.m&&(S.m=Q(G0,"fg",v1,S.m)),BJ!==S.f&&(S.f=Q(L0,"fg",BJ,S.f)),mJ!==S.y&&(S.y=Q(L0,"attributes",mJ,S.y)),B1!==S.g&&(S.g=Q(F0,"fg",B1,S.g)),i!==S.p&&(S.p=Q(E0,"backgroundColor",i,S.p)),r!==S.b&&(S.b=Q(b0,"fg",r,S.b)),o!==S.T&&(S.T=Q(b0,"attributes",o,S.T)),v!==S.A&&(S.A=Q(j1,"backgroundColor",v,S.A)),$0!==S.O&&(S.O=Q(k0,"fg",$0,S.O)),m0!==S.I&&(S.I=Q(k0,"attributes",m0,S.I)),A0!==S.S&&(S.S=Q(o0,"fg",A0,S.S)),a0!==S.W&&(S.W=Q(o0,"attributes",a0,S.W)),K1!==S.C&&(S.C=Q(m,"fg",K1,S.C)),C1!==S.B&&(S.B=Q(j0,"backgroundColor",C1,S.B)),FJ!==S.v&&(S.v=Q(z0,"fg",FJ,S.v)),Wz!==S.k&&(S.k=Q(z0,"attributes",Wz,S.k)),RZ!==S.x&&(S.x=Q(W0,"fg",RZ,S.x)),dW!==S.j&&(S.j=Q(W0,"attributes",dW,S.j)),nW!==S.q&&(S.q=Q(S0,"fg",nW,S.q)),iW!==S.z&&(S.z=Q(i0,"backgroundColor",iW,S.z)),lW!==S.P&&(S.P=Q(Z1,"fg",lW,S.P)),$W!==S.H&&(S.H=Q(Z1,"attributes",$W,S.H)),aW!==S.F&&(S.F=Q(X1,"backgroundColor",aW,S.F)),_W!==S.M&&(S.M=Q(R1,"fg",_W,S.M)),pW!==S.D&&(S.D=Q(R1,"attributes",pW,S.D)),rW!==S.R&&(S.R=Q(Q0,"fg",rW,S.R)),oW!==S.E&&(S.E=Q(Q0,"attributes",oW,S.E)),sW!==S.L&&(S.L=Q(U0,"fg",sW,S.L)),tW!==S.N&&(S.N=Q(g0,"backgroundColor",tW,S.N)),eW!==S.G&&(S.G=Q(V0,"fg",eW,S.G)),JV!==S.U&&(S.U=Q(V0,"attributes",JV,S.U)),zV!==S.K&&(S.K=Q(P0,"backgroundColor",zV,S.K)),ZV!==S.V&&(S.V=Q(I0,"fg",ZV,S.V)),YV!==S.Y&&(S.Y=Q(y0,"fg",YV,S.Y)),XV!==S.J&&(S.J=Q(y0,"attributes",XV,S.J)),GV!==S.Q&&(S.Q=Q(u0,"fg",GV,S.Q)),QV!==S.Z&&(S.Z=Q(Q1,"backgroundColor",QV,S.Z)),qV!==S.X&&(S.X=Q(W1,"fg",qV,S.X)),HV!==S._&&(S._=Q(W1,"attributes",HV,S._)),jV!==S.$&&(S.$=Q(V1,"backgroundColor",jV,S.$)),BV!==S.te&&(S.te=Q(q1,"fg",BV,S.te)),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,w:void 0,m:void 0,f:void 0,y:void 0,g:void 0,p:void 0,b:void 0,T:void 0,A:void 0,O:void 0,I:void 0,S:void 0,W:void 0,C:void 0,B:void 0,v:void 0,k:void 0,x:void 0,j:void 0,q:void 0,z:void 0,P:void 0,H:void 0,F:void 0,M:void 0,D:void 0,R:void 0,E:void 0,L:void 0,N:void 0,G:void 0,U:void 0,K:void 0,V:void 0,Y:void 0,J:void 0,Q:void 0,Z:void 0,X:void 0,_:void 0,$:void 0,te:void 0}),l})()}function z3(J){let{theme:z}=w0(),Z=()=>J.vendors.length;return(()=>{var Y=W("box"),X=W("text"),G=W("text"),q=W("box"),H=W("box"),j=W("text");return D(Y,X),D(Y,G),D(Y,q),Q(Y,"flexDirection","column"),Q(Y,"gap",1),K(X,()=>M("settings.engines.title")),Q(G,"wrapMode","word"),K(G,()=>M("settings.engines.hint")),D(q,H),Q(q,"flexDirection","column"),Q(q,"gap",0),K(q,k(Y1,{get each(){return J.vendors},children:(B,V)=>{let f=()=>J.level()==="body"&&J.bodyRow()===V();return(()=>{var U=W("box"),L=W("text"),O=W("text"),A=W("text");return D(U,L),D(U,O),D(U,A),Q(U,"flexDirection","row"),Q(U,"gap",1),Q(U,"paddingLeft",1),Q(U,"paddingRight",1),Q(U,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(V()),J.editEngine(B)}),Q(L,"wrapMode","none"),K(L,()=>J.isDefaultEngine(B)?"\u25CF":" "),Q(O,"wrapMode","none"),K(O,()=>J.displayName(B)),Q(A,"wrapMode","none"),K(A,()=>J.commandText(B),null),K(A,(()=>{var g=C0(()=>!!J.isDefault(B));return()=>g()?M("settings.engines.defaultTag"):C0(()=>!!J.isCustom(B))()?M("settings.engines.customTag"):""})(),null),u((g)=>{var E=f()?z.primary:void 0,h=f()?z.selectedListItemText:z.accent,I=s0.BOLD,N=f()?z.selectedListItemText:z.text,F=s0.BOLD,y=f()?z.selectedListItemText:J.isDefault(B)?z.textMuted:z.accent;return E!==g.e&&(g.e=Q(U,"backgroundColor",E,g.e)),h!==g.t&&(g.t=Q(L,"fg",h,g.t)),I!==g.a&&(g.a=Q(L,"attributes",I,g.a)),N!==g.o&&(g.o=Q(O,"fg",N,g.o)),F!==g.i&&(g.i=Q(O,"attributes",F,g.i)),y!==g.n&&(g.n=Q(A,"fg",y,g.n)),g},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),U})()}}),H),D(H,j),Q(H,"flexDirection","row"),Q(H,"paddingLeft",1),Q(H,"paddingRight",1),Q(H,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(Z()),J.onAddEngine()}),Q(j,"wrapMode","none"),K(j,()=>M("settings.engines.addEngine")),u((B)=>{var V=z.text,f=s0.BOLD,U=z.textMuted,L=J.level()==="body"&&J.bodyRow()===Z()?z.primary:void 0,O=J.level()==="body"&&J.bodyRow()===Z()?z.selectedListItemText:z.primary;return V!==B.e&&(B.e=Q(X,"fg",V,B.e)),f!==B.t&&(B.t=Q(X,"attributes",f,B.t)),U!==B.a&&(B.a=Q(G,"fg",U,B.a)),L!==B.o&&(B.o=Q(H,"backgroundColor",L,B.o)),O!==B.i&&(B.i=Q(j,"fg",O,B.i)),B},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),Y})()}function Z3(J){let{theme:z}=w0(),Z=(Y)=>Y.binary.found?`Binary: ${Y.binary.path}`:`Binary: ${Y.binary.error}`;return(()=>{var Y=W("box"),X=W("text"),G=W("text"),q=W("box"),H=W("text"),j=W("box"),B=W("text"),V=W("box"),f=W("text");return D(Y,X),D(Y,G),D(Y,q),D(Y,j),D(Y,V),Q(Y,"flexDirection","column"),Q(Y,"gap",1),K(X,()=>M("settings.accounts.title")),Q(G,"wrapMode","word"),K(G,()=>M("settings.accounts.hint")),D(q,H),Q(q,"flexDirection","column"),Q(q,"gap",0),D(H,T0("claude-code")),K(q,k(Y0,{get when(){return J.claudeStatus()===null},get children(){var U=W("text");return K(U,()=>M("settings.accounts.checking")),u((L)=>Q(U,"fg",z.textMuted,L)),U}}),null),K(q,k(Y0,{get when(){return J.claudeStatus()},children:(U)=>(()=>{var L=W("box"),O=W("text");return D(L,O),Q(L,"flexDirection","column"),Q(L,"gap",0),Q(O,"wrapMode","word"),K(O,()=>Z(U())),K(L,()=>{let A=U().account;if(A.kind==="oauth"){let g=[A.organization,A.billingType].filter((E)=>!!E).join(" \xB7 ");return(()=>{var E=W("text");return Q(E,"wrapMode","word"),K(E,()=>M("settings.accounts.loggedIn",{email:A.email}),null),K(E,g?` (${g})`:"",null),u((h)=>Q(E,"fg",z.success,h)),E})()}return(()=>{var g=W("text");return K(g,()=>M("settings.accounts.notLoggedIn")),u((E)=>Q(g,"fg",z.textMuted,E)),g})()},null),K(L,k(Y0,{get when(){return U().accountError},children:(A)=>(()=>{var g=W("text");return Q(g,"wrapMode","word"),K(g,()=>`! ${A()}`),u((E)=>Q(g,"fg",z.warning,E)),g})()}),null),u((A)=>Q(O,"fg",U().binary.found?z.textMuted:z.warning,A)),L})()}),null),D(j,B),Q(j,"flexDirection","column"),Q(j,"gap",0),D(B,T0("codex")),K(j,k(Y0,{get when(){return J.codexStatus()===null},get children(){var U=W("text");return K(U,()=>M("settings.accounts.checking")),u((L)=>Q(U,"fg",z.textMuted,L)),U}}),null),K(j,k(Y0,{get when(){return J.codexStatus()},children:(U)=>(()=>{var L=W("box"),O=W("text");return D(L,O),Q(L,"flexDirection","column"),Q(L,"gap",0),Q(O,"wrapMode","word"),K(O,()=>Z(U())),K(L,()=>{let A=U().account;if(A.kind==="chatgpt")return(()=>{var g=W("text");return Q(g,"wrapMode","word"),K(g,()=>M("settings.accounts.chatgptLogin",{email:A.email}),null),K(g,(()=>{var E=C0(()=>!!A.plan);return()=>E()?` (${A.plan})`:""})(),null),u((E)=>Q(g,"fg",z.success,E)),g})();if(A.kind==="apikey")return(()=>{var g=W("text");return K(g,()=>M("settings.accounts.apiKeyConfigured")),u((E)=>Q(g,"fg",z.success,E)),g})();return(()=>{var g=W("text");return K(g,()=>M("settings.accounts.notLoggedIn")),u((E)=>Q(g,"fg",z.textMuted,E)),g})()},null),K(L,k(Y0,{get when(){return U().accountError},children:(A)=>(()=>{var g=W("text");return Q(g,"wrapMode","word"),K(g,()=>`! ${A()}`),u((E)=>Q(g,"fg",z.warning,E)),g})()}),null),u((A)=>Q(O,"fg",U().binary.found?z.textMuted:z.warning,A)),L})()}),null),D(V,f),Q(V,"flexDirection","column"),Q(V,"gap",0),D(f,T0("copilot")),K(V,k(Y0,{get when(){return J.copilotStatus()===null},get children(){var U=W("text");return K(U,()=>M("settings.accounts.checking")),u((L)=>Q(U,"fg",z.textMuted,L)),U}}),null),K(V,k(Y0,{get when(){return J.copilotStatus()},children:(U)=>(()=>{var L=W("box"),O=W("text");return D(L,O),Q(L,"flexDirection","column"),Q(L,"gap",0),Q(O,"wrapMode","word"),K(O,()=>Z(U())),K(L,()=>{let A=U().account;if(A.kind==="token")return(()=>{var g=W("text");return K(g,()=>M("settings.accounts.tokenConfigured",{source:A.source})),u((E)=>Q(g,"fg",z.success,E)),g})();if(A.kind==="oauth")return(()=>{var g=W("text");return K(g,()=>M("settings.accounts.copilotDetected")),u((E)=>Q(g,"fg",z.success,E)),g})();return(()=>{var g=W("text");return K(g,()=>M("settings.accounts.notLoggedIn")),u((E)=>Q(g,"fg",z.textMuted,E)),g})()},null),K(L,k(Y0,{get when(){return U().accountError},children:(A)=>(()=>{var g=W("text");return Q(g,"wrapMode","word"),K(g,()=>`! ${A()}`),u((E)=>Q(g,"fg",z.warning,E)),g})()}),null),u((A)=>Q(O,"fg",U().binary.found?z.textMuted:z.warning,A)),L})()}),null),u((U)=>{var L=z.text,O=s0.BOLD,A=z.textMuted,g=z.text,E=s0.BOLD,h=z.text,I=s0.BOLD,N=z.text,F=s0.BOLD;return L!==U.e&&(U.e=Q(X,"fg",L,U.e)),O!==U.t&&(U.t=Q(X,"attributes",O,U.t)),A!==U.a&&(U.a=Q(G,"fg",A,U.a)),g!==U.o&&(U.o=Q(H,"fg",g,U.o)),E!==U.i&&(U.i=Q(H,"attributes",E,U.i)),h!==U.n&&(U.n=Q(B,"fg",h,U.n)),I!==U.s&&(U.s=Q(B,"attributes",I,U.s)),N!==U.h&&(U.h=Q(f,"fg",N,U.h)),F!==U.r&&(U.r=Q(f,"attributes",F,U.r)),U},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0}),Y})()}function Y3(J){let{theme:z}=w0(),Z=()=>J.level()==="body",Y=()=>Z()&&J.bodyRow()===0,X=()=>Z()&&J.bodyRow()===1,G=()=>Z()&&J.bodyRow()===2,q=(B)=>B?z.primary:z.textMuted,H=(B)=>B?s0.BOLD|s0.UNDERLINE:void 0,j;return d0(()=>{if(J.body()===""&&j&&j.plainText!=="")j.setText("")}),(()=>{var B=W("box"),V=W("text"),f=W("text"),U=W("box"),L=W("box"),O=W("text"),A=W("input"),g=W("box"),E=W("text"),h=W("textarea"),I=W("box"),N=W("text");return D(B,V),D(B,f),D(B,U),Q(B,"flexDirection","column"),Q(B,"gap",1),K(V,()=>M("settings.feedback.title")),Q(f,"wrapMode","word"),K(f,()=>M("settings.feedback.hint")),D(U,L),D(U,g),D(U,I),Q(U,"flexDirection","column"),Q(U,"gap",1),D(L,O),D(L,A),Q(L,"gap",0),K(O,()=>M("settings.feedback.titleLabel")),Q(A,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(0)}),Q(A,"onInput",(F)=>J.setTitle(CJ(F))),Q(A,"onSubmit",()=>J.onTitleSubmit()),D(g,E),D(g,h),Q(g,"gap",0),K(E,()=>M("settings.feedback.descriptionLabel")),Hz((F)=>{j=F},h),Q(h,"height",4),Q(h,"wrapMode","word"),Q(h,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(1)}),Q(h,"onContentChange",()=>J.setBody(j?.plainText??"")),D(I,N),Q(I,"flexDirection","row"),Q(I,"paddingLeft",1),Q(I,"paddingRight",1),Q(I,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(2),J.submit()}),K(N,()=>M("settings.feedback.send")),K(B,k(Y0,{get when(){return J.status()},get children(){var F=W("text");return Q(F,"wrapMode","word"),K(F,()=>J.status()),u((y)=>Q(F,"fg",J.status().startsWith("error:")?z.warning:z.success,y)),F}}),null),u((F)=>{var y=z.text,c=s0.BOLD,d=z.textMuted,l=q(Y()),t=H(Y()),X0=J.title(),q0=M("settings.feedback.titlePlaceholder"),f0=Y(),_=q(X()),O0=H(X()),b=J.body(),p=M("settings.feedback.descriptionPlaceholder"),w=X(),R=G()?z.primary:z.backgroundElement,e=G()?z.selectedListItemText:z.accent,x=s0.BOLD;return y!==F.e&&(F.e=Q(V,"fg",y,F.e)),c!==F.t&&(F.t=Q(V,"attributes",c,F.t)),d!==F.a&&(F.a=Q(f,"fg",d,F.a)),l!==F.o&&(F.o=Q(O,"fg",l,F.o)),t!==F.i&&(F.i=Q(O,"attributes",t,F.i)),X0!==F.n&&(F.n=Q(A,"value",X0,F.n)),q0!==F.s&&(F.s=Q(A,"placeholder",q0,F.s)),f0!==F.h&&(F.h=Q(A,"focused",f0,F.h)),_!==F.r&&(F.r=Q(E,"fg",_,F.r)),O0!==F.d&&(F.d=Q(E,"attributes",O0,F.d)),b!==F.l&&(F.l=Q(h,"initialValue",b,F.l)),p!==F.u&&(F.u=Q(h,"placeholder",p,F.u)),w!==F.c&&(F.c=Q(h,"focused",w,F.c)),R!==F.w&&(F.w=Q(I,"backgroundColor",R,F.w)),e!==F.m&&(F.m=Q(N,"fg",e,F.m)),x!==F.f&&(F.f=Q(N,"attributes",x,F.f)),F},{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 X3(J){let{theme:z}=w0(),Z=()=>J.level()==="body"&&J.bodyRow()===0,Y=()=>J.level()==="body"&&J.bodyRow()===1,X=()=>XG(YG(J.hasDaemon),"remote-projects"),G=()=>J.level()==="body"&&J.bodyRow()===X(),q=()=>XG(YG(J.hasDaemon),"auto-status"),H=()=>J.level()==="body"&&J.bodyRow()===q(),j=()=>XG(YG(J.hasDaemon),"dispatcher"),B=()=>J.level()==="body"&&J.bodyRow()===j(),V=()=>XG(YG(J.hasDaemon),"archived-history"),f=()=>J.level()==="body"&&J.bodyRow()===V();return(()=>{var U=W("box"),L=W("text"),O=W("text"),A=W("box"),g=W("text"),E=W("text"),h=W("box"),I=W("text"),N=W("text"),F=W("box"),y=W("text"),c=W("text"),d=W("box"),l=W("text"),t=W("text"),X0=W("box"),q0=W("text"),f0=W("text"),_=W("box"),O0=W("text");return D(U,L),D(U,O),D(U,A),D(U,E),D(U,h),Q(U,"flexDirection","column"),Q(U,"gap",1),K(L,()=>M("settings.dev.reset")),Q(O,"wrapMode","word"),K(O,()=>M("settings.dev.resetHint")),D(A,g),Q(A,"flexDirection","row"),Q(A,"paddingLeft",1),Q(A,"paddingRight",1),Q(A,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(0),J.confirmReset()}),K(g,()=>M("settings.dev.resetButton")),K(U,k(Y0,{get when(){return J.hasDaemon},get children(){var b=W("box"),p=W("text"),w=W("text"),R=W("box"),e=W("text");return D(b,p),D(b,w),D(b,R),Q(b,"flexDirection","column"),Q(b,"gap",0),Q(b,"paddingTop",1),K(p,()=>M("settings.dev.restart")),Q(w,"wrapMode","word"),K(w,()=>M("settings.dev.restartHint")),D(R,e),Q(R,"flexDirection","row"),Q(R,"paddingLeft",1),Q(R,"paddingRight",1),Q(R,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(1),J.confirmRestartDaemon()}),K(e,()=>M("settings.dev.restartButton")),u((x)=>{var $=z.text,G0=s0.BOLD,H0=z.textMuted,L0=Y()?z.primary:z.backgroundElement,F0=Y()?z.selectedListItemText:z.accent,E0=s0.BOLD;return $!==x.e&&(x.e=Q(p,"fg",$,x.e)),G0!==x.t&&(x.t=Q(p,"attributes",G0,x.t)),H0!==x.a&&(x.a=Q(w,"fg",H0,x.a)),L0!==x.o&&(x.o=Q(R,"backgroundColor",L0,x.o)),F0!==x.i&&(x.i=Q(e,"fg",F0,x.i)),E0!==x.n&&(x.n=Q(e,"attributes",E0,x.n)),x},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),b}}),E),Q(E,"wrapMode","word"),K(E,()=>M("settings.dev.doctorHint")),D(h,I),D(h,N),D(h,F),D(h,c),D(h,d),D(h,t),D(h,X0),D(h,f0),D(h,_),Q(h,"flexDirection","column"),Q(h,"gap",0),Q(h,"paddingTop",1),K(I,()=>M("settings.dev.experimental")),Q(N,"wrapMode","word"),K(N,()=>M("settings.dev.remoteHint")),D(F,y),Q(F,"flexDirection","row"),Q(F,"paddingLeft",1),Q(F,"paddingRight",1),Q(F,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(X()),J.toggleRemoteProjects()}),K(y,(()=>{var b=C0(()=>!!J.remoteProjectsEnabled());return()=>b()?M("settings.dev.remoteOn"):M("settings.dev.remoteOff")})()),Q(c,"wrapMode","word"),K(c,()=>M("settings.dev.autoStatusHint")),D(d,l),Q(d,"flexDirection","row"),Q(d,"paddingLeft",1),Q(d,"paddingRight",1),Q(d,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(q()),J.toggleAutoStatus()}),K(l,(()=>{var b=C0(()=>!!J.autoStatusEnabled());return()=>b()?M("settings.dev.autoStatusOn"):M("settings.dev.autoStatusOff")})()),Q(t,"wrapMode","word"),K(t,()=>M("settings.dev.dispatcherHint")),D(X0,q0),Q(X0,"flexDirection","row"),Q(X0,"paddingLeft",1),Q(X0,"paddingRight",1),Q(X0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(j()),J.toggleDispatcher()}),K(q0,(()=>{var b=C0(()=>!!J.dispatcherEnabled());return()=>b()?M("settings.dev.dispatcherOn"):M("settings.dev.dispatcherOff")})()),Q(f0,"wrapMode","word"),K(f0,()=>M("settings.dev.archivedHistoryHint")),D(_,O0),Q(_,"flexDirection","row"),Q(_,"paddingLeft",1),Q(_,"paddingRight",1),Q(_,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(V()),J.toggleArchivedHistory()}),K(O0,(()=>{var b=C0(()=>!!J.archivedHistoryEnabled());return()=>b()?M("settings.dev.archivedHistoryOn"):M("settings.dev.archivedHistoryOff")})()),u((b)=>{var p=z.text,w=s0.BOLD,R=z.textMuted,e=Z()?z.primary:z.backgroundElement,x=Z()?z.selectedListItemText:z.warning,$=s0.BOLD,G0=z.textMuted,H0=z.text,L0=s0.BOLD,F0=z.textMuted,E0=G()?z.primary:z.backgroundElement,b0=G()?z.selectedListItemText:z.text,e0=J.remoteProjectsEnabled()?s0.BOLD:void 0,j1=z.textMuted,k0=H()?z.primary:z.backgroundElement,h0=H()?z.selectedListItemText:z.text,N0=J.autoStatusEnabled()?s0.BOLD:void 0,o0=z.textMuted,m=B()?z.primary:z.backgroundElement,j0=B()?z.selectedListItemText:z.text,z0=J.dispatcherEnabled()?s0.BOLD:void 0,x0=z.textMuted,n=f()?z.primary:z.backgroundElement,W0=f()?z.selectedListItemText:z.text,S0=J.archivedHistoryEnabled()?s0.BOLD:void 0;return p!==b.e&&(b.e=Q(L,"fg",p,b.e)),w!==b.t&&(b.t=Q(L,"attributes",w,b.t)),R!==b.a&&(b.a=Q(O,"fg",R,b.a)),e!==b.o&&(b.o=Q(A,"backgroundColor",e,b.o)),x!==b.i&&(b.i=Q(g,"fg",x,b.i)),$!==b.n&&(b.n=Q(g,"attributes",$,b.n)),G0!==b.s&&(b.s=Q(E,"fg",G0,b.s)),H0!==b.h&&(b.h=Q(I,"fg",H0,b.h)),L0!==b.r&&(b.r=Q(I,"attributes",L0,b.r)),F0!==b.d&&(b.d=Q(N,"fg",F0,b.d)),E0!==b.l&&(b.l=Q(F,"backgroundColor",E0,b.l)),b0!==b.u&&(b.u=Q(y,"fg",b0,b.u)),e0!==b.c&&(b.c=Q(y,"attributes",e0,b.c)),j1!==b.w&&(b.w=Q(c,"fg",j1,b.w)),k0!==b.m&&(b.m=Q(d,"backgroundColor",k0,b.m)),h0!==b.f&&(b.f=Q(l,"fg",h0,b.f)),N0!==b.y&&(b.y=Q(l,"attributes",N0,b.y)),o0!==b.g&&(b.g=Q(t,"fg",o0,b.g)),m!==b.p&&(b.p=Q(X0,"backgroundColor",m,b.p)),j0!==b.b&&(b.b=Q(q0,"fg",j0,b.b)),z0!==b.T&&(b.T=Q(q0,"attributes",z0,b.T)),x0!==b.A&&(b.A=Q(f0,"fg",x0,b.A)),n!==b.O&&(b.O=Q(_,"backgroundColor",n,b.O)),W0!==b.I&&(b.I=Q(O0,"fg",W0,b.I)),S0!==b.S&&(b.S=Q(O0,"attributes",S0,b.S)),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,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}),U})()}function G3(){let{theme:J}=w0(),z=FF(),Z=Object.keys(CB).sort();return(()=>{var Y=W("box"),X=W("text"),G=W("text"),q=W("box"),H=W("text"),j=W("text"),B=W("text"),V=W("text");return D(Y,X),D(Y,G),D(Y,q),D(Y,B),D(Y,V),Q(Y,"flexDirection","column"),Q(Y,"gap",1),K(X,()=>M("settings.keybindings.title")),Q(G,"wrapMode","word"),K(G,()=>M("settings.keybindings.hint")),D(q,H),D(q,j),Q(q,"flexDirection","column"),Q(q,"gap",0),K(H,()=>M("settings.keybindings.configFile")),Q(j,"wrapMode","word"),K(j,()=>z.path,null),K(j,(()=>{var f=C0(()=>!!z.exists);return()=>f()?"":M("settings.keybindings.notCreated")})(),null),K(Y,k(Y0,{get when(){return!z.exists},get children(){var f=W("box"),U=W("text"),L=W("text"),O=W("text"),A=W("text"),g=W("text"),E=W("text"),h=W("text"),I=W("text"),N=W("text"),F=W("text");return D(f,U),D(f,L),D(f,O),D(f,A),D(f,g),D(f,E),D(f,h),D(f,I),D(f,N),D(f,F),Q(f,"flexDirection","column"),Q(f,"gap",0),K(U,()=>M("settings.keybindings.example")),D(L,T0("bindings:")),D(O,T0(" chat.fork.new: ctrl+g # string = one chord")),D(A,T0(" sidebar.select: [enter] # list = several chords")),D(g,T0(" files.createPR: null # null = unbind")),D(E,T0(" tmux.tab.new: ctrl+y # tmux session key (see below)")),D(h,T0(" tmux.layout.workspaceSplit: g # prefix g")),D(I,T0("darwin: # platform overlay (also: linux)")),D(N,T0(" bindings:")),D(F,T0(" palette.open: [cmd+p, ctrl+p]")),u((y)=>{var c=J.text,d=s0.BOLD,l=J.textMuted,t=J.textMuted,X0=J.textMuted,q0=J.textMuted,f0=J.textMuted,_=J.textMuted,O0=J.textMuted,b=J.textMuted,p=J.textMuted;return c!==y.e&&(y.e=Q(U,"fg",c,y.e)),d!==y.t&&(y.t=Q(U,"attributes",d,y.t)),l!==y.a&&(y.a=Q(L,"fg",l,y.a)),t!==y.o&&(y.o=Q(O,"fg",t,y.o)),X0!==y.i&&(y.i=Q(A,"fg",X0,y.i)),q0!==y.n&&(y.n=Q(g,"fg",q0,y.n)),f0!==y.s&&(y.s=Q(E,"fg",f0,y.s)),_!==y.h&&(y.h=Q(h,"fg",_,y.h)),O0!==y.r&&(y.r=Q(I,"fg",O0,y.r)),b!==y.d&&(y.d=Q(N,"fg",b,y.d)),p!==y.l&&(y.l=Q(F,"fg",p,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}),f}}),B),K(Y,k(Y0,{get when(){return z.exists},get children(){var f=W("box"),U=W("text");return D(f,U),Q(f,"flexDirection","column"),Q(f,"gap",0),K(U,()=>M("settings.keybindings.overridesApplied")),K(f,k(Y0,{get when(){return z.applied.length===0},get children(){var L=W("text");return K(L,()=>M("settings.keybindings.none")),u((O)=>Q(L,"fg",J.textMuted,O)),L}}),null),K(f,k(Y1,{get each(){return z.applied},children:(L)=>(()=>{var O=W("text");return Q(O,"wrapMode","word"),K(O,()=>`${L.id} \u2192 ${L.keys.length>0?L.keys.join(" / "):"(unbound)"} (default: ${L.defaultKeys.join(" / ")})`),u((A)=>Q(O,"fg",J.text,A)),O})()}),null),u((L)=>{var O=J.text,A=s0.BOLD;return O!==L.e&&(L.e=Q(U,"fg",O,L.e)),A!==L.t&&(L.t=Q(U,"attributes",A,L.t)),L},{e:void 0,t:void 0}),f}}),B),K(Y,k(Y0,{get when(){return z.warnings.length>0},get children(){var f=W("box"),U=W("text");return D(f,U),Q(f,"flexDirection","column"),Q(f,"gap",0),K(U,()=>M("settings.keybindings.warnings")),K(f,k(Y1,{get each(){return z.warnings},children:(L)=>(()=>{var O=W("text");return Q(O,"wrapMode","word"),K(O,`! ${L}`),u((A)=>Q(O,"fg",J.warning,A)),O})()}),null),u((L)=>{var O=J.warning,A=s0.BOLD;return O!==L.e&&(L.e=Q(U,"fg",O,L.e)),A!==L.t&&(L.t=Q(U,"attributes",A,L.t)),L},{e:void 0,t:void 0}),f}}),B),D(B,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(B,"wrapMode","word"),Q(V,"wrapMode","word"),K(V,()=>`Fixed (not rebindable): ${Z.join(", ")}.`),u((f)=>{var U=J.text,L=s0.BOLD,O=J.textMuted,A=J.text,g=s0.BOLD,E=J.textMuted,h=J.textMuted,I=J.textMuted;return U!==f.e&&(f.e=Q(X,"fg",U,f.e)),L!==f.t&&(f.t=Q(X,"attributes",L,f.t)),O!==f.a&&(f.a=Q(G,"fg",O,f.a)),A!==f.o&&(f.o=Q(H,"fg",A,f.o)),g!==f.i&&(f.i=Q(H,"attributes",g,f.i)),E!==f.n&&(f.n=Q(j,"fg",E,f.n)),h!==f.s&&(f.s=Q(B,"fg",h,f.s)),I!==f.h&&(f.h=Q(V,"fg",I,f.h)),f},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0}),Y})()}var Q3=C(()=>{P();P();P();P();P();P();P();P();P();D1();QW();d1();jJ();sX();rq();tX();CW()});import{accessSync as mu,constants as cu,mkdirSync as du}from"fs";import{TextAttributes as nu}from"@opentui/core";function iu(J){return J.split(/[-_]+/).filter((z)=>z.length>0).map((z)=>z.charAt(0).toUpperCase()+z.slice(1)).join(" ")}function nY(J){let z=a1(),Z=w0(),Y=VJ(),{theme:X}=Z,[G,q]=s("sidebar"),[H,j]=s("general"),[B,V]=s(0),[f,U]=s(0),[L,O]=s(""),[A,g]=s(""),[E,h]=s(""),I=K0(()=>Z.all().slice().sort()),[,N]=s(Math.max(0,I().findIndex((T)=>T===Z.selected))),F=rF(J.orchestrator),[y,c]=s(null),[d,l]=s(null),[t,X0]=s(null),q0=!1;d0(()=>{if(H()!=="accounts"||q0)return;q0=!0,Qq().then(c),qq().then(l),Hq().then(X0)});function f0(){return tF(H(),{themeNames:I(),focusAccentSlots:mY,engineList:x0(),hasDaemon:F})}function _(){return f0().length}function O0(){return xY(J.kv.get(VZ,TY))}function b(T){if(Z.selected===T)return;if(!Z.set(T))return;J.kv.set("activeTheme",T),J.onVisualPrefsChange?.()}function p(){return v8()}function w(T){if(v8()===T)return;gQ(T),J.kv.set(Tj,T),J.onVisualPrefsChange?.()}function R(T){if(Z.transparentBackground===T)return;Z.setTransparentBackground(T),J.kv.set("transparentBackground",T),J.onVisualPrefsChange?.()}function e(){R(!Z.transparentBackground)}function x(T){if(Z.focusAccent===T)return;Z.setFocusAccent(T),J.kv.set("focusAccent",T),J.onVisualPrefsChange?.()}function $(T){J.kv.set(VZ,T)}function G0(){return J.kv.get("notifications.toast.enabled",!0)!==!1}function H0(){return J.kv.get("notifications.sound.enabled",!0)!==!1}function L0(){J.kv.set("notifications.toast.enabled",!G0())}function F0(){J.kv.set("notifications.sound.enabled",!H0())}function E0(){return J.kv.get(BH,!0)!==!1}function b0(){J.kv.set(BH,!E0())}function e0(){return J.kv.get("experimental.remoteProjects",!1)===!0}function j1(){J.kv.set("experimental.remoteProjects",!e0())}function k0(){return J.kv.get(DY,!1)===!0}function h0(){J.kv.set(DY,!k0())}function N0(){return J.kv.get(LY,!1)===!0}function o0(){J.kv.set(LY,!N0())}function m(){return J.kv.get(xG,!1)===!0}function j0(){J.kv.set(xG,!m())}function z0(){let T=J.kv.get("customEngineIds",[]);return Array.isArray(T)?T.filter((D0)=>typeof D0==="string"&&D0.trim().length>0):[]}function x0(){return[...o1,...z0()]}function n(T){let D0=J.kv.get(Rz(T),"");return typeof D0==="string"?D0.trim():""}function W0(T){return n(T)||TG(T).join(" ")}function S0(T){return UJ(T)&&n(T).length===0&&!Z1(T)}function i0(T){let D0=J.kv.get(gz(T),"");return typeof D0==="string"?D0.trim():""}function Z1(T){return i0(T).length>0}function l0(T){return i0(T)||RB[T]||T}let[X1,R1]=s(cJ(x1("lastSelectedVendor"),z0()));function O1(T){return X1()===T}function Z0(T){GJ("lastSelectedVendor",T),J.kv.set("lastSelectedVendor",T),R1(T)}async function Q0(T){let D0=await oz.show(z,W0(T),{dialogTitle:`${l0(T)} launch command`,fieldLabel:"command",submitLabel:"save",allowEmpty:!0});if(D0===void 0)return;J.kv.set(Rz(T),D0.trim())}async function U0(T){let D0=await oz.show(z,l0(T),{dialogTitle:`${l0(T)} display name (blank = default)`,fieldLabel:"name",submitLabel:"save",allowEmpty:!0});if(D0===void 0)return;J.kv.set(gz(T),D0.trim())}function g0(T){if(J.kv.set(Rz(T),""),J.kv.set(gz(T),""),!UJ(T))J.kv.set("customEngineIds",z0().filter((D0)=>D0!==T)),U((D0)=>Math.max(0,Math.min(D0,x0().length)))}async function V0(){let T=await oz.show(z,"",{dialogTitle:"Add engine",fieldLabel:"id",submitLabel:"next",placeholder:"lowercase slug, e.g. aider"});if(T===void 0)return;let D0=T.trim().toLowerCase();if(!D0||UJ(D0)||z0().includes(D0))return;let T1=await oz.show(z,"",{dialogTitle:`Add engine \xB7 ${D0}`,fieldLabel:"command",submitLabel:"next",placeholder:"e.g. aider --model sonnet"});if(T1===void 0)return;let g1=await oz.show(z,D0,{dialogTitle:`Add engine \xB7 ${D0}`,fieldLabel:"name",submitLabel:"add",allowEmpty:!0});if(J.kv.set("customEngineIds",[...z0(),D0]),T1.trim())J.kv.set(Rz(D0),T1.trim());let i1=g1?.trim()??"";J.kv.set(gz(D0),i1&&i1!==D0?i1:iu(D0))}function P0(){if(H()!=="engines"||G()!=="body")return null;let T=cj(f0(),f());return T?.kind==="engine"?T.vendor:null}function I0(){return yX(J.kv.get(WZ,PH))}function p0(){let T=yY.indexOf(I0()),D0=yY[(T+1)%yY.length];if(D0)J.kv.set(WZ,D0)}function y0(){let T=J.kv.get(lZ,"");return typeof T==="string"?T:""}async function u0(){let T=await oz.show(z,y0(),{dialogTitle:"Custom editor command (use {file} for the path)",fieldLabel:"command",submitLabel:"save",allowEmpty:!0});if(T===void 0)return;let D0=T.trim();if(J.kv.set(lZ,D0),D0)J.kv.set(WZ,"custom")}function Q1(){let T=J.kv.get(PZ,"");return typeof T==="string"?T:""}let W1=()=>yU(Q1());function V1(){let T=W1();if(T==="default")return M("settings.general.worktreeKindDefault");if(T==="nextToProject")return M("settings.general.worktreeKindNext");return M("settings.general.worktreeKindCustom")}function q1(){let T=J.kv.get(mq,"");return(typeof T==="string"?T.trim():"")||(W1()==="custom"?Q1().trim():"")}function S(){let T=W1();if(T==="default")J.kv.set(PZ,UB);else if(T==="nextToProject")J.kv.set(PZ,q1());else J.kv.set(mq,Q1().trim()),J.kv.set(PZ,"")}async function M0(){let T=await oz.show(z,q1(),{dialogTitle:M("settings.general.worktreeBaseTitle"),fieldLabel:M("settings.general.worktreeBaseField"),submitLabel:"save",placeholder:`${jZ}/../worktrees`,allowEmpty:!0});if(T===void 0)return;let D0=T.trim();if(D0.includes(jZ)){if(!KB(D0)){await fz.show(z,"Can't use that worktree location",`${jZ} only expands as the leading path segment (e.g. ${jZ}/../kobe-worktrees). Keeping the previous setting.`,"cancel");return}}else if(D0){let T1=DB(D0)??D0;try{du(T1,{recursive:!0}),mu(T1,cu.W_OK)}catch(g1){await fz.show(z,"Can't use that worktree location",`${T1} isn't usable (${g1 instanceof Error?g1.message:String(g1)}). Keeping the previous setting \u2014 pick a writable directory.`,"cancel");return}}if(J.kv.set(mq,D0),D0)J.kv.set(PZ,D0);else if(W1()==="custom")J.kv.set(PZ,"")}async function U1(){h("submitting...");try{let T=dX({title:L(),body:A()});h(`sent: ${T.url}`),O(""),g(""),U(0)}catch(T){h(`error: ${T instanceof Error?T.message:String(T)}`)}}let L1=()=>H()==="feedback"&&G()==="body";function c0(T){let D0=f()+T;if(D0<0||D0>2){q("sidebar");return}U(D0)}function t0(){if(G()!=="sidebar"||_()===0)return;if(q("body"),U(0),H()==="general")N(0)}function v0(T){if(G()==="sidebar"){let g1=(B()+T+dY.length)%dY.length;V(g1);let i1=dY[g1];if(i1)j(i1.id),U(0);return}let D0=_();if(D0===0)return;let T1=(f()+T+D0)%D0;if(U(T1),cj(f0(),T1)?.kind==="theme")N(T1)}function a(T){j(T),V(dY.findIndex((D0)=>D0.id===T)),U(0),q("sidebar")}let R0={theme:(T)=>b(T.name),language:(T)=>w(T.locale),transparent:()=>e(),focusAccent:(T)=>x(T.slot),toast:()=>L0(),sound:()=>F0(),zenKeepTasks:()=>b0(),surface:(T)=>$(T.surface),editorKind:()=>p0(),editorCustom:()=>void u0(),worktreeBase:()=>S(),worktreeCustom:()=>void M0(),engine:(T)=>void Q0(T.vendor),engineAdd:()=>void V0(),feedbackTitle:()=>U(0),feedbackBody:()=>U(1),feedbackSend:()=>void U1(),devReset:()=>void OW(z,J.kv,Y),devRestartDaemon:()=>void AW(z,J.orchestrator,Y),devRemoteProjects:()=>j1(),devAutoStatus:()=>h0(),devDispatcher:()=>o0(),devArchivedHistory:()=>j0()};function J0(){let T=cj(f0(),f());if(!T)return;R0[T.kind](T)}return F1(()=>({enabled:(!J.standalone||z.stack.length===0)&&!L1(),bindings:[{key:"down",cmd:()=>v0(1)},{key:"up",cmd:()=>v0(-1)},{key:"j",cmd:()=>v0(1)},{key:"k",cmd:()=>v0(-1)},{key:"tab",cmd:()=>v0(1)},{key:"right",cmd:t0},{key:"l",cmd:t0},{key:"left",cmd:()=>q("sidebar")},{key:"h",cmd:()=>q("sidebar")},{key:"return",cmd:()=>{if(G()==="sidebar"){t0();return}J0()}},{key:"t",cmd:e},{key:"r",cmd:()=>{let T=P0();if(T)U0(T)}},{key:"x",cmd:()=>{let T=P0();if(T)g0(T)}},{key:"d",cmd:()=>{let T=P0();if(T)Z0(T)}}]})),F1(()=>({enabled:L1(),bindings:[{key:"tab",cmd:()=>c0(1)},{key:"shift+tab",cmd:()=>c0(-1)}]})),F1(()=>({enabled:L1()&&f()===2,bindings:[{key:"return",cmd:()=>void U1()}]})),(()=>{var T=W("box"),D0=W("box"),T1=W("text"),g1=W("text"),i1=W("box"),v1=W("box"),BJ=W("box"),mJ=W("text");return D(T,D0),D(T,i1),D(T,BJ),Q(T,"paddingLeft",2),Q(T,"paddingRight",2),Q(T,"paddingBottom",1),Q(T,"gap",1),D(D0,T1),D(D0,g1),Q(D0,"flexDirection","row"),Q(D0,"justifyContent","space-between"),K(T1,()=>M("settings.title")),Q(g1,"onMouseUp",()=>J.onClose()),K(g1,()=>M("settings.esc")),D(i1,v1),Q(i1,"flexDirection","row"),Q(i1,"gap",2),K(i1,k(eF,{level:G,cursor:B,switchSection:a}),v1),Q(v1,"flexGrow",1),Q(v1,"flexShrink",1),Q(v1,"flexDirection","column"),Q(v1,"gap",1),K(v1,k(Y0,{get when(){return H()==="general"},get children(){return k(J3,{level:G,bodyRow:f,setLevel:q,setBodyRow:U,themeNames:I,setThemeCursor:N,selectTheme:b,currentLocale:p,selectLanguage:w,toggleTransparent:e,selectFocusAccent:x,toastEnabled:G0,soundEnabled:H0,toggleToast:L0,toggleSound:F0,zenKeepsTasks:E0,toggleZenKeepsTasks:b0,settingsSurface:O0,selectSurface:$,editorKind:I0,cycleEditorKind:p0,editorCustomCommand:y0,editEditorCustom:()=>void u0(),worktreeKind:W1,worktreeKindLabel:V1,cycleWorktreeBase:S,worktreeCustomPath:q1,editWorktreeCustom:()=>void M0()})}}),null),K(v1,k(Y0,{get when(){return H()==="engines"},get children(){return k(z3,{level:G,bodyRow:f,setLevel:q,setBodyRow:U,get vendors(){return x0()},isCustom:(B1)=>!UJ(B1),displayName:l0,commandText:W0,isDefault:S0,isDefaultEngine:O1,editEngine:(B1)=>void Q0(B1),renameEngine:(B1)=>void U0(B1),resetEngine:g0,onAddEngine:()=>void V0()})}}),null),K(v1,k(Y0,{get when(){return H()==="accounts"},get children(){return k(Z3,{claudeStatus:y,codexStatus:d,copilotStatus:t})}}),null),K(v1,k(Y0,{get when(){return H()==="keys"},get children(){return k(G3,{})}}),null),K(v1,k(Y0,{get when(){return H()==="feedback"},get children(){return k(Y3,{level:G,bodyRow:f,setLevel:q,setBodyRow:U,title:L,setTitle:(B1)=>{O(B1),h("")},body:A,setBody:(B1)=>{g(B1),h("")},status:E,onTitleSubmit:()=>U(1),submit:()=>void U1()})}}),null),K(v1,k(Y0,{get when(){return H()==="dev"},get children(){return k(X3,{level:G,bodyRow:f,setLevel:q,setBodyRow:U,hasDaemon:F,confirmReset:()=>void OW(z,J.kv,Y),confirmRestartDaemon:()=>void AW(z,J.orchestrator,Y),remoteProjectsEnabled:e0,toggleRemoteProjects:j1,autoStatusEnabled:k0,toggleAutoStatus:h0,dispatcherEnabled:N0,toggleDispatcher:o0,archivedHistoryEnabled:m,toggleArchivedHistory:j0})}}),null),D(BJ,mJ),Q(BJ,"paddingTop",0),K(mJ,(()=>{var B1=C0(()=>!!L1());return()=>B1()?M("settings.nav.feedback"):M("settings.nav.default")})()),u((B1)=>{var i=nu.BOLD,r=X.text,o=X.textMuted,v=X.textMuted;return i!==B1.e&&(B1.e=Q(T1,"attributes",i,B1.e)),r!==B1.t&&(B1.t=Q(T1,"fg",r,B1.t)),o!==B1.a&&(B1.a=Q(g1,"fg",o,B1.a)),v!==B1.o&&(B1.o=Q(mJ,"fg",v,B1.o)),B1},{e:void 0,t:void 0,a:void 0,o:void 0}),T})()}var bW=C(()=>{P();P();P();P();P();P();P();P();D1();QY();Xz();Zj();$q();yG();nq();S1();LB();TB();s1();d1();jJ();hH();IJ();jW();rJ();mj();FW();sF();CW();Q3();nY.show=(J,z,Z)=>{let Y=!1;return new Promise((X)=>{J.replace(()=>k(nY,{kv:z,orchestrator:Z,onVisualPrefsChange:()=>{Y=!0},onClose:()=>X({visualPrefsChanged:Y})}),()=>X({visualPrefsChanged:Y}))})}});import{TextAttributes as lu}from"@opentui/core";function H3(){let{theme:J}=w0(),z=_z(),Z=Sj(),Y=()=>Z.toasts().slice(-q3),X=()=>Math.max(0,z().width-$u-au),G=()=>Math.max(0,z().height-_u-q3-1);return k(Y0,{get when(){return Z.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),K(q,k(Y1,{get each(){return Y()},children:(H)=>{let j=()=>H.kind==="needs_input"?J.warning:H.kind==="error"?J.error:J.success,B=()=>J.selectedListItemText,V=()=>H.kind==="needs_input"?"?":H.kind==="error"?"\u2715":"\u2713";return(()=>{var f=W("box"),U=W("text"),L=W("text");return D(f,U),D(f,L),Q(f,"flexDirection","row"),Q(f,"gap",1),Q(f,"paddingLeft",1),Q(f,"paddingRight",1),Q(f,"onMouseUp",()=>Z.dismiss(H.id)),Q(U,"wrapMode","none"),K(U,V),Q(L,"wrapMode","none"),K(L,()=>H.title),u((O)=>{var A=j(),g=B(),E=lu.BOLD,h=B();return A!==O.e&&(O.e=Q(f,"backgroundColor",A,O.e)),g!==O.t&&(O.t=Q(U,"fg",g,O.t)),E!==O.a&&(O.a=Q(U,"attributes",E,O.a)),h!==O.o&&(O.o=Q(L,"fg",h,O.o)),O},{e:void 0,t:void 0,a:void 0,o:void 0}),f})()}})),u((H)=>{var j=X(),B=G();return j!==H.e&&(H.e=Q(q,"left",j,H.e)),B!==H.t&&(H.t=Q(q,"top",B,H.t)),H},{e:void 0,t:void 0}),q}})}var q3=4,$u=40,au=2,_u=2;var j3=C(()=>{P();P();P();P();P();P();P();D1();yj();d1()});import{TextAttributes as pu}from"@opentui/core";function ru(J,z){let Z=J?`v${J}`:M("update.skew.olderBuild");return M("update.skew.hint",{daemon:Z,clientVersion:z})}function B3(J){let{theme:z}=w0(),Z=()=>Math.max(4,J.width()-2);return k(Y0,{get when(){return J.stale()},get children(){var Y=W("box"),X=W("text"),G=W("box"),q=W("text"),H=W("box"),j=W("text");return D(Y,X),D(Y,G),D(Y,H),Q(Y,"flexDirection","column"),Q(Y,"flexShrink",0),Q(Y,"paddingLeft",1),Q(Y,"paddingRight",1),Q(Y,"paddingBottom",1),Q(X,"wrapMode","none"),K(X,()=>"\u2594".repeat(Z())),D(G,q),Q(G,"flexDirection","row"),Q(G,"gap",1),Q(q,"wrapMode","none"),K(q,()=>M("update.skew.title")),D(H,j),Q(H,"flexDirection","row"),Q(H,"gap",1),Q(j,"wrapMode","word"),K(j,()=>ru(J.daemonVersion(),J.clientVersion)),u((B)=>{var{warning:V,warning:f}=z,U=pu.BOLD,L=z.text;return V!==B.e&&(B.e=Q(X,"fg",V,B.e)),f!==B.t&&(B.t=Q(q,"fg",f,B.t)),U!==B.a&&(B.a=Q(q,"attributes",U,B.a)),L!==B.o&&(B.o=Q(j,"fg",L,B.o)),B},{e:void 0,t:void 0,a:void 0,o:void 0}),Y}})}var f3=C(()=>{P();P();P();P();P();P();D1();d1();jJ()});function W3(J,z){return J.find((Z)=>Z.id!==z&&!Z.archived)}function V3(J,z){let Z=J.activeTaskSignal;if(typeof Z!=="function")return!0;return Z.call(J)()===z}async function ou(J){let z=J.tasks.find((G)=>G.id===J.taskId);if(!z)return null;let Z=!z.archived;try{await J.orch.setArchived(J.taskId,Z)}catch(G){return J.logger.error(`${J.logPrefix} archive failed:`,G),null}if(!Z)return{archived:Z};let Y=y1(J.taskId),X=W3(J.tasks,J.taskId);if(await iz(Y,X?y1(X.id):void 0).catch((G)=>{J.logger.error(`${J.logPrefix} switch-client failed:`,G)}),J.updateActiveTask&&V3(J.orch,J.taskId))await J.orch.setActiveTask(X?.id??null).catch(()=>{});return await vJ(Y).catch((G)=>{J.logger.error(`${J.logPrefix} kill tmux session failed:`,G)}),{archived:Z,nextTask:X}}async function su(J){let z=W3(J.tasks,J.taskId),Z=y1(J.taskId);if(J.switchBeforeKill)await iz(Z,z?y1(z.id):void 0).catch((Y)=>{J.logger.error(`${J.logPrefix} switch-client failed:`,Y)});if(J.updateActiveTask&&J.orch&&V3(J.orch,J.taskId))await J.orch.setActiveTask(z?.id??null).catch(()=>{});return await vJ(Z).catch((Y)=>{J.logger.error(`${J.logPrefix} kill tmux session failed:`,Y)}),{nextTask:z}}async function U3(J,z){if(!J.orch)return;let Z=J.tasks().find((X)=>X.id===z);if(!Z)return;if(!Z.archived){if(!await J.confirm({title:`Archive "${Z.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 ou({orch:J.orch,tasks:J.tasks(),taskId:z,logger:J.logger,logPrefix:J.logPrefix,updateActiveTask:J.updateActiveTask}))return;await J.reload?.()}async function K3(J,z){if(!J.orch)return;let Z=J.tasks().find((q)=>q.id===z);if(!Z)return;if(Z.kind==="main"){if(!await J.confirm({title:`Remove project "${Z.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(Z.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 "${Z.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(BB)){if(await J.confirm({title:`"${Z.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 su({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 D3(J,z){let Z=J.tasks().find((X)=>X.id===z);if(!Z)return;let Y=await J.promptText(Z.title);if(!Y||!J.orch)return;try{await J.orch.setTitle(z,Y)}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 L3(J,z){let Z=J.tasks().find((X)=>X.id===z);if(!Z||Z.kind==="main")return;let Y=await J.promptText(Z.branch,{dialogTitle:"Rename branch",fieldLabel:"branch"});if(!Y||!J.orch)return;try{await J.orch.setBranch(z,Y)}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 M3(J,z){let Z=J.tasks().find((G)=>G.id===z);if(!Z||!J.orch)return;let Y=await XZ(),X=gZ(Y,Z.vendor??zJ);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 ${MY(X)} (applies on reopen)`),await J.reload?.()}async function F3(J){let z=SJ(),Z=J.cursorRepo()??z[0]??process.cwd();if(J.openCreateSurface&&await J.openCreateSurface(Z))return;let Y=J.lastVendor()??zJ,X=await XZ();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(Z,z,{defaultVendor:Y,availableVendors:X,discoverAdoptable:G?(j)=>G.discoverAdoptableWorktrees(j):void 0});if(!q)return;if(J.rememberVendor(q.vendor),ez(q.repo),J.onRepoSaved?.(),!G){J.logger.error(`${J.logPrefix} no daemon; cannot create task`);return}J.notifyInfo?.("Creating task\u2026");let H;if(q.mode==="adopt"){let j=q.adopt.length,B=0,V;for(let f of q.adopt)try{H=(await G.adoptWorktree({repo:q.repo,worktreePath:f.worktreePath,branch:f.branch,vendor:q.vendor})).id,B++}catch(U){if(V===void 0)V=U instanceof Error?U.message:String(U);J.logger.error(`${J.logPrefix} adoptWorktree failed for ${f.worktreePath}:`,U)}if(B===0){J.notifyError?.(M("newTask.adopt.summaryNone",{error:V??""}));return}if(B<j)J.notifyInfo?.(M("newTask.adopt.summaryPartial",{done:B,total:j}));else J.notifyInfo?.(M("newTask.adopt.summaryAll",{count:B}))}else try{H=(await G.createTask({repo:q.repo,baseRef:q.baseRef,vendor:q.vendor})).id}catch(j){J.logger.error(`${J.logPrefix} task.create failed:`,j),J.notifyError?.(`Couldn't create task: ${j instanceof Error?j.message:String(j)}`);return}if(await J.reload?.(),H)J.selectTask?.(H),await J.enterTask?.(H)}var O3=C(()=>{QY();Xz();VB();S1();jJ();Yz();s1();qJ()});import{spawn as tu}from"child_process";import{existsSync as eu}from"fs";import{basename as JE,delimiter as zE,isAbsolute as ZE,join as YE}from"path";function kW(J,z,Z){if(ZE(J))return Z(J);let Y=z.PATH??"";for(let X of Y.split(zE)){if(!X)continue;if(Z(YE(X,J)))return!0}return!1}function QE(J){let z=JE(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 A3(J={}){let z=J.env??process.env,Z=J.platform??process.platform,Y=J.exists??eu,X=z.KOBE_OPEN_EDITOR?.trim();if(X)return{id:"env",label:QE(X),command:X,args:[]};for(let G of XE)if(kW(G.command,z,Y))return{id:G.id,label:G.label,command:G.command,args:[]};if(Z==="darwin"&&kW("open",z,Y)){for(let G of GE)if(G.paths.some((q)=>Y(q)))return{id:G.id,label:G.label,command:"open",args:["-a",G.appName]};return{id:"mac-open",label:"Finder",command:"open",args:[]}}if(Z==="linux"&&kW("xdg-open",z,Y))return{id:"xdg-open",label:"Open",command:"xdg-open",args:[]};return null}function qE(J,z){return[z.command,[...z.args,J]]}function R3(J,z,Z={}){if(!J)return!1;let Y=Z.spawn??tu,[X,G]=qE(J,z);try{let q=Y(X,G,{detached:!0,stdio:"ignore"});if(q.pid===void 0)return!1;return q.unref(),!0}catch{return!1}}var XE,GE;var g3=C(()=>{XE=[{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"}],GE=[{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 dj(J,z){if(z<=0)return"";let Z=[...J];if(Z.length<=z)return J;return`${Z.slice(0,Math.max(0,z-1)).join("")}\u2026`}function nj(J,z){if(z<=0)return"";let Z=[...J];if(Z.length<=z)return J;return`\u2026${Z.slice(Z.length-Math.max(0,z-1)).join("")}`}function ij(J){let z=new Map;function Z(Y){let X=z.get(Y);if(!X){let[G,q]=s(J.initial,J.equals?{equals:J.equals}:void 0);X={read:G,write:(H)=>q(()=>H),inFlight:!1,nextAllowedAt:0},z.set(Y,X)}return X}return{read(Y){if(!Y)return J.initial;return Z(Y).read()},poll(Y){if(!Y)return;let X=Z(Y);GX(X,J,(G)=>J.run(Y,G),(G)=>X.write(G))},reset(){z.clear()}}}var TQ=C(()=>{D1();QX();QX()});import{stat as HE}from"fs/promises";import{join as jE}from"path";async function VE(J){try{let z=await HE(jE(J,".git","HEAD"));return`${z.mtimeMs}:${z.size}`}catch{return null}}async function UE(J,z,Z=qZ){let Y=await VE(J);if(Y!==null){let j=N3.get(J);if(j&&j.fingerprint===Y)return j.value}let X="",G=!1,q=await Z("git",["symbolic-ref","--short","HEAD"],{cwd:J,env:_J(),signal:z}),H=q.status===0?q.stdout.trim():"";if(H&&H!=="HEAD")X=H,G=!0;else if((await Z("git",["rev-parse","--verify","HEAD"],{cwd:J,env:_J(),signal:z})).status===0)X="(detached)",G=!0;if(G&&Y!==null)N3.set(J,{fingerprint:Y,value:X});return X}function b3(J){return C3.read(J)}function k3(J){C3.poll(J)}var BE=2000,fE=30000,WE=1500,N3,C3;var I3=C(()=>{$Z();TQ();N3=new Map;C3=ij({initial:"",timeoutMs:BE,slowRetryMs:fE,minIntervalMs:WE,run:(J,z)=>UE(J,z)})});function IW(J){let z=J.scheduleTimeout??((j,B)=>{let V=setTimeout(j,B);return()=>clearTimeout(V)}),Z=!1,Y=null,X=()=>{Z=!0,Y?.(),Y=z(()=>{Z=!1,Y=null},700)},G=()=>{Z=!1,Y?.(),Y=null},q=(j)=>{let B=J.getFlatIds();if(B.length===0)return;let V=J.getCursor(),f=V<0?0:V,U=Math.min(B.length-1,Math.max(0,f+j));J.setCursor(U)},H=(j)=>{let B=J.getFlatIds();if(B.length===0)return;J.setCursor(Math.min(B.length-1,Math.max(0,j)))};return{moveDown(){G(),q(1)},moveUp(){G(),q(-1)},selectCurrent(){G();let j=J.getFlatIds(),B=J.getCursor();if(B<0||B>=j.length)return;let V=j[B];if(V!==void 0)J.onSelect(V)},pressG(){if(Z)G(),H(0);else X()},pressShiftG(){G(),H(J.getFlatIds().length-1)},isChordArmed(){return Z},disarmChord(){G()}}}function S3(J){let z=IW({getCursor:()=>J.cursorIndex(),setCursor:(G)=>J.setCursorIndex(G),getFlatIds:()=>J.flatTaskIds(),onSelect:(G)=>J.onSelect(G)}),Z=()=>{let G=J.flatTaskIds(),q=J.cursorIndex();if(q<0||q>=G.length)return;return G[q]},Y=()=>J.searchMode?.()??!1,X=()=>J.moveMode?.()??!1;F1(()=>({enabled:J.focused()&&!Y(),bindings:eZ({"sidebar.nav":(G,q)=>{let H=(q??0)%2===0;if(X()){let j=Z();if(j===void 0)return;J.onMoveRequest?.(j,H?1:-1);return}if(H)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=Z();if(G!==void 0)J.onDeleteRequest?.(G)},"sidebar.archive":()=>{if(X())return;let G=Z();if(G!==void 0)J.onArchiveRequest?.(G)},"sidebar.localMerge":(G)=>{if(!G.shift)return;let q=Z();if(q!==void 0)J.onLocalMergeRequest?.(q)},"sidebar.rename":()=>{if(X())return;let G=Z();if(G!==void 0)J.onRenameRequest?.(G)},"sidebar.pin":(G)=>{if(X())return;if(!G.shift)return;let q=Z();if(q!==void 0)J.onPinRequest?.(q)},"sidebar.previewToggle":()=>{if(X())return;let G=Z();if(G!==void 0)J.onPreviewToggleRequest?.(G)},"sidebar.search.enter":()=>{if(X())return;J.onSearchEnter?.()},"sidebar.sort":()=>{if(X())return;J.onSortModeToggle?.()},"sidebar.projectFilter":()=>{if(X())return;J.onProjectFilterToggle?.()}})})),F1(()=>({enabled:J.focused()&&X(),bindings:[{key:"escape",cmd:()=>J.onMoveModeExit?.()}]})),F1(()=>({enabled:J.focused(),bindings:eZ({"sidebar.view":(G,q)=>{J.onViewSwitch?.((q??0)%2===0?-1:1)}})})),F1(()=>({enabled:J.focused()&&Y(),bindings:eZ({"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 y3=C(()=>{eX();IJ()});function SW(J,z){return dj(J,z)}function yW(J,z){return` ${SW(J,Math.max(0,z))}`}var T3=()=>{};function DE(J){switch(J){case"done":return M("tasks.status.done");case"in_review":return M("tasks.status.inReview");case"in_progress":return M("tasks.status.working");case"backlog":return M("tasks.status.backlog");case"canceled":return M("tasks.status.canceled");case"error":return M("tasks.status.error")}}function LE(J){switch(J){case"rate_limited":return{text:M("tasks.activity.rateLimited"),tone:"warning"};case"permission_needed":return{text:M("tasks.activity.permissionNeeded"),tone:"warning"};case"error":return{text:M("tasks.activity.error"),tone:"error"};default:return null}}function E3(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 ME(){return M("tasks.subtitle.noTracking")}function FE(){return M("tasks.subtitle.materializing")}function OE(J){if(J.kind==="main")return!1;return J.vendor!==void 0&&!UJ(J.vendor)}function TW(J){let{task:z}=J,Z=z.kind==="main",Y=Z?J.mainBranch??"":z.branch,X=KE[z.status],G=J.activity?.state,q=G!==void 0,H=AE(G),j=LE(G),B=OE(z)&&!q,V=J.job!==void 0,f=V||!B&&(G==="running"||J.live||!q&&!Z&&z.status==="in_progress"),U=GG[J.spinnerFrame]??GG[0],L=V?"primary":B?"textMuted":j?.tone??(f?"primary":H?.tone??X.tone),O=B?ME():DE(z.status),A=V?J.truncateBranch(FE(),J.subtitleBudget):j?J.truncateBranch(j.text,J.subtitleBudget):Y.length>0?J.truncateBranch(Y,J.subtitleBudget):J.truncateBranch(O,J.subtitleBudget),g=B?x3:H?.glyph??X.glyph,E=B?x3:H?.glyph??"\u2605";return{isMain:Z,titleText:Z?uz(z.repo):z.title,subtitleText:A,loading:f,stateGlyph:f?U:g,projectGlyph:f?U:E,tone:L}}function xW(J,z){if(!J.loading)return J;let Z=GG[z()%GG.length]??"\u280B";if(Z===J.stateGlyph&&Z===J.projectGlyph)return J;return{...J,stateGlyph:Z,projectGlyph:Z}}function AE(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 KE,GG,u3=100,x3="\xB7";var w3=C(()=>{jJ();s1();Pj();KE={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"}};GG=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"]});function uW(J){return P3.read(J)}function EW(J){P3.poll(J)}var RE=4000,gE=60000,NE=1500,CE,P3;var h3=C(()=>{$Z();TQ();wX();TQ();CE={added:0,deleted:0},P3=ij({initial:CE,equals:az,timeoutMs:RE,slowRetryMs:gE,minIntervalMs:NE,run:async(J,z)=>{let Z=await qZ("git",["status","--porcelain=v1"],{cwd:J,env:_J(),signal:z});if(Z.status!==0)throw Error("git status failed");return EX(Z.stdout)}})});import{TextAttributes as n1}from"@opentui/core";function bE(J){switch(J){case"active":return M("tasks.view.workspace");case"archived":return M("tasks.view.archives")}}function m3(J,z=IE){return dj(J,z)}function lj(J){let z=0;for(let Z of J)z+=(Z.codePointAt(0)??0)>=4352?2:1;return z}function c3(J){let{theme:z}=w0(),Z=()=>J.focused?J.focused():!0,[Y,X]=s("active"),[G,q]=s(!1),[H,j]=s(""),[B,V]=s(null),f=()=>J.projectFilter?.()??B(),U=(n)=>{if(J.onProjectFilterChange)J.onProjectFilterChange(n);else V(n)};function L(){j(""),q(!0),J.onSearchActiveChange?.(!0)}function O(n){q(!1),j(""),J.onSearchActiveChange?.(!1)}d0(()=>{if(!G())return;let n=VJ();if(!n)return;let W0=(S0)=>{if(S0.defaultPrevented)return;if(!Z())return;if(S0.ctrl||S0.meta||S0.option)return;if(S0.name==="backspace"){j((l0)=>l0.slice(0,-1));return}let i0=S0.sequence;if(!i0||i0.length!==1)return;let Z1=i0.charCodeAt(0);if(Z1<32||Z1===127)return;j((l0)=>l0+i0)};n.keyInput.on("keypress",W0),b1(()=>n.keyInput.off("keypress",W0))});let[A,g]=s(0),E=setInterval(()=>g((n)=>n+1),kE);b1(()=>clearInterval(E));let[h,I]=s(0),N=setInterval(()=>I((n)=>(n+1)%GG.length),u3);b1(()=>clearInterval(N));let F=()=>J.sortMode?.()??"default",y=K0(()=>mF(J.tasks(),Y())),c=K0(()=>{let n=f();if(!n)return null;let W0=Bz(n);return y().find((S0)=>Bz(S0.repo)===W0)??null}),d=K0(()=>c()?.repo??null),l=K0(()=>c()?.label??"all"),t=K0(()=>{let n=c();return n?n.count:y().reduce((W0,S0)=>W0+S0.count,0)}),X0=K0(()=>{let n=t();return`${n} ${n===1?M("tasks.project.taskSingular"):M("tasks.project.taskPlural")}`}),q0=K0((n)=>iF(n,KW(J.tasks(),Y(),G()?H():"",F(),d())),[]),f0=K0(()=>DW(q0())),_=K0(()=>nF(q0())),O0=K0(()=>_().projectRows),b=K0(()=>_().taskRows),p=K0(()=>{let n=new Map;for(let W0 of q0())n.set(W0.flatIndex,W0);return n}),w=K0(()=>DW(KW(J.tasks(),Y(),"",F(),d())).length),R=K0(()=>b().length>0);d0(()=>{let n=f(),W0=y();if(n!==null&&W0.length>0&&(W0.length<=1||c()===null))U(null)});function e(){let n=y();if(n.length<=1){U(null);return}let W0=d(),S0=W0?Bz(W0):null,i0=S0===null?-1:n.findIndex((l0)=>Bz(l0.repo)===S0),Z1=n[i0+1];U(Z1?.repo??null)}let x=()=>J.width?J.width():v3,$=K0(()=>Math.max(6,x()-9)),G0=K0(()=>Math.max(6,x()-16)),H0=_z(),L0=K0(()=>{let n=Math.max(2,Math.min(10,Math.floor(H0().height*0.25))),W0=Math.max(2,O0().length*2);return Math.min(n,W0)}),[F0,E0]=s(null),[b0,e0]=s(-1),j1,k0,h0,N0=new Map;d0(()=>{let n=J.width?J.width():v3,W0=h0;if(!W0)return;W0.width=n,W0.flexShrink=1,W0.minHeight=0}),d0(XJ([b0,q0],([n])=>{let W0=p().get(n);if(!W0)return;let S0=W0.task.kind==="main"?j1:k0;if(!S0)return;if(S0.viewport.height<=0)return;let i0=N0.get(n);if(!i0)return;S0.scrollChildIntoView(i0.id)})),d0(XJ(()=>[J.selectedId(),f0()],([n,W0])=>{let S0=YJ(b0),i0=dF(n,W0,S0);if(i0!==S0)e0(i0)})),d0(XJ(Y,()=>{let n=f0();e0(n.length>0?0:-1)},{defer:!0})),d0(XJ(d,(n)=>e0(cF(q0(),n)),{defer:!0})),d0(XJ([G,H],()=>{if(!G())return;let n=f0();e0(n.length>0?0:-1)}));function o0(n){let W0=Y(),S0=xQ.findIndex((l0)=>l0.view===W0);if(S0<0)return;let i0=(S0+n+xQ.length)%xQ.length,Z1=xQ[i0];if(Z1)X(Z1.view)}let m=(n)=>{if(J.onActivate?.(n),!J.pinnedSelection)return;let W0=J.selectedId();if(!W0||n===W0)return;let S0=f0().indexOf(W0);if(S0>=0)e0(S0)};d0(XJ([b0,f0],([n,W0])=>{J.onCursorChange?.(n>=0&&n<W0.length?W0[n]:null)})),S3({focused:Z,cursorIndex:b0,setCursorIndex:e0,flatTaskIds:f0,onSelect:(n)=>{J.onSelect(n),m(n)},onDeleteRequest:(n)=>J.onDeleteRequest?.(n),onArchiveRequest:(n)=>J.onArchiveRequest?.(n),onLocalMergeRequest:(n)=>J.onLocalMergeRequest?.(n),moveMode:J.moveMode,onMoveRequest:(n,W0)=>J.onMoveRequest?.(n,W0),onMoveModeExit:()=>J.onMoveModeExit?.(),onRenameRequest:(n)=>J.onRenameRequest?.(n),onPinRequest:(n)=>J.onPinRequest?.(n),onPreviewToggleRequest:(n)=>J.onPreviewToggleRequest?.(n),onViewSwitch:(n)=>o0(n),onSortModeToggle:()=>J.onSortModeToggle?.(),onProjectFilterToggle:()=>e(),searchMode:G,onSearchEnter:()=>L(),onSearchExit:(n)=>O(n)});let j0=(n)=>(()=>{var W0=W("box"),S0=W("box"),i0=W("text"),Z1=W("text");return D(W0,S0),Q(W0,"flexDirection","column"),Q(W0,"flexShrink",0),K(W0,k(Y0,{get when(){return n.topPad},get children(){var l0=W("box"),X1=W("text");return D(l0,X1),Q(l0,"flexShrink",0),D(X1,T0(" ")),Q(X1,"wrapMode","none"),l0}}),S0),D(S0,i0),D(S0,Z1),Q(S0,"flexDirection","row"),Q(S0,"flexShrink",0),Q(S0,"gap",1),Q(S0,"paddingLeft",1),Q(S0,"paddingRight",1),Q(i0,"wrapMode","none"),K(i0,()=>n.label),Q(Z1,"wrapMode","none"),K(Z1,()=>"\u2500".repeat(Math.max(2,x()-10-n.label.length-(n.suffix?.length??0)))),K(S0,k(Y0,{get when(){return n.suffix},get children(){var l0=W("text");return Q(l0,"wrapMode","none"),K(l0,()=>n.suffix),u((X1)=>{var R1=z.info,O1=n1.BOLD;return R1!==X1.e&&(X1.e=Q(l0,"fg",R1,X1.e)),O1!==X1.t&&(X1.t=Q(l0,"attributes",O1,X1.t)),X1},{e:void 0,t:void 0}),l0}}),null),u((l0)=>{var X1=z.textMuted,R1=n1.BOLD,O1=z.border;return X1!==l0.e&&(l0.e=Q(i0,"fg",X1,l0.e)),R1!==l0.t&&(l0.t=Q(i0,"attributes",R1,l0.t)),O1!==l0.a&&(l0.a=Q(Z1,"fg",O1,l0.a)),l0},{e:void 0,t:void 0,a:void 0}),W0})(),z0=(n)=>{switch(n){case"success":return z.success;case"warning":return z.warning;case"primary":return z.primary;case"error":return z.error;default:return z.textMuted}},x0=(n)=>{let W0=n.row.task,S0=n.row.flatIndex,i0=()=>S0===b0(),Z1=()=>W0.id===J.selectedId(),l0=K0(()=>{let V0=J.chatRunState?.();if(!V0)return!1;let P0=`${W0.id}:`;for(let[I0,p0]of V0)if(p0==="running"&&I0.startsWith(P0))return!0;return!1}),X1=K0(()=>{let V0=_H(J.worktreeChanges?.(),W0.worktreePath);if(V0)return V0;if(A(),!W0.archived)EW(W0.worktreePath);return uW(W0.worktreePath)},void 0,{equals:az}),R1=K0(()=>{return A(),k3(W0.repo),b3(W0.repo)}),O1=K0(()=>TW({task:W0,activity:J.engineState?.().get(W0.id),job:J.taskJobs?.().get(W0.id),live:l0(),spinnerFrame:0,subtitleBudget:G0(),truncateBranch:m3,mainBranch:R1()})),Z0=K0(()=>xW(O1(),h)),Q0=()=>!Z0().loading?z.primary:z0(Z0().tone),U0=()=>i0()?z.focusAccent:Z1()?z.primary:void 0,g0=()=>i0()||Z1()?"\u258C":" ";return(()=>{var V0=W("box"),P0=W("box"),I0=W("box"),p0=W("text"),y0=W("box"),u0=W("text"),Q1=W("text"),W1=W("box"),V1=W("text"),q1=W("box"),S=W("text");return D(V0,P0),Q(V0,"flexDirection","column"),Q(V0,"gap",0),Q(V0,"paddingBottom",0),D(P0,I0),D(P0,W1),Hz((M0)=>{N0.set(S0,M0),b1(()=>{if(N0.get(S0)===M0)N0.delete(S0)})},P0),Q(P0,"flexDirection","column"),Q(P0,"gap",0),Q(P0,"onMouseUp",()=>{if(e0(S0),J.onSelect(W0.id),J.activateOnClick)m(W0.id)}),Q(P0,"onMouseOver",(M0)=>E0({task:W0,x:M0.x,y:M0.y})),Q(P0,"onMouseOut",()=>E0((M0)=>M0?.task.id===W0.id?null:M0)),D(I0,p0),D(I0,y0),Q(I0,"flexDirection","row"),Q(I0,"gap",0),Q(p0,"wrapMode","none"),K(p0,g0),D(y0,u0),D(y0,Q1),Q(y0,"flexDirection","row"),Q(y0,"flexGrow",1),Q(y0,"paddingRight",1),Q(y0,"gap",0),Q(u0,"wrapMode","none"),K(u0,()=>Z0().projectGlyph),Q(Q1,"wrapMode","none"),Q(Q1,"flexGrow",1),K(Q1,()=>yW(Z0().titleText,$())),D(W1,V1),D(W1,q1),Q(W1,"flexDirection","row"),Q(W1,"gap",0),Q(V1,"wrapMode","none"),K(V1,g0),D(q1,S),Q(q1,"flexDirection","row"),Q(q1,"flexGrow",1),Q(q1,"paddingLeft",2),Q(q1,"paddingRight",1),Q(q1,"gap",1),Q(S,"wrapMode","none"),Q(S,"flexGrow",1),K(S,()=>Z0().subtitleText),K(q1,k(Y0,{get when(){return X1().added>0},get children(){var M0=W("text"),U1=T0("+");return D(M0,U1),Q(M0,"wrapMode","none"),K(M0,()=>X1().added,null),u((L1)=>Q(M0,"fg",z.success,L1)),M0}}),null),K(q1,k(Y0,{get when(){return X1().deleted>0},get children(){var M0=W("text"),U1=T0("\u2212");return D(M0,U1),Q(M0,"wrapMode","none"),K(M0,()=>X1().deleted,null),u((L1)=>Q(M0,"fg",z.error,L1)),M0}}),null),u((M0)=>{var U1=i0()?z.backgroundElement:void 0,L1=U0(),c0=Q0(),t0=n1.BOLD,v0=z.text,a=n1.BOLD,R0=U0(),J0=z.textMuted,T=n1.DIM;return U1!==M0.e&&(M0.e=Q(P0,"backgroundColor",U1,M0.e)),L1!==M0.t&&(M0.t=Q(p0,"fg",L1,M0.t)),c0!==M0.a&&(M0.a=Q(u0,"fg",c0,M0.a)),t0!==M0.o&&(M0.o=Q(u0,"attributes",t0,M0.o)),v0!==M0.i&&(M0.i=Q(Q1,"fg",v0,M0.i)),a!==M0.n&&(M0.n=Q(Q1,"attributes",a,M0.n)),R0!==M0.s&&(M0.s=Q(V1,"fg",R0,M0.s)),J0!==M0.h&&(M0.h=Q(S,"fg",J0,M0.h)),T!==M0.r&&(M0.r=Q(S,"attributes",T,M0.r)),M0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0}),V0})()};return(()=>{var n=W("box"),W0=W("box"),S0=W("box"),i0=W("text"),Z1=W("box"),l0=W("box"),X1=W("text"),R1=W("scrollbox"),O1=W("box");return D(n,W0),D(n,Z1),D(n,R1),Hz((Z0)=>{h0=Z0},n),Q(n,"flexGrow",1),Q(n,"minHeight",0),Q(n,"flexDirection","column"),Q(n,"paddingTop",1),Q(n,"paddingBottom",1),Q(n,"paddingLeft",0),Q(n,"paddingRight",0),D(W0,S0),Q(W0,"flexDirection","row"),Q(W0,"justifyContent","space-between"),Q(W0,"gap",1),Q(W0,"paddingBottom",1),Q(W0,"paddingLeft",1),Q(W0,"paddingRight",1),D(S0,i0),Q(S0,"flexDirection","row"),Q(S0,"gap",1),D(i0,T0("KOBE")),Q(i0,"wrapMode","none"),K(S0,k(Y0,{get when(){return J.headerStatus?.()},children:(Z0)=>(()=>{var Q0=W("text");return Q(Q0,"wrapMode","none"),Q(Q0,"onMouseUp",()=>J.onHeaderStatusClick?.()),K(Q0,()=>Z0().label),u((U0)=>{var g0=Z0().emphasize?z.warning:z.textMuted,V0=Z0().emphasize?n1.BOLD:n1.DIM;return g0!==U0.e&&(U0.e=Q(Q0,"fg",g0,U0.e)),V0!==U0.t&&(U0.t=Q(Q0,"attributes",V0,U0.t)),U0},{e:void 0,t:void 0}),Q0})()}),null),K(W0,k(Y0,{get when(){return J.onAddTask},get children(){var Z0=W("text");return D(Z0,T0("[+]")),Q(Z0,"wrapMode","none"),Q(Z0,"onMouseUp",()=>J.onAddTask?.()),u((Q0)=>{var U0=z.primary,g0=n1.BOLD;return U0!==Q0.e&&(Q0.e=Q(Z0,"fg",U0,Q0.e)),g0!==Q0.t&&(Q0.t=Q(Z0,"attributes",g0,Q0.t)),Q0},{e:void 0,t:void 0}),Z0}}),null),K(n,k(Y0,{get when(){return G()},get children(){var Z0=W("box"),Q0=W("text"),U0=W("text"),g0=W("text");return D(Z0,Q0),D(Z0,U0),D(Z0,g0),Q(Z0,"flexDirection","row"),Q(Z0,"gap",0),Q(Z0,"paddingBottom",1),Q(Z0,"paddingLeft",1),D(Q0,T0("/")),Q(Q0,"wrapMode","none"),Q(U0,"wrapMode","none"),K(U0,H),D(g0,T0("\u2588")),Q(g0,"wrapMode","none"),K(Z0,k(Y0,{get when(){return H().length===0},get children(){var V0=W("text"),P0=T0(" ");return D(V0,P0),Q(V0,"wrapMode","none"),K(V0,()=>M("tasks.search.placeholder"),null),u((I0)=>Q(V0,"fg",z.textMuted,I0)),V0}}),null),K(Z0,k(Y0,{get when(){return H().length>0},get children(){var V0=W("text"),P0=T0(" "),I0=T0("/");return D(V0,P0),D(V0,I0),Q(V0,"wrapMode","none"),K(V0,()=>f0().length,I0),K(V0,w,null),u((p0)=>Q(V0,"fg",z.textMuted,p0)),V0}}),null),u((V0)=>{var{info:P0,text:I0,info:p0}=z,y0=n1.BLINK;return P0!==V0.e&&(V0.e=Q(Q0,"fg",P0,V0.e)),I0!==V0.t&&(V0.t=Q(U0,"fg",I0,V0.t)),p0!==V0.a&&(V0.a=Q(g0,"fg",p0,V0.a)),y0!==V0.o&&(V0.o=Q(g0,"attributes",y0,V0.o)),V0},{e:void 0,t:void 0,a:void 0,o:void 0}),Z0}}),Z1),D(Z1,l0),Q(Z1,"flexDirection","row"),Q(Z1,"justifyContent","space-between"),Q(Z1,"gap",1),Q(Z1,"paddingBottom",1),Q(Z1,"paddingLeft",1),Q(Z1,"paddingRight",1),D(l0,X1),Q(l0,"flexDirection","row"),Q(l0,"gap",2),K(l0,k(Y1,{each:xQ,children:(Z0)=>{let Q0=()=>Y()===Z0.view;return(()=>{var U0=W("text");return Q(U0,"wrapMode","none"),Q(U0,"onMouseUp",()=>X(Z0.view)),K(U0,()=>bE(Z0.view)),u((g0)=>{var V0=Q0()?z.primary:z.textMuted,P0=Q0()?n1.BOLD:void 0;return V0!==g0.e&&(g0.e=Q(U0,"fg",V0,g0.e)),P0!==g0.t&&(g0.t=Q(U0,"attributes",P0,g0.t)),g0},{e:void 0,t:void 0}),U0})()}}),X1),D(X1,T0("[/]")),Q(X1,"wrapMode","none"),K(Z1,k(Y0,{get when(){return J.sortMode},get children(){var Z0=W("text");return Q(Z0,"wrapMode","none"),Q(Z0,"onMouseUp",()=>J.onSortModeToggle?.()),K(Z0,()=>M("tasks.sort")),u((Q0)=>{var U0=z.textMuted,g0=n1.DIM;return U0!==Q0.e&&(Q0.e=Q(Z0,"fg",U0,Q0.e)),g0!==Q0.t&&(Q0.t=Q(Z0,"attributes",g0,Q0.t)),Q0},{e:void 0,t:void 0}),Z0}}),null),K(n,k(Y0,{get when(){return O0().length>0},get children(){var Z0=W("box"),Q0=W("box"),U0=W("text"),g0=W("text"),V0=W("scrollbox"),P0=W("box");return D(Z0,Q0),D(Z0,V0),Q(Z0,"flexDirection","column"),Q(Z0,"flexShrink",0),D(Q0,U0),D(Q0,g0),Q(Q0,"flexDirection","row"),Q(Q0,"flexShrink",0),Q(Q0,"gap",1),Q(Q0,"paddingLeft",1),Q(Q0,"paddingRight",1),Q(Q0,"onMouseUp",()=>e()),Q(U0,"wrapMode","none"),K(U0,()=>M("tasks.header.projects")),K(Q0,k(Y0,{get when(){return y().length>1},get children(){var I0=W("text");return Q(I0,"wrapMode","none"),K(I0,l),u((p0)=>{var y0=d()?z.primary:z.textMuted,u0=d()?n1.BOLD:void 0;return y0!==p0.e&&(p0.e=Q(I0,"fg",y0,p0.e)),u0!==p0.t&&(p0.t=Q(I0,"attributes",u0,p0.t)),p0},{e:void 0,t:void 0}),I0}}),g0),Q(g0,"wrapMode","none"),K(g0,()=>"\u2500".repeat(Math.max(2,x()-10-M("tasks.header.projects").length-(y().length>1?l().length+1:0)-(y().length>1?X0().length+1:0)))),K(Q0,k(Y0,{get when(){return y().length>1},get children(){var I0=W("text");return Q(I0,"wrapMode","none"),K(I0,X0),u((p0)=>{var y0=z.textMuted,u0=n1.DIM;return y0!==p0.e&&(p0.e=Q(I0,"fg",y0,p0.e)),u0!==p0.t&&(p0.t=Q(I0,"attributes",u0,p0.t)),p0},{e:void 0,t:void 0}),I0}}),null),D(V0,P0),Hz((I0)=>{j1=I0},V0),Q(V0,"flexShrink",0),Q(V0,"flexGrow",0),Q(V0,"minHeight",0),Q(V0,"stickyScroll",!1),Q(V0,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),Q(P0,"flexShrink",0),Q(P0,"gap",0),Q(P0,"paddingRight",1),K(P0,k(Y1,{get each(){return O0()},children:(I0)=>k(x0,{row:I0})})),u((I0)=>{var p0=z.textMuted,y0=n1.BOLD,u0=z.border,Q1=L0();return p0!==I0.e&&(I0.e=Q(U0,"fg",p0,I0.e)),y0!==I0.t&&(I0.t=Q(U0,"attributes",y0,I0.t)),u0!==I0.a&&(I0.a=Q(g0,"fg",u0,I0.a)),Q1!==I0.o&&(I0.o=Q(V0,"maxHeight",Q1,I0.o)),I0},{e:void 0,t:void 0,a:void 0,o:void 0}),Z0}}),R1),K(n,k(j0,{get label(){return M("tasks.header.tasks")},get suffix(){return C0(()=>F()==="default")()?void 0:F()},get topPad(){return O0().length>0}}),R1),D(R1,O1),Hz((Z0)=>{k0=Z0},R1),Q(R1,"flexGrow",1),Q(R1,"minHeight",0),Q(R1,"stickyScroll",!1),Q(R1,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),Q(O1,"flexShrink",0),Q(O1,"gap",0),Q(O1,"paddingRight",1),K(O1,k(Y1,{get each(){return b()},children:(Z0)=>{let{task:Q0,flatIndex:U0}=Z0,g0=()=>U0===b0(),V0=()=>Q0.id===J.selectedId(),P0=K0(()=>{let V1=J.chatRunState?.();if(!V1)return!1;let q1=`${Q0.id}:`;for(let[S,M0]of V1)if(M0==="running"&&S.startsWith(q1))return!0;return!1}),I0=K0(()=>{let V1=_H(J.worktreeChanges?.(),Q0.worktreePath);if(V1)return V1;if(A(),!Q0.archived)EW(Q0.worktreePath);return uW(Q0.worktreePath)},void 0,{equals:az}),p0=K0(()=>TW({task:Q0,activity:J.engineState?.().get(Q0.id),job:J.taskJobs?.().get(Q0.id),live:P0(),spinnerFrame:0,subtitleBudget:G0(),truncateBranch:m3,mainBranch:""})),y0=K0(()=>xW(p0(),h)),u0=()=>z0(y0().tone),Q1=()=>g0()?z.focusAccent:V0()?z.primary:void 0,W1=()=>g0()||V0()?"\u258C":" ";return(()=>{var V1=W("box"),q1=W("box"),S=W("box"),M0=W("text"),U1=W("box"),L1=W("text"),c0=W("text"),t0=W("box"),v0=W("text"),a=W("box"),R0=W("text");return D(V1,q1),Q(V1,"flexDirection","column"),Q(V1,"gap",0),Q(V1,"paddingBottom",1),D(q1,S),D(q1,t0),Hz((J0)=>{N0.set(U0,J0),b1(()=>{if(N0.get(U0)===J0)N0.delete(U0)})},q1),Q(q1,"flexDirection","column"),Q(q1,"gap",0),Q(q1,"onMouseUp",()=>{if(e0(U0),J.onSelect(Q0.id),J.activateOnClick)m(Q0.id)}),Q(q1,"onMouseOver",(J0)=>E0({task:Q0,x:J0.x,y:J0.y})),Q(q1,"onMouseOut",()=>E0((J0)=>J0?.task.id===Q0.id?null:J0)),D(S,M0),D(S,U1),Q(S,"flexDirection","row"),Q(S,"gap",0),Q(M0,"wrapMode","none"),K(M0,W1),D(U1,L1),D(U1,c0),Q(U1,"flexDirection","row"),Q(U1,"flexGrow",1),Q(U1,"paddingRight",1),Q(U1,"gap",0),Q(L1,"wrapMode","none"),K(L1,()=>y0().stateGlyph),Q(c0,"wrapMode","none"),Q(c0,"flexGrow",1),K(c0,()=>yW(y0().titleText,$())),K(U1,k(Y0,{get when(){return C0(()=>!!J.moveMode?.())()&&g0()},get children(){var J0=W("text");return Q(J0,"wrapMode","none"),K(J0,()=>M("tasks.moveChip")),u((T)=>Q(J0,"fg",z.warning,T)),J0}}),null),D(t0,v0),D(t0,a),Q(t0,"flexDirection","row"),Q(t0,"gap",0),Q(v0,"wrapMode","none"),K(v0,W1),D(a,R0),Q(a,"flexDirection","row"),Q(a,"flexGrow",1),Q(a,"paddingLeft",2),Q(a,"paddingRight",1),Q(a,"gap",1),Q(R0,"wrapMode","none"),Q(R0,"flexGrow",1),K(R0,()=>y0().subtitleText),K(a,k(Y0,{get when(){return Q0.pinned===!0},get children(){var J0=W("text");return D(J0,T0("\u25B4")),Q(J0,"wrapMode","none"),u((T)=>Q(J0,"fg",z.warning,T)),J0}}),null),K(a,k(Y0,{get when(){return E3(Q0)},children:(J0)=>(()=>{var T=W("text");return Q(T,"wrapMode","none"),K(T,()=>J0().glyph),u((D0)=>Q(T,"fg",z0(J0().tone),D0)),T})()}),null),K(a,k(Y0,{get when(){return I0().added>0},get children(){var J0=W("text"),T=T0("+");return D(J0,T),Q(J0,"wrapMode","none"),K(J0,()=>I0().added,null),u((D0)=>Q(J0,"fg",z.success,D0)),J0}}),null),K(a,k(Y0,{get when(){return I0().deleted>0},get children(){var J0=W("text"),T=T0("\u2212");return D(J0,T),Q(J0,"wrapMode","none"),K(J0,()=>I0().deleted,null),u((D0)=>Q(J0,"fg",z.error,D0)),J0}}),null),u((J0)=>{var T=g0()?z.backgroundElement:void 0,D0=Q1(),T1=u0(),g1=n1.BOLD,i1=z.text,v1=V0()||g0()?n1.BOLD:void 0,BJ=Q1(),mJ=z.textMuted,B1=n1.DIM;return T!==J0.e&&(J0.e=Q(q1,"backgroundColor",T,J0.e)),D0!==J0.t&&(J0.t=Q(M0,"fg",D0,J0.t)),T1!==J0.a&&(J0.a=Q(L1,"fg",T1,J0.a)),g1!==J0.o&&(J0.o=Q(L1,"attributes",g1,J0.o)),i1!==J0.i&&(J0.i=Q(c0,"fg",i1,J0.i)),v1!==J0.n&&(J0.n=Q(c0,"attributes",v1,J0.n)),BJ!==J0.s&&(J0.s=Q(v0,"fg",BJ,J0.s)),mJ!==J0.h&&(J0.h=Q(R0,"fg",mJ,J0.h)),B1!==J0.r&&(J0.r=Q(R0,"attributes",B1,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}),V1})()}}),null),K(O1,k(Y0,{get when(){return f0().length===0},get children(){var Z0=W("box"),Q0=W("text");return D(Z0,Q0),Q(Z0,"paddingTop",1),Q(Z0,"paddingLeft",1),K(Q0,(()=>{var U0=C0(()=>!!(G()&&H().trim().length>0));return()=>U0()?M("tasks.empty.noMatchSearch"):C0(()=>!!d())()?C0(()=>Y()==="active")()?M("tasks.empty.noActiveProject"):M("tasks.empty.noArchivedProject"):C0(()=>Y()==="active")()?M("tasks.empty.noActive"):M("tasks.empty.noArchived")})()),u((U0)=>Q(Q0,"fg",z.textMuted,U0)),Z0}}),null),K(O1,k(Y0,{get when(){return C0(()=>!!(d()&&f0().length>0&&!R()))()&&!(G()&&H().trim().length>0)},get children(){var Z0=W("box"),Q0=W("text");return D(Z0,Q0),Q(Z0,"paddingTop",1),Q(Z0,"paddingLeft",1),Q(Q0,"wrapMode","none"),K(Q0,(()=>{var U0=C0(()=>Y()==="active");return()=>U0()?M("tasks.empty.noActiveProject"):M("tasks.empty.noArchivedProject")})()),u((U0)=>{var g0=z.textMuted,V0=n1.DIM;return g0!==U0.e&&(U0.e=Q(Q0,"fg",g0,U0.e)),V0!==U0.t&&(U0.t=Q(Q0,"attributes",V0,U0.t)),U0},{e:void 0,t:void 0}),Z0}}),null),K(O1,k(Y0,{get when(){return C0(()=>Y()==="archived")()&&f0().length>0},get children(){var Z0=W("box"),Q0=W("text");return D(Z0,Q0),Q(Z0,"paddingTop",1),Q(Z0,"paddingLeft",1),Q(Q0,"wrapMode","none"),K(Q0,()=>M("tasks.archiveHint")),u((U0)=>{var g0=z.textMuted,V0=n1.DIM;return g0!==U0.e&&(U0.e=Q(Q0,"fg",g0,U0.e)),V0!==U0.t&&(U0.t=Q(Q0,"attributes",V0,U0.t)),U0},{e:void 0,t:void 0}),Z0}}),null),K(n,k(Y0,{get when(){return J.zenActive?.()},get children(){var Z0=W("box"),Q0=W("text");return D(Z0,Q0),Q(Z0,"flexShrink",0),Q(Z0,"paddingLeft",1),Q(Z0,"paddingRight",1),Q(Z0,"paddingTop",1),D(Q0,T0("\u262F ZEN")),Q(Q0,"wrapMode","none"),Q(Q0,"onMouseUp",()=>J.onZenClick?.()),u((U0)=>{var g0=z.accent,V0=n1.BOLD;return g0!==U0.e&&(U0.e=Q(Q0,"fg",g0,U0.e)),V0!==U0.t&&(U0.t=Q(Q0,"attributes",V0,U0.t)),U0},{e:void 0,t:void 0}),Z0}}),null),K(n,k(Y0,{get when(){return F0()},children:(Z0)=>{let Q0=K0(()=>{let y0=Z0().task,u0=[];if(u0.push({text:y0.kind==="main"?uz(y0.repo):y0.title,bold:!0}),y0.branch.length>0)u0.push({text:`\u2387 ${y0.branch}`});if(y0.worktreePath.length>0)u0.push({text:y0.worktreePath,dim:!0});return u0}),U0=72,g0=K0(()=>Math.min(68,Math.max(...Q0().map((y0)=>lj(y0.text))))),V0=K0(()=>g0()+4),P0=K0(()=>Q0().length+2),I0=K0(()=>Math.max(0,Math.min(Z0().x+2,H0().width-V0()-1))),p0=K0(()=>Math.max(0,Math.min(Z0().y+1,H0().height-P0()-1)));return(()=>{var y0=W("box");return Q(y0,"position","absolute"),Q(y0,"zIndex",2600),Q(y0,"flexDirection","column"),Q(y0,"border",!0),Q(y0,"paddingLeft",1),Q(y0,"paddingRight",1),K(y0,k(Y1,{get each(){return Q0()},children:(u0)=>(()=>{var Q1=W("text");return Q(Q1,"wrapMode","none"),K(Q1,(()=>{var W1=C0(()=>!!u0.dim);return()=>W1()?SE(u0.text,g0()):SW(u0.text,g0())})()),u((W1)=>{var V1=u0.dim?z.textMuted:z.text,q1=u0.bold?n1.BOLD:u0.dim?n1.DIM:void 0;return V1!==W1.e&&(W1.e=Q(Q1,"fg",V1,W1.e)),q1!==W1.t&&(W1.t=Q(Q1,"attributes",q1,W1.t)),W1},{e:void 0,t:void 0}),Q1})()})),u((u0)=>{var Q1=I0(),W1=p0(),V1=V0(),q1=z.focusAccent,S=z.backgroundElement;return Q1!==u0.e&&(u0.e=Q(y0,"left",Q1,u0.e)),W1!==u0.t&&(u0.t=Q(y0,"top",W1,u0.t)),V1!==u0.a&&(u0.a=Q(y0,"width",V1,u0.a)),q1!==u0.o&&(u0.o=Q(y0,"borderColor",q1,u0.o)),S!==u0.i&&(u0.i=Q(y0,"backgroundColor",S,u0.i)),u0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),y0})()}}),null),u((Z0)=>{var Q0=Z()?z.focusAccent:z.textMuted,U0=n1.BOLD,g0=z.textMuted,V0=n1.DIM;return Q0!==Z0.e&&(Z0.e=Q(i0,"fg",Q0,Z0.e)),U0!==Z0.t&&(Z0.t=Q(i0,"attributes",U0,Z0.t)),g0!==Z0.a&&(Z0.a=Q(X1,"fg",g0,Z0.a)),V0!==Z0.o&&(Z0.o=Q(X1,"attributes",V0,Z0.o)),Z0},{e:void 0,t:void 0,a:void 0,o:void 0}),n})()}var v3=32,xQ,kE=2000,IE=16,SE;var d3=C(()=>{P();P();P();P();P();P();P();P();P();jJ();P();D1();d1();d1();I3();Pj();y3();T3();w3();wX();h3();xQ=[{view:"active"},{view:"archived"}];SE=nj});var a3={};H1(a3,{startTasksPane:()=>EE,legendRowCap:()=>$3,legendCap:()=>l3});import{existsSync as n3}from"fs";import{stat as yE}from"fs/promises";import{TextAttributes as $j}from"@opentui/core";function i3(J){let z=J instanceof Error?J.message:String(J);if(/not a git repository/i.test(z))return M("tasks.toast.worktreeErrorNotGit");return M("tasks.toast.worktreeErrorGeneric",{message:z})}function xE(J){let{theme:z}=w0(),Z=a1(),Y=JG(),X=Sj(),[G,q]=s(J.tasks().some((m)=>m.id===J.initialTaskId)?J.initialTaskId:J.tasks()[0]?.id??null),[H,j]=s(null),B=()=>H()??G(),V=0;function f(m){X.notify({kind:"error",taskId:G()??"",tabId:"",title:m})}function U(m){X.notify({kind:"done",taskId:G()??"",tabId:"",title:m})}let[L,O]=s(!1),[A,g]=s(Y.get("activeSortMode")==="recent"?"recent":"default"),E=Y.get("tasksPane.projectFilter"),[h,I]=s(typeof E==="string"&&E.length>0?E:null),N=(m)=>{I(m),Y.set("tasksPane.projectFilter",m)},[F,y]=s(null),[c,d]=s(!1);{let m=process.env.TMUX_PANE;if(m){let j0=()=>{_0(["show-options","-wqv","-t",m,TZ]).then(({code:x0,stdout:n})=>{d(x0===0&&n.trim().length>0)})};j0();let z0=setInterval(j0,1000);b1(()=>clearInterval(z0))}}let l=_z();d0(()=>{if(J.initialTaskId)return;let m=J.orch?.activeTaskSignal()();if(!m)return;q(m)}),d0(XJ(()=>J.orch?.uiPrefsSignal()(),(m)=>{if(m&&m.sortMode!==YJ(A))g(m.sortMode);if(m&&m.projectFilter!==YJ(h))I(m.projectFilter)})),d0(()=>{let m=J.orch?.updateSignal()();if(m)y(m)});let t={orch:J.orch,tasks:()=>J.tasks(),confirm:async(m)=>await fz.show(Z,m.title,m.body,m.cancelLabel,m.confirmLabel)===!0,promptText:(m,j0)=>oz.show(Z,m,j0),logger:console,logPrefix:"[kobe tasks]",notifyError:f,notifyInfo:U,reload:()=>J.reload(),switchBeforeKill:!0,updateActiveTask:!0,onTaskDeleted:(m,j0)=>{if(G()!==m)return;let z0=J.tasks();q(j0?.id??(z0.find((x0)=>!x0.archived)??z0[0])?.id??null)},promptNewTask:(m,j0,z0)=>Rj.show(Z,m,j0,z0),cursorRepo:()=>{let m=J.tasks();return(m.find((j0)=>j0.id===G())??m[0])?.repo},lastVendor:()=>cJ(x1("lastSelectedVendor"),nJ()),rememberVendor:(m)=>GJ("lastSelectedVendor",m),openCreateSurface:async(m)=>{if(xY(Y.get(VZ,TY))!=="chattab")return!1;let z0=await hJ();if(!z0)return!1;return await _G(z0,m),!0},selectTask:(m)=>q(m),enterTask:(m)=>j1(m)};async function X0(){await F3(t)}async function q0(){if(xY(Y.get(VZ,TY))==="chattab"){let z0=await hJ();if(z0){await $G(z0);return}}if(!(await nY.show(Z,Y,J.orch??void 0)).visualPrefsChanged)return;if(!Y.flush())return;try{let z0=await hJ();if(z0)await NX(z0)}catch(z0){console.error("[kobe tasks] failed to refresh workspace panes:",z0)}}async function f0(){let m=await hJ();if(m){await aG(m);return}ZG.show(Z)}async function _(){if(!F()?.hasUpdate){U(M("tasks.toast.alreadyLatest",{version:J1}));return}let j0=await hJ();if(!j0)return;await pG(j0)}async function O0(m){await U3(t,m)}async function b(m){await K3(t,m)}async function p(m){await D3(t,m)}async function w(m){await L3(t,m)}async function R(m){await M3(t,m)}async function e(m){let z0=J.tasks().find((n)=>n.id===m)?.worktreePath;if(!z0||!n3(z0)){if(!J.orch){console.error("[kobe tasks] no daemon; cannot materialise worktree"),f(M("tasks.toast.noDaemonWorktree"));return}try{z0=await J.orch.ensureWorktree(m)}catch(n){console.error("[kobe tasks] task.ensureWorktree failed:",n),f(i3(n));return}await J.reload()}if(!z0||!n3(z0))return;let x0=A3();if(!x0){console.error("[kobe tasks] no editor/opener found; set KOBE_OPEN_EDITOR"),f(M("tasks.toast.noEditor"));return}if(!R3(z0,x0))console.error(`[kobe tasks] failed to open worktree with ${x0.label}`),f(M("tasks.toast.openWorktreeFailed",{label:x0.label}))}async function x(){if(!process.env.TMUX_PANE)return;let m=await hJ();if(!m)return;let j0=await VX(m);if(!j0)return;await n0(["select-pane","-t",j0])}async function $(m,j0){let z0=J.tasks().find((x0)=>x0.id===m);if(!z0||z0.kind==="main"||!J.orch)return;try{await J.orch.moveTask(m,j0)}catch(x0){console.error("[kobe tasks] task.move failed:",x0),f(M("tasks.toast.moveTaskFailed",{message:x0 instanceof Error?x0.message:String(x0)}));return}q(m),await J.reload()}async function G0(m){if(!J.orch)return;try{await J.orch.setPinned(m)}catch(j0){console.error("[kobe tasks] task.pin failed:",j0);return}await J.reload()}async function H0(m){let{togglePreviewMode:j0}=await Promise.resolve().then(() => (fW(),BW));j0(m),await vJ(y1(m)),await j1(m)}let[L0,F0]=s(Y.get("tasksPane.keysCollapsed",!1)===!0),E0=(m)=>{F0(m),Y.set("tasksPane.keysCollapsed",m)};d0(XJ(()=>J.orch?.uiPrefsSignal()(),(m)=>{if(m&&m.keysCollapsed!==YJ(L0))F0(m.keysCollapsed)}));let[b0,e0]=s(!1);F1(()=>({enabled:Z.stack.length===0&&!b0(),bindings:eZ({"help.open":()=>void f0(),"task.new":()=>void X0(),"settings.open.sidebar":()=>void q0(),"tasks.update":()=>void _(),"tasks.openWorktree":()=>{let m=B();if(m)e(m)},"tasks.renameBranch":()=>{let m=B();if(m)w(m)},"tasks.cycleEngine":()=>{let m=B();if(m)R(m)},"tasks.toggleKeys":()=>E0(!L0()),"tasks.focusEngine":()=>void x().catch((m)=>console.error("[kobe tasks] focus engine pane failed:",m))})}));async function j1(m){let j0=J.tasks().find((x0)=>x0.id===m);if(!j0)return;let z0=++V;try{await VW(J.orch,j0,j0.repo,j0.vendor,{includeInitPrompt:!0,heal:!0,captureFrom:!0,reload:()=>J.reload(),isCurrent:()=>V===z0})}catch(x0){if(x0 instanceof AZ)if(x0.phase==="no-daemon")f(M("tasks.toast.noDaemonOpen"));else if(x0.phase==="worktree")f(i3(x0.cause??x0));else f(M("tasks.toast.sessionStartFailed"));else console.error("[kobe tasks] switchTo failed:",x0)}}let k0=K0(()=>{let m=F();if(m?.hasUpdate)return{label:`v${m.latest} \u2191`,emphasize:!0};return{label:`v${J1}`,emphasize:!1}}),h0=()=>J.orch?.daemonStaleSignal()()??!1,N0=()=>J.orch?.daemonVersionSignal()()??null,o0=K0(()=>J.tasks().find((m)=>m.id===G())?.kind==="main");return(()=>{var m=W("box"),j0=W("box");return D(m,j0),Q(m,"flexDirection","column"),Q(m,"flexGrow",1),K(m,k(B3,{stale:h0,daemonVersion:N0,clientVersion:J1,width:()=>l().width}),j0),Q(j0,"flexGrow",1),Q(j0,"flexShrink",1),K(j0,k(c3,{get tasks(){return J.tasks},selectedId:G,get onSelect(){return J.initialTaskId?()=>{}:q},get pinnedSelection(){return!!J.initialTaskId},onActivate:(z0)=>void j1(z0),activateOnClick:!0,headerStatus:k0,onHeaderStatusClick:()=>void _(),onAddTask:()=>void X0(),zenActive:c,onZenClick:()=>{(async()=>{let z0=await hJ();if(z0)await bY(z0,"zen-toggle")})()},width:()=>l().width,get engineState(){return C0(()=>!!J.orch)()?J.orch.engineStateSignal():void 0},get taskJobs(){return C0(()=>!!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 p(z0),onDeleteRequest:(z0)=>void b(z0),onArchiveRequest:(z0)=>void O0(z0),onPinRequest:(z0)=>void G0(z0),onPreviewToggleRequest:(z0)=>void H0(z0),onLocalMergeRequest:(z0)=>{let x0=J.tasks().find((n)=>n.id===z0);if(!x0||x0.kind==="main")return;q(z0),O((n)=>!n)},moveMode:L,onMoveRequest:(z0,x0)=>void $(z0,x0),onMoveModeExit:()=>O(!1),sortMode:A,projectFilter:h,onProjectFilterChange:N,onSortModeToggle:()=>{let z0=A()==="default"?"recent":"default";g(z0),Y.set("activeSortMode",z0)},focused:()=>Z.stack.length===0,onSearchActiveChange:e0,onCursorChange:j})),K(m,k(uE,{moveMode:L,selectedIsMain:o0,collapsed:L0,onToggleCollapsed:()=>E0(!L0())}),null),u((z0)=>Q(m,"backgroundColor",z.background,z0)),m})()}function l3(J){let z=GW(J);if(!z)return null;let Z=z.hint?.keys??z.keys[0];return Z&&Z.length>0?Z:null}function $3(J){let z=J.map(l3).filter((Z)=>Z!==null);return z.length>0?z.join("/"):null}function uE(J){let{theme:z}=w0(),[Z,Y]=s("Prefix");_1(()=>{_0(["show-options","-g","prefix"]).then(({code:U,stdout:L})=>{if(U!==0)return;let O=vj(L);if(O)Y(O)})});let X=()=>{XW();let U=oq(),L=U.binds,O=[],A=U.focus.filter((E)=>E!==null).map((E)=>E.chord);if(A.length===4&&A.every((E,h)=>E===hZ[h]))O.push({k:"ctrl+hjkl",label:M("tasks.hints.movePanes")});else if(A.length>0)O.push({k:A[0],label:M("tasks.hints.movePanes")});let g=(E,h)=>{let I=h.map((N)=>L[N]?.chord).filter((N)=>!!N);if(I.length>0)O.push({k:`prefix ${I.join("/")}`,label:E})};if(L["tmux.detach"])O.push({k:L["tmux.detach"].chord,label:M("tasks.hints.detach")});return g(M("tasks.hints.splits"),["tmux.layout.workspaceSplit","tmux.layout.workspaceClose","tmux.layout.workspaceReset"]),g(M("tasks.hints.panes"),["tmux.layout.tasksToggle","tmux.layout.opsToggle","tmux.layout.terminalToggle"]),O},G=()=>{XW();let U=[{ids:["help.open"],label:M("tasks.hints.fullHelp")},{ids:["task.new"],label:M("tasks.hints.newTask")},{ids:["settings.open.sidebar"],label:M("tasks.hints.settings")},{ids:["sidebar.select"],label:M("tasks.hints.open")},{ids:["tasks.focusEngine"],label:M("tasks.hints.focusEngine")},{ids:["tasks.openWorktree"],label:M("tasks.hints.openWorktree")},{ids:["sidebar.delete"],label:M("tasks.hints.delete")},{ids:["sidebar.view"],label:M("tasks.hints.views")},{ids:["sidebar.projectFilter"],label:M("tasks.hints.project")}],L=[];for(let O of U){let A=$3(O.ids);if(A===null)continue;L.push({k:A,label:O.label,dimWhenMain:O.dimWhenMain})}return L.push(...X()),L},q=()=>[{k:"j/k",label:M("tasks.hints.reorder")},{k:"enter/esc",label:M("tasks.hints.done")}],H=()=>J.moveMode?.()?q():G(),j=18,B=()=>Math.min(j,Math.max(...H().map((U)=>lj(U.label)))),V=(U)=>{let L=B();if(lj(U)<=L)return U;let O=[...U],A=0,g=0;for(let E of O){let h=(E.codePointAt(0)??0)>=4352?2:1;if(A+h>L-1)break;A+=h,g++}return`${O.slice(0,g).join("")}\u2026`},f=()=>(J.collapsed?.()??!1)&&!(J.moveMode?.()??!1);return(()=>{var U=W("box"),L=W("text");return D(U,L),Q(U,"flexShrink",0),Q(U,"flexDirection","column"),Q(U,"paddingLeft",1),Q(U,"paddingRight",1),Q(U,"paddingTop",1),Q(U,"paddingBottom",1),Q(U,"gap",0),Q(L,"wrapMode","none"),Q(L,"onMouseUp",()=>J.onToggleCollapsed?.()),K(L,(()=>{var O=C0(()=>!!f());return()=>O()?M("tasks.hints.headerFolded"):M("tasks.hints.headerUnfolded")})()),K(U,k(Y0,{get when(){return!f()},get children(){return k(Y1,{get each(){return H()},children:(O)=>{let A=()=>O.dimWhenMain===!0&&(J.selectedIsMain?.()??!1);return(()=>{var g=W("box"),E=W("box"),h=W("text"),I=T0("["),N=T0("]"),F=W("box"),y=W("text");return D(g,E),D(g,F),Q(g,"flexDirection","row"),Q(g,"gap",1),Q(g,"justifyContent","space-between"),D(E,h),Q(E,"width",10),Q(E,"flexShrink",0),D(h,I),D(h,N),Q(h,"wrapMode","none"),K(h,()=>zG(O.k,Z()),N),D(F,y),Q(F,"flexShrink",0),Q(y,"wrapMode","none"),K(y,()=>V(O.label)),u((c)=>{var d=A()?z.textMuted:z.accent,l=A()?$j.DIM:$j.BOLD,t=B(),X0=z.textMuted,q0=A()?$j.DIM:void 0;return d!==c.e&&(c.e=Q(h,"fg",d,c.e)),l!==c.t&&(c.t=Q(h,"attributes",l,c.t)),t!==c.a&&(c.a=Q(F,"width",t,c.a)),X0!==c.o&&(c.o=Q(y,"fg",X0,c.o)),q0!==c.i&&(c.i=Q(y,"attributes",q0,c.i)),c},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),g})()}})}}),null),u((O)=>{var A=z.textMuted,g=$j.DIM;return A!==O.e&&(O.e=Q(L,"fg",A,O.e)),g!==O.t&&(O.t=Q(L,"attributes",g,O.t)),O},{e:void 0,t:void 0}),U})()}async function EE(J={}){await MJ({logContext:"tasks",providers:{notifications:!0},setup:()=>wE(J)})}async function wE(J){let z=new mX({homeDir:sJ()});await z.load();let[Z,Y]=s(z.list()),X=null;try{let B=await qz();if(B){let V=new NJ(B);await V.init(),X=V}else YZ("tasks-boot","no daemon running \u2014 polling tasks.json (a gui owns daemon lifecycle)")}catch(B){QJ("tasks-boot",B),YZ("tasks-boot","daemon subscribe failed \u2014 polling tasks.json")}let G=()=>X&&X.connectionStateSignal()()==="online"?X.tasksSignal()():Z(),q=async()=>{await z.load(),Y(z.list())},H="",j=setInterval(()=>{if(X&&X.connectionStateSignal()()==="online")return;(async()=>{let B="missing";try{let V=await yE(z.filePath);B=`${V.mtimeMs}:${V.size}`}catch{}if(B===H)return;H=B,await q()})().catch(()=>{})},TE);return{root:()=>[k(xE,{tasks:G,get initialTaskId(){return J.initialTaskId},orch:X,reload:q}),k(H3,{})],onDestroy:()=>{if(j)clearInterval(j);X?.dispose()}}}var TE=1500;var _3=C(()=>{P();P();P();P();P();P();P();P();m1();Mz();jJ();P();GY();kJ();D1();sZ();t1();HQ();S1();sq();s1();bJ();MW();tX();FW();bW();j3();f3();eX();SQ();yj();d1();LW();OZ();IJ();O3();uj();g3();d3();cZ();qJ();rJ();mj()});var p3={};H1(p3,{startSettingsHost:()=>hE});function PE(J){let z=JG(),Z=a1(),{theme:Y}=w0(),X=!1,G=!1;async function q(){if(G)return;G=!0;try{if(z.flush()&&X){let j=await hJ();if(j)await NX(j)}}catch(H){console.error("[kobe settings] failed to refresh workspace panes:",H)}finally{process.exit(0)}}return F1(()=>({enabled:Z.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"}}),K(H,k(nY,{kv:z,get orchestrator(){return J.orchestrator??void 0},standalone:!0,onVisualPrefsChange:()=>{X=!0},onClose:q})),u((j)=>Q(H,"backgroundColor",Y.background,j)),H})()}async function hE(){await MJ({setup:async()=>{let J=null;try{let z=await qz();if(z){let Z=new NJ(z);await Z.init(),J=Z}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(PE,{orchestrator:J}),onDestroy:()=>{J?.dispose()}}}})}var r3=C(()=>{P();P();P();P();P();P();kJ();sZ();bW();SQ();d1();OZ();IJ();qJ();rJ()});var o3={};H1(o3,{startHelpHost:()=>mE});function vE(){let J=a1(),{theme:z}=w0();function Z(){process.exit(0)}return F1(()=>({enabled:J.stack.length===0,bindings:[{key:"escape",cmd:Z},{key:"q",cmd:Z},{key:"f1",cmd:Z},{key:"ctrl+c",cmd:Z}]})),(()=>{var Y=W("box");return Q(Y,"flexGrow",1),Q(Y,"paddingTop",1),K(Y,k(ZG,{onClose:Z})),u((X)=>Q(Y,"backgroundColor",z.background,X)),Y})()}async function mE(){await MJ({providers:{kv:!1,focus:!1},setup:()=>({root:()=>k(vE,{})})})}var s3=C(()=>{P();P();P();P();P();MW();d1();OZ();IJ();rJ()});var t3={};H1(t3,{startUpdateHost:()=>aE});import{spawn as cE,spawnSync as dE}from"child_process";import{TextAttributes as QG}from"@opentui/core";function nE(J){if(!J)return!1;let z=process.platform,[Z,Y]=z==="darwin"?["open",[J]]:z==="win32"?["cmd",["/c","start","",J]]:["xdg-open",[J]];try{return cE(Z,Y,{stdio:"ignore",detached:!0}).unref(),!0}catch{return!1}}function iE(J){return J.replace(/\r\n/g,`
265
270
  `).split(`
266
- `).map((z)=>z.trim()).filter(Boolean)}function qE(){if(!process.stdin.isTTY)return Promise.resolve();return new Promise((J)=>{let z=process.stdin,Y=()=>{z.off("data",Y),z.setRawMode?.(!1),z.pause(),J()};z.setRawMode?.(!0),z.resume(),z.once("data",Y)})}function HE(){let{theme:J}=w0(),z=WJ(),[Y,Z]=p(null),[G,X]=p([]),[Q,H]=p(!0),[f,j]=p("update"),[V,B]=p(null),K=U0(()=>Y()?.latest??J1),L=U0(()=>G()[0]?.url??tf(K())),A=U0(()=>[{id:"update",key:"U",label:F("update.actions.updateNow"),detail:oz},{id:"release",key:"R",label:F("update.actions.openRelease"),detail:L()??F("update.releaseUrlUnavailable")},{id:"close",key:"Q",label:F("update.actions.close"),detail:F("update.actions.closeDetail")}]);QJ(()=>{O()});async function O(){let S=await XX({force:!0});Z(S);let g=S?.latest??J1,M=await sf({current:J1,latest:g});X(M),H(!1)}function R(S){let g=A().map((d)=>d.id),T=(g.indexOf(f())+S+g.length)%g.length;j(g[T]??"update")}function u(S=f()){if(S==="close")process.exit(0);if(S==="release"){B(XE(L())?F("update.statusReleaseOpened"):F("update.statusReleaseError"));return}P()}async function P(){B(F("update.statusRunningUpdater")),await new Promise((M)=>setTimeout(M,30)),z?.destroy(),process.stdout.write(`
267
- kobe ${J1} -> latest
268
- `),process.stdout.write(`running: ${oz}
269
-
270
- `);let S=GE("sh",["-c",oz],{stdio:"inherit"}),g=S.status??(S.error?1:0);if(S.error)process.stderr.write(`
271
- kobe update: failed to start updater: ${S.error.message}
272
- `);process.stdout.write(g===0?`
273
- ${F("update.updateComplete")}
271
+ `).map((z)=>z.trim()).filter(Boolean)}function lE(){if(!process.stdin.isTTY)return Promise.resolve();return new Promise((J)=>{let z=process.stdin,Z=()=>{z.off("data",Z),z.setRawMode?.(!1),z.pause(),J()};z.setRawMode?.(!0),z.resume(),z.once("data",Z)})}function $E(){let{theme:J}=w0(),z=VJ(),[Z,Y]=s(null),[X,G]=s([]),[q,H]=s(!0),[j,B]=s("update"),[V,f]=s(null),U=K0(()=>Z()?.latest??J1),L=K0(()=>X()[0]?.url??Q9(U())),O=K0(()=>[{id:"update",key:"U",label:M("update.actions.updateNow"),detail:sz},{id:"release",key:"R",label:M("update.actions.openRelease"),detail:L()??M("update.releaseUrlUnavailable")},{id:"close",key:"Q",label:M("update.actions.close"),detail:M("update.actions.closeDetail")}]);_1(()=>{A()});async function A(){let I=await HG({force:!0});Y(I);let N=I?.latest??J1,F=await G9({current:J1,latest:N});G(F),H(!1)}function g(I){let N=O().map((c)=>c.id),y=(N.indexOf(j())+I+N.length)%N.length;B(N[y]??"update")}function E(I=j()){if(I==="close")process.exit(0);if(I==="release"){f(nE(L())?M("update.statusReleaseOpened"):M("update.statusReleaseError"));return}h()}async function h(){f(M("update.statusRunningUpdater")),await new Promise((F)=>setTimeout(F,30)),z?.destroy(),process.stdout.write(`
272
+ kobe ${J1} -> ${U()}
273
+ `),process.stdout.write(`running: ${sz}
274
+
275
+ `);let I=dE("sh",["-c",sz],{stdio:"inherit"}),N=I.status??(I.error?1:0);if(I.error)process.stderr.write(`
276
+ kobe update: failed to start updater: ${I.error.message}
277
+ `);process.stdout.write(N===0?`
278
+ ${M("update.updateComplete")}
274
279
  `:`
275
- ${F("update.updateFailed",{code:String(g)})}
276
- `),process.stdout.write(F("update.pressAnyKey")),await qE(),process.exit(g)}return U1(()=>({bindings:[{key:"up",cmd:()=>R(-1)},{key:"down",cmd:()=>R(1)},{key:"k",cmd:()=>R(-1)},{key:"j",cmd:()=>R(1)},{key:"return",cmd:()=>u()},{key:"u",cmd:()=>u("update")},{key:"r",cmd:()=>u("release")},{key:"q",cmd:()=>u("close")},{key:"escape",cmd:()=>u("close")},{key:"ctrl+c",cmd:()=>u("close")}]})),(()=>{var S=W("box"),g=W("box"),M=W("text"),T=W("text"),d=W("box"),i=W("text"),J0=W("text"),E=T0("v"),z0=W("text"),q0=W("text"),o=T0("v"),B0=W("box"),g0=W("box"),m=W("text"),r=W("scrollbox"),c=W("box");return D(S,g),D(S,d),D(S,B0),D(S,g0),D(S,r),q(S,"flexDirection","column"),q(S,"flexGrow",1),q(S,"paddingTop",1),q(S,"paddingLeft",2),q(S,"paddingRight",2),D(g,M),D(g,T),q(g,"flexDirection","row"),q(g,"justifyContent","space-between"),q(g,"flexShrink",0),q(M,"wrapMode","none"),U(M,()=>F("update.pageTitle")),D(T,T0("q / esc")),q(T,"wrapMode","none"),q(T,"onMouseUp",()=>u("close")),D(d,i),D(d,J0),D(d,z0),D(d,q0),q(d,"flexDirection","row"),q(d,"gap",2),q(d,"flexShrink",0),q(d,"paddingTop",1),q(i,"wrapMode","none"),U(i,()=>F("update.current")),D(J0,E),q(J0,"wrapMode","none"),U(J0,J1,null),q(z0,"wrapMode","none"),U(z0,()=>F("update.latest")),D(q0,o),q(q0,"wrapMode","none"),U(q0,K,null),q(B0,"flexDirection","column"),q(B0,"flexShrink",0),q(B0,"paddingTop",1),q(B0,"gap",0),U(B0,b(Z1,{get each(){return A()},children:(N)=>(()=>{var t=W("box"),x=W("box"),n=W("text"),Q0=T0("["),H0=T0("]"),F0=W("box"),M0=W("text"),o0=W("text");return D(t,x),D(t,F0),D(t,o0),q(t,"flexDirection","row"),q(t,"gap",1),q(t,"paddingLeft",1),q(t,"paddingRight",1),q(t,"onMouseUp",()=>u(N.id)),D(x,n),q(x,"width",4),q(x,"flexShrink",0),D(n,Q0),D(n,H0),q(n,"wrapMode","none"),U(n,()=>N.key,H0),D(F0,M0),q(F0,"width",14),q(F0,"flexShrink",0),q(M0,"wrapMode","none"),U(M0,()=>N.label),q(o0,"wrapMode","word"),U(o0,()=>N.detail),y((S0)=>{var p0=f()===N.id?J.primary:void 0,h=f()===N.id?J.selectedListItemText:J.accent,L0=ZX.BOLD,Z0=f()===N.id?J.selectedListItemText:J.text,D0=f()===N.id?J.selectedListItemText:J.textMuted;return p0!==S0.e&&(S0.e=q(t,"backgroundColor",p0,S0.e)),h!==S0.t&&(S0.t=q(n,"fg",h,S0.t)),L0!==S0.a&&(S0.a=q(n,"attributes",L0,S0.a)),Z0!==S0.o&&(S0.o=q(M0,"fg",Z0,S0.o)),D0!==S0.i&&(S0.i=q(o0,"fg",D0,S0.i)),S0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),t})()})),U(S,b(Y0,{get when(){return V()},get children(){var N=W("text");return q(N,"wrapMode","word"),U(N,V),y((t)=>q(N,"fg",J.info,t)),N}}),g0),D(g0,m),q(g0,"flexShrink",0),q(g0,"paddingTop",1),q(m,"wrapMode","none"),U(m,()=>F("update.changesSectionHeader",{from:J1,to:K()})),D(r,c),q(r,"flexGrow",1),q(r,"flexShrink",1),q(r,"stickyScroll",!1),q(c,"flexDirection","column"),q(c,"paddingRight",1),q(c,"paddingBottom",1),q(c,"gap",0),U(c,b(Y0,{get when(){return Q()},get children(){var N=W("text");return U(N,()=>F("update.loadingNotes")),y((t)=>q(N,"fg",J.textMuted,t)),N}}),null),U(c,b(Y0,{get when(){return N0(()=>!Q())()&&G().length===0},get children(){var N=W("text");return q(N,"wrapMode","word"),U(N,()=>F("update.notesUnavailable")),y((t)=>q(N,"fg",J.textMuted,t)),N}}),null),U(c,b(Z1,{get each(){return G()},children:(N)=>(()=>{var t=W("box"),x=W("text"),n=T0("v");return D(t,x),q(t,"flexDirection","column"),q(t,"paddingBottom",1),q(t,"gap",0),D(x,n),q(x,"wrapMode","none"),U(x,()=>N.version,null),U(t,b(Z1,{get each(){return QE(N.body)},children:(Q0)=>(()=>{var H0=W("text");return q(H0,"wrapMode","word"),U(H0,Q0),y((F0)=>q(H0,"fg",J.textMuted,F0)),H0})()}),null),y((Q0)=>{var H0=J.text,F0=ZX.BOLD;return H0!==Q0.e&&(Q0.e=q(x,"fg",H0,Q0.e)),F0!==Q0.t&&(Q0.t=q(x,"attributes",F0,Q0.t)),Q0},{e:void 0,t:void 0}),t})()}),null),y((N)=>{var{background:t,text:x}=J,n=ZX.BOLD,Q0=J.textMuted,H0=J.textMuted,F0=J.text,M0=ZX.BOLD,o0=J.textMuted,S0=Y()?.hasUpdate?J.warning:J.success,p0=ZX.BOLD,h=J.textMuted,L0=ZX.DIM,Z0={trackOptions:{backgroundColor:J.background,foregroundColor:J.borderActive}};return t!==N.e&&(N.e=q(S,"backgroundColor",t,N.e)),x!==N.t&&(N.t=q(M,"fg",x,N.t)),n!==N.a&&(N.a=q(M,"attributes",n,N.a)),Q0!==N.o&&(N.o=q(T,"fg",Q0,N.o)),H0!==N.i&&(N.i=q(i,"fg",H0,N.i)),F0!==N.n&&(N.n=q(J0,"fg",F0,N.n)),M0!==N.s&&(N.s=q(J0,"attributes",M0,N.s)),o0!==N.h&&(N.h=q(z0,"fg",o0,N.h)),S0!==N.r&&(N.r=q(q0,"fg",S0,N.r)),p0!==N.d&&(N.d=q(q0,"attributes",p0,N.d)),h!==N.l&&(N.l=q(m,"fg",h,N.l)),L0!==N.u&&(N.u=q(m,"attributes",L0,N.u)),Z0!==N.c&&(N.c=q(r,"verticalScrollbarOptions",Z0,N.c)),N},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0}),S})()}async function fE(){await KJ({setup:()=>({root:()=>b(HE,{})})})}var b3=C(()=>{w();w();w();w();w();w();w();w();w();W1();NJ();h1();ZJ();MY();kJ()});var I3={};q1(I3,{startHistoryHost:()=>ME});import{TextAttributes as GX}from"@opentui/core";function jE(J){let z=J.lastIndexOf("/");return z>=0?J.slice(z+1):J}function BE(J){let z=Date.parse(J);if(Number.isNaN(z))return"";let Y=Math.max(0,Math.floor((Date.now()-z)/1000));if(Y<60)return`${Y}s`;let Z=Math.floor(Y/60);if(Z<60)return`${Z}m`;let G=Math.floor(Z/60);if(G<24)return`${G}h`;return`${Math.floor(G/24)}d`}function WE(J){if(J&&typeof J==="object"&&!Array.isArray(J)){let z=J,Y=(G)=>typeof z[G]==="string"?z[G]:null,Z=Y("command")??Y("file_path")??Y("pattern")??Y("url")??Y("description")??Y("prompt")??Y("query");if(Z)return Z.length>df?`${Z.slice(0,df-1)}\u2026`:Z}try{let z=JSON.stringify(J);if(!z||z==="{}"||z==="null")return"";return z.length>df?`${z.slice(0,df-1)}\u2026`:z}catch{return""}}function VE(J){if(typeof J==="string")return J;try{return JSON.stringify(J,null,2)}catch{return String(J)}}function KE(J){let z=new Map;for(let Y of J)for(let Z of Y.blocks)if(Z.type==="tool_result")z.set(Z.callId,Z);return z}function S3(J){let{theme:z}=w0(),Y=()=>J.text.replace(/\s+$/,"").split(`
277
- `),Z=(G)=>{if(J.error)return z.error;if(G.startsWith("+")&&!G.startsWith("+++"))return z.success;if(G.startsWith("-")&&!G.startsWith("---"))return z.error;return z.textMuted};return(()=>{var G=W("box");return q(G,"flexDirection","column"),q(G,"paddingLeft",2),q(G,"marginLeft",2),U(G,b(Z1,{get each(){return Y()},children:(X)=>(()=>{var Q=W("text");return q(Q,"wrapMode","word"),U(Q,X||" "),y((H)=>q(Q,"fg",Z(X),H)),Q})()})),y((X)=>q(G,"backgroundColor",z.backgroundElement,X)),G})()}function UE(J){let{theme:z}=w0(),Y=J.block;switch(Y.type){case"text":return(()=>{var Z=W("text");return q(Z,"wrapMode","word"),U(Z,()=>Y.text),y((G)=>q(Z,"fg",z.text,G)),Z})();case"thinking":return(()=>{var Z=W("box"),G=W("text");return D(Z,G),q(Z,"flexDirection","column"),q(G,"wrapMode","none"),U(G,()=>`\u2731 ${F("history.thinking")}${J.expanded?"":"\u2026"}`),U(Z,b(Y0,{get when(){return N0(()=>!!J.expanded)()&&Y.text.trim()},get children(){return b(S3,{get text(){return Y.text}})}}),null),y((X)=>{var Q=z.textMuted,H=GX.ITALIC;return Q!==X.e&&(X.e=q(G,"fg",Q,X.e)),H!==X.t&&(X.t=q(G,"attributes",H,X.t)),X},{e:void 0,t:void 0}),Z})();case"tool_call":{let Z=!J.result?.isError,G=J.result?VE(J.result.output):"",X=WE(Y.input);return(()=>{var Q=W("box"),H=W("box"),f=W("text"),j=W("text");return D(Q,H),q(Q,"flexDirection","column"),D(H,f),D(H,j),q(H,"flexDirection","row"),q(H,"gap",1),D(f,T0("\u23FA")),q(f,"wrapMode","none"),q(j,"wrapMode","none"),U(j,()=>Y.name),U(H,b(Y0,{when:X,get children(){var V=W("text");return q(V,"wrapMode","none"),U(V,X),y((B)=>q(V,"fg",z.textMuted,B)),V}}),null),U(Q,b(Y0,{get when(){return N0(()=>!!J.expanded)()&&G.trim()},get children(){return b(S3,{text:G,get error(){return J.result?.isError}})}}),null),y((V)=>{var B=Z?z.success:z.error,K=z.text,L=GX.BOLD;return B!==V.e&&(V.e=q(f,"fg",B,V.e)),K!==V.t&&(V.t=q(j,"fg",K,V.t)),L!==V.a&&(V.a=q(j,"attributes",L,V.a)),V},{e:void 0,t:void 0,a:void 0}),Q})()}case"tool_result":return null}}function DE(J){return J==="assistant"?F("history.role.assistant"):J==="system"?F("history.role.system"):F("history.role.user")}function LE(J){let{theme:z}=w0(),Y=()=>J.msg.role==="user",Z=()=>BE(J.msg.timestamp),G=U0(()=>Y()?J.msg.blocks.filter((Q)=>Q.type==="text"&&Q.text.trim().length>0).map((Q)=>Q.text).join(`
278
- `):""),X=()=>Y()?J.msg.blocks.filter((Q)=>Q.type!=="text"):J.msg.blocks;return(()=>{var Q=W("box");return q(Q,"flexDirection","column"),q(Q,"paddingLeft",1),q(Q,"paddingRight",1),q(Q,"paddingBottom",1),q(Q,"gap",0),U(Q,b(Y0,{get when(){return N0(()=>!!Y())()&&G()},get children(){var H=W("box"),f=W("text"),j=W("text");return D(H,f),D(H,j),q(H,"flexDirection","row"),q(H,"gap",1),q(H,"paddingLeft",1),q(H,"paddingRight",1),D(f,T0("\u276F")),q(f,"wrapMode","none"),q(j,"wrapMode","word"),q(j,"flexGrow",1),U(j,G),U(H,b(Y0,{get when(){return Z()},get children(){var V=W("text");return q(V,"wrapMode","none"),U(V,Z),y((B)=>q(V,"fg",z.textMuted,B)),V}}),null),y((V)=>{var{backgroundElement:B,primary:K}=z,L=GX.BOLD,A=z.text;return B!==V.e&&(V.e=q(H,"backgroundColor",B,V.e)),K!==V.t&&(V.t=q(f,"fg",K,V.t)),L!==V.a&&(V.a=q(f,"attributes",L,V.a)),A!==V.o&&(V.o=q(j,"fg",A,V.o)),V},{e:void 0,t:void 0,a:void 0,o:void 0}),H}}),null),U(Q,b(Y0,{get when(){return!Y()},get children(){var H=W("text");return q(H,"wrapMode","none"),U(H,()=>DE(J.msg.role)),y((f)=>{var j=z.textMuted,V=GX.BOLD;return j!==f.e&&(f.e=q(H,"fg",j,f.e)),V!==f.t&&(f.t=q(H,"attributes",V,f.t)),f},{e:void 0,t:void 0}),H}}),null),U(Q,b(Z1,{get each(){return X()},children:(H)=>b(UE,{block:H,get result(){return N0(()=>H.type==="tool_call")()?J.results.get(H.callId):void 0},get expanded(){return J.expanded}})}),null),Q})()}function FE(J){let{theme:z}=w0(),[Y]=WZ(()=>J.worktree,async(P)=>{try{return await i1(J.vendor).history.listSessionIdsForWorktree(P)}catch{return[]}}),Z=()=>Y()??[],[G,X]=p(0);_0(BJ(Y,(P)=>{let S=(P??[]).length;X(S>0?S-1:0)}));let Q=()=>Z()[G()],[H]=WZ(()=>Q(),async(P)=>{if(!P)return[];try{return await i1(J.vendor).history.readHistory(P)}catch{return[]}}),f=()=>H()??[],j=U0(()=>KE(f())),V=U0(()=>f().reduce((P,S)=>P+(S.usage?.output_tokens??0),0)),[B,K]=p(!1),L,A=(P)=>{if(!L)return;L.scrollTo({x:0,y:Math.max(0,L.scrollTop+P)})};_0(BJ(Q,()=>L?.scrollTo({x:0,y:0})));let O=(P)=>{let S=Z().length;if(S===0)return;X((g)=>Math.min(Math.max(g+P,0),S-1))};U1(()=>({bindings:[{key:"j",cmd:()=>A(cf)},{key:"k",cmd:()=>A(-cf)},{key:"down",cmd:()=>A(cf)},{key:"up",cmd:()=>A(-cf)},{key:"[",cmd:()=>O(-1)},{key:"]",cmd:()=>O(1)},{key:"return",cmd:()=>K((P)=>!P)}]}));let R=()=>J.title?.trim()||jE(J.worktree),u=()=>{let P=Z().length;return P>0?`${F("history.sessionLabel")} ${G()+1}/${P}`:""};return(()=>{var P=W("box"),S=W("box"),g=W("text"),M=W("text"),T=W("box"),d=W("scrollbox"),i=W("box"),J0=W("text");return D(P,S),D(P,d),D(P,i),q(P,"flexDirection","column"),q(P,"flexGrow",1),D(S,g),D(S,M),D(S,T),q(S,"flexDirection","row"),q(S,"gap",1),q(S,"paddingLeft",1),q(S,"paddingRight",1),q(S,"flexShrink",0),q(g,"wrapMode","none"),U(g,()=>F("history.archivedTag")),q(M,"wrapMode","none"),U(M,R),U(S,b(Y0,{get when(){return u()},get children(){var E=W("text");return q(E,"wrapMode","none"),U(E,()=>`\xB7 ${u()}`),y((z0)=>q(E,"fg",z.textMuted,z0)),E}}),T),q(T,"flexGrow",1),U(S,b(Y0,{get when(){return V()>0},get children(){var E=W("text");return q(E,"wrapMode","none"),U(E,()=>`${V()} tok`),y((z0)=>q(E,"fg",z.textMuted,z0)),E}}),null),qz((E)=>{L=E},d),q(d,"flexGrow",1),q(d,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),U(d,b(Y0,{get when(){return N0(()=>!Y.loading)()&&!H.loading},get fallback(){return(()=>{var E=W("box"),z0=W("text");return D(E,z0),q(E,"paddingTop",1),q(E,"paddingLeft",1),U(z0,()=>F("history.loading")),y((q0)=>q(z0,"fg",z.textMuted,q0)),E})()},get children(){return b(Y0,{get when(){return f().length>0},get fallback(){return(()=>{var E=W("box"),z0=W("text");return D(E,z0),q(E,"paddingTop",1),q(E,"paddingLeft",1),U(z0,()=>F("history.empty")),y((q0)=>q(z0,"fg",z.textMuted,q0)),E})()},get children(){return b(Z1,{get each(){return f()},children:(E)=>b(LE,{msg:E,get results(){return j()},get expanded(){return B()}})})}})}})),D(i,J0),q(i,"flexDirection","row"),q(i,"paddingLeft",1),q(i,"paddingRight",1),q(i,"flexShrink",0),q(J0,"wrapMode","none"),U(J0,(()=>{var E=N0(()=>!!B());return()=>E()?F("history.hintExpanded"):F("history.hint")})()),y((E)=>{var{background:z0,backgroundElement:q0,warning:o}=z,B0=GX.BOLD,g0=z.accent,m=GX.BOLD,r=z.backgroundElement,c=z.textMuted;return z0!==E.e&&(E.e=q(P,"backgroundColor",z0,E.e)),q0!==E.t&&(E.t=q(S,"backgroundColor",q0,E.t)),o!==E.a&&(E.a=q(g,"fg",o,E.a)),B0!==E.o&&(E.o=q(g,"attributes",B0,E.o)),g0!==E.i&&(E.i=q(M,"fg",g0,E.i)),m!==E.n&&(E.n=q(M,"attributes",m,E.n)),r!==E.s&&(E.s=q(i,"backgroundColor",r,E.s)),c!==E.h&&(E.h=q(J0,"fg",c,E.h)),E},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0}),P})()}async function ME(J){await KJ({logContext:"history",providers:{kv:!1,focus:!1},setup:()=>({root:()=>b(FE,J)})})}var cf=3,df=120;var y3=C(()=>{w();w();w();w();w();w();w();w();w();QY();W1();h1();ZJ();MY();kJ()});function OE(J){return J.trim().split(/\s+/)[0]??""}function x3(J,z,Y,Z){let G=Q1(Y);if(J==="vim")return{bin:"vim",command:`vim ${G}`};if(J==="nvim")return{bin:"nvim",command:`nvim ${G}`};if(J==="nano")return{bin:"nano",command:`nano ${G}`};if(J==="emacs")return{bin:"emacs",command:`emacs ${G}`};let X=(z.trim()||(Z??"").trim()).trim();if(!X)return null;let Q=OE(X);if(!Q)return null;let H=X.includes(T3)?X.split(T3).join(G):`${X} ${G}`;return{bin:Q,command:H}}function AE(J,z,Y){let Z=Q1(z);return["f=$(mktemp 2>/dev/null)",`if [ -n "$f" ] && git show ${Q1(`HEAD:./${Y}`)} > "$f" 2>/dev/null; then`,` ${J} -d "$f" ${Z} -c 'setlocal nomodifiable' -c 'wincmd l'; r=$?`,"else",` ${J} ${Z}; r=$?`,"fi",'rm -f "$f" 2>/dev/null; exit $r'].join(`
279
- `)}function RE(J,z){let Y=J.endsWith("/")?J:`${J}/`;return z.startsWith(Y)?z.slice(Y.length):null}async function gE(J){let z=bG(S1(BY)),Y=S1(cY)??"",Z=(process.env.VISUAL??process.env.EDITOR??"").trim();if(z!=="auto")return x3(z,Y,J,Z);if(Z)return x3("custom","",J,Z);let G=Q1(J);for(let X of t5)if(await u3(X))return{bin:X,command:`${X} ${G}`};return null}async function u3(J){try{return await Bun.spawn(["sh","-c",`command -v ${Q1(J)} >/dev/null 2>&1`],{stdin:"ignore",stdout:"ignore",stderr:"ignore"}).exited===0}catch{return!1}}async function NE(J,z){try{return await Bun.spawn(["git","diff","--quiet","HEAD","--",z],{cwd:J,stdin:"ignore",stdout:"ignore",stderr:"ignore",env:iJ()}).exited===1}catch{return!1}}async function E3(J,z,Y){let Z=await gE(Y);if(!Z)return!1;if(!await u3(Z.bin))return!1;let G=await CE(Z,z,Y);return await Cz(J,{cwd:z,command:G,name:kE(Y)}),!0}async function CE(J,z,Y){let{bin:Z,command:G}=J;if(Z!=="nvim"&&Z!=="vim")return G;if(G!==`${Z} ${Q1(Y)}`)return G;let X=RE(z,Y);if(!X)return G;if(!await NE(z,X))return G;return AE(Z,Y,X)}function kE(J){let z=J.slice(J.lastIndexOf("/")+1).trim();return z.length>0?z:"edit"}var T3="{file}";var w3=C(()=>{dY();C1();EH();c1();Lz()});async function nf(J,z,Y){if(!z)throw Error("git(): cwd is required");let Z=await SG(z,J,{signal:Y}),G=Z.status??-1;if(G!==0){let X=(Z.stderr??"").trim(),Q=(Z.stdout??"").trim();throw Error(`git ${J.join(" ")} (cwd=${z}) exited with code ${G}: ${X||Q||"(no output)"}`)}return Z.stdout??""}async function OW(J,z){let Z=(await nf(["ls-files","--cached","--others","--exclude-standard","--full-name"],J,z)).split(`
280
- `).map((X)=>X.replace(/\r$/,"")),G=new Set;for(let X of Z)if(X.length>0)G.add(X);return Array.from(G).sort()}async function AW(J,z){let Y=await nf(["status","--porcelain","--untracked-files=all"],J,z),Z=m3(Y),G=new Map;try{let X=await nf(["diff","--no-color","--numstat","HEAD"],J,z);G=new Map(P3(X).map((Q)=>[Q.path,{added:Q.added,deleted:Q.deleted}]))}catch{try{let X=await nf(["diff","--no-color","--numstat","--cached"],J,z);G=new Map(P3(X).map((Q)=>[Q.path,{added:Q.added,deleted:Q.deleted}]))}catch{G=new Map}}return Z.map((X)=>{let Q=G.get(X.path);if(Q)return{...X,added:Q.added,deleted:Q.deleted};return X})}function P3(J){return Z6(J).map((z)=>({path:z.path,added:z.added,deleted:z.deleted}))}function h3(J){let z={name:"",path:"",isDir:!0,children:[]};for(let Y of J){if(!Y)continue;let Z=Y.split("/").filter((X)=>X.length>0);if(Z.length===0)continue;let G=z;for(let X=0;X<Z.length;X++){let Q=Z[X],f=X!==Z.length-1,j=G.children.find((V)=>V.name===Q&&V.isDir===f);if(!j)j={name:Q,path:Z.slice(0,X+1).join("/"),isDir:f,children:[]},G.children.push(j);G=j}}return v3(z),z}function v3(J){J.children.sort((z,Y)=>{if(z.isDir!==Y.isDir)return z.isDir?-1:1;return z.name.localeCompare(Y.name)});for(let z of J.children)v3(z)}function m3(J){let z=[];for(let Y of wH(J)){let Z;if(Y.x==="?"&&Y.y==="?")Z="?";else{let X=Y.y!==" "?Y.y:Y.x;if(X==="M"||X==="A"||X==="D"||X==="R"||X==="C"||X==="U")Z=X;else continue}let G=Y.path;if(G.length===0)continue;if(G.endsWith("/"))continue;z.push({path:G,status:Z})}return z}var RW=C(()=>{PH();hH()});function gW(J){U1(()=>({enabled:J.focused(),bindings:rY({"files.nav":(z,Y)=>{if((Y??0)%2===0)J.moveDown();else J.moveUp()},"files.hierarchy":(z,Y)=>{if((Y??0)%2===0)J.collapseOrParent();else J.expandOrDescend()},"files.tab":(z,Y)=>{let Z=J.currentTab(),G=xQ.indexOf(Z);if(G<0)return;let X=(Y??0)%2===0?-1:1,Q=xQ[(G+X+xQ.length)%xQ.length];if(Q)J.setTab(Q)},"files.open":()=>J.openCurrent(),"files.mention":()=>J.mentionCurrent?.(),"files.createPR":()=>J.createPR?.(),"files.openExternal":()=>J.openExternal(),"files.refresh":()=>J.refresh()})}))}var xQ;var NW=C(()=>{rG();kJ();xQ=["all","changes"]});import{spawn as c3}from"child_process";import{existsSync as bE}from"fs";import{platform as SE}from"os";function d3(J){if(!J)return;let z=SE();if(z==="linux"){if(bE("/proc/sys/fs/binfmt_misc/WSLInterop")||process.env.WSL_DISTRO_NAME){uQ("wslview",[J],()=>{let Y=c3("wslpath",["-w",J],{stdio:["ignore","pipe","ignore"]}),Z="";Y.stdout?.on("data",(G)=>{Z+=G.toString()}),Y.on("close",(G)=>{if(G===0)uQ("explorer.exe",[Z.trim()])})});return}uQ("xdg-open",[J]);return}if(z==="darwin"){uQ("open",[J]);return}if(z==="win32"){uQ("cmd.exe",["/c","start","",J]);return}}function uQ(J,z,Y){try{let Z=c3(J,z,{stdio:"ignore",detached:!0});Z.on("error",()=>Y?.()),Z.unref()}catch{Y?.()}}var n3=()=>{};function CW(J,z,Y,Z){for(let G of J.children)if(G.isDir){let X=z.has(G.path);if(Z.push({kind:"dir",path:G.path,name:G.name,depth:Y,expanded:X,hasChildren:G.children.length>0}),X)CW(G,z,Y+1,Z)}else Z.push({kind:"file",path:G.path,name:G.name,depth:Y})}function i3(J,z){return hf(J,z)}function l3(J){return J.map((z)=>({kind:"status",path:z.path,status:z.status,added:z.added,deleted:z.deleted}))}function IE(J){return`${J.kind}\x00${J.path}`}function yE(J,z){if(J.kind!==z.kind||J.path!==z.path)return!1;switch(J.kind){case"file":{let Y=z;return J.name===Y.name&&J.depth===Y.depth}case"dir":{let Y=z;return J.name===Y.name&&J.depth===Y.depth&&J.expanded===Y.expanded&&J.hasChildren===Y.hasChildren}case"status":{let Y=z;return J.status===Y.status&&J.added===Y.added&&J.deleted===Y.deleted}}}function $3(J,z){return Tf(J,z,IE,yE)}function a3(J,z){if(J===z)return!0;if(J==null||z==null)return!1;if(J.length!==z.length)return!1;for(let Y=0;Y<J.length;Y++)if(J[Y]!==z[Y])return!1;return!0}function _3(J,z){if(J===z)return!0;if(J==null||z==null)return!1;if(J.length!==z.length)return!1;for(let Y=0;Y<J.length;Y++){let Z=J[Y],G=z[Y];if(Z.path!==G.path||Z.status!==G.status||Z.added!==G.added||Z.deleted!==G.deleted)return!1}return!0}var p3=()=>{};import{watch as TE}from"fs";import{TextAttributes as EQ}from"@opentui/core";function xE(J){switch(J){case"M":return"warning";case"A":return"success";case"D":return"error";case"?":return"textMuted";case"R":case"C":case"U":return"info"}}function EE(J){let z=J.toLowerCase();if(z.includes("not a git repository"))return F("files.error.notGitRepo");if(z.includes("does not exist")||z.includes("enoent"))return F("files.error.pathMissing");if(z.includes("permission denied")||z.includes("eacces"))return F("files.error.permissionDenied");if(z.includes("git: not found")||z.includes("command not found"))return F("files.error.gitNotInstalled");let Y=J.indexOf(": ");if(Y>=0&&J.startsWith("git "))return J.slice(Y+2).trim()||F("files.error.gitFailed");return J.trim()||F("files.error.gitFailed")}function wE(J){switch(J){case"all":return F("files.tabs.all");case"changes":return F("files.tabs.changes")}}function kW(J){let{theme:z}=w0(),Y=az(),Z=()=>J.focused?J.focused():!0,[G,X]=p("all"),[Q,H]=p(0),[f,j]=p(0),[V,B]=p(null,{equals:a3}),[K,L]=p(null,{equals:_3}),[A,O]=p(null),[R,u]=p(new Set),P=0;async function S(r,c,N){let t=++P;if(c==null){B(null),L(null),O(null);return}O(null);try{if(r==="all"){let x=await OW(c,N);if(N?.aborted||t!==P||J.worktreePath()!==c)return;B(x)}else if(r==="changes"){let x=await AW(c,N);if(N?.aborted||t!==P||J.worktreePath()!==c)return;L(x)}}catch(x){if(N?.aborted)return;let n=x instanceof Error?x.message:String(x);if(t===P&&J.worktreePath()===c)O(n)}}_0(BJ(J.worktreePath,async(r)=>{B(null),L(null),O(null),H(0),u(new Set);let c=new AbortController;T1(()=>c.abort()),await S(G(),r,c.signal)})),_0(BJ(J.worktreePath,(r)=>{if(r==null)return;if(process.env.KOBE_FILETREE_WATCH!=="1")return;let c=null,N=null;try{N=TE(r,{recursive:!0},(t,x)=>{if(x==null)return;let n=x.toString();if(n===".git"||n.startsWith(".git/")||n.startsWith(".git\\"))return;if(n.startsWith("node_modules/")||n.startsWith("node_modules\\"))return;if(c!=null)clearTimeout(c);c=setTimeout(()=>{c=null,j((Q0)=>Q0+1)},500)}),N.on("error",()=>{})}catch{}T1(()=>{if(c!=null)clearTimeout(c);if(N!=null)N.close()})})),_0(BJ([G,f],async([r,c])=>{let N=J.worktreePath();if(N==null)return;H(0);let t=new AbortController;T1(()=>t.abort());let n=f()>0;if(r==="all"){if(V()==null||n)await S("all",N,t.signal)}else if(r==="changes"){if(K()==null||n)await S("changes",N,t.signal)}}));let g=U0(()=>{let r=V();if(r==null)return null;return h3(r)}),M=U0((r)=>{let c=[];if(G()==="all"){let N=g();if(N!=null)CW(N,R(),0,c)}else if(G()==="changes"){let N=K();if(N!=null)c.push(...l3(N))}return $3(r??[],c)},[]),T=U0(()=>{let r=0,c=0;for(let N of M()){if(N.kind!=="status")continue;if(N.added!=null)r=Math.max(r,String(N.added).length+1);if(N.deleted!=null)c=Math.max(c,String(N.deleted).length+1)}return{added:r,deleted:c}}),d=U0(()=>{let r=T(),c=(r.added>0?r.added+1:0)+(r.deleted>0?r.deleted+1:0);return Math.max(8,Y().width-6-c)});function i(){let r=M();if(r.length===0)return;H(Math.min(Q()+1,r.length-1))}function J0(){if(M().length===0)return;H(Math.max(Q()-1,0))}function E(){let r=M(),c=Q(),N=r[c];if(!N)return;if(N.kind!=="dir")return;if(!N.expanded&&N.hasChildren)u((t)=>{let x=new Set(t);return x.add(N.path),x});else if(N.expanded){if(c+1<r.length)H(c+1)}}function z0(){if(G()!=="all")return;let r=M(),c=Q(),N=r[c];if(!N)return;if(N.kind==="dir"&&N.expanded){u((x)=>{let n=new Set(x);return n.delete(N.path),n});return}if(N.kind!=="dir"&&N.kind!=="file")return;let t=N.depth-1;if(t<0)return;for(let x=c-1;x>=0;x--){let n=r[x];if(!n)continue;if(n.kind==="dir"&&n.depth===t){H(x);return}}}function q0(){let r=M(),c=Q();if(c<0||c>=r.length)return;let N=r[c];if(!N)return;if(N.kind==="dir"){u((t)=>{let x=new Set(t);if(x.has(N.path))x.delete(N.path);else x.add(N.path);return x});return}J.onOpenFile(N.path)}function o(){let r=M(),c=Q();if(c<0||c>=r.length)return;let N=r[c];if(!N||N.kind==="dir")return;J.onMention?.(N.path)}function B0(){j((r)=>r+1),J.onRefresh?.()}function g0(){let r=M(),c=Q();if(c<0||c>=r.length)return;let N=r[c];if(!N||N.kind==="dir")return;let t=J.worktreePath();if(!t)return;let x=`${t}/${N.path}`;d3(x)}gW({focused:Z,moveDown:i,moveUp:J0,setTab:(r)=>X(r),currentTab:G,openCurrent:q0,mentionCurrent:o,createPR:J.onCreatePR,openExternal:g0,refresh:B0,expandOrDescend:E,collapseOrParent:z0});let m;return _0(BJ([Q,M],([r,c])=>{if(!m)return;if(c.length===0)return;let N=m.scrollTop,t=m.viewport.height;if(t<=0)return;if(r<N)m.scrollTo({x:0,y:r});else if(r>=N+t)m.scrollTo({x:0,y:r-t+1})})),(()=>{var r=W("box"),c=W("box"),N=W("box"),t=W("scrollbox");return D(r,c),D(r,t),q(r,"flexDirection","column"),q(r,"flexGrow",1),q(r,"paddingTop",1),q(r,"paddingBottom",1),q(r,"paddingLeft",0),q(r,"paddingRight",0),U(r,b(Y0,{get when(){return J.onZenToggle||J.onCreatePR},get children(){var x=W("box");return q(x,"flexDirection","row"),q(x,"justifyContent","flex-end"),q(x,"gap",2),q(x,"paddingBottom",1),q(x,"flexShrink",0),U(x,b(Y0,{get when(){return J.onZenToggle},get children(){var n=W("box"),Q0=W("text"),H0=W("text");return D(n,Q0),D(n,H0),q(n,"flexDirection","row"),q(n,"gap",1),q(n,"onMouseUp",()=>J.onZenToggle?.()),D(Q0,T0("[~]")),q(Q0,"wrapMode","none"),q(H0,"wrapMode","none"),U(H0,()=>F("files.actions.zen")),y((F0)=>{var M0=z.accent,o0=EQ.BOLD,S0=z.text;return M0!==F0.e&&(F0.e=q(Q0,"fg",M0,F0.e)),o0!==F0.t&&(F0.t=q(Q0,"attributes",o0,F0.t)),S0!==F0.a&&(F0.a=q(H0,"fg",S0,F0.a)),F0},{e:void 0,t:void 0,a:void 0}),n}}),null),U(x,b(Y0,{get when(){return J.onCreatePR},get children(){var n=W("box"),Q0=W("text"),H0=W("text");return D(n,Q0),D(n,H0),q(n,"flexDirection","row"),q(n,"gap",1),q(n,"onMouseUp",()=>J.onCreatePR?.()),D(Q0,T0("[P]")),q(Q0,"wrapMode","none"),q(H0,"wrapMode","none"),U(H0,()=>F("files.actions.createPR")),y((F0)=>{var M0=z.accent,o0=EQ.BOLD,S0=z.text;return M0!==F0.e&&(F0.e=q(Q0,"fg",M0,F0.e)),o0!==F0.t&&(F0.t=q(Q0,"attributes",o0,F0.t)),S0!==F0.a&&(F0.a=q(H0,"fg",S0,F0.a)),F0},{e:void 0,t:void 0,a:void 0}),n}}),null),x}}),c),D(c,N),q(c,"flexDirection","row"),q(c,"justifyContent","space-between"),q(c,"paddingBottom",0),q(c,"flexShrink",0),q(N,"flexDirection","row"),q(N,"gap",2),U(N,b(Z1,{each:uE,children:(x)=>{let n=()=>G()===x;return(()=>{var Q0=W("text");return q(Q0,"wrapMode","none"),q(Q0,"onMouseUp",()=>X(x)),U(Q0,()=>wE(x)),y((H0)=>{var F0=n()?z.primary:z.textMuted,M0=n()?EQ.BOLD:void 0;return F0!==H0.e&&(H0.e=q(Q0,"fg",F0,H0.e)),M0!==H0.t&&(H0.t=q(Q0,"attributes",M0,H0.t)),H0},{e:void 0,t:void 0}),Q0})()}})),U(c,b(Y0,{get when(){return J.cornerBadge?.()},children:(x)=>(()=>{var n=W("text");return q(n,"wrapMode","none"),U(n,()=>x().text),y((Q0)=>{var H0=x().active?z.accent:z.textMuted,F0=x().active?EQ.BOLD:void 0;return H0!==Q0.e&&(Q0.e=q(n,"fg",H0,Q0.e)),F0!==Q0.t&&(Q0.t=q(n,"attributes",F0,Q0.t)),Q0},{e:void 0,t:void 0}),n})()}),null),U(r,b(Y0,{get when(){return G()==="changes"},get children(){var x=W("box"),n=W("text");return D(x,n),q(x,"flexDirection","column"),q(x,"paddingBottom",1),q(x,"flexShrink",0),q(x,"gap",0),q(n,"wrapMode","none"),U(n,()=>F("files.legend.changes")),y((Q0)=>q(n,"fg",z.textMuted,Q0)),x}}),t),U(r,b(Y0,{get when(){return G()!=="changes"},get children(){var x=W("box");return q(x,"flexDirection","row"),q(x,"paddingBottom",1),q(x,"flexShrink",0),x}}),t),qz((x)=>{m=x},t),q(t,"flexGrow",1),q(t,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),U(t,b(Y0,{get when(){return J.worktreePath()==null},get children(){var x=W("box"),n=W("text");return D(x,n),q(x,"paddingTop",1),q(x,"paddingLeft",1),U(n,()=>F("files.empty.noTask")),y((Q0)=>q(n,"fg",z.textMuted,Q0)),x}}),null),U(t,b(Y0,{get when(){return N0(()=>J.worktreePath()!=null)()&&A()!=null},get children(){var x=W("box"),n=W("text"),Q0=W("text");return D(x,n),D(x,Q0),q(x,"paddingTop",1),q(x,"paddingLeft",1),q(x,"flexDirection","column"),q(x,"gap",0),q(n,"wrapMode","word"),U(n,()=>EE(A()??"")),q(Q0,"wrapMode","word"),U(Q0,()=>F("files.error.retryHint")),y((H0)=>{var{error:F0,textMuted:M0}=z;return F0!==H0.e&&(H0.e=q(n,"fg",F0,H0.e)),M0!==H0.t&&(H0.t=q(Q0,"fg",M0,H0.t)),H0},{e:void 0,t:void 0}),x}}),null),U(t,b(Y0,{get when(){return N0(()=>J.worktreePath()!=null&&A()==null&&M().length===0)()&&(G()==="all"&&V()!=null||G()==="changes"&&K()!=null)},get children(){var x=W("box"),n=W("text");return D(x,n),q(x,"paddingTop",1),q(x,"paddingLeft",1),U(n,(()=>{var Q0=N0(()=>G()==="all");return()=>Q0()?F("files.empty.noFiles"):F("files.empty.noChanges")})()),y((Q0)=>q(n,"fg",z.textMuted,Q0)),x}}),null),U(t,b(Y0,{get when(){return N0(()=>J.worktreePath()!=null&&A()==null)()&&M().length>0},get children(){var x=W("box");return q(x,"flexShrink",0),q(x,"gap",0),q(x,"paddingRight",1),U(x,b(Z1,{get each(){return M()},children:(n,Q0)=>{let H0=()=>Q0()===Q(),F0=(()=>{var Z0=W("text");return q(Z0,"wrapMode","none"),U(Z0,()=>H0()?"\u258C":" "),y((D0)=>q(Z0,"fg",H0()?z.focusAccent:void 0,D0)),Z0})(),M0=()=>H0()?z.backgroundElement:void 0;if(n.kind==="dir"){let Z0=" ".repeat(n.depth),D0=n.expanded?"\u25BE":"\u25B8";return(()=>{var P0=W("box"),G1=W("box"),c0=W("text");return D(P0,G1),q(P0,"flexDirection","row"),q(P0,"gap",0),q(P0,"onMouseUp",()=>{H(Q0()),u((u0)=>{let k1=new Set(u0);if(k1.has(n.path))k1.delete(n.path);else k1.add(n.path);return k1})}),U(P0,F0,G1),D(G1,c0),q(G1,"flexGrow",1),q(G1,"paddingRight",1),q(c0,"wrapMode","none"),U(c0,()=>`${Z0}${D0} ${n.name}/`),y((u0)=>{var k1=M0(),s=z.textMuted,j0=EQ.BOLD;return k1!==u0.e&&(u0.e=q(P0,"backgroundColor",k1,u0.e)),s!==u0.t&&(u0.t=q(c0,"fg",s,u0.t)),j0!==u0.a&&(u0.a=q(c0,"attributes",j0,u0.a)),u0},{e:void 0,t:void 0,a:void 0}),P0})()}if(n.kind==="file"){let Z0=" ".repeat(n.depth);return(()=>{var D0=W("box"),P0=W("box"),G1=W("text");return D(D0,P0),q(D0,"flexDirection","row"),q(D0,"gap",0),q(D0,"onMouseUp",()=>{H(Q0()),J.onOpenFile(n.path)}),U(D0,F0,P0),D(P0,G1),q(P0,"flexGrow",1),q(P0,"paddingRight",1),q(G1,"wrapMode","none"),U(G1,()=>`${Z0} ${n.name}`),y((c0)=>{var u0=M0(),k1=z.text;return u0!==c0.e&&(c0.e=q(D0,"backgroundColor",u0,c0.e)),k1!==c0.t&&(c0.t=q(G1,"fg",k1,c0.t)),c0},{e:void 0,t:void 0}),D0})()}let o0=xE(n.status),S0=()=>{switch(o0){case"success":return z.success;case"warning":return z.warning;case"error":return z.error;case"info":return z.info;default:return z.textMuted}},p0=T(),h=n.added==null?" ".repeat(p0.added):`+${n.added}`.padStart(p0.added),L0=n.deleted==null?" ".repeat(p0.deleted):`-${n.deleted}`.padStart(p0.deleted);return(()=>{var Z0=W("box"),D0=W("box"),P0=W("text"),G1=W("text");return D(Z0,D0),q(Z0,"flexDirection","row"),q(Z0,"gap",0),q(Z0,"onMouseUp",()=>{H(Q0()),J.onOpenFile(n.path)}),U(Z0,F0,D0),D(D0,P0),D(D0,G1),q(D0,"flexDirection","row"),q(D0,"flexGrow",1),q(D0,"gap",1),q(D0,"paddingRight",1),q(P0,"wrapMode","none"),U(P0,()=>n.status),q(G1,"wrapMode","none"),q(G1,"flexGrow",1),U(G1,()=>i3(n.path,d())),U(D0,b(Y0,{get when(){return p0.added>0},get children(){var c0=W("text");return q(c0,"wrapMode","none"),U(c0,h),y((u0)=>q(c0,"fg",z.success,u0)),c0}}),null),U(D0,b(Y0,{get when(){return p0.deleted>0},get children(){var c0=W("text");return q(c0,"wrapMode","none"),U(c0,L0),y((u0)=>q(c0,"fg",z.error,u0)),c0}}),null),y((c0)=>{var u0=M0(),k1=S0(),s=z.text;return u0!==c0.e&&(c0.e=q(Z0,"backgroundColor",u0,c0.e)),k1!==c0.t&&(c0.t=q(P0,"fg",k1,c0.t)),s!==c0.a&&(c0.a=q(G1,"fg",s,c0.a)),c0},{e:void 0,t:void 0,a:void 0}),Z0})()}})),x}}),null),U(r,b(Y0,{get when(){return J.worktreePath()!=null},get children(){var x=W("box"),n=W("text");return D(x,n),q(x,"flexDirection","row"),q(x,"paddingTop",1),q(x,"flexShrink",0),q(n,"wrapMode","none"),U(n,()=>F("files.footer.openHint")),y((Q0)=>q(n,"fg",z.textMuted,Q0)),x}}),null),r})()}var uE;var r3=C(()=>{w();w();w();w();w();w();w();w();w();ZJ();w();W1();h1();RW();NW();n3();p3();uE=["all","changes"]});var o3=C(()=>{r3();RW();NW()});function t3(J,z){if(z<3)return 2500;return Math.min(J*2,20000)}function e3(J,z,Y){if(z)return 1500;if(Y==="running")return 1500;return Math.min(J*2,6000)}var s3=2500,wQ=1500;import{promises as PE}from"fs";import hE from"path";async function lf(J,z){let Y=new AbortController,Z=setTimeout(()=>Y.abort(),vE);try{let G=await qY("git",z,{cwd:J,env:iJ(),signal:Y.signal});if(Y.signal.aborted)return null;if(G.status!==0)return null;return G.stdout.trim()}finally{clearTimeout(Z)}}async function mE(J){return await lf(J,["rev-parse","--abbrev-ref","HEAD"])||"HEAD"}async function cE(J){let z=await lf(J,["symbolic-ref","refs/remotes/origin/HEAD","--short"]);if(!z)return"main";return z.startsWith("origin/")?z.slice(7):z}async function dE(J){let z=await lf(J,["rev-parse","--abbrev-ref","@{u}"]);return z!==null&&z.length>0}async function nE(J){let z=await lf(J,["status","--porcelain"]);if(!z)return 0;return z.split(`
281
- `).filter((Y)=>Y.length>0).length}async function iE(J){let[z,Y,Z,G]=await Promise.all([mE(J),cE(J),dE(J),nE(J)]);return{branch:z,targetBranch:Y,hasUpstream:Z,dirtyCount:G}}function lE(J){if(J<=0)return"There are no uncommitted changes.";if(J===1)return"There is 1 uncommitted change.";return`There are ${J} uncommitted changes.`}function $E(J){return J?"The current branch tracks an upstream.":"There is no upstream branch yet."}function aE(J,z){let Y={branch:z.branch,targetBranch:z.targetBranch,dirtyCountSentence:lE(z.dirtyCount),upstreamSentence:$E(z.hasUpstream)};return J.replace(/\{\{([a-zA-Z][a-zA-Z0-9_]*)\}\}/g,(Z,G)=>Object.hasOwn(Y,G)?Y[G]:Z)}async function _E(J){let z=hE.join(J,".kobe","pr-instructions.md");try{let Y=await PE.readFile(z,"utf8");return Y.length>0?Y:JO}catch{return JO}}async function zO(J){let[z,Y]=await Promise.all([_E(J),iE(J)]);return aE(z,Y)}var vE=5000,JO=`The user likes the current state of the code.
280
+ ${M("update.updateFailed",{code:String(N)})}
281
+ `),process.stdout.write(M("update.pressAnyKey")),await lE(),process.exit(N)}return F1(()=>({bindings:[{key:"up",cmd:()=>g(-1)},{key:"down",cmd:()=>g(1)},{key:"k",cmd:()=>g(-1)},{key:"j",cmd:()=>g(1)},{key:"return",cmd:()=>E()},{key:"u",cmd:()=>E("update")},{key:"r",cmd:()=>E("release")},{key:"q",cmd:()=>E("close")},{key:"escape",cmd:()=>E("close")},{key:"ctrl+c",cmd:()=>E("close")}]})),(()=>{var I=W("box"),N=W("box"),F=W("text"),y=W("text"),c=W("box"),d=W("text"),l=W("text"),t=T0("v"),X0=W("text"),q0=W("text"),f0=T0("v"),_=W("box"),O0=W("box"),b=W("text"),p=W("scrollbox"),w=W("box");return D(I,N),D(I,c),D(I,_),D(I,O0),D(I,p),Q(I,"flexDirection","column"),Q(I,"flexGrow",1),Q(I,"paddingTop",1),Q(I,"paddingLeft",2),Q(I,"paddingRight",2),D(N,F),D(N,y),Q(N,"flexDirection","row"),Q(N,"justifyContent","space-between"),Q(N,"flexShrink",0),Q(F,"wrapMode","none"),K(F,()=>M("update.pageTitle")),D(y,T0("q / esc")),Q(y,"wrapMode","none"),Q(y,"onMouseUp",()=>E("close")),D(c,d),D(c,l),D(c,X0),D(c,q0),Q(c,"flexDirection","row"),Q(c,"gap",2),Q(c,"flexShrink",0),Q(c,"paddingTop",1),Q(d,"wrapMode","none"),K(d,()=>M("update.current")),D(l,t),Q(l,"wrapMode","none"),K(l,J1,null),Q(X0,"wrapMode","none"),K(X0,()=>M("update.latest")),D(q0,f0),Q(q0,"wrapMode","none"),K(q0,U,null),Q(_,"flexDirection","column"),Q(_,"flexShrink",0),Q(_,"paddingTop",1),Q(_,"gap",0),K(_,k(Y1,{get each(){return O()},children:(R)=>(()=>{var e=W("box"),x=W("box"),$=W("text"),G0=T0("["),H0=T0("]"),L0=W("box"),F0=W("text"),E0=W("text");return D(e,x),D(e,L0),D(e,E0),Q(e,"flexDirection","row"),Q(e,"gap",1),Q(e,"paddingLeft",1),Q(e,"paddingRight",1),Q(e,"onMouseUp",()=>E(R.id)),D(x,$),Q(x,"width",4),Q(x,"flexShrink",0),D($,G0),D($,H0),Q($,"wrapMode","none"),K($,()=>R.key,H0),D(L0,F0),Q(L0,"width",14),Q(L0,"flexShrink",0),Q(F0,"wrapMode","none"),K(F0,()=>R.label),Q(E0,"wrapMode","word"),K(E0,()=>R.detail),u((b0)=>{var e0=j()===R.id?J.primary:void 0,j1=j()===R.id?J.selectedListItemText:J.accent,k0=QG.BOLD,h0=j()===R.id?J.selectedListItemText:J.text,N0=j()===R.id?J.selectedListItemText:J.textMuted;return e0!==b0.e&&(b0.e=Q(e,"backgroundColor",e0,b0.e)),j1!==b0.t&&(b0.t=Q($,"fg",j1,b0.t)),k0!==b0.a&&(b0.a=Q($,"attributes",k0,b0.a)),h0!==b0.o&&(b0.o=Q(F0,"fg",h0,b0.o)),N0!==b0.i&&(b0.i=Q(E0,"fg",N0,b0.i)),b0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),e})()})),K(I,k(Y0,{get when(){return V()},get children(){var R=W("text");return Q(R,"wrapMode","word"),K(R,V),u((e)=>Q(R,"fg",J.info,e)),R}}),O0),D(O0,b),Q(O0,"flexShrink",0),Q(O0,"paddingTop",1),Q(b,"wrapMode","none"),K(b,()=>M("update.changesSectionHeader",{from:J1,to:U()})),D(p,w),Q(p,"flexGrow",1),Q(p,"flexShrink",1),Q(p,"stickyScroll",!1),Q(w,"flexDirection","column"),Q(w,"paddingRight",1),Q(w,"paddingBottom",1),Q(w,"gap",0),K(w,k(Y0,{get when(){return q()},get children(){var R=W("text");return K(R,()=>M("update.loadingNotes")),u((e)=>Q(R,"fg",J.textMuted,e)),R}}),null),K(w,k(Y0,{get when(){return C0(()=>!q())()&&X().length===0},get children(){var R=W("text");return Q(R,"wrapMode","word"),K(R,()=>M("update.notesUnavailable")),u((e)=>Q(R,"fg",J.textMuted,e)),R}}),null),K(w,k(Y1,{get each(){return X()},children:(R)=>(()=>{var e=W("box"),x=W("text"),$=T0("v");return D(e,x),Q(e,"flexDirection","column"),Q(e,"paddingBottom",1),Q(e,"gap",0),D(x,$),Q(x,"wrapMode","none"),K(x,()=>R.version,null),K(e,k(Y1,{get each(){return iE(R.body)},children:(G0)=>(()=>{var H0=W("text");return Q(H0,"wrapMode","word"),K(H0,G0),u((L0)=>Q(H0,"fg",J.textMuted,L0)),H0})()}),null),u((G0)=>{var H0=J.text,L0=QG.BOLD;return H0!==G0.e&&(G0.e=Q(x,"fg",H0,G0.e)),L0!==G0.t&&(G0.t=Q(x,"attributes",L0,G0.t)),G0},{e:void 0,t:void 0}),e})()}),null),u((R)=>{var{background:e,text:x}=J,$=QG.BOLD,G0=J.textMuted,H0=J.textMuted,L0=J.text,F0=QG.BOLD,E0=J.textMuted,b0=Z()?.hasUpdate?J.warning:J.success,e0=QG.BOLD,j1=J.textMuted,k0=QG.DIM,h0={trackOptions:{backgroundColor:J.background,foregroundColor:J.borderActive}};return e!==R.e&&(R.e=Q(I,"backgroundColor",e,R.e)),x!==R.t&&(R.t=Q(F,"fg",x,R.t)),$!==R.a&&(R.a=Q(F,"attributes",$,R.a)),G0!==R.o&&(R.o=Q(y,"fg",G0,R.o)),H0!==R.i&&(R.i=Q(d,"fg",H0,R.i)),L0!==R.n&&(R.n=Q(l,"fg",L0,R.n)),F0!==R.s&&(R.s=Q(l,"attributes",F0,R.s)),E0!==R.h&&(R.h=Q(X0,"fg",E0,R.h)),b0!==R.r&&(R.r=Q(q0,"fg",b0,R.r)),e0!==R.d&&(R.d=Q(q0,"attributes",e0,R.d)),j1!==R.l&&(R.l=Q(b,"fg",j1,R.l)),k0!==R.u&&(R.u=Q(b,"attributes",k0,R.u)),h0!==R.c&&(R.c=Q(p,"verticalScrollbarOptions",h0,R.c)),R},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0}),I})()}async function aE(){await MJ({setup:()=>({root:()=>k($E,{})})})}var e3=C(()=>{P();P();P();P();P();P();P();P();P();D1();bJ();d1();jJ();OZ();IJ()});function _j(J,z){if(z<3)return 2500;return Math.min(J*2,20000)}function JO(J,z,Z){if(z)return 1500;if(Z==="running")return 1500;return Math.min(J*2,6000)}var aj=2500,uQ=1500;var ZO={};H1(ZO,{startHistoryHost:()=>Zw});import{TextAttributes as qG}from"@opentui/core";function _E(J){let z=J.lastIndexOf("/");return z>=0?J.slice(z+1):J}function pE(J){let z=Date.parse(J);if(Number.isNaN(z))return"";let Z=Math.max(0,Math.floor((Date.now()-z)/1000));if(Z<60)return`${Z}s`;let Y=Math.floor(Z/60);if(Y<60)return`${Y}m`;let X=Math.floor(Y/60);if(X<24)return`${X}h`;return`${Math.floor(X/24)}d`}function rE(J){if(J&&typeof J==="object"&&!Array.isArray(J)){let z=J,Z=(X)=>typeof z[X]==="string"?z[X]:null,Y=Z("command")??Z("file_path")??Z("pattern")??Z("url")??Z("description")??Z("prompt")??Z("query");if(Y)return Y.length>rj?`${Y.slice(0,rj-1)}\u2026`:Y}try{let z=JSON.stringify(J);if(!z||z==="{}"||z==="null")return"";return z.length>rj?`${z.slice(0,rj-1)}\u2026`:z}catch{return""}}function oE(J){if(typeof J==="string")return J;try{return JSON.stringify(J,null,2)}catch{return String(J)}}function sE(J){let z=new Map;for(let Z of J)for(let Y of Z.blocks)if(Y.type==="tool_result")z.set(Y.callId,Y);return z}function zO(J){let{theme:z}=w0(),Z=()=>J.text.replace(/\s+$/,"").split(`
282
+ `),Y=(X)=>{if(J.error)return z.error;if(X.startsWith("+")&&!X.startsWith("+++"))return z.success;if(X.startsWith("-")&&!X.startsWith("---"))return z.error;return z.textMuted};return(()=>{var X=W("box");return Q(X,"flexDirection","column"),Q(X,"paddingLeft",2),Q(X,"marginLeft",2),K(X,k(Y1,{get each(){return Z()},children:(G)=>(()=>{var q=W("text");return Q(q,"wrapMode","word"),K(q,G||" "),u((H)=>Q(q,"fg",Y(G),H)),q})()})),u((G)=>Q(X,"backgroundColor",z.backgroundElement,G)),X})()}function tE(J){let{theme:z}=w0(),Z=J.block;switch(Z.type){case"text":return(()=>{var Y=W("text");return Q(Y,"wrapMode","word"),K(Y,()=>Z.text),u((X)=>Q(Y,"fg",z.text,X)),Y})();case"thinking":return(()=>{var Y=W("box"),X=W("text");return D(Y,X),Q(Y,"flexDirection","column"),Q(X,"wrapMode","none"),K(X,()=>`\u2731 ${M("history.thinking")}${J.expanded?"":"\u2026"}`),K(Y,k(Y0,{get when(){return C0(()=>!!J.expanded)()&&Z.text.trim()},get children(){return k(zO,{get text(){return Z.text}})}}),null),u((G)=>{var q=z.textMuted,H=qG.ITALIC;return q!==G.e&&(G.e=Q(X,"fg",q,G.e)),H!==G.t&&(G.t=Q(X,"attributes",H,G.t)),G},{e:void 0,t:void 0}),Y})();case"tool_call":{let Y=!J.result?.isError,X=J.result?oE(J.result.output):"",G=rE(Z.input);return(()=>{var q=W("box"),H=W("box"),j=W("text"),B=W("text");return D(q,H),Q(q,"flexDirection","column"),D(H,j),D(H,B),Q(H,"flexDirection","row"),Q(H,"gap",1),D(j,T0("\u23FA")),Q(j,"wrapMode","none"),Q(B,"wrapMode","none"),K(B,()=>Z.name),K(H,k(Y0,{when:G,get children(){var V=W("text");return Q(V,"wrapMode","none"),K(V,G),u((f)=>Q(V,"fg",z.textMuted,f)),V}}),null),K(q,k(Y0,{get when(){return C0(()=>!!J.expanded)()&&X.trim()},get children(){return k(zO,{text:X,get error(){return J.result?.isError}})}}),null),u((V)=>{var f=Y?z.success:z.error,U=z.text,L=qG.BOLD;return f!==V.e&&(V.e=Q(j,"fg",f,V.e)),U!==V.t&&(V.t=Q(B,"fg",U,V.t)),L!==V.a&&(V.a=Q(B,"attributes",L,V.a)),V},{e:void 0,t:void 0,a:void 0}),q})()}case"tool_result":return null}}function eE(J){return J==="assistant"?M("history.role.assistant"):J==="system"?M("history.role.system"):M("history.role.user")}function Jw(J){let{theme:z}=w0(),Z=()=>J.msg.role==="user",Y=()=>pE(J.msg.timestamp),X=K0(()=>Z()?J.msg.blocks.filter((q)=>q.type==="text"&&q.text.trim().length>0).map((q)=>q.text).join(`
283
+ `):""),G=()=>Z()?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),K(q,k(Y0,{get when(){return C0(()=>!!Z())()&&X()},get children(){var H=W("box"),j=W("text"),B=W("text");return D(H,j),D(H,B),Q(H,"flexDirection","row"),Q(H,"gap",1),Q(H,"paddingLeft",1),Q(H,"paddingRight",1),D(j,T0("\u276F")),Q(j,"wrapMode","none"),Q(B,"wrapMode","word"),Q(B,"flexGrow",1),K(B,X),K(H,k(Y0,{get when(){return Y()},get children(){var V=W("text");return Q(V,"wrapMode","none"),K(V,Y),u((f)=>Q(V,"fg",z.textMuted,f)),V}}),null),u((V)=>{var{backgroundElement:f,primary:U}=z,L=qG.BOLD,O=z.text;return f!==V.e&&(V.e=Q(H,"backgroundColor",f,V.e)),U!==V.t&&(V.t=Q(j,"fg",U,V.t)),L!==V.a&&(V.a=Q(j,"attributes",L,V.a)),O!==V.o&&(V.o=Q(B,"fg",O,V.o)),V},{e:void 0,t:void 0,a:void 0,o:void 0}),H}}),null),K(q,k(Y0,{get when(){return!Z()},get children(){var H=W("text");return Q(H,"wrapMode","none"),K(H,()=>eE(J.msg.role)),u((j)=>{var B=z.textMuted,V=qG.BOLD;return B!==j.e&&(j.e=Q(H,"fg",B,j.e)),V!==j.t&&(j.t=Q(H,"attributes",V,j.t)),j},{e:void 0,t:void 0}),H}}),null),K(q,k(Y1,{get each(){return G()},children:(H)=>k(tE,{block:H,get result(){return C0(()=>H.type==="tool_call")()?J.results.get(H.callId):void 0},get expanded(){return J.expanded}})}),null),q})()}function zw(J){let{theme:z}=w0(),Z=J.reader??JJ(J.vendor).history,[Y,X]=s(0),[G]=VY(()=>[J.worktree,Y()],async([y])=>{try{return await Z.listSessionIdsForWorktree(y)}catch{return[]}}),q=()=>G.latest??[],[H,j]=s(0),B=0;d0(XJ(G,(y)=>{let c=(y??[]).length;if(c>B)j(c>0?c-1:0);else j((d)=>Math.min(d,Math.max(0,c-1)));B=c}));let V=()=>q()[H()],[f]=VY(()=>{let y=V();return y?[y,Y()]:void 0},async([y])=>{try{return await Z.readHistory(y)}catch{return[]}}),U=()=>f.latest??[],L=K0(()=>sE(U())),O=K0(()=>U().reduce((y,c)=>y+(c.usage?.output_tokens??0),0)),[A,g]=s(!1);_1(()=>{let y=!1,c,d=aj,l=0,t=0,X0=!1;async function q0(){try{let f0=await Z.latestTranscriptMtimeForWorktree(J.worktree);if(y)return;if(!X0)X0=!0,t=f0,l++;else if(f0>t)t=f0,l=0,X((_)=>_+1);else l++}catch{l++}finally{if(!y)d=_j(d,l),c=setTimeout(()=>void q0(),d)}}q0(),b1(()=>{if(y=!0,c)clearTimeout(c)})});let E,h=(y)=>{if(!E)return;E.scrollTo({x:0,y:Math.max(0,E.scrollTop+y)})};d0(XJ(V,()=>E?.scrollTo({x:0,y:0})));let I=(y)=>{let c=q().length;if(c===0)return;j((d)=>Math.min(Math.max(d+y,0),c-1))};F1(()=>({bindings:[{key:"j",cmd:()=>h(pj)},{key:"k",cmd:()=>h(-pj)},{key:"down",cmd:()=>h(pj)},{key:"up",cmd:()=>h(-pj)},{key:"[",cmd:()=>I(-1)},{key:"]",cmd:()=>I(1)},{key:"return",cmd:()=>g((y)=>!y)}]}));let N=()=>J.title?.trim()||_E(J.worktree),F=()=>{let y=q().length;return y>0?`${M("history.sessionLabel")} ${H()+1}/${y}`:""};return(()=>{var y=W("box"),c=W("box"),d=W("text"),l=W("text"),t=W("box"),X0=W("scrollbox"),q0=W("box"),f0=W("text");return D(y,c),D(y,X0),D(y,q0),Q(y,"flexDirection","column"),Q(y,"flexGrow",1),D(c,d),D(c,l),D(c,t),Q(c,"flexDirection","row"),Q(c,"gap",1),Q(c,"paddingLeft",1),Q(c,"paddingRight",1),Q(c,"flexShrink",0),Q(d,"wrapMode","none"),K(d,(()=>{var _=C0(()=>!!J.live);return()=>_()?M("history.liveTag"):M("history.archivedTag")})()),Q(l,"wrapMode","none"),K(l,N),K(c,k(Y0,{get when(){return F()},get children(){var _=W("text");return Q(_,"wrapMode","none"),K(_,()=>`\xB7 ${F()}`),u((O0)=>Q(_,"fg",z.textMuted,O0)),_}}),t),Q(t,"flexGrow",1),K(c,k(Y0,{get when(){return O()>0},get children(){var _=W("text");return Q(_,"wrapMode","none"),K(_,()=>`${O()} tok`),u((O0)=>Q(_,"fg",z.textMuted,O0)),_}}),null),Hz((_)=>{E=_},X0),Q(X0,"flexGrow",1),Q(X0,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),K(X0,k(Y0,{get when(){return G.latest!==void 0},get fallback(){return(()=>{var _=W("box"),O0=W("text");return D(_,O0),Q(_,"paddingTop",1),Q(_,"paddingLeft",1),K(O0,()=>M("history.loading")),u((b)=>Q(O0,"fg",z.textMuted,b)),_})()},get children(){return k(Y0,{get when(){return U().length>0},get fallback(){return(()=>{var _=W("box"),O0=W("text");return D(_,O0),Q(_,"paddingTop",1),Q(_,"paddingLeft",1),K(O0,()=>M("history.empty")),u((b)=>Q(O0,"fg",z.textMuted,b)),_})()},get children(){return k(Y1,{get each(){return U()},children:(_)=>k(Jw,{msg:_,get results(){return L()},get expanded(){return A()}})})}})}})),D(q0,f0),Q(q0,"flexDirection","row"),Q(q0,"paddingLeft",1),Q(q0,"paddingRight",1),Q(q0,"flexShrink",0),Q(f0,"wrapMode","none"),K(f0,(()=>{var _=C0(()=>!!A());return()=>_()?M("history.hintExpanded"):M("history.hint")})()),u((_)=>{var{background:O0,backgroundElement:b}=z,p=J.live?z.success:z.warning,w=qG.BOLD,R=z.accent,e=qG.BOLD,x=z.backgroundElement,$=z.textMuted;return O0!==_.e&&(_.e=Q(y,"backgroundColor",O0,_.e)),b!==_.t&&(_.t=Q(c,"backgroundColor",b,_.t)),p!==_.a&&(_.a=Q(d,"fg",p,_.a)),w!==_.o&&(_.o=Q(d,"attributes",w,_.o)),R!==_.i&&(_.i=Q(l,"fg",R,_.i)),e!==_.n&&(_.n=Q(l,"attributes",e,_.n)),x!==_.s&&(_.s=Q(q0,"backgroundColor",x,_.s)),$!==_.h&&(_.h=Q(f0,"fg",$,_.h)),_},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0}),y})()}async function Zw(J){await MJ({logContext:"history",providers:{kv:!1,focus:!1},setup:()=>({root:()=>k(zw,J)})})}var pj=3,rj=120;var YO=C(()=>{P();P();P();P();P();P();P();P();P();QZ();D1();d1();jJ();OZ();IJ()});function Yw(J){return J.trim().split(/\s+/)[0]??""}function GO(J,z,Z,Y){let X=z1(Z);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()||(Y??"").trim()).trim();if(!G)return null;let q=Yw(G);if(!q)return null;let H=G.includes(XO)?G.split(XO).join(X):`${G} ${X}`;return{bin:q,command:H}}function Xw(J,z,Z){let Y=z1(z);return["f=$(mktemp 2>/dev/null)",`if [ -n "$f" ] && git show ${z1(`HEAD:./${Z}`)} > "$f" 2>/dev/null; then`,` ${J} -d "$f" ${Y} -c 'setlocal nomodifiable' -c 'wincmd l'; r=$?`,"else",` ${J} ${Y}; r=$?`,"fi",'rm -f "$f" 2>/dev/null; exit $r'].join(`
284
+ `)}function Gw(J,z){let Z=J.endsWith("/")?J:`${J}/`;return z.startsWith(Z)?z.slice(Z.length):null}async function Qw(J){let z=yX(x1(WZ)),Z=x1(lZ)??"",Y=(process.env.VISUAL??process.env.EDITOR??"").trim();if(z!=="auto")return GO(z,Z,J,Y);if(Y)return GO("custom","",J,Y);let X=z1(J);for(let G of K6)if(await QO(G))return{bin:G,command:`${G} ${X}`};return null}async function QO(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 qw(J,z){try{return await Bun.spawn(["git","diff","--quiet","HEAD","--",z],{cwd:J,stdin:"ignore",stdout:"ignore",stderr:"ignore",env:_J()}).exited===1}catch{return!1}}async function qO(J,z,Z){let Y=await Qw(Z);if(!Y)return!1;if(!await QO(Y.bin))return!1;let X=await Hw(Y,z,Z);return await bz(J,{cwd:z,command:X,name:jw(Z)}),!0}async function Hw(J,z,Z){let{bin:Y,command:X}=J;if(Y!=="nvim"&&Y!=="vim")return X;if(X!==`${Y} ${z1(Z)}`)return X;let G=Gw(z,Z);if(!G)return X;if(!await qw(z,G))return X;return Xw(Y,Z,G)}function jw(J){let z=J.slice(J.lastIndexOf("/")+1).trim();return z.length>0?z:"edit"}var XO="{file}";var HO=C(()=>{$Z();S1();hH();m1();Mz()});async function oj(J,z,Z){if(!z)throw Error("git(): cwd is required");let Y=await TX(z,J,{signal:Z}),X=Y.status??-1;if(X!==0){let G=(Y.stderr??"").trim(),q=(Y.stdout??"").trim();throw Error(`git ${J.join(" ")} (cwd=${z}) exited with code ${X}: ${G||q||"(no output)"}`)}return Y.stdout??""}async function BO(J,z){let Y=(await oj(["ls-files","--cached","--others","--exclude-standard","--full-name"],J,z)).split(`
285
+ `).map((G)=>G.replace(/\r$/,"")),X=new Set;for(let G of Y)if(G.length>0)X.add(G);return Array.from(X).sort()}async function fO(J,z){let Z=await oj(["status","--porcelain","--untracked-files=all"],J,z),Y=fw(Z),X=new Map;try{let H=await oj(["diff","--no-color","--numstat","HEAD"],J,z);X=new Map(jO(H).map((j)=>[j.path,{added:j.added,deleted:j.deleted}]))}catch{try{let H=await oj(["diff","--no-color","--numstat","--cached"],J,z);X=new Map(jO(H).map((j)=>[j.path,{added:j.added,deleted:j.deleted}]))}catch{X=new Map}}let G=Y.map((H)=>{let j=X.get(H.path);if(j)return{...H,added:j.added,deleted:j.deleted};return H}),q=G.filter((H)=>H.status==="?"&&H.added==null);if(q.length>0)await Promise.all(q.map(async(H)=>{let j=await Bw(J,H.path,z);if(j!=null)H.added=j,H.deleted=0}));return G}async function Bw(J,z,Z){if(Z?.aborted)return null;let Y=await cH(J,z);if(Y==null)return null;if(Y.includes("\x00"))return null;if(Y.length===0)return 0;let X=0;for(let G=0;G<Y.length;G++)if(Y[G]===`
286
+ `)X++;if(!Y.endsWith(`
287
+ `))X++;return X}function jO(J){return O6(J).map((z)=>({path:z.path,added:z.added,deleted:z.deleted}))}function WO(J){let z={name:"",path:"",isDir:!0,children:[]};for(let Z of J){if(!Z)continue;let Y=Z.split("/").filter((G)=>G.length>0);if(Y.length===0)continue;let X=z;for(let G=0;G<Y.length;G++){let q=Y[G],j=G!==Y.length-1,B=X.children.find((V)=>V.name===q&&V.isDir===j);if(!B)B={name:q,path:Y.slice(0,G+1).join("/"),isDir:j,children:[]},X.children.push(B);X=B}}return VO(z),z}function VO(J){J.children.sort((z,Z)=>{if(z.isDir!==Z.isDir)return z.isDir?-1:1;return z.name.localeCompare(Z.name)});for(let z of J.children)VO(z)}function fw(J){let z=[];for(let Z of vH(J)){let Y;if(Z.x==="?"&&Z.y==="?")Y="?";else{let G=Z.y!==" "?Z.y:Z.x;if(G==="M"||G==="A"||G==="D"||G==="R"||G==="C"||G==="U"||G==="T")Y=G;else continue}let X=Z.path;if(X.length===0)continue;if(X.endsWith("/"))continue;z.push({path:X,status:Y})}return z}var UO=C(()=>{mH();dH()});function KO(J){F1(()=>({enabled:J.focused(),bindings:eZ({"files.nav":(z,Z)=>{if((Z??0)%2===0)J.moveDown();else J.moveUp()},"files.hierarchy":(z,Z)=>{if((Z??0)%2===0)J.collapseOrParent();else J.expandOrDescend()},"files.tab":(z,Z)=>{let Y=J.currentTab(),X=sj.indexOf(Y);if(X<0)return;let G=(Z??0)%2===0?-1:1,q=sj[(X+G+sj.length)%sj.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 sj;var DO=C(()=>{eX();IJ();sj=["all","changes"]});import{spawn as LO}from"child_process";import{existsSync as Ww}from"fs";import{platform as Vw}from"os";function MO(J){if(!J)return;let z=Vw();if(z==="linux"){if(Ww("/proc/sys/fs/binfmt_misc/WSLInterop")||process.env.WSL_DISTRO_NAME){EQ("wslview",[J],()=>{let Z=LO("wslpath",["-w",J],{stdio:["ignore","pipe","ignore"]}),Y="";Z.stdout?.on("data",(X)=>{Y+=X.toString()}),Z.on("close",(X)=>{if(X===0)EQ("explorer.exe",[Y.trim()])})});return}EQ("xdg-open",[J]);return}if(z==="darwin"){EQ("open",[J]);return}if(z==="win32"){EQ("cmd.exe",["/c","start","",J]);return}}function EQ(J,z,Z){try{let Y=LO(J,z,{stdio:"ignore",detached:!0});Y.on("error",()=>Z?.()),Y.unref()}catch{Z?.()}}var FO=()=>{};function wW(J,z,Z,Y){for(let X of J.children)if(X.isDir){let G=z.has(X.path);if(Y.push({kind:"dir",path:X.path,name:X.name,depth:Z,expanded:G,hasChildren:X.children.length>0}),G)wW(X,z,Z+1,Y)}else Y.push({kind:"file",path:X.path,name:X.name,depth:Z})}function OO(J,z){return nj(J,z)}function AO(J){return J.map((z)=>({kind:"status",path:z.path,status:z.status,added:z.added,deleted:z.deleted}))}function Uw(J){return`${J.kind}\x00${J.path}`}function Kw(J,z){if(J.kind!==z.kind||J.path!==z.path)return!1;switch(J.kind){case"file":{let Z=z;return J.name===Z.name&&J.depth===Z.depth}case"dir":{let Z=z;return J.name===Z.name&&J.depth===Z.depth&&J.expanded===Z.expanded&&J.hasChildren===Z.hasChildren}case"status":{let Z=z;return J.status===Z.status&&J.added===Z.added&&J.deleted===Z.deleted}}}function RO(J,z){return wj(J,z,Uw,Kw)}function gO(J,z){if(J===z)return!0;if(J==null||z==null)return!1;if(J.length!==z.length)return!1;for(let Z=0;Z<J.length;Z++)if(J[Z]!==z[Z])return!1;return!0}function NO(J,z){if(J===z)return!0;if(J==null||z==null)return!1;if(J.length!==z.length)return!1;for(let Z=0;Z<J.length;Z++){let Y=J[Z],X=z[Z];if(Y.path!==X.path||Y.status!==X.status||Y.added!==X.added||Y.deleted!==X.deleted)return!1}return!0}var CO=()=>{};import{watch as Dw}from"fs";import{TextAttributes as wQ}from"@opentui/core";function Lw(J){switch(J){case"M":return"warning";case"A":return"success";case"D":return"error";case"?":return"textMuted";case"R":case"C":case"U":case"T":return"info"}}function Fw(J){let z=J.toLowerCase();if(z.includes("not a git repository"))return M("files.error.notGitRepo");if(z.includes("does not exist")||z.includes("enoent"))return M("files.error.pathMissing");if(z.includes("permission denied")||z.includes("eacces"))return M("files.error.permissionDenied");if(z.includes("git: not found")||z.includes("command not found"))return M("files.error.gitNotInstalled");let Z=J.indexOf(": ");if(Z>=0&&J.startsWith("git "))return J.slice(Z+2).trim()||M("files.error.gitFailed");return J.trim()||M("files.error.gitFailed")}function Ow(J){switch(J){case"all":return M("files.tabs.all");case"changes":return M("files.tabs.changes")}}function bO(J){let{theme:z}=w0(),Z=_z(),Y=()=>J.focused?J.focused():!0,[X,G]=s("all"),[q,H]=s(0),[j,B]=s(0),[V,f]=s(null,{equals:gO}),[U,L]=s(null,{equals:NO}),[O,A]=s(null),[g,E]=s(new Set),h=0;async function I(p,w,R){let e=++h;if(w==null){f(null),L(null),A(null);return}A(null);try{if(p==="all"){let x=await BO(w,R);if(R?.aborted||e!==h||J.worktreePath()!==w)return;f(x)}else if(p==="changes"){let x=await fO(w,R);if(R?.aborted||e!==h||J.worktreePath()!==w)return;L(x)}}catch(x){if(R?.aborted)return;let $=x instanceof Error?x.message:String(x);if(e===h&&J.worktreePath()===w)A($)}}d0(XJ(J.worktreePath,async(p)=>{f(null),L(null),A(null),H(0),E(new Set);let w=new AbortController;b1(()=>w.abort()),await I(X(),p,w.signal)})),d0(XJ(J.worktreePath,(p)=>{if(p==null)return;if(process.env.KOBE_FILETREE_WATCH!=="1")return;let w=null,R=null;try{R=Dw(p,{recursive:!0},(e,x)=>{if(x==null)return;let $=x.toString();if($===".git"||$.startsWith(".git/")||$.startsWith(".git\\"))return;if($.startsWith("node_modules/")||$.startsWith("node_modules\\"))return;if(w!=null)clearTimeout(w);w=setTimeout(()=>{w=null,B((G0)=>G0+1)},500)}),R.on("error",()=>{})}catch{}b1(()=>{if(w!=null)clearTimeout(w);if(R!=null)R.close()})})),d0(XJ(X,async(p)=>{let w=J.worktreePath();if(H(0),w==null)return;let R=new AbortController;if(b1(()=>R.abort()),p==="all"){if(V()==null)await I("all",w,R.signal)}else if(p==="changes"){if(U()==null)await I("changes",w,R.signal)}})),d0(XJ(j,async()=>{let p=X(),w=J.worktreePath();if(w==null)return;let R=new AbortController;b1(()=>R.abort()),await I(p,w,R.signal)},{defer:!0}));let N=K0(()=>{let p=V();if(p==null)return null;return WO(p)}),F=K0((p)=>{let w=[];if(X()==="all"){let R=N();if(R!=null)wW(R,g(),0,w)}else if(X()==="changes"){let R=U();if(R!=null)w.push(...AO(R))}return RO(p??[],w)},[]);d0(XJ(F,(p)=>{if(p.length===0)return;if(q()>p.length-1)H(p.length-1)}));let y=K0(()=>{let p=0,w=0;for(let R of F()){if(R.kind!=="status")continue;if(R.added!=null)p=Math.max(p,String(R.added).length+1);if(R.deleted!=null)w=Math.max(w,String(R.deleted).length+1)}return{added:p,deleted:w}}),c=K0(()=>{let p=y(),w=(p.added>0?p.added+1:0)+(p.deleted>0?p.deleted+1:0);return Math.max(8,Z().width-6-w)});function d(){let p=F();if(p.length===0)return;H(Math.min(q()+1,p.length-1))}function l(){if(F().length===0)return;H(Math.max(q()-1,0))}function t(){let p=F(),w=q(),R=p[w];if(!R)return;if(R.kind!=="dir")return;if(!R.expanded&&R.hasChildren)E((e)=>{let x=new Set(e);return x.add(R.path),x});else if(R.expanded){if(w+1<p.length)H(w+1)}}function X0(){if(X()!=="all")return;let p=F(),w=q(),R=p[w];if(!R)return;if(R.kind==="dir"&&R.expanded){E((x)=>{let $=new Set(x);return $.delete(R.path),$});return}if(R.kind!=="dir"&&R.kind!=="file")return;let e=R.depth-1;if(e<0)return;for(let x=w-1;x>=0;x--){let $=p[x];if(!$)continue;if($.kind==="dir"&&$.depth===e){H(x);return}}}function q0(){let p=F(),w=q();if(w<0||w>=p.length)return;let R=p[w];if(!R)return;if(R.kind==="dir"){E((e)=>{let x=new Set(e);if(x.has(R.path))x.delete(R.path);else x.add(R.path);return x});return}J.onOpenFile(R.path)}function f0(){let p=F(),w=q();if(w<0||w>=p.length)return;let R=p[w];if(!R||R.kind==="dir")return;J.onMention?.(R.path)}function _(){B((p)=>p+1),J.onRefresh?.()}function O0(){let p=F(),w=q();if(w<0||w>=p.length)return;let R=p[w];if(!R||R.kind==="dir")return;let e=J.worktreePath();if(!e)return;let x=`${e}/${R.path}`;MO(x)}KO({focused:Y,moveDown:d,moveUp:l,setTab:(p)=>G(p),currentTab:X,openCurrent:q0,mentionCurrent:f0,createPR:J.onCreatePR,openExternal:O0,refresh:_,expandOrDescend:t,collapseOrParent:X0});let b;return d0(XJ([q,F],([p,w])=>{if(!b)return;if(w.length===0)return;let R=b.scrollTop,e=b.viewport.height;if(e<=0)return;if(p<R)b.scrollTo({x:0,y:p});else if(p>=R+e)b.scrollTo({x:0,y:p-e+1})})),(()=>{var p=W("box"),w=W("box"),R=W("box"),e=W("scrollbox");return D(p,w),D(p,e),Q(p,"flexDirection","column"),Q(p,"flexGrow",1),Q(p,"paddingTop",1),Q(p,"paddingBottom",1),Q(p,"paddingLeft",0),Q(p,"paddingRight",0),K(p,k(Y0,{get when(){return J.onZenToggle||J.onCreatePR},get children(){var x=W("box");return Q(x,"flexDirection","row"),Q(x,"justifyContent","flex-end"),Q(x,"gap",2),Q(x,"paddingBottom",1),Q(x,"flexShrink",0),K(x,k(Y0,{get when(){return J.onZenToggle},get children(){var $=W("box"),G0=W("text"),H0=W("text");return D($,G0),D($,H0),Q($,"flexDirection","row"),Q($,"gap",1),Q($,"onMouseUp",()=>J.onZenToggle?.()),D(G0,T0("[~]")),Q(G0,"wrapMode","none"),Q(H0,"wrapMode","none"),K(H0,()=>M("files.actions.zen")),u((L0)=>{var F0=z.accent,E0=wQ.BOLD,b0=z.text;return F0!==L0.e&&(L0.e=Q(G0,"fg",F0,L0.e)),E0!==L0.t&&(L0.t=Q(G0,"attributes",E0,L0.t)),b0!==L0.a&&(L0.a=Q(H0,"fg",b0,L0.a)),L0},{e:void 0,t:void 0,a:void 0}),$}}),null),K(x,k(Y0,{get when(){return J.onCreatePR},get children(){var $=W("box"),G0=W("text"),H0=W("text");return D($,G0),D($,H0),Q($,"flexDirection","row"),Q($,"gap",1),Q($,"onMouseUp",()=>J.onCreatePR?.()),D(G0,T0("[P]")),Q(G0,"wrapMode","none"),Q(H0,"wrapMode","none"),K(H0,()=>M("files.actions.createPR")),u((L0)=>{var F0=z.accent,E0=wQ.BOLD,b0=z.text;return F0!==L0.e&&(L0.e=Q(G0,"fg",F0,L0.e)),E0!==L0.t&&(L0.t=Q(G0,"attributes",E0,L0.t)),b0!==L0.a&&(L0.a=Q(H0,"fg",b0,L0.a)),L0},{e:void 0,t:void 0,a:void 0}),$}}),null),x}}),w),D(w,R),Q(w,"flexDirection","row"),Q(w,"justifyContent","space-between"),Q(w,"paddingBottom",0),Q(w,"flexShrink",0),Q(R,"flexDirection","row"),Q(R,"gap",2),K(R,k(Y1,{each:Mw,children:(x)=>{let $=()=>X()===x;return(()=>{var G0=W("text");return Q(G0,"wrapMode","none"),Q(G0,"onMouseUp",()=>G(x)),K(G0,()=>Ow(x)),u((H0)=>{var L0=$()?z.primary:z.textMuted,F0=$()?wQ.BOLD:void 0;return L0!==H0.e&&(H0.e=Q(G0,"fg",L0,H0.e)),F0!==H0.t&&(H0.t=Q(G0,"attributes",F0,H0.t)),H0},{e:void 0,t:void 0}),G0})()}})),K(w,k(Y0,{get when(){return J.cornerBadge?.()},children:(x)=>(()=>{var $=W("text");return Q($,"wrapMode","none"),K($,()=>x().text),u((G0)=>{var H0=x().active?z.accent:z.textMuted,L0=x().active?wQ.BOLD:void 0;return H0!==G0.e&&(G0.e=Q($,"fg",H0,G0.e)),L0!==G0.t&&(G0.t=Q($,"attributes",L0,G0.t)),G0},{e:void 0,t:void 0}),$})()}),null),K(p,k(Y0,{get when(){return X()==="changes"},get children(){var x=W("box"),$=W("text");return D(x,$),Q(x,"flexDirection","column"),Q(x,"paddingBottom",1),Q(x,"flexShrink",0),Q(x,"gap",0),Q($,"wrapMode","none"),K($,()=>M("files.legend.changes")),u((G0)=>Q($,"fg",z.textMuted,G0)),x}}),e),K(p,k(Y0,{get when(){return X()!=="changes"},get children(){var x=W("box");return Q(x,"flexDirection","row"),Q(x,"paddingBottom",1),Q(x,"flexShrink",0),x}}),e),Hz((x)=>{b=x},e),Q(e,"flexGrow",1),Q(e,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),K(e,k(Y0,{get when(){return J.worktreePath()==null},get children(){var x=W("box"),$=W("text");return D(x,$),Q(x,"paddingTop",1),Q(x,"paddingLeft",1),K($,()=>M("files.empty.noTask")),u((G0)=>Q($,"fg",z.textMuted,G0)),x}}),null),K(e,k(Y0,{get when(){return C0(()=>J.worktreePath()!=null)()&&O()!=null},get children(){var x=W("box"),$=W("text"),G0=W("text");return D(x,$),D(x,G0),Q(x,"paddingTop",1),Q(x,"paddingLeft",1),Q(x,"flexDirection","column"),Q(x,"gap",0),Q($,"wrapMode","word"),K($,()=>Fw(O()??"")),Q(G0,"wrapMode","word"),K(G0,()=>M("files.error.retryHint")),u((H0)=>{var{error:L0,textMuted:F0}=z;return L0!==H0.e&&(H0.e=Q($,"fg",L0,H0.e)),F0!==H0.t&&(H0.t=Q(G0,"fg",F0,H0.t)),H0},{e:void 0,t:void 0}),x}}),null),K(e,k(Y0,{get when(){return C0(()=>J.worktreePath()!=null&&O()==null&&F().length===0)()&&(X()==="all"&&V()!=null||X()==="changes"&&U()!=null)},get children(){var x=W("box"),$=W("text");return D(x,$),Q(x,"paddingTop",1),Q(x,"paddingLeft",1),K($,(()=>{var G0=C0(()=>X()==="all");return()=>G0()?M("files.empty.noFiles"):M("files.empty.noChanges")})()),u((G0)=>Q($,"fg",z.textMuted,G0)),x}}),null),K(e,k(Y0,{get when(){return C0(()=>J.worktreePath()!=null&&O()==null)()&&F().length>0},get children(){var x=W("box");return Q(x,"flexShrink",0),Q(x,"gap",0),Q(x,"paddingRight",1),K(x,k(Y1,{get each(){return F()},children:($,G0)=>{let H0=()=>G0()===q(),L0=(()=>{var h0=W("text");return Q(h0,"wrapMode","none"),K(h0,()=>H0()?"\u258C":" "),u((N0)=>Q(h0,"fg",H0()?z.focusAccent:void 0,N0)),h0})(),F0=()=>H0()?z.backgroundElement:void 0;if($.kind==="dir"){let h0=" ".repeat($.depth),N0=$.expanded?"\u25BE":"\u25B8";return(()=>{var o0=W("box"),m=W("box"),j0=W("text");return D(o0,m),Q(o0,"flexDirection","row"),Q(o0,"gap",0),Q(o0,"onMouseUp",()=>{H(G0()),E((z0)=>{let x0=new Set(z0);if(x0.has($.path))x0.delete($.path);else x0.add($.path);return x0})}),K(o0,L0,m),D(m,j0),Q(m,"flexGrow",1),Q(m,"paddingRight",1),Q(j0,"wrapMode","none"),K(j0,()=>`${h0}${N0} ${$.name}/`),u((z0)=>{var x0=F0(),n=z.textMuted,W0=wQ.BOLD;return x0!==z0.e&&(z0.e=Q(o0,"backgroundColor",x0,z0.e)),n!==z0.t&&(z0.t=Q(j0,"fg",n,z0.t)),W0!==z0.a&&(z0.a=Q(j0,"attributes",W0,z0.a)),z0},{e:void 0,t:void 0,a:void 0}),o0})()}if($.kind==="file"){let h0=" ".repeat($.depth);return(()=>{var N0=W("box"),o0=W("box"),m=W("text");return D(N0,o0),Q(N0,"flexDirection","row"),Q(N0,"gap",0),Q(N0,"onMouseUp",()=>{H(G0()),J.onOpenFile($.path)}),K(N0,L0,o0),D(o0,m),Q(o0,"flexGrow",1),Q(o0,"paddingRight",1),Q(m,"wrapMode","none"),K(m,()=>`${h0} ${$.name}`),u((j0)=>{var z0=F0(),x0=z.text;return z0!==j0.e&&(j0.e=Q(N0,"backgroundColor",z0,j0.e)),x0!==j0.t&&(j0.t=Q(m,"fg",x0,j0.t)),j0},{e:void 0,t:void 0}),N0})()}let E0=Lw($.status),b0=()=>{switch(E0){case"success":return z.success;case"warning":return z.warning;case"error":return z.error;case"info":return z.info;default:return z.textMuted}},e0=y(),j1=$.added==null?" ".repeat(e0.added):`+${$.added}`.padStart(e0.added),k0=$.deleted==null?" ".repeat(e0.deleted):`-${$.deleted}`.padStart(e0.deleted);return(()=>{var h0=W("box"),N0=W("box"),o0=W("text"),m=W("text");return D(h0,N0),Q(h0,"flexDirection","row"),Q(h0,"gap",0),Q(h0,"onMouseUp",()=>{H(G0()),J.onOpenFile($.path)}),K(h0,L0,N0),D(N0,o0),D(N0,m),Q(N0,"flexDirection","row"),Q(N0,"flexGrow",1),Q(N0,"gap",1),Q(N0,"paddingRight",1),Q(o0,"wrapMode","none"),K(o0,()=>$.status),Q(m,"wrapMode","none"),Q(m,"flexGrow",1),K(m,()=>OO($.path,c())),K(N0,k(Y0,{get when(){return e0.added>0},get children(){var j0=W("text");return Q(j0,"wrapMode","none"),K(j0,j1),u((z0)=>Q(j0,"fg",z.success,z0)),j0}}),null),K(N0,k(Y0,{get when(){return e0.deleted>0},get children(){var j0=W("text");return Q(j0,"wrapMode","none"),K(j0,k0),u((z0)=>Q(j0,"fg",z.error,z0)),j0}}),null),u((j0)=>{var z0=F0(),x0=b0(),n=z.text;return z0!==j0.e&&(j0.e=Q(h0,"backgroundColor",z0,j0.e)),x0!==j0.t&&(j0.t=Q(o0,"fg",x0,j0.t)),n!==j0.a&&(j0.a=Q(m,"fg",n,j0.a)),j0},{e:void 0,t:void 0,a:void 0}),h0})()}})),x}}),null),K(p,k(Y0,{get when(){return J.worktreePath()!=null},get children(){var x=W("box"),$=W("text");return D(x,$),Q(x,"flexDirection","row"),Q(x,"paddingTop",1),Q(x,"flexShrink",0),Q($,"wrapMode","none"),K($,()=>M("files.footer.openHint")),u((G0)=>Q($,"fg",z.textMuted,G0)),x}}),null),p})()}var Mw;var kO=C(()=>{P();P();P();P();P();P();P();P();P();jJ();P();D1();d1();UO();DO();FO();CO();Mw=["all","changes"]});import{promises as Aw}from"fs";import Rw from"path";async function tj(J,z){let Z=new AbortController,Y=setTimeout(()=>Z.abort(),gw);try{let X=await qZ("git",z,{cwd:J,env:_J(),signal:Z.signal});if(Z.signal.aborted)return null;if(X.status!==0)return null;return X.stdout.trim()}finally{clearTimeout(Y)}}async function Nw(J){return await tj(J,["rev-parse","--abbrev-ref","HEAD"])||"HEAD"}async function Cw(J){let z=await tj(J,["symbolic-ref","refs/remotes/origin/HEAD","--short"]);if(!z)return"main";return z.startsWith("origin/")?z.slice(7):z}async function bw(J){let z=await tj(J,["rev-parse","--abbrev-ref","@{u}"]);return z!==null&&z.length>0}async function kw(J){let z=await tj(J,["status","--porcelain"]);if(!z)return 0;return z.split(`
288
+ `).filter((Z)=>Z.length>0).length}async function Iw(J){let[z,Z,Y,X]=await Promise.all([Nw(J),Cw(J),bw(J),kw(J)]);return{branch:z,targetBranch:Z,hasUpstream:Y,dirtyCount:X}}function Sw(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 yw(J){return J?"The current branch tracks an upstream.":"There is no upstream branch yet."}function Tw(J,z){let Z={branch:z.branch,targetBranch:z.targetBranch,dirtyCountSentence:Sw(z.dirtyCount),upstreamSentence:yw(z.hasUpstream)};return J.replace(/\{\{([a-zA-Z][a-zA-Z0-9_]*)\}\}/g,(Y,X)=>Object.hasOwn(Z,X)?Z[X]:Y)}async function xw(J){let z=Rw.join(J,".kobe","pr-instructions.md");try{let Z=await Aw.readFile(z,"utf8");return Z.length>0?Z:IO}catch{return IO}}async function SO(J){let[z,Z]=await Promise.all([xw(J),Iw(J)]);return Tw(z,Z)}var gw=5000,IO=`The user likes the current state of the code.
282
289
 
283
290
  {{dirtyCountSentence}}
284
291
  The current branch is {{branch}}.
@@ -295,16 +302,16 @@ Follow these steps to create a PR:
295
302
  - Push to origin.
296
303
  - Use \`gh pr create --base {{targetBranch}}\` to create a PR onto the target branch. Keep the title under 80 characters. Keep the description under five sentences. Describe not just changes made in this session but ALL changes since the branch diverged from the target.
297
304
 
298
- If any of these steps fail, ask the user for help.`;var YO=C(()=>{dY();yQ()});var bW={};q1(bW,{startOpsPreview:()=>Qw,startOpsHost:()=>Jw});import{createHash as pE}from"crypto";import{SyntaxStyle as rE}from"@opentui/core";function tE(J){let{theme:z}=w0(),[Y,Z]=p(null),G=!1;QJ(()=>{(async()=>{let g=await Of({logTag:"ops-activity",channels:["transcript.activity"]});if(!g)return;if(G){g.dispose();return}Z(g)})()}),T1(()=>{G=!0,Y()?.dispose()});let X=()=>Y()?.transcriptActivitySignal()()??null,Q=()=>X()?.get(J.worktree)??null,[H,f]=p(0),[j,V]=p(0),B=!1;_0(()=>{let g=X();if(!g)return;let M=g.get(J.worktree)?.mtimeMs??0;if(!B&&M>0)B=!0,f(M);V(M)}),_0(()=>{if(X()!==null)return;let g=!1,M,T=s3,d=0,i=0;async function J0(){try{let E=await tZ(J.vendor,J.worktree);if(g)return;if(!B)B=!0,f(E),i=E;if(E>i)i=E,d=0;else d++;V(E)}catch{d++}finally{if(!g)T=t3(T,d),M=setTimeout(()=>void J0(),T)}}J0(),T1(()=>{if(g=!0,M)clearTimeout(M)})});let K=()=>B&&j()>H(),L=()=>K()?{text:F("ops.badge.newActivity"),active:!0}:null;function A(){f(j())}QJ(()=>{if(!J.targetPane)return;let g=LX(J.vendor),M=!1,T=null,d=!1,i="",J0=!1,E=0,z0=null,q0=wQ,o=0,B0,g0=()=>X()!==null;async function m(t){if(t===z0)return;z0=t,await hY(J.targetPane,sE,t)}async function r(){if(g0())return Q()?.completionId??null;return(await g.latestCompletion(J.worktree))?.id??null}async function c(){try{i=ZO(await WG(J.targetPane,80)),T=await r(),d=!0,await m(g.supportsCompletionMarkers()?"idle":"unknown")}catch{}}async function N(){let t=g0();try{let x=ZO(await WG(J.targetPane,80));if(M)return;if(t&&!d)T=Q()?.completionId??null,d=!0;let n=t?Q()?.mtimeMs??0:0,Q0=n>o;if(n>o)o=n;if(x!==i)i=x,J0=!0,E=0,await m(g.supportsCompletionMarkers()?"running":"unknown");else if(J0)E++;if(g.supportsCompletionMarkers()&&J0&&E>=oE){let H0=await r();if(!M&&H0!==null&&H0!==T)T=H0,J0=!1,E=0,await m("done")}q0=t?e3(q0,Q0,z0):wQ}catch{q0=wQ}finally{if(!M)B0=setTimeout(()=>void N(),q0)}}c(),B0=setTimeout(()=>void N(),wQ),T1(()=>{if(M=!0,B0)clearTimeout(B0)})});function O(g){if(!J.taskId)return;Cz(I1(J.taskId),{cwd:J.worktree,command:X7({worktree:J.worktree,relPath:g,cliInvocation:y1()}),name:eE(g)})}function R(g){if(!J.taskId){O(g);return}let M=`${J.worktree}/${g}`;E3(I1(J.taskId),J.worktree,M).then((T)=>{if(!T)O(g)})}function u(g){if(!J.targetPane)return;OH(J.targetPane,`@${g} `)}async function P(){if(!J.targetPane)return;let g=await zO(J.worktree);await OH(J.targetPane,g),await uX(J.targetPane,"Enter")}function S(){if(!J.taskId)return;let g=I1(J.taskId),M=y1(),T=`${l1()}${yJ(M)} layout --session ${Q1(g)} --action zen-toggle`;d0(["run-shell","-b",T])}return(()=>{var g=W("box");return q(g,"flexDirection","column"),q(g,"flexGrow",1),U(g,b(kW,{worktreePath:()=>J.worktree,focused:()=>!0,onOpenFile:R,onMention:u,onCreatePR:()=>void P(),get onZenToggle(){return J.taskId?S:void 0},cornerBadge:L,onRefresh:A})),y((M)=>q(g,"backgroundColor",z.background,M)),g})()}function eE(J){let z=J.lastIndexOf("/");return z>=0?J.slice(z+1):J}function ZO(J){return pE("sha1").update(J).digest("hex")}async function Jw(J){await KJ({logContext:"ops",providers:{kv:!1,focus:!1},setup:()=>({root:()=>b(tE,J)})})}function zw(J){switch(J.slice(J.lastIndexOf(".")+1).toLowerCase()){case"ts":case"tsx":case"mts":case"cts":return"typescript";case"js":case"jsx":case"mjs":case"cjs":return"javascript";case"md":case"markdown":return"markdown";default:return}}async function Yw(J,z){let Y=await SG(J,["diff","HEAD","--",z]);return Y.status===0?Y.stdout:""}async function Zw(J,z){return await G6(J,z)??""}function Gw(J){let z={fg:J.primary},Y={fg:J.success},Z={fg:J.info},G={fg:J.warning},X={fg:J.accent},Q={fg:J.textMuted,italic:!0},H={fg:J.textMuted},f={fg:J.text};return rE.fromStyles({keyword:z,"keyword.function":z,"keyword.return":z,"keyword.import":z,"keyword.exception":z,"keyword.conditional":z,"keyword.repeat":z,"keyword.operator":z,"keyword.modifier":z,"keyword.type":z,string:Y,"string.escape":Y,"string.regexp":Y,"string.special":Y,"character.special":Y,comment:Q,"comment.documentation":Q,function:Z,"function.call":Z,"function.method":Z,"function.builtin":Z,constructor:Z,type:G,"type.builtin":G,constant:X,"constant.builtin":X,boolean:X,number:X,operator:H,"punctuation.bracket":H,"punctuation.delimiter":H,"punctuation.special":H,variable:f,"variable.member":f,"variable.parameter":f,"variable.builtin":X,property:f,attribute:G,label:f,module:f})}function Xw(J){let{theme:z}=w0(),Y=Gw(z),Z=zw(J.relPath),[G]=WZ(()=>J.relPath,async(X)=>{let Q=await Yw(J.worktree,X);if(Q.trim().length>0)return{kind:"diff",text:Q};return{kind:"code",text:await Zw(J.worktree,X)}});return U1(()=>({bindings:[{key:"q",cmd:()=>process.exit(0)},{key:"escape",cmd:()=>process.exit(0)},{key:"ctrl+c",cmd:()=>process.exit(0)}]})),(()=>{var X=W("box"),Q=W("box"),H=W("text"),f=W("text"),j=W("text"),V=W("box");return D(X,Q),D(X,V),q(X,"flexDirection","column"),q(X,"flexGrow",1),D(Q,H),D(Q,f),D(Q,j),q(Q,"flexDirection","row"),q(Q,"gap",1),q(Q,"paddingLeft",1),q(Q,"paddingRight",1),U(H,()=>J.relPath),U(f,(()=>{var B=N0(()=>G()?.kind==="diff");return()=>B()?F("ops.preview.diffVsHead"):F("ops.preview.file")})()),U(j,()=>F("ops.preview.closeHint")),q(V,"flexGrow",1),U(V,b(Y0,{get when(){return G()},get fallback(){return(()=>{var B=W("text");return U(B,()=>F("ops.preview.loading")),y((K)=>q(B,"fg",z.textMuted,K)),B})()},children:(B)=>b(Y0,{get when(){return B().kind==="diff"},get fallback(){return(()=>{var K=W("code");return q(K,"filetype",Z),q(K,"syntaxStyle",Y),y((L)=>q(K,"content",B().text,L)),K})()},get children(){var K=W("diff");return q(K,"view","unified"),q(K,"filetype",Z),q(K,"syntaxStyle",Y),q(K,"showLineNumbers",!0),y((L)=>q(K,"diff",B().text,L)),K}})})),y((B)=>{var{background:K,accent:L,textMuted:A,textMuted:O}=z;return K!==B.e&&(B.e=q(X,"backgroundColor",K,B.e)),L!==B.t&&(B.t=q(H,"fg",L,B.t)),A!==B.a&&(B.a=q(f,"fg",A,B.a)),O!==B.o&&(B.o=q(j,"fg",O,B.o)),B},{e:void 0,t:void 0,a:void 0,o:void 0}),X})()}async function Qw(J){await KJ({providers:{kv:!1,focus:!1},setup:()=>({root:()=>b(Xw,J)})})}var oE=2,sE="@kobe_tab_state";var SW=C(()=>{w();w();w();w();w();w();w();XY();Fq();Mq();c1();w3();Lz();hH();W1();l8();h1();ZJ();MY();kJ();o3();KZ();YO()});var qO={};q1(qO,{startDirectTmux:()=>Hw,chooseInitialTask:()=>QO});import{resolve as GO}from"path";function QO(J,z={}){let Y=(Q)=>Q?J.find((H)=>H.id===Q):void 0,Z=Y(z.activeTaskId);if(Z)return Z;let G=Y(z.persistedTaskId);if(G)return G;if(z.cwdRepo){let Q=J.find((H)=>H.kind==="main"&&H.repo===z.cwdRepo);if(Q)return Q}let X=J.filter((Q)=>!Q.archived);return X.find((Q)=>Q.pinned)??X[0]??J[0]}async function XO(J){if(J.length===0)return null;try{return await Bun.spawn(J,{stdin:"inherit",stdout:"inherit",stderr:"inherit",env:process.env}).exited}catch{return null}}async function qw(J){Gj();let z=[...SJ()];if(z.length===0)z=[ez(GO(process.cwd())).path];for(let Y of z)try{await J.ensureMainTask(Y)}catch(Z){console.error(`[kobe] ensureMainTask failed for ${Y}:`,Z)}return z[0]??GO(process.cwd())}async function Hw(){if(oQ("gui"),Promise.resolve().then(() => (f8(),H8)).then((Y)=>Y.ensureGlobalKobeHooks()),!await dz()){console.error("kobe: tmux not found on PATH \u2014 install tmux to use kobe 0.6 direct mode"),process.exitCode=1;return}let J=await Sz(),z=new AJ(J,{role:"gui"});try{process.env.KOBE_DAEMON_SOCKET_PATH=J.socketPath,await z.init();let Y=await qw(z),Z=QO(z.listTasks(),{activeTaskId:z.activeTaskSignal()(),persistedTaskId:S1("lastSelectedTaskId"),cwdRepo:Y});if(!Z){let B=await AH();if(await gZ(),await VH(B),await MH(B),await XO(NG(B))===null)console.error("kobe: failed to attach to the kobe-home session"),process.exitCode=1;return}let G=Z.worktreePath||await z.ensureWorktree(Z.id),X=I1(Z.id);await z.setActiveTask(Z.id).catch(()=>{}),e1("lastSelectedTaskId",Z.id);let Q=Z.vendor;if(Z.kind==="main"){let K=await $B(X)??PJ(S1("lastSelectedVendor"),hJ());if(K!==Z.vendor)await z.setVendor(Z.id,K).catch(()=>{}),Q=K}let H=IG(Z.repo,G,{kind:"repo-init"});if(!await pX({name:X,cwd:G,command:cJ(Q),taskId:Z.id,vendor:Q,repo:Z.repo,launchInit:H})){console.error(`kobe: tmux session ${X} failed to start (check the daemon log)`),process.exitCode=1;return}await gZ(),await VH(X),await MH(X);let j=await XO(NG(X));if(j===null){console.error(`kobe: failed to attach to tmux session ${X}`),process.exitCode=1;return}if(j!==0&&!await K1(X)){console.error(`kobe: tmux session ${X} ended unexpectedly (attach exited ${j})`),process.exitCode=j;return}let V=z.getTask(Z.id);if(V&&V.title===hz&&V.worktreePath)try{let B=await eZ(V.worktreePath,V.vendor);if(B)await z.setTitle(V.id,B)}catch(B){console.error("[kobe] auto-title failed:",B)}}finally{z.dispose()}}var HO=C(()=>{GZ();CJ();_Y();Yz();gq();kX();yG();C1();c1();_1();QH();PY();zJ()});var fO={};q1(fO,{startTui:()=>fw});async function fw(){yD();let{startDirectTmux:J}=await Promise.resolve().then(() => (HO(),qO));await J()}var jO=C(()=>{Zf()});$f();_1();import{resolve as yW}from"path";NJ();function GV(){return[`kobe ${J1}`,"","Usage: kobe [command] [options]","","Run with no command to launch the TUI.","","Commands:"," web [options] Launch the browser dashboard"," completions <shell> Generate shell completion script (bash/zsh/fish)"," add [path] Save a repo path for the new-task picker"," remove [path] Forget a saved project (inverse of add; non-destructive)"," adopt [glob] Import existing git worktrees as tasks"," export [--csv|--json] Print the task list (json/csv/table; daemon-free)"," repo <verb> Per-repo init script + first prompt (show|set|unset)"," api <verb> Scriptable RPC surface for agents (see `kobe api --help`)"," daemon <verb> Manage the daemon (start|stop|status|restart)"," theme <verb> Manage user themes (list|add|remove)"," skill <verb> Install the kobe agent skill (install|status|command)"," feedback Send feedback to GitHub Discussions"," update [target] Self-update kobe"," doctor Diagnose daemon / tmux / state (read-only)"," reset [--hard] Recover a wedged install"," reload Restart Tasks/Ops panes in place (engine untouched)"," kill-sessions Tear down kobe's tmux server (dev reset)","","Options:"," -v, --version Print version"," -h, --help Print this help"].join(`
299
- `)}var BO=`Usage: kobe add [path]
305
+ If any of these steps fail, ask the user for help.`;var yO=C(()=>{$Z();TQ()});var PW={};H1(PW,{startOpsPreview:()=>$w,startOpsHost:()=>mw});import{createHash as uw}from"crypto";import{SyntaxStyle as Ew}from"@opentui/core";function hw(J){let{theme:z}=w0(),[Z,Y]=s(null),X=!1;_1(()=>{(async()=>{let N=await Nj({logTag:"ops-activity",channels:["transcript.activity"]});if(!N)return;if(X){N.dispose();return}Y(N)})()}),b1(()=>{X=!0,Z()?.dispose()});let G=()=>Z()?.transcriptActivitySignal()()??null,q=()=>G()?.get(J.worktree)??null,[H,j]=s(0),[B,V]=s(0),f=!1;d0(()=>{let N=G();if(!N)return;let F=N.get(J.worktree)?.mtimeMs??0;if(!f&&F>0)f=!0,j(F);V(F)}),d0(()=>{if(G()!==null)return;let N=!1,F,y=aj,c=0,d=0;async function l(){try{let t=await JX(J.vendor,J.worktree);if(N)return;if(!f)f=!0,j(t),d=t;if(t>d)d=t,c=0;else c++;V(t)}catch{c++}finally{if(!N)y=_j(y,c),F=setTimeout(()=>void l(),y)}}l(),b1(()=>{if(N=!0,F)clearTimeout(F)})});let U=()=>f&&B()>H(),L=()=>U()?{text:M("ops.badge.newActivity"),active:!0}:null;function O(){j(B())}_1(()=>{if(!J.targetPane)return;let N=FG(J.vendor),F=!1,y=null,c=!1,d="",l=!1,t=0,X0=null,q0=uQ,f0=0,_,O0=()=>G()!==null;async function b(e){if(e===X0)return;X0=e,await dZ(J.targetPane,Pw,e)}async function p(){if(O0())return q()?.completionId??null;return(await N.latestCompletion(J.worktree))?.id??null}async function w(){try{d=TO(await UX(J.targetPane,80)),y=await p(),c=!0,await b(N.supportsCompletionMarkers()?"idle":"unknown")}catch{}}async function R(){let e=O0();try{let x=TO(await UX(J.targetPane,80));if(F)return;if(e&&!c)y=q()?.completionId??null,c=!0;let $=e?q()?.mtimeMs??0:0,G0=$>f0;if($>f0)f0=$;if(x!==d)d=x,l=!0,t=0,await b(N.supportsCompletionMarkers()?"running":"unknown");else if(l)t++;if(N.supportsCompletionMarkers()&&l&&t>=ww){let H0=await p();if(!F&&H0!==null&&H0!==y)y=H0,l=!1,t=0,await b("done")}q0=e?JO(q0,G0,X0):uQ}catch{q0=uQ}finally{if(!F)_=setTimeout(()=>void R(),q0)}}w(),_=setTimeout(()=>void R(),uQ),b1(()=>{if(F=!0,_)clearTimeout(_)})});function A(N){if(!J.taskId)return;bz(y1(J.taskId),{cwd:J.worktree,command:M7({worktree:J.worktree,relPath:N,cliInvocation:u1()}),name:vw(N)})}function g(N){if(!J.taskId){A(N);return}let F=`${J.worktree}/${N}`;qO(y1(J.taskId),J.worktree,F).then((y)=>{if(!y)A(N)})}function E(N){if(!J.targetPane)return;gH(J.targetPane,`@${N} `)}async function h(){if(!J.targetPane)return;let N=await SO(J.worktree);await gH(J.targetPane,N),await wG(J.targetPane,"Enter")}function I(){if(!J.taskId)return;let N=y1(J.taskId),F=u1(),y=`${p1()}${TJ(F)} layout --session ${z1(N)} --action zen-toggle`;n0(["run-shell","-b",y])}return(()=>{var N=W("box");return Q(N,"flexDirection","column"),Q(N,"flexGrow",1),K(N,k(bO,{worktreePath:()=>J.worktree,focused:()=>!0,onOpenFile:g,onMention:E,onCreatePR:()=>void h(),get onZenToggle(){return J.taskId?I:void 0},cornerBadge:L,onRefresh:O})),u((F)=>Q(N,"backgroundColor",z.background,F)),N})()}function vw(J){let z=J.lastIndexOf("/");return z>=0?J.slice(z+1):J}function TO(J){return uw("sha1").update(J).digest("hex")}async function mw(J){await MJ({logContext:"ops",providers:{kv:!1,focus:!1},setup:()=>({root:()=>k(hw,J)})})}function cw(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 dw(J,z){let Z=await TX(J,["diff","HEAD","--",z]);return Z.status===0?Z.stdout:""}async function nw(J,z){return await cH(J,z)??""}function iw(J){let z={fg:J.primary},Z={fg:J.success},Y={fg:J.info},X={fg:J.warning},G={fg:J.accent},q={fg:J.textMuted,italic:!0},H={fg:J.textMuted},j={fg:J.text};return Ew.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:Z,"string.escape":Z,"string.regexp":Z,"string.special":Z,"character.special":Z,comment:q,"comment.documentation":q,function:Y,"function.call":Y,"function.method":Y,"function.builtin":Y,constructor:Y,type:X,"type.builtin":X,constant:G,"constant.builtin":G,boolean:G,number:G,operator:H,"punctuation.bracket":H,"punctuation.delimiter":H,"punctuation.special":H,variable:j,"variable.member":j,"variable.parameter":j,"variable.builtin":G,property:j,attribute:X,label:j,module:j})}function lw(J){let{theme:z}=w0(),Z=iw(z),Y=cw(J.relPath),[X]=VY(()=>J.relPath,async(G)=>{let q=await dw(J.worktree,G);if(q.trim().length>0)return{kind:"diff",text:q};return{kind:"code",text:await nw(J.worktree,G)}});return F1(()=>({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"),H=W("text"),j=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,H),D(q,j),D(q,B),Q(q,"flexDirection","row"),Q(q,"gap",1),Q(q,"paddingLeft",1),Q(q,"paddingRight",1),K(H,()=>J.relPath),K(j,(()=>{var f=C0(()=>X()?.kind==="diff");return()=>f()?M("ops.preview.diffVsHead"):M("ops.preview.file")})()),K(B,()=>M("ops.preview.closeHint")),Q(V,"flexGrow",1),K(V,k(Y0,{get when(){return X()},get fallback(){return(()=>{var f=W("text");return K(f,()=>M("ops.preview.loading")),u((U)=>Q(f,"fg",z.textMuted,U)),f})()},children:(f)=>k(Y0,{get when(){return f().kind==="diff"},get fallback(){return(()=>{var U=W("code");return Q(U,"filetype",Y),Q(U,"syntaxStyle",Z),u((L)=>Q(U,"content",f().text,L)),U})()},get children(){var U=W("diff");return Q(U,"view","unified"),Q(U,"filetype",Y),Q(U,"syntaxStyle",Z),Q(U,"showLineNumbers",!0),u((L)=>Q(U,"diff",f().text,L)),U}})})),u((f)=>{var{background:U,accent:L,textMuted:O,textMuted:A}=z;return U!==f.e&&(f.e=Q(G,"backgroundColor",U,f.e)),L!==f.t&&(f.t=Q(H,"fg",L,f.t)),O!==f.a&&(f.a=Q(j,"fg",O,f.a)),A!==f.o&&(f.o=Q(B,"fg",A,f.o)),f},{e:void 0,t:void 0,a:void 0,o:void 0}),G})()}async function $w(J){await MJ({providers:{kv:!1,focus:!1},setup:()=>({root:()=>k(lw,J)})})}var ww=2,Pw="@kobe_tab_state";var hW=C(()=>{P();P();P();P();P();P();P();GZ();Aq();Rq();m1();HO();Mz();dH();D1();YW();d1();jJ();OZ();IJ();kO();KY();yO()});var wO={};H1(wO,{startDirectTmux:()=>_w,chooseInitialTask:()=>EO});import{resolve as xO}from"path";function EO(J,z={}){let Z=(q)=>q?J.find((H)=>H.id===q):void 0,Y=Z(z.activeTaskId);if(Y)return Y;let X=Z(z.persistedTaskId);if(X)return X;if(z.cwdRepo){let q=J.find((H)=>H.kind==="main"&&H.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 uO(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 aw(J){W9();let z=[...SJ()];if(z.length===0)z=[ez(xO(process.cwd())).path];for(let Z of z)try{await J.ensureMainTask(Z)}catch(Y){console.error(`[kobe] ensureMainTask failed for ${Z}:`,Y)}return z[0]??xO(process.cwd())}async function _w(){if(Jq("gui"),Promise.resolve().then(() => (M8(),L8)).then((Z)=>Z.ensureGlobalKobeHooks()),!await nz()){console.error("kobe: tmux not found on PATH \u2014 install tmux to use kobe 0.6 direct mode"),process.exitCode=1;return}let J=await Sz(),z=new NJ(J,{role:"gui"});try{process.env.KOBE_DAEMON_SOCKET_PATH=J.socketPath,await z.init();let Z=await aw(z),Y=EO(z.listTasks(),{activeTaskId:z.activeTaskSignal()(),persistedTaskId:x1("lastSelectedTaskId"),cwdRepo:Z});if(!Y){let f=await NH();if(await NY(),await DH(f),await RH(f),await uO(bX(f))===null)console.error("kobe: failed to attach to the kobe-home session"),process.exitCode=1;return}let X=Y.worktreePath||await z.ensureWorktree(Y.id),G=y1(Y.id);await z.setActiveTask(Y.id).catch(()=>{}),GJ("lastSelectedTaskId",Y.id);let q=Y.vendor;if(Y.kind==="main"){let U=await tB(G)??cJ(x1("lastSelectedVendor"),nJ());if(U!==Y.vendor)await z.setVendor(Y.id,U).catch(()=>{}),q=U}let H=xX(Y.repo,X,{kind:"repo-init"});if(!await oG({name:G,cwd:X,command:EJ(q),taskId:Y.id,vendor:q,repo:Y.repo,launchInit:H})){console.error(`kobe: tmux session ${G} failed to start (check the daemon log)`),process.exitCode=1;return}await NY(),await DH(G),await RH(G);let B=await uO(bX(G));if(B===null){console.error(`kobe: failed to attach to tmux session ${G}`),process.exitCode=1;return}if(B!==0&&!await M1(G)){console.error(`kobe: tmux session ${G} ended unexpectedly (attach exited ${B})`),process.exitCode=B;return}let V=z.getTask(Y.id);if(V&&V.title===vz&&V.worktreePath)try{let f=await zX(V.worktreePath,V.vendor);if(f)await z.setTitle(V.id,f)}catch(f){console.error("[kobe] auto-title failed:",f)}}finally{z.dispose()}}var PO=C(()=>{GY();kJ();sZ();Xz();bq();IG();uX();S1();m1();s1();jH();cZ();qJ()});var hO={};H1(hO,{startTui:()=>pw});async function pw(){aD();let{startDirectTmux:J}=await Promise.resolve().then(() => (PO(),wO));await J()}var vO=C(()=>{qj()});ej();s1();import{resolve as mW}from"path";bJ();function OV(){return[`kobe ${J1}`,"","Usage: kobe [command] [options]","","Run with no command to launch the TUI.","","Commands:"," web [options] Launch the browser dashboard"," completions <shell> Generate shell completion script (bash/zsh/fish)"," add [path] Save a repo path for the new-task picker"," remove [path] Forget a saved project (inverse of add; non-destructive)"," adopt [glob] Import existing git worktrees as tasks"," export [--csv|--json] Print the task list (json/csv/table; daemon-free)"," repo <verb> Per-repo init script + first prompt (show|set|unset)"," api <verb> Scriptable RPC surface for agents (see `kobe api --help`)"," daemon <verb> Manage the daemon (start|stop|status|restart)"," theme <verb> Manage user themes (list|add|remove)"," skill <verb> Install the kobe agent skill (install|status|command)"," feedback Send feedback to GitHub Discussions"," update [target] Self-update kobe"," doctor Diagnose daemon / tmux / state (read-only)"," reset [--hard] Recover a wedged install"," reload Restart Tasks/Ops panes in place (engine untouched)"," kill-sessions Tear down kobe's tmux server (dev reset)","","Options:"," -v, --version Print version"," -h, --help Print this help"].join(`
306
+ `)}var mO=`Usage: kobe add [path]
300
307
  kobe add --remote --host <host> --user <user> --path <basePath> [--port N] [--key <path> | --password]
301
308
 
302
309
  Save a repo for the new-task picker. With --remote, register an SSH-backed
303
310
  project whose worktrees + engine run on <host> under <basePath>.
304
- `;async function jw(J){let z=J[0];if(z==="--help"||z==="-h"||z==="help"){process.stdout.write(BO);return}if(z==="--remote"){let{runAddRemote:Q}=await Promise.resolve().then(() => (AV(),OV));await Q(J.slice(1));return}if(z?.startsWith("-"))process.stderr.write(`kobe add: unknown flag "${z}"
311
+ `;async function rw(J){let z=J[0];if(z==="--help"||z==="-h"||z==="help"){process.stdout.write(mO);return}if(z==="--remote"){let{runAddRemote:q}=await Promise.resolve().then(() => (EV(),uV));await q(J.slice(1));return}if(z?.startsWith("-"))process.stderr.write(`kobe add: unknown flag "${z}"
305
312
 
306
- ${BO}`),process.exit(2);let Y=yW(process.cwd(),z&&z.length>0?z:"."),{addSavedRepo:Z,isGitRepo:G}=await Promise.resolve().then(() => (C1(),zY));if(!G(Y))process.stderr.write(`kobe add: "${z&&z.length>0?z:"."}" is not a git repository (resolved to ${Y}).
307
- `),process.exit(1);let X=Z(Y);if(X.added)console.log(`added ${X.path} (${X.total} saved repo${X.total===1?"":"s"} total)`);else console.log(`already saved: ${X.path}`);await Ww(X.path)}var WO=`Usage: kobe remove [path]
313
+ ${mO}`),process.exit(2);let Z=mW(process.cwd(),z&&z.length>0?z:"."),{addSavedRepo:Y,isGitRepo:X}=await Promise.resolve().then(() => (S1(),zZ));if(!X(Z))process.stderr.write(`kobe add: "${z&&z.length>0?z:"."}" is not a git repository (resolved to ${Z}).
314
+ `),process.exit(1);let G=Y(Z);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 sw(G.path)}var cO=`Usage: kobe remove [path]
308
315
 
309
316
  Forget a saved project (drop it from the new-task picker). Non-destructive:
310
317
  the repo's files, worktrees, branches and tasks all stay on disk. A remote
@@ -313,19 +320,19 @@ the repo's files, worktrees, branches and tasks all stay on disk. A remote
313
320
  path defaults to the current directory. Pass an exact saved entry (e.g. a
314
321
  remote \`ssh://user@host\` key) to remove it verbatim. Run with no match to
315
322
  print the current saved projects.
316
- `;async function Bw(J){let z=J[0];if(z==="--help"||z==="-h"||z==="help"){process.stdout.write(WO);return}if(z?.startsWith("-"))process.stderr.write(`kobe remove: unknown flag "${z}"
323
+ `;async function ow(J){let z=J[0];if(z==="--help"||z==="-h"||z==="help"){process.stdout.write(cO);return}if(z?.startsWith("-"))process.stderr.write(`kobe remove: unknown flag "${z}"
317
324
 
318
- ${WO}`),process.exit(2);let{getSavedRepos:Y,resolveRepoRoot:Z}=await Promise.resolve().then(() => (C1(),zY)),G=Y();if(G.length===0){console.log("no saved projects to remove.");return}let X=z&&z.length>0?z:".",Q=G.includes(X)?X:(()=>{let V=yW(process.cwd(),X),B=Z(V);if(G.includes(B))return B;if(G.includes(V))return V;return null})();if(Q===null){process.stderr.write(`kobe remove: "${X}" is not a saved project.
325
+ ${cO}`),process.exit(2);let{getSavedRepos:Z,resolveRepoRoot:Y}=await Promise.resolve().then(() => (S1(),zZ)),X=Z();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=mW(process.cwd(),G),f=Y(V);if(X.includes(f))return f;if(X.includes(V))return V;return null})();if(q===null){process.stderr.write(`kobe remove: "${G}" is not a saved project.
319
326
 
320
327
  Saved projects:
321
- `);for(let V of G)process.stderr.write(` ${V}
322
- `);process.exit(1)}let{connectIfRunning:H}=await Promise.resolve().then(() => (CJ(),FH)),f=await H();try{if(f)await f.request("project.forget",{repo:Q});else await(await TW()).forgetProject(Q)}finally{f?.close()}let j=Y().length;console.log(`removed ${Q} (${j} saved repo${j===1?"":"s"} left)`)}async function Ww(J){let z=await TW(),Y;try{Y=await z.discoverAdoptableWorktrees(J)}catch(Z){console.error(`(skipped worktree scan: ${Z instanceof Error?Z.message:String(Z)})`);return}if(Y.length===0)return;console.log(`scanning ${J}: ${Y.length} unlinked worktree(s) \u2192 importing`),await KO(z,J,Y,RY(void 0))}async function TW(){let{TaskIndexStore:J}=await Promise.resolve().then(() => (qQ(),d9)),{GitWorktreeManager:z}=await Promise.resolve().then(() => (i9(),T4)),{Orchestrator:Y}=await Promise.resolve().then(() => (kX(),yK)),Z=new J;return await Z.load(),new Y({store:Z,worktrees:new z})}async function KO(J,z,Y,Z){let{connectIfRunning:G}=await Promise.resolve().then(() => (CJ(),FH)),X=await G();try{for(let Q of Y){let H=X?(await X.request("worktree.adopt",{repo:z,worktreePath:Q.path,branch:Q.branch,vendor:Z})).task:await J.adoptWorktree({repo:z,worktreePath:Q.path,branch:Q.branch,vendor:Z});console.log(` adopted ${Q.branch} \u2192 task ${H.id} (${H.title})`)}}finally{X?.close()}}var UO=["Usage: kobe adopt [glob] [--repo <path>] [--vendor <v>] [--yes]","","Import existing git worktrees in a repo as kobe tasks.","No glob \u2192 dry-run listing. With a glob \u2192 list matches; --yes adopts them.","","Options:"," --repo <path> Repo to scan (default: current directory)"," --vendor <v> Engine vendor for adopted tasks"," -y, --yes Actually adopt the matched worktrees"," -h, --help Print this help",""].join(`
323
- `);function IW(J){process.stderr.write(`kobe adopt: ${J}
324
-
325
- ${UO}
326
- `),process.exit(2)}async function Vw(J){let z,Y,Z,G=!1;for(let K=0;K<J.length;K++){let L=J[K];if(L==="--help"||L==="-h"||L==="help"){process.stdout.write(`${UO}
327
- `);return}if(L==="--repo"){if(Y=J[++K],Y===void 0)IW("--repo requires a value")}else if(L==="--vendor"){if(Z=J[++K],Z===void 0)IW("--vendor requires a value")}else if(L==="--yes"||L==="-y")G=!0;else if(L&&!L.startsWith("-")&&z===void 0)z=L;else IW(`unexpected argument "${L}"`)}let{resolveRepoRoot:X}=await Promise.resolve().then(() => (C1(),zY)),Q=X(yW(process.cwd(),Y&&Y.length>0?Y:".")),H=RY(Z),f=await TW(),j=await f.discoverAdoptableWorktrees(Q);if(j.length===0){console.log(`no adoptable worktrees for ${Q} \u2014 every git worktree here is already a task`);return}let V=(K)=>!z||hQ(z,K.path);console.log(`adoptable worktrees in ${Q}:`);for(let K of j){let L=z?V(K)?"*":" ":"-",A=[K.dirty?"dirty":"",K.kobeManaged?"":"external"].filter(Boolean).join(",");console.log(` ${L} ${K.branch} ${K.path}${A?` (${A})`:""}`)}if(!z){console.log(`
328
- pass a path glob to adopt, e.g. kobe adopt '${Q}/*' --yes`);return}let B=j.filter(V);if(B.length===0){console.log(`
329
- 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 KO(f,Q,B,H),console.log(`done \u2014 adopted ${B.length} worktree(s)`)}function VO(J){J.write(`${GV()}
331
- `)}function aJ(J){let z={};for(let Y=0;Y<J.length;Y++){let Z=J[Y],G=J[Y+1];if(G===void 0)continue;if(Z==="--task-id")z.taskId=G,Y++;else if(Z==="--worktree")z.worktree=G,Y++;else if(Z==="--target-pane")z.targetPane=G,Y++;else if(Z==="--vendor")z.vendor=G,Y++;else if(Z==="--preview")z.preview=G,Y++;else if(Z==="--session")z.session=G,Y++;else if(Z==="--repo")z.repo=G,Y++;else if(Z==="--initial-task-id")z.initialTaskId=G,Y++;else if(Z==="--action")z.action=G,Y++;else if(Z==="--window")z.windowId=G,Y++;else if(Z==="--cols")z.cols=G,Y++;else if(Z==="--rows")z.rows=G,Y++;else if(Z==="--status")z.status=G,Y++;else if(Z==="--client")z.client=G,Y++;else if(Z==="--title")z.title=G,Y++}return z}async function Kw(){let[,,...J]=process.argv,[z,...Y]=J;if(z==="--version"||z==="-v"||z==="version"){let{CURRENT_VERSION:G}=await Promise.resolve().then(() => (NJ(),ZV));console.log(`kobe ${G}`);return}if(z==="--help"||z==="-h"||z==="help"){VO(process.stdout);return}if(z==="add"){await jw(Y);return}if(z==="remove"){await Bw(Y);return}if(z==="completions"){let{runCompletionsSubcommand:G}=await Promise.resolve().then(() => (w4(),E4));await G(Y);return}if(z==="adopt"){await Vw(Y);return}if(z==="export"){let{runExportSubcommand:G}=await Promise.resolve().then(() => (c4(),m4));await G(Y);return}if(z==="repo"){let{runRepoSubcommand:G}=await Promise.resolve().then(() => (l4(),i4));await G(Y);return}if(z==="api"){let{runApiSubcommand:G}=await Promise.resolve().then(() => (qD(),QD));await G(Y);return}if(z==="update"){let{runUpdateSubcommand:G}=await Promise.resolve().then(() => (WD(),BD));await G(Y);return}if(z==="theme"){let{runThemeSubcommand:G}=await Promise.resolve().then(() => (LD(),DD));await G(Y);return}if(z==="feedback"){let{runFeedbackSubcommand:G}=await Promise.resolve().then(() => (RD(),AD));await G(Y);return}if(z==="daemon"){let{runDaemonSubcommand:G}=await Promise.resolve().then(() => (bD(),kD));await G(Y);return}if(z==="doctor"){let{runDoctorSubcommand:G}=await Promise.resolve().then(() => (Xf(),Gf));await G(Y);return}if(z==="web"){let{runWebSubcommand:G}=await Promise.resolve().then(() => (iD(),nD));await G(Y);return}if(z==="reset"){let{runResetSubcommand:G}=await Promise.resolve().then(() => (Xf(),Gf));await G(Y);return}if(z==="reload"){let{runReloadSubcommand:G}=await Promise.resolve().then(() => (Xf(),Gf));await G(Y);return}if(z==="skill"){let{runSkillSubcommand:G}=await Promise.resolve().then(() => (aD(),$D));await G(Y);return}if(z==="hook"){let{runHookSubcommand:G}=await Promise.resolve().then(() => (f8(),H8));await G(Y);return}if(z==="new-chattab"){let G=aJ(Y),X=G.session;if(!X)console.error("kobe new-chattab: --session <name> is required"),process.exit(2);let{windowIsSurface:Q}=await Promise.resolve().then(() => (c1(),oX));if(await Q(X))return;let H;if(G.vendor!==void 0){let j=G.vendor.trim(),{getCustomEngineIds:V}=await Promise.resolve().then(() => (C1(),zY)),{isBuiltinVendor:B}=await Promise.resolve().then(() => (_1(),oW));if(!(B(j)||V().includes(j))){let A=[...a1,...V()].join(", "),O=`kobe: unknown engine '${j}' (known: ${A})`,{runTmux:R}=await Promise.resolve().then(() => (c1(),oX));await R(["display-message","-t",X,O]),console.error(O),process.exit(2)}H=j;let{setPersistedString:L}=await Promise.resolve().then(() => (C1(),zY));L("lastSelectedVendor",H)}let{newChatTab:f}=await Promise.resolve().then(() => (zJ(),EJ));await f(X,H);return}if(z==="engine-tab-exit"){let X=aJ(Y).session;if(!X)console.error("kobe engine-tab-exit: --session <name> is required"),process.exit(2);let{engineTabExit:Q}=await Promise.resolve().then(() => (PY(),hB));await Q(X);return}if(z==="kill-sessions"){let{runTmux:G,KOBE_TMUX_SOCKET:X}=await Promise.resolve().then(() => (c1(),oX)),Q=await G(["kill-server"]);console.log(Q===0?`kobe: killed all tmux sessions on the \`${X}\` socket`:`kobe: no tmux sessions to kill on the \`${X}\` socket`);return}if(z==="quick-create"){let X=aJ(Y).session;if(!X)console.error("kobe quick-create: --session <name> is required"),process.exit(2);let{quickCreate:Q}=await Promise.resolve().then(() => (zJ(),EJ));await Q(X);return}if(z==="focus-tasks"){let G=aJ(Y),X=G.session;if(!X)console.error("kobe focus-tasks: --session <name> is required"),process.exit(2);let{windowIsSurface:Q}=await Promise.resolve().then(() => (c1(),oX));if(G.windowId&&await Q(G.windowId))return;let{selectTasksPane:H}=await Promise.resolve().then(() => (zJ(),EJ));await H(X,{windowId:G.windowId});return}if(z==="heal-layout"){let X=aJ(Y).session;if(!X)console.error("kobe heal-layout: --session <name> is required"),process.exit(2);let{healSessionLayout:Q}=await Promise.resolve().then(() => (zJ(),EJ)),{coalesceLayoutWork:H}=await Promise.resolve().then(() => (AG(),fH));await H(X,"heal",()=>Q(X));return}if(z==="resync-window"){let G=aJ(Y),X=G.session;if(!X)console.error("kobe resync-window: --session <name> is required"),process.exit(2);let Q=Number.parseInt(G.cols??"",10),H=Number.parseInt(G.rows??"",10),f=Number.isInteger(Q)&&Q>0&&Number.isInteger(H)&&H>0?{columns:Q,rows:H}:null,{resyncWindowToClient:j}=await Promise.resolve().then(() => (zJ(),EJ)),{coalesceLayoutWork:V}=await Promise.resolve().then(() => (AG(),fH));await V(X,"resync",()=>j(X,{size:f,status:G.status,clientName:G.client}));return}if(z==="capture-layout"){let X=aJ(Y).session;if(!X)console.error("kobe capture-layout: --session <name> is required"),process.exit(2);let{captureGlobalLayoutOnDrag:Q}=await Promise.resolve().then(() => (zJ(),EJ)),{coalesceLayoutWork:H,genAgeMs:f,RESIZE_GUARD_MS:j}=await Promise.resolve().then(() => (AG(),fH));await H(X,"capture",async()=>{if(f(X,"resize")<j)return;await Q(X)});return}if(z==="layout"){let G=aJ(Y),X=G.session;if(!X)console.error("kobe layout: --session <name> is required"),process.exit(2);let Q=G.action;if(!Q||!new Set(["workspace-split","workspace-close","workspace-reset","tasks-toggle","tasks-restore","ops-toggle","terminal-toggle","zen-toggle","chat-tab-close"]).has(Q))console.error("kobe layout: --action must be one of workspace-split, workspace-close, workspace-reset, tasks-toggle, tasks-restore, ops-toggle, terminal-toggle, zen-toggle, chat-tab-close"),process.exit(2);let{runLayoutAction:f}=await Promise.resolve().then(() => (zJ(),EJ));await f(X,Q,{windowId:G.windowId});return}if(z==="quick-task"){let G=aJ(Y),{startQuickTaskHost:X}=await Promise.resolve().then(() => (OM(),MM));await X({session:G.session});return}if(z==="tasks"){let G=aJ(Y),{startTasksPane:X}=await Promise.resolve().then(() => (A3(),O3));await X({initialTaskId:G.initialTaskId});return}if(z==="settings"){let{startSettingsHost:G}=await Promise.resolve().then(() => (g3(),R3));await G();return}if(z==="help-page"){let{startHelpHost:G}=await Promise.resolve().then(() => (C3(),N3));await G();return}if(z==="new-task"){let G=aJ(Y),{startNewTaskHost:X}=await Promise.resolve().then(() => (e8(),jM));await X({defaultRepo:G.repo});return}if(z==="update-page"){let{startUpdateHost:G}=await Promise.resolve().then(() => (b3(),k3));await G();return}if(z==="history"){let G=aJ(Y);if(!G.worktree)console.error("kobe history: --worktree <path> is required"),process.exit(2);let{startHistoryHost:X}=await Promise.resolve().then(() => (y3(),I3));await X({worktree:G.worktree,vendor:RY(G.vendor),title:G.title});return}if(z==="ops"){let G=aJ(Y);if(!G.worktree)console.error("kobe ops: --worktree <path> is required"),process.exit(2);if(G.preview){let{startOpsPreview:Q}=await Promise.resolve().then(() => (SW(),bW));await Q({worktree:G.worktree,relPath:G.preview});return}let{startOpsHost:X}=await Promise.resolve().then(() => (SW(),bW));await X({taskId:G.taskId??"",worktree:G.worktree,targetPane:G.targetPane??null,vendor:RY(G.vendor)});return}if(z!==void 0)console.error(`kobe: unknown command '${z}'`),VO(process.stderr),process.exit(2);let{startTui:Z}=await Promise.resolve().then(() => (jO(),fO));await Z()}Kw().catch((J)=>{console.error("kobe failed to start:",J),process.exit(1)});
328
+ `);for(let V of X)process.stderr.write(` ${V}
329
+ `);process.exit(1)}let{connectIfRunning:H}=await Promise.resolve().then(() => (kJ(),AH)),j=await H();try{if(j)await j.request("project.forget",{repo:q});else await(await cW()).forgetProject(q)}finally{j?.close()}let B=Z().length;console.log(`removed ${q} (${B} saved repo${B===1?"":"s"} left)`)}async function sw(J){let z=await cW(),Z;try{Z=await z.discoverAdoptableWorktrees(J)}catch(Y){console.error(`(skipped worktree scan: ${Y instanceof Error?Y.message:String(Y)})`);return}if(Z.length===0)return;console.log(`scanning ${J}: ${Z.length} unlinked worktree(s) \u2192 importing`),await nO(z,J,Z,NZ(void 0))}async function cW(){let{TaskIndexStore:J}=await Promise.resolve().then(() => (HQ(),of)),{GitWorktreeManager:z}=await Promise.resolve().then(() => (tf(),_4)),{Orchestrator:Z}=await Promise.resolve().then(() => (IG(),$U)),Y=new J;return await Y.load(),new Z({store:Y,worktrees:new z})}async function nO(J,z,Z,Y){let{connectIfRunning:X}=await Promise.resolve().then(() => (kJ(),AH)),G=await X();try{for(let q of Z){let H=G?(await G.request("worktree.adopt",{repo:z,worktreePath:q.path,branch:q.branch,vendor:Y})).task:await J.adoptWorktree({repo:z,worktreePath:q.path,branch:q.branch,vendor:Y});console.log(` adopted ${q.branch} \u2192 task ${H.id} (${H.title})`)}}finally{G?.close()}}var iO=["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(`
330
+ `);function vW(J){process.stderr.write(`kobe adopt: ${J}
331
+
332
+ ${iO}
333
+ `),process.exit(2)}async function tw(J){let z,Z,Y,X=!1;for(let U=0;U<J.length;U++){let L=J[U];if(L==="--help"||L==="-h"||L==="help"){process.stdout.write(`${iO}
334
+ `);return}if(L==="--repo"){if(Z=J[++U],Z===void 0)vW("--repo requires a value")}else if(L==="--vendor"){if(Y=J[++U],Y===void 0)vW("--vendor requires a value")}else if(L==="--yes"||L==="-y")X=!0;else if(L&&!L.startsWith("-")&&z===void 0)z=L;else vW(`unexpected argument "${L}"`)}let{resolveRepoRoot:G}=await Promise.resolve().then(() => (S1(),zZ)),q=G(mW(process.cwd(),Z&&Z.length>0?Z:".")),H=NZ(Y),j=await cW(),B=await j.discoverAdoptableWorktrees(q);if(B.length===0){console.log(`no adoptable worktrees for ${q} \u2014 every git worktree here is already a task`);return}let V=(U)=>!z||hQ(z,U.path);console.log(`adoptable worktrees in ${q}:`);for(let U of B){let L=z?V(U)?"*":" ":"-",O=[U.dirty?"dirty":"",U.kobeManaged?"":"external"].filter(Boolean).join(",");console.log(` ${L} ${U.branch} ${U.path}${O?` (${O})`:""}`)}if(!z){console.log(`
335
+ pass a path glob to adopt, e.g. kobe adopt '${q}/*' --yes`);return}let f=B.filter(V);if(f.length===0){console.log(`
336
+ no worktrees match glob ${JSON.stringify(z)}`);return}if(!X){console.log(`
337
+ ${f.length} worktree(s) match \u2014 re-run with --yes to adopt them`);return}await nO(j,q,f,H),console.log(`done \u2014 adopted ${f.length} worktree(s)`)}function dO(J){J.write(`${OV()}
338
+ `)}function oJ(J){let z={};for(let Z=0;Z<J.length;Z++){let Y=J[Z],X=J[Z+1];if(X===void 0)continue;if(Y==="--task-id")z.taskId=X,Z++;else if(Y==="--worktree")z.worktree=X,Z++;else if(Y==="--target-pane")z.targetPane=X,Z++;else if(Y==="--vendor")z.vendor=X,Z++;else if(Y==="--preview")z.preview=X,Z++;else if(Y==="--session")z.session=X,Z++;else if(Y==="--repo")z.repo=X,Z++;else if(Y==="--initial-task-id")z.initialTaskId=X,Z++;else if(Y==="--action")z.action=X,Z++;else if(Y==="--window")z.windowId=X,Z++;else if(Y==="--cols")z.cols=X,Z++;else if(Y==="--rows")z.rows=X,Z++;else if(Y==="--status")z.status=X,Z++;else if(Y==="--client")z.client=X,Z++;else if(Y==="--title")z.title=X,Z++}return z}async function ew(){let[,,...J]=process.argv,[z,...Z]=J;if(z==="--version"||z==="-v"||z==="version"){let{CURRENT_VERSION:X}=await Promise.resolve().then(() => (bJ(),FV));console.log(`kobe ${X}`);return}if(z==="--help"||z==="-h"||z==="help"){dO(process.stdout);return}if(z==="add"){await rw(Z);return}if(z==="remove"){await ow(Z);return}if(z==="completions"){let{runCompletionsSubcommand:X}=await Promise.resolve().then(() => (s4(),o4));await X(Z);return}if(z==="adopt"){await tw(Z);return}if(z==="export"){let{runExportSubcommand:X}=await Promise.resolve().then(() => (ZD(),zD));await X(Z);return}if(z==="repo"){let{runRepoSubcommand:X}=await Promise.resolve().then(() => (QD(),GD));await X(Z);return}if(z==="api"){let{runApiSubcommand:X}=await Promise.resolve().then(() => (gD(),RD));await X(Z);return}if(z==="update"){let{runUpdateSubcommand:X}=await Promise.resolve().then(() => (ID(),kD));await X(Z);return}if(z==="theme"){let{runThemeSubcommand:X}=await Promise.resolve().then(() => (uD(),xD));await X(Z);return}if(z==="feedback"){let{runFeedbackSubcommand:X}=await Promise.resolve().then(() => (vD(),hD));await X(Z);return}if(z==="daemon"){let{runDaemonSubcommand:X}=await Promise.resolve().then(() => (iD(),nD));await X(Z);return}if(z==="doctor"){let{runDoctorSubcommand:X}=await Promise.resolve().then(() => (jj(),Hj));await X(Z);return}if(z==="web"){let{runWebSubcommand:X}=await Promise.resolve().then(() => (GL(),XL));await X(Z);return}if(z==="reset"){let{runResetSubcommand:X}=await Promise.resolve().then(() => (jj(),Hj));await X(Z);return}if(z==="reload"){let{runReloadSubcommand:X}=await Promise.resolve().then(() => (jj(),Hj));await X(Z);return}if(z==="skill"){let{runSkillSubcommand:X}=await Promise.resolve().then(() => (HL(),qL));await X(Z);return}if(z==="hook"){let{runHookSubcommand:X}=await Promise.resolve().then(() => (M8(),L8));await X(Z);return}if(z==="new-chattab"){let X=oJ(Z),G=X.session;if(!G)console.error("kobe new-chattab: --session <name> is required"),process.exit(2);let{windowIsSurface:q}=await Promise.resolve().then(() => (m1(),IX));if(await q(G))return;let H;if(X.vendor!==void 0){let B=X.vendor.trim(),{getCustomEngineIds:V}=await Promise.resolve().then(() => (S1(),zZ)),{isBuiltinVendor:f}=await Promise.resolve().then(() => (s1(),fV));if(!(f(B)||V().includes(B))){let O=[...o1,...V()].join(", "),A=`kobe: unknown engine '${B}' (known: ${O})`,{runTmux:g}=await Promise.resolve().then(() => (m1(),IX));await g(["display-message","-t",G,A]),console.error(A),process.exit(2)}H=B;let{setPersistedString:L}=await Promise.resolve().then(() => (S1(),zZ));L("lastSelectedVendor",H)}let{newChatTab:j}=await Promise.resolve().then(() => (qJ(),PJ));await j(G,H);return}if(z==="engine-tab-exit"){let G=oJ(Z).session;if(!G)console.error("kobe engine-tab-exit: --session <name> is required"),process.exit(2);let{engineTabExit:q}=await Promise.resolve().then(() => (cZ(),lB));await q(G);return}if(z==="kill-sessions"){let{runTmux:X,termAllPaneGroups:G,KOBE_TMUX_SOCKET:q}=await Promise.resolve().then(() => (m1(),IX));await G();let H=await X(["kill-server"]);console.log(H===0?`kobe: killed all tmux sessions on the \`${q}\` socket`:`kobe: no tmux sessions to kill on the \`${q}\` socket`);return}if(z==="quick-create"){let G=oJ(Z).session;if(!G)console.error("kobe quick-create: --session <name> is required"),process.exit(2);let{quickCreate:q}=await Promise.resolve().then(() => (qJ(),PJ));await q(G);return}if(z==="focus-tasks"){let X=oJ(Z),G=X.session;if(!G)console.error("kobe focus-tasks: --session <name> is required"),process.exit(2);let{windowIsSurface:q}=await Promise.resolve().then(() => (m1(),IX));if(X.windowId&&await q(X.windowId))return;let{selectTasksPane:H}=await Promise.resolve().then(() => (qJ(),PJ));await H(G,{windowId:X.windowId});return}if(z==="heal-layout"){let G=oJ(Z).session;if(!G)console.error("kobe heal-layout: --session <name> is required"),process.exit(2);let{healSessionLayout:q}=await Promise.resolve().then(() => (qJ(),PJ)),{coalesceLayoutWork:H}=await Promise.resolve().then(() => (gX(),WH));await H(G,"heal",()=>q(G));return}if(z==="resync-window"){let X=oJ(Z),G=X.session;if(!G)console.error("kobe resync-window: --session <name> is required"),process.exit(2);let q=Number.parseInt(X.cols??"",10),H=Number.parseInt(X.rows??"",10),j=Number.isInteger(q)&&q>0&&Number.isInteger(H)&&H>0?{columns:q,rows:H}:null,{resyncWindowToClient:B}=await Promise.resolve().then(() => (qJ(),PJ)),{coalesceLayoutWork:V}=await Promise.resolve().then(() => (gX(),WH));await V(G,"resync",()=>B(G,{size:j,status:X.status,clientName:X.client}));return}if(z==="capture-layout"){let G=oJ(Z).session;if(!G)console.error("kobe capture-layout: --session <name> is required"),process.exit(2);let{captureGlobalLayoutOnDrag:q}=await Promise.resolve().then(() => (qJ(),PJ)),{coalesceLayoutWork:H,genAgeMs:j,RESIZE_GUARD_MS:B}=await Promise.resolve().then(() => (gX(),WH));await H(G,"capture",async()=>{if(j(G,"resize")<B)return;await q(G)});return}if(z==="layout"){let X=oJ(Z),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);if(q==="tasks-restore"&&X.windowId){let{windowIsSurface:B}=await Promise.resolve().then(() => (m1(),IX));if(await B(X.windowId))return}let{runLayoutAction:j}=await Promise.resolve().then(() => (qJ(),PJ));await j(G,q,{windowId:X.windowId});return}if(z==="quick-task"){let X=oJ(Z),{startQuickTaskHost:G}=await Promise.resolve().then(() => ($F(),lF));await G({session:X.session});return}if(z==="tasks"){let X=oJ(Z),{startTasksPane:G}=await Promise.resolve().then(() => (_3(),a3));await G({initialTaskId:X.initialTaskId});return}if(z==="settings"){let{startSettingsHost:X}=await Promise.resolve().then(() => (r3(),p3));await X();return}if(z==="help-page"){let{startHelpHost:X}=await Promise.resolve().then(() => (s3(),o3));await X();return}if(z==="new-task"){let X=oJ(Z),{startNewTaskHost:G}=await Promise.resolve().then(() => (UW(),wF));await G({defaultRepo:X.repo});return}if(z==="update-page"){let{startUpdateHost:X}=await Promise.resolve().then(() => (e3(),t3));await X();return}if(z==="history"){let X=oJ(Z);if(!X.worktree)console.error("kobe history: --worktree <path> is required"),process.exit(2);let{startHistoryHost:G}=await Promise.resolve().then(() => (YO(),ZO));await G({worktree:X.worktree,vendor:NZ(X.vendor),title:X.title,live:Z.includes("--live")});return}if(z==="ops"){let X=oJ(Z);if(!X.worktree)console.error("kobe ops: --worktree <path> is required"),process.exit(2);if(X.preview){let{startOpsPreview:q}=await Promise.resolve().then(() => (hW(),PW));await q({worktree:X.worktree,relPath:X.preview});return}let{startOpsHost:G}=await Promise.resolve().then(() => (hW(),PW));await G({taskId:X.taskId??"",worktree:X.worktree,targetPane:X.targetPane??null,vendor:NZ(X.vendor)});return}if(z!==void 0)console.error(`kobe: unknown command '${z}'`),dO(process.stderr),process.exit(2);let{startTui:Y}=await Promise.resolve().then(() => (vO(),hO));await Y()}ew().catch((J)=>{console.error("kobe failed to start:",J),process.exit(1)});