@sma1lboy/kobe 0.7.60 → 0.7.61
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.
- package/dist/cli/index.js +179 -179
- package/package.json +1 -1
package/dist/cli/index.js
CHANGED
|
@@ -1,88 +1,88 @@
|
|
|
1
1
|
#!/usr/bin/env bun
|
|
2
2
|
// @bun
|
|
3
|
-
var aO=Object.defineProperty;var _O=(J)=>J;function pO(J,z){this[J]=_O.bind(null,z)}var H1=(J,z)=>{for(var Z in z)aO(J,Z,{get:z[Z],enumerable:!0,configurable:!0,set:pO.bind(z,Z)})};var C=(J,z)=>()=>(J&&(z=J(J=0)),z);var vQ=import.meta.require;import{basename as rO}from"path";function oO(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 mQ(J,z){let Z;try{Z=oO(J)}catch{return!1}return Z.test(z)||Z.test(rO(z))}var z9=()=>{};var VV={};H1(VV,{resolvePersistedVendor:()=>cJ,prevVendorWithin:()=>Z9,nextVendorWithin:()=>NZ,nextVendor:()=>sO,isBuiltinVendor:()=>UJ,coerceVendorId:()=>CZ,BUILTIN_VENDORS:()=>ZY,ALL_VENDORS:()=>o1});function UJ(J){return J==="claude"||J==="codex"||J==="copilot"}function sO(J){let z=o1.indexOf(J);return o1[(z+1)%o1.length]??o1[0]}function NZ(J,z){if(J.length===0)return z;let Z=J.indexOf(z);return J[(Z+1)%J.length]??J[0]??z}function Z9(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 CZ(J){let z=J?.trim();return z&&z.length>0?z:"claude"}function cJ(J,z=[]){let Z=J?.trim();if(!Z)return"claude";if(UJ(Z))return Z;if(z.includes(Z))return Z;return"claude"}var ZY,o1;var s1=C(()=>{ZY=["claude","codex","copilot"],o1=[...ZY]});var cQ;var UV=C(()=>{cQ={$schema:"https://json.schemastore.org/package.json",name:"@sma1lboy/kobe",version:"0.7.60",description:"TUI orchestrator for Claude Code (codename)",type:"module",packageManager:"bun@1.3.13",bin:{kobe:"dist/cli/index.js"},files:["dist/cli","dist/web-ui","dist/*.wav","README.md","LICENSE"],publishConfig:{access:"public"},repository:{type:"git",url:"git+https://github.com/Sma1lboy/kobe.git"},homepage:"https://github.com/Sma1lboy/kobe#readme",bugs:{url:"https://github.com/Sma1lboy/kobe/issues"},engines:{bun:">=1.3.11"},scripts:{dev:"env KOBE_DEV=1 bun --preload @opentui/solid/preload --conditions=browser ./src/cli/index.ts","dev:mock":"env KOBE_DEV=1 bun --preload @opentui/solid/preload --conditions=browser ./src/tui/mock/host.tsx","dev:sandbox":"mkdir -p .dev-sandbox/home && env KOBE_DEV=1 KOBE_HOME_DIR=$PWD/.dev-sandbox/home KOBE_TMUX_SOCKET=kobe-sandbox bun --preload @opentui/solid/preload --conditions=browser ./src/cli/index.ts","dev:sandbox:reset":"env KOBE_TMUX_SOCKET=kobe-sandbox bun ./src/cli/index.ts kill-sessions","dev:version":"bash ../../scripts/dev-version.sh",build:"bun run scripts/build.ts","build:with-web":"bun run build",compile:"bun run scripts/compile.ts",typecheck:"tsc --noEmit","check-i18n":"bun run scripts/check-i18n.ts",test:"bun run test:fast && bun run test:socket","test:fast":"vitest run --passWithNoTests","test:socket":"KOBE_INCLUDE_SOCKET=1 vitest run test/daemon --pool forks --minWorkers=1 --maxWorkers=1 --passWithNoTests","test:behavior":"KOBE_INCLUDE_BEHAVIOR=1 vitest run test/behavior --passWithNoTests",bench:"vitest bench --run",lint:"biome check .",knip:"knip-bun",postinstall:"bun run scripts/check-preview-deps.ts || true",prepublishOnly:"bun run typecheck && bun run build"},"//":"biome.json + bunfig.toml live at the monorepo root since they apply repo-wide; bun.lock also lives at root (workspace-shared).",dependencies:{"@ansi-tools/parser":"^1.0.15","@opentui/core":"0.2.4","@opentui/solid":"0.2.4",ws:"^8.18.0","solid-js":"1.9.13","node-pty":"^1.1.0"},devDependencies:{"@biomejs/biome":"1.9.4","@sma1lboy/kobe-daemon":"0.7.11","@tsconfig/bun":"1.0.10","@types/bun":"1.3.14","@types/node":"25.6.2",knip:"^6.14.2","kobe-web":"workspace:*",typescript:"5.8.2",vitest:"2.1.9"},trustedDependencies:[]}});import{createHash as KV}from"crypto";import{homedir as eO}from"os";import{join as bZ}from"path";function DV(){return process.env.KOBE_DEV==="1"}function sJ(){return process.env.KOBE_HOME_DIR??eO()}function KJ(){return bZ(sJ(),".kobe")}function tJ(){return bZ(sJ(),".config","kobe","state.json")}function JA(){return bZ(KJ(),"settings")}function LV(){return bZ(JA(),"keybindings.yaml")}function Y9(){return bZ(KJ(),"issue-assets")}function FV(){return bZ(KJ(),"attachments")}function dQ(J,z,Z){let Y=KV("sha1").update(`${z}@${J}:${Z??22}`).digest("hex").slice(0,16);return bZ(KJ(),"ssh",`${Y}.sock`)}function MV(J){let z=KV("sha1").update(J).digest("hex").slice(0,16);return bZ(KJ(),"worktree-init",z)}var t1=()=>{};var AV={};H1(AV,{repoSlug:()=>YY,releasePageUrl:()=>H9,recommendedGlobalInstallCommand:()=>Q9,isNewerSemver:()=>X9,fetchReleaseSummaries:()=>YA,fetchReleaseNotesRange:()=>q9,fetchReleaseNotes:()=>ZA,compareSemver:()=>nQ,checkLatestVersion:()=>BG,UPDATE_SCRIPT_URL:()=>iQ,UPDATE_COMMAND:()=>tz,PACKAGE_NAME:()=>G9,CURRENT_VERSION:()=>J1});function YY(){let J=cQ.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 Q9(){return`npm install -g ${G9}@latest`}async function zA(J){let z=new AbortController,Z=setTimeout(()=>z.abort(),lQ);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 X9(J,z){return nQ(J,z)>0}function nQ(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 BG(J={}){let z=process.env.KOBE_FAKE_UPDATE;if(z)return{current:J1,latest:z,hasUpdate:X9(z,J1)};if(DV()&&!J.force)return null;let Z=await zA(G9);if(!Z)return null;return{current:J1,latest:Z,hasUpdate:X9(Z,J1)}}function OV(J){if(typeof J!=="string")return null;return J.match(/^v(\d+\.\d+\.\d+)$/)?.[1]??null}async function ZA(J){let z=YY();if(!z)return null;let Z=`v${J}`,Y=new AbortController,X=setTimeout(()=>Y.abort(),lQ);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 q9(J){let z=YY();if(!z)return[];let Z=J.limit??100,Y=new AbortController,X=setTimeout(()=>Y.abort(),lQ);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=OV(H.tag_name);if(!j||typeof H.html_url!=="string"||typeof H.body!=="string")return null;if(nQ(j,J.current)<=0)return null;if(nQ(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 YA(J=12){let z=YY();if(!z)return[];let Z=new AbortController,Y=setTimeout(()=>Z.abort(),lQ);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=OV(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 H9(J){let z=YY();if(!z)return null;return`https://github.com/${z}/releases/tag/v${J}`}var J1,G9,iQ="https://raw.githubusercontent.com/Sma1lboy/kobe/main/scripts/update.sh",tz,lQ=3000;var bJ=C(()=>{UV();t1();J1=cQ.version,G9=cQ.name;tz=`curl -fsSL ${iQ} | sh`});function lY(J,z={}){if(z.bareSafe&&XA.test(J))return J;return`'${J.replace(/'/g,"'\\''")}'`}function $Y(J,z={}){return J.map((Z)=>lY(Z,z)).join(" ")}var XA;var $Q=C(()=>{XA=/^[A-Za-z0-9_/.:=-]+$/});import{spawn as GA,spawnSync as QA}from"child_process";import{existsSync as qA}from"fs";import{mkdir as HA,readFile as jA,readdir as BA}from"fs/promises";function WA(J){return/^[A-Za-z0-9_@%+=:,./-]+$/.test(J)?J:lY(J)}function VA(J){if(!J)return"";let z=Object.entries(J).filter(([Z])=>/^[A-Za-z_][A-Za-z0-9_]*$/.test(Z));if(z.length===0)return"";return`${z.map(([Z,Y])=>`${Z}=${_Q(Y)}`).join(" ")} `}function aQ(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 NV(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=GA(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 pQ{isRemote=!1;run(J,z={}){return NV(J,{cwd:z.cwd,env:z.env?{...process.env,...z.env}:process.env,signal:z.signal})}async exists(J){return qA(J)}async mkdirp(J){await HA(J,{recursive:!0})}async readFile(J){try{return await jA(J,"utf8")}catch{return null}}async readdir(J){try{return await BA(J)}catch{return[]}}wrapCommand(J){return J}ensureReady(){}}class aY{spec;spawn;isRemote=!0;masterUp=!1;spawnAsync;constructor(J,z=gV,Z){this.spec=J;this.spawn=z;this.spawnAsync=Z??(this.spawn===gV?UA:async(Y,X)=>this.spawn(Y,X))}ensureReady(){if(this.masterUp)return;if(this.spawn([...aQ(this.spec,{batch:!0}),"-O","check"]).exitCode===0){this.masterUp=!0;return}let z=[...aQ(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=`${VA(z.env)}${fA(J)}`,Y=z.cwd?`cd ${_Q(z.cwd)} && ${Z}`:Z;return this.spawnAsync([...aQ(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 ${
|
|
3
|
+
var pO=Object.defineProperty;var rO=(J)=>J;function oO(J,z){this[J]=rO.bind(null,z)}var H1=(J,z)=>{for(var Z in z)pO(J,Z,{get:z[Z],enumerable:!0,configurable:!0,set:oO.bind(z,Z)})};var C=(J,z)=>()=>(J&&(z=J(J=0)),z);var mQ=import.meta.require;import{basename as sO}from"path";function tO(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 cQ(J,z){let Z;try{Z=tO(J)}catch{return!1}return Z.test(z)||Z.test(sO(z))}var ZB=()=>{};var UV={};H1(UV,{resolvePersistedVendor:()=>cJ,prevVendorWithin:()=>YB,nextVendorWithin:()=>NZ,nextVendor:()=>eO,isBuiltinVendor:()=>UJ,coerceVendorId:()=>CZ,BUILTIN_VENDORS:()=>ZY,ALL_VENDORS:()=>o1});function UJ(J){return J==="claude"||J==="codex"||J==="copilot"}function eO(J){let z=o1.indexOf(J);return o1[(z+1)%o1.length]??o1[0]}function NZ(J,z){if(J.length===0)return z;let Z=J.indexOf(z);return J[(Z+1)%J.length]??J[0]??z}function YB(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 CZ(J){let z=J?.trim();return z&&z.length>0?z:"claude"}function cJ(J,z=[]){let Z=J?.trim();if(!Z)return"claude";if(UJ(Z))return Z;if(z.includes(Z))return Z;return"claude"}var ZY,o1;var s1=C(()=>{ZY=["claude","codex","copilot"],o1=[...ZY]});var dQ;var KV=C(()=>{dQ={$schema:"https://json.schemastore.org/package.json",name:"@sma1lboy/kobe",version:"0.7.61",description:"TUI orchestrator for Claude Code (codename)",type:"module",packageManager:"bun@1.3.13",bin:{kobe:"dist/cli/index.js"},files:["dist/cli","dist/web-ui","dist/*.wav","README.md","LICENSE"],publishConfig:{access:"public"},repository:{type:"git",url:"git+https://github.com/Sma1lboy/kobe.git"},homepage:"https://github.com/Sma1lboy/kobe#readme",bugs:{url:"https://github.com/Sma1lboy/kobe/issues"},engines:{bun:">=1.3.11"},scripts:{dev:"env KOBE_DEV=1 bun --preload @opentui/solid/preload --conditions=browser ./src/cli/index.ts","dev:mock":"env KOBE_DEV=1 bun --preload @opentui/solid/preload --conditions=browser ./src/tui/mock/host.tsx","dev:sandbox":"mkdir -p .dev-sandbox/home && env KOBE_DEV=1 KOBE_HOME_DIR=$PWD/.dev-sandbox/home KOBE_TMUX_SOCKET=kobe-sandbox bun --preload @opentui/solid/preload --conditions=browser ./src/cli/index.ts","dev:sandbox:reset":"env KOBE_TMUX_SOCKET=kobe-sandbox bun ./src/cli/index.ts kill-sessions","dev:version":"bash ../../scripts/dev-version.sh",build:"bun run scripts/build.ts","build:with-web":"bun run build",compile:"bun run scripts/compile.ts",typecheck:"tsc --noEmit","check-i18n":"bun run scripts/check-i18n.ts",test:"bun run test:fast && bun run test:socket","test:fast":"vitest run --passWithNoTests","test:socket":"KOBE_INCLUDE_SOCKET=1 vitest run test/daemon --pool forks --minWorkers=1 --maxWorkers=1 --passWithNoTests","test:behavior":"KOBE_INCLUDE_BEHAVIOR=1 vitest run test/behavior --passWithNoTests",bench:"vitest bench --run",lint:"biome check .",knip:"knip-bun",postinstall:"bun run scripts/check-preview-deps.ts || true",prepublishOnly:"bun run typecheck && bun run build"},"//":"biome.json + bunfig.toml live at the monorepo root since they apply repo-wide; bun.lock also lives at root (workspace-shared).",dependencies:{"@ansi-tools/parser":"^1.0.15","@opentui/core":"0.2.4","@opentui/solid":"0.2.4",ws:"^8.18.0","solid-js":"1.9.13","node-pty":"^1.1.0"},devDependencies:{"@biomejs/biome":"1.9.4","@sma1lboy/kobe-daemon":"0.7.11","@tsconfig/bun":"1.0.10","@types/bun":"1.3.14","@types/node":"25.6.2",knip:"^6.14.2","kobe-web":"workspace:*",typescript:"5.8.2",vitest:"2.1.9"},trustedDependencies:[]}});import{createHash as DV}from"crypto";import{homedir as zA}from"os";import{join as bZ}from"path";function LV(){return process.env.KOBE_DEV==="1"}function sJ(){return process.env.KOBE_HOME_DIR??zA()}function KJ(){return bZ(sJ(),".kobe")}function tJ(){return bZ(sJ(),".config","kobe","state.json")}function ZA(){return bZ(KJ(),"settings")}function FV(){return bZ(ZA(),"keybindings.yaml")}function XB(){return bZ(KJ(),"issue-assets")}function MV(){return bZ(KJ(),"attachments")}function nQ(J,z,Z){let Y=DV("sha1").update(`${z}@${J}:${Z??22}`).digest("hex").slice(0,16);return bZ(KJ(),"ssh",`${Y}.sock`)}function OV(J){let z=DV("sha1").update(J).digest("hex").slice(0,16);return bZ(KJ(),"worktree-init",z)}var t1=()=>{};var RV={};H1(RV,{repoSlug:()=>YY,releasePageUrl:()=>jB,recommendedGlobalInstallCommand:()=>qB,isNewerSemver:()=>GB,fetchReleaseSummaries:()=>GA,fetchReleaseNotesRange:()=>HB,fetchReleaseNotes:()=>XA,compareSemver:()=>iQ,checkLatestVersion:()=>BG,UPDATE_SCRIPT_URL:()=>lQ,UPDATE_COMMAND:()=>tz,PACKAGE_NAME:()=>QB,CURRENT_VERSION:()=>e0});function YY(){let J=dQ.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 qB(){return`npm install -g ${QB}@latest`}async function YA(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 GB(J,z){return iQ(J,z)>0}function iQ(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 BG(J={}){let z=process.env.KOBE_FAKE_UPDATE;if(z)return{current:e0,latest:z,hasUpdate:GB(z,e0)};if(LV()&&!J.force)return null;let Z=await YA(QB);if(!Z)return null;return{current:e0,latest:Z,hasUpdate:GB(Z,e0)}}function AV(J){if(typeof J!=="string")return null;return J.match(/^v(\d+\.\d+\.\d+)$/)?.[1]??null}async function XA(J){let z=YY();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 HB(J){let z=YY();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=AV(H.tag_name);if(!j||typeof H.html_url!=="string"||typeof H.body!=="string")return null;if(iQ(j,J.current)<=0)return null;if(iQ(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 GA(J=12){let z=YY();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=AV(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 jB(J){let z=YY();if(!z)return null;return`https://github.com/${z}/releases/tag/v${J}`}var e0,QB,lQ="https://raw.githubusercontent.com/Sma1lboy/kobe/main/scripts/update.sh",tz,$Q=3000;var bJ=C(()=>{KV();t1();e0=dQ.version,QB=dQ.name;tz=`curl -fsSL ${lQ} | sh`});function lY(J,z={}){if(z.bareSafe&&QA.test(J))return J;return`'${J.replace(/'/g,"'\\''")}'`}function $Y(J,z={}){return J.map((Z)=>lY(Z,z)).join(" ")}var QA;var aQ=C(()=>{QA=/^[A-Za-z0-9_/.:=-]+$/});import{spawn as qA,spawnSync as HA}from"child_process";import{existsSync as jA}from"fs";import{mkdir as BA,readFile as fA,readdir as WA}from"fs/promises";function UA(J){return/^[A-Za-z0-9_@%+=:,./-]+$/.test(J)?J:lY(J)}function KA(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}=${pQ(Y)}`).join(" ")} `}function _Q(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 CV(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=qA(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 rQ{isRemote=!1;run(J,z={}){return CV(J,{cwd:z.cwd,env:z.env?{...process.env,...z.env}:process.env,signal:z.signal})}async exists(J){return jA(J)}async mkdirp(J){await BA(J,{recursive:!0})}async readFile(J){try{return await fA(J,"utf8")}catch{return null}}async readdir(J){try{return await WA(J)}catch{return[]}}wrapCommand(J){return J}ensureReady(){}}class aY{spec;spawn;isRemote=!0;masterUp=!1;spawnAsync;constructor(J,z=NV,Z){this.spec=J;this.spawn=z;this.spawnAsync=Z??(this.spawn===NV?DA:async(Y,X)=>this.spawn(Y,X))}ensureReady(){if(this.masterUp)return;if(this.spawn([..._Q(this.spec,{batch:!0}),"-O","check"]).exitCode===0){this.masterUp=!0;return}let z=[..._Q(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=`${KA(z.env)}${VA(J)}`,Y=z.cwd?`cd ${pQ(z.cwd)} && ${Z}`:Z;return this.spawnAsync([..._Q(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 ${pQ(z.cwd)} && ${J}`:J;return`${_Q(this.spec,{tty:z.tty}).map(UA).join(" ")} ${pQ(Z)}`}}var pQ,VA,NV=(J,z)=>{let[Z,...Y]=J,X=HA(Z??"",Y,{env:z?{...process.env,...z}:process.env,encoding:"utf8",shell:!1});return{stdout:X.stdout??"",stderr:X.stderr??"",exitCode:X.status??-1}},DA=(J,z,Z)=>CV(J,{env:z?{...process.env,...z}:process.env,signal:Z?.signal});var BB=C(()=>{aQ();pQ=lY,VA=$Y});import{spawnSync as LA}from"child_process";import{platform as FA}from"os";function bV(J,z,Z){return{service:MA,account:Z?`${z}@${J}:${Z}`:`${z}@${J}`}}function WB(J=fB){return J.platform()==="darwin"}function kV(J,z,Z=fB){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 oQ(J,z=fB){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 fB,MA="kobe-remote-ssh";var VB=C(()=>{fB={run(J){let[z,...Z]=J,Y=LA(z??"",Z,{encoding:"utf8",shell:!1});return{stdout:Y.stdout??"",exitCode:Y.status??-1}},platform(){return FA()}}});import{mkdirSync as OA,readFileSync as AA,renameSync as RA,writeFileSync as gA}from"fs";import{dirname as NA}from"path";function OJ(){try{let J=AA(tJ(),"utf8"),z=JSON.parse(J);if(z&&typeof z==="object"&&!Array.isArray(z))return z}catch{}return{}}function IV(J){let z=tJ();OA(NA(z),{recursive:!0});let Z=`${z}.tmp`;gA(Z,JSON.stringify(J,null,2),"utf8"),RA(Z,z)}function _Y(J){let z=OJ();if(J(z)!==!1)IV(z);return z}function kZ(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 dJ(J,z){let Z=OJ()[J];return typeof Z==="boolean"?Z:z}function sQ(J,z){kZ({[J]:z})}function SV(J){IV(J)}var wz=C(()=>{t1()});var ZZ={};H1(ZZ,{statePath:()=>kA,setRepoInitOverride:()=>IA,setPersistedString:()=>QJ,resolveRepoRoot:()=>ez,resolveMainRepoRoot:()=>bA,removeSavedRepo:()=>LB,remoteRepoKey:()=>uV,normalizeSavedRepos:()=>KB,isRemoteRepoKey:()=>e1,isRemoteProjectsEnabled:()=>FB,isGitRepo:()=>CA,getSavedRepos:()=>SJ,getRepoInitOverride:()=>DB,getRemoteRepos:()=>MB,getRemoteRepoConfig:()=>zZ,getPersistedString:()=>x1,getCustomEngineIds:()=>nJ,addSavedRepo:()=>JZ,addRemoteRepo:()=>OB});import{spawnSync as UB}from"child_process";import{realpathSync as yV}from"fs";function ez(J){if(e1(J))return J;let z=UB("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(yV(J)===yV(Z))return J}catch{}return Z}function CA(J){if(e1(J))return!1;let z=UB("git",["rev-parse","--is-inside-work-tree"],{cwd:J,encoding:"utf8",shell:!1});return z.status===0&&(z.stdout??"").trim()==="true"}function bA(J){if(e1(J))return J;let z=UB("git",["worktree","list","--porcelain"],{cwd:J,encoding:"utf8",shell:!1});if(z.status!==0)return ez(J);return(z.stdout??"").split(/\r?\n/).find((Y)=>Y.startsWith("worktree "))?.slice(9).trim()||ez(J)}function kA(){return tJ()}function tQ(J){let z=J.savedRepos;if(!Array.isArray(z))return[];return z.filter((Z)=>typeof Z==="string")}function SJ(){return tQ(OJ())}function x1(J){let z=OJ()[J];return typeof z==="string"?z:void 0}function QJ(J,z){kZ({[J]:z})}function nJ(){let J=OJ().customEngineIds;if(!Array.isArray(J))return[];return J.filter((z)=>typeof z==="string"&&z.trim().length>0)}function JZ(J){let z=ez(J),Z={added:!1,path:z,total:0};return _Y((Y)=>{let X=tQ(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 KB(){let J=SJ(),z=new Set,Z=[],Y=!1;for(let X of J){let G=ez(X);if(G!==X)Y=!0;if(z.has(G)){Y=!0;continue}z.add(G),Z.push(G)}if(!Y)return;kZ({savedRepos:Z})}function TV(J){let z=J.repoConfigs;if(!z||typeof z!=="object"||Array.isArray(z))return{};return z}function xV(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 DB(J){return xV(TV(OJ())[ez(J)])}function IA(J,z){let Z=ez(J),Y={};return _Y((X)=>{let G={...TV(X)},q=xV(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 LB(J){let z={removed:!1,path:J,total:0};return _Y((Z)=>{let Y=tQ(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=eQ(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 FB(){return dJ("experimental.remoteProjects",!1)}function uV(J,z,Z){return Z?`ssh://${z}@${J}:${Z}`:`ssh://${z}@${J}`}function eQ(J){let z=J.remoteRepos;if(!z||typeof z!=="object"||Array.isArray(z))return{};return z}function zZ(J){return eQ(OJ())[J]??null}function MB(){return eQ(OJ())}function OB(J){let z=uV(J.host,J.user,J.port),Z=!1;return _Y((Y)=>{let X={...eQ(Y)};X[z]=J,Y.remoteRepos=X;let G=tQ(Y);if(Z=!G.includes(z),Z)Y.savedRepos=[...G,z];return}),{key:z,added:Z}}var S1=C(()=>{t1();wz()});var PV={};H1(PV,{runAddRemote:()=>TA,parseRemoteFlags:()=>wV});import{createInterface as SA}from"readline";function wV(J){let z={};for(let Z=0;Z<J.length;Z++){let Y=J[Z];switch(Y){case"--host":z.host=J[++Z];break;case"--user":z.user=J[++Z];break;case"--path":z.path=J[++Z];break;case"--port":{let X=Number(J[++Z]);if(!Number.isInteger(X)||X<=0)Vz(`invalid --port "${J[Z]}"`);z.port=X;break}case"--key":{let X=J[Z+1];if(X&&!X.startsWith("-"))z.key={present:!0,path:X},Z++;else z.key={present:!0};break}case"--password":z.password=!0;break;case"--help":case"-h":process.stdout.write(EV),process.exit(0);break;default:Vz(`unknown flag "${Y}"`)}}return z}function Vz(J){process.stderr.write(`kobe add --remote: ${J}
|
|
5
5
|
|
|
6
|
-
${
|
|
7
|
-
`),z.close(),G(q)})})}async function
|
|
6
|
+
${EV}`),process.exit(2)}async function yA(J){let z=SA({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 TA(J){if(!FB())Vz("remote projects are experimental and disabled \u2014 enable Settings \u2192 Dev \u2192 Experimental \u2192 Remote projects first");let z=wV(J);if(!z.host)Vz("--host is required");if(!z.user)Vz("--user is required");if(!z.path)Vz("--path (remote base path) is required");if(z.key&&z.password)Vz("choose ONE of --key or --password, not both");if(!z.key&&!z.password)Vz("an auth method is required: --key [path] or --password");let Z;if(z.password){if(!WB())Vz("--password needs the macOS keychain (unsupported on this platform)");let G=bV(z.host,z.user,z.port),q=await yA(`Password for ${z.user}@${z.host}: `);if(q.length===0)Vz("empty password");if(!kV(G,q))Vz("failed to store the password in the keychain");Z={kind:"password",keychainRef:G}}else Z={kind:"key",keyPath:z.key?.path};let{key:Y,added:X}=OB({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 xA(z,Z)}async function xA(J,z){if(z.kind==="password"&&!WB())return;let Z=z.kind==="key"?{kind:"key",keyPath:z.keyPath}:{kind:"password",getPassword:()=>oQ(z.keychainRef)},Y={host:J.host,user:J.user,port:J.port,auth:Z,controlPath:nQ(J.host,J.user,J.port)};process.stdout.write("checking connection\u2026 ");try{if((await new aY(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 EV;var hV=C(()=>{t1();BB();VB();S1();EV=`Usage: kobe add --remote --host <host> --user <user> --path <basePath>
|
|
8
8
|
[--port N] [--key [path] | --password]
|
|
9
9
|
|
|
10
10
|
Register an SSH-backed project. Worktrees + the engine run on <host> under
|
|
11
11
|
<basePath>. Choose ONE auth: --key [path] (ssh-agent when path omitted) or
|
|
12
12
|
`+`--password (prompted, stored in the OS keychain \u2014 never in state.json).
|
|
13
|
-
`});function
|
|
14
|
-
`}var eJ=3,IZ=2,
|
|
15
|
-
`}function
|
|
16
|
-
`)}catch{}}function
|
|
13
|
+
`});function Jq(J){return J.remoteVersion>=J.localMin&&J.localVersion>=J.remoteMin}function vV(J,z){if(!J)return!1;return J!==z}function EA(J){return typeof J==="string"&&uA.has(J)}function mV(J){if(!Array.isArray(J))return null;let z=new Set;for(let Z of J)if(EA(Z))z.add(Z);return z.size>0?z:null}function Uz(J){return{id:J.id,title:J.title,repo:J.repo,branch:J.branch,worktreePath:J.worktreePath,kind:J.kind??"task",status:J.status,archived:J.archived,pinned:J.pinned??!1,vendor:J.vendor,prStatus:J.prStatus,position:J.position,modelEffort:J.modelEffort,createdAt:J.createdAt,updatedAt:J.updatedAt}}function fG(J){return`${JSON.stringify(J)}
|
|
14
|
+
`}var eJ=3,IZ=2,AB,uA;var XY=C(()=>{AB=["task.snapshot","issue.snapshot","active-task","update","engine-state","ui-prefs","keybindings","task.jobs","worktree.changes","transcript.activity","session.deliver"],uA=new Set(AB)});import{createHash as wA}from"crypto";import{homedir as zq,tmpdir as PA}from"os";import{join as GY}from"path";function hA(J){return wA("sha1").update(J).digest("hex").slice(0,8)}function gB(J,z,Z,Y){if(Buffer.byteLength(J,"utf8")<=RB)return J;let X=hA(z),G=Y===void 0?"":`-${Y}`,q=GY(PA(),`kobe-${X}-${Z}${G}.sock`);if(Buffer.byteLength(q,"utf8")<=RB)return q;throw Error(`kobe socket path exceeds ${RB} bytes even after fallback: ${q}`)}function Pz(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 gB(GY(Z,".kobe","daemon.sock"),Z,"daemon");let Y=process.env.XDG_RUNTIME_DIR;if(Y&&Y.length>0)return gB(GY(Y,"kobe.sock"),Y,"daemon");let X=zq();return gB(GY(X,".kobe","daemon.sock"),X,"daemon")}function YZ(J=process.env.KOBE_HOME_DIR??zq()){let z=process.env.KOBE_DAEMON_PID_PATH;if(z&&z.length>0)return z;return GY(J,".kobe","daemon.pid")}function Zq(J=process.env.KOBE_HOME_DIR??zq()){return GY(J,".kobe","daemon.log")}function cV(J=process.env.KOBE_HOME_DIR??zq()){return GY(J,".kobe","client.log")}var RB=100;var pY=()=>{};import{appendFile as dV,mkdir as vA}from"fs/promises";import{dirname as mA}from"path";function Yq(J){lV=J}function cA(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 ${lV} [${J}] pid=${process.pid}: ${z}
|
|
15
|
+
`}function dA(){if(nV)return;nV=!0;try{process.stderr.write(`[kobe] client log write failed; continuing without it
|
|
16
|
+
`)}catch{}}function aV(J){let z=cV();iV=iV.then(async()=>{try{await dV(z,J)}catch(Z){if(Z?.code==="ENOENT")await vA(mA(z),{recursive:!0}),await dV(z,J);else throw Z}}).catch(()=>dA())}function XZ(J,z){aV($V(J,z))}function qJ(J,z){let Z=cA(z);aV($V(J,Z.stack??Z.message))}function _V(){if(NB||CB)return;NB=(J)=>qJ("crash-net",J),CB=(J)=>qJ("crash-net",J),process.on("unhandledRejection",NB),process.on("uncaughtException",CB)}var lV="client",nV=!1,iV,NB,CB;var QY=C(()=>{pY();iV=Promise.resolve()});import{connect as nA}from"net";import{StringDecoder as iA}from"string_decoder";class Jz{socketPath;socket=null;buffer="";nextId=1;pending=new Map;handlers=new Map;lifecycleHandlers=new Map;connecting=null;disposed=!1;constructor(J){this.socketPath=J}connect(){if(this.socket)return Promise.resolve();if(this.disposed)return Promise.reject(Error("daemon client disposed"));if(this.connecting)return this.connecting;let J=this.openSocket();this.connecting=J;let z=()=>{if(this.connecting===J)this.connecting=null};return J.then(z,z),J}get isDisposed(){return this.disposed}close(){this.disposed=!0,this.socket?.end(),this.socket=null,this.failPending()}forceDisconnect(){let J=this.socket;if(!J)return;this.socket=null,J.destroy(),this.failPending()}failPending(){if(this.pending.size===0)return;let J=Error("daemon connection closed");for(let z of this.pending.values())z.reject(J);this.pending.clear()}on(J,z){let Z=this.handlers.get(J);if(!Z)Z=new Set,this.handlers.set(J,Z);return Z.add(z),()=>{if(Z?.delete(z),Z?.size===0)this.handlers.delete(J)}}onChannel(J,z){return this.on(J,(Z)=>z(Z.payload))}subscribe(J={}){let z={};if(J.channels)z.channels=J.channels;if(J.role)z.role=J.role;return this.request("subscribe",z)}onLifecycle(J,z){let Z=this.lifecycleHandlers.get(J);if(!Z)Z=new Set,this.lifecycleHandlers.set(J,Z);return Z.add(z),()=>{if(Z?.delete(z),Z?.size===0)this.lifecycleHandlers.delete(J)}}async request(J,z){await this.connect();let Z=this.socket;if(!Z)throw Error("daemon connection is not open");let Y=String(this.nextId++),X=new Promise((G,q)=>{this.pending.set(Y,{resolve:(H)=>G(H),reject:q})});return Z.write(fG({type:"request",id:Y,name:J,payload:z})),X}openSocket(){return new Promise((J,z)=>{let Z=nA(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 iA("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
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 WG=C(()=>{XY();QY()});import{spawnSync as
|
|
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
|
|
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&&
|
|
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&&
|
|
22
|
-
`)){let X=Y.trim();if(!X)continue;if(!yZ(X))continue;let G;try{G=JSON.parse(X)}catch{continue}if(!
|
|
23
|
-
`)}function
|
|
24
|
-
`)}return
|
|
25
|
-
`)}function
|
|
26
|
-
`)}catch{}}class
|
|
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 WG=C(()=>{XY();QY()});import{spawnSync as lA}from"child_process";import{existsSync as $A,statSync as aA}from"fs";import{homedir as _A}from"os";import VG from"path";async function pV(J=pA){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(VG.join(X,".claude","local","claude"));if(G)return G;let q=J.env("NVM_BIN");if(q){let B=Z(VG.join(q,"claude"));if(B)return B}let H=VG.join(X,".nvm","versions","node"),j=J.readdir(H).sort().reverse();for(let B of j){let V=Z(VG.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(VG.join(X,B));if(V)return V}throw new Xq(z)}var Xq,pA;var rV=C(()=>{Xq=class Xq 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}};pA={fileExists(J){try{return aA(J).isFile()}catch{return!1}},env(J){return process.env[J]},home(){return _A()},which(J){let z=process.platform==="win32"?"where":"which",Z=lA(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&&$A(X)?X:void 0}return Y},readdir(J){try{return mQ("fs").readdirSync(J)}catch{return[]}}}});import{spawnSync as rA}from"child_process";import{existsSync as oA,statSync as sA}from"fs";import{homedir as tA}from"os";import oV from"path";async function sV(J=eA){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(oV.join(G,"codex"));if(q)return q}for(let q of[".local/bin/codex",".bun/bin/codex","bin/codex"]){let H=Z(oV.join(X,q));if(H)return H}throw new Gq(z)}var Gq,eA;var tV=C(()=>{Gq=class Gq 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}};eA={fileExists(J){try{return sA(J).isFile()}catch{return!1}},env(J){return process.env[J]},home(){return tA()},which(J){let z=process.platform==="win32"?"where":"which",Z=rA(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&&oA(X)?X:void 0}return Y},readdir(J){try{return mQ("fs").readdirSync(J)}catch{return[]}}}});import{spawnSync as JR}from"child_process";import{existsSync as zR,statSync as ZR}from"fs";import{homedir as YR}from"os";import SZ from"path";async function eV(J=XR){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(SZ.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=[SZ.join(j,".npm-global/bin"),SZ.join(j,".local/bin"),SZ.join(j,".bun/bin"),SZ.join(j,"bin")];if(J.platform()==="win32"){let V=J.env("APPDATA"),f=J.env("LOCALAPPDATA");if(B.unshift(SZ.join(j,"AppData/Roaming/npm")),V)B.unshift(SZ.join(V,"npm"));if(f)B.unshift(SZ.join(f,"npm"))}for(let V of B){let f=G(V);if(f)return f}throw new Qq(z)}var Qq,XR;var J7=C(()=>{Qq=class Qq 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}};XR={fileExists(J){try{return ZR(J).isFile()}catch{return!1}},env(J){return process.env[J]},home(){return YR()},which(J){let z=process.platform==="win32"?"where":"which",Z=JR(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&&zR(X)?X:void 0}return Y},platform(){return process.platform}}});import{readFileSync as GR,statSync as QR}from"fs";import{readFile as qR,stat as HR}from"fs/promises";async function rY(J,z=z7){let{size:Z}=await HR(J);if(Z>z)return"";return qR(J,"utf8")}function Z7(J,z=z7){let Z;try{Z=QR(J)}catch(Y){if(Y.code==="ENOENT")return null;throw Y}if(Z.size>z)return null;return GR(J,"utf8")}function yZ(J,z=jR){return J.length<=z}var z7=104857600,jR=8388608;var UG=()=>{};import{homedir as BR}from"os";import TZ from"path";function fR(J,z){let Z=J("CLAUDE_CONFIG_DIR")?.trim();if(Z)return TZ.join(Z,".claude.json");return TZ.join(z,".claude.json")}function WR(J,z){let Y=J("CODEX_HOME")?.trim()??TZ.join(z,".codex");return TZ.join(Y,"auth.json")}function VR(J,z){let Y=J("COPILOT_HOME")?.trim()??TZ.join(z,".copilot");return TZ.join(Y,"config.json")}function UR(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 Hq(J){try{return{found:!0,path:await J()}}catch(z){if(z instanceof Xq||z instanceof Gq||z instanceof Qq)return{found:!1,error:"not found on PATH"};return{found:!1,error:z instanceof Error?z.message:String(z)}}}async function Y7(J){return(await Promise.all([["claude",()=>J.findClaudeBinary()],["codex",()=>J.findCodexBinary()],["copilot",()=>J.findCopilotBinary()]].map(async([Y,X])=>(await Hq(X)).found?Y:null))).filter((Y)=>Y!==null)}function KR(J=oY){if(J!==oY)return Y7(J);if(qq)return qq;let z=Y7(J).catch((Z)=>{throw qq=null,Z});return qq=z,z}async function GZ(J=oY){return[...await KR(J),...nJ()]}async function jq(J=oY){let z=await Hq(()=>J.findClaudeBinary()),Z=fR(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 Bq(J=oY){let z=await Hq(()=>J.findCodexBinary()),Z=WR(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=UR(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 fq(J=oY){let z=await Hq(()=>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=VR(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(!bB(X))return{binary:z,account:{kind:"none"}};if(X7(X,["github_token","oauth_token","access_token","token","selectedUser","currentUser","user"]))return{binary:z,account:{kind:"oauth"}};return{binary:z,account:{kind:"none"}}}function bB(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}function X7(J,z,Z=0){if(Z>4||!bB(J))return!1;for(let[Y,X]of Object.entries(J)){if(z.includes(Y)&&typeof X==="string"&&X.length>0)return!0;if(bB(X)&&X7(X,z,Z+1))return!0}return!1}var oY,qq=null;var qY=C(()=>{S1();rV();tV();J7();UG();oY={readFile(J){return Z7(J)},env(J){return process.env[J]},home(){return BR()},findClaudeBinary(){return pV()},findCodexBinary(){return sV()},findCopilotBinary(){return eV()}}});function G7(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 Q7(J){return J.isMeta===!0||J.isCompactSummary===!0}function q7(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 Ph,mkdir as hh,readdir as kB,stat as DR,unlink as vh}from"fs/promises";import{homedir as H7}from"os";import Wq from"path";function FR(J){return J.replace(/[/.]/g,"-")}async function KG(J){if(!J)return[];let z=Wq.join(H7(),".claude","projects",FR(J)),Z;try{Z=await kB(z)}catch{return[]}let Y=[];for(let X of Z){if(!X.endsWith(".jsonl"))continue;let G=Wq.join(z,X),q=0;try{q=(await DR(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 j7(J){return(await KG(J))[0]?.mtimeMs??0}async function B7(J,z=LR){let Z=z.projectsDir(),Y=await z.readdir(Z);for(let X of Y){let G=Wq.join(Z,X,`${J}.jsonl`),q;try{q=await z.readFile(G)}catch{continue}return MR(OR(q,J))}return[]}function MR(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 OR(J,z){let Z=[];for(let Y of J.split(`
|
|
22
|
+
`)){let X=Y.trim();if(!X)continue;if(!yZ(X))continue;let G;try{G=JSON.parse(X)}catch{continue}if(!IB(G))continue;let q=AR(G,z);if(q)Z.push(q)}return Z}function AR(J,z){if(Q7(J))return null;let Z=IB(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=G7(Z.content);if(Y==="user"&&q7(X))return null;let G=typeof J.timestamp==="string"?J.timestamp:new Date().toISOString(),q=typeof J.sessionId==="string"?J.sessionId:z,H=RR(Z.usage);return H?{role:Y,blocks:X,timestamp:G,sessionId:q,usage:H}:{role:Y,blocks:X,timestamp:G,sessionId:q}}function RR(J){if(!IB(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 IB(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}var LR;var SB=C(()=>{UG();LR={projectsDir(){return Wq.join(H7(),".claude","projects")},async readdir(J){try{return await kB(J)}catch{return[]}},async readFile(J){return await rY(J)},async pathExists(J){try{return await kB(J),!0}catch{return!1}}}});import{fileURLToPath as W7}from"url";function i1(){if(import.meta.url.endsWith(".js"))return["kobe"];let z=W7(new URL("./index.ts",import.meta.url)),Z=W7(import.meta.resolve("@opentui/solid/preload"));return[process.execPath,"--preload",Z,"--conditions=browser",z]}function DG(){if(import.meta.url.endsWith(".js"))return["kobe"];if(Bun.which("kobe"))return["kobe"];return i1()}var QZ=()=>{};function FG(J){return`kobe-hidden-${J.replace(/[^A-Za-z0-9_-]/g,"")||"session"}`}function K7(J){let z=Number.parseInt(J.replace(/^@/,""),10);return Number.isFinite(z)&&z>=0?1000+z:1000}function xB(J){if(!Number.isFinite(J))return U7;return Math.max(gR,Math.min(NR,Math.round(J)))}function HY(J){if(!Number.isFinite(J))return null;return Math.max(CR,Math.min(bR,Math.round(J)))}function L7(J){let z=Number.parseInt(J[Vq]??"",10),Z=Number.isFinite(z)&&z>0?xB(z):U7,Y=HY(Number.parseInt(J[Uq]??"",10)),X=HY(Number.parseInt(J[Kq]??"",10)),G=[];if(Y!==null)G.push("-x",`${Y}%`);if(X!==null)G.push("-y",`${X}%`);return{tasksWidth:Z,rightColumnWidthPct:Y??100-uB,opsHeightPct:X??MG,rightColumnResizeArgs:G}}function Z1(J){return lY(J)}function TJ(J){return $Y(J)}function xJ(J,z){let X=`${z?yB:""}${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 F7(J){return`trap '' INT; while :; do ${J}; sleep 1; done`}function tY(J,z,Z){return`${J}${z.map(Z1).join(" ")} engine-tab-exit --session ${Z1(Z)}`}function M7(){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 EB(J){let z=typeof J==="number"?J:J==null?Number.NaN:Number.parseInt(J,10);if(!Number.isFinite(z))return kR;return Math.max(IR,Math.min(SR,Math.round(z)))}function yR(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 O7(J,z,Z){let Y=xJ(J,Z),X=z?.initScript?.trim();if(!X)return Y;let G=EB(z?.timeoutSeconds),q=yR(X,G);if(z?.markerPath){let H=Z1(z.markerPath),j=Z1(TR(z.markerPath));return yB+[`if [ ! -f ${H} ]; then`,q,`if [ "$__kobe_init_rc" -eq 0 ]; then mkdir -p ${j} && : > ${H}; fi`,"fi",Y].join(`
|
|
24
|
+
`)}return yB+[q,Y].join(`
|
|
25
|
+
`)}function TR(J){let z=J.lastIndexOf("/");return z<=0?".":J.slice(0,z)}function V7(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 A7(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 R7(J){return`${TJ([...J.cliInvocation,"update-page"])}`}function g7(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 uZ(J,z={}){let Z=[...J,"tasks"];if(z.initialTaskId)Z.push("--initial-task-id",z.initialTaskId);return TJ(Z)}function eY(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} || { ${V7(J.cwd)}; }`}return V7(J.cwd)}var U7=32,zz="tasks",jY="claude",Kz="ops",Dz="shell",LG="workspace_aux",TB=4,Lz="@kobe_hidden_shell_pane",yJ="@kobe_hidden_tasks_pane",xZ="@kobe_zen_panes",sY="@kobe_zen",Vq="@kobe_tasks_width",gR=16,NR=120,uB=60,MG=50,Uq="@kobe_right_width_pct",Kq="@kobe_ops_height_pct",CR=10,bR=90,D7,yB="trap ':' INT; ",kR=120,IR=5,SR=3600;var Fz=C(()=>{aQ();D7=[Vq,Uq,Kq]});function Zz(J){return!!J&&typeof J==="object"&&!Array.isArray(J)}function uR(J){return J.map((z)=>TJ(["hook",z.verb]))}function ER(J,z){if(!Zz(J)||!Array.isArray(J.hooks))return!1;return J.hooks.some((Z)=>Zz(Z)&&typeof Z.command==="string"&&z.some((Y)=>Z.command.includes(Y)))}function b7(J,z=DG()){let Z={};for(let{event:Y,matcher:X,verb:G}of J){let H={hooks:[{type:"command",command:TJ([...z,"hook",G])}]};if(X)H.matcher=X;Z[Y]=[H]}return Z}function Dq(J,z,Z,Y=DG()){let X=uR(Z),{hooks:G,...q}=J,H=Zz(G)?{...G}:{},j=z?b7(Z,Y):{};for(let{event:B}of Z){let f=(Array.isArray(H[B])?H[B]:[]).filter((U)=>!ER(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 k7(J=DG()){let z=TJ([...J,"hook",C7]);return{[N7]:[{matcher:xR,hooks:[{type:"command",command:z}]}]}}function wR(J){if(!Zz(J)||!Array.isArray(J.hooks))return!1;return J.hooks.some((z)=>Zz(z)&&typeof z.command==="string"&&z.command.includes(C7))}function Lq(J,z,Z=DG()){let{hooks:Y,...X}=J,G=Zz(Y)?{...Y}:{},q=N7,j=(Array.isArray(G[q])?G[q]:[]).filter((B)=>!wR(B));if(z)j.push(...k7(Z)[q]);if(j.length>0)G[q]=j;else delete G[q];return Object.keys(G).length>0?{...X,hooks:G}:{...X}}var N7="PostToolUse",xR="Bash",C7="worktree-created";var wB=C(()=>{QZ();Fz()});import{mkdir as PR,readFile as hR,writeFile as vR}from"fs/promises";import{dirname as mR}from"path";async function cR(J){try{let z=JSON.parse(await hR(J,"utf8"));return Zz(z)?z:{}}catch{return{}}}async function JX(J,z){try{let Z=await cR(J),Y=z(Z);if(JSON.stringify(Y)===JSON.stringify(Z))return;await PR(mR(J),{recursive:!0}),await vR(J,`${JSON.stringify(Y,null,2)}
|
|
26
|
+
`)}catch{}}class OG{supportsHooks(){return!0}activityDetailFromPayload(J,z){return}supportsWorktreeSync(){return!1}async removeWorktreeSyncHook(J){}async installActivityHooks(J){await JX(J,(z)=>Dq(z,!0,this.eventMap))}async removeActivityHooks(J){await JX(J,(z)=>Dq(z,!1,this.eventMap))}async installWorktreeWatchHook(J){await JX(J,(z)=>Lq(z,!0))}async removeWorktreeWatchHook(J){await JX(J,(z)=>Lq(z,!1))}}var PB=C(()=>{wB()});import{homedir as dR}from"os";import{join as nR}from"path";function iR(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 lR(){return nR(dR(),".claude","settings.json")}function aR(J){if(!Zz(J)||!Array.isArray(J.hooks))return!1;return J.hooks.some((z)=>Zz(z)&&typeof z.command==="string"&&z.command.includes($R))}function _R(J,z){let{hooks:Z,...Y}=J,{WorktreeCreate:X,...G}=Zz(Z)?Z:{},H=(Array.isArray(X)?X:[]).filter((B)=>!aR(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 I7,Gv,$R="worktree-created",hB;var S7=C(()=>{PB();wB();I7=[{event:"SessionStart",verb:"session-start"},{event:"UserPromptSubmit",verb:"turn-start"},{event:"Stop",verb:"turn-complete"},{event:"StopFailure",verb:"turn-failed"},{event:"Notification",matcher:"permission_prompt",verb:"awaiting-input"},{event:"SessionEnd",verb:"session-end"}],Gv=I7.map((J)=>J.event);hB=class hB extends OG{vendor="claude";eventMap=I7;globalSettingsPath(){return lR()}activityDetailFromPayload(J,z){if(J==="turn-failed")return{failure:iR(z.error_type)};if(J==="awaiting-input")return{waiting:"permission"};return}supportsWorktreeSync(){return!0}async removeWorktreeSyncHook(J){await JX(J,(z)=>_R(z,null))}}});function vB(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(!pR(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 pR(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}function y7(J){if(J.length===0)return!1;for(let z of J){if(z.type!=="text")return!1;let Z=(z.text??"").trim();if(!rR(Z)&&!oR(Z))return!1}return!0}function rR(J){return J.startsWith("<environment_context>")&&J.endsWith("</environment_context>")}function oR(J){return J.startsWith("# AGENTS.md instructions for ")&&J.includes(`
|
|
27
27
|
<INSTRUCTIONS>
|
|
28
|
-
`)&&J.endsWith("</INSTRUCTIONS>")}var
|
|
29
|
-
`)){let Z=z.trim();if(!Z)continue;if(!yZ(Z))return"";try{let Y=JSON.parse(Z);if(Y.type==="session_meta")return Y.payload?.cwd??""}catch{}return""}return""}async function
|
|
30
|
-
`)){let X=Y.trim();if(!X)continue;if(!yZ(X))continue;let G;try{G=JSON.parse(X)}catch{continue}if(!
|
|
31
|
-
`)){let X=Y.trim();if(!X)continue;if(!yZ(X))continue;let G;try{G=JSON.parse(X)}catch{continue}if(!
|
|
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
|
|
33
|
-
`)){let j=H.trim();if(!j)continue;if(!yZ(j))continue;let B;try{B=JSON.parse(j)}catch{continue}if(!
|
|
34
|
-
`)){X++;let q=
|
|
35
|
-
`)){Y++;let G=s7(X);if(!G||G.type!=="turn.completed")continue;let q=t7(G,0),H={id:`codex:${z}:${q}:${Y}`,timestampMs:q,source:"codex"};if(!Z||H.timestampMs>=Z.timestampMs)Z=H}return Z}function s7(J){let z=J.trim();if(!z)return null;try{let Z=JSON.parse(z);return e7(Z)?Z:null}catch{return null}}function t7(J,z){let Z=typeof J.timestamp==="string"?Date.parse(J.timestamp):Number.NaN;return Number.isFinite(Z)?Z:z}function e7(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}var C2,s9,b2,t9,Rq;var gq=C(()=>{I9();l9();qZ();C2={listSessionFiles:(J)=>KG(J),readFile:(J)=>o7(J,"utf8")};s9=class s9 extends Aq{deps;vendor="claude";cache=new Map;constructor(J=C2){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=k2(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}};b2={findLatestRollout:(J)=>i9(J),readFile:(J)=>o7(J,"utf8")};t9=class t9 extends Aq{deps;vendor="codex";cache=null;constructor(J=b2){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=I2(Z,z.path);return this.cache={path:z.path,mtimeMs:z.mtimeMs,marker:Y},Y}};Rq=class Rq extends Aq{vendor;constructor(J){super();this.vendor=J}supportsCompletionMarkers(){return!1}async latestCompletion(){return null}}});function E2(J){return{vendor:J,builtin:!1,displayName:J,defaultCommand:[J],history:S2,detectAccount:async()=>({binary:{found:!1,error:"custom engine: kobe has no account detector for it"},account:{kind:"none"}}),createHookAdapter:()=>new Oq(J),createTurnDetector:()=>new Rq(J)}}function JJ(J){return UJ(J)?u2[J]:E2(J)}var S2,y2,T2,x2,u2;var qZ=C(()=>{s1();qY();I9();I7();l9();l7();r7();o9();gq();S2={async listSessionIdsForWorktree(){return[]},async readHistory(){return[]},async latestTranscriptMtimeForWorktree(){return 0}},y2={async listSessionIdsForWorktree(J){return[...await KG(J)].sort((Z,Y)=>Z.mtimeMs-Y.mtimeMs).map((Z)=>Z.sessionId)},readHistory:(J)=>j7(J),latestTranscriptMtimeForWorktree:(J)=>H7(J)},T2={listSessionIdsForWorktree:(J)=>m7(J),readHistory:(J)=>d7(J),latestTranscriptMtimeForWorktree:(J)=>c7(J)},x2={listSessionIdsForWorktree:(J)=>a7(J),readHistory:(J)=>p7(J),latestTranscriptMtimeForWorktree:(J)=>_7(J)},u2={claude:{vendor:"claude",builtin:!0,displayName:"Claude",defaultCommand:["claude"],history:y2,detectAccount:(J)=>Hq(J),createHookAdapter:()=>new P9,createTurnDetector:()=>new s9},codex:{vendor:"codex",builtin:!0,displayName:"Codex",defaultCommand:["codex"],effortLevels:["none","low","medium","high","xhigh"],history:T2,detectAccount:(J)=>jq(J),createHookAdapter:()=>new $9,createTurnDetector:()=>new t9},copilot:{vendor:"copilot",builtin:!0,displayName:"Copilot",defaultCommand:["copilot"],history:x2,detectAccount:(J)=>Bq(J),createHookAdapter:()=>new Oq("copilot"),createTurnDetector:()=>new Rq("copilot")}}});async function zX(J,z){if(!z)return 0;return JJ(J).history.latestTranscriptMtimeForWorktree(z)}var Nq=C(()=>{qZ()});function JU(J){return typeof J==="string"&&w2.includes(J)}var RG=(J)=>J,zJ="claude",w2;var Yz=C(()=>{w2=["backlog","in_progress","in_review","done","canceled","error"]});function Cq(J){return P2.includes(J)}function zU(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 P2;var bq=C(()=>{P2=["session-start","turn-start","turn-complete","turn-failed","awaiting-input","session-end"]});function h2(){let J=process.env.KOBE_ENGINE_STATE_TTL_MS;if(J===void 0)return ZU;let z=Number(J);return Number.isFinite(z)&&z>0?z:ZU}class e9{bus;staleMs;now;livenessAt;activity=new Map;constructor(J,z=h2(),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=zU(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 ZU=600000;var YU=C(()=>{bq()});function XU(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 kq(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 GU(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=XU(Z);return Y.length>0?Buffer.from(Y,"utf8").toString("utf8"):Y}async function ZX(J,z=zJ){if(!J)return"";let{history:Z}=JJ(z),Y=await Z.listSessionIdsForWorktree(J);for(let X of Y.slice(0,v2)){let G=GU(await Z.readHistory(X));if(G)return G}return""}async function QU(J,z){if(!z)return"";try{return GU(await JJ(J).history.readHistory(z))}catch{return""}}var v2=8;var Iq=C(()=>{qZ();Yz()});function qU(J){let z=String(J),Z=z.length-1;return E1.context.id+(Z?String.fromCharCode(96+Z):"")+z}function ZB(J){E1.context=J}function m2(){return{...E1.context,id:E1.getNextContextId(),count:0}}function VY(J,z){let Z=N1,Y=r0,X=J.length===0,G=z===void 0?Y:z,q=X?{owned:null,cleanups:null,context:null,owner:null}:{owned:null,cleanups:null,context:G?G.context:null,owner:G},H=X?()=>J(()=>{throw Error("Dispose method must be an explicit argument to createRoot function")}):()=>J(()=>YJ(()=>wZ(q)));Oz.afterCreateOwner&&Oz.afterCreateOwner(q),r0=q,N1=null;try{return uJ(H,!0)}finally{N1=Z,r0=Y}}function s(J,z){z=z?Object.assign({},xq,z):xq;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(KU(Z),Oz.afterCreateSignal)Oz.afterCreateSignal(Z)}let Y=(X)=>{if(typeof X==="function")if(B0&&B0.running&&B0.sources.has(Z))X=X(Z.tValue);else X=X(Z.value);return XB(Z,X)};return[DU.bind(Z),Y]}function HU(J,z,Z){let Y=GX(J,z,!0,iJ,Z);if(XX&&B0&&B0.running)ZJ.push(Y);else KY(Y)}function hz(J,z,Z){let Y=GX(J,z,!1,iJ,Z);if(XX&&B0&&B0.running)ZJ.push(Y);else KY(Y)}function n0(J,z,Z){UU=t2;let Y=GX(J,z,!1,iJ,Z),X=CG&&lJ(CG);if(X)Y.suspense=X;if(!Z||!Z.render)Y.user=!0;AJ?AJ.push(Y):KY(Y)}function K0(J,z,Z){Z=Z?Object.assign({},xq,Z):xq;let Y=GX(J,z,!0,0,Z);if(Y.observers=null,Y.observerSlots=null,Y.comparator=Z.equals||void 0,XX&&B0&&B0.running)Y.tState=iJ,ZJ.push(Y);else KY(Y);return DU.bind(Y)}function $2(J){return J&&typeof J==="object"&&"then"in J}function UY(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=JB,j=null,B=!1,V=!1,f="initialValue"in G,U=typeof Y==="function"&&K0(Y),L=new Set,[O,A]=(G.storage||s)(G.initialValue),[g,E]=s(void 0),[h,I]=s(void 0,{equals:!1}),[N,M]=s(f?"ready":"unresolved");if(E1.context){if(j=E1.getNextContextId(),G.ssrLoadFrom==="initial")H=G.initialValue;else if(E1.load&&E1.has(j))H=E1.load(j)}function y(X0,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=JB,B0&&X0&&B)B0.promises.delete(X0),B=!1,uJ(()=>{B0.running=!0,c(G0,f0)},!1);else c(G0,f0)}return G0}function c(X0,G0){uJ(()=>{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=CG&&lJ(CG),G0=O(),f0=g();if(f0!==void 0&&!q)throw f0;if(N1&&!N1.user&&X0)HU(()=>{if(h(),q){if(X0.resolved&&B0&&B)B0.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=B0&&B0.running,G0==null||G0===!1){y(q,YJ(O));return}if(B0&&q)B0.promises.delete(q);let f0,_=H!==JB?H:YJ(()=>{try{return X(G0,{value:O(),refetching:X0})}catch(O0){f0=O0}});if(f0!==void 0){y(q,void 0,Tq(f0),G0);return}else if(!$2(_))return y(q,_,void 0,G0),_;if(q=_,"v"in _){if(_.s===1)y(q,_.v,void 0,G0);else y(q,void 0,Tq(_.v),G0);return _}return V=!0,queueMicrotask(()=>V=!1),uJ(()=>{M(f?"refreshing":"pending"),I()},!1),_.then((O0)=>y(_,O0,void 0,G0),(O0)=>y(_,void 0,Tq(O0),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=r0;if(U)HU(()=>(t=r0,i(!1)));else i(!1);return[d,{refetch:(X0)=>_2(t,()=>i(X0)),mutate:A}]}function Pq(J){return uJ(J,!1)}function YJ(J){if(!YX&&N1===null)return J();let z=N1;N1=null;try{if(YX)return YX.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){n0(()=>YJ(J))}function C1(J){if(r0===null)console.warn("cleanups created outside a `createRoot` or `render` will never be run");else if(r0.cleanups===null)r0.cleanups=[J];else r0.cleanups.push(J);return J}function a2(J,z){if(gG||(gG=Symbol("error")),r0=GX(void 0,void 0,!0),r0.context={...r0.context,[gG]:[z]},B0&&B0.running)B0.sources.add(r0);try{return J()}catch(Z){kG(Z)}finally{r0=r0.owner}}function hq(){return N1}function _2(J,z){let Z=r0,Y=N1;r0=J,N1=null;try{return uJ(z,!0)}catch(X){kG(X)}finally{r0=Z,N1=Y}}function p2(J){if(B0&&B0.running)return J(),B0.done;let z=N1,Z=r0;return Promise.resolve().then(()=>{N1=z,r0=Z;let Y;if(XX||CG)Y=B0||(B0={sources:new Set,effects:[],promises:new Set,disposed:new Set,queue:new Set,running:!0}),Y.done||(Y.done=new Promise((X)=>Y.resolve=X)),Y.running=!0;return uJ(J,!1),N1=r0=null,Y?Y.done:void 0})}function BU(J,z){let Z=GX(()=>YJ(()=>{return Object.assign(J,{[i2]:!0}),J(z)}),void 0,!0,0);return Z.props=z,Z.observers=null,Z.observerSlots=null,Z.name=J.name,Z.component=J,KY(Z),Z.tValue!==void 0?Z.tValue:Z.value}function KU(J){if(r0){if(r0.sourceMap)r0.sourceMap.push(J);else r0.sourceMap=[J];J.graph=r0}if(Oz.afterRegisterGraph)Oz.afterRegisterGraph(J)}function vz(J,z){let Z=Symbol("context");return{id:Z,Provider:e2(Z,z),defaultValue:J}}function lJ(J){let z;return r0&&r0.context&&(z=r0.context[J.id])!==void 0?z:J.defaultValue}function r2(J){let z=K0(J),Z=K0(()=>YB(z()),void 0,{name:"children"});return Z.toArray=()=>{let Y=Z();return Array.isArray(Y)?Y:Y!=null?[Y]:[]},Z}function DU(){let J=B0&&B0.running;if(this.sources&&(J?this.tState:this.state))if((J?this.tState:this.state)===iJ)KY(this);else{let z=ZJ;ZJ=null,uJ(()=>uq(this),!1),ZJ=z}if(N1){let z=this.observers;if(!z||z[z.length-1]!==N1){let Z=z?z.length:0;if(!N1.sources)N1.sources=[this],N1.sourceSlots=[Z];else N1.sources.push(this),N1.sourceSlots.push(Z);if(!z)this.observers=[N1],this.observerSlots=[N1.sources.length-1];else z.push(N1),this.observerSlots.push(N1.sources.length-1)}}if(J&&B0.sources.has(this))return this.tValue;return this.value}function XB(J,z,Z){let Y=B0&&B0.running&&B0.sources.has(J)?J.tValue:J.value;if(!J.comparator||!J.comparator(Y,z)){if(B0){let X=B0.running;if(X||!Z&&B0.sources.has(J))B0.sources.add(J),J.tValue=z;if(!X)J.value=z}else J.value=z;if(J.observers&&J.observers.length)uJ(()=>{for(let X=0;X<J.observers.length;X+=1){let G=J.observers[X],q=B0&&B0.running;if(q&&B0.disposed.has(G))continue;if(q?!G.tState:!G.state){if(G.pure)ZJ.push(G);else AJ.push(G);if(G.observers)FU(G)}if(!q)G.state=iJ;else G.tState=iJ}if(ZJ.length>1e6){if(ZJ=[],c2)throw Error("Potential Infinite Loop Detected.");throw Error()}},!1)}return z}function KY(J){if(!J.fn)return;wZ(J);let z=wq;if(fU(J,B0&&B0.running&&B0.sources.has(J)?J.tValue:J.value,z),B0&&!B0.running&&B0.sources.has(J))queueMicrotask(()=>{uJ(()=>{B0&&(B0.running=!0),N1=r0=J,fU(J,J.tValue,z),N1=r0=null},!1)})}function fU(J,z,Z){let Y,X=r0,G=N1;N1=r0=J;try{Y=J.fn(z)}catch(q){if(J.pure)if(B0&&B0.running)J.tState=iJ,J.tOwned&&J.tOwned.forEach(wZ),J.tOwned=void 0;else J.state=iJ,J.owned&&J.owned.forEach(wZ),J.owned=null;return J.updatedAt=Z+1,kG(q)}finally{N1=G,r0=X}if(!J.updatedAt||J.updatedAt<=Z){if(J.updatedAt!=null&&"observers"in J)XB(J,Y,!0);else if(B0&&B0.running&&J.pure){if(!B0.sources.has(J))J.value=Y;B0.sources.add(J),J.tValue=Y}else J.value=Y;J.updatedAt=Z}}function GX(J,z,Z,Y=iJ,X){let G={fn:J,state:Y,updatedAt:null,owned:null,sources:null,sourceSlots:null,cleanups:null,value:z,owner:r0,context:r0?r0.context:null,pure:Z};if(B0&&B0.running)G.state=0,G.tState=Y;if(r0===null)console.warn("computations created outside a `createRoot` or `render` will never be disposed");else if(r0!==l2)if(B0&&B0.running&&r0.pure)if(!r0.tOwned)r0.tOwned=[G];else r0.tOwned.push(G);else if(!r0.owned)r0.owned=[G];else r0.owned.push(G);if(X&&X.name)G.name=X.name;if(YX&&G.fn){let q=G.fn,[H,j]=s(void 0,{equals:!1}),B=YX.factory(q,j);C1(()=>B.dispose());let V,f=()=>p2(j).then(()=>{if(V)V.dispose(),V=void 0});G.fn=(U)=>{if(H(),B0&&B0.running){if(!V)V=YX.factory(q,f);return V.track(U)}return B.track(U)}}return Oz.afterCreateOwner&&Oz.afterCreateOwner(G),G}function bG(J){let z=B0&&B0.running;if((z?J.tState:J.state)===0)return;if((z?J.tState:J.state)===NG)return uq(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<wq)){if(z&&B0.disposed.has(J))return;if(z?J.tState:J.state)Z.push(J)}for(let Y=Z.length-1;Y>=0;Y--){if(J=Z[Y],z){let X=J,G=Z[Y+1];while((X=X.owner)&&X!==G)if(B0.disposed.has(X))return}if((z?J.tState:J.state)===iJ)KY(J);else if((z?J.tState:J.state)===NG){let X=ZJ;ZJ=null,uJ(()=>uq(J,Z[0]),!1),ZJ=X}}}function uJ(J,z){if(ZJ)return J();let Z=!1;if(!z)ZJ=[];if(AJ)Z=!0;else AJ=[];wq++;try{let Y=J();return o2(Z),Y}catch(Y){if(!Z)AJ=null;ZJ=null,kG(Y)}}function o2(J){if(ZJ){if(XX&&B0&&B0.running)s2(ZJ);else LU(ZJ);ZJ=null}if(J)return;let z;if(B0){if(!B0.promises.size&&!B0.queue.size){let{sources:Y,disposed:X}=B0;AJ.push.apply(AJ,B0.effects),z=B0.resolve;for(let G of AJ)"tState"in G&&(G.state=G.tState),delete G.tState;B0=null,uJ(()=>{for(let G of X)wZ(G);for(let G of Y){if(G.value=G.tValue,G.owned)for(let q=0,H=G.owned.length;q<H;q++)wZ(G.owned[q]);if(G.tOwned)G.owned=G.tOwned;delete G.tValue,delete G.tOwned,G.tState=0}jU(!1)},!1)}else if(B0.running){B0.running=!1,B0.effects.push.apply(B0.effects,AJ),AJ=null,jU(!0);return}}let Z=AJ;if(AJ=null,Z.length)uJ(()=>UU(Z),!1);else Oz.afterUpdate&&Oz.afterUpdate();if(z)z()}function LU(J){for(let z=0;z<J.length;z++)bG(J[z])}function s2(J){for(let z=0;z<J.length;z++){let Z=J[z],Y=B0.queue;if(!Y.has(Z))Y.add(Z),XX(()=>{Y.delete(Z),uJ(()=>{B0.running=!0,bG(Z)},!1),B0&&(B0.running=!1)})}}function t2(J){let z,Z=0;for(z=0;z<J.length;z++){let Y=J[z];if(!Y.user)bG(Y);else J[Z++]=Y}if(E1.context){if(E1.count){E1.effects||(E1.effects=[]),E1.effects.push(...J.slice(0,Z));return}ZB()}if(E1.effects&&(E1.done||!E1.count))J=[...E1.effects,...J],Z+=E1.effects.length,delete E1.effects;for(z=0;z<Z;z++)bG(J[z])}function uq(J,z){let Z=B0&&B0.running;if(Z)J.tState=0;else J.state=0;for(let Y=0;Y<J.sources.length;Y+=1){let X=J.sources[Y];if(X.sources){let G=Z?X.tState:X.state;if(G===iJ){if(X!==z&&(!X.updatedAt||X.updatedAt<wq))bG(X)}else if(G===NG)uq(X,z)}}}function FU(J){let z=B0&&B0.running;for(let Z=0;Z<J.observers.length;Z+=1){let Y=J.observers[Z];if(z?!Y.tState:!Y.state){if(z)Y.tState=NG;else Y.state=NG;if(Y.pure)ZJ.push(Y);else AJ.push(Y);Y.observers&&FU(Y)}}}function wZ(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--)wZ(J.tOwned[z]);delete J.tOwned}if(B0&&B0.running&&J.pure)MU(J,!0);else if(J.owned){for(z=J.owned.length-1;z>=0;z--)wZ(J.owned[z]);J.owned=null}if(J.cleanups){for(z=J.cleanups.length-1;z>=0;z--)J.cleanups[z]();J.cleanups=null}if(B0&&B0.running)J.tState=0;else J.state=0;delete J.sourceMap}function MU(J,z){if(!z)J.tState=0,B0.disposed.add(J);if(J.owned)for(let Z=0;Z<J.owned.length;Z++)MU(J.owned[Z])}function Tq(J){if(J instanceof Error)return J;return Error(typeof J==="string"?J:"Unknown error",{cause:J})}function WU(J,z,Z){try{for(let Y of z)Y(J)}catch(Y){kG(Y,Z&&Z.owner||null)}}function kG(J,z=r0){let Z=gG&&z&&z.context&&z.context[gG],Y=Tq(J);if(!Z)throw Y;if(AJ)AJ.push({fn(){WU(Y,Z,z)},state:iJ});else WU(Y,Z,z)}function YB(J){if(typeof J==="function"&&!J.length)return YB(J());if(Array.isArray(J)){let z=[];for(let Z=0;Z<J.length;Z++){let Y=YB(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 e2(J,z){return function(Y){let X;return hz(()=>X=YJ(()=>{return r0.context={...r0.context,[J]:Y.value},r2(()=>Y.children)}),void 0,z),X}}function VU(J){for(let z=0;z<J.length;z++)J[z]()}function zg(J,z,Z={}){let Y=[],X=[],G=[],q=0,H=z.length>1?[]:null;return C1(()=>VU(G)),()=>{let j=J()||[],B=j.length,V,f;return j[Eq],YJ(()=>{let L,O,A,g,E,h,I,N,M;if(B===0){if(q!==0)VU(G),G=[],Y=[],X=[],q=0,H&&(H=[]);if(Z.fallback)Y=[Jg],X[0]=VY((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]=VY(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]=VY(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 OU(J,z){if(Zg){if(E1.context){let Z=E1.context;ZB(m2());let Y=BU(J,z||{});return ZB(Z),Y}}return BU(J,z||{})}function Sq(){return!0}function zB(J){return!(J=typeof J==="function"?J():J)?{}:J}function Xg(){for(let J=0,z=this.length;J<z;++J){let Z=this[J]();if(Z!==void 0)return Z}}function vq(...J){let z=!1;for(let q=0;q<J.length;q++){let H=J[q];z=z||!!H&&Mz in H,J[q]=typeof H==="function"?(z=!0,K0(H)):H}if(n2&&z)return new Proxy({get(q){for(let H=J.length-1;H>=0;H--){let j=zB(J[H])[q];if(j!==void 0)return j}},has(q){for(let H=J.length-1;H>=0;H--)if(q in zB(J[H]))return!0;return!1},keys(){let q=[];for(let H=0;H<J.length;H++)q.push(...Object.keys(zB(J[H])));return[...new Set(q)]}},Yg);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:Xg.bind(Z[V]=[f.get.bind(H)])}:f.value!==void 0?f:void 0;else{let U=Z[V];if(U){if(f.get)U.push(f.get.bind(H));else if(f.value!==void 0)U.push(()=>f.value)}}}}let X={},G=Object.keys(Y);for(let q=G.length-1;q>=0;q--){let H=G[q],j=Y[H];if(j&&j.get)Object.defineProperty(X,H,j);else X[H]=j?j.value:void 0}return X}function Y1(J){let z="fallback"in J&&{fallback:()=>J.fallback};return K0(zg(()=>J.each,J.children,z||void 0),void 0,{name:"value"})}function Y0(J){let z=J.keyed,Z=K0(()=>J.when,void 0,{name:"condition value"}),Y=z?Z:K0(Z,void 0,{equals:(X,G)=>!X===!G,name:"condition"});return K0(()=>{let X=Y();if(X){let G=J.children;return typeof G==="function"&&G.length>0?YJ(()=>G(z?X:()=>{if(!YJ(Y))throw Gg("Show");return Z()})):G}return J.fallback},void 0,{name:"value"})}function AU(J){let z;if(E1.context&&E1.load)z=E1.load(E1.getContextId());let[Z,Y]=s(z,{name:"errored"});return yq||(yq=new Set),yq.add(Y),C1(()=>yq.delete(Y)),K0(()=>{let X;if(X=Z()){let G=J.fallback;if(typeof G!=="function"||G.length==0)console.error(X);return typeof G==="function"&&G.length?YJ(()=>G(X,()=>Y())):G}return a2(()=>J.children,Y)},void 0,{name:"value"})}var E1,c2=!0,d2=(J,z)=>J===z,Mz,n2,Eq,i2,xq,gG=null,UU,iJ=1,NG=2,l2,JB,r0=null,B0=null,XX=null,YX=null,N1=null,ZJ=null,AJ=null,wq=0,Oz,_v,jU,CG,Jg,Zg=!1,Yg,Gg=(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.`,yq,RU;var D1=C(()=>{E1={context:void 0,registry:void 0,effects:void 0,done:!1,getContextId(){return qU(this.context.count)},getNextContextId(){return qU(this.context.count++)}};Mz=Symbol("solid-proxy"),n2=typeof Proxy==="function",Eq=Symbol("solid-track"),i2=Symbol("solid-dev-component"),xq={equals:d2},UU=LU,l2={},JB={},Oz={afterUpdate:null,afterCreateOwner:null,afterCreateSignal:null,afterRegisterGraph:null};[_v,jU]=s(!1);Jg=Symbol("fallback");Yg={get(J,z,Z){if(z===Mz)return Z;return J.get(z)},has(J,z){if(z===Mz)return!0;return J.has(z)},set:Sq,deleteProperty:Sq,getOwnPropertyDescriptor(J,z){return{configurable:!0,enumerable:!0,get(){return J.get(z)},set:Sq,deleteProperty:Sq}},ownKeys(J){return J.keys()}};RU={hooks:Oz,writeSignal:XB,registerGraph:KU};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 Qg}from"child_process";function GB(J,z,Z,Y){if(Z)return J+Y.slowRetryMs;return z+Math.max(Y.minIntervalMs,(z-J)*5)}function QB(J,z){return!J.inFlight&&z>=J.nextAllowedAt}function gU(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 NU(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(!QB(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=GB(X,Date.now(),B,z),J.inFlight=!1,j&&!B)Y(H)})(),!0}function HZ(J,z,Z){return new Promise((Y)=>{let X="",G=!1,q=(j)=>{if(G)return;G=!0,Y({status:j,stdout:X})},H=Qg(J,z.slice(),{cwd:Z.cwd,stdio:["ignore","pipe","ignore"],env:Z.env,signal:Z.signal,killSignal:"SIGKILL"});H.stdout?.on("data",(j)=>{X+=String(j)}),H.on("error",()=>q(null)),H.on("close",(j)=>q(j))})}var qX=()=>{};function qg(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 Hg(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 jg(J){if(!J||J.length===0)return"none";let z=!1,Z=!1;for(let Y of J){let X=Hg(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 bU(J,z){if(!J||typeof J.number!=="number")return null;return{provider:"github",lifecycle:qg(J.state,J.reviewDecision),checkState:jg(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 cq(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 mq(J,z){return z.some((Z)=>J.includes(Z))}function qB(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(mq(z,Vg))return{kind:"empty"};if(mq(z,Bg))return{kind:"error",error:"no-remote"};if(mq(z,fg))return{kind:"error",error:"auth"};if(mq(z,Wg))return{kind:"error",error:"network"};return{kind:"empty"}}function IG(J,z,Z,Y,X=Math.random){let G=(H)=>Z+gU(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(NU(Y.failureBaseMs,q-1,Y.failureCapMs)),failures:q}}var CU="number,url,title,state,baseRefName,headRefName,reviewDecision,mergeable,statusCheckRollup",Bg,fg,Wg,Vg;var HB=C(()=>{qX();Bg=["none of the git remotes","no git remote","to use github cli in a github repository","not a github repository"],fg=["gh auth login","authentication required","not logged in","http 401","bad credentials","requires authentication"],Wg=["could not resolve host","no such host","dial tcp","connection refused","connection reset","network is unreachable","i/o timeout","timeout","tls handshake","http 5","rate limit","try again"],Vg=["no pull requests found","no open pull requests","no pull request found"]});var jB,BB,fB,WB="DIRTY_WORKTREE",VB,UB;var KB=C(()=>{jB=class jB 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"}};BB=class BB extends Error{constructor(J){super(`task not found: ${J}`);this.name="TaskNotFoundError"}};fB=class fB extends Error{constructor(){super("cannot delete a main task; remove the repo from saved repos instead");this.name="CannotDeleteMainTaskError"}};VB=class VB extends Error{taskId;constructor(J){super(`${WB}: task ${J} worktree has uncommitted or untracked changes`);this.taskId=J;this.name="DirtyWorktreeError"}};UB=class UB 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 kU;var IU=C(()=>{kU=["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 Ug}from"fs";function SU(J){let z=J.auth,Z=z.kind==="key"?{kind:"key",keyPath:z.keyPath}:{kind:"password",getPassword:()=>rQ(z.keychainRef)};return{host:J.host,user:J.user,port:J.port,auth:Z,controlPath:dQ(J.host,J.user,J.port)}}function HX(J){let z=zZ(J);if(!z)return new pQ;return new aY(SU(z))}function jZ(J){for(let z of Object.values(F9()))if(J===z.basePath||J.startsWith(`${z.basePath}/`))return new aY(SU(z));return new pQ}function yU(J){return J&&e1(J)?J:void 0}function PZ(J){return jZ(J).isRemote||Ug(J)}function l1(J){return jZ(J).isRemote?sJ():J}var Az=C(()=>{t1();S1();j9();W9()});import{isAbsolute as Kg,join as Dg,resolve as TU}from"path";function xU(J){let z=J.trim();if(!z)return"default";if(z.replace(/\/+$/,"")===DB)return"nextToProject";return"custom"}function LB(J){let z=J.trim();return z===BZ||z.startsWith(`${BZ}/`)}function FB(J,z){if(typeof J!=="string")return null;let Z=J.trim();if(!Z)return null;if(LB(Z)){if(!z)return null;let G=Z.slice(BZ.length).replace(/^\/+/,"");return TU(z,G)}let Y=sJ();if(Z==="~")return Y;let X=Z.startsWith("~/")?Dg(Y,Z.slice(2)):Z;return Kg(X)?X:TU(Y,X)}function uU(J){let z=OJ()[hZ];return FB(typeof z==="string"?z:null,J)}var hZ="worktree.basePath",dq="worktree.basePath.custom",BZ="$project_dir",DB;var MB=C(()=>{t1();wz();DB=`${BZ}/..`});import{createHash as Lg}from"crypto";import wU from"fs";import RJ from"path";function Ag(J){return uU(J)??RJ.join(KJ(),PU)}function Rg(){return RJ.join(KJ(),PU)}function hU(J){if(!RJ.isAbsolute(J))throw Error(`worktreeRootFor: repo must be an absolute path, got: ${J}`);return RJ.join(Ag(J),lU(J))}function vU(J){if(!RJ.isAbsolute(J))throw Error(`managedWorktreeRootsFor: repo must be an absolute path, got: ${J}`);let z=hU(J),Z=RJ.join(Rg(),lU(J));return[...z===Z?[z]:[z,Z],...Og.map((X)=>RJ.join(J,X))]}function mU(J,z){if(!z||/[/\\\0]/.test(z))throw Error(`worktreePathFor: invalid slug: ${JSON.stringify(z)}`);return RJ.join(hU(J),z)}async function cU(J){if(e1(J)){let Z=zZ(J)?.basePath;if(!Z)return[];return HX(J).readdir(nU(Z))}let z=new Set;for(let Z of vU(J))try{for(let Y of wU.readdirSync(Z,{withFileTypes:!0}))if(Y.isDirectory())z.add(Y.name)}catch{}return[...z]}function OB(J,z){if(!RJ.isAbsolute(J)||!RJ.isAbsolute(z))return null;let Z=EU(z);for(let Y of vU(J)){let X=EU(Y),G=RJ.relative(X,Z);if(G!==""&&!G.startsWith("..")&&!RJ.isAbsolute(G))return Y}return null}function dU(J,z){return OB(J,z)!==null}function nU(J){return`${gg(J)}/.kobe/worktrees`}function iU(J,z){if(!z||/[/\\\0]/.test(z))throw Error(`remoteWorktreePathFor: invalid slug: ${JSON.stringify(z)}`);return`${nU(J)}/${z}`}function gg(J){return J.length>1&&J.endsWith("/")?J.replace(/\/+$/,""):J}function EU(J){try{return wU.realpathSync(J)}catch{return RJ.resolve(J)}}function lU(J){let Z=(RJ.basename(J)||"repo").replace(/[^a-zA-Z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"repo",Y=Lg("sha1").update(RJ.resolve(J)).digest("hex").slice(0,12);return`${Z}-${Y}`}var PU="worktrees",Fg=".kobe/worktrees",Mg=".claude/worktrees",Og;var AB=C(()=>{t1();Az();S1();MB();Og=[Fg,Mg]});class RB{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??kU,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 cU(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 $U=C(()=>{IU();AB()});var _U={};H1(_U,{PLACEHOLDER_TASK_TITLE:()=>mz,Orchestrator:()=>nq});import{realpathSync as Ng}from"fs";import{basename as Cg,resolve as bg}from"path";function aU(J){return zZ(J)?.basePath??J}class nq{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 RB((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??mz).trim()||mz,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}=SG(J),Y=this.store.list().find((q)=>q.kind==="main"&&SG(q.repo).key===Z);if(Y)return Y;let X=this.mainTaskLocks.get(Z);if(X)return X;let G=(async()=>{let q=cJ(x1("lastSelectedVendor"),nJ());return await this.store.create({repo:z,title:kg(z),branch:"",worktreePath:aU(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 aU(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||kq(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!==kq(mz,J.id))return;let Z=kq(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 jB(Z.status,z,Z.id);await this.store.update(Z.id,{status:z})}async setPRStatus(J,z){let Z=this.requireTask(J);if(cq(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 fB;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 VB(Z.id)}try{await this.worktrees.remove(Z.worktreePath,{force:Y})}catch(X){throw new UB(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=SG(J).key;for(let Z of SJ())if(SG(Z).key===z)D9(Z);for(let Z of this.store.list()){if(Z.kind!=="main")continue;if(SG(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)=>jX(Y.worktreePath)));return z.filter((Y)=>!Z.has(jX(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=jX(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&&jX(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)=>jX(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??Cg(X.path)).trim()||mz;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 BB(String(J));return z}}function kg(J){let z=J.split(/[/\\]/).filter(Boolean);return z.length>0?z[z.length-1]??J:J}function SG(J){let z=ez(J);return{repo:z,key:e1(z)?z:jX(z)}}function jX(J){try{return Ng(J)}catch{return bg(J)}}var mz="(new task)";var yG=C(()=>{D1();HB();S1();Yz();s1();KB();$U()});function BX(J,z,Z){if(!z)return J;let Y=HX(z);return Y.ensureReady(),Y.wrapCommand(J,{tty:!0,cwd:Z})}function p1(){let J=[];for(let z of["KOBE_HOME_DIR","KOBE_DAEMON_SOCKET_PATH","KOBE_TMUX_SOCKET"]){let Z=process.env[z];if(Z&&Z.length>0)J.push(`${z}=${z1(Z)}`)}return J.length>0?`${J.join(" ")} `:""}var TG="@kobe_remote";var DY=C(()=>{Az();Fz()});function iq(){return dJ(LY,!1)}var LY="experimental.autoStatus";var xG=C(()=>{wz()});function gB(){return dJ(FY,!1)}var FY="experimental.dispatcher";var lq=C(()=>{wz()});import{randomUUID as Ig}from"crypto";function Rz(J){return`engineCommand.${J}`}function gz(J){return`engineName.${J}`}function MY(J){return x1(gz(J))?.trim()||NB[J]||J}function uG(J){return JJ(J??"claude").defaultCommand}function Sg(J){let z=[],Z=/"([^"]*)"|'([^']*)'|(\S+)/g;for(let Y=Z.exec(J);Y!==null;Y=Z.exec(J))z.push(Y[1]??Y[2]??Y[3]??"");return z}function EJ(J,z){let Z=J??"claude",Y=x1(Rz(Z))?.trim(),X=(()=>{if(Y){let G=Sg(Y);if(G.length>0)return G}return uG(Z)})();return yg(X,Z,z)}function yg(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 fX(J,z){if((z??"claude")!=="claude")return{argv:J,sessionId:null};if(J.some((Y)=>Tg.has(Y)))return{argv:J,sessionId:null};let Z=Ig();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[...u1(),"api"].map(J).join(" ")}catch{return"kobe api"}}function xg(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(`
|
|
36
|
-
`)}function
|
|
37
|
-
`)}function
|
|
38
|
-
|
|
39
|
-
`):null}function
|
|
40
|
-
`)}function aq(J,z,Z,Y=gB){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",wg(Z)]}var NB,Tg;var Xz=C(()=>{QZ();qZ();xG();lq();S1();s1();NB=Object.fromEntries(ZY.map((J)=>[J,JJ(J).displayName]));Tg=new Set(["--session-id","--resume","-r","--continue","-c","--from-pr"])});var pU={};H1(pU,{archivedHistoryPreviewEnabled:()=>CB,ARCHIVED_HISTORY_PREVIEW_KEY:()=>EG});function CB(){return dJ(EG,!1)}var EG="experimental.archivedHistoryPreview";var _q=C(()=>{wz()});import{spawnSync as Pg}from"child_process";function rU(J,z){if(J==="darwin")return"pbcopy";if(J==="linux"){for(let Z of hg)if(z(Z.binary))return Z.command;return null}return null}function sU(J){let z=[["set-option","-g","set-clipboard","on"]];if(J)for(let Z of vg)for(let Y of mg)z.push(["bind-key","-T",Z,Y,"send-keys","-X","copy-pipe-and-cancel",J]);return z}var hg,oU=(J)=>{try{let z=process.platform==="win32"?"where":"which";return Pg(z,[J],{encoding:"utf8"}).status===0}catch{return!1}},vg,mg;var tU=C(()=>{hg=[{binary:"wl-copy",command:"wl-copy"},{binary:"xclip",command:"xclip -selection clipboard -in"},{binary:"xsel",command:"xsel --clipboard --input"}];vg=["copy-mode","copy-mode-vi"],mg=["MouseDragEnd1Pane","y","Enter"]});import{existsSync as eU,readFileSync as cg}from"fs";function JK(){AY=null}function dg(){let J=LV();if(eU(J))return{canonical:J,found:J};let z=J.replace(/\.yaml$/,".yml");if(eU(z))return{canonical:J,found:z};return{canonical:J,found:null}}function pq(){if(AY)return AY;let{canonical:J,found:z}=dg();if(!z)return AY={path:J,exists:!1,doc:null,warnings:[]},AY;let Z=[],Y=null;try{let X=cg(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 AY={path:J,exists:!0,doc:Y,warnings:Z},AY}var AY=null;var bB=C(()=>{t1()});function WX(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 pg(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=lg[j];if(!B)return{error:`"${J}": unknown modifier "${j}" (use ctrl / cmd / alt / shift)`};G.add(B)}if(X=$g[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=_g.filter((j)=>G.has(j)).join("+"),H=q?`${q}+${X}`:X;if(X.length>1&&!ag.has(X))return{chord:H,warning:`"${J}": unrecognized key name "${X}" \u2014 the chord may never fire`};return{chord:H}}function rq(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}function rg(J){if(J==="darwin")return["darwin","macos","mac"];if(J==="win32")return["win32","windows"];return[J]}function og(J){if(!rq(J))return null;let z=J.bindings;if(rq(z))return z;return J}function oq(J,z,Z){let Y=[];if(J===null||J===void 0)return{entries:[],warnings:Y};if(!rq(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(rq(J.bindings))G.push(J.bindings);else Y.push("`bindings:` must be a mapping of id \u2192 chord(s)");for(let q of rg(z)){let H=J[q];if(H===void 0)continue;let j=og(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=pg(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 sg(J,z){return J===z||J==="global"||z==="global"}function zK(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=kB[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=ng[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&&ig.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(!sg(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 kB,ng,ig,lg,$g,ag,_g;var sq=C(()=>{kB={"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)"};ng={"sidebar.nav":WX("down","up"),"files.nav":WX("down","up"),"sidebar.search.nav":WX("down","up"),"files.hierarchy":WX("collapse","expand"),"sidebar.view":WX("previous view","next view"),"files.tab":WX("previous tab","next tab")},ig=new Set(["global","workspace","terminal"]),lg={ctrl:"ctrl",control:"ctrl",ctl:"ctrl",cmd:"cmd",command:"cmd",meta:"cmd",super:"cmd",win:"cmd",alt:"alt",option:"alt",opt:"alt",shift:"shift"},$g={esc:"escape",spacebar:"space",pgup:"pageup",pgdn:"pagedown",pgdown:"pagedown"},ag=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}`)]),_g=["ctrl","cmd","alt","shift"]});function VX(J){return J in ZK}function NY(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=eg[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 XK(){let J={};for(let[Z,Y]of Object.entries(gY)){let X=NY(Y,{allowBare:VX(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=vZ.map((Z)=>{let Y=NY(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 IB(J){let z=XK(),Z=new Set;for(let Y of J){if(!Y.id.startsWith("tmux."))continue;if(Y.id===cz){if(Y.keys.length===0){z.focus=[null,null,null,null],Z.add(cz);continue}if(Y.keys.length!==vZ.length){z.warnings.push(`${cz}: 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=NY(B);if("error"in V){z.warnings.push(`${cz}: ${V.error} \u2014 keeping the default`),j=!1;break}H.push({chord:B,key:V.key})}if(!j)continue;z.focus=H,Z.add(cz);continue}if(!(Y.id in gY)){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=NY(G,{allowBare:VX(X)});if("error"in q){z.warnings.push(`${X}: ${q.error} \u2014 keeping the default`);continue}if(G!==gY[X])Z.add(X);z.binds[X]={chord:G,key:q.key}}return z.overridden=Z,z}function SB(J){return J.startsWith("tmux.")?{allowShiftCharacter:!0}:{}}function GK(){RY=null}function tq(){if(RY)return RY;let J=pq();if(!J.exists||J.doc===null)return RY=XK(),RY;let z=oq(J.doc,process.platform,{chordOptsFor:SB}),Z=z.warnings.filter((X)=>X.startsWith("tmux.")),Y=IB(z.entries);Y.warnings=[...Z,...Y.warnings];for(let X of Y.warnings)console.warn(`[kobe/keybindings] ${X}`);return RY=Y,RY}var tg,ZK,YK,gY,cz="tmux.focus",vZ,eg,RY=null;var eq=C(()=>{bB();sq();tg={"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"},ZK={"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"},YK=["F6","F7","F8","F9","F10","F11"],gY={...tg,...ZK};vZ=["ctrl+h","ctrl+j","ctrl+k","ctrl+l"],eg={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 wG(J,z){let Z=null;for(let X=0;X<24;X++){let G=await UX(J);if(G){if(!z)return{pane:G,ready:!0};let q=(await KX(G)).trim();if(q.length>0&&q===Z)return{pane:G,ready:!0};Z=q}await QK(250)}return{pane:await UX(J)||await yB(J),ready:!1}}async function PG(J,z){let Z=`kobe-api-${J.replace(/[^A-Za-z0-9]/g,"")}`;await i0(["set-buffer","-b",Z,"--",z]),await i0(["paste-buffer","-p","-d","-b",Z,"-t",J]),await QK(JN),await hG(J,"Enter")}async function qK(J,z){let{pane:Z}=await wG(J,!0);if(!Z)return;await PG(Z,z.text)}var QK=(J)=>new Promise((z)=>setTimeout(z,J)),JN=150;var JH=C(()=>{P1()});function HK(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 DX;var zH=C(()=>{DX={$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 LX;var ZH=C(()=>{LX={$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 FX;var YH=C(()=>{FX={$schema:"https://opencode.ai/theme.json",defs:{background:"#282a36",currentLine:"#44475a",selection:"#44475a",foreground:"#f8f8f2",comment:"#6272a4",cyan:"#8be9fd",green:"#50fa7b",orange:"#ffb86c",pink:"#ff79c6",purple:"#bd93f9",red:"#ff5555",yellow:"#f1fa8c"},theme:{primary:{dark:"purple",light:"purple"},secondary:{dark:"pink",light:"pink"},accent:{dark:"cyan",light:"cyan"},error:{dark:"red",light:"red"},warning:{dark:"yellow",light:"yellow"},success:{dark:"green",light:"green"},info:{dark:"orange",light:"orange"},text:{dark:"foreground",light:"#282a36"},textMuted:{dark:"comment",light:"#6272a4"},background:{dark:"#282a36",light:"#f8f8f2"},backgroundPanel:{dark:"#21222c",light:"#e8e8e2"},backgroundElement:{dark:"currentLine",light:"#d8d8d2"},border:{dark:"currentLine",light:"#c8c8c2"},borderActive:{dark:"purple",light:"purple"},borderSubtle:{dark:"#191a21",light:"#e0e0e0"},diffAdded:{dark:"green",light:"green"},diffRemoved:{dark:"red",light:"red"},diffContext:{dark:"comment",light:"#6272a4"},diffHunkHeader:{dark:"comment",light:"#6272a4"},diffHighlightAdded:{dark:"green",light:"green"},diffHighlightRemoved:{dark:"red",light:"red"},diffAddedBg:{dark:"#1a3a1a",light:"#e0ffe0"},diffRemovedBg:{dark:"#3a1a1a",light:"#ffe0e0"},diffContextBg:{dark:"#21222c",light:"#e8e8e2"},diffLineNumber:{dark:"#989aa4",light:"#686865"},diffAddedLineNumberBg:{dark:"#1a3a1a",light:"#e0ffe0"},diffRemovedLineNumberBg:{dark:"#3a1a1a",light:"#ffe0e0"},markdownText:{dark:"foreground",light:"#282a36"},markdownHeading:{dark:"purple",light:"purple"},markdownLink:{dark:"cyan",light:"cyan"},markdownLinkText:{dark:"pink",light:"pink"},markdownCode:{dark:"green",light:"green"},markdownBlockQuote:{dark:"comment",light:"#6272a4"},markdownEmph:{dark:"yellow",light:"yellow"},markdownStrong:{dark:"orange",light:"orange"},markdownHorizontalRule:{dark:"comment",light:"#6272a4"},markdownListItem:{dark:"purple",light:"purple"},markdownListEnumeration:{dark:"cyan",light:"cyan"},markdownImage:{dark:"cyan",light:"cyan"},markdownImageText:{dark:"pink",light:"pink"},markdownCodeBlock:{dark:"foreground",light:"#282a36"},syntaxComment:{dark:"comment",light:"#6272a4"},syntaxKeyword:{dark:"pink",light:"pink"},syntaxFunction:{dark:"green",light:"green"},syntaxVariable:{dark:"foreground",light:"#282a36"},syntaxString:{dark:"yellow",light:"yellow"},syntaxNumber:{dark:"purple",light:"purple"},syntaxType:{dark:"cyan",light:"cyan"},syntaxOperator:{dark:"pink",light:"pink"},syntaxPunctuation:{dark:"foreground",light:"#282a36"}}}});var MX;var XH=C(()=>{MX={$schema:"https://opencode.ai/theme.json",defs:{nord0:"#2E3440",nord1:"#3B4252",nord2:"#434C5E",nord3:"#4C566A",nord4:"#D8DEE9",nord5:"#E5E9F0",nord6:"#ECEFF4",nord7:"#8FBCBB",nord8:"#88C0D0",nord9:"#81A1C1",nord10:"#5E81AC",nord11:"#BF616A",nord12:"#D08770",nord13:"#EBCB8B",nord14:"#A3BE8C",nord15:"#B48EAD"},theme:{primary:{dark:"nord8",light:"nord10"},secondary:{dark:"nord9",light:"nord9"},accent:{dark:"nord7",light:"nord7"},error:{dark:"nord11",light:"nord11"},warning:{dark:"nord12",light:"nord12"},success:{dark:"nord14",light:"nord14"},info:{dark:"nord8",light:"nord10"},text:{dark:"nord6",light:"nord0"},textMuted:{dark:"#8B95A7",light:"nord1"},background:{dark:"nord0",light:"nord6"},backgroundPanel:{dark:"nord1",light:"nord5"},backgroundElement:{dark:"nord2",light:"nord4"},border:{dark:"nord2",light:"nord3"},borderActive:{dark:"nord3",light:"nord2"},borderSubtle:{dark:"nord2",light:"nord3"},diffAdded:{dark:"nord14",light:"nord14"},diffRemoved:{dark:"nord11",light:"nord11"},diffContext:{dark:"#8B95A7",light:"nord3"},diffHunkHeader:{dark:"#8B95A7",light:"nord3"},diffHighlightAdded:{dark:"nord14",light:"nord14"},diffHighlightRemoved:{dark:"nord11",light:"nord11"},diffAddedBg:{dark:"#3B4252",light:"#E5E9F0"},diffRemovedBg:{dark:"#3B4252",light:"#E5E9F0"},diffContextBg:{dark:"nord1",light:"nord5"},diffLineNumber:{dark:"#a9aeb6",light:"textMuted"},diffAddedLineNumberBg:{dark:"#3B4252",light:"#E5E9F0"},diffRemovedLineNumberBg:{dark:"#3B4252",light:"#E5E9F0"},markdownText:{dark:"nord4",light:"nord0"},markdownHeading:{dark:"nord8",light:"nord10"},markdownLink:{dark:"nord9",light:"nord9"},markdownLinkText:{dark:"nord7",light:"nord7"},markdownCode:{dark:"nord14",light:"nord14"},markdownBlockQuote:{dark:"#8B95A7",light:"nord3"},markdownEmph:{dark:"nord12",light:"nord12"},markdownStrong:{dark:"nord13",light:"nord13"},markdownHorizontalRule:{dark:"#8B95A7",light:"nord3"},markdownListItem:{dark:"nord8",light:"nord10"},markdownListEnumeration:{dark:"nord7",light:"nord7"},markdownImage:{dark:"nord9",light:"nord9"},markdownImageText:{dark:"nord7",light:"nord7"},markdownCodeBlock:{dark:"nord4",light:"nord0"},syntaxComment:{dark:"#8B95A7",light:"nord3"},syntaxKeyword:{dark:"nord9",light:"nord9"},syntaxFunction:{dark:"nord8",light:"nord8"},syntaxVariable:{dark:"nord7",light:"nord7"},syntaxString:{dark:"nord14",light:"nord14"},syntaxNumber:{dark:"nord15",light:"nord15"},syntaxType:{dark:"nord7",light:"nord7"},syntaxOperator:{dark:"nord9",light:"nord9"},syntaxPunctuation:{dark:"nord4",light:"nord0"}}}});var OX;var GH=C(()=>{OX={$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 AX;var QH=C(()=>{AX={$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 RX;var qH=C(()=>{RX={$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 jK;var BK=C(()=>{zH();ZH();YH();XH();GH();QH();qH();jK={claude:DX,conductor:LX,nord:MX,opencode:OX,dracula:FX,tokyonight:RX,"osaka-jade":AX}});function HN(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 fK(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 HN(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 HH(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}function jH(J){if(!HH(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(!HH(Z))return{ok:!1,reason:"`theme` must be an object map"};if("defs"in z&&z.defs!==void 0){if(!HH(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(!HH(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 TB=()=>{};import{readFileSync as jN,readdirSync as BN}from"fs";import{join as WK}from"path";function gX(){return WK(KJ(),"themes")}function vG(){let J=gX(),z;try{z=BN(J)}catch{return[]}let Z=[];for(let Y of z){if(!Y.endsWith(".json"))continue;let X=WK(J,Y),G;try{let j=jN(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=jH(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 BH=C(()=>{t1();TB()});import{readFileSync as fN}from"fs";function VN(){try{let J=JSON.parse(fN(tJ(),"utf8")),z=typeof J.activeTheme==="string"&&J.activeTheme?J.activeTheme:"claude",Z=typeof J.focusAccent==="string"&&WN.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 UN(J){return vG().find((Z)=>Z.name===J)?.theme??jK[J]??null}function Nz(J,...z){for(let Z of z){let Y=fK(J,Z);if(Y)return Y}return null}function VK(J,z){let Z=Nz(J,"text"),Y=Nz(J,"background"),X=Nz(J,"textMuted","text"),G=Nz(J,"backgroundPanel","background"),q=Nz(J,"backgroundElement","backgroundPanel","background"),H=Nz(J,"backgroundMenu","backgroundElement","backgroundPanel","background"),j=Nz(J,"selectedListItemText","background"),B=Nz(J,z,"primary","borderActive","border","text");return{border:Nz(J,"border","text"),activeBorder:B,statusBg:G,statusFg:X,statusMutedFg:X,windowFg:X,currentWindowBg:q,currentWindowFg:B,activityFg:Nz(J,"info","primary","text"),bellFg:Nz(J,"warning","error","primary","text"),messageBg:H,messageFg:Z,messageCommandFg:B,modeBg:B,modeFg:j??Y}}function Gz(J){let z=[];if(J.bg)z.push(`bg=${J.bg}`);if(J.fg)z.push(`fg=${J.fg}`);if(z.length===0)return null;if(J.attrs)z.push(...J.attrs);return z.join(",")}function KK(J){let z=Gz({bg:J.statusBg,fg:J.statusFg}),Z=Gz({bg:J.statusBg,fg:J.statusMutedFg}),Y=Gz({bg:J.statusBg,fg:J.windowFg});return[{key:"border",option:"pane-border-style",showFlag:"-gwqv",setFlag:"-gw",unsetFlag:"-gwu",value:Gz({fg:J.border})},{key:"active",option:"pane-active-border-style",showFlag:"-gwqv",setFlag:"-gw",unsetFlag:"-gwu",value:Gz({fg:J.activeBorder})},{key:"status",option:"status-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:z},{key:"status-left",option:"status-left-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Z},{key:"status-right",option:"status-right-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Z},{key:"window",option:"window-status-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Y},{key:"current-window",option:"window-status-current-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Gz({bg:J.currentWindowBg,fg:J.currentWindowFg,attrs:["bold"]})},{key:"activity-window",option:"window-status-activity-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Gz({bg:J.statusBg,fg:J.activityFg})},{key:"bell-window",option:"window-status-bell-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Gz({bg:J.statusBg,fg:J.bellFg,attrs:["bold"]})},{key:"last-window",option:"window-status-last-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Gz({bg:J.statusBg,fg:J.statusFg})},{key:"message",option:"message-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Gz({bg:J.messageBg,fg:J.messageFg})},{key:"message-command",option:"message-command-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Gz({bg:J.messageBg,fg:J.messageCommandFg,attrs:["bold"]})},{key:"mode",option:"mode-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Gz({bg:J.modeBg,fg:J.modeFg})},{key:"display-panes",option:"display-panes-colour",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:J.border},{key:"display-panes-active",option:"display-panes-active-colour",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:J.activeBorder}]}function KN(J){let z=new Set(J.marker.split(",").map((G)=>G.trim()).filter(Boolean)),Z=[],Y=[];for(let G of KK(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",xB,X]:["set-option","-gu",xB]);return Z}async function UK(J){let{code:z,stdout:Z}=await c0(J);return z===0?Z.trim():""}async function CY(){try{let J=VN(),z=J.enabled?UN(J.themeName):null,Z=z?VK(z,J.focusAccentSlot):VK({theme:{}},J.focusAccentSlot),Y=KK(Z),[X,...G]=await Promise.all([UK(["show-options","-gqv",xB]),...Y.map((j)=>UK(["show-options",j.showFlag,j.option]))]),q=Object.fromEntries(Y.map((j,B)=>[j.key,G[B]??""])),H=KN({marker:X,current:q,hexes:Z});if(H.length>0)await r1(H)}catch{}}var xB="@kobe_border_theme",WN;var fH=C(()=>{t1();P1();BK();BH();WN=["primary","success","info"]});function DK(){return dJ(WH,!0)}function VH(){return dJ(LK,!1)}function FK(J){oQ(LK,J)}var WH="zen.keepTasks",LK="zen.active";var uB=C(()=>{wz()});var UH={};H1(UH,{recordGen:()=>mZ,isLatestGen:()=>gK,genAgeMs:()=>RN,coalesceLayoutWork:()=>gN,RESIZE_GUARD_MS:()=>AN,LAYOUT_COALESCE_MS:()=>AK});import{createHash as DN,randomUUID as LN}from"crypto";import{mkdirSync as FN,readFileSync as MK,renameSync as MN,writeFileSync as ON}from"fs";import{join as OK}from"path";function RK(){return OK(KJ(),"layout-coord")}function EB(J,z){let Z=DN("sha1").update(J).digest("hex").slice(0,16);return OK(RK(),`${Z}.${z}`)}function mZ(J,z){let Z=LN();try{FN(RK(),{recursive:!0});let Y=EB(J,z),X=`${Y}.${Z}.tmp`;ON(X,`${Date.now()}
|
|
41
|
-
${Z}`),
|
|
42
|
-
`)[1]?.trim()===Z}catch{return!0}}function
|
|
43
|
-
`)[0]??"",10);return Number.isFinite(Y)?Z-Y:Number.POSITIVE_INFINITY}catch{return Number.POSITIVE_INFINITY}}async function
|
|
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
|
|
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",
|
|
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
|
|
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
|
|
48
|
-
`)){let[X,G]=Y.split("\t");if(X?.trim()==="1"&&G?.trim())return G.trim()}return""}async function fZ(J,z){let{code:Z,stdout:Y}=await c0(["show-options","-wqv","-t",J,z]);return Z===0?Y.trim():""}async function
|
|
49
|
-
`).map((Y)=>Number.parseInt(Y.trim(),10)).filter((Y)=>Number.isFinite(Y)))}async function
|
|
50
|
-
`).some((G)=>{let q=G.trim();return q===Dz||q===zz}))await i0(["kill-session","-t",`=${z}`])}async function
|
|
51
|
-
`).map((Y)=>Y.trim()).filter((Y)=>Y.length>0)}async function
|
|
52
|
-
`).filter((Y)=>Y.trim().length>0).length}async function
|
|
53
|
-
`).map((H)=>H.trim()).filter(Boolean).map((H)=>H.split("=",2)));if(await r1([...q.tasks?[["set-option","-p","-t",q.tasks,"@kobe_role",zz]]:[],...q.tasks?[["set-option","-p","-t",q.tasks,Cz,
|
|
54
|
-
`)){let[Y,X,G,q,H]=Z.split("\t"),j=iZ(G?.trim()),B=iZ(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
|
|
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
|
|
56
|
-
`)){let[H,j]=q.split("\t");if(H?.trim()&&j?.trim()===z)return H.trim()}return""}async function
|
|
57
|
-
`).filter((Y)=>Y.trim().length>0).length}async function WZ(J,z,Z){await i0(["set-option","-t",J,z,Z])}async function IY(J,z){let{code:Z,stdout:Y}=await c0(["show-options","-qv","-t",J,z]);return Z===0?Y.trim():""}async function wJ(J,z){let Z=Object.fromEntries(z.map((G)=>[G,void 0])),{code:Y,stdout:X}=await
|
|
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
|
|
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
|
|
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
|
|
61
|
-
`)){let X=Number.parseInt(Y.trim(),10);if(!Number.isFinite(X)||X<=1)continue;try{process.kill(-X,"SIGTERM")}catch{}}}async function
|
|
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
|
|
63
|
-
`}function
|
|
64
|
-
`}function
|
|
65
|
-
`}function $z(J,z){process.stderr.write(KC(J,z))}function F5(J=(z)=>process.stderr.write(z)){if(qf||Hf)return;qf=(z)=>J(D5("unhandledRejection",z)),Hf=(z)=>J(D5("uncaughtException",z)),process.on("unhandledRejection",qf),process.on("uncaughtException",Hf)}var qf,Hf;async function DC(J,z=ZX){let Z=[];for(let Y of J.listTasks()){if(Y.archived||Y.title!==mz||!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!==mz)continue;await J.setTitle(Y.id,X),Z.push({id:Y.id,title:X})}catch(X){w1("auto-title-poller",X)}}return Z}function M5(J,z=jf,Z){if(z<=0)return()=>{};let Y=!1,G=setInterval(()=>{if(Z&&!Z())return;if(Y)return;Y=!0,DC(J).then(()=>U5(J)).catch((q)=>w1("auto-title-poller",q)).finally(()=>{Y=!1})},z);return G.unref?.(),()=>clearInterval(G)}var jf=4000;var O5=C(()=>{Iq();yG();K5();Yz()});class Bf{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 ff{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 A5(J,z,Z=iq){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 R5=C(()=>{xG()});import{createHash as LC}from"crypto";import{homedir as FC}from"os";import lZ from"path";function gC(){return lZ.join(process.env.KOBE_HOME_DIR??FC(),".kobe")}function NC(J){let Z=(lZ.basename(J)||"repo").replace(/[^a-zA-Z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"repo",Y=LC("sha1").update(lZ.resolve(J)).digest("hex").slice(0,12);return`${Z}-${Y}`}function CC(J){if(!lZ.isAbsolute(J))throw Error(`worktreeRootFor: repo must be an absolute path, got: ${J}`);return lZ.join(gC(),MC,NC(J))}function bC(J){if(!lZ.isAbsolute(J))throw Error(`managedWorktreeRootsFor: repo must be an absolute path, got: ${J}`);return[CC(J),...RC.map((z)=>lZ.join(J,z))]}function az(J){return J.length>1&&J.endsWith("/")?J.slice(0,-1):J}function g5(J,z){return z===J||z.startsWith(`${J}/`)}function N5(J,z){let Z=az(z),Y,X=-1;for(let G of J){if(!G.worktreePath)continue;let q=az(G.worktreePath);if(g5(q,Z)&&q.length>X)X=q.length,Y=G.id}return Y}function C5(J,z){let Z=az(z);for(let Y of J)if(Y.worktreePath&&az(Y.worktreePath)===Z)return Y.id;return}function Wf(J,z){let Z=az(z),Y,X=-1;for(let G of J){if(!G.repo)continue;let q=az(G.repo);if(g5(q,Z)&&q.length>X)X=q.length,Y=q}return Y}function b5(J,z){let Z=az(z),Y=new Set,X=new Set;for(let G of J){if(G.repo)Y.add(az(G.repo));if(G.worktreePath)X.add(az(G.worktreePath))}for(let G of Y)for(let q of bC(G).map(az)){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 MC="worktrees",OC=".kobe/worktrees",AC=".claude/worktrees",RC;var k5=C(()=>{RC=[OC,AC]});function Kf(J){return{message:J instanceof Error?J.message:String(J),name:J instanceof Error?J.name:void 0}}async function JQ(J,z,Z,Y){let X=J.get(z);if(!X)throw Error(`unknown daemon request: ${z}`);return X.handle(Df(Z),Y)}function zQ(){return new Map([{name:"hello",handle(z,Z){let Y=typeof z.protocolVersion==="number"?z.protocolVersion:eJ,X=typeof z.minProtocolVersion==="number"?z.minProtocolVersion:Y;if(!eQ({localVersion:eJ,localMin:IZ,remoteVersion:Y,remoteMin:X}))throw Error(`daemon is protocol v${eJ} (min v${IZ}); this client is v${Y} (min v${X}). Upgrade your kobe.`);return{protocolVersion:eJ,minProtocolVersion:IZ,kobeVersion:J1,capabilities:[...O9],daemonPid:Z.daemon.pid,clientId:Z.clientId,tasks:Z.orch.listTasks().map(Uz)}}},{name:"daemon.status",handle(z,Z){return{daemonPid:Z.daemon.pid,kobeVersion:J1,uptimeMs:Date.now()-Z.daemon.startedAt.getTime(),startedAt:Z.daemon.startedAt.toISOString(),attachedClients:Z.daemon.guiCount(),taskCount:Z.orch.listTasks().length,socketPath:Z.daemon.socketPath,webPort:Z.daemon.webPort??null}}},{name:"daemon.stop",async handle(z,Z){return await Z.daemon.stopSoon(),{}}},{name:"task.list",handle(z,Z){return{tasks:Z.orch.listTasks().map(Uz)}}},{name:"task.get",handle(z,Z){let Y=k1(z,"taskId"),X=Z.orch.getTask(Y);if(!X)throw Error(`task not found: ${Y}`);return{task:Uz(X)}}},{name:"task.create",async handle(z,Z){let Y=k1(z,"repo"),X=await Z.orch.createTask({repo:Y,title:Qz(z,"title"),branch:Qz(z,"branch"),baseRef:Qz(z,"baseRef"),vendor:Uf(z,"vendor"),modelEffort:Qz(z,"effort")});return{taskId:X.id,task:Uz(X)}}},{name:"task.archive",async handle(z,Z){let Y=k1(z,"taskId");return await Z.orch.setArchived(Y,Vf(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=Uf(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:Vf(z,"force")}),Z.activity.clearTask(Y),{}}},{name:"task.pin",async handle(z,Z){let Y=k1(z,"taskId");return await Z.orch.setPinned(Y,Vf(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(!JU(X))throw Error("status must be a TaskStatus");let G=X==="done"?Z.orch.getTask(Y):void 0,q=G?.status;if(await Z.orch.setStatus(Y,X),X==="done"&&q!=="done"&&G)try{let H=await Z.issues.mirrorTaskDone(G.repo,Y);if(H)Z.bus.publish("issue.snapshot",H)}catch(H){w1("issue-done-mirror",H)}return{}}},{name:"task.reorder",async handle(z,Z){let Y=z.moves;if(!Array.isArray(Y)||Y.length===0)throw Error("moves must be a non-empty array");if(Y.length>500)throw Error("too many moves in one task.reorder batch (max 500)");let X=Y.map((G)=>{if(typeof G!=="object"||G===null)throw Error("each move needs taskId and position");let q=G,H=k1(q,"taskId"),j=q.position;if(typeof j!=="number"||!Number.isFinite(j))throw Error("position must be a finite number");return{taskId:H,position:j}});return await Z.orch.reorderTasks(X),{}}},{name:"task.ensureMain",async handle(z,Z){let Y=k1(z,"repo"),X=await Z.orch.ensureMainTask(Y);return{task:Uz(X)}}},{name:"project.forget",async handle(z,Z){let Y=k1(z,"repo");return await Z.orch.forgetProject(Y),{}}},{name:"task.ensureWorktree",async handle(z,Z){let Y=k1(z,"taskId");Z.bus.publish("task.jobs",{taskId:Y,kind:"ensureWorktree",phase:"running"});try{let X=await Z.orch.ensureWorktree(Y);return Z.bus.publish("task.jobs",{taskId:Y,kind:"ensureWorktree",phase:"done"}),{worktreePath:X}}catch(X){throw Z.bus.publish("task.jobs",{taskId:Y,kind:"ensureWorktree",phase:"error",error:X instanceof Error?X.message:String(X)}),X}}},{name:"worktree.discoverAdoptable",async handle(z,Z){let Y=k1(z,"repo");return{worktrees:await Z.orch.discoverAdoptableWorktrees(Y)}}},{name:"worktree.adopt",async handle(z,Z){let Y=await Z.orch.adoptWorktree({repo:k1(z,"repo"),worktreePath:k1(z,"worktreePath"),branch:Qz(z,"branch"),vendor:Uf(z,"vendor"),title:Qz(z,"title"),ifExists:Qz(z,"ifExists")==="return"?"return":"error"});return{task:Uz(Y)}}},{name:"worktree.reconcile",async handle(z,Z){let Y=k1(z,"cwd"),X=k1(z,"worktreePath"),G=Wf(Z.orch.listTasks(),Y)??Wf(Z.orch.listTasks(),X);if(!G)return{adopted:!1};try{return{adopted:!0,taskId:(await Z.orch.adoptWorktree({repo:G,worktreePath:X,ifExists:"return"})).id}}catch(q){return w1("worktree-created",q),{adopted:!1}}}},{name:"worktree.archiveRemoved",async handle(z,Z){let Y=k1(z,"worktreePath"),X=C5(Z.orch.listTasks(),Y);if(!X)return{archived:!1};try{return await Z.orch.setArchived(X,!0),{archived:!0,taskId:X}}catch(G){return w1("worktree-removed",G),{archived:!1}}}},{name:"task.setActive",async handle(z,Z){let Y=Qz(z,"taskId")??null;return await Z.orch.setActiveTask(Y),Z.bus.publish("active-task",{taskId:Y}),{}}},{name:"issue.list",async handle(z,Z){return Z.issues.list(k1(z,"repoRoot"))}},{name:"issue.mutate",async handle(z,Z){let Y=await Z.issues.mutate(k1(z,"repoRoot"),z.op);return Z.bus.publish("issue.snapshot",Y),Y}},{name:"session.deliver",async handle(z,Z){let Y=k1(z,"taskId"),X=k1(z,"text"),G=Qz(z,"source");if(G!==void 0&&G!=="note"&&G!=="dispatcher")throw Error('source must be "note" or "dispatcher"');if(!Z.orch.getTask(Y))throw Error(`task not found: ${Y}`);return Z.bus.publish("session.deliver",{taskId:Y,text:X,at:Date.now(),source:G??"dispatcher"}),{ok:!0}}},{name:"note.file",async handle(z,Z){let Y=k1(z,"taskId"),X=k1(z,"text"),G=Z.orch.getTask(Y);if(!G)throw Error(`task not found: ${Y}`);let q=Z.orch.listTasks().find((j)=>(j.kind??"task")==="main"&&j.repo===G.repo&&!j.archived);if(!q||q.id===G.id)return{ok:!0,routed:!1};let H=G.title||G.branch||Y;return Z.bus.publish("session.deliver",{taskId:q.id,text:`[KOBE FIELD NOTE] from "${H}" (task ${Y}): ${X}`,at:Date.now(),source:"note"}),{ok:!0,routed:!0}}},{name:"engine.reportEvent",async handle(z,Z){let Y=k1(z,"kind");if(!Cq(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=b5(Z.orch.listTasks(),G);if(j)try{await Z.orch.adoptWorktree({repo:j.repo,worktreePath:j.worktreePath,ifExists:"return"})}catch(B){w1("worktree-autosync",B)}}let q=X??(G?N5(Z.orch.listTasks(),G):void 0);if(!q)return{};let H=kC(z);if(Z.activity.report(q,Y,H),Y==="turn-start")A5(Z.orch,q).then((j)=>{if(j==="moved")console.log(`[status-rules] task ${q} auto-moved backlog \u2192 in_progress`)}).catch((j)=>w1("status-rules",j));return{}}}].map((z)=>[z.name,z]))}function Df(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 Vf(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 Uf(J,z){let Z=Qz(J,z);return Z&&Z.trim().length>0?Z:void 0}function kC(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 kH=C(()=>{bq();R5();Yz();bJ();k5();XY()});import{execFile as IC}from"child_process";import{mkdir as SC,readFile as yC,realpath as I5,rename as TC,stat as xC,writeFile as uC}from"fs/promises";import{homedir as EC}from"os";import{dirname as wC,isAbsolute as PC,join as hC,resolve as S5}from"path";import{promisify as vC}from"util";function mC(J){return(J instanceof Error?J.message:String(J)).includes("not a git repository")}function SH(J=process.env.KOBE_HOME_DIR??EC()){return hC(J,".kobe","issues.json")}function T5(J){return typeof J==="string"&&y5.includes(J)}function cC(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:T5(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 dC(){return{version:1,repos:{}}}function nC(){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 iC(J){let{stdout:z}=await Rf("git",["-C",J,"rev-parse","--git-common-dir"]),Z=z.trim();return I5(PC(Z)?Z:S5(J,Z))}async function lC(J){let{stdout:z}=await Rf("git",["-C",J,"rev-parse","--show-toplevel"]);return z.trim()}async function $C(J){let{stdout:z}=await Rf("git",["-C",J,"worktree","list","--porcelain"]),Z=z.split(/\r?\n/).find((Y)=>Y.startsWith("worktree "))?.slice(9).trim();return Z?I5(Z):lC(J)}async function Lf(J){if(typeof J!=="string"||J.length===0)throw Error("repoRoot is required");let z=S5(J);if(!(await xC(z).catch(()=>null))?.isDirectory())throw Error("repoRoot does not exist");try{let[Y,X]=await Promise.all([$C(z),iC(z)]);return{repoRoot:Y,repoKey:X}}catch(Y){if(mC(Y))throw Error("repoRoot is not a git repository");throw Y}}async function Ff(J){try{let z=JSON.parse(await yC(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(cC).filter((q)=>q!==null):[]}}return{version:1,repos:Z}}catch(z){if(z.code==="ENOENT")return dC();throw z}}async function Mf(J,z){await SC(wC(J),{recursive:!0});let Z=`${J}.tmp`;await uC(Z,`${JSON.stringify(z,null,2)}
|
|
66
|
-
`,"utf8"),await TC(Z,J)}function Of(J,z){return{repoRoot:J,exists:z!==null,nextId:z?.nextId??1,issues:z?.issues??[]}}async function Af(J,z){let Y=(IH.get(J)??Promise.resolve()).then(z),X=Y.then(()=>{return},()=>{return});return IH.set(J,X),X.then(()=>{if(IH.get(J)===X)IH.delete(J)}),Y}class yH{path;constructor(J=SH()){this.path=J}async list(J){let{repoRoot:z,repoKey:Z}=await Lf(J);return Af(this.path,async()=>{let Y=await Ff(this.path),X=Y.repos[Z]??null;if(X&&X.repoRoot!==z)X.repoRoot=z,await Mf(this.path,Y);return Of(z,X)})}async mirrorTaskDone(J,z){let{repoRoot:Z,repoKey:Y}=await Lf(J);if(!z)return null;return Af(this.path,async()=>{let X=await Ff(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 Mf(this.path,X),Of(Z,G)})}async mutate(J,z){let{repoRoot:Z,repoKey:Y}=await Lf(J);if(!z||typeof z!=="object"||Array.isArray(z)||typeof z.type!=="string")throw Error("missing op");return Af(this.path,async()=>{let X=await Ff(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:nC(),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(!T5(q.status))throw Error(`invalid status: must be one of ${y5.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 Mf(this.path,X),Of(Z,G)})}}var Rf,y5,IH;var gf=C(()=>{Rf=vC(IC),y5=["open","doing","hold","done"];IH=new Map});import{lstat as x5,readdir as aC,realpath as _C,stat as pC}from"fs/promises";import{join as rC,relative as oC,resolve as u5,sep as sC}from"path";import{Readable as tC}from"stream";function v5(J,z={}){let Z=z.entryType||z.type;if(Z==="both")Z=aJ.FILE_DIR_TYPE;if(Z)z.type=Z;if(!J)throw Error("readdirp: root argument is required. Usage: readdirp(root, options)");else if(typeof J!=="string")throw TypeError("readdirp: root argument must be a string. Usage: readdirp(root, options)");else if(Z&&!E5.includes(Z))throw Error(`readdirp: Invalid type passed. Use one of ${E5.join(", ")}`);return z.root=J,new Cf(z)}var aJ,Nf,h5="READDIRP_RECURSIVE_ERROR",eC,E5,Jb,zb,Zb=(J)=>eC.has(J.code),Yb,w5=(J)=>!0,P5=(J)=>{if(J===void 0)return w5;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 w5},Cf;var m5=C(()=>{aJ={FILE_TYPE:"files",DIR_TYPE:"directories",FILE_DIR_TYPE:"files_directories",EVERYTHING_TYPE:"all"},Nf={root:".",fileFilter:(J)=>!0,directoryFilter:(J)=>!0,type:aJ.FILE_TYPE,lstat:!1,depth:2147483648,alwaysStat:!1,highWaterMark:4096};Object.freeze(Nf);eC=new Set(["ENOENT","EPERM","EACCES","ELOOP",h5]),E5=[aJ.DIR_TYPE,aJ.EVERYTHING_TYPE,aJ.FILE_DIR_TYPE,aJ.FILE_TYPE],Jb=new Set([aJ.DIR_TYPE,aJ.EVERYTHING_TYPE,aJ.FILE_DIR_TYPE]),zb=new Set([aJ.EVERYTHING_TYPE,aJ.FILE_DIR_TYPE,aJ.FILE_TYPE]),Yb=process.platform==="win32";Cf=class Cf extends tC{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={...Nf,...J},{root:Z,type:Y}=z;this._fileFilter=P5(z.fileFilter),this._directoryFilter=P5(z.directoryFilter);let X=z.lstat?x5:pC;if(Yb)this._stat=(G)=>X(G,{bigint:!0});else this._stat=X;this._maxDepth=z.depth!=null&&Number.isSafeInteger(z.depth)?z.depth:Nf.depth,this._wantsDir=Y?Jb.has(Y):!1,this._wantsFile=Y?zb.has(Y):!1,this._wantsEverything=Y===aJ.EVERYTHING_TYPE,this._root=u5(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 aC(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=u5(rC(z,Y));Z={path:oC(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(Zb(J)&&!this.destroyed)this.emit("warn",J);else this.destroy(J)}async _getEntryType(J){if(!J&&this._statsProp in J)return"";let z=J[this._statsProp];if(z.isFile())return"file";if(z.isDirectory())return"directory";if(z&&z.isSymbolicLink()){let Z=J.fullPath;try{let Y=await _C(Z),X=await x5(Y);if(X.isFile())return"file";if(X.isDirectory()){let G=Y.length;if(Z.startsWith(Y)&&Z.substr(G,1)===sC){let q=Error(`Circular symlink detected: "${Z}" points to "${Y}"`);return q.code=h5,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 Xb,unwatchFile as c5,watchFile as Gb}from"fs";import{realpath as bf,lstat as Qb,open as qb,stat as n5}from"fs/promises";import{type as Hb}from"os";import*as c1 from"path";function d5(J,z,Z,Y,X){let G=(q,H)=>{if(Z(J),X(q,H,{watchedPath:J}),H&&J!==H)uH(c1.resolve(J,H),yY,c1.join(J,H))};try{return Xb(J,{persistent:z.persistent},G)}catch(q){Y(q);return}}class Tf{fsw;_boundHandleError;constructor(J){this.fsw=J,this._boundHandleError=(z)=>J._handleError(z)}_watchWithNodeFs(J,z){let Z=this.fsw.options,Y=c1.dirname(J),X=c1.basename(J);this.fsw._getWatchedDir(Y).add(X);let q=c1.resolve(J),H={persistent:Z.persistent};if(!z)z=EH;let j;if(Z.usePolling){let B=Z.interval!==Z.binaryInterval;H.interval=B&&Lb(X)?Z.binaryInterval:Z.interval,j=Ob(J,q,H,{listener:z,rawEmitter:this.fsw._emitRaw})}else j=Mb(J,q,H,{listener:z,errHandler:this._boundHandleError,rawEmitter:this.fsw._emitRaw});return j}_handleFile(J,z,Z){if(this.fsw.closed)return;let Y=c1.dirname(J),X=c1.basename(J),G=this.fsw._getWatchedDir(Y),q=z;if(G.has(X))return;let H=async(B,V)=>{if(!this.fsw._throttle(Vb,J,5))return;if(!V||V.mtimeMs===0)try{let f=await n5(J);if(this.fsw.closed)return;let{atimeMs:U,mtimeMs:L}=f;if(!U||U<=L||L!==q.mtimeMs)this.fsw._emit(Iz.CHANGE,J,f);if((Bb||fb||Wb)&&q.ino!==f.ino){this.fsw._closeFile(B),q=f;let O=this._watchWithNodeFs(J,H);if(O)this.fsw._addPathCloser(B,O)}else q=f}catch(f){this.fsw._remove(Y,X)}else if(G.has(X)){let{atimeMs:f,mtimeMs:U}=V;if(!f||f<=U||U!==q.mtimeMs)this.fsw._emit(Iz.CHANGE,J,V);q=V}},j=this._watchWithNodeFs(J,H);if(!(Z&&this.fsw.options.ignoreInitial)&&this.fsw._isntIgnored(J)){if(!this.fsw._throttle(Iz.ADD,J,0))return;this.fsw._emit(Iz.ADD,J,z)}return j}async _handleSymlink(J,z,Z,Y){if(this.fsw.closed)return;let X=J.fullPath,G=this.fsw._getWatchedDir(z);if(!this.fsw.options.followSymlinks){this.fsw._incrReadyCount();let q;try{q=await bf(Z)}catch(H){return this.fsw._emitReady(),!0}if(this.fsw.closed)return;if(G.has(Y)){if(this.fsw._symlinkPaths.get(X)!==q)this.fsw._symlinkPaths.set(X,q),this.fsw._emit(Iz.CHANGE,Z,J.stats)}else G.add(Y),this.fsw._symlinkPaths.set(X,q),this.fsw._emit(Iz.ADD,Z,J.stats);return this.fsw._emitReady(),!0}if(this.fsw._symlinkPaths.has(X))return!0;this.fsw._symlinkPaths.set(X,!0)}_handleRead(J,z,Z,Y,X,G,q){J=c1.join(J,"");let H=Y?`${J}:${Y}`:J;if(q=this.fsw._throttle("readdir",H,1000),!q)return;let j=this.fsw._getWatchedDir(Z.path),B=new Set,V=this.fsw._readdirp(J,{fileFilter:(f)=>Z.filterPath(f),directoryFilter:(f)=>Z.filterDir(f)});if(!V)return;return V.on(jb,async(f)=>{if(this.fsw.closed){V=void 0;return}let U=f.path,L=c1.join(J,U);if(B.add(U),f.stats.isSymbolicLink()&&await this._handleSymlink(f,J,L,U))return;if(this.fsw.closed){V=void 0;return}if(U===Y||!Y&&!j.has(U))this.fsw._incrReadyCount(),L=c1.join(X,c1.relative(X,L)),this._addToNodeFs(L,z,Z,G+1)}).on(Iz.ERROR,this._boundHandleError),new Promise((f,U)=>{if(!V)return U();V.once(Sf,()=>{if(this.fsw.closed){V=void 0;return}let L=q?q.clear():!1;if(f(void 0),j.getChildren().filter((O)=>{return O!==J&&!B.has(O)}).forEach((O)=>{this.fsw._remove(J,O)}),V=void 0,L)this._handleRead(J,!1,Z,Y,X,G,q)})})}async _handleDir(J,z,Z,Y,X,G,q){let H=this.fsw._getWatchedDir(c1.dirname(J)),j=H.has(c1.basename(J));if(!(Z&&this.fsw.options.ignoreInitial)&&!X&&!j)this.fsw._emit(Iz.ADD_DIR,J,z);H.add(c1.basename(J)),this.fsw._getWatchedDir(J);let B,V,f=this.fsw.options.depth;if((f==null||Y<=f)&&!this.fsw._symlinkPaths.has(q)){if(!X){if(await this._handleRead(J,Z,G,X,J,Y,B),this.fsw.closed)return}V=this._watchWithNodeFs(J,(U,L)=>{if(L&&L.mtimeMs===0)return;this._handleRead(U,!1,G,X,J,Y,B)})}return V}async _addToNodeFs(J,z,Z,Y,X){let G=this.fsw._emitReady;if(this.fsw._isIgnored(J)||this.fsw.closed)return G(),!1;let q=this.fsw._getWatchHelpers(J);if(Z)q.filterPath=(H)=>Z.filterPath(H),q.filterDir=(H)=>Z.filterDir(H);try{let H=await Ub[q.statMethod](q.watchPath);if(this.fsw.closed)return;if(this.fsw._isIgnored(q.watchPath,H))return G(),!1;let j=this.fsw.options.followSymlinks,B;if(H.isDirectory()){let V=c1.resolve(J),f=j?await bf(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 bf(J):J;if(this.fsw.closed)return;let f=c1.dirname(q.watchPath);if(this.fsw._getWatchedDir(f).add(q.watchPath),this.fsw._emit(Iz.ADD,q.watchPath,H),B=await this._handleDir(f,H,z,Y,J,q,V),this.fsw.closed)return;if(V!==void 0)this.fsw._symlinkPaths.set(c1.resolve(J),V)}else B=this._handleFile(q.watchPath,H,z);if(G(),B)this.fsw._addPathCloser(J,B);return!1}catch(H){if(this.fsw._handleError(H))return G(),J}}}var jb="data",Sf="end",i5="close",EH=()=>{},wH,yf,Bb,fb,Wb,l5,v1,Iz,Vb="watch",Ub,yY="listeners",TH="errHandlers",yX="rawEmitters",Kb,Db,Lb=(J)=>Db.has(c1.extname(J).slice(1).toLowerCase()),If=(J,z)=>{if(J instanceof Set)J.forEach(z);else z(J)},ZQ=(J,z,Z)=>{let Y=J[z];if(!(Y instanceof Set))J[z]=Y=new Set([Y]);Y.add(Z)},Fb=(J)=>(z)=>{let Z=J[z];if(Z instanceof Set)Z.clear();else delete J[z]},YQ=(J,z,Z)=>{let Y=J[z];if(Y instanceof Set)Y.delete(Z);else if(Y===Z)delete J[z]},$5=(J)=>J instanceof Set?J.size===0:!J,xH,uH=(J,z,Z,Y,X)=>{let G=xH.get(J);if(!G)return;If(G[z],(q)=>{q(Z,Y,X)})},Mb=(J,z,Z,Y)=>{let{listener:X,errHandler:G,rawEmitter:q}=Y,H=xH.get(z),j;if(!Z.persistent){if(j=d5(J,Z,X,G,q),!j)return;return j.close.bind(j)}if(H)ZQ(H,yY,X),ZQ(H,TH,G),ZQ(H,yX,q);else{if(j=d5(J,Z,uH.bind(null,z,yY),G,uH.bind(null,z,yX)),!j)return;j.on(Iz.ERROR,async(B)=>{let V=uH.bind(null,z,TH);if(H)H.watcherUnusable=!0;if(yf&&B.code==="EPERM")try{await(await qb(J,"r")).close(),V(B)}catch(f){}else V(B)}),H={listeners:X,errHandlers:G,rawEmitters:q,watcher:j},xH.set(z,H)}return()=>{if(YQ(H,yY,X),YQ(H,TH,G),YQ(H,yX,q),$5(H.listeners))H.watcher.close(),xH.delete(z),Kb.forEach(Fb(H)),H.watcher=void 0,Object.freeze(H)}},kf,Ob=(J,z,Z,Y)=>{let{listener:X,rawEmitter:G}=Y,q=kf.get(z),H=q&&q.options;if(H&&(H.persistent<Z.persistent||H.interval>Z.interval))c5(z),q=void 0;if(q)ZQ(q,yY,X),ZQ(q,yX,G);else q={listeners:X,rawEmitters:G,options:Z,watcher:Gb(z,Z,(j,B)=>{If(q.rawEmitters,(f)=>{f(Iz.CHANGE,z,{curr:j,prev:B})});let V=j.mtimeMs;if(j.size!==B.size||V>B.mtimeMs||V===0)If(q.listeners,(f)=>f(J,j))})},kf.set(z,q);return()=>{if(YQ(q,yY,X),YQ(q,yX,G),$5(q.listeners))kf.delete(z),c5(z),q.options=q.watcher=void 0,Object.freeze(q)}};var a5=C(()=>{wH=process.platform,yf=wH==="win32",Bb=wH==="darwin",fb=wH==="linux",Wb=wH==="freebsd",l5=Hb()==="OS400",v1={ALL:"all",READY:"ready",ADD:"add",CHANGE:"change",ADD_DIR:"addDir",UNLINK:"unlink",UNLINK_DIR:"unlinkDir",RAW:"raw",ERROR:"error"},Iz=v1,Ub={lstat:Qb,stat:n5},Kb=[yY,TH,yX],Db=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"]),xH=new Map;kf=new Map});import{EventEmitter as Ab}from"events";import{stat as Rb,Stats as Tn}from"fs";import{readdir as gb,stat as Nb}from"fs/promises";import*as f1 from"path";function PH(J){return Array.isArray(J)?J:[J]}function Tb(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 xb(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(t5,"/"),z)J="/"+J;return J}function _5(J,z,Z){let Y=xb(z);for(let X=0;X<J.length;X++){let G=J[X];if(G(Y,Z))return!0}return!1}function ub(J,z){if(J==null)throw TypeError("anymatch: specify first argument");let Y=PH(J).map((X)=>Tb(X));if(z==null)return(X,G)=>{return _5(Y,X,G)};return _5(Y,z)}class J6{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!==s5&&J!==bb)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 gb(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=EH,this.items=wb,Object.freeze(this)}}class z6{fsw;path;watchPath;fullWatchPath;dirParts;followSymlinks;statMethod;constructor(J,z,Z){this.fsw=Z;let Y=J;this.path=J=J.replace(yb,""),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?Pb:hb}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 Y6(J,z={}){let Z=new Z6(z);return Z.add(J),Z}var xf="/",Cb="//",s5=".",bb="..",kb="string",Ib,t5,Sb,yb,uf=(J)=>typeof J==="object"&&J!==null&&!(J instanceof RegExp),p5=(J)=>{let z=PH(J).flat();if(!z.every((Z)=>typeof Z===kb))throw TypeError(`Non-string provided as watch path: ${z}`);return z.map(e5)},r5=(J)=>{let z=J.replace(Ib,xf),Z=!1;if(z.startsWith(Cb))Z=!0;if(z=z.replace(t5,xf),Z)z=xf+z;return z},e5=(J)=>r5(f1.normalize(r5(J))),o5=(J="")=>(z)=>{if(typeof z==="string")return e5(f1.isAbsolute(z)?z:f1.join(J,z));else return z},Eb=(J,z)=>{if(f1.isAbsolute(J))return J;return f1.join(z,J)},wb,Pb="stat",hb="lstat",Z6;var X6=C(()=>{m5();a5();/*! chokidar - MIT License (c) 2012 Paul Miller (paulmillr.com) */Ib=/\\/g,t5=/\/\//g,Sb=/\..*\.(sw[px])$|~$|\.subl.*\.tmp/,yb=/^\.[/\\]/;wb=Object.freeze(new Set);Z6=class Z6 extends Ab{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?PH(J.ignored):PH([]),awaitWriteFinish:z===!0?Z:typeof z==="object"?{...Z,...z}:!1};if(l5)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=EH,this._readyEmitted=!0,process.nextTick(()=>this.emit(v1.READY))},this._emitRaw=(...H)=>this.emit(v1.RAW,...H),this._boundRemove=this._remove.bind(this),this.options=Y,this._nodeFsHandler=new Tf(this),Object.freeze(Y)}_addIgnoredPath(J){if(uf(J)){for(let z of this._ignoredPaths)if(uf(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(uf(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=p5(J);if(Y)X=X.map((G)=>{return Eb(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=p5(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)||s5;J[X]=z.getChildren().sort()}),J}emitWithAll(J,z){if(this.emit(J,...z),J!==v1.ERROR)this.emit(v1.ALL,J,...z)}async _emit(J,z,Z){if(this.closed)return;let Y=this.options;if(yf)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===v1.UNLINK)return this._pendingUnlinks.set(z,[J,...X]),setTimeout(()=>{this._pendingUnlinks.forEach((H,j)=>{this.emit(...H),this.emit(v1.ALL,...H),this._pendingUnlinks.delete(j)})},typeof Y.atomic==="number"?Y.atomic:100),this;if(J===v1.ADD&&this._pendingUnlinks.has(z))J=v1.CHANGE,this._pendingUnlinks.delete(z)}if(G&&(J===v1.ADD||J===v1.CHANGE)&&this._readyEmitted){let H=(j,B)=>{if(j)J=v1.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===v1.CHANGE){if(!this._throttle(v1.CHANGE,z,50))return this}if(Y.alwaysStat&&Z===void 0&&(J===v1.ADD||J===v1.ADD_DIR||J===v1.CHANGE)){let H=Y.cwd?f1.join(Y.cwd,z):z,j;try{j=await Nb(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(v1.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){Rb(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&&Sb.test(J))return!0;if(!this._userIgnored){let{cwd:Z}=this.options,X=(this.options.ignored||[]).map(o5(Z)),q=[...[...this._ignoredPaths].map(o5(Z)),...X];this._userIgnored=ub(q,void 0)}return this._userIgnored(J,z)}_isntIgnored(J,z){return!this._isIgnored(J,z)}_getWatchHelpers(J){return new z6(J,this.options.followSymlinks,this)}_getWatchedDir(J){let z=f1.resolve(J);if(!this._watched.has(z))this._watched.set(z,new J6(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()===v1.ADD)return}this._watched.delete(Y),this._watched.delete(X);let V=Z?v1.UNLINK_DIR:v1.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:v1.ALL,alwaysStat:!0,lstat:!0,...z,depth:0},Y=v5(J,Z);return this._streams.add(Y),Y.once(i5,()=>{Y=void 0}),Y.once(Sf,()=>{if(Y)this._streams.delete(Y),Y=void 0}),Y}}});import{mkdirSync as vb,statSync as mb}from"fs";import{basename as G6,dirname as cb,join as db}from"path";function hH(J){if(J.debounceMs<=0)return()=>{};let z=cb(J.filePath),Z=new Set([G6(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(G6(V)))return;H()},B=(V)=>{try{let f=mb(db(z,V));return`${f.mtimeMs}:${f.size}`}catch{return null}};try{vb(z,{recursive:!0});let V=new Map;for(let f of Z)V.set(f,B(f));X=Y6(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 Ef=C(()=>{X6()});import{homedir as nb}from"os";import{basename as ib,join as lb}from"path";function Pf(J=process.env.KOBE_HOME_DIR??nb()){return lb(J,".kobe","settings","keybindings.yaml")}function Q6(J,z={}){let Z=z.debounceMs??wf;if(Z<=0)return()=>{};let Y=z.path??Pf(),X=ib(Y),G=X.replace(/\.yaml$/,".yml"),q=0;return J.publish("keybindings",{rev:q}),hH({filePath:Y,matchBasenames:[X,G],debounceMs:Z,onTrigger:()=>{try{q+=1,J.publish("keybindings",{rev:q})}catch(j){w1("keybindings-watcher",j)}},onError:(j)=>w1("keybindings-watcher",j)})}var wf=200;var q6=C(()=>{Ef()});class hf{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??$b,this.log=J.log??$z}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 $b=(J,z)=>{let Z=setTimeout(J,z);return Z.unref?.(),()=>clearTimeout(Z)};var H6=()=>{};import{spawn as ab}from"child_process";function Jk(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=ab("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 Zk(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 Yk(J,z){let Z=z.tickMs??XQ,Y=z.rand,X={tickMs:Z,settledMs:pb,noPrMs:_b,noRemoteMs:sb,failureBaseMs:rb,failureCapMs:ob,jitterRatio:tb},G=[];for(let q of J.listTasks()){if(!Zk(q)){z.schedule.delete(q.id);continue}let H=z.schedule.get(q.id);if(H&&z.now<H.nextAllowedAt)continue;let j=H?.failures??0;try{let B=await z.run(q.worktreePath,q.branch);if(B.kind==="error"){$z("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,IG({kind:"error",error:B.error},j,z.now,X,Y));continue}if(B.kind==="empty"){z.schedule.set(q.id,IG({kind:"empty"},j,z.now,X,Y));continue}let V=bU(B.view,z.at),f=J.getTask(q.id);if(!f){z.schedule.delete(q.id);continue}if(!cq(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,IG({kind:"pr",settled:U},j,z.now,X,Y))}catch(B){w1("pr-status-poller",B),z.schedule.set(q.id,IG({kind:"error",error:"network"},j,z.now,X,Y))}}return G}function j6(J,z=XQ,Z,Y=zk){if(z<=0)return()=>{};let X=new Map,G=!1,H=setInterval(()=>{if(Z&&!Z())return;if(G)return;G=!0,Yk(J,{run:Y,now:Date.now(),at:new Date().toISOString(),schedule:X,tickMs:z}).catch((j)=>w1("pr-status-poller",j)).finally(()=>{G=!1})},z);return H.unref?.(),()=>clearInterval(H)}var XQ=30000,_b=300000,pb=600000,rb,ob=900000,sb=1800000,tb=0.2,eb=1e4,zk=async(J,z)=>{let Z=new AbortController,Y=!1,X=setTimeout(()=>{Y=!0,Z.abort()},eb);try{let G=await Jk(["pr","view",z,"--json",CU],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 qB({parseError:!0})}return qB({spawnError:G.spawnError,timedOut:Y,exitCode:G.status,stderr:G.stderr})}finally{clearTimeout(X)}};var B6=C(()=>{HB();S1();rb=XQ});function qk(J,z){return J.mtimeMs===z.mtimeMs&&J.completionId===z.completionId&&J.completionAt===z.completionAt}async function Hk(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 jk(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 f6{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=jk(this.orch.listTasks()),z=!1;for(let Z of this.entries.keys()){if(J.has(Z))continue;if(this.entries.get(Z)?.value)z=!0;this.entries.delete(Z)}if(z)this.publish();for(let[Z,Y]of J)this.maybeCollect(Z,Y)}catch(J){w1("transcript-activity",J)}}stop(){this.stopped=!0}maybeCollect(J,z){let Z=this.entries.get(J);if(!Z)Z={inFlight:!1,nextAllowedAt:0,vendor:z,detector:AG(z)},this.entries.set(J,Z);else if(Z.vendor!==z)Z.vendor=z,Z.detector=AG(z);let Y=this.options.cadence??{timeoutMs:Xk,slowRetryMs:Gk,minIntervalMs:Qk},X=this.options.run??Hk,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&&qk(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 W6(J,z,Z=vf,Y){if(Z<=0)return()=>{};let X=new f6(J,z,{hasSubscribers:Y});X.tick();let G=setInterval(()=>X.tick(),Z);return G.unref?.(),()=>{clearInterval(G),X.stop()}}var vf=1500,Xk=4000,Gk=60000,Qk=1500;var V6=C(()=>{gq();qX();Nq();S1();Yz()});import{readFileSync as Bk}from"fs";import{homedir as fk}from"os";import{basename as Wk,join as Vk}from"path";function cf(J=process.env.KOBE_HOME_DIR??fk()){return Vk(J,".config","kobe","state.json")}function U6(J){let z={};try{let B=JSON.parse(Bk(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"&&Kk.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 Dk(J,z){return J.theme===z.theme&&J.transparentBackground===z.transparentBackground&&J.focusAccent===z.focusAccent&&J.locale===z.locale&&J.sortMode===z.sortMode&&J.keysCollapsed===z.keysCollapsed&&J.projectFilter===z.projectFilter}function K6(J,z={}){let Z=z.debounceMs??mf;if(Z<=0)return()=>{};let Y=z.pollMs??Uk,X=z.statePath??cf(),G=Wk(X),q=U6(X);return J.publish("ui-prefs",q),hH({filePath:X,matchBasenames:[G],debounceMs:Z,pollMs:Y,onTrigger:()=>{try{let j=U6(X);if(Dk(q,j))return;q=j,J.publish("ui-prefs",j)}catch(j){w1("ui-prefs-watcher",j)}},onError:(j)=>w1("ui-prefs-watcher",j)})}var mf=200,Uk=250,Kk;var D6=C(()=>{Ef();Kk=["primary","success","info"]});function TX(J){return TY.includes(J)?J:"auto"}var TY,L6,VZ="editor.kind",$Z="editor.customCommand",vH="auto";var mH=C(()=>{TY=["auto","vim","nvim","nano","emacs","custom"],L6=["nvim","vim","emacs","nano"]});function uY(J){return J==="taskpanel"?"taskpanel":"chattab"}var UZ="settings.surface",xY="chattab";function F6(J){return J>="0"&&J<="7"}function O6(J,z){let Z=[],Y="",X=()=>{if(Y.length>0){for(let q of Lk.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(F6(H)){let j="",B=G+1;while(B<J.length&&j.length<3&&F6(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:Fk.decode(new Uint8Array(Z)),end:G}}function EY(J){if(J.length===0||J[0]!=='"')return J;return O6(J,0).value}function A6(J,z){if(J[0]==='"'){let Y=O6(J,0);if(J.startsWith(z,Y.end))return{orig:Y.value,neu:EY(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:EY(J.slice(Z+z.length))}}function Mk(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=A6(J," => ");if(Z)return{path:Z.neu,origPath:Z.orig};return{path:EY(J)}}function cH(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=
|
|
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=
|
|
28
|
+
`)&&J.endsWith("</INSTRUCTIONS>")}var T7=()=>{};function x7(J,z={}){let Z=mB(J.input_tokens,0),Y=mB(J.cached_input_tokens,0),X=mB(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}:{},...sR(z.contextWindowTokens)?{context_window_tokens:z.contextWindowTokens}:{}}}function mB(J,z){return typeof J==="number"&&Number.isFinite(J)?J:z}function sR(J){return typeof J==="number"&&Number.isFinite(J)&&J>0}import{readdir as tR,stat as eR,unlink as Wv}from"fs/promises";import{homedir as J2}from"os";import BY from"path";async function iB(J=fY){let z=J.sessionsDir(),Z=(await J.readdir(z)).sort().reverse(),Y=[];for(let X of Z){let G=BY.join(z,X),q=(await J.readdir(G)).sort().reverse();for(let H of q){let j=BY.join(G,H),B=(await J.readdir(j)).sort().reverse();for(let V of B){let f=BY.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(BY.join(f,L)),Y.length>=u7){if(!E7)E7=!0,console.warn(`[codex history] rollout scan truncated at ${u7} files; older sessions may be omitted`);return Y}}}}return Y}async function z2(J,z=fY){if(!J)return;let Z=J.toLowerCase(),Y=await iB(z);for(let X of Y)if(BY.basename(X).match(v7)?.[1]?.toLowerCase()===Z)return X;return}function Z2(J){for(let z of J.split(`
|
|
29
|
+
`)){let Z=z.trim();if(!Z)continue;if(!yZ(Z))return"";try{let Y=JSON.parse(Z);if(Y.type==="session_meta")return Y.payload?.cwd??""}catch{}return""}return""}async function m7(J,z){let Z=w7.get(z);if(!Z)Z=new Map,w7.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=Z2(X);if(G)Z.set(J,G);return G}async function c7(J,z=fY){if(!J)return[];let Z=await iB(z),Y=[],X=0;for(let G of Z){if(X>=Y2)break;if(X++,await m7(G,z)!==J)continue;let q=BY.basename(G).match(v7)?.[1];if(q)Y.push(q)}return Y.reverse()}async function lB(J,z=fY){if(!J)return null;let Z=await iB(z),Y=0;for(let X of Z){if(Y>=X2)break;if(Y++,await m7(X,z)!==J)continue;try{return{path:X,mtimeMs:(await z.stat(X)).mtimeMs}}catch{}}return null}async function d7(J,z=fY){return(await lB(J,z))?.mtimeMs??0}async function n7(J,z=fY){return(await G2(J,z)).messages}async function G2(J,z=fY){let Z=await z2(J,z);if(!Z)return{messages:[]};let Y;try{Y=await z.readFile(Z)}catch{return{messages:[]}}let X=Q2(q2(Y,J)),G=W2(Y);return{messages:X,...G?{usageMetrics:G}:{}}}function Q2(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 q2(J,z){let Z=[];for(let Y of J.split(`
|
|
30
|
+
`)){let X=Y.trim();if(!X)continue;if(!yZ(X))continue;let G;try{G=JSON.parse(X)}catch{continue}if(!AG(G))continue;if(G.type!=="response_item")continue;let q=AG(G.payload)?G.payload:void 0;if(!q)continue;let H=typeof G.timestamp==="string"?G.timestamp:new Date().toISOString(),j=H2(q,H,z);if(j)Z.push(j)}return Z}function H2(J,z,Z){if(J.type==="message"){let Y=J.role;if(Y!=="user"&&Y!=="assistant"&&Y!=="system")return;let X=vB(J.content);if(Y==="user"&&y7(X))return;return{role:Y,blocks:X,timestamp:z,sessionId:Z}}if(J.type==="reasoning")return j2(J,z,Z);if(J.type==="function_call")return cB(J,z,Z,{name:nB(J.name,"function_call"),input:dB(J.arguments)});if(J.type==="custom_tool_call")return cB(J,z,Z,{name:nB(J.name,"custom_tool_call"),input:dB(J.input)});if(J.type==="tool_search_call")return cB(J,z,Z,{name:"tool_search_call",input:Fq(J,["type","call_id","status"])});if(J.type==="function_call_output"||J.type==="custom_tool_call_output")return P7(J,z,Z,dB(J.output));if(J.type==="tool_search_output")return P7(J,z,Z,Fq(J,["type","call_id"]));if(J.type==="web_search_call"||J.type==="image_generation_call"||J.type==="local_shell_call")return B2(J,z,Z);return}function j2(J,z,Z){let Y=f2(J);if(Y.length===0)return;return{role:"assistant",blocks:[{type:"thinking",text:Y}],timestamp:z,sessionId:Z}}function cB(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 P7(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 B2(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=nB(J.name,Y),q=Fq(J,["type","call_id","status"]),H=Fq(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 f2(J){let z=h7(J.content);if(z.length>0)return z;let Z=typeof J.text==="string"?J.text:"";if(Z.length>0)return Z;return h7(J.summary)}function h7(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(!AG(Z))continue;let Y=typeof Z.text==="string"?Z.text:"";if(Y.length>0)z.push(Y)}return z.join("")}function Fq(J,z){let Z={};for(let[Y,X]of Object.entries(J))if(!z.includes(Y))Z[Y]=X;return Z}function nB(J,z){return typeof J==="string"&&J.length>0?J:z}function dB(J){if(typeof J!=="string")return J;try{return JSON.parse(J)}catch{return J}}function W2(J){let z,Z=null;for(let Y of J.split(`
|
|
31
|
+
`)){let X=Y.trim();if(!X)continue;if(!yZ(X))continue;let G;try{G=JSON.parse(X)}catch{continue}if(!AG(G))continue;let q=typeof G.timestamp==="string"?V2(G.timestamp):null;if(G.type==="response_item")continue;if(G.type!=="turn.completed")continue;let H=AG(G.usage)?G.usage:void 0;if(!H)continue;let j=x7(H);if(!j)continue;if(q!==null&&(Z===null||q>Z))Z=q,z=j;else if(Z===null)z=j}return z}function V2(J){let z=new Date(J).getTime();return Number.isFinite(z)?z:null}function AG(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}var fY,u7=5000,E7=!1,v7,w7,Y2=200,X2=12;var $B=C(()=>{UG();T7();fY={sessionsDir(){return BY.join(J2(),".codex","sessions")},async readdir(J){try{return await tR(J)}catch{return[]}},async readFile(J){return await rY(J)},stat:eR};v7=/([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})\.jsonl$/i;w7=new WeakMap});import{homedir as U2}from"os";import{join as K2}from"path";function D2(){return K2(U2(),".codex","hooks.json")}var l7,Rv,aB;var $7=C(()=>{PB();l7=[{event:"SessionStart",verb:"session-start"},{event:"UserPromptSubmit",verb:"turn-start"},{event:"Stop",verb:"turn-complete"}],Rv=l7.map((J)=>J.event);aB=class aB extends OG{vendor="codex";eventMap=l7;globalSettingsPath(){return D2()}}});function a7(J){if(!Mq(J))return;let z=Mq(J.modelMetrics)?J.modelMetrics:void 0;if(!z)return;let Z=0,Y=0,X=0;for(let q of Object.values(z)){if(!Mq(q)||!Mq(q.usage))continue;Z+=Oq(q.usage.inputTokens,0),Y+=Oq(q.usage.outputTokens,0),X+=Oq(q.usage.cacheReadTokens,0)}let G=Oq(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 Mq(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}function Oq(J,z){return typeof J==="number"&&Number.isFinite(J)?J:z}import{readdir as L2,rm as F2,stat as M2}from"fs/promises";import{homedir as O2}from"os";import EZ from"path";async function pB(J=WY){let z=EZ.join(J.copilotDir(),"session-state");return(await J.readdir(z)).map((Y)=>EZ.join(z,Y))}async function _7(J,z=WY){let Z=[];for(let Y of await pB(z)){let X=await rB(Y,z);if(X.cwd!==J)continue;Z.push({id:X.id??EZ.basename(Y),updatedAt:X.updatedAt??""})}return Z.sort((Y,X)=>Y.updatedAt.localeCompare(X.updatedAt)).map((Y)=>Y.id)}async function p7(J,z=WY){if(!J)return 0;let Z=0;for(let Y of await pB(z)){if((await rB(Y,z)).cwd!==J)continue;try{let{mtimeMs:G}=await z.stat(EZ.join(Y,"events.jsonl"));if(G>Z)Z=G}catch{}}return Z}async function A2(J,z=WY){let Z=await R2(J,z);if(!Z)return{messages:[]};let Y=await z.readFile(EZ.join(Z,"events.jsonl")).catch(()=>""),X=N2(Y,J);return{messages:X.messages,...X.usageMetrics?{usageMetrics:X.usageMetrics}:{}}}async function r7(J,z=WY){return(await A2(J,z)).messages}async function R2(J,z=WY){for(let Z of await pB(z)){if(EZ.basename(Z)===J)return Z;let Y=await rB(Z,z);if(Y.id===J||Y.name?.toLowerCase()===J.toLowerCase())return Z}return}async function rB(J,z=WY){let Z=await z.readFile(EZ.join(J,"workspace.yaml")).catch(()=>"");return g2(Z)}function g2(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 N2(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(!yZ(j))continue;let B;try{B=JSON.parse(j)}catch{continue}if(!_B(B)||typeof B.type!=="string")continue;let V=typeof B.timestamp==="string"?B.timestamp:new Date().toISOString(),f=_B(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,C2),"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(!_B(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=a7(f)}return{messages:Z,usageMetrics:G,firstUserMessage:q}}function _B(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}var WY,C2=200;var o7=C(()=>{UG();WY={copilotDir(){let J=process.env.COPILOT_HOME?.trim();if(J)return J;return EZ.join(O2(),".copilot")},async readdir(J){try{return await L2(J)}catch{return[]}},async readFile(J){return await rY(J)},stat:M2,async rm(J){await F2(J,{recursive:!0,force:!0})}}});function oB(J){return JJ(J).createHookAdapter()}class Aq{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 sB=C(()=>{qZ()});import{readFile as s7}from"fs/promises";class Rq{supportsCompletionMarkers(){return!0}}function RG(J){return JJ(J).createTurnDetector()}function S2(J,z="claude",Z=0){let Y=null,X=0;for(let G of J.split(`
|
|
34
|
+
`)){X++;let q=t7(G);if(!q)continue;let H=JU(q.message)?q.message:q;if(H.role!=="assistant")continue;if(!("content"in H))continue;let j=e7(q,Z),B={id:`claude:${z}:${j}:${X}`,timestampMs:j,source:"claude"};if(!Y||B.timestampMs>=Y.timestampMs)Y=B}return Y}function y2(J,z="codex"){let Z=null,Y=0;for(let X of J.split(`
|
|
35
|
+
`)){Y++;let G=t7(X);if(!G||G.type!=="turn.completed")continue;let q=e7(G,0),H={id:`codex:${z}:${q}:${Y}`,timestampMs:q,source:"codex"};if(!Z||H.timestampMs>=Z.timestampMs)Z=H}return Z}function t7(J){let z=J.trim();if(!z)return null;try{let Z=JSON.parse(z);return JU(Z)?Z:null}catch{return null}}function e7(J,z){let Z=typeof J.timestamp==="string"?Date.parse(J.timestamp):Number.NaN;return Number.isFinite(Z)?Z:z}function JU(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}var k2,tB,I2,eB,gq;var Nq=C(()=>{SB();$B();qZ();k2={listSessionFiles:(J)=>KG(J),readFile:(J)=>s7(J,"utf8")};tB=class tB extends Rq{deps;vendor="claude";cache=new Map;constructor(J=k2){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=S2(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}};I2={findLatestRollout:(J)=>lB(J),readFile:(J)=>s7(J,"utf8")};eB=class eB extends Rq{deps;vendor="codex";cache=null;constructor(J=I2){super();this.deps=J}async latestCompletion(J){if(!J)return null;let z=await this.deps.findLatestRollout(J);if(!z)return null;if(this.cache&&this.cache.path===z.path&&z.mtimeMs>0&&this.cache.mtimeMs===z.mtimeMs)return this.cache.marker;let Z=await this.deps.readFile(z.path).catch(()=>"");if(!Z)return null;let Y=y2(Z,z.path);return this.cache={path:z.path,mtimeMs:z.mtimeMs,marker:Y},Y}};gq=class gq extends Rq{vendor;constructor(J){super();this.vendor=J}supportsCompletionMarkers(){return!1}async latestCompletion(){return null}}});function P2(J){return{vendor:J,builtin:!1,displayName:J,defaultCommand:[J],history:T2,detectAccount:async()=>({binary:{found:!1,error:"custom engine: kobe has no account detector for it"},account:{kind:"none"}}),createHookAdapter:()=>new Aq(J),createTurnDetector:()=>new gq(J)}}function JJ(J){return UJ(J)?w2[J]:P2(J)}var T2,x2,u2,E2,w2;var qZ=C(()=>{s1();qY();SB();S7();$B();$7();o7();sB();Nq();T2={async listSessionIdsForWorktree(){return[]},async readHistory(){return[]},async latestTranscriptMtimeForWorktree(){return 0}},x2={async listSessionIdsForWorktree(J){return[...await KG(J)].sort((Z,Y)=>Z.mtimeMs-Y.mtimeMs).map((Z)=>Z.sessionId)},readHistory:(J)=>B7(J),latestTranscriptMtimeForWorktree:(J)=>j7(J)},u2={listSessionIdsForWorktree:(J)=>c7(J),readHistory:(J)=>n7(J),latestTranscriptMtimeForWorktree:(J)=>d7(J)},E2={listSessionIdsForWorktree:(J)=>_7(J),readHistory:(J)=>r7(J),latestTranscriptMtimeForWorktree:(J)=>p7(J)},w2={claude:{vendor:"claude",builtin:!0,displayName:"Claude",defaultCommand:["claude"],history:x2,detectAccount:(J)=>jq(J),createHookAdapter:()=>new hB,createTurnDetector:()=>new tB},codex:{vendor:"codex",builtin:!0,displayName:"Codex",defaultCommand:["codex"],effortLevels:["none","low","medium","high","xhigh"],history:u2,detectAccount:(J)=>Bq(J),createHookAdapter:()=>new aB,createTurnDetector:()=>new eB},copilot:{vendor:"copilot",builtin:!0,displayName:"Copilot",defaultCommand:["copilot"],history:E2,detectAccount:(J)=>fq(J),createHookAdapter:()=>new Aq("copilot"),createTurnDetector:()=>new gq("copilot")}}});async function zX(J,z){if(!z)return 0;return JJ(J).history.latestTranscriptMtimeForWorktree(z)}var Cq=C(()=>{qZ()});function zU(J){return typeof J==="string"&&h2.includes(J)}var gG=(J)=>J,zJ="claude",h2;var Yz=C(()=>{h2=["backlog","in_progress","in_review","done","canceled","error"]});function bq(J){return v2.includes(J)}function ZU(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 v2;var kq=C(()=>{v2=["session-start","turn-start","turn-complete","turn-failed","awaiting-input","session-end"]});function m2(){let J=process.env.KOBE_ENGINE_STATE_TTL_MS;if(J===void 0)return YU;let z=Number(J);return Number.isFinite(z)&&z>0?z:YU}class J9{bus;staleMs;now;livenessAt;activity=new Map;constructor(J,z=m2(),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=ZU(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 YU=600000;var XU=C(()=>{kq()});function GU(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 Iq(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 QU(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=GU(Z);return Y.length>0?Buffer.from(Y,"utf8").toString("utf8"):Y}async function ZX(J,z=zJ){if(!J)return"";let{history:Z}=JJ(z),Y=await Z.listSessionIdsForWorktree(J);for(let X of Y.slice(0,c2)){let G=QU(await Z.readHistory(X));if(G)return G}return""}async function qU(J,z){if(!z)return"";try{return QU(await JJ(J).history.readHistory(z))}catch{return""}}var c2=8;var Sq=C(()=>{qZ();Yz()});function HU(J){let z=String(J),Z=z.length-1;return u1.context.id+(Z?String.fromCharCode(96+Z):"")+z}function Y9(J){u1.context=J}function d2(){return{...u1.context,id:u1.getNextContextId(),count:0}}function VY(J,z){let Z=N1,Y=r0,X=J.length===0,G=z===void 0?Y:z,q=X?{owned:null,cleanups:null,context:null,owner:null}:{owned:null,cleanups:null,context:G?G.context:null,owner:G},H=X?()=>J(()=>{throw Error("Dispose method must be an explicit argument to createRoot function")}):()=>J(()=>YJ(()=>wZ(q)));Oz.afterCreateOwner&&Oz.afterCreateOwner(q),r0=q,N1=null;try{return uJ(H,!0)}finally{N1=Z,r0=Y}}function s(J,z){z=z?Object.assign({},uq,z):uq;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(DU(Z),Oz.afterCreateSignal)Oz.afterCreateSignal(Z)}let Y=(X)=>{if(typeof X==="function")if(B0&&B0.running&&B0.sources.has(Z))X=X(Z.tValue);else X=X(Z.value);return G9(Z,X)};return[LU.bind(Z),Y]}function jU(J,z,Z){let Y=GX(J,z,!0,iJ,Z);if(XX&&B0&&B0.running)ZJ.push(Y);else KY(Y)}function hz(J,z,Z){let Y=GX(J,z,!1,iJ,Z);if(XX&&B0&&B0.running)ZJ.push(Y);else KY(Y)}function n0(J,z,Z){KU=Jg;let Y=GX(J,z,!1,iJ,Z),X=bG&&lJ(bG);if(X)Y.suspense=X;if(!Z||!Z.render)Y.user=!0;AJ?AJ.push(Y):KY(Y)}function K0(J,z,Z){Z=Z?Object.assign({},uq,Z):uq;let Y=GX(J,z,!0,0,Z);if(Y.observers=null,Y.observerSlots=null,Y.comparator=Z.equals||void 0,XX&&B0&&B0.running)Y.tState=iJ,ZJ.push(Y);else KY(Y);return LU.bind(Y)}function _2(J){return J&&typeof J==="object"&&"then"in J}function UY(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=z9,j=null,B=!1,V=!1,f="initialValue"in G,U=typeof Y==="function"&&K0(Y),L=new Set,[O,A]=(G.storage||s)(G.initialValue),[g,E]=s(void 0),[h,I]=s(void 0,{equals:!1}),[N,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=z9,B0&&X0&&B)B0.promises.delete(X0),B=!1,uJ(()=>{B0.running=!0,c(G0,f0)},!1);else c(G0,f0)}return G0}function c(X0,G0){uJ(()=>{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=bG&&lJ(bG),G0=O(),f0=g();if(f0!==void 0&&!q)throw f0;if(N1&&!N1.user&&X0)jU(()=>{if(h(),q){if(X0.resolved&&B0&&B)B0.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=B0&&B0.running,G0==null||G0===!1){y(q,YJ(O));return}if(B0&&q)B0.promises.delete(q);let f0,_=H!==z9?H:YJ(()=>{try{return X(G0,{value:O(),refetching:X0})}catch(O0){f0=O0}});if(f0!==void 0){y(q,void 0,xq(f0),G0);return}else if(!_2(_))return y(q,_,void 0,G0),_;if(q=_,"v"in _){if(_.s===1)y(q,_.v,void 0,G0);else y(q,void 0,xq(_.v),G0);return _}return V=!0,queueMicrotask(()=>V=!1),uJ(()=>{M(f?"refreshing":"pending"),I()},!1),_.then((O0)=>y(_,O0,void 0,G0),(O0)=>y(_,void 0,xq(O0),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=r0;if(U)jU(()=>(t=r0,i(!1)));else i(!1);return[d,{refetch:(X0)=>r2(t,()=>i(X0)),mutate:A}]}function hq(J){return uJ(J,!1)}function YJ(J){if(!YX&&N1===null)return J();let z=N1;N1=null;try{if(YX)return YX.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){n0(()=>YJ(J))}function C1(J){if(r0===null)console.warn("cleanups created outside a `createRoot` or `render` will never be run");else if(r0.cleanups===null)r0.cleanups=[J];else r0.cleanups.push(J);return J}function p2(J,z){if(NG||(NG=Symbol("error")),r0=GX(void 0,void 0,!0),r0.context={...r0.context,[NG]:[z]},B0&&B0.running)B0.sources.add(r0);try{return J()}catch(Z){IG(Z)}finally{r0=r0.owner}}function vq(){return N1}function r2(J,z){let Z=r0,Y=N1;r0=J,N1=null;try{return uJ(z,!0)}catch(X){IG(X)}finally{r0=Z,N1=Y}}function o2(J){if(B0&&B0.running)return J(),B0.done;let z=N1,Z=r0;return Promise.resolve().then(()=>{N1=z,r0=Z;let Y;if(XX||bG)Y=B0||(B0={sources:new Set,effects:[],promises:new Set,disposed:new Set,queue:new Set,running:!0}),Y.done||(Y.done=new Promise((X)=>Y.resolve=X)),Y.running=!0;return uJ(J,!1),N1=r0=null,Y?Y.done:void 0})}function fU(J,z){let Z=GX(()=>YJ(()=>{return Object.assign(J,{[$2]:!0}),J(z)}),void 0,!0,0);return Z.props=z,Z.observers=null,Z.observerSlots=null,Z.name=J.name,Z.component=J,KY(Z),Z.tValue!==void 0?Z.tValue:Z.value}function DU(J){if(r0){if(r0.sourceMap)r0.sourceMap.push(J);else r0.sourceMap=[J];J.graph=r0}if(Oz.afterRegisterGraph)Oz.afterRegisterGraph(J)}function vz(J,z){let Z=Symbol("context");return{id:Z,Provider:zg(Z,z),defaultValue:J}}function lJ(J){let z;return r0&&r0.context&&(z=r0.context[J.id])!==void 0?z:J.defaultValue}function s2(J){let z=K0(J),Z=K0(()=>X9(z()),void 0,{name:"children"});return Z.toArray=()=>{let Y=Z();return Array.isArray(Y)?Y:Y!=null?[Y]:[]},Z}function LU(){let J=B0&&B0.running;if(this.sources&&(J?this.tState:this.state))if((J?this.tState:this.state)===iJ)KY(this);else{let z=ZJ;ZJ=null,uJ(()=>Eq(this),!1),ZJ=z}if(N1){let z=this.observers;if(!z||z[z.length-1]!==N1){let Z=z?z.length:0;if(!N1.sources)N1.sources=[this],N1.sourceSlots=[Z];else N1.sources.push(this),N1.sourceSlots.push(Z);if(!z)this.observers=[N1],this.observerSlots=[N1.sources.length-1];else z.push(N1),this.observerSlots.push(N1.sources.length-1)}}if(J&&B0.sources.has(this))return this.tValue;return this.value}function G9(J,z,Z){let Y=B0&&B0.running&&B0.sources.has(J)?J.tValue:J.value;if(!J.comparator||!J.comparator(Y,z)){if(B0){let X=B0.running;if(X||!Z&&B0.sources.has(J))B0.sources.add(J),J.tValue=z;if(!X)J.value=z}else J.value=z;if(J.observers&&J.observers.length)uJ(()=>{for(let X=0;X<J.observers.length;X+=1){let G=J.observers[X],q=B0&&B0.running;if(q&&B0.disposed.has(G))continue;if(q?!G.tState:!G.state){if(G.pure)ZJ.push(G);else AJ.push(G);if(G.observers)MU(G)}if(!q)G.state=iJ;else G.tState=iJ}if(ZJ.length>1e6){if(ZJ=[],n2)throw Error("Potential Infinite Loop Detected.");throw Error()}},!1)}return z}function KY(J){if(!J.fn)return;wZ(J);let z=Pq;if(WU(J,B0&&B0.running&&B0.sources.has(J)?J.tValue:J.value,z),B0&&!B0.running&&B0.sources.has(J))queueMicrotask(()=>{uJ(()=>{B0&&(B0.running=!0),N1=r0=J,WU(J,J.tValue,z),N1=r0=null},!1)})}function WU(J,z,Z){let Y,X=r0,G=N1;N1=r0=J;try{Y=J.fn(z)}catch(q){if(J.pure)if(B0&&B0.running)J.tState=iJ,J.tOwned&&J.tOwned.forEach(wZ),J.tOwned=void 0;else J.state=iJ,J.owned&&J.owned.forEach(wZ),J.owned=null;return J.updatedAt=Z+1,IG(q)}finally{N1=G,r0=X}if(!J.updatedAt||J.updatedAt<=Z){if(J.updatedAt!=null&&"observers"in J)G9(J,Y,!0);else if(B0&&B0.running&&J.pure){if(!B0.sources.has(J))J.value=Y;B0.sources.add(J),J.tValue=Y}else J.value=Y;J.updatedAt=Z}}function GX(J,z,Z,Y=iJ,X){let G={fn:J,state:Y,updatedAt:null,owned:null,sources:null,sourceSlots:null,cleanups:null,value:z,owner:r0,context:r0?r0.context:null,pure:Z};if(B0&&B0.running)G.state=0,G.tState=Y;if(r0===null)console.warn("computations created outside a `createRoot` or `render` will never be disposed");else if(r0!==a2)if(B0&&B0.running&&r0.pure)if(!r0.tOwned)r0.tOwned=[G];else r0.tOwned.push(G);else if(!r0.owned)r0.owned=[G];else r0.owned.push(G);if(X&&X.name)G.name=X.name;if(YX&&G.fn){let q=G.fn,[H,j]=s(void 0,{equals:!1}),B=YX.factory(q,j);C1(()=>B.dispose());let V,f=()=>o2(j).then(()=>{if(V)V.dispose(),V=void 0});G.fn=(U)=>{if(H(),B0&&B0.running){if(!V)V=YX.factory(q,f);return V.track(U)}return B.track(U)}}return Oz.afterCreateOwner&&Oz.afterCreateOwner(G),G}function kG(J){let z=B0&&B0.running;if((z?J.tState:J.state)===0)return;if((z?J.tState:J.state)===CG)return Eq(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<Pq)){if(z&&B0.disposed.has(J))return;if(z?J.tState:J.state)Z.push(J)}for(let Y=Z.length-1;Y>=0;Y--){if(J=Z[Y],z){let X=J,G=Z[Y+1];while((X=X.owner)&&X!==G)if(B0.disposed.has(X))return}if((z?J.tState:J.state)===iJ)KY(J);else if((z?J.tState:J.state)===CG){let X=ZJ;ZJ=null,uJ(()=>Eq(J,Z[0]),!1),ZJ=X}}}function uJ(J,z){if(ZJ)return J();let Z=!1;if(!z)ZJ=[];if(AJ)Z=!0;else AJ=[];Pq++;try{let Y=J();return t2(Z),Y}catch(Y){if(!Z)AJ=null;ZJ=null,IG(Y)}}function t2(J){if(ZJ){if(XX&&B0&&B0.running)e2(ZJ);else FU(ZJ);ZJ=null}if(J)return;let z;if(B0){if(!B0.promises.size&&!B0.queue.size){let{sources:Y,disposed:X}=B0;AJ.push.apply(AJ,B0.effects),z=B0.resolve;for(let G of AJ)"tState"in G&&(G.state=G.tState),delete G.tState;B0=null,uJ(()=>{for(let G of X)wZ(G);for(let G of Y){if(G.value=G.tValue,G.owned)for(let q=0,H=G.owned.length;q<H;q++)wZ(G.owned[q]);if(G.tOwned)G.owned=G.tOwned;delete G.tValue,delete G.tOwned,G.tState=0}BU(!1)},!1)}else if(B0.running){B0.running=!1,B0.effects.push.apply(B0.effects,AJ),AJ=null,BU(!0);return}}let Z=AJ;if(AJ=null,Z.length)uJ(()=>KU(Z),!1);else Oz.afterUpdate&&Oz.afterUpdate();if(z)z()}function FU(J){for(let z=0;z<J.length;z++)kG(J[z])}function e2(J){for(let z=0;z<J.length;z++){let Z=J[z],Y=B0.queue;if(!Y.has(Z))Y.add(Z),XX(()=>{Y.delete(Z),uJ(()=>{B0.running=!0,kG(Z)},!1),B0&&(B0.running=!1)})}}function Jg(J){let z,Z=0;for(z=0;z<J.length;z++){let Y=J[z];if(!Y.user)kG(Y);else J[Z++]=Y}if(u1.context){if(u1.count){u1.effects||(u1.effects=[]),u1.effects.push(...J.slice(0,Z));return}Y9()}if(u1.effects&&(u1.done||!u1.count))J=[...u1.effects,...J],Z+=u1.effects.length,delete u1.effects;for(z=0;z<Z;z++)kG(J[z])}function Eq(J,z){let Z=B0&&B0.running;if(Z)J.tState=0;else J.state=0;for(let Y=0;Y<J.sources.length;Y+=1){let X=J.sources[Y];if(X.sources){let G=Z?X.tState:X.state;if(G===iJ){if(X!==z&&(!X.updatedAt||X.updatedAt<Pq))kG(X)}else if(G===CG)Eq(X,z)}}}function MU(J){let z=B0&&B0.running;for(let Z=0;Z<J.observers.length;Z+=1){let Y=J.observers[Z];if(z?!Y.tState:!Y.state){if(z)Y.tState=CG;else Y.state=CG;if(Y.pure)ZJ.push(Y);else AJ.push(Y);Y.observers&&MU(Y)}}}function wZ(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--)wZ(J.tOwned[z]);delete J.tOwned}if(B0&&B0.running&&J.pure)OU(J,!0);else if(J.owned){for(z=J.owned.length-1;z>=0;z--)wZ(J.owned[z]);J.owned=null}if(J.cleanups){for(z=J.cleanups.length-1;z>=0;z--)J.cleanups[z]();J.cleanups=null}if(B0&&B0.running)J.tState=0;else J.state=0;delete J.sourceMap}function OU(J,z){if(!z)J.tState=0,B0.disposed.add(J);if(J.owned)for(let Z=0;Z<J.owned.length;Z++)OU(J.owned[Z])}function xq(J){if(J instanceof Error)return J;return Error(typeof J==="string"?J:"Unknown error",{cause:J})}function VU(J,z,Z){try{for(let Y of z)Y(J)}catch(Y){IG(Y,Z&&Z.owner||null)}}function IG(J,z=r0){let Z=NG&&z&&z.context&&z.context[NG],Y=xq(J);if(!Z)throw Y;if(AJ)AJ.push({fn(){VU(Y,Z,z)},state:iJ});else VU(Y,Z,z)}function X9(J){if(typeof J==="function"&&!J.length)return X9(J());if(Array.isArray(J)){let z=[];for(let Z=0;Z<J.length;Z++){let Y=X9(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 zg(J,z){return function(Y){let X;return hz(()=>X=YJ(()=>{return r0.context={...r0.context,[J]:Y.value},s2(()=>Y.children)}),void 0,z),X}}function UU(J){for(let z=0;z<J.length;z++)J[z]()}function Yg(J,z,Z={}){let Y=[],X=[],G=[],q=0,H=z.length>1?[]:null;return C1(()=>UU(G)),()=>{let j=J()||[],B=j.length,V,f;return j[wq],YJ(()=>{let L,O,A,g,E,h,I,N,M;if(B===0){if(q!==0)UU(G),G=[],Y=[],X=[],q=0,H&&(H=[]);if(Z.fallback)Y=[Zg],X[0]=VY((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]=VY(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]=VY(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 AU(J,z){if(Xg){if(u1.context){let Z=u1.context;Y9(d2());let Y=fU(J,z||{});return Y9(Z),Y}}return fU(J,z||{})}function yq(){return!0}function Z9(J){return!(J=typeof J==="function"?J():J)?{}:J}function Qg(){for(let J=0,z=this.length;J<z;++J){let Z=this[J]();if(Z!==void 0)return Z}}function mq(...J){let z=!1;for(let q=0;q<J.length;q++){let H=J[q];z=z||!!H&&Mz in H,J[q]=typeof H==="function"?(z=!0,K0(H)):H}if(l2&&z)return new Proxy({get(q){for(let H=J.length-1;H>=0;H--){let j=Z9(J[H])[q];if(j!==void 0)return j}},has(q){for(let H=J.length-1;H>=0;H--)if(q in Z9(J[H]))return!0;return!1},keys(){let q=[];for(let H=0;H<J.length;H++)q.push(...Object.keys(Z9(J[H])));return[...new Set(q)]}},Gg);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:Qg.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 K0(Yg(()=>J.each,J.children,z||void 0),void 0,{name:"value"})}function Y0(J){let z=J.keyed,Z=K0(()=>J.when,void 0,{name:"condition value"}),Y=z?Z:K0(Z,void 0,{equals:(X,G)=>!X===!G,name:"condition"});return K0(()=>{let X=Y();if(X){let G=J.children;return typeof G==="function"&&G.length>0?YJ(()=>G(z?X:()=>{if(!YJ(Y))throw qg("Show");return Z()})):G}return J.fallback},void 0,{name:"value"})}function RU(J){let z;if(u1.context&&u1.load)z=u1.load(u1.getContextId());let[Z,Y]=s(z,{name:"errored"});return Tq||(Tq=new Set),Tq.add(Y),C1(()=>Tq.delete(Y)),K0(()=>{let X;if(X=Z()){let G=J.fallback;if(typeof G!=="function"||G.length==0)console.error(X);return typeof G==="function"&&G.length?YJ(()=>G(X,()=>Y())):G}return p2(()=>J.children,Y)},void 0,{name:"value"})}var u1,n2=!0,i2=(J,z)=>J===z,Mz,l2,wq,$2,uq,NG=null,KU,iJ=1,CG=2,a2,z9,r0=null,B0=null,XX=null,YX=null,N1=null,ZJ=null,AJ=null,Pq=0,Oz,ev,BU,bG,Zg,Xg=!1,Gg,qg=(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.`,Tq,gU;var D1=C(()=>{u1={context:void 0,registry:void 0,effects:void 0,done:!1,getContextId(){return HU(this.context.count)},getNextContextId(){return HU(this.context.count++)}};Mz=Symbol("solid-proxy"),l2=typeof Proxy==="function",wq=Symbol("solid-track"),$2=Symbol("solid-dev-component"),uq={equals:i2},KU=FU,a2={},z9={},Oz={afterUpdate:null,afterCreateOwner:null,afterCreateSignal:null,afterRegisterGraph:null};[ev,BU]=s(!1);Zg=Symbol("fallback");Gg={get(J,z,Z){if(z===Mz)return Z;return J.get(z)},has(J,z){if(z===Mz)return!0;return J.has(z)},set:yq,deleteProperty:yq,getOwnPropertyDescriptor(J,z){return{configurable:!0,enumerable:!0,get(){return J.get(z)},set:yq,deleteProperty:yq}},ownKeys(J){return J.keys()}};gU={hooks:Oz,writeSignal:G9,registerGraph:DU};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 Hg}from"child_process";function Q9(J,z,Z,Y){if(Z)return J+Y.slowRetryMs;return z+Math.max(Y.minIntervalMs,(z-J)*5)}function q9(J,z){return!J.inFlight&&z>=J.nextAllowedAt}function NU(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 CU(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(!q9(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=Q9(X,Date.now(),B,z),J.inFlight=!1,j&&!B)Y(H)})(),!0}function HZ(J,z,Z){return new Promise((Y)=>{let X="",G=!1,q=(j)=>{if(G)return;G=!0,Y({status:j,stdout:X})},H=Hg(J,z.slice(),{cwd:Z.cwd,stdio:["ignore","pipe","ignore"],env:Z.env,signal:Z.signal,killSignal:"SIGKILL"});H.stdout?.on("data",(j)=>{X+=String(j)}),H.on("error",()=>q(null)),H.on("close",(j)=>q(j))})}var qX=()=>{};function jg(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 Bg(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 fg(J){if(!J||J.length===0)return"none";let z=!1,Z=!1;for(let Y of J){let X=Bg(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 kU(J,z){if(!J||typeof J.number!=="number")return null;return{provider:"github",lifecycle:jg(J.state,J.reviewDecision),checkState:fg(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 dq(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 cq(J,z){return z.some((Z)=>J.includes(Z))}function H9(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(cq(z,Kg))return{kind:"empty"};if(cq(z,Wg))return{kind:"error",error:"no-remote"};if(cq(z,Vg))return{kind:"error",error:"auth"};if(cq(z,Ug))return{kind:"error",error:"network"};return{kind:"empty"}}function SG(J,z,Z,Y,X=Math.random){let G=(H)=>Z+NU(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(CU(Y.failureBaseMs,q-1,Y.failureCapMs)),failures:q}}var bU="number,url,title,state,baseRefName,headRefName,reviewDecision,mergeable,statusCheckRollup",Wg,Vg,Ug,Kg;var j9=C(()=>{qX();Wg=["none of the git remotes","no git remote","to use github cli in a github repository","not a github repository"],Vg=["gh auth login","authentication required","not logged in","http 401","bad credentials","requires authentication"],Ug=["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"],Kg=["no pull requests found","no open pull requests","no pull request found"]});var B9,f9,W9,V9="DIRTY_WORKTREE",U9,K9;var D9=C(()=>{B9=class B9 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"}};f9=class f9 extends Error{constructor(J){super(`task not found: ${J}`);this.name="TaskNotFoundError"}};W9=class W9 extends Error{constructor(){super("cannot delete a main task; remove the repo from saved repos instead");this.name="CannotDeleteMainTaskError"}};U9=class U9 extends Error{taskId;constructor(J){super(`${V9}: task ${J} worktree has uncommitted or untracked changes`);this.taskId=J;this.name="DirtyWorktreeError"}};K9=class K9 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 IU;var SU=C(()=>{IU=["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 Dg}from"fs";function yU(J){let z=J.auth,Z=z.kind==="key"?{kind:"key",keyPath:z.keyPath}:{kind:"password",getPassword:()=>oQ(z.keychainRef)};return{host:J.host,user:J.user,port:J.port,auth:Z,controlPath:nQ(J.host,J.user,J.port)}}function HX(J){let z=zZ(J);if(!z)return new rQ;return new aY(yU(z))}function jZ(J){for(let z of Object.values(MB()))if(J===z.basePath||J.startsWith(`${z.basePath}/`))return new aY(yU(z));return new rQ}function TU(J){return J&&e1(J)?J:void 0}function PZ(J){return jZ(J).isRemote||Dg(J)}function l1(J){return jZ(J).isRemote?sJ():J}var Az=C(()=>{t1();S1();BB();VB()});import{isAbsolute as Lg,join as Fg,resolve as xU}from"path";function uU(J){let z=J.trim();if(!z)return"default";if(z.replace(/\/+$/,"")===L9)return"nextToProject";return"custom"}function F9(J){let z=J.trim();return z===BZ||z.startsWith(`${BZ}/`)}function M9(J,z){if(typeof J!=="string")return null;let Z=J.trim();if(!Z)return null;if(F9(Z)){if(!z)return null;let G=Z.slice(BZ.length).replace(/^\/+/,"");return xU(z,G)}let Y=sJ();if(Z==="~")return Y;let X=Z.startsWith("~/")?Fg(Y,Z.slice(2)):Z;return Lg(X)?X:xU(Y,X)}function EU(J){let z=OJ()[hZ];return M9(typeof z==="string"?z:null,J)}var hZ="worktree.basePath",nq="worktree.basePath.custom",BZ="$project_dir",L9;var O9=C(()=>{t1();wz();L9=`${BZ}/..`});import{createHash as Mg}from"crypto";import PU from"fs";import RJ from"path";function gg(J){return EU(J)??RJ.join(KJ(),hU)}function Ng(){return RJ.join(KJ(),hU)}function vU(J){if(!RJ.isAbsolute(J))throw Error(`worktreeRootFor: repo must be an absolute path, got: ${J}`);return RJ.join(gg(J),$U(J))}function mU(J){if(!RJ.isAbsolute(J))throw Error(`managedWorktreeRootsFor: repo must be an absolute path, got: ${J}`);let z=vU(J),Z=RJ.join(Ng(),$U(J));return[...z===Z?[z]:[z,Z],...Rg.map((X)=>RJ.join(J,X))]}function cU(J,z){if(!z||/[/\\\0]/.test(z))throw Error(`worktreePathFor: invalid slug: ${JSON.stringify(z)}`);return RJ.join(vU(J),z)}async function dU(J){if(e1(J)){let Z=zZ(J)?.basePath;if(!Z)return[];return HX(J).readdir(iU(Z))}let z=new Set;for(let Z of mU(J))try{for(let Y of PU.readdirSync(Z,{withFileTypes:!0}))if(Y.isDirectory())z.add(Y.name)}catch{}return[...z]}function A9(J,z){if(!RJ.isAbsolute(J)||!RJ.isAbsolute(z))return null;let Z=wU(z);for(let Y of mU(J)){let X=wU(Y),G=RJ.relative(X,Z);if(G!==""&&!G.startsWith("..")&&!RJ.isAbsolute(G))return Y}return null}function nU(J,z){return A9(J,z)!==null}function iU(J){return`${Cg(J)}/.kobe/worktrees`}function lU(J,z){if(!z||/[/\\\0]/.test(z))throw Error(`remoteWorktreePathFor: invalid slug: ${JSON.stringify(z)}`);return`${iU(J)}/${z}`}function Cg(J){return J.length>1&&J.endsWith("/")?J.replace(/\/+$/,""):J}function wU(J){try{return PU.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=Mg("sha1").update(RJ.resolve(J)).digest("hex").slice(0,12);return`${Z}-${Y}`}var hU="worktrees",Og=".kobe/worktrees",Ag=".claude/worktrees",Rg;var R9=C(()=>{t1();Az();S1();O9();Rg=[Og,Ag]});class g9{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??IU,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 dU(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 aU=C(()=>{SU();R9()});var pU={};H1(pU,{PLACEHOLDER_TASK_TITLE:()=>mz,Orchestrator:()=>iq});import{realpathSync as bg}from"fs";import{basename as kg,resolve as Ig}from"path";function _U(J){return zZ(J)?.basePath??J}class iq{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 g9((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??mz).trim()||mz,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}=yG(J),Y=this.store.list().find((q)=>q.kind==="main"&&yG(q.repo).key===Z);if(Y)return Y;let X=this.mainTaskLocks.get(Z);if(X)return X;let G=(async()=>{let q=cJ(x1("lastSelectedVendor"),nJ());return await this.store.create({repo:z,title:Sg(z),branch:"",worktreePath:_U(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 _U(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||Iq(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!==Iq(mz,J.id))return;let Z=Iq(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 B9(Z.status,z,Z.id);await this.store.update(Z.id,{status:z})}async setPRStatus(J,z){let Z=this.requireTask(J);if(dq(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 W9;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 U9(Z.id)}try{await this.worktrees.remove(Z.worktreePath,{force:Y})}catch(X){throw new K9(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=yG(J).key;for(let Z of SJ())if(yG(Z).key===z)LB(Z);for(let Z of this.store.list()){if(Z.kind!=="main")continue;if(yG(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)=>jX(Y.worktreePath)));return z.filter((Y)=>!Z.has(jX(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=jX(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&&jX(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)=>jX(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??kg(X.path)).trim()||mz;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 f9(String(J));return z}}function Sg(J){let z=J.split(/[/\\]/).filter(Boolean);return z.length>0?z[z.length-1]??J:J}function yG(J){let z=ez(J);return{repo:z,key:e1(z)?z:jX(z)}}function jX(J){try{return bg(J)}catch{return Ig(J)}}var mz="(new task)";var TG=C(()=>{D1();j9();S1();Yz();s1();D9();aU()});function BX(J,z,Z){if(!z)return J;let Y=HX(z);return Y.ensureReady(),Y.wrapCommand(J,{tty:!0,cwd:Z})}function p1(){let J=[];for(let z of["KOBE_HOME_DIR","KOBE_DAEMON_SOCKET_PATH","KOBE_TMUX_SOCKET"]){let Z=process.env[z];if(Z&&Z.length>0)J.push(`${z}=${Z1(Z)}`)}return J.length>0?`${J.join(" ")} `:""}var xG="@kobe_remote";var DY=C(()=>{Az();Fz()});function lq(){return dJ(LY,!1)}var LY="experimental.autoStatus";var uG=C(()=>{wz()});function N9(){return dJ(FY,!1)}var FY="experimental.dispatcher";var $q=C(()=>{wz()});import{randomUUID as yg}from"crypto";function Rz(J){return`engineCommand.${J}`}function gz(J){return`engineName.${J}`}function MY(J){return x1(gz(J))?.trim()||C9[J]||J}function EG(J){return JJ(J??"claude").defaultCommand}function Tg(J){let z=[],Z=/"([^"]*)"|'([^']*)'|(\S+)/g;for(let Y=Z.exec(J);Y!==null;Y=Z.exec(J))z.push(Y[1]??Y[2]??Y[3]??"");return z}function EJ(J,z){let Z=J??"claude",Y=x1(Rz(Z))?.trim(),X=(()=>{if(Y){let G=Tg(Y);if(G.length>0)return G}return EG(Z)})();return xg(X,Z,z)}function xg(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 fX(J,z){if((z??"claude")!=="claude")return{argv:J,sessionId:null};if(J.some((Y)=>ug.has(Y)))return{argv:J,sessionId:null};let Z=yg();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[...i1(),"api"].map(J).join(" ")}catch{return"kobe api"}}function Eg(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(`
|
|
36
|
+
`)}function wg(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(`
|
|
37
|
+
`)}function Pg(J,z=OY(),Z={}){let Y=[];if((Z.status??lq)())Y.push(Eg(J,z));if((Z.notes??N9)())Y.push(wg(J,z));return Y.length>0?Y.join(`
|
|
38
|
+
|
|
39
|
+
`):null}function aq(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=Pg(Z,OY(),Y);if(!X)return J;return[...J,"--append-system-prompt",X]}function hg(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(`
|
|
40
|
+
`)}function _q(J,z,Z,Y=N9){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",hg(Z)]}var C9,ug;var Xz=C(()=>{QZ();qZ();uG();$q();S1();s1();C9=Object.fromEntries(ZY.map((J)=>[J,JJ(J).displayName]));ug=new Set(["--session-id","--resume","-r","--continue","-c","--from-pr"])});var rU={};H1(rU,{archivedHistoryPreviewEnabled:()=>b9,ARCHIVED_HISTORY_PREVIEW_KEY:()=>wG});function b9(){return dJ(wG,!1)}var wG="experimental.archivedHistoryPreview";var pq=C(()=>{wz()});import{spawnSync as vg}from"child_process";function oU(J,z){if(J==="darwin")return"pbcopy";if(J==="linux"){for(let Z of mg)if(z(Z.binary))return Z.command;return null}return null}function tU(J){let z=[["set-option","-g","set-clipboard","on"]];if(J)for(let Z of cg)for(let Y of dg)z.push(["bind-key","-T",Z,Y,"send-keys","-X","copy-pipe-and-cancel",J]);return z}var mg,sU=(J)=>{try{let z=process.platform==="win32"?"where":"which";return vg(z,[J],{encoding:"utf8"}).status===0}catch{return!1}},cg,dg;var eU=C(()=>{mg=[{binary:"wl-copy",command:"wl-copy"},{binary:"xclip",command:"xclip -selection clipboard -in"},{binary:"xsel",command:"xsel --clipboard --input"}];cg=["copy-mode","copy-mode-vi"],dg=["MouseDragEnd1Pane","y","Enter"]});import{existsSync as JK,readFileSync as ng}from"fs";function zK(){AY=null}function ig(){let J=FV();if(JK(J))return{canonical:J,found:J};let z=J.replace(/\.yaml$/,".yml");if(JK(z))return{canonical:J,found:z};return{canonical:J,found:null}}function rq(){if(AY)return AY;let{canonical:J,found:z}=ig();if(!z)return AY={path:J,exists:!1,doc:null,warnings:[]},AY;let Z=[],Y=null;try{let X=ng(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 AY={path:J,exists:!0,doc:Y,warnings:Z},AY}var AY=null;var k9=C(()=>{t1()});function WX(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 og(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=ag[j];if(!B)return{error:`"${J}": unknown modifier "${j}" (use ctrl / cmd / alt / shift)`};G.add(B)}if(X=_g[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=rg.filter((j)=>G.has(j)).join("+"),H=q?`${q}+${X}`:X;if(X.length>1&&!pg.has(X))return{chord:H,warning:`"${J}": unrecognized key name "${X}" \u2014 the chord may never fire`};return{chord:H}}function oq(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}function sg(J){if(J==="darwin")return["darwin","macos","mac"];if(J==="win32")return["win32","windows"];return[J]}function tg(J){if(!oq(J))return null;let z=J.bindings;if(oq(z))return z;return J}function sq(J,z,Z){let Y=[];if(J===null||J===void 0)return{entries:[],warnings:Y};if(!oq(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(oq(J.bindings))G.push(J.bindings);else Y.push("`bindings:` must be a mapping of id \u2192 chord(s)");for(let q of sg(z)){let H=J[q];if(H===void 0)continue;let j=tg(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=og(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 eg(J,z){return J===z||J==="global"||z==="global"}function ZK(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=I9[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=lg[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&&$g.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(!eg(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 I9,lg,$g,ag,_g,pg,rg;var tq=C(()=>{I9={"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)"};lg={"sidebar.nav":WX("down","up"),"files.nav":WX("down","up"),"sidebar.search.nav":WX("down","up"),"files.hierarchy":WX("collapse","expand"),"sidebar.view":WX("previous view","next view"),"files.tab":WX("previous tab","next tab")},$g=new Set(["global","workspace","terminal"]),ag={ctrl:"ctrl",control:"ctrl",ctl:"ctrl",cmd:"cmd",command:"cmd",meta:"cmd",super:"cmd",win:"cmd",alt:"alt",option:"alt",opt:"alt",shift:"shift"},_g={esc:"escape",spacebar:"space",pgup:"pageup",pgdn:"pagedown",pgdown:"pagedown"},pg=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}`)]),rg=["ctrl","cmd","alt","shift"]});function VX(J){return J in YK}function NY(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=zN[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 GK(){let J={};for(let[Z,Y]of Object.entries(gY)){let X=NY(Y,{allowBare:VX(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=vZ.map((Z)=>{let Y=NY(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 S9(J){let z=GK(),Z=new Set;for(let Y of J){if(!Y.id.startsWith("tmux."))continue;if(Y.id===cz){if(Y.keys.length===0){z.focus=[null,null,null,null],Z.add(cz);continue}if(Y.keys.length!==vZ.length){z.warnings.push(`${cz}: 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=NY(B);if("error"in V){z.warnings.push(`${cz}: ${V.error} \u2014 keeping the default`),j=!1;break}H.push({chord:B,key:V.key})}if(!j)continue;z.focus=H,Z.add(cz);continue}if(!(Y.id in gY)){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=NY(G,{allowBare:VX(X)});if("error"in q){z.warnings.push(`${X}: ${q.error} \u2014 keeping the default`);continue}if(G!==gY[X])Z.add(X);z.binds[X]={chord:G,key:q.key}}return z.overridden=Z,z}function y9(J){return J.startsWith("tmux.")?{allowShiftCharacter:!0}:{}}function QK(){RY=null}function eq(){if(RY)return RY;let J=rq();if(!J.exists||J.doc===null)return RY=GK(),RY;let z=sq(J.doc,process.platform,{chordOptsFor:y9}),Z=z.warnings.filter((X)=>X.startsWith("tmux.")),Y=S9(z.entries);Y.warnings=[...Z,...Y.warnings];for(let X of Y.warnings)console.warn(`[kobe/keybindings] ${X}`);return RY=Y,RY}var JN,YK,XK,gY,cz="tmux.focus",vZ,zN,RY=null;var JH=C(()=>{k9();tq();JN={"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"},YK={"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"},XK=["F6","F7","F8","F9","F10","F11"],gY={...JN,...YK};vZ=["ctrl+h","ctrl+j","ctrl+k","ctrl+l"],zN={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 PG(J,z){let Z=null;for(let X=0;X<24;X++){let G=await UX(J);if(G){if(!z)return{pane:G,ready:!0};let q=(await KX(G)).trim();if(q.length>0&&q===Z)return{pane:G,ready:!0};Z=q}await qK(250)}return{pane:await UX(J)||await T9(J),ready:!1}}async function hG(J,z){let Z=`kobe-api-${J.replace(/[^A-Za-z0-9]/g,"")}`;await i0(["set-buffer","-b",Z,"--",z]),await i0(["paste-buffer","-p","-d","-b",Z,"-t",J]),await qK(ZN),await vG(J,"Enter")}async function HK(J,z){let{pane:Z}=await PG(J,!0);if(!Z)return;await hG(Z,z.text)}var qK=(J)=>new Promise((z)=>setTimeout(z,J)),ZN=150;var zH=C(()=>{w1()});function jK(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 DX;var ZH=C(()=>{DX={$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 LX;var YH=C(()=>{LX={$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 FX;var XH=C(()=>{FX={$schema:"https://opencode.ai/theme.json",defs:{background:"#282a36",currentLine:"#44475a",selection:"#44475a",foreground:"#f8f8f2",comment:"#6272a4",cyan:"#8be9fd",green:"#50fa7b",orange:"#ffb86c",pink:"#ff79c6",purple:"#bd93f9",red:"#ff5555",yellow:"#f1fa8c"},theme:{primary:{dark:"purple",light:"purple"},secondary:{dark:"pink",light:"pink"},accent:{dark:"cyan",light:"cyan"},error:{dark:"red",light:"red"},warning:{dark:"yellow",light:"yellow"},success:{dark:"green",light:"green"},info:{dark:"orange",light:"orange"},text:{dark:"foreground",light:"#282a36"},textMuted:{dark:"comment",light:"#6272a4"},background:{dark:"#282a36",light:"#f8f8f2"},backgroundPanel:{dark:"#21222c",light:"#e8e8e2"},backgroundElement:{dark:"currentLine",light:"#d8d8d2"},border:{dark:"currentLine",light:"#c8c8c2"},borderActive:{dark:"purple",light:"purple"},borderSubtle:{dark:"#191a21",light:"#e0e0e0"},diffAdded:{dark:"green",light:"green"},diffRemoved:{dark:"red",light:"red"},diffContext:{dark:"comment",light:"#6272a4"},diffHunkHeader:{dark:"comment",light:"#6272a4"},diffHighlightAdded:{dark:"green",light:"green"},diffHighlightRemoved:{dark:"red",light:"red"},diffAddedBg:{dark:"#1a3a1a",light:"#e0ffe0"},diffRemovedBg:{dark:"#3a1a1a",light:"#ffe0e0"},diffContextBg:{dark:"#21222c",light:"#e8e8e2"},diffLineNumber:{dark:"#989aa4",light:"#686865"},diffAddedLineNumberBg:{dark:"#1a3a1a",light:"#e0ffe0"},diffRemovedLineNumberBg:{dark:"#3a1a1a",light:"#ffe0e0"},markdownText:{dark:"foreground",light:"#282a36"},markdownHeading:{dark:"purple",light:"purple"},markdownLink:{dark:"cyan",light:"cyan"},markdownLinkText:{dark:"pink",light:"pink"},markdownCode:{dark:"green",light:"green"},markdownBlockQuote:{dark:"comment",light:"#6272a4"},markdownEmph:{dark:"yellow",light:"yellow"},markdownStrong:{dark:"orange",light:"orange"},markdownHorizontalRule:{dark:"comment",light:"#6272a4"},markdownListItem:{dark:"purple",light:"purple"},markdownListEnumeration:{dark:"cyan",light:"cyan"},markdownImage:{dark:"cyan",light:"cyan"},markdownImageText:{dark:"pink",light:"pink"},markdownCodeBlock:{dark:"foreground",light:"#282a36"},syntaxComment:{dark:"comment",light:"#6272a4"},syntaxKeyword:{dark:"pink",light:"pink"},syntaxFunction:{dark:"green",light:"green"},syntaxVariable:{dark:"foreground",light:"#282a36"},syntaxString:{dark:"yellow",light:"yellow"},syntaxNumber:{dark:"purple",light:"purple"},syntaxType:{dark:"cyan",light:"cyan"},syntaxOperator:{dark:"pink",light:"pink"},syntaxPunctuation:{dark:"foreground",light:"#282a36"}}}});var MX;var GH=C(()=>{MX={$schema:"https://opencode.ai/theme.json",defs:{nord0:"#2E3440",nord1:"#3B4252",nord2:"#434C5E",nord3:"#4C566A",nord4:"#D8DEE9",nord5:"#E5E9F0",nord6:"#ECEFF4",nord7:"#8FBCBB",nord8:"#88C0D0",nord9:"#81A1C1",nord10:"#5E81AC",nord11:"#BF616A",nord12:"#D08770",nord13:"#EBCB8B",nord14:"#A3BE8C",nord15:"#B48EAD"},theme:{primary:{dark:"nord8",light:"nord10"},secondary:{dark:"nord9",light:"nord9"},accent:{dark:"nord7",light:"nord7"},error:{dark:"nord11",light:"nord11"},warning:{dark:"nord12",light:"nord12"},success:{dark:"nord14",light:"nord14"},info:{dark:"nord8",light:"nord10"},text:{dark:"nord6",light:"nord0"},textMuted:{dark:"#8B95A7",light:"nord1"},background:{dark:"nord0",light:"nord6"},backgroundPanel:{dark:"nord1",light:"nord5"},backgroundElement:{dark:"nord2",light:"nord4"},border:{dark:"nord2",light:"nord3"},borderActive:{dark:"nord3",light:"nord2"},borderSubtle:{dark:"nord2",light:"nord3"},diffAdded:{dark:"nord14",light:"nord14"},diffRemoved:{dark:"nord11",light:"nord11"},diffContext:{dark:"#8B95A7",light:"nord3"},diffHunkHeader:{dark:"#8B95A7",light:"nord3"},diffHighlightAdded:{dark:"nord14",light:"nord14"},diffHighlightRemoved:{dark:"nord11",light:"nord11"},diffAddedBg:{dark:"#3B4252",light:"#E5E9F0"},diffRemovedBg:{dark:"#3B4252",light:"#E5E9F0"},diffContextBg:{dark:"nord1",light:"nord5"},diffLineNumber:{dark:"#a9aeb6",light:"textMuted"},diffAddedLineNumberBg:{dark:"#3B4252",light:"#E5E9F0"},diffRemovedLineNumberBg:{dark:"#3B4252",light:"#E5E9F0"},markdownText:{dark:"nord4",light:"nord0"},markdownHeading:{dark:"nord8",light:"nord10"},markdownLink:{dark:"nord9",light:"nord9"},markdownLinkText:{dark:"nord7",light:"nord7"},markdownCode:{dark:"nord14",light:"nord14"},markdownBlockQuote:{dark:"#8B95A7",light:"nord3"},markdownEmph:{dark:"nord12",light:"nord12"},markdownStrong:{dark:"nord13",light:"nord13"},markdownHorizontalRule:{dark:"#8B95A7",light:"nord3"},markdownListItem:{dark:"nord8",light:"nord10"},markdownListEnumeration:{dark:"nord7",light:"nord7"},markdownImage:{dark:"nord9",light:"nord9"},markdownImageText:{dark:"nord7",light:"nord7"},markdownCodeBlock:{dark:"nord4",light:"nord0"},syntaxComment:{dark:"#8B95A7",light:"nord3"},syntaxKeyword:{dark:"nord9",light:"nord9"},syntaxFunction:{dark:"nord8",light:"nord8"},syntaxVariable:{dark:"nord7",light:"nord7"},syntaxString:{dark:"nord14",light:"nord14"},syntaxNumber:{dark:"nord15",light:"nord15"},syntaxType:{dark:"nord7",light:"nord7"},syntaxOperator:{dark:"nord9",light:"nord9"},syntaxPunctuation:{dark:"nord4",light:"nord0"}}}});var OX;var QH=C(()=>{OX={$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 AX;var qH=C(()=>{AX={$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 RX;var HH=C(()=>{RX={$schema:"https://opencode.ai/theme.json",defs:{darkStep1:"#1a1b26",darkStep2:"#1e2030",darkStep3:"#222436",darkStep4:"#292e42",darkStep5:"#3b4261",darkStep6:"#545c7e",darkStep7:"#737aa2",darkStep8:"#9099b2",darkStep9:"#82aaff",darkStep10:"#89b4fa",darkStep11:"#828bb8",darkStep12:"#c8d3f5",darkRed:"#ff757f",darkOrange:"#ff966c",darkYellow:"#ffc777",darkGreen:"#c3e88d",darkCyan:"#86e1fc",darkPurple:"#c099ff",lightStep1:"#e1e2e7",lightStep2:"#d5d6db",lightStep3:"#c8c9ce",lightStep4:"#b9bac1",lightStep5:"#a8aecb",lightStep6:"#9699a8",lightStep7:"#737a8c",lightStep8:"#5a607d",lightStep9:"#2e7de9",lightStep10:"#1a6ce7",lightStep11:"#8990a3",lightStep12:"#3760bf",lightRed:"#f52a65",lightOrange:"#b15c00",lightYellow:"#8c6c3e",lightGreen:"#587539",lightCyan:"#007197",lightPurple:"#9854f1"},theme:{primary:{dark:"darkStep9",light:"lightStep9"},secondary:{dark:"darkPurple",light:"lightPurple"},accent:{dark:"darkOrange",light:"lightOrange"},error:{dark:"darkRed",light:"lightRed"},warning:{dark:"darkOrange",light:"lightOrange"},success:{dark:"darkGreen",light:"lightGreen"},info:{dark:"darkStep9",light:"lightStep9"},text:{dark:"darkStep12",light:"lightStep12"},textMuted:{dark:"darkStep11",light:"lightStep11"},background:{dark:"darkStep1",light:"lightStep1"},backgroundPanel:{dark:"darkStep2",light:"lightStep2"},backgroundElement:{dark:"darkStep3",light:"lightStep3"},border:{dark:"darkStep7",light:"lightStep7"},borderActive:{dark:"darkStep8",light:"lightStep8"},borderSubtle:{dark:"darkStep6",light:"lightStep6"},diffAdded:{dark:"#4fd6be",light:"#1e725c"},diffRemoved:{dark:"#c53b53",light:"#c53b53"},diffContext:{dark:"#828bb8",light:"#7086b5"},diffHunkHeader:{dark:"#828bb8",light:"#7086b5"},diffHighlightAdded:{dark:"#b8db87",light:"#4db380"},diffHighlightRemoved:{dark:"#e26a75",light:"#f52a65"},diffAddedBg:{dark:"#20303b",light:"#d5e5d5"},diffRemovedBg:{dark:"#37222c",light:"#f7d8db"},diffContextBg:{dark:"darkStep2",light:"lightStep2"},diffLineNumber:{dark:"#8f909a",light:"#59595b"},diffAddedLineNumberBg:{dark:"#1b2b34",light:"#c5d5c5"},diffRemovedLineNumberBg:{dark:"#2d1f26",light:"#e7c8cb"},markdownText:{dark:"darkStep12",light:"lightStep12"},markdownHeading:{dark:"darkPurple",light:"lightPurple"},markdownLink:{dark:"darkStep9",light:"lightStep9"},markdownLinkText:{dark:"darkCyan",light:"lightCyan"},markdownCode:{dark:"darkGreen",light:"lightGreen"},markdownBlockQuote:{dark:"darkYellow",light:"lightYellow"},markdownEmph:{dark:"darkYellow",light:"lightYellow"},markdownStrong:{dark:"darkOrange",light:"lightOrange"},markdownHorizontalRule:{dark:"darkStep11",light:"lightStep11"},markdownListItem:{dark:"darkStep9",light:"lightStep9"},markdownListEnumeration:{dark:"darkCyan",light:"lightCyan"},markdownImage:{dark:"darkStep9",light:"lightStep9"},markdownImageText:{dark:"darkCyan",light:"lightCyan"},markdownCodeBlock:{dark:"darkStep12",light:"lightStep12"},syntaxComment:{dark:"darkStep11",light:"lightStep11"},syntaxKeyword:{dark:"darkPurple",light:"lightPurple"},syntaxFunction:{dark:"darkStep9",light:"lightStep9"},syntaxVariable:{dark:"darkRed",light:"lightRed"},syntaxString:{dark:"darkGreen",light:"lightGreen"},syntaxNumber:{dark:"darkOrange",light:"lightOrange"},syntaxType:{dark:"darkYellow",light:"lightYellow"},syntaxOperator:{dark:"darkCyan",light:"lightCyan"},syntaxPunctuation:{dark:"darkStep12",light:"lightStep12"}}}});var BK;var fK=C(()=>{ZH();YH();XH();GH();QH();qH();HH();BK={claude:DX,conductor:LX,nord:MX,opencode:OX,dracula:FX,tokyonight:RX,"osaka-jade":AX}});function BN(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 WK(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 BN(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 jH(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}function BH(J){if(!jH(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(!jH(Z))return{ok:!1,reason:"`theme` must be an object map"};if("defs"in z&&z.defs!==void 0){if(!jH(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(!jH(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 x9=()=>{};import{readFileSync as fN,readdirSync as WN}from"fs";import{join as VK}from"path";function gX(){return VK(KJ(),"themes")}function mG(){let J=gX(),z;try{z=WN(J)}catch{return[]}let Z=[];for(let Y of z){if(!Y.endsWith(".json"))continue;let X=VK(J,Y),G;try{let j=fN(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=BH(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 fH=C(()=>{t1();x9()});import{readFileSync as VN}from"fs";function KN(){try{let J=JSON.parse(VN(tJ(),"utf8")),z=typeof J.activeTheme==="string"&&J.activeTheme?J.activeTheme:"claude",Z=typeof J.focusAccent==="string"&&UN.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 DN(J){return mG().find((Z)=>Z.name===J)?.theme??BK[J]??null}function Nz(J,...z){for(let Z of z){let Y=WK(J,Z);if(Y)return Y}return null}function UK(J,z){let Z=Nz(J,"text"),Y=Nz(J,"background"),X=Nz(J,"textMuted","text"),G=Nz(J,"backgroundPanel","background"),q=Nz(J,"backgroundElement","backgroundPanel","background"),H=Nz(J,"backgroundMenu","backgroundElement","backgroundPanel","background"),j=Nz(J,"selectedListItemText","background"),B=Nz(J,z,"primary","borderActive","border","text");return{border:Nz(J,"border","text"),activeBorder:B,statusBg:G,statusFg:X,statusMutedFg:X,windowFg:X,currentWindowBg:q,currentWindowFg:B,activityFg:Nz(J,"info","primary","text"),bellFg:Nz(J,"warning","error","primary","text"),messageBg:H,messageFg:Z,messageCommandFg:B,modeBg:B,modeFg:j??Y}}function Gz(J){let z=[];if(J.bg)z.push(`bg=${J.bg}`);if(J.fg)z.push(`fg=${J.fg}`);if(z.length===0)return null;if(J.attrs)z.push(...J.attrs);return z.join(",")}function DK(J){let z=Gz({bg:J.statusBg,fg:J.statusFg}),Z=Gz({bg:J.statusBg,fg:J.statusMutedFg}),Y=Gz({bg:J.statusBg,fg:J.windowFg});return[{key:"border",option:"pane-border-style",showFlag:"-gwqv",setFlag:"-gw",unsetFlag:"-gwu",value:Gz({fg:J.border})},{key:"active",option:"pane-active-border-style",showFlag:"-gwqv",setFlag:"-gw",unsetFlag:"-gwu",value:Gz({fg:J.activeBorder})},{key:"status",option:"status-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:z},{key:"status-left",option:"status-left-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Z},{key:"status-right",option:"status-right-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Z},{key:"window",option:"window-status-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Y},{key:"current-window",option:"window-status-current-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Gz({bg:J.currentWindowBg,fg:J.currentWindowFg,attrs:["bold"]})},{key:"activity-window",option:"window-status-activity-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Gz({bg:J.statusBg,fg:J.activityFg})},{key:"bell-window",option:"window-status-bell-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Gz({bg:J.statusBg,fg:J.bellFg,attrs:["bold"]})},{key:"last-window",option:"window-status-last-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Gz({bg:J.statusBg,fg:J.statusFg})},{key:"message",option:"message-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Gz({bg:J.messageBg,fg:J.messageFg})},{key:"message-command",option:"message-command-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Gz({bg:J.messageBg,fg:J.messageCommandFg,attrs:["bold"]})},{key:"mode",option:"mode-style",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:Gz({bg:J.modeBg,fg:J.modeFg})},{key:"display-panes",option:"display-panes-colour",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:J.border},{key:"display-panes-active",option:"display-panes-active-colour",showFlag:"-gqv",setFlag:"-g",unsetFlag:"-gu",value:J.activeBorder}]}function LN(J){let z=new Set(J.marker.split(",").map((G)=>G.trim()).filter(Boolean)),Z=[],Y=[];for(let G of DK(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",u9,X]:["set-option","-gu",u9]);return Z}async function KK(J){let{code:z,stdout:Z}=await c0(J);return z===0?Z.trim():""}async function CY(){try{let J=KN(),z=J.enabled?DN(J.themeName):null,Z=z?UK(z,J.focusAccentSlot):UK({theme:{}},J.focusAccentSlot),Y=DK(Z),[X,...G]=await Promise.all([KK(["show-options","-gqv",u9]),...Y.map((j)=>KK(["show-options",j.showFlag,j.option]))]),q=Object.fromEntries(Y.map((j,B)=>[j.key,G[B]??""])),H=LN({marker:X,current:q,hexes:Z});if(H.length>0)await r1(H)}catch{}}var u9="@kobe_border_theme",UN;var WH=C(()=>{t1();w1();fK();fH();UN=["primary","success","info"]});function LK(){return dJ(VH,!0)}function UH(){return dJ(FK,!1)}function MK(J){sQ(FK,J)}var VH="zen.keepTasks",FK="zen.active";var E9=C(()=>{wz()});var KH={};H1(KH,{recordGen:()=>mZ,isLatestGen:()=>NK,genAgeMs:()=>NN,coalesceLayoutWork:()=>CN,RESIZE_GUARD_MS:()=>gN,LAYOUT_COALESCE_MS:()=>RK});import{createHash as FN,randomUUID as MN}from"crypto";import{mkdirSync as ON,readFileSync as OK,renameSync as AN,writeFileSync as RN}from"fs";import{join as AK}from"path";function gK(){return AK(KJ(),"layout-coord")}function w9(J,z){let Z=FN("sha1").update(J).digest("hex").slice(0,16);return AK(gK(),`${Z}.${z}`)}function mZ(J,z){let Z=MN();try{ON(gK(),{recursive:!0});let Y=w9(J,z),X=`${Y}.${Z}.tmp`;RN(X,`${Date.now()}
|
|
41
|
+
${Z}`),AN(X,Y)}catch{}return Z}function NK(J,z,Z){try{return OK(w9(J,z),"utf8").split(`
|
|
42
|
+
`)[1]?.trim()===Z}catch{return!0}}function NN(J,z,Z=Date.now()){try{let Y=Number.parseInt(OK(w9(J,z),"utf8").split(`
|
|
43
|
+
`)[0]??"",10);return Number.isFinite(Y)?Z-Y:Number.POSITIVE_INFINITY}catch{return Number.POSITIVE_INFINITY}}async function CN(J,z,Z,Y=RK){let X=mZ(J,z);if(Y>0)await new Promise((G)=>setTimeout(G,Y));if(!NK(J,z,X))return;await Z()}var RK=120,gN=400;var NX=C(()=>{t1()});function kN(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 IN(J){let z=J.indexOf("-t");return z>=0&&z+1<J.length?J[z+1]??null:null}function SN(J,z){return J.filter((Z)=>{let Y=IN(Z);return Y===null||z.has(Y)})}function CK(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 DH(J){let{code:z,stdout:Z}=await c0(["list-panes","-s","-t",`=${J}`,"-F",bN]);if(z!==0)return null;return kN(Z)}async function bK(J,z){if(z.length===0)return;let Z=await DH(J),Y=Z?SN(z,new Set(Z.map((X)=>X.paneId))):z;if(Y.length>0)await r1(Y)}function kK(J,z){let Z=i1(),Y=p1(),X=[];for(let G of J){let q=G.role==="tasks"?uZ(Z,{initialTaskId:z.taskId}):eY({cwd:z.cwd,taskId:z.taskId,claudePaneId:G.claudePaneId,cliInvocation:Z,vendor:z.vendor});X.push(["respawn-pane","-k","-t",G.paneId,"-c",l1(z.cwd),xJ(Y+q)],["set-option","-p","-t",G.paneId,"@kobe_role",G.role],["set-option","-p","-t",G.paneId,Cz,e0])}return X}function yN(J,z){if(J===0)return"no-engine-pane";return z===0?"switched":"respawn-failed"}async function IK(J,z,Z,Y,X){let G=await DH(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=tY(p1(),i1(),J),B=[];for(let f of q){let U=fX(Z,X),L=xJ(BX(TJ(U.argv),Y,z),j);B.push(["respawn-pane","-k","-c",H,"-t",f.paneId,L]),B.push(U.sessionId?["set-window-option","-t",f.paneId,dz,U.sessionId]:["set-window-option","-u","-t",f.paneId,dz])}let V=await r1(B);return yN(q.length,V)}async function SK(){return(await nz()).rightColumnResizeArgs}async function P9(J,z={}){let{tasksWidth:Z,rightColumnResizeArgs:Y}=await nz(),X=await DH(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 bY(J,z){mZ(J,"resize");let{rows:Z,commands:Y}=await P9(J);if(!Z)return;let X=[...Y];if(z)X.push(...kK(CK(Z,{currentVersion:e0,force:!1,vendorChanged:z.vendorChanged}),z));await bK(J,X)}async function yK(J){if(!await F1(J))return;await bY(J)}async function h9(J){let{code:z,stdout:Z}=await c0(["list-panes","-t",`=${J}`,"-F",`#{@kobe_role} #{pane_width} #{pane_height} #{window_width} #{window_height} #{window_zoomed_flag} #{${Lz}} #{${yJ}}`]);if(z!==0)return;let Y=Z.split(`
|
|
45
|
+
`).map((B)=>B.split("\t")).filter((B)=>(B[0]?.trim()??"")!=="");if(Y.length===0)return;if(Y.some((B)=>B[5]?.trim()==="1"))return;if(Y.some((B)=>(B[6]?.trim()??"")!==""))return;if(Y.some((B)=>(B[7]?.trim()??"")!==""))return;if(!Y.some((B)=>B[0]?.trim()==="shell"))return;let X=Number.parseInt(Y[0][3]?.trim()??"",10),G=Number.parseInt(Y[0][4]?.trim()??"",10),q=[],H=Y.find(([B])=>B?.trim()==="tasks");if(H){let B=Number.parseInt(H[1]?.trim()??"",10);if(Number.isFinite(B)&&B>0)q.push(["set-option","-s",Vq,`${xB(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)?HY(100*B/X):null,U=Number.isFinite(V)?HY(100*V/G):null;if(f!==null)q.push(["set-option","-s",Uq,`${f}`]);if(U!==null)q.push(["set-option","-s",Kq,`${U}`])}if(q.length>0)await r1(q)}function TN(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 TK(J){let{code:z,stdout:Z}=await c0(["list-panes","-t",`=${J}`,"-F",`#{@kobe_role} #{window_zoomed_flag} #{${Lz}} #{${yJ}}`]);if(z!==0||!TN(Z))return;await h9(J)}async function CX(J){let z=await wJ(J,["@kobe_worktree","@kobe_task","@kobe_vendor"]),Z=z["@kobe_worktree"]||process.cwd(),Y=z["@kobe_task"]||void 0,X=z["@kobe_vendor"]||void 0,G=await DH(J);if(!G)return;let q=kK(CK(G,{currentVersion:e0,force:!0}),{cwd:Z,taskId:Y,vendor:X});await bK(J,q),await CY()}var Cz="@kobe_pane_version",bN;var cG=C(()=>{QZ();Xz();Az();w1();Fz();WH();bJ();DY();NX();bN=`#{window_id} #{pane_id} #{@kobe_role} #{${Cz}} #{pane_width}`});var _9={};H1(_9,{syncSessionZen:()=>MH,runLayoutAction:()=>kY,resolveShellPane:()=>LH,planWorkspaceSplit:()=>uK,parseLayoutPaneRows:()=>xK,expandedTerminalHeightPercent:()=>EK,engineTabExit:()=>rN,applyZenToNewWindow:()=>a9});function xK(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 uK(J){let z=J.find((Y)=>Y.role===jY);if(!z)return{kind:"missing-engine"};let Z=J.filter((Y)=>Y.role===LG);if(Z.length+1>=TB)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 LH(J){return J.find((z)=>z.role===Dz)??J.find((z)=>z.role==="")}function EK(J){return 100-(HY(J??Number.NaN)??MG)}async function $J(J,z){let Z=z?.trim()||`=${J}`,{code:Y,stdout:X}=await c0(["list-panes","-t",Z,"-F",xN]);return Y===0?xK(X):null}async function v9(J){let{code:z,stdout:Z}=await c0(["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 fZ(J,z){let{code:Z,stdout:Y}=await c0(["show-options","-wqv","-t",J,z]);return Z===0?Y.trim():""}async function c9(J,z,Z){await i0(["set-window-option","-t",J,z,Z])}async function cZ(J,z){await i0(["set-window-option","-u","-t",J,z])}async function d9(J){let{code:z,stdout:Z}=await c0(["display-message","-p","-t",J,"#{pane_id}"]);return z===0&&Z.trim()===J}async function P1(J,z){await i0(["display-message","-t",J,z])}async function FH(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 uN(J){let z=i1(),Z=p1();return xJ(Z+eY({cwd:J.cwd,taskId:J.taskId,claudePaneId:J.enginePaneId,cliInvocation:z,vendor:J.vendor}))}async function EN(J,z){return z?.trim()||await v9(J)}async function wN(J,z){let Z=await $J(J,z);if(!Z)return;let Y=uK(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 ${TB} panes`);return}let{cwd:X}=await FH(J),{code:G,stdout:q}=await c0(["split-window",Y.direction,"-t",Y.targetPane,"-l","50%","-c",l1(X),"-P","-F","#{pane_id}",xJ("true")]),H=q.trim();if(G!==0||!H)return;await r1([["set-option","-p","-t",H,"@kobe_role",LG],["select-pane","-t",H]])}async function PN(J,z){let Z=await $J(J,z);if(!Z)return;let Y=Z.filter((q)=>q.role===LG);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 i0(["kill-pane","-t",G.paneId])}async function hN(J,z){let Z=await $J(J,z);if(!Z)return;let Y=Z.filter((X)=>X.role===LG);if(Y.length===0){await P1(z,"kobe: no workspace splits to reset");return}await r1(Y.map((X)=>["kill-pane","-t",X.paneId]))}async function wK(){return(await nz()).tasksWidth}async function vN(J){let{cwd:z,taskId:Z}=await FH(J),Y=i1(),X=p1();return{cwd:z,command:xJ(X+uZ(Y,{initialTaskId:Z}))}}async function PK(J,z){let Z=await $J(J,z);if(!Z)return;let Y=Z.find((A)=>A.role===Kz);if(Y){await i0(["kill-pane","-t",Y.paneId]);return}let X=LH(Z),G=Z.find((A)=>A.role===jY);if(!G){await P1(z,"kobe: cannot restore file pane in this layout");return}let{cwd:q,taskId:H,vendor:j}=await FH(J),B=uN({cwd:q,taskId:H,vendor:j,enginePaneId:G.paneId}),V=X?["split-window","-v","-b","-t",X.paneId,"-l",`${await mN()}%`,"-c",l1(q),"-P","-F","#{pane_id}",B]:["split-window","-h","-t",G.paneId,"-l",`${await n9()}%`,"-c",l1(q),"-P","-F","#{pane_id}",B],{code:f,stdout:U}=await c0(V),L=U.trim();if(f!==0||!L)return;let O=[["set-option","-p","-t",L,"@kobe_role",Kz],["set-option","-p","-t",L,Cz,e0]];if(X?.role==="")O.push(["set-option","-p","-t",X.paneId,"@kobe_role",Dz]);await r1(O)}async function mN(){return(await nz()).opsHeightPct}async function n9(){return(await nz()).rightColumnWidthPct}async function hK(){return EK((await nz()).opsHeightPct)}async function cN(J){let{code:z,stdout:Z}=await c0(["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 vK(J,z){let Z=await cN(J),Y=K7(z);while(Z.has(Y))Y++;return Y}async function mK(J){let z=FG(J);if(await F1(z))return z;return await i0(["new-session","-d","-s",z,"-n","hidden-panes","-c",l1(process.cwd()),"while :; do sleep 3600; done"]),z}async function i9(J){let z=FG(J);if(!await F1(z))return;let{code:Z,stdout:Y}=await c0(["list-panes","-s","-t",`=${z}`,"-F","#{@kobe_role}"]);if(Z!==0)return;if(!Y.split(`
|
|
50
|
+
`).some((G)=>{let q=G.trim();return q===Dz||q===zz}))await i0(["kill-session","-t",`=${z}`])}async function dN(J,z){await cK(J,z,Lz)}async function nN(J,z){await cK(J,z,yJ)}async function cK(J,z,Z){let Y=await fZ(z,Z);if(!Y)return;if(await d9(Y))await i0(["kill-pane","-t",Y]);await cZ(z,Z)}async function m9(J,z){await dN(J,z),await nN(J,z),await i9(J)}function dK(J){return J.find((z)=>z.role===jY)??J[0]}async function l9(J,z,Z){let Y=dK(Z);if(!Y)return await P1(z,"kobe: cannot restore Tasks pane in this layout"),!1;let X=await wK(),{cwd:G,command:q}=await vN(J),{code:H,stdout:j}=await c0(["split-window","-h","-b","-t",Y.paneId,"-l",`${X}`,"-c",l1(G),"-P","-F","#{pane_id}",q]),B=j.trim();if(H!==0||!B)return!1;return await r1([["set-option","-p","-t",B,"@kobe_role",zz],["set-option","-p","-t",B,Cz,e0],["select-pane","-t",B]]),await cZ(z,yJ),await P1(z,"kobe: Tasks pane restored"),!0}async function nK(J,z,Z){let Y=await mK(J),X=await vK(Y,z),{code:G,stdout:q}=await c0(["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 c9(z,yJ,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 d9(Z)){await cZ(z,yJ);let q=Y.find((H)=>H.role===zz);if(q){await i0(["select-pane","-t",q.paneId]);return}await l9(J,z,Y);return}let X=dK(Y);if(!X){await P1(z,"kobe: cannot restore Tasks pane in this layout");return}if(await i0(["join-pane","-h","-b","-s",Z,"-t",X.paneId,"-l",`${await wK()}`])!==0){await P1(z,"kobe: could not restore Tasks pane");return}await r1([["set-option","-p","-t",Z,"@kobe_role",zz],["set-option","-p","-t",Z,Cz,e0],["select-pane","-t",Z]]),await cZ(z,yJ),await i9(J),await P1(z,"kobe: Tasks pane restored")}async function iN(J,z){let Z=await fZ(z,yJ);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 nK(J,z,X);return}await l9(J,z,Y)}async function lN(J,z){let Z=await fZ(z,yJ);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 i0(["select-pane","-t",X.paneId]);return}await l9(J,z,Y)}async function iK(J,z,Z){if(Z.role==="")await i0(["set-option","-p","-t",Z.paneId,"@kobe_role",Dz]);let Y=await mK(J),X=await vK(Y,z),{code:G,stdout:q}=await c0(["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 c9(z,Lz,H),await P1(z,"kobe: Terminal pane hidden")}async function lK(J,z,Z){let Y=Z.find((V)=>V.role===Kz),X=Z.find((V)=>V.role===jY);if(!Y&&!X)return await P1(z,"kobe: cannot restore terminal pane in this layout"),!1;let{cwd:G}=await FH(J),q=Y?["split-window","-v","-t",Y.paneId,"-l",`${await hK()}%`,"-c",l1(G),"-P","-F","#{pane_id}"]:["split-window","-h","-t",X?.paneId??"","-l",`${await n9()}%`,"-c",l1(G),"-P","-F","#{pane_id}"],{code:H,stdout:j}=await c0(q),B=j.trim();if(H!==0||!B)return!1;return await i0(["set-option","-p","-t",B,"@kobe_role",Dz]),await cZ(z,Lz),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 d9(Z)){await cZ(z,Lz),await lK(J,z,Y);return}let X=Y.find((B)=>B.role===Kz),G=Y.find((B)=>B.role===jY);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 hK()}%`]:["join-pane","-h","-s",Z,"-t",G?.paneId??"","-l",`${await n9()}%`];if(await i0(q)!==0){await P1(z,"kobe: could not restore terminal pane");return}await i0(["set-option","-p","-t",Z,"@kobe_role",Dz]),await cZ(z,Lz),await i9(J),Y=await $J(J,z);let j=Y?.find((B)=>B.paneId===Z);if(j)await i0(["select-pane","-t",j.paneId]);await P1(z,"kobe: Terminal pane restored")}async function $N(J,z){let Z=await fZ(z,Lz);if(Z){await $K(J,z,Z);return}let Y=await $J(J,z);if(!Y)return;let X=LH(Y);if(X){await iK(J,z,X);return}await lK(J,z,Y)}async function aN(J){let z=UH();if(MK(!z),z){await rK(J);return}await pK(J)}async function MH(J){if(!await F1(J))return;let z=UH(),Z=(await IY(J,sY)).length>0;if(z===Z)return;if(z)await pK(J);else await rK(J)}async function aK(J){let{code:z,stdout:Z}=await c0(["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 _K(J,z){return!!(await $J(J,z))?.some((Y)=>Y.role===jY)}async function pK(J){let z=await aK(J);for(let Z of z){if(!await _K(J,Z))continue;if(await fZ(Z,xZ))continue;await oK(J,Z)}await WZ(J,sY,"1"),await P1(`=${J}`,"kobe: Zen mode on \u2014 all tabs")}async function rK(J){let z=await aK(J);for(let Z of z){let Y=await fZ(Z,xZ);if(Y)await _N(J,Z,Y)}await i0(["set-option","-u","-t",J,sY]),await P1(`=${J}`,"kobe: Zen mode off \u2014 all tabs")}async function a9(J,z){let Z=(await IY(J,sY)).length>0;if(!Z&&!UH())return;if(!Z)await WZ(J,sY,"1");if(await fZ(z,xZ))return;if(!await _K(J,z))return;await oK(J,z)}async function oK(J,z){let Z=await $J(J,z);if(!Z)return;let Y=[],X=Z.find((q)=>q.role===Kz);if(X)await i0(["kill-pane","-t",X.paneId]),Y.push(Kz);let G=LH(Z);if(G)await iK(J,z,G),Y.push(Dz);if(!LK()){let q=Z.find((H)=>H.role===zz);if(q)await nK(J,z,q),Y.push(zz)}if(Y.length===0){await P1(z,"kobe: already focused \u2014 nothing to hide");return}await c9(z,xZ,Y.join(",")),await P1(z,"kobe: Zen mode on")}async function _N(J,z,Z){let Y=new Set(Z.split(",").map((X)=>X.trim()));if(Y.has(zz)){let X=await fZ(z,yJ);if(X)await $9(J,z,X)}if(Y.has(Kz)){let X=await $J(J,z);if(X&&!X.some((G)=>G.role===Kz))await PK(J,z)}if(Y.has(Dz)){let X=await fZ(z,Lz);if(X)await $K(J,z,X)}await cZ(z,xZ),await P1(z,"kobe: Zen mode off")}async function sK(J){let{code:z,stdout:Z}=await c0(["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 pN(J,z){if(await sK(J)<=1){await P1(z,"Cannot close the only ChatTab");return}await m9(J,z),await i0(["kill-window","-t",z])}async function rN(J){if(!await F1(J))return;let z=await v9(J);if(!z)return;if(await sK(J)>1){await m9(J,z),await i0(["kill-window","-t",z]);return}let{newChatTab:Z}=await Promise.resolve().then(() => (OH(),tK));if(await Z(J),await v9(J)!==z)await m9(J,z),await i0(["kill-window","-t",z])}async function kY(J,z,Z={}){if(!await F1(J))return;let Y=await EN(J,Z.windowId);if(!Y)return;switch(z){case"workspace-split":await wN(J,Y);return;case"workspace-close":await PN(J,Y);return;case"workspace-reset":await hN(J,Y);return;case"tasks-toggle":await iN(J,Y);return;case"tasks-restore":await lN(J,Y);return;case"ops-toggle":await PK(J,Y);return;case"terminal-toggle":await $N(J,Y);return;case"zen-toggle":await aN(J);return;case"chat-tab-close":await pN(J,Y);return}}var xN="#{pane_id}\t#{@kobe_role}\t#{pane_active}\t#{pane_width}\t#{pane_height}\t#{window_width}\t#{window_height}";var dZ=C(()=>{QZ();Az();E9();w1();Fz();bJ();DY();cG()});var tK={};H1(tK,{quickCreate:()=>o9,openUpdateTab:()=>sG,openSettingsTab:()=>pG,openNewTaskTab:()=>oG,openHelpTab:()=>rG,newChatTab:()=>r9,kobeStatusRight:()=>aG,chatTabSwitchBindings:()=>nG,chatTabRenameBinding:()=>lG,chatTabCloseBinding:()=>iG,chatTabChooseEngineBindings:()=>$G,buildPanesAround:()=>RH,CHAT_TAB_STATUS_FORMAT:()=>bX,CHAT_TAB_STATUS_CURRENT_FORMAT:()=>_G,CHAT_TAB_STATE_OPTION:()=>AH,CHAT_TAB_ENGINE_PROMPT:()=>dG});function nG(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 iG(J,z="kill-window"){return["bind-key","-n",J,"if-shell","-F","#{>:#{session_windows},1}",z,"display-message 'Cannot close the only ChatTab'"]}function lG(J){return["bind-key","-n",J,"command-prompt","-I","#{window_name}","rename-window -- '%%'"]}function $G(J){return[["bind-key","-n",J,"command-prompt","-p",dG],["bind-key","T","command-prompt","-p",dG]]}function p9(J){return J.startsWith("C-")&&J.length===3?`^${J.slice(2)}`:J}function aG(J){return`${[J.focusLeft?`${p9(J.focusLeft)} tasks`:null,J.detach?`${p9(J.detach)} detach`:null,J.newTab?`${p9(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 RH(J,z){let Z=p1(),Y=await gH(),X=xJ(z.opsCommand??Z+eY({cwd:z.cwd,taskId:z.taskId,claudePaneId:J,cliInvocation:z.inv,vendor:z.vendor})),{stdout:G}=await tG([["set-option","-p","-t",J,"@kobe_role","claude"],["set-window-option","-t",J,AH,"idle"],["split-window","-h","-b","-t",J,"-l",`${Y}`,"-c",l1(z.cwd),"-P","-F","tasks=#{pane_id}",xJ(Z+uZ(z.inv,{initialTaskId:z.taskId}))],["split-window","-h","-t",J,"-l",`${100-uB}%`,"-c",l1(z.cwd),"-P","-F","ops=#{pane_id}",X],["split-window","-v","-l",`${100-MG}%`,"-c",l1(z.cwd),"-P","-F","shell=#{pane_id}"],["select-pane","-t",J]]),q=Object.fromEntries(G.split(`
|
|
53
|
+
`).map((H)=>H.trim()).filter(Boolean).map((H)=>H.split("=",2)));if(await r1([...q.tasks?[["set-option","-p","-t",q.tasks,"@kobe_role",zz]]:[],...q.tasks?[["set-option","-p","-t",q.tasks,Cz,e0]]:[],...q.ops?[["set-option","-p","-t",q.ops,"@kobe_role",Kz]]:[],...q.ops?[["set-option","-p","-t",q.ops,Cz,e0]]:[],...q.shell?[["set-option","-p","-t",q.shell,"@kobe_role",Dz]]:[]]),q.ops){let H=await SK();if(H.length>0)await i0(["resize-pane","-t",q.ops,...H])}}async function r9(J,z){if(!await F1(J))return;let Z=await wJ(J,["@kobe_worktree","@kobe_task","@kobe_vendor",xG]),Y=Z["@kobe_worktree"]||process.cwd(),X=Z["@kobe_task"]||void 0,G=Z[xG]||void 0,q=z??Z["@kobe_vendor"];if(z)await oN(J,X,z);let H=EJ(q),j=fX(H,q),B=i1(),f=(await c0(["new-window","-t",`=${J}`,"-c",l1(Y),"-P","-F","#{pane_id}",xJ(BX(TJ(j.argv),G,Y),tY(p1(),B,J))])).stdout.trim();if(!f)return;if(j.sessionId)await nZ(f,dz,j.sessionId);await RH(f,{cwd:Y,taskId:X,inv:B,vendor:q});let{stdout:U}=await c0(["display-message","-p","-t",f,"#{window_id}"]),L=U.trim();if(L)await a9(J,L)}async function pG(J){if(!await F1(J))return;let Z=(await wJ(J,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),Y=i1(),G=`${p1()}${Y.map(Z1).join(" ")} settings`;await bz(J,{cwd:l1(Z),command:G,name:"settings",surface:!0})}async function rG(J){if(!await F1(J))return;let Z=(await wJ(J,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),Y=i1(),G=`${p1()}${Y.map(Z1).join(" ")} help-page`;await bz(J,{cwd:l1(Z),command:G,name:"help",surface:!0})}async function oG(J,z){if(!await F1(J))return;let Y=(await wJ(J,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),X=i1(),G=p1(),q=z?` --repo ${Z1(z)}`:"",H=`${G}${X.map(Z1).join(" ")} new-task${q}`;await bz(J,{cwd:l1(Y),command:H,name:"new task",surface:!0})}async function sG(J){if(!await F1(J))return;let Z=(await wJ(J,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),Y=i1(),G=`${p1()}${R7({cliInvocation:Y})}`;await bz(J,{cwd:l1(Z),command:G,name:"update",surface:!0})}async function o9(J){if(!await F1(J))return;let Z=(await wJ(J,["@kobe_worktree"]))["@kobe_worktree"]||process.cwd(),Y=i1(),G=`${p1()}${Y.map(Z1).join(" ")} quick-task --session ${Z1(J)}`;await bz(J,{cwd:l1(Z),command:G,name:"quick task",surface:!0})}async function oN(J,z,Z){if(await WZ(J,"@kobe_vendor",Z),!z)return;try{let{connectOrStartDaemon:Y}=await Promise.resolve().then(() => (kJ(),NH)),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 dG,AH="@kobe_tab_state",bX="#{?#{==:#{@kobe_tab_state},running},\u25CF,#{?#{==:#{@kobe_tab_state},done},\u2713,#{?#{==:#{@kobe_tab_state},error},!,#{?#{==:#{@kobe_tab_state},unknown},?,\u25CB}}}} #I:#W",_G;var OH=C(()=>{QZ();Xz();Az();w1();Fz();s1();bJ();DY();dZ();cG();dG=`engine (${o1.join("/")}/\u2026)`;_G=bX});var PJ={};H1(PJ,{tmuxWindowSizeArgsForClient:()=>e9,tmuxSessionName:()=>y1,tmuxInitialSizeArgs:()=>J5,tmuxInitialClientSize:()=>t9,tmuxAvailable:()=>iz,switchClientBeforeKill:()=>lz,sessionExists:()=>F1,selectTasksPane:()=>YC,runLayoutAction:()=>kY,resyncWindowToClient:()=>eN,refreshKobeWorkspacePanes:()=>CX,quickCreate:()=>o9,prepareWindowForSwitch:()=>X5,prepareWindowForAttach:()=>CH,parseTmuxClientRows:()=>z5,parseObservedSession:()=>Q5,openUpdateTab:()=>sG,openSettingsTab:()=>pG,openNewTaskTab:()=>oG,openHelpTab:()=>rG,observeSessionVendor:()=>zf,newChatTab:()=>r9,kobeStatusRight:()=>aG,killSession:()=>vJ,healSessionLayout:()=>yK,focusBindCommand:()=>G5,enterWindow:()=>tN,ensureSession:()=>eG,currentSessionName:()=>hJ,clientsWithConflictingSize:()=>Z5,chatTabSwitchBindings:()=>nG,chatTabRenameBinding:()=>lG,chatTabCloseBinding:()=>iG,chatTabChooseEngineBindings:()=>$G,captureGlobalLayoutOnDrag:()=>TK,captureGlobalLayout:()=>h9,attachArgv:()=>kX,PANE_VERSION_OPTION:()=>Cz,CHAT_TAB_STATUS_FORMAT:()=>bX,CHAT_TAB_STATUS_CURRENT_FORMAT:()=>_G,CHAT_TAB_STATE_OPTION:()=>AH,CHAT_TAB_ENGINE_PROMPT:()=>dG});function J5(J=process.stdout,z=process.env){let Z=t9(J,z);return Z?["-x",`${Z.columns}`,"-y",`${Z.rows}`]:[]}function t9(J=process.stdout,z=process.env){let Z=iZ(J.columns)??iZ(z.COLUMNS),Y=iZ(J.rows)??iZ(z.LINES);return Z&&Y?{columns:Z,rows:Y}:null}function iZ(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 z5(J){let z=[];for(let Z of J.split(`
|
|
54
|
+
`)){let[Y,X,G,q,H]=Z.split("\t"),j=iZ(G?.trim()),B=iZ(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 Z5(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 e9(J,z){let Z=Math.max(1,J.rows-(z.status?.trim()==="on"?1:0));return["-x",`${J.columns}`,"-y",`${Z}`]}async function Jf(J,z,Z={}){if(!z)return;let{code:Y,stdout:X}=await c0(["list-clients","-t",`=${J}`,"-F",sN]);if(Y!==0)return;let G=Z5(z5(X),J,z,Z),q=[];if(Z.currentClientName)q.push(["refresh-client","-f","!ignore-size","-t",Z.currentClientName]);for(let H of G)q.push(["refresh-client","-f","ignore-size","-t",H]);if(q.length>0)await r1(q)}async function CH(J){mZ(J,"resize");let z=t9();await Jf(J,z);let Z=z?["-x",`${z.columns}`,"-y",`${z.rows}`]:[];if(Z.length>0)await i0(["resize-window","-t",`=${J}`,...Z]);await bY(J)}async function Y5(){let{code:J,stdout:z}=await c0(["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=iZ(Y),H=iZ(X),j=q&&H?{columns:q,rows:H}:null;return{sizeArgs:j?e9(j,{status:G}):[],clientSize:j,clientName:Z?.trim()||void 0}}async function X5(J){mZ(J,"resize");let z=await Y5();await Jf(J,z.clientSize,{currentClientName:z.clientName});let Z=z.sizeArgs;if(Z.length>0)await i0(["resize-window","-t",`=${J}`,...Z]);await bY(J)}async function tN(J){await X5(J),await i0(["switch-client","-t",`=${J}`])}async function eN(J,z){if(!z.size)return;mZ(J,"resize"),await Jf(J,z.size,{currentClientName:z.clientName});let Z=e9(z.size,{status:z.status}),{commands:Y}=await P9(J,{force:!0});await r1([["resize-window","-t",`=${J}`,...Z],...Y])}function G5(J,z,Z){let Y=`#{?window_zoomed_flag,1,#{?${JC[z]},,1}}`;if(Z)return["bind-key","-n",J,"if-shell","-F",Y,`select-pane ${z}`,Z];return["bind-key","-n",J,"if-shell","-F",Y,`select-pane ${z}`]}async function eG(J){let z=s9.get(J.name);if(z)return z;let Z=ZC(J);s9.set(J.name,Z);try{return await Z}finally{s9.delete(J.name)}}function Q5(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 q5(J){if(!await F1(J))return null;let{code:z,stdout:Z}=await c0(["list-panes","-s","-t",`=${J}`,"-F",zC]);if(z!==0)return{worktree:"",vendor:"",claudePaneAlive:!1,windowCount:0};return Q5(Z)}async function zf(J){let Z=(await q5(J))?.vendor.trim();return Z?Z:null}async function ZC(J){let z=J.launchInit,Z=await q5(J.name),Y=jK(Z,{cwd:J.cwd,vendor:J.vendor,hasEngineCommand:J.command.length>0}),X=TU(J.repo);if(Y.kind==="reuse")return await bY(J.name,{cwd:J.cwd,taskId:J.taskId,vendor:J.vendor}),!0;if(Y.kind==="respawn-engine"){let k0=await IK(J.name,J.cwd,J.command,X,J.vendor);if(k0==="switched"){if(J.vendor)await WZ(J.name,"@kobe_vendor",J.vendor);return await bY(J.name,{cwd:J.cwd,taskId:J.taskId,vendor:J.vendor,vendorChanged:!0}),!0}if(k0==="respawn-failed")return await bY(J.name,{cwd:J.cwd,taskId:J.taskId,vendor:J.vendor}),!0}if(Y.kind==="rebuild"||Y.kind==="respawn-engine")await vJ(J.name);let G=i1(),q=(J.archived===!0||J.preview===!0)&&b9(),H=q?{argv:[],sessionId:void 0}:fX(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=_q(aq(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=BX(TJ(q?U:f),X,J.cwd),O=q?F7(L):O7(L,{initScript:X?void 0:z?.initScript,markerPath:!X&&z?.initScript?OV(J.cwd):void 0,timeoutSeconds:EB(process.env.KOBE_REPO_INIT_TIMEOUT_SECONDS)},tY(p1(),G,J.name)),g=(await c0(["new-session","-d","-s",J.name,"-c",l1(J.cwd),...J5(),"-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 nZ(g,dz,H.sessionId);if(await r1([...J.taskId?[["set-option","-t",J.name,"@kobe_task",J.taskId]]:[],["set-option","-t",J.name,"@kobe_worktree",J.cwd],...J.vendor?[["set-option","-t",J.name,"@kobe_vendor",J.vendor]]:[],...X?[["set-option","-t",J.name,xG,X]]:[]]),process.env.TMUX){let{sizeArgs:k0}=await Y5();if(k0.length>0)await i0(["resize-window","-t",`=${J.name}`,...k0])}await RH(g,{cwd:J.cwd,taskId:J.taskId,opsCommand:J.opsCommand,inv:G,vendor:J.vendor});let E=p1(),h=G.map(Z1).join(" "),I=`${E}${h} new-chattab --session '#{session_name}'`,N=`${I} --vendor '%%'`,M=`run-shell ${Z1(N)}`,y=`${E}${h} focus-tasks --session '#{session_name}' --window '#{window_id}'`,c=`run-shell ${Z1(y)}`,d=(k0)=>`${E}${h} layout --session '#{session_name}' --window '#{window_id}' --action ${k0}`,i=d("tasks-restore"),t=`run-shell -b ${Z1(i)}`,X0=d("chat-tab-close"),G0=`run-shell ${Z1(X0)}`,f0=`${E}${h} heal-layout --session '#{session_name}'`,_=`run-shell -b ${Z1(f0)}`,O0=`${E}${h} resync-window --session '#{session_name}' --client '#{client_name}' --cols '#{client_width}' --rows '#{client_height}' --status '#{status}'`,b=`run-shell -b ${Z1(O0)}`,p=`${E}${h} capture-layout --session '#{session_name}'`,w=`run-shell -b ${Z1(p)}`,R=g7({tmuxSocket:kz}),e=oU(process.platform,sU),x=tU(e),$=eq(),Q0=XK.map((k0)=>["unbind-key","-n",k0]);if($.overridden.has(cz))for(let k0 of vZ){let h0=NY(k0);if("key"in h0)Q0.push(["unbind-key","-n",h0.key])}for(let k0 of $.overridden){if(k0===cz)continue;let h0=gY[k0],N0=VX(k0),o0=NY(h0,{allowBare:N0});if("key"in o0)Q0.push(N0?["unbind-key",o0.key]:["unbind-key","-n",o0.key])}let H0=["-L","-D","-U","-R"],L0=$.focus.flatMap((k0,h0)=>{let N0=H0[h0],o0=N0==="-L"?t:void 0;return k0&&N0?[G5(k0.key,N0,o0)]:[]}),M0=$.binds,E0=(k0,h0)=>{let N0=M0[k0];return N0?[["bind-key",N0.key,"run-shell",d(h0)]]:[]},b0=(...k0)=>{let h0=k0.map((N0)=>M0[N0]?.chord).filter((N0)=>!!N0);return h0.length>0?h0.join("/"):null},J1="#{?#{@kobe_surface},0,1}";await r1([["set-option","-g","status","on"],["set-window-option","-g","aggressive-resize","on"],["set-option","-g","monitor-activity","on"],["set-option","-g","visual-activity","off"],["set-option","-g","window-status-format",bX],["set-option","-g","window-status-current-format",_G],["set-option","-g","status-right",aG({focusLeft:$.focus[0]?.key??null,detach:M0["tmux.detach"]?.key??null,newTab:M0["tmux.tab.new"]?.key??null,layoutSplits:b0("tmux.layout.workspaceSplit","tmux.layout.workspaceClose","tmux.layout.workspaceReset"),layoutPanes:b0("tmux.layout.tasksToggle","tmux.layout.opsToggle","tmux.layout.terminalToggle","tmux.layout.zenToggle")})],["set-option","-g","mouse","on"],...x,["set-hook","-g","window-resized",_],["set-hook","-g","client-resized",b],["set-hook","-g","pane-exited",_],["set-hook","-g","window-layout-changed",w],...Q0,...M0["tmux.detach"]?[["bind-key","-n",M0["tmux.detach"].key,"if-shell","-F",`#{?#{${yJ}},1,#{==:#{@kobe_role},tasks}}`,"detach-client",c]]:[],...L0,...M0["tmux.tab.new"]?[["bind-key","-n",M0["tmux.tab.new"].key,"run-shell",I]]:[],...M0["tmux.tab.chooseEngine"]?$G(M0["tmux.tab.chooseEngine"].key).map((k0)=>[...k0,M]):[],...M0["tmux.tab.prev"]&&M0["tmux.tab.next"]?nG(M0["tmux.tab.prev"].key,M0["tmux.tab.next"].key):M0["tmux.tab.prev"]?[["bind-key","-n",M0["tmux.tab.prev"].key,"if-shell","-F",J1,"previous-window"]]:M0["tmux.tab.next"]?[["bind-key","-n",M0["tmux.tab.next"].key,"if-shell","-F",J1,"next-window"]]:[],...M0["tmux.tab.close"]?[iG(M0["tmux.tab.close"].key,G0)]:[],...M0["tmux.tab.rename"]?[lG(M0["tmux.tab.rename"].key)]:[],...E0("tmux.layout.workspaceSplit","workspace-split"),...E0("tmux.layout.workspaceClose","workspace-close"),...E0("tmux.layout.workspaceReset","workspace-reset"),...E0("tmux.layout.tasksToggle","tasks-toggle"),...E0("tmux.layout.opsToggle","ops-toggle"),...E0("tmux.layout.terminalToggle","terminal-toggle"),...E0("tmux.layout.zenToggle","zen-toggle"),["bind-key","f","run-shell",`${E}${h} quick-create --session '#{session_name}'`],["bind-key","u","display-popup","-E",R]]),await CY(),await i0(["select-pane","-t",g]);let j1=z?.firstMessage;if(j1)HK(J.name,j1).catch((k0)=>console.error("[kobe tmux] first message delivery failed:",k0));return!0}async function eK(J,z,Z){let Y=Z?.trim()||`=${J}`,{code:X,stdout:G}=await c0(["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 YC(J,z={}){if(!await F1(J))return"";let Z=await eK(J,"tasks",z.windowId);if(!Z)await kY(J,"tasks-restore",{windowId:z.windowId}),Z=await eK(J,"tasks",z.windowId);if(!Z)return"";return await i0(["select-pane","-t",Z]),Z}var sN="#{client_name}\t#{client_session}\t#{client_width}\t#{client_height}\t#{client_flags}",JC,s9,zC="#{window_id}\t#{window_active}\t#{@kobe_role}\t#{@kobe_worktree}\t#{@kobe_vendor}";var HJ=C(()=>{QZ();Xz();t1();Az();pq();w1();eU();JH();zH();Fz();WH();OH();DY();dZ();NX();cG();w1();OH();cG();dZ();JC={"-L":"pane_at_left","-D":"pane_at_bottom","-U":"pane_at_top","-R":"pane_at_right"};s9=new Map});var SX={};H1(SX,{windowIsSurface:()=>BC,windowCount:()=>QC,tmuxSessionName:()=>y1,tmuxCommandSequence:()=>Yf,tmuxAvailable:()=>iz,tmuxArgs:()=>SY,termAllPaneGroups:()=>qf,tagPaneRole:()=>f5,tagClaudePane:()=>jC,switchClientBeforeKill:()=>lz,setWindowOption:()=>nZ,setSessionOption:()=>WZ,sessionExists:()=>F1,sendKeys:()=>bH,sendKeyName:()=>vG,runTmuxSequenceCapturing:()=>tG,runTmuxSequence:()=>r1,runTmuxCapturing:()=>c0,runTmux:()=>i0,readLayoutGeometry:()=>nz,paneIdByRole:()=>Gf,newWindow:()=>bz,killSession:()=>vJ,globalTasksPaneWidth:()=>gH,getSessionOptions:()=>wJ,getSessionOption:()=>IY,getServerOptions:()=>B5,getServerOption:()=>qC,ensureFallbackSession:()=>kH,currentSessionName:()=>hJ,claudePaneIdStrict:()=>UX,claudePaneId:()=>T9,capturePaneById:()=>KX,attachArgv:()=>kX,SURFACE_WINDOW_OPTION:()=>Qf,PANE_ROLE_OPTION:()=>JQ,KOBE_TMUX_SOCKET:()=>kz,KOBE_HOME_SESSION:()=>V5,CLAUDE_ROLE_OPTION:()=>HC,CHAT_TAB_SESSION_ID_OPTION:()=>dz});import{homedir as XC}from"os";function SY(...J){return["tmux","-L",kz,...J]}function y1(J){return`kobe-${J.replace(/[^A-Za-z0-9_-]/g,"")}`}function kX(J){return SY("attach-session","-t",`=${J}`)}async function Zf(J){if(!J)return"";try{return await new Response(J).text()}catch{return""}}async function i0(J){try{let z=Bun.spawn(SY(...J),{stdin:"ignore",cwd:IX,stdout:"ignore",stderr:"pipe"}),[Z,Y]=await Promise.all([Zf(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 GC(J){try{return await Bun.spawn(SY(...J),{stdin:"ignore",cwd:IX,stdout:"ignore",stderr:"ignore"}).exited}catch{return 1}}function Yf(J){let z=[];for(let Z of J){if(Z.length===0)continue;if(z.length>0)z.push(";");z.push(...Z)}return z}async function r1(J){let z=Yf(J);return z.length===0?0:i0(z)}async function c0(J){try{let z=Bun.spawn(SY(...J),{stdin:"ignore",cwd:IX,stdout:"pipe",stderr:"pipe"}),[Z,Y,X]=await Promise.all([Zf(z.stdout),Zf(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 tG(J){let z=Yf(J);return z.length===0?{code:0,stdout:""}:c0(z)}async function iz(){try{return await Bun.spawn(["tmux","-V"],{stdin:"ignore",cwd:IX,stdout:"ignore",stderr:"ignore"}).exited===0}catch{return!1}}async function F1(J){return await GC(["has-session","-t",`=${J}`])===0}async function QC(J){let{code:z,stdout:Z}=await c0(["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 WZ(J,z,Z){await i0(["set-option","-t",J,z,Z])}async function IY(J,z){let{code:Z,stdout:Y}=await c0(["show-options","-qv","-t",J,z]);return Z===0?Y.trim():""}async function wJ(J,z){let Z=Object.fromEntries(z.map((G)=>[G,void 0])),{code:Y,stdout:X}=await tG(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 qC(J){let{code:z,stdout:Z}=await c0(["show-options","-sqv",J]);return z===0?Z.trim():""}async function B5(J){let z=Object.fromEntries(J.map((X)=>[X,void 0])),{code:Z,stdout:Y}=await tG(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 gH(){return(await nz()).tasksWidth}async function nz(){return L7(await B5(D7))}async function f5(J,z){await i0(["set-option","-p","-t",J,JQ,z])}async function nZ(J,z,Z){await i0(["set-window-option","-t",J,z,Z])}async function jC(J){await f5(J,Xf)}async function Gf(J,z,Z=!1){let{code:Y,stdout:X}=await c0(["list-panes","-t",`=${J}`,"-F",`#{pane_id} #{${JQ}}`]);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 T9(J){return Gf(J,Xf,!0)}async function UX(J){return Gf(J,Xf,!1)}async function KX(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 c0(Z);return Y===0?X:""}async function bH(J,z){await i0(["send-keys","-t",J,"-l","--",z])}async function vG(J,z){await i0(["send-keys","-t",J,z])}async function bz(J,z){let Z=["new-window","-t",`=${J}`,"-c",z.cwd];if(z.name)Z.push("-n",z.name);if(z.surface){Z.push("-P","-F","#{window_id}"),Z.push(z.command);let{code:Y,stdout:X}=await c0(Z),G=X.trim();if(Y===0&&G)await nZ(G,Qf,"1");return}Z.push(z.command),await i0(Z)}async function BC(J){let{code:z,stdout:Z}=await c0(["display-message","-t",J,"-p",`#{${Qf}}`]);return z===0&&Z.trim()==="1"}async function hJ(){let J=["display-message","-p"],z=process.env.TMUX_PANE;if(z&&z.length>0)J.push("-t",z);J.push("#{session_name}");let{code:Z,stdout:Y}=await c0(J),X=Y.trim();return Z===0&&X.length>0?X:null}async function W5(J){let{code:z,stdout:Z}=await c0(["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 H5(J){await W5(["-s","-t",`=${J}`])}async function qf(){await W5(["-a"])}async function vJ(J){if(!J.startsWith("kobe-hidden-")){let z=FG(J);if(await F1(z))await H5(z),await i0(["kill-session","-t",`=${z}`])}if(await F1(J))await H5(J),await i0(["kill-session","-t",`=${J}`])}async function kH(){let J=V5;if(await F1(J)){if(await IY(J,j5)==="tasks")return J;await i0(["kill-session","-t",`=${J}`])}let Z=(await c0(["new-session","-d","-s",J,"-c",IX,"-x","220","-y","50","-P","-F","#{pane_id}",M7()])).stdout.trim();if(Z){let Y=await gH(),G=(await c0(["split-window","-h","-b","-t",Z,"-l",`${Y}`,"-c",IX,"-P","-F","#{pane_id}",xJ(p1()+uZ(i1()))])).stdout.trim();if(G)await r1([["set-option","-p","-t",G,JQ,"tasks"],["select-pane","-t",G]])}return await WZ(J,j5,"tasks"),J}async function lz(J,z){if(await hJ()!==J)return;let{enterWindow:Y}=await Promise.resolve().then(() => (HJ(),PJ));if(z&&z!==J&&await F1(z)){await Y(z);return}await Y(await kH())}var kz,IX,JQ="@kobe_role",HC,Xf="claude",dz="@kobe_session_id",Qf="@kobe_surface",V5="kobe-home",j5="@kobe_home";var w1=C(()=>{QZ();DY();Fz();kz=process.env.KOBE_TMUX_SOCKET?.trim()||"kobe";IX=XC()||"/";HC=JQ});async function fC(J,z=U5){let{code:Z,stdout:Y}=await z.capture(["list-windows","-t",`=${J}`,"-F",`#{window_index} #{automatic-rename} #{${dz}}`]);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 WC(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 VC(J){let{code:z,stdout:Z}=await J.capture(["show-window-options","-g","automatic-rename"]);return z===0&&/\boff\b/.test(Z)}async function UC(J,z,Z,Y){return await Y.run(["rename-window","-t",`=${J}:${z}`,"--",Z])===0}async function K5(J,z=KC){let Z=0,Y=null,X=async(G,q)=>{if(q.autoRename==="1")return!1;if(q.autoRename==="0"){if(Y===null)Y=await VC(z.runner);if(!Y)return!0}return WC(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 fC(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 UC(q,V.index,f,z.runner))Z++}catch{}}return Z}var U5,KC;var D5=C(()=>{Sq();w1();Yz();U5={capture:c0,run:i0};KC={runner:U5,titleFromSessionId:qU,titleFromWorktree:ZX}});function F5(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 L5(J,z,Z=new Date){let Y=F5(z);return`[${Z.toISOString()}] daemon ${J}: ${Y.stack??`${Y.name}: ${Y.message}`}
|
|
63
|
+
`}function DC(J,z,Z=new Date){let Y=F5(z);return`[${Z.toISOString()}] daemon error [${J}]: ${Y.stack??`${Y.name}: ${Y.message}`}
|
|
64
|
+
`}function E1(J,z){process.stderr.write(DC(J,z))}function LC(J,z,Z=new Date){return`[${Z.toISOString()}] daemon [${J}]: ${z}
|
|
65
|
+
`}function $z(J,z){process.stderr.write(LC(J,z))}function M5(J=(z)=>process.stderr.write(z)){if(Hf||jf)return;Hf=(z)=>J(L5("unhandledRejection",z)),jf=(z)=>J(L5("uncaughtException",z)),process.on("unhandledRejection",Hf),process.on("uncaughtException",jf)}var Hf,jf;async function FC(J,z=ZX){let Z=[];for(let Y of J.listTasks()){if(Y.archived||Y.title!==mz||!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!==mz)continue;await J.setTitle(Y.id,X),Z.push({id:Y.id,title:X})}catch(X){E1("auto-title-poller",X)}}return Z}function O5(J,z=Bf,Z){if(z<=0)return()=>{};let Y=!1,G=setInterval(()=>{if(Z&&!Z())return;if(Y)return;Y=!0,FC(J).then(()=>K5(J)).catch((q)=>E1("auto-title-poller",q)).finally(()=>{Y=!1})},z);return G.unref?.(),()=>clearInterval(G)}var Bf=4000;var A5=C(()=>{Sq();TG();D5();Yz()});class ff{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 Wf{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 R5(J,z,Z=lq){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 g5=C(()=>{uG()});import{createHash as MC}from"crypto";import{homedir as OC}from"os";import lZ from"path";function CC(){return lZ.join(process.env.KOBE_HOME_DIR??OC(),".kobe")}function bC(J){let Z=(lZ.basename(J)||"repo").replace(/[^a-zA-Z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"repo",Y=MC("sha1").update(lZ.resolve(J)).digest("hex").slice(0,12);return`${Z}-${Y}`}function kC(J){if(!lZ.isAbsolute(J))throw Error(`worktreeRootFor: repo must be an absolute path, got: ${J}`);return lZ.join(CC(),AC,bC(J))}function IC(J){if(!lZ.isAbsolute(J))throw Error(`managedWorktreeRootsFor: repo must be an absolute path, got: ${J}`);return[kC(J),...NC.map((z)=>lZ.join(J,z))]}function az(J){return J.length>1&&J.endsWith("/")?J.slice(0,-1):J}function N5(J,z){return z===J||z.startsWith(`${J}/`)}function C5(J,z){let Z=az(z),Y,X=-1;for(let G of J){if(!G.worktreePath)continue;let q=az(G.worktreePath);if(N5(q,Z)&&q.length>X)X=q.length,Y=G.id}return Y}function b5(J,z){let Z=az(z);for(let Y of J)if(Y.worktreePath&&az(Y.worktreePath)===Z)return Y.id;return}function Vf(J,z){let Z=az(z),Y,X=-1;for(let G of J){if(!G.repo)continue;let q=az(G.repo);if(N5(q,Z)&&q.length>X)X=q.length,Y=q}return Y}function k5(J,z){let Z=az(z),Y=new Set,X=new Set;for(let G of J){if(G.repo)Y.add(az(G.repo));if(G.worktreePath)X.add(az(G.worktreePath))}for(let G of Y)for(let q of IC(G).map(az)){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 AC="worktrees",RC=".kobe/worktrees",gC=".claude/worktrees",NC;var I5=C(()=>{NC=[RC,gC]});function Df(J){return{message:J instanceof Error?J.message:String(J),name:J instanceof Error?J.name:void 0}}async function zQ(J,z,Z,Y){let X=J.get(z);if(!X)throw Error(`unknown daemon request: ${z}`);return X.handle(Lf(Z),Y)}function ZQ(){return new Map([{name:"hello",handle(z,Z){let Y=typeof z.protocolVersion==="number"?z.protocolVersion:eJ,X=typeof z.minProtocolVersion==="number"?z.minProtocolVersion:Y;if(!Jq({localVersion:eJ,localMin:IZ,remoteVersion:Y,remoteMin:X}))throw Error(`daemon is protocol v${eJ} (min v${IZ}); this client is v${Y} (min v${X}). Upgrade your kobe.`);return{protocolVersion:eJ,minProtocolVersion:IZ,kobeVersion:e0,capabilities:[...AB],daemonPid:Z.daemon.pid,clientId:Z.clientId,tasks:Z.orch.listTasks().map(Uz)}}},{name:"daemon.status",handle(z,Z){return{daemonPid:Z.daemon.pid,kobeVersion: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(Uz)}}},{name:"task.get",handle(z,Z){let Y=k1(z,"taskId"),X=Z.orch.getTask(Y);if(!X)throw Error(`task not found: ${Y}`);return{task:Uz(X)}}},{name:"task.create",async handle(z,Z){let Y=k1(z,"repo"),X=await Z.orch.createTask({repo:Y,title:Qz(z,"title"),branch:Qz(z,"branch"),baseRef:Qz(z,"baseRef"),vendor:Kf(z,"vendor"),modelEffort:Qz(z,"effort")});return{taskId:X.id,task:Uz(X)}}},{name:"task.archive",async handle(z,Z){let Y=k1(z,"taskId");return await Z.orch.setArchived(Y,Uf(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=Kf(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:Uf(z,"force")}),Z.activity.clearTask(Y),{}}},{name:"task.pin",async handle(z,Z){let Y=k1(z,"taskId");return await Z.orch.setPinned(Y,Uf(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(!zU(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:Uz(X)}}},{name:"project.forget",async handle(z,Z){let Y=k1(z,"repo");return await Z.orch.forgetProject(Y),{}}},{name:"task.ensureWorktree",async handle(z,Z){let Y=k1(z,"taskId");Z.bus.publish("task.jobs",{taskId:Y,kind:"ensureWorktree",phase:"running"});try{let X=await Z.orch.ensureWorktree(Y);return Z.bus.publish("task.jobs",{taskId:Y,kind:"ensureWorktree",phase:"done"}),{worktreePath:X}}catch(X){throw Z.bus.publish("task.jobs",{taskId:Y,kind:"ensureWorktree",phase:"error",error:X instanceof Error?X.message:String(X)}),X}}},{name:"worktree.discoverAdoptable",async handle(z,Z){let Y=k1(z,"repo");return{worktrees:await Z.orch.discoverAdoptableWorktrees(Y)}}},{name:"worktree.adopt",async handle(z,Z){let Y=await Z.orch.adoptWorktree({repo:k1(z,"repo"),worktreePath:k1(z,"worktreePath"),branch:Qz(z,"branch"),vendor:Kf(z,"vendor"),title:Qz(z,"title"),ifExists:Qz(z,"ifExists")==="return"?"return":"error"});return{task:Uz(Y)}}},{name:"worktree.reconcile",async handle(z,Z){let Y=k1(z,"cwd"),X=k1(z,"worktreePath"),G=Vf(Z.orch.listTasks(),Y)??Vf(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=b5(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(!bq(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=k5(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?C5(Z.orch.listTasks(),G):void 0);if(!q)return{};let H=SC(z);if(Z.activity.report(q,Y,H),Y==="turn-start")R5(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 Lf(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 Uf(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 Kf(J,z){let Z=Qz(J,z);return Z&&Z.trim().length>0?Z:void 0}function SC(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 IH=C(()=>{kq();g5();Yz();bJ();I5();XY()});import{execFile as yC}from"child_process";import{mkdir as TC,readFile as xC,realpath as S5,rename as uC,stat as EC,writeFile as wC}from"fs/promises";import{homedir as PC}from"os";import{dirname as hC,isAbsolute as vC,join as mC,resolve as y5}from"path";import{promisify as cC}from"util";function dC(J){return(J instanceof Error?J.message:String(J)).includes("not a git repository")}function yH(J=process.env.KOBE_HOME_DIR??PC()){return mC(J,".kobe","issues.json")}function x5(J){return typeof J==="string"&&T5.includes(J)}function nC(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:x5(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 iC(){return{version:1,repos:{}}}function lC(){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 $C(J){let{stdout:z}=await gf("git",["-C",J,"rev-parse","--git-common-dir"]),Z=z.trim();return S5(vC(Z)?Z:y5(J,Z))}async function aC(J){let{stdout:z}=await gf("git",["-C",J,"rev-parse","--show-toplevel"]);return z.trim()}async function _C(J){let{stdout:z}=await gf("git",["-C",J,"worktree","list","--porcelain"]),Z=z.split(/\r?\n/).find((Y)=>Y.startsWith("worktree "))?.slice(9).trim();return Z?S5(Z):aC(J)}async function Ff(J){if(typeof J!=="string"||J.length===0)throw Error("repoRoot is required");let z=y5(J);if(!(await EC(z).catch(()=>null))?.isDirectory())throw Error("repoRoot does not exist");try{let[Y,X]=await Promise.all([_C(z),$C(z)]);return{repoRoot:Y,repoKey:X}}catch(Y){if(dC(Y))throw Error("repoRoot is not a git repository");throw Y}}async function Mf(J){try{let z=JSON.parse(await xC(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(nC).filter((q)=>q!==null):[]}}return{version:1,repos:Z}}catch(z){if(z.code==="ENOENT")return iC();throw z}}async function Of(J,z){await TC(hC(J),{recursive:!0});let Z=`${J}.tmp`;await wC(Z,`${JSON.stringify(z,null,2)}
|
|
66
|
+
`,"utf8"),await uC(Z,J)}function Af(J,z){return{repoRoot:J,exists:z!==null,nextId:z?.nextId??1,issues:z?.issues??[]}}async function Rf(J,z){let Y=(SH.get(J)??Promise.resolve()).then(z),X=Y.then(()=>{return},()=>{return});return SH.set(J,X),X.then(()=>{if(SH.get(J)===X)SH.delete(J)}),Y}class TH{path;constructor(J=yH()){this.path=J}async list(J){let{repoRoot:z,repoKey:Z}=await Ff(J);return Rf(this.path,async()=>{let Y=await Mf(this.path),X=Y.repos[Z]??null;if(X&&X.repoRoot!==z)X.repoRoot=z,await Of(this.path,Y);return Af(z,X)})}async mirrorTaskDone(J,z){let{repoRoot:Z,repoKey:Y}=await Ff(J);if(!z)return null;return Rf(this.path,async()=>{let X=await Mf(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 Of(this.path,X),Af(Z,G)})}async mutate(J,z){let{repoRoot:Z,repoKey:Y}=await Ff(J);if(!z||typeof z!=="object"||Array.isArray(z)||typeof z.type!=="string")throw Error("missing op");return Rf(this.path,async()=>{let X=await Mf(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:lC(),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(!x5(q.status))throw Error(`invalid status: must be one of ${T5.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 Of(this.path,X),Af(Z,G)})}}var gf,T5,SH;var Nf=C(()=>{gf=cC(yC),T5=["open","doing","hold","done"];SH=new Map});import{lstat as u5,readdir as pC,realpath as rC,stat as oC}from"fs/promises";import{join as sC,relative as tC,resolve as E5,sep as eC}from"path";import{Readable as Jb}from"stream";function m5(J,z={}){let Z=z.entryType||z.type;if(Z==="both")Z=aJ.FILE_DIR_TYPE;if(Z)z.type=Z;if(!J)throw Error("readdirp: root argument is required. Usage: readdirp(root, options)");else if(typeof J!=="string")throw TypeError("readdirp: root argument must be a string. Usage: readdirp(root, options)");else if(Z&&!w5.includes(Z))throw Error(`readdirp: Invalid type passed. Use one of ${w5.join(", ")}`);return z.root=J,new bf(z)}var aJ,Cf,v5="READDIRP_RECURSIVE_ERROR",zb,w5,Zb,Yb,Xb=(J)=>zb.has(J.code),Gb,P5=(J)=>!0,h5=(J)=>{if(J===void 0)return P5;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 P5},bf;var c5=C(()=>{aJ={FILE_TYPE:"files",DIR_TYPE:"directories",FILE_DIR_TYPE:"files_directories",EVERYTHING_TYPE:"all"},Cf={root:".",fileFilter:(J)=>!0,directoryFilter:(J)=>!0,type:aJ.FILE_TYPE,lstat:!1,depth:2147483648,alwaysStat:!1,highWaterMark:4096};Object.freeze(Cf);zb=new Set(["ENOENT","EPERM","EACCES","ELOOP",v5]),w5=[aJ.DIR_TYPE,aJ.EVERYTHING_TYPE,aJ.FILE_DIR_TYPE,aJ.FILE_TYPE],Zb=new Set([aJ.DIR_TYPE,aJ.EVERYTHING_TYPE,aJ.FILE_DIR_TYPE]),Yb=new Set([aJ.EVERYTHING_TYPE,aJ.FILE_DIR_TYPE,aJ.FILE_TYPE]),Gb=process.platform==="win32";bf=class bf extends Jb{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={...Cf,...J},{root:Z,type:Y}=z;this._fileFilter=h5(z.fileFilter),this._directoryFilter=h5(z.directoryFilter);let X=z.lstat?u5:oC;if(Gb)this._stat=(G)=>X(G,{bigint:!0});else this._stat=X;this._maxDepth=z.depth!=null&&Number.isSafeInteger(z.depth)?z.depth:Cf.depth,this._wantsDir=Y?Zb.has(Y):!1,this._wantsFile=Y?Yb.has(Y):!1,this._wantsEverything=Y===aJ.EVERYTHING_TYPE,this._root=E5(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 pC(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=E5(sC(z,Y));Z={path:tC(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(Xb(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 rC(Z),X=await u5(Y);if(X.isFile())return"file";if(X.isDirectory()){let G=Y.length;if(Z.startsWith(Y)&&Z.substr(G,1)===eC){let q=Error(`Circular symlink detected: "${Z}" points to "${Y}"`);return q.code=v5,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 Qb,unwatchFile as d5,watchFile as qb}from"fs";import{realpath as kf,lstat as Hb,open as jb,stat as i5}from"fs/promises";import{type as Bb}from"os";import*as m1 from"path";function n5(J,z,Z,Y,X){let G=(q,H)=>{if(Z(J),X(q,H,{watchedPath:J}),H&&J!==H)EH(m1.resolve(J,H),yY,m1.join(J,H))};try{return Qb(J,{persistent:z.persistent},G)}catch(q){Y(q);return}}class xf{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=wH;let j;if(Z.usePolling){let B=Z.interval!==Z.binaryInterval;H.interval=B&&Mb(X)?Z.binaryInterval:Z.interval,j=Rb(J,q,H,{listener:z,rawEmitter:this.fsw._emitRaw})}else j=Ab(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(Kb,J,5))return;if(!V||V.mtimeMs===0)try{let f=await i5(J);if(this.fsw.closed)return;let{atimeMs:U,mtimeMs:L}=f;if(!U||U<=L||L!==q.mtimeMs)this.fsw._emit(Iz.CHANGE,J,f);if((Wb||Vb||Ub)&&q.ino!==f.ino){this.fsw._closeFile(B),q=f;let O=this._watchWithNodeFs(J,H);if(O)this.fsw._addPathCloser(B,O)}else q=f}catch(f){this.fsw._remove(Y,X)}else if(G.has(X)){let{atimeMs:f,mtimeMs:U}=V;if(!f||f<=U||U!==q.mtimeMs)this.fsw._emit(Iz.CHANGE,J,V);q=V}},j=this._watchWithNodeFs(J,H);if(!(Z&&this.fsw.options.ignoreInitial)&&this.fsw._isntIgnored(J)){if(!this.fsw._throttle(Iz.ADD,J,0))return;this.fsw._emit(Iz.ADD,J,z)}return j}async _handleSymlink(J,z,Z,Y){if(this.fsw.closed)return;let X=J.fullPath,G=this.fsw._getWatchedDir(z);if(!this.fsw.options.followSymlinks){this.fsw._incrReadyCount();let q;try{q=await kf(Z)}catch(H){return this.fsw._emitReady(),!0}if(this.fsw.closed)return;if(G.has(Y)){if(this.fsw._symlinkPaths.get(X)!==q)this.fsw._symlinkPaths.set(X,q),this.fsw._emit(Iz.CHANGE,Z,J.stats)}else G.add(Y),this.fsw._symlinkPaths.set(X,q),this.fsw._emit(Iz.ADD,Z,J.stats);return this.fsw._emitReady(),!0}if(this.fsw._symlinkPaths.has(X))return!0;this.fsw._symlinkPaths.set(X,!0)}_handleRead(J,z,Z,Y,X,G,q){J=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(fb,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(Iz.ERROR,this._boundHandleError),new Promise((f,U)=>{if(!V)return U();V.once(yf,()=>{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(Iz.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 Db[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 kf(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 kf(J):J;if(this.fsw.closed)return;let f=m1.dirname(q.watchPath);if(this.fsw._getWatchedDir(f).add(q.watchPath),this.fsw._emit(Iz.ADD,q.watchPath,H),B=await this._handleDir(f,H,z,Y,J,q,V),this.fsw.closed)return;if(V!==void 0)this.fsw._symlinkPaths.set(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 fb="data",yf="end",l5="close",wH=()=>{},PH,Tf,Wb,Vb,Ub,$5,h1,Iz,Kb="watch",Db,yY="listeners",xH="errHandlers",yX="rawEmitters",Lb,Fb,Mb=(J)=>Fb.has(m1.extname(J).slice(1).toLowerCase()),Sf=(J,z)=>{if(J instanceof Set)J.forEach(z);else z(J)},YQ=(J,z,Z)=>{let Y=J[z];if(!(Y instanceof Set))J[z]=Y=new Set([Y]);Y.add(Z)},Ob=(J)=>(z)=>{let Z=J[z];if(Z instanceof Set)Z.clear();else delete J[z]},XQ=(J,z,Z)=>{let Y=J[z];if(Y instanceof Set)Y.delete(Z);else if(Y===Z)delete J[z]},a5=(J)=>J instanceof Set?J.size===0:!J,uH,EH=(J,z,Z,Y,X)=>{let G=uH.get(J);if(!G)return;Sf(G[z],(q)=>{q(Z,Y,X)})},Ab=(J,z,Z,Y)=>{let{listener:X,errHandler:G,rawEmitter:q}=Y,H=uH.get(z),j;if(!Z.persistent){if(j=n5(J,Z,X,G,q),!j)return;return j.close.bind(j)}if(H)YQ(H,yY,X),YQ(H,xH,G),YQ(H,yX,q);else{if(j=n5(J,Z,EH.bind(null,z,yY),G,EH.bind(null,z,yX)),!j)return;j.on(Iz.ERROR,async(B)=>{let V=EH.bind(null,z,xH);if(H)H.watcherUnusable=!0;if(Tf&&B.code==="EPERM")try{await(await jb(J,"r")).close(),V(B)}catch(f){}else V(B)}),H={listeners:X,errHandlers:G,rawEmitters:q,watcher:j},uH.set(z,H)}return()=>{if(XQ(H,yY,X),XQ(H,xH,G),XQ(H,yX,q),a5(H.listeners))H.watcher.close(),uH.delete(z),Lb.forEach(Ob(H)),H.watcher=void 0,Object.freeze(H)}},If,Rb=(J,z,Z,Y)=>{let{listener:X,rawEmitter:G}=Y,q=If.get(z),H=q&&q.options;if(H&&(H.persistent<Z.persistent||H.interval>Z.interval))d5(z),q=void 0;if(q)YQ(q,yY,X),YQ(q,yX,G);else q={listeners:X,rawEmitters:G,options:Z,watcher:qb(z,Z,(j,B)=>{Sf(q.rawEmitters,(f)=>{f(Iz.CHANGE,z,{curr:j,prev:B})});let V=j.mtimeMs;if(j.size!==B.size||V>B.mtimeMs||V===0)Sf(q.listeners,(f)=>f(J,j))})},If.set(z,q);return()=>{if(XQ(q,yY,X),XQ(q,yX,G),a5(q.listeners))If.delete(z),d5(z),q.options=q.watcher=void 0,Object.freeze(q)}};var _5=C(()=>{PH=process.platform,Tf=PH==="win32",Wb=PH==="darwin",Vb=PH==="linux",Ub=PH==="freebsd",$5=Bb()==="OS400",h1={ALL:"all",READY:"ready",ADD:"add",CHANGE:"change",ADD_DIR:"addDir",UNLINK:"unlink",UNLINK_DIR:"unlinkDir",RAW:"raw",ERROR:"error"},Iz=h1,Db={lstat:Hb,stat:i5},Lb=[yY,xH,yX],Fb=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"]),uH=new Map;If=new Map});import{EventEmitter as gb}from"events";import{stat as Nb,Stats as hn}from"fs";import{readdir as Cb,stat as bb}from"fs/promises";import*as f1 from"path";function hH(J){return Array.isArray(J)?J:[J]}function ub(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 Eb(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(e5,"/"),z)J="/"+J;return J}function p5(J,z,Z){let Y=Eb(z);for(let X=0;X<J.length;X++){let G=J[X];if(G(Y,Z))return!0}return!1}function wb(J,z){if(J==null)throw TypeError("anymatch: specify first argument");let Y=hH(J).map((X)=>ub(X));if(z==null)return(X,G)=>{return p5(Y,X,G)};return p5(Y,z)}class z6{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!==t5&&J!==Ib)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 Cb(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=wH,this.items=hb,Object.freeze(this)}}class Z6{fsw;path;watchPath;fullWatchPath;dirParts;followSymlinks;statMethod;constructor(J,z,Z){this.fsw=Z;let Y=J;this.path=J=J.replace(xb,""),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?vb:mb}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 X6(J,z={}){let Z=new Y6(z);return Z.add(J),Z}var uf="/",kb="//",t5=".",Ib="..",Sb="string",yb,e5,Tb,xb,Ef=(J)=>typeof J==="object"&&J!==null&&!(J instanceof RegExp),r5=(J)=>{let z=hH(J).flat();if(!z.every((Z)=>typeof Z===Sb))throw TypeError(`Non-string provided as watch path: ${z}`);return z.map(J6)},o5=(J)=>{let z=J.replace(yb,uf),Z=!1;if(z.startsWith(kb))Z=!0;if(z=z.replace(e5,uf),Z)z=uf+z;return z},J6=(J)=>o5(f1.normalize(o5(J))),s5=(J="")=>(z)=>{if(typeof z==="string")return J6(f1.isAbsolute(z)?z:f1.join(J,z));else return z},Pb=(J,z)=>{if(f1.isAbsolute(J))return J;return f1.join(z,J)},hb,vb="stat",mb="lstat",Y6;var G6=C(()=>{c5();_5();/*! chokidar - MIT License (c) 2012 Paul Miller (paulmillr.com) */yb=/\\/g,e5=/\/\//g,Tb=/\..*\.(sw[px])$|~$|\.subl.*\.tmp/,xb=/^\.[/\\]/;hb=Object.freeze(new Set);Y6=class Y6 extends gb{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?hH(J.ignored):hH([]),awaitWriteFinish:z===!0?Z:typeof z==="object"?{...Z,...z}:!1};if($5)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=wH,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 xf(this),Object.freeze(Y)}_addIgnoredPath(J){if(Ef(J)){for(let z of this._ignoredPaths)if(Ef(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(Ef(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=r5(J);if(Y)X=X.map((G)=>{return Pb(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=r5(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)||t5;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(Tf)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 bb(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){Nb(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&&Tb.test(J))return!0;if(!this._userIgnored){let{cwd:Z}=this.options,X=(this.options.ignored||[]).map(s5(Z)),q=[...[...this._ignoredPaths].map(s5(Z)),...X];this._userIgnored=wb(q,void 0)}return this._userIgnored(J,z)}_isntIgnored(J,z){return!this._isIgnored(J,z)}_getWatchHelpers(J){return new Z6(J,this.options.followSymlinks,this)}_getWatchedDir(J){let z=f1.resolve(J);if(!this._watched.has(z))this._watched.set(z,new z6(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=m5(J,Z);return this._streams.add(Y),Y.once(l5,()=>{Y=void 0}),Y.once(yf,()=>{if(Y)this._streams.delete(Y),Y=void 0}),Y}}});import{mkdirSync as cb,statSync as db}from"fs";import{basename as Q6,dirname as nb,join as ib}from"path";function vH(J){if(J.debounceMs<=0)return()=>{};let z=nb(J.filePath),Z=new Set([Q6(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(Q6(V)))return;H()},B=(V)=>{try{let f=db(ib(z,V));return`${f.mtimeMs}:${f.size}`}catch{return null}};try{cb(z,{recursive:!0});let V=new Map;for(let f of Z)V.set(f,B(f));X=X6(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 wf=C(()=>{G6()});import{homedir as lb}from"os";import{basename as $b,join as ab}from"path";function hf(J=process.env.KOBE_HOME_DIR??lb()){return ab(J,".kobe","settings","keybindings.yaml")}function q6(J,z={}){let Z=z.debounceMs??Pf;if(Z<=0)return()=>{};let Y=z.path??hf(),X=$b(Y),G=X.replace(/\.yaml$/,".yml"),q=0;return J.publish("keybindings",{rev:q}),vH({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 Pf=200;var H6=C(()=>{wf()});class vf{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??_b,this.log=J.log??$z}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 _b=(J,z)=>{let Z=setTimeout(J,z);return Z.unref?.(),()=>clearTimeout(Z)};var j6=()=>{};import{spawn as pb}from"child_process";function Zk(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=pb("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 Xk(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 Gk(J,z){let Z=z.tickMs??GQ,Y=z.rand,X={tickMs:Z,settledMs:ob,noPrMs:rb,noRemoteMs:eb,failureBaseMs:sb,failureCapMs:tb,jitterRatio:Jk},G=[];for(let q of J.listTasks()){if(!Xk(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"){$z("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,SG({kind:"error",error:B.error},j,z.now,X,Y));continue}if(B.kind==="empty"){z.schedule.set(q.id,SG({kind:"empty"},j,z.now,X,Y));continue}let V=kU(B.view,z.at),f=J.getTask(q.id);if(!f){z.schedule.delete(q.id);continue}if(!dq(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,SG({kind:"pr",settled:U},j,z.now,X,Y))}catch(B){E1("pr-status-poller",B),z.schedule.set(q.id,SG({kind:"error",error:"network"},j,z.now,X,Y))}}return G}function B6(J,z=GQ,Z,Y=Yk){if(z<=0)return()=>{};let X=new Map,G=!1,H=setInterval(()=>{if(Z&&!Z())return;if(G)return;G=!0,Gk(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 GQ=30000,rb=300000,ob=600000,sb,tb=900000,eb=1800000,Jk=0.2,zk=1e4,Yk=async(J,z)=>{let Z=new AbortController,Y=!1,X=setTimeout(()=>{Y=!0,Z.abort()},zk);try{let G=await Zk(["pr","view",z,"--json",bU],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 H9({parseError:!0})}return H9({spawnError:G.spawnError,timedOut:Y,exitCode:G.status,stderr:G.stderr})}finally{clearTimeout(X)}};var f6=C(()=>{j9();S1();sb=GQ});function jk(J,z){return J.mtimeMs===z.mtimeMs&&J.completionId===z.completionId&&J.completionAt===z.completionAt}async function Bk(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 fk(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 W6{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=fk(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:RG(z)},this.entries.set(J,Z);else if(Z.vendor!==z)Z.vendor=z,Z.detector=RG(z);let Y=this.options.cadence??{timeoutMs:Qk,slowRetryMs:qk,minIntervalMs:Hk},X=this.options.run??Bk,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&&jk(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 V6(J,z,Z=mf,Y){if(Z<=0)return()=>{};let X=new W6(J,z,{hasSubscribers:Y});X.tick();let G=setInterval(()=>X.tick(),Z);return G.unref?.(),()=>{clearInterval(G),X.stop()}}var mf=1500,Qk=4000,qk=60000,Hk=1500;var U6=C(()=>{Nq();qX();Cq();S1();Yz()});import{readFileSync as Wk}from"fs";import{homedir as Vk}from"os";import{basename as Uk,join as Kk}from"path";function df(J=process.env.KOBE_HOME_DIR??Vk()){return Kk(J,".config","kobe","state.json")}function K6(J){let z={};try{let B=JSON.parse(Wk(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"&&Lk.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 Fk(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 D6(J,z={}){let Z=z.debounceMs??cf;if(Z<=0)return()=>{};let Y=z.pollMs??Dk,X=z.statePath??df(),G=Uk(X),q=K6(X);return J.publish("ui-prefs",q),vH({filePath:X,matchBasenames:[G],debounceMs:Z,pollMs:Y,onTrigger:()=>{try{let j=K6(X);if(Fk(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 cf=200,Dk=250,Lk;var L6=C(()=>{wf();Lk=["primary","success","info"]});function TX(J){return TY.includes(J)?J:"auto"}var TY,F6,VZ="editor.kind",$Z="editor.customCommand",mH="auto";var cH=C(()=>{TY=["auto","vim","nvim","nano","emacs","custom"],F6=["nvim","vim","emacs","nano"]});function uY(J){return J==="taskpanel"?"taskpanel":"chattab"}var UZ="settings.surface",xY="chattab";function M6(J){return J>="0"&&J<="7"}function A6(J,z){let Z=[],Y="",X=()=>{if(Y.length>0){for(let q of Mk.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(M6(H)){let j="",B=G+1;while(B<J.length&&j.length<3&&M6(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:Ok.decode(new Uint8Array(Z)),end:G}}function EY(J){if(J.length===0||J[0]!=='"')return J;return A6(J,0).value}function R6(J,z){if(J[0]==='"'){let Y=A6(J,0);if(J.startsWith(z,Y.end))return{orig:Y.value,neu:EY(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:EY(J.slice(Z+z.length))}}function Ak(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=R6(J," => ");if(Z)return{path:Z.neu,origPath:Z.orig};return{path:EY(J)}}function dH(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=R6(q," -> ");if(H){z.push({x:X,y:G,path:H.neu,origPath:H.orig});continue}}z.push({x:X,y:G,path:EY(q)})}return z}function O6(J){if(J==="-")return null;let z=Number.parseInt(J,10);return Number.isNaN(z)?null:z}function g6(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=Ak(q);if(H.path.length===0)continue;z.push({path:H.path,...H.origPath!==void 0?{origPath:H.origPath}:{},added:O6(Y.slice(0,X)),deleted:O6(Y.slice(X+1,G))})}return z}var Mk,Ok;var nH=C(()=>{Mk=new TextEncoder,Ok=new TextDecoder});function _J(J=process.env){return{...J,...nf}}var nf;var aZ=C(()=>{nf={GIT_OPTIONAL_LOCKS:"0"}});async function xX(J,z,Z={}){if(!J)return{stdout:"",stderr:"worktreePath is required",status:-1};let Y=(Z.execForPath??jZ)(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:nf,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 Rk(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 iH(J,z,Z={}){let Y=Rk(J,z);if(!Y)return null;let X=(Z.execForPath??jZ)(J);try{return await X.readFile(Y)}catch{return null}}var lH=C(()=>{Az();aZ()});import{statSync as gk}from"fs";async function QQ(J,z){let Z=await xX(J,z,{timeoutMs:Nk}),Y=Z.status??-1;return{ok:Y===0,stdout:Z.stdout,stderr:Z.stderr,code:Y}}function bk(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 N6(J){if(J==="/dev/null")return null;let z=J;if(z.startsWith('"'))z=EY(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 C6(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=N6(G[1]);if(X===null){let q=Y.match(/^--- (.*)$/m);if(q)X=N6(q[1])}if(X===null){let q=Y.match(/^diff --git a\/.* b\/(.*)$/m);if(q)X=EY(q[1])}if(X===null)continue;z.set(X,Y.endsWith(`
|
|
69
69
|
`)?Y:`${Y}
|
|
70
|
-
`)}return z}async function
|
|
70
|
+
`)}return z}async function kk(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 Ik(J,z){let Z=await QQ(J,["diff","--no-color","--no-index","--","/dev/null",z]);if(Z.stdout.trim())return Z.stdout.endsWith(`
|
|
71
71
|
`)?Z.stdout:`${Z.stdout}
|
|
72
|
-
`;return""}async function
|
|
73
|
-
`),A={files:U,raw:O};return Response.json(A)}var Rk=15000,gk=8;var b6=C(()=>{Az();dH();iH()});import{isAbsolute as kk}from"path";function I6(J){return typeof J==="string"&&J.length>0&&/^[A-Za-z0-9_-]+$/.test(J)}function Sk(J){return typeof J==="string"&&J.length>0&&/^[A-Za-z0-9._-]+$/.test(J)&&!J.includes("..")}async function yk(J){let z=J.searchParams.get("worktreePath"),Z=J.searchParams.get("vendor")??"claude";if(!z||!kk(z))return Response.json({error:"worktreePath must be an absolute path"},{status:400});if(!I6(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 Tk(J){let z=J.searchParams.get("vendor")??"claude",Z=J.searchParams.get("sessionId");if(!I6(z))return Response.json({error:"invalid vendor"},{status:400});if(!Sk(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 S6(J,z){if(z.pathname!==k6&&z.pathname!==Ik)return null;if(J.method!=="GET")return Response.json({error:"method not allowed"},{status:405});return z.pathname===k6?yk(z):Tk(z)}var k6="/api/history/sessions",Ik="/api/history/messages";var y6=C(()=>{qZ()});import{mkdir as xk,readFile as uk,writeFile as Ek}from"fs/promises";import{join as T6}from"path";function x6(){return T6(KJ(),"notes")}function u6(J){return typeof J==="string"&&J.length>0&&/^[A-Za-z0-9_-]+$/.test(J)}function E6(J){return T6(x6(),`${J}.md`)}async function Pk(J){let z=J.searchParams.get("taskId");if(!u6(z))return Response.json({error:"invalid taskId"},{status:400});try{let Z="";try{Z=await uk(E6(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 hk(J){let z;try{z=await J.json()}catch{return Response.json({error:"invalid JSON body"},{status:400})}if(!u6(z.taskId))return Response.json({error:"invalid taskId"},{status:400});if(typeof z.markdown!=="string")return Response.json({error:"markdown must be a string"},{status:400});try{return await xk(x6(),{recursive:!0}),await Ek(E6(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!==wk)return null;if(J.method==="GET")return Pk(z);if(J.method==="PUT")return hk(J);return Response.json({error:"method not allowed"},{status:405})}var wk="/api/notes";var P6=C(()=>{t1()});function lf(J,z,Z=[]){if(z===void 0)return null;if(typeof z!=="string")return lf(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 lf(J,Y,[...Z,z])}function nf(J){return Math.max(0,Math.min(255,Math.round(J)))}function QQ(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`#${(nf(G(Y,16)+(G(X,16)-G(Y,16))*Z)<<16|nf(G(Y,8)+(G(X,8)-G(Y,8))*Z)<<8|nf(G(Y,0)+(G(X,0)-G(Y,0))*Z)).toString(16).padStart(6,"0")}`}function mk(J){let z=(H)=>lf(J,J.theme[H]),Z=z("background"),Y=z("text");if(!Z||!Y)return null;let X=z("textMuted")??QQ(Y,Z,0.35),G=z("primary")??Y,q=z("border")??QQ(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")??QQ(q,Y,0.3),fg:Y,muted:X,subtle:QQ(X,Z,0.35),primary:G,"primary-hover":QQ(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 h6(J,z){if(z.pathname!==dk)return null;if(J.method!=="GET")return Response.json({error:"method not allowed"},{status:405});return Response.json({themes:ck})}var vk,ck,dk="/api/themes";var v6=C(()=>{zH();ZH();YH();XH();GH();QH();qH();vk={claude:DX,conductor:LX,dracula:FX,nord:MX,opencode:OX,"osaka-jade":AX,tokyonight:RX};ck=Object.fromEntries(Object.entries(vk).map(([J,z])=>[J,mk(z)]).filter((J)=>J[1]!==null))});import{createHash as nk,randomUUID as ik}from"crypto";import{mkdir as lk}from"fs/promises";import{join as $f,resolve as $k}from"path";function pk(J){return nk("sha1").update(J).digest("hex").slice(0,16)}async function sk(J){let z=Number.parseInt(J.headers.get("content-length")??"",10);if(Number.isFinite(z)&&z>m6)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>m6)return Response.json({error:"asset too large"},{status:413});let G=ak[X.type];if(!G)return Response.json({error:`unsupported content-type: ${X.type||"unknown"}`},{status:415});try{let q=pk(Y),H=$f(Y9(),q);await lk(H,{recursive:!0});let B=`${ik()}.${G}`;return await Bun.write($f(H,B),X),Response.json({url:`${lH}/${q}/${B}`})}catch(q){return Response.json({error:q instanceof Error?q.message:String(q)},{status:500})}}async function tk(J){let z=J.slice(lH.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(!rk.test(Y)||!ok.test(X))return Response.json({error:"invalid asset path"},{status:400});let G=Y9(),q=$k(G,Y,X);if(q!==$f(G,Y,X)||!q.startsWith(`${G}/`))return Response.json({error:"invalid asset path"},{status:400});let H=X.slice(X.lastIndexOf(".")+1).toLowerCase(),j=_k[H];if(!j)return Response.json({error:"invalid asset path"},{status:400});let B=Bun.file(q);if(!await B.exists())return Response.json({error:"not found"},{status:404});return new Response(B,{headers:{"content-type":j,"cache-control":"public, max-age=31536000, immutable","x-content-type-options":"nosniff"}})}async function c6(J,z){if(z.pathname===lH){if(J.method==="POST")return sk(J);return Response.json({error:"method not allowed"},{status:405})}if(z.pathname.startsWith(`${lH}/`)){if(J.method==="GET")return tk(z.pathname);return Response.json({error:"method not allowed"},{status:405})}return null}var lH="/api/issue-assets",m6=10485760,ak,_k,rk,ok;var d6=C(()=>{t1();ak={"image/png":"png","image/jpeg":"jpg","image/gif":"gif","image/webp":"webp"},_k={png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",webp:"image/webp"};rk=/^[a-f0-9]{16}$/,ok=/^[A-Za-z0-9_-]+\.[a-z0-9]+$/});function n6(J,z=500){return Response.json({error:J instanceof Error?J.message:String(J)},{status:z})}function i6(J){let z=J instanceof Error?J.message:String(J);if(/^no issue #\d+$/.test(z))return 404;if(z==="repoRoot is required"||z==="repoRoot does not exist"||z==="repoRoot is not a git repository"||z==="missing op"||z==="create requires a non-empty title"||z==="body must be a string"||z==="setStatus requires a numeric id"||z.startsWith("invalid status:")||z==="update requires a numeric id"||z==="title must be a non-empty string"||z==="link requires a numeric id"||z==="link requires a non-empty taskId"||z==="unlink requires a numeric id"||z==="delete requires a numeric id"||z.startsWith("unknown op type:"))return 400;return 500}async function ek(J,z){let 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 n6(Y,i6(Y))}}async function JI(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 n6(X,i6(X))}}async function l6(J,z,Z){if(z.pathname!=="/api/issues")return null;if(J.method==="GET")return ek(Z,z);if(J.method==="POST")return JI(Z,J);return Response.json({error:"method not allowed"},{status:405})}function $6(J){return zI.has(String(J??"").trim().toLowerCase())}function a6(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 ZI(J){let z=a6(J);return z!==null&&$6(z)}function _6(J,z={}){if(!J)return!0;if(ZI(J))return!0;let Z=z.allowedHost?.trim();if(!Z)return!1;let Y=a6(J);return Y!==null&&Y===Z}function p6(J){let z=String(J??"").trim();return z&&!$6(z)?z:void 0}var zI;var r6=C(()=>{zI=new Set(["localhost","127.0.0.1","::1","[::1]"])});var YI,o6;var s6=C(()=>{YI=["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"],o6=new Set(YI)});var aH={};H1(aH,{resolveRepoInit:()=>J4,resolveEngineLaunchInit:()=>uX});import{existsSync as e6,readFileSync as XI}from"fs";import{join as $H}from"path";function QI(J){return e6($H(J,t6))?`sh ${t6}`:void 0}function qI(J){let z=$H(J,GI);if(!e6(z))return;try{let Z=XI(z,"utf8");return Z.trim().length>0?Z:void 0}catch{return}}function J4(J,z){let Z=J?K9(J):{},Y=QI(z)??Z.initScript,X=qI(z)??Z.initPrompt;return{initScript:Y&&Y.trim().length>0?Y:void 0,initPrompt:X&&X.trim().length>0?X:void 0}}function HI(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 uX(J,z,Z={kind:"repo-init"}){let Y=J4(J,z);return{initScript:Y.initScript,firstMessage:HI(Z,Y)}}var t6,GI;var EX=C(()=>{S1();t6=$H(".kobe","init.sh"),GI=$H(".kobe","init-prompt.md")});async function jI(J,z){let{task:Z}=await J.request("task.get",{taskId:z});return Z}async function af(J,z){let Z=await jI(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 z4(J,z){let{task:Z,worktreePath:Y}=await af(J,z),X=y1(z);if(!await F1(X)){let G=uX(Z.repo??"",Y,{kind:"repo-init"});if(!await tG({name:X,cwd:Y,command:EJ(Z.vendor,Z.modelEffort),taskId:z,vendor:Z.vendor,launchInit:G}))throw Error(`failed to start tmux session for ${z}`)}return{session:X,worktreePath:Y}}function BI(J){return $Y(J,{bareSafe:!0})}async function Z4(J,z){let{task:Z,worktreePath:Y}=await af(J,z),X=Z.kind==="main"?void 0:z,G=Z.kind==="main"?z:void 0,q=[...aq($q(EJ(Z.vendor,Z.modelEffort),Z.vendor,X),Z.vendor,G)],H=uX(Z.repo??"",Y,{kind:"none"}),j=BI(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
|
|
72
|
+
`;return""}async function b6(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(!PZ(Y))return Response.json({error:"worktreePath does not exist"},{status:400});if(!jZ(Y).isRemote)try{if(!gk(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 QQ(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([QQ(Y,["status","--porcelain=v1","-z","--untracked-files=all"]),QQ(Y,["diff","--no-color"]),QQ(Y,["diff","--no-color","--staged"])]);if(!q.ok)return Response.json({error:`git status failed: ${q.stderr.trim()}`},{status:500});let B=C6(H.stdout),V=C6(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":bk(y),staged:c,patch:d})}if(L.length>0){let g=await kk(L,Ck,(E)=>Ik(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 Nk=15000,Ck=8;var k6=C(()=>{Az();nH();lH()});import{isAbsolute as Sk}from"path";function S6(J){return typeof J==="string"&&J.length>0&&/^[A-Za-z0-9_-]+$/.test(J)}function Tk(J){return typeof J==="string"&&J.length>0&&/^[A-Za-z0-9._-]+$/.test(J)&&!J.includes("..")}async function xk(J){let z=J.searchParams.get("worktreePath"),Z=J.searchParams.get("vendor")??"claude";if(!z||!Sk(z))return Response.json({error:"worktreePath must be an absolute path"},{status:400});if(!S6(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 uk(J){let z=J.searchParams.get("vendor")??"claude",Z=J.searchParams.get("sessionId");if(!S6(z))return Response.json({error:"invalid vendor"},{status:400});if(!Tk(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 y6(J,z){if(z.pathname!==I6&&z.pathname!==yk)return null;if(J.method!=="GET")return Response.json({error:"method not allowed"},{status:405});return z.pathname===I6?xk(z):uk(z)}var I6="/api/history/sessions",yk="/api/history/messages";var T6=C(()=>{qZ()});import{mkdir as Ek,readFile as wk,writeFile as Pk}from"fs/promises";import{join as x6}from"path";function u6(){return x6(KJ(),"notes")}function E6(J){return typeof J==="string"&&J.length>0&&/^[A-Za-z0-9_-]+$/.test(J)}function w6(J){return x6(u6(),`${J}.md`)}async function vk(J){let z=J.searchParams.get("taskId");if(!E6(z))return Response.json({error:"invalid taskId"},{status:400});try{let Z="";try{Z=await wk(w6(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 mk(J){let z;try{z=await J.json()}catch{return Response.json({error:"invalid JSON body"},{status:400})}if(!E6(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 Ek(u6(),{recursive:!0}),await Pk(w6(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 P6(J,z){if(z.pathname!==hk)return null;if(J.method==="GET")return vk(z);if(J.method==="PUT")return mk(J);return Response.json({error:"method not allowed"},{status:405})}var hk="/api/notes";var h6=C(()=>{t1()});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 lf(J){return Math.max(0,Math.min(255,Math.round(J)))}function qQ(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`#${(lf(G(Y,16)+(G(X,16)-G(Y,16))*Z)<<16|lf(G(Y,8)+(G(X,8)-G(Y,8))*Z)<<8|lf(G(Y,0)+(G(X,0)-G(Y,0))*Z)).toString(16).padStart(6,"0")}`}function dk(J){let z=(H)=>$f(J,J.theme[H]),Z=z("background"),Y=z("text");if(!Z||!Y)return null;let X=z("textMuted")??qQ(Y,Z,0.35),G=z("primary")??Y,q=z("border")??qQ(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")??qQ(q,Y,0.3),fg:Y,muted:X,subtle:qQ(X,Z,0.35),primary:G,"primary-hover":qQ(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 v6(J,z){if(z.pathname!==ik)return null;if(J.method!=="GET")return Response.json({error:"method not allowed"},{status:405});return Response.json({themes:nk})}var ck,nk,ik="/api/themes";var m6=C(()=>{ZH();YH();XH();GH();QH();qH();HH();ck={claude:DX,conductor:LX,dracula:FX,nord:MX,opencode:OX,"osaka-jade":AX,tokyonight:RX};nk=Object.fromEntries(Object.entries(ck).map(([J,z])=>[J,dk(z)]).filter((J)=>J[1]!==null))});import{createHash as lk,randomUUID as $k}from"crypto";import{mkdir as ak}from"fs/promises";import{join as af,resolve as _k}from"path";function ok(J){return lk("sha1").update(J).digest("hex").slice(0,16)}async function ek(J){let z=Number.parseInt(J.headers.get("content-length")??"",10);if(Number.isFinite(z)&&z>c6)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>c6)return Response.json({error:"asset too large"},{status:413});let G=pk[X.type];if(!G)return Response.json({error:`unsupported content-type: ${X.type||"unknown"}`},{status:415});try{let q=ok(Y),H=af(XB(),q);await ak(H,{recursive:!0});let B=`${$k()}.${G}`;return await Bun.write(af(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 JI(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(!sk.test(Y)||!tk.test(X))return Response.json({error:"invalid asset path"},{status:400});let G=XB(),q=_k(G,Y,X);if(q!==af(G,Y,X)||!q.startsWith(`${G}/`))return Response.json({error:"invalid asset path"},{status:400});let H=X.slice(X.lastIndexOf(".")+1).toLowerCase(),j=rk[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 d6(J,z){if(z.pathname===$H){if(J.method==="POST")return ek(J);return Response.json({error:"method not allowed"},{status:405})}if(z.pathname.startsWith(`${$H}/`)){if(J.method==="GET")return JI(z.pathname);return Response.json({error:"method not allowed"},{status:405})}return null}var $H="/api/issue-assets",c6=10485760,pk,rk,sk,tk;var n6=C(()=>{t1();pk={"image/png":"png","image/jpeg":"jpg","image/gif":"gif","image/webp":"webp"},rk={png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",webp:"image/webp"};sk=/^[a-f0-9]{16}$/,tk=/^[A-Za-z0-9_-]+\.[a-z0-9]+$/});function i6(J,z=500){return Response.json({error:J instanceof Error?J.message:String(J)},{status:z})}function l6(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 zI(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 i6(Y,l6(Y))}}async function ZI(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 i6(X,l6(X))}}async function $6(J,z,Z){if(z.pathname!=="/api/issues")return null;if(J.method==="GET")return zI(Z,z);if(J.method==="POST")return ZI(Z,J);return Response.json({error:"method not allowed"},{status:405})}function a6(J){return YI.has(String(J??"").trim().toLowerCase())}function _6(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 XI(J){let z=_6(J);return z!==null&&a6(z)}function p6(J,z={}){if(!J)return!0;if(XI(J))return!0;let Z=z.allowedHost?.trim();if(!Z)return!1;let Y=_6(J);return Y!==null&&Y===Z}function r6(J){let z=String(J??"").trim();return z&&!a6(z)?z:void 0}var YI;var o6=C(()=>{YI=new Set(["localhost","127.0.0.1","::1","[::1]"])});var GI,s6;var t6=C(()=>{GI=["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"],s6=new Set(GI)});var _H={};H1(_H,{resolveRepoInit:()=>z4,resolveEngineLaunchInit:()=>uX});import{existsSync as J4,readFileSync as QI}from"fs";import{join as aH}from"path";function HI(J){return J4(aH(J,e6))?`sh ${e6}`:void 0}function jI(J){let z=aH(J,qI);if(!J4(z))return;try{let Z=QI(z,"utf8");return Z.trim().length>0?Z:void 0}catch{return}}function z4(J,z){let Z=J?DB(J):{},Y=HI(z)??Z.initScript,X=jI(z)??Z.initPrompt;return{initScript:Y&&Y.trim().length>0?Y:void 0,initPrompt:X&&X.trim().length>0?X:void 0}}function BI(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 uX(J,z,Z={kind:"repo-init"}){let Y=z4(J,z);return{initScript:Y.initScript,firstMessage:BI(Z,Y)}}var e6,qI;var EX=C(()=>{S1();e6=aH(".kobe","init.sh"),qI=aH(".kobe","init-prompt.md")});async function fI(J,z){let{task:Z}=await J.request("task.get",{taskId:z});return Z}async function _f(J,z){let Z=await fI(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 Z4(J,z){let{task:Z,worktreePath:Y}=await _f(J,z),X=y1(z);if(!await F1(X)){let G=uX(Z.repo??"",Y,{kind:"repo-init"});if(!await eG({name:X,cwd:Y,command:EJ(Z.vendor,Z.modelEffort),taskId:z,vendor:Z.vendor,launchInit:G}))throw Error(`failed to start tmux session for ${z}`)}return{session:X,worktreePath:Y}}function WI(J){return $Y(J,{bareSafe:!0})}async function Y4(J,z){let{task:Z,worktreePath:Y}=await _f(J,z),X=Z.kind==="main"?void 0:z,G=Z.kind==="main"?z:void 0,q=[..._q(aq(EJ(Z.vendor,Z.modelEffort),Z.vendor,X),Z.vendor,G)],H=uX(Z.repo??"",Y,{kind:"none"}),j=WI(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 X4(J,z){let{worktreePath:Z}=await _f(J,z),Y=process.env.SHELL?.trim()||"/bin/zsh";return{cwd:Z,command:[Y,"-il"]}}async function G4(J){let z=y1(J);await lz(z).catch(()=>{}),await vJ(z).catch(()=>{})}var Q4=C(()=>{Xz();aQ();EX();w1();HJ()});import{existsSync as VI}from"fs";import{join as q4,normalize as B4}from"path";function UI(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
75
|
data: ${JSON.stringify(j)}
|
|
76
76
|
|
|
77
77
|
`))}catch{}}),Z=setInterval(()=>{try{G.enqueue(Y.encode(`: ping
|
|
78
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
|
|
80
|
-
`).map((Y)=>Number.parseInt(Y.trim(),10)).filter((Y)=>Number.isFinite(Y)&&Y!==process.pid)}catch{return[]}}async function
|
|
81
|
-
`,"utf8");async function G0(){if(j.isStopping())return;j.markStopping(),await z.onStop?.(),setTimeout(()=>{X0.close().catch((w)=>
|
|
82
|
-
`);while(R!==-1){let e=w.buffer.slice(0,R);if(w.buffer=w.buffer.slice(R+1),e.trim().length>0)try{let x=JSON.parse(e);if(x.type!=="request")throw Error("daemon only accepts request frames from clients");b(x,w)}catch(x){
|
|
83
|
-
`)}}return X0}async function hX(J){try{let z=await
|
|
84
|
-
`,q=await GS(this.tmpPath,"w",420);try{await q.writeFile(G,"utf8"),await q.sync()}finally{await q.close()}await QS(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 w4(this.lockPath)}}async readDiskTasks(){let J;try{J=await n4(this.path,"utf8")}catch(Z){if(Z.code==="ENOENT")return[];throw Z}let z;try{z=JSON.parse(J)}catch{return[]}return $4(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:RG(c4()),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 i4(this.path)}catch(J){if(J.code!=="ENOENT")throw J}try{await i4(this.tmpPath)}catch(J){if(J.code!=="ENOENT")throw J}this.cache={version:KZ,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:KZ,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 $4(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:KZ,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:KZ,tasks:[]};let X=Array.isArray(Z.tasks)?Z.tasks:[],G=[];for(let q of X){let H=VS(q);if(H)G.push(H);else console.warn(`[kobe] dropping malformed task entry from ${z}: ${JSON.stringify(q)}`)}return{version:KZ,tasks:G}}function VS(J){if(!J||typeof J!=="object")return null;let z=J;if(typeof z.id!=="string"||typeof z.title!=="string"||typeof z.repo!=="string"||typeof z.branch!=="string"||typeof z.worktreePath!=="string"||typeof z.status!=="string"||typeof z.createdAt!=="string"||typeof z.updatedAt!=="string")return null;if(!FS(z.status))return null;let 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:RG(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:CZ(typeof z.vendor==="string"?z.vendor:void 0),prStatus:US(z.prStatus),...typeof z.position==="number"&&Number.isFinite(z.position)?{position:z.position}:{},...typeof z.modelEffort==="string"&&z.modelEffort.length>0?{modelEffort:z.modelEffort}:{},createdAt:z.createdAt,updatedAt:z.updatedAt}}function US(J){if(!J||typeof J!=="object"||Array.isArray(J))return;let z=J;if(!KS(z.provider)||!DS(z.lifecycle)||!LS(z.checkState))return;return{provider:z.provider,lifecycle:z.lifecycle,checkState:z.checkState,...typeof z.number==="number"&&Number.isFinite(z.number)?{number:z.number}:{},...typeof z.url==="string"?{url:z.url}:{},...typeof z.title==="string"?{title:z.title}:{},...typeof z.baseRef==="string"?{baseRef:z.baseRef}:{},...typeof z.headRef==="string"?{headRef:z.headRef}:{},...typeof z.reviewDecision==="string"?{reviewDecision:z.reviewDecision}:{},...typeof z.mergeable==="string"?{mergeable:z.mergeable}:{},...typeof z.lastCheckedAt==="string"?{lastCheckedAt:z.lastCheckedAt}:{},...typeof z.lastError==="string"?{lastError:z.lastError}:{}}}function KS(J){return J==="github"||J==="gitlab"||J==="bitbucket"||J==="unknown"}function DS(J){return J==="creating"||J==="open"||J==="ready_to_merge"||J==="merged"||J==="closed"||J==="unknown"}function LS(J){return J==="none"||J==="pending"||J==="passing"||J==="failing"||J==="unknown"}function FS(J){return J==="backlog"||J==="in_progress"||J==="in_review"||J==="done"||J==="canceled"||J==="error"}var jS=(J)=>new Promise((z)=>setTimeout(z,J)),BS=25,fS=5000,KZ=3;var BQ=C(()=>{Yz();s1();P4();d4()});var eH;var a4=C(()=>{eH=class eH 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 r4={};H1(r4,{GitWorktreeManager:()=>Jj});import p4 from"fs";import yz from"path";class Jj{execDeps;constructor(J=MS){this.execDeps=J}ctxFor(J){let z=this.execDeps.remoteBasePath(J);return z?{exec:this.execDeps.execForRepo(J),dir:z,remote:!0}:{exec:this.execDeps.execForRepo(J),dir:J,remote:!1}}async runGit(J,z,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 eH(z,Z.cwd,X);return X}async create(J,z,Z,Y){let X=this.ctxFor(J);if(pZ("repo",X.dir),pZ("path",Z),!z)throw Error("create(): branch must be a non-empty string");if(await X.exec.exists(Z)){let j=await this.tryDescribe(X,Z);if(j){if(j.branch!==z)throw Error(`worktree at ${Z} is on branch '${j.branch}', refusing to hijack to '${z}'`);return j}throw Error(`create(): ${Z} exists but is not a registered git worktree`)}await X.exec.mkdirp(yz.dirname(Z));let q=await this.branchExists(X,z)?["worktree","add",Z,z]:Y?["worktree","add","-b",z,Z,Y]:["worktree","add","-b",z,Z];await this.runGit(X.exec,q,{cwd:X.dir});let H=await this.tryDescribe(X,Z);if(!H)throw Error(`create(): git reported success but ${Z} is not a worktree`);if(H.branch!==z)throw Error(`create(): post-condition failed \u2014 expected branch '${z}' at ${Z}, got '${H.branch}'`);return H}async createForTask(J){let z=this.execDeps.remoteBasePath(J.repo),Z=z?iU(z,J.slug):mU(J.repo,J.slug);return this.create(J.repo,J.branch,Z,J.baseRef)}async remove(J,z){pZ("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);pZ("repo",z.dir);let Z=await this.runGit(z.exec,["worktree","list","--porcelain"],{cwd:z.dir}),Y=ef(Z.stdout),X=[];for(let G of Y){if(!G.path)continue;let q=z.remote?_4(z.dir,G.path):OB(J,G.path);if(!q)continue;if(!G.branch||G.detached)continue;let H=fQ(q),j=fQ(G.path),B=yz.relative(H,j),V=yz.join(q,B),f=await this.isDirty(G.path);X.push({path:V,branch:G.branch,head:G.head??"",dirty:f})}return X}async listAll(J){let z=this.ctxFor(J);pZ("repo",z.dir);let Z=await this.runGit(z.exec,["worktree","list","--porcelain"],{cwd:z.dir}),Y=ef(Z.stdout),X=z.remote?z.dir:fQ(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:fQ(q.path))===X)continue;let H=await this.isDirty(q.path);G.push({path:q.path,branch:q.branch,head:q.head??"",dirty:H,kobeManaged:z.remote?_4(z.dir,q.path)!==null:dU(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 p4.statSync(z).mtimeMs}catch{}return 0}async isDirty(J){pZ("path",J);let z=this.execDeps.execForPath(J);return(await this.runGit(z,["status","--porcelain"],{cwd:J})).stdout.length>0}async currentBranch(J){pZ("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(pZ("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=ef(Z.stdout),X=(H)=>J.remote?H:fQ(H),G=X(z),q=Y.find((H)=>H.path&&X(H.path)===G);if(!q||!q.path||!q.branch||q.detached)return null;return{path:z,branch:q.branch,head:q.head??"",dirty:await this.isDirty(q.path)}}async branchExists(J,z){let Z=`refs/heads/${z}`;return(await this.runGit(J.exec,["show-ref","--verify","--quiet",Z],{cwd:J.dir,allowFail:!0})).exitCode===0}async findRepoFor(J,z){try{let Z=await this.runGit(J,["rev-parse","--git-common-dir"],{cwd:z,allowFail:!0});if(Z.exitCode!==0)return null;let Y=Z.stdout.trim();if(!Y)return null;let X=yz.isAbsolute(Y)?Y:yz.resolve(z,Y);return yz.basename(X)===".git"?yz.dirname(X):X}catch(Z){if(Z instanceof eH)return null;throw Z}}}function ef(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
|
|
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 KI(J,z,Z){try{let{name:Y,payload:X}=await J.json();if(!Y)return Response.json({error:"missing rpc name"},{status:400});if(!s6.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 DI(){try{let z=(await GZ()).map((Z)=>({id:Z,label:MY(Z),effortLevels:JJ(Z).effortLevels}));return Response.json({engines:z.length>0?z:[{id:"claude",label:"Claude"}]})}catch(J){return Response.json({error:J instanceof Error?J.message:String(J)},{status:500})}}function LI(){return Response.json({api:OY()})}function FI(){return Response.json({projects:SJ()})}function _Z(J,z=""){return typeof J==="string"?J:z}function MI(J,z){return typeof J==="boolean"?J:z}function K4(J){let z=J.customEngineIds;if(!Array.isArray(z))return[];return z.filter((Z)=>typeof Z==="string"&&U4.test(Z)&&!UJ(Z))}function OI(J){return J.split(/[-_]+/).filter(Boolean).map((z)=>`${z.slice(0,1).toUpperCase()}${z.slice(1)}`).join(" ")}function AI(J,z){return _Z(J[gz(z)]).trim()||MY(z)}function RI(J,z){return _Z(J[Rz(z)]).trim()||EG(z).join(" ")}function D4(){let J=OJ(),z=K4(J),Z=[...ZY,...z],Y=_Z(J.lastSelectedVendor,"claude"),X=_Z(J.focusAccent,"primary");return Response.json({activeTheme:_Z(J.activeTheme,"claude"),transparentBackground:MI(J.transparentBackground,!1),focusAccent:V4.includes(X)?X:"primary",notificationsToast:J["notifications.toast.enabled"]!==!1,notificationsSound:J["notifications.sound.enabled"]!==!1,settingsSurface:uY(J[UZ]??xY),editorKind:TX(J[VZ]??mH),editorCustomCommand:_Z(J[$Z]),remoteProjects:J["experimental.remoteProjects"]===!0,archivedHistoryPreview:J["experimental.archivedHistoryPreview"]===!0,autoStatus:J[LY]===!0,dispatcher:J[FY]===!0,defaultEngine:Y,engines:Z.map((G)=>({id:G,label:AI(J,G),command:RI(J,G),isBuiltin:UJ(G),isCustom:!UJ(G),isDefault:G===Y}))})}function HQ(J,z,Z){if(typeof Z==="string")J[z]=Z.trim()}function wY(J,z,Z){if(typeof Z==="boolean")J[z]=Z}async function gI(J){try{let z=await J.json(),Z={};if(HQ(Z,"activeTheme",z.activeTheme),wY(Z,"transparentBackground",z.transparentBackground),V4.includes(z.focusAccent))Z.focusAccent=z.focusAccent;if(wY(Z,"notifications.toast.enabled",z.notificationsToast),wY(Z,"notifications.sound.enabled",z.notificationsSound),z.settingsSurface==="chattab"||z.settingsSurface==="taskpanel")Z[UZ]=z.settingsSurface;if(TY.includes(z.editorKind))Z[VZ]=z.editorKind;HQ(Z,$Z,z.editorCustomCommand),wY(Z,"experimental.remoteProjects",z.remoteProjects),wY(Z,"experimental.archivedHistoryPreview",z.archivedHistoryPreview),wY(Z,LY,z.autoStatus),wY(Z,FY,z.dispatcher),HQ(Z,"lastSelectedVendor",z.defaultEngine);let Y=OJ(),X=K4(Y),G=new Set([...ZY,...X]),q=Array.isArray(z.engineUpdates)?z.engineUpdates:[];for(let H of q){if(!H||typeof H!=="object")continue;let j=H;if(typeof j.id!=="string"||!G.has(j.id))continue;HQ(Z,Rz(j.id),j.command),HQ(Z,gz(j.id),j.label)}if(z.addEngine&&typeof z.addEngine==="object"){let H=z.addEngine,j=typeof H.id==="string"?H.id.trim().toLowerCase():"";if(!U4.test(j)||UJ(j)||G.has(j))return Response.json({error:"invalid or duplicate engine id"},{status:400});Z.customEngineIds=[...X,j],Z[Rz(j)]=_Z(H.command).trim();let B=_Z(H.label).trim();Z[gz(j)]=B&&B!==j?B:OI(j)}if(typeof z.removeEngine==="string"){let H=z.removeEngine;if(!UJ(H)){if(Z.customEngineIds=X.filter((j)=>j!==H),Z[Rz(H)]=void 0,Z[gz(H)]=void 0,Y.lastSelectedVendor===H)Z.lastSelectedVendor="claude"}}if(Object.keys(Z).length>0)kZ(Z);return D4()}catch(z){return Response.json({error:z instanceof Error?z.message:String(z)},{status:400})}}async function NI(J,z){try{let{taskId:Z}=await J.json();if(!Z)return Response.json({error:"missing taskId"},{status:400});return Response.json(await Z4(z,Z))}catch(Z){return Response.json({error:Z instanceof Error?Z.message:String(Z)},{status:500})}}async function H4(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 L4(){return Response.json({review:x1(pH.review)??null,pr:x1(pH.pr)??null})}async function CI(J){try{let z=await J.json();if(typeof z.review==="string")QJ(pH.review,z.review);if(typeof z.pr==="string")QJ(pH.pr,z.pr);return L4()}catch(z){return Response.json({error:z instanceof Error?z.message:String(z)},{status:400})}}async function bI(J,z){let Y=B4(q4(z,J==="/"?"/index.html":J));if(!Y.startsWith(z))return new Response("forbidden",{status:403});let X=Bun.file(VI(Y)?Y:q4(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 kI(J){let{link:z,sseSends:Z,staticDir:Y}=J,X=J.tearDownSession??((G)=>void G4(G));return async function(q){let H=new URL(q.url);if(H.pathname===W4)return new Response(f4);if(!p6(q.headers.get("origin"),{allowedHost:J.allowedHost}))return new Response("forbidden: cross-origin request rejected",{status:403});if(H.pathname==="/events")return UI((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 KI(q,z,X);if(H.pathname==="/api/session"&&q.method==="POST")return NI(q,z);if(H.pathname==="/api/engine-spec"&&q.method==="GET")return H4(H,z,Y4);if(H.pathname==="/api/terminal-spec"&&q.method==="GET")return H4(H,z,X4);if(H.pathname==="/api/engines"&&q.method==="GET")return DI();if(H.pathname==="/api/cli-invocation"&&q.method==="GET")return LI();if(H.pathname==="/api/projects"&&q.method==="GET")return FI();if(H.pathname==="/api/settings"&&q.method==="GET")return D4();if(H.pathname==="/api/settings"&&q.method==="PATCH")return gI(q);if(H.pathname==="/api/quick-prompts"&&q.method==="GET")return L4();if(H.pathname==="/api/quick-prompts"&&q.method==="PUT")return CI(q);let j=await P6(q,H);if(j)return j;let B=await b6(q,H);if(B)return B;let V=await y6(q,H);if(V)return V;let f=await $6(q,H,z);if(f)return f;let U=await d6(q,H);if(U)return U;let L=v6(q,H);if(L)return L;if(Y)return bI(H.pathname,Y);return new Response("not found",{status:404})}}function PY(J,z){let Z=J.snapshot().find((Y)=>Y.channel===z);return Z?Z.payload:null}function pf(J){return J.length>1?J.replace(/\/+$/,""):J}function II(J,z){let Z=pf(z),Y=new Set([z]);for(let X of J){let G=pf(X.repo),q=pf(X.worktreePath);if(G===Z||q===Z){if(X.repo)Y.add(X.repo);if(X.worktreePath)Y.add(X.worktreePath)}}return[...Y]}function F4(J){let z=ZQ();return{async request(Z,Y){return await zQ(z,Z,Y,J.ctx(0))},snapshot(){let Z=J.orch.listTasks().map(Uz),Y={},X=PY(J.bus,"issue.snapshot");if(X)for(let H of II(Z,X.repoRoot))Y[H]={...X,repoRoot:H};let G=PY(J.bus,"task.jobs"),q=G?.phase==="running"?{[G.taskId]:G}:{};return{tasks:Z,activeTaskId:PY(J.bus,"active-task")?.taskId??null,engineStates:J.activity.snapshotByTask(),update:PY(J.bus,"update")?.info??null,jobs:q,worktreeChanges:PY(J.bus,"worktree.changes")?.changes??{},issueSnapshots:Y,deliver:PY(J.bus,"session.deliver"),uiPrefs:PY(J.bus,"ui-prefs"),connected:!0}}}}async function j4(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 SI(J,z=W4){let Z;try{Z=(await(await fetch(`http://localhost:${J}${z}`,{signal:AbortSignal.timeout(800)})).text()).trim()}catch{return}if(Z!==f4)throw Error(`port ${J} is in use by a non-kobe service; refusing to replace it`);let Y=await j4(J);for(let G of Y)try{process.kill(G,"SIGTERM")}catch{}let X=Date.now()+2000;while(Date.now()<X){if((await j4(J)).length===0)return;await new Promise((G)=>setTimeout(G,100))}}async function M4(J){if(J.takeover!==!1)await SI(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=r6(Y),G=kI({link:J.link,sseSends:z,staticDir:J.staticDir?B4(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 f4="kobe-web",W4="/__kobe_web",V4,U4,pH;var O4=C(()=>{qY();Xz();qZ();uG();$q();S1();wz();cH();s1();k6();T6();h6();m6();IH();XY();n6();o6();t6();Q4();V4=["primary","success","info"],U4=/^[a-z][a-z0-9_-]{0,47}$/;pH={review:"boardPrompt.review",pr:"boardPrompt.pr"}});var A4={};H1(A4,{sameWorktreeChanges:()=>_z,readWorktreeChanges:()=>TI,pickPushedChanges:()=>oH,parsePorcelain:()=>wX});import{spawnSync as yI}from"child_process";function _z(J,z){return J.added===z.added&&J.deleted===z.deleted}function oH(J,z){if(!J)return null;return J.get(z)??rH}function TI(J){if(!J)return rH;try{let z=yI("git",["status","--porcelain=v1"],{cwd:J,encoding:"utf8",stdio:["ignore","pipe","pipe"],env:_J()});if(z.status!==0||!z.stdout)return rH;return wX(z.stdout)}catch{return rH}}function wX(J){let z=0,Z=0;for(let{x:Y,y:X}of dH(J))if(Y==="D"||X==="D")Z+=1;else z+=1;return{added:z,deleted:Z}}var rH;var PX=C(()=>{aZ();nH();rH={added:0,deleted:0}});async function wI(J,z){let Z=await HZ("git",["status","--porcelain=v1"],{cwd:J,env:_J(),signal:z});if(Z.status!==0)throw Error("git status failed");return wX(Z.stdout)}function PI(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 R4{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=PI(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:xI,slowRetryMs:uI,minIntervalMs:EI},Y=this.options.run??wI;QX(z,Z,(X)=>Y(J,X),(X)=>{if(this.stopped)return;if(this.entries.get(J)!==z)return;if(z.value&&_z(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 g4(J,z,Z=rf,Y){if(Z<=0)return()=>{};let X=new R4(J,z,{hasSubscribers:Y});X.tick();let G=setInterval(()=>X.tick(),Z);return G.unref?.(),()=>{clearInterval(G),X.stop()}}var rf=2000,xI=4000,uI=60000,EI=1500;var N4=C(()=>{aZ();qX();S1();PX()});import{mkdir as C4,readFile as hI,unlink as of,writeFile as vI}from"fs/promises";import{createServer as mI}from"net";import{dirname as b4}from"path";import{StringDecoder as cI}from"string_decoder";function nI(){let J=process.env.KOBE_DAEMON_IDLE_GRACE_MS;if(J===void 0)return k4;let z=Number(J);return Number.isFinite(z)&&z>=0?z:k4}async function S4(J,z={}){let Z=z.socketPath??Pz(z.homeDir),Y=z.pidPath??YZ(z.homeDir),X=z.startedAt??new Date,G=new Set,q=new Set,H=1,j=new vf({clients:function*(){yield*G,yield*q},idleGraceMs:nI(),onIdleStop:()=>void G0().catch((w)=>E1("daemon-idle-shutdown",w))}),B=new Wf;B.onPublish((w)=>{I4(G,{type:"event",name:w.channel,payload:w.payload})});let f=new J9(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 TH(yH(z.homeDir));await C4(b4(Z),{recursive:!0}),await C4(b4(Y),{recursive:!0}),await of(Z).catch(()=>{});let L=mI((w)=>{let R={id:H++,connectedAt:new Date,socket:w,writer:new ff(w),buffer:"",subscribed:!1,holdsLifetime:!1,channels:null};G.add(R);let e=new cI("utf8");w.on("data",(x)=>{R.buffer+=e.write(x),p(R)}),w.on("error",()=>{}),w.on("close",()=>{if(G.delete(R),R.subscribed)$z("conn",`client #${R.id} (${R.holdsLifetime?"gui":"pane"}) disconnected \u2014 ${G.size} client(s), ${j.guiCount()} gui left`);j.clientDisconnected(R.holdsLifetime)})}),O=J.subscribeTasks((w)=>{B.publish("task.snapshot",{tasks:w.map(Uz)})}),A=z.checkUpdate??BG,g=z.updatePollMs??dI,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??Bf,N=O5(J,I,()=>j.hasSubscribers()),M=D6(B,{statePath:df(z.homeDir),debounceMs:z.uiPrefsDebounceMs??cf}),y=q6(B,{path:hf(z.homeDir),debounceMs:z.keybindingsDebounceMs??Pf}),c=g4(J,B,z.worktreeChangesTickMs??rf,()=>j.hasSubscribers()),d=V6(J,B,z.transcriptActivityTickMs??mf,()=>j.hasSubscribers()),i=B6(J,z.prStatusPollMs??GQ,()=>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(),I4(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 of(Z).catch(()=>{}),await of(Y).catch(()=>{})}};await new Promise((w,R)=>{let e=L;e.once("error",R),L.listen(Z,()=>{e.removeListener("error",R),w()})}),await vI(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=ZQ();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=F4({orch:J,bus:B,activity:f,ctx:_});t=await M4({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(),$z("conn",`web client subscribed \u2014 ${G.size+q.size} client(s), ${j.guiCount()} gui`),()=>{q.delete(R),$z("conn",`web client disconnected \u2014 ${G.size+q.size} client(s), ${j.guiCount()} gui left`),j.clientDisconnected(!0)}}}),$z("web",`daemon web transport listening on http://${t.hostname}:${t.port}`)}async function O0(w,R){if(w.name==="subscribe"){let e=Lf(w.payload),x=R.subscribed;R.subscribed=!0;let $=e.role==="gui"?"gui":"pane";R.holdsLifetime=$==="gui",R.channels=mV(e.channels);let Q0=!x;if(R.holdsLifetime)j.guiAttached();$z("conn",`client #${R.id} subscribed as ${$}${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;jQ(R,{type:"event",name:H0.channel,payload:H0.payload})}if(!R.channels||R.channels.has("engine-state"))for(let H0 of f.currentNonIdle())jQ(R,{type:"event",name:"engine-state",payload:H0});return{}}return zQ(f0,w.name,w.payload,_(R.id))}async function b(w,R){try{let e=await O0(w,R);jQ(R,{type:"response",id:w.id,name:w.name,payload:e})}catch(e){jQ(R,{type:"response",id:w.id,name:w.name,error:Df(e)})}}function p(w){let R=w.buffer.indexOf(`
|
|
82
|
+
`);while(R!==-1){let e=w.buffer.slice(0,R);if(w.buffer=w.buffer.slice(R+1),e.trim().length>0)try{let x=JSON.parse(e);if(x.type!=="request")throw Error("daemon only accepts request frames from clients");b(x,w)}catch(x){jQ(w,{type:"response",id:"parse-error",error:{message:x instanceof Error?x.message:String(x)}})}R=w.buffer.indexOf(`
|
|
83
|
+
`)}}return X0}async function hX(J){try{let z=await hI(J,"utf8"),Z=Number(z.trim());return Number.isFinite(Z)?Z:null}catch{return null}}function y4(J){if(J.type==="event")return J.name==="daemon.stopping";return!0}function jQ(J,z){J.writer.write(fG(z),y4(z))}function I4(J,z){let Z=z.type==="event"&&z.name!=="daemon.stopping"?z.name:null,Y=y4(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??=fG(z),G.writer.write(X,Y)}}var dI=21600000,k4=3000;var sH=C(()=>{Cq();Yz();bJ();XU();A5();IH();Nf();H6();j6();pY();f6();XY();U6();L6();O4();N4();IH();Nf()});import{unlink as T4}from"fs/promises";function iI(J){try{return process.kill(J,0),!0}catch(z){return z.code==="EPERM"}}async function vX(J,z){let Z=await hX(z),Y=Z!==null&&Z!==process.pid?Z:null,X=Y!==null&&iI(Y),G=X?"graceful":"absent",q=new Jz(J),H=q.request("daemon.stop").catch(()=>{return}),j=new Promise((B)=>setTimeout(B,2000));if(await Promise.race([H,j]),q.close(),X&&Y!==null){let B=Date.now()+5000,V=!1;while(Date.now()<B){try{process.kill(Y,0)}catch{break}if(!V&&Date.now()-(B-5000)>2000){try{process.kill(Y,"SIGTERM")}catch{}G="sigterm",V=!0}await new Promise((f)=>setTimeout(f,50))}try{process.kill(Y,0),process.kill(Y,"SIGKILL"),G="sigkill",await new Promise((f)=>setTimeout(f,100))}catch{}}return await T4(J).catch(()=>{}),await T4(z).catch(()=>{}),{pid:Z,method:G}}var tH=C(()=>{WG();sH()});var NH={};H1(NH,{testDaemonResponds:()=>eH,ensureDaemonReachable:()=>mX,connectOrStartDaemon:()=>Sz,connectIfRunning:()=>qz});import{spawn as lI}from"child_process";import{closeSync as $I,existsSync as aI,mkdirSync as _I,openSync as pI}from"fs";import{dirname as x4,resolve as sf}from"path";import{fileURLToPath as rI}from"url";function tI(J,z,Z,Y){let X="ignore",G;try{_I(x4(Y),{recursive:!0}),G=pI(Y,"a"),X=["ignore",G,G]}catch{X="ignore"}if(lI(J,[...z],{detached:!0,stdio:X,env:Z}).unref(),G!==void 0)try{$I(G)}catch{}}async function mX(){let J=Pz();if(await eH(J))return J;await vX(J,YZ()).catch(()=>{});let[z,...Z]=eI(oI);tI(z,Z,process.env,Zq());let Y=Date.now()+5000;while(Date.now()<Y){if(await eH(J))return J;await new Promise((X)=>setTimeout(X,100))}throw Error(`kobe: daemon did not start (or stayed wedged) at ${J}`)}async function Sz(){let J=await mX(),z=new Jz(J);return await z.connect(),z}async function qz(){let J=Pz();if(!await eH(J))return null;let z=new Jz(J);return await z.connect(),z}async function eH(J,z=sI){let Z=new Jz(J);try{await Z.connect()}catch{return Z.close(),!1}let Y=Z.request("hello",{protocolVersion:eJ}).then(()=>!0).catch(()=>!0),X,G=new Promise((H)=>{X=setTimeout(()=>H(!1),z)}),q=await Promise.race([Y,G]);if(X)clearTimeout(X);return Z.close(),q}function eI(J){let z=rI(import.meta.url);if(z.startsWith("/$bunfs")||z.startsWith("B:\\~BUN"))return[process.execPath,...J];let Z=x4(z),Y=[sf(Z,"../cli/index.ts"),sf(Z,"../../../kobe/src/cli/index.ts"),sf(Z,"../cli/index.js")],X=Y.find((G)=>aI(G));if(X)return[process.execPath,X,...J];throw Error(`kobe: could not locate kobe entry near ${Z}; checked ${Y.join(", ")}`)}var oI,sI=3000;var kJ=C(()=>{tH();pY();XY();WG();oI=["daemon","start"]});import{mkdir as JS,readFile as u4,unlink as w4,writeFile as E4}from"fs/promises";import{dirname as zS}from"path";function ZS(J){if(!Number.isInteger(J)||J<=0)return!1;try{return process.kill(J,0),!0}catch(z){if(z.code==="ESRCH")return!1;return!0}}async function tf(J,z={}){await JS(zS(J),{recursive:!0});try{await E4(J,String(process.pid),{flag:"wx"});return}catch(X){if(X.code!=="EEXIST")throw X}let Z=-1;try{let X=(await u4(J,"utf8")).trim();if(Z=Number.parseInt(X,10),!Number.isFinite(Z))Z=-1}catch{return tf(J,z)}let Y=Z>0&&ZS(Z);if(Y&&!z.forceTakeover)throw new BQ(`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 w4(J)}catch(X){if(X.code!=="ENOENT")throw X}try{await E4(J,String(process.pid),{flag:"wx"})}catch(X){if(X.code==="EEXIST"){let G=-1;try{G=Number.parseInt((await u4(J,"utf8")).trim(),10)}catch{G=-1}throw new BQ(`task index lockfile contended during takeover (winner pid ${G})`,G)}throw X}}async function P4(J){try{await w4(J)}catch(z){if(z.code==="ENOENT")return;throw z}}var BQ;var h4=C(()=>{BQ=class BQ extends Error{heldByPid;constructor(J,z){super(J);this.name="LockfileError",this.heldByPid=z}}});function YS(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 c4(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 XS(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 GS(J){let z="";for(let Z of J)z+="0123456789ABCDEFGHJKMNPQRSTVWXYZ"[Z]??"0";return z}function d4(J=Date.now()){let z;if(J===v4){let Z=m4.slice();if(!XS(Z))z=c4(16);else z=Z}else z=c4(16);return v4=J,m4=z,YS(J,10)+GS(z)}var v4=-1,m4;var n4=C(()=>{m4=Array(16).fill(0)});var ef={};H1(ef,{TaskIndexStore:()=>cX});import{mkdir as QS,open as qS,readFile as i4,rename as HS,unlink as l4}from"fs/promises";import{homedir as jS}from"os";import{dirname as BS,join as $4}from"path";async function US(J){let z=Date.now()+VS;for(;;)try{await tf(J);return}catch(Z){if(!(Z instanceof BQ)||Date.now()>=z)throw Z;await fS(WS)}}class cX{homeDir;kobeDir;path;tmpPath;lockPath;cache={version:KZ,tasks:[]};loaded=!1;listeners=new Set;saveChain=Promise.resolve();dirtyIds=new Set;removedIds=new Set;constructor(J={}){this.homeDir=J.homeDir??jS(),this.kobeDir=$4(this.homeDir,".kobe"),this.path=$4(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 i4(this.path,"utf8")}catch(Z){if(Z.code==="ENOENT")return this.cache={version:KZ,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:KZ,tasks:[]},this.loaded=!0,this.notifyListeners(),this.snapshot()}return this.cache=a4(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 QS(BS(this.path),{recursive:!0});let J=new Set(this.dirtyIds),z=new Set(this.removedIds);await US(this.lockPath);try{let Z=await this.readDiskTasks(),Y=this.mergeWithDisk(Z,J,z),G=`${JSON.stringify({version:KZ,tasks:Y},null,2)}
|
|
84
|
+
`,q=await qS(this.tmpPath,"w",420);try{await q.writeFile(G,"utf8"),await q.sync()}finally{await q.close()}await HS(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 P4(this.lockPath)}}async readDiskTasks(){let J;try{J=await i4(this.path,"utf8")}catch(Z){if(Z.code==="ENOENT")return[];throw Z}let z;try{z=JSON.parse(J)}catch{return[]}return a4(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:gG(d4()),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 l4(this.path)}catch(J){if(J.code!=="ENOENT")throw J}try{await l4(this.tmpPath)}catch(J){if(J.code!=="ENOENT")throw J}this.cache={version:KZ,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:KZ,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 a4(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:KZ,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:KZ,tasks:[]};let X=Array.isArray(Z.tasks)?Z.tasks:[],G=[];for(let q of X){let H=KS(q);if(H)G.push(H);else console.warn(`[kobe] dropping malformed task entry from ${z}: ${JSON.stringify(q)}`)}return{version:KZ,tasks:G}}function KS(J){if(!J||typeof J!=="object")return null;let z=J;if(typeof z.id!=="string"||typeof z.title!=="string"||typeof z.repo!=="string"||typeof z.branch!=="string"||typeof z.worktreePath!=="string"||typeof z.status!=="string"||typeof z.createdAt!=="string"||typeof z.updatedAt!=="string")return null;if(!OS(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:gG(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:CZ(typeof z.vendor==="string"?z.vendor:void 0),prStatus:DS(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 DS(J){if(!J||typeof J!=="object"||Array.isArray(J))return;let z=J;if(!LS(z.provider)||!FS(z.lifecycle)||!MS(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 LS(J){return J==="github"||J==="gitlab"||J==="bitbucket"||J==="unknown"}function FS(J){return J==="creating"||J==="open"||J==="ready_to_merge"||J==="merged"||J==="closed"||J==="unknown"}function MS(J){return J==="none"||J==="pending"||J==="passing"||J==="failing"||J==="unknown"}function OS(J){return J==="backlog"||J==="in_progress"||J==="in_review"||J==="done"||J==="canceled"||J==="error"}var fS=(J)=>new Promise((z)=>setTimeout(z,J)),WS=25,VS=5000,KZ=3;var fQ=C(()=>{Yz();s1();h4();n4()});var Jj;var _4=C(()=>{Jj=class Jj 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 o4={};H1(o4,{GitWorktreeManager:()=>zj});import r4 from"fs";import yz from"path";class zj{execDeps;constructor(J=AS){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 Jj(z,Z.cwd,X);return X}async create(J,z,Z,Y){let X=this.ctxFor(J);if(pZ("repo",X.dir),pZ("path",Z),!z)throw Error("create(): branch must be a non-empty string");if(await X.exec.exists(Z)){let j=await this.tryDescribe(X,Z);if(j){if(j.branch!==z)throw Error(`worktree at ${Z} is on branch '${j.branch}', refusing to hijack to '${z}'`);return j}throw Error(`create(): ${Z} exists but is not a registered git worktree`)}await X.exec.mkdirp(yz.dirname(Z));let q=await this.branchExists(X,z)?["worktree","add",Z,z]:Y?["worktree","add","-b",z,Z,Y]:["worktree","add","-b",z,Z];await this.runGit(X.exec,q,{cwd:X.dir});let H=await this.tryDescribe(X,Z);if(!H)throw Error(`create(): git reported success but ${Z} is not a worktree`);if(H.branch!==z)throw Error(`create(): post-condition failed \u2014 expected branch '${z}' at ${Z}, got '${H.branch}'`);return H}async createForTask(J){let z=this.execDeps.remoteBasePath(J.repo),Z=z?lU(z,J.slug):cU(J.repo,J.slug);return this.create(J.repo,J.branch,Z,J.baseRef)}async remove(J,z){pZ("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);pZ("repo",z.dir);let Z=await this.runGit(z.exec,["worktree","list","--porcelain"],{cwd:z.dir}),Y=J8(Z.stdout),X=[];for(let G of Y){if(!G.path)continue;let q=z.remote?p4(z.dir,G.path):A9(J,G.path);if(!q)continue;if(!G.branch||G.detached)continue;let H=WQ(q),j=WQ(G.path),B=yz.relative(H,j),V=yz.join(q,B),f=await this.isDirty(G.path);X.push({path:V,branch:G.branch,head:G.head??"",dirty:f})}return X}async listAll(J){let z=this.ctxFor(J);pZ("repo",z.dir);let Z=await this.runGit(z.exec,["worktree","list","--porcelain"],{cwd:z.dir}),Y=J8(Z.stdout),X=z.remote?z.dir:WQ(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:WQ(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?p4(z.dir,q.path)!==null:nU(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 r4.statSync(z).mtimeMs}catch{}return 0}async isDirty(J){pZ("path",J);let z=this.execDeps.execForPath(J);return(await this.runGit(z,["status","--porcelain"],{cwd:J})).stdout.length>0}async currentBranch(J){pZ("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(pZ("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=J8(Z.stdout),X=(H)=>J.remote?H:WQ(H),G=X(z),q=Y.find((H)=>H.path&&X(H.path)===G);if(!q||!q.path||!q.branch||q.detached)return null;return{path:z,branch:q.branch,head:q.head??"",dirty:await this.isDirty(q.path)}}async branchExists(J,z){let Z=`refs/heads/${z}`;return(await this.runGit(J.exec,["show-ref","--verify","--quiet",Z],{cwd:J.dir,allowFail:!0})).exitCode===0}async findRepoFor(J,z){try{let Z=await this.runGit(J,["rev-parse","--git-common-dir"],{cwd:z,allowFail:!0});if(Z.exitCode!==0)return null;let Y=Z.stdout.trim();if(!Y)return null;let X=yz.isAbsolute(Y)?Y:yz.resolve(z,Y);return yz.basename(X)===".git"?yz.dirname(X):X}catch(Z){if(Z instanceof Jj)return null;throw Z}}}function J8(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 p4(J,z){let Z=`${J.replace(/\/+$/,"")}/.kobe/worktrees`;return z===Z||z.startsWith(`${Z}/`)?Z:null}function pZ(J,z){if(!z||!yz.isAbsolute(z))throw Error(`${J} must be an absolute path, got: ${JSON.stringify(z)}`)}function WQ(J){try{return r4.realpathSync(J)}catch{return yz.resolve(J)}}var AS;var z8=C(()=>{Az();S1();_4();R9();AS={execForRepo:HX,execForPath:jZ,remoteBasePath(J){return zZ(J)?.basePath??null}}});var Zj;var s4=C(()=>{Zj=["web","completions","add","remove","adopt","export","repo","api","daemon","theme","skill","feedback","update","doctor","reset","reload","kill-sessions"]});var e4={};H1(e4,{runCompletionsSubcommand:()=>CS});function RS(){return`# kobe bash completions
|
|
86
86
|
# Source: kobe completions bash
|
|
87
87
|
|
|
88
88
|
_kobe() {
|
|
@@ -90,7 +90,7 @@ _kobe() {
|
|
|
90
90
|
COMPREPLY=()
|
|
91
91
|
cur="\${COMP_WORDS[COMP_CWORD]}"
|
|
92
92
|
prev="\${COMP_WORDS[COMP_CWORD-1]}"
|
|
93
|
-
opts="${
|
|
93
|
+
opts="${Zj.join(" ")}"
|
|
94
94
|
|
|
95
95
|
if [[ \${cur} == * ]] ; then
|
|
96
96
|
COMPREPLY=( $(compgen -W "\${opts}" -- \${cur}) )
|
|
@@ -98,47 +98,47 @@ _kobe() {
|
|
|
98
98
|
fi
|
|
99
99
|
}
|
|
100
100
|
complete -F _kobe kobe
|
|
101
|
-
`}function
|
|
101
|
+
`}function gS(){return`#compdef kobe
|
|
102
102
|
# kobe zsh completions
|
|
103
103
|
# Source: kobe completions zsh
|
|
104
104
|
|
|
105
105
|
_kobe() {
|
|
106
106
|
local -a subcommands
|
|
107
|
-
subcommands=(${
|
|
107
|
+
subcommands=(${Zj.map((z)=>`"${z}"`).join(" ")})
|
|
108
108
|
|
|
109
109
|
_arguments "1:subcommand:(\${subcommands})"
|
|
110
110
|
}
|
|
111
111
|
|
|
112
112
|
_kobe "$@"
|
|
113
|
-
`}function
|
|
113
|
+
`}function NS(){return`# kobe fish completions
|
|
114
114
|
# Source: kobe completions fish
|
|
115
115
|
|
|
116
|
-
${
|
|
116
|
+
${Zj.map((z)=>`complete -c kobe -f -a ${z}`).join(`
|
|
117
117
|
`)}
|
|
118
|
-
`}async function
|
|
118
|
+
`}async function CS(J){let z=J[0];if(z==="--help"||z==="-h"||z==="help"){process.stdout.write(t4);return}if(!z||z!=="bash"&&z!=="zsh"&&z!=="fish")process.stderr.write(`kobe completions: unknown shell "${z}"
|
|
119
119
|
|
|
120
|
-
${
|
|
120
|
+
${t4}`),process.exit(2);let Z;if(z==="bash")Z=RS();else if(z==="zsh")Z=gS();else Z=NS();process.stdout.write(Z)}var t4=`Usage: kobe completions <bash|zsh|fish>
|
|
121
121
|
|
|
122
122
|
Generate a shell completion script for kobe and print it to stdout.
|
|
123
123
|
Redirect the output to the appropriate file for your shell.
|
|
124
|
-
`;var
|
|
125
|
-
|
|
126
|
-
${
|
|
127
|
-
`),process.exit(2)}function
|
|
128
|
-
`)}function
|
|
129
|
-
`)}function
|
|
130
|
-
`);return}let z=
|
|
131
|
-
`);return}process.stdout.write(`${
|
|
132
|
-
`)}var
|
|
133
|
-
`),
|
|
134
|
-
|
|
135
|
-
${
|
|
136
|
-
`),process.exit(2)}function
|
|
137
|
-
`);return}let{getRepoInitOverride:Y,setRepoInitOverride:X,resolveRepoRoot:G}=await Promise.resolve().then(() => (S1(),ZZ)),{existsSync:q}=await import("fs"),{join:H}=await import("path");if(z==="show"){let[j]=Z.filter((L)=>!L.startsWith("-")),B=G(
|
|
138
|
-
`)});import{spawnSync as
|
|
124
|
+
`;var JD=C(()=>{s4()});var XD={};H1(XD,{runExportSubcommand:()=>uS,renderExport:()=>YD,displayWidth:()=>Yj});function bS(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 Z8(J){process.stderr.write(`kobe export: ${J}
|
|
125
|
+
|
|
126
|
+
${ZD}
|
|
127
|
+
`),process.exit(2)}function kS(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)Z8("--format requires a value (json, csv, or table)");z=zD(X)}else if(Y.startsWith("--format="))z=zD(Y.slice(9));else Z8(`unexpected argument "${Y}"`)}return z}function zD(J){if(J==="json"||J==="csv"||J==="table")return J;Z8(`unknown format "${J}" (expected json, csv, or table)`)}function IS(J){if(/[",\r\n]/.test(J))return`"${J.replace(/"/g,'""')}"`;return J}function SS(J){let z=[VQ.join(",")];for(let Z of J)z.push(VQ.map((Y)=>IS(Z[Y])).join(","));return z.join(`
|
|
128
|
+
`)}function Yj(J){let z=0;for(let Z of J)z+=yS(Z.codePointAt(0));return z}function yS(J){if(J>=768&&J<=879||J>=6832&&J<=6911||J>=7616&&J<=7679||J>=8203&&J<=8207||J>=8234&&J<=8238||J>=8288&&J<=8292||J>=8400&&J<=8447||J>=65024&&J<=65039||J===65279)return 0;if(J>=4352&&J<=4447||J===9001||J===9002||J>=11904&&J<=12350||J>=12353&&J<=13311||J>=13312&&J<=19903||J>=19968&&J<=40959||J>=40960&&J<=42191||J>=44032&&J<=55203||J>=63744&&J<=64255||J>=65040&&J<=65049||J>=65072&&J<=65135||J>=65280&&J<=65376||J>=65504&&J<=65510||J>=127744&&J<=129791||J>=131072&&J<=262141)return 2;return 1}function TS(J,z){return J+" ".repeat(Math.max(0,z-Yj(J)))}function xS(J){let z={};for(let X of VQ)z[X]=Math.max(Yj(X),...J.map((G)=>Yj(G[X])));let Z=(X)=>VQ.map((G)=>TS(X[G],z[G])).join(" ").trimEnd(),Y={};for(let X of VQ)Y[X]=X;return[Z(Y),...J.map(Z)].join(`
|
|
129
|
+
`)}function YD(J,z){let Z=J.map(bS);if(z==="json")return JSON.stringify(Z,null,2);if(z==="csv")return SS(Z);return xS(Z)}async function uS(J){if(J.includes("--help")||J.includes("-h")||J.includes("help")){process.stdout.write(`${ZD}
|
|
130
|
+
`);return}let z=kS(J),{TaskIndexStore:Z}=await Promise.resolve().then(() => (fQ(),ef)),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(`${YD(X,z)}
|
|
132
|
+
`)}var ZD,VQ;var GD=C(()=>{Yz();ZD=["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
|
+
`),VQ=["id","title","status","archived","vendor","branch","repo","worktreePath"]});var HD={};H1(HD,{runRepoSubcommand:()=>hS});import{readFileSync as ES}from"fs";import{resolve as Xj}from"path";function rZ(J){process.stderr.write(`kobe repo: ${J}
|
|
134
|
+
|
|
135
|
+
${qD}
|
|
136
|
+
`),process.exit(2)}function QD(J){try{return ES(Xj(process.cwd(),J),"utf8")}catch(z){rZ(`cannot read ${J}: ${z instanceof Error?z.message:String(z)}`)}}function wS(J){let z={};for(let Z=0;Z<J.length;Z++){let Y=J[Z],X=()=>{let G=J[++Z];if(G===void 0)rZ(`${Y} requires a value`);return G};if(Y==="--init-script")z.initScript=X();else if(Y==="--init-script-file")z.initScript=QD(X());else if(Y==="--init-prompt")z.initPrompt=X();else if(Y==="--init-prompt-file")z.initPrompt=QD(X());else if(Y.startsWith("-"))rZ(`unknown flag "${Y}"`);else if(z.path===void 0)z.path=Y;else rZ(`unexpected argument "${Y}"`)}return z}function PS(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("-"))rZ(`unknown flag "${X}"`);else if(z===void 0)z=X;else rZ(`unexpected argument "${X}"`);if(!Z&&!Y)Z=!0,Y=!0;return{path:z,clearScript:Z,clearPrompt:Y}}async function hS(J){let[z,...Z]=J;if(z===void 0||z==="--help"||z==="-h"||z==="help"){process.stdout.write(`${qD}
|
|
137
|
+
`);return}let{getRepoInitOverride:Y,setRepoInitOverride:X,resolveRepoRoot:G}=await Promise.resolve().then(() => (S1(),ZZ)),{existsSync:q}=await import("fs"),{join:H}=await import("path");if(z==="show"){let[j]=Z.filter((L)=>!L.startsWith("-")),B=G(Xj(process.cwd(),j??".")),V=Y(B),f=q(H(B,".kobe","init.sh")),U=q(H(B,".kobe","init-prompt.md"));console.log(`repo: ${B}`),console.log(` .kobe/init.sh: ${f?"present (wins)":"absent"}`),console.log(` .kobe/init-prompt.md: ${U?"present (wins)":"absent"}`),console.log(` override initScript: ${V.initScript?dX(V.initScript):"(unset)"}`),console.log(` override initPrompt: ${V.initPrompt?dX(V.initPrompt):"(unset)"}`);return}if(z==="set"){let j=wS(Z);if(j.initScript===void 0&&j.initPrompt===void 0)rZ("set needs at least one of --init-script(-file) / --init-prompt(-file)");let B=G(Xj(process.cwd(),j.path??".")),V=X(B,{...j.initScript!==void 0?{initScript:j.initScript}:{},...j.initPrompt!==void 0?{initPrompt:j.initPrompt}:{}});console.log(`updated override for ${B}`),console.log(` initScript: ${V.initScript?dX(V.initScript):"(unset)"}`),console.log(` initPrompt: ${V.initPrompt?dX(V.initPrompt):"(unset)"}`);return}if(z==="unset"){let{path:j,clearScript:B,clearPrompt:V}=PS(Z),f=G(Xj(process.cwd(),j??".")),U=X(f,{...B?{initScript:""}:{},...V?{initPrompt:""}:{}});console.log(`cleared override for ${f}`),console.log(` initScript: ${U.initScript?dX(U.initScript):"(unset)"}`),console.log(` initPrompt: ${U.initPrompt?dX(U.initPrompt):"(unset)"}`);return}rZ(`unknown verb "${z}"`)}function dX(J){let z=J.replace(/\s+/g," ").trim();return z.length>60?`"${z.slice(0,57)}\u2026"`:`"${z}"`}var qD;var jD=C(()=>{qD=["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 vS}from"child_process";function dS(J){let[z,Z]=J.split("/");if(!z||!Z)throw Error(`invalid GitHub repository slug: ${J}`);return{owner:z,name:Z}}function BD(J,z){let Z=J.trim();if(!Z)throw Error(`${z} is required`);return Z}function fD(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 WD(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: ${fD(q,void 0)}`)}if((X.status??0)!==0||H.errors?.length)throw Error(fD(q,H.errors));if(!H.data)throw Error("GitHub CLI response did not include data");return H.data}function nS(J){return`${J}
|
|
139
139
|
|
|
140
140
|
---
|
|
141
|
-
Submitted from kobe ${
|
|
141
|
+
Submitted from kobe ${e0}.`}function nX(J,z={}){let Z=BD(J.title,"feedback title"),Y=nS(BD(J.body,"feedback body")),X=(z.repoSlug??YY)();if(!X)throw Error("package repository is not a GitHub repository");let{owner:G,name:q}=dS(X),H=J.categorySlug?.trim()||Y8,j={spawn:z.spawn??vS},V=WD(mS,{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=WD(cS,{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 Y8="feedback",mS=`
|
|
142
142
|
query($owner: String!, $name: String!) {
|
|
143
143
|
repository(owner: $owner, name: $name) {
|
|
144
144
|
id
|
|
@@ -151,7 +151,7 @@ query($owner: String!, $name: String!) {
|
|
|
151
151
|
}
|
|
152
152
|
}
|
|
153
153
|
}
|
|
154
|
-
`,
|
|
154
|
+
`,cS=`
|
|
155
155
|
mutation($repositoryId: ID!, $categoryId: ID!, $title: String!, $body: String!) {
|
|
156
156
|
createDiscussion(input: {
|
|
157
157
|
repositoryId: $repositoryId,
|
|
@@ -165,74 +165,74 @@ mutation($repositoryId: ID!, $categoryId: ID!, $title: String!, $body: String!)
|
|
|
165
165
|
}
|
|
166
166
|
}
|
|
167
167
|
}
|
|
168
|
-
`;var
|
|
169
|
-
`)}function
|
|
170
|
-
`)}function
|
|
168
|
+
`;var Gj=C(()=>{bJ()});async function VD(J={}){let z=J.mode==="require-running"?await qz():await Sz();if(!z)return null;return{client:z,close:()=>z.close()}}var UD=C(()=>{kJ()});var CD={};H1(CD,{verbSchema:()=>H8,verbHelp:()=>RD,validateAgainstSpec:()=>Q8,schemaIndex:()=>OD,runApiSubcommand:()=>Vy,parseFlags:()=>G8,parseAgentsSpec:()=>FD,invokeVerb:()=>Wy,fullSchema:()=>AD,findVerb:()=>UQ,deliverPrompt:()=>gD,defaultApiRuntime:()=>j8,apiUsage:()=>Qj,VerbArgs:()=>q8,VERB_GROUPS:()=>lX,VERBS:()=>$X,FANOUT_CAP:()=>iX,ApiError:()=>I1,API_VERBS:()=>$S,API_SCHEMA_VERSION:()=>X8});import{resolve as KD}from"path";function LD(J){for(let[z,Z]of Object.entries(lX))if(Z.includes(J))return z;return"other"}async function lS(J){let z=J.args.str("verb");if(z){let Y=UQ(z);if(!Y)throw new I1(`unknown verb: ${z}`,"BAD_VERB");return H8(Y)}let Z=J.args.str("group");if(Z)return _S(Z);if(J.args.bool("all"))return AD();return OD()}function UQ(J){let z=qj[J]??J;return $X.find((Z)=>Z.name===z)}function G8(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 Q8(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 q8{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:KD(process.cwd(),z)}requirePath(J){return KD(process.cwd(),this.require(J))}}function FD(J){let z=[];for(let Z of J.split(",")){let Y=Z.trim();if(!Y)continue;let X=Y.indexOf(":");if(X===-1)throw new I1(`--agents entry "${Y}" must be vendor:count`,"BAD_FLAG");let G=Y.slice(0,X);if(!o1.includes(G))throw new I1(`--agents vendor "${G}" must be one of ${o1.join(", ")}`,"BAD_FLAG");let q=Number.parseInt(Y.slice(X+1),10);if(!Number.isInteger(q)||q<=0)throw new I1(`--agents count for "${G}" must be a positive integer`,"BAD_FLAG");if(z.length+q>iX)throw new I1(`--agents requests ${z.length+q} agents, exceeds the cap of ${iX}`,"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 aS(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 H8(J){return{name:J.name,group:LD(J.name),summary:J.summary,offline:J.offline??!1,flags:J.flags.map(aS)}}function OD(){return{apiVersion:X8,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:lX,verbs:$X.map((J)=>({name:J.name,group:LD(J.name),summary:J.summary})),globalFlags:MD,aliases:qj}}function _S(J){let z=lX[J];if(!z)throw new I1(`unknown group: ${J}. Groups: ${Object.keys(lX).join(", ")}`,"BAD_FLAG");return{group:J,verbs:z.map((Z)=>{let Y=UQ(Z);return{name:Z,summary:Y?.summary??""}})}}function AD(){return{apiVersion:X8,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:MD,aliases:qj,groups:lX,verbs:$X.map(H8)}}function pS(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 RD(J){let z=[`kobe api ${J.name} ${pS(J)}`.trimEnd(),"",J.summary,""],Z=Object.entries(qj).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 Qj(){return["usage: kobe api <verb> [flags] [--pretty] [--help]","","Explore the full surface (names, flags, types) with: kobe api schema","","verbs:",...$X.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 rS(J,z){let Z=z?JSON.stringify(J,null,2):JSON.stringify(J);process.stdout.write(`${Z}
|
|
171
171
|
`)}function DZ(J,z,Z=1){process.stderr.write(`${JSON.stringify({error:{message:J,code:z}})}
|
|
172
|
-
`),process.exit(Z)}async function
|
|
173
|
-
`);return}let Y=
|
|
174
|
-
${
|
|
175
|
-
`);return}try{G8(Y,G.flags)}catch(H){if(H instanceof I1)DZ(H.message,H.code,2);DZ(H instanceof Error?H.message:String(H),"BAD_FLAG",2)}let q=null;if(!Y.offline)try{q=await WD()}catch(H){DZ(`could not reach or start the kobe daemon: ${H instanceof Error?H.message:String(H)}`,"BAD_DAEMON",2)}try{let H=await Y.handler(gD(Y,G.flags,q?.client??null,H8));_S(H,G.pretty)}catch(H){if(H instanceof I1)DZ(H.message,H.code,1);DZ(H instanceof Error?H.message:String(H),"RPC_ERROR",1)}finally{q?.close()}}var Y8=2,iX=10,KD,dS,I1,A1,Qj,lX,$X,iS,FD,pS,H8;var CD=C(()=>{Xz();Xj();P1();JH();s1();bJ();VD();KD=["backlog","in_progress","in_review","done","canceled","error"],dS=["open","doing","hold","done"];I1=class I1 extends Error{code;constructor(J,z){super(J);this.code=z}};A1={repo:(J=!0)=>({name:"repo",type:"string",required:J,placeholder:"PATH",description:"Repo root (git toplevel). Relative paths resolve against $PWD."}),taskId:(J=!0)=>({name:"task-id",type:"string",required:J,placeholder:"ID",description:"Target task id (from `list` / `add`)."}),vendor:()=>({name:"vendor",type:"enum",values:o1,placeholder:"V",description:"Engine vendor for the task."}),title:()=>({name:"title",type:"string",placeholder:"T",description:"Human task title."}),prompt:(J,z)=>({name:"prompt",type:"string",required:J,placeholder:"TEXT",description:z})},Qj={"spawn-task":"add"},lX={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"]};$X=[{name:"schema",summary:"Explore the API. Default = a COMPACT index (groups + verb summaries, no flags). Drill in with --verb / --group; --all for the full spec.",flags:[{name:"verb",type:"string",placeholder:"NAME",description:"Full flag detail for ONE verb."},{name:"group",type:"string",placeholder:"G",description:"List the verbs in one group (compact)."},{name:"all",type:"bool",description:"The COMPLETE spec \u2014 every verb AND every flag (large; avoid by default)."}],offline:!0,handler:nS},{name:"list",summary:"List all tasks (incl. archived). Returns { tasks }.",flags:[],handler:Zy},{name:"get-task",summary:"Read one task's metadata. `.running` = its tmux session is live.",flags:[A1.taskId()],handler:zy},{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:KD,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:sS},{name:"fan-out",summary:`Spawn N tasks of ONE prompt in a single call (parallel attempts). Capped at ${iX}.`,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:qy},{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:tS},{name:"dispatch",summary:"Route text into a task's live session via the daemon's session.deliver channel \u2014 the front-end hosting the session pastes it. The dispatcher's messenger (docs/design/dispatcher.md); unlike `send`, it never spawns or touches tmux itself.",flags:[A1.taskId(!0),A1.prompt(!0,"Text delivered into the task's engine session.")],handler:eS},{name:"note",summary:"File a one-line field note \u2014 a resolved, repo-level gotcha worth sharing. kobe forwards it to the repo's dispatcher session (the main session), which relays it to the in-flight tasks that benefit (docs/design/dispatcher.md).",flags:[A1.taskId(!0),{name:"text",type:"string",required:!0,placeholder:"TEXT",description:"One line: the verified conclusion another session could act on."}],handler:Jy},{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:Z8,placeholder:"SLUG",description:"Discussion category slug."}],offline:!0,handler:jy},{name:"issue-list",summary:"List daemon-owned issues for a repo.",flags:[A1.repo()],handler:(J)=>Tz(J,"issue.list",{repoRoot:J.args.requirePath("repo")})},{name:"issue-create",summary:"Create a daemon-owned issue for a repo.",flags:[A1.repo(),{name:"title",type:"string",required:!0,placeholder:"T",description:"Issue title."},{name:"body",type:"string",placeholder:"TEXT",description:"Issue body."}],handler:(J)=>Tz(J,"issue.mutate",{repoRoot:J.args.requirePath("repo"),op:{type:"create",title:J.args.require("title"),body:J.args.str("body")}})},{name:"issue-set-status",summary:"Set a daemon-owned issue's status.",flags:[A1.repo(),{name:"id",type:"int",required:!0,placeholder:"N",description:"Issue id."},{name:"status",type:"enum",required:!0,values:dS,description:"New issue status."}],handler:(J)=>Tz(J,"issue.mutate",{repoRoot:J.args.requirePath("repo"),op:{type:"setStatus",id:J.args.int("id"),status:J.args.requireEnum("status")}})},{name:"issue-update",summary:"Update a daemon-owned issue's title and/or body.",flags:[A1.repo(),{name:"id",type:"int",required:!0,placeholder:"N",description:"Issue id."},{name:"title",type:"string",placeholder:"T",description:"New title."},{name:"body",type:"string",placeholder:"TEXT",description:"New body."}],handler:oS},{name:"collect",summary:"Read-only comparison snapshot of several tasks (identity, branch, .running, uncommitted .changes).",flags:[{name:"task-ids",type:"csv",placeholder:"a,b,c",description:"Comma-separated task ids."},A1.repo(!1)],handler:Hy},{name:"rename",summary:"Set a task's title.",flags:[A1.taskId(),{name:"title",type:"string",required:!0,placeholder:"T",description:"New title."}],handler:(J)=>Tz(J,"task.rename",{taskId:J.args.require("task-id"),title:J.args.require("title")})},{name:"set-branch",summary:"Rename a task's branch (git branch -m if materialized, else recorded).",flags:[A1.taskId(),{name:"branch",type:"string",required:!0,placeholder:"B",description:"New branch name."}],handler:(J)=>Tz(J,"task.setBranch",{taskId:J.args.require("task-id"),branch:J.args.require("branch")})},{name:"set-vendor",summary:"Change a task's engine vendor (takes effect on next session rebuild).",flags:[A1.taskId(),{...A1.vendor(),required:!0}],handler:(J)=>Tz(J,"task.setVendor",{taskId:J.args.require("task-id"),vendor:J.args.requireEnum("vendor")})},{name:"set-status",summary:"Set a task's lifecycle status.",flags:[A1.taskId(),{name:"status",type:"enum",required:!0,values:KD,description:"New status."}],handler:(J)=>Tz(J,"task.status",{taskId:J.args.require("task-id"),status:J.args.requireEnum("status")})},{name:"archive",summary:"Archive (or with --archived=false, unarchive) a task. Non-destructive: worktree/branch/history stay.",flags:[A1.taskId(),{name:"archived",type:"bool",default:"true",description:"true to archive, false to unarchive."}],handler:Xy},{name:"pin",summary:"Pin (or with --pinned=false, unpin) a task to the top of the sidebar.",flags:[A1.taskId(),{name:"pinned",type:"bool",default:"true",description:"true to pin, false to unpin."}],handler:(J)=>Tz(J,"task.pin",{taskId:J.args.require("task-id"),pinned:J.args.bool("pinned")??!0})},{name:"set-active",summary:"Set the shared active task (the focus every Tasks pane highlights). Pass --none to clear.",flags:[A1.taskId(!1),{name:"none",type:"bool",description:"Clear the active task instead of setting one."}],handler:Yy},{name:"ensure-worktree",summary:"Materialize a task's git worktree on disk now (without starting an engine). Returns { worktreePath }.",flags:[A1.taskId()],handler:(J)=>Tz(J,"task.ensureWorktree",{taskId:J.args.require("task-id")})},{name:"delete",summary:"Permanently remove a task (and its worktree). DESTRUCTIVE \u2014 prefer `archive`. Needs --force on a dirty worktree.",flags:[A1.taskId(),{name:"force",type:"bool",description:"Delete even with uncommitted changes."}],handler:Gy},{name:"discover-adoptable",summary:"List existing git worktrees in a repo not yet tracked as kobe tasks. Returns { worktrees }.",flags:[A1.repo()],handler:(J)=>Tz(J,"worktree.discoverAdoptable",{repo:J.args.requirePath("repo")})},{name:"adopt",summary:"Import an existing git worktree as a kobe task. Returns { task }.",flags:[A1.repo(),{name:"worktree",type:"string",required:!0,placeholder:"PATH",description:"Path of the worktree to adopt."},{name:"branch",type:"string",placeholder:"B",description:"Branch override (else the worktree's own)."},A1.vendor(),A1.title()],handler:Qy}],iS=$X.map((J)=>J.name);FD=[{name:"pretty",type:"bool",description:"Pretty-print stdout JSON."},{name:"help",type:"bool",description:"Show usage for the verb and exit."}];pS={sessionExists:F1,ensureSession:async(J)=>(await Promise.resolve().then(() => (HJ(),PJ))).ensureSession(J),waitForEnginePane:wG,pasteAndSubmit:PG,resolveEngineLaunchInit:async(J,z,Z)=>(await Promise.resolve().then(() => (EX(),aH))).resolveEngineLaunchInit(J,z,Z),engineCommand:EJ};H8={isTaskRunning:(J)=>F1(y1(J)),deliverPrompt:(J,z,Z)=>RD(J,z,Z),resolveRepoRoot:async(J)=>(await Promise.resolve().then(() => (S1(),ZZ))).resolveMainRepoRoot(J),defaultVendor:async()=>{let{getPersistedString:J}=await Promise.resolve().then(() => (S1(),ZZ)),z=J("lastSelectedVendor")?.trim();return z?z:void 0},readWorktreeChanges:async(J)=>(await Promise.resolve().then(() => (PX(),O4))).readWorktreeChanges(J),tearDownSession:async(J)=>{let z=y1(J);await lz(z).catch(()=>{}),await vJ(z).catch(()=>{})}}});var SD={};H1(SD,{updatePlan:()=>bD,runUpdateSubcommand:()=>Vy,parseUpdateArgs:()=>kD});import{spawnSync as Wy}from"child_process";function bD(){return{command:"sh",args:["-c",tz],display:tz}}function kD(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}"
|
|
172
|
+
`),process.exit(Z)}async function gD(J,z,Z,Y=oS){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 sS(J){let z=null,Z=J.onChannel("active-task",(Y)=>{z=Y.taskId});try{await J.subscribe()}finally{Z()}return z}function pJ(J){if(!J.client)throw new I1("daemon required","BAD_DAEMON");return J.client}async function Tz(J,z,Z){return pJ(J).request(z,Z)}async function tS(J){let z=J.args.str("title"),Z=J.args.str("body");if(z===void 0&&Z===void 0)throw new I1("issue-update requires --title and/or --body","MISSING_FLAG");return Tz(J,"issue.mutate",{repoRoot:J.args.requirePath("repo"),op:{type:"update",id:J.args.int("id"),title:z,body:Z}})}async function eS(J){let z=pJ(J),{args:Z,runtime:Y}=J,G={repo:await Y.resolveRepoRoot(Z.requirePath("repo"))},q=Z.str("title");if(q)G.title=q;let H=Z.str("branch");if(H)G.branch=H;let j=Z.str("base-branch");if(j)G.baseRef=j;let B=Z.vendor()??await Y.defaultVendor();if(B)G.vendor=B;let V=await z.request("task.create",G),f=V.taskId;await z.request("task.setActive",{taskId:f});let U=Z.enumOf("status");if(U)await z.request("task.status",{taskId:f,status:U});let L=Z.bool("pin");if(L!==void 0)await z.request("task.pin",{taskId:f,pinned:L});let O=V.task;if(U||L!==void 0)O=(await z.request("task.get",{taskId:f})).task;let A=Z.str("prompt");if(!A)return{taskId:f,task:O,started:!1};let g=await J.runtime.deliverPrompt(z,{id:f,worktreePath:O.worktreePath,vendor:O.vendor,repo:O.repo},A);return O=(await z.request("task.get",{taskId:f})).task,{taskId:f,task:O,started:g.started,engineReady:g.engineReady,session:g.session}}async function Jy(J){let z=pJ(J),Z=J.args.require("prompt"),Y=J.args.str("task-id");if(!Y){let q=await sS(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 zy(J){let z=pJ(J),Z=J.args.require("task-id"),Y=J.args.require("prompt");return await z.request("session.deliver",{taskId:Z,text:Y,source:"dispatcher"}),{ok:!0,taskId:Z,routed:"session.deliver"}}async function Zy(J){let z=pJ(J),Z=J.args.require("task-id"),Y=J.args.require("text");return await z.request("note.file",{taskId:Z,text:Y})}async function Yy(J){let z=pJ(J),Z=J.args.require("task-id"),Y=await z.request("task.get",{taskId:Z}),X=await J.runtime.isTaskRunning(Z);return{task:Y.task,running:X}}async function Xy(J){return pJ(J).request("task.list")}async function Gy(J){let z=pJ(J),Y=J.args.bool("none")?null:J.args.require("task-id");return await z.request("task.setActive",{taskId:Y}),{ok:!0,activeTaskId:Y}}async function Qy(J){let z=pJ(J),Z=J.args.require("task-id"),Y=J.args.bool("archived")??!0,X=await z.request("task.archive",{taskId:Z,archived:Y});if(Y)await J.runtime.tearDownSession(Z);return X}async function qy(J){let z=pJ(J),Z=J.args.require("task-id"),Y=J.args.bool("force")??!1,X=await z.request("task.delete",{taskId:Z,force:Y});return await J.runtime.tearDownSession(Z),X}async function Hy(J){let z=pJ(J),{args:Z}=J,Y={repo:Z.requirePath("repo"),worktreePath:Z.requirePath("worktree")},X=Z.str("branch");if(X)Y.branch=X;let G=Z.vendor();if(G)Y.vendor=G;let q=Z.str("title");if(q)Y.title=q;return z.request("worktree.adopt",Y)}async function jy(J){let z=pJ(J),{args:Z,runtime:Y}=J,X=await Y.resolveRepoRoot(Z.requirePath("repo")),G=Z.require("prompt"),q=Z.str("title"),H=Z.str("base-branch"),j=Z.str("agents"),B=await Y.defaultVendor(),V=j?FD(j):Array(Z.int("count")??1).fill(Z.vendor()??B??"claude");if(V.length>iX)throw new I1(`fan-out of ${V.length} exceeds the cap of ${iX} \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 By(J){let z=pJ(J),{args:Z,runtime:Y}=J,X=Z.str("task-ids"),G=Z.path("repo"),q;if(X)q=X.split(",").map((j)=>j.trim()).filter(Boolean);else if(G){let j=await Y.resolveRepoRoot(G),{tasks:B}=await z.request("task.list");q=[];for(let V of B){if(V.archived)continue;if(await Y.resolveRepoRoot(V.repo)===j)q.push(V.id)}}else throw new I1("collect needs --task-ids id1,id2 or --repo PATH","MISSING_TARGET");let H=[];for(let j of q){let{task:B}=await z.request("task.get",{taskId:j}),V=await Y.isTaskRunning(j),f=B.worktreePath?await Y.readWorktreeChanges(B.worktreePath):{added:0,deleted:0};H.push({taskId:B.id,title:B.title,branch:B.branch,worktreePath:B.worktreePath,vendor:B.vendor,status:B.status,running:V,changes:f})}return{tasks:H}}async function fy(J){return{ok:!0,discussion:nX({title:J.args.require("title"),body:J.args.require("body"),categorySlug:J.args.str("category")})}}function ND(J,z,Z,Y){return{args:new q8(J,z),client:Z,runtime:Y}}async function Wy(J,z,Z){let Y=UQ(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=G8(z,X);return Q8(Y,G.flags),Y.handler(ND(Y,G.flags,Z.client,Z.runtime??j8))}async function Vy(J){let[z,...Z]=J;if(!z||z==="--help"||z==="-h"||z==="help"){if(!z)DZ(Qj(),"MISSING_VERB",2);process.stdout.write(`${Qj()}
|
|
173
|
+
`);return}let Y=UQ(z);if(!Y)DZ(`unknown verb: ${z}
|
|
174
|
+
${Qj()}`,"BAD_VERB",2);let X=new Set(Y.flags.filter((H)=>H.type==="bool").map((H)=>H.name)),G;try{G=G8(Z,X)}catch(H){if(H instanceof I1)DZ(H.message,H.code,2);DZ(H instanceof Error?H.message:String(H),"BAD_FLAG",2)}if(G.help){process.stdout.write(`${RD(Y)}
|
|
175
|
+
`);return}try{Q8(Y,G.flags)}catch(H){if(H instanceof I1)DZ(H.message,H.code,2);DZ(H instanceof Error?H.message:String(H),"BAD_FLAG",2)}let q=null;if(!Y.offline)try{q=await VD()}catch(H){DZ(`could not reach or start the kobe daemon: ${H instanceof Error?H.message:String(H)}`,"BAD_DAEMON",2)}try{let H=await Y.handler(ND(Y,G.flags,q?.client??null,j8));rS(H,G.pretty)}catch(H){if(H instanceof I1)DZ(H.message,H.code,1);DZ(H instanceof Error?H.message:String(H),"RPC_ERROR",1)}finally{q?.close()}}var X8=2,iX=10,DD,iS,I1,A1,qj,lX,$X,$S,MD,oS,j8;var bD=C(()=>{Xz();Gj();w1();zH();s1();bJ();UD();DD=["backlog","in_progress","in_review","done","canceled","error"],iS=["open","doing","hold","done"];I1=class I1 extends Error{code;constructor(J,z){super(J);this.code=z}};A1={repo:(J=!0)=>({name:"repo",type:"string",required:J,placeholder:"PATH",description:"Repo root (git toplevel). Relative paths resolve against $PWD."}),taskId:(J=!0)=>({name:"task-id",type:"string",required:J,placeholder:"ID",description:"Target task id (from `list` / `add`)."}),vendor:()=>({name:"vendor",type:"enum",values:o1,placeholder:"V",description:"Engine vendor for the task."}),title:()=>({name:"title",type:"string",placeholder:"T",description:"Human task title."}),prompt:(J,z)=>({name:"prompt",type:"string",required:J,placeholder:"TEXT",description:z})},qj={"spawn-task":"add"},lX={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"]};$X=[{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:lS},{name:"list",summary:"List all tasks (incl. archived). Returns { tasks }.",flags:[],handler:Xy},{name:"get-task",summary:"Read one task's metadata. `.running` = its tmux session is live.",flags:[A1.taskId()],handler:Yy},{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:DD,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:eS},{name:"fan-out",summary:`Spawn N tasks of ONE prompt in a single call (parallel attempts). Capped at ${iX}.`,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:jy},{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:Jy},{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:zy},{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:Zy},{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:Y8,placeholder:"SLUG",description:"Discussion category slug."}],offline:!0,handler:fy},{name:"issue-list",summary:"List daemon-owned issues for a repo.",flags:[A1.repo()],handler:(J)=>Tz(J,"issue.list",{repoRoot:J.args.requirePath("repo")})},{name:"issue-create",summary:"Create a daemon-owned issue for a repo.",flags:[A1.repo(),{name:"title",type:"string",required:!0,placeholder:"T",description:"Issue title."},{name:"body",type:"string",placeholder:"TEXT",description:"Issue body."}],handler:(J)=>Tz(J,"issue.mutate",{repoRoot:J.args.requirePath("repo"),op:{type:"create",title:J.args.require("title"),body:J.args.str("body")}})},{name:"issue-set-status",summary:"Set a daemon-owned issue's status.",flags:[A1.repo(),{name:"id",type:"int",required:!0,placeholder:"N",description:"Issue id."},{name:"status",type:"enum",required:!0,values:iS,description:"New issue status."}],handler:(J)=>Tz(J,"issue.mutate",{repoRoot:J.args.requirePath("repo"),op:{type:"setStatus",id:J.args.int("id"),status:J.args.requireEnum("status")}})},{name:"issue-update",summary:"Update a daemon-owned issue's title and/or body.",flags:[A1.repo(),{name:"id",type:"int",required:!0,placeholder:"N",description:"Issue id."},{name:"title",type:"string",placeholder:"T",description:"New title."},{name:"body",type:"string",placeholder:"TEXT",description:"New body."}],handler:tS},{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:By},{name:"rename",summary:"Set a task's title.",flags:[A1.taskId(),{name:"title",type:"string",required:!0,placeholder:"T",description:"New title."}],handler:(J)=>Tz(J,"task.rename",{taskId:J.args.require("task-id"),title:J.args.require("title")})},{name:"set-branch",summary:"Rename a task's branch (git branch -m if materialized, else recorded).",flags:[A1.taskId(),{name:"branch",type:"string",required:!0,placeholder:"B",description:"New branch name."}],handler:(J)=>Tz(J,"task.setBranch",{taskId:J.args.require("task-id"),branch:J.args.require("branch")})},{name:"set-vendor",summary:"Change a task's engine vendor (takes effect on next session rebuild).",flags:[A1.taskId(),{...A1.vendor(),required:!0}],handler:(J)=>Tz(J,"task.setVendor",{taskId:J.args.require("task-id"),vendor:J.args.requireEnum("vendor")})},{name:"set-status",summary:"Set a task's lifecycle status.",flags:[A1.taskId(),{name:"status",type:"enum",required:!0,values:DD,description:"New status."}],handler:(J)=>Tz(J,"task.status",{taskId:J.args.require("task-id"),status:J.args.requireEnum("status")})},{name:"archive",summary:"Archive (or with --archived=false, unarchive) a task. Non-destructive: worktree/branch/history stay.",flags:[A1.taskId(),{name:"archived",type:"bool",default:"true",description:"true to archive, false to unarchive."}],handler:Qy},{name:"pin",summary:"Pin (or with --pinned=false, unpin) a task to the top of the sidebar.",flags:[A1.taskId(),{name:"pinned",type:"bool",default:"true",description:"true to pin, false to unpin."}],handler:(J)=>Tz(J,"task.pin",{taskId:J.args.require("task-id"),pinned:J.args.bool("pinned")??!0})},{name:"set-active",summary:"Set the shared active task (the focus every Tasks pane highlights). Pass --none to clear.",flags:[A1.taskId(!1),{name:"none",type:"bool",description:"Clear the active task instead of setting one."}],handler:Gy},{name:"ensure-worktree",summary:"Materialize a task's git worktree on disk now (without starting an engine). Returns { worktreePath }.",flags:[A1.taskId()],handler:(J)=>Tz(J,"task.ensureWorktree",{taskId:J.args.require("task-id")})},{name:"delete",summary:"Permanently remove a task (and its worktree). DESTRUCTIVE \u2014 prefer `archive`. Needs --force on a dirty worktree.",flags:[A1.taskId(),{name:"force",type:"bool",description:"Delete even with uncommitted changes."}],handler:qy},{name:"discover-adoptable",summary:"List existing git worktrees in a repo not yet tracked as kobe tasks. Returns { worktrees }.",flags:[A1.repo()],handler:(J)=>Tz(J,"worktree.discoverAdoptable",{repo:J.args.requirePath("repo")})},{name:"adopt",summary:"Import an existing git worktree as a kobe task. Returns { task }.",flags:[A1.repo(),{name:"worktree",type:"string",required:!0,placeholder:"PATH",description:"Path of the worktree to adopt."},{name:"branch",type:"string",placeholder:"B",description:"Branch override (else the worktree's own)."},A1.vendor(),A1.title()],handler:Hy}],$S=$X.map((J)=>J.name);MD=[{name:"pretty",type:"bool",description:"Pretty-print stdout JSON."},{name:"help",type:"bool",description:"Show usage for the verb and exit."}];oS={sessionExists:F1,ensureSession:async(J)=>(await Promise.resolve().then(() => (HJ(),PJ))).ensureSession(J),waitForEnginePane:PG,pasteAndSubmit:hG,resolveEngineLaunchInit:async(J,z,Z)=>(await Promise.resolve().then(() => (EX(),_H))).resolveEngineLaunchInit(J,z,Z),engineCommand:EJ};j8={isTaskRunning:(J)=>F1(y1(J)),deliverPrompt:(J,z,Z)=>gD(J,z,Z),resolveRepoRoot:async(J)=>(await Promise.resolve().then(() => (S1(),ZZ))).resolveMainRepoRoot(J),defaultVendor:async()=>{let{getPersistedString:J}=await Promise.resolve().then(() => (S1(),ZZ)),z=J("lastSelectedVendor")?.trim();return z?z:void 0},readWorktreeChanges:async(J)=>(await Promise.resolve().then(() => (PX(),A4))).readWorktreeChanges(J),tearDownSession:async(J)=>{let z=y1(J);await lz(z).catch(()=>{}),await vJ(z).catch(()=>{})}}});var yD={};H1(yD,{updatePlan:()=>kD,runUpdateSubcommand:()=>Ky,parseUpdateArgs:()=>ID});import{spawnSync as Uy}from"child_process";function kD(){return{command:"sh",args:["-c",tz],display:tz}}function ID(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
176
|
|
|
177
|
-
`),
|
|
178
|
-
`))}async function
|
|
177
|
+
`),SD(process.stderr),process.exit(2)}return{help:!1,dryRun:z}}function SD(J){J.write(["Usage: kobe update [--dry-run]","","Runs kobe's GitHub-hosted update script.","","Default command:",` ${tz}`,"","Script URL:",` ${lQ}`,"","Manual fallback:",` ${qB()}`,"","Examples:"," kobe update"," kobe update --dry-run",""].join(`
|
|
178
|
+
`))}async function Ky(J,z){let Z={spawn:z?.spawn??Uy,stdout:z?.stdout??process.stdout,stderr:z?.stderr??process.stderr,exit:z?.exit??((q)=>process.exit(q))},Y=ID(J);if(Y.help){SD(Z.stdout);return}let X=kD();if(Z.stdout.write(`kobe ${e0} -> latest
|
|
179
179
|
`),Z.stdout.write(`running: ${X.display}
|
|
180
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
|
|
181
|
+
`),Z.exit(1);Z.exit(G.status??1)}var TD=C(()=>{bJ()});var wD={};H1(wD,{runThemeSubcommand:()=>ky});import{existsSync as uD,mkdirSync as Dy,readFileSync as Ly,readdirSync as Fy,unlinkSync as My,writeFileSync as Oy}from"fs";import{basename as xD,join as f8,resolve as Ay}from"path";function LZ(J){process.stderr.write(`kobe theme: ${J}
|
|
182
182
|
`),process.exit(1)}function oZ(J){process.stderr.write(`kobe theme: ${J}
|
|
183
183
|
|
|
184
|
-
`),
|
|
184
|
+
`),ED(),process.exit(2)}function Ry(){let J=[];J.push("bundled:");for(let Y of[...B8].sort())J.push(` ${Y} [built-in]`);let z=gX(),Z=[];try{Z=Fy(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=f8(z,Y),q=B8.includes(X)?" (overrides built-in)":"";J.push(` ${X}${q} ${G}`)}process.stdout.write(`${J.join(`
|
|
185
185
|
`)}
|
|
186
|
-
`)}async function
|
|
186
|
+
`)}async function gy(J){if(/^https?:\/\//i.test(J)){let G;try{G=await fetch(J)}catch(V){LZ(`failed to fetch ${J}: ${V instanceof Error?V.message:String(V)}`)}if(!G.ok)LZ(`failed to fetch ${J}: HTTP ${G.status} ${G.statusText}`);let q=await G.text(),H=J.split(/[?#]/)[0]??J,j=xD(H)||"theme.json",B=j.endsWith(".json")?j.slice(0,-5):j;return{text:q,defaultName:B}}let z=Ay(process.cwd(),J),Z;try{Z=Ly(z,"utf8")}catch(G){LZ(`failed to read ${z}: ${G instanceof Error?G.message:String(G)}`)}let Y=xD(z),X=Y.endsWith(".json")?Y.slice(0,-5):Y;return{text:Z,defaultName:X}}function Ny(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)oZ("--name requires a value");Z=q,X+=1;continue}if(G.startsWith("--name=")){Z=G.slice(7);continue}if(G.startsWith("--"))oZ(`unknown flag: ${G}`);if(z===null){z=G;continue}oZ(`unexpected positional argument: ${G}`)}if(z===null)oZ("missing <source> (URL or path to theme JSON)");return{source:z,opts:{name:Z,force:Y}}}async function Cy(J){let{source:z,opts:Z}=Ny(J),{text:Y,defaultName:X}=await gy(z),G;try{G=JSON.parse(Y)}catch(V){LZ(`source is not valid JSON: ${V instanceof Error?V.message:String(V)}`)}let q=BH(G);if(!q.ok)LZ(`source is not a valid kobe theme: ${q.reason}`);let H=Z.name??X;if(!H||!/^[a-zA-Z0-9._-]+$/.test(H))LZ(`invalid theme name "${H}" (use letters, digits, '.', '_', '-')`);let j=gX();Dy(j,{recursive:!0});let B=f8(j,`${H}.json`);if(uD(B)&&!Z.force)LZ(`${B} already exists (pass --force to overwrite)`);Oy(B,`${JSON.stringify(q.theme,null,2)}
|
|
187
187
|
`,"utf8"),process.stdout.write(`installed theme "${H}" -> ${B}
|
|
188
|
-
`)}function
|
|
189
|
-
`)}function
|
|
190
|
-
`))}async function
|
|
188
|
+
`)}function by(J){let z=J[0];if(!z)oZ("missing <name>");if(J.length>1)oZ(`unexpected extra arguments after "${z}"`);if(B8.includes(z))LZ(`"${z}" is a built-in theme and cannot be removed`);let Z=f8(gX(),`${z}.json`);if(!uD(Z))LZ(`no user theme named "${z}" (looked for ${Z})`);My(Z),process.stdout.write(`removed theme "${z}" (${Z})
|
|
189
|
+
`)}function ED(){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: ${gX()}`,"Schema: https://raw.githubusercontent.com/sma1lboy/kobe/main/packages/kobe/src/tui/context/theme/theme.schema.json",""].join(`
|
|
190
|
+
`))}async function ky(J){let[z,...Z]=J;if(!z||z==="--help"||z==="-h"||z==="help"){if(ED(),!z)process.exit(2);return}if(z==="list"||z==="ls"){if(Z.length>0)oZ(`"${z}" takes no arguments`);Ry();return}if(z==="add"){await Cy(Z);return}if(z==="remove"||z==="rm"){by(Z);return}oZ(`unknown action "${z}" (try "list", "add", or "remove")`)}var B8;var PD=C(()=>{fH();x9();B8=["claude","conductor","dracula","nord","opencode","osaka-jade","tokyonight"]});var cD={};H1(cD,{runFeedbackSubcommand:()=>Sy,parseFeedbackArgs:()=>mD});import{readFileSync as hD}from"fs";function sZ(J){process.stderr.write(`kobe feedback: ${J}
|
|
191
191
|
|
|
192
|
-
${
|
|
193
|
-
`),process.exit(2)}function
|
|
194
|
-
`);return}if(!z.title)sZ("--title is required");if(z.body&&z.bodyFile)sZ("pass either --body or --body-file, not both");let Z=z.bodyFile?
|
|
195
|
-
`)});import{homedir as
|
|
196
|
-
`))}function
|
|
192
|
+
${vD}
|
|
193
|
+
`),process.exit(2)}function Iy(J){if(J==="-")return hD(0,"utf8");return hD(J,"utf8")}function mD(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)sZ("--title requires a value");continue}if(Y==="--body"){if(z.body=J[++Z],z.body===void 0)sZ("--body requires a value");continue}if(Y==="--body-file"){if(z.bodyFile=J[++Z],z.bodyFile===void 0)sZ("--body-file requires a value");continue}if(Y==="--category"){if(z.category=J[++Z],z.category===void 0)sZ("--category requires a value");continue}sZ(`unexpected argument "${Y}"`)}return z}async function Sy(J){let z=mD(J);if(z.help){process.stdout.write(`${vD}
|
|
194
|
+
`);return}if(!z.title)sZ("--title is required");if(z.body&&z.bodyFile)sZ("pass either --body or --body-file, not both");let Z=z.bodyFile?Iy(z.bodyFile):z.body;if(!Z)sZ("--body or --body-file is required");let Y=nX({title:z.title,body:Z,categorySlug:z.category});console.log(`created Discussion #${Y.number}: ${Y.url}`)}var vD;var dD=C(()=>{Gj();vD=["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 yy}from"os";async function nD(J={}){let z=J.homeDir??process.env.KOBE_HOME_DIR??yy(),Z=new cX({homeDir:z});await Z.load();let Y=new zj,X=new iq({store:Z,worktrees:Y});return{homeDir:z,orchestrator:X,store:Z,worktrees:Y,async close(){X.dispose()}}}var iD=C(()=>{TG();fQ();z8()});var $D={};H1($D,{runDaemonSubcommand:()=>xy});function lD(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 Ty(){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 xy(J){let[z="status"]=J,Z=Pz(),Y=YZ();if(z==="--help"||z==="-h"||z==="help"){lD(process.stdout);return}if(z==="status"){let H=new Jz(Z);try{let j=await H.request("daemon.status");console.log(JSON.stringify(j,null,2))}catch{let j=await hX(Y);if(j)console.log(`kobe daemon: no daemon socket at ${Z} (stale pidfile pid=${j})`);else console.log(`kobe daemon: no daemon running at ${Z}`);process.exitCode=1}finally{H.close()}return}if(z==="stop"){let H=new Jz(Z);try{await H.request("daemon.stop"),console.log("kobe daemon: stop requested")}catch{console.log(`kobe daemon: no daemon running at ${Z}`)}finally{H.close()}return}if(z==="restart"){await vX(Z,Y),(await Sz()).close(),console.log(`kobe daemon: restarted, listening on ${Z}`);return}if(z!=="start")process.stderr.write(`kobe daemon: unknown command "${z}"
|
|
197
197
|
|
|
198
|
-
`),
|
|
198
|
+
`),lD(process.stderr),process.exit(2);M5();let X=await nD(),G=await S4(X.orchestrator,{socketPath:Z,pidPath:Y,homeDir:X.homeDir,webPort:Ty(),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 aD=C(()=>{WG();kJ();tH();pY();sH();iD()});import{existsSync as uy,readFileSync as Ey}from"fs";import{homedir as wy}from"os";import{join as _D}from"path";function U8(J={}){return["skills","add",Py,"--skill","kobe","--agent",J.agent??Hj]}function jj(J={}){return`npx ${U8(J).join(" ")}`}function K8(J={}){let z=J.home??wy(),Z=J.cwd??process.cwd();return[_D(z,pD),_D(Z,pD)]}function hy(J){let z=J.match(/kobe-skill-version:\s*(\d+)/);return z?Number.parseInt(z[1],10):null}function DQ(J){let z=K8(J).find((X)=>uy(X));if(!z)return{installed:!1,installedVersion:null,currentVersion:W8,stale:!1};let Z=null;try{Z=hy(Ey(z,"utf8"))}catch{Z=null}let Y=Z===null||Z<W8;return{installed:!0,installedVersion:Z,currentVersion:W8,stale:Y}}function rD(){let J=DQ();if(!J.installed){if(x1(V8)==="1")return;QJ(V8,"1"),process.stderr.write(`
|
|
199
199
|
kobe: the kobe agent skill isn't installed \u2014 install it so your coding agent can drive kobe via \`kobe api\`:
|
|
200
|
-
${
|
|
201
|
-
(wraps \`${
|
|
200
|
+
${KQ}
|
|
201
|
+
(wraps \`${jj()}\`; check anytime with \`kobe doctor\`)
|
|
202
202
|
|
|
203
|
-
`);return}if(J.stale){let z=`${
|
|
203
|
+
`);return}if(J.stale){let z=`${V8}:v${J.currentVersion}`;if(x1(z)==="1")return;QJ(z,"1");let Z=J.installedVersion===null?"an older":`v${J.installedVersion}`;process.stderr.write(`
|
|
204
204
|
kobe: your kobe agent skill is out of date (${Z}; this kobe wants v${J.currentVersion}) \u2014 refresh it so \`kobe api\` guidance matches:
|
|
205
|
-
${
|
|
205
|
+
${KQ}
|
|
206
206
|
|
|
207
|
-
`)}}var
|
|
207
|
+
`)}}var W8=2,pD=".claude/skills/kobe/SKILL.md",KQ="kobe skill install",Py="Sma1lboy/kobe",Hj="claude-code",V8="skillHintSeen";var Bj=C(()=>{S1()});function vy(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 my(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 cy(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 dy(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=my(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 oD(){return[...vy(process.env),cy(await dy())]}var fj={};H1(fj,{runResetSubcommand:()=>JT,runReloadSubcommand:()=>zT,runDoctorSubcommand:()=>ty});import{existsSync as ny,readFileSync as eD,statSync as iy}from"fs";import{unlink as ly}from"fs/promises";import{join as JL}from"path";import{createInterface as $y}from"readline";function ay(J){try{return process.kill(J,0),!0}catch(z){return z.code==="EPERM"}}async function _y(J){let z=new Jz(J);try{return await z.request("daemon.status")}catch{return null}finally{z.close()}}function py(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 ry(J){if(J<1024)return`${J} B`;if(J<1048576)return`${(J/1024).toFixed(1)} KB`;return`${(J/1048576).toFixed(1)} MB`}function D8(J){try{let z=iy(J);return`present (${ry(z.size)}, modified ${z.mtime.toISOString()})`}catch{return"absent"}}function zL(J){try{let z=JSON.parse(eD(J,"utf8"));return Array.isArray(z.tasks)?z.tasks.length:null}catch{return null}}function oy(J,z){try{return eD(J,"utf8").split(`
|
|
208
208
|
`).filter((Y)=>Y.trim().length>0).slice(-z).join(`
|
|
209
|
-
`)}catch{return""}}async function
|
|
210
|
-
`).filter((Z)=>Z.trim().length>0).length}async function
|
|
209
|
+
`)}catch{return""}}async function L8(J){let z=Bun.spawn(SY(...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 sy(){if(!await iz())return 0;let{code:J,stdout:z}=await L8(["list-sessions","-F","#{session_name}"]);if(J!==0)return 0;return z.split(`
|
|
210
|
+
`).filter((Z)=>Z.trim().length>0).length}async function ty(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
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=Pz(),Y=YZ(),X=
|
|
213
|
-
`))H.push(` \u2502 ${L}`)}}if(H.push(""),await iz())H.push(`tmux: ${await
|
|
214
|
-
`))}async function
|
|
215
|
-
`))}async function
|
|
212
|
+
`)),process.exit(2);let Z=Pz(),Y=YZ(),X=Zq(),G=JL(KJ(),"tasks.json"),q=tJ(),H=["kobe doctor",` build: v${e0} (${process.platform} ${process.arch}, bun ${Bun.version})`,` home: ${sJ()}`,` socket: ${Z}`,""];H.push(...await oD(),"");let j=await _y(Z);if(j){let f=typeof j.daemonPid==="number"?j.daemonPid:"?",U=typeof j.uptimeMs==="number"?py(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 hX(Y);if(f&&ay(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(ny(Z))H.push(` orphan socket file present: ${Z}`);let U=oy(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 iz())H.push(`tmux: ${await sy()} kobe session(s) on \`${kz}\` socket`);else H.push("tmux: \u2717 not found on PATH (task sessions need tmux)");H.push("");let B=DQ();if(!B.installed)H.push("skill: \u2717 kobe agent skill not installed (optional \u2014 lets a coding agent drive `kobe api`)"),H.push(` \u2192 ${KQ}`);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 ${KQ}`)}else H.push(`skill: \u2713 kobe agent skill installed (v${B.installedVersion})`);H.push("");let V=zL(G);H.push(`tasks.json: ${D8(G)}${V===null?"":` \u2014 ${V} task(s)`}`),H.push(`state.json: ${D8(q)}`),H.push(`daemon.log: ${D8(X)}`),console.log(H.join(`
|
|
214
|
+
`))}async function ey(J){let z=$y({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 sD(J,z){try{await ly(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 tD(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 JT(J){if(J.includes("--help")||J.includes("-h")||J.includes("help")){tD(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
216
|
|
|
217
|
-
`),
|
|
218
|
-
re-run with --yes to proceed (no interactive terminal for a y/N prompt)`);return}if(!await
|
|
217
|
+
`),tD(process.stderr),process.exit(2);let Y=J.includes("--hard"),X=J.includes("--yes")||J.includes("-y"),G=Pz(),q=YZ(),H=JL(KJ(),"tasks.json"),j=tJ();if(console.log("kobe reset will:"),console.log(" \u2022 stop the kobe daemon (graceful \u2192 SIGTERM \u2192 SIGKILL)"),console.log(` \u2022 remove its socket + pidfile (${G})`),console.log(` \u2022 kill all kobe tmux sessions on the \`${kz}\` socket`),Y){let f=zL(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 ey(Y?`
|
|
219
219
|
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 vX(G,q);if(console.log(V==="absent"?" daemon: was not running (cleared any stale socket/pidfile)":` daemon: stopped via ${V}${B?` (pid ${B})`:""}`),await iz()){await
|
|
221
|
-
kobe: reset complete. Relaunch kobe to start fresh.`)}async function
|
|
220
|
+
Stop daemon and kill kobe sessions? [y/N] `)){console.log("aborted \u2014 nothing changed");return}}console.log("");let{pid:B,method:V}=await vX(G,q);if(console.log(V==="absent"?" daemon: was not running (cleared any stale socket/pidfile)":` daemon: stopped via ${V}${B?` (pid ${B})`:""}`),await iz()){await qf();let{code:f}=await L8(["kill-server"]);console.log(f===0?` tmux: killed all sessions on \`${kz}\``:` tmux: no sessions on \`${kz}\``)}else console.log(" tmux: not installed \u2014 no sessions to kill");if(Y)await sD(H,"task index"),await sD(j,"UI state");console.log(`
|
|
221
|
+
kobe: reset complete. Relaunch kobe to start fresh.`)}async function zT(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
222
|
`));return}let z=J.find((H)=>H.length>0);if(z!==void 0)process.stderr.write(`kobe reload: unexpected argument "${z}"
|
|
223
223
|
|
|
224
224
|
Usage: kobe reload (takes no options)
|
|
225
|
-
`),process.exit(2);if(!await iz()){console.log("kobe reload: tmux is not installed \u2014 no panes to reload");return}let{code:Z,stdout:Y}=await
|
|
226
|
-
`).map((H)=>H.trim()).filter((H)=>H.length>0);if(X.length===0){console.log(`kobe reload: no kobe tmux sessions on the \`${kz}\` socket`);return}let{refreshKobeWorkspacePanes:G}=await Promise.resolve().then(() => (HJ(),PJ)),q=0;for(let H of X)try{await G(H),q++}catch(j){console.error(` failed to reload session "${H}": ${j instanceof Error?j.message:String(j)}`)}console.log(`kobe: reloaded Tasks/Ops panes in ${q}/${X.length} session(s) \u2014 engine panes untouched`)}var
|
|
227
|
-
`).map((Y)=>Number.parseInt(Y.trim(),10)).filter((Y)=>Number.isFinite(Y)&&Y!==process.pid)}catch{return[]}}async function
|
|
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:
|
|
229
|
-
`),process.stdout.write(` home: ${
|
|
230
|
-
`);else if(q=await
|
|
231
|
-
`),process.stdout.write(` home: ${
|
|
225
|
+
`),process.exit(2);if(!await iz()){console.log("kobe reload: tmux is not installed \u2014 no panes to reload");return}let{code:Z,stdout:Y}=await L8(["list-sessions","-F","#{session_name}"]);if(Z!==0){console.log(`kobe reload: no kobe tmux sessions on the \`${kz}\` socket`);return}let X=Y.split(`
|
|
226
|
+
`).map((H)=>H.trim()).filter((H)=>H.length>0);if(X.length===0){console.log(`kobe reload: no kobe tmux sessions on the \`${kz}\` socket`);return}let{refreshKobeWorkspacePanes:G}=await Promise.resolve().then(() => (HJ(),PJ)),q=0;for(let H of X)try{await G(H),q++}catch(j){console.error(` failed to reload session "${H}": ${j instanceof Error?j.message:String(j)}`)}console.log(`kobe: reloaded Tasks/Ops panes in ${q}/${X.length} session(s) \u2014 engine panes untouched`)}var Wj=C(()=>{WG();tH();pY();sH();t1();Bj();w1();bJ()});var HL={};H1(HL,{runWebSubcommand:()=>jT});import{existsSync as XL}from"fs";import{homedir as ZT}from"os";import{resolve as Vj}from"path";import{fileURLToPath as GL}from"url";function ZL(){let J=process.env.KOBE_HOME_DIR?.trim();return J?`sandbox: ${J}`:`${ZT()}/.kobe (production)`}function XT(){let J=GL(import.meta.url),z=[Vj(J,"../../../../kobe-web/dist"),Vj(J,"../../web-ui")];for(let Z of z)if(XL(`${Z}/index.html`))return Z;return}function GT(){let J=GL(import.meta.url),z=[Vj(J,"../../../../kobe-web/pty-server.mjs"),Vj(J,"../../web-ui/pty-server.mjs")];for(let Z of z)if(XL(Z))return Z;return}async function YL(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 QT(J){let z;try{z=(await(await fetch(`http://localhost:${J}${qL}`,{signal:AbortSignal.timeout(800)})).text()).trim()}catch{return}if(z!==QL)throw Error(`PTY port ${J} is in use by a non-kobe service; refusing to replace it`);let Z=await YL(J);for(let X of Z)try{process.kill(X,"SIGTERM")}catch{}let Y=Date.now()+2000;while(Date.now()<Y){if((await YL(J)).length===0)return;await new Promise((X)=>setTimeout(X,100))}}async function qT(J){let z=GT();if(!z)return null;let Z=J.webPort+2;if(J.takeover)await QT(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 HT(J,z){if(process.env.KOBE_DAEMON_WEB_PORT=String(J),z)process.env.KOBE_DAEMON_WEB_STATIC_DIR=z;await mX();let Z;try{Z=(await(await fetch(`http://127.0.0.1:${J}${qL}`,{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!==QL)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 jT(J){if(J.includes("--help")||J.includes("-h")){process.stdout.write(YT);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:XT();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 HT(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: ${ZL()}
|
|
230
|
+
`);else if(q=await qT({webPort:z,takeover:X}),process.stdout.write(`kobe web \u2192 http://localhost:${z}
|
|
231
|
+
`),process.stdout.write(` home: ${ZL()}
|
|
232
232
|
`),!q)process.stderr.write(`kobe web: PTY server not found; terminal tabs will be unavailable
|
|
233
233
|
`);process.on("SIGINT",()=>{j(),process.exit(0)}),process.on("SIGTERM",()=>{j(),process.exit(0)}),q?.exited.then(()=>{if(!H)process.stderr.write(`kobe web: PTY server exited
|
|
234
234
|
`),j(),process.exit(1)}),await new Promise(()=>{})}catch(Y){process.stderr.write(`kobe web: ${Y instanceof Error?Y.message:String(Y)}
|
|
235
|
-
`),process.exit(1)}}var
|
|
235
|
+
`),process.exit(1)}}var QL="kobe-web",qL="/__kobe_web",YT=`Usage: kobe web [options]
|
|
236
236
|
|
|
237
237
|
Launch the kobe web UI through daemon web transport on http://localhost:<port>.
|
|
238
238
|
|
|
@@ -241,51 +241,51 @@ Options:
|
|
|
241
241
|
--routes-only Routes only; Vite serves the SPA separately.
|
|
242
242
|
--no-takeover Reserved for compatibility; daemon owns the web port.
|
|
243
243
|
-h, --help Show this help.
|
|
244
|
-
`;var
|
|
245
|
-
`)}function
|
|
244
|
+
`;var jL=C(()=>{kJ()});var fL={};H1(fL,{runSkillSubcommand:()=>fT});function F8(){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: ${Hj}.`].join(`
|
|
245
|
+
`)}function BL(J){let z=Hj;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
246
|
`),process.exit(2);z=X,Z++}else if(Y.startsWith("--agent="))z=Y.slice(8);else process.stderr.write(`kobe skill: unknown flag "${Y}"
|
|
247
247
|
|
|
248
|
-
${
|
|
249
|
-
`),process.exit(2)}return z}async function
|
|
250
|
-
`),!z)process.exitCode=2;return}if(!
|
|
248
|
+
${F8()}
|
|
249
|
+
`),process.exit(2)}return z}async function fT(J){let[z,...Z]=J;if(!z||z==="--help"||z==="-h"||z==="help"){if(process.stdout.write(`${F8()}
|
|
250
|
+
`),!z)process.exitCode=2;return}if(!BT.includes(z))process.stderr.write(`kobe skill: unknown verb "${z}"
|
|
251
251
|
|
|
252
|
-
${
|
|
253
|
-
`),process.exit(2);if(z==="status"){let H=
|
|
254
|
-
`));return}if(z==="command"){process.stdout.write(`${
|
|
255
|
-
`);return}let Y=
|
|
252
|
+
${F8()}
|
|
253
|
+
`),process.exit(2);if(z==="status"){let H=DQ(),[j,B]=K8(),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(`${jj({agent:BL(Z)})}
|
|
255
|
+
`);return}let Y=BL(Z),X=U8({agent:Y});process.stdout.write(`kobe skill: running \`npx ${X.join(" ")}\`
|
|
256
256
|
`);let q=await Bun.spawn(["npx",...X],{stdin:"inherit",stdout:"inherit",stderr:"inherit"}).exited;if(q!==0)process.stderr.write(`
|
|
257
257
|
kobe skill install failed (npx exited ${q}). Is \`npx\` on PATH and are you online?
|
|
258
|
-
You can run it yourself: ${
|
|
258
|
+
You can run it yourself: ${jj({agent:Y})}
|
|
259
259
|
`),process.exit(q||1);process.stdout.write(`kobe skill: installed.
|
|
260
|
-
`)}var
|
|
261
|
-
`))}var qT=500,jT="worktree-created",fL="externalWorktreeSync";var O8=C(()=>{kJ();o9();bq();S1();s1()});function RL(J){var z;if(J>=55296&&J<=57343||J>1114111)return 65533;return(z=LT.get(J))!==null&&z!==void 0?z:J}var A8,LT,AL;var gL=C(()=>{LT=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]]),AL=(A8=String.fromCodePoint)!==null&&A8!==void 0?A8:(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 NL(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 CL;var bL=C(()=>{CL=NL("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 kL=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 R8(J){return J>=$1.ZERO&&J<=$1.NINE}function FT(J){return J>=$1.UPPER_A&&J<=$1.UPPER_F||J>=$1.LOWER_A&&J<=$1.LOWER_F}function MT(J){return J>=$1.UPPER_A&&J<=$1.UPPER_Z||J>=$1.LOWER_A&&J<=$1.LOWER_Z||R8(J)}function OT(J){return J===$1.EQUALS||MT(J)}class g8{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=FZ.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)|IL)===$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(R8(Z)||FT(Z)){let Y=Z<=$1.NINE?Z-$1.ZERO:(Z|IL)-$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(R8(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===FZ.Strict)return 0;if(this.emitCodePoint(RL(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=RT(Z,Y,this.treeIndex+Math.max(1,X),G),this.treeIndex<0)return this.result===0||this.decodeMode===FZ.Attribute&&(X===0||OT(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!==FZ.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!==FZ.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 AT(J){let z="",Z=new g8(J,(Y)=>z+=AL(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 RT(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 hY(J,z=FZ.Legacy){return gT(J,z)}var $1,IL=32,WJ,FZ,gT;var SL=C(()=>{gL();bL();kL();(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"})(FZ||(FZ={}));gT=AT(CL)});var yL,TL;var uL=C(()=>{SL();(function(J){J[J.XML=0]="XML",J[J.HTML=1]="HTML"})(yL||(yL={}));(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"})(TL||(TL={}))});import{CliRenderer as CT,createCliRenderer as bT,engine as kT}from"@opentui/core";import{createTestRenderer as W_}from"@opentui/core/testing";import{ASCIIFontRenderable as IT,BoxRenderable as ST,CodeRenderable as yT,DiffRenderable as TT,InputRenderable as xT,LineNumberRenderable as uT,MarkdownRenderable as ET,ScrollBoxRenderable as wT,SelectRenderable as PT,TabSelectRenderable as hT,TextareaRenderable as vT,TextAttributes as N8,TextNodeRenderable as mT,TextRenderable as cT}from"@opentui/core";import{engine as K_,Timeline as D_}from"@opentui/core";import{BaseRenderable as cL,createTextAttributes as nT,InputRenderable as C8,InputRenderableEvents as DQ,isTextNodeRenderable as I8,parseColor as EL,Renderable as iT,RootTextNodeRenderable as lT,ScrollBoxRenderable as $T,SelectRenderable as wL,SelectRenderableEvents as b8,TabSelectRenderable as PL,TabSelectRenderableEvents as k8,TextNodeRenderable as aT,TextRenderable as dL}from"@opentui/core";import{BaseRenderable as zx,isTextNodeRenderable as Zx,TextNodeRenderable as Yx,TextRenderable as Xx,Yoga as vL}from"@opentui/core";import{BoxRenderable as b_,RootRenderable as k_}from"@opentui/core";import{TimeToFirstDrawRenderable as Hx}from"@opentui/core";import{createSlotRegistry as y_}from"@opentui/core";function pT({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);hz((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 hz(()=>{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 hz(()=>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,O0=1,b;while(++_<c&&_<d){if((b=G0.get(N[_]))==null||b!==f0+O0)break;O0++}if(O0>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)hz(()=>M.children=U(I,N.children,M.children));return hz(()=>N.ref&&N.ref(I)),hz(()=>{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 VY((y)=>{M=y,f(N,I())}),M},insert:f,spread(I,N,M){if(typeof N==="function")hz((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:vq,effect:hz,memo:_T,createComponent:OU,use(I,N,M){return YJ(()=>I(N,M))}}}function rT(J){let z=pT(J);return z.mergeProps=vq,z}function u8(J){if(!Vj.has(J))Vj.set(J,0);let z=Vj.get(J)+1;return Vj.set(J,z),`${J}-${z}`}function oT(J,z,Z){if(VJ("Inserting node:",jJ(z),"into parent:",jJ(J),"with anchor:",jJ(Z),z instanceof aX),z instanceof LQ)z.parent=J,z=z.getSlotChild(J);if(Z&&Z instanceof LQ)Z=Z.getSlotChild(J);if(I8(z)){if(!(J instanceof dL)&&!I8(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 cL))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=S8(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 sT(J,z){if(VJ("Removing node:",jJ(z),"from parent:",jJ(J)),z instanceof LQ)z.parent=null,z=z.getSlotChild(J);J.remove(z.id),process.nextTick(()=>{if(z instanceof cL&&!z.parent){z.destroyRecursively();return}})}function tT(J){VJ("Creating text node:",J);let z=u8("text-node");if(typeof J==="number")J=J.toString();return aX.fromString(hY(J),{id:z})}function eT(){let J=u8("slot-node");return VJ("Creating slot node",J),new LQ(J)}function hL(J){VJ("Getting parent of node:",jJ(J));let z=J.parent??void 0;if(z instanceof lT)z=z.textParent??void 0;let Z=z?.parent?.parent?.parent;if(Z instanceof $T&&Z.content===z)z=Z;return z}function Qx(J){Object.assign(pL,J)}function qx(){return pL}var x8,GJ=()=>{let J=lJ(x8);if(!J)throw Error("No renderer found");return J},dT=(J)=>{let z=GJ();a1(()=>{z.on("resize",J)}),C1(()=>{z.off("resize",J)})},pz=()=>{let J=GJ(),[z,Z]=s({width:J.width,height:J.height});return dT((X,G)=>{Z({width:X,height:G})}),z},mL=(J)=>{let Z=GJ().keyInput;a1(()=>{Z.on("paste",J)}),C1(()=>{Z.off("paste",J)})},_T=(J)=>K0(()=>J()),Vj,VJ=(...J)=>{if(process.env.DEBUG)console.log("[Reconciler]",...J)},aX,jJ=(J)=>{if(!J)return;return J.id},S8=(J)=>{let z;if(J instanceof dL)z=J.getTextChildren();else z=J.getChildren();return z},Jx,u,C0,k,W,T0,D,K,g_,Q,nL,Hz,E8,iL,lL,LQ,FQ,Uj,y8,T8,$L,aL,_L,Gx,pL,jx=(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=Jx(()=>k(x8.Provider,{get value(){return J},get children(){return k(z,{})}}),J.root)}finally{G=!1,J.destroy=H}if(Y)j();if(q)H()},rL=async(J,z={})=>{let Z=z instanceof CT?z:await bT({...z,onDestroy:()=>{z.onDestroy?.()}});kT.attach(Z),jx(Z,J)};var P=C(()=>{D1();uL();D1();D1();D1();x8=vz();Vj=new Map;aX=class aX extends aT{static fromString(J,z={}){let Z=new aX(z);return Z.add(J),Z}};({render:Jx,effect:u,memo:C0,createComponent:k,createElement:W,createTextNode:T0,insertNode:D,insert:K,spread:g_,setProp:Q,mergeProps:nL,use:Hz}=rT({createElement(J){VJ("Creating element:",J);let z=u8(J),Z=lJ(x8);if(!Z)throw Error("No renderer found");let Y=qx();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:tT,createSlotNode:eT,replaceText(J,z){if(VJ("Replacing text:",z,"in node:",jJ(J)),!(J instanceof aX))return;J.replace(hY(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(I8(J)){if(z==="href"){J.link={url:Z};return}if(z==="style"){J.attributes|=nT(Z),J.fg=Z.fg?EL(Z.fg):J.fg,J.bg=Z.bg?EL(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 iT))return;if(Z)J.focus();else J.blur();break;case"onChange":let X=void 0;if(J instanceof wL)X=b8.SELECTION_CHANGED;else if(J instanceof PL)X=k8.SELECTION_CHANGED;else if(J instanceof C8)X=DQ.CHANGE;if(!X)break;if(Z)J.on(X,Z);if(Y)J.off(X,Y);break;case"onInput":if(J instanceof C8){if(Z)J.on(DQ.INPUT,Z);if(Y)J.off(DQ.INPUT,Y)}break;case"onSubmit":if(J instanceof C8){if(Z)J.on(DQ.ENTER,Z);if(Y)J.off(DQ.ENTER,Y)}else J[z]=Z;break;case"onSelect":if(J instanceof wL){if(Z)J.on(b8.ITEM_SELECTED,Z);if(Y)J.off(b8.ITEM_SELECTED,Y)}else if(J instanceof PL){if(Z)J.on(k8.ITEM_SELECTED,Z);if(Y)J.off(k8.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]=hY(G);break}default:J[z]=Z}},isTextNode(J){return J instanceof aX},insertNode:oT,removeNode:sT,getParentNode:hL,getFirstChild(J){VJ("Getting first child of node:",jJ(J));let z=S8(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=hL(J);if(!z){VJ("No parent found for node:",jJ(J));return}let Z=S8(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}}));E8=class E8 extends zx{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}};iL=class iL extends Yx{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()}};lL=class lL extends E8{yogaNode;slotParent;destroyed=!1;constructor(J,z){super(J);this._visible=!1,this.slotParent=z,this.yogaNode=vL.default.Node.create(),this.yogaNode.setDisplay(vL.Display.None)}getLayoutNode(){return this.yogaNode}updateFromLayout(){}updateLayout(){}onRemove(){}destroy(){if(this.destroyed)return;this.destroyed=!0,super.destroy(),this.slotParent?.destroy()}};LQ=class LQ extends E8{layoutNode;textNode;destroyed=!1;constructor(J){super(J);this._visible=!1}getSlotChild(J){if(Zx(J)||J instanceof Xx){if(!this.textNode)this.textNode=new iL(`slot-text-${this.id}`,this);return this.textNode}if(!this.layoutNode)this.layoutNode=new lL(`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()}};FQ=class FQ extends mT{_ctx;constructor(J,z){super(z);this._ctx=J}};Uj=class Uj extends FQ{constructor(J,z){super(null,J);if(z==="b"||z==="strong")this.attributes=(this.attributes||0)|N8.BOLD;else if(z==="i"||z==="em")this.attributes=(this.attributes||0)|N8.ITALIC;else if(z==="u")this.attributes=(this.attributes||0)|N8.UNDERLINE}};y8=class y8 extends Uj{constructor(J){super(J,"b")}};T8=class T8 extends Uj{constructor(J){super(J,"i")}};$L=class $L extends Uj{constructor(J){super(J,"u")}};aL=class aL extends FQ{constructor(J,z){super(null,z);this.add()}add(){return super.add(`
|
|
262
|
-
`)}};_L=class _L extends FQ{constructor(J,z){let Z={...z,link:{url:z.href}};super(null,Z)}};Gx={box:ST,text:cT,input:xT,select:PT,textarea:vT,ascii_font:IT,tab_select:hT,scrollbox:wT,code:yT,diff:TT,line_number:uT,markdown:ET,span:FQ,strong:y8,b:y8,em:T8,i:T8,u:$L,br:aL,a:_L},pL={...Gx};Qx({time_to_first_draw:Hx})});function MZ(J){if(J===void 0)return"undefined";if(J===null)return"null";let z=Array.isArray(J)?"array":typeof J,Z;try{Z=typeof J==="string"?J:JSON.stringify(J)}catch{Z=String(J)}if(Z.length>120)Z=`${Z.slice(0,120)}\u2026`;return`${z}:${Z}`}function Bx(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 fx(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 Wx(J,z){if(J.size!==z.size)return!1;for(let[Z,Y]of J){let X=z.get(Z);if(!X||!_z(Y,X))return!1}return!0}function Vx(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 Ux(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??mX,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")XZ("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(),XZ("orch",`reconnected and re-subscribed after ${z} attempt(s) \u2014 task list re-synced`),this.reconnecting=!1;return}catch(Z){if(z===1||z%10===0)qJ("orch-reconnect",Z);J=Math.min(J*2,3000)}}this.reconnecting=!1}async init(){let J=await this.client.request("hello",{protocolVersion:eJ,minProtocolVersion:IZ}),z=typeof J.protocolVersion==="number"?J.protocolVersion:eJ,Z=typeof J.minProtocolVersion==="number"?J.minProtocolVersion:z;if(!eQ({localVersion:eJ,localMin:IZ,remoteVersion:z,remoteMin:Z}))throw Error(`kobe daemon is protocol v${z} (min v${Z}); this client is v${eJ} (min v${IZ}). 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(MQ));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"),XZ("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()=>hV(this.daemonVersionAcc()??void 0,J1)}engineStateSignal(){return this.engineStateAcc}taskJobsSignal(){return this.taskJobsAcc}worktreeChangesSignal(){return this.worktreeChangesAcc}transcriptActivitySignal(){return this.transcriptActivityAcc}uiPrefsSignal(){return this.uiPrefsAcc}keybindingsRevSignal(){return this.keybindingsRevAcc}listTasks(){return this.tasksAcc()}getTask(J){return this.tasksAcc().find((z)=>z.id===J)}subscribeTasks(J){try{J(this.listTasks())}catch(Z){console.error("[kobe RemoteOrchestrator] task listener threw on subscribe:",Z)}let z=!0;return VY((Z)=>{return n0(()=>{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 MQ(Y.task)}async ensureMainTask(J){let z=await this.client.request("task.ensureMain",{repo:J});return MQ(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 MQ(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(MQ)),this.pruneEngineState(Z),this.pruneTaskJobs(Z);else qJ("orch",`dropped task.snapshot event: tasks is not an array (got ${MZ(Z)})`);return}if(J==="active-task"){let Z=z?.taskId;this.setActiveTaskSig(typeof Z==="string"?Z:null);return}if(J==="update"){let Z=z?.info;this.setUpdateSig(Z??null);return}if(J==="engine-state"){let Z=z;if(typeof Z?.taskId!=="string"||typeof Z.state!=="string"){qJ("orch",`dropped engine-state event: taskId/state must be strings (taskId=${MZ(Z?.taskId)}, state=${MZ(Z?.state)})`);return}let Y=new Map(this.engineStateAcc());if(Z.state==="idle")Y.delete(Z.taskId);else Y.set(Z.taskId,{state:Z.state,detail:Z.detail,at:typeof Z.at==="number"?Z.at:0});this.setEngineStateSig(Y);return}if(J==="task.jobs"){let Z=z;if(typeof Z?.taskId!=="string"||Z.kind!=="ensureWorktree"){qJ("orch",`dropped task.jobs event: expected string taskId + kind "ensureWorktree" (taskId=${MZ(Z?.taskId)}, kind=${MZ(Z?.kind)})`);return}let Y=this.taskJobsAcc();if(Z.phase==="running"){let X=new Map(Y);X.set(Z.taskId,{kind:Z.kind}),this.setTaskJobsSig(X);return}if((Z.phase==="done"||Z.phase==="error")&&Y.has(Z.taskId)){let X=new Map(Y);X.delete(Z.taskId),this.setTaskJobsSig(X)}return}if(J==="worktree.changes"){let Z=Bx(z);if(!Z){qJ("orch",`dropped worktree.changes event: malformed changes payload (${MZ(z)})`);return}let Y=this.worktreeChangesAcc();if(Y&&Wx(Y,Z))return;this.setWorktreeChangesSig(Z);return}if(J==="transcript.activity"){let Z=Vx(z);if(!Z){qJ("orch",`dropped transcript.activity event: malformed activity payload (${MZ(z)})`);return}let Y=this.transcriptActivityAcc();if(Y&&Ux(Y,Z))return;this.setTranscriptActivitySig(Z);return}if(J==="ui-prefs"){let Z=fx(z);if(!Z){let Y=z?.theme;qJ("orch",`dropped ui-prefs event: theme must be a string (got ${MZ(Y)})`);return}this.setUiPrefsSig(Z);return}if(J==="keybindings"){let Z=z;if(typeof Z?.rev!=="number"){qJ("orch",`dropped keybindings event: rev must be a number (got ${MZ(Z?.rev)})`);return}this.setKeybindingsRevSig(Z.rev);return}}pruneEngineState(J){let z=this.engineStateAcc();if(z.size===0)return;let Z=new Set(J.map((X)=>X.id)),Y=null;for(let X of z.keys()){if(Z.has(X))continue;if(!Y)Y=new Map(z);Y.delete(X)}if(Y)this.setEngineStateSig(Y)}pruneTaskJobs(J){let z=this.taskJobsAcc();if(z.size===0)return;let Z=new Set(J.map((X)=>X.id)),Y=null;for(let X of z.keys()){if(Z.has(X))continue;if(!Y)Y=new Map(z);Y.delete(X)}if(Y)this.setTaskJobsSig(Y)}}function MQ(J){return{id:RG(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 tZ=C(()=>{QY();kJ();XY();D1();PX();Yz();bJ()});function tL(J){let z=J[Mz];if(!z){if(Object.defineProperty(J,Mz,{value:z=new Proxy(J,Lx)}),!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 Kj(J){let z;return J!=null&&typeof J==="object"&&(J[Mz]||!(z=Object.getPrototypeOf(J))||z===Object.prototype||Array.isArray(J))}function AQ(J,z=new Set){let Z,Y,X,G;if(Z=J!=null&&J[w8])return Z;if(!Kj(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=AQ(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=AQ(X,z))!==X)J[G]=Y}}return J}function Dj(J,z){let Z=J[z];if(!Z)Object.defineProperty(J,z,{value:Z=Object.create(null)});return Z}function RQ(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 Kx(J,z){let Z=Reflect.getOwnPropertyDescriptor(J,z);if(!Z||Z.get||!Z.configurable||z===Mz||z===_X)return Z;return delete Z.value,delete Z.writable,Z.get=()=>J[Mz][z],Z}function eL(J){hq()&&RQ(Dj(J,_X),sL)()}function Dx(J){return eL(J),Reflect.ownKeys(J)}function Lj(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(oL.onStoreNodeUpdate&&oL.onStoreNodeUpdate(J,z,Z,X),Z===void 0){if(delete J[z],J[OZ]&&J[OZ][z]&&X!==void 0)J[OZ][z].$()}else if(J[z]=Z,J[OZ]&&J[OZ][z]&&X===void 0)J[OZ][z].$();let q=Dj(J,_X),H;if(H=RQ(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=RQ(q,"length",G))&&H.$(J.length)}(H=q[sL])&&H.$()}function JF(J,z){let Z=Object.keys(z);for(let Y=0;Y<Z.length;Y+=1){let X=Z[Y];if(zF(X))continue;Lj(J,X,z[X])}}function zF(J){return J==="__proto__"||J==="constructor"||J==="prototype"}function Fx(J,z){if(typeof z==="function")z=z(J);if(z=AQ(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)Lj(J,Z,X)}Lj(J,"length",Y)}else JF(J,z)}function OQ(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&&zF(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++)OQ(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))OQ(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)OQ(J,[f].concat(z),Z);return}else if(z.length>1){OQ(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=AQ(G),Y===void 0||Kj(X)&&Kj(G)&&!Array.isArray(G))JF(X,G);else Lj(J,Y,G)}function rz(...[J,z]){let Z=AQ(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=tL(Z);RU.registerGraph({value:Z,name:z&&z.name});function G(...q){Pq(()=>{Y&&q.length===1?Fx(Z,q[0]):OQ(Z,q)})}return[X,G]}var w8,_X,OZ,sL,oL,Lx,d_;var pX=C(()=>{D1();w8=Symbol("store-raw"),_X=Symbol("store-node"),OZ=Symbol("store-has"),sL=Symbol("store-self"),oL={onStoreNodeUpdate:null};Lx={get(J,z,Z){if(z===w8)return J;if(z===Mz)return Z;if(z===Eq)return eL(J),Z;let Y=Dj(J,_X),X=Y[z],G=X?X():J[z];if(z===_X||z===OZ||z==="__proto__")return G;if(!X){let q=Object.getOwnPropertyDescriptor(J,z);if(hq()&&(typeof G!=="function"||J.hasOwnProperty(z))&&!(q&&q.get))G=RQ(Y,z,G)()}return Kj(G)?tL(G):G},has(J,z){if(z===w8||z===Mz||z===Eq||z===_X||z===OZ||z==="__proto__")return!0;return hq()&&RQ(Dj(J,OZ),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:Dx,getOwnPropertyDescriptor:Kx};d_=Symbol("store-root")});function Fj(J){let z=vz();return{provider:(Z)=>{let Y=J.init(Z);return k(Y0,{get when(){return Y.ready===void 0||Y.ready===!0},get children(){return k(z.Provider,{value:Y,get children(){return Z.children}})}})},use(){let Z=lJ(z);if(!Z)throw Error(`${J.name} context must be used within a context provider`);return Z}}}var P8=C(()=>{P();P();D1()});import{RGBA as vY}from"@opentui/core";function Ox(){return Object.keys(DJ.themes)}function gQ(J){return Boolean(DJ.themes[J])}function v8(J,z){if(!J)return!1;if(!z||typeof z!=="object"||!z.theme)return!1;return mY("themes",{...DJ.themes,[J]:z}),!0}function h8(J,z="dark"){let Z=J.defs??{};function Y(j,B=[]){if(typeof j==="string"){if(j==="transparent"||j==="none")return vY.fromInts(0,0,0,0);if(j.startsWith("#"))return vY.fromHex(j);if(B.includes(j))return vY.fromInts(0,0,0);let V=Z[j]??J.theme[j];if(V===void 0)return vY.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??vY.fromHex("#ffffff"),q=X.background??vY.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 Mx,cY,DJ,mY,w0,ZF;var d1=C(()=>{P();D1();pX();P8();zH();ZH();YH();XH();GH();QH();qH();Mx={claude:DX,conductor:LX,nord:MX,opencode:OX,dracula:FX,tokyonight:RX,"osaka-jade":AX},cY=["primary","success","info"],[DJ,mY]=rz({themes:{...Mx},active:"claude",mode:"dark",transparentBackground:!1,focusAccent:"primary"});({use:w0,provider:ZF}=Fj({name:"Theme",init:(J)=>{if(J.mode)mY("mode",J.mode);if(J.theme&&gQ(J.theme))mY("active",J.theme);let z=GJ(),Z=K0(()=>{let X=DJ.themes[DJ.active];if(X)return h8(X,DJ.mode);let G=DJ.themes.claude??DJ.themes.opencode??Object.values(DJ.themes)[0];if(!G)return h8({theme:{background:"#000000",text:"#ffffff"}},DJ.mode);return h8(G,DJ.mode)}),Y=K0(()=>{let X=Z(),G=X[DJ.focusAccent]??X.primary,q={...X,focusAccent:G};if(!DJ.transparentBackground)return q;let H=vY.fromInts(0,0,0,0);return{...q,background:H,backgroundPanel:H}});return n0(()=>{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(!gQ(X))return!1;return mY("active",X),!0},setMode(X){mY("mode",X)},setTransparentBackground(X){mY("transparentBackground",X)},setFocusAccent(X){mY("focusAccent",X)},all(){return Ox()},has(X){return gQ(X)}}}}))});var YF,XF;var GF=C(()=>{YF={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"}},XF={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 QF,qF;var HF=C(()=>{QF={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"}},qF={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 jF,BF;var fF=C(()=>{jF={title:"kobe \u2014 keybindings",esc:"esc"},BF={title:"kobe \u2014 \u5FEB\u6377\u952E",esc:"esc"}});var WF,VF;var UF=C(()=>{WF={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"},VF={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 KF,DF;var LF=C(()=>{KF={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)"}},DF={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 FF,MF;var OF=C(()=>{FF={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"}},MF={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 AF,RF;var gF=C(()=>{AF={badge:{newActivity:"\u25CF new"},preview:{diffVsHead:"diff vs HEAD",file:"file",closeHint:"\xB7 q to close",loading:"loading\u2026"}},RF={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 NF,CF;var bF=C(()=>{NF={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"},CF={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 kF,IF;var SF=C(()=>{kF={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)"}},IF={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 yF,TF;var xF=C(()=>{yF={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}"}},TF={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 uF,EF;var wF=C(()=>{uF={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`"}},EF={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 NQ(J){return typeof J==="string"&&rX.some((z)=>z.id===J)}var Ax,Rx,rX,oX,sX="en";var tX=C(()=>{GF();HF();fF();UF();LF();OF();gF();bF();SF();xF();wF();Ax={settings:kF,tasks:yF,files:QF,newTask:FF,ops:AF,update:uF,quickTask:NF,help:jF,history:WF,common:YF,keys:KF},Rx={settings:IF,tasks:TF,files:qF,newTask:MF,ops:RF,update:EF,quickTask:CF,help:BF,history:VF,common:XF,keys:DF},rX=[{id:"en",label:"English"},{id:"zh",label:"\u4E2D\u6587"}],oX={en:Ax,zh:Rx}});function CQ(J){if(oX[J])gx("lang",J)}function c8(){return m8.lang}function PF(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 Nx(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=m8.lang,Y=PF(oX[Z],J)??PF(oX.en,J)??J;return Nx(Y,z)}function d8(J,z){let Z=m8.lang,Y=(X)=>{return X.keys[J]?.[z]};return Y(oX[Z])??Y(oX.en)??z}var m8,gx;var BJ=C(()=>{pX();tX();tX();[m8,gx]=rz({lang:sX})});import{randomBytes as mF}from"crypto";import{existsSync as n8,mkdirSync as Cx,writeFileSync as bx}from"fs";import{isAbsolute as kx,join as Ix}from"path";function Tx(J){if(J.startsWith('"')&&J.endsWith('"')||J.startsWith("'")&&J.endsWith("'"))return J.slice(1,-1);return J}function xx(J){let Z=`__DOUBLE_BACKSLASH_${mF(8).toString("hex")}__`;return J.replace(/\\\\/g,Z).replace(/\\(.)/g,"$1").replaceAll(Z,"\\")}function cF(J,z=n8){let Z=xx(Tx(J.trim()));if(!Sx.test(Z))return null;if(!kx(Z))return null;return z(Z)?Z:null}function dF(J,z=n8){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=
|
|
260
|
+
`)}var BT;var WL=C(()=>{Bj();BT=["install","status","command"]});var O8={};H1(O8,{runHookSubcommand:()=>FT,readTextWithTimeout:()=>KL,parseWorktreeRemovePath:()=>ML,parseWorktreeAddPath:()=>FL,ensureGlobalKobeHooks:()=>AT});import{homedir as WT}from"os";import{join as UL,resolve as M8}from"path";async function KL(J,z=VT){let Z;try{return await Promise.race([J(),new Promise((Y)=>{Z=setTimeout(()=>Y(""),z)})])}finally{if(Z!==void 0)clearTimeout(Z)}}async function DL(){try{let J=await KL(()=>Bun.stdin.text());if(!J.trim())return{};let z=JSON.parse(J);return z&&typeof z==="object"&&!Array.isArray(z)?z:{}}catch{return{}}}function UT(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 DT(J){return!!J&&typeof J==="object"&&!Array.isArray(J)}function LL(J){let z=[],Z=/"([^"]*)"|'([^']*)'|(\S+)/g,Y;while((Y=Z.exec(J))!==null)z.push(Y[1]??Y[2]??Y[3]??"");return z}function FL(J){let z=LL(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 ML(J){let z=LL(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 LT(){let J=await DL(),z=DT(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=FL(Z),G=X?void 0:ML(Z);if(!X&&!G)return;let q=await qz();if(!q)return;try{if(X)await q.request("worktree.reconcile",{cwd:Y,worktreePath:M8(Y,X)});else if(G)await q.request("worktree.archiveRemoved",{worktreePath:M8(Y,G)})}finally{q.close()}}async function FT(J){let[z,...Z]=J;if(z==="setup"){await RT(Z);return}if(z===KT){try{await LT()}catch{}return}try{if(!z||!bq(z))return;let Y=await DL(),X=UT(Z,"--task-id"),G=typeof Y.cwd==="string"&&Y.cwd?Y.cwd:process.cwd(),q;for(let j of OL())if(q=j.activityDetailFromPayload(z,Y),q)break;let H=await qz();if(!H)return;try{await H.request("engine.reportEvent",{...X?{taskId:X}:{cwd:G},kind:z,...q?{detail:q}:{}})}finally{H.close()}}catch{}}function MT(){return o1.map((J)=>oB(J)).filter((J)=>J.supportsWorktreeSync())}function OL(){return o1.map((J)=>oB(J)).filter((J)=>J.supportsHooks())}function AL(){return UL(WT(),".claude","settings.json")}function OT(J){if(!J||J==="off")return;if(J==="global")return AL();if(J.startsWith("repo:"))return UL(M8(J.slice(5)),".claude","settings.json");return J}async function AT(){try{for(let J of OL()){let z=J.globalSettingsPath();if(!z)continue;await J.installActivityHooks(z),await J.installWorktreeWatchHook(z)}await RL()}catch{}}async function RL(){let J=MT();if(J.length===0)return;let z=x1(VL),Z=new Set([AL()]),Y=OT(z);if(Y)Z.add(Y);for(let X of J)for(let G of Z)await X.removeWorktreeSyncHook(G);if(z!=="off")QJ(VL,"off")}async function RT(J){await RL(),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 VT=500,KT="worktree-created",VL="externalWorktreeSync";var A8=C(()=>{kJ();sB();kq();S1();s1()});function NL(J){var z;if(J>=55296&&J<=57343||J>1114111)return 65533;return(z=gT.get(J))!==null&&z!==void 0?z:J}var R8,gT,gL;var CL=C(()=>{gT=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]]),gL=(R8=String.fromCodePoint)!==null&&R8!==void 0?R8:(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 bL(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 kL;var IL=C(()=>{kL=bL("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 SL=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 g8(J){return J>=$1.ZERO&&J<=$1.NINE}function NT(J){return J>=$1.UPPER_A&&J<=$1.UPPER_F||J>=$1.LOWER_A&&J<=$1.LOWER_F}function CT(J){return J>=$1.UPPER_A&&J<=$1.UPPER_Z||J>=$1.LOWER_A&&J<=$1.LOWER_Z||g8(J)}function bT(J){return J===$1.EQUALS||CT(J)}class N8{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=FZ.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)|yL)===$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(g8(Z)||NT(Z)){let Y=Z<=$1.NINE?Z-$1.ZERO:(Z|yL)-$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(g8(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===FZ.Strict)return 0;if(this.emitCodePoint(NL(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=IT(Z,Y,this.treeIndex+Math.max(1,X),G),this.treeIndex<0)return this.result===0||this.decodeMode===FZ.Attribute&&(X===0||bT(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!==FZ.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!==FZ.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 kT(J){let z="",Z=new N8(J,(Y)=>z+=gL(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 IT(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 hY(J,z=FZ.Legacy){return ST(J,z)}var $1,yL=32,WJ,FZ,ST;var TL=C(()=>{CL();IL();SL();(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"})(FZ||(FZ={}));ST=kT(kL)});var xL,uL;var wL=C(()=>{TL();(function(J){J[J.XML=0]="XML",J[J.HTML=1]="HTML"})(xL||(xL={}));(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"})(uL||(uL={}))});import{CliRenderer as TT,createCliRenderer as xT,engine as uT}from"@opentui/core";import{createTestRenderer as O_}from"@opentui/core/testing";import{ASCIIFontRenderable as ET,BoxRenderable as wT,CodeRenderable as PT,DiffRenderable as hT,InputRenderable as vT,LineNumberRenderable as mT,MarkdownRenderable as cT,ScrollBoxRenderable as dT,SelectRenderable as nT,TabSelectRenderable as iT,TextareaRenderable as lT,TextAttributes as C8,TextNodeRenderable as $T,TextRenderable as aT}from"@opentui/core";import{engine as g_,Timeline as N_}from"@opentui/core";import{BaseRenderable as nL,createTextAttributes as pT,InputRenderable as b8,InputRenderableEvents as LQ,isTextNodeRenderable as S8,parseColor as PL,Renderable as rT,RootTextNodeRenderable as oT,ScrollBoxRenderable as sT,SelectRenderable as hL,SelectRenderableEvents as k8,TabSelectRenderable as vL,TabSelectRenderableEvents as I8,TextNodeRenderable as tT,TextRenderable as iL}from"@opentui/core";import{BaseRenderable as qx,isTextNodeRenderable as Hx,TextNodeRenderable as jx,TextRenderable as Bx,Yoga as cL}from"@opentui/core";import{BoxRenderable as E_,RootRenderable as w_}from"@opentui/core";import{TimeToFirstDrawRenderable as Ux}from"@opentui/core";import{createSlotRegistry as v_}from"@opentui/core";function Jx({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);hz((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 hz(()=>{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 hz(()=>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,O0=1,b;while(++_<c&&_<d){if((b=G0.get(N[_]))==null||b!==f0+O0)break;O0++}if(O0>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)hz(()=>M.children=U(I,N.children,M.children));return hz(()=>N.ref&&N.ref(I)),hz(()=>{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 VY((y)=>{M=y,f(N,I())}),M},insert:f,spread(I,N,M){if(typeof N==="function")hz((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:mq,effect:hz,memo:eT,createComponent:AU,use(I,N,M){return YJ(()=>I(N,M))}}}function zx(J){let z=Jx(J);return z.mergeProps=mq,z}function E8(J){if(!Uj.has(J))Uj.set(J,0);let z=Uj.get(J)+1;return Uj.set(J,z),`${J}-${z}`}function Zx(J,z,Z){if(VJ("Inserting node:",jJ(z),"into parent:",jJ(J),"with anchor:",jJ(Z),z instanceof aX),z instanceof FQ)z.parent=J,z=z.getSlotChild(J);if(Z&&Z instanceof FQ)Z=Z.getSlotChild(J);if(S8(z)){if(!(J instanceof iL)&&!S8(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 nL))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=y8(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 Yx(J,z){if(VJ("Removing node:",jJ(z),"from parent:",jJ(J)),z instanceof FQ)z.parent=null,z=z.getSlotChild(J);J.remove(z.id),process.nextTick(()=>{if(z instanceof nL&&!z.parent){z.destroyRecursively();return}})}function Xx(J){VJ("Creating text node:",J);let z=E8("text-node");if(typeof J==="number")J=J.toString();return aX.fromString(hY(J),{id:z})}function Gx(){let J=E8("slot-node");return VJ("Creating slot node",J),new FQ(J)}function mL(J){VJ("Getting parent of node:",jJ(J));let z=J.parent??void 0;if(z instanceof oT)z=z.textParent??void 0;let Z=z?.parent?.parent?.parent;if(Z instanceof sT&&Z.content===z)z=Z;return z}function Wx(J){Object.assign(oL,J)}function Vx(){return oL}var u8,GJ=()=>{let J=lJ(u8);if(!J)throw Error("No renderer found");return J},_T=(J)=>{let z=GJ();a1(()=>{z.on("resize",J)}),C1(()=>{z.off("resize",J)})},pz=()=>{let J=GJ(),[z,Z]=s({width:J.width,height:J.height});return _T((X,G)=>{Z({width:X,height:G})}),z},dL=(J)=>{let Z=GJ().keyInput;a1(()=>{Z.on("paste",J)}),C1(()=>{Z.off("paste",J)})},eT=(J)=>K0(()=>J()),Uj,VJ=(...J)=>{if(process.env.DEBUG)console.log("[Reconciler]",...J)},aX,jJ=(J)=>{if(!J)return;return J.id},y8=(J)=>{let z;if(J instanceof iL)z=J.getTextChildren();else z=J.getChildren();return z},Qx,u,C0,k,W,T0,D,K,T_,Q,lL,Hz,w8,$L,aL,FQ,MQ,Kj,T8,x8,_L,pL,rL,fx,oL,Kx=(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=Qx(()=>k(u8.Provider,{get value(){return J},get children(){return k(z,{})}}),J.root)}finally{G=!1,J.destroy=H}if(Y)j();if(q)H()},sL=async(J,z={})=>{let Z=z instanceof TT?z:await xT({...z,onDestroy:()=>{z.onDestroy?.()}});uT.attach(Z),Kx(Z,J)};var P=C(()=>{D1();wL();D1();D1();D1();u8=vz();Uj=new Map;aX=class aX extends tT{static fromString(J,z={}){let Z=new aX(z);return Z.add(J),Z}};({render:Qx,effect:u,memo:C0,createComponent:k,createElement:W,createTextNode:T0,insertNode:D,insert:K,spread:T_,setProp:Q,mergeProps:lL,use:Hz}=zx({createElement(J){VJ("Creating element:",J);let z=E8(J),Z=lJ(u8);if(!Z)throw Error("No renderer found");let Y=Vx();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:Xx,createSlotNode:Gx,replaceText(J,z){if(VJ("Replacing text:",z,"in node:",jJ(J)),!(J instanceof aX))return;J.replace(hY(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(S8(J)){if(z==="href"){J.link={url:Z};return}if(z==="style"){J.attributes|=pT(Z),J.fg=Z.fg?PL(Z.fg):J.fg,J.bg=Z.bg?PL(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 rT))return;if(Z)J.focus();else J.blur();break;case"onChange":let X=void 0;if(J instanceof hL)X=k8.SELECTION_CHANGED;else if(J instanceof vL)X=I8.SELECTION_CHANGED;else if(J instanceof b8)X=LQ.CHANGE;if(!X)break;if(Z)J.on(X,Z);if(Y)J.off(X,Y);break;case"onInput":if(J instanceof b8){if(Z)J.on(LQ.INPUT,Z);if(Y)J.off(LQ.INPUT,Y)}break;case"onSubmit":if(J instanceof b8){if(Z)J.on(LQ.ENTER,Z);if(Y)J.off(LQ.ENTER,Y)}else J[z]=Z;break;case"onSelect":if(J instanceof hL){if(Z)J.on(k8.ITEM_SELECTED,Z);if(Y)J.off(k8.ITEM_SELECTED,Y)}else if(J instanceof vL){if(Z)J.on(I8.ITEM_SELECTED,Z);if(Y)J.off(I8.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]=hY(G);break}default:J[z]=Z}},isTextNode(J){return J instanceof aX},insertNode:Zx,removeNode:Yx,getParentNode:mL,getFirstChild(J){VJ("Getting first child of node:",jJ(J));let z=y8(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=mL(J);if(!z){VJ("No parent found for node:",jJ(J));return}let Z=y8(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}}));w8=class w8 extends qx{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}};$L=class $L extends jx{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()}};aL=class aL extends w8{yogaNode;slotParent;destroyed=!1;constructor(J,z){super(J);this._visible=!1,this.slotParent=z,this.yogaNode=cL.default.Node.create(),this.yogaNode.setDisplay(cL.Display.None)}getLayoutNode(){return this.yogaNode}updateFromLayout(){}updateLayout(){}onRemove(){}destroy(){if(this.destroyed)return;this.destroyed=!0,super.destroy(),this.slotParent?.destroy()}};FQ=class FQ extends w8{layoutNode;textNode;destroyed=!1;constructor(J){super(J);this._visible=!1}getSlotChild(J){if(Hx(J)||J instanceof Bx){if(!this.textNode)this.textNode=new $L(`slot-text-${this.id}`,this);return this.textNode}if(!this.layoutNode)this.layoutNode=new aL(`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()}};MQ=class MQ extends $T{_ctx;constructor(J,z){super(z);this._ctx=J}};Kj=class Kj extends MQ{constructor(J,z){super(null,J);if(z==="b"||z==="strong")this.attributes=(this.attributes||0)|C8.BOLD;else if(z==="i"||z==="em")this.attributes=(this.attributes||0)|C8.ITALIC;else if(z==="u")this.attributes=(this.attributes||0)|C8.UNDERLINE}};T8=class T8 extends Kj{constructor(J){super(J,"b")}};x8=class x8 extends Kj{constructor(J){super(J,"i")}};_L=class _L extends Kj{constructor(J){super(J,"u")}};pL=class pL extends MQ{constructor(J,z){super(null,z);this.add()}add(){return super.add(`
|
|
262
|
+
`)}};rL=class rL extends MQ{constructor(J,z){let Z={...z,link:{url:z.href}};super(null,Z)}};fx={box:wT,text:aT,input:vT,select:nT,textarea:lT,ascii_font:ET,tab_select:iT,scrollbox:dT,code:PT,diff:hT,line_number:mT,markdown:cT,span:MQ,strong:T8,b:T8,em:x8,i:x8,u:_L,br:pL,a:rL},oL={...fx};Wx({time_to_first_draw:Ux})});function MZ(J){if(J===void 0)return"undefined";if(J===null)return"null";let z=Array.isArray(J)?"array":typeof J,Z;try{Z=typeof J==="string"?J:JSON.stringify(J)}catch{Z=String(J)}if(Z.length>120)Z=`${Z.slice(0,120)}\u2026`;return`${z}:${Z}`}function Dx(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 Lx(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 Fx(J,z){if(J.size!==z.size)return!1;for(let[Z,Y]of J){let X=z.get(Z);if(!X||!_z(Y,X))return!1}return!0}function Mx(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 Ox(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??mX,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")XZ("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(),XZ("orch",`reconnected and re-subscribed after ${z} attempt(s) \u2014 task list re-synced`),this.reconnecting=!1;return}catch(Z){if(z===1||z%10===0)qJ("orch-reconnect",Z);J=Math.min(J*2,3000)}}this.reconnecting=!1}async init(){let J=await this.client.request("hello",{protocolVersion:eJ,minProtocolVersion:IZ}),z=typeof J.protocolVersion==="number"?J.protocolVersion:eJ,Z=typeof J.minProtocolVersion==="number"?J.minProtocolVersion:z;if(!Jq({localVersion:eJ,localMin:IZ,remoteVersion:z,remoteMin:Z}))throw Error(`kobe daemon is protocol v${z} (min v${Z}); this client is v${eJ} (min v${IZ}). 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(OQ));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"),XZ("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()=>vV(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 VY((Z)=>{return n0(()=>{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 OQ(Y.task)}async ensureMainTask(J){let z=await this.client.request("task.ensureMain",{repo:J});return OQ(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 OQ(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(OQ)),this.pruneEngineState(Z),this.pruneTaskJobs(Z);else qJ("orch",`dropped task.snapshot event: tasks is not an array (got ${MZ(Z)})`);return}if(J==="active-task"){let Z=z?.taskId;this.setActiveTaskSig(typeof Z==="string"?Z:null);return}if(J==="update"){let Z=z?.info;this.setUpdateSig(Z??null);return}if(J==="engine-state"){let Z=z;if(typeof Z?.taskId!=="string"||typeof Z.state!=="string"){qJ("orch",`dropped engine-state event: taskId/state must be strings (taskId=${MZ(Z?.taskId)}, state=${MZ(Z?.state)})`);return}let Y=new Map(this.engineStateAcc());if(Z.state==="idle")Y.delete(Z.taskId);else Y.set(Z.taskId,{state:Z.state,detail:Z.detail,at:typeof Z.at==="number"?Z.at:0});this.setEngineStateSig(Y);return}if(J==="task.jobs"){let Z=z;if(typeof Z?.taskId!=="string"||Z.kind!=="ensureWorktree"){qJ("orch",`dropped task.jobs event: expected string taskId + kind "ensureWorktree" (taskId=${MZ(Z?.taskId)}, kind=${MZ(Z?.kind)})`);return}let Y=this.taskJobsAcc();if(Z.phase==="running"){let X=new Map(Y);X.set(Z.taskId,{kind:Z.kind}),this.setTaskJobsSig(X);return}if((Z.phase==="done"||Z.phase==="error")&&Y.has(Z.taskId)){let X=new Map(Y);X.delete(Z.taskId),this.setTaskJobsSig(X)}return}if(J==="worktree.changes"){let Z=Dx(z);if(!Z){qJ("orch",`dropped worktree.changes event: malformed changes payload (${MZ(z)})`);return}let Y=this.worktreeChangesAcc();if(Y&&Fx(Y,Z))return;this.setWorktreeChangesSig(Z);return}if(J==="transcript.activity"){let Z=Mx(z);if(!Z){qJ("orch",`dropped transcript.activity event: malformed activity payload (${MZ(z)})`);return}let Y=this.transcriptActivityAcc();if(Y&&Ox(Y,Z))return;this.setTranscriptActivitySig(Z);return}if(J==="ui-prefs"){let Z=Lx(z);if(!Z){let Y=z?.theme;qJ("orch",`dropped ui-prefs event: theme must be a string (got ${MZ(Y)})`);return}this.setUiPrefsSig(Z);return}if(J==="keybindings"){let Z=z;if(typeof Z?.rev!=="number"){qJ("orch",`dropped keybindings event: rev must be a number (got ${MZ(Z?.rev)})`);return}this.setKeybindingsRevSig(Z.rev);return}}pruneEngineState(J){let z=this.engineStateAcc();if(z.size===0)return;let Z=new Set(J.map((X)=>X.id)),Y=null;for(let X of z.keys()){if(Z.has(X))continue;if(!Y)Y=new Map(z);Y.delete(X)}if(Y)this.setEngineStateSig(Y)}pruneTaskJobs(J){let z=this.taskJobsAcc();if(z.size===0)return;let Z=new Set(J.map((X)=>X.id)),Y=null;for(let X of z.keys()){if(Z.has(X))continue;if(!Y)Y=new Map(z);Y.delete(X)}if(Y)this.setTaskJobsSig(Y)}}function OQ(J){return{id:gG(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 tZ=C(()=>{QY();kJ();XY();D1();PX();Yz();bJ()});function JF(J){let z=J[Mz];if(!z){if(Object.defineProperty(J,Mz,{value:z=new Proxy(J,gx)}),!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 Dj(J){let z;return J!=null&&typeof J==="object"&&(J[Mz]||!(z=Object.getPrototypeOf(J))||z===Object.prototype||Array.isArray(J))}function RQ(J,z=new Set){let Z,Y,X,G;if(Z=J!=null&&J[P8])return Z;if(!Dj(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=RQ(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=RQ(X,z))!==X)J[G]=Y}}return J}function Lj(J,z){let Z=J[z];if(!Z)Object.defineProperty(J,z,{value:Z=Object.create(null)});return Z}function gQ(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 Ax(J,z){let Z=Reflect.getOwnPropertyDescriptor(J,z);if(!Z||Z.get||!Z.configurable||z===Mz||z===_X)return Z;return delete Z.value,delete Z.writable,Z.get=()=>J[Mz][z],Z}function zF(J){vq()&&gQ(Lj(J,_X),eL)()}function Rx(J){return zF(J),Reflect.ownKeys(J)}function Fj(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(tL.onStoreNodeUpdate&&tL.onStoreNodeUpdate(J,z,Z,X),Z===void 0){if(delete J[z],J[OZ]&&J[OZ][z]&&X!==void 0)J[OZ][z].$()}else if(J[z]=Z,J[OZ]&&J[OZ][z]&&X===void 0)J[OZ][z].$();let q=Lj(J,_X),H;if(H=gQ(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=gQ(q,"length",G))&&H.$(J.length)}(H=q[eL])&&H.$()}function ZF(J,z){let Z=Object.keys(z);for(let Y=0;Y<Z.length;Y+=1){let X=Z[Y];if(YF(X))continue;Fj(J,X,z[X])}}function YF(J){return J==="__proto__"||J==="constructor"||J==="prototype"}function Nx(J,z){if(typeof z==="function")z=z(J);if(z=RQ(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)Fj(J,Z,X)}Fj(J,"length",Y)}else ZF(J,z)}function AQ(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&&YF(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++)AQ(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))AQ(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)AQ(J,[f].concat(z),Z);return}else if(z.length>1){AQ(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=RQ(G),Y===void 0||Dj(X)&&Dj(G)&&!Array.isArray(G))ZF(X,G);else Fj(J,Y,G)}function rz(...[J,z]){let Z=RQ(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=JF(Z);gU.registerGraph({value:Z,name:z&&z.name});function G(...q){hq(()=>{Y&&q.length===1?Nx(Z,q[0]):AQ(Z,q)})}return[X,G]}var P8,_X,OZ,eL,tL,gx,r_;var pX=C(()=>{D1();P8=Symbol("store-raw"),_X=Symbol("store-node"),OZ=Symbol("store-has"),eL=Symbol("store-self"),tL={onStoreNodeUpdate:null};gx={get(J,z,Z){if(z===P8)return J;if(z===Mz)return Z;if(z===wq)return zF(J),Z;let Y=Lj(J,_X),X=Y[z],G=X?X():J[z];if(z===_X||z===OZ||z==="__proto__")return G;if(!X){let q=Object.getOwnPropertyDescriptor(J,z);if(vq()&&(typeof G!=="function"||J.hasOwnProperty(z))&&!(q&&q.get))G=gQ(Y,z,G)()}return Dj(G)?JF(G):G},has(J,z){if(z===P8||z===Mz||z===wq||z===_X||z===OZ||z==="__proto__")return!0;return vq()&&gQ(Lj(J,OZ),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:Rx,getOwnPropertyDescriptor:Ax};r_=Symbol("store-root")});function Mj(J){let z=vz();return{provider:(Z)=>{let Y=J.init(Z);return k(Y0,{get when(){return Y.ready===void 0||Y.ready===!0},get children(){return k(z.Provider,{value:Y,get children(){return Z.children}})}})},use(){let Z=lJ(z);if(!Z)throw Error(`${J.name} context must be used within a context provider`);return Z}}}var h8=C(()=>{P();P();D1()});import{RGBA as vY}from"@opentui/core";function bx(){return Object.keys(DJ.themes)}function NQ(J){return Boolean(DJ.themes[J])}function m8(J,z){if(!J)return!1;if(!z||typeof z!=="object"||!z.theme)return!1;return mY("themes",{...DJ.themes,[J]:z}),!0}function v8(J,z="dark"){let Z=J.defs??{};function Y(j,B=[]){if(typeof j==="string"){if(j==="transparent"||j==="none")return vY.fromInts(0,0,0,0);if(j.startsWith("#"))return vY.fromHex(j);if(B.includes(j))return vY.fromInts(0,0,0);let V=Z[j]??J.theme[j];if(V===void 0)return vY.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??vY.fromHex("#ffffff"),q=X.background??vY.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 Cx,cY,DJ,mY,w0,XF;var c1=C(()=>{P();D1();pX();h8();ZH();YH();XH();GH();QH();qH();HH();Cx={claude:DX,conductor:LX,nord:MX,opencode:OX,dracula:FX,tokyonight:RX,"osaka-jade":AX},cY=["primary","success","info"],[DJ,mY]=rz({themes:{...Cx},active:"claude",mode:"dark",transparentBackground:!1,focusAccent:"primary"});({use:w0,provider:XF}=Mj({name:"Theme",init:(J)=>{if(J.mode)mY("mode",J.mode);if(J.theme&&NQ(J.theme))mY("active",J.theme);let z=GJ(),Z=K0(()=>{let X=DJ.themes[DJ.active];if(X)return v8(X,DJ.mode);let G=DJ.themes.claude??DJ.themes.opencode??Object.values(DJ.themes)[0];if(!G)return v8({theme:{background:"#000000",text:"#ffffff"}},DJ.mode);return v8(G,DJ.mode)}),Y=K0(()=>{let X=Z(),G=X[DJ.focusAccent]??X.primary,q={...X,focusAccent:G};if(!DJ.transparentBackground)return q;let H=vY.fromInts(0,0,0,0);return{...q,background:H,backgroundPanel:H}});return n0(()=>{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(!NQ(X))return!1;return mY("active",X),!0},setMode(X){mY("mode",X)},setTransparentBackground(X){mY("transparentBackground",X)},setFocusAccent(X){mY("focusAccent",X)},all(){return bx()},has(X){return NQ(X)}}}}))});var GF,QF;var qF=C(()=>{GF={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"}},QF={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 HF,jF;var BF=C(()=>{HF={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"}},jF={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 fF,WF;var VF=C(()=>{fF={title:"kobe \u2014 keybindings",esc:"esc"},WF={title:"kobe \u2014 \u5FEB\u6377\u952E",esc:"esc"}});var UF,KF;var DF=C(()=>{UF={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"},KF={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 LF,FF;var MF=C(()=>{LF={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)"}},FF={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 OF,AF;var RF=C(()=>{OF={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"}},AF={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 gF,NF;var CF=C(()=>{gF={badge:{newActivity:"\u25CF new"},preview:{diffVsHead:"diff vs HEAD",file:"file",closeHint:"\xB7 q to close",loading:"loading\u2026"}},NF={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 bF,kF;var IF=C(()=>{bF={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"},kF={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 SF,yF;var TF=C(()=>{SF={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)"}},yF={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 xF,uF;var EF=C(()=>{xF={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}"}},uF={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 wF,PF;var hF=C(()=>{wF={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`"}},PF={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 CQ(J){return typeof J==="string"&&rX.some((z)=>z.id===J)}var kx,Ix,rX,oX,sX="en";var tX=C(()=>{qF();BF();VF();DF();MF();RF();CF();IF();TF();EF();hF();kx={settings:SF,tasks:xF,files:HF,newTask:OF,ops:gF,update:wF,quickTask:bF,help:fF,history:UF,common:GF,keys:LF},Ix={settings:yF,tasks:uF,files:jF,newTask:AF,ops:NF,update:PF,quickTask:kF,help:WF,history:KF,common:QF,keys:FF},rX=[{id:"en",label:"English"},{id:"zh",label:"\u4E2D\u6587"}],oX={en:kx,zh:Ix}});function bQ(J){if(oX[J])Sx("lang",J)}function d8(){return c8.lang}function vF(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 yx(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=c8.lang,Y=vF(oX[Z],J)??vF(oX.en,J)??J;return yx(Y,z)}function n8(J,z){let Z=c8.lang,Y=(X)=>{return X.keys[J]?.[z]};return Y(oX[Z])??Y(oX.en)??z}var c8,Sx;var BJ=C(()=>{pX();tX();tX();[c8,Sx]=rz({lang:sX})});import{randomBytes as dF}from"crypto";import{existsSync as i8,mkdirSync as Tx,writeFileSync as xx}from"fs";import{isAbsolute as ux,join as Ex}from"path";function hx(J){if(J.startsWith('"')&&J.endsWith('"')||J.startsWith("'")&&J.endsWith("'"))return J.slice(1,-1);return J}function vx(J){let Z=`__DOUBLE_BACKSLASH_${dF(8).toString("hex")}__`;return J.replace(/\\\\/g,Z).replace(/\\(.)/g,"$1").replaceAll(Z,"\\")}function nF(J,z=i8){let Z=vx(hx(J.trim()));if(!wx.test(Z))return null;if(!ux(Z))return null;return z(Z)?Z:null}function iF(J,z=i8){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=nF(X,z);if(!G)return null;Y.push(G)}return Y}function l8(J,z){return Px.test(J)?`pdf[${z}]`:`images[${z}]`}function lF(J,z){if(z.length===0)return J;let Z=z.map((Y,X)=>`${l8(Y,X)}: ${Y}`).join(`
|
|
264
264
|
`);return`${J}
|
|
265
265
|
|
|
266
|
-
${Z}`}async function
|
|
267
|
-
`).map((Z)=>Z.trim()).filter(Boolean).sort((Z,Y)=>{let X=(H)=>H==="main"?0:H==="master"?1:H==="develop"?2:3,G=X(Z),q=X(Y);if(G!==q)return G-q;return Z.localeCompare(Y)})}catch{return[]}}var xz="main";var Aj=()=>{};import*as tF from"fs";import*as Rj from"os";function LJ(J){if(J==="~")return Rj.homedir();if(J.startsWith("~/"))return Rj.homedir()+J.slice(1);return J}function o8(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 s8(J){if(!J)return[];try{let z=tF.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 t8(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 kQ(J,z,Z){let Y=z+Z;if(J.startsWith("~")){let X=Rj.homedir();if(Y===X)return"~";if(Y.startsWith(`${X}/`))return`~${Y.slice(X.length)}`}return Y}var gj=()=>{};import{spawn as cx}from"child_process";import*as dY from"fs";import*as IQ from"path";function eF(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 JM(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 e8(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=dY.statSync(X)}catch{return F("newTask.error.parentNotFound",{path:X})}if(!G.isDirectory())return F("newTask.error.parentNotDir",{path:X});let q=IQ.join(X,Z);if(dY.existsSync(q))return F("newTask.error.targetExists",{path:q});return null}function zM(J,z){return IQ.join(LJ(J.trim()),z.trim())}function ZM(J,z){let Z=z.trim();if(!Z)return z;let Y=LJ(J.trim());if(!Y)return z;try{if(!dY.statSync(Y).isDirectory())return z}catch{return z}if(!dY.existsSync(IQ.join(Y,Z)))return Z;for(let X=2;X<1000;X++){let G=`${Z}-${X}`;if(!dY.existsSync(IQ.join(Y,G)))return G}return Z}function YM(J,z,Z){return new Promise((Y)=>{let X="";try{let G=cx("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 XM=C(()=>{BJ();gj()});function JW(J){if(J==="existing")return"clone";if(J==="clone")return"adopt";return"existing"}function zW(J){if(J==="existing")return"adopt";if(J==="clone")return"existing";return"clone"}function GM(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 SQ(J){return!/\S/u.test(J)}function ZW(J,z="existing"){if(J==="confirm")return"tabs";if(J==="tabs")return"engine";if(J==="engine")return YW(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 YW(J){if(J==="clone")return"cloneUrl";if(J==="adopt")return"adoptFilter";return"repo"}function QM(J,z){let Z=z.trim();if(!Z)return J;return J.filter((Y)=>mQ(Z,Y.path))}function qM(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 HM(J,z){let Z=z.trim().toLowerCase();if(!Z)return J;return J.filter((Y)=>Y.toLowerCase().includes(Z))}function jM(J,z){let Z=z.trim().toLowerCase();if(!Z)return J;return J.filter((Y)=>Y.toLowerCase().includes(Z))}function yQ(J,z,Z=dx){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 oz(J,z){if(z<=0)return 0;return Math.max(0,Math.min(z-1,J))}function BM(J,z,Z){let Y=J.trim(),X=Y.toLowerCase(),G=Y?z.find((H)=>H.toLowerCase()===X):void 0;if(G)return G;let q=z[Z];if(q)return q;return Y||xz}var dx=8;var XW=C(()=>{z9();Aj()});import{TextAttributes as jz}from"@opentui/core";function fM(J){let z=_1(),{theme:Z}=w0(),[Y,X]=s("existing"),G=()=>{let a=J.availableVendors;return a&&a.length>0?a:o1},q=(()=>{let a=G(),R0=J.defaultVendor??"claude";return a.includes(R0)?R0:a[0]??"claude"})(),[H,j]=s(q),[B,V]=s("tabs"),[f,U]=s(J.defaultRepo),[L,O]=s(bQ(LJ(J.defaultRepo.trim()))??xz),[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(xz),[X0,G0]=s(!1),[f0,_]=s(""),O0=K0(()=>qM(J.defaultRepo,J.savedRepos)),b=K0(()=>GM(f(),O0())),p=K0(()=>o8(f())),w=K0(()=>s8(p().base)),R=K0(()=>t8(w(),p().filter)),e=K0(()=>HM(O0(),f())),x=K0(()=>b()==="browse"?R():e()),[$,Q0]=s(0),H0=K0(()=>yQ(x(),$())),[L0,M0]=s(!1),E0=K0(()=>sF(LJ(f().trim()))),b0=K0(()=>jM(E0(),L())),[e0,j1]=s(0),k0=K0(()=>yQ(b0(),e0())),h0=K0(()=>o8(I())),N0=K0(()=>s8(h0().base)),o0=K0(()=>t8(N0(),h0().filter)),[m,j0]=s(0),z0=K0(()=>yQ(o0(),m())),[x0,n]=s(!1),[W0,S0]=s(""),[l0,Z1]=s(0),[$0,X1]=s(new Set),[R1]=UY(()=>Y()==="adopt"?LJ(f().trim()):null,async(a)=>J.discoverAdoptable?await J.discoverAdoptable(a):[]),O1=K0(()=>QM(R1()??[],W0())),Z0=K0(()=>yQ(O1().map((a)=>a.path),l0())),q0=K0(()=>{let a=Z0();return O1().slice(a.start,a.start+a.items.length)});n0(()=>{O1(),Z1((a)=>oz(a,O1().length))}),n0((a)=>{let R0=LJ(f().trim());if(a!==void 0&&R0!==a)X1(new Set),Z1(0);return R0});function U0(a){X1((R0)=>{let J0=new Set(R0);if(J0.has(a))J0.delete(a);else J0.add(a);return J0})}function g0(){let a=O1()[l0()];if(a)U0(a.path)}n0(()=>{b0(),j1(0)}),n0(()=>{let a=LJ(f().trim());if(!a)return;if(A())return;let R0=bQ(a);if(R0)O(R0)}),n0(()=>{x(),Q0(0)}),n0(()=>{o0(),j0(0)}),n0(()=>{let a=E(),R0=I();if(c())return;let J0=eF(a);y(ZM(R0,J0))});let[V0,P0]=s(null);n0(()=>{f(),E(),I(),M(),W0(),P0(null)});function I0(){let a=LJ(f().trim());if(!a)return;let R0=oF(a);if(R0){P0(R0),V("repo");return}let J0=L().trim()||xz;J.onSubmit({repo:a,baseRef:J0,vendor:H()}),z.clear()}async function p0(){if(X0())return;let a=JM(E());if(a){P0(a),V("cloneUrl");return}let R0=e8(I(),M());if(R0){P0(R0);let g1=M().trim(),m1=!(!g1||g1.includes("/")||g1.includes("\\"))&&e8(I(),"__kobe_probe__")!=null;V(m1?"cloneParent":"cloneFolder");return}let J0=zM(I(),M());G0(!0),_(F("newTask.clone.progressInto",{target:J0}));let T=await YM(E().trim(),J0,(g1)=>{_(g1)});if(G0(!1),!T.ok){P0(F("newTask.error.cloneFailed",{error:T.error})),V("cloneUrl");return}let D0=i().trim()||xz,T1=LJ(I().trim());J.onSubmit({repo:T.path,baseRef:D0,vendor:H(),cloned:{parentDir:T1}}),z.clear()}function y0(){let a=O1();if(a.length===0){P0(F("newTask.error.noAdoptable"));return}let R0=$0(),J0=R0.size>0?a.filter((T)=>R0.has(T.path)):a.slice(l0(),l0()+1);if(J0.length===0)return;J.onSubmit({mode:"adopt",repo:LJ(f().trim()),vendor:H(),adopt:J0.map((T)=>({worktreePath:T.path,branch:T.branch}))}),z.clear()}function u0(){if(Y()==="clone"){p0();return}if(Y()==="adopt"){y0();return}I0()}function Q1(a){if(X0())return;if(a===Y())return;X(a),V(YW(a)),P0(null)}function W1(a){if(X0())return;let R0=a===1?JW(Y()):zW(Y());if(R0===Y())return;X(R0),P0(null),V("tabs")}function V1(a){j((R0)=>a===1?NZ(G(),R0):Z9(G(),R0))}function q1(){if(!f().trim()&&b()==="saved"){let R0=x()[0];if(R0){U(R0),V("baseRef");return}}if(b()==="browse"){let J0=R()[$()],T=p();if(J0){U(kQ(f(),T.base,J0)),Q0(0),M0(!0),V("baseRef");return}V("baseRef");return}let a=x()[$()];if(a){U(a),V("baseRef");return}V("baseRef")}function S(a){let J0=x()[a];if(!J0)return;if(b()==="browse"){let T=p();U(kQ(f(),T.base,J0)),Q0(a),M0(!0),V("baseRef");return}U(J0),Q0(a),V("baseRef")}function F0(){let R0=o0()[m()],J0=h0();if(R0){N(kQ(I(),J0.base,R0)),j0(0),n(!0),V("cloneFolder");return}V("cloneFolder")}function U1(a){let J0=o0()[a];if(!J0)return;let T=h0();N(kQ(I(),T.base,J0)),j0(a),n(!0),V("cloneFolder")}let L1=()=>{let a=O1();if(a.length===0)return;let R0=a.every((J0)=>$0().has(J0.path));X1(R0?new Set:new Set(a.map((J0)=>J0.path)))};M1(()=>({bindings:[{key:"tab",cmd:()=>V((a)=>ZW(a,Y()))},{key:"ctrl+]",cmd:()=>Q1(JW(Y()))},{key:"ctrl+[",cmd:()=>Q1(zW(Y()))},{key:"ctrl+e",cmd:()=>j((a)=>NZ(G(),a))},{key:"up",cmd:()=>{if(X0())return;if(Y()==="existing"&&B()==="repo"){let a=x();if(a.length===0)return;Q0(oz($()-1,a.length));return}if(Y()==="existing"&&B()==="baseRef"){let a=b0();if(a.length===0)return;j1(oz(e0()-1,a.length));return}if(Y()==="clone"&&B()==="cloneParent"){let a=o0();if(a.length===0)return;j0(oz(m()-1,a.length));return}if(Y()==="adopt"){let a=O1();if(a.length===0)return;Z1(oz(l0()-1,a.length))}}},{key:"down",cmd:()=>{if(X0())return;if(Y()==="existing"&&B()==="repo"){let a=x();if(a.length===0)return;Q0(oz($()+1,a.length));return}if(Y()==="existing"&&B()==="baseRef"){let a=b0();if(a.length===0)return;j1(oz(e0()+1,a.length));return}if(Y()==="clone"&&B()==="cloneParent"){let a=o0();if(a.length===0)return;j0(oz(m()+1,a.length));return}if(Y()==="adopt"){let a=O1();if(a.length===0)return;Z1(oz(l0()+1,a.length))}}},...B()==="tabs"||B()==="engine"?[{key:"left",cmd:()=>B()==="tabs"?W1(-1):V1(-1)},{key:"right",cmd:()=>B()==="tabs"?W1(1):V1(1)},{key:"return",cmd:()=>V((a)=>ZW(a,Y()))}]:[],...Y()==="adopt"?[{key:"ctrl+a",cmd:L1}]:[]]})),M1(()=>({enabled:B()==="confirm"&&!X0(),bindings:[{key:"return",cmd:()=>u0()}]}));let d0=(a)=>B()===a?Z.primary:Z.textMuted,t0=(a)=>B()===a?jz.BOLD|jz.UNDERLINE:void 0,v0=(a,R0)=>a?R0?jz.BOLD|jz.UNDERLINE:jz.BOLD:void 0;return(()=>{var a=W("box"),R0=W("box"),J0=W("text"),T=W("box"),D0=W("box"),T1=W("text"),g1=W("box"),i1=W("box"),m1=W("text"),fJ=W("box"),mJ=W("text"),B1=W("text");return D(a,R0),D(a,T),D(a,fJ),Q(a,"paddingLeft",2),Q(a,"paddingRight",2),Q(a,"gap",0),D(R0,J0),Q(R0,"flexDirection","row"),K(J0,()=>F("newTask.title")),D(T,D0),Q(T,"gap",1),Q(T,"paddingTop",1),Q(T,"paddingBottom",1),K(T,()=>{let l=()=>B()==="tabs",r=(o)=>o?Z.primary:Z.textMuted;return(()=>{var o=W("box"),v=W("text"),a0=W("text"),m0=W("text");return D(o,v),D(o,a0),D(o,m0),Q(o,"flexDirection","row"),Q(o,"gap",2),Q(v,"onMouseUp",()=>Q1("existing")),K(v,(()=>{var A0=C0(()=>Y()==="existing");return()=>A0()?`\u25B8 ${F("newTask.tabs.existing")}`:` ${F("newTask.tabs.existing")}`})()),Q(a0,"onMouseUp",()=>Q1("clone")),K(a0,(()=>{var A0=C0(()=>Y()==="clone");return()=>A0()?`\u25B8 ${F("newTask.tabs.clone")}`:` ${F("newTask.tabs.clone")}`})()),Q(m0,"onMouseUp",()=>Q1("adopt")),K(m0,(()=>{var A0=C0(()=>Y()==="adopt");return()=>A0()?`\u25B8 ${F("newTask.tabs.adopt")}`:` ${F("newTask.tabs.adopt")}`})()),u((A0)=>{var _0=r(Y()==="existing"),K1=v0(Y()==="existing",l()),b1=r(Y()==="clone"),MJ=v0(Y()==="clone",l()),Wz=r(Y()==="adopt"),gZ=v0(Y()==="adopt",l());return _0!==A0.e&&(A0.e=Q(v,"fg",_0,A0.e)),K1!==A0.t&&(A0.t=Q(v,"attributes",K1,A0.t)),b1!==A0.a&&(A0.a=Q(a0,"fg",b1,A0.a)),MJ!==A0.o&&(A0.o=Q(a0,"attributes",MJ,A0.o)),Wz!==A0.i&&(A0.i=Q(m0,"fg",Wz,A0.i)),gZ!==A0.n&&(A0.n=Q(m0,"attributes",gZ,A0.n)),A0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),o})()},D0),D(D0,T1),D(D0,g1),Q(D0,"gap",0),K(T1,()=>F("newTask.field.engine")),D(g1,i1),D(g1,m1),Q(g1,"flexDirection","row"),Q(g1,"gap",2),K(g1,k(Y1,{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,m0=r()?jz.BOLD:void 0;return a0!==v.e&&(v.e=Q(o,"fg",a0,v.e)),m0!==v.t&&(v.t=Q(o,"attributes",m0,v.t)),v},{e:void 0,t:void 0}),o})()}}),i1),Q(i1,"flexGrow",1),K(m1,()=>F("newTask.hint.engineCycle")),K(T,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)=>{M0(!1),U(CJ(v))}),Q(o,"onSubmit",()=>q1()),u((v)=>{var a0=d0("repo"),m0=t0("repo"),A0=f(),_0=J.defaultRepo,K1=B()==="repo";return a0!==v.e&&(v.e=Q(r,"fg",a0,v.e)),m0!==v.t&&(v.t=Q(r,"attributes",m0,v.t)),A0!==v.a&&(v.a=Q(o,"value",A0,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 C0(()=>B()==="repo"&&x().length>0)()&&!L0()},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(Y1,{get each(){return H0().items},children:(r,o)=>{let v=()=>H0().start+o(),a0=()=>v()===$(),m0=()=>b()==="saved"&&r===J.defaultRepo,A0=()=>b()==="saved"&&f().trim()===r,_0=()=>b()==="browse"?"/":"",K1=()=>m0()?` ${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 Wz=a0()?Z.primary:A0()?Z.accent:Z.textMuted,gZ=a0()?jz.BOLD:void 0;return Wz!==MJ.e&&(MJ.e=Q(b1,"fg",Wz,MJ.e)),gZ!==MJ.t&&(MJ.t=Q(b1,"attributes",gZ,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",xz),Q(o,"onInput",(v)=>{g(!0),O(CJ(v))}),Q(o,"onSubmit",()=>{O(BM(L(),b0(),e0())),g(!0),I0()}),u((v)=>{var a0=d0("baseRef"),m0=t0("baseRef"),A0=L(),_0=B()==="baseRef";return a0!==v.e&&(v.e=Q(r,"fg",a0,v.e)),m0!==v.t&&(v.t=Q(r,"attributes",m0,v.t)),A0!==v.a&&(v.a=Q(o,"value",A0,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 C0(()=>B()==="baseRef"&&b0().length===0)()&&V0()==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=C0(()=>E0().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 C0(()=>B()==="baseRef")()&&b0().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 k0().start>0},get children(){var r=W("text");return Q(r,"wrapMode","none"),K(r,()=>F("newTask.picker.moreAbove",{count:k0().start})),u((o)=>Q(r,"fg",Z.textMuted,o)),r}}),null),K(l,k(Y1,{get each(){return k0().items},children:(r,o)=>{let v=()=>k0().start+o(),a0=()=>v()===e0(),m0=()=>L().trim()===r;return(()=>{var A0=W("text");return Q(A0,"wrapMode","none"),Q(A0,"onMouseUp",()=>{O(r),g(!0),j1(v()),V("confirm")}),K(A0,()=>a0()?"\u25B8 ":" ",null),K(A0,r,null),u((_0)=>{var K1=a0()?Z.primary:m0()?Z.accent:Z.textMuted,b1=a0()?jz.BOLD:void 0;return K1!==_0.e&&(_0.e=Q(A0,"fg",K1,_0.e)),b1!==_0.t&&(_0.t=Q(A0,"attributes",b1,_0.t)),_0},{e:void 0,t:void 0}),A0})()}}),null),K(l,k(Y0,{get when(){return k0().start+k0().items.length<k0().total},get children(){var r=W("text");return Q(r,"wrapMode","none"),K(r,()=>F("newTask.picker.moreBelow",{count:k0().total-k0().start-k0().items.length})),u((o)=>Q(r,"fg",Z.textMuted,o)),r}}),null),l}})]}}),null),K(T,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=d0("cloneUrl"),m0=t0("cloneUrl"),A0=E(),_0=B()==="cloneUrl";return a0!==v.e&&(v.e=Q(r,"fg",a0,v.e)),m0!==v.t&&(v.t=Q(r,"attributes",m0,v.t)),A0!==v.a&&(v.a=Q(o,"value",A0,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=d0("cloneParent"),m0=t0("cloneParent"),A0=I(),_0=B()==="cloneParent";return a0!==v.e&&(v.e=Q(r,"fg",a0,v.e)),m0!==v.t&&(v.t=Q(r,"attributes",m0,v.t)),A0!==v.a&&(v.a=Q(o,"value",A0,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 C0(()=>B()==="cloneParent"&&o0().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(Y1,{get each(){return z0().items},children:(r,o)=>{let v=()=>z0().start+o(),a0=()=>v()===m();return(()=>{var m0=W("text"),A0=T0("/");return D(m0,A0),Q(m0,"wrapMode","none"),Q(m0,"onMouseUp",()=>U1(v())),K(m0,()=>a0()?"\u25B8 ":" ",A0),K(m0,r,A0),u((_0)=>{var K1=a0()?Z.primary:Z.textMuted,b1=a0()?jz.BOLD:void 0;return K1!==_0.e&&(_0.e=Q(m0,"fg",K1,_0.e)),b1!==_0.t&&(_0.t=Q(m0,"attributes",b1,_0.t)),_0},{e:void 0,t:void 0}),m0})()}}),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=d0("cloneFolder"),m0=t0("cloneFolder"),A0=M(),_0=F("newTask.placeholder.folderName"),K1=B()==="cloneFolder";return a0!==v.e&&(v.e=Q(r,"fg",a0,v.e)),m0!==v.t&&(v.t=Q(r,"attributes",m0,v.t)),A0!==v.a&&(v.a=Q(o,"value",A0,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",xz),Q(o,"onInput",(v)=>t(CJ(v))),Q(o,"onSubmit",()=>void p0()),u((v)=>{var a0=d0("cloneBaseRef"),m0=t0("cloneBaseRef"),A0=i(),_0=B()==="cloneBaseRef";return a0!==v.e&&(v.e=Q(r,"fg",a0,v.e)),m0!==v.t&&(v.t=Q(r,"attributes",m0,v.t)),A0!==v.a&&(v.a=Q(o,"value",A0,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(T,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)=>S0(CJ(v))),Q(o,"onSubmit",()=>g0()),u((v)=>{var a0=d0("adoptFilter"),m0=t0("adoptFilter"),A0=W0(),_0=F("newTask.placeholder.adoptFilter"),K1=B()==="adoptFilter";return a0!==v.e&&(v.e=Q(r,"fg",a0,v.e)),m0!==v.t&&(v.t=Q(r,"attributes",m0,v.t)),A0!==v.a&&(v.a=Q(o,"value",A0,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 C0(()=>!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=C0(()=>(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(Y1,{get each(){return q0()},children:(o,v)=>{let a0=()=>Z0().start+v(),m0=()=>a0()===l0(),A0=()=>$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",()=>{Z1(a0()),U0(o.path)}),K(K1,()=>m0()?"\u25B8 ":" ",null),K(K1,()=>A0()?"[x] ":"[ ] ",null),K(K1,()=>o.branch,null),K(K1,(()=>{var b1=C0(()=>!!_0());return()=>b1()?` (${_0()})`:""})(),null),u((b1)=>{var MJ=m0()?Z.primary:A0()?Z.accent:Z.textMuted,Wz=m0()?jz.BOLD:void 0;return MJ!==b1.e&&(b1.e=Q(K1,"fg",MJ,b1.e)),Wz!==b1.t&&(b1.t=Q(K1,"attributes",Wz,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=C0(()=>$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(T,k(Y0,{get when(){return V0()},get children(){var l=W("text"),r=T0("\u203B ");return D(l,r),Q(l,"wrapMode","word"),K(l,V0,null),u((o)=>Q(l,"fg",Z.error,o)),l}}),null),D(fJ,mJ),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(mJ,()=>F("newTask.hint.legend")),Q(B1,"onMouseUp",()=>u0()),K(B1,(()=>{var l=C0(()=>!!X0());return()=>l()?F("newTask.button.cloning"):C0(()=>B()==="confirm")()?F("newTask.button.createFocused"):F("newTask.button.create")})()),u((l)=>{var r=jz.BOLD,o=Z.text,v=d0("engine"),a0=t0("engine"),m0=Z.textMuted,A0=Z.textMuted,_0=B()==="confirm"?Z.primary:Z.text,K1=B()==="confirm"?jz.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)),m0!==l.i&&(l.i=Q(m1,"fg",m0,l.i)),A0!==l.n&&(l.n=Q(mJ,"fg",A0,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}),a})()}var WM=C(()=>{P();P();P();P();P();P();P();P();BJ();s1();D1();d1();Aj();IJ();gj();rJ();XM();XW()});function nx(J,z,Z,Y){return new Promise((X)=>{J.replace(()=>k(fM,{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 Nj;var eX=C(()=>{P();WM();XW();Nj={show:nx}});function VM(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 UM}from"@opentui/core";function ix(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([]);mL((h)=>{let I=dF(new TextDecoder().decode(h.bytes));if(!I)return;h.preventDefault(),U((N)=>[...N,...I.filter((M)=>!N.includes(M))])});function L(){iF().then((h)=>{if(h)U((I)=>I.includes(h)?I:[...I,h])})}function O(h){let I=Cj.indexOf(Y());X(Cj[(I+h+Cj.length)%Cj.length]??"prompt")}function A(h){let I=J.engines;if(I.length===0)return;if(h>0){j((M)=>NZ(I,M));return}let N=Math.max(0,I.indexOf(H()));j(I[(N-1+I.length)%I.length]??H())}function g(){if(SQ(G())){X("prompt");return}J.onSubmit({prompt:G().trim(),vendor:H(),baseRef:B().trim()||J.defaultBaseRef,attachments:f()}),z.clear()}M1(()=>({enabled:!0,bindings:VM(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"),O0=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(Y1,{get each(){return f()},children:(p,w)=>(()=>{var R=W("text");return Q(R,"onMouseUp",()=>U((e)=>e.filter((x)=>x!==p))),K(R,()=>i8(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(Y1,{get each(){return J.engines},children:(b)=>(()=>{var p=W("text");return Q(p,"onMouseUp",()=>{j(b),X("engine")}),K(p,()=>J.engineLabel(b)),u((w)=>{var R=H()===b?Z.primary:Z.textMuted,e=H()===b?UM.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(_,O0),Q(_,"paddingBottom",1),K(O0,()=>F("quickTask.legend")),u((b)=>{var p=UM.BOLD,w=Z.text,R=Z.textMuted,e=E("prompt"),x=G(),$=F("quickTask.promptPlaceholder"),Q0=Y()==="prompt",H0=E("engine"),L0=E("branch"),M0=B(),E0=J.defaultBaseRef,b0=Y()==="branch",e0=Z.textMuted;return p!==b.e&&(b.e=Q(N,"attributes",p,b.e)),w!==b.t&&(b.t=Q(N,"fg",w,b.t)),R!==b.a&&(b.a=Q(M,"fg",R,b.a)),e!==b.o&&(b.o=Q(c,"fg",e,b.o)),x!==b.i&&(b.i=Q(d,"value",x,b.i)),$!==b.n&&(b.n=Q(d,"placeholder",$,b.n)),Q0!==b.s&&(b.s=Q(d,"focused",Q0,b.s)),H0!==b.h&&(b.h=Q(t,"fg",H0,b.h)),L0!==b.r&&(b.r=Q(G0,"fg",L0,b.r)),M0!==b.d&&(b.d=Q(f0,"value",M0,b.d)),E0!==b.l&&(b.l=Q(f0,"placeholder",E0,b.l)),b0!==b.u&&(b.u=Q(f0,"focused",b0,b.u)),e0!==b.c&&(b.c=Q(O0,"fg",e0,b.c)),b},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0}),h})()}function lx(J,z){return new Promise((Z)=>{J.replace(()=>k(ix,nL(z,{onSubmit:(Y)=>Z(Y),onCancel:()=>Z(void 0)})),()=>Z(void 0)),J.setSize("medium")})}var Cj,KM;var DM=C(()=>{P();P();P();P();P();P();P();P();D1();s1();d1();BJ();l8();IJ();rJ();eX();Cj=["prompt","engine","branch"];KM={show:lx}});async function bj(J={}){let z=J.logTag??"orch-connect",Z=J.connect??qz,Y=null;try{let X=await Z();if(!X)return XZ(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 GW=C(()=>{QY();kJ();tZ()});function LM(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=(kj.indexOf(z())+f+kj.length)%kj.length;q(kj[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($x.Provider,{value:V,get children(){return J.children}})}var kj,$x;var FM=C(()=>{P();P();D1();kj=["sidebar","workspace","files","terminal"],$x=vz(null)});function MM(){for(let J of eZ){let z=ax.get(J.id);if(!z)continue;let Z=J;Z.keys=[...z.keys],Z.hint=z.hint?{...z.hint}:void 0}}function OM(){_x((J)=>J+1)}function qW(J){return px.get(J)}function rx(J){return qW(J)?.keys??[]}function JY(J){let z=[];for(let Z in J){let Y=J[Z];if(!Y)continue;let X=rx(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 eZ,ax,QW,_x,px;var JG=C(()=>{D1();eZ=[{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"}}],ax=new Map(eZ.map((J)=>[J.id,{keys:[...J.keys],hint:J.hint?{...J.hint}:void 0}]));[QW,_x]=s(0);px=new Map(eZ.map((J)=>[J.id,J]))});function Ij(){if(zY)return zY;let J=pq();if(!J.exists)return zY={path:J.path,exists:!1,applied:[],warnings:[]},zY;let z=[...J.warnings],Z=oq(J.doc,process.platform,{chordOptsFor:SB});z.push(...Z.warnings);let Y=Z.entries.filter((H)=>H.id.startsWith("tmux.")),X=Z.entries.filter((H)=>!H.id.startsWith("tmux.")),G=zK(eZ,X);z.push(...G.warnings);let q=[...G.applied];if(Y.length>0){let H=IB(Y);z.push(...H.warnings);for(let j of H.overridden){if(j===cz){q.push({id:j,keys:H.focus.map((f)=>f?.chord??"").filter((f)=>f!==""),defaultKeys:vZ});continue}let B=H.binds[j];q.push({id:j,keys:B?[B.chord]:[],defaultKeys:[gY[j]]});let V=eZ.find((f)=>f.id===j);if(V?.hint)V.hint.keys=B?`${VX(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 AM(){return zY??Ij()}function RM(){zY=null,JK(),GK(),MM();let J=Ij();return OM(),J}var zY=null;var HW=C(()=>{bB();eq();sq();JG()});var ox=250,zG,gM;var TQ=C(()=>{pX();wz();P8();({use:zG,provider:gM}=Fj({name:"KV",init:()=>{let[J,z]=rz(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 kZ(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")},ox)}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{IV({})}catch(H){console.error("[kobe] kv clear write failed:",H)}}};return q}}))});var Sj="../pulse-n3cq1btw.wav";var NM=()=>{};import{existsSync as tx,mkdirSync as ex}from"fs";import{tmpdir as Ju}from"os";import{basename as zu,isAbsolute as Zu,join as jW,resolve as Yu}from"path";function Gu(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 Qu(){if(yj!==void 0)return yj;let z=(process.env.PATH??"").split(":").filter(Boolean);return yj=Xu.find((Z)=>z.some((Y)=>tx(jW(Y,Z))))??null,yj}async function qu(){return kM??=(async()=>{ex(bM,{recursive:!0});let J=jW(bM,zu(CM)),z=Bun.file(J);if(await z.exists())return J;return await Bun.write(z,Bun.file(CM)),J})(),kM}function IM(J=0.4){let z=Qu();if(!z)return;qu().then((Z)=>{try{Bun.spawn(Gu(z,Z,J),{stdin:"ignore",stdout:"ignore",stderr:"ignore"}).unref?.()}catch{}}).catch(()=>{return})}var CM,bM,Xu,yj,kM;var SM=C(()=>{NM();CM=Zu(Sj)?Sj:Yu(import.meta.dir,Sj),bM=jW(Ju(),"kobe-sfx"),Xu=["ffplay","mpv","mpg123","mpg321","mplayer","afplay","play","omxplayer","aplay","cmdmp3","cvlc","powershell.exe"]});function yM(J,z){return`${J}:${z}`}function xM(J){let z=zG(),[Z,Y]=s([]),[X,G]=s(new Map),q=Oj(),H=0;function j(U){if(G((O)=>{let A=new Map(O),g=yM(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{}IM()}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),Hu)}}function B(U){Y((L)=>L.filter((O)=>O.id!==U))}function V(U,L){G((O)=>{let A=yM(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(TM.Provider,{value:f,get children(){return J.children}})}function Tj(){let J=lJ(TM);if(!J)throw Error("useNotifications must be used within a NotificationsProvider");return J}var Hu=4500,TM;var xj=C(()=>{P();D1();p8();SM();TQ();TM=vz()});function BW(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=Bu(z.focusAccent);if(Z&&Z!==J.focusAccent())J.setFocusAccent(Z)}}function Bu(J){if(J===null)return"primary";return ju.includes(J)?J:null}var ju;var uM=C(()=>{ju=["primary","success","info"]});function Wu(J,z=Date.now){let Z=Number.NEGATIVE_INFINITY,Y=!0;return async()=>{if(z()-Z<fu)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 fu=3000,uz;var ZG=C(()=>{P1();uz=Wu(()=>c0(["display-message","-p","#{session_attached}"]))});import{readFileSync as Vu}from"fs";function EM(J){try{let z=JSON.parse(Vu(tJ(),"utf8")),Z=typeof z.activeTheme==="string"&&gQ(z.activeTheme)?z.activeTheme:J,Y=z.transparentBackground===!0,X=typeof z.focusAccent==="string"&&cY.includes(z.focusAccent)?z.focusAccent:null,G=NQ(z[uj])?z[uj]:sX;return{theme:Z,transparent:Y,focusAccent:X,locale:G}}catch{return{theme:J,transparent:!1,focusAccent:null,locale:sX}}}var uj="locale";var fW=C(()=>{t1();d1();tX()});function Ku(J){if(J)Zq(J);aV(),Ij();for(let{name:z,theme:Z}of vG())v8(z,Z)}function Du(J){let z={backgroundColor:"transparent",externalOutputMode:"passthrough",exitOnCtrlC:!1,screenMode:"alternate-screen",useKittyKeyboard:{}};return J?{...z,onDestroy:J}:z}function Lu(J){let z=()=>J.children,Z=()=>J.notifications?k(xM,{get children(){return z()}}):z(),Y=()=>k(_F,{get children(){return Z()}}),X=()=>J.focus?k(LM,{initial:"sidebar",get children(){return Y()}}):Y(),G=()=>J.kv?k(gM,{get children(){return X()}}):X();return k(ZF,{mode:"dark",get theme(){return J.theme},get children(){return G()}})}function Fu(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 Au(){let J=GJ();return a1(()=>{if(!J)return;let z=J.targetFps,Z=setInterval(()=>{uz().then((Y)=>{let X=Y?z:Mu;if(J.targetFps!==X)J.targetFps=X})},Ou);C1(()=>clearInterval(Z))}),null}function Ru(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 vG())v8(H,j)},transparentBackground:()=>z.transparentBackground,setTransparentBackground:(H)=>z.setTransparentBackground(H),focusAccent:()=>z.focusAccent,setFocusAccent:(H)=>z.setFocusAccent(H)};BW(Z,{theme:J.boot.theme,transparentBackground:J.boot.transparent,focusAccent:J.boot.focusAccent}),CQ(J.boot.locale);let[Y,X]=s(null),G=!1;a1(()=>{(async()=>{let H=await bj({logTag:"ui-prefs",channels:["ui-prefs","keybindings"]});if(!H)return;if(G){H.dispose();return}X(H)})()}),n0(()=>{let H=Y()?.uiPrefsSignal()();if(!H)return;if(BW(Z,H),NQ(H.locale))CQ(H.locale)});let q=null;return n0(()=>{let H=Y()?.keybindingsRevSignal()();if(H==null)return;if(q===null||H===q){q=H;return}q=H,RM()}),C1(()=>{G=!0,Y()?.dispose()}),null}async function FJ(J){Ku(J.logContext);let z=EM(Uu),Z=await J.setup(z),Y=J.providers?.kv??!0,X=J.providers?.focus??!0,G=J.providers?.notifications??!1;await rL(()=>k(Lu,{get theme(){return z.theme},kv:Y,focus:X,notifications:G,get children(){return[k(Ru,{boot:z}),k(Au,{}),k(AU,{fallback:(j)=>k(Fu,{error:j}),get children(){return Z.root()}})]}}),Du(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 Uu="claude",Mu=2,Ou=3000;var AZ=C(()=>{P();P();P();P();P();P();P();QY();D1();GW();FM();HW();TQ();xj();d1();BH();BJ();rJ();uM();ZG();fW()});var WW={};H1(WW,{togglePreviewMode:()=>gu,previewModeEnabled:()=>PM});function PM(J){return dJ(wM(J),!1)}function gu(J){let z=!PM(J);return oQ(wM(J),z),z}var wM=(J)=>`preview.${J}`;var VW=C(()=>{wz()});import{homedir as Nu}from"os";async function UW(J,z,Z,Y,X={}){let G=y1(z.id);if(await F1(G))return!0;let{archivedHistoryPreviewEnabled:q}=await Promise.resolve().then(() => (_q(),pU));if(z.archived&&q()){let{ensureSession:L}=await Promise.resolve().then(() => (HJ(),PJ)),O=z.worktreePath??"",A=O&&PZ(O)?O:Z&&PZ(Z)?Z:Nu();if(!await L({name:G,cwd:A,command:EJ(Y),taskId:z.id,vendor:Y,repo:Z,archived:!0,archivedWorktree:O||A,title:z.title}))throw new RZ("session",`failed to start history session for ${z.id}`);return!1}let H=z.worktreePath;if(!H||!PZ(H)){if(!J)throw new RZ("no-daemon",`no daemon; cannot materialise worktree for ${z.id}`);try{H=await J.ensureWorktree(z.id)}catch(L){throw new RZ("worktree",`ensureWorktree failed for ${z.id}`,L)}await X.reload?.()}if(!H||!PZ(H))throw new RZ("worktree",`task ${z.id} has no usable worktree`);let{ensureSession:j}=await Promise.resolve().then(() => (HJ(),PJ)),{previewModeEnabled:B}=await Promise.resolve().then(() => (VW(),WW));if(B(z.id)&&q()){if(!await j({name:G,cwd:H,command:EJ(Y),taskId:z.id,vendor:Y,repo:Z,preview:!0,archivedWorktree:H,title:z.title}))throw new RZ("session",`failed to start preview session for ${z.id}`);return!1}let{resolveEngineLaunchInit:V}=await Promise.resolve().then(() => (EX(),aH)),f=Z?V(Z,H,{kind:X.includeInitPrompt?"repo-init":"none"}):void 0;if(!await j({name:G,cwd:H,command:EJ(Y),taskId:z.id,vendor:Y,repo:Z,launchInit:f}))throw new RZ("session",`failed to start tmux session for ${z.id}`);return!1}async function KW(J,z,Z,Y,X={}){let G=y1(z.id),q=await Promise.resolve().then(() => (HJ(),PJ));if(X.captureFrom){let B=await q.currentSessionName();if(B&&B!==G)await q.captureGlobalLayout(B)}if(await UW(J,z,Z,Y,{includeInitPrompt:X.includeInitPrompt,reload:X.reload})&&X.heal)try{let B=await IY(G,"@kobe_worktree")||z.worktreePath||"";if(B&&PZ(B)){let{resolveEngineLaunchInit:V}=await Promise.resolve().then(() => (EX(),aH)),f=Z?V(Z,B,{kind:X.includeInitPrompt?"repo-init":"none"}):void 0;await q.ensureSession({name:G,cwd:B,command:EJ(Y),taskId:z.id,vendor:Y,repo:Z,launchInit:f})}}catch(B){console.error("[kobe handover] heal failed (continuing to switch):",B)}let{syncSessionZen:j}=await Promise.resolve().then(() => (dZ(),aB));if(await j(G),X.isCurrent&&!X.isCurrent())return;await J?.setActiveTask(z.id).catch(()=>{}),await q.enterWindow(G)}async function Ej(J,z,Z,Y,X={}){await KW(J,z,Z,Y,{includeInitPrompt:X.includeInitPrompt})}var RZ;var wj=C(()=>{Xz();Az();P1();RZ=class RZ extends Error{phase;cause;constructor(J,z,Z){super(z);this.name="HandoverError",this.phase=J,this.cause=Z}}});var hM={};H1(hM,{startNewTaskHost:()=>Cu,NewTaskPage:()=>Pj});function Pj(J){let{theme:z}=w0(),Z=_1();a1(()=>{Y()});async function Y(){let X=SJ(),G=J.defaultRepo||X[0]||process.cwd(),q=cJ(x1("lastSelectedVendor"),nJ()),H=await GZ(),j=J.orchestrator,B=await Nj.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),JZ(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 Ej(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 Cu(J){await FJ({setup:async()=>{let z=null;try{let Z=await Sz(),Y=new NJ(Z);await Y.init(),z=Y}catch(Z){console.error("[kobe new-task] daemon unavailable; cannot create task:",Z)}return{root:()=>k(Pj,{get defaultRepo(){return J.defaultRepo},orchestrator:z}),onDestroy:()=>{z?.dispose()}}}})}var DW=C(()=>{P();P();P();P();kJ();D1();tZ();qY();S1();s1();eX();d1();AZ();wj();rJ()});function hj(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 vM(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 bu(J,z){let Z=z==="archived";return J.filter((Y)=>Y.archived===Z)}function LW(J,z,Z,Y="default",X){let G=bu(J,z),q=Z?.trim()??"",H=X?Bz(X):null,j=q?G.filter((A)=>vM(q,`${A.title} ${Ez(A.repo)}`)):G,B=[],V=[],f=[],U=new Set;for(let A of j){if(A.kind==="main"){let g=Bz(A.repo);if(U.has(g))continue;U.add(g),B.push(A);continue}if(H&&Bz(A.repo)!==H)continue;if(A.pinned===!0)V.push(A);else f.push(A)}if(B.sort((A,g)=>Ez(A.repo).localeCompare(Ez(g.repo))),Y==="recent")V.sort(mM),f.sort(mM);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 mM(J,z){let Z=cM(z)-cM(J);if(Z!==0)return Z;return String(z.id).localeCompare(String(J.id))}function cM(J){let z=Date.parse(J.updatedAt||J.createdAt);return Number.isFinite(z)?z:0}function Ez(J){let z=J.split("/").filter(Boolean);return z[z.length-1]??J}function Bz(J){return J.trim().replace(/[\\/]+$/,"")||J}function ku(J,z){let Z=Ez(J);if(!z.some((X)=>X!==J&&Ez(X)===Z))return Z;return J.replace(/[\\/]+$/,"").split(/[\\/]+/).slice(-2).join("/")}function dM(J,z){let Z=z==="archived",Y=new Map;for(let G of J){let q=Bz(G.repo),H=Y.get(q)??{repo:G.repo,count:0};if(G.kind==="main")H.repo=G.repo;else if(G.archived===Z)H.count+=1;Y.set(q,H)}let X=[...Y.values()].map((G)=>G.repo);return[...Y.values()].map((G)=>({repo:G.repo,label:ku(G.repo,X),count:G.count})).sort((G,q)=>G.label.localeCompare(q.label))}function nM(J,z){if(J.length===0)return-1;if(!z)return J[0]?.flatIndex??-1;let Z=Bz(z),Y=J.find((G)=>G.task.kind!=="main"&&Bz(G.task.repo)===Z);if(Y)return Y.flatIndex;return J.find((G)=>G.task.kind==="main"&&Bz(G.task.repo)===Z)?.flatIndex??J[0]?.flatIndex??-1}function FW(J){return J.map((z)=>z.task.id)}function iM(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 lM(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 Iu(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 $M(J,z){return hj(J,z,(Z)=>Z.task.id,(Z,Y)=>Z.flatIndex===Y.flatIndex&&Iu(Z.task,Y.task),{samePosition:!0})}var vj=()=>{};var aM={};H1(aM,{startQuickTaskHost:()=>xu});async function Su(J,z){let Z,Y;if(z){let f=await wJ(z,["@kobe_task","@kobe_worktree"]);Z=f["@kobe_task"]||void 0,Y=f["@kobe_worktree"]||void 0}let X=(Z?J?.getTask(Z)?.repo:void 0)??SJ()[0],G=X??Y??process.cwd();if(!X)return{ctx:null,fallbackRepo:G};let q=await GZ(),H=cJ(x1("lastSelectedVendor"),nJ()),j=q.length===0||q.includes(H)?H:q[0]??H,B=bQ(LJ(X))??xz,V=q.length>0?q:[j];return{ctx:{repo:X,vendor:j,baseRef:B,engines:V},fallbackRepo:G}}async function yu(J,z,Z,Y,X){let G=await UW(J,z,Z,Y),q=y1(z.id),{pane:H}=await wG(q,!G);if(H)await PG(H,X)}function Tu(J){let{theme:z}=w0(),Z=_1();a1(()=>{Y()});async function Y(){let X=J.ctx,G=await KM.show(Z,{repoLabel:Ez(X.repo),engines:X.engines,defaultVendor:X.vendor,defaultBaseRef:X.baseRef,engineLabel:MY});if(G===void 0)process.exit(0);QJ("lastSelectedVendor",G.vendor),JZ(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 yu(q,H,X.repo,G.vendor,nF(G.prompt,G.attachments)),await Ej(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 xu(J){await FJ({setup:async()=>{let z=null;try{let X=await Sz(),G=new NJ(X);await G.init(),z=G}catch(X){console.error("[kobe quick-task] daemon unavailable; cannot create task:",X)}let{ctx:Z,fallbackRepo:Y}=await Su(z,J.session);return{root:()=>Z?k(Tu,{ctx:Z,orchestrator:z}):k(Pj,{defaultRepo:Y,orchestrator:z}),onDestroy:()=>{z?.dispose()}}}})}var _M=C(()=>{P();P();P();P();kJ();D1();tZ();qY();Xz();S1();P1();JH();s1();DM();d1();l8();Aj();AZ();gj();wj();DW();vj();rJ()});function cj(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 mj(J,z){if(J.includes("/"))return J.split("/").map((X)=>mj(X,z)).join("/");let Z=J.toLowerCase();if(Z==="tab")return"tab";let Y=Eu[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 YG(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("+")?YG(H,z):mj(H,!0)}`}let X=Z.split("+");if(X.length===1)return mj(X[0]??"",!1);let G=X[X.length-1]??"";return`${X.slice(0,-1).map((H)=>uu[H.toLowerCase().trim()]??H).join("")} ${mj(G,!0)}`}var uu,Eu;var MW=C(()=>{uu={ctrl:"\u2303",control:"\u2303",alt:"\u2325",opt:"\u2325",option:"\u2325",shift:"\u21E7",cmd:"\u2318",command:"\u2318",meta:"\u2318",super:"\u2318"},Eu={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 pM}from"@opentui/core";function wu(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 XG(J={}){let z=_1(),{theme:Z}=w0(),Y=()=>wu(eZ),X=()=>J.onClose?J.onClose():z.clear(),[G,q]=s("\u2303B");return a1(()=>{c0(["show-options","-g","prefix"]).then(({code:H,stdout:j})=>{if(H!==0)return;let B=cj(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(Y1,{get each(){return Y()},children:(L)=>(()=>{var O=W("box"),A=W("text");return D(O,A),Q(O,"gap",0),K(A,()=>d8("category",L.category)),K(O,k(Y1,{get each(){return L.rows},children:(g)=>{let E=g.hint?.keys??g.keys[0]??"\u2014",h=()=>E==="\u2014"?"\u2014":YG(E,G()),I=()=>(g.hint?g.keys:g.keys.slice(1)).map((N)=>YG(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,()=>d8("desc",g.id)),K(N,(()=>{var i=C0(()=>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=pM.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=pM.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 OW=C(()=>{P();P();P();P();P();P();P();D1();P1();JG();d1();BJ();MW();IJ();rJ();XG.show=(J)=>{J.replace(()=>k(XG,{}))}});import{TextAttributes as Pu}from"@opentui/core";function rM(J){let z=_1(),{theme:Z}=w0(),[Y,X]=s(J.currentTitle);function G(){let q=Y().trim();if(SQ(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,T0("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=Pu.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 oM=C(()=>{P();P();P();P();P();P();P();BJ();D1();d1();rJ();eX()});function hu(J,z,Z={}){return new Promise((Y)=>{J.replace(()=>k(rM,{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 sz;var AW=C(()=>{P();oM();sz={show:hu}});import{TextAttributes as vu}from"@opentui/core";function mu(J){if(!J)return J;return J.charAt(0).toUpperCase()+J.slice(1)}function fz(J){let z=_1(),{theme:Z}=w0(),[Y,X]=rz({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,T0("esc")),Q(j,"onMouseUp",()=>z.clear()),K(B,()=>J.message),Q(V,"flexDirection","row"),Q(V,"justifyContent","flex-end"),Q(V,"paddingTop",1),K(V,k(Y1,{each:["cancel","confirm"],children:(f)=>(()=>{var U=W("box"),L=W("text");return D(U,L),Q(U,"paddingLeft",1),Q(U,"paddingRight",1),Q(U,"onMouseUp",()=>{if(f==="confirm")J.onConfirm?.();if(f==="cancel")J.onCancel?.();z.clear()}),K(L,()=>mu(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=vu.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 dj=C(()=>{P();P();P();P();P();P();P();BJ();D1();pX();d1();IJ();rJ();fz.show=(J,z,Z,Y,X,G)=>{return new Promise((q)=>{J.replace(()=>k(fz,{title:z,message:Z,onConfirm:()=>q(!0),onCancel:()=>q(!1),label:Y,confirmLabel:X,get initialActive(){return G?.initialActive}}),()=>q(void 0)),J.setSize("small")})}});import{unlinkSync as cu}from"fs";import{join as du}from"path";function sM(J){return J instanceof NJ}function tM(J,z){try{J?.destroy()}catch(Z){console.error(`kobe: renderer.destroy() failed during ${z}:`,Z)}}async function RW(J,z,Z){if(await fz.show(J,"Reset UI state?","Wipes ~/.config/kobe/state.json and ~/.kobe/tasks.json, then quits kobe \u2014 relaunch for a fresh start with empty Working session / Archive lists. Worktrees on disk and Claude Code session history are NOT touched.","cancel")!==!0)return;z.clear();try{cu(du(sJ(),".kobe","tasks.json"))}catch(X){if(X.code!=="ENOENT")console.error("kobe: failed to delete tasks.json during reset:",X)}tM(Z,"reset"),process.stderr.write(`kobe: UI state reset. Relaunch kobe to start fresh.
|
|
268
|
-
`),process.exit(0)}async function
|
|
269
|
-
`),process.exit(0)}var eM=C(()=>{tZ();t1();dj()});function nu(J){return`theme:${J}`}function NW(J){return`language:${J}`}function CW(J){return`accent:${J}`}function iu(J){return`engine:${J}`}function xQ(J){return`surface:${J}`}function bW(J){return[...J.themeNames.map((z)=>({id:nu(z),kind:"theme",name:z})),...rX.map((z)=>({id:NW(z.id),kind:"language",locale:z.id})),{id:"transparent",kind:"transparent"},...J.focusAccentSlots.map((z)=>({id:CW(z),kind:"focusAccent",slot:z})),{id:"toast",kind:"toast"},{id:"sound",kind:"sound"},{id:"zen-keep-tasks",kind:"zenKeepTasks"},{id:xQ("chattab"),kind:"surface",surface:"chattab"},{id:xQ("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 lu(J){return[...J.map((z)=>({id:iu(z),kind:"engine",vendor:z})),{id:"add-engine",kind:"engineAdd"}]}function $u(){return[{id:"feedback-title",kind:"feedbackTitle"},{id:"feedback-body",kind:"feedbackBody"},{id:"feedback-send",kind:"feedbackSend"}]}function GG(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 J3(J,z){switch(J){case"general":return bW(z);case"engines":return lu(z.engineList);case"accounts":case"keys":return[];case"feedback":return $u();case"dev":return GG(z.hasDaemon)}}function QG(J,z){return J.findIndex((Z)=>Z.id===z)}function nj(J,z){return J[z]}var nY;var kW=C(()=>{tX();nY=[{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 z3(J){let{theme:z}=w0();return(()=>{var Z=W("box");return Q(Z,"flexDirection","column"),Q(Z,"flexShrink",0),Q(Z,"width",14),Q(Z,"gap",1),K(Z,k(Y1,{each:nY,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 Z3(J){let z=w0(),{theme:Z}=z,Y=()=>bW({themeNames:J.themeNames(),focusAccentSlots:cY}),X=(i)=>QG(Y(),i),G=()=>X("transparent"),q=()=>X("toast"),H=()=>X("sound"),j=()=>X("zen-keep-tasks"),B=()=>X(xQ("chattab")),V=()=>X(xQ("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"),O0=W("text"),b=W("box"),p=W("text"),w=W("text"),R=W("box"),e=W("text"),x=W("box"),$=W("text"),Q0=W("text"),H0=W("box"),L0=W("text"),M0=W("text"),E0=W("box"),b0=W("text"),e0=T0(" "),j1=W("box"),k0=W("text"),h0=T0(" "),N0=W("box"),o0=W("text"),m=W("text"),j0=W("box"),z0=W("text"),x0=T0(" "),n=W("box"),W0=W("text"),S0=W("text"),l0=W("box"),Z1=W("text"),$0=T0(" "),X1=W("box"),R1=W("text"),O1=T0(" "),Z0=W("box"),q0=W("text"),U0=W("text"),g0=W("box"),V0=W("text"),P0=W("box"),I0=W("text"),p0=W("box"),y0=W("text"),u0=W("text"),Q1=W("box"),W1=W("text"),V1=W("box"),q1=W("text");return D(i,t),D(i,X0),D(i,G0),D(i,f0),D(i,b),D(i,x),D(i,H0),D(i,N0),D(i,n),D(i,Z0),D(i,p0),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(Y1,{get each(){return J.themeNames()},children:(S,F0)=>{let U1=()=>J.level()==="body"&&J.bodyRow()===F0(),L1=()=>S===z.selected;return(()=>{var d0=W("box"),t0=W("text");return D(d0,t0),Q(d0,"flexDirection","row"),Q(d0,"gap",1),Q(d0,"paddingLeft",1),Q(d0,"paddingRight",1),Q(d0,"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((v0)=>{var a=U1()?Z.primary:void 0,R0=U1()?Z.selectedListItemText:L1()?Z.accent:Z.text,J0=U1()||L1()?s0.BOLD:void 0;return a!==v0.e&&(v0.e=Q(d0,"backgroundColor",a,v0.e)),R0!==v0.t&&(v0.t=Q(t0,"fg",R0,v0.t)),J0!==v0.a&&(v0.a=Q(t0,"attributes",J0,v0.a)),v0},{e:void 0,t:void 0,a:void 0}),d0})()}})),D(f0,_),D(f0,O0),Q(f0,"flexDirection","column"),Q(f0,"gap",0),Q(f0,"paddingTop",1),K(_,()=>F("settings.general.language")),Q(O0,"wrapMode","word"),K(O0,()=>F("settings.general.languageHint")),K(f0,k(Y1,{each:rX,children:(S)=>{let F0=()=>X(NW(S.id)),U1=()=>J.level()==="body"&&J.bodyRow()===F0(),L1=()=>J.currentLocale()===S.id;return(()=>{var d0=W("box"),t0=W("text");return D(d0,t0),Q(d0,"flexDirection","row"),Q(d0,"gap",1),Q(d0,"paddingLeft",1),Q(d0,"paddingRight",1),Q(d0,"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((v0)=>{var a=U1()?Z.primary:void 0,R0=U1()?Z.selectedListItemText:L1()?Z.accent:Z.text,J0=U1()||L1()?s0.BOLD:void 0;return a!==v0.e&&(v0.e=Q(d0,"backgroundColor",a,v0.e)),R0!==v0.t&&(v0.t=Q(t0,"fg",R0,v0.t)),J0!==v0.a&&(v0.a=Q(t0,"attributes",J0,v0.a)),v0},{e:void 0,t:void 0,a:void 0}),d0})()}}),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=C0(()=>!!z.transparentBackground);return()=>S()?F("settings.general.on"):F("settings.general.off")})()),D(x,$),D(x,Q0),Q(x,"flexDirection","column"),Q(x,"gap",0),Q(x,"paddingTop",1),K($,()=>F("settings.general.focusAccent")),Q(Q0,"wrapMode","word"),K(Q0,()=>F("settings.general.focusAccentHint")),K(x,k(Y1,{each:cY,children:(S)=>{let F0=()=>X(CW(S)),U1=()=>J.level()==="body"&&J.bodyRow()===F0(),L1=()=>z.focusAccent===S;return(()=>{var d0=W("box"),t0=W("text");return D(d0,t0),Q(d0,"flexDirection","row"),Q(d0,"gap",1),Q(d0,"paddingLeft",1),Q(d0,"paddingRight",1),Q(d0,"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((v0)=>{var a=U1()?Z.primary:void 0,R0=U1()?Z.selectedListItemText:L1()?Z.focusAccent:Z.text,J0=U1()||L1()?s0.BOLD:void 0;return a!==v0.e&&(v0.e=Q(d0,"backgroundColor",a,v0.e)),R0!==v0.t&&(v0.t=Q(t0,"fg",R0,v0.t)),J0!==v0.a&&(v0.a=Q(t0,"attributes",J0,v0.a)),v0},{e:void 0,t:void 0,a:void 0}),d0})()}}),null),D(H0,L0),D(H0,M0),D(H0,E0),D(H0,j1),Q(H0,"flexDirection","column"),Q(H0,"gap",0),Q(H0,"paddingTop",1),K(L0,()=>F("settings.general.notifications")),Q(M0,"wrapMode","word"),K(M0,()=>F("settings.general.notificationsHint")),D(E0,b0),Q(E0,"flexDirection","row"),Q(E0,"gap",1),Q(E0,"paddingLeft",1),Q(E0,"paddingRight",1),Q(E0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(q()),J.toggleToast()}),D(b0,e0),Q(b0,"wrapMode","none"),K(b0,()=>J.toastEnabled()?"[x]":"[ ]",e0),K(b0,()=>F("settings.general.toast"),null),D(j1,k0),Q(j1,"flexDirection","row"),Q(j1,"gap",1),Q(j1,"paddingLeft",1),Q(j1,"paddingRight",1),Q(j1,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(H()),J.toggleSound()}),D(k0,h0),Q(k0,"wrapMode","none"),K(k0,()=>J.soundEnabled()?"[x]":"[ ]",h0),K(k0,()=>F("settings.general.sound"),null),D(N0,o0),D(N0,m),D(N0,j0),Q(N0,"flexDirection","column"),Q(N0,"gap",0),Q(N0,"paddingTop",1),K(o0,()=>F("settings.general.zen")),Q(m,"wrapMode","word"),K(m,()=>F("settings.general.zenHint")),D(j0,z0),Q(j0,"flexDirection","row"),Q(j0,"gap",1),Q(j0,"paddingLeft",1),Q(j0,"paddingRight",1),Q(j0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(j()),J.toggleZenKeepsTasks()}),D(z0,x0),Q(z0,"wrapMode","none"),K(z0,()=>J.zenKeepsTasks()?"[x]":"[ ]",x0),K(z0,()=>F("settings.general.zenKeepTasks"),null),D(n,W0),D(n,S0),D(n,l0),D(n,X1),Q(n,"flexDirection","column"),Q(n,"gap",0),Q(n,"paddingTop",1),K(W0,()=>F("settings.general.surface")),Q(S0,"wrapMode","word"),K(S0,()=>F("settings.general.surfaceHint")),D(l0,Z1),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(Z1,$0),Q(Z1,"wrapMode","none"),K(Z1,()=>J.settingsSurface()==="chattab"?"[x]":"[ ]",$0),K(Z1,()=>F("settings.general.surfaceChattab"),null),D(X1,R1),Q(X1,"flexDirection","row"),Q(X1,"gap",1),Q(X1,"paddingLeft",1),Q(X1,"paddingRight",1),Q(X1,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(V()),J.selectSurface("taskpanel")}),D(R1,O1),Q(R1,"wrapMode","none"),K(R1,()=>J.settingsSurface()==="taskpanel"?"[x]":"[ ]",O1),K(R1,()=>F("settings.general.surfaceTaskpanel"),null),D(Z0,q0),D(Z0,U0),D(Z0,g0),D(Z0,P0),Q(Z0,"flexDirection","column"),Q(Z0,"gap",0),Q(Z0,"paddingTop",1),K(q0,()=>F("settings.general.editor")),Q(U0,"wrapMode","word"),K(U0,()=>F("settings.general.editorHint")),D(g0,V0),Q(g0,"flexDirection","row"),Q(g0,"gap",1),Q(g0,"paddingLeft",1),Q(g0,"paddingRight",1),Q(g0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(f()),J.cycleEditorKind()}),Q(V0,"wrapMode","none"),K(V0,()=>F("settings.general.editorRow",{kind:J.editorKind()})),D(P0,I0),Q(P0,"flexDirection","row"),Q(P0,"gap",1),Q(P0,"paddingLeft",1),Q(P0,"paddingRight",1),Q(P0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(U()),J.editEditorCustom()}),Q(I0,"wrapMode","none"),K(I0,()=>F("settings.general.editorCustom",{cmd:J.editorCustomCommand().trim()||F("settings.general.editorCustomUnset")})),D(p0,y0),D(p0,u0),D(p0,Q1),D(p0,V1),Q(p0,"flexDirection","column"),Q(p0,"gap",0),Q(p0,"paddingTop",1),K(y0,()=>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,q1),Q(V1,"flexDirection","row"),Q(V1,"gap",1),Q(V1,"paddingLeft",1),Q(V1,"paddingRight",1),Q(V1,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(O()),J.editWorktreeCustom()}),Q(q1,"wrapMode","none"),K(q1,()=>F("settings.general.worktreeCustom",{path:J.worktreeCustomPath()||F("settings.general.worktreeCustomUnset")})),u((S)=>{var F0=Z.text,U1=s0.BOLD,L1=Z.textMuted,d0=Z.text,t0=s0.BOLD,v0=Z.textMuted,a=Z.text,R0=s0.BOLD,J0=Z.textMuted,T=A()?Z.primary:void 0,D0=A()?Z.selectedListItemText:z.transparentBackground?Z.accent:Z.textMuted,T1=s0.BOLD,g1=Z.text,i1=s0.BOLD,m1=Z.textMuted,fJ=Z.text,mJ=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,m0=s0.BOLD,A0=Z.text,_0=s0.BOLD,K1=Z.textMuted,b1=h()?Z.primary:void 0,MJ=h()?Z.selectedListItemText:J.zenKeepsTasks()?Z.accent:Z.textMuted,Wz=s0.BOLD,gZ=Z.text,iW=s0.BOLD,lW=Z.textMuted,$W=I()?Z.primary:void 0,aW=I()?Z.selectedListItemText:J.settingsSurface()==="chattab"?Z.accent:Z.textMuted,_W=s0.BOLD,pW=N()?Z.primary:void 0,rW=N()?Z.selectedListItemText:J.settingsSurface()==="taskpanel"?Z.accent:Z.textMuted,oW=s0.BOLD,sW=Z.text,tW=s0.BOLD,eW=Z.textMuted,JV=M()?Z.primary:void 0,zV=M()?Z.selectedListItemText:Z.accent,ZV=s0.BOLD,YV=y()?Z.primary:void 0,XV=y()?Z.selectedListItemText:J.editorKind()==="custom"?Z.text:Z.textMuted,GV=Z.text,QV=s0.BOLD,qV=Z.textMuted,HV=c()?Z.primary:void 0,jV=c()?Z.selectedListItemText:Z.accent,BV=s0.BOLD,fV=d()?Z.primary:void 0,WV=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)),d0!==S.o&&(S.o=Q(_,"fg",d0,S.o)),t0!==S.i&&(S.i=Q(_,"attributes",t0,S.i)),v0!==S.n&&(S.n=Q(O0,"fg",v0,S.n)),a!==S.s&&(S.s=Q(p,"fg",a,S.s)),R0!==S.h&&(S.h=Q(p,"attributes",R0,S.h)),J0!==S.r&&(S.r=Q(w,"fg",J0,S.r)),T!==S.d&&(S.d=Q(R,"backgroundColor",T,S.d)),D0!==S.l&&(S.l=Q(e,"fg",D0,S.l)),T1!==S.u&&(S.u=Q(e,"attributes",T1,S.u)),g1!==S.c&&(S.c=Q($,"fg",g1,S.c)),i1!==S.w&&(S.w=Q($,"attributes",i1,S.w)),m1!==S.m&&(S.m=Q(Q0,"fg",m1,S.m)),fJ!==S.f&&(S.f=Q(L0,"fg",fJ,S.f)),mJ!==S.y&&(S.y=Q(L0,"attributes",mJ,S.y)),B1!==S.g&&(S.g=Q(M0,"fg",B1,S.g)),l!==S.p&&(S.p=Q(E0,"backgroundColor",l,S.p)),r!==S.b&&(S.b=Q(b0,"fg",r,S.b)),o!==S.T&&(S.T=Q(b0,"attributes",o,S.T)),v!==S.A&&(S.A=Q(j1,"backgroundColor",v,S.A)),a0!==S.O&&(S.O=Q(k0,"fg",a0,S.O)),m0!==S.I&&(S.I=Q(k0,"attributes",m0,S.I)),A0!==S.S&&(S.S=Q(o0,"fg",A0,S.S)),_0!==S.W&&(S.W=Q(o0,"attributes",_0,S.W)),K1!==S.C&&(S.C=Q(m,"fg",K1,S.C)),b1!==S.B&&(S.B=Q(j0,"backgroundColor",b1,S.B)),MJ!==S.v&&(S.v=Q(z0,"fg",MJ,S.v)),Wz!==S.k&&(S.k=Q(z0,"attributes",Wz,S.k)),gZ!==S.x&&(S.x=Q(W0,"fg",gZ,S.x)),iW!==S.j&&(S.j=Q(W0,"attributes",iW,S.j)),lW!==S.q&&(S.q=Q(S0,"fg",lW,S.q)),$W!==S.z&&(S.z=Q(l0,"backgroundColor",$W,S.z)),aW!==S.P&&(S.P=Q(Z1,"fg",aW,S.P)),_W!==S.H&&(S.H=Q(Z1,"attributes",_W,S.H)),pW!==S.F&&(S.F=Q(X1,"backgroundColor",pW,S.F)),rW!==S.M&&(S.M=Q(R1,"fg",rW,S.M)),oW!==S.D&&(S.D=Q(R1,"attributes",oW,S.D)),sW!==S.R&&(S.R=Q(q0,"fg",sW,S.R)),tW!==S.E&&(S.E=Q(q0,"attributes",tW,S.E)),eW!==S.L&&(S.L=Q(U0,"fg",eW,S.L)),JV!==S.N&&(S.N=Q(g0,"backgroundColor",JV,S.N)),zV!==S.G&&(S.G=Q(V0,"fg",zV,S.G)),ZV!==S.U&&(S.U=Q(V0,"attributes",ZV,S.U)),YV!==S.K&&(S.K=Q(P0,"backgroundColor",YV,S.K)),XV!==S.V&&(S.V=Q(I0,"fg",XV,S.V)),GV!==S.Y&&(S.Y=Q(y0,"fg",GV,S.Y)),QV!==S.J&&(S.J=Q(y0,"attributes",QV,S.J)),qV!==S.Q&&(S.Q=Q(u0,"fg",qV,S.Q)),HV!==S.Z&&(S.Z=Q(Q1,"backgroundColor",HV,S.Z)),jV!==S.X&&(S.X=Q(W1,"fg",jV,S.X)),BV!==S._&&(S._=Q(W1,"attributes",BV,S._)),fV!==S.$&&(S.$=Q(V1,"backgroundColor",fV,S.$)),WV!==S.te&&(S.te=Q(q1,"fg",WV,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 Y3(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(Y1,{get each(){return J.vendors},children:(B,V)=>{let f=()=>J.level()==="body"&&J.bodyRow()===V();return(()=>{var U=W("box"),L=W("text"),O=W("text"),A=W("text");return D(U,L),D(U,O),D(U,A),Q(U,"flexDirection","row"),Q(U,"gap",1),Q(U,"paddingLeft",1),Q(U,"paddingRight",1),Q(U,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(V()),J.editEngine(B)}),Q(L,"wrapMode","none"),K(L,()=>J.isDefaultEngine(B)?"\u25CF":" "),Q(O,"wrapMode","none"),K(O,()=>J.displayName(B)),Q(A,"wrapMode","none"),K(A,()=>J.commandText(B),null),K(A,(()=>{var g=C0(()=>!!J.isDefault(B));return()=>g()?F("settings.engines.defaultTag"):C0(()=>!!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 X3(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,T0("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,T0("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=C0(()=>!!A.plan);return()=>E()?` (${A.plan})`:""})(),null),u((E)=>Q(g,"fg",z.success,E)),g})();if(A.kind==="apikey")return(()=>{var g=W("text");return K(g,()=>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,T0("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 G3(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 n0(()=>{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")),Hz((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()),O0=H(X()),b=J.body(),p=F("settings.feedback.descriptionPlaceholder"),w=X(),R=G()?z.primary:z.backgroundElement,e=G()?z.selectedListItemText:z.accent,x=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)),O0!==M.d&&(M.d=Q(E,"attributes",O0,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)),x!==M.f&&(M.f=Q(N,"attributes",x,M.f)),M},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0,w:void 0,m:void 0,f:void 0}),B})()}function Q3(J){let{theme:z}=w0(),Z=()=>J.level()==="body"&&J.bodyRow()===0,Y=()=>J.level()==="body"&&J.bodyRow()===1,X=()=>QG(GG(J.hasDaemon),"remote-projects"),G=()=>J.level()==="body"&&J.bodyRow()===X(),q=()=>QG(GG(J.hasDaemon),"auto-status"),H=()=>J.level()==="body"&&J.bodyRow()===q(),j=()=>QG(GG(J.hasDaemon),"dispatcher"),B=()=>J.level()==="body"&&J.bodyRow()===j(),V=()=>QG(GG(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"),O0=W("text");return D(U,L),D(U,O),D(U,A),D(U,E),D(U,h),Q(U,"flexDirection","column"),Q(U,"gap",1),K(L,()=>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((x)=>{var $=z.text,Q0=s0.BOLD,H0=z.textMuted,L0=Y()?z.primary:z.backgroundElement,M0=Y()?z.selectedListItemText:z.accent,E0=s0.BOLD;return $!==x.e&&(x.e=Q(p,"fg",$,x.e)),Q0!==x.t&&(x.t=Q(p,"attributes",Q0,x.t)),H0!==x.a&&(x.a=Q(w,"fg",H0,x.a)),L0!==x.o&&(x.o=Q(R,"backgroundColor",L0,x.o)),M0!==x.i&&(x.i=Q(e,"fg",M0,x.i)),E0!==x.n&&(x.n=Q(e,"attributes",E0,x.n)),x},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),b}}),E),Q(E,"wrapMode","word"),K(E,()=>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=C0(()=>!!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=C0(()=>!!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=C0(()=>!!J.dispatcherEnabled());return()=>b()?F("settings.dev.dispatcherOn"):F("settings.dev.dispatcherOff")})()),Q(f0,"wrapMode","word"),K(f0,()=>F("settings.dev.archivedHistoryHint")),D(_,O0),Q(_,"flexDirection","row"),Q(_,"paddingLeft",1),Q(_,"paddingRight",1),Q(_,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(V()),J.toggleArchivedHistory()}),K(O0,(()=>{var b=C0(()=>!!J.archivedHistoryEnabled());return()=>b()?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,x=Z()?z.selectedListItemText:z.warning,$=s0.BOLD,Q0=z.textMuted,H0=z.text,L0=s0.BOLD,M0=z.textMuted,E0=G()?z.primary:z.backgroundElement,b0=G()?z.selectedListItemText:z.text,e0=J.remoteProjectsEnabled()?s0.BOLD:void 0,j1=z.textMuted,k0=H()?z.primary:z.backgroundElement,h0=H()?z.selectedListItemText:z.text,N0=J.autoStatusEnabled()?s0.BOLD:void 0,o0=z.textMuted,m=B()?z.primary:z.backgroundElement,j0=B()?z.selectedListItemText:z.text,z0=J.dispatcherEnabled()?s0.BOLD:void 0,x0=z.textMuted,n=f()?z.primary:z.backgroundElement,W0=f()?z.selectedListItemText:z.text,S0=J.archivedHistoryEnabled()?s0.BOLD:void 0;return p!==b.e&&(b.e=Q(L,"fg",p,b.e)),w!==b.t&&(b.t=Q(L,"attributes",w,b.t)),R!==b.a&&(b.a=Q(O,"fg",R,b.a)),e!==b.o&&(b.o=Q(A,"backgroundColor",e,b.o)),x!==b.i&&(b.i=Q(g,"fg",x,b.i)),$!==b.n&&(b.n=Q(g,"attributes",$,b.n)),Q0!==b.s&&(b.s=Q(E,"fg",Q0,b.s)),H0!==b.h&&(b.h=Q(I,"fg",H0,b.h)),L0!==b.r&&(b.r=Q(I,"attributes",L0,b.r)),M0!==b.d&&(b.d=Q(N,"fg",M0,b.d)),E0!==b.l&&(b.l=Q(M,"backgroundColor",E0,b.l)),b0!==b.u&&(b.u=Q(y,"fg",b0,b.u)),e0!==b.c&&(b.c=Q(y,"attributes",e0,b.c)),j1!==b.w&&(b.w=Q(c,"fg",j1,b.w)),k0!==b.m&&(b.m=Q(d,"backgroundColor",k0,b.m)),h0!==b.f&&(b.f=Q(i,"fg",h0,b.f)),N0!==b.y&&(b.y=Q(i,"attributes",N0,b.y)),o0!==b.g&&(b.g=Q(t,"fg",o0,b.g)),m!==b.p&&(b.p=Q(X0,"backgroundColor",m,b.p)),j0!==b.b&&(b.b=Q(G0,"fg",j0,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)),W0!==b.I&&(b.I=Q(O0,"fg",W0,b.I)),S0!==b.S&&(b.S=Q(O0,"attributes",S0,b.S)),b},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0,w:void 0,m:void 0,f:void 0,y:void 0,g:void 0,p:void 0,b:void 0,T:void 0,A:void 0,O:void 0,I:void 0,S:void 0}),U})()}function q3(){let{theme:J}=w0(),z=AM(),Z=Object.keys(kB).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=C0(()=>!!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,T0("bindings:")),D(O,T0(" chat.fork.new: ctrl+g # string = one chord")),D(A,T0(" sidebar.select: [enter] # list = several chords")),D(g,T0(" files.createPR: null # null = unbind")),D(E,T0(" tmux.tab.new: ctrl+y # tmux session key (see below)")),D(h,T0(" tmux.layout.workspaceSplit: g # prefix g")),D(I,T0("darwin: # platform overlay (also: linux)")),D(N,T0(" bindings:")),D(M,T0(" 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,O0=J.textMuted,b=J.textMuted,p=J.textMuted;return c!==y.e&&(y.e=Q(U,"fg",c,y.e)),d!==y.t&&(y.t=Q(U,"attributes",d,y.t)),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)),O0!==y.r&&(y.r=Q(I,"fg",O0,y.r)),b!==y.d&&(y.d=Q(N,"fg",b,y.d)),p!==y.l&&(y.l=Q(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(Y1,{get each(){return z.applied},children:(L)=>(()=>{var O=W("text");return Q(O,"wrapMode","word"),K(O,()=>`${L.id} \u2192 ${L.keys.length>0?L.keys.join(" / "):"(unbound)"} (default: ${L.defaultKeys.join(" / ")})`),u((A)=>Q(O,"fg",J.text,A)),O})()}),null),u((L)=>{var O=J.text,A=s0.BOLD;return O!==L.e&&(L.e=Q(U,"fg",O,L.e)),A!==L.t&&(L.t=Q(U,"attributes",A,L.t)),L},{e:void 0,t:void 0}),f}}),B),K(Y,k(Y0,{get when(){return z.warnings.length>0},get children(){var f=W("box"),U=W("text");return D(f,U),Q(f,"flexDirection","column"),Q(f,"gap",0),K(U,()=>F("settings.keybindings.warnings")),K(f,k(Y1,{get each(){return z.warnings},children:(L)=>(()=>{var O=W("text");return Q(O,"wrapMode","word"),K(O,`! ${L}`),u((A)=>Q(O,"fg",J.warning,A)),O})()}),null),u((L)=>{var O=J.warning,A=s0.BOLD;return O!==L.e&&(L.e=Q(U,"fg",O,L.e)),A!==L.t&&(L.t=Q(U,"attributes",A,L.t)),L},{e:void 0,t:void 0}),f}}),B),D(B,T0("tmux session keys use the same file: tmux.tab.new (ctrl+t), tmux.tab.prev/next (ctrl+[/]), tmux.tab.close (ctrl+w), tmux.tab.rename (f2), tmux.tab.chooseEngine (ctrl+shift+t), tmux.detach (ctrl+q), tmux.focus (4 chords, left/down/up/right), and prefix layout keys: workspaceSplit (s), workspaceClose (x), workspaceReset (r), tasksToggle (a), opsToggle (o), terminalToggle (z). They apply when a session is (re)built.")),Q(B,"wrapMode","word"),Q(V,"wrapMode","word"),K(V,()=>`Fixed (not rebindable): ${Z.join(", ")}.`),u((f)=>{var U=J.text,L=s0.BOLD,O=J.textMuted,A=J.text,g=s0.BOLD,E=J.textMuted,h=J.textMuted,I=J.textMuted;return U!==f.e&&(f.e=Q(X,"fg",U,f.e)),L!==f.t&&(f.t=Q(X,"attributes",L,f.t)),O!==f.a&&(f.a=Q(G,"fg",O,f.a)),A!==f.o&&(f.o=Q(H,"fg",A,f.o)),g!==f.i&&(f.i=Q(H,"attributes",g,f.i)),E!==f.n&&(f.n=Q(j,"fg",E,f.n)),h!==f.s&&(f.s=Q(B,"fg",h,f.s)),I!==f.h&&(f.h=Q(V,"fg",I,f.h)),f},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0}),Y})()}var H3=C(()=>{P();P();P();P();P();P();P();P();P();D1();HW();d1();BJ();tX();sq();eX();kW()});import{accessSync as au,constants as _u,mkdirSync as pu}from"fs";import{TextAttributes as ru}from"@opentui/core";function ou(J){return J.split(/[-_]+/).filter((z)=>z.length>0).map((z)=>z.charAt(0).toUpperCase()+z.slice(1)).join(" ")}function iY(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=K0(()=>Z.all().slice().sort()),[,N]=s(Math.max(0,I().findIndex((T)=>T===Z.selected))),M=sM(J.orchestrator),[y,c]=s(null),[d,i]=s(null),[t,X0]=s(null),G0=!1;n0(()=>{if(H()!=="accounts"||G0)return;G0=!0,Hq().then(c),jq().then(i),Bq().then(X0)});function f0(){return J3(H(),{themeNames:I(),focusAccentSlots:cY,engineList:x0(),hasDaemon:M})}function _(){return f0().length}function O0(){return uY(J.kv.get(UZ,xY))}function b(T){if(Z.selected===T)return;if(!Z.set(T))return;J.kv.set("activeTheme",T),J.onVisualPrefsChange?.()}function p(){return c8()}function w(T){if(c8()===T)return;CQ(T),J.kv.set(uj,T),J.onVisualPrefsChange?.()}function R(T){if(Z.transparentBackground===T)return;Z.setTransparentBackground(T),J.kv.set("transparentBackground",T),J.onVisualPrefsChange?.()}function e(){R(!Z.transparentBackground)}function x(T){if(Z.focusAccent===T)return;Z.setFocusAccent(T),J.kv.set("focusAccent",T),J.onVisualPrefsChange?.()}function $(T){J.kv.set(UZ,T)}function Q0(){return J.kv.get("notifications.toast.enabled",!0)!==!1}function H0(){return J.kv.get("notifications.sound.enabled",!0)!==!1}function L0(){J.kv.set("notifications.toast.enabled",!Q0())}function M0(){J.kv.set("notifications.sound.enabled",!H0())}function E0(){return J.kv.get(WH,!0)!==!1}function b0(){J.kv.set(WH,!E0())}function e0(){return J.kv.get("experimental.remoteProjects",!1)===!0}function j1(){J.kv.set("experimental.remoteProjects",!e0())}function k0(){return J.kv.get(LY,!1)===!0}function h0(){J.kv.set(LY,!k0())}function N0(){return J.kv.get(FY,!1)===!0}function o0(){J.kv.set(FY,!N0())}function m(){return J.kv.get(EG,!1)===!0}function j0(){J.kv.set(EG,!m())}function z0(){let T=J.kv.get("customEngineIds",[]);return Array.isArray(T)?T.filter((D0)=>typeof D0==="string"&&D0.trim().length>0):[]}function x0(){return[...o1,...z0()]}function n(T){let D0=J.kv.get(Rz(T),"");return typeof D0==="string"?D0.trim():""}function W0(T){return n(T)||uG(T).join(" ")}function S0(T){return UJ(T)&&n(T).length===0&&!Z1(T)}function l0(T){let D0=J.kv.get(gz(T),"");return typeof D0==="string"?D0.trim():""}function Z1(T){return l0(T).length>0}function $0(T){return l0(T)||NB[T]||T}let[X1,R1]=s(cJ(x1("lastSelectedVendor"),z0()));function O1(T){return X1()===T}function Z0(T){QJ("lastSelectedVendor",T),J.kv.set("lastSelectedVendor",T),R1(T)}async function q0(T){let D0=await sz.show(z,W0(T),{dialogTitle:`${$0(T)} launch command`,fieldLabel:"command",submitLabel:"save",allowEmpty:!0});if(D0===void 0)return;J.kv.set(Rz(T),D0.trim())}async function U0(T){let D0=await sz.show(z,$0(T),{dialogTitle:`${$0(T)} display name (blank = default)`,fieldLabel:"name",submitLabel:"save",allowEmpty:!0});if(D0===void 0)return;J.kv.set(gz(T),D0.trim())}function g0(T){if(J.kv.set(Rz(T),""),J.kv.set(gz(T),""),!UJ(T))J.kv.set("customEngineIds",z0().filter((D0)=>D0!==T)),U((D0)=>Math.max(0,Math.min(D0,x0().length)))}async function V0(){let T=await sz.show(z,"",{dialogTitle:"Add engine",fieldLabel:"id",submitLabel:"next",placeholder:"lowercase slug, e.g. aider"});if(T===void 0)return;let D0=T.trim().toLowerCase();if(!D0||UJ(D0)||z0().includes(D0))return;let T1=await sz.show(z,"",{dialogTitle:`Add engine \xB7 ${D0}`,fieldLabel:"command",submitLabel:"next",placeholder:"e.g. aider --model sonnet"});if(T1===void 0)return;let g1=await sz.show(z,D0,{dialogTitle:`Add engine \xB7 ${D0}`,fieldLabel:"name",submitLabel:"add",allowEmpty:!0});if(J.kv.set("customEngineIds",[...z0(),D0]),T1.trim())J.kv.set(Rz(D0),T1.trim());let i1=g1?.trim()??"";J.kv.set(gz(D0),i1&&i1!==D0?i1:ou(D0))}function P0(){if(H()!=="engines"||G()!=="body")return null;let T=nj(f0(),f());return T?.kind==="engine"?T.vendor:null}function I0(){return TX(J.kv.get(VZ,vH))}function p0(){let T=TY.indexOf(I0()),D0=TY[(T+1)%TY.length];if(D0)J.kv.set(VZ,D0)}function y0(){let T=J.kv.get($Z,"");return typeof T==="string"?T:""}async function u0(){let T=await sz.show(z,y0(),{dialogTitle:"Custom editor command (use {file} for the path)",fieldLabel:"command",submitLabel:"save",allowEmpty:!0});if(T===void 0)return;let D0=T.trim();if(J.kv.set($Z,D0),D0)J.kv.set(VZ,"custom")}function Q1(){let T=J.kv.get(hZ,"");return typeof T==="string"?T:""}let W1=()=>xU(Q1());function V1(){let T=W1();if(T==="default")return F("settings.general.worktreeKindDefault");if(T==="nextToProject")return F("settings.general.worktreeKindNext");return F("settings.general.worktreeKindCustom")}function q1(){let T=J.kv.get(dq,"");return(typeof T==="string"?T.trim():"")||(W1()==="custom"?Q1().trim():"")}function S(){let T=W1();if(T==="default")J.kv.set(hZ,DB);else if(T==="nextToProject")J.kv.set(hZ,q1());else J.kv.set(dq,Q1().trim()),J.kv.set(hZ,"")}async function F0(){let T=await sz.show(z,q1(),{dialogTitle:F("settings.general.worktreeBaseTitle"),fieldLabel:F("settings.general.worktreeBaseField"),submitLabel:"save",placeholder:`${BZ}/../worktrees`,allowEmpty:!0});if(T===void 0)return;let D0=T.trim();if(D0.includes(BZ)){if(!LB(D0)){await fz.show(z,"Can't use that worktree location",`${BZ} only expands as the leading path segment (e.g. ${BZ}/../kobe-worktrees). Keeping the previous setting.`,"cancel");return}}else if(D0){let T1=FB(D0)??D0;try{pu(T1,{recursive:!0}),au(T1,_u.W_OK)}catch(g1){await fz.show(z,"Can't use that worktree location",`${T1} isn't usable (${g1 instanceof Error?g1.message:String(g1)}). Keeping the previous setting \u2014 pick a writable directory.`,"cancel");return}}if(J.kv.set(dq,D0),D0)J.kv.set(hZ,D0);else if(W1()==="custom")J.kv.set(hZ,"")}async function U1(){h("submitting...");try{let T=nX({title:L(),body:A()});h(`sent: ${T.url}`),O(""),g(""),U(0)}catch(T){h(`error: ${T instanceof Error?T.message:String(T)}`)}}let L1=()=>H()==="feedback"&&G()==="body";function d0(T){let D0=f()+T;if(D0<0||D0>2){q("sidebar");return}U(D0)}function t0(){if(G()!=="sidebar"||_()===0)return;if(q("body"),U(0),H()==="general")N(0)}function v0(T){if(G()==="sidebar"){let g1=(B()+T+nY.length)%nY.length;V(g1);let i1=nY[g1];if(i1)j(i1.id),U(0);return}let D0=_();if(D0===0)return;let T1=(f()+T+D0)%D0;if(U(T1),nj(f0(),T1)?.kind==="theme")N(T1)}function a(T){j(T),V(nY.findIndex((D0)=>D0.id===T)),U(0),q("sidebar")}let R0={theme:(T)=>b(T.name),language:(T)=>w(T.locale),transparent:()=>e(),focusAccent:(T)=>x(T.slot),toast:()=>L0(),sound:()=>M0(),zenKeepTasks:()=>b0(),surface:(T)=>$(T.surface),editorKind:()=>p0(),editorCustom:()=>void u0(),worktreeBase:()=>S(),worktreeCustom:()=>void F0(),engine:(T)=>void q0(T.vendor),engineAdd:()=>void V0(),feedbackTitle:()=>U(0),feedbackBody:()=>U(1),feedbackSend:()=>void U1(),devReset:()=>void RW(z,J.kv,Y),devRestartDaemon:()=>void gW(z,J.orchestrator,Y),devRemoteProjects:()=>j1(),devAutoStatus:()=>h0(),devDispatcher:()=>o0(),devArchivedHistory:()=>j0()};function J0(){let T=nj(f0(),f());if(!T)return;R0[T.kind](T)}return M1(()=>({enabled:(!J.standalone||z.stack.length===0)&&!L1(),bindings:[{key:"down",cmd:()=>v0(1)},{key:"up",cmd:()=>v0(-1)},{key:"j",cmd:()=>v0(1)},{key:"k",cmd:()=>v0(-1)},{key:"tab",cmd:()=>v0(1)},{key:"right",cmd:t0},{key:"l",cmd:t0},{key:"left",cmd:()=>q("sidebar")},{key:"h",cmd:()=>q("sidebar")},{key:"return",cmd:()=>{if(G()==="sidebar"){t0();return}J0()}},{key:"t",cmd:e},{key:"r",cmd:()=>{let T=P0();if(T)U0(T)}},{key:"x",cmd:()=>{let T=P0();if(T)g0(T)}},{key:"d",cmd:()=>{let T=P0();if(T)Z0(T)}}]})),M1(()=>({enabled:L1(),bindings:[{key:"tab",cmd:()=>d0(1)},{key:"shift+tab",cmd:()=>d0(-1)}]})),M1(()=>({enabled:L1()&&f()===2,bindings:[{key:"return",cmd:()=>void U1()}]})),(()=>{var T=W("box"),D0=W("box"),T1=W("text"),g1=W("text"),i1=W("box"),m1=W("box"),fJ=W("box"),mJ=W("text");return D(T,D0),D(T,i1),D(T,fJ),Q(T,"paddingLeft",2),Q(T,"paddingRight",2),Q(T,"paddingBottom",1),Q(T,"gap",1),D(D0,T1),D(D0,g1),Q(D0,"flexDirection","row"),Q(D0,"justifyContent","space-between"),K(T1,()=>F("settings.title")),Q(g1,"onMouseUp",()=>J.onClose()),K(g1,()=>F("settings.esc")),D(i1,m1),Q(i1,"flexDirection","row"),Q(i1,"gap",2),K(i1,k(z3,{level:G,cursor:B,switchSection:a}),m1),Q(m1,"flexGrow",1),Q(m1,"flexShrink",1),Q(m1,"flexDirection","column"),Q(m1,"gap",1),K(m1,k(Y0,{get when(){return H()==="general"},get children(){return k(Z3,{level:G,bodyRow:f,setLevel:q,setBodyRow:U,themeNames:I,setThemeCursor:N,selectTheme:b,currentLocale:p,selectLanguage:w,toggleTransparent:e,selectFocusAccent:x,toastEnabled:Q0,soundEnabled:H0,toggleToast:L0,toggleSound:M0,zenKeepsTasks:E0,toggleZenKeepsTasks:b0,settingsSurface:O0,selectSurface:$,editorKind:I0,cycleEditorKind:p0,editorCustomCommand:y0,editEditorCustom:()=>void u0(),worktreeKind:W1,worktreeKindLabel:V1,cycleWorktreeBase:S,worktreeCustomPath:q1,editWorktreeCustom:()=>void F0()})}}),null),K(m1,k(Y0,{get when(){return H()==="engines"},get children(){return k(Y3,{level:G,bodyRow:f,setLevel:q,setBodyRow:U,get vendors(){return x0()},isCustom:(B1)=>!UJ(B1),displayName:$0,commandText:W0,isDefault:S0,isDefaultEngine:O1,editEngine:(B1)=>void q0(B1),renameEngine:(B1)=>void U0(B1),resetEngine:g0,onAddEngine:()=>void V0()})}}),null),K(m1,k(Y0,{get when(){return H()==="accounts"},get children(){return k(X3,{claudeStatus:y,codexStatus:d,copilotStatus:t})}}),null),K(m1,k(Y0,{get when(){return H()==="keys"},get children(){return k(q3,{})}}),null),K(m1,k(Y0,{get when(){return H()==="feedback"},get children(){return k(G3,{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(m1,k(Y0,{get when(){return H()==="dev"},get children(){return k(Q3,{level:G,bodyRow:f,setLevel:q,setBodyRow:U,hasDaemon:M,confirmReset:()=>void RW(z,J.kv,Y),confirmRestartDaemon:()=>void gW(z,J.orchestrator,Y),remoteProjectsEnabled:e0,toggleRemoteProjects:j1,autoStatusEnabled:k0,toggleAutoStatus:h0,dispatcherEnabled:N0,toggleDispatcher:o0,archivedHistoryEnabled:m,toggleArchivedHistory:j0})}}),null),D(fJ,mJ),Q(fJ,"paddingTop",0),K(mJ,(()=>{var B1=C0(()=>!!L1());return()=>B1()?F("settings.nav.feedback"):F("settings.nav.default")})()),u((B1)=>{var l=ru.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(mJ,"fg",v,B1.o)),B1},{e:void 0,t:void 0,a:void 0,o:void 0}),T})()}var IW=C(()=>{P();P();P();P();P();P();P();P();D1();qY();Xz();Xj();_q();xG();lq();S1();MB();uB();s1();d1();BJ();mH();IJ();fW();rJ();dj();AW();eM();kW();H3();iY.show=(J,z,Z)=>{let Y=!1;return new Promise((X)=>{J.replace(()=>k(iY,{kv:z,orchestrator:Z,onVisualPrefsChange:()=>{Y=!0},onClose:()=>X({visualPrefsChanged:Y})}),()=>X({visualPrefsChanged:Y}))})}});import{TextAttributes as su}from"@opentui/core";function B3(){let{theme:J}=w0(),z=pz(),Z=Tj(),Y=()=>Z.toasts().slice(-j3),X=()=>Math.max(0,z().width-tu-eu),G=()=>Math.max(0,z().height-JE-j3-1);return k(Y0,{get when(){return Z.toasts().length>0},get children(){var q=W("box");return Q(q,"position","absolute"),Q(q,"zIndex",2500),Q(q,"width",40),Q(q,"flexDirection","column"),Q(q,"gap",0),K(q,k(Y1,{get each(){return Y()},children:(H)=>{let j=()=>H.kind==="needs_input"?J.warning:H.kind==="error"?J.error:J.success,B=()=>J.selectedListItemText,V=()=>H.kind==="needs_input"?"?":H.kind==="error"?"\u2715":"\u2713";return(()=>{var f=W("box"),U=W("text"),L=W("text");return D(f,U),D(f,L),Q(f,"flexDirection","row"),Q(f,"gap",1),Q(f,"paddingLeft",1),Q(f,"paddingRight",1),Q(f,"onMouseUp",()=>Z.dismiss(H.id)),Q(U,"wrapMode","none"),K(U,V),Q(L,"wrapMode","none"),K(L,()=>H.title),u((O)=>{var A=j(),g=B(),E=su.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 j3=4,tu=40,eu=2,JE=2;var f3=C(()=>{P();P();P();P();P();P();P();D1();xj();d1()});import{TextAttributes as zE}from"@opentui/core";function ZE(J,z){let Z=J?`v${J}`:F("update.skew.olderBuild");return F("update.skew.hint",{daemon:Z,clientVersion:z})}function W3(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,()=>ZE(J.daemonVersion(),J.clientVersion)),u((B)=>{var{warning:V,warning:f}=z,U=zE.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 V3=C(()=>{P();P();P();P();P();P();D1();d1();BJ()});function U3(J,z){return J.find((Z)=>Z.id!==z&&!Z.archived)}function K3(J,z){let Z=J.activeTaskSignal;if(typeof Z!=="function")return!0;return Z.call(J)()===z}async function YE(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=U3(J.tasks,J.taskId);if(await lz(Y,X?y1(X.id):void 0).catch((G)=>{J.logger.error(`${J.logPrefix} switch-client failed:`,G)}),J.updateActiveTask&&K3(J.orch,J.taskId))await J.orch.setActiveTask(X?.id??null).catch(()=>{});return await vJ(Y).catch((G)=>{J.logger.error(`${J.logPrefix} kill tmux session failed:`,G)}),{archived:Z,nextTask:X}}async function XE(J){let z=U3(J.tasks,J.taskId),Z=y1(J.taskId);if(J.switchBeforeKill)await lz(Z,z?y1(z.id):void 0).catch((Y)=>{J.logger.error(`${J.logPrefix} switch-client failed:`,Y)});if(J.updateActiveTask&&J.orch&&K3(J.orch,J.taskId))await J.orch.setActiveTask(z?.id??null).catch(()=>{});return await vJ(Z).catch((Y)=>{J.logger.error(`${J.logPrefix} kill tmux session failed:`,Y)}),{nextTask:z}}async function D3(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 YE({orch:J.orch,tasks:J.tasks(),taskId:z,logger:J.logger,logPrefix:J.logPrefix,updateActiveTask:J.updateActiveTask}))return;await J.reload?.()}async function L3(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(WB)){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 XE({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 F3(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 M3(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 O3(J,z){let Z=J.tasks().find((G)=>G.id===z);if(!Z||!J.orch)return;let Y=await GZ(),X=NZ(Y,Z.vendor??zJ);try{await J.orch.setVendor(z,X)}catch(G){J.logger.error(`${J.logPrefix} task.setVendor failed:`,G),J.notifyError?.(`Couldn't switch engine: ${G instanceof Error?G.message:String(G)}`);return}J.notifyInfo?.(`Engine \u2192 ${MY(X)} (applies on reopen)`),await J.reload?.()}async function A3(J){let z=SJ(),Z=J.cursorRepo()??z[0]??process.cwd();if(J.openCreateSurface&&await J.openCreateSurface(Z))return;let Y=J.lastVendor()??zJ,X=await GZ();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),JZ(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 R3=C(()=>{qY();Xz();KB();S1();BJ();Yz();s1();HJ()});import{spawn as GE}from"child_process";import{existsSync as QE}from"fs";import{basename as qE,delimiter as HE,isAbsolute as jE,join as BE}from"path";function SW(J,z,Z){if(jE(J))return Z(J);let Y=z.PATH??"";for(let X of Y.split(HE)){if(!X)continue;if(Z(BE(X,J)))return!0}return!1}function VE(J){let z=qE(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 g3(J={}){let z=J.env??process.env,Z=J.platform??process.platform,Y=J.exists??QE,X=z.KOBE_OPEN_EDITOR?.trim();if(X)return{id:"env",label:VE(X),command:X,args:[]};for(let G of fE)if(SW(G.command,z,Y))return{id:G.id,label:G.label,command:G.command,args:[]};if(Z==="darwin"&&SW("open",z,Y)){for(let G of WE)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"&&SW("xdg-open",z,Y))return{id:"xdg-open",label:"Open",command:"xdg-open",args:[]};return null}function UE(J,z){return[z.command,[...z.args,J]]}function N3(J,z,Z={}){if(!J)return!1;let Y=Z.spawn??GE,[X,G]=UE(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 fE,WE;var C3=C(()=>{fE=[{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"}],WE=[{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 ij(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 lj(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 $j(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 uQ=C(()=>{D1();qX();qX()});import{stat as KE}from"fs/promises";import{join as DE}from"path";async function OE(J){try{let z=await KE(DE(J,".git","HEAD"));return`${z.mtimeMs}:${z.size}`}catch{return null}}async function AE(J,z,Z=HZ){let Y=await OE(J);if(Y!==null){let j=b3.get(J);if(j&&j.fingerprint===Y)return j.value}let X="",G=!1,q=await Z("git",["symbolic-ref","--short","HEAD"],{cwd:J,env:_J(),signal:z}),H=q.status===0?q.stdout.trim():"";if(H&&H!=="HEAD")X=H,G=!0;else if((await Z("git",["rev-parse","--verify","HEAD"],{cwd:J,env:_J(),signal:z})).status===0)X="(detached)",G=!0;if(G&&Y!==null)b3.set(J,{fingerprint:Y,value:X});return X}function I3(J){return k3.read(J)}function S3(J){uz().then((z)=>{if(z)k3.poll(J)})}var LE=2000,FE=30000,ME=1500,b3,k3;var y3=C(()=>{aZ();ZG();uQ();b3=new Map;k3=$j({initial:"",timeoutMs:LE,slowRetryMs:FE,minIntervalMs:ME,run:(J,z)=>AE(J,z)})});function yW(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 T3(J){let z=yW({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:JY({"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:JY({"sidebar.view":(G,q)=>{J.onViewSwitch?.((q??0)%2===0?-1:1)}})})),M1(()=>({enabled:J.focused()&&Y(),bindings:JY({"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 x3=C(()=>{JG();IJ()});function TW(J,z){return ij(J,z)}function xW(J,z){return` ${TW(J,Math.max(0,z))}`}var u3=()=>{};function gE(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 NE(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 P3(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 CE(){return F("tasks.subtitle.noTracking")}function bE(){return F("tasks.subtitle.materializing")}function kE(J){if(J.kind==="main")return!1;return J.vendor!==void 0&&!UJ(J.vendor)}function uW(J){let{task:z}=J,Z=z.kind==="main",Y=Z?J.mainBranch??"":z.branch,X=RE[z.status],G=J.activity?.state,q=G!==void 0,H=IE(G),j=NE(G),B=kE(z)&&!q,V=J.job!==void 0,f=V||!B&&(G==="running"||J.live||!q&&!Z&&z.status==="in_progress"),U=qG[J.spinnerFrame]??qG[0],L=V?"primary":B?"textMuted":j?.tone??(f?"primary":H?.tone??X.tone),O=B?CE():gE(z.status),A=V?J.truncateBranch(bE(),J.subtitleBudget):j?J.truncateBranch(j.text,J.subtitleBudget):Y.length>0?J.truncateBranch(Y,J.subtitleBudget):J.truncateBranch(O,J.subtitleBudget),g=B?E3:H?.glyph??X.glyph,E=B?E3:H?.glyph??"\u2605";return{isMain:Z,titleText:Z?Ez(z.repo):z.title,subtitleText:A,loading:f,stateGlyph:f?U:g,projectGlyph:f?U:E,tone:L}}function EW(J,z){if(!J.loading)return J;let Z=qG[z()%qG.length]??"\u280B";if(Z===J.stateGlyph&&Z===J.projectGlyph)return J;return{...J,stateGlyph:Z,projectGlyph:Z}}function IE(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 RE,qG,w3=100,E3="\xB7";var h3=C(()=>{BJ();s1();vj();RE={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"}};qG=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"]});function wW(J){return v3.read(J)}function PW(J){v3.poll(J)}var SE=4000,yE=60000,TE=1500,xE,v3;var m3=C(()=>{aZ();uQ();PX();uQ();xE={added:0,deleted:0},v3=$j({initial:xE,equals:_z,timeoutMs:SE,slowRetryMs:yE,minIntervalMs:TE,run:async(J,z)=>{let Z=await HZ("git",["status","--porcelain=v1"],{cwd:J,env:_J(),signal:z});if(Z.status!==0)throw Error("git status failed");return wX(Z.stdout)}})});import{TextAttributes as n1}from"@opentui/core";function uE(J){switch(J){case"active":return F("tasks.view.workspace");case"archived":return F("tasks.view.archives")}}function d3(J,z=wE){return ij(J,z)}function aj(J){let z=0;for(let Z of J)z+=(Z.codePointAt(0)??0)>=4352?2:1;return z}function n3(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)}n0(()=>{if(!G())return;let n=GJ();if(!n)return;let W0=(S0)=>{if(S0.defaultPrevented)return;if(!Z())return;if(S0.ctrl||S0.meta||S0.option)return;if(S0.name==="backspace"){j(($0)=>$0.slice(0,-1));return}let l0=S0.sequence;if(!l0||l0.length!==1)return;let Z1=l0.charCodeAt(0);if(Z1<32||Z1===127)return;j(($0)=>$0+l0)};n.keyInput.on("keypress",W0),C1(()=>n.keyInput.off("keypress",W0))});let[A,g]=s(0),E=setInterval(()=>g((n)=>n+1),EE);C1(()=>clearInterval(E));let[h,I]=s(0),N=setInterval(()=>I((n)=>(n+1)%qG.length),w3);C1(()=>clearInterval(N));let M=()=>J.sortMode?.()??"default",y=K0(()=>dM(J.tasks(),Y())),c=K0(()=>{let n=f();if(!n)return null;let W0=Bz(n);return y().find((S0)=>Bz(S0.repo)===W0)??null}),d=K0(()=>c()?.repo??null),i=K0(()=>c()?.label??"all"),t=K0(()=>{let n=c();return n?n.count:y().reduce((W0,S0)=>W0+S0.count,0)}),X0=K0(()=>{let n=t();return`${n} ${n===1?F("tasks.project.taskSingular"):F("tasks.project.taskPlural")}`}),G0=K0((n)=>$M(n,LW(J.tasks(),Y(),G()?H():"",M(),d())),[]),f0=K0(()=>FW(G0())),_=K0(()=>lM(G0())),O0=K0(()=>_().projectRows),b=K0(()=>_().taskRows),p=K0(()=>{let n=new Map;for(let W0 of G0())n.set(W0.flatIndex,W0);return n}),w=K0(()=>FW(LW(J.tasks(),Y(),"",M(),d())).length),R=K0(()=>b().length>0);n0(()=>{let n=f(),W0=y();if(n!==null&&W0.length>0&&(W0.length<=1||c()===null))U(null)});function e(){let n=y();if(n.length<=1){U(null);return}let W0=d(),S0=W0?Bz(W0):null,l0=S0===null?-1:n.findIndex(($0)=>Bz($0.repo)===S0),Z1=n[l0+1];U(Z1?.repo??null)}let x=()=>J.width?J.width():c3,$=K0(()=>Math.max(6,x()-9)),Q0=K0(()=>Math.max(6,x()-16)),H0=pz(),L0=K0(()=>{let n=Math.max(2,Math.min(10,Math.floor(H0().height*0.25))),W0=Math.max(2,O0().length*2);return Math.min(n,W0)}),[M0,E0]=s(null),[b0,e0]=s(-1),j1,k0,h0,N0=new Map;n0(()=>{let n=J.width?J.width():c3,W0=h0;if(!W0)return;W0.width=n,W0.flexShrink=1,W0.minHeight=0}),n0(XJ([b0,G0],([n])=>{let W0=p().get(n);if(!W0)return;let S0=W0.task.kind==="main"?j1:k0;if(!S0)return;if(S0.viewport.height<=0)return;let l0=N0.get(n);if(!l0)return;S0.scrollChildIntoView(l0.id)})),n0(XJ(()=>[J.selectedId(),f0()],([n,W0])=>{let S0=YJ(b0),l0=iM(n,W0,S0);if(l0!==S0)e0(l0)})),n0(XJ(Y,()=>{let n=f0();e0(n.length>0?0:-1)},{defer:!0})),n0(XJ(d,(n)=>e0(nM(G0(),n)),{defer:!0})),n0(XJ([G,H],()=>{if(!G())return;let n=f0();e0(n.length>0?0:-1)}));function o0(n){let W0=Y(),S0=EQ.findIndex(($0)=>$0.view===W0);if(S0<0)return;let l0=(S0+n+EQ.length)%EQ.length,Z1=EQ[l0];if(Z1)X(Z1.view)}let m=(n)=>{if(J.onActivate?.(n),!J.pinnedSelection)return;let W0=J.selectedId();if(!W0||n===W0)return;let S0=f0().indexOf(W0);if(S0>=0)e0(S0)};n0(XJ([b0,f0],([n,W0])=>{J.onCursorChange?.(n>=0&&n<W0.length?W0[n]:null)})),T3({focused:Z,cursorIndex:b0,setCursorIndex:e0,flatTaskIds:f0,onSelect:(n)=>{J.onSelect(n),m(n)},onDeleteRequest:(n)=>J.onDeleteRequest?.(n),onArchiveRequest:(n)=>J.onArchiveRequest?.(n),onLocalMergeRequest:(n)=>J.onLocalMergeRequest?.(n),moveMode:J.moveMode,onMoveRequest:(n,W0)=>J.onMoveRequest?.(n,W0),onMoveModeExit:()=>J.onMoveModeExit?.(),onRenameRequest:(n)=>J.onRenameRequest?.(n),onPinRequest:(n)=>J.onPinRequest?.(n),onPreviewToggleRequest:(n)=>J.onPreviewToggleRequest?.(n),onViewSwitch:(n)=>o0(n),onSortModeToggle:()=>J.onSortModeToggle?.(),onProjectFilterToggle:()=>e(),searchMode:G,onSearchEnter:()=>L(),onSearchExit:(n)=>O(n)});let j0=(n)=>(()=>{var W0=W("box"),S0=W("box"),l0=W("text"),Z1=W("text");return D(W0,S0),Q(W0,"flexDirection","column"),Q(W0,"flexShrink",0),K(W0,k(Y0,{get when(){return n.topPad},get children(){var $0=W("box"),X1=W("text");return D($0,X1),Q($0,"flexShrink",0),D(X1,T0(" ")),Q(X1,"wrapMode","none"),$0}}),S0),D(S0,l0),D(S0,Z1),Q(S0,"flexDirection","row"),Q(S0,"flexShrink",0),Q(S0,"gap",1),Q(S0,"paddingLeft",1),Q(S0,"paddingRight",1),Q(l0,"wrapMode","none"),K(l0,()=>n.label),Q(Z1,"wrapMode","none"),K(Z1,()=>"\u2500".repeat(Math.max(2,x()-10-n.label.length-(n.suffix?.length??0)))),K(S0,k(Y0,{get when(){return n.suffix},get children(){var $0=W("text");return Q($0,"wrapMode","none"),K($0,()=>n.suffix),u((X1)=>{var R1=z.info,O1=n1.BOLD;return R1!==X1.e&&(X1.e=Q($0,"fg",R1,X1.e)),O1!==X1.t&&(X1.t=Q($0,"attributes",O1,X1.t)),X1},{e:void 0,t:void 0}),$0}}),null),u(($0)=>{var X1=z.textMuted,R1=n1.BOLD,O1=z.border;return X1!==$0.e&&($0.e=Q(l0,"fg",X1,$0.e)),R1!==$0.t&&($0.t=Q(l0,"attributes",R1,$0.t)),O1!==$0.a&&($0.a=Q(Z1,"fg",O1,$0.a)),$0},{e:void 0,t:void 0,a:void 0}),W0})(),z0=(n)=>{switch(n){case"success":return z.success;case"warning":return z.warning;case"primary":return z.primary;case"error":return z.error;default:return z.textMuted}},x0=(n)=>{let W0=n.row.task,S0=n.row.flatIndex,l0=()=>S0===b0(),Z1=()=>W0.id===J.selectedId(),$0=K0(()=>{let V0=J.chatRunState?.();if(!V0)return!1;let P0=`${W0.id}:`;for(let[I0,p0]of V0)if(p0==="running"&&I0.startsWith(P0))return!0;return!1}),X1=K0(()=>{let V0=rH(J.worktreeChanges?.(),W0.worktreePath);if(V0)return V0;if(A(),!W0.archived)PW(W0.worktreePath);return wW(W0.worktreePath)},void 0,{equals:_z}),R1=K0(()=>{return A(),S3(W0.repo),I3(W0.repo)}),O1=K0(()=>uW({task:W0,activity:J.engineState?.().get(W0.id),job:J.taskJobs?.().get(W0.id),live:$0(),spinnerFrame:0,subtitleBudget:Q0(),truncateBranch:d3,mainBranch:R1()})),Z0=K0(()=>EW(O1(),h)),q0=()=>!Z0().loading?z.primary:z0(Z0().tone),U0=()=>l0()?z.focusAccent:Z1()?z.primary:void 0,g0=()=>l0()||Z1()?"\u258C":" ";return(()=>{var V0=W("box"),P0=W("box"),I0=W("box"),p0=W("text"),y0=W("box"),u0=W("text"),Q1=W("text"),W1=W("box"),V1=W("text"),q1=W("box"),S=W("text");return D(V0,P0),Q(V0,"flexDirection","column"),Q(V0,"gap",0),Q(V0,"paddingBottom",0),D(P0,I0),D(P0,W1),Hz((F0)=>{N0.set(S0,F0),C1(()=>{if(N0.get(S0)===F0)N0.delete(S0)})},P0),Q(P0,"flexDirection","column"),Q(P0,"gap",0),Q(P0,"onMouseUp",()=>{if(e0(S0),J.onSelect(W0.id),J.activateOnClick)m(W0.id)}),Q(P0,"onMouseOver",(F0)=>E0({task:W0,x:F0.x,y:F0.y})),Q(P0,"onMouseOut",()=>E0((F0)=>F0?.task.id===W0.id?null:F0)),D(I0,p0),D(I0,y0),Q(I0,"flexDirection","row"),Q(I0,"gap",0),Q(p0,"wrapMode","none"),K(p0,g0),D(y0,u0),D(y0,Q1),Q(y0,"flexDirection","row"),Q(y0,"flexGrow",1),Q(y0,"paddingRight",1),Q(y0,"gap",0),Q(u0,"wrapMode","none"),K(u0,()=>Z0().projectGlyph),Q(Q1,"wrapMode","none"),Q(Q1,"flexGrow",1),K(Q1,()=>xW(Z0().titleText,$())),D(W1,V1),D(W1,q1),Q(W1,"flexDirection","row"),Q(W1,"gap",0),Q(V1,"wrapMode","none"),K(V1,g0),D(q1,S),Q(q1,"flexDirection","row"),Q(q1,"flexGrow",1),Q(q1,"paddingLeft",2),Q(q1,"paddingRight",1),Q(q1,"gap",1),Q(S,"wrapMode","none"),Q(S,"flexGrow",1),K(S,()=>Z0().subtitleText),K(q1,k(Y0,{get when(){return X1().added>0},get children(){var F0=W("text"),U1=T0("+");return D(F0,U1),Q(F0,"wrapMode","none"),K(F0,()=>X1().added,null),u((L1)=>Q(F0,"fg",z.success,L1)),F0}}),null),K(q1,k(Y0,{get when(){return X1().deleted>0},get children(){var F0=W("text"),U1=T0("\u2212");return D(F0,U1),Q(F0,"wrapMode","none"),K(F0,()=>X1().deleted,null),u((L1)=>Q(F0,"fg",z.error,L1)),F0}}),null),u((F0)=>{var U1=l0()?z.backgroundElement:void 0,L1=U0(),d0=q0(),t0=n1.BOLD,v0=z.text,a=n1.BOLD,R0=U0(),J0=z.textMuted,T=n1.DIM;return U1!==F0.e&&(F0.e=Q(P0,"backgroundColor",U1,F0.e)),L1!==F0.t&&(F0.t=Q(p0,"fg",L1,F0.t)),d0!==F0.a&&(F0.a=Q(u0,"fg",d0,F0.a)),t0!==F0.o&&(F0.o=Q(u0,"attributes",t0,F0.o)),v0!==F0.i&&(F0.i=Q(Q1,"fg",v0,F0.i)),a!==F0.n&&(F0.n=Q(Q1,"attributes",a,F0.n)),R0!==F0.s&&(F0.s=Q(V1,"fg",R0,F0.s)),J0!==F0.h&&(F0.h=Q(S,"fg",J0,F0.h)),T!==F0.r&&(F0.r=Q(S,"attributes",T,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}),V0})()};return(()=>{var n=W("box"),W0=W("box"),S0=W("box"),l0=W("text"),Z1=W("box"),$0=W("box"),X1=W("text"),R1=W("scrollbox"),O1=W("box");return D(n,W0),D(n,Z1),D(n,R1),Hz((Z0)=>{h0=Z0},n),Q(n,"flexGrow",1),Q(n,"minHeight",0),Q(n,"flexDirection","column"),Q(n,"paddingTop",1),Q(n,"paddingBottom",1),Q(n,"paddingLeft",0),Q(n,"paddingRight",0),D(W0,S0),Q(W0,"flexDirection","row"),Q(W0,"justifyContent","space-between"),Q(W0,"gap",1),Q(W0,"paddingBottom",1),Q(W0,"paddingLeft",1),Q(W0,"paddingRight",1),D(S0,l0),Q(S0,"flexDirection","row"),Q(S0,"gap",1),D(l0,T0("KOBE")),Q(l0,"wrapMode","none"),K(S0,k(Y0,{get when(){return J.headerStatus?.()},children:(Z0)=>(()=>{var q0=W("text");return Q(q0,"wrapMode","none"),Q(q0,"onMouseUp",()=>J.onHeaderStatusClick?.()),K(q0,()=>Z0().label),u((U0)=>{var g0=Z0().emphasize?z.warning:z.textMuted,V0=Z0().emphasize?n1.BOLD:n1.DIM;return g0!==U0.e&&(U0.e=Q(q0,"fg",g0,U0.e)),V0!==U0.t&&(U0.t=Q(q0,"attributes",V0,U0.t)),U0},{e:void 0,t:void 0}),q0})()}),null),K(W0,k(Y0,{get when(){return J.onAddTask},get children(){var Z0=W("text");return D(Z0,T0("[+]")),Q(Z0,"wrapMode","none"),Q(Z0,"onMouseUp",()=>J.onAddTask?.()),u((q0)=>{var U0=z.primary,g0=n1.BOLD;return U0!==q0.e&&(q0.e=Q(Z0,"fg",U0,q0.e)),g0!==q0.t&&(q0.t=Q(Z0,"attributes",g0,q0.t)),q0},{e:void 0,t:void 0}),Z0}}),null),K(n,k(Y0,{get when(){return G()},get children(){var Z0=W("box"),q0=W("text"),U0=W("text"),g0=W("text");return D(Z0,q0),D(Z0,U0),D(Z0,g0),Q(Z0,"flexDirection","row"),Q(Z0,"gap",0),Q(Z0,"paddingBottom",1),Q(Z0,"paddingLeft",1),D(q0,T0("/")),Q(q0,"wrapMode","none"),Q(U0,"wrapMode","none"),K(U0,H),D(g0,T0("\u2588")),Q(g0,"wrapMode","none"),K(Z0,k(Y0,{get when(){return H().length===0},get children(){var V0=W("text"),P0=T0(" ");return D(V0,P0),Q(V0,"wrapMode","none"),K(V0,()=>F("tasks.search.placeholder"),null),u((I0)=>Q(V0,"fg",z.textMuted,I0)),V0}}),null),K(Z0,k(Y0,{get when(){return H().length>0},get children(){var V0=W("text"),P0=T0(" "),I0=T0("/");return D(V0,P0),D(V0,I0),Q(V0,"wrapMode","none"),K(V0,()=>f0().length,I0),K(V0,w,null),u((p0)=>Q(V0,"fg",z.textMuted,p0)),V0}}),null),u((V0)=>{var{info:P0,text:I0,info:p0}=z,y0=n1.BLINK;return P0!==V0.e&&(V0.e=Q(q0,"fg",P0,V0.e)),I0!==V0.t&&(V0.t=Q(U0,"fg",I0,V0.t)),p0!==V0.a&&(V0.a=Q(g0,"fg",p0,V0.a)),y0!==V0.o&&(V0.o=Q(g0,"attributes",y0,V0.o)),V0},{e:void 0,t:void 0,a:void 0,o:void 0}),Z0}}),Z1),D(Z1,$0),Q(Z1,"flexDirection","row"),Q(Z1,"justifyContent","space-between"),Q(Z1,"gap",1),Q(Z1,"paddingBottom",1),Q(Z1,"paddingLeft",1),Q(Z1,"paddingRight",1),D($0,X1),Q($0,"flexDirection","row"),Q($0,"gap",2),K($0,k(Y1,{each:EQ,children:(Z0)=>{let q0=()=>Y()===Z0.view;return(()=>{var U0=W("text");return Q(U0,"wrapMode","none"),Q(U0,"onMouseUp",()=>X(Z0.view)),K(U0,()=>uE(Z0.view)),u((g0)=>{var V0=q0()?z.primary:z.textMuted,P0=q0()?n1.BOLD:void 0;return V0!==g0.e&&(g0.e=Q(U0,"fg",V0,g0.e)),P0!==g0.t&&(g0.t=Q(U0,"attributes",P0,g0.t)),g0},{e:void 0,t:void 0}),U0})()}}),X1),D(X1,T0("[/]")),Q(X1,"wrapMode","none"),K(Z1,k(Y0,{get when(){return J.sortMode},get children(){var Z0=W("text");return Q(Z0,"wrapMode","none"),Q(Z0,"onMouseUp",()=>J.onSortModeToggle?.()),K(Z0,()=>F("tasks.sort")),u((q0)=>{var U0=z.textMuted,g0=n1.DIM;return U0!==q0.e&&(q0.e=Q(Z0,"fg",U0,q0.e)),g0!==q0.t&&(q0.t=Q(Z0,"attributes",g0,q0.t)),q0},{e:void 0,t:void 0}),Z0}}),null),K(n,k(Y0,{get when(){return O0().length>0},get children(){var Z0=W("box"),q0=W("box"),U0=W("text"),g0=W("text"),V0=W("scrollbox"),P0=W("box");return D(Z0,q0),D(Z0,V0),Q(Z0,"flexDirection","column"),Q(Z0,"flexShrink",0),D(q0,U0),D(q0,g0),Q(q0,"flexDirection","row"),Q(q0,"flexShrink",0),Q(q0,"gap",1),Q(q0,"paddingLeft",1),Q(q0,"paddingRight",1),Q(q0,"onMouseUp",()=>e()),Q(U0,"wrapMode","none"),K(U0,()=>F("tasks.header.projects")),K(q0,k(Y0,{get when(){return y().length>1},get children(){var I0=W("text");return Q(I0,"wrapMode","none"),K(I0,i),u((p0)=>{var y0=d()?z.primary:z.textMuted,u0=d()?n1.BOLD:void 0;return y0!==p0.e&&(p0.e=Q(I0,"fg",y0,p0.e)),u0!==p0.t&&(p0.t=Q(I0,"attributes",u0,p0.t)),p0},{e:void 0,t:void 0}),I0}}),g0),Q(g0,"wrapMode","none"),K(g0,()=>"\u2500".repeat(Math.max(2,x()-10-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 I0=W("text");return Q(I0,"wrapMode","none"),K(I0,X0),u((p0)=>{var y0=z.textMuted,u0=n1.DIM;return y0!==p0.e&&(p0.e=Q(I0,"fg",y0,p0.e)),u0!==p0.t&&(p0.t=Q(I0,"attributes",u0,p0.t)),p0},{e:void 0,t:void 0}),I0}}),null),D(V0,P0),Hz((I0)=>{j1=I0},V0),Q(V0,"flexShrink",0),Q(V0,"flexGrow",0),Q(V0,"minHeight",0),Q(V0,"stickyScroll",!1),Q(V0,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),Q(P0,"flexShrink",0),Q(P0,"gap",0),Q(P0,"paddingRight",1),K(P0,k(Y1,{get each(){return O0()},children:(I0)=>k(x0,{row:I0})})),u((I0)=>{var p0=z.textMuted,y0=n1.BOLD,u0=z.border,Q1=L0();return p0!==I0.e&&(I0.e=Q(U0,"fg",p0,I0.e)),y0!==I0.t&&(I0.t=Q(U0,"attributes",y0,I0.t)),u0!==I0.a&&(I0.a=Q(g0,"fg",u0,I0.a)),Q1!==I0.o&&(I0.o=Q(V0,"maxHeight",Q1,I0.o)),I0},{e:void 0,t:void 0,a:void 0,o:void 0}),Z0}}),R1),K(n,k(j0,{get label(){return F("tasks.header.tasks")},get suffix(){return C0(()=>M()==="default")()?void 0:M()},get topPad(){return O0().length>0}}),R1),D(R1,O1),Hz((Z0)=>{k0=Z0},R1),Q(R1,"flexGrow",1),Q(R1,"minHeight",0),Q(R1,"stickyScroll",!1),Q(R1,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),Q(O1,"flexShrink",0),Q(O1,"gap",0),Q(O1,"paddingRight",1),K(O1,k(Y1,{get each(){return b()},children:(Z0)=>{let{task:q0,flatIndex:U0}=Z0,g0=()=>U0===b0(),V0=()=>q0.id===J.selectedId(),P0=K0(()=>{let V1=J.chatRunState?.();if(!V1)return!1;let q1=`${q0.id}:`;for(let[S,F0]of V1)if(F0==="running"&&S.startsWith(q1))return!0;return!1}),I0=K0(()=>{let V1=rH(J.worktreeChanges?.(),q0.worktreePath);if(V1)return V1;if(A(),!q0.archived)PW(q0.worktreePath);return wW(q0.worktreePath)},void 0,{equals:_z}),p0=K0(()=>uW({task:q0,activity:J.engineState?.().get(q0.id),job:J.taskJobs?.().get(q0.id),live:P0(),spinnerFrame:0,subtitleBudget:Q0(),truncateBranch:d3,mainBranch:""})),y0=K0(()=>EW(p0(),h)),u0=()=>z0(y0().tone),Q1=()=>g0()?z.focusAccent:V0()?z.primary:void 0,W1=()=>g0()||V0()?"\u258C":" ";return(()=>{var V1=W("box"),q1=W("box"),S=W("box"),F0=W("text"),U1=W("box"),L1=W("text"),d0=W("text"),t0=W("box"),v0=W("text"),a=W("box"),R0=W("text");return D(V1,q1),Q(V1,"flexDirection","column"),Q(V1,"gap",0),Q(V1,"paddingBottom",1),D(q1,S),D(q1,t0),Hz((J0)=>{N0.set(U0,J0),C1(()=>{if(N0.get(U0)===J0)N0.delete(U0)})},q1),Q(q1,"flexDirection","column"),Q(q1,"gap",0),Q(q1,"onMouseUp",()=>{if(e0(U0),J.onSelect(q0.id),J.activateOnClick)m(q0.id)}),Q(q1,"onMouseOver",(J0)=>E0({task:q0,x:J0.x,y:J0.y})),Q(q1,"onMouseOut",()=>E0((J0)=>J0?.task.id===q0.id?null:J0)),D(S,F0),D(S,U1),Q(S,"flexDirection","row"),Q(S,"gap",0),Q(F0,"wrapMode","none"),K(F0,W1),D(U1,L1),D(U1,d0),Q(U1,"flexDirection","row"),Q(U1,"flexGrow",1),Q(U1,"paddingRight",1),Q(U1,"gap",0),Q(L1,"wrapMode","none"),K(L1,()=>y0().stateGlyph),Q(d0,"wrapMode","none"),Q(d0,"flexGrow",1),K(d0,()=>xW(y0().titleText,$())),K(U1,k(Y0,{get when(){return C0(()=>!!J.moveMode?.())()&&g0()},get children(){var J0=W("text");return Q(J0,"wrapMode","none"),K(J0,()=>F("tasks.moveChip")),u((T)=>Q(J0,"fg",z.warning,T)),J0}}),null),D(t0,v0),D(t0,a),Q(t0,"flexDirection","row"),Q(t0,"gap",0),Q(v0,"wrapMode","none"),K(v0,W1),D(a,R0),Q(a,"flexDirection","row"),Q(a,"flexGrow",1),Q(a,"paddingLeft",2),Q(a,"paddingRight",1),Q(a,"gap",1),Q(R0,"wrapMode","none"),Q(R0,"flexGrow",1),K(R0,()=>y0().subtitleText),K(a,k(Y0,{get when(){return q0.pinned===!0},get children(){var J0=W("text");return D(J0,T0("\u25B4")),Q(J0,"wrapMode","none"),u((T)=>Q(J0,"fg",z.warning,T)),J0}}),null),K(a,k(Y0,{get when(){return P3(q0)},children:(J0)=>(()=>{var T=W("text");return Q(T,"wrapMode","none"),K(T,()=>J0().glyph),u((D0)=>Q(T,"fg",z0(J0().tone),D0)),T})()}),null),K(a,k(Y0,{get when(){return I0().added>0},get children(){var J0=W("text"),T=T0("+");return D(J0,T),Q(J0,"wrapMode","none"),K(J0,()=>I0().added,null),u((D0)=>Q(J0,"fg",z.success,D0)),J0}}),null),K(a,k(Y0,{get when(){return I0().deleted>0},get children(){var J0=W("text"),T=T0("\u2212");return D(J0,T),Q(J0,"wrapMode","none"),K(J0,()=>I0().deleted,null),u((D0)=>Q(J0,"fg",z.error,D0)),J0}}),null),u((J0)=>{var T=g0()?z.backgroundElement:void 0,D0=Q1(),T1=u0(),g1=n1.BOLD,i1=z.text,m1=V0()||g0()?n1.BOLD:void 0,fJ=Q1(),mJ=z.textMuted,B1=n1.DIM;return T!==J0.e&&(J0.e=Q(q1,"backgroundColor",T,J0.e)),D0!==J0.t&&(J0.t=Q(F0,"fg",D0,J0.t)),T1!==J0.a&&(J0.a=Q(L1,"fg",T1,J0.a)),g1!==J0.o&&(J0.o=Q(L1,"attributes",g1,J0.o)),i1!==J0.i&&(J0.i=Q(d0,"fg",i1,J0.i)),m1!==J0.n&&(J0.n=Q(d0,"attributes",m1,J0.n)),fJ!==J0.s&&(J0.s=Q(v0,"fg",fJ,J0.s)),mJ!==J0.h&&(J0.h=Q(R0,"fg",mJ,J0.h)),B1!==J0.r&&(J0.r=Q(R0,"attributes",B1,J0.r)),J0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0}),V1})()}}),null),K(O1,k(Y0,{get when(){return f0().length===0},get children(){var Z0=W("box"),q0=W("text");return D(Z0,q0),Q(Z0,"paddingTop",1),Q(Z0,"paddingLeft",1),K(q0,(()=>{var U0=C0(()=>!!(G()&&H().trim().length>0));return()=>U0()?F("tasks.empty.noMatchSearch"):C0(()=>!!d())()?C0(()=>Y()==="active")()?F("tasks.empty.noActiveProject"):F("tasks.empty.noArchivedProject"):C0(()=>Y()==="active")()?F("tasks.empty.noActive"):F("tasks.empty.noArchived")})()),u((U0)=>Q(q0,"fg",z.textMuted,U0)),Z0}}),null),K(O1,k(Y0,{get when(){return C0(()=>!!(d()&&f0().length>0&&!R()))()&&!(G()&&H().trim().length>0)},get children(){var Z0=W("box"),q0=W("text");return D(Z0,q0),Q(Z0,"paddingTop",1),Q(Z0,"paddingLeft",1),Q(q0,"wrapMode","none"),K(q0,(()=>{var U0=C0(()=>Y()==="active");return()=>U0()?F("tasks.empty.noActiveProject"):F("tasks.empty.noArchivedProject")})()),u((U0)=>{var g0=z.textMuted,V0=n1.DIM;return g0!==U0.e&&(U0.e=Q(q0,"fg",g0,U0.e)),V0!==U0.t&&(U0.t=Q(q0,"attributes",V0,U0.t)),U0},{e:void 0,t:void 0}),Z0}}),null),K(O1,k(Y0,{get when(){return C0(()=>Y()==="archived")()&&f0().length>0},get children(){var Z0=W("box"),q0=W("text");return D(Z0,q0),Q(Z0,"paddingTop",1),Q(Z0,"paddingLeft",1),Q(q0,"wrapMode","none"),K(q0,()=>F("tasks.archiveHint")),u((U0)=>{var g0=z.textMuted,V0=n1.DIM;return g0!==U0.e&&(U0.e=Q(q0,"fg",g0,U0.e)),V0!==U0.t&&(U0.t=Q(q0,"attributes",V0,U0.t)),U0},{e:void 0,t:void 0}),Z0}}),null),K(n,k(Y0,{get when(){return J.zenActive?.()},get children(){var Z0=W("box"),q0=W("text");return D(Z0,q0),Q(Z0,"flexShrink",0),Q(Z0,"paddingLeft",1),Q(Z0,"paddingRight",1),Q(Z0,"paddingTop",1),D(q0,T0("\u262F ZEN")),Q(q0,"wrapMode","none"),Q(q0,"onMouseUp",()=>J.onZenClick?.()),u((U0)=>{var g0=z.accent,V0=n1.BOLD;return g0!==U0.e&&(U0.e=Q(q0,"fg",g0,U0.e)),V0!==U0.t&&(U0.t=Q(q0,"attributes",V0,U0.t)),U0},{e:void 0,t:void 0}),Z0}}),null),K(n,k(Y0,{get when(){return M0()},children:(Z0)=>{let q0=K0(()=>{let y0=Z0().task,u0=[];if(u0.push({text:y0.kind==="main"?Ez(y0.repo):y0.title,bold:!0}),y0.branch.length>0)u0.push({text:`\u2387 ${y0.branch}`});if(y0.worktreePath.length>0)u0.push({text:y0.worktreePath,dim:!0});return u0}),U0=72,g0=K0(()=>Math.min(68,Math.max(...q0().map((y0)=>aj(y0.text))))),V0=K0(()=>g0()+4),P0=K0(()=>q0().length+2),I0=K0(()=>Math.max(0,Math.min(Z0().x+2,H0().width-V0()-1))),p0=K0(()=>Math.max(0,Math.min(Z0().y+1,H0().height-P0()-1)));return(()=>{var y0=W("box");return Q(y0,"position","absolute"),Q(y0,"zIndex",2600),Q(y0,"flexDirection","column"),Q(y0,"border",!0),Q(y0,"paddingLeft",1),Q(y0,"paddingRight",1),K(y0,k(Y1,{get each(){return q0()},children:(u0)=>(()=>{var Q1=W("text");return Q(Q1,"wrapMode","none"),K(Q1,(()=>{var W1=C0(()=>!!u0.dim);return()=>W1()?PE(u0.text,g0()):TW(u0.text,g0())})()),u((W1)=>{var V1=u0.dim?z.textMuted:z.text,q1=u0.bold?n1.BOLD:u0.dim?n1.DIM:void 0;return V1!==W1.e&&(W1.e=Q(Q1,"fg",V1,W1.e)),q1!==W1.t&&(W1.t=Q(Q1,"attributes",q1,W1.t)),W1},{e:void 0,t:void 0}),Q1})()})),u((u0)=>{var Q1=I0(),W1=p0(),V1=V0(),q1=z.focusAccent,S=z.backgroundElement;return Q1!==u0.e&&(u0.e=Q(y0,"left",Q1,u0.e)),W1!==u0.t&&(u0.t=Q(y0,"top",W1,u0.t)),V1!==u0.a&&(u0.a=Q(y0,"width",V1,u0.a)),q1!==u0.o&&(u0.o=Q(y0,"borderColor",q1,u0.o)),S!==u0.i&&(u0.i=Q(y0,"backgroundColor",S,u0.i)),u0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),y0})()}}),null),u((Z0)=>{var q0=Z()?z.focusAccent:z.textMuted,U0=n1.BOLD,g0=z.textMuted,V0=n1.DIM;return q0!==Z0.e&&(Z0.e=Q(l0,"fg",q0,Z0.e)),U0!==Z0.t&&(Z0.t=Q(l0,"attributes",U0,Z0.t)),g0!==Z0.a&&(Z0.a=Q(X1,"fg",g0,Z0.a)),V0!==Z0.o&&(Z0.o=Q(X1,"attributes",V0,Z0.o)),Z0},{e:void 0,t:void 0,a:void 0,o:void 0}),n})()}var c3=32,EQ,EE=2000,wE=16,PE;var i3=C(()=>{P();P();P();P();P();P();P();P();P();BJ();P();D1();d1();d1();y3();vj();x3();u3();h3();PX();m3();EQ=[{view:"active"},{view:"archived"}];PE=lj});var p3={};H1(p3,{startTasksPane:()=>dE,legendRowCap:()=>_3,legendCap:()=>a3});import{existsSync as l3}from"fs";import{stat as hE}from"fs/promises";import{TextAttributes as _j}from"@opentui/core";function $3(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 mE(J){let{theme:z}=w0(),Z=_1(),Y=zG(),X=Tj(),[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 j0=()=>{c0(["show-options","-wqv","-t",m,xZ]).then(({code:x0,stdout:n})=>{d(x0===0&&n.trim().length>0)})};j0();let z0=setInterval(j0,1000);C1(()=>clearInterval(z0))}}let i=pz();n0(()=>{if(J.initialTaskId)return;let m=J.orch?.activeTaskSignal()();if(!m)return;q(m)}),n0(XJ(()=>J.orch?.uiPrefsSignal()(),(m)=>{if(m&&m.sortMode!==YJ(A))g(m.sortMode);if(m&&m.projectFilter!==YJ(h))I(m.projectFilter)})),n0(()=>{let m=J.orch?.updateSignal()();if(m)y(m)});let t={orch:J.orch,tasks:()=>J.tasks(),confirm:async(m)=>await fz.show(Z,m.title,m.body,m.cancelLabel,m.confirmLabel)===!0,promptText:(m,j0)=>sz.show(Z,m,j0),logger:console,logPrefix:"[kobe tasks]",notifyError:f,notifyInfo:U,reload:()=>J.reload(),switchBeforeKill:!0,updateActiveTask:!0,onTaskDeleted:(m,j0)=>{if(G()!==m)return;let z0=J.tasks();q(j0?.id??(z0.find((x0)=>!x0.archived)??z0[0])?.id??null)},promptNewTask:(m,j0,z0)=>Nj.show(Z,m,j0,z0),cursorRepo:()=>{let m=J.tasks();return(m.find((j0)=>j0.id===G())??m[0])?.repo},lastVendor:()=>cJ(x1("lastSelectedVendor"),nJ()),rememberVendor:(m)=>QJ("lastSelectedVendor",m),openCreateSurface:async(m)=>{if(uY(Y.get(UZ,xY))!=="chattab")return!1;let z0=await hJ();if(!z0)return!1;return await rG(z0,m),!0},selectTask:(m)=>q(m),enterTask:(m)=>j1(m)};async function X0(){await A3(t)}async function G0(){if(uY(Y.get(UZ,xY))==="chattab"){let z0=await hJ();if(z0){await _G(z0);return}}if(!(await iY.show(Z,Y,J.orch??void 0)).visualPrefsChanged)return;if(!Y.flush())return;try{let z0=await hJ();if(z0)await CX(z0)}catch(z0){console.error("[kobe tasks] failed to refresh workspace panes:",z0)}}async function f0(){let m=await hJ();if(m){await pG(m);return}XG.show(Z)}async function _(){if(!M()?.hasUpdate){U(F("tasks.toast.alreadyLatest",{version:J1}));return}let j0=await hJ();if(!j0)return;await oG(j0)}async function O0(m){await D3(t,m)}async function b(m){await L3(t,m)}async function p(m){await F3(t,m)}async function w(m){await M3(t,m)}async function R(m){await O3(t,m)}async function e(m){let z0=J.tasks().find((n)=>n.id===m)?.worktreePath;if(!z0||!l3(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($3(n));return}await J.reload()}if(!z0||!l3(z0))return;let x0=g3();if(!x0){console.error("[kobe tasks] no editor/opener found; set KOBE_OPEN_EDITOR"),f(F("tasks.toast.noEditor"));return}if(!N3(z0,x0))console.error(`[kobe tasks] failed to open worktree with ${x0.label}`),f(F("tasks.toast.openWorktreeFailed",{label:x0.label}))}async function x(){if(!process.env.TMUX_PANE)return;let m=await hJ();if(!m)return;let j0=await UX(m);if(!j0)return;await i0(["select-pane","-t",j0])}async function $(m,j0){let z0=J.tasks().find((x0)=>x0.id===m);if(!z0||z0.kind==="main"||!J.orch)return;try{await J.orch.moveTask(m,j0)}catch(x0){console.error("[kobe tasks] task.move failed:",x0),f(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(j0){console.error("[kobe tasks] task.pin failed:",j0);return}await J.reload()}async function H0(m){let{togglePreviewMode:j0}=await Promise.resolve().then(() => (VW(),WW));j0(m),await vJ(y1(m)),await j1(m)}let[L0,M0]=s(Y.get("tasksPane.keysCollapsed",!1)===!0),E0=(m)=>{M0(m),Y.set("tasksPane.keysCollapsed",m)};n0(XJ(()=>J.orch?.uiPrefsSignal()(),(m)=>{if(m&&m.keysCollapsed!==YJ(L0))M0(m.keysCollapsed)}));let[b0,e0]=s(!1);M1(()=>({enabled:Z.stack.length===0&&!b0(),bindings:JY({"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":()=>E0(!L0()),"tasks.focusEngine":()=>void x().catch((m)=>console.error("[kobe tasks] focus engine pane failed:",m))})}));async function j1(m){let j0=J.tasks().find((x0)=>x0.id===m);if(!j0)return;let z0=++V;try{await KW(J.orch,j0,j0.repo,j0.vendor,{includeInitPrompt:!0,heal:!0,captureFrom:!0,reload:()=>J.reload(),isCurrent:()=>V===z0})}catch(x0){if(x0 instanceof RZ)if(x0.phase==="no-daemon")f(F("tasks.toast.noDaemonOpen"));else if(x0.phase==="worktree")f($3(x0.cause??x0));else f(F("tasks.toast.sessionStartFailed"));else console.error("[kobe tasks] switchTo failed:",x0)}}let k0=K0(()=>{let m=M();if(m?.hasUpdate)return{label:`v${m.latest} \u2191`,emphasize:!0};return{label:`v${J1}`,emphasize:!1}}),h0=()=>J.orch?.daemonStaleSignal()()??!1,N0=()=>J.orch?.daemonVersionSignal()()??null,o0=K0(()=>J.tasks().find((m)=>m.id===G())?.kind==="main");return(()=>{var m=W("box"),j0=W("box");return D(m,j0),Q(m,"flexDirection","column"),Q(m,"flexGrow",1),K(m,k(W3,{stale:h0,daemonVersion:N0,clientVersion:J1,width:()=>i().width}),j0),Q(j0,"flexGrow",1),Q(j0,"flexShrink",1),K(j0,k(n3,{get tasks(){return J.tasks},selectedId:G,get onSelect(){return J.initialTaskId?()=>{}:q},get pinnedSelection(){return!!J.initialTaskId},onActivate:(z0)=>void j1(z0),activateOnClick:!0,headerStatus:k0,onHeaderStatusClick:()=>void _(),onAddTask:()=>void X0(),zenActive:c,onZenClick:()=>{(async()=>{let z0=await hJ();if(z0)await kY(z0,"zen-toggle")})()},width:()=>i().width,get engineState(){return C0(()=>!!J.orch)()?J.orch.engineStateSignal():void 0},get taskJobs(){return C0(()=>!!J.orch)()?J.orch.taskJobsSignal():void 0},get worktreeChanges(){return J.orch?()=>{let z0=J.orch;if(!z0||z0.connectionStateSignal()()!=="online")return null;return z0.worktreeChangesSignal()()}:void 0},onRenameRequest:(z0)=>void p(z0),onDeleteRequest:(z0)=>void b(z0),onArchiveRequest:(z0)=>void O0(z0),onPinRequest:(z0)=>void 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 $(z0,x0),onMoveModeExit:()=>O(!1),sortMode:A,projectFilter:h,onProjectFilterChange:N,onSortModeToggle:()=>{let z0=A()==="default"?"recent":"default";g(z0),Y.set("activeSortMode",z0)},focused:()=>Z.stack.length===0,onSearchActiveChange:e0,onCursorChange:j})),K(m,k(cE,{moveMode:L,selectedIsMain:o0,collapsed:L0,onToggleCollapsed:()=>E0(!L0())}),null),u((z0)=>Q(m,"backgroundColor",z.background,z0)),m})()}function a3(J){let z=qW(J);if(!z)return null;let Z=z.hint?.keys??z.keys[0];return Z&&Z.length>0?Z:null}function _3(J){let z=J.map(a3).filter((Z)=>Z!==null);return z.length>0?z.join("/"):null}function cE(J){let{theme:z}=w0(),[Z,Y]=s("Prefix");a1(()=>{c0(["show-options","-g","prefix"]).then(({code:U,stdout:L})=>{if(U!==0)return;let O=cj(L);if(O)Y(O)})});let X=()=>{QW();let U=tq(),L=U.binds,O=[],A=U.focus.filter((E)=>E!==null).map((E)=>E.chord);if(A.length===4&&A.every((E,h)=>E===vZ[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=()=>{QW();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=_3(O.ids);if(A===null)continue;L.push({k:A,label:O.label,dimWhenMain:O.dimWhenMain})}return L.push(...X()),L},q=()=>[{k:"j/k",label: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)=>aj(U.label)))),V=(U)=>{let L=B();if(aj(U)<=L)return U;let O=[...U],A=0,g=0;for(let E of O){let h=(E.codePointAt(0)??0)>=4352?2:1;if(A+h>L-1)break;A+=h,g++}return`${O.slice(0,g).join("")}\u2026`},f=()=>(J.collapsed?.()??!1)&&!(J.moveMode?.()??!1);return(()=>{var U=W("box"),L=W("text");return D(U,L),Q(U,"flexShrink",0),Q(U,"flexDirection","column"),Q(U,"paddingLeft",1),Q(U,"paddingRight",1),Q(U,"paddingTop",1),Q(U,"paddingBottom",1),Q(U,"gap",0),Q(L,"wrapMode","none"),Q(L,"onMouseUp",()=>J.onToggleCollapsed?.()),K(L,(()=>{var O=C0(()=>!!f());return()=>O()?F("tasks.hints.headerFolded"):F("tasks.hints.headerUnfolded")})()),K(U,k(Y0,{get when(){return!f()},get children(){return k(Y1,{get each(){return H()},children:(O)=>{let A=()=>O.dimWhenMain===!0&&(J.selectedIsMain?.()??!1);return(()=>{var g=W("box"),E=W("box"),h=W("text"),I=T0("["),N=T0("]"),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,()=>YG(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()?_j.DIM:_j.BOLD,t=B(),X0=z.textMuted,G0=A()?_j.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=_j.DIM;return A!==O.e&&(O.e=Q(L,"fg",A,O.e)),g!==O.t&&(O.t=Q(L,"attributes",g,O.t)),O},{e:void 0,t:void 0}),U})()}async function dE(J={}){await FJ({logContext:"tasks",providers:{notifications:!0},setup:()=>nE(J)})}async function nE(J){let z=new cX({homeDir:sJ()});await z.load();let[Z,Y]=s(z.list()),X=null;try{let B=await qz();if(B){let V=new NJ(B);await V.init(),X=V}else XZ("tasks-boot","no daemon running \u2014 polling tasks.json (a gui owns daemon lifecycle)")}catch(B){qJ("tasks-boot",B),XZ("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 uz())return;let B="missing";try{let V=await hE(z.filePath);B=`${V.mtimeMs}:${V.size}`}catch{}if(B===H)return;H=B,await q()})().catch(()=>{})},vE);return{root:()=>[k(mE,{tasks:G,get initialTaskId(){return J.initialTaskId},orch:X,reload:q}),k(B3,{})],onDestroy:()=>{if(j)clearInterval(j);X?.dispose()}}}var vE=1500;var r3=C(()=>{P();P();P();P();P();P();P();P();P1();Fz();BJ();P();QY();kJ();D1();tZ();t1();BQ();S1();eq();s1();bJ();OW();eX();AW();IW();f3();V3();JG();TQ();xj();d1();ZG();MW();AZ();IJ();R3();wj();C3();i3();dZ();HJ();rJ();dj()});var o3={};H1(o3,{startSettingsHost:()=>lE});function iE(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 hJ();if(j)await CX(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(iY,{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 lE(){await FJ({setup:async()=>{let J=null;try{let z=await qz();if(z){let Z=new NJ(z);await Z.init(),J=Z}else console.error("[kobe settings] no daemon running; Restart backend disabled")}catch(z){console.error("[kobe settings] daemon unavailable; Restart backend disabled:",z)}return{root:()=>k(iE,{orchestrator:J}),onDestroy:()=>{J?.dispose()}}}})}var s3=C(()=>{P();P();P();P();P();P();kJ();tZ();IW();TQ();d1();AZ();IJ();HJ();rJ()});var t3={};H1(t3,{startHelpHost:()=>aE});function $E(){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(XG,{onClose:Z})),u((X)=>Q(Y,"backgroundColor",z.background,X)),Y})()}async function aE(){await FJ({providers:{kv:!1,focus:!1},setup:()=>({root:()=>k($E,{})})})}var e3=C(()=>{P();P();P();P();P();OW();d1();AZ();IJ();rJ()});var JO={};H1(JO,{startUpdateHost:()=>eE});import{spawn as _E,spawnSync as pE}from"child_process";import{TextAttributes as HG}from"@opentui/core";function rE(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 _E(Z,Y,{stdio:"ignore",detached:!0}).unref(),!0}catch{return!1}}function oE(J){return J.replace(/\r\n/g,`
|
|
266
|
+
${Z}`}async function mF(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 $F(){if(process.platform==="darwin"){let J=await mF(["osascript","-e","get POSIX path of (the clipboard as \xABclass furl\xBB)"]),z=J?nF(J):null;if(z)return z;let Z=cF();return await mF(["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&&i8(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=cF();return xx(Y,Z),Y}}catch{}return null}return null}function cF(){let J=MV();Tx(J,{recursive:!0});let z=new Date().toISOString().slice(0,10).replaceAll("-","");return Ex(J,`paste-${z}-${dF(4).toString("hex")}.png`)}var wx,Px;var $8=C(()=>{t1();wx=/\.(png|jpe?g|gif|webp|pdf)$/i,Px=/\.pdf$/i});function mx(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 _8(J,z){if(z.defaultPrevented)return!1;if(a8)return!1;let Z=J.slice(),Y=mx(z);a8=!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{a8=!1}}var a8=!1;function dx(){if(p8)return;let J=GJ();if(!J)throw Error("useBindings: no renderer in scope; call inside a component rendered by @opentui/solid.");p8=J.keyInput,aF=(z)=>{_8(Oj,z)},p8.on("keypress",aF)}function M1(J){dx();let z=cx++,Z={config:J,id:z};n0(()=>{J()}),Oj.push(Z),C1(()=>{let Y=Oj.findIndex((X)=>X.id===z);if(Y>=0)Oj.splice(Y,1)})}var cx=1,Oj,p8=null,aF=null;var IJ=C(()=>{P();D1();Oj=[]});function Aj(){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 r8=C(()=>{D1()});import{RGBA as _F}from"@opentui/core";function lx(J){let z=pz(),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?ix:nx,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 $x(){let[J,z]=rz({stack:[],size:"medium"}),Z=GJ(),Y=null,X=Aj();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?.();hq(()=>{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 rF(J){let z=$x();return k(pF.Provider,{value:z,get children(){return[C0(()=>J.children),(()=>{var Z=W("box");return Q(Z,"position","absolute"),Q(Z,"zIndex",3000),K(Z,k(Y0,{get when(){return z.stack.length},get children(){return k(lx,{onClose:()=>z.clear(),get size(){return z.size},get children(){return z.stack.at(-1).element()}})}})),Z})()]}})}function _1(){let J=lJ(pF);if(!J)throw Error("useDialog must be used within a DialogProvider");return J}var nx,ix,pF;var rJ=C(()=>{P();P();P();P();P();P();P();P();D1();pX();c1();IJ();r8();nx=_F.fromInts(0,0,0,128),ix=_F.fromInts(0,0,0,64);pF=vz()});import{spawnSync as o8}from"child_process";import*as sF from"fs";function oF(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 tF(J){let z=J.trim();if(!z)return"repo path is required";let Z;try{Z=sF.statSync(z)}catch{return`path does not exist: ${z}`}if(!Z.isDirectory())return`not a directory: ${z}`;try{if(o8("git",["rev-parse","--git-dir"],{cwd:z,encoding:"utf-8",timeout:2000,stdio:["ignore","pipe","ignore"]}).status!==0)return oF(z)}catch{return oF(z)}return null}function kQ(J){if(!J)return null;try{let z=o8("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 eF(J){if(!J)return[];try{let z=o8("git",["for-each-ref","--format=%(refname:short)","refs/heads/"],{cwd:J,encoding:"utf-8",timeout:2000});if(z.status!==0)return[];return z.stdout.split(`
|
|
267
|
+
`).map((Z)=>Z.trim()).filter(Boolean).sort((Z,Y)=>{let X=(H)=>H==="main"?0:H==="master"?1:H==="develop"?2:3,G=X(Z),q=X(Y);if(G!==q)return G-q;return Z.localeCompare(Y)})}catch{return[]}}var xz="main";var Rj=()=>{};import*as J3 from"fs";import*as gj from"os";function LJ(J){if(J==="~")return gj.homedir();if(J.startsWith("~/"))return gj.homedir()+J.slice(1);return J}function s8(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 t8(J){if(!J)return[];try{let z=J3.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 e8(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 IQ(J,z,Z){let Y=z+Z;if(J.startsWith("~")){let X=gj.homedir();if(Y===X)return"~";if(Y.startsWith(`${X}/`))return`~${Y.slice(X.length)}`}return Y}var Nj=()=>{};import{spawn as ax}from"child_process";import*as dY from"fs";import*as SQ from"path";function z3(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 Z3(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 JW(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=dY.statSync(X)}catch{return F("newTask.error.parentNotFound",{path:X})}if(!G.isDirectory())return F("newTask.error.parentNotDir",{path:X});let q=SQ.join(X,Z);if(dY.existsSync(q))return F("newTask.error.targetExists",{path:q});return null}function Y3(J,z){return SQ.join(LJ(J.trim()),z.trim())}function X3(J,z){let Z=z.trim();if(!Z)return z;let Y=LJ(J.trim());if(!Y)return z;try{if(!dY.statSync(Y).isDirectory())return z}catch{return z}if(!dY.existsSync(SQ.join(Y,Z)))return Z;for(let X=2;X<1000;X++){let G=`${Z}-${X}`;if(!dY.existsSync(SQ.join(Y,G)))return G}return Z}function G3(J,z,Z){return new Promise((Y)=>{let X="";try{let G=ax("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 Q3=C(()=>{BJ();Nj()});function zW(J){if(J==="existing")return"clone";if(J==="clone")return"adopt";return"existing"}function ZW(J){if(J==="existing")return"adopt";if(J==="clone")return"existing";return"clone"}function q3(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 yQ(J){return!/\S/u.test(J)}function YW(J,z="existing"){if(J==="confirm")return"tabs";if(J==="tabs")return"engine";if(J==="engine")return XW(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 XW(J){if(J==="clone")return"cloneUrl";if(J==="adopt")return"adoptFilter";return"repo"}function H3(J,z){let Z=z.trim();if(!Z)return J;return J.filter((Y)=>cQ(Z,Y.path))}function j3(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 B3(J,z){let Z=z.trim().toLowerCase();if(!Z)return J;return J.filter((Y)=>Y.toLowerCase().includes(Z))}function f3(J,z){let Z=z.trim().toLowerCase();if(!Z)return J;return J.filter((Y)=>Y.toLowerCase().includes(Z))}function TQ(J,z,Z=_x){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 oz(J,z){if(z<=0)return 0;return Math.max(0,Math.min(z-1,J))}function W3(J,z,Z){let Y=J.trim(),X=Y.toLowerCase(),G=Y?z.find((H)=>H.toLowerCase()===X):void 0;if(G)return G;let q=z[Z];if(q)return q;return Y||xz}var _x=8;var GW=C(()=>{ZB();Rj()});import{TextAttributes as jz}from"@opentui/core";function V3(J){let z=_1(),{theme:Z}=w0(),[Y,X]=s("existing"),G=()=>{let a=J.availableVendors;return a&&a.length>0?a:o1},q=(()=>{let a=G(),R0=J.defaultVendor??"claude";return a.includes(R0)?R0:a[0]??"claude"})(),[H,j]=s(q),[B,V]=s("tabs"),[f,U]=s(J.defaultRepo),[L,O]=s(kQ(LJ(J.defaultRepo.trim()))??xz),[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(xz),[X0,G0]=s(!1),[f0,_]=s(""),O0=K0(()=>j3(J.defaultRepo,J.savedRepos)),b=K0(()=>q3(f(),O0())),p=K0(()=>s8(f())),w=K0(()=>t8(p().base)),R=K0(()=>e8(w(),p().filter)),e=K0(()=>B3(O0(),f())),x=K0(()=>b()==="browse"?R():e()),[$,Q0]=s(0),H0=K0(()=>TQ(x(),$())),[L0,M0]=s(!1),E0=K0(()=>eF(LJ(f().trim()))),b0=K0(()=>f3(E0(),L())),[J1,j1]=s(0),k0=K0(()=>TQ(b0(),J1())),h0=K0(()=>s8(I())),N0=K0(()=>t8(h0().base)),o0=K0(()=>e8(N0(),h0().filter)),[m,j0]=s(0),z0=K0(()=>TQ(o0(),m())),[x0,n]=s(!1),[W0,S0]=s(""),[l0,Y1]=s(0),[$0,G1]=s(new Set),[R1]=UY(()=>Y()==="adopt"?LJ(f().trim()):null,async(a)=>J.discoverAdoptable?await J.discoverAdoptable(a):[]),O1=K0(()=>H3(R1()??[],W0())),Z0=K0(()=>TQ(O1().map((a)=>a.path),l0())),q0=K0(()=>{let a=Z0();return O1().slice(a.start,a.start+a.items.length)});n0(()=>{O1(),Y1((a)=>oz(a,O1().length))}),n0((a)=>{let R0=LJ(f().trim());if(a!==void 0&&R0!==a)G1(new Set),Y1(0);return R0});function U0(a){G1((R0)=>{let J0=new Set(R0);if(J0.has(a))J0.delete(a);else J0.add(a);return J0})}function g0(){let a=O1()[l0()];if(a)U0(a.path)}n0(()=>{b0(),j1(0)}),n0(()=>{let a=LJ(f().trim());if(!a)return;if(A())return;let R0=kQ(a);if(R0)O(R0)}),n0(()=>{x(),Q0(0)}),n0(()=>{o0(),j0(0)}),n0(()=>{let a=E(),R0=I();if(c())return;let J0=z3(a);y(X3(R0,J0))});let[V0,P0]=s(null);n0(()=>{f(),E(),I(),M(),W0(),P0(null)});function I0(){let a=LJ(f().trim());if(!a)return;let R0=tF(a);if(R0){P0(R0),V("repo");return}let J0=L().trim()||xz;J.onSubmit({repo:a,baseRef:J0,vendor:H()}),z.clear()}async function p0(){if(X0())return;let a=Z3(E());if(a){P0(a),V("cloneUrl");return}let R0=JW(I(),M());if(R0){P0(R0);let g1=M().trim(),v1=!(!g1||g1.includes("/")||g1.includes("\\"))&&JW(I(),"__kobe_probe__")!=null;V(v1?"cloneParent":"cloneFolder");return}let J0=Y3(I(),M());G0(!0),_(F("newTask.clone.progressInto",{target:J0}));let T=await G3(E().trim(),J0,(g1)=>{_(g1)});if(G0(!1),!T.ok){P0(F("newTask.error.cloneFailed",{error:T.error})),V("cloneUrl");return}let D0=i().trim()||xz,T1=LJ(I().trim());J.onSubmit({repo:T.path,baseRef:D0,vendor:H(),cloned:{parentDir:T1}}),z.clear()}function y0(){let a=O1();if(a.length===0){P0(F("newTask.error.noAdoptable"));return}let R0=$0(),J0=R0.size>0?a.filter((T)=>R0.has(T.path)):a.slice(l0(),l0()+1);if(J0.length===0)return;J.onSubmit({mode:"adopt",repo:LJ(f().trim()),vendor:H(),adopt:J0.map((T)=>({worktreePath:T.path,branch:T.branch}))}),z.clear()}function u0(){if(Y()==="clone"){p0();return}if(Y()==="adopt"){y0();return}I0()}function Q1(a){if(X0())return;if(a===Y())return;X(a),V(XW(a)),P0(null)}function W1(a){if(X0())return;let R0=a===1?zW(Y()):ZW(Y());if(R0===Y())return;X(R0),P0(null),V("tabs")}function V1(a){j((R0)=>a===1?NZ(G(),R0):YB(G(),R0))}function q1(){if(!f().trim()&&b()==="saved"){let R0=x()[0];if(R0){U(R0),V("baseRef");return}}if(b()==="browse"){let J0=R()[$()],T=p();if(J0){U(IQ(f(),T.base,J0)),Q0(0),M0(!0),V("baseRef");return}V("baseRef");return}let a=x()[$()];if(a){U(a),V("baseRef");return}V("baseRef")}function S(a){let J0=x()[a];if(!J0)return;if(b()==="browse"){let T=p();U(IQ(f(),T.base,J0)),Q0(a),M0(!0),V("baseRef");return}U(J0),Q0(a),V("baseRef")}function F0(){let R0=o0()[m()],J0=h0();if(R0){N(IQ(I(),J0.base,R0)),j0(0),n(!0),V("cloneFolder");return}V("cloneFolder")}function U1(a){let J0=o0()[a];if(!J0)return;let T=h0();N(IQ(I(),T.base,J0)),j0(a),n(!0),V("cloneFolder")}let L1=()=>{let a=O1();if(a.length===0)return;let R0=a.every((J0)=>$0().has(J0.path));G1(R0?new Set:new Set(a.map((J0)=>J0.path)))};M1(()=>({bindings:[{key:"tab",cmd:()=>V((a)=>YW(a,Y()))},{key:"ctrl+]",cmd:()=>Q1(zW(Y()))},{key:"ctrl+[",cmd:()=>Q1(ZW(Y()))},{key:"ctrl+e",cmd:()=>j((a)=>NZ(G(),a))},{key:"up",cmd:()=>{if(X0())return;if(Y()==="existing"&&B()==="repo"){let a=x();if(a.length===0)return;Q0(oz($()-1,a.length));return}if(Y()==="existing"&&B()==="baseRef"){let a=b0();if(a.length===0)return;j1(oz(J1()-1,a.length));return}if(Y()==="clone"&&B()==="cloneParent"){let a=o0();if(a.length===0)return;j0(oz(m()-1,a.length));return}if(Y()==="adopt"){let a=O1();if(a.length===0)return;Y1(oz(l0()-1,a.length))}}},{key:"down",cmd:()=>{if(X0())return;if(Y()==="existing"&&B()==="repo"){let a=x();if(a.length===0)return;Q0(oz($()+1,a.length));return}if(Y()==="existing"&&B()==="baseRef"){let a=b0();if(a.length===0)return;j1(oz(J1()+1,a.length));return}if(Y()==="clone"&&B()==="cloneParent"){let a=o0();if(a.length===0)return;j0(oz(m()+1,a.length));return}if(Y()==="adopt"){let a=O1();if(a.length===0)return;Y1(oz(l0()+1,a.length))}}},...B()==="tabs"||B()==="engine"?[{key:"left",cmd:()=>B()==="tabs"?W1(-1):V1(-1)},{key:"right",cmd:()=>B()==="tabs"?W1(1):V1(1)},{key:"return",cmd:()=>V((a)=>YW(a,Y()))}]:[],...Y()==="adopt"?[{key:"ctrl+a",cmd:L1}]:[]]})),M1(()=>({enabled:B()==="confirm"&&!X0(),bindings:[{key:"return",cmd:()=>u0()}]}));let d0=(a)=>B()===a?Z.primary:Z.textMuted,t0=(a)=>B()===a?jz.BOLD|jz.UNDERLINE:void 0,v0=(a,R0)=>a?R0?jz.BOLD|jz.UNDERLINE:jz.BOLD:void 0;return(()=>{var a=W("box"),R0=W("box"),J0=W("text"),T=W("box"),D0=W("box"),T1=W("text"),g1=W("box"),n1=W("box"),v1=W("text"),fJ=W("box"),mJ=W("text"),B1=W("text");return D(a,R0),D(a,T),D(a,fJ),Q(a,"paddingLeft",2),Q(a,"paddingRight",2),Q(a,"gap",0),D(R0,J0),Q(R0,"flexDirection","row"),K(J0,()=>F("newTask.title")),D(T,D0),Q(T,"gap",1),Q(T,"paddingTop",1),Q(T,"paddingBottom",1),K(T,()=>{let l=()=>B()==="tabs",r=(o)=>o?Z.primary:Z.textMuted;return(()=>{var o=W("box"),v=W("text"),a0=W("text"),m0=W("text");return D(o,v),D(o,a0),D(o,m0),Q(o,"flexDirection","row"),Q(o,"gap",2),Q(v,"onMouseUp",()=>Q1("existing")),K(v,(()=>{var A0=C0(()=>Y()==="existing");return()=>A0()?`\u25B8 ${F("newTask.tabs.existing")}`:` ${F("newTask.tabs.existing")}`})()),Q(a0,"onMouseUp",()=>Q1("clone")),K(a0,(()=>{var A0=C0(()=>Y()==="clone");return()=>A0()?`\u25B8 ${F("newTask.tabs.clone")}`:` ${F("newTask.tabs.clone")}`})()),Q(m0,"onMouseUp",()=>Q1("adopt")),K(m0,(()=>{var A0=C0(()=>Y()==="adopt");return()=>A0()?`\u25B8 ${F("newTask.tabs.adopt")}`:` ${F("newTask.tabs.adopt")}`})()),u((A0)=>{var _0=r(Y()==="existing"),K1=v0(Y()==="existing",l()),b1=r(Y()==="clone"),MJ=v0(Y()==="clone",l()),Wz=r(Y()==="adopt"),gZ=v0(Y()==="adopt",l());return _0!==A0.e&&(A0.e=Q(v,"fg",_0,A0.e)),K1!==A0.t&&(A0.t=Q(v,"attributes",K1,A0.t)),b1!==A0.a&&(A0.a=Q(a0,"fg",b1,A0.a)),MJ!==A0.o&&(A0.o=Q(a0,"attributes",MJ,A0.o)),Wz!==A0.i&&(A0.i=Q(m0,"fg",Wz,A0.i)),gZ!==A0.n&&(A0.n=Q(m0,"attributes",gZ,A0.n)),A0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),o})()},D0),D(D0,T1),D(D0,g1),Q(D0,"gap",0),K(T1,()=>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,m0=r()?jz.BOLD:void 0;return a0!==v.e&&(v.e=Q(o,"fg",a0,v.e)),m0!==v.t&&(v.t=Q(o,"attributes",m0,v.t)),v},{e:void 0,t:void 0}),o})()}}),n1),Q(n1,"flexGrow",1),K(v1,()=>F("newTask.hint.engineCycle")),K(T,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)=>{M0(!1),U(CJ(v))}),Q(o,"onSubmit",()=>q1()),u((v)=>{var a0=d0("repo"),m0=t0("repo"),A0=f(),_0=J.defaultRepo,K1=B()==="repo";return a0!==v.e&&(v.e=Q(r,"fg",a0,v.e)),m0!==v.t&&(v.t=Q(r,"attributes",m0,v.t)),A0!==v.a&&(v.a=Q(o,"value",A0,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 C0(()=>B()==="repo"&&x().length>0)()&&!L0()},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()===$(),m0=()=>b()==="saved"&&r===J.defaultRepo,A0=()=>b()==="saved"&&f().trim()===r,_0=()=>b()==="browse"?"/":"",K1=()=>m0()?` ${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 Wz=a0()?Z.primary:A0()?Z.accent:Z.textMuted,gZ=a0()?jz.BOLD:void 0;return Wz!==MJ.e&&(MJ.e=Q(b1,"fg",Wz,MJ.e)),gZ!==MJ.t&&(MJ.t=Q(b1,"attributes",gZ,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",xz),Q(o,"onInput",(v)=>{g(!0),O(CJ(v))}),Q(o,"onSubmit",()=>{O(W3(L(),b0(),J1())),g(!0),I0()}),u((v)=>{var a0=d0("baseRef"),m0=t0("baseRef"),A0=L(),_0=B()==="baseRef";return a0!==v.e&&(v.e=Q(r,"fg",a0,v.e)),m0!==v.t&&(v.t=Q(r,"attributes",m0,v.t)),A0!==v.a&&(v.a=Q(o,"value",A0,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 C0(()=>B()==="baseRef"&&b0().length===0)()&&V0()==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=C0(()=>E0().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 C0(()=>B()==="baseRef")()&&b0().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 k0().start>0},get children(){var r=W("text");return Q(r,"wrapMode","none"),K(r,()=>F("newTask.picker.moreAbove",{count:k0().start})),u((o)=>Q(r,"fg",Z.textMuted,o)),r}}),null),K(l,k(X1,{get each(){return k0().items},children:(r,o)=>{let v=()=>k0().start+o(),a0=()=>v()===J1(),m0=()=>L().trim()===r;return(()=>{var A0=W("text");return Q(A0,"wrapMode","none"),Q(A0,"onMouseUp",()=>{O(r),g(!0),j1(v()),V("confirm")}),K(A0,()=>a0()?"\u25B8 ":" ",null),K(A0,r,null),u((_0)=>{var K1=a0()?Z.primary:m0()?Z.accent:Z.textMuted,b1=a0()?jz.BOLD:void 0;return K1!==_0.e&&(_0.e=Q(A0,"fg",K1,_0.e)),b1!==_0.t&&(_0.t=Q(A0,"attributes",b1,_0.t)),_0},{e:void 0,t:void 0}),A0})()}}),null),K(l,k(Y0,{get when(){return k0().start+k0().items.length<k0().total},get children(){var r=W("text");return Q(r,"wrapMode","none"),K(r,()=>F("newTask.picker.moreBelow",{count:k0().total-k0().start-k0().items.length})),u((o)=>Q(r,"fg",Z.textMuted,o)),r}}),null),l}})]}}),null),K(T,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=d0("cloneUrl"),m0=t0("cloneUrl"),A0=E(),_0=B()==="cloneUrl";return a0!==v.e&&(v.e=Q(r,"fg",a0,v.e)),m0!==v.t&&(v.t=Q(r,"attributes",m0,v.t)),A0!==v.a&&(v.a=Q(o,"value",A0,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=d0("cloneParent"),m0=t0("cloneParent"),A0=I(),_0=B()==="cloneParent";return a0!==v.e&&(v.e=Q(r,"fg",a0,v.e)),m0!==v.t&&(v.t=Q(r,"attributes",m0,v.t)),A0!==v.a&&(v.a=Q(o,"value",A0,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 C0(()=>B()==="cloneParent"&&o0().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 m0=W("text"),A0=T0("/");return D(m0,A0),Q(m0,"wrapMode","none"),Q(m0,"onMouseUp",()=>U1(v())),K(m0,()=>a0()?"\u25B8 ":" ",A0),K(m0,r,A0),u((_0)=>{var K1=a0()?Z.primary:Z.textMuted,b1=a0()?jz.BOLD:void 0;return K1!==_0.e&&(_0.e=Q(m0,"fg",K1,_0.e)),b1!==_0.t&&(_0.t=Q(m0,"attributes",b1,_0.t)),_0},{e:void 0,t:void 0}),m0})()}}),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=d0("cloneFolder"),m0=t0("cloneFolder"),A0=M(),_0=F("newTask.placeholder.folderName"),K1=B()==="cloneFolder";return a0!==v.e&&(v.e=Q(r,"fg",a0,v.e)),m0!==v.t&&(v.t=Q(r,"attributes",m0,v.t)),A0!==v.a&&(v.a=Q(o,"value",A0,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",xz),Q(o,"onInput",(v)=>t(CJ(v))),Q(o,"onSubmit",()=>void p0()),u((v)=>{var a0=d0("cloneBaseRef"),m0=t0("cloneBaseRef"),A0=i(),_0=B()==="cloneBaseRef";return a0!==v.e&&(v.e=Q(r,"fg",a0,v.e)),m0!==v.t&&(v.t=Q(r,"attributes",m0,v.t)),A0!==v.a&&(v.a=Q(o,"value",A0,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(T,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)=>S0(CJ(v))),Q(o,"onSubmit",()=>g0()),u((v)=>{var a0=d0("adoptFilter"),m0=t0("adoptFilter"),A0=W0(),_0=F("newTask.placeholder.adoptFilter"),K1=B()==="adoptFilter";return a0!==v.e&&(v.e=Q(r,"fg",a0,v.e)),m0!==v.t&&(v.t=Q(r,"attributes",m0,v.t)),A0!==v.a&&(v.a=Q(o,"value",A0,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 C0(()=>!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=C0(()=>(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(),m0=()=>a0()===l0(),A0=()=>$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()),U0(o.path)}),K(K1,()=>m0()?"\u25B8 ":" ",null),K(K1,()=>A0()?"[x] ":"[ ] ",null),K(K1,()=>o.branch,null),K(K1,(()=>{var b1=C0(()=>!!_0());return()=>b1()?` (${_0()})`:""})(),null),u((b1)=>{var MJ=m0()?Z.primary:A0()?Z.accent:Z.textMuted,Wz=m0()?jz.BOLD:void 0;return MJ!==b1.e&&(b1.e=Q(K1,"fg",MJ,b1.e)),Wz!==b1.t&&(b1.t=Q(K1,"attributes",Wz,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=C0(()=>$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(T,k(Y0,{get when(){return V0()},get children(){var l=W("text"),r=T0("\u203B ");return D(l,r),Q(l,"wrapMode","word"),K(l,V0,null),u((o)=>Q(l,"fg",Z.error,o)),l}}),null),D(fJ,mJ),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(mJ,()=>F("newTask.hint.legend")),Q(B1,"onMouseUp",()=>u0()),K(B1,(()=>{var l=C0(()=>!!X0());return()=>l()?F("newTask.button.cloning"):C0(()=>B()==="confirm")()?F("newTask.button.createFocused"):F("newTask.button.create")})()),u((l)=>{var r=jz.BOLD,o=Z.text,v=d0("engine"),a0=t0("engine"),m0=Z.textMuted,A0=Z.textMuted,_0=B()==="confirm"?Z.primary:Z.text,K1=B()==="confirm"?jz.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)),m0!==l.i&&(l.i=Q(v1,"fg",m0,l.i)),A0!==l.n&&(l.n=Q(mJ,"fg",A0,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}),a})()}var U3=C(()=>{P();P();P();P();P();P();P();P();BJ();s1();D1();c1();Rj();IJ();Nj();rJ();Q3();GW()});function px(J,z,Z,Y){return new Promise((X)=>{J.replace(()=>k(V3,{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 Cj;var eX=C(()=>{P();U3();GW();Cj={show:px}});function K3(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 D3}from"@opentui/core";function rx(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([]);dL((h)=>{let I=iF(new TextDecoder().decode(h.bytes));if(!I)return;h.preventDefault(),U((N)=>[...N,...I.filter((M)=>!N.includes(M))])});function L(){$F().then((h)=>{if(h)U((I)=>I.includes(h)?I:[...I,h])})}function O(h){let I=bj.indexOf(Y());X(bj[(I+h+bj.length)%bj.length]??"prompt")}function A(h){let I=J.engines;if(I.length===0)return;if(h>0){j((M)=>NZ(I,M));return}let N=Math.max(0,I.indexOf(H()));j(I[(N-1+I.length)%I.length]??H())}function g(){if(yQ(G())){X("prompt");return}J.onSubmit({prompt:G().trim(),vendor:H(),baseRef:B().trim()||J.defaultBaseRef,attachments:f()}),z.clear()}M1(()=>({enabled:!0,bindings:K3(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"),O0=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((x)=>x!==p))),K(R,()=>l8(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?D3.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(_,O0),Q(_,"paddingBottom",1),K(O0,()=>F("quickTask.legend")),u((b)=>{var p=D3.BOLD,w=Z.text,R=Z.textMuted,e=E("prompt"),x=G(),$=F("quickTask.promptPlaceholder"),Q0=Y()==="prompt",H0=E("engine"),L0=E("branch"),M0=B(),E0=J.defaultBaseRef,b0=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)),x!==b.i&&(b.i=Q(d,"value",x,b.i)),$!==b.n&&(b.n=Q(d,"placeholder",$,b.n)),Q0!==b.s&&(b.s=Q(d,"focused",Q0,b.s)),H0!==b.h&&(b.h=Q(t,"fg",H0,b.h)),L0!==b.r&&(b.r=Q(G0,"fg",L0,b.r)),M0!==b.d&&(b.d=Q(f0,"value",M0,b.d)),E0!==b.l&&(b.l=Q(f0,"placeholder",E0,b.l)),b0!==b.u&&(b.u=Q(f0,"focused",b0,b.u)),J1!==b.c&&(b.c=Q(O0,"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 ox(J,z){return new Promise((Z)=>{J.replace(()=>k(rx,lL(z,{onSubmit:(Y)=>Z(Y),onCancel:()=>Z(void 0)})),()=>Z(void 0)),J.setSize("medium")})}var bj,L3;var F3=C(()=>{P();P();P();P();P();P();P();P();D1();s1();c1();BJ();$8();IJ();rJ();eX();bj=["prompt","engine","branch"];L3={show:ox}});async function kj(J={}){let z=J.logTag??"orch-connect",Z=J.connect??qz,Y=null;try{let X=await Z();if(!X)return XZ(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 QW=C(()=>{QY();kJ();tZ()});function M3(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=(Ij.indexOf(z())+f+Ij.length)%Ij.length;q(Ij[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(sx.Provider,{value:V,get children(){return J.children}})}var Ij,sx;var O3=C(()=>{P();P();D1();Ij=["sidebar","workspace","files","terminal"],sx=vz(null)});function A3(){for(let J of eZ){let z=tx.get(J.id);if(!z)continue;let Z=J;Z.keys=[...z.keys],Z.hint=z.hint?{...z.hint}:void 0}}function R3(){ex((J)=>J+1)}function HW(J){return Ju.get(J)}function zu(J){return HW(J)?.keys??[]}function JY(J){let z=[];for(let Z in J){let Y=J[Z];if(!Y)continue;let X=zu(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 eZ,tx,qW,ex,Ju;var JG=C(()=>{D1();eZ=[{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"}}],tx=new Map(eZ.map((J)=>[J.id,{keys:[...J.keys],hint:J.hint?{...J.hint}:void 0}]));[qW,ex]=s(0);Ju=new Map(eZ.map((J)=>[J.id,J]))});function Sj(){if(zY)return zY;let J=rq();if(!J.exists)return zY={path:J.path,exists:!1,applied:[],warnings:[]},zY;let z=[...J.warnings],Z=sq(J.doc,process.platform,{chordOptsFor:y9});z.push(...Z.warnings);let Y=Z.entries.filter((H)=>H.id.startsWith("tmux.")),X=Z.entries.filter((H)=>!H.id.startsWith("tmux.")),G=ZK(eZ,X);z.push(...G.warnings);let q=[...G.applied];if(Y.length>0){let H=S9(Y);z.push(...H.warnings);for(let j of H.overridden){if(j===cz){q.push({id:j,keys:H.focus.map((f)=>f?.chord??"").filter((f)=>f!==""),defaultKeys:vZ});continue}let B=H.binds[j];q.push({id:j,keys:B?[B.chord]:[],defaultKeys:[gY[j]]});let V=eZ.find((f)=>f.id===j);if(V?.hint)V.hint.keys=B?`${VX(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 g3(){return zY??Sj()}function N3(){zY=null,zK(),QK(),A3();let J=Sj();return R3(),J}var zY=null;var jW=C(()=>{k9();JH();tq();JG()});var Zu=250,zG,C3;var xQ=C(()=>{pX();wz();h8();({use:zG,provider:C3}=Mj({name:"KV",init:()=>{let[J,z]=rz(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 kZ(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")},Zu)}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{SV({})}catch(H){console.error("[kobe] kv clear write failed:",H)}}};return q}}))});var yj="../pulse-n3cq1btw.wav";var b3=()=>{};import{existsSync as Xu,mkdirSync as Gu}from"fs";import{tmpdir as Qu}from"os";import{basename as qu,isAbsolute as Hu,join as BW,resolve as ju}from"path";function fu(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 Wu(){if(Tj!==void 0)return Tj;let z=(process.env.PATH??"").split(":").filter(Boolean);return Tj=Bu.find((Z)=>z.some((Y)=>Xu(BW(Y,Z))))??null,Tj}async function Vu(){return S3??=(async()=>{Gu(I3,{recursive:!0});let J=BW(I3,qu(k3)),z=Bun.file(J);if(await z.exists())return J;return await Bun.write(z,Bun.file(k3)),J})(),S3}function y3(J=0.4){let z=Wu();if(!z)return;Vu().then((Z)=>{try{Bun.spawn(fu(z,Z,J),{stdin:"ignore",stdout:"ignore",stderr:"ignore"}).unref?.()}catch{}}).catch(()=>{return})}var k3,I3,Bu,Tj,S3;var T3=C(()=>{b3();k3=Hu(yj)?yj:ju(import.meta.dir,yj),I3=BW(Qu(),"kobe-sfx"),Bu=["ffplay","mpv","mpg123","mpg321","mplayer","afplay","play","omxplayer","aplay","cmdmp3","cvlc","powershell.exe"]});function x3(J,z){return`${J}:${z}`}function E3(J){let z=zG(),[Z,Y]=s([]),[X,G]=s(new Map),q=Aj(),H=0;function j(U){if(G((O)=>{let A=new Map(O),g=x3(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{}y3()}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),Uu)}}function B(U){Y((L)=>L.filter((O)=>O.id!==U))}function V(U,L){G((O)=>{let A=x3(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(u3.Provider,{value:f,get children(){return J.children}})}function xj(){let J=lJ(u3);if(!J)throw Error("useNotifications must be used within a NotificationsProvider");return J}var Uu=4500,u3;var uj=C(()=>{P();D1();r8();T3();xQ();u3=vz()});function fW(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=Du(z.focusAccent);if(Z&&Z!==J.focusAccent())J.setFocusAccent(Z)}}function Du(J){if(J===null)return"primary";return Ku.includes(J)?J:null}var Ku;var w3=C(()=>{Ku=["primary","success","info"]});function Fu(J,z=Date.now){let Z=Number.NEGATIVE_INFINITY,Y=!0;return async()=>{if(z()-Z<Lu)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 Lu=3000,uz;var ZG=C(()=>{w1();uz=Fu(()=>c0(["display-message","-p","#{session_attached}"]))});import{readFileSync as Mu}from"fs";function P3(J){try{let z=JSON.parse(Mu(tJ(),"utf8")),Z=typeof z.activeTheme==="string"&&NQ(z.activeTheme)?z.activeTheme:J,Y=z.transparentBackground===!0,X=typeof z.focusAccent==="string"&&cY.includes(z.focusAccent)?z.focusAccent:null,G=CQ(z[Ej])?z[Ej]:sX;return{theme:Z,transparent:Y,focusAccent:X,locale:G}}catch{return{theme:J,transparent:!1,focusAccent:null,locale:sX}}}var Ej="locale";var WW=C(()=>{t1();c1();tX()});function Au(J){if(J)Yq(J);_V(),Sj();for(let{name:z,theme:Z}of mG())m8(z,Z)}function Ru(J){let z={backgroundColor:"transparent",externalOutputMode:"passthrough",exitOnCtrlC:!1,screenMode:"alternate-screen",useKittyKeyboard:{}};return J?{...z,onDestroy:J}:z}function gu(J){let z=()=>J.children,Z=()=>J.notifications?k(E3,{get children(){return z()}}):z(),Y=()=>k(rF,{get children(){return Z()}}),X=()=>J.focus?k(M3,{initial:"sidebar",get children(){return Y()}}):Y(),G=()=>J.kv?k(C3,{get children(){return X()}}):X();return k(XF,{mode:"dark",get theme(){return J.theme},get children(){return G()}})}function Nu(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 ku(){let J=GJ();return a1(()=>{if(!J)return;let z=J.targetFps,Z=setInterval(()=>{uz().then((Y)=>{let X=Y?z:Cu;if(J.targetFps!==X)J.targetFps=X})},bu);C1(()=>clearInterval(Z))}),null}function Iu(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 mG())m8(H,j)},transparentBackground:()=>z.transparentBackground,setTransparentBackground:(H)=>z.setTransparentBackground(H),focusAccent:()=>z.focusAccent,setFocusAccent:(H)=>z.setFocusAccent(H)};fW(Z,{theme:J.boot.theme,transparentBackground:J.boot.transparent,focusAccent:J.boot.focusAccent}),bQ(J.boot.locale);let[Y,X]=s(null),G=!1;a1(()=>{(async()=>{let H=await kj({logTag:"ui-prefs",channels:["ui-prefs","keybindings"]});if(!H)return;if(G){H.dispose();return}X(H)})()}),n0(()=>{let H=Y()?.uiPrefsSignal()();if(!H)return;if(fW(Z,H),CQ(H.locale))bQ(H.locale)});let q=null;return n0(()=>{let H=Y()?.keybindingsRevSignal()();if(H==null)return;if(q===null||H===q){q=H;return}q=H,N3()}),C1(()=>{G=!0,Y()?.dispose()}),null}async function FJ(J){Au(J.logContext);let z=P3(Ou),Z=await J.setup(z),Y=J.providers?.kv??!0,X=J.providers?.focus??!0,G=J.providers?.notifications??!1;await sL(()=>k(gu,{get theme(){return z.theme},kv:Y,focus:X,notifications:G,get children(){return[k(Iu,{boot:z}),k(ku,{}),k(RU,{fallback:(j)=>k(Nu,{error:j}),get children(){return Z.root()}})]}}),Ru(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 Ou="claude",Cu=2,bu=3000;var AZ=C(()=>{P();P();P();P();P();P();P();QY();D1();QW();O3();jW();xQ();uj();c1();fH();BJ();rJ();w3();ZG();WW()});var VW={};H1(VW,{togglePreviewMode:()=>Su,previewModeEnabled:()=>v3});function v3(J){return dJ(h3(J),!1)}function Su(J){let z=!v3(J);return sQ(h3(J),z),z}var h3=(J)=>`preview.${J}`;var UW=C(()=>{wz()});import{homedir as yu}from"os";async function KW(J,z,Z,Y,X={}){let G=y1(z.id);if(await F1(G))return!0;let{archivedHistoryPreviewEnabled:q}=await Promise.resolve().then(() => (pq(),rU));if(z.archived&&q()){let{ensureSession:L}=await Promise.resolve().then(() => (HJ(),PJ)),O=z.worktreePath??"",A=O&&PZ(O)?O:Z&&PZ(Z)?Z:yu();if(!await L({name:G,cwd:A,command:EJ(Y),taskId:z.id,vendor:Y,repo:Z,archived:!0,archivedWorktree:O||A,title:z.title}))throw new RZ("session",`failed to start history session for ${z.id}`);return!1}let H=z.worktreePath;if(!H||!PZ(H)){if(!J)throw new RZ("no-daemon",`no daemon; cannot materialise worktree for ${z.id}`);try{H=await J.ensureWorktree(z.id)}catch(L){throw new RZ("worktree",`ensureWorktree failed for ${z.id}`,L)}await X.reload?.()}if(!H||!PZ(H))throw new RZ("worktree",`task ${z.id} has no usable worktree`);let{ensureSession:j}=await Promise.resolve().then(() => (HJ(),PJ)),{previewModeEnabled:B}=await Promise.resolve().then(() => (UW(),VW));if(B(z.id)&&q()){if(!await j({name:G,cwd:H,command:EJ(Y),taskId:z.id,vendor:Y,repo:Z,preview:!0,archivedWorktree:H,title:z.title}))throw new RZ("session",`failed to start preview session for ${z.id}`);return!1}let{resolveEngineLaunchInit:V}=await Promise.resolve().then(() => (EX(),_H)),f=Z?V(Z,H,{kind:X.includeInitPrompt?"repo-init":"none"}):void 0;if(!await j({name:G,cwd:H,command:EJ(Y),taskId:z.id,vendor:Y,repo:Z,launchInit:f}))throw new RZ("session",`failed to start tmux session for ${z.id}`);return!1}async function DW(J,z,Z,Y,X={}){let G=y1(z.id),q=await Promise.resolve().then(() => (HJ(),PJ));if(X.captureFrom){let B=await q.currentSessionName();if(B&&B!==G)await q.captureGlobalLayout(B)}if(await KW(J,z,Z,Y,{includeInitPrompt:X.includeInitPrompt,reload:X.reload})&&X.heal)try{let B=await IY(G,"@kobe_worktree")||z.worktreePath||"";if(B&&PZ(B)){let{resolveEngineLaunchInit:V}=await Promise.resolve().then(() => (EX(),_H)),f=Z?V(Z,B,{kind:X.includeInitPrompt?"repo-init":"none"}):void 0;await q.ensureSession({name:G,cwd:B,command:EJ(Y),taskId:z.id,vendor:Y,repo:Z,launchInit:f})}}catch(B){console.error("[kobe handover] heal failed (continuing to switch):",B)}let{syncSessionZen:j}=await Promise.resolve().then(() => (dZ(),_9));if(await j(G),X.isCurrent&&!X.isCurrent())return;await J?.setActiveTask(z.id).catch(()=>{}),await q.enterWindow(G)}async function wj(J,z,Z,Y,X={}){await DW(J,z,Z,Y,{includeInitPrompt:X.includeInitPrompt})}var RZ;var Pj=C(()=>{Xz();Az();w1();RZ=class RZ extends Error{phase;cause;constructor(J,z,Z){super(z);this.name="HandoverError",this.phase=J,this.cause=Z}}});var m3={};H1(m3,{startNewTaskHost:()=>Tu,NewTaskPage:()=>hj});function hj(J){let{theme:z}=w0(),Z=_1();a1(()=>{Y()});async function Y(){let X=SJ(),G=J.defaultRepo||X[0]||process.cwd(),q=cJ(x1("lastSelectedVendor"),nJ()),H=await GZ(),j=J.orchestrator,B=await Cj.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),JZ(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 wj(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 Tu(J){await FJ({setup:async()=>{let z=null;try{let Z=await Sz(),Y=new NJ(Z);await Y.init(),z=Y}catch(Z){console.error("[kobe new-task] daemon unavailable; cannot create task:",Z)}return{root:()=>k(hj,{get defaultRepo(){return J.defaultRepo},orchestrator:z}),onDestroy:()=>{z?.dispose()}}}})}var LW=C(()=>{P();P();P();P();kJ();D1();tZ();qY();S1();s1();eX();c1();AZ();Pj();rJ()});function vj(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 c3(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 xu(J,z){let Z=z==="archived";return J.filter((Y)=>Y.archived===Z)}function FW(J,z,Z,Y="default",X){let G=xu(J,z),q=Z?.trim()??"",H=X?Bz(X):null,j=q?G.filter((A)=>c3(q,`${A.title} ${Ez(A.repo)}`)):G,B=[],V=[],f=[],U=new Set;for(let A of j){if(A.kind==="main"){let g=Bz(A.repo);if(U.has(g))continue;U.add(g),B.push(A);continue}if(H&&Bz(A.repo)!==H)continue;if(A.pinned===!0)V.push(A);else f.push(A)}if(B.sort((A,g)=>Ez(A.repo).localeCompare(Ez(g.repo))),Y==="recent")V.sort(d3),f.sort(d3);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 d3(J,z){let Z=n3(z)-n3(J);if(Z!==0)return Z;return String(z.id).localeCompare(String(J.id))}function n3(J){let z=Date.parse(J.updatedAt||J.createdAt);return Number.isFinite(z)?z:0}function Ez(J){let z=J.split("/").filter(Boolean);return z[z.length-1]??J}function Bz(J){return J.trim().replace(/[\\/]+$/,"")||J}function uu(J,z){let Z=Ez(J);if(!z.some((X)=>X!==J&&Ez(X)===Z))return Z;return J.replace(/[\\/]+$/,"").split(/[\\/]+/).slice(-2).join("/")}function i3(J,z){let Z=z==="archived",Y=new Map;for(let G of J){let q=Bz(G.repo),H=Y.get(q)??{repo:G.repo,count:0};if(G.kind==="main")H.repo=G.repo;else if(G.archived===Z)H.count+=1;Y.set(q,H)}let X=[...Y.values()].map((G)=>G.repo);return[...Y.values()].map((G)=>({repo:G.repo,label:uu(G.repo,X),count:G.count})).sort((G,q)=>G.label.localeCompare(q.label))}function l3(J,z){if(J.length===0)return-1;if(!z)return J[0]?.flatIndex??-1;let Z=Bz(z),Y=J.find((G)=>G.task.kind!=="main"&&Bz(G.task.repo)===Z);if(Y)return Y.flatIndex;return J.find((G)=>G.task.kind==="main"&&Bz(G.task.repo)===Z)?.flatIndex??J[0]?.flatIndex??-1}function MW(J){return J.map((z)=>z.task.id)}function $3(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 a3(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 Eu(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 _3(J,z){return vj(J,z,(Z)=>Z.task.id,(Z,Y)=>Z.flatIndex===Y.flatIndex&&Eu(Z.task,Y.task),{samePosition:!0})}var mj=()=>{};var p3={};H1(p3,{startQuickTaskHost:()=>vu});async function wu(J,z){let Z,Y;if(z){let f=await wJ(z,["@kobe_task","@kobe_worktree"]);Z=f["@kobe_task"]||void 0,Y=f["@kobe_worktree"]||void 0}let X=(Z?J?.getTask(Z)?.repo:void 0)??SJ()[0],G=X??Y??process.cwd();if(!X)return{ctx:null,fallbackRepo:G};let q=await GZ(),H=cJ(x1("lastSelectedVendor"),nJ()),j=q.length===0||q.includes(H)?H:q[0]??H,B=kQ(LJ(X))??xz,V=q.length>0?q:[j];return{ctx:{repo:X,vendor:j,baseRef:B,engines:V},fallbackRepo:G}}async function Pu(J,z,Z,Y,X){let G=await KW(J,z,Z,Y),q=y1(z.id),{pane:H}=await PG(q,!G);if(H)await hG(H,X)}function hu(J){let{theme:z}=w0(),Z=_1();a1(()=>{Y()});async function Y(){let X=J.ctx,G=await L3.show(Z,{repoLabel:Ez(X.repo),engines:X.engines,defaultVendor:X.vendor,defaultBaseRef:X.baseRef,engineLabel:MY});if(G===void 0)process.exit(0);QJ("lastSelectedVendor",G.vendor),JZ(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 Pu(q,H,X.repo,G.vendor,lF(G.prompt,G.attachments)),await wj(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 vu(J){await FJ({setup:async()=>{let z=null;try{let X=await Sz(),G=new NJ(X);await G.init(),z=G}catch(X){console.error("[kobe quick-task] daemon unavailable; cannot create task:",X)}let{ctx:Z,fallbackRepo:Y}=await wu(z,J.session);return{root:()=>Z?k(hu,{ctx:Z,orchestrator:z}):k(hj,{defaultRepo:Y,orchestrator:z}),onDestroy:()=>{z?.dispose()}}}})}var r3=C(()=>{P();P();P();P();kJ();D1();tZ();qY();Xz();S1();w1();zH();s1();F3();c1();$8();Rj();AZ();Nj();Pj();LW();mj();rJ()});function dj(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 cj(J,z){if(J.includes("/"))return J.split("/").map((X)=>cj(X,z)).join("/");let Z=J.toLowerCase();if(Z==="tab")return"tab";let Y=cu[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 YG(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("+")?YG(H,z):cj(H,!0)}`}let X=Z.split("+");if(X.length===1)return cj(X[0]??"",!1);let G=X[X.length-1]??"";return`${X.slice(0,-1).map((H)=>mu[H.toLowerCase().trim()]??H).join("")} ${cj(G,!0)}`}var mu,cu;var OW=C(()=>{mu={ctrl:"\u2303",control:"\u2303",alt:"\u2325",opt:"\u2325",option:"\u2325",shift:"\u21E7",cmd:"\u2318",command:"\u2318",meta:"\u2318",super:"\u2318"},cu={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 o3}from"@opentui/core";function du(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 XG(J={}){let z=_1(),{theme:Z}=w0(),Y=()=>du(eZ),X=()=>J.onClose?J.onClose():z.clear(),[G,q]=s("\u2303B");return a1(()=>{c0(["show-options","-g","prefix"]).then(({code:H,stdout:j})=>{if(H!==0)return;let B=dj(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,()=>n8("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":YG(E,G()),I=()=>(g.hint?g.keys:g.keys.slice(1)).map((N)=>YG(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,()=>n8("desc",g.id)),K(N,(()=>{var i=C0(()=>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=o3.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=o3.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 AW=C(()=>{P();P();P();P();P();P();P();D1();w1();JG();c1();BJ();OW();IJ();rJ();XG.show=(J)=>{J.replace(()=>k(XG,{}))}});import{TextAttributes as nu}from"@opentui/core";function s3(J){let z=_1(),{theme:Z}=w0(),[Y,X]=s(J.currentTitle);function G(){let q=Y().trim();if(yQ(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,T0("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=nu.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 t3=C(()=>{P();P();P();P();P();P();P();BJ();D1();c1();rJ();eX()});function iu(J,z,Z={}){return new Promise((Y)=>{J.replace(()=>k(s3,{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 sz;var RW=C(()=>{P();t3();sz={show:iu}});import{TextAttributes as lu}from"@opentui/core";function $u(J){if(!J)return J;return J.charAt(0).toUpperCase()+J.slice(1)}function fz(J){let z=_1(),{theme:Z}=w0(),[Y,X]=rz({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,T0("esc")),Q(j,"onMouseUp",()=>z.clear()),K(B,()=>J.message),Q(V,"flexDirection","row"),Q(V,"justifyContent","flex-end"),Q(V,"paddingTop",1),K(V,k(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,()=>$u(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=lu.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 nj=C(()=>{P();P();P();P();P();P();P();BJ();D1();pX();c1();IJ();rJ();fz.show=(J,z,Z,Y,X,G)=>{return new Promise((q)=>{J.replace(()=>k(fz,{title:z,message:Z,onConfirm:()=>q(!0),onCancel:()=>q(!1),label:Y,confirmLabel:X,get initialActive(){return G?.initialActive}}),()=>q(void 0)),J.setSize("small")})}});import{unlinkSync as au}from"fs";import{join as _u}from"path";function e3(J){return J instanceof NJ}function JM(J,z){try{J?.destroy()}catch(Z){console.error(`kobe: renderer.destroy() failed during ${z}:`,Z)}}async function gW(J,z,Z){if(await fz.show(J,"Reset UI state?","Wipes ~/.config/kobe/state.json and ~/.kobe/tasks.json, then quits kobe \u2014 relaunch for a fresh start with empty Working session / Archive lists. Worktrees on disk and Claude Code session history are NOT touched.","cancel")!==!0)return;z.clear();try{au(_u(sJ(),".kobe","tasks.json"))}catch(X){if(X.code!=="ENOENT")console.error("kobe: failed to delete tasks.json during reset:",X)}JM(Z,"reset"),process.stderr.write(`kobe: UI state reset. Relaunch kobe to start fresh.
|
|
268
|
+
`),process.exit(0)}async function NW(J,z,Z){if(!(z instanceof NJ))return;if(await fz.show(J,"Restart backend?","Quits this kobe window. Relaunch to (re)spawn the daemon. Any other attached windows keep their connection. In v0.6 the daemon's RPC surface shrank to task CRUD + subscribe, so a graceful daemon.stop RPC is no longer plumbed through the client \u2014 quit + relaunch is the path.","cancel")!==!0)return;JM(Z,"daemon restart"),process.stderr.write(`kobe: window closed. Relaunch kobe to start fresh.
|
|
269
|
+
`),process.exit(0)}var zM=C(()=>{tZ();t1();nj()});function pu(J){return`theme:${J}`}function CW(J){return`language:${J}`}function bW(J){return`accent:${J}`}function ru(J){return`engine:${J}`}function uQ(J){return`surface:${J}`}function kW(J){return[...J.themeNames.map((z)=>({id:pu(z),kind:"theme",name:z})),...rX.map((z)=>({id:CW(z.id),kind:"language",locale:z.id})),{id:"transparent",kind:"transparent"},...J.focusAccentSlots.map((z)=>({id:bW(z),kind:"focusAccent",slot:z})),{id:"toast",kind:"toast"},{id:"sound",kind:"sound"},{id:"zen-keep-tasks",kind:"zenKeepTasks"},{id:uQ("chattab"),kind:"surface",surface:"chattab"},{id:uQ("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 ou(J){return[...J.map((z)=>({id:ru(z),kind:"engine",vendor:z})),{id:"add-engine",kind:"engineAdd"}]}function su(){return[{id:"feedback-title",kind:"feedbackTitle"},{id:"feedback-body",kind:"feedbackBody"},{id:"feedback-send",kind:"feedbackSend"}]}function GG(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 ZM(J,z){switch(J){case"general":return kW(z);case"engines":return ou(z.engineList);case"accounts":case"keys":return[];case"feedback":return su();case"dev":return GG(z.hasDaemon)}}function QG(J,z){return J.findIndex((Z)=>Z.id===z)}function ij(J,z){return J[z]}var nY;var IW=C(()=>{tX();nY=[{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 YM(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:nY,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 XM(J){let z=w0(),{theme:Z}=z,Y=()=>kW({themeNames:J.themeNames(),focusAccentSlots:cY}),X=(i)=>QG(Y(),i),G=()=>X("transparent"),q=()=>X("toast"),H=()=>X("sound"),j=()=>X("zen-keep-tasks"),B=()=>X(uQ("chattab")),V=()=>X(uQ("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"),O0=W("text"),b=W("box"),p=W("text"),w=W("text"),R=W("box"),e=W("text"),x=W("box"),$=W("text"),Q0=W("text"),H0=W("box"),L0=W("text"),M0=W("text"),E0=W("box"),b0=W("text"),J1=T0(" "),j1=W("box"),k0=W("text"),h0=T0(" "),N0=W("box"),o0=W("text"),m=W("text"),j0=W("box"),z0=W("text"),x0=T0(" "),n=W("box"),W0=W("text"),S0=W("text"),l0=W("box"),Y1=W("text"),$0=T0(" "),G1=W("box"),R1=W("text"),O1=T0(" "),Z0=W("box"),q0=W("text"),U0=W("text"),g0=W("box"),V0=W("text"),P0=W("box"),I0=W("text"),p0=W("box"),y0=W("text"),u0=W("text"),Q1=W("box"),W1=W("text"),V1=W("box"),q1=W("text");return D(i,t),D(i,X0),D(i,G0),D(i,f0),D(i,b),D(i,x),D(i,H0),D(i,N0),D(i,n),D(i,Z0),D(i,p0),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 d0=W("box"),t0=W("text");return D(d0,t0),Q(d0,"flexDirection","row"),Q(d0,"gap",1),Q(d0,"paddingLeft",1),Q(d0,"paddingRight",1),Q(d0,"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((v0)=>{var a=U1()?Z.primary:void 0,R0=U1()?Z.selectedListItemText:L1()?Z.accent:Z.text,J0=U1()||L1()?s0.BOLD:void 0;return a!==v0.e&&(v0.e=Q(d0,"backgroundColor",a,v0.e)),R0!==v0.t&&(v0.t=Q(t0,"fg",R0,v0.t)),J0!==v0.a&&(v0.a=Q(t0,"attributes",J0,v0.a)),v0},{e:void 0,t:void 0,a:void 0}),d0})()}})),D(f0,_),D(f0,O0),Q(f0,"flexDirection","column"),Q(f0,"gap",0),Q(f0,"paddingTop",1),K(_,()=>F("settings.general.language")),Q(O0,"wrapMode","word"),K(O0,()=>F("settings.general.languageHint")),K(f0,k(X1,{each:rX,children:(S)=>{let F0=()=>X(CW(S.id)),U1=()=>J.level()==="body"&&J.bodyRow()===F0(),L1=()=>J.currentLocale()===S.id;return(()=>{var d0=W("box"),t0=W("text");return D(d0,t0),Q(d0,"flexDirection","row"),Q(d0,"gap",1),Q(d0,"paddingLeft",1),Q(d0,"paddingRight",1),Q(d0,"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((v0)=>{var a=U1()?Z.primary:void 0,R0=U1()?Z.selectedListItemText:L1()?Z.accent:Z.text,J0=U1()||L1()?s0.BOLD:void 0;return a!==v0.e&&(v0.e=Q(d0,"backgroundColor",a,v0.e)),R0!==v0.t&&(v0.t=Q(t0,"fg",R0,v0.t)),J0!==v0.a&&(v0.a=Q(t0,"attributes",J0,v0.a)),v0},{e:void 0,t:void 0,a:void 0}),d0})()}}),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=C0(()=>!!z.transparentBackground);return()=>S()?F("settings.general.on"):F("settings.general.off")})()),D(x,$),D(x,Q0),Q(x,"flexDirection","column"),Q(x,"gap",0),Q(x,"paddingTop",1),K($,()=>F("settings.general.focusAccent")),Q(Q0,"wrapMode","word"),K(Q0,()=>F("settings.general.focusAccentHint")),K(x,k(X1,{each:cY,children:(S)=>{let F0=()=>X(bW(S)),U1=()=>J.level()==="body"&&J.bodyRow()===F0(),L1=()=>z.focusAccent===S;return(()=>{var d0=W("box"),t0=W("text");return D(d0,t0),Q(d0,"flexDirection","row"),Q(d0,"gap",1),Q(d0,"paddingLeft",1),Q(d0,"paddingRight",1),Q(d0,"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((v0)=>{var a=U1()?Z.primary:void 0,R0=U1()?Z.selectedListItemText:L1()?Z.focusAccent:Z.text,J0=U1()||L1()?s0.BOLD:void 0;return a!==v0.e&&(v0.e=Q(d0,"backgroundColor",a,v0.e)),R0!==v0.t&&(v0.t=Q(t0,"fg",R0,v0.t)),J0!==v0.a&&(v0.a=Q(t0,"attributes",J0,v0.a)),v0},{e:void 0,t:void 0,a:void 0}),d0})()}}),null),D(H0,L0),D(H0,M0),D(H0,E0),D(H0,j1),Q(H0,"flexDirection","column"),Q(H0,"gap",0),Q(H0,"paddingTop",1),K(L0,()=>F("settings.general.notifications")),Q(M0,"wrapMode","word"),K(M0,()=>F("settings.general.notificationsHint")),D(E0,b0),Q(E0,"flexDirection","row"),Q(E0,"gap",1),Q(E0,"paddingLeft",1),Q(E0,"paddingRight",1),Q(E0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(q()),J.toggleToast()}),D(b0,J1),Q(b0,"wrapMode","none"),K(b0,()=>J.toastEnabled()?"[x]":"[ ]",J1),K(b0,()=>F("settings.general.toast"),null),D(j1,k0),Q(j1,"flexDirection","row"),Q(j1,"gap",1),Q(j1,"paddingLeft",1),Q(j1,"paddingRight",1),Q(j1,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(H()),J.toggleSound()}),D(k0,h0),Q(k0,"wrapMode","none"),K(k0,()=>J.soundEnabled()?"[x]":"[ ]",h0),K(k0,()=>F("settings.general.sound"),null),D(N0,o0),D(N0,m),D(N0,j0),Q(N0,"flexDirection","column"),Q(N0,"gap",0),Q(N0,"paddingTop",1),K(o0,()=>F("settings.general.zen")),Q(m,"wrapMode","word"),K(m,()=>F("settings.general.zenHint")),D(j0,z0),Q(j0,"flexDirection","row"),Q(j0,"gap",1),Q(j0,"paddingLeft",1),Q(j0,"paddingRight",1),Q(j0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(j()),J.toggleZenKeepsTasks()}),D(z0,x0),Q(z0,"wrapMode","none"),K(z0,()=>J.zenKeepsTasks()?"[x]":"[ ]",x0),K(z0,()=>F("settings.general.zenKeepTasks"),null),D(n,W0),D(n,S0),D(n,l0),D(n,G1),Q(n,"flexDirection","column"),Q(n,"gap",0),Q(n,"paddingTop",1),K(W0,()=>F("settings.general.surface")),Q(S0,"wrapMode","word"),K(S0,()=>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(G1,R1),Q(G1,"flexDirection","row"),Q(G1,"gap",1),Q(G1,"paddingLeft",1),Q(G1,"paddingRight",1),Q(G1,"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,U0),D(Z0,g0),D(Z0,P0),Q(Z0,"flexDirection","column"),Q(Z0,"gap",0),Q(Z0,"paddingTop",1),K(q0,()=>F("settings.general.editor")),Q(U0,"wrapMode","word"),K(U0,()=>F("settings.general.editorHint")),D(g0,V0),Q(g0,"flexDirection","row"),Q(g0,"gap",1),Q(g0,"paddingLeft",1),Q(g0,"paddingRight",1),Q(g0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(f()),J.cycleEditorKind()}),Q(V0,"wrapMode","none"),K(V0,()=>F("settings.general.editorRow",{kind:J.editorKind()})),D(P0,I0),Q(P0,"flexDirection","row"),Q(P0,"gap",1),Q(P0,"paddingLeft",1),Q(P0,"paddingRight",1),Q(P0,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(U()),J.editEditorCustom()}),Q(I0,"wrapMode","none"),K(I0,()=>F("settings.general.editorCustom",{cmd:J.editorCustomCommand().trim()||F("settings.general.editorCustomUnset")})),D(p0,y0),D(p0,u0),D(p0,Q1),D(p0,V1),Q(p0,"flexDirection","column"),Q(p0,"gap",0),Q(p0,"paddingTop",1),K(y0,()=>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,q1),Q(V1,"flexDirection","row"),Q(V1,"gap",1),Q(V1,"paddingLeft",1),Q(V1,"paddingRight",1),Q(V1,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(O()),J.editWorktreeCustom()}),Q(q1,"wrapMode","none"),K(q1,()=>F("settings.general.worktreeCustom",{path:J.worktreeCustomPath()||F("settings.general.worktreeCustomUnset")})),u((S)=>{var F0=Z.text,U1=s0.BOLD,L1=Z.textMuted,d0=Z.text,t0=s0.BOLD,v0=Z.textMuted,a=Z.text,R0=s0.BOLD,J0=Z.textMuted,T=A()?Z.primary:void 0,D0=A()?Z.selectedListItemText:z.transparentBackground?Z.accent:Z.textMuted,T1=s0.BOLD,g1=Z.text,n1=s0.BOLD,v1=Z.textMuted,fJ=Z.text,mJ=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,m0=s0.BOLD,A0=Z.text,_0=s0.BOLD,K1=Z.textMuted,b1=h()?Z.primary:void 0,MJ=h()?Z.selectedListItemText:J.zenKeepsTasks()?Z.accent:Z.textMuted,Wz=s0.BOLD,gZ=Z.text,lW=s0.BOLD,$W=Z.textMuted,aW=I()?Z.primary:void 0,_W=I()?Z.selectedListItemText:J.settingsSurface()==="chattab"?Z.accent:Z.textMuted,pW=s0.BOLD,rW=N()?Z.primary:void 0,oW=N()?Z.selectedListItemText:J.settingsSurface()==="taskpanel"?Z.accent:Z.textMuted,sW=s0.BOLD,tW=Z.text,eW=s0.BOLD,JV=Z.textMuted,zV=M()?Z.primary:void 0,ZV=M()?Z.selectedListItemText:Z.accent,YV=s0.BOLD,XV=y()?Z.primary:void 0,GV=y()?Z.selectedListItemText:J.editorKind()==="custom"?Z.text:Z.textMuted,QV=Z.text,qV=s0.BOLD,HV=Z.textMuted,jV=c()?Z.primary:void 0,BV=c()?Z.selectedListItemText:Z.accent,fV=s0.BOLD,WV=d()?Z.primary:void 0,VV=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)),d0!==S.o&&(S.o=Q(_,"fg",d0,S.o)),t0!==S.i&&(S.i=Q(_,"attributes",t0,S.i)),v0!==S.n&&(S.n=Q(O0,"fg",v0,S.n)),a!==S.s&&(S.s=Q(p,"fg",a,S.s)),R0!==S.h&&(S.h=Q(p,"attributes",R0,S.h)),J0!==S.r&&(S.r=Q(w,"fg",J0,S.r)),T!==S.d&&(S.d=Q(R,"backgroundColor",T,S.d)),D0!==S.l&&(S.l=Q(e,"fg",D0,S.l)),T1!==S.u&&(S.u=Q(e,"attributes",T1,S.u)),g1!==S.c&&(S.c=Q($,"fg",g1,S.c)),n1!==S.w&&(S.w=Q($,"attributes",n1,S.w)),v1!==S.m&&(S.m=Q(Q0,"fg",v1,S.m)),fJ!==S.f&&(S.f=Q(L0,"fg",fJ,S.f)),mJ!==S.y&&(S.y=Q(L0,"attributes",mJ,S.y)),B1!==S.g&&(S.g=Q(M0,"fg",B1,S.g)),l!==S.p&&(S.p=Q(E0,"backgroundColor",l,S.p)),r!==S.b&&(S.b=Q(b0,"fg",r,S.b)),o!==S.T&&(S.T=Q(b0,"attributes",o,S.T)),v!==S.A&&(S.A=Q(j1,"backgroundColor",v,S.A)),a0!==S.O&&(S.O=Q(k0,"fg",a0,S.O)),m0!==S.I&&(S.I=Q(k0,"attributes",m0,S.I)),A0!==S.S&&(S.S=Q(o0,"fg",A0,S.S)),_0!==S.W&&(S.W=Q(o0,"attributes",_0,S.W)),K1!==S.C&&(S.C=Q(m,"fg",K1,S.C)),b1!==S.B&&(S.B=Q(j0,"backgroundColor",b1,S.B)),MJ!==S.v&&(S.v=Q(z0,"fg",MJ,S.v)),Wz!==S.k&&(S.k=Q(z0,"attributes",Wz,S.k)),gZ!==S.x&&(S.x=Q(W0,"fg",gZ,S.x)),lW!==S.j&&(S.j=Q(W0,"attributes",lW,S.j)),$W!==S.q&&(S.q=Q(S0,"fg",$W,S.q)),aW!==S.z&&(S.z=Q(l0,"backgroundColor",aW,S.z)),_W!==S.P&&(S.P=Q(Y1,"fg",_W,S.P)),pW!==S.H&&(S.H=Q(Y1,"attributes",pW,S.H)),rW!==S.F&&(S.F=Q(G1,"backgroundColor",rW,S.F)),oW!==S.M&&(S.M=Q(R1,"fg",oW,S.M)),sW!==S.D&&(S.D=Q(R1,"attributes",sW,S.D)),tW!==S.R&&(S.R=Q(q0,"fg",tW,S.R)),eW!==S.E&&(S.E=Q(q0,"attributes",eW,S.E)),JV!==S.L&&(S.L=Q(U0,"fg",JV,S.L)),zV!==S.N&&(S.N=Q(g0,"backgroundColor",zV,S.N)),ZV!==S.G&&(S.G=Q(V0,"fg",ZV,S.G)),YV!==S.U&&(S.U=Q(V0,"attributes",YV,S.U)),XV!==S.K&&(S.K=Q(P0,"backgroundColor",XV,S.K)),GV!==S.V&&(S.V=Q(I0,"fg",GV,S.V)),QV!==S.Y&&(S.Y=Q(y0,"fg",QV,S.Y)),qV!==S.J&&(S.J=Q(y0,"attributes",qV,S.J)),HV!==S.Q&&(S.Q=Q(u0,"fg",HV,S.Q)),jV!==S.Z&&(S.Z=Q(Q1,"backgroundColor",jV,S.Z)),BV!==S.X&&(S.X=Q(W1,"fg",BV,S.X)),fV!==S._&&(S._=Q(W1,"attributes",fV,S._)),WV!==S.$&&(S.$=Q(V1,"backgroundColor",WV,S.$)),VV!==S.te&&(S.te=Q(q1,"fg",VV,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 GM(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=C0(()=>!!J.isDefault(B));return()=>g()?F("settings.engines.defaultTag"):C0(()=>!!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 QM(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,T0("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,T0("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=C0(()=>!!A.plan);return()=>E()?` (${A.plan})`:""})(),null),u((E)=>Q(g,"fg",z.success,E)),g})();if(A.kind==="apikey")return(()=>{var g=W("text");return K(g,()=>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,T0("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 qM(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 n0(()=>{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")),Hz((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()),O0=H(X()),b=J.body(),p=F("settings.feedback.descriptionPlaceholder"),w=X(),R=G()?z.primary:z.backgroundElement,e=G()?z.selectedListItemText:z.accent,x=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)),O0!==M.d&&(M.d=Q(E,"attributes",O0,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)),x!==M.f&&(M.f=Q(N,"attributes",x,M.f)),M},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0,w:void 0,m:void 0,f:void 0}),B})()}function HM(J){let{theme:z}=w0(),Z=()=>J.level()==="body"&&J.bodyRow()===0,Y=()=>J.level()==="body"&&J.bodyRow()===1,X=()=>QG(GG(J.hasDaemon),"remote-projects"),G=()=>J.level()==="body"&&J.bodyRow()===X(),q=()=>QG(GG(J.hasDaemon),"auto-status"),H=()=>J.level()==="body"&&J.bodyRow()===q(),j=()=>QG(GG(J.hasDaemon),"dispatcher"),B=()=>J.level()==="body"&&J.bodyRow()===j(),V=()=>QG(GG(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"),O0=W("text");return D(U,L),D(U,O),D(U,A),D(U,E),D(U,h),Q(U,"flexDirection","column"),Q(U,"gap",1),K(L,()=>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((x)=>{var $=z.text,Q0=s0.BOLD,H0=z.textMuted,L0=Y()?z.primary:z.backgroundElement,M0=Y()?z.selectedListItemText:z.accent,E0=s0.BOLD;return $!==x.e&&(x.e=Q(p,"fg",$,x.e)),Q0!==x.t&&(x.t=Q(p,"attributes",Q0,x.t)),H0!==x.a&&(x.a=Q(w,"fg",H0,x.a)),L0!==x.o&&(x.o=Q(R,"backgroundColor",L0,x.o)),M0!==x.i&&(x.i=Q(e,"fg",M0,x.i)),E0!==x.n&&(x.n=Q(e,"attributes",E0,x.n)),x},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),b}}),E),Q(E,"wrapMode","word"),K(E,()=>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=C0(()=>!!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=C0(()=>!!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=C0(()=>!!J.dispatcherEnabled());return()=>b()?F("settings.dev.dispatcherOn"):F("settings.dev.dispatcherOff")})()),Q(f0,"wrapMode","word"),K(f0,()=>F("settings.dev.archivedHistoryHint")),D(_,O0),Q(_,"flexDirection","row"),Q(_,"paddingLeft",1),Q(_,"paddingRight",1),Q(_,"onMouseUp",()=>{J.setLevel("body"),J.setBodyRow(V()),J.toggleArchivedHistory()}),K(O0,(()=>{var b=C0(()=>!!J.archivedHistoryEnabled());return()=>b()?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,x=Z()?z.selectedListItemText:z.warning,$=s0.BOLD,Q0=z.textMuted,H0=z.text,L0=s0.BOLD,M0=z.textMuted,E0=G()?z.primary:z.backgroundElement,b0=G()?z.selectedListItemText:z.text,J1=J.remoteProjectsEnabled()?s0.BOLD:void 0,j1=z.textMuted,k0=H()?z.primary:z.backgroundElement,h0=H()?z.selectedListItemText:z.text,N0=J.autoStatusEnabled()?s0.BOLD:void 0,o0=z.textMuted,m=B()?z.primary:z.backgroundElement,j0=B()?z.selectedListItemText:z.text,z0=J.dispatcherEnabled()?s0.BOLD:void 0,x0=z.textMuted,n=f()?z.primary:z.backgroundElement,W0=f()?z.selectedListItemText:z.text,S0=J.archivedHistoryEnabled()?s0.BOLD:void 0;return p!==b.e&&(b.e=Q(L,"fg",p,b.e)),w!==b.t&&(b.t=Q(L,"attributes",w,b.t)),R!==b.a&&(b.a=Q(O,"fg",R,b.a)),e!==b.o&&(b.o=Q(A,"backgroundColor",e,b.o)),x!==b.i&&(b.i=Q(g,"fg",x,b.i)),$!==b.n&&(b.n=Q(g,"attributes",$,b.n)),Q0!==b.s&&(b.s=Q(E,"fg",Q0,b.s)),H0!==b.h&&(b.h=Q(I,"fg",H0,b.h)),L0!==b.r&&(b.r=Q(I,"attributes",L0,b.r)),M0!==b.d&&(b.d=Q(N,"fg",M0,b.d)),E0!==b.l&&(b.l=Q(M,"backgroundColor",E0,b.l)),b0!==b.u&&(b.u=Q(y,"fg",b0,b.u)),J1!==b.c&&(b.c=Q(y,"attributes",J1,b.c)),j1!==b.w&&(b.w=Q(c,"fg",j1,b.w)),k0!==b.m&&(b.m=Q(d,"backgroundColor",k0,b.m)),h0!==b.f&&(b.f=Q(i,"fg",h0,b.f)),N0!==b.y&&(b.y=Q(i,"attributes",N0,b.y)),o0!==b.g&&(b.g=Q(t,"fg",o0,b.g)),m!==b.p&&(b.p=Q(X0,"backgroundColor",m,b.p)),j0!==b.b&&(b.b=Q(G0,"fg",j0,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)),W0!==b.I&&(b.I=Q(O0,"fg",W0,b.I)),S0!==b.S&&(b.S=Q(O0,"attributes",S0,b.S)),b},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0,w:void 0,m:void 0,f:void 0,y:void 0,g:void 0,p:void 0,b:void 0,T:void 0,A:void 0,O:void 0,I:void 0,S:void 0}),U})()}function jM(){let{theme:J}=w0(),z=g3(),Z=Object.keys(I9).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=C0(()=>!!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,T0("bindings:")),D(O,T0(" chat.fork.new: ctrl+g # string = one chord")),D(A,T0(" sidebar.select: [enter] # list = several chords")),D(g,T0(" files.createPR: null # null = unbind")),D(E,T0(" tmux.tab.new: ctrl+y # tmux session key (see below)")),D(h,T0(" tmux.layout.workspaceSplit: g # prefix g")),D(I,T0("darwin: # platform overlay (also: linux)")),D(N,T0(" bindings:")),D(M,T0(" 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,O0=J.textMuted,b=J.textMuted,p=J.textMuted;return c!==y.e&&(y.e=Q(U,"fg",c,y.e)),d!==y.t&&(y.t=Q(U,"attributes",d,y.t)),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)),O0!==y.r&&(y.r=Q(I,"fg",O0,y.r)),b!==y.d&&(y.d=Q(N,"fg",b,y.d)),p!==y.l&&(y.l=Q(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,T0("tmux session keys use the same file: tmux.tab.new (ctrl+t), tmux.tab.prev/next (ctrl+[/]), tmux.tab.close (ctrl+w), tmux.tab.rename (f2), tmux.tab.chooseEngine (ctrl+shift+t), tmux.detach (ctrl+q), tmux.focus (4 chords, left/down/up/right), and prefix layout keys: workspaceSplit (s), workspaceClose (x), workspaceReset (r), tasksToggle (a), opsToggle (o), terminalToggle (z). They apply when a session is (re)built.")),Q(B,"wrapMode","word"),Q(V,"wrapMode","word"),K(V,()=>`Fixed (not rebindable): ${Z.join(", ")}.`),u((f)=>{var U=J.text,L=s0.BOLD,O=J.textMuted,A=J.text,g=s0.BOLD,E=J.textMuted,h=J.textMuted,I=J.textMuted;return U!==f.e&&(f.e=Q(X,"fg",U,f.e)),L!==f.t&&(f.t=Q(X,"attributes",L,f.t)),O!==f.a&&(f.a=Q(G,"fg",O,f.a)),A!==f.o&&(f.o=Q(H,"fg",A,f.o)),g!==f.i&&(f.i=Q(H,"attributes",g,f.i)),E!==f.n&&(f.n=Q(j,"fg",E,f.n)),h!==f.s&&(f.s=Q(B,"fg",h,f.s)),I!==f.h&&(f.h=Q(V,"fg",I,f.h)),f},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0}),Y})()}var BM=C(()=>{P();P();P();P();P();P();P();P();P();D1();jW();c1();BJ();tX();tq();eX();IW()});import{accessSync as tu,constants as eu,mkdirSync as JE}from"fs";import{TextAttributes as zE}from"@opentui/core";function ZE(J){return J.split(/[-_]+/).filter((z)=>z.length>0).map((z)=>z.charAt(0).toUpperCase()+z.slice(1)).join(" ")}function iY(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=K0(()=>Z.all().slice().sort()),[,N]=s(Math.max(0,I().findIndex((T)=>T===Z.selected))),M=e3(J.orchestrator),[y,c]=s(null),[d,i]=s(null),[t,X0]=s(null),G0=!1;n0(()=>{if(H()!=="accounts"||G0)return;G0=!0,jq().then(c),Bq().then(i),fq().then(X0)});function f0(){return ZM(H(),{themeNames:I(),focusAccentSlots:cY,engineList:x0(),hasDaemon:M})}function _(){return f0().length}function O0(){return uY(J.kv.get(UZ,xY))}function b(T){if(Z.selected===T)return;if(!Z.set(T))return;J.kv.set("activeTheme",T),J.onVisualPrefsChange?.()}function p(){return d8()}function w(T){if(d8()===T)return;bQ(T),J.kv.set(Ej,T),J.onVisualPrefsChange?.()}function R(T){if(Z.transparentBackground===T)return;Z.setTransparentBackground(T),J.kv.set("transparentBackground",T),J.onVisualPrefsChange?.()}function e(){R(!Z.transparentBackground)}function x(T){if(Z.focusAccent===T)return;Z.setFocusAccent(T),J.kv.set("focusAccent",T),J.onVisualPrefsChange?.()}function $(T){J.kv.set(UZ,T)}function Q0(){return J.kv.get("notifications.toast.enabled",!0)!==!1}function H0(){return J.kv.get("notifications.sound.enabled",!0)!==!1}function L0(){J.kv.set("notifications.toast.enabled",!Q0())}function M0(){J.kv.set("notifications.sound.enabled",!H0())}function E0(){return J.kv.get(VH,!0)!==!1}function b0(){J.kv.set(VH,!E0())}function J1(){return J.kv.get("experimental.remoteProjects",!1)===!0}function j1(){J.kv.set("experimental.remoteProjects",!J1())}function k0(){return J.kv.get(LY,!1)===!0}function h0(){J.kv.set(LY,!k0())}function N0(){return J.kv.get(FY,!1)===!0}function o0(){J.kv.set(FY,!N0())}function m(){return J.kv.get(wG,!1)===!0}function j0(){J.kv.set(wG,!m())}function z0(){let T=J.kv.get("customEngineIds",[]);return Array.isArray(T)?T.filter((D0)=>typeof D0==="string"&&D0.trim().length>0):[]}function x0(){return[...o1,...z0()]}function n(T){let D0=J.kv.get(Rz(T),"");return typeof D0==="string"?D0.trim():""}function W0(T){return n(T)||EG(T).join(" ")}function S0(T){return UJ(T)&&n(T).length===0&&!Y1(T)}function l0(T){let D0=J.kv.get(gz(T),"");return typeof D0==="string"?D0.trim():""}function Y1(T){return l0(T).length>0}function $0(T){return l0(T)||C9[T]||T}let[G1,R1]=s(cJ(x1("lastSelectedVendor"),z0()));function O1(T){return G1()===T}function Z0(T){QJ("lastSelectedVendor",T),J.kv.set("lastSelectedVendor",T),R1(T)}async function q0(T){let D0=await sz.show(z,W0(T),{dialogTitle:`${$0(T)} launch command`,fieldLabel:"command",submitLabel:"save",allowEmpty:!0});if(D0===void 0)return;J.kv.set(Rz(T),D0.trim())}async function U0(T){let D0=await sz.show(z,$0(T),{dialogTitle:`${$0(T)} display name (blank = default)`,fieldLabel:"name",submitLabel:"save",allowEmpty:!0});if(D0===void 0)return;J.kv.set(gz(T),D0.trim())}function g0(T){if(J.kv.set(Rz(T),""),J.kv.set(gz(T),""),!UJ(T))J.kv.set("customEngineIds",z0().filter((D0)=>D0!==T)),U((D0)=>Math.max(0,Math.min(D0,x0().length)))}async function V0(){let T=await sz.show(z,"",{dialogTitle:"Add engine",fieldLabel:"id",submitLabel:"next",placeholder:"lowercase slug, e.g. aider"});if(T===void 0)return;let D0=T.trim().toLowerCase();if(!D0||UJ(D0)||z0().includes(D0))return;let T1=await sz.show(z,"",{dialogTitle:`Add engine \xB7 ${D0}`,fieldLabel:"command",submitLabel:"next",placeholder:"e.g. aider --model sonnet"});if(T1===void 0)return;let g1=await sz.show(z,D0,{dialogTitle:`Add engine \xB7 ${D0}`,fieldLabel:"name",submitLabel:"add",allowEmpty:!0});if(J.kv.set("customEngineIds",[...z0(),D0]),T1.trim())J.kv.set(Rz(D0),T1.trim());let n1=g1?.trim()??"";J.kv.set(gz(D0),n1&&n1!==D0?n1:ZE(D0))}function P0(){if(H()!=="engines"||G()!=="body")return null;let T=ij(f0(),f());return T?.kind==="engine"?T.vendor:null}function I0(){return TX(J.kv.get(VZ,mH))}function p0(){let T=TY.indexOf(I0()),D0=TY[(T+1)%TY.length];if(D0)J.kv.set(VZ,D0)}function y0(){let T=J.kv.get($Z,"");return typeof T==="string"?T:""}async function u0(){let T=await sz.show(z,y0(),{dialogTitle:"Custom editor command (use {file} for the path)",fieldLabel:"command",submitLabel:"save",allowEmpty:!0});if(T===void 0)return;let D0=T.trim();if(J.kv.set($Z,D0),D0)J.kv.set(VZ,"custom")}function Q1(){let T=J.kv.get(hZ,"");return typeof T==="string"?T:""}let W1=()=>uU(Q1());function V1(){let T=W1();if(T==="default")return F("settings.general.worktreeKindDefault");if(T==="nextToProject")return F("settings.general.worktreeKindNext");return F("settings.general.worktreeKindCustom")}function q1(){let T=J.kv.get(nq,"");return(typeof T==="string"?T.trim():"")||(W1()==="custom"?Q1().trim():"")}function S(){let T=W1();if(T==="default")J.kv.set(hZ,L9);else if(T==="nextToProject")J.kv.set(hZ,q1());else J.kv.set(nq,Q1().trim()),J.kv.set(hZ,"")}async function F0(){let T=await sz.show(z,q1(),{dialogTitle:F("settings.general.worktreeBaseTitle"),fieldLabel:F("settings.general.worktreeBaseField"),submitLabel:"save",placeholder:`${BZ}/../worktrees`,allowEmpty:!0});if(T===void 0)return;let D0=T.trim();if(D0.includes(BZ)){if(!F9(D0)){await fz.show(z,"Can't use that worktree location",`${BZ} only expands as the leading path segment (e.g. ${BZ}/../kobe-worktrees). Keeping the previous setting.`,"cancel");return}}else if(D0){let T1=M9(D0)??D0;try{JE(T1,{recursive:!0}),tu(T1,eu.W_OK)}catch(g1){await fz.show(z,"Can't use that worktree location",`${T1} isn't usable (${g1 instanceof Error?g1.message:String(g1)}). Keeping the previous setting \u2014 pick a writable directory.`,"cancel");return}}if(J.kv.set(nq,D0),D0)J.kv.set(hZ,D0);else if(W1()==="custom")J.kv.set(hZ,"")}async function U1(){h("submitting...");try{let T=nX({title:L(),body:A()});h(`sent: ${T.url}`),O(""),g(""),U(0)}catch(T){h(`error: ${T instanceof Error?T.message:String(T)}`)}}let L1=()=>H()==="feedback"&&G()==="body";function d0(T){let D0=f()+T;if(D0<0||D0>2){q("sidebar");return}U(D0)}function t0(){if(G()!=="sidebar"||_()===0)return;if(q("body"),U(0),H()==="general")N(0)}function v0(T){if(G()==="sidebar"){let g1=(B()+T+nY.length)%nY.length;V(g1);let n1=nY[g1];if(n1)j(n1.id),U(0);return}let D0=_();if(D0===0)return;let T1=(f()+T+D0)%D0;if(U(T1),ij(f0(),T1)?.kind==="theme")N(T1)}function a(T){j(T),V(nY.findIndex((D0)=>D0.id===T)),U(0),q("sidebar")}let R0={theme:(T)=>b(T.name),language:(T)=>w(T.locale),transparent:()=>e(),focusAccent:(T)=>x(T.slot),toast:()=>L0(),sound:()=>M0(),zenKeepTasks:()=>b0(),surface:(T)=>$(T.surface),editorKind:()=>p0(),editorCustom:()=>void u0(),worktreeBase:()=>S(),worktreeCustom:()=>void F0(),engine:(T)=>void q0(T.vendor),engineAdd:()=>void V0(),feedbackTitle:()=>U(0),feedbackBody:()=>U(1),feedbackSend:()=>void U1(),devReset:()=>void gW(z,J.kv,Y),devRestartDaemon:()=>void NW(z,J.orchestrator,Y),devRemoteProjects:()=>j1(),devAutoStatus:()=>h0(),devDispatcher:()=>o0(),devArchivedHistory:()=>j0()};function J0(){let T=ij(f0(),f());if(!T)return;R0[T.kind](T)}return M1(()=>({enabled:(!J.standalone||z.stack.length===0)&&!L1(),bindings:[{key:"down",cmd:()=>v0(1)},{key:"up",cmd:()=>v0(-1)},{key:"j",cmd:()=>v0(1)},{key:"k",cmd:()=>v0(-1)},{key:"tab",cmd:()=>v0(1)},{key:"right",cmd:t0},{key:"l",cmd:t0},{key:"left",cmd:()=>q("sidebar")},{key:"h",cmd:()=>q("sidebar")},{key:"return",cmd:()=>{if(G()==="sidebar"){t0();return}J0()}},{key:"t",cmd:e},{key:"r",cmd:()=>{let T=P0();if(T)U0(T)}},{key:"x",cmd:()=>{let T=P0();if(T)g0(T)}},{key:"d",cmd:()=>{let T=P0();if(T)Z0(T)}}]})),M1(()=>({enabled:L1(),bindings:[{key:"tab",cmd:()=>d0(1)},{key:"shift+tab",cmd:()=>d0(-1)}]})),M1(()=>({enabled:L1()&&f()===2,bindings:[{key:"return",cmd:()=>void U1()}]})),(()=>{var T=W("box"),D0=W("box"),T1=W("text"),g1=W("text"),n1=W("box"),v1=W("box"),fJ=W("box"),mJ=W("text");return D(T,D0),D(T,n1),D(T,fJ),Q(T,"paddingLeft",2),Q(T,"paddingRight",2),Q(T,"paddingBottom",1),Q(T,"gap",1),D(D0,T1),D(D0,g1),Q(D0,"flexDirection","row"),Q(D0,"justifyContent","space-between"),K(T1,()=>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(YM,{level:G,cursor:B,switchSection:a}),v1),Q(v1,"flexGrow",1),Q(v1,"flexShrink",1),Q(v1,"flexDirection","column"),Q(v1,"gap",1),K(v1,k(Y0,{get when(){return H()==="general"},get children(){return k(XM,{level:G,bodyRow:f,setLevel:q,setBodyRow:U,themeNames:I,setThemeCursor:N,selectTheme:b,currentLocale:p,selectLanguage:w,toggleTransparent:e,selectFocusAccent:x,toastEnabled:Q0,soundEnabled:H0,toggleToast:L0,toggleSound:M0,zenKeepsTasks:E0,toggleZenKeepsTasks:b0,settingsSurface:O0,selectSurface:$,editorKind:I0,cycleEditorKind:p0,editorCustomCommand:y0,editEditorCustom:()=>void u0(),worktreeKind:W1,worktreeKindLabel:V1,cycleWorktreeBase:S,worktreeCustomPath:q1,editWorktreeCustom:()=>void F0()})}}),null),K(v1,k(Y0,{get when(){return H()==="engines"},get children(){return k(GM,{level:G,bodyRow:f,setLevel:q,setBodyRow:U,get vendors(){return x0()},isCustom:(B1)=>!UJ(B1),displayName:$0,commandText:W0,isDefault:S0,isDefaultEngine:O1,editEngine:(B1)=>void q0(B1),renameEngine:(B1)=>void U0(B1),resetEngine:g0,onAddEngine:()=>void V0()})}}),null),K(v1,k(Y0,{get when(){return H()==="accounts"},get children(){return k(QM,{claudeStatus:y,codexStatus:d,copilotStatus:t})}}),null),K(v1,k(Y0,{get when(){return H()==="keys"},get children(){return k(jM,{})}}),null),K(v1,k(Y0,{get when(){return H()==="feedback"},get children(){return k(qM,{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(HM,{level:G,bodyRow:f,setLevel:q,setBodyRow:U,hasDaemon:M,confirmReset:()=>void gW(z,J.kv,Y),confirmRestartDaemon:()=>void NW(z,J.orchestrator,Y),remoteProjectsEnabled:J1,toggleRemoteProjects:j1,autoStatusEnabled:k0,toggleAutoStatus:h0,dispatcherEnabled:N0,toggleDispatcher:o0,archivedHistoryEnabled:m,toggleArchivedHistory:j0})}}),null),D(fJ,mJ),Q(fJ,"paddingTop",0),K(mJ,(()=>{var B1=C0(()=>!!L1());return()=>B1()?F("settings.nav.feedback"):F("settings.nav.default")})()),u((B1)=>{var l=zE.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(mJ,"fg",v,B1.o)),B1},{e:void 0,t:void 0,a:void 0,o:void 0}),T})()}var SW=C(()=>{P();P();P();P();P();P();P();P();D1();qY();Xz();Gj();pq();uG();$q();S1();O9();E9();s1();c1();BJ();cH();IJ();WW();rJ();nj();RW();zM();IW();BM();iY.show=(J,z,Z)=>{let Y=!1;return new Promise((X)=>{J.replace(()=>k(iY,{kv:z,orchestrator:Z,onVisualPrefsChange:()=>{Y=!0},onClose:()=>X({visualPrefsChanged:Y})}),()=>X({visualPrefsChanged:Y}))})}});import{TextAttributes as YE}from"@opentui/core";function WM(){let{theme:J}=w0(),z=pz(),Z=xj(),Y=()=>Z.toasts().slice(-fM),X=()=>Math.max(0,z().width-XE-GE),G=()=>Math.max(0,z().height-QE-fM-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=YE.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 fM=4,XE=40,GE=2,QE=2;var VM=C(()=>{P();P();P();P();P();P();P();D1();uj();c1()});import{TextAttributes as qE}from"@opentui/core";function HE(J,z){let Z=J?`v${J}`:F("update.skew.olderBuild");return F("update.skew.hint",{daemon:Z,clientVersion:z})}function UM(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,()=>HE(J.daemonVersion(),J.clientVersion)),u((B)=>{var{warning:V,warning:f}=z,U=qE.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 KM=C(()=>{P();P();P();P();P();P();D1();c1();BJ()});function DM(J,z){return J.find((Z)=>Z.id!==z&&!Z.archived)}function LM(J,z){let Z=J.activeTaskSignal;if(typeof Z!=="function")return!0;return Z.call(J)()===z}async function jE(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=DM(J.tasks,J.taskId);if(await lz(Y,X?y1(X.id):void 0).catch((G)=>{J.logger.error(`${J.logPrefix} switch-client failed:`,G)}),J.updateActiveTask&&LM(J.orch,J.taskId))await J.orch.setActiveTask(X?.id??null).catch(()=>{});return await vJ(Y).catch((G)=>{J.logger.error(`${J.logPrefix} kill tmux session failed:`,G)}),{archived:Z,nextTask:X}}async function BE(J){let z=DM(J.tasks,J.taskId),Z=y1(J.taskId);if(J.switchBeforeKill)await lz(Z,z?y1(z.id):void 0).catch((Y)=>{J.logger.error(`${J.logPrefix} switch-client failed:`,Y)});if(J.updateActiveTask&&J.orch&&LM(J.orch,J.taskId))await J.orch.setActiveTask(z?.id??null).catch(()=>{});return await vJ(Z).catch((Y)=>{J.logger.error(`${J.logPrefix} kill tmux session failed:`,Y)}),{nextTask:z}}async function FM(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 jE({orch:J.orch,tasks:J.tasks(),taskId:z,logger:J.logger,logPrefix:J.logPrefix,updateActiveTask:J.updateActiveTask}))return;await J.reload?.()}async function MM(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(V9)){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 BE({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 OM(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 AM(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 RM(J,z){let Z=J.tasks().find((G)=>G.id===z);if(!Z||!J.orch)return;let Y=await GZ(),X=NZ(Y,Z.vendor??zJ);try{await J.orch.setVendor(z,X)}catch(G){J.logger.error(`${J.logPrefix} task.setVendor failed:`,G),J.notifyError?.(`Couldn't switch engine: ${G instanceof Error?G.message:String(G)}`);return}J.notifyInfo?.(`Engine \u2192 ${MY(X)} (applies on reopen)`),await J.reload?.()}async function gM(J){let z=SJ(),Z=J.cursorRepo()??z[0]??process.cwd();if(J.openCreateSurface&&await J.openCreateSurface(Z))return;let Y=J.lastVendor()??zJ,X=await GZ();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),JZ(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 NM=C(()=>{qY();Xz();D9();S1();BJ();Yz();s1();HJ()});import{spawn as fE}from"child_process";import{existsSync as WE}from"fs";import{basename as VE,delimiter as UE,isAbsolute as KE,join as DE}from"path";function yW(J,z,Z){if(KE(J))return Z(J);let Y=z.PATH??"";for(let X of Y.split(UE)){if(!X)continue;if(Z(DE(X,J)))return!0}return!1}function ME(J){let z=VE(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 CM(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:ME(X),command:X,args:[]};for(let G of LE)if(yW(G.command,z,Y))return{id:G.id,label:G.label,command:G.command,args:[]};if(Z==="darwin"&&yW("open",z,Y)){for(let G of FE)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"&&yW("xdg-open",z,Y))return{id:"xdg-open",label:"Open",command:"xdg-open",args:[]};return null}function OE(J,z){return[z.command,[...z.args,J]]}function bM(J,z,Z={}){if(!J)return!1;let Y=Z.spawn??fE,[X,G]=OE(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 LE,FE;var kM=C(()=>{LE=[{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"}],FE=[{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 lj(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 aj(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 EQ=C(()=>{D1();qX();qX()});import{stat as AE}from"fs/promises";import{join as RE}from"path";async function bE(J){try{let z=await AE(RE(J,".git","HEAD"));return`${z.mtimeMs}:${z.size}`}catch{return null}}async function kE(J,z,Z=HZ){let Y=await bE(J);if(Y!==null){let j=IM.get(J);if(j&&j.fingerprint===Y)return j.value}let X="",G=!1,q=await Z("git",["symbolic-ref","--short","HEAD"],{cwd:J,env:_J(),signal:z}),H=q.status===0?q.stdout.trim():"";if(H&&H!=="HEAD")X=H,G=!0;else if((await Z("git",["rev-parse","--verify","HEAD"],{cwd:J,env:_J(),signal:z})).status===0)X="(detached)",G=!0;if(G&&Y!==null)IM.set(J,{fingerprint:Y,value:X});return X}function yM(J){return SM.read(J)}function TM(J){uz().then((z)=>{if(z)SM.poll(J)})}var gE=2000,NE=30000,CE=1500,IM,SM;var xM=C(()=>{aZ();ZG();EQ();IM=new Map;SM=aj({initial:"",timeoutMs:gE,slowRetryMs:NE,minIntervalMs:CE,run:(J,z)=>kE(J,z)})});function TW(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 uM(J){let z=TW({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:JY({"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:JY({"sidebar.view":(G,q)=>{J.onViewSwitch?.((q??0)%2===0?-1:1)}})})),M1(()=>({enabled:J.focused()&&Y(),bindings:JY({"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 EM=C(()=>{JG();IJ()});function xW(J,z){return lj(J,z)}function uW(J,z){return` ${xW(J,Math.max(0,z))}`}var wM=()=>{};function SE(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 yE(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 vM(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 TE(){return F("tasks.subtitle.noTracking")}function xE(){return F("tasks.subtitle.materializing")}function uE(J){if(J.kind==="main")return!1;return J.vendor!==void 0&&!UJ(J.vendor)}function EW(J){let{task:z}=J,Z=z.kind==="main",Y=Z?J.mainBranch??"":z.branch,X=IE[z.status],G=J.activity?.state,q=G!==void 0,H=EE(G),j=yE(G),B=uE(z)&&!q,V=J.job!==void 0,f=V||!B&&(G==="running"||J.live||!q&&!Z&&z.status==="in_progress"),U=qG[J.spinnerFrame]??qG[0],L=V?"primary":B?"textMuted":j?.tone??(f?"primary":H?.tone??X.tone),O=B?TE():SE(z.status),A=V?J.truncateBranch(xE(),J.subtitleBudget):j?J.truncateBranch(j.text,J.subtitleBudget):Y.length>0?J.truncateBranch(Y,J.subtitleBudget):J.truncateBranch(O,J.subtitleBudget),g=B?PM:H?.glyph??X.glyph,E=B?PM:H?.glyph??"\u2605";return{isMain:Z,titleText:Z?Ez(z.repo):z.title,subtitleText:A,loading:f,stateGlyph:f?U:g,projectGlyph:f?U:E,tone:L}}function wW(J,z){if(!J.loading)return J;let Z=qG[z()%qG.length]??"\u280B";if(Z===J.stateGlyph&&Z===J.projectGlyph)return J;return{...J,stateGlyph:Z,projectGlyph:Z}}function EE(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 IE,qG,hM=100,PM="\xB7";var mM=C(()=>{BJ();s1();mj();IE={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"}};qG=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"]});function PW(J){return cM.read(J)}function hW(J){cM.poll(J)}var wE=4000,PE=60000,hE=1500,vE,cM;var dM=C(()=>{aZ();EQ();PX();EQ();vE={added:0,deleted:0},cM=aj({initial:vE,equals:_z,timeoutMs:wE,slowRetryMs:PE,minIntervalMs:hE,run:async(J,z)=>{let Z=await HZ("git",["status","--porcelain=v1"],{cwd:J,env:_J(),signal:z});if(Z.status!==0)throw Error("git status failed");return wX(Z.stdout)}})});import{TextAttributes as d1}from"@opentui/core";function mE(J){switch(J){case"active":return F("tasks.view.workspace");case"archived":return F("tasks.view.archives")}}function iM(J,z=dE){return lj(J,z)}function _j(J){let z=0;for(let Z of J)z+=(Z.codePointAt(0)??0)>=4352?2:1;return z}function lM(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)}n0(()=>{if(!G())return;let n=GJ();if(!n)return;let W0=(S0)=>{if(S0.defaultPrevented)return;if(!Z())return;if(S0.ctrl||S0.meta||S0.option)return;if(S0.name==="backspace"){j(($0)=>$0.slice(0,-1));return}let l0=S0.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",W0),C1(()=>n.keyInput.off("keypress",W0))});let[A,g]=s(0),E=setInterval(()=>g((n)=>n+1),cE);C1(()=>clearInterval(E));let[h,I]=s(0),N=setInterval(()=>I((n)=>(n+1)%qG.length),hM);C1(()=>clearInterval(N));let M=()=>J.sortMode?.()??"default",y=K0(()=>i3(J.tasks(),Y())),c=K0(()=>{let n=f();if(!n)return null;let W0=Bz(n);return y().find((S0)=>Bz(S0.repo)===W0)??null}),d=K0(()=>c()?.repo??null),i=K0(()=>c()?.label??"all"),t=K0(()=>{let n=c();return n?n.count:y().reduce((W0,S0)=>W0+S0.count,0)}),X0=K0(()=>{let n=t();return`${n} ${n===1?F("tasks.project.taskSingular"):F("tasks.project.taskPlural")}`}),G0=K0((n)=>_3(n,FW(J.tasks(),Y(),G()?H():"",M(),d())),[]),f0=K0(()=>MW(G0())),_=K0(()=>a3(G0())),O0=K0(()=>_().projectRows),b=K0(()=>_().taskRows),p=K0(()=>{let n=new Map;for(let W0 of G0())n.set(W0.flatIndex,W0);return n}),w=K0(()=>MW(FW(J.tasks(),Y(),"",M(),d())).length),R=K0(()=>b().length>0);n0(()=>{let n=f(),W0=y();if(n!==null&&W0.length>0&&(W0.length<=1||c()===null))U(null)});function e(){let n=y();if(n.length<=1){U(null);return}let W0=d(),S0=W0?Bz(W0):null,l0=S0===null?-1:n.findIndex(($0)=>Bz($0.repo)===S0),Y1=n[l0+1];U(Y1?.repo??null)}let x=()=>J.width?J.width():nM,$=K0(()=>Math.max(6,x()-9)),Q0=K0(()=>Math.max(6,x()-16)),H0=pz(),L0=K0(()=>{let n=Math.max(2,Math.min(10,Math.floor(H0().height*0.25))),W0=Math.max(2,O0().length*2);return Math.min(n,W0)}),[M0,E0]=s(null),[b0,J1]=s(-1),j1,k0,h0,N0=new Map;n0(()=>{let n=J.width?J.width():nM,W0=h0;if(!W0)return;W0.width=n,W0.flexShrink=1,W0.minHeight=0}),n0(XJ([b0,G0],([n])=>{let W0=p().get(n);if(!W0)return;let S0=W0.task.kind==="main"?j1:k0;if(!S0)return;if(S0.viewport.height<=0)return;let l0=N0.get(n);if(!l0)return;S0.scrollChildIntoView(l0.id)})),n0(XJ(()=>[J.selectedId(),f0()],([n,W0])=>{let S0=YJ(b0),l0=$3(n,W0,S0);if(l0!==S0)J1(l0)})),n0(XJ(Y,()=>{let n=f0();J1(n.length>0?0:-1)},{defer:!0})),n0(XJ(d,(n)=>J1(l3(G0(),n)),{defer:!0})),n0(XJ([G,H],()=>{if(!G())return;let n=f0();J1(n.length>0?0:-1)}));function o0(n){let W0=Y(),S0=wQ.findIndex(($0)=>$0.view===W0);if(S0<0)return;let l0=(S0+n+wQ.length)%wQ.length,Y1=wQ[l0];if(Y1)X(Y1.view)}let m=(n)=>{if(J.onActivate?.(n),!J.pinnedSelection)return;let W0=J.selectedId();if(!W0||n===W0)return;let S0=f0().indexOf(W0);if(S0>=0)J1(S0)};n0(XJ([b0,f0],([n,W0])=>{J.onCursorChange?.(n>=0&&n<W0.length?W0[n]:null)})),uM({focused:Z,cursorIndex:b0,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,W0)=>J.onMoveRequest?.(n,W0),onMoveModeExit:()=>J.onMoveModeExit?.(),onRenameRequest:(n)=>J.onRenameRequest?.(n),onPinRequest:(n)=>J.onPinRequest?.(n),onPreviewToggleRequest:(n)=>J.onPreviewToggleRequest?.(n),onViewSwitch:(n)=>o0(n),onSortModeToggle:()=>J.onSortModeToggle?.(),onProjectFilterToggle:()=>e(),searchMode:G,onSearchEnter:()=>L(),onSearchExit:(n)=>O(n)});let j0=(n)=>(()=>{var W0=W("box"),S0=W("box"),l0=W("text"),Y1=W("text");return D(W0,S0),Q(W0,"flexDirection","column"),Q(W0,"flexShrink",0),K(W0,k(Y0,{get when(){return n.topPad},get children(){var $0=W("box"),G1=W("text");return D($0,G1),Q($0,"flexShrink",0),D(G1,T0(" ")),Q(G1,"wrapMode","none"),$0}}),S0),D(S0,l0),D(S0,Y1),Q(S0,"flexDirection","row"),Q(S0,"flexShrink",0),Q(S0,"gap",1),Q(S0,"paddingLeft",1),Q(S0,"paddingRight",1),Q(l0,"wrapMode","none"),K(l0,()=>n.label),Q(Y1,"wrapMode","none"),K(Y1,()=>"\u2500".repeat(Math.max(2,x()-10-n.label.length-(n.suffix?.length??0)))),K(S0,k(Y0,{get when(){return n.suffix},get children(){var $0=W("text");return Q($0,"wrapMode","none"),K($0,()=>n.suffix),u((G1)=>{var R1=z.info,O1=d1.BOLD;return R1!==G1.e&&(G1.e=Q($0,"fg",R1,G1.e)),O1!==G1.t&&(G1.t=Q($0,"attributes",O1,G1.t)),G1},{e:void 0,t:void 0}),$0}}),null),u(($0)=>{var G1=z.textMuted,R1=d1.BOLD,O1=z.border;return G1!==$0.e&&($0.e=Q(l0,"fg",G1,$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}),W0})(),z0=(n)=>{switch(n){case"success":return z.success;case"warning":return z.warning;case"primary":return z.primary;case"error":return z.error;default:return z.textMuted}},x0=(n)=>{let W0=n.row.task,S0=n.row.flatIndex,l0=()=>S0===b0(),Y1=()=>W0.id===J.selectedId(),$0=K0(()=>{let V0=J.chatRunState?.();if(!V0)return!1;let P0=`${W0.id}:`;for(let[I0,p0]of V0)if(p0==="running"&&I0.startsWith(P0))return!0;return!1}),G1=K0(()=>{let V0=oH(J.worktreeChanges?.(),W0.worktreePath);if(V0)return V0;if(A(),!W0.archived)hW(W0.worktreePath);return PW(W0.worktreePath)},void 0,{equals:_z}),R1=K0(()=>{return A(),TM(W0.repo),yM(W0.repo)}),O1=K0(()=>EW({task:W0,activity:J.engineState?.().get(W0.id),job:J.taskJobs?.().get(W0.id),live:$0(),spinnerFrame:0,subtitleBudget:Q0(),truncateBranch:iM,mainBranch:R1()})),Z0=K0(()=>wW(O1(),h)),q0=()=>!Z0().loading?z.primary:z0(Z0().tone),U0=()=>l0()?z.focusAccent:Y1()?z.primary:void 0,g0=()=>l0()||Y1()?"\u258C":" ";return(()=>{var V0=W("box"),P0=W("box"),I0=W("box"),p0=W("text"),y0=W("box"),u0=W("text"),Q1=W("text"),W1=W("box"),V1=W("text"),q1=W("box"),S=W("text");return D(V0,P0),Q(V0,"flexDirection","column"),Q(V0,"gap",0),Q(V0,"paddingBottom",0),D(P0,I0),D(P0,W1),Hz((F0)=>{N0.set(S0,F0),C1(()=>{if(N0.get(S0)===F0)N0.delete(S0)})},P0),Q(P0,"flexDirection","column"),Q(P0,"gap",0),Q(P0,"onMouseUp",()=>{if(J1(S0),J.onSelect(W0.id),J.activateOnClick)m(W0.id)}),Q(P0,"onMouseOver",(F0)=>E0({task:W0,x:F0.x,y:F0.y})),Q(P0,"onMouseOut",()=>E0((F0)=>F0?.task.id===W0.id?null:F0)),D(I0,p0),D(I0,y0),Q(I0,"flexDirection","row"),Q(I0,"gap",0),Q(p0,"wrapMode","none"),K(p0,g0),D(y0,u0),D(y0,Q1),Q(y0,"flexDirection","row"),Q(y0,"flexGrow",1),Q(y0,"paddingRight",1),Q(y0,"gap",0),Q(u0,"wrapMode","none"),K(u0,()=>Z0().projectGlyph),Q(Q1,"wrapMode","none"),Q(Q1,"flexGrow",1),K(Q1,()=>uW(Z0().titleText,$())),D(W1,V1),D(W1,q1),Q(W1,"flexDirection","row"),Q(W1,"gap",0),Q(V1,"wrapMode","none"),K(V1,g0),D(q1,S),Q(q1,"flexDirection","row"),Q(q1,"flexGrow",1),Q(q1,"paddingLeft",2),Q(q1,"paddingRight",1),Q(q1,"gap",1),Q(S,"wrapMode","none"),Q(S,"flexGrow",1),K(S,()=>Z0().subtitleText),K(q1,k(Y0,{get when(){return G1().added>0},get children(){var F0=W("text"),U1=T0("+");return D(F0,U1),Q(F0,"wrapMode","none"),K(F0,()=>G1().added,null),u((L1)=>Q(F0,"fg",z.success,L1)),F0}}),null),K(q1,k(Y0,{get when(){return G1().deleted>0},get children(){var F0=W("text"),U1=T0("\u2212");return D(F0,U1),Q(F0,"wrapMode","none"),K(F0,()=>G1().deleted,null),u((L1)=>Q(F0,"fg",z.error,L1)),F0}}),null),u((F0)=>{var U1=l0()?z.backgroundElement:void 0,L1=U0(),d0=q0(),t0=d1.BOLD,v0=z.text,a=d1.BOLD,R0=U0(),J0=z.textMuted,T=d1.DIM;return U1!==F0.e&&(F0.e=Q(P0,"backgroundColor",U1,F0.e)),L1!==F0.t&&(F0.t=Q(p0,"fg",L1,F0.t)),d0!==F0.a&&(F0.a=Q(u0,"fg",d0,F0.a)),t0!==F0.o&&(F0.o=Q(u0,"attributes",t0,F0.o)),v0!==F0.i&&(F0.i=Q(Q1,"fg",v0,F0.i)),a!==F0.n&&(F0.n=Q(Q1,"attributes",a,F0.n)),R0!==F0.s&&(F0.s=Q(V1,"fg",R0,F0.s)),J0!==F0.h&&(F0.h=Q(S,"fg",J0,F0.h)),T!==F0.r&&(F0.r=Q(S,"attributes",T,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}),V0})()};return(()=>{var n=W("box"),W0=W("box"),S0=W("box"),l0=W("text"),Y1=W("box"),$0=W("box"),G1=W("text"),R1=W("scrollbox"),O1=W("box");return D(n,W0),D(n,Y1),D(n,R1),Hz((Z0)=>{h0=Z0},n),Q(n,"flexGrow",1),Q(n,"minHeight",0),Q(n,"flexDirection","column"),Q(n,"paddingTop",1),Q(n,"paddingBottom",1),Q(n,"paddingLeft",0),Q(n,"paddingRight",0),D(W0,S0),Q(W0,"flexDirection","row"),Q(W0,"justifyContent","space-between"),Q(W0,"gap",1),Q(W0,"paddingBottom",1),Q(W0,"paddingLeft",1),Q(W0,"paddingRight",1),D(S0,l0),Q(S0,"flexDirection","row"),Q(S0,"gap",1),D(l0,T0("KOBE")),Q(l0,"wrapMode","none"),K(S0,k(Y0,{get when(){return J.headerStatus?.()},children:(Z0)=>(()=>{var q0=W("text");return Q(q0,"wrapMode","none"),Q(q0,"onMouseUp",()=>J.onHeaderStatusClick?.()),K(q0,()=>Z0().label),u((U0)=>{var g0=Z0().emphasize?z.warning:z.textMuted,V0=Z0().emphasize?d1.BOLD:d1.DIM;return g0!==U0.e&&(U0.e=Q(q0,"fg",g0,U0.e)),V0!==U0.t&&(U0.t=Q(q0,"attributes",V0,U0.t)),U0},{e:void 0,t:void 0}),q0})()}),null),K(W0,k(Y0,{get when(){return J.onAddTask},get children(){var Z0=W("text");return D(Z0,T0("[+]")),Q(Z0,"wrapMode","none"),Q(Z0,"onMouseUp",()=>J.onAddTask?.()),u((q0)=>{var U0=z.primary,g0=d1.BOLD;return U0!==q0.e&&(q0.e=Q(Z0,"fg",U0,q0.e)),g0!==q0.t&&(q0.t=Q(Z0,"attributes",g0,q0.t)),q0},{e:void 0,t:void 0}),Z0}}),null),K(n,k(Y0,{get when(){return G()},get children(){var Z0=W("box"),q0=W("text"),U0=W("text"),g0=W("text");return D(Z0,q0),D(Z0,U0),D(Z0,g0),Q(Z0,"flexDirection","row"),Q(Z0,"gap",0),Q(Z0,"paddingBottom",1),Q(Z0,"paddingLeft",1),D(q0,T0("/")),Q(q0,"wrapMode","none"),Q(U0,"wrapMode","none"),K(U0,H),D(g0,T0("\u2588")),Q(g0,"wrapMode","none"),K(Z0,k(Y0,{get when(){return H().length===0},get children(){var V0=W("text"),P0=T0(" ");return D(V0,P0),Q(V0,"wrapMode","none"),K(V0,()=>F("tasks.search.placeholder"),null),u((I0)=>Q(V0,"fg",z.textMuted,I0)),V0}}),null),K(Z0,k(Y0,{get when(){return H().length>0},get children(){var V0=W("text"),P0=T0(" "),I0=T0("/");return D(V0,P0),D(V0,I0),Q(V0,"wrapMode","none"),K(V0,()=>f0().length,I0),K(V0,w,null),u((p0)=>Q(V0,"fg",z.textMuted,p0)),V0}}),null),u((V0)=>{var{info:P0,text:I0,info:p0}=z,y0=d1.BLINK;return P0!==V0.e&&(V0.e=Q(q0,"fg",P0,V0.e)),I0!==V0.t&&(V0.t=Q(U0,"fg",I0,V0.t)),p0!==V0.a&&(V0.a=Q(g0,"fg",p0,V0.a)),y0!==V0.o&&(V0.o=Q(g0,"attributes",y0,V0.o)),V0},{e:void 0,t:void 0,a:void 0,o:void 0}),Z0}}),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,G1),Q($0,"flexDirection","row"),Q($0,"gap",2),K($0,k(X1,{each:wQ,children:(Z0)=>{let q0=()=>Y()===Z0.view;return(()=>{var U0=W("text");return Q(U0,"wrapMode","none"),Q(U0,"onMouseUp",()=>X(Z0.view)),K(U0,()=>mE(Z0.view)),u((g0)=>{var V0=q0()?z.primary:z.textMuted,P0=q0()?d1.BOLD:void 0;return V0!==g0.e&&(g0.e=Q(U0,"fg",V0,g0.e)),P0!==g0.t&&(g0.t=Q(U0,"attributes",P0,g0.t)),g0},{e:void 0,t:void 0}),U0})()}}),G1),D(G1,T0("[/]")),Q(G1,"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 U0=z.textMuted,g0=d1.DIM;return U0!==q0.e&&(q0.e=Q(Z0,"fg",U0,q0.e)),g0!==q0.t&&(q0.t=Q(Z0,"attributes",g0,q0.t)),q0},{e:void 0,t:void 0}),Z0}}),null),K(n,k(Y0,{get when(){return O0().length>0},get children(){var Z0=W("box"),q0=W("box"),U0=W("text"),g0=W("text"),V0=W("scrollbox"),P0=W("box");return D(Z0,q0),D(Z0,V0),Q(Z0,"flexDirection","column"),Q(Z0,"flexShrink",0),D(q0,U0),D(q0,g0),Q(q0,"flexDirection","row"),Q(q0,"flexShrink",0),Q(q0,"gap",1),Q(q0,"paddingLeft",1),Q(q0,"paddingRight",1),Q(q0,"onMouseUp",()=>e()),Q(U0,"wrapMode","none"),K(U0,()=>F("tasks.header.projects")),K(q0,k(Y0,{get when(){return y().length>1},get children(){var I0=W("text");return Q(I0,"wrapMode","none"),K(I0,i),u((p0)=>{var y0=d()?z.primary:z.textMuted,u0=d()?d1.BOLD:void 0;return y0!==p0.e&&(p0.e=Q(I0,"fg",y0,p0.e)),u0!==p0.t&&(p0.t=Q(I0,"attributes",u0,p0.t)),p0},{e:void 0,t:void 0}),I0}}),g0),Q(g0,"wrapMode","none"),K(g0,()=>"\u2500".repeat(Math.max(2,x()-10-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 I0=W("text");return Q(I0,"wrapMode","none"),K(I0,X0),u((p0)=>{var y0=z.textMuted,u0=d1.DIM;return y0!==p0.e&&(p0.e=Q(I0,"fg",y0,p0.e)),u0!==p0.t&&(p0.t=Q(I0,"attributes",u0,p0.t)),p0},{e:void 0,t:void 0}),I0}}),null),D(V0,P0),Hz((I0)=>{j1=I0},V0),Q(V0,"flexShrink",0),Q(V0,"flexGrow",0),Q(V0,"minHeight",0),Q(V0,"stickyScroll",!1),Q(V0,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),Q(P0,"flexShrink",0),Q(P0,"gap",0),Q(P0,"paddingRight",1),K(P0,k(X1,{get each(){return O0()},children:(I0)=>k(x0,{row:I0})})),u((I0)=>{var p0=z.textMuted,y0=d1.BOLD,u0=z.border,Q1=L0();return p0!==I0.e&&(I0.e=Q(U0,"fg",p0,I0.e)),y0!==I0.t&&(I0.t=Q(U0,"attributes",y0,I0.t)),u0!==I0.a&&(I0.a=Q(g0,"fg",u0,I0.a)),Q1!==I0.o&&(I0.o=Q(V0,"maxHeight",Q1,I0.o)),I0},{e:void 0,t:void 0,a:void 0,o:void 0}),Z0}}),R1),K(n,k(j0,{get label(){return F("tasks.header.tasks")},get suffix(){return C0(()=>M()==="default")()?void 0:M()},get topPad(){return O0().length>0}}),R1),D(R1,O1),Hz((Z0)=>{k0=Z0},R1),Q(R1,"flexGrow",1),Q(R1,"minHeight",0),Q(R1,"stickyScroll",!1),Q(R1,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),Q(O1,"flexShrink",0),Q(O1,"gap",0),Q(O1,"paddingRight",1),K(O1,k(X1,{get each(){return b()},children:(Z0)=>{let{task:q0,flatIndex:U0}=Z0,g0=()=>U0===b0(),V0=()=>q0.id===J.selectedId(),P0=K0(()=>{let V1=J.chatRunState?.();if(!V1)return!1;let q1=`${q0.id}:`;for(let[S,F0]of V1)if(F0==="running"&&S.startsWith(q1))return!0;return!1}),I0=K0(()=>{let V1=oH(J.worktreeChanges?.(),q0.worktreePath);if(V1)return V1;if(A(),!q0.archived)hW(q0.worktreePath);return PW(q0.worktreePath)},void 0,{equals:_z}),p0=K0(()=>EW({task:q0,activity:J.engineState?.().get(q0.id),job:J.taskJobs?.().get(q0.id),live:P0(),spinnerFrame:0,subtitleBudget:Q0(),truncateBranch:iM,mainBranch:""})),y0=K0(()=>wW(p0(),h)),u0=()=>z0(y0().tone),Q1=()=>g0()?z.focusAccent:V0()?z.primary:void 0,W1=()=>g0()||V0()?"\u258C":" ";return(()=>{var V1=W("box"),q1=W("box"),S=W("box"),F0=W("text"),U1=W("box"),L1=W("text"),d0=W("text"),t0=W("box"),v0=W("text"),a=W("box"),R0=W("text");return D(V1,q1),Q(V1,"flexDirection","column"),Q(V1,"gap",0),Q(V1,"paddingBottom",1),D(q1,S),D(q1,t0),Hz((J0)=>{N0.set(U0,J0),C1(()=>{if(N0.get(U0)===J0)N0.delete(U0)})},q1),Q(q1,"flexDirection","column"),Q(q1,"gap",0),Q(q1,"onMouseUp",()=>{if(J1(U0),J.onSelect(q0.id),J.activateOnClick)m(q0.id)}),Q(q1,"onMouseOver",(J0)=>E0({task:q0,x:J0.x,y:J0.y})),Q(q1,"onMouseOut",()=>E0((J0)=>J0?.task.id===q0.id?null:J0)),D(S,F0),D(S,U1),Q(S,"flexDirection","row"),Q(S,"gap",0),Q(F0,"wrapMode","none"),K(F0,W1),D(U1,L1),D(U1,d0),Q(U1,"flexDirection","row"),Q(U1,"flexGrow",1),Q(U1,"paddingRight",1),Q(U1,"gap",0),Q(L1,"wrapMode","none"),K(L1,()=>y0().stateGlyph),Q(d0,"wrapMode","none"),Q(d0,"flexGrow",1),K(d0,()=>uW(y0().titleText,$())),K(U1,k(Y0,{get when(){return C0(()=>!!J.moveMode?.())()&&g0()},get children(){var J0=W("text");return Q(J0,"wrapMode","none"),K(J0,()=>F("tasks.moveChip")),u((T)=>Q(J0,"fg",z.warning,T)),J0}}),null),D(t0,v0),D(t0,a),Q(t0,"flexDirection","row"),Q(t0,"gap",0),Q(v0,"wrapMode","none"),K(v0,W1),D(a,R0),Q(a,"flexDirection","row"),Q(a,"flexGrow",1),Q(a,"paddingLeft",2),Q(a,"paddingRight",1),Q(a,"gap",1),Q(R0,"wrapMode","none"),Q(R0,"flexGrow",1),K(R0,()=>y0().subtitleText),K(a,k(Y0,{get when(){return q0.pinned===!0},get children(){var J0=W("text");return D(J0,T0("\u25B4")),Q(J0,"wrapMode","none"),u((T)=>Q(J0,"fg",z.warning,T)),J0}}),null),K(a,k(Y0,{get when(){return vM(q0)},children:(J0)=>(()=>{var T=W("text");return Q(T,"wrapMode","none"),K(T,()=>J0().glyph),u((D0)=>Q(T,"fg",z0(J0().tone),D0)),T})()}),null),K(a,k(Y0,{get when(){return I0().added>0},get children(){var J0=W("text"),T=T0("+");return D(J0,T),Q(J0,"wrapMode","none"),K(J0,()=>I0().added,null),u((D0)=>Q(J0,"fg",z.success,D0)),J0}}),null),K(a,k(Y0,{get when(){return I0().deleted>0},get children(){var J0=W("text"),T=T0("\u2212");return D(J0,T),Q(J0,"wrapMode","none"),K(J0,()=>I0().deleted,null),u((D0)=>Q(J0,"fg",z.error,D0)),J0}}),null),u((J0)=>{var T=g0()?z.backgroundElement:void 0,D0=Q1(),T1=u0(),g1=d1.BOLD,n1=z.text,v1=V0()||g0()?d1.BOLD:void 0,fJ=Q1(),mJ=z.textMuted,B1=d1.DIM;return T!==J0.e&&(J0.e=Q(q1,"backgroundColor",T,J0.e)),D0!==J0.t&&(J0.t=Q(F0,"fg",D0,J0.t)),T1!==J0.a&&(J0.a=Q(L1,"fg",T1,J0.a)),g1!==J0.o&&(J0.o=Q(L1,"attributes",g1,J0.o)),n1!==J0.i&&(J0.i=Q(d0,"fg",n1,J0.i)),v1!==J0.n&&(J0.n=Q(d0,"attributes",v1,J0.n)),fJ!==J0.s&&(J0.s=Q(v0,"fg",fJ,J0.s)),mJ!==J0.h&&(J0.h=Q(R0,"fg",mJ,J0.h)),B1!==J0.r&&(J0.r=Q(R0,"attributes",B1,J0.r)),J0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0}),V1})()}}),null),K(O1,k(Y0,{get when(){return f0().length===0},get children(){var Z0=W("box"),q0=W("text");return D(Z0,q0),Q(Z0,"paddingTop",1),Q(Z0,"paddingLeft",1),K(q0,(()=>{var U0=C0(()=>!!(G()&&H().trim().length>0));return()=>U0()?F("tasks.empty.noMatchSearch"):C0(()=>!!d())()?C0(()=>Y()==="active")()?F("tasks.empty.noActiveProject"):F("tasks.empty.noArchivedProject"):C0(()=>Y()==="active")()?F("tasks.empty.noActive"):F("tasks.empty.noArchived")})()),u((U0)=>Q(q0,"fg",z.textMuted,U0)),Z0}}),null),K(O1,k(Y0,{get when(){return C0(()=>!!(d()&&f0().length>0&&!R()))()&&!(G()&&H().trim().length>0)},get children(){var Z0=W("box"),q0=W("text");return D(Z0,q0),Q(Z0,"paddingTop",1),Q(Z0,"paddingLeft",1),Q(q0,"wrapMode","none"),K(q0,(()=>{var U0=C0(()=>Y()==="active");return()=>U0()?F("tasks.empty.noActiveProject"):F("tasks.empty.noArchivedProject")})()),u((U0)=>{var g0=z.textMuted,V0=d1.DIM;return g0!==U0.e&&(U0.e=Q(q0,"fg",g0,U0.e)),V0!==U0.t&&(U0.t=Q(q0,"attributes",V0,U0.t)),U0},{e:void 0,t:void 0}),Z0}}),null),K(O1,k(Y0,{get when(){return C0(()=>Y()==="archived")()&&f0().length>0},get children(){var Z0=W("box"),q0=W("text");return D(Z0,q0),Q(Z0,"paddingTop",1),Q(Z0,"paddingLeft",1),Q(q0,"wrapMode","none"),K(q0,()=>F("tasks.archiveHint")),u((U0)=>{var g0=z.textMuted,V0=d1.DIM;return g0!==U0.e&&(U0.e=Q(q0,"fg",g0,U0.e)),V0!==U0.t&&(U0.t=Q(q0,"attributes",V0,U0.t)),U0},{e:void 0,t:void 0}),Z0}}),null),K(n,k(Y0,{get when(){return J.zenActive?.()},get children(){var Z0=W("box"),q0=W("text");return D(Z0,q0),Q(Z0,"flexShrink",0),Q(Z0,"paddingLeft",1),Q(Z0,"paddingRight",1),Q(Z0,"paddingTop",1),D(q0,T0("\u262F ZEN")),Q(q0,"wrapMode","none"),Q(q0,"onMouseUp",()=>J.onZenClick?.()),u((U0)=>{var g0=z.accent,V0=d1.BOLD;return g0!==U0.e&&(U0.e=Q(q0,"fg",g0,U0.e)),V0!==U0.t&&(U0.t=Q(q0,"attributes",V0,U0.t)),U0},{e:void 0,t:void 0}),Z0}}),null),K(n,k(Y0,{get when(){return M0()},children:(Z0)=>{let q0=K0(()=>{let y0=Z0().task,u0=[];if(u0.push({text:y0.kind==="main"?Ez(y0.repo):y0.title,bold:!0}),y0.branch.length>0)u0.push({text:`\u2387 ${y0.branch}`});if(y0.worktreePath.length>0)u0.push({text:y0.worktreePath,dim:!0});return u0}),U0=72,g0=K0(()=>Math.min(68,Math.max(...q0().map((y0)=>_j(y0.text))))),V0=K0(()=>g0()+4),P0=K0(()=>q0().length+2),I0=K0(()=>Math.max(0,Math.min(Z0().x+2,H0().width-V0()-1))),p0=K0(()=>Math.max(0,Math.min(Z0().y+1,H0().height-P0()-1)));return(()=>{var y0=W("box");return Q(y0,"position","absolute"),Q(y0,"zIndex",2600),Q(y0,"flexDirection","column"),Q(y0,"border",!0),Q(y0,"paddingLeft",1),Q(y0,"paddingRight",1),K(y0,k(X1,{get each(){return q0()},children:(u0)=>(()=>{var Q1=W("text");return Q(Q1,"wrapMode","none"),K(Q1,(()=>{var W1=C0(()=>!!u0.dim);return()=>W1()?nE(u0.text,g0()):xW(u0.text,g0())})()),u((W1)=>{var V1=u0.dim?z.textMuted:z.text,q1=u0.bold?d1.BOLD:u0.dim?d1.DIM:void 0;return V1!==W1.e&&(W1.e=Q(Q1,"fg",V1,W1.e)),q1!==W1.t&&(W1.t=Q(Q1,"attributes",q1,W1.t)),W1},{e:void 0,t:void 0}),Q1})()})),u((u0)=>{var Q1=I0(),W1=p0(),V1=V0(),q1=z.focusAccent,S=z.backgroundElement;return Q1!==u0.e&&(u0.e=Q(y0,"left",Q1,u0.e)),W1!==u0.t&&(u0.t=Q(y0,"top",W1,u0.t)),V1!==u0.a&&(u0.a=Q(y0,"width",V1,u0.a)),q1!==u0.o&&(u0.o=Q(y0,"borderColor",q1,u0.o)),S!==u0.i&&(u0.i=Q(y0,"backgroundColor",S,u0.i)),u0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),y0})()}}),null),u((Z0)=>{var q0=Z()?z.focusAccent:z.textMuted,U0=d1.BOLD,g0=z.textMuted,V0=d1.DIM;return q0!==Z0.e&&(Z0.e=Q(l0,"fg",q0,Z0.e)),U0!==Z0.t&&(Z0.t=Q(l0,"attributes",U0,Z0.t)),g0!==Z0.a&&(Z0.a=Q(G1,"fg",g0,Z0.a)),V0!==Z0.o&&(Z0.o=Q(G1,"attributes",V0,Z0.o)),Z0},{e:void 0,t:void 0,a:void 0,o:void 0}),n})()}var nM=32,wQ,cE=2000,dE=16,nE;var $M=C(()=>{P();P();P();P();P();P();P();P();P();BJ();P();D1();c1();c1();xM();mj();EM();wM();mM();PX();dM();wQ=[{view:"active"},{view:"archived"}];nE=$j});var oM={};H1(oM,{startTasksPane:()=>_E,legendRowCap:()=>rM,legendCap:()=>pM});import{existsSync as aM}from"fs";import{stat as iE}from"fs/promises";import{TextAttributes as pj}from"@opentui/core";function _M(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 $E(J){let{theme:z}=w0(),Z=_1(),Y=zG(),X=xj(),[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 j0=()=>{c0(["show-options","-wqv","-t",m,xZ]).then(({code:x0,stdout:n})=>{d(x0===0&&n.trim().length>0)})};j0();let z0=setInterval(j0,1000);C1(()=>clearInterval(z0))}}let i=pz();n0(()=>{if(J.initialTaskId)return;let m=J.orch?.activeTaskSignal()();if(!m)return;q(m)}),n0(XJ(()=>J.orch?.uiPrefsSignal()(),(m)=>{if(m&&m.sortMode!==YJ(A))g(m.sortMode);if(m&&m.projectFilter!==YJ(h))I(m.projectFilter)})),n0(()=>{let m=J.orch?.updateSignal()();if(m)y(m)});let t={orch:J.orch,tasks:()=>J.tasks(),confirm:async(m)=>await fz.show(Z,m.title,m.body,m.cancelLabel,m.confirmLabel)===!0,promptText:(m,j0)=>sz.show(Z,m,j0),logger:console,logPrefix:"[kobe tasks]",notifyError:f,notifyInfo:U,reload:()=>J.reload(),switchBeforeKill:!0,updateActiveTask:!0,onTaskDeleted:(m,j0)=>{if(G()!==m)return;let z0=J.tasks();q(j0?.id??(z0.find((x0)=>!x0.archived)??z0[0])?.id??null)},promptNewTask:(m,j0,z0)=>Cj.show(Z,m,j0,z0),cursorRepo:()=>{let m=J.tasks();return(m.find((j0)=>j0.id===G())??m[0])?.repo},lastVendor:()=>cJ(x1("lastSelectedVendor"),nJ()),rememberVendor:(m)=>QJ("lastSelectedVendor",m),openCreateSurface:async(m)=>{if(uY(Y.get(UZ,xY))!=="chattab")return!1;let z0=await hJ();if(!z0)return!1;return await oG(z0,m),!0},selectTask:(m)=>q(m),enterTask:(m)=>j1(m)};async function X0(){await gM(t)}async function G0(){if(uY(Y.get(UZ,xY))==="chattab"){let z0=await hJ();if(z0){await pG(z0);return}}if(!(await iY.show(Z,Y,J.orch??void 0)).visualPrefsChanged)return;if(!Y.flush())return;try{let z0=await hJ();if(z0)await CX(z0)}catch(z0){console.error("[kobe tasks] failed to refresh workspace panes:",z0)}}async function f0(){let m=await hJ();if(m){await rG(m);return}XG.show(Z)}async function _(){if(!M()?.hasUpdate){U(F("tasks.toast.alreadyLatest",{version:e0}));return}let j0=await hJ();if(!j0)return;await sG(j0)}async function O0(m){await FM(t,m)}async function b(m){await MM(t,m)}async function p(m){await OM(t,m)}async function w(m){await AM(t,m)}async function R(m){await RM(t,m)}async function e(m){let z0=J.tasks().find((n)=>n.id===m)?.worktreePath;if(!z0||!aM(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(_M(n));return}await J.reload()}if(!z0||!aM(z0))return;let x0=CM();if(!x0){console.error("[kobe tasks] no editor/opener found; set KOBE_OPEN_EDITOR"),f(F("tasks.toast.noEditor"));return}if(!bM(z0,x0))console.error(`[kobe tasks] failed to open worktree with ${x0.label}`),f(F("tasks.toast.openWorktreeFailed",{label:x0.label}))}async function x(){if(!process.env.TMUX_PANE)return;let m=await hJ();if(!m)return;let j0=await UX(m);if(!j0)return;await i0(["select-pane","-t",j0])}async function $(m,j0){let z0=J.tasks().find((x0)=>x0.id===m);if(!z0||z0.kind==="main"||!J.orch)return;try{await J.orch.moveTask(m,j0)}catch(x0){console.error("[kobe tasks] task.move failed:",x0),f(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(j0){console.error("[kobe tasks] task.pin failed:",j0);return}await J.reload()}async function H0(m){let{togglePreviewMode:j0}=await Promise.resolve().then(() => (UW(),VW));j0(m),await vJ(y1(m)),await j1(m)}let[L0,M0]=s(Y.get("tasksPane.keysCollapsed",!1)===!0),E0=(m)=>{M0(m),Y.set("tasksPane.keysCollapsed",m)};n0(XJ(()=>J.orch?.uiPrefsSignal()(),(m)=>{if(m&&m.keysCollapsed!==YJ(L0))M0(m.keysCollapsed)}));let[b0,J1]=s(!1);M1(()=>({enabled:Z.stack.length===0&&!b0(),bindings:JY({"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":()=>E0(!L0()),"tasks.focusEngine":()=>void x().catch((m)=>console.error("[kobe tasks] focus engine pane failed:",m))})}));async function j1(m){let j0=J.tasks().find((x0)=>x0.id===m);if(!j0)return;let z0=++V;try{await DW(J.orch,j0,j0.repo,j0.vendor,{includeInitPrompt:!0,heal:!0,captureFrom:!0,reload:()=>J.reload(),isCurrent:()=>V===z0})}catch(x0){if(x0 instanceof RZ)if(x0.phase==="no-daemon")f(F("tasks.toast.noDaemonOpen"));else if(x0.phase==="worktree")f(_M(x0.cause??x0));else f(F("tasks.toast.sessionStartFailed"));else console.error("[kobe tasks] switchTo failed:",x0)}}let k0=K0(()=>{let m=M();if(m?.hasUpdate)return{label:`v${m.latest} \u2191`,emphasize:!0};return{label:`v${e0}`,emphasize:!1}}),h0=()=>J.orch?.daemonStaleSignal()()??!1,N0=()=>J.orch?.daemonVersionSignal()()??null,o0=K0(()=>J.tasks().find((m)=>m.id===G())?.kind==="main");return(()=>{var m=W("box"),j0=W("box");return D(m,j0),Q(m,"flexDirection","column"),Q(m,"flexGrow",1),K(m,k(UM,{stale:h0,daemonVersion:N0,clientVersion:e0,width:()=>i().width}),j0),Q(j0,"flexGrow",1),Q(j0,"flexShrink",1),K(j0,k(lM,{get tasks(){return J.tasks},selectedId:G,get onSelect(){return J.initialTaskId?()=>{}:q},get pinnedSelection(){return!!J.initialTaskId},onActivate:(z0)=>void j1(z0),activateOnClick:!0,headerStatus:k0,onHeaderStatusClick:()=>void _(),onAddTask:()=>void X0(),zenActive:c,onZenClick:()=>{(async()=>{let z0=await hJ();if(z0)await kY(z0,"zen-toggle")})()},width:()=>i().width,get engineState(){return C0(()=>!!J.orch)()?J.orch.engineStateSignal():void 0},get taskJobs(){return C0(()=>!!J.orch)()?J.orch.taskJobsSignal():void 0},get worktreeChanges(){return J.orch?()=>{let z0=J.orch;if(!z0||z0.connectionStateSignal()()!=="online")return null;return z0.worktreeChangesSignal()()}:void 0},onRenameRequest:(z0)=>void p(z0),onDeleteRequest:(z0)=>void b(z0),onArchiveRequest:(z0)=>void O0(z0),onPinRequest:(z0)=>void 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 $(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(aE,{moveMode:L,selectedIsMain:o0,collapsed:L0,onToggleCollapsed:()=>E0(!L0())}),null),u((z0)=>Q(m,"backgroundColor",z.background,z0)),m})()}function pM(J){let z=HW(J);if(!z)return null;let Z=z.hint?.keys??z.keys[0];return Z&&Z.length>0?Z:null}function rM(J){let z=J.map(pM).filter((Z)=>Z!==null);return z.length>0?z.join("/"):null}function aE(J){let{theme:z}=w0(),[Z,Y]=s("Prefix");a1(()=>{c0(["show-options","-g","prefix"]).then(({code:U,stdout:L})=>{if(U!==0)return;let O=dj(L);if(O)Y(O)})});let X=()=>{qW();let U=eq(),L=U.binds,O=[],A=U.focus.filter((E)=>E!==null).map((E)=>E.chord);if(A.length===4&&A.every((E,h)=>E===vZ[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=()=>{qW();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=rM(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)=>_j(U.label)))),V=(U)=>{let L=B();if(_j(U)<=L)return U;let O=[...U],A=0,g=0;for(let E of O){let h=(E.codePointAt(0)??0)>=4352?2:1;if(A+h>L-1)break;A+=h,g++}return`${O.slice(0,g).join("")}\u2026`},f=()=>(J.collapsed?.()??!1)&&!(J.moveMode?.()??!1);return(()=>{var U=W("box"),L=W("text");return D(U,L),Q(U,"flexShrink",0),Q(U,"flexDirection","column"),Q(U,"paddingLeft",1),Q(U,"paddingRight",1),Q(U,"paddingTop",1),Q(U,"paddingBottom",1),Q(U,"gap",0),Q(L,"wrapMode","none"),Q(L,"onMouseUp",()=>J.onToggleCollapsed?.()),K(L,(()=>{var O=C0(()=>!!f());return()=>O()?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=T0("["),N=T0("]"),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,()=>YG(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()?pj.DIM:pj.BOLD,t=B(),X0=z.textMuted,G0=A()?pj.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=pj.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 _E(J={}){await FJ({logContext:"tasks",providers:{notifications:!0},setup:()=>pE(J)})}async function pE(J){let z=new cX({homeDir:sJ()});await z.load();let[Z,Y]=s(z.list()),X=null;try{let B=await qz();if(B){let V=new NJ(B);await V.init(),X=V}else XZ("tasks-boot","no daemon running \u2014 polling tasks.json (a gui owns daemon lifecycle)")}catch(B){qJ("tasks-boot",B),XZ("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 uz())return;let B="missing";try{let V=await iE(z.filePath);B=`${V.mtimeMs}:${V.size}`}catch{}if(B===H)return;H=B,await q()})().catch(()=>{})},lE);return{root:()=>[k($E,{tasks:G,get initialTaskId(){return J.initialTaskId},orch:X,reload:q}),k(WM,{})],onDestroy:()=>{if(j)clearInterval(j);X?.dispose()}}}var lE=1500;var sM=C(()=>{P();P();P();P();P();P();P();P();w1();Fz();BJ();P();QY();kJ();D1();tZ();t1();fQ();S1();JH();s1();bJ();AW();eX();RW();SW();VM();KM();JG();xQ();uj();c1();ZG();OW();AZ();IJ();NM();Pj();kM();$M();dZ();HJ();rJ();nj()});var tM={};H1(tM,{startSettingsHost:()=>oE});function rE(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 hJ();if(j)await CX(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(iY,{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 oE(){await FJ({setup:async()=>{let J=null;try{let z=await qz();if(z){let Z=new NJ(z);await Z.init(),J=Z}else console.error("[kobe settings] no daemon running; Restart backend disabled")}catch(z){console.error("[kobe settings] daemon unavailable; Restart backend disabled:",z)}return{root:()=>k(rE,{orchestrator:J}),onDestroy:()=>{J?.dispose()}}}})}var eM=C(()=>{P();P();P();P();P();P();kJ();tZ();SW();xQ();c1();AZ();IJ();HJ();rJ()});var JO={};H1(JO,{startHelpHost:()=>tE});function sE(){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(XG,{onClose:Z})),u((X)=>Q(Y,"backgroundColor",z.background,X)),Y})()}async function tE(){await FJ({providers:{kv:!1,focus:!1},setup:()=>({root:()=>k(sE,{})})})}var zO=C(()=>{P();P();P();P();P();AW();c1();AZ();IJ();rJ()});var ZO={};H1(ZO,{startUpdateHost:()=>Gw});import{spawn as eE,spawnSync as Jw}from"child_process";import{TextAttributes as HG}from"@opentui/core";function zw(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 eE(Z,Y,{stdio:"ignore",detached:!0}).unref(),!0}catch{return!1}}function Zw(J){return J.replace(/\r\n/g,`
|
|
270
270
|
`).split(`
|
|
271
|
-
`).map((z)=>z.trim()).filter(Boolean)}function
|
|
272
|
-
kobe ${
|
|
271
|
+
`).map((z)=>z.trim()).filter(Boolean)}function Yw(){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 Xw(){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=K0(()=>Z()?.latest??e0),L=K0(()=>X()[0]?.url??jB(U())),O=K0(()=>[{id:"update",key:"U",label:F("update.actions.updateNow"),detail:tz},{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 BG({force:!0});Y(I);let N=I?.latest??e0,M=await HB({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(zw(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
273
|
`),process.stdout.write(`running: ${tz}
|
|
274
274
|
|
|
275
|
-
`);let I=
|
|
275
|
+
`);let I=Jw("sh",["-c",tz],{stdio:"inherit"}),N=I.status??(I.error?1:0);if(I.error)process.stderr.write(`
|
|
276
276
|
kobe update: failed to start updater: ${I.error.message}
|
|
277
277
|
`);process.stdout.write(N===0?`
|
|
278
278
|
${F("update.updateComplete")}
|
|
279
279
|
`:`
|
|
280
280
|
${F("update.updateFailed",{code:String(N)})}
|
|
281
|
-
`),process.stdout.write(F("update.pressAnyKey")),await
|
|
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(
|
|
283
|
-
`):""),G=()=>Z()?J.msg.blocks.filter((q)=>q.type!=="text"):J.msg.blocks;return(()=>{var q=W("box");return Q(q,"flexDirection","column"),Q(q,"paddingLeft",1),Q(q,"paddingRight",1),Q(q,"paddingBottom",1),Q(q,"gap",0),K(q,k(Y0,{get when(){return C0(()=>!!Z())()&&X()},get children(){var H=W("box"),j=W("text"),B=W("text");return D(H,j),D(H,B),Q(H,"flexDirection","row"),Q(H,"gap",1),Q(H,"paddingLeft",1),Q(H,"paddingRight",1),D(j,T0("\u276F")),Q(j,"wrapMode","none"),Q(B,"wrapMode","word"),Q(B,"flexGrow",1),K(B,X),K(H,k(Y0,{get when(){return Y()},get children(){var V=W("text");return Q(V,"wrapMode","none"),K(V,Y),u((f)=>Q(V,"fg",z.textMuted,f)),V}}),null),u((V)=>{var{backgroundElement:f,primary:U}=z,L=jG.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,()=>
|
|
284
|
-
`)}function
|
|
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
|
|
281
|
+
`),process.stdout.write(F("update.pressAnyKey")),await Yw(),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=T0("v"),X0=W("text"),G0=W("text"),f0=T0("v"),_=W("box"),O0=W("box"),b=W("text"),p=W("scrollbox"),w=W("box");return D(I,N),D(I,c),D(I,_),D(I,O0),D(I,p),Q(I,"flexDirection","column"),Q(I,"flexGrow",1),Q(I,"paddingTop",1),Q(I,"paddingLeft",2),Q(I,"paddingRight",2),D(N,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,T0("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"),x=W("box"),$=W("text"),Q0=T0("["),H0=T0("]"),L0=W("box"),M0=W("text"),E0=W("text");return D(e,x),D(e,L0),D(e,E0),Q(e,"flexDirection","row"),Q(e,"gap",1),Q(e,"paddingLeft",1),Q(e,"paddingRight",1),Q(e,"onMouseUp",()=>E(R.id)),D(x,$),Q(x,"width",4),Q(x,"flexShrink",0),D($,Q0),D($,H0),Q($,"wrapMode","none"),K($,()=>R.key,H0),D(L0,M0),Q(L0,"width",14),Q(L0,"flexShrink",0),Q(M0,"wrapMode","none"),K(M0,()=>R.label),Q(E0,"wrapMode","word"),K(E0,()=>R.detail),u((b0)=>{var J1=j()===R.id?J.primary:void 0,j1=j()===R.id?J.selectedListItemText:J.accent,k0=HG.BOLD,h0=j()===R.id?J.selectedListItemText:J.text,N0=j()===R.id?J.selectedListItemText:J.textMuted;return J1!==b0.e&&(b0.e=Q(e,"backgroundColor",J1,b0.e)),j1!==b0.t&&(b0.t=Q($,"fg",j1,b0.t)),k0!==b0.a&&(b0.a=Q($,"attributes",k0,b0.a)),h0!==b0.o&&(b0.o=Q(M0,"fg",h0,b0.o)),N0!==b0.i&&(b0.i=Q(E0,"fg",N0,b0.i)),b0},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),e})()})),K(I,k(Y0,{get when(){return V()},get children(){var R=W("text");return Q(R,"wrapMode","word"),K(R,V),u((e)=>Q(R,"fg",J.info,e)),R}}),O0),D(O0,b),Q(O0,"flexShrink",0),Q(O0,"paddingTop",1),Q(b,"wrapMode","none"),K(b,()=>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 C0(()=>!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"),x=W("text"),$=T0("v");return D(e,x),Q(e,"flexDirection","column"),Q(e,"paddingBottom",1),Q(e,"gap",0),D(x,$),Q(x,"wrapMode","none"),K(x,()=>R.version,null),K(e,k(X1,{get each(){return Zw(R.body)},children:(Q0)=>(()=>{var H0=W("text");return Q(H0,"wrapMode","word"),K(H0,Q0),u((L0)=>Q(H0,"fg",J.textMuted,L0)),H0})()}),null),u((Q0)=>{var H0=J.text,L0=HG.BOLD;return H0!==Q0.e&&(Q0.e=Q(x,"fg",H0,Q0.e)),L0!==Q0.t&&(Q0.t=Q(x,"attributes",L0,Q0.t)),Q0},{e:void 0,t:void 0}),e})()}),null),u((R)=>{var{background:e,text:x}=J,$=HG.BOLD,Q0=J.textMuted,H0=J.textMuted,L0=J.text,M0=HG.BOLD,E0=J.textMuted,b0=Z()?.hasUpdate?J.warning:J.success,J1=HG.BOLD,j1=J.textMuted,k0=HG.DIM,h0={trackOptions:{backgroundColor:J.background,foregroundColor:J.borderActive}};return e!==R.e&&(R.e=Q(I,"backgroundColor",e,R.e)),x!==R.t&&(R.t=Q(M,"fg",x,R.t)),$!==R.a&&(R.a=Q(M,"attributes",$,R.a)),Q0!==R.o&&(R.o=Q(y,"fg",Q0,R.o)),H0!==R.i&&(R.i=Q(d,"fg",H0,R.i)),L0!==R.n&&(R.n=Q(i,"fg",L0,R.n)),M0!==R.s&&(R.s=Q(i,"attributes",M0,R.s)),E0!==R.h&&(R.h=Q(X0,"fg",E0,R.h)),b0!==R.r&&(R.r=Q(G0,"fg",b0,R.r)),J1!==R.d&&(R.d=Q(G0,"attributes",J1,R.d)),j1!==R.l&&(R.l=Q(b,"fg",j1,R.l)),k0!==R.u&&(R.u=Q(b,"attributes",k0,R.u)),h0!==R.c&&(R.c=Q(p,"verticalScrollbarOptions",h0,R.c)),R},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0}),I})()}async function Gw(){await FJ({setup:()=>({root:()=>k(Xw,{})})})}var YO=C(()=>{P();P();P();P();P();P();P();P();P();D1();bJ();c1();BJ();AZ();IJ()});function oj(J,z){if(z<3)return 2500;return Math.min(J*2,20000)}function XO(J,z,Z){if(z)return 1500;if(Z==="running")return 1500;return Math.min(J*2,6000)}var rj=2500,PQ=1500;var QO={};H1(QO,{startHistoryHost:()=>Kw});import{TextAttributes as jG}from"@opentui/core";function Qw(J){let z=J.lastIndexOf("/");return z>=0?J.slice(z+1):J}function qw(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 Hw(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>tj?`${Y.slice(0,tj-1)}\u2026`:Y}try{let z=JSON.stringify(J);if(!z||z==="{}"||z==="null")return"";return z.length>tj?`${z.slice(0,tj-1)}\u2026`:z}catch{return""}}function jw(J){if(typeof J==="string")return J;try{return JSON.stringify(J,null,2)}catch{return String(J)}}function Bw(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 GO(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 fw(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 C0(()=>!!J.expanded)()&&Z.text.trim()},get children(){return k(GO,{get text(){return Z.text}})}}),null),u((G)=>{var q=z.textMuted,H=jG.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?jw(J.result.output):"",G=Hw(Z.input);return(()=>{var q=W("box"),H=W("box"),j=W("text"),B=W("text");return D(q,H),Q(q,"flexDirection","column"),D(H,j),D(H,B),Q(H,"flexDirection","row"),Q(H,"gap",1),D(j,T0("\u23FA")),Q(j,"wrapMode","none"),Q(B,"wrapMode","none"),K(B,()=>Z.name),K(H,k(Y0,{when:G,get children(){var V=W("text");return Q(V,"wrapMode","none"),K(V,G),u((f)=>Q(V,"fg",z.textMuted,f)),V}}),null),K(q,k(Y0,{get when(){return C0(()=>!!J.expanded)()&&X.trim()},get children(){return k(GO,{text:X,get error(){return J.result?.isError}})}}),null),u((V)=>{var f=Y?z.success:z.error,U=z.text,L=jG.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 Ww(J){return J==="assistant"?F("history.role.assistant"):J==="system"?F("history.role.system"):F("history.role.user")}function Vw(J){let{theme:z}=w0(),Z=()=>J.msg.role==="user",Y=()=>qw(J.msg.timestamp),X=K0(()=>Z()?J.msg.blocks.filter((q)=>q.type==="text"&&q.text.trim().length>0).map((q)=>q.text).join(`
|
|
283
|
+
`):""),G=()=>Z()?J.msg.blocks.filter((q)=>q.type!=="text"):J.msg.blocks;return(()=>{var q=W("box");return Q(q,"flexDirection","column"),Q(q,"paddingLeft",1),Q(q,"paddingRight",1),Q(q,"paddingBottom",1),Q(q,"gap",0),K(q,k(Y0,{get when(){return C0(()=>!!Z())()&&X()},get children(){var H=W("box"),j=W("text"),B=W("text");return D(H,j),D(H,B),Q(H,"flexDirection","row"),Q(H,"gap",1),Q(H,"paddingLeft",1),Q(H,"paddingRight",1),D(j,T0("\u276F")),Q(j,"wrapMode","none"),Q(B,"wrapMode","word"),Q(B,"flexGrow",1),K(B,X),K(H,k(Y0,{get when(){return Y()},get children(){var V=W("text");return Q(V,"wrapMode","none"),K(V,Y),u((f)=>Q(V,"fg",z.textMuted,f)),V}}),null),u((V)=>{var{backgroundElement:f,primary:U}=z,L=jG.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,()=>Ww(J.msg.role)),u((j)=>{var B=z.textMuted,V=jG.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(fw,{block:H,get result(){return C0(()=>H.type==="tool_call")()?J.results.get(H.callId):void 0},get expanded(){return J.expanded}})}),null),q})()}function Uw(J){let{theme:z}=w0(),Z=J.reader??JJ(J.vendor).history,[Y,X]=s(0),[G]=UY(()=>[J.worktree,Y()],async([y])=>{try{return await Z.listSessionIdsForWorktree(y)}catch{return[]}}),q=()=>G.latest??[],[H,j]=s(0),B=0;n0(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]=UY(()=>{let y=V();return y?[y,Y()]:void 0},async([y])=>{try{return await Z.readHistory(y)}catch{return[]}}),U=()=>f.latest??[],L=K0(()=>Bw(U())),O=K0(()=>U().reduce((y,c)=>y+(c.usage?.output_tokens??0),0)),[A,g]=s(!1);a1(()=>{let y=!1,c,d=rj,i=0,t=0,X0=!1;async function G0(){if(!await uz()){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=oj(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)})};n0(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(sj)},{key:"k",cmd:()=>h(-sj)},{key:"down",cmd:()=>h(sj)},{key:"up",cmd:()=>h(-sj)},{key:"[",cmd:()=>I(-1)},{key:"]",cmd:()=>I(1)},{key:"return",cmd:()=>g((y)=>!y)}]}));let N=()=>J.title?.trim()||Qw(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 _=C0(()=>!!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((O0)=>Q(_,"fg",z.textMuted,O0)),_}}),t),Q(t,"flexGrow",1),K(c,k(Y0,{get when(){return O()>0},get children(){var _=W("text");return Q(_,"wrapMode","none"),K(_,()=>`${O()} tok`),u((O0)=>Q(_,"fg",z.textMuted,O0)),_}}),null),Hz((_)=>{E=_},X0),Q(X0,"flexGrow",1),Q(X0,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),K(X0,k(Y0,{get when(){return G.latest!==void 0},get fallback(){return(()=>{var _=W("box"),O0=W("text");return D(_,O0),Q(_,"paddingTop",1),Q(_,"paddingLeft",1),K(O0,()=>F("history.loading")),u((b)=>Q(O0,"fg",z.textMuted,b)),_})()},get children(){return k(Y0,{get when(){return U().length>0},get fallback(){return(()=>{var _=W("box"),O0=W("text");return D(_,O0),Q(_,"paddingTop",1),Q(_,"paddingLeft",1),K(O0,()=>F("history.empty")),u((b)=>Q(O0,"fg",z.textMuted,b)),_})()},get children(){return k(X1,{get each(){return U()},children:(_)=>k(Vw,{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 _=C0(()=>!!A());return()=>_()?F("history.hintExpanded"):F("history.hint")})()),u((_)=>{var{background:O0,backgroundElement:b}=z,p=J.live?z.success:z.warning,w=jG.BOLD,R=z.accent,e=jG.BOLD,x=z.backgroundElement,$=z.textMuted;return O0!==_.e&&(_.e=Q(y,"backgroundColor",O0,_.e)),b!==_.t&&(_.t=Q(c,"backgroundColor",b,_.t)),p!==_.a&&(_.a=Q(d,"fg",p,_.a)),w!==_.o&&(_.o=Q(d,"attributes",w,_.o)),R!==_.i&&(_.i=Q(i,"fg",R,_.i)),e!==_.n&&(_.n=Q(i,"attributes",e,_.n)),x!==_.s&&(_.s=Q(G0,"backgroundColor",x,_.s)),$!==_.h&&(_.h=Q(f0,"fg",$,_.h)),_},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0}),y})()}async function Kw(J){await FJ({logContext:"history",providers:{kv:!1,focus:!1},setup:()=>({root:()=>k(Uw,J)})})}var sj=3,tj=120;var qO=C(()=>{P();P();P();P();P();P();P();P();P();qZ();D1();c1();BJ();ZG();AZ();IJ()});function Dw(J){return J.trim().split(/\s+/)[0]??""}function jO(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=Dw(G);if(!q)return null;let H=G.includes(HO)?G.split(HO).join(X):`${G} ${X}`;return{bin:q,command:H}}function Lw(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 Fw(J,z){let Z=J.endsWith("/")?J:`${J}/`;return z.startsWith(Z)?z.slice(Z.length):null}async function Mw(J){let z=TX(x1(VZ)),Z=x1($Z)??"",Y=(process.env.VISUAL??process.env.EDITOR??"").trim();if(z!=="auto")return jO(z,Z,J,Y);if(Y)return jO("custom","",J,Y);let X=Z1(J);for(let G of F6)if(await BO(G))return{bin:G,command:`${G} ${X}`};return null}async function BO(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 Ow(J,z){try{return await Bun.spawn(["git","diff","--quiet","HEAD","--",z],{cwd:J,stdin:"ignore",stdout:"ignore",stderr:"ignore",env:_J()}).exited===1}catch{return!1}}async function fO(J,z,Z){let Y=await Mw(Z);if(!Y)return!1;if(!await BO(Y.bin))return!1;let X=await Aw(Y,z,Z);return await bz(J,{cwd:z,command:X,name:Rw(Z)}),!0}async function Aw(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=Fw(z,Z);if(!G)return X;if(!await Ow(z,G))return X;return Lw(Y,Z,G)}function Rw(J){let z=J.slice(J.lastIndexOf("/")+1).trim();return z.length>0?z:"edit"}var HO="{file}";var WO=C(()=>{aZ();S1();cH();w1();Fz()});async function ej(J,z,Z){if(!z)throw Error("git(): cwd is required");let Y=await xX(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 UO(J,z){let Y=(await ej(["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 KO(J,z){let Z=await ej(["status","--porcelain","--untracked-files=all"],J,z),Y=Nw(Z),X=new Map;try{let H=await ej(["diff","--no-color","--numstat","HEAD"],J,z);X=new Map(VO(H).map((j)=>[j.path,{added:j.added,deleted:j.deleted}]))}catch{try{let H=await ej(["diff","--no-color","--numstat","--cached"],J,z);X=new Map(VO(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 gw(J,H.path,z);if(j!=null)H.added=j,H.deleted=0}));return G}async function gw(J,z,Z){if(Z?.aborted)return null;let Y=await iH(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
286
|
`)X++;if(!Y.endsWith(`
|
|
287
|
-
`))X++;return X}function fO(J){return R6(J).map((z)=>({path:z.path,added:z.added,deleted:z.deleted}))}function UO(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 KO(z),z}function KO(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)KO(z)}function Fw(J){let z=[];for(let Z of cH(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 DO=C(()=>{dH();iH()});function LO(J){M1(()=>({enabled:J.focused(),bindings:JY({"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=ej.indexOf(Y);if(X<0)return;let G=(Z??0)%2===0?-1:1,q=ej[(X+G+ej.length)%ej.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 ej;var FO=C(()=>{JG();IJ();ej=["all","changes"]});import{spawn as MO}from"child_process";import{existsSync as Mw}from"fs";import{platform as Ow}from"os";function OO(J){if(!J)return;let z=Ow();if(z==="linux"){if(Mw("/proc/sys/fs/binfmt_misc/WSLInterop")||process.env.WSL_DISTRO_NAME){PQ("wslview",[J],()=>{let Z=MO("wslpath",["-w",J],{stdio:["ignore","pipe","ignore"]}),Y="";Z.stdout?.on("data",(X)=>{Y+=X.toString()}),Z.on("close",(X)=>{if(X===0)PQ("explorer.exe",[Y.trim()])})});return}PQ("xdg-open",[J]);return}if(z==="darwin"){PQ("open",[J]);return}if(z==="win32"){PQ("cmd.exe",["/c","start","",J]);return}}function PQ(J,z,Z){try{let Y=MO(J,z,{stdio:"ignore",detached:!0});Y.on("error",()=>Z?.()),Y.unref()}catch{Z?.()}}var AO=()=>{};function hW(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)hW(X,z,Z+1,Y)}else Y.push({kind:"file",path:X.path,name:X.name,depth:Z})}function RO(J,z){return lj(J,z)}function gO(J){return J.map((z)=>({kind:"status",path:z.path,status:z.status,added:z.added,deleted:z.deleted}))}function Aw(J){return`${J.kind}\x00${J.path}`}function Rw(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 NO(J,z){return hj(J,z,Aw,Rw)}function CO(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 bO(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 kO=()=>{};import{watch as gw}from"fs";import{TextAttributes as hQ}from"@opentui/core";function Nw(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 bw(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 kw(J){switch(J){case"all":return F("files.tabs.all");case"changes":return F("files.tabs.changes")}}function IO(J){let{theme:z}=w0(),Z=pz(),Y=()=>J.focused?J.focused():!0,[X,G]=s("all"),[q,H]=s(0),[j,B]=s(0),[V,f]=s(null,{equals:CO}),[U,L]=s(null,{equals:bO}),[O,A]=s(null),[g,E]=s(new Set),h=0;async function I(p,w,R){let e=++h;if(w==null){f(null),L(null),A(null);return}A(null);try{if(p==="all"){let x=await WO(w,R);if(R?.aborted||e!==h||J.worktreePath()!==w)return;f(x)}else if(p==="changes"){let x=await VO(w,R);if(R?.aborted||e!==h||J.worktreePath()!==w)return;L(x)}}catch(x){if(R?.aborted)return;let $=x instanceof Error?x.message:String(x);if(e===h&&J.worktreePath()===w)A($)}}n0(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)})),n0(XJ(J.worktreePath,(p)=>{if(p==null)return;if(process.env.KOBE_FILETREE_WATCH!=="1")return;let w=null,R=null;try{R=gw(p,{recursive:!0},(e,x)=>{if(x==null)return;let $=x.toString();if($===".git"||$.startsWith(".git/")||$.startsWith(".git\\"))return;if($.startsWith("node_modules/")||$.startsWith("node_modules\\"))return;if(w!=null)clearTimeout(w);w=setTimeout(()=>{w=null,B((Q0)=>Q0+1)},500)}),R.on("error",()=>{})}catch{}C1(()=>{if(w!=null)clearTimeout(w);if(R!=null)R.close()})})),n0(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)}})),n0(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=K0(()=>{let p=V();if(p==null)return null;return UO(p)}),M=K0((p)=>{let w=[];if(X()==="all"){let R=N();if(R!=null)hW(R,g(),0,w)}else if(X()==="changes"){let R=U();if(R!=null)w.push(...gO(R))}return NO(p??[],w)},[]);n0(XJ(M,(p)=>{if(p.length===0)return;if(q()>p.length-1)H(p.length-1)}));let y=K0(()=>{let p=0,w=0;for(let R of 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=K0(()=>{let p=y(),w=(p.added>0?p.added+1:0)+(p.deleted>0?p.deleted+1:0);return Math.max(8,Z().width-6-w)});function d(){let p=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 x=new Set(e);return x.add(R.path),x});else if(R.expanded){if(w+1<p.length)H(w+1)}}function X0(){if(X()!=="all")return;let p=M(),w=q(),R=p[w];if(!R)return;if(R.kind==="dir"&&R.expanded){E((x)=>{let $=new Set(x);return $.delete(R.path),$});return}if(R.kind!=="dir"&&R.kind!=="file")return;let e=R.depth-1;if(e<0)return;for(let x=w-1;x>=0;x--){let $=p[x];if(!$)continue;if($.kind==="dir"&&$.depth===e){H(x);return}}}function 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 x=new Set(e);if(x.has(R.path))x.delete(R.path);else x.add(R.path);return x});return}J.onOpenFile(R.path)}function f0(){let p=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 O0(){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 x=`${e}/${R.path}`;OO(x)}LO({focused:Y,moveDown:d,moveUp:i,setTab:(p)=>G(p),currentTab:X,openCurrent:G0,mentionCurrent:f0,createPR:J.onCreatePR,openExternal:O0,refresh:_,expandOrDescend:t,collapseOrParent:X0});let b;return n0(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 x=W("box");return Q(x,"flexDirection","row"),Q(x,"justifyContent","flex-end"),Q(x,"gap",2),Q(x,"paddingBottom",1),Q(x,"flexShrink",0),K(x,k(Y0,{get when(){return J.onZenToggle},get children(){var $=W("box"),Q0=W("text"),H0=W("text");return D($,Q0),D($,H0),Q($,"flexDirection","row"),Q($,"gap",1),Q($,"onMouseUp",()=>J.onZenToggle?.()),D(Q0,T0("[~]")),Q(Q0,"wrapMode","none"),Q(H0,"wrapMode","none"),K(H0,()=>F("files.actions.zen")),u((L0)=>{var M0=z.accent,E0=hQ.BOLD,b0=z.text;return M0!==L0.e&&(L0.e=Q(Q0,"fg",M0,L0.e)),E0!==L0.t&&(L0.t=Q(Q0,"attributes",E0,L0.t)),b0!==L0.a&&(L0.a=Q(H0,"fg",b0,L0.a)),L0},{e:void 0,t:void 0,a:void 0}),$}}),null),K(x,k(Y0,{get when(){return J.onCreatePR},get children(){var $=W("box"),Q0=W("text"),H0=W("text");return D($,Q0),D($,H0),Q($,"flexDirection","row"),Q($,"gap",1),Q($,"onMouseUp",()=>J.onCreatePR?.()),D(Q0,T0("[P]")),Q(Q0,"wrapMode","none"),Q(H0,"wrapMode","none"),K(H0,()=>F("files.actions.createPR")),u((L0)=>{var M0=z.accent,E0=hQ.BOLD,b0=z.text;return M0!==L0.e&&(L0.e=Q(Q0,"fg",M0,L0.e)),E0!==L0.t&&(L0.t=Q(Q0,"attributes",E0,L0.t)),b0!==L0.a&&(L0.a=Q(H0,"fg",b0,L0.a)),L0},{e:void 0,t:void 0,a:void 0}),$}}),null),x}}),w),D(w,R),Q(w,"flexDirection","row"),Q(w,"justifyContent","space-between"),Q(w,"paddingBottom",0),Q(w,"flexShrink",0),Q(R,"flexDirection","row"),Q(R,"gap",2),K(R,k(Y1,{each:Cw,children:(x)=>{let $=()=>X()===x;return(()=>{var Q0=W("text");return Q(Q0,"wrapMode","none"),Q(Q0,"onMouseUp",()=>G(x)),K(Q0,()=>kw(x)),u((H0)=>{var L0=$()?z.primary:z.textMuted,M0=$()?hQ.BOLD:void 0;return L0!==H0.e&&(H0.e=Q(Q0,"fg",L0,H0.e)),M0!==H0.t&&(H0.t=Q(Q0,"attributes",M0,H0.t)),H0},{e:void 0,t:void 0}),Q0})()}})),K(w,k(Y0,{get when(){return J.cornerBadge?.()},children:(x)=>(()=>{var $=W("text");return Q($,"wrapMode","none"),K($,()=>x().text),u((Q0)=>{var H0=x().active?z.accent:z.textMuted,L0=x().active?hQ.BOLD:void 0;return H0!==Q0.e&&(Q0.e=Q($,"fg",H0,Q0.e)),L0!==Q0.t&&(Q0.t=Q($,"attributes",L0,Q0.t)),Q0},{e:void 0,t:void 0}),$})()}),null),K(p,k(Y0,{get when(){return X()==="changes"},get children(){var x=W("box"),$=W("text");return D(x,$),Q(x,"flexDirection","column"),Q(x,"paddingBottom",1),Q(x,"flexShrink",0),Q(x,"gap",0),Q($,"wrapMode","none"),K($,()=>F("files.legend.changes")),u((Q0)=>Q($,"fg",z.textMuted,Q0)),x}}),e),K(p,k(Y0,{get when(){return X()!=="changes"},get children(){var x=W("box");return Q(x,"flexDirection","row"),Q(x,"paddingBottom",1),Q(x,"flexShrink",0),x}}),e),Hz((x)=>{b=x},e),Q(e,"flexGrow",1),Q(e,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),K(e,k(Y0,{get when(){return J.worktreePath()==null},get children(){var x=W("box"),$=W("text");return D(x,$),Q(x,"paddingTop",1),Q(x,"paddingLeft",1),K($,()=>F("files.empty.noTask")),u((Q0)=>Q($,"fg",z.textMuted,Q0)),x}}),null),K(e,k(Y0,{get when(){return C0(()=>J.worktreePath()!=null)()&&O()!=null},get children(){var x=W("box"),$=W("text"),Q0=W("text");return D(x,$),D(x,Q0),Q(x,"paddingTop",1),Q(x,"paddingLeft",1),Q(x,"flexDirection","column"),Q(x,"gap",0),Q($,"wrapMode","word"),K($,()=>bw(O()??"")),Q(Q0,"wrapMode","word"),K(Q0,()=>F("files.error.retryHint")),u((H0)=>{var{error:L0,textMuted:M0}=z;return L0!==H0.e&&(H0.e=Q($,"fg",L0,H0.e)),M0!==H0.t&&(H0.t=Q(Q0,"fg",M0,H0.t)),H0},{e:void 0,t:void 0}),x}}),null),K(e,k(Y0,{get when(){return C0(()=>J.worktreePath()!=null&&O()==null&&M().length===0)()&&(X()==="all"&&V()!=null||X()==="changes"&&U()!=null)},get children(){var x=W("box"),$=W("text");return D(x,$),Q(x,"paddingTop",1),Q(x,"paddingLeft",1),K($,(()=>{var Q0=C0(()=>X()==="all");return()=>Q0()?F("files.empty.noFiles"):F("files.empty.noChanges")})()),u((Q0)=>Q($,"fg",z.textMuted,Q0)),x}}),null),K(e,k(Y0,{get when(){return C0(()=>J.worktreePath()!=null&&O()==null)()&&M().length>0},get children(){var x=W("box");return Q(x,"flexShrink",0),Q(x,"gap",0),Q(x,"paddingRight",1),K(x,k(Y1,{get each(){return M()},children:($,Q0)=>{let H0=()=>Q0()===q(),L0=(()=>{var h0=W("text");return Q(h0,"wrapMode","none"),K(h0,()=>H0()?"\u258C":" "),u((N0)=>Q(h0,"fg",H0()?z.focusAccent:void 0,N0)),h0})(),M0=()=>H0()?z.backgroundElement:void 0;if($.kind==="dir"){let h0=" ".repeat($.depth),N0=$.expanded?"\u25BE":"\u25B8";return(()=>{var o0=W("box"),m=W("box"),j0=W("text");return D(o0,m),Q(o0,"flexDirection","row"),Q(o0,"gap",0),Q(o0,"onMouseUp",()=>{H(Q0()),E((z0)=>{let x0=new Set(z0);if(x0.has($.path))x0.delete($.path);else x0.add($.path);return x0})}),K(o0,L0,m),D(m,j0),Q(m,"flexGrow",1),Q(m,"paddingRight",1),Q(j0,"wrapMode","none"),K(j0,()=>`${h0}${N0} ${$.name}/`),u((z0)=>{var x0=M0(),n=z.textMuted,W0=hQ.BOLD;return x0!==z0.e&&(z0.e=Q(o0,"backgroundColor",x0,z0.e)),n!==z0.t&&(z0.t=Q(j0,"fg",n,z0.t)),W0!==z0.a&&(z0.a=Q(j0,"attributes",W0,z0.a)),z0},{e:void 0,t:void 0,a:void 0}),o0})()}if($.kind==="file"){let h0=" ".repeat($.depth);return(()=>{var N0=W("box"),o0=W("box"),m=W("text");return D(N0,o0),Q(N0,"flexDirection","row"),Q(N0,"gap",0),Q(N0,"onMouseUp",()=>{H(Q0()),J.onOpenFile($.path)}),K(N0,L0,o0),D(o0,m),Q(o0,"flexGrow",1),Q(o0,"paddingRight",1),Q(m,"wrapMode","none"),K(m,()=>`${h0} ${$.name}`),u((j0)=>{var z0=M0(),x0=z.text;return z0!==j0.e&&(j0.e=Q(N0,"backgroundColor",z0,j0.e)),x0!==j0.t&&(j0.t=Q(m,"fg",x0,j0.t)),j0},{e:void 0,t:void 0}),N0})()}let E0=Nw($.status),b0=()=>{switch(E0){case"success":return z.success;case"warning":return z.warning;case"error":return z.error;case"info":return z.info;default:return z.textMuted}},e0=y(),j1=$.added==null?" ".repeat(e0.added):`+${$.added}`.padStart(e0.added),k0=$.deleted==null?" ".repeat(e0.deleted):`-${$.deleted}`.padStart(e0.deleted);return(()=>{var h0=W("box"),N0=W("box"),o0=W("text"),m=W("text");return D(h0,N0),Q(h0,"flexDirection","row"),Q(h0,"gap",0),Q(h0,"onMouseUp",()=>{H(Q0()),J.onOpenFile($.path)}),K(h0,L0,N0),D(N0,o0),D(N0,m),Q(N0,"flexDirection","row"),Q(N0,"flexGrow",1),Q(N0,"gap",1),Q(N0,"paddingRight",1),Q(o0,"wrapMode","none"),K(o0,()=>$.status),Q(m,"wrapMode","none"),Q(m,"flexGrow",1),K(m,()=>RO($.path,c())),K(N0,k(Y0,{get when(){return e0.added>0},get children(){var j0=W("text");return Q(j0,"wrapMode","none"),K(j0,j1),u((z0)=>Q(j0,"fg",z.success,z0)),j0}}),null),K(N0,k(Y0,{get when(){return e0.deleted>0},get children(){var j0=W("text");return Q(j0,"wrapMode","none"),K(j0,k0),u((z0)=>Q(j0,"fg",z.error,z0)),j0}}),null),u((j0)=>{var z0=M0(),x0=b0(),n=z.text;return z0!==j0.e&&(j0.e=Q(h0,"backgroundColor",z0,j0.e)),x0!==j0.t&&(j0.t=Q(o0,"fg",x0,j0.t)),n!==j0.a&&(j0.a=Q(m,"fg",n,j0.a)),j0},{e:void 0,t:void 0,a:void 0}),h0})()}})),x}}),null),K(p,k(Y0,{get when(){return J.worktreePath()!=null},get children(){var x=W("box"),$=W("text");return D(x,$),Q(x,"flexDirection","row"),Q(x,"paddingTop",1),Q(x,"flexShrink",0),Q($,"wrapMode","none"),K($,()=>F("files.footer.openHint")),u((Q0)=>Q($,"fg",z.textMuted,Q0)),x}}),null),p})()}var Cw;var SO=C(()=>{P();P();P();P();P();P();P();P();P();BJ();P();D1();d1();DO();FO();AO();kO();Cw=["all","changes"]});import{promises as Iw}from"fs";import Sw from"path";async function J9(J,z){let Z=new AbortController,Y=setTimeout(()=>Z.abort(),yw);try{let X=await HZ("git",z,{cwd:J,env:_J(),signal:Z.signal});if(Z.signal.aborted)return null;if(X.status!==0)return null;return X.stdout.trim()}finally{clearTimeout(Y)}}async function Tw(J){return await J9(J,["rev-parse","--abbrev-ref","HEAD"])||"HEAD"}async function xw(J){let z=await J9(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 J9(J,["rev-parse","--abbrev-ref","@{u}"]);return z!==null&&z.length>0}async function Ew(J){let z=await J9(J,["status","--porcelain"]);if(!z)return 0;return z.split(`
|
|
288
|
-
`).filter((Z)=>Z.length>0).length}async function
|
|
287
|
+
`))X++;return X}function VO(J){return g6(J).map((z)=>({path:z.path,added:z.added,deleted:z.deleted}))}function DO(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 LO(z),z}function LO(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)LO(z)}function Nw(J){let z=[];for(let Z of dH(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 FO=C(()=>{nH();lH()});function MO(J){M1(()=>({enabled:J.focused(),bindings:JY({"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=JB.indexOf(Y);if(X<0)return;let G=(Z??0)%2===0?-1:1,q=JB[(X+G+JB.length)%JB.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 JB;var OO=C(()=>{JG();IJ();JB=["all","changes"]});import{spawn as AO}from"child_process";import{existsSync as Cw}from"fs";import{platform as bw}from"os";function RO(J){if(!J)return;let z=bw();if(z==="linux"){if(Cw("/proc/sys/fs/binfmt_misc/WSLInterop")||process.env.WSL_DISTRO_NAME){hQ("wslview",[J],()=>{let Z=AO("wslpath",["-w",J],{stdio:["ignore","pipe","ignore"]}),Y="";Z.stdout?.on("data",(X)=>{Y+=X.toString()}),Z.on("close",(X)=>{if(X===0)hQ("explorer.exe",[Y.trim()])})});return}hQ("xdg-open",[J]);return}if(z==="darwin"){hQ("open",[J]);return}if(z==="win32"){hQ("cmd.exe",["/c","start","",J]);return}}function hQ(J,z,Z){try{let Y=AO(J,z,{stdio:"ignore",detached:!0});Y.on("error",()=>Z?.()),Y.unref()}catch{Z?.()}}var gO=()=>{};function vW(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)vW(X,z,Z+1,Y)}else Y.push({kind:"file",path:X.path,name:X.name,depth:Z})}function NO(J,z){return $j(J,z)}function CO(J){return J.map((z)=>({kind:"status",path:z.path,status:z.status,added:z.added,deleted:z.deleted}))}function kw(J){return`${J.kind}\x00${J.path}`}function Iw(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 bO(J,z){return vj(J,z,kw,Iw)}function kO(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 IO(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 SO=()=>{};import{watch as Sw}from"fs";import{TextAttributes as vQ}from"@opentui/core";function yw(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 xw(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 uw(J){switch(J){case"all":return F("files.tabs.all");case"changes":return F("files.tabs.changes")}}function yO(J){let{theme:z}=w0(),Z=pz(),Y=()=>J.focused?J.focused():!0,[X,G]=s("all"),[q,H]=s(0),[j,B]=s(0),[V,f]=s(null,{equals:kO}),[U,L]=s(null,{equals:IO}),[O,A]=s(null),[g,E]=s(new Set),h=0;async function I(p,w,R){let e=++h;if(w==null){f(null),L(null),A(null);return}A(null);try{if(p==="all"){let x=await UO(w,R);if(R?.aborted||e!==h||J.worktreePath()!==w)return;f(x)}else if(p==="changes"){let x=await KO(w,R);if(R?.aborted||e!==h||J.worktreePath()!==w)return;L(x)}}catch(x){if(R?.aborted)return;let $=x instanceof Error?x.message:String(x);if(e===h&&J.worktreePath()===w)A($)}}n0(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)})),n0(XJ(J.worktreePath,(p)=>{if(p==null)return;if(process.env.KOBE_FILETREE_WATCH!=="1")return;let w=null,R=null;try{R=Sw(p,{recursive:!0},(e,x)=>{if(x==null)return;let $=x.toString();if($===".git"||$.startsWith(".git/")||$.startsWith(".git\\"))return;if($.startsWith("node_modules/")||$.startsWith("node_modules\\"))return;if(w!=null)clearTimeout(w);w=setTimeout(()=>{w=null,B((Q0)=>Q0+1)},500)}),R.on("error",()=>{})}catch{}C1(()=>{if(w!=null)clearTimeout(w);if(R!=null)R.close()})})),n0(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)}})),n0(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=K0(()=>{let p=V();if(p==null)return null;return DO(p)}),M=K0((p)=>{let w=[];if(X()==="all"){let R=N();if(R!=null)vW(R,g(),0,w)}else if(X()==="changes"){let R=U();if(R!=null)w.push(...CO(R))}return bO(p??[],w)},[]);n0(XJ(M,(p)=>{if(p.length===0)return;if(q()>p.length-1)H(p.length-1)}));let y=K0(()=>{let p=0,w=0;for(let R of 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=K0(()=>{let p=y(),w=(p.added>0?p.added+1:0)+(p.deleted>0?p.deleted+1:0);return Math.max(8,Z().width-6-w)});function d(){let p=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 x=new Set(e);return x.add(R.path),x});else if(R.expanded){if(w+1<p.length)H(w+1)}}function X0(){if(X()!=="all")return;let p=M(),w=q(),R=p[w];if(!R)return;if(R.kind==="dir"&&R.expanded){E((x)=>{let $=new Set(x);return $.delete(R.path),$});return}if(R.kind!=="dir"&&R.kind!=="file")return;let e=R.depth-1;if(e<0)return;for(let x=w-1;x>=0;x--){let $=p[x];if(!$)continue;if($.kind==="dir"&&$.depth===e){H(x);return}}}function 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 x=new Set(e);if(x.has(R.path))x.delete(R.path);else x.add(R.path);return x});return}J.onOpenFile(R.path)}function f0(){let p=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 O0(){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 x=`${e}/${R.path}`;RO(x)}MO({focused:Y,moveDown:d,moveUp:i,setTab:(p)=>G(p),currentTab:X,openCurrent:G0,mentionCurrent:f0,createPR:J.onCreatePR,openExternal:O0,refresh:_,expandOrDescend:t,collapseOrParent:X0});let b;return n0(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 x=W("box");return Q(x,"flexDirection","row"),Q(x,"justifyContent","flex-end"),Q(x,"gap",2),Q(x,"paddingBottom",1),Q(x,"flexShrink",0),K(x,k(Y0,{get when(){return J.onZenToggle},get children(){var $=W("box"),Q0=W("text"),H0=W("text");return D($,Q0),D($,H0),Q($,"flexDirection","row"),Q($,"gap",1),Q($,"onMouseUp",()=>J.onZenToggle?.()),D(Q0,T0("[~]")),Q(Q0,"wrapMode","none"),Q(H0,"wrapMode","none"),K(H0,()=>F("files.actions.zen")),u((L0)=>{var M0=z.accent,E0=vQ.BOLD,b0=z.text;return M0!==L0.e&&(L0.e=Q(Q0,"fg",M0,L0.e)),E0!==L0.t&&(L0.t=Q(Q0,"attributes",E0,L0.t)),b0!==L0.a&&(L0.a=Q(H0,"fg",b0,L0.a)),L0},{e:void 0,t:void 0,a:void 0}),$}}),null),K(x,k(Y0,{get when(){return J.onCreatePR},get children(){var $=W("box"),Q0=W("text"),H0=W("text");return D($,Q0),D($,H0),Q($,"flexDirection","row"),Q($,"gap",1),Q($,"onMouseUp",()=>J.onCreatePR?.()),D(Q0,T0("[P]")),Q(Q0,"wrapMode","none"),Q(H0,"wrapMode","none"),K(H0,()=>F("files.actions.createPR")),u((L0)=>{var M0=z.accent,E0=vQ.BOLD,b0=z.text;return M0!==L0.e&&(L0.e=Q(Q0,"fg",M0,L0.e)),E0!==L0.t&&(L0.t=Q(Q0,"attributes",E0,L0.t)),b0!==L0.a&&(L0.a=Q(H0,"fg",b0,L0.a)),L0},{e:void 0,t:void 0,a:void 0}),$}}),null),x}}),w),D(w,R),Q(w,"flexDirection","row"),Q(w,"justifyContent","space-between"),Q(w,"paddingBottom",0),Q(w,"flexShrink",0),Q(R,"flexDirection","row"),Q(R,"gap",2),K(R,k(X1,{each:Tw,children:(x)=>{let $=()=>X()===x;return(()=>{var Q0=W("text");return Q(Q0,"wrapMode","none"),Q(Q0,"onMouseUp",()=>G(x)),K(Q0,()=>uw(x)),u((H0)=>{var L0=$()?z.primary:z.textMuted,M0=$()?vQ.BOLD:void 0;return L0!==H0.e&&(H0.e=Q(Q0,"fg",L0,H0.e)),M0!==H0.t&&(H0.t=Q(Q0,"attributes",M0,H0.t)),H0},{e:void 0,t:void 0}),Q0})()}})),K(w,k(Y0,{get when(){return J.cornerBadge?.()},children:(x)=>(()=>{var $=W("text");return Q($,"wrapMode","none"),K($,()=>x().text),u((Q0)=>{var H0=x().active?z.accent:z.textMuted,L0=x().active?vQ.BOLD:void 0;return H0!==Q0.e&&(Q0.e=Q($,"fg",H0,Q0.e)),L0!==Q0.t&&(Q0.t=Q($,"attributes",L0,Q0.t)),Q0},{e:void 0,t:void 0}),$})()}),null),K(p,k(Y0,{get when(){return X()==="changes"},get children(){var x=W("box"),$=W("text");return D(x,$),Q(x,"flexDirection","column"),Q(x,"paddingBottom",1),Q(x,"flexShrink",0),Q(x,"gap",0),Q($,"wrapMode","none"),K($,()=>F("files.legend.changes")),u((Q0)=>Q($,"fg",z.textMuted,Q0)),x}}),e),K(p,k(Y0,{get when(){return X()!=="changes"},get children(){var x=W("box");return Q(x,"flexDirection","row"),Q(x,"paddingBottom",1),Q(x,"flexShrink",0),x}}),e),Hz((x)=>{b=x},e),Q(e,"flexGrow",1),Q(e,"verticalScrollbarOptions",{trackOptions:{foregroundColor:"transparent"}}),K(e,k(Y0,{get when(){return J.worktreePath()==null},get children(){var x=W("box"),$=W("text");return D(x,$),Q(x,"paddingTop",1),Q(x,"paddingLeft",1),K($,()=>F("files.empty.noTask")),u((Q0)=>Q($,"fg",z.textMuted,Q0)),x}}),null),K(e,k(Y0,{get when(){return C0(()=>J.worktreePath()!=null)()&&O()!=null},get children(){var x=W("box"),$=W("text"),Q0=W("text");return D(x,$),D(x,Q0),Q(x,"paddingTop",1),Q(x,"paddingLeft",1),Q(x,"flexDirection","column"),Q(x,"gap",0),Q($,"wrapMode","word"),K($,()=>xw(O()??"")),Q(Q0,"wrapMode","word"),K(Q0,()=>F("files.error.retryHint")),u((H0)=>{var{error:L0,textMuted:M0}=z;return L0!==H0.e&&(H0.e=Q($,"fg",L0,H0.e)),M0!==H0.t&&(H0.t=Q(Q0,"fg",M0,H0.t)),H0},{e:void 0,t:void 0}),x}}),null),K(e,k(Y0,{get when(){return C0(()=>J.worktreePath()!=null&&O()==null&&M().length===0)()&&(X()==="all"&&V()!=null||X()==="changes"&&U()!=null)},get children(){var x=W("box"),$=W("text");return D(x,$),Q(x,"paddingTop",1),Q(x,"paddingLeft",1),K($,(()=>{var Q0=C0(()=>X()==="all");return()=>Q0()?F("files.empty.noFiles"):F("files.empty.noChanges")})()),u((Q0)=>Q($,"fg",z.textMuted,Q0)),x}}),null),K(e,k(Y0,{get when(){return C0(()=>J.worktreePath()!=null&&O()==null)()&&M().length>0},get children(){var x=W("box");return Q(x,"flexShrink",0),Q(x,"gap",0),Q(x,"paddingRight",1),K(x,k(X1,{get each(){return M()},children:($,Q0)=>{let H0=()=>Q0()===q(),L0=(()=>{var h0=W("text");return Q(h0,"wrapMode","none"),K(h0,()=>H0()?"\u258C":" "),u((N0)=>Q(h0,"fg",H0()?z.focusAccent:void 0,N0)),h0})(),M0=()=>H0()?z.backgroundElement:void 0;if($.kind==="dir"){let h0=" ".repeat($.depth),N0=$.expanded?"\u25BE":"\u25B8";return(()=>{var o0=W("box"),m=W("box"),j0=W("text");return D(o0,m),Q(o0,"flexDirection","row"),Q(o0,"gap",0),Q(o0,"onMouseUp",()=>{H(Q0()),E((z0)=>{let x0=new Set(z0);if(x0.has($.path))x0.delete($.path);else x0.add($.path);return x0})}),K(o0,L0,m),D(m,j0),Q(m,"flexGrow",1),Q(m,"paddingRight",1),Q(j0,"wrapMode","none"),K(j0,()=>`${h0}${N0} ${$.name}/`),u((z0)=>{var x0=M0(),n=z.textMuted,W0=vQ.BOLD;return x0!==z0.e&&(z0.e=Q(o0,"backgroundColor",x0,z0.e)),n!==z0.t&&(z0.t=Q(j0,"fg",n,z0.t)),W0!==z0.a&&(z0.a=Q(j0,"attributes",W0,z0.a)),z0},{e:void 0,t:void 0,a:void 0}),o0})()}if($.kind==="file"){let h0=" ".repeat($.depth);return(()=>{var N0=W("box"),o0=W("box"),m=W("text");return D(N0,o0),Q(N0,"flexDirection","row"),Q(N0,"gap",0),Q(N0,"onMouseUp",()=>{H(Q0()),J.onOpenFile($.path)}),K(N0,L0,o0),D(o0,m),Q(o0,"flexGrow",1),Q(o0,"paddingRight",1),Q(m,"wrapMode","none"),K(m,()=>`${h0} ${$.name}`),u((j0)=>{var z0=M0(),x0=z.text;return z0!==j0.e&&(j0.e=Q(N0,"backgroundColor",z0,j0.e)),x0!==j0.t&&(j0.t=Q(m,"fg",x0,j0.t)),j0},{e:void 0,t:void 0}),N0})()}let E0=yw($.status),b0=()=>{switch(E0){case"success":return z.success;case"warning":return z.warning;case"error":return z.error;case"info":return z.info;default:return z.textMuted}},J1=y(),j1=$.added==null?" ".repeat(J1.added):`+${$.added}`.padStart(J1.added),k0=$.deleted==null?" ".repeat(J1.deleted):`-${$.deleted}`.padStart(J1.deleted);return(()=>{var h0=W("box"),N0=W("box"),o0=W("text"),m=W("text");return D(h0,N0),Q(h0,"flexDirection","row"),Q(h0,"gap",0),Q(h0,"onMouseUp",()=>{H(Q0()),J.onOpenFile($.path)}),K(h0,L0,N0),D(N0,o0),D(N0,m),Q(N0,"flexDirection","row"),Q(N0,"flexGrow",1),Q(N0,"gap",1),Q(N0,"paddingRight",1),Q(o0,"wrapMode","none"),K(o0,()=>$.status),Q(m,"wrapMode","none"),Q(m,"flexGrow",1),K(m,()=>NO($.path,c())),K(N0,k(Y0,{get when(){return J1.added>0},get children(){var j0=W("text");return Q(j0,"wrapMode","none"),K(j0,j1),u((z0)=>Q(j0,"fg",z.success,z0)),j0}}),null),K(N0,k(Y0,{get when(){return J1.deleted>0},get children(){var j0=W("text");return Q(j0,"wrapMode","none"),K(j0,k0),u((z0)=>Q(j0,"fg",z.error,z0)),j0}}),null),u((j0)=>{var z0=M0(),x0=b0(),n=z.text;return z0!==j0.e&&(j0.e=Q(h0,"backgroundColor",z0,j0.e)),x0!==j0.t&&(j0.t=Q(o0,"fg",x0,j0.t)),n!==j0.a&&(j0.a=Q(m,"fg",n,j0.a)),j0},{e:void 0,t:void 0,a:void 0}),h0})()}})),x}}),null),K(p,k(Y0,{get when(){return J.worktreePath()!=null},get children(){var x=W("box"),$=W("text");return D(x,$),Q(x,"flexDirection","row"),Q(x,"paddingTop",1),Q(x,"flexShrink",0),Q($,"wrapMode","none"),K($,()=>F("files.footer.openHint")),u((Q0)=>Q($,"fg",z.textMuted,Q0)),x}}),null),p})()}var Tw;var TO=C(()=>{P();P();P();P();P();P();P();P();P();BJ();P();D1();c1();FO();OO();gO();SO();Tw=["all","changes"]});import{promises as Ew}from"fs";import ww from"path";async function zB(J,z){let Z=new AbortController,Y=setTimeout(()=>Z.abort(),Pw);try{let X=await HZ("git",z,{cwd:J,env:_J(),signal:Z.signal});if(Z.signal.aborted)return null;if(X.status!==0)return null;return X.stdout.trim()}finally{clearTimeout(Y)}}async function hw(J){return await zB(J,["rev-parse","--abbrev-ref","HEAD"])||"HEAD"}async function vw(J){let z=await zB(J,["symbolic-ref","refs/remotes/origin/HEAD","--short"]);if(!z)return"main";return z.startsWith("origin/")?z.slice(7):z}async function mw(J){let z=await zB(J,["rev-parse","--abbrev-ref","@{u}"]);return z!==null&&z.length>0}async function cw(J){let z=await zB(J,["status","--porcelain"]);if(!z)return 0;return z.split(`
|
|
288
|
+
`).filter((Z)=>Z.length>0).length}async function dw(J){let[z,Z,Y,X]=await Promise.all([hw(J),vw(J),mw(J),cw(J)]);return{branch:z,targetBranch:Z,hasUpstream:Y,dirtyCount:X}}function nw(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 iw(J){return J?"The current branch tracks an upstream.":"There is no upstream branch yet."}function lw(J,z){let Z={branch:z.branch,targetBranch:z.targetBranch,dirtyCountSentence:nw(z.dirtyCount),upstreamSentence:iw(z.hasUpstream)};return J.replace(/\{\{([a-zA-Z][a-zA-Z0-9_]*)\}\}/g,(Y,X)=>Object.hasOwn(Z,X)?Z[X]:Y)}async function $w(J){let z=ww.join(J,".kobe","pr-instructions.md");try{let Z=await Ew.readFile(z,"utf8");return Z.length>0?Z:xO}catch{return xO}}async function uO(J){let[z,Z]=await Promise.all([$w(J),dw(J)]);return lw(z,Z)}var Pw=5000,xO=`The user likes the current state of the code.
|
|
289
289
|
|
|
290
290
|
{{dirtyCountSentence}}
|
|
291
291
|
The current branch is {{branch}}.
|
|
@@ -302,16 +302,16 @@ Follow these steps to create a PR:
|
|
|
302
302
|
- Push to origin.
|
|
303
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
304
|
|
|
305
|
-
If any of these steps fail, ask the user for help.`;var xO=C(()=>{aZ();uQ()});var vW={};H1(vW,{startOpsPreview:()=>tw,startOpsHost:()=>aw});import{createHash as cw}from"crypto";import{SyntaxStyle as dw}from"@opentui/core";function lw(J){let{theme:z}=w0(),[Z,Y]=s(null),X=!1;a1(()=>{(async()=>{let N=await bj({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;n0(()=>{let N=G();if(!N)return;let M=N.get(J.worktree)?.mtimeMs??0;if(!f&&M>0)f=!0,j(M);V(M)}),n0(()=>{if(G()!==null)return;let N=!1,M,y=pj,c=0,d=0;async function i(){if(!await uz()){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=rj(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=AG(J.vendor),M=!1,y=null,c=!1,d="",i=!1,t=0,X0=null,G0=wQ,f0=0,_,O0=()=>G()!==null;async function b(e){if(e===X0)return;X0=e,await nZ(J.targetPane,iw,e)}async function p(){if(O0())return q()?.completionId??null;return(await N.latestCompletion(J.worktree))?.id??null}async function w(){try{d=uO(await KX(J.targetPane,80)),y=await p(),c=!0,await b(N.supportsCompletionMarkers()?"idle":"unknown")}catch{}}async function R(){if(!await uz()){if(!M)_=setTimeout(()=>void R(),G0);return}let e=O0();try{let x=uO(await KX(J.targetPane,80));if(M)return;if(e&&!c)y=q()?.completionId??null,c=!0;let $=e?q()?.mtimeMs??0:0,Q0=$>f0;if($>f0)f0=$;if(x!==d)d=x,i=!0,t=0,await b(N.supportsCompletionMarkers()?"running":"unknown");else if(i)t++;if(N.supportsCompletionMarkers()&&i&&t>=nw){let H0=await p();if(!M&&H0!==null&&H0!==y)y=H0,i=!1,t=0,await b("done")}G0=e?ZO(G0,Q0,X0):wQ}catch{G0=wQ}finally{if(!M)_=setTimeout(()=>void R(),G0)}}w(),_=setTimeout(()=>void R(),wQ),C1(()=>{if(M=!0,_)clearTimeout(_)})});function A(N){if(!J.taskId)return;bz(y1(J.taskId),{cwd:J.worktree,command:O7({worktree:J.worktree,relPath:N,cliInvocation:u1()}),name:$w(N)})}function g(N){if(!J.taskId){A(N);return}let M=`${J.worktree}/${N}`;jO(y1(J.taskId),J.worktree,M).then((y)=>{if(!y)A(N)})}function E(N){if(!J.targetPane)return;CH(J.targetPane,`@${N} `)}async function h(){if(!J.targetPane)return;let N=await TO(J.worktree);await CH(J.targetPane,N),await hG(J.targetPane,"Enter")}function I(){if(!J.taskId)return;let N=y1(J.taskId),M=u1(),y=`${p1()}${TJ(M)} layout --session ${z1(N)} --action zen-toggle`;i0(["run-shell","-b",y])}return(()=>{var N=W("box");return Q(N,"flexDirection","column"),Q(N,"flexGrow",1),K(N,k(IO,{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 $w(J){let z=J.lastIndexOf("/");return z>=0?J.slice(z+1):J}function uO(J){return cw("sha1").update(J).digest("hex")}async function aw(J){await FJ({logContext:"ops",providers:{kv:!1,focus:!1},setup:()=>({root:()=>k(lw,J)})})}function _w(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 pw(J,z){let Z=await xX(J,["diff","HEAD","--",z]);return Z.status===0?Z.stdout:""}async function rw(J,z){return await nH(J,z)??""}function ow(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 dw.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 sw(J){let{theme:z}=w0(),Z=ow(z),Y=_w(J.relPath),[X]=UY(()=>J.relPath,async(G)=>{let q=await pw(J.worktree,G);if(q.trim().length>0)return{kind:"diff",text:q};return{kind:"code",text:await rw(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=C0(()=>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 tw(J){await FJ({providers:{kv:!1,focus:!1},setup:()=>({root:()=>k(sw,J)})})}var nw=2,iw="@kobe_tab_state";var mW=C(()=>{P();P();P();P();P();P();P();QZ();gq();Nq();P1();BO();Fz();ZG();iH();D1();GW();d1();BJ();AZ();IJ();SO();DY();xO()});var hO={};H1(hO,{startDirectTmux:()=>JP,chooseInitialTask:()=>PO});import{resolve as EO}from"path";function PO(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 wO(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 ew(J){U9();let z=[...SJ()];if(z.length===0)z=[JZ(EO(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]??EO(process.cwd())}async function JP(){if(Zq("gui"),Promise.resolve().then(() => (O8(),M8)).then((Z)=>Z.ensureGlobalKobeHooks()),!await iz()){console.error("kobe: tmux not found on PATH \u2014 install tmux to use kobe 0.6 direct mode"),process.exitCode=1;return}let J=await Sz(),z=new NJ(J,{role:"gui"});try{process.env.KOBE_DAEMON_SOCKET_PATH=J.socketPath,await z.init();let Z=await ew(z),Y=PO(z.listTasks(),{activeTaskId:z.activeTaskSignal()(),persistedTaskId:x1("lastSelectedTaskId"),cwdRepo:Z});if(!Y){let f=await bH();if(await CY(),await FH(f),await NH(f),await wO(kX(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 Jf(G)??cJ(x1("lastSelectedVendor"),nJ());if(U!==Y.vendor)await z.setVendor(Y.id,U).catch(()=>{}),q=U}let H=uX(Y.repo,X,{kind:"repo-init"});if(!await tG({name:G,cwd:X,command:EJ(q),taskId:Y.id,vendor:q,repo:Y.repo,launchInit:H})){console.error(`kobe: tmux session ${G} failed to start (check the daemon log)`),process.exitCode=1;return}await CY(),await FH(G),await NH(G);let B=await wO(kX(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===mz&&V.worktreePath)try{let f=await ZX(V.worktreePath,V.vendor);if(f)await z.setTitle(V.id,f)}catch(f){console.error("[kobe] auto-title failed:",f)}}finally{z.dispose()}}var vO=C(()=>{QY();kJ();tZ();Xz();Iq();yG();EX();S1();P1();s1();fH();dZ();HJ()});var mO={};H1(mO,{startTui:()=>zP});async function zP(){pD();let{startDirectTmux:J}=await Promise.resolve().then(() => (vO(),hO));await J()}var cO=C(()=>{jj()});z9();s1();import{resolve as dW}from"path";bJ();function RV(){return[`kobe ${J1}`,"","Usage: kobe [command] [options]","","Run with no command to launch the TUI.","","Commands:"," web [options] Launch the browser dashboard"," completions <shell> Generate shell completion script (bash/zsh/fish)"," add [path] Save a repo path for the new-task picker"," remove [path] Forget a saved project (inverse of add; non-destructive)"," adopt [glob] Import existing git worktrees as tasks"," export [--csv|--json] Print the task list (json/csv/table; daemon-free)"," repo <verb> Per-repo init script + first prompt (show|set|unset)"," api <verb> Scriptable RPC surface for agents (see `kobe api --help`)"," daemon <verb> Manage the daemon (start|stop|status|restart)"," theme <verb> Manage user themes (list|add|remove)"," skill <verb> Install the kobe agent skill (install|status|command)"," feedback Send feedback to GitHub Discussions"," update [target] Self-update kobe"," doctor Diagnose daemon / tmux / state (read-only)"," reset [--hard] Recover a wedged install"," reload Restart Tasks/Ops panes in place (engine untouched)"," kill-sessions Tear down kobe's tmux server (dev reset)","","Options:"," -v, --version Print version"," -h, --help Print this help"].join(`
|
|
306
|
-
`)}var
|
|
305
|
+
If any of these steps fail, ask the user for help.`;var EO=C(()=>{aZ();EQ()});var mW={};H1(mW,{startOpsPreview:()=>XP,startOpsHost:()=>tw});import{createHash as aw}from"crypto";import{SyntaxStyle as _w}from"@opentui/core";function ow(J){let{theme:z}=w0(),[Z,Y]=s(null),X=!1;a1(()=>{(async()=>{let N=await kj({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;n0(()=>{let N=G();if(!N)return;let M=N.get(J.worktree)?.mtimeMs??0;if(!f&&M>0)f=!0,j(M);V(M)}),n0(()=>{if(G()!==null)return;let N=!1,M,y=rj,c=0,d=0;async function i(){if(!await uz()){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=oj(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=RG(J.vendor),M=!1,y=null,c=!1,d="",i=!1,t=0,X0=null,G0=PQ,f0=0,_,O0=()=>G()!==null;async function b(e){if(e===X0)return;X0=e,await nZ(J.targetPane,rw,e)}async function p(){if(O0())return q()?.completionId??null;return(await N.latestCompletion(J.worktree))?.id??null}async function w(){try{d=wO(await KX(J.targetPane,80)),y=await p(),c=!0,await b(N.supportsCompletionMarkers()?"idle":"unknown")}catch{}}async function R(){if(!await uz()){if(!M)_=setTimeout(()=>void R(),G0);return}let e=O0();try{let x=wO(await KX(J.targetPane,80));if(M)return;if(e&&!c)y=q()?.completionId??null,c=!0;let $=e?q()?.mtimeMs??0:0,Q0=$>f0;if($>f0)f0=$;if(x!==d)d=x,i=!0,t=0,await b(N.supportsCompletionMarkers()?"running":"unknown");else if(i)t++;if(N.supportsCompletionMarkers()&&i&&t>=pw){let H0=await p();if(!M&&H0!==null&&H0!==y)y=H0,i=!1,t=0,await b("done")}G0=e?XO(G0,Q0,X0):PQ}catch{G0=PQ}finally{if(!M)_=setTimeout(()=>void R(),G0)}}w(),_=setTimeout(()=>void R(),PQ),C1(()=>{if(M=!0,_)clearTimeout(_)})});function A(N){if(!J.taskId)return;bz(y1(J.taskId),{cwd:J.worktree,command:A7({worktree:J.worktree,relPath:N,cliInvocation:i1()}),name:sw(N)})}function g(N){if(!J.taskId){A(N);return}let M=`${J.worktree}/${N}`;fO(y1(J.taskId),J.worktree,M).then((y)=>{if(!y)A(N)})}function E(N){if(!J.targetPane)return;bH(J.targetPane,`@${N} `)}async function h(){if(!J.targetPane)return;let N=await uO(J.worktree);await bH(J.targetPane,N),await vG(J.targetPane,"Enter")}function I(){if(!J.taskId)return;let N=y1(J.taskId),M=i1(),y=`${p1()}${TJ(M)} layout --session ${Z1(N)} --action zen-toggle`;i0(["run-shell","-b",y])}return(()=>{var N=W("box");return Q(N,"flexDirection","column"),Q(N,"flexGrow",1),K(N,k(yO,{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 sw(J){let z=J.lastIndexOf("/");return z>=0?J.slice(z+1):J}function wO(J){return aw("sha1").update(J).digest("hex")}async function tw(J){await FJ({logContext:"ops",providers:{kv:!1,focus:!1},setup:()=>({root:()=>k(ow,J)})})}function ew(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 JP(J,z){let Z=await xX(J,["diff","HEAD","--",z]);return Z.status===0?Z.stdout:""}async function zP(J,z){return await iH(J,z)??""}function ZP(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 _w.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 YP(J){let{theme:z}=w0(),Z=ZP(z),Y=ew(J.relPath),[X]=UY(()=>J.relPath,async(G)=>{let q=await JP(J.worktree,G);if(q.trim().length>0)return{kind:"diff",text:q};return{kind:"code",text:await zP(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=C0(()=>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 XP(J){await FJ({providers:{kv:!1,focus:!1},setup:()=>({root:()=>k(YP,J)})})}var pw=2,rw="@kobe_tab_state";var cW=C(()=>{P();P();P();P();P();P();P();QZ();Nq();Cq();w1();WO();Fz();ZG();lH();D1();QW();c1();BJ();AZ();IJ();TO();DY();EO()});var mO={};H1(mO,{startDirectTmux:()=>QP,chooseInitialTask:()=>vO});import{resolve as PO}from"path";function vO(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 hO(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 GP(J){KB();let z=[...SJ()];if(z.length===0)z=[JZ(PO(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]??PO(process.cwd())}async function QP(){if(Yq("gui"),Promise.resolve().then(() => (A8(),O8)).then((Z)=>Z.ensureGlobalKobeHooks()),!await iz()){console.error("kobe: tmux not found on PATH \u2014 install tmux to use kobe 0.6 direct mode"),process.exitCode=1;return}let J=await Sz(),z=new NJ(J,{role:"gui"});try{process.env.KOBE_DAEMON_SOCKET_PATH=J.socketPath,await z.init();let Z=await GP(z),Y=vO(z.listTasks(),{activeTaskId:z.activeTaskSignal()(),persistedTaskId:x1("lastSelectedTaskId"),cwdRepo:Z});if(!Y){let f=await kH();if(await CY(),await MH(f),await CH(f),await hO(kX(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 zf(G)??cJ(x1("lastSelectedVendor"),nJ());if(U!==Y.vendor)await z.setVendor(Y.id,U).catch(()=>{}),q=U}let H=uX(Y.repo,X,{kind:"repo-init"});if(!await eG({name:G,cwd:X,command:EJ(q),taskId:Y.id,vendor:q,repo:Y.repo,launchInit:H})){console.error(`kobe: tmux session ${G} failed to start (check the daemon log)`),process.exitCode=1;return}await CY(),await MH(G),await CH(G);let B=await hO(kX(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===mz&&V.worktreePath)try{let f=await ZX(V.worktreePath,V.vendor);if(f)await z.setTitle(V.id,f)}catch(f){console.error("[kobe] auto-title failed:",f)}}finally{z.dispose()}}var cO=C(()=>{QY();kJ();tZ();Xz();Sq();TG();EX();S1();w1();s1();WH();dZ();HJ()});var dO={};H1(dO,{startTui:()=>qP});async function qP(){rD();let{startDirectTmux:J}=await Promise.resolve().then(() => (cO(),mO));await J()}var nO=C(()=>{Bj()});ZB();s1();import{resolve as nW}from"path";bJ();function gV(){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 iO=`Usage: kobe add [path]
|
|
307
307
|
kobe add --remote --host <host> --user <user> --path <basePath> [--port N] [--key <path> | --password]
|
|
308
308
|
|
|
309
309
|
Save a repo for the new-task picker. With --remote, register an SSH-backed
|
|
310
310
|
project whose worktrees + engine run on <host> under <basePath>.
|
|
311
|
-
`;async function
|
|
311
|
+
`;async function HP(J){let z=J[0];if(z==="--help"||z==="-h"||z==="help"){process.stdout.write(iO);return}if(z==="--remote"){let{runAddRemote:q}=await Promise.resolve().then(() => (hV(),PV));await q(J.slice(1));return}if(z?.startsWith("-"))process.stderr.write(`kobe add: unknown flag "${z}"
|
|
312
312
|
|
|
313
|
-
${
|
|
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
|
|
313
|
+
${iO}`),process.exit(2);let Z=nW(process.cwd(),z&&z.length>0?z:"."),{addSavedRepo:Y,isGitRepo:X}=await Promise.resolve().then(() => (S1(),ZZ));if(!X(Z))process.stderr.write(`kobe add: "${z&&z.length>0?z:"."}" is not a git repository (resolved to ${Z}).
|
|
314
|
+
`),process.exit(1);let G=Y(Z);if(G.added)console.log(`added ${G.path} (${G.total} saved repo${G.total===1?"":"s"} total)`);else console.log(`already saved: ${G.path}`);await BP(G.path)}var lO=`Usage: kobe remove [path]
|
|
315
315
|
|
|
316
316
|
Forget a saved project (drop it from the new-task picker). Non-destructive:
|
|
317
317
|
the repo's files, worktrees, branches and tasks all stay on disk. A remote
|
|
@@ -320,19 +320,19 @@ the repo's files, worktrees, branches and tasks all stay on disk. A remote
|
|
|
320
320
|
path defaults to the current directory. Pass an exact saved entry (e.g. a
|
|
321
321
|
remote \`ssh://user@host\` key) to remove it verbatim. Run with no match to
|
|
322
322
|
print the current saved projects.
|
|
323
|
-
`;async function
|
|
323
|
+
`;async function jP(J){let z=J[0];if(z==="--help"||z==="-h"||z==="help"){process.stdout.write(lO);return}if(z?.startsWith("-"))process.stderr.write(`kobe remove: unknown flag "${z}"
|
|
324
324
|
|
|
325
|
-
${
|
|
325
|
+
${lO}`),process.exit(2);let{getSavedRepos:Z,resolveRepoRoot:Y}=await Promise.resolve().then(() => (S1(),ZZ)),X=Z();if(X.length===0){console.log("no saved projects to remove.");return}let G=z&&z.length>0?z:".",q=X.includes(G)?G:(()=>{let V=nW(process.cwd(),G),f=Y(V);if(X.includes(f))return f;if(X.includes(V))return V;return null})();if(q===null){process.stderr.write(`kobe remove: "${G}" is not a saved project.
|
|
326
326
|
|
|
327
327
|
Saved projects:
|
|
328
328
|
`);for(let V of X)process.stderr.write(` ${V}
|
|
329
|
-
`);process.exit(1)}let{connectIfRunning:H}=await Promise.resolve().then(() => (kJ(),
|
|
330
|
-
`);function
|
|
329
|
+
`);process.exit(1)}let{connectIfRunning:H}=await Promise.resolve().then(() => (kJ(),NH)),j=await H();try{if(j)await j.request("project.forget",{repo:q});else await(await iW()).forgetProject(q)}finally{j?.close()}let B=Z().length;console.log(`removed ${q} (${B} saved repo${B===1?"":"s"} left)`)}async function BP(J){let z=await iW(),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 aO(z,J,Z,CZ(void 0))}async function iW(){let{TaskIndexStore:J}=await Promise.resolve().then(() => (fQ(),ef)),{GitWorktreeManager:z}=await Promise.resolve().then(() => (z8(),o4)),{Orchestrator:Z}=await Promise.resolve().then(() => (TG(),pU)),Y=new J;return await Y.load(),new Z({store:Y,worktrees:new z})}async function aO(J,z,Z,Y){let{connectIfRunning:X}=await Promise.resolve().then(() => (kJ(),NH)),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 _O=["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 dW(J){process.stderr.write(`kobe adopt: ${J}
|
|
331
331
|
|
|
332
|
-
${
|
|
333
|
-
`),process.exit(2)}async function
|
|
334
|
-
`);return}if(L==="--repo"){if(Z=J[++U],Z===void 0)
|
|
332
|
+
${_O}
|
|
333
|
+
`),process.exit(2)}async function fP(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(`${_O}
|
|
334
|
+
`);return}if(L==="--repo"){if(Z=J[++U],Z===void 0)dW("--repo requires a value")}else if(L==="--vendor"){if(Y=J[++U],Y===void 0)dW("--vendor requires a value")}else if(L==="--yes"||L==="-y")X=!0;else if(L&&!L.startsWith("-")&&z===void 0)z=L;else dW(`unexpected argument "${L}"`)}let{resolveRepoRoot:G}=await Promise.resolve().then(() => (S1(),ZZ)),q=G(nW(process.cwd(),Z&&Z.length>0?Z:".")),H=CZ(Y),j=await iW(),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||cQ(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
335
|
pass a path glob to adopt, e.g. kobe adopt '${q}/*' --yes`);return}let f=B.filter(V);if(f.length===0){console.log(`
|
|
336
336
|
no worktrees match glob ${JSON.stringify(z)}`);return}if(!X){console.log(`
|
|
337
|
-
${f.length} worktree(s) match \u2014 re-run with --yes to adopt them`);return}await
|
|
338
|
-
`)}function oJ(J){let z={};for(let Z=0;Z<J.length;Z++){let Y=J[Z],X=J[Z+1];if(X===void 0)continue;if(Y==="--task-id")z.taskId=X,Z++;else if(Y==="--worktree")z.worktree=X,Z++;else if(Y==="--target-pane")z.targetPane=X,Z++;else if(Y==="--vendor")z.vendor=X,Z++;else if(Y==="--preview")z.preview=X,Z++;else if(Y==="--session")z.session=X,Z++;else if(Y==="--repo")z.repo=X,Z++;else if(Y==="--initial-task-id")z.initialTaskId=X,Z++;else if(Y==="--action")z.action=X,Z++;else if(Y==="--window")z.windowId=X,Z++;else if(Y==="--cols")z.cols=X,Z++;else if(Y==="--rows")z.rows=X,Z++;else if(Y==="--status")z.status=X,Z++;else if(Y==="--client")z.client=X,Z++;else if(Y==="--title")z.title=X,Z++}return z}async function
|
|
337
|
+
${f.length} worktree(s) match \u2014 re-run with --yes to adopt them`);return}await aO(j,q,f,H),console.log(`done \u2014 adopted ${f.length} worktree(s)`)}function $O(J){J.write(`${gV()}
|
|
338
|
+
`)}function oJ(J){let z={};for(let Z=0;Z<J.length;Z++){let Y=J[Z],X=J[Z+1];if(X===void 0)continue;if(Y==="--task-id")z.taskId=X,Z++;else if(Y==="--worktree")z.worktree=X,Z++;else if(Y==="--target-pane")z.targetPane=X,Z++;else if(Y==="--vendor")z.vendor=X,Z++;else if(Y==="--preview")z.preview=X,Z++;else if(Y==="--session")z.session=X,Z++;else if(Y==="--repo")z.repo=X,Z++;else if(Y==="--initial-task-id")z.initialTaskId=X,Z++;else if(Y==="--action")z.action=X,Z++;else if(Y==="--window")z.windowId=X,Z++;else if(Y==="--cols")z.cols=X,Z++;else if(Y==="--rows")z.rows=X,Z++;else if(Y==="--status")z.status=X,Z++;else if(Y==="--client")z.client=X,Z++;else if(Y==="--title")z.title=X,Z++}return z}async function WP(){let[,,...J]=process.argv,[z,...Z]=J;if(z==="--version"||z==="-v"||z==="version"){let{CURRENT_VERSION:X}=await Promise.resolve().then(() => (bJ(),RV));console.log(`kobe ${X}`);return}if(z==="--help"||z==="-h"||z==="help"){$O(process.stdout);return}if(z==="add"){await HP(Z);return}if(z==="remove"){await jP(Z);return}if(z==="completions"){let{runCompletionsSubcommand:X}=await Promise.resolve().then(() => (JD(),e4));await X(Z);return}if(z==="adopt"){await fP(Z);return}if(z==="export"){let{runExportSubcommand:X}=await Promise.resolve().then(() => (GD(),XD));await X(Z);return}if(z==="repo"){let{runRepoSubcommand:X}=await Promise.resolve().then(() => (jD(),HD));await X(Z);return}if(z==="api"){let{runApiSubcommand:X}=await Promise.resolve().then(() => (bD(),CD));await X(Z);return}if(z==="update"){let{runUpdateSubcommand:X}=await Promise.resolve().then(() => (TD(),yD));await X(Z);return}if(z==="theme"){let{runThemeSubcommand:X}=await Promise.resolve().then(() => (PD(),wD));await X(Z);return}if(z==="feedback"){let{runFeedbackSubcommand:X}=await Promise.resolve().then(() => (dD(),cD));await X(Z);return}if(z==="daemon"){let{runDaemonSubcommand:X}=await Promise.resolve().then(() => (aD(),$D));await X(Z);return}if(z==="doctor"){let{runDoctorSubcommand:X}=await Promise.resolve().then(() => (Wj(),fj));await X(Z);return}if(z==="web"){let{runWebSubcommand:X}=await Promise.resolve().then(() => (jL(),HL));await X(Z);return}if(z==="reset"){let{runResetSubcommand:X}=await Promise.resolve().then(() => (Wj(),fj));await X(Z);return}if(z==="reload"){let{runReloadSubcommand:X}=await Promise.resolve().then(() => (Wj(),fj));await X(Z);return}if(z==="skill"){let{runSkillSubcommand:X}=await Promise.resolve().then(() => (WL(),fL));await X(Z);return}if(z==="hook"){let{runHookSubcommand:X}=await Promise.resolve().then(() => (A8(),O8));await X(Z);return}if(z==="new-chattab"){let X=oJ(Z),G=X.session;if(!G)console.error("kobe new-chattab: --session <name> is required"),process.exit(2);let{windowIsSurface:q}=await Promise.resolve().then(() => (w1(),SX));if(await q(G))return;let H;if(X.vendor!==void 0){let B=X.vendor.trim(),{getCustomEngineIds:V}=await Promise.resolve().then(() => (S1(),ZZ)),{isBuiltinVendor:f}=await Promise.resolve().then(() => (s1(),UV));if(!(f(B)||V().includes(B))){let O=[...o1,...V()].join(", "),A=`kobe: unknown engine '${B}' (known: ${O})`,{runTmux:g}=await Promise.resolve().then(() => (w1(),SX));await g(["display-message","-t",G,A]),console.error(A),process.exit(2)}H=B;let{setPersistedString:L}=await Promise.resolve().then(() => (S1(),ZZ));L("lastSelectedVendor",H)}let{newChatTab:j}=await Promise.resolve().then(() => (HJ(),PJ));await j(G,H);return}if(z==="engine-tab-exit"){let G=oJ(Z).session;if(!G)console.error("kobe engine-tab-exit: --session <name> is required"),process.exit(2);let{engineTabExit:q}=await Promise.resolve().then(() => (dZ(),_9));await q(G);return}if(z==="kill-sessions"){let{runTmux:X,termAllPaneGroups:G,KOBE_TMUX_SOCKET:q}=await Promise.resolve().then(() => (w1(),SX));await G();let H=await X(["kill-server"]);console.log(H===0?`kobe: killed all tmux sessions on the \`${q}\` socket`:`kobe: no tmux sessions to kill on the \`${q}\` socket`);return}if(z==="quick-create"){let G=oJ(Z).session;if(!G)console.error("kobe quick-create: --session <name> is required"),process.exit(2);let{quickCreate:q}=await Promise.resolve().then(() => (HJ(),PJ));await q(G);return}if(z==="focus-tasks"){let X=oJ(Z),G=X.session;if(!G)console.error("kobe focus-tasks: --session <name> is required"),process.exit(2);let{windowIsSurface:q}=await Promise.resolve().then(() => (w1(),SX));if(X.windowId&&await q(X.windowId))return;let{selectTasksPane:H}=await Promise.resolve().then(() => (HJ(),PJ));await H(G,{windowId:X.windowId});return}if(z==="heal-layout"){let G=oJ(Z).session;if(!G)console.error("kobe heal-layout: --session <name> is required"),process.exit(2);let{healSessionLayout:q}=await Promise.resolve().then(() => (HJ(),PJ)),{coalesceLayoutWork:H}=await Promise.resolve().then(() => (NX(),KH));await H(G,"heal",()=>q(G));return}if(z==="resync-window"){let X=oJ(Z),G=X.session;if(!G)console.error("kobe resync-window: --session <name> is required"),process.exit(2);let q=Number.parseInt(X.cols??"",10),H=Number.parseInt(X.rows??"",10),j=Number.isInteger(q)&&q>0&&Number.isInteger(H)&&H>0?{columns:q,rows:H}:null,{resyncWindowToClient:B}=await Promise.resolve().then(() => (HJ(),PJ)),{coalesceLayoutWork:V}=await Promise.resolve().then(() => (NX(),KH));await V(G,"resync",()=>B(G,{size:j,status:X.status,clientName:X.client}));return}if(z==="capture-layout"){let G=oJ(Z).session;if(!G)console.error("kobe capture-layout: --session <name> is required"),process.exit(2);let{captureGlobalLayoutOnDrag:q}=await Promise.resolve().then(() => (HJ(),PJ)),{coalesceLayoutWork:H,genAgeMs:j,RESIZE_GUARD_MS:B}=await Promise.resolve().then(() => (NX(),KH));await H(G,"capture",async()=>{if(j(G,"resize")<B)return;await q(G)});return}if(z==="layout"){let X=oJ(Z),G=X.session;if(!G)console.error("kobe layout: --session <name> is required"),process.exit(2);let q=X.action;if(!q||!new Set(["workspace-split","workspace-close","workspace-reset","tasks-toggle","tasks-restore","ops-toggle","terminal-toggle","zen-toggle","chat-tab-close"]).has(q))console.error("kobe layout: --action must be one of workspace-split, workspace-close, workspace-reset, tasks-toggle, tasks-restore, ops-toggle, terminal-toggle, zen-toggle, chat-tab-close"),process.exit(2);if(q==="tasks-restore"&&X.windowId){let{windowIsSurface:B}=await Promise.resolve().then(() => (w1(),SX));if(await B(X.windowId))return}let{runLayoutAction:j}=await Promise.resolve().then(() => (HJ(),PJ));await j(G,q,{windowId:X.windowId});return}if(z==="quick-task"){let X=oJ(Z),{startQuickTaskHost:G}=await Promise.resolve().then(() => (r3(),p3));await G({session:X.session});return}if(z==="tasks"){let X=oJ(Z),{startTasksPane:G}=await Promise.resolve().then(() => (sM(),oM));await G({initialTaskId:X.initialTaskId});return}if(z==="settings"){let{startSettingsHost:X}=await Promise.resolve().then(() => (eM(),tM));await X();return}if(z==="help-page"){let{startHelpHost:X}=await Promise.resolve().then(() => (zO(),JO));await X();return}if(z==="new-task"){let X=oJ(Z),{startNewTaskHost:G}=await Promise.resolve().then(() => (LW(),m3));await G({defaultRepo:X.repo});return}if(z==="update-page"){let{startUpdateHost:X}=await Promise.resolve().then(() => (YO(),ZO));await X();return}if(z==="history"){let X=oJ(Z);if(!X.worktree)console.error("kobe history: --worktree <path> is required"),process.exit(2);let{startHistoryHost:G}=await Promise.resolve().then(() => (qO(),QO));await G({worktree:X.worktree,vendor:CZ(X.vendor),title:X.title,live:Z.includes("--live")});return}if(z==="ops"){let X=oJ(Z);if(!X.worktree)console.error("kobe ops: --worktree <path> is required"),process.exit(2);if(X.preview){let{startOpsPreview:q}=await Promise.resolve().then(() => (cW(),mW));await q({worktree:X.worktree,relPath:X.preview});return}let{startOpsHost:G}=await Promise.resolve().then(() => (cW(),mW));await G({taskId:X.taskId??"",worktree:X.worktree,targetPane:X.targetPane??null,vendor:CZ(X.vendor)});return}if(z!==void 0)console.error(`kobe: unknown command '${z}'`),$O(process.stderr),process.exit(2);let{startTui:Y}=await Promise.resolve().then(() => (nO(),dO));await Y()}WP().catch((J)=>{console.error("kobe failed to start:",J),process.exit(1)});
|