@sma1lboy/kobe 0.7.62 → 0.7.63

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/dist/cli/index.js +249 -247
  2. package/dist/web-ui/assets/{AppShell-DndsbGJA.js → AppShell-BJWnIZ2n.js} +1 -1
  3. package/dist/web-ui/assets/{Board-BkldAXiI.js → Board-DY28iE1n.js} +1 -1
  4. package/dist/web-ui/assets/{BoardPeek-BVASBGzn.js → BoardPeek-q7WDjTVj.js} +2 -2
  5. package/dist/web-ui/assets/{ChatTerminal-EpSnfEJZ.js → ChatTerminal-CYhDduOa.js} +1 -1
  6. package/dist/web-ui/assets/{ChatTranscript-JH30pnFy.js → ChatTranscript-BmOoR16r.js} +1 -1
  7. package/dist/web-ui/assets/{ConfirmDialog-DELlvuWi.js → ConfirmDialog-DWjDo0WB.js} +1 -1
  8. package/dist/web-ui/assets/{IssueIntakePanel-DBUEg3tF.js → IssueIntakePanel-CGafCVz5.js} +1 -1
  9. package/dist/web-ui/assets/{IssuePeek-LBdq3maL.js → IssuePeek-CPvOVskA.js} +1 -1
  10. package/dist/web-ui/assets/{IssuesPage-_Ov-3CBH.js → IssuesPage-DUlHFjk-.js} +1 -1
  11. package/dist/web-ui/assets/{RichEditor-DGpLNBUT.js → RichEditor-CnNTlQpa.js} +1 -1
  12. package/dist/web-ui/assets/{SettingsPage-BdA2cY4d.js → SettingsPage-BtnEKNBk.js} +1 -1
  13. package/dist/web-ui/assets/{SlideOver-DpkL00Bv.js → SlideOver-Bh8_sIQM.js} +1 -1
  14. package/dist/web-ui/assets/{ViewToggle-BUVZKRCa.js → ViewToggle-intE-c2J.js} +1 -1
  15. package/dist/web-ui/assets/{WorkspaceTabs-CCl6hl8g.js → WorkspaceTabs-CCVLs4VG.js} +3 -3
  16. package/dist/web-ui/assets/board-BZawoWdd.js +1 -0
  17. package/dist/web-ui/assets/{harness-BmJjUgLp.js → harness-RXzjyKw1.js} +1 -1
  18. package/dist/web-ui/assets/{index-BJpZUkR8.js → index-BXZOglLY.js} +3 -3
  19. package/dist/web-ui/assets/{issues-Cy_qfrNn.js → issues-C3aXpYKt.js} +1 -1
  20. package/dist/web-ui/assets/issues-DoKRndd6.js +1 -0
  21. package/dist/web-ui/assets/{lazy-issue-panels-Bd-kqBwK.js → lazy-issue-panels-huIP1uIl.js} +3 -3
  22. package/dist/web-ui/assets/routes-CBHSZQIw.js +1 -0
  23. package/dist/web-ui/assets/store-BQARX7BI.js +2 -0
  24. package/dist/web-ui/assets/{task._taskId-C1IbFs2j.js → task._taskId-DiMC08by.js} +1 -1
  25. package/dist/web-ui/index.html +2 -2
  26. package/package.json +3 -2
  27. package/dist/web-ui/assets/board-DxmFo6ws.js +0 -1
  28. package/dist/web-ui/assets/issues-3eskwBZY.js +0 -1
  29. package/dist/web-ui/assets/routes-CeuOo-QO.js +0 -1
  30. package/dist/web-ui/assets/store-Dr4_yLwW.js +0 -2
package/dist/cli/index.js CHANGED
@@ -1,88 +1,162 @@
1
1
  #!/usr/bin/env bun
2
2
  // @bun
3
- var sO=Object.defineProperty;var tO=(J)=>J;function eO(J,z){this[J]=tO.bind(null,z)}var j1=(J,z)=>{for(var Z in z)sO(J,Z,{get:z[Z],enumerable:!0,configurable:!0,set:eO.bind(z,Z)})};var C=(J,z)=>()=>(J&&(z=J(J=0)),z);var dQ=import.meta.require;import{basename as JA}from"path";function zA(J){let z="";for(let Z=0;Z<J.length;Z++){let Y=J[Z];if(Y==="*")if(J[Z+1]==="*")if((Z===0||J[Z-1]==="/")&&J[Z+2]==="/")z+="(?:.*/)?",Z+=2;else z+=".*",Z++;else z+="[^/]*";else if(Y==="?")z+="[^/]";else if(Y&&"\\^$.|+()[]{}".includes(Y))z+=`\\${Y}`;else z+=Y}return new RegExp(`^${z}$`)}function nQ(J,z){let Z;try{Z=zA(J)}catch{return!1}return Z.test(z)||Z.test(JA(z))}var XB=()=>{};import{createHash as DV}from"crypto";import{homedir as ZA}from"os";import{join as CZ}from"path";function LV(){return process.env.KOBE_DEV==="1"}function bJ(){return process.env.KOBE_HOME_DIR??ZA()}function UJ(){return CZ(bJ(),".kobe")}function eJ(){return CZ(bJ(),".config","kobe","state.json")}function YA(){return CZ(UJ(),"settings")}function FV(){return CZ(YA(),"keybindings.yaml")}function GB(){return CZ(UJ(),"issue-assets")}function MV(){return CZ(UJ(),"attachments")}function iQ(J,z,Z){let Y=DV("sha1").update(`${z}@${J}:${Z??22}`).digest("hex").slice(0,16);return CZ(UJ(),"ssh",`${Y}.sock`)}function OV(J){let z=DV("sha1").update(J).digest("hex").slice(0,16);return CZ(UJ(),"worktree-init",z)}var p1=()=>{};import{join as XA}from"path";function yJ(J){if(J==="~")return bJ();if(J.startsWith("~/"))return XA(bJ(),J.slice(2));return J}var fG=C(()=>{p1()});var AV={};j1(AV,{resolvePersistedVendor:()=>nJ,prevVendorWithin:()=>QB,nextVendorWithin:()=>bZ,nextVendor:()=>GA,isBuiltinVendor:()=>KJ,coerceVendorId:()=>kZ,BUILTIN_VENDORS:()=>YY,ALL_VENDORS:()=>s1});function KJ(J){return J==="claude"||J==="codex"||J==="copilot"}function GA(J){let z=s1.indexOf(J);return s1[(z+1)%s1.length]??s1[0]}function bZ(J,z){if(J.length===0)return z;let Z=J.indexOf(z);return J[(Z+1)%J.length]??J[0]??z}function QB(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 kZ(J){let z=J?.trim();return z&&z.length>0?z:"claude"}function nJ(J,z=[]){let Z=J?.trim();if(!Z)return"claude";if(KJ(Z))return Z;if(z.includes(Z))return Z;return"claude"}var YY,s1;var t1=C(()=>{YY=["claude","codex","copilot"],s1=[...YY]});var lQ;var RV=C(()=>{lQ={$schema:"https://json.schemastore.org/package.json",name:"@sma1lboy/kobe",version:"0.7.62",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",coverage:"vitest run --coverage --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","@vitest/coverage-v8":"2.1.9",knip:"^6.14.2","kobe-web":"workspace:*",typescript:"5.8.2",vitest:"2.1.9"},trustedDependencies:[]}});var NV={};j1(NV,{repoSlug:()=>XY,releasePageUrl:()=>fB,recommendedGlobalInstallCommand:()=>jB,isNewerSemver:()=>qB,fetchReleaseSummaries:()=>jA,fetchReleaseNotesRange:()=>BB,fetchReleaseNotes:()=>HA,compareSemver:()=>$Q,checkLatestVersion:()=>WG,UPDATE_SCRIPT_URL:()=>aQ,UPDATE_COMMAND:()=>ez,PACKAGE_NAME:()=>HB,CURRENT_VERSION:()=>e0});function XY(){let J=lQ.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 jB(){return`npm install -g ${HB}@latest`}async function qA(J){let z=new AbortController,Z=setTimeout(()=>z.abort(),_Q);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 qB(J,z){return $Q(J,z)>0}function $Q(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 WG(J={}){let z=process.env.KOBE_FAKE_UPDATE;if(z)return{current:e0,latest:z,hasUpdate:qB(z,e0)};if(LV()&&!J.force)return null;let Z=await qA(HB);if(!Z)return null;return{current:e0,latest:Z,hasUpdate:qB(Z,e0)}}function gV(J){if(typeof J!=="string")return null;return J.match(/^v(\d+\.\d+\.\d+)$/)?.[1]??null}async function HA(J){let z=XY();if(!z)return null;let Z=`v${J}`,Y=new AbortController,X=setTimeout(()=>Y.abort(),_Q);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 BB(J){let z=XY();if(!z)return[];let Z=J.limit??100,Y=new AbortController,X=setTimeout(()=>Y.abort(),_Q);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=gV(H.tag_name);if(!j||typeof H.html_url!=="string"||typeof H.body!=="string")return null;if($Q(j,J.current)<=0)return null;if($Q(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 jA(J=12){let z=XY();if(!z)return[];let Z=new AbortController,Y=setTimeout(()=>Z.abort(),_Q);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=gV(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 fB(J){let z=XY();if(!z)return null;return`https://github.com/${z}/releases/tag/v${J}`}var e0,HB,aQ="https://raw.githubusercontent.com/Sma1lboy/kobe/main/scripts/update.sh",ez,_Q=3000;var kJ=C(()=>{RV();p1();e0=lQ.version,HB=lQ.name;ez=`curl -fsSL ${aQ} | sh`});function $Y(J,z={}){if(z.bareSafe&&BA.test(J))return J;return`'${J.replace(/'/g,"'\\''")}'`}function aY(J,z={}){return J.map((Z)=>$Y(Z,z)).join(" ")}var BA;var pQ=C(()=>{BA=/^[A-Za-z0-9_/.:=-]+$/});import{spawn as fA,spawnSync as WA}from"child_process";import{existsSync as VA}from"fs";import{mkdir as UA,readFile as KA,readdir as DA}from"fs/promises";function FA(J){return/^[A-Za-z0-9_@%+=:,./-]+$/.test(J)?J:$Y(J)}function MA(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}=${oQ(Y)}`).join(" ")} `}function rQ(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 kV(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=fA(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 sQ{isRemote=!1;run(J,z={}){return kV(J,{cwd:z.cwd,env:z.env?{...process.env,...z.env}:process.env,signal:z.signal})}async exists(J){return VA(J)}async mkdirp(J){await UA(J,{recursive:!0})}async readFile(J){try{return await KA(J,"utf8")}catch{return null}}async readdir(J){try{return await DA(J)}catch{return[]}}wrapCommand(J){return J}ensureReady(){}}class _Y{spec;spawn;isRemote=!0;masterUp=!1;spawnAsync;constructor(J,z=bV,Z){this.spec=J;this.spawn=z;this.spawnAsync=Z??(this.spawn===bV?OA:async(Y,X)=>this.spawn(Y,X))}ensureReady(){if(this.masterUp)return;if(this.spawn([...rQ(this.spec,{batch:!0}),"-O","check"]).exitCode===0){this.masterUp=!0;return}let z=[...rQ(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=`${MA(z.env)}${LA(J)}`,Y=z.cwd?`cd ${oQ(z.cwd)} && ${Z}`:Z;return this.spawnAsync([...rQ(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 ${oQ(z.cwd)} && ${J}`:J;return`${rQ(this.spec,{tty:z.tty}).map(FA).join(" ")} ${oQ(Z)}`}}var oQ,LA,bV=(J,z)=>{let[Z,...Y]=J,X=WA(Z??"",Y,{env:z?{...process.env,...z}:process.env,encoding:"utf8",shell:!1});return{stdout:X.stdout??"",stderr:X.stderr??"",exitCode:X.status??-1}},OA=(J,z,Z)=>kV(J,{env:z?{...process.env,...z}:process.env,signal:Z?.signal});var WB=C(()=>{pQ();oQ=$Y,LA=aY});import{spawnSync as AA}from"child_process";import{platform as RA}from"os";function IV(J,z,Z){return{service:gA,account:Z?`${z}@${J}:${Z}`:`${z}@${J}`}}function UB(J=VB){return J.platform()==="darwin"}function SV(J,z,Z=VB){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 tQ(J,z=VB){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 VB,gA="kobe-remote-ssh";var KB=C(()=>{VB={run(J){let[z,...Z]=J,Y=AA(z??"",Z,{encoding:"utf8",shell:!1});return{stdout:Y.stdout??"",exitCode:Y.status??-1}},platform(){return RA()}}});import{mkdirSync as NA,readFileSync as CA,renameSync as bA,writeFileSync as kA}from"fs";import{dirname as IA}from"path";function OJ(){try{let J=CA(eJ(),"utf8"),z=JSON.parse(J);if(z&&typeof z==="object"&&!Array.isArray(z))return z}catch{}return{}}function yV(J){let z=eJ();NA(IA(z),{recursive:!0});let Z=`${z}.tmp`;kA(Z,JSON.stringify(J,null,2),"utf8"),bA(Z,z)}function pY(J){let z=OJ();if(J(z)!==!1)yV(z);return z}function IZ(J){return pY((z)=>{for(let[Z,Y]of Object.entries(J))if(Y===void 0)delete z[Z];else z[Z]=Y;return})}function iJ(J,z){let Z=OJ()[J];return typeof Z==="boolean"?Z:z}function eQ(J,z){IZ({[J]:z})}function TV(J){yV(J)}var Pz=C(()=>{p1()});var YZ={};j1(YZ,{statePath:()=>TA,setRepoInitOverride:()=>xA,setPersistedString:()=>QJ,resolveRepoRoot:()=>JZ,resolveMainRepoRoot:()=>yA,removeSavedRepo:()=>MB,remoteRepoKey:()=>wV,normalizeSavedRepos:()=>LB,isRemoteRepoKey:()=>e1,isRemoteProjectsEnabled:()=>OB,isGitRepo:()=>SA,getSavedRepos:()=>TJ,getRepoInitOverride:()=>FB,getRemoteRepos:()=>AB,getRemoteRepoConfig:()=>ZZ,getPersistedString:()=>x1,getCustomEngineIds:()=>lJ,addSavedRepo:()=>zZ,addRemoteRepo:()=>RB});import{spawnSync as DB}from"child_process";import{realpathSync as xV}from"fs";function JZ(J){if(e1(J))return J;let z=DB("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(xV(J)===xV(Z))return J}catch{}return Z}function SA(J){if(e1(J))return!1;let z=DB("git",["rev-parse","--is-inside-work-tree"],{cwd:J,encoding:"utf8",shell:!1});return z.status===0&&(z.stdout??"").trim()==="true"}function yA(J){if(e1(J))return J;let z=DB("git",["worktree","list","--porcelain"],{cwd:J,encoding:"utf8",shell:!1});if(z.status!==0)return JZ(J);return(z.stdout??"").split(/\r?\n/).find((Y)=>Y.startsWith("worktree "))?.slice(9).trim()||JZ(J)}function TA(){return eJ()}function Jq(J){let z=J.savedRepos;if(!Array.isArray(z))return[];return z.filter((Z)=>typeof Z==="string")}function TJ(){return Jq(OJ())}function x1(J){let z=OJ()[J];return typeof z==="string"?z:void 0}function QJ(J,z){IZ({[J]:z})}function lJ(){let J=OJ().customEngineIds;if(!Array.isArray(J))return[];return J.filter((z)=>typeof z==="string"&&z.trim().length>0)}function zZ(J){let z=JZ(J),Z={added:!1,path:z,total:0};return pY((Y)=>{let X=Jq(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 LB(){let J=TJ(),z=new Set,Z=[],Y=!1;for(let X of J){let G=JZ(X);if(G!==X)Y=!0;if(z.has(G)){Y=!0;continue}z.add(G),Z.push(G)}if(!Y)return;IZ({savedRepos:Z})}function uV(J){let z=J.repoConfigs;if(!z||typeof z!=="object"||Array.isArray(z))return{};return z}function EV(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 FB(J){return EV(uV(OJ())[JZ(J)])}function xA(J,z){let Z=JZ(J),Y={};return pY((X)=>{let G={...uV(X)},q=EV(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 MB(J){let z={removed:!1,path:J,total:0};return pY((Z)=>{let Y=Jq(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=zq(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 OB(){return iJ("experimental.remoteProjects",!1)}function wV(J,z,Z){return Z?`ssh://${z}@${J}:${Z}`:`ssh://${z}@${J}`}function zq(J){let z=J.remoteRepos;if(!z||typeof z!=="object"||Array.isArray(z))return{};return z}function ZZ(J){return zq(OJ())[J]??null}function AB(){return zq(OJ())}function RB(J){let z=wV(J.host,J.user,J.port),Z=!1;return pY((Y)=>{let X={...zq(Y)};X[z]=J,Y.remoteRepos=X;let G=Jq(Y);if(Z=!G.includes(z),Z)Y.savedRepos=[...G,z];return}),{key:z,added:Z}}var S1=C(()=>{p1();Pz()});var vV={};j1(vV,{runAddRemote:()=>wA,parseRemoteFlags:()=>hV});import{createInterface as uA}from"readline";function hV(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)Uz(`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(PV),process.exit(0);break;default:Uz(`unknown flag "${Y}"`)}}return z}function Uz(J){process.stderr.write(`kobe add --remote: ${J}
3
+ var M2=Object.defineProperty;var O2=(J)=>J;function A2(J,z){this[J]=O2.bind(null,z)}var X1=(J,z)=>{for(var Z in z)M2(J,Z,{get:z[Z],enumerable:!0,configurable:!0,set:A2.bind(z,Z)})};var C=(J,z)=>()=>(J&&(z=J(J=0)),z);var rG=import.meta.require;import{basename as N2}from"path";function R2(J){let z="";for(let Z=0;Z<J.length;Z++){let Y=J[Z];if(Y==="*")if(J[Z+1]==="*")if((Z===0||J[Z-1]==="/")&&J[Z+2]==="/")z+="(?:.*/)?",Z+=2;else z+=".*",Z++;else z+="[^/]*";else if(Y==="?")z+="[^/]";else if(Y&&"\\^$.|+()[]{}".includes(Y))z+=`\\${Y}`;else z+=Y}return new RegExp(`^${z}$`)}function oG(J,z){let Z;try{Z=R2(J)}catch{return!1}return Z.test(z)||Z.test(N2(z))}var Kj=()=>{};import{createHash as mW}from"crypto";import{homedir as C2}from"os";import{join as TZ}from"path";function cW(){return process.env.KOBE_DEV==="1"}function EJ(){return process.env.KOBE_HOME_DIR??C2()}function DJ(){return TZ(EJ(),".kobe")}function Hz(){return TZ(EJ(),".config","kobe","state.json")}function g2(){return TZ(DJ(),"settings")}function dW(){return TZ(g2(),"keybindings.yaml")}function Dj(){return TZ(DJ(),"issue-assets")}function nW(){return TZ(DJ(),"attachments")}function sG(J,z,Z){let Y=mW("sha1").update(`${z}@${J}:${Z??22}`).digest("hex").slice(0,16);return TZ(DJ(),"ssh",`${Y}.sock`)}function iW(J){let z=mW("sha1").update(J).digest("hex").slice(0,16);return TZ(DJ(),"worktree-init",z)}var o1=()=>{};import{join as k2}from"path";function PJ(J){if(J==="~")return EJ();if(J.startsWith("~/"))return k2(EJ(),J.slice(2));return J}var DQ=C(()=>{o1()});var lW={};X1(lW,{resolvePersistedVendor:()=>pJ,prevVendorWithin:()=>Lj,nextVendorWithin:()=>xZ,nextVendor:()=>b2,isBuiltinVendor:()=>LJ,coerceVendorId:()=>QZ,BUILTIN_VENDORS:()=>VY,ALL_VENDORS:()=>e1});function LJ(J){return J==="claude"||J==="codex"||J==="copilot"}function b2(J){let z=e1.indexOf(J);return e1[(z+1)%e1.length]??e1[0]}function xZ(J,z){if(J.length===0)return z;let Z=J.indexOf(z);return J[(Z+1)%J.length]??J[0]??z}function Lj(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 QZ(J){let z=J?.trim();return z&&z.length>0?z:"claude"}function pJ(J,z=[]){let Z=J?.trim();if(!Z)return"claude";if(LJ(Z))return Z;if(z.includes(Z))return Z;return"claude"}var VY,e1;var s1=C(()=>{VY=["claude","codex","copilot"],e1=[...VY]});import{fileURLToPath as $W}from"url";function c1(){if(import.meta.url.endsWith(".js"))return["kobe"];let z=$W(new URL("./index.ts",import.meta.url)),Z=$W(import.meta.resolve("@opentui/solid/preload"));return[process.execPath,"--preload",Z,"--conditions=browser",z]}function LQ(){if(import.meta.url.endsWith(".js"))return["kobe"];if(Bun.which("kobe"))return["kobe"];return c1()}var GZ=()=>{};import{mkdirSync as I2,readFileSync as S2,renameSync as y2,writeFileSync as T2}from"fs";import{dirname as x2}from"path";function NJ(){try{let J=S2(Hz(),"utf8"),z=JSON.parse(J);if(z&&typeof z==="object"&&!Array.isArray(z))return z}catch{}return{}}function aW(J){let z=Hz();I2(x2(z),{recursive:!0});let Z=`${z}.tmp`;T2(Z,JSON.stringify(J,null,2),"utf8"),y2(Z,z)}function _Y(J){let z=NJ();if(J(z)!==!1)aW(z);return z}function EZ(J){return _Y((z)=>{for(let[Z,Y]of Object.entries(J))if(Y===void 0)delete z[Z];else z[Z]=Y;return})}function rJ(J,z){let Z=NJ()[J];return typeof Z==="boolean"?Z:z}function tG(J,z){EZ({[J]:z})}function _W(J){aW(J)}var mz=C(()=>{o1()});var jZ={};X1(jZ,{statePath:()=>w2,setRepoInitOverride:()=>P2,setPersistedString:()=>jJ,resolveRepoRoot:()=>qZ,resolveMainRepoRoot:()=>u2,removeSavedRepo:()=>Aj,remoteRepoKey:()=>sW,normalizeSavedRepos:()=>Mj,isRemoteRepoKey:()=>JJ,isRemoteProjectsEnabled:()=>Nj,isGitRepo:()=>E2,getSavedRepos:()=>RJ,getRepoInitOverride:()=>Oj,getRemoteRepos:()=>Rj,getRemoteRepoConfig:()=>Oz,getPersistedString:()=>E1,getCustomEngineIds:()=>oJ,addSavedRepo:()=>HZ,addRemoteRepo:()=>Cj});import{spawnSync as Fj}from"child_process";import{realpathSync as pW}from"fs";function qZ(J){if(JJ(J))return J;let z=Fj("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(pW(J)===pW(Z))return J}catch{}return Z}function E2(J){if(JJ(J))return!1;let z=Fj("git",["rev-parse","--is-inside-work-tree"],{cwd:J,encoding:"utf8",shell:!1});return z.status===0&&(z.stdout??"").trim()==="true"}function u2(J){if(JJ(J))return J;let z=Fj("git",["worktree","list","--porcelain"],{cwd:J,encoding:"utf8",shell:!1});if(z.status!==0)return qZ(J);return(z.stdout??"").split(/\r?\n/).find((Y)=>Y.startsWith("worktree "))?.slice(9).trim()||qZ(J)}function w2(){return Hz()}function eG(J){let z=J.savedRepos;if(!Array.isArray(z))return[];return z.filter((Z)=>typeof Z==="string")}function RJ(){return eG(NJ())}function E1(J){let z=NJ()[J];return typeof z==="string"?z:void 0}function jJ(J,z){EZ({[J]:z})}function oJ(){let J=NJ().customEngineIds;if(!Array.isArray(J))return[];return J.filter((z)=>typeof z==="string"&&z.trim().length>0)}function HZ(J){let z=qZ(J),Z={added:!1,path:z,total:0};return _Y((Y)=>{let X=eG(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 Mj(){let J=RJ(),z=new Set,Z=[],Y=!1;for(let X of J){let Q=qZ(X);if(Q!==X)Y=!0;if(z.has(Q)){Y=!0;continue}z.add(Q),Z.push(Q)}if(!Y)return;EZ({savedRepos:Z})}function rW(J){let z=J.repoConfigs;if(!z||typeof z!=="object"||Array.isArray(z))return{};return z}function oW(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 Oj(J){return oW(rW(NJ())[qZ(J)])}function P2(J,z){let Z=qZ(J),Y={};return _Y((X)=>{let Q={...rW(X)},q=oW(Q[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,...U}=Q;X.repoConfigs=U}else Q[Z]=Y,X.repoConfigs=Q;return}),Y}function Aj(J){let z={removed:!1,path:J,total:0};return _Y((Z)=>{let Y=eG(Z);if(!Y.includes(J))return z={removed:!1,path:J,total:Y.length},!1;if(Z.savedRepos=Y.filter((X)=>X!==J),JJ(J)){let X=Jq(Z);if(J in X){let Q={...X};delete Q[J],Z.remoteRepos=Q}}z={removed:!0,path:J,total:Y.length-1};return}),z}function JJ(J){return J.startsWith("ssh://")}function Nj(){return rJ("experimental.remoteProjects",!1)}function sW(J,z,Z){return Z?`ssh://${z}@${J}:${Z}`:`ssh://${z}@${J}`}function Jq(J){let z=J.remoteRepos;if(!z||typeof z!=="object"||Array.isArray(z))return{};return z}function Oz(J){return Jq(NJ())[J]??null}function Rj(){return Jq(NJ())}function Cj(J){let z=sW(J.host,J.user,J.port),Z=!1;return _Y((Y)=>{let X={...Jq(Y)};X[z]=J,Y.remoteRepos=X;let Q=eG(Y);if(Z=!Q.includes(z),Z)Y.savedRepos=[...Q,z];return}),{key:z,added:Z}}var I1=C(()=>{o1();mz()});function pY(J,z={}){if(z.bareSafe&&h2.test(J))return J;return`'${J.replace(/'/g,"'\\''")}'`}function rY(J,z={}){return J.map((Z)=>pY(Z,z)).join(" ")}var h2;var zq=C(()=>{h2=/^[A-Za-z0-9_/.:=-]+$/});import{spawn as v2,spawnSync as m2}from"child_process";import{existsSync as c2}from"fs";import{mkdir as d2,readFile as n2,readdir as i2}from"fs/promises";function $2(J){return/^[A-Za-z0-9_@%+=:,./-]+$/.test(J)?J:pY(J)}function a2(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}=${Yq(Y)}`).join(" ")} `}function Zq(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 eW(J,z={}){return new Promise((Z)=>{let[Y,...X]=J,Q="",q="",H=!1,j=(U)=>{if(H)return;H=!0,Z({stdout:Q,stderr:q,exitCode:U})},B;try{B=v2(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",(U)=>{Q+=U}),B.stderr?.setEncoding("utf8"),B.stderr?.on("data",(U)=>{q+=U}),B.on("error",()=>j(-1)),B.on("close",(U)=>j(U??-1))})}class Xq{isRemote=!1;run(J,z={}){return eW(J,{cwd:z.cwd,env:z.env?{...process.env,...z.env}:process.env,signal:z.signal})}async exists(J){return c2(J)}async mkdirp(J){await d2(J,{recursive:!0})}async readFile(J){try{return await n2(J,"utf8")}catch{return null}}async readdir(J){try{return await i2(J)}catch{return[]}}wrapCommand(J){return J}ensureReady(){}}class oY{spec;spawn;isRemote=!0;masterUp=!1;spawnAsync;constructor(J,z=tW,Z){this.spec=J;this.spawn=z;this.spawnAsync=Z??(this.spawn===tW?_2:async(Y,X)=>this.spawn(Y,X))}ensureReady(){if(this.masterUp)return;if(this.spawn([...Zq(this.spec,{batch:!0}),"-O","check"]).exitCode===0){this.masterUp=!0;return}let z=[...Zq(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=`${a2(z.env)}${l2(J)}`,Y=z.cwd?`cd ${Yq(z.cwd)} && ${Z}`:Z;return this.spawnAsync([...Zq(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 ${Yq(z.cwd)} && ${J}`:J;return`${Zq(this.spec,{tty:z.tty}).map($2).join(" ")} ${Yq(Z)}`}}var Yq,l2,tW=(J,z)=>{let[Z,...Y]=J,X=m2(Z??"",Y,{env:z?{...process.env,...z}:process.env,encoding:"utf8",shell:!1});return{stdout:X.stdout??"",stderr:X.stderr??"",exitCode:X.status??-1}},_2=(J,z,Z)=>eW(J,{env:z?{...process.env,...z}:process.env,signal:Z?.signal});var gj=C(()=>{zq();Yq=pY,l2=rY});import{spawnSync as p2}from"child_process";import{platform as r2}from"os";function JU(J,z,Z){return{service:o2,account:Z?`${z}@${J}:${Z}`:`${z}@${J}`}}function bj(J=kj){return J.platform()==="darwin"}function zU(J,z,Z=kj){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 Qq(J,z=kj){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 kj,o2="kobe-remote-ssh";var Ij=C(()=>{kj={run(J){let[z,...Z]=J,Y=p2(z??"",Z,{encoding:"utf8",shell:!1});return{stdout:Y.stdout??"",exitCode:Y.status??-1}},platform(){return r2()}}});import{existsSync as s2}from"fs";function ZU(J){let z=J.auth,Z=z.kind==="key"?{kind:"key",keyPath:z.keyPath}:{kind:"password",getPassword:()=>Qq(z.keychainRef)};return{host:J.host,user:J.user,port:J.port,auth:Z,controlPath:sG(J.host,J.user,J.port)}}function sY(J){let z=Oz(J);if(!z)return new Xq;return new oY(ZU(z))}function Az(J){for(let z of Object.values(Rj()))if(J===z.basePath||J.startsWith(`${z.basePath}/`))return new oY(ZU(z));return new Xq}function Gq(J){return J&&JJ(J)?J:void 0}function uZ(J){return Az(J).isRemote||s2(J)}function d1(J){return Az(J).isRemote?EJ():J}var sJ=C(()=>{o1();I1();gj();Ij()});function MQ(J){return`kobe-hidden-${J.replace(/[^A-Za-z0-9_-]/g,"")||"session"}`}function QU(J){let z=Number.parseInt(J.replace(/^@/,""),10);return Number.isFinite(z)&&z>=0?1000+z:1000}function Tj(J){if(!Number.isFinite(J))return XU;return Math.max(t2,Math.min(e2,Math.round(J)))}function WY(J){if(!Number.isFinite(J))return null;return Math.max(JN,Math.min(zN,Math.round(J)))}function qU(J){let z=Number.parseInt(J[qq]??"",10),Z=Number.isFinite(z)&&z>0?Tj(z):XU,Y=WY(Number.parseInt(J[Hq]??"",10)),X=WY(Number.parseInt(J[jq]??"",10)),Q=[];if(Y!==null)Q.push("-x",`${Y}%`);if(X!==null)Q.push("-y",`${X}%`);return{tasksWidth:Z,rightColumnWidthPct:Y??100-xj,opsHeightPct:X??OQ,rightColumnResizeArgs:Q}}function s0(J){return pY(J)}function vJ(J){return rY(J)}function mJ(J,z){let X=`${z?Sj:""}${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 HU(J){return`trap '' INT; while :; do ${J}; sleep 1; done`}function eY(J,z,Z){return`${J}${z.map(s0).join(" ")} engine-tab-exit --session ${s0(Z)}`}function jU(){return`clear; printf ${s0("\\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 Ej(J){let z=typeof J==="number"?J:J==null?Number.NaN:Number.parseInt(J,10);if(!Number.isFinite(z))return ZN;return Math.max(YN,Math.min(XN,Math.round(z)))}function QN(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(`
5
+ `)}function BU(J,z,Z){let Y=mJ(J,Z),X=z?.initScript?.trim();if(!X)return Y;let Q=Ej(z?.timeoutSeconds),q=QN(X,Q);if(z?.markerPath){let H=s0(z.markerPath),j=s0(GN(z.markerPath));return Sj+[`if [ ! -f ${H} ]; then`,q,`if [ "$__kobe_init_rc" -eq 0 ]; then mkdir -p ${j} && : > ${H}; fi`,"fi",Y].join(`
6
+ `)}return Sj+[q,Y].join(`
7
+ `)}function GN(J){let z=J.lastIndexOf("/");return z<=0?".":J.slice(0,z)}function YU(J){return`cd ${s0(J)} && while :; do clear; printf "\\033[1m# %s\\033[0m\\n\\n" ${s0(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 VU(J){let z=s0(J.worktree),Z=s0(J.relPath),Y=J.cliInvocation.map(s0).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 WU(J){return`${vJ([...J.cliInvocation,"update-page"])}`}function UU(J){let z=J.opener??"open";return[`tmux -L ${s0(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 PZ(J,z={}){let Z=[...J,"tasks"];if(z.initialTaskId)Z.push("--initial-task-id",z.initialTaskId);return vJ(Z)}function JX(J){if(J.taskId&&J.claudePaneId){let z=J.cliInvocation.map(s0).join(" "),Z=J.vendor?` --vendor ${s0(J.vendor)}`:"";return`KOBE_FILETREE_WATCH=1 ${z} ops --task-id ${s0(J.taskId)} --worktree ${s0(J.cwd)} --target-pane ${s0(J.claudePaneId)}${Z} || { ${YU(J.cwd)}; }`}return YU(J.cwd)}var XU=32,uJ="tasks",BZ="claude",Nz="ops",Rz="shell",FQ="workspace_aux",yj=4,Cz="@kobe_hidden_shell_pane",hJ="@kobe_hidden_tasks_pane",wZ="@kobe_zen_panes",tY="@kobe_zen",qq="@kobe_tasks_width",t2=16,e2=120,xj=60,OQ=50,Hq="@kobe_right_width_pct",jq="@kobe_ops_height_pct",JN=10,zN=90,GU,Sj="trap ':' INT; ",ZN=120,YN=5,XN=3600;var tJ=C(()=>{zq();GU=[qq,Hq,jq]});function zX(J,z,Z){if(!z)return J;let Y=sY(z);return Y.ensureReady(),Y.wrapCommand(J,{tty:!0,cwd:Z})}function a1(){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}=${s0(Z)}`)}return J.length>0?`${J.join(" ")} `:""}var AQ="@kobe_remote";var hZ=C(()=>{sJ();tJ()});function fU(){return rJ(Bq,!0)}function Vq(){return rJ(KU,!1)}function DU(J){tG(KU,J)}var Bq="zen.keepTasks",KU="zen.active";var uj=C(()=>{mz()});var Wq;var LU=C(()=>{Wq={$schema:"https://json.schemastore.org/package.json",name:"@sma1lboy/kobe",version:"0.7.63",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 --pool forks --minWorkers=1 --maxWorkers=1 --passWithNoTests","test:render":"bun test test/render --coverage --coverage-reporter=text --coverage-reporter=lcov --coverage-dir=coverage-render",coverage:"vitest run --coverage --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","@vitest/coverage-v8":"2.1.9",knip:"^6.14.2","kobe-web":"workspace:*",typescript:"5.8.2",vitest:"2.1.9"},trustedDependencies:[]}});var MU={};X1(MU,{repoSlug:()=>UY,releasePageUrl:()=>mj,recommendedGlobalInstallCommand:()=>hj,isNewerSemver:()=>wj,fetchReleaseSummaries:()=>BN,fetchReleaseNotesRange:()=>vj,fetchReleaseNotes:()=>jN,compareSemver:()=>Uq,checkLatestVersion:()=>NQ,UPDATE_SCRIPT_URL:()=>fq,UPDATE_COMMAND:()=>VZ,PACKAGE_NAME:()=>Pj,CURRENT_VERSION:()=>a0});function UY(){let J=Wq.repository?.url;if(!J)return null;let z=J.match(/github\.com[:/]([^/]+)\/([^/.]+)/);if(!z||!z[1]||!z[2])return null;return`${z[1]}/${z[2]}`}function hj(){return`npm install -g ${Pj}@latest`}async function HN(J){let z=new AbortController,Z=setTimeout(()=>z.abort(),Kq);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 Q=await X.json();if(typeof Q.version!=="string")return null;return Q.version}catch{return null}finally{clearTimeout(Z)}}function wj(J,z){return Uq(J,z)>0}function Uq(J,z){let Z=(Q)=>Q.split("-")[0]??Q,Y=Z(J).split(".").map((Q)=>Number.parseInt(Q,10)),X=Z(z).split(".").map((Q)=>Number.parseInt(Q,10));for(let Q=0;Q<3;Q++){let q=Y[Q]??0,H=X[Q]??0;if(Number.isNaN(q)||Number.isNaN(H))return 0;if(q>H)return 1;if(q<H)return-1}return 0}async function NQ(J={}){let z=process.env.KOBE_FAKE_UPDATE;if(z)return{current:a0,latest:z,hasUpdate:wj(z,a0)};if(cW()&&!J.force)return null;let Z=await HN(Pj);if(!Z)return null;return{current:a0,latest:Z,hasUpdate:wj(Z,a0)}}function FU(J){if(typeof J!=="string")return null;return J.match(/^v(\d+\.\d+\.\d+)$/)?.[1]??null}async function jN(J){let z=UY();if(!z)return null;let Z=`v${J}`,Y=new AbortController,X=setTimeout(()=>Y.abort(),Kq);try{let Q=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(!Q.ok)return null;let q=await Q.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 vj(J){let z=UY();if(!z)return[];let Z=J.limit??100,Y=new AbortController,X=setTimeout(()=>Y.abort(),Kq);try{let Q=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(!Q.ok)return[];let q=await Q.json();if(!Array.isArray(q))return[];return q.map((H)=>{let j=FU(H.tag_name);if(!j||typeof H.html_url!=="string"||typeof H.body!=="string")return null;if(Uq(j,J.current)<=0)return null;if(Uq(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 BN(J=12){let z=UY();if(!z)return[];let Z=new AbortController,Y=setTimeout(()=>Z.abort(),Kq);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 Q=await X.json();if(!Array.isArray(Q))return[];return Q.map((q)=>{let H=FU(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 mj(J){let z=UY();if(!z)return null;return`https://github.com/${z}/releases/tag/v${J}`}var a0,Pj,fq="https://raw.githubusercontent.com/Sma1lboy/kobe/main/scripts/update.sh",VZ,Kq=3000;var CJ=C(()=>{LU();o1();a0=Wq.version,Pj=Wq.name;VZ=`curl -fsSL ${fq} | sh`});import{spawnSync as VN}from"child_process";import{existsSync as WN,statSync as UN}from"fs";import{homedir as fN}from"os";import RQ from"path";async function OU(J=KN){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(),Q=Z(RQ.join(X,".claude","local","claude"));if(Q)return Q;let q=J.env("NVM_BIN");if(q){let B=Z(RQ.join(q,"claude"));if(B)return B}let H=RQ.join(X,".nvm","versions","node"),j=J.readdir(H).sort().reverse();for(let B of j){let U=Z(RQ.join(H,B,"bin","claude"));if(U)return U}for(let B of["/opt/homebrew/bin/claude","/usr/local/bin/claude","/usr/bin/claude","/bin/claude"]){let U=Z(B);if(U)return U}for(let B of[".local/bin/claude",".npm-global/bin/claude",".yarn/bin/claude",".bun/bin/claude","bin/claude"]){let U=Z(RQ.join(X,B));if(U)return U}throw new Dq(z)}var Dq,KN;var AU=C(()=>{Dq=class Dq 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}};KN={fileExists(J){try{return UN(J).isFile()}catch{return!1}},env(J){return process.env[J]},home(){return fN()},which(J){let z=process.platform==="win32"?"where":"which",Z=VN(z,[J],{encoding:"utf8"});if(Z.status!==0)return;let Y=Z.stdout.split(`
8
+ `).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&&WN(X)?X:void 0}return Y},readdir(J){try{return rG("fs").readdirSync(J)}catch{return[]}}}});import{spawnSync as DN}from"child_process";import{existsSync as LN,statSync as FN}from"fs";import{homedir as MN}from"os";import NU from"path";async function RU(J=ON){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 Q=J.env("NVM_BIN");if(Q){let q=Z(NU.join(Q,"codex"));if(q)return q}for(let q of[".local/bin/codex",".bun/bin/codex","bin/codex"]){let H=Z(NU.join(X,q));if(H)return H}throw new Lq(z)}var Lq,ON;var CU=C(()=>{Lq=class Lq 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}};ON={fileExists(J){try{return FN(J).isFile()}catch{return!1}},env(J){return process.env[J]},home(){return MN()},which(J){let z=process.platform==="win32"?"where":"which",Z=DN(z,[J],{encoding:"utf8"});if(Z.status!==0)return;let Y=Z.stdout.split(`
9
+ `).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&&LN(X)?X:void 0}return Y},readdir(J){try{return rG("fs").readdirSync(J)}catch{return[]}}}});import{spawnSync as AN}from"child_process";import{existsSync as NN,statSync as RN}from"fs";import{homedir as CN}from"os";import vZ from"path";async function gU(J=gN){let z=[],Z=(U)=>{if(!U)return;return z.push(U),J.fileExists(U)?U: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"],Q=(U)=>{if(!U)return;for(let V of X){let f=Z(vZ.join(U,V));if(f)return f}return};for(let U of["/opt/homebrew/bin","/usr/local/bin","/usr/bin","/bin"]){let V=Q(U);if(V)return V}let q=J.env("NVM_BIN"),H=Q(q);if(H)return H;let j=J.home(),B=[vZ.join(j,".npm-global/bin"),vZ.join(j,".local/bin"),vZ.join(j,".bun/bin"),vZ.join(j,"bin")];if(J.platform()==="win32"){let U=J.env("APPDATA"),V=J.env("LOCALAPPDATA");if(B.unshift(vZ.join(j,"AppData/Roaming/npm")),U)B.unshift(vZ.join(U,"npm"));if(V)B.unshift(vZ.join(V,"npm"))}for(let U of B){let V=Q(U);if(V)return V}throw new Fq(z)}var Fq,gN;var kU=C(()=>{Fq=class Fq 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}};gN={fileExists(J){try{return RN(J).isFile()}catch{return!1}},env(J){return process.env[J]},home(){return CN()},which(J){let z=process.platform==="win32"?"where":"which",Z=AN(z,[J],{encoding:"utf8"});if(Z.status!==0)return;let Y=Z.stdout.split(`
10
+ `).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&&NN(X)?X:void 0}return Y},platform(){return process.platform}}});import{readFileSync as kN,statSync as bN}from"fs";import{readFile as IN,stat as SN}from"fs/promises";async function ZX(J,z=bU){let{size:Z}=await SN(J);if(Z>z)return"";return IN(J,"utf8")}function IU(J,z=bU){let Z;try{Z=bN(J)}catch(Y){if(Y.code==="ENOENT")return null;throw Y}if(Z.size>z)return null;return kN(J,"utf8")}function mZ(J,z=yN){return J.length<=z}var bU=104857600,yN=8388608;var CQ=()=>{};import{homedir as TN}from"os";import cZ from"path";function xN(J,z){let Z=J("CLAUDE_CONFIG_DIR")?.trim();if(Z)return cZ.join(Z,".claude.json");return cZ.join(z,".claude.json")}function EN(J,z){let Y=J("CODEX_HOME")?.trim()??cZ.join(z,".codex");return cZ.join(Y,"auth.json")}function uN(J,z){let Y=J("COPILOT_HOME")?.trim()??cZ.join(z,".copilot");return cZ.join(Y,"config.json")}function wN(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 Q=Buffer.from(X,"base64").toString("utf8"),q=JSON.parse(Q);return typeof q==="object"&&q!==null?q:null}catch{return null}}async function Oq(J){try{return{found:!0,path:await J()}}catch(z){if(z instanceof Dq||z instanceof Lq||z instanceof Fq)return{found:!1,error:"not found on PATH"};return{found:!1,error:z instanceof Error?z.message:String(z)}}}async function SU(J){return(await Promise.all([["claude",()=>J.findClaudeBinary()],["codex",()=>J.findCodexBinary()],["copilot",()=>J.findCopilotBinary()]].map(async([Y,X])=>(await Oq(X)).found?Y:null))).filter((Y)=>Y!==null)}function PN(J=YX){if(J!==YX)return SU(J);if(Mq)return Mq;let z=SU(J).catch((Z)=>{throw Mq=null,Z});return Mq=z,z}async function WZ(J=YX){return[...await PN(J),...oJ()]}async function Aq(J=YX){let z=await Oq(()=>J.findClaudeBinary()),Z=xN(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 Q=X?.oauthAccount;if(!Q||typeof Q!=="object")return{binary:z,account:{kind:"none"}};let q=Q,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 Nq(J=YX){let z=await Oq(()=>J.findCodexBinary()),Z=EN(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 Q=X??{},q=Q.tokens,H=typeof q?.id_token==="string"?q.id_token:void 0;if(H){let B=wN(H);if(!B)return{binary:z,account:{kind:"none"},accountError:"codex id_token: malformed JWT"};let U=typeof B.email==="string"?B.email:void 0,V=B["https://api.openai.com/auth"],f=typeof V==="object"&&V!==null&&!Array.isArray(V)?V:void 0,L=typeof f?.chatgpt_plan_type==="string"?f.chatgpt_plan_type:void 0;if(U)return{binary:z,account:{kind:"chatgpt",email:U,plan:L}};return{binary:z,account:{kind:"none"},accountError:"codex id_token: no email claim"}}let j=Q.OPENAI_API_KEY;if(typeof j==="string"&&j.length>0)return{binary:z,account:{kind:"apikey"}};return{binary:z,account:{kind:"none"}}}async function Rq(J=YX){let z=await Oq(()=>J.findCopilotBinary());for(let Q of["COPILOT_GITHUB_TOKEN","GH_TOKEN","GITHUB_TOKEN"])if(J.env(Q)?.trim())return{binary:z,account:{kind:"token",source:Q}};let Z=uN(J.env,J.home()),Y;try{Y=J.readFile(Z)}catch(Q){return{binary:z,account:{kind:"none"},accountError:`read ${Z}: ${Q instanceof Error?Q.message:String(Q)}`}}if(Y===null)return{binary:z,account:{kind:"none"}};let X;try{X=JSON.parse(Y)}catch(Q){return{binary:z,account:{kind:"none"},accountError:`parse ${Z}: ${Q instanceof Error?Q.message:String(Q)}`}}if(!cj(X))return{binary:z,account:{kind:"none"}};if(yU(X,["github_token","oauth_token","access_token","token","selectedUser","currentUser","user"]))return{binary:z,account:{kind:"oauth"}};return{binary:z,account:{kind:"none"}}}function cj(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}function yU(J,z,Z=0){if(Z>4||!cj(J))return!1;for(let[Y,X]of Object.entries(J)){if(z.includes(Y)&&typeof X==="string"&&X.length>0)return!0;if(cj(X)&&yU(X,z,Z+1))return!0}return!1}var YX,Mq=null;var fY=C(()=>{I1();AU();CU();kU();CQ();YX={readFile(J){return IU(J)},env(J){return process.env[J]},home(){return TN()},findClaudeBinary(){return OU()},findCodexBinary(){return RU()},findCopilotBinary(){return gU()}}});function TU(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 xU(J){return J.isMeta===!0||J.isCompactSummary===!0}function EU(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 Vm,mkdir as Wm,readdir as dj,stat as hN,unlink as Um}from"fs/promises";import{homedir as uU}from"os";import Cq from"path";function mN(J){return J.replace(/[/.]/g,"-")}async function gQ(J){if(!J)return[];let z=Cq.join(uU(),".claude","projects",mN(J)),Z;try{Z=await dj(z)}catch{return[]}let Y=[];for(let X of Z){if(!X.endsWith(".jsonl"))continue;let Q=Cq.join(z,X),q=0;try{q=(await hN(Q)).mtimeMs}catch{}Y.push({sessionId:X.slice(0,-6),path:Q,mtimeMs:q})}return Y.sort((X,Q)=>Q.mtimeMs-X.mtimeMs),Y}async function wU(J){return(await gQ(J))[0]?.mtimeMs??0}async function PU(J,z=vN){let Z=z.projectsDir(),Y=await z.readdir(Z);for(let X of Y){let Q=Cq.join(Z,X,`${J}.jsonl`),q;try{q=await z.readFile(Q)}catch{continue}return cN(dN(q,J))}return[]}function cN(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 dN(J,z){let Z=[];for(let Y of J.split(`
11
+ `)){let X=Y.trim();if(!X)continue;if(!mZ(X))continue;let Q;try{Q=JSON.parse(X)}catch{continue}if(!nj(Q))continue;let q=nN(Q,z);if(q)Z.push(q)}return Z}function nN(J,z){if(xU(J))return null;let Z=nj(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=TU(Z.content);if(Y==="user"&&EU(X))return null;let Q=typeof J.timestamp==="string"?J.timestamp:new Date().toISOString(),q=typeof J.sessionId==="string"?J.sessionId:z,H=iN(Z.usage);return H?{role:Y,blocks:X,timestamp:Q,sessionId:q,usage:H}:{role:Y,blocks:X,timestamp:Q,sessionId:q}}function iN(J){if(!nj(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 nj(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}var vN;var ij=C(()=>{CQ();vN={projectsDir(){return Cq.join(uU(),".claude","projects")},async readdir(J){try{return await dj(J)}catch{return[]}},async readFile(J){return await ZX(J)},async pathExists(J){try{return await dj(J),!0}catch{return!1}}}});function jz(J){return!!J&&typeof J==="object"&&!Array.isArray(J)}function $N(J){return J.map((z)=>vJ(["hook",z.verb]))}function aN(J,z){if(!jz(J)||!Array.isArray(J.hooks))return!1;return J.hooks.some((Z)=>jz(Z)&&typeof Z.command==="string"&&z.some((Y)=>Z.command.includes(Y)))}function cU(J,z=LQ()){let Z={};for(let{event:Y,matcher:X,verb:Q}of J){let H={hooks:[{type:"command",command:vJ([...z,"hook",Q])}]};if(X)H.matcher=X;Z[Y]=[H]}return Z}function gq(J,z,Z,Y=LQ()){let X=$N(Z),{hooks:Q,...q}=J,H=jz(Q)?{...Q}:{},j=z?cU(Z,Y):{};for(let{event:B}of Z){let V=(Array.isArray(H[B])?H[B]:[]).filter((f)=>!aN(f,X));if(z&&Array.isArray(j[B]))V.push(...j[B]);if(V.length>0)H[B]=V;else delete H[B]}return Object.keys(H).length>0?{...q,hooks:H}:{...q}}function dU(J=LQ()){let z=vJ([...J,"hook",mU]);return{[vU]:[{matcher:lN,hooks:[{type:"command",command:z}]}]}}function _N(J){if(!jz(J)||!Array.isArray(J.hooks))return!1;return J.hooks.some((z)=>jz(z)&&typeof z.command==="string"&&z.command.includes(mU))}function kq(J,z,Z=LQ()){let{hooks:Y,...X}=J,Q=jz(Y)?{...Y}:{},q=vU,j=(Array.isArray(Q[q])?Q[q]:[]).filter((B)=>!_N(B));if(z)j.push(...dU(Z)[q]);if(j.length>0)Q[q]=j;else delete Q[q];return Object.keys(Q).length>0?{...X,hooks:Q}:{...X}}var vU="PostToolUse",lN="Bash",mU="worktree-created";var lj=C(()=>{GZ();tJ()});import{mkdir as pN,readFile as rN,writeFile as oN}from"fs/promises";import{dirname as sN}from"path";async function tN(J){try{let z=JSON.parse(await rN(J,"utf8"));return jz(z)?z:{}}catch{return{}}}async function XX(J,z){try{let Z=await tN(J),Y=z(Z);if(JSON.stringify(Y)===JSON.stringify(Z))return;await pN(sN(J),{recursive:!0}),await oN(J,`${JSON.stringify(Y,null,2)}
12
+ `)}catch{}}class kQ{supportsHooks(){return!0}activityDetailFromPayload(J,z){return}supportsWorktreeSync(){return!1}async removeWorktreeSyncHook(J){}async installActivityHooks(J){await XX(J,(z)=>gq(z,!0,this.eventMap))}async removeActivityHooks(J){await XX(J,(z)=>gq(z,!1,this.eventMap))}async installWorktreeWatchHook(J){await XX(J,(z)=>kq(z,!0))}async removeWorktreeWatchHook(J){await XX(J,(z)=>kq(z,!1))}}var $j=C(()=>{lj()});import{homedir as eN}from"os";import{join as JR}from"path";function zR(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 ZR(){return JR(eN(),".claude","settings.json")}function XR(J){if(!jz(J)||!Array.isArray(J.hooks))return!1;return J.hooks.some((z)=>jz(z)&&typeof z.command==="string"&&z.command.includes(YR))}function QR(J,z){let{hooks:Z,...Y}=J,{WorktreeCreate:X,...Q}=jz(Z)?Z:{},H=(Array.isArray(X)?X:[]).filter((B)=>!XR(B));if(z!==null)H.push({hooks:[{type:"command",command:z}]});let j={...Q};if(H.length>0)j.WorktreeCreate=H;return Object.keys(j).length>0?{...Y,hooks:j}:{...Y}}var nU,ym,YR="worktree-created",aj;var iU=C(()=>{$j();lj();nU=[{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"}],ym=nU.map((J)=>J.event);aj=class aj extends kQ{vendor="claude";eventMap=nU;globalSettingsPath(){return ZR()}activityDetailFromPayload(J,z){if(J==="turn-failed")return{failure:zR(z.error_type)};if(J==="awaiting-input")return{waiting:"permission"};return}supportsWorktreeSync(){return!0}async removeWorktreeSyncHook(J){await XX(J,(z)=>QR(z,null))}}});function _j(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(!GR(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 GR(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}function lU(J){if(J.length===0)return!1;for(let z of J){if(z.type!=="text")return!1;let Z=(z.text??"").trim();if(!qR(Z)&&!HR(Z))return!1}return!0}function qR(J){return J.startsWith("<environment_context>")&&J.endsWith("</environment_context>")}function HR(J){return J.startsWith("# AGENTS.md instructions for ")&&J.includes(`
13
+ <INSTRUCTIONS>
14
+ `)&&J.endsWith("</INSTRUCTIONS>")}var $U=()=>{};function aU(J,z={}){let Z=pj(J.input_tokens,0),Y=pj(J.cached_input_tokens,0),X=pj(J.output_tokens,0),Q=Math.max(0,Z-Y);if(Z<=0&&X<=0&&Y<=0)return;return{input_tokens:Q,output_tokens:X,...Y>0?{cache_read_input_tokens:Y}:{},...jR(z.contextWindowTokens)?{context_window_tokens:z.contextWindowTokens}:{}}}function pj(J,z){return typeof J==="number"&&Number.isFinite(J)?J:z}function jR(J){return typeof J==="number"&&Number.isFinite(J)&&J>0}import{readdir as BR,stat as VR,unlink as hm}from"fs/promises";import{homedir as WR}from"os";import KY from"path";async function tj(J=DY){let z=J.sessionsDir(),Z=(await J.readdir(z)).sort().reverse(),Y=[];for(let X of Z){let Q=KY.join(z,X),q=(await J.readdir(Q)).sort().reverse();for(let H of q){let j=KY.join(Q,H),B=(await J.readdir(j)).sort().reverse();for(let U of B){let V=KY.join(j,U),f=(await J.readdir(V)).filter((L)=>L.startsWith("rollout-")&&L.endsWith(".jsonl"));f.sort().reverse();for(let L of f)if(Y.push(KY.join(V,L)),Y.length>=_U){if(!pU)pU=!0,console.warn(`[codex history] rollout scan truncated at ${_U} files; older sessions may be omitted`);return Y}}}}return Y}async function UR(J,z=DY){if(!J)return;let Z=J.toLowerCase(),Y=await tj(z);for(let X of Y)if(KY.basename(X).match(tU)?.[1]?.toLowerCase()===Z)return X;return}function fR(J){for(let z of J.split(`
15
+ `)){let Z=z.trim();if(!Z)continue;if(!mZ(Z))return"";try{let Y=JSON.parse(Z);if(Y.type==="session_meta")return Y.payload?.cwd??""}catch{}return""}return""}async function eU(J,z){let Z=rU.get(z);if(!Z)Z=new Map,rU.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 Q=fR(X);if(Q)Z.set(J,Q);return Q}async function Jf(J,z=DY){if(!J)return[];let Z=await tj(z),Y=[],X=0;for(let Q of Z){if(X>=KR)break;if(X++,await eU(Q,z)!==J)continue;let q=KY.basename(Q).match(tU)?.[1];if(q)Y.push(q)}return Y.reverse()}async function ej(J,z=DY){if(!J)return null;let Z=await tj(z),Y=0;for(let X of Z){if(Y>=DR)break;if(Y++,await eU(X,z)!==J)continue;try{return{path:X,mtimeMs:(await z.stat(X)).mtimeMs}}catch{}}return null}async function zf(J,z=DY){return(await ej(J,z))?.mtimeMs??0}async function Zf(J,z=DY){return(await LR(J,z)).messages}async function LR(J,z=DY){let Z=await UR(J,z);if(!Z)return{messages:[]};let Y;try{Y=await z.readFile(Z)}catch{return{messages:[]}}let X=FR(MR(Y,J)),Q=CR(Y);return{messages:X,...Q?{usageMetrics:Q}:{}}}function FR(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 MR(J,z){let Z=[];for(let Y of J.split(`
16
+ `)){let X=Y.trim();if(!X)continue;if(!mZ(X))continue;let Q;try{Q=JSON.parse(X)}catch{continue}if(!bQ(Q))continue;if(Q.type!=="response_item")continue;let q=bQ(Q.payload)?Q.payload:void 0;if(!q)continue;let H=typeof Q.timestamp==="string"?Q.timestamp:new Date().toISOString(),j=OR(q,H,z);if(j)Z.push(j)}return Z}function OR(J,z,Z){if(J.type==="message"){let Y=J.role;if(Y!=="user"&&Y!=="assistant"&&Y!=="system")return;let X=_j(J.content);if(Y==="user"&&lU(X))return;return{role:Y,blocks:X,timestamp:z,sessionId:Z}}if(J.type==="reasoning")return AR(J,z,Z);if(J.type==="function_call")return rj(J,z,Z,{name:sj(J.name,"function_call"),input:oj(J.arguments)});if(J.type==="custom_tool_call")return rj(J,z,Z,{name:sj(J.name,"custom_tool_call"),input:oj(J.input)});if(J.type==="tool_search_call")return rj(J,z,Z,{name:"tool_search_call",input:bq(J,["type","call_id","status"])});if(J.type==="function_call_output"||J.type==="custom_tool_call_output")return oU(J,z,Z,oj(J.output));if(J.type==="tool_search_output")return oU(J,z,Z,bq(J,["type","call_id"]));if(J.type==="web_search_call"||J.type==="image_generation_call"||J.type==="local_shell_call")return NR(J,z,Z);return}function AR(J,z,Z){let Y=RR(J);if(Y.length===0)return;return{role:"assistant",blocks:[{type:"thinking",text:Y}],timestamp:z,sessionId:Z}}function rj(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 oU(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 NR(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}`,Q=sj(J.name,Y),q=bq(J,["type","call_id","status"]),H=bq(J,["type","call_id"]);return{role:"assistant",timestamp:z,sessionId:Z,blocks:[{type:"tool_call",callId:X,name:Q,input:q},{type:"tool_result",callId:X,output:H,isError:!1}]}}function RR(J){let z=sU(J.content);if(z.length>0)return z;let Z=typeof J.text==="string"?J.text:"";if(Z.length>0)return Z;return sU(J.summary)}function sU(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(!bQ(Z))continue;let Y=typeof Z.text==="string"?Z.text:"";if(Y.length>0)z.push(Y)}return z.join("")}function bq(J,z){let Z={};for(let[Y,X]of Object.entries(J))if(!z.includes(Y))Z[Y]=X;return Z}function sj(J,z){return typeof J==="string"&&J.length>0?J:z}function oj(J){if(typeof J!=="string")return J;try{return JSON.parse(J)}catch{return J}}function CR(J){let z,Z=null;for(let Y of J.split(`
17
+ `)){let X=Y.trim();if(!X)continue;if(!mZ(X))continue;let Q;try{Q=JSON.parse(X)}catch{continue}if(!bQ(Q))continue;let q=typeof Q.timestamp==="string"?gR(Q.timestamp):null;if(Q.type==="response_item")continue;if(Q.type!=="turn.completed")continue;let H=bQ(Q.usage)?Q.usage:void 0;if(!H)continue;let j=aU(H);if(!j)continue;if(q!==null&&(Z===null||q>Z))Z=q,z=j;else if(Z===null)z=j}return z}function gR(J){let z=new Date(J).getTime();return Number.isFinite(z)?z:null}function bQ(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}var DY,_U=5000,pU=!1,tU,rU,KR=200,DR=12;var JB=C(()=>{CQ();$U();DY={sessionsDir(){return KY.join(WR(),".codex","sessions")},async readdir(J){try{return await BR(J)}catch{return[]}},async readFile(J){return await ZX(J)},stat:VR};tU=/([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})\.jsonl$/i;rU=new WeakMap});import{homedir as kR}from"os";import{join as bR}from"path";function IR(){return bR(kR(),".codex","hooks.json")}var Xf,_m,zB;var Qf=C(()=>{$j();Xf=[{event:"SessionStart",verb:"session-start"},{event:"UserPromptSubmit",verb:"turn-start"},{event:"Stop",verb:"turn-complete"}],_m=Xf.map((J)=>J.event);zB=class zB extends kQ{vendor="codex";eventMap=Xf;globalSettingsPath(){return IR()}}});function Gf(J){if(!Iq(J))return;let z=Iq(J.modelMetrics)?J.modelMetrics:void 0;if(!z)return;let Z=0,Y=0,X=0;for(let q of Object.values(z)){if(!Iq(q)||!Iq(q.usage))continue;Z+=Sq(q.usage.inputTokens,0),Y+=Sq(q.usage.outputTokens,0),X+=Sq(q.usage.cacheReadTokens,0)}let Q=Sq(J.currentTokens,0);if(Z===0&&Y===0&&X===0&&Q===0)return;return{input_tokens:Z,output_tokens:Y,...X>0?{cache_read_input_tokens:X}:{},...Q>0?{context_tokens:Q}:{}}}function Iq(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}function Sq(J,z){return typeof J==="number"&&Number.isFinite(J)?J:z}import{readdir as SR,rm as yR,stat as TR}from"fs/promises";import{homedir as xR}from"os";import dZ from"path";async function YB(J=LY){let z=dZ.join(J.copilotDir(),"session-state");return(await J.readdir(z)).map((Y)=>dZ.join(z,Y))}async function qf(J,z=LY){let Z=[];for(let Y of await YB(z)){let X=await XB(Y,z);if(X.cwd!==J)continue;Z.push({id:X.id??dZ.basename(Y),updatedAt:X.updatedAt??""})}return Z.sort((Y,X)=>Y.updatedAt.localeCompare(X.updatedAt)).map((Y)=>Y.id)}async function Hf(J,z=LY){if(!J)return 0;let Z=0;for(let Y of await YB(z)){if((await XB(Y,z)).cwd!==J)continue;try{let{mtimeMs:Q}=await z.stat(dZ.join(Y,"events.jsonl"));if(Q>Z)Z=Q}catch{}}return Z}async function ER(J,z=LY){let Z=await uR(J,z);if(!Z)return{messages:[]};let Y=await z.readFile(dZ.join(Z,"events.jsonl")).catch(()=>""),X=PR(Y,J);return{messages:X.messages,...X.usageMetrics?{usageMetrics:X.usageMetrics}:{}}}async function jf(J,z=LY){return(await ER(J,z)).messages}async function uR(J,z=LY){for(let Z of await YB(z)){if(dZ.basename(Z)===J)return Z;let Y=await XB(Z,z);if(Y.id===J||Y.name?.toLowerCase()===J.toLowerCase())return Z}return}async function XB(J,z=LY){let Z=await z.readFile(dZ.join(J,"workspace.yaml")).catch(()=>"");return wR(Z)}function wR(J){let z={};for(let Z of J.split(`
18
+ `)){let Y=Z.match(/^([A-Za-z_]+):\s*(.*)$/);if(!Y)continue;let X=Y[1],Q=Y[2]??"";if(Q.startsWith('"')&&Q.endsWith('"'))Q=Q.slice(1,-1).replace(/\\"/g,'"');z[X]=Q}return{id:z.id,cwd:z.cwd,name:z.name,updatedAt:z.updated_at,createdAt:z.created_at}}function PR(J,z){let Z=[],Y=new Map,X=z,Q,q=null;for(let H of J.split(`
19
+ `)){let j=H.trim();if(!j)continue;if(!mZ(j))continue;let B;try{B=JSON.parse(j)}catch{continue}if(!ZB(B)||typeof B.type!=="string")continue;let U=typeof B.timestamp==="string"?B.timestamp:new Date().toISOString(),V=ZB(B.data)?B.data:{};if(B.type==="session.start"){let f=typeof V.sessionId==="string"?V.sessionId:void 0;if(f)X=f;continue}if(B.type==="user.message"){let f=typeof V.content==="string"?V.content:"";if(!f)continue;if(!q)q=Buffer.from(f.slice(0,hR),"utf8").toString("utf8");Z.push({role:"user",blocks:[{type:"text",text:f}],timestamp:U,sessionId:X});continue}if(B.type==="assistant.message"){let f=[],L=typeof V.content==="string"?V.content:"";if(L)f.push({type:"text",text:L});let M=Array.isArray(V.toolRequests)?V.toolRequests:[];for(let A of M){if(!ZB(A))continue;let N=typeof A.id==="string"?A.id:typeof A.toolCallId==="string"?A.toolCallId:"tool",u=typeof A.name==="string"?A.name:typeof A.toolName==="string"?A.toolName:"tool";f.push({type:"tool_call",callId:N,name:u,input:A.arguments??{}})}if(f.length>0)Z.push({role:"assistant",blocks:f,timestamp:U,sessionId:X});continue}if(B.type==="tool.execution_start"){let f=typeof V.toolCallId==="string"?V.toolCallId:void 0,L=typeof V.toolName==="string"?V.toolName:"tool";if(f)Y.set(f,L);continue}if(B.type==="tool.execution_complete"){let f=typeof V.toolCallId==="string"?V.toolCallId:void 0;if(!f)continue;let L=Y.get(f)??(typeof V.toolName==="string"?V.toolName:"tool"),M=V.result??(V.success===!1?{success:!1}:void 0);Z.push({role:"assistant",blocks:[{type:"tool_result",callId:f,output:M,isError:V.success===!1}],timestamp:U,sessionId:X});continue}if(B.type==="session.shutdown")Q=Gf(V)}return{messages:Z,usageMetrics:Q,firstUserMessage:q}}function ZB(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}var LY,hR=200;var Bf=C(()=>{CQ();LY={copilotDir(){let J=process.env.COPILOT_HOME?.trim();if(J)return J;return dZ.join(xR(),".copilot")},async readdir(J){try{return await SR(J)}catch{return[]}},async readFile(J){return await ZX(J)},stat:TR,async rm(J){await yR(J,{recursive:!0,force:!0})}}});function QB(J){return zJ(J).createHookAdapter()}class yq{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 GB=C(()=>{UZ()});import{readFile as Vf}from"fs/promises";class Tq{supportsCompletionMarkers(){return!0}}function IQ(J){return zJ(J).createTurnDetector()}function dR(J,z="claude",Z=0){let Y=null,X=0;for(let Q of J.split(`
20
+ `)){X++;let q=Wf(Q);if(!q)continue;let H=ff(q.message)?q.message:q;if(H.role!=="assistant")continue;if(!("content"in H))continue;let j=Uf(q,Z),B={id:`claude:${z}:${j}:${X}`,timestampMs:j,source:"claude"};if(!Y||B.timestampMs>=Y.timestampMs)Y=B}return Y}function nR(J,z="codex"){let Z=null,Y=0;for(let X of J.split(`
21
+ `)){Y++;let Q=Wf(X);if(!Q||Q.type!=="turn.completed")continue;let q=Uf(Q,0),H={id:`codex:${z}:${q}:${Y}`,timestampMs:q,source:"codex"};if(!Z||H.timestampMs>=Z.timestampMs)Z=H}return Z}function Wf(J){let z=J.trim();if(!z)return null;try{let Z=JSON.parse(z);return ff(Z)?Z:null}catch{return null}}function Uf(J,z){let Z=typeof J.timestamp==="string"?Date.parse(J.timestamp):Number.NaN;return Number.isFinite(Z)?Z:z}function ff(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}var mR,qB,cR,HB,xq;var Eq=C(()=>{ij();JB();UZ();mR={listSessionFiles:(J)=>gQ(J),readFile:(J)=>Vf(J,"utf8")};qB=class qB extends Tq{deps;vendor="claude";cache=new Map;constructor(J=mR){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 Q=this.cache.get(X.path),q;if(Q&&X.mtimeMs>0&&Q.mtimeMs===X.mtimeMs)q=Q.marker;else{let H=await this.deps.readFile(X.path).catch(()=>"");q=dR(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}};cR={findLatestRollout:(J)=>ej(J),readFile:(J)=>Vf(J,"utf8")};HB=class HB extends Tq{deps;vendor="codex";cache=null;constructor(J=cR){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=nR(Z,z.path);return this.cache={path:z.path,mtimeMs:z.mtimeMs,marker:Y},Y}};xq=class xq extends Tq{vendor;constructor(J){super();this.vendor=J}supportsCompletionMarkers(){return!1}async latestCompletion(){return null}}});function pR(J){return{vendor:J,builtin:!1,displayName:J,defaultCommand:[J],history:iR,detectAccount:async()=>({binary:{found:!1,error:"custom engine: kobe has no account detector for it"},account:{kind:"none"}}),createHookAdapter:()=>new yq(J),createTurnDetector:()=>new xq(J)}}function zJ(J){return LJ(J)?_R[J]:pR(J)}var iR,lR,$R,aR,_R;var UZ=C(()=>{s1();fY();ij();iU();JB();Qf();Bf();GB();Eq();iR={async listSessionIdsForWorktree(){return[]},async readHistory(){return[]},async latestTranscriptMtimeForWorktree(){return 0}},lR={async listSessionIdsForWorktree(J){return[...await gQ(J)].sort((Z,Y)=>Z.mtimeMs-Y.mtimeMs).map((Z)=>Z.sessionId)},readHistory:(J)=>PU(J),latestTranscriptMtimeForWorktree:(J)=>wU(J)},$R={listSessionIdsForWorktree:(J)=>Jf(J),readHistory:(J)=>Zf(J),latestTranscriptMtimeForWorktree:(J)=>zf(J)},aR={listSessionIdsForWorktree:(J)=>qf(J),readHistory:(J)=>jf(J),latestTranscriptMtimeForWorktree:(J)=>Hf(J)},_R={claude:{vendor:"claude",builtin:!0,displayName:"Claude",defaultCommand:["claude"],history:lR,detectAccount:(J)=>Aq(J),createHookAdapter:()=>new aj,createTurnDetector:()=>new qB},codex:{vendor:"codex",builtin:!0,displayName:"Codex",defaultCommand:["codex"],effortLevels:["none","low","medium","high","xhigh"],history:$R,detectAccount:(J)=>Nq(J),createHookAdapter:()=>new zB,createTurnDetector:()=>new HB},copilot:{vendor:"copilot",builtin:!0,displayName:"Copilot",defaultCommand:["copilot"],history:aR,detectAccount:(J)=>Rq(J),createHookAdapter:()=>new yq("copilot"),createTurnDetector:()=>new xq("copilot")}}});function uq(){return rJ(FY,!1)}var FY="experimental.autoStatus";var SQ=C(()=>{mz()});function jB(){return rJ(MY,!1)}var MY="experimental.dispatcher";var wq=C(()=>{mz()});import{randomUUID as rR}from"crypto";function gz(J){return`engineCommand.${J}`}function kz(J){return`engineName.${J}`}function nZ(J){return E1(kz(J))?.trim()||BB[J]||J}function yQ(J){return zJ(J??"claude").defaultCommand}function oR(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 cJ(J,z){let Z=J??"claude",Y=E1(gz(Z))?.trim(),X=(()=>{if(Y){let Q=oR(Y);if(Q.length>0)return Q}return yQ(Z)})();return sR(X,Z,z)}function sR(J,z,Z){let Y=Z?.trim();if(!Y)return J;let X=z??"claude";if(!zJ(X).effortLevels?.includes(Y))return J;if(X==="codex")return[...J,"-c",`model_reasoning_effort=${Y}`];return J}function QX(J,z){if((z??"claude")!=="claude")return{argv:J,sessionId:null};if(J.some((Y)=>tR.has(Y)))return{argv:J,sessionId:null};let Z=rR();return{argv:[...J,"--session-id",Z],sessionId:Z}}function OY(){let J=(z)=>/^[A-Za-z0-9_/.:=-]+$/.test(z)?z:`'${z.replace(/'/g,"'\\''")}'`;try{return[...c1(),"api"].map(J).join(" ")}catch{return"kobe api"}}function eR(J,z=OY()){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(`
22
+ `)}function JC(J,z=OY()){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(`
23
+ `)}function zC(J,z=OY(),Z={}){let Y=[];if((Z.status??uq)())Y.push(eR(J,z));if((Z.notes??jB)())Y.push(JC(J,z));return Y.length>0?Y.join(`
24
+
25
+ `):null}function Pq(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=zC(Z,OY(),Y);if(!X)return J;return[...J,"--append-system-prompt",X]}function ZC(J,z=OY()){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(`
26
+ `)}function hq(J,z,Z,Y=jB){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",ZC(Z)]}var BB,tR;var eJ=C(()=>{GZ();UZ();SQ();wq();I1();s1();BB=Object.fromEntries(VY.map((J)=>[J,zJ(J).displayName]));tR=new Set(["--session-id","--resume","-r","--continue","-c","--from-pr"])});var GX;var vq=C(()=>{GX={$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 qX;var mq=C(()=>{qX={$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 HX;var cq=C(()=>{HX={$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 jX;var dq=C(()=>{jX={$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 BX;var nq=C(()=>{BX={$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 VX;var iq=C(()=>{VX={$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 WX;var lq=C(()=>{WX={$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 Kf;var Df=C(()=>{vq();mq();cq();dq();nq();iq();lq();Kf={claude:GX,conductor:qX,nord:jX,opencode:BX,dracula:HX,tokyonight:WX,"osaka-jade":VX}});function BC(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,Q]=Z;return`#${Y}${Y}${X}${X}${Q}${Q}`.toLowerCase()}return`#${Z.slice(0,6)}`.toLowerCase()}function Lf(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 BC(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 Q=J.theme[z];if(Q===void 0)return null;return X(Q,[z])}function $q(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}function aq(J){if(!$q(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(!$q(Z))return{ok:!1,reason:"`theme` must be an object map"};if("defs"in z&&z.defs!==void 0){if(!$q(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(!$q(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 Q=X;if(typeof Q.dark!=="string")return{ok:!1,reason:`theme.${Y}.dark must be a string`};if(typeof Q.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 VB=()=>{};import{readFileSync as VC,readdirSync as WC}from"fs";import{join as Ff}from"path";function UX(){return Ff(DJ(),"themes")}function TQ(){let J=UX(),z;try{z=WC(J)}catch{return[]}let Z=[];for(let Y of z){if(!Y.endsWith(".json"))continue;let X=Ff(J,Y),Q;try{let j=VC(X,"utf8");Q=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=aq(Q);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 _q=C(()=>{o1();VB()});import{readFileSync as UC}from"fs";function KC(){try{let J=JSON.parse(UC(Hz(),"utf8")),z=typeof J.activeTheme==="string"&&J.activeTheme?J.activeTheme:"claude",Z=typeof J.focusAccent==="string"&&fC.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 DC(J){return TQ().find((Z)=>Z.name===J)?.theme??Kf[J]??null}function bz(J,...z){for(let Z of z){let Y=Lf(J,Z);if(Y)return Y}return null}function Mf(J,z){let Z=bz(J,"text"),Y=bz(J,"background"),X=bz(J,"textMuted","text"),Q=bz(J,"backgroundPanel","background"),q=bz(J,"backgroundElement","backgroundPanel","background"),H=bz(J,"backgroundMenu","backgroundElement","backgroundPanel","background"),j=bz(J,"selectedListItemText","background"),B=bz(J,z,"primary","borderActive","border","text");return{border:bz(J,"border","text"),activeBorder:B,statusBg:Q,statusFg:X,statusMutedFg:X,windowFg:X,currentWindowBg:q,currentWindowFg:B,activityFg:bz(J,"info","primary","text"),bellFg:bz(J,"warning","error","primary","text"),messageBg:H,messageFg:Z,messageCommandFg:B,modeBg:B,modeFg:j??Y}}function Bz(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 Af(J){let z=Bz({bg:J.statusBg,fg:J.statusFg}),Z=Bz({bg:J.statusBg,fg:J.statusMutedFg}),Y=Bz({bg:J.statusBg,fg:J.windowFg});return[{key:"border",option:"pane-border-style",showFlag:"-gwqv",setFlag:"-gw",unsetFlag:"-gwu",value:Bz({fg:J.border})},{key:"active",option:"pane-active-border-style",showFlag:"-gwqv",setFlag:"-gw",unsetFlag:"-gwu",value:Bz({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:Bz({bg:J.currentWindowBg,fg:J.currentWindowFg,attrs:["bold"]})},{key:"activity-window",option:"window-status-activity-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Bz({bg:J.statusBg,fg:J.activityFg})},{key:"bell-window",option:"window-status-bell-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Bz({bg:J.statusBg,fg:J.bellFg,attrs:["bold"]})},{key:"last-window",option:"window-status-last-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Bz({bg:J.statusBg,fg:J.statusFg})},{key:"message",option:"message-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Bz({bg:J.messageBg,fg:J.messageFg})},{key:"message-command",option:"message-command-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Bz({bg:J.messageBg,fg:J.messageCommandFg,attrs:["bold"]})},{key:"mode",option:"mode-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Bz({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 LC(J){let z=new Set(J.marker.split(",").map((Q)=>Q.trim()).filter(Boolean)),Z=[],Y=[];for(let Q of Af(J.hexes))if(Q.value){if((J.current[Q.key]??"")!==Q.value)Z.push(["set-option",Q.setFlag,Q.option,Q.value]);Y.push(Q.key)}else if(z.has(Q.key))Z.push(["set-option",Q.unsetFlag,Q.option]);let X=Y.join(",");if(X!==J.marker)Z.push(X?["set-option","-g",WB,X]:["set-option","-gu",WB]);return Z}async function Of(J){let{code:z,stdout:Z}=await S0(J);return z===0?Z.trim():""}async function AY(){try{let J=KC(),z=J.enabled?DC(J.themeName):null,Z=z?Mf(z,J.focusAccentSlot):Mf({theme:{}},J.focusAccentSlot),Y=Af(Z),[X,...Q]=await Promise.all([Of(["show-options","-gqv",WB]),...Y.map((j)=>Of(["show-options",j.showFlag,j.option]))]),q=Object.fromEntries(Y.map((j,B)=>[j.key,Q[B]??""])),H=LC({marker:X,current:q,hexes:Z});if(H.length>0)await _1(H)}catch{}}var WB="@kobe_border_theme",fC;var pq=C(()=>{o1();S1();Df();_q();fC=["primary","success","info"]});var rq={};X1(rq,{recordGen:()=>iZ,isLatestGen:()=>kf,genAgeMs:()=>CC,coalesceLayoutWork:()=>gC,RESIZE_GUARD_MS:()=>RC,LAYOUT_COALESCE_MS:()=>Cf});import{createHash as FC,randomUUID as MC}from"crypto";import{mkdirSync as OC,readFileSync as Nf,renameSync as AC,writeFileSync as NC}from"fs";import{join as Rf}from"path";function gf(){return Rf(DJ(),"layout-coord")}function UB(J,z){let Z=FC("sha1").update(J).digest("hex").slice(0,16);return Rf(gf(),`${Z}.${z}`)}function iZ(J,z){let Z=MC();try{OC(gf(),{recursive:!0});let Y=UB(J,z),X=`${Y}.${Z}.tmp`;NC(X,`${Date.now()}
27
+ ${Z}`),AC(X,Y)}catch{}return Z}function kf(J,z,Z){try{return Nf(UB(J,z),"utf8").split(`
28
+ `)[1]?.trim()===Z}catch{return!0}}function CC(J,z,Z=Date.now()){try{let Y=Number.parseInt(Nf(UB(J,z),"utf8").split(`
29
+ `)[0]??"",10);return Number.isFinite(Y)?Z-Y:Number.POSITIVE_INFINITY}catch{return Number.POSITIVE_INFINITY}}async function gC(J,z,Z,Y=Cf){let X=iZ(J,z);if(Y>0)await new Promise((Q)=>setTimeout(Q,Y));if(!kf(J,z,X))return;await Z()}var Cf=120,RC=400;var fX=C(()=>{o1()});function bC(J){let z=[];for(let Z of J.split(`
30
+ `)){let Y=Z.trim();if(!Y)continue;let[X,Q,q,H,j]=Y.split("\t");if(!X||!Q||!q)continue;let B=Number.parseInt(j?.trim()??"",10);z.push({windowId:X.trim(),paneId:Q.trim(),role:q.trim(),version:H?.trim()??"",...Number.isFinite(B)?{paneWidth:B}:{}})}return z}function IC(J){let z=J.indexOf("-t");return z>=0&&z+1<J.length?J[z+1]??null:null}function SC(J,z){return J.filter((Z)=>{let Y=IC(Z);return Y===null||z.has(Y)})}function bf(J,z){let Z=new Map;for(let X of J){let Q=Z.get(X.windowId)??[];Q.push(X),Z.set(X.windowId,Q)}let Y=[];for(let X of Z.values()){let Q=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:Q&&(z.vendorChanged||H?.version!==z.currentVersion);if(H&&j)Y.push({role:"ops",paneId:H.paneId,claudePaneId:Q??null})}return Y}async function oq(J){let{code:z,stdout:Z}=await S0(["list-panes","-s","-t",`=${J}`,"-F",kC]);if(z!==0)return null;return bC(Z)}async function If(J,z){if(z.length===0)return;let Z=await oq(J),Y=Z?SC(z,new Set(Z.map((X)=>X.paneId))):z;if(Y.length>0)await _1(Y)}function Sf(J,z){let Z=c1(),Y=a1(),X=[];for(let Q of J){let q=Q.role==="tasks"?PZ(Z,{initialTaskId:z.taskId}):JX({cwd:z.cwd,taskId:z.taskId,claudePaneId:Q.claudePaneId,cliInvocation:Z,vendor:z.vendor});X.push(["respawn-pane","-k","-t",Q.paneId,"-c",d1(z.cwd),mJ(Y+q)],["set-option","-p","-t",Q.paneId,"@kobe_role",Q.role],["set-option","-p","-t",Q.paneId,Iz,a0])}return X}function yC(J,z){if(J===0)return"no-engine-pane";return z===0?"switched":"respawn-failed"}async function yf(J,z,Z,Y,X){let Q=await oq(J);if(!Q)return"no-engine-pane";let q=Q.filter((V)=>V.role==="claude");if(q.length===0)return"no-engine-pane";let H=d1(z),j=eY(a1(),c1(),J),B=[];for(let V of q){let f=QX(Z,X),L=mJ(zX(vJ(f.argv),Y,z),j);B.push(["respawn-pane","-k","-c",H,"-t",V.paneId,L]),B.push(f.sessionId?["set-window-option","-t",V.paneId,cz,f.sessionId]:["set-window-option","-u","-t",V.paneId,cz])}let U=await _1(B);return yC(q.length,U)}async function Tf(){return(await dz()).rightColumnResizeArgs}async function fB(J,z={}){let{tasksWidth:Z,rightColumnResizeArgs:Y}=await dz(),X=await oq(J);if(!X)return{rows:null,commands:[]};let Q=[];for(let q of X)if(q.role==="tasks"&&(z.force||q.paneWidth!==Z))Q.push(["resize-pane","-t",q.paneId,"-x",`${Z}`]);if(Y.length>0){for(let q of X)if(q.role==="ops")Q.push(["resize-pane","-t",q.paneId,...Y])}return{rows:X,commands:Q}}async function lZ(J,z){iZ(J,"resize");let{rows:Z,commands:Y}=await fB(J);if(!Z)return;let X=[...Y];if(z)X.push(...Sf(bf(Z,{currentVersion:a0,force:!1,vendorChanged:z.vendorChanged}),z));await If(J,X)}async function xf(J){if(!await K1(J))return;await lZ(J)}async function KB(J){let{code:z,stdout:Z}=await S0(["list-panes","-t",`=${J}`,"-F",`#{@kobe_role} #{pane_width} #{pane_height} #{window_width} #{window_height} #{window_zoomed_flag} #{${Cz}} #{${hJ}}`]);if(z!==0)return;let Y=Z.split(`
31
+ `).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),Q=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",qq,`${Tj(B)}`])}let j=Y.find(([B])=>B?.trim()==="ops");if(j&&Number.isFinite(X)&&X>0&&Number.isFinite(Q)&&Q>0){let B=Number.parseInt(j[1]?.trim()??"",10),U=Number.parseInt(j[2]?.trim()??"",10),V=Number.isFinite(B)?WY(100*B/X):null,f=Number.isFinite(U)?WY(100*U/Q):null;if(V!==null)q.push(["set-option","-s",Hq,`${V}`]);if(f!==null)q.push(["set-option","-s",jq,`${f}`])}if(q.length>0)await _1(q)}function TC(J){let z=J.split(`
32
+ `).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 Ef(J){let{code:z,stdout:Z}=await S0(["list-panes","-t",`=${J}`,"-F",`#{@kobe_role} #{window_zoomed_flag} #{${Cz}} #{${hJ}}`]);if(z!==0||!TC(Z))return;await KB(J)}async function KX(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,Q=await oq(J);if(!Q)return;let q=Sf(bf(Q,{currentVersion:a0,force:!0}),{cwd:Z,taskId:Y,vendor:X});await If(J,q),await AY()}var Iz="@kobe_pane_version",kC;var DX=C(()=>{GZ();eJ();sJ();S1();tJ();pq();CJ();hZ();fX();kC=`#{window_id} #{pane_id} #{@kobe_role} #{${Iz}} #{pane_width}`});function sq(J){return J.remoteVersion>=J.localMin&&J.localVersion>=J.remoteMin}function uf(J,z){if(!J)return!1;return J!==z}function EC(J){return typeof J==="string"&&xC.has(J)}function wf(J){if(!Array.isArray(J))return null;let z=new Set;for(let Z of J)if(EC(Z))z.add(Z);return z.size>0?z:null}function Jz(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 xQ(J){return`${JSON.stringify(J)}
33
+ `}var Vz=3,$Z=2,DB,xC;var nz=C(()=>{DB=["task.snapshot","issue.snapshot","active-task","update","engine-state","ui-prefs","keybindings","task.jobs","worktree.changes","transcript.activity","session.deliver"],xC=new Set(DB)});import{createHash as uC}from"crypto";import{homedir as tq,tmpdir as wC}from"os";import{join as NY}from"path";function PC(J){return uC("sha1").update(J).digest("hex").slice(0,8)}function FB(J,z,Z,Y){if(Buffer.byteLength(J,"utf8")<=LB)return J;let X=PC(z),Q=Y===void 0?"":`-${Y}`,q=NY(wC(),`kobe-${X}-${Z}${Q}.sock`);if(Buffer.byteLength(q,"utf8")<=LB)return q;throw Error(`kobe socket path exceeds ${LB} bytes even after fallback: ${q}`)}function iz(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 FB(NY(Z,".kobe","daemon.sock"),Z,"daemon");let Y=process.env.XDG_RUNTIME_DIR;if(Y&&Y.length>0)return FB(NY(Y,"kobe.sock"),Y,"daemon");let X=tq();return FB(NY(X,".kobe","daemon.sock"),X,"daemon")}function fZ(J=process.env.KOBE_HOME_DIR??tq()){let z=process.env.KOBE_DAEMON_PID_PATH;if(z&&z.length>0)return z;return NY(J,".kobe","daemon.pid")}function eq(J=process.env.KOBE_HOME_DIR??tq()){return NY(J,".kobe","daemon.log")}function Pf(J=process.env.KOBE_HOME_DIR??tq()){return NY(J,".kobe","client.log")}var LB=100;var LX=()=>{};import{appendFile as hf,mkdir as hC}from"fs/promises";import{dirname as vC}from"path";function JH(J){cf=J}function mC(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 df(J,z,Z=new Date){return`[${Z.toISOString()}] client ${cf} [${J}] pid=${process.pid}: ${z}
34
+ `}function cC(){if(vf)return;vf=!0;try{process.stderr.write(`[kobe] client log write failed; continuing without it
35
+ `)}catch{}}function nf(J){let z=Pf();mf=mf.then(async()=>{try{await hf(z,J)}catch(Z){if(Z?.code==="ENOENT")await hC(vC(z),{recursive:!0}),await hf(z,J);else throw Z}}).catch(()=>cC())}function lz(J,z){nf(df(J,z))}function ZJ(J,z){let Z=mC(z);nf(df(J,Z.stack??Z.message))}function lf(){if(MB||OB)return;MB=(J)=>ZJ("crash-net",J),OB=(J)=>ZJ("crash-net",J),process.on("unhandledRejection",MB),process.on("uncaughtException",OB)}var cf="client",vf=!1,mf,MB,OB;var KZ=C(()=>{LX();mf=Promise.resolve()});import{connect as dC}from"net";import{StringDecoder as nC}from"string_decoder";class Wz{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((Q,q)=>{this.pending.set(Y,{resolve:(H)=>Q(H),reject:q})});return Z.write(xQ({type:"request",id:Y,name:J,payload:z})),X}openSocket(){return new Promise((J,z)=>{let Z=dC(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 Q=new nC("utf8");this.buffer="",Z.on("data",(q)=>this.onData(Q.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(`
36
+ `);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(`
37
+ `)}}onLine(J){let z;try{z=JSON.parse(J)}catch(Y){ZJ("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 EQ=C(()=>{nz();KZ()});async function FX(J,z){if(!z)return 0;return zJ(J).history.latestTranscriptMtimeForWorktree(z)}var zH=C(()=>{UZ()});function $f(J){return typeof J==="string"&&iC.includes(J)}var uQ=(J)=>J,YJ="claude",iC;var Uz=C(()=>{iC=["backlog","in_progress","in_review","done","canceled","error"]});function ZH(J){return lC.includes(J)}function af(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 lC;var YH=C(()=>{lC=["session-start","turn-start","turn-complete","turn-failed","awaiting-input","session-end"]});function $C(){let J=process.env.KOBE_ENGINE_STATE_TTL_MS;if(J===void 0)return _f;let z=Number(J);return Number.isFinite(z)&&z>0?z:_f}class AB{bus;staleMs;now;livenessAt;activity=new Map;constructor(J,z=$C(),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=af(Y?.state,z,Z),Q=this.now(),q={state:X,detail:Z,at:Q};if(X!=="idle"&&X!=="turn_complete")q.lapse=this.armLapse(J,Q);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 _f=600000;var pf=C(()=>{YH()});function rf(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 XH(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 of(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=rf(Z);return Y.length>0?Buffer.from(Y,"utf8").toString("utf8"):Y}async function MX(J,z=YJ){if(!J)return"";let{history:Z}=zJ(z),Y=await Z.listSessionIdsForWorktree(J);for(let X of Y.slice(0,aC)){let Q=of(await Z.readHistory(X));if(Q)return Q}return""}async function sf(J,z){if(!z)return"";try{return of(await zJ(J).history.readHistory(z))}catch{return""}}var aC=8;var QH=C(()=>{UZ();Uz()});function tf(J){let z=String(J),Z=z.length-1;return w1.context.id+(Z?String.fromCharCode(96+Z):"")+z}function CB(J){w1.context=J}function _C(){return{...w1.context,id:w1.getNextContextId(),count:0}}function RY(J,z){let Z=g1,Y=i0,X=J.length===0,Q=z===void 0?Y:z,q=X?{owned:null,cleanups:null,context:null,owner:null}:{owned:null,cleanups:null,context:Q?Q.context:null,owner:Q},H=X?()=>J(()=>{throw Error("Dispose method must be an explicit argument to createRoot function")}):()=>J(()=>QJ(()=>aZ(q)));yz.afterCreateOwner&&yz.afterCreateOwner(q),i0=q,g1=null;try{return dJ(H,!0)}finally{g1=Z,i0=Y}}function p(J,z){z=z?Object.assign({},jH,z):jH;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(G5(Z),yz.afterCreateSignal)yz.afterCreateSignal(Z)}let Y=(X)=>{if(typeof X==="function")if(V0&&V0.running&&V0.sources.has(Z))X=X(Z.tValue);else X=X(Z.value);return kB(Z,X)};return[q5.bind(Z),Y]}function ef(J,z,Z){let Y=NX(J,z,!0,zz,Z);if(AX&&V0&&V0.running)XJ.push(Y);else CY(Y)}function $z(J,z,Z){let Y=NX(J,z,!1,zz,Z);if(AX&&V0&&V0.running)XJ.push(Y);else CY(Y)}function E0(J,z,Z){Q5=Gg;let Y=NX(J,z,!1,zz,Z),X=hQ&&Zz(hQ);if(X)Y.suspense=X;if(!Z||!Z.render)Y.user=!0;gJ?gJ.push(Y):CY(Y)}function U0(J,z,Z){Z=Z?Object.assign({},jH,Z):jH;let Y=NX(J,z,!0,0,Z);if(Y.observers=null,Y.observerSlots=null,Y.comparator=Z.equals||void 0,AX&&V0&&V0.running)Y.tState=zz,XJ.push(Y);else CY(Y);return q5.bind(Y)}function eC(J){return J&&typeof J==="object"&&"then"in J}function DZ(J,z,Z){let Y,X,Q;if(typeof z==="function")Y=J,X=z,Q=Z||{};else Y=!0,X=J,Q=z||{};let q=null,H=NB,j=null,B=!1,U=!1,V="initialValue"in Q,f=typeof Y==="function"&&U0(Y),L=new Set,[M,A]=(Q.storage||p)(Q.initialValue),[N,u]=p(void 0),[h,I]=p(void 0,{equals:!1}),[R,O]=p(V?"ready":"unresolved");if(w1.context){if(j=w1.getNextContextId(),Q.ssrLoadFrom==="initial")H=Q.initialValue;else if(w1.load&&w1.has(j))H=w1.load(j)}function S(Y0,Q0,e,v){if(q===Y0){if(q=null,v!==void 0&&(V=!0),(Y0===H||Q0===H)&&Q.onHydrated)queueMicrotask(()=>Q.onHydrated(v,{value:Q0}));if(H=NB,V0&&Y0&&B)V0.promises.delete(Y0),B=!1,dJ(()=>{V0.running=!0,n(Q0,e)},!1);else n(Q0,e)}return Q0}function n(Y0,Q0){dJ(()=>{if(Q0===void 0)A(()=>Y0);O(Q0!==void 0?"errored":V?"ready":"unresolved"),u(Q0);for(let e of L.keys())e.decrement();L.clear()},!1)}function i(){let Y0=hQ&&Zz(hQ),Q0=M(),e=N();if(e!==void 0&&!q)throw e;if(g1&&!g1.user&&Y0)ef(()=>{if(h(),q){if(Y0.resolved&&V0&&B)V0.promises.add(q);else if(!L.has(Y0))Y0.increment(),L.add(Y0)}});return Q0}function P(Y0=!0){if(Y0!==!1&&U)return;U=!1;let Q0=f?f():Y;if(B=V0&&V0.running,Q0==null||Q0===!1){S(q,QJ(M));return}if(V0&&q)V0.promises.delete(q);let e,v=H!==NB?H:QJ(()=>{try{return X(Q0,{value:M(),refetching:Y0})}catch(j0){e=j0}});if(e!==void 0){S(q,void 0,HH(e),Q0);return}else if(!eC(v))return S(q,v,void 0,Q0),v;if(q=v,"v"in v){if(v.s===1)S(q,v.v,void 0,Q0);else S(q,void 0,HH(v.v),Q0);return v}return U=!0,queueMicrotask(()=>U=!1),dJ(()=>{O(V?"refreshing":"pending"),I()},!1),v.then((j0)=>S(v,j0,void 0,Q0),(j0)=>S(v,void 0,HH(j0),Q0))}Object.defineProperties(i,{state:{get:()=>R()},error:{get:()=>N()},loading:{get(){let Y0=R();return Y0==="pending"||Y0==="refreshing"}},latest:{get(){if(!V)return i();let Y0=N();if(Y0&&!q)throw Y0;return M()}}});let a=i0;if(f)ef(()=>(a=i0,P(!1)));else P(!1);return[i,{refetch:(Y0)=>zg(a,()=>P(Y0)),mutate:A}]}function UH(J){return dJ(J,!1)}function QJ(J){if(!OX&&g1===null)return J();let z=g1;g1=null;try{if(OX)return OX.untrack(J);return J()}finally{g1=z}}function GJ(J,z,Z){let Y=Array.isArray(J),X,Q=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(Q)return Q=!1,q;let j=QJ(()=>z(H,X,q));return X=H,j}}function r1(J){E0(()=>QJ(J))}function k1(J){if(i0===null)console.warn("cleanups created outside a `createRoot` or `render` will never be run");else if(i0.cleanups===null)i0.cleanups=[J];else i0.cleanups.push(J);return J}function Jg(J,z){if(wQ||(wQ=Symbol("error")),i0=NX(void 0,void 0,!0),i0.context={...i0.context,[wQ]:[z]},V0&&V0.running)V0.sources.add(i0);try{return J()}catch(Z){mQ(Z)}finally{i0=i0.owner}}function fH(){return g1}function zg(J,z){let Z=i0,Y=g1;i0=J,g1=null;try{return dJ(z,!0)}catch(X){mQ(X)}finally{i0=Z,g1=Y}}function Zg(J){if(V0&&V0.running)return J(),V0.done;let z=g1,Z=i0;return Promise.resolve().then(()=>{g1=z,i0=Z;let Y;if(AX||hQ)Y=V0||(V0={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 dJ(J,!1),g1=i0=null,Y?Y.done:void 0})}function z5(J,z){let Z=NX(()=>QJ(()=>{return Object.assign(J,{[sC]:!0}),J(z)}),void 0,!0,0);return Z.props=z,Z.observers=null,Z.observerSlots=null,Z.name=J.name,Z.component=J,CY(Z),Z.tValue!==void 0?Z.tValue:Z.value}function G5(J){if(i0){if(i0.sourceMap)i0.sourceMap.push(J);else i0.sourceMap=[J];J.graph=i0}if(yz.afterRegisterGraph)yz.afterRegisterGraph(J)}function az(J,z){let Z=Symbol("context");return{id:Z,Provider:qg(Z,z),defaultValue:J}}function Zz(J){let z;return i0&&i0.context&&(z=i0.context[J.id])!==void 0?z:J.defaultValue}function Yg(J){let z=U0(J),Z=U0(()=>gB(z()),void 0,{name:"children"});return Z.toArray=()=>{let Y=Z();return Array.isArray(Y)?Y:Y!=null?[Y]:[]},Z}function q5(){let J=V0&&V0.running;if(this.sources&&(J?this.tState:this.state))if((J?this.tState:this.state)===zz)CY(this);else{let z=XJ;XJ=null,dJ(()=>BH(this),!1),XJ=z}if(g1){let z=this.observers;if(!z||z[z.length-1]!==g1){let Z=z?z.length:0;if(!g1.sources)g1.sources=[this],g1.sourceSlots=[Z];else g1.sources.push(this),g1.sourceSlots.push(Z);if(!z)this.observers=[g1],this.observerSlots=[g1.sources.length-1];else z.push(g1),this.observerSlots.push(g1.sources.length-1)}}if(J&&V0.sources.has(this))return this.tValue;return this.value}function kB(J,z,Z){let Y=V0&&V0.running&&V0.sources.has(J)?J.tValue:J.value;if(!J.comparator||!J.comparator(Y,z)){if(V0){let X=V0.running;if(X||!Z&&V0.sources.has(J))V0.sources.add(J),J.tValue=z;if(!X)J.value=z}else J.value=z;if(J.observers&&J.observers.length)dJ(()=>{for(let X=0;X<J.observers.length;X+=1){let Q=J.observers[X],q=V0&&V0.running;if(q&&V0.disposed.has(Q))continue;if(q?!Q.tState:!Q.state){if(Q.pure)XJ.push(Q);else gJ.push(Q);if(Q.observers)j5(Q)}if(!q)Q.state=zz;else Q.tState=zz}if(XJ.length>1e6){if(XJ=[],pC)throw Error("Potential Infinite Loop Detected.");throw Error()}},!1)}return z}function CY(J){if(!J.fn)return;aZ(J);let z=WH;if(Z5(J,V0&&V0.running&&V0.sources.has(J)?J.tValue:J.value,z),V0&&!V0.running&&V0.sources.has(J))queueMicrotask(()=>{dJ(()=>{V0&&(V0.running=!0),g1=i0=J,Z5(J,J.tValue,z),g1=i0=null},!1)})}function Z5(J,z,Z){let Y,X=i0,Q=g1;g1=i0=J;try{Y=J.fn(z)}catch(q){if(J.pure)if(V0&&V0.running)J.tState=zz,J.tOwned&&J.tOwned.forEach(aZ),J.tOwned=void 0;else J.state=zz,J.owned&&J.owned.forEach(aZ),J.owned=null;return J.updatedAt=Z+1,mQ(q)}finally{g1=Q,i0=X}if(!J.updatedAt||J.updatedAt<=Z){if(J.updatedAt!=null&&"observers"in J)kB(J,Y,!0);else if(V0&&V0.running&&J.pure){if(!V0.sources.has(J))J.value=Y;V0.sources.add(J),J.tValue=Y}else J.value=Y;J.updatedAt=Z}}function NX(J,z,Z,Y=zz,X){let Q={fn:J,state:Y,updatedAt:null,owned:null,sources:null,sourceSlots:null,cleanups:null,value:z,owner:i0,context:i0?i0.context:null,pure:Z};if(V0&&V0.running)Q.state=0,Q.tState=Y;if(i0===null)console.warn("computations created outside a `createRoot` or `render` will never be disposed");else if(i0!==tC)if(V0&&V0.running&&i0.pure)if(!i0.tOwned)i0.tOwned=[Q];else i0.tOwned.push(Q);else if(!i0.owned)i0.owned=[Q];else i0.owned.push(Q);if(X&&X.name)Q.name=X.name;if(OX&&Q.fn){let q=Q.fn,[H,j]=p(void 0,{equals:!1}),B=OX.factory(q,j);k1(()=>B.dispose());let U,V=()=>Zg(j).then(()=>{if(U)U.dispose(),U=void 0});Q.fn=(f)=>{if(H(),V0&&V0.running){if(!U)U=OX.factory(q,V);return U.track(f)}return B.track(f)}}return yz.afterCreateOwner&&yz.afterCreateOwner(Q),Q}function vQ(J){let z=V0&&V0.running;if((z?J.tState:J.state)===0)return;if((z?J.tState:J.state)===PQ)return BH(J);if(J.suspense&&QJ(J.suspense.inFallback))return J.suspense.effects.push(J);let Z=[J];while((J=J.owner)&&(!J.updatedAt||J.updatedAt<WH)){if(z&&V0.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,Q=Z[Y+1];while((X=X.owner)&&X!==Q)if(V0.disposed.has(X))return}if((z?J.tState:J.state)===zz)CY(J);else if((z?J.tState:J.state)===PQ){let X=XJ;XJ=null,dJ(()=>BH(J,Z[0]),!1),XJ=X}}}function dJ(J,z){if(XJ)return J();let Z=!1;if(!z)XJ=[];if(gJ)Z=!0;else gJ=[];WH++;try{let Y=J();return Xg(Z),Y}catch(Y){if(!Z)gJ=null;XJ=null,mQ(Y)}}function Xg(J){if(XJ){if(AX&&V0&&V0.running)Qg(XJ);else H5(XJ);XJ=null}if(J)return;let z;if(V0){if(!V0.promises.size&&!V0.queue.size){let{sources:Y,disposed:X}=V0;gJ.push.apply(gJ,V0.effects),z=V0.resolve;for(let Q of gJ)"tState"in Q&&(Q.state=Q.tState),delete Q.tState;V0=null,dJ(()=>{for(let Q of X)aZ(Q);for(let Q of Y){if(Q.value=Q.tValue,Q.owned)for(let q=0,H=Q.owned.length;q<H;q++)aZ(Q.owned[q]);if(Q.tOwned)Q.owned=Q.tOwned;delete Q.tValue,delete Q.tOwned,Q.tState=0}J5(!1)},!1)}else if(V0.running){V0.running=!1,V0.effects.push.apply(V0.effects,gJ),gJ=null,J5(!0);return}}let Z=gJ;if(gJ=null,Z.length)dJ(()=>Q5(Z),!1);else yz.afterUpdate&&yz.afterUpdate();if(z)z()}function H5(J){for(let z=0;z<J.length;z++)vQ(J[z])}function Qg(J){for(let z=0;z<J.length;z++){let Z=J[z],Y=V0.queue;if(!Y.has(Z))Y.add(Z),AX(()=>{Y.delete(Z),dJ(()=>{V0.running=!0,vQ(Z)},!1),V0&&(V0.running=!1)})}}function Gg(J){let z,Z=0;for(z=0;z<J.length;z++){let Y=J[z];if(!Y.user)vQ(Y);else J[Z++]=Y}if(w1.context){if(w1.count){w1.effects||(w1.effects=[]),w1.effects.push(...J.slice(0,Z));return}CB()}if(w1.effects&&(w1.done||!w1.count))J=[...w1.effects,...J],Z+=w1.effects.length,delete w1.effects;for(z=0;z<Z;z++)vQ(J[z])}function BH(J,z){let Z=V0&&V0.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 Q=Z?X.tState:X.state;if(Q===zz){if(X!==z&&(!X.updatedAt||X.updatedAt<WH))vQ(X)}else if(Q===PQ)BH(X,z)}}}function j5(J){let z=V0&&V0.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=PQ;else Y.state=PQ;if(Y.pure)XJ.push(Y);else gJ.push(Y);Y.observers&&j5(Y)}}}function aZ(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 Q=X.pop(),q=Z.observerSlots.pop();if(Y<X.length)Q.sourceSlots[q]=Y,X[Y]=Q,Z.observerSlots[Y]=q}}if(J.tOwned){for(z=J.tOwned.length-1;z>=0;z--)aZ(J.tOwned[z]);delete J.tOwned}if(V0&&V0.running&&J.pure)B5(J,!0);else if(J.owned){for(z=J.owned.length-1;z>=0;z--)aZ(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(V0&&V0.running)J.tState=0;else J.state=0;delete J.sourceMap}function B5(J,z){if(!z)J.tState=0,V0.disposed.add(J);if(J.owned)for(let Z=0;Z<J.owned.length;Z++)B5(J.owned[Z])}function HH(J){if(J instanceof Error)return J;return Error(typeof J==="string"?J:"Unknown error",{cause:J})}function Y5(J,z,Z){try{for(let Y of z)Y(J)}catch(Y){mQ(Y,Z&&Z.owner||null)}}function mQ(J,z=i0){let Z=wQ&&z&&z.context&&z.context[wQ],Y=HH(J);if(!Z)throw Y;if(gJ)gJ.push({fn(){Y5(Y,Z,z)},state:zz});else Y5(Y,Z,z)}function gB(J){if(typeof J==="function"&&!J.length)return gB(J());if(Array.isArray(J)){let z=[];for(let Z=0;Z<J.length;Z++){let Y=gB(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 qg(J,z){return function(Y){let X;return $z(()=>X=QJ(()=>{return i0.context={...i0.context,[J]:Y.value},Yg(()=>Y.children)}),void 0,z),X}}function X5(J){for(let z=0;z<J.length;z++)J[z]()}function jg(J,z,Z={}){let Y=[],X=[],Q=[],q=0,H=z.length>1?[]:null;return k1(()=>X5(Q)),()=>{let j=J()||[],B=j.length,U,V;return j[VH],QJ(()=>{let L,M,A,N,u,h,I,R,O;if(B===0){if(q!==0)X5(Q),Q=[],Y=[],X=[],q=0,H&&(H=[]);if(Z.fallback)Y=[Hg],X[0]=RY((S)=>{return Q[0]=S,Z.fallback()}),q=1}else if(q===0){X=Array(B);for(V=0;V<B;V++)Y[V]=j[V],X[V]=RY(f);q=B}else{A=Array(B),N=Array(B),H&&(u=Array(B));for(h=0,I=Math.min(q,B);h<I&&Y[h]===j[h];h++);for(I=q-1,R=B-1;I>=h&&R>=h&&Y[I]===j[R];I--,R--)A[R]=X[I],N[R]=Q[I],H&&(u[R]=H[I]);L=new Map,M=Array(R+1);for(V=R;V>=h;V--)O=j[V],U=L.get(O),M[V]=U===void 0?-1:U,L.set(O,V);for(U=h;U<=I;U++)if(O=Y[U],V=L.get(O),V!==void 0&&V!==-1)A[V]=X[U],N[V]=Q[U],H&&(u[V]=H[U]),V=M[V],L.set(O,V);else Q[U]();for(V=h;V<B;V++)if(V in A){if(X[V]=A[V],Q[V]=N[V],H)H[V]=u[V],H[V](V)}else X[V]=RY(f);X=X.slice(0,q=B),Y=j.slice(0)}return X});function f(L){if(Q[V]=L,H){let[M,A]=p(V,{name:"index"});return H[V]=A,z(j[V],M)}return z(j[V])}}}function V5(J,z){if(Bg){if(w1.context){let Z=w1.context;CB(_C());let Y=z5(J,z||{});return CB(Z),Y}}return z5(J,z||{})}function GH(){return!0}function RB(J){return!(J=typeof J==="function"?J():J)?{}:J}function Wg(){for(let J=0,z=this.length;J<z;++J){let Z=this[J]();if(Z!==void 0)return Z}}function KH(...J){let z=!1;for(let q=0;q<J.length;q++){let H=J[q];z=z||!!H&&Sz in H,J[q]=typeof H==="function"?(z=!0,U0(H)):H}if(oC&&z)return new Proxy({get(q){for(let H=J.length-1;H>=0;H--){let j=RB(J[H])[q];if(j!==void 0)return j}},has(q){for(let H=J.length-1;H>=0;H--)if(q in RB(J[H]))return!0;return!1},keys(){let q=[];for(let H=0;H<J.length;H++)q.push(...Object.keys(RB(J[H])));return[...new Set(q)]}},Vg);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 U=j[B];if(U==="__proto__"||U==="constructor")continue;let V=Object.getOwnPropertyDescriptor(H,U);if(!Y[U])Y[U]=V.get?{enumerable:!0,configurable:!0,get:Wg.bind(Z[U]=[V.get.bind(H)])}:V.value!==void 0?V:void 0;else{let f=Z[U];if(f){if(V.get)f.push(V.get.bind(H));else if(V.value!==void 0)f.push(()=>V.value)}}}}let X={},Q=Object.keys(Y);for(let q=Q.length-1;q>=0;q--){let H=Q[q],j=Y[H];if(j&&j.get)Object.defineProperty(X,H,j);else X[H]=j?j.value:void 0}return X}function o0(J){let z="fallback"in J&&{fallback:()=>J.fallback};return U0(jg(()=>J.each,J.children,z||void 0),void 0,{name:"value"})}function z0(J){let z=J.keyed,Z=U0(()=>J.when,void 0,{name:"condition value"}),Y=z?Z:U0(Z,void 0,{equals:(X,Q)=>!X===!Q,name:"condition"});return U0(()=>{let X=Y();if(X){let Q=J.children;return typeof Q==="function"&&Q.length>0?QJ(()=>Q(z?X:()=>{if(!QJ(Y))throw Ug("Show");return Z()})):Q}return J.fallback},void 0,{name:"value"})}function W5(J){let z;if(w1.context&&w1.load)z=w1.load(w1.getContextId());let[Z,Y]=p(z,{name:"errored"});return qH||(qH=new Set),qH.add(Y),k1(()=>qH.delete(Y)),U0(()=>{let X;if(X=Z()){let Q=J.fallback;if(typeof Q!=="function"||Q.length==0)console.error(X);return typeof Q==="function"&&Q.length?QJ(()=>Q(X,()=>Y())):Q}return Jg(()=>J.children,Y)},void 0,{name:"value"})}var w1,pC=!0,rC=(J,z)=>J===z,Sz,oC,VH,sC,jH,wQ=null,Q5,zz=1,PQ=2,tC,NB,i0=null,V0=null,AX=null,OX=null,g1=null,XJ=null,gJ=null,WH=0,yz,md,J5,hQ,Hg,Bg=!1,Vg,Ug=(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.`,qH,U5;var H1=C(()=>{w1={context:void 0,registry:void 0,effects:void 0,done:!1,getContextId(){return tf(this.context.count)},getNextContextId(){return tf(this.context.count++)}};Sz=Symbol("solid-proxy"),oC=typeof Proxy==="function",VH=Symbol("solid-track"),sC=Symbol("solid-dev-component"),jH={equals:rC},Q5=H5,tC={},NB={},yz={afterUpdate:null,afterCreateOwner:null,afterCreateSignal:null,afterRegisterGraph:null};[md,J5]=p(!1);Hg=Symbol("fallback");Vg={get(J,z,Z){if(z===Sz)return Z;return J.get(z)},has(J,z){if(z===Sz)return!0;return J.has(z)},set:GH,deleteProperty:GH,getOwnPropertyDescriptor(J,z){return{configurable:!0,enumerable:!0,get(){return J.get(z)},set:GH,deleteProperty:GH}},ownKeys(J){return J.keys()}};U5={hooks:yz,writeSignal:kB,registerGraph:G5};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 fg}from"child_process";function bB(J,z,Z,Y){if(Z)return J+Y.slowRetryMs;return z+Math.max(Y.minIntervalMs,(z-J)*5)}function IB(J,z){return!J.inFlight&&z>=J.nextAllowedAt}function f5(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 K5(J,z,Z){if(z<=0)return Math.min(J,Z);return Math.min(J*2**z,Z)}function RX(J,z,Z,Y){let X=Date.now();if(!IB(J,X))return!1;J.inFlight=!0;let Q=new AbortController,q=setTimeout(()=>Q.abort(),z.timeoutMs);return(async()=>{let H,j=!1;try{H=await Z(Q.signal),j=!0}catch{}clearTimeout(q);let B=Q.signal.aborted;if(J.nextAllowedAt=bB(X,Date.now(),B,z),J.inFlight=!1,j&&!B)Y(H)})(),!0}function LZ(J,z,Z){return new Promise((Y)=>{let X="",Q=!1,q=(j)=>{if(Q)return;Q=!0,Y({status:j,stdout:X})},H=fg(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 CX=()=>{};function Kg(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 Dg(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 Lg(J){if(!J||J.length===0)return"none";let z=!1,Z=!1;for(let Y of J){let X=Dg(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 L5(J,z){if(!J||typeof J.number!=="number")return null;return{provider:"github",lifecycle:Kg(J.state,J.reviewDecision),checkState:Lg(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 LH(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 DH(J,z){return z.some((Z)=>J.includes(Z))}function SB(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(DH(z,Ag))return{kind:"empty"};if(DH(z,Fg))return{kind:"error",error:"no-remote"};if(DH(z,Mg))return{kind:"error",error:"auth"};if(DH(z,Og))return{kind:"error",error:"network"};return{kind:"empty"}}function cQ(J,z,Z,Y,X=Math.random){let Q=(H)=>Z+f5(H,Y.jitterRatio,X);if(J.kind==="pr")return{nextAllowedAt:Q(J.settled?Y.settledMs:Y.tickMs),failures:0};if(J.kind==="empty")return{nextAllowedAt:Q(Y.noPrMs),failures:0};if(J.error==="no-remote")return{nextAllowedAt:Q(Y.noRemoteMs),failures:0};let q=z+1;return{nextAllowedAt:Q(K5(Y.failureBaseMs,q-1,Y.failureCapMs)),failures:q}}var D5="number,url,title,state,baseRefName,headRefName,reviewDecision,mergeable,statusCheckRollup",Fg,Mg,Og,Ag;var yB=C(()=>{CX();Fg=["none of the git remotes","no git remote","to use github cli in a github repository","not a github repository"],Mg=["gh auth login","authentication required","not logged in","http 401","bad credentials","requires authentication"],Og=["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"],Ag=["no pull requests found","no open pull requests","no pull request found"]});var TB,xB,EB,uB="DIRTY_WORKTREE",wB,PB;var hB=C(()=>{TB=class TB 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"}};xB=class xB extends Error{constructor(J){super(`task not found: ${J}`);this.name="TaskNotFoundError"}};EB=class EB extends Error{constructor(){super("cannot delete a main task; remove the repo from saved repos instead");this.name="CannotDeleteMainTaskError"}};wB=class wB extends Error{taskId;constructor(J){super(`${uB}: task ${J} worktree has uncommitted or untracked changes`);this.taskId=J;this.name="DirtyWorktreeError"}};PB=class PB 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 F5;var M5=C(()=>{F5=["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{isAbsolute as Ng,join as Rg,resolve as O5}from"path";function A5(J){let z=J.trim();if(!z)return"default";if(z.replace(/\/+$/,"")===vB)return"nextToProject";return"custom"}function mB(J){let z=J.trim();return z===FZ||z.startsWith(`${FZ}/`)}function cB(J,z){if(typeof J!=="string")return null;let Z=J.trim();if(!Z)return null;if(mB(Z)){if(!z)return null;let Q=Z.slice(FZ.length).replace(/^\/+/,"");return O5(z,Q)}let Y=EJ();if(Z==="~")return Y;let X=Z.startsWith("~/")?Rg(Y,Z.slice(2)):Z;return Ng(X)?X:O5(Y,X)}function N5(J){let z=NJ()[_Z];return cB(typeof z==="string"?z:null,J)}var _Z="worktree.basePath",FH="worktree.basePath.custom",FZ="$project_dir",vB;var dB=C(()=>{o1();mz();vB=`${FZ}/..`});import{createHash as Cg}from"crypto";import C5 from"fs";import kJ from"path";function Ig(J){return N5(J)??kJ.join(DJ(),g5)}function Sg(){return kJ.join(DJ(),g5)}function k5(J){if(!kJ.isAbsolute(J))throw Error(`worktreeRootFor: repo must be an absolute path, got: ${J}`);return kJ.join(Ig(J),E5(J))}function b5(J){if(!kJ.isAbsolute(J))throw Error(`managedWorktreeRootsFor: repo must be an absolute path, got: ${J}`);let z=k5(J),Z=kJ.join(Sg(),E5(J));return[...z===Z?[z]:[z,Z],...bg.map((X)=>kJ.join(J,X))]}function I5(J,z){if(!z||/[/\\\0]/.test(z))throw Error(`worktreePathFor: invalid slug: ${JSON.stringify(z)}`);return kJ.join(k5(J),z)}async function S5(J){if(JJ(J)){let Z=Oz(J)?.basePath;if(!Z)return[];return sY(J).readdir(T5(Z))}let z=new Set;for(let Z of b5(J))try{for(let Y of C5.readdirSync(Z,{withFileTypes:!0}))if(Y.isDirectory())z.add(Y.name)}catch{}return[...z]}function nB(J,z){if(!kJ.isAbsolute(J)||!kJ.isAbsolute(z))return null;let Z=R5(z);for(let Y of b5(J)){let X=R5(Y),Q=kJ.relative(X,Z);if(Q!==""&&!Q.startsWith("..")&&!kJ.isAbsolute(Q))return Y}return null}function y5(J,z){return nB(J,z)!==null}function T5(J){return`${yg(J)}/.kobe/worktrees`}function x5(J,z){if(!z||/[/\\\0]/.test(z))throw Error(`remoteWorktreePathFor: invalid slug: ${JSON.stringify(z)}`);return`${T5(J)}/${z}`}function yg(J){return J.length>1&&J.endsWith("/")?J.replace(/\/+$/,""):J}function R5(J){try{return C5.realpathSync(J)}catch{return kJ.resolve(J)}}function E5(J){let Z=(kJ.basename(J)||"repo").replace(/[^a-zA-Z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"repo",Y=Cg("sha1").update(kJ.resolve(J)).digest("hex").slice(0,12);return`${Z}-${Y}`}var g5="worktrees",gg=".kobe/worktrees",kg=".claude/worktrees",bg;var iB=C(()=>{o1();sJ();I1();dB();bg=[gg,kg]});class lB{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??F5,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 Q=`${Y}-v${X}`;if(!z.has(Q))return this.addPending(J,Q),Q}}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 S5(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 u5=C(()=>{M5();iB()});var P5={};X1(P5,{PLACEHOLDER_TASK_TITLE:()=>_z,Orchestrator:()=>MH});import{realpathSync as Tg}from"fs";import{basename as xg,resolve as Eg}from"path";function w5(J){return Oz(J)?.basePath??J}class MH{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 lB((Q)=>this.store.list().filter((q)=>q.repo===Q&&q.kind!=="main").map((q)=>{return q.worktreePath.match(/([^/\\]+)[/\\]*$/)?.[1]??""}).filter((q)=>q.length>0));let[z,Z]=p(this.store.list());this.tasksAcc=z,this.setTasks=(Q)=>Z(()=>Q);let[Y,X]=p(null);this.activeTaskAcc=Y,this.setActiveTaskSig=(Q)=>X(()=>Q),this.unsubscribeStore=this.store.subscribe((Q)=>{this.setTasks(Q.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??_z).trim()||_z,Z=await this.store.create({repo:J.repo,title:z,branch:J.branch??"",worktreePath:"",status:"backlog",kind:"task",vendor:J.vendor??YJ,...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}=dQ(J),Y=this.store.list().find((q)=>q.kind==="main"&&dQ(q.repo).key===Z);if(Y)return Y;let X=this.mainTaskLocks.get(Z);if(X)return X;let Q=(async()=>{let q=pJ(E1("lastSelectedVendor"),oJ());return await this.store.create({repo:z,title:ug(z),branch:"",worktreePath:w5(z),status:"backlog",kind:"main",vendor:q})})();this.mainTaskLocks.set(Z,Q);try{return await Q}finally{this.mainTaskLocks.delete(Z)}}async ensureWorktree(J){let z=this.requireTask(J);if(z.kind==="main")return w5(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||XH(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(Q){throw this.slugs.cancel(J.repo,z),Q}try{await this.store.update(J.id,{worktreePath:X.path,branch:Z})}catch(Q){throw await this.rollbackWorktree(X.path),this.slugs.cancel(J.repo,z),Q}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!==XH(_z,J.id))return;let Z=XH(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 TB(Z.status,z,Z.id);await this.store.update(Z.id,{status:z})}async setPRStatus(J,z){let Z=this.requireTask(J);if(LH(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 EB;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 wB(Z.id)}try{await this.worktrees.remove(Z.worktreePath,{force:Y})}catch(X){throw new PB(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=dQ(J).key;for(let Z of RJ())if(dQ(Z).key===z)Aj(Z);for(let Z of this.store.list()){if(Z.kind!=="main")continue;if(dQ(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)=>gX(Y.worktreePath)));return z.filter((Y)=>!Z.has(gX(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=gX(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&&gX(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)=>gX(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 Q=J.branch?.trim()||X.branch,q=(J.title??xg(X.path)).trim()||_z;return this.store.create({repo:J.repo,title:q,branch:Q,worktreePath:X.path,status:"backlog",kind:"task",vendor:J.vendor??YJ})}pendingBaseRefs=new Map;adoptLocks=new Map;requireTask(J){let z=this.store.get(J);if(!z)throw new xB(String(J));return z}}function ug(J){let z=J.split(/[/\\]/).filter(Boolean);return z.length>0?z[z.length-1]??J:J}function dQ(J){let z=qZ(J);return{repo:z,key:JJ(z)?z:gX(z)}}function gX(J){try{return Tg(J)}catch{return Eg(J)}}var _z="(new task)";var nQ=C(()=>{H1();yB();I1();Uz();s1();hB();u5()});async function wg(J,z=h5){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 Q of Y.split(`
38
+ `)){let[q,H,j]=Q.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 Pg(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 hg(J){let{code:z,stdout:Z}=await J.capture(["show-window-options","-g","automatic-rename"]);return z===0&&/\boff\b/.test(Z)}async function vg(J,z,Z,Y){return await Y.run(["rename-window","-t",`=${J}:${z}`,"--",Z])===0}async function v5(J,z=mg){let Z=0,Y=null,X=async(Q,q)=>{if(q.autoRename==="1")return!1;if(q.autoRename==="0"){if(Y===null)Y=await hg(z.runner);if(!Y)return!0}return Pg(Q,q.index,z.runner)};for(let Q of J.listTasks()){if(Q.archived||Q.kind==="main"||!Q.worktreePath)continue;let q=T1(Q.id),H=await wg(q,z.runner);if(H.length===0)continue;let j=H.reduce((U,V)=>Math.min(U,V.index),Number.POSITIVE_INFINITY),B=Q.vendor??YJ;for(let U of H)try{if(await X(q,U))continue;let V=U.sessionId?await z.titleFromSessionId(B,U.sessionId):U.index===j?await z.titleFromWorktree(Q.worktreePath,B):"";if(V&&await vg(q,U.index,V,z.runner))Z++}catch{}}return Z}var h5,mg;var m5=C(()=>{QH();S1();Uz();h5={capture:S0,run:w0};mg={runner:h5,titleFromSessionId:sf,titleFromWorktree:MX}});function d5(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 c5(J,z,Z=new Date){let Y=d5(z);return`[${Z.toISOString()}] daemon ${J}: ${Y.stack??`${Y.name}: ${Y.message}`}
39
+ `}function cg(J,z,Z=new Date){let Y=d5(z);return`[${Z.toISOString()}] daemon error [${J}]: ${Y.stack??`${Y.name}: ${Y.message}`}
40
+ `}function u1(J,z){process.stderr.write(cg(J,z))}function dg(J,z,Z=new Date){return`[${Z.toISOString()}] daemon [${J}]: ${z}
41
+ `}function pz(J,z){process.stderr.write(dg(J,z))}function n5(J=(z)=>process.stderr.write(z)){if($B||aB)return;$B=(z)=>J(c5("unhandledRejection",z)),aB=(z)=>J(c5("uncaughtException",z)),process.on("unhandledRejection",$B),process.on("uncaughtException",aB)}var $B,aB;async function ng(J,z=MX){let Z=[];for(let Y of J.listTasks()){if(Y.archived||Y.title!==_z||!Y.worktreePath)continue;try{let X=await z(Y.worktreePath,Y.vendor??YJ);if(!X)continue;let Q=J.getTask(Y.id);if(!Q||Q.title!==_z)continue;await J.setTitle(Y.id,X),Z.push({id:Y.id,title:X})}catch(X){u1("auto-title-poller",X)}}return Z}function i5(J,z=_B,Z){if(z<=0)return()=>{};let Y=!1,Q=setInterval(()=>{if(Z&&!Z())return;if(Y)return;Y=!0,ng(J).then(()=>v5(J)).catch((q)=>u1("auto-title-poller",q)).finally(()=>{Y=!1})},z);return Q.unref?.(),()=>clearInterval(Q)}var _B=4000;var l5=C(()=>{QH();nQ();m5();Uz()});class pB{socket;highWaterMark;queue=[];queuedBytes=0;paused=!1;draining=!1;droppedFrames=0;constructor(J,z={}){this.socket=J,this.highWaterMark=z.highWaterMark??8388608}get isPaused(){return this.paused}get pendingBytes(){return this.queuedBytes}get pendingCount(){return this.queue.length}get dropped(){return this.droppedFrames}write(J,z){if(!this.paused){if(this.safeWrite(J))return;this.pause();return}this.enqueue({line:J,bytes:Buffer.byteLength(J),critical:z})}enqueue(J){if(this.queue.push(J),this.queuedBytes+=J.bytes,this.queuedBytes<=this.highWaterMark)return;let z=[];for(let 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 rB{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 $5(J,z,Z=uq){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 a5=C(()=>{SQ()});import{createHash as ig}from"crypto";import{homedir as lg}from"os";import pZ from"path";function rg(){return pZ.join(process.env.KOBE_HOME_DIR??lg(),".kobe")}function og(J){let Z=(pZ.basename(J)||"repo").replace(/[^a-zA-Z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"repo",Y=ig("sha1").update(pZ.resolve(J)).digest("hex").slice(0,12);return`${Z}-${Y}`}function sg(J){if(!pZ.isAbsolute(J))throw Error(`worktreeRootFor: repo must be an absolute path, got: ${J}`);return pZ.join(rg(),$g,og(J))}function tg(J){if(!pZ.isAbsolute(J))throw Error(`managedWorktreeRootsFor: repo must be an absolute path, got: ${J}`);return[sg(J),...pg.map((z)=>pZ.join(J,z))]}function rz(J){return J.length>1&&J.endsWith("/")?J.slice(0,-1):J}function _5(J,z){return z===J||z.startsWith(`${J}/`)}function p5(J,z){let Z=rz(z),Y,X=-1;for(let Q of J){if(!Q.worktreePath)continue;let q=rz(Q.worktreePath);if(_5(q,Z)&&q.length>X)X=q.length,Y=Q.id}return Y}function r5(J,z){let Z=rz(z);for(let Y of J)if(Y.worktreePath&&rz(Y.worktreePath)===Z)return Y.id;return}function oB(J,z){let Z=rz(z),Y,X=-1;for(let Q of J){if(!Q.repo)continue;let q=rz(Q.repo);if(_5(q,Z)&&q.length>X)X=q.length,Y=q}return Y}function o5(J,z){let Z=rz(z),Y=new Set,X=new Set;for(let Q of J){if(Q.repo)Y.add(rz(Q.repo));if(Q.worktreePath)X.add(rz(Q.worktreePath))}for(let Q of Y)for(let q of tg(Q).map(rz)){let H=`${q}/`;if(!Z.startsWith(H))continue;let B=Z.slice(H.length).split("/")[0];if(!B)continue;let U=`${H}${B}`;if(X.has(U))return;return{repo:Q,worktreePath:U}}return}var $g="worktrees",ag=".kobe/worktrees",_g=".claude/worktrees",pg;var sB=C(()=>{pg=[ag,_g]});function iQ(J){if(!J||typeof J!=="object"||Array.isArray(J))return{};return J}function D1(J,z){let Z=J[z];if(typeof Z!=="string"||Z.length===0)throw Error(`${z} is required`);return Z}function bJ(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 lQ(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 kX(J,z){let Z=bJ(J,z);return Z&&Z.trim().length>0?Z:void 0}function tB(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 s5;var t5=C(()=>{Uz();nz();s5=[{name:"task.list",handle(J,z){return{tasks:z.orch.listTasks().map(Jz)}}},{name:"task.get",handle(J,z){let Z=D1(J,"taskId"),Y=z.orch.getTask(Z);if(!Y)throw Error(`task not found: ${Z}`);return{task:Jz(Y)}}},{name:"task.create",async handle(J,z){let Z=D1(J,"repo"),Y=await z.orch.createTask({repo:Z,title:bJ(J,"title"),branch:bJ(J,"branch"),baseRef:bJ(J,"baseRef"),vendor:kX(J,"vendor"),modelEffort:bJ(J,"effort")});return{taskId:Y.id,task:Jz(Y)}}},{name:"task.archive",async handle(J,z){let Z=D1(J,"taskId");return await z.orch.setArchived(Z,lQ(J,"archived")),{}}},{name:"task.rename",async handle(J,z){let Z=D1(J,"taskId");return await z.orch.setTitle(Z,D1(J,"title")),{}}},{name:"task.setBranch",async handle(J,z){let Z=D1(J,"taskId");return await z.orch.setBranch(Z,D1(J,"branch")),{}}},{name:"task.setVendor",async handle(J,z){let Z=D1(J,"taskId"),Y=kX(J,"vendor");if(!Y)throw Error("task.setVendor: vendor is required");return await z.orch.setVendor(Z,Y),{}}},{name:"task.delete",async handle(J,z){let Z=D1(J,"taskId");return await z.orch.deleteTask(Z,{force:lQ(J,"force")}),z.activity.clearTask(Z),{}}},{name:"task.pin",async handle(J,z){let Z=D1(J,"taskId");return await z.orch.setPinned(Z,lQ(J,"pinned")),{}}},{name:"task.move",async handle(J,z){let Z=D1(J,"taskId"),Y=D1(J,"direction");if(Y!=="up"&&Y!=="down")throw Error("direction must be up or down");return await z.orch.moveTask(Z,Y==="up"?-1:1),{}}},{name:"task.status",async handle(J,z){let Z=D1(J,"taskId"),Y=D1(J,"status");if(!$f(Y))throw Error("status must be a TaskStatus");let X=Y==="done"?z.orch.getTask(Z):void 0,Q=X?.status;if(await z.orch.setStatus(Z,Y),Y==="done"&&Q!=="done"&&X)try{let q=await z.issues.mirrorTaskDone(X.repo,Z);if(q)z.bus.publish("issue.snapshot",q)}catch(q){u1("issue-done-mirror",q)}return{}}},{name:"task.reorder",async handle(J,z){let Z=J.moves;if(!Array.isArray(Z)||Z.length===0)throw Error("moves must be a non-empty array");if(Z.length>500)throw Error("too many moves in one task.reorder batch (max 500)");let Y=Z.map((X)=>{if(typeof X!=="object"||X===null)throw Error("each move needs taskId and position");let Q=X,q=D1(Q,"taskId"),H=Q.position;if(typeof H!=="number"||!Number.isFinite(H))throw Error("position must be a finite number");return{taskId:q,position:H}});return await z.orch.reorderTasks(Y),{}}},{name:"task.ensureMain",async handle(J,z){let Z=D1(J,"repo"),Y=await z.orch.ensureMainTask(Z);return{task:Jz(Y)}}},{name:"project.forget",async handle(J,z){let Z=D1(J,"repo");return await z.orch.forgetProject(Z),{}}},{name:"task.ensureWorktree",async handle(J,z){let Z=D1(J,"taskId");z.bus.publish("task.jobs",{taskId:Z,kind:"ensureWorktree",phase:"running"});try{let Y=await z.orch.ensureWorktree(Z);return z.bus.publish("task.jobs",{taskId:Z,kind:"ensureWorktree",phase:"done"}),{worktreePath:Y}}catch(Y){throw z.bus.publish("task.jobs",{taskId:Z,kind:"ensureWorktree",phase:"error",error:Y instanceof Error?Y.message:String(Y)}),Y}}},{name:"task.setActive",async handle(J,z){let Z=bJ(J,"taskId")??null;return await z.orch.setActiveTask(Z),z.bus.publish("active-task",{taskId:Z}),{}}}]});var OH;var e5=C(()=>{OH=class OH 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 ZK={};X1(ZK,{GitWorktreeManager:()=>bX});import zK from"fs";import Tz from"path";class bX{execDeps;constructor(J=eg){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 OH(z,Z.cwd,X);return X}async create(J,z,Z,Y){let X=this.ctxFor(J);if(rZ("repo",X.dir),rZ("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(Tz.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?x5(z,J.slug):I5(J.repo,J.slug);return this.create(J.repo,J.branch,Z,J.baseRef)}async remove(J,z){rZ("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 Q=Y?["worktree","remove","--force",J]:["worktree","remove",J];await this.runGit(Z,Q,{cwd:X}),await this.runGit(Z,["worktree","prune"],{cwd:X,allowFail:!0})}async list(J){let z=this.ctxFor(J);rZ("repo",z.dir);let Z=await this.runGit(z.exec,["worktree","list","--porcelain"],{cwd:z.dir}),Y=eB(Z.stdout),X=[];for(let Q of Y){if(!Q.path)continue;let q=z.remote?JK(z.dir,Q.path):nB(J,Q.path);if(!q)continue;if(!Q.branch||Q.detached)continue;let H=$Q(q),j=$Q(Q.path),B=Tz.relative(H,j),U=Tz.join(q,B),V=await this.isDirty(Q.path);X.push({path:U,branch:Q.branch,head:Q.head??"",dirty:V})}return X}async listAll(J){let z=this.ctxFor(J);rZ("repo",z.dir);let Z=await this.runGit(z.exec,["worktree","list","--porcelain"],{cwd:z.dir}),Y=eB(Z.stdout),X=z.remote?z.dir:$Q(z.dir),Q=[];for(let q of Y){if(!q.path)continue;if(q.bare)continue;if(!q.branch||q.detached)continue;if((z.remote?q.path:$Q(q.path))===X)continue;let H=await this.isDirty(q.path);Q.push({path:q.path,branch:q.branch,head:q.head??"",dirty:H,kobeManaged:z.remote?JK(z.dir,q.path)!==null:y5(J,q.path),lastActivityMs:await this.lastActivityMs(z.exec,q.path)})}return Q.sort((q,H)=>H.lastActivityMs-q.lastActivityMs),Q}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 zK.statSync(z).mtimeMs}catch{}return 0}async isDirty(J){rZ("path",J);let z=this.execDeps.execForPath(J);return(await this.runGit(z,["status","--porcelain"],{cwd:J})).stdout.length>0}async currentBranch(J){rZ("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(rZ("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=eB(Z.stdout),X=(H)=>J.remote?H:$Q(H),Q=X(z),q=Y.find((H)=>H.path&&X(H.path)===Q);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=Tz.isAbsolute(Y)?Y:Tz.resolve(z,Y);return Tz.basename(X)===".git"?Tz.dirname(X):X}catch(Z){if(Z instanceof OH)return null;throw Z}}}function eB(J){let z=[],Z=null;for(let Y of J.split(`
42
+ `)){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 Q=X.slice(7);Z.branch=Q.startsWith("refs/heads/")?Q.slice(11):Q}else if(X==="detached")Z.detached=!0;else if(X==="bare")Z.bare=!0}if(Z)z.push(Z);return z}function JK(J,z){let Z=`${J.replace(/\/+$/,"")}/.kobe/worktrees`;return z===Z||z.startsWith(`${Z}/`)?Z:null}function rZ(J,z){if(!z||!Tz.isAbsolute(z))throw Error(`${J} must be an absolute path, got: ${JSON.stringify(z)}`)}function $Q(J){try{return zK.realpathSync(J)}catch{return Tz.resolve(J)}}var eg;var AH=C(()=>{sJ();I1();e5();iB();eg={execForRepo:sY,execForPath:Az,remoteBasePath(J){return Oz(J)?.basePath??null}}});import{statSync as Jk}from"fs";function Zk(J){try{let z=Jk(J);return z.birthtimeMs||z.mtimeMs}catch{return 0}}async function Yk(J,z){try{let Y=await Az(J).run(["git","ls-remote","--exit-code","--heads","origin",z],{cwd:J,signal:AbortSignal.timeout(zk)});if(Y.exitCode===0)return!0;if(Y.exitCode===2)return!1;return null}catch{return null}}async function Xk(){let J=RJ().filter((z)=>!Oz(z));return Promise.all(J.map(async(z)=>{let Z=await YK.listAll(z),Y=await Promise.all(Z.map(async(X)=>({...X,repo:z,createdAtMs:Zk(X.path),branchOnRemote:await Yk(X.path,X.branch)})));return{repo:z,worktrees:Y}}))}var zk=4000,YK,XK;var QK=C(()=>{sJ();AH();I1();sB();nz();YK=new bX;XK=[{name:"worktree.discoverAdoptable",async handle(J,z){let Z=D1(J,"repo");return{worktrees:await z.orch.discoverAdoptableWorktrees(Z)}}},{name:"worktree.adopt",async handle(J,z){let Z=await z.orch.adoptWorktree({repo:D1(J,"repo"),worktreePath:D1(J,"worktreePath"),branch:bJ(J,"branch"),vendor:kX(J,"vendor"),title:bJ(J,"title"),ifExists:bJ(J,"ifExists")==="return"?"return":"error"});return{task:Jz(Z)}}},{name:"worktree.reconcile",async handle(J,z){let Z=D1(J,"cwd"),Y=D1(J,"worktreePath"),X=oB(z.orch.listTasks(),Z)??oB(z.orch.listTasks(),Y);if(!X)return{adopted:!1};try{return{adopted:!0,taskId:(await z.orch.adoptWorktree({repo:X,worktreePath:Y,ifExists:"return"})).id}}catch(Q){return u1("worktree-created",Q),{adopted:!1}}}},{name:"worktree.archiveRemoved",async handle(J,z){let Z=D1(J,"worktreePath"),Y=r5(z.orch.listTasks(),Z);if(!Y)return{archived:!1};try{return await z.orch.setArchived(Y,!0),{archived:!0,taskId:Y}}catch(X){return u1("worktree-removed",X),{archived:!1}}}},{name:"worktree.list",async handle(){return{projects:await Xk()}}},{name:"worktree.remove",async handle(J){let z=D1(J,"path"),Z=J.force===!0;return await YK.remove(z,{force:Z}),{removed:!0}}}]});function J8(J){return{message:J instanceof Error?J.message:String(J),name:J instanceof Error?J.name:void 0}}async function aQ(J,z,Z,Y){let X=J.get(z);if(!X)throw Error(`unknown daemon request: ${z}`);return X.handle(iQ(Z),Y)}function _Q(){let J=[{name:"hello",handle(z,Z){let Y=typeof z.protocolVersion==="number"?z.protocolVersion:Vz,X=typeof z.minProtocolVersion==="number"?z.minProtocolVersion:Y;if(!sq({localVersion:Vz,localMin:$Z,remoteVersion:Y,remoteMin:X}))throw Error(`daemon is protocol v${Vz} (min v${$Z}); this client is v${Y} (min v${X}). Upgrade your kobe.`);return{protocolVersion:Vz,minProtocolVersion:$Z,kobeVersion:a0,capabilities:[...DB],daemonPid:Z.daemon.pid,clientId:Z.clientId,tasks:Z.orch.listTasks().map(Jz)}}},{name:"daemon.status",handle(z,Z){return{daemonPid:Z.daemon.pid,kobeVersion:a0,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(),{}}},...s5,...XK,{name:"issue.list",async handle(z,Z){return Z.issues.list(D1(z,"repoRoot"))}},{name:"issue.mutate",async handle(z,Z){let Y=await Z.issues.mutate(D1(z,"repoRoot"),z.op);return Z.bus.publish("issue.snapshot",Y),Y}},{name:"session.deliver",async handle(z,Z){let Y=D1(z,"taskId"),X=D1(z,"text"),Q=bJ(z,"source");if(Q!==void 0&&Q!=="note"&&Q!=="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:Q??"dispatcher"}),{ok:!0}}},{name:"note.file",async handle(z,Z){let Y=D1(z,"taskId"),X=D1(z,"text"),Q=Z.orch.getTask(Y);if(!Q)throw Error(`task not found: ${Y}`);let q=Z.orch.listTasks().find((j)=>(j.kind??"task")==="main"&&j.repo===Q.repo&&!j.archived);if(!q||q.id===Q.id)return{ok:!0,routed:!1};let H=Q.title||Q.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=D1(z,"kind");if(!ZH(Y))throw Error(`unknown engine event kind: ${Y}`);let X=bJ(z,"taskId"),Q=bJ(z,"cwd");if(!X&&Q&&Y==="session-start"){let j=o5(Z.orch.listTasks(),Q);if(j)try{await Z.orch.adoptWorktree({repo:j.repo,worktreePath:j.worktreePath,ifExists:"return"})}catch(B){u1("worktree-autosync",B)}}let q=X??(Q?p5(Z.orch.listTasks(),Q):void 0);if(!q)return{};let H=tB(z);if(Z.activity.report(q,Y,H),Y==="turn-start")$5(Z.orch,q).then((j)=>{if(j==="moved")console.log(`[status-rules] task ${q} auto-moved backlog \u2192 in_progress`)}).catch((j)=>u1("status-rules",j));return{}}}];return new Map(J.map((z)=>[z.name,z]))}var NH=C(()=>{YH();a5();CJ();sB();t5();QK();nz()});import{execFile as Qk}from"child_process";import{mkdir as Gk,readFile as qk,realpath as GK,rename as Hk,stat as jk,writeFile as Bk}from"fs/promises";import{homedir as Vk}from"os";import{dirname as Wk,isAbsolute as Uk,join as fk,resolve as qK}from"path";import{promisify as Kk}from"util";function Dk(J){return(J instanceof Error?J.message:String(J)).includes("not a git repository")}function CH(J=process.env.KOBE_HOME_DIR??Vk()){return fk(J,".kobe","issues.json")}function jK(J){return typeof J==="string"&&HK.includes(J)}function Lk(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:jK(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 Fk(){return{version:1,repos:{}}}function Mk(){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 Ok(J){let{stdout:z}=await G8("git",["-C",J,"rev-parse","--git-common-dir"]),Z=z.trim();return GK(Uk(Z)?Z:qK(J,Z))}async function Ak(J){let{stdout:z}=await G8("git",["-C",J,"rev-parse","--show-toplevel"]);return z.trim()}async function Nk(J){let{stdout:z}=await G8("git",["-C",J,"worktree","list","--porcelain"]),Z=z.split(/\r?\n/).find((Y)=>Y.startsWith("worktree "))?.slice(9).trim();return Z?GK(Z):Ak(J)}async function z8(J){if(typeof J!=="string"||J.length===0)throw Error("repoRoot is required");let z=qK(J);if(!(await jk(z).catch(()=>null))?.isDirectory())throw Error("repoRoot does not exist");try{let[Y,X]=await Promise.all([Nk(z),Ok(z)]);return{repoRoot:Y,repoKey:X}}catch(Y){if(Dk(Y))throw Error("repoRoot is not a git repository");throw Y}}async function Z8(J){try{let z=JSON.parse(await qk(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 Q=X;Z[Y]={repoRoot:typeof Q.repoRoot==="string"?Q.repoRoot:"",nextId:typeof Q.nextId==="number"?Q.nextId:1,issues:Array.isArray(Q.issues)?Q.issues.map(Lk).filter((q)=>q!==null):[]}}return{version:1,repos:Z}}catch(z){if(z.code==="ENOENT")return Fk();throw z}}async function Y8(J,z){await Gk(Wk(J),{recursive:!0});let Z=`${J}.tmp`;await Bk(Z,`${JSON.stringify(z,null,2)}
43
+ `,"utf8"),await Hk(Z,J)}function X8(J,z){return{repoRoot:J,exists:z!==null,nextId:z?.nextId??1,issues:z?.issues??[]}}async function Q8(J,z){let Y=(RH.get(J)??Promise.resolve()).then(z),X=Y.then(()=>{return},()=>{return});return RH.set(J,X),X.then(()=>{if(RH.get(J)===X)RH.delete(J)}),Y}class gH{path;constructor(J=CH()){this.path=J}async list(J){let{repoRoot:z,repoKey:Z}=await z8(J);return Q8(this.path,async()=>{let Y=await Z8(this.path),X=Y.repos[Z]??null;if(X&&X.repoRoot!==z)X.repoRoot=z,await Y8(this.path,Y);return X8(z,X)})}async mirrorTaskDone(J,z){let{repoRoot:Z,repoKey:Y}=await z8(J);if(!z)return null;return Q8(this.path,async()=>{let X=await Z8(this.path),Q=X.repos[Y];if(!Q)return null;let q=Q.issues.find((H)=>H.taskId===z);if(!q||q.status==="done")return null;return q.status="done",Q.repoRoot=Z,await Y8(this.path,X),X8(Z,Q)})}async mutate(J,z){let{repoRoot:Z,repoKey:Y}=await z8(J);if(!z||typeof z!=="object"||Array.isArray(z)||typeof z.type!=="string")throw Error("missing op");return Q8(this.path,async()=>{let X=await Z8(this.path),Q=X.repos[Y];if(!Q)Q={repoRoot:Z,nextId:1,issues:[]},X.repos[Y]=Q;Q.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");Q.issues=[{id:Q.nextId,title:q.title,status:"open",created:Mk(),body:typeof q.body==="string"?q.body:""},...Q.issues],Q.nextId+=1}else if(q.type==="setStatus"){if(typeof q.id!=="number")throw Error("setStatus requires a numeric id");if(!jK(q.status))throw Error(`invalid status: must be one of ${HK.join(", ")}`);let H=Q.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=Q.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=Q.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=Q.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=Q.issues.filter((j)=>j.id!==q.id);if(H.length===Q.issues.length)throw Error(`no issue #${q.id}`);Q.issues=H}else throw Error(`unknown op type: ${q.type}`);return await Y8(this.path,X),X8(Z,Q)})}}var G8,HK,RH;var q8=C(()=>{G8=Kk(Qk),HK=["open","doing","hold","done"];RH=new Map});import{lstat as BK,readdir as Rk,realpath as Ck,stat as gk}from"fs/promises";import{join as kk,relative as bk,resolve as VK,sep as Ik}from"path";import{Readable as Sk}from"stream";function DK(J,z={}){let Z=z.entryType||z.type;if(Z==="both")Z=Yz.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&&!WK.includes(Z))throw Error(`readdirp: Invalid type passed. Use one of ${WK.join(", ")}`);return z.root=J,new j8(z)}var Yz,H8,KK="READDIRP_RECURSIVE_ERROR",yk,WK,Tk,xk,Ek=(J)=>yk.has(J.code),uk,UK=(J)=>!0,fK=(J)=>{if(J===void 0)return UK;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 UK},j8;var LK=C(()=>{Yz={FILE_TYPE:"files",DIR_TYPE:"directories",FILE_DIR_TYPE:"files_directories",EVERYTHING_TYPE:"all"},H8={root:".",fileFilter:(J)=>!0,directoryFilter:(J)=>!0,type:Yz.FILE_TYPE,lstat:!1,depth:2147483648,alwaysStat:!1,highWaterMark:4096};Object.freeze(H8);yk=new Set(["ENOENT","EPERM","EACCES","ELOOP",KK]),WK=[Yz.DIR_TYPE,Yz.EVERYTHING_TYPE,Yz.FILE_DIR_TYPE,Yz.FILE_TYPE],Tk=new Set([Yz.DIR_TYPE,Yz.EVERYTHING_TYPE,Yz.FILE_DIR_TYPE]),xk=new Set([Yz.EVERYTHING_TYPE,Yz.FILE_DIR_TYPE,Yz.FILE_TYPE]),uk=process.platform==="win32";j8=class j8 extends Sk{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={...H8,...J},{root:Z,type:Y}=z;this._fileFilter=fK(z.fileFilter),this._directoryFilter=fK(z.directoryFilter);let X=z.lstat?BK:gk;if(uk)this._stat=(Q)=>X(Q,{bigint:!0});else this._stat=X;this._maxDepth=z.depth!=null&&Number.isSafeInteger(z.depth)?z.depth:H8.depth,this._wantsDir=Y?Tk.has(Y):!1,this._wantsFile=Y?xk.has(Y):!1,this._wantsEverything=Y===Yz.EVERYTHING_TYPE,this._root=VK(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,Q=Z.splice(0,J).map((H)=>this._formatEntry(H,Y)),q=await Promise.all(Q);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 Rk(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=VK(kk(z,Y));Z={path:bk(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(Ek(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 Ck(Z),X=await BK(Y);if(X.isFile())return"file";if(X.isDirectory()){let Q=Y.length;if(Z.startsWith(Y)&&Z.substr(Q,1)===Ik){let q=Error(`Circular symlink detected: "${Z}" points to "${Y}"`);return q.code=KK,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 wk,unwatchFile as FK,watchFile as Pk}from"fs";import{realpath as B8,lstat as hk,open as vk,stat as OK}from"fs/promises";import{type as mk}from"os";import*as n1 from"path";function MK(J,z,Z,Y,X){let Q=(q,H)=>{if(Z(J),X(q,H,{watchedPath:J}),H&&J!==H)IH(n1.resolve(J,H),gY,n1.join(J,H))};try{return wk(J,{persistent:z.persistent},Q)}catch(q){Y(q);return}}class K8{fsw;_boundHandleError;constructor(J){this.fsw=J,this._boundHandleError=(z)=>J._handleError(z)}_watchWithNodeFs(J,z){let Z=this.fsw.options,Y=n1.dirname(J),X=n1.basename(J);this.fsw._getWatchedDir(Y).add(X);let q=n1.resolve(J),H={persistent:Z.persistent};if(!z)z=SH;let j;if(Z.usePolling){let B=Z.interval!==Z.binaryInterval;H.interval=B&&pk(X)?Z.binaryInterval:Z.interval,j=sk(J,q,H,{listener:z,rawEmitter:this.fsw._emitRaw})}else j=ok(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=n1.dirname(J),X=n1.basename(J),Q=this.fsw._getWatchedDir(Y),q=z;if(Q.has(X))return;let H=async(B,U)=>{if(!this.fsw._throttle(lk,J,5))return;if(!U||U.mtimeMs===0)try{let V=await OK(J);if(this.fsw.closed)return;let{atimeMs:f,mtimeMs:L}=V;if(!f||f<=L||L!==q.mtimeMs)this.fsw._emit(xz.CHANGE,J,V);if((dk||nk||ik)&&q.ino!==V.ino){this.fsw._closeFile(B),q=V;let M=this._watchWithNodeFs(J,H);if(M)this.fsw._addPathCloser(B,M)}else q=V}catch(V){this.fsw._remove(Y,X)}else if(Q.has(X)){let{atimeMs:V,mtimeMs:f}=U;if(!V||V<=f||f!==q.mtimeMs)this.fsw._emit(xz.CHANGE,J,U);q=U}},j=this._watchWithNodeFs(J,H);if(!(Z&&this.fsw.options.ignoreInitial)&&this.fsw._isntIgnored(J)){if(!this.fsw._throttle(xz.ADD,J,0))return;this.fsw._emit(xz.ADD,J,z)}return j}async _handleSymlink(J,z,Z,Y){if(this.fsw.closed)return;let X=J.fullPath,Q=this.fsw._getWatchedDir(z);if(!this.fsw.options.followSymlinks){this.fsw._incrReadyCount();let q;try{q=await B8(Z)}catch(H){return this.fsw._emitReady(),!0}if(this.fsw.closed)return;if(Q.has(Y)){if(this.fsw._symlinkPaths.get(X)!==q)this.fsw._symlinkPaths.set(X,q),this.fsw._emit(xz.CHANGE,Z,J.stats)}else Q.add(Y),this.fsw._symlinkPaths.set(X,q),this.fsw._emit(xz.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,Q,q){J=n1.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,U=this.fsw._readdirp(J,{fileFilter:(V)=>Z.filterPath(V),directoryFilter:(V)=>Z.filterDir(V)});if(!U)return;return U.on(ck,async(V)=>{if(this.fsw.closed){U=void 0;return}let f=V.path,L=n1.join(J,f);if(B.add(f),V.stats.isSymbolicLink()&&await this._handleSymlink(V,J,L,f))return;if(this.fsw.closed){U=void 0;return}if(f===Y||!Y&&!j.has(f))this.fsw._incrReadyCount(),L=n1.join(X,n1.relative(X,L)),this._addToNodeFs(L,z,Z,Q+1)}).on(xz.ERROR,this._boundHandleError),new Promise((V,f)=>{if(!U)return f();U.once(U8,()=>{if(this.fsw.closed){U=void 0;return}let L=q?q.clear():!1;if(V(void 0),j.getChildren().filter((M)=>{return M!==J&&!B.has(M)}).forEach((M)=>{this.fsw._remove(J,M)}),U=void 0,L)this._handleRead(J,!1,Z,Y,X,Q,q)})})}async _handleDir(J,z,Z,Y,X,Q,q){let H=this.fsw._getWatchedDir(n1.dirname(J)),j=H.has(n1.basename(J));if(!(Z&&this.fsw.options.ignoreInitial)&&!X&&!j)this.fsw._emit(xz.ADD_DIR,J,z);H.add(n1.basename(J)),this.fsw._getWatchedDir(J);let B,U,V=this.fsw.options.depth;if((V==null||Y<=V)&&!this.fsw._symlinkPaths.has(q)){if(!X){if(await this._handleRead(J,Z,Q,X,J,Y,B),this.fsw.closed)return}U=this._watchWithNodeFs(J,(f,L)=>{if(L&&L.mtimeMs===0)return;this._handleRead(f,!1,Q,X,J,Y,B)})}return U}async _addToNodeFs(J,z,Z,Y,X){let Q=this.fsw._emitReady;if(this.fsw._isIgnored(J)||this.fsw.closed)return Q(),!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 $k[q.statMethod](q.watchPath);if(this.fsw.closed)return;if(this.fsw._isIgnored(q.watchPath,H))return Q(),!1;let j=this.fsw.options.followSymlinks,B;if(H.isDirectory()){let U=n1.resolve(J),V=j?await B8(J):J;if(this.fsw.closed)return;if(B=await this._handleDir(q.watchPath,H,z,Y,X,q,V),this.fsw.closed)return;if(U!==V&&V!==void 0)this.fsw._symlinkPaths.set(U,V)}else if(H.isSymbolicLink()){let U=j?await B8(J):J;if(this.fsw.closed)return;let V=n1.dirname(q.watchPath);if(this.fsw._getWatchedDir(V).add(q.watchPath),this.fsw._emit(xz.ADD,q.watchPath,H),B=await this._handleDir(V,H,z,Y,J,q,U),this.fsw.closed)return;if(U!==void 0)this.fsw._symlinkPaths.set(n1.resolve(J),U)}else B=this._handleFile(q.watchPath,H,z);if(Q(),B)this.fsw._addPathCloser(J,B);return!1}catch(H){if(this.fsw._handleError(H))return Q(),J}}}var ck="data",U8="end",AK="close",SH=()=>{},yH,f8,dk,nk,ik,NK,h1,xz,lk="watch",$k,gY="listeners",kH="errHandlers",IX="rawEmitters",ak,_k,pk=(J)=>_k.has(n1.extname(J).slice(1).toLowerCase()),W8=(J,z)=>{if(J instanceof Set)J.forEach(z);else z(J)},pQ=(J,z,Z)=>{let Y=J[z];if(!(Y instanceof Set))J[z]=Y=new Set([Y]);Y.add(Z)},rk=(J)=>(z)=>{let Z=J[z];if(Z instanceof Set)Z.clear();else delete J[z]},rQ=(J,z,Z)=>{let Y=J[z];if(Y instanceof Set)Y.delete(Z);else if(Y===Z)delete J[z]},RK=(J)=>J instanceof Set?J.size===0:!J,bH,IH=(J,z,Z,Y,X)=>{let Q=bH.get(J);if(!Q)return;W8(Q[z],(q)=>{q(Z,Y,X)})},ok=(J,z,Z,Y)=>{let{listener:X,errHandler:Q,rawEmitter:q}=Y,H=bH.get(z),j;if(!Z.persistent){if(j=MK(J,Z,X,Q,q),!j)return;return j.close.bind(j)}if(H)pQ(H,gY,X),pQ(H,kH,Q),pQ(H,IX,q);else{if(j=MK(J,Z,IH.bind(null,z,gY),Q,IH.bind(null,z,IX)),!j)return;j.on(xz.ERROR,async(B)=>{let U=IH.bind(null,z,kH);if(H)H.watcherUnusable=!0;if(f8&&B.code==="EPERM")try{await(await vk(J,"r")).close(),U(B)}catch(V){}else U(B)}),H={listeners:X,errHandlers:Q,rawEmitters:q,watcher:j},bH.set(z,H)}return()=>{if(rQ(H,gY,X),rQ(H,kH,Q),rQ(H,IX,q),RK(H.listeners))H.watcher.close(),bH.delete(z),ak.forEach(rk(H)),H.watcher=void 0,Object.freeze(H)}},V8,sk=(J,z,Z,Y)=>{let{listener:X,rawEmitter:Q}=Y,q=V8.get(z),H=q&&q.options;if(H&&(H.persistent<Z.persistent||H.interval>Z.interval))FK(z),q=void 0;if(q)pQ(q,gY,X),pQ(q,IX,Q);else q={listeners:X,rawEmitters:Q,options:Z,watcher:Pk(z,Z,(j,B)=>{W8(q.rawEmitters,(V)=>{V(xz.CHANGE,z,{curr:j,prev:B})});let U=j.mtimeMs;if(j.size!==B.size||U>B.mtimeMs||U===0)W8(q.listeners,(V)=>V(J,j))})},V8.set(z,q);return()=>{if(rQ(q,gY,X),rQ(q,IX,Q),RK(q.listeners))V8.delete(z),FK(z),q.options=q.watcher=void 0,Object.freeze(q)}};var CK=C(()=>{yH=process.platform,f8=yH==="win32",dk=yH==="darwin",nk=yH==="linux",ik=yH==="freebsd",NK=mk()==="OS400",h1={ALL:"all",READY:"ready",ADD:"add",CHANGE:"change",ADD_DIR:"addDir",UNLINK:"unlink",UNLINK_DIR:"unlinkDir",RAW:"raw",ERROR:"error"},xz=h1,$k={lstat:hk,stat:OK},ak=[gY,kH,IX],_k=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;V8=new Map});import{EventEmitter as tk}from"events";import{stat as ek,Stats as ui}from"fs";import{readdir as Jb,stat as zb}from"fs/promises";import*as V1 from"path";function TH(J){return Array.isArray(J)?J:[J]}function Hb(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=V1.relative(J.path,z);if(!Z)return!1;return!Z.startsWith("..")&&!V1.isAbsolute(Z)}return!1};return()=>!1}function jb(J){if(typeof J!=="string")throw Error("string expected");J=V1.normalize(J),J=J.replace(/\\/g,"/");let z=!1;if(J.startsWith("//"))z=!0;if(J=J.replace(yK,"/"),z)J="/"+J;return J}function gK(J,z,Z){let Y=jb(z);for(let X=0;X<J.length;X++){let Q=J[X];if(Q(Y,Z))return!0}return!1}function Bb(J,z){if(J==null)throw TypeError("anymatch: specify first argument");let Y=TH(J).map((X)=>Hb(X));if(z==null)return(X,Q)=>{return gK(Y,X,Q)};return gK(Y,z)}class xK{path;_removeWatcher;items;constructor(J,z){this.path=J,this._removeWatcher=z,this.items=new Set}add(J){let{items:z}=this;if(!z)return;if(J!==SK&&J!==Yb)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 Jb(Z)}catch(Y){if(this._removeWatcher)this._removeWatcher(V1.dirname(Z),V1.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=SH,this.items=Wb,Object.freeze(this)}}class EK{fsw;path;watchPath;fullWatchPath;dirParts;followSymlinks;statMethod;constructor(J,z,Z){this.fsw=Z;let Y=J;this.path=J=J.replace(qb,""),this.watchPath=Y,this.fullWatchPath=V1.resolve(Y),this.dirParts=[],this.dirParts.forEach((X)=>{if(X.length>1)X.pop()}),this.followSymlinks=z,this.statMethod=z?Ub:fb}entryPath(J){return V1.join(this.watchPath,V1.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 wK(J,z={}){let Z=new uK(z);return Z.add(J),Z}var D8="/",Zb="//",SK=".",Yb="..",Xb="string",Qb,yK,Gb,qb,L8=(J)=>typeof J==="object"&&J!==null&&!(J instanceof RegExp),kK=(J)=>{let z=TH(J).flat();if(!z.every((Z)=>typeof Z===Xb))throw TypeError(`Non-string provided as watch path: ${z}`);return z.map(TK)},bK=(J)=>{let z=J.replace(Qb,D8),Z=!1;if(z.startsWith(Zb))Z=!0;if(z=z.replace(yK,D8),Z)z=D8+z;return z},TK=(J)=>bK(V1.normalize(bK(J))),IK=(J="")=>(z)=>{if(typeof z==="string")return TK(V1.isAbsolute(z)?z:V1.join(J,z));else return z},Vb=(J,z)=>{if(V1.isAbsolute(J))return J;return V1.join(z,J)},Wb,Ub="stat",fb="lstat",uK;var PK=C(()=>{LK();CK();/*! chokidar - MIT License (c) 2012 Paul Miller (paulmillr.com) */Qb=/\\/g,yK=/\/\//g,Gb=/\..*\.(sw[px])$|~$|\.subl.*\.tmp/,qb=/^\.[/\\]/;Wb=Object.freeze(new Set);uK=class uK extends tk{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?TH(J.ignored):TH([]),awaitWriteFinish:z===!0?Z:typeof z==="object"?{...Z,...z}:!1};if(NK)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 Q=process.env.CHOKIDAR_INTERVAL;if(Q)Y.interval=Number.parseInt(Q,10);let q=0;this._emitReady=()=>{if(q++,q>=this._readyCount)this._emitReady=SH,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 K8(this),Object.freeze(Y)}_addIgnoredPath(J){if(L8(J)){for(let z of this._ignoredPaths)if(L8(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(L8(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=kK(J);if(Y)X=X.map((Q)=>{return Vb(Q,Y)});if(X.forEach((Q)=>{this._removeIgnoredPath(Q)}),this._userIgnored=void 0,!this._readyCount)this._readyCount=0;return this._readyCount+=X.length,Promise.all(X.map(async(Q)=>{let q=await this._nodeFsHandler._addToNodeFs(Q,!Z,void 0,0,z);if(q)this._emitReady();return q})).then((Q)=>{if(this.closed)return;Q.forEach((q)=>{if(q)this.add(V1.dirname(q),V1.basename(z||q))})}),this}unwatch(J){if(this.closed)return this;let z=kK(J),{cwd:Z}=this.options;return z.forEach((Y)=>{if(!V1.isAbsolute(Y)&&!this._closers.has(Y)){if(Z)Y=V1.join(Z,Y);Y=V1.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?V1.relative(this.options.cwd,Z):Z)||SK;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(f8)z=V1.normalize(z);if(Y.cwd)z=V1.relative(Y.cwd,z);let X=[z];if(Z!=null)X.push(Z);let Q=Y.awaitWriteFinish,q;if(Q&&(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(Q&&(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,Q.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?V1.join(Y.cwd,z):z,j;try{j=await zb(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 Q,q=()=>{let j=Y.get(z),B=j?j.count:0;if(Y.delete(z),clearTimeout(Q),j)clearTimeout(j.timeoutObject);return B};Q=setTimeout(q,Z);let H={timeoutObject:Q,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 Q=X.pollInterval,q,H=J;if(this.options.cwd&&!V1.isAbsolute(J))H=V1.join(this.options.cwd,J);let j=new Date,B=this._pendingWrites;function U(V){ek(H,(f,L)=>{if(f||!B.has(J)){if(f&&f.code!=="ENOENT")Y(f);return}let M=Number(new Date);if(V&&L.size!==V.size)B.get(J).lastChange=M;let A=B.get(J);if(M-A.lastChange>=z)B.delete(J),Y(void 0,L);else q=setTimeout(U,Q,L)})}if(!B.has(J))B.set(J,{lastChange:j,cancelWait:()=>{return B.delete(J),clearTimeout(q),Z}}),q=setTimeout(U,Q)}_isIgnored(J,z){if(this.options.atomic&&Gb.test(J))return!0;if(!this._userIgnored){let{cwd:Z}=this.options,X=(this.options.ignored||[]).map(IK(Z)),q=[...[...this._ignoredPaths].map(IK(Z)),...X];this._userIgnored=Bb(q,void 0)}return this._userIgnored(J,z)}_isntIgnored(J,z){return!this._isIgnored(J,z)}_getWatchHelpers(J){return new EK(J,this.options.followSymlinks,this)}_getWatchedDir(J){let z=V1.resolve(J);if(!this._watched.has(z))this._watched.set(z,new xK(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=V1.join(J,z),X=V1.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((V)=>this._remove(Y,V));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=V1.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 U=Z?h1.UNLINK_DIR:h1.UNLINK;if(j&&!this._isIgnored(Y))this._emit(U,Y);this._closePath(Y)}_closePath(J){this._closeFile(J);let z=V1.dirname(J);this._getWatchedDir(z).remove(V1.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=DK(J,Z);return this._streams.add(Y),Y.once(AK,()=>{Y=void 0}),Y.once(U8,()=>{if(Y)this._streams.delete(Y),Y=void 0}),Y}}});import{mkdirSync as Kb,statSync as Db}from"fs";import{basename as hK,dirname as Lb,join as Fb}from"path";function xH(J){if(J.debounceMs<=0)return()=>{};let z=Lb(J.filePath),Z=new Set([hK(J.filePath),...J.matchBasenames??[]]),Y=null,X=null,Q=!1,q=()=>{try{J.onTrigger()}catch(U){J.onError(U)}},H=()=>{if(Y)clearTimeout(Y);Y=setTimeout(()=>{Y=null,q()},J.debounceMs),Y.unref?.()},j=(U)=>{if(!Z.has(hK(U)))return;H()},B=(U)=>{try{let V=Db(Fb(z,U));return`${V.mtimeMs}:${V.size}`}catch{return null}};try{Kb(z,{recursive:!0});let U=new Map;for(let V of Z)U.set(V,B(V));X=wK(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 V of Z)if(B(V)!==U.get(V)){H();break}})}catch(U){J.onError(U)}return()=>{if(Q)return;if(Q=!0,Y)clearTimeout(Y),Y=null;let U=X;X=null,U?.close().catch(J.onError)}}var F8=C(()=>{PK()});import{homedir as Mb}from"os";import{basename as Ob,join as Ab}from"path";function O8(J=process.env.KOBE_HOME_DIR??Mb()){return Ab(J,".kobe","settings","keybindings.yaml")}function vK(J,z={}){let Z=z.debounceMs??M8;if(Z<=0)return()=>{};let Y=z.path??O8(),X=Ob(Y),Q=X.replace(/\.yaml$/,".yml"),q=0;return J.publish("keybindings",{rev:q}),xH({filePath:Y,matchBasenames:[X,Q],debounceMs:Z,onTrigger:()=>{try{q+=1,J.publish("keybindings",{rev:q})}catch(j){u1("keybindings-watcher",j)}},onError:(j)=>u1("keybindings-watcher",j)})}var M8=200;var mK=C(()=>{F8()});class A8{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??Nb,this.log=J.log??pz}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 Nb=(J,z)=>{let Z=setTimeout(J,z);return Z.unref?.(),()=>clearTimeout(Z)};var cK=()=>{};import{spawn as Rb}from"child_process";function Tb(J,z,Z){return new Promise((Y)=>{let X="",Q="",q=!1,H=(B,U)=>{if(q)return;q=!0,Y({status:B,stdout:X,stderr:Q,spawnError:U})},j=Rb("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)=>{Q+=String(B)}),j.on("error",()=>H(null,!Z.aborted)),j.on("close",(B)=>H(B,!1))})}function Eb(J){if(J.archived)return!1;if(J.kind==="main")return!1;if(!J.branch||!J.worktreePath)return!1;if(JJ(J.repo)||JJ(J.worktreePath))return!1;return!0}async function ub(J,z){let Z=z.tickMs??oQ,Y=z.rand,X={tickMs:Z,settledMs:gb,noPrMs:Cb,noRemoteMs:Ib,failureBaseMs:kb,failureCapMs:bb,jitterRatio:Sb},Q=[];for(let q of J.listTasks()){if(!Eb(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"){pz("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,cQ({kind:"error",error:B.error},j,z.now,X,Y));continue}if(B.kind==="empty"){z.schedule.set(q.id,cQ({kind:"empty"},j,z.now,X,Y));continue}let U=L5(B.view,z.at),V=J.getTask(q.id);if(!V){z.schedule.delete(q.id);continue}if(!LH(V.prStatus,U??void 0))await J.setPRStatus(q.id,U),Q.push(q.id);let f=U?.lifecycle==="merged"||U?.lifecycle==="closed";z.schedule.set(q.id,cQ({kind:"pr",settled:f},j,z.now,X,Y))}catch(B){u1("pr-status-poller",B),z.schedule.set(q.id,cQ({kind:"error",error:"network"},j,z.now,X,Y))}}return Q}function dK(J,z=oQ,Z,Y=xb){if(z<=0)return()=>{};let X=new Map,Q=!1,H=setInterval(()=>{if(Z&&!Z())return;if(Q)return;Q=!0,ub(J,{run:Y,now:Date.now(),at:new Date().toISOString(),schedule:X,tickMs:z}).catch((j)=>u1("pr-status-poller",j)).finally(()=>{Q=!1})},z);return H.unref?.(),()=>clearInterval(H)}var oQ=30000,Cb=300000,gb=600000,kb,bb=900000,Ib=1800000,Sb=0.2,yb=1e4,xb=async(J,z)=>{let Z=new AbortController,Y=!1,X=setTimeout(()=>{Y=!0,Z.abort()},yb);try{let Q=await Tb(["pr","view",z,"--json",D5],J,Z.signal);if(Q.status===0&&!Y)try{let q=JSON.parse(Q.stdout);return typeof q.number==="number"?{kind:"pr",view:q}:{kind:"empty"}}catch{return SB({parseError:!0})}return SB({spawnError:Q.spawnError,timedOut:Y,exitCode:Q.status,stderr:Q.stderr})}finally{clearTimeout(X)}};var nK=C(()=>{yB();I1();kb=oQ});function vb(J,z){return J.mtimeMs===z.mtimeMs&&J.completionId===z.completionId&&J.completionAt===z.completionAt}async function mb(J,z,Z,Y){let X=await FX(z,J),Q=await Z.latestCompletion(J);return{mtimeMs:X,completionId:Q?.id??null,completionAt:Q?.timestampMs??0}}function cb(J){let z=new Map;for(let Z of J){if(Z.archived)continue;if(!Z.worktreePath)continue;if(JJ(Z.repo)||JJ(Z.worktreePath))continue;if(z.has(Z.worktreePath))continue;z.set(Z.worktreePath,Z.vendor??YJ)}return z}class iK{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=cb(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){u1("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:IQ(z)},this.entries.set(J,Z);else if(Z.vendor!==z)Z.vendor=z,Z.detector=IQ(z);let Y=this.options.cadence??{timeoutMs:wb,slowRetryMs:Pb,minIntervalMs:hb},X=this.options.run??mb,Q=Z;RX(Q,Y,(q)=>X(J,Q.vendor,Q.detector,q),(q)=>{if(this.stopped)return;if(this.entries.get(J)!==Q)return;if(Q.value&&vb(Q.value,q))return;Q.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 lK(J,z,Z=N8,Y){if(Z<=0)return()=>{};let X=new iK(J,z,{hasSubscribers:Y});X.tick();let Q=setInterval(()=>X.tick(),Z);return Q.unref?.(),()=>{clearInterval(Q),X.stop()}}var N8=1500,wb=4000,Pb=60000,hb=1500;var $K=C(()=>{Eq();CX();zH();I1();Uz()});import{readFileSync as db}from"fs";import{homedir as nb}from"os";import{basename as ib,join as lb}from"path";function C8(J=process.env.KOBE_HOME_DIR??nb()){return lb(J,".config","kobe","state.json")}function aK(J){let z={};try{let B=JSON.parse(db(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"&&ab.includes(z.focusAccent)?z.focusAccent:null,Q=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:Q,keysCollapsed:q,projectFilter:H}}function _b(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 _K(J,z={}){let Z=z.debounceMs??R8;if(Z<=0)return()=>{};let Y=z.pollMs??$b,X=z.statePath??C8(),Q=ib(X),q=aK(X);return J.publish("ui-prefs",q),xH({filePath:X,matchBasenames:[Q],debounceMs:Z,pollMs:Y,onTrigger:()=>{try{let j=aK(X);if(_b(q,j))return;q=j,J.publish("ui-prefs",j)}catch(j){u1("ui-prefs-watcher",j)}},onError:(j)=>u1("ui-prefs-watcher",j)})}var R8=200,$b=250,ab;var pK=C(()=>{F8();ab=["primary","success","info"]});function rK(J){return J>="0"&&J<="7"}function sK(J,z){let Z=[],Y="",X=()=>{if(Y.length>0){for(let q of pb.encode(Y))Z.push(q);Y=""}},Q=z+1;while(Q<J.length){let q=J[Q];if(q==='"'){Q++;break}if(q==="\\"){let H=J[Q+1];if(H===void 0){Y+="\\",Q++;continue}switch(H){case"a":X(),Z.push(7),Q+=2;break;case"b":X(),Z.push(8),Q+=2;break;case"t":X(),Z.push(9),Q+=2;break;case"n":X(),Z.push(10),Q+=2;break;case"v":X(),Z.push(11),Q+=2;break;case"f":X(),Z.push(12),Q+=2;break;case"r":X(),Z.push(13),Q+=2;break;case'"':Y+='"',Q+=2;break;case"\\":Y+="\\",Q+=2;break;default:if(rK(H)){let j="",B=Q+1;while(B<J.length&&j.length<3&&rK(J[B]))j+=J[B],B++;X(),Z.push(Number.parseInt(j,8)&255),Q=B}else Y+=H,Q+=2;break}}else Y+=q,Q++}return X(),{value:rb.decode(new Uint8Array(Z)),end:Q}}function kY(J){if(J.length===0||J[0]!=='"')return J;return sK(J,0).value}function tK(J,z){if(J[0]==='"'){let Y=sK(J,0);if(J.startsWith(z,Y.end))return{orig:Y.value,neu:kY(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:kY(J.slice(Z+z.length))}}function ob(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 Q=J.slice(0,z),q=J.slice(z+1,X),H=J.slice(X+4,Y),j=J.slice(Y+1);return{path:Q+H+j,origPath:Q+q+j}}}let Z=tK(J," => ");if(Z)return{path:Z.neu,origPath:Z.orig};return{path:kY(J)}}function EH(J){let z=[];for(let Z of J.split(`
44
+ `)){let Y=Z.replace(/\r$/,"");if(Y.length<4)continue;if(Y.startsWith("##"))continue;let X=Y[0],Q=Y[1];if(Y[2]!==" ")continue;let q=Y.slice(3);if(X==="R"||X==="C"||Q==="R"||Q==="C"){let H=tK(q," -> ");if(H){z.push({x:X,y:Q,path:H.neu,origPath:H.orig});continue}}z.push({x:X,y:Q,path:kY(q)})}return z}function oK(J){if(J==="-")return null;let z=Number.parseInt(J,10);return Number.isNaN(z)?null:z}function eK(J){let z=[];for(let Z of J.split(`
45
+ `)){let Y=Z.replace(/\r$/,"");if(Y.length===0)continue;let X=Y.indexOf("\t");if(X<0)continue;let Q=Y.indexOf("\t",X+1);if(Q<0)continue;let q=Y.slice(Q+1);if(q.length===0)continue;let H=ob(q);if(H.path.length===0)continue;z.push({path:H.path,...H.origPath!==void 0?{origPath:H.origPath}:{},added:oK(Y.slice(0,X)),deleted:oK(Y.slice(X+1,Q))})}return z}var pb,rb;var uH=C(()=>{pb=new TextEncoder,rb=new TextDecoder});function Xz(J=process.env){return{...J,...g8}}var g8;var oZ=C(()=>{g8={GIT_OPTIONAL_LOCKS:"0"}});async function SX(J,z,Z={}){if(!J)return{stdout:"",stderr:"worktreePath is required",status:-1};let Y=(Z.execForPath??Az)(J),X=Z.timeoutMs&&Z.timeoutMs>0?new AbortController:null,Q=!1,q=X?setTimeout(()=>{Q=!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:g8,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(Q&&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 sb(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 wH(J,z,Z={}){let Y=sb(J,z);if(!Y)return null;let X=(Z.execForPath??Az)(J);try{return await X.readFile(Y)}catch{return null}}var PH=C(()=>{sJ();oZ()});import{statSync as tb}from"fs";async function sQ(J,z){let Z=await SX(J,z,{timeoutMs:eb}),Y=Z.status??-1;return{ok:Y===0,stdout:Z.stdout,stderr:Z.stderr,code:Y}}function zI(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 J6(J){if(J==="/dev/null")return null;let z=J;if(z.startsWith('"'))z=kY(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 z6(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,Q=Y.match(/^\+\+\+ (.*)$/m);if(Q)X=J6(Q[1]);if(X===null){let q=Y.match(/^--- (.*)$/m);if(q)X=J6(q[1])}if(X===null){let q=Y.match(/^diff --git a\/.* b\/(.*)$/m);if(q)X=kY(q[1])}if(X===null)continue;z.set(X,Y.endsWith(`
46
+ `)?Y:`${Y}
47
+ `)}return z}async function ZI(J,z,Z){let Y=Array(J.length),X=Math.max(1,Math.min(z,J.length)),Q=0;async function q(){while(Q<J.length){let H=Q++;Y[H]=await Z(J[H],H)}}return await Promise.all(Array.from({length:X},()=>q())),Y}async function YI(J,z){let Z=await sQ(J,["diff","--no-color","--no-index","--","/dev/null",z]);if(Z.stdout.trim())return Z.stdout.endsWith(`
48
+ `)?Z.stdout:`${Z.stdout}
49
+ `;return""}async function Z6(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(!uZ(Y))return Response.json({error:"worktreePath does not exist"},{status:400});if(!Az(Y).isRemote)try{if(!tb(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 Q=await sQ(Y,["rev-parse","--is-inside-work-tree"]);if(!Q.ok||Q.stdout.trim()!=="true")return Response.json({error:`not a git work tree: ${Q.stderr.trim()||Y}`},{status:500});let[q,H,j]=await Promise.all([sQ(Y,["status","--porcelain=v1","-z","--untracked-files=all"]),sQ(Y,["diff","--no-color"]),sQ(Y,["diff","--no-color","--staged"])]);if(!q.ok)return Response.json({error:`git status failed: ${q.stderr.trim()}`},{status:500});let B=z6(H.stdout),U=z6(j.stdout),V=q.stdout.split("\x00"),f=[],L=[];for(let N=0;N<V.length;N++){let u=V[N];if(!u)continue;let h=u[0]??" ",I=u[1]??" ",R=u.slice(3);if(!R)continue;if(h==="R"||h==="C"||I==="R"||I==="C")N++;let O=h==="?"&&I==="?",S=h!==" "&&h!=="?"?h:I,n=h!==" "&&h!=="?",i="";if(O)L.push({fileIndex:f.length,path:R});else if(i=U.get(R)??B.get(R)??"",U.has(R)&&B.has(R))i=`${U.get(R)}${B.get(R)}`;f.push({path:R,status:O?"untracked":zI(S),staged:n,patch:i})}if(L.length>0){let N=await ZI(L,JI,(u)=>YI(Y,u.path));for(let u=0;u<L.length;u++)f[L[u].fileIndex].patch=N[u]}f.sort((N,u)=>N.path.localeCompare(u.path));let M=[j.stdout,H.stdout].filter(Boolean).join(`
50
+ `),A={files:f,raw:M};return Response.json(A)}var eb=15000,JI=8;var Y6=C(()=>{sJ();uH();PH()});import{isAbsolute as XI}from"path";function Q6(J){return typeof J==="string"&&J.length>0&&/^[A-Za-z0-9_-]+$/.test(J)}function GI(J){return typeof J==="string"&&J.length>0&&/^[A-Za-z0-9._-]+$/.test(J)&&!J.includes("..")}async function qI(J){let z=J.searchParams.get("worktreePath"),Z=J.searchParams.get("vendor")??"claude";if(!z||!XI(z))return Response.json({error:"worktreePath must be an absolute path"},{status:400});if(!Q6(Z))return Response.json({error:"invalid vendor"},{status:400});try{let Y=zJ(Z).history,[X,Q]=await Promise.all([Y.listSessionIdsForWorktree(z),Y.latestTranscriptMtimeForWorktree(z)]);return Response.json({sessions:X,latestMtime:Q})}catch(Y){return Response.json({error:Y instanceof Error?Y.message:String(Y)},{status:500})}}async function HI(J){let z=J.searchParams.get("vendor")??"claude",Z=J.searchParams.get("sessionId");if(!Q6(z))return Response.json({error:"invalid vendor"},{status:400});if(!GI(Z))return Response.json({error:"invalid sessionId"},{status:400});try{let Y=await zJ(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 G6(J,z){if(z.pathname!==X6&&z.pathname!==QI)return null;if(J.method!=="GET")return Response.json({error:"method not allowed"},{status:405});return z.pathname===X6?qI(z):HI(z)}var X6="/api/history/sessions",QI="/api/history/messages";var q6=C(()=>{UZ()});import{mkdir as jI,readFile as BI,writeFile as VI}from"fs/promises";import{join as H6}from"path";function j6(){return H6(DJ(),"notes")}function B6(J){return typeof J==="string"&&J.length>0&&/^[A-Za-z0-9_-]+$/.test(J)}function V6(J){return H6(j6(),`${J}.md`)}async function UI(J){let z=J.searchParams.get("taskId");if(!B6(z))return Response.json({error:"invalid taskId"},{status:400});try{let Z="";try{Z=await BI(V6(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 fI(J){let z;try{z=await J.json()}catch{return Response.json({error:"invalid JSON body"},{status:400})}if(!B6(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 jI(j6(),{recursive:!0}),await VI(V6(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 W6(J,z){if(z.pathname!==WI)return null;if(J.method==="GET")return UI(z);if(J.method==="PUT")return fI(J);return Response.json({error:"method not allowed"},{status:405})}var WI="/api/notes";var U6=C(()=>{o1()});function b8(J,z,Z=[]){if(z===void 0)return null;if(typeof z!=="string")return b8(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 b8(J,Y,[...Z,z])}function k8(J){return Math.max(0,Math.min(255,Math.round(J)))}function tQ(J,z,Z){let Y=Number.parseInt(J.slice(1),16),X=Number.parseInt(z.slice(1),16),Q=(H,j)=>H>>j&255;return`#${(k8(Q(Y,16)+(Q(X,16)-Q(Y,16))*Z)<<16|k8(Q(Y,8)+(Q(X,8)-Q(Y,8))*Z)<<8|k8(Q(Y,0)+(Q(X,0)-Q(Y,0))*Z)).toString(16).padStart(6,"0")}`}function DI(J){let z=(H)=>b8(J,J.theme[H]),Z=z("background"),Y=z("text");if(!Z||!Y)return null;let X=z("textMuted")??tQ(Y,Z,0.35),Q=z("primary")??Y,q=z("border")??tQ(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")??tQ(q,Y,0.3),fg:Y,muted:X,subtle:tQ(X,Z,0.35),primary:Q,"primary-hover":tQ(Q,Y,0.35),"kobe-orange":Q,"kobe-green":z("success")??Y,"kobe-blue":z("info")??Y,"kobe-red":z("error")??Y,"kobe-yellow":z("warning")??Y,"kobe-violet":z("secondary")??Q}}function f6(J,z){if(z.pathname!==FI)return null;if(J.method!=="GET")return Response.json({error:"method not allowed"},{status:405});return Response.json({themes:LI})}var KI,LI,FI="/api/themes";var K6=C(()=>{vq();mq();cq();dq();nq();iq();lq();KI={claude:GX,conductor:qX,dracula:HX,nord:jX,opencode:BX,"osaka-jade":VX,tokyonight:WX};LI=Object.fromEntries(Object.entries(KI).map(([J,z])=>[J,DI(z)]).filter((J)=>J[1]!==null))});import{createHash as MI,randomUUID as OI}from"crypto";import{mkdir as AI}from"fs/promises";import{join as I8,resolve as NI}from"path";function gI(J){return MI("sha1").update(J).digest("hex").slice(0,16)}async function II(J){let z=Number.parseInt(J.headers.get("content-length")??"",10);if(Number.isFinite(z)&&z>D6)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>D6)return Response.json({error:"asset too large"},{status:413});let Q=RI[X.type];if(!Q)return Response.json({error:`unsupported content-type: ${X.type||"unknown"}`},{status:415});try{let q=gI(Y),H=I8(Dj(),q);await AI(H,{recursive:!0});let B=`${OI()}.${Q}`;return await Bun.write(I8(H,B),X),Response.json({url:`${hH}/${q}/${B}`})}catch(q){return Response.json({error:q instanceof Error?q.message:String(q)},{status:500})}}async function SI(J){let z=J.slice(hH.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(!kI.test(Y)||!bI.test(X))return Response.json({error:"invalid asset path"},{status:400});let Q=Dj(),q=NI(Q,Y,X);if(q!==I8(Q,Y,X)||!q.startsWith(`${Q}/`))return Response.json({error:"invalid asset path"},{status:400});let H=X.slice(X.lastIndexOf(".")+1).toLowerCase(),j=CI[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 L6(J,z){if(z.pathname===hH){if(J.method==="POST")return II(J);return Response.json({error:"method not allowed"},{status:405})}if(z.pathname.startsWith(`${hH}/`)){if(J.method==="GET")return SI(z.pathname);return Response.json({error:"method not allowed"},{status:405})}return null}var hH="/api/issue-assets",D6=10485760,RI,CI,kI,bI;var F6=C(()=>{o1();RI={"image/png":"png","image/jpeg":"jpg","image/gif":"gif","image/webp":"webp"},CI={png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",webp:"image/webp"};kI=/^[a-f0-9]{16}$/,bI=/^[A-Za-z0-9_-]+\.[a-z0-9]+$/});function M6(J,z=500){return Response.json({error:J instanceof Error?J.message:String(J)},{status:z})}function O6(J){let z=J instanceof Error?J.message:String(J);if(/^no issue #\d+$/.test(z))return 404;if(z==="repoRoot is required"||z==="repoRoot does not exist"||z==="repoRoot is not a git repository"||z==="missing op"||z==="create requires a non-empty title"||z==="body must be a string"||z==="setStatus requires a numeric id"||z.startsWith("invalid status:")||z==="update requires a numeric id"||z==="title must be a non-empty string"||z==="link requires a numeric id"||z==="link requires a non-empty taskId"||z==="unlink requires a numeric id"||z==="delete requires a numeric id"||z.startsWith("unknown op type:"))return 400;return 500}async function yI(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 M6(Y,O6(Y))}}async function TI(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 M6(X,O6(X))}}async function A6(J,z,Z){if(z.pathname!=="/api/issues")return null;if(J.method==="GET")return yI(Z,z);if(J.method==="POST")return TI(Z,J);return Response.json({error:"method not allowed"},{status:405})}function N6(J){return xI.has(String(J??"").trim().toLowerCase())}function R6(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 EI(J){let z=R6(J);return z!==null&&N6(z)}function C6(J,z={}){if(!J)return!0;if(EI(J))return!0;let Z=z.allowedHost?.trim();if(!Z)return!1;let Y=R6(J);return Y!==null&&Y===Z}function g6(J){let z=String(J??"").trim();return z&&!N6(z)?z:void 0}var xI;var k6=C(()=>{xI=new Set(["localhost","127.0.0.1","::1","[::1]"])});var uI,b6;var I6=C(()=>{uI=["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"],b6=new Set(uI)});var mH={};X1(mH,{resolveRepoInit:()=>T6,resolveEngineLaunchInit:()=>yX});import{existsSync as y6,readFileSync as wI}from"fs";import{join as vH}from"path";function hI(J){return y6(vH(J,S6))?`sh ${S6}`:void 0}function vI(J){let z=vH(J,PI);if(!y6(z))return;try{let Z=wI(z,"utf8");return Z.trim().length>0?Z:void 0}catch{return}}function T6(J,z){let Z=J?Oj(J):{},Y=hI(z)??Z.initScript,X=vI(z)??Z.initPrompt;return{initScript:Y&&Y.trim().length>0?Y:void 0,initPrompt:X&&X.trim().length>0?X:void 0}}function mI(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 yX(J,z,Z={kind:"repo-init"}){let Y=T6(J,z);return{initScript:Y.initScript,firstMessage:mI(Z,Y)}}var S6,PI;var TX=C(()=>{I1();S6=vH(".kobe","init.sh"),PI=vH(".kobe","init-prompt.md")});async function cI(J,z){let{task:Z}=await J.request("task.get",{taskId:z});return Z}async function S8(J,z){let Z=await cI(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 x6(J,z){let{task:Z,worktreePath:Y}=await S8(J,z),X=T1(z);if(!await K1(X)){let Q=yX(Z.repo??"",Y,{kind:"repo-init"});if(!await xX({name:X,cwd:Y,command:cJ(Z.vendor,Z.modelEffort),taskId:z,vendor:Z.vendor,launchInit:Q}))throw Error(`failed to start tmux session for ${z}`)}return{session:X,worktreePath:Y}}function dI(J){return rY(J,{bareSafe:!0})}async function E6(J,z){let{task:Z,worktreePath:Y}=await S8(J,z),X=Z.kind==="main"?void 0:z,Q=Z.kind==="main"?z:void 0,q=[...hq(Pq(cJ(Z.vendor,Z.modelEffort),Z.vendor,X),Z.vendor,Q)],H=yX(Z.repo??"",Y,{kind:"none"}),j=dI(q),B=H.initScript?.trim()?`${H.initScript}
51
+ ${j}`:j,U=process.env.SHELL?.trim()||"/bin/zsh";return{cwd:Y,command:[U,"-ilc",B]}}async function u6(J,z){let{worktreePath:Z}=await S8(J,z),Y=process.env.SHELL?.trim()||"/bin/zsh";return{cwd:Z,command:[Y,"-il"]}}async function w6(J){let z=T1(J);await oz(z).catch(()=>{}),await nJ(z).catch(()=>{})}var P6=C(()=>{eJ();zq();TX();S1();qJ()});function EX(J){return bY.includes(J)?J:"auto"}var bY,h6,MZ="editor.kind",sZ="editor.customCommand",cH="auto";var dH=C(()=>{bY=["auto","vim","nvim","nano","emacs","custom"],h6=["nvim","vim","emacs","nano"]});function SY(J){return J==="taskpanel"?"taskpanel":"chattab"}var OZ="settings.surface",IY="chattab";function tZ(J,z=""){return typeof J==="string"?J:z}function nI(J,z){return typeof J==="boolean"?J:z}function c6(J){let z=J.customEngineIds;if(!Array.isArray(z))return[];return z.filter((Z)=>typeof Z==="string"&&m6.test(Z)&&!LJ(Z))}function iI(J){return J.split(/[-_]+/).filter(Boolean).map((z)=>`${z.slice(0,1).toUpperCase()}${z.slice(1)}`).join(" ")}function lI(J,z){return tZ(J[kz(z)]).trim()||nZ(z)}function $I(J,z){return tZ(J[gz(z)]).trim()||yQ(z).join(" ")}function y8(){let J=NJ(),z=c6(J),Z=[...VY,...z],Y=tZ(J.lastSelectedVendor,"claude"),X=tZ(J.focusAccent,"primary");return Response.json({activeTheme:tZ(J.activeTheme,"claude"),transparentBackground:nI(J.transparentBackground,!1),focusAccent:v6.includes(X)?X:"primary",notificationsToast:J["notifications.toast.enabled"]!==!1,notificationsSound:J["notifications.sound.enabled"]!==!1,settingsSurface:SY(J[OZ]??IY),editorKind:EX(J[MZ]??cH),editorCustomCommand:tZ(J[sZ]),remoteProjects:J["experimental.remoteProjects"]===!0,archivedHistoryPreview:J["experimental.archivedHistoryPreview"]===!0,autoStatus:J[FY]===!0,dispatcher:J[MY]===!0,defaultEngine:Y,engines:Z.map((Q)=>({id:Q,label:lI(J,Q),command:$I(J,Q),isBuiltin:LJ(Q),isCustom:!LJ(Q),isDefault:Q===Y}))})}function eQ(J,z,Z){if(typeof Z==="string")J[z]=Z.trim()}function yY(J,z,Z){if(typeof Z==="boolean")J[z]=Z}async function d6(J){try{let z=await J.json(),Z={};if(eQ(Z,"activeTheme",z.activeTheme),yY(Z,"transparentBackground",z.transparentBackground),v6.includes(z.focusAccent))Z.focusAccent=z.focusAccent;if(yY(Z,"notifications.toast.enabled",z.notificationsToast),yY(Z,"notifications.sound.enabled",z.notificationsSound),z.settingsSurface==="chattab"||z.settingsSurface==="taskpanel")Z[OZ]=z.settingsSurface;if(bY.includes(z.editorKind))Z[MZ]=z.editorKind;eQ(Z,sZ,z.editorCustomCommand),yY(Z,"experimental.remoteProjects",z.remoteProjects),yY(Z,"experimental.archivedHistoryPreview",z.archivedHistoryPreview),yY(Z,FY,z.autoStatus),yY(Z,MY,z.dispatcher),eQ(Z,"lastSelectedVendor",z.defaultEngine);let Y=NJ(),X=c6(Y),Q=new Set([...VY,...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"||!Q.has(j.id))continue;eQ(Z,gz(j.id),j.command),eQ(Z,kz(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(!m6.test(j)||LJ(j)||Q.has(j))return Response.json({error:"invalid or duplicate engine id"},{status:400});Z.customEngineIds=[...X,j],Z[gz(j)]=tZ(H.command).trim();let B=tZ(H.label).trim();Z[kz(j)]=B&&B!==j?B:iI(j)}if(typeof z.removeEngine==="string"){let H=z.removeEngine;if(!LJ(H)){if(Z.customEngineIds=X.filter((j)=>j!==H),Z[gz(H)]=void 0,Z[kz(H)]=void 0,Y.lastSelectedVendor===H)Z.lastSelectedVendor="claude"}}if(Object.keys(Z).length>0)EZ(Z);return y8()}catch(z){return Response.json({error:z instanceof Error?z.message:String(z)},{status:400})}}var v6,m6;var n6=C(()=>{eJ();SQ();wq();mz();dH();s1();v6=["primary","success","info"],m6=/^[a-z][a-z0-9_-]{0,47}$/});import{existsSync as aI}from"fs";import{join as i6,normalize as a6}from"path";function _I(J,z){let Z=null,Y=null,X=!1,Q=()=>{if(X)return;if(X=!0,Y)clearInterval(Y);Z?.()},q=new TextEncoder,H=new ReadableStream({start(j){if(Z=J((U,V)=>{try{j.enqueue(q.encode(`event: ${U}
52
+ data: ${JSON.stringify(V)}
53
+
54
+ `))}catch{}}),Y=setInterval(()=>{try{j.enqueue(q.encode(`: ping
55
+
56
+ `))}catch{Q()}},15000),z?.aborted)Q();else z?.addEventListener("abort",Q,{once:!0})},cancel(){Q()}});return new Response(H,{headers:{"content-type":"text/event-stream","cache-control":"no-cache, no-transform",connection:"keep-alive"}})}async function pI(J,z,Z){try{let{name:Y,payload:X}=await J.json();if(!Y)return Response.json({error:"missing rpc name"},{status:400});if(!b6.has(Y))return Response.json({error:`rpc ${Y} is not exposed to the web UI`},{status:403});let Q=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:Q})}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 rI(){try{let z=(await WZ()).map((Z)=>({id:Z,label:nZ(Z),effortLevels:zJ(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 oI(){return Response.json({api:OY()})}function sI(){return Response.json({projects:RJ()})}async function tI(J,z){try{let{taskId:Z}=await J.json();if(!Z)return Response.json({error:"missing taskId"},{status:400});return Response.json(await x6(z,Z))}catch(Z){return Response.json({error:Z instanceof Error?Z.message:String(Z)},{status:500})}}async function l6(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 r6(){return Response.json({review:E1(nH.review)??null,pr:E1(nH.pr)??null})}async function eI(J){try{let z=await J.json();if(typeof z.review==="string")jJ(nH.review,z.review);if(typeof z.pr==="string")jJ(nH.pr,z.pr);return r6()}catch(z){return Response.json({error:z instanceof Error?z.message:String(z)},{status:400})}}async function JS(J,z){let Y=a6(i6(z,J==="/"?"/index.html":J));if(!Y.startsWith(z))return new Response("forbidden",{status:403});let X=Bun.file(aI(Y)?Y:i6(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 zS(J){let{link:z,sseSends:Z,staticDir:Y}=J,X=J.tearDownSession??((Q)=>void w6(Q));return async function(q){let H=new URL(q.url);if(H.pathname===p6)return new Response(_6);if(!C6(q.headers.get("origin"),{allowedHost:J.allowedHost}))return new Response("forbidden: cross-origin request rejected",{status:403});if(H.pathname==="/events")return _I((M)=>{let A=J.onSseOpen?.()??(()=>{});return M("snapshot",z.snapshot()),Z.add(M),()=>{Z.delete(M),A()}},q.signal);if(H.pathname==="/api/rpc"&&q.method==="POST")return pI(q,z,X);if(H.pathname==="/api/session"&&q.method==="POST")return tI(q,z);if(H.pathname==="/api/engine-spec"&&q.method==="GET")return l6(H,z,E6);if(H.pathname==="/api/terminal-spec"&&q.method==="GET")return l6(H,z,u6);if(H.pathname==="/api/engines"&&q.method==="GET")return rI();if(H.pathname==="/api/cli-invocation"&&q.method==="GET")return oI();if(H.pathname==="/api/projects"&&q.method==="GET")return sI();if(H.pathname==="/api/settings"&&q.method==="GET")return y8();if(H.pathname==="/api/settings"&&q.method==="PATCH")return d6(q);if(H.pathname==="/api/quick-prompts"&&q.method==="GET")return r6();if(H.pathname==="/api/quick-prompts"&&q.method==="PUT")return eI(q);let j=await W6(q,H);if(j)return j;let B=await Z6(q,H);if(B)return B;let U=await G6(q,H);if(U)return U;let V=await A6(q,H,z);if(V)return V;let f=await L6(q,H);if(f)return f;let L=f6(q,H);if(L)return L;if(Y)return JS(H.pathname,Y);return new Response("not found",{status:404})}}function TY(J,z){let Z=J.snapshot().find((Y)=>Y.channel===z);return Z?Z.payload:null}function T8(J){return J.length>1?J.replace(/\/+$/,""):J}function ZS(J,z){let Z=T8(z),Y=new Set([z]);for(let X of J){let Q=T8(X.repo),q=T8(X.worktreePath);if(Q===Z||q===Z){if(X.repo)Y.add(X.repo);if(X.worktreePath)Y.add(X.worktreePath)}}return[...Y]}function o6(J){let z=_Q();return{async request(Z,Y){return await aQ(z,Z,Y,J.ctx(0))},snapshot(){let Z=J.orch.listTasks().map(Jz),Y={},X=TY(J.bus,"issue.snapshot");if(X)for(let H of ZS(Z,X.repoRoot))Y[H]={...X,repoRoot:H};let Q=TY(J.bus,"task.jobs"),q=Q?.phase==="running"?{[Q.taskId]:Q}:{};return{tasks:Z,activeTaskId:TY(J.bus,"active-task")?.taskId??null,engineStates:J.activity.snapshotByTask(),update:TY(J.bus,"update")?.info??null,jobs:q,worktreeChanges:TY(J.bus,"worktree.changes")?.changes??{},issueSnapshots:Y,deliver:TY(J.bus,"session.deliver"),uiPrefs:TY(J.bus,"ui-prefs"),connected:!0}}}}async function $6(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(`
57
+ `).map((Y)=>Number.parseInt(Y.trim(),10)).filter((Y)=>Number.isFinite(Y)&&Y!==process.pid)}catch{return[]}}async function YS(J,z=p6){let Z;try{Z=(await(await fetch(`http://localhost:${J}${z}`,{signal:AbortSignal.timeout(800)})).text()).trim()}catch{return}if(Z!==_6)throw Error(`port ${J} is in use by a non-kobe service; refusing to replace it`);let Y=await $6(J);for(let Q of Y)try{process.kill(Q,"SIGTERM")}catch{}let X=Date.now()+2000;while(Date.now()<X){if((await $6(J)).length===0)return;await new Promise((Q)=>setTimeout(Q,100))}}async function s6(J){if(J.takeover!==!1)await YS(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=g6(Y),Q=zS({link:J.link,sseSends:z,staticDir:J.staticDir?a6(J.staticDir):void 0,allowedHost:X,onSseOpen:J.onSseOpen}),q=Bun.serve({port:J.port,hostname:Y,idleTimeout:0,fetch:Q});return{port:q.port??J.port,hostname:Y,close(){Z(),q.stop(!0)}}}var _6="kobe-web",p6="/__kobe_web",nH;var t6=C(()=>{fY();eJ();UZ();I1();Y6();q6();U6();K6();NH();nz();F6();k6();I6();P6();n6();nH={review:"boardPrompt.review",pr:"boardPrompt.pr"}});var e6={};X1(e6,{sameWorktreeChanges:()=>sz,readWorktreeChanges:()=>QS,pickPushedChanges:()=>lH,parsePorcelain:()=>uX});import{spawnSync as XS}from"child_process";function sz(J,z){return J.added===z.added&&J.deleted===z.deleted}function lH(J,z){if(!J)return null;return J.get(z)??iH}function QS(J){if(!J)return iH;try{let z=XS("git",["status","--porcelain=v1"],{cwd:J,encoding:"utf8",stdio:["ignore","pipe","pipe"],env:Xz()});if(z.status!==0||!z.stdout)return iH;return uX(z.stdout)}catch{return iH}}function uX(J){let z=0,Z=0;for(let{x:Y,y:X}of EH(J))if(Y==="D"||X==="D")Z+=1;else z+=1;return{added:z,deleted:Z}}var iH;var wX=C(()=>{oZ();uH();iH={added:0,deleted:0}});async function jS(J,z){let Z=await LZ("git",["status","--porcelain=v1"],{cwd:J,env:Xz(),signal:z});if(Z.status!==0)throw Error("git status failed");return uX(Z.stdout)}function BS(J){let z=new Set;for(let Z of J){if(Z.archived)continue;if(!Z.worktreePath)continue;if(JJ(Z.repo)||JJ(Z.worktreePath))continue;z.add(Z.worktreePath)}return z}class J4{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=BS(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){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 Z=this.options.cadence??{timeoutMs:GS,slowRetryMs:qS,minIntervalMs:HS},Y=this.options.run??jS;RX(z,Z,(X)=>Y(J,X),(X)=>{if(this.stopped)return;if(this.entries.get(J)!==z)return;if(z.value&&sz(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 z4(J,z,Z=x8,Y){if(Z<=0)return()=>{};let X=new J4(J,z,{hasSubscribers:Y});X.tick();let Q=setInterval(()=>X.tick(),Z);return Q.unref?.(),()=>{clearInterval(Q),X.stop()}}var x8=2000,GS=4000,qS=60000,HS=1500;var Z4=C(()=>{oZ();CX();I1();wX()});import{mkdir as Y4,readFile as VS,unlink as E8,writeFile as WS}from"fs/promises";import{createServer as US}from"net";import{dirname as X4}from"path";import{StringDecoder as fS}from"string_decoder";function DS(){let J=process.env.KOBE_DAEMON_IDLE_GRACE_MS;if(J===void 0)return Q4;let z=Number(J);return Number.isFinite(z)&&z>=0?z:Q4}async function q4(J,z={}){let Z=z.socketPath??iz(z.homeDir),Y=z.pidPath??fZ(z.homeDir),X=z.startedAt??new Date,Q=new Set,q=new Set,H=1,j=new A8({clients:function*(){yield*Q,yield*q},idleGraceMs:DS(),onIdleStop:()=>void Q0().catch((m)=>u1("daemon-idle-shutdown",m))}),B=new rB;B.onPublish((m)=>{G4(Q,{type:"event",name:m.channel,payload:m.payload})});let V=new AB(B,void 0,void 0,async(m)=>{let g=J.getTask(m);if(!g?.worktreePath)return;return FX(g.vendor??YJ,g.worktreePath)}),f=new gH(CH(z.homeDir));await Y4(X4(Z),{recursive:!0}),await Y4(X4(Y),{recursive:!0}),await E8(Z).catch(()=>{});let L=US((m)=>{let g={id:H++,connectedAt:new Date,socket:m,writer:new pB(m),buffer:"",subscribed:!1,holdsLifetime:!1,channels:null};Q.add(g);let J0=new fS("utf8");m.on("data",(w)=>{g.buffer+=J0.write(w),o(g)}),m.on("error",()=>{}),m.on("close",()=>{if(Q.delete(g),g.subscribed)pz("conn",`client #${g.id} (${g.holdsLifetime?"gui":"pane"}) disconnected \u2014 ${Q.size} client(s), ${j.guiCount()} gui left`);j.clientDisconnected(g.holdsLifetime)})}),M=J.subscribeTasks((m)=>{B.publish("task.snapshot",{tasks:m.map(Jz)})}),A=z.checkUpdate??NQ,N=z.updatePollMs??KS,u=()=>{A().then((m)=>B.publish("update",{info:m})).catch((m)=>u1("update-poller",m))},h=null;if(N>0)u(),h=setInterval(u,N),h.unref?.();let I=z.autoTitlePollMs??_B,R=i5(J,I,()=>j.hasSubscribers()),O=_K(B,{statePath:C8(z.homeDir),debounceMs:z.uiPrefsDebounceMs??R8}),S=vK(B,{path:O8(z.homeDir),debounceMs:z.keybindingsDebounceMs??M8}),n=z4(J,B,z.worktreeChangesTickMs??x8,()=>j.hasSubscribers()),i=lK(J,B,z.transcriptActivityTickMs??N8,()=>j.hasSubscribers()),P=dK(J,z.prStatusPollMs??oQ,()=>j.hasSubscribers()),a=null,Y0={socketPath:Z,pidPath:Y,startedAt:X,get webPort(){return a?.port},clients:Q,async close(){if(j.markStopping(),M(),a?.close(),a=null,h)clearInterval(h);R(),P(),O(),S(),n(),i(),V.close(),G4(Q,{type:"event",name:"daemon.stopping",payload:{}});for(let m of Array.from(Q))m.socket.destroy();await new Promise((m)=>L.close(()=>m())),await E8(Z).catch(()=>{}),await E8(Y).catch(()=>{})}};await new Promise((m,g)=>{let J0=L;J0.once("error",g),L.listen(Z,()=>{J0.removeListener("error",g),m()})}),await WS(Y,`${process.pid}
58
+ `,"utf8");async function Q0(){if(j.isStopping())return;j.markStopping(),await z.onStop?.(),setTimeout(()=>{Y0.close().catch((m)=>u1("daemon-shutdown",m))},0).unref()}let e=_Q();function v(m){return{orch:J,bus:B,activity:V,issues:f,daemon:{startedAt:X,socketPath:Z,webPort:a?.port,pid:process.pid,guiCount:()=>j.guiCount(),stopSoon:Q0},clientId:m}}if(z.webPort!==void 0){let m=o6({orch:J,bus:B,activity:V,ctx:v});a=await s6({port:z.webPort,hostname:z.webHost,staticDir:z.webStaticDir,link:m,onEvent:(g)=>B.onPublish(g),onSseOpen:()=>{let g={subscribed:!0,holdsLifetime:!0};return q.add(g),j.guiAttached(),pz("conn",`web client subscribed \u2014 ${Q.size+q.size} client(s), ${j.guiCount()} gui`),()=>{q.delete(g),pz("conn",`web client disconnected \u2014 ${Q.size+q.size} client(s), ${j.guiCount()} gui left`),j.clientDisconnected(!0)}}}),pz("web",`daemon web transport listening on http://${a.hostname}:${a.port}`)}async function j0(m,g){if(m.name==="subscribe"){let J0=iQ(m.payload),w=g.subscribed;g.subscribed=!0;let _=J0.role==="gui"?"gui":"pane";g.holdsLifetime=_==="gui",g.channels=wf(J0.channels);let q0=!w;if(g.holdsLifetime)j.guiAttached();pz("conn",`client #${g.id} subscribed as ${_}${g.channels?` [${[...g.channels].join(",")}]`:""} \u2014 ${Q.size} client(s), ${j.guiCount()} gui${q0?" (collectors resume)":""}`);for(let B0 of B.snapshot()){if(g.channels&&!g.channels.has(B0.channel))continue;JG(g,{type:"event",name:B0.channel,payload:B0.payload})}if(!g.channels||g.channels.has("engine-state"))for(let B0 of V.currentNonIdle())JG(g,{type:"event",name:"engine-state",payload:B0});return{}}return aQ(e,m.name,m.payload,v(g.id))}async function k(m,g){try{let J0=await j0(m,g);JG(g,{type:"response",id:m.id,name:m.name,payload:J0})}catch(J0){JG(g,{type:"response",id:m.id,name:m.name,error:J8(J0)})}}function o(m){let g=m.buffer.indexOf(`
59
+ `);while(g!==-1){let J0=m.buffer.slice(0,g);if(m.buffer=m.buffer.slice(g+1),J0.trim().length>0)try{let w=JSON.parse(J0);if(w.type!=="request")throw Error("daemon only accepts request frames from clients");k(w,m)}catch(w){JG(m,{type:"response",id:"parse-error",error:{message:w instanceof Error?w.message:String(w)}})}g=m.buffer.indexOf(`
60
+ `)}}return Y0}async function PX(J){try{let z=await VS(J,"utf8"),Z=Number(z.trim());return Number.isFinite(Z)?Z:null}catch{return null}}function H4(J){if(J.type==="event")return J.name==="daemon.stopping";return!0}function JG(J,z){J.writer.write(xQ(z),H4(z))}function G4(J,z){let Z=z.type==="event"&&z.name!=="daemon.stopping"?z.name:null,Y=H4(z),X=null;for(let Q of J){if(!Q.subscribed&&z.type==="event")continue;if(Z&&Q.channels&&!Q.channels.has(Z))continue;X??=xQ(z),Q.writer.write(X,Y)}}var KS=21600000,Q4=3000;var $H=C(()=>{zH();Uz();CJ();pf();l5();NH();q8();mK();cK();LX();nK();nz();$K();pK();t6();Z4();NH();q8()});import{unlink as j4}from"fs/promises";function LS(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&&LS(Y),Q=X?"graceful":"absent",q=new Wz(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,U=!1;while(Date.now()<B){try{process.kill(Y,0)}catch{break}if(!U&&Date.now()-(B-5000)>2000){try{process.kill(Y,"SIGTERM")}catch{}Q="sigterm",U=!0}await new Promise((V)=>setTimeout(V,50))}try{process.kill(Y,0),process.kill(Y,"SIGKILL"),Q="sigkill",await new Promise((V)=>setTimeout(V,100))}catch{}}return await j4(J).catch(()=>{}),await j4(z).catch(()=>{}),{pid:Z,method:Q}}var aH=C(()=>{EQ();$H()});var pH={};X1(pH,{testDaemonResponds:()=>_H,ensureDaemonReachable:()=>vX,connectOrStartDaemon:()=>Ez,connectIfRunning:()=>iJ});import{spawn as FS}from"child_process";import{closeSync as MS,existsSync as OS,mkdirSync as AS,openSync as NS}from"fs";import{dirname as B4,resolve as u8}from"path";import{fileURLToPath as RS}from"url";function kS(J,z,Z,Y){let X="ignore",Q;try{AS(B4(Y),{recursive:!0}),Q=NS(Y,"a"),X=["ignore",Q,Q]}catch{X="ignore"}if(FS(J,[...z],{detached:!0,stdio:X,env:Z}).unref(),Q!==void 0)try{MS(Q)}catch{}}async function vX(){let J=iz();if(await _H(J))return J;await hX(J,fZ()).catch(()=>{});let[z,...Z]=bS(CS);kS(z,Z,process.env,eq());let Y=Date.now()+5000;while(Date.now()<Y){if(await _H(J))return J;await new Promise((X)=>setTimeout(X,100))}throw Error(`kobe: daemon did not start (or stayed wedged) at ${J}`)}async function Ez(){let J=await vX(),z=new Wz(J);return await z.connect(),z}async function iJ(){let J=iz();if(!await _H(J))return null;let z=new Wz(J);return await z.connect(),z}async function _H(J,z=gS){let Z=new Wz(J);try{await Z.connect()}catch{return Z.close(),!1}let Y=Z.request("hello",{protocolVersion:Vz}).then(()=>!0).catch(()=>!0),X,Q=new Promise((H)=>{X=setTimeout(()=>H(!1),z)}),q=await Promise.race([Y,Q]);if(X)clearTimeout(X);return Z.close(),q}function bS(J){let z=RS(import.meta.url);if(z.startsWith("/$bunfs")||z.startsWith("B:\\~BUN"))return[process.execPath,...J];let Z=B4(z),Y=[u8(Z,"../cli/index.ts"),u8(Z,"../../../kobe/src/cli/index.ts"),u8(Z,"../cli/index.js")],X=Y.find((Q)=>OS(Q));if(X)return[process.execPath,X,...J];throw Error(`kobe: could not locate kobe entry near ${Z}; checked ${Y.join(", ")}`)}var CS,gS=3000;var IJ=C(()=>{aH();LX();nz();EQ();CS=["daemon","start"]});var V4={};X1(V4,{quickCreate:()=>h8,openWorktreesTab:()=>jG,openUpdateTab:()=>WG,openSettingsTab:()=>HG,openNewTaskTab:()=>VG,openHelpTab:()=>BG,newChatTab:()=>P8,kobeStatusRight:()=>GG,chatTabSwitchBindings:()=>ZG,chatTabRenameBinding:()=>XG,chatTabCloseBinding:()=>YG,chatTabChooseEngineBindings:()=>QG,buildPanesAround:()=>oH,CHAT_TAB_STATUS_FORMAT:()=>mX,CHAT_TAB_STATUS_CURRENT_FORMAT:()=>qG,CHAT_TAB_STATE_OPTION:()=>rH,CHAT_TAB_ENGINE_PROMPT:()=>zG});function ZG(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 YG(J,z="kill-window"){return["bind-key","-n",J,"if-shell","-F","#{>:#{session_windows},1}",z,"display-message 'Cannot close the only ChatTab'"]}function XG(J){return["bind-key","-n",J,"command-prompt","-I","#{window_name}","rename-window -- '%%'"]}function QG(J){return[["bind-key","-n",J,"command-prompt","-p",zG],["bind-key","T","command-prompt","-p",zG]]}function w8(J){return J.startsWith("C-")&&J.length===3?`^${J.slice(2)}`:J}function GG(J){return`${[J.focusLeft?`${w8(J.focusLeft)} tasks`:null,J.detach?`${w8(J.detach)} detach`:null,J.newTab?`${w8(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 oH(J,z){let Z=a1(),Y=await sH(),X=mJ(z.opsCommand??Z+JX({cwd:z.cwd,taskId:z.taskId,claudePaneId:J,cliInvocation:z.inv,vendor:z.vendor})),{stdout:Q}=await fG([["set-option","-p","-t",J,"@kobe_role","claude"],["set-window-option","-t",J,rH,"idle"],["split-window","-h","-b","-t",J,"-l",`${Y}`,"-c",d1(z.cwd),"-P","-F","tasks=#{pane_id}",mJ(Z+PZ(z.inv,{initialTaskId:z.taskId}))],["split-window","-h","-t",J,"-l",`${100-xj}%`,"-c",d1(z.cwd),"-P","-F","ops=#{pane_id}",X],["split-window","-v","-l",`${100-OQ}%`,"-c",d1(z.cwd),"-P","-F","shell=#{pane_id}"],["select-pane","-t",J]]),q=Object.fromEntries(Q.split(`
61
+ `).map((H)=>H.trim()).filter(Boolean).map((H)=>H.split("=",2)));if(await _1([...q.tasks?[["set-option","-p","-t",q.tasks,"@kobe_role",uJ]]:[],...q.tasks?[["set-option","-p","-t",q.tasks,Iz,a0]]:[],...q.ops?[["set-option","-p","-t",q.ops,"@kobe_role",Nz]]:[],...q.ops?[["set-option","-p","-t",q.ops,Iz,a0]]:[],...q.shell?[["set-option","-p","-t",q.shell,"@kobe_role",Rz]]:[]]),q.ops){let H=await Tf();if(H.length>0)await w0(["resize-pane","-t",q.ops,...H])}}async function P8(J,z){if(!await K1(J))return;let Z=await wJ(J,["@kobe_worktree","@kobe_task","@kobe_vendor",AQ]),Y=Z["@kobe_worktree"]||process.cwd(),X=Z["@kobe_task"]||void 0,Q=Z[AQ]||void 0,q=z??Z["@kobe_vendor"];if(z)await IS(J,X,z);let H=cJ(q),j=QX(H,q),B=c1(),V=(await S0(["new-window","-t",`=${J}`,"-c",d1(Y),"-P","-F","#{pane_id}",mJ(zX(vJ(j.argv),Q,Y),eY(a1(),B,J))])).stdout.trim();if(!V)return;if(j.sessionId)await JY(V,cz,j.sessionId);await oH(V,{cwd:Y,taskId:X,inv:B,vendor:q});let{stdout:f}=await S0(["display-message","-p","-t",V,"#{window_id}"]),L=f.trim();if(L)await v8(J,L)}async function HG(J){if(!await K1(J))return;let Z=(await wJ(J,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),Y=c1(),Q=`${a1()}${Y.map(s0).join(" ")} settings`;await fz(J,{cwd:d1(Z),command:Q,name:"settings",surface:!0})}async function jG(J){if(!await K1(J))return;let Z=(await wJ(J,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),Y=c1(),Q=`${a1()}${Y.map(s0).join(" ")} worktrees`;await fz(J,{cwd:d1(Z),command:Q,name:"worktrees",surface:!0})}async function BG(J){if(!await K1(J))return;let Z=(await wJ(J,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),Y=c1(),Q=`${a1()}${Y.map(s0).join(" ")} help-page`;await fz(J,{cwd:d1(Z),command:Q,name:"help",surface:!0})}async function VG(J,z){if(!await K1(J))return;let Y=(await wJ(J,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),X=c1(),Q=a1(),q=z?` --repo ${s0(z)}`:"",H=`${Q}${X.map(s0).join(" ")} new-task${q}`;await fz(J,{cwd:d1(Y),command:H,name:"new task",surface:!0})}async function WG(J){if(!await K1(J))return;let Z=(await wJ(J,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),Y=c1(),Q=`${a1()}${WU({cliInvocation:Y})}`;await fz(J,{cwd:d1(Z),command:Q,name:"update",surface:!0})}async function h8(J){if(!await K1(J))return;let Z=(await wJ(J,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),Y=c1(),Q=`${a1()}${Y.map(s0).join(" ")} quick-task --session ${s0(J)}`;await fz(J,{cwd:d1(Z),command:Q,name:"quick task",surface:!0})}async function IS(J,z,Z){if(await AZ(J,"@kobe_vendor",Z),!z)return;try{let{connectOrStartDaemon:Y}=await Promise.resolve().then(() => (IJ(),pH)),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 zG,rH="@kobe_tab_state",mX="#{?#{==:#{@kobe_tab_state},running},\u25CF,#{?#{==:#{@kobe_tab_state},done},\u2713,#{?#{==:#{@kobe_tab_state},error},!,#{?#{==:#{@kobe_tab_state},unknown},?,\u25CB}}}} #I:#W",qG;var UG=C(()=>{GZ();eJ();sJ();S1();tJ();s1();CJ();hZ();eZ();DX();zG=`engine (${e1.join("/")}/\u2026)`;qG=mX});var _8={};X1(_8,{syncSessionZen:()=>J9,runLayoutAction:()=>xY,resolveShellPane:()=>tH,planWorkspaceSplit:()=>U4,parseLayoutPaneRows:()=>W4,expandedTerminalHeightPercent:()=>f4,engineTabExit:()=>aS,applyZenToNewWindow:()=>v8});function W4(J){let z=[];for(let Z of J.split(`
62
+ `)){let Y=Z.trim();if(!Y)continue;let[X,Q,q,H,j,B,U]=Y.split("\t");if(!X)continue;let V=Number.parseInt(H??"",10),f=Number.parseInt(j??"",10),L=Number.parseInt(B??"",10),M=Number.parseInt(U??"",10);z.push({paneId:X.trim(),role:Q?.trim()??"",active:q?.trim()==="1",paneWidth:Number.isFinite(V)?V:0,paneHeight:Number.isFinite(f)?f:0,windowWidth:Number.isFinite(L)?L:0,windowHeight:Number.isFinite(M)?M:0})}return z}function U4(J){let z=J.find((Y)=>Y.role===BZ);if(!z)return{kind:"missing-engine"};let Z=J.filter((Y)=>Y.role===FQ);if(Z.length+1>=yj)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 tH(J){return J.find((z)=>z.role===Rz)??J.find((z)=>z.role==="")}function f4(J){return 100-(WY(J??Number.NaN)??OQ)}async function Qz(J,z){let Z=z?.trim()||`=${J}`,{code:Y,stdout:X}=await S0(["list-panes","-t",Z,"-F",SS]);return Y===0?W4(X):null}async function m8(J){let{code:z,stdout:Z}=await S0(["list-windows","-t",`=${J}`,"-F","#{window_active}\t#{window_id}"]);if(z!==0)return"";for(let Y of Z.split(`
63
+ `)){let[X,Q]=Y.split("\t");if(X?.trim()==="1"&&Q?.trim())return Q.trim()}return""}async function NZ(J,z){let{code:Z,stdout:Y}=await S0(["show-options","-wqv","-t",J,z]);return Z===0?Y.trim():""}async function d8(J,z,Z){await w0(["set-window-option","-t",J,z,Z])}async function zY(J,z){await w0(["set-window-option","-u","-t",J,z])}async function n8(J){let{code:z,stdout:Z}=await S0(["display-message","-p","-t",J,"#{pane_id}"]);return z===0&&Z.trim()===J}async function v1(J,z){await w0(["display-message","-t",J,z])}async function eH(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 yS(J){let z=c1(),Z=a1();return mJ(Z+JX({cwd:J.cwd,taskId:J.taskId,claudePaneId:J.enginePaneId,cliInvocation:z,vendor:J.vendor}))}async function TS(J,z){return z?.trim()||await m8(J)}async function xS(J,z){let Z=await Qz(J,z);if(!Z)return;let Y=U4(Z);if(Y.kind==="missing-engine"){await v1(z,"kobe: no engine pane in this window");return}if(Y.kind==="maxed"){await v1(z,`kobe: workspace split limit is ${yj} panes`);return}let{cwd:X}=await eH(J),{code:Q,stdout:q}=await S0(["split-window",Y.direction,"-t",Y.targetPane,"-l","50%","-c",d1(X),"-P","-F","#{pane_id}",mJ("true")]),H=q.trim();if(Q!==0||!H)return;await _1([["set-option","-p","-t",H,"@kobe_role",FQ],["select-pane","-t",H]])}async function ES(J,z){let Z=await Qz(J,z);if(!Z)return;let Y=Z.filter((q)=>q.role===FQ);if(Y.length===0){await v1(z,"kobe: no workspace split to close");return}let Q=Y.find((q)=>q.active)??Y[Y.length-1];if(!Q)return;await w0(["kill-pane","-t",Q.paneId])}async function uS(J,z){let Z=await Qz(J,z);if(!Z)return;let Y=Z.filter((X)=>X.role===FQ);if(Y.length===0){await v1(z,"kobe: no workspace splits to reset");return}await _1(Y.map((X)=>["kill-pane","-t",X.paneId]))}async function K4(){return(await dz()).tasksWidth}async function wS(J){let{cwd:z,taskId:Z}=await eH(J),Y=c1(),X=a1();return{cwd:z,command:mJ(X+PZ(Y,{initialTaskId:Z}))}}async function D4(J,z){let Z=await Qz(J,z);if(!Z)return;let Y=Z.find((A)=>A.role===Nz);if(Y){await w0(["kill-pane","-t",Y.paneId]);return}let X=tH(Z),Q=Z.find((A)=>A.role===BZ);if(!Q){await v1(z,"kobe: cannot restore file pane in this layout");return}let{cwd:q,taskId:H,vendor:j}=await eH(J),B=yS({cwd:q,taskId:H,vendor:j,enginePaneId:Q.paneId}),U=X?["split-window","-v","-b","-t",X.paneId,"-l",`${await PS()}%`,"-c",d1(q),"-P","-F","#{pane_id}",B]:["split-window","-h","-t",Q.paneId,"-l",`${await i8()}%`,"-c",d1(q),"-P","-F","#{pane_id}",B],{code:V,stdout:f}=await S0(U),L=f.trim();if(V!==0||!L)return;let M=[["set-option","-p","-t",L,"@kobe_role",Nz],["set-option","-p","-t",L,Iz,a0]];if(X?.role==="")M.push(["set-option","-p","-t",X.paneId,"@kobe_role",Rz]);await _1(M)}async function PS(){return(await dz()).opsHeightPct}async function i8(){return(await dz()).rightColumnWidthPct}async function L4(){return f4((await dz()).opsHeightPct)}async function hS(J){let{code:z,stdout:Z}=await S0(["list-windows","-t",`=${J}`,"-F","#{window_index}"]);if(z!==0)return new Set;return new Set(Z.split(`
64
+ `).map((Y)=>Number.parseInt(Y.trim(),10)).filter((Y)=>Number.isFinite(Y)))}async function F4(J,z){let Z=await hS(J),Y=QU(z);while(Z.has(Y))Y++;return Y}async function M4(J){let z=MQ(J);if(await K1(z))return z;return await w0(["new-session","-d","-s",z,"-n","hidden-panes","-c",d1(process.cwd()),"while :; do sleep 3600; done"]),z}async function l8(J){let z=MQ(J);if(!await K1(z))return;let{code:Z,stdout:Y}=await S0(["list-panes","-s","-t",`=${z}`,"-F","#{@kobe_role}"]);if(Z!==0)return;if(!Y.split(`
65
+ `).some((Q)=>{let q=Q.trim();return q===Rz||q===uJ}))await w0(["kill-session","-t",`=${z}`])}async function vS(J,z){await O4(J,z,Cz)}async function mS(J,z){await O4(J,z,hJ)}async function O4(J,z,Z){let Y=await NZ(z,Z);if(!Y)return;if(await n8(Y))await w0(["kill-pane","-t",Y]);await zY(z,Z)}async function c8(J,z){await vS(J,z),await mS(J,z),await l8(J)}function A4(J){return J.find((z)=>z.role===BZ)??J[0]}async function $8(J,z,Z){let Y=A4(Z);if(!Y)return await v1(z,"kobe: cannot restore Tasks pane in this layout"),!1;let X=await K4(),{cwd:Q,command:q}=await wS(J),{code:H,stdout:j}=await S0(["split-window","-h","-b","-t",Y.paneId,"-l",`${X}`,"-c",d1(Q),"-P","-F","#{pane_id}",q]),B=j.trim();if(H!==0||!B)return!1;return await _1([["set-option","-p","-t",B,"@kobe_role",uJ],["set-option","-p","-t",B,Iz,a0],["select-pane","-t",B]]),await zY(z,hJ),await v1(z,"kobe: Tasks pane restored"),!0}async function N4(J,z,Z){let Y=await M4(J),X=await F4(Y,z),{code:Q,stdout:q}=await S0(["break-pane","-d","-s",Z.paneId,"-t",`${Y}:${X}`,"-P","-F","#{pane_id}"]),H=q.trim()||Z.paneId;if(Q!==0||!H){await v1(z,"kobe: could not hide Tasks pane");return}await d8(z,hJ,H),await v1(z,"kobe: Tasks pane hidden")}async function a8(J,z,Z){let Y=await Qz(J,z);if(!Y)return;if(!await n8(Z)){await zY(z,hJ);let q=Y.find((H)=>H.role===uJ);if(q){await w0(["select-pane","-t",q.paneId]);return}await $8(J,z,Y);return}let X=A4(Y);if(!X){await v1(z,"kobe: cannot restore Tasks pane in this layout");return}if(await w0(["join-pane","-h","-b","-s",Z,"-t",X.paneId,"-l",`${await K4()}`])!==0){await v1(z,"kobe: could not restore Tasks pane");return}await _1([["set-option","-p","-t",Z,"@kobe_role",uJ],["set-option","-p","-t",Z,Iz,a0],["select-pane","-t",Z]]),await zY(z,hJ),await l8(J),await v1(z,"kobe: Tasks pane restored")}async function cS(J,z){let Z=await NZ(z,hJ);if(Z){await a8(J,z,Z);return}let Y=await Qz(J,z);if(!Y)return;let X=Y.find((Q)=>Q.role===uJ);if(X){await N4(J,z,X);return}await $8(J,z,Y)}async function dS(J,z){let Z=await NZ(z,hJ);if(Z){await a8(J,z,Z);return}let Y=await Qz(J,z);if(!Y)return;let X=Y.find((Q)=>Q.role===uJ);if(X){await w0(["select-pane","-t",X.paneId]);return}await $8(J,z,Y)}async function R4(J,z,Z){if(Z.role==="")await w0(["set-option","-p","-t",Z.paneId,"@kobe_role",Rz]);let Y=await M4(J),X=await F4(Y,z),{code:Q,stdout:q}=await S0(["break-pane","-d","-s",Z.paneId,"-t",`${Y}:${X}`,"-P","-F","#{pane_id}"]),H=q.trim()||Z.paneId;if(Q!==0||!H){await v1(z,"kobe: could not hide terminal pane");return}await d8(z,Cz,H),await v1(z,"kobe: Terminal pane hidden")}async function C4(J,z,Z){let Y=Z.find((U)=>U.role===Nz),X=Z.find((U)=>U.role===BZ);if(!Y&&!X)return await v1(z,"kobe: cannot restore terminal pane in this layout"),!1;let{cwd:Q}=await eH(J),q=Y?["split-window","-v","-t",Y.paneId,"-l",`${await L4()}%`,"-c",d1(Q),"-P","-F","#{pane_id}"]:["split-window","-h","-t",X?.paneId??"","-l",`${await i8()}%`,"-c",d1(Q),"-P","-F","#{pane_id}"],{code:H,stdout:j}=await S0(q),B=j.trim();if(H!==0||!B)return!1;return await w0(["set-option","-p","-t",B,"@kobe_role",Rz]),await zY(z,Cz),await v1(z,"kobe: Terminal pane restored"),!0}async function g4(J,z,Z){let Y=await Qz(J,z);if(!Y)return;if(!await n8(Z)){await zY(z,Cz),await C4(J,z,Y);return}let X=Y.find((B)=>B.role===Nz),Q=Y.find((B)=>B.role===BZ);if(!X&&!Q){await v1(z,"kobe: cannot restore terminal pane in this layout");return}let q=X?["join-pane","-v","-s",Z,"-t",X.paneId,"-l",`${await L4()}%`]:["join-pane","-h","-s",Z,"-t",Q?.paneId??"","-l",`${await i8()}%`];if(await w0(q)!==0){await v1(z,"kobe: could not restore terminal pane");return}await w0(["set-option","-p","-t",Z,"@kobe_role",Rz]),await zY(z,Cz),await l8(J),Y=await Qz(J,z);let j=Y?.find((B)=>B.paneId===Z);if(j)await w0(["select-pane","-t",j.paneId]);await v1(z,"kobe: Terminal pane restored")}async function nS(J,z){let Z=await NZ(z,Cz);if(Z){await g4(J,z,Z);return}let Y=await Qz(J,z);if(!Y)return;let X=tH(Y);if(X){await R4(J,z,X);return}await C4(J,z,Y)}async function iS(J){let z=Vq();if(DU(!z),z){await S4(J);return}await I4(J)}async function J9(J){if(!await K1(J))return;let z=Vq(),Z=(await EY(J,tY)).length>0;if(z===Z)return;if(z)await I4(J);else await S4(J)}async function k4(J){let{code:z,stdout:Z}=await S0(["list-windows","-t",`=${J}`,"-F","#{window_id}"]);if(z!==0)return[];return Z.split(`
66
+ `).map((Y)=>Y.trim()).filter((Y)=>Y.length>0)}async function b4(J,z){return!!(await Qz(J,z))?.some((Y)=>Y.role===BZ)}async function I4(J){let z=await k4(J);for(let Z of z){if(!await b4(J,Z))continue;if(await NZ(Z,wZ))continue;await y4(J,Z)}await AZ(J,tY,"1"),await v1(`=${J}`,"kobe: Zen mode on \u2014 all tabs")}async function S4(J){let z=await k4(J);for(let Z of z){let Y=await NZ(Z,wZ);if(Y)await lS(J,Z,Y)}await w0(["set-option","-u","-t",J,tY]),await v1(`=${J}`,"kobe: Zen mode off \u2014 all tabs")}async function v8(J,z){let Z=(await EY(J,tY)).length>0;if(!Z&&!Vq())return;if(!Z)await AZ(J,tY,"1");if(await NZ(z,wZ))return;if(!await b4(J,z))return;await y4(J,z)}async function y4(J,z){let Z=await Qz(J,z);if(!Z)return;let Y=[],X=Z.find((q)=>q.role===Nz);if(X)await w0(["kill-pane","-t",X.paneId]),Y.push(Nz);let Q=tH(Z);if(Q)await R4(J,z,Q),Y.push(Rz);if(!fU()){let q=Z.find((H)=>H.role===uJ);if(q)await N4(J,z,q),Y.push(uJ)}if(Y.length===0){await v1(z,"kobe: already focused \u2014 nothing to hide");return}await d8(z,wZ,Y.join(",")),await v1(z,"kobe: Zen mode on")}async function lS(J,z,Z){let Y=new Set(Z.split(",").map((X)=>X.trim()));if(Y.has(uJ)){let X=await NZ(z,hJ);if(X)await a8(J,z,X)}if(Y.has(Nz)){let X=await Qz(J,z);if(X&&!X.some((Q)=>Q.role===Nz))await D4(J,z)}if(Y.has(Rz)){let X=await NZ(z,Cz);if(X)await g4(J,z,X)}await zY(z,wZ),await v1(z,"kobe: Zen mode off")}async function T4(J){let{code:z,stdout:Z}=await S0(["list-windows","-t",`=${J}`,"-F","#{window_id}"]);if(z!==0)return 0;return Z.split(`
67
+ `).filter((Y)=>Y.trim().length>0).length}async function $S(J,z){if(await T4(J)<=1){await v1(z,"Cannot close the only ChatTab");return}await c8(J,z),await w0(["kill-window","-t",z])}async function aS(J){if(!await K1(J))return;let z=await m8(J);if(!z)return;if(await T4(J)>1){await c8(J,z),await w0(["kill-window","-t",z]);return}let{newChatTab:Z}=await Promise.resolve().then(() => (UG(),V4));if(await Z(J),await m8(J)!==z)await c8(J,z),await w0(["kill-window","-t",z])}async function xY(J,z,Z={}){if(!await K1(J))return;let Y=await TS(J,Z.windowId);if(!Y)return;switch(z){case"workspace-split":await xS(J,Y);return;case"workspace-close":await ES(J,Y);return;case"workspace-reset":await uS(J,Y);return;case"tasks-toggle":await cS(J,Y);return;case"tasks-restore":await dS(J,Y);return;case"ops-toggle":await D4(J,Y);return;case"terminal-toggle":await nS(J,Y);return;case"zen-toggle":await iS(J);return;case"chat-tab-close":await $S(J,Y);return}}var SS="#{pane_id}\t#{@kobe_role}\t#{pane_active}\t#{pane_width}\t#{pane_height}\t#{window_width}\t#{window_height}";var eZ=C(()=>{GZ();sJ();uj();S1();tJ();CJ();hZ();DX()});function x4(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 E4={};X1(E4,{archivedHistoryPreviewEnabled:()=>p8,ARCHIVED_HISTORY_PREVIEW_KEY:()=>KG});function p8(){return rJ(KG,!1)}var KG="experimental.archivedHistoryPreview";var z9=C(()=>{mz()});async function DG(J,z){let Z=null;for(let X=0;X<24;X++){let Q=await cX(J);if(Q){if(!z)return{pane:Q,ready:!0};let q=(await dX(Q)).trim();if(q.length>0&&q===Z)return{pane:Q,ready:!0};Z=q}await u4(250)}return{pane:await cX(J)||await r8(J),ready:!1}}async function LG(J,z){let Z=`kobe-api-${J.replace(/[^A-Za-z0-9]/g,"")}`;await w0(["set-buffer","-b",Z,"--",z]),await w0(["paste-buffer","-p","-d","-b",Z,"-t",J]),await u4(_S),await FG(J,"Enter")}async function w4(J,z){let{pane:Z}=await DG(J,!0);if(!Z)return;await LG(Z,z.text)}var u4=(J)=>new Promise((z)=>setTimeout(z,J)),_S=150;var Z9=C(()=>{S1()});import{spawnSync as pS}from"child_process";function P4(J,z){if(J==="darwin")return"pbcopy";if(J==="linux"){for(let Z of rS)if(z(Z.binary))return Z.command;return null}return null}function v4(J){let z=[["set-option","-g","set-clipboard","on"]];if(J)for(let Z of oS)for(let Y of sS)z.push(["bind-key","-T",Z,Y,"send-keys","-X","copy-pipe-and-cancel",J]);return z}var rS,h4=(J)=>{try{let z=process.platform==="win32"?"where":"which";return pS(z,[J],{encoding:"utf8"}).status===0}catch{return!1}},oS,sS;var m4=C(()=>{rS=[{binary:"wl-copy",command:"wl-copy"},{binary:"xclip",command:"xclip -selection clipboard -in"},{binary:"xsel",command:"xsel --clipboard --input"}];oS=["copy-mode","copy-mode-vi"],sS=["MouseDragEnd1Pane","y","Enter"]});import{existsSync as c4,readFileSync as tS}from"fs";function d4(){uY=null}function eS(){let J=dW();if(c4(J))return{canonical:J,found:J};let z=J.replace(/\.yaml$/,".yml");if(c4(z))return{canonical:J,found:z};return{canonical:J,found:null}}function Y9(){if(uY)return uY;let{canonical:J,found:z}=eS();if(!z)return uY={path:J,exists:!1,doc:null,warnings:[]},uY;let Z=[],Y=null;try{let X=tS(z,"utf8");Y=Bun.YAML.parse(X)}catch(X){let Q=X instanceof Error?X.message:String(X);Z.push(`could not read/parse ${z}: ${Q}`)}return uY={path:J,exists:!0,doc:Y,warnings:Z},uY}var uY=null;var o8=C(()=>{o1()});function nX(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 Gy(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 Q=new Set;for(let j of Y){let B=Zy[j];if(!B)return{error:`"${J}": unknown modifier "${j}" (use ctrl / cmd / alt / shift)`};Q.add(B)}if(X=Yy[X]??X,Q.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=Qy.filter((j)=>Q.has(j)).join("+"),H=q?`${q}+${X}`:X;if(X.length>1&&!Xy.has(X))return{chord:H,warning:`"${J}": unrecognized key name "${X}" \u2014 the chord may never fire`};return{chord:H}}function X9(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}function qy(J){if(J==="darwin")return["darwin","macos","mac"];if(J==="win32")return["win32","windows"];return[J]}function Hy(J){if(!X9(J))return null;let z=J.bindings;if(X9(z))return z;return J}function Q9(J,z,Z){let Y=[];if(J===null||J===void 0)return{entries:[],warnings:Y};if(!X9(J))return{entries:[],warnings:["config root must be a YAML mapping (e.g. a top-level `bindings:` key)"]};let X=new Map,Q=[];if(J.bindings!==void 0)if(X9(J.bindings))Q.push(J.bindings);else Y.push("`bindings:` must be a mapping of id \u2192 chord(s)");for(let q of qy(z)){let H=J[q];if(H===void 0)continue;let j=Hy(H);if(j)Q.push(j);else Y.push(`\`${q}:\` must be a mapping (or contain a \`bindings:\` mapping)`)}for(let q of Q)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 U=[],V=!1;for(let f of B){if(typeof f!=="string"){Y.push(`${H}: chord entries must be strings`),V=!0;continue}let L=Gy(f,Z?.chordOptsFor?.(H));if("error"in L){Y.push(`${H}: ${L.error}`),V=!0;continue}if(L.warning)Y.push(`${H}: ${L.warning}`);if(!U.includes(L.chord))U.push(L.chord)}if(U.length===0&&V){Y.push(`${H}: no valid chords \u2014 keeping the default`);continue}X.set(H,U)}return{entries:Array.from(X,([q,H])=>({id:q,keys:H})),warnings:Y}}function jy(J,z){return J===z||J==="global"||z==="global"}function n4(J,z){let Z=[],Y=[];for(let X of z){let Q=J.find((V)=>V.id===X.id);if(!Q){Z.push(`${X.id}: unknown binding id (press F1 in kobe for the full list)`);continue}let q=s8[X.id];if(q){Z.push(`${X.id}: not customizable \u2014 ${q}`);continue}if(Q.keys.length===0){Z.push(`${X.id}: not customizable \u2014 the key is handled outside the keymap (doc-only row)`);continue}let H=Jy[X.id];if(H&&X.keys.length>0){let V=H.validateCount(X.keys.length);if(V){Z.push(`${X.id}: ${V} \u2014 keeping the default`);continue}}let j=X.keys.filter((V)=>{if(V.length===1&&zy.has(Q.scope))return Z.push(`${X.id}: "${V}" dropped \u2014 a bare character on a ${Q.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=Q.keys,U=Q;if(U.keys=j,Q.hint)if(j.length===0)U.hint=void 0;else Q.hint.keys=j.join("/");Y.push({id:X.id,keys:j,defaultKeys:B})}for(let X of Y)for(let Q 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(Q))continue;if(!jy(q.scope,H.scope))continue;Z.push(`${X.id}: "${Q}" also fires ${H.id} (${H.scope} scope) \u2014 last registration wins; consider a different chord`)}}return{applied:Y,warnings:Z}}var s8,Jy,zy,Zy,Yy,Xy,Qy;var G9=C(()=>{s8={"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)"};Jy={"sidebar.nav":nX("down","up"),"files.nav":nX("down","up"),"sidebar.search.nav":nX("down","up"),"files.hierarchy":nX("collapse","expand"),"sidebar.view":nX("previous view","next view"),"files.tab":nX("previous tab","next tab")},zy=new Set(["global","workspace","terminal"]),Zy={ctrl:"ctrl",control:"ctrl",ctl:"ctrl",cmd:"cmd",command:"cmd",meta:"cmd",super:"cmd",win:"cmd",alt:"alt",option:"alt",opt:"alt",shift:"shift"},Yy={esc:"escape",spacebar:"space",pgup:"pageup",pgdn:"pagedown",pgdown:"pagedown"},Xy=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}`)]),Qy=["ctrl","cmd","alt","shift"]});function iX(J){return J in i4}function hY(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 Q;if(Y.length===1)Q=X.has("shift")?Y.toUpperCase():Y;else{let j=Vy[Y];if(!j)return{error:`"${J}": tmux can't bind the key "${Y}"`};Q=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+Q}}function $4(){let J={};for(let[Z,Y]of Object.entries(PY)){let X=hY(Y,{allowBare:iX(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=ZY.map((Z)=>{let Y=hY(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 t8(J){let z=$4(),Z=new Set;for(let Y of J){if(!Y.id.startsWith("tmux."))continue;if(Y.id===tz){if(Y.keys.length===0){z.focus=[null,null,null,null],Z.add(tz);continue}if(Y.keys.length!==ZY.length){z.warnings.push(`${tz}: 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 U=hY(B);if("error"in U){z.warnings.push(`${tz}: ${U.error} \u2014 keeping the default`),j=!1;break}H.push({chord:B,key:U.key})}if(!j)continue;z.focus=H,Z.add(tz);continue}if(!(Y.id in PY)){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 Q=Y.keys[0],q=hY(Q,{allowBare:iX(X)});if("error"in q){z.warnings.push(`${X}: ${q.error} \u2014 keeping the default`);continue}if(Q!==PY[X])Z.add(X);z.binds[X]={chord:Q,key:q.key}}return z.overridden=Z,z}function e8(J){return J.startsWith("tmux.")?{allowShiftCharacter:!0}:{}}function a4(){wY=null}function q9(){if(wY)return wY;let J=Y9();if(!J.exists||J.doc===null)return wY=$4(),wY;let z=Q9(J.doc,process.platform,{chordOptsFor:e8}),Z=z.warnings.filter((X)=>X.startsWith("tmux.")),Y=t8(z.entries);Y.warnings=[...Z,...Y.warnings];for(let X of Y.warnings)console.warn(`[kobe/keybindings] ${X}`);return wY=Y,wY}var By,i4,l4,PY,tz="tmux.focus",ZY,Vy,wY=null;var H9=C(()=>{o8();G9();By={"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"},i4={"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"},l4=["F6","F7","F8","F9","F10","F11"],PY={...By,...i4};ZY=["ctrl+h","ctrl+j","ctrl+k","ctrl+l"],Vy={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}`]))}});function JV(J,z,Z){let Y=`#{?window_zoomed_flag,1,#{?${Wy[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}`]}function zV(J){return`if-shell -F '#{?#{==:#{@kobe_role},tasks},,1}' { run-shell -b ${s0(J)} }`}async function _4(J){let z=a1(),Z=J.map(s0).join(" "),Y=`${z}${Z} new-chattab --session '#{session_name}'`,X=`${Y} --vendor '%%'`,Q=`run-shell ${s0(X)}`,q=`${z}${Z} focus-tasks --session '#{session_name}' --window '#{window_id}'`,H=`run-shell ${s0(q)}`,j=(e)=>`${z}${Z} layout --session '#{session_name}' --window '#{window_id}' --action ${e}`,B=j("tasks-restore"),U=j("chat-tab-close"),V=`run-shell ${s0(U)}`,f=`${z}${Z} heal-layout --session '#{session_name}'`,L=`run-shell -b ${s0(f)}`,M=`${z}${Z} resync-window --session '#{session_name}' --client '#{client_name}' --cols '#{client_width}' --rows '#{client_height}' --status '#{status}'`,A=`run-shell -b ${s0(M)}`,N=`${z}${Z} capture-layout --session '#{session_name}'`,u=`run-shell -b ${s0(N)}`,h=UU({tmuxSocket:lJ}),I=P4(process.platform,h4),R=v4(I),O=q9(),S=l4.map((e)=>["unbind-key","-n",e]);if(O.overridden.has(tz))for(let e of ZY){let v=hY(e);if("key"in v)S.push(["unbind-key","-n",v.key])}for(let e of O.overridden){if(e===tz)continue;let v=PY[e],j0=iX(e),k=hY(v,{allowBare:j0});if("key"in k)S.push(j0?["unbind-key",k.key]:["unbind-key","-n",k.key])}let n=["-L","-D","-U","-R"],i=O.focus.flatMap((e,v)=>{let j0=n[v],k=j0==="-L"?zV(B):void 0;return e&&j0?[JV(e.key,j0,k)]:[]}),P=O.binds,a=(e,v)=>{let j0=P[e];return j0?[["bind-key",j0.key,"run-shell",j(v)]]:[]},Y0=(...e)=>{let v=e.map((j0)=>P[j0]?.chord).filter((j0)=>!!j0);return v.length>0?v.join("/"):null},Q0="#{?#{@kobe_surface},0,1}";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",mX],["set-option","-g","window-status-current-format",qG],["set-option","-g","status-right",GG({focusLeft:O.focus[0]?.key??null,detach:P["tmux.detach"]?.key??null,newTab:P["tmux.tab.new"]?.key??null,layoutSplits:Y0("tmux.layout.workspaceSplit","tmux.layout.workspaceClose","tmux.layout.workspaceReset"),layoutPanes:Y0("tmux.layout.tasksToggle","tmux.layout.opsToggle","tmux.layout.terminalToggle","tmux.layout.zenToggle")})],["set-option","-g","mouse","on"],...R,["set-hook","-g","window-resized",L],["set-hook","-g","client-resized",A],["set-hook","-g","pane-exited",L],["set-hook","-g","window-layout-changed",u],...S,...P["tmux.detach"]?[["bind-key","-n",P["tmux.detach"].key,"if-shell","-F",`#{?#{${hJ}},1,#{==:#{@kobe_role},tasks}}`,"detach-client",H]]:[],...i,...P["tmux.tab.new"]?[["bind-key","-n",P["tmux.tab.new"].key,"run-shell",Y]]:[],...P["tmux.tab.chooseEngine"]?QG(P["tmux.tab.chooseEngine"].key).map((e)=>[...e,Q]):[],...P["tmux.tab.prev"]&&P["tmux.tab.next"]?ZG(P["tmux.tab.prev"].key,P["tmux.tab.next"].key):P["tmux.tab.prev"]?[["bind-key","-n",P["tmux.tab.prev"].key,"if-shell","-F",Q0,"previous-window"]]:P["tmux.tab.next"]?[["bind-key","-n",P["tmux.tab.next"].key,"if-shell","-F",Q0,"next-window"]]:[],...P["tmux.tab.close"]?[YG(P["tmux.tab.close"].key,V)]:[],...P["tmux.tab.rename"]?[XG(P["tmux.tab.rename"].key)]:[],...a("tmux.layout.workspaceSplit","workspace-split"),...a("tmux.layout.workspaceClose","workspace-close"),...a("tmux.layout.workspaceReset","workspace-reset"),...a("tmux.layout.tasksToggle","tasks-toggle"),...a("tmux.layout.opsToggle","ops-toggle"),...a("tmux.layout.terminalToggle","terminal-toggle"),...a("tmux.layout.zenToggle","zen-toggle"),["bind-key","f","run-shell",`${z}${Z} quick-create --session '#{session_name}'`],["bind-key","u","display-popup","-E",h]])}var Wy;var ZV=C(()=>{S1();m4();H9();tJ();UG();hZ();Wy={"-L":"pane_at_left","-D":"pane_at_bottom","-U":"pane_at_top","-R":"pane_at_right"}});async function p4(J){let z=J.launchInit,Z=Gq(J.repo),Y=c1(),X=(J.archived===!0||J.preview===!0)&&p8(),Q=X?{argv:[],sessionId:void 0}:QX(J.command,J.vendor),q=J.repo!==void 0&&J.cwd===J.repo,H=q||Z?void 0:J.taskId,j=q&&!Z?J.taskId:void 0,B=hq(Pq(Q.argv,J.vendor,H),J.vendor,j),U=[...Y,"history","--worktree",J.archivedWorktree??J.cwd,...J.vendor?["--vendor",J.vendor]:[],...J.title?["--title",J.title]:[],...J.preview&&!J.archived?["--live"]:[]],V=zX(vJ(X?U:B),Z,J.cwd),f=X?HU(V):BU(V,{initScript:Z?void 0:z?.initScript,markerPath:!Z&&z?.initScript?iW(J.cwd):void 0,timeoutSeconds:Ej(process.env.KOBE_REPO_INIT_TIMEOUT_SECONDS)},eY(a1(),Y,J.name)),M=(await S0(["new-session","-d","-s",J.name,"-c",d1(J.cwd),...YV(),"-P","-F","#{pane_id}",f])).stdout.trim();if(!M)return console.error("[kobe tmux] new-session returned no pane id; session creation failed"),!1;if(Q.sessionId)await JY(M,cz,Q.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]]:[],...Z?[["set-option","-t",J.name,AQ,Z]]:[]]),process.env.TMUX){let{sizeArgs:N}=await j9();if(N.length>0)await w0(["resize-window","-t",`=${J.name}`,...N])}await oH(M,{cwd:J.cwd,taskId:J.taskId,opsCommand:J.opsCommand,inv:Y,vendor:J.vendor}),await _4(Y),await AY(),await w0(["select-pane","-t",M]);let A=z?.firstMessage;if(A)w4(J.name,A).catch((N)=>console.error("[kobe tmux] first message delivery failed:",N));return!0}var r4=C(()=>{GZ();eJ();o1();sJ();z9();S1();Z9();tJ();pq();UG();hZ();ZV();qJ()});async function xX(J){let z=XV.get(J.name);if(z)return z;let Z=fy(J);XV.set(J.name,Z);try{return await Z}finally{XV.delete(J.name)}}function QV(J){let z="",Z="",Y=!1,X=new Set;for(let Q of J.split(`
68
+ `)){let[q,H,j,B,U]=Q.split("\t");if(!q?.trim())continue;if(X.add(q.trim()),!z&&B?.trim())z=B.trim();if(!Z&&U?.trim())Z=U.trim();if(H?.trim()==="1"&&j?.trim()==="claude")Y=!0}return{worktree:z,vendor:Z,claudePaneAlive:Y,windowCount:X.size}}async function o4(J){if(!await K1(J))return null;let{code:z,stdout:Z}=await S0(["list-panes","-s","-t",`=${J}`,"-F",Uy]);if(z!==0)return{worktree:"",vendor:"",claudePaneAlive:!1,windowCount:0};return QV(Z)}async function B9(J){let Z=(await o4(J))?.vendor.trim();return Z?Z:null}async function fy(J){let z=await o4(J.name),Z=x4(z,{cwd:J.cwd,vendor:J.vendor,hasEngineCommand:J.command.length>0}),Y=Gq(J.repo);if(Z.kind==="reuse")return await lZ(J.name,{cwd:J.cwd,taskId:J.taskId,vendor:J.vendor}),!0;if(Z.kind==="respawn-engine"){let X=await yf(J.name,J.cwd,J.command,Y,J.vendor);if(X==="switched"){if(J.vendor)await AZ(J.name,"@kobe_vendor",J.vendor);return await lZ(J.name,{cwd:J.cwd,taskId:J.taskId,vendor:J.vendor,vendorChanged:!0}),!0}if(X==="respawn-failed")return await lZ(J.name,{cwd:J.cwd,taskId:J.taskId,vendor:J.vendor}),!0}if(Z.kind==="rebuild"||Z.kind==="respawn-engine")await nJ(J.name);return p4(J)}var XV,Uy="#{window_id}\t#{window_active}\t#{@kobe_role}\t#{@kobe_worktree}\t#{@kobe_vendor}";var s4=C(()=>{sJ();S1();DX();r4();XV=new Map});var $J={};X1($J,{tmuxWindowSizeArgsForClient:()=>HV,tmuxSessionName:()=>T1,tmuxInitialSizeArgs:()=>YV,tmuxInitialClientSize:()=>qV,tmuxAvailable:()=>Kz,tasksRestoreEdgeCommand:()=>zV,switchClientBeforeKill:()=>oz,sessionExists:()=>K1,selectTasksPane:()=>Fy,runLayoutAction:()=>xY,resyncWindowToClient:()=>Ly,refreshKobeWorkspacePanes:()=>KX,quickCreate:()=>h8,prepareWindowForSwitch:()=>JD,prepareWindowForAttach:()=>V9,parseTmuxClientRows:()=>t4,parseObservedSession:()=>QV,openWorktreesTab:()=>jG,openUpdateTab:()=>WG,openSettingsTab:()=>HG,openNewTaskTab:()=>VG,openHelpTab:()=>BG,observeSessionVendor:()=>B9,newChatTab:()=>P8,kobeStatusRight:()=>GG,killSession:()=>nJ,healSessionLayout:()=>xf,focusBindCommand:()=>JV,enterWindow:()=>Dy,ensureSession:()=>xX,currentSessionName:()=>SJ,clientsWithConflictingSize:()=>e4,chatTabSwitchBindings:()=>ZG,chatTabRenameBinding:()=>XG,chatTabCloseBinding:()=>YG,chatTabChooseEngineBindings:()=>QG,captureGlobalLayoutOnDrag:()=>Ef,captureGlobalLayout:()=>KB,attachedWindowInfo:()=>j9,attachArgv:()=>lX,PANE_VERSION_OPTION:()=>Iz,CHAT_TAB_STATUS_FORMAT:()=>mX,CHAT_TAB_STATUS_CURRENT_FORMAT:()=>qG,CHAT_TAB_STATE_OPTION:()=>rH,CHAT_TAB_ENGINE_PROMPT:()=>zG});function YV(J=process.stdout,z=process.env){let Z=qV(J,z);return Z?["-x",`${Z.columns}`,"-y",`${Z.rows}`]:[]}function qV(J=process.stdout,z=process.env){let Z=YY(J.columns)??YY(z.COLUMNS),Y=YY(J.rows)??YY(z.LINES);return Z&&Y?{columns:Z,rows:Y}:null}function YY(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 t4(J){let z=[];for(let Z of J.split(`
69
+ `)){let[Y,X,Q,q,H]=Z.split("\t"),j=YY(Q?.trim()),B=YY(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 e4(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 HV(J,z){let Z=Math.max(1,J.rows-(z.status?.trim()==="on"?1:0));return["-x",`${J.columns}`,"-y",`${Z}`]}async function jV(J,z,Z={}){if(!z)return;let{code:Y,stdout:X}=await S0(["list-clients","-t",`=${J}`,"-F",Ky]);if(Y!==0)return;let Q=e4(t4(X),J,z,Z),q=[];if(Z.currentClientName)q.push(["refresh-client","-f","!ignore-size","-t",Z.currentClientName]);for(let H of Q)q.push(["refresh-client","-f","ignore-size","-t",H]);if(q.length>0)await _1(q)}async function V9(J){iZ(J,"resize");let z=qV();await jV(J,z);let Z=z?["-x",`${z.columns}`,"-y",`${z.rows}`]:[];if(Z.length>0)await w0(["resize-window","-t",`=${J}`,...Z]);await lZ(J)}async function j9(){let{code:J,stdout:z}=await S0(["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,Q]=z.trim().split("\t"),q=YY(Y),H=YY(X),j=q&&H?{columns:q,rows:H}:null;return{sizeArgs:j?HV(j,{status:Q}):[],clientSize:j,clientName:Z?.trim()||void 0}}async function JD(J){iZ(J,"resize");let z=await j9();await jV(J,z.clientSize,{currentClientName:z.clientName});let Z=z.sizeArgs;if(Z.length>0)await w0(["resize-window","-t",`=${J}`,...Z]);await lZ(J)}async function Dy(J){await JD(J),await w0(["switch-client","-t",`=${J}`])}async function Ly(J,z){if(!z.size)return;iZ(J,"resize"),await jV(J,z.size,{currentClientName:z.clientName});let Z=HV(z.size,{status:z.status}),{commands:Y}=await fB(J,{force:!0});await _1([["resize-window","-t",`=${J}`,...Z],...Y])}async function GV(J,z,Z){let Y=Z?.trim()||`=${J}`,{code:X,stdout:Q}=await S0(["list-panes","-t",Y,"-F","#{pane_id}\t#{@kobe_role}"]);if(X!==0)return"";for(let q of Q.split(`
70
+ `)){let[H,j]=q.split("\t");if(H?.trim()&&j?.trim()===z)return H.trim()}return""}async function Fy(J,z={}){if(!await K1(J))return"";let Z=await GV(J,uJ,z.windowId);if(!Z){if(!await GV(J,BZ,z.windowId))return"";await xY(J,"tasks-restore",{windowId:z.windowId}),Z=await GV(J,uJ,z.windowId)}if(!Z)return"";return await w0(["select-pane","-t",Z]),Z}var Ky="#{client_name}\t#{client_session}\t#{client_width}\t#{client_height}\t#{client_flags}";var qJ=C(()=>{S1();tJ();eZ();fX();DX();S1();UG();DX();eZ();s4();ZV()});var aX={};X1(aX,{windowIsSurface:()=>gy,windowCount:()=>Ay,tmuxSessionName:()=>T1,tmuxCommandSequence:()=>VV,tmuxAvailable:()=>Kz,tmuxArgs:()=>vY,termAllPaneGroups:()=>KV,tagPaneRole:()=>XD,tagClaudePane:()=>Cy,switchClientBeforeKill:()=>oz,setWindowOption:()=>JY,setSessionOption:()=>AZ,sessionExists:()=>K1,sendKeys:()=>W9,sendKeyName:()=>FG,runTmuxSequenceCapturing:()=>fG,runTmuxSequence:()=>_1,runTmuxCapturing:()=>S0,runTmux:()=>w0,readLayoutGeometry:()=>dz,paneIdByRole:()=>UV,newWindow:()=>fz,killSession:()=>nJ,globalTasksPaneWidth:()=>sH,getSessionOptions:()=>wJ,getSessionOption:()=>EY,getServerOptions:()=>YD,getServerOption:()=>Ny,ensureFallbackSession:()=>U9,currentSessionName:()=>SJ,claudePaneIdStrict:()=>cX,claudePaneId:()=>r8,capturePaneById:()=>dX,attachArgv:()=>lX,SURFACE_WINDOW_OPTION:()=>fV,PANE_ROLE_OPTION:()=>MG,KOBE_TMUX_SOCKET:()=>lJ,KOBE_HOME_SESSION:()=>GD,CLAUDE_ROLE_OPTION:()=>Ry,CHAT_TAB_SESSION_ID_OPTION:()=>cz});import{homedir as My}from"os";function vY(...J){return["tmux","-L",lJ,...J]}function T1(J){return`kobe-${J.replace(/[^A-Za-z0-9_-]/g,"")}`}function lX(J){return vY("attach-session","-t",`=${J}`)}async function BV(J){if(!J)return"";try{return await new Response(J).text()}catch{return""}}async function w0(J){try{let z=Bun.spawn(vY(...J),{stdin:"ignore",cwd:$X,stdout:"ignore",stderr:"pipe"}),[Z,Y]=await Promise.all([BV(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 Oy(J){try{return await Bun.spawn(vY(...J),{stdin:"ignore",cwd:$X,stdout:"ignore",stderr:"ignore"}).exited}catch{return 1}}function VV(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 _1(J){let z=VV(J);return z.length===0?0:w0(z)}async function S0(J){try{let z=Bun.spawn(vY(...J),{stdin:"ignore",cwd:$X,stdout:"pipe",stderr:"pipe"}),[Z,Y,X]=await Promise.all([BV(z.stdout),BV(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 fG(J){let z=VV(J);return z.length===0?{code:0,stdout:""}:S0(z)}async function Kz(){try{return await Bun.spawn(["tmux","-V"],{stdin:"ignore",cwd:$X,stdout:"ignore",stderr:"ignore"}).exited===0}catch{return!1}}async function K1(J){return await Oy(["has-session","-t",`=${J}`])===0}async function Ay(J){let{code:z,stdout:Z}=await S0(["list-windows","-t",`=${J}`,"-F","#{window_id}"]);if(z!==0)return 0;return Z.split(`
71
+ `).filter((Y)=>Y.trim().length>0).length}async function AZ(J,z,Z){await w0(["set-option","-t",J,z,Z])}async function EY(J,z){let{code:Z,stdout:Y}=await S0(["show-options","-qv","-t",J,z]);return Z===0?Y.trim():""}async function wJ(J,z){let Z=Object.fromEntries(z.map((Q)=>[Q,void 0])),{code:Y,stdout:X}=await fG(z.map((Q)=>["show-options","-q","-t",J,Q]));if(Y!==0)return Z;for(let Q of X.split(`
72
+ `)){let q=Q.indexOf(" ");if(q<=0)continue;let H=Q.slice(0,q);if(H in Z)Z[H]=Q.slice(q+1).trim()}return Z}async function Ny(J){let{code:z,stdout:Z}=await S0(["show-options","-sqv",J]);return z===0?Z.trim():""}async function YD(J){let z=Object.fromEntries(J.map((X)=>[X,void 0])),{code:Z,stdout:Y}=await fG(J.map((X)=>["show-options","-sq",X]));if(Z!==0)return z;for(let X of Y.split(`
73
+ `)){let Q=X.indexOf(" ");if(Q<=0)continue;let q=X.slice(0,Q);if(q in z)z[q]=X.slice(Q+1).trim()}return z}async function sH(){return(await dz()).tasksWidth}async function dz(){return qU(await YD(GU))}async function XD(J,z){await w0(["set-option","-p","-t",J,MG,z])}async function JY(J,z,Z){await w0(["set-window-option","-t",J,z,Z])}async function Cy(J){await XD(J,WV)}async function UV(J,z,Z=!1){let{code:Y,stdout:X}=await S0(["list-panes","-t",`=${J}`,"-F",`#{pane_id} #{${MG}}`]);if(Y!==0)return"";let Q="";for(let q of X.split(`
74
+ `)){let[H,j]=q.split("\t");if(!H)continue;if(!Q)Q=H.trim();if(j?.trim()===z)return H.trim()}return Z?Q:""}async function r8(J){return UV(J,WV,!0)}async function cX(J){return UV(J,WV,!1)}async function dX(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 S0(Z);return Y===0?X:""}async function W9(J,z){await w0(["send-keys","-t",J,"-l","--",z])}async function FG(J,z){await w0(["send-keys","-t",J,z])}async function fz(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 S0(Z),Q=X.trim();if(Y===0&&Q)await JY(Q,fV,"1");return}Z.push(z.command),await w0(Z)}async function gy(J){let{code:z,stdout:Z}=await S0(["display-message","-t",J,"-p",`#{${fV}}`]);return z===0&&Z.trim()==="1"}async function SJ(){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 S0(J),X=Y.trim();return Z===0&&X.length>0?X:null}async function QD(J){let{code:z,stdout:Z}=await S0(["list-panes",...J,"-F","#{pane_pid}"]);if(z!==0)return;for(let Y of Z.split(`
75
+ `)){let X=Number.parseInt(Y.trim(),10);if(!Number.isFinite(X)||X<=1)continue;try{process.kill(-X,"SIGTERM")}catch{}}}async function zD(J){await QD(["-s","-t",`=${J}`])}async function KV(){await QD(["-a"])}async function nJ(J){if(!J.startsWith("kobe-hidden-")){let z=MQ(J);if(await K1(z))await zD(z),await w0(["kill-session","-t",`=${z}`])}if(await K1(J))await zD(J),await w0(["kill-session","-t",`=${J}`])}async function U9(){let J=GD;if(await K1(J)){if(await EY(J,ZD)==="tasks")return J;await w0(["kill-session","-t",`=${J}`])}let Z=(await S0(["new-session","-d","-s",J,"-c",$X,"-x","220","-y","50","-P","-F","#{pane_id}",jU()])).stdout.trim();if(Z){let Y=await sH(),Q=(await S0(["split-window","-h","-b","-t",Z,"-l",`${Y}`,"-c",$X,"-P","-F","#{pane_id}",mJ(a1()+PZ(c1()))])).stdout.trim();if(Q)await _1([["set-option","-p","-t",Q,MG,"tasks"],["select-pane","-t",Q]])}return await AZ(J,ZD,"tasks"),J}async function oz(J,z){if(await SJ()!==J)return;let{enterWindow:Y}=await Promise.resolve().then(() => (qJ(),$J));if(z&&z!==J&&await K1(z)){await Y(z);return}await Y(await U9())}var lJ,$X,MG="@kobe_role",Ry,WV="claude",cz="@kobe_session_id",fV="@kobe_surface",GD="kobe-home",ZD="@kobe_home";var S1=C(()=>{GZ();hZ();tJ();lJ=process.env.KOBE_TMUX_SOCKET?.trim()||"kobe";$X=My()||"/";Ry=MG});function HD(J){var z;if(J>=55296&&J<=57343||J>1114111)return 65533;return(z=ky.get(J))!==null&&z!==void 0?z:J}var DV,ky,qD;var jD=C(()=>{ky=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]]),qD=(DV=String.fromCodePoint)!==null&&DV!==void 0?DV:(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 BD(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,Q=0;X<Z;X+=2){let q=z.charCodeAt(X),H=z.charCodeAt(X+1);Y[Q++]=q|H<<8}return Y}var VD;var WD=C(()=>{VD=BD("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 yJ;var UD=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"})(yJ||(yJ={}))});function LV(J){return J>=p1.ZERO&&J<=p1.NINE}function by(J){return J>=p1.UPPER_A&&J<=p1.UPPER_F||J>=p1.LOWER_A&&J<=p1.LOWER_F}function Iy(J){return J>=p1.UPPER_A&&J<=p1.UPPER_Z||J>=p1.LOWER_A&&J<=p1.LOWER_Z||LV(J)}function Sy(J){return J===p1.EQUALS||Iy(J)}class FV{constructor(J,z,Z){this.decodeTree=J,this.emitCodePoint=z,this.errors=Z,this.state=UJ.EntityStart,this.consumed=1,this.result=0,this.treeIndex=0,this.excess=1,this.decodeMode=RZ.Strict,this.runConsumed=0}startEntity(J){this.decodeMode=J,this.state=UJ.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1,this.runConsumed=0}write(J,z){switch(this.state){case UJ.EntityStart:{if(J.charCodeAt(z)===p1.NUM)return this.state=UJ.NumericStart,this.consumed+=1,this.stateNumericStart(J,z+1);return this.state=UJ.NamedEntity,this.stateNamedEntity(J,z)}case UJ.NumericStart:return this.stateNumericStart(J,z);case UJ.NumericDecimal:return this.stateNumericDecimal(J,z);case UJ.NumericHex:return this.stateNumericHex(J,z);case UJ.NamedEntity:return this.stateNamedEntity(J,z)}}stateNumericStart(J,z){if(z>=J.length)return-1;if((J.charCodeAt(z)|fD)===p1.LOWER_X)return this.state=UJ.NumericHex,this.consumed+=1,this.stateNumericHex(J,z+1);return this.state=UJ.NumericDecimal,this.stateNumericDecimal(J,z)}stateNumericHex(J,z){while(z<J.length){let Z=J.charCodeAt(z);if(LV(Z)||by(Z)){let Y=Z<=p1.NINE?Z-p1.ZERO:(Z|fD)-p1.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(LV(Z))this.result=this.result*10+(Z-p1.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===p1.SEMI)this.consumed+=1;else if(this.decodeMode===RZ.Strict)return 0;if(this.emitCodePoint(HD(this.result),this.consumed),this.errors){if(J!==p1.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&yJ.VALUE_LENGTH)>>14;while(z<J.length){if(X===0&&(Y&yJ.FLAG13)!==0){let q=(Y&yJ.BRANCH_LENGTH)>>7;if(this.runConsumed===0){let H=Y&yJ.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&yJ.VALUE_LENGTH)>>14}if(z>=J.length)break;let Q=J.charCodeAt(z);if(Q===p1.SEMI&&X!==0&&(Y&yJ.FLAG13)!==0)return this.emitNamedEntityData(this.treeIndex,X,this.consumed+this.excess);if(this.treeIndex=Ty(Z,Y,this.treeIndex+Math.max(1,X),Q),this.treeIndex<0)return this.result===0||this.decodeMode===RZ.Attribute&&(X===0||Sy(Q))?0:this.emitNotTerminatedNamedEntity();if(Y=Z[this.treeIndex],X=(Y&yJ.VALUE_LENGTH)>>14,X!==0){if(Q===p1.SEMI)return this.emitNamedEntityData(this.treeIndex,X,this.consumed+this.excess);if(this.decodeMode!==RZ.Strict&&(Y&yJ.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]&yJ.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]&~(yJ.VALUE_LENGTH|yJ.FLAG13):Y[J+1],Z),z===3)this.emitCodePoint(Y[J+2],Z);return Z}end(){var J;switch(this.state){case UJ.NamedEntity:return this.result!==0&&(this.decodeMode!==RZ.Attribute||this.result===this.treeIndex)?this.emitNotTerminatedNamedEntity():0;case UJ.NumericDecimal:return this.emitNumericEntity(0,2);case UJ.NumericHex:return this.emitNumericEntity(0,3);case UJ.NumericStart:return(J=this.errors)===null||J===void 0||J.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case UJ.EntityStart:return 0}}}function yy(J){let z="",Z=new FV(J,(Y)=>z+=qD(Y));return function(X,Q){let q=0,H=0;while((H=X.indexOf("&",H))>=0){z+=X.slice(q,H),Z.startEntity(Q);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 Ty(J,z,Z,Y){let X=(z&yJ.BRANCH_LENGTH)>>7,Q=z&yJ.JUMP_TABLE;if(X===0)return Q!==0&&Y===Q?Z:-1;if(Q){let B=Y-Q;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,U=B>>1,f=J[Z+U]>>(B&1)*8&255;if(f<Y)H=B+1;else if(f>Y)j=B-1;else return J[Z+q+B]}return-1}function mY(J,z=RZ.Legacy){return xy(J,z)}var p1,fD=32,UJ,RZ,xy;var KD=C(()=>{jD();WD();UD();(function(J){J[J.NUM=35]="NUM",J[J.SEMI=59]="SEMI",J[J.EQUALS=61]="EQUALS",J[J.ZERO=48]="ZERO",J[J.NINE=57]="NINE",J[J.LOWER_A=97]="LOWER_A",J[J.LOWER_F=102]="LOWER_F",J[J.LOWER_X=120]="LOWER_X",J[J.LOWER_Z=122]="LOWER_Z",J[J.UPPER_A=65]="UPPER_A",J[J.UPPER_F=70]="UPPER_F",J[J.UPPER_Z=90]="UPPER_Z"})(p1||(p1={}));(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"})(UJ||(UJ={}));(function(J){J[J.Legacy=0]="Legacy",J[J.Strict=1]="Strict",J[J.Attribute=2]="Attribute"})(RZ||(RZ={}));xy=yy(VD)});var DD,LD;var MD=C(()=>{KD();(function(J){J[J.XML=0]="XML",J[J.HTML=1]="HTML"})(DD||(DD={}));(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"})(LD||(LD={}))});import{CliRenderer as uy,createCliRenderer as wy,engine as Py}from"@opentui/core";import{createTestRenderer as Xp}from"@opentui/core/testing";import{ASCIIFontRenderable as hy,BoxRenderable as vy,CodeRenderable as my,DiffRenderable as cy,InputRenderable as dy,LineNumberRenderable as ny,MarkdownRenderable as iy,ScrollBoxRenderable as ly,SelectRenderable as $y,TabSelectRenderable as ay,TextareaRenderable as _y,TextAttributes as MV,TextNodeRenderable as py,TextRenderable as ry}from"@opentui/core";import{engine as qp,Timeline as Hp}from"@opentui/core";import{BaseRenderable as kD,createTextAttributes as sy,InputRenderable as OV,InputRenderableEvents as OG,isTextNodeRenderable as RV,parseColor as OD,Renderable as ty,RootTextNodeRenderable as ey,ScrollBoxRenderable as JT,SelectRenderable as AD,SelectRenderableEvents as AV,TabSelectRenderable as ND,TabSelectRenderableEvents as NV,TextNodeRenderable as zT,TextRenderable as bD}from"@opentui/core";import{BaseRenderable as BT,isTextNodeRenderable as VT,TextNodeRenderable as WT,TextRenderable as UT,Yoga as CD}from"@opentui/core";import{BoxRenderable as Fp,RootRenderable as Mp}from"@opentui/core";import{TimeToFirstDrawRenderable as LT}from"@opentui/core";import{createSlotRegistry as Np}from"@opentui/core";function YT({createElement:J,createTextNode:z,createSlotNode:Z,isTextNode:Y,replaceText:X,insertNode:Q,removeNode:q,setProperty:H,getParentNode:j,getFirstChild:B,getNextSibling:U}){function V(I,R,O,S){if(O!==void 0&&!S)S=[];if(typeof R!=="function")return f(I,R,S,O);$z((n)=>f(I,R(),n,O),S)}function f(I,R,O,S,n){while(typeof O==="function")O=O();if(R===O)return O;let i=typeof R,P=S!==void 0;if(i==="string"||i==="number"){if(i==="number")R=R.toString();if(P){let a=O[0];if(a&&Y(a))X(a,R);else a=z(R);O=A(I,O,S,a)}else if(O!==""&&typeof O==="string")X(B(I),O=R);else A(I,O,S,z(R)),O=R}else if(R==null||i==="boolean")O=A(I,O,S);else if(i==="function")return $z(()=>{let a=R();while(typeof a==="function")a=a();O=f(I,a,O,S)}),()=>O;else if(Array.isArray(R)){let a=[];if(L(a,R,n))return $z(()=>O=f(I,a,O,S,!0)),()=>O;if(a.length===0){let Y0=A(I,O,S);if(P)return O=Y0}else if(Array.isArray(O))if(O.length===0)N(I,a,S);else M(I,O,a);else if(O==null||O==="")N(I,a);else M(I,P&&O||[B(I)],a);O=a}else{if(Array.isArray(O)){if(P)return O=A(I,O,S,R);A(I,O,null,R)}else if(O==null||O===""||!B(I))Q(I,R);else u(I,R,B(I));O=R}return O}function L(I,R,O){let S=!1;for(let n=0,i=R.length;n<i;n++){let P=R[n],a;if(P==null||P===!0||P===!1);else if(Array.isArray(P))S=L(I,P)||S;else if((a=typeof P)==="string"||a==="number")I.push(z(P));else if(a==="function")if(O){while(typeof P==="function")P=P();S=L(I,Array.isArray(P)?P:[P])||S}else I.push(P),S=!0;else I.push(P)}return S}function M(I,R,O){let S=O.length,n=R.length,i=S,P=0,a=0,Y0=U(R[n-1]),Q0=null;while(P<n||a<i){if(R[P]===O[a]){P++,a++;continue}while(R[n-1]===O[i-1])n--,i--;if(n===P){let e=i<S?a?U(O[a-1]):O[i-a]:Y0;while(a<i)Q(I,O[a++],e)}else if(i===a)while(P<n){if(!Q0||!Q0.has(R[P]))q(I,R[P]);P++}else if(R[P]===O[i-1]&&O[a]===R[n-1]){let e=U(R[--n]);Q(I,O[a++],U(R[P++])),Q(I,O[--i],e),R[n]=O[i]}else{if(!Q0){Q0=new Map;let v=a;while(v<i)Q0.set(O[v],v++)}let e=Q0.get(R[P]);if(e!=null)if(a<e&&e<i){let v=P,j0=1,k;while(++v<n&&v<i){if((k=Q0.get(R[v]))==null||k!==e+j0)break;j0++}if(j0>e-a){let o=R[P];while(a<e)Q(I,O[a++],o)}else u(I,O[a++],R[P++])}else P++;else q(I,R[P++])}}}function A(I,R,O,S){if(O===void 0){let i;while(i=B(I))q(I,i);return S&&Q(I,S),S??""}let n=S||Z();if(R.length){let i=!1;for(let P=R.length-1;P>=0;P--){let a=R[P];if(n!==a){let Y0=j(a)===I;if(!i&&!P)Y0?u(I,n,a):Q(I,n,O);else Y0&&q(I,a)}else i=!0}}else Q(I,n,O);return[n]}function N(I,R,O){for(let S=0,n=R.length;S<n;S++)Q(I,R[S],O)}function u(I,R,O){Q(I,R,O),q(I,O)}function h(I,R,O={},S){if(R||(R={}),!S)$z(()=>O.children=f(I,R.children,O.children));return $z(()=>R.ref&&R.ref(I)),$z(()=>{for(let n in R){if(n==="children"||n==="ref")continue;let i=R[n];if(i===O[n])continue;H(I,n,i,O[n]),O[n]=i}}),O}return{render(I,R){let O;return RY((S)=>{O=S,V(R,I())}),O},insert:V,spread(I,R,O){if(typeof R==="function")$z((S)=>h(I,R(),S,O));else h(I,R,void 0,O)},createElement:J,createTextNode:z,insertNode:Q,setProp(I,R,O,S){return H(I,R,O,S),O},mergeProps:KH,effect:$z,memo:ZT,createComponent:V5,use(I,R,O){return QJ(()=>I(R,O))}}}function XT(J){let z=YT(J);return z.mergeProps=KH,z}function IV(J){if(!f9.has(J))f9.set(J,0);let z=f9.get(J)+1;return f9.set(J,z),`${J}-${z}`}function QT(J,z,Z){if(fJ("Inserting node:",BJ(z),"into parent:",BJ(J),"with anchor:",BJ(Z),z instanceof _X),z instanceof AG)z.parent=J,z=z.getSlotChild(J);if(Z&&Z instanceof AG)Z=Z.getSlotChild(J);if(RV(z)){if(!(J instanceof bD)&&!RV(J))throw Error(`Orphan text error: "${z.toChunks().map((Q)=>Q.text).join("")}" must have a <text> as a parent: ${J.id} above ${z.id}`)}if(!(J instanceof kD))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=CV(J),X=Y.findIndex((Q)=>Q.id===Z.id);if(X===-1)fJ("[INSERT]","Could not find anchor",BJ(J),BJ(Z),"[children]",...Y.map((Q)=>Q.id));J.add(z,X)}function GT(J,z){if(fJ("Removing node:",BJ(z),"from parent:",BJ(J)),z instanceof AG)z.parent=null,z=z.getSlotChild(J);J.remove(z.id),process.nextTick(()=>{if(z instanceof kD&&!z.parent){z.destroyRecursively();return}})}function qT(J){fJ("Creating text node:",J);let z=IV("text-node");if(typeof J==="number")J=J.toString();return _X.fromString(mY(J),{id:z})}function HT(){let J=IV("slot-node");return fJ("Creating slot node",J),new AG(J)}function RD(J){fJ("Getting parent of node:",BJ(J));let z=J.parent??void 0;if(z instanceof ey)z=z.textParent??void 0;let Z=z?.parent?.parent?.parent;if(Z instanceof JT&&Z.content===z)z=Z;return z}function KT(J){Object.assign(uD,J)}function DT(){return uD}var bV,HJ=()=>{let J=Zz(bV);if(!J)throw Error("No renderer found");return J},oy=(J)=>{let z=HJ();r1(()=>{z.on("resize",J)}),k1(()=>{z.off("resize",J)})},ez=()=>{let J=HJ(),[z,Z]=p({width:J.width,height:J.height});return oy((X,Q)=>{Z({width:X,height:Q})}),z},gD=(J)=>{let Z=HJ().keyInput;r1(()=>{Z.on("paste",J)}),k1(()=>{Z.off("paste",J)})},ZT=(J)=>U0(()=>J()),f9,fJ=(...J)=>{if(process.env.DEBUG)console.log("[Reconciler]",...J)},_X,BJ=(J)=>{if(!J)return;return J.id},CV=(J)=>{let z;if(J instanceof bD)z=J.getTextChildren();else z=J.getChildren();return z},jT,T,L0,b,W,R0,D,K,Kp,G,ID,Dz,SV,SD,yD,AG,NG,K9,gV,kV,TD,xD,ED,fT,uD,FT=(J,z)=>{let Z,Y=!1,X=!1,Q=!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(Q){q=!0;return}H()};try{Z=jT(()=>b(bV.Provider,{get value(){return J},get children(){return b(z,{})}}),J.root)}finally{Q=!1,J.destroy=H}if(Y)j();if(q)H()},wD=async(J,z={})=>{let Z=z instanceof uy?z:await wy({...z,onDestroy:()=>{z.onDestroy?.()}});Py.attach(Z),FT(Z,J)};var x=C(()=>{H1();MD();H1();H1();H1();bV=az();f9=new Map;_X=class _X extends zT{static fromString(J,z={}){let Z=new _X(z);return Z.add(J),Z}};({render:jT,effect:T,memo:L0,createComponent:b,createElement:W,createTextNode:R0,insertNode:D,insert:K,spread:Kp,setProp:G,mergeProps:ID,use:Dz}=XT({createElement(J){fJ("Creating element:",J);let z=IV(J),Z=Zz(bV);if(!Z)throw Error("No renderer found");let Y=DT();if(!Y[J])throw Error(`[Reconciler] Unknown component type: ${J}`);let X=new Y[J](Z,{id:z});return fJ("Element created with id:",z),X},createTextNode:qT,createSlotNode:HT,replaceText(J,z){if(fJ("Replacing text:",z,"in node:",BJ(J)),!(J instanceof _X))return;J.replace(mY(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(RV(J)){if(z==="href"){J.link={url:Z};return}if(z==="style"){J.attributes|=sy(Z),J.fg=Z.fg?OD(Z.fg):J.fg,J.bg=Z.bg?OD(Z.bg):J.bg;return}return}switch(z){case"id":fJ("Id mapped",J.id,"=",Z),J[z]=Z;break;case"focused":if(!(J instanceof ty))return;if(Z)J.focus();else J.blur();break;case"onChange":let X=void 0;if(J instanceof AD)X=AV.SELECTION_CHANGED;else if(J instanceof ND)X=NV.SELECTION_CHANGED;else if(J instanceof OV)X=OG.CHANGE;if(!X)break;if(Z)J.on(X,Z);if(Y)J.off(X,Y);break;case"onInput":if(J instanceof OV){if(Z)J.on(OG.INPUT,Z);if(Y)J.off(OG.INPUT,Y)}break;case"onSubmit":if(J instanceof OV){if(Z)J.on(OG.ENTER,Z);if(Y)J.off(OG.ENTER,Y)}else J[z]=Z;break;case"onSelect":if(J instanceof AD){if(Z)J.on(AV.ITEM_SELECTED,Z);if(Y)J.off(AV.ITEM_SELECTED,Y)}else if(J instanceof ND){if(Z)J.on(NV.ITEM_SELECTED,Z);if(Y)J.off(NV.ITEM_SELECTED,Y)}break;case"style":for(let Q in Z){let q=Z[Q];if(Y!==void 0&&q===Y[Q])continue;J[Q]=q}break;case"text":case"content":{let Q=typeof Z==="string"?Z:Array.isArray(Z)?Z.join(""):`${Z}`;J[z]=mY(Q);break}default:J[z]=Z}},isTextNode(J){return J instanceof _X},insertNode:QT,removeNode:GT,getParentNode:RD,getFirstChild(J){fJ("Getting first child of node:",BJ(J));let z=CV(J)[0];if(!z){fJ("No first child found for node:",BJ(J));return}return fJ("First child found:",BJ(z),"for node:",BJ(J)),z},getNextSibling(J){fJ("Getting next sibling of node:",BJ(J));let z=RD(J);if(!z){fJ("No parent found for node:",BJ(J));return}let Z=CV(z),Y=Z.indexOf(J);if(Y===-1||Y===Z.length-1){fJ("No next sibling found for node:",BJ(J));return}let X=Z[Y+1];if(!X){fJ("Next sibling is null for node:",BJ(J));return}return fJ("Next sibling found:",BJ(X),"for node:",BJ(J)),X}}));SV=class SV extends BT{constructor(J){super({id:J})}add(J,z){throw Error("Can't add children on an Slot renderable")}getChildren(){return[]}remove(J){}insertBefore(J,z){throw Error("Can't add children on an Slot renderable")}getRenderable(J){return}getChildrenCount(){return 0}requestRender(){}findDescendantById(J){return}};SD=class SD extends WT{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()}};yD=class yD extends SV{yogaNode;slotParent;destroyed=!1;constructor(J,z){super(J);this._visible=!1,this.slotParent=z,this.yogaNode=CD.default.Node.create(),this.yogaNode.setDisplay(CD.Display.None)}getLayoutNode(){return this.yogaNode}updateFromLayout(){}updateLayout(){}onRemove(){}destroy(){if(this.destroyed)return;this.destroyed=!0,super.destroy(),this.slotParent?.destroy()}};AG=class AG extends SV{layoutNode;textNode;destroyed=!1;constructor(J){super(J);this._visible=!1}getSlotChild(J){if(VT(J)||J instanceof UT){if(!this.textNode)this.textNode=new SD(`slot-text-${this.id}`,this);return this.textNode}if(!this.layoutNode)this.layoutNode=new yD(`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()}};NG=class NG extends py{_ctx;constructor(J,z){super(z);this._ctx=J}};K9=class K9 extends NG{constructor(J,z){super(null,J);if(z==="b"||z==="strong")this.attributes=(this.attributes||0)|MV.BOLD;else if(z==="i"||z==="em")this.attributes=(this.attributes||0)|MV.ITALIC;else if(z==="u")this.attributes=(this.attributes||0)|MV.UNDERLINE}};gV=class gV extends K9{constructor(J){super(J,"b")}};kV=class kV extends K9{constructor(J){super(J,"i")}};TD=class TD extends K9{constructor(J){super(J,"u")}};xD=class xD extends NG{constructor(J,z){super(null,z);this.add()}add(){return super.add(`
76
+ `)}};ED=class ED extends NG{constructor(J,z){let Z={...z,link:{url:z.href}};super(null,Z)}};fT={box:vy,text:ry,input:dy,select:$y,textarea:_y,ascii_font:hy,tab_select:ay,scrollbox:ly,code:my,diff:cy,line_number:ny,markdown:iy,span:NG,strong:gV,b:gV,em:kV,i:kV,u:TD,br:xD,a:ED},uD={...fT};KT({time_to_first_draw:LT})});function JZ(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 yV(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 Q=X;if(typeof Q?.added!=="number"||typeof Q.deleted!=="number")return null;Z.set(Y,{added:Q.added,deleted:Q.deleted})}return Z}function TV(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 xV(J,z){if(J.size!==z.size)return!1;for(let[Z,Y]of J){let X=z.get(Z);if(!X||!sz(Y,X))return!1}return!0}function EV(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 Q=X;if(typeof Q?.mtimeMs!=="number"||typeof Q.completionAt!=="number")return null;if(Q.completionId!==null&&typeof Q.completionId!=="string")return null;Z.set(Y,{mtimeMs:Q.mtimeMs,completionId:Q.completionId,completionAt:Q.completionAt})}return Z}function uV(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}function XY(J){return{id:uQ(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 RG=C(()=>{wX();Uz()});async function PD(J,z,Z){let Y=await J.request("hello",{protocolVersion:Vz,minProtocolVersion:$Z}),X=typeof Y.protocolVersion==="number"?Y.protocolVersion:Vz,Q=typeof Y.minProtocolVersion==="number"?Y.minProtocolVersion:X;if(!sq({localVersion:Vz,localMin:$Z,remoteVersion:X,remoteMin:Q}))throw Error(`kobe daemon is protocol v${X} (min v${Q}); this client is v${Vz} (min v${$Z}). Restart the daemon (\`kobe daemon restart\`) or upgrade kobe.`);if(Z.setDaemonVersionSig(typeof Y.kobeVersion==="string"?Y.kobeVersion:null),Y.tasks&&z.subscribesTasks)Z.setTasks(Y.tasks.map(XY));if(await J.subscribe({role:z.role,channels:z.channels}),Y.capabilities?.includes("worktree.changes")){if(Z.worktreeChangesAcc()===null)Z.setWorktreeChangesSig(new Map)}else Z.setWorktreeChangesSig(null);if(Y.capabilities?.includes("transcript.activity")){if(Z.transcriptActivityAcc()===null)Z.setTranscriptActivitySig(new Map)}else Z.setTranscriptActivitySig(null);Z.setConnectionState("online"),lz("orch",`subscribed as ${z.role} (${Z.tasksAcc().length} tasks)`)}var hD=C(()=>{KZ();nz();RG()});function MT(J,z){let Z=z.engineStateAcc();if(Z.size===0)return;let Y=new Set(J.map((Q)=>Q.id)),X=null;for(let Q of Z.keys()){if(Y.has(Q))continue;if(!X)X=new Map(Z);X.delete(Q)}if(X)z.setEngineStateSig(X)}function OT(J,z){let Z=z.taskJobsAcc();if(Z.size===0)return;let Y=new Set(J.map((Q)=>Q.id)),X=null;for(let Q of Z.keys()){if(Y.has(Q))continue;if(!X)X=new Map(Z);X.delete(Q)}if(X)z.setTaskJobsSig(X)}function vD(J,z,Z){if(J==="task.snapshot"){let Y=z?.tasks;if(Array.isArray(Y))Z.setTasks(Y.map(XY)),MT(Y,Z),OT(Y,Z);else ZJ("orch",`dropped task.snapshot event: tasks is not an array (got ${JZ(Y)})`);return}if(J==="active-task"){let Y=z?.taskId;Z.setActiveTaskSig(typeof Y==="string"?Y:null);return}if(J==="update"){let Y=z?.info;Z.setUpdateSig(Y??null);return}if(J==="engine-state"){let Y=z;if(typeof Y?.taskId!=="string"||typeof Y.state!=="string"){ZJ("orch",`dropped engine-state event: taskId/state must be strings (taskId=${JZ(Y?.taskId)}, state=${JZ(Y?.state)})`);return}let X=new Map(Z.engineStateAcc());if(Y.state==="idle")X.delete(Y.taskId);else X.set(Y.taskId,{state:Y.state,detail:Y.detail,at:typeof Y.at==="number"?Y.at:0});Z.setEngineStateSig(X);return}if(J==="task.jobs"){let Y=z;if(typeof Y?.taskId!=="string"||Y.kind!=="ensureWorktree"){ZJ("orch",`dropped task.jobs event: expected string taskId + kind "ensureWorktree" (taskId=${JZ(Y?.taskId)}, kind=${JZ(Y?.kind)})`);return}let X=Z.taskJobsAcc();if(Y.phase==="running"){let Q=new Map(X);Q.set(Y.taskId,{kind:Y.kind}),Z.setTaskJobsSig(Q);return}if((Y.phase==="done"||Y.phase==="error")&&X.has(Y.taskId)){let Q=new Map(X);Q.delete(Y.taskId),Z.setTaskJobsSig(Q)}return}if(J==="worktree.changes"){let Y=yV(z);if(!Y){ZJ("orch",`dropped worktree.changes event: malformed changes payload (${JZ(z)})`);return}let X=Z.worktreeChangesAcc();if(X&&xV(X,Y))return;Z.setWorktreeChangesSig(Y);return}if(J==="transcript.activity"){let Y=EV(z);if(!Y){ZJ("orch",`dropped transcript.activity event: malformed activity payload (${JZ(z)})`);return}let X=Z.transcriptActivityAcc();if(X&&uV(X,Y))return;Z.setTranscriptActivitySig(Y);return}if(J==="ui-prefs"){let Y=TV(z);if(!Y){let X=z?.theme;ZJ("orch",`dropped ui-prefs event: theme must be a string (got ${JZ(X)})`);return}Z.setUiPrefsSig(Y);return}if(J==="keybindings"){let Y=z;if(typeof Y?.rev!=="number"){ZJ("orch",`dropped keybindings event: rev must be a number (got ${JZ(Y?.rev)})`);return}Z.setKeybindingsRevSig(Y.rev)}}var mD=C(()=>{KZ();RG()});async function cD(J,z){let{modelEffort:Z,...Y}=z,X=await J.request("task.create",{...Y,effort:Z});return XY(X.task)}async function dD(J,z){let Z=await J.request("task.ensureMain",{repo:z});return XY(Z.task)}async function nD(J,z){return(await J.request("task.ensureWorktree",{taskId:String(z)})).worktreePath}async function iD(J,z){await J.request("project.forget",{repo:z})}async function lD(J,z,Z){await J.request("task.rename",{taskId:String(z),title:Z})}async function $D(J,z,Z){await J.request("task.setBranch",{taskId:String(z),branch:Z})}async function aD(J,z,Z){await J.request("task.setVendor",{taskId:String(z),vendor:Z})}async function _D(J,z,Z){await J.request("task.pin",{taskId:String(z),pinned:Z})}async function pD(J,z,Z){await J.request("task.move",{taskId:String(z),direction:Z<0?"up":"down"})}async function rD(J,z,Z){await J.request("task.archive",{taskId:String(z),archived:Z})}async function oD(J,z,Z){await J.request("task.status",{taskId:String(z),status:Z})}async function sD(J,z,Z){await J.request("task.delete",{taskId:String(z),force:Z?.force})}async function tD(J,z){return(await J.request("worktree.discoverAdoptable",{repo:z})).worktrees}async function eD(J,z){let Z=await J.request("worktree.adopt",z);return XY(Z.task)}async function JL(J){return(await J.request("worktree.list",{})).projects}async function zL(J,z,Z){await J.request("worktree.remove",{path:z,force:Z})}async function ZL(J,z){await J.request("task.setActive",{taskId:z===null?null:String(z)})}var YL=C(()=>{RG()});class KJ{client;tasksAcc;setTasks;activeTaskAcc;setActiveTaskSig;updateAcc;setUpdateSig;daemonVersionAcc;setDaemonVersionSig;engineStateAcc;setEngineStateSig;taskJobsAcc;setTaskJobsSig;worktreeChangesAcc;setWorktreeChangesSig;transcriptActivityAcc;setTranscriptActivitySig;uiPrefsAcc;setUiPrefsSig;keybindingsRevAcc;setKeybindingsRevSig;connectionStateAcc;setConnectionState;ensureReachable;role;channels;subscribesTasks;reconnecting=!1;signals;constructor(J,z={}){this.client=J;let[Z,Y]=p([]),[X,Q]=p(null),[q,H]=p(null),[j,B]=p(null),[U,V]=p(new Map),[f,L]=p(new Map),[M,A]=p(null),[N,u]=p(null),[h,I]=p(null),[R,O]=p(null),[S,n]=p("online");this.tasksAcc=Z,this.setTasks=(i)=>Y(()=>i),this.activeTaskAcc=X,this.setActiveTaskSig=(i)=>Q(()=>i),this.updateAcc=q,this.setUpdateSig=(i)=>H(()=>i),this.daemonVersionAcc=j,this.setDaemonVersionSig=(i)=>B(()=>i),this.engineStateAcc=U,this.setEngineStateSig=(i)=>V(()=>i),this.taskJobsAcc=f,this.setTaskJobsSig=(i)=>L(()=>i),this.worktreeChangesAcc=M,this.setWorktreeChangesSig=(i)=>A(()=>i),this.transcriptActivityAcc=N,this.setTranscriptActivitySig=(i)=>u(()=>i),this.uiPrefsAcc=h,this.setUiPrefsSig=(i)=>I(()=>i),this.keybindingsRevAcc=R,this.setKeybindingsRevSig=(i)=>O(()=>i),this.connectionStateAcc=S,this.setConnectionState=(i)=>n(()=>i),this.ensureReachable=z.ensureReachable??vX,this.role=z.role??"pane",this.channels=z.channels,this.subscribesTasks=!z.channels||z.channels.includes("task.snapshot"),this.signals={tasksAcc:this.tasksAcc,setTasks:this.setTasks,setActiveTaskSig:this.setActiveTaskSig,setUpdateSig:this.setUpdateSig,setDaemonVersionSig:this.setDaemonVersionSig,engineStateAcc:this.engineStateAcc,setEngineStateSig:this.setEngineStateSig,taskJobsAcc:this.taskJobsAcc,setTaskJobsSig:this.setTaskJobsSig,worktreeChangesAcc:this.worktreeChangesAcc,setWorktreeChangesSig:this.setWorktreeChangesSig,transcriptActivityAcc:this.transcriptActivityAcc,setTranscriptActivitySig:this.setTranscriptActivitySig,setUiPrefsSig:this.setUiPrefsSig,setKeybindingsRevSig:this.setKeybindingsRevSig,setConnectionState:this.setConnectionState},this.client.on("*",(i)=>this.handleEvent(i.name,i.payload)),this.client.onLifecycle("close",()=>{if(this.setConnectionState("disconnected"),this.role==="pane")lz("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(),lz("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)ZJ("orch-reconnect",Z);J=Math.min(J*2,3000)}}this.reconnecting=!1}async init(){await PD(this.client,{role:this.role,channels:this.channels,subscribesTasks:this.subscribesTasks},this.signals)}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()=>uf(this.daemonVersionAcc()??void 0,a0)}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 RY((Z)=>{return E0(()=>{let Y=this.tasksAcc();if(z){z=!1;return}try{J(Y)}catch(X){console.error("[kobe RemoteOrchestrator] task listener threw:",X)}}),Z})}createTask(J){return cD(this.client,J)}ensureMainTask(J){return dD(this.client,J)}ensureWorktree(J){return nD(this.client,J)}forgetProject(J){return iD(this.client,J)}setTitle(J,z){return lD(this.client,J,z)}setBranch(J,z){return $D(this.client,J,z)}setVendor(J,z){return aD(this.client,J,z)}setPinned(J,z){return _D(this.client,J,z)}moveTask(J,z){return pD(this.client,J,z)}setArchived(J,z){return rD(this.client,J,z)}setStatus(J,z){return oD(this.client,J,z)}deleteTask(J,z){return sD(this.client,J,z)}discoverAdoptableWorktrees(J){return tD(this.client,J)}adoptWorktree(J){return eD(this.client,J)}listWorktrees(){return JL(this.client)}removeWorktree(J,z){return zL(this.client,J,z)}setActiveTask(J){return ZL(this.client,J)}handleEvent(J,z){vD(J,z,this.signals)}}var CZ=C(()=>{KZ();IJ();nz();H1();CJ();hD();mD();YL();RG()});function GL(J){let z=J[Sz];if(!z){if(Object.defineProperty(J,Sz,{value:z=new Proxy(J,RT)}),!Array.isArray(J)){let Z=Object.keys(J),Y=Object.getOwnPropertyDescriptors(J),X=Object.getPrototypeOf(J),Q=X!==null&&J!==null&&typeof J==="object"&&!Array.isArray(J)&&X!==Object.prototype;if(Q){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(Q&&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 D9(J){let z;return J!=null&&typeof J==="object"&&(J[Sz]||!(z=Object.getPrototypeOf(J))||z===Object.prototype||Array.isArray(J))}function gG(J,z=new Set){let Z,Y,X,Q;if(Z=J!=null&&J[wV])return Z;if(!D9(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=gG(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(Q=q[j],H[Q].get)continue;if(X=J[Q],(Y=gG(X,z))!==X)J[Q]=Y}}return J}function L9(J,z){let Z=J[z];if(!Z)Object.defineProperty(J,z,{value:Z=Object.create(null)});return Z}function kG(J,z,Z){if(J[z])return J[z];let[Y,X]=p(Z,{equals:!1,internal:!0});return Y.$=X,J[z]=Y}function AT(J,z){let Z=Reflect.getOwnPropertyDescriptor(J,z);if(!Z||Z.get||!Z.configurable||z===Sz||z===pX)return Z;return delete Z.value,delete Z.writable,Z.get=()=>J[Sz][z],Z}function qL(J){fH()&&kG(L9(J,pX),QL)()}function NT(J){return qL(J),Reflect.ownKeys(J)}function F9(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],Q=J.length;if(XL.onStoreNodeUpdate&&XL.onStoreNodeUpdate(J,z,Z,X),Z===void 0){if(delete J[z],J[gZ]&&J[gZ][z]&&X!==void 0)J[gZ][z].$()}else if(J[z]=Z,J[gZ]&&J[gZ][z]&&X===void 0)J[gZ][z].$();let q=L9(J,pX),H;if(H=kG(q,z,X))H.$(()=>Z);if(Array.isArray(J)&&J.length!==Q){for(let j=J.length;j<Q;j++)(H=q[j])&&H.$();(H=kG(q,"length",Q))&&H.$(J.length)}(H=q[QL])&&H.$()}function HL(J,z){let Z=Object.keys(z);for(let Y=0;Y<Z.length;Y+=1){let X=Z[Y];if(jL(X))continue;F9(J,X,z[X])}}function jL(J){return J==="__proto__"||J==="constructor"||J==="prototype"}function CT(J,z){if(typeof z==="function")z=z(J);if(z=gG(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)F9(J,Z,X)}F9(J,"length",Y)}else HL(J,z)}function CG(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&&jL(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++)CG(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))CG(J,[j].concat(z),Z);return}else if(H&&q==="object"){let{from:j=0,to:B=J.length-1,by:U=1}=Y;for(let V=j;V<=B;V+=U)CG(J,[V].concat(z),Z);return}else if(z.length>1){CG(J[Y],z,[Y].concat(Z));return}X=J[Y],Z=[Y].concat(Z)}let Q=z[0];if(typeof Q==="function"){if(Q=Q(X,Z),Q===X)return}if(Y===void 0&&Q==null)return;if(Q=gG(Q),Y===void 0||D9(X)&&D9(Q)&&!Array.isArray(Q))HL(X,Q);else F9(J,Y,Q)}function zZ(...[J,z]){let Z=gG(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=GL(Z);U5.registerGraph({value:Z,name:z&&z.name});function Q(...q){UH(()=>{Y&&q.length===1?CT(Z,q[0]):CG(Z,q)})}return[X,Q]}var wV,pX,gZ,QL,XL,RT,_p;var rX=C(()=>{H1();wV=Symbol("store-raw"),pX=Symbol("store-node"),gZ=Symbol("store-has"),QL=Symbol("store-self"),XL={onStoreNodeUpdate:null};RT={get(J,z,Z){if(z===wV)return J;if(z===Sz)return Z;if(z===VH)return qL(J),Z;let Y=L9(J,pX),X=Y[z],Q=X?X():J[z];if(z===pX||z===gZ||z==="__proto__")return Q;if(!X){let q=Object.getOwnPropertyDescriptor(J,z);if(fH()&&(typeof Q!=="function"||J.hasOwnProperty(z))&&!(q&&q.get))Q=kG(Y,z,Q)()}return D9(Q)?GL(Q):Q},has(J,z){if(z===wV||z===Sz||z===VH||z===pX||z===gZ||z==="__proto__")return!0;return fH()&&kG(L9(J,gZ),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:NT,getOwnPropertyDescriptor:AT};_p=Symbol("store-root")});function M9(J){let z=az();return{provider:(Z)=>{let Y=J.init(Z);return b(z0,{get when(){return Y.ready===void 0||Y.ready===!0},get children(){return b(z.Provider,{value:Y,get children(){return Z.children}})}})},use(){let Z=Zz(z);if(!Z)throw Error(`${J.name} context must be used within a context provider`);return Z}}}var PV=C(()=>{x();x();H1()});import{RGBA as cY}from"@opentui/core";function kT(){return Object.keys(FJ.themes)}function bG(J){return Boolean(FJ.themes[J])}function vV(J,z){if(!J)return!1;if(!z||typeof z!=="object"||!z.theme)return!1;return dY("themes",{...FJ.themes,[J]:z}),!0}function hV(J,z="dark"){let Z=J.defs??{};function Y(j,B=[]){if(typeof j==="string"){if(j==="transparent"||j==="none")return cY.fromInts(0,0,0,0);if(j.startsWith("#"))return cY.fromHex(j);if(B.includes(j))return cY.fromInts(0,0,0);let U=Z[j]??J.theme[j];if(U===void 0)return cY.fromInts(0,0,0);return Y(U,[...B,j])}return Y(j[z],B)}let X={};for(let[j,B]of Object.entries(J.theme))X[j]=Y(B);let Q=X.text??cY.fromHex("#ffffff"),q=X.background??cY.fromHex("#000000");return{...{primary:X.primary??Q,secondary:X.secondary??Q,accent:X.accent??X.primary??Q,error:X.error??Q,warning:X.warning??Q,success:X.success??Q,info:X.info??Q,text:Q,textMuted:X.textMuted??Q,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??Q,borderActive:X.borderActive??X.border??Q,borderSubtle:X.borderSubtle??X.border??Q,diffAdded:X.diffAdded??X.success??Q,diffRemoved:X.diffRemoved??X.error??Q,diffContext:X.diffContext??X.textMuted??Q,diffHunkHeader:X.diffHunkHeader??X.textMuted??Q,diffAddedBg:X.diffAddedBg??q,diffRemovedBg:X.diffRemovedBg??q,selectedListItemText:X.selectedListItemText??q},...X}}var gT,nY,FJ,dY,I0,BL;var P1=C(()=>{x();H1();rX();PV();vq();mq();cq();dq();nq();iq();lq();gT={claude:GX,conductor:qX,nord:jX,opencode:BX,dracula:HX,tokyonight:WX,"osaka-jade":VX},nY=["primary","success","info"],[FJ,dY]=zZ({themes:{...gT},active:"claude",mode:"dark",transparentBackground:!1,focusAccent:"primary"});({use:I0,provider:BL}=M9({name:"Theme",init:(J)=>{if(J.mode)dY("mode",J.mode);if(J.theme&&bG(J.theme))dY("active",J.theme);let z=HJ(),Z=U0(()=>{let X=FJ.themes[FJ.active];if(X)return hV(X,FJ.mode);let Q=FJ.themes.claude??FJ.themes.opencode??Object.values(FJ.themes)[0];if(!Q)return hV({theme:{background:"#000000",text:"#ffffff"}},FJ.mode);return hV(Q,FJ.mode)}),Y=U0(()=>{let X=Z(),Q=X[FJ.focusAccent]??X.primary,q={...X,focusAccent:Q};if(!FJ.transparentBackground)return q;let H=cY.fromInts(0,0,0,0);return{...q,background:H,backgroundPanel:H}});return E0(()=>{z?.setBackgroundColor(Y().background)}),{theme:new Proxy({},{get(X,Q){let q=Y();return q[Q]??q.text}}),get selected(){return FJ.active},get transparentBackground(){return FJ.transparentBackground},get focusAccent(){return FJ.focusAccent},mode(){return FJ.mode},set(X){if(!bG(X))return!1;return dY("active",X),!0},setMode(X){dY("mode",X)},setTransparentBackground(X){dY("transparentBackground",X)},setFocusAccent(X){dY("focusAccent",X)},all(){return kT()},has(X){return bG(X)}}}}))});var VL,WL;var UL=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"}},WL={cancel:"\u53D6\u6D88",confirm:"\u786E\u8BA4",paneCrash:{title:"\u6B64\u9762\u677F\u5DF2\u5D29\u6E83",hint:"\u8BF7\u4ECE\u4EFB\u52A1\u9762\u677F\u91CD\u65B0\u52A0\u8F7D\uFF08\u9519\u8BEF\u5DF2\u8BB0\u5F55\u5230 client.log\uFF09\u3002"},rename:{defaultTitle:"\u91CD\u547D\u540D\u4EFB\u52A1",defaultFieldLabel:"\u540D\u79F0",footerHint:"enter {submitLabel} \xB7 esc \u53D6\u6D88",defaultSubmitLabel:"\u91CD\u547D\u540D"}}});var fL,KL;var DL=C(()=>{fL={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"}},KL={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,FL;var ML=C(()=>{LL={title:"kobe \u2014 keybindings",esc:"esc"},FL={title:"kobe \u2014 \u5FEB\u6377\u952E",esc:"esc"}});var OL,AL;var NL=C(()=>{OL={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"},AL={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 RL,CL;var gL=C(()=>{RL={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)"}},CL={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 kL,bL;var IL=C(()=>{kL={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"}},bL={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 SL,yL;var TL=C(()=>{SL={badge:{newActivity:"\u25CF new"},preview:{diffVsHead:"diff vs HEAD",file:"file",closeHint:"\xB7 q to close",loading:"loading\u2026"}},yL={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 xL,EL;var uL=C(()=>{xL={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"},EL={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 wL,PL;var hL=C(()=>{wL={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)"}},PL={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 vL,mL;var cL=C(()=>{vL={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}"}},mL={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 dL,nL;var iL=C(()=>{dL={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`"}},nL={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`"}}});var lL,$L;var aL=C(()=>{lL={title:"Worktrees",loading:"Loading worktrees\u2026",noProjects:"No local projects known to kobe yet.",noWorktrees:"No worktrees.",badge:{kobeManaged:"kobe",dirty:"dirty",remoteOn:"on remote",remoteOff:"not pushed",remoteUnknown:"remote unknown"},row:{detached:"(detached)",created:"created {age} ago",linkedTask:"task: {title}"},delete:{button:"Delete",confirmTitle:"Delete worktree?",confirmBody:'Delete the worktree for "{branch}"? This removes the working directory; the branch itself is kept.',forceTitle:"Force delete worktree?",forceBody:'"{branch}" has uncommitted or untracked changes that will be PERMANENTLY LOST. Force delete anyway?',failed:"Failed to delete worktree: {error}"},hint:{legend:"\u2191\u2193 nav \xB7 d delete \xB7 esc close"}},$L={title:"\u5DE5\u4F5C\u6811",loading:"\u6B63\u5728\u52A0\u8F7D worktree\u2026",noProjects:"kobe \u8FD8\u6CA1\u6709\u5DF2\u77E5\u7684\u672C\u5730\u9879\u76EE\u3002",noWorktrees:"\u6CA1\u6709 worktree\u3002",badge:{kobeManaged:"kobe",dirty:"\u6709\u6539\u52A8",remoteOn:"\u5DF2\u63A8\u9001",remoteOff:"\u672A\u63A8\u9001",remoteUnknown:"\u8FDC\u7AEF\u672A\u77E5"},row:{detached:"(\u6E38\u79BB\u72B6\u6001)",created:"{age}\u524D\u521B\u5EFA",linkedTask:"\u4EFB\u52A1\uFF1A{title}"},delete:{button:"\u5220\u9664",confirmTitle:"\u5220\u9664 worktree\uFF1F",confirmBody:'\u786E\u5B9A\u5220\u9664 "{branch}" \u5BF9\u5E94\u7684 worktree\uFF1F\u5DE5\u4F5C\u76EE\u5F55\u4F1A\u88AB\u79FB\u9664\uFF0C\u5206\u652F\u672C\u8EAB\u4F1A\u4FDD\u7559\u3002',forceTitle:"\u5F3A\u5236\u5220\u9664 worktree\uFF1F",forceBody:'"{branch}" \u5B58\u5728\u672A\u63D0\u4EA4\u6216\u672A\u8DDF\u8E2A\u7684\u6539\u52A8\uFF0C\u5F3A\u5236\u5220\u9664\u540E\u5C06\u6C38\u4E45\u4E22\u5931\u3002\u4ECD\u8981\u5F3A\u5236\u5220\u9664\u5417\uFF1F',failed:"\u5220\u9664 worktree \u5931\u8D25\uFF1A{error}"},hint:{legend:"\u2191\u2193 \u79FB\u52A8 \xB7 d \u5220\u9664 \xB7 esc \u5173\u95ED"}}});function IG(J){return typeof J==="string"&&oX.some((z)=>z.id===J)}var bT,IT,oX,sX,tX="en";var eX=C(()=>{UL();DL();ML();NL();gL();IL();TL();uL();hL();cL();iL();aL();bT={settings:wL,tasks:vL,files:fL,newTask:kL,ops:SL,update:dL,quickTask:xL,help:LL,history:OL,common:VL,keys:RL,worktrees:lL},IT={settings:PL,tasks:mL,files:KL,newTask:bL,ops:yL,update:nL,quickTask:EL,help:FL,history:AL,common:WL,keys:CL,worktrees:$L},oX=[{id:"en",label:"English"},{id:"zh",label:"\u4E2D\u6587"}],sX={en:bT,zh:IT}});function SG(J){if(sX[J])ST("lang",J)}function cV(){return mV.lang}function _L(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 yT(J,z){if(!z)return J;return J.replace(/\{(\w+)\}/g,(Z,Y)=>(Y in z)?String(z[Y]):Z)}function F(J,z){let Z=mV.lang,Y=_L(sX[Z],J)??_L(sX.en,J)??J;return yT(Y,z)}function dV(J,z){let Z=mV.lang,Y=(X)=>{return X.keys[J]?.[z]};return Y(sX[Z])??Y(sX.en)??z}var mV,ST;var t1=C(()=>{rX();eX();eX();[mV,ST]=zZ({lang:tX})});import{randomBytes as oL}from"crypto";import{existsSync as nV,mkdirSync as TT,writeFileSync as xT}from"fs";import{isAbsolute as ET,join as uT}from"path";function hT(J){if(J.startsWith('"')&&J.endsWith('"')||J.startsWith("'")&&J.endsWith("'"))return J.slice(1,-1);return J}function vT(J){let Z=`__DOUBLE_BACKSLASH_${oL(8).toString("hex")}__`;return J.replace(/\\\\/g,Z).replace(/\\(.)/g,"$1").replaceAll(Z,"\\")}function sL(J,z=nV){let Z=vT(hT(J.trim()));if(!wT.test(Z))return null;if(!ET(Z))return null;return z(Z)?Z:null}function tL(J,z=nV){let Z=J.split(`
77
+ `).map((X)=>X.trim()).filter((X)=>X.length>0);if(Z.length===0)return null;let Y=[];for(let X of Z){let Q=sL(X,z);if(!Q)return null;Y.push(Q)}return Y}function iV(J,z){return PT.test(J)?`pdf[${z}]`:`images[${z}]`}function eL(J,z){if(z.length===0)return J;let Z=z.map((Y,X)=>`${iV(Y,X)}: ${Y}`).join(`
78
+ `);return`${J}
79
+
80
+ ${Z}`}async function pL(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 JF(){if(process.platform==="darwin"){let J=await pL(["osascript","-e","get POSIX path of (the clipboard as \xABclass furl\xBB)"]),z=J?sL(J):null;if(z)return z;let Z=rL();return await pL(["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&&nV(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=rL();return xT(Y,Z),Y}}catch{}return null}return null}function rL(){let J=nW();TT(J,{recursive:!0});let z=new Date().toISOString().slice(0,10).replaceAll("-","");return uT(J,`paste-${z}-${oL(4).toString("hex")}.png`)}var wT,PT;var lV=C(()=>{o1();wT=/\.(png|jpe?g|gif|webp|pdf)$/i,PT=/\.pdf$/i});function mT(J){let z=[],Z=J.name;if(Z)z.push(Z);if(Z==="return")z.push("enter");if(Z==="enter")z.push("return");if(Z==="backspace"&&J.raw==="\b"&&!J.meta&&!J.option)z.push("ctrl+h");if(Z==="linefeed"&&!J.meta&&!J.option)z.push("ctrl+j");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((Q)=>X+Q)}function aV(J,z){if(z.defaultPrevented)return!1;if($V)return!1;let Z=J.slice(),Y=mT(z);$V=!0;try{for(let X=Z.length-1;X>=0;X--){let Q=Z[X];if(!Q)continue;let q=Q.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{$V=!1}}var $V=!1;function dT(){let J=HJ();if(!J)throw Error("useBindings: no renderer in scope; call inside a component rendered by @opentui/solid.");if(zF===J)return;if(O9&&A9)O9.off("keypress",A9);zF=J,O9=J.keyInput,A9=(z)=>{aV(N9,z)},O9.on("keypress",A9)}function L1(J){dT();let z=cT++,Z={config:J,id:z};E0(()=>{J()}),N9.push(Z),k1(()=>{let Y=N9.findIndex((X)=>X.id===z);if(Y>=0)N9.splice(Y,1)})}var cT=1,N9,zF=null,O9=null,A9=null;var TJ=C(()=>{x();H1();N9=[]});function R9(){let J=new Set;function z(Y,X){let Q=setTimeout(()=>{J.delete(Q),Y()},X);return J.add(Q),Q}function Z(Y){if(J.delete(Y))clearTimeout(Y)}return k1(()=>{for(let Y of J)clearTimeout(Y);J.clear()}),{set:z,clear:Z}}var _V=C(()=>{H1()});import{RGBA as ZF}from"@opentui/core";function lT(J){let z=ez(),Z=I0(),{theme:Y}=Z,X=HJ(),Q=!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"),U=W("box");return D(B,U),G(B,"onMouseDown",()=>{Q=!!X?.getSelection()}),G(B,"onMouseUp",()=>{if(Q){Q=!1;return}J.onClose?.()}),G(B,"alignItems","center"),G(B,"justifyContent","center"),G(B,"position","absolute"),G(B,"zIndex",3000),G(B,"left",0),G(B,"top",0),G(U,"onMouseUp",(V)=>{Q=!1,V.stopPropagation()}),G(U,"flexShrink",1),G(U,"flexGrow",0),G(U,"paddingTop",1),K(U,()=>J.children),T((V)=>{var f=z().width,L=z().height,M=Z.transparentBackground?iT:nT,A=q(),N=z().width-2,u=j(),h=Y.backgroundDialog;return f!==V.e&&(V.e=G(B,"width",f,V.e)),L!==V.t&&(V.t=G(B,"height",L,V.t)),M!==V.a&&(V.a=G(B,"backgroundColor",M,V.a)),A!==V.o&&(V.o=G(U,"width",A,V.o)),N!==V.i&&(V.i=G(U,"maxWidth",N,V.i)),u!==V.n&&(V.n=G(U,"maxHeight",u,V.n)),h!==V.s&&(V.s=G(U,"backgroundColor",h,V.s)),V},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),B})()}function $T(){let[J,z]=zZ({stack:[],size:"medium"}),Z=HJ(),Y=null,X=R9();function Q(){X.set(()=>{if(!Y)return;if(Y.isDestroyed)return;function H(B){for(let U of B.getChildren()){if(U===Y)return!0;if(H(U))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)),Q()};return L1(()=>({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?.();UH(()=>{z("size","medium"),z("stack",[])}),Q()},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)Q()},get stack(){return J.stack},get size(){return J.size},setSize(H){z("size",H)}}}function XF(J){let z=$T();return b(YF.Provider,{value:z,get children(){return[L0(()=>J.children),(()=>{var Z=W("box");return G(Z,"position","absolute"),G(Z,"zIndex",3000),K(Z,b(z0,{get when(){return z.stack.length},get children(){return b(lT,{onClose:()=>z.clear(),get size(){return z.size},get children(){return z.stack.at(-1).element()}})}})),Z})()]}})}function i1(){let J=Zz(YF);if(!J)throw Error("useDialog must be used within a DialogProvider");return J}var nT,iT,YF;var aJ=C(()=>{x();x();x();x();x();x();x();x();H1();rX();P1();TJ();_V();nT=ZF.fromInts(0,0,0,128),iT=ZF.fromInts(0,0,0,64);YF=az()});import{spawnSync as pV}from"child_process";import*as GF from"fs";function QF(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 qF(J){let z=J.trim();if(!z)return"repo path is required";let Z;try{Z=GF.statSync(z)}catch{return`path does not exist: ${z}`}if(!Z.isDirectory())return`not a directory: ${z}`;try{if(pV("git",["rev-parse","--git-dir"],{cwd:z,encoding:"utf-8",timeout:2000,stdio:["ignore","pipe","ignore"]}).status!==0)return QF(z)}catch{return QF(z)}return null}function yG(J){if(!J)return null;try{let z=pV("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 HF(J){if(!J)return[];try{let z=pV("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(`
81
+ `).map((Z)=>Z.trim()).filter(Boolean).sort((Z,Y)=>{let X=(H)=>H==="main"?0:H==="master"?1:H==="develop"?2:3,Q=X(Z),q=X(Y);if(Q!==q)return Q-q;return Z.localeCompare(Y)})}catch{return[]}}var uz="main";var C9=()=>{};import*as jF from"fs";import*as g9 from"os";function MJ(J){if(J==="~")return g9.homedir();if(J.startsWith("~/"))return g9.homedir()+J.slice(1);return J}function rV(J){if(!J)return{base:"",filter:""};let Z=MJ(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 oV(J){if(!J)return[];try{let z=jF.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 sV(J,z){let Z=z.toLowerCase(),X=Z.startsWith(".")?J:J.filter((Q)=>!Q.startsWith("."));if(!Z)return X;return X.filter((Q)=>Q.toLowerCase().startsWith(Z))}function TG(J,z,Z){let Y=z+Z;if(J.startsWith("~")){let X=g9.homedir();if(Y===X)return"~";if(Y.startsWith(`${X}/`))return`~${Y.slice(X.length)}`}return Y}var k9=()=>{};import{spawn as aT}from"child_process";import*as iY from"fs";import*as xG from"path";function BF(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 VF(J){let z=J.trim();if(!z)return F("newTask.error.gitUrlRequired");let Z=z.includes("://"),Y=z.includes("@")&&z.includes(":"),X=z.includes("/");if(!Z&&!Y&&!X)return F("newTask.error.gitUrlInvalid",{url:z});return null}function tV(J,z){let Z=z.trim();if(!Z)return F("newTask.error.folderRequired");if(Z.includes("/")||Z.includes("\\"))return F("newTask.error.folderHasSeparator");let Y=J.trim();if(!Y)return F("newTask.error.parentRequired");let X=MJ(Y),Q;try{Q=iY.statSync(X)}catch{return F("newTask.error.parentNotFound",{path:X})}if(!Q.isDirectory())return F("newTask.error.parentNotDir",{path:X});let q=xG.join(X,Z);if(iY.existsSync(q))return F("newTask.error.targetExists",{path:q});return null}function WF(J,z){return xG.join(MJ(J.trim()),z.trim())}function UF(J,z){let Z=z.trim();if(!Z)return z;let Y=MJ(J.trim());if(!Y)return z;try{if(!iY.statSync(Y).isDirectory())return z}catch{return z}if(!iY.existsSync(xG.join(Y,Z)))return Z;for(let X=2;X<1000;X++){let Q=`${Z}-${X}`;if(!iY.existsSync(xG.join(Y,Q)))return Q}return Z}function fF(J,z,Z){return new Promise((Y)=>{let X="";try{let Q=aT("git",["clone","--progress",J,z],{stdio:["ignore","ignore","pipe"],env:{...process.env,GIT_TERMINAL_PROMPT:"0",GIT_ASKPASS:""}});Q.stderr?.setEncoding("utf-8"),Q.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)}}),Q.on("error",(q)=>{Y({ok:!1,error:q.message})}),Q.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(Q){Y({ok:!1,error:Q instanceof Error?Q.message:String(Q)})}})}var KF=C(()=>{t1();k9()});function eV(J){if(J==="existing")return"clone";if(J==="clone")return"adopt";return"existing"}function J7(J){if(J==="existing")return"adopt";if(J==="clone")return"existing";return"clone"}function DF(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 xJ(J){return J.replace(/[\r\n]+/g,"")}function EG(J){return!/\S/u.test(J)}function z7(J,z="existing"){if(J==="confirm")return"tabs";if(J==="tabs")return"engine";if(J==="engine")return Z7(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 Z7(J){if(J==="clone")return"cloneUrl";if(J==="adopt")return"adoptFilter";return"repo"}function LF(J,z){let Z=z.trim();if(!Z)return J;return J.filter((Y)=>oG(Z,Y.path))}function FF(J,z){let Z=new Set,Y=[];for(let X of[J,...z]){let Q=X.trim();if(!Q||Z.has(Q))continue;Z.add(Q),Y.push(Q)}return Y}function MF(J,z){let Z=z.trim().toLowerCase();if(!Z)return J;return J.filter((Y)=>Y.toLowerCase().includes(Z))}function OF(J,z){let Z=z.trim().toLowerCase();if(!Z)return J;return J.filter((Y)=>Y.toLowerCase().includes(Z))}function uG(J,z,Z=_T){let Y=J.length;if(Y<=Z)return{items:J,start:0,total:Y};let X=Math.floor(Z/2),Q=Math.max(0,z-X);if(Q+Z>Y)Q=Y-Z;return{items:J.slice(Q,Q+Z),start:Q,total:Y}}function ZZ(J,z){if(z<=0)return 0;return Math.max(0,Math.min(z-1,J))}function AF(J,z,Z){let Y=J.trim(),X=Y.toLowerCase(),Q=Y?z.find((H)=>H.toLowerCase()===X):void 0;if(Q)return Q;let q=z[Z];if(q)return q;return Y||uz}var _T=8;var Y7=C(()=>{Kj();C9()});import{TextAttributes as Lz}from"@opentui/core";function NF(J){let z=i1(),{theme:Z}=I0(),[Y,X]=p("existing"),Q=()=>{let $=J.availableVendors;return $&&$.length>0?$:e1},q=(()=>{let $=Q(),O0=J.defaultVendor??"claude";return $.includes(O0)?O0:$[0]??"claude"})(),[H,j]=p(q),[B,U]=p("tabs"),[V,f]=p(J.defaultRepo),[L,M]=p(yG(MJ(J.defaultRepo.trim()))??uz),[A,N]=p(!1),[u,h]=p(""),[I,R]=p(J.defaultCloneParent?.trim()?J.defaultCloneParent:"~/"),[O,S]=p(""),[n,i]=p(!1),[P,a]=p(uz),[Y0,Q0]=p(!1),[e,v]=p(""),j0=U0(()=>FF(J.defaultRepo,J.savedRepos)),k=U0(()=>DF(V(),j0())),o=U0(()=>rV(V())),m=U0(()=>oV(o().base)),g=U0(()=>sV(m(),o().filter)),J0=U0(()=>MF(j0(),V())),w=U0(()=>k()==="browse"?g():J0()),[_,q0]=p(0),B0=U0(()=>uG(w(),_())),[F0,l0]=p(!1),$0=U0(()=>HF(MJ(V().trim()))),C0=U0(()=>OF($0(),L())),[t0,O1]=p(0),j1=U0(()=>uG(C0(),t0())),J1=U0(()=>rV(I())),P0=U0(()=>oV(J1().base)),z1=U0(()=>sV(P0(),J1().filter)),[Q1,k0]=p(0),s=U0(()=>uG(z1(),Q1())),[q1,c]=p(!1),[H0,A0]=p(""),[v0,e0]=p(0),[m0,Z1]=p(new Set),[R1]=DZ(()=>Y()==="adopt"?MJ(V().trim()):null,async($)=>J.discoverAdoptable?await J.discoverAdoptable($):[]),A1=U0(()=>LF(R1()??[],H0())),X0=U0(()=>uG(A1().map(($)=>$.path),v0())),G0=U0(()=>{let $=X0();return A1().slice($.start,$.start+$.items.length)});E0(()=>{A1(),e0(($)=>ZZ($,A1().length))}),E0(($)=>{let O0=MJ(V().trim());if($!==void 0&&O0!==$)Z1(new Set),e0(0);return O0});function f0($){Z1((O0)=>{let Z0=new Set(O0);if(Z0.has($))Z0.delete($);else Z0.add($);return Z0})}function N0(){let $=A1()[v0()];if($)f0($.path)}E0(()=>{C0(),O1(0)}),E0(()=>{let $=MJ(V().trim());if(!$)return;if(A())return;let O0=yG($);if(O0)M(O0)}),E0(()=>{w(),q0(0)}),E0(()=>{z1(),k0(0)}),E0(()=>{let $=u(),O0=I();if(n())return;let Z0=BF($);S(UF(O0,Z0))});let[W0,T0]=p(null);E0(()=>{V(),u(),I(),O(),H0(),T0(null)});function g0(){let $=MJ(V().trim());if(!$)return;let O0=qF($);if(O0){T0(O0),U("repo");return}let Z0=L().trim()||uz;J.onSubmit({repo:$,baseRef:Z0,vendor:H()}),z.clear()}async function n0(){if(Y0())return;let $=VF(u());if($){T0($),U("cloneUrl");return}let O0=tV(I(),O());if(O0){T0(O0);let C1=O().trim(),m1=!(!C1||C1.includes("/")||C1.includes("\\"))&&tV(I(),"__kobe_probe__")!=null;U(m1?"cloneParent":"cloneFolder");return}let Z0=WF(I(),O());Q0(!0),v(F("newTask.clone.progressInto",{target:Z0}));let E=await fF(u().trim(),Z0,(C1)=>{v(C1)});if(Q0(!1),!E.ok){T0(F("newTask.error.cloneFailed",{error:E.error})),U("cloneUrl");return}let K0=P().trim()||uz,x1=MJ(I().trim());J.onSubmit({repo:E.path,baseRef:K0,vendor:H(),cloned:{parentDir:x1}}),z.clear()}function b0(){let $=A1();if($.length===0){T0(F("newTask.error.noAdoptable"));return}let O0=m0(),Z0=O0.size>0?$.filter((E)=>O0.has(E.path)):$.slice(v0(),v0()+1);if(Z0.length===0)return;J.onSubmit({mode:"adopt",repo:MJ(V().trim()),vendor:H(),adopt:Z0.map((E)=>({worktreePath:E.path,branch:E.branch}))}),z.clear()}function y0(){if(Y()==="clone"){n0();return}if(Y()==="adopt"){b0();return}g0()}function Y1($){if(Y0())return;if($===Y())return;X($),U(Z7($)),T0(null)}function W1($){if(Y0())return;let O0=$===1?eV(Y()):J7(Y());if(O0===Y())return;X(O0),T0(null),U("tabs")}function U1($){j((O0)=>$===1?xZ(Q(),O0):Lj(Q(),O0))}function G1(){if(!V().trim()&&k()==="saved"){let O0=w()[0];if(O0){f(O0),U("baseRef");return}}if(k()==="browse"){let Z0=g()[_()],E=o();if(Z0){f(TG(V(),E.base,Z0)),q0(0),l0(!0),U("baseRef");return}U("baseRef");return}let $=w()[_()];if($){f($),U("baseRef");return}U("baseRef")}function y($){let Z0=w()[$];if(!Z0)return;if(k()==="browse"){let E=o();f(TG(V(),E.base,Z0)),q0($),l0(!0),U("baseRef");return}f(Z0),q0($),U("baseRef")}function D0(){let O0=z1()[Q1()],Z0=J1();if(O0){R(TG(I(),Z0.base,O0)),k0(0),c(!0),U("cloneFolder");return}U("cloneFolder")}function f1($){let Z0=z1()[$];if(!Z0)return;let E=J1();R(TG(I(),E.base,Z0)),k0($),c(!0),U("cloneFolder")}let M1=()=>{let $=A1();if($.length===0)return;let O0=$.every((Z0)=>m0().has(Z0.path));Z1(O0?new Set:new Set($.map((Z0)=>Z0.path)))};L1(()=>({bindings:[{key:"tab",cmd:()=>U(($)=>z7($,Y()))},{key:"ctrl+]",cmd:()=>Y1(eV(Y()))},{key:"ctrl+[",cmd:()=>Y1(J7(Y()))},{key:"ctrl+e",cmd:()=>j(($)=>xZ(Q(),$))},{key:"up",cmd:()=>{if(Y0())return;if(Y()==="existing"&&B()==="repo"){let $=w();if($.length===0)return;q0(ZZ(_()-1,$.length));return}if(Y()==="existing"&&B()==="baseRef"){let $=C0();if($.length===0)return;O1(ZZ(t0()-1,$.length));return}if(Y()==="clone"&&B()==="cloneParent"){let $=z1();if($.length===0)return;k0(ZZ(Q1()-1,$.length));return}if(Y()==="adopt"){let $=A1();if($.length===0)return;e0(ZZ(v0()-1,$.length))}}},{key:"down",cmd:()=>{if(Y0())return;if(Y()==="existing"&&B()==="repo"){let $=w();if($.length===0)return;q0(ZZ(_()+1,$.length));return}if(Y()==="existing"&&B()==="baseRef"){let $=C0();if($.length===0)return;O1(ZZ(t0()+1,$.length));return}if(Y()==="clone"&&B()==="cloneParent"){let $=z1();if($.length===0)return;k0(ZZ(Q1()+1,$.length));return}if(Y()==="adopt"){let $=A1();if($.length===0)return;e0(ZZ(v0()+1,$.length))}}},...B()==="tabs"||B()==="engine"?[{key:"left",cmd:()=>B()==="tabs"?W1(-1):U1(-1)},{key:"right",cmd:()=>B()==="tabs"?W1(1):U1(1)},{key:"return",cmd:()=>U(($)=>z7($,Y()))}]:[],...Y()==="adopt"?[{key:"ctrl+a",cmd:M1}]:[]]})),L1(()=>({enabled:B()==="confirm"&&!Y0(),bindings:[{key:"return",cmd:()=>y0()}]}));let h0=($)=>B()===$?Z.primary:Z.textMuted,p0=($)=>B()===$?Lz.BOLD|Lz.UNDERLINE:void 0,x0=($,O0)=>$?O0?Lz.BOLD|Lz.UNDERLINE:Lz.BOLD:void 0;return(()=>{var $=W("box"),O0=W("box"),Z0=W("text"),E=W("box"),K0=W("box"),x1=W("text"),C1=W("box"),$1=W("box"),m1=W("text"),WJ=W("box"),_J=W("text"),B1=W("text");return D($,O0),D($,E),D($,WJ),G($,"paddingLeft",2),G($,"paddingRight",2),G($,"gap",0),D(O0,Z0),G(O0,"flexDirection","row"),K(Z0,()=>F("newTask.title")),D(E,K0),G(E,"gap",1),G(E,"paddingTop",1),G(E,"paddingBottom",1),K(E,()=>{let l=()=>B()==="tabs",r=(t)=>t?Z.primary:Z.textMuted;return(()=>{var t=W("box"),d=W("text"),c0=W("text"),u0=W("text");return D(t,d),D(t,c0),D(t,u0),G(t,"flexDirection","row"),G(t,"gap",2),G(d,"onMouseUp",()=>Y1("existing")),K(d,(()=>{var M0=L0(()=>Y()==="existing");return()=>M0()?`\u25B8 ${F("newTask.tabs.existing")}`:` ${F("newTask.tabs.existing")}`})()),G(c0,"onMouseUp",()=>Y1("clone")),K(c0,(()=>{var M0=L0(()=>Y()==="clone");return()=>M0()?`\u25B8 ${F("newTask.tabs.clone")}`:` ${F("newTask.tabs.clone")}`})()),G(u0,"onMouseUp",()=>Y1("adopt")),K(u0,(()=>{var M0=L0(()=>Y()==="adopt");return()=>M0()?`\u25B8 ${F("newTask.tabs.adopt")}`:` ${F("newTask.tabs.adopt")}`})()),T((M0)=>{var d0=r(Y()==="existing"),F1=x0(Y()==="existing",l()),b1=r(Y()==="clone"),AJ=x0(Y()==="clone",l()),Mz=r(Y()==="adopt"),yZ=x0(Y()==="adopt",l());return d0!==M0.e&&(M0.e=G(d,"fg",d0,M0.e)),F1!==M0.t&&(M0.t=G(d,"attributes",F1,M0.t)),b1!==M0.a&&(M0.a=G(c0,"fg",b1,M0.a)),AJ!==M0.o&&(M0.o=G(c0,"attributes",AJ,M0.o)),Mz!==M0.i&&(M0.i=G(u0,"fg",Mz,M0.i)),yZ!==M0.n&&(M0.n=G(u0,"attributes",yZ,M0.n)),M0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),t})()},K0),D(K0,x1),D(K0,C1),G(K0,"gap",0),K(x1,()=>F("newTask.field.engine")),D(C1,$1),D(C1,m1),G(C1,"flexDirection","row"),G(C1,"gap",2),K(C1,b(o0,{get each(){return Q()},children:(l)=>{let r=()=>H()===l;return(()=>{var t=W("text");return G(t,"onMouseUp",()=>j(l)),K(t,()=>r()?"\u25B8 ":" ",null),K(t,l,null),T((d)=>{var c0=r()?Z.primary:Z.textMuted,u0=r()?Lz.BOLD:void 0;return c0!==d.e&&(d.e=G(t,"fg",c0,d.e)),u0!==d.t&&(d.t=G(t,"attributes",u0,d.t)),d},{e:void 0,t:void 0}),t})()}}),$1),G($1,"flexGrow",1),K(m1,()=>F("newTask.hint.engineCycle")),K(E,b(z0,{get when(){return Y()==="existing"},get children(){return[(()=>{var l=W("box"),r=W("text"),t=W("input");return D(l,r),D(l,t),G(l,"gap",0),K(r,()=>F("newTask.field.repo")),G(t,"onInput",(d)=>{l0(!1),f(xJ(d))}),G(t,"onSubmit",()=>G1()),T((d)=>{var c0=h0("repo"),u0=p0("repo"),M0=V(),d0=J.defaultRepo,F1=B()==="repo";return c0!==d.e&&(d.e=G(r,"fg",c0,d.e)),u0!==d.t&&(d.t=G(r,"attributes",u0,d.t)),M0!==d.a&&(d.a=G(t,"value",M0,d.a)),d0!==d.o&&(d.o=G(t,"placeholder",d0,d.o)),F1!==d.i&&(d.i=G(t,"focused",F1,d.i)),d},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),l})(),b(z0,{get when(){return L0(()=>B()==="repo"&&w().length>0)()&&!F0()},get children(){var l=W("box");return G(l,"gap",0),G(l,"paddingLeft",2),K(l,b(z0,{get when(){return B0().start>0},get children(){var r=W("text");return G(r,"wrapMode","none"),K(r,()=>F("newTask.picker.moreAbove",{count:B0().start})),T((t)=>G(r,"fg",Z.textMuted,t)),r}}),null),K(l,b(o0,{get each(){return B0().items},children:(r,t)=>{let d=()=>B0().start+t(),c0=()=>d()===_(),u0=()=>k()==="saved"&&r===J.defaultRepo,M0=()=>k()==="saved"&&V().trim()===r,d0=()=>k()==="browse"?"/":"",F1=()=>u0()?` ${F("newTask.hint.currentDir")}`:"";return(()=>{var b1=W("text");return G(b1,"wrapMode","none"),G(b1,"onMouseUp",()=>y(d())),K(b1,()=>c0()?"\u25B8 ":" ",null),K(b1,r,null),K(b1,d0,null),K(b1,F1,null),T((AJ)=>{var Mz=c0()?Z.primary:M0()?Z.accent:Z.textMuted,yZ=c0()?Lz.BOLD:void 0;return Mz!==AJ.e&&(AJ.e=G(b1,"fg",Mz,AJ.e)),yZ!==AJ.t&&(AJ.t=G(b1,"attributes",yZ,AJ.t)),AJ},{e:void 0,t:void 0}),b1})()}}),null),K(l,b(z0,{get when(){return B0().start+B0().items.length<B0().total},get children(){var r=W("text");return G(r,"wrapMode","none"),K(r,()=>F("newTask.picker.moreBelow",{count:B0().total-B0().start-B0().items.length})),T((t)=>G(r,"fg",Z.textMuted,t)),r}}),null),l}}),(()=>{var l=W("box"),r=W("text"),t=W("input");return D(l,r),D(l,t),G(l,"gap",0),K(r,()=>F("newTask.field.fromBranch")),G(t,"placeholder",uz),G(t,"onInput",(d)=>{N(!0),M(xJ(d))}),G(t,"onSubmit",()=>{M(AF(L(),C0(),t0())),N(!0),g0()}),T((d)=>{var c0=h0("baseRef"),u0=p0("baseRef"),M0=L(),d0=B()==="baseRef";return c0!==d.e&&(d.e=G(r,"fg",c0,d.e)),u0!==d.t&&(d.t=G(r,"attributes",u0,d.t)),M0!==d.a&&(d.a=G(t,"value",M0,d.a)),d0!==d.o&&(d.o=G(t,"focused",d0,d.o)),d},{e:void 0,t:void 0,a:void 0,o:void 0}),l})(),b(z0,{get when(){return L0(()=>B()==="baseRef"&&C0().length===0)()&&W0()==null},get children(){var l=W("box"),r=W("text");return D(l,r),G(l,"gap",0),G(l,"paddingLeft",2),G(l,"paddingBottom",1),G(r,"wrapMode","none"),K(r,(()=>{var t=L0(()=>$0().length===0);return()=>t()?F("newTask.hint.noBranchesFound"):F("newTask.hint.noMatchBranch")})()),T((t)=>G(r,"fg",Z.textMuted,t)),l}}),b(z0,{get when(){return L0(()=>B()==="baseRef")()&&C0().length>0},get children(){var l=W("box");return G(l,"gap",0),G(l,"paddingLeft",2),G(l,"paddingBottom",1),K(l,b(z0,{get when(){return j1().start>0},get children(){var r=W("text");return G(r,"wrapMode","none"),K(r,()=>F("newTask.picker.moreAbove",{count:j1().start})),T((t)=>G(r,"fg",Z.textMuted,t)),r}}),null),K(l,b(o0,{get each(){return j1().items},children:(r,t)=>{let d=()=>j1().start+t(),c0=()=>d()===t0(),u0=()=>L().trim()===r;return(()=>{var M0=W("text");return G(M0,"wrapMode","none"),G(M0,"onMouseUp",()=>{M(r),N(!0),O1(d()),U("confirm")}),K(M0,()=>c0()?"\u25B8 ":" ",null),K(M0,r,null),T((d0)=>{var F1=c0()?Z.primary:u0()?Z.accent:Z.textMuted,b1=c0()?Lz.BOLD:void 0;return F1!==d0.e&&(d0.e=G(M0,"fg",F1,d0.e)),b1!==d0.t&&(d0.t=G(M0,"attributes",b1,d0.t)),d0},{e:void 0,t:void 0}),M0})()}}),null),K(l,b(z0,{get when(){return j1().start+j1().items.length<j1().total},get children(){var r=W("text");return G(r,"wrapMode","none"),K(r,()=>F("newTask.picker.moreBelow",{count:j1().total-j1().start-j1().items.length})),T((t)=>G(r,"fg",Z.textMuted,t)),r}}),null),l}})]}}),null),K(E,b(z0,{get when(){return Y()==="clone"},get children(){return[(()=>{var l=W("box"),r=W("text"),t=W("input");return D(l,r),D(l,t),G(l,"gap",0),K(r,()=>F("newTask.field.gitUrl")),G(t,"placeholder","https://github.com/user/repo.git"),G(t,"onInput",(d)=>h(xJ(d))),G(t,"onSubmit",()=>{if(!u().trim())return;U("cloneParent")}),T((d)=>{var c0=h0("cloneUrl"),u0=p0("cloneUrl"),M0=u(),d0=B()==="cloneUrl";return c0!==d.e&&(d.e=G(r,"fg",c0,d.e)),u0!==d.t&&(d.t=G(r,"attributes",u0,d.t)),M0!==d.a&&(d.a=G(t,"value",M0,d.a)),d0!==d.o&&(d.o=G(t,"focused",d0,d.o)),d},{e:void 0,t:void 0,a:void 0,o:void 0}),l})(),(()=>{var l=W("box"),r=W("text"),t=W("input");return D(l,r),D(l,t),G(l,"gap",0),K(r,()=>F("newTask.field.parentDir")),G(t,"placeholder","~/"),G(t,"onInput",(d)=>{c(!1),R(xJ(d))}),G(t,"onSubmit",()=>D0()),T((d)=>{var c0=h0("cloneParent"),u0=p0("cloneParent"),M0=I(),d0=B()==="cloneParent";return c0!==d.e&&(d.e=G(r,"fg",c0,d.e)),u0!==d.t&&(d.t=G(r,"attributes",u0,d.t)),M0!==d.a&&(d.a=G(t,"value",M0,d.a)),d0!==d.o&&(d.o=G(t,"focused",d0,d.o)),d},{e:void 0,t:void 0,a:void 0,o:void 0}),l})(),b(z0,{get when(){return B()==="cloneParent"},get children(){var l=W("box"),r=W("text");return D(l,r),G(l,"paddingLeft",2),G(r,"wrapMode","none"),K(r,()=>F("newTask.hint.remembered")),T((t)=>G(r,"fg",Z.textMuted,t)),l}}),b(z0,{get when(){return L0(()=>B()==="cloneParent"&&z1().length>0)()&&!q1()},get children(){var l=W("box");return G(l,"gap",0),G(l,"paddingLeft",2),K(l,b(z0,{get when(){return s().start>0},get children(){var r=W("text");return G(r,"wrapMode","none"),K(r,()=>F("newTask.picker.moreAbove",{count:s().start})),T((t)=>G(r,"fg",Z.textMuted,t)),r}}),null),K(l,b(o0,{get each(){return s().items},children:(r,t)=>{let d=()=>s().start+t(),c0=()=>d()===Q1();return(()=>{var u0=W("text"),M0=R0("/");return D(u0,M0),G(u0,"wrapMode","none"),G(u0,"onMouseUp",()=>f1(d())),K(u0,()=>c0()?"\u25B8 ":" ",M0),K(u0,r,M0),T((d0)=>{var F1=c0()?Z.primary:Z.textMuted,b1=c0()?Lz.BOLD:void 0;return F1!==d0.e&&(d0.e=G(u0,"fg",F1,d0.e)),b1!==d0.t&&(d0.t=G(u0,"attributes",b1,d0.t)),d0},{e:void 0,t:void 0}),u0})()}}),null),K(l,b(z0,{get when(){return s().start+s().items.length<s().total},get children(){var r=W("text");return G(r,"wrapMode","none"),K(r,()=>F("newTask.picker.moreBelow",{count:s().total-s().start-s().items.length})),T((t)=>G(r,"fg",Z.textMuted,t)),r}}),null),l}}),(()=>{var l=W("box"),r=W("text"),t=W("input");return D(l,r),D(l,t),G(l,"gap",0),K(r,()=>F("newTask.field.folderName")),G(t,"onInput",(d)=>{i(!0),S(xJ(d))}),G(t,"onSubmit",()=>U("cloneBaseRef")),T((d)=>{var c0=h0("cloneFolder"),u0=p0("cloneFolder"),M0=O(),d0=F("newTask.placeholder.folderName"),F1=B()==="cloneFolder";return c0!==d.e&&(d.e=G(r,"fg",c0,d.e)),u0!==d.t&&(d.t=G(r,"attributes",u0,d.t)),M0!==d.a&&(d.a=G(t,"value",M0,d.a)),d0!==d.o&&(d.o=G(t,"placeholder",d0,d.o)),F1!==d.i&&(d.i=G(t,"focused",F1,d.i)),d},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),l})(),(()=>{var l=W("box"),r=W("text"),t=W("input");return D(l,r),D(l,t),G(l,"gap",0),K(r,()=>F("newTask.field.baseBranch")),G(t,"placeholder",uz),G(t,"onInput",(d)=>a(xJ(d))),G(t,"onSubmit",()=>void n0()),T((d)=>{var c0=h0("cloneBaseRef"),u0=p0("cloneBaseRef"),M0=P(),d0=B()==="cloneBaseRef";return c0!==d.e&&(d.e=G(r,"fg",c0,d.e)),u0!==d.t&&(d.t=G(r,"attributes",u0,d.t)),M0!==d.a&&(d.a=G(t,"value",M0,d.a)),d0!==d.o&&(d.o=G(t,"focused",d0,d.o)),d},{e:void 0,t:void 0,a:void 0,o:void 0}),l})(),b(z0,{get when(){return Y0()},get children(){var l=W("box"),r=W("text");return D(l,r),G(l,"gap",0),G(l,"paddingLeft",2),G(r,"wrapMode","none"),K(r,()=>e()||F("newTask.clone.progressFallback")),T((t)=>G(r,"fg",Z.textMuted,t)),l}})]}}),null),K(E,b(z0,{get when(){return Y()==="adopt"},get children(){return[(()=>{var l=W("box"),r=W("text"),t=W("input");return D(l,r),D(l,t),G(l,"gap",0),K(r,()=>F("newTask.field.adoptFilter")),G(t,"onInput",(d)=>A0(xJ(d))),G(t,"onSubmit",()=>N0()),T((d)=>{var c0=h0("adoptFilter"),u0=p0("adoptFilter"),M0=H0(),d0=F("newTask.placeholder.adoptFilter"),F1=B()==="adoptFilter";return c0!==d.e&&(d.e=G(r,"fg",c0,d.e)),u0!==d.t&&(d.t=G(r,"attributes",u0,d.t)),M0!==d.a&&(d.a=G(t,"value",M0,d.a)),d0!==d.o&&(d.o=G(t,"placeholder",d0,d.o)),F1!==d.i&&(d.i=G(t,"focused",F1,d.i)),d},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),l})(),(()=>{var l=W("box"),r=W("text");return D(l,r),G(l,"paddingLeft",2),G(r,"wrapMode","none"),K(r,()=>F("newTask.adopt.repoLine",{path:MJ(V().trim())||F("newTask.adopt.repoNone")})),T((t)=>G(r,"fg",Z.textMuted,t)),l})(),b(z0,{get when(){return R1.loading},get children(){var l=W("box"),r=W("text");return D(l,r),G(l,"paddingLeft",2),G(r,"wrapMode","none"),K(r,()=>F("newTask.hint.scanningWorktrees")),T((t)=>G(r,"fg",Z.textMuted,t)),l}}),b(z0,{get when(){return L0(()=>!R1.loading)()&&A1().length===0},get children(){var l=W("box"),r=W("text");return D(l,r),G(l,"paddingLeft",2),G(r,"wrapMode","none"),K(r,(()=>{var t=L0(()=>(R1()??[]).length===0);return()=>t()?F("newTask.adopt.noUnlinked"):F("newTask.adopt.noMatch")})()),T((t)=>G(r,"fg",Z.textMuted,t)),l}}),b(z0,{get when(){return A1().length>0},get children(){var l=W("box"),r=W("text");return D(l,r),G(l,"gap",0),G(l,"paddingLeft",2),K(l,b(z0,{get when(){return X0().start>0},get children(){var t=W("text");return G(t,"wrapMode","none"),K(t,()=>F("newTask.picker.moreAbove",{count:X0().start})),T((d)=>G(t,"fg",Z.textMuted,d)),t}}),r),K(l,b(o0,{get each(){return G0()},children:(t,d)=>{let c0=()=>X0().start+d(),u0=()=>c0()===v0(),M0=()=>m0().has(t.path),d0=()=>[t.dirty?"dirty":"",t.kobeManaged?"":"external"].filter(Boolean).join(",");return(()=>{var F1=W("text");return G(F1,"wrapMode","none"),G(F1,"onMouseUp",()=>{e0(c0()),f0(t.path)}),K(F1,()=>u0()?"\u25B8 ":" ",null),K(F1,()=>M0()?"[x] ":"[ ] ",null),K(F1,()=>t.branch,null),K(F1,(()=>{var b1=L0(()=>!!d0());return()=>b1()?` (${d0()})`:""})(),null),T((b1)=>{var AJ=u0()?Z.primary:M0()?Z.accent:Z.textMuted,Mz=u0()?Lz.BOLD:void 0;return AJ!==b1.e&&(b1.e=G(F1,"fg",AJ,b1.e)),Mz!==b1.t&&(b1.t=G(F1,"attributes",Mz,b1.t)),b1},{e:void 0,t:void 0}),F1})()}}),r),K(l,b(z0,{get when(){return X0().start+X0().items.length<X0().total},get children(){var t=W("text");return G(t,"wrapMode","none"),K(t,()=>F("newTask.picker.moreBelow",{count:X0().total-X0().start-X0().items.length})),T((d)=>G(t,"fg",Z.textMuted,d)),t}}),r),G(r,"wrapMode","none"),K(r,(()=>{var t=L0(()=>m0().size>0);return()=>t()?F("newTask.adopt.hintSelected",{count:m0().size}):F("newTask.adopt.hintDefault")})()),T((t)=>G(r,"fg",Z.textMuted,t)),l}})]}}),null),K(E,b(z0,{get when(){return W0()},get children(){var l=W("text"),r=R0("\u203B ");return D(l,r),G(l,"wrapMode","word"),K(l,W0,null),T((t)=>G(l,"fg",Z.error,t)),l}}),null),D(WJ,_J),D(WJ,B1),G(WJ,"flexDirection","row"),G(WJ,"justifyContent","space-between"),G(WJ,"alignItems","center"),G(WJ,"paddingTop",1),G(WJ,"paddingBottom",1),K(_J,()=>F("newTask.hint.legend")),G(B1,"onMouseUp",()=>y0()),K(B1,(()=>{var l=L0(()=>!!Y0());return()=>l()?F("newTask.button.cloning"):L0(()=>B()==="confirm")()?F("newTask.button.createFocused"):F("newTask.button.create")})()),T((l)=>{var r=Lz.BOLD,t=Z.text,d=h0("engine"),c0=p0("engine"),u0=Z.textMuted,M0=Z.textMuted,d0=B()==="confirm"?Z.primary:Z.text,F1=B()==="confirm"?Lz.BOLD:void 0;return r!==l.e&&(l.e=G(Z0,"attributes",r,l.e)),t!==l.t&&(l.t=G(Z0,"fg",t,l.t)),d!==l.a&&(l.a=G(x1,"fg",d,l.a)),c0!==l.o&&(l.o=G(x1,"attributes",c0,l.o)),u0!==l.i&&(l.i=G(m1,"fg",u0,l.i)),M0!==l.n&&(l.n=G(_J,"fg",M0,l.n)),d0!==l.s&&(l.s=G(B1,"fg",d0,l.s)),F1!==l.h&&(l.h=G(B1,"attributes",F1,l.h)),l},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0}),$})()}var RF=C(()=>{x();x();x();x();x();x();x();x();t1();s1();H1();P1();C9();TJ();k9();aJ();KF();Y7()});function pT(J,z,Z,Y){return new Promise((X)=>{J.replace(()=>b(NF,{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:(Q)=>X(Q),onCancel:()=>X(void 0)}),()=>X(void 0)),J.setSize("medium")})}var b9;var JQ=C(()=>{x();RF();Y7();b9={show:pT}});function CF(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 gF}from"@opentui/core";function rT(J){let z=i1(),{theme:Z}=I0(),[Y,X]=p("prompt"),[Q,q]=p(""),[H,j]=p(J.defaultVendor),[B,U]=p(J.defaultBaseRef),[V,f]=p([]);gD((h)=>{let I=tL(new TextDecoder().decode(h.bytes));if(!I)return;h.preventDefault(),f((R)=>[...R,...I.filter((O)=>!R.includes(O))])});function L(){JF().then((h)=>{if(h)f((I)=>I.includes(h)?I:[...I,h])})}function M(h){let I=I9.indexOf(Y());X(I9[(I+h+I9.length)%I9.length]??"prompt")}function A(h){let I=J.engines;if(I.length===0)return;if(h>0){j((O)=>xZ(I,O));return}let R=Math.max(0,I.indexOf(H()));j(I[(R-1+I.length)%I.length]??H())}function N(){if(EG(Q())){X("prompt");return}J.onSubmit({prompt:Q().trim(),vendor:H(),baseRef:B().trim()||J.defaultBaseRef,attachments:V()}),z.clear()}L1(()=>({enabled:!0,bindings:CF(Y(),{cycleField:M,stepEngine:A,commit:N,pasteAttachment:L,removeLastAttachment:()=>f((h)=>h.slice(0,-1))})}));let u=(h)=>Y()===h?Z.accent:Z.textMuted;return(()=>{var h=W("box"),I=W("box"),R=W("text"),O=W("text"),S=W("box"),n=W("text"),i=W("input"),P=W("box"),a=W("text"),Y0=W("box"),Q0=W("text"),e=W("input"),v=W("box"),j0=W("text");return D(h,I),D(h,S),D(h,P),D(h,Y0),D(h,v),G(h,"paddingLeft",2),G(h,"paddingRight",2),G(h,"gap",1),D(I,R),D(I,O),G(I,"flexDirection","row"),G(I,"justifyContent","space-between"),K(R,()=>F("quickTask.title",{repoLabel:J.repoLabel})),G(O,"onMouseUp",()=>J.onCancel()),K(O,()=>F("quickTask.esc")),D(S,n),D(S,i),G(S,"gap",0),K(n,()=>F("quickTask.promptLabel")),G(i,"onInput",(k)=>q(xJ(k))),G(i,"onSubmit",()=>N()),K(h,b(z0,{get when(){return V().length>0},get children(){var k=W("box");return G(k,"flexDirection","row"),G(k,"gap",2),G(k,"flexWrap","wrap"),K(k,b(o0,{get each(){return V()},children:(o,m)=>(()=>{var g=W("text");return G(g,"onMouseUp",()=>f((J0)=>J0.filter((w)=>w!==o))),K(g,()=>iV(o,m())),T((J0)=>G(g,"fg",Z.primary,J0)),g})()})),k}}),P),D(P,a),G(P,"flexDirection","row"),G(P,"gap",2),K(a,()=>F("quickTask.engineLabel")),K(P,b(o0,{get each(){return J.engines},children:(k)=>(()=>{var o=W("text");return G(o,"onMouseUp",()=>{j(k),X("engine")}),K(o,()=>J.engineLabel(k)),T((m)=>{var g=H()===k?Z.primary:Z.textMuted,J0=H()===k?gF.BOLD:void 0;return g!==m.e&&(m.e=G(o,"fg",g,m.e)),J0!==m.t&&(m.t=G(o,"attributes",J0,m.t)),m},{e:void 0,t:void 0}),o})()}),null),D(Y0,Q0),D(Y0,e),G(Y0,"gap",0),K(Q0,()=>F("quickTask.branchLabel")),G(e,"onInput",(k)=>U(xJ(k))),G(e,"onSubmit",()=>N()),D(v,j0),G(v,"paddingBottom",1),K(j0,()=>F("quickTask.legend")),T((k)=>{var o=gF.BOLD,m=Z.text,g=Z.textMuted,J0=u("prompt"),w=Q(),_=F("quickTask.promptPlaceholder"),q0=Y()==="prompt",B0=u("engine"),F0=u("branch"),l0=B(),$0=J.defaultBaseRef,C0=Y()==="branch",t0=Z.textMuted;return o!==k.e&&(k.e=G(R,"attributes",o,k.e)),m!==k.t&&(k.t=G(R,"fg",m,k.t)),g!==k.a&&(k.a=G(O,"fg",g,k.a)),J0!==k.o&&(k.o=G(n,"fg",J0,k.o)),w!==k.i&&(k.i=G(i,"value",w,k.i)),_!==k.n&&(k.n=G(i,"placeholder",_,k.n)),q0!==k.s&&(k.s=G(i,"focused",q0,k.s)),B0!==k.h&&(k.h=G(a,"fg",B0,k.h)),F0!==k.r&&(k.r=G(Q0,"fg",F0,k.r)),l0!==k.d&&(k.d=G(e,"value",l0,k.d)),$0!==k.l&&(k.l=G(e,"placeholder",$0,k.l)),C0!==k.u&&(k.u=G(e,"focused",C0,k.u)),t0!==k.c&&(k.c=G(j0,"fg",t0,k.c)),k},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0}),h})()}function oT(J,z){return new Promise((Z)=>{J.replace(()=>b(rT,ID(z,{onSubmit:(Y)=>Z(Y),onCancel:()=>Z(void 0)})),()=>Z(void 0)),J.setSize("medium")})}var I9,kF;var bF=C(()=>{x();x();x();x();x();x();x();x();H1();s1();P1();t1();lV();TJ();aJ();JQ();I9=["prompt","engine","branch"];kF={show:oT}});async function S9(J={}){let z=J.logTag??"orch-connect",Z=J.connect??iJ,Y=null;try{let X=await Z();if(!X)return lz(z,"no daemon running \u2014 caller degrades"),null;return Y=new KJ(X,{...J.orchestratorOptions,channels:J.channels}),await Y.init(),Y}catch(X){return ZJ(z,X),Y?.dispose(),null}}var X7=C(()=>{KZ();IJ();CZ()});function IF(J){let[z,Z]=p(J.initial??"sidebar"),[Y,X]=p(0),Q=HJ();function q(V){if(X((L)=>L+1),z()===V)return;let f=Q?.currentFocusedRenderable;if(f&&!f.isDestroyed)try{f.blur()}catch{}Z(V)}function H(V){let L=(y9.indexOf(z())+V+y9.length)%y9.length;q(y9[L])}let j=new Map;function B(V){let f=j.get(V);if(!f)f=()=>z()===V,j.set(V,f);return f}let U={focused:z,is:B,setFocused:q,cycle:H,refocusTick:Y};return b(sT.Provider,{value:U,get children(){return J.children}})}var y9,sT;var SF=C(()=>{x();x();H1();y9=["sidebar","workspace","files","terminal"],sT=az(null)});var yF;var TF=C(()=>{yF=[{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}}]});var xF;var EF=C(()=>{xF=[{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"}}]});var uF;var wF=C(()=>{uF=[{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}}]});function PF(){for(let J of QY){let z=tT.get(J.id);if(!z)continue;let Z=J;Z.keys=[...z.keys],Z.hint=z.hint?{...z.hint}:void 0}}function hF(){eT((J)=>J+1)}function G7(J){return Jx.get(J)}function zx(J){return G7(J)?.keys??[]}function GY(J){let z=[];for(let Z in J){let Y=J[Z];if(!Y)continue;let X=zx(Z);if(X.length===0){console.warn(`[kobe/keybindings] bindByIds: id="${Z}" has no chords (or doesn't exist in KobeKeymap)`);continue}X.forEach((Q,q)=>z.push({key:Q,cmd:Y,slot:q}))}return z}var QY,tT,Q7,eT,Jx;var lY=C(()=>{H1();TF();EF();wF();QY=[{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:"worktrees.open.sidebar",scope:"sidebar",keys:["x"],category:"Sidebar",description:"Open worktrees",hint:{keys:"x",label:"worktrees",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)"},...uF,...yF,...xF,{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"}}],tT=new Map(QY.map((J)=>[J.id,{keys:[...J.keys],hint:J.hint?{...J.hint}:void 0}]));[Q7,eT]=p(0);Jx=new Map(QY.map((J)=>[J.id,J]))});function T9(){if(qY)return qY;let J=Y9();if(!J.exists)return qY={path:J.path,exists:!1,applied:[],warnings:[]},qY;let z=[...J.warnings],Z=Q9(J.doc,process.platform,{chordOptsFor:e8});z.push(...Z.warnings);let Y=Z.entries.filter((H)=>H.id.startsWith("tmux.")),X=Z.entries.filter((H)=>!H.id.startsWith("tmux.")),Q=n4(QY,X);z.push(...Q.warnings);let q=[...Q.applied];if(Y.length>0){let H=t8(Y);z.push(...H.warnings);for(let j of H.overridden){if(j===tz){q.push({id:j,keys:H.focus.map((V)=>V?.chord??"").filter((V)=>V!==""),defaultKeys:ZY});continue}let B=H.binds[j];q.push({id:j,keys:B?[B.chord]:[],defaultKeys:[PY[j]]});let U=QY.find((V)=>V.id===j);if(U?.hint)U.hint.keys=B?`${iX(j)?"prefix ":""}${B.chord}`:"\u2014"}}for(let H of z)console.warn(`[kobe/keybindings] ${H}`);return qY={path:J.path,exists:!0,applied:q,warnings:z},qY}function vF(){return qY??T9()}function mF(){qY=null,d4(),a4(),PF();let J=T9();return hF(),J}var qY=null;var q7=C(()=>{o8();H9();G9();lY()});var Zx=250,zQ,cF;var wG=C(()=>{rX();mz();PV();({use:zQ,provider:cF}=M9({name:"KV",init:()=>{let[J,z]=zZ(NJ()),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 EZ(j),Z.clear(),!0}catch(j){return console.error(`[kobe] kv ${H} failed:`,j),!1}}function Q(){if(Y)clearTimeout(Y);Y=setTimeout(()=>{Y=null,X("write")},Zx)}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),Q()},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{_W({})}catch(H){console.error("[kobe] kv clear write failed:",H)}}};return q}}))});var x9="../pulse-n3cq1btw.wav";var dF=()=>{};import{existsSync as Xx,mkdirSync as Qx}from"fs";import{tmpdir as Gx}from"os";import{basename as qx,isAbsolute as Hx,join as H7,resolve as jx}from"path";function Vx(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 Wx(){if(E9!==void 0)return E9;let z=(process.env.PATH??"").split(":").filter(Boolean);return E9=Bx.find((Z)=>z.some((Y)=>Xx(H7(Y,Z))))??null,E9}async function Ux(){return lF??=(async()=>{Qx(iF,{recursive:!0});let J=H7(iF,qx(nF)),z=Bun.file(J);if(await z.exists())return J;return await Bun.write(z,Bun.file(nF)),J})(),lF}function $F(J=0.4){let z=Wx();if(!z)return;Ux().then((Z)=>{try{Bun.spawn(Vx(z,Z,J),{stdin:"ignore",stdout:"ignore",stderr:"ignore"}).unref?.()}catch{}}).catch(()=>{return})}var nF,iF,Bx,E9,lF;var aF=C(()=>{dF();nF=Hx(x9)?x9:jx(import.meta.dir,x9),iF=H7(Gx(),"kobe-sfx"),Bx=["ffplay","mpv","mpg123","mpg321","mplayer","afplay","play","omxplayer","aplay","cmdmp3","cvlc","powershell.exe"]});function _F(J,z){return`${J}:${z}`}function rF(J){let z=zQ(),[Z,Y]=p([]),[X,Q]=p(new Map),q=R9(),H=0;function j(f){if(Q((M)=>{let A=new Map(M),N=_F(f.taskId,f.tabId),u=M.get(N);if(u==="needs_input"||u==="error")return M;return A.set(N,f.kind),A}),z.get("notifications.sound.enabled",!0)!==!1){try{process.stdout.write("\x07")}catch{}$F()}let L=z.get("notifications.toast.enabled",!0)!==!1;if(f.kind==="error"||L){let M=++H,A={id:M,kind:f.kind,taskId:f.taskId,tabId:f.tabId,title:f.title};Y((N)=>[...N,A]),q.set(()=>B(M),fx)}}function B(f){Y((L)=>L.filter((M)=>M.id!==f))}function U(f,L){Q((M)=>{let A=_F(f,L);if(!M.has(A))return M;let N=new Map(M);return N.delete(A),N})}let V={toasts:Z,unread:X,notify:j,dismiss:B,markRead:U};return b(pF.Provider,{value:V,get children(){return J.children}})}function u9(){let J=Zz(pF);if(!J)throw Error("useNotifications must be used within a NotificationsProvider");return J}var fx=4500,pF;var w9=C(()=>{x();H1();_V();aF();wG();pF=az()});function j7(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=Dx(z.focusAccent);if(Z&&Z!==J.focusAccent())J.setFocusAccent(Z)}}function Dx(J){if(J===null)return"primary";return Kx.includes(J)?J:null}var Kx;var oF=C(()=>{Kx=["primary","success","info"]});function Fx(J,z=Date.now){let Z=Number.NEGATIVE_INFINITY,Y=!0;return async()=>{if(z()-Z<Lx)return Y;Z=z();try{let X=await J(),Q=Number.parseInt(X.stdout.trim(),10);Y=X.code!==0||Number.isNaN(Q)?!0:Q>0}catch{Y=!0}return Y}}var Lx=3000,wz;var ZQ=C(()=>{S1();wz=Fx(()=>S0(["display-message","-p","#{session_attached}"]))});import{readFileSync as Mx}from"fs";function sF(J){try{let z=JSON.parse(Mx(Hz(),"utf8")),Z=typeof z.activeTheme==="string"&&bG(z.activeTheme)?z.activeTheme:J,Y=z.transparentBackground===!0,X=typeof z.focusAccent==="string"&&nY.includes(z.focusAccent)?z.focusAccent:null,Q=IG(z[P9])?z[P9]:tX;return{theme:Z,transparent:Y,focusAccent:X,locale:Q}}catch{return{theme:J,transparent:!1,focusAccent:null,locale:tX}}}var P9="locale";var B7=C(()=>{o1();P1();eX()});function Ax(J){if(J)JH(J);lf(),T9();for(let{name:z,theme:Z}of TQ())vV(z,Z)}function Nx(J){let z={backgroundColor:"transparent",externalOutputMode:"passthrough",exitOnCtrlC:!1,screenMode:"alternate-screen",useKittyKeyboard:{}};return J?{...z,onDestroy:J}:z}function Rx(J){let z=()=>J.children,Z=()=>J.notifications?b(rF,{get children(){return z()}}):z(),Y=()=>b(XF,{get children(){return Z()}}),X=()=>J.focus?b(IF,{initial:"sidebar",get children(){return Y()}}):Y(),Q=()=>J.kv?b(cF,{get children(){return X()}}):X();return b(BL,{mode:"dark",get theme(){return J.theme},get children(){return Q()}})}function Cx(J){let{theme:z}=I0();return r1(()=>ZJ("pane-crash",J.error)),(()=>{var Z=W("box"),Y=W("text"),X=W("text");return D(Z,Y),D(Z,X),G(Z,"flexDirection","column"),G(Z,"flexGrow",1),G(Z,"paddingLeft",1),G(Z,"paddingTop",1),G(Z,"gap",1),K(Y,()=>F("common.paneCrash.title")),K(X,()=>F("common.paneCrash.hint")),T((Q)=>{var{background:q,error:H,textMuted:j}=z;return q!==Q.e&&(Q.e=G(Z,"backgroundColor",q,Q.e)),H!==Q.t&&(Q.t=G(Y,"fg",H,Q.t)),j!==Q.a&&(Q.a=G(X,"fg",j,Q.a)),Q},{e:void 0,t:void 0,a:void 0}),Z})()}function bx(){let J=HJ();return r1(()=>{if(!J)return;let z=J.targetFps,Z=setInterval(()=>{wz().then((Y)=>{let X=Y?z:gx;if(J.targetFps!==X)J.targetFps=X})},kx);k1(()=>clearInterval(Z))}),null}function Ix(J){let z=I0(),Z={selectedTheme:()=>z.selected,hasTheme:(H)=>z.has(H),setTheme:(H)=>z.set(H),reloadUserThemes:()=>{for(let{name:H,theme:j}of TQ())vV(H,j)},transparentBackground:()=>z.transparentBackground,setTransparentBackground:(H)=>z.setTransparentBackground(H),focusAccent:()=>z.focusAccent,setFocusAccent:(H)=>z.setFocusAccent(H)};j7(Z,{theme:J.boot.theme,transparentBackground:J.boot.transparent,focusAccent:J.boot.focusAccent}),SG(J.boot.locale);let[Y,X]=p(null),Q=!1;r1(()=>{(async()=>{let H=await S9({logTag:"ui-prefs",channels:["ui-prefs","keybindings"]});if(!H)return;if(Q){H.dispose();return}X(H)})()}),E0(()=>{let H=Y()?.uiPrefsSignal()();if(!H)return;if(j7(Z,H),IG(H.locale))SG(H.locale)});let q=null;return E0(()=>{let H=Y()?.keybindingsRevSignal()();if(H==null)return;if(q===null||H===q){q=H;return}q=H,mF()}),k1(()=>{Q=!0,Y()?.dispose()}),null}async function VJ(J){Ax(J.logContext);let z=sF(Ox),Z=await J.setup(z),Y=J.providers?.kv??!0,X=J.providers?.focus??!0,Q=J.providers?.notifications??!1;await wD(()=>b(Rx,{get theme(){return z.theme},kv:Y,focus:X,notifications:Q,get children(){return[b(Ix,{boot:z}),b(bx,{}),b(W5,{fallback:(j)=>b(Cx,{error:j}),get children(){return Z.root()}})]}}),Nx(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 Ox="claude",gx=2,kx=3000;var YZ=C(()=>{x();x();x();x();x();x();x();KZ();H1();X7();SF();q7();wG();w9();P1();_q();t1();aJ();oF();ZQ();B7()});var V7={};X1(V7,{togglePreviewMode:()=>Sx,previewModeEnabled:()=>eF});function eF(J){return rJ(tF(J),!1)}function Sx(J){let z=!eF(J);return tG(tF(J),z),z}var tF=(J)=>`preview.${J}`;var W7=C(()=>{mz()});import{homedir as yx}from"os";async function U7(J,z,Z,Y,X={}){let Q=T1(z.id);if(await K1(Q))return!0;let{archivedHistoryPreviewEnabled:q}=await Promise.resolve().then(() => (z9(),E4));if(z.archived&&q()){let{ensureSession:L}=await Promise.resolve().then(() => (qJ(),$J)),M=z.worktreePath??"",A=M&&uZ(M)?M:Z&&uZ(Z)?Z:yx();if(!await L({name:Q,cwd:A,command:cJ(Y),taskId:z.id,vendor:Y,repo:Z,archived:!0,archivedWorktree:M||A,title:z.title}))throw new kZ("session",`failed to start history session for ${z.id}`);return!1}let H=z.worktreePath;if(!H||!uZ(H)){if(!J)throw new kZ("no-daemon",`no daemon; cannot materialise worktree for ${z.id}`);try{H=await J.ensureWorktree(z.id)}catch(L){throw new kZ("worktree",`ensureWorktree failed for ${z.id}`,L)}await X.reload?.()}if(!H||!uZ(H))throw new kZ("worktree",`task ${z.id} has no usable worktree`);let{ensureSession:j}=await Promise.resolve().then(() => (qJ(),$J)),{previewModeEnabled:B}=await Promise.resolve().then(() => (W7(),V7));if(B(z.id)&&q()){if(!await j({name:Q,cwd:H,command:cJ(Y),taskId:z.id,vendor:Y,repo:Z,preview:!0,archivedWorktree:H,title:z.title}))throw new kZ("session",`failed to start preview session for ${z.id}`);return!1}let{resolveEngineLaunchInit:U}=await Promise.resolve().then(() => (TX(),mH)),V=Z?U(Z,H,{kind:X.includeInitPrompt?"repo-init":"none"}):void 0;if(!await j({name:Q,cwd:H,command:cJ(Y),taskId:z.id,vendor:Y,repo:Z,launchInit:V}))throw new kZ("session",`failed to start tmux session for ${z.id}`);return!1}async function f7(J,z,Z,Y,X={}){let Q=T1(z.id),q=await Promise.resolve().then(() => (qJ(),$J));if(X.captureFrom){let B=await q.currentSessionName();if(B&&B!==Q)await q.captureGlobalLayout(B)}if(await U7(J,z,Z,Y,{includeInitPrompt:X.includeInitPrompt,reload:X.reload})&&X.heal)try{let B=await EY(Q,"@kobe_worktree")||z.worktreePath||"";if(B&&uZ(B)){let{resolveEngineLaunchInit:U}=await Promise.resolve().then(() => (TX(),mH)),V=Z?U(Z,B,{kind:X.includeInitPrompt?"repo-init":"none"}):void 0;await q.ensureSession({name:Q,cwd:B,command:cJ(Y),taskId:z.id,vendor:Y,repo:Z,launchInit:V})}}catch(B){console.error("[kobe handover] heal failed (continuing to switch):",B)}let{syncSessionZen:j}=await Promise.resolve().then(() => (eZ(),_8));if(await j(Q),X.isCurrent&&!X.isCurrent())return;await J?.setActiveTask(z.id).catch(()=>{}),await q.enterWindow(Q)}async function h9(J,z,Z,Y,X={}){await f7(J,z,Z,Y,{includeInitPrompt:X.includeInitPrompt})}var kZ;var v9=C(()=>{eJ();sJ();S1();kZ=class kZ extends Error{phase;cause;constructor(J,z,Z){super(z);this.name="HandoverError",this.phase=J,this.cause=Z}}});var JM={};X1(JM,{startNewTaskHost:()=>Tx,NewTaskPage:()=>m9});function m9(J){let{theme:z}=I0(),Z=i1();r1(()=>{Y()});async function Y(){let X=RJ(),Q=J.defaultRepo||X[0]||process.cwd(),q=pJ(E1("lastSelectedVendor"),oJ()),H=await WZ(),j=J.orchestrator,B=await b9.show(Z,Q,X,{defaultVendor:q,availableVendors:H,discoverAdoptable:j?(V)=>j.discoverAdoptableWorktrees(V):void 0});if(!B)process.exit(0);if(jJ("lastSelectedVendor",B.vendor),HZ(B.repo),!j)console.error("[kobe new-task] no daemon; cannot create task"),process.exit(1);let U;try{if(B.mode==="adopt")for(let V of B.adopt)U=await j.adoptWorktree({repo:B.repo,worktreePath:V.worktreePath,branch:V.branch,vendor:B.vendor});else U=await j.createTask({repo:B.repo,baseRef:B.baseRef,vendor:B.vendor})}catch(V){console.error("[kobe new-task] task.create/adopt failed:",V),process.exit(1)}if(U)try{await h9(j,U,B.repo,B.vendor,{includeInitPrompt:B.mode!=="adopt"})}catch(V){console.error("[kobe new-task] auto-enter failed:",V)}process.exit(0)}return(()=>{var X=W("box");return G(X,"flexDirection","column"),G(X,"flexGrow",1),T((Q)=>G(X,"backgroundColor",z.background,Q)),X})()}async function Tx(J){await VJ({setup:async()=>{let z=null;try{let Z=await Ez(),Y=new KJ(Z);await Y.init(),z=Y}catch(Z){console.error("[kobe new-task] daemon unavailable; cannot create task:",Z)}return{root:()=>b(m9,{get defaultRepo(){return J.defaultRepo},orchestrator:z}),onDestroy:()=>{z?.dispose()}}}})}var K7=C(()=>{x();x();x();x();IJ();H1();CZ();fY();I1();s1();JQ();P1();YZ();v9();aJ()});function c9(J,z,Z,Y,X={}){if(J.length===0)return z;let Q=new Map;for(let j of J)Q.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],U=Q.get(Z(B));if(U&&Y(U,B)&&(!X.samePosition||J[j]===U)){if(H[j]=U,q&&J[j]!==U)q=!1}else H[j]=B,q=!1}return q?J:H}function zM(J,z){if(!J)return!0;let Z=J.toLowerCase(),Y=z.toLowerCase(),X=0;for(let Q=0;Q<Y.length&&X<Z.length;Q++)if(Y.charCodeAt(Q)===Z.charCodeAt(X))X++;return X===Z.length}function xx(J,z){let Z=z==="archived";return J.filter((Y)=>Y.archived===Z)}function D7(J,z,Z,Y="default",X){let Q=xx(J,z),q=Z?.trim()??"",H=X?Fz(X):null,j=q?Q.filter((A)=>zM(q,`${A.title} ${Pz(A.repo)}`)):Q,B=[],U=[],V=[],f=new Set;for(let A of j){if(A.kind==="main"){let N=Fz(A.repo);if(f.has(N))continue;f.add(N),B.push(A);continue}if(H&&Fz(A.repo)!==H)continue;if(A.pinned===!0)U.push(A);else V.push(A)}if(B.sort((A,N)=>Pz(A.repo).localeCompare(Pz(N.repo))),Y==="recent")U.sort(ZM),V.sort(ZM);let L=[],M=0;for(let A of B)L.push({kind:"task",task:A,flatIndex:M}),M++;for(let A of U)L.push({kind:"task",task:A,flatIndex:M}),M++;for(let A of V)L.push({kind:"task",task:A,flatIndex:M}),M++;return L}function ZM(J,z){let Z=YM(z)-YM(J);if(Z!==0)return Z;return String(z.id).localeCompare(String(J.id))}function YM(J){let z=Date.parse(J.updatedAt||J.createdAt);return Number.isFinite(z)?z:0}function Pz(J){let z=J.split("/").filter(Boolean);return z[z.length-1]??J}function Fz(J){return J.trim().replace(/[\\/]+$/,"")||J}function Ex(J,z){let Z=Pz(J);if(!z.some((X)=>X!==J&&Pz(X)===Z))return Z;return J.replace(/[\\/]+$/,"").split(/[\\/]+/).slice(-2).join("/")}function XM(J,z){let Z=z==="archived",Y=new Map;for(let Q of J){let q=Fz(Q.repo),H=Y.get(q)??{repo:Q.repo,count:0};if(Q.kind==="main")H.repo=Q.repo;else if(Q.archived===Z)H.count+=1;Y.set(q,H)}let X=[...Y.values()].map((Q)=>Q.repo);return[...Y.values()].map((Q)=>({repo:Q.repo,label:Ex(Q.repo,X),count:Q.count})).sort((Q,q)=>Q.label.localeCompare(q.label))}function QM(J,z){if(J.length===0)return-1;if(!z)return J[0]?.flatIndex??-1;let Z=Fz(z),Y=J.find((Q)=>Q.task.kind!=="main"&&Fz(Q.task.repo)===Z);if(Y)return Y.flatIndex;return J.find((Q)=>Q.task.kind==="main"&&Fz(Q.task.repo)===Z)?.flatIndex??J[0]?.flatIndex??-1}function L7(J){return J.map((z)=>z.task.id)}function GM(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 qM(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 ux(J,z){return J===z||J.id===z.id&&J.kind===z.kind&&J.title===z.title&&J.repo===z.repo&&J.branch===z.branch&&J.worktreePath===z.worktreePath&&J.status===z.status&&J.archived===z.archived&&J.pinned===z.pinned&&J.vendor===z.vendor}function HM(J,z){return c9(J,z,(Z)=>Z.task.id,(Z,Y)=>Z.flatIndex===Y.flatIndex&&ux(Z.task,Y.task),{samePosition:!0})}var d9=()=>{};var jM={};X1(jM,{startQuickTaskHost:()=>vx});async function wx(J,z){let Z,Y;if(z){let V=await wJ(z,["@kobe_task","@kobe_worktree"]);Z=V["@kobe_task"]||void 0,Y=V["@kobe_worktree"]||void 0}let X=(Z?J?.getTask(Z)?.repo:void 0)??RJ()[0],Q=X??Y??process.cwd();if(!X)return{ctx:null,fallbackRepo:Q};let q=await WZ(),H=pJ(E1("lastSelectedVendor"),oJ()),j=q.length===0||q.includes(H)?H:q[0]??H,B=yG(MJ(X))??uz,U=q.length>0?q:[j];return{ctx:{repo:X,vendor:j,baseRef:B,engines:U},fallbackRepo:Q}}async function Px(J,z,Z,Y,X){let Q=await U7(J,z,Z,Y),q=T1(z.id),{pane:H}=await DG(q,!Q);if(H)await LG(H,X)}function hx(J){let{theme:z}=I0(),Z=i1();r1(()=>{Y()});async function Y(){let X=J.ctx,Q=await kF.show(Z,{repoLabel:Pz(X.repo),engines:X.engines,defaultVendor:X.vendor,defaultBaseRef:X.baseRef,engineLabel:nZ});if(Q===void 0)process.exit(0);jJ("lastSelectedVendor",Q.vendor),HZ(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:Q.baseRef,vendor:Q.vendor});await Px(q,H,X.repo,Q.vendor,eL(Q.prompt,Q.attachments)),await h9(q,H,X.repo,Q.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 G(X,"flexDirection","column"),G(X,"flexGrow",1),T((Q)=>G(X,"backgroundColor",z.background,Q)),X})()}async function vx(J){await VJ({setup:async()=>{let z=null;try{let X=await Ez(),Q=new KJ(X);await Q.init(),z=Q}catch(X){console.error("[kobe quick-task] daemon unavailable; cannot create task:",X)}let{ctx:Z,fallbackRepo:Y}=await wx(z,J.session);return{root:()=>Z?b(hx,{ctx:Z,orchestrator:z}):b(m9,{defaultRepo:Y,orchestrator:z}),onDestroy:()=>{z?.dispose()}}}})}var BM=C(()=>{x();x();x();x();IJ();H1();CZ();fY();eJ();I1();S1();Z9();s1();bF();P1();lV();C9();YZ();k9();v9();K7();d9();aJ()});import{TextAttributes as mx}from"@opentui/core";function cx(J,z){let Z=J?`v${J}`:F("update.skew.olderBuild");return F("update.skew.hint",{daemon:Z,clientVersion:z})}function VM(J){let{theme:z}=I0(),Z=()=>Math.max(4,J.width()-2);return b(z0,{get when(){return J.stale()},get children(){var Y=W("box"),X=W("text"),Q=W("box"),q=W("text"),H=W("box"),j=W("text");return D(Y,X),D(Y,Q),D(Y,H),G(Y,"flexDirection","column"),G(Y,"flexShrink",0),G(Y,"paddingLeft",1),G(Y,"paddingRight",1),G(Y,"paddingBottom",1),G(X,"wrapMode","none"),K(X,()=>"\u2594".repeat(Z())),D(Q,q),G(Q,"flexDirection","row"),G(Q,"gap",1),G(q,"wrapMode","none"),K(q,()=>F("update.skew.title")),D(H,j),G(H,"flexDirection","row"),G(H,"gap",1),G(j,"wrapMode","word"),K(j,()=>cx(J.daemonVersion(),J.clientVersion)),T((B)=>{var{warning:U,warning:V}=z,f=mx.BOLD,L=z.text;return U!==B.e&&(B.e=G(X,"fg",U,B.e)),V!==B.t&&(B.t=G(q,"fg",V,B.t)),f!==B.a&&(B.a=G(q,"attributes",f,B.a)),L!==B.o&&(B.o=G(j,"fg",L,B.o)),B},{e:void 0,t:void 0,a:void 0,o:void 0}),Y}})}var WM=C(()=>{x();x();x();x();x();x();H1();P1();t1()});function UM(J,z){return J.find((Z)=>Z.id!==z&&!Z.archived)}function fM(J,z){let Z=J.activeTaskSignal;if(typeof Z!=="function")return!0;return Z.call(J)()===z}async function dx(J){let z=J.tasks.find((Q)=>Q.id===J.taskId);if(!z)return null;let Z=!z.archived;try{await J.orch.setArchived(J.taskId,Z)}catch(Q){return J.logger.error(`${J.logPrefix} archive failed:`,Q),null}if(!Z)return{archived:Z};let Y=T1(J.taskId),X=UM(J.tasks,J.taskId);if(await oz(Y,X?T1(X.id):void 0).catch((Q)=>{J.logger.error(`${J.logPrefix} switch-client failed:`,Q)}),J.updateActiveTask&&fM(J.orch,J.taskId))await J.orch.setActiveTask(X?.id??null).catch(()=>{});return await nJ(Y).catch((Q)=>{J.logger.error(`${J.logPrefix} kill tmux session failed:`,Q)}),{archived:Z,nextTask:X}}async function nx(J){let z=UM(J.tasks,J.taskId),Z=T1(J.taskId);if(J.switchBeforeKill)await oz(Z,z?T1(z.id):void 0).catch((Y)=>{J.logger.error(`${J.logPrefix} switch-client failed:`,Y)});if(J.updateActiveTask&&J.orch&&fM(J.orch,J.taskId))await J.orch.setActiveTask(z?.id??null).catch(()=>{});return await nJ(Z).catch((Y)=>{J.logger.error(`${J.logPrefix} kill tmux session failed:`,Y)}),{nextTask:z}}async function KM(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 dx({orch:J.orch,tasks:J.tasks(),taskId:z,logger:J.logger,logPrefix:J.logPrefix,updateActiveTask:J.updateActiveTask}))return;await J.reload?.()}async function DM(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(uB)){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:Q}=await nx({orch:J.orch,tasks:J.tasks(),taskId:z,logger:J.logger,logPrefix:J.logPrefix,switchBeforeKill:J.switchBeforeKill,updateActiveTask:J.updateActiveTask});await J.reload?.(),J.onTaskDeleted?.(z,Q)}async function LM(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 FM(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 MM(J,z){let Z=J.tasks().find((Q)=>Q.id===z);if(!Z||!J.orch)return;let Y=await WZ(),X=xZ(Y,Z.vendor??YJ);try{await J.orch.setVendor(z,X)}catch(Q){J.logger.error(`${J.logPrefix} task.setVendor failed:`,Q),J.notifyError?.(`Couldn't switch engine: ${Q instanceof Error?Q.message:String(Q)}`);return}J.notifyInfo?.(`Engine \u2192 ${nZ(X)} (applies on reopen)`),await J.reload?.()}async function OM(J){let z=RJ(),Z=J.cursorRepo()??z[0]??process.cwd();if(J.openCreateSurface&&await J.openCreateSurface(Z))return;let Y=J.lastVendor()??YJ,X=await WZ();if(X.length===0)J.notifyInfo?.("No engine CLI detected \u2014 install claude or codex, or add one in Settings \u2192 Engines");let Q=J.orch,q=await J.promptNewTask(Z,z,{defaultVendor:Y,availableVendors:X,discoverAdoptable:Q?(j)=>Q.discoverAdoptableWorktrees(j):void 0});if(!q)return;if(J.rememberVendor(q.vendor),HZ(q.repo),J.onRepoSaved?.(),!Q){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,U;for(let V of q.adopt)try{H=(await Q.adoptWorktree({repo:q.repo,worktreePath:V.worktreePath,branch:V.branch,vendor:q.vendor})).id,B++}catch(f){if(U===void 0)U=f instanceof Error?f.message:String(f);J.logger.error(`${J.logPrefix} adoptWorktree failed for ${V.worktreePath}:`,f)}if(B===0){J.notifyError?.(F("newTask.adopt.summaryNone",{error:U??""}));return}if(B<j)J.notifyInfo?.(F("newTask.adopt.summaryPartial",{done:B,total:j}));else J.notifyInfo?.(F("newTask.adopt.summaryAll",{count:B}))}else try{H=(await Q.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 AM=C(()=>{fY();eJ();hB();I1();t1();Uz();s1();qJ()});function n9(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 i9(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 l9(J){let z=new Map;function Z(Y){let X=z.get(Y);if(!X){let[Q,q]=p(J.initial,J.equals?{equals:J.equals}:void 0);X={read:Q,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);RX(X,J,(Q)=>J.run(Y,Q),(Q)=>X.write(Q))},reset(){z.clear()}}}var PG=C(()=>{H1();CX();CX()});import{stat as ix}from"fs/promises";import{join as lx}from"path";async function px(J){try{let z=await ix(lx(J,".git","HEAD"));return`${z.mtimeMs}:${z.size}`}catch{return null}}async function rx(J,z,Z=LZ){let Y=await px(J);if(Y!==null){let j=NM.get(J);if(j&&j.fingerprint===Y)return j.value}let X="",Q=!1,q=await Z("git",["symbolic-ref","--short","HEAD"],{cwd:J,env:Xz(),signal:z}),H=q.status===0?q.stdout.trim():"";if(H&&H!=="HEAD")X=H,Q=!0;else if((await Z("git",["rev-parse","--verify","HEAD"],{cwd:J,env:Xz(),signal:z})).status===0)X="(detached)",Q=!0;if(Q&&Y!==null)NM.set(J,{fingerprint:Y,value:X});return X}function CM(J){return RM.read(J)}function gM(J){wz().then((z)=>{if(z)RM.poll(J)})}var $x=2000,ax=30000,_x=1500,NM,RM;var kM=C(()=>{oZ();ZQ();PG();NM=new Map;RM=l9({initial:"",timeoutMs:$x,slowRetryMs:ax,minIntervalMs:_x,run:(J,z)=>rx(J,z)})});function F7(J){let z=J.scheduleTimeout??((j,B)=>{let U=setTimeout(j,B);return()=>clearTimeout(U)}),Z=!1,Y=null,X=()=>{Z=!0,Y?.(),Y=z(()=>{Z=!1,Y=null},700)},Q=()=>{Z=!1,Y?.(),Y=null},q=(j)=>{let B=J.getFlatIds();if(B.length===0)return;let U=J.getCursor(),V=U<0?0:U,f=Math.min(B.length-1,Math.max(0,V+j));J.setCursor(f)},H=(j)=>{let B=J.getFlatIds();if(B.length===0)return;J.setCursor(Math.min(B.length-1,Math.max(0,j)))};return{moveDown(){Q(),q(1)},moveUp(){Q(),q(-1)},selectCurrent(){Q();let j=J.getFlatIds(),B=J.getCursor();if(B<0||B>=j.length)return;let U=j[B];if(U!==void 0)J.onSelect(U)},pressG(){if(Z)Q(),H(0);else X()},pressShiftG(){Q(),H(J.getFlatIds().length-1)},isChordArmed(){return Z},disarmChord(){Q()}}}function bM(J){let z=F7({getCursor:()=>J.cursorIndex(),setCursor:(Q)=>J.setCursorIndex(Q),getFlatIds:()=>J.flatTaskIds(),onSelect:(Q)=>J.onSelect(Q)}),Z=()=>{let Q=J.flatTaskIds(),q=J.cursorIndex();if(q<0||q>=Q.length)return;return Q[q]},Y=()=>J.searchMode?.()??!1,X=()=>J.moveMode?.()??!1;L1(()=>({enabled:J.focused()&&!Y(),bindings:GY({"sidebar.nav":(Q,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":(Q)=>{if(X())return;if(Q.shift)z.pressShiftG();else z.pressG()},"sidebar.delete":()=>{if(X())return;let Q=Z();if(Q!==void 0)J.onDeleteRequest?.(Q)},"sidebar.archive":()=>{if(X())return;let Q=Z();if(Q!==void 0)J.onArchiveRequest?.(Q)},"sidebar.localMerge":(Q)=>{if(!Q.shift)return;let q=Z();if(q!==void 0)J.onLocalMergeRequest?.(q)},"sidebar.rename":()=>{if(X())return;let Q=Z();if(Q!==void 0)J.onRenameRequest?.(Q)},"sidebar.pin":(Q)=>{if(X())return;if(!Q.shift)return;let q=Z();if(q!==void 0)J.onPinRequest?.(q)},"sidebar.previewToggle":()=>{if(X())return;let Q=Z();if(Q!==void 0)J.onPreviewToggleRequest?.(Q)},"sidebar.search.enter":()=>{if(X())return;J.onSearchEnter?.()},"sidebar.sort":()=>{if(X())return;J.onSortModeToggle?.()},"sidebar.projectFilter":()=>{if(X())return;J.onProjectFilterToggle?.()}})})),L1(()=>({enabled:J.focused()&&X(),bindings:[{key:"escape",cmd:()=>J.onMoveModeExit?.()}]})),L1(()=>({enabled:J.focused(),bindings:GY({"sidebar.view":(Q,q)=>{J.onViewSwitch?.((q??0)%2===0?-1:1)}})})),L1(()=>({enabled:J.focused()&&Y(),bindings:GY({"sidebar.search.nav":(Q,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 IM=C(()=>{lY();TJ()});function M7(J,z){return n9(J,z)}function O7(J,z){return` ${M7(J,Math.max(0,z))}`}var SM=()=>{};function sx(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 tx(J){switch(J){case"rate_limited":return{text:F("tasks.activity.rateLimited"),tone:"warning"};case"permission_needed":return{text:F("tasks.activity.permissionNeeded"),tone:"warning"};case"error":return{text:F("tasks.activity.error"),tone:"error"};default:return null}}function xM(J){switch(J.prStatus?.checkState){case"passing":return{glyph:"\u2713",tone:"success"};case"failing":return{glyph:"\u2717",tone:"error"};case"pending":return{glyph:"\u2022",tone:"warning"};default:return null}}function ex(){return F("tasks.subtitle.noTracking")}function JE(){return F("tasks.subtitle.materializing")}function zE(J){if(J.kind==="main")return!1;return J.vendor!==void 0&&!LJ(J.vendor)}function A7(J){let{task:z}=J,Z=z.kind==="main",Y=Z?J.mainBranch??"":z.branch,X=ox[z.status],Q=J.activity?.state,q=Q!==void 0,H=ZE(Q),j=tx(Q),B=zE(z)&&!q,U=J.job!==void 0,V=U||!B&&(Q==="running"||J.live||!q&&!Z&&z.status==="in_progress"),f=YQ[J.spinnerFrame]??YQ[0],L=U?"primary":B?"textMuted":j?.tone??(V?"primary":H?.tone??X.tone),M=B?ex():sx(z.status),A=U?J.truncateBranch(JE(),J.subtitleBudget):j?J.truncateBranch(j.text,J.subtitleBudget):Y.length>0?J.truncateBranch(Y,J.subtitleBudget):J.truncateBranch(M,J.subtitleBudget),N=B?yM:H?.glyph??X.glyph,u=B?yM:H?.glyph??"\u2605";return{isMain:Z,titleText:Z?Pz(z.repo):z.title,subtitleText:A,loading:V,stateGlyph:V?f:N,projectGlyph:V?f:u,tone:L}}function N7(J,z){if(!J.loading)return J;let Z=YQ[z()%YQ.length]??"\u280B";if(Z===J.stateGlyph&&Z===J.projectGlyph)return J;return{...J,stateGlyph:Z,projectGlyph:Z}}function ZE(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 ox,YQ,TM=100,yM="\xB7";var EM=C(()=>{t1();s1();d9();ox={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"}};YQ=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"]});function R7(J){return uM.read(J)}function C7(J){uM.poll(J)}var YE=4000,XE=60000,QE=1500,GE,uM;var wM=C(()=>{oZ();PG();wX();PG();GE={added:0,deleted:0},uM=l9({initial:GE,equals:sz,timeoutMs:YE,slowRetryMs:XE,minIntervalMs:QE,run:async(J,z)=>{let Z=await LZ("git",["status","--porcelain=v1"],{cwd:J,env:Xz(),signal:z});if(Z.status!==0)throw Error("git status failed");return uX(Z.stdout)}})});import{TextAttributes as l1}from"@opentui/core";function qE(J){switch(J){case"active":return F("tasks.view.workspace");case"archived":return F("tasks.view.archives")}}function hM(J,z=jE){return n9(J,z)}function $9(J){let z=0;for(let Z of J)z+=(Z.codePointAt(0)??0)>=4352?2:1;return z}function vM(J){let{theme:z}=I0(),Z=()=>J.focused?J.focused():!0,[Y,X]=p("active"),[Q,q]=p(!1),[H,j]=p(""),[B,U]=p(null),V=()=>J.projectFilter?.()??B(),f=(c)=>{if(J.onProjectFilterChange)J.onProjectFilterChange(c);else U(c)};function L(){j(""),q(!0),J.onSearchActiveChange?.(!0)}function M(c){q(!1),j(""),J.onSearchActiveChange?.(!1)}E0(()=>{if(!Q())return;let c=HJ();if(!c)return;let H0=(A0)=>{if(A0.defaultPrevented)return;if(!Z())return;if(A0.ctrl||A0.meta||A0.option)return;if(A0.name==="backspace"){j((m0)=>m0.slice(0,-1));return}let v0=A0.sequence;if(!v0||v0.length!==1)return;let e0=v0.charCodeAt(0);if(e0<32||e0===127)return;j((m0)=>m0+v0)};c.keyInput.on("keypress",H0),k1(()=>c.keyInput.off("keypress",H0))});let[A,N]=p(0),u=setInterval(()=>N((c)=>c+1),HE);k1(()=>clearInterval(u));let[h,I]=p(0),R=setInterval(()=>I((c)=>(c+1)%YQ.length),TM);k1(()=>clearInterval(R));let O=()=>J.sortMode?.()??"default",S=U0(()=>XM(J.tasks(),Y())),n=U0(()=>{let c=V();if(!c)return null;let H0=Fz(c);return S().find((A0)=>Fz(A0.repo)===H0)??null}),i=U0(()=>n()?.repo??null),P=U0(()=>n()?.label??"all"),a=U0(()=>{let c=n();return c?c.count:S().reduce((H0,A0)=>H0+A0.count,0)}),Y0=U0(()=>{let c=a();return`${c} ${c===1?F("tasks.project.taskSingular"):F("tasks.project.taskPlural")}`}),Q0=U0((c)=>HM(c,D7(J.tasks(),Y(),Q()?H():"",O(),i())),[]),e=U0(()=>L7(Q0())),v=U0(()=>qM(Q0())),j0=U0(()=>v().projectRows),k=U0(()=>v().taskRows),o=U0(()=>{let c=new Map;for(let H0 of Q0())c.set(H0.flatIndex,H0);return c}),m=U0(()=>L7(D7(J.tasks(),Y(),"",O(),i())).length),g=U0(()=>k().length>0);E0(()=>{let c=V(),H0=S();if(c!==null&&H0.length>0&&(H0.length<=1||n()===null))f(null)});function J0(){let c=S();if(c.length<=1){f(null);return}let H0=i(),A0=H0?Fz(H0):null,v0=A0===null?-1:c.findIndex((m0)=>Fz(m0.repo)===A0),e0=c[v0+1];f(e0?.repo??null)}let w=()=>J.width?J.width():PM,_=U0(()=>Math.max(6,w()-9)),q0=U0(()=>Math.max(6,w()-16)),B0=ez(),F0=U0(()=>{let c=Math.max(2,Math.min(10,Math.floor(B0().height*0.25))),H0=Math.max(2,j0().length*2);return Math.min(c,H0)}),[l0,$0]=p(null),[C0,t0]=p(-1),O1,j1,J1,P0=new Map;E0(()=>{let c=J.width?J.width():PM,H0=J1;if(!H0)return;H0.width=c,H0.flexShrink=1,H0.minHeight=0}),E0(GJ([C0,Q0],([c])=>{let H0=o().get(c);if(!H0)return;let A0=H0.task.kind==="main"?O1:j1;if(!A0)return;if(A0.viewport.height<=0)return;let v0=P0.get(c);if(!v0)return;A0.scrollChildIntoView(v0.id)})),E0(GJ(()=>[J.selectedId(),e()],([c,H0])=>{let A0=QJ(C0),v0=GM(c,H0,A0);if(v0!==A0)t0(v0)})),E0(GJ(Y,()=>{let c=e();t0(c.length>0?0:-1)},{defer:!0})),E0(GJ(i,(c)=>t0(QM(Q0(),c)),{defer:!0})),E0(GJ([Q,H],()=>{if(!Q())return;let c=e();t0(c.length>0?0:-1)}));function z1(c){let H0=Y(),A0=hG.findIndex((m0)=>m0.view===H0);if(A0<0)return;let v0=(A0+c+hG.length)%hG.length,e0=hG[v0];if(e0)X(e0.view)}let Q1=(c)=>{if(J.onActivate?.(c),!J.pinnedSelection)return;let H0=J.selectedId();if(!H0||c===H0)return;let A0=e().indexOf(H0);if(A0>=0)t0(A0)};E0(GJ([C0,e],([c,H0])=>{J.onCursorChange?.(c>=0&&c<H0.length?H0[c]:null)})),bM({focused:Z,cursorIndex:C0,setCursorIndex:t0,flatTaskIds:e,onSelect:(c)=>{J.onSelect(c),Q1(c)},onDeleteRequest:(c)=>J.onDeleteRequest?.(c),onArchiveRequest:(c)=>J.onArchiveRequest?.(c),onLocalMergeRequest:(c)=>J.onLocalMergeRequest?.(c),moveMode:J.moveMode,onMoveRequest:(c,H0)=>J.onMoveRequest?.(c,H0),onMoveModeExit:()=>J.onMoveModeExit?.(),onRenameRequest:(c)=>J.onRenameRequest?.(c),onPinRequest:(c)=>J.onPinRequest?.(c),onPreviewToggleRequest:(c)=>J.onPreviewToggleRequest?.(c),onViewSwitch:(c)=>z1(c),onSortModeToggle:()=>J.onSortModeToggle?.(),onProjectFilterToggle:()=>J0(),searchMode:Q,onSearchEnter:()=>L(),onSearchExit:(c)=>M(c)});let k0=(c)=>(()=>{var H0=W("box"),A0=W("box"),v0=W("text"),e0=W("text");return D(H0,A0),G(H0,"flexDirection","column"),G(H0,"flexShrink",0),K(H0,b(z0,{get when(){return c.topPad},get children(){var m0=W("box"),Z1=W("text");return D(m0,Z1),G(m0,"flexShrink",0),D(Z1,R0(" ")),G(Z1,"wrapMode","none"),m0}}),A0),D(A0,v0),D(A0,e0),G(A0,"flexDirection","row"),G(A0,"flexShrink",0),G(A0,"gap",1),G(A0,"paddingLeft",1),G(A0,"paddingRight",1),G(v0,"wrapMode","none"),K(v0,()=>c.label),G(e0,"wrapMode","none"),K(e0,()=>"\u2500".repeat(Math.max(2,w()-10-c.label.length-(c.suffix?.length??0)))),K(A0,b(z0,{get when(){return c.suffix},get children(){var m0=W("text");return G(m0,"wrapMode","none"),K(m0,()=>c.suffix),T((Z1)=>{var R1=z.info,A1=l1.BOLD;return R1!==Z1.e&&(Z1.e=G(m0,"fg",R1,Z1.e)),A1!==Z1.t&&(Z1.t=G(m0,"attributes",A1,Z1.t)),Z1},{e:void 0,t:void 0}),m0}}),null),T((m0)=>{var Z1=z.textMuted,R1=l1.BOLD,A1=z.border;return Z1!==m0.e&&(m0.e=G(v0,"fg",Z1,m0.e)),R1!==m0.t&&(m0.t=G(v0,"attributes",R1,m0.t)),A1!==m0.a&&(m0.a=G(e0,"fg",A1,m0.a)),m0},{e:void 0,t:void 0,a:void 0}),H0})(),s=(c)=>{switch(c){case"success":return z.success;case"warning":return z.warning;case"primary":return z.primary;case"error":return z.error;default:return z.textMuted}},q1=(c)=>{let H0=c.row.task,A0=c.row.flatIndex,v0=()=>A0===C0(),e0=()=>H0.id===J.selectedId(),m0=U0(()=>{let W0=J.chatRunState?.();if(!W0)return!1;let T0=`${H0.id}:`;for(let[g0,n0]of W0)if(n0==="running"&&g0.startsWith(T0))return!0;return!1}),Z1=U0(()=>{let W0=lH(J.worktreeChanges?.(),H0.worktreePath);if(W0)return W0;if(A(),!H0.archived)C7(H0.worktreePath);return R7(H0.worktreePath)},void 0,{equals:sz}),R1=U0(()=>{return A(),gM(H0.repo),CM(H0.repo)}),A1=U0(()=>A7({task:H0,activity:J.engineState?.().get(H0.id),job:J.taskJobs?.().get(H0.id),live:m0(),spinnerFrame:0,subtitleBudget:q0(),truncateBranch:hM,mainBranch:R1()})),X0=U0(()=>N7(A1(),h)),G0=()=>!X0().loading?z.primary:s(X0().tone),f0=()=>v0()?z.focusAccent:e0()?z.primary:void 0,N0=()=>v0()||e0()?"\u258C":" ";return(()=>{var W0=W("box"),T0=W("box"),g0=W("box"),n0=W("text"),b0=W("box"),y0=W("text"),Y1=W("text"),W1=W("box"),U1=W("text"),G1=W("box"),y=W("text");return D(W0,T0),G(W0,"flexDirection","column"),G(W0,"gap",0),G(W0,"paddingBottom",0),D(T0,g0),D(T0,W1),Dz((D0)=>{P0.set(A0,D0),k1(()=>{if(P0.get(A0)===D0)P0.delete(A0)})},T0),G(T0,"flexDirection","column"),G(T0,"gap",0),G(T0,"onMouseUp",()=>{if(t0(A0),J.onSelect(H0.id),J.activateOnClick)Q1(H0.id)}),G(T0,"onMouseOver",(D0)=>$0({task:H0,x:D0.x,y:D0.y})),G(T0,"onMouseOut",()=>$0((D0)=>D0?.task.id===H0.id?null:D0)),D(g0,n0),D(g0,b0),G(g0,"flexDirection","row"),G(g0,"gap",0),G(n0,"wrapMode","none"),K(n0,N0),D(b0,y0),D(b0,Y1),G(b0,"flexDirection","row"),G(b0,"flexGrow",1),G(b0,"paddingRight",1),G(b0,"gap",0),G(y0,"wrapMode","none"),K(y0,()=>X0().projectGlyph),G(Y1,"wrapMode","none"),G(Y1,"flexGrow",1),K(Y1,()=>O7(X0().titleText,_())),D(W1,U1),D(W1,G1),G(W1,"flexDirection","row"),G(W1,"gap",0),G(U1,"wrapMode","none"),K(U1,N0),D(G1,y),G(G1,"flexDirection","row"),G(G1,"flexGrow",1),G(G1,"paddingLeft",2),G(G1,"paddingRight",1),G(G1,"gap",1),G(y,"wrapMode","none"),G(y,"flexGrow",1),K(y,()=>X0().subtitleText),K(G1,b(z0,{get when(){return Z1().added>0},get children(){var D0=W("text"),f1=R0("+");return D(D0,f1),G(D0,"wrapMode","none"),K(D0,()=>Z1().added,null),T((M1)=>G(D0,"fg",z.success,M1)),D0}}),null),K(G1,b(z0,{get when(){return Z1().deleted>0},get children(){var D0=W("text"),f1=R0("\u2212");return D(D0,f1),G(D0,"wrapMode","none"),K(D0,()=>Z1().deleted,null),T((M1)=>G(D0,"fg",z.error,M1)),D0}}),null),T((D0)=>{var f1=v0()?z.backgroundElement:void 0,M1=f0(),h0=G0(),p0=l1.BOLD,x0=z.text,$=l1.BOLD,O0=f0(),Z0=z.textMuted,E=l1.DIM;return f1!==D0.e&&(D0.e=G(T0,"backgroundColor",f1,D0.e)),M1!==D0.t&&(D0.t=G(n0,"fg",M1,D0.t)),h0!==D0.a&&(D0.a=G(y0,"fg",h0,D0.a)),p0!==D0.o&&(D0.o=G(y0,"attributes",p0,D0.o)),x0!==D0.i&&(D0.i=G(Y1,"fg",x0,D0.i)),$!==D0.n&&(D0.n=G(Y1,"attributes",$,D0.n)),O0!==D0.s&&(D0.s=G(U1,"fg",O0,D0.s)),Z0!==D0.h&&(D0.h=G(y,"fg",Z0,D0.h)),E!==D0.r&&(D0.r=G(y,"attributes",E,D0.r)),D0},{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}),W0})()};return(()=>{var c=W("box"),H0=W("box"),A0=W("box"),v0=W("text"),e0=W("box"),m0=W("box"),Z1=W("text"),R1=W("scrollbox"),A1=W("box");return D(c,H0),D(c,e0),D(c,R1),Dz((X0)=>{J1=X0},c),G(c,"flexGrow",1),G(c,"minHeight",0),G(c,"flexDirection","column"),G(c,"paddingTop",1),G(c,"paddingBottom",1),G(c,"paddingLeft",0),G(c,"paddingRight",0),D(H0,A0),G(H0,"flexDirection","row"),G(H0,"justifyContent","space-between"),G(H0,"gap",1),G(H0,"paddingBottom",1),G(H0,"paddingLeft",1),G(H0,"paddingRight",1),D(A0,v0),G(A0,"flexDirection","row"),G(A0,"gap",1),D(v0,R0("KOBE")),G(v0,"wrapMode","none"),K(A0,b(z0,{get when(){return J.headerStatus?.()},children:(X0)=>(()=>{var G0=W("text");return G(G0,"wrapMode","none"),G(G0,"onMouseUp",()=>J.onHeaderStatusClick?.()),K(G0,()=>X0().label),T((f0)=>{var N0=X0().emphasize?z.warning:z.textMuted,W0=X0().emphasize?l1.BOLD:l1.DIM;return N0!==f0.e&&(f0.e=G(G0,"fg",N0,f0.e)),W0!==f0.t&&(f0.t=G(G0,"attributes",W0,f0.t)),f0},{e:void 0,t:void 0}),G0})()}),null),K(H0,b(z0,{get when(){return J.onAddTask},get children(){var X0=W("text");return D(X0,R0("[+]")),G(X0,"wrapMode","none"),G(X0,"onMouseUp",()=>J.onAddTask?.()),T((G0)=>{var f0=z.primary,N0=l1.BOLD;return f0!==G0.e&&(G0.e=G(X0,"fg",f0,G0.e)),N0!==G0.t&&(G0.t=G(X0,"attributes",N0,G0.t)),G0},{e:void 0,t:void 0}),X0}}),null),K(c,b(z0,{get when(){return Q()},get children(){var X0=W("box"),G0=W("text"),f0=W("text"),N0=W("text");return D(X0,G0),D(X0,f0),D(X0,N0),G(X0,"flexDirection","row"),G(X0,"gap",0),G(X0,"paddingBottom",1),G(X0,"paddingLeft",1),D(G0,R0("/")),G(G0,"wrapMode","none"),G(f0,"wrapMode","none"),K(f0,H),D(N0,R0("\u2588")),G(N0,"wrapMode","none"),K(X0,b(z0,{get when(){return H().length===0},get children(){var W0=W("text"),T0=R0(" ");return D(W0,T0),G(W0,"wrapMode","none"),K(W0,()=>F("tasks.search.placeholder"),null),T((g0)=>G(W0,"fg",z.textMuted,g0)),W0}}),null),K(X0,b(z0,{get when(){return H().length>0},get children(){var W0=W("text"),T0=R0(" "),g0=R0("/");return D(W0,T0),D(W0,g0),G(W0,"wrapMode","none"),K(W0,()=>e().length,g0),K(W0,m,null),T((n0)=>G(W0,"fg",z.textMuted,n0)),W0}}),null),T((W0)=>{var{info:T0,text:g0,info:n0}=z,b0=l1.BLINK;return T0!==W0.e&&(W0.e=G(G0,"fg",T0,W0.e)),g0!==W0.t&&(W0.t=G(f0,"fg",g0,W0.t)),n0!==W0.a&&(W0.a=G(N0,"fg",n0,W0.a)),b0!==W0.o&&(W0.o=G(N0,"attributes",b0,W0.o)),W0},{e:void 0,t:void 0,a:void 0,o:void 0}),X0}}),e0),D(e0,m0),G(e0,"flexDirection","row"),G(e0,"justifyContent","space-between"),G(e0,"gap",1),G(e0,"paddingBottom",1),G(e0,"paddingLeft",1),G(e0,"paddingRight",1),D(m0,Z1),G(m0,"flexDirection","row"),G(m0,"gap",2),K(m0,b(o0,{each:hG,children:(X0)=>{let G0=()=>Y()===X0.view;return(()=>{var f0=W("text");return G(f0,"wrapMode","none"),G(f0,"onMouseUp",()=>X(X0.view)),K(f0,()=>qE(X0.view)),T((N0)=>{var W0=G0()?z.primary:z.textMuted,T0=G0()?l1.BOLD:void 0;return W0!==N0.e&&(N0.e=G(f0,"fg",W0,N0.e)),T0!==N0.t&&(N0.t=G(f0,"attributes",T0,N0.t)),N0},{e:void 0,t:void 0}),f0})()}}),Z1),D(Z1,R0("[/]")),G(Z1,"wrapMode","none"),K(e0,b(z0,{get when(){return J.sortMode},get children(){var X0=W("text");return G(X0,"wrapMode","none"),G(X0,"onMouseUp",()=>J.onSortModeToggle?.()),K(X0,()=>F("tasks.sort")),T((G0)=>{var f0=z.textMuted,N0=l1.DIM;return f0!==G0.e&&(G0.e=G(X0,"fg",f0,G0.e)),N0!==G0.t&&(G0.t=G(X0,"attributes",N0,G0.t)),G0},{e:void 0,t:void 0}),X0}}),null),K(c,b(z0,{get when(){return j0().length>0},get children(){var X0=W("box"),G0=W("box"),f0=W("text"),N0=W("text"),W0=W("scrollbox"),T0=W("box");return D(X0,G0),D(X0,W0),G(X0,"flexDirection","column"),G(X0,"flexShrink",0),D(G0,f0),D(G0,N0),G(G0,"flexDirection","row"),G(G0,"flexShrink",0),G(G0,"gap",1),G(G0,"paddingLeft",1),G(G0,"paddingRight",1),G(G0,"onMouseUp",()=>J0()),G(f0,"wrapMode","none"),K(f0,()=>F("tasks.header.projects")),K(G0,b(z0,{get when(){return S().length>1},get children(){var g0=W("text");return G(g0,"wrapMode","none"),K(g0,P),T((n0)=>{var b0=i()?z.primary:z.textMuted,y0=i()?l1.BOLD:void 0;return b0!==n0.e&&(n0.e=G(g0,"fg",b0,n0.e)),y0!==n0.t&&(n0.t=G(g0,"attributes",y0,n0.t)),n0},{e:void 0,t:void 0}),g0}}),N0),G(N0,"wrapMode","none"),K(N0,()=>"\u2500".repeat(Math.max(2,w()-10-F("tasks.header.projects").length-(S().length>1?P().length+1:0)-(S().length>1?Y0().length+1:0)))),K(G0,b(z0,{get when(){return S().length>1},get children(){var g0=W("text");return G(g0,"wrapMode","none"),K(g0,Y0),T((n0)=>{var b0=z.textMuted,y0=l1.DIM;return b0!==n0.e&&(n0.e=G(g0,"fg",b0,n0.e)),y0!==n0.t&&(n0.t=G(g0,"attributes",y0,n0.t)),n0},{e:void 0,t:void 0}),g0}}),null),D(W0,T0),Dz((g0)=>{O1=g0},W0),G(W0,"flexShrink",0),G(W0,"flexGrow",0),G(W0,"minHeight",0),G(W0,"stickyScroll",!1),G(W0,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),G(T0,"flexShrink",0),G(T0,"gap",0),G(T0,"paddingRight",1),K(T0,b(o0,{get each(){return j0()},children:(g0)=>b(q1,{row:g0})})),T((g0)=>{var n0=z.textMuted,b0=l1.BOLD,y0=z.border,Y1=F0();return n0!==g0.e&&(g0.e=G(f0,"fg",n0,g0.e)),b0!==g0.t&&(g0.t=G(f0,"attributes",b0,g0.t)),y0!==g0.a&&(g0.a=G(N0,"fg",y0,g0.a)),Y1!==g0.o&&(g0.o=G(W0,"maxHeight",Y1,g0.o)),g0},{e:void 0,t:void 0,a:void 0,o:void 0}),X0}}),R1),K(c,b(k0,{get label(){return F("tasks.header.tasks")},get suffix(){return L0(()=>O()==="default")()?void 0:O()},get topPad(){return j0().length>0}}),R1),D(R1,A1),Dz((X0)=>{j1=X0},R1),G(R1,"flexGrow",1),G(R1,"minHeight",0),G(R1,"stickyScroll",!1),G(R1,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),G(A1,"flexShrink",0),G(A1,"gap",0),G(A1,"paddingRight",1),K(A1,b(o0,{get each(){return k()},children:(X0)=>{let{task:G0,flatIndex:f0}=X0,N0=()=>f0===C0(),W0=()=>G0.id===J.selectedId(),T0=U0(()=>{let U1=J.chatRunState?.();if(!U1)return!1;let G1=`${G0.id}:`;for(let[y,D0]of U1)if(D0==="running"&&y.startsWith(G1))return!0;return!1}),g0=U0(()=>{let U1=lH(J.worktreeChanges?.(),G0.worktreePath);if(U1)return U1;if(A(),!G0.archived)C7(G0.worktreePath);return R7(G0.worktreePath)},void 0,{equals:sz}),n0=U0(()=>A7({task:G0,activity:J.engineState?.().get(G0.id),job:J.taskJobs?.().get(G0.id),live:T0(),spinnerFrame:0,subtitleBudget:q0(),truncateBranch:hM,mainBranch:""})),b0=U0(()=>N7(n0(),h)),y0=()=>s(b0().tone),Y1=()=>N0()?z.focusAccent:W0()?z.primary:void 0,W1=()=>N0()||W0()?"\u258C":" ";return(()=>{var U1=W("box"),G1=W("box"),y=W("box"),D0=W("text"),f1=W("box"),M1=W("text"),h0=W("text"),p0=W("box"),x0=W("text"),$=W("box"),O0=W("text");return D(U1,G1),G(U1,"flexDirection","column"),G(U1,"gap",0),G(U1,"paddingBottom",1),D(G1,y),D(G1,p0),Dz((Z0)=>{P0.set(f0,Z0),k1(()=>{if(P0.get(f0)===Z0)P0.delete(f0)})},G1),G(G1,"flexDirection","column"),G(G1,"gap",0),G(G1,"onMouseUp",()=>{if(t0(f0),J.onSelect(G0.id),J.activateOnClick)Q1(G0.id)}),G(G1,"onMouseOver",(Z0)=>$0({task:G0,x:Z0.x,y:Z0.y})),G(G1,"onMouseOut",()=>$0((Z0)=>Z0?.task.id===G0.id?null:Z0)),D(y,D0),D(y,f1),G(y,"flexDirection","row"),G(y,"gap",0),G(D0,"wrapMode","none"),K(D0,W1),D(f1,M1),D(f1,h0),G(f1,"flexDirection","row"),G(f1,"flexGrow",1),G(f1,"paddingRight",1),G(f1,"gap",0),G(M1,"wrapMode","none"),K(M1,()=>b0().stateGlyph),G(h0,"wrapMode","none"),G(h0,"flexGrow",1),K(h0,()=>O7(b0().titleText,_())),K(f1,b(z0,{get when(){return L0(()=>!!J.moveMode?.())()&&N0()},get children(){var Z0=W("text");return G(Z0,"wrapMode","none"),K(Z0,()=>F("tasks.moveChip")),T((E)=>G(Z0,"fg",z.warning,E)),Z0}}),null),D(p0,x0),D(p0,$),G(p0,"flexDirection","row"),G(p0,"gap",0),G(x0,"wrapMode","none"),K(x0,W1),D($,O0),G($,"flexDirection","row"),G($,"flexGrow",1),G($,"paddingLeft",2),G($,"paddingRight",1),G($,"gap",1),G(O0,"wrapMode","none"),G(O0,"flexGrow",1),K(O0,()=>b0().subtitleText),K($,b(z0,{get when(){return G0.pinned===!0},get children(){var Z0=W("text");return D(Z0,R0("\u25B4")),G(Z0,"wrapMode","none"),T((E)=>G(Z0,"fg",z.warning,E)),Z0}}),null),K($,b(z0,{get when(){return xM(G0)},children:(Z0)=>(()=>{var E=W("text");return G(E,"wrapMode","none"),K(E,()=>Z0().glyph),T((K0)=>G(E,"fg",s(Z0().tone),K0)),E})()}),null),K($,b(z0,{get when(){return g0().added>0},get children(){var Z0=W("text"),E=R0("+");return D(Z0,E),G(Z0,"wrapMode","none"),K(Z0,()=>g0().added,null),T((K0)=>G(Z0,"fg",z.success,K0)),Z0}}),null),K($,b(z0,{get when(){return g0().deleted>0},get children(){var Z0=W("text"),E=R0("\u2212");return D(Z0,E),G(Z0,"wrapMode","none"),K(Z0,()=>g0().deleted,null),T((K0)=>G(Z0,"fg",z.error,K0)),Z0}}),null),T((Z0)=>{var E=N0()?z.backgroundElement:void 0,K0=Y1(),x1=y0(),C1=l1.BOLD,$1=z.text,m1=W0()||N0()?l1.BOLD:void 0,WJ=Y1(),_J=z.textMuted,B1=l1.DIM;return E!==Z0.e&&(Z0.e=G(G1,"backgroundColor",E,Z0.e)),K0!==Z0.t&&(Z0.t=G(D0,"fg",K0,Z0.t)),x1!==Z0.a&&(Z0.a=G(M1,"fg",x1,Z0.a)),C1!==Z0.o&&(Z0.o=G(M1,"attributes",C1,Z0.o)),$1!==Z0.i&&(Z0.i=G(h0,"fg",$1,Z0.i)),m1!==Z0.n&&(Z0.n=G(h0,"attributes",m1,Z0.n)),WJ!==Z0.s&&(Z0.s=G(x0,"fg",WJ,Z0.s)),_J!==Z0.h&&(Z0.h=G(O0,"fg",_J,Z0.h)),B1!==Z0.r&&(Z0.r=G(O0,"attributes",B1,Z0.r)),Z0},{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}),U1})()}}),null),K(A1,b(z0,{get when(){return e().length===0},get children(){var X0=W("box"),G0=W("text");return D(X0,G0),G(X0,"paddingTop",1),G(X0,"paddingLeft",1),K(G0,(()=>{var f0=L0(()=>!!(Q()&&H().trim().length>0));return()=>f0()?F("tasks.empty.noMatchSearch"):L0(()=>!!i())()?L0(()=>Y()==="active")()?F("tasks.empty.noActiveProject"):F("tasks.empty.noArchivedProject"):L0(()=>Y()==="active")()?F("tasks.empty.noActive"):F("tasks.empty.noArchived")})()),T((f0)=>G(G0,"fg",z.textMuted,f0)),X0}}),null),K(A1,b(z0,{get when(){return L0(()=>!!(i()&&e().length>0&&!g()))()&&!(Q()&&H().trim().length>0)},get children(){var X0=W("box"),G0=W("text");return D(X0,G0),G(X0,"paddingTop",1),G(X0,"paddingLeft",1),G(G0,"wrapMode","none"),K(G0,(()=>{var f0=L0(()=>Y()==="active");return()=>f0()?F("tasks.empty.noActiveProject"):F("tasks.empty.noArchivedProject")})()),T((f0)=>{var N0=z.textMuted,W0=l1.DIM;return N0!==f0.e&&(f0.e=G(G0,"fg",N0,f0.e)),W0!==f0.t&&(f0.t=G(G0,"attributes",W0,f0.t)),f0},{e:void 0,t:void 0}),X0}}),null),K(A1,b(z0,{get when(){return L0(()=>Y()==="archived")()&&e().length>0},get children(){var X0=W("box"),G0=W("text");return D(X0,G0),G(X0,"paddingTop",1),G(X0,"paddingLeft",1),G(G0,"wrapMode","none"),K(G0,()=>F("tasks.archiveHint")),T((f0)=>{var N0=z.textMuted,W0=l1.DIM;return N0!==f0.e&&(f0.e=G(G0,"fg",N0,f0.e)),W0!==f0.t&&(f0.t=G(G0,"attributes",W0,f0.t)),f0},{e:void 0,t:void 0}),X0}}),null),K(c,b(z0,{get when(){return J.zenActive?.()},get children(){var X0=W("box"),G0=W("text");return D(X0,G0),G(X0,"flexShrink",0),G(X0,"paddingLeft",1),G(X0,"paddingRight",1),G(X0,"paddingTop",1),D(G0,R0("\u262F ZEN")),G(G0,"wrapMode","none"),G(G0,"onMouseUp",()=>J.onZenClick?.()),T((f0)=>{var N0=z.accent,W0=l1.BOLD;return N0!==f0.e&&(f0.e=G(G0,"fg",N0,f0.e)),W0!==f0.t&&(f0.t=G(G0,"attributes",W0,f0.t)),f0},{e:void 0,t:void 0}),X0}}),null),K(c,b(z0,{get when(){return l0()},children:(X0)=>{let G0=U0(()=>{let b0=X0().task,y0=[];if(y0.push({text:b0.kind==="main"?Pz(b0.repo):b0.title,bold:!0}),b0.branch.length>0)y0.push({text:`\u2387 ${b0.branch}`});if(b0.worktreePath.length>0)y0.push({text:b0.worktreePath,dim:!0});return y0}),f0=72,N0=U0(()=>Math.min(68,Math.max(...G0().map((b0)=>$9(b0.text))))),W0=U0(()=>N0()+4),T0=U0(()=>G0().length+2),g0=U0(()=>Math.max(0,Math.min(X0().x+2,B0().width-W0()-1))),n0=U0(()=>Math.max(0,Math.min(X0().y+1,B0().height-T0()-1)));return(()=>{var b0=W("box");return G(b0,"position","absolute"),G(b0,"zIndex",2600),G(b0,"flexDirection","column"),G(b0,"border",!0),G(b0,"paddingLeft",1),G(b0,"paddingRight",1),K(b0,b(o0,{get each(){return G0()},children:(y0)=>(()=>{var Y1=W("text");return G(Y1,"wrapMode","none"),K(Y1,(()=>{var W1=L0(()=>!!y0.dim);return()=>W1()?BE(y0.text,N0()):M7(y0.text,N0())})()),T((W1)=>{var U1=y0.dim?z.textMuted:z.text,G1=y0.bold?l1.BOLD:y0.dim?l1.DIM:void 0;return U1!==W1.e&&(W1.e=G(Y1,"fg",U1,W1.e)),G1!==W1.t&&(W1.t=G(Y1,"attributes",G1,W1.t)),W1},{e:void 0,t:void 0}),Y1})()})),T((y0)=>{var Y1=g0(),W1=n0(),U1=W0(),G1=z.focusAccent,y=z.backgroundElement;return Y1!==y0.e&&(y0.e=G(b0,"left",Y1,y0.e)),W1!==y0.t&&(y0.t=G(b0,"top",W1,y0.t)),U1!==y0.a&&(y0.a=G(b0,"width",U1,y0.a)),G1!==y0.o&&(y0.o=G(b0,"borderColor",G1,y0.o)),y!==y0.i&&(y0.i=G(b0,"backgroundColor",y,y0.i)),y0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),b0})()}}),null),T((X0)=>{var G0=Z()?z.focusAccent:z.textMuted,f0=l1.BOLD,N0=z.textMuted,W0=l1.DIM;return G0!==X0.e&&(X0.e=G(v0,"fg",G0,X0.e)),f0!==X0.t&&(X0.t=G(v0,"attributes",f0,X0.t)),N0!==X0.a&&(X0.a=G(Z1,"fg",N0,X0.a)),W0!==X0.o&&(X0.o=G(Z1,"attributes",W0,X0.o)),X0},{e:void 0,t:void 0,a:void 0,o:void 0}),c})()}var PM=32,hG,HE=2000,jE=16,BE;var g7=C(()=>{x();x();x();x();x();x();x();x();x();t1();x();H1();P1();P1();kM();d9();IM();SM();EM();wX();wM();hG=[{view:"active"},{view:"archived"}];BE=i9});function _9(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 a9(J,z){if(J.includes("/"))return J.split("/").map((X)=>a9(X,z)).join("/");let Z=J.toLowerCase();if(Z==="tab")return"tab";let Y=WE[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 XQ(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("+")?XQ(H,z):a9(H,!0)}`}let X=Z.split("+");if(X.length===1)return a9(X[0]??"",!1);let Q=X[X.length-1]??"";return`${X.slice(0,-1).map((H)=>VE[H.toLowerCase().trim()]??H).join("")} ${a9(Q,!0)}`}var VE,WE;var k7=C(()=>{VE={ctrl:"\u2303",control:"\u2303",alt:"\u2325",opt:"\u2325",option:"\u2325",shift:"\u21E7",cmd:"\u2318",command:"\u2318",meta:"\u2318",super:"\u2318"},WE={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 mM}from"@opentui/core";function UE(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 QQ(J={}){let z=i1(),{theme:Z}=I0(),Y=()=>UE(QY),X=()=>J.onClose?J.onClose():z.clear(),[Q,q]=p("\u2303B");return r1(()=>{S0(["show-options","-g","prefix"]).then(({code:H,stdout:j})=>{if(H!==0)return;let B=_9(j);if(B)q(B)})}),L1(()=>({bindings:[{key:"?",cmd:X}]})),(()=>{var H=W("box"),j=W("box"),B=W("text"),U=W("text"),V=W("scrollbox"),f=W("box");return D(H,j),D(H,V),G(H,"paddingLeft",2),G(H,"paddingRight",2),G(H,"gap",1),G(H,"flexShrink",1),D(j,B),D(j,U),G(j,"flexDirection","row"),G(j,"justifyContent","space-between"),G(j,"flexShrink",0),K(B,()=>F("help.title")),G(U,"onMouseUp",X),K(U,()=>F("help.esc")),D(V,f),G(V,"flexShrink",1),G(V,"flexGrow",1),G(V,"stickyScroll",!1),G(f,"paddingBottom",1),G(f,"gap",1),G(f,"paddingRight",1),K(f,b(o0,{get each(){return Y()},children:(L)=>(()=>{var M=W("box"),A=W("text");return D(M,A),G(M,"gap",0),K(A,()=>dV("category",L.category)),K(M,b(o0,{get each(){return L.rows},children:(N)=>{let u=N.hint?.keys??N.keys[0]??"\u2014",h=()=>u==="\u2014"?"\u2014":XQ(u,Q()),I=()=>(N.hint?N.keys:N.keys.slice(1)).map((R)=>XQ(R,Q()));return(()=>{var R=W("box"),O=W("box"),S=W("text"),n=W("box"),i=W("text");return D(R,O),D(R,n),G(R,"flexDirection","row"),G(R,"gap",2),G(R,"paddingLeft",1),D(O,S),G(O,"width",14),K(S,h),D(n,i),G(n,"flexGrow",1),K(i,()=>dV("desc",N.id)),K(R,(()=>{var P=L0(()=>I().length>0);return()=>P()?(()=>{var a=W("box"),Y0=W("text");return D(a,Y0),K(Y0,()=>`(${I().join(", ")})`),T((Q0)=>G(Y0,"fg",Z.textMuted,Q0)),a})():null})(),null),T((P)=>{var{primary:a,text:Y0}=Z;return a!==P.e&&(P.e=G(S,"fg",a,P.e)),Y0!==P.t&&(P.t=G(i,"fg",Y0,P.t)),P},{e:void 0,t:void 0}),R})()}}),null),T((N)=>{var u=Z.accent,h=mM.BOLD;return u!==N.e&&(N.e=G(A,"fg",u,N.e)),h!==N.t&&(N.t=G(A,"attributes",h,N.t)),N},{e:void 0,t:void 0}),M})()})),T((L)=>{var M=mM.BOLD,A=Z.text,N=Z.textMuted,u={trackOptions:{backgroundColor:Z.backgroundDialog,foregroundColor:Z.borderActive}};return M!==L.e&&(L.e=G(B,"attributes",M,L.e)),A!==L.t&&(L.t=G(B,"fg",A,L.t)),N!==L.a&&(L.a=G(U,"fg",N,L.a)),u!==L.o&&(L.o=G(V,"verticalScrollbarOptions",u,L.o)),L},{e:void 0,t:void 0,a:void 0,o:void 0}),H})()}var b7=C(()=>{x();x();x();x();x();x();x();H1();S1();lY();P1();t1();k7();TJ();aJ();QQ.show=(J)=>{J.replace(()=>b(QQ,{}))}});import{TextAttributes as fE}from"@opentui/core";function cM(J){let z=i1(),{theme:Z}=I0(),[Y,X]=p(J.currentTitle);function Q(){let q=Y().trim();if(EG(q)&&!J.allowEmpty)return;J.onSubmit(q),z.clear()}return(()=>{var q=W("box"),H=W("box"),j=W("text"),B=W("text"),U=W("box"),V=W("text"),f=W("input"),L=W("box"),M=W("text");return D(q,H),D(q,U),D(q,L),G(q,"paddingLeft",2),G(q,"paddingRight",2),G(q,"gap",1),D(H,j),D(H,B),G(H,"flexDirection","row"),G(H,"justifyContent","space-between"),K(j,()=>J.dialogTitle??F("common.rename.defaultTitle")),D(B,R0("esc")),G(B,"onMouseUp",()=>J.onCancel()),D(U,V),D(U,f),G(U,"gap",0),K(V,()=>J.fieldLabel??F("common.rename.defaultFieldLabel")),G(f,"focused",!0),G(f,"onInput",(A)=>X(xJ(A))),G(f,"onSubmit",()=>Q()),D(L,M),G(L,"paddingBottom",1),K(M,()=>F("common.rename.footerHint",{submitLabel:J.submitLabel??F("common.rename.defaultSubmitLabel")})),T((A)=>{var N=fE.BOLD,u=Z.text,h=Z.textMuted,I=Z.accent,R=Y(),O=J.placeholder??J.currentTitle,S=Z.textMuted;return N!==A.e&&(A.e=G(j,"attributes",N,A.e)),u!==A.t&&(A.t=G(j,"fg",u,A.t)),h!==A.a&&(A.a=G(B,"fg",h,A.a)),I!==A.o&&(A.o=G(V,"fg",I,A.o)),R!==A.i&&(A.i=G(f,"value",R,A.i)),O!==A.n&&(A.n=G(f,"placeholder",O,A.n)),S!==A.s&&(A.s=G(M,"fg",S,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 dM=C(()=>{x();x();x();x();x();x();x();t1();H1();P1();aJ();JQ()});function KE(J,z,Z={}){return new Promise((Y)=>{J.replace(()=>b(cM,{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 XZ;var I7=C(()=>{x();dM();XZ={show:KE}});import{spawnSync as DE}from"child_process";function ME(J){let[z,Z]=J.split("/");if(!z||!Z)throw Error(`invalid GitHub repository slug: ${J}`);return{owner:z,name:Z}}function nM(J,z){let Z=J.trim();if(!Z)throw Error(`${z} is required`);return Z}function iM(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 lM(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 Q=typeof X.stdout==="string"?X.stdout:String(X.stdout??""),q=typeof X.stderr==="string"?X.stderr:String(X.stderr??""),H;try{H=JSON.parse(Q)}catch{throw Error(`failed to parse gh response: ${iM(q,void 0)}`)}if((X.status??0)!==0||H.errors?.length)throw Error(iM(q,H.errors));if(!H.data)throw Error("GitHub CLI response did not include data");return H.data}function OE(J){return`${J}
82
+
83
+ ---
84
+ Submitted from kobe ${a0}.`}function GQ(J,z={}){let Z=nM(J.title,"feedback title"),Y=OE(nM(J.body,"feedback body")),X=(z.repoSlug??UY)();if(!X)throw Error("package repository is not a GitHub repository");let{owner:Q,name:q}=ME(X),H=J.categorySlug?.trim()||S7,j={spawn:z.spawn??DE},U=lM(LE,{owner:Q,name:q},j).repository,V=U?.id;if(!V)throw Error(`GitHub repository not found: ${X}`);let f=U.discussionCategories?.nodes?.find((A)=>A.slug===H);if(!f)throw Error(`GitHub Discussion category not found: ${H}`);let M=lM(FE,{repositoryId:V,categoryId:f.id,title:Z,body:Y},j).createDiscussion?.discussion;if(!M?.url||typeof M.number!=="number")throw Error("GitHub did not return the created Discussion");return{number:M.number,url:M.url}}var S7="feedback",LE=`
85
+ query($owner: String!, $name: String!) {
86
+ repository(owner: $owner, name: $name) {
87
+ id
88
+ discussionCategories(first: 50) {
89
+ nodes {
90
+ id
91
+ name
92
+ slug
93
+ }
94
+ }
95
+ }
96
+ }
97
+ `,FE=`
98
+ mutation($repositoryId: ID!, $categoryId: ID!, $title: String!, $body: String!) {
99
+ createDiscussion(input: {
100
+ repositoryId: $repositoryId,
101
+ categoryId: $categoryId,
102
+ title: $title,
103
+ body: $body
104
+ }) {
105
+ discussion {
106
+ number
107
+ url
108
+ }
109
+ }
110
+ }
111
+ `;var p9=C(()=>{CJ()});import{TextAttributes as AE}from"@opentui/core";function NE(J){if(!J)return J;return J.charAt(0).toUpperCase()+J.slice(1)}function OJ(J){let z=i1(),{theme:Z}=I0(),[Y,X]=zZ({active:J.initialActive??"confirm"});return L1(()=>({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 Q=W("box"),q=W("box"),H=W("text"),j=W("text"),B=W("text"),U=W("box");return D(Q,q),D(Q,B),D(Q,U),G(Q,"paddingLeft",2),G(Q,"paddingRight",2),G(Q,"paddingBottom",1),G(Q,"gap",0),D(q,H),D(q,j),G(q,"flexDirection","row"),G(q,"justifyContent","space-between"),K(H,()=>J.title),D(j,R0("esc")),G(j,"onMouseUp",()=>z.clear()),K(B,()=>J.message),G(U,"flexDirection","row"),G(U,"justifyContent","flex-end"),G(U,"paddingTop",1),K(U,b(o0,{each:["cancel","confirm"],children:(V)=>(()=>{var f=W("box"),L=W("text");return D(f,L),G(f,"paddingLeft",1),G(f,"paddingRight",1),G(f,"onMouseUp",()=>{if(V==="confirm")J.onConfirm?.();if(V==="cancel")J.onCancel?.();z.clear()}),K(L,()=>NE(V==="cancel"?J.label??F("common.cancel"):J.confirmLabel??F("common.confirm"))),T((M)=>{var A=V===Y.active?Z.primary:void 0,N=V===Y.active?Z.selectedListItemText:Z.textMuted;return A!==M.e&&(M.e=G(f,"backgroundColor",A,M.e)),N!==M.t&&(M.t=G(L,"fg",N,M.t)),M},{e:void 0,t:void 0}),f})()})),T((V)=>{var f=AE.BOLD,L=Z.text,M=Z.textMuted,A=Z.textMuted;return f!==V.e&&(V.e=G(H,"attributes",f,V.e)),L!==V.t&&(V.t=G(H,"fg",L,V.t)),M!==V.a&&(V.a=G(j,"fg",M,V.a)),A!==V.o&&(V.o=G(B,"fg",A,V.o)),V},{e:void 0,t:void 0,a:void 0,o:void 0}),Q})()}var vG=C(()=>{x();x();x();x();x();x();x();t1();H1();rX();P1();TJ();aJ();OJ.show=(J,z,Z,Y,X,Q)=>{return new Promise((q)=>{J.replace(()=>b(OJ,{title:z,message:Z,onConfirm:()=>q(!0),onCancel:()=>q(!1),label:Y,confirmLabel:X,get initialActive(){return Q?.initialActive}}),()=>q(void 0)),J.setSize("small")})}});import{unlinkSync as RE}from"fs";import{join as CE}from"path";function $M(J){return J instanceof KJ}function aM(J,z){try{J?.destroy()}catch(Z){console.error(`kobe: renderer.destroy() failed during ${z}:`,Z)}}async function y7(J,z,Z){if(await OJ.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{RE(CE(EJ(),".kobe","tasks.json"))}catch(X){if(X.code!=="ENOENT")console.error("kobe: failed to delete tasks.json during reset:",X)}aM(Z,"reset"),process.stderr.write(`kobe: UI state reset. Relaunch kobe to start fresh.
112
+ `),process.exit(0)}async function T7(J,z,Z){if(!(z instanceof KJ))return;if(await OJ.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;aM(Z,"daemon restart"),process.stderr.write(`kobe: window closed. Relaunch kobe to start fresh.
113
+ `),process.exit(0)}var _M=C(()=>{CZ();o1();vG()});function gE(J){return`theme:${J}`}function x7(J){return`language:${J}`}function E7(J){return`accent:${J}`}function kE(J){return`engine:${J}`}function mG(J){return`surface:${J}`}function u7(J){return[...J.themeNames.map((z)=>({id:gE(z),kind:"theme",name:z})),...oX.map((z)=>({id:x7(z.id),kind:"language",locale:z.id})),{id:"transparent",kind:"transparent"},...J.focusAccentSlots.map((z)=>({id:E7(z),kind:"focusAccent",slot:z})),{id:"toast",kind:"toast"},{id:"sound",kind:"sound"},{id:"zen-keep-tasks",kind:"zenKeepTasks"},{id:mG("chattab"),kind:"surface",surface:"chattab"},{id:mG("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 bE(J){return[...J.map((z)=>({id:kE(z),kind:"engine",vendor:z})),{id:"add-engine",kind:"engineAdd"}]}function IE(){return[{id:"feedback-title",kind:"feedbackTitle"},{id:"feedback-body",kind:"feedbackBody"},{id:"feedback-send",kind:"feedbackSend"}]}function qQ(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 pM(J,z){switch(J){case"general":return u7(z);case"engines":return bE(z.engineList);case"accounts":case"keys":return[];case"feedback":return IE();case"dev":return qQ(z.hasDaemon)}}function HQ(J,z){return J.findIndex((Z)=>Z.id===z)}function r9(J,z){return J[z]}var $Y;var w7=C(()=>{eX();$Y=[{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 _0}from"@opentui/core";function rM(J){let{theme:z}=I0();return(()=>{var Z=W("box");return G(Z,"flexDirection","column"),G(Z,"flexShrink",0),G(Z,"width",14),G(Z,"gap",1),K(Z,b(o0,{each:$Y,children:(Y,X)=>{let Q=()=>X()===J.cursor(),q=()=>Q()&&J.level()==="sidebar";return(()=>{var H=W("box"),j=W("text");return D(H,j),G(H,"paddingLeft",1),G(H,"paddingRight",1),G(H,"onMouseUp",()=>J.switchSection(Y.id)),G(j,"wrapMode","none"),K(j,()=>F(`settings.sections.${Y.id}`)),T((B)=>{var U=q()?z.primary:void 0,V=q()?z.selectedListItemText:Q()?z.accent:z.textMuted,f=Q()?_0.BOLD:void 0;return U!==B.e&&(B.e=G(H,"backgroundColor",U,B.e)),V!==B.t&&(B.t=G(j,"fg",V,B.t)),f!==B.a&&(B.a=G(j,"attributes",f,B.a)),B},{e:void 0,t:void 0,a:void 0}),H})()}})),Z})()}function oM(J){let z=I0(),{theme:Z}=z,Y=()=>u7({themeNames:J.themeNames(),focusAccentSlots:nY}),X=(P)=>HQ(Y(),P),Q=()=>X("transparent"),q=()=>X("toast"),H=()=>X("sound"),j=()=>X("zen-keep-tasks"),B=()=>X(mG("chattab")),U=()=>X(mG("taskpanel")),V=()=>X("editor-kind"),f=()=>X("editor-custom"),L=()=>X("worktree-base"),M=()=>X("worktree-custom"),A=()=>J.bodyRow()===Q(),N=()=>J.bodyRow()===q(),u=()=>J.bodyRow()===H(),h=()=>J.bodyRow()===j(),I=()=>J.bodyRow()===B(),R=()=>J.bodyRow()===U(),O=()=>J.bodyRow()===V(),S=()=>J.bodyRow()===f(),n=()=>J.bodyRow()===L(),i=()=>J.bodyRow()===M();return(()=>{var P=W("box"),a=W("text"),Y0=W("text"),Q0=W("box"),e=W("box"),v=W("text"),j0=W("text"),k=W("box"),o=W("text"),m=W("text"),g=W("box"),J0=W("text"),w=W("box"),_=W("text"),q0=W("text"),B0=W("box"),F0=W("text"),l0=W("text"),$0=W("box"),C0=W("text"),t0=R0(" "),O1=W("box"),j1=W("text"),J1=R0(" "),P0=W("box"),z1=W("text"),Q1=W("text"),k0=W("box"),s=W("text"),q1=R0(" "),c=W("box"),H0=W("text"),A0=W("text"),v0=W("box"),e0=W("text"),m0=R0(" "),Z1=W("box"),R1=W("text"),A1=R0(" "),X0=W("box"),G0=W("text"),f0=W("text"),N0=W("box"),W0=W("text"),T0=W("box"),g0=W("text"),n0=W("box"),b0=W("text"),y0=W("text"),Y1=W("box"),W1=W("text"),U1=W("box"),G1=W("text");return D(P,a),D(P,Y0),D(P,Q0),D(P,e),D(P,k),D(P,w),D(P,B0),D(P,P0),D(P,c),D(P,X0),D(P,n0),G(P,"flexDirection","column"),G(P,"gap",1),K(a,()=>F("settings.general.theme")),K(Y0,()=>F("settings.general.themeHint")),G(Q0,"flexDirection","column"),G(Q0,"gap",0),K(Q0,b(o0,{get each(){return J.themeNames()},children:(y,D0)=>{let f1=()=>J.level()==="body"&&J.bodyRow()===D0(),M1=()=>y===z.selected;return(()=>{var h0=W("box"),p0=W("text");return D(h0,p0),G(h0,"flexDirection","row"),G(h0,"gap",1),G(h0,"paddingLeft",1),G(h0,"paddingRight",1),G(h0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(D0()),J.setThemeCursor(D0()),J.selectTheme(y)}),G(p0,"wrapMode","none"),K(p0,()=>M1()?"\u25CF ":" ",null),K(p0,y,null),T((x0)=>{var $=f1()?Z.primary:void 0,O0=f1()?Z.selectedListItemText:M1()?Z.accent:Z.text,Z0=f1()||M1()?_0.BOLD:void 0;return $!==x0.e&&(x0.e=G(h0,"backgroundColor",$,x0.e)),O0!==x0.t&&(x0.t=G(p0,"fg",O0,x0.t)),Z0!==x0.a&&(x0.a=G(p0,"attributes",Z0,x0.a)),x0},{e:void 0,t:void 0,a:void 0}),h0})()}})),D(e,v),D(e,j0),G(e,"flexDirection","column"),G(e,"gap",0),G(e,"paddingTop",1),K(v,()=>F("settings.general.language")),G(j0,"wrapMode","word"),K(j0,()=>F("settings.general.languageHint")),K(e,b(o0,{each:oX,children:(y)=>{let D0=()=>X(x7(y.id)),f1=()=>J.level()==="body"&&J.bodyRow()===D0(),M1=()=>J.currentLocale()===y.id;return(()=>{var h0=W("box"),p0=W("text");return D(h0,p0),G(h0,"flexDirection","row"),G(h0,"gap",1),G(h0,"paddingLeft",1),G(h0,"paddingRight",1),G(h0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(D0()),J.selectLanguage(y.id)}),G(p0,"wrapMode","none"),K(p0,()=>M1()?"\u25CF ":" ",null),K(p0,()=>y.label,null),T((x0)=>{var $=f1()?Z.primary:void 0,O0=f1()?Z.selectedListItemText:M1()?Z.accent:Z.text,Z0=f1()||M1()?_0.BOLD:void 0;return $!==x0.e&&(x0.e=G(h0,"backgroundColor",$,x0.e)),O0!==x0.t&&(x0.t=G(p0,"fg",O0,x0.t)),Z0!==x0.a&&(x0.a=G(p0,"attributes",Z0,x0.a)),x0},{e:void 0,t:void 0,a:void 0}),h0})()}}),null),D(k,o),D(k,m),D(k,g),G(k,"flexDirection","column"),G(k,"gap",0),G(k,"paddingTop",1),K(o,()=>F("settings.general.transparent")),G(m,"wrapMode","word"),K(m,()=>F("settings.general.transparentHint")),D(g,J0),G(g,"flexDirection","row"),G(g,"paddingLeft",1),G(g,"paddingRight",1),G(g,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(Q()),J.toggleTransparent()}),G(J0,"wrapMode","none"),K(J0,(()=>{var y=L0(()=>!!z.transparentBackground);return()=>y()?F("settings.general.on"):F("settings.general.off")})()),D(w,_),D(w,q0),G(w,"flexDirection","column"),G(w,"gap",0),G(w,"paddingTop",1),K(_,()=>F("settings.general.focusAccent")),G(q0,"wrapMode","word"),K(q0,()=>F("settings.general.focusAccentHint")),K(w,b(o0,{each:nY,children:(y)=>{let D0=()=>X(E7(y)),f1=()=>J.level()==="body"&&J.bodyRow()===D0(),M1=()=>z.focusAccent===y;return(()=>{var h0=W("box"),p0=W("text");return D(h0,p0),G(h0,"flexDirection","row"),G(h0,"gap",1),G(h0,"paddingLeft",1),G(h0,"paddingRight",1),G(h0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(D0()),J.selectFocusAccent(y)}),G(p0,"wrapMode","none"),K(p0,()=>M1()?"\u25CF ":" ",null),K(p0,()=>F(`settings.general.accent${y.charAt(0).toUpperCase()}${y.slice(1)}`),null),T((x0)=>{var $=f1()?Z.primary:void 0,O0=f1()?Z.selectedListItemText:M1()?Z.focusAccent:Z.text,Z0=f1()||M1()?_0.BOLD:void 0;return $!==x0.e&&(x0.e=G(h0,"backgroundColor",$,x0.e)),O0!==x0.t&&(x0.t=G(p0,"fg",O0,x0.t)),Z0!==x0.a&&(x0.a=G(p0,"attributes",Z0,x0.a)),x0},{e:void 0,t:void 0,a:void 0}),h0})()}}),null),D(B0,F0),D(B0,l0),D(B0,$0),D(B0,O1),G(B0,"flexDirection","column"),G(B0,"gap",0),G(B0,"paddingTop",1),K(F0,()=>F("settings.general.notifications")),G(l0,"wrapMode","word"),K(l0,()=>F("settings.general.notificationsHint")),D($0,C0),G($0,"flexDirection","row"),G($0,"gap",1),G($0,"paddingLeft",1),G($0,"paddingRight",1),G($0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(q()),J.toggleToast()}),D(C0,t0),G(C0,"wrapMode","none"),K(C0,()=>J.toastEnabled()?"[x]":"[ ]",t0),K(C0,()=>F("settings.general.toast"),null),D(O1,j1),G(O1,"flexDirection","row"),G(O1,"gap",1),G(O1,"paddingLeft",1),G(O1,"paddingRight",1),G(O1,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(H()),J.toggleSound()}),D(j1,J1),G(j1,"wrapMode","none"),K(j1,()=>J.soundEnabled()?"[x]":"[ ]",J1),K(j1,()=>F("settings.general.sound"),null),D(P0,z1),D(P0,Q1),D(P0,k0),G(P0,"flexDirection","column"),G(P0,"gap",0),G(P0,"paddingTop",1),K(z1,()=>F("settings.general.zen")),G(Q1,"wrapMode","word"),K(Q1,()=>F("settings.general.zenHint")),D(k0,s),G(k0,"flexDirection","row"),G(k0,"gap",1),G(k0,"paddingLeft",1),G(k0,"paddingRight",1),G(k0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(j()),J.toggleZenKeepsTasks()}),D(s,q1),G(s,"wrapMode","none"),K(s,()=>J.zenKeepsTasks()?"[x]":"[ ]",q1),K(s,()=>F("settings.general.zenKeepTasks"),null),D(c,H0),D(c,A0),D(c,v0),D(c,Z1),G(c,"flexDirection","column"),G(c,"gap",0),G(c,"paddingTop",1),K(H0,()=>F("settings.general.surface")),G(A0,"wrapMode","word"),K(A0,()=>F("settings.general.surfaceHint")),D(v0,e0),G(v0,"flexDirection","row"),G(v0,"gap",1),G(v0,"paddingLeft",1),G(v0,"paddingRight",1),G(v0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(B()),J.selectSurface("chattab")}),D(e0,m0),G(e0,"wrapMode","none"),K(e0,()=>J.settingsSurface()==="chattab"?"[x]":"[ ]",m0),K(e0,()=>F("settings.general.surfaceChattab"),null),D(Z1,R1),G(Z1,"flexDirection","row"),G(Z1,"gap",1),G(Z1,"paddingLeft",1),G(Z1,"paddingRight",1),G(Z1,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(U()),J.selectSurface("taskpanel")}),D(R1,A1),G(R1,"wrapMode","none"),K(R1,()=>J.settingsSurface()==="taskpanel"?"[x]":"[ ]",A1),K(R1,()=>F("settings.general.surfaceTaskpanel"),null),D(X0,G0),D(X0,f0),D(X0,N0),D(X0,T0),G(X0,"flexDirection","column"),G(X0,"gap",0),G(X0,"paddingTop",1),K(G0,()=>F("settings.general.editor")),G(f0,"wrapMode","word"),K(f0,()=>F("settings.general.editorHint")),D(N0,W0),G(N0,"flexDirection","row"),G(N0,"gap",1),G(N0,"paddingLeft",1),G(N0,"paddingRight",1),G(N0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(V()),J.cycleEditorKind()}),G(W0,"wrapMode","none"),K(W0,()=>F("settings.general.editorRow",{kind:J.editorKind()})),D(T0,g0),G(T0,"flexDirection","row"),G(T0,"gap",1),G(T0,"paddingLeft",1),G(T0,"paddingRight",1),G(T0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(f()),J.editEditorCustom()}),G(g0,"wrapMode","none"),K(g0,()=>F("settings.general.editorCustom",{cmd:J.editorCustomCommand().trim()||F("settings.general.editorCustomUnset")})),D(n0,b0),D(n0,y0),D(n0,Y1),D(n0,U1),G(n0,"flexDirection","column"),G(n0,"gap",0),G(n0,"paddingTop",1),K(b0,()=>F("settings.general.worktree")),G(y0,"wrapMode","word"),K(y0,()=>F("settings.general.worktreeHint")),D(Y1,W1),G(Y1,"flexDirection","row"),G(Y1,"gap",1),G(Y1,"paddingLeft",1),G(Y1,"paddingRight",1),G(Y1,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(L()),J.cycleWorktreeBase()}),G(W1,"wrapMode","none"),K(W1,()=>F("settings.general.worktreeBase",{kind:J.worktreeKindLabel()})),D(U1,G1),G(U1,"flexDirection","row"),G(U1,"gap",1),G(U1,"paddingLeft",1),G(U1,"paddingRight",1),G(U1,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(M()),J.editWorktreeCustom()}),G(G1,"wrapMode","none"),K(G1,()=>F("settings.general.worktreeCustom",{path:J.worktreeCustomPath()||F("settings.general.worktreeCustomUnset")})),T((y)=>{var D0=Z.text,f1=_0.BOLD,M1=Z.textMuted,h0=Z.text,p0=_0.BOLD,x0=Z.textMuted,$=Z.text,O0=_0.BOLD,Z0=Z.textMuted,E=A()?Z.primary:void 0,K0=A()?Z.selectedListItemText:z.transparentBackground?Z.accent:Z.textMuted,x1=_0.BOLD,C1=Z.text,$1=_0.BOLD,m1=Z.textMuted,WJ=Z.text,_J=_0.BOLD,B1=Z.textMuted,l=N()?Z.primary:void 0,r=N()?Z.selectedListItemText:J.toastEnabled()?Z.accent:Z.textMuted,t=_0.BOLD,d=u()?Z.primary:void 0,c0=u()?Z.selectedListItemText:J.soundEnabled()?Z.accent:Z.textMuted,u0=_0.BOLD,M0=Z.text,d0=_0.BOLD,F1=Z.textMuted,b1=h()?Z.primary:void 0,AJ=h()?Z.selectedListItemText:J.zenKeepsTasks()?Z.accent:Z.textMuted,Mz=_0.BOLD,yZ=Z.text,KW=_0.BOLD,DW=Z.textMuted,LW=I()?Z.primary:void 0,FW=I()?Z.selectedListItemText:J.settingsSurface()==="chattab"?Z.accent:Z.textMuted,MW=_0.BOLD,OW=R()?Z.primary:void 0,AW=R()?Z.selectedListItemText:J.settingsSurface()==="taskpanel"?Z.accent:Z.textMuted,NW=_0.BOLD,RW=Z.text,CW=_0.BOLD,gW=Z.textMuted,kW=O()?Z.primary:void 0,bW=O()?Z.selectedListItemText:Z.accent,IW=_0.BOLD,SW=S()?Z.primary:void 0,yW=S()?Z.selectedListItemText:J.editorKind()==="custom"?Z.text:Z.textMuted,TW=Z.text,xW=_0.BOLD,EW=Z.textMuted,uW=n()?Z.primary:void 0,wW=n()?Z.selectedListItemText:Z.accent,PW=_0.BOLD,hW=i()?Z.primary:void 0,vW=i()?Z.selectedListItemText:J.worktreeKind()==="custom"?Z.text:Z.textMuted;return D0!==y.e&&(y.e=G(a,"fg",D0,y.e)),f1!==y.t&&(y.t=G(a,"attributes",f1,y.t)),M1!==y.a&&(y.a=G(Y0,"fg",M1,y.a)),h0!==y.o&&(y.o=G(v,"fg",h0,y.o)),p0!==y.i&&(y.i=G(v,"attributes",p0,y.i)),x0!==y.n&&(y.n=G(j0,"fg",x0,y.n)),$!==y.s&&(y.s=G(o,"fg",$,y.s)),O0!==y.h&&(y.h=G(o,"attributes",O0,y.h)),Z0!==y.r&&(y.r=G(m,"fg",Z0,y.r)),E!==y.d&&(y.d=G(g,"backgroundColor",E,y.d)),K0!==y.l&&(y.l=G(J0,"fg",K0,y.l)),x1!==y.u&&(y.u=G(J0,"attributes",x1,y.u)),C1!==y.c&&(y.c=G(_,"fg",C1,y.c)),$1!==y.w&&(y.w=G(_,"attributes",$1,y.w)),m1!==y.m&&(y.m=G(q0,"fg",m1,y.m)),WJ!==y.f&&(y.f=G(F0,"fg",WJ,y.f)),_J!==y.y&&(y.y=G(F0,"attributes",_J,y.y)),B1!==y.g&&(y.g=G(l0,"fg",B1,y.g)),l!==y.p&&(y.p=G($0,"backgroundColor",l,y.p)),r!==y.b&&(y.b=G(C0,"fg",r,y.b)),t!==y.T&&(y.T=G(C0,"attributes",t,y.T)),d!==y.A&&(y.A=G(O1,"backgroundColor",d,y.A)),c0!==y.O&&(y.O=G(j1,"fg",c0,y.O)),u0!==y.I&&(y.I=G(j1,"attributes",u0,y.I)),M0!==y.S&&(y.S=G(z1,"fg",M0,y.S)),d0!==y.W&&(y.W=G(z1,"attributes",d0,y.W)),F1!==y.C&&(y.C=G(Q1,"fg",F1,y.C)),b1!==y.B&&(y.B=G(k0,"backgroundColor",b1,y.B)),AJ!==y.v&&(y.v=G(s,"fg",AJ,y.v)),Mz!==y.k&&(y.k=G(s,"attributes",Mz,y.k)),yZ!==y.x&&(y.x=G(H0,"fg",yZ,y.x)),KW!==y.j&&(y.j=G(H0,"attributes",KW,y.j)),DW!==y.q&&(y.q=G(A0,"fg",DW,y.q)),LW!==y.z&&(y.z=G(v0,"backgroundColor",LW,y.z)),FW!==y.P&&(y.P=G(e0,"fg",FW,y.P)),MW!==y.H&&(y.H=G(e0,"attributes",MW,y.H)),OW!==y.F&&(y.F=G(Z1,"backgroundColor",OW,y.F)),AW!==y.M&&(y.M=G(R1,"fg",AW,y.M)),NW!==y.D&&(y.D=G(R1,"attributes",NW,y.D)),RW!==y.R&&(y.R=G(G0,"fg",RW,y.R)),CW!==y.E&&(y.E=G(G0,"attributes",CW,y.E)),gW!==y.L&&(y.L=G(f0,"fg",gW,y.L)),kW!==y.N&&(y.N=G(N0,"backgroundColor",kW,y.N)),bW!==y.G&&(y.G=G(W0,"fg",bW,y.G)),IW!==y.U&&(y.U=G(W0,"attributes",IW,y.U)),SW!==y.K&&(y.K=G(T0,"backgroundColor",SW,y.K)),yW!==y.V&&(y.V=G(g0,"fg",yW,y.V)),TW!==y.Y&&(y.Y=G(b0,"fg",TW,y.Y)),xW!==y.J&&(y.J=G(b0,"attributes",xW,y.J)),EW!==y.Q&&(y.Q=G(y0,"fg",EW,y.Q)),uW!==y.Z&&(y.Z=G(Y1,"backgroundColor",uW,y.Z)),wW!==y.X&&(y.X=G(W1,"fg",wW,y.X)),PW!==y._&&(y._=G(W1,"attributes",PW,y._)),hW!==y.$&&(y.$=G(U1,"backgroundColor",hW,y.$)),vW!==y.te&&(y.te=G(G1,"fg",vW,y.te)),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,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}),P})()}function sM(J){let{theme:z}=I0(),Z=()=>J.vendors.length;return(()=>{var Y=W("box"),X=W("text"),Q=W("text"),q=W("box"),H=W("box"),j=W("text");return D(Y,X),D(Y,Q),D(Y,q),G(Y,"flexDirection","column"),G(Y,"gap",1),K(X,()=>F("settings.engines.title")),G(Q,"wrapMode","word"),K(Q,()=>F("settings.engines.hint")),D(q,H),G(q,"flexDirection","column"),G(q,"gap",0),K(q,b(o0,{get each(){return J.vendors},children:(B,U)=>{let V=()=>J.level()==="body"&&J.bodyRow()===U();return(()=>{var f=W("box"),L=W("text"),M=W("text"),A=W("text");return D(f,L),D(f,M),D(f,A),G(f,"flexDirection","row"),G(f,"gap",1),G(f,"paddingLeft",1),G(f,"paddingRight",1),G(f,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(U()),J.editEngine(B)}),G(L,"wrapMode","none"),K(L,()=>J.isDefaultEngine(B)?"\u25CF":" "),G(M,"wrapMode","none"),K(M,()=>J.displayName(B)),G(A,"wrapMode","none"),K(A,()=>J.commandText(B),null),K(A,(()=>{var N=L0(()=>!!J.isDefault(B));return()=>N()?F("settings.engines.defaultTag"):L0(()=>!!J.isCustom(B))()?F("settings.engines.customTag"):""})(),null),T((N)=>{var u=V()?z.primary:void 0,h=V()?z.selectedListItemText:z.accent,I=_0.BOLD,R=V()?z.selectedListItemText:z.text,O=_0.BOLD,S=V()?z.selectedListItemText:J.isDefault(B)?z.textMuted:z.accent;return u!==N.e&&(N.e=G(f,"backgroundColor",u,N.e)),h!==N.t&&(N.t=G(L,"fg",h,N.t)),I!==N.a&&(N.a=G(L,"attributes",I,N.a)),R!==N.o&&(N.o=G(M,"fg",R,N.o)),O!==N.i&&(N.i=G(M,"attributes",O,N.i)),S!==N.n&&(N.n=G(A,"fg",S,N.n)),N},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),f})()}}),H),D(H,j),G(H,"flexDirection","row"),G(H,"paddingLeft",1),G(H,"paddingRight",1),G(H,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(Z()),J.onAddEngine()}),G(j,"wrapMode","none"),K(j,()=>F("settings.engines.addEngine")),T((B)=>{var U=z.text,V=_0.BOLD,f=z.textMuted,L=J.level()==="body"&&J.bodyRow()===Z()?z.primary:void 0,M=J.level()==="body"&&J.bodyRow()===Z()?z.selectedListItemText:z.primary;return U!==B.e&&(B.e=G(X,"fg",U,B.e)),V!==B.t&&(B.t=G(X,"attributes",V,B.t)),f!==B.a&&(B.a=G(Q,"fg",f,B.a)),L!==B.o&&(B.o=G(H,"backgroundColor",L,B.o)),M!==B.i&&(B.i=G(j,"fg",M,B.i)),B},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),Y})()}function tM(J){let{theme:z}=I0(),Z=(Y)=>Y.binary.found?`Binary: ${Y.binary.path}`:`Binary: ${Y.binary.error}`;return(()=>{var Y=W("box"),X=W("text"),Q=W("text"),q=W("box"),H=W("text"),j=W("box"),B=W("text"),U=W("box"),V=W("text");return D(Y,X),D(Y,Q),D(Y,q),D(Y,j),D(Y,U),G(Y,"flexDirection","column"),G(Y,"gap",1),K(X,()=>F("settings.accounts.title")),G(Q,"wrapMode","word"),K(Q,()=>F("settings.accounts.hint")),D(q,H),G(q,"flexDirection","column"),G(q,"gap",0),D(H,R0("claude-code")),K(q,b(z0,{get when(){return J.claudeStatus()===null},get children(){var f=W("text");return K(f,()=>F("settings.accounts.checking")),T((L)=>G(f,"fg",z.textMuted,L)),f}}),null),K(q,b(z0,{get when(){return J.claudeStatus()},children:(f)=>(()=>{var L=W("box"),M=W("text");return D(L,M),G(L,"flexDirection","column"),G(L,"gap",0),G(M,"wrapMode","word"),K(M,()=>Z(f())),K(L,()=>{let A=f().account;if(A.kind==="oauth"){let N=[A.organization,A.billingType].filter((u)=>!!u).join(" \xB7 ");return(()=>{var u=W("text");return G(u,"wrapMode","word"),K(u,()=>F("settings.accounts.loggedIn",{email:A.email}),null),K(u,N?` (${N})`:"",null),T((h)=>G(u,"fg",z.success,h)),u})()}return(()=>{var N=W("text");return K(N,()=>F("settings.accounts.notLoggedIn")),T((u)=>G(N,"fg",z.textMuted,u)),N})()},null),K(L,b(z0,{get when(){return f().accountError},children:(A)=>(()=>{var N=W("text");return G(N,"wrapMode","word"),K(N,()=>`! ${A()}`),T((u)=>G(N,"fg",z.warning,u)),N})()}),null),T((A)=>G(M,"fg",f().binary.found?z.textMuted:z.warning,A)),L})()}),null),D(j,B),G(j,"flexDirection","column"),G(j,"gap",0),D(B,R0("codex")),K(j,b(z0,{get when(){return J.codexStatus()===null},get children(){var f=W("text");return K(f,()=>F("settings.accounts.checking")),T((L)=>G(f,"fg",z.textMuted,L)),f}}),null),K(j,b(z0,{get when(){return J.codexStatus()},children:(f)=>(()=>{var L=W("box"),M=W("text");return D(L,M),G(L,"flexDirection","column"),G(L,"gap",0),G(M,"wrapMode","word"),K(M,()=>Z(f())),K(L,()=>{let A=f().account;if(A.kind==="chatgpt")return(()=>{var N=W("text");return G(N,"wrapMode","word"),K(N,()=>F("settings.accounts.chatgptLogin",{email:A.email}),null),K(N,(()=>{var u=L0(()=>!!A.plan);return()=>u()?` (${A.plan})`:""})(),null),T((u)=>G(N,"fg",z.success,u)),N})();if(A.kind==="apikey")return(()=>{var N=W("text");return K(N,()=>F("settings.accounts.apiKeyConfigured")),T((u)=>G(N,"fg",z.success,u)),N})();return(()=>{var N=W("text");return K(N,()=>F("settings.accounts.notLoggedIn")),T((u)=>G(N,"fg",z.textMuted,u)),N})()},null),K(L,b(z0,{get when(){return f().accountError},children:(A)=>(()=>{var N=W("text");return G(N,"wrapMode","word"),K(N,()=>`! ${A()}`),T((u)=>G(N,"fg",z.warning,u)),N})()}),null),T((A)=>G(M,"fg",f().binary.found?z.textMuted:z.warning,A)),L})()}),null),D(U,V),G(U,"flexDirection","column"),G(U,"gap",0),D(V,R0("copilot")),K(U,b(z0,{get when(){return J.copilotStatus()===null},get children(){var f=W("text");return K(f,()=>F("settings.accounts.checking")),T((L)=>G(f,"fg",z.textMuted,L)),f}}),null),K(U,b(z0,{get when(){return J.copilotStatus()},children:(f)=>(()=>{var L=W("box"),M=W("text");return D(L,M),G(L,"flexDirection","column"),G(L,"gap",0),G(M,"wrapMode","word"),K(M,()=>Z(f())),K(L,()=>{let A=f().account;if(A.kind==="token")return(()=>{var N=W("text");return K(N,()=>F("settings.accounts.tokenConfigured",{source:A.source})),T((u)=>G(N,"fg",z.success,u)),N})();if(A.kind==="oauth")return(()=>{var N=W("text");return K(N,()=>F("settings.accounts.copilotDetected")),T((u)=>G(N,"fg",z.success,u)),N})();return(()=>{var N=W("text");return K(N,()=>F("settings.accounts.notLoggedIn")),T((u)=>G(N,"fg",z.textMuted,u)),N})()},null),K(L,b(z0,{get when(){return f().accountError},children:(A)=>(()=>{var N=W("text");return G(N,"wrapMode","word"),K(N,()=>`! ${A()}`),T((u)=>G(N,"fg",z.warning,u)),N})()}),null),T((A)=>G(M,"fg",f().binary.found?z.textMuted:z.warning,A)),L})()}),null),T((f)=>{var L=z.text,M=_0.BOLD,A=z.textMuted,N=z.text,u=_0.BOLD,h=z.text,I=_0.BOLD,R=z.text,O=_0.BOLD;return L!==f.e&&(f.e=G(X,"fg",L,f.e)),M!==f.t&&(f.t=G(X,"attributes",M,f.t)),A!==f.a&&(f.a=G(Q,"fg",A,f.a)),N!==f.o&&(f.o=G(H,"fg",N,f.o)),u!==f.i&&(f.i=G(H,"attributes",u,f.i)),h!==f.n&&(f.n=G(B,"fg",h,f.n)),I!==f.s&&(f.s=G(B,"attributes",I,f.s)),R!==f.h&&(f.h=G(V,"fg",R,f.h)),O!==f.r&&(f.r=G(V,"attributes",O,f.r)),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}),Y})()}function eM(J){let{theme:z}=I0(),Z=()=>J.level()==="body",Y=()=>Z()&&J.bodyRow()===0,X=()=>Z()&&J.bodyRow()===1,Q=()=>Z()&&J.bodyRow()===2,q=(B)=>B?z.primary:z.textMuted,H=(B)=>B?_0.BOLD|_0.UNDERLINE:void 0,j;return E0(()=>{if(J.body()===""&&j&&j.plainText!=="")j.setText("")}),(()=>{var B=W("box"),U=W("text"),V=W("text"),f=W("box"),L=W("box"),M=W("text"),A=W("input"),N=W("box"),u=W("text"),h=W("textarea"),I=W("box"),R=W("text");return D(B,U),D(B,V),D(B,f),G(B,"flexDirection","column"),G(B,"gap",1),K(U,()=>F("settings.feedback.title")),G(V,"wrapMode","word"),K(V,()=>F("settings.feedback.hint")),D(f,L),D(f,N),D(f,I),G(f,"flexDirection","column"),G(f,"gap",1),D(L,M),D(L,A),G(L,"gap",0),K(M,()=>F("settings.feedback.titleLabel")),G(A,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(0)}),G(A,"onInput",(O)=>J.setTitle(xJ(O))),G(A,"onSubmit",()=>J.onTitleSubmit()),D(N,u),D(N,h),G(N,"gap",0),K(u,()=>F("settings.feedback.descriptionLabel")),Dz((O)=>{j=O},h),G(h,"height",4),G(h,"wrapMode","word"),G(h,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(1)}),G(h,"onContentChange",()=>J.setBody(j?.plainText??"")),D(I,R),G(I,"flexDirection","row"),G(I,"paddingLeft",1),G(I,"paddingRight",1),G(I,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(2),J.submit()}),K(R,()=>F("settings.feedback.send")),K(B,b(z0,{get when(){return J.status()},get children(){var O=W("text");return G(O,"wrapMode","word"),K(O,()=>J.status()),T((S)=>G(O,"fg",J.status().startsWith("error:")?z.warning:z.success,S)),O}}),null),T((O)=>{var S=z.text,n=_0.BOLD,i=z.textMuted,P=q(Y()),a=H(Y()),Y0=J.title(),Q0=F("settings.feedback.titlePlaceholder"),e=Y(),v=q(X()),j0=H(X()),k=J.body(),o=F("settings.feedback.descriptionPlaceholder"),m=X(),g=Q()?z.primary:z.backgroundElement,J0=Q()?z.selectedListItemText:z.accent,w=_0.BOLD;return S!==O.e&&(O.e=G(U,"fg",S,O.e)),n!==O.t&&(O.t=G(U,"attributes",n,O.t)),i!==O.a&&(O.a=G(V,"fg",i,O.a)),P!==O.o&&(O.o=G(M,"fg",P,O.o)),a!==O.i&&(O.i=G(M,"attributes",a,O.i)),Y0!==O.n&&(O.n=G(A,"value",Y0,O.n)),Q0!==O.s&&(O.s=G(A,"placeholder",Q0,O.s)),e!==O.h&&(O.h=G(A,"focused",e,O.h)),v!==O.r&&(O.r=G(u,"fg",v,O.r)),j0!==O.d&&(O.d=G(u,"attributes",j0,O.d)),k!==O.l&&(O.l=G(h,"initialValue",k,O.l)),o!==O.u&&(O.u=G(h,"placeholder",o,O.u)),m!==O.c&&(O.c=G(h,"focused",m,O.c)),g!==O.w&&(O.w=G(I,"backgroundColor",g,O.w)),J0!==O.m&&(O.m=G(R,"fg",J0,O.m)),w!==O.f&&(O.f=G(R,"attributes",w,O.f)),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,w:void 0,m:void 0,f:void 0}),B})()}function J3(J){let{theme:z}=I0(),Z=()=>J.level()==="body"&&J.bodyRow()===0,Y=()=>J.level()==="body"&&J.bodyRow()===1,X=()=>HQ(qQ(J.hasDaemon),"remote-projects"),Q=()=>J.level()==="body"&&J.bodyRow()===X(),q=()=>HQ(qQ(J.hasDaemon),"auto-status"),H=()=>J.level()==="body"&&J.bodyRow()===q(),j=()=>HQ(qQ(J.hasDaemon),"dispatcher"),B=()=>J.level()==="body"&&J.bodyRow()===j(),U=()=>HQ(qQ(J.hasDaemon),"archived-history"),V=()=>J.level()==="body"&&J.bodyRow()===U();return(()=>{var f=W("box"),L=W("text"),M=W("text"),A=W("box"),N=W("text"),u=W("text"),h=W("box"),I=W("text"),R=W("text"),O=W("box"),S=W("text"),n=W("text"),i=W("box"),P=W("text"),a=W("text"),Y0=W("box"),Q0=W("text"),e=W("text"),v=W("box"),j0=W("text");return D(f,L),D(f,M),D(f,A),D(f,u),D(f,h),G(f,"flexDirection","column"),G(f,"gap",1),K(L,()=>F("settings.dev.reset")),G(M,"wrapMode","word"),K(M,()=>F("settings.dev.resetHint")),D(A,N),G(A,"flexDirection","row"),G(A,"paddingLeft",1),G(A,"paddingRight",1),G(A,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(0),J.confirmReset()}),K(N,()=>F("settings.dev.resetButton")),K(f,b(z0,{get when(){return J.hasDaemon},get children(){var k=W("box"),o=W("text"),m=W("text"),g=W("box"),J0=W("text");return D(k,o),D(k,m),D(k,g),G(k,"flexDirection","column"),G(k,"gap",0),G(k,"paddingTop",1),K(o,()=>F("settings.dev.restart")),G(m,"wrapMode","word"),K(m,()=>F("settings.dev.restartHint")),D(g,J0),G(g,"flexDirection","row"),G(g,"paddingLeft",1),G(g,"paddingRight",1),G(g,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(1),J.confirmRestartDaemon()}),K(J0,()=>F("settings.dev.restartButton")),T((w)=>{var _=z.text,q0=_0.BOLD,B0=z.textMuted,F0=Y()?z.primary:z.backgroundElement,l0=Y()?z.selectedListItemText:z.accent,$0=_0.BOLD;return _!==w.e&&(w.e=G(o,"fg",_,w.e)),q0!==w.t&&(w.t=G(o,"attributes",q0,w.t)),B0!==w.a&&(w.a=G(m,"fg",B0,w.a)),F0!==w.o&&(w.o=G(g,"backgroundColor",F0,w.o)),l0!==w.i&&(w.i=G(J0,"fg",l0,w.i)),$0!==w.n&&(w.n=G(J0,"attributes",$0,w.n)),w},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),k}}),u),G(u,"wrapMode","word"),K(u,()=>F("settings.dev.doctorHint")),D(h,I),D(h,R),D(h,O),D(h,n),D(h,i),D(h,a),D(h,Y0),D(h,e),D(h,v),G(h,"flexDirection","column"),G(h,"gap",0),G(h,"paddingTop",1),K(I,()=>F("settings.dev.experimental")),G(R,"wrapMode","word"),K(R,()=>F("settings.dev.remoteHint")),D(O,S),G(O,"flexDirection","row"),G(O,"paddingLeft",1),G(O,"paddingRight",1),G(O,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(X()),J.toggleRemoteProjects()}),K(S,(()=>{var k=L0(()=>!!J.remoteProjectsEnabled());return()=>k()?F("settings.dev.remoteOn"):F("settings.dev.remoteOff")})()),G(n,"wrapMode","word"),K(n,()=>F("settings.dev.autoStatusHint")),D(i,P),G(i,"flexDirection","row"),G(i,"paddingLeft",1),G(i,"paddingRight",1),G(i,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(q()),J.toggleAutoStatus()}),K(P,(()=>{var k=L0(()=>!!J.autoStatusEnabled());return()=>k()?F("settings.dev.autoStatusOn"):F("settings.dev.autoStatusOff")})()),G(a,"wrapMode","word"),K(a,()=>F("settings.dev.dispatcherHint")),D(Y0,Q0),G(Y0,"flexDirection","row"),G(Y0,"paddingLeft",1),G(Y0,"paddingRight",1),G(Y0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(j()),J.toggleDispatcher()}),K(Q0,(()=>{var k=L0(()=>!!J.dispatcherEnabled());return()=>k()?F("settings.dev.dispatcherOn"):F("settings.dev.dispatcherOff")})()),G(e,"wrapMode","word"),K(e,()=>F("settings.dev.archivedHistoryHint")),D(v,j0),G(v,"flexDirection","row"),G(v,"paddingLeft",1),G(v,"paddingRight",1),G(v,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(U()),J.toggleArchivedHistory()}),K(j0,(()=>{var k=L0(()=>!!J.archivedHistoryEnabled());return()=>k()?F("settings.dev.archivedHistoryOn"):F("settings.dev.archivedHistoryOff")})()),T((k)=>{var o=z.text,m=_0.BOLD,g=z.textMuted,J0=Z()?z.primary:z.backgroundElement,w=Z()?z.selectedListItemText:z.warning,_=_0.BOLD,q0=z.textMuted,B0=z.text,F0=_0.BOLD,l0=z.textMuted,$0=Q()?z.primary:z.backgroundElement,C0=Q()?z.selectedListItemText:z.text,t0=J.remoteProjectsEnabled()?_0.BOLD:void 0,O1=z.textMuted,j1=H()?z.primary:z.backgroundElement,J1=H()?z.selectedListItemText:z.text,P0=J.autoStatusEnabled()?_0.BOLD:void 0,z1=z.textMuted,Q1=B()?z.primary:z.backgroundElement,k0=B()?z.selectedListItemText:z.text,s=J.dispatcherEnabled()?_0.BOLD:void 0,q1=z.textMuted,c=V()?z.primary:z.backgroundElement,H0=V()?z.selectedListItemText:z.text,A0=J.archivedHistoryEnabled()?_0.BOLD:void 0;return o!==k.e&&(k.e=G(L,"fg",o,k.e)),m!==k.t&&(k.t=G(L,"attributes",m,k.t)),g!==k.a&&(k.a=G(M,"fg",g,k.a)),J0!==k.o&&(k.o=G(A,"backgroundColor",J0,k.o)),w!==k.i&&(k.i=G(N,"fg",w,k.i)),_!==k.n&&(k.n=G(N,"attributes",_,k.n)),q0!==k.s&&(k.s=G(u,"fg",q0,k.s)),B0!==k.h&&(k.h=G(I,"fg",B0,k.h)),F0!==k.r&&(k.r=G(I,"attributes",F0,k.r)),l0!==k.d&&(k.d=G(R,"fg",l0,k.d)),$0!==k.l&&(k.l=G(O,"backgroundColor",$0,k.l)),C0!==k.u&&(k.u=G(S,"fg",C0,k.u)),t0!==k.c&&(k.c=G(S,"attributes",t0,k.c)),O1!==k.w&&(k.w=G(n,"fg",O1,k.w)),j1!==k.m&&(k.m=G(i,"backgroundColor",j1,k.m)),J1!==k.f&&(k.f=G(P,"fg",J1,k.f)),P0!==k.y&&(k.y=G(P,"attributes",P0,k.y)),z1!==k.g&&(k.g=G(a,"fg",z1,k.g)),Q1!==k.p&&(k.p=G(Y0,"backgroundColor",Q1,k.p)),k0!==k.b&&(k.b=G(Q0,"fg",k0,k.b)),s!==k.T&&(k.T=G(Q0,"attributes",s,k.T)),q1!==k.A&&(k.A=G(e,"fg",q1,k.A)),c!==k.O&&(k.O=G(v,"backgroundColor",c,k.O)),H0!==k.I&&(k.I=G(j0,"fg",H0,k.I)),A0!==k.S&&(k.S=G(j0,"attributes",A0,k.S)),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}),f})()}function z3(){let{theme:J}=I0(),z=vF(),Z=Object.keys(s8).sort();return(()=>{var Y=W("box"),X=W("text"),Q=W("text"),q=W("box"),H=W("text"),j=W("text"),B=W("text"),U=W("text");return D(Y,X),D(Y,Q),D(Y,q),D(Y,B),D(Y,U),G(Y,"flexDirection","column"),G(Y,"gap",1),K(X,()=>F("settings.keybindings.title")),G(Q,"wrapMode","word"),K(Q,()=>F("settings.keybindings.hint")),D(q,H),D(q,j),G(q,"flexDirection","column"),G(q,"gap",0),K(H,()=>F("settings.keybindings.configFile")),G(j,"wrapMode","word"),K(j,()=>z.path,null),K(j,(()=>{var V=L0(()=>!!z.exists);return()=>V()?"":F("settings.keybindings.notCreated")})(),null),K(Y,b(z0,{get when(){return!z.exists},get children(){var V=W("box"),f=W("text"),L=W("text"),M=W("text"),A=W("text"),N=W("text"),u=W("text"),h=W("text"),I=W("text"),R=W("text"),O=W("text");return D(V,f),D(V,L),D(V,M),D(V,A),D(V,N),D(V,u),D(V,h),D(V,I),D(V,R),D(V,O),G(V,"flexDirection","column"),G(V,"gap",0),K(f,()=>F("settings.keybindings.example")),D(L,R0("bindings:")),D(M,R0(" chat.fork.new: ctrl+g # string = one chord")),D(A,R0(" sidebar.select: [enter] # list = several chords")),D(N,R0(" files.createPR: null # null = unbind")),D(u,R0(" tmux.tab.new: ctrl+y # tmux session key (see below)")),D(h,R0(" tmux.layout.workspaceSplit: g # prefix g")),D(I,R0("darwin: # platform overlay (also: linux)")),D(R,R0(" bindings:")),D(O,R0(" palette.open: [cmd+p, ctrl+p]")),T((S)=>{var n=J.text,i=_0.BOLD,P=J.textMuted,a=J.textMuted,Y0=J.textMuted,Q0=J.textMuted,e=J.textMuted,v=J.textMuted,j0=J.textMuted,k=J.textMuted,o=J.textMuted;return n!==S.e&&(S.e=G(f,"fg",n,S.e)),i!==S.t&&(S.t=G(f,"attributes",i,S.t)),P!==S.a&&(S.a=G(L,"fg",P,S.a)),a!==S.o&&(S.o=G(M,"fg",a,S.o)),Y0!==S.i&&(S.i=G(A,"fg",Y0,S.i)),Q0!==S.n&&(S.n=G(N,"fg",Q0,S.n)),e!==S.s&&(S.s=G(u,"fg",e,S.s)),v!==S.h&&(S.h=G(h,"fg",v,S.h)),j0!==S.r&&(S.r=G(I,"fg",j0,S.r)),k!==S.d&&(S.d=G(R,"fg",k,S.d)),o!==S.l&&(S.l=G(O,"fg",o,S.l)),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}),V}}),B),K(Y,b(z0,{get when(){return z.exists},get children(){var V=W("box"),f=W("text");return D(V,f),G(V,"flexDirection","column"),G(V,"gap",0),K(f,()=>F("settings.keybindings.overridesApplied")),K(V,b(z0,{get when(){return z.applied.length===0},get children(){var L=W("text");return K(L,()=>F("settings.keybindings.none")),T((M)=>G(L,"fg",J.textMuted,M)),L}}),null),K(V,b(o0,{get each(){return z.applied},children:(L)=>(()=>{var M=W("text");return G(M,"wrapMode","word"),K(M,()=>`${L.id} \u2192 ${L.keys.length>0?L.keys.join(" / "):"(unbound)"} (default: ${L.defaultKeys.join(" / ")})`),T((A)=>G(M,"fg",J.text,A)),M})()}),null),T((L)=>{var M=J.text,A=_0.BOLD;return M!==L.e&&(L.e=G(f,"fg",M,L.e)),A!==L.t&&(L.t=G(f,"attributes",A,L.t)),L},{e:void 0,t:void 0}),V}}),B),K(Y,b(z0,{get when(){return z.warnings.length>0},get children(){var V=W("box"),f=W("text");return D(V,f),G(V,"flexDirection","column"),G(V,"gap",0),K(f,()=>F("settings.keybindings.warnings")),K(V,b(o0,{get each(){return z.warnings},children:(L)=>(()=>{var M=W("text");return G(M,"wrapMode","word"),K(M,`! ${L}`),T((A)=>G(M,"fg",J.warning,A)),M})()}),null),T((L)=>{var M=J.warning,A=_0.BOLD;return M!==L.e&&(L.e=G(f,"fg",M,L.e)),A!==L.t&&(L.t=G(f,"attributes",A,L.t)),L},{e:void 0,t:void 0}),V}}),B),D(B,R0("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.")),G(B,"wrapMode","word"),G(U,"wrapMode","word"),K(U,()=>`Fixed (not rebindable): ${Z.join(", ")}.`),T((V)=>{var f=J.text,L=_0.BOLD,M=J.textMuted,A=J.text,N=_0.BOLD,u=J.textMuted,h=J.textMuted,I=J.textMuted;return f!==V.e&&(V.e=G(X,"fg",f,V.e)),L!==V.t&&(V.t=G(X,"attributes",L,V.t)),M!==V.a&&(V.a=G(Q,"fg",M,V.a)),A!==V.o&&(V.o=G(H,"fg",A,V.o)),N!==V.i&&(V.i=G(H,"attributes",N,V.i)),u!==V.n&&(V.n=G(j,"fg",u,V.n)),h!==V.s&&(V.s=G(B,"fg",h,V.s)),I!==V.h&&(V.h=G(U,"fg",I,V.h)),V},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0}),Y})()}var Z3=C(()=>{x();x();x();x();x();x();x();x();x();H1();q7();P1();t1();eX();G9();JQ();w7()});import{accessSync as SE,constants as yE,mkdirSync as TE}from"fs";import{TextAttributes as xE}from"@opentui/core";function EE(J){return J.split(/[-_]+/).filter((z)=>z.length>0).map((z)=>z.charAt(0).toUpperCase()+z.slice(1)).join(" ")}function aY(J){let z=i1(),Z=I0(),Y=HJ(),{theme:X}=Z,[Q,q]=p("sidebar"),[H,j]=p("general"),[B,U]=p(0),[V,f]=p(0),[L,M]=p(""),[A,N]=p(""),[u,h]=p(""),I=U0(()=>Z.all().slice().sort()),[,R]=p(Math.max(0,I().findIndex((E)=>E===Z.selected))),O=$M(J.orchestrator),[S,n]=p(null),[i,P]=p(null),[a,Y0]=p(null),Q0=!1;E0(()=>{if(H()!=="accounts"||Q0)return;Q0=!0,Aq().then(n),Nq().then(P),Rq().then(Y0)});function e(){return pM(H(),{themeNames:I(),focusAccentSlots:nY,engineList:q1(),hasDaemon:O})}function v(){return e().length}function j0(){return SY(J.kv.get(OZ,IY))}function k(E){if(Z.selected===E)return;if(!Z.set(E))return;J.kv.set("activeTheme",E),J.onVisualPrefsChange?.()}function o(){return cV()}function m(E){if(cV()===E)return;SG(E),J.kv.set(P9,E),J.onVisualPrefsChange?.()}function g(E){if(Z.transparentBackground===E)return;Z.setTransparentBackground(E),J.kv.set("transparentBackground",E),J.onVisualPrefsChange?.()}function J0(){g(!Z.transparentBackground)}function w(E){if(Z.focusAccent===E)return;Z.setFocusAccent(E),J.kv.set("focusAccent",E),J.onVisualPrefsChange?.()}function _(E){J.kv.set(OZ,E)}function q0(){return J.kv.get("notifications.toast.enabled",!0)!==!1}function B0(){return J.kv.get("notifications.sound.enabled",!0)!==!1}function F0(){J.kv.set("notifications.toast.enabled",!q0())}function l0(){J.kv.set("notifications.sound.enabled",!B0())}function $0(){return J.kv.get(Bq,!0)!==!1}function C0(){J.kv.set(Bq,!$0())}function t0(){return J.kv.get("experimental.remoteProjects",!1)===!0}function O1(){J.kv.set("experimental.remoteProjects",!t0())}function j1(){return J.kv.get(FY,!1)===!0}function J1(){J.kv.set(FY,!j1())}function P0(){return J.kv.get(MY,!1)===!0}function z1(){J.kv.set(MY,!P0())}function Q1(){return J.kv.get(KG,!1)===!0}function k0(){J.kv.set(KG,!Q1())}function s(){let E=J.kv.get("customEngineIds",[]);return Array.isArray(E)?E.filter((K0)=>typeof K0==="string"&&K0.trim().length>0):[]}function q1(){return[...e1,...s()]}function c(E){let K0=J.kv.get(gz(E),"");return typeof K0==="string"?K0.trim():""}function H0(E){return c(E)||yQ(E).join(" ")}function A0(E){return LJ(E)&&c(E).length===0&&!e0(E)}function v0(E){let K0=J.kv.get(kz(E),"");return typeof K0==="string"?K0.trim():""}function e0(E){return v0(E).length>0}function m0(E){return v0(E)||BB[E]||E}let[Z1,R1]=p(pJ(E1("lastSelectedVendor"),s()));function A1(E){return Z1()===E}function X0(E){jJ("lastSelectedVendor",E),J.kv.set("lastSelectedVendor",E),R1(E)}async function G0(E){let K0=await XZ.show(z,H0(E),{dialogTitle:`${m0(E)} launch command`,fieldLabel:"command",submitLabel:"save",allowEmpty:!0});if(K0===void 0)return;J.kv.set(gz(E),K0.trim())}async function f0(E){let K0=await XZ.show(z,m0(E),{dialogTitle:`${m0(E)} display name (blank = default)`,fieldLabel:"name",submitLabel:"save",allowEmpty:!0});if(K0===void 0)return;J.kv.set(kz(E),K0.trim())}function N0(E){if(J.kv.set(gz(E),""),J.kv.set(kz(E),""),!LJ(E))J.kv.set("customEngineIds",s().filter((K0)=>K0!==E)),f((K0)=>Math.max(0,Math.min(K0,q1().length)))}async function W0(){let E=await XZ.show(z,"",{dialogTitle:"Add engine",fieldLabel:"id",submitLabel:"next",placeholder:"lowercase slug, e.g. aider"});if(E===void 0)return;let K0=E.trim().toLowerCase();if(!K0||LJ(K0)||s().includes(K0))return;let x1=await XZ.show(z,"",{dialogTitle:`Add engine \xB7 ${K0}`,fieldLabel:"command",submitLabel:"next",placeholder:"e.g. aider --model sonnet"});if(x1===void 0)return;let C1=await XZ.show(z,K0,{dialogTitle:`Add engine \xB7 ${K0}`,fieldLabel:"name",submitLabel:"add",allowEmpty:!0});if(J.kv.set("customEngineIds",[...s(),K0]),x1.trim())J.kv.set(gz(K0),x1.trim());let $1=C1?.trim()??"";J.kv.set(kz(K0),$1&&$1!==K0?$1:EE(K0))}function T0(){if(H()!=="engines"||Q()!=="body")return null;let E=r9(e(),V());return E?.kind==="engine"?E.vendor:null}function g0(){return EX(J.kv.get(MZ,cH))}function n0(){let E=bY.indexOf(g0()),K0=bY[(E+1)%bY.length];if(K0)J.kv.set(MZ,K0)}function b0(){let E=J.kv.get(sZ,"");return typeof E==="string"?E:""}async function y0(){let E=await XZ.show(z,b0(),{dialogTitle:"Custom editor command (use {file} for the path)",fieldLabel:"command",submitLabel:"save",allowEmpty:!0});if(E===void 0)return;let K0=E.trim();if(J.kv.set(sZ,K0),K0)J.kv.set(MZ,"custom")}function Y1(){let E=J.kv.get(_Z,"");return typeof E==="string"?E:""}let W1=()=>A5(Y1());function U1(){let E=W1();if(E==="default")return F("settings.general.worktreeKindDefault");if(E==="nextToProject")return F("settings.general.worktreeKindNext");return F("settings.general.worktreeKindCustom")}function G1(){let E=J.kv.get(FH,"");return(typeof E==="string"?E.trim():"")||(W1()==="custom"?Y1().trim():"")}function y(){let E=W1();if(E==="default")J.kv.set(_Z,vB);else if(E==="nextToProject")J.kv.set(_Z,G1());else J.kv.set(FH,Y1().trim()),J.kv.set(_Z,"")}async function D0(){let E=await XZ.show(z,G1(),{dialogTitle:F("settings.general.worktreeBaseTitle"),fieldLabel:F("settings.general.worktreeBaseField"),submitLabel:"save",placeholder:`${FZ}/../worktrees`,allowEmpty:!0});if(E===void 0)return;let K0=E.trim();if(K0.includes(FZ)){if(!mB(K0)){await OJ.show(z,"Can't use that worktree location",`${FZ} only expands as the leading path segment (e.g. ${FZ}/../kobe-worktrees). Keeping the previous setting.`,"cancel");return}}else if(K0){let x1=cB(K0)??K0;try{TE(x1,{recursive:!0}),SE(x1,yE.W_OK)}catch(C1){await OJ.show(z,"Can't use that worktree location",`${x1} isn't usable (${C1 instanceof Error?C1.message:String(C1)}). Keeping the previous setting \u2014 pick a writable directory.`,"cancel");return}}if(J.kv.set(FH,K0),K0)J.kv.set(_Z,K0);else if(W1()==="custom")J.kv.set(_Z,"")}async function f1(){h("submitting...");try{let E=GQ({title:L(),body:A()});h(`sent: ${E.url}`),M(""),N(""),f(0)}catch(E){h(`error: ${E instanceof Error?E.message:String(E)}`)}}let M1=()=>H()==="feedback"&&Q()==="body";function h0(E){let K0=V()+E;if(K0<0||K0>2){q("sidebar");return}f(K0)}function p0(){if(Q()!=="sidebar"||v()===0)return;if(q("body"),f(0),H()==="general")R(0)}function x0(E){if(Q()==="sidebar"){let C1=(B()+E+$Y.length)%$Y.length;U(C1);let $1=$Y[C1];if($1)j($1.id),f(0);return}let K0=v();if(K0===0)return;let x1=(V()+E+K0)%K0;if(f(x1),r9(e(),x1)?.kind==="theme")R(x1)}function $(E){j(E),U($Y.findIndex((K0)=>K0.id===E)),f(0),q("sidebar")}let O0={theme:(E)=>k(E.name),language:(E)=>m(E.locale),transparent:()=>J0(),focusAccent:(E)=>w(E.slot),toast:()=>F0(),sound:()=>l0(),zenKeepTasks:()=>C0(),surface:(E)=>_(E.surface),editorKind:()=>n0(),editorCustom:()=>void y0(),worktreeBase:()=>y(),worktreeCustom:()=>void D0(),engine:(E)=>void G0(E.vendor),engineAdd:()=>void W0(),feedbackTitle:()=>f(0),feedbackBody:()=>f(1),feedbackSend:()=>void f1(),devReset:()=>void y7(z,J.kv,Y),devRestartDaemon:()=>void T7(z,J.orchestrator,Y),devRemoteProjects:()=>O1(),devAutoStatus:()=>J1(),devDispatcher:()=>z1(),devArchivedHistory:()=>k0()};function Z0(){let E=r9(e(),V());if(!E)return;O0[E.kind](E)}return L1(()=>({enabled:(!J.standalone||z.stack.length===0)&&!M1(),bindings:[{key:"down",cmd:()=>x0(1)},{key:"up",cmd:()=>x0(-1)},{key:"j",cmd:()=>x0(1)},{key:"k",cmd:()=>x0(-1)},{key:"tab",cmd:()=>x0(1)},{key:"right",cmd:p0},{key:"l",cmd:p0},{key:"left",cmd:()=>q("sidebar")},{key:"h",cmd:()=>q("sidebar")},{key:"return",cmd:()=>{if(Q()==="sidebar"){p0();return}Z0()}},{key:"t",cmd:J0},{key:"r",cmd:()=>{let E=T0();if(E)f0(E)}},{key:"x",cmd:()=>{let E=T0();if(E)N0(E)}},{key:"d",cmd:()=>{let E=T0();if(E)X0(E)}}]})),L1(()=>({enabled:M1(),bindings:[{key:"tab",cmd:()=>h0(1)},{key:"shift+tab",cmd:()=>h0(-1)}]})),L1(()=>({enabled:M1()&&V()===2,bindings:[{key:"return",cmd:()=>void f1()}]})),(()=>{var E=W("box"),K0=W("box"),x1=W("text"),C1=W("text"),$1=W("box"),m1=W("box"),WJ=W("box"),_J=W("text");return D(E,K0),D(E,$1),D(E,WJ),G(E,"paddingLeft",2),G(E,"paddingRight",2),G(E,"paddingBottom",1),G(E,"gap",1),D(K0,x1),D(K0,C1),G(K0,"flexDirection","row"),G(K0,"justifyContent","space-between"),K(x1,()=>F("settings.title")),G(C1,"onMouseUp",()=>J.onClose()),K(C1,()=>F("settings.esc")),D($1,m1),G($1,"flexDirection","row"),G($1,"gap",2),K($1,b(rM,{level:Q,cursor:B,switchSection:$}),m1),G(m1,"flexGrow",1),G(m1,"flexShrink",1),G(m1,"flexDirection","column"),G(m1,"gap",1),K(m1,b(z0,{get when(){return H()==="general"},get children(){return b(oM,{level:Q,bodyRow:V,setLevel:q,setBodyRow:f,themeNames:I,setThemeCursor:R,selectTheme:k,currentLocale:o,selectLanguage:m,toggleTransparent:J0,selectFocusAccent:w,toastEnabled:q0,soundEnabled:B0,toggleToast:F0,toggleSound:l0,zenKeepsTasks:$0,toggleZenKeepsTasks:C0,settingsSurface:j0,selectSurface:_,editorKind:g0,cycleEditorKind:n0,editorCustomCommand:b0,editEditorCustom:()=>void y0(),worktreeKind:W1,worktreeKindLabel:U1,cycleWorktreeBase:y,worktreeCustomPath:G1,editWorktreeCustom:()=>void D0()})}}),null),K(m1,b(z0,{get when(){return H()==="engines"},get children(){return b(sM,{level:Q,bodyRow:V,setLevel:q,setBodyRow:f,get vendors(){return q1()},isCustom:(B1)=>!LJ(B1),displayName:m0,commandText:H0,isDefault:A0,isDefaultEngine:A1,editEngine:(B1)=>void G0(B1),renameEngine:(B1)=>void f0(B1),resetEngine:N0,onAddEngine:()=>void W0()})}}),null),K(m1,b(z0,{get when(){return H()==="accounts"},get children(){return b(tM,{claudeStatus:S,codexStatus:i,copilotStatus:a})}}),null),K(m1,b(z0,{get when(){return H()==="keys"},get children(){return b(z3,{})}}),null),K(m1,b(z0,{get when(){return H()==="feedback"},get children(){return b(eM,{level:Q,bodyRow:V,setLevel:q,setBodyRow:f,title:L,setTitle:(B1)=>{M(B1),h("")},body:A,setBody:(B1)=>{N(B1),h("")},status:u,onTitleSubmit:()=>f(1),submit:()=>void f1()})}}),null),K(m1,b(z0,{get when(){return H()==="dev"},get children(){return b(J3,{level:Q,bodyRow:V,setLevel:q,setBodyRow:f,hasDaemon:O,confirmReset:()=>void y7(z,J.kv,Y),confirmRestartDaemon:()=>void T7(z,J.orchestrator,Y),remoteProjectsEnabled:t0,toggleRemoteProjects:O1,autoStatusEnabled:j1,toggleAutoStatus:J1,dispatcherEnabled:P0,toggleDispatcher:z1,archivedHistoryEnabled:Q1,toggleArchivedHistory:k0})}}),null),D(WJ,_J),G(WJ,"paddingTop",0),K(_J,(()=>{var B1=L0(()=>!!M1());return()=>B1()?F("settings.nav.feedback"):F("settings.nav.default")})()),T((B1)=>{var l=xE.BOLD,r=X.text,t=X.textMuted,d=X.textMuted;return l!==B1.e&&(B1.e=G(x1,"attributes",l,B1.e)),r!==B1.t&&(B1.t=G(x1,"fg",r,B1.t)),t!==B1.a&&(B1.a=G(C1,"fg",t,B1.a)),d!==B1.o&&(B1.o=G(_J,"fg",d,B1.o)),B1},{e:void 0,t:void 0,a:void 0,o:void 0}),E})()}var P7=C(()=>{x();x();x();x();x();x();x();x();H1();fY();eJ();p9();z9();SQ();wq();I1();dB();uj();s1();P1();t1();dH();TJ();B7();aJ();vG();I7();_M();w7();Z3();aY.show=(J,z,Z)=>{let Y=!1;return new Promise((X)=>{J.replace(()=>b(aY,{kv:z,orchestrator:Z,onVisualPrefsChange:()=>{Y=!0},onClose:()=>X({visualPrefsChanged:Y})}),()=>X({visualPrefsChanged:Y}))})}});import{spawn as uE}from"child_process";import{existsSync as wE}from"fs";import{basename as PE,delimiter as hE,isAbsolute as vE,join as mE}from"path";function h7(J,z,Z){if(vE(J))return Z(J);let Y=z.PATH??"";for(let X of Y.split(hE)){if(!X)continue;if(Z(mE(X,J)))return!0}return!1}function nE(J){let z=PE(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 Y3(J={}){let z=J.env??process.env,Z=J.platform??process.platform,Y=J.exists??wE,X=z.KOBE_OPEN_EDITOR?.trim();if(X)return{id:"env",label:nE(X),command:X,args:[]};for(let Q of cE)if(h7(Q.command,z,Y))return{id:Q.id,label:Q.label,command:Q.command,args:[]};if(Z==="darwin"&&h7("open",z,Y)){for(let Q of dE)if(Q.paths.some((q)=>Y(q)))return{id:Q.id,label:Q.label,command:"open",args:["-a",Q.appName]};return{id:"mac-open",label:"Finder",command:"open",args:[]}}if(Z==="linux"&&h7("xdg-open",z,Y))return{id:"xdg-open",label:"Open",command:"xdg-open",args:[]};return null}function iE(J,z){return[z.command,[...z.args,J]]}function X3(J,z,Z={}){if(!J)return!1;let Y=Z.spawn??uE,[X,Q]=iE(J,z);try{let q=Y(X,Q,{detached:!0,stdio:"ignore"});if(q.pid===void 0)return!1;return q.unref(),!0}catch{return!1}}var cE,dE;var Q3=C(()=>{cE=[{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"}],dE=[{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"]}]});import{existsSync as G3}from"fs";function q3(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})}async function H3(J){if(SY(J.kv.get(OZ,IY))==="chattab"){let Y=await SJ();if(Y){await HG(Y);return}}if(!(await aY.show(J.dialog,J.kv,J.orch??void 0)).visualPrefsChanged)return;if(!J.kv.flush())return;try{let Y=await SJ();if(Y)await KX(Y)}catch(Y){console.error("[kobe tasks] failed to refresh workspace panes:",Y)}}async function j3(J){let z=await SJ();if(z){await BG(z);return}QQ.show(J.dialog)}async function B3(){let J=await SJ();if(!J)return;await jG(J)}async function V3(J){if(!J.updateInfo()?.hasUpdate){J.notifyInfo(F("tasks.toast.alreadyLatest",{version:a0}));return}let Z=await SJ();if(!Z)return;await WG(Z)}async function W3(J,z){let Y=J.tasks().find((Q)=>Q.id===z)?.worktreePath;if(!Y||!G3(Y)){if(!J.orch){console.error("[kobe tasks] no daemon; cannot materialise worktree"),J.notifyError(F("tasks.toast.noDaemonWorktree"));return}try{Y=await J.orch.ensureWorktree(z)}catch(Q){console.error("[kobe tasks] task.ensureWorktree failed:",Q),J.notifyError(q3(Q));return}await J.reload()}if(!Y||!G3(Y))return;let X=Y3();if(!X){console.error("[kobe tasks] no editor/opener found; set KOBE_OPEN_EDITOR"),J.notifyError(F("tasks.toast.noEditor"));return}if(!X3(Y,X))console.error(`[kobe tasks] failed to open worktree with ${X.label}`),J.notifyError(F("tasks.toast.openWorktreeFailed",{label:X.label}))}async function U3(){if(!process.env.TMUX_PANE)return;let J=await SJ();if(!J)return;let z=await cX(J);if(!z)return;await w0(["select-pane","-t",z])}async function f3(J,z,Z){let Y=J.tasks().find((X)=>X.id===z);if(!Y||Y.kind==="main"||!J.orch)return;try{await J.orch.moveTask(z,Z)}catch(X){console.error("[kobe tasks] task.move failed:",X),J.notifyError(F("tasks.toast.moveTaskFailed",{message:X instanceof Error?X.message:String(X)}));return}J.setSelectedId(z),await J.reload()}async function K3(J,z){if(!J.orch)return;try{await J.orch.setPinned(z)}catch(Z){console.error("[kobe tasks] task.pin failed:",Z);return}await J.reload()}async function v7(J,z,Z){let Y=J.tasks().find((Q)=>Q.id===Z);if(!Y)return;let X=++z.token;try{await f7(J.orch,Y,Y.repo,Y.vendor,{includeInitPrompt:!0,heal:!0,captureFrom:!0,reload:()=>J.reload(),isCurrent:()=>z.token===X})}catch(Q){if(Q instanceof kZ)if(Q.phase==="no-daemon")J.notifyError(F("tasks.toast.noDaemonOpen"));else if(Q.phase==="worktree")J.notifyError(q3(Q.cause??Q));else J.notifyError(F("tasks.toast.sessionStartFailed"));else console.error("[kobe tasks] switchTo failed:",Q)}}async function D3(J,z,Z){let{togglePreviewMode:Y}=await Promise.resolve().then(() => (W7(),V7));Y(Z),await nJ(T1(Z)),await v7(J,z,Z)}function L3(J){return{orch:J.orch,tasks:()=>J.tasks(),confirm:async(z)=>await OJ.show(J.dialog,z.title,z.body,z.cancelLabel,z.confirmLabel)===!0,promptText:(z,Z)=>XZ.show(J.dialog,z,Z),logger:console,logPrefix:"[kobe tasks]",notifyError:J.notifyError,notifyInfo:J.notifyInfo,reload:()=>J.reload(),switchBeforeKill:!0,updateActiveTask:!0,onTaskDeleted:(z,Z)=>{if(J.selectedId()!==z)return;let Y=J.tasks();J.setSelectedId(Z?.id??(Y.find((X)=>!X.archived)??Y[0])?.id??null)},promptNewTask:(z,Z,Y)=>b9.show(J.dialog,z,Z,Y),cursorRepo:()=>{let z=J.tasks();return(z.find((Z)=>Z.id===J.selectedId())??z[0])?.repo},lastVendor:()=>pJ(E1("lastSelectedVendor"),oJ()),rememberVendor:(z)=>jJ("lastSelectedVendor",z),openCreateSurface:async(z)=>{if(SY(J.kv.get(OZ,IY))!=="chattab")return!1;let Y=await SJ();if(!Y)return!1;return await VG(Y,z),!0},selectTask:(z)=>J.setSelectedId(z),enterTask:(z)=>J.switchTo(z)}}var F3=C(()=>{S1();t1();I1();s1();CJ();b7();JQ();I7();P7();v9();Q3();qJ();vG()});import{mkdir as lE,readFile as M3,unlink as A3,writeFile as O3}from"fs/promises";import{dirname as $E}from"path";function aE(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 m7(J,z={}){await lE($E(J),{recursive:!0});try{await O3(J,String(process.pid),{flag:"wx"});return}catch(X){if(X.code!=="EEXIST")throw X}let Z=-1;try{let X=(await M3(J,"utf8")).trim();if(Z=Number.parseInt(X,10),!Number.isFinite(Z))Z=-1}catch{return m7(J,z)}let Y=Z>0&&aE(Z);if(Y&&!z.forceTakeover)throw new cG(`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 A3(J)}catch(X){if(X.code!=="ENOENT")throw X}try{await O3(J,String(process.pid),{flag:"wx"})}catch(X){if(X.code==="EEXIST"){let Q=-1;try{Q=Number.parseInt((await M3(J,"utf8")).trim(),10)}catch{Q=-1}throw new cG(`task index lockfile contended during takeover (winner pid ${Q})`,Q)}throw X}}async function N3(J){try{await A3(J)}catch(z){if(z.code==="ENOENT")return;throw z}}var cG;var R3=C(()=>{cG=class cG extends Error{heldByPid;constructor(J,z){super(J);this.name="LockfileError",this.heldByPid=z}}});function _E(J,z){let Z="",Y=J;for(let X=z-1;X>=0;X--){let Q=Y%32;Z="0123456789ABCDEFGHJKMNPQRSTVWXYZ"[Q]+Z,Y=(Y-Q)/32}return Z}function k3(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 pE(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 rE(J){let z="";for(let Z of J)z+="0123456789ABCDEFGHJKMNPQRSTVWXYZ"[Z]??"0";return z}function b3(J=Date.now()){let z;if(J===C3){let Z=g3.slice();if(!pE(Z))z=k3(16);else z=Z}else z=k3(16);return C3=J,g3=z,_E(J,10)+rE(z)}var C3=-1,g3;var I3=C(()=>{g3=Array(16).fill(0)});var c7={};X1(c7,{TaskIndexStore:()=>jQ});import{mkdir as oE,open as sE,readFile as S3,rename as tE,unlink as y3}from"fs/promises";import{homedir as eE}from"os";import{dirname as Ju,join as T3}from"path";async function Xu(J){let z=Date.now()+Yu;for(;;)try{await m7(J);return}catch(Z){if(!(Z instanceof cG)||Date.now()>=z)throw Z;await zu(Zu)}}class jQ{homeDir;kobeDir;path;tmpPath;lockPath;cache={version:bZ,tasks:[]};loaded=!1;listeners=new Set;saveChain=Promise.resolve();dirtyIds=new Set;removedIds=new Set;constructor(J={}){this.homeDir=J.homeDir??eE(),this.kobeDir=T3(this.homeDir,".kobe"),this.path=T3(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 S3(this.path,"utf8")}catch(Z){if(Z.code==="ENOENT")return this.cache={version:bZ,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:bZ,tasks:[]},this.loaded=!0,this.notifyListeners(),this.snapshot()}return this.cache=x3(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 oE(Ju(this.path),{recursive:!0});let J=new Set(this.dirtyIds),z=new Set(this.removedIds);await Xu(this.lockPath);try{let Z=await this.readDiskTasks(),Y=this.mergeWithDisk(Z,J,z),Q=`${JSON.stringify({version:bZ,tasks:Y},null,2)}
114
+ `,q=await sE(this.tmpPath,"w",420);try{await q.writeFile(Q,"utf8"),await q.sync()}finally{await q.close()}await tE(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 N3(this.lockPath)}}async readDiskTasks(){let J;try{J=await S3(this.path,"utf8")}catch(Z){if(Z.code==="ENOENT")return[];throw Z}let z;try{z=JSON.parse(J)}catch{return[]}return x3(z,this.path).tasks}mergeWithDisk(J,z,Z){let Y=new Map(J.map((q)=>[q.id,q])),X=[],Q=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)}Q.add(q.id)}for(let q of J){if(Q.has(q.id)||Z.has(q.id))continue;X.push(q),Q.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??YJ,...J,id:uQ(b3()),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:Q,...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),Q=X.indexOf(String(J));if(Q<0)throw Error(`task not movable in current group: ${J}`);let q=X[Q+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 U=H<j?j-1:j,V=z>0?U+1:U,f={...B,updatedAt:new Date().toISOString()};return this.cache.tasks.splice(V,0,f),this.dirtyIds.add(String(J)),await this.save(),this.notifyListeners(),f}async reorder(J){this.assertLoaded();let z=J.map((Q)=>{let q=this.cache.tasks.findIndex((j)=>j.id===Q.id);if(!(q>=0?this.cache.tasks[q]:void 0))throw Error(`task not found: ${Q.id}`);return{idx:q,position:Q.position}}),Z=!1,Y=new Map,X=[];for(let{idx:Q,position:q}of z){let H=this.cache.tasks[Q];if(!H||H.position===q)continue;if(!Y.has(Q))Y.set(Q,H);if(this.cache.tasks[Q]={...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(Q){for(let[q,H]of Y)this.cache.tasks[q]=H;for(let q of X)this.dirtyIds.delete(q);throw Q}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 y3(this.path)}catch(J){if(J.code!=="ENOENT")throw J}try{await y3(this.tmpPath)}catch(J){if(J.code!=="ENOENT")throw J}this.cache={version:bZ,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:bZ,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 x3(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:bZ,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:bZ,tasks:[]};let X=Array.isArray(Z.tasks)?Z.tasks:[],Q=[];for(let q of X){let H=Qu(q);if(H)Q.push(H);else console.warn(`[kobe] dropping malformed task entry from ${z}: ${JSON.stringify(q)}`)}return{version:bZ,tasks:Q}}function Qu(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(!Bu(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:uQ(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:QZ(typeof z.vendor==="string"?z.vendor:void 0),prStatus:Gu(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 Gu(J){if(!J||typeof J!=="object"||Array.isArray(J))return;let z=J;if(!qu(z.provider)||!Hu(z.lifecycle)||!ju(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 qu(J){return J==="github"||J==="gitlab"||J==="bitbucket"||J==="unknown"}function Hu(J){return J==="creating"||J==="open"||J==="ready_to_merge"||J==="merged"||J==="closed"||J==="unknown"}function ju(J){return J==="none"||J==="pending"||J==="passing"||J==="failing"||J==="unknown"}function Bu(J){return J==="backlog"||J==="in_progress"||J==="in_review"||J==="done"||J==="canceled"||J==="error"}var zu=(J)=>new Promise((z)=>setTimeout(z,J)),Zu=25,Yu=5000,bZ=3;var dG=C(()=>{Uz();s1();R3();I3()});import{TextAttributes as Vu}from"@opentui/core";function u3(){let{theme:J}=I0(),z=ez(),Z=u9(),Y=()=>Z.toasts().slice(-E3),X=()=>Math.max(0,z().width-Wu-Uu),Q=()=>Math.max(0,z().height-fu-E3-1);return b(z0,{get when(){return Z.toasts().length>0},get children(){var q=W("box");return G(q,"position","absolute"),G(q,"zIndex",2500),G(q,"width",40),G(q,"flexDirection","column"),G(q,"gap",0),K(q,b(o0,{get each(){return Y()},children:(H)=>{let j=()=>H.kind==="needs_input"?J.warning:H.kind==="error"?J.error:J.success,B=()=>J.selectedListItemText,U=()=>H.kind==="needs_input"?"?":H.kind==="error"?"\u2715":"\u2713";return(()=>{var V=W("box"),f=W("text"),L=W("text");return D(V,f),D(V,L),G(V,"flexDirection","row"),G(V,"gap",1),G(V,"paddingLeft",1),G(V,"paddingRight",1),G(V,"onMouseUp",()=>Z.dismiss(H.id)),G(f,"wrapMode","none"),K(f,U),G(L,"wrapMode","none"),K(L,()=>H.title),T((M)=>{var A=j(),N=B(),u=Vu.BOLD,h=B();return A!==M.e&&(M.e=G(V,"backgroundColor",A,M.e)),N!==M.t&&(M.t=G(f,"fg",N,M.t)),u!==M.a&&(M.a=G(f,"attributes",u,M.a)),h!==M.o&&(M.o=G(L,"fg",h,M.o)),M},{e:void 0,t:void 0,a:void 0,o:void 0}),V})()}})),T((H)=>{var j=X(),B=Q();return j!==H.e&&(H.e=G(q,"left",j,H.e)),B!==H.t&&(H.t=G(q,"top",B,H.t)),H},{e:void 0,t:void 0}),q}})}var E3=4,Wu=40,Uu=2,fu=2;var w3=C(()=>{x();x();x();x();x();x();x();H1();w9();P1()});import{stat as Ku}from"fs/promises";async function P3(J){let z=new jQ({homeDir:EJ()});await z.load();let[Z,Y]=p(z.list()),X=null;try{let B=await iJ();if(B){let U=new KJ(B);await U.init(),X=U}else lz("tasks-boot","no daemon running \u2014 polling tasks.json (a gui owns daemon lifecycle)")}catch(B){ZJ("tasks-boot",B),lz("tasks-boot","daemon subscribe failed \u2014 polling tasks.json")}let Q=()=>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()=>{if(!await wz())return;let B="missing";try{let U=await Ku(z.filePath);B=`${U.mtimeMs}:${U.size}`}catch{}if(B===H)return;H=B,await q()})().catch(()=>{})},Du);return{root:()=>[b(d7,{tasks:Q,get initialTaskId(){return J.initialTaskId},orch:X,reload:q}),b(u3,{})],onDestroy:()=>{if(j)clearInterval(j);X?.dispose()}}}var Du=1500;var h3=C(()=>{x();KZ();IJ();H1();CZ();o1();dG();w3();ZQ();n7()});import{TextAttributes as o9}from"@opentui/core";function Lu(J){let z=G7(J);if(!z)return null;let Z=z.hint?.keys??z.keys[0];return Z&&Z.length>0?Z:null}function Fu(J){let z=J.map(Lu).filter((Z)=>Z!==null);return z.length>0?z.join("/"):null}function v3(J){let{theme:z}=I0(),[Z,Y]=p("Prefix");r1(()=>{S0(["show-options","-g","prefix"]).then(({code:f,stdout:L})=>{if(f!==0)return;let M=_9(L);if(M)Y(M)})});let X=()=>{Q7();let f=q9(),L=f.binds,M=[],A=f.focus.filter((u)=>u!==null).map((u)=>u.chord);if(A.length===4&&A.every((u,h)=>u===ZY[h]))M.push({k:"ctrl+hjkl",label:F("tasks.hints.movePanes")});else if(A.length>0)M.push({k:A[0],label:F("tasks.hints.movePanes")});let N=(u,h)=>{let I=h.map((R)=>L[R]?.chord).filter((R)=>!!R);if(I.length>0)M.push({k:`prefix ${I.join("/")}`,label:u})};if(L["tmux.detach"])M.push({k:L["tmux.detach"].chord,label:F("tasks.hints.detach")});return N(F("tasks.hints.splits"),["tmux.layout.workspaceSplit","tmux.layout.workspaceClose","tmux.layout.workspaceReset"]),N(F("tasks.hints.panes"),["tmux.layout.tasksToggle","tmux.layout.opsToggle","tmux.layout.terminalToggle"]),M},Q=()=>{Q7();let f=[{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 M of f){let A=Fu(M.ids);if(A===null)continue;L.push({k:A,label:M.label,dimWhenMain:M.dimWhenMain})}return L.push(...X()),L},q=()=>[{k:"j/k",label:F("tasks.hints.reorder")},{k:"enter/esc",label:F("tasks.hints.done")}],H=()=>J.moveMode?.()?q():Q(),j=18,B=()=>Math.min(j,Math.max(...H().map((f)=>$9(f.label)))),U=(f)=>{let L=B();if($9(f)<=L)return f;let M=[...f],A=0,N=0;for(let u of M){let h=(u.codePointAt(0)??0)>=4352?2:1;if(A+h>L-1)break;A+=h,N++}return`${M.slice(0,N).join("")}\u2026`},V=()=>(J.collapsed?.()??!1)&&!(J.moveMode?.()??!1);return(()=>{var f=W("box"),L=W("text");return D(f,L),G(f,"flexShrink",0),G(f,"flexDirection","column"),G(f,"paddingLeft",1),G(f,"paddingRight",1),G(f,"paddingTop",1),G(f,"paddingBottom",1),G(f,"gap",0),G(L,"wrapMode","none"),G(L,"onMouseUp",()=>J.onToggleCollapsed?.()),K(L,(()=>{var M=L0(()=>!!V());return()=>M()?F("tasks.hints.headerFolded"):F("tasks.hints.headerUnfolded")})()),K(f,b(z0,{get when(){return!V()},get children(){return b(o0,{get each(){return H()},children:(M)=>{let A=()=>M.dimWhenMain===!0&&(J.selectedIsMain?.()??!1);return(()=>{var N=W("box"),u=W("box"),h=W("text"),I=R0("["),R=R0("]"),O=W("box"),S=W("text");return D(N,u),D(N,O),G(N,"flexDirection","row"),G(N,"gap",1),G(N,"justifyContent","space-between"),D(u,h),G(u,"width",10),G(u,"flexShrink",0),D(h,I),D(h,R),G(h,"wrapMode","none"),K(h,()=>XQ(M.k,Z()),R),D(O,S),G(O,"flexShrink",0),G(S,"wrapMode","none"),K(S,()=>U(M.label)),T((n)=>{var i=A()?z.textMuted:z.accent,P=A()?o9.DIM:o9.BOLD,a=B(),Y0=z.textMuted,Q0=A()?o9.DIM:void 0;return i!==n.e&&(n.e=G(h,"fg",i,n.e)),P!==n.t&&(n.t=G(h,"attributes",P,n.t)),a!==n.a&&(n.a=G(O,"width",a,n.a)),Y0!==n.o&&(n.o=G(S,"fg",Y0,n.o)),Q0!==n.i&&(n.i=G(S,"attributes",Q0,n.i)),n},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),N})()}})}}),null),T((M)=>{var A=z.textMuted,N=o9.DIM;return A!==M.e&&(M.e=G(L,"fg",A,M.e)),N!==M.t&&(M.t=G(L,"attributes",N,M.t)),M},{e:void 0,t:void 0}),f})()}var m3=C(()=>{x();x();x();x();x();x();x();x();S1();t1();H1();H9();lY();P1();k7();g7()});var c3={};X1(c3,{startTasksPane:()=>Mu,TasksShell:()=>d7});function d7(J){let{theme:z}=I0(),Z=i1(),Y=zQ(),X=u9(),[Q,q]=p(J.tasks().some((s)=>s.id===J.initialTaskId)?J.initialTaskId:J.tasks()[0]?.id??null),[H,j]=p(null),B=()=>H()??Q();function U(s){X.notify({kind:"error",taskId:Q()??"",tabId:"",title:s})}function V(s){X.notify({kind:"done",taskId:Q()??"",tabId:"",title:s})}let[f,L]=p(!1),[M,A]=p(Y.get("activeSortMode")==="recent"?"recent":"default"),N=Y.get("tasksPane.projectFilter"),[u,h]=p(typeof N==="string"&&N.length>0?N:null),I=(s)=>{h(s),Y.set("tasksPane.projectFilter",s)},[R,O]=p(null),[S,n]=p(!1);{let s=process.env.TMUX_PANE;if(s){let q1=()=>{S0(["show-options","-wqv","-t",s,wZ]).then(({code:H0,stdout:A0})=>{n(H0===0&&A0.trim().length>0)})};q1();let c=setInterval(q1,1000);k1(()=>clearInterval(c))}}let i=ez();E0(()=>{if(J.initialTaskId)return;let s=J.orch?.activeTaskSignal()();if(!s)return;q(s)}),E0(GJ(()=>J.orch?.uiPrefsSignal()(),(s)=>{if(s&&s.sortMode!==QJ(M))A(s.sortMode);if(s&&s.projectFilter!==QJ(u))h(s.projectFilter)})),E0(()=>{let s=J.orch?.updateSignal()();if(s)O(s)});let P={tasks:()=>J.tasks(),orch:J.orch,kv:Y,dialog:Z,notifyError:U,notifyInfo:V,reload:()=>J.reload(),updateInfo:R,setSelectedId:q},a={token:0},Y0=(s)=>v7(P,a,s),Q0=L3({...P,selectedId:Q,setSelectedId:q,switchTo:Y0});async function e(){await OM(Q0)}async function v(s){await KM(Q0,s)}async function j0(s){await DM(Q0,s)}async function k(s){await LM(Q0,s)}async function o(s){await FM(Q0,s)}async function m(s){await MM(Q0,s)}let g=()=>H3(P),J0=()=>j3(P),w=()=>B3(),_=()=>V3(P),q0=(s)=>W3(P,s),B0=()=>U3(),F0=(s,q1)=>f3(P,s,q1),l0=(s)=>K3(P,s),$0=(s)=>D3(P,a,s),[C0,t0]=p(Y.get("tasksPane.keysCollapsed",!1)===!0),O1=(s)=>{t0(s),Y.set("tasksPane.keysCollapsed",s)};E0(GJ(()=>J.orch?.uiPrefsSignal()(),(s)=>{if(s&&s.keysCollapsed!==QJ(C0))t0(s.keysCollapsed)}));let[j1,J1]=p(!1);L1(()=>({enabled:Z.stack.length===0&&!j1(),bindings:GY({"help.open":()=>void J0(),"task.new":()=>void e(),"settings.open.sidebar":()=>void g(),"worktrees.open.sidebar":()=>void w(),"tasks.update":()=>void _(),"tasks.openWorktree":()=>{let s=B();if(s)q0(s)},"tasks.renameBranch":()=>{let s=B();if(s)o(s)},"tasks.cycleEngine":()=>{let s=B();if(s)m(s)},"tasks.toggleKeys":()=>O1(!C0()),"tasks.focusEngine":()=>void B0().catch((s)=>console.error("[kobe tasks] focus engine pane failed:",s))})}));let P0=U0(()=>{let s=R();if(s?.hasUpdate)return{label:`v${s.latest} \u2191`,emphasize:!0};return{label:`v${a0}`,emphasize:!1}}),z1=()=>J.orch?.daemonStaleSignal()()??!1,Q1=()=>J.orch?.daemonVersionSignal()()??null,k0=U0(()=>J.tasks().find((s)=>s.id===Q())?.kind==="main");return(()=>{var s=W("box"),q1=W("box");return D(s,q1),G(s,"flexDirection","column"),G(s,"flexGrow",1),K(s,b(VM,{stale:z1,daemonVersion:Q1,clientVersion:a0,width:()=>i().width}),q1),G(q1,"flexGrow",1),G(q1,"flexShrink",1),K(q1,b(vM,{get tasks(){return J.tasks},selectedId:Q,get onSelect(){return J.initialTaskId?()=>{}:q},get pinnedSelection(){return!!J.initialTaskId},onActivate:(c)=>void Y0(c),activateOnClick:!0,headerStatus:P0,onHeaderStatusClick:()=>void _(),onAddTask:()=>void e(),zenActive:S,onZenClick:()=>{(async()=>{let c=await SJ();if(c)await xY(c,"zen-toggle")})()},width:()=>i().width,get engineState(){return L0(()=>!!J.orch)()?J.orch.engineStateSignal():void 0},get taskJobs(){return L0(()=>!!J.orch)()?J.orch.taskJobsSignal():void 0},get worktreeChanges(){return J.orch?()=>{let c=J.orch;if(!c||c.connectionStateSignal()()!=="online")return null;return c.worktreeChangesSignal()()}:void 0},onRenameRequest:(c)=>void k(c),onDeleteRequest:(c)=>void j0(c),onArchiveRequest:(c)=>void v(c),onPinRequest:(c)=>void l0(c),onPreviewToggleRequest:(c)=>void $0(c),onLocalMergeRequest:(c)=>{let H0=J.tasks().find((A0)=>A0.id===c);if(!H0||H0.kind==="main")return;q(c),L((A0)=>!A0)},moveMode:f,onMoveRequest:(c,H0)=>void F0(c,H0),onMoveModeExit:()=>L(!1),sortMode:M,projectFilter:u,onProjectFilterChange:I,onSortModeToggle:()=>{let c=M()==="default"?"recent":"default";A(c),Y.set("activeSortMode",c)},focused:()=>Z.stack.length===0,onSearchActiveChange:J1,onCursorChange:j})),K(s,b(v3,{moveMode:f,selectedIsMain:k0,collapsed:C0,onToggleCollapsed:()=>O1(!C0())}),null),T((c)=>G(s,"backgroundColor",z.background,c)),s})()}async function Mu(J={}){await VJ({logContext:"tasks",providers:{notifications:!0},setup:()=>P3(J)})}var n7=C(()=>{x();x();x();x();x();x();x();S1();tJ();x();H1();CJ();WM();lY();wG();w9();P1();YZ();TJ();AM();g7();eZ();aJ();F3();h3();m3()});var d3={};X1(d3,{startSettingsHost:()=>Au});function Ou(J){let z=zQ(),Z=i1(),{theme:Y}=I0(),X=!1,Q=!1;async function q(){if(Q)return;Q=!0;try{if(z.flush()&&X){let j=await SJ();if(j)await KX(j)}}catch(H){console.error("[kobe settings] failed to refresh workspace panes:",H)}finally{process.exit(0)}}return L1(()=>({enabled:Z.stack.length===0,bindings:[{key:"escape",cmd:q},{key:"q",cmd:q},{key:"ctrl+c",cmd:q}]})),(()=>{var H=W("scrollbox");return G(H,"flexGrow",1),G(H,"paddingTop",1),G(H,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),K(H,b(aY,{kv:z,get orchestrator(){return J.orchestrator??void 0},standalone:!0,onVisualPrefsChange:()=>{X=!0},onClose:q})),T((j)=>G(H,"backgroundColor",Y.background,j)),H})()}async function Au(){await VJ({setup:async()=>{let J=null;try{let z=await iJ();if(z){let Z=new KJ(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:()=>b(Ou,{orchestrator:J}),onDestroy:()=>{J?.dispose()}}}})}var n3=C(()=>{x();x();x();x();x();x();IJ();CZ();P7();wG();P1();YZ();TJ();qJ();aJ()});import{TextAttributes as i3}from"@opentui/core";function Nu(J){if(!J)return"";let z=Math.max(0,Math.floor((Date.now()-J)/1000));if(z<60)return`${z}s`;let Z=Math.floor(z/60);if(Z<60)return`${Z}m`;let Y=Math.floor(Z/60);if(Y<24)return`${Y}h`;return`${Math.floor(Y/24)}d`}function i7(J,z){if(z<=0)return 0;return Math.min(Math.max(J,0),z-1)}function l3(J){let{theme:z}=I0(),Z=i1(),[Y,{refetch:X}]=DZ(async()=>{if(!J.orchestrator)return[];return J.orchestrator.listWorktrees()}),Q=U0(()=>(Y()??[]).flatMap((f)=>f.worktrees)),[q,H]=p(0);E0(()=>{Q(),H((f)=>i7(f,Q().length))});let[j,B]=p(null);async function U(f){if(!J.orchestrator||j())return;if(await OJ.show(Z,F("worktrees.delete.confirmTitle"),F("worktrees.delete.confirmBody",{branch:f.branch||f.path}),F("common.cancel"),F("worktrees.delete.button"))!==!0)return;B(f.path);try{await J.orchestrator.removeWorktree(f.path,!1),X()}catch(M){if(M instanceof Error&&Ru.test(M.message)){if(B(null),await OJ.show(Z,F("worktrees.delete.forceTitle"),F("worktrees.delete.forceBody",{branch:f.branch||f.path}),F("common.cancel"),F("worktrees.delete.button"))===!0){B(f.path);try{await J.orchestrator.removeWorktree(f.path,!0),X()}catch(N){console.error(`[kobe worktrees] ${F("worktrees.delete.failed",{error:String(N)})}`)}}}else console.error(`[kobe worktrees] ${F("worktrees.delete.failed",{error:String(M)})}`)}finally{B(null)}}L1(()=>({enabled:Z.stack.length===0,bindings:[{key:"escape",cmd:J.onClose},{key:"q",cmd:J.onClose},{key:"ctrl+c",cmd:J.onClose},{key:"up",cmd:()=>H((f)=>i7(f-1,Q().length))},{key:"down",cmd:()=>H((f)=>i7(f+1,Q().length))},{key:"d",cmd:()=>{let f=Q()[q()];if(f)U(f)}}]}));function V(f){if(f===!0)return(()=>{var L=W("text"),M=R0(" ");return D(L,M),K(L,()=>F("worktrees.badge.remoteOn"),null),T((A)=>G(L,"fg",z.success,A)),L})();if(f===!1)return(()=>{var L=W("text"),M=R0(" ");return D(L,M),K(L,()=>F("worktrees.badge.remoteOff"),null),T((A)=>G(L,"fg",z.warning,A)),L})();return(()=>{var L=W("text"),M=R0(" ");return D(L,M),K(L,()=>F("worktrees.badge.remoteUnknown"),null),T((A)=>G(L,"fg",z.textMuted,A)),L})()}return(()=>{var f=W("scrollbox"),L=W("box"),M=W("text"),A=W("text");return D(f,L),G(f,"flexGrow",1),G(f,"paddingTop",1),G(f,"paddingLeft",2),G(f,"paddingRight",2),G(f,"paddingBottom",1),G(f,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),D(L,M),D(L,A),G(L,"flexDirection","row"),G(L,"justifyContent","space-between"),K(M,()=>F("worktrees.title")),K(A,()=>F("worktrees.hint.legend")),K(f,b(z0,{get when(){return!Y.loading},get fallback(){return(()=>{var N=W("text");return K(N,()=>F("worktrees.loading")),T((u)=>G(N,"fg",z.textMuted,u)),N})()},get children(){return b(z0,{get when(){return(Y()??[]).length>0},get fallback(){return(()=>{var N=W("text");return K(N,()=>F("worktrees.noProjects")),T((u)=>G(N,"fg",z.textMuted,u)),N})()},get children(){return b(o0,{get each(){return Y()??[]},children:(N)=>{let u=0;for(let h of Y()??[]){if(h.repo===N.repo)break;u+=h.worktrees.length}return(()=>{var h=W("box"),I=W("text");return D(h,I),G(h,"gap",0),G(h,"paddingTop",1),G(I,"wrapMode","none"),K(I,()=>N.repo),K(h,b(z0,{get when(){return N.worktrees.length>0},get fallback(){return(()=>{var R=W("text");return G(R,"wrapMode","none"),K(R,()=>F("worktrees.noWorktrees")),T((O)=>G(R,"fg",z.textMuted,O)),R})()},get children(){return b(o0,{get each(){return N.worktrees},children:(R,O)=>{let S=()=>u+O(),n=()=>S()===q();return(()=>{var i=W("box"),P=W("box"),a=W("text"),Y0=W("box"),Q0=W("text");return D(i,P),D(i,Y0),G(i,"gap",0),G(i,"onMouseUp",()=>H(S())),D(P,a),G(P,"flexDirection","row"),G(a,"wrapMode","none"),K(a,()=>n()?"\u25B8 ":" ",null),K(a,()=>R.branch||F("worktrees.row.detached"),null),K(P,(()=>{var e=L0(()=>!!R.kobeManaged);return()=>e()&&(()=>{var v=W("text"),j0=R0(" ");return D(v,j0),K(v,()=>F("worktrees.badge.kobeManaged"),null),T((k)=>G(v,"fg",z.textMuted,k)),v})()})(),null),K(P,(()=>{var e=L0(()=>!!R.dirty);return()=>e()&&(()=>{var v=W("text"),j0=R0(" ");return D(v,j0),K(v,()=>F("worktrees.badge.dirty"),null),T((k)=>G(v,"fg",z.warning,k)),v})()})(),null),K(P,()=>V(R.branchOnRemote),null),K(P,(()=>{var e=L0(()=>j()===R.path);return()=>e()&&(()=>{var v=W("text");return D(v,R0(" \u2026")),T((j0)=>G(v,"fg",z.textMuted,j0)),v})()})(),null),D(Y0,Q0),G(Y0,"flexDirection","row"),G(Y0,"justifyContent","space-between"),G(Y0,"paddingLeft",2),G(Q0,"wrapMode","none"),K(Q0,()=>R.path),K(Y0,(()=>{var e=L0(()=>R.createdAtMs>0);return()=>e()&&(()=>{var v=W("text");return G(v,"wrapMode","none"),K(v,()=>F("worktrees.row.created",{age:Nu(R.createdAtMs)})),T((j0)=>G(v,"fg",z.textMuted,j0)),v})()})(),null),T((e)=>{var v=n()?z.primary:z.text,j0=n()?i3.BOLD:void 0,k=z.textMuted;return v!==e.e&&(e.e=G(a,"fg",v,e.e)),j0!==e.t&&(e.t=G(a,"attributes",j0,e.t)),k!==e.a&&(e.a=G(Q0,"fg",k,e.a)),e},{e:void 0,t:void 0,a:void 0}),i})()}})}}),null),T((R)=>G(I,"fg",z.textMuted,R)),h})()}})}})}}),null),T((N)=>{var u=z.background,h=i3.BOLD,I=z.text,R=z.textMuted;return u!==N.e&&(N.e=G(f,"backgroundColor",u,N.e)),h!==N.t&&(N.t=G(M,"attributes",h,N.t)),I!==N.a&&(N.a=G(M,"fg",I,N.a)),R!==N.o&&(N.o=G(A,"fg",R,N.o)),N},{e:void 0,t:void 0,a:void 0,o:void 0}),f})()}var Ru;var $3=C(()=>{x();x();x();x();x();x();x();x();H1();P1();t1();TJ();aJ();vG();Ru=/refusing to remove dirty worktree/});var a3={};X1(a3,{startWorktreesHost:()=>Cu});async function Cu(){await VJ({setup:async()=>{let J=null;try{let z=await iJ();if(z){let Z=new KJ(z);await Z.init(),J=Z}else console.error("[kobe worktrees] no daemon running; nothing to list")}catch(z){console.error("[kobe worktrees] daemon unavailable:",z)}return{root:()=>b(l3,{orchestrator:J,onClose:()=>process.exit(0)}),onDestroy:()=>{J?.dispose()}}}})}var _3=C(()=>{x();IJ();CZ();$3();YZ()});var p3={};X1(p3,{startHelpHost:()=>ku});function gu(){let J=i1(),{theme:z}=I0();function Z(){process.exit(0)}return L1(()=>({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 G(Y,"flexGrow",1),G(Y,"paddingTop",1),K(Y,b(QQ,{onClose:Z})),T((X)=>G(Y,"backgroundColor",z.background,X)),Y})()}async function ku(){await VJ({providers:{kv:!1,focus:!1},setup:()=>({root:()=>b(gu,{})})})}var r3=C(()=>{x();x();x();x();x();b7();P1();YZ();TJ();aJ()});var o3={};X1(o3,{startUpdateHost:()=>Eu});import{spawn as bu,spawnSync as Iu}from"child_process";import{TextAttributes as BQ}from"@opentui/core";function Su(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 bu(Z,Y,{stdio:"ignore",detached:!0}).unref(),!0}catch{return!1}}function yu(J){return J.replace(/\r\n/g,`
115
+ `).split(`
116
+ `).map((z)=>z.trim()).filter(Boolean)}function Tu(){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 xu(){let{theme:J}=I0(),z=HJ(),[Z,Y]=p(null),[X,Q]=p([]),[q,H]=p(!0),[j,B]=p("update"),[U,V]=p(null),f=U0(()=>Z()?.latest??a0),L=U0(()=>X()[0]?.url??mj(f())),M=U0(()=>[{id:"update",key:"U",label:F("update.actions.updateNow"),detail:VZ},{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")}]);r1(()=>{A()});async function A(){let I=await NQ({force:!0});Y(I);let R=I?.latest??a0,O=await vj({current:a0,latest:R});Q(O),H(!1)}function N(I){let R=M().map((n)=>n.id),S=(R.indexOf(j())+I+R.length)%R.length;B(R[S]??"update")}function u(I=j()){if(I==="close")process.exit(0);if(I==="release"){V(Su(L())?F("update.statusReleaseOpened"):F("update.statusReleaseError"));return}h()}async function h(){V(F("update.statusRunningUpdater")),await new Promise((O)=>setTimeout(O,30)),z?.destroy(),process.stdout.write(`
117
+ kobe ${a0} -> ${f()}
118
+ `),process.stdout.write(`running: ${VZ}
119
+
120
+ `);let I=Iu("sh",["-c",VZ],{stdio:"inherit"}),R=I.status??(I.error?1:0);if(I.error)process.stderr.write(`
121
+ kobe update: failed to start updater: ${I.error.message}
122
+ `);process.stdout.write(R===0?`
123
+ ${F("update.updateComplete")}
124
+ `:`
125
+ ${F("update.updateFailed",{code:String(R)})}
126
+ `),process.stdout.write(F("update.pressAnyKey")),await Tu(),process.exit(R)}return L1(()=>({bindings:[{key:"up",cmd:()=>N(-1)},{key:"down",cmd:()=>N(1)},{key:"k",cmd:()=>N(-1)},{key:"j",cmd:()=>N(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 I=W("box"),R=W("box"),O=W("text"),S=W("text"),n=W("box"),i=W("text"),P=W("text"),a=R0("v"),Y0=W("text"),Q0=W("text"),e=R0("v"),v=W("box"),j0=W("box"),k=W("text"),o=W("scrollbox"),m=W("box");return D(I,R),D(I,n),D(I,v),D(I,j0),D(I,o),G(I,"flexDirection","column"),G(I,"flexGrow",1),G(I,"paddingTop",1),G(I,"paddingLeft",2),G(I,"paddingRight",2),D(R,O),D(R,S),G(R,"flexDirection","row"),G(R,"justifyContent","space-between"),G(R,"flexShrink",0),G(O,"wrapMode","none"),K(O,()=>F("update.pageTitle")),D(S,R0("q / esc")),G(S,"wrapMode","none"),G(S,"onMouseUp",()=>u("close")),D(n,i),D(n,P),D(n,Y0),D(n,Q0),G(n,"flexDirection","row"),G(n,"gap",2),G(n,"flexShrink",0),G(n,"paddingTop",1),G(i,"wrapMode","none"),K(i,()=>F("update.current")),D(P,a),G(P,"wrapMode","none"),K(P,a0,null),G(Y0,"wrapMode","none"),K(Y0,()=>F("update.latest")),D(Q0,e),G(Q0,"wrapMode","none"),K(Q0,f,null),G(v,"flexDirection","column"),G(v,"flexShrink",0),G(v,"paddingTop",1),G(v,"gap",0),K(v,b(o0,{get each(){return M()},children:(g)=>(()=>{var J0=W("box"),w=W("box"),_=W("text"),q0=R0("["),B0=R0("]"),F0=W("box"),l0=W("text"),$0=W("text");return D(J0,w),D(J0,F0),D(J0,$0),G(J0,"flexDirection","row"),G(J0,"gap",1),G(J0,"paddingLeft",1),G(J0,"paddingRight",1),G(J0,"onMouseUp",()=>u(g.id)),D(w,_),G(w,"width",4),G(w,"flexShrink",0),D(_,q0),D(_,B0),G(_,"wrapMode","none"),K(_,()=>g.key,B0),D(F0,l0),G(F0,"width",14),G(F0,"flexShrink",0),G(l0,"wrapMode","none"),K(l0,()=>g.label),G($0,"wrapMode","word"),K($0,()=>g.detail),T((C0)=>{var t0=j()===g.id?J.primary:void 0,O1=j()===g.id?J.selectedListItemText:J.accent,j1=BQ.BOLD,J1=j()===g.id?J.selectedListItemText:J.text,P0=j()===g.id?J.selectedListItemText:J.textMuted;return t0!==C0.e&&(C0.e=G(J0,"backgroundColor",t0,C0.e)),O1!==C0.t&&(C0.t=G(_,"fg",O1,C0.t)),j1!==C0.a&&(C0.a=G(_,"attributes",j1,C0.a)),J1!==C0.o&&(C0.o=G(l0,"fg",J1,C0.o)),P0!==C0.i&&(C0.i=G($0,"fg",P0,C0.i)),C0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),J0})()})),K(I,b(z0,{get when(){return U()},get children(){var g=W("text");return G(g,"wrapMode","word"),K(g,U),T((J0)=>G(g,"fg",J.info,J0)),g}}),j0),D(j0,k),G(j0,"flexShrink",0),G(j0,"paddingTop",1),G(k,"wrapMode","none"),K(k,()=>F("update.changesSectionHeader",{from:a0,to:f()})),D(o,m),G(o,"flexGrow",1),G(o,"flexShrink",1),G(o,"stickyScroll",!1),G(m,"flexDirection","column"),G(m,"paddingRight",1),G(m,"paddingBottom",1),G(m,"gap",0),K(m,b(z0,{get when(){return q()},get children(){var g=W("text");return K(g,()=>F("update.loadingNotes")),T((J0)=>G(g,"fg",J.textMuted,J0)),g}}),null),K(m,b(z0,{get when(){return L0(()=>!q())()&&X().length===0},get children(){var g=W("text");return G(g,"wrapMode","word"),K(g,()=>F("update.notesUnavailable")),T((J0)=>G(g,"fg",J.textMuted,J0)),g}}),null),K(m,b(o0,{get each(){return X()},children:(g)=>(()=>{var J0=W("box"),w=W("text"),_=R0("v");return D(J0,w),G(J0,"flexDirection","column"),G(J0,"paddingBottom",1),G(J0,"gap",0),D(w,_),G(w,"wrapMode","none"),K(w,()=>g.version,null),K(J0,b(o0,{get each(){return yu(g.body)},children:(q0)=>(()=>{var B0=W("text");return G(B0,"wrapMode","word"),K(B0,q0),T((F0)=>G(B0,"fg",J.textMuted,F0)),B0})()}),null),T((q0)=>{var B0=J.text,F0=BQ.BOLD;return B0!==q0.e&&(q0.e=G(w,"fg",B0,q0.e)),F0!==q0.t&&(q0.t=G(w,"attributes",F0,q0.t)),q0},{e:void 0,t:void 0}),J0})()}),null),T((g)=>{var{background:J0,text:w}=J,_=BQ.BOLD,q0=J.textMuted,B0=J.textMuted,F0=J.text,l0=BQ.BOLD,$0=J.textMuted,C0=Z()?.hasUpdate?J.warning:J.success,t0=BQ.BOLD,O1=J.textMuted,j1=BQ.DIM,J1={trackOptions:{backgroundColor:J.background,foregroundColor:J.borderActive}};return J0!==g.e&&(g.e=G(I,"backgroundColor",J0,g.e)),w!==g.t&&(g.t=G(O,"fg",w,g.t)),_!==g.a&&(g.a=G(O,"attributes",_,g.a)),q0!==g.o&&(g.o=G(S,"fg",q0,g.o)),B0!==g.i&&(g.i=G(i,"fg",B0,g.i)),F0!==g.n&&(g.n=G(P,"fg",F0,g.n)),l0!==g.s&&(g.s=G(P,"attributes",l0,g.s)),$0!==g.h&&(g.h=G(Y0,"fg",$0,g.h)),C0!==g.r&&(g.r=G(Q0,"fg",C0,g.r)),t0!==g.d&&(g.d=G(Q0,"attributes",t0,g.d)),O1!==g.l&&(g.l=G(k,"fg",O1,g.l)),j1!==g.u&&(g.u=G(k,"attributes",j1,g.u)),J1!==g.c&&(g.c=G(o,"verticalScrollbarOptions",J1,g.c)),g},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0}),I})()}async function Eu(){await VJ({setup:()=>({root:()=>b(xu,{})})})}var s3=C(()=>{x();x();x();x();x();x();x();x();x();H1();CJ();P1();t1();YZ();TJ()});function t9(J,z){if(z<3)return 2500;return Math.min(J*2,20000)}function t3(J,z,Z){if(z)return 1500;if(Z==="running")return 1500;return Math.min(J*2,6000)}var s9=2500,nG=1500;var JO={};X1(JO,{startHistoryHost:()=>iu});import{TextAttributes as VQ}from"@opentui/core";function uu(J){let z=J.lastIndexOf("/");return z>=0?J.slice(z+1):J}function wu(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 Pu(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>Jj?`${Y.slice(0,Jj-1)}\u2026`:Y}try{let z=JSON.stringify(J);if(!z||z==="{}"||z==="null")return"";return z.length>Jj?`${z.slice(0,Jj-1)}\u2026`:z}catch{return""}}function hu(J){if(typeof J==="string")return J;try{return JSON.stringify(J,null,2)}catch{return String(J)}}function vu(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 e3(J){let{theme:z}=I0(),Z=()=>J.text.replace(/\s+$/,"").split(`
127
+ `),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 G(X,"flexDirection","column"),G(X,"paddingLeft",2),G(X,"marginLeft",2),K(X,b(o0,{get each(){return Z()},children:(Q)=>(()=>{var q=W("text");return G(q,"wrapMode","word"),K(q,Q||" "),T((H)=>G(q,"fg",Y(Q),H)),q})()})),T((Q)=>G(X,"backgroundColor",z.backgroundElement,Q)),X})()}function mu(J){let{theme:z}=I0(),Z=J.block;switch(Z.type){case"text":return(()=>{var Y=W("text");return G(Y,"wrapMode","word"),K(Y,()=>Z.text),T((X)=>G(Y,"fg",z.text,X)),Y})();case"thinking":return(()=>{var Y=W("box"),X=W("text");return D(Y,X),G(Y,"flexDirection","column"),G(X,"wrapMode","none"),K(X,()=>`\u2731 ${F("history.thinking")}${J.expanded?"":"\u2026"}`),K(Y,b(z0,{get when(){return L0(()=>!!J.expanded)()&&Z.text.trim()},get children(){return b(e3,{get text(){return Z.text}})}}),null),T((Q)=>{var q=z.textMuted,H=VQ.ITALIC;return q!==Q.e&&(Q.e=G(X,"fg",q,Q.e)),H!==Q.t&&(Q.t=G(X,"attributes",H,Q.t)),Q},{e:void 0,t:void 0}),Y})();case"tool_call":{let Y=!J.result?.isError,X=J.result?hu(J.result.output):"",Q=Pu(Z.input);return(()=>{var q=W("box"),H=W("box"),j=W("text"),B=W("text");return D(q,H),G(q,"flexDirection","column"),D(H,j),D(H,B),G(H,"flexDirection","row"),G(H,"gap",1),D(j,R0("\u23FA")),G(j,"wrapMode","none"),G(B,"wrapMode","none"),K(B,()=>Z.name),K(H,b(z0,{when:Q,get children(){var U=W("text");return G(U,"wrapMode","none"),K(U,Q),T((V)=>G(U,"fg",z.textMuted,V)),U}}),null),K(q,b(z0,{get when(){return L0(()=>!!J.expanded)()&&X.trim()},get children(){return b(e3,{text:X,get error(){return J.result?.isError}})}}),null),T((U)=>{var V=Y?z.success:z.error,f=z.text,L=VQ.BOLD;return V!==U.e&&(U.e=G(j,"fg",V,U.e)),f!==U.t&&(U.t=G(B,"fg",f,U.t)),L!==U.a&&(U.a=G(B,"attributes",L,U.a)),U},{e:void 0,t:void 0,a:void 0}),q})()}case"tool_result":return null}}function cu(J){return J==="assistant"?F("history.role.assistant"):J==="system"?F("history.role.system"):F("history.role.user")}function du(J){let{theme:z}=I0(),Z=()=>J.msg.role==="user",Y=()=>wu(J.msg.timestamp),X=U0(()=>Z()?J.msg.blocks.filter((q)=>q.type==="text"&&q.text.trim().length>0).map((q)=>q.text).join(`
128
+ `):""),Q=()=>Z()?J.msg.blocks.filter((q)=>q.type!=="text"):J.msg.blocks;return(()=>{var q=W("box");return G(q,"flexDirection","column"),G(q,"paddingLeft",1),G(q,"paddingRight",1),G(q,"paddingBottom",1),G(q,"gap",0),K(q,b(z0,{get when(){return L0(()=>!!Z())()&&X()},get children(){var H=W("box"),j=W("text"),B=W("text");return D(H,j),D(H,B),G(H,"flexDirection","row"),G(H,"gap",1),G(H,"paddingLeft",1),G(H,"paddingRight",1),D(j,R0("\u276F")),G(j,"wrapMode","none"),G(B,"wrapMode","word"),G(B,"flexGrow",1),K(B,X),K(H,b(z0,{get when(){return Y()},get children(){var U=W("text");return G(U,"wrapMode","none"),K(U,Y),T((V)=>G(U,"fg",z.textMuted,V)),U}}),null),T((U)=>{var{backgroundElement:V,primary:f}=z,L=VQ.BOLD,M=z.text;return V!==U.e&&(U.e=G(H,"backgroundColor",V,U.e)),f!==U.t&&(U.t=G(j,"fg",f,U.t)),L!==U.a&&(U.a=G(j,"attributes",L,U.a)),M!==U.o&&(U.o=G(B,"fg",M,U.o)),U},{e:void 0,t:void 0,a:void 0,o:void 0}),H}}),null),K(q,b(z0,{get when(){return!Z()},get children(){var H=W("text");return G(H,"wrapMode","none"),K(H,()=>cu(J.msg.role)),T((j)=>{var B=z.textMuted,U=VQ.BOLD;return B!==j.e&&(j.e=G(H,"fg",B,j.e)),U!==j.t&&(j.t=G(H,"attributes",U,j.t)),j},{e:void 0,t:void 0}),H}}),null),K(q,b(o0,{get each(){return Q()},children:(H)=>b(mu,{block:H,get result(){return L0(()=>H.type==="tool_call")()?J.results.get(H.callId):void 0},get expanded(){return J.expanded}})}),null),q})()}function nu(J){let{theme:z}=I0(),Z=J.reader??zJ(J.vendor).history,[Y,X]=p(0),[Q]=DZ(()=>[J.worktree,Y()],async([S])=>{try{return await Z.listSessionIdsForWorktree(S)}catch{return[]}}),q=()=>Q.latest??[],[H,j]=p(0),B=0;E0(GJ(Q,(S)=>{let n=(S??[]).length;if(n>B)j(n>0?n-1:0);else j((i)=>Math.min(i,Math.max(0,n-1)));B=n}));let U=()=>q()[H()],[V]=DZ(()=>{let S=U();return S?[S,Y()]:void 0},async([S])=>{try{return await Z.readHistory(S)}catch{return[]}}),f=()=>V.latest??[],L=U0(()=>vu(f())),M=U0(()=>f().reduce((S,n)=>S+(n.usage?.output_tokens??0),0)),[A,N]=p(!1);r1(()=>{let S=!1,n,i=s9,P=0,a=0,Y0=!1;async function Q0(){if(!await wz()){if(!S)n=setTimeout(()=>void Q0(),i);return}try{let e=await Z.latestTranscriptMtimeForWorktree(J.worktree);if(S)return;if(!Y0)Y0=!0,a=e,P++;else if(e>a)a=e,P=0,X((v)=>v+1);else P++}catch{P++}finally{if(!S)i=t9(i,P),n=setTimeout(()=>void Q0(),i)}}Q0(),k1(()=>{if(S=!0,n)clearTimeout(n)})});let u,h=(S)=>{if(!u)return;u.scrollTo({x:0,y:Math.max(0,u.scrollTop+S)})};E0(GJ(U,()=>u?.scrollTo({x:0,y:0})));let I=(S)=>{let n=q().length;if(n===0)return;j((i)=>Math.min(Math.max(i+S,0),n-1))};L1(()=>({bindings:[{key:"j",cmd:()=>h(e9)},{key:"k",cmd:()=>h(-e9)},{key:"down",cmd:()=>h(e9)},{key:"up",cmd:()=>h(-e9)},{key:"[",cmd:()=>I(-1)},{key:"]",cmd:()=>I(1)},{key:"return",cmd:()=>N((S)=>!S)}]}));let R=()=>J.title?.trim()||uu(J.worktree),O=()=>{let S=q().length;return S>0?`${F("history.sessionLabel")} ${H()+1}/${S}`:""};return(()=>{var S=W("box"),n=W("box"),i=W("text"),P=W("text"),a=W("box"),Y0=W("scrollbox"),Q0=W("box"),e=W("text");return D(S,n),D(S,Y0),D(S,Q0),G(S,"flexDirection","column"),G(S,"flexGrow",1),D(n,i),D(n,P),D(n,a),G(n,"flexDirection","row"),G(n,"gap",1),G(n,"paddingLeft",1),G(n,"paddingRight",1),G(n,"flexShrink",0),G(i,"wrapMode","none"),K(i,(()=>{var v=L0(()=>!!J.live);return()=>v()?F("history.liveTag"):F("history.archivedTag")})()),G(P,"wrapMode","none"),K(P,R),K(n,b(z0,{get when(){return O()},get children(){var v=W("text");return G(v,"wrapMode","none"),K(v,()=>`\xB7 ${O()}`),T((j0)=>G(v,"fg",z.textMuted,j0)),v}}),a),G(a,"flexGrow",1),K(n,b(z0,{get when(){return M()>0},get children(){var v=W("text");return G(v,"wrapMode","none"),K(v,()=>`${M()} tok`),T((j0)=>G(v,"fg",z.textMuted,j0)),v}}),null),Dz((v)=>{u=v},Y0),G(Y0,"flexGrow",1),G(Y0,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),K(Y0,b(z0,{get when(){return Q.latest!==void 0},get fallback(){return(()=>{var v=W("box"),j0=W("text");return D(v,j0),G(v,"paddingTop",1),G(v,"paddingLeft",1),K(j0,()=>F("history.loading")),T((k)=>G(j0,"fg",z.textMuted,k)),v})()},get children(){return b(z0,{get when(){return f().length>0},get fallback(){return(()=>{var v=W("box"),j0=W("text");return D(v,j0),G(v,"paddingTop",1),G(v,"paddingLeft",1),K(j0,()=>F("history.empty")),T((k)=>G(j0,"fg",z.textMuted,k)),v})()},get children(){return b(o0,{get each(){return f()},children:(v)=>b(du,{msg:v,get results(){return L()},get expanded(){return A()}})})}})}})),D(Q0,e),G(Q0,"flexDirection","row"),G(Q0,"paddingLeft",1),G(Q0,"paddingRight",1),G(Q0,"flexShrink",0),G(e,"wrapMode","none"),K(e,(()=>{var v=L0(()=>!!A());return()=>v()?F("history.hintExpanded"):F("history.hint")})()),T((v)=>{var{background:j0,backgroundElement:k}=z,o=J.live?z.success:z.warning,m=VQ.BOLD,g=z.accent,J0=VQ.BOLD,w=z.backgroundElement,_=z.textMuted;return j0!==v.e&&(v.e=G(S,"backgroundColor",j0,v.e)),k!==v.t&&(v.t=G(n,"backgroundColor",k,v.t)),o!==v.a&&(v.a=G(i,"fg",o,v.a)),m!==v.o&&(v.o=G(i,"attributes",m,v.o)),g!==v.i&&(v.i=G(P,"fg",g,v.i)),J0!==v.n&&(v.n=G(P,"attributes",J0,v.n)),w!==v.s&&(v.s=G(Q0,"backgroundColor",w,v.s)),_!==v.h&&(v.h=G(e,"fg",_,v.h)),v},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0}),S})()}async function iu(J){await VJ({logContext:"history",providers:{kv:!1,focus:!1},setup:()=>({root:()=>b(nu,J)})})}var e9=3,Jj=120;var zO=C(()=>{x();x();x();x();x();x();x();x();x();UZ();H1();P1();t1();ZQ();YZ();TJ()});function lu(J){return J.trim().split(/\s+/)[0]??""}function YO(J,z,Z,Y){let X=s0(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 Q=(z.trim()||(Y??"").trim()).trim();if(!Q)return null;let q=lu(Q);if(!q)return null;let H=Q.includes(ZO)?Q.split(ZO).join(X):`${Q} ${X}`;return{bin:q,command:H}}function $u(J,z,Z){let Y=s0(z);return["f=$(mktemp 2>/dev/null)",`if [ -n "$f" ] && git show ${s0(`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(`
129
+ `)}function au(J,z){let Z=J.endsWith("/")?J:`${J}/`;return z.startsWith(Z)?z.slice(Z.length):null}async function _u(J){let z=EX(E1(MZ)),Z=E1(sZ)??"",Y=(process.env.VISUAL??process.env.EDITOR??"").trim();if(z!=="auto")return YO(z,Z,J,Y);if(Y)return YO("custom","",J,Y);let X=s0(J);for(let Q of h6)if(await XO(Q))return{bin:Q,command:`${Q} ${X}`};return null}async function XO(J){try{return await Bun.spawn(["sh","-c",`command -v ${s0(J)} >/dev/null 2>&1`],{stdin:"ignore",stdout:"ignore",stderr:"ignore"}).exited===0}catch{return!1}}async function pu(J,z){try{return await Bun.spawn(["git","diff","--quiet","HEAD","--",z],{cwd:J,stdin:"ignore",stdout:"ignore",stderr:"ignore",env:Xz()}).exited===1}catch{return!1}}async function QO(J,z,Z){let Y=await _u(Z);if(!Y)return!1;if(!await XO(Y.bin))return!1;let X=await ru(Y,z,Z);return await fz(J,{cwd:z,command:X,name:ou(Z)}),!0}async function ru(J,z,Z){let{bin:Y,command:X}=J;if(Y!=="nvim"&&Y!=="vim")return X;if(X!==`${Y} ${s0(Z)}`)return X;let Q=au(z,Z);if(!Q)return X;if(!await pu(z,Q))return X;return $u(Y,Z,Q)}function ou(J){let z=J.slice(J.lastIndexOf("/")+1).trim();return z.length>0?z:"edit"}var ZO="{file}";var GO=C(()=>{oZ();I1();dH();S1();tJ()});async function zj(J,z,Z){if(!z)throw Error("git(): cwd is required");let Y=await SX(z,J,{signal:Z}),X=Y.status??-1;if(X!==0){let Q=(Y.stderr??"").trim(),q=(Y.stdout??"").trim();throw Error(`git ${J.join(" ")} (cwd=${z}) exited with code ${X}: ${Q||q||"(no output)"}`)}return Y.stdout??""}async function HO(J,z){let Y=(await zj(["ls-files","--cached","--others","--exclude-standard","--full-name"],J,z)).split(`
130
+ `).map((Q)=>Q.replace(/\r$/,"")),X=new Set;for(let Q of Y)if(Q.length>0)X.add(Q);return Array.from(X).sort()}async function jO(J,z){let Z=await zj(["status","--porcelain","--untracked-files=all"],J,z),Y=tu(Z),X=new Map;try{let H=await zj(["diff","--no-color","--numstat","HEAD"],J,z);X=new Map(qO(H).map((j)=>[j.path,{added:j.added,deleted:j.deleted}]))}catch{try{let H=await zj(["diff","--no-color","--numstat","--cached"],J,z);X=new Map(qO(H).map((j)=>[j.path,{added:j.added,deleted:j.deleted}]))}catch{X=new Map}}let Q=Y.map((H)=>{let j=X.get(H.path);if(j)return{...H,added:j.added,deleted:j.deleted};return H}),q=Q.filter((H)=>H.status==="?"&&H.added==null);if(q.length>0)await Promise.all(q.map(async(H)=>{let j=await su(J,H.path,z);if(j!=null)H.added=j,H.deleted=0}));return Q}async function su(J,z,Z){if(Z?.aborted)return null;let Y=await wH(J,z);if(Y==null)return null;if(Y.includes("\x00"))return null;if(Y.length===0)return 0;let X=0;for(let Q=0;Q<Y.length;Q++)if(Y[Q]===`
131
+ `)X++;if(!Y.endsWith(`
132
+ `))X++;return X}function qO(J){return eK(J).map((z)=>({path:z.path,added:z.added,deleted:z.deleted}))}function BO(J){let z={name:"",path:"",isDir:!0,children:[]};for(let Z of J){if(!Z)continue;let Y=Z.split("/").filter((Q)=>Q.length>0);if(Y.length===0)continue;let X=z;for(let Q=0;Q<Y.length;Q++){let q=Y[Q],j=Q!==Y.length-1,B=X.children.find((U)=>U.name===q&&U.isDir===j);if(!B)B={name:q,path:Y.slice(0,Q+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 tu(J){let z=[];for(let Z of EH(J)){let Y;if(Z.x==="?"&&Z.y==="?")Y="?";else{let Q=Z.y!==" "?Z.y:Z.x;if(Q==="M"||Q==="A"||Q==="D"||Q==="R"||Q==="C"||Q==="U"||Q==="T")Y=Q;else continue}let X=Z.path;if(X.length===0)continue;if(X.endsWith("/"))continue;z.push({path:X,status:Y})}return z}var WO=C(()=>{uH();PH()});function UO(J){L1(()=>({enabled:J.focused(),bindings:GY({"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=Zj.indexOf(Y);if(X<0)return;let Q=(Z??0)%2===0?-1:1,q=Zj[(X+Q+Zj.length)%Zj.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 Zj;var fO=C(()=>{lY();TJ();Zj=["all","changes"]});import{spawn as KO}from"child_process";import{existsSync as eu}from"fs";import{platform as Jw}from"os";function DO(J){if(!J)return;let z=Jw();if(z==="linux"){if(eu("/proc/sys/fs/binfmt_misc/WSLInterop")||process.env.WSL_DISTRO_NAME){iG("wslview",[J],()=>{let Z=KO("wslpath",["-w",J],{stdio:["ignore","pipe","ignore"]}),Y="";Z.stdout?.on("data",(X)=>{Y+=X.toString()}),Z.on("close",(X)=>{if(X===0)iG("explorer.exe",[Y.trim()])})});return}iG("xdg-open",[J]);return}if(z==="darwin"){iG("open",[J]);return}if(z==="win32"){iG("cmd.exe",["/c","start","",J]);return}}function iG(J,z,Z){try{let Y=KO(J,z,{stdio:"ignore",detached:!0});Y.on("error",()=>Z?.()),Y.unref()}catch{Z?.()}}var LO=()=>{};function l7(J,z,Z,Y){for(let X of J.children)if(X.isDir){let Q=z.has(X.path);if(Y.push({kind:"dir",path:X.path,name:X.name,depth:Z,expanded:Q,hasChildren:X.children.length>0}),Q)l7(X,z,Z+1,Y)}else Y.push({kind:"file",path:X.path,name:X.name,depth:Z})}function FO(J,z){return i9(J,z)}function MO(J){return J.map((z)=>({kind:"status",path:z.path,status:z.status,added:z.added,deleted:z.deleted}))}function zw(J){return`${J.kind}\x00${J.path}`}function Zw(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 OO(J,z){return c9(J,z,zw,Zw)}function AO(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 RO=()=>{};import{watch as Yw}from"fs";import{TextAttributes as lG}from"@opentui/core";function Xw(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 Gw(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 Z=J.indexOf(": ");if(Z>=0&&J.startsWith("git "))return J.slice(Z+2).trim()||F("files.error.gitFailed");return J.trim()||F("files.error.gitFailed")}function qw(J){switch(J){case"all":return F("files.tabs.all");case"changes":return F("files.tabs.changes")}}function CO(J){let{theme:z}=I0(),Z=ez(),Y=()=>J.focused?J.focused():!0,[X,Q]=p("all"),[q,H]=p(0),[j,B]=p(0),[U,V]=p(null,{equals:AO}),[f,L]=p(null,{equals:NO}),[M,A]=p(null),[N,u]=p(new Set),h=0;async function I(o,m,g){let J0=++h;if(m==null){V(null),L(null),A(null);return}A(null);try{if(o==="all"){let w=await HO(m,g);if(g?.aborted||J0!==h||J.worktreePath()!==m)return;V(w)}else if(o==="changes"){let w=await jO(m,g);if(g?.aborted||J0!==h||J.worktreePath()!==m)return;L(w)}}catch(w){if(g?.aborted)return;let _=w instanceof Error?w.message:String(w);if(J0===h&&J.worktreePath()===m)A(_)}}E0(GJ(J.worktreePath,async(o)=>{V(null),L(null),A(null),H(0),u(new Set);let m=new AbortController;k1(()=>m.abort()),await I(X(),o,m.signal)})),E0(GJ(J.worktreePath,(o)=>{if(o==null)return;if(process.env.KOBE_FILETREE_WATCH!=="1")return;let m=null,g=null;try{g=Yw(o,{recursive:!0},(J0,w)=>{if(w==null)return;let _=w.toString();if(_===".git"||_.startsWith(".git/")||_.startsWith(".git\\"))return;if(_.startsWith("node_modules/")||_.startsWith("node_modules\\"))return;if(m!=null)clearTimeout(m);m=setTimeout(()=>{m=null,B((q0)=>q0+1)},500)}),g.on("error",()=>{})}catch{}k1(()=>{if(m!=null)clearTimeout(m);if(g!=null)g.close()})})),E0(GJ(X,async(o)=>{let m=J.worktreePath();if(H(0),m==null)return;let g=new AbortController;if(k1(()=>g.abort()),o==="all"){if(U()==null)await I("all",m,g.signal)}else if(o==="changes"){if(f()==null)await I("changes",m,g.signal)}})),E0(GJ(j,async()=>{let o=X(),m=J.worktreePath();if(m==null)return;let g=new AbortController;k1(()=>g.abort()),await I(o,m,g.signal)},{defer:!0}));let R=U0(()=>{let o=U();if(o==null)return null;return BO(o)}),O=U0((o)=>{let m=[];if(X()==="all"){let g=R();if(g!=null)l7(g,N(),0,m)}else if(X()==="changes"){let g=f();if(g!=null)m.push(...MO(g))}return OO(o??[],m)},[]);E0(GJ(O,(o)=>{if(o.length===0)return;if(q()>o.length-1)H(o.length-1)}));let S=U0(()=>{let o=0,m=0;for(let g of O()){if(g.kind!=="status")continue;if(g.added!=null)o=Math.max(o,String(g.added).length+1);if(g.deleted!=null)m=Math.max(m,String(g.deleted).length+1)}return{added:o,deleted:m}}),n=U0(()=>{let o=S(),m=(o.added>0?o.added+1:0)+(o.deleted>0?o.deleted+1:0);return Math.max(8,Z().width-6-m)});function i(){let o=O();if(o.length===0)return;H(Math.min(q()+1,o.length-1))}function P(){if(O().length===0)return;H(Math.max(q()-1,0))}function a(){let o=O(),m=q(),g=o[m];if(!g)return;if(g.kind!=="dir")return;if(!g.expanded&&g.hasChildren)u((J0)=>{let w=new Set(J0);return w.add(g.path),w});else if(g.expanded){if(m+1<o.length)H(m+1)}}function Y0(){if(X()!=="all")return;let o=O(),m=q(),g=o[m];if(!g)return;if(g.kind==="dir"&&g.expanded){u((w)=>{let _=new Set(w);return _.delete(g.path),_});return}if(g.kind!=="dir"&&g.kind!=="file")return;let J0=g.depth-1;if(J0<0)return;for(let w=m-1;w>=0;w--){let _=o[w];if(!_)continue;if(_.kind==="dir"&&_.depth===J0){H(w);return}}}function Q0(){let o=O(),m=q();if(m<0||m>=o.length)return;let g=o[m];if(!g)return;if(g.kind==="dir"){u((J0)=>{let w=new Set(J0);if(w.has(g.path))w.delete(g.path);else w.add(g.path);return w});return}J.onOpenFile(g.path)}function e(){let o=O(),m=q();if(m<0||m>=o.length)return;let g=o[m];if(!g||g.kind==="dir")return;J.onMention?.(g.path)}function v(){B((o)=>o+1),J.onRefresh?.()}function j0(){let o=O(),m=q();if(m<0||m>=o.length)return;let g=o[m];if(!g||g.kind==="dir")return;let J0=J.worktreePath();if(!J0)return;let w=`${J0}/${g.path}`;DO(w)}UO({focused:Y,moveDown:i,moveUp:P,setTab:(o)=>Q(o),currentTab:X,openCurrent:Q0,mentionCurrent:e,createPR:J.onCreatePR,openExternal:j0,refresh:v,expandOrDescend:a,collapseOrParent:Y0});let k;return E0(GJ([q,O],([o,m])=>{if(!k)return;if(m.length===0)return;let g=k.scrollTop,J0=k.viewport.height;if(J0<=0)return;if(o<g)k.scrollTo({x:0,y:o});else if(o>=g+J0)k.scrollTo({x:0,y:o-J0+1})})),(()=>{var o=W("box"),m=W("box"),g=W("box"),J0=W("scrollbox");return D(o,m),D(o,J0),G(o,"flexDirection","column"),G(o,"flexGrow",1),G(o,"paddingTop",1),G(o,"paddingBottom",1),G(o,"paddingLeft",0),G(o,"paddingRight",0),K(o,b(z0,{get when(){return J.onZenToggle||J.onCreatePR},get children(){var w=W("box");return G(w,"flexDirection","row"),G(w,"justifyContent","flex-end"),G(w,"gap",2),G(w,"paddingBottom",1),G(w,"flexShrink",0),K(w,b(z0,{get when(){return J.onZenToggle},get children(){var _=W("box"),q0=W("text"),B0=W("text");return D(_,q0),D(_,B0),G(_,"flexDirection","row"),G(_,"gap",1),G(_,"onMouseUp",()=>J.onZenToggle?.()),D(q0,R0("[~]")),G(q0,"wrapMode","none"),G(B0,"wrapMode","none"),K(B0,()=>F("files.actions.zen")),T((F0)=>{var l0=z.accent,$0=lG.BOLD,C0=z.text;return l0!==F0.e&&(F0.e=G(q0,"fg",l0,F0.e)),$0!==F0.t&&(F0.t=G(q0,"attributes",$0,F0.t)),C0!==F0.a&&(F0.a=G(B0,"fg",C0,F0.a)),F0},{e:void 0,t:void 0,a:void 0}),_}}),null),K(w,b(z0,{get when(){return J.onCreatePR},get children(){var _=W("box"),q0=W("text"),B0=W("text");return D(_,q0),D(_,B0),G(_,"flexDirection","row"),G(_,"gap",1),G(_,"onMouseUp",()=>J.onCreatePR?.()),D(q0,R0("[P]")),G(q0,"wrapMode","none"),G(B0,"wrapMode","none"),K(B0,()=>F("files.actions.createPR")),T((F0)=>{var l0=z.accent,$0=lG.BOLD,C0=z.text;return l0!==F0.e&&(F0.e=G(q0,"fg",l0,F0.e)),$0!==F0.t&&(F0.t=G(q0,"attributes",$0,F0.t)),C0!==F0.a&&(F0.a=G(B0,"fg",C0,F0.a)),F0},{e:void 0,t:void 0,a:void 0}),_}}),null),w}}),m),D(m,g),G(m,"flexDirection","row"),G(m,"justifyContent","space-between"),G(m,"paddingBottom",0),G(m,"flexShrink",0),G(g,"flexDirection","row"),G(g,"gap",2),K(g,b(o0,{each:Qw,children:(w)=>{let _=()=>X()===w;return(()=>{var q0=W("text");return G(q0,"wrapMode","none"),G(q0,"onMouseUp",()=>Q(w)),K(q0,()=>qw(w)),T((B0)=>{var F0=_()?z.primary:z.textMuted,l0=_()?lG.BOLD:void 0;return F0!==B0.e&&(B0.e=G(q0,"fg",F0,B0.e)),l0!==B0.t&&(B0.t=G(q0,"attributes",l0,B0.t)),B0},{e:void 0,t:void 0}),q0})()}})),K(m,b(z0,{get when(){return J.cornerBadge?.()},children:(w)=>(()=>{var _=W("text");return G(_,"wrapMode","none"),K(_,()=>w().text),T((q0)=>{var B0=w().active?z.accent:z.textMuted,F0=w().active?lG.BOLD:void 0;return B0!==q0.e&&(q0.e=G(_,"fg",B0,q0.e)),F0!==q0.t&&(q0.t=G(_,"attributes",F0,q0.t)),q0},{e:void 0,t:void 0}),_})()}),null),K(o,b(z0,{get when(){return X()==="changes"},get children(){var w=W("box"),_=W("text");return D(w,_),G(w,"flexDirection","column"),G(w,"paddingBottom",1),G(w,"flexShrink",0),G(w,"gap",0),G(_,"wrapMode","none"),K(_,()=>F("files.legend.changes")),T((q0)=>G(_,"fg",z.textMuted,q0)),w}}),J0),K(o,b(z0,{get when(){return X()!=="changes"},get children(){var w=W("box");return G(w,"flexDirection","row"),G(w,"paddingBottom",1),G(w,"flexShrink",0),w}}),J0),Dz((w)=>{k=w},J0),G(J0,"flexGrow",1),G(J0,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),K(J0,b(z0,{get when(){return J.worktreePath()==null},get children(){var w=W("box"),_=W("text");return D(w,_),G(w,"paddingTop",1),G(w,"paddingLeft",1),K(_,()=>F("files.empty.noTask")),T((q0)=>G(_,"fg",z.textMuted,q0)),w}}),null),K(J0,b(z0,{get when(){return L0(()=>J.worktreePath()!=null)()&&M()!=null},get children(){var w=W("box"),_=W("text"),q0=W("text");return D(w,_),D(w,q0),G(w,"paddingTop",1),G(w,"paddingLeft",1),G(w,"flexDirection","column"),G(w,"gap",0),G(_,"wrapMode","word"),K(_,()=>Gw(M()??"")),G(q0,"wrapMode","word"),K(q0,()=>F("files.error.retryHint")),T((B0)=>{var{error:F0,textMuted:l0}=z;return F0!==B0.e&&(B0.e=G(_,"fg",F0,B0.e)),l0!==B0.t&&(B0.t=G(q0,"fg",l0,B0.t)),B0},{e:void 0,t:void 0}),w}}),null),K(J0,b(z0,{get when(){return L0(()=>J.worktreePath()!=null&&M()==null&&O().length===0)()&&(X()==="all"&&U()!=null||X()==="changes"&&f()!=null)},get children(){var w=W("box"),_=W("text");return D(w,_),G(w,"paddingTop",1),G(w,"paddingLeft",1),K(_,(()=>{var q0=L0(()=>X()==="all");return()=>q0()?F("files.empty.noFiles"):F("files.empty.noChanges")})()),T((q0)=>G(_,"fg",z.textMuted,q0)),w}}),null),K(J0,b(z0,{get when(){return L0(()=>J.worktreePath()!=null&&M()==null)()&&O().length>0},get children(){var w=W("box");return G(w,"flexShrink",0),G(w,"gap",0),G(w,"paddingRight",1),K(w,b(o0,{get each(){return O()},children:(_,q0)=>{let B0=()=>q0()===q(),F0=(()=>{var J1=W("text");return G(J1,"wrapMode","none"),K(J1,()=>B0()?"\u258C":" "),T((P0)=>G(J1,"fg",B0()?z.focusAccent:void 0,P0)),J1})(),l0=()=>B0()?z.backgroundElement:void 0;if(_.kind==="dir"){let J1=" ".repeat(_.depth),P0=_.expanded?"\u25BE":"\u25B8";return(()=>{var z1=W("box"),Q1=W("box"),k0=W("text");return D(z1,Q1),G(z1,"flexDirection","row"),G(z1,"gap",0),G(z1,"onMouseUp",()=>{H(q0()),u((s)=>{let q1=new Set(s);if(q1.has(_.path))q1.delete(_.path);else q1.add(_.path);return q1})}),K(z1,F0,Q1),D(Q1,k0),G(Q1,"flexGrow",1),G(Q1,"paddingRight",1),G(k0,"wrapMode","none"),K(k0,()=>`${J1}${P0} ${_.name}/`),T((s)=>{var q1=l0(),c=z.textMuted,H0=lG.BOLD;return q1!==s.e&&(s.e=G(z1,"backgroundColor",q1,s.e)),c!==s.t&&(s.t=G(k0,"fg",c,s.t)),H0!==s.a&&(s.a=G(k0,"attributes",H0,s.a)),s},{e:void 0,t:void 0,a:void 0}),z1})()}if(_.kind==="file"){let J1=" ".repeat(_.depth);return(()=>{var P0=W("box"),z1=W("box"),Q1=W("text");return D(P0,z1),G(P0,"flexDirection","row"),G(P0,"gap",0),G(P0,"onMouseUp",()=>{H(q0()),J.onOpenFile(_.path)}),K(P0,F0,z1),D(z1,Q1),G(z1,"flexGrow",1),G(z1,"paddingRight",1),G(Q1,"wrapMode","none"),K(Q1,()=>`${J1} ${_.name}`),T((k0)=>{var s=l0(),q1=z.text;return s!==k0.e&&(k0.e=G(P0,"backgroundColor",s,k0.e)),q1!==k0.t&&(k0.t=G(Q1,"fg",q1,k0.t)),k0},{e:void 0,t:void 0}),P0})()}let $0=Xw(_.status),C0=()=>{switch($0){case"success":return z.success;case"warning":return z.warning;case"error":return z.error;case"info":return z.info;default:return z.textMuted}},t0=S(),O1=_.added==null?" ".repeat(t0.added):`+${_.added}`.padStart(t0.added),j1=_.deleted==null?" ".repeat(t0.deleted):`-${_.deleted}`.padStart(t0.deleted);return(()=>{var J1=W("box"),P0=W("box"),z1=W("text"),Q1=W("text");return D(J1,P0),G(J1,"flexDirection","row"),G(J1,"gap",0),G(J1,"onMouseUp",()=>{H(q0()),J.onOpenFile(_.path)}),K(J1,F0,P0),D(P0,z1),D(P0,Q1),G(P0,"flexDirection","row"),G(P0,"flexGrow",1),G(P0,"gap",1),G(P0,"paddingRight",1),G(z1,"wrapMode","none"),K(z1,()=>_.status),G(Q1,"wrapMode","none"),G(Q1,"flexGrow",1),K(Q1,()=>FO(_.path,n())),K(P0,b(z0,{get when(){return t0.added>0},get children(){var k0=W("text");return G(k0,"wrapMode","none"),K(k0,O1),T((s)=>G(k0,"fg",z.success,s)),k0}}),null),K(P0,b(z0,{get when(){return t0.deleted>0},get children(){var k0=W("text");return G(k0,"wrapMode","none"),K(k0,j1),T((s)=>G(k0,"fg",z.error,s)),k0}}),null),T((k0)=>{var s=l0(),q1=C0(),c=z.text;return s!==k0.e&&(k0.e=G(J1,"backgroundColor",s,k0.e)),q1!==k0.t&&(k0.t=G(z1,"fg",q1,k0.t)),c!==k0.a&&(k0.a=G(Q1,"fg",c,k0.a)),k0},{e:void 0,t:void 0,a:void 0}),J1})()}})),w}}),null),K(o,b(z0,{get when(){return J.worktreePath()!=null},get children(){var w=W("box"),_=W("text");return D(w,_),G(w,"flexDirection","row"),G(w,"paddingTop",1),G(w,"flexShrink",0),G(_,"wrapMode","none"),K(_,()=>F("files.footer.openHint")),T((q0)=>G(_,"fg",z.textMuted,q0)),w}}),null),o})()}var Qw;var gO=C(()=>{x();x();x();x();x();x();x();x();x();t1();x();H1();P1();WO();fO();LO();RO();Qw=["all","changes"]});import{promises as Hw}from"fs";import jw from"path";async function Yj(J,z){let Z=new AbortController,Y=setTimeout(()=>Z.abort(),Bw);try{let X=await LZ("git",z,{cwd:J,env:Xz(),signal:Z.signal});if(Z.signal.aborted)return null;if(X.status!==0)return null;return X.stdout.trim()}finally{clearTimeout(Y)}}async function Vw(J){return await Yj(J,["rev-parse","--abbrev-ref","HEAD"])||"HEAD"}async function Ww(J){let z=await Yj(J,["symbolic-ref","refs/remotes/origin/HEAD","--short"]);if(!z)return"main";return z.startsWith("origin/")?z.slice(7):z}async function Uw(J){let z=await Yj(J,["rev-parse","--abbrev-ref","@{u}"]);return z!==null&&z.length>0}async function fw(J){let z=await Yj(J,["status","--porcelain"]);if(!z)return 0;return z.split(`
133
+ `).filter((Z)=>Z.length>0).length}async function Kw(J){let[z,Z,Y,X]=await Promise.all([Vw(J),Ww(J),Uw(J),fw(J)]);return{branch:z,targetBranch:Z,hasUpstream:Y,dirtyCount:X}}function Dw(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 Lw(J){return J?"The current branch tracks an upstream.":"There is no upstream branch yet."}function Fw(J,z){let Z={branch:z.branch,targetBranch:z.targetBranch,dirtyCountSentence:Dw(z.dirtyCount),upstreamSentence:Lw(z.hasUpstream)};return J.replace(/\{\{([a-zA-Z][a-zA-Z0-9_]*)\}\}/g,(Y,X)=>Object.hasOwn(Z,X)?Z[X]:Y)}async function Mw(J){let z=jw.join(J,".kobe","pr-instructions.md");try{let Z=await Hw.readFile(z,"utf8");return Z.length>0?Z:kO}catch{return kO}}async function bO(J){let[z,Z]=await Promise.all([Mw(J),Kw(J)]);return Fw(z,Z)}var Bw=5000,kO=`The user likes the current state of the code.
134
+
135
+ {{dirtyCountSentence}}
136
+ The current branch is {{branch}}.
137
+ The target branch is {{targetBranch}}.
138
+
139
+ {{upstreamSentence}}
140
+ The user requested a PR.
141
+
142
+ Follow these steps to create a PR:
143
+
144
+ - If you have any skills related to creating PRs, invoke them now. Instructions there should take precedence over these instructions.
145
+ - Run \`git diff\` to review uncommitted changes.
146
+ - Commit them. Follow any instructions the user gave you about writing commit messages.
147
+ - Push to origin.
148
+ - 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.
149
+
150
+ If any of these steps fail, ask the user for help.`;var IO=C(()=>{oZ();PG()});var $7={};X1($7,{startOpsPreview:()=>xw,startOpsHost:()=>kw});import{createHash as Ow}from"crypto";import{SyntaxStyle as Aw}from"@opentui/core";function Cw(J){let{theme:z}=I0(),[Z,Y]=p(null),X=!1;r1(()=>{(async()=>{let R=await S9({logTag:"ops-activity",channels:["transcript.activity"]});if(!R)return;if(X){R.dispose();return}Y(R)})()}),k1(()=>{X=!0,Z()?.dispose()});let Q=()=>Z()?.transcriptActivitySignal()()??null,q=()=>Q()?.get(J.worktree)??null,[H,j]=p(0),[B,U]=p(0),V=!1;E0(()=>{let R=Q();if(!R)return;let O=R.get(J.worktree)?.mtimeMs??0;if(!V&&O>0)V=!0,j(O);U(O)}),E0(()=>{if(Q()!==null)return;let R=!1,O,S=s9,n=0,i=0;async function P(){if(!await wz()){if(!R)O=setTimeout(()=>void P(),S);return}try{let a=await FX(J.vendor,J.worktree);if(R)return;if(!V)V=!0,j(a),i=a;if(a>i)i=a,n=0;else n++;U(a)}catch{n++}finally{if(!R)S=t9(S,n),O=setTimeout(()=>void P(),S)}}P(),k1(()=>{if(R=!0,O)clearTimeout(O)})});let f=()=>V&&B()>H(),L=()=>f()?{text:F("ops.badge.newActivity"),active:!0}:null;function M(){j(B())}r1(()=>{if(!J.targetPane)return;let R=IQ(J.vendor),O=!1,S=null,n=!1,i="",P=!1,a=0,Y0=null,Q0=nG,e=0,v,j0=()=>Q()!==null;async function k(J0){if(J0===Y0)return;Y0=J0,await JY(J.targetPane,Rw,J0)}async function o(){if(j0())return q()?.completionId??null;return(await R.latestCompletion(J.worktree))?.id??null}async function m(){try{i=SO(await dX(J.targetPane,80)),S=await o(),n=!0,await k(R.supportsCompletionMarkers()?"idle":"unknown")}catch{}}async function g(){if(!await wz()){if(!O)v=setTimeout(()=>void g(),Q0);return}let J0=j0();try{let w=SO(await dX(J.targetPane,80));if(O)return;if(J0&&!n)S=q()?.completionId??null,n=!0;let _=J0?q()?.mtimeMs??0:0,q0=_>e;if(_>e)e=_;if(w!==i)i=w,P=!0,a=0,await k(R.supportsCompletionMarkers()?"running":"unknown");else if(P)a++;if(R.supportsCompletionMarkers()&&P&&a>=Nw){let B0=await o();if(!O&&B0!==null&&B0!==S)S=B0,P=!1,a=0,await k("done")}Q0=J0?t3(Q0,q0,Y0):nG}catch{Q0=nG}finally{if(!O)v=setTimeout(()=>void g(),Q0)}}m(),v=setTimeout(()=>void g(),nG),k1(()=>{if(O=!0,v)clearTimeout(v)})});function A(R){if(!J.taskId)return;fz(T1(J.taskId),{cwd:J.worktree,command:VU({worktree:J.worktree,relPath:R,cliInvocation:c1()}),name:gw(R)})}function N(R){if(!J.taskId){A(R);return}let O=`${J.worktree}/${R}`;QO(T1(J.taskId),J.worktree,O).then((S)=>{if(!S)A(R)})}function u(R){if(!J.targetPane)return;W9(J.targetPane,`@${R} `)}async function h(){if(!J.targetPane)return;let R=await bO(J.worktree);await W9(J.targetPane,R),await FG(J.targetPane,"Enter")}function I(){if(!J.taskId)return;let R=T1(J.taskId),O=c1(),S=`${a1()}${vJ(O)} layout --session ${s0(R)} --action zen-toggle`;w0(["run-shell","-b",S])}return(()=>{var R=W("box");return G(R,"flexDirection","column"),G(R,"flexGrow",1),K(R,b(CO,{worktreePath:()=>J.worktree,focused:()=>!0,onOpenFile:N,onMention:u,onCreatePR:()=>void h(),get onZenToggle(){return J.taskId?I:void 0},cornerBadge:L,onRefresh:M})),T((O)=>G(R,"backgroundColor",z.background,O)),R})()}function gw(J){let z=J.lastIndexOf("/");return z>=0?J.slice(z+1):J}function SO(J){return Ow("sha1").update(J).digest("hex")}async function kw(J){await VJ({logContext:"ops",providers:{kv:!1,focus:!1},setup:()=>({root:()=>b(Cw,J)})})}function bw(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 Iw(J,z){let Z=await SX(J,["diff","HEAD","--",z]);return Z.status===0?Z.stdout:""}async function Sw(J,z){return await wH(J,z)??""}function yw(J){let z={fg:J.primary},Z={fg:J.success},Y={fg:J.info},X={fg:J.warning},Q={fg:J.accent},q={fg:J.textMuted,italic:!0},H={fg:J.textMuted},j={fg:J.text};return Aw.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:Q,"constant.builtin":Q,boolean:Q,number:Q,operator:H,"punctuation.bracket":H,"punctuation.delimiter":H,"punctuation.special":H,variable:j,"variable.member":j,"variable.parameter":j,"variable.builtin":Q,property:j,attribute:X,label:j,module:j})}function Tw(J){let{theme:z}=I0(),Z=yw(z),Y=bw(J.relPath),[X]=DZ(()=>J.relPath,async(Q)=>{let q=await Iw(J.worktree,Q);if(q.trim().length>0)return{kind:"diff",text:q};return{kind:"code",text:await Sw(J.worktree,Q)}});return L1(()=>({bindings:[{key:"q",cmd:()=>process.exit(0)},{key:"escape",cmd:()=>process.exit(0)},{key:"ctrl+c",cmd:()=>process.exit(0)}]})),(()=>{var Q=W("box"),q=W("box"),H=W("text"),j=W("text"),B=W("text"),U=W("box");return D(Q,q),D(Q,U),G(Q,"flexDirection","column"),G(Q,"flexGrow",1),D(q,H),D(q,j),D(q,B),G(q,"flexDirection","row"),G(q,"gap",1),G(q,"paddingLeft",1),G(q,"paddingRight",1),K(H,()=>J.relPath),K(j,(()=>{var V=L0(()=>X()?.kind==="diff");return()=>V()?F("ops.preview.diffVsHead"):F("ops.preview.file")})()),K(B,()=>F("ops.preview.closeHint")),G(U,"flexGrow",1),K(U,b(z0,{get when(){return X()},get fallback(){return(()=>{var V=W("text");return K(V,()=>F("ops.preview.loading")),T((f)=>G(V,"fg",z.textMuted,f)),V})()},children:(V)=>b(z0,{get when(){return V().kind==="diff"},get fallback(){return(()=>{var f=W("code");return G(f,"filetype",Y),G(f,"syntaxStyle",Z),T((L)=>G(f,"content",V().text,L)),f})()},get children(){var f=W("diff");return G(f,"view","unified"),G(f,"filetype",Y),G(f,"syntaxStyle",Z),G(f,"showLineNumbers",!0),T((L)=>G(f,"diff",V().text,L)),f}})})),T((V)=>{var{background:f,accent:L,textMuted:M,textMuted:A}=z;return f!==V.e&&(V.e=G(Q,"backgroundColor",f,V.e)),L!==V.t&&(V.t=G(H,"fg",L,V.t)),M!==V.a&&(V.a=G(j,"fg",M,V.a)),A!==V.o&&(V.o=G(B,"fg",A,V.o)),V},{e:void 0,t:void 0,a:void 0,o:void 0}),Q})()}async function xw(J){await VJ({providers:{kv:!1,focus:!1},setup:()=>({root:()=>b(Tw,J)})})}var Nw=2,Rw="@kobe_tab_state";var a7=C(()=>{x();x();x();x();x();x();x();GZ();Eq();zH();S1();GO();tJ();ZQ();PH();H1();X7();P1();t1();YZ();TJ();gO();hZ();IO()});var uO={};X1(uO,{runAddRemote:()=>ww,parseRemoteFlags:()=>EO});import{createInterface as Ew}from"readline";function EO(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)hz(`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(xO),process.exit(0);break;default:hz(`unknown flag "${Y}"`)}}return z}function hz(J){process.stderr.write(`kobe add --remote: ${J}
5
151
 
6
- ${PV}`),process.exit(2)}async function EA(J){let z=uA({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 wA(J){if(!OB())Uz("remote projects are experimental and disabled \u2014 enable Settings \u2192 Dev \u2192 Experimental \u2192 Remote projects first");let z=hV(J);if(!z.host)Uz("--host is required");if(!z.user)Uz("--user is required");if(!z.path)Uz("--path (remote base path) is required");if(z.key&&z.password)Uz("choose ONE of --key or --password, not both");if(!z.key&&!z.password)Uz("an auth method is required: --key [path] or --password");let Z;if(z.password){if(!UB())Uz("--password needs the macOS keychain (unsupported on this platform)");let G=IV(z.host,z.user,z.port),q=await EA(`Password for ${z.user}@${z.host}: `);if(q.length===0)Uz("empty password");if(!SV(G,q))Uz("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}=RB({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 PA(z,Z)}async function PA(J,z){if(z.kind==="password"&&!UB())return;let Z=z.kind==="key"?{kind:"key",keyPath:z.keyPath}:{kind:"password",getPassword:()=>tQ(z.keychainRef)},Y={host:J.host,user:J.user,port:J.port,auth:Z,controlPath:iQ(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 PV;var mV=C(()=>{p1();WB();KB();S1();PV=`Usage: kobe add --remote --host <host> --user <user> --path <basePath>
152
+ ${xO}`),process.exit(2)}async function uw(J){let z=Ew({input:process.stdin,output:process.stdout,terminal:!0}),Z=process.stdout,Y=!1,X=Z._writeToOutput?.bind(Z);return Z._writeToOutput=(Q)=>{if(!Y||!X)process.stdout.write(Q)},process.stdout.write(J),Y=!0,new Promise((Q)=>{z.question("",(q)=>{if(Y=!1,X)Z._writeToOutput=X;process.stdout.write(`
153
+ `),z.close(),Q(q)})})}async function ww(J){if(!Nj())hz("remote projects are experimental and disabled \u2014 enable Settings \u2192 Dev \u2192 Experimental \u2192 Remote projects first");let z=EO(J);if(!z.host)hz("--host is required");if(!z.user)hz("--user is required");if(!z.path)hz("--path (remote base path) is required");if(z.key&&z.password)hz("choose ONE of --key or --password, not both");if(!z.key&&!z.password)hz("an auth method is required: --key [path] or --password");let Z;if(z.password){if(!bj())hz("--password needs the macOS keychain (unsupported on this platform)");let Q=JU(z.host,z.user,z.port),q=await uw(`Password for ${z.user}@${z.host}: `);if(q.length===0)hz("empty password");if(!zU(Q,q))hz("failed to store the password in the keychain");Z={kind:"password",keychainRef:Q}}else Z={kind:"key",keyPath:z.key?.path};let{key:Y,added:X}=Cj({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 Pw(z,Z)}async function Pw(J,z){if(z.kind==="password"&&!bj())return;let Z=z.kind==="key"?{kind:"key",keyPath:z.keyPath}:{kind:"password",getPassword:()=>Qq(z.keychainRef)},Y={host:J.host,user:J.user,port:J.port,auth:Z,controlPath:sG(J.host,J.user,J.port)};process.stdout.write("checking connection\u2026 ");try{if((await new oY(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 xO;var wO=C(()=>{o1();gj();Ij();I1();xO=`Usage: kobe add --remote --host <host> --user <user> --path <basePath>
8
154
  [--port N] [--key [path] | --password]
9
155
 
10
156
  Register an SSH-backed project. Worktrees + the engine run on <host> under
11
157
  <basePath>. Choose ONE auth: --key [path] (ssh-agent when path omitted) or
12
158
  `+`--password (prompted, stored in the OS keychain \u2014 never in state.json).
13
- `});function Zq(J){return J.remoteVersion>=J.localMin&&J.localVersion>=J.remoteMin}function cV(J,z){if(!J)return!1;return J!==z}function vA(J){return typeof J==="string"&&hA.has(J)}function dV(J){if(!Array.isArray(J))return null;let z=new Set;for(let Z of J)if(vA(Z))z.add(Z);return z.size>0?z:null}function Kz(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 VG(J){return`${JSON.stringify(J)}
14
- `}var Jz=3,SZ=2,gB,hA;var GY=C(()=>{gB=["task.snapshot","issue.snapshot","active-task","update","engine-state","ui-prefs","keybindings","task.jobs","worktree.changes","transcript.activity","session.deliver"],hA=new Set(gB)});import{createHash as mA}from"crypto";import{homedir as Yq,tmpdir as cA}from"os";import{join as QY}from"path";function dA(J){return mA("sha1").update(J).digest("hex").slice(0,8)}function CB(J,z,Z,Y){if(Buffer.byteLength(J,"utf8")<=NB)return J;let X=dA(z),G=Y===void 0?"":`-${Y}`,q=QY(cA(),`kobe-${X}-${Z}${G}.sock`);if(Buffer.byteLength(q,"utf8")<=NB)return q;throw Error(`kobe socket path exceeds ${NB} bytes even after fallback: ${q}`)}function hz(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 CB(QY(Z,".kobe","daemon.sock"),Z,"daemon");let Y=process.env.XDG_RUNTIME_DIR;if(Y&&Y.length>0)return CB(QY(Y,"kobe.sock"),Y,"daemon");let X=Yq();return CB(QY(X,".kobe","daemon.sock"),X,"daemon")}function XZ(J=process.env.KOBE_HOME_DIR??Yq()){let z=process.env.KOBE_DAEMON_PID_PATH;if(z&&z.length>0)return z;return QY(J,".kobe","daemon.pid")}function Xq(J=process.env.KOBE_HOME_DIR??Yq()){return QY(J,".kobe","daemon.log")}function nV(J=process.env.KOBE_HOME_DIR??Yq()){return QY(J,".kobe","client.log")}var NB=100;var rY=()=>{};import{appendFile as iV,mkdir as nA}from"fs/promises";import{dirname as iA}from"path";function Gq(J){aV=J}function lA(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 _V(J,z,Z=new Date){return`[${Z.toISOString()}] client ${aV} [${J}] pid=${process.pid}: ${z}
15
- `}function $A(){if(lV)return;lV=!0;try{process.stderr.write(`[kobe] client log write failed; continuing without it
16
- `)}catch{}}function pV(J){let z=nV();$V=$V.then(async()=>{try{await iV(z,J)}catch(Z){if(Z?.code==="ENOENT")await nA(iA(z),{recursive:!0}),await iV(z,J);else throw Z}}).catch(()=>$A())}function GZ(J,z){pV(_V(J,z))}function qJ(J,z){let Z=lA(z);pV(_V(J,Z.stack??Z.message))}function rV(){if(bB||kB)return;bB=(J)=>qJ("crash-net",J),kB=(J)=>qJ("crash-net",J),process.on("unhandledRejection",bB),process.on("uncaughtException",kB)}var aV="client",lV=!1,$V,bB,kB;var qY=C(()=>{rY();$V=Promise.resolve()});import{connect as aA}from"net";import{StringDecoder as _A}from"string_decoder";class zz{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(VG({type:"request",id:Y,name:J,payload:z})),X}openSocket(){return new Promise((J,z)=>{let Z=aA(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 _A("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 UG=C(()=>{GY();qY()});import{spawnSync as pA}from"child_process";import{existsSync as rA,statSync as oA}from"fs";import{homedir as sA}from"os";import KG from"path";async function oV(J=tA){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(KG.join(X,".claude","local","claude"));if(G)return G;let q=J.env("NVM_BIN");if(q){let B=Z(KG.join(q,"claude"));if(B)return B}let H=KG.join(X,".nvm","versions","node"),j=J.readdir(H).sort().reverse();for(let B of j){let V=Z(KG.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(KG.join(X,B));if(V)return V}throw new Qq(z)}var Qq,tA;var sV=C(()=>{Qq=class Qq 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}};tA={fileExists(J){try{return oA(J).isFile()}catch{return!1}},env(J){return process.env[J]},home(){return sA()},which(J){let z=process.platform==="win32"?"where":"which",Z=pA(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&&rA(X)?X:void 0}return Y},readdir(J){try{return dQ("fs").readdirSync(J)}catch{return[]}}}});import{spawnSync as eA}from"child_process";import{existsSync as JR,statSync as zR}from"fs";import{homedir as ZR}from"os";import tV from"path";async function eV(J=YR){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(tV.join(G,"codex"));if(q)return q}for(let q of[".local/bin/codex",".bun/bin/codex","bin/codex"]){let H=Z(tV.join(X,q));if(H)return H}throw new qq(z)}var qq,YR;var J7=C(()=>{qq=class qq 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}};YR={fileExists(J){try{return zR(J).isFile()}catch{return!1}},env(J){return process.env[J]},home(){return ZR()},which(J){let z=process.platform==="win32"?"where":"which",Z=eA(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&&JR(X)?X:void 0}return Y},readdir(J){try{return dQ("fs").readdirSync(J)}catch{return[]}}}});import{spawnSync as XR}from"child_process";import{existsSync as GR,statSync as QR}from"fs";import{homedir as qR}from"os";import yZ from"path";async function z7(J=HR){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(yZ.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=[yZ.join(j,".npm-global/bin"),yZ.join(j,".local/bin"),yZ.join(j,".bun/bin"),yZ.join(j,"bin")];if(J.platform()==="win32"){let V=J.env("APPDATA"),f=J.env("LOCALAPPDATA");if(B.unshift(yZ.join(j,"AppData/Roaming/npm")),V)B.unshift(yZ.join(V,"npm"));if(f)B.unshift(yZ.join(f,"npm"))}for(let V of B){let f=G(V);if(f)return f}throw new Hq(z)}var Hq,HR;var Z7=C(()=>{Hq=class Hq 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}};HR={fileExists(J){try{return QR(J).isFile()}catch{return!1}},env(J){return process.env[J]},home(){return qR()},which(J){let z=process.platform==="win32"?"where":"which",Z=XR(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&&GR(X)?X:void 0}return Y},platform(){return process.platform}}});import{readFileSync as jR,statSync as BR}from"fs";import{readFile as fR,stat as WR}from"fs/promises";async function oY(J,z=Y7){let{size:Z}=await WR(J);if(Z>z)return"";return fR(J,"utf8")}function X7(J,z=Y7){let Z;try{Z=BR(J)}catch(Y){if(Y.code==="ENOENT")return null;throw Y}if(Z.size>z)return null;return jR(J,"utf8")}function TZ(J,z=VR){return J.length<=z}var Y7=104857600,VR=8388608;var DG=()=>{};import{homedir as UR}from"os";import xZ from"path";function KR(J,z){let Z=J("CLAUDE_CONFIG_DIR")?.trim();if(Z)return xZ.join(Z,".claude.json");return xZ.join(z,".claude.json")}function DR(J,z){let Y=J("CODEX_HOME")?.trim()??xZ.join(z,".codex");return xZ.join(Y,"auth.json")}function LR(J,z){let Y=J("COPILOT_HOME")?.trim()??xZ.join(z,".copilot");return xZ.join(Y,"config.json")}function FR(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 Bq(J){try{return{found:!0,path:await J()}}catch(z){if(z instanceof Qq||z instanceof qq||z instanceof Hq)return{found:!1,error:"not found on PATH"};return{found:!1,error:z instanceof Error?z.message:String(z)}}}async function G7(J){return(await Promise.all([["claude",()=>J.findClaudeBinary()],["codex",()=>J.findCodexBinary()],["copilot",()=>J.findCopilotBinary()]].map(async([Y,X])=>(await Bq(X)).found?Y:null))).filter((Y)=>Y!==null)}function MR(J=sY){if(J!==sY)return G7(J);if(jq)return jq;let z=G7(J).catch((Z)=>{throw jq=null,Z});return jq=z,z}async function QZ(J=sY){return[...await MR(J),...lJ()]}async function fq(J=sY){let z=await Bq(()=>J.findClaudeBinary()),Z=KR(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 Wq(J=sY){let z=await Bq(()=>J.findCodexBinary()),Z=DR(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=FR(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 Vq(J=sY){let z=await Bq(()=>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=LR(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(!IB(X))return{binary:z,account:{kind:"none"}};if(Q7(X,["github_token","oauth_token","access_token","token","selectedUser","currentUser","user"]))return{binary:z,account:{kind:"oauth"}};return{binary:z,account:{kind:"none"}}}function IB(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}function Q7(J,z,Z=0){if(Z>4||!IB(J))return!1;for(let[Y,X]of Object.entries(J)){if(z.includes(Y)&&typeof X==="string"&&X.length>0)return!0;if(IB(X)&&Q7(X,z,Z+1))return!0}return!1}var sY,jq=null;var HY=C(()=>{S1();sV();J7();Z7();DG();sY={readFile(J){return X7(J)},env(J){return process.env[J]},home(){return UR()},findClaudeBinary(){return oV()},findCodexBinary(){return eV()},findCopilotBinary(){return z7()}}});function q7(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 H7(J){return J.isMeta===!0||J.isCompactSummary===!0}function j7(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 ih,mkdir as lh,readdir as SB,stat as OR,unlink as $h}from"fs/promises";import{homedir as B7}from"os";import Uq from"path";function RR(J){return J.replace(/[/.]/g,"-")}async function LG(J){if(!J)return[];let z=Uq.join(B7(),".claude","projects",RR(J)),Z;try{Z=await SB(z)}catch{return[]}let Y=[];for(let X of Z){if(!X.endsWith(".jsonl"))continue;let G=Uq.join(z,X),q=0;try{q=(await OR(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 f7(J){return(await LG(J))[0]?.mtimeMs??0}async function W7(J,z=AR){let Z=z.projectsDir(),Y=await z.readdir(Z);for(let X of Y){let G=Uq.join(Z,X,`${J}.jsonl`),q;try{q=await z.readFile(G)}catch{continue}return gR(NR(q,J))}return[]}function gR(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 NR(J,z){let Z=[];for(let Y of J.split(`
22
- `)){let X=Y.trim();if(!X)continue;if(!TZ(X))continue;let G;try{G=JSON.parse(X)}catch{continue}if(!yB(G))continue;let q=CR(G,z);if(q)Z.push(q)}return Z}function CR(J,z){if(H7(J))return null;let Z=yB(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=q7(Z.content);if(Y==="user"&&j7(X))return null;let G=typeof J.timestamp==="string"?J.timestamp:new Date().toISOString(),q=typeof J.sessionId==="string"?J.sessionId:z,H=bR(Z.usage);return H?{role:Y,blocks:X,timestamp:G,sessionId:q,usage:H}:{role:Y,blocks:X,timestamp:G,sessionId:q}}function bR(J){if(!yB(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 yB(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}var AR;var TB=C(()=>{DG();AR={projectsDir(){return Uq.join(B7(),".claude","projects")},async readdir(J){try{return await SB(J)}catch{return[]}},async readFile(J){return await oY(J)},async pathExists(J){try{return await SB(J),!0}catch{return!1}}}});import{fileURLToPath as U7}from"url";function i1(){if(import.meta.url.endsWith(".js"))return["kobe"];let z=U7(new URL("./index.ts",import.meta.url)),Z=U7(import.meta.resolve("@opentui/solid/preload"));return[process.execPath,"--preload",Z,"--conditions=browser",z]}function FG(){if(import.meta.url.endsWith(".js"))return["kobe"];if(Bun.which("kobe"))return["kobe"];return i1()}var qZ=()=>{};function OG(J){return`kobe-hidden-${J.replace(/[^A-Za-z0-9_-]/g,"")||"session"}`}function L7(J){let z=Number.parseInt(J.replace(/^@/,""),10);return Number.isFinite(z)&&z>=0?1000+z:1000}function EB(J){if(!Number.isFinite(J))return D7;return Math.max(kR,Math.min(IR,Math.round(J)))}function jY(J){if(!Number.isFinite(J))return null;return Math.max(SR,Math.min(yR,Math.round(J)))}function M7(J){let z=Number.parseInt(J[Kq]??"",10),Z=Number.isFinite(z)&&z>0?EB(z):D7,Y=jY(Number.parseInt(J[Dq]??"",10)),X=jY(Number.parseInt(J[Lq]??"",10)),G=[];if(Y!==null)G.push("-x",`${Y}%`);if(X!==null)G.push("-y",`${X}%`);return{tasksWidth:Z,rightColumnWidthPct:Y??100-wB,opsHeightPct:X??AG,rightColumnResizeArgs:G}}function Z1(J){return $Y(J)}function uJ(J){return aY(J)}function EJ(J,z){let X=`${z?xB:""}${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 O7(J){return`trap '' INT; while :; do ${J}; sleep 1; done`}function eY(J,z,Z){return`${J}${z.map(Z1).join(" ")} engine-tab-exit --session ${Z1(Z)}`}function A7(){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 PB(J){let z=typeof J==="number"?J:J==null?Number.NaN:Number.parseInt(J,10);if(!Number.isFinite(z))return TR;return Math.max(xR,Math.min(uR,Math.round(z)))}function ER(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 R7(J,z,Z){let Y=EJ(J,Z),X=z?.initScript?.trim();if(!X)return Y;let G=PB(z?.timeoutSeconds),q=ER(X,G);if(z?.markerPath){let H=Z1(z.markerPath),j=Z1(wR(z.markerPath));return xB+[`if [ ! -f ${H} ]; then`,q,`if [ "$__kobe_init_rc" -eq 0 ]; then mkdir -p ${j} && : > ${H}; fi`,"fi",Y].join(`
24
- `)}return xB+[q,Y].join(`
25
- `)}function wR(J){let z=J.lastIndexOf("/");return z<=0?".":J.slice(0,z)}function K7(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 g7(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 N7(J){return`${uJ([...J.cliInvocation,"update-page"])}`}function C7(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 EZ(J,z={}){let Z=[...J,"tasks"];if(z.initialTaskId)Z.push("--initial-task-id",z.initialTaskId);return uJ(Z)}function JX(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} || { ${K7(J.cwd)}; }`}return K7(J.cwd)}var D7=32,Zz="tasks",BY="claude",Dz="ops",Lz="shell",MG="workspace_aux",uB=4,Fz="@kobe_hidden_shell_pane",xJ="@kobe_hidden_tasks_pane",uZ="@kobe_zen_panes",tY="@kobe_zen",Kq="@kobe_tasks_width",kR=16,IR=120,wB=60,AG=50,Dq="@kobe_right_width_pct",Lq="@kobe_ops_height_pct",SR=10,yR=90,F7,xB="trap ':' INT; ",TR=120,xR=5,uR=3600;var Mz=C(()=>{pQ();F7=[Kq,Dq,Lq]});function Yz(J){return!!J&&typeof J==="object"&&!Array.isArray(J)}function hR(J){return J.map((z)=>uJ(["hook",z.verb]))}function vR(J,z){if(!Yz(J)||!Array.isArray(J.hooks))return!1;return J.hooks.some((Z)=>Yz(Z)&&typeof Z.command==="string"&&z.some((Y)=>Z.command.includes(Y)))}function I7(J,z=FG()){let Z={};for(let{event:Y,matcher:X,verb:G}of J){let H={hooks:[{type:"command",command:uJ([...z,"hook",G])}]};if(X)H.matcher=X;Z[Y]=[H]}return Z}function Fq(J,z,Z,Y=FG()){let X=hR(Z),{hooks:G,...q}=J,H=Yz(G)?{...G}:{},j=z?I7(Z,Y):{};for(let{event:B}of Z){let f=(Array.isArray(H[B])?H[B]:[]).filter((U)=>!vR(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 S7(J=FG()){let z=uJ([...J,"hook",k7]);return{[b7]:[{matcher:PR,hooks:[{type:"command",command:z}]}]}}function mR(J){if(!Yz(J)||!Array.isArray(J.hooks))return!1;return J.hooks.some((z)=>Yz(z)&&typeof z.command==="string"&&z.command.includes(k7))}function Mq(J,z,Z=FG()){let{hooks:Y,...X}=J,G=Yz(Y)?{...Y}:{},q=b7,j=(Array.isArray(G[q])?G[q]:[]).filter((B)=>!mR(B));if(z)j.push(...S7(Z)[q]);if(j.length>0)G[q]=j;else delete G[q];return Object.keys(G).length>0?{...X,hooks:G}:{...X}}var b7="PostToolUse",PR="Bash",k7="worktree-created";var hB=C(()=>{qZ();Mz()});import{mkdir as cR,readFile as dR,writeFile as nR}from"fs/promises";import{dirname as iR}from"path";async function lR(J){try{let z=JSON.parse(await dR(J,"utf8"));return Yz(z)?z:{}}catch{return{}}}async function zX(J,z){try{let Z=await lR(J),Y=z(Z);if(JSON.stringify(Y)===JSON.stringify(Z))return;await cR(iR(J),{recursive:!0}),await nR(J,`${JSON.stringify(Y,null,2)}
26
- `)}catch{}}class RG{supportsHooks(){return!0}activityDetailFromPayload(J,z){return}supportsWorktreeSync(){return!1}async removeWorktreeSyncHook(J){}async installActivityHooks(J){await zX(J,(z)=>Fq(z,!0,this.eventMap))}async removeActivityHooks(J){await zX(J,(z)=>Fq(z,!1,this.eventMap))}async installWorktreeWatchHook(J){await zX(J,(z)=>Mq(z,!0))}async removeWorktreeWatchHook(J){await zX(J,(z)=>Mq(z,!1))}}var vB=C(()=>{hB()});import{homedir as $R}from"os";import{join as aR}from"path";function _R(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 pR(){return aR($R(),".claude","settings.json")}function oR(J){if(!Yz(J)||!Array.isArray(J.hooks))return!1;return J.hooks.some((z)=>Yz(z)&&typeof z.command==="string"&&z.command.includes(rR))}function sR(J,z){let{hooks:Z,...Y}=J,{WorktreeCreate:X,...G}=Yz(Z)?Z:{},H=(Array.isArray(X)?X:[]).filter((B)=>!oR(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 y7,Wv,rR="worktree-created",mB;var T7=C(()=>{vB();hB();y7=[{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"}],Wv=y7.map((J)=>J.event);mB=class mB extends RG{vendor="claude";eventMap=y7;globalSettingsPath(){return pR()}activityDetailFromPayload(J,z){if(J==="turn-failed")return{failure:_R(z.error_type)};if(J==="awaiting-input")return{waiting:"permission"};return}supportsWorktreeSync(){return!0}async removeWorktreeSyncHook(J){await zX(J,(z)=>sR(z,null))}}});function cB(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(!tR(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 tR(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}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(!eR(Z)&&!J2(Z))return!1}return!0}function eR(J){return J.startsWith("<environment_context>")&&J.endsWith("</environment_context>")}function J2(J){return J.startsWith("# AGENTS.md instructions for ")&&J.includes(`
27
- <INSTRUCTIONS>
28
- `)&&J.endsWith("</INSTRUCTIONS>")}var u7=()=>{};function E7(J,z={}){let Z=dB(J.input_tokens,0),Y=dB(J.cached_input_tokens,0),X=dB(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}:{},...z2(z.contextWindowTokens)?{context_window_tokens:z.contextWindowTokens}:{}}}function dB(J,z){return typeof J==="number"&&Number.isFinite(J)?J:z}function z2(J){return typeof J==="number"&&Number.isFinite(J)&&J>0}import{readdir as Z2,stat as Y2,unlink as Mv}from"fs/promises";import{homedir as X2}from"os";import fY from"path";async function $B(J=WY){let z=J.sessionsDir(),Z=(await J.readdir(z)).sort().reverse(),Y=[];for(let X of Z){let G=fY.join(z,X),q=(await J.readdir(G)).sort().reverse();for(let H of q){let j=fY.join(G,H),B=(await J.readdir(j)).sort().reverse();for(let V of B){let f=fY.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(fY.join(f,L)),Y.length>=w7){if(!P7)P7=!0,console.warn(`[codex history] rollout scan truncated at ${w7} files; older sessions may be omitted`);return Y}}}}return Y}async function G2(J,z=WY){if(!J)return;let Z=J.toLowerCase(),Y=await $B(z);for(let X of Y)if(fY.basename(X).match(c7)?.[1]?.toLowerCase()===Z)return X;return}function Q2(J){for(let z of J.split(`
29
- `)){let Z=z.trim();if(!Z)continue;if(!TZ(Z))return"";try{let Y=JSON.parse(Z);if(Y.type==="session_meta")return Y.payload?.cwd??""}catch{}return""}return""}async function d7(J,z){let Z=h7.get(z);if(!Z)Z=new Map,h7.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=Q2(X);if(G)Z.set(J,G);return G}async function n7(J,z=WY){if(!J)return[];let Z=await $B(z),Y=[],X=0;for(let G of Z){if(X>=q2)break;if(X++,await d7(G,z)!==J)continue;let q=fY.basename(G).match(c7)?.[1];if(q)Y.push(q)}return Y.reverse()}async function aB(J,z=WY){if(!J)return null;let Z=await $B(z),Y=0;for(let X of Z){if(Y>=H2)break;if(Y++,await d7(X,z)!==J)continue;try{return{path:X,mtimeMs:(await z.stat(X)).mtimeMs}}catch{}}return null}async function i7(J,z=WY){return(await aB(J,z))?.mtimeMs??0}async function l7(J,z=WY){return(await j2(J,z)).messages}async function j2(J,z=WY){let Z=await G2(J,z);if(!Z)return{messages:[]};let Y;try{Y=await z.readFile(Z)}catch{return{messages:[]}}let X=B2(f2(Y,J)),G=D2(Y);return{messages:X,...G?{usageMetrics:G}:{}}}function B2(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 f2(J,z){let Z=[];for(let Y of J.split(`
30
- `)){let X=Y.trim();if(!X)continue;if(!TZ(X))continue;let G;try{G=JSON.parse(X)}catch{continue}if(!gG(G))continue;if(G.type!=="response_item")continue;let q=gG(G.payload)?G.payload:void 0;if(!q)continue;let H=typeof G.timestamp==="string"?G.timestamp:new Date().toISOString(),j=W2(q,H,z);if(j)Z.push(j)}return Z}function W2(J,z,Z){if(J.type==="message"){let Y=J.role;if(Y!=="user"&&Y!=="assistant"&&Y!=="system")return;let X=cB(J.content);if(Y==="user"&&x7(X))return;return{role:Y,blocks:X,timestamp:z,sessionId:Z}}if(J.type==="reasoning")return V2(J,z,Z);if(J.type==="function_call")return nB(J,z,Z,{name:lB(J.name,"function_call"),input:iB(J.arguments)});if(J.type==="custom_tool_call")return nB(J,z,Z,{name:lB(J.name,"custom_tool_call"),input:iB(J.input)});if(J.type==="tool_search_call")return nB(J,z,Z,{name:"tool_search_call",input:Oq(J,["type","call_id","status"])});if(J.type==="function_call_output"||J.type==="custom_tool_call_output")return v7(J,z,Z,iB(J.output));if(J.type==="tool_search_output")return v7(J,z,Z,Oq(J,["type","call_id"]));if(J.type==="web_search_call"||J.type==="image_generation_call"||J.type==="local_shell_call")return U2(J,z,Z);return}function V2(J,z,Z){let Y=K2(J);if(Y.length===0)return;return{role:"assistant",blocks:[{type:"thinking",text:Y}],timestamp:z,sessionId:Z}}function nB(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 v7(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 U2(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=lB(J.name,Y),q=Oq(J,["type","call_id","status"]),H=Oq(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 K2(J){let z=m7(J.content);if(z.length>0)return z;let Z=typeof J.text==="string"?J.text:"";if(Z.length>0)return Z;return m7(J.summary)}function m7(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(!gG(Z))continue;let Y=typeof Z.text==="string"?Z.text:"";if(Y.length>0)z.push(Y)}return z.join("")}function Oq(J,z){let Z={};for(let[Y,X]of Object.entries(J))if(!z.includes(Y))Z[Y]=X;return Z}function lB(J,z){return typeof J==="string"&&J.length>0?J:z}function iB(J){if(typeof J!=="string")return J;try{return JSON.parse(J)}catch{return J}}function D2(J){let z,Z=null;for(let Y of J.split(`
31
- `)){let X=Y.trim();if(!X)continue;if(!TZ(X))continue;let G;try{G=JSON.parse(X)}catch{continue}if(!gG(G))continue;let q=typeof G.timestamp==="string"?L2(G.timestamp):null;if(G.type==="response_item")continue;if(G.type!=="turn.completed")continue;let H=gG(G.usage)?G.usage:void 0;if(!H)continue;let j=E7(H);if(!j)continue;if(q!==null&&(Z===null||q>Z))Z=q,z=j;else if(Z===null)z=j}return z}function L2(J){let z=new Date(J).getTime();return Number.isFinite(z)?z:null}function gG(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}var WY,w7=5000,P7=!1,c7,h7,q2=200,H2=12;var _B=C(()=>{DG();u7();WY={sessionsDir(){return fY.join(X2(),".codex","sessions")},async readdir(J){try{return await Z2(J)}catch{return[]}},async readFile(J){return await oY(J)},stat:Y2};c7=/([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})\.jsonl$/i;h7=new WeakMap});import{homedir as F2}from"os";import{join as M2}from"path";function O2(){return M2(F2(),".codex","hooks.json")}var a7,Sv,pB;var _7=C(()=>{vB();a7=[{event:"SessionStart",verb:"session-start"},{event:"UserPromptSubmit",verb:"turn-start"},{event:"Stop",verb:"turn-complete"}],Sv=a7.map((J)=>J.event);pB=class pB extends RG{vendor="codex";eventMap=a7;globalSettingsPath(){return O2()}}});function p7(J){if(!Aq(J))return;let z=Aq(J.modelMetrics)?J.modelMetrics:void 0;if(!z)return;let Z=0,Y=0,X=0;for(let q of Object.values(z)){if(!Aq(q)||!Aq(q.usage))continue;Z+=Rq(q.usage.inputTokens,0),Y+=Rq(q.usage.outputTokens,0),X+=Rq(q.usage.cacheReadTokens,0)}let G=Rq(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 Aq(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}function Rq(J,z){return typeof J==="number"&&Number.isFinite(J)?J:z}import{readdir as A2,rm as R2,stat as g2}from"fs/promises";import{homedir as N2}from"os";import wZ from"path";async function oB(J=VY){let z=wZ.join(J.copilotDir(),"session-state");return(await J.readdir(z)).map((Y)=>wZ.join(z,Y))}async function r7(J,z=VY){let Z=[];for(let Y of await oB(z)){let X=await sB(Y,z);if(X.cwd!==J)continue;Z.push({id:X.id??wZ.basename(Y),updatedAt:X.updatedAt??""})}return Z.sort((Y,X)=>Y.updatedAt.localeCompare(X.updatedAt)).map((Y)=>Y.id)}async function o7(J,z=VY){if(!J)return 0;let Z=0;for(let Y of await oB(z)){if((await sB(Y,z)).cwd!==J)continue;try{let{mtimeMs:G}=await z.stat(wZ.join(Y,"events.jsonl"));if(G>Z)Z=G}catch{}}return Z}async function C2(J,z=VY){let Z=await b2(J,z);if(!Z)return{messages:[]};let Y=await z.readFile(wZ.join(Z,"events.jsonl")).catch(()=>""),X=I2(Y,J);return{messages:X.messages,...X.usageMetrics?{usageMetrics:X.usageMetrics}:{}}}async function s7(J,z=VY){return(await C2(J,z)).messages}async function b2(J,z=VY){for(let Z of await oB(z)){if(wZ.basename(Z)===J)return Z;let Y=await sB(Z,z);if(Y.id===J||Y.name?.toLowerCase()===J.toLowerCase())return Z}return}async function sB(J,z=VY){let Z=await z.readFile(wZ.join(J,"workspace.yaml")).catch(()=>"");return k2(Z)}function k2(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 I2(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(!TZ(j))continue;let B;try{B=JSON.parse(j)}catch{continue}if(!rB(B)||typeof B.type!=="string")continue;let V=typeof B.timestamp==="string"?B.timestamp:new Date().toISOString(),f=rB(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,S2),"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(!rB(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=p7(f)}return{messages:Z,usageMetrics:G,firstUserMessage:q}}function rB(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}var VY,S2=200;var t7=C(()=>{DG();VY={copilotDir(){let J=process.env.COPILOT_HOME?.trim();if(J)return J;return wZ.join(N2(),".copilot")},async readdir(J){try{return await A2(J)}catch{return[]}},async readFile(J){return await oY(J)},stat:g2,async rm(J){await R2(J,{recursive:!0,force:!0})}}});function tB(J){return JJ(J).createHookAdapter()}class gq{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 eB=C(()=>{HZ()});import{readFile as e7}from"fs/promises";class Nq{supportsCompletionMarkers(){return!0}}function NG(J){return JJ(J).createTurnDetector()}function u2(J,z="claude",Z=0){let Y=null,X=0;for(let G of J.split(`
34
- `)){X++;let q=JU(G);if(!q)continue;let H=ZU(q.message)?q.message:q;if(H.role!=="assistant")continue;if(!("content"in H))continue;let j=zU(q,Z),B={id:`claude:${z}:${j}:${X}`,timestampMs:j,source:"claude"};if(!Y||B.timestampMs>=Y.timestampMs)Y=B}return Y}function E2(J,z="codex"){let Z=null,Y=0;for(let X of J.split(`
35
- `)){Y++;let G=JU(X);if(!G||G.type!=="turn.completed")continue;let q=zU(G,0),H={id:`codex:${z}:${q}:${Y}`,timestampMs:q,source:"codex"};if(!Z||H.timestampMs>=Z.timestampMs)Z=H}return Z}function JU(J){let z=J.trim();if(!z)return null;try{let Z=JSON.parse(z);return ZU(Z)?Z:null}catch{return null}}function zU(J,z){let Z=typeof J.timestamp==="string"?Date.parse(J.timestamp):Number.NaN;return Number.isFinite(Z)?Z:z}function ZU(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}var T2,J9,x2,z9,Cq;var bq=C(()=>{TB();_B();HZ();T2={listSessionFiles:(J)=>LG(J),readFile:(J)=>e7(J,"utf8")};J9=class J9 extends Nq{deps;vendor="claude";cache=new Map;constructor(J=T2){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=u2(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}};x2={findLatestRollout:(J)=>aB(J),readFile:(J)=>e7(J,"utf8")};z9=class z9 extends Nq{deps;vendor="codex";cache=null;constructor(J=x2){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=E2(Z,z.path);return this.cache={path:z.path,mtimeMs:z.mtimeMs,marker:Y},Y}};Cq=class Cq extends Nq{vendor;constructor(J){super();this.vendor=J}supportsCompletionMarkers(){return!1}async latestCompletion(){return null}}});function c2(J){return{vendor:J,builtin:!1,displayName:J,defaultCommand:[J],history:w2,detectAccount:async()=>({binary:{found:!1,error:"custom engine: kobe has no account detector for it"},account:{kind:"none"}}),createHookAdapter:()=>new gq(J),createTurnDetector:()=>new Cq(J)}}function JJ(J){return KJ(J)?m2[J]:c2(J)}var w2,P2,h2,v2,m2;var HZ=C(()=>{t1();HY();TB();T7();_B();_7();t7();eB();bq();w2={async listSessionIdsForWorktree(){return[]},async readHistory(){return[]},async latestTranscriptMtimeForWorktree(){return 0}},P2={async listSessionIdsForWorktree(J){return[...await LG(J)].sort((Z,Y)=>Z.mtimeMs-Y.mtimeMs).map((Z)=>Z.sessionId)},readHistory:(J)=>W7(J),latestTranscriptMtimeForWorktree:(J)=>f7(J)},h2={listSessionIdsForWorktree:(J)=>n7(J),readHistory:(J)=>l7(J),latestTranscriptMtimeForWorktree:(J)=>i7(J)},v2={listSessionIdsForWorktree:(J)=>r7(J),readHistory:(J)=>s7(J),latestTranscriptMtimeForWorktree:(J)=>o7(J)},m2={claude:{vendor:"claude",builtin:!0,displayName:"Claude",defaultCommand:["claude"],history:P2,detectAccount:(J)=>fq(J),createHookAdapter:()=>new mB,createTurnDetector:()=>new J9},codex:{vendor:"codex",builtin:!0,displayName:"Codex",defaultCommand:["codex"],effortLevels:["none","low","medium","high","xhigh"],history:h2,detectAccount:(J)=>Wq(J),createHookAdapter:()=>new pB,createTurnDetector:()=>new z9},copilot:{vendor:"copilot",builtin:!0,displayName:"Copilot",defaultCommand:["copilot"],history:v2,detectAccount:(J)=>Vq(J),createHookAdapter:()=>new gq("copilot"),createTurnDetector:()=>new Cq("copilot")}}});async function ZX(J,z){if(!z)return 0;return JJ(J).history.latestTranscriptMtimeForWorktree(z)}var kq=C(()=>{HZ()});function YU(J){return typeof J==="string"&&d2.includes(J)}var CG=(J)=>J,zJ="claude",d2;var Xz=C(()=>{d2=["backlog","in_progress","in_review","done","canceled","error"]});function Iq(J){return n2.includes(J)}function XU(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 n2;var Sq=C(()=>{n2=["session-start","turn-start","turn-complete","turn-failed","awaiting-input","session-end"]});function i2(){let J=process.env.KOBE_ENGINE_STATE_TTL_MS;if(J===void 0)return GU;let z=Number(J);return Number.isFinite(z)&&z>0?z:GU}class Z9{bus;staleMs;now;livenessAt;activity=new Map;constructor(J,z=i2(),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=XU(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 GU=600000;var QU=C(()=>{Sq()});function qU(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 yq(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 HU(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=qU(Z);return Y.length>0?Buffer.from(Y,"utf8").toString("utf8"):Y}async function YX(J,z=zJ){if(!J)return"";let{history:Z}=JJ(z),Y=await Z.listSessionIdsForWorktree(J);for(let X of Y.slice(0,l2)){let G=HU(await Z.readHistory(X));if(G)return G}return""}async function jU(J,z){if(!z)return"";try{return HU(await JJ(J).history.readHistory(z))}catch{return""}}var l2=8;var Tq=C(()=>{HZ();Xz()});function BU(J){let z=String(J),Z=z.length-1;return u1.context.id+(Z?String.fromCharCode(96+Z):"")+z}function G9(J){u1.context=J}function $2(){return{...u1.context,id:u1.getNextContextId(),count:0}}function UY(J,z){let Z=N1,Y=o0,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(()=>PZ(q)));Az.afterCreateOwner&&Az.afterCreateOwner(q),o0=q,N1=null;try{return wJ(H,!0)}finally{N1=Z,o0=Y}}function s(J,z){z=z?Object.assign({},wq,z):wq;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(FU(Z),Az.afterCreateSignal)Az.afterCreateSignal(Z)}let Y=(X)=>{if(typeof X==="function")if(W0&&W0.running&&W0.sources.has(Z))X=X(Z.tValue);else X=X(Z.value);return q9(Z,X)};return[MU.bind(Z),Y]}function fU(J,z,Z){let Y=QX(J,z,!0,$J,Z);if(GX&&W0&&W0.running)ZJ.push(Y);else DY(Y)}function vz(J,z,Z){let Y=QX(J,z,!1,$J,Z);if(GX&&W0&&W0.running)ZJ.push(Y);else DY(Y)}function d0(J,z,Z){LU=Xg;let Y=QX(J,z,!1,$J,Z),X=IG&&aJ(IG);if(X)Y.suspense=X;if(!Z||!Z.render)Y.user=!0;AJ?AJ.push(Y):DY(Y)}function D0(J,z,Z){Z=Z?Object.assign({},wq,Z):wq;let Y=QX(J,z,!0,0,Z);if(Y.observers=null,Y.observerSlots=null,Y.comparator=Z.equals||void 0,GX&&W0&&W0.running)Y.tState=$J,ZJ.push(Y);else DY(Y);return MU.bind(Y)}function s2(J){return J&&typeof J==="object"&&"then"in J}function KY(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=Y9,j=null,B=!1,V=!1,f="initialValue"in G,U=typeof Y==="function"&&D0(Y),L=new Set,[O,A]=(G.storage||s)(G.initialValue),[g,E]=s(void 0),[h,I]=s(void 0,{equals:!1}),[N,M]=s(f?"ready":"unresolved");if(u1.context){if(j=u1.getNextContextId(),G.ssrLoadFrom==="initial")H=G.initialValue;else if(u1.load&&u1.has(j))H=u1.load(j)}function y(X0,G0,f0,_){if(q===X0){if(q=null,_!==void 0&&(f=!0),(X0===H||G0===H)&&G.onHydrated)queueMicrotask(()=>G.onHydrated(_,{value:G0}));if(H=Y9,W0&&X0&&B)W0.promises.delete(X0),B=!1,wJ(()=>{W0.running=!0,c(G0,f0)},!1);else c(G0,f0)}return G0}function c(X0,G0){wJ(()=>{if(G0===void 0)A(()=>X0);M(G0!==void 0?"errored":f?"ready":"unresolved"),E(G0);for(let f0 of L.keys())f0.decrement();L.clear()},!1)}function d(){let X0=IG&&aJ(IG),G0=O(),f0=g();if(f0!==void 0&&!q)throw f0;if(N1&&!N1.user&&X0)fU(()=>{if(h(),q){if(X0.resolved&&W0&&B)W0.promises.add(q);else if(!L.has(X0))X0.increment(),L.add(X0)}});return G0}function i(X0=!0){if(X0!==!1&&V)return;V=!1;let G0=U?U():Y;if(B=W0&&W0.running,G0==null||G0===!1){y(q,YJ(O));return}if(W0&&q)W0.promises.delete(q);let f0,_=H!==Y9?H:YJ(()=>{try{return X(G0,{value:O(),refetching:X0})}catch(M0){f0=M0}});if(f0!==void 0){y(q,void 0,Eq(f0),G0);return}else if(!s2(_))return y(q,_,void 0,G0),_;if(q=_,"v"in _){if(_.s===1)y(q,_.v,void 0,G0);else y(q,void 0,Eq(_.v),G0);return _}return V=!0,queueMicrotask(()=>V=!1),wJ(()=>{M(f?"refreshing":"pending"),I()},!1),_.then((M0)=>y(_,M0,void 0,G0),(M0)=>y(_,void 0,Eq(M0),G0))}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=o0;if(U)fU(()=>(t=o0,i(!1)));else i(!1);return[d,{refetch:(X0)=>e2(t,()=>i(X0)),mutate:A}]}function mq(J){return wJ(J,!1)}function YJ(J){if(!XX&&N1===null)return J();let z=N1;N1=null;try{if(XX)return XX.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 a1(J){d0(()=>YJ(J))}function C1(J){if(o0===null)console.warn("cleanups created outside a `createRoot` or `render` will never be run");else if(o0.cleanups===null)o0.cleanups=[J];else o0.cleanups.push(J);return J}function t2(J,z){if(bG||(bG=Symbol("error")),o0=QX(void 0,void 0,!0),o0.context={...o0.context,[bG]:[z]},W0&&W0.running)W0.sources.add(o0);try{return J()}catch(Z){yG(Z)}finally{o0=o0.owner}}function cq(){return N1}function e2(J,z){let Z=o0,Y=N1;o0=J,N1=null;try{return wJ(z,!0)}catch(X){yG(X)}finally{o0=Z,N1=Y}}function Jg(J){if(W0&&W0.running)return J(),W0.done;let z=N1,Z=o0;return Promise.resolve().then(()=>{N1=z,o0=Z;let Y;if(GX||IG)Y=W0||(W0={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 wJ(J,!1),N1=o0=null,Y?Y.done:void 0})}function VU(J,z){let Z=QX(()=>YJ(()=>{return Object.assign(J,{[r2]:!0}),J(z)}),void 0,!0,0);return Z.props=z,Z.observers=null,Z.observerSlots=null,Z.name=J.name,Z.component=J,DY(Z),Z.tValue!==void 0?Z.tValue:Z.value}function FU(J){if(o0){if(o0.sourceMap)o0.sourceMap.push(J);else o0.sourceMap=[J];J.graph=o0}if(Az.afterRegisterGraph)Az.afterRegisterGraph(J)}function mz(J,z){let Z=Symbol("context");return{id:Z,Provider:Gg(Z,z),defaultValue:J}}function aJ(J){let z;return o0&&o0.context&&(z=o0.context[J.id])!==void 0?z:J.defaultValue}function zg(J){let z=D0(J),Z=D0(()=>Q9(z()),void 0,{name:"children"});return Z.toArray=()=>{let Y=Z();return Array.isArray(Y)?Y:Y!=null?[Y]:[]},Z}function MU(){let J=W0&&W0.running;if(this.sources&&(J?this.tState:this.state))if((J?this.tState:this.state)===$J)DY(this);else{let z=ZJ;ZJ=null,wJ(()=>Pq(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&&W0.sources.has(this))return this.tValue;return this.value}function q9(J,z,Z){let Y=W0&&W0.running&&W0.sources.has(J)?J.tValue:J.value;if(!J.comparator||!J.comparator(Y,z)){if(W0){let X=W0.running;if(X||!Z&&W0.sources.has(J))W0.sources.add(J),J.tValue=z;if(!X)J.value=z}else J.value=z;if(J.observers&&J.observers.length)wJ(()=>{for(let X=0;X<J.observers.length;X+=1){let G=J.observers[X],q=W0&&W0.running;if(q&&W0.disposed.has(G))continue;if(q?!G.tState:!G.state){if(G.pure)ZJ.push(G);else AJ.push(G);if(G.observers)AU(G)}if(!q)G.state=$J;else G.tState=$J}if(ZJ.length>1e6){if(ZJ=[],a2)throw Error("Potential Infinite Loop Detected.");throw Error()}},!1)}return z}function DY(J){if(!J.fn)return;PZ(J);let z=vq;if(UU(J,W0&&W0.running&&W0.sources.has(J)?J.tValue:J.value,z),W0&&!W0.running&&W0.sources.has(J))queueMicrotask(()=>{wJ(()=>{W0&&(W0.running=!0),N1=o0=J,UU(J,J.tValue,z),N1=o0=null},!1)})}function UU(J,z,Z){let Y,X=o0,G=N1;N1=o0=J;try{Y=J.fn(z)}catch(q){if(J.pure)if(W0&&W0.running)J.tState=$J,J.tOwned&&J.tOwned.forEach(PZ),J.tOwned=void 0;else J.state=$J,J.owned&&J.owned.forEach(PZ),J.owned=null;return J.updatedAt=Z+1,yG(q)}finally{N1=G,o0=X}if(!J.updatedAt||J.updatedAt<=Z){if(J.updatedAt!=null&&"observers"in J)q9(J,Y,!0);else if(W0&&W0.running&&J.pure){if(!W0.sources.has(J))J.value=Y;W0.sources.add(J),J.tValue=Y}else J.value=Y;J.updatedAt=Z}}function QX(J,z,Z,Y=$J,X){let G={fn:J,state:Y,updatedAt:null,owned:null,sources:null,sourceSlots:null,cleanups:null,value:z,owner:o0,context:o0?o0.context:null,pure:Z};if(W0&&W0.running)G.state=0,G.tState=Y;if(o0===null)console.warn("computations created outside a `createRoot` or `render` will never be disposed");else if(o0!==o2)if(W0&&W0.running&&o0.pure)if(!o0.tOwned)o0.tOwned=[G];else o0.tOwned.push(G);else if(!o0.owned)o0.owned=[G];else o0.owned.push(G);if(X&&X.name)G.name=X.name;if(XX&&G.fn){let q=G.fn,[H,j]=s(void 0,{equals:!1}),B=XX.factory(q,j);C1(()=>B.dispose());let V,f=()=>Jg(j).then(()=>{if(V)V.dispose(),V=void 0});G.fn=(U)=>{if(H(),W0&&W0.running){if(!V)V=XX.factory(q,f);return V.track(U)}return B.track(U)}}return Az.afterCreateOwner&&Az.afterCreateOwner(G),G}function SG(J){let z=W0&&W0.running;if((z?J.tState:J.state)===0)return;if((z?J.tState:J.state)===kG)return Pq(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<vq)){if(z&&W0.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(W0.disposed.has(X))return}if((z?J.tState:J.state)===$J)DY(J);else if((z?J.tState:J.state)===kG){let X=ZJ;ZJ=null,wJ(()=>Pq(J,Z[0]),!1),ZJ=X}}}function wJ(J,z){if(ZJ)return J();let Z=!1;if(!z)ZJ=[];if(AJ)Z=!0;else AJ=[];vq++;try{let Y=J();return Zg(Z),Y}catch(Y){if(!Z)AJ=null;ZJ=null,yG(Y)}}function Zg(J){if(ZJ){if(GX&&W0&&W0.running)Yg(ZJ);else OU(ZJ);ZJ=null}if(J)return;let z;if(W0){if(!W0.promises.size&&!W0.queue.size){let{sources:Y,disposed:X}=W0;AJ.push.apply(AJ,W0.effects),z=W0.resolve;for(let G of AJ)"tState"in G&&(G.state=G.tState),delete G.tState;W0=null,wJ(()=>{for(let G of X)PZ(G);for(let G of Y){if(G.value=G.tValue,G.owned)for(let q=0,H=G.owned.length;q<H;q++)PZ(G.owned[q]);if(G.tOwned)G.owned=G.tOwned;delete G.tValue,delete G.tOwned,G.tState=0}WU(!1)},!1)}else if(W0.running){W0.running=!1,W0.effects.push.apply(W0.effects,AJ),AJ=null,WU(!0);return}}let Z=AJ;if(AJ=null,Z.length)wJ(()=>LU(Z),!1);else Az.afterUpdate&&Az.afterUpdate();if(z)z()}function OU(J){for(let z=0;z<J.length;z++)SG(J[z])}function Yg(J){for(let z=0;z<J.length;z++){let Z=J[z],Y=W0.queue;if(!Y.has(Z))Y.add(Z),GX(()=>{Y.delete(Z),wJ(()=>{W0.running=!0,SG(Z)},!1),W0&&(W0.running=!1)})}}function Xg(J){let z,Z=0;for(z=0;z<J.length;z++){let Y=J[z];if(!Y.user)SG(Y);else J[Z++]=Y}if(u1.context){if(u1.count){u1.effects||(u1.effects=[]),u1.effects.push(...J.slice(0,Z));return}G9()}if(u1.effects&&(u1.done||!u1.count))J=[...u1.effects,...J],Z+=u1.effects.length,delete u1.effects;for(z=0;z<Z;z++)SG(J[z])}function Pq(J,z){let Z=W0&&W0.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===$J){if(X!==z&&(!X.updatedAt||X.updatedAt<vq))SG(X)}else if(G===kG)Pq(X,z)}}}function AU(J){let z=W0&&W0.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=kG;else Y.state=kG;if(Y.pure)ZJ.push(Y);else AJ.push(Y);Y.observers&&AU(Y)}}}function PZ(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--)PZ(J.tOwned[z]);delete J.tOwned}if(W0&&W0.running&&J.pure)RU(J,!0);else if(J.owned){for(z=J.owned.length-1;z>=0;z--)PZ(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(W0&&W0.running)J.tState=0;else J.state=0;delete J.sourceMap}function RU(J,z){if(!z)J.tState=0,W0.disposed.add(J);if(J.owned)for(let Z=0;Z<J.owned.length;Z++)RU(J.owned[Z])}function Eq(J){if(J instanceof Error)return J;return Error(typeof J==="string"?J:"Unknown error",{cause:J})}function KU(J,z,Z){try{for(let Y of z)Y(J)}catch(Y){yG(Y,Z&&Z.owner||null)}}function yG(J,z=o0){let Z=bG&&z&&z.context&&z.context[bG],Y=Eq(J);if(!Z)throw Y;if(AJ)AJ.push({fn(){KU(Y,Z,z)},state:$J});else KU(Y,Z,z)}function Q9(J){if(typeof J==="function"&&!J.length)return Q9(J());if(Array.isArray(J)){let z=[];for(let Z=0;Z<J.length;Z++){let Y=Q9(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 Gg(J,z){return function(Y){let X;return vz(()=>X=YJ(()=>{return o0.context={...o0.context,[J]:Y.value},zg(()=>Y.children)}),void 0,z),X}}function DU(J){for(let z=0;z<J.length;z++)J[z]()}function qg(J,z,Z={}){let Y=[],X=[],G=[],q=0,H=z.length>1?[]:null;return C1(()=>DU(G)),()=>{let j=J()||[],B=j.length,V,f;return j[hq],YJ(()=>{let L,O,A,g,E,h,I,N,M;if(B===0){if(q!==0)DU(G),G=[],Y=[],X=[],q=0,H&&(H=[]);if(Z.fallback)Y=[Qg],X[0]=UY((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]=UY(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--)M=j[f],V=L.get(M),O[f]=V===void 0?-1:V,L.set(M,f);for(V=h;V<=I;V++)if(M=Y[V],f=L.get(M),f!==void 0&&f!==-1)A[f]=X[V],g[f]=G[V],H&&(E[f]=H[V]),f=O[f],L.set(M,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]=UY(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 gU(J,z){if(Hg){if(u1.context){let Z=u1.context;G9($2());let Y=VU(J,z||{});return G9(Z),Y}}return VU(J,z||{})}function xq(){return!0}function X9(J){return!(J=typeof J==="function"?J():J)?{}:J}function Bg(){for(let J=0,z=this.length;J<z;++J){let Z=this[J]();if(Z!==void 0)return Z}}function dq(...J){let z=!1;for(let q=0;q<J.length;q++){let H=J[q];z=z||!!H&&Oz in H,J[q]=typeof H==="function"?(z=!0,D0(H)):H}if(p2&&z)return new Proxy({get(q){for(let H=J.length-1;H>=0;H--){let j=X9(J[H])[q];if(j!==void 0)return j}},has(q){for(let H=J.length-1;H>=0;H--)if(q in X9(J[H]))return!0;return!1},keys(){let q=[];for(let H=0;H<J.length;H++)q.push(...Object.keys(X9(J[H])));return[...new Set(q)]}},jg);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:Bg.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 X1(J){let z="fallback"in J&&{fallback:()=>J.fallback};return D0(qg(()=>J.each,J.children,z||void 0),void 0,{name:"value"})}function Y0(J){let z=J.keyed,Z=D0(()=>J.when,void 0,{name:"condition value"}),Y=z?Z:D0(Z,void 0,{equals:(X,G)=>!X===!G,name:"condition"});return D0(()=>{let X=Y();if(X){let G=J.children;return typeof G==="function"&&G.length>0?YJ(()=>G(z?X:()=>{if(!YJ(Y))throw fg("Show");return Z()})):G}return J.fallback},void 0,{name:"value"})}function NU(J){let z;if(u1.context&&u1.load)z=u1.load(u1.getContextId());let[Z,Y]=s(z,{name:"errored"});return uq||(uq=new Set),uq.add(Y),C1(()=>uq.delete(Y)),D0(()=>{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 t2(()=>J.children,Y)},void 0,{name:"value"})}var u1,a2=!0,_2=(J,z)=>J===z,Oz,p2,hq,r2,wq,bG=null,LU,$J=1,kG=2,o2,Y9,o0=null,W0=null,GX=null,XX=null,N1=null,ZJ=null,AJ=null,vq=0,Az,Qm,WU,IG,Qg,Hg=!1,jg,fg=(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.`,uq,CU;var D1=C(()=>{u1={context:void 0,registry:void 0,effects:void 0,done:!1,getContextId(){return BU(this.context.count)},getNextContextId(){return BU(this.context.count++)}};Oz=Symbol("solid-proxy"),p2=typeof Proxy==="function",hq=Symbol("solid-track"),r2=Symbol("solid-dev-component"),wq={equals:_2},LU=OU,o2={},Y9={},Az={afterUpdate:null,afterCreateOwner:null,afterCreateSignal:null,afterRegisterGraph:null};[Qm,WU]=s(!1);Qg=Symbol("fallback");jg={get(J,z,Z){if(z===Oz)return Z;return J.get(z)},has(J,z){if(z===Oz)return!0;return J.has(z)},set:xq,deleteProperty:xq,getOwnPropertyDescriptor(J,z){return{configurable:!0,enumerable:!0,get(){return J.get(z)},set:xq,deleteProperty:xq}},ownKeys(J){return J.keys()}};CU={hooks:Az,writeSignal:q9,registerGraph:FU};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 Wg}from"child_process";function H9(J,z,Z,Y){if(Z)return J+Y.slowRetryMs;return z+Math.max(Y.minIntervalMs,(z-J)*5)}function j9(J,z){return!J.inFlight&&z>=J.nextAllowedAt}function bU(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 kU(J,z,Z){if(z<=0)return Math.min(J,Z);return Math.min(J*2**z,Z)}function qX(J,z,Z,Y){let X=Date.now();if(!j9(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=H9(X,Date.now(),B,z),J.inFlight=!1,j&&!B)Y(H)})(),!0}function jZ(J,z,Z){return new Promise((Y)=>{let X="",G=!1,q=(j)=>{if(G)return;G=!0,Y({status:j,stdout:X})},H=Wg(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 HX=()=>{};function Vg(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 Ug(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 Kg(J){if(!J||J.length===0)return"none";let z=!1,Z=!1;for(let Y of J){let X=Ug(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 SU(J,z){if(!J||typeof J.number!=="number")return null;return{provider:"github",lifecycle:Vg(J.state,J.reviewDecision),checkState:Kg(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 iq(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 nq(J,z){return z.some((Z)=>J.includes(Z))}function B9(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(nq(z,Mg))return{kind:"empty"};if(nq(z,Dg))return{kind:"error",error:"no-remote"};if(nq(z,Lg))return{kind:"error",error:"auth"};if(nq(z,Fg))return{kind:"error",error:"network"};return{kind:"empty"}}function TG(J,z,Z,Y,X=Math.random){let G=(H)=>Z+bU(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(kU(Y.failureBaseMs,q-1,Y.failureCapMs)),failures:q}}var IU="number,url,title,state,baseRefName,headRefName,reviewDecision,mergeable,statusCheckRollup",Dg,Lg,Fg,Mg;var f9=C(()=>{HX();Dg=["none of the git remotes","no git remote","to use github cli in a github repository","not a github repository"],Lg=["gh auth login","authentication required","not logged in","http 401","bad credentials","requires authentication"],Fg=["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"],Mg=["no pull requests found","no open pull requests","no pull request found"]});var W9,V9,U9,K9="DIRTY_WORKTREE",D9,L9;var F9=C(()=>{W9=class W9 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"}};V9=class V9 extends Error{constructor(J){super(`task not found: ${J}`);this.name="TaskNotFoundError"}};U9=class U9 extends Error{constructor(){super("cannot delete a main task; remove the repo from saved repos instead");this.name="CannotDeleteMainTaskError"}};D9=class D9 extends Error{taskId;constructor(J){super(`${K9}: task ${J} worktree has uncommitted or untracked changes`);this.taskId=J;this.name="DirtyWorktreeError"}};L9=class L9 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 yU;var TU=C(()=>{yU=["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 Og}from"fs";function xU(J){let z=J.auth,Z=z.kind==="key"?{kind:"key",keyPath:z.keyPath}:{kind:"password",getPassword:()=>tQ(z.keychainRef)};return{host:J.host,user:J.user,port:J.port,auth:Z,controlPath:iQ(J.host,J.user,J.port)}}function jX(J){let z=ZZ(J);if(!z)return new sQ;return new _Y(xU(z))}function BZ(J){for(let z of Object.values(AB()))if(J===z.basePath||J.startsWith(`${z.basePath}/`))return new _Y(xU(z));return new sQ}function uU(J){return J&&e1(J)?J:void 0}function hZ(J){return BZ(J).isRemote||Og(J)}function l1(J){return BZ(J).isRemote?bJ():J}var Rz=C(()=>{p1();S1();WB();KB()});import{isAbsolute as Ag,join as Rg,resolve as EU}from"path";function wU(J){let z=J.trim();if(!z)return"default";if(z.replace(/\/+$/,"")===M9)return"nextToProject";return"custom"}function O9(J){let z=J.trim();return z===fZ||z.startsWith(`${fZ}/`)}function A9(J,z){if(typeof J!=="string")return null;let Z=J.trim();if(!Z)return null;if(O9(Z)){if(!z)return null;let G=Z.slice(fZ.length).replace(/^\/+/,"");return EU(z,G)}let Y=bJ();if(Z==="~")return Y;let X=Z.startsWith("~/")?Rg(Y,Z.slice(2)):Z;return Ag(X)?X:EU(Y,X)}function PU(J){let z=OJ()[vZ];return A9(typeof z==="string"?z:null,J)}var vZ="worktree.basePath",lq="worktree.basePath.custom",fZ="$project_dir",M9;var R9=C(()=>{p1();Pz();M9=`${fZ}/..`});import{createHash as gg}from"crypto";import vU from"fs";import RJ from"path";function kg(J){return PU(J)??RJ.join(UJ(),mU)}function Ig(){return RJ.join(UJ(),mU)}function cU(J){if(!RJ.isAbsolute(J))throw Error(`worktreeRootFor: repo must be an absolute path, got: ${J}`);return RJ.join(kg(J),_U(J))}function dU(J){if(!RJ.isAbsolute(J))throw Error(`managedWorktreeRootsFor: repo must be an absolute path, got: ${J}`);let z=cU(J),Z=RJ.join(Ig(),_U(J));return[...z===Z?[z]:[z,Z],...bg.map((X)=>RJ.join(J,X))]}function nU(J,z){if(!z||/[/\\\0]/.test(z))throw Error(`worktreePathFor: invalid slug: ${JSON.stringify(z)}`);return RJ.join(cU(J),z)}async function iU(J){if(e1(J)){let Z=ZZ(J)?.basePath;if(!Z)return[];return jX(J).readdir($U(Z))}let z=new Set;for(let Z of dU(J))try{for(let Y of vU.readdirSync(Z,{withFileTypes:!0}))if(Y.isDirectory())z.add(Y.name)}catch{}return[...z]}function g9(J,z){if(!RJ.isAbsolute(J)||!RJ.isAbsolute(z))return null;let Z=hU(z);for(let Y of dU(J)){let X=hU(Y),G=RJ.relative(X,Z);if(G!==""&&!G.startsWith("..")&&!RJ.isAbsolute(G))return Y}return null}function lU(J,z){return g9(J,z)!==null}function $U(J){return`${Sg(J)}/.kobe/worktrees`}function aU(J,z){if(!z||/[/\\\0]/.test(z))throw Error(`remoteWorktreePathFor: invalid slug: ${JSON.stringify(z)}`);return`${$U(J)}/${z}`}function Sg(J){return J.length>1&&J.endsWith("/")?J.replace(/\/+$/,""):J}function hU(J){try{return vU.realpathSync(J)}catch{return RJ.resolve(J)}}function _U(J){let Z=(RJ.basename(J)||"repo").replace(/[^a-zA-Z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"repo",Y=gg("sha1").update(RJ.resolve(J)).digest("hex").slice(0,12);return`${Z}-${Y}`}var mU="worktrees",Ng=".kobe/worktrees",Cg=".claude/worktrees",bg;var N9=C(()=>{p1();Rz();S1();R9();bg=[Ng,Cg]});class C9{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??yU,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 iU(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 pU=C(()=>{TU();N9()});var oU={};j1(oU,{PLACEHOLDER_TASK_TITLE:()=>cz,Orchestrator:()=>$q});import{realpathSync as yg}from"fs";import{basename as Tg,resolve as xg}from"path";function rU(J){return ZZ(J)?.basePath??J}class $q{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 C9((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??cz).trim()||cz,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}=xG(J),Y=this.store.list().find((q)=>q.kind==="main"&&xG(q.repo).key===Z);if(Y)return Y;let X=this.mainTaskLocks.get(Z);if(X)return X;let G=(async()=>{let q=nJ(x1("lastSelectedVendor"),lJ());return await this.store.create({repo:z,title:ug(z),branch:"",worktreePath:rU(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 rU(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||yq(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!==yq(cz,J.id))return;let Z=yq(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 W9(Z.status,z,Z.id);await this.store.update(Z.id,{status:z})}async setPRStatus(J,z){let Z=this.requireTask(J);if(iq(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 U9;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 D9(Z.id)}try{await this.worktrees.remove(Z.worktreePath,{force:Y})}catch(X){throw new L9(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=xG(J).key;for(let Z of TJ())if(xG(Z).key===z)MB(Z);for(let Z of this.store.list()){if(Z.kind!=="main")continue;if(xG(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)=>BX(Y.worktreePath)));return z.filter((Y)=>!Z.has(BX(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=BX(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&&BX(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)=>BX(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??Tg(X.path)).trim()||cz;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 V9(String(J));return z}}function ug(J){let z=J.split(/[/\\]/).filter(Boolean);return z.length>0?z[z.length-1]??J:J}function xG(J){let z=JZ(J);return{repo:z,key:e1(z)?z:BX(z)}}function BX(J){try{return yg(J)}catch{return xg(J)}}var cz="(new task)";var uG=C(()=>{D1();f9();S1();Xz();t1();F9();pU()});function fX(J,z,Z){if(!z)return J;let Y=jX(z);return Y.ensureReady(),Y.wrapCommand(J,{tty:!0,cwd:Z})}function r1(){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 EG="@kobe_remote";var LY=C(()=>{Rz();Mz()});function aq(){return iJ(FY,!1)}var FY="experimental.autoStatus";var wG=C(()=>{Pz()});function b9(){return iJ(MY,!1)}var MY="experimental.dispatcher";var _q=C(()=>{Pz()});import{randomUUID as Eg}from"crypto";function gz(J){return`engineCommand.${J}`}function Nz(J){return`engineName.${J}`}function OY(J){return x1(Nz(J))?.trim()||k9[J]||J}function PG(J){return JJ(J??"claude").defaultCommand}function wg(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 PJ(J,z){let Z=J??"claude",Y=x1(gz(Z))?.trim(),X=(()=>{if(Y){let G=wg(Y);if(G.length>0)return G}return PG(Z)})();return Pg(X,Z,z)}function Pg(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 WX(J,z){if((z??"claude")!=="claude")return{argv:J,sessionId:null};if(J.some((Y)=>hg.has(Y)))return{argv:J,sessionId:null};let Z=Eg();return{argv:[...J,"--session-id",Z],sessionId:Z}}function AY(){let J=(z)=>/^[A-Za-z0-9_/.:=-]+$/.test(z)?z:`'${z.replace(/'/g,"'\\''")}'`;try{return[...i1(),"api"].map(J).join(" ")}catch{return"kobe api"}}function vg(J,z=AY()){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 mg(J,z=AY()){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 cg(J,z=AY(),Z={}){let Y=[];if((Z.status??aq)())Y.push(vg(J,z));if((Z.notes??b9)())Y.push(mg(J,z));return Y.length>0?Y.join(`
38
-
39
- `):null}function pq(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=cg(Z,AY(),Y);if(!X)return J;return[...J,"--append-system-prompt",X]}function dg(J,z=AY()){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 rq(J,z,Z,Y=b9){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",dg(Z)]}var k9,hg;var Gz=C(()=>{qZ();HZ();wG();_q();S1();t1();k9=Object.fromEntries(YY.map((J)=>[J,JJ(J).displayName]));hg=new Set(["--session-id","--resume","-r","--continue","-c","--from-pr"])});var sU={};j1(sU,{archivedHistoryPreviewEnabled:()=>I9,ARCHIVED_HISTORY_PREVIEW_KEY:()=>hG});function I9(){return iJ(hG,!1)}var hG="experimental.archivedHistoryPreview";var oq=C(()=>{Pz()});import{spawnSync as ng}from"child_process";function tU(J,z){if(J==="darwin")return"pbcopy";if(J==="linux"){for(let Z of ig)if(z(Z.binary))return Z.command;return null}return null}function JK(J){let z=[["set-option","-g","set-clipboard","on"]];if(J)for(let Z of lg)for(let Y of $g)z.push(["bind-key","-T",Z,Y,"send-keys","-X","copy-pipe-and-cancel",J]);return z}var ig,eU=(J)=>{try{let z=process.platform==="win32"?"where":"which";return ng(z,[J],{encoding:"utf8"}).status===0}catch{return!1}},lg,$g;var zK=C(()=>{ig=[{binary:"wl-copy",command:"wl-copy"},{binary:"xclip",command:"xclip -selection clipboard -in"},{binary:"xsel",command:"xsel --clipboard --input"}];lg=["copy-mode","copy-mode-vi"],$g=["MouseDragEnd1Pane","y","Enter"]});import{existsSync as ZK,readFileSync as ag}from"fs";function YK(){RY=null}function _g(){let J=FV();if(ZK(J))return{canonical:J,found:J};let z=J.replace(/\.yaml$/,".yml");if(ZK(z))return{canonical:J,found:z};return{canonical:J,found:null}}function sq(){if(RY)return RY;let{canonical:J,found:z}=_g();if(!z)return RY={path:J,exists:!1,doc:null,warnings:[]},RY;let Z=[],Y=null;try{let X=ag(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 RY={path:J,exists:!0,doc:Y,warnings:Z},RY}var RY=null;var S9=C(()=>{p1()});function VX(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 JN(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=og[j];if(!B)return{error:`"${J}": unknown modifier "${j}" (use ctrl / cmd / alt / shift)`};G.add(B)}if(X=sg[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=eg.filter((j)=>G.has(j)).join("+"),H=q?`${q}+${X}`:X;if(X.length>1&&!tg.has(X))return{chord:H,warning:`"${J}": unrecognized key name "${X}" \u2014 the chord may never fire`};return{chord:H}}function tq(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}function zN(J){if(J==="darwin")return["darwin","macos","mac"];if(J==="win32")return["win32","windows"];return[J]}function ZN(J){if(!tq(J))return null;let z=J.bindings;if(tq(z))return z;return J}function eq(J,z,Z){let Y=[];if(J===null||J===void 0)return{entries:[],warnings:Y};if(!tq(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(tq(J.bindings))G.push(J.bindings);else Y.push("`bindings:` must be a mapping of id \u2192 chord(s)");for(let q of zN(z)){let H=J[q];if(H===void 0)continue;let j=ZN(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=JN(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 YN(J,z){return J===z||J==="global"||z==="global"}function XK(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=y9[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=pg[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&&rg.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(!YN(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 y9,pg,rg,og,sg,tg,eg;var JH=C(()=>{y9={"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)"};pg={"sidebar.nav":VX("down","up"),"files.nav":VX("down","up"),"sidebar.search.nav":VX("down","up"),"files.hierarchy":VX("collapse","expand"),"sidebar.view":VX("previous view","next view"),"files.tab":VX("previous tab","next tab")},rg=new Set(["global","workspace","terminal"]),og={ctrl:"ctrl",control:"ctrl",ctl:"ctrl",cmd:"cmd",command:"cmd",meta:"cmd",super:"cmd",win:"cmd",alt:"alt",option:"alt",opt:"alt",shift:"shift"},sg={esc:"escape",spacebar:"space",pgup:"pageup",pgdn:"pagedown",pgdown:"pagedown"},tg=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}`)]),eg=["ctrl","cmd","alt","shift"]});function UX(J){return J in GK}function CY(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=GN[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 qK(){let J={};for(let[Z,Y]of Object.entries(NY)){let X=CY(Y,{allowBare:UX(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=mZ.map((Z)=>{let Y=CY(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 T9(J){let z=qK(),Z=new Set;for(let Y of J){if(!Y.id.startsWith("tmux."))continue;if(Y.id===dz){if(Y.keys.length===0){z.focus=[null,null,null,null],Z.add(dz);continue}if(Y.keys.length!==mZ.length){z.warnings.push(`${dz}: 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=CY(B);if("error"in V){z.warnings.push(`${dz}: ${V.error} \u2014 keeping the default`),j=!1;break}H.push({chord:B,key:V.key})}if(!j)continue;z.focus=H,Z.add(dz);continue}if(!(Y.id in NY)){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=CY(G,{allowBare:UX(X)});if("error"in q){z.warnings.push(`${X}: ${q.error} \u2014 keeping the default`);continue}if(G!==NY[X])Z.add(X);z.binds[X]={chord:G,key:q.key}}return z.overridden=Z,z}function x9(J){return J.startsWith("tmux.")?{allowShiftCharacter:!0}:{}}function HK(){gY=null}function zH(){if(gY)return gY;let J=sq();if(!J.exists||J.doc===null)return gY=qK(),gY;let z=eq(J.doc,process.platform,{chordOptsFor:x9}),Z=z.warnings.filter((X)=>X.startsWith("tmux.")),Y=T9(z.entries);Y.warnings=[...Z,...Y.warnings];for(let X of Y.warnings)console.warn(`[kobe/keybindings] ${X}`);return gY=Y,gY}var XN,GK,QK,NY,dz="tmux.focus",mZ,GN,gY=null;var ZH=C(()=>{S9();JH();XN={"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"},GK={"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"},QK=["F6","F7","F8","F9","F10","F11"],NY={...XN,...GK};mZ=["ctrl+h","ctrl+j","ctrl+k","ctrl+l"],GN={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 vG(J,z){let Z=null;for(let X=0;X<24;X++){let G=await KX(J);if(G){if(!z)return{pane:G,ready:!0};let q=(await DX(G)).trim();if(q.length>0&&q===Z)return{pane:G,ready:!0};Z=q}await jK(250)}return{pane:await KX(J)||await u9(J),ready:!1}}async function mG(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 jK(QN),await cG(J,"Enter")}async function BK(J,z){let{pane:Z}=await vG(J,!0);if(!Z)return;await mG(Z,z.text)}var jK=(J)=>new Promise((z)=>setTimeout(z,J)),QN=150;var YH=C(()=>{w1()});function fK(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 LX;var XH=C(()=>{LX={$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 FX;var GH=C(()=>{FX={$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 MX;var QH=C(()=>{MX={$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 OX;var qH=C(()=>{OX={$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 AX;var HH=C(()=>{AX={$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 RX;var jH=C(()=>{RX={$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 gX;var BH=C(()=>{gX={$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 WK;var VK=C(()=>{XH();GH();QH();qH();HH();jH();BH();WK={claude:LX,conductor:FX,nord:OX,opencode:AX,dracula:MX,tokyonight:gX,"osaka-jade":RX}});function UN(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 UK(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 UN(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 fH(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}function WH(J){if(!fH(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(!fH(Z))return{ok:!1,reason:"`theme` must be an object map"};if("defs"in z&&z.defs!==void 0){if(!fH(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(!fH(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 E9=()=>{};import{readFileSync as KN,readdirSync as DN}from"fs";import{join as KK}from"path";function NX(){return KK(UJ(),"themes")}function dG(){let J=NX(),z;try{z=DN(J)}catch{return[]}let Z=[];for(let Y of z){if(!Y.endsWith(".json"))continue;let X=KK(J,Y),G;try{let j=KN(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=WH(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 VH=C(()=>{p1();E9()});import{readFileSync as LN}from"fs";function MN(){try{let J=JSON.parse(LN(eJ(),"utf8")),z=typeof J.activeTheme==="string"&&J.activeTheme?J.activeTheme:"claude",Z=typeof J.focusAccent==="string"&&FN.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 ON(J){return dG().find((Z)=>Z.name===J)?.theme??WK[J]??null}function Cz(J,...z){for(let Z of z){let Y=UK(J,Z);if(Y)return Y}return null}function DK(J,z){let Z=Cz(J,"text"),Y=Cz(J,"background"),X=Cz(J,"textMuted","text"),G=Cz(J,"backgroundPanel","background"),q=Cz(J,"backgroundElement","backgroundPanel","background"),H=Cz(J,"backgroundMenu","backgroundElement","backgroundPanel","background"),j=Cz(J,"selectedListItemText","background"),B=Cz(J,z,"primary","borderActive","border","text");return{border:Cz(J,"border","text"),activeBorder:B,statusBg:G,statusFg:X,statusMutedFg:X,windowFg:X,currentWindowBg:q,currentWindowFg:B,activityFg:Cz(J,"info","primary","text"),bellFg:Cz(J,"warning","error","primary","text"),messageBg:H,messageFg:Z,messageCommandFg:B,modeBg:B,modeFg:j??Y}}function Qz(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 FK(J){let z=Qz({bg:J.statusBg,fg:J.statusFg}),Z=Qz({bg:J.statusBg,fg:J.statusMutedFg}),Y=Qz({bg:J.statusBg,fg:J.windowFg});return[{key:"border",option:"pane-border-style",showFlag:"-gwqv",setFlag:"-gw",unsetFlag:"-gwu",value:Qz({fg:J.border})},{key:"active",option:"pane-active-border-style",showFlag:"-gwqv",setFlag:"-gw",unsetFlag:"-gwu",value:Qz({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:Qz({bg:J.currentWindowBg,fg:J.currentWindowFg,attrs:["bold"]})},{key:"activity-window",option:"window-status-activity-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Qz({bg:J.statusBg,fg:J.activityFg})},{key:"bell-window",option:"window-status-bell-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Qz({bg:J.statusBg,fg:J.bellFg,attrs:["bold"]})},{key:"last-window",option:"window-status-last-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Qz({bg:J.statusBg,fg:J.statusFg})},{key:"message",option:"message-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Qz({bg:J.messageBg,fg:J.messageFg})},{key:"message-command",option:"message-command-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Qz({bg:J.messageBg,fg:J.messageCommandFg,attrs:["bold"]})},{key:"mode",option:"mode-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Qz({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 AN(J){let z=new Set(J.marker.split(",").map((G)=>G.trim()).filter(Boolean)),Z=[],Y=[];for(let G of FK(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",w9,X]:["set-option","-gu",w9]);return Z}async function LK(J){let{code:z,stdout:Z}=await m0(J);return z===0?Z.trim():""}async function bY(){try{let J=MN(),z=J.enabled?ON(J.themeName):null,Z=z?DK(z,J.focusAccentSlot):DK({theme:{}},J.focusAccentSlot),Y=FK(Z),[X,...G]=await Promise.all([LK(["show-options","-gqv",w9]),...Y.map((j)=>LK(["show-options",j.showFlag,j.option]))]),q=Object.fromEntries(Y.map((j,B)=>[j.key,G[B]??""])),H=AN({marker:X,current:q,hexes:Z});if(H.length>0)await o1(H)}catch{}}var w9="@kobe_border_theme",FN;var UH=C(()=>{p1();w1();VK();VH();FN=["primary","success","info"]});function MK(){return iJ(KH,!0)}function DH(){return iJ(OK,!1)}function AK(J){eQ(OK,J)}var KH="zen.keepTasks",OK="zen.active";var P9=C(()=>{Pz()});var LH={};j1(LH,{recordGen:()=>cZ,isLatestGen:()=>bK,genAgeMs:()=>IN,coalesceLayoutWork:()=>SN,RESIZE_GUARD_MS:()=>kN,LAYOUT_COALESCE_MS:()=>NK});import{createHash as RN,randomUUID as gN}from"crypto";import{mkdirSync as NN,readFileSync as RK,renameSync as CN,writeFileSync as bN}from"fs";import{join as gK}from"path";function CK(){return gK(UJ(),"layout-coord")}function h9(J,z){let Z=RN("sha1").update(J).digest("hex").slice(0,16);return gK(CK(),`${Z}.${z}`)}function cZ(J,z){let Z=gN();try{NN(CK(),{recursive:!0});let Y=h9(J,z),X=`${Y}.${Z}.tmp`;bN(X,`${Date.now()}
41
- ${Z}`),CN(X,Y)}catch{}return Z}function bK(J,z,Z){try{return RK(h9(J,z),"utf8").split(`
42
- `)[1]?.trim()===Z}catch{return!0}}function IN(J,z,Z=Date.now()){try{let Y=Number.parseInt(RK(h9(J,z),"utf8").split(`
43
- `)[0]??"",10);return Number.isFinite(Y)?Z-Y:Number.POSITIVE_INFINITY}catch{return Number.POSITIVE_INFINITY}}async function SN(J,z,Z,Y=NK){let X=cZ(J,z);if(Y>0)await new Promise((G)=>setTimeout(G,Y));if(!bK(J,z,X))return;await Z()}var NK=120,kN=400;var CX=C(()=>{p1()});function TN(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 xN(J){let z=J.indexOf("-t");return z>=0&&z+1<J.length?J[z+1]??null:null}function uN(J,z){return J.filter((Z)=>{let Y=xN(Z);return Y===null||z.has(Y)})}function kK(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 FH(J){let{code:z,stdout:Z}=await m0(["list-panes","-s","-t",`=${J}`,"-F",yN]);if(z!==0)return null;return TN(Z)}async function IK(J,z){if(z.length===0)return;let Z=await FH(J),Y=Z?uN(z,new Set(Z.map((X)=>X.paneId))):z;if(Y.length>0)await o1(Y)}function SK(J,z){let Z=i1(),Y=r1(),X=[];for(let G of J){let q=G.role==="tasks"?EZ(Z,{initialTaskId:z.taskId}):JX({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),EJ(Y+q)],["set-option","-p","-t",G.paneId,"@kobe_role",G.role],["set-option","-p","-t",G.paneId,bz,e0])}return X}function EN(J,z){if(J===0)return"no-engine-pane";return z===0?"switched":"respawn-failed"}async function yK(J,z,Z,Y,X){let G=await FH(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=eY(r1(),i1(),J),B=[];for(let f of q){let U=WX(Z,X),L=EJ(fX(uJ(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,nz,U.sessionId]:["set-window-option","-u","-t",f.paneId,nz])}let V=await o1(B);return EN(q.length,V)}async function TK(){return(await iz()).rightColumnResizeArgs}async function v9(J,z={}){let{tasksWidth:Z,rightColumnResizeArgs:Y}=await iz(),X=await FH(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 kY(J,z){cZ(J,"resize");let{rows:Z,commands:Y}=await v9(J);if(!Z)return;let X=[...Y];if(z)X.push(...SK(kK(Z,{currentVersion:e0,force:!1,vendorChanged:z.vendorChanged}),z));await IK(J,X)}async function xK(J){if(!await F1(J))return;await kY(J)}async function m9(J){let{code:z,stdout:Z}=await m0(["list-panes","-t",`=${J}`,"-F",`#{@kobe_role} #{pane_width} #{pane_height} #{window_width} #{window_height} #{window_zoomed_flag} #{${Fz}} #{${xJ}}`]);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",Kq,`${EB(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)?jY(100*B/X):null,U=Number.isFinite(V)?jY(100*V/G):null;if(f!==null)q.push(["set-option","-s",Dq,`${f}`]);if(U!==null)q.push(["set-option","-s",Lq,`${U}`])}if(q.length>0)await o1(q)}function wN(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 uK(J){let{code:z,stdout:Z}=await m0(["list-panes","-t",`=${J}`,"-F",`#{@kobe_role} #{window_zoomed_flag} #{${Fz}} #{${xJ}}`]);if(z!==0||!wN(Z))return;await m9(J)}async function bX(J){let z=await hJ(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 FH(J);if(!G)return;let q=SK(kK(G,{currentVersion:e0,force:!0}),{cwd:Z,taskId:Y,vendor:X});await IK(J,q),await bY()}var bz="@kobe_pane_version",yN;var nG=C(()=>{qZ();Gz();Rz();w1();Mz();UH();kJ();LY();CX();yN=`#{window_id} #{pane_id} #{@kobe_role} #{${bz}} #{pane_width}`});var r9={};j1(r9,{syncSessionZen:()=>AH,runLayoutAction:()=>IY,resolveShellPane:()=>MH,planWorkspaceSplit:()=>wK,parseLayoutPaneRows:()=>EK,expandedTerminalHeightPercent:()=>PK,engineTabExit:()=>eN,applyZenToNewWindow:()=>p9});function EK(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 wK(J){let z=J.find((Y)=>Y.role===BY);if(!z)return{kind:"missing-engine"};let Z=J.filter((Y)=>Y.role===MG);if(Z.length+1>=uB)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 MH(J){return J.find((z)=>z.role===Lz)??J.find((z)=>z.role==="")}function PK(J){return 100-(jY(J??Number.NaN)??AG)}async function _J(J,z){let Z=z?.trim()||`=${J}`,{code:Y,stdout:X}=await m0(["list-panes","-t",Z,"-F",PN]);return Y===0?EK(X):null}async function c9(J){let{code:z,stdout:Z}=await m0(["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 WZ(J,z){let{code:Z,stdout:Y}=await m0(["show-options","-wqv","-t",J,z]);return Z===0?Y.trim():""}async function n9(J,z,Z){await n0(["set-window-option","-t",J,z,Z])}async function dZ(J,z){await n0(["set-window-option","-u","-t",J,z])}async function i9(J){let{code:z,stdout:Z}=await m0(["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 OH(J){let z=await hJ(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 hN(J){let z=i1(),Z=r1();return EJ(Z+JX({cwd:J.cwd,taskId:J.taskId,claudePaneId:J.enginePaneId,cliInvocation:z,vendor:J.vendor}))}async function vN(J,z){return z?.trim()||await c9(J)}async function mN(J,z){let Z=await _J(J,z);if(!Z)return;let Y=wK(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 ${uB} panes`);return}let{cwd:X}=await OH(J),{code:G,stdout:q}=await m0(["split-window",Y.direction,"-t",Y.targetPane,"-l","50%","-c",l1(X),"-P","-F","#{pane_id}",EJ("true")]),H=q.trim();if(G!==0||!H)return;await o1([["set-option","-p","-t",H,"@kobe_role",MG],["select-pane","-t",H]])}async function cN(J,z){let Z=await _J(J,z);if(!Z)return;let Y=Z.filter((q)=>q.role===MG);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 dN(J,z){let Z=await _J(J,z);if(!Z)return;let Y=Z.filter((X)=>X.role===MG);if(Y.length===0){await P1(z,"kobe: no workspace splits to reset");return}await o1(Y.map((X)=>["kill-pane","-t",X.paneId]))}async function hK(){return(await iz()).tasksWidth}async function nN(J){let{cwd:z,taskId:Z}=await OH(J),Y=i1(),X=r1();return{cwd:z,command:EJ(X+EZ(Y,{initialTaskId:Z}))}}async function vK(J,z){let Z=await _J(J,z);if(!Z)return;let Y=Z.find((A)=>A.role===Dz);if(Y){await n0(["kill-pane","-t",Y.paneId]);return}let X=MH(Z),G=Z.find((A)=>A.role===BY);if(!G){await P1(z,"kobe: cannot restore file pane in this layout");return}let{cwd:q,taskId:H,vendor:j}=await OH(J),B=hN({cwd:q,taskId:H,vendor:j,enginePaneId:G.paneId}),V=X?["split-window","-v","-b","-t",X.paneId,"-l",`${await iN()}%`,"-c",l1(q),"-P","-F","#{pane_id}",B]:["split-window","-h","-t",G.paneId,"-l",`${await l9()}%`,"-c",l1(q),"-P","-F","#{pane_id}",B],{code:f,stdout:U}=await m0(V),L=U.trim();if(f!==0||!L)return;let O=[["set-option","-p","-t",L,"@kobe_role",Dz],["set-option","-p","-t",L,bz,e0]];if(X?.role==="")O.push(["set-option","-p","-t",X.paneId,"@kobe_role",Lz]);await o1(O)}async function iN(){return(await iz()).opsHeightPct}async function l9(){return(await iz()).rightColumnWidthPct}async function mK(){return PK((await iz()).opsHeightPct)}async function lN(J){let{code:z,stdout:Z}=await m0(["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 cK(J,z){let Z=await lN(J),Y=L7(z);while(Z.has(Y))Y++;return Y}async function dK(J){let z=OG(J);if(await F1(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 $9(J){let z=OG(J);if(!await F1(z))return;let{code:Z,stdout:Y}=await m0(["list-panes","-s","-t",`=${z}`,"-F","#{@kobe_role}"]);if(Z!==0)return;if(!Y.split(`
50
- `).some((G)=>{let q=G.trim();return q===Lz||q===Zz}))await n0(["kill-session","-t",`=${z}`])}async function $N(J,z){await nK(J,z,Fz)}async function aN(J,z){await nK(J,z,xJ)}async function nK(J,z,Z){let Y=await WZ(z,Z);if(!Y)return;if(await i9(Y))await n0(["kill-pane","-t",Y]);await dZ(z,Z)}async function d9(J,z){await $N(J,z),await aN(J,z),await $9(J)}function iK(J){return J.find((z)=>z.role===BY)??J[0]}async function a9(J,z,Z){let Y=iK(Z);if(!Y)return await P1(z,"kobe: cannot restore Tasks pane in this layout"),!1;let X=await hK(),{cwd:G,command:q}=await nN(J),{code:H,stdout:j}=await m0(["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 o1([["set-option","-p","-t",B,"@kobe_role",Zz],["set-option","-p","-t",B,bz,e0],["select-pane","-t",B]]),await dZ(z,xJ),await P1(z,"kobe: Tasks pane restored"),!0}async function lK(J,z,Z){let Y=await dK(J),X=await cK(Y,z),{code:G,stdout:q}=await m0(["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 n9(z,xJ,H),await P1(z,"kobe: Tasks pane hidden")}async function _9(J,z,Z){let Y=await _J(J,z);if(!Y)return;if(!await i9(Z)){await dZ(z,xJ);let q=Y.find((H)=>H.role===Zz);if(q){await n0(["select-pane","-t",q.paneId]);return}await a9(J,z,Y);return}let X=iK(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 hK()}`])!==0){await P1(z,"kobe: could not restore Tasks pane");return}await o1([["set-option","-p","-t",Z,"@kobe_role",Zz],["set-option","-p","-t",Z,bz,e0],["select-pane","-t",Z]]),await dZ(z,xJ),await $9(J),await P1(z,"kobe: Tasks pane restored")}async function _N(J,z){let Z=await WZ(z,xJ);if(Z){await _9(J,z,Z);return}let Y=await _J(J,z);if(!Y)return;let X=Y.find((G)=>G.role===Zz);if(X){await lK(J,z,X);return}await a9(J,z,Y)}async function pN(J,z){let Z=await WZ(z,xJ);if(Z){await _9(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 a9(J,z,Y)}async function $K(J,z,Z){if(Z.role==="")await n0(["set-option","-p","-t",Z.paneId,"@kobe_role",Lz]);let Y=await dK(J),X=await cK(Y,z),{code:G,stdout:q}=await m0(["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 n9(z,Fz,H),await P1(z,"kobe: Terminal pane hidden")}async function aK(J,z,Z){let Y=Z.find((V)=>V.role===Dz),X=Z.find((V)=>V.role===BY);if(!Y&&!X)return await P1(z,"kobe: cannot restore terminal pane in this layout"),!1;let{cwd:G}=await OH(J),q=Y?["split-window","-v","-t",Y.paneId,"-l",`${await mK()}%`,"-c",l1(G),"-P","-F","#{pane_id}"]:["split-window","-h","-t",X?.paneId??"","-l",`${await l9()}%`,"-c",l1(G),"-P","-F","#{pane_id}"],{code:H,stdout:j}=await m0(q),B=j.trim();if(H!==0||!B)return!1;return await n0(["set-option","-p","-t",B,"@kobe_role",Lz]),await dZ(z,Fz),await P1(z,"kobe: Terminal pane restored"),!0}async function _K(J,z,Z){let Y=await _J(J,z);if(!Y)return;if(!await i9(Z)){await dZ(z,Fz),await aK(J,z,Y);return}let X=Y.find((B)=>B.role===Dz),G=Y.find((B)=>B.role===BY);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 mK()}%`]:["join-pane","-h","-s",Z,"-t",G?.paneId??"","-l",`${await l9()}%`];if(await n0(q)!==0){await P1(z,"kobe: could not restore terminal pane");return}await n0(["set-option","-p","-t",Z,"@kobe_role",Lz]),await dZ(z,Fz),await $9(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 rN(J,z){let Z=await WZ(z,Fz);if(Z){await _K(J,z,Z);return}let Y=await _J(J,z);if(!Y)return;let X=MH(Y);if(X){await $K(J,z,X);return}await aK(J,z,Y)}async function oN(J){let z=DH();if(AK(!z),z){await sK(J);return}await oK(J)}async function AH(J){if(!await F1(J))return;let z=DH(),Z=(await SY(J,tY)).length>0;if(z===Z)return;if(z)await oK(J);else await sK(J)}async function pK(J){let{code:z,stdout:Z}=await m0(["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 rK(J,z){return!!(await _J(J,z))?.some((Y)=>Y.role===BY)}async function oK(J){let z=await pK(J);for(let Z of z){if(!await rK(J,Z))continue;if(await WZ(Z,uZ))continue;await tK(J,Z)}await VZ(J,tY,"1"),await P1(`=${J}`,"kobe: Zen mode on \u2014 all tabs")}async function sK(J){let z=await pK(J);for(let Z of z){let Y=await WZ(Z,uZ);if(Y)await sN(J,Z,Y)}await n0(["set-option","-u","-t",J,tY]),await P1(`=${J}`,"kobe: Zen mode off \u2014 all tabs")}async function p9(J,z){let Z=(await SY(J,tY)).length>0;if(!Z&&!DH())return;if(!Z)await VZ(J,tY,"1");if(await WZ(z,uZ))return;if(!await rK(J,z))return;await tK(J,z)}async function tK(J,z){let Z=await _J(J,z);if(!Z)return;let Y=[],X=Z.find((q)=>q.role===Dz);if(X)await n0(["kill-pane","-t",X.paneId]),Y.push(Dz);let G=MH(Z);if(G)await $K(J,z,G),Y.push(Lz);if(!MK()){let q=Z.find((H)=>H.role===Zz);if(q)await lK(J,z,q),Y.push(Zz)}if(Y.length===0){await P1(z,"kobe: already focused \u2014 nothing to hide");return}await n9(z,uZ,Y.join(",")),await P1(z,"kobe: Zen mode on")}async function sN(J,z,Z){let Y=new Set(Z.split(",").map((X)=>X.trim()));if(Y.has(Zz)){let X=await WZ(z,xJ);if(X)await _9(J,z,X)}if(Y.has(Dz)){let X=await _J(J,z);if(X&&!X.some((G)=>G.role===Dz))await vK(J,z)}if(Y.has(Lz)){let X=await WZ(z,Fz);if(X)await _K(J,z,X)}await dZ(z,uZ),await P1(z,"kobe: Zen mode off")}async function eK(J){let{code:z,stdout:Z}=await m0(["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 tN(J,z){if(await eK(J)<=1){await P1(z,"Cannot close the only ChatTab");return}await d9(J,z),await n0(["kill-window","-t",z])}async function eN(J){if(!await F1(J))return;let z=await c9(J);if(!z)return;if(await eK(J)>1){await d9(J,z),await n0(["kill-window","-t",z]);return}let{newChatTab:Z}=await Promise.resolve().then(() => (RH(),J5));if(await Z(J),await c9(J)!==z)await d9(J,z),await n0(["kill-window","-t",z])}async function IY(J,z,Z={}){if(!await F1(J))return;let Y=await vN(J,Z.windowId);if(!Y)return;switch(z){case"workspace-split":await mN(J,Y);return;case"workspace-close":await cN(J,Y);return;case"workspace-reset":await dN(J,Y);return;case"tasks-toggle":await _N(J,Y);return;case"tasks-restore":await pN(J,Y);return;case"ops-toggle":await vK(J,Y);return;case"terminal-toggle":await rN(J,Y);return;case"zen-toggle":await oN(J);return;case"chat-tab-close":await tN(J,Y);return}}var PN="#{pane_id}\t#{@kobe_role}\t#{pane_active}\t#{pane_width}\t#{pane_height}\t#{window_width}\t#{window_height}";var nZ=C(()=>{qZ();Rz();P9();w1();Mz();kJ();LY();nG()});var J5={};j1(J5,{quickCreate:()=>t9,openUpdateTab:()=>eG,openSettingsTab:()=>oG,openNewTaskTab:()=>tG,openHelpTab:()=>sG,newChatTab:()=>s9,kobeStatusRight:()=>pG,chatTabSwitchBindings:()=>lG,chatTabRenameBinding:()=>aG,chatTabCloseBinding:()=>$G,chatTabChooseEngineBindings:()=>_G,buildPanesAround:()=>NH,CHAT_TAB_STATUS_FORMAT:()=>kX,CHAT_TAB_STATUS_CURRENT_FORMAT:()=>rG,CHAT_TAB_STATE_OPTION:()=>gH,CHAT_TAB_ENGINE_PROMPT:()=>iG});function lG(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 $G(J,z="kill-window"){return["bind-key","-n",J,"if-shell","-F","#{>:#{session_windows},1}",z,"display-message 'Cannot close the only ChatTab'"]}function aG(J){return["bind-key","-n",J,"command-prompt","-I","#{window_name}","rename-window -- '%%'"]}function _G(J){return[["bind-key","-n",J,"command-prompt","-p",iG],["bind-key","T","command-prompt","-p",iG]]}function o9(J){return J.startsWith("C-")&&J.length===3?`^${J.slice(2)}`:J}function pG(J){return`${[J.focusLeft?`${o9(J.focusLeft)} tasks`:null,J.detach?`${o9(J.detach)} detach`:null,J.newTab?`${o9(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 NH(J,z){let Z=r1(),Y=await CH(),X=EJ(z.opsCommand??Z+JX({cwd:z.cwd,taskId:z.taskId,claudePaneId:J,cliInvocation:z.inv,vendor:z.vendor})),{stdout:G}=await JQ([["set-option","-p","-t",J,"@kobe_role","claude"],["set-window-option","-t",J,gH,"idle"],["split-window","-h","-b","-t",J,"-l",`${Y}`,"-c",l1(z.cwd),"-P","-F","tasks=#{pane_id}",EJ(Z+EZ(z.inv,{initialTaskId:z.taskId}))],["split-window","-h","-t",J,"-l",`${100-wB}%`,"-c",l1(z.cwd),"-P","-F","ops=#{pane_id}",X],["split-window","-v","-l",`${100-AG}%`,"-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 o1([...q.tasks?[["set-option","-p","-t",q.tasks,"@kobe_role",Zz]]:[],...q.tasks?[["set-option","-p","-t",q.tasks,bz,e0]]:[],...q.ops?[["set-option","-p","-t",q.ops,"@kobe_role",Dz]]:[],...q.ops?[["set-option","-p","-t",q.ops,bz,e0]]:[],...q.shell?[["set-option","-p","-t",q.shell,"@kobe_role",Lz]]:[]]),q.ops){let H=await TK();if(H.length>0)await n0(["resize-pane","-t",q.ops,...H])}}async function s9(J,z){if(!await F1(J))return;let Z=await hJ(J,["@kobe_worktree","@kobe_task","@kobe_vendor",EG]),Y=Z["@kobe_worktree"]||process.cwd(),X=Z["@kobe_task"]||void 0,G=Z[EG]||void 0,q=z??Z["@kobe_vendor"];if(z)await JC(J,X,z);let H=PJ(q),j=WX(H,q),B=i1(),f=(await m0(["new-window","-t",`=${J}`,"-c",l1(Y),"-P","-F","#{pane_id}",EJ(fX(uJ(j.argv),G,Y),eY(r1(),B,J))])).stdout.trim();if(!f)return;if(j.sessionId)await iZ(f,nz,j.sessionId);await NH(f,{cwd:Y,taskId:X,inv:B,vendor:q});let{stdout:U}=await m0(["display-message","-p","-t",f,"#{window_id}"]),L=U.trim();if(L)await p9(J,L)}async function oG(J){if(!await F1(J))return;let Z=(await hJ(J,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),Y=i1(),G=`${r1()}${Y.map(Z1).join(" ")} settings`;await kz(J,{cwd:l1(Z),command:G,name:"settings",surface:!0})}async function sG(J){if(!await F1(J))return;let Z=(await hJ(J,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),Y=i1(),G=`${r1()}${Y.map(Z1).join(" ")} help-page`;await kz(J,{cwd:l1(Z),command:G,name:"help",surface:!0})}async function tG(J,z){if(!await F1(J))return;let Y=(await hJ(J,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),X=i1(),G=r1(),q=z?` --repo ${Z1(z)}`:"",H=`${G}${X.map(Z1).join(" ")} new-task${q}`;await kz(J,{cwd:l1(Y),command:H,name:"new task",surface:!0})}async function eG(J){if(!await F1(J))return;let Z=(await hJ(J,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),Y=i1(),G=`${r1()}${N7({cliInvocation:Y})}`;await kz(J,{cwd:l1(Z),command:G,name:"update",surface:!0})}async function t9(J){if(!await F1(J))return;let Z=(await hJ(J,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),Y=i1(),G=`${r1()}${Y.map(Z1).join(" ")} quick-task --session ${Z1(J)}`;await kz(J,{cwd:l1(Z),command:G,name:"quick task",surface:!0})}async function JC(J,z,Z){if(await VZ(J,"@kobe_vendor",Z),!z)return;try{let{connectOrStartDaemon:Y}=await Promise.resolve().then(() => (IJ(),bH)),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 iG,gH="@kobe_tab_state",kX="#{?#{==:#{@kobe_tab_state},running},\u25CF,#{?#{==:#{@kobe_tab_state},done},\u2713,#{?#{==:#{@kobe_tab_state},error},!,#{?#{==:#{@kobe_tab_state},unknown},?,\u25CB}}}} #I:#W",rG;var RH=C(()=>{qZ();Gz();Rz();w1();Mz();t1();kJ();LY();nZ();nG();iG=`engine (${s1.join("/")}/\u2026)`;rG=kX});var vJ={};j1(vJ,{tmuxWindowSizeArgsForClient:()=>zf,tmuxSessionName:()=>y1,tmuxInitialSizeArgs:()=>Z5,tmuxInitialClientSize:()=>Jf,tmuxAvailable:()=>lz,tasksRestoreEdgeCommand:()=>H5,switchClientBeforeKill:()=>$z,sessionExists:()=>F1,selectTasksPane:()=>qC,runLayoutAction:()=>IY,resyncWindowToClient:()=>YC,refreshKobeWorkspacePanes:()=>bX,quickCreate:()=>t9,prepareWindowForSwitch:()=>Q5,prepareWindowForAttach:()=>kH,parseTmuxClientRows:()=>Y5,parseObservedSession:()=>j5,openUpdateTab:()=>eG,openSettingsTab:()=>oG,openNewTaskTab:()=>tG,openHelpTab:()=>sG,observeSessionVendor:()=>Yf,newChatTab:()=>s9,kobeStatusRight:()=>pG,killSession:()=>cJ,healSessionLayout:()=>xK,focusBindCommand:()=>q5,enterWindow:()=>ZC,ensureSession:()=>zQ,currentSessionName:()=>mJ,clientsWithConflictingSize:()=>X5,chatTabSwitchBindings:()=>lG,chatTabRenameBinding:()=>aG,chatTabCloseBinding:()=>$G,chatTabChooseEngineBindings:()=>_G,captureGlobalLayoutOnDrag:()=>uK,captureGlobalLayout:()=>m9,attachArgv:()=>IX,PANE_VERSION_OPTION:()=>bz,CHAT_TAB_STATUS_FORMAT:()=>kX,CHAT_TAB_STATUS_CURRENT_FORMAT:()=>rG,CHAT_TAB_STATE_OPTION:()=>gH,CHAT_TAB_ENGINE_PROMPT:()=>iG});function Z5(J=process.stdout,z=process.env){let Z=Jf(J,z);return Z?["-x",`${Z.columns}`,"-y",`${Z.rows}`]:[]}function Jf(J=process.stdout,z=process.env){let Z=lZ(J.columns)??lZ(z.COLUMNS),Y=lZ(J.rows)??lZ(z.LINES);return Z&&Y?{columns:Z,rows:Y}:null}function lZ(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 Y5(J){let z=[];for(let Z of J.split(`
54
- `)){let[Y,X,G,q,H]=Z.split("\t"),j=lZ(G?.trim()),B=lZ(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 X5(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 zf(J,z){let Z=Math.max(1,J.rows-(z.status?.trim()==="on"?1:0));return["-x",`${J.columns}`,"-y",`${Z}`]}async function Zf(J,z,Z={}){if(!z)return;let{code:Y,stdout:X}=await m0(["list-clients","-t",`=${J}`,"-F",zC]);if(Y!==0)return;let G=X5(Y5(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 o1(q)}async function kH(J){cZ(J,"resize");let z=Jf();await Zf(J,z);let Z=z?["-x",`${z.columns}`,"-y",`${z.rows}`]:[];if(Z.length>0)await n0(["resize-window","-t",`=${J}`,...Z]);await kY(J)}async function G5(){let{code:J,stdout:z}=await m0(["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=lZ(Y),H=lZ(X),j=q&&H?{columns:q,rows:H}:null;return{sizeArgs:j?zf(j,{status:G}):[],clientSize:j,clientName:Z?.trim()||void 0}}async function Q5(J){cZ(J,"resize");let z=await G5();await Zf(J,z.clientSize,{currentClientName:z.clientName});let Z=z.sizeArgs;if(Z.length>0)await n0(["resize-window","-t",`=${J}`,...Z]);await kY(J)}async function ZC(J){await Q5(J),await n0(["switch-client","-t",`=${J}`])}async function YC(J,z){if(!z.size)return;cZ(J,"resize"),await Zf(J,z.size,{currentClientName:z.clientName});let Z=zf(z.size,{status:z.status}),{commands:Y}=await v9(J,{force:!0});await o1([["resize-window","-t",`=${J}`,...Z],...Y])}function q5(J,z,Z){let Y=`#{?window_zoomed_flag,1,#{?${XC[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}`]}function H5(J){return`if-shell -F '#{?#{==:#{@kobe_role},tasks},,1}' { run-shell -b ${Z1(J)} }`}async function zQ(J){let z=e9.get(J.name);if(z)return z;let Z=QC(J);e9.set(J.name,Z);try{return await Z}finally{e9.delete(J.name)}}function j5(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 B5(J){if(!await F1(J))return null;let{code:z,stdout:Z}=await m0(["list-panes","-s","-t",`=${J}`,"-F",GC]);if(z!==0)return{worktree:"",vendor:"",claudePaneAlive:!1,windowCount:0};return j5(Z)}async function Yf(J){let Z=(await B5(J))?.vendor.trim();return Z?Z:null}async function QC(J){let z=J.launchInit,Z=await B5(J.name),Y=fK(Z,{cwd:J.cwd,vendor:J.vendor,hasEngineCommand:J.command.length>0}),X=uU(J.repo);if(Y.kind==="reuse")return await kY(J.name,{cwd:J.cwd,taskId:J.taskId,vendor:J.vendor}),!0;if(Y.kind==="respawn-engine"){let b0=await yK(J.name,J.cwd,J.command,X,J.vendor);if(b0==="switched"){if(J.vendor)await VZ(J.name,"@kobe_vendor",J.vendor);return await kY(J.name,{cwd:J.cwd,taskId:J.taskId,vendor:J.vendor,vendorChanged:!0}),!0}if(b0==="respawn-failed")return await kY(J.name,{cwd:J.cwd,taskId:J.taskId,vendor:J.vendor}),!0}if(Y.kind==="rebuild"||Y.kind==="respawn-engine")await cJ(J.name);let G=i1(),q=(J.archived===!0||J.preview===!0)&&I9(),H=q?{argv:[],sessionId:void 0}:WX(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=rq(pq(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=fX(uJ(q?U:f),X,J.cwd),O=q?O7(L):R7(L,{initScript:X?void 0:z?.initScript,markerPath:!X&&z?.initScript?OV(J.cwd):void 0,timeoutSeconds:PB(process.env.KOBE_REPO_INIT_TIMEOUT_SECONDS)},eY(r1(),G,J.name)),g=(await m0(["new-session","-d","-s",J.name,"-c",l1(J.cwd),...Z5(),"-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 iZ(g,nz,H.sessionId);if(await o1([...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,EG,X]]:[]]),process.env.TMUX){let{sizeArgs:b0}=await G5();if(b0.length>0)await n0(["resize-window","-t",`=${J.name}`,...b0])}await NH(g,{cwd:J.cwd,taskId:J.taskId,opsCommand:J.opsCommand,inv:G,vendor:J.vendor});let E=r1(),h=G.map(Z1).join(" "),I=`${E}${h} new-chattab --session '#{session_name}'`,N=`${I} --vendor '%%'`,M=`run-shell ${Z1(N)}`,y=`${E}${h} focus-tasks --session '#{session_name}' --window '#{window_id}'`,c=`run-shell ${Z1(y)}`,d=(b0)=>`${E}${h} layout --session '#{session_name}' --window '#{window_id}' --action ${b0}`,i=d("tasks-restore"),t=d("chat-tab-close"),X0=`run-shell ${Z1(t)}`,G0=`${E}${h} heal-layout --session '#{session_name}'`,f0=`run-shell -b ${Z1(G0)}`,_=`${E}${h} resync-window --session '#{session_name}' --client '#{client_name}' --cols '#{client_width}' --rows '#{client_height}' --status '#{status}'`,M0=`run-shell -b ${Z1(_)}`,b=`${E}${h} capture-layout --session '#{session_name}'`,p=`run-shell -b ${Z1(b)}`,w=C7({tmuxSocket:Iz}),R=tU(process.platform,eU),e=JK(R),T=zH(),a=QK.map((b0)=>["unbind-key","-n",b0]);if(T.overridden.has(dz))for(let b0 of mZ){let p0=CY(b0);if("key"in p0)a.push(["unbind-key","-n",p0.key])}for(let b0 of T.overridden){if(b0===dz)continue;let p0=NY[b0],E0=UX(b0),T0=CY(p0,{allowBare:E0});if("key"in T0)a.push(E0?["unbind-key",T0.key]:["unbind-key","-n",T0.key])}let q0=["-L","-D","-U","-R"],H0=T.focus.flatMap((b0,p0)=>{let E0=q0[p0],T0=E0==="-L"?H5(i):void 0;return b0&&E0?[q5(b0.key,E0,T0)]:[]}),j0=T.binds,y0=(b0,p0)=>{let E0=j0[b0];return E0?[["bind-key",E0.key,"run-shell",d(p0)]]:[]},i0=(...b0)=>{let p0=b0.map((E0)=>j0[E0]?.chord).filter((E0)=>!!E0);return p0.length>0?p0.join("/"):null},N0="#{?#{@kobe_surface},0,1}";await o1([["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",kX],["set-option","-g","window-status-current-format",rG],["set-option","-g","status-right",pG({focusLeft:T.focus[0]?.key??null,detach:j0["tmux.detach"]?.key??null,newTab:j0["tmux.tab.new"]?.key??null,layoutSplits:i0("tmux.layout.workspaceSplit","tmux.layout.workspaceClose","tmux.layout.workspaceReset"),layoutPanes:i0("tmux.layout.tasksToggle","tmux.layout.opsToggle","tmux.layout.terminalToggle","tmux.layout.zenToggle")})],["set-option","-g","mouse","on"],...e,["set-hook","-g","window-resized",f0],["set-hook","-g","client-resized",M0],["set-hook","-g","pane-exited",f0],["set-hook","-g","window-layout-changed",p],...a,...j0["tmux.detach"]?[["bind-key","-n",j0["tmux.detach"].key,"if-shell","-F",`#{?#{${xJ}},1,#{==:#{@kobe_role},tasks}}`,"detach-client",c]]:[],...H0,...j0["tmux.tab.new"]?[["bind-key","-n",j0["tmux.tab.new"].key,"run-shell",I]]:[],...j0["tmux.tab.chooseEngine"]?_G(j0["tmux.tab.chooseEngine"].key).map((b0)=>[...b0,M]):[],...j0["tmux.tab.prev"]&&j0["tmux.tab.next"]?lG(j0["tmux.tab.prev"].key,j0["tmux.tab.next"].key):j0["tmux.tab.prev"]?[["bind-key","-n",j0["tmux.tab.prev"].key,"if-shell","-F",N0,"previous-window"]]:j0["tmux.tab.next"]?[["bind-key","-n",j0["tmux.tab.next"].key,"if-shell","-F",N0,"next-window"]]:[],...j0["tmux.tab.close"]?[$G(j0["tmux.tab.close"].key,X0)]:[],...j0["tmux.tab.rename"]?[aG(j0["tmux.tab.rename"].key)]:[],...y0("tmux.layout.workspaceSplit","workspace-split"),...y0("tmux.layout.workspaceClose","workspace-close"),...y0("tmux.layout.workspaceReset","workspace-reset"),...y0("tmux.layout.tasksToggle","tasks-toggle"),...y0("tmux.layout.opsToggle","ops-toggle"),...y0("tmux.layout.terminalToggle","terminal-toggle"),...y0("tmux.layout.zenToggle","zen-toggle"),["bind-key","f","run-shell",`${E}${h} quick-create --session '#{session_name}'`],["bind-key","u","display-popup","-E",w]]),await bY(),await n0(["select-pane","-t",g]);let J1=z?.firstMessage;if(J1)BK(J.name,J1).catch((b0)=>console.error("[kobe tmux] first message delivery failed:",b0));return!0}async function z5(J,z,Z){let Y=Z?.trim()||`=${J}`,{code:X,stdout:G}=await m0(["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 qC(J,z={}){if(!await F1(J))return"";let Z=await z5(J,"tasks",z.windowId);if(!Z)await IY(J,"tasks-restore",{windowId:z.windowId}),Z=await z5(J,"tasks",z.windowId);if(!Z)return"";return await n0(["select-pane","-t",Z]),Z}var zC="#{client_name}\t#{client_session}\t#{client_width}\t#{client_height}\t#{client_flags}",XC,e9,GC="#{window_id}\t#{window_active}\t#{@kobe_role}\t#{@kobe_worktree}\t#{@kobe_vendor}";var HJ=C(()=>{qZ();Gz();p1();Rz();oq();w1();zK();ZH();YH();Mz();UH();RH();LY();nZ();CX();nG();w1();RH();nG();nZ();XC={"-L":"pane_at_left","-D":"pane_at_bottom","-U":"pane_at_top","-R":"pane_at_right"};e9=new Map});var yX={};j1(yX,{windowIsSurface:()=>UC,windowCount:()=>BC,tmuxSessionName:()=>y1,tmuxCommandSequence:()=>Gf,tmuxAvailable:()=>lz,tmuxArgs:()=>yY,termAllPaneGroups:()=>jf,tagPaneRole:()=>U5,tagClaudePane:()=>VC,switchClientBeforeKill:()=>$z,setWindowOption:()=>iZ,setSessionOption:()=>VZ,sessionExists:()=>F1,sendKeys:()=>IH,sendKeyName:()=>cG,runTmuxSequenceCapturing:()=>JQ,runTmuxSequence:()=>o1,runTmuxCapturing:()=>m0,runTmux:()=>n0,readLayoutGeometry:()=>iz,paneIdByRole:()=>qf,newWindow:()=>kz,killSession:()=>cJ,globalTasksPaneWidth:()=>CH,getSessionOptions:()=>hJ,getSessionOption:()=>SY,getServerOptions:()=>V5,getServerOption:()=>fC,ensureFallbackSession:()=>SH,currentSessionName:()=>mJ,claudePaneIdStrict:()=>KX,claudePaneId:()=>u9,capturePaneById:()=>DX,attachArgv:()=>IX,SURFACE_WINDOW_OPTION:()=>Hf,PANE_ROLE_OPTION:()=>ZQ,KOBE_TMUX_SOCKET:()=>Iz,KOBE_HOME_SESSION:()=>D5,CLAUDE_ROLE_OPTION:()=>WC,CHAT_TAB_SESSION_ID_OPTION:()=>nz});import{homedir as HC}from"os";function yY(...J){return["tmux","-L",Iz,...J]}function y1(J){return`kobe-${J.replace(/[^A-Za-z0-9_-]/g,"")}`}function IX(J){return yY("attach-session","-t",`=${J}`)}async function Xf(J){if(!J)return"";try{return await new Response(J).text()}catch{return""}}async function n0(J){try{let z=Bun.spawn(yY(...J),{stdin:"ignore",cwd:SX,stdout:"ignore",stderr:"pipe"}),[Z,Y]=await Promise.all([Xf(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 jC(J){try{return await Bun.spawn(yY(...J),{stdin:"ignore",cwd:SX,stdout:"ignore",stderr:"ignore"}).exited}catch{return 1}}function Gf(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 o1(J){let z=Gf(J);return z.length===0?0:n0(z)}async function m0(J){try{let z=Bun.spawn(yY(...J),{stdin:"ignore",cwd:SX,stdout:"pipe",stderr:"pipe"}),[Z,Y,X]=await Promise.all([Xf(z.stdout),Xf(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 JQ(J){let z=Gf(J);return z.length===0?{code:0,stdout:""}:m0(z)}async function lz(){try{return await Bun.spawn(["tmux","-V"],{stdin:"ignore",cwd:SX,stdout:"ignore",stderr:"ignore"}).exited===0}catch{return!1}}async function F1(J){return await jC(["has-session","-t",`=${J}`])===0}async function BC(J){let{code:z,stdout:Z}=await m0(["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 VZ(J,z,Z){await n0(["set-option","-t",J,z,Z])}async function SY(J,z){let{code:Z,stdout:Y}=await m0(["show-options","-qv","-t",J,z]);return Z===0?Y.trim():""}async function hJ(J,z){let Z=Object.fromEntries(z.map((G)=>[G,void 0])),{code:Y,stdout:X}=await JQ(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 fC(J){let{code:z,stdout:Z}=await m0(["show-options","-sqv",J]);return z===0?Z.trim():""}async function V5(J){let z=Object.fromEntries(J.map((X)=>[X,void 0])),{code:Z,stdout:Y}=await JQ(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 CH(){return(await iz()).tasksWidth}async function iz(){return M7(await V5(F7))}async function U5(J,z){await n0(["set-option","-p","-t",J,ZQ,z])}async function iZ(J,z,Z){await n0(["set-window-option","-t",J,z,Z])}async function VC(J){await U5(J,Qf)}async function qf(J,z,Z=!1){let{code:Y,stdout:X}=await m0(["list-panes","-t",`=${J}`,"-F",`#{pane_id} #{${ZQ}}`]);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 u9(J){return qf(J,Qf,!0)}async function KX(J){return qf(J,Qf,!1)}async function DX(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 m0(Z);return Y===0?X:""}async function IH(J,z){await n0(["send-keys","-t",J,"-l","--",z])}async function cG(J,z){await n0(["send-keys","-t",J,z])}async function kz(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 m0(Z),G=X.trim();if(Y===0&&G)await iZ(G,Hf,"1");return}Z.push(z.command),await n0(Z)}async function UC(J){let{code:z,stdout:Z}=await m0(["display-message","-t",J,"-p",`#{${Hf}}`]);return z===0&&Z.trim()==="1"}async function mJ(){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 m0(J),X=Y.trim();return Z===0&&X.length>0?X:null}async function K5(J){let{code:z,stdout:Z}=await m0(["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 f5(J){await K5(["-s","-t",`=${J}`])}async function jf(){await K5(["-a"])}async function cJ(J){if(!J.startsWith("kobe-hidden-")){let z=OG(J);if(await F1(z))await f5(z),await n0(["kill-session","-t",`=${z}`])}if(await F1(J))await f5(J),await n0(["kill-session","-t",`=${J}`])}async function SH(){let J=D5;if(await F1(J)){if(await SY(J,W5)==="tasks")return J;await n0(["kill-session","-t",`=${J}`])}let Z=(await m0(["new-session","-d","-s",J,"-c",SX,"-x","220","-y","50","-P","-F","#{pane_id}",A7()])).stdout.trim();if(Z){let Y=await CH(),G=(await m0(["split-window","-h","-b","-t",Z,"-l",`${Y}`,"-c",SX,"-P","-F","#{pane_id}",EJ(r1()+EZ(i1()))])).stdout.trim();if(G)await o1([["set-option","-p","-t",G,ZQ,"tasks"],["select-pane","-t",G]])}return await VZ(J,W5,"tasks"),J}async function $z(J,z){if(await mJ()!==J)return;let{enterWindow:Y}=await Promise.resolve().then(() => (HJ(),vJ));if(z&&z!==J&&await F1(z)){await Y(z);return}await Y(await SH())}var Iz,SX,ZQ="@kobe_role",WC,Qf="claude",nz="@kobe_session_id",Hf="@kobe_surface",D5="kobe-home",W5="@kobe_home";var w1=C(()=>{qZ();LY();Mz();Iz=process.env.KOBE_TMUX_SOCKET?.trim()||"kobe";SX=HC()||"/";WC=ZQ});async function KC(J,z=L5){let{code:Z,stdout:Y}=await z.capture(["list-windows","-t",`=${J}`,"-F",`#{window_index} #{automatic-rename} #{${nz}}`]);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 DC(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 LC(J){let{code:z,stdout:Z}=await J.capture(["show-window-options","-g","automatic-rename"]);return z===0&&/\boff\b/.test(Z)}async function FC(J,z,Z,Y){return await Y.run(["rename-window","-t",`=${J}:${z}`,"--",Z])===0}async function F5(J,z=MC){let Z=0,Y=null,X=async(G,q)=>{if(q.autoRename==="1")return!1;if(q.autoRename==="0"){if(Y===null)Y=await LC(z.runner);if(!Y)return!0}return DC(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 KC(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 FC(q,V.index,f,z.runner))Z++}catch{}}return Z}var L5,MC;var M5=C(()=>{Tq();w1();Xz();L5={capture:m0,run:n0};MC={runner:L5,titleFromSessionId:jU,titleFromWorktree:YX}});function A5(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 O5(J,z,Z=new Date){let Y=A5(z);return`[${Z.toISOString()}] daemon ${J}: ${Y.stack??`${Y.name}: ${Y.message}`}
63
- `}function OC(J,z,Z=new Date){let Y=A5(z);return`[${Z.toISOString()}] daemon error [${J}]: ${Y.stack??`${Y.name}: ${Y.message}`}
64
- `}function E1(J,z){process.stderr.write(OC(J,z))}function AC(J,z,Z=new Date){return`[${Z.toISOString()}] daemon [${J}]: ${z}
65
- `}function az(J,z){process.stderr.write(AC(J,z))}function R5(J=(z)=>process.stderr.write(z)){if(Bf||ff)return;Bf=(z)=>J(O5("unhandledRejection",z)),ff=(z)=>J(O5("uncaughtException",z)),process.on("unhandledRejection",Bf),process.on("uncaughtException",ff)}var Bf,ff;async function RC(J,z=YX){let Z=[];for(let Y of J.listTasks()){if(Y.archived||Y.title!==cz||!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!==cz)continue;await J.setTitle(Y.id,X),Z.push({id:Y.id,title:X})}catch(X){E1("auto-title-poller",X)}}return Z}function g5(J,z=Wf,Z){if(z<=0)return()=>{};let Y=!1,G=setInterval(()=>{if(Z&&!Z())return;if(Y)return;Y=!0,RC(J).then(()=>F5(J)).catch((q)=>E1("auto-title-poller",q)).finally(()=>{Y=!1})},z);return G.unref?.(),()=>clearInterval(G)}var Wf=4000;var N5=C(()=>{Tq();uG();M5();Xz()});class Vf{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 Uf{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 C5(J,z,Z=aq){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 b5=C(()=>{wG()});import{createHash as gC}from"crypto";import{homedir as NC}from"os";import $Z from"path";function SC(){return $Z.join(process.env.KOBE_HOME_DIR??NC(),".kobe")}function yC(J){let Z=($Z.basename(J)||"repo").replace(/[^a-zA-Z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"repo",Y=gC("sha1").update($Z.resolve(J)).digest("hex").slice(0,12);return`${Z}-${Y}`}function TC(J){if(!$Z.isAbsolute(J))throw Error(`worktreeRootFor: repo must be an absolute path, got: ${J}`);return $Z.join(SC(),CC,yC(J))}function xC(J){if(!$Z.isAbsolute(J))throw Error(`managedWorktreeRootsFor: repo must be an absolute path, got: ${J}`);return[TC(J),...IC.map((z)=>$Z.join(J,z))]}function _z(J){return J.length>1&&J.endsWith("/")?J.slice(0,-1):J}function k5(J,z){return z===J||z.startsWith(`${J}/`)}function I5(J,z){let Z=_z(z),Y,X=-1;for(let G of J){if(!G.worktreePath)continue;let q=_z(G.worktreePath);if(k5(q,Z)&&q.length>X)X=q.length,Y=G.id}return Y}function S5(J,z){let Z=_z(z);for(let Y of J)if(Y.worktreePath&&_z(Y.worktreePath)===Z)return Y.id;return}function Kf(J,z){let Z=_z(z),Y,X=-1;for(let G of J){if(!G.repo)continue;let q=_z(G.repo);if(k5(q,Z)&&q.length>X)X=q.length,Y=q}return Y}function y5(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 xC(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 CC="worktrees",bC=".kobe/worktrees",kC=".claude/worktrees",IC;var T5=C(()=>{IC=[bC,kC]});function Ff(J){return{message:J instanceof Error?J.message:String(J),name:J instanceof Error?J.name:void 0}}async function YQ(J,z,Z,Y){let X=J.get(z);if(!X)throw Error(`unknown daemon request: ${z}`);return X.handle(Mf(Z),Y)}function XQ(){return new Map([{name:"hello",handle(z,Z){let Y=typeof z.protocolVersion==="number"?z.protocolVersion:Jz,X=typeof z.minProtocolVersion==="number"?z.minProtocolVersion:Y;if(!Zq({localVersion:Jz,localMin:SZ,remoteVersion:Y,remoteMin:X}))throw Error(`daemon is protocol v${Jz} (min v${SZ}); this client is v${Y} (min v${X}). Upgrade your kobe.`);return{protocolVersion:Jz,minProtocolVersion:SZ,kobeVersion:e0,capabilities:[...gB],daemonPid:Z.daemon.pid,clientId:Z.clientId,tasks:Z.orch.listTasks().map(Kz)}}},{name:"daemon.status",handle(z,Z){return{daemonPid:Z.daemon.pid,kobeVersion:e0,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(Kz)}}},{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:Kz(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:Lf(z,"vendor"),modelEffort:qz(z,"effort")});return{taskId:X.id,task:Kz(X)}}},{name:"task.archive",async handle(z,Z){let Y=k1(z,"taskId");return await Z.orch.setArchived(Y,Df(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=Lf(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:Df(z,"force")}),Z.activity.clearTask(Y),{}}},{name:"task.pin",async handle(z,Z){let Y=k1(z,"taskId");return await Z.orch.setPinned(Y,Df(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(!YU(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){E1("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:Kz(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:Lf(z,"vendor"),title:qz(z,"title"),ifExists:qz(z,"ifExists")==="return"?"return":"error"});return{task:Kz(Y)}}},{name:"worktree.reconcile",async handle(z,Z){let Y=k1(z,"cwd"),X=k1(z,"worktreePath"),G=Kf(Z.orch.listTasks(),Y)??Kf(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 E1("worktree-created",q),{adopted:!1}}}},{name:"worktree.archiveRemoved",async handle(z,Z){let Y=k1(z,"worktreePath"),X=S5(Z.orch.listTasks(),Y);if(!X)return{archived:!1};try{return await Z.orch.setArchived(X,!0),{archived:!0,taskId:X}}catch(G){return E1("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(!Iq(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=y5(Z.orch.listTasks(),G);if(j)try{await Z.orch.adoptWorktree({repo:j.repo,worktreePath:j.worktreePath,ifExists:"return"})}catch(B){E1("worktree-autosync",B)}}let q=X??(G?I5(Z.orch.listTasks(),G):void 0);if(!q)return{};let H=uC(z);if(Z.activity.report(q,Y,H),Y==="turn-start")C5(Z.orch,q).then((j)=>{if(j==="moved")console.log(`[status-rules] task ${q} auto-moved backlog \u2192 in_progress`)}).catch((j)=>E1("status-rules",j));return{}}}].map((z)=>[z.name,z]))}function Mf(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 Df(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 Lf(J,z){let Z=qz(J,z);return Z&&Z.trim().length>0?Z:void 0}function uC(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 yH=C(()=>{Sq();b5();Xz();kJ();T5();GY()});import{execFile as EC}from"child_process";import{mkdir as wC,readFile as PC,realpath as x5,rename as hC,stat as vC,writeFile as mC}from"fs/promises";import{homedir as cC}from"os";import{dirname as dC,isAbsolute as nC,join as iC,resolve as u5}from"path";import{promisify as lC}from"util";function $C(J){return(J instanceof Error?J.message:String(J)).includes("not a git repository")}function xH(J=process.env.KOBE_HOME_DIR??cC()){return iC(J,".kobe","issues.json")}function w5(J){return typeof J==="string"&&E5.includes(J)}function aC(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 _C(){return{version:1,repos:{}}}function pC(){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 rC(J){let{stdout:z}=await Cf("git",["-C",J,"rev-parse","--git-common-dir"]),Z=z.trim();return x5(nC(Z)?Z:u5(J,Z))}async function oC(J){let{stdout:z}=await Cf("git",["-C",J,"rev-parse","--show-toplevel"]);return z.trim()}async function sC(J){let{stdout:z}=await Cf("git",["-C",J,"worktree","list","--porcelain"]),Z=z.split(/\r?\n/).find((Y)=>Y.startsWith("worktree "))?.slice(9).trim();return Z?x5(Z):oC(J)}async function Of(J){if(typeof J!=="string"||J.length===0)throw Error("repoRoot is required");let z=u5(J);if(!(await vC(z).catch(()=>null))?.isDirectory())throw Error("repoRoot does not exist");try{let[Y,X]=await Promise.all([sC(z),rC(z)]);return{repoRoot:Y,repoKey:X}}catch(Y){if($C(Y))throw Error("repoRoot is not a git repository");throw Y}}async function Af(J){try{let z=JSON.parse(await PC(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(aC).filter((q)=>q!==null):[]}}return{version:1,repos:Z}}catch(z){if(z.code==="ENOENT")return _C();throw z}}async function Rf(J,z){await wC(dC(J),{recursive:!0});let Z=`${J}.tmp`;await mC(Z,`${JSON.stringify(z,null,2)}
66
- `,"utf8"),await hC(Z,J)}function gf(J,z){return{repoRoot:J,exists:z!==null,nextId:z?.nextId??1,issues:z?.issues??[]}}async function Nf(J,z){let Y=(TH.get(J)??Promise.resolve()).then(z),X=Y.then(()=>{return},()=>{return});return TH.set(J,X),X.then(()=>{if(TH.get(J)===X)TH.delete(J)}),Y}class uH{path;constructor(J=xH()){this.path=J}async list(J){let{repoRoot:z,repoKey:Z}=await Of(J);return Nf(this.path,async()=>{let Y=await Af(this.path),X=Y.repos[Z]??null;if(X&&X.repoRoot!==z)X.repoRoot=z,await Rf(this.path,Y);return gf(z,X)})}async mirrorTaskDone(J,z){let{repoRoot:Z,repoKey:Y}=await Of(J);if(!z)return null;return Nf(this.path,async()=>{let X=await Af(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 Rf(this.path,X),gf(Z,G)})}async mutate(J,z){let{repoRoot:Z,repoKey:Y}=await Of(J);if(!z||typeof z!=="object"||Array.isArray(z)||typeof z.type!=="string")throw Error("missing op");return Nf(this.path,async()=>{let X=await Af(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:pC(),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(!w5(q.status))throw Error(`invalid status: must be one of ${E5.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 Rf(this.path,X),gf(Z,G)})}}var Cf,E5,TH;var bf=C(()=>{Cf=lC(EC),E5=["open","doing","hold","done"];TH=new Map});import{lstat as P5,readdir as tC,realpath as eC,stat as Jb}from"fs/promises";import{join as zb,relative as Zb,resolve as h5,sep as Yb}from"path";import{Readable as Xb}from"stream";function n5(J,z={}){let Z=z.entryType||z.type;if(Z==="both")Z=pJ.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&&!v5.includes(Z))throw Error(`readdirp: Invalid type passed. Use one of ${v5.join(", ")}`);return z.root=J,new If(z)}var pJ,kf,d5="READDIRP_RECURSIVE_ERROR",Gb,v5,Qb,qb,Hb=(J)=>Gb.has(J.code),jb,m5=(J)=>!0,c5=(J)=>{if(J===void 0)return m5;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 m5},If;var i5=C(()=>{pJ={FILE_TYPE:"files",DIR_TYPE:"directories",FILE_DIR_TYPE:"files_directories",EVERYTHING_TYPE:"all"},kf={root:".",fileFilter:(J)=>!0,directoryFilter:(J)=>!0,type:pJ.FILE_TYPE,lstat:!1,depth:2147483648,alwaysStat:!1,highWaterMark:4096};Object.freeze(kf);Gb=new Set(["ENOENT","EPERM","EACCES","ELOOP",d5]),v5=[pJ.DIR_TYPE,pJ.EVERYTHING_TYPE,pJ.FILE_DIR_TYPE,pJ.FILE_TYPE],Qb=new Set([pJ.DIR_TYPE,pJ.EVERYTHING_TYPE,pJ.FILE_DIR_TYPE]),qb=new Set([pJ.EVERYTHING_TYPE,pJ.FILE_DIR_TYPE,pJ.FILE_TYPE]),jb=process.platform==="win32";If=class If extends Xb{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={...kf,...J},{root:Z,type:Y}=z;this._fileFilter=c5(z.fileFilter),this._directoryFilter=c5(z.directoryFilter);let X=z.lstat?P5:Jb;if(jb)this._stat=(G)=>X(G,{bigint:!0});else this._stat=X;this._maxDepth=z.depth!=null&&Number.isSafeInteger(z.depth)?z.depth:kf.depth,this._wantsDir=Y?Qb.has(Y):!1,this._wantsFile=Y?qb.has(Y):!1,this._wantsEverything=Y===pJ.EVERYTHING_TYPE,this._root=h5(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 tC(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=h5(zb(z,Y));Z={path:Zb(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(Hb(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 eC(Z),X=await P5(Y);if(X.isFile())return"file";if(X.isDirectory()){let G=Y.length;if(Z.startsWith(Y)&&Z.substr(G,1)===Yb){let q=Error(`Circular symlink detected: "${Z}" points to "${Y}"`);return q.code=d5,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 Bb,unwatchFile as l5,watchFile as fb}from"fs";import{realpath as Sf,lstat as Wb,open as Vb,stat as a5}from"fs/promises";import{type as Ub}from"os";import*as m1 from"path";function $5(J,z,Z,Y,X){let G=(q,H)=>{if(Z(J),X(q,H,{watchedPath:J}),H&&J!==H)PH(m1.resolve(J,H),TY,m1.join(J,H))};try{return Bb(J,{persistent:z.persistent},G)}catch(q){Y(q);return}}class Ef{fsw;_boundHandleError;constructor(J){this.fsw=J,this._boundHandleError=(z)=>J._handleError(z)}_watchWithNodeFs(J,z){let Z=this.fsw.options,Y=m1.dirname(J),X=m1.basename(J);this.fsw._getWatchedDir(Y).add(X);let q=m1.resolve(J),H={persistent:Z.persistent};if(!z)z=hH;let j;if(Z.usePolling){let B=Z.interval!==Z.binaryInterval;H.interval=B&&gb(X)?Z.binaryInterval:Z.interval,j=bb(J,q,H,{listener:z,rawEmitter:this.fsw._emitRaw})}else j=Cb(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=m1.dirname(J),X=m1.basename(J),G=this.fsw._getWatchedDir(Y),q=z;if(G.has(X))return;let H=async(B,V)=>{if(!this.fsw._throttle(Mb,J,5))return;if(!V||V.mtimeMs===0)try{let f=await a5(J);if(this.fsw.closed)return;let{atimeMs:U,mtimeMs:L}=f;if(!U||U<=L||L!==q.mtimeMs)this.fsw._emit(Sz.CHANGE,J,f);if((Db||Lb||Fb)&&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(Sz.CHANGE,J,V);q=V}},j=this._watchWithNodeFs(J,H);if(!(Z&&this.fsw.options.ignoreInitial)&&this.fsw._isntIgnored(J)){if(!this.fsw._throttle(Sz.ADD,J,0))return;this.fsw._emit(Sz.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 Sf(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(Sz.CHANGE,Z,J.stats)}else G.add(Y),this.fsw._symlinkPaths.set(X,q),this.fsw._emit(Sz.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=m1.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(Kb,async(f)=>{if(this.fsw.closed){V=void 0;return}let U=f.path,L=m1.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=m1.join(X,m1.relative(X,L)),this._addToNodeFs(L,z,Z,G+1)}).on(Sz.ERROR,this._boundHandleError),new Promise((f,U)=>{if(!V)return U();V.once(xf,()=>{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(m1.dirname(J)),j=H.has(m1.basename(J));if(!(Z&&this.fsw.options.ignoreInitial)&&!X&&!j)this.fsw._emit(Sz.ADD_DIR,J,z);H.add(m1.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 Ob[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=m1.resolve(J),f=j?await Sf(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 Sf(J):J;if(this.fsw.closed)return;let f=m1.dirname(q.watchPath);if(this.fsw._getWatchedDir(f).add(q.watchPath),this.fsw._emit(Sz.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(m1.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 Kb="data",xf="end",_5="close",hH=()=>{},vH,uf,Db,Lb,Fb,p5,h1,Sz,Mb="watch",Ob,TY="listeners",EH="errHandlers",TX="rawEmitters",Ab,Rb,gb=(J)=>Rb.has(m1.extname(J).slice(1).toLowerCase()),Tf=(J,z)=>{if(J instanceof Set)J.forEach(z);else z(J)},GQ=(J,z,Z)=>{let Y=J[z];if(!(Y instanceof Set))J[z]=Y=new Set([Y]);Y.add(Z)},Nb=(J)=>(z)=>{let Z=J[z];if(Z instanceof Set)Z.clear();else delete J[z]},QQ=(J,z,Z)=>{let Y=J[z];if(Y instanceof Set)Y.delete(Z);else if(Y===Z)delete J[z]},r5=(J)=>J instanceof Set?J.size===0:!J,wH,PH=(J,z,Z,Y,X)=>{let G=wH.get(J);if(!G)return;Tf(G[z],(q)=>{q(Z,Y,X)})},Cb=(J,z,Z,Y)=>{let{listener:X,errHandler:G,rawEmitter:q}=Y,H=wH.get(z),j;if(!Z.persistent){if(j=$5(J,Z,X,G,q),!j)return;return j.close.bind(j)}if(H)GQ(H,TY,X),GQ(H,EH,G),GQ(H,TX,q);else{if(j=$5(J,Z,PH.bind(null,z,TY),G,PH.bind(null,z,TX)),!j)return;j.on(Sz.ERROR,async(B)=>{let V=PH.bind(null,z,EH);if(H)H.watcherUnusable=!0;if(uf&&B.code==="EPERM")try{await(await Vb(J,"r")).close(),V(B)}catch(f){}else V(B)}),H={listeners:X,errHandlers:G,rawEmitters:q,watcher:j},wH.set(z,H)}return()=>{if(QQ(H,TY,X),QQ(H,EH,G),QQ(H,TX,q),r5(H.listeners))H.watcher.close(),wH.delete(z),Ab.forEach(Nb(H)),H.watcher=void 0,Object.freeze(H)}},yf,bb=(J,z,Z,Y)=>{let{listener:X,rawEmitter:G}=Y,q=yf.get(z),H=q&&q.options;if(H&&(H.persistent<Z.persistent||H.interval>Z.interval))l5(z),q=void 0;if(q)GQ(q,TY,X),GQ(q,TX,G);else q={listeners:X,rawEmitters:G,options:Z,watcher:fb(z,Z,(j,B)=>{Tf(q.rawEmitters,(f)=>{f(Sz.CHANGE,z,{curr:j,prev:B})});let V=j.mtimeMs;if(j.size!==B.size||V>B.mtimeMs||V===0)Tf(q.listeners,(f)=>f(J,j))})},yf.set(z,q);return()=>{if(QQ(q,TY,X),QQ(q,TX,G),r5(q.listeners))yf.delete(z),l5(z),q.options=q.watcher=void 0,Object.freeze(q)}};var o5=C(()=>{vH=process.platform,uf=vH==="win32",Db=vH==="darwin",Lb=vH==="linux",Fb=vH==="freebsd",p5=Ub()==="OS400",h1={ALL:"all",READY:"ready",ADD:"add",CHANGE:"change",ADD_DIR:"addDir",UNLINK:"unlink",UNLINK_DIR:"unlinkDir",RAW:"raw",ERROR:"error"},Sz=h1,Ob={lstat:Wb,stat:a5},Ab=[TY,EH,TX],Rb=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"]),wH=new Map;yf=new Map});import{EventEmitter as kb}from"events";import{stat as Ib,Stats as $n}from"fs";import{readdir as Sb,stat as yb}from"fs/promises";import*as f1 from"path";function mH(J){return Array.isArray(J)?J:[J]}function hb(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 vb(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(Z6,"/"),z)J="/"+J;return J}function s5(J,z,Z){let Y=vb(z);for(let X=0;X<J.length;X++){let G=J[X];if(G(Y,Z))return!0}return!1}function mb(J,z){if(J==null)throw TypeError("anymatch: specify first argument");let Y=mH(J).map((X)=>hb(X));if(z==null)return(X,G)=>{return s5(Y,X,G)};return s5(Y,z)}class X6{path;_removeWatcher;items;constructor(J,z){this.path=J,this._removeWatcher=z,this.items=new Set}add(J){let{items:z}=this;if(!z)return;if(J!==z6&&J!==xb)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 Sb(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=hH,this.items=db,Object.freeze(this)}}class G6{fsw;path;watchPath;fullWatchPath;dirParts;followSymlinks;statMethod;constructor(J,z,Z){this.fsw=Z;let Y=J;this.path=J=J.replace(Pb,""),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?nb:ib}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 q6(J,z={}){let Z=new Q6(z);return Z.add(J),Z}var wf="/",Tb="//",z6=".",xb="..",ub="string",Eb,Z6,wb,Pb,Pf=(J)=>typeof J==="object"&&J!==null&&!(J instanceof RegExp),t5=(J)=>{let z=mH(J).flat();if(!z.every((Z)=>typeof Z===ub))throw TypeError(`Non-string provided as watch path: ${z}`);return z.map(Y6)},e5=(J)=>{let z=J.replace(Eb,wf),Z=!1;if(z.startsWith(Tb))Z=!0;if(z=z.replace(Z6,wf),Z)z=wf+z;return z},Y6=(J)=>e5(f1.normalize(e5(J))),J6=(J="")=>(z)=>{if(typeof z==="string")return Y6(f1.isAbsolute(z)?z:f1.join(J,z));else return z},cb=(J,z)=>{if(f1.isAbsolute(J))return J;return f1.join(z,J)},db,nb="stat",ib="lstat",Q6;var H6=C(()=>{i5();o5();/*! chokidar - MIT License (c) 2012 Paul Miller (paulmillr.com) */Eb=/\\/g,Z6=/\/\//g,wb=/\..*\.(sw[px])$|~$|\.subl.*\.tmp/,Pb=/^\.[/\\]/;db=Object.freeze(new Set);Q6=class Q6 extends kb{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?mH(J.ignored):mH([]),awaitWriteFinish:z===!0?Z:typeof z==="object"?{...Z,...z}:!1};if(p5)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=hH,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 Ef(this),Object.freeze(Y)}_addIgnoredPath(J){if(Pf(J)){for(let z of this._ignoredPaths)if(Pf(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(Pf(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=t5(J);if(Y)X=X.map((G)=>{return cb(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=t5(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)||z6;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(uf)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 yb(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){Ib(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&&wb.test(J))return!0;if(!this._userIgnored){let{cwd:Z}=this.options,X=(this.options.ignored||[]).map(J6(Z)),q=[...[...this._ignoredPaths].map(J6(Z)),...X];this._userIgnored=mb(q,void 0)}return this._userIgnored(J,z)}_isntIgnored(J,z){return!this._isIgnored(J,z)}_getWatchHelpers(J){return new G6(J,this.options.followSymlinks,this)}_getWatchedDir(J){let z=f1.resolve(J);if(!this._watched.has(z))this._watched.set(z,new X6(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=n5(J,Z);return this._streams.add(Y),Y.once(_5,()=>{Y=void 0}),Y.once(xf,()=>{if(Y)this._streams.delete(Y),Y=void 0}),Y}}});import{mkdirSync as lb,statSync as $b}from"fs";import{basename as j6,dirname as ab,join as _b}from"path";function cH(J){if(J.debounceMs<=0)return()=>{};let z=ab(J.filePath),Z=new Set([j6(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(j6(V)))return;H()},B=(V)=>{try{let f=$b(_b(z,V));return`${f.mtimeMs}:${f.size}`}catch{return null}};try{lb(z,{recursive:!0});let V=new Map;for(let f of Z)V.set(f,B(f));X=q6(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 hf=C(()=>{H6()});import{homedir as pb}from"os";import{basename as rb,join as ob}from"path";function mf(J=process.env.KOBE_HOME_DIR??pb()){return ob(J,".kobe","settings","keybindings.yaml")}function B6(J,z={}){let Z=z.debounceMs??vf;if(Z<=0)return()=>{};let Y=z.path??mf(),X=rb(Y),G=X.replace(/\.yaml$/,".yml"),q=0;return J.publish("keybindings",{rev:q}),cH({filePath:Y,matchBasenames:[X,G],debounceMs:Z,onTrigger:()=>{try{q+=1,J.publish("keybindings",{rev:q})}catch(j){E1("keybindings-watcher",j)}},onError:(j)=>E1("keybindings-watcher",j)})}var vf=200;var f6=C(()=>{hf()});class cf{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??sb,this.log=J.log??az}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 sb=(J,z)=>{let Z=setTimeout(J,z);return Z.unref?.(),()=>clearTimeout(Z)};var W6=()=>{};import{spawn as tb}from"child_process";function Qk(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=tb("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 Hk(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 jk(J,z){let Z=z.tickMs??qQ,Y=z.rand,X={tickMs:Z,settledMs:Jk,noPrMs:eb,noRemoteMs:Yk,failureBaseMs:zk,failureCapMs:Zk,jitterRatio:Xk},G=[];for(let q of J.listTasks()){if(!Hk(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"){az("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,TG({kind:"error",error:B.error},j,z.now,X,Y));continue}if(B.kind==="empty"){z.schedule.set(q.id,TG({kind:"empty"},j,z.now,X,Y));continue}let V=SU(B.view,z.at),f=J.getTask(q.id);if(!f){z.schedule.delete(q.id);continue}if(!iq(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,TG({kind:"pr",settled:U},j,z.now,X,Y))}catch(B){E1("pr-status-poller",B),z.schedule.set(q.id,TG({kind:"error",error:"network"},j,z.now,X,Y))}}return G}function V6(J,z=qQ,Z,Y=qk){if(z<=0)return()=>{};let X=new Map,G=!1,H=setInterval(()=>{if(Z&&!Z())return;if(G)return;G=!0,jk(J,{run:Y,now:Date.now(),at:new Date().toISOString(),schedule:X,tickMs:z}).catch((j)=>E1("pr-status-poller",j)).finally(()=>{G=!1})},z);return H.unref?.(),()=>clearInterval(H)}var qQ=30000,eb=300000,Jk=600000,zk,Zk=900000,Yk=1800000,Xk=0.2,Gk=1e4,qk=async(J,z)=>{let Z=new AbortController,Y=!1,X=setTimeout(()=>{Y=!0,Z.abort()},Gk);try{let G=await Qk(["pr","view",z,"--json",IU],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 B9({parseError:!0})}return B9({spawnError:G.spawnError,timedOut:Y,exitCode:G.status,stderr:G.stderr})}finally{clearTimeout(X)}};var U6=C(()=>{f9();S1();zk=qQ});function Vk(J,z){return J.mtimeMs===z.mtimeMs&&J.completionId===z.completionId&&J.completionAt===z.completionAt}async function Uk(J,z,Z,Y){let X=await ZX(z,J),G=await Z.latestCompletion(J);return{mtimeMs:X,completionId:G?.id??null,completionAt:G?.timestampMs??0}}function Kk(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 K6{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=Kk(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){E1("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:NG(z)},this.entries.set(J,Z);else if(Z.vendor!==z)Z.vendor=z,Z.detector=NG(z);let Y=this.options.cadence??{timeoutMs:Bk,slowRetryMs:fk,minIntervalMs:Wk},X=this.options.run??Uk,G=Z;qX(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&&Vk(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 D6(J,z,Z=df,Y){if(Z<=0)return()=>{};let X=new K6(J,z,{hasSubscribers:Y});X.tick();let G=setInterval(()=>X.tick(),Z);return G.unref?.(),()=>{clearInterval(G),X.stop()}}var df=1500,Bk=4000,fk=60000,Wk=1500;var L6=C(()=>{bq();HX();kq();S1();Xz()});import{readFileSync as Dk}from"fs";import{homedir as Lk}from"os";import{basename as Fk,join as Mk}from"path";function lf(J=process.env.KOBE_HOME_DIR??Lk()){return Mk(J,".config","kobe","state.json")}function F6(J){let z={};try{let B=JSON.parse(Dk(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"&&Ak.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 Rk(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 M6(J,z={}){let Z=z.debounceMs??nf;if(Z<=0)return()=>{};let Y=z.pollMs??Ok,X=z.statePath??lf(),G=Fk(X),q=F6(X);return J.publish("ui-prefs",q),cH({filePath:X,matchBasenames:[G],debounceMs:Z,pollMs:Y,onTrigger:()=>{try{let j=F6(X);if(Rk(q,j))return;q=j,J.publish("ui-prefs",j)}catch(j){E1("ui-prefs-watcher",j)}},onError:(j)=>E1("ui-prefs-watcher",j)})}var nf=200,Ok=250,Ak;var O6=C(()=>{hf();Ak=["primary","success","info"]});function xX(J){return xY.includes(J)?J:"auto"}var xY,A6,UZ="editor.kind",aZ="editor.customCommand",dH="auto";var nH=C(()=>{xY=["auto","vim","nvim","nano","emacs","custom"],A6=["nvim","vim","emacs","nano"]});function EY(J){return J==="taskpanel"?"taskpanel":"chattab"}var KZ="settings.surface",uY="chattab";function R6(J){return J>="0"&&J<="7"}function N6(J,z){let Z=[],Y="",X=()=>{if(Y.length>0){for(let q of gk.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(R6(H)){let j="",B=G+1;while(B<J.length&&j.length<3&&R6(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:Nk.decode(new Uint8Array(Z)),end:G}}function wY(J){if(J.length===0||J[0]!=='"')return J;return N6(J,0).value}function C6(J,z){if(J[0]==='"'){let Y=N6(J,0);if(J.startsWith(z,Y.end))return{orig:Y.value,neu:wY(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:wY(J.slice(Z+z.length))}}function Ck(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=C6(J," => ");if(Z)return{path:Z.neu,origPath:Z.orig};return{path:wY(J)}}function iH(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=C6(q," -> ");if(H){z.push({x:X,y:G,path:H.neu,origPath:H.orig});continue}}z.push({x:X,y:G,path:wY(q)})}return z}function g6(J){if(J==="-")return null;let z=Number.parseInt(J,10);return Number.isNaN(z)?null:z}function b6(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=Ck(q);if(H.path.length===0)continue;z.push({path:H.path,...H.origPath!==void 0?{origPath:H.origPath}:{},added:g6(Y.slice(0,X)),deleted:g6(Y.slice(X+1,G))})}return z}var gk,Nk;var lH=C(()=>{gk=new TextEncoder,Nk=new TextDecoder});function rJ(J=process.env){return{...J,...$f}}var $f;var _Z=C(()=>{$f={GIT_OPTIONAL_LOCKS:"0"}});async function uX(J,z,Z={}){if(!J)return{stdout:"",stderr:"worktreePath is required",status:-1};let Y=(Z.execForPath??BZ)(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:$f,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 bk(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 $H(J,z,Z={}){let Y=bk(J,z);if(!Y)return null;let X=(Z.execForPath??BZ)(J);try{return await X.readFile(Y)}catch{return null}}var aH=C(()=>{Rz();_Z()});import{statSync as kk}from"fs";async function HQ(J,z){let Z=await uX(J,z,{timeoutMs:Ik}),Y=Z.status??-1;return{ok:Y===0,stdout:Z.stdout,stderr:Z.stderr,code:Y}}function yk(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 k6(J){if(J==="/dev/null")return null;let z=J;if(z.startsWith('"'))z=wY(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 I6(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=k6(G[1]);if(X===null){let q=Y.match(/^--- (.*)$/m);if(q)X=k6(q[1])}if(X===null){let q=Y.match(/^diff --git a\/.* b\/(.*)$/m);if(q)X=wY(q[1])}if(X===null)continue;z.set(X,Y.endsWith(`
69
- `)?Y:`${Y}
70
- `)}return z}async function Tk(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 xk(J,z){let Z=await HQ(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 S6(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(!hZ(Y))return Response.json({error:"worktreePath does not exist"},{status:400});if(!BZ(Y).isRemote)try{if(!kk(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 HQ(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([HQ(Y,["status","--porcelain=v1","-z","--untracked-files=all"]),HQ(Y,["diff","--no-color"]),HQ(Y,["diff","--no-color","--staged"])]);if(!q.ok)return Response.json({error:`git status failed: ${q.stderr.trim()}`},{status:500});let B=I6(H.stdout),V=I6(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 M=h==="?"&&I==="?",y=h!==" "&&h!=="?"?h:I,c=h!==" "&&h!=="?",d="";if(M)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:M?"untracked":yk(y),staged:c,patch:d})}if(L.length>0){let g=await Tk(L,Sk,(E)=>xk(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 Ik=15000,Sk=8;var y6=C(()=>{Rz();lH();aH()});import{isAbsolute as uk}from"path";function x6(J){return typeof J==="string"&&J.length>0&&/^[A-Za-z0-9_-]+$/.test(J)}function wk(J){return typeof J==="string"&&J.length>0&&/^[A-Za-z0-9._-]+$/.test(J)&&!J.includes("..")}async function Pk(J){let z=J.searchParams.get("worktreePath"),Z=J.searchParams.get("vendor")??"claude";if(!z||!uk(z))return Response.json({error:"worktreePath must be an absolute path"},{status:400});if(!x6(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 hk(J){let z=J.searchParams.get("vendor")??"claude",Z=J.searchParams.get("sessionId");if(!x6(z))return Response.json({error:"invalid vendor"},{status:400});if(!wk(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 u6(J,z){if(z.pathname!==T6&&z.pathname!==Ek)return null;if(J.method!=="GET")return Response.json({error:"method not allowed"},{status:405});return z.pathname===T6?Pk(z):hk(z)}var T6="/api/history/sessions",Ek="/api/history/messages";var E6=C(()=>{HZ()});import{mkdir as vk,readFile as mk,writeFile as ck}from"fs/promises";import{join as w6}from"path";function P6(){return w6(UJ(),"notes")}function h6(J){return typeof J==="string"&&J.length>0&&/^[A-Za-z0-9_-]+$/.test(J)}function v6(J){return w6(P6(),`${J}.md`)}async function nk(J){let z=J.searchParams.get("taskId");if(!h6(z))return Response.json({error:"invalid taskId"},{status:400});try{let Z="";try{Z=await mk(v6(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 ik(J){let z;try{z=await J.json()}catch{return Response.json({error:"invalid JSON body"},{status:400})}if(!h6(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 vk(P6(),{recursive:!0}),await ck(v6(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 m6(J,z){if(z.pathname!==dk)return null;if(J.method==="GET")return nk(z);if(J.method==="PUT")return ik(J);return Response.json({error:"method not allowed"},{status:405})}var dk="/api/notes";var c6=C(()=>{p1()});function _f(J,z,Z=[]){if(z===void 0)return null;if(typeof z!=="string")return _f(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 _f(J,Y,[...Z,z])}function af(J){return Math.max(0,Math.min(255,Math.round(J)))}function jQ(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`#${(af(G(Y,16)+(G(X,16)-G(Y,16))*Z)<<16|af(G(Y,8)+(G(X,8)-G(Y,8))*Z)<<8|af(G(Y,0)+(G(X,0)-G(Y,0))*Z)).toString(16).padStart(6,"0")}`}function $k(J){let z=(H)=>_f(J,J.theme[H]),Z=z("background"),Y=z("text");if(!Z||!Y)return null;let X=z("textMuted")??jQ(Y,Z,0.35),G=z("primary")??Y,q=z("border")??jQ(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")??jQ(q,Y,0.3),fg:Y,muted:X,subtle:jQ(X,Z,0.35),primary:G,"primary-hover":jQ(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 d6(J,z){if(z.pathname!==_k)return null;if(J.method!=="GET")return Response.json({error:"method not allowed"},{status:405});return Response.json({themes:ak})}var lk,ak,_k="/api/themes";var n6=C(()=>{XH();GH();QH();qH();HH();jH();BH();lk={claude:LX,conductor:FX,dracula:MX,nord:OX,opencode:AX,"osaka-jade":RX,tokyonight:gX};ak=Object.fromEntries(Object.entries(lk).map(([J,z])=>[J,$k(z)]).filter((J)=>J[1]!==null))});import{createHash as pk,randomUUID as rk}from"crypto";import{mkdir as ok}from"fs/promises";import{join as pf,resolve as sk}from"path";function JI(J){return pk("sha1").update(J).digest("hex").slice(0,16)}async function YI(J){let z=Number.parseInt(J.headers.get("content-length")??"",10);if(Number.isFinite(z)&&z>i6)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>i6)return Response.json({error:"asset too large"},{status:413});let G=tk[X.type];if(!G)return Response.json({error:`unsupported content-type: ${X.type||"unknown"}`},{status:415});try{let q=JI(Y),H=pf(GB(),q);await ok(H,{recursive:!0});let B=`${rk()}.${G}`;return await Bun.write(pf(H,B),X),Response.json({url:`${_H}/${q}/${B}`})}catch(q){return Response.json({error:q instanceof Error?q.message:String(q)},{status:500})}}async function XI(J){let z=J.slice(_H.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(!zI.test(Y)||!ZI.test(X))return Response.json({error:"invalid asset path"},{status:400});let G=GB(),q=sk(G,Y,X);if(q!==pf(G,Y,X)||!q.startsWith(`${G}/`))return Response.json({error:"invalid asset path"},{status:400});let H=X.slice(X.lastIndexOf(".")+1).toLowerCase(),j=ek[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 l6(J,z){if(z.pathname===_H){if(J.method==="POST")return YI(J);return Response.json({error:"method not allowed"},{status:405})}if(z.pathname.startsWith(`${_H}/`)){if(J.method==="GET")return XI(z.pathname);return Response.json({error:"method not allowed"},{status:405})}return null}var _H="/api/issue-assets",i6=10485760,tk,ek,zI,ZI;var $6=C(()=>{p1();tk={"image/png":"png","image/jpeg":"jpg","image/gif":"gif","image/webp":"webp"},ek={png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",webp:"image/webp"};zI=/^[a-f0-9]{16}$/,ZI=/^[A-Za-z0-9_-]+\.[a-z0-9]+$/});function a6(J,z=500){return Response.json({error:J instanceof Error?J.message:String(J)},{status:z})}function _6(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 GI(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 a6(Y,_6(Y))}}async function QI(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 a6(X,_6(X))}}async function p6(J,z,Z){if(z.pathname!=="/api/issues")return null;if(J.method==="GET")return GI(Z,z);if(J.method==="POST")return QI(Z,J);return Response.json({error:"method not allowed"},{status:405})}function r6(J){return qI.has(String(J??"").trim().toLowerCase())}function o6(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 HI(J){let z=o6(J);return z!==null&&r6(z)}function s6(J,z={}){if(!J)return!0;if(HI(J))return!0;let Z=z.allowedHost?.trim();if(!Z)return!1;let Y=o6(J);return Y!==null&&Y===Z}function t6(J){let z=String(J??"").trim();return z&&!r6(z)?z:void 0}var qI;var e6=C(()=>{qI=new Set(["localhost","127.0.0.1","::1","[::1]"])});var jI,J4;var z4=C(()=>{jI=["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"],J4=new Set(jI)});var rH={};j1(rH,{resolveRepoInit:()=>X4,resolveEngineLaunchInit:()=>EX});import{existsSync as Y4,readFileSync as BI}from"fs";import{join as pH}from"path";function WI(J){return Y4(pH(J,Z4))?`sh ${Z4}`:void 0}function VI(J){let z=pH(J,fI);if(!Y4(z))return;try{let Z=BI(z,"utf8");return Z.trim().length>0?Z:void 0}catch{return}}function X4(J,z){let Z=J?FB(J):{},Y=WI(z)??Z.initScript,X=VI(z)??Z.initPrompt;return{initScript:Y&&Y.trim().length>0?Y:void 0,initPrompt:X&&X.trim().length>0?X:void 0}}function UI(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 EX(J,z,Z={kind:"repo-init"}){let Y=X4(J,z);return{initScript:Y.initScript,firstMessage:UI(Z,Y)}}var Z4,fI;var wX=C(()=>{S1();Z4=pH(".kobe","init.sh"),fI=pH(".kobe","init-prompt.md")});async function KI(J,z){let{task:Z}=await J.request("task.get",{taskId:z});return Z}async function rf(J,z){let Z=await KI(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 G4(J,z){let{task:Z,worktreePath:Y}=await rf(J,z),X=y1(z);if(!await F1(X)){let G=EX(Z.repo??"",Y,{kind:"repo-init"});if(!await zQ({name:X,cwd:Y,command:PJ(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 DI(J){return aY(J,{bareSafe:!0})}async function Q4(J,z){let{task:Z,worktreePath:Y}=await rf(J,z),X=Z.kind==="main"?void 0:z,G=Z.kind==="main"?z:void 0,q=[...rq(pq(PJ(Z.vendor,Z.modelEffort),Z.vendor,X),Z.vendor,G)],H=EX(Z.repo??"",Y,{kind:"none"}),j=DI(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 q4(J,z){let{worktreePath:Z}=await rf(J,z),Y=process.env.SHELL?.trim()||"/bin/zsh";return{cwd:Z,command:[Y,"-il"]}}async function H4(J){let z=y1(J);await $z(z).catch(()=>{}),await cJ(z).catch(()=>{})}var j4=C(()=>{Gz();pQ();wX();w1();HJ()});import{existsSync as LI}from"fs";import{join as B4,normalize as V4}from"path";function FI(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 MI(J,z,Z){try{let{name:Y,payload:X}=await J.json();if(!Y)return Response.json({error:"missing rpc name"},{status:400});if(!J4.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 OI(){try{let z=(await QZ()).map((Z)=>({id:Z,label:OY(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 AI(){return Response.json({api:AY()})}function RI(){return Response.json({projects:TJ()})}function pZ(J,z=""){return typeof J==="string"?J:z}function gI(J,z){return typeof J==="boolean"?J:z}function F4(J){let z=J.customEngineIds;if(!Array.isArray(z))return[];return z.filter((Z)=>typeof Z==="string"&&L4.test(Z)&&!KJ(Z))}function NI(J){return J.split(/[-_]+/).filter(Boolean).map((z)=>`${z.slice(0,1).toUpperCase()}${z.slice(1)}`).join(" ")}function CI(J,z){return pZ(J[Nz(z)]).trim()||OY(z)}function bI(J,z){return pZ(J[gz(z)]).trim()||PG(z).join(" ")}function M4(){let J=OJ(),z=F4(J),Z=[...YY,...z],Y=pZ(J.lastSelectedVendor,"claude"),X=pZ(J.focusAccent,"primary");return Response.json({activeTheme:pZ(J.activeTheme,"claude"),transparentBackground:gI(J.transparentBackground,!1),focusAccent:D4.includes(X)?X:"primary",notificationsToast:J["notifications.toast.enabled"]!==!1,notificationsSound:J["notifications.sound.enabled"]!==!1,settingsSurface:EY(J[KZ]??uY),editorKind:xX(J[UZ]??dH),editorCustomCommand:pZ(J[aZ]),remoteProjects:J["experimental.remoteProjects"]===!0,archivedHistoryPreview:J["experimental.archivedHistoryPreview"]===!0,autoStatus:J[FY]===!0,dispatcher:J[MY]===!0,defaultEngine:Y,engines:Z.map((G)=>({id:G,label:CI(J,G),command:bI(J,G),isBuiltin:KJ(G),isCustom:!KJ(G),isDefault:G===Y}))})}function BQ(J,z,Z){if(typeof Z==="string")J[z]=Z.trim()}function PY(J,z,Z){if(typeof Z==="boolean")J[z]=Z}async function kI(J){try{let z=await J.json(),Z={};if(BQ(Z,"activeTheme",z.activeTheme),PY(Z,"transparentBackground",z.transparentBackground),D4.includes(z.focusAccent))Z.focusAccent=z.focusAccent;if(PY(Z,"notifications.toast.enabled",z.notificationsToast),PY(Z,"notifications.sound.enabled",z.notificationsSound),z.settingsSurface==="chattab"||z.settingsSurface==="taskpanel")Z[KZ]=z.settingsSurface;if(xY.includes(z.editorKind))Z[UZ]=z.editorKind;BQ(Z,aZ,z.editorCustomCommand),PY(Z,"experimental.remoteProjects",z.remoteProjects),PY(Z,"experimental.archivedHistoryPreview",z.archivedHistoryPreview),PY(Z,FY,z.autoStatus),PY(Z,MY,z.dispatcher),BQ(Z,"lastSelectedVendor",z.defaultEngine);let Y=OJ(),X=F4(Y),G=new Set([...YY,...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;BQ(Z,gz(j.id),j.command),BQ(Z,Nz(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(!L4.test(j)||KJ(j)||G.has(j))return Response.json({error:"invalid or duplicate engine id"},{status:400});Z.customEngineIds=[...X,j],Z[gz(j)]=pZ(H.command).trim();let B=pZ(H.label).trim();Z[Nz(j)]=B&&B!==j?B:NI(j)}if(typeof z.removeEngine==="string"){let H=z.removeEngine;if(!KJ(H)){if(Z.customEngineIds=X.filter((j)=>j!==H),Z[gz(H)]=void 0,Z[Nz(H)]=void 0,Y.lastSelectedVendor===H)Z.lastSelectedVendor="claude"}}if(Object.keys(Z).length>0)IZ(Z);return M4()}catch(z){return Response.json({error:z instanceof Error?z.message:String(z)},{status:400})}}async function II(J,z){try{let{taskId:Z}=await J.json();if(!Z)return Response.json({error:"missing taskId"},{status:400});return Response.json(await G4(z,Z))}catch(Z){return Response.json({error:Z instanceof Error?Z.message:String(Z)},{status:500})}}async function f4(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 O4(){return Response.json({review:x1(oH.review)??null,pr:x1(oH.pr)??null})}async function SI(J){try{let z=await J.json();if(typeof z.review==="string")QJ(oH.review,z.review);if(typeof z.pr==="string")QJ(oH.pr,z.pr);return O4()}catch(z){return Response.json({error:z instanceof Error?z.message:String(z)},{status:400})}}async function yI(J,z){let Y=V4(B4(z,J==="/"?"/index.html":J));if(!Y.startsWith(z))return new Response("forbidden",{status:403});let X=Bun.file(LI(Y)?Y:B4(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 TI(J){let{link:z,sseSends:Z,staticDir:Y}=J,X=J.tearDownSession??((G)=>void H4(G));return async function(q){let H=new URL(q.url);if(H.pathname===K4)return new Response(U4);if(!s6(q.headers.get("origin"),{allowedHost:J.allowedHost}))return new Response("forbidden: cross-origin request rejected",{status:403});if(H.pathname==="/events")return FI((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 MI(q,z,X);if(H.pathname==="/api/session"&&q.method==="POST")return II(q,z);if(H.pathname==="/api/engine-spec"&&q.method==="GET")return f4(H,z,Q4);if(H.pathname==="/api/terminal-spec"&&q.method==="GET")return f4(H,z,q4);if(H.pathname==="/api/engines"&&q.method==="GET")return OI();if(H.pathname==="/api/cli-invocation"&&q.method==="GET")return AI();if(H.pathname==="/api/projects"&&q.method==="GET")return RI();if(H.pathname==="/api/settings"&&q.method==="GET")return M4();if(H.pathname==="/api/settings"&&q.method==="PATCH")return kI(q);if(H.pathname==="/api/quick-prompts"&&q.method==="GET")return O4();if(H.pathname==="/api/quick-prompts"&&q.method==="PUT")return SI(q);let j=await m6(q,H);if(j)return j;let B=await S6(q,H);if(B)return B;let V=await u6(q,H);if(V)return V;let f=await p6(q,H,z);if(f)return f;let U=await l6(q,H);if(U)return U;let L=d6(q,H);if(L)return L;if(Y)return yI(H.pathname,Y);return new Response("not found",{status:404})}}function hY(J,z){let Z=J.snapshot().find((Y)=>Y.channel===z);return Z?Z.payload:null}function of(J){return J.length>1?J.replace(/\/+$/,""):J}function xI(J,z){let Z=of(z),Y=new Set([z]);for(let X of J){let G=of(X.repo),q=of(X.worktreePath);if(G===Z||q===Z){if(X.repo)Y.add(X.repo);if(X.worktreePath)Y.add(X.worktreePath)}}return[...Y]}function A4(J){let z=XQ();return{async request(Z,Y){return await YQ(z,Z,Y,J.ctx(0))},snapshot(){let Z=J.orch.listTasks().map(Kz),Y={},X=hY(J.bus,"issue.snapshot");if(X)for(let H of xI(Z,X.repoRoot))Y[H]={...X,repoRoot:H};let G=hY(J.bus,"task.jobs"),q=G?.phase==="running"?{[G.taskId]:G}:{};return{tasks:Z,activeTaskId:hY(J.bus,"active-task")?.taskId??null,engineStates:J.activity.snapshotByTask(),update:hY(J.bus,"update")?.info??null,jobs:q,worktreeChanges:hY(J.bus,"worktree.changes")?.changes??{},issueSnapshots:Y,deliver:hY(J.bus,"session.deliver"),uiPrefs:hY(J.bus,"ui-prefs"),connected:!0}}}}async function W4(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 uI(J,z=K4){let Z;try{Z=(await(await fetch(`http://localhost:${J}${z}`,{signal:AbortSignal.timeout(800)})).text()).trim()}catch{return}if(Z!==U4)throw Error(`port ${J} is in use by a non-kobe service; refusing to replace it`);let Y=await W4(J);for(let G of Y)try{process.kill(G,"SIGTERM")}catch{}let X=Date.now()+2000;while(Date.now()<X){if((await W4(J)).length===0)return;await new Promise((G)=>setTimeout(G,100))}}async function R4(J){if(J.takeover!==!1)await uI(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=t6(Y),G=TI({link:J.link,sseSends:z,staticDir:J.staticDir?V4(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 U4="kobe-web",K4="/__kobe_web",D4,L4,oH;var g4=C(()=>{HY();Gz();HZ();wG();_q();S1();Pz();nH();t1();y6();E6();c6();n6();yH();GY();$6();e6();z4();j4();D4=["primary","success","info"],L4=/^[a-z][a-z0-9_-]{0,47}$/;oH={review:"boardPrompt.review",pr:"boardPrompt.pr"}});var N4={};j1(N4,{sameWorktreeChanges:()=>pz,readWorktreeChanges:()=>wI,pickPushedChanges:()=>tH,parsePorcelain:()=>PX});import{spawnSync as EI}from"child_process";function pz(J,z){return J.added===z.added&&J.deleted===z.deleted}function tH(J,z){if(!J)return null;return J.get(z)??sH}function wI(J){if(!J)return sH;try{let z=EI("git",["status","--porcelain=v1"],{cwd:J,encoding:"utf8",stdio:["ignore","pipe","pipe"],env:rJ()});if(z.status!==0||!z.stdout)return sH;return PX(z.stdout)}catch{return sH}}function PX(J){let z=0,Z=0;for(let{x:Y,y:X}of iH(J))if(Y==="D"||X==="D")Z+=1;else z+=1;return{added:z,deleted:Z}}var sH;var hX=C(()=>{_Z();lH();sH={added:0,deleted:0}});async function mI(J,z){let Z=await jZ("git",["status","--porcelain=v1"],{cwd:J,env:rJ(),signal:z});if(Z.status!==0)throw Error("git status failed");return PX(Z.stdout)}function cI(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 C4{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=cI(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){E1("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:PI,slowRetryMs:hI,minIntervalMs:vI},Y=this.options.run??mI;qX(z,Z,(X)=>Y(J,X),(X)=>{if(this.stopped)return;if(this.entries.get(J)!==z)return;if(z.value&&pz(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 b4(J,z,Z=sf,Y){if(Z<=0)return()=>{};let X=new C4(J,z,{hasSubscribers:Y});X.tick();let G=setInterval(()=>X.tick(),Z);return G.unref?.(),()=>{clearInterval(G),X.stop()}}var sf=2000,PI=4000,hI=60000,vI=1500;var k4=C(()=>{_Z();HX();S1();hX()});import{mkdir as I4,readFile as dI,unlink as tf,writeFile as nI}from"fs/promises";import{createServer as iI}from"net";import{dirname as S4}from"path";import{StringDecoder as lI}from"string_decoder";function aI(){let J=process.env.KOBE_DAEMON_IDLE_GRACE_MS;if(J===void 0)return y4;let z=Number(J);return Number.isFinite(z)&&z>=0?z:y4}async function x4(J,z={}){let Z=z.socketPath??hz(z.homeDir),Y=z.pidPath??XZ(z.homeDir),X=z.startedAt??new Date,G=new Set,q=new Set,H=1,j=new cf({clients:function*(){yield*G,yield*q},idleGraceMs:aI(),onIdleStop:()=>void G0().catch((w)=>E1("daemon-idle-shutdown",w))}),B=new Uf;B.onPublish((w)=>{T4(G,{type:"event",name:w.channel,payload:w.payload})});let f=new Z9(B,void 0,void 0,async(w)=>{let R=J.getTask(w);if(!R?.worktreePath)return;return ZX(R.vendor??zJ,R.worktreePath)}),U=new uH(xH(z.homeDir));await I4(S4(Z),{recursive:!0}),await I4(S4(Y),{recursive:!0}),await tf(Z).catch(()=>{});let L=iI((w)=>{let R={id:H++,connectedAt:new Date,socket:w,writer:new Vf(w),buffer:"",subscribed:!1,holdsLifetime:!1,channels:null};G.add(R);let e=new lI("utf8");w.on("data",(T)=>{R.buffer+=e.write(T),p(R)}),w.on("error",()=>{}),w.on("close",()=>{if(G.delete(R),R.subscribed)az("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(Kz)})}),A=z.checkUpdate??WG,g=z.updatePollMs??$I,E=()=>{A().then((w)=>B.publish("update",{info:w})).catch((w)=>E1("update-poller",w))},h=null;if(g>0)E(),h=setInterval(E,g),h.unref?.();let I=z.autoTitlePollMs??Wf,N=g5(J,I,()=>j.hasSubscribers()),M=M6(B,{statePath:lf(z.homeDir),debounceMs:z.uiPrefsDebounceMs??nf}),y=B6(B,{path:mf(z.homeDir),debounceMs:z.keybindingsDebounceMs??vf}),c=b4(J,B,z.worktreeChangesTickMs??sf,()=>j.hasSubscribers()),d=D6(J,B,z.transcriptActivityTickMs??df,()=>j.hasSubscribers()),i=V6(J,z.prStatusPollMs??qQ,()=>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(),i(),M(),y(),c(),d(),f.close(),T4(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 tf(Z).catch(()=>{}),await tf(Y).catch(()=>{})}};await new Promise((w,R)=>{let e=L;e.once("error",R),L.listen(Z,()=>{e.removeListener("error",R),w()})}),await nI(Y,`${process.pid}
81
- `,"utf8");async function G0(){if(j.isStopping())return;j.markStopping(),await z.onStop?.(),setTimeout(()=>{X0.close().catch((w)=>E1("daemon-shutdown",w))},0).unref()}let f0=XQ();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:G0},clientId:w}}if(z.webPort!==void 0){let w=A4({orch:J,bus:B,activity:f,ctx:_});t=await R4({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(),az("conn",`web client subscribed \u2014 ${G.size+q.size} client(s), ${j.guiCount()} gui`),()=>{q.delete(R),az("conn",`web client disconnected \u2014 ${G.size+q.size} client(s), ${j.guiCount()} gui left`),j.clientDisconnected(!0)}}}),az("web",`daemon web transport listening on http://${t.hostname}:${t.port}`)}async function M0(w,R){if(w.name==="subscribe"){let e=Mf(w.payload),T=R.subscribed;R.subscribed=!0;let a=e.role==="gui"?"gui":"pane";R.holdsLifetime=a==="gui",R.channels=dV(e.channels);let q0=!T;if(R.holdsLifetime)j.guiAttached();az("conn",`client #${R.id} subscribed as ${a}${R.channels?` [${[...R.channels].join(",")}]`:""} \u2014 ${G.size} client(s), ${j.guiCount()} gui${q0?" (collectors resume)":""}`);for(let H0 of B.snapshot()){if(R.channels&&!R.channels.has(H0.channel))continue;fQ(R,{type:"event",name:H0.channel,payload:H0.payload})}if(!R.channels||R.channels.has("engine-state"))for(let H0 of f.currentNonIdle())fQ(R,{type:"event",name:"engine-state",payload:H0});return{}}return YQ(f0,w.name,w.payload,_(R.id))}async function b(w,R){try{let e=await M0(w,R);fQ(R,{type:"response",id:w.id,name:w.name,payload:e})}catch(e){fQ(R,{type:"response",id:w.id,name:w.name,error:Ff(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 T=JSON.parse(e);if(T.type!=="request")throw Error("daemon only accepts request frames from clients");b(T,w)}catch(T){fQ(w,{type:"response",id:"parse-error",error:{message:T instanceof Error?T.message:String(T)}})}R=w.buffer.indexOf(`
83
- `)}}return X0}async function vX(J){try{let z=await dI(J,"utf8"),Z=Number(z.trim());return Number.isFinite(Z)?Z:null}catch{return null}}function u4(J){if(J.type==="event")return J.name==="daemon.stopping";return!0}function fQ(J,z){J.writer.write(VG(z),u4(z))}function T4(J,z){let Z=z.type==="event"&&z.name!=="daemon.stopping"?z.name:null,Y=u4(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??=VG(z),G.writer.write(X,Y)}}var $I=21600000,y4=3000;var eH=C(()=>{kq();Xz();kJ();QU();N5();yH();bf();f6();W6();rY();U6();GY();L6();O6();g4();k4();yH();bf()});import{unlink as E4}from"fs/promises";function _I(J){try{return process.kill(J,0),!0}catch(z){return z.code==="EPERM"}}async function mX(J,z){let Z=await vX(z),Y=Z!==null&&Z!==process.pid?Z:null,X=Y!==null&&_I(Y),G=X?"graceful":"absent",q=new zz(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 E4(J).catch(()=>{}),await E4(z).catch(()=>{}),{pid:Z,method:G}}var Jj=C(()=>{UG();eH()});var bH={};j1(bH,{testDaemonResponds:()=>zj,ensureDaemonReachable:()=>cX,connectOrStartDaemon:()=>yz,connectIfRunning:()=>Hz});import{spawn as pI}from"child_process";import{closeSync as rI,existsSync as oI,mkdirSync as sI,openSync as tI}from"fs";import{dirname as w4,resolve as ef}from"path";import{fileURLToPath as eI}from"url";function ZS(J,z,Z,Y){let X="ignore",G;try{sI(w4(Y),{recursive:!0}),G=tI(Y,"a"),X=["ignore",G,G]}catch{X="ignore"}if(pI(J,[...z],{detached:!0,stdio:X,env:Z}).unref(),G!==void 0)try{rI(G)}catch{}}async function cX(){let J=hz();if(await zj(J))return J;await mX(J,XZ()).catch(()=>{});let[z,...Z]=YS(JS);ZS(z,Z,process.env,Xq());let Y=Date.now()+5000;while(Date.now()<Y){if(await zj(J))return J;await new Promise((X)=>setTimeout(X,100))}throw Error(`kobe: daemon did not start (or stayed wedged) at ${J}`)}async function yz(){let J=await cX(),z=new zz(J);return await z.connect(),z}async function Hz(){let J=hz();if(!await zj(J))return null;let z=new zz(J);return await z.connect(),z}async function zj(J,z=zS){let Z=new zz(J);try{await Z.connect()}catch{return Z.close(),!1}let Y=Z.request("hello",{protocolVersion:Jz}).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 YS(J){let z=eI(import.meta.url);if(z.startsWith("/$bunfs")||z.startsWith("B:\\~BUN"))return[process.execPath,...J];let Z=w4(z),Y=[ef(Z,"../cli/index.ts"),ef(Z,"../../../kobe/src/cli/index.ts"),ef(Z,"../cli/index.js")],X=Y.find((G)=>oI(G));if(X)return[process.execPath,X,...J];throw Error(`kobe: could not locate kobe entry near ${Z}; checked ${Y.join(", ")}`)}var JS,zS=3000;var IJ=C(()=>{Jj();rY();GY();UG();JS=["daemon","start"]});import{mkdir as XS,readFile as P4,unlink as v4,writeFile as h4}from"fs/promises";import{dirname as GS}from"path";function QS(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 J8(J,z={}){await XS(GS(J),{recursive:!0});try{await h4(J,String(process.pid),{flag:"wx"});return}catch(X){if(X.code!=="EEXIST")throw X}let Z=-1;try{let X=(await P4(J,"utf8")).trim();if(Z=Number.parseInt(X,10),!Number.isFinite(Z))Z=-1}catch{return J8(J,z)}let Y=Z>0&&QS(Z);if(Y&&!z.forceTakeover)throw new WQ(`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 v4(J)}catch(X){if(X.code!=="ENOENT")throw X}try{await h4(J,String(process.pid),{flag:"wx"})}catch(X){if(X.code==="EEXIST"){let G=-1;try{G=Number.parseInt((await P4(J,"utf8")).trim(),10)}catch{G=-1}throw new WQ(`task index lockfile contended during takeover (winner pid ${G})`,G)}throw X}}async function m4(J){try{await v4(J)}catch(z){if(z.code==="ENOENT")return;throw z}}var WQ;var c4=C(()=>{WQ=class WQ extends Error{heldByPid;constructor(J,z){super(J);this.name="LockfileError",this.heldByPid=z}}});function qS(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 i4(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 HS(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 jS(J){let z="";for(let Z of J)z+="0123456789ABCDEFGHJKMNPQRSTVWXYZ"[Z]??"0";return z}function l4(J=Date.now()){let z;if(J===d4){let Z=n4.slice();if(!HS(Z))z=i4(16);else z=Z}else z=i4(16);return d4=J,n4=z,qS(J,10)+jS(z)}var d4=-1,n4;var $4=C(()=>{n4=Array(16).fill(0)});var z8={};j1(z8,{TaskIndexStore:()=>dX});import{mkdir as BS,open as fS,readFile as a4,rename as WS,unlink as _4}from"fs/promises";import{homedir as VS}from"os";import{dirname as US,join as p4}from"path";async function FS(J){let z=Date.now()+LS;for(;;)try{await J8(J);return}catch(Z){if(!(Z instanceof WQ)||Date.now()>=z)throw Z;await KS(DS)}}class dX{homeDir;kobeDir;path;tmpPath;lockPath;cache={version:DZ,tasks:[]};loaded=!1;listeners=new Set;saveChain=Promise.resolve();dirtyIds=new Set;removedIds=new Set;constructor(J={}){this.homeDir=J.homeDir??VS(),this.kobeDir=p4(this.homeDir,".kobe"),this.path=p4(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 a4(this.path,"utf8")}catch(Z){if(Z.code==="ENOENT")return this.cache={version:DZ,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:DZ,tasks:[]},this.loaded=!0,this.notifyListeners(),this.snapshot()}return this.cache=r4(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(US(this.path),{recursive:!0});let J=new Set(this.dirtyIds),z=new Set(this.removedIds);await FS(this.lockPath);try{let Z=await this.readDiskTasks(),Y=this.mergeWithDisk(Z,J,z),G=`${JSON.stringify({version:DZ,tasks:Y},null,2)}
84
- `,q=await fS(this.tmpPath,"w",420);try{await q.writeFile(G,"utf8"),await q.sync()}finally{await q.close()}await WS(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 m4(this.lockPath)}}async readDiskTasks(){let J;try{J=await a4(this.path,"utf8")}catch(Z){if(Z.code==="ENOENT")return[];throw Z}let z;try{z=JSON.parse(J)}catch{return[]}return r4(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:CG(l4()),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 _4(this.path)}catch(J){if(J.code!=="ENOENT")throw J}try{await _4(this.tmpPath)}catch(J){if(J.code!=="ENOENT")throw J}this.cache={version:DZ,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:DZ,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 r4(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:DZ,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:DZ,tasks:[]};let X=Array.isArray(Z.tasks)?Z.tasks:[],G=[];for(let q of X){let H=MS(q);if(H)G.push(H);else console.warn(`[kobe] dropping malformed task entry from ${z}: ${JSON.stringify(q)}`)}return{version:DZ,tasks:G}}function MS(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(!NS(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:CG(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:kZ(typeof z.vendor==="string"?z.vendor:void 0),prStatus:OS(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 OS(J){if(!J||typeof J!=="object"||Array.isArray(J))return;let z=J;if(!AS(z.provider)||!RS(z.lifecycle)||!gS(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 AS(J){return J==="github"||J==="gitlab"||J==="bitbucket"||J==="unknown"}function RS(J){return J==="creating"||J==="open"||J==="ready_to_merge"||J==="merged"||J==="closed"||J==="unknown"}function gS(J){return J==="none"||J==="pending"||J==="passing"||J==="failing"||J==="unknown"}function NS(J){return J==="backlog"||J==="in_progress"||J==="in_review"||J==="done"||J==="canceled"||J==="error"}var KS=(J)=>new Promise((z)=>setTimeout(z,J)),DS=25,LS=5000,DZ=3;var VQ=C(()=>{Xz();t1();c4();$4()});var Zj;var o4=C(()=>{Zj=class Zj 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 e4={};j1(e4,{GitWorktreeManager:()=>Yj});import t4 from"fs";import Tz from"path";class Yj{execDeps;constructor(J=CS){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 Zj(z,Z.cwd,X);return X}async create(J,z,Z,Y){let X=this.ctxFor(J);if(rZ("repo",X.dir),rZ("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(Tz.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?aU(z,J.slug):nU(J.repo,J.slug);return this.create(J.repo,J.branch,Z,J.baseRef)}async remove(J,z){rZ("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);rZ("repo",z.dir);let Z=await this.runGit(z.exec,["worktree","list","--porcelain"],{cwd:z.dir}),Y=Z8(Z.stdout),X=[];for(let G of Y){if(!G.path)continue;let q=z.remote?s4(z.dir,G.path):g9(J,G.path);if(!q)continue;if(!G.branch||G.detached)continue;let H=UQ(q),j=UQ(G.path),B=Tz.relative(H,j),V=Tz.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);rZ("repo",z.dir);let Z=await this.runGit(z.exec,["worktree","list","--porcelain"],{cwd:z.dir}),Y=Z8(Z.stdout),X=z.remote?z.dir:UQ(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:UQ(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?s4(z.dir,q.path)!==null:lU(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 t4.statSync(z).mtimeMs}catch{}return 0}async isDirty(J){rZ("path",J);let z=this.execDeps.execForPath(J);return(await this.runGit(z,["status","--porcelain"],{cwd:J})).stdout.length>0}async currentBranch(J){rZ("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(rZ("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=Z8(Z.stdout),X=(H)=>J.remote?H:UQ(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=Tz.isAbsolute(Y)?Y:Tz.resolve(z,Y);return Tz.basename(X)===".git"?Tz.dirname(X):X}catch(Z){if(Z instanceof Zj)return null;throw Z}}}function Z8(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 s4(J,z){let Z=`${J.replace(/\/+$/,"")}/.kobe/worktrees`;return z===Z||z.startsWith(`${Z}/`)?Z:null}function rZ(J,z){if(!z||!Tz.isAbsolute(z))throw Error(`${J} must be an absolute path, got: ${JSON.stringify(z)}`)}function UQ(J){try{return t4.realpathSync(J)}catch{return Tz.resolve(J)}}var CS;var Y8=C(()=>{Rz();S1();o4();N9();CS={execForRepo:jX,execForPath:BZ,remoteBasePath(J){return ZZ(J)?.basePath??null}}});var Xj;var JD=C(()=>{Xj=["web","completions","add","remove","adopt","export","repo","api","daemon","theme","skill","feedback","update","doctor","reset","reload","kill-sessions"]});var ZD={};j1(ZD,{runCompletionsSubcommand:()=>SS});function bS(){return`# kobe bash completions
159
+ `});var Xj;var PO=C(()=>{Xj=["web","completions","add","remove","adopt","export","repo","api","daemon","theme","skill","feedback","update","doctor","reset","reload","kill-sessions"]});var vO={};X1(vO,{runCompletionsSubcommand:()=>cw});function hw(){return`# kobe bash completions
86
160
  # Source: kobe completions bash
87
161
 
88
162
  _kobe() {
@@ -98,7 +172,7 @@ _kobe() {
98
172
  fi
99
173
  }
100
174
  complete -F _kobe kobe
101
- `}function kS(){return`#compdef kobe
175
+ `}function vw(){return`#compdef kobe
102
176
  # kobe zsh completions
103
177
  # Source: kobe completions zsh
104
178
 
@@ -110,129 +184,101 @@ _kobe() {
110
184
  }
111
185
 
112
186
  _kobe "$@"
113
- `}function IS(){return`# kobe fish completions
187
+ `}function mw(){return`# kobe fish completions
114
188
  # Source: kobe completions fish
115
189
 
116
190
  ${Xj.map((z)=>`complete -c kobe -f -a ${z}`).join(`
117
191
  `)}
118
- `}async function SS(J){let z=J[0];if(z==="--help"||z==="-h"||z==="help"){process.stdout.write(zD);return}if(!z||z!=="bash"&&z!=="zsh"&&z!=="fish")process.stderr.write(`kobe completions: unknown shell "${z}"
192
+ `}async function cw(J){let z=J[0];if(z==="--help"||z==="-h"||z==="help"){process.stdout.write(hO);return}if(!z||z!=="bash"&&z!=="zsh"&&z!=="fish")process.stderr.write(`kobe completions: unknown shell "${z}"
119
193
 
120
- ${zD}`),process.exit(2);let Z;if(z==="bash")Z=bS();else if(z==="zsh")Z=kS();else Z=IS();process.stdout.write(Z)}var zD=`Usage: kobe completions <bash|zsh|fish>
194
+ ${hO}`),process.exit(2);let Z;if(z==="bash")Z=hw();else if(z==="zsh")Z=vw();else Z=mw();process.stdout.write(Z)}var hO=`Usage: kobe completions <bash|zsh|fish>
121
195
 
122
196
  Generate a shell completion script for kobe and print it to stdout.
123
197
  Redirect the output to the appropriate file for your shell.
124
- `;var YD=C(()=>{JD()});var qD={};j1(qD,{runExportSubcommand:()=>hS,renderExport:()=>QD,displayWidth:()=>Gj});function yS(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 X8(J){process.stderr.write(`kobe export: ${J}
125
-
126
- ${GD}
127
- `),process.exit(2)}function TS(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)X8("--format requires a value (json, csv, or table)");z=XD(X)}else if(Y.startsWith("--format="))z=XD(Y.slice(9));else X8(`unexpected argument "${Y}"`)}return z}function XD(J){if(J==="json"||J==="csv"||J==="table")return J;X8(`unknown format "${J}" (expected json, csv, or table)`)}function xS(J){if(/[",\r\n]/.test(J))return`"${J.replace(/"/g,'""')}"`;return J}function uS(J){let z=[KQ.join(",")];for(let Z of J)z.push(KQ.map((Y)=>xS(Z[Y])).join(","));return z.join(`
128
- `)}function Gj(J){let z=0;for(let Z of J)z+=ES(Z.codePointAt(0));return z}function ES(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 wS(J,z){return J+" ".repeat(Math.max(0,z-Gj(J)))}function PS(J){let z={};for(let X of KQ)z[X]=Math.max(Gj(X),...J.map((G)=>Gj(G[X])));let Z=(X)=>KQ.map((G)=>wS(X[G],z[G])).join(" ").trimEnd(),Y={};for(let X of KQ)Y[X]=X;return[Z(Y),...J.map(Z)].join(`
129
- `)}function QD(J,z){let Z=J.map(yS);if(z==="json")return JSON.stringify(Z,null,2);if(z==="csv")return uS(Z);return PS(Z)}async function hS(J){if(J.includes("--help")||J.includes("-h")||J.includes("help")){process.stdout.write(`${GD}
130
- `);return}let z=TS(J),{TaskIndexStore:Z}=await Promise.resolve().then(() => (VQ(),z8)),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(`${QD(X,z)}
132
- `)}var GD,KQ;var HD=C(()=>{Xz();GD=["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
- `),KQ=["id","title","status","archived","vendor","branch","repo","worktreePath"]});var fD={};j1(fD,{runRepoSubcommand:()=>dS});import{readFileSync as vS}from"fs";import{resolve as Qj}from"path";function oZ(J){process.stderr.write(`kobe repo: ${J}
134
-
135
- ${BD}
136
- `),process.exit(2)}function jD(J){try{return vS(Qj(process.cwd(),yJ(J)),"utf8")}catch(z){oZ(`cannot read ${J}: ${z instanceof Error?z.message:String(z)}`)}}function mS(J){let z={};for(let Z=0;Z<J.length;Z++){let Y=J[Z],X=()=>{let G=J[++Z];if(G===void 0)oZ(`${Y} requires a value`);return G};if(Y==="--init-script")z.initScript=X();else if(Y==="--init-script-file")z.initScript=jD(X());else if(Y==="--init-prompt")z.initPrompt=X();else if(Y==="--init-prompt-file")z.initPrompt=jD(X());else if(Y.startsWith("-"))oZ(`unknown flag "${Y}"`);else if(z.path===void 0)z.path=Y;else oZ(`unexpected argument "${Y}"`)}return z}function cS(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("-"))oZ(`unknown flag "${X}"`);else if(z===void 0)z=X;else oZ(`unexpected argument "${X}"`);if(!Z&&!Y)Z=!0,Y=!0;return{path:z,clearScript:Z,clearPrompt:Y}}async function dS(J){let[z,...Z]=J;if(z===void 0||z==="--help"||z==="-h"||z==="help"){process.stdout.write(`${BD}
137
- `);return}let{getRepoInitOverride:Y,setRepoInitOverride:X,resolveRepoRoot:G}=await Promise.resolve().then(() => (S1(),YZ)),{existsSync:q}=await import("fs"),{join:H}=await import("path");if(z==="show"){let[j]=Z.filter((L)=>!L.startsWith("-")),B=G(Qj(process.cwd(),yJ(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?nX(V.initScript):"(unset)"}`),console.log(` override initPrompt: ${V.initPrompt?nX(V.initPrompt):"(unset)"}`);return}if(z==="set"){let j=mS(Z);if(j.initScript===void 0&&j.initPrompt===void 0)oZ("set needs at least one of --init-script(-file) / --init-prompt(-file)");let B=G(Qj(process.cwd(),yJ(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?nX(V.initScript):"(unset)"}`),console.log(` initPrompt: ${V.initPrompt?nX(V.initPrompt):"(unset)"}`);return}if(z==="unset"){let{path:j,clearScript:B,clearPrompt:V}=cS(Z),f=G(Qj(process.cwd(),yJ(j??"."))),U=X(f,{...B?{initScript:""}:{},...V?{initPrompt:""}:{}});console.log(`cleared override for ${f}`),console.log(` initScript: ${U.initScript?nX(U.initScript):"(unset)"}`),console.log(` initPrompt: ${U.initPrompt?nX(U.initPrompt):"(unset)"}`);return}oZ(`unknown verb "${z}"`)}function nX(J){let z=J.replace(/\s+/g," ").trim();return z.length>60?`"${z.slice(0,57)}\u2026"`:`"${z}"`}var BD;var WD=C(()=>{fG();BD=["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 nS}from"child_process";function $S(J){let[z,Z]=J.split("/");if(!z||!Z)throw Error(`invalid GitHub repository slug: ${J}`);return{owner:z,name:Z}}function VD(J,z){let Z=J.trim();if(!Z)throw Error(`${z} is required`);return Z}function UD(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 KD(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: ${UD(q,void 0)}`)}if((X.status??0)!==0||H.errors?.length)throw Error(UD(q,H.errors));if(!H.data)throw Error("GitHub CLI response did not include data");return H.data}function aS(J){return`${J}
139
-
140
- ---
141
- Submitted from kobe ${e0}.`}function iX(J,z={}){let Z=VD(J.title,"feedback title"),Y=aS(VD(J.body,"feedback body")),X=(z.repoSlug??XY)();if(!X)throw Error("package repository is not a GitHub repository");let{owner:G,name:q}=$S(X),H=J.categorySlug?.trim()||G8,j={spawn:z.spawn??nS},V=KD(iS,{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=KD(lS,{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 G8="feedback",iS=`
142
- query($owner: String!, $name: String!) {
143
- repository(owner: $owner, name: $name) {
144
- id
145
- discussionCategories(first: 50) {
146
- nodes {
147
- id
148
- name
149
- slug
150
- }
151
- }
152
- }
153
- }
154
- `,lS=`
155
- mutation($repositoryId: ID!, $categoryId: ID!, $title: String!, $body: String!) {
156
- createDiscussion(input: {
157
- repositoryId: $repositoryId,
158
- categoryId: $categoryId,
159
- title: $title,
160
- body: $body
161
- }) {
162
- discussion {
163
- number
164
- url
165
- }
166
- }
167
- }
168
- `;var qj=C(()=>{kJ()});async function DD(J={}){let z=J.mode==="require-running"?await Hz():await yz();if(!z)return null;return{client:z,close:()=>z.close()}}var LD=C(()=>{IJ()});var ID={};j1(ID,{verbSchema:()=>B8,verbHelp:()=>CD,validateAgainstSpec:()=>H8,schemaIndex:()=>gD,runApiSubcommand:()=>Ly,parseFlags:()=>q8,parseAgentsSpec:()=>AD,invokeVerb:()=>Dy,fullSchema:()=>ND,findVerb:()=>DQ,deliverPrompt:()=>bD,defaultApiRuntime:()=>f8,apiUsage:()=>Hj,VerbArgs:()=>j8,VERB_GROUPS:()=>$X,VERBS:()=>aX,FANOUT_CAP:()=>lX,ApiError:()=>I1,API_VERBS:()=>rS,API_SCHEMA_VERSION:()=>Q8});import{resolve as FD}from"path";function OD(J){for(let[z,Z]of Object.entries($X))if(Z.includes(J))return z;return"other"}async function pS(J){let z=J.args.str("verb");if(z){let Y=DQ(z);if(!Y)throw new I1(`unknown verb: ${z}`,"BAD_VERB");return B8(Y)}let Z=J.args.str("group");if(Z)return sS(Z);if(J.args.bool("all"))return ND();return gD()}function DQ(J){let z=jj[J]??J;return aX.find((Z)=>Z.name===z)}function q8(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 H8(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 j8{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:FD(process.cwd(),yJ(z))}requirePath(J){return FD(process.cwd(),yJ(this.require(J)))}}function AD(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(!s1.includes(G))throw new I1(`--agents vendor "${G}" must be one of ${s1.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>lX)throw new I1(`--agents requests ${z.length+q} agents, exceeds the cap of ${lX}`,"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 oS(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 B8(J){return{name:J.name,group:OD(J.name),summary:J.summary,offline:J.offline??!1,flags:J.flags.map(oS)}}function gD(){return{apiVersion:Q8,kobeVersion:e0,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:$X,verbs:aX.map((J)=>({name:J.name,group:OD(J.name),summary:J.summary})),globalFlags:RD,aliases:jj}}function sS(J){let z=$X[J];if(!z)throw new I1(`unknown group: ${J}. Groups: ${Object.keys($X).join(", ")}`,"BAD_FLAG");return{group:J,verbs:z.map((Z)=>{let Y=DQ(Z);return{name:Z,summary:Y?.summary??""}})}}function ND(){return{apiVersion:Q8,kobeVersion:e0,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:RD,aliases:jj,groups:$X,verbs:aX.map(B8)}}function tS(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 CD(J){let z=[`kobe api ${J.name} ${tS(J)}`.trimEnd(),"",J.summary,""],Z=Object.entries(jj).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 Hj(){return["usage: kobe api <verb> [flags] [--pretty] [--help]","","Explore the full surface (names, flags, types) with: kobe api schema","","verbs:",...aX.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 eS(J,z){let Z=z?JSON.stringify(J,null,2):JSON.stringify(J);process.stdout.write(`${Z}
171
- `)}function LZ(J,z,Z=1){process.stderr.write(`${JSON.stringify({error:{message:J,code:z}})}
172
- `),process.exit(Z)}async function bD(J,z,Z,Y=Jy){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 zy(J){let z=null,Z=J.onChannel("active-task",(Y)=>{z=Y.taskId});try{await J.subscribe()}finally{Z()}return z}function oJ(J){if(!J.client)throw new I1("daemon required","BAD_DAEMON");return J.client}async function xz(J,z,Z){return oJ(J).request(z,Z)}async function Zy(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 xz(J,"issue.mutate",{repoRoot:J.args.requirePath("repo"),op:{type:"update",id:J.args.int("id"),title:z,body:Z}})}async function Yy(J){let z=oJ(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 Xy(J){let z=oJ(J),Z=J.args.require("prompt"),Y=J.args.str("task-id");if(!Y){let q=await zy(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 Gy(J){let z=oJ(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 Qy(J){let z=oJ(J),Z=J.args.require("task-id"),Y=J.args.require("text");return await z.request("note.file",{taskId:Z,text:Y})}async function qy(J){let z=oJ(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 Hy(J){return oJ(J).request("task.list")}async function jy(J){let z=oJ(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 By(J){let z=oJ(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 fy(J){let z=oJ(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 Wy(J){let z=oJ(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 Vy(J){let z=oJ(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?AD(j):Array(Z.int("count")??1).fill(Z.vendor()??B??"claude");if(V.length>lX)throw new I1(`fan-out of ${V.length} exceeds the cap of ${lX} \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 Uy(J){let z=oJ(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 Ky(J){return{ok:!0,discussion:iX({title:J.args.require("title"),body:J.args.require("body"),categorySlug:J.args.str("category")})}}function kD(J,z,Z,Y){return{args:new j8(J,z),client:Z,runtime:Y}}async function Dy(J,z,Z){let Y=DQ(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=q8(z,X);return H8(Y,G.flags),Y.handler(kD(Y,G.flags,Z.client,Z.runtime??f8))}async function Ly(J){let[z,...Z]=J;if(!z||z==="--help"||z==="-h"||z==="help"){if(!z)LZ(Hj(),"MISSING_VERB",2);process.stdout.write(`${Hj()}
173
- `);return}let Y=DQ(z);if(!Y)LZ(`unknown verb: ${z}
174
- ${Hj()}`,"BAD_VERB",2);let X=new Set(Y.flags.filter((H)=>H.type==="bool").map((H)=>H.name)),G;try{G=q8(Z,X)}catch(H){if(H instanceof I1)LZ(H.message,H.code,2);LZ(H instanceof Error?H.message:String(H),"BAD_FLAG",2)}if(G.help){process.stdout.write(`${CD(Y)}
175
- `);return}try{H8(Y,G.flags)}catch(H){if(H instanceof I1)LZ(H.message,H.code,2);LZ(H instanceof Error?H.message:String(H),"BAD_FLAG",2)}let q=null;if(!Y.offline)try{q=await DD()}catch(H){LZ(`could not reach or start the kobe daemon: ${H instanceof Error?H.message:String(H)}`,"BAD_DAEMON",2)}try{let H=await Y.handler(kD(Y,G.flags,q?.client??null,f8));eS(H,G.pretty)}catch(H){if(H instanceof I1)LZ(H.message,H.code,1);LZ(H instanceof Error?H.message:String(H),"RPC_ERROR",1)}finally{q?.close()}}var Q8=2,lX=10,MD,_S,I1,A1,jj,$X,aX,rS,RD,Jy,f8;var SD=C(()=>{Gz();qj();fG();w1();YH();t1();kJ();LD();MD=["backlog","in_progress","in_review","done","canceled","error"],_S=["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:s1,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})},jj={"spawn-task":"add"},$X={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"]};aX=[{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:pS},{name:"list",summary:"List all tasks (incl. archived). Returns { tasks }.",flags:[],handler:Hy},{name:"get-task",summary:"Read one task's metadata. `.running` = its tmux session is live.",flags:[A1.taskId()],handler:qy},{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:MD,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:Yy},{name:"fan-out",summary:`Spawn N tasks of ONE prompt in a single call (parallel attempts). Capped at ${lX}.`,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:Vy},{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:Xy},{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:Gy},{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:Qy},{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:G8,placeholder:"SLUG",description:"Discussion category slug."}],offline:!0,handler:Ky},{name:"issue-list",summary:"List daemon-owned issues for a repo.",flags:[A1.repo()],handler:(J)=>xz(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)=>xz(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:_S,description:"New issue status."}],handler:(J)=>xz(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:Zy},{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:Uy},{name:"rename",summary:"Set a task's title.",flags:[A1.taskId(),{name:"title",type:"string",required:!0,placeholder:"T",description:"New title."}],handler:(J)=>xz(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)=>xz(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)=>xz(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:MD,description:"New status."}],handler:(J)=>xz(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:By},{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)=>xz(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:jy},{name:"ensure-worktree",summary:"Materialize a task's git worktree on disk now (without starting an engine). Returns { worktreePath }.",flags:[A1.taskId()],handler:(J)=>xz(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:fy},{name:"discover-adoptable",summary:"List existing git worktrees in a repo not yet tracked as kobe tasks. Returns { worktrees }.",flags:[A1.repo()],handler:(J)=>xz(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:Wy}],rS=aX.map((J)=>J.name);RD=[{name:"pretty",type:"bool",description:"Pretty-print stdout JSON."},{name:"help",type:"bool",description:"Show usage for the verb and exit."}];Jy={sessionExists:F1,ensureSession:async(J)=>(await Promise.resolve().then(() => (HJ(),vJ))).ensureSession(J),waitForEnginePane:vG,pasteAndSubmit:mG,resolveEngineLaunchInit:async(J,z,Z)=>(await Promise.resolve().then(() => (wX(),rH))).resolveEngineLaunchInit(J,z,Z),engineCommand:PJ};f8={isTaskRunning:(J)=>F1(y1(J)),deliverPrompt:(J,z,Z)=>bD(J,z,Z),resolveRepoRoot:async(J)=>(await Promise.resolve().then(() => (S1(),YZ))).resolveMainRepoRoot(J),defaultVendor:async()=>{let{getPersistedString:J}=await Promise.resolve().then(() => (S1(),YZ)),z=J("lastSelectedVendor")?.trim();return z?z:void 0},readWorktreeChanges:async(J)=>(await Promise.resolve().then(() => (hX(),N4))).readWorktreeChanges(J),tearDownSession:async(J)=>{let z=y1(J);await $z(z).catch(()=>{}),await cJ(z).catch(()=>{})}}});var uD={};j1(uD,{updatePlan:()=>yD,runUpdateSubcommand:()=>My,parseUpdateArgs:()=>TD});import{spawnSync as Fy}from"child_process";function yD(){return{command:"sh",args:["-c",ez],display:ez}}function TD(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
- `),xD(process.stderr),process.exit(2)}return{help:!1,dryRun:z}}function xD(J){J.write(["Usage: kobe update [--dry-run]","","Runs kobe's GitHub-hosted update script.","","Default command:",` ${ez}`,"","Script URL:",` ${aQ}`,"","Manual fallback:",` ${jB()}`,"","Examples:"," kobe update"," kobe update --dry-run",""].join(`
178
- `))}async function My(J,z){let Z={spawn:z?.spawn??Fy,stdout:z?.stdout??process.stdout,stderr:z?.stderr??process.stderr,exit:z?.exit??((q)=>process.exit(q))},Y=TD(J);if(Y.help){xD(Z.stdout);return}let X=yD();if(Z.stdout.write(`kobe ${e0} -> latest
198
+ `;var mO=C(()=>{PO()});var iO={};X1(iO,{runExportSubcommand:()=>pw,renderExport:()=>nO,displayWidth:()=>Qj});function dw(J){return{id:J.id,title:J.title,status:J.status,archived:String(J.archived),vendor:J.vendor??YJ,branch:J.branch,repo:J.repo,worktreePath:J.worktreePath}}function _7(J){process.stderr.write(`kobe export: ${J}
199
+
200
+ ${dO}
201
+ `),process.exit(2)}function nw(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)_7("--format requires a value (json, csv, or table)");z=cO(X)}else if(Y.startsWith("--format="))z=cO(Y.slice(9));else _7(`unexpected argument "${Y}"`)}return z}function cO(J){if(J==="json"||J==="csv"||J==="table")return J;_7(`unknown format "${J}" (expected json, csv, or table)`)}function iw(J){if(/[",\r\n]/.test(J))return`"${J.replace(/"/g,'""')}"`;return J}function lw(J){let z=[$G.join(",")];for(let Z of J)z.push($G.map((Y)=>iw(Z[Y])).join(","));return z.join(`
202
+ `)}function Qj(J){let z=0;for(let Z of J)z+=$w(Z.codePointAt(0));return z}function $w(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 aw(J,z){return J+" ".repeat(Math.max(0,z-Qj(J)))}function _w(J){let z={};for(let X of $G)z[X]=Math.max(Qj(X),...J.map((Q)=>Qj(Q[X])));let Z=(X)=>$G.map((Q)=>aw(X[Q],z[Q])).join(" ").trimEnd(),Y={};for(let X of $G)Y[X]=X;return[Z(Y),...J.map(Z)].join(`
203
+ `)}function nO(J,z){let Z=J.map(dw);if(z==="json")return JSON.stringify(Z,null,2);if(z==="csv")return lw(Z);return _w(Z)}async function pw(J){if(J.includes("--help")||J.includes("-h")||J.includes("help")){process.stdout.write(`${dO}
204
+ `);return}let z=nw(J),{TaskIndexStore:Z}=await Promise.resolve().then(() => (dG(),c7)),Y=new Z;await Y.load();let X=Y.list();if(X.length===0&&z==="table"){process.stdout.write(`no tasks
205
+ `);return}process.stdout.write(`${nO(X,z)}
206
+ `)}var dO,$G;var lO=C(()=>{Uz();dO=["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(`
207
+ `),$G=["id","title","status","archived","vendor","branch","repo","worktreePath"]});var _O={};X1(_O,{runRepoSubcommand:()=>tw});import{readFileSync as rw}from"fs";import{resolve as Gj}from"path";function HY(J){process.stderr.write(`kobe repo: ${J}
208
+
209
+ ${aO}
210
+ `),process.exit(2)}function $O(J){try{return rw(Gj(process.cwd(),PJ(J)),"utf8")}catch(z){HY(`cannot read ${J}: ${z instanceof Error?z.message:String(z)}`)}}function ow(J){let z={};for(let Z=0;Z<J.length;Z++){let Y=J[Z],X=()=>{let Q=J[++Z];if(Q===void 0)HY(`${Y} requires a value`);return Q};if(Y==="--init-script")z.initScript=X();else if(Y==="--init-script-file")z.initScript=$O(X());else if(Y==="--init-prompt")z.initPrompt=X();else if(Y==="--init-prompt-file")z.initPrompt=$O(X());else if(Y.startsWith("-"))HY(`unknown flag "${Y}"`);else if(z.path===void 0)z.path=Y;else HY(`unexpected argument "${Y}"`)}return z}function sw(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("-"))HY(`unknown flag "${X}"`);else if(z===void 0)z=X;else HY(`unexpected argument "${X}"`);if(!Z&&!Y)Z=!0,Y=!0;return{path:z,clearScript:Z,clearPrompt:Y}}async function tw(J){let[z,...Z]=J;if(z===void 0||z==="--help"||z==="-h"||z==="help"){process.stdout.write(`${aO}
211
+ `);return}let{getRepoInitOverride:Y,setRepoInitOverride:X,resolveRepoRoot:Q}=await Promise.resolve().then(() => (I1(),jZ)),{existsSync:q}=await import("fs"),{join:H}=await import("path");if(z==="show"){let[j]=Z.filter((L)=>!L.startsWith("-")),B=Q(Gj(process.cwd(),PJ(j??"."))),U=Y(B),V=q(H(B,".kobe","init.sh")),f=q(H(B,".kobe","init-prompt.md"));console.log(`repo: ${B}`),console.log(` .kobe/init.sh: ${V?"present (wins)":"absent"}`),console.log(` .kobe/init-prompt.md: ${f?"present (wins)":"absent"}`),console.log(` override initScript: ${U.initScript?WQ(U.initScript):"(unset)"}`),console.log(` override initPrompt: ${U.initPrompt?WQ(U.initPrompt):"(unset)"}`);return}if(z==="set"){let j=ow(Z);if(j.initScript===void 0&&j.initPrompt===void 0)HY("set needs at least one of --init-script(-file) / --init-prompt(-file)");let B=Q(Gj(process.cwd(),PJ(j.path??"."))),U=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: ${U.initScript?WQ(U.initScript):"(unset)"}`),console.log(` initPrompt: ${U.initPrompt?WQ(U.initPrompt):"(unset)"}`);return}if(z==="unset"){let{path:j,clearScript:B,clearPrompt:U}=sw(Z),V=Q(Gj(process.cwd(),PJ(j??"."))),f=X(V,{...B?{initScript:""}:{},...U?{initPrompt:""}:{}});console.log(`cleared override for ${V}`),console.log(` initScript: ${f.initScript?WQ(f.initScript):"(unset)"}`),console.log(` initPrompt: ${f.initPrompt?WQ(f.initPrompt):"(unset)"}`);return}HY(`unknown verb "${z}"`)}function WQ(J){let z=J.replace(/\s+/g," ").trim();return z.length>60?`"${z.slice(0,57)}\u2026"`:`"${z}"`}var aO;var pO=C(()=>{DQ();aO=["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(`
212
+ `)});async function rO(J={}){let z=J.mode==="require-running"?await iJ():await Ez();if(!z)return null;return{client:z,close:()=>z.close()}}var oO=C(()=>{IJ()});var qA={};X1(qA,{verbSchema:()=>t7,verbHelp:()=>XA,validateAgainstSpec:()=>o7,schemaIndex:()=>ZA,runApiSubcommand:()=>RP,parseFlags:()=>r7,parseAgentsSpec:()=>JA,invokeVerb:()=>NP,fullSchema:()=>YA,findVerb:()=>aG,deliverPrompt:()=>QA,defaultApiRuntime:()=>e7,apiUsage:()=>qj,VerbArgs:()=>s7,VERB_GROUPS:()=>fQ,VERBS:()=>KQ,FANOUT_CAP:()=>UQ,ApiError:()=>y1,API_VERBS:()=>zP,API_SCHEMA_VERSION:()=>p7});import{resolve as sO}from"path";function eO(J){for(let[z,Z]of Object.entries(fQ))if(Z.includes(J))return z;return"other"}async function JP(J){let z=J.args.str("verb");if(z){let Y=aG(z);if(!Y)throw new y1(`unknown verb: ${z}`,"BAD_VERB");return t7(Y)}let Z=J.args.str("group");if(Z)return YP(Z);if(J.args.bool("all"))return YA();return ZA()}function aG(J){let z=Hj[J]??J;return KQ.find((Z)=>Z.name===z)}function r7(J,z=new Set){let Z=new Map,Y=!1,X=!1;for(let Q=0;Q<J.length;Q++){let q=J[Q];if(!q.startsWith("--")&&q!=="-h")throw new y1(`unexpected positional arg: ${q}`,"BAD_FLAG");if(q==="-h"){X=!0;continue}let H=q.indexOf("=");if(H!==-1){let U=q.slice(2,H),V=q.slice(H+1);if(U==="pretty")Y=V!=="false"&&V!=="0";else if(U==="help")X=V!=="false"&&V!=="0";else Z.set(U,V);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[Q+1];if(B===void 0||B.startsWith("--"))throw new y1(`flag --${j} requires a value`,"BAD_FLAG");Z.set(j,B),Q+=1}return{flags:Z,pretty:Y,help:X}}function o7(J,z){let Z=new Set(J.flags.map((Y)=>Y.name));for(let Y of z.keys())if(!Z.has(Y))throw new y1(`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 y1(`--${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 y1(`--${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 Q=Number.parseInt(X,10);if(!Number.isInteger(Q)||Q<=0)throw new y1(`--${Y.name} must be a positive integer`,"BAD_FLAG")}}}}class s7{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 y1(`--${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 y1(`--${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 y1(`--${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 y1(`--${J} must be a positive integer`,"BAD_FLAG");return Z}path(J){let z=this.str(J);return z===void 0?void 0:sO(process.cwd(),PJ(z))}requirePath(J){return sO(process.cwd(),PJ(this.require(J)))}}function JA(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 y1(`--agents entry "${Y}" must be vendor:count`,"BAD_FLAG");let Q=Y.slice(0,X);if(!e1.includes(Q))throw new y1(`--agents vendor "${Q}" must be one of ${e1.join(", ")}`,"BAD_FLAG");let q=Number.parseInt(Y.slice(X+1),10);if(!Number.isInteger(q)||q<=0)throw new y1(`--agents count for "${Q}" must be a positive integer`,"BAD_FLAG");if(z.length+q>UQ)throw new y1(`--agents requests ${z.length+q} agents, exceeds the cap of ${UQ}`,"BAD_FLAG");for(let H=0;H<q;H++)z.push(Q)}if(z.length===0)throw new y1('--agents specified no agents (e.g. "claude:2,codex:1")',"BAD_FLAG");return z}function ZP(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 t7(J){return{name:J.name,group:eO(J.name),summary:J.summary,offline:J.offline??!1,flags:J.flags.map(ZP)}}function ZA(){return{apiVersion:p7,kobeVersion:a0,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:fQ,verbs:KQ.map((J)=>({name:J.name,group:eO(J.name),summary:J.summary})),globalFlags:zA,aliases:Hj}}function YP(J){let z=fQ[J];if(!z)throw new y1(`unknown group: ${J}. Groups: ${Object.keys(fQ).join(", ")}`,"BAD_FLAG");return{group:J,verbs:z.map((Z)=>{let Y=aG(Z);return{name:Z,summary:Y?.summary??""}})}}function YA(){return{apiVersion:p7,kobeVersion:a0,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:zA,aliases:Hj,groups:fQ,verbs:KQ.map(t7)}}function XP(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 XA(J){let z=[`kobe api ${J.name} ${XP(J)}`.trimEnd(),"",J.summary,""],Z=Object.entries(Hj).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)":"",Q=Y.default!==void 0?` [default: ${Y.default}]`:"",q=Y.type==="enum"&&Y.values?` {${Y.values.join("|")}}`:"";z.push(` --${Y.name}${q}${X}${Q} ${Y.description}`)}z.push("")}return z.push("Global: [--pretty] [--help]"),z.join(`
213
+ `)}function qj(){return["usage: kobe api <verb> [flags] [--pretty] [--help]","","Explore the full surface (names, flags, types) with: kobe api schema","","verbs:",...KQ.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(`
214
+ `)}function QP(J,z){let Z=z?JSON.stringify(J,null,2):JSON.stringify(J);process.stdout.write(`${Z}
215
+ `)}function IZ(J,z,Z=1){process.stderr.write(`${JSON.stringify({error:{message:J,code:z}})}
216
+ `),process.exit(Z)}async function QA(J,z,Z,Y=GP){let X=z.worktreePath;if(!X)X=(await J.request("task.ensureWorktree",{taskId:z.id})).worktreePath;if(!X)throw new y1(`task ${z.id} has no worktree`,"NO_WORKTREE");let Q=T1(z.id),q=await Y.sessionExists(Q);if(!q){let B=await Y.resolveEngineLaunchInit(z.repo??"",X,{kind:"none"});if(!await Y.ensureSession({name:Q,cwd:X,command:Y.engineCommand(z.vendor),taskId:z.id,vendor:z.vendor,repo:z.repo,launchInit:B}))throw new y1(`failed to start tmux session for ${z.id}`,"SESSION_FAILED")}let{pane:H,ready:j}=await Y.waitForEnginePane(Q,!q);if(!H)throw new y1(`no engine pane in session ${Q}`,"NO_ENGINE_PANE");return await Y.pasteAndSubmit(H,Z),{session:Q,pane:H,started:!q,engineReady:j}}async function qP(J){let z=null,Z=J.onChannel("active-task",(Y)=>{z=Y.taskId});try{await J.subscribe()}finally{Z()}return z}function qz(J){if(!J.client)throw new y1("daemon required","BAD_DAEMON");return J.client}async function vz(J,z,Z){return qz(J).request(z,Z)}async function HP(J){let z=J.args.str("title"),Z=J.args.str("body");if(z===void 0&&Z===void 0)throw new y1("issue-update requires --title and/or --body","MISSING_FLAG");return vz(J,"issue.mutate",{repoRoot:J.args.requirePath("repo"),op:{type:"update",id:J.args.int("id"),title:z,body:Z}})}async function jP(J){let z=qz(J),{args:Z,runtime:Y}=J,Q={repo:await Y.resolveRepoRoot(Z.requirePath("repo"))},q=Z.str("title");if(q)Q.title=q;let H=Z.str("branch");if(H)Q.branch=H;let j=Z.str("base-branch");if(j)Q.baseRef=j;let B=Z.vendor()??await Y.defaultVendor();if(B)Q.vendor=B;let U=await z.request("task.create",Q),V=U.taskId;await z.request("task.setActive",{taskId:V});let f=Z.enumOf("status");if(f)await z.request("task.status",{taskId:V,status:f});let L=Z.bool("pin");if(L!==void 0)await z.request("task.pin",{taskId:V,pinned:L});let M=U.task;if(f||L!==void 0)M=(await z.request("task.get",{taskId:V})).task;let A=Z.str("prompt");if(!A)return{taskId:V,task:M,started:!1};let N=await J.runtime.deliverPrompt(z,{id:V,worktreePath:M.worktreePath,vendor:M.vendor,repo:M.repo},A);return M=(await z.request("task.get",{taskId:V})).task,{taskId:V,task:M,started:N.started,engineReady:N.engineReady,session:N.session}}async function BP(J){let z=qz(J),Z=J.args.require("prompt"),Y=J.args.str("task-id");if(!Y){let q=await qP(z);if(!q)throw new y1("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}),Q=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:Q.session,started:Q.started,engineReady:Q.engineReady}}async function VP(J){let z=qz(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 WP(J){let z=qz(J),Z=J.args.require("task-id"),Y=J.args.require("text");return await z.request("note.file",{taskId:Z,text:Y})}async function UP(J){let z=qz(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 fP(J){return qz(J).request("task.list")}async function KP(J){let z=qz(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 DP(J){let z=qz(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 LP(J){let z=qz(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 FP(J){let z=qz(J),{args:Z}=J,Y={repo:Z.requirePath("repo"),worktreePath:Z.requirePath("worktree")},X=Z.str("branch");if(X)Y.branch=X;let Q=Z.vendor();if(Q)Y.vendor=Q;let q=Z.str("title");if(q)Y.title=q;return z.request("worktree.adopt",Y)}async function MP(J){let z=qz(J),{args:Z,runtime:Y}=J,X=await Y.resolveRepoRoot(Z.requirePath("repo")),Q=Z.require("prompt"),q=Z.str("title"),H=Z.str("base-branch"),j=Z.str("agents"),B=await Y.defaultVendor(),U=j?JA(j):Array(Z.int("count")??1).fill(Z.vendor()??B??"claude");if(U.length>UQ)throw new y1(`fan-out of ${U.length} exceeds the cap of ${UQ} \u2014 spawn in batches`,"BAD_FLAG");let V=[];for(let f of U){let L={repo:X,vendor:f};if(q)L.title=q;if(H)L.baseRef=H;let M=await z.request("task.create",L),A=await J.runtime.deliverPrompt(z,{id:M.taskId,worktreePath:M.task.worktreePath,vendor:f,repo:M.task.repo},Q);V.push({taskId:M.taskId,vendor:f,started:A.started,engineReady:A.engineReady,session:A.session})}return{count:V.length,tasks:V}}async function OP(J){let z=qz(J),{args:Z,runtime:Y}=J,X=Z.str("task-ids"),Q=Z.path("repo"),q;if(X)q=X.split(",").map((j)=>j.trim()).filter(Boolean);else if(Q){let j=await Y.resolveRepoRoot(Q),{tasks:B}=await z.request("task.list");q=[];for(let U of B){if(U.archived)continue;if(await Y.resolveRepoRoot(U.repo)===j)q.push(U.id)}}else throw new y1("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}),U=await Y.isTaskRunning(j),V=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:U,changes:V})}return{tasks:H}}async function AP(J){return{ok:!0,discussion:GQ({title:J.args.require("title"),body:J.args.require("body"),categorySlug:J.args.str("category")})}}function GA(J,z,Z,Y){return{args:new s7(J,z),client:Z,runtime:Y}}async function NP(J,z,Z){let Y=aG(J);if(!Y)throw new y1(`unknown verb: ${J}`,"BAD_VERB");let X=new Set(Y.flags.filter((q)=>q.type==="bool").map((q)=>q.name)),Q=r7(z,X);return o7(Y,Q.flags),Y.handler(GA(Y,Q.flags,Z.client,Z.runtime??e7))}async function RP(J){let[z,...Z]=J;if(!z||z==="--help"||z==="-h"||z==="help"){if(!z)IZ(qj(),"MISSING_VERB",2);process.stdout.write(`${qj()}
217
+ `);return}let Y=aG(z);if(!Y)IZ(`unknown verb: ${z}
218
+ ${qj()}`,"BAD_VERB",2);let X=new Set(Y.flags.filter((H)=>H.type==="bool").map((H)=>H.name)),Q;try{Q=r7(Z,X)}catch(H){if(H instanceof y1)IZ(H.message,H.code,2);IZ(H instanceof Error?H.message:String(H),"BAD_FLAG",2)}if(Q.help){process.stdout.write(`${XA(Y)}
219
+ `);return}try{o7(Y,Q.flags)}catch(H){if(H instanceof y1)IZ(H.message,H.code,2);IZ(H instanceof Error?H.message:String(H),"BAD_FLAG",2)}let q=null;if(!Y.offline)try{q=await rO()}catch(H){IZ(`could not reach or start the kobe daemon: ${H instanceof Error?H.message:String(H)}`,"BAD_DAEMON",2)}try{let H=await Y.handler(GA(Y,Q.flags,q?.client??null,e7));QP(H,Q.pretty)}catch(H){if(H instanceof y1)IZ(H.message,H.code,1);IZ(H instanceof Error?H.message:String(H),"RPC_ERROR",1)}finally{q?.close()}}var p7=2,UQ=10,tO,ew,y1,N1,Hj,fQ,KQ,zP,zA,GP,e7;var HA=C(()=>{eJ();p9();DQ();S1();Z9();s1();CJ();oO();tO=["backlog","in_progress","in_review","done","canceled","error"],ew=["open","doing","hold","done"];y1=class y1 extends Error{code;constructor(J,z){super(J);this.code=z}};N1={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:e1,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})},Hj={"spawn-task":"add"},fQ={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"]};KQ=[{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:JP},{name:"list",summary:"List all tasks (incl. archived). Returns { tasks }.",flags:[],handler:fP},{name:"get-task",summary:"Read one task's metadata. `.running` = its tmux session is live.",flags:[N1.taskId()],handler:UP},{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:[N1.repo(),N1.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."},N1.vendor(),{name:"status",type:"enum",values:tO,default:"backlog",description:"Initial lifecycle status."},{name:"pin",type:"bool",description:"Pin the task to the top of the sidebar."},N1.prompt(!1,"Optional first message \u2014 when set, materializes the worktree, starts the engine, and pastes it.")],handler:jP},{name:"fan-out",summary:`Spawn N tasks of ONE prompt in a single call (parallel attempts). Capped at ${UQ}.`,flags:[N1.repo(),N1.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)."},N1.vendor(),N1.title(),{name:"base-branch",type:"string",placeholder:"B",description:"Base ref for every worktree."}],handler:MP},{name:"send",summary:"Paste a follow-up prompt into a task's running engine (one full turn). Defaults to the active task.",flags:[N1.taskId(!1),N1.prompt(!0,"Text pasted + submitted into the engine pane.")],handler:BP},{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:[N1.taskId(!0),N1.prompt(!0,"Text delivered into the task's engine session.")],handler:VP},{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:[N1.taskId(!0),{name:"text",type:"string",required:!0,placeholder:"TEXT",description:"One line: the verified conclusion another session could act on."}],handler:WP},{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:S7,placeholder:"SLUG",description:"Discussion category slug."}],offline:!0,handler:AP},{name:"issue-list",summary:"List daemon-owned issues for a repo.",flags:[N1.repo()],handler:(J)=>vz(J,"issue.list",{repoRoot:J.args.requirePath("repo")})},{name:"issue-create",summary:"Create a daemon-owned issue for a repo.",flags:[N1.repo(),{name:"title",type:"string",required:!0,placeholder:"T",description:"Issue title."},{name:"body",type:"string",placeholder:"TEXT",description:"Issue body."}],handler:(J)=>vz(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:[N1.repo(),{name:"id",type:"int",required:!0,placeholder:"N",description:"Issue id."},{name:"status",type:"enum",required:!0,values:ew,description:"New issue status."}],handler:(J)=>vz(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:[N1.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:HP},{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."},N1.repo(!1)],handler:OP},{name:"rename",summary:"Set a task's title.",flags:[N1.taskId(),{name:"title",type:"string",required:!0,placeholder:"T",description:"New title."}],handler:(J)=>vz(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:[N1.taskId(),{name:"branch",type:"string",required:!0,placeholder:"B",description:"New branch name."}],handler:(J)=>vz(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:[N1.taskId(),{...N1.vendor(),required:!0}],handler:(J)=>vz(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:[N1.taskId(),{name:"status",type:"enum",required:!0,values:tO,description:"New status."}],handler:(J)=>vz(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:[N1.taskId(),{name:"archived",type:"bool",default:"true",description:"true to archive, false to unarchive."}],handler:DP},{name:"pin",summary:"Pin (or with --pinned=false, unpin) a task to the top of the sidebar.",flags:[N1.taskId(),{name:"pinned",type:"bool",default:"true",description:"true to pin, false to unpin."}],handler:(J)=>vz(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:[N1.taskId(!1),{name:"none",type:"bool",description:"Clear the active task instead of setting one."}],handler:KP},{name:"ensure-worktree",summary:"Materialize a task's git worktree on disk now (without starting an engine). Returns { worktreePath }.",flags:[N1.taskId()],handler:(J)=>vz(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:[N1.taskId(),{name:"force",type:"bool",description:"Delete even with uncommitted changes."}],handler:LP},{name:"discover-adoptable",summary:"List existing git worktrees in a repo not yet tracked as kobe tasks. Returns { worktrees }.",flags:[N1.repo()],handler:(J)=>vz(J,"worktree.discoverAdoptable",{repo:J.args.requirePath("repo")})},{name:"adopt",summary:"Import an existing git worktree as a kobe task. Returns { task }.",flags:[N1.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)."},N1.vendor(),N1.title()],handler:FP}],zP=KQ.map((J)=>J.name);zA=[{name:"pretty",type:"bool",description:"Pretty-print stdout JSON."},{name:"help",type:"bool",description:"Show usage for the verb and exit."}];GP={sessionExists:K1,ensureSession:async(J)=>(await Promise.resolve().then(() => (qJ(),$J))).ensureSession(J),waitForEnginePane:DG,pasteAndSubmit:LG,resolveEngineLaunchInit:async(J,z,Z)=>(await Promise.resolve().then(() => (TX(),mH))).resolveEngineLaunchInit(J,z,Z),engineCommand:cJ};e7={isTaskRunning:(J)=>K1(T1(J)),deliverPrompt:(J,z,Z)=>QA(J,z,Z),resolveRepoRoot:async(J)=>(await Promise.resolve().then(() => (I1(),jZ))).resolveMainRepoRoot(J),defaultVendor:async()=>{let{getPersistedString:J}=await Promise.resolve().then(() => (I1(),jZ)),z=J("lastSelectedVendor")?.trim();return z?z:void 0},readWorktreeChanges:async(J)=>(await Promise.resolve().then(() => (wX(),e6))).readWorktreeChanges(J),tearDownSession:async(J)=>{let z=T1(J);await oz(z).catch(()=>{}),await nJ(z).catch(()=>{})}}});var WA={};X1(WA,{updatePlan:()=>jA,runUpdateSubcommand:()=>gP,parseUpdateArgs:()=>BA});import{spawnSync as CP}from"child_process";function jA(){return{command:"sh",args:["-c",VZ],display:VZ}}function BA(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}"
220
+
221
+ `),VA(process.stderr),process.exit(2)}return{help:!1,dryRun:z}}function VA(J){J.write(["Usage: kobe update [--dry-run]","","Runs kobe's GitHub-hosted update script.","","Default command:",` ${VZ}`,"","Script URL:",` ${fq}`,"","Manual fallback:",` ${hj()}`,"","Examples:"," kobe update"," kobe update --dry-run",""].join(`
222
+ `))}async function gP(J,z){let Z={spawn:z?.spawn??CP,stdout:z?.stdout??process.stdout,stderr:z?.stderr??process.stderr,exit:z?.exit??((q)=>process.exit(q))},Y=BA(J);if(Y.help){VA(Z.stdout);return}let X=jA();if(Z.stdout.write(`kobe ${a0} -> latest
179
223
  `),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 ED=C(()=>{kJ()});var vD={};j1(vD,{runThemeSubcommand:()=>Ty});import{existsSync as PD,mkdirSync as Oy,readFileSync as Ay,readdirSync as Ry,unlinkSync as gy,writeFileSync as Ny}from"fs";import{basename as wD,join as V8,resolve as Cy}from"path";function FZ(J){process.stderr.write(`kobe theme: ${J}
182
- `),process.exit(1)}function sZ(J){process.stderr.write(`kobe theme: ${J}
224
+ `),Y.dryRun)return;let Q=Z.spawn(X.command,X.args,{stdio:"inherit"});if(Q.error)Z.stderr.write(`kobe update: failed to run ${X.command}: ${Q.error.message}
225
+ `),Z.exit(1);Z.exit(Q.status??1)}var UA=C(()=>{CJ()});var LA={};X1(LA,{runThemeSubcommand:()=>hP});import{existsSync as KA,mkdirSync as kP,readFileSync as bP,readdirSync as IP,unlinkSync as SP,writeFileSync as yP}from"fs";import{basename as fA,join as zW,resolve as TP}from"path";function SZ(J){process.stderr.write(`kobe theme: ${J}
226
+ `),process.exit(1)}function jY(J){process.stderr.write(`kobe theme: ${J}
183
227
 
184
- `),hD(),process.exit(2)}function by(){let J=[];J.push("bundled:");for(let Y of[...W8].sort())J.push(` ${Y} [built-in]`);let z=NX(),Z=[];try{Z=Ry(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=V8(z,Y),q=W8.includes(X)?" (overrides built-in)":"";J.push(` ${X}${q} ${G}`)}process.stdout.write(`${J.join(`
228
+ `),DA(),process.exit(2)}function xP(){let J=[];J.push("bundled:");for(let Y of[...JW].sort())J.push(` ${Y} [built-in]`);let z=UX(),Z=[];try{Z=IP(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),Q=zW(z,Y),q=JW.includes(X)?" (overrides built-in)":"";J.push(` ${X}${q} ${Q}`)}process.stdout.write(`${J.join(`
185
229
  `)}
186
- `)}async function ky(J){if(/^https?:\/\//i.test(J)){let G;try{G=await fetch(J)}catch(V){FZ(`failed to fetch ${J}: ${V instanceof Error?V.message:String(V)}`)}if(!G.ok)FZ(`failed to fetch ${J}: HTTP ${G.status} ${G.statusText}`);let q=await G.text(),H=J.split(/[?#]/)[0]??J,j=wD(H)||"theme.json",B=j.endsWith(".json")?j.slice(0,-5):j;return{text:q,defaultName:B}}let z=Cy(process.cwd(),yJ(J)),Z;try{Z=Ay(z,"utf8")}catch(G){FZ(`failed to read ${z}: ${G instanceof Error?G.message:String(G)}`)}let Y=wD(z),X=Y.endsWith(".json")?Y.slice(0,-5):Y;return{text:Z,defaultName:X}}function Iy(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)sZ("--name requires a value");Z=q,X+=1;continue}if(G.startsWith("--name=")){Z=G.slice(7);continue}if(G.startsWith("--"))sZ(`unknown flag: ${G}`);if(z===null){z=G;continue}sZ(`unexpected positional argument: ${G}`)}if(z===null)sZ("missing <source> (URL or path to theme JSON)");return{source:z,opts:{name:Z,force:Y}}}async function Sy(J){let{source:z,opts:Z}=Iy(J),{text:Y,defaultName:X}=await ky(z),G;try{G=JSON.parse(Y)}catch(V){FZ(`source is not valid JSON: ${V instanceof Error?V.message:String(V)}`)}let q=WH(G);if(!q.ok)FZ(`source is not a valid kobe theme: ${q.reason}`);let H=Z.name??X;if(!H||!/^[a-zA-Z0-9._-]+$/.test(H))FZ(`invalid theme name "${H}" (use letters, digits, '.', '_', '-')`);let j=NX();Oy(j,{recursive:!0});let B=V8(j,`${H}.json`);if(PD(B)&&!Z.force)FZ(`${B} already exists (pass --force to overwrite)`);Ny(B,`${JSON.stringify(q.theme,null,2)}
230
+ `)}async function EP(J){if(/^https?:\/\//i.test(J)){let Q;try{Q=await fetch(J)}catch(U){SZ(`failed to fetch ${J}: ${U instanceof Error?U.message:String(U)}`)}if(!Q.ok)SZ(`failed to fetch ${J}: HTTP ${Q.status} ${Q.statusText}`);let q=await Q.text(),H=J.split(/[?#]/)[0]??J,j=fA(H)||"theme.json",B=j.endsWith(".json")?j.slice(0,-5):j;return{text:q,defaultName:B}}let z=TP(process.cwd(),PJ(J)),Z;try{Z=bP(z,"utf8")}catch(Q){SZ(`failed to read ${z}: ${Q instanceof Error?Q.message:String(Q)}`)}let Y=fA(z),X=Y.endsWith(".json")?Y.slice(0,-5):Y;return{text:Z,defaultName:X}}function uP(J){let z=null,Z,Y=!1;for(let X=0;X<J.length;X+=1){let Q=J[X];if(Q==="--force"||Q==="-f"){Y=!0;continue}if(Q==="--name"||Q==="-n"){let q=J[X+1];if(q===void 0)jY("--name requires a value");Z=q,X+=1;continue}if(Q.startsWith("--name=")){Z=Q.slice(7);continue}if(Q.startsWith("--"))jY(`unknown flag: ${Q}`);if(z===null){z=Q;continue}jY(`unexpected positional argument: ${Q}`)}if(z===null)jY("missing <source> (URL or path to theme JSON)");return{source:z,opts:{name:Z,force:Y}}}async function wP(J){let{source:z,opts:Z}=uP(J),{text:Y,defaultName:X}=await EP(z),Q;try{Q=JSON.parse(Y)}catch(U){SZ(`source is not valid JSON: ${U instanceof Error?U.message:String(U)}`)}let q=aq(Q);if(!q.ok)SZ(`source is not a valid kobe theme: ${q.reason}`);let H=Z.name??X;if(!H||!/^[a-zA-Z0-9._-]+$/.test(H))SZ(`invalid theme name "${H}" (use letters, digits, '.', '_', '-')`);let j=UX();kP(j,{recursive:!0});let B=zW(j,`${H}.json`);if(KA(B)&&!Z.force)SZ(`${B} already exists (pass --force to overwrite)`);yP(B,`${JSON.stringify(q.theme,null,2)}
187
231
  `,"utf8"),process.stdout.write(`installed theme "${H}" -> ${B}
188
- `)}function yy(J){let z=J[0];if(!z)sZ("missing <name>");if(J.length>1)sZ(`unexpected extra arguments after "${z}"`);if(W8.includes(z))FZ(`"${z}" is a built-in theme and cannot be removed`);let Z=V8(NX(),`${z}.json`);if(!PD(Z))FZ(`no user theme named "${z}" (looked for ${Z})`);gy(Z),process.stdout.write(`removed theme "${z}" (${Z})
189
- `)}function hD(){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: ${NX()}`,"Schema: https://raw.githubusercontent.com/sma1lboy/kobe/main/packages/kobe/src/tui/context/theme/theme.schema.json",""].join(`
190
- `))}async function Ty(J){let[z,...Z]=J;if(!z||z==="--help"||z==="-h"||z==="help"){if(hD(),!z)process.exit(2);return}if(z==="list"||z==="ls"){if(Z.length>0)sZ(`"${z}" takes no arguments`);by();return}if(z==="add"){await Sy(Z);return}if(z==="remove"||z==="rm"){yy(Z);return}sZ(`unknown action "${z}" (try "list", "add", or "remove")`)}var W8;var mD=C(()=>{fG();VH();E9();W8=["claude","conductor","dracula","nord","opencode","osaka-jade","tokyonight"]});var iD={};j1(iD,{runFeedbackSubcommand:()=>uy,parseFeedbackArgs:()=>nD});import{readFileSync as cD}from"fs";function tZ(J){process.stderr.write(`kobe feedback: ${J}
232
+ `)}function PP(J){let z=J[0];if(!z)jY("missing <name>");if(J.length>1)jY(`unexpected extra arguments after "${z}"`);if(JW.includes(z))SZ(`"${z}" is a built-in theme and cannot be removed`);let Z=zW(UX(),`${z}.json`);if(!KA(Z))SZ(`no user theme named "${z}" (looked for ${Z})`);SP(Z),process.stdout.write(`removed theme "${z}" (${Z})
233
+ `)}function DA(){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: ${UX()}`,"Schema: https://raw.githubusercontent.com/sma1lboy/kobe/main/packages/kobe/src/tui/context/theme/theme.schema.json",""].join(`
234
+ `))}async function hP(J){let[z,...Z]=J;if(!z||z==="--help"||z==="-h"||z==="help"){if(DA(),!z)process.exit(2);return}if(z==="list"||z==="ls"){if(Z.length>0)jY(`"${z}" takes no arguments`);xP();return}if(z==="add"){await wP(Z);return}if(z==="remove"||z==="rm"){PP(Z);return}jY(`unknown action "${z}" (try "list", "add", or "remove")`)}var JW;var FA=C(()=>{DQ();_q();VB();JW=["claude","conductor","dracula","nord","opencode","osaka-jade","tokyonight"]});var NA={};X1(NA,{runFeedbackSubcommand:()=>mP,parseFeedbackArgs:()=>AA});import{readFileSync as MA}from"fs";function BY(J){process.stderr.write(`kobe feedback: ${J}
191
235
 
192
- ${dD}
193
- `),process.exit(2)}function xy(J){if(J==="-")return cD(0,"utf8");return cD(J,"utf8")}function nD(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)tZ("--title requires a value");continue}if(Y==="--body"){if(z.body=J[++Z],z.body===void 0)tZ("--body requires a value");continue}if(Y==="--body-file"){if(z.bodyFile=J[++Z],z.bodyFile===void 0)tZ("--body-file requires a value");continue}if(Y==="--category"){if(z.category=J[++Z],z.category===void 0)tZ("--category requires a value");continue}tZ(`unexpected argument "${Y}"`)}return z}async function uy(J){let z=nD(J);if(z.help){process.stdout.write(`${dD}
194
- `);return}if(!z.title)tZ("--title is required");if(z.body&&z.bodyFile)tZ("pass either --body or --body-file, not both");let Z=z.bodyFile?xy(z.bodyFile):z.body;if(!Z)tZ("--body or --body-file is required");let Y=iX({title:z.title,body:Z,categorySlug:z.category});console.log(`created Discussion #${Y.number}: ${Y.url}`)}var dD;var lD=C(()=>{qj();dD=["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 Ey}from"os";async function $D(J={}){let z=J.homeDir??process.env.KOBE_HOME_DIR??Ey(),Z=new dX({homeDir:z});await Z.load();let Y=new Yj,X=new $q({store:Z,worktrees:Y});return{homeDir:z,orchestrator:X,store:Z,worktrees:Y,async close(){X.dispose()}}}var aD=C(()=>{uG();VQ();Y8()});var pD={};j1(pD,{runDaemonSubcommand:()=>Py});function _D(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 wy(){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 Py(J){let[z="status"]=J,Z=hz(),Y=XZ();if(z==="--help"||z==="-h"||z==="help"){_D(process.stdout);return}if(z==="status"){let H=new zz(Z);try{let j=await H.request("daemon.status");console.log(JSON.stringify(j,null,2))}catch{let j=await vX(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 zz(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 mX(Z,Y),(await yz()).close(),console.log(`kobe daemon: restarted, listening on ${Z}`);return}if(z!=="start")process.stderr.write(`kobe daemon: unknown command "${z}"
236
+ ${OA}
237
+ `),process.exit(2)}function vP(J){if(J==="-")return MA(0,"utf8");return MA(J,"utf8")}function AA(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)BY("--title requires a value");continue}if(Y==="--body"){if(z.body=J[++Z],z.body===void 0)BY("--body requires a value");continue}if(Y==="--body-file"){if(z.bodyFile=J[++Z],z.bodyFile===void 0)BY("--body-file requires a value");continue}if(Y==="--category"){if(z.category=J[++Z],z.category===void 0)BY("--category requires a value");continue}BY(`unexpected argument "${Y}"`)}return z}async function mP(J){let z=AA(J);if(z.help){process.stdout.write(`${OA}
238
+ `);return}if(!z.title)BY("--title is required");if(z.body&&z.bodyFile)BY("pass either --body or --body-file, not both");let Z=z.bodyFile?vP(z.bodyFile):z.body;if(!Z)BY("--body or --body-file is required");let Y=GQ({title:z.title,body:Z,categorySlug:z.category});console.log(`created Discussion #${Y.number}: ${Y.url}`)}var OA;var RA=C(()=>{p9();OA=["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(`
239
+ `)});import{homedir as cP}from"os";async function CA(J={}){let z=J.homeDir??process.env.KOBE_HOME_DIR??cP(),Z=new jQ({homeDir:z});await Z.load();let Y=new bX,X=new MH({store:Z,worktrees:Y});return{homeDir:z,orchestrator:X,store:Z,worktrees:Y,async close(){X.dispose()}}}var gA=C(()=>{nQ();dG();AH()});var bA={};X1(bA,{runDaemonSubcommand:()=>nP});function kA(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(`
240
+ `))}function dP(){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 nP(J){let[z="status"]=J,Z=iz(),Y=fZ();if(z==="--help"||z==="-h"||z==="help"){kA(process.stdout);return}if(z==="status"){let H=new Wz(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 Wz(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 Ez()).close(),console.log(`kobe daemon: restarted, listening on ${Z}`);return}if(z!=="start")process.stderr.write(`kobe daemon: unknown command "${z}"
197
241
 
198
- `),_D(process.stderr),process.exit(2);R5();let X=await $D(),G=await x4(X.orchestrator,{socketPath:Z,pidPath:Y,homeDir:X.homeDir,webPort:wy(),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 rD=C(()=>{UG();IJ();Jj();rY();eH();aD()});import{existsSync as hy,readFileSync as vy}from"fs";import{homedir as my}from"os";import{join as oD}from"path";function D8(J={}){return["skills","add",cy,"--skill","kobe","--agent",J.agent??Bj]}function fj(J={}){return`npx ${D8(J).join(" ")}`}function L8(J={}){let z=J.home??my(),Z=J.cwd??process.cwd();return[oD(z,sD),oD(Z,sD)]}function dy(J){let z=J.match(/kobe-skill-version:\s*(\d+)/);return z?Number.parseInt(z[1],10):null}function FQ(J){let z=L8(J).find((X)=>hy(X));if(!z)return{installed:!1,installedVersion:null,currentVersion:U8,stale:!1};let Z=null;try{Z=dy(vy(z,"utf8"))}catch{Z=null}let Y=Z===null||Z<U8;return{installed:!0,installedVersion:Z,currentVersion:U8,stale:Y}}function tD(){let J=FQ();if(!J.installed){if(x1(K8)==="1")return;QJ(K8,"1"),process.stderr.write(`
242
+ `),kA(process.stderr),process.exit(2);n5();let X=await CA(),Q=await q4(X.orchestrator,{socketPath:Z,pidPath:Y,homeDir:X.homeDir,webPort:dP(),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 ${Q.socketPath}`),Q.webPort)console.log(`kobe daemon: web transport listening on http://127.0.0.1:${Q.webPort}`);let q=async()=>{await Q.close(),await X.close(),process.exit(0)};process.once("SIGINT",()=>void q()),process.once("SIGTERM",()=>void q())}var IA=C(()=>{EQ();IJ();aH();LX();$H();gA()});import{existsSync as iP,readFileSync as lP}from"fs";import{homedir as $P}from"os";import{join as SA}from"path";function XW(J={}){return["skills","add",aP,"--skill","kobe","--agent",J.agent??jj]}function Bj(J={}){return`npx ${XW(J).join(" ")}`}function QW(J={}){let z=J.home??$P(),Z=J.cwd??process.cwd();return[SA(z,yA),SA(Z,yA)]}function _P(J){let z=J.match(/kobe-skill-version:\s*(\d+)/);return z?Number.parseInt(z[1],10):null}function pG(J){let z=QW(J).find((X)=>iP(X));if(!z)return{installed:!1,installedVersion:null,currentVersion:ZW,stale:!1};let Z=null;try{Z=_P(lP(z,"utf8"))}catch{Z=null}let Y=Z===null||Z<ZW;return{installed:!0,installedVersion:Z,currentVersion:ZW,stale:Y}}function TA(){let J=pG();if(!J.installed){if(E1(YW)==="1")return;jJ(YW,"1"),process.stderr.write(`
199
243
  kobe: the kobe agent skill isn't installed \u2014 install it so your coding agent can drive kobe via \`kobe api\`:
200
- ${LQ}
201
- (wraps \`${fj()}\`; check anytime with \`kobe doctor\`)
244
+ ${_G}
245
+ (wraps \`${Bj()}\`; check anytime with \`kobe doctor\`)
202
246
 
203
- `);return}if(J.stale){let z=`${K8}:v${J.currentVersion}`;if(x1(z)==="1")return;QJ(z,"1");let Z=J.installedVersion===null?"an older":`v${J.installedVersion}`;process.stderr.write(`
247
+ `);return}if(J.stale){let z=`${YW}:v${J.currentVersion}`;if(E1(z)==="1")return;jJ(z,"1");let Z=J.installedVersion===null?"an older":`v${J.installedVersion}`;process.stderr.write(`
204
248
  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
- ${LQ}
249
+ ${_G}
206
250
 
207
- `)}}var U8=2,sD=".claude/skills/kobe/SKILL.md",LQ="kobe skill install",cy="Sma1lboy/kobe",Bj="claude-code",K8="skillHintSeen";var Wj=C(()=>{S1()});function ny(J){let z=(X)=>X&&X.length>0?X:"(unset)",Z=J.TERM_PROGRAM?`${J.TERM_PROGRAM}${J.TERM_PROGRAM_VERSION?` v${J.TERM_PROGRAM_VERSION}`:""}`:"(unset)";return[`terminal: TERM=${z(J.TERM)} TERM_PROGRAM=${Z} COLORTERM=${z(J.COLORTERM)}`,` running inside tmux: ${J.TMUX?"yes":"no"}`]}function iy(J){let z=J.match(/\x1b\[\?(\d+)u/);if(z?.[1]!==void 0)return{kind:"supported",flags:Number.parseInt(z[1],10)};if(/\x1b\[\?[\d;]*c/.test(J))return{kind:"unsupported"};return null}function ly(J){switch(J.kind){case"supported":return` kitty keyboard protocol: \u2713 answered (flags=${J.flags})`;case"unsupported":return" kitty keyboard protocol: \u2717 not supported \u2014 legacy key path (ctrl+h/ctrl+j arrive as C0 backspace/linefeed bytes)";case"no-response":return" kitty keyboard protocol: ? no reply (terminal ignored both the kitty query and DA1)";case"skipped":return` kitty keyboard protocol: skipped (${J.reason})`}}async function $y(J=300){let z=process.stdin;if(!z.isTTY||!process.stdout.isTTY)return{kind:"skipped",reason:"not an interactive terminal"};let Z=z.isRaw===!0,Y="";return await new Promise((X)=>{let G=!1,q=(B)=>{if(G)return;if(G=!0,clearTimeout(j),z.off("data",H),z.pause(),!Z)z.setRawMode(!1);X(B)},H=(B)=>{Y+=B.toString("latin1");let V=iy(Y);if(V)q(V)},j=setTimeout(()=>q({kind:"no-response"}),J);z.setRawMode(!0),z.resume(),z.on("data",H),process.stdout.write("\x1B[?u\x1B[c")})}async function eD(){return[...ny(process.env),ly(await $y())]}var Vj={};j1(Vj,{runResetSubcommand:()=>XT,runReloadSubcommand:()=>GT,runDoctorSubcommand:()=>ZT});import{existsSync as ay,readFileSync as ZL,statSync as _y}from"fs";import{unlink as py}from"fs/promises";import{join as YL}from"path";import{createInterface as ry}from"readline";function oy(J){try{return process.kill(J,0),!0}catch(z){return z.code==="EPERM"}}async function sy(J){let z=new zz(J);try{return await z.request("daemon.status")}catch{return null}finally{z.close()}}function ty(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 ey(J){if(J<1024)return`${J} B`;if(J<1048576)return`${(J/1024).toFixed(1)} KB`;return`${(J/1048576).toFixed(1)} MB`}function F8(J){try{let z=_y(J);return`present (${ey(z.size)}, modified ${z.mtime.toISOString()})`}catch{return"absent"}}function XL(J){try{let z=JSON.parse(ZL(J,"utf8"));return Array.isArray(z.tasks)?z.tasks.length:null}catch{return null}}function JT(J,z){try{return ZL(J,"utf8").split(`
251
+ `)}}var ZW=2,yA=".claude/skills/kobe/SKILL.md",_G="kobe skill install",aP="Sma1lboy/kobe",jj="claude-code",YW="skillHintSeen";var Vj=C(()=>{I1()});function pP(J){let z=[];for(let Z of J.split(`
252
+ `).slice(1)){let Y=Z.trim();if(!Y)continue;let[X,Q,q,...H]=Y.split(/\s+/),j=Number.parseInt(X??"",10),B=Number.parseInt(Q??"",10),U=Number.parseInt(q??"",10);if(!Number.isFinite(j)||!Number.isFinite(B)||!Number.isFinite(U)||H.length===0)continue;z.push({pid:j,pgid:B,rssKb:U,comm:H.join(" ")})}return z}function rP(J,z){let Z=new Set(z);return J.filter((Y)=>Z.has(Y.pgid))}async function oP(){let{code:J,stdout:z}=await S0(["list-panes","-a","-F","#{pane_pid}"]);if(J!==0)return[];return z.split(`
253
+ `).map((Z)=>Number.parseInt(Z.trim(),10)).filter((Z)=>Number.isFinite(Z)&&Z>1)}async function sP(){let J=Bun.spawn(["ps","-axo","pid,pgid,rss,comm"],{stdin:"ignore",stdout:"pipe",stderr:"ignore"}),[z]=await Promise.all([new Response(J.stdout).text().catch(()=>""),J.exited]);return pP(z)}async function xA(){if(!await Kz())return["resources: tmux not installed \u2014 no kobe sessions to measure"];let J=await oP();if(J.length===0)return[`resources: 0 process(es) on \`${lJ}\``];let z=rP(await sP(),J),Z=z.reduce((Q,q)=>Q+q.rssKb,0)/1024,Y=new Map;for(let Q of z){let q=Y.get(Q.comm)??{count:0,kb:0};q.count++,q.kb+=Q.rssKb,Y.set(Q.comm,q)}let X=[`resources: ${z.length} process(es) across ${J.length} pane(s) on \`${lJ}\`, ${Z.toFixed(1)} MB RSS total`];for(let[Q,{count:q,kb:H}]of[...Y].sort((j,B)=>B[1].kb-j[1].kb))X.push(` ${Q}: ${q} proc, ${(H/1024).toFixed(1)} MB`);return X}var EA=C(()=>{S1()});function tP(J){let z=(X)=>X&&X.length>0?X:"(unset)",Z=J.TERM_PROGRAM?`${J.TERM_PROGRAM}${J.TERM_PROGRAM_VERSION?` v${J.TERM_PROGRAM_VERSION}`:""}`:"(unset)";return[`terminal: TERM=${z(J.TERM)} TERM_PROGRAM=${Z} COLORTERM=${z(J.COLORTERM)}`,` running inside tmux: ${J.TMUX?"yes":"no"}`]}function eP(J){let z=J.match(/\x1b\[\?(\d+)u/);if(z?.[1]!==void 0)return{kind:"supported",flags:Number.parseInt(z[1],10)};if(/\x1b\[\?[\d;]*c/.test(J))return{kind:"unsupported"};return null}function Jh(J){switch(J.kind){case"supported":return` kitty keyboard protocol: \u2713 answered (flags=${J.flags})`;case"unsupported":return" kitty keyboard protocol: \u2717 not supported \u2014 legacy key path (ctrl+h/ctrl+j arrive as C0 backspace/linefeed bytes)";case"no-response":return" kitty keyboard protocol: ? no reply (terminal ignored both the kitty query and DA1)";case"skipped":return` kitty keyboard protocol: skipped (${J.reason})`}}async function zh(J=300){let z=process.stdin;if(!z.isTTY||!process.stdout.isTTY)return{kind:"skipped",reason:"not an interactive terminal"};let Z=z.isRaw===!0,Y="";return await new Promise((X)=>{let Q=!1,q=(B)=>{if(Q)return;if(Q=!0,clearTimeout(j),z.off("data",H),z.pause(),!Z)z.setRawMode(!1);X(B)},H=(B)=>{Y+=B.toString("latin1");let U=eP(Y);if(U)q(U)},j=setTimeout(()=>q({kind:"no-response"}),J);z.setRawMode(!0),z.resume(),z.on("data",H),process.stdout.write("\x1B[?u\x1B[c")})}async function uA(){return[...tP(process.env),Jh(await zh())]}var Wj={};X1(Wj,{runResetSubcommand:()=>fh,runReloadSubcommand:()=>Kh,runDoctorSubcommand:()=>Wh});import{existsSync as Zh,readFileSync as hA,statSync as Yh}from"fs";import{unlink as Xh}from"fs/promises";import{join as vA}from"path";import{createInterface as Qh}from"readline";function Gh(J){try{return process.kill(J,0),!0}catch(z){return z.code==="EPERM"}}async function qh(J){let z=new Wz(J);try{return await z.request("daemon.status")}catch{return null}finally{z.close()}}function Hh(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 jh(J){if(J<1024)return`${J} B`;if(J<1048576)return`${(J/1024).toFixed(1)} KB`;return`${(J/1048576).toFixed(1)} MB`}function GW(J){try{let z=Yh(J);return`present (${jh(z.size)}, modified ${z.mtime.toISOString()})`}catch{return"absent"}}function mA(J){try{let z=JSON.parse(hA(J,"utf8"));return Array.isArray(z.tasks)?z.tasks.length:null}catch{return null}}function Bh(J,z){try{return hA(J,"utf8").split(`
208
254
  `).filter((Y)=>Y.trim().length>0).slice(-z).join(`
209
- `)}catch{return""}}async function M8(J){let z=Bun.spawn(yY(...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 zT(){if(!await lz())return 0;let{code:J,stdout:z}=await M8(["list-sessions","-F","#{session_name}"]);if(J!==0)return 0;return z.split(`
210
- `).filter((Z)=>Z.trim().length>0).length}async function ZT(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=hz(),Y=XZ(),X=Xq(),G=YL(UJ(),"tasks.json"),q=eJ(),H=["kobe doctor",` build: v${e0} (${process.platform} ${process.arch}, bun ${Bun.version})`,` home: ${bJ()}`,` socket: ${Z}`,""];H.push(...await eD(),"");let j=await sy(Z);if(j){let f=typeof j.daemonPid==="number"?j.daemonPid:"?",U=typeof j.uptimeMs==="number"?ty(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!==e0)H.push(` \u26A0 stale build: daemon is v${A}, you launched v${e0}`),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 vX(Y);if(f&&oy(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(ay(Z))H.push(` orphan socket file present: ${Z}`);let U=JT(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 lz())H.push(`tmux: ${await zT()} kobe session(s) on \`${Iz}\` socket`);else H.push("tmux: \u2717 not found on PATH (task sessions need tmux)");H.push("");let B=FQ();if(!B.installed)H.push("skill: \u2717 kobe agent skill not installed (optional \u2014 lets a coding agent drive `kobe api`)"),H.push(` \u2192 ${LQ}`);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 ${LQ}`)}else H.push(`skill: \u2713 kobe agent skill installed (v${B.installedVersion})`);H.push("");let V=XL(G);H.push(`tasks.json: ${F8(G)}${V===null?"":` \u2014 ${V} task(s)`}`),H.push(`state.json: ${F8(q)}`),H.push(`daemon.log: ${F8(X)}`),console.log(H.join(`
214
- `))}async function YT(J){let z=ry({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 JL(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 zL(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 XT(J){if(J.includes("--help")||J.includes("-h")||J.includes("help")){zL(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
- `),zL(process.stderr),process.exit(2);let Y=J.includes("--hard"),X=J.includes("--yes")||J.includes("-y"),G=hz(),q=XZ(),H=YL(UJ(),"tasks.json"),j=eJ();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 \`${Iz}\` socket`),Y){let f=XL(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 YT(Y?`
255
+ `)}catch{return""}}async function qW(J){let z=Bun.spawn(vY(...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 Vh(){if(!await Kz())return 0;let{code:J,stdout:z}=await qW(["list-sessions","-F","#{session_name}"]);if(J!==0)return 0;return z.split(`
256
+ `).filter((Z)=>Z.trim().length>0).length}async function Wh(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(`
257
+ `));return}let z=J.find((V)=>V.length>0);if(z!==void 0)process.stderr.write([`kobe doctor: unexpected argument "${z}"`,"","Usage: kobe doctor (read-only; takes no options)",""].join(`
258
+ `)),process.exit(2);let Z=iz(),Y=fZ(),X=eq(),Q=vA(DJ(),"tasks.json"),q=Hz(),H=["kobe doctor",` build: v${a0} (${process.platform} ${process.arch}, bun ${Bun.version})`,` home: ${EJ()}`,` socket: ${Z}`,""];H.push(...await uA(),"");let j=await qh(Z);if(j){let V=typeof j.daemonPid==="number"?j.daemonPid:"?",f=typeof j.uptimeMs==="number"?Hh(j.uptimeMs):"?",L=typeof j.taskCount==="number"?j.taskCount:"?",M=typeof j.attachedClients==="number"?j.attachedClients:"?";H.push(`daemon: \u2713 running (pid ${V}, up ${f}, ${L} task(s), ${M} client(s))`);let A=typeof j.kobeVersion==="string"?j.kobeVersion:void 0;if(A&&A!==a0)H.push(` \u26A0 stale build: daemon is v${A}, you launched v${a0}`),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 V=await PX(Y);if(V&&Gh(V))H.push(`daemon: \u2717 WEDGED \u2014 process alive (pid ${V}) but not accepting connections`),H.push(" \u2192 run `kobe reset` to kill it, then relaunch kobe");else if(V)H.push(`daemon: \u2717 not running (stale pidfile \u2192 pid ${V} 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(Zh(Z))H.push(` orphan socket file present: ${Z}`);let f=Bh(X,8);if(f){H.push(" last lines of daemon.log:");for(let L of f.split(`
259
+ `))H.push(` \u2502 ${L}`)}}if(H.push(""),await Kz())H.push(`tmux: ${await Vh()} kobe session(s) on \`${lJ}\` socket`);else H.push("tmux: \u2717 not found on PATH (task sessions need tmux)");H.push(""),H.push(...await xA(),"");let B=pG();if(!B.installed)H.push("skill: \u2717 kobe agent skill not installed (optional \u2014 lets a coding agent drive `kobe api`)"),H.push(` \u2192 ${_G}`);else if(B.stale){let V=B.installedVersion===null?"unstamped":`v${B.installedVersion}`;H.push(`skill: \u26A0 kobe agent skill out of date (${V}; this kobe wants v${B.currentVersion})`),H.push(` \u2192 ${_G}`)}else H.push(`skill: \u2713 kobe agent skill installed (v${B.installedVersion})`);H.push("");let U=mA(Q);H.push(`tasks.json: ${GW(Q)}${U===null?"":` \u2014 ${U} task(s)`}`),H.push(`state.json: ${GW(q)}`),H.push(`daemon.log: ${GW(X)}`),console.log(H.join(`
260
+ `))}async function Uh(J){let z=Qh({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 wA(J,z){try{await Xh(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 PA(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(`
261
+ `))}async function fh(J){if(J.includes("--help")||J.includes("-h")||J.includes("help")){PA(process.stdout);return}let z=new Set(["--hard","--yes","-y"]),Z=J.find((V)=>!z.has(V));if(Z!==void 0)process.stderr.write(`kobe reset: unknown argument "${Z}"
262
+
263
+ `),PA(process.stderr),process.exit(2);let Y=J.includes("--hard"),X=J.includes("--yes")||J.includes("-y"),Q=iz(),q=fZ(),H=vA(DJ(),"tasks.json"),j=Hz();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 (${Q})`),console.log(` \u2022 kill all kobe tmux sessions on the \`${lJ}\` socket`),Y){let V=mA(H);console.log(` \u2022 DELETE the task index${V===null?"":` (${V} 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(`
264
+ re-run with --yes to proceed (no interactive terminal for a y/N prompt)`);return}if(!await Uh(Y?`
219
265
  Stop daemon, kill sessions AND wipe task index? [y/N] `:`
220
- Stop daemon and kill kobe sessions? [y/N] `)){console.log("aborted \u2014 nothing changed");return}}console.log("");let{pid:B,method:V}=await mX(G,q);if(console.log(V==="absent"?" daemon: was not running (cleared any stale socket/pidfile)":` daemon: stopped via ${V}${B?` (pid ${B})`:""}`),await lz()){await jf();let{code:f}=await M8(["kill-server"]);console.log(f===0?` tmux: killed all sessions on \`${Iz}\``:` tmux: no sessions on \`${Iz}\``)}else console.log(" tmux: not installed \u2014 no sessions to kill");if(Y)await JL(H,"task index"),await JL(j,"UI state");console.log(`
221
- kobe: reset complete. Relaunch kobe to start fresh.`)}async function GT(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(`
266
+ Stop daemon and kill kobe sessions? [y/N] `)){console.log("aborted \u2014 nothing changed");return}}console.log("");let{pid:B,method:U}=await hX(Q,q);if(console.log(U==="absent"?" daemon: was not running (cleared any stale socket/pidfile)":` daemon: stopped via ${U}${B?` (pid ${B})`:""}`),await Kz()){await KV();let{code:V}=await qW(["kill-server"]);console.log(V===0?` tmux: killed all sessions on \`${lJ}\``:` tmux: no sessions on \`${lJ}\``)}else console.log(" tmux: not installed \u2014 no sessions to kill");if(Y)await wA(H,"task index"),await wA(j,"UI state");console.log(`
267
+ kobe: reset complete. Relaunch kobe to start fresh.`)}async function Kh(J=[]){if(J.includes("--help")||J.includes("-h")||J.includes("help")){process.stdout.write(["Usage: kobe reload","","Restart kobe's Tasks + Ops panes in every live session, in place.","Picks up new kobe code without `kobe reset` \u2014 the engine (claude)","panes and your running turns are never touched. Takes no options.",""].join(`
222
268
  `));return}let z=J.find((H)=>H.length>0);if(z!==void 0)process.stderr.write(`kobe reload: unexpected argument "${z}"
223
269
 
224
270
  Usage: kobe reload (takes no options)
225
- `),process.exit(2);if(!await lz()){console.log("kobe reload: tmux is not installed \u2014 no panes to reload");return}let{code:Z,stdout:Y}=await M8(["list-sessions","-F","#{session_name}"]);if(Z!==0){console.log(`kobe reload: no kobe tmux sessions on the \`${Iz}\` 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 \`${Iz}\` socket`);return}let{refreshKobeWorkspacePanes:G}=await Promise.resolve().then(() => (HJ(),vJ)),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 Uj=C(()=>{UG();Jj();rY();eH();p1();Wj();w1();kJ()});var fL={};j1(fL,{runWebSubcommand:()=>VT});import{existsSync as qL}from"fs";import{homedir as QT}from"os";import{resolve as Kj}from"path";import{fileURLToPath as HL}from"url";function GL(){let J=process.env.KOBE_HOME_DIR?.trim();return J?`sandbox: ${J}`:`${QT()}/.kobe (production)`}function HT(){let J=HL(import.meta.url),z=[Kj(J,"../../../../kobe-web/dist"),Kj(J,"../../web-ui")];for(let Z of z)if(qL(`${Z}/index.html`))return Z;return}function jT(){let J=HL(import.meta.url),z=[Kj(J,"../../../../kobe-web/pty-server.mjs"),Kj(J,"../../web-ui/pty-server.mjs")];for(let Z of z)if(qL(Z))return Z;return}async function QL(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 BT(J){let z;try{z=(await(await fetch(`http://localhost:${J}${BL}`,{signal:AbortSignal.timeout(800)})).text()).trim()}catch{return}if(z!==jL)throw Error(`PTY port ${J} is in use by a non-kobe service; refusing to replace it`);let Z=await QL(J);for(let X of Z)try{process.kill(X,"SIGTERM")}catch{}let Y=Date.now()+2000;while(Date.now()<Y){if((await QL(J)).length===0)return;await new Promise((X)=>setTimeout(X,100))}}async function fT(J){let z=jT();if(!z)return null;let Z=J.webPort+2;if(J.takeover)await BT(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 WT(J,z){if(process.env.KOBE_DAEMON_WEB_PORT=String(J),z)process.env.KOBE_DAEMON_WEB_STATIC_DIR=z;await cX();let Z;try{Z=(await(await fetch(`http://127.0.0.1:${J}${BL}`,{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!==jL)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 VT(J){if(J.includes("--help")||J.includes("-h")){process.stdout.write(qT);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:HT();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 WT(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: ${GL()}
230
- `);else if(q=await fT({webPort:z,takeover:X}),process.stdout.write(`kobe web \u2192 http://localhost:${z}
231
- `),process.stdout.write(` home: ${GL()}
271
+ `),process.exit(2);if(!await Kz()){console.log("kobe reload: tmux is not installed \u2014 no panes to reload");return}let{code:Z,stdout:Y}=await qW(["list-sessions","-F","#{session_name}"]);if(Z!==0){console.log(`kobe reload: no kobe tmux sessions on the \`${lJ}\` socket`);return}let X=Y.split(`
272
+ `).map((H)=>H.trim()).filter((H)=>H.length>0);if(X.length===0){console.log(`kobe reload: no kobe tmux sessions on the \`${lJ}\` socket`);return}let{refreshKobeWorkspacePanes:Q}=await Promise.resolve().then(() => (qJ(),$J)),q=0;for(let H of X)try{await Q(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 Uj=C(()=>{EQ();aH();LX();$H();o1();Vj();S1();CJ();EA()});var aA={};X1(aA,{runWebSubcommand:()=>Rh});import{existsSync as nA}from"fs";import{homedir as Dh}from"os";import{resolve as fj}from"path";import{fileURLToPath as iA}from"url";function cA(){let J=process.env.KOBE_HOME_DIR?.trim();return J?`sandbox: ${J}`:`${Dh()}/.kobe (production)`}function Fh(){let J=iA(import.meta.url),z=[fj(J,"../../../../kobe-web/dist"),fj(J,"../../web-ui")];for(let Z of z)if(nA(`${Z}/index.html`))return Z;return}function Mh(){let J=iA(import.meta.url),z=[fj(J,"../../../../kobe-web/pty-server.mjs"),fj(J,"../../web-ui/pty-server.mjs")];for(let Z of z)if(nA(Z))return Z;return}async function dA(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(`
273
+ `).map((Y)=>Number.parseInt(Y.trim(),10)).filter((Y)=>Number.isFinite(Y)&&Y!==process.pid)}catch{return[]}}async function Oh(J){let z;try{z=(await(await fetch(`http://localhost:${J}${$A}`,{signal:AbortSignal.timeout(800)})).text()).trim()}catch{return}if(z!==lA)throw Error(`PTY port ${J} is in use by a non-kobe service; refusing to replace it`);let Z=await dA(J);for(let X of Z)try{process.kill(X,"SIGTERM")}catch{}let Y=Date.now()+2000;while(Date.now()<Y){if((await dA(J)).length===0)return;await new Promise((X)=>setTimeout(X,100))}}async function Ah(J){let z=Mh();if(!z)return null;let Z=J.webPort+2;if(J.takeover)await Oh(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 Nh(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}${$A}`,{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!==lA)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 Rh(J){if(J.includes("--help")||J.includes("-h")){process.stdout.write(Lh);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
274
+ `),process.exit(2);z=Y}try{let Y=J.includes("--routes-only")||J.includes("--bridge-only"),X=!J.includes("--no-takeover"),Q=Y?void 0:Fh();if(!Y&&!Q)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 Nh(z,Q);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)
275
+ `),process.stdout.write(` home: ${cA()}
276
+ `);else if(q=await Ah({webPort:z,takeover:X}),process.stdout.write(`kobe web \u2192 http://localhost:${z}
277
+ `),process.stdout.write(` home: ${cA()}
232
278
  `),!q)process.stderr.write(`kobe web: PTY server not found; terminal tabs will be unavailable
233
279
  `);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
280
  `),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 jL="kobe-web",BL="/__kobe_web",qT=`Usage: kobe web [options]
281
+ `),process.exit(1)}}var lA="kobe-web",$A="/__kobe_web",Lh=`Usage: kobe web [options]
236
282
 
237
283
  Launch the kobe web UI through daemon web transport on http://localhost:<port>.
238
284
 
@@ -241,77 +287,33 @@ Options:
241
287
  --routes-only Routes only; Vite serves the SPA separately.
242
288
  --no-takeover Reserved for compatibility; daemon owns the web port.
243
289
  -h, --help Show this help.
244
- `;var WL=C(()=>{IJ()});var UL={};j1(UL,{runSkillSubcommand:()=>KT});function O8(){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: ${Bj}.`].join(`
245
- `)}function VL(J){let z=Bj;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
290
+ `;var _A=C(()=>{IJ()});var rA={};X1(rA,{runSkillSubcommand:()=>gh});function HW(){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: ${jj}.`].join(`
291
+ `)}function pA(J){let z=jj;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
292
  `),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
293
 
248
- ${O8()}
249
- `),process.exit(2)}return z}async function KT(J){let[z,...Z]=J;if(!z||z==="--help"||z==="-h"||z==="help"){if(process.stdout.write(`${O8()}
250
- `),!z)process.exitCode=2;return}if(!UT.includes(z))process.stderr.write(`kobe skill: unknown verb "${z}"
294
+ ${HW()}
295
+ `),process.exit(2)}return z}async function gh(J){let[z,...Z]=J;if(!z||z==="--help"||z==="-h"||z==="help"){if(process.stdout.write(`${HW()}
296
+ `),!z)process.exitCode=2;return}if(!Ch.includes(z))process.stderr.write(`kobe skill: unknown verb "${z}"
251
297
 
252
- ${O8()}
253
- `),process.exit(2);if(z==="status"){let H=FQ(),[j,B]=L8(),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(`${fj({agent:VL(Z)})}
255
- `);return}let Y=VL(Z),X=D8({agent:Y});process.stdout.write(`kobe skill: running \`npx ${X.join(" ")}\`
298
+ ${HW()}
299
+ `),process.exit(2);if(z==="status"){let H=pG(),[j,B]=QW(),U=!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: ${U}`,` looked in: ${j}`,` ${B}`,H.installed&&!H.stale?"":" \u2192 run `kobe skill install` to install / refresh",""].join(`
300
+ `));return}if(z==="command"){process.stdout.write(`${Bj({agent:pA(Z)})}
301
+ `);return}let Y=pA(Z),X=XW({agent:Y});process.stdout.write(`kobe skill: running \`npx ${X.join(" ")}\`
256
302
  `);let q=await Bun.spawn(["npx",...X],{stdin:"inherit",stdout:"inherit",stderr:"inherit"}).exited;if(q!==0)process.stderr.write(`
257
303
  kobe skill install failed (npx exited ${q}). Is \`npx\` on PATH and are you online?
258
- You can run it yourself: ${fj({agent:Y})}
304
+ You can run it yourself: ${Bj({agent:Y})}
259
305
  `),process.exit(q||1);process.stdout.write(`kobe skill: installed.
260
- `)}var UT;var KL=C(()=>{Wj();UT=["install","status","command"]});var R8={};j1(R8,{runHookSubcommand:()=>RT,readTextWithTimeout:()=>FL,parseWorktreeRemovePath:()=>RL,parseWorktreeAddPath:()=>AL,ensureGlobalKobeHooks:()=>CT});import{homedir as DT}from"os";import{join as LL,resolve as A8}from"path";async function FL(J,z=LT){let Z;try{return await Promise.race([J(),new Promise((Y)=>{Z=setTimeout(()=>Y(""),z)})])}finally{if(Z!==void 0)clearTimeout(Z)}}async function ML(){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 FT(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 OT(J){return!!J&&typeof J==="object"&&!Array.isArray(J)}function OL(J){let z=[],Z=/"([^"]*)"|'([^']*)'|(\S+)/g,Y;while((Y=Z.exec(J))!==null)z.push(Y[1]??Y[2]??Y[3]??"");return z}function AL(J){let z=OL(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 RL(J){let z=OL(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 AT(){let J=await ML(),z=OT(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=AL(Z),G=X?void 0:RL(Z);if(!X&&!G)return;let q=await Hz();if(!q)return;try{if(X)await q.request("worktree.reconcile",{cwd:Y,worktreePath:A8(Y,X)});else if(G)await q.request("worktree.archiveRemoved",{worktreePath:A8(Y,G)})}finally{q.close()}}async function RT(J){let[z,...Z]=J;if(z==="setup"){await bT(Z);return}if(z===MT){try{await AT()}catch{}return}try{if(!z||!Iq(z))return;let Y=await ML(),X=FT(Z,"--task-id"),G=typeof Y.cwd==="string"&&Y.cwd?Y.cwd:process.cwd(),q;for(let j of gL())if(q=j.activityDetailFromPayload(z,Y),q)break;let H=await Hz();if(!H)return;try{await H.request("engine.reportEvent",{...X?{taskId:X}:{cwd:G},kind:z,...q?{detail:q}:{}})}finally{H.close()}}catch{}}function gT(){return s1.map((J)=>tB(J)).filter((J)=>J.supportsWorktreeSync())}function gL(){return s1.map((J)=>tB(J)).filter((J)=>J.supportsHooks())}function NL(){return LL(DT(),".claude","settings.json")}function NT(J){if(!J||J==="off")return;if(J==="global")return NL();if(J.startsWith("repo:"))return LL(A8(J.slice(5)),".claude","settings.json");return J}async function CT(){try{for(let J of gL()){let z=J.globalSettingsPath();if(!z)continue;await J.installActivityHooks(z),await J.installWorktreeWatchHook(z)}await CL()}catch{}}async function CL(){let J=gT();if(J.length===0)return;let z=x1(DL),Z=new Set([NL()]),Y=NT(z);if(Y)Z.add(Y);for(let X of J)for(let G of Z)await X.removeWorktreeSyncHook(G);if(z!=="off")QJ(DL,"off")}async function bT(J){await CL(),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 LT=500,MT="worktree-created",DL="externalWorktreeSync";var g8=C(()=>{IJ();eB();Sq();S1();t1()});function kL(J){var z;if(J>=55296&&J<=57343||J>1114111)return 65533;return(z=kT.get(J))!==null&&z!==void 0?z:J}var N8,kT,bL;var IL=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]]),bL=(N8=String.fromCodePoint)!==null&&N8!==void 0?N8:(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 SL(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 yL;var TL=C(()=>{yL=SL("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 xL=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 C8(J){return J>=$1.ZERO&&J<=$1.NINE}function IT(J){return J>=$1.UPPER_A&&J<=$1.UPPER_F||J>=$1.LOWER_A&&J<=$1.LOWER_F}function ST(J){return J>=$1.UPPER_A&&J<=$1.UPPER_Z||J>=$1.LOWER_A&&J<=$1.LOWER_Z||C8(J)}function yT(J){return J===$1.EQUALS||ST(J)}class b8{constructor(J,z,Z){this.decodeTree=J,this.emitCodePoint=z,this.errors=Z,this.state=WJ.EntityStart,this.consumed=1,this.result=0,this.treeIndex=0,this.excess=1,this.decodeMode=MZ.Strict,this.runConsumed=0}startEntity(J){this.decodeMode=J,this.state=WJ.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1,this.runConsumed=0}write(J,z){switch(this.state){case WJ.EntityStart:{if(J.charCodeAt(z)===$1.NUM)return this.state=WJ.NumericStart,this.consumed+=1,this.stateNumericStart(J,z+1);return this.state=WJ.NamedEntity,this.stateNamedEntity(J,z)}case WJ.NumericStart:return this.stateNumericStart(J,z);case WJ.NumericDecimal:return this.stateNumericDecimal(J,z);case WJ.NumericHex:return this.stateNumericHex(J,z);case WJ.NamedEntity:return this.stateNamedEntity(J,z)}}stateNumericStart(J,z){if(z>=J.length)return-1;if((J.charCodeAt(z)|uL)===$1.LOWER_X)return this.state=WJ.NumericHex,this.consumed+=1,this.stateNumericHex(J,z+1);return this.state=WJ.NumericDecimal,this.stateNumericDecimal(J,z)}stateNumericHex(J,z){while(z<J.length){let Z=J.charCodeAt(z);if(C8(Z)||IT(Z)){let Y=Z<=$1.NINE?Z-$1.ZERO:(Z|uL)-$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(C8(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===MZ.Strict)return 0;if(this.emitCodePoint(kL(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=xT(Z,Y,this.treeIndex+Math.max(1,X),G),this.treeIndex<0)return this.result===0||this.decodeMode===MZ.Attribute&&(X===0||yT(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!==MZ.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 WJ.NamedEntity:return this.result!==0&&(this.decodeMode!==MZ.Attribute||this.result===this.treeIndex)?this.emitNotTerminatedNamedEntity():0;case WJ.NumericDecimal:return this.emitNumericEntity(0,2);case WJ.NumericHex:return this.emitNumericEntity(0,3);case WJ.NumericStart:return(J=this.errors)===null||J===void 0||J.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case WJ.EntityStart:return 0}}}function TT(J){let z="",Z=new b8(J,(Y)=>z+=bL(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 xT(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 vY(J,z=MZ.Legacy){return uT(J,z)}var $1,uL=32,WJ,MZ,uT;var EL=C(()=>{IL();TL();xL();(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"})(WJ||(WJ={}));(function(J){J[J.Legacy=0]="Legacy",J[J.Strict=1]="Strict",J[J.Attribute=2]="Attribute"})(MZ||(MZ={}));uT=TT(yL)});var wL,PL;var vL=C(()=>{EL();(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"})(PL||(PL={}))});import{CliRenderer as wT,createCliRenderer as PT,engine as hT}from"@opentui/core";import{createTestRenderer as y_}from"@opentui/core/testing";import{ASCIIFontRenderable as vT,BoxRenderable as mT,CodeRenderable as cT,DiffRenderable as dT,InputRenderable as nT,LineNumberRenderable as iT,MarkdownRenderable as lT,ScrollBoxRenderable as $T,SelectRenderable as aT,TabSelectRenderable as _T,TextareaRenderable as pT,TextAttributes as k8,TextNodeRenderable as rT,TextRenderable as oT}from"@opentui/core";import{engine as u_,Timeline as E_}from"@opentui/core";import{BaseRenderable as $L,createTextAttributes as tT,InputRenderable as I8,InputRenderableEvents as MQ,isTextNodeRenderable as T8,parseColor as mL,Renderable as eT,RootTextNodeRenderable as Jx,ScrollBoxRenderable as zx,SelectRenderable as cL,SelectRenderableEvents as S8,TabSelectRenderable as dL,TabSelectRenderableEvents as y8,TextNodeRenderable as Zx,TextRenderable as aL}from"@opentui/core";import{BaseRenderable as fx,isTextNodeRenderable as Wx,TextNodeRenderable as Vx,TextRenderable as Ux,Yoga as iL}from"@opentui/core";import{BoxRenderable as l_,RootRenderable as $_}from"@opentui/core";import{TimeToFirstDrawRenderable as Fx}from"@opentui/core";import{createSlotRegistry as p_}from"@opentui/core";function Xx({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,M,y){if(M!==void 0&&!y)y=[];if(typeof N!=="function")return U(I,N,y,M);vz((c)=>U(I,N(),c,M),y)}function U(I,N,M,y,c){while(typeof M==="function")M=M();if(N===M)return M;let d=typeof N,i=y!==void 0;if(d==="string"||d==="number"){if(d==="number")N=N.toString();if(i){let t=M[0];if(t&&Y(t))X(t,N);else t=z(N);M=A(I,M,y,t)}else if(M!==""&&typeof M==="string")X(B(I),M=N);else A(I,M,y,z(N)),M=N}else if(N==null||d==="boolean")M=A(I,M,y);else if(d==="function")return vz(()=>{let t=N();while(typeof t==="function")t=t();M=U(I,t,M,y)}),()=>M;else if(Array.isArray(N)){let t=[];if(L(t,N,c))return vz(()=>M=U(I,t,M,y,!0)),()=>M;if(t.length===0){let X0=A(I,M,y);if(i)return M=X0}else if(Array.isArray(M))if(M.length===0)g(I,t,y);else O(I,M,t);else if(M==null||M==="")g(I,t);else O(I,i&&M||[B(I)],t);M=t}else{if(Array.isArray(M)){if(i)return M=A(I,M,y,N);A(I,M,null,N)}else if(M==null||M===""||!B(I))G(I,N);else E(I,N,B(I));M=N}return M}function L(I,N,M){let y=!1;for(let c=0,d=N.length;c<d;c++){let i=N[c],t;if(i==null||i===!0||i===!1);else if(Array.isArray(i))y=L(I,i)||y;else if((t=typeof i)==="string"||t==="number")I.push(z(i));else if(t==="function")if(M){while(typeof i==="function")i=i();y=L(I,Array.isArray(i)?i:[i])||y}else I.push(i),y=!0;else I.push(i)}return y}function O(I,N,M){let y=M.length,c=N.length,d=y,i=0,t=0,X0=V(N[c-1]),G0=null;while(i<c||t<d){if(N[i]===M[t]){i++,t++;continue}while(N[c-1]===M[d-1])c--,d--;if(c===i){let f0=d<y?t?V(M[t-1]):M[d-t]:X0;while(t<d)G(I,M[t++],f0)}else if(d===t)while(i<c){if(!G0||!G0.has(N[i]))q(I,N[i]);i++}else if(N[i]===M[d-1]&&M[t]===N[c-1]){let f0=V(N[--c]);G(I,M[t++],V(N[i++])),G(I,M[--d],f0),N[c]=M[d]}else{if(!G0){G0=new Map;let _=t;while(_<d)G0.set(M[_],_++)}let f0=G0.get(N[i]);if(f0!=null)if(t<f0&&f0<d){let _=i,M0=1,b;while(++_<c&&_<d){if((b=G0.get(N[_]))==null||b!==f0+M0)break;M0++}if(M0>f0-t){let p=N[i];while(t<f0)G(I,M[t++],p)}else E(I,M[t++],N[i++])}else i++;else q(I,N[i++])}}}function A(I,N,M,y){if(M===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 i=N.length-1;i>=0;i--){let t=N[i];if(c!==t){let X0=j(t)===I;if(!d&&!i)X0?E(I,c,t):G(I,c,M);else X0&&q(I,t)}else d=!0}}else G(I,c,M);return[c]}function g(I,N,M){for(let y=0,c=N.length;y<c;y++)G(I,N[y],M)}function E(I,N,M){G(I,N,M),q(I,M)}function h(I,N,M={},y){if(N||(N={}),!y)vz(()=>M.children=U(I,N.children,M.children));return vz(()=>N.ref&&N.ref(I)),vz(()=>{for(let c in N){if(c==="children"||c==="ref")continue;let d=N[c];if(d===M[c])continue;H(I,c,d,M[c]),M[c]=d}}),M}return{render(I,N){let M;return UY((y)=>{M=y,f(N,I())}),M},insert:f,spread(I,N,M){if(typeof N==="function")vz((y)=>h(I,N(),y,M));else h(I,N,void 0,M)},createElement:J,createTextNode:z,insertNode:G,setProp(I,N,M,y){return H(I,N,M,y),M},mergeProps:dq,effect:vz,memo:Yx,createComponent:gU,use(I,N,M){return YJ(()=>I(N,M))}}}function Gx(J){let z=Xx(J);return z.mergeProps=dq,z}function P8(J){if(!Dj.has(J))Dj.set(J,0);let z=Dj.get(J)+1;return Dj.set(J,z),`${J}-${z}`}function Qx(J,z,Z){if(VJ("Inserting node:",jJ(z),"into parent:",jJ(J),"with anchor:",jJ(Z),z instanceof _X),z instanceof OQ)z.parent=J,z=z.getSlotChild(J);if(Z&&Z instanceof OQ)Z=Z.getSlotChild(J);if(T8(z)){if(!(J instanceof aL)&&!T8(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 $L))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=x8(J),X=Y.findIndex((G)=>G.id===Z.id);if(X===-1)VJ("[INSERT]","Could not find anchor",jJ(J),jJ(Z),"[children]",...Y.map((G)=>G.id));J.add(z,X)}function qx(J,z){if(VJ("Removing node:",jJ(z),"from parent:",jJ(J)),z instanceof OQ)z.parent=null,z=z.getSlotChild(J);J.remove(z.id),process.nextTick(()=>{if(z instanceof $L&&!z.parent){z.destroyRecursively();return}})}function Hx(J){VJ("Creating text node:",J);let z=P8("text-node");if(typeof J==="number")J=J.toString();return _X.fromString(vY(J),{id:z})}function jx(){let J=P8("slot-node");return VJ("Creating slot node",J),new OQ(J)}function nL(J){VJ("Getting parent of node:",jJ(J));let z=J.parent??void 0;if(z instanceof Jx)z=z.textParent??void 0;let Z=z?.parent?.parent?.parent;if(Z instanceof zx&&Z.content===z)z=Z;return z}function Dx(J){Object.assign(eL,J)}function Lx(){return eL}var w8,GJ=()=>{let J=aJ(w8);if(!J)throw Error("No renderer found");return J},sT=(J)=>{let z=GJ();a1(()=>{z.on("resize",J)}),C1(()=>{z.off("resize",J)})},rz=()=>{let J=GJ(),[z,Z]=s({width:J.width,height:J.height});return sT((X,G)=>{Z({width:X,height:G})}),z},lL=(J)=>{let Z=GJ().keyInput;a1(()=>{Z.on("paste",J)}),C1(()=>{Z.off("paste",J)})},Yx=(J)=>D0(()=>J()),Dj,VJ=(...J)=>{if(process.env.DEBUG)console.log("[Reconciler]",...J)},_X,jJ=(J)=>{if(!J)return;return J.id},x8=(J)=>{let z;if(J instanceof aL)z=J.getTextChildren();else z=J.getChildren();return z},Bx,u,g0,k,W,S0,D,K,d_,Q,_L,jz,h8,pL,rL,OQ,AQ,Lj,u8,E8,oL,sL,tL,Kx,eL,Mx=(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=Bx(()=>k(w8.Provider,{get value(){return J},get children(){return k(z,{})}}),J.root)}finally{G=!1,J.destroy=H}if(Y)j();if(q)H()},JF=async(J,z={})=>{let Z=z instanceof wT?z:await PT({...z,onDestroy:()=>{z.onDestroy?.()}});hT.attach(Z),Mx(Z,J)};var P=C(()=>{D1();vL();D1();D1();D1();w8=mz();Dj=new Map;_X=class _X extends Zx{static fromString(J,z={}){let Z=new _X(z);return Z.add(J),Z}};({render:Bx,effect:u,memo:g0,createComponent:k,createElement:W,createTextNode:S0,insertNode:D,insert:K,spread:d_,setProp:Q,mergeProps:_L,use:jz}=Gx({createElement(J){VJ("Creating element:",J);let z=P8(J),Z=aJ(w8);if(!Z)throw Error("No renderer found");let Y=Lx();if(!Y[J])throw Error(`[Reconciler] Unknown component type: ${J}`);let X=new Y[J](Z,{id:z});return VJ("Element created with id:",z),X},createTextNode:Hx,createSlotNode:jx,replaceText(J,z){if(VJ("Replacing text:",z,"in node:",jJ(J)),!(J instanceof _X))return;J.replace(vY(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(T8(J)){if(z==="href"){J.link={url:Z};return}if(z==="style"){J.attributes|=tT(Z),J.fg=Z.fg?mL(Z.fg):J.fg,J.bg=Z.bg?mL(Z.bg):J.bg;return}return}switch(z){case"id":VJ("Id mapped",J.id,"=",Z),J[z]=Z;break;case"focused":if(!(J instanceof eT))return;if(Z)J.focus();else J.blur();break;case"onChange":let X=void 0;if(J instanceof cL)X=S8.SELECTION_CHANGED;else if(J instanceof dL)X=y8.SELECTION_CHANGED;else if(J instanceof I8)X=MQ.CHANGE;if(!X)break;if(Z)J.on(X,Z);if(Y)J.off(X,Y);break;case"onInput":if(J instanceof I8){if(Z)J.on(MQ.INPUT,Z);if(Y)J.off(MQ.INPUT,Y)}break;case"onSubmit":if(J instanceof I8){if(Z)J.on(MQ.ENTER,Z);if(Y)J.off(MQ.ENTER,Y)}else J[z]=Z;break;case"onSelect":if(J instanceof cL){if(Z)J.on(S8.ITEM_SELECTED,Z);if(Y)J.off(S8.ITEM_SELECTED,Y)}else if(J instanceof dL){if(Z)J.on(y8.ITEM_SELECTED,Z);if(Y)J.off(y8.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]=vY(G);break}default:J[z]=Z}},isTextNode(J){return J instanceof _X},insertNode:Qx,removeNode:qx,getParentNode:nL,getFirstChild(J){VJ("Getting first child of node:",jJ(J));let z=x8(J)[0];if(!z){VJ("No first child found for node:",jJ(J));return}return VJ("First child found:",jJ(z),"for node:",jJ(J)),z},getNextSibling(J){VJ("Getting next sibling of node:",jJ(J));let z=nL(J);if(!z){VJ("No parent found for node:",jJ(J));return}let Z=x8(z),Y=Z.indexOf(J);if(Y===-1||Y===Z.length-1){VJ("No next sibling found for node:",jJ(J));return}let X=Z[Y+1];if(!X){VJ("Next sibling is null for node:",jJ(J));return}return VJ("Next sibling found:",jJ(X),"for node:",jJ(J)),X}}));h8=class h8 extends fx{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}};pL=class pL extends Vx{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()}};rL=class rL extends h8{yogaNode;slotParent;destroyed=!1;constructor(J,z){super(J);this._visible=!1,this.slotParent=z,this.yogaNode=iL.default.Node.create(),this.yogaNode.setDisplay(iL.Display.None)}getLayoutNode(){return this.yogaNode}updateFromLayout(){}updateLayout(){}onRemove(){}destroy(){if(this.destroyed)return;this.destroyed=!0,super.destroy(),this.slotParent?.destroy()}};OQ=class OQ extends h8{layoutNode;textNode;destroyed=!1;constructor(J){super(J);this._visible=!1}getSlotChild(J){if(Wx(J)||J instanceof Ux){if(!this.textNode)this.textNode=new pL(`slot-text-${this.id}`,this);return this.textNode}if(!this.layoutNode)this.layoutNode=new rL(`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()}};AQ=class AQ extends rT{_ctx;constructor(J,z){super(z);this._ctx=J}};Lj=class Lj extends AQ{constructor(J,z){super(null,J);if(z==="b"||z==="strong")this.attributes=(this.attributes||0)|k8.BOLD;else if(z==="i"||z==="em")this.attributes=(this.attributes||0)|k8.ITALIC;else if(z==="u")this.attributes=(this.attributes||0)|k8.UNDERLINE}};u8=class u8 extends Lj{constructor(J){super(J,"b")}};E8=class E8 extends Lj{constructor(J){super(J,"i")}};oL=class oL extends Lj{constructor(J){super(J,"u")}};sL=class sL extends AQ{constructor(J,z){super(null,z);this.add()}add(){return super.add(`
262
- `)}};tL=class tL extends AQ{constructor(J,z){let Z={...z,link:{url:z.href}};super(null,Z)}};Kx={box:mT,text:oT,input:nT,select:aT,textarea:pT,ascii_font:vT,tab_select:_T,scrollbox:$T,code:cT,diff:dT,line_number:iT,markdown:lT,span:AQ,strong:u8,b:u8,em:E8,i:E8,u:oL,br:sL,a:tL},eL={...Kx};Dx({time_to_first_draw:Fx})});function OZ(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 Ox(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 Ax(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 Rx(J,z){if(J.size!==z.size)return!1;for(let[Z,Y]of J){let X=z.get(Z);if(!X||!pz(Y,X))return!1}return!0}function gx(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 Nx(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,M]=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)=>M(()=>d),this.connectionStateAcc=y,this.setConnectionState=(d)=>c(()=>d),this.ensureReachable=z.ensureReachable??cX,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")GZ("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(),GZ("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:Jz,minProtocolVersion:SZ}),z=typeof J.protocolVersion==="number"?J.protocolVersion:Jz,Z=typeof J.minProtocolVersion==="number"?J.minProtocolVersion:z;if(!Zq({localVersion:Jz,localMin:SZ,remoteVersion:z,remoteMin:Z}))throw Error(`kobe daemon is protocol v${z} (min v${Z}); this client is v${Jz} (min v${SZ}). 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(RQ));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"),GZ("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()=>cV(this.daemonVersionAcc()??void 0,e0)}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 UY((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 RQ(Y.task)}async ensureMainTask(J){let z=await this.client.request("task.ensureMain",{repo:J});return RQ(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 RQ(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(RQ)),this.pruneEngineState(Z),this.pruneTaskJobs(Z);else qJ("orch",`dropped task.snapshot event: tasks is not an array (got ${OZ(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=${OZ(Z?.taskId)}, state=${OZ(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=${OZ(Z?.taskId)}, kind=${OZ(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=Ox(z);if(!Z){qJ("orch",`dropped worktree.changes event: malformed changes payload (${OZ(z)})`);return}let Y=this.worktreeChangesAcc();if(Y&&Rx(Y,Z))return;this.setWorktreeChangesSig(Z);return}if(J==="transcript.activity"){let Z=gx(z);if(!Z){qJ("orch",`dropped transcript.activity event: malformed activity payload (${OZ(z)})`);return}let Y=this.transcriptActivityAcc();if(Y&&Nx(Y,Z))return;this.setTranscriptActivitySig(Z);return}if(J==="ui-prefs"){let Z=Ax(z);if(!Z){let Y=z?.theme;qJ("orch",`dropped ui-prefs event: theme must be a string (got ${OZ(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 ${OZ(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 RQ(J){return{id:CG(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 eZ=C(()=>{qY();IJ();GY();D1();hX();Xz();kJ()});function YF(J){let z=J[Oz];if(!z){if(Object.defineProperty(J,Oz,{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 Fj(J){let z;return J!=null&&typeof J==="object"&&(J[Oz]||!(z=Object.getPrototypeOf(J))||z===Object.prototype||Array.isArray(J))}function NQ(J,z=new Set){let Z,Y,X,G;if(Z=J!=null&&J[v8])return Z;if(!Fj(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=NQ(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=NQ(X,z))!==X)J[G]=Y}}return J}function Mj(J,z){let Z=J[z];if(!Z)Object.defineProperty(J,z,{value:Z=Object.create(null)});return Z}function CQ(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 Cx(J,z){let Z=Reflect.getOwnPropertyDescriptor(J,z);if(!Z||Z.get||!Z.configurable||z===Oz||z===pX)return Z;return delete Z.value,delete Z.writable,Z.get=()=>J[Oz][z],Z}function XF(J){cq()&&CQ(Mj(J,pX),ZF)()}function bx(J){return XF(J),Reflect.ownKeys(J)}function Oj(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(zF.onStoreNodeUpdate&&zF.onStoreNodeUpdate(J,z,Z,X),Z===void 0){if(delete J[z],J[AZ]&&J[AZ][z]&&X!==void 0)J[AZ][z].$()}else if(J[z]=Z,J[AZ]&&J[AZ][z]&&X===void 0)J[AZ][z].$();let q=Mj(J,pX),H;if(H=CQ(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=CQ(q,"length",G))&&H.$(J.length)}(H=q[ZF])&&H.$()}function GF(J,z){let Z=Object.keys(z);for(let Y=0;Y<Z.length;Y+=1){let X=Z[Y];if(QF(X))continue;Oj(J,X,z[X])}}function QF(J){return J==="__proto__"||J==="constructor"||J==="prototype"}function Ix(J,z){if(typeof z==="function")z=z(J);if(z=NQ(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)Oj(J,Z,X)}Oj(J,"length",Y)}else GF(J,z)}function gQ(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&&QF(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++)gQ(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))gQ(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)gQ(J,[f].concat(z),Z);return}else if(z.length>1){gQ(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=NQ(G),Y===void 0||Fj(X)&&Fj(G)&&!Array.isArray(G))GF(X,G);else Oj(J,Y,G)}function oz(...[J,z]){let Z=NQ(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=YF(Z);CU.registerGraph({value:Z,name:z&&z.name});function G(...q){mq(()=>{Y&&q.length===1?Ix(Z,q[0]):gQ(Z,q)})}return[X,G]}var v8,pX,AZ,ZF,zF,kx,Gp;var rX=C(()=>{D1();v8=Symbol("store-raw"),pX=Symbol("store-node"),AZ=Symbol("store-has"),ZF=Symbol("store-self"),zF={onStoreNodeUpdate:null};kx={get(J,z,Z){if(z===v8)return J;if(z===Oz)return Z;if(z===hq)return XF(J),Z;let Y=Mj(J,pX),X=Y[z],G=X?X():J[z];if(z===pX||z===AZ||z==="__proto__")return G;if(!X){let q=Object.getOwnPropertyDescriptor(J,z);if(cq()&&(typeof G!=="function"||J.hasOwnProperty(z))&&!(q&&q.get))G=CQ(Y,z,G)()}return Fj(G)?YF(G):G},has(J,z){if(z===v8||z===Oz||z===hq||z===pX||z===AZ||z==="__proto__")return!0;return cq()&&CQ(Mj(J,AZ),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:bx,getOwnPropertyDescriptor:Cx};Gp=Symbol("store-root")});function Aj(J){let z=mz();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=aJ(z);if(!Z)throw Error(`${J.name} context must be used within a context provider`);return Z}}}var m8=C(()=>{P();P();D1()});import{RGBA as mY}from"@opentui/core";function yx(){return Object.keys(DJ.themes)}function bQ(J){return Boolean(DJ.themes[J])}function d8(J,z){if(!J)return!1;if(!z||typeof z!=="object"||!z.theme)return!1;return cY("themes",{...DJ.themes,[J]:z}),!0}function c8(J,z="dark"){let Z=J.defs??{};function Y(j,B=[]){if(typeof j==="string"){if(j==="transparent"||j==="none")return mY.fromInts(0,0,0,0);if(j.startsWith("#"))return mY.fromHex(j);if(B.includes(j))return mY.fromInts(0,0,0);let V=Z[j]??J.theme[j];if(V===void 0)return mY.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??mY.fromHex("#ffffff"),q=X.background??mY.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 Sx,dY,DJ,cY,w0,qF;var c1=C(()=>{P();D1();rX();m8();XH();GH();QH();qH();HH();jH();BH();Sx={claude:LX,conductor:FX,nord:OX,opencode:AX,dracula:MX,tokyonight:gX,"osaka-jade":RX},dY=["primary","success","info"],[DJ,cY]=oz({themes:{...Sx},active:"claude",mode:"dark",transparentBackground:!1,focusAccent:"primary"});({use:w0,provider:qF}=Aj({name:"Theme",init:(J)=>{if(J.mode)cY("mode",J.mode);if(J.theme&&bQ(J.theme))cY("active",J.theme);let z=GJ(),Z=D0(()=>{let X=DJ.themes[DJ.active];if(X)return c8(X,DJ.mode);let G=DJ.themes.claude??DJ.themes.opencode??Object.values(DJ.themes)[0];if(!G)return c8({theme:{background:"#000000",text:"#ffffff"}},DJ.mode);return c8(G,DJ.mode)}),Y=D0(()=>{let X=Z(),G=X[DJ.focusAccent]??X.primary,q={...X,focusAccent:G};if(!DJ.transparentBackground)return q;let H=mY.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(!bQ(X))return!1;return cY("active",X),!0},setMode(X){cY("mode",X)},setTransparentBackground(X){cY("transparentBackground",X)},setFocusAccent(X){cY("focusAccent",X)},all(){return yx()},has(X){return bQ(X)}}}}))});var HF,jF;var BF=C(()=>{HF={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"}},jF={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 fF,WF;var VF=C(()=>{fF={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"}},WF={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 UF,KF;var DF=C(()=>{UF={title:"kobe \u2014 keybindings",esc:"esc"},KF={title:"kobe \u2014 \u5FEB\u6377\u952E",esc:"esc"}});var LF,FF;var MF=C(()=>{LF={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"},FF={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 OF,AF;var RF=C(()=>{OF={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)"}},AF={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 gF,NF;var CF=C(()=>{gF={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"}},NF={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 bF,kF;var IF=C(()=>{bF={badge:{newActivity:"\u25CF new"},preview:{diffVsHead:"diff vs HEAD",file:"file",closeHint:"\xB7 q to close",loading:"loading\u2026"}},kF={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 SF,yF;var TF=C(()=>{SF={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"},yF={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 xF,uF;var EF=C(()=>{xF={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)"}},uF={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 wF,PF;var hF=C(()=>{wF={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}"}},PF={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 vF,mF;var cF=C(()=>{vF={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`"}},mF={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 kQ(J){return typeof J==="string"&&oX.some((z)=>z.id===J)}var Tx,xx,oX,sX,tX="en";var eX=C(()=>{BF();VF();DF();MF();RF();CF();IF();TF();EF();hF();cF();Tx={settings:xF,tasks:wF,files:fF,newTask:gF,ops:bF,update:vF,quickTask:SF,help:UF,history:LF,common:HF,keys:OF},xx={settings:uF,tasks:PF,files:WF,newTask:NF,ops:kF,update:mF,quickTask:yF,help:KF,history:FF,common:jF,keys:AF},oX=[{id:"en",label:"English"},{id:"zh",label:"\u4E2D\u6587"}],sX={en:Tx,zh:xx}});function IQ(J){if(sX[J])ux("lang",J)}function i8(){return n8.lang}function dF(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 Ex(J,z){if(!z)return J;return J.replace(/\{(\w+)\}/g,(Z,Y)=>(Y in z)?String(z[Y]):Z)}function F(J,z){let Z=n8.lang,Y=dF(sX[Z],J)??dF(sX.en,J)??J;return Ex(Y,z)}function l8(J,z){let Z=n8.lang,Y=(X)=>{return X.keys[J]?.[z]};return Y(sX[Z])??Y(sX.en)??z}var n8,ux;var BJ=C(()=>{rX();eX();eX();[n8,ux]=oz({lang:tX})});import{randomBytes as lF}from"crypto";import{existsSync as $8,mkdirSync as wx,writeFileSync as Px}from"fs";import{isAbsolute as hx,join as vx}from"path";function dx(J){if(J.startsWith('"')&&J.endsWith('"')||J.startsWith("'")&&J.endsWith("'"))return J.slice(1,-1);return J}function nx(J){let Z=`__DOUBLE_BACKSLASH_${lF(8).toString("hex")}__`;return J.replace(/\\\\/g,Z).replace(/\\(.)/g,"$1").replaceAll(Z,"\\")}function $F(J,z=$8){let Z=nx(dx(J.trim()));if(!mx.test(Z))return null;if(!hx(Z))return null;return z(Z)?Z:null}function aF(J,z=$8){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=$F(X,z);if(!G)return null;Y.push(G)}return Y}function a8(J,z){return cx.test(J)?`pdf[${z}]`:`images[${z}]`}function _F(J,z){if(z.length===0)return J;let Z=z.map((Y,X)=>`${a8(Y,X)}: ${Y}`).join(`
264
- `);return`${J}
265
-
266
- ${Z}`}async function nF(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 pF(){if(process.platform==="darwin"){let J=await nF(["osascript","-e","get POSIX path of (the clipboard as \xABclass furl\xBB)"]),z=J?$F(J):null;if(z)return z;let Z=iF();return await nF(["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&&$8(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=iF();return Px(Y,Z),Y}}catch{}return null}return null}function iF(){let J=MV();wx(J,{recursive:!0});let z=new Date().toISOString().slice(0,10).replaceAll("-","");return vx(J,`paste-${z}-${lF(4).toString("hex")}.png`)}var mx,cx;var _8=C(()=>{p1();mx=/\.(png|jpe?g|gif|webp|pdf)$/i,cx=/\.pdf$/i});function ix(J){let z=[],Z=J.name;if(Z)z.push(Z);if(Z==="return")z.push("enter");if(Z==="enter")z.push("return");if(Z==="backspace"&&J.raw==="\b"&&!J.meta&&!J.option)z.push("ctrl+h");if(Z==="linefeed"&&!J.meta&&!J.option)z.push("ctrl+j");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 r8(J,z){if(z.defaultPrevented)return!1;if(p8)return!1;let Z=J.slice(),Y=ix(z);p8=!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{p8=!1}}var p8=!1;function $x(){if(o8)return;let J=GJ();if(!J)throw Error("useBindings: no renderer in scope; call inside a component rendered by @opentui/solid.");o8=J.keyInput,rF=(z)=>{r8(Rj,z)},o8.on("keypress",rF)}function M1(J){$x();let z=lx++,Z={config:J,id:z};d0(()=>{J()}),Rj.push(Z),C1(()=>{let Y=Rj.findIndex((X)=>X.id===z);if(Y>=0)Rj.splice(Y,1)})}var lx=1,Rj,o8=null,rF=null;var SJ=C(()=>{P();D1();Rj=[]});function gj(){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 C1(()=>{for(let Y of J)clearTimeout(Y);J.clear()}),{set:z,clear:Z}}var s8=C(()=>{D1()});import{RGBA as oF}from"@opentui/core";function px(J){let z=rz(),Z=w0(),{theme:Y}=Z,X=GJ(),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?_x:ax,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 rx(){let[J,z]=oz({stack:[],size:"medium"}),Z=GJ(),Y=null,X=gj();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 M1(()=>({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?.();mq(()=>{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 tF(J){let z=rx();return k(sF.Provider,{value:z,get children(){return[g0(()=>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 _1(){let J=aJ(sF);if(!J)throw Error("useDialog must be used within a DialogProvider");return J}var ax,_x,sF;var sJ=C(()=>{P();P();P();P();P();P();P();P();D1();rX();c1();SJ();s8();ax=oF.fromInts(0,0,0,128),_x=oF.fromInts(0,0,0,64);sF=mz()});import{spawnSync as t8}from"child_process";import*as J3 from"fs";function eF(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 z3(J){let z=J.trim();if(!z)return"repo path is required";let Z;try{Z=J3.statSync(z)}catch{return`path does not exist: ${z}`}if(!Z.isDirectory())return`not a directory: ${z}`;try{if(t8("git",["rev-parse","--git-dir"],{cwd:z,encoding:"utf-8",timeout:2000,stdio:["ignore","pipe","ignore"]}).status!==0)return eF(z)}catch{return eF(z)}return null}function SQ(J){if(!J)return null;try{let z=t8("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 Z3(J){if(!J)return[];try{let z=t8("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 uz="main";var Nj=()=>{};import*as Y3 from"fs";import*as Cj from"os";function LJ(J){if(J==="~")return Cj.homedir();if(J.startsWith("~/"))return Cj.homedir()+J.slice(1);return J}function e8(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 JW(J){if(!J)return[];try{let z=Y3.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 zW(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 yQ(J,z,Z){let Y=z+Z;if(J.startsWith("~")){let X=Cj.homedir();if(Y===X)return"~";if(Y.startsWith(`${X}/`))return`~${Y.slice(X.length)}`}return Y}var bj=()=>{};import{spawn as ox}from"child_process";import*as nY from"fs";import*as TQ from"path";function X3(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 G3(J){let z=J.trim();if(!z)return F("newTask.error.gitUrlRequired");let Z=z.includes("://"),Y=z.includes("@")&&z.includes(":"),X=z.includes("/");if(!Z&&!Y&&!X)return F("newTask.error.gitUrlInvalid",{url:z});return null}function ZW(J,z){let Z=z.trim();if(!Z)return F("newTask.error.folderRequired");if(Z.includes("/")||Z.includes("\\"))return F("newTask.error.folderHasSeparator");let Y=J.trim();if(!Y)return F("newTask.error.parentRequired");let X=LJ(Y),G;try{G=nY.statSync(X)}catch{return F("newTask.error.parentNotFound",{path:X})}if(!G.isDirectory())return F("newTask.error.parentNotDir",{path:X});let q=TQ.join(X,Z);if(nY.existsSync(q))return F("newTask.error.targetExists",{path:q});return null}function Q3(J,z){return TQ.join(LJ(J.trim()),z.trim())}function q3(J,z){let Z=z.trim();if(!Z)return z;let Y=LJ(J.trim());if(!Y)return z;try{if(!nY.statSync(Y).isDirectory())return z}catch{return z}if(!nY.existsSync(TQ.join(Y,Z)))return Z;for(let X=2;X<1000;X++){let G=`${Z}-${X}`;if(!nY.existsSync(TQ.join(Y,G)))return G}return Z}function H3(J,z,Z){return new Promise((Y)=>{let X="";try{let G=ox("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 j3=C(()=>{BJ();bj()});function YW(J){if(J==="existing")return"clone";if(J==="clone")return"adopt";return"existing"}function XW(J){if(J==="existing")return"adopt";if(J==="clone")return"existing";return"clone"}function B3(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 xQ(J){return!/\S/u.test(J)}function GW(J,z="existing"){if(J==="confirm")return"tabs";if(J==="tabs")return"engine";if(J==="engine")return QW(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 QW(J){if(J==="clone")return"cloneUrl";if(J==="adopt")return"adoptFilter";return"repo"}function f3(J,z){let Z=z.trim();if(!Z)return J;return J.filter((Y)=>nQ(Z,Y.path))}function W3(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 V3(J,z){let Z=z.trim().toLowerCase();if(!Z)return J;return J.filter((Y)=>Y.toLowerCase().includes(Z))}function U3(J,z){let Z=z.trim().toLowerCase();if(!Z)return J;return J.filter((Y)=>Y.toLowerCase().includes(Z))}function uQ(J,z,Z=sx){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 sz(J,z){if(z<=0)return 0;return Math.max(0,Math.min(z-1,J))}function K3(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||uz}var sx=8;var qW=C(()=>{XB();Nj()});import{TextAttributes as Bz}from"@opentui/core";function D3(J){let z=_1(),{theme:Z}=w0(),[Y,X]=s("existing"),G=()=>{let $=J.availableVendors;return $&&$.length>0?$:s1},q=(()=>{let $=G(),A0=J.defaultVendor??"claude";return $.includes(A0)?A0:$[0]??"claude"})(),[H,j]=s(q),[B,V]=s("tabs"),[f,U]=s(J.defaultRepo),[L,O]=s(SQ(LJ(J.defaultRepo.trim()))??uz),[A,g]=s(!1),[E,h]=s(""),[I,N]=s(J.defaultCloneParent?.trim()?J.defaultCloneParent:"~/"),[M,y]=s(""),[c,d]=s(!1),[i,t]=s(uz),[X0,G0]=s(!1),[f0,_]=s(""),M0=D0(()=>W3(J.defaultRepo,J.savedRepos)),b=D0(()=>B3(f(),M0())),p=D0(()=>e8(f())),w=D0(()=>JW(p().base)),R=D0(()=>zW(w(),p().filter)),e=D0(()=>V3(M0(),f())),T=D0(()=>b()==="browse"?R():e()),[a,q0]=s(0),H0=D0(()=>uQ(T(),a())),[j0,y0]=s(!1),i0=D0(()=>Z3(LJ(f().trim()))),N0=D0(()=>U3(i0(),L())),[J1,b0]=s(0),p0=D0(()=>uQ(N0(),J1())),E0=D0(()=>e8(I())),T0=D0(()=>JW(E0().base)),G1=D0(()=>zW(T0(),E0().filter)),[m,B0]=s(0),z0=D0(()=>uQ(G1(),m())),[x0,n]=s(!1),[V0,k0]=s(""),[l0,Y1]=s(0),[$0,Q1]=s(new Set),[R1]=KY(()=>Y()==="adopt"?LJ(f().trim()):null,async($)=>J.discoverAdoptable?await J.discoverAdoptable($):[]),O1=D0(()=>f3(R1()??[],V0())),Z0=D0(()=>uQ(O1().map(($)=>$.path),l0())),Q0=D0(()=>{let $=Z0();return O1().slice($.start,$.start+$.items.length)});d0(()=>{O1(),Y1(($)=>sz($,O1().length))}),d0(($)=>{let A0=LJ(f().trim());if($!==void 0&&A0!==$)Q1(new Set),Y1(0);return A0});function K0($){Q1((A0)=>{let J0=new Set(A0);if(J0.has($))J0.delete($);else J0.add($);return J0})}function R0(){let $=O1()[l0()];if($)K0($.path)}d0(()=>{N0(),b0(0)}),d0(()=>{let $=LJ(f().trim());if(!$)return;if(A())return;let A0=SQ($);if(A0)O(A0)}),d0(()=>{T(),q0(0)}),d0(()=>{G1(),B0(0)}),d0(()=>{let $=E(),A0=I();if(c())return;let J0=X3($);y(q3(A0,J0))});let[U0,P0]=s(null);d0(()=>{f(),E(),I(),M(),V0(),P0(null)});function C0(){let $=LJ(f().trim());if(!$)return;let A0=z3($);if(A0){P0(A0),V("repo");return}let J0=L().trim()||uz;J.onSubmit({repo:$,baseRef:J0,vendor:H()}),z.clear()}async function r0(){if(X0())return;let $=G3(E());if($){P0($),V("cloneUrl");return}let A0=ZW(I(),M());if(A0){P0(A0);let g1=M().trim(),v1=!(!g1||g1.includes("/")||g1.includes("\\"))&&ZW(I(),"__kobe_probe__")!=null;V(v1?"cloneParent":"cloneFolder");return}let J0=Q3(I(),M());G0(!0),_(F("newTask.clone.progressInto",{target:J0}));let x=await H3(E().trim(),J0,(g1)=>{_(g1)});if(G0(!1),!x.ok){P0(F("newTask.error.cloneFailed",{error:x.error})),V("cloneUrl");return}let L0=i().trim()||uz,T1=LJ(I().trim());J.onSubmit({repo:x.path,baseRef:L0,vendor:H(),cloned:{parentDir:T1}}),z.clear()}function I0(){let $=O1();if($.length===0){P0(F("newTask.error.noAdoptable"));return}let A0=$0(),J0=A0.size>0?$.filter((x)=>A0.has(x.path)):$.slice(l0(),l0()+1);if(J0.length===0)return;J.onSubmit({mode:"adopt",repo:LJ(f().trim()),vendor:H(),adopt:J0.map((x)=>({worktreePath:x.path,branch:x.branch}))}),z.clear()}function u0(){if(Y()==="clone"){r0();return}if(Y()==="adopt"){I0();return}C0()}function q1($){if(X0())return;if($===Y())return;X($),V(QW($)),P0(null)}function W1($){if(X0())return;let A0=$===1?YW(Y()):XW(Y());if(A0===Y())return;X(A0),P0(null),V("tabs")}function V1($){j((A0)=>$===1?bZ(G(),A0):QB(G(),A0))}function H1(){if(!f().trim()&&b()==="saved"){let A0=T()[0];if(A0){U(A0),V("baseRef");return}}if(b()==="browse"){let J0=R()[a()],x=p();if(J0){U(yQ(f(),x.base,J0)),q0(0),y0(!0),V("baseRef");return}V("baseRef");return}let $=T()[a()];if($){U($),V("baseRef");return}V("baseRef")}function S($){let J0=T()[$];if(!J0)return;if(b()==="browse"){let x=p();U(yQ(f(),x.base,J0)),q0($),y0(!0),V("baseRef");return}U(J0),q0($),V("baseRef")}function F0(){let A0=G1()[m()],J0=E0();if(A0){N(yQ(I(),J0.base,A0)),B0(0),n(!0),V("cloneFolder");return}V("cloneFolder")}function U1($){let J0=G1()[$];if(!J0)return;let x=E0();N(yQ(I(),x.base,J0)),B0($),n(!0),V("cloneFolder")}let L1=()=>{let $=O1();if($.length===0)return;let A0=$.every((J0)=>$0().has(J0.path));Q1(A0?new Set:new Set($.map((J0)=>J0.path)))};M1(()=>({bindings:[{key:"tab",cmd:()=>V(($)=>GW($,Y()))},{key:"ctrl+]",cmd:()=>q1(YW(Y()))},{key:"ctrl+[",cmd:()=>q1(XW(Y()))},{key:"ctrl+e",cmd:()=>j(($)=>bZ(G(),$))},{key:"up",cmd:()=>{if(X0())return;if(Y()==="existing"&&B()==="repo"){let $=T();if($.length===0)return;q0(sz(a()-1,$.length));return}if(Y()==="existing"&&B()==="baseRef"){let $=N0();if($.length===0)return;b0(sz(J1()-1,$.length));return}if(Y()==="clone"&&B()==="cloneParent"){let $=G1();if($.length===0)return;B0(sz(m()-1,$.length));return}if(Y()==="adopt"){let $=O1();if($.length===0)return;Y1(sz(l0()-1,$.length))}}},{key:"down",cmd:()=>{if(X0())return;if(Y()==="existing"&&B()==="repo"){let $=T();if($.length===0)return;q0(sz(a()+1,$.length));return}if(Y()==="existing"&&B()==="baseRef"){let $=N0();if($.length===0)return;b0(sz(J1()+1,$.length));return}if(Y()==="clone"&&B()==="cloneParent"){let $=G1();if($.length===0)return;B0(sz(m()+1,$.length));return}if(Y()==="adopt"){let $=O1();if($.length===0)return;Y1(sz(l0()+1,$.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(($)=>GW($,Y()))}]:[],...Y()==="adopt"?[{key:"ctrl+a",cmd:L1}]:[]]})),M1(()=>({enabled:B()==="confirm"&&!X0(),bindings:[{key:"return",cmd:()=>u0()}]}));let c0=($)=>B()===$?Z.primary:Z.textMuted,t0=($)=>B()===$?Bz.BOLD|Bz.UNDERLINE:void 0,h0=($,A0)=>$?A0?Bz.BOLD|Bz.UNDERLINE:Bz.BOLD:void 0;return(()=>{var $=W("box"),A0=W("box"),J0=W("text"),x=W("box"),L0=W("box"),T1=W("text"),g1=W("box"),n1=W("box"),v1=W("text"),fJ=W("box"),dJ=W("text"),B1=W("text");return D($,A0),D($,x),D($,fJ),Q($,"paddingLeft",2),Q($,"paddingRight",2),Q($,"gap",0),D(A0,J0),Q(A0,"flexDirection","row"),K(J0,()=>F("newTask.title")),D(x,L0),Q(x,"gap",1),Q(x,"paddingTop",1),Q(x,"paddingBottom",1),K(x,()=>{let l=()=>B()==="tabs",r=(o)=>o?Z.primary:Z.textMuted;return(()=>{var o=W("box"),v=W("text"),a0=W("text"),v0=W("text");return D(o,v),D(o,a0),D(o,v0),Q(o,"flexDirection","row"),Q(o,"gap",2),Q(v,"onMouseUp",()=>q1("existing")),K(v,(()=>{var O0=g0(()=>Y()==="existing");return()=>O0()?`\u25B8 ${F("newTask.tabs.existing")}`:` ${F("newTask.tabs.existing")}`})()),Q(a0,"onMouseUp",()=>q1("clone")),K(a0,(()=>{var O0=g0(()=>Y()==="clone");return()=>O0()?`\u25B8 ${F("newTask.tabs.clone")}`:` ${F("newTask.tabs.clone")}`})()),Q(v0,"onMouseUp",()=>q1("adopt")),K(v0,(()=>{var O0=g0(()=>Y()==="adopt");return()=>O0()?`\u25B8 ${F("newTask.tabs.adopt")}`:` ${F("newTask.tabs.adopt")}`})()),u((O0)=>{var _0=r(Y()==="existing"),K1=h0(Y()==="existing",l()),b1=r(Y()==="clone"),MJ=h0(Y()==="clone",l()),Vz=r(Y()==="adopt"),NZ=h0(Y()==="adopt",l());return _0!==O0.e&&(O0.e=Q(v,"fg",_0,O0.e)),K1!==O0.t&&(O0.t=Q(v,"attributes",K1,O0.t)),b1!==O0.a&&(O0.a=Q(a0,"fg",b1,O0.a)),MJ!==O0.o&&(O0.o=Q(a0,"attributes",MJ,O0.o)),Vz!==O0.i&&(O0.i=Q(v0,"fg",Vz,O0.i)),NZ!==O0.n&&(O0.n=Q(v0,"attributes",NZ,O0.n)),O0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),o})()},L0),D(L0,T1),D(L0,g1),Q(L0,"gap",0),K(T1,()=>F("newTask.field.engine")),D(g1,n1),D(g1,v1),Q(g1,"flexDirection","row"),Q(g1,"gap",2),K(g1,k(X1,{get each(){return G()},children:(l)=>{let r=()=>H()===l;return(()=>{var o=W("text");return Q(o,"onMouseUp",()=>j(l)),K(o,()=>r()?"\u25B8 ":" ",null),K(o,l,null),u((v)=>{var a0=r()?Z.primary:Z.textMuted,v0=r()?Bz.BOLD:void 0;return a0!==v.e&&(v.e=Q(o,"fg",a0,v.e)),v0!==v.t&&(v.t=Q(o,"attributes",v0,v.t)),v},{e:void 0,t:void 0}),o})()}}),n1),Q(n1,"flexGrow",1),K(v1,()=>F("newTask.hint.engineCycle")),K(x,k(Y0,{get when(){return Y()==="existing"},get children(){return[(()=>{var l=W("box"),r=W("text"),o=W("input");return D(l,r),D(l,o),Q(l,"gap",0),K(r,()=>F("newTask.field.repo")),Q(o,"onInput",(v)=>{y0(!1),U(CJ(v))}),Q(o,"onSubmit",()=>H1()),u((v)=>{var a0=c0("repo"),v0=t0("repo"),O0=f(),_0=J.defaultRepo,K1=B()==="repo";return a0!==v.e&&(v.e=Q(r,"fg",a0,v.e)),v0!==v.t&&(v.t=Q(r,"attributes",v0,v.t)),O0!==v.a&&(v.a=Q(o,"value",O0,v.a)),_0!==v.o&&(v.o=Q(o,"placeholder",_0,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}),l})(),k(Y0,{get when(){return g0(()=>B()==="repo"&&T().length>0)()&&!j0()},get children(){var l=W("box");return Q(l,"gap",0),Q(l,"paddingLeft",2),K(l,k(Y0,{get when(){return H0().start>0},get children(){var r=W("text");return Q(r,"wrapMode","none"),K(r,()=>F("newTask.picker.moreAbove",{count:H0().start})),u((o)=>Q(r,"fg",Z.textMuted,o)),r}}),null),K(l,k(X1,{get each(){return H0().items},children:(r,o)=>{let v=()=>H0().start+o(),a0=()=>v()===a(),v0=()=>b()==="saved"&&r===J.defaultRepo,O0=()=>b()==="saved"&&f().trim()===r,_0=()=>b()==="browse"?"/":"",K1=()=>v0()?` ${F("newTask.hint.currentDir")}`:"";return(()=>{var b1=W("text");return Q(b1,"wrapMode","none"),Q(b1,"onMouseUp",()=>S(v())),K(b1,()=>a0()?"\u25B8 ":" ",null),K(b1,r,null),K(b1,_0,null),K(b1,K1,null),u((MJ)=>{var Vz=a0()?Z.primary:O0()?Z.accent:Z.textMuted,NZ=a0()?Bz.BOLD:void 0;return Vz!==MJ.e&&(MJ.e=Q(b1,"fg",Vz,MJ.e)),NZ!==MJ.t&&(MJ.t=Q(b1,"attributes",NZ,MJ.t)),MJ},{e:void 0,t:void 0}),b1})()}}),null),K(l,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,()=>F("newTask.picker.moreBelow",{count:H0().total-H0().start-H0().items.length})),u((o)=>Q(r,"fg",Z.textMuted,o)),r}}),null),l}}),(()=>{var l=W("box"),r=W("text"),o=W("input");return D(l,r),D(l,o),Q(l,"gap",0),K(r,()=>F("newTask.field.fromBranch")),Q(o,"placeholder",uz),Q(o,"onInput",(v)=>{g(!0),O(CJ(v))}),Q(o,"onSubmit",()=>{O(K3(L(),N0(),J1())),g(!0),C0()}),u((v)=>{var a0=c0("baseRef"),v0=t0("baseRef"),O0=L(),_0=B()==="baseRef";return a0!==v.e&&(v.e=Q(r,"fg",a0,v.e)),v0!==v.t&&(v.t=Q(r,"attributes",v0,v.t)),O0!==v.a&&(v.a=Q(o,"value",O0,v.a)),_0!==v.o&&(v.o=Q(o,"focused",_0,v.o)),v},{e:void 0,t:void 0,a:void 0,o:void 0}),l})(),k(Y0,{get when(){return g0(()=>B()==="baseRef"&&N0().length===0)()&&U0()==null},get children(){var l=W("box"),r=W("text");return D(l,r),Q(l,"gap",0),Q(l,"paddingLeft",2),Q(l,"paddingBottom",1),Q(r,"wrapMode","none"),K(r,(()=>{var o=g0(()=>i0().length===0);return()=>o()?F("newTask.hint.noBranchesFound"):F("newTask.hint.noMatchBranch")})()),u((o)=>Q(r,"fg",Z.textMuted,o)),l}}),k(Y0,{get when(){return g0(()=>B()==="baseRef")()&&N0().length>0},get children(){var l=W("box");return Q(l,"gap",0),Q(l,"paddingLeft",2),Q(l,"paddingBottom",1),K(l,k(Y0,{get when(){return p0().start>0},get children(){var r=W("text");return Q(r,"wrapMode","none"),K(r,()=>F("newTask.picker.moreAbove",{count:p0().start})),u((o)=>Q(r,"fg",Z.textMuted,o)),r}}),null),K(l,k(X1,{get each(){return p0().items},children:(r,o)=>{let v=()=>p0().start+o(),a0=()=>v()===J1(),v0=()=>L().trim()===r;return(()=>{var O0=W("text");return Q(O0,"wrapMode","none"),Q(O0,"onMouseUp",()=>{O(r),g(!0),b0(v()),V("confirm")}),K(O0,()=>a0()?"\u25B8 ":" ",null),K(O0,r,null),u((_0)=>{var K1=a0()?Z.primary:v0()?Z.accent:Z.textMuted,b1=a0()?Bz.BOLD:void 0;return K1!==_0.e&&(_0.e=Q(O0,"fg",K1,_0.e)),b1!==_0.t&&(_0.t=Q(O0,"attributes",b1,_0.t)),_0},{e:void 0,t:void 0}),O0})()}}),null),K(l,k(Y0,{get when(){return p0().start+p0().items.length<p0().total},get children(){var r=W("text");return Q(r,"wrapMode","none"),K(r,()=>F("newTask.picker.moreBelow",{count:p0().total-p0().start-p0().items.length})),u((o)=>Q(r,"fg",Z.textMuted,o)),r}}),null),l}})]}}),null),K(x,k(Y0,{get when(){return Y()==="clone"},get children(){return[(()=>{var l=W("box"),r=W("text"),o=W("input");return D(l,r),D(l,o),Q(l,"gap",0),K(r,()=>F("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 a0=c0("cloneUrl"),v0=t0("cloneUrl"),O0=E(),_0=B()==="cloneUrl";return a0!==v.e&&(v.e=Q(r,"fg",a0,v.e)),v0!==v.t&&(v.t=Q(r,"attributes",v0,v.t)),O0!==v.a&&(v.a=Q(o,"value",O0,v.a)),_0!==v.o&&(v.o=Q(o,"focused",_0,v.o)),v},{e:void 0,t:void 0,a:void 0,o:void 0}),l})(),(()=>{var l=W("box"),r=W("text"),o=W("input");return D(l,r),D(l,o),Q(l,"gap",0),K(r,()=>F("newTask.field.parentDir")),Q(o,"placeholder","~/"),Q(o,"onInput",(v)=>{n(!1),N(CJ(v))}),Q(o,"onSubmit",()=>F0()),u((v)=>{var a0=c0("cloneParent"),v0=t0("cloneParent"),O0=I(),_0=B()==="cloneParent";return a0!==v.e&&(v.e=Q(r,"fg",a0,v.e)),v0!==v.t&&(v.t=Q(r,"attributes",v0,v.t)),O0!==v.a&&(v.a=Q(o,"value",O0,v.a)),_0!==v.o&&(v.o=Q(o,"focused",_0,v.o)),v},{e:void 0,t:void 0,a:void 0,o:void 0}),l})(),k(Y0,{get when(){return B()==="cloneParent"},get children(){var l=W("box"),r=W("text");return D(l,r),Q(l,"paddingLeft",2),Q(r,"wrapMode","none"),K(r,()=>F("newTask.hint.remembered")),u((o)=>Q(r,"fg",Z.textMuted,o)),l}}),k(Y0,{get when(){return g0(()=>B()==="cloneParent"&&G1().length>0)()&&!x0()},get children(){var l=W("box");return Q(l,"gap",0),Q(l,"paddingLeft",2),K(l,k(Y0,{get when(){return z0().start>0},get children(){var r=W("text");return Q(r,"wrapMode","none"),K(r,()=>F("newTask.picker.moreAbove",{count:z0().start})),u((o)=>Q(r,"fg",Z.textMuted,o)),r}}),null),K(l,k(X1,{get each(){return z0().items},children:(r,o)=>{let v=()=>z0().start+o(),a0=()=>v()===m();return(()=>{var v0=W("text"),O0=S0("/");return D(v0,O0),Q(v0,"wrapMode","none"),Q(v0,"onMouseUp",()=>U1(v())),K(v0,()=>a0()?"\u25B8 ":" ",O0),K(v0,r,O0),u((_0)=>{var K1=a0()?Z.primary:Z.textMuted,b1=a0()?Bz.BOLD:void 0;return K1!==_0.e&&(_0.e=Q(v0,"fg",K1,_0.e)),b1!==_0.t&&(_0.t=Q(v0,"attributes",b1,_0.t)),_0},{e:void 0,t:void 0}),v0})()}}),null),K(l,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,()=>F("newTask.picker.moreBelow",{count:z0().total-z0().start-z0().items.length})),u((o)=>Q(r,"fg",Z.textMuted,o)),r}}),null),l}}),(()=>{var l=W("box"),r=W("text"),o=W("input");return D(l,r),D(l,o),Q(l,"gap",0),K(r,()=>F("newTask.field.folderName")),Q(o,"onInput",(v)=>{d(!0),y(CJ(v))}),Q(o,"onSubmit",()=>V("cloneBaseRef")),u((v)=>{var a0=c0("cloneFolder"),v0=t0("cloneFolder"),O0=M(),_0=F("newTask.placeholder.folderName"),K1=B()==="cloneFolder";return a0!==v.e&&(v.e=Q(r,"fg",a0,v.e)),v0!==v.t&&(v.t=Q(r,"attributes",v0,v.t)),O0!==v.a&&(v.a=Q(o,"value",O0,v.a)),_0!==v.o&&(v.o=Q(o,"placeholder",_0,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}),l})(),(()=>{var l=W("box"),r=W("text"),o=W("input");return D(l,r),D(l,o),Q(l,"gap",0),K(r,()=>F("newTask.field.baseBranch")),Q(o,"placeholder",uz),Q(o,"onInput",(v)=>t(CJ(v))),Q(o,"onSubmit",()=>void r0()),u((v)=>{var a0=c0("cloneBaseRef"),v0=t0("cloneBaseRef"),O0=i(),_0=B()==="cloneBaseRef";return a0!==v.e&&(v.e=Q(r,"fg",a0,v.e)),v0!==v.t&&(v.t=Q(r,"attributes",v0,v.t)),O0!==v.a&&(v.a=Q(o,"value",O0,v.a)),_0!==v.o&&(v.o=Q(o,"focused",_0,v.o)),v},{e:void 0,t:void 0,a:void 0,o:void 0}),l})(),k(Y0,{get when(){return X0()},get children(){var l=W("box"),r=W("text");return D(l,r),Q(l,"gap",0),Q(l,"paddingLeft",2),Q(r,"wrapMode","none"),K(r,()=>f0()||F("newTask.clone.progressFallback")),u((o)=>Q(r,"fg",Z.textMuted,o)),l}})]}}),null),K(x,k(Y0,{get when(){return Y()==="adopt"},get children(){return[(()=>{var l=W("box"),r=W("text"),o=W("input");return D(l,r),D(l,o),Q(l,"gap",0),K(r,()=>F("newTask.field.adoptFilter")),Q(o,"onInput",(v)=>k0(CJ(v))),Q(o,"onSubmit",()=>R0()),u((v)=>{var a0=c0("adoptFilter"),v0=t0("adoptFilter"),O0=V0(),_0=F("newTask.placeholder.adoptFilter"),K1=B()==="adoptFilter";return a0!==v.e&&(v.e=Q(r,"fg",a0,v.e)),v0!==v.t&&(v.t=Q(r,"attributes",v0,v.t)),O0!==v.a&&(v.a=Q(o,"value",O0,v.a)),_0!==v.o&&(v.o=Q(o,"placeholder",_0,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}),l})(),(()=>{var l=W("box"),r=W("text");return D(l,r),Q(l,"paddingLeft",2),Q(r,"wrapMode","none"),K(r,()=>F("newTask.adopt.repoLine",{path:LJ(f().trim())||F("newTask.adopt.repoNone")})),u((o)=>Q(r,"fg",Z.textMuted,o)),l})(),k(Y0,{get when(){return R1.loading},get children(){var l=W("box"),r=W("text");return D(l,r),Q(l,"paddingLeft",2),Q(r,"wrapMode","none"),K(r,()=>F("newTask.hint.scanningWorktrees")),u((o)=>Q(r,"fg",Z.textMuted,o)),l}}),k(Y0,{get when(){return g0(()=>!R1.loading)()&&O1().length===0},get children(){var l=W("box"),r=W("text");return D(l,r),Q(l,"paddingLeft",2),Q(r,"wrapMode","none"),K(r,(()=>{var o=g0(()=>(R1()??[]).length===0);return()=>o()?F("newTask.adopt.noUnlinked"):F("newTask.adopt.noMatch")})()),u((o)=>Q(r,"fg",Z.textMuted,o)),l}}),k(Y0,{get when(){return O1().length>0},get children(){var l=W("box"),r=W("text");return D(l,r),Q(l,"gap",0),Q(l,"paddingLeft",2),K(l,k(Y0,{get when(){return Z0().start>0},get children(){var o=W("text");return Q(o,"wrapMode","none"),K(o,()=>F("newTask.picker.moreAbove",{count:Z0().start})),u((v)=>Q(o,"fg",Z.textMuted,v)),o}}),r),K(l,k(X1,{get each(){return Q0()},children:(o,v)=>{let a0=()=>Z0().start+v(),v0=()=>a0()===l0(),O0=()=>$0().has(o.path),_0=()=>[o.dirty?"dirty":"",o.kobeManaged?"":"external"].filter(Boolean).join(",");return(()=>{var K1=W("text");return Q(K1,"wrapMode","none"),Q(K1,"onMouseUp",()=>{Y1(a0()),K0(o.path)}),K(K1,()=>v0()?"\u25B8 ":" ",null),K(K1,()=>O0()?"[x] ":"[ ] ",null),K(K1,()=>o.branch,null),K(K1,(()=>{var b1=g0(()=>!!_0());return()=>b1()?` (${_0()})`:""})(),null),u((b1)=>{var MJ=v0()?Z.primary:O0()?Z.accent:Z.textMuted,Vz=v0()?Bz.BOLD:void 0;return MJ!==b1.e&&(b1.e=Q(K1,"fg",MJ,b1.e)),Vz!==b1.t&&(b1.t=Q(K1,"attributes",Vz,b1.t)),b1},{e:void 0,t:void 0}),K1})()}}),r),K(l,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,()=>F("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=g0(()=>$0().size>0);return()=>o()?F("newTask.adopt.hintSelected",{count:$0().size}):F("newTask.adopt.hintDefault")})()),u((o)=>Q(r,"fg",Z.textMuted,o)),l}})]}}),null),K(x,k(Y0,{get when(){return U0()},get children(){var l=W("text"),r=S0("\u203B ");return D(l,r),Q(l,"wrapMode","word"),K(l,U0,null),u((o)=>Q(l,"fg",Z.error,o)),l}}),null),D(fJ,dJ),D(fJ,B1),Q(fJ,"flexDirection","row"),Q(fJ,"justifyContent","space-between"),Q(fJ,"alignItems","center"),Q(fJ,"paddingTop",1),Q(fJ,"paddingBottom",1),K(dJ,()=>F("newTask.hint.legend")),Q(B1,"onMouseUp",()=>u0()),K(B1,(()=>{var l=g0(()=>!!X0());return()=>l()?F("newTask.button.cloning"):g0(()=>B()==="confirm")()?F("newTask.button.createFocused"):F("newTask.button.create")})()),u((l)=>{var r=Bz.BOLD,o=Z.text,v=c0("engine"),a0=t0("engine"),v0=Z.textMuted,O0=Z.textMuted,_0=B()==="confirm"?Z.primary:Z.text,K1=B()==="confirm"?Bz.BOLD:void 0;return r!==l.e&&(l.e=Q(J0,"attributes",r,l.e)),o!==l.t&&(l.t=Q(J0,"fg",o,l.t)),v!==l.a&&(l.a=Q(T1,"fg",v,l.a)),a0!==l.o&&(l.o=Q(T1,"attributes",a0,l.o)),v0!==l.i&&(l.i=Q(v1,"fg",v0,l.i)),O0!==l.n&&(l.n=Q(dJ,"fg",O0,l.n)),_0!==l.s&&(l.s=Q(B1,"fg",_0,l.s)),K1!==l.h&&(l.h=Q(B1,"attributes",K1,l.h)),l},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0}),$})()}var L3=C(()=>{P();P();P();P();P();P();P();P();BJ();t1();D1();c1();Nj();SJ();bj();sJ();j3();qW()});function tx(J,z,Z,Y){return new Promise((X)=>{J.replace(()=>k(D3,{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 kj;var JG=C(()=>{P();L3();qW();kj={show:tx}});function F3(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 M3}from"@opentui/core";function ex(J){let z=_1(),{theme:Z}=w0(),[Y,X]=s("prompt"),[G,q]=s(""),[H,j]=s(J.defaultVendor),[B,V]=s(J.defaultBaseRef),[f,U]=s([]);lL((h)=>{let I=aF(new TextDecoder().decode(h.bytes));if(!I)return;h.preventDefault(),U((N)=>[...N,...I.filter((M)=>!N.includes(M))])});function L(){pF().then((h)=>{if(h)U((I)=>I.includes(h)?I:[...I,h])})}function O(h){let I=Ij.indexOf(Y());X(Ij[(I+h+Ij.length)%Ij.length]??"prompt")}function A(h){let I=J.engines;if(I.length===0)return;if(h>0){j((M)=>bZ(I,M));return}let N=Math.max(0,I.indexOf(H()));j(I[(N-1+I.length)%I.length]??H())}function g(){if(xQ(G())){X("prompt");return}J.onSubmit({prompt:G().trim(),vendor:H(),baseRef:B().trim()||J.defaultBaseRef,attachments:f()}),z.clear()}M1(()=>({enabled:!0,bindings:F3(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"),M=W("text"),y=W("box"),c=W("text"),d=W("input"),i=W("box"),t=W("text"),X0=W("box"),G0=W("text"),f0=W("input"),_=W("box"),M0=W("text");return D(h,I),D(h,y),D(h,i),D(h,X0),D(h,_),Q(h,"paddingLeft",2),Q(h,"paddingRight",2),Q(h,"gap",1),D(I,N),D(I,M),Q(I,"flexDirection","row"),Q(I,"justifyContent","space-between"),K(N,()=>F("quickTask.title",{repoLabel:J.repoLabel})),Q(M,"onMouseUp",()=>J.onCancel()),K(M,()=>F("quickTask.esc")),D(y,c),D(y,d),Q(y,"gap",0),K(c,()=>F("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(X1,{get each(){return f()},children:(p,w)=>(()=>{var R=W("text");return Q(R,"onMouseUp",()=>U((e)=>e.filter((T)=>T!==p))),K(R,()=>a8(p,w())),u((e)=>Q(R,"fg",Z.primary,e)),R})()})),b}}),i),D(i,t),Q(i,"flexDirection","row"),Q(i,"gap",2),K(t,()=>F("quickTask.engineLabel")),K(i,k(X1,{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?M3.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,G0),D(X0,f0),Q(X0,"gap",0),K(G0,()=>F("quickTask.branchLabel")),Q(f0,"onInput",(b)=>V(CJ(b))),Q(f0,"onSubmit",()=>g()),D(_,M0),Q(_,"paddingBottom",1),K(M0,()=>F("quickTask.legend")),u((b)=>{var p=M3.BOLD,w=Z.text,R=Z.textMuted,e=E("prompt"),T=G(),a=F("quickTask.promptPlaceholder"),q0=Y()==="prompt",H0=E("engine"),j0=E("branch"),y0=B(),i0=J.defaultBaseRef,N0=Y()==="branch",J1=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(M,"fg",R,b.a)),e!==b.o&&(b.o=Q(c,"fg",e,b.o)),T!==b.i&&(b.i=Q(d,"value",T,b.i)),a!==b.n&&(b.n=Q(d,"placeholder",a,b.n)),q0!==b.s&&(b.s=Q(d,"focused",q0,b.s)),H0!==b.h&&(b.h=Q(t,"fg",H0,b.h)),j0!==b.r&&(b.r=Q(G0,"fg",j0,b.r)),y0!==b.d&&(b.d=Q(f0,"value",y0,b.d)),i0!==b.l&&(b.l=Q(f0,"placeholder",i0,b.l)),N0!==b.u&&(b.u=Q(f0,"focused",N0,b.u)),J1!==b.c&&(b.c=Q(M0,"fg",J1,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 Ju(J,z){return new Promise((Z)=>{J.replace(()=>k(ex,_L(z,{onSubmit:(Y)=>Z(Y),onCancel:()=>Z(void 0)})),()=>Z(void 0)),J.setSize("medium")})}var Ij,O3;var A3=C(()=>{P();P();P();P();P();P();P();P();D1();t1();c1();BJ();_8();SJ();sJ();JG();Ij=["prompt","engine","branch"];O3={show:Ju}});async function Sj(J={}){let z=J.logTag??"orch-connect",Z=J.connect??Hz,Y=null;try{let X=await Z();if(!X)return GZ(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 HW=C(()=>{qY();IJ();eZ()});function R3(J){let[z,Z]=s(J.initial??"sidebar"),[Y,X]=s(0),G=GJ();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=(yj.indexOf(z())+f+yj.length)%yj.length;q(yj[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(zu.Provider,{value:V,get children(){return J.children}})}var yj,zu;var g3=C(()=>{P();P();D1();yj=["sidebar","workspace","files","terminal"],zu=mz(null)});function N3(){for(let J of JY){let z=Zu.get(J.id);if(!z)continue;let Z=J;Z.keys=[...z.keys],Z.hint=z.hint?{...z.hint}:void 0}}function C3(){Yu((J)=>J+1)}function BW(J){return Xu.get(J)}function Gu(J){return BW(J)?.keys??[]}function zY(J){let z=[];for(let Z in J){let Y=J[Z];if(!Y)continue;let X=Gu(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 JY,Zu,jW,Yu,Xu;var zG=C(()=>{D1();JY=[{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"}}],Zu=new Map(JY.map((J)=>[J.id,{keys:[...J.keys],hint:J.hint?{...J.hint}:void 0}]));[jW,Yu]=s(0);Xu=new Map(JY.map((J)=>[J.id,J]))});function Tj(){if(ZY)return ZY;let J=sq();if(!J.exists)return ZY={path:J.path,exists:!1,applied:[],warnings:[]},ZY;let z=[...J.warnings],Z=eq(J.doc,process.platform,{chordOptsFor:x9});z.push(...Z.warnings);let Y=Z.entries.filter((H)=>H.id.startsWith("tmux.")),X=Z.entries.filter((H)=>!H.id.startsWith("tmux.")),G=XK(JY,X);z.push(...G.warnings);let q=[...G.applied];if(Y.length>0){let H=T9(Y);z.push(...H.warnings);for(let j of H.overridden){if(j===dz){q.push({id:j,keys:H.focus.map((f)=>f?.chord??"").filter((f)=>f!==""),defaultKeys:mZ});continue}let B=H.binds[j];q.push({id:j,keys:B?[B.chord]:[],defaultKeys:[NY[j]]});let V=JY.find((f)=>f.id===j);if(V?.hint)V.hint.keys=B?`${UX(j)?"prefix ":""}${B.chord}`:"\u2014"}}for(let H of z)console.warn(`[kobe/keybindings] ${H}`);return ZY={path:J.path,exists:!0,applied:q,warnings:z},ZY}function b3(){return ZY??Tj()}function k3(){ZY=null,YK(),HK(),N3();let J=Tj();return C3(),J}var ZY=null;var fW=C(()=>{S9();ZH();JH();zG()});var Qu=250,ZG,I3;var EQ=C(()=>{rX();Pz();m8();({use:ZG,provider:I3}=Aj({name:"KV",init:()=>{let[J,z]=oz(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 IZ(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")},Qu)}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{TV({})}catch(H){console.error("[kobe] kv clear write failed:",H)}}};return q}}))});var xj="../pulse-n3cq1btw.wav";var S3=()=>{};import{existsSync as Hu,mkdirSync as ju}from"fs";import{tmpdir as Bu}from"os";import{basename as fu,isAbsolute as Wu,join as WW,resolve as Vu}from"path";function Ku(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 Du(){if(uj!==void 0)return uj;let z=(process.env.PATH??"").split(":").filter(Boolean);return uj=Uu.find((Z)=>z.some((Y)=>Hu(WW(Y,Z))))??null,uj}async function Lu(){return x3??=(async()=>{ju(T3,{recursive:!0});let J=WW(T3,fu(y3)),z=Bun.file(J);if(await z.exists())return J;return await Bun.write(z,Bun.file(y3)),J})(),x3}function u3(J=0.4){let z=Du();if(!z)return;Lu().then((Z)=>{try{Bun.spawn(Ku(z,Z,J),{stdin:"ignore",stdout:"ignore",stderr:"ignore"}).unref?.()}catch{}}).catch(()=>{return})}var y3,T3,Uu,uj,x3;var E3=C(()=>{S3();y3=Wu(xj)?xj:Vu(import.meta.dir,xj),T3=WW(Bu(),"kobe-sfx"),Uu=["ffplay","mpv","mpg123","mpg321","mplayer","afplay","play","omxplayer","aplay","cmdmp3","cvlc","powershell.exe"]});function w3(J,z){return`${J}:${z}`}function h3(J){let z=ZG(),[Z,Y]=s([]),[X,G]=s(new Map),q=gj(),H=0;function j(U){if(G((O)=>{let A=new Map(O),g=w3(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{}u3()}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),Fu)}}function B(U){Y((L)=>L.filter((O)=>O.id!==U))}function V(U,L){G((O)=>{let A=w3(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(P3.Provider,{value:f,get children(){return J.children}})}function Ej(){let J=aJ(P3);if(!J)throw Error("useNotifications must be used within a NotificationsProvider");return J}var Fu=4500,P3;var wj=C(()=>{P();D1();s8();E3();EQ();P3=mz()});function VW(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=Ou(z.focusAccent);if(Z&&Z!==J.focusAccent())J.setFocusAccent(Z)}}function Ou(J){if(J===null)return"primary";return Mu.includes(J)?J:null}var Mu;var v3=C(()=>{Mu=["primary","success","info"]});function Ru(J,z=Date.now){let Z=Number.NEGATIVE_INFINITY,Y=!0;return async()=>{if(z()-Z<Au)return Y;Z=z();try{let X=await J(),G=Number.parseInt(X.stdout.trim(),10);Y=X.code!==0||Number.isNaN(G)?!0:G>0}catch{Y=!0}return Y}}var Au=3000,Ez;var YG=C(()=>{w1();Ez=Ru(()=>m0(["display-message","-p","#{session_attached}"]))});import{readFileSync as gu}from"fs";function m3(J){try{let z=JSON.parse(gu(eJ(),"utf8")),Z=typeof z.activeTheme==="string"&&bQ(z.activeTheme)?z.activeTheme:J,Y=z.transparentBackground===!0,X=typeof z.focusAccent==="string"&&dY.includes(z.focusAccent)?z.focusAccent:null,G=kQ(z[Pj])?z[Pj]:tX;return{theme:Z,transparent:Y,focusAccent:X,locale:G}}catch{return{theme:J,transparent:!1,focusAccent:null,locale:tX}}}var Pj="locale";var UW=C(()=>{p1();c1();eX()});function Cu(J){if(J)Gq(J);rV(),Tj();for(let{name:z,theme:Z}of dG())d8(z,Z)}function bu(J){let z={backgroundColor:"transparent",externalOutputMode:"passthrough",exitOnCtrlC:!1,screenMode:"alternate-screen",useKittyKeyboard:{}};return J?{...z,onDestroy:J}:z}function ku(J){let z=()=>J.children,Z=()=>J.notifications?k(h3,{get children(){return z()}}):z(),Y=()=>k(tF,{get children(){return Z()}}),X=()=>J.focus?k(R3,{initial:"sidebar",get children(){return Y()}}):Y(),G=()=>J.kv?k(I3,{get children(){return X()}}):X();return k(qF,{mode:"dark",get theme(){return J.theme},get children(){return G()}})}function Iu(J){let{theme:z}=w0();return a1(()=>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,()=>F("common.paneCrash.title")),K(X,()=>F("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 Tu(){let J=GJ();return a1(()=>{if(!J)return;let z=J.targetFps,Z=setInterval(()=>{Ez().then((Y)=>{let X=Y?z:Su;if(J.targetFps!==X)J.targetFps=X})},yu);C1(()=>clearInterval(Z))}),null}function xu(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 dG())d8(H,j)},transparentBackground:()=>z.transparentBackground,setTransparentBackground:(H)=>z.setTransparentBackground(H),focusAccent:()=>z.focusAccent,setFocusAccent:(H)=>z.setFocusAccent(H)};VW(Z,{theme:J.boot.theme,transparentBackground:J.boot.transparent,focusAccent:J.boot.focusAccent}),IQ(J.boot.locale);let[Y,X]=s(null),G=!1;a1(()=>{(async()=>{let H=await Sj({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(VW(Z,H),kQ(H.locale))IQ(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,k3()}),C1(()=>{G=!0,Y()?.dispose()}),null}async function FJ(J){Cu(J.logContext);let z=m3(Nu),Z=await J.setup(z),Y=J.providers?.kv??!0,X=J.providers?.focus??!0,G=J.providers?.notifications??!1;await JF(()=>k(ku,{get theme(){return z.theme},kv:Y,focus:X,notifications:G,get children(){return[k(xu,{boot:z}),k(Tu,{}),k(NU,{fallback:(j)=>k(Iu,{error:j}),get children(){return Z.root()}})]}}),bu(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 Nu="claude",Su=2,yu=3000;var RZ=C(()=>{P();P();P();P();P();P();P();qY();D1();HW();g3();fW();EQ();wj();c1();VH();BJ();sJ();v3();YG();UW()});var KW={};j1(KW,{togglePreviewMode:()=>uu,previewModeEnabled:()=>d3});function d3(J){return iJ(c3(J),!1)}function uu(J){let z=!d3(J);return eQ(c3(J),z),z}var c3=(J)=>`preview.${J}`;var DW=C(()=>{Pz()});import{homedir as Eu}from"os";async function LW(J,z,Z,Y,X={}){let G=y1(z.id);if(await F1(G))return!0;let{archivedHistoryPreviewEnabled:q}=await Promise.resolve().then(() => (oq(),sU));if(z.archived&&q()){let{ensureSession:L}=await Promise.resolve().then(() => (HJ(),vJ)),O=z.worktreePath??"",A=O&&hZ(O)?O:Z&&hZ(Z)?Z:Eu();if(!await L({name:G,cwd:A,command:PJ(Y),taskId:z.id,vendor:Y,repo:Z,archived:!0,archivedWorktree:O||A,title:z.title}))throw new gZ("session",`failed to start history session for ${z.id}`);return!1}let H=z.worktreePath;if(!H||!hZ(H)){if(!J)throw new gZ("no-daemon",`no daemon; cannot materialise worktree for ${z.id}`);try{H=await J.ensureWorktree(z.id)}catch(L){throw new gZ("worktree",`ensureWorktree failed for ${z.id}`,L)}await X.reload?.()}if(!H||!hZ(H))throw new gZ("worktree",`task ${z.id} has no usable worktree`);let{ensureSession:j}=await Promise.resolve().then(() => (HJ(),vJ)),{previewModeEnabled:B}=await Promise.resolve().then(() => (DW(),KW));if(B(z.id)&&q()){if(!await j({name:G,cwd:H,command:PJ(Y),taskId:z.id,vendor:Y,repo:Z,preview:!0,archivedWorktree:H,title:z.title}))throw new gZ("session",`failed to start preview session for ${z.id}`);return!1}let{resolveEngineLaunchInit:V}=await Promise.resolve().then(() => (wX(),rH)),f=Z?V(Z,H,{kind:X.includeInitPrompt?"repo-init":"none"}):void 0;if(!await j({name:G,cwd:H,command:PJ(Y),taskId:z.id,vendor:Y,repo:Z,launchInit:f}))throw new gZ("session",`failed to start tmux session for ${z.id}`);return!1}async function FW(J,z,Z,Y,X={}){let G=y1(z.id),q=await Promise.resolve().then(() => (HJ(),vJ));if(X.captureFrom){let B=await q.currentSessionName();if(B&&B!==G)await q.captureGlobalLayout(B)}if(await LW(J,z,Z,Y,{includeInitPrompt:X.includeInitPrompt,reload:X.reload})&&X.heal)try{let B=await SY(G,"@kobe_worktree")||z.worktreePath||"";if(B&&hZ(B)){let{resolveEngineLaunchInit:V}=await Promise.resolve().then(() => (wX(),rH)),f=Z?V(Z,B,{kind:X.includeInitPrompt?"repo-init":"none"}):void 0;await q.ensureSession({name:G,cwd:B,command:PJ(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(() => (nZ(),r9));if(await j(G),X.isCurrent&&!X.isCurrent())return;await J?.setActiveTask(z.id).catch(()=>{}),await q.enterWindow(G)}async function hj(J,z,Z,Y,X={}){await FW(J,z,Z,Y,{includeInitPrompt:X.includeInitPrompt})}var gZ;var vj=C(()=>{Gz();Rz();w1();gZ=class gZ extends Error{phase;cause;constructor(J,z,Z){super(z);this.name="HandoverError",this.phase=J,this.cause=Z}}});var n3={};j1(n3,{startNewTaskHost:()=>wu,NewTaskPage:()=>mj});function mj(J){let{theme:z}=w0(),Z=_1();a1(()=>{Y()});async function Y(){let X=TJ(),G=J.defaultRepo||X[0]||process.cwd(),q=nJ(x1("lastSelectedVendor"),lJ()),H=await QZ(),j=J.orchestrator,B=await kj.show(Z,G,X,{defaultVendor:q,availableVendors:H,discoverAdoptable:j?(f)=>j.discoverAdoptableWorktrees(f):void 0});if(!B)process.exit(0);if(QJ("lastSelectedVendor",B.vendor),zZ(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 hj(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 wu(J){await FJ({setup:async()=>{let z=null;try{let Z=await yz(),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(mj,{get defaultRepo(){return J.defaultRepo},orchestrator:z}),onDestroy:()=>{z?.dispose()}}}})}var MW=C(()=>{P();P();P();P();IJ();D1();eZ();HY();S1();t1();JG();c1();RZ();vj();sJ()});function cj(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 i3(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 Pu(J,z){let Z=z==="archived";return J.filter((Y)=>Y.archived===Z)}function OW(J,z,Z,Y="default",X){let G=Pu(J,z),q=Z?.trim()??"",H=X?fz(X):null,j=q?G.filter((A)=>i3(q,`${A.title} ${wz(A.repo)}`)):G,B=[],V=[],f=[],U=new Set;for(let A of j){if(A.kind==="main"){let g=fz(A.repo);if(U.has(g))continue;U.add(g),B.push(A);continue}if(H&&fz(A.repo)!==H)continue;if(A.pinned===!0)V.push(A);else f.push(A)}if(B.sort((A,g)=>wz(A.repo).localeCompare(wz(g.repo))),Y==="recent")V.sort(l3),f.sort(l3);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 l3(J,z){let Z=$3(z)-$3(J);if(Z!==0)return Z;return String(z.id).localeCompare(String(J.id))}function $3(J){let z=Date.parse(J.updatedAt||J.createdAt);return Number.isFinite(z)?z:0}function wz(J){let z=J.split("/").filter(Boolean);return z[z.length-1]??J}function fz(J){return J.trim().replace(/[\\/]+$/,"")||J}function hu(J,z){let Z=wz(J);if(!z.some((X)=>X!==J&&wz(X)===Z))return Z;return J.replace(/[\\/]+$/,"").split(/[\\/]+/).slice(-2).join("/")}function a3(J,z){let Z=z==="archived",Y=new Map;for(let G of J){let q=fz(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:hu(G.repo,X),count:G.count})).sort((G,q)=>G.label.localeCompare(q.label))}function _3(J,z){if(J.length===0)return-1;if(!z)return J[0]?.flatIndex??-1;let Z=fz(z),Y=J.find((G)=>G.task.kind!=="main"&&fz(G.task.repo)===Z);if(Y)return Y.flatIndex;return J.find((G)=>G.task.kind==="main"&&fz(G.task.repo)===Z)?.flatIndex??J[0]?.flatIndex??-1}function AW(J){return J.map((z)=>z.task.id)}function p3(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 r3(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 vu(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 o3(J,z){return cj(J,z,(Z)=>Z.task.id,(Z,Y)=>Z.flatIndex===Y.flatIndex&&vu(Z.task,Y.task),{samePosition:!0})}var dj=()=>{};var s3={};j1(s3,{startQuickTaskHost:()=>nu});async function mu(J,z){let Z,Y;if(z){let f=await hJ(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)??TJ()[0],G=X??Y??process.cwd();if(!X)return{ctx:null,fallbackRepo:G};let q=await QZ(),H=nJ(x1("lastSelectedVendor"),lJ()),j=q.length===0||q.includes(H)?H:q[0]??H,B=SQ(LJ(X))??uz,V=q.length>0?q:[j];return{ctx:{repo:X,vendor:j,baseRef:B,engines:V},fallbackRepo:G}}async function cu(J,z,Z,Y,X){let G=await LW(J,z,Z,Y),q=y1(z.id),{pane:H}=await vG(q,!G);if(H)await mG(H,X)}function du(J){let{theme:z}=w0(),Z=_1();a1(()=>{Y()});async function Y(){let X=J.ctx,G=await O3.show(Z,{repoLabel:wz(X.repo),engines:X.engines,defaultVendor:X.vendor,defaultBaseRef:X.baseRef,engineLabel:OY});if(G===void 0)process.exit(0);QJ("lastSelectedVendor",G.vendor),zZ(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 cu(q,H,X.repo,G.vendor,_F(G.prompt,G.attachments)),await hj(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 nu(J){await FJ({setup:async()=>{let z=null;try{let X=await yz(),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 mu(z,J.session);return{root:()=>Z?k(du,{ctx:Z,orchestrator:z}):k(mj,{defaultRepo:Y,orchestrator:z}),onDestroy:()=>{z?.dispose()}}}})}var t3=C(()=>{P();P();P();P();IJ();D1();eZ();HY();Gz();S1();w1();YH();t1();A3();c1();_8();Nj();RZ();bj();vj();MW();dj();sJ()});function ij(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 nj(J,z){if(J.includes("/"))return J.split("/").map((X)=>nj(X,z)).join("/");let Z=J.toLowerCase();if(Z==="tab")return"tab";let Y=lu[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 XG(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("+")?XG(H,z):nj(H,!0)}`}let X=Z.split("+");if(X.length===1)return nj(X[0]??"",!1);let G=X[X.length-1]??"";return`${X.slice(0,-1).map((H)=>iu[H.toLowerCase().trim()]??H).join("")} ${nj(G,!0)}`}var iu,lu;var RW=C(()=>{iu={ctrl:"\u2303",control:"\u2303",alt:"\u2325",opt:"\u2325",option:"\u2325",shift:"\u21E7",cmd:"\u2318",command:"\u2318",meta:"\u2318",super:"\u2318"},lu={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 e3}from"@opentui/core";function $u(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 GG(J={}){let z=_1(),{theme:Z}=w0(),Y=()=>$u(JY),X=()=>J.onClose?J.onClose():z.clear(),[G,q]=s("\u2303B");return a1(()=>{m0(["show-options","-g","prefix"]).then(({code:H,stdout:j})=>{if(H!==0)return;let B=ij(j);if(B)q(B)})}),M1(()=>({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,()=>F("help.title")),Q(V,"onMouseUp",X),K(V,()=>F("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(X1,{get each(){return Y()},children:(L)=>(()=>{var O=W("box"),A=W("text");return D(O,A),Q(O,"gap",0),K(A,()=>l8("category",L.category)),K(O,k(X1,{get each(){return L.rows},children:(g)=>{let E=g.hint?.keys??g.keys[0]??"\u2014",h=()=>E==="\u2014"?"\u2014":XG(E,G()),I=()=>(g.hint?g.keys:g.keys.slice(1)).map((N)=>XG(N,G()));return(()=>{var N=W("box"),M=W("box"),y=W("text"),c=W("box"),d=W("text");return D(N,M),D(N,c),Q(N,"flexDirection","row"),Q(N,"gap",2),Q(N,"paddingLeft",1),D(M,y),Q(M,"width",14),K(y,h),D(c,d),Q(c,"flexGrow",1),K(d,()=>l8("desc",g.id)),K(N,(()=>{var i=g0(()=>I().length>0);return()=>i()?(()=>{var t=W("box"),X0=W("text");return D(t,X0),K(X0,()=>`(${I().join(", ")})`),u((G0)=>Q(X0,"fg",Z.textMuted,G0)),t})():null})(),null),u((i)=>{var{primary:t,text:X0}=Z;return t!==i.e&&(i.e=Q(y,"fg",t,i.e)),X0!==i.t&&(i.t=Q(d,"fg",X0,i.t)),i},{e:void 0,t:void 0}),N})()}}),null),u((g)=>{var E=Z.accent,h=e3.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=e3.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 gW=C(()=>{P();P();P();P();P();P();P();D1();w1();zG();c1();BJ();RW();SJ();sJ();GG.show=(J)=>{J.replace(()=>k(GG,{}))}});import{TextAttributes as au}from"@opentui/core";function JM(J){let z=_1(),{theme:Z}=w0(),[Y,X]=s(J.currentTitle);function G(){let q=Y().trim();if(xQ(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??F("common.rename.defaultTitle")),D(B,S0("esc")),Q(B,"onMouseUp",()=>J.onCancel()),D(V,f),D(V,U),Q(V,"gap",0),K(f,()=>J.fieldLabel??F("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,()=>F("common.rename.footerHint",{submitLabel:J.submitLabel??F("common.rename.defaultSubmitLabel")})),u((A)=>{var g=au.BOLD,E=Z.text,h=Z.textMuted,I=Z.accent,N=Y(),M=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)),M!==A.n&&(A.n=Q(U,"placeholder",M,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 zM=C(()=>{P();P();P();P();P();P();P();BJ();D1();c1();sJ();JG()});function _u(J,z,Z={}){return new Promise((Y)=>{J.replace(()=>k(JM,{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 tz;var NW=C(()=>{P();zM();tz={show:_u}});import{TextAttributes as pu}from"@opentui/core";function ru(J){if(!J)return J;return J.charAt(0).toUpperCase()+J.slice(1)}function Wz(J){let z=_1(),{theme:Z}=w0(),[Y,X]=oz({active:J.initialActive??"confirm"});return M1(()=>({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,S0("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(X1,{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,()=>ru(f==="cancel"?J.label??F("common.cancel"):J.confirmLabel??F("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=pu.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 lj=C(()=>{P();P();P();P();P();P();P();BJ();D1();rX();c1();SJ();sJ();Wz.show=(J,z,Z,Y,X,G)=>{return new Promise((q)=>{J.replace(()=>k(Wz,{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 ou}from"fs";import{join as su}from"path";function ZM(J){return J instanceof NJ}function YM(J,z){try{J?.destroy()}catch(Z){console.error(`kobe: renderer.destroy() failed during ${z}:`,Z)}}async function CW(J,z,Z){if(await Wz.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{ou(su(bJ(),".kobe","tasks.json"))}catch(X){if(X.code!=="ENOENT")console.error("kobe: failed to delete tasks.json during reset:",X)}YM(Z,"reset"),process.stderr.write(`kobe: UI state reset. Relaunch kobe to start fresh.
268
- `),process.exit(0)}async function bW(J,z,Z){if(!(z instanceof NJ))return;if(await Wz.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;YM(Z,"daemon restart"),process.stderr.write(`kobe: window closed. Relaunch kobe to start fresh.
269
- `),process.exit(0)}var XM=C(()=>{eZ();p1();lj()});function tu(J){return`theme:${J}`}function kW(J){return`language:${J}`}function IW(J){return`accent:${J}`}function eu(J){return`engine:${J}`}function wQ(J){return`surface:${J}`}function SW(J){return[...J.themeNames.map((z)=>({id:tu(z),kind:"theme",name:z})),...oX.map((z)=>({id:kW(z.id),kind:"language",locale:z.id})),{id:"transparent",kind:"transparent"},...J.focusAccentSlots.map((z)=>({id:IW(z),kind:"focusAccent",slot:z})),{id:"toast",kind:"toast"},{id:"sound",kind:"sound"},{id:"zen-keep-tasks",kind:"zenKeepTasks"},{id:wQ("chattab"),kind:"surface",surface:"chattab"},{id:wQ("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 JE(J){return[...J.map((z)=>({id:eu(z),kind:"engine",vendor:z})),{id:"add-engine",kind:"engineAdd"}]}function zE(){return[{id:"feedback-title",kind:"feedbackTitle"},{id:"feedback-body",kind:"feedbackBody"},{id:"feedback-send",kind:"feedbackSend"}]}function QG(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 GM(J,z){switch(J){case"general":return SW(z);case"engines":return JE(z.engineList);case"accounts":case"keys":return[];case"feedback":return zE();case"dev":return QG(z.hasDaemon)}}function qG(J,z){return J.findIndex((Z)=>Z.id===z)}function $j(J,z){return J[z]}var iY;var yW=C(()=>{eX();iY=[{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 QM(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(X1,{each:iY,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,()=>F(`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 qM(J){let z=w0(),{theme:Z}=z,Y=()=>SW({themeNames:J.themeNames(),focusAccentSlots:dY}),X=(i)=>qG(Y(),i),G=()=>X("transparent"),q=()=>X("toast"),H=()=>X("sound"),j=()=>X("zen-keep-tasks"),B=()=>X(wQ("chattab")),V=()=>X(wQ("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(),M=()=>J.bodyRow()===f(),y=()=>J.bodyRow()===U(),c=()=>J.bodyRow()===L(),d=()=>J.bodyRow()===O();return(()=>{var i=W("box"),t=W("text"),X0=W("text"),G0=W("box"),f0=W("box"),_=W("text"),M0=W("text"),b=W("box"),p=W("text"),w=W("text"),R=W("box"),e=W("text"),T=W("box"),a=W("text"),q0=W("text"),H0=W("box"),j0=W("text"),y0=W("text"),i0=W("box"),N0=W("text"),J1=S0(" "),b0=W("box"),p0=W("text"),E0=S0(" "),T0=W("box"),G1=W("text"),m=W("text"),B0=W("box"),z0=W("text"),x0=S0(" "),n=W("box"),V0=W("text"),k0=W("text"),l0=W("box"),Y1=W("text"),$0=S0(" "),Q1=W("box"),R1=W("text"),O1=S0(" "),Z0=W("box"),Q0=W("text"),K0=W("text"),R0=W("box"),U0=W("text"),P0=W("box"),C0=W("text"),r0=W("box"),I0=W("text"),u0=W("text"),q1=W("box"),W1=W("text"),V1=W("box"),H1=W("text");return D(i,t),D(i,X0),D(i,G0),D(i,f0),D(i,b),D(i,T),D(i,H0),D(i,T0),D(i,n),D(i,Z0),D(i,r0),Q(i,"flexDirection","column"),Q(i,"gap",1),K(t,()=>F("settings.general.theme")),K(X0,()=>F("settings.general.themeHint")),Q(G0,"flexDirection","column"),Q(G0,"gap",0),K(G0,k(X1,{get each(){return J.themeNames()},children:(S,F0)=>{let U1=()=>J.level()==="body"&&J.bodyRow()===F0(),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(F0()),J.setThemeCursor(F0()),J.selectTheme(S)}),Q(t0,"wrapMode","none"),K(t0,()=>L1()?"\u25CF ":" ",null),K(t0,S,null),u((h0)=>{var $=U1()?Z.primary:void 0,A0=U1()?Z.selectedListItemText:L1()?Z.accent:Z.text,J0=U1()||L1()?s0.BOLD:void 0;return $!==h0.e&&(h0.e=Q(c0,"backgroundColor",$,h0.e)),A0!==h0.t&&(h0.t=Q(t0,"fg",A0,h0.t)),J0!==h0.a&&(h0.a=Q(t0,"attributes",J0,h0.a)),h0},{e:void 0,t:void 0,a:void 0}),c0})()}})),D(f0,_),D(f0,M0),Q(f0,"flexDirection","column"),Q(f0,"gap",0),Q(f0,"paddingTop",1),K(_,()=>F("settings.general.language")),Q(M0,"wrapMode","word"),K(M0,()=>F("settings.general.languageHint")),K(f0,k(X1,{each:oX,children:(S)=>{let F0=()=>X(kW(S.id)),U1=()=>J.level()==="body"&&J.bodyRow()===F0(),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(F0()),J.selectLanguage(S.id)}),Q(t0,"wrapMode","none"),K(t0,()=>L1()?"\u25CF ":" ",null),K(t0,()=>S.label,null),u((h0)=>{var $=U1()?Z.primary:void 0,A0=U1()?Z.selectedListItemText:L1()?Z.accent:Z.text,J0=U1()||L1()?s0.BOLD:void 0;return $!==h0.e&&(h0.e=Q(c0,"backgroundColor",$,h0.e)),A0!==h0.t&&(h0.t=Q(t0,"fg",A0,h0.t)),J0!==h0.a&&(h0.a=Q(t0,"attributes",J0,h0.a)),h0},{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,()=>F("settings.general.transparent")),Q(w,"wrapMode","word"),K(w,()=>F("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=g0(()=>!!z.transparentBackground);return()=>S()?F("settings.general.on"):F("settings.general.off")})()),D(T,a),D(T,q0),Q(T,"flexDirection","column"),Q(T,"gap",0),Q(T,"paddingTop",1),K(a,()=>F("settings.general.focusAccent")),Q(q0,"wrapMode","word"),K(q0,()=>F("settings.general.focusAccentHint")),K(T,k(X1,{each:dY,children:(S)=>{let F0=()=>X(IW(S)),U1=()=>J.level()==="body"&&J.bodyRow()===F0(),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(F0()),J.selectFocusAccent(S)}),Q(t0,"wrapMode","none"),K(t0,()=>L1()?"\u25CF ":" ",null),K(t0,()=>F(`settings.general.accent${S.charAt(0).toUpperCase()}${S.slice(1)}`),null),u((h0)=>{var $=U1()?Z.primary:void 0,A0=U1()?Z.selectedListItemText:L1()?Z.focusAccent:Z.text,J0=U1()||L1()?s0.BOLD:void 0;return $!==h0.e&&(h0.e=Q(c0,"backgroundColor",$,h0.e)),A0!==h0.t&&(h0.t=Q(t0,"fg",A0,h0.t)),J0!==h0.a&&(h0.a=Q(t0,"attributes",J0,h0.a)),h0},{e:void 0,t:void 0,a:void 0}),c0})()}}),null),D(H0,j0),D(H0,y0),D(H0,i0),D(H0,b0),Q(H0,"flexDirection","column"),Q(H0,"gap",0),Q(H0,"paddingTop",1),K(j0,()=>F("settings.general.notifications")),Q(y0,"wrapMode","word"),K(y0,()=>F("settings.general.notificationsHint")),D(i0,N0),Q(i0,"flexDirection","row"),Q(i0,"gap",1),Q(i0,"paddingLeft",1),Q(i0,"paddingRight",1),Q(i0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(q()),J.toggleToast()}),D(N0,J1),Q(N0,"wrapMode","none"),K(N0,()=>J.toastEnabled()?"[x]":"[ ]",J1),K(N0,()=>F("settings.general.toast"),null),D(b0,p0),Q(b0,"flexDirection","row"),Q(b0,"gap",1),Q(b0,"paddingLeft",1),Q(b0,"paddingRight",1),Q(b0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(H()),J.toggleSound()}),D(p0,E0),Q(p0,"wrapMode","none"),K(p0,()=>J.soundEnabled()?"[x]":"[ ]",E0),K(p0,()=>F("settings.general.sound"),null),D(T0,G1),D(T0,m),D(T0,B0),Q(T0,"flexDirection","column"),Q(T0,"gap",0),Q(T0,"paddingTop",1),K(G1,()=>F("settings.general.zen")),Q(m,"wrapMode","word"),K(m,()=>F("settings.general.zenHint")),D(B0,z0),Q(B0,"flexDirection","row"),Q(B0,"gap",1),Q(B0,"paddingLeft",1),Q(B0,"paddingRight",1),Q(B0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(j()),J.toggleZenKeepsTasks()}),D(z0,x0),Q(z0,"wrapMode","none"),K(z0,()=>J.zenKeepsTasks()?"[x]":"[ ]",x0),K(z0,()=>F("settings.general.zenKeepTasks"),null),D(n,V0),D(n,k0),D(n,l0),D(n,Q1),Q(n,"flexDirection","column"),Q(n,"gap",0),Q(n,"paddingTop",1),K(V0,()=>F("settings.general.surface")),Q(k0,"wrapMode","word"),K(k0,()=>F("settings.general.surfaceHint")),D(l0,Y1),Q(l0,"flexDirection","row"),Q(l0,"gap",1),Q(l0,"paddingLeft",1),Q(l0,"paddingRight",1),Q(l0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(B()),J.selectSurface("chattab")}),D(Y1,$0),Q(Y1,"wrapMode","none"),K(Y1,()=>J.settingsSurface()==="chattab"?"[x]":"[ ]",$0),K(Y1,()=>F("settings.general.surfaceChattab"),null),D(Q1,R1),Q(Q1,"flexDirection","row"),Q(Q1,"gap",1),Q(Q1,"paddingLeft",1),Q(Q1,"paddingRight",1),Q(Q1,"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,()=>F("settings.general.surfaceTaskpanel"),null),D(Z0,Q0),D(Z0,K0),D(Z0,R0),D(Z0,P0),Q(Z0,"flexDirection","column"),Q(Z0,"gap",0),Q(Z0,"paddingTop",1),K(Q0,()=>F("settings.general.editor")),Q(K0,"wrapMode","word"),K(K0,()=>F("settings.general.editorHint")),D(R0,U0),Q(R0,"flexDirection","row"),Q(R0,"gap",1),Q(R0,"paddingLeft",1),Q(R0,"paddingRight",1),Q(R0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(f()),J.cycleEditorKind()}),Q(U0,"wrapMode","none"),K(U0,()=>F("settings.general.editorRow",{kind:J.editorKind()})),D(P0,C0),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(C0,"wrapMode","none"),K(C0,()=>F("settings.general.editorCustom",{cmd:J.editorCustomCommand().trim()||F("settings.general.editorCustomUnset")})),D(r0,I0),D(r0,u0),D(r0,q1),D(r0,V1),Q(r0,"flexDirection","column"),Q(r0,"gap",0),Q(r0,"paddingTop",1),K(I0,()=>F("settings.general.worktree")),Q(u0,"wrapMode","word"),K(u0,()=>F("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,()=>F("settings.general.worktreeBase",{kind:J.worktreeKindLabel()})),D(V1,H1),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(H1,"wrapMode","none"),K(H1,()=>F("settings.general.worktreeCustom",{path:J.worktreeCustomPath()||F("settings.general.worktreeCustomUnset")})),u((S)=>{var F0=Z.text,U1=s0.BOLD,L1=Z.textMuted,c0=Z.text,t0=s0.BOLD,h0=Z.textMuted,$=Z.text,A0=s0.BOLD,J0=Z.textMuted,x=A()?Z.primary:void 0,L0=A()?Z.selectedListItemText:z.transparentBackground?Z.accent:Z.textMuted,T1=s0.BOLD,g1=Z.text,n1=s0.BOLD,v1=Z.textMuted,fJ=Z.text,dJ=s0.BOLD,B1=Z.textMuted,l=g()?Z.primary:void 0,r=g()?Z.selectedListItemText:J.toastEnabled()?Z.accent:Z.textMuted,o=s0.BOLD,v=E()?Z.primary:void 0,a0=E()?Z.selectedListItemText:J.soundEnabled()?Z.accent:Z.textMuted,v0=s0.BOLD,O0=Z.text,_0=s0.BOLD,K1=Z.textMuted,b1=h()?Z.primary:void 0,MJ=h()?Z.selectedListItemText:J.zenKeepsTasks()?Z.accent:Z.textMuted,Vz=s0.BOLD,NZ=Z.text,aW=s0.BOLD,_W=Z.textMuted,pW=I()?Z.primary:void 0,rW=I()?Z.selectedListItemText:J.settingsSurface()==="chattab"?Z.accent:Z.textMuted,oW=s0.BOLD,sW=N()?Z.primary:void 0,tW=N()?Z.selectedListItemText:J.settingsSurface()==="taskpanel"?Z.accent:Z.textMuted,eW=s0.BOLD,JV=Z.text,zV=s0.BOLD,ZV=Z.textMuted,YV=M()?Z.primary:void 0,XV=M()?Z.selectedListItemText:Z.accent,GV=s0.BOLD,QV=y()?Z.primary:void 0,qV=y()?Z.selectedListItemText:J.editorKind()==="custom"?Z.text:Z.textMuted,HV=Z.text,jV=s0.BOLD,BV=Z.textMuted,fV=c()?Z.primary:void 0,WV=c()?Z.selectedListItemText:Z.accent,VV=s0.BOLD,UV=d()?Z.primary:void 0,KV=d()?Z.selectedListItemText:J.worktreeKind()==="custom"?Z.text:Z.textMuted;return F0!==S.e&&(S.e=Q(t,"fg",F0,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)),h0!==S.n&&(S.n=Q(M0,"fg",h0,S.n)),$!==S.s&&(S.s=Q(p,"fg",$,S.s)),A0!==S.h&&(S.h=Q(p,"attributes",A0,S.h)),J0!==S.r&&(S.r=Q(w,"fg",J0,S.r)),x!==S.d&&(S.d=Q(R,"backgroundColor",x,S.d)),L0!==S.l&&(S.l=Q(e,"fg",L0,S.l)),T1!==S.u&&(S.u=Q(e,"attributes",T1,S.u)),g1!==S.c&&(S.c=Q(a,"fg",g1,S.c)),n1!==S.w&&(S.w=Q(a,"attributes",n1,S.w)),v1!==S.m&&(S.m=Q(q0,"fg",v1,S.m)),fJ!==S.f&&(S.f=Q(j0,"fg",fJ,S.f)),dJ!==S.y&&(S.y=Q(j0,"attributes",dJ,S.y)),B1!==S.g&&(S.g=Q(y0,"fg",B1,S.g)),l!==S.p&&(S.p=Q(i0,"backgroundColor",l,S.p)),r!==S.b&&(S.b=Q(N0,"fg",r,S.b)),o!==S.T&&(S.T=Q(N0,"attributes",o,S.T)),v!==S.A&&(S.A=Q(b0,"backgroundColor",v,S.A)),a0!==S.O&&(S.O=Q(p0,"fg",a0,S.O)),v0!==S.I&&(S.I=Q(p0,"attributes",v0,S.I)),O0!==S.S&&(S.S=Q(G1,"fg",O0,S.S)),_0!==S.W&&(S.W=Q(G1,"attributes",_0,S.W)),K1!==S.C&&(S.C=Q(m,"fg",K1,S.C)),b1!==S.B&&(S.B=Q(B0,"backgroundColor",b1,S.B)),MJ!==S.v&&(S.v=Q(z0,"fg",MJ,S.v)),Vz!==S.k&&(S.k=Q(z0,"attributes",Vz,S.k)),NZ!==S.x&&(S.x=Q(V0,"fg",NZ,S.x)),aW!==S.j&&(S.j=Q(V0,"attributes",aW,S.j)),_W!==S.q&&(S.q=Q(k0,"fg",_W,S.q)),pW!==S.z&&(S.z=Q(l0,"backgroundColor",pW,S.z)),rW!==S.P&&(S.P=Q(Y1,"fg",rW,S.P)),oW!==S.H&&(S.H=Q(Y1,"attributes",oW,S.H)),sW!==S.F&&(S.F=Q(Q1,"backgroundColor",sW,S.F)),tW!==S.M&&(S.M=Q(R1,"fg",tW,S.M)),eW!==S.D&&(S.D=Q(R1,"attributes",eW,S.D)),JV!==S.R&&(S.R=Q(Q0,"fg",JV,S.R)),zV!==S.E&&(S.E=Q(Q0,"attributes",zV,S.E)),ZV!==S.L&&(S.L=Q(K0,"fg",ZV,S.L)),YV!==S.N&&(S.N=Q(R0,"backgroundColor",YV,S.N)),XV!==S.G&&(S.G=Q(U0,"fg",XV,S.G)),GV!==S.U&&(S.U=Q(U0,"attributes",GV,S.U)),QV!==S.K&&(S.K=Q(P0,"backgroundColor",QV,S.K)),qV!==S.V&&(S.V=Q(C0,"fg",qV,S.V)),HV!==S.Y&&(S.Y=Q(I0,"fg",HV,S.Y)),jV!==S.J&&(S.J=Q(I0,"attributes",jV,S.J)),BV!==S.Q&&(S.Q=Q(u0,"fg",BV,S.Q)),fV!==S.Z&&(S.Z=Q(q1,"backgroundColor",fV,S.Z)),WV!==S.X&&(S.X=Q(W1,"fg",WV,S.X)),VV!==S._&&(S._=Q(W1,"attributes",VV,S._)),UV!==S.$&&(S.$=Q(V1,"backgroundColor",UV,S.$)),KV!==S.te&&(S.te=Q(H1,"fg",KV,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}),i})()}function HM(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,()=>F("settings.engines.title")),Q(G,"wrapMode","word"),K(G,()=>F("settings.engines.hint")),D(q,H),Q(q,"flexDirection","column"),Q(q,"gap",0),K(q,k(X1,{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=g0(()=>!!J.isDefault(B));return()=>g()?F("settings.engines.defaultTag"):g0(()=>!!J.isCustom(B))()?F("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,M=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)),M!==g.i&&(g.i=Q(O,"attributes",M,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,()=>F("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 jM(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,()=>F("settings.accounts.title")),Q(G,"wrapMode","word"),K(G,()=>F("settings.accounts.hint")),D(q,H),Q(q,"flexDirection","column"),Q(q,"gap",0),D(H,S0("claude-code")),K(q,k(Y0,{get when(){return J.claudeStatus()===null},get children(){var U=W("text");return K(U,()=>F("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,()=>F("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,()=>F("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,S0("codex")),K(j,k(Y0,{get when(){return J.codexStatus()===null},get children(){var U=W("text");return K(U,()=>F("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,()=>F("settings.accounts.chatgptLogin",{email:A.email}),null),K(g,(()=>{var E=g0(()=>!!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,()=>F("settings.accounts.apiKeyConfigured")),u((E)=>Q(g,"fg",z.success,E)),g})();return(()=>{var g=W("text");return K(g,()=>F("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,S0("copilot")),K(V,k(Y0,{get when(){return J.copilotStatus()===null},get children(){var U=W("text");return K(U,()=>F("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,()=>F("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,()=>F("settings.accounts.copilotDetected")),u((E)=>Q(g,"fg",z.success,E)),g})();return(()=>{var g=W("text");return K(g,()=>F("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,M=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)),M!==U.r&&(U.r=Q(f,"attributes",M,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 BM(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,()=>F("settings.feedback.title")),Q(f,"wrapMode","word"),K(f,()=>F("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,()=>F("settings.feedback.titleLabel")),Q(A,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(0)}),Q(A,"onInput",(M)=>J.setTitle(CJ(M))),Q(A,"onSubmit",()=>J.onTitleSubmit()),D(g,E),D(g,h),Q(g,"gap",0),K(E,()=>F("settings.feedback.descriptionLabel")),jz((M)=>{j=M},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,()=>F("settings.feedback.send")),K(B,k(Y0,{get when(){return J.status()},get children(){var M=W("text");return Q(M,"wrapMode","word"),K(M,()=>J.status()),u((y)=>Q(M,"fg",J.status().startsWith("error:")?z.warning:z.success,y)),M}}),null),u((M)=>{var y=z.text,c=s0.BOLD,d=z.textMuted,i=q(Y()),t=H(Y()),X0=J.title(),G0=F("settings.feedback.titlePlaceholder"),f0=Y(),_=q(X()),M0=H(X()),b=J.body(),p=F("settings.feedback.descriptionPlaceholder"),w=X(),R=G()?z.primary:z.backgroundElement,e=G()?z.selectedListItemText:z.accent,T=s0.BOLD;return y!==M.e&&(M.e=Q(V,"fg",y,M.e)),c!==M.t&&(M.t=Q(V,"attributes",c,M.t)),d!==M.a&&(M.a=Q(f,"fg",d,M.a)),i!==M.o&&(M.o=Q(O,"fg",i,M.o)),t!==M.i&&(M.i=Q(O,"attributes",t,M.i)),X0!==M.n&&(M.n=Q(A,"value",X0,M.n)),G0!==M.s&&(M.s=Q(A,"placeholder",G0,M.s)),f0!==M.h&&(M.h=Q(A,"focused",f0,M.h)),_!==M.r&&(M.r=Q(E,"fg",_,M.r)),M0!==M.d&&(M.d=Q(E,"attributes",M0,M.d)),b!==M.l&&(M.l=Q(h,"initialValue",b,M.l)),p!==M.u&&(M.u=Q(h,"placeholder",p,M.u)),w!==M.c&&(M.c=Q(h,"focused",w,M.c)),R!==M.w&&(M.w=Q(I,"backgroundColor",R,M.w)),e!==M.m&&(M.m=Q(N,"fg",e,M.m)),T!==M.f&&(M.f=Q(N,"attributes",T,M.f)),M},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0,w:void 0,m:void 0,f:void 0}),B})()}function fM(J){let{theme:z}=w0(),Z=()=>J.level()==="body"&&J.bodyRow()===0,Y=()=>J.level()==="body"&&J.bodyRow()===1,X=()=>qG(QG(J.hasDaemon),"remote-projects"),G=()=>J.level()==="body"&&J.bodyRow()===X(),q=()=>qG(QG(J.hasDaemon),"auto-status"),H=()=>J.level()==="body"&&J.bodyRow()===q(),j=()=>qG(QG(J.hasDaemon),"dispatcher"),B=()=>J.level()==="body"&&J.bodyRow()===j(),V=()=>qG(QG(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"),M=W("box"),y=W("text"),c=W("text"),d=W("box"),i=W("text"),t=W("text"),X0=W("box"),G0=W("text"),f0=W("text"),_=W("box"),M0=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,()=>F("settings.dev.reset")),Q(O,"wrapMode","word"),K(O,()=>F("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,()=>F("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,()=>F("settings.dev.restart")),Q(w,"wrapMode","word"),K(w,()=>F("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,()=>F("settings.dev.restartButton")),u((T)=>{var a=z.text,q0=s0.BOLD,H0=z.textMuted,j0=Y()?z.primary:z.backgroundElement,y0=Y()?z.selectedListItemText:z.accent,i0=s0.BOLD;return a!==T.e&&(T.e=Q(p,"fg",a,T.e)),q0!==T.t&&(T.t=Q(p,"attributes",q0,T.t)),H0!==T.a&&(T.a=Q(w,"fg",H0,T.a)),j0!==T.o&&(T.o=Q(R,"backgroundColor",j0,T.o)),y0!==T.i&&(T.i=Q(e,"fg",y0,T.i)),i0!==T.n&&(T.n=Q(e,"attributes",i0,T.n)),T},{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,()=>F("settings.dev.doctorHint")),D(h,I),D(h,N),D(h,M),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,()=>F("settings.dev.experimental")),Q(N,"wrapMode","word"),K(N,()=>F("settings.dev.remoteHint")),D(M,y),Q(M,"flexDirection","row"),Q(M,"paddingLeft",1),Q(M,"paddingRight",1),Q(M,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(X()),J.toggleRemoteProjects()}),K(y,(()=>{var b=g0(()=>!!J.remoteProjectsEnabled());return()=>b()?F("settings.dev.remoteOn"):F("settings.dev.remoteOff")})()),Q(c,"wrapMode","word"),K(c,()=>F("settings.dev.autoStatusHint")),D(d,i),Q(d,"flexDirection","row"),Q(d,"paddingLeft",1),Q(d,"paddingRight",1),Q(d,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(q()),J.toggleAutoStatus()}),K(i,(()=>{var b=g0(()=>!!J.autoStatusEnabled());return()=>b()?F("settings.dev.autoStatusOn"):F("settings.dev.autoStatusOff")})()),Q(t,"wrapMode","word"),K(t,()=>F("settings.dev.dispatcherHint")),D(X0,G0),Q(X0,"flexDirection","row"),Q(X0,"paddingLeft",1),Q(X0,"paddingRight",1),Q(X0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(j()),J.toggleDispatcher()}),K(G0,(()=>{var b=g0(()=>!!J.dispatcherEnabled());return()=>b()?F("settings.dev.dispatcherOn"):F("settings.dev.dispatcherOff")})()),Q(f0,"wrapMode","word"),K(f0,()=>F("settings.dev.archivedHistoryHint")),D(_,M0),Q(_,"flexDirection","row"),Q(_,"paddingLeft",1),Q(_,"paddingRight",1),Q(_,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(V()),J.toggleArchivedHistory()}),K(M0,(()=>{var b=g0(()=>!!J.archivedHistoryEnabled());return()=>b()?F("settings.dev.archivedHistoryOn"):F("settings.dev.archivedHistoryOff")})()),u((b)=>{var p=z.text,w=s0.BOLD,R=z.textMuted,e=Z()?z.primary:z.backgroundElement,T=Z()?z.selectedListItemText:z.warning,a=s0.BOLD,q0=z.textMuted,H0=z.text,j0=s0.BOLD,y0=z.textMuted,i0=G()?z.primary:z.backgroundElement,N0=G()?z.selectedListItemText:z.text,J1=J.remoteProjectsEnabled()?s0.BOLD:void 0,b0=z.textMuted,p0=H()?z.primary:z.backgroundElement,E0=H()?z.selectedListItemText:z.text,T0=J.autoStatusEnabled()?s0.BOLD:void 0,G1=z.textMuted,m=B()?z.primary:z.backgroundElement,B0=B()?z.selectedListItemText:z.text,z0=J.dispatcherEnabled()?s0.BOLD:void 0,x0=z.textMuted,n=f()?z.primary:z.backgroundElement,V0=f()?z.selectedListItemText:z.text,k0=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)),T!==b.i&&(b.i=Q(g,"fg",T,b.i)),a!==b.n&&(b.n=Q(g,"attributes",a,b.n)),q0!==b.s&&(b.s=Q(E,"fg",q0,b.s)),H0!==b.h&&(b.h=Q(I,"fg",H0,b.h)),j0!==b.r&&(b.r=Q(I,"attributes",j0,b.r)),y0!==b.d&&(b.d=Q(N,"fg",y0,b.d)),i0!==b.l&&(b.l=Q(M,"backgroundColor",i0,b.l)),N0!==b.u&&(b.u=Q(y,"fg",N0,b.u)),J1!==b.c&&(b.c=Q(y,"attributes",J1,b.c)),b0!==b.w&&(b.w=Q(c,"fg",b0,b.w)),p0!==b.m&&(b.m=Q(d,"backgroundColor",p0,b.m)),E0!==b.f&&(b.f=Q(i,"fg",E0,b.f)),T0!==b.y&&(b.y=Q(i,"attributes",T0,b.y)),G1!==b.g&&(b.g=Q(t,"fg",G1,b.g)),m!==b.p&&(b.p=Q(X0,"backgroundColor",m,b.p)),B0!==b.b&&(b.b=Q(G0,"fg",B0,b.b)),z0!==b.T&&(b.T=Q(G0,"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)),V0!==b.I&&(b.I=Q(M0,"fg",V0,b.I)),k0!==b.S&&(b.S=Q(M0,"attributes",k0,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 WM(){let{theme:J}=w0(),z=b3(),Z=Object.keys(y9).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,()=>F("settings.keybindings.title")),Q(G,"wrapMode","word"),K(G,()=>F("settings.keybindings.hint")),D(q,H),D(q,j),Q(q,"flexDirection","column"),Q(q,"gap",0),K(H,()=>F("settings.keybindings.configFile")),Q(j,"wrapMode","word"),K(j,()=>z.path,null),K(j,(()=>{var f=g0(()=>!!z.exists);return()=>f()?"":F("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"),M=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,M),Q(f,"flexDirection","column"),Q(f,"gap",0),K(U,()=>F("settings.keybindings.example")),D(L,S0("bindings:")),D(O,S0(" chat.fork.new: ctrl+g # string = one chord")),D(A,S0(" sidebar.select: [enter] # list = several chords")),D(g,S0(" files.createPR: null # null = unbind")),D(E,S0(" tmux.tab.new: ctrl+y # tmux session key (see below)")),D(h,S0(" tmux.layout.workspaceSplit: g # prefix g")),D(I,S0("darwin: # platform overlay (also: linux)")),D(N,S0(" bindings:")),D(M,S0(" palette.open: [cmd+p, ctrl+p]")),u((y)=>{var c=J.text,d=s0.BOLD,i=J.textMuted,t=J.textMuted,X0=J.textMuted,G0=J.textMuted,f0=J.textMuted,_=J.textMuted,M0=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)),i!==y.a&&(y.a=Q(L,"fg",i,y.a)),t!==y.o&&(y.o=Q(O,"fg",t,y.o)),X0!==y.i&&(y.i=Q(A,"fg",X0,y.i)),G0!==y.n&&(y.n=Q(g,"fg",G0,y.n)),f0!==y.s&&(y.s=Q(E,"fg",f0,y.s)),_!==y.h&&(y.h=Q(h,"fg",_,y.h)),M0!==y.r&&(y.r=Q(I,"fg",M0,y.r)),b!==y.d&&(y.d=Q(N,"fg",b,y.d)),p!==y.l&&(y.l=Q(M,"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,()=>F("settings.keybindings.overridesApplied")),K(f,k(Y0,{get when(){return z.applied.length===0},get children(){var L=W("text");return K(L,()=>F("settings.keybindings.none")),u((O)=>Q(L,"fg",J.textMuted,O)),L}}),null),K(f,k(X1,{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,()=>F("settings.keybindings.warnings")),K(f,k(X1,{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,S0("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 VM=C(()=>{P();P();P();P();P();P();P();P();P();D1();fW();c1();BJ();eX();JH();JG();yW()});import{accessSync as ZE,constants as YE,mkdirSync as XE}from"fs";import{TextAttributes as GE}from"@opentui/core";function QE(J){return J.split(/[-_]+/).filter((z)=>z.length>0).map((z)=>z.charAt(0).toUpperCase()+z.slice(1)).join(" ")}function lY(J){let z=_1(),Z=w0(),Y=GJ(),{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=D0(()=>Z.all().slice().sort()),[,N]=s(Math.max(0,I().findIndex((x)=>x===Z.selected))),M=ZM(J.orchestrator),[y,c]=s(null),[d,i]=s(null),[t,X0]=s(null),G0=!1;d0(()=>{if(H()!=="accounts"||G0)return;G0=!0,fq().then(c),Wq().then(i),Vq().then(X0)});function f0(){return GM(H(),{themeNames:I(),focusAccentSlots:dY,engineList:x0(),hasDaemon:M})}function _(){return f0().length}function M0(){return EY(J.kv.get(KZ,uY))}function b(x){if(Z.selected===x)return;if(!Z.set(x))return;J.kv.set("activeTheme",x),J.onVisualPrefsChange?.()}function p(){return i8()}function w(x){if(i8()===x)return;IQ(x),J.kv.set(Pj,x),J.onVisualPrefsChange?.()}function R(x){if(Z.transparentBackground===x)return;Z.setTransparentBackground(x),J.kv.set("transparentBackground",x),J.onVisualPrefsChange?.()}function e(){R(!Z.transparentBackground)}function T(x){if(Z.focusAccent===x)return;Z.setFocusAccent(x),J.kv.set("focusAccent",x),J.onVisualPrefsChange?.()}function a(x){J.kv.set(KZ,x)}function q0(){return J.kv.get("notifications.toast.enabled",!0)!==!1}function H0(){return J.kv.get("notifications.sound.enabled",!0)!==!1}function j0(){J.kv.set("notifications.toast.enabled",!q0())}function y0(){J.kv.set("notifications.sound.enabled",!H0())}function i0(){return J.kv.get(KH,!0)!==!1}function N0(){J.kv.set(KH,!i0())}function J1(){return J.kv.get("experimental.remoteProjects",!1)===!0}function b0(){J.kv.set("experimental.remoteProjects",!J1())}function p0(){return J.kv.get(FY,!1)===!0}function E0(){J.kv.set(FY,!p0())}function T0(){return J.kv.get(MY,!1)===!0}function G1(){J.kv.set(MY,!T0())}function m(){return J.kv.get(hG,!1)===!0}function B0(){J.kv.set(hG,!m())}function z0(){let x=J.kv.get("customEngineIds",[]);return Array.isArray(x)?x.filter((L0)=>typeof L0==="string"&&L0.trim().length>0):[]}function x0(){return[...s1,...z0()]}function n(x){let L0=J.kv.get(gz(x),"");return typeof L0==="string"?L0.trim():""}function V0(x){return n(x)||PG(x).join(" ")}function k0(x){return KJ(x)&&n(x).length===0&&!Y1(x)}function l0(x){let L0=J.kv.get(Nz(x),"");return typeof L0==="string"?L0.trim():""}function Y1(x){return l0(x).length>0}function $0(x){return l0(x)||k9[x]||x}let[Q1,R1]=s(nJ(x1("lastSelectedVendor"),z0()));function O1(x){return Q1()===x}function Z0(x){QJ("lastSelectedVendor",x),J.kv.set("lastSelectedVendor",x),R1(x)}async function Q0(x){let L0=await tz.show(z,V0(x),{dialogTitle:`${$0(x)} launch command`,fieldLabel:"command",submitLabel:"save",allowEmpty:!0});if(L0===void 0)return;J.kv.set(gz(x),L0.trim())}async function K0(x){let L0=await tz.show(z,$0(x),{dialogTitle:`${$0(x)} display name (blank = default)`,fieldLabel:"name",submitLabel:"save",allowEmpty:!0});if(L0===void 0)return;J.kv.set(Nz(x),L0.trim())}function R0(x){if(J.kv.set(gz(x),""),J.kv.set(Nz(x),""),!KJ(x))J.kv.set("customEngineIds",z0().filter((L0)=>L0!==x)),U((L0)=>Math.max(0,Math.min(L0,x0().length)))}async function U0(){let x=await tz.show(z,"",{dialogTitle:"Add engine",fieldLabel:"id",submitLabel:"next",placeholder:"lowercase slug, e.g. aider"});if(x===void 0)return;let L0=x.trim().toLowerCase();if(!L0||KJ(L0)||z0().includes(L0))return;let T1=await tz.show(z,"",{dialogTitle:`Add engine \xB7 ${L0}`,fieldLabel:"command",submitLabel:"next",placeholder:"e.g. aider --model sonnet"});if(T1===void 0)return;let g1=await tz.show(z,L0,{dialogTitle:`Add engine \xB7 ${L0}`,fieldLabel:"name",submitLabel:"add",allowEmpty:!0});if(J.kv.set("customEngineIds",[...z0(),L0]),T1.trim())J.kv.set(gz(L0),T1.trim());let n1=g1?.trim()??"";J.kv.set(Nz(L0),n1&&n1!==L0?n1:QE(L0))}function P0(){if(H()!=="engines"||G()!=="body")return null;let x=$j(f0(),f());return x?.kind==="engine"?x.vendor:null}function C0(){return xX(J.kv.get(UZ,dH))}function r0(){let x=xY.indexOf(C0()),L0=xY[(x+1)%xY.length];if(L0)J.kv.set(UZ,L0)}function I0(){let x=J.kv.get(aZ,"");return typeof x==="string"?x:""}async function u0(){let x=await tz.show(z,I0(),{dialogTitle:"Custom editor command (use {file} for the path)",fieldLabel:"command",submitLabel:"save",allowEmpty:!0});if(x===void 0)return;let L0=x.trim();if(J.kv.set(aZ,L0),L0)J.kv.set(UZ,"custom")}function q1(){let x=J.kv.get(vZ,"");return typeof x==="string"?x:""}let W1=()=>wU(q1());function V1(){let x=W1();if(x==="default")return F("settings.general.worktreeKindDefault");if(x==="nextToProject")return F("settings.general.worktreeKindNext");return F("settings.general.worktreeKindCustom")}function H1(){let x=J.kv.get(lq,"");return(typeof x==="string"?x.trim():"")||(W1()==="custom"?q1().trim():"")}function S(){let x=W1();if(x==="default")J.kv.set(vZ,M9);else if(x==="nextToProject")J.kv.set(vZ,H1());else J.kv.set(lq,q1().trim()),J.kv.set(vZ,"")}async function F0(){let x=await tz.show(z,H1(),{dialogTitle:F("settings.general.worktreeBaseTitle"),fieldLabel:F("settings.general.worktreeBaseField"),submitLabel:"save",placeholder:`${fZ}/../worktrees`,allowEmpty:!0});if(x===void 0)return;let L0=x.trim();if(L0.includes(fZ)){if(!O9(L0)){await Wz.show(z,"Can't use that worktree location",`${fZ} only expands as the leading path segment (e.g. ${fZ}/../kobe-worktrees). Keeping the previous setting.`,"cancel");return}}else if(L0){let T1=A9(L0)??L0;try{XE(T1,{recursive:!0}),ZE(T1,YE.W_OK)}catch(g1){await Wz.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(lq,L0),L0)J.kv.set(vZ,L0);else if(W1()==="custom")J.kv.set(vZ,"")}async function U1(){h("submitting...");try{let x=iX({title:L(),body:A()});h(`sent: ${x.url}`),O(""),g(""),U(0)}catch(x){h(`error: ${x instanceof Error?x.message:String(x)}`)}}let L1=()=>H()==="feedback"&&G()==="body";function c0(x){let L0=f()+x;if(L0<0||L0>2){q("sidebar");return}U(L0)}function t0(){if(G()!=="sidebar"||_()===0)return;if(q("body"),U(0),H()==="general")N(0)}function h0(x){if(G()==="sidebar"){let g1=(B()+x+iY.length)%iY.length;V(g1);let n1=iY[g1];if(n1)j(n1.id),U(0);return}let L0=_();if(L0===0)return;let T1=(f()+x+L0)%L0;if(U(T1),$j(f0(),T1)?.kind==="theme")N(T1)}function $(x){j(x),V(iY.findIndex((L0)=>L0.id===x)),U(0),q("sidebar")}let A0={theme:(x)=>b(x.name),language:(x)=>w(x.locale),transparent:()=>e(),focusAccent:(x)=>T(x.slot),toast:()=>j0(),sound:()=>y0(),zenKeepTasks:()=>N0(),surface:(x)=>a(x.surface),editorKind:()=>r0(),editorCustom:()=>void u0(),worktreeBase:()=>S(),worktreeCustom:()=>void F0(),engine:(x)=>void Q0(x.vendor),engineAdd:()=>void U0(),feedbackTitle:()=>U(0),feedbackBody:()=>U(1),feedbackSend:()=>void U1(),devReset:()=>void CW(z,J.kv,Y),devRestartDaemon:()=>void bW(z,J.orchestrator,Y),devRemoteProjects:()=>b0(),devAutoStatus:()=>E0(),devDispatcher:()=>G1(),devArchivedHistory:()=>B0()};function J0(){let x=$j(f0(),f());if(!x)return;A0[x.kind](x)}return M1(()=>({enabled:(!J.standalone||z.stack.length===0)&&!L1(),bindings:[{key:"down",cmd:()=>h0(1)},{key:"up",cmd:()=>h0(-1)},{key:"j",cmd:()=>h0(1)},{key:"k",cmd:()=>h0(-1)},{key:"tab",cmd:()=>h0(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 x=P0();if(x)K0(x)}},{key:"x",cmd:()=>{let x=P0();if(x)R0(x)}},{key:"d",cmd:()=>{let x=P0();if(x)Z0(x)}}]})),M1(()=>({enabled:L1(),bindings:[{key:"tab",cmd:()=>c0(1)},{key:"shift+tab",cmd:()=>c0(-1)}]})),M1(()=>({enabled:L1()&&f()===2,bindings:[{key:"return",cmd:()=>void U1()}]})),(()=>{var x=W("box"),L0=W("box"),T1=W("text"),g1=W("text"),n1=W("box"),v1=W("box"),fJ=W("box"),dJ=W("text");return D(x,L0),D(x,n1),D(x,fJ),Q(x,"paddingLeft",2),Q(x,"paddingRight",2),Q(x,"paddingBottom",1),Q(x,"gap",1),D(L0,T1),D(L0,g1),Q(L0,"flexDirection","row"),Q(L0,"justifyContent","space-between"),K(T1,()=>F("settings.title")),Q(g1,"onMouseUp",()=>J.onClose()),K(g1,()=>F("settings.esc")),D(n1,v1),Q(n1,"flexDirection","row"),Q(n1,"gap",2),K(n1,k(QM,{level:G,cursor:B,switchSection:$}),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(qM,{level:G,bodyRow:f,setLevel:q,setBodyRow:U,themeNames:I,setThemeCursor:N,selectTheme:b,currentLocale:p,selectLanguage:w,toggleTransparent:e,selectFocusAccent:T,toastEnabled:q0,soundEnabled:H0,toggleToast:j0,toggleSound:y0,zenKeepsTasks:i0,toggleZenKeepsTasks:N0,settingsSurface:M0,selectSurface:a,editorKind:C0,cycleEditorKind:r0,editorCustomCommand:I0,editEditorCustom:()=>void u0(),worktreeKind:W1,worktreeKindLabel:V1,cycleWorktreeBase:S,worktreeCustomPath:H1,editWorktreeCustom:()=>void F0()})}}),null),K(v1,k(Y0,{get when(){return H()==="engines"},get children(){return k(HM,{level:G,bodyRow:f,setLevel:q,setBodyRow:U,get vendors(){return x0()},isCustom:(B1)=>!KJ(B1),displayName:$0,commandText:V0,isDefault:k0,isDefaultEngine:O1,editEngine:(B1)=>void Q0(B1),renameEngine:(B1)=>void K0(B1),resetEngine:R0,onAddEngine:()=>void U0()})}}),null),K(v1,k(Y0,{get when(){return H()==="accounts"},get children(){return k(jM,{claudeStatus:y,codexStatus:d,copilotStatus:t})}}),null),K(v1,k(Y0,{get when(){return H()==="keys"},get children(){return k(WM,{})}}),null),K(v1,k(Y0,{get when(){return H()==="feedback"},get children(){return k(BM,{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(fM,{level:G,bodyRow:f,setLevel:q,setBodyRow:U,hasDaemon:M,confirmReset:()=>void CW(z,J.kv,Y),confirmRestartDaemon:()=>void bW(z,J.orchestrator,Y),remoteProjectsEnabled:J1,toggleRemoteProjects:b0,autoStatusEnabled:p0,toggleAutoStatus:E0,dispatcherEnabled:T0,toggleDispatcher:G1,archivedHistoryEnabled:m,toggleArchivedHistory:B0})}}),null),D(fJ,dJ),Q(fJ,"paddingTop",0),K(dJ,(()=>{var B1=g0(()=>!!L1());return()=>B1()?F("settings.nav.feedback"):F("settings.nav.default")})()),u((B1)=>{var l=GE.BOLD,r=X.text,o=X.textMuted,v=X.textMuted;return l!==B1.e&&(B1.e=Q(T1,"attributes",l,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(dJ,"fg",v,B1.o)),B1},{e:void 0,t:void 0,a:void 0,o:void 0}),x})()}var TW=C(()=>{P();P();P();P();P();P();P();P();D1();HY();Gz();qj();oq();wG();_q();S1();R9();P9();t1();c1();BJ();nH();SJ();UW();sJ();lj();NW();XM();yW();VM();lY.show=(J,z,Z)=>{let Y=!1;return new Promise((X)=>{J.replace(()=>k(lY,{kv:z,orchestrator:Z,onVisualPrefsChange:()=>{Y=!0},onClose:()=>X({visualPrefsChanged:Y})}),()=>X({visualPrefsChanged:Y}))})}});import{TextAttributes as qE}from"@opentui/core";function KM(){let{theme:J}=w0(),z=rz(),Z=Ej(),Y=()=>Z.toasts().slice(-UM),X=()=>Math.max(0,z().width-HE-jE),G=()=>Math.max(0,z().height-BE-UM-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(X1,{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=qE.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 UM=4,HE=40,jE=2,BE=2;var DM=C(()=>{P();P();P();P();P();P();P();D1();wj();c1()});import{TextAttributes as fE}from"@opentui/core";function WE(J,z){let Z=J?`v${J}`:F("update.skew.olderBuild");return F("update.skew.hint",{daemon:Z,clientVersion:z})}function LM(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,()=>F("update.skew.title")),D(H,j),Q(H,"flexDirection","row"),Q(H,"gap",1),Q(j,"wrapMode","word"),K(j,()=>WE(J.daemonVersion(),J.clientVersion)),u((B)=>{var{warning:V,warning:f}=z,U=fE.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 FM=C(()=>{P();P();P();P();P();P();D1();c1();BJ()});function MM(J,z){return J.find((Z)=>Z.id!==z&&!Z.archived)}function OM(J,z){let Z=J.activeTaskSignal;if(typeof Z!=="function")return!0;return Z.call(J)()===z}async function VE(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=MM(J.tasks,J.taskId);if(await $z(Y,X?y1(X.id):void 0).catch((G)=>{J.logger.error(`${J.logPrefix} switch-client failed:`,G)}),J.updateActiveTask&&OM(J.orch,J.taskId))await J.orch.setActiveTask(X?.id??null).catch(()=>{});return await cJ(Y).catch((G)=>{J.logger.error(`${J.logPrefix} kill tmux session failed:`,G)}),{archived:Z,nextTask:X}}async function UE(J){let z=MM(J.tasks,J.taskId),Z=y1(J.taskId);if(J.switchBeforeKill)await $z(Z,z?y1(z.id):void 0).catch((Y)=>{J.logger.error(`${J.logPrefix} switch-client failed:`,Y)});if(J.updateActiveTask&&J.orch&&OM(J.orch,J.taskId))await J.orch.setActiveTask(z?.id??null).catch(()=>{});return await cJ(Z).catch((Y)=>{J.logger.error(`${J.logPrefix} kill tmux session failed:`,Y)}),{nextTask:z}}async function AM(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 VE({orch:J.orch,tasks:J.tasks(),taskId:z,logger:J.logger,logPrefix:J.logPrefix,updateActiveTask:J.updateActiveTask}))return;await J.reload?.()}async function RM(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(K9)){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 UE({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 gM(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 NM(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 CM(J,z){let Z=J.tasks().find((G)=>G.id===z);if(!Z||!J.orch)return;let Y=await QZ(),X=bZ(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 ${OY(X)} (applies on reopen)`),await J.reload?.()}async function bM(J){let z=TJ(),Z=J.cursorRepo()??z[0]??process.cwd();if(J.openCreateSurface&&await J.openCreateSurface(Z))return;let Y=J.lastVendor()??zJ,X=await QZ();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),zZ(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?.(F("newTask.adopt.summaryNone",{error:V??""}));return}if(B<j)J.notifyInfo?.(F("newTask.adopt.summaryPartial",{done:B,total:j}));else J.notifyInfo?.(F("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 kM=C(()=>{HY();Gz();F9();S1();BJ();Xz();t1();HJ()});import{spawn as KE}from"child_process";import{existsSync as DE}from"fs";import{basename as LE,delimiter as FE,isAbsolute as ME,join as OE}from"path";function xW(J,z,Z){if(ME(J))return Z(J);let Y=z.PATH??"";for(let X of Y.split(FE)){if(!X)continue;if(Z(OE(X,J)))return!0}return!1}function gE(J){let z=LE(J);if(z==="code")return"VS Code";if(z==="cursor")return"Cursor";if(z==="windsurf")return"Windsurf";if(z==="zed")return"Zed";return z||J}function IM(J={}){let z=J.env??process.env,Z=J.platform??process.platform,Y=J.exists??DE,X=z.KOBE_OPEN_EDITOR?.trim();if(X)return{id:"env",label:gE(X),command:X,args:[]};for(let G of AE)if(xW(G.command,z,Y))return{id:G.id,label:G.label,command:G.command,args:[]};if(Z==="darwin"&&xW("open",z,Y)){for(let G of RE)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"&&xW("xdg-open",z,Y))return{id:"xdg-open",label:"Open",command:"xdg-open",args:[]};return null}function NE(J,z){return[z.command,[...z.args,J]]}function SM(J,z,Z={}){if(!J)return!1;let Y=Z.spawn??KE,[X,G]=NE(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 AE,RE;var yM=C(()=>{AE=[{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"}],RE=[{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 aj(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 _j(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 pj(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);qX(X,J,(G)=>J.run(Y,G),(G)=>X.write(G))},reset(){z.clear()}}}var PQ=C(()=>{D1();HX();HX()});import{stat as CE}from"fs/promises";import{join as bE}from"path";async function yE(J){try{let z=await CE(bE(J,".git","HEAD"));return`${z.mtimeMs}:${z.size}`}catch{return null}}async function TE(J,z,Z=jZ){let Y=await yE(J);if(Y!==null){let j=TM.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:rJ(),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:rJ(),signal:z})).status===0)X="(detached)",G=!0;if(G&&Y!==null)TM.set(J,{fingerprint:Y,value:X});return X}function uM(J){return xM.read(J)}function EM(J){Ez().then((z)=>{if(z)xM.poll(J)})}var kE=2000,IE=30000,SE=1500,TM,xM;var wM=C(()=>{_Z();YG();PQ();TM=new Map;xM=pj({initial:"",timeoutMs:kE,slowRetryMs:IE,minIntervalMs:SE,run:(J,z)=>TE(J,z)})});function uW(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 PM(J){let z=uW({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;M1(()=>({enabled:J.focused()&&!Y(),bindings:zY({"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?.()}})})),M1(()=>({enabled:J.focused()&&X(),bindings:[{key:"escape",cmd:()=>J.onMoveModeExit?.()}]})),M1(()=>({enabled:J.focused(),bindings:zY({"sidebar.view":(G,q)=>{J.onViewSwitch?.((q??0)%2===0?-1:1)}})})),M1(()=>({enabled:J.focused()&&Y(),bindings:zY({"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 hM=C(()=>{zG();SJ()});function EW(J,z){return aj(J,z)}function wW(J,z){return` ${EW(J,Math.max(0,z))}`}var vM=()=>{};function uE(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 EE(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 dM(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 wE(){return F("tasks.subtitle.noTracking")}function PE(){return F("tasks.subtitle.materializing")}function hE(J){if(J.kind==="main")return!1;return J.vendor!==void 0&&!KJ(J.vendor)}function PW(J){let{task:z}=J,Z=z.kind==="main",Y=Z?J.mainBranch??"":z.branch,X=xE[z.status],G=J.activity?.state,q=G!==void 0,H=vE(G),j=EE(G),B=hE(z)&&!q,V=J.job!==void 0,f=V||!B&&(G==="running"||J.live||!q&&!Z&&z.status==="in_progress"),U=HG[J.spinnerFrame]??HG[0],L=V?"primary":B?"textMuted":j?.tone??(f?"primary":H?.tone??X.tone),O=B?wE():uE(z.status),A=V?J.truncateBranch(PE(),J.subtitleBudget):j?J.truncateBranch(j.text,J.subtitleBudget):Y.length>0?J.truncateBranch(Y,J.subtitleBudget):J.truncateBranch(O,J.subtitleBudget),g=B?mM:H?.glyph??X.glyph,E=B?mM:H?.glyph??"\u2605";return{isMain:Z,titleText:Z?wz(z.repo):z.title,subtitleText:A,loading:f,stateGlyph:f?U:g,projectGlyph:f?U:E,tone:L}}function hW(J,z){if(!J.loading)return J;let Z=HG[z()%HG.length]??"\u280B";if(Z===J.stateGlyph&&Z===J.projectGlyph)return J;return{...J,stateGlyph:Z,projectGlyph:Z}}function vE(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 xE,HG,cM=100,mM="\xB7";var nM=C(()=>{BJ();t1();dj();xE={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"}};HG=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"]});function vW(J){return iM.read(J)}function mW(J){iM.poll(J)}var mE=4000,cE=60000,dE=1500,nE,iM;var lM=C(()=>{_Z();PQ();hX();PQ();nE={added:0,deleted:0},iM=pj({initial:nE,equals:pz,timeoutMs:mE,slowRetryMs:cE,minIntervalMs:dE,run:async(J,z)=>{let Z=await jZ("git",["status","--porcelain=v1"],{cwd:J,env:rJ(),signal:z});if(Z.status!==0)throw Error("git status failed");return PX(Z.stdout)}})});import{TextAttributes as d1}from"@opentui/core";function iE(J){switch(J){case"active":return F("tasks.view.workspace");case"archived":return F("tasks.view.archives")}}function aM(J,z=$E){return aj(J,z)}function rj(J){let z=0;for(let Z of J)z+=(Z.codePointAt(0)??0)>=4352?2:1;return z}function _M(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=GJ();if(!n)return;let V0=(k0)=>{if(k0.defaultPrevented)return;if(!Z())return;if(k0.ctrl||k0.meta||k0.option)return;if(k0.name==="backspace"){j(($0)=>$0.slice(0,-1));return}let l0=k0.sequence;if(!l0||l0.length!==1)return;let Y1=l0.charCodeAt(0);if(Y1<32||Y1===127)return;j(($0)=>$0+l0)};n.keyInput.on("keypress",V0),C1(()=>n.keyInput.off("keypress",V0))});let[A,g]=s(0),E=setInterval(()=>g((n)=>n+1),lE);C1(()=>clearInterval(E));let[h,I]=s(0),N=setInterval(()=>I((n)=>(n+1)%HG.length),cM);C1(()=>clearInterval(N));let M=()=>J.sortMode?.()??"default",y=D0(()=>a3(J.tasks(),Y())),c=D0(()=>{let n=f();if(!n)return null;let V0=fz(n);return y().find((k0)=>fz(k0.repo)===V0)??null}),d=D0(()=>c()?.repo??null),i=D0(()=>c()?.label??"all"),t=D0(()=>{let n=c();return n?n.count:y().reduce((V0,k0)=>V0+k0.count,0)}),X0=D0(()=>{let n=t();return`${n} ${n===1?F("tasks.project.taskSingular"):F("tasks.project.taskPlural")}`}),G0=D0((n)=>o3(n,OW(J.tasks(),Y(),G()?H():"",M(),d())),[]),f0=D0(()=>AW(G0())),_=D0(()=>r3(G0())),M0=D0(()=>_().projectRows),b=D0(()=>_().taskRows),p=D0(()=>{let n=new Map;for(let V0 of G0())n.set(V0.flatIndex,V0);return n}),w=D0(()=>AW(OW(J.tasks(),Y(),"",M(),d())).length),R=D0(()=>b().length>0);d0(()=>{let n=f(),V0=y();if(n!==null&&V0.length>0&&(V0.length<=1||c()===null))U(null)});function e(){let n=y();if(n.length<=1){U(null);return}let V0=d(),k0=V0?fz(V0):null,l0=k0===null?-1:n.findIndex(($0)=>fz($0.repo)===k0),Y1=n[l0+1];U(Y1?.repo??null)}let T=()=>J.width?J.width():$M,a=D0(()=>Math.max(6,T()-9)),q0=D0(()=>Math.max(6,T()-16)),H0=rz(),j0=D0(()=>{let n=Math.max(2,Math.min(10,Math.floor(H0().height*0.25))),V0=Math.max(2,M0().length*2);return Math.min(n,V0)}),[y0,i0]=s(null),[N0,J1]=s(-1),b0,p0,E0,T0=new Map;d0(()=>{let n=J.width?J.width():$M,V0=E0;if(!V0)return;V0.width=n,V0.flexShrink=1,V0.minHeight=0}),d0(XJ([N0,G0],([n])=>{let V0=p().get(n);if(!V0)return;let k0=V0.task.kind==="main"?b0:p0;if(!k0)return;if(k0.viewport.height<=0)return;let l0=T0.get(n);if(!l0)return;k0.scrollChildIntoView(l0.id)})),d0(XJ(()=>[J.selectedId(),f0()],([n,V0])=>{let k0=YJ(N0),l0=p3(n,V0,k0);if(l0!==k0)J1(l0)})),d0(XJ(Y,()=>{let n=f0();J1(n.length>0?0:-1)},{defer:!0})),d0(XJ(d,(n)=>J1(_3(G0(),n)),{defer:!0})),d0(XJ([G,H],()=>{if(!G())return;let n=f0();J1(n.length>0?0:-1)}));function G1(n){let V0=Y(),k0=hQ.findIndex(($0)=>$0.view===V0);if(k0<0)return;let l0=(k0+n+hQ.length)%hQ.length,Y1=hQ[l0];if(Y1)X(Y1.view)}let m=(n)=>{if(J.onActivate?.(n),!J.pinnedSelection)return;let V0=J.selectedId();if(!V0||n===V0)return;let k0=f0().indexOf(V0);if(k0>=0)J1(k0)};d0(XJ([N0,f0],([n,V0])=>{J.onCursorChange?.(n>=0&&n<V0.length?V0[n]:null)})),PM({focused:Z,cursorIndex:N0,setCursorIndex:J1,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,V0)=>J.onMoveRequest?.(n,V0),onMoveModeExit:()=>J.onMoveModeExit?.(),onRenameRequest:(n)=>J.onRenameRequest?.(n),onPinRequest:(n)=>J.onPinRequest?.(n),onPreviewToggleRequest:(n)=>J.onPreviewToggleRequest?.(n),onViewSwitch:(n)=>G1(n),onSortModeToggle:()=>J.onSortModeToggle?.(),onProjectFilterToggle:()=>e(),searchMode:G,onSearchEnter:()=>L(),onSearchExit:(n)=>O(n)});let B0=(n)=>(()=>{var V0=W("box"),k0=W("box"),l0=W("text"),Y1=W("text");return D(V0,k0),Q(V0,"flexDirection","column"),Q(V0,"flexShrink",0),K(V0,k(Y0,{get when(){return n.topPad},get children(){var $0=W("box"),Q1=W("text");return D($0,Q1),Q($0,"flexShrink",0),D(Q1,S0(" ")),Q(Q1,"wrapMode","none"),$0}}),k0),D(k0,l0),D(k0,Y1),Q(k0,"flexDirection","row"),Q(k0,"flexShrink",0),Q(k0,"gap",1),Q(k0,"paddingLeft",1),Q(k0,"paddingRight",1),Q(l0,"wrapMode","none"),K(l0,()=>n.label),Q(Y1,"wrapMode","none"),K(Y1,()=>"\u2500".repeat(Math.max(2,T()-10-n.label.length-(n.suffix?.length??0)))),K(k0,k(Y0,{get when(){return n.suffix},get children(){var $0=W("text");return Q($0,"wrapMode","none"),K($0,()=>n.suffix),u((Q1)=>{var R1=z.info,O1=d1.BOLD;return R1!==Q1.e&&(Q1.e=Q($0,"fg",R1,Q1.e)),O1!==Q1.t&&(Q1.t=Q($0,"attributes",O1,Q1.t)),Q1},{e:void 0,t:void 0}),$0}}),null),u(($0)=>{var Q1=z.textMuted,R1=d1.BOLD,O1=z.border;return Q1!==$0.e&&($0.e=Q(l0,"fg",Q1,$0.e)),R1!==$0.t&&($0.t=Q(l0,"attributes",R1,$0.t)),O1!==$0.a&&($0.a=Q(Y1,"fg",O1,$0.a)),$0},{e:void 0,t:void 0,a:void 0}),V0})(),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 V0=n.row.task,k0=n.row.flatIndex,l0=()=>k0===N0(),Y1=()=>V0.id===J.selectedId(),$0=D0(()=>{let U0=J.chatRunState?.();if(!U0)return!1;let P0=`${V0.id}:`;for(let[C0,r0]of U0)if(r0==="running"&&C0.startsWith(P0))return!0;return!1}),Q1=D0(()=>{let U0=tH(J.worktreeChanges?.(),V0.worktreePath);if(U0)return U0;if(A(),!V0.archived)mW(V0.worktreePath);return vW(V0.worktreePath)},void 0,{equals:pz}),R1=D0(()=>{return A(),EM(V0.repo),uM(V0.repo)}),O1=D0(()=>PW({task:V0,activity:J.engineState?.().get(V0.id),job:J.taskJobs?.().get(V0.id),live:$0(),spinnerFrame:0,subtitleBudget:q0(),truncateBranch:aM,mainBranch:R1()})),Z0=D0(()=>hW(O1(),h)),Q0=()=>!Z0().loading?z.primary:z0(Z0().tone),K0=()=>l0()?z.focusAccent:Y1()?z.primary:void 0,R0=()=>l0()||Y1()?"\u258C":" ";return(()=>{var U0=W("box"),P0=W("box"),C0=W("box"),r0=W("text"),I0=W("box"),u0=W("text"),q1=W("text"),W1=W("box"),V1=W("text"),H1=W("box"),S=W("text");return D(U0,P0),Q(U0,"flexDirection","column"),Q(U0,"gap",0),Q(U0,"paddingBottom",0),D(P0,C0),D(P0,W1),jz((F0)=>{T0.set(k0,F0),C1(()=>{if(T0.get(k0)===F0)T0.delete(k0)})},P0),Q(P0,"flexDirection","column"),Q(P0,"gap",0),Q(P0,"onMouseUp",()=>{if(J1(k0),J.onSelect(V0.id),J.activateOnClick)m(V0.id)}),Q(P0,"onMouseOver",(F0)=>i0({task:V0,x:F0.x,y:F0.y})),Q(P0,"onMouseOut",()=>i0((F0)=>F0?.task.id===V0.id?null:F0)),D(C0,r0),D(C0,I0),Q(C0,"flexDirection","row"),Q(C0,"gap",0),Q(r0,"wrapMode","none"),K(r0,R0),D(I0,u0),D(I0,q1),Q(I0,"flexDirection","row"),Q(I0,"flexGrow",1),Q(I0,"paddingRight",1),Q(I0,"gap",0),Q(u0,"wrapMode","none"),K(u0,()=>Z0().projectGlyph),Q(q1,"wrapMode","none"),Q(q1,"flexGrow",1),K(q1,()=>wW(Z0().titleText,a())),D(W1,V1),D(W1,H1),Q(W1,"flexDirection","row"),Q(W1,"gap",0),Q(V1,"wrapMode","none"),K(V1,R0),D(H1,S),Q(H1,"flexDirection","row"),Q(H1,"flexGrow",1),Q(H1,"paddingLeft",2),Q(H1,"paddingRight",1),Q(H1,"gap",1),Q(S,"wrapMode","none"),Q(S,"flexGrow",1),K(S,()=>Z0().subtitleText),K(H1,k(Y0,{get when(){return Q1().added>0},get children(){var F0=W("text"),U1=S0("+");return D(F0,U1),Q(F0,"wrapMode","none"),K(F0,()=>Q1().added,null),u((L1)=>Q(F0,"fg",z.success,L1)),F0}}),null),K(H1,k(Y0,{get when(){return Q1().deleted>0},get children(){var F0=W("text"),U1=S0("\u2212");return D(F0,U1),Q(F0,"wrapMode","none"),K(F0,()=>Q1().deleted,null),u((L1)=>Q(F0,"fg",z.error,L1)),F0}}),null),u((F0)=>{var U1=l0()?z.backgroundElement:void 0,L1=K0(),c0=Q0(),t0=d1.BOLD,h0=z.text,$=d1.BOLD,A0=K0(),J0=z.textMuted,x=d1.DIM;return U1!==F0.e&&(F0.e=Q(P0,"backgroundColor",U1,F0.e)),L1!==F0.t&&(F0.t=Q(r0,"fg",L1,F0.t)),c0!==F0.a&&(F0.a=Q(u0,"fg",c0,F0.a)),t0!==F0.o&&(F0.o=Q(u0,"attributes",t0,F0.o)),h0!==F0.i&&(F0.i=Q(q1,"fg",h0,F0.i)),$!==F0.n&&(F0.n=Q(q1,"attributes",$,F0.n)),A0!==F0.s&&(F0.s=Q(V1,"fg",A0,F0.s)),J0!==F0.h&&(F0.h=Q(S,"fg",J0,F0.h)),x!==F0.r&&(F0.r=Q(S,"attributes",x,F0.r)),F0},{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}),U0})()};return(()=>{var n=W("box"),V0=W("box"),k0=W("box"),l0=W("text"),Y1=W("box"),$0=W("box"),Q1=W("text"),R1=W("scrollbox"),O1=W("box");return D(n,V0),D(n,Y1),D(n,R1),jz((Z0)=>{E0=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(V0,k0),Q(V0,"flexDirection","row"),Q(V0,"justifyContent","space-between"),Q(V0,"gap",1),Q(V0,"paddingBottom",1),Q(V0,"paddingLeft",1),Q(V0,"paddingRight",1),D(k0,l0),Q(k0,"flexDirection","row"),Q(k0,"gap",1),D(l0,S0("KOBE")),Q(l0,"wrapMode","none"),K(k0,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((K0)=>{var R0=Z0().emphasize?z.warning:z.textMuted,U0=Z0().emphasize?d1.BOLD:d1.DIM;return R0!==K0.e&&(K0.e=Q(Q0,"fg",R0,K0.e)),U0!==K0.t&&(K0.t=Q(Q0,"attributes",U0,K0.t)),K0},{e:void 0,t:void 0}),Q0})()}),null),K(V0,k(Y0,{get when(){return J.onAddTask},get children(){var Z0=W("text");return D(Z0,S0("[+]")),Q(Z0,"wrapMode","none"),Q(Z0,"onMouseUp",()=>J.onAddTask?.()),u((Q0)=>{var K0=z.primary,R0=d1.BOLD;return K0!==Q0.e&&(Q0.e=Q(Z0,"fg",K0,Q0.e)),R0!==Q0.t&&(Q0.t=Q(Z0,"attributes",R0,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"),K0=W("text"),R0=W("text");return D(Z0,Q0),D(Z0,K0),D(Z0,R0),Q(Z0,"flexDirection","row"),Q(Z0,"gap",0),Q(Z0,"paddingBottom",1),Q(Z0,"paddingLeft",1),D(Q0,S0("/")),Q(Q0,"wrapMode","none"),Q(K0,"wrapMode","none"),K(K0,H),D(R0,S0("\u2588")),Q(R0,"wrapMode","none"),K(Z0,k(Y0,{get when(){return H().length===0},get children(){var U0=W("text"),P0=S0(" ");return D(U0,P0),Q(U0,"wrapMode","none"),K(U0,()=>F("tasks.search.placeholder"),null),u((C0)=>Q(U0,"fg",z.textMuted,C0)),U0}}),null),K(Z0,k(Y0,{get when(){return H().length>0},get children(){var U0=W("text"),P0=S0(" "),C0=S0("/");return D(U0,P0),D(U0,C0),Q(U0,"wrapMode","none"),K(U0,()=>f0().length,C0),K(U0,w,null),u((r0)=>Q(U0,"fg",z.textMuted,r0)),U0}}),null),u((U0)=>{var{info:P0,text:C0,info:r0}=z,I0=d1.BLINK;return P0!==U0.e&&(U0.e=Q(Q0,"fg",P0,U0.e)),C0!==U0.t&&(U0.t=Q(K0,"fg",C0,U0.t)),r0!==U0.a&&(U0.a=Q(R0,"fg",r0,U0.a)),I0!==U0.o&&(U0.o=Q(R0,"attributes",I0,U0.o)),U0},{e:void 0,t:void 0,a:void 0,o:void 0}),Z0}}),Y1),D(Y1,$0),Q(Y1,"flexDirection","row"),Q(Y1,"justifyContent","space-between"),Q(Y1,"gap",1),Q(Y1,"paddingBottom",1),Q(Y1,"paddingLeft",1),Q(Y1,"paddingRight",1),D($0,Q1),Q($0,"flexDirection","row"),Q($0,"gap",2),K($0,k(X1,{each:hQ,children:(Z0)=>{let Q0=()=>Y()===Z0.view;return(()=>{var K0=W("text");return Q(K0,"wrapMode","none"),Q(K0,"onMouseUp",()=>X(Z0.view)),K(K0,()=>iE(Z0.view)),u((R0)=>{var U0=Q0()?z.primary:z.textMuted,P0=Q0()?d1.BOLD:void 0;return U0!==R0.e&&(R0.e=Q(K0,"fg",U0,R0.e)),P0!==R0.t&&(R0.t=Q(K0,"attributes",P0,R0.t)),R0},{e:void 0,t:void 0}),K0})()}}),Q1),D(Q1,S0("[/]")),Q(Q1,"wrapMode","none"),K(Y1,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,()=>F("tasks.sort")),u((Q0)=>{var K0=z.textMuted,R0=d1.DIM;return K0!==Q0.e&&(Q0.e=Q(Z0,"fg",K0,Q0.e)),R0!==Q0.t&&(Q0.t=Q(Z0,"attributes",R0,Q0.t)),Q0},{e:void 0,t:void 0}),Z0}}),null),K(n,k(Y0,{get when(){return M0().length>0},get children(){var Z0=W("box"),Q0=W("box"),K0=W("text"),R0=W("text"),U0=W("scrollbox"),P0=W("box");return D(Z0,Q0),D(Z0,U0),Q(Z0,"flexDirection","column"),Q(Z0,"flexShrink",0),D(Q0,K0),D(Q0,R0),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(K0,"wrapMode","none"),K(K0,()=>F("tasks.header.projects")),K(Q0,k(Y0,{get when(){return y().length>1},get children(){var C0=W("text");return Q(C0,"wrapMode","none"),K(C0,i),u((r0)=>{var I0=d()?z.primary:z.textMuted,u0=d()?d1.BOLD:void 0;return I0!==r0.e&&(r0.e=Q(C0,"fg",I0,r0.e)),u0!==r0.t&&(r0.t=Q(C0,"attributes",u0,r0.t)),r0},{e:void 0,t:void 0}),C0}}),R0),Q(R0,"wrapMode","none"),K(R0,()=>"\u2500".repeat(Math.max(2,T()-10-F("tasks.header.projects").length-(y().length>1?i().length+1:0)-(y().length>1?X0().length+1:0)))),K(Q0,k(Y0,{get when(){return y().length>1},get children(){var C0=W("text");return Q(C0,"wrapMode","none"),K(C0,X0),u((r0)=>{var I0=z.textMuted,u0=d1.DIM;return I0!==r0.e&&(r0.e=Q(C0,"fg",I0,r0.e)),u0!==r0.t&&(r0.t=Q(C0,"attributes",u0,r0.t)),r0},{e:void 0,t:void 0}),C0}}),null),D(U0,P0),jz((C0)=>{b0=C0},U0),Q(U0,"flexShrink",0),Q(U0,"flexGrow",0),Q(U0,"minHeight",0),Q(U0,"stickyScroll",!1),Q(U0,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),Q(P0,"flexShrink",0),Q(P0,"gap",0),Q(P0,"paddingRight",1),K(P0,k(X1,{get each(){return M0()},children:(C0)=>k(x0,{row:C0})})),u((C0)=>{var r0=z.textMuted,I0=d1.BOLD,u0=z.border,q1=j0();return r0!==C0.e&&(C0.e=Q(K0,"fg",r0,C0.e)),I0!==C0.t&&(C0.t=Q(K0,"attributes",I0,C0.t)),u0!==C0.a&&(C0.a=Q(R0,"fg",u0,C0.a)),q1!==C0.o&&(C0.o=Q(U0,"maxHeight",q1,C0.o)),C0},{e:void 0,t:void 0,a:void 0,o:void 0}),Z0}}),R1),K(n,k(B0,{get label(){return F("tasks.header.tasks")},get suffix(){return g0(()=>M()==="default")()?void 0:M()},get topPad(){return M0().length>0}}),R1),D(R1,O1),jz((Z0)=>{p0=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(X1,{get each(){return b()},children:(Z0)=>{let{task:Q0,flatIndex:K0}=Z0,R0=()=>K0===N0(),U0=()=>Q0.id===J.selectedId(),P0=D0(()=>{let V1=J.chatRunState?.();if(!V1)return!1;let H1=`${Q0.id}:`;for(let[S,F0]of V1)if(F0==="running"&&S.startsWith(H1))return!0;return!1}),C0=D0(()=>{let V1=tH(J.worktreeChanges?.(),Q0.worktreePath);if(V1)return V1;if(A(),!Q0.archived)mW(Q0.worktreePath);return vW(Q0.worktreePath)},void 0,{equals:pz}),r0=D0(()=>PW({task:Q0,activity:J.engineState?.().get(Q0.id),job:J.taskJobs?.().get(Q0.id),live:P0(),spinnerFrame:0,subtitleBudget:q0(),truncateBranch:aM,mainBranch:""})),I0=D0(()=>hW(r0(),h)),u0=()=>z0(I0().tone),q1=()=>R0()?z.focusAccent:U0()?z.primary:void 0,W1=()=>R0()||U0()?"\u258C":" ";return(()=>{var V1=W("box"),H1=W("box"),S=W("box"),F0=W("text"),U1=W("box"),L1=W("text"),c0=W("text"),t0=W("box"),h0=W("text"),$=W("box"),A0=W("text");return D(V1,H1),Q(V1,"flexDirection","column"),Q(V1,"gap",0),Q(V1,"paddingBottom",1),D(H1,S),D(H1,t0),jz((J0)=>{T0.set(K0,J0),C1(()=>{if(T0.get(K0)===J0)T0.delete(K0)})},H1),Q(H1,"flexDirection","column"),Q(H1,"gap",0),Q(H1,"onMouseUp",()=>{if(J1(K0),J.onSelect(Q0.id),J.activateOnClick)m(Q0.id)}),Q(H1,"onMouseOver",(J0)=>i0({task:Q0,x:J0.x,y:J0.y})),Q(H1,"onMouseOut",()=>i0((J0)=>J0?.task.id===Q0.id?null:J0)),D(S,F0),D(S,U1),Q(S,"flexDirection","row"),Q(S,"gap",0),Q(F0,"wrapMode","none"),K(F0,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,()=>I0().stateGlyph),Q(c0,"wrapMode","none"),Q(c0,"flexGrow",1),K(c0,()=>wW(I0().titleText,a())),K(U1,k(Y0,{get when(){return g0(()=>!!J.moveMode?.())()&&R0()},get children(){var J0=W("text");return Q(J0,"wrapMode","none"),K(J0,()=>F("tasks.moveChip")),u((x)=>Q(J0,"fg",z.warning,x)),J0}}),null),D(t0,h0),D(t0,$),Q(t0,"flexDirection","row"),Q(t0,"gap",0),Q(h0,"wrapMode","none"),K(h0,W1),D($,A0),Q($,"flexDirection","row"),Q($,"flexGrow",1),Q($,"paddingLeft",2),Q($,"paddingRight",1),Q($,"gap",1),Q(A0,"wrapMode","none"),Q(A0,"flexGrow",1),K(A0,()=>I0().subtitleText),K($,k(Y0,{get when(){return Q0.pinned===!0},get children(){var J0=W("text");return D(J0,S0("\u25B4")),Q(J0,"wrapMode","none"),u((x)=>Q(J0,"fg",z.warning,x)),J0}}),null),K($,k(Y0,{get when(){return dM(Q0)},children:(J0)=>(()=>{var x=W("text");return Q(x,"wrapMode","none"),K(x,()=>J0().glyph),u((L0)=>Q(x,"fg",z0(J0().tone),L0)),x})()}),null),K($,k(Y0,{get when(){return C0().added>0},get children(){var J0=W("text"),x=S0("+");return D(J0,x),Q(J0,"wrapMode","none"),K(J0,()=>C0().added,null),u((L0)=>Q(J0,"fg",z.success,L0)),J0}}),null),K($,k(Y0,{get when(){return C0().deleted>0},get children(){var J0=W("text"),x=S0("\u2212");return D(J0,x),Q(J0,"wrapMode","none"),K(J0,()=>C0().deleted,null),u((L0)=>Q(J0,"fg",z.error,L0)),J0}}),null),u((J0)=>{var x=R0()?z.backgroundElement:void 0,L0=q1(),T1=u0(),g1=d1.BOLD,n1=z.text,v1=U0()||R0()?d1.BOLD:void 0,fJ=q1(),dJ=z.textMuted,B1=d1.DIM;return x!==J0.e&&(J0.e=Q(H1,"backgroundColor",x,J0.e)),L0!==J0.t&&(J0.t=Q(F0,"fg",L0,J0.t)),T1!==J0.a&&(J0.a=Q(L1,"fg",T1,J0.a)),g1!==J0.o&&(J0.o=Q(L1,"attributes",g1,J0.o)),n1!==J0.i&&(J0.i=Q(c0,"fg",n1,J0.i)),v1!==J0.n&&(J0.n=Q(c0,"attributes",v1,J0.n)),fJ!==J0.s&&(J0.s=Q(h0,"fg",fJ,J0.s)),dJ!==J0.h&&(J0.h=Q(A0,"fg",dJ,J0.h)),B1!==J0.r&&(J0.r=Q(A0,"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 K0=g0(()=>!!(G()&&H().trim().length>0));return()=>K0()?F("tasks.empty.noMatchSearch"):g0(()=>!!d())()?g0(()=>Y()==="active")()?F("tasks.empty.noActiveProject"):F("tasks.empty.noArchivedProject"):g0(()=>Y()==="active")()?F("tasks.empty.noActive"):F("tasks.empty.noArchived")})()),u((K0)=>Q(Q0,"fg",z.textMuted,K0)),Z0}}),null),K(O1,k(Y0,{get when(){return g0(()=>!!(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 K0=g0(()=>Y()==="active");return()=>K0()?F("tasks.empty.noActiveProject"):F("tasks.empty.noArchivedProject")})()),u((K0)=>{var R0=z.textMuted,U0=d1.DIM;return R0!==K0.e&&(K0.e=Q(Q0,"fg",R0,K0.e)),U0!==K0.t&&(K0.t=Q(Q0,"attributes",U0,K0.t)),K0},{e:void 0,t:void 0}),Z0}}),null),K(O1,k(Y0,{get when(){return g0(()=>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,()=>F("tasks.archiveHint")),u((K0)=>{var R0=z.textMuted,U0=d1.DIM;return R0!==K0.e&&(K0.e=Q(Q0,"fg",R0,K0.e)),U0!==K0.t&&(K0.t=Q(Q0,"attributes",U0,K0.t)),K0},{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,S0("\u262F ZEN")),Q(Q0,"wrapMode","none"),Q(Q0,"onMouseUp",()=>J.onZenClick?.()),u((K0)=>{var R0=z.accent,U0=d1.BOLD;return R0!==K0.e&&(K0.e=Q(Q0,"fg",R0,K0.e)),U0!==K0.t&&(K0.t=Q(Q0,"attributes",U0,K0.t)),K0},{e:void 0,t:void 0}),Z0}}),null),K(n,k(Y0,{get when(){return y0()},children:(Z0)=>{let Q0=D0(()=>{let I0=Z0().task,u0=[];if(u0.push({text:I0.kind==="main"?wz(I0.repo):I0.title,bold:!0}),I0.branch.length>0)u0.push({text:`\u2387 ${I0.branch}`});if(I0.worktreePath.length>0)u0.push({text:I0.worktreePath,dim:!0});return u0}),K0=72,R0=D0(()=>Math.min(68,Math.max(...Q0().map((I0)=>rj(I0.text))))),U0=D0(()=>R0()+4),P0=D0(()=>Q0().length+2),C0=D0(()=>Math.max(0,Math.min(Z0().x+2,H0().width-U0()-1))),r0=D0(()=>Math.max(0,Math.min(Z0().y+1,H0().height-P0()-1)));return(()=>{var I0=W("box");return Q(I0,"position","absolute"),Q(I0,"zIndex",2600),Q(I0,"flexDirection","column"),Q(I0,"border",!0),Q(I0,"paddingLeft",1),Q(I0,"paddingRight",1),K(I0,k(X1,{get each(){return Q0()},children:(u0)=>(()=>{var q1=W("text");return Q(q1,"wrapMode","none"),K(q1,(()=>{var W1=g0(()=>!!u0.dim);return()=>W1()?aE(u0.text,R0()):EW(u0.text,R0())})()),u((W1)=>{var V1=u0.dim?z.textMuted:z.text,H1=u0.bold?d1.BOLD:u0.dim?d1.DIM:void 0;return V1!==W1.e&&(W1.e=Q(q1,"fg",V1,W1.e)),H1!==W1.t&&(W1.t=Q(q1,"attributes",H1,W1.t)),W1},{e:void 0,t:void 0}),q1})()})),u((u0)=>{var q1=C0(),W1=r0(),V1=U0(),H1=z.focusAccent,S=z.backgroundElement;return q1!==u0.e&&(u0.e=Q(I0,"left",q1,u0.e)),W1!==u0.t&&(u0.t=Q(I0,"top",W1,u0.t)),V1!==u0.a&&(u0.a=Q(I0,"width",V1,u0.a)),H1!==u0.o&&(u0.o=Q(I0,"borderColor",H1,u0.o)),S!==u0.i&&(u0.i=Q(I0,"backgroundColor",S,u0.i)),u0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),I0})()}}),null),u((Z0)=>{var Q0=Z()?z.focusAccent:z.textMuted,K0=d1.BOLD,R0=z.textMuted,U0=d1.DIM;return Q0!==Z0.e&&(Z0.e=Q(l0,"fg",Q0,Z0.e)),K0!==Z0.t&&(Z0.t=Q(l0,"attributes",K0,Z0.t)),R0!==Z0.a&&(Z0.a=Q(Q1,"fg",R0,Z0.a)),U0!==Z0.o&&(Z0.o=Q(Q1,"attributes",U0,Z0.o)),Z0},{e:void 0,t:void 0,a:void 0,o:void 0}),n})()}var $M=32,hQ,lE=2000,$E=16,aE;var pM=C(()=>{P();P();P();P();P();P();P();P();P();BJ();P();D1();c1();c1();wM();dj();hM();vM();nM();hX();lM();hQ=[{view:"active"},{view:"archived"}];aE=_j});var eM={};j1(eM,{startTasksPane:()=>sE,legendRowCap:()=>tM,legendCap:()=>sM});import{existsSync as rM}from"fs";import{stat as _E}from"fs/promises";import{TextAttributes as oj}from"@opentui/core";function oM(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 rE(J){let{theme:z}=w0(),Z=_1(),Y=ZG(),X=Ej(),[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)},[M,y]=s(null),[c,d]=s(!1);{let m=process.env.TMUX_PANE;if(m){let B0=()=>{m0(["show-options","-wqv","-t",m,uZ]).then(({code:x0,stdout:n})=>{d(x0===0&&n.trim().length>0)})};B0();let z0=setInterval(B0,1000);C1(()=>clearInterval(z0))}}let i=rz();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 Wz.show(Z,m.title,m.body,m.cancelLabel,m.confirmLabel)===!0,promptText:(m,B0)=>tz.show(Z,m,B0),logger:console,logPrefix:"[kobe tasks]",notifyError:f,notifyInfo:U,reload:()=>J.reload(),switchBeforeKill:!0,updateActiveTask:!0,onTaskDeleted:(m,B0)=>{if(G()!==m)return;let z0=J.tasks();q(B0?.id??(z0.find((x0)=>!x0.archived)??z0[0])?.id??null)},promptNewTask:(m,B0,z0)=>kj.show(Z,m,B0,z0),cursorRepo:()=>{let m=J.tasks();return(m.find((B0)=>B0.id===G())??m[0])?.repo},lastVendor:()=>nJ(x1("lastSelectedVendor"),lJ()),rememberVendor:(m)=>QJ("lastSelectedVendor",m),openCreateSurface:async(m)=>{if(EY(Y.get(KZ,uY))!=="chattab")return!1;let z0=await mJ();if(!z0)return!1;return await tG(z0,m),!0},selectTask:(m)=>q(m),enterTask:(m)=>b0(m)};async function X0(){await bM(t)}async function G0(){if(EY(Y.get(KZ,uY))==="chattab"){let z0=await mJ();if(z0){await oG(z0);return}}if(!(await lY.show(Z,Y,J.orch??void 0)).visualPrefsChanged)return;if(!Y.flush())return;try{let z0=await mJ();if(z0)await bX(z0)}catch(z0){console.error("[kobe tasks] failed to refresh workspace panes:",z0)}}async function f0(){let m=await mJ();if(m){await sG(m);return}GG.show(Z)}async function _(){if(!M()?.hasUpdate){U(F("tasks.toast.alreadyLatest",{version:e0}));return}let B0=await mJ();if(!B0)return;await eG(B0)}async function M0(m){await AM(t,m)}async function b(m){await RM(t,m)}async function p(m){await gM(t,m)}async function w(m){await NM(t,m)}async function R(m){await CM(t,m)}async function e(m){let z0=J.tasks().find((n)=>n.id===m)?.worktreePath;if(!z0||!rM(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(m)}catch(n){console.error("[kobe tasks] task.ensureWorktree failed:",n),f(oM(n));return}await J.reload()}if(!z0||!rM(z0))return;let x0=IM();if(!x0){console.error("[kobe tasks] no editor/opener found; set KOBE_OPEN_EDITOR"),f(F("tasks.toast.noEditor"));return}if(!SM(z0,x0))console.error(`[kobe tasks] failed to open worktree with ${x0.label}`),f(F("tasks.toast.openWorktreeFailed",{label:x0.label}))}async function T(){if(!process.env.TMUX_PANE)return;let m=await mJ();if(!m)return;let B0=await KX(m);if(!B0)return;await n0(["select-pane","-t",B0])}async function a(m,B0){let z0=J.tasks().find((x0)=>x0.id===m);if(!z0||z0.kind==="main"||!J.orch)return;try{await J.orch.moveTask(m,B0)}catch(x0){console.error("[kobe tasks] task.move failed:",x0),f(F("tasks.toast.moveTaskFailed",{message:x0 instanceof Error?x0.message:String(x0)}));return}q(m),await J.reload()}async function q0(m){if(!J.orch)return;try{await J.orch.setPinned(m)}catch(B0){console.error("[kobe tasks] task.pin failed:",B0);return}await J.reload()}async function H0(m){let{togglePreviewMode:B0}=await Promise.resolve().then(() => (DW(),KW));B0(m),await cJ(y1(m)),await b0(m)}let[j0,y0]=s(Y.get("tasksPane.keysCollapsed",!1)===!0),i0=(m)=>{y0(m),Y.set("tasksPane.keysCollapsed",m)};d0(XJ(()=>J.orch?.uiPrefsSignal()(),(m)=>{if(m&&m.keysCollapsed!==YJ(j0))y0(m.keysCollapsed)}));let[N0,J1]=s(!1);M1(()=>({enabled:Z.stack.length===0&&!N0(),bindings:zY({"help.open":()=>void f0(),"task.new":()=>void X0(),"settings.open.sidebar":()=>void G0(),"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":()=>i0(!j0()),"tasks.focusEngine":()=>void T().catch((m)=>console.error("[kobe tasks] focus engine pane failed:",m))})}));async function b0(m){let B0=J.tasks().find((x0)=>x0.id===m);if(!B0)return;let z0=++V;try{await FW(J.orch,B0,B0.repo,B0.vendor,{includeInitPrompt:!0,heal:!0,captureFrom:!0,reload:()=>J.reload(),isCurrent:()=>V===z0})}catch(x0){if(x0 instanceof gZ)if(x0.phase==="no-daemon")f(F("tasks.toast.noDaemonOpen"));else if(x0.phase==="worktree")f(oM(x0.cause??x0));else f(F("tasks.toast.sessionStartFailed"));else console.error("[kobe tasks] switchTo failed:",x0)}}let p0=D0(()=>{let m=M();if(m?.hasUpdate)return{label:`v${m.latest} \u2191`,emphasize:!0};return{label:`v${e0}`,emphasize:!1}}),E0=()=>J.orch?.daemonStaleSignal()()??!1,T0=()=>J.orch?.daemonVersionSignal()()??null,G1=D0(()=>J.tasks().find((m)=>m.id===G())?.kind==="main");return(()=>{var m=W("box"),B0=W("box");return D(m,B0),Q(m,"flexDirection","column"),Q(m,"flexGrow",1),K(m,k(LM,{stale:E0,daemonVersion:T0,clientVersion:e0,width:()=>i().width}),B0),Q(B0,"flexGrow",1),Q(B0,"flexShrink",1),K(B0,k(_M,{get tasks(){return J.tasks},selectedId:G,get onSelect(){return J.initialTaskId?()=>{}:q},get pinnedSelection(){return!!J.initialTaskId},onActivate:(z0)=>void b0(z0),activateOnClick:!0,headerStatus:p0,onHeaderStatusClick:()=>void _(),onAddTask:()=>void X0(),zenActive:c,onZenClick:()=>{(async()=>{let z0=await mJ();if(z0)await IY(z0,"zen-toggle")})()},width:()=>i().width,get engineState(){return g0(()=>!!J.orch)()?J.orch.engineStateSignal():void 0},get taskJobs(){return g0(()=>!!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 M0(z0),onPinRequest:(z0)=>void q0(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 a(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:J1,onCursorChange:j})),K(m,k(oE,{moveMode:L,selectedIsMain:G1,collapsed:j0,onToggleCollapsed:()=>i0(!j0())}),null),u((z0)=>Q(m,"backgroundColor",z.background,z0)),m})()}function sM(J){let z=BW(J);if(!z)return null;let Z=z.hint?.keys??z.keys[0];return Z&&Z.length>0?Z:null}function tM(J){let z=J.map(sM).filter((Z)=>Z!==null);return z.length>0?z.join("/"):null}function oE(J){let{theme:z}=w0(),[Z,Y]=s("Prefix");a1(()=>{m0(["show-options","-g","prefix"]).then(({code:U,stdout:L})=>{if(U!==0)return;let O=ij(L);if(O)Y(O)})});let X=()=>{jW();let U=zH(),L=U.binds,O=[],A=U.focus.filter((E)=>E!==null).map((E)=>E.chord);if(A.length===4&&A.every((E,h)=>E===mZ[h]))O.push({k:"ctrl+hjkl",label:F("tasks.hints.movePanes")});else if(A.length>0)O.push({k:A[0],label:F("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:F("tasks.hints.detach")});return g(F("tasks.hints.splits"),["tmux.layout.workspaceSplit","tmux.layout.workspaceClose","tmux.layout.workspaceReset"]),g(F("tasks.hints.panes"),["tmux.layout.tasksToggle","tmux.layout.opsToggle","tmux.layout.terminalToggle"]),O},G=()=>{jW();let U=[{ids:["help.open"],label:F("tasks.hints.fullHelp")},{ids:["task.new"],label:F("tasks.hints.newTask")},{ids:["settings.open.sidebar"],label:F("tasks.hints.settings")},{ids:["sidebar.select"],label:F("tasks.hints.open")},{ids:["tasks.focusEngine"],label:F("tasks.hints.focusEngine")},{ids:["tasks.openWorktree"],label:F("tasks.hints.openWorktree")},{ids:["sidebar.delete"],label:F("tasks.hints.delete")},{ids:["sidebar.view"],label:F("tasks.hints.views")},{ids:["sidebar.projectFilter"],label:F("tasks.hints.project")}],L=[];for(let O of U){let A=tM(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:F("tasks.hints.reorder")},{k:"enter/esc",label:F("tasks.hints.done")}],H=()=>J.moveMode?.()?q():G(),j=18,B=()=>Math.min(j,Math.max(...H().map((U)=>rj(U.label)))),V=(U)=>{let L=B();if(rj(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=g0(()=>!!f());return()=>O()?F("tasks.hints.headerFolded"):F("tasks.hints.headerUnfolded")})()),K(U,k(Y0,{get when(){return!f()},get children(){return k(X1,{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=S0("["),N=S0("]"),M=W("box"),y=W("text");return D(g,E),D(g,M),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,()=>XG(O.k,Z()),N),D(M,y),Q(M,"flexShrink",0),Q(y,"wrapMode","none"),K(y,()=>V(O.label)),u((c)=>{var d=A()?z.textMuted:z.accent,i=A()?oj.DIM:oj.BOLD,t=B(),X0=z.textMuted,G0=A()?oj.DIM:void 0;return d!==c.e&&(c.e=Q(h,"fg",d,c.e)),i!==c.t&&(c.t=Q(h,"attributes",i,c.t)),t!==c.a&&(c.a=Q(M,"width",t,c.a)),X0!==c.o&&(c.o=Q(y,"fg",X0,c.o)),G0!==c.i&&(c.i=Q(y,"attributes",G0,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=oj.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 sE(J={}){await FJ({logContext:"tasks",providers:{notifications:!0},setup:()=>tE(J)})}async function tE(J){let z=new dX({homeDir:bJ()});await z.load();let[Z,Y]=s(z.list()),X=null;try{let B=await Hz();if(B){let V=new NJ(B);await V.init(),X=V}else GZ("tasks-boot","no daemon running \u2014 polling tasks.json (a gui owns daemon lifecycle)")}catch(B){qJ("tasks-boot",B),GZ("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()=>{if(!await Ez())return;let B="missing";try{let V=await _E(z.filePath);B=`${V.mtimeMs}:${V.size}`}catch{}if(B===H)return;H=B,await q()})().catch(()=>{})},pE);return{root:()=>[k(rE,{tasks:G,get initialTaskId(){return J.initialTaskId},orch:X,reload:q}),k(KM,{})],onDestroy:()=>{if(j)clearInterval(j);X?.dispose()}}}var pE=1500;var JO=C(()=>{P();P();P();P();P();P();P();P();w1();Mz();BJ();P();qY();IJ();D1();eZ();p1();VQ();S1();ZH();t1();kJ();gW();JG();NW();TW();DM();FM();zG();EQ();wj();c1();YG();RW();RZ();SJ();kM();vj();yM();pM();nZ();HJ();sJ();lj()});var zO={};j1(zO,{startSettingsHost:()=>Jw});function eE(J){let z=ZG(),Z=_1(),{theme:Y}=w0(),X=!1,G=!1;async function q(){if(G)return;G=!0;try{if(z.flush()&&X){let j=await mJ();if(j)await bX(j)}}catch(H){console.error("[kobe settings] failed to refresh workspace panes:",H)}finally{process.exit(0)}}return M1(()=>({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(lY,{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 Jw(){await FJ({setup:async()=>{let J=null;try{let z=await Hz();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(eE,{orchestrator:J}),onDestroy:()=>{J?.dispose()}}}})}var ZO=C(()=>{P();P();P();P();P();P();IJ();eZ();TW();EQ();c1();RZ();SJ();HJ();sJ()});var YO={};j1(YO,{startHelpHost:()=>Zw});function zw(){let J=_1(),{theme:z}=w0();function Z(){process.exit(0)}return M1(()=>({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(GG,{onClose:Z})),u((X)=>Q(Y,"backgroundColor",z.background,X)),Y})()}async function Zw(){await FJ({providers:{kv:!1,focus:!1},setup:()=>({root:()=>k(zw,{})})})}var XO=C(()=>{P();P();P();P();P();gW();c1();RZ();SJ();sJ()});var GO={};j1(GO,{startUpdateHost:()=>jw});import{spawn as Yw,spawnSync as Xw}from"child_process";import{TextAttributes as jG}from"@opentui/core";function Gw(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 Yw(Z,Y,{stdio:"ignore",detached:!0}).unref(),!0}catch{return!1}}function Qw(J){return J.replace(/\r\n/g,`
270
- `).split(`
271
- `).map((z)=>z.trim()).filter(Boolean)}function qw(){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 Hw(){let{theme:J}=w0(),z=GJ(),[Z,Y]=s(null),[X,G]=s([]),[q,H]=s(!0),[j,B]=s("update"),[V,f]=s(null),U=D0(()=>Z()?.latest??e0),L=D0(()=>X()[0]?.url??fB(U())),O=D0(()=>[{id:"update",key:"U",label:F("update.actions.updateNow"),detail:ez},{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")}]);a1(()=>{A()});async function A(){let I=await WG({force:!0});Y(I);let N=I?.latest??e0,M=await BB({current:e0,latest:N});G(M),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(Gw(L())?F("update.statusReleaseOpened"):F("update.statusReleaseError"));return}h()}async function h(){f(F("update.statusRunningUpdater")),await new Promise((M)=>setTimeout(M,30)),z?.destroy(),process.stdout.write(`
272
- kobe ${e0} -> ${U()}
273
- `),process.stdout.write(`running: ${ez}
274
-
275
- `);let I=Xw("sh",["-c",ez],{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
- ${F("update.updateComplete")}
279
- `:`
280
- ${F("update.updateFailed",{code:String(N)})}
281
- `),process.stdout.write(F("update.pressAnyKey")),await qw(),process.exit(N)}return M1(()=>({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"),M=W("text"),y=W("text"),c=W("box"),d=W("text"),i=W("text"),t=S0("v"),X0=W("text"),G0=W("text"),f0=S0("v"),_=W("box"),M0=W("box"),b=W("text"),p=W("scrollbox"),w=W("box");return D(I,N),D(I,c),D(I,_),D(I,M0),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,M),D(N,y),Q(N,"flexDirection","row"),Q(N,"justifyContent","space-between"),Q(N,"flexShrink",0),Q(M,"wrapMode","none"),K(M,()=>F("update.pageTitle")),D(y,S0("q / esc")),Q(y,"wrapMode","none"),Q(y,"onMouseUp",()=>E("close")),D(c,d),D(c,i),D(c,X0),D(c,G0),Q(c,"flexDirection","row"),Q(c,"gap",2),Q(c,"flexShrink",0),Q(c,"paddingTop",1),Q(d,"wrapMode","none"),K(d,()=>F("update.current")),D(i,t),Q(i,"wrapMode","none"),K(i,e0,null),Q(X0,"wrapMode","none"),K(X0,()=>F("update.latest")),D(G0,f0),Q(G0,"wrapMode","none"),K(G0,U,null),Q(_,"flexDirection","column"),Q(_,"flexShrink",0),Q(_,"paddingTop",1),Q(_,"gap",0),K(_,k(X1,{get each(){return O()},children:(R)=>(()=>{var e=W("box"),T=W("box"),a=W("text"),q0=S0("["),H0=S0("]"),j0=W("box"),y0=W("text"),i0=W("text");return D(e,T),D(e,j0),D(e,i0),Q(e,"flexDirection","row"),Q(e,"gap",1),Q(e,"paddingLeft",1),Q(e,"paddingRight",1),Q(e,"onMouseUp",()=>E(R.id)),D(T,a),Q(T,"width",4),Q(T,"flexShrink",0),D(a,q0),D(a,H0),Q(a,"wrapMode","none"),K(a,()=>R.key,H0),D(j0,y0),Q(j0,"width",14),Q(j0,"flexShrink",0),Q(y0,"wrapMode","none"),K(y0,()=>R.label),Q(i0,"wrapMode","word"),K(i0,()=>R.detail),u((N0)=>{var J1=j()===R.id?J.primary:void 0,b0=j()===R.id?J.selectedListItemText:J.accent,p0=jG.BOLD,E0=j()===R.id?J.selectedListItemText:J.text,T0=j()===R.id?J.selectedListItemText:J.textMuted;return J1!==N0.e&&(N0.e=Q(e,"backgroundColor",J1,N0.e)),b0!==N0.t&&(N0.t=Q(a,"fg",b0,N0.t)),p0!==N0.a&&(N0.a=Q(a,"attributes",p0,N0.a)),E0!==N0.o&&(N0.o=Q(y0,"fg",E0,N0.o)),T0!==N0.i&&(N0.i=Q(i0,"fg",T0,N0.i)),N0},{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}}),M0),D(M0,b),Q(M0,"flexShrink",0),Q(M0,"paddingTop",1),Q(b,"wrapMode","none"),K(b,()=>F("update.changesSectionHeader",{from:e0,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,()=>F("update.loadingNotes")),u((e)=>Q(R,"fg",J.textMuted,e)),R}}),null),K(w,k(Y0,{get when(){return g0(()=>!q())()&&X().length===0},get children(){var R=W("text");return Q(R,"wrapMode","word"),K(R,()=>F("update.notesUnavailable")),u((e)=>Q(R,"fg",J.textMuted,e)),R}}),null),K(w,k(X1,{get each(){return X()},children:(R)=>(()=>{var e=W("box"),T=W("text"),a=S0("v");return D(e,T),Q(e,"flexDirection","column"),Q(e,"paddingBottom",1),Q(e,"gap",0),D(T,a),Q(T,"wrapMode","none"),K(T,()=>R.version,null),K(e,k(X1,{get each(){return Qw(R.body)},children:(q0)=>(()=>{var H0=W("text");return Q(H0,"wrapMode","word"),K(H0,q0),u((j0)=>Q(H0,"fg",J.textMuted,j0)),H0})()}),null),u((q0)=>{var H0=J.text,j0=jG.BOLD;return H0!==q0.e&&(q0.e=Q(T,"fg",H0,q0.e)),j0!==q0.t&&(q0.t=Q(T,"attributes",j0,q0.t)),q0},{e:void 0,t:void 0}),e})()}),null),u((R)=>{var{background:e,text:T}=J,a=jG.BOLD,q0=J.textMuted,H0=J.textMuted,j0=J.text,y0=jG.BOLD,i0=J.textMuted,N0=Z()?.hasUpdate?J.warning:J.success,J1=jG.BOLD,b0=J.textMuted,p0=jG.DIM,E0={trackOptions:{backgroundColor:J.background,foregroundColor:J.borderActive}};return e!==R.e&&(R.e=Q(I,"backgroundColor",e,R.e)),T!==R.t&&(R.t=Q(M,"fg",T,R.t)),a!==R.a&&(R.a=Q(M,"attributes",a,R.a)),q0!==R.o&&(R.o=Q(y,"fg",q0,R.o)),H0!==R.i&&(R.i=Q(d,"fg",H0,R.i)),j0!==R.n&&(R.n=Q(i,"fg",j0,R.n)),y0!==R.s&&(R.s=Q(i,"attributes",y0,R.s)),i0!==R.h&&(R.h=Q(X0,"fg",i0,R.h)),N0!==R.r&&(R.r=Q(G0,"fg",N0,R.r)),J1!==R.d&&(R.d=Q(G0,"attributes",J1,R.d)),b0!==R.l&&(R.l=Q(b,"fg",b0,R.l)),p0!==R.u&&(R.u=Q(b,"attributes",p0,R.u)),E0!==R.c&&(R.c=Q(p,"verticalScrollbarOptions",E0,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 jw(){await FJ({setup:()=>({root:()=>k(Hw,{})})})}var QO=C(()=>{P();P();P();P();P();P();P();P();P();D1();kJ();c1();BJ();RZ();SJ()});function tj(J,z){if(z<3)return 2500;return Math.min(J*2,20000)}function qO(J,z,Z){if(z)return 1500;if(Z==="running")return 1500;return Math.min(J*2,6000)}var sj=2500,vQ=1500;var jO={};j1(jO,{startHistoryHost:()=>Mw});import{TextAttributes as BG}from"@opentui/core";function Bw(J){let z=J.lastIndexOf("/");return z>=0?J.slice(z+1):J}function fw(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 Ww(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>JB?`${Y.slice(0,JB-1)}\u2026`:Y}try{let z=JSON.stringify(J);if(!z||z==="{}"||z==="null")return"";return z.length>JB?`${z.slice(0,JB-1)}\u2026`:z}catch{return""}}function Vw(J){if(typeof J==="string")return J;try{return JSON.stringify(J,null,2)}catch{return String(J)}}function Uw(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 HO(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(X1,{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 Kw(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 ${F("history.thinking")}${J.expanded?"":"\u2026"}`),K(Y,k(Y0,{get when(){return g0(()=>!!J.expanded)()&&Z.text.trim()},get children(){return k(HO,{get text(){return Z.text}})}}),null),u((G)=>{var q=z.textMuted,H=BG.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?Vw(J.result.output):"",G=Ww(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,S0("\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 g0(()=>!!J.expanded)()&&X.trim()},get children(){return k(HO,{text:X,get error(){return J.result?.isError}})}}),null),u((V)=>{var f=Y?z.success:z.error,U=z.text,L=BG.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 Dw(J){return J==="assistant"?F("history.role.assistant"):J==="system"?F("history.role.system"):F("history.role.user")}function Lw(J){let{theme:z}=w0(),Z=()=>J.msg.role==="user",Y=()=>fw(J.msg.timestamp),X=D0(()=>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 g0(()=>!!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,S0("\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=BG.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,()=>Dw(J.msg.role)),u((j)=>{var B=z.textMuted,V=BG.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(X1,{get each(){return G()},children:(H)=>k(Kw,{block:H,get result(){return g0(()=>H.type==="tool_call")()?J.results.get(H.callId):void 0},get expanded(){return J.expanded}})}),null),q})()}function Fw(J){let{theme:z}=w0(),Z=J.reader??JJ(J.vendor).history,[Y,X]=s(0),[G]=KY(()=>[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]=KY(()=>{let y=V();return y?[y,Y()]:void 0},async([y])=>{try{return await Z.readHistory(y)}catch{return[]}}),U=()=>f.latest??[],L=D0(()=>Uw(U())),O=D0(()=>U().reduce((y,c)=>y+(c.usage?.output_tokens??0),0)),[A,g]=s(!1);a1(()=>{let y=!1,c,d=sj,i=0,t=0,X0=!1;async function G0(){if(!await Ez()){if(!y)c=setTimeout(()=>void G0(),d);return}try{let f0=await Z.latestTranscriptMtimeForWorktree(J.worktree);if(y)return;if(!X0)X0=!0,t=f0,i++;else if(f0>t)t=f0,i=0,X((_)=>_+1);else i++}catch{i++}finally{if(!y)d=tj(d,i),c=setTimeout(()=>void G0(),d)}}G0(),C1(()=>{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))};M1(()=>({bindings:[{key:"j",cmd:()=>h(ej)},{key:"k",cmd:()=>h(-ej)},{key:"down",cmd:()=>h(ej)},{key:"up",cmd:()=>h(-ej)},{key:"[",cmd:()=>I(-1)},{key:"]",cmd:()=>I(1)},{key:"return",cmd:()=>g((y)=>!y)}]}));let N=()=>J.title?.trim()||Bw(J.worktree),M=()=>{let y=q().length;return y>0?`${F("history.sessionLabel")} ${H()+1}/${y}`:""};return(()=>{var y=W("box"),c=W("box"),d=W("text"),i=W("text"),t=W("box"),X0=W("scrollbox"),G0=W("box"),f0=W("text");return D(y,c),D(y,X0),D(y,G0),Q(y,"flexDirection","column"),Q(y,"flexGrow",1),D(c,d),D(c,i),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 _=g0(()=>!!J.live);return()=>_()?F("history.liveTag"):F("history.archivedTag")})()),Q(i,"wrapMode","none"),K(i,N),K(c,k(Y0,{get when(){return M()},get children(){var _=W("text");return Q(_,"wrapMode","none"),K(_,()=>`\xB7 ${M()}`),u((M0)=>Q(_,"fg",z.textMuted,M0)),_}}),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((M0)=>Q(_,"fg",z.textMuted,M0)),_}}),null),jz((_)=>{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"),M0=W("text");return D(_,M0),Q(_,"paddingTop",1),Q(_,"paddingLeft",1),K(M0,()=>F("history.loading")),u((b)=>Q(M0,"fg",z.textMuted,b)),_})()},get children(){return k(Y0,{get when(){return U().length>0},get fallback(){return(()=>{var _=W("box"),M0=W("text");return D(_,M0),Q(_,"paddingTop",1),Q(_,"paddingLeft",1),K(M0,()=>F("history.empty")),u((b)=>Q(M0,"fg",z.textMuted,b)),_})()},get children(){return k(X1,{get each(){return U()},children:(_)=>k(Lw,{msg:_,get results(){return L()},get expanded(){return A()}})})}})}})),D(G0,f0),Q(G0,"flexDirection","row"),Q(G0,"paddingLeft",1),Q(G0,"paddingRight",1),Q(G0,"flexShrink",0),Q(f0,"wrapMode","none"),K(f0,(()=>{var _=g0(()=>!!A());return()=>_()?F("history.hintExpanded"):F("history.hint")})()),u((_)=>{var{background:M0,backgroundElement:b}=z,p=J.live?z.success:z.warning,w=BG.BOLD,R=z.accent,e=BG.BOLD,T=z.backgroundElement,a=z.textMuted;return M0!==_.e&&(_.e=Q(y,"backgroundColor",M0,_.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(i,"fg",R,_.i)),e!==_.n&&(_.n=Q(i,"attributes",e,_.n)),T!==_.s&&(_.s=Q(G0,"backgroundColor",T,_.s)),a!==_.h&&(_.h=Q(f0,"fg",a,_.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 Mw(J){await FJ({logContext:"history",providers:{kv:!1,focus:!1},setup:()=>({root:()=>k(Fw,J)})})}var ej=3,JB=120;var BO=C(()=>{P();P();P();P();P();P();P();P();P();HZ();D1();c1();BJ();YG();RZ();SJ()});function Ow(J){return J.trim().split(/\s+/)[0]??""}function WO(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=Ow(G);if(!q)return null;let H=G.includes(fO)?G.split(fO).join(X):`${G} ${X}`;return{bin:q,command:H}}function Aw(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 Rw(J,z){let Z=J.endsWith("/")?J:`${J}/`;return z.startsWith(Z)?z.slice(Z.length):null}async function gw(J){let z=xX(x1(UZ)),Z=x1(aZ)??"",Y=(process.env.VISUAL??process.env.EDITOR??"").trim();if(z!=="auto")return WO(z,Z,J,Y);if(Y)return WO("custom","",J,Y);let X=Z1(J);for(let G of A6)if(await VO(G))return{bin:G,command:`${G} ${X}`};return null}async function VO(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 Nw(J,z){try{return await Bun.spawn(["git","diff","--quiet","HEAD","--",z],{cwd:J,stdin:"ignore",stdout:"ignore",stderr:"ignore",env:rJ()}).exited===1}catch{return!1}}async function UO(J,z,Z){let Y=await gw(Z);if(!Y)return!1;if(!await VO(Y.bin))return!1;let X=await Cw(Y,z,Z);return await kz(J,{cwd:z,command:X,name:bw(Z)}),!0}async function Cw(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=Rw(z,Z);if(!G)return X;if(!await Nw(z,G))return X;return Aw(Y,Z,G)}function bw(J){let z=J.slice(J.lastIndexOf("/")+1).trim();return z.length>0?z:"edit"}var fO="{file}";var KO=C(()=>{_Z();S1();nH();w1();Mz()});async function zB(J,z,Z){if(!z)throw Error("git(): cwd is required");let Y=await uX(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 LO(J,z){let Y=(await zB(["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 zB(["status","--porcelain","--untracked-files=all"],J,z),Y=Iw(Z),X=new Map;try{let H=await zB(["diff","--no-color","--numstat","HEAD"],J,z);X=new Map(DO(H).map((j)=>[j.path,{added:j.added,deleted:j.deleted}]))}catch{try{let H=await zB(["diff","--no-color","--numstat","--cached"],J,z);X=new Map(DO(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 kw(J,H.path,z);if(j!=null)H.added=j,H.deleted=0}));return G}async function kw(J,z,Z){if(Z?.aborted)return null;let Y=await $H(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 DO(J){return b6(J).map((z)=>({path:z.path,added:z.added,deleted:z.deleted}))}function MO(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 OO(z),z}function OO(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)OO(z)}function Iw(J){let z=[];for(let Z of iH(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 AO=C(()=>{lH();aH()});function RO(J){M1(()=>({enabled:J.focused(),bindings:zY({"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=ZB.indexOf(Y);if(X<0)return;let G=(Z??0)%2===0?-1:1,q=ZB[(X+G+ZB.length)%ZB.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 ZB;var gO=C(()=>{zG();SJ();ZB=["all","changes"]});import{spawn as NO}from"child_process";import{existsSync as Sw}from"fs";import{platform as yw}from"os";function CO(J){if(!J)return;let z=yw();if(z==="linux"){if(Sw("/proc/sys/fs/binfmt_misc/WSLInterop")||process.env.WSL_DISTRO_NAME){mQ("wslview",[J],()=>{let Z=NO("wslpath",["-w",J],{stdio:["ignore","pipe","ignore"]}),Y="";Z.stdout?.on("data",(X)=>{Y+=X.toString()}),Z.on("close",(X)=>{if(X===0)mQ("explorer.exe",[Y.trim()])})});return}mQ("xdg-open",[J]);return}if(z==="darwin"){mQ("open",[J]);return}if(z==="win32"){mQ("cmd.exe",["/c","start","",J]);return}}function mQ(J,z,Z){try{let Y=NO(J,z,{stdio:"ignore",detached:!0});Y.on("error",()=>Z?.()),Y.unref()}catch{Z?.()}}var bO=()=>{};function cW(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)cW(X,z,Z+1,Y)}else Y.push({kind:"file",path:X.path,name:X.name,depth:Z})}function kO(J,z){return _j(J,z)}function IO(J){return J.map((z)=>({kind:"status",path:z.path,status:z.status,added:z.added,deleted:z.deleted}))}function Tw(J){return`${J.kind}\x00${J.path}`}function xw(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 SO(J,z){return cj(J,z,Tw,xw)}function yO(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 TO(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 xO=()=>{};import{watch as uw}from"fs";import{TextAttributes as cQ}from"@opentui/core";function Ew(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 Pw(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 Z=J.indexOf(": ");if(Z>=0&&J.startsWith("git "))return J.slice(Z+2).trim()||F("files.error.gitFailed");return J.trim()||F("files.error.gitFailed")}function hw(J){switch(J){case"all":return F("files.tabs.all");case"changes":return F("files.tabs.changes")}}function uO(J){let{theme:z}=w0(),Z=rz(),Y=()=>J.focused?J.focused():!0,[X,G]=s("all"),[q,H]=s(0),[j,B]=s(0),[V,f]=s(null,{equals:yO}),[U,L]=s(null,{equals:TO}),[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 T=await LO(w,R);if(R?.aborted||e!==h||J.worktreePath()!==w)return;f(T)}else if(p==="changes"){let T=await FO(w,R);if(R?.aborted||e!==h||J.worktreePath()!==w)return;L(T)}}catch(T){if(R?.aborted)return;let a=T instanceof Error?T.message:String(T);if(e===h&&J.worktreePath()===w)A(a)}}d0(XJ(J.worktreePath,async(p)=>{f(null),L(null),A(null),H(0),E(new Set);let w=new AbortController;C1(()=>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=uw(p,{recursive:!0},(e,T)=>{if(T==null)return;let a=T.toString();if(a===".git"||a.startsWith(".git/")||a.startsWith(".git\\"))return;if(a.startsWith("node_modules/")||a.startsWith("node_modules\\"))return;if(w!=null)clearTimeout(w);w=setTimeout(()=>{w=null,B((q0)=>q0+1)},500)}),R.on("error",()=>{})}catch{}C1(()=>{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(C1(()=>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;C1(()=>R.abort()),await I(p,w,R.signal)},{defer:!0}));let N=D0(()=>{let p=V();if(p==null)return null;return MO(p)}),M=D0((p)=>{let w=[];if(X()==="all"){let R=N();if(R!=null)cW(R,g(),0,w)}else if(X()==="changes"){let R=U();if(R!=null)w.push(...IO(R))}return SO(p??[],w)},[]);d0(XJ(M,(p)=>{if(p.length===0)return;if(q()>p.length-1)H(p.length-1)}));let y=D0(()=>{let p=0,w=0;for(let R of M()){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=D0(()=>{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=M();if(p.length===0)return;H(Math.min(q()+1,p.length-1))}function i(){if(M().length===0)return;H(Math.max(q()-1,0))}function t(){let p=M(),w=q(),R=p[w];if(!R)return;if(R.kind!=="dir")return;if(!R.expanded&&R.hasChildren)E((e)=>{let T=new Set(e);return T.add(R.path),T});else if(R.expanded){if(w+1<p.length)H(w+1)}}function X0(){if(X()!=="all")return;let p=M(),w=q(),R=p[w];if(!R)return;if(R.kind==="dir"&&R.expanded){E((T)=>{let a=new Set(T);return a.delete(R.path),a});return}if(R.kind!=="dir"&&R.kind!=="file")return;let e=R.depth-1;if(e<0)return;for(let T=w-1;T>=0;T--){let a=p[T];if(!a)continue;if(a.kind==="dir"&&a.depth===e){H(T);return}}}function G0(){let p=M(),w=q();if(w<0||w>=p.length)return;let R=p[w];if(!R)return;if(R.kind==="dir"){E((e)=>{let T=new Set(e);if(T.has(R.path))T.delete(R.path);else T.add(R.path);return T});return}J.onOpenFile(R.path)}function f0(){let p=M(),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 M0(){let p=M(),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 T=`${e}/${R.path}`;CO(T)}RO({focused:Y,moveDown:d,moveUp:i,setTab:(p)=>G(p),currentTab:X,openCurrent:G0,mentionCurrent:f0,createPR:J.onCreatePR,openExternal:M0,refresh:_,expandOrDescend:t,collapseOrParent:X0});let b;return d0(XJ([q,M],([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 T=W("box");return Q(T,"flexDirection","row"),Q(T,"justifyContent","flex-end"),Q(T,"gap",2),Q(T,"paddingBottom",1),Q(T,"flexShrink",0),K(T,k(Y0,{get when(){return J.onZenToggle},get children(){var a=W("box"),q0=W("text"),H0=W("text");return D(a,q0),D(a,H0),Q(a,"flexDirection","row"),Q(a,"gap",1),Q(a,"onMouseUp",()=>J.onZenToggle?.()),D(q0,S0("[~]")),Q(q0,"wrapMode","none"),Q(H0,"wrapMode","none"),K(H0,()=>F("files.actions.zen")),u((j0)=>{var y0=z.accent,i0=cQ.BOLD,N0=z.text;return y0!==j0.e&&(j0.e=Q(q0,"fg",y0,j0.e)),i0!==j0.t&&(j0.t=Q(q0,"attributes",i0,j0.t)),N0!==j0.a&&(j0.a=Q(H0,"fg",N0,j0.a)),j0},{e:void 0,t:void 0,a:void 0}),a}}),null),K(T,k(Y0,{get when(){return J.onCreatePR},get children(){var a=W("box"),q0=W("text"),H0=W("text");return D(a,q0),D(a,H0),Q(a,"flexDirection","row"),Q(a,"gap",1),Q(a,"onMouseUp",()=>J.onCreatePR?.()),D(q0,S0("[P]")),Q(q0,"wrapMode","none"),Q(H0,"wrapMode","none"),K(H0,()=>F("files.actions.createPR")),u((j0)=>{var y0=z.accent,i0=cQ.BOLD,N0=z.text;return y0!==j0.e&&(j0.e=Q(q0,"fg",y0,j0.e)),i0!==j0.t&&(j0.t=Q(q0,"attributes",i0,j0.t)),N0!==j0.a&&(j0.a=Q(H0,"fg",N0,j0.a)),j0},{e:void 0,t:void 0,a:void 0}),a}}),null),T}}),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(X1,{each:ww,children:(T)=>{let a=()=>X()===T;return(()=>{var q0=W("text");return Q(q0,"wrapMode","none"),Q(q0,"onMouseUp",()=>G(T)),K(q0,()=>hw(T)),u((H0)=>{var j0=a()?z.primary:z.textMuted,y0=a()?cQ.BOLD:void 0;return j0!==H0.e&&(H0.e=Q(q0,"fg",j0,H0.e)),y0!==H0.t&&(H0.t=Q(q0,"attributes",y0,H0.t)),H0},{e:void 0,t:void 0}),q0})()}})),K(w,k(Y0,{get when(){return J.cornerBadge?.()},children:(T)=>(()=>{var a=W("text");return Q(a,"wrapMode","none"),K(a,()=>T().text),u((q0)=>{var H0=T().active?z.accent:z.textMuted,j0=T().active?cQ.BOLD:void 0;return H0!==q0.e&&(q0.e=Q(a,"fg",H0,q0.e)),j0!==q0.t&&(q0.t=Q(a,"attributes",j0,q0.t)),q0},{e:void 0,t:void 0}),a})()}),null),K(p,k(Y0,{get when(){return X()==="changes"},get children(){var T=W("box"),a=W("text");return D(T,a),Q(T,"flexDirection","column"),Q(T,"paddingBottom",1),Q(T,"flexShrink",0),Q(T,"gap",0),Q(a,"wrapMode","none"),K(a,()=>F("files.legend.changes")),u((q0)=>Q(a,"fg",z.textMuted,q0)),T}}),e),K(p,k(Y0,{get when(){return X()!=="changes"},get children(){var T=W("box");return Q(T,"flexDirection","row"),Q(T,"paddingBottom",1),Q(T,"flexShrink",0),T}}),e),jz((T)=>{b=T},e),Q(e,"flexGrow",1),Q(e,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),K(e,k(Y0,{get when(){return J.worktreePath()==null},get children(){var T=W("box"),a=W("text");return D(T,a),Q(T,"paddingTop",1),Q(T,"paddingLeft",1),K(a,()=>F("files.empty.noTask")),u((q0)=>Q(a,"fg",z.textMuted,q0)),T}}),null),K(e,k(Y0,{get when(){return g0(()=>J.worktreePath()!=null)()&&O()!=null},get children(){var T=W("box"),a=W("text"),q0=W("text");return D(T,a),D(T,q0),Q(T,"paddingTop",1),Q(T,"paddingLeft",1),Q(T,"flexDirection","column"),Q(T,"gap",0),Q(a,"wrapMode","word"),K(a,()=>Pw(O()??"")),Q(q0,"wrapMode","word"),K(q0,()=>F("files.error.retryHint")),u((H0)=>{var{error:j0,textMuted:y0}=z;return j0!==H0.e&&(H0.e=Q(a,"fg",j0,H0.e)),y0!==H0.t&&(H0.t=Q(q0,"fg",y0,H0.t)),H0},{e:void 0,t:void 0}),T}}),null),K(e,k(Y0,{get when(){return g0(()=>J.worktreePath()!=null&&O()==null&&M().length===0)()&&(X()==="all"&&V()!=null||X()==="changes"&&U()!=null)},get children(){var T=W("box"),a=W("text");return D(T,a),Q(T,"paddingTop",1),Q(T,"paddingLeft",1),K(a,(()=>{var q0=g0(()=>X()==="all");return()=>q0()?F("files.empty.noFiles"):F("files.empty.noChanges")})()),u((q0)=>Q(a,"fg",z.textMuted,q0)),T}}),null),K(e,k(Y0,{get when(){return g0(()=>J.worktreePath()!=null&&O()==null)()&&M().length>0},get children(){var T=W("box");return Q(T,"flexShrink",0),Q(T,"gap",0),Q(T,"paddingRight",1),K(T,k(X1,{get each(){return M()},children:(a,q0)=>{let H0=()=>q0()===q(),j0=(()=>{var E0=W("text");return Q(E0,"wrapMode","none"),K(E0,()=>H0()?"\u258C":" "),u((T0)=>Q(E0,"fg",H0()?z.focusAccent:void 0,T0)),E0})(),y0=()=>H0()?z.backgroundElement:void 0;if(a.kind==="dir"){let E0=" ".repeat(a.depth),T0=a.expanded?"\u25BE":"\u25B8";return(()=>{var G1=W("box"),m=W("box"),B0=W("text");return D(G1,m),Q(G1,"flexDirection","row"),Q(G1,"gap",0),Q(G1,"onMouseUp",()=>{H(q0()),E((z0)=>{let x0=new Set(z0);if(x0.has(a.path))x0.delete(a.path);else x0.add(a.path);return x0})}),K(G1,j0,m),D(m,B0),Q(m,"flexGrow",1),Q(m,"paddingRight",1),Q(B0,"wrapMode","none"),K(B0,()=>`${E0}${T0} ${a.name}/`),u((z0)=>{var x0=y0(),n=z.textMuted,V0=cQ.BOLD;return x0!==z0.e&&(z0.e=Q(G1,"backgroundColor",x0,z0.e)),n!==z0.t&&(z0.t=Q(B0,"fg",n,z0.t)),V0!==z0.a&&(z0.a=Q(B0,"attributes",V0,z0.a)),z0},{e:void 0,t:void 0,a:void 0}),G1})()}if(a.kind==="file"){let E0=" ".repeat(a.depth);return(()=>{var T0=W("box"),G1=W("box"),m=W("text");return D(T0,G1),Q(T0,"flexDirection","row"),Q(T0,"gap",0),Q(T0,"onMouseUp",()=>{H(q0()),J.onOpenFile(a.path)}),K(T0,j0,G1),D(G1,m),Q(G1,"flexGrow",1),Q(G1,"paddingRight",1),Q(m,"wrapMode","none"),K(m,()=>`${E0} ${a.name}`),u((B0)=>{var z0=y0(),x0=z.text;return z0!==B0.e&&(B0.e=Q(T0,"backgroundColor",z0,B0.e)),x0!==B0.t&&(B0.t=Q(m,"fg",x0,B0.t)),B0},{e:void 0,t:void 0}),T0})()}let i0=Ew(a.status),N0=()=>{switch(i0){case"success":return z.success;case"warning":return z.warning;case"error":return z.error;case"info":return z.info;default:return z.textMuted}},J1=y(),b0=a.added==null?" ".repeat(J1.added):`+${a.added}`.padStart(J1.added),p0=a.deleted==null?" ".repeat(J1.deleted):`-${a.deleted}`.padStart(J1.deleted);return(()=>{var E0=W("box"),T0=W("box"),G1=W("text"),m=W("text");return D(E0,T0),Q(E0,"flexDirection","row"),Q(E0,"gap",0),Q(E0,"onMouseUp",()=>{H(q0()),J.onOpenFile(a.path)}),K(E0,j0,T0),D(T0,G1),D(T0,m),Q(T0,"flexDirection","row"),Q(T0,"flexGrow",1),Q(T0,"gap",1),Q(T0,"paddingRight",1),Q(G1,"wrapMode","none"),K(G1,()=>a.status),Q(m,"wrapMode","none"),Q(m,"flexGrow",1),K(m,()=>kO(a.path,c())),K(T0,k(Y0,{get when(){return J1.added>0},get children(){var B0=W("text");return Q(B0,"wrapMode","none"),K(B0,b0),u((z0)=>Q(B0,"fg",z.success,z0)),B0}}),null),K(T0,k(Y0,{get when(){return J1.deleted>0},get children(){var B0=W("text");return Q(B0,"wrapMode","none"),K(B0,p0),u((z0)=>Q(B0,"fg",z.error,z0)),B0}}),null),u((B0)=>{var z0=y0(),x0=N0(),n=z.text;return z0!==B0.e&&(B0.e=Q(E0,"backgroundColor",z0,B0.e)),x0!==B0.t&&(B0.t=Q(G1,"fg",x0,B0.t)),n!==B0.a&&(B0.a=Q(m,"fg",n,B0.a)),B0},{e:void 0,t:void 0,a:void 0}),E0})()}})),T}}),null),K(p,k(Y0,{get when(){return J.worktreePath()!=null},get children(){var T=W("box"),a=W("text");return D(T,a),Q(T,"flexDirection","row"),Q(T,"paddingTop",1),Q(T,"flexShrink",0),Q(a,"wrapMode","none"),K(a,()=>F("files.footer.openHint")),u((q0)=>Q(a,"fg",z.textMuted,q0)),T}}),null),p})()}var ww;var EO=C(()=>{P();P();P();P();P();P();P();P();P();BJ();P();D1();c1();AO();gO();bO();xO();ww=["all","changes"]});import{promises as vw}from"fs";import mw from"path";async function YB(J,z){let Z=new AbortController,Y=setTimeout(()=>Z.abort(),cw);try{let X=await jZ("git",z,{cwd:J,env:rJ(),signal:Z.signal});if(Z.signal.aborted)return null;if(X.status!==0)return null;return X.stdout.trim()}finally{clearTimeout(Y)}}async function dw(J){return await YB(J,["rev-parse","--abbrev-ref","HEAD"])||"HEAD"}async function nw(J){let z=await YB(J,["symbolic-ref","refs/remotes/origin/HEAD","--short"]);if(!z)return"main";return z.startsWith("origin/")?z.slice(7):z}async function iw(J){let z=await YB(J,["rev-parse","--abbrev-ref","@{u}"]);return z!==null&&z.length>0}async function lw(J){let z=await YB(J,["status","--porcelain"]);if(!z)return 0;return z.split(`
288
- `).filter((Z)=>Z.length>0).length}async function $w(J){let[z,Z,Y,X]=await Promise.all([dw(J),nw(J),iw(J),lw(J)]);return{branch:z,targetBranch:Z,hasUpstream:Y,dirtyCount:X}}function aw(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 _w(J){return J?"The current branch tracks an upstream.":"There is no upstream branch yet."}function pw(J,z){let Z={branch:z.branch,targetBranch:z.targetBranch,dirtyCountSentence:aw(z.dirtyCount),upstreamSentence:_w(z.hasUpstream)};return J.replace(/\{\{([a-zA-Z][a-zA-Z0-9_]*)\}\}/g,(Y,X)=>Object.hasOwn(Z,X)?Z[X]:Y)}async function rw(J){let z=mw.join(J,".kobe","pr-instructions.md");try{let Z=await vw.readFile(z,"utf8");return Z.length>0?Z:wO}catch{return wO}}async function PO(J){let[z,Z]=await Promise.all([rw(J),$w(J)]);return pw(z,Z)}var cw=5000,wO=`The user likes the current state of the code.
289
-
290
- {{dirtyCountSentence}}
291
- The current branch is {{branch}}.
292
- The target branch is {{targetBranch}}.
293
-
294
- {{upstreamSentence}}
295
- The user requested a PR.
296
-
297
- Follow these steps to create a PR:
298
-
299
- - If you have any skills related to creating PRs, invoke them now. Instructions there should take precedence over these instructions.
300
- - Run \`git diff\` to review uncommitted changes.
301
- - Commit them. Follow any instructions the user gave you about writing commit messages.
302
- - Push to origin.
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.
304
-
305
- If any of these steps fail, ask the user for help.`;var hO=C(()=>{_Z();PQ()});var dW={};j1(dW,{startOpsPreview:()=>HP,startOpsHost:()=>ZP});import{createHash as ow}from"crypto";import{SyntaxStyle as sw}from"@opentui/core";function JP(J){let{theme:z}=w0(),[Z,Y]=s(null),X=!1;a1(()=>{(async()=>{let N=await Sj({logTag:"ops-activity",channels:["transcript.activity"]});if(!N)return;if(X){N.dispose();return}Y(N)})()}),C1(()=>{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 M=N.get(J.worktree)?.mtimeMs??0;if(!f&&M>0)f=!0,j(M);V(M)}),d0(()=>{if(G()!==null)return;let N=!1,M,y=sj,c=0,d=0;async function i(){if(!await Ez()){if(!N)M=setTimeout(()=>void i(),y);return}try{let t=await ZX(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=tj(y,c),M=setTimeout(()=>void i(),y)}}i(),C1(()=>{if(N=!0,M)clearTimeout(M)})});let U=()=>f&&B()>H(),L=()=>U()?{text:F("ops.badge.newActivity"),active:!0}:null;function O(){j(B())}a1(()=>{if(!J.targetPane)return;let N=NG(J.vendor),M=!1,y=null,c=!1,d="",i=!1,t=0,X0=null,G0=vQ,f0=0,_,M0=()=>G()!==null;async function b(e){if(e===X0)return;X0=e,await iZ(J.targetPane,ew,e)}async function p(){if(M0())return q()?.completionId??null;return(await N.latestCompletion(J.worktree))?.id??null}async function w(){try{d=vO(await DX(J.targetPane,80)),y=await p(),c=!0,await b(N.supportsCompletionMarkers()?"idle":"unknown")}catch{}}async function R(){if(!await Ez()){if(!M)_=setTimeout(()=>void R(),G0);return}let e=M0();try{let T=vO(await DX(J.targetPane,80));if(M)return;if(e&&!c)y=q()?.completionId??null,c=!0;let a=e?q()?.mtimeMs??0:0,q0=a>f0;if(a>f0)f0=a;if(T!==d)d=T,i=!0,t=0,await b(N.supportsCompletionMarkers()?"running":"unknown");else if(i)t++;if(N.supportsCompletionMarkers()&&i&&t>=tw){let H0=await p();if(!M&&H0!==null&&H0!==y)y=H0,i=!1,t=0,await b("done")}G0=e?qO(G0,q0,X0):vQ}catch{G0=vQ}finally{if(!M)_=setTimeout(()=>void R(),G0)}}w(),_=setTimeout(()=>void R(),vQ),C1(()=>{if(M=!0,_)clearTimeout(_)})});function A(N){if(!J.taskId)return;kz(y1(J.taskId),{cwd:J.worktree,command:g7({worktree:J.worktree,relPath:N,cliInvocation:i1()}),name:zP(N)})}function g(N){if(!J.taskId){A(N);return}let M=`${J.worktree}/${N}`;UO(y1(J.taskId),J.worktree,M).then((y)=>{if(!y)A(N)})}function E(N){if(!J.targetPane)return;IH(J.targetPane,`@${N} `)}async function h(){if(!J.targetPane)return;let N=await PO(J.worktree);await IH(J.targetPane,N),await cG(J.targetPane,"Enter")}function I(){if(!J.taskId)return;let N=y1(J.taskId),M=i1(),y=`${r1()}${uJ(M)} 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(uO,{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((M)=>Q(N,"backgroundColor",z.background,M)),N})()}function zP(J){let z=J.lastIndexOf("/");return z>=0?J.slice(z+1):J}function vO(J){return ow("sha1").update(J).digest("hex")}async function ZP(J){await FJ({logContext:"ops",providers:{kv:!1,focus:!1},setup:()=>({root:()=>k(JP,J)})})}function YP(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 XP(J,z){let Z=await uX(J,["diff","HEAD","--",z]);return Z.status===0?Z.stdout:""}async function GP(J,z){return await $H(J,z)??""}function QP(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 sw.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 qP(J){let{theme:z}=w0(),Z=QP(z),Y=YP(J.relPath),[X]=KY(()=>J.relPath,async(G)=>{let q=await XP(J.worktree,G);if(q.trim().length>0)return{kind:"diff",text:q};return{kind:"code",text:await GP(J.worktree,G)}});return M1(()=>({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=g0(()=>X()?.kind==="diff");return()=>f()?F("ops.preview.diffVsHead"):F("ops.preview.file")})()),K(B,()=>F("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,()=>F("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 HP(J){await FJ({providers:{kv:!1,focus:!1},setup:()=>({root:()=>k(qP,J)})})}var tw=2,ew="@kobe_tab_state";var nW=C(()=>{P();P();P();P();P();P();P();qZ();bq();kq();w1();KO();Mz();YG();aH();D1();HW();c1();BJ();RZ();SJ();EO();LY();hO()});var nO={};j1(nO,{startDirectTmux:()=>BP,chooseInitialTask:()=>dO});import{resolve as mO}from"path";function dO(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 cO(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 jP(J){LB();let z=[...TJ()];if(z.length===0)z=[zZ(mO(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]??mO(process.cwd())}async function BP(){if(Gq("gui"),Promise.resolve().then(() => (g8(),R8)).then((Z)=>Z.ensureGlobalKobeHooks()),!await lz()){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 yz(),z=new NJ(J,{role:"gui"});try{process.env.KOBE_DAEMON_SOCKET_PATH=J.socketPath,await z.init();let Z=await jP(z),Y=dO(z.listTasks(),{activeTaskId:z.activeTaskSignal()(),persistedTaskId:x1("lastSelectedTaskId"),cwdRepo:Z});if(!Y){let f=await SH();if(await bY(),await AH(f),await kH(f),await cO(IX(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(()=>{}),QJ("lastSelectedTaskId",Y.id);let q=Y.vendor;if(Y.kind==="main"){let U=await Yf(G)??nJ(x1("lastSelectedVendor"),lJ());if(U!==Y.vendor)await z.setVendor(Y.id,U).catch(()=>{}),q=U}let H=EX(Y.repo,X,{kind:"repo-init"});if(!await zQ({name:G,cwd:X,command:PJ(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 bY(),await AH(G),await kH(G);let B=await cO(IX(G));if(B===null){console.error(`kobe: failed to attach to tmux session ${G}`),process.exitCode=1;return}if(B!==0&&!await F1(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===cz&&V.worktreePath)try{let f=await YX(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 iO=C(()=>{qY();IJ();eZ();Gz();Tq();uG();wX();S1();w1();t1();UH();nZ();HJ()});var lO={};j1(lO,{startTui:()=>fP});async function fP(){tD();let{startDirectTmux:J}=await Promise.resolve().then(() => (iO(),nO));await J()}var $O=C(()=>{Wj()});XB();fG();t1();import{resolve as lW}from"path";kJ();function CV(){return[`kobe ${e0}`,"","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 aO=`Usage: kobe add [path]
306
+ `)}var Ch;var oA=C(()=>{Vj();Ch=["install","status","command"]});var BW={};X1(BW,{runHookSubcommand:()=>xh,readTextWithTimeout:()=>eA,parseWorktreeRemovePath:()=>Y2,parseWorktreeAddPath:()=>Z2,ensureGlobalKobeHooks:()=>wh});import{homedir as kh}from"os";import{join as tA,resolve as jW}from"path";async function eA(J,z=bh){let Z;try{return await Promise.race([J(),new Promise((Y)=>{Z=setTimeout(()=>Y(""),z)})])}finally{if(Z!==void 0)clearTimeout(Z)}}async function J2(){try{let J=await eA(()=>Bun.stdin.text());if(!J.trim())return{};let z=JSON.parse(J);return z&&typeof z==="object"&&!Array.isArray(z)?z:{}}catch{return{}}}function Ih(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 yh(J){return!!J&&typeof J==="object"&&!Array.isArray(J)}function z2(J){let z=[],Z=/"([^"]*)"|'([^']*)'|(\S+)/g,Y;while((Y=Z.exec(J))!==null)z.push(Y[1]??Y[2]??Y[3]??"");return z}function Z2(J){let z=z2(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 Q=z[X];if(Q==="&&"||Q==="||"||Q===";"||Q==="|"||Q===">"||Q===">>")break;if(Q.startsWith("-")){X+=Z.has(Q)?2:1;continue}return Q}}return}function Y2(J){let z=z2(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 Th(){let J=await J2(),z=yh(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=Z2(Z),Q=X?void 0:Y2(Z);if(!X&&!Q)return;let q=await iJ();if(!q)return;try{if(X)await q.request("worktree.reconcile",{cwd:Y,worktreePath:jW(Y,X)});else if(Q)await q.request("worktree.archiveRemoved",{worktreePath:jW(Y,Q)})}finally{q.close()}}async function xh(J){let[z,...Z]=J;if(z==="setup"){await Ph(Z);return}if(z===Sh){try{await Th()}catch{}return}try{if(!z||!ZH(z))return;let Y=await J2(),X=Ih(Z,"--task-id"),Q=typeof Y.cwd==="string"&&Y.cwd?Y.cwd:process.cwd(),q;for(let j of X2())if(q=j.activityDetailFromPayload(z,Y),q)break;let H=await iJ();if(!H)return;try{await H.request("engine.reportEvent",{...X?{taskId:X}:{cwd:Q},kind:z,...q?{detail:q}:{}})}finally{H.close()}}catch{}}function Eh(){return e1.map((J)=>QB(J)).filter((J)=>J.supportsWorktreeSync())}function X2(){return e1.map((J)=>QB(J)).filter((J)=>J.supportsHooks())}function Q2(){return tA(kh(),".claude","settings.json")}function uh(J){if(!J||J==="off")return;if(J==="global")return Q2();if(J.startsWith("repo:"))return tA(jW(J.slice(5)),".claude","settings.json");return J}async function wh(){try{for(let J of X2()){let z=J.globalSettingsPath();if(!z)continue;await J.installActivityHooks(z),await J.installWorktreeWatchHook(z)}await G2()}catch{}}async function G2(){let J=Eh();if(J.length===0)return;let z=E1(sA),Z=new Set([Q2()]),Y=uh(z);if(Y)Z.add(Y);for(let X of J)for(let Q of Z)await X.removeWorktreeSyncHook(Q);if(z!=="off")jJ(sA,"off")}async function Ph(J){await G2(),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(`
307
+ `))}var bh=500,Sh="worktree-created",sA="externalWorktreeSync";var VW=C(()=>{IJ();GB();YH();I1();s1()});var B2={};X1(B2,{startDirectTmux:()=>vh,chooseInitialTask:()=>j2});import{resolve as q2}from"path";function j2(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 Q=J.filter((q)=>!q.archived);return Q.find((q)=>q.pinned)??Q[0]??J[0]}async function H2(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 hh(J){Mj();let z=[...RJ()];if(z.length===0)z=[HZ(q2(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]??q2(process.cwd())}async function vh(){if(JH("gui"),Promise.resolve().then(() => (VW(),BW)).then((Z)=>Z.ensureGlobalKobeHooks()),!await Kz()){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 Ez(),z=new KJ(J,{role:"gui"});try{process.env.KOBE_DAEMON_SOCKET_PATH=J.socketPath,await z.init();let Z=await hh(z),Y=j2(z.listTasks(),{activeTaskId:z.activeTaskSignal()(),persistedTaskId:E1("lastSelectedTaskId"),cwdRepo:Z});if(!Y){let V=await U9();if(await AY(),await J9(V),await V9(V),await H2(lX(V))===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),Q=T1(Y.id);await z.setActiveTask(Y.id).catch(()=>{}),jJ("lastSelectedTaskId",Y.id);let q=Y.vendor;if(Y.kind==="main"){let f=await B9(Q)??pJ(E1("lastSelectedVendor"),oJ());if(f!==Y.vendor)await z.setVendor(Y.id,f).catch(()=>{}),q=f}let H=yX(Y.repo,X,{kind:"repo-init"});if(!await xX({name:Q,cwd:X,command:cJ(q),taskId:Y.id,vendor:q,repo:Y.repo,launchInit:H})){console.error(`kobe: tmux session ${Q} failed to start (check the daemon log)`),process.exitCode=1;return}await AY(),await J9(Q),await V9(Q);let B=await H2(lX(Q));if(B===null){console.error(`kobe: failed to attach to tmux session ${Q}`),process.exitCode=1;return}if(B!==0&&!await K1(Q)){console.error(`kobe: tmux session ${Q} ended unexpectedly (attach exited ${B})`),process.exitCode=B;return}let U=z.getTask(Y.id);if(U&&U.title===_z&&U.worktreePath)try{let V=await MX(U.worktreePath,U.vendor);if(V)await z.setTitle(U.id,V)}catch(V){console.error("[kobe] auto-title failed:",V)}}finally{z.dispose()}}var V2=C(()=>{KZ();IJ();CZ();eJ();QH();nQ();TX();I1();S1();s1();pq();eZ();qJ()});var W2={};X1(W2,{startTui:()=>mh});async function mh(){TA();let{startDirectTmux:J}=await Promise.resolve().then(() => (V2(),B2));await J()}var U2=C(()=>{Vj()});Kj();DQ();s1();import{resolve as UW}from"path";s1();function Gz(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 yO(J,z){if(J==="new-chattab"){let Z=Gz(z),Y=Z.session;if(!Y)console.error("kobe new-chattab: --session <name> is required"),process.exit(2);let{windowIsSurface:X}=await Promise.resolve().then(() => (S1(),aX));if(await X(Y))return!0;let Q;if(Z.vendor!==void 0){let H=Z.vendor.trim(),{getCustomEngineIds:j}=await Promise.resolve().then(() => (I1(),jZ)),{isBuiltinVendor:B}=await Promise.resolve().then(() => (s1(),lW));if(!(B(H)||j().includes(H))){let f=[...e1,...j()].join(", "),L=`kobe: unknown engine '${H}' (known: ${f})`,{runTmux:M}=await Promise.resolve().then(() => (S1(),aX));await M(["display-message","-t",Y,L]),console.error(L),process.exit(2)}Q=H;let{setPersistedString:V}=await Promise.resolve().then(() => (I1(),jZ));V("lastSelectedVendor",Q)}let{newChatTab:q}=await Promise.resolve().then(() => (qJ(),$J));return await q(Y,Q),!0}if(J==="engine-tab-exit"){let Y=Gz(z).session;if(!Y)console.error("kobe engine-tab-exit: --session <name> is required"),process.exit(2);let{engineTabExit:X}=await Promise.resolve().then(() => (eZ(),_8));return await X(Y),!0}if(J==="kill-sessions"){let{runTmux:Z,termAllPaneGroups:Y,KOBE_TMUX_SOCKET:X}=await Promise.resolve().then(() => (S1(),aX));await Y();let Q=await Z(["kill-server"]);return console.log(Q===0?`kobe: killed all tmux sessions on the \`${X}\` socket`:`kobe: no tmux sessions to kill on the \`${X}\` socket`),!0}if(J==="quick-create"){let Y=Gz(z).session;if(!Y)console.error("kobe quick-create: --session <name> is required"),process.exit(2);let{quickCreate:X}=await Promise.resolve().then(() => (qJ(),$J));return await X(Y),!0}if(J==="focus-tasks"){let Z=Gz(z),Y=Z.session;if(!Y)console.error("kobe focus-tasks: --session <name> is required"),process.exit(2);let{windowIsSurface:X}=await Promise.resolve().then(() => (S1(),aX));if(Z.windowId&&await X(Z.windowId))return!0;let{selectTasksPane:Q}=await Promise.resolve().then(() => (qJ(),$J));return await Q(Y,{windowId:Z.windowId}),!0}if(J==="heal-layout"){let Y=Gz(z).session;if(!Y)console.error("kobe heal-layout: --session <name> is required"),process.exit(2);let{healSessionLayout:X}=await Promise.resolve().then(() => (qJ(),$J)),{coalesceLayoutWork:Q}=await Promise.resolve().then(() => (fX(),rq));return await Q(Y,"heal",()=>X(Y)),!0}if(J==="resync-window"){let Z=Gz(z),Y=Z.session;if(!Y)console.error("kobe resync-window: --session <name> is required"),process.exit(2);let X=Number.parseInt(Z.cols??"",10),Q=Number.parseInt(Z.rows??"",10),q=Number.isInteger(X)&&X>0&&Number.isInteger(Q)&&Q>0?{columns:X,rows:Q}:null,{resyncWindowToClient:H}=await Promise.resolve().then(() => (qJ(),$J)),{coalesceLayoutWork:j}=await Promise.resolve().then(() => (fX(),rq));return await j(Y,"resync",()=>H(Y,{size:q,status:Z.status,clientName:Z.client})),!0}if(J==="capture-layout"){let Y=Gz(z).session;if(!Y)console.error("kobe capture-layout: --session <name> is required"),process.exit(2);let{captureGlobalLayoutOnDrag:X}=await Promise.resolve().then(() => (qJ(),$J)),{coalesceLayoutWork:Q,genAgeMs:q,RESIZE_GUARD_MS:H}=await Promise.resolve().then(() => (fX(),rq));return await Q(Y,"capture",async()=>{if(q(Y,"resize")<H)return;await X(Y)}),!0}if(J==="layout"){let Z=Gz(z),Y=Z.session;if(!Y)console.error("kobe layout: --session <name> is required"),process.exit(2);let X=Z.action;if(!X||!new Set(["workspace-split","workspace-close","workspace-reset","tasks-toggle","tasks-restore","ops-toggle","terminal-toggle","zen-toggle","chat-tab-close"]).has(X))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(X==="tasks-restore"&&Z.windowId){let{windowIsSurface:H}=await Promise.resolve().then(() => (S1(),aX));if(await H(Z.windowId))return!0}let{runLayoutAction:q}=await Promise.resolve().then(() => (qJ(),$J));return await q(Y,X,{windowId:Z.windowId}),!0}if(J==="quick-task"){let Z=Gz(z),{startQuickTaskHost:Y}=await Promise.resolve().then(() => (BM(),jM));return await Y({session:Z.session}),!0}if(J==="tasks"){let Z=Gz(z),{startTasksPane:Y}=await Promise.resolve().then(() => (n7(),c3));return await Y({initialTaskId:Z.initialTaskId}),!0}if(J==="settings"){let{startSettingsHost:Z}=await Promise.resolve().then(() => (n3(),d3));return await Z(),!0}if(J==="worktrees"){let{startWorktreesHost:Z}=await Promise.resolve().then(() => (_3(),a3));return await Z(),!0}if(J==="help-page"){let{startHelpHost:Z}=await Promise.resolve().then(() => (r3(),p3));return await Z(),!0}if(J==="new-task"){let Z=Gz(z),{startNewTaskHost:Y}=await Promise.resolve().then(() => (K7(),JM));return await Y({defaultRepo:Z.repo}),!0}if(J==="update-page"){let{startUpdateHost:Z}=await Promise.resolve().then(() => (s3(),o3));return await Z(),!0}if(J==="history"){let Z=Gz(z);if(!Z.worktree)console.error("kobe history: --worktree <path> is required"),process.exit(2);let{startHistoryHost:Y}=await Promise.resolve().then(() => (zO(),JO));return await Y({worktree:Z.worktree,vendor:QZ(Z.vendor),title:Z.title,live:z.includes("--live")}),!0}if(J==="ops"){let Z=Gz(z);if(!Z.worktree)console.error("kobe ops: --worktree <path> is required"),process.exit(2);if(Z.preview){let{startOpsPreview:X}=await Promise.resolve().then(() => (a7(),$7));return await X({worktree:Z.worktree,relPath:Z.preview}),!0}let{startOpsHost:Y}=await Promise.resolve().then(() => (a7(),$7));return await Y({taskId:Z.taskId??"",worktree:Z.worktree,targetPane:Z.targetPane??null,vendor:QZ(Z.vendor)}),!0}return!1}CJ();function TO(){return[`kobe ${a0}`,"","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(`
308
+ `)}var f2=`Usage: kobe add [path]
307
309
  kobe add --remote --host <host> --user <user> --path <basePath> [--port N] [--key <path> | --password]
308
310
 
309
311
  Save a repo for the new-task picker. With --remote, register an SSH-backed
310
312
  project whose worktrees + engine run on <host> under <basePath>.
311
- `;async function WP(J){let z=J[0];if(z==="--help"||z==="-h"||z==="help"){process.stdout.write(aO);return}if(z==="--remote"){let{runAddRemote:q}=await Promise.resolve().then(() => (mV(),vV));await q(J.slice(1));return}if(z?.startsWith("-"))process.stderr.write(`kobe add: unknown flag "${z}"
313
+ `;async function ch(J){let z=J[0];if(z==="--help"||z==="-h"||z==="help"){process.stdout.write(f2);return}if(z==="--remote"){let{runAddRemote:q}=await Promise.resolve().then(() => (wO(),uO));await q(J.slice(1));return}if(z?.startsWith("-"))process.stderr.write(`kobe add: unknown flag "${z}"
312
314
 
313
- ${aO}`),process.exit(2);let Z=lW(process.cwd(),yJ(z&&z.length>0?z:".")),{addSavedRepo:Y,isGitRepo:X}=await Promise.resolve().then(() => (S1(),YZ));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 UP(G.path)}var _O=`Usage: kobe remove [path]
315
+ ${f2}`),process.exit(2);let Z=UW(process.cwd(),PJ(z&&z.length>0?z:".")),{addSavedRepo:Y,isGitRepo:X}=await Promise.resolve().then(() => (I1(),jZ));if(!X(Z))process.stderr.write(`kobe add: "${z&&z.length>0?z:"."}" is not a git repository (resolved to ${Z}).
316
+ `),process.exit(1);let Q=Y(Z);if(Q.added)console.log(`added ${Q.path} (${Q.total} saved repo${Q.total===1?"":"s"} total)`);else console.log(`already saved: ${Q.path}`);await nh(Q.path)}var K2=`Usage: kobe remove [path]
315
317
 
316
318
  Forget a saved project (drop it from the new-task picker). Non-destructive:
317
319
  the repo's files, worktrees, branches and tasks all stay on disk. A remote
@@ -320,19 +322,19 @@ the repo's files, worktrees, branches and tasks all stay on disk. A remote
320
322
  path defaults to the current directory. Pass an exact saved entry (e.g. a
321
323
  remote \`ssh://user@host\` key) to remove it verbatim. Run with no match to
322
324
  print the current saved projects.
323
- `;async function VP(J){let z=J[0];if(z==="--help"||z==="-h"||z==="help"){process.stdout.write(_O);return}if(z?.startsWith("-"))process.stderr.write(`kobe remove: unknown flag "${z}"
325
+ `;async function dh(J){let z=J[0];if(z==="--help"||z==="-h"||z==="help"){process.stdout.write(K2);return}if(z?.startsWith("-"))process.stderr.write(`kobe remove: unknown flag "${z}"
324
326
 
325
- ${_O}`),process.exit(2);let{getSavedRepos:Z,resolveRepoRoot:Y}=await Promise.resolve().then(() => (S1(),YZ)),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=lW(process.cwd(),yJ(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.
327
+ ${K2}`),process.exit(2);let{getSavedRepos:Z,resolveRepoRoot:Y}=await Promise.resolve().then(() => (I1(),jZ)),X=Z();if(X.length===0){console.log("no saved projects to remove.");return}let Q=z&&z.length>0?z:".",q=X.includes(Q)?Q:(()=>{let U=UW(process.cwd(),PJ(Q)),V=Y(U);if(X.includes(V))return V;if(X.includes(U))return U;return null})();if(q===null){process.stderr.write(`kobe remove: "${Q}" is not a saved project.
326
328
 
327
329
  Saved projects:
328
- `);for(let V of X)process.stderr.write(` ${V}
329
- `);process.exit(1)}let{connectIfRunning:H}=await Promise.resolve().then(() => (IJ(),bH)),j=await H();try{if(j)await j.request("project.forget",{repo:q});else await(await $W()).forgetProject(q)}finally{j?.close()}let B=Z().length;console.log(`removed ${q} (${B} saved repo${B===1?"":"s"} left)`)}async function UP(J){let z=await $W(),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 rO(z,J,Z,kZ(void 0))}async function $W(){let{TaskIndexStore:J}=await Promise.resolve().then(() => (VQ(),z8)),{GitWorktreeManager:z}=await Promise.resolve().then(() => (Y8(),e4)),{Orchestrator:Z}=await Promise.resolve().then(() => (uG(),oU)),Y=new J;return await Y.load(),new Z({store:Y,worktrees:new z})}async function rO(J,z,Z,Y){let{connectIfRunning:X}=await Promise.resolve().then(() => (IJ(),bH)),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 oO=["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 iW(J){process.stderr.write(`kobe adopt: ${J}
331
-
332
- ${oO}
333
- `),process.exit(2)}async function KP(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(`${oO}
334
- `);return}if(L==="--repo"){if(Z=J[++U],Z===void 0)iW("--repo requires a value")}else if(L==="--vendor"){if(Y=J[++U],Y===void 0)iW("--vendor requires a value")}else if(L==="--yes"||L==="-y")X=!0;else if(L&&!L.startsWith("-")&&z===void 0)z=L;else iW(`unexpected argument "${L}"`)}let{resolveRepoRoot:G}=await Promise.resolve().then(() => (S1(),YZ)),q=G(lW(process.cwd(),yJ(Z&&Z.length>0?Z:"."))),H=kZ(Y),j=await $W(),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||nQ(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(`
330
+ `);for(let U of X)process.stderr.write(` ${U}
331
+ `);process.exit(1)}let{connectIfRunning:H}=await Promise.resolve().then(() => (IJ(),pH)),j=await H();try{if(j)await j.request("project.forget",{repo:q});else await(await fW()).forgetProject(q)}finally{j?.close()}let B=Z().length;console.log(`removed ${q} (${B} saved repo${B===1?"":"s"} left)`)}async function nh(J){let z=await fW(),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 L2(z,J,Z,QZ(void 0))}async function fW(){let{TaskIndexStore:J}=await Promise.resolve().then(() => (dG(),c7)),{GitWorktreeManager:z}=await Promise.resolve().then(() => (AH(),ZK)),{Orchestrator:Z}=await Promise.resolve().then(() => (nQ(),P5)),Y=new J;return await Y.load(),new Z({store:Y,worktrees:new z})}async function L2(J,z,Z,Y){let{connectIfRunning:X}=await Promise.resolve().then(() => (IJ(),pH)),Q=await X();try{for(let q of Z){let H=Q?(await Q.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{Q?.close()}}var F2=["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(`
332
+ `);function WW(J){process.stderr.write(`kobe adopt: ${J}
333
+
334
+ ${F2}
335
+ `),process.exit(2)}async function ih(J){let z,Z,Y,X=!1;for(let f=0;f<J.length;f++){let L=J[f];if(L==="--help"||L==="-h"||L==="help"){process.stdout.write(`${F2}
336
+ `);return}if(L==="--repo"){if(Z=J[++f],Z===void 0)WW("--repo requires a value")}else if(L==="--vendor"){if(Y=J[++f],Y===void 0)WW("--vendor requires a value")}else if(L==="--yes"||L==="-y")X=!0;else if(L&&!L.startsWith("-")&&z===void 0)z=L;else WW(`unexpected argument "${L}"`)}let{resolveRepoRoot:Q}=await Promise.resolve().then(() => (I1(),jZ)),q=Q(UW(process.cwd(),PJ(Z&&Z.length>0?Z:"."))),H=QZ(Y),j=await fW(),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 U=(f)=>!z||oG(z,f.path);console.log(`adoptable worktrees in ${q}:`);for(let f of B){let L=z?U(f)?"*":" ":"-",M=[f.dirty?"dirty":"",f.kobeManaged?"":"external"].filter(Boolean).join(",");console.log(` ${L} ${f.branch} ${f.path}${M?` (${M})`:""}`)}if(!z){console.log(`
337
+ pass a path glob to adopt, e.g. kobe adopt '${q}/*' --yes`);return}let V=B.filter(U);if(V.length===0){console.log(`
336
338
  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 rO(j,q,f,H),console.log(`done \u2014 adopted ${f.length} worktree(s)`)}function pO(J){J.write(`${CV()}
338
- `)}function tJ(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 DP(){let[,,...J]=process.argv,[z,...Z]=J;if(z==="--version"||z==="-v"||z==="version"){let{CURRENT_VERSION:X}=await Promise.resolve().then(() => (kJ(),NV));console.log(`kobe ${X}`);return}if(z==="--help"||z==="-h"||z==="help"){pO(process.stdout);return}if(z==="add"){await WP(Z);return}if(z==="remove"){await VP(Z);return}if(z==="completions"){let{runCompletionsSubcommand:X}=await Promise.resolve().then(() => (YD(),ZD));await X(Z);return}if(z==="adopt"){await KP(Z);return}if(z==="export"){let{runExportSubcommand:X}=await Promise.resolve().then(() => (HD(),qD));await X(Z);return}if(z==="repo"){let{runRepoSubcommand:X}=await Promise.resolve().then(() => (WD(),fD));await X(Z);return}if(z==="api"){let{runApiSubcommand:X}=await Promise.resolve().then(() => (SD(),ID));await X(Z);return}if(z==="update"){let{runUpdateSubcommand:X}=await Promise.resolve().then(() => (ED(),uD));await X(Z);return}if(z==="theme"){let{runThemeSubcommand:X}=await Promise.resolve().then(() => (mD(),vD));await X(Z);return}if(z==="feedback"){let{runFeedbackSubcommand:X}=await Promise.resolve().then(() => (lD(),iD));await X(Z);return}if(z==="daemon"){let{runDaemonSubcommand:X}=await Promise.resolve().then(() => (rD(),pD));await X(Z);return}if(z==="doctor"){let{runDoctorSubcommand:X}=await Promise.resolve().then(() => (Uj(),Vj));await X(Z);return}if(z==="web"){let{runWebSubcommand:X}=await Promise.resolve().then(() => (WL(),fL));await X(Z);return}if(z==="reset"){let{runResetSubcommand:X}=await Promise.resolve().then(() => (Uj(),Vj));await X(Z);return}if(z==="reload"){let{runReloadSubcommand:X}=await Promise.resolve().then(() => (Uj(),Vj));await X(Z);return}if(z==="skill"){let{runSkillSubcommand:X}=await Promise.resolve().then(() => (KL(),UL));await X(Z);return}if(z==="hook"){let{runHookSubcommand:X}=await Promise.resolve().then(() => (g8(),R8));await X(Z);return}if(z==="new-chattab"){let X=tJ(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(() => (w1(),yX));if(await q(G))return;let H;if(X.vendor!==void 0){let B=X.vendor.trim(),{getCustomEngineIds:V}=await Promise.resolve().then(() => (S1(),YZ)),{isBuiltinVendor:f}=await Promise.resolve().then(() => (t1(),AV));if(!(f(B)||V().includes(B))){let O=[...s1,...V()].join(", "),A=`kobe: unknown engine '${B}' (known: ${O})`,{runTmux:g}=await Promise.resolve().then(() => (w1(),yX));await g(["display-message","-t",G,A]),console.error(A),process.exit(2)}H=B;let{setPersistedString:L}=await Promise.resolve().then(() => (S1(),YZ));L("lastSelectedVendor",H)}let{newChatTab:j}=await Promise.resolve().then(() => (HJ(),vJ));await j(G,H);return}if(z==="engine-tab-exit"){let G=tJ(Z).session;if(!G)console.error("kobe engine-tab-exit: --session <name> is required"),process.exit(2);let{engineTabExit:q}=await Promise.resolve().then(() => (nZ(),r9));await q(G);return}if(z==="kill-sessions"){let{runTmux:X,termAllPaneGroups:G,KOBE_TMUX_SOCKET:q}=await Promise.resolve().then(() => (w1(),yX));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=tJ(Z).session;if(!G)console.error("kobe quick-create: --session <name> is required"),process.exit(2);let{quickCreate:q}=await Promise.resolve().then(() => (HJ(),vJ));await q(G);return}if(z==="focus-tasks"){let X=tJ(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(() => (w1(),yX));if(X.windowId&&await q(X.windowId))return;let{selectTasksPane:H}=await Promise.resolve().then(() => (HJ(),vJ));await H(G,{windowId:X.windowId});return}if(z==="heal-layout"){let G=tJ(Z).session;if(!G)console.error("kobe heal-layout: --session <name> is required"),process.exit(2);let{healSessionLayout:q}=await Promise.resolve().then(() => (HJ(),vJ)),{coalesceLayoutWork:H}=await Promise.resolve().then(() => (CX(),LH));await H(G,"heal",()=>q(G));return}if(z==="resync-window"){let X=tJ(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(() => (HJ(),vJ)),{coalesceLayoutWork:V}=await Promise.resolve().then(() => (CX(),LH));await V(G,"resync",()=>B(G,{size:j,status:X.status,clientName:X.client}));return}if(z==="capture-layout"){let G=tJ(Z).session;if(!G)console.error("kobe capture-layout: --session <name> is required"),process.exit(2);let{captureGlobalLayoutOnDrag:q}=await Promise.resolve().then(() => (HJ(),vJ)),{coalesceLayoutWork:H,genAgeMs:j,RESIZE_GUARD_MS:B}=await Promise.resolve().then(() => (CX(),LH));await H(G,"capture",async()=>{if(j(G,"resize")<B)return;await q(G)});return}if(z==="layout"){let X=tJ(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(() => (w1(),yX));if(await B(X.windowId))return}let{runLayoutAction:j}=await Promise.resolve().then(() => (HJ(),vJ));await j(G,q,{windowId:X.windowId});return}if(z==="quick-task"){let X=tJ(Z),{startQuickTaskHost:G}=await Promise.resolve().then(() => (t3(),s3));await G({session:X.session});return}if(z==="tasks"){let X=tJ(Z),{startTasksPane:G}=await Promise.resolve().then(() => (JO(),eM));await G({initialTaskId:X.initialTaskId});return}if(z==="settings"){let{startSettingsHost:X}=await Promise.resolve().then(() => (ZO(),zO));await X();return}if(z==="help-page"){let{startHelpHost:X}=await Promise.resolve().then(() => (XO(),YO));await X();return}if(z==="new-task"){let X=tJ(Z),{startNewTaskHost:G}=await Promise.resolve().then(() => (MW(),n3));await G({defaultRepo:X.repo});return}if(z==="update-page"){let{startUpdateHost:X}=await Promise.resolve().then(() => (QO(),GO));await X();return}if(z==="history"){let X=tJ(Z);if(!X.worktree)console.error("kobe history: --worktree <path> is required"),process.exit(2);let{startHistoryHost:G}=await Promise.resolve().then(() => (BO(),jO));await G({worktree:X.worktree,vendor:kZ(X.vendor),title:X.title,live:Z.includes("--live")});return}if(z==="ops"){let X=tJ(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(() => (nW(),dW));await q({worktree:X.worktree,relPath:X.preview});return}let{startOpsHost:G}=await Promise.resolve().then(() => (nW(),dW));await G({taskId:X.taskId??"",worktree:X.worktree,targetPane:X.targetPane??null,vendor:kZ(X.vendor)});return}if(z!==void 0)console.error(`kobe: unknown command '${z}'`),pO(process.stderr),process.exit(2);let{startTui:Y}=await Promise.resolve().then(() => ($O(),lO));await Y()}DP().catch((J)=>{console.error("kobe failed to start:",J),process.exit(1)});
339
+ ${V.length} worktree(s) match \u2014 re-run with --yes to adopt them`);return}await L2(j,q,V,H),console.log(`done \u2014 adopted ${V.length} worktree(s)`)}function D2(J){J.write(`${TO()}
340
+ `)}async function lh(){let[,,...J]=process.argv,[z,...Z]=J;if(z==="--version"||z==="-v"||z==="version"){let{CURRENT_VERSION:X}=await Promise.resolve().then(() => (CJ(),MU));console.log(`kobe ${X}`);return}if(z==="--help"||z==="-h"||z==="help"){D2(process.stdout);return}if(z==="add"){await ch(Z);return}if(z==="remove"){await dh(Z);return}if(z==="completions"){let{runCompletionsSubcommand:X}=await Promise.resolve().then(() => (mO(),vO));await X(Z);return}if(z==="adopt"){await ih(Z);return}if(z==="export"){let{runExportSubcommand:X}=await Promise.resolve().then(() => (lO(),iO));await X(Z);return}if(z==="repo"){let{runRepoSubcommand:X}=await Promise.resolve().then(() => (pO(),_O));await X(Z);return}if(z==="api"){let{runApiSubcommand:X}=await Promise.resolve().then(() => (HA(),qA));await X(Z);return}if(z==="update"){let{runUpdateSubcommand:X}=await Promise.resolve().then(() => (UA(),WA));await X(Z);return}if(z==="theme"){let{runThemeSubcommand:X}=await Promise.resolve().then(() => (FA(),LA));await X(Z);return}if(z==="feedback"){let{runFeedbackSubcommand:X}=await Promise.resolve().then(() => (RA(),NA));await X(Z);return}if(z==="daemon"){let{runDaemonSubcommand:X}=await Promise.resolve().then(() => (IA(),bA));await X(Z);return}if(z==="doctor"){let{runDoctorSubcommand:X}=await Promise.resolve().then(() => (Uj(),Wj));await X(Z);return}if(z==="web"){let{runWebSubcommand:X}=await Promise.resolve().then(() => (_A(),aA));await X(Z);return}if(z==="reset"){let{runResetSubcommand:X}=await Promise.resolve().then(() => (Uj(),Wj));await X(Z);return}if(z==="reload"){let{runReloadSubcommand:X}=await Promise.resolve().then(() => (Uj(),Wj));await X(Z);return}if(z==="skill"){let{runSkillSubcommand:X}=await Promise.resolve().then(() => (oA(),rA));await X(Z);return}if(z==="hook"){let{runHookSubcommand:X}=await Promise.resolve().then(() => (VW(),BW));await X(Z);return}if(await yO(z,Z))return;if(z!==void 0)console.error(`kobe: unknown command '${z}'`),D2(process.stderr),process.exit(2);let{startTui:Y}=await Promise.resolve().then(() => (U2(),W2));await Y()}lh().catch((J)=>{console.error("kobe failed to start:",J),process.exit(1)});